luckysheet.umd.js 5.7 MB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364113651136611367113681136911370113711137211373113741137511376113771137811379113801138111382113831138411385113861138711388113891139011391113921139311394113951139611397113981139911400114011140211403114041140511406114071140811409114101141111412114131141411415114161141711418114191142011421114221142311424114251142611427114281142911430114311143211433114341143511436114371143811439114401144111442114431144411445114461144711448114491145011451114521145311454114551145611457114581145911460114611146211463114641146511466114671146811469114701147111472114731147411475114761147711478114791148011481114821148311484114851148611487114881148911490114911149211493114941149511496114971149811499115001150111502115031150411505115061150711508115091151011511115121151311514115151151611517115181151911520115211152211523115241152511526115271152811529115301153111532115331153411535115361153711538115391154011541115421154311544115451154611547115481154911550115511155211553115541155511556115571155811559115601156111562115631156411565115661156711568115691157011571115721157311574115751157611577115781157911580115811158211583115841158511586115871158811589115901159111592115931159411595115961159711598115991160011601116021160311604116051160611607116081160911610116111161211613116141161511616116171161811619116201162111622116231162411625116261162711628116291163011631116321163311634116351163611637116381163911640116411164211643116441164511646116471164811649116501165111652116531165411655116561165711658116591166011661116621166311664116651166611667116681166911670116711167211673116741167511676116771167811679116801168111682116831168411685116861168711688116891169011691116921169311694116951169611697116981169911700117011170211703117041170511706117071170811709117101171111712117131171411715117161171711718117191172011721117221172311724117251172611727117281172911730117311173211733117341173511736117371173811739117401174111742117431174411745117461174711748117491175011751117521175311754117551175611757117581175911760117611176211763117641176511766117671176811769117701177111772117731177411775117761177711778117791178011781117821178311784117851178611787117881178911790117911179211793117941179511796117971179811799118001180111802118031180411805118061180711808118091181011811118121181311814118151181611817118181181911820118211182211823118241182511826118271182811829118301183111832118331183411835118361183711838118391184011841118421184311844118451184611847118481184911850118511185211853118541185511856118571185811859118601186111862118631186411865118661186711868118691187011871118721187311874118751187611877118781187911880118811188211883118841188511886118871188811889118901189111892118931189411895118961189711898118991190011901119021190311904119051190611907119081190911910119111191211913119141191511916119171191811919119201192111922119231192411925119261192711928119291193011931119321193311934119351193611937119381193911940119411194211943119441194511946119471194811949119501195111952119531195411955119561195711958119591196011961119621196311964119651196611967119681196911970119711197211973119741197511976119771197811979119801198111982119831198411985119861198711988119891199011991119921199311994119951199611997119981199912000120011200212003120041200512006120071200812009120101201112012120131201412015120161201712018120191202012021120221202312024120251202612027120281202912030120311203212033120341203512036120371203812039120401204112042120431204412045120461204712048120491205012051120521205312054120551205612057120581205912060120611206212063120641206512066120671206812069120701207112072120731207412075120761207712078120791208012081120821208312084120851208612087120881208912090120911209212093120941209512096120971209812099121001210112102121031210412105121061210712108121091211012111121121211312114121151211612117121181211912120121211212212123121241212512126121271212812129121301213112132121331213412135121361213712138121391214012141121421214312144121451214612147121481214912150121511215212153121541215512156121571215812159121601216112162121631216412165121661216712168121691217012171121721217312174121751217612177121781217912180121811218212183121841218512186121871218812189121901219112192121931219412195121961219712198121991220012201122021220312204122051220612207122081220912210122111221212213122141221512216122171221812219122201222112222122231222412225122261222712228122291223012231122321223312234122351223612237122381223912240122411224212243122441224512246122471224812249122501225112252122531225412255122561225712258122591226012261122621226312264122651226612267122681226912270122711227212273122741227512276122771227812279122801228112282122831228412285122861228712288122891229012291122921229312294122951229612297122981229912300123011230212303123041230512306123071230812309123101231112312123131231412315123161231712318123191232012321123221232312324123251232612327123281232912330123311233212333123341233512336123371233812339123401234112342123431234412345123461234712348123491235012351123521235312354123551235612357123581235912360123611236212363123641236512366123671236812369123701237112372123731237412375123761237712378123791238012381123821238312384123851238612387123881238912390123911239212393123941239512396123971239812399124001240112402124031240412405124061240712408124091241012411124121241312414124151241612417124181241912420124211242212423124241242512426124271242812429124301243112432124331243412435124361243712438124391244012441124421244312444124451244612447124481244912450124511245212453124541245512456124571245812459124601246112462124631246412465124661246712468124691247012471124721247312474124751247612477124781247912480124811248212483124841248512486124871248812489124901249112492124931249412495124961249712498124991250012501125021250312504125051250612507125081250912510125111251212513125141251512516125171251812519125201252112522125231252412525125261252712528125291253012531125321253312534125351253612537125381253912540125411254212543125441254512546125471254812549125501255112552125531255412555125561255712558125591256012561125621256312564125651256612567125681256912570125711257212573125741257512576125771257812579125801258112582125831258412585125861258712588125891259012591125921259312594125951259612597125981259912600126011260212603126041260512606126071260812609126101261112612126131261412615126161261712618126191262012621126221262312624126251262612627126281262912630126311263212633126341263512636126371263812639126401264112642126431264412645126461264712648126491265012651126521265312654126551265612657126581265912660126611266212663126641266512666126671266812669126701267112672126731267412675126761267712678126791268012681126821268312684126851268612687126881268912690126911269212693126941269512696126971269812699127001270112702127031270412705127061270712708127091271012711127121271312714127151271612717127181271912720127211272212723127241272512726127271272812729127301273112732127331273412735127361273712738127391274012741127421274312744127451274612747127481274912750127511275212753127541275512756127571275812759127601276112762127631276412765127661276712768127691277012771127721277312774127751277612777127781277912780127811278212783127841278512786127871278812789127901279112792127931279412795127961279712798127991280012801128021280312804128051280612807128081280912810128111281212813128141281512816128171281812819128201282112822128231282412825128261282712828128291283012831128321283312834128351283612837128381283912840128411284212843128441284512846128471284812849128501285112852128531285412855128561285712858128591286012861128621286312864128651286612867128681286912870128711287212873128741287512876128771287812879128801288112882128831288412885128861288712888128891289012891128921289312894128951289612897128981289912900129011290212903129041290512906129071290812909129101291112912129131291412915129161291712918129191292012921129221292312924129251292612927129281292912930129311293212933129341293512936129371293812939129401294112942129431294412945129461294712948129491295012951129521295312954129551295612957129581295912960129611296212963129641296512966129671296812969129701297112972129731297412975129761297712978129791298012981129821298312984129851298612987129881298912990129911299212993129941299512996129971299812999130001300113002130031300413005130061300713008130091301013011130121301313014130151301613017130181301913020130211302213023130241302513026130271302813029130301303113032130331303413035130361303713038130391304013041130421304313044130451304613047130481304913050130511305213053130541305513056130571305813059130601306113062130631306413065130661306713068130691307013071130721307313074130751307613077130781307913080130811308213083130841308513086130871308813089130901309113092130931309413095130961309713098130991310013101131021310313104131051310613107131081310913110131111311213113131141311513116131171311813119131201312113122131231312413125131261312713128131291313013131131321313313134131351313613137131381313913140131411314213143131441314513146131471314813149131501315113152131531315413155131561315713158131591316013161131621316313164131651316613167131681316913170131711317213173131741317513176131771317813179131801318113182131831318413185131861318713188131891319013191131921319313194131951319613197131981319913200132011320213203132041320513206132071320813209132101321113212132131321413215132161321713218132191322013221132221322313224132251322613227132281322913230132311323213233132341323513236132371323813239132401324113242132431324413245132461324713248132491325013251132521325313254132551325613257132581325913260132611326213263132641326513266132671326813269132701327113272132731327413275132761327713278132791328013281132821328313284132851328613287132881328913290132911329213293132941329513296132971329813299133001330113302133031330413305133061330713308133091331013311133121331313314133151331613317133181331913320133211332213323133241332513326133271332813329133301333113332133331333413335133361333713338133391334013341133421334313344133451334613347133481334913350133511335213353133541335513356133571335813359133601336113362133631336413365133661336713368133691337013371133721337313374133751337613377133781337913380133811338213383133841338513386133871338813389133901339113392133931339413395133961339713398133991340013401134021340313404134051340613407134081340913410134111341213413134141341513416134171341813419134201342113422134231342413425134261342713428134291343013431134321343313434134351343613437134381343913440134411344213443134441344513446134471344813449134501345113452134531345413455134561345713458134591346013461134621346313464134651346613467134681346913470134711347213473134741347513476134771347813479134801348113482134831348413485134861348713488134891349013491134921349313494134951349613497134981349913500135011350213503135041350513506135071350813509135101351113512135131351413515135161351713518135191352013521135221352313524135251352613527135281352913530135311353213533135341353513536135371353813539135401354113542135431354413545135461354713548135491355013551135521355313554135551355613557135581355913560135611356213563135641356513566135671356813569135701357113572135731357413575135761357713578135791358013581135821358313584135851358613587135881358913590135911359213593135941359513596135971359813599136001360113602136031360413605136061360713608136091361013611136121361313614136151361613617136181361913620136211362213623136241362513626136271362813629136301363113632136331363413635136361363713638136391364013641136421364313644136451364613647136481364913650136511365213653136541365513656136571365813659136601366113662136631366413665136661366713668136691367013671136721367313674136751367613677136781367913680136811368213683136841368513686136871368813689136901369113692136931369413695136961369713698136991370013701137021370313704137051370613707137081370913710137111371213713137141371513716137171371813719137201372113722137231372413725137261372713728137291373013731137321373313734137351373613737137381373913740137411374213743137441374513746137471374813749137501375113752137531375413755137561375713758137591376013761137621376313764137651376613767137681376913770137711377213773137741377513776137771377813779137801378113782137831378413785137861378713788137891379013791137921379313794137951379613797137981379913800138011380213803138041380513806138071380813809138101381113812138131381413815138161381713818138191382013821138221382313824138251382613827138281382913830138311383213833138341383513836138371383813839138401384113842138431384413845138461384713848138491385013851138521385313854138551385613857138581385913860138611386213863138641386513866138671386813869138701387113872138731387413875138761387713878138791388013881138821388313884138851388613887138881388913890138911389213893138941389513896138971389813899139001390113902139031390413905139061390713908139091391013911139121391313914139151391613917139181391913920139211392213923139241392513926139271392813929139301393113932139331393413935139361393713938139391394013941139421394313944139451394613947139481394913950139511395213953139541395513956139571395813959139601396113962139631396413965139661396713968139691397013971139721397313974139751397613977139781397913980139811398213983139841398513986139871398813989139901399113992139931399413995139961399713998139991400014001140021400314004140051400614007140081400914010140111401214013140141401514016140171401814019140201402114022140231402414025140261402714028140291403014031140321403314034140351403614037140381403914040140411404214043140441404514046140471404814049140501405114052140531405414055140561405714058140591406014061140621406314064140651406614067140681406914070140711407214073140741407514076140771407814079140801408114082140831408414085140861408714088140891409014091140921409314094140951409614097140981409914100141011410214103141041410514106141071410814109141101411114112141131411414115141161411714118141191412014121141221412314124141251412614127141281412914130141311413214133141341413514136141371413814139141401414114142141431414414145141461414714148141491415014151141521415314154141551415614157141581415914160141611416214163141641416514166141671416814169141701417114172141731417414175141761417714178141791418014181141821418314184141851418614187141881418914190141911419214193141941419514196141971419814199142001420114202142031420414205142061420714208142091421014211142121421314214142151421614217142181421914220142211422214223142241422514226142271422814229142301423114232142331423414235142361423714238142391424014241142421424314244142451424614247142481424914250142511425214253142541425514256142571425814259142601426114262142631426414265142661426714268142691427014271142721427314274142751427614277142781427914280142811428214283142841428514286142871428814289142901429114292142931429414295142961429714298142991430014301143021430314304143051430614307143081430914310143111431214313143141431514316143171431814319143201432114322143231432414325143261432714328143291433014331143321433314334143351433614337143381433914340143411434214343143441434514346143471434814349143501435114352143531435414355143561435714358143591436014361143621436314364143651436614367143681436914370143711437214373143741437514376143771437814379143801438114382143831438414385143861438714388143891439014391143921439314394143951439614397143981439914400144011440214403144041440514406144071440814409144101441114412144131441414415144161441714418144191442014421144221442314424144251442614427144281442914430144311443214433144341443514436144371443814439144401444114442144431444414445144461444714448144491445014451144521445314454144551445614457144581445914460144611446214463144641446514466144671446814469144701447114472144731447414475144761447714478144791448014481144821448314484144851448614487144881448914490144911449214493144941449514496144971449814499145001450114502145031450414505145061450714508145091451014511145121451314514145151451614517145181451914520145211452214523145241452514526145271452814529145301453114532145331453414535145361453714538145391454014541145421454314544145451454614547145481454914550145511455214553145541455514556145571455814559145601456114562145631456414565145661456714568145691457014571145721457314574145751457614577145781457914580145811458214583145841458514586145871458814589145901459114592145931459414595145961459714598145991460014601146021460314604146051460614607146081460914610146111461214613146141461514616146171461814619146201462114622146231462414625146261462714628146291463014631146321463314634146351463614637146381463914640146411464214643146441464514646146471464814649146501465114652146531465414655146561465714658146591466014661146621466314664146651466614667146681466914670146711467214673146741467514676146771467814679146801468114682146831468414685146861468714688146891469014691146921469314694146951469614697146981469914700147011470214703147041470514706147071470814709147101471114712147131471414715147161471714718147191472014721147221472314724147251472614727147281472914730147311473214733147341473514736147371473814739147401474114742147431474414745147461474714748147491475014751147521475314754147551475614757147581475914760147611476214763147641476514766147671476814769147701477114772147731477414775147761477714778147791478014781147821478314784147851478614787147881478914790147911479214793147941479514796147971479814799148001480114802148031480414805148061480714808148091481014811148121481314814148151481614817148181481914820148211482214823148241482514826148271482814829148301483114832148331483414835148361483714838148391484014841148421484314844148451484614847148481484914850148511485214853148541485514856148571485814859148601486114862148631486414865148661486714868148691487014871148721487314874148751487614877148781487914880148811488214883148841488514886148871488814889148901489114892148931489414895148961489714898148991490014901149021490314904149051490614907149081490914910149111491214913149141491514916149171491814919149201492114922149231492414925149261492714928149291493014931149321493314934149351493614937149381493914940149411494214943149441494514946149471494814949149501495114952149531495414955149561495714958149591496014961149621496314964149651496614967149681496914970149711497214973149741497514976149771497814979149801498114982149831498414985149861498714988149891499014991149921499314994149951499614997149981499915000150011500215003150041500515006150071500815009150101501115012150131501415015150161501715018150191502015021150221502315024150251502615027150281502915030150311503215033150341503515036150371503815039150401504115042150431504415045150461504715048150491505015051150521505315054150551505615057150581505915060150611506215063150641506515066150671506815069150701507115072150731507415075150761507715078150791508015081150821508315084150851508615087150881508915090150911509215093150941509515096150971509815099151001510115102151031510415105151061510715108151091511015111151121511315114151151511615117151181511915120151211512215123151241512515126151271512815129151301513115132151331513415135151361513715138151391514015141151421514315144151451514615147151481514915150151511515215153151541515515156151571515815159151601516115162151631516415165151661516715168151691517015171151721517315174151751517615177151781517915180151811518215183151841518515186151871518815189151901519115192151931519415195151961519715198151991520015201152021520315204152051520615207152081520915210152111521215213152141521515216152171521815219152201522115222152231522415225152261522715228152291523015231152321523315234152351523615237152381523915240152411524215243152441524515246152471524815249152501525115252152531525415255152561525715258152591526015261152621526315264152651526615267152681526915270152711527215273152741527515276152771527815279152801528115282152831528415285152861528715288152891529015291152921529315294152951529615297152981529915300153011530215303153041530515306153071530815309153101531115312153131531415315153161531715318153191532015321153221532315324153251532615327153281532915330153311533215333153341533515336153371533815339153401534115342153431534415345153461534715348153491535015351153521535315354153551535615357153581535915360153611536215363153641536515366153671536815369153701537115372153731537415375153761537715378153791538015381153821538315384153851538615387153881538915390153911539215393153941539515396153971539815399154001540115402154031540415405154061540715408154091541015411154121541315414154151541615417154181541915420154211542215423154241542515426154271542815429154301543115432154331543415435154361543715438154391544015441154421544315444154451544615447154481544915450154511545215453154541545515456154571545815459154601546115462154631546415465154661546715468154691547015471154721547315474154751547615477154781547915480154811548215483154841548515486154871548815489154901549115492154931549415495154961549715498154991550015501155021550315504155051550615507155081550915510155111551215513155141551515516155171551815519155201552115522155231552415525155261552715528155291553015531155321553315534155351553615537155381553915540155411554215543155441554515546155471554815549155501555115552155531555415555155561555715558155591556015561155621556315564155651556615567155681556915570155711557215573155741557515576155771557815579155801558115582155831558415585155861558715588155891559015591155921559315594155951559615597155981559915600156011560215603156041560515606156071560815609156101561115612156131561415615156161561715618156191562015621156221562315624156251562615627156281562915630156311563215633156341563515636156371563815639156401564115642156431564415645156461564715648156491565015651156521565315654156551565615657156581565915660156611566215663156641566515666156671566815669156701567115672156731567415675156761567715678156791568015681156821568315684156851568615687156881568915690156911569215693156941569515696156971569815699157001570115702157031570415705157061570715708157091571015711157121571315714157151571615717157181571915720157211572215723157241572515726157271572815729157301573115732157331573415735157361573715738157391574015741157421574315744157451574615747157481574915750157511575215753157541575515756157571575815759157601576115762157631576415765157661576715768157691577015771157721577315774157751577615777157781577915780157811578215783157841578515786157871578815789157901579115792157931579415795157961579715798157991580015801158021580315804158051580615807158081580915810158111581215813158141581515816158171581815819158201582115822158231582415825158261582715828158291583015831158321583315834158351583615837158381583915840158411584215843158441584515846158471584815849158501585115852158531585415855158561585715858158591586015861158621586315864158651586615867158681586915870158711587215873158741587515876158771587815879158801588115882158831588415885158861588715888158891589015891158921589315894158951589615897158981589915900159011590215903159041590515906159071590815909159101591115912159131591415915159161591715918159191592015921159221592315924159251592615927159281592915930159311593215933159341593515936159371593815939159401594115942159431594415945159461594715948159491595015951159521595315954159551595615957159581595915960159611596215963159641596515966159671596815969159701597115972159731597415975159761597715978159791598015981159821598315984159851598615987159881598915990159911599215993159941599515996159971599815999160001600116002160031600416005160061600716008160091601016011160121601316014160151601616017160181601916020160211602216023160241602516026160271602816029160301603116032160331603416035160361603716038160391604016041160421604316044160451604616047160481604916050160511605216053160541605516056160571605816059160601606116062160631606416065160661606716068160691607016071160721607316074160751607616077160781607916080160811608216083160841608516086160871608816089160901609116092160931609416095160961609716098160991610016101161021610316104161051610616107161081610916110161111611216113161141611516116161171611816119161201612116122161231612416125161261612716128161291613016131161321613316134161351613616137161381613916140161411614216143161441614516146161471614816149161501615116152161531615416155161561615716158161591616016161161621616316164161651616616167161681616916170161711617216173161741617516176161771617816179161801618116182161831618416185161861618716188161891619016191161921619316194161951619616197161981619916200162011620216203162041620516206162071620816209162101621116212162131621416215162161621716218162191622016221162221622316224162251622616227162281622916230162311623216233162341623516236162371623816239162401624116242162431624416245162461624716248162491625016251162521625316254162551625616257162581625916260162611626216263162641626516266162671626816269162701627116272162731627416275162761627716278162791628016281162821628316284162851628616287162881628916290162911629216293162941629516296162971629816299163001630116302163031630416305163061630716308163091631016311163121631316314163151631616317163181631916320163211632216323163241632516326163271632816329163301633116332163331633416335163361633716338163391634016341163421634316344163451634616347163481634916350163511635216353163541635516356163571635816359163601636116362163631636416365163661636716368163691637016371163721637316374163751637616377163781637916380163811638216383163841638516386163871638816389163901639116392163931639416395163961639716398163991640016401164021640316404164051640616407164081640916410164111641216413164141641516416164171641816419164201642116422164231642416425164261642716428164291643016431164321643316434164351643616437164381643916440164411644216443164441644516446164471644816449164501645116452164531645416455164561645716458164591646016461164621646316464164651646616467164681646916470164711647216473164741647516476164771647816479164801648116482164831648416485164861648716488164891649016491164921649316494164951649616497164981649916500165011650216503165041650516506165071650816509165101651116512165131651416515165161651716518165191652016521165221652316524165251652616527165281652916530165311653216533165341653516536165371653816539165401654116542165431654416545165461654716548165491655016551165521655316554165551655616557165581655916560165611656216563165641656516566165671656816569165701657116572165731657416575165761657716578165791658016581165821658316584165851658616587165881658916590165911659216593165941659516596165971659816599166001660116602166031660416605166061660716608166091661016611166121661316614166151661616617166181661916620166211662216623166241662516626166271662816629166301663116632166331663416635166361663716638166391664016641166421664316644166451664616647166481664916650166511665216653166541665516656166571665816659166601666116662166631666416665166661666716668166691667016671166721667316674166751667616677166781667916680166811668216683166841668516686166871668816689166901669116692166931669416695166961669716698166991670016701167021670316704167051670616707167081670916710167111671216713167141671516716167171671816719167201672116722167231672416725167261672716728167291673016731167321673316734167351673616737167381673916740167411674216743167441674516746167471674816749167501675116752167531675416755167561675716758167591676016761167621676316764167651676616767167681676916770167711677216773167741677516776167771677816779167801678116782167831678416785167861678716788167891679016791167921679316794167951679616797167981679916800168011680216803168041680516806168071680816809168101681116812168131681416815168161681716818168191682016821168221682316824168251682616827168281682916830168311683216833168341683516836168371683816839168401684116842168431684416845168461684716848168491685016851168521685316854168551685616857168581685916860168611686216863168641686516866168671686816869168701687116872168731687416875168761687716878168791688016881168821688316884168851688616887168881688916890168911689216893168941689516896168971689816899169001690116902169031690416905169061690716908169091691016911169121691316914169151691616917169181691916920169211692216923169241692516926169271692816929169301693116932169331693416935169361693716938169391694016941169421694316944169451694616947169481694916950169511695216953169541695516956169571695816959169601696116962169631696416965169661696716968169691697016971169721697316974169751697616977169781697916980169811698216983169841698516986169871698816989169901699116992169931699416995169961699716998169991700017001170021700317004170051700617007170081700917010170111701217013170141701517016170171701817019170201702117022170231702417025170261702717028170291703017031170321703317034170351703617037170381703917040170411704217043170441704517046170471704817049170501705117052170531705417055170561705717058170591706017061170621706317064170651706617067170681706917070170711707217073170741707517076170771707817079170801708117082170831708417085170861708717088170891709017091170921709317094170951709617097170981709917100171011710217103171041710517106171071710817109171101711117112171131711417115171161711717118171191712017121171221712317124171251712617127171281712917130171311713217133171341713517136171371713817139171401714117142171431714417145171461714717148171491715017151171521715317154171551715617157171581715917160171611716217163171641716517166171671716817169171701717117172171731717417175171761717717178171791718017181171821718317184171851718617187171881718917190171911719217193171941719517196171971719817199172001720117202172031720417205172061720717208172091721017211172121721317214172151721617217172181721917220172211722217223172241722517226172271722817229172301723117232172331723417235172361723717238172391724017241172421724317244172451724617247172481724917250172511725217253172541725517256172571725817259172601726117262172631726417265172661726717268172691727017271172721727317274172751727617277172781727917280172811728217283172841728517286172871728817289172901729117292172931729417295172961729717298172991730017301173021730317304173051730617307173081730917310173111731217313173141731517316173171731817319173201732117322173231732417325173261732717328173291733017331173321733317334173351733617337173381733917340173411734217343173441734517346173471734817349173501735117352173531735417355173561735717358173591736017361173621736317364173651736617367173681736917370173711737217373173741737517376173771737817379173801738117382173831738417385173861738717388173891739017391173921739317394173951739617397173981739917400174011740217403174041740517406174071740817409174101741117412174131741417415174161741717418174191742017421174221742317424174251742617427174281742917430174311743217433174341743517436174371743817439174401744117442174431744417445174461744717448174491745017451174521745317454174551745617457174581745917460174611746217463174641746517466174671746817469174701747117472174731747417475174761747717478174791748017481174821748317484174851748617487174881748917490174911749217493174941749517496174971749817499175001750117502175031750417505175061750717508175091751017511175121751317514175151751617517175181751917520175211752217523175241752517526175271752817529175301753117532175331753417535175361753717538175391754017541175421754317544175451754617547175481754917550175511755217553175541755517556175571755817559175601756117562175631756417565175661756717568175691757017571175721757317574175751757617577175781757917580175811758217583175841758517586175871758817589175901759117592175931759417595175961759717598175991760017601176021760317604176051760617607176081760917610176111761217613176141761517616176171761817619176201762117622176231762417625176261762717628176291763017631176321763317634176351763617637176381763917640176411764217643176441764517646176471764817649176501765117652176531765417655176561765717658176591766017661176621766317664176651766617667176681766917670176711767217673176741767517676176771767817679176801768117682176831768417685176861768717688176891769017691176921769317694176951769617697176981769917700177011770217703177041770517706177071770817709177101771117712177131771417715177161771717718177191772017721177221772317724177251772617727177281772917730177311773217733177341773517736177371773817739177401774117742177431774417745177461774717748177491775017751177521775317754177551775617757177581775917760177611776217763177641776517766177671776817769177701777117772177731777417775177761777717778177791778017781177821778317784177851778617787177881778917790177911779217793177941779517796177971779817799178001780117802178031780417805178061780717808178091781017811178121781317814178151781617817178181781917820178211782217823178241782517826178271782817829178301783117832178331783417835178361783717838178391784017841178421784317844178451784617847178481784917850178511785217853178541785517856178571785817859178601786117862178631786417865178661786717868178691787017871178721787317874178751787617877178781787917880178811788217883178841788517886178871788817889178901789117892178931789417895178961789717898178991790017901179021790317904179051790617907179081790917910179111791217913179141791517916179171791817919179201792117922179231792417925179261792717928179291793017931179321793317934179351793617937179381793917940179411794217943179441794517946179471794817949179501795117952179531795417955179561795717958179591796017961179621796317964179651796617967179681796917970179711797217973179741797517976179771797817979179801798117982179831798417985179861798717988179891799017991179921799317994179951799617997179981799918000180011800218003180041800518006180071800818009180101801118012180131801418015180161801718018180191802018021180221802318024180251802618027180281802918030180311803218033180341803518036180371803818039180401804118042180431804418045180461804718048180491805018051180521805318054180551805618057180581805918060180611806218063180641806518066180671806818069180701807118072180731807418075180761807718078180791808018081180821808318084180851808618087180881808918090180911809218093180941809518096180971809818099181001810118102181031810418105181061810718108181091811018111181121811318114181151811618117181181811918120181211812218123181241812518126181271812818129181301813118132181331813418135181361813718138181391814018141181421814318144181451814618147181481814918150181511815218153181541815518156181571815818159181601816118162181631816418165181661816718168181691817018171181721817318174181751817618177181781817918180181811818218183181841818518186181871818818189181901819118192181931819418195181961819718198181991820018201182021820318204182051820618207182081820918210182111821218213182141821518216182171821818219182201822118222182231822418225182261822718228182291823018231182321823318234182351823618237182381823918240182411824218243182441824518246182471824818249182501825118252182531825418255182561825718258182591826018261182621826318264182651826618267182681826918270182711827218273182741827518276182771827818279182801828118282182831828418285182861828718288182891829018291182921829318294182951829618297182981829918300183011830218303183041830518306183071830818309183101831118312183131831418315183161831718318183191832018321183221832318324183251832618327183281832918330183311833218333183341833518336183371833818339183401834118342183431834418345183461834718348183491835018351183521835318354183551835618357183581835918360183611836218363183641836518366183671836818369183701837118372183731837418375183761837718378183791838018381183821838318384183851838618387183881838918390183911839218393183941839518396183971839818399184001840118402184031840418405184061840718408184091841018411184121841318414184151841618417184181841918420184211842218423184241842518426184271842818429184301843118432184331843418435184361843718438184391844018441184421844318444184451844618447184481844918450184511845218453184541845518456184571845818459184601846118462184631846418465184661846718468184691847018471184721847318474184751847618477184781847918480184811848218483184841848518486184871848818489184901849118492184931849418495184961849718498184991850018501185021850318504185051850618507185081850918510185111851218513185141851518516185171851818519185201852118522185231852418525185261852718528185291853018531185321853318534185351853618537185381853918540185411854218543185441854518546185471854818549185501855118552185531855418555185561855718558185591856018561185621856318564185651856618567185681856918570185711857218573185741857518576185771857818579185801858118582185831858418585185861858718588185891859018591185921859318594185951859618597185981859918600186011860218603186041860518606186071860818609186101861118612186131861418615186161861718618186191862018621186221862318624186251862618627186281862918630186311863218633186341863518636186371863818639186401864118642186431864418645186461864718648186491865018651186521865318654186551865618657186581865918660186611866218663186641866518666186671866818669186701867118672186731867418675186761867718678186791868018681186821868318684186851868618687186881868918690186911869218693186941869518696186971869818699187001870118702187031870418705187061870718708187091871018711187121871318714187151871618717187181871918720187211872218723187241872518726187271872818729187301873118732187331873418735187361873718738187391874018741187421874318744187451874618747187481874918750187511875218753187541875518756187571875818759187601876118762187631876418765187661876718768187691877018771187721877318774187751877618777187781877918780187811878218783187841878518786187871878818789187901879118792187931879418795187961879718798187991880018801188021880318804188051880618807188081880918810188111881218813188141881518816188171881818819188201882118822188231882418825188261882718828188291883018831188321883318834188351883618837188381883918840188411884218843188441884518846188471884818849188501885118852188531885418855188561885718858188591886018861188621886318864188651886618867188681886918870188711887218873188741887518876188771887818879188801888118882188831888418885188861888718888188891889018891188921889318894188951889618897188981889918900189011890218903189041890518906189071890818909189101891118912189131891418915189161891718918189191892018921189221892318924189251892618927189281892918930189311893218933189341893518936189371893818939189401894118942189431894418945189461894718948189491895018951189521895318954189551895618957189581895918960189611896218963189641896518966189671896818969189701897118972189731897418975189761897718978189791898018981189821898318984189851898618987189881898918990189911899218993189941899518996189971899818999190001900119002190031900419005190061900719008190091901019011190121901319014190151901619017190181901919020190211902219023190241902519026190271902819029190301903119032190331903419035190361903719038190391904019041190421904319044190451904619047190481904919050190511905219053190541905519056190571905819059190601906119062190631906419065190661906719068190691907019071190721907319074190751907619077190781907919080190811908219083190841908519086190871908819089190901909119092190931909419095190961909719098190991910019101191021910319104191051910619107191081910919110191111911219113191141911519116191171911819119191201912119122191231912419125191261912719128191291913019131191321913319134191351913619137191381913919140191411914219143191441914519146191471914819149191501915119152191531915419155191561915719158191591916019161191621916319164191651916619167191681916919170191711917219173191741917519176191771917819179191801918119182191831918419185191861918719188191891919019191191921919319194191951919619197191981919919200192011920219203192041920519206192071920819209192101921119212192131921419215192161921719218192191922019221192221922319224192251922619227192281922919230192311923219233192341923519236192371923819239192401924119242192431924419245192461924719248192491925019251192521925319254192551925619257192581925919260192611926219263192641926519266192671926819269192701927119272192731927419275192761927719278192791928019281192821928319284192851928619287192881928919290192911929219293192941929519296192971929819299193001930119302193031930419305193061930719308193091931019311193121931319314193151931619317193181931919320193211932219323193241932519326193271932819329193301933119332193331933419335193361933719338193391934019341193421934319344193451934619347193481934919350193511935219353193541935519356193571935819359193601936119362193631936419365193661936719368193691937019371193721937319374193751937619377193781937919380193811938219383193841938519386193871938819389193901939119392193931939419395193961939719398193991940019401194021940319404194051940619407194081940919410194111941219413194141941519416194171941819419194201942119422194231942419425194261942719428194291943019431194321943319434194351943619437194381943919440194411944219443194441944519446194471944819449194501945119452194531945419455194561945719458194591946019461194621946319464194651946619467194681946919470194711947219473194741947519476194771947819479194801948119482194831948419485194861948719488194891949019491194921949319494194951949619497194981949919500195011950219503195041950519506195071950819509195101951119512195131951419515195161951719518195191952019521195221952319524195251952619527195281952919530195311953219533195341953519536195371953819539195401954119542195431954419545195461954719548195491955019551195521955319554195551955619557195581955919560195611956219563195641956519566195671956819569195701957119572195731957419575195761957719578195791958019581195821958319584195851958619587195881958919590195911959219593195941959519596195971959819599196001960119602196031960419605196061960719608196091961019611196121961319614196151961619617196181961919620196211962219623196241962519626196271962819629196301963119632196331963419635196361963719638196391964019641196421964319644196451964619647196481964919650196511965219653196541965519656196571965819659196601966119662196631966419665196661966719668196691967019671196721967319674196751967619677196781967919680196811968219683196841968519686196871968819689196901969119692196931969419695196961969719698196991970019701197021970319704197051970619707197081970919710197111971219713197141971519716197171971819719197201972119722197231972419725197261972719728197291973019731197321973319734197351973619737197381973919740197411974219743197441974519746197471974819749197501975119752197531975419755197561975719758197591976019761197621976319764197651976619767197681976919770197711977219773197741977519776197771977819779197801978119782197831978419785197861978719788197891979019791197921979319794197951979619797197981979919800198011980219803198041980519806198071980819809198101981119812198131981419815198161981719818198191982019821198221982319824198251982619827198281982919830198311983219833198341983519836198371983819839198401984119842198431984419845198461984719848198491985019851198521985319854198551985619857198581985919860198611986219863198641986519866198671986819869198701987119872198731987419875198761987719878198791988019881198821988319884198851988619887198881988919890198911989219893198941989519896198971989819899199001990119902199031990419905199061990719908199091991019911199121991319914199151991619917199181991919920199211992219923199241992519926199271992819929199301993119932199331993419935199361993719938199391994019941199421994319944199451994619947199481994919950199511995219953199541995519956199571995819959199601996119962199631996419965199661996719968199691997019971199721997319974199751997619977199781997919980199811998219983199841998519986199871998819989199901999119992199931999419995199961999719998199992000020001200022000320004200052000620007200082000920010200112001220013200142001520016200172001820019200202002120022200232002420025200262002720028200292003020031200322003320034200352003620037200382003920040200412004220043200442004520046200472004820049200502005120052200532005420055200562005720058200592006020061200622006320064200652006620067200682006920070200712007220073200742007520076200772007820079200802008120082200832008420085200862008720088200892009020091200922009320094200952009620097200982009920100201012010220103201042010520106201072010820109201102011120112201132011420115201162011720118201192012020121201222012320124201252012620127201282012920130201312013220133201342013520136201372013820139201402014120142201432014420145201462014720148201492015020151201522015320154201552015620157201582015920160201612016220163201642016520166201672016820169201702017120172201732017420175201762017720178201792018020181201822018320184201852018620187201882018920190201912019220193201942019520196201972019820199202002020120202202032020420205202062020720208202092021020211202122021320214202152021620217202182021920220202212022220223202242022520226202272022820229202302023120232202332023420235202362023720238202392024020241202422024320244202452024620247202482024920250202512025220253202542025520256202572025820259202602026120262202632026420265202662026720268202692027020271202722027320274202752027620277202782027920280202812028220283202842028520286202872028820289202902029120292202932029420295202962029720298202992030020301203022030320304203052030620307203082030920310203112031220313203142031520316203172031820319203202032120322203232032420325203262032720328203292033020331203322033320334203352033620337203382033920340203412034220343203442034520346203472034820349203502035120352203532035420355203562035720358203592036020361203622036320364203652036620367203682036920370203712037220373203742037520376203772037820379203802038120382203832038420385203862038720388203892039020391203922039320394203952039620397203982039920400204012040220403204042040520406204072040820409204102041120412204132041420415204162041720418204192042020421204222042320424204252042620427204282042920430204312043220433204342043520436204372043820439204402044120442204432044420445204462044720448204492045020451204522045320454204552045620457204582045920460204612046220463204642046520466204672046820469204702047120472204732047420475204762047720478204792048020481204822048320484204852048620487204882048920490204912049220493204942049520496204972049820499205002050120502205032050420505205062050720508205092051020511205122051320514205152051620517205182051920520205212052220523205242052520526205272052820529205302053120532205332053420535205362053720538205392054020541205422054320544205452054620547205482054920550205512055220553205542055520556205572055820559205602056120562205632056420565205662056720568205692057020571205722057320574205752057620577205782057920580205812058220583205842058520586205872058820589205902059120592205932059420595205962059720598205992060020601206022060320604206052060620607206082060920610206112061220613206142061520616206172061820619206202062120622206232062420625206262062720628206292063020631206322063320634206352063620637206382063920640206412064220643206442064520646206472064820649206502065120652206532065420655206562065720658206592066020661206622066320664206652066620667206682066920670206712067220673206742067520676206772067820679206802068120682206832068420685206862068720688206892069020691206922069320694206952069620697206982069920700207012070220703207042070520706207072070820709207102071120712207132071420715207162071720718207192072020721207222072320724207252072620727207282072920730207312073220733207342073520736207372073820739207402074120742207432074420745207462074720748207492075020751207522075320754207552075620757207582075920760207612076220763207642076520766207672076820769207702077120772207732077420775207762077720778207792078020781207822078320784207852078620787207882078920790207912079220793207942079520796207972079820799208002080120802208032080420805208062080720808208092081020811208122081320814208152081620817208182081920820208212082220823208242082520826208272082820829208302083120832208332083420835208362083720838208392084020841208422084320844208452084620847208482084920850208512085220853208542085520856208572085820859208602086120862208632086420865208662086720868208692087020871208722087320874208752087620877208782087920880208812088220883208842088520886208872088820889208902089120892208932089420895208962089720898208992090020901209022090320904209052090620907209082090920910209112091220913209142091520916209172091820919209202092120922209232092420925209262092720928209292093020931209322093320934209352093620937209382093920940209412094220943209442094520946209472094820949209502095120952209532095420955209562095720958209592096020961209622096320964209652096620967209682096920970209712097220973209742097520976209772097820979209802098120982209832098420985209862098720988209892099020991209922099320994209952099620997209982099921000210012100221003210042100521006210072100821009210102101121012210132101421015210162101721018210192102021021210222102321024210252102621027210282102921030210312103221033210342103521036210372103821039210402104121042210432104421045210462104721048210492105021051210522105321054210552105621057210582105921060210612106221063210642106521066210672106821069210702107121072210732107421075210762107721078210792108021081210822108321084210852108621087210882108921090210912109221093210942109521096210972109821099211002110121102211032110421105211062110721108211092111021111211122111321114211152111621117211182111921120211212112221123211242112521126211272112821129211302113121132211332113421135211362113721138211392114021141211422114321144211452114621147211482114921150211512115221153211542115521156211572115821159211602116121162211632116421165211662116721168211692117021171211722117321174211752117621177211782117921180211812118221183211842118521186211872118821189211902119121192211932119421195211962119721198211992120021201212022120321204212052120621207212082120921210212112121221213212142121521216212172121821219212202122121222212232122421225212262122721228212292123021231212322123321234212352123621237212382123921240212412124221243212442124521246212472124821249212502125121252212532125421255212562125721258212592126021261212622126321264212652126621267212682126921270212712127221273212742127521276212772127821279212802128121282212832128421285212862128721288212892129021291212922129321294212952129621297212982129921300213012130221303213042130521306213072130821309213102131121312213132131421315213162131721318213192132021321213222132321324213252132621327213282132921330213312133221333213342133521336213372133821339213402134121342213432134421345213462134721348213492135021351213522135321354213552135621357213582135921360213612136221363213642136521366213672136821369213702137121372213732137421375213762137721378213792138021381213822138321384213852138621387213882138921390213912139221393213942139521396213972139821399214002140121402214032140421405214062140721408214092141021411214122141321414214152141621417214182141921420214212142221423214242142521426214272142821429214302143121432214332143421435214362143721438214392144021441214422144321444214452144621447214482144921450214512145221453214542145521456214572145821459214602146121462214632146421465214662146721468214692147021471214722147321474214752147621477214782147921480214812148221483214842148521486214872148821489214902149121492214932149421495214962149721498214992150021501215022150321504215052150621507215082150921510215112151221513215142151521516215172151821519215202152121522215232152421525215262152721528215292153021531215322153321534215352153621537215382153921540215412154221543215442154521546215472154821549215502155121552215532155421555215562155721558215592156021561215622156321564215652156621567215682156921570215712157221573215742157521576215772157821579215802158121582215832158421585215862158721588215892159021591215922159321594215952159621597215982159921600216012160221603216042160521606216072160821609216102161121612216132161421615216162161721618216192162021621216222162321624216252162621627216282162921630216312163221633216342163521636216372163821639216402164121642216432164421645216462164721648216492165021651216522165321654216552165621657216582165921660216612166221663216642166521666216672166821669216702167121672216732167421675216762167721678216792168021681216822168321684216852168621687216882168921690216912169221693216942169521696216972169821699217002170121702217032170421705217062170721708217092171021711217122171321714217152171621717217182171921720217212172221723217242172521726217272172821729217302173121732217332173421735217362173721738217392174021741217422174321744217452174621747217482174921750217512175221753217542175521756217572175821759217602176121762217632176421765217662176721768217692177021771217722177321774217752177621777217782177921780217812178221783217842178521786217872178821789217902179121792217932179421795217962179721798217992180021801218022180321804218052180621807218082180921810218112181221813218142181521816218172181821819218202182121822218232182421825218262182721828218292183021831218322183321834218352183621837218382183921840218412184221843218442184521846218472184821849218502185121852218532185421855218562185721858218592186021861218622186321864218652186621867218682186921870218712187221873218742187521876218772187821879218802188121882218832188421885218862188721888218892189021891218922189321894218952189621897218982189921900219012190221903219042190521906219072190821909219102191121912219132191421915219162191721918219192192021921219222192321924219252192621927219282192921930219312193221933219342193521936219372193821939219402194121942219432194421945219462194721948219492195021951219522195321954219552195621957219582195921960219612196221963219642196521966219672196821969219702197121972219732197421975219762197721978219792198021981219822198321984219852198621987219882198921990219912199221993219942199521996219972199821999220002200122002220032200422005220062200722008220092201022011220122201322014220152201622017220182201922020220212202222023220242202522026220272202822029220302203122032220332203422035220362203722038220392204022041220422204322044220452204622047220482204922050220512205222053220542205522056220572205822059220602206122062220632206422065220662206722068220692207022071220722207322074220752207622077220782207922080220812208222083220842208522086220872208822089220902209122092220932209422095220962209722098220992210022101221022210322104221052210622107221082210922110221112211222113221142211522116221172211822119221202212122122221232212422125221262212722128221292213022131221322213322134221352213622137221382213922140221412214222143221442214522146221472214822149221502215122152221532215422155221562215722158221592216022161221622216322164221652216622167221682216922170221712217222173221742217522176221772217822179221802218122182221832218422185221862218722188221892219022191221922219322194221952219622197221982219922200222012220222203222042220522206222072220822209222102221122212222132221422215222162221722218222192222022221222222222322224222252222622227222282222922230222312223222233222342223522236222372223822239222402224122242222432224422245222462224722248222492225022251222522225322254222552225622257222582225922260222612226222263222642226522266222672226822269222702227122272222732227422275222762227722278222792228022281222822228322284222852228622287222882228922290222912229222293222942229522296222972229822299223002230122302223032230422305223062230722308223092231022311223122231322314223152231622317223182231922320223212232222323223242232522326223272232822329223302233122332223332233422335223362233722338223392234022341223422234322344223452234622347223482234922350223512235222353223542235522356223572235822359223602236122362223632236422365223662236722368223692237022371223722237322374223752237622377223782237922380223812238222383223842238522386223872238822389223902239122392223932239422395223962239722398223992240022401224022240322404224052240622407224082240922410224112241222413224142241522416224172241822419224202242122422224232242422425224262242722428224292243022431224322243322434224352243622437224382243922440224412244222443224442244522446224472244822449224502245122452224532245422455224562245722458224592246022461224622246322464224652246622467224682246922470224712247222473224742247522476224772247822479224802248122482224832248422485224862248722488224892249022491224922249322494224952249622497224982249922500225012250222503225042250522506225072250822509225102251122512225132251422515225162251722518225192252022521225222252322524225252252622527225282252922530225312253222533225342253522536225372253822539225402254122542225432254422545225462254722548225492255022551225522255322554225552255622557225582255922560225612256222563225642256522566225672256822569225702257122572225732257422575225762257722578225792258022581225822258322584225852258622587225882258922590225912259222593225942259522596225972259822599226002260122602226032260422605226062260722608226092261022611226122261322614226152261622617226182261922620226212262222623226242262522626226272262822629226302263122632226332263422635226362263722638226392264022641226422264322644226452264622647226482264922650226512265222653226542265522656226572265822659226602266122662226632266422665226662266722668226692267022671226722267322674226752267622677226782267922680226812268222683226842268522686226872268822689226902269122692226932269422695226962269722698226992270022701227022270322704227052270622707227082270922710227112271222713227142271522716227172271822719227202272122722227232272422725227262272722728227292273022731227322273322734227352273622737227382273922740227412274222743227442274522746227472274822749227502275122752227532275422755227562275722758227592276022761227622276322764227652276622767227682276922770227712277222773227742277522776227772277822779227802278122782227832278422785227862278722788227892279022791227922279322794227952279622797227982279922800228012280222803228042280522806228072280822809228102281122812228132281422815228162281722818228192282022821228222282322824228252282622827228282282922830228312283222833228342283522836228372283822839228402284122842228432284422845228462284722848228492285022851228522285322854228552285622857228582285922860228612286222863228642286522866228672286822869228702287122872228732287422875228762287722878228792288022881228822288322884228852288622887228882288922890228912289222893228942289522896228972289822899229002290122902229032290422905229062290722908229092291022911229122291322914229152291622917229182291922920229212292222923229242292522926229272292822929229302293122932229332293422935229362293722938229392294022941229422294322944229452294622947229482294922950229512295222953229542295522956229572295822959229602296122962229632296422965229662296722968229692297022971229722297322974229752297622977229782297922980229812298222983229842298522986229872298822989229902299122992229932299422995229962299722998229992300023001230022300323004230052300623007230082300923010230112301223013230142301523016230172301823019230202302123022230232302423025230262302723028230292303023031230322303323034230352303623037230382303923040230412304223043230442304523046230472304823049230502305123052230532305423055230562305723058230592306023061230622306323064230652306623067230682306923070230712307223073230742307523076230772307823079230802308123082230832308423085230862308723088230892309023091230922309323094230952309623097230982309923100231012310223103231042310523106231072310823109231102311123112231132311423115231162311723118231192312023121231222312323124231252312623127231282312923130231312313223133231342313523136231372313823139231402314123142231432314423145231462314723148231492315023151231522315323154231552315623157231582315923160231612316223163231642316523166231672316823169231702317123172231732317423175231762317723178231792318023181231822318323184231852318623187231882318923190231912319223193231942319523196231972319823199232002320123202232032320423205232062320723208232092321023211232122321323214232152321623217232182321923220232212322223223232242322523226232272322823229232302323123232232332323423235232362323723238232392324023241232422324323244232452324623247232482324923250232512325223253232542325523256232572325823259232602326123262232632326423265232662326723268232692327023271232722327323274232752327623277232782327923280232812328223283232842328523286232872328823289232902329123292232932329423295232962329723298232992330023301233022330323304233052330623307233082330923310233112331223313233142331523316233172331823319233202332123322233232332423325233262332723328233292333023331233322333323334233352333623337233382333923340233412334223343233442334523346233472334823349233502335123352233532335423355233562335723358233592336023361233622336323364233652336623367233682336923370233712337223373233742337523376233772337823379233802338123382233832338423385233862338723388233892339023391233922339323394233952339623397233982339923400234012340223403234042340523406234072340823409234102341123412234132341423415234162341723418234192342023421234222342323424234252342623427234282342923430234312343223433234342343523436234372343823439234402344123442234432344423445234462344723448234492345023451234522345323454234552345623457234582345923460234612346223463234642346523466234672346823469234702347123472234732347423475234762347723478234792348023481234822348323484234852348623487234882348923490234912349223493234942349523496234972349823499235002350123502235032350423505235062350723508235092351023511235122351323514235152351623517235182351923520235212352223523235242352523526235272352823529235302353123532235332353423535235362353723538235392354023541235422354323544235452354623547235482354923550235512355223553235542355523556235572355823559235602356123562235632356423565235662356723568235692357023571235722357323574235752357623577235782357923580235812358223583235842358523586235872358823589235902359123592235932359423595235962359723598235992360023601236022360323604236052360623607236082360923610236112361223613236142361523616236172361823619236202362123622236232362423625236262362723628236292363023631236322363323634236352363623637236382363923640236412364223643236442364523646236472364823649236502365123652236532365423655236562365723658236592366023661236622366323664236652366623667236682366923670236712367223673236742367523676236772367823679236802368123682236832368423685236862368723688236892369023691236922369323694236952369623697236982369923700237012370223703237042370523706237072370823709237102371123712237132371423715237162371723718237192372023721237222372323724237252372623727237282372923730237312373223733237342373523736237372373823739237402374123742237432374423745237462374723748237492375023751237522375323754237552375623757237582375923760237612376223763237642376523766237672376823769237702377123772237732377423775237762377723778237792378023781237822378323784237852378623787237882378923790237912379223793237942379523796237972379823799238002380123802238032380423805238062380723808238092381023811238122381323814238152381623817238182381923820238212382223823238242382523826238272382823829238302383123832238332383423835238362383723838238392384023841238422384323844238452384623847238482384923850238512385223853238542385523856238572385823859238602386123862238632386423865238662386723868238692387023871238722387323874238752387623877238782387923880238812388223883238842388523886238872388823889238902389123892238932389423895238962389723898238992390023901239022390323904239052390623907239082390923910239112391223913239142391523916239172391823919239202392123922239232392423925239262392723928239292393023931239322393323934239352393623937239382393923940239412394223943239442394523946239472394823949239502395123952239532395423955239562395723958239592396023961239622396323964239652396623967239682396923970239712397223973239742397523976239772397823979239802398123982239832398423985239862398723988239892399023991239922399323994239952399623997239982399924000240012400224003240042400524006240072400824009240102401124012240132401424015240162401724018240192402024021240222402324024240252402624027240282402924030240312403224033240342403524036240372403824039240402404124042240432404424045240462404724048240492405024051240522405324054240552405624057240582405924060240612406224063240642406524066240672406824069240702407124072240732407424075240762407724078240792408024081240822408324084240852408624087240882408924090240912409224093240942409524096240972409824099241002410124102241032410424105241062410724108241092411024111241122411324114241152411624117241182411924120241212412224123241242412524126241272412824129241302413124132241332413424135241362413724138241392414024141241422414324144241452414624147241482414924150241512415224153241542415524156241572415824159241602416124162241632416424165241662416724168241692417024171241722417324174241752417624177241782417924180241812418224183241842418524186241872418824189241902419124192241932419424195241962419724198241992420024201242022420324204242052420624207242082420924210242112421224213242142421524216242172421824219242202422124222242232422424225242262422724228242292423024231242322423324234242352423624237242382423924240242412424224243242442424524246242472424824249242502425124252242532425424255242562425724258242592426024261242622426324264242652426624267242682426924270242712427224273242742427524276242772427824279242802428124282242832428424285242862428724288242892429024291242922429324294242952429624297242982429924300243012430224303243042430524306243072430824309243102431124312243132431424315243162431724318243192432024321243222432324324243252432624327243282432924330243312433224333243342433524336243372433824339243402434124342243432434424345243462434724348243492435024351243522435324354243552435624357243582435924360243612436224363243642436524366243672436824369243702437124372243732437424375243762437724378243792438024381243822438324384243852438624387243882438924390243912439224393243942439524396243972439824399244002440124402244032440424405244062440724408244092441024411244122441324414244152441624417244182441924420244212442224423244242442524426244272442824429244302443124432244332443424435244362443724438244392444024441244422444324444244452444624447244482444924450244512445224453244542445524456244572445824459244602446124462244632446424465244662446724468244692447024471244722447324474244752447624477244782447924480244812448224483244842448524486244872448824489244902449124492244932449424495244962449724498244992450024501245022450324504245052450624507245082450924510245112451224513245142451524516245172451824519245202452124522245232452424525245262452724528245292453024531245322453324534245352453624537245382453924540245412454224543245442454524546245472454824549245502455124552245532455424555245562455724558245592456024561245622456324564245652456624567245682456924570245712457224573245742457524576245772457824579245802458124582245832458424585245862458724588245892459024591245922459324594245952459624597245982459924600246012460224603246042460524606246072460824609246102461124612246132461424615246162461724618246192462024621246222462324624246252462624627246282462924630246312463224633246342463524636246372463824639246402464124642246432464424645246462464724648246492465024651246522465324654246552465624657246582465924660246612466224663246642466524666246672466824669246702467124672246732467424675246762467724678246792468024681246822468324684246852468624687246882468924690246912469224693246942469524696246972469824699247002470124702247032470424705247062470724708247092471024711247122471324714247152471624717247182471924720247212472224723247242472524726247272472824729247302473124732247332473424735247362473724738247392474024741247422474324744247452474624747247482474924750247512475224753247542475524756247572475824759247602476124762247632476424765247662476724768247692477024771247722477324774247752477624777247782477924780247812478224783247842478524786247872478824789247902479124792247932479424795247962479724798247992480024801248022480324804248052480624807248082480924810248112481224813248142481524816248172481824819248202482124822248232482424825248262482724828248292483024831248322483324834248352483624837248382483924840248412484224843248442484524846248472484824849248502485124852248532485424855248562485724858248592486024861248622486324864248652486624867248682486924870248712487224873248742487524876248772487824879248802488124882248832488424885248862488724888248892489024891248922489324894248952489624897248982489924900249012490224903249042490524906249072490824909249102491124912249132491424915249162491724918249192492024921249222492324924249252492624927249282492924930249312493224933249342493524936249372493824939249402494124942249432494424945249462494724948249492495024951249522495324954249552495624957249582495924960249612496224963249642496524966249672496824969249702497124972249732497424975249762497724978249792498024981249822498324984249852498624987249882498924990249912499224993249942499524996249972499824999250002500125002250032500425005250062500725008250092501025011250122501325014250152501625017250182501925020250212502225023250242502525026250272502825029250302503125032250332503425035250362503725038250392504025041250422504325044250452504625047250482504925050250512505225053250542505525056250572505825059250602506125062250632506425065250662506725068250692507025071250722507325074250752507625077250782507925080250812508225083250842508525086250872508825089250902509125092250932509425095250962509725098250992510025101251022510325104251052510625107251082510925110251112511225113251142511525116251172511825119251202512125122251232512425125251262512725128251292513025131251322513325134251352513625137251382513925140251412514225143251442514525146251472514825149251502515125152251532515425155251562515725158251592516025161251622516325164251652516625167251682516925170251712517225173251742517525176251772517825179251802518125182251832518425185251862518725188251892519025191251922519325194251952519625197251982519925200252012520225203252042520525206252072520825209252102521125212252132521425215252162521725218252192522025221252222522325224252252522625227252282522925230252312523225233252342523525236252372523825239252402524125242252432524425245252462524725248252492525025251252522525325254252552525625257252582525925260252612526225263252642526525266252672526825269252702527125272252732527425275252762527725278252792528025281252822528325284252852528625287252882528925290252912529225293252942529525296252972529825299253002530125302253032530425305253062530725308253092531025311253122531325314253152531625317253182531925320253212532225323253242532525326253272532825329253302533125332253332533425335253362533725338253392534025341253422534325344253452534625347253482534925350253512535225353253542535525356253572535825359253602536125362253632536425365253662536725368253692537025371253722537325374253752537625377253782537925380253812538225383253842538525386253872538825389253902539125392253932539425395253962539725398253992540025401254022540325404254052540625407254082540925410254112541225413254142541525416254172541825419254202542125422254232542425425254262542725428254292543025431254322543325434254352543625437254382543925440254412544225443254442544525446254472544825449254502545125452254532545425455254562545725458254592546025461254622546325464254652546625467254682546925470254712547225473254742547525476254772547825479254802548125482254832548425485254862548725488254892549025491254922549325494254952549625497254982549925500255012550225503255042550525506255072550825509255102551125512255132551425515255162551725518255192552025521255222552325524255252552625527255282552925530255312553225533255342553525536255372553825539255402554125542255432554425545255462554725548255492555025551255522555325554255552555625557255582555925560255612556225563255642556525566255672556825569255702557125572255732557425575255762557725578255792558025581255822558325584255852558625587255882558925590255912559225593255942559525596255972559825599256002560125602256032560425605256062560725608256092561025611256122561325614256152561625617256182561925620256212562225623256242562525626256272562825629256302563125632256332563425635256362563725638256392564025641256422564325644256452564625647256482564925650256512565225653256542565525656256572565825659256602566125662256632566425665256662566725668256692567025671256722567325674256752567625677256782567925680256812568225683256842568525686256872568825689256902569125692256932569425695256962569725698256992570025701257022570325704257052570625707257082570925710257112571225713257142571525716257172571825719257202572125722257232572425725257262572725728257292573025731257322573325734257352573625737257382573925740257412574225743257442574525746257472574825749257502575125752257532575425755257562575725758257592576025761257622576325764257652576625767257682576925770257712577225773257742577525776257772577825779257802578125782257832578425785257862578725788257892579025791257922579325794257952579625797257982579925800258012580225803258042580525806258072580825809258102581125812258132581425815258162581725818258192582025821258222582325824258252582625827258282582925830258312583225833258342583525836258372583825839258402584125842258432584425845258462584725848258492585025851258522585325854258552585625857258582585925860258612586225863258642586525866258672586825869258702587125872258732587425875258762587725878258792588025881258822588325884258852588625887258882588925890258912589225893258942589525896258972589825899259002590125902259032590425905259062590725908259092591025911259122591325914259152591625917259182591925920259212592225923259242592525926259272592825929259302593125932259332593425935259362593725938259392594025941259422594325944259452594625947259482594925950259512595225953259542595525956259572595825959259602596125962259632596425965259662596725968259692597025971259722597325974259752597625977259782597925980259812598225983259842598525986259872598825989259902599125992259932599425995259962599725998259992600026001260022600326004260052600626007260082600926010260112601226013260142601526016260172601826019260202602126022260232602426025260262602726028260292603026031260322603326034260352603626037260382603926040260412604226043260442604526046260472604826049260502605126052260532605426055260562605726058260592606026061260622606326064260652606626067260682606926070260712607226073260742607526076260772607826079260802608126082260832608426085260862608726088260892609026091260922609326094260952609626097260982609926100261012610226103261042610526106261072610826109261102611126112261132611426115261162611726118261192612026121261222612326124261252612626127261282612926130261312613226133261342613526136261372613826139261402614126142261432614426145261462614726148261492615026151261522615326154261552615626157261582615926160261612616226163261642616526166261672616826169261702617126172261732617426175261762617726178261792618026181261822618326184261852618626187261882618926190261912619226193261942619526196261972619826199262002620126202262032620426205262062620726208262092621026211262122621326214262152621626217262182621926220262212622226223262242622526226262272622826229262302623126232262332623426235262362623726238262392624026241262422624326244262452624626247262482624926250262512625226253262542625526256262572625826259262602626126262262632626426265262662626726268262692627026271262722627326274262752627626277262782627926280262812628226283262842628526286262872628826289262902629126292262932629426295262962629726298262992630026301263022630326304263052630626307263082630926310263112631226313263142631526316263172631826319263202632126322263232632426325263262632726328263292633026331263322633326334263352633626337263382633926340263412634226343263442634526346263472634826349263502635126352263532635426355263562635726358263592636026361263622636326364263652636626367263682636926370263712637226373263742637526376263772637826379263802638126382263832638426385263862638726388263892639026391263922639326394263952639626397263982639926400264012640226403264042640526406264072640826409264102641126412264132641426415264162641726418264192642026421264222642326424264252642626427264282642926430264312643226433264342643526436264372643826439264402644126442264432644426445264462644726448264492645026451264522645326454264552645626457264582645926460264612646226463264642646526466264672646826469264702647126472264732647426475264762647726478264792648026481264822648326484264852648626487264882648926490264912649226493264942649526496264972649826499265002650126502265032650426505265062650726508265092651026511265122651326514265152651626517265182651926520265212652226523265242652526526265272652826529265302653126532265332653426535265362653726538265392654026541265422654326544265452654626547265482654926550265512655226553265542655526556265572655826559265602656126562265632656426565265662656726568265692657026571265722657326574265752657626577265782657926580265812658226583265842658526586265872658826589265902659126592265932659426595265962659726598265992660026601266022660326604266052660626607266082660926610266112661226613266142661526616266172661826619266202662126622266232662426625266262662726628266292663026631266322663326634266352663626637266382663926640266412664226643266442664526646266472664826649266502665126652266532665426655266562665726658266592666026661266622666326664266652666626667266682666926670266712667226673266742667526676266772667826679266802668126682266832668426685266862668726688266892669026691266922669326694266952669626697266982669926700267012670226703267042670526706267072670826709267102671126712267132671426715267162671726718267192672026721267222672326724267252672626727267282672926730267312673226733267342673526736267372673826739267402674126742267432674426745267462674726748267492675026751267522675326754267552675626757267582675926760267612676226763267642676526766267672676826769267702677126772267732677426775267762677726778267792678026781267822678326784267852678626787267882678926790267912679226793267942679526796267972679826799268002680126802268032680426805268062680726808268092681026811268122681326814268152681626817268182681926820268212682226823268242682526826268272682826829268302683126832268332683426835268362683726838268392684026841268422684326844268452684626847268482684926850268512685226853268542685526856268572685826859268602686126862268632686426865268662686726868268692687026871268722687326874268752687626877268782687926880268812688226883268842688526886268872688826889268902689126892268932689426895268962689726898268992690026901269022690326904269052690626907269082690926910269112691226913269142691526916269172691826919269202692126922269232692426925269262692726928269292693026931269322693326934269352693626937269382693926940269412694226943269442694526946269472694826949269502695126952269532695426955269562695726958269592696026961269622696326964269652696626967269682696926970269712697226973269742697526976269772697826979269802698126982269832698426985269862698726988269892699026991269922699326994269952699626997269982699927000270012700227003270042700527006270072700827009270102701127012270132701427015270162701727018270192702027021270222702327024270252702627027270282702927030270312703227033270342703527036270372703827039270402704127042270432704427045270462704727048270492705027051270522705327054270552705627057270582705927060270612706227063270642706527066270672706827069270702707127072270732707427075270762707727078270792708027081270822708327084270852708627087270882708927090270912709227093270942709527096270972709827099271002710127102271032710427105271062710727108271092711027111271122711327114271152711627117271182711927120271212712227123271242712527126271272712827129271302713127132271332713427135271362713727138271392714027141271422714327144271452714627147271482714927150271512715227153271542715527156271572715827159271602716127162271632716427165271662716727168271692717027171271722717327174271752717627177271782717927180271812718227183271842718527186271872718827189271902719127192271932719427195271962719727198271992720027201272022720327204272052720627207272082720927210272112721227213272142721527216272172721827219272202722127222272232722427225272262722727228272292723027231272322723327234272352723627237272382723927240272412724227243272442724527246272472724827249272502725127252272532725427255272562725727258272592726027261272622726327264272652726627267272682726927270272712727227273272742727527276272772727827279272802728127282272832728427285272862728727288272892729027291272922729327294272952729627297272982729927300273012730227303273042730527306273072730827309273102731127312273132731427315273162731727318273192732027321273222732327324273252732627327273282732927330273312733227333273342733527336273372733827339273402734127342273432734427345273462734727348273492735027351273522735327354273552735627357273582735927360273612736227363273642736527366273672736827369273702737127372273732737427375273762737727378273792738027381273822738327384273852738627387273882738927390273912739227393273942739527396273972739827399274002740127402274032740427405274062740727408274092741027411274122741327414274152741627417274182741927420274212742227423274242742527426274272742827429274302743127432274332743427435274362743727438274392744027441274422744327444274452744627447274482744927450274512745227453274542745527456274572745827459274602746127462274632746427465274662746727468274692747027471274722747327474274752747627477274782747927480274812748227483274842748527486274872748827489274902749127492274932749427495274962749727498274992750027501275022750327504275052750627507275082750927510275112751227513275142751527516275172751827519275202752127522275232752427525275262752727528275292753027531275322753327534275352753627537275382753927540275412754227543275442754527546275472754827549275502755127552275532755427555275562755727558275592756027561275622756327564275652756627567275682756927570275712757227573275742757527576275772757827579275802758127582275832758427585275862758727588275892759027591275922759327594275952759627597275982759927600276012760227603276042760527606276072760827609276102761127612276132761427615276162761727618276192762027621276222762327624276252762627627276282762927630276312763227633276342763527636276372763827639276402764127642276432764427645276462764727648276492765027651276522765327654276552765627657276582765927660276612766227663276642766527666276672766827669276702767127672276732767427675276762767727678276792768027681276822768327684276852768627687276882768927690276912769227693276942769527696276972769827699277002770127702277032770427705277062770727708277092771027711277122771327714277152771627717277182771927720277212772227723277242772527726277272772827729277302773127732277332773427735277362773727738277392774027741277422774327744277452774627747277482774927750277512775227753277542775527756277572775827759277602776127762277632776427765277662776727768277692777027771277722777327774277752777627777277782777927780277812778227783277842778527786277872778827789277902779127792277932779427795277962779727798277992780027801278022780327804278052780627807278082780927810278112781227813278142781527816278172781827819278202782127822278232782427825278262782727828278292783027831278322783327834278352783627837278382783927840278412784227843278442784527846278472784827849278502785127852278532785427855278562785727858278592786027861278622786327864278652786627867278682786927870278712787227873278742787527876278772787827879278802788127882278832788427885278862788727888278892789027891278922789327894278952789627897278982789927900279012790227903279042790527906279072790827909279102791127912279132791427915279162791727918279192792027921279222792327924279252792627927279282792927930279312793227933279342793527936279372793827939279402794127942279432794427945279462794727948279492795027951279522795327954279552795627957279582795927960279612796227963279642796527966279672796827969279702797127972279732797427975279762797727978279792798027981279822798327984279852798627987279882798927990279912799227993279942799527996279972799827999280002800128002280032800428005280062800728008280092801028011280122801328014280152801628017280182801928020280212802228023280242802528026280272802828029280302803128032280332803428035280362803728038280392804028041280422804328044280452804628047280482804928050280512805228053280542805528056280572805828059280602806128062280632806428065280662806728068280692807028071280722807328074280752807628077280782807928080280812808228083280842808528086280872808828089280902809128092280932809428095280962809728098280992810028101281022810328104281052810628107281082810928110281112811228113281142811528116281172811828119281202812128122281232812428125281262812728128281292813028131281322813328134281352813628137281382813928140281412814228143281442814528146281472814828149281502815128152281532815428155281562815728158281592816028161281622816328164281652816628167281682816928170281712817228173281742817528176281772817828179281802818128182281832818428185281862818728188281892819028191281922819328194281952819628197281982819928200282012820228203282042820528206282072820828209282102821128212282132821428215282162821728218282192822028221282222822328224282252822628227282282822928230282312823228233282342823528236282372823828239282402824128242282432824428245282462824728248282492825028251282522825328254282552825628257282582825928260282612826228263282642826528266282672826828269282702827128272282732827428275282762827728278282792828028281282822828328284282852828628287282882828928290282912829228293282942829528296282972829828299283002830128302283032830428305283062830728308283092831028311283122831328314283152831628317283182831928320283212832228323283242832528326283272832828329283302833128332283332833428335283362833728338283392834028341283422834328344283452834628347283482834928350283512835228353283542835528356283572835828359283602836128362283632836428365283662836728368283692837028371283722837328374283752837628377283782837928380283812838228383283842838528386283872838828389283902839128392283932839428395283962839728398283992840028401284022840328404284052840628407284082840928410284112841228413284142841528416284172841828419284202842128422284232842428425284262842728428284292843028431284322843328434284352843628437284382843928440284412844228443284442844528446284472844828449284502845128452284532845428455284562845728458284592846028461284622846328464284652846628467284682846928470284712847228473284742847528476284772847828479284802848128482284832848428485284862848728488284892849028491284922849328494284952849628497284982849928500285012850228503285042850528506285072850828509285102851128512285132851428515285162851728518285192852028521285222852328524285252852628527285282852928530285312853228533285342853528536285372853828539285402854128542285432854428545285462854728548285492855028551285522855328554285552855628557285582855928560285612856228563285642856528566285672856828569285702857128572285732857428575285762857728578285792858028581285822858328584285852858628587285882858928590285912859228593285942859528596285972859828599286002860128602286032860428605286062860728608286092861028611286122861328614286152861628617286182861928620286212862228623286242862528626286272862828629286302863128632286332863428635286362863728638286392864028641286422864328644286452864628647286482864928650286512865228653286542865528656286572865828659286602866128662286632866428665286662866728668286692867028671286722867328674286752867628677286782867928680286812868228683286842868528686286872868828689286902869128692286932869428695286962869728698286992870028701287022870328704287052870628707287082870928710287112871228713287142871528716287172871828719287202872128722287232872428725287262872728728287292873028731287322873328734287352873628737287382873928740287412874228743287442874528746287472874828749287502875128752287532875428755287562875728758287592876028761287622876328764287652876628767287682876928770287712877228773287742877528776287772877828779287802878128782287832878428785287862878728788287892879028791287922879328794287952879628797287982879928800288012880228803288042880528806288072880828809288102881128812288132881428815288162881728818288192882028821288222882328824288252882628827288282882928830288312883228833288342883528836288372883828839288402884128842288432884428845288462884728848288492885028851288522885328854288552885628857288582885928860288612886228863288642886528866288672886828869288702887128872288732887428875288762887728878288792888028881288822888328884288852888628887288882888928890288912889228893288942889528896288972889828899289002890128902289032890428905289062890728908289092891028911289122891328914289152891628917289182891928920289212892228923289242892528926289272892828929289302893128932289332893428935289362893728938289392894028941289422894328944289452894628947289482894928950289512895228953289542895528956289572895828959289602896128962289632896428965289662896728968289692897028971289722897328974289752897628977289782897928980289812898228983289842898528986289872898828989289902899128992289932899428995289962899728998289992900029001290022900329004290052900629007290082900929010290112901229013290142901529016290172901829019290202902129022290232902429025290262902729028290292903029031290322903329034290352903629037290382903929040290412904229043290442904529046290472904829049290502905129052290532905429055290562905729058290592906029061290622906329064290652906629067290682906929070290712907229073290742907529076290772907829079290802908129082290832908429085290862908729088290892909029091290922909329094290952909629097290982909929100291012910229103291042910529106291072910829109291102911129112291132911429115291162911729118291192912029121291222912329124291252912629127291282912929130291312913229133291342913529136291372913829139291402914129142291432914429145291462914729148291492915029151291522915329154291552915629157291582915929160291612916229163291642916529166291672916829169291702917129172291732917429175291762917729178291792918029181291822918329184291852918629187291882918929190291912919229193291942919529196291972919829199292002920129202292032920429205292062920729208292092921029211292122921329214292152921629217292182921929220292212922229223292242922529226292272922829229292302923129232292332923429235292362923729238292392924029241292422924329244292452924629247292482924929250292512925229253292542925529256292572925829259292602926129262292632926429265292662926729268292692927029271292722927329274292752927629277292782927929280292812928229283292842928529286292872928829289292902929129292292932929429295292962929729298292992930029301293022930329304293052930629307293082930929310293112931229313293142931529316293172931829319293202932129322293232932429325293262932729328293292933029331293322933329334293352933629337293382933929340293412934229343293442934529346293472934829349293502935129352293532935429355293562935729358293592936029361293622936329364293652936629367293682936929370293712937229373293742937529376293772937829379293802938129382293832938429385293862938729388293892939029391293922939329394293952939629397293982939929400294012940229403294042940529406294072940829409294102941129412294132941429415294162941729418294192942029421294222942329424294252942629427294282942929430294312943229433294342943529436294372943829439294402944129442294432944429445294462944729448294492945029451294522945329454294552945629457294582945929460294612946229463294642946529466294672946829469294702947129472294732947429475294762947729478294792948029481294822948329484294852948629487294882948929490294912949229493294942949529496294972949829499295002950129502295032950429505295062950729508295092951029511295122951329514295152951629517295182951929520295212952229523295242952529526295272952829529295302953129532295332953429535295362953729538295392954029541295422954329544295452954629547295482954929550295512955229553295542955529556295572955829559295602956129562295632956429565295662956729568295692957029571295722957329574295752957629577295782957929580295812958229583295842958529586295872958829589295902959129592295932959429595295962959729598295992960029601296022960329604296052960629607296082960929610296112961229613296142961529616296172961829619296202962129622296232962429625296262962729628296292963029631296322963329634296352963629637296382963929640296412964229643296442964529646296472964829649296502965129652296532965429655296562965729658296592966029661296622966329664296652966629667296682966929670296712967229673296742967529676296772967829679296802968129682296832968429685296862968729688296892969029691296922969329694296952969629697296982969929700297012970229703297042970529706297072970829709297102971129712297132971429715297162971729718297192972029721297222972329724297252972629727297282972929730297312973229733297342973529736297372973829739297402974129742297432974429745297462974729748297492975029751297522975329754297552975629757297582975929760297612976229763297642976529766297672976829769297702977129772297732977429775297762977729778297792978029781297822978329784297852978629787297882978929790297912979229793297942979529796297972979829799298002980129802298032980429805298062980729808298092981029811298122981329814298152981629817298182981929820298212982229823298242982529826298272982829829298302983129832298332983429835298362983729838298392984029841298422984329844298452984629847298482984929850298512985229853298542985529856298572985829859298602986129862298632986429865298662986729868298692987029871298722987329874298752987629877298782987929880298812988229883298842988529886298872988829889298902989129892298932989429895298962989729898298992990029901299022990329904299052990629907299082990929910299112991229913299142991529916299172991829919299202992129922299232992429925299262992729928299292993029931299322993329934299352993629937299382993929940299412994229943299442994529946299472994829949299502995129952299532995429955299562995729958299592996029961299622996329964299652996629967299682996929970299712997229973299742997529976299772997829979299802998129982299832998429985299862998729988299892999029991299922999329994299952999629997299982999930000300013000230003300043000530006300073000830009300103001130012300133001430015300163001730018300193002030021300223002330024300253002630027300283002930030300313003230033300343003530036300373003830039300403004130042300433004430045300463004730048300493005030051300523005330054300553005630057300583005930060300613006230063300643006530066300673006830069300703007130072300733007430075300763007730078300793008030081300823008330084300853008630087300883008930090300913009230093300943009530096300973009830099301003010130102301033010430105301063010730108301093011030111301123011330114301153011630117301183011930120301213012230123301243012530126301273012830129301303013130132301333013430135301363013730138301393014030141301423014330144301453014630147301483014930150301513015230153301543015530156301573015830159301603016130162301633016430165301663016730168301693017030171301723017330174301753017630177301783017930180301813018230183301843018530186301873018830189301903019130192301933019430195301963019730198301993020030201302023020330204302053020630207302083020930210302113021230213302143021530216302173021830219302203022130222302233022430225302263022730228302293023030231302323023330234302353023630237302383023930240302413024230243302443024530246302473024830249302503025130252302533025430255302563025730258302593026030261302623026330264302653026630267302683026930270302713027230273302743027530276302773027830279302803028130282302833028430285302863028730288302893029030291302923029330294302953029630297302983029930300303013030230303303043030530306303073030830309303103031130312303133031430315303163031730318303193032030321303223032330324303253032630327303283032930330303313033230333303343033530336303373033830339303403034130342303433034430345303463034730348303493035030351303523035330354303553035630357303583035930360303613036230363303643036530366303673036830369303703037130372303733037430375303763037730378303793038030381303823038330384303853038630387303883038930390303913039230393303943039530396303973039830399304003040130402304033040430405304063040730408304093041030411304123041330414304153041630417304183041930420304213042230423304243042530426304273042830429304303043130432304333043430435304363043730438304393044030441304423044330444304453044630447304483044930450304513045230453304543045530456304573045830459304603046130462304633046430465304663046730468304693047030471304723047330474304753047630477304783047930480304813048230483304843048530486304873048830489304903049130492304933049430495304963049730498304993050030501305023050330504305053050630507305083050930510305113051230513305143051530516305173051830519305203052130522305233052430525305263052730528305293053030531305323053330534305353053630537305383053930540305413054230543305443054530546305473054830549305503055130552305533055430555305563055730558305593056030561305623056330564305653056630567305683056930570305713057230573305743057530576305773057830579305803058130582305833058430585305863058730588305893059030591305923059330594305953059630597305983059930600306013060230603306043060530606306073060830609306103061130612306133061430615306163061730618306193062030621306223062330624306253062630627306283062930630306313063230633306343063530636306373063830639306403064130642306433064430645306463064730648306493065030651306523065330654306553065630657306583065930660306613066230663306643066530666306673066830669306703067130672306733067430675306763067730678306793068030681306823068330684306853068630687306883068930690306913069230693306943069530696306973069830699307003070130702307033070430705307063070730708307093071030711307123071330714307153071630717307183071930720307213072230723307243072530726307273072830729307303073130732307333073430735307363073730738307393074030741307423074330744307453074630747307483074930750307513075230753307543075530756307573075830759307603076130762307633076430765307663076730768307693077030771307723077330774307753077630777307783077930780307813078230783307843078530786307873078830789307903079130792307933079430795307963079730798307993080030801308023080330804308053080630807308083080930810308113081230813308143081530816308173081830819308203082130822308233082430825308263082730828308293083030831308323083330834308353083630837308383083930840308413084230843308443084530846308473084830849308503085130852308533085430855308563085730858308593086030861308623086330864308653086630867308683086930870308713087230873308743087530876308773087830879308803088130882308833088430885308863088730888308893089030891308923089330894308953089630897308983089930900309013090230903309043090530906309073090830909309103091130912309133091430915309163091730918309193092030921309223092330924309253092630927309283092930930309313093230933309343093530936309373093830939309403094130942309433094430945309463094730948309493095030951309523095330954309553095630957309583095930960309613096230963309643096530966309673096830969309703097130972309733097430975309763097730978309793098030981309823098330984309853098630987309883098930990309913099230993309943099530996309973099830999310003100131002310033100431005310063100731008310093101031011310123101331014310153101631017310183101931020310213102231023310243102531026310273102831029310303103131032310333103431035310363103731038310393104031041310423104331044310453104631047310483104931050310513105231053310543105531056310573105831059310603106131062310633106431065310663106731068310693107031071310723107331074310753107631077310783107931080310813108231083310843108531086310873108831089310903109131092310933109431095310963109731098310993110031101311023110331104311053110631107311083110931110311113111231113311143111531116311173111831119311203112131122311233112431125311263112731128311293113031131311323113331134311353113631137311383113931140311413114231143311443114531146311473114831149311503115131152311533115431155311563115731158311593116031161311623116331164311653116631167311683116931170311713117231173311743117531176311773117831179311803118131182311833118431185311863118731188311893119031191311923119331194311953119631197311983119931200312013120231203312043120531206312073120831209312103121131212312133121431215312163121731218312193122031221312223122331224312253122631227312283122931230312313123231233312343123531236312373123831239312403124131242312433124431245312463124731248312493125031251312523125331254312553125631257312583125931260312613126231263312643126531266312673126831269312703127131272312733127431275312763127731278312793128031281312823128331284312853128631287312883128931290312913129231293312943129531296312973129831299313003130131302313033130431305313063130731308313093131031311313123131331314313153131631317313183131931320313213132231323313243132531326313273132831329313303133131332313333133431335313363133731338313393134031341313423134331344313453134631347313483134931350313513135231353313543135531356313573135831359313603136131362313633136431365313663136731368313693137031371313723137331374313753137631377313783137931380313813138231383313843138531386313873138831389313903139131392313933139431395313963139731398313993140031401314023140331404314053140631407314083140931410314113141231413314143141531416314173141831419314203142131422314233142431425314263142731428314293143031431314323143331434314353143631437314383143931440314413144231443314443144531446314473144831449314503145131452314533145431455314563145731458314593146031461314623146331464314653146631467314683146931470314713147231473314743147531476314773147831479314803148131482314833148431485314863148731488314893149031491314923149331494314953149631497314983149931500315013150231503315043150531506315073150831509315103151131512315133151431515315163151731518315193152031521315223152331524315253152631527315283152931530315313153231533315343153531536315373153831539315403154131542315433154431545315463154731548315493155031551315523155331554315553155631557315583155931560315613156231563315643156531566315673156831569315703157131572315733157431575315763157731578315793158031581315823158331584315853158631587315883158931590315913159231593315943159531596315973159831599316003160131602316033160431605316063160731608316093161031611316123161331614316153161631617316183161931620316213162231623316243162531626316273162831629316303163131632316333163431635316363163731638316393164031641316423164331644316453164631647316483164931650316513165231653316543165531656316573165831659316603166131662316633166431665316663166731668316693167031671316723167331674316753167631677316783167931680316813168231683316843168531686316873168831689316903169131692316933169431695316963169731698316993170031701317023170331704317053170631707317083170931710317113171231713317143171531716317173171831719317203172131722317233172431725317263172731728317293173031731317323173331734317353173631737317383173931740317413174231743317443174531746317473174831749317503175131752317533175431755317563175731758317593176031761317623176331764317653176631767317683176931770317713177231773317743177531776317773177831779317803178131782317833178431785317863178731788317893179031791317923179331794317953179631797317983179931800318013180231803318043180531806318073180831809318103181131812318133181431815318163181731818318193182031821318223182331824318253182631827318283182931830318313183231833318343183531836318373183831839318403184131842318433184431845318463184731848318493185031851318523185331854318553185631857318583185931860318613186231863318643186531866318673186831869318703187131872318733187431875318763187731878318793188031881318823188331884318853188631887318883188931890318913189231893318943189531896318973189831899319003190131902319033190431905319063190731908319093191031911319123191331914319153191631917319183191931920319213192231923319243192531926319273192831929319303193131932319333193431935319363193731938319393194031941319423194331944319453194631947319483194931950319513195231953319543195531956319573195831959319603196131962319633196431965319663196731968319693197031971319723197331974319753197631977319783197931980319813198231983319843198531986319873198831989319903199131992319933199431995319963199731998319993200032001320023200332004320053200632007320083200932010320113201232013320143201532016320173201832019320203202132022320233202432025320263202732028320293203032031320323203332034320353203632037320383203932040320413204232043320443204532046320473204832049320503205132052320533205432055320563205732058320593206032061320623206332064320653206632067320683206932070320713207232073320743207532076320773207832079320803208132082320833208432085320863208732088320893209032091320923209332094320953209632097320983209932100321013210232103321043210532106321073210832109321103211132112321133211432115321163211732118321193212032121321223212332124321253212632127321283212932130321313213232133321343213532136321373213832139321403214132142321433214432145321463214732148321493215032151321523215332154321553215632157321583215932160321613216232163321643216532166321673216832169321703217132172321733217432175321763217732178321793218032181321823218332184321853218632187321883218932190321913219232193321943219532196321973219832199322003220132202322033220432205322063220732208322093221032211322123221332214322153221632217322183221932220322213222232223322243222532226322273222832229322303223132232322333223432235322363223732238322393224032241322423224332244322453224632247322483224932250322513225232253322543225532256322573225832259322603226132262322633226432265322663226732268322693227032271322723227332274322753227632277322783227932280322813228232283322843228532286322873228832289322903229132292322933229432295322963229732298322993230032301323023230332304323053230632307323083230932310323113231232313323143231532316323173231832319323203232132322323233232432325323263232732328323293233032331323323233332334323353233632337323383233932340323413234232343323443234532346323473234832349323503235132352323533235432355323563235732358323593236032361323623236332364323653236632367323683236932370323713237232373323743237532376323773237832379323803238132382323833238432385323863238732388323893239032391323923239332394323953239632397323983239932400324013240232403324043240532406324073240832409324103241132412324133241432415324163241732418324193242032421324223242332424324253242632427324283242932430324313243232433324343243532436324373243832439324403244132442324433244432445324463244732448324493245032451324523245332454324553245632457324583245932460324613246232463324643246532466324673246832469324703247132472324733247432475324763247732478324793248032481324823248332484324853248632487324883248932490324913249232493324943249532496324973249832499325003250132502325033250432505325063250732508325093251032511325123251332514325153251632517325183251932520325213252232523325243252532526325273252832529325303253132532325333253432535325363253732538325393254032541325423254332544325453254632547325483254932550325513255232553325543255532556325573255832559325603256132562325633256432565325663256732568325693257032571325723257332574325753257632577325783257932580325813258232583325843258532586325873258832589325903259132592325933259432595325963259732598325993260032601326023260332604326053260632607326083260932610326113261232613326143261532616326173261832619326203262132622326233262432625326263262732628326293263032631326323263332634326353263632637326383263932640326413264232643326443264532646326473264832649326503265132652326533265432655326563265732658326593266032661326623266332664326653266632667326683266932670326713267232673326743267532676326773267832679326803268132682326833268432685326863268732688326893269032691326923269332694326953269632697326983269932700327013270232703327043270532706327073270832709327103271132712327133271432715327163271732718327193272032721327223272332724327253272632727327283272932730327313273232733327343273532736327373273832739327403274132742327433274432745327463274732748327493275032751327523275332754327553275632757327583275932760327613276232763327643276532766327673276832769327703277132772327733277432775327763277732778327793278032781327823278332784327853278632787327883278932790327913279232793327943279532796327973279832799328003280132802328033280432805328063280732808328093281032811328123281332814328153281632817328183281932820328213282232823328243282532826328273282832829328303283132832328333283432835328363283732838328393284032841328423284332844328453284632847328483284932850328513285232853328543285532856328573285832859328603286132862328633286432865328663286732868328693287032871328723287332874328753287632877328783287932880328813288232883328843288532886328873288832889328903289132892328933289432895328963289732898328993290032901329023290332904329053290632907329083290932910329113291232913329143291532916329173291832919329203292132922329233292432925329263292732928329293293032931329323293332934329353293632937329383293932940329413294232943329443294532946329473294832949329503295132952329533295432955329563295732958329593296032961329623296332964329653296632967329683296932970329713297232973329743297532976329773297832979329803298132982329833298432985329863298732988329893299032991329923299332994329953299632997329983299933000330013300233003330043300533006330073300833009330103301133012330133301433015330163301733018330193302033021330223302333024330253302633027330283302933030330313303233033330343303533036330373303833039330403304133042330433304433045330463304733048330493305033051330523305333054330553305633057330583305933060330613306233063330643306533066330673306833069330703307133072330733307433075330763307733078330793308033081330823308333084330853308633087330883308933090330913309233093330943309533096330973309833099331003310133102331033310433105331063310733108331093311033111331123311333114331153311633117331183311933120331213312233123331243312533126331273312833129331303313133132331333313433135331363313733138331393314033141331423314333144331453314633147331483314933150331513315233153331543315533156331573315833159331603316133162331633316433165331663316733168331693317033171331723317333174331753317633177331783317933180331813318233183331843318533186331873318833189331903319133192331933319433195331963319733198331993320033201332023320333204332053320633207332083320933210332113321233213332143321533216332173321833219332203322133222332233322433225332263322733228332293323033231332323323333234332353323633237332383323933240332413324233243332443324533246332473324833249332503325133252332533325433255332563325733258332593326033261332623326333264332653326633267332683326933270332713327233273332743327533276332773327833279332803328133282332833328433285332863328733288332893329033291332923329333294332953329633297332983329933300333013330233303333043330533306333073330833309333103331133312333133331433315333163331733318333193332033321333223332333324333253332633327333283332933330333313333233333333343333533336333373333833339333403334133342333433334433345333463334733348333493335033351333523335333354333553335633357333583335933360333613336233363333643336533366333673336833369333703337133372333733337433375333763337733378333793338033381333823338333384333853338633387333883338933390333913339233393333943339533396333973339833399334003340133402334033340433405334063340733408334093341033411334123341333414334153341633417334183341933420334213342233423334243342533426334273342833429334303343133432334333343433435334363343733438334393344033441334423344333444334453344633447334483344933450334513345233453334543345533456334573345833459334603346133462334633346433465334663346733468334693347033471334723347333474334753347633477334783347933480334813348233483334843348533486334873348833489334903349133492334933349433495334963349733498334993350033501335023350333504335053350633507335083350933510335113351233513335143351533516335173351833519335203352133522335233352433525335263352733528335293353033531335323353333534335353353633537335383353933540335413354233543335443354533546335473354833549335503355133552335533355433555335563355733558335593356033561335623356333564335653356633567335683356933570335713357233573335743357533576335773357833579335803358133582335833358433585335863358733588335893359033591335923359333594335953359633597335983359933600336013360233603336043360533606336073360833609336103361133612336133361433615336163361733618336193362033621336223362333624336253362633627336283362933630336313363233633336343363533636336373363833639336403364133642336433364433645336463364733648336493365033651336523365333654336553365633657336583365933660336613366233663336643366533666336673366833669336703367133672336733367433675336763367733678336793368033681336823368333684336853368633687336883368933690336913369233693336943369533696336973369833699337003370133702337033370433705337063370733708337093371033711337123371333714337153371633717337183371933720337213372233723337243372533726337273372833729337303373133732337333373433735337363373733738337393374033741337423374333744337453374633747337483374933750337513375233753337543375533756337573375833759337603376133762337633376433765337663376733768337693377033771337723377333774337753377633777337783377933780337813378233783337843378533786337873378833789337903379133792337933379433795337963379733798337993380033801338023380333804338053380633807338083380933810338113381233813338143381533816338173381833819338203382133822338233382433825338263382733828338293383033831338323383333834338353383633837338383383933840338413384233843338443384533846338473384833849338503385133852338533385433855338563385733858338593386033861338623386333864338653386633867338683386933870338713387233873338743387533876338773387833879338803388133882338833388433885338863388733888338893389033891338923389333894338953389633897338983389933900339013390233903339043390533906339073390833909339103391133912339133391433915339163391733918339193392033921339223392333924339253392633927339283392933930339313393233933339343393533936339373393833939339403394133942339433394433945339463394733948339493395033951339523395333954339553395633957339583395933960339613396233963339643396533966339673396833969339703397133972339733397433975339763397733978339793398033981339823398333984339853398633987339883398933990339913399233993339943399533996339973399833999340003400134002340033400434005340063400734008340093401034011340123401334014340153401634017340183401934020340213402234023340243402534026340273402834029340303403134032340333403434035340363403734038340393404034041340423404334044340453404634047340483404934050340513405234053340543405534056340573405834059340603406134062340633406434065340663406734068340693407034071340723407334074340753407634077340783407934080340813408234083340843408534086340873408834089340903409134092340933409434095340963409734098340993410034101341023410334104341053410634107341083410934110341113411234113341143411534116341173411834119341203412134122341233412434125341263412734128341293413034131341323413334134341353413634137341383413934140341413414234143341443414534146341473414834149341503415134152341533415434155341563415734158341593416034161341623416334164341653416634167341683416934170341713417234173341743417534176341773417834179341803418134182341833418434185341863418734188341893419034191341923419334194341953419634197341983419934200342013420234203342043420534206342073420834209342103421134212342133421434215342163421734218342193422034221342223422334224342253422634227342283422934230342313423234233342343423534236342373423834239342403424134242342433424434245342463424734248342493425034251342523425334254342553425634257342583425934260342613426234263342643426534266342673426834269342703427134272342733427434275342763427734278342793428034281342823428334284342853428634287342883428934290342913429234293342943429534296342973429834299343003430134302343033430434305343063430734308343093431034311343123431334314343153431634317343183431934320343213432234323343243432534326343273432834329343303433134332343333433434335343363433734338343393434034341343423434334344343453434634347343483434934350343513435234353343543435534356343573435834359343603436134362343633436434365343663436734368343693437034371343723437334374343753437634377343783437934380343813438234383343843438534386343873438834389343903439134392343933439434395343963439734398343993440034401344023440334404344053440634407344083440934410344113441234413344143441534416344173441834419344203442134422344233442434425344263442734428344293443034431344323443334434344353443634437344383443934440344413444234443344443444534446344473444834449344503445134452344533445434455344563445734458344593446034461344623446334464344653446634467344683446934470344713447234473344743447534476344773447834479344803448134482344833448434485344863448734488344893449034491344923449334494344953449634497344983449934500345013450234503345043450534506345073450834509345103451134512345133451434515345163451734518345193452034521345223452334524345253452634527345283452934530345313453234533345343453534536345373453834539345403454134542345433454434545345463454734548345493455034551345523455334554345553455634557345583455934560345613456234563345643456534566345673456834569345703457134572345733457434575345763457734578345793458034581345823458334584345853458634587345883458934590345913459234593345943459534596345973459834599346003460134602346033460434605346063460734608346093461034611346123461334614346153461634617346183461934620346213462234623346243462534626346273462834629346303463134632346333463434635346363463734638346393464034641346423464334644346453464634647346483464934650346513465234653346543465534656346573465834659346603466134662346633466434665346663466734668346693467034671346723467334674346753467634677346783467934680346813468234683346843468534686346873468834689346903469134692346933469434695346963469734698346993470034701347023470334704347053470634707347083470934710347113471234713347143471534716347173471834719347203472134722347233472434725347263472734728347293473034731347323473334734347353473634737347383473934740347413474234743347443474534746347473474834749347503475134752347533475434755347563475734758347593476034761347623476334764347653476634767347683476934770347713477234773347743477534776347773477834779347803478134782347833478434785347863478734788347893479034791347923479334794347953479634797347983479934800348013480234803348043480534806348073480834809348103481134812348133481434815348163481734818348193482034821348223482334824348253482634827348283482934830348313483234833348343483534836348373483834839348403484134842348433484434845348463484734848348493485034851348523485334854348553485634857348583485934860348613486234863348643486534866348673486834869348703487134872348733487434875348763487734878348793488034881348823488334884348853488634887348883488934890348913489234893348943489534896348973489834899349003490134902349033490434905349063490734908349093491034911349123491334914349153491634917349183491934920349213492234923349243492534926349273492834929349303493134932349333493434935349363493734938349393494034941349423494334944349453494634947349483494934950349513495234953349543495534956349573495834959349603496134962349633496434965349663496734968349693497034971349723497334974349753497634977349783497934980349813498234983349843498534986349873498834989349903499134992349933499434995349963499734998349993500035001350023500335004350053500635007350083500935010350113501235013350143501535016350173501835019350203502135022350233502435025350263502735028350293503035031350323503335034350353503635037350383503935040350413504235043350443504535046350473504835049350503505135052350533505435055350563505735058350593506035061350623506335064350653506635067350683506935070350713507235073350743507535076350773507835079350803508135082350833508435085350863508735088350893509035091350923509335094350953509635097350983509935100351013510235103351043510535106351073510835109351103511135112351133511435115351163511735118351193512035121351223512335124351253512635127351283512935130351313513235133351343513535136351373513835139351403514135142351433514435145351463514735148351493515035151351523515335154351553515635157351583515935160351613516235163351643516535166351673516835169351703517135172351733517435175351763517735178351793518035181351823518335184351853518635187351883518935190351913519235193351943519535196351973519835199352003520135202352033520435205352063520735208352093521035211352123521335214352153521635217352183521935220352213522235223352243522535226352273522835229352303523135232352333523435235352363523735238352393524035241352423524335244352453524635247352483524935250352513525235253352543525535256352573525835259352603526135262352633526435265352663526735268352693527035271352723527335274352753527635277352783527935280352813528235283352843528535286352873528835289352903529135292352933529435295352963529735298352993530035301353023530335304353053530635307353083530935310353113531235313353143531535316353173531835319353203532135322353233532435325353263532735328353293533035331353323533335334353353533635337353383533935340353413534235343353443534535346353473534835349353503535135352353533535435355353563535735358353593536035361353623536335364353653536635367353683536935370353713537235373353743537535376353773537835379353803538135382353833538435385353863538735388353893539035391353923539335394353953539635397353983539935400354013540235403354043540535406354073540835409354103541135412354133541435415354163541735418354193542035421354223542335424354253542635427354283542935430354313543235433354343543535436354373543835439354403544135442354433544435445354463544735448354493545035451354523545335454354553545635457354583545935460354613546235463354643546535466354673546835469354703547135472354733547435475354763547735478354793548035481354823548335484354853548635487354883548935490354913549235493354943549535496354973549835499355003550135502355033550435505355063550735508355093551035511355123551335514355153551635517355183551935520355213552235523355243552535526355273552835529355303553135532355333553435535355363553735538355393554035541355423554335544355453554635547355483554935550355513555235553355543555535556355573555835559355603556135562355633556435565355663556735568355693557035571355723557335574355753557635577355783557935580355813558235583355843558535586355873558835589355903559135592355933559435595355963559735598355993560035601356023560335604356053560635607356083560935610356113561235613356143561535616356173561835619356203562135622356233562435625356263562735628356293563035631356323563335634356353563635637356383563935640356413564235643356443564535646356473564835649356503565135652356533565435655356563565735658356593566035661356623566335664356653566635667356683566935670356713567235673356743567535676356773567835679356803568135682356833568435685356863568735688356893569035691356923569335694356953569635697356983569935700357013570235703357043570535706357073570835709357103571135712357133571435715357163571735718357193572035721357223572335724357253572635727357283572935730357313573235733357343573535736357373573835739357403574135742357433574435745357463574735748357493575035751357523575335754357553575635757357583575935760357613576235763357643576535766357673576835769357703577135772357733577435775357763577735778357793578035781357823578335784357853578635787357883578935790357913579235793357943579535796357973579835799358003580135802358033580435805358063580735808358093581035811358123581335814358153581635817358183581935820358213582235823358243582535826358273582835829358303583135832358333583435835358363583735838358393584035841358423584335844358453584635847358483584935850358513585235853358543585535856358573585835859358603586135862358633586435865358663586735868358693587035871358723587335874358753587635877358783587935880358813588235883358843588535886358873588835889358903589135892358933589435895358963589735898358993590035901359023590335904359053590635907359083590935910359113591235913359143591535916359173591835919359203592135922359233592435925359263592735928359293593035931359323593335934359353593635937359383593935940359413594235943359443594535946359473594835949359503595135952359533595435955359563595735958359593596035961359623596335964359653596635967359683596935970359713597235973359743597535976359773597835979359803598135982359833598435985359863598735988359893599035991359923599335994359953599635997359983599936000360013600236003360043600536006360073600836009360103601136012360133601436015360163601736018360193602036021360223602336024360253602636027360283602936030360313603236033360343603536036360373603836039360403604136042360433604436045360463604736048360493605036051360523605336054360553605636057360583605936060360613606236063360643606536066360673606836069360703607136072360733607436075360763607736078360793608036081360823608336084360853608636087360883608936090360913609236093360943609536096360973609836099361003610136102361033610436105361063610736108361093611036111361123611336114361153611636117361183611936120361213612236123361243612536126361273612836129361303613136132361333613436135361363613736138361393614036141361423614336144361453614636147361483614936150361513615236153361543615536156361573615836159361603616136162361633616436165361663616736168361693617036171361723617336174361753617636177361783617936180361813618236183361843618536186361873618836189361903619136192361933619436195361963619736198361993620036201362023620336204362053620636207362083620936210362113621236213362143621536216362173621836219362203622136222362233622436225362263622736228362293623036231362323623336234362353623636237362383623936240362413624236243362443624536246362473624836249362503625136252362533625436255362563625736258362593626036261362623626336264362653626636267362683626936270362713627236273362743627536276362773627836279362803628136282362833628436285362863628736288362893629036291362923629336294362953629636297362983629936300363013630236303363043630536306363073630836309363103631136312363133631436315363163631736318363193632036321363223632336324363253632636327363283632936330363313633236333363343633536336363373633836339363403634136342363433634436345363463634736348363493635036351363523635336354363553635636357363583635936360363613636236363363643636536366363673636836369363703637136372363733637436375363763637736378363793638036381363823638336384363853638636387363883638936390363913639236393363943639536396363973639836399364003640136402364033640436405364063640736408364093641036411364123641336414364153641636417364183641936420364213642236423364243642536426364273642836429364303643136432364333643436435364363643736438364393644036441364423644336444364453644636447364483644936450364513645236453364543645536456364573645836459364603646136462364633646436465364663646736468364693647036471364723647336474364753647636477364783647936480364813648236483364843648536486364873648836489364903649136492364933649436495364963649736498364993650036501365023650336504365053650636507365083650936510365113651236513365143651536516365173651836519365203652136522365233652436525365263652736528365293653036531365323653336534365353653636537365383653936540365413654236543365443654536546365473654836549365503655136552365533655436555365563655736558365593656036561365623656336564365653656636567365683656936570365713657236573365743657536576365773657836579365803658136582365833658436585365863658736588365893659036591365923659336594365953659636597365983659936600366013660236603366043660536606366073660836609366103661136612366133661436615366163661736618366193662036621366223662336624366253662636627366283662936630366313663236633366343663536636366373663836639366403664136642366433664436645366463664736648366493665036651366523665336654366553665636657366583665936660366613666236663366643666536666366673666836669366703667136672366733667436675366763667736678366793668036681366823668336684366853668636687366883668936690366913669236693366943669536696366973669836699367003670136702367033670436705367063670736708367093671036711367123671336714367153671636717367183671936720367213672236723367243672536726367273672836729367303673136732367333673436735367363673736738367393674036741367423674336744367453674636747367483674936750367513675236753367543675536756367573675836759367603676136762367633676436765367663676736768367693677036771367723677336774367753677636777367783677936780367813678236783367843678536786367873678836789367903679136792367933679436795367963679736798367993680036801368023680336804368053680636807368083680936810368113681236813368143681536816368173681836819368203682136822368233682436825368263682736828368293683036831368323683336834368353683636837368383683936840368413684236843368443684536846368473684836849368503685136852368533685436855368563685736858368593686036861368623686336864368653686636867368683686936870368713687236873368743687536876368773687836879368803688136882368833688436885368863688736888368893689036891368923689336894368953689636897368983689936900369013690236903369043690536906369073690836909369103691136912369133691436915369163691736918369193692036921369223692336924369253692636927369283692936930369313693236933369343693536936369373693836939369403694136942369433694436945369463694736948369493695036951369523695336954369553695636957369583695936960369613696236963369643696536966369673696836969369703697136972369733697436975369763697736978369793698036981369823698336984369853698636987369883698936990369913699236993369943699536996369973699836999370003700137002370033700437005370063700737008370093701037011370123701337014370153701637017370183701937020370213702237023370243702537026370273702837029370303703137032370333703437035370363703737038370393704037041370423704337044370453704637047370483704937050370513705237053370543705537056370573705837059370603706137062370633706437065370663706737068370693707037071370723707337074370753707637077370783707937080370813708237083370843708537086370873708837089370903709137092370933709437095370963709737098370993710037101371023710337104371053710637107371083710937110371113711237113371143711537116371173711837119371203712137122371233712437125371263712737128371293713037131371323713337134371353713637137371383713937140371413714237143371443714537146371473714837149371503715137152371533715437155371563715737158371593716037161371623716337164371653716637167371683716937170371713717237173371743717537176371773717837179371803718137182371833718437185371863718737188371893719037191371923719337194371953719637197371983719937200372013720237203372043720537206372073720837209372103721137212372133721437215372163721737218372193722037221372223722337224372253722637227372283722937230372313723237233372343723537236372373723837239372403724137242372433724437245372463724737248372493725037251372523725337254372553725637257372583725937260372613726237263372643726537266372673726837269372703727137272372733727437275372763727737278372793728037281372823728337284372853728637287372883728937290372913729237293372943729537296372973729837299373003730137302373033730437305373063730737308373093731037311373123731337314373153731637317373183731937320373213732237323373243732537326373273732837329373303733137332373333733437335373363733737338373393734037341373423734337344373453734637347373483734937350373513735237353373543735537356373573735837359373603736137362373633736437365373663736737368373693737037371373723737337374373753737637377373783737937380373813738237383373843738537386373873738837389373903739137392373933739437395373963739737398373993740037401374023740337404374053740637407374083740937410374113741237413374143741537416374173741837419374203742137422374233742437425374263742737428374293743037431374323743337434374353743637437374383743937440374413744237443374443744537446374473744837449374503745137452374533745437455374563745737458374593746037461374623746337464374653746637467374683746937470374713747237473374743747537476374773747837479374803748137482374833748437485374863748737488374893749037491374923749337494374953749637497374983749937500375013750237503375043750537506375073750837509375103751137512375133751437515375163751737518375193752037521375223752337524375253752637527375283752937530375313753237533375343753537536375373753837539375403754137542375433754437545375463754737548375493755037551375523755337554375553755637557375583755937560375613756237563375643756537566375673756837569375703757137572375733757437575375763757737578375793758037581375823758337584375853758637587375883758937590375913759237593375943759537596375973759837599376003760137602376033760437605376063760737608376093761037611376123761337614376153761637617376183761937620376213762237623376243762537626376273762837629376303763137632376333763437635376363763737638376393764037641376423764337644376453764637647376483764937650376513765237653376543765537656376573765837659376603766137662376633766437665376663766737668376693767037671376723767337674376753767637677376783767937680376813768237683376843768537686376873768837689376903769137692376933769437695376963769737698376993770037701377023770337704377053770637707377083770937710377113771237713377143771537716377173771837719377203772137722377233772437725377263772737728377293773037731377323773337734377353773637737377383773937740377413774237743377443774537746377473774837749377503775137752377533775437755377563775737758377593776037761377623776337764377653776637767377683776937770377713777237773377743777537776377773777837779377803778137782377833778437785377863778737788377893779037791377923779337794377953779637797377983779937800378013780237803378043780537806378073780837809378103781137812378133781437815378163781737818378193782037821378223782337824378253782637827378283782937830378313783237833378343783537836378373783837839378403784137842378433784437845378463784737848378493785037851378523785337854378553785637857378583785937860378613786237863378643786537866378673786837869378703787137872378733787437875378763787737878378793788037881378823788337884378853788637887378883788937890378913789237893378943789537896378973789837899379003790137902379033790437905379063790737908379093791037911379123791337914379153791637917379183791937920379213792237923379243792537926379273792837929379303793137932379333793437935379363793737938379393794037941379423794337944379453794637947379483794937950379513795237953379543795537956379573795837959379603796137962379633796437965379663796737968379693797037971379723797337974379753797637977379783797937980379813798237983379843798537986379873798837989379903799137992379933799437995379963799737998379993800038001380023800338004380053800638007380083800938010380113801238013380143801538016380173801838019380203802138022380233802438025380263802738028380293803038031380323803338034380353803638037380383803938040380413804238043380443804538046380473804838049380503805138052380533805438055380563805738058380593806038061380623806338064380653806638067380683806938070380713807238073380743807538076380773807838079380803808138082380833808438085380863808738088380893809038091380923809338094380953809638097380983809938100381013810238103381043810538106381073810838109381103811138112381133811438115381163811738118381193812038121381223812338124381253812638127381283812938130381313813238133381343813538136381373813838139381403814138142381433814438145381463814738148381493815038151381523815338154381553815638157381583815938160381613816238163381643816538166381673816838169381703817138172381733817438175381763817738178381793818038181381823818338184381853818638187381883818938190381913819238193381943819538196381973819838199382003820138202382033820438205382063820738208382093821038211382123821338214382153821638217382183821938220382213822238223382243822538226382273822838229382303823138232382333823438235382363823738238382393824038241382423824338244382453824638247382483824938250382513825238253382543825538256382573825838259382603826138262382633826438265382663826738268382693827038271382723827338274382753827638277382783827938280382813828238283382843828538286382873828838289382903829138292382933829438295382963829738298382993830038301383023830338304383053830638307383083830938310383113831238313383143831538316383173831838319383203832138322383233832438325383263832738328383293833038331383323833338334383353833638337383383833938340383413834238343383443834538346383473834838349383503835138352383533835438355383563835738358383593836038361383623836338364383653836638367383683836938370383713837238373383743837538376383773837838379383803838138382383833838438385383863838738388383893839038391383923839338394383953839638397383983839938400384013840238403384043840538406384073840838409384103841138412384133841438415384163841738418384193842038421384223842338424384253842638427384283842938430384313843238433384343843538436384373843838439384403844138442384433844438445384463844738448384493845038451384523845338454384553845638457384583845938460384613846238463384643846538466384673846838469384703847138472384733847438475384763847738478384793848038481384823848338484384853848638487384883848938490384913849238493384943849538496384973849838499385003850138502385033850438505385063850738508385093851038511385123851338514385153851638517385183851938520385213852238523385243852538526385273852838529385303853138532385333853438535385363853738538385393854038541385423854338544385453854638547385483854938550385513855238553385543855538556385573855838559385603856138562385633856438565385663856738568385693857038571385723857338574385753857638577385783857938580385813858238583385843858538586385873858838589385903859138592385933859438595385963859738598385993860038601386023860338604386053860638607386083860938610386113861238613386143861538616386173861838619386203862138622386233862438625386263862738628386293863038631386323863338634386353863638637386383863938640386413864238643386443864538646386473864838649386503865138652386533865438655386563865738658386593866038661386623866338664386653866638667386683866938670386713867238673386743867538676386773867838679386803868138682386833868438685386863868738688386893869038691386923869338694386953869638697386983869938700387013870238703387043870538706387073870838709387103871138712387133871438715387163871738718387193872038721387223872338724387253872638727387283872938730387313873238733387343873538736387373873838739387403874138742387433874438745387463874738748387493875038751387523875338754387553875638757387583875938760387613876238763387643876538766387673876838769387703877138772387733877438775387763877738778387793878038781387823878338784387853878638787387883878938790387913879238793387943879538796387973879838799388003880138802388033880438805388063880738808388093881038811388123881338814388153881638817388183881938820388213882238823388243882538826388273882838829388303883138832388333883438835388363883738838388393884038841388423884338844388453884638847388483884938850388513885238853388543885538856388573885838859388603886138862388633886438865388663886738868388693887038871388723887338874388753887638877388783887938880388813888238883388843888538886388873888838889388903889138892388933889438895388963889738898388993890038901389023890338904389053890638907389083890938910389113891238913389143891538916389173891838919389203892138922389233892438925389263892738928389293893038931389323893338934389353893638937389383893938940389413894238943389443894538946389473894838949389503895138952389533895438955389563895738958389593896038961389623896338964389653896638967389683896938970389713897238973389743897538976389773897838979389803898138982389833898438985389863898738988389893899038991389923899338994389953899638997389983899939000390013900239003390043900539006390073900839009390103901139012390133901439015390163901739018390193902039021390223902339024390253902639027390283902939030390313903239033390343903539036390373903839039390403904139042390433904439045390463904739048390493905039051390523905339054390553905639057390583905939060390613906239063390643906539066390673906839069390703907139072390733907439075390763907739078390793908039081390823908339084390853908639087390883908939090390913909239093390943909539096390973909839099391003910139102391033910439105391063910739108391093911039111391123911339114391153911639117391183911939120391213912239123391243912539126391273912839129391303913139132391333913439135391363913739138391393914039141391423914339144391453914639147391483914939150391513915239153391543915539156391573915839159391603916139162391633916439165391663916739168391693917039171391723917339174391753917639177391783917939180391813918239183391843918539186391873918839189391903919139192391933919439195391963919739198391993920039201392023920339204392053920639207392083920939210392113921239213392143921539216392173921839219392203922139222392233922439225392263922739228392293923039231392323923339234392353923639237392383923939240392413924239243392443924539246392473924839249392503925139252392533925439255392563925739258392593926039261392623926339264392653926639267392683926939270392713927239273392743927539276392773927839279392803928139282392833928439285392863928739288392893929039291392923929339294392953929639297392983929939300393013930239303393043930539306393073930839309393103931139312393133931439315393163931739318393193932039321393223932339324393253932639327393283932939330393313933239333393343933539336393373933839339393403934139342393433934439345393463934739348393493935039351393523935339354393553935639357393583935939360393613936239363393643936539366393673936839369393703937139372393733937439375393763937739378393793938039381393823938339384393853938639387393883938939390393913939239393393943939539396393973939839399394003940139402394033940439405394063940739408394093941039411394123941339414394153941639417394183941939420394213942239423394243942539426394273942839429394303943139432394333943439435394363943739438394393944039441394423944339444394453944639447394483944939450394513945239453394543945539456394573945839459394603946139462394633946439465394663946739468394693947039471394723947339474394753947639477394783947939480394813948239483394843948539486394873948839489394903949139492394933949439495394963949739498394993950039501395023950339504395053950639507395083950939510395113951239513395143951539516395173951839519395203952139522395233952439525395263952739528395293953039531395323953339534395353953639537395383953939540395413954239543395443954539546395473954839549395503955139552395533955439555395563955739558395593956039561395623956339564395653956639567395683956939570395713957239573395743957539576395773957839579395803958139582395833958439585395863958739588395893959039591395923959339594395953959639597395983959939600396013960239603396043960539606396073960839609396103961139612396133961439615396163961739618396193962039621396223962339624396253962639627396283962939630396313963239633396343963539636396373963839639396403964139642396433964439645396463964739648396493965039651396523965339654396553965639657396583965939660396613966239663396643966539666396673966839669396703967139672396733967439675396763967739678396793968039681396823968339684396853968639687396883968939690396913969239693396943969539696396973969839699397003970139702397033970439705397063970739708397093971039711397123971339714397153971639717397183971939720397213972239723397243972539726397273972839729397303973139732397333973439735397363973739738397393974039741397423974339744397453974639747397483974939750397513975239753397543975539756397573975839759397603976139762397633976439765397663976739768397693977039771397723977339774397753977639777397783977939780397813978239783397843978539786397873978839789397903979139792397933979439795397963979739798397993980039801398023980339804398053980639807398083980939810398113981239813398143981539816398173981839819398203982139822398233982439825398263982739828398293983039831398323983339834398353983639837398383983939840398413984239843398443984539846398473984839849398503985139852398533985439855398563985739858398593986039861398623986339864398653986639867398683986939870398713987239873398743987539876398773987839879398803988139882398833988439885398863988739888398893989039891398923989339894398953989639897398983989939900399013990239903399043990539906399073990839909399103991139912399133991439915399163991739918399193992039921399223992339924399253992639927399283992939930399313993239933399343993539936399373993839939399403994139942399433994439945399463994739948399493995039951399523995339954399553995639957399583995939960399613996239963399643996539966399673996839969399703997139972399733997439975399763997739978399793998039981399823998339984399853998639987399883998939990399913999239993399943999539996399973999839999400004000140002400034000440005400064000740008400094001040011400124001340014400154001640017400184001940020400214002240023400244002540026400274002840029400304003140032400334003440035400364003740038400394004040041400424004340044400454004640047400484004940050400514005240053400544005540056400574005840059400604006140062400634006440065400664006740068400694007040071400724007340074400754007640077400784007940080400814008240083400844008540086400874008840089400904009140092400934009440095400964009740098400994010040101401024010340104401054010640107401084010940110401114011240113401144011540116401174011840119401204012140122401234012440125401264012740128401294013040131401324013340134401354013640137401384013940140401414014240143401444014540146401474014840149401504015140152401534015440155401564015740158401594016040161401624016340164401654016640167401684016940170401714017240173401744017540176401774017840179401804018140182401834018440185401864018740188401894019040191401924019340194401954019640197401984019940200402014020240203402044020540206402074020840209402104021140212402134021440215402164021740218402194022040221402224022340224402254022640227402284022940230402314023240233402344023540236402374023840239402404024140242402434024440245402464024740248402494025040251402524025340254402554025640257402584025940260402614026240263402644026540266402674026840269402704027140272402734027440275402764027740278402794028040281402824028340284402854028640287402884028940290402914029240293402944029540296402974029840299403004030140302403034030440305403064030740308403094031040311403124031340314403154031640317403184031940320403214032240323403244032540326403274032840329403304033140332403334033440335403364033740338403394034040341403424034340344403454034640347403484034940350403514035240353403544035540356403574035840359403604036140362403634036440365403664036740368403694037040371403724037340374403754037640377403784037940380403814038240383403844038540386403874038840389403904039140392403934039440395403964039740398403994040040401404024040340404404054040640407404084040940410404114041240413404144041540416404174041840419404204042140422404234042440425404264042740428404294043040431404324043340434404354043640437404384043940440404414044240443404444044540446404474044840449404504045140452404534045440455404564045740458404594046040461404624046340464404654046640467404684046940470404714047240473404744047540476404774047840479404804048140482404834048440485404864048740488404894049040491404924049340494404954049640497404984049940500405014050240503405044050540506405074050840509405104051140512405134051440515405164051740518405194052040521405224052340524405254052640527405284052940530405314053240533405344053540536405374053840539405404054140542405434054440545405464054740548405494055040551405524055340554405554055640557405584055940560405614056240563405644056540566405674056840569405704057140572405734057440575405764057740578405794058040581405824058340584405854058640587405884058940590405914059240593405944059540596405974059840599406004060140602406034060440605406064060740608406094061040611406124061340614406154061640617406184061940620406214062240623406244062540626406274062840629406304063140632406334063440635406364063740638406394064040641406424064340644406454064640647406484064940650406514065240653406544065540656406574065840659406604066140662406634066440665406664066740668406694067040671406724067340674406754067640677406784067940680406814068240683406844068540686406874068840689406904069140692406934069440695406964069740698406994070040701407024070340704407054070640707407084070940710407114071240713407144071540716407174071840719407204072140722407234072440725407264072740728407294073040731407324073340734407354073640737407384073940740407414074240743407444074540746407474074840749407504075140752407534075440755407564075740758407594076040761407624076340764407654076640767407684076940770407714077240773407744077540776407774077840779407804078140782407834078440785407864078740788407894079040791407924079340794407954079640797407984079940800408014080240803408044080540806408074080840809408104081140812408134081440815408164081740818408194082040821408224082340824408254082640827408284082940830408314083240833408344083540836408374083840839408404084140842408434084440845408464084740848408494085040851408524085340854408554085640857408584085940860408614086240863408644086540866408674086840869408704087140872408734087440875408764087740878408794088040881408824088340884408854088640887408884088940890408914089240893408944089540896408974089840899409004090140902409034090440905409064090740908409094091040911409124091340914409154091640917409184091940920409214092240923409244092540926409274092840929409304093140932409334093440935409364093740938409394094040941409424094340944409454094640947409484094940950409514095240953409544095540956409574095840959409604096140962409634096440965409664096740968409694097040971409724097340974409754097640977409784097940980409814098240983409844098540986409874098840989409904099140992409934099440995409964099740998409994100041001410024100341004410054100641007410084100941010410114101241013410144101541016410174101841019410204102141022410234102441025410264102741028410294103041031410324103341034410354103641037410384103941040410414104241043410444104541046410474104841049410504105141052410534105441055410564105741058410594106041061410624106341064410654106641067410684106941070410714107241073410744107541076410774107841079410804108141082410834108441085410864108741088410894109041091410924109341094410954109641097410984109941100411014110241103411044110541106411074110841109411104111141112411134111441115411164111741118411194112041121411224112341124411254112641127411284112941130411314113241133411344113541136411374113841139411404114141142411434114441145411464114741148411494115041151411524115341154411554115641157411584115941160411614116241163411644116541166411674116841169411704117141172411734117441175411764117741178411794118041181411824118341184411854118641187411884118941190411914119241193411944119541196411974119841199412004120141202412034120441205412064120741208412094121041211412124121341214412154121641217412184121941220412214122241223412244122541226412274122841229412304123141232412334123441235412364123741238412394124041241412424124341244412454124641247412484124941250412514125241253412544125541256412574125841259412604126141262412634126441265412664126741268412694127041271412724127341274412754127641277412784127941280412814128241283412844128541286412874128841289412904129141292412934129441295412964129741298412994130041301413024130341304413054130641307413084130941310413114131241313413144131541316413174131841319413204132141322413234132441325413264132741328413294133041331413324133341334413354133641337413384133941340413414134241343413444134541346413474134841349413504135141352413534135441355413564135741358413594136041361413624136341364413654136641367413684136941370413714137241373413744137541376413774137841379413804138141382413834138441385413864138741388413894139041391413924139341394413954139641397413984139941400414014140241403414044140541406414074140841409414104141141412414134141441415414164141741418414194142041421414224142341424414254142641427414284142941430414314143241433414344143541436414374143841439414404144141442414434144441445414464144741448414494145041451414524145341454414554145641457414584145941460414614146241463414644146541466414674146841469414704147141472414734147441475414764147741478414794148041481414824148341484414854148641487414884148941490414914149241493414944149541496414974149841499415004150141502415034150441505415064150741508415094151041511415124151341514415154151641517415184151941520415214152241523415244152541526415274152841529415304153141532415334153441535415364153741538415394154041541415424154341544415454154641547415484154941550415514155241553415544155541556415574155841559415604156141562415634156441565415664156741568415694157041571415724157341574415754157641577415784157941580415814158241583415844158541586415874158841589415904159141592415934159441595415964159741598415994160041601416024160341604416054160641607416084160941610416114161241613416144161541616416174161841619416204162141622416234162441625416264162741628416294163041631416324163341634416354163641637416384163941640416414164241643416444164541646416474164841649416504165141652416534165441655416564165741658416594166041661416624166341664416654166641667416684166941670416714167241673416744167541676416774167841679416804168141682416834168441685416864168741688416894169041691416924169341694416954169641697416984169941700417014170241703417044170541706417074170841709417104171141712417134171441715417164171741718417194172041721417224172341724417254172641727417284172941730417314173241733417344173541736417374173841739417404174141742417434174441745417464174741748417494175041751417524175341754417554175641757417584175941760417614176241763417644176541766417674176841769417704177141772417734177441775417764177741778417794178041781417824178341784417854178641787417884178941790417914179241793417944179541796417974179841799418004180141802418034180441805418064180741808418094181041811418124181341814418154181641817418184181941820418214182241823418244182541826418274182841829418304183141832418334183441835418364183741838418394184041841418424184341844418454184641847418484184941850418514185241853418544185541856418574185841859418604186141862418634186441865418664186741868418694187041871418724187341874418754187641877418784187941880418814188241883418844188541886418874188841889418904189141892418934189441895418964189741898418994190041901419024190341904419054190641907419084190941910419114191241913419144191541916419174191841919419204192141922419234192441925419264192741928419294193041931419324193341934419354193641937419384193941940419414194241943419444194541946419474194841949419504195141952419534195441955419564195741958419594196041961419624196341964419654196641967419684196941970419714197241973419744197541976419774197841979419804198141982419834198441985419864198741988419894199041991419924199341994419954199641997419984199942000420014200242003420044200542006420074200842009420104201142012420134201442015420164201742018420194202042021420224202342024420254202642027420284202942030420314203242033420344203542036420374203842039420404204142042420434204442045420464204742048420494205042051420524205342054420554205642057420584205942060420614206242063420644206542066420674206842069420704207142072420734207442075420764207742078420794208042081420824208342084420854208642087420884208942090420914209242093420944209542096420974209842099421004210142102421034210442105421064210742108421094211042111421124211342114421154211642117421184211942120421214212242123421244212542126421274212842129421304213142132421334213442135421364213742138421394214042141421424214342144421454214642147421484214942150421514215242153421544215542156421574215842159421604216142162421634216442165421664216742168421694217042171421724217342174421754217642177421784217942180421814218242183421844218542186421874218842189421904219142192421934219442195421964219742198421994220042201422024220342204422054220642207422084220942210422114221242213422144221542216422174221842219422204222142222422234222442225422264222742228422294223042231422324223342234422354223642237422384223942240422414224242243422444224542246422474224842249422504225142252422534225442255422564225742258422594226042261422624226342264422654226642267422684226942270422714227242273422744227542276422774227842279422804228142282422834228442285422864228742288422894229042291422924229342294422954229642297422984229942300423014230242303423044230542306423074230842309423104231142312423134231442315423164231742318423194232042321423224232342324423254232642327423284232942330423314233242333423344233542336423374233842339423404234142342423434234442345423464234742348423494235042351423524235342354423554235642357423584235942360423614236242363423644236542366423674236842369423704237142372423734237442375423764237742378423794238042381423824238342384423854238642387423884238942390423914239242393423944239542396423974239842399424004240142402424034240442405424064240742408424094241042411424124241342414424154241642417424184241942420424214242242423424244242542426424274242842429424304243142432424334243442435424364243742438424394244042441424424244342444424454244642447424484244942450424514245242453424544245542456424574245842459424604246142462424634246442465424664246742468424694247042471424724247342474424754247642477424784247942480424814248242483424844248542486424874248842489424904249142492424934249442495424964249742498424994250042501425024250342504425054250642507425084250942510425114251242513425144251542516425174251842519425204252142522425234252442525425264252742528425294253042531425324253342534425354253642537425384253942540425414254242543425444254542546425474254842549425504255142552425534255442555425564255742558425594256042561425624256342564425654256642567425684256942570425714257242573425744257542576425774257842579425804258142582425834258442585425864258742588425894259042591425924259342594425954259642597425984259942600426014260242603426044260542606426074260842609426104261142612426134261442615426164261742618426194262042621426224262342624426254262642627426284262942630426314263242633426344263542636426374263842639426404264142642426434264442645426464264742648426494265042651426524265342654426554265642657426584265942660426614266242663426644266542666426674266842669426704267142672426734267442675426764267742678426794268042681426824268342684426854268642687426884268942690426914269242693426944269542696426974269842699427004270142702427034270442705427064270742708427094271042711427124271342714427154271642717427184271942720427214272242723427244272542726427274272842729427304273142732427334273442735427364273742738427394274042741427424274342744427454274642747427484274942750427514275242753427544275542756427574275842759427604276142762427634276442765427664276742768427694277042771427724277342774427754277642777427784277942780427814278242783427844278542786427874278842789427904279142792427934279442795427964279742798427994280042801428024280342804428054280642807428084280942810428114281242813428144281542816428174281842819428204282142822428234282442825428264282742828428294283042831428324283342834428354283642837428384283942840428414284242843428444284542846428474284842849428504285142852428534285442855428564285742858428594286042861428624286342864428654286642867428684286942870428714287242873428744287542876428774287842879428804288142882428834288442885428864288742888428894289042891428924289342894428954289642897428984289942900429014290242903429044290542906429074290842909429104291142912429134291442915429164291742918429194292042921429224292342924429254292642927429284292942930429314293242933429344293542936429374293842939429404294142942429434294442945429464294742948429494295042951429524295342954429554295642957429584295942960429614296242963429644296542966429674296842969429704297142972429734297442975429764297742978429794298042981429824298342984429854298642987429884298942990429914299242993429944299542996429974299842999430004300143002430034300443005430064300743008430094301043011430124301343014430154301643017430184301943020430214302243023430244302543026430274302843029430304303143032430334303443035430364303743038430394304043041430424304343044430454304643047430484304943050430514305243053430544305543056430574305843059430604306143062430634306443065430664306743068430694307043071430724307343074430754307643077430784307943080430814308243083430844308543086430874308843089430904309143092430934309443095430964309743098430994310043101431024310343104431054310643107431084310943110431114311243113431144311543116431174311843119431204312143122431234312443125431264312743128431294313043131431324313343134431354313643137431384313943140431414314243143431444314543146431474314843149431504315143152431534315443155431564315743158431594316043161431624316343164431654316643167431684316943170431714317243173431744317543176431774317843179431804318143182431834318443185431864318743188431894319043191431924319343194431954319643197431984319943200432014320243203432044320543206432074320843209432104321143212432134321443215432164321743218432194322043221432224322343224432254322643227432284322943230432314323243233432344323543236432374323843239432404324143242432434324443245432464324743248432494325043251432524325343254432554325643257432584325943260432614326243263432644326543266432674326843269432704327143272432734327443275432764327743278432794328043281432824328343284432854328643287432884328943290432914329243293432944329543296432974329843299433004330143302433034330443305433064330743308433094331043311433124331343314433154331643317433184331943320433214332243323433244332543326433274332843329433304333143332433334333443335433364333743338433394334043341433424334343344433454334643347433484334943350433514335243353433544335543356433574335843359433604336143362433634336443365433664336743368433694337043371433724337343374433754337643377433784337943380433814338243383433844338543386433874338843389433904339143392433934339443395433964339743398433994340043401434024340343404434054340643407434084340943410434114341243413434144341543416434174341843419434204342143422434234342443425434264342743428434294343043431434324343343434434354343643437434384343943440434414344243443434444344543446434474344843449434504345143452434534345443455434564345743458434594346043461434624346343464434654346643467434684346943470434714347243473434744347543476434774347843479434804348143482434834348443485434864348743488434894349043491434924349343494434954349643497434984349943500435014350243503435044350543506435074350843509435104351143512435134351443515435164351743518435194352043521435224352343524435254352643527435284352943530435314353243533435344353543536435374353843539435404354143542435434354443545435464354743548435494355043551435524355343554435554355643557435584355943560435614356243563435644356543566435674356843569435704357143572435734357443575435764357743578435794358043581435824358343584435854358643587435884358943590435914359243593435944359543596435974359843599436004360143602436034360443605436064360743608436094361043611436124361343614436154361643617436184361943620436214362243623436244362543626436274362843629436304363143632436334363443635436364363743638436394364043641436424364343644436454364643647436484364943650436514365243653436544365543656436574365843659436604366143662436634366443665436664366743668436694367043671436724367343674436754367643677436784367943680436814368243683436844368543686436874368843689436904369143692436934369443695436964369743698436994370043701437024370343704437054370643707437084370943710437114371243713437144371543716437174371843719437204372143722437234372443725437264372743728437294373043731437324373343734437354373643737437384373943740437414374243743437444374543746437474374843749437504375143752437534375443755437564375743758437594376043761437624376343764437654376643767437684376943770437714377243773437744377543776437774377843779437804378143782437834378443785437864378743788437894379043791437924379343794437954379643797437984379943800438014380243803438044380543806438074380843809438104381143812438134381443815438164381743818438194382043821438224382343824438254382643827438284382943830438314383243833438344383543836438374383843839438404384143842438434384443845438464384743848438494385043851438524385343854438554385643857438584385943860438614386243863438644386543866438674386843869438704387143872438734387443875438764387743878438794388043881438824388343884438854388643887438884388943890438914389243893438944389543896438974389843899439004390143902439034390443905439064390743908439094391043911439124391343914439154391643917439184391943920439214392243923439244392543926439274392843929439304393143932439334393443935439364393743938439394394043941439424394343944439454394643947439484394943950439514395243953439544395543956439574395843959439604396143962439634396443965439664396743968439694397043971439724397343974439754397643977439784397943980439814398243983439844398543986439874398843989439904399143992439934399443995439964399743998439994400044001440024400344004440054400644007440084400944010440114401244013440144401544016440174401844019440204402144022440234402444025440264402744028440294403044031440324403344034440354403644037440384403944040440414404244043440444404544046440474404844049440504405144052440534405444055440564405744058440594406044061440624406344064440654406644067440684406944070440714407244073440744407544076440774407844079440804408144082440834408444085440864408744088440894409044091440924409344094440954409644097440984409944100441014410244103441044410544106441074410844109441104411144112441134411444115441164411744118441194412044121441224412344124441254412644127441284412944130441314413244133441344413544136441374413844139441404414144142441434414444145441464414744148441494415044151441524415344154441554415644157441584415944160441614416244163441644416544166441674416844169441704417144172441734417444175441764417744178441794418044181441824418344184441854418644187441884418944190441914419244193441944419544196441974419844199442004420144202442034420444205442064420744208442094421044211442124421344214442154421644217442184421944220442214422244223442244422544226442274422844229442304423144232442334423444235442364423744238442394424044241442424424344244442454424644247442484424944250442514425244253442544425544256442574425844259442604426144262442634426444265442664426744268442694427044271442724427344274442754427644277442784427944280442814428244283442844428544286442874428844289442904429144292442934429444295442964429744298442994430044301443024430344304443054430644307443084430944310443114431244313443144431544316443174431844319443204432144322443234432444325443264432744328443294433044331443324433344334443354433644337443384433944340443414434244343443444434544346443474434844349443504435144352443534435444355443564435744358443594436044361443624436344364443654436644367443684436944370443714437244373443744437544376443774437844379443804438144382443834438444385443864438744388443894439044391443924439344394443954439644397443984439944400444014440244403444044440544406444074440844409444104441144412444134441444415444164441744418444194442044421444224442344424444254442644427444284442944430444314443244433444344443544436444374443844439444404444144442444434444444445444464444744448444494445044451444524445344454444554445644457444584445944460444614446244463444644446544466444674446844469444704447144472444734447444475444764447744478444794448044481444824448344484444854448644487444884448944490444914449244493444944449544496444974449844499445004450144502445034450444505445064450744508445094451044511445124451344514445154451644517445184451944520445214452244523445244452544526445274452844529445304453144532445334453444535445364453744538445394454044541445424454344544445454454644547445484454944550445514455244553445544455544556445574455844559445604456144562445634456444565445664456744568445694457044571445724457344574445754457644577445784457944580445814458244583445844458544586445874458844589445904459144592445934459444595445964459744598445994460044601446024460344604446054460644607446084460944610446114461244613446144461544616446174461844619446204462144622446234462444625446264462744628446294463044631446324463344634446354463644637446384463944640446414464244643446444464544646446474464844649446504465144652446534465444655446564465744658446594466044661446624466344664446654466644667446684466944670446714467244673446744467544676446774467844679446804468144682446834468444685446864468744688446894469044691446924469344694446954469644697446984469944700447014470244703447044470544706447074470844709447104471144712447134471444715447164471744718447194472044721447224472344724447254472644727447284472944730447314473244733447344473544736447374473844739447404474144742447434474444745447464474744748447494475044751447524475344754447554475644757447584475944760447614476244763447644476544766447674476844769447704477144772447734477444775447764477744778447794478044781447824478344784447854478644787447884478944790447914479244793447944479544796447974479844799448004480144802448034480444805448064480744808448094481044811448124481344814448154481644817448184481944820448214482244823448244482544826448274482844829448304483144832448334483444835448364483744838448394484044841448424484344844448454484644847448484484944850448514485244853448544485544856448574485844859448604486144862448634486444865448664486744868448694487044871448724487344874448754487644877448784487944880448814488244883448844488544886448874488844889448904489144892448934489444895448964489744898448994490044901449024490344904449054490644907449084490944910449114491244913449144491544916449174491844919449204492144922449234492444925449264492744928449294493044931449324493344934449354493644937449384493944940449414494244943449444494544946449474494844949449504495144952449534495444955449564495744958449594496044961449624496344964449654496644967449684496944970449714497244973449744497544976449774497844979449804498144982449834498444985449864498744988449894499044991449924499344994449954499644997449984499945000450014500245003450044500545006450074500845009450104501145012450134501445015450164501745018450194502045021450224502345024450254502645027450284502945030450314503245033450344503545036450374503845039450404504145042450434504445045450464504745048450494505045051450524505345054450554505645057450584505945060450614506245063450644506545066450674506845069450704507145072450734507445075450764507745078450794508045081450824508345084450854508645087450884508945090450914509245093450944509545096450974509845099451004510145102451034510445105451064510745108451094511045111451124511345114451154511645117451184511945120451214512245123451244512545126451274512845129451304513145132451334513445135451364513745138451394514045141451424514345144451454514645147451484514945150451514515245153451544515545156451574515845159451604516145162451634516445165451664516745168451694517045171451724517345174451754517645177451784517945180451814518245183451844518545186451874518845189451904519145192451934519445195451964519745198451994520045201452024520345204452054520645207452084520945210452114521245213452144521545216452174521845219452204522145222452234522445225452264522745228452294523045231452324523345234452354523645237452384523945240452414524245243452444524545246452474524845249452504525145252452534525445255452564525745258452594526045261452624526345264452654526645267452684526945270452714527245273452744527545276452774527845279452804528145282452834528445285452864528745288452894529045291452924529345294452954529645297452984529945300453014530245303453044530545306453074530845309453104531145312453134531445315453164531745318453194532045321453224532345324453254532645327453284532945330453314533245333453344533545336453374533845339453404534145342453434534445345453464534745348453494535045351453524535345354453554535645357453584535945360453614536245363453644536545366453674536845369453704537145372453734537445375453764537745378453794538045381453824538345384453854538645387453884538945390453914539245393453944539545396453974539845399454004540145402454034540445405454064540745408454094541045411454124541345414454154541645417454184541945420454214542245423454244542545426454274542845429454304543145432454334543445435454364543745438454394544045441454424544345444454454544645447454484544945450454514545245453454544545545456454574545845459454604546145462454634546445465454664546745468454694547045471454724547345474454754547645477454784547945480454814548245483454844548545486454874548845489454904549145492454934549445495454964549745498454994550045501455024550345504455054550645507455084550945510455114551245513455144551545516455174551845519455204552145522455234552445525455264552745528455294553045531455324553345534455354553645537455384553945540455414554245543455444554545546455474554845549455504555145552455534555445555455564555745558455594556045561455624556345564455654556645567455684556945570455714557245573455744557545576455774557845579455804558145582455834558445585455864558745588455894559045591455924559345594455954559645597455984559945600456014560245603456044560545606456074560845609456104561145612456134561445615456164561745618456194562045621456224562345624456254562645627456284562945630456314563245633456344563545636456374563845639456404564145642456434564445645456464564745648456494565045651456524565345654456554565645657456584565945660456614566245663456644566545666456674566845669456704567145672456734567445675456764567745678456794568045681456824568345684456854568645687456884568945690456914569245693456944569545696456974569845699457004570145702457034570445705457064570745708457094571045711457124571345714457154571645717457184571945720457214572245723457244572545726457274572845729457304573145732457334573445735457364573745738457394574045741457424574345744457454574645747457484574945750457514575245753457544575545756457574575845759457604576145762457634576445765457664576745768457694577045771457724577345774457754577645777457784577945780457814578245783457844578545786457874578845789457904579145792457934579445795457964579745798457994580045801458024580345804458054580645807458084580945810458114581245813458144581545816458174581845819458204582145822458234582445825458264582745828458294583045831458324583345834458354583645837458384583945840458414584245843458444584545846458474584845849458504585145852458534585445855458564585745858458594586045861458624586345864458654586645867458684586945870458714587245873458744587545876458774587845879458804588145882458834588445885458864588745888458894589045891458924589345894458954589645897458984589945900459014590245903459044590545906459074590845909459104591145912459134591445915459164591745918459194592045921459224592345924459254592645927459284592945930459314593245933459344593545936459374593845939459404594145942459434594445945459464594745948459494595045951459524595345954459554595645957459584595945960459614596245963459644596545966459674596845969459704597145972459734597445975459764597745978459794598045981459824598345984459854598645987459884598945990459914599245993459944599545996459974599845999460004600146002460034600446005460064600746008460094601046011460124601346014460154601646017460184601946020460214602246023460244602546026460274602846029460304603146032460334603446035460364603746038460394604046041460424604346044460454604646047460484604946050460514605246053460544605546056460574605846059460604606146062460634606446065460664606746068460694607046071460724607346074460754607646077460784607946080460814608246083460844608546086460874608846089460904609146092460934609446095460964609746098460994610046101461024610346104461054610646107461084610946110461114611246113461144611546116461174611846119461204612146122461234612446125461264612746128461294613046131461324613346134461354613646137461384613946140461414614246143461444614546146461474614846149461504615146152461534615446155461564615746158461594616046161461624616346164461654616646167461684616946170461714617246173461744617546176461774617846179461804618146182461834618446185461864618746188461894619046191461924619346194461954619646197461984619946200462014620246203462044620546206462074620846209462104621146212462134621446215462164621746218462194622046221462224622346224462254622646227462284622946230462314623246233462344623546236462374623846239462404624146242462434624446245462464624746248462494625046251462524625346254462554625646257462584625946260462614626246263462644626546266462674626846269462704627146272462734627446275462764627746278462794628046281462824628346284462854628646287462884628946290462914629246293462944629546296462974629846299463004630146302463034630446305463064630746308463094631046311463124631346314463154631646317463184631946320463214632246323463244632546326463274632846329463304633146332463334633446335463364633746338463394634046341463424634346344463454634646347463484634946350463514635246353463544635546356463574635846359463604636146362463634636446365463664636746368463694637046371463724637346374463754637646377463784637946380463814638246383463844638546386463874638846389463904639146392463934639446395463964639746398463994640046401464024640346404464054640646407464084640946410464114641246413464144641546416464174641846419464204642146422464234642446425464264642746428464294643046431464324643346434464354643646437464384643946440464414644246443464444644546446464474644846449464504645146452464534645446455464564645746458464594646046461464624646346464464654646646467464684646946470464714647246473464744647546476464774647846479464804648146482464834648446485464864648746488464894649046491464924649346494464954649646497464984649946500465014650246503465044650546506465074650846509465104651146512465134651446515465164651746518465194652046521465224652346524465254652646527465284652946530465314653246533465344653546536465374653846539465404654146542465434654446545465464654746548465494655046551465524655346554465554655646557465584655946560465614656246563465644656546566465674656846569465704657146572465734657446575465764657746578465794658046581465824658346584465854658646587465884658946590465914659246593465944659546596465974659846599466004660146602466034660446605466064660746608466094661046611466124661346614466154661646617466184661946620466214662246623466244662546626466274662846629466304663146632466334663446635466364663746638466394664046641466424664346644466454664646647466484664946650466514665246653466544665546656466574665846659466604666146662466634666446665466664666746668466694667046671466724667346674466754667646677466784667946680466814668246683466844668546686466874668846689466904669146692466934669446695466964669746698466994670046701467024670346704467054670646707467084670946710467114671246713467144671546716467174671846719467204672146722467234672446725467264672746728467294673046731467324673346734467354673646737467384673946740467414674246743467444674546746467474674846749467504675146752467534675446755467564675746758467594676046761467624676346764467654676646767467684676946770467714677246773467744677546776467774677846779467804678146782467834678446785467864678746788467894679046791467924679346794467954679646797467984679946800468014680246803468044680546806468074680846809468104681146812468134681446815468164681746818468194682046821468224682346824468254682646827468284682946830468314683246833468344683546836468374683846839468404684146842468434684446845468464684746848468494685046851468524685346854468554685646857468584685946860468614686246863468644686546866468674686846869468704687146872468734687446875468764687746878468794688046881468824688346884468854688646887468884688946890468914689246893468944689546896468974689846899469004690146902469034690446905469064690746908469094691046911469124691346914469154691646917469184691946920469214692246923469244692546926469274692846929469304693146932469334693446935469364693746938469394694046941469424694346944469454694646947469484694946950469514695246953469544695546956469574695846959469604696146962469634696446965469664696746968469694697046971469724697346974469754697646977469784697946980469814698246983469844698546986469874698846989469904699146992469934699446995469964699746998469994700047001470024700347004470054700647007470084700947010470114701247013470144701547016470174701847019470204702147022470234702447025470264702747028470294703047031470324703347034470354703647037470384703947040470414704247043470444704547046470474704847049470504705147052470534705447055470564705747058470594706047061470624706347064470654706647067470684706947070470714707247073470744707547076470774707847079470804708147082470834708447085470864708747088470894709047091470924709347094470954709647097470984709947100471014710247103471044710547106471074710847109471104711147112471134711447115471164711747118471194712047121471224712347124471254712647127471284712947130471314713247133471344713547136471374713847139471404714147142471434714447145471464714747148471494715047151471524715347154471554715647157471584715947160471614716247163471644716547166471674716847169471704717147172471734717447175471764717747178471794718047181471824718347184471854718647187471884718947190471914719247193471944719547196471974719847199472004720147202472034720447205472064720747208472094721047211472124721347214472154721647217472184721947220472214722247223472244722547226472274722847229472304723147232472334723447235472364723747238472394724047241472424724347244472454724647247472484724947250472514725247253472544725547256472574725847259472604726147262472634726447265472664726747268472694727047271472724727347274472754727647277472784727947280472814728247283472844728547286472874728847289472904729147292472934729447295472964729747298472994730047301473024730347304473054730647307473084730947310473114731247313473144731547316473174731847319473204732147322473234732447325473264732747328473294733047331473324733347334473354733647337473384733947340473414734247343473444734547346473474734847349473504735147352473534735447355473564735747358473594736047361473624736347364473654736647367473684736947370473714737247373473744737547376473774737847379473804738147382473834738447385473864738747388473894739047391473924739347394473954739647397473984739947400474014740247403474044740547406474074740847409474104741147412474134741447415474164741747418474194742047421474224742347424474254742647427474284742947430474314743247433474344743547436474374743847439474404744147442474434744447445474464744747448474494745047451474524745347454474554745647457474584745947460474614746247463474644746547466474674746847469474704747147472474734747447475474764747747478474794748047481474824748347484474854748647487474884748947490474914749247493474944749547496474974749847499475004750147502475034750447505475064750747508475094751047511475124751347514475154751647517475184751947520475214752247523475244752547526475274752847529475304753147532475334753447535475364753747538475394754047541475424754347544475454754647547475484754947550475514755247553475544755547556475574755847559475604756147562475634756447565475664756747568475694757047571475724757347574475754757647577475784757947580475814758247583475844758547586475874758847589475904759147592475934759447595475964759747598475994760047601476024760347604476054760647607476084760947610476114761247613476144761547616476174761847619476204762147622476234762447625476264762747628476294763047631476324763347634476354763647637476384763947640476414764247643476444764547646476474764847649476504765147652476534765447655476564765747658476594766047661476624766347664476654766647667476684766947670476714767247673476744767547676476774767847679476804768147682476834768447685476864768747688476894769047691476924769347694476954769647697476984769947700477014770247703477044770547706477074770847709477104771147712477134771447715477164771747718477194772047721477224772347724477254772647727477284772947730477314773247733477344773547736477374773847739477404774147742477434774447745477464774747748477494775047751477524775347754477554775647757477584775947760477614776247763477644776547766477674776847769477704777147772477734777447775477764777747778477794778047781477824778347784477854778647787477884778947790477914779247793477944779547796477974779847799478004780147802478034780447805478064780747808478094781047811478124781347814478154781647817478184781947820478214782247823478244782547826478274782847829478304783147832478334783447835478364783747838478394784047841478424784347844478454784647847478484784947850478514785247853478544785547856478574785847859478604786147862478634786447865478664786747868478694787047871478724787347874478754787647877478784787947880478814788247883478844788547886478874788847889478904789147892478934789447895478964789747898478994790047901479024790347904479054790647907479084790947910479114791247913479144791547916479174791847919479204792147922479234792447925479264792747928479294793047931479324793347934479354793647937479384793947940479414794247943479444794547946479474794847949479504795147952479534795447955479564795747958479594796047961479624796347964479654796647967479684796947970479714797247973479744797547976479774797847979479804798147982479834798447985479864798747988479894799047991479924799347994479954799647997479984799948000480014800248003480044800548006480074800848009480104801148012480134801448015480164801748018480194802048021480224802348024480254802648027480284802948030480314803248033480344803548036480374803848039480404804148042480434804448045480464804748048480494805048051480524805348054480554805648057480584805948060480614806248063480644806548066480674806848069480704807148072480734807448075480764807748078480794808048081480824808348084480854808648087480884808948090480914809248093480944809548096480974809848099481004810148102481034810448105481064810748108481094811048111481124811348114481154811648117481184811948120481214812248123481244812548126481274812848129481304813148132481334813448135481364813748138481394814048141481424814348144481454814648147481484814948150481514815248153481544815548156481574815848159481604816148162481634816448165481664816748168481694817048171481724817348174481754817648177481784817948180481814818248183481844818548186481874818848189481904819148192481934819448195481964819748198481994820048201482024820348204482054820648207482084820948210482114821248213482144821548216482174821848219482204822148222482234822448225482264822748228482294823048231482324823348234482354823648237482384823948240482414824248243482444824548246482474824848249482504825148252482534825448255482564825748258482594826048261482624826348264482654826648267482684826948270482714827248273482744827548276482774827848279482804828148282482834828448285482864828748288482894829048291482924829348294482954829648297482984829948300483014830248303483044830548306483074830848309483104831148312483134831448315483164831748318483194832048321483224832348324483254832648327483284832948330483314833248333483344833548336483374833848339483404834148342483434834448345483464834748348483494835048351483524835348354483554835648357483584835948360483614836248363483644836548366483674836848369483704837148372483734837448375483764837748378483794838048381483824838348384483854838648387483884838948390483914839248393483944839548396483974839848399484004840148402484034840448405484064840748408484094841048411484124841348414484154841648417484184841948420484214842248423484244842548426484274842848429484304843148432484334843448435484364843748438484394844048441484424844348444484454844648447484484844948450484514845248453484544845548456484574845848459484604846148462484634846448465484664846748468484694847048471484724847348474484754847648477484784847948480484814848248483484844848548486484874848848489484904849148492484934849448495484964849748498484994850048501485024850348504485054850648507485084850948510485114851248513485144851548516485174851848519485204852148522485234852448525485264852748528485294853048531485324853348534485354853648537485384853948540485414854248543485444854548546485474854848549485504855148552485534855448555485564855748558485594856048561485624856348564485654856648567485684856948570485714857248573485744857548576485774857848579485804858148582485834858448585485864858748588485894859048591485924859348594485954859648597485984859948600486014860248603486044860548606486074860848609486104861148612486134861448615486164861748618486194862048621486224862348624486254862648627486284862948630486314863248633486344863548636486374863848639486404864148642486434864448645486464864748648486494865048651486524865348654486554865648657486584865948660486614866248663486644866548666486674866848669486704867148672486734867448675486764867748678486794868048681486824868348684486854868648687486884868948690486914869248693486944869548696486974869848699487004870148702487034870448705487064870748708487094871048711487124871348714487154871648717487184871948720487214872248723487244872548726487274872848729487304873148732487334873448735487364873748738487394874048741487424874348744487454874648747487484874948750487514875248753487544875548756487574875848759487604876148762487634876448765487664876748768487694877048771487724877348774487754877648777487784877948780487814878248783487844878548786487874878848789487904879148792487934879448795487964879748798487994880048801488024880348804488054880648807488084880948810488114881248813488144881548816488174881848819488204882148822488234882448825488264882748828488294883048831488324883348834488354883648837488384883948840488414884248843488444884548846488474884848849488504885148852488534885448855488564885748858488594886048861488624886348864488654886648867488684886948870488714887248873488744887548876488774887848879488804888148882488834888448885488864888748888488894889048891488924889348894488954889648897488984889948900489014890248903489044890548906489074890848909489104891148912489134891448915489164891748918489194892048921489224892348924489254892648927489284892948930489314893248933489344893548936489374893848939489404894148942489434894448945489464894748948489494895048951489524895348954489554895648957489584895948960489614896248963489644896548966489674896848969489704897148972489734897448975489764897748978489794898048981489824898348984489854898648987489884898948990489914899248993489944899548996489974899848999490004900149002490034900449005490064900749008490094901049011490124901349014490154901649017490184901949020490214902249023490244902549026490274902849029490304903149032490334903449035490364903749038490394904049041490424904349044490454904649047490484904949050490514905249053490544905549056490574905849059490604906149062490634906449065490664906749068490694907049071490724907349074490754907649077490784907949080490814908249083490844908549086490874908849089490904909149092490934909449095490964909749098490994910049101491024910349104491054910649107491084910949110491114911249113491144911549116491174911849119491204912149122491234912449125491264912749128491294913049131491324913349134491354913649137491384913949140491414914249143491444914549146491474914849149491504915149152491534915449155491564915749158491594916049161491624916349164491654916649167491684916949170491714917249173491744917549176491774917849179491804918149182491834918449185491864918749188491894919049191491924919349194491954919649197491984919949200492014920249203492044920549206492074920849209492104921149212492134921449215492164921749218492194922049221492224922349224492254922649227492284922949230492314923249233492344923549236492374923849239492404924149242492434924449245492464924749248492494925049251492524925349254492554925649257492584925949260492614926249263492644926549266492674926849269492704927149272492734927449275492764927749278492794928049281492824928349284492854928649287492884928949290492914929249293492944929549296492974929849299493004930149302493034930449305493064930749308493094931049311493124931349314493154931649317493184931949320493214932249323493244932549326493274932849329493304933149332493334933449335493364933749338493394934049341493424934349344493454934649347493484934949350493514935249353493544935549356493574935849359493604936149362493634936449365493664936749368493694937049371493724937349374493754937649377493784937949380493814938249383493844938549386493874938849389493904939149392493934939449395493964939749398493994940049401494024940349404494054940649407494084940949410494114941249413494144941549416494174941849419494204942149422494234942449425494264942749428494294943049431494324943349434494354943649437494384943949440494414944249443494444944549446494474944849449494504945149452494534945449455494564945749458494594946049461494624946349464494654946649467494684946949470494714947249473494744947549476494774947849479494804948149482494834948449485494864948749488494894949049491494924949349494494954949649497494984949949500495014950249503495044950549506495074950849509495104951149512495134951449515495164951749518495194952049521495224952349524495254952649527495284952949530495314953249533495344953549536495374953849539495404954149542495434954449545495464954749548495494955049551495524955349554495554955649557495584955949560495614956249563495644956549566495674956849569495704957149572495734957449575495764957749578495794958049581495824958349584495854958649587495884958949590495914959249593495944959549596495974959849599496004960149602496034960449605496064960749608496094961049611496124961349614496154961649617496184961949620496214962249623496244962549626496274962849629496304963149632496334963449635496364963749638496394964049641496424964349644496454964649647496484964949650496514965249653496544965549656496574965849659496604966149662496634966449665496664966749668496694967049671496724967349674496754967649677496784967949680496814968249683496844968549686496874968849689496904969149692496934969449695496964969749698496994970049701497024970349704497054970649707497084970949710497114971249713497144971549716497174971849719497204972149722497234972449725497264972749728497294973049731497324973349734497354973649737497384973949740497414974249743497444974549746497474974849749497504975149752497534975449755497564975749758497594976049761497624976349764497654976649767497684976949770497714977249773497744977549776497774977849779497804978149782497834978449785497864978749788497894979049791497924979349794497954979649797497984979949800498014980249803498044980549806498074980849809498104981149812498134981449815498164981749818498194982049821498224982349824498254982649827498284982949830498314983249833498344983549836498374983849839498404984149842498434984449845498464984749848498494985049851498524985349854498554985649857498584985949860498614986249863498644986549866498674986849869498704987149872498734987449875498764987749878498794988049881498824988349884498854988649887498884988949890498914989249893498944989549896498974989849899499004990149902499034990449905499064990749908499094991049911499124991349914499154991649917499184991949920499214992249923499244992549926499274992849929499304993149932499334993449935499364993749938499394994049941499424994349944499454994649947499484994949950499514995249953499544995549956499574995849959499604996149962499634996449965499664996749968499694997049971499724997349974499754997649977499784997949980499814998249983499844998549986499874998849989499904999149992499934999449995499964999749998499995000050001500025000350004500055000650007500085000950010500115001250013500145001550016500175001850019500205002150022500235002450025500265002750028500295003050031500325003350034500355003650037500385003950040500415004250043500445004550046500475004850049500505005150052500535005450055500565005750058500595006050061500625006350064500655006650067500685006950070500715007250073500745007550076500775007850079500805008150082500835008450085500865008750088500895009050091500925009350094500955009650097500985009950100501015010250103501045010550106501075010850109501105011150112501135011450115501165011750118501195012050121501225012350124501255012650127501285012950130501315013250133501345013550136501375013850139501405014150142501435014450145501465014750148501495015050151501525015350154501555015650157501585015950160501615016250163501645016550166501675016850169501705017150172501735017450175501765017750178501795018050181501825018350184501855018650187501885018950190501915019250193501945019550196501975019850199502005020150202502035020450205502065020750208502095021050211502125021350214502155021650217502185021950220502215022250223502245022550226502275022850229502305023150232502335023450235502365023750238502395024050241502425024350244502455024650247502485024950250502515025250253502545025550256502575025850259502605026150262502635026450265502665026750268502695027050271502725027350274502755027650277502785027950280502815028250283502845028550286502875028850289502905029150292502935029450295502965029750298502995030050301503025030350304503055030650307503085030950310503115031250313503145031550316503175031850319503205032150322503235032450325503265032750328503295033050331503325033350334503355033650337503385033950340503415034250343503445034550346503475034850349503505035150352503535035450355503565035750358503595036050361503625036350364503655036650367503685036950370503715037250373503745037550376503775037850379503805038150382503835038450385503865038750388503895039050391503925039350394503955039650397503985039950400504015040250403504045040550406504075040850409504105041150412504135041450415504165041750418504195042050421504225042350424504255042650427504285042950430504315043250433504345043550436504375043850439504405044150442504435044450445504465044750448504495045050451504525045350454504555045650457504585045950460504615046250463504645046550466504675046850469504705047150472504735047450475504765047750478504795048050481504825048350484504855048650487504885048950490504915049250493504945049550496504975049850499505005050150502505035050450505505065050750508505095051050511505125051350514505155051650517505185051950520505215052250523505245052550526505275052850529505305053150532505335053450535505365053750538505395054050541505425054350544505455054650547505485054950550505515055250553505545055550556505575055850559505605056150562505635056450565505665056750568505695057050571505725057350574505755057650577505785057950580505815058250583505845058550586505875058850589505905059150592505935059450595505965059750598505995060050601506025060350604506055060650607506085060950610506115061250613506145061550616506175061850619506205062150622506235062450625506265062750628506295063050631506325063350634506355063650637506385063950640506415064250643506445064550646506475064850649506505065150652506535065450655506565065750658506595066050661506625066350664506655066650667506685066950670506715067250673506745067550676506775067850679506805068150682506835068450685506865068750688506895069050691506925069350694506955069650697506985069950700507015070250703507045070550706507075070850709507105071150712507135071450715507165071750718507195072050721507225072350724507255072650727507285072950730507315073250733507345073550736507375073850739507405074150742507435074450745507465074750748507495075050751507525075350754507555075650757507585075950760507615076250763507645076550766507675076850769507705077150772507735077450775507765077750778507795078050781507825078350784507855078650787507885078950790507915079250793507945079550796507975079850799508005080150802508035080450805508065080750808508095081050811508125081350814508155081650817508185081950820508215082250823508245082550826508275082850829508305083150832508335083450835508365083750838508395084050841508425084350844508455084650847508485084950850508515085250853508545085550856508575085850859508605086150862508635086450865508665086750868508695087050871508725087350874508755087650877508785087950880508815088250883508845088550886508875088850889508905089150892508935089450895508965089750898508995090050901509025090350904509055090650907509085090950910509115091250913509145091550916509175091850919509205092150922509235092450925509265092750928509295093050931509325093350934509355093650937509385093950940509415094250943509445094550946509475094850949509505095150952509535095450955509565095750958509595096050961509625096350964509655096650967509685096950970509715097250973509745097550976509775097850979509805098150982509835098450985509865098750988509895099050991509925099350994509955099650997509985099951000510015100251003510045100551006510075100851009510105101151012510135101451015510165101751018510195102051021510225102351024510255102651027510285102951030510315103251033510345103551036510375103851039510405104151042510435104451045510465104751048510495105051051510525105351054510555105651057510585105951060510615106251063510645106551066510675106851069510705107151072510735107451075510765107751078510795108051081510825108351084510855108651087510885108951090510915109251093510945109551096510975109851099511005110151102511035110451105511065110751108511095111051111511125111351114511155111651117511185111951120511215112251123511245112551126511275112851129511305113151132511335113451135511365113751138511395114051141511425114351144511455114651147511485114951150511515115251153511545115551156511575115851159511605116151162511635116451165511665116751168511695117051171511725117351174511755117651177511785117951180511815118251183511845118551186511875118851189511905119151192511935119451195511965119751198511995120051201512025120351204512055120651207512085120951210512115121251213512145121551216512175121851219512205122151222512235122451225512265122751228512295123051231512325123351234512355123651237512385123951240512415124251243512445124551246512475124851249512505125151252512535125451255512565125751258512595126051261512625126351264512655126651267512685126951270512715127251273512745127551276512775127851279512805128151282512835128451285512865128751288512895129051291512925129351294512955129651297512985129951300513015130251303513045130551306513075130851309513105131151312513135131451315513165131751318513195132051321513225132351324513255132651327513285132951330513315133251333513345133551336513375133851339513405134151342513435134451345513465134751348513495135051351513525135351354513555135651357513585135951360513615136251363513645136551366513675136851369513705137151372513735137451375513765137751378513795138051381513825138351384513855138651387513885138951390513915139251393513945139551396513975139851399514005140151402514035140451405514065140751408514095141051411514125141351414514155141651417514185141951420514215142251423514245142551426514275142851429514305143151432514335143451435514365143751438514395144051441514425144351444514455144651447514485144951450514515145251453514545145551456514575145851459514605146151462514635146451465514665146751468514695147051471514725147351474514755147651477514785147951480514815148251483514845148551486514875148851489514905149151492514935149451495514965149751498514995150051501515025150351504515055150651507515085150951510515115151251513515145151551516515175151851519515205152151522515235152451525515265152751528515295153051531515325153351534515355153651537515385153951540515415154251543515445154551546515475154851549515505155151552515535155451555515565155751558515595156051561515625156351564515655156651567515685156951570515715157251573515745157551576515775157851579515805158151582515835158451585515865158751588515895159051591515925159351594515955159651597515985159951600516015160251603516045160551606516075160851609516105161151612516135161451615516165161751618516195162051621516225162351624516255162651627516285162951630516315163251633516345163551636516375163851639516405164151642516435164451645516465164751648516495165051651516525165351654516555165651657516585165951660516615166251663516645166551666516675166851669516705167151672516735167451675516765167751678516795168051681516825168351684516855168651687516885168951690516915169251693516945169551696516975169851699517005170151702517035170451705517065170751708517095171051711517125171351714517155171651717517185171951720517215172251723517245172551726517275172851729517305173151732517335173451735517365173751738517395174051741517425174351744517455174651747517485174951750517515175251753517545175551756517575175851759517605176151762517635176451765517665176751768517695177051771517725177351774517755177651777517785177951780517815178251783517845178551786517875178851789517905179151792517935179451795517965179751798517995180051801518025180351804518055180651807518085180951810518115181251813518145181551816518175181851819518205182151822518235182451825518265182751828518295183051831518325183351834518355183651837518385183951840518415184251843518445184551846518475184851849518505185151852518535185451855518565185751858518595186051861518625186351864518655186651867518685186951870518715187251873518745187551876518775187851879518805188151882518835188451885518865188751888518895189051891518925189351894518955189651897518985189951900519015190251903519045190551906519075190851909519105191151912519135191451915519165191751918519195192051921519225192351924519255192651927519285192951930519315193251933519345193551936519375193851939519405194151942519435194451945519465194751948519495195051951519525195351954519555195651957519585195951960519615196251963519645196551966519675196851969519705197151972519735197451975519765197751978519795198051981519825198351984519855198651987519885198951990519915199251993519945199551996519975199851999520005200152002520035200452005520065200752008520095201052011520125201352014520155201652017520185201952020520215202252023520245202552026520275202852029520305203152032520335203452035520365203752038520395204052041520425204352044520455204652047520485204952050520515205252053520545205552056520575205852059520605206152062520635206452065520665206752068520695207052071520725207352074520755207652077520785207952080520815208252083520845208552086520875208852089520905209152092520935209452095520965209752098520995210052101521025210352104521055210652107521085210952110521115211252113521145211552116521175211852119521205212152122521235212452125521265212752128521295213052131521325213352134521355213652137521385213952140521415214252143521445214552146521475214852149521505215152152521535215452155521565215752158521595216052161521625216352164521655216652167521685216952170521715217252173521745217552176521775217852179521805218152182521835218452185521865218752188521895219052191521925219352194521955219652197521985219952200522015220252203522045220552206522075220852209522105221152212522135221452215522165221752218522195222052221522225222352224522255222652227522285222952230522315223252233522345223552236522375223852239522405224152242522435224452245522465224752248522495225052251522525225352254522555225652257522585225952260522615226252263522645226552266522675226852269522705227152272522735227452275522765227752278522795228052281522825228352284522855228652287522885228952290522915229252293522945229552296522975229852299523005230152302523035230452305523065230752308523095231052311523125231352314523155231652317523185231952320523215232252323523245232552326523275232852329523305233152332523335233452335523365233752338523395234052341523425234352344523455234652347523485234952350523515235252353523545235552356523575235852359523605236152362523635236452365523665236752368523695237052371523725237352374523755237652377523785237952380523815238252383523845238552386523875238852389523905239152392523935239452395523965239752398523995240052401524025240352404524055240652407524085240952410524115241252413524145241552416524175241852419524205242152422524235242452425524265242752428524295243052431524325243352434524355243652437524385243952440524415244252443524445244552446524475244852449524505245152452524535245452455524565245752458524595246052461524625246352464524655246652467524685246952470524715247252473524745247552476524775247852479524805248152482524835248452485524865248752488524895249052491524925249352494524955249652497524985249952500525015250252503525045250552506525075250852509525105251152512525135251452515525165251752518525195252052521525225252352524525255252652527525285252952530525315253252533525345253552536525375253852539525405254152542525435254452545525465254752548525495255052551525525255352554525555255652557525585255952560525615256252563525645256552566525675256852569525705257152572525735257452575525765257752578525795258052581525825258352584525855258652587525885258952590525915259252593525945259552596525975259852599526005260152602526035260452605526065260752608526095261052611526125261352614526155261652617526185261952620526215262252623526245262552626526275262852629526305263152632526335263452635526365263752638526395264052641526425264352644526455264652647526485264952650526515265252653526545265552656526575265852659526605266152662526635266452665526665266752668526695267052671526725267352674526755267652677526785267952680526815268252683526845268552686526875268852689526905269152692526935269452695526965269752698526995270052701527025270352704527055270652707527085270952710527115271252713527145271552716527175271852719527205272152722527235272452725527265272752728527295273052731527325273352734527355273652737527385273952740527415274252743527445274552746527475274852749527505275152752527535275452755527565275752758527595276052761527625276352764527655276652767527685276952770527715277252773527745277552776527775277852779527805278152782527835278452785527865278752788527895279052791527925279352794527955279652797527985279952800528015280252803528045280552806528075280852809528105281152812528135281452815528165281752818528195282052821528225282352824528255282652827528285282952830528315283252833528345283552836528375283852839528405284152842528435284452845528465284752848528495285052851528525285352854528555285652857528585285952860528615286252863528645286552866528675286852869528705287152872528735287452875528765287752878528795288052881528825288352884528855288652887528885288952890528915289252893528945289552896528975289852899529005290152902529035290452905529065290752908529095291052911529125291352914529155291652917529185291952920529215292252923529245292552926529275292852929529305293152932529335293452935529365293752938529395294052941529425294352944529455294652947529485294952950529515295252953529545295552956529575295852959529605296152962529635296452965529665296752968529695297052971529725297352974529755297652977529785297952980529815298252983529845298552986529875298852989529905299152992529935299452995529965299752998529995300053001530025300353004530055300653007530085300953010530115301253013530145301553016530175301853019530205302153022530235302453025530265302753028530295303053031530325303353034530355303653037530385303953040530415304253043530445304553046530475304853049530505305153052530535305453055530565305753058530595306053061530625306353064530655306653067530685306953070530715307253073530745307553076530775307853079530805308153082530835308453085530865308753088530895309053091530925309353094530955309653097530985309953100531015310253103531045310553106531075310853109531105311153112531135311453115531165311753118531195312053121531225312353124531255312653127531285312953130531315313253133531345313553136531375313853139531405314153142531435314453145531465314753148531495315053151531525315353154531555315653157531585315953160531615316253163531645316553166531675316853169531705317153172531735317453175531765317753178531795318053181531825318353184531855318653187531885318953190531915319253193531945319553196531975319853199532005320153202532035320453205532065320753208532095321053211532125321353214532155321653217532185321953220532215322253223532245322553226532275322853229532305323153232532335323453235532365323753238532395324053241532425324353244532455324653247532485324953250532515325253253532545325553256532575325853259532605326153262532635326453265532665326753268532695327053271532725327353274532755327653277532785327953280532815328253283532845328553286532875328853289532905329153292532935329453295532965329753298532995330053301533025330353304533055330653307533085330953310533115331253313533145331553316533175331853319533205332153322533235332453325533265332753328533295333053331533325333353334533355333653337533385333953340533415334253343533445334553346533475334853349533505335153352533535335453355533565335753358533595336053361533625336353364533655336653367533685336953370533715337253373533745337553376533775337853379533805338153382533835338453385533865338753388533895339053391533925339353394533955339653397533985339953400534015340253403534045340553406534075340853409534105341153412534135341453415534165341753418534195342053421534225342353424534255342653427534285342953430534315343253433534345343553436534375343853439534405344153442534435344453445534465344753448534495345053451534525345353454534555345653457534585345953460534615346253463534645346553466534675346853469534705347153472534735347453475534765347753478534795348053481534825348353484534855348653487534885348953490534915349253493534945349553496534975349853499535005350153502535035350453505535065350753508535095351053511535125351353514535155351653517535185351953520535215352253523535245352553526535275352853529535305353153532535335353453535535365353753538535395354053541535425354353544535455354653547535485354953550535515355253553535545355553556535575355853559535605356153562535635356453565535665356753568535695357053571535725357353574535755357653577535785357953580535815358253583535845358553586535875358853589535905359153592535935359453595535965359753598535995360053601536025360353604536055360653607536085360953610536115361253613536145361553616536175361853619536205362153622536235362453625536265362753628536295363053631536325363353634536355363653637536385363953640536415364253643536445364553646536475364853649536505365153652536535365453655536565365753658536595366053661536625366353664536655366653667536685366953670536715367253673536745367553676536775367853679536805368153682536835368453685536865368753688536895369053691536925369353694536955369653697536985369953700537015370253703537045370553706537075370853709537105371153712537135371453715537165371753718537195372053721537225372353724537255372653727537285372953730537315373253733537345373553736537375373853739537405374153742537435374453745537465374753748537495375053751537525375353754537555375653757537585375953760537615376253763537645376553766537675376853769537705377153772537735377453775537765377753778537795378053781537825378353784537855378653787537885378953790537915379253793537945379553796537975379853799538005380153802538035380453805538065380753808538095381053811538125381353814538155381653817538185381953820538215382253823538245382553826538275382853829538305383153832538335383453835538365383753838538395384053841538425384353844538455384653847538485384953850538515385253853538545385553856538575385853859538605386153862538635386453865538665386753868538695387053871538725387353874538755387653877538785387953880538815388253883538845388553886538875388853889538905389153892538935389453895538965389753898538995390053901539025390353904539055390653907539085390953910539115391253913539145391553916539175391853919539205392153922539235392453925539265392753928539295393053931539325393353934539355393653937539385393953940539415394253943539445394553946539475394853949539505395153952539535395453955539565395753958539595396053961539625396353964539655396653967539685396953970539715397253973539745397553976539775397853979539805398153982539835398453985539865398753988539895399053991539925399353994539955399653997539985399954000540015400254003540045400554006540075400854009540105401154012540135401454015540165401754018540195402054021540225402354024540255402654027540285402954030540315403254033540345403554036540375403854039540405404154042540435404454045540465404754048540495405054051540525405354054540555405654057540585405954060540615406254063540645406554066540675406854069540705407154072540735407454075540765407754078540795408054081540825408354084540855408654087540885408954090540915409254093540945409554096540975409854099541005410154102541035410454105541065410754108541095411054111541125411354114541155411654117541185411954120541215412254123541245412554126541275412854129541305413154132541335413454135541365413754138541395414054141541425414354144541455414654147541485414954150541515415254153541545415554156541575415854159541605416154162541635416454165541665416754168541695417054171541725417354174541755417654177541785417954180541815418254183541845418554186541875418854189541905419154192541935419454195541965419754198541995420054201542025420354204542055420654207542085420954210542115421254213542145421554216542175421854219542205422154222542235422454225542265422754228542295423054231542325423354234542355423654237542385423954240542415424254243542445424554246542475424854249542505425154252542535425454255542565425754258542595426054261542625426354264542655426654267542685426954270542715427254273542745427554276542775427854279542805428154282542835428454285542865428754288542895429054291542925429354294542955429654297542985429954300543015430254303543045430554306543075430854309543105431154312543135431454315543165431754318543195432054321543225432354324543255432654327543285432954330543315433254333543345433554336543375433854339543405434154342543435434454345543465434754348543495435054351543525435354354543555435654357543585435954360543615436254363543645436554366543675436854369543705437154372543735437454375543765437754378543795438054381543825438354384543855438654387543885438954390543915439254393543945439554396543975439854399544005440154402544035440454405544065440754408544095441054411544125441354414544155441654417544185441954420544215442254423544245442554426544275442854429544305443154432544335443454435544365443754438544395444054441544425444354444544455444654447544485444954450544515445254453544545445554456544575445854459544605446154462544635446454465544665446754468544695447054471544725447354474544755447654477544785447954480544815448254483544845448554486544875448854489544905449154492544935449454495544965449754498544995450054501545025450354504545055450654507545085450954510545115451254513545145451554516545175451854519545205452154522545235452454525545265452754528545295453054531545325453354534545355453654537545385453954540545415454254543545445454554546545475454854549545505455154552545535455454555545565455754558545595456054561545625456354564545655456654567545685456954570545715457254573545745457554576545775457854579545805458154582545835458454585545865458754588545895459054591545925459354594545955459654597545985459954600546015460254603546045460554606546075460854609546105461154612546135461454615546165461754618546195462054621546225462354624546255462654627546285462954630546315463254633546345463554636546375463854639546405464154642546435464454645546465464754648546495465054651546525465354654546555465654657546585465954660546615466254663546645466554666546675466854669546705467154672546735467454675546765467754678546795468054681546825468354684546855468654687546885468954690546915469254693546945469554696546975469854699547005470154702547035470454705547065470754708547095471054711547125471354714547155471654717547185471954720547215472254723547245472554726547275472854729547305473154732547335473454735547365473754738547395474054741547425474354744547455474654747547485474954750547515475254753547545475554756547575475854759547605476154762547635476454765547665476754768547695477054771547725477354774547755477654777547785477954780547815478254783547845478554786547875478854789547905479154792547935479454795547965479754798547995480054801548025480354804548055480654807548085480954810548115481254813548145481554816548175481854819548205482154822548235482454825548265482754828548295483054831548325483354834548355483654837548385483954840548415484254843548445484554846548475484854849548505485154852548535485454855548565485754858548595486054861548625486354864548655486654867548685486954870548715487254873548745487554876548775487854879548805488154882548835488454885548865488754888548895489054891548925489354894548955489654897548985489954900549015490254903549045490554906549075490854909549105491154912549135491454915549165491754918549195492054921549225492354924549255492654927549285492954930549315493254933549345493554936549375493854939549405494154942549435494454945549465494754948549495495054951549525495354954549555495654957549585495954960549615496254963549645496554966549675496854969549705497154972549735497454975549765497754978549795498054981549825498354984549855498654987549885498954990549915499254993549945499554996549975499854999550005500155002550035500455005550065500755008550095501055011550125501355014550155501655017550185501955020550215502255023550245502555026550275502855029550305503155032550335503455035550365503755038550395504055041550425504355044550455504655047550485504955050550515505255053550545505555056550575505855059550605506155062550635506455065550665506755068550695507055071550725507355074550755507655077550785507955080550815508255083550845508555086550875508855089550905509155092550935509455095550965509755098550995510055101551025510355104551055510655107551085510955110551115511255113551145511555116551175511855119551205512155122551235512455125551265512755128551295513055131551325513355134551355513655137551385513955140551415514255143551445514555146551475514855149551505515155152551535515455155551565515755158551595516055161551625516355164551655516655167551685516955170551715517255173551745517555176551775517855179551805518155182551835518455185551865518755188551895519055191551925519355194551955519655197551985519955200552015520255203552045520555206552075520855209552105521155212552135521455215552165521755218552195522055221552225522355224552255522655227552285522955230552315523255233552345523555236552375523855239552405524155242552435524455245552465524755248552495525055251552525525355254552555525655257552585525955260552615526255263552645526555266552675526855269552705527155272552735527455275552765527755278552795528055281552825528355284552855528655287552885528955290552915529255293552945529555296552975529855299553005530155302553035530455305553065530755308553095531055311553125531355314553155531655317553185531955320553215532255323553245532555326553275532855329553305533155332553335533455335553365533755338553395534055341553425534355344553455534655347553485534955350553515535255353553545535555356553575535855359553605536155362553635536455365553665536755368553695537055371553725537355374553755537655377553785537955380553815538255383553845538555386553875538855389553905539155392553935539455395553965539755398553995540055401554025540355404554055540655407554085540955410554115541255413554145541555416554175541855419554205542155422554235542455425554265542755428554295543055431554325543355434554355543655437554385543955440554415544255443554445544555446554475544855449554505545155452554535545455455554565545755458554595546055461554625546355464554655546655467554685546955470554715547255473554745547555476554775547855479554805548155482554835548455485554865548755488554895549055491554925549355494554955549655497554985549955500555015550255503555045550555506555075550855509555105551155512555135551455515555165551755518555195552055521555225552355524555255552655527555285552955530555315553255533555345553555536555375553855539555405554155542555435554455545555465554755548555495555055551555525555355554555555555655557555585555955560555615556255563555645556555566555675556855569555705557155572555735557455575555765557755578555795558055581555825558355584555855558655587555885558955590555915559255593555945559555596555975559855599556005560155602556035560455605556065560755608556095561055611556125561355614556155561655617556185561955620556215562255623556245562555626556275562855629556305563155632556335563455635556365563755638556395564055641556425564355644556455564655647556485564955650556515565255653556545565555656556575565855659556605566155662556635566455665556665566755668556695567055671556725567355674556755567655677556785567955680556815568255683556845568555686556875568855689556905569155692556935569455695556965569755698556995570055701557025570355704557055570655707557085570955710557115571255713557145571555716557175571855719557205572155722557235572455725557265572755728557295573055731557325573355734557355573655737557385573955740557415574255743557445574555746557475574855749557505575155752557535575455755557565575755758557595576055761557625576355764557655576655767557685576955770557715577255773557745577555776557775577855779557805578155782557835578455785557865578755788557895579055791557925579355794557955579655797557985579955800558015580255803558045580555806558075580855809558105581155812558135581455815558165581755818558195582055821558225582355824558255582655827558285582955830558315583255833558345583555836558375583855839558405584155842558435584455845558465584755848558495585055851558525585355854558555585655857558585585955860558615586255863558645586555866558675586855869558705587155872558735587455875558765587755878558795588055881558825588355884558855588655887558885588955890558915589255893558945589555896558975589855899559005590155902559035590455905559065590755908559095591055911559125591355914559155591655917559185591955920559215592255923559245592555926559275592855929559305593155932559335593455935559365593755938559395594055941559425594355944559455594655947559485594955950559515595255953559545595555956559575595855959559605596155962559635596455965559665596755968559695597055971559725597355974559755597655977559785597955980559815598255983559845598555986559875598855989559905599155992559935599455995559965599755998559995600056001560025600356004560055600656007560085600956010560115601256013560145601556016560175601856019560205602156022560235602456025560265602756028560295603056031560325603356034560355603656037560385603956040560415604256043560445604556046560475604856049560505605156052560535605456055560565605756058560595606056061560625606356064560655606656067560685606956070560715607256073560745607556076560775607856079560805608156082560835608456085560865608756088560895609056091560925609356094560955609656097560985609956100561015610256103561045610556106561075610856109561105611156112561135611456115561165611756118561195612056121561225612356124561255612656127561285612956130561315613256133561345613556136561375613856139561405614156142561435614456145561465614756148561495615056151561525615356154561555615656157561585615956160561615616256163561645616556166561675616856169561705617156172561735617456175561765617756178561795618056181561825618356184561855618656187561885618956190561915619256193561945619556196561975619856199562005620156202562035620456205562065620756208562095621056211562125621356214562155621656217562185621956220562215622256223562245622556226562275622856229562305623156232562335623456235562365623756238562395624056241562425624356244562455624656247562485624956250562515625256253562545625556256562575625856259562605626156262562635626456265562665626756268562695627056271562725627356274562755627656277562785627956280562815628256283562845628556286562875628856289562905629156292562935629456295562965629756298562995630056301563025630356304563055630656307563085630956310563115631256313563145631556316563175631856319563205632156322563235632456325563265632756328563295633056331563325633356334563355633656337563385633956340563415634256343563445634556346563475634856349563505635156352563535635456355563565635756358563595636056361563625636356364563655636656367563685636956370563715637256373563745637556376563775637856379563805638156382563835638456385563865638756388563895639056391563925639356394563955639656397563985639956400564015640256403564045640556406564075640856409564105641156412564135641456415564165641756418564195642056421564225642356424564255642656427564285642956430564315643256433564345643556436564375643856439564405644156442564435644456445564465644756448564495645056451564525645356454564555645656457564585645956460564615646256463564645646556466564675646856469564705647156472564735647456475564765647756478564795648056481564825648356484564855648656487564885648956490564915649256493564945649556496564975649856499565005650156502565035650456505565065650756508565095651056511565125651356514565155651656517565185651956520565215652256523565245652556526565275652856529565305653156532565335653456535565365653756538565395654056541565425654356544565455654656547565485654956550565515655256553565545655556556565575655856559565605656156562565635656456565565665656756568565695657056571565725657356574565755657656577565785657956580565815658256583565845658556586565875658856589565905659156592565935659456595565965659756598565995660056601566025660356604566055660656607566085660956610566115661256613566145661556616566175661856619566205662156622566235662456625566265662756628566295663056631566325663356634566355663656637566385663956640566415664256643566445664556646566475664856649566505665156652566535665456655566565665756658566595666056661566625666356664566655666656667566685666956670566715667256673566745667556676566775667856679566805668156682566835668456685566865668756688566895669056691566925669356694566955669656697566985669956700567015670256703567045670556706567075670856709567105671156712567135671456715567165671756718567195672056721567225672356724567255672656727567285672956730567315673256733567345673556736567375673856739567405674156742567435674456745567465674756748567495675056751567525675356754567555675656757567585675956760567615676256763567645676556766567675676856769567705677156772567735677456775567765677756778567795678056781567825678356784567855678656787567885678956790567915679256793567945679556796567975679856799568005680156802568035680456805568065680756808568095681056811568125681356814568155681656817568185681956820568215682256823568245682556826568275682856829568305683156832568335683456835568365683756838568395684056841568425684356844568455684656847568485684956850568515685256853568545685556856568575685856859568605686156862568635686456865568665686756868568695687056871568725687356874568755687656877568785687956880568815688256883568845688556886568875688856889568905689156892568935689456895568965689756898568995690056901569025690356904569055690656907569085690956910569115691256913569145691556916569175691856919569205692156922569235692456925569265692756928569295693056931569325693356934569355693656937569385693956940569415694256943569445694556946569475694856949569505695156952569535695456955569565695756958569595696056961569625696356964569655696656967569685696956970569715697256973569745697556976569775697856979569805698156982569835698456985569865698756988569895699056991569925699356994569955699656997569985699957000570015700257003570045700557006570075700857009570105701157012570135701457015570165701757018570195702057021570225702357024570255702657027570285702957030570315703257033570345703557036570375703857039570405704157042570435704457045570465704757048570495705057051570525705357054570555705657057570585705957060570615706257063570645706557066570675706857069570705707157072570735707457075570765707757078570795708057081570825708357084570855708657087570885708957090570915709257093570945709557096570975709857099571005710157102571035710457105571065710757108571095711057111571125711357114571155711657117571185711957120571215712257123571245712557126571275712857129571305713157132571335713457135571365713757138571395714057141571425714357144571455714657147571485714957150571515715257153571545715557156571575715857159571605716157162571635716457165571665716757168571695717057171571725717357174571755717657177571785717957180571815718257183571845718557186571875718857189571905719157192571935719457195571965719757198571995720057201572025720357204572055720657207572085720957210572115721257213572145721557216572175721857219572205722157222572235722457225572265722757228572295723057231572325723357234572355723657237572385723957240572415724257243572445724557246572475724857249572505725157252572535725457255572565725757258572595726057261572625726357264572655726657267572685726957270572715727257273572745727557276572775727857279572805728157282572835728457285572865728757288572895729057291572925729357294572955729657297572985729957300573015730257303573045730557306573075730857309573105731157312573135731457315573165731757318573195732057321573225732357324573255732657327573285732957330573315733257333573345733557336573375733857339573405734157342573435734457345573465734757348573495735057351573525735357354573555735657357573585735957360573615736257363573645736557366573675736857369573705737157372573735737457375573765737757378573795738057381573825738357384573855738657387573885738957390573915739257393573945739557396573975739857399574005740157402574035740457405574065740757408574095741057411574125741357414574155741657417574185741957420574215742257423574245742557426574275742857429574305743157432574335743457435574365743757438574395744057441574425744357444574455744657447574485744957450574515745257453574545745557456574575745857459574605746157462574635746457465574665746757468574695747057471574725747357474574755747657477574785747957480574815748257483574845748557486574875748857489574905749157492574935749457495574965749757498574995750057501575025750357504575055750657507575085750957510575115751257513575145751557516575175751857519575205752157522575235752457525575265752757528575295753057531575325753357534575355753657537575385753957540575415754257543575445754557546575475754857549575505755157552575535755457555575565755757558575595756057561575625756357564575655756657567575685756957570575715757257573575745757557576575775757857579575805758157582575835758457585575865758757588575895759057591575925759357594575955759657597575985759957600576015760257603576045760557606576075760857609576105761157612576135761457615576165761757618576195762057621576225762357624576255762657627576285762957630576315763257633576345763557636576375763857639576405764157642576435764457645576465764757648576495765057651576525765357654576555765657657576585765957660576615766257663576645766557666576675766857669576705767157672576735767457675576765767757678576795768057681576825768357684576855768657687576885768957690576915769257693576945769557696576975769857699577005770157702577035770457705577065770757708577095771057711577125771357714577155771657717577185771957720577215772257723577245772557726577275772857729577305773157732577335773457735577365773757738577395774057741577425774357744577455774657747577485774957750577515775257753577545775557756577575775857759577605776157762577635776457765577665776757768577695777057771577725777357774577755777657777577785777957780577815778257783577845778557786577875778857789577905779157792577935779457795577965779757798577995780057801578025780357804578055780657807578085780957810578115781257813578145781557816578175781857819578205782157822578235782457825578265782757828578295783057831578325783357834578355783657837578385783957840578415784257843578445784557846578475784857849578505785157852578535785457855578565785757858578595786057861578625786357864578655786657867578685786957870578715787257873578745787557876578775787857879578805788157882578835788457885578865788757888578895789057891578925789357894578955789657897578985789957900579015790257903579045790557906579075790857909579105791157912579135791457915579165791757918579195792057921579225792357924579255792657927579285792957930579315793257933579345793557936579375793857939579405794157942579435794457945579465794757948579495795057951579525795357954579555795657957579585795957960579615796257963579645796557966579675796857969579705797157972579735797457975579765797757978579795798057981579825798357984579855798657987579885798957990579915799257993579945799557996579975799857999580005800158002580035800458005580065800758008580095801058011580125801358014580155801658017580185801958020580215802258023580245802558026580275802858029580305803158032580335803458035580365803758038580395804058041580425804358044580455804658047580485804958050580515805258053580545805558056580575805858059580605806158062580635806458065580665806758068580695807058071580725807358074580755807658077580785807958080580815808258083580845808558086580875808858089580905809158092580935809458095580965809758098580995810058101581025810358104581055810658107581085810958110581115811258113581145811558116581175811858119581205812158122581235812458125581265812758128581295813058131581325813358134581355813658137581385813958140581415814258143581445814558146581475814858149581505815158152581535815458155581565815758158581595816058161581625816358164581655816658167581685816958170581715817258173581745817558176581775817858179581805818158182581835818458185581865818758188581895819058191581925819358194581955819658197581985819958200582015820258203582045820558206582075820858209582105821158212582135821458215582165821758218582195822058221582225822358224582255822658227582285822958230582315823258233582345823558236582375823858239582405824158242582435824458245582465824758248582495825058251582525825358254582555825658257582585825958260582615826258263582645826558266582675826858269582705827158272582735827458275582765827758278582795828058281582825828358284582855828658287582885828958290582915829258293582945829558296582975829858299583005830158302583035830458305583065830758308583095831058311583125831358314583155831658317583185831958320583215832258323583245832558326583275832858329583305833158332583335833458335583365833758338583395834058341583425834358344583455834658347583485834958350583515835258353583545835558356583575835858359583605836158362583635836458365583665836758368583695837058371583725837358374583755837658377583785837958380583815838258383583845838558386583875838858389583905839158392583935839458395583965839758398583995840058401584025840358404584055840658407584085840958410584115841258413584145841558416584175841858419584205842158422584235842458425584265842758428584295843058431584325843358434584355843658437584385843958440584415844258443584445844558446584475844858449584505845158452584535845458455584565845758458584595846058461584625846358464584655846658467584685846958470584715847258473584745847558476584775847858479584805848158482584835848458485584865848758488584895849058491584925849358494584955849658497584985849958500585015850258503585045850558506585075850858509585105851158512585135851458515585165851758518585195852058521585225852358524585255852658527585285852958530585315853258533585345853558536585375853858539585405854158542585435854458545585465854758548585495855058551585525855358554585555855658557585585855958560585615856258563585645856558566585675856858569585705857158572585735857458575585765857758578585795858058581585825858358584585855858658587585885858958590585915859258593585945859558596585975859858599586005860158602586035860458605586065860758608586095861058611586125861358614586155861658617586185861958620586215862258623586245862558626586275862858629586305863158632586335863458635586365863758638586395864058641586425864358644586455864658647586485864958650586515865258653586545865558656586575865858659586605866158662586635866458665586665866758668586695867058671586725867358674586755867658677586785867958680586815868258683586845868558686586875868858689586905869158692586935869458695586965869758698586995870058701587025870358704587055870658707587085870958710587115871258713587145871558716587175871858719587205872158722587235872458725587265872758728587295873058731587325873358734587355873658737587385873958740587415874258743587445874558746587475874858749587505875158752587535875458755587565875758758587595876058761587625876358764587655876658767587685876958770587715877258773587745877558776587775877858779587805878158782587835878458785587865878758788587895879058791587925879358794587955879658797587985879958800588015880258803588045880558806588075880858809588105881158812588135881458815588165881758818588195882058821588225882358824588255882658827588285882958830588315883258833588345883558836588375883858839588405884158842588435884458845588465884758848588495885058851588525885358854588555885658857588585885958860588615886258863588645886558866588675886858869588705887158872588735887458875588765887758878588795888058881588825888358884588855888658887588885888958890588915889258893588945889558896588975889858899589005890158902589035890458905589065890758908589095891058911589125891358914589155891658917589185891958920589215892258923589245892558926589275892858929589305893158932589335893458935589365893758938589395894058941589425894358944589455894658947589485894958950589515895258953589545895558956589575895858959589605896158962589635896458965589665896758968589695897058971589725897358974589755897658977589785897958980589815898258983589845898558986589875898858989589905899158992589935899458995589965899758998589995900059001590025900359004590055900659007590085900959010590115901259013590145901559016590175901859019590205902159022590235902459025590265902759028590295903059031590325903359034590355903659037590385903959040590415904259043590445904559046590475904859049590505905159052590535905459055590565905759058590595906059061590625906359064590655906659067590685906959070590715907259073590745907559076590775907859079590805908159082590835908459085590865908759088590895909059091590925909359094590955909659097590985909959100591015910259103591045910559106591075910859109591105911159112591135911459115591165911759118591195912059121591225912359124591255912659127591285912959130591315913259133591345913559136591375913859139591405914159142591435914459145591465914759148591495915059151591525915359154591555915659157591585915959160591615916259163591645916559166591675916859169591705917159172591735917459175591765917759178591795918059181591825918359184591855918659187591885918959190591915919259193591945919559196591975919859199592005920159202592035920459205592065920759208592095921059211592125921359214592155921659217592185921959220592215922259223592245922559226592275922859229592305923159232592335923459235592365923759238592395924059241592425924359244592455924659247592485924959250592515925259253592545925559256592575925859259592605926159262592635926459265592665926759268592695927059271592725927359274592755927659277592785927959280592815928259283592845928559286592875928859289592905929159292592935929459295592965929759298592995930059301593025930359304593055930659307593085930959310593115931259313593145931559316593175931859319593205932159322593235932459325593265932759328593295933059331593325933359334593355933659337593385933959340593415934259343593445934559346593475934859349593505935159352593535935459355593565935759358593595936059361593625936359364593655936659367593685936959370593715937259373593745937559376593775937859379593805938159382593835938459385593865938759388593895939059391593925939359394593955939659397593985939959400594015940259403594045940559406594075940859409594105941159412594135941459415594165941759418594195942059421594225942359424594255942659427594285942959430594315943259433594345943559436594375943859439594405944159442594435944459445594465944759448594495945059451594525945359454594555945659457594585945959460594615946259463594645946559466594675946859469594705947159472594735947459475594765947759478594795948059481594825948359484594855948659487594885948959490594915949259493594945949559496594975949859499595005950159502595035950459505595065950759508595095951059511595125951359514595155951659517595185951959520595215952259523595245952559526595275952859529595305953159532595335953459535595365953759538595395954059541595425954359544595455954659547595485954959550595515955259553595545955559556595575955859559595605956159562595635956459565595665956759568595695957059571595725957359574595755957659577595785957959580595815958259583595845958559586595875958859589595905959159592595935959459595595965959759598595995960059601596025960359604596055960659607596085960959610596115961259613596145961559616596175961859619596205962159622596235962459625596265962759628596295963059631596325963359634596355963659637596385963959640596415964259643596445964559646596475964859649596505965159652596535965459655596565965759658596595966059661596625966359664596655966659667596685966959670596715967259673596745967559676596775967859679596805968159682596835968459685596865968759688596895969059691596925969359694596955969659697596985969959700597015970259703597045970559706597075970859709597105971159712597135971459715597165971759718597195972059721597225972359724597255972659727597285972959730597315973259733597345973559736597375973859739597405974159742597435974459745597465974759748597495975059751597525975359754597555975659757597585975959760597615976259763597645976559766597675976859769597705977159772597735977459775597765977759778597795978059781597825978359784597855978659787597885978959790597915979259793597945979559796597975979859799598005980159802598035980459805598065980759808598095981059811598125981359814598155981659817598185981959820598215982259823598245982559826598275982859829598305983159832598335983459835598365983759838598395984059841598425984359844598455984659847598485984959850598515985259853598545985559856598575985859859598605986159862598635986459865598665986759868598695987059871598725987359874598755987659877598785987959880598815988259883598845988559886598875988859889598905989159892598935989459895598965989759898598995990059901599025990359904599055990659907599085990959910599115991259913599145991559916599175991859919599205992159922599235992459925599265992759928599295993059931599325993359934599355993659937599385993959940599415994259943599445994559946599475994859949599505995159952599535995459955599565995759958599595996059961599625996359964599655996659967599685996959970599715997259973599745997559976599775997859979599805998159982599835998459985599865998759988599895999059991599925999359994599955999659997599985999960000600016000260003600046000560006600076000860009600106001160012600136001460015600166001760018600196002060021600226002360024600256002660027600286002960030600316003260033600346003560036600376003860039600406004160042600436004460045600466004760048600496005060051600526005360054600556005660057600586005960060600616006260063600646006560066600676006860069600706007160072600736007460075600766007760078600796008060081600826008360084600856008660087600886008960090600916009260093600946009560096600976009860099601006010160102601036010460105601066010760108601096011060111601126011360114601156011660117601186011960120601216012260123601246012560126601276012860129601306013160132601336013460135601366013760138601396014060141601426014360144601456014660147601486014960150601516015260153601546015560156601576015860159601606016160162601636016460165601666016760168601696017060171601726017360174601756017660177601786017960180601816018260183601846018560186601876018860189601906019160192601936019460195601966019760198601996020060201602026020360204602056020660207602086020960210602116021260213602146021560216602176021860219602206022160222602236022460225602266022760228602296023060231602326023360234602356023660237602386023960240602416024260243602446024560246602476024860249602506025160252602536025460255602566025760258602596026060261602626026360264602656026660267602686026960270602716027260273602746027560276602776027860279602806028160282602836028460285602866028760288602896029060291602926029360294602956029660297602986029960300603016030260303603046030560306603076030860309603106031160312603136031460315603166031760318603196032060321603226032360324603256032660327603286032960330603316033260333603346033560336603376033860339603406034160342603436034460345603466034760348603496035060351603526035360354603556035660357603586035960360603616036260363603646036560366603676036860369603706037160372603736037460375603766037760378603796038060381603826038360384603856038660387603886038960390603916039260393603946039560396603976039860399604006040160402604036040460405604066040760408604096041060411604126041360414604156041660417604186041960420604216042260423604246042560426604276042860429604306043160432604336043460435604366043760438604396044060441604426044360444604456044660447604486044960450604516045260453604546045560456604576045860459604606046160462604636046460465604666046760468604696047060471604726047360474604756047660477604786047960480604816048260483604846048560486604876048860489604906049160492604936049460495604966049760498604996050060501605026050360504605056050660507605086050960510605116051260513605146051560516605176051860519605206052160522605236052460525605266052760528605296053060531605326053360534605356053660537605386053960540605416054260543605446054560546605476054860549605506055160552605536055460555605566055760558605596056060561605626056360564605656056660567605686056960570605716057260573605746057560576605776057860579605806058160582605836058460585605866058760588605896059060591605926059360594605956059660597605986059960600606016060260603606046060560606606076060860609606106061160612606136061460615606166061760618606196062060621606226062360624606256062660627606286062960630606316063260633606346063560636606376063860639606406064160642606436064460645606466064760648606496065060651606526065360654606556065660657606586065960660606616066260663606646066560666606676066860669606706067160672606736067460675606766067760678606796068060681606826068360684606856068660687606886068960690606916069260693606946069560696606976069860699607006070160702607036070460705607066070760708607096071060711607126071360714607156071660717607186071960720607216072260723607246072560726607276072860729607306073160732607336073460735607366073760738607396074060741607426074360744607456074660747607486074960750607516075260753607546075560756607576075860759607606076160762607636076460765607666076760768607696077060771607726077360774607756077660777607786077960780607816078260783607846078560786607876078860789607906079160792607936079460795607966079760798607996080060801608026080360804608056080660807608086080960810608116081260813608146081560816608176081860819608206082160822608236082460825608266082760828608296083060831608326083360834608356083660837608386083960840608416084260843608446084560846608476084860849608506085160852608536085460855608566085760858608596086060861608626086360864608656086660867608686086960870608716087260873608746087560876608776087860879608806088160882608836088460885608866088760888608896089060891608926089360894608956089660897608986089960900609016090260903609046090560906609076090860909609106091160912609136091460915609166091760918609196092060921609226092360924609256092660927609286092960930609316093260933609346093560936609376093860939609406094160942609436094460945609466094760948609496095060951609526095360954609556095660957609586095960960609616096260963609646096560966609676096860969609706097160972609736097460975609766097760978609796098060981609826098360984609856098660987609886098960990609916099260993609946099560996609976099860999610006100161002610036100461005610066100761008610096101061011610126101361014610156101661017610186101961020610216102261023610246102561026610276102861029610306103161032610336103461035610366103761038610396104061041610426104361044610456104661047610486104961050610516105261053610546105561056610576105861059610606106161062610636106461065610666106761068610696107061071610726107361074610756107661077610786107961080610816108261083610846108561086610876108861089610906109161092610936109461095610966109761098610996110061101611026110361104611056110661107611086110961110611116111261113611146111561116611176111861119611206112161122611236112461125611266112761128611296113061131611326113361134611356113661137611386113961140611416114261143611446114561146611476114861149611506115161152611536115461155611566115761158611596116061161611626116361164611656116661167611686116961170611716117261173611746117561176611776117861179611806118161182611836118461185611866118761188611896119061191611926119361194611956119661197611986119961200612016120261203612046120561206612076120861209612106121161212612136121461215612166121761218612196122061221612226122361224612256122661227612286122961230612316123261233612346123561236612376123861239612406124161242612436124461245612466124761248612496125061251612526125361254612556125661257612586125961260612616126261263612646126561266612676126861269612706127161272612736127461275612766127761278612796128061281612826128361284612856128661287612886128961290612916129261293612946129561296612976129861299613006130161302613036130461305613066130761308613096131061311613126131361314613156131661317613186131961320613216132261323613246132561326613276132861329613306133161332613336133461335613366133761338613396134061341613426134361344613456134661347613486134961350613516135261353613546135561356613576135861359613606136161362613636136461365613666136761368613696137061371613726137361374613756137661377613786137961380613816138261383613846138561386613876138861389613906139161392613936139461395613966139761398613996140061401614026140361404614056140661407614086140961410614116141261413614146141561416614176141861419614206142161422614236142461425614266142761428614296143061431614326143361434614356143661437614386143961440614416144261443614446144561446614476144861449614506145161452614536145461455614566145761458614596146061461614626146361464614656146661467614686146961470614716147261473614746147561476614776147861479614806148161482614836148461485614866148761488614896149061491614926149361494614956149661497614986149961500615016150261503615046150561506615076150861509615106151161512615136151461515615166151761518615196152061521615226152361524615256152661527615286152961530615316153261533615346153561536615376153861539615406154161542615436154461545615466154761548615496155061551615526155361554615556155661557615586155961560615616156261563615646156561566615676156861569615706157161572615736157461575615766157761578615796158061581615826158361584615856158661587615886158961590615916159261593615946159561596615976159861599616006160161602616036160461605616066160761608616096161061611616126161361614616156161661617616186161961620616216162261623616246162561626616276162861629616306163161632616336163461635616366163761638616396164061641616426164361644616456164661647616486164961650616516165261653616546165561656616576165861659616606166161662616636166461665616666166761668616696167061671616726167361674616756167661677616786167961680616816168261683616846168561686616876168861689616906169161692616936169461695616966169761698616996170061701617026170361704617056170661707617086170961710617116171261713617146171561716617176171861719617206172161722617236172461725617266172761728617296173061731617326173361734617356173661737617386173961740617416174261743617446174561746617476174861749617506175161752617536175461755617566175761758617596176061761617626176361764617656176661767617686176961770617716177261773617746177561776617776177861779617806178161782617836178461785617866178761788617896179061791617926179361794617956179661797617986179961800618016180261803618046180561806618076180861809618106181161812618136181461815618166181761818618196182061821618226182361824618256182661827618286182961830618316183261833618346183561836618376183861839618406184161842618436184461845618466184761848618496185061851618526185361854618556185661857618586185961860618616186261863618646186561866618676186861869618706187161872618736187461875618766187761878618796188061881618826188361884618856188661887618886188961890618916189261893618946189561896618976189861899619006190161902619036190461905619066190761908619096191061911619126191361914619156191661917619186191961920619216192261923619246192561926619276192861929619306193161932619336193461935619366193761938619396194061941619426194361944619456194661947619486194961950619516195261953619546195561956619576195861959619606196161962619636196461965619666196761968619696197061971619726197361974619756197661977619786197961980619816198261983619846198561986619876198861989619906199161992619936199461995619966199761998619996200062001620026200362004620056200662007620086200962010620116201262013620146201562016620176201862019620206202162022620236202462025620266202762028620296203062031620326203362034620356203662037620386203962040620416204262043620446204562046620476204862049620506205162052620536205462055620566205762058620596206062061620626206362064620656206662067620686206962070620716207262073620746207562076620776207862079620806208162082620836208462085620866208762088620896209062091620926209362094620956209662097620986209962100621016210262103621046210562106621076210862109621106211162112621136211462115621166211762118621196212062121621226212362124621256212662127621286212962130621316213262133621346213562136621376213862139621406214162142621436214462145621466214762148621496215062151621526215362154621556215662157621586215962160621616216262163621646216562166621676216862169621706217162172621736217462175621766217762178621796218062181621826218362184621856218662187621886218962190621916219262193621946219562196621976219862199622006220162202622036220462205622066220762208622096221062211622126221362214622156221662217622186221962220622216222262223622246222562226622276222862229622306223162232622336223462235622366223762238622396224062241622426224362244622456224662247622486224962250622516225262253622546225562256622576225862259622606226162262622636226462265622666226762268622696227062271622726227362274622756227662277622786227962280622816228262283622846228562286622876228862289622906229162292622936229462295622966229762298622996230062301623026230362304623056230662307623086230962310623116231262313623146231562316623176231862319623206232162322623236232462325623266232762328623296233062331623326233362334623356233662337623386233962340623416234262343623446234562346623476234862349623506235162352623536235462355623566235762358623596236062361623626236362364623656236662367623686236962370623716237262373623746237562376623776237862379623806238162382623836238462385623866238762388623896239062391623926239362394623956239662397623986239962400624016240262403624046240562406624076240862409624106241162412624136241462415624166241762418624196242062421624226242362424624256242662427624286242962430624316243262433624346243562436624376243862439624406244162442624436244462445624466244762448624496245062451624526245362454624556245662457624586245962460624616246262463624646246562466624676246862469624706247162472624736247462475624766247762478624796248062481624826248362484624856248662487624886248962490624916249262493624946249562496624976249862499625006250162502625036250462505625066250762508625096251062511625126251362514625156251662517625186251962520625216252262523625246252562526625276252862529625306253162532625336253462535625366253762538625396254062541625426254362544625456254662547625486254962550625516255262553625546255562556625576255862559625606256162562625636256462565625666256762568625696257062571625726257362574625756257662577625786257962580625816258262583625846258562586625876258862589625906259162592625936259462595625966259762598625996260062601626026260362604626056260662607626086260962610626116261262613626146261562616626176261862619626206262162622626236262462625626266262762628626296263062631626326263362634626356263662637626386263962640626416264262643626446264562646626476264862649626506265162652626536265462655626566265762658626596266062661626626266362664626656266662667626686266962670626716267262673626746267562676626776267862679626806268162682626836268462685626866268762688626896269062691626926269362694626956269662697626986269962700627016270262703627046270562706627076270862709627106271162712627136271462715627166271762718627196272062721627226272362724627256272662727627286272962730627316273262733627346273562736627376273862739627406274162742627436274462745627466274762748627496275062751627526275362754627556275662757627586275962760627616276262763627646276562766627676276862769627706277162772627736277462775627766277762778627796278062781627826278362784627856278662787627886278962790627916279262793627946279562796627976279862799628006280162802628036280462805628066280762808628096281062811628126281362814628156281662817628186281962820628216282262823628246282562826628276282862829628306283162832628336283462835628366283762838628396284062841628426284362844628456284662847628486284962850628516285262853628546285562856628576285862859628606286162862628636286462865628666286762868628696287062871628726287362874628756287662877628786287962880628816288262883628846288562886628876288862889628906289162892628936289462895628966289762898628996290062901629026290362904629056290662907629086290962910629116291262913629146291562916629176291862919629206292162922629236292462925629266292762928629296293062931629326293362934629356293662937629386293962940629416294262943629446294562946629476294862949629506295162952629536295462955629566295762958629596296062961629626296362964629656296662967629686296962970629716297262973629746297562976629776297862979629806298162982629836298462985629866298762988629896299062991629926299362994629956299662997629986299963000630016300263003630046300563006630076300863009630106301163012630136301463015630166301763018630196302063021630226302363024630256302663027630286302963030630316303263033630346303563036630376303863039630406304163042630436304463045630466304763048630496305063051630526305363054630556305663057630586305963060630616306263063630646306563066630676306863069630706307163072630736307463075630766307763078630796308063081630826308363084630856308663087630886308963090630916309263093630946309563096630976309863099631006310163102631036310463105631066310763108631096311063111631126311363114631156311663117631186311963120631216312263123631246312563126631276312863129631306313163132631336313463135631366313763138631396314063141631426314363144631456314663147631486314963150631516315263153631546315563156631576315863159631606316163162631636316463165631666316763168631696317063171631726317363174631756317663177631786317963180631816318263183631846318563186631876318863189631906319163192631936319463195631966319763198631996320063201632026320363204632056320663207632086320963210632116321263213632146321563216632176321863219632206322163222632236322463225632266322763228632296323063231632326323363234632356323663237632386323963240632416324263243632446324563246632476324863249632506325163252632536325463255632566325763258632596326063261632626326363264632656326663267632686326963270632716327263273632746327563276632776327863279632806328163282632836328463285632866328763288632896329063291632926329363294632956329663297632986329963300633016330263303633046330563306633076330863309633106331163312633136331463315633166331763318633196332063321633226332363324633256332663327633286332963330633316333263333633346333563336633376333863339633406334163342633436334463345633466334763348633496335063351633526335363354633556335663357633586335963360633616336263363633646336563366633676336863369633706337163372633736337463375633766337763378633796338063381633826338363384633856338663387633886338963390633916339263393633946339563396633976339863399634006340163402634036340463405634066340763408634096341063411634126341363414634156341663417634186341963420634216342263423634246342563426634276342863429634306343163432634336343463435634366343763438634396344063441634426344363444634456344663447634486344963450634516345263453634546345563456634576345863459634606346163462634636346463465634666346763468634696347063471634726347363474634756347663477634786347963480634816348263483634846348563486634876348863489634906349163492634936349463495634966349763498634996350063501635026350363504635056350663507635086350963510635116351263513635146351563516635176351863519635206352163522635236352463525635266352763528635296353063531635326353363534635356353663537635386353963540635416354263543635446354563546635476354863549635506355163552635536355463555635566355763558635596356063561635626356363564635656356663567635686356963570635716357263573635746357563576635776357863579635806358163582635836358463585635866358763588635896359063591635926359363594635956359663597635986359963600636016360263603636046360563606636076360863609636106361163612636136361463615636166361763618636196362063621636226362363624636256362663627636286362963630636316363263633636346363563636636376363863639636406364163642636436364463645636466364763648636496365063651636526365363654636556365663657636586365963660636616366263663636646366563666636676366863669636706367163672636736367463675636766367763678636796368063681636826368363684636856368663687636886368963690636916369263693636946369563696636976369863699637006370163702637036370463705637066370763708637096371063711637126371363714637156371663717637186371963720637216372263723637246372563726637276372863729637306373163732637336373463735637366373763738637396374063741637426374363744637456374663747637486374963750637516375263753637546375563756637576375863759637606376163762637636376463765637666376763768637696377063771637726377363774637756377663777637786377963780637816378263783637846378563786637876378863789637906379163792637936379463795637966379763798637996380063801638026380363804638056380663807638086380963810638116381263813638146381563816638176381863819638206382163822638236382463825638266382763828638296383063831638326383363834638356383663837638386383963840638416384263843638446384563846638476384863849638506385163852638536385463855638566385763858638596386063861638626386363864638656386663867638686386963870638716387263873638746387563876638776387863879638806388163882638836388463885638866388763888638896389063891638926389363894638956389663897638986389963900639016390263903639046390563906639076390863909639106391163912639136391463915639166391763918639196392063921639226392363924639256392663927639286392963930639316393263933639346393563936639376393863939639406394163942639436394463945639466394763948639496395063951639526395363954639556395663957639586395963960639616396263963639646396563966639676396863969639706397163972639736397463975639766397763978639796398063981639826398363984639856398663987639886398963990639916399263993639946399563996639976399863999640006400164002640036400464005640066400764008640096401064011640126401364014640156401664017640186401964020640216402264023640246402564026640276402864029640306403164032640336403464035640366403764038640396404064041640426404364044640456404664047640486404964050640516405264053640546405564056640576405864059640606406164062640636406464065640666406764068640696407064071640726407364074640756407664077640786407964080640816408264083640846408564086640876408864089640906409164092640936409464095640966409764098640996410064101641026410364104641056410664107641086410964110641116411264113641146411564116641176411864119641206412164122641236412464125641266412764128641296413064131641326413364134641356413664137641386413964140641416414264143641446414564146641476414864149641506415164152641536415464155641566415764158641596416064161641626416364164641656416664167641686416964170641716417264173641746417564176641776417864179641806418164182641836418464185641866418764188641896419064191641926419364194641956419664197641986419964200642016420264203642046420564206642076420864209642106421164212642136421464215642166421764218642196422064221642226422364224642256422664227642286422964230642316423264233642346423564236642376423864239642406424164242642436424464245642466424764248642496425064251642526425364254642556425664257642586425964260642616426264263642646426564266642676426864269642706427164272642736427464275642766427764278642796428064281642826428364284642856428664287642886428964290642916429264293642946429564296642976429864299643006430164302643036430464305643066430764308643096431064311643126431364314643156431664317643186431964320643216432264323643246432564326643276432864329643306433164332643336433464335643366433764338643396434064341643426434364344643456434664347643486434964350643516435264353643546435564356643576435864359643606436164362643636436464365643666436764368643696437064371643726437364374643756437664377643786437964380643816438264383643846438564386643876438864389643906439164392643936439464395643966439764398643996440064401644026440364404644056440664407644086440964410644116441264413644146441564416644176441864419644206442164422644236442464425644266442764428644296443064431644326443364434644356443664437644386443964440644416444264443644446444564446644476444864449644506445164452644536445464455644566445764458644596446064461644626446364464644656446664467644686446964470644716447264473644746447564476644776447864479644806448164482644836448464485644866448764488644896449064491644926449364494644956449664497644986449964500645016450264503645046450564506645076450864509645106451164512645136451464515645166451764518645196452064521645226452364524645256452664527645286452964530645316453264533645346453564536645376453864539645406454164542645436454464545645466454764548645496455064551645526455364554645556455664557645586455964560645616456264563645646456564566645676456864569645706457164572645736457464575645766457764578645796458064581645826458364584645856458664587645886458964590645916459264593645946459564596645976459864599646006460164602646036460464605646066460764608646096461064611646126461364614646156461664617646186461964620646216462264623646246462564626646276462864629646306463164632646336463464635646366463764638646396464064641646426464364644646456464664647646486464964650646516465264653646546465564656646576465864659646606466164662646636466464665646666466764668646696467064671646726467364674646756467664677646786467964680646816468264683646846468564686646876468864689646906469164692646936469464695646966469764698646996470064701647026470364704647056470664707647086470964710647116471264713647146471564716647176471864719647206472164722647236472464725647266472764728647296473064731647326473364734647356473664737647386473964740647416474264743647446474564746647476474864749647506475164752647536475464755647566475764758647596476064761647626476364764647656476664767647686476964770647716477264773647746477564776647776477864779647806478164782647836478464785647866478764788647896479064791647926479364794647956479664797647986479964800648016480264803648046480564806648076480864809648106481164812648136481464815648166481764818648196482064821648226482364824648256482664827648286482964830648316483264833648346483564836648376483864839648406484164842648436484464845648466484764848648496485064851648526485364854648556485664857648586485964860648616486264863648646486564866648676486864869648706487164872648736487464875648766487764878648796488064881648826488364884648856488664887648886488964890648916489264893648946489564896648976489864899649006490164902649036490464905649066490764908649096491064911649126491364914649156491664917649186491964920649216492264923649246492564926649276492864929649306493164932649336493464935649366493764938649396494064941649426494364944649456494664947649486494964950649516495264953649546495564956649576495864959649606496164962649636496464965649666496764968649696497064971649726497364974649756497664977649786497964980649816498264983649846498564986649876498864989649906499164992649936499464995649966499764998649996500065001650026500365004650056500665007650086500965010650116501265013650146501565016650176501865019650206502165022650236502465025650266502765028650296503065031650326503365034650356503665037650386503965040650416504265043650446504565046650476504865049650506505165052650536505465055650566505765058650596506065061650626506365064650656506665067650686506965070650716507265073650746507565076650776507865079650806508165082650836508465085650866508765088650896509065091650926509365094650956509665097650986509965100651016510265103651046510565106651076510865109651106511165112651136511465115651166511765118651196512065121651226512365124651256512665127651286512965130651316513265133651346513565136651376513865139651406514165142651436514465145651466514765148651496515065151651526515365154651556515665157651586515965160651616516265163651646516565166651676516865169651706517165172651736517465175651766517765178651796518065181651826518365184651856518665187651886518965190651916519265193651946519565196651976519865199652006520165202652036520465205652066520765208652096521065211652126521365214652156521665217652186521965220652216522265223652246522565226652276522865229652306523165232652336523465235652366523765238652396524065241652426524365244652456524665247652486524965250652516525265253652546525565256652576525865259652606526165262652636526465265652666526765268652696527065271652726527365274652756527665277652786527965280652816528265283652846528565286652876528865289652906529165292652936529465295652966529765298652996530065301653026530365304653056530665307653086530965310653116531265313653146531565316653176531865319653206532165322653236532465325653266532765328653296533065331653326533365334653356533665337653386533965340653416534265343653446534565346653476534865349653506535165352653536535465355653566535765358653596536065361653626536365364653656536665367653686536965370653716537265373653746537565376653776537865379653806538165382653836538465385653866538765388653896539065391653926539365394653956539665397653986539965400654016540265403654046540565406654076540865409654106541165412654136541465415654166541765418654196542065421654226542365424654256542665427654286542965430654316543265433654346543565436654376543865439654406544165442654436544465445654466544765448654496545065451654526545365454654556545665457654586545965460654616546265463654646546565466654676546865469654706547165472654736547465475654766547765478654796548065481654826548365484654856548665487654886548965490654916549265493654946549565496654976549865499655006550165502655036550465505655066550765508655096551065511655126551365514655156551665517655186551965520655216552265523655246552565526655276552865529655306553165532655336553465535655366553765538655396554065541655426554365544655456554665547655486554965550655516555265553655546555565556655576555865559655606556165562655636556465565655666556765568655696557065571655726557365574655756557665577655786557965580655816558265583655846558565586655876558865589655906559165592655936559465595655966559765598655996560065601656026560365604656056560665607656086560965610656116561265613656146561565616656176561865619656206562165622656236562465625656266562765628656296563065631656326563365634656356563665637656386563965640656416564265643656446564565646656476564865649656506565165652656536565465655656566565765658656596566065661656626566365664656656566665667656686566965670656716567265673656746567565676656776567865679656806568165682656836568465685656866568765688656896569065691656926569365694656956569665697656986569965700657016570265703657046570565706657076570865709657106571165712657136571465715657166571765718657196572065721657226572365724657256572665727657286572965730657316573265733657346573565736657376573865739657406574165742657436574465745657466574765748657496575065751657526575365754657556575665757657586575965760657616576265763657646576565766657676576865769657706577165772657736577465775657766577765778657796578065781657826578365784657856578665787657886578965790657916579265793657946579565796657976579865799658006580165802658036580465805658066580765808658096581065811658126581365814658156581665817658186581965820658216582265823658246582565826658276582865829658306583165832658336583465835658366583765838658396584065841658426584365844658456584665847658486584965850658516585265853658546585565856658576585865859658606586165862658636586465865658666586765868658696587065871658726587365874658756587665877658786587965880658816588265883658846588565886658876588865889658906589165892658936589465895658966589765898658996590065901659026590365904659056590665907659086590965910659116591265913659146591565916659176591865919659206592165922659236592465925659266592765928659296593065931659326593365934659356593665937659386593965940659416594265943659446594565946659476594865949659506595165952659536595465955659566595765958659596596065961659626596365964659656596665967659686596965970659716597265973659746597565976659776597865979659806598165982659836598465985659866598765988659896599065991659926599365994659956599665997659986599966000660016600266003660046600566006660076600866009660106601166012660136601466015660166601766018660196602066021660226602366024660256602666027660286602966030660316603266033660346603566036660376603866039660406604166042660436604466045660466604766048660496605066051660526605366054660556605666057660586605966060660616606266063660646606566066660676606866069660706607166072660736607466075660766607766078660796608066081660826608366084660856608666087660886608966090660916609266093660946609566096660976609866099661006610166102661036610466105661066610766108661096611066111661126611366114661156611666117661186611966120661216612266123661246612566126661276612866129661306613166132661336613466135661366613766138661396614066141661426614366144661456614666147661486614966150661516615266153661546615566156661576615866159661606616166162661636616466165661666616766168661696617066171661726617366174661756617666177661786617966180661816618266183661846618566186661876618866189661906619166192661936619466195661966619766198661996620066201662026620366204662056620666207662086620966210662116621266213662146621566216662176621866219662206622166222662236622466225662266622766228662296623066231662326623366234662356623666237662386623966240662416624266243662446624566246662476624866249662506625166252662536625466255662566625766258662596626066261662626626366264662656626666267662686626966270662716627266273662746627566276662776627866279662806628166282662836628466285662866628766288662896629066291662926629366294662956629666297662986629966300663016630266303663046630566306663076630866309663106631166312663136631466315663166631766318663196632066321663226632366324663256632666327663286632966330663316633266333663346633566336663376633866339663406634166342663436634466345663466634766348663496635066351663526635366354663556635666357663586635966360663616636266363663646636566366663676636866369663706637166372663736637466375663766637766378663796638066381663826638366384663856638666387663886638966390663916639266393663946639566396663976639866399664006640166402664036640466405664066640766408664096641066411664126641366414664156641666417664186641966420664216642266423664246642566426664276642866429664306643166432664336643466435664366643766438664396644066441664426644366444664456644666447664486644966450664516645266453664546645566456664576645866459664606646166462664636646466465664666646766468664696647066471664726647366474664756647666477664786647966480664816648266483664846648566486664876648866489664906649166492664936649466495664966649766498664996650066501665026650366504665056650666507665086650966510665116651266513665146651566516665176651866519665206652166522665236652466525665266652766528665296653066531665326653366534665356653666537665386653966540665416654266543665446654566546665476654866549665506655166552665536655466555665566655766558665596656066561665626656366564665656656666567665686656966570665716657266573665746657566576665776657866579665806658166582665836658466585665866658766588665896659066591665926659366594665956659666597665986659966600666016660266603666046660566606666076660866609666106661166612666136661466615666166661766618666196662066621666226662366624666256662666627666286662966630666316663266633666346663566636666376663866639666406664166642666436664466645666466664766648666496665066651666526665366654666556665666657666586665966660666616666266663666646666566666666676666866669666706667166672666736667466675666766667766678666796668066681666826668366684666856668666687666886668966690666916669266693666946669566696666976669866699667006670166702667036670466705667066670766708667096671066711667126671366714667156671666717667186671966720667216672266723667246672566726667276672866729667306673166732667336673466735667366673766738667396674066741667426674366744667456674666747667486674966750667516675266753667546675566756667576675866759667606676166762667636676466765667666676766768667696677066771667726677366774667756677666777667786677966780667816678266783667846678566786667876678866789667906679166792667936679466795667966679766798667996680066801668026680366804668056680666807668086680966810668116681266813668146681566816668176681866819668206682166822668236682466825668266682766828668296683066831668326683366834668356683666837668386683966840668416684266843668446684566846668476684866849668506685166852668536685466855668566685766858668596686066861668626686366864668656686666867668686686966870668716687266873668746687566876668776687866879668806688166882668836688466885668866688766888668896689066891668926689366894668956689666897668986689966900669016690266903669046690566906669076690866909669106691166912669136691466915669166691766918669196692066921669226692366924669256692666927669286692966930669316693266933669346693566936669376693866939669406694166942669436694466945669466694766948669496695066951669526695366954669556695666957669586695966960669616696266963669646696566966669676696866969669706697166972669736697466975669766697766978669796698066981669826698366984669856698666987669886698966990669916699266993669946699566996669976699866999670006700167002670036700467005670066700767008670096701067011670126701367014670156701667017670186701967020670216702267023670246702567026670276702867029670306703167032670336703467035670366703767038670396704067041670426704367044670456704667047670486704967050670516705267053670546705567056670576705867059670606706167062670636706467065670666706767068670696707067071670726707367074670756707667077670786707967080670816708267083670846708567086670876708867089670906709167092670936709467095670966709767098670996710067101671026710367104671056710667107671086710967110671116711267113671146711567116671176711867119671206712167122671236712467125671266712767128671296713067131671326713367134671356713667137671386713967140671416714267143671446714567146671476714867149671506715167152671536715467155671566715767158671596716067161671626716367164671656716667167671686716967170671716717267173671746717567176671776717867179671806718167182671836718467185671866718767188671896719067191671926719367194671956719667197671986719967200672016720267203672046720567206672076720867209672106721167212672136721467215672166721767218672196722067221672226722367224672256722667227672286722967230672316723267233672346723567236672376723867239672406724167242672436724467245672466724767248672496725067251672526725367254672556725667257672586725967260672616726267263672646726567266672676726867269672706727167272672736727467275672766727767278672796728067281672826728367284672856728667287672886728967290672916729267293672946729567296672976729867299673006730167302673036730467305673066730767308673096731067311673126731367314673156731667317673186731967320673216732267323673246732567326673276732867329673306733167332673336733467335673366733767338673396734067341673426734367344673456734667347673486734967350673516735267353673546735567356673576735867359673606736167362673636736467365673666736767368673696737067371673726737367374673756737667377673786737967380673816738267383673846738567386673876738867389673906739167392673936739467395673966739767398673996740067401674026740367404674056740667407674086740967410674116741267413674146741567416674176741867419674206742167422674236742467425674266742767428674296743067431674326743367434674356743667437674386743967440674416744267443674446744567446674476744867449674506745167452674536745467455674566745767458674596746067461674626746367464674656746667467674686746967470674716747267473674746747567476674776747867479674806748167482674836748467485674866748767488674896749067491674926749367494674956749667497674986749967500675016750267503675046750567506675076750867509675106751167512675136751467515675166751767518675196752067521675226752367524675256752667527675286752967530675316753267533675346753567536675376753867539675406754167542675436754467545675466754767548675496755067551675526755367554675556755667557675586755967560675616756267563675646756567566675676756867569675706757167572675736757467575675766757767578675796758067581675826758367584675856758667587675886758967590675916759267593675946759567596675976759867599676006760167602676036760467605676066760767608676096761067611676126761367614676156761667617676186761967620676216762267623676246762567626676276762867629676306763167632676336763467635676366763767638676396764067641676426764367644676456764667647676486764967650676516765267653676546765567656676576765867659676606766167662676636766467665676666766767668676696767067671676726767367674676756767667677676786767967680676816768267683676846768567686676876768867689676906769167692676936769467695676966769767698676996770067701677026770367704677056770667707677086770967710677116771267713677146771567716677176771867719677206772167722677236772467725677266772767728677296773067731677326773367734677356773667737677386773967740677416774267743677446774567746677476774867749677506775167752677536775467755677566775767758677596776067761677626776367764677656776667767677686776967770677716777267773677746777567776677776777867779677806778167782677836778467785677866778767788677896779067791677926779367794677956779667797677986779967800678016780267803678046780567806678076780867809678106781167812678136781467815678166781767818678196782067821678226782367824678256782667827678286782967830678316783267833678346783567836678376783867839678406784167842678436784467845678466784767848678496785067851678526785367854678556785667857678586785967860678616786267863678646786567866678676786867869678706787167872678736787467875678766787767878678796788067881678826788367884678856788667887678886788967890678916789267893678946789567896678976789867899679006790167902679036790467905679066790767908679096791067911679126791367914679156791667917679186791967920679216792267923679246792567926679276792867929679306793167932679336793467935679366793767938679396794067941679426794367944679456794667947679486794967950679516795267953679546795567956679576795867959679606796167962679636796467965679666796767968679696797067971679726797367974679756797667977679786797967980679816798267983679846798567986679876798867989679906799167992679936799467995679966799767998679996800068001680026800368004680056800668007680086800968010680116801268013680146801568016680176801868019680206802168022680236802468025680266802768028680296803068031680326803368034680356803668037680386803968040680416804268043680446804568046680476804868049680506805168052680536805468055680566805768058680596806068061680626806368064680656806668067680686806968070680716807268073680746807568076680776807868079680806808168082680836808468085680866808768088680896809068091680926809368094680956809668097680986809968100681016810268103681046810568106681076810868109681106811168112681136811468115681166811768118681196812068121681226812368124681256812668127681286812968130681316813268133681346813568136681376813868139681406814168142681436814468145681466814768148681496815068151681526815368154681556815668157681586815968160681616816268163681646816568166681676816868169681706817168172681736817468175681766817768178681796818068181681826818368184681856818668187681886818968190681916819268193681946819568196681976819868199682006820168202682036820468205682066820768208682096821068211682126821368214682156821668217682186821968220682216822268223682246822568226682276822868229682306823168232682336823468235682366823768238682396824068241682426824368244682456824668247682486824968250682516825268253682546825568256682576825868259682606826168262682636826468265682666826768268682696827068271682726827368274682756827668277682786827968280682816828268283682846828568286682876828868289682906829168292682936829468295682966829768298682996830068301683026830368304683056830668307683086830968310683116831268313683146831568316683176831868319683206832168322683236832468325683266832768328683296833068331683326833368334683356833668337683386833968340683416834268343683446834568346683476834868349683506835168352683536835468355683566835768358683596836068361683626836368364683656836668367683686836968370683716837268373683746837568376683776837868379683806838168382683836838468385683866838768388683896839068391683926839368394683956839668397683986839968400684016840268403684046840568406684076840868409684106841168412684136841468415684166841768418684196842068421684226842368424684256842668427684286842968430684316843268433684346843568436684376843868439684406844168442684436844468445684466844768448684496845068451684526845368454684556845668457684586845968460684616846268463684646846568466684676846868469684706847168472684736847468475684766847768478684796848068481684826848368484684856848668487684886848968490684916849268493684946849568496684976849868499685006850168502685036850468505685066850768508685096851068511685126851368514685156851668517685186851968520685216852268523685246852568526685276852868529685306853168532685336853468535685366853768538685396854068541685426854368544685456854668547685486854968550685516855268553685546855568556685576855868559685606856168562685636856468565685666856768568685696857068571685726857368574685756857668577685786857968580685816858268583685846858568586685876858868589685906859168592685936859468595685966859768598685996860068601686026860368604686056860668607686086860968610686116861268613686146861568616686176861868619686206862168622686236862468625686266862768628686296863068631686326863368634686356863668637686386863968640686416864268643686446864568646686476864868649686506865168652686536865468655686566865768658686596866068661686626866368664686656866668667686686866968670686716867268673686746867568676686776867868679686806868168682686836868468685686866868768688686896869068691686926869368694686956869668697686986869968700687016870268703687046870568706687076870868709687106871168712687136871468715687166871768718687196872068721687226872368724687256872668727687286872968730687316873268733687346873568736687376873868739687406874168742687436874468745687466874768748687496875068751687526875368754687556875668757687586875968760687616876268763687646876568766687676876868769687706877168772687736877468775687766877768778687796878068781687826878368784687856878668787687886878968790687916879268793687946879568796687976879868799688006880168802688036880468805688066880768808688096881068811688126881368814688156881668817688186881968820688216882268823688246882568826688276882868829688306883168832688336883468835688366883768838688396884068841688426884368844688456884668847688486884968850688516885268853688546885568856688576885868859688606886168862688636886468865688666886768868688696887068871688726887368874688756887668877688786887968880688816888268883688846888568886688876888868889688906889168892688936889468895688966889768898688996890068901689026890368904689056890668907689086890968910689116891268913689146891568916689176891868919689206892168922689236892468925689266892768928689296893068931689326893368934689356893668937689386893968940689416894268943689446894568946689476894868949689506895168952689536895468955689566895768958689596896068961689626896368964689656896668967689686896968970689716897268973689746897568976689776897868979689806898168982689836898468985689866898768988689896899068991689926899368994689956899668997689986899969000690016900269003690046900569006690076900869009690106901169012690136901469015690166901769018690196902069021690226902369024690256902669027690286902969030690316903269033690346903569036690376903869039690406904169042690436904469045690466904769048690496905069051690526905369054690556905669057690586905969060690616906269063690646906569066690676906869069690706907169072690736907469075690766907769078690796908069081690826908369084690856908669087690886908969090690916909269093690946909569096690976909869099691006910169102691036910469105691066910769108691096911069111691126911369114691156911669117691186911969120691216912269123691246912569126691276912869129691306913169132691336913469135691366913769138691396914069141691426914369144691456914669147691486914969150691516915269153691546915569156691576915869159691606916169162691636916469165691666916769168691696917069171691726917369174691756917669177691786917969180691816918269183691846918569186691876918869189691906919169192691936919469195691966919769198691996920069201692026920369204692056920669207692086920969210692116921269213692146921569216692176921869219692206922169222692236922469225692266922769228692296923069231692326923369234692356923669237692386923969240692416924269243692446924569246692476924869249692506925169252692536925469255692566925769258692596926069261692626926369264692656926669267692686926969270692716927269273692746927569276692776927869279692806928169282692836928469285692866928769288692896929069291692926929369294692956929669297692986929969300693016930269303693046930569306693076930869309693106931169312693136931469315693166931769318693196932069321693226932369324693256932669327693286932969330693316933269333693346933569336693376933869339693406934169342693436934469345693466934769348693496935069351693526935369354693556935669357693586935969360693616936269363693646936569366693676936869369693706937169372693736937469375693766937769378693796938069381693826938369384693856938669387693886938969390693916939269393693946939569396693976939869399694006940169402694036940469405694066940769408694096941069411694126941369414694156941669417694186941969420694216942269423694246942569426694276942869429694306943169432694336943469435694366943769438694396944069441694426944369444694456944669447694486944969450694516945269453694546945569456694576945869459694606946169462694636946469465694666946769468694696947069471694726947369474694756947669477694786947969480694816948269483694846948569486694876948869489694906949169492694936949469495694966949769498694996950069501695026950369504695056950669507695086950969510695116951269513695146951569516695176951869519695206952169522695236952469525695266952769528695296953069531695326953369534695356953669537695386953969540695416954269543695446954569546695476954869549695506955169552695536955469555695566955769558695596956069561695626956369564695656956669567695686956969570695716957269573695746957569576695776957869579695806958169582695836958469585695866958769588695896959069591695926959369594695956959669597695986959969600696016960269603696046960569606696076960869609696106961169612696136961469615696166961769618696196962069621696226962369624696256962669627696286962969630696316963269633696346963569636696376963869639696406964169642696436964469645696466964769648696496965069651696526965369654696556965669657696586965969660696616966269663696646966569666696676966869669696706967169672696736967469675696766967769678696796968069681696826968369684696856968669687696886968969690696916969269693696946969569696696976969869699697006970169702697036970469705697066970769708697096971069711697126971369714697156971669717697186971969720697216972269723697246972569726697276972869729697306973169732697336973469735697366973769738697396974069741697426974369744697456974669747697486974969750697516975269753697546975569756697576975869759697606976169762697636976469765697666976769768697696977069771697726977369774697756977669777697786977969780697816978269783697846978569786697876978869789697906979169792697936979469795697966979769798697996980069801698026980369804698056980669807698086980969810698116981269813698146981569816698176981869819698206982169822698236982469825698266982769828698296983069831698326983369834698356983669837698386983969840698416984269843698446984569846698476984869849698506985169852698536985469855698566985769858698596986069861698626986369864698656986669867698686986969870698716987269873698746987569876698776987869879698806988169882698836988469885698866988769888698896989069891698926989369894698956989669897698986989969900699016990269903699046990569906699076990869909699106991169912699136991469915699166991769918699196992069921699226992369924699256992669927699286992969930699316993269933699346993569936699376993869939699406994169942699436994469945699466994769948699496995069951699526995369954699556995669957699586995969960699616996269963699646996569966699676996869969699706997169972699736997469975699766997769978699796998069981699826998369984699856998669987699886998969990699916999269993699946999569996699976999869999700007000170002700037000470005700067000770008700097001070011700127001370014700157001670017700187001970020700217002270023700247002570026700277002870029700307003170032700337003470035700367003770038700397004070041700427004370044700457004670047700487004970050700517005270053700547005570056700577005870059700607006170062700637006470065700667006770068700697007070071700727007370074700757007670077700787007970080700817008270083700847008570086700877008870089700907009170092700937009470095700967009770098700997010070101701027010370104701057010670107701087010970110701117011270113701147011570116701177011870119701207012170122701237012470125701267012770128701297013070131701327013370134701357013670137701387013970140701417014270143701447014570146701477014870149701507015170152701537015470155701567015770158701597016070161701627016370164701657016670167701687016970170701717017270173701747017570176701777017870179701807018170182701837018470185701867018770188701897019070191701927019370194701957019670197701987019970200702017020270203702047020570206702077020870209702107021170212702137021470215702167021770218702197022070221702227022370224702257022670227702287022970230702317023270233702347023570236702377023870239702407024170242702437024470245702467024770248702497025070251702527025370254702557025670257702587025970260702617026270263702647026570266702677026870269702707027170272702737027470275702767027770278702797028070281702827028370284702857028670287702887028970290702917029270293702947029570296702977029870299703007030170302703037030470305703067030770308703097031070311703127031370314703157031670317703187031970320703217032270323703247032570326703277032870329703307033170332703337033470335703367033770338703397034070341703427034370344703457034670347703487034970350703517035270353703547035570356703577035870359703607036170362703637036470365703667036770368703697037070371703727037370374703757037670377703787037970380703817038270383703847038570386703877038870389703907039170392703937039470395703967039770398703997040070401704027040370404704057040670407704087040970410704117041270413704147041570416704177041870419704207042170422704237042470425704267042770428704297043070431704327043370434704357043670437704387043970440704417044270443704447044570446704477044870449704507045170452704537045470455704567045770458704597046070461704627046370464704657046670467704687046970470704717047270473704747047570476704777047870479704807048170482704837048470485704867048770488704897049070491704927049370494704957049670497704987049970500705017050270503705047050570506705077050870509705107051170512705137051470515705167051770518705197052070521705227052370524705257052670527705287052970530705317053270533705347053570536705377053870539705407054170542705437054470545705467054770548705497055070551705527055370554705557055670557705587055970560705617056270563705647056570566705677056870569705707057170572705737057470575705767057770578705797058070581705827058370584705857058670587705887058970590705917059270593705947059570596705977059870599706007060170602706037060470605706067060770608706097061070611706127061370614706157061670617706187061970620706217062270623706247062570626706277062870629706307063170632706337063470635706367063770638706397064070641706427064370644706457064670647706487064970650706517065270653706547065570656706577065870659706607066170662706637066470665706667066770668706697067070671706727067370674706757067670677706787067970680706817068270683706847068570686706877068870689706907069170692706937069470695706967069770698706997070070701707027070370704707057070670707707087070970710707117071270713707147071570716707177071870719707207072170722707237072470725707267072770728707297073070731707327073370734707357073670737707387073970740707417074270743707447074570746707477074870749707507075170752707537075470755707567075770758707597076070761707627076370764707657076670767707687076970770707717077270773707747077570776707777077870779707807078170782707837078470785707867078770788707897079070791707927079370794707957079670797707987079970800708017080270803708047080570806708077080870809708107081170812708137081470815708167081770818708197082070821708227082370824708257082670827708287082970830708317083270833708347083570836708377083870839708407084170842708437084470845708467084770848708497085070851708527085370854708557085670857708587085970860708617086270863708647086570866708677086870869708707087170872708737087470875708767087770878708797088070881708827088370884708857088670887708887088970890708917089270893708947089570896708977089870899709007090170902709037090470905709067090770908709097091070911709127091370914709157091670917709187091970920709217092270923709247092570926709277092870929709307093170932709337093470935709367093770938709397094070941709427094370944709457094670947709487094970950709517095270953709547095570956709577095870959709607096170962709637096470965709667096770968709697097070971709727097370974709757097670977709787097970980709817098270983709847098570986709877098870989709907099170992709937099470995709967099770998709997100071001710027100371004710057100671007710087100971010710117101271013710147101571016710177101871019710207102171022710237102471025710267102771028710297103071031710327103371034710357103671037710387103971040710417104271043710447104571046710477104871049710507105171052710537105471055710567105771058710597106071061710627106371064710657106671067710687106971070710717107271073710747107571076710777107871079710807108171082710837108471085710867108771088710897109071091710927109371094710957109671097710987109971100711017110271103711047110571106711077110871109711107111171112711137111471115711167111771118711197112071121711227112371124711257112671127711287112971130711317113271133711347113571136711377113871139711407114171142711437114471145711467114771148711497115071151711527115371154711557115671157711587115971160711617116271163711647116571166711677116871169711707117171172711737117471175711767117771178711797118071181711827118371184711857118671187711887118971190711917119271193711947119571196711977119871199712007120171202712037120471205712067120771208712097121071211712127121371214712157121671217712187121971220712217122271223712247122571226712277122871229712307123171232712337123471235712367123771238712397124071241712427124371244712457124671247712487124971250712517125271253712547125571256712577125871259712607126171262712637126471265712667126771268712697127071271712727127371274712757127671277712787127971280712817128271283712847128571286712877128871289712907129171292712937129471295712967129771298712997130071301713027130371304713057130671307713087130971310713117131271313713147131571316713177131871319713207132171322713237132471325713267132771328713297133071331713327133371334713357133671337713387133971340713417134271343713447134571346713477134871349713507135171352713537135471355713567135771358713597136071361713627136371364713657136671367713687136971370713717137271373713747137571376713777137871379713807138171382713837138471385713867138771388713897139071391713927139371394713957139671397713987139971400714017140271403714047140571406714077140871409714107141171412714137141471415714167141771418714197142071421714227142371424714257142671427714287142971430714317143271433714347143571436714377143871439714407144171442714437144471445714467144771448714497145071451714527145371454714557145671457714587145971460714617146271463714647146571466714677146871469714707147171472714737147471475714767147771478714797148071481714827148371484714857148671487714887148971490714917149271493714947149571496714977149871499715007150171502715037150471505715067150771508715097151071511715127151371514715157151671517715187151971520715217152271523715247152571526715277152871529715307153171532715337153471535715367153771538715397154071541715427154371544715457154671547715487154971550715517155271553715547155571556715577155871559715607156171562715637156471565715667156771568715697157071571715727157371574715757157671577715787157971580715817158271583715847158571586715877158871589715907159171592715937159471595715967159771598715997160071601716027160371604716057160671607716087160971610716117161271613716147161571616716177161871619716207162171622716237162471625716267162771628716297163071631716327163371634716357163671637716387163971640716417164271643716447164571646716477164871649716507165171652716537165471655716567165771658716597166071661716627166371664716657166671667716687166971670716717167271673716747167571676716777167871679716807168171682716837168471685716867168771688716897169071691716927169371694716957169671697716987169971700717017170271703717047170571706717077170871709717107171171712717137171471715717167171771718717197172071721717227172371724717257172671727717287172971730717317173271733717347173571736717377173871739717407174171742717437174471745717467174771748717497175071751717527175371754717557175671757717587175971760717617176271763717647176571766717677176871769717707177171772717737177471775717767177771778717797178071781717827178371784717857178671787717887178971790717917179271793717947179571796717977179871799718007180171802718037180471805718067180771808718097181071811718127181371814718157181671817718187181971820718217182271823718247182571826718277182871829718307183171832718337183471835718367183771838718397184071841718427184371844718457184671847718487184971850718517185271853718547185571856718577185871859718607186171862718637186471865718667186771868718697187071871718727187371874718757187671877718787187971880718817188271883718847188571886718877188871889718907189171892718937189471895718967189771898718997190071901719027190371904719057190671907719087190971910719117191271913719147191571916719177191871919719207192171922719237192471925719267192771928719297193071931719327193371934719357193671937719387193971940719417194271943719447194571946719477194871949719507195171952719537195471955719567195771958719597196071961719627196371964719657196671967719687196971970719717197271973719747197571976719777197871979719807198171982719837198471985719867198771988719897199071991719927199371994719957199671997719987199972000720017200272003720047200572006720077200872009720107201172012720137201472015720167201772018720197202072021720227202372024720257202672027720287202972030720317203272033720347203572036720377203872039720407204172042720437204472045720467204772048720497205072051720527205372054720557205672057720587205972060720617206272063720647206572066720677206872069720707207172072720737207472075720767207772078720797208072081720827208372084720857208672087720887208972090720917209272093720947209572096720977209872099721007210172102721037210472105721067210772108721097211072111721127211372114721157211672117721187211972120721217212272123721247212572126721277212872129721307213172132721337213472135721367213772138721397214072141721427214372144721457214672147721487214972150721517215272153721547215572156721577215872159721607216172162721637216472165721667216772168721697217072171721727217372174721757217672177721787217972180721817218272183721847218572186721877218872189721907219172192721937219472195721967219772198721997220072201722027220372204722057220672207722087220972210722117221272213722147221572216722177221872219722207222172222722237222472225722267222772228722297223072231722327223372234722357223672237722387223972240722417224272243722447224572246722477224872249722507225172252722537225472255722567225772258722597226072261722627226372264722657226672267722687226972270722717227272273722747227572276722777227872279722807228172282722837228472285722867228772288722897229072291722927229372294722957229672297722987229972300723017230272303723047230572306723077230872309723107231172312723137231472315723167231772318723197232072321723227232372324723257232672327723287232972330723317233272333723347233572336723377233872339723407234172342723437234472345723467234772348723497235072351723527235372354723557235672357723587235972360723617236272363723647236572366723677236872369723707237172372723737237472375723767237772378723797238072381723827238372384723857238672387723887238972390723917239272393723947239572396723977239872399724007240172402724037240472405724067240772408724097241072411724127241372414724157241672417724187241972420724217242272423724247242572426724277242872429724307243172432724337243472435724367243772438724397244072441724427244372444724457244672447724487244972450724517245272453724547245572456724577245872459724607246172462724637246472465724667246772468724697247072471724727247372474724757247672477724787247972480724817248272483724847248572486724877248872489724907249172492724937249472495724967249772498724997250072501725027250372504725057250672507725087250972510725117251272513725147251572516725177251872519725207252172522725237252472525725267252772528725297253072531725327253372534725357253672537725387253972540725417254272543725447254572546725477254872549725507255172552725537255472555725567255772558725597256072561725627256372564725657256672567725687256972570725717257272573725747257572576725777257872579725807258172582725837258472585725867258772588725897259072591725927259372594725957259672597725987259972600726017260272603726047260572606726077260872609726107261172612726137261472615726167261772618726197262072621726227262372624726257262672627726287262972630726317263272633726347263572636726377263872639726407264172642726437264472645726467264772648726497265072651726527265372654726557265672657726587265972660726617266272663726647266572666726677266872669726707267172672726737267472675726767267772678726797268072681726827268372684726857268672687726887268972690726917269272693726947269572696726977269872699727007270172702727037270472705727067270772708727097271072711727127271372714727157271672717727187271972720727217272272723727247272572726727277272872729727307273172732727337273472735727367273772738727397274072741727427274372744727457274672747727487274972750727517275272753727547275572756727577275872759727607276172762727637276472765727667276772768727697277072771727727277372774727757277672777727787277972780727817278272783727847278572786727877278872789727907279172792727937279472795727967279772798727997280072801728027280372804728057280672807728087280972810728117281272813728147281572816728177281872819728207282172822728237282472825728267282772828728297283072831728327283372834728357283672837728387283972840728417284272843728447284572846728477284872849728507285172852728537285472855728567285772858728597286072861728627286372864728657286672867728687286972870728717287272873728747287572876728777287872879728807288172882728837288472885728867288772888728897289072891728927289372894728957289672897728987289972900729017290272903729047290572906729077290872909729107291172912729137291472915729167291772918729197292072921729227292372924729257292672927729287292972930729317293272933729347293572936729377293872939729407294172942729437294472945729467294772948729497295072951729527295372954729557295672957729587295972960729617296272963729647296572966729677296872969729707297172972729737297472975729767297772978729797298072981729827298372984729857298672987729887298972990729917299272993729947299572996729977299872999730007300173002730037300473005730067300773008730097301073011730127301373014730157301673017730187301973020730217302273023730247302573026730277302873029730307303173032730337303473035730367303773038730397304073041730427304373044730457304673047730487304973050730517305273053730547305573056730577305873059730607306173062730637306473065730667306773068730697307073071730727307373074730757307673077730787307973080730817308273083730847308573086730877308873089730907309173092730937309473095730967309773098730997310073101731027310373104731057310673107731087310973110731117311273113731147311573116731177311873119731207312173122731237312473125731267312773128731297313073131731327313373134731357313673137731387313973140731417314273143731447314573146731477314873149731507315173152731537315473155731567315773158731597316073161731627316373164731657316673167731687316973170731717317273173731747317573176731777317873179731807318173182731837318473185731867318773188731897319073191731927319373194731957319673197731987319973200732017320273203732047320573206732077320873209732107321173212732137321473215732167321773218732197322073221732227322373224732257322673227732287322973230732317323273233732347323573236732377323873239732407324173242732437324473245732467324773248732497325073251732527325373254732557325673257732587325973260732617326273263732647326573266732677326873269732707327173272732737327473275732767327773278732797328073281732827328373284732857328673287732887328973290732917329273293732947329573296732977329873299733007330173302733037330473305733067330773308733097331073311733127331373314733157331673317733187331973320733217332273323733247332573326733277332873329733307333173332733337333473335733367333773338733397334073341733427334373344733457334673347733487334973350733517335273353733547335573356733577335873359733607336173362733637336473365733667336773368733697337073371733727337373374733757337673377733787337973380733817338273383733847338573386733877338873389733907339173392733937339473395733967339773398733997340073401734027340373404734057340673407734087340973410734117341273413734147341573416734177341873419734207342173422734237342473425734267342773428734297343073431734327343373434734357343673437734387343973440734417344273443734447344573446734477344873449734507345173452734537345473455734567345773458734597346073461734627346373464734657346673467734687346973470734717347273473734747347573476734777347873479734807348173482734837348473485734867348773488734897349073491734927349373494734957349673497734987349973500735017350273503735047350573506735077350873509735107351173512735137351473515735167351773518735197352073521735227352373524735257352673527735287352973530735317353273533735347353573536735377353873539735407354173542735437354473545735467354773548735497355073551735527355373554735557355673557735587355973560735617356273563735647356573566735677356873569735707357173572735737357473575735767357773578735797358073581735827358373584735857358673587735887358973590735917359273593735947359573596735977359873599736007360173602736037360473605736067360773608736097361073611736127361373614736157361673617736187361973620736217362273623736247362573626736277362873629736307363173632736337363473635736367363773638736397364073641736427364373644736457364673647736487364973650736517365273653736547365573656736577365873659736607366173662736637366473665736667366773668736697367073671736727367373674736757367673677736787367973680736817368273683736847368573686736877368873689736907369173692736937369473695736967369773698736997370073701737027370373704737057370673707737087370973710737117371273713737147371573716737177371873719737207372173722737237372473725737267372773728737297373073731737327373373734737357373673737737387373973740737417374273743737447374573746737477374873749737507375173752737537375473755737567375773758737597376073761737627376373764737657376673767737687376973770737717377273773737747377573776737777377873779737807378173782737837378473785737867378773788737897379073791737927379373794737957379673797737987379973800738017380273803738047380573806738077380873809738107381173812738137381473815738167381773818738197382073821738227382373824738257382673827738287382973830738317383273833738347383573836738377383873839738407384173842738437384473845738467384773848738497385073851738527385373854738557385673857738587385973860738617386273863738647386573866738677386873869738707387173872738737387473875738767387773878738797388073881738827388373884738857388673887738887388973890738917389273893738947389573896738977389873899739007390173902739037390473905739067390773908739097391073911739127391373914739157391673917739187391973920739217392273923739247392573926739277392873929739307393173932739337393473935739367393773938739397394073941739427394373944739457394673947739487394973950739517395273953739547395573956739577395873959739607396173962739637396473965739667396773968739697397073971739727397373974739757397673977739787397973980739817398273983739847398573986739877398873989739907399173992739937399473995739967399773998739997400074001740027400374004740057400674007740087400974010740117401274013740147401574016740177401874019740207402174022740237402474025740267402774028740297403074031740327403374034740357403674037740387403974040740417404274043740447404574046740477404874049740507405174052740537405474055740567405774058740597406074061740627406374064740657406674067740687406974070740717407274073740747407574076740777407874079740807408174082740837408474085740867408774088740897409074091740927409374094740957409674097740987409974100741017410274103741047410574106741077410874109741107411174112741137411474115741167411774118741197412074121741227412374124741257412674127741287412974130741317413274133741347413574136741377413874139741407414174142741437414474145741467414774148741497415074151741527415374154741557415674157741587415974160741617416274163741647416574166741677416874169741707417174172741737417474175741767417774178741797418074181741827418374184741857418674187741887418974190741917419274193741947419574196741977419874199742007420174202742037420474205742067420774208742097421074211742127421374214742157421674217742187421974220742217422274223742247422574226742277422874229742307423174232742337423474235742367423774238742397424074241742427424374244742457424674247742487424974250742517425274253742547425574256742577425874259742607426174262742637426474265742667426774268742697427074271742727427374274742757427674277742787427974280742817428274283742847428574286742877428874289742907429174292742937429474295742967429774298742997430074301743027430374304743057430674307743087430974310743117431274313743147431574316743177431874319743207432174322743237432474325743267432774328743297433074331743327433374334743357433674337743387433974340743417434274343743447434574346743477434874349743507435174352743537435474355743567435774358743597436074361743627436374364743657436674367743687436974370743717437274373743747437574376743777437874379743807438174382743837438474385743867438774388743897439074391743927439374394743957439674397743987439974400744017440274403744047440574406744077440874409744107441174412744137441474415744167441774418744197442074421744227442374424744257442674427744287442974430744317443274433744347443574436744377443874439744407444174442744437444474445744467444774448744497445074451744527445374454744557445674457744587445974460744617446274463744647446574466744677446874469744707447174472744737447474475744767447774478744797448074481744827448374484744857448674487744887448974490744917449274493744947449574496744977449874499745007450174502745037450474505745067450774508745097451074511745127451374514745157451674517745187451974520745217452274523745247452574526745277452874529745307453174532745337453474535745367453774538745397454074541745427454374544745457454674547745487454974550745517455274553745547455574556745577455874559745607456174562745637456474565745667456774568745697457074571745727457374574745757457674577745787457974580745817458274583745847458574586745877458874589745907459174592745937459474595745967459774598745997460074601746027460374604746057460674607746087460974610746117461274613746147461574616746177461874619746207462174622746237462474625746267462774628746297463074631746327463374634746357463674637746387463974640746417464274643746447464574646746477464874649746507465174652746537465474655746567465774658746597466074661746627466374664746657466674667746687466974670746717467274673746747467574676746777467874679746807468174682746837468474685746867468774688746897469074691746927469374694746957469674697746987469974700747017470274703747047470574706747077470874709747107471174712747137471474715747167471774718747197472074721747227472374724747257472674727747287472974730747317473274733747347473574736747377473874739747407474174742747437474474745747467474774748747497475074751747527475374754747557475674757747587475974760747617476274763747647476574766747677476874769747707477174772747737477474775747767477774778747797478074781747827478374784747857478674787747887478974790747917479274793747947479574796747977479874799748007480174802748037480474805748067480774808748097481074811748127481374814748157481674817748187481974820748217482274823748247482574826748277482874829748307483174832748337483474835748367483774838748397484074841748427484374844748457484674847748487484974850748517485274853748547485574856748577485874859748607486174862748637486474865748667486774868748697487074871748727487374874748757487674877748787487974880748817488274883748847488574886748877488874889748907489174892748937489474895748967489774898748997490074901749027490374904749057490674907749087490974910749117491274913749147491574916749177491874919749207492174922749237492474925749267492774928749297493074931749327493374934749357493674937749387493974940749417494274943749447494574946749477494874949749507495174952749537495474955749567495774958749597496074961749627496374964749657496674967749687496974970749717497274973749747497574976749777497874979749807498174982749837498474985749867498774988749897499074991749927499374994749957499674997749987499975000750017500275003750047500575006750077500875009750107501175012750137501475015750167501775018750197502075021750227502375024750257502675027750287502975030750317503275033750347503575036750377503875039750407504175042750437504475045750467504775048750497505075051750527505375054750557505675057750587505975060750617506275063750647506575066750677506875069750707507175072750737507475075750767507775078750797508075081750827508375084750857508675087750887508975090750917509275093750947509575096750977509875099751007510175102751037510475105751067510775108751097511075111751127511375114751157511675117751187511975120751217512275123751247512575126751277512875129751307513175132751337513475135751367513775138751397514075141751427514375144751457514675147751487514975150751517515275153751547515575156751577515875159751607516175162751637516475165751667516775168751697517075171751727517375174751757517675177751787517975180751817518275183751847518575186751877518875189751907519175192751937519475195751967519775198751997520075201752027520375204752057520675207752087520975210752117521275213752147521575216752177521875219752207522175222752237522475225752267522775228752297523075231752327523375234752357523675237752387523975240752417524275243752447524575246752477524875249752507525175252752537525475255752567525775258752597526075261752627526375264752657526675267752687526975270752717527275273752747527575276752777527875279752807528175282752837528475285752867528775288752897529075291752927529375294752957529675297752987529975300753017530275303753047530575306753077530875309753107531175312753137531475315753167531775318753197532075321753227532375324753257532675327753287532975330753317533275333753347533575336753377533875339753407534175342753437534475345753467534775348753497535075351753527535375354753557535675357753587535975360753617536275363753647536575366753677536875369753707537175372753737537475375753767537775378753797538075381753827538375384753857538675387753887538975390753917539275393753947539575396753977539875399754007540175402754037540475405754067540775408754097541075411754127541375414754157541675417754187541975420754217542275423754247542575426754277542875429754307543175432754337543475435754367543775438754397544075441754427544375444754457544675447754487544975450754517545275453754547545575456754577545875459754607546175462754637546475465754667546775468754697547075471754727547375474754757547675477754787547975480754817548275483754847548575486754877548875489754907549175492754937549475495754967549775498754997550075501755027550375504755057550675507755087550975510755117551275513755147551575516755177551875519755207552175522755237552475525755267552775528755297553075531755327553375534755357553675537755387553975540755417554275543755447554575546755477554875549755507555175552755537555475555755567555775558755597556075561755627556375564755657556675567755687556975570755717557275573755747557575576755777557875579755807558175582755837558475585755867558775588755897559075591755927559375594755957559675597755987559975600756017560275603756047560575606756077560875609756107561175612756137561475615756167561775618756197562075621756227562375624756257562675627756287562975630756317563275633756347563575636756377563875639756407564175642756437564475645756467564775648756497565075651756527565375654756557565675657756587565975660756617566275663756647566575666756677566875669756707567175672756737567475675756767567775678756797568075681756827568375684756857568675687756887568975690756917569275693756947569575696756977569875699757007570175702757037570475705757067570775708757097571075711757127571375714757157571675717757187571975720757217572275723757247572575726757277572875729757307573175732757337573475735757367573775738757397574075741757427574375744757457574675747757487574975750757517575275753757547575575756757577575875759757607576175762757637576475765757667576775768757697577075771757727577375774757757577675777757787577975780757817578275783757847578575786757877578875789757907579175792757937579475795757967579775798757997580075801758027580375804758057580675807758087580975810758117581275813758147581575816758177581875819758207582175822758237582475825758267582775828758297583075831758327583375834758357583675837758387583975840758417584275843758447584575846758477584875849758507585175852758537585475855758567585775858758597586075861758627586375864758657586675867758687586975870758717587275873758747587575876758777587875879758807588175882758837588475885758867588775888758897589075891758927589375894758957589675897758987589975900759017590275903759047590575906759077590875909759107591175912759137591475915759167591775918759197592075921759227592375924759257592675927759287592975930759317593275933759347593575936759377593875939759407594175942759437594475945759467594775948759497595075951759527595375954759557595675957759587595975960759617596275963759647596575966759677596875969759707597175972759737597475975759767597775978759797598075981759827598375984759857598675987759887598975990759917599275993759947599575996759977599875999760007600176002760037600476005760067600776008760097601076011760127601376014760157601676017760187601976020760217602276023760247602576026760277602876029760307603176032760337603476035760367603776038760397604076041760427604376044760457604676047760487604976050760517605276053760547605576056760577605876059760607606176062760637606476065760667606776068760697607076071760727607376074760757607676077760787607976080760817608276083760847608576086760877608876089760907609176092760937609476095760967609776098760997610076101761027610376104761057610676107761087610976110761117611276113761147611576116761177611876119761207612176122761237612476125761267612776128761297613076131761327613376134761357613676137761387613976140761417614276143761447614576146761477614876149761507615176152761537615476155761567615776158761597616076161761627616376164761657616676167761687616976170761717617276173761747617576176761777617876179761807618176182761837618476185761867618776188761897619076191761927619376194761957619676197761987619976200762017620276203762047620576206762077620876209762107621176212762137621476215762167621776218762197622076221762227622376224762257622676227762287622976230762317623276233762347623576236762377623876239762407624176242762437624476245762467624776248762497625076251762527625376254762557625676257762587625976260762617626276263762647626576266762677626876269762707627176272762737627476275762767627776278762797628076281762827628376284762857628676287762887628976290762917629276293762947629576296762977629876299763007630176302763037630476305763067630776308763097631076311763127631376314763157631676317763187631976320763217632276323763247632576326763277632876329763307633176332763337633476335763367633776338763397634076341763427634376344763457634676347763487634976350763517635276353763547635576356763577635876359763607636176362763637636476365763667636776368763697637076371763727637376374763757637676377763787637976380763817638276383763847638576386763877638876389763907639176392763937639476395763967639776398763997640076401764027640376404764057640676407764087640976410764117641276413764147641576416764177641876419764207642176422764237642476425764267642776428764297643076431764327643376434764357643676437764387643976440764417644276443764447644576446764477644876449764507645176452764537645476455764567645776458764597646076461764627646376464764657646676467764687646976470764717647276473764747647576476764777647876479764807648176482764837648476485764867648776488764897649076491764927649376494764957649676497764987649976500765017650276503765047650576506765077650876509765107651176512765137651476515765167651776518765197652076521765227652376524765257652676527765287652976530765317653276533765347653576536765377653876539765407654176542765437654476545765467654776548765497655076551765527655376554765557655676557765587655976560765617656276563765647656576566765677656876569765707657176572765737657476575765767657776578765797658076581765827658376584765857658676587765887658976590765917659276593765947659576596765977659876599766007660176602766037660476605766067660776608766097661076611766127661376614766157661676617766187661976620766217662276623766247662576626766277662876629766307663176632766337663476635766367663776638766397664076641766427664376644766457664676647766487664976650766517665276653766547665576656766577665876659766607666176662766637666476665766667666776668766697667076671766727667376674766757667676677766787667976680766817668276683766847668576686766877668876689766907669176692766937669476695766967669776698766997670076701767027670376704767057670676707767087670976710767117671276713767147671576716767177671876719767207672176722767237672476725767267672776728767297673076731767327673376734767357673676737767387673976740767417674276743767447674576746767477674876749767507675176752767537675476755767567675776758767597676076761767627676376764767657676676767767687676976770767717677276773767747677576776767777677876779767807678176782767837678476785767867678776788767897679076791767927679376794767957679676797767987679976800768017680276803768047680576806768077680876809768107681176812768137681476815768167681776818768197682076821768227682376824768257682676827768287682976830768317683276833768347683576836768377683876839768407684176842768437684476845768467684776848768497685076851768527685376854768557685676857768587685976860768617686276863768647686576866768677686876869768707687176872768737687476875768767687776878768797688076881768827688376884768857688676887768887688976890768917689276893768947689576896768977689876899769007690176902769037690476905769067690776908769097691076911769127691376914769157691676917769187691976920769217692276923769247692576926769277692876929769307693176932769337693476935769367693776938769397694076941769427694376944769457694676947769487694976950769517695276953769547695576956769577695876959769607696176962769637696476965769667696776968769697697076971769727697376974769757697676977769787697976980769817698276983769847698576986769877698876989769907699176992769937699476995769967699776998769997700077001770027700377004770057700677007770087700977010770117701277013770147701577016770177701877019770207702177022770237702477025770267702777028770297703077031770327703377034770357703677037770387703977040770417704277043770447704577046770477704877049770507705177052770537705477055770567705777058770597706077061770627706377064770657706677067770687706977070770717707277073770747707577076770777707877079770807708177082770837708477085770867708777088770897709077091770927709377094770957709677097770987709977100771017710277103771047710577106771077710877109771107711177112771137711477115771167711777118771197712077121771227712377124771257712677127771287712977130771317713277133771347713577136771377713877139771407714177142771437714477145771467714777148771497715077151771527715377154771557715677157771587715977160771617716277163771647716577166771677716877169771707717177172771737717477175771767717777178771797718077181771827718377184771857718677187771887718977190771917719277193771947719577196771977719877199772007720177202772037720477205772067720777208772097721077211772127721377214772157721677217772187721977220772217722277223772247722577226772277722877229772307723177232772337723477235772367723777238772397724077241772427724377244772457724677247772487724977250772517725277253772547725577256772577725877259772607726177262772637726477265772667726777268772697727077271772727727377274772757727677277772787727977280772817728277283772847728577286772877728877289772907729177292772937729477295772967729777298772997730077301773027730377304773057730677307773087730977310773117731277313773147731577316773177731877319773207732177322773237732477325773267732777328773297733077331773327733377334773357733677337773387733977340773417734277343773447734577346773477734877349773507735177352773537735477355773567735777358773597736077361773627736377364773657736677367773687736977370773717737277373773747737577376773777737877379773807738177382773837738477385773867738777388773897739077391773927739377394773957739677397773987739977400774017740277403774047740577406774077740877409774107741177412774137741477415774167741777418774197742077421774227742377424774257742677427774287742977430774317743277433774347743577436774377743877439774407744177442774437744477445774467744777448774497745077451774527745377454774557745677457774587745977460774617746277463774647746577466774677746877469774707747177472774737747477475774767747777478774797748077481774827748377484774857748677487774887748977490774917749277493774947749577496774977749877499775007750177502775037750477505775067750777508775097751077511775127751377514775157751677517775187751977520775217752277523775247752577526775277752877529775307753177532775337753477535775367753777538775397754077541775427754377544775457754677547775487754977550775517755277553775547755577556775577755877559775607756177562775637756477565775667756777568775697757077571775727757377574775757757677577775787757977580775817758277583775847758577586775877758877589775907759177592775937759477595775967759777598775997760077601776027760377604776057760677607776087760977610776117761277613776147761577616776177761877619776207762177622776237762477625776267762777628776297763077631776327763377634776357763677637776387763977640776417764277643776447764577646776477764877649776507765177652776537765477655776567765777658776597766077661776627766377664776657766677667776687766977670776717767277673776747767577676776777767877679776807768177682776837768477685776867768777688776897769077691776927769377694776957769677697776987769977700777017770277703777047770577706777077770877709777107771177712777137771477715777167771777718777197772077721777227772377724777257772677727777287772977730777317773277733777347773577736777377773877739777407774177742777437774477745777467774777748777497775077751777527775377754777557775677757777587775977760777617776277763777647776577766777677776877769777707777177772777737777477775777767777777778777797778077781777827778377784777857778677787777887778977790777917779277793777947779577796777977779877799778007780177802778037780477805778067780777808778097781077811778127781377814778157781677817778187781977820778217782277823778247782577826778277782877829778307783177832778337783477835778367783777838778397784077841778427784377844778457784677847778487784977850778517785277853778547785577856778577785877859778607786177862778637786477865778667786777868778697787077871778727787377874778757787677877778787787977880778817788277883778847788577886778877788877889778907789177892778937789477895778967789777898778997790077901779027790377904779057790677907779087790977910779117791277913779147791577916779177791877919779207792177922779237792477925779267792777928779297793077931779327793377934779357793677937779387793977940779417794277943779447794577946779477794877949779507795177952779537795477955779567795777958779597796077961779627796377964779657796677967779687796977970779717797277973779747797577976779777797877979779807798177982779837798477985779867798777988779897799077991779927799377994779957799677997779987799978000780017800278003780047800578006780077800878009780107801178012780137801478015780167801778018780197802078021780227802378024780257802678027780287802978030780317803278033780347803578036780377803878039780407804178042780437804478045780467804778048780497805078051780527805378054780557805678057780587805978060780617806278063780647806578066780677806878069780707807178072780737807478075780767807778078780797808078081780827808378084780857808678087780887808978090780917809278093780947809578096780977809878099781007810178102781037810478105781067810778108781097811078111781127811378114781157811678117781187811978120781217812278123781247812578126781277812878129781307813178132781337813478135781367813778138781397814078141781427814378144781457814678147781487814978150781517815278153781547815578156781577815878159781607816178162781637816478165781667816778168781697817078171781727817378174781757817678177781787817978180781817818278183781847818578186781877818878189781907819178192781937819478195781967819778198781997820078201782027820378204782057820678207782087820978210782117821278213782147821578216782177821878219782207822178222782237822478225782267822778228782297823078231782327823378234782357823678237782387823978240782417824278243782447824578246782477824878249782507825178252782537825478255782567825778258782597826078261782627826378264782657826678267782687826978270782717827278273782747827578276782777827878279782807828178282782837828478285782867828778288782897829078291782927829378294782957829678297782987829978300783017830278303783047830578306783077830878309783107831178312783137831478315783167831778318783197832078321783227832378324783257832678327783287832978330783317833278333783347833578336783377833878339783407834178342783437834478345783467834778348783497835078351783527835378354783557835678357783587835978360783617836278363783647836578366783677836878369783707837178372783737837478375783767837778378783797838078381783827838378384783857838678387783887838978390783917839278393783947839578396783977839878399784007840178402784037840478405784067840778408784097841078411784127841378414784157841678417784187841978420784217842278423784247842578426784277842878429784307843178432784337843478435784367843778438784397844078441784427844378444784457844678447784487844978450784517845278453784547845578456784577845878459784607846178462784637846478465784667846778468784697847078471784727847378474784757847678477784787847978480784817848278483784847848578486784877848878489784907849178492784937849478495784967849778498784997850078501785027850378504785057850678507785087850978510785117851278513785147851578516785177851878519785207852178522785237852478525785267852778528785297853078531785327853378534785357853678537785387853978540785417854278543785447854578546785477854878549785507855178552785537855478555785567855778558785597856078561785627856378564785657856678567785687856978570785717857278573785747857578576785777857878579785807858178582785837858478585785867858778588785897859078591785927859378594785957859678597785987859978600786017860278603786047860578606786077860878609786107861178612786137861478615786167861778618786197862078621786227862378624786257862678627786287862978630786317863278633786347863578636786377863878639786407864178642786437864478645786467864778648786497865078651786527865378654786557865678657786587865978660786617866278663786647866578666786677866878669786707867178672786737867478675786767867778678786797868078681786827868378684786857868678687786887868978690786917869278693786947869578696786977869878699787007870178702787037870478705787067870778708787097871078711787127871378714787157871678717787187871978720787217872278723787247872578726787277872878729787307873178732787337873478735787367873778738787397874078741787427874378744787457874678747787487874978750787517875278753787547875578756787577875878759787607876178762787637876478765787667876778768787697877078771787727877378774787757877678777787787877978780787817878278783787847878578786787877878878789787907879178792787937879478795787967879778798787997880078801788027880378804788057880678807788087880978810788117881278813788147881578816788177881878819788207882178822788237882478825788267882778828788297883078831788327883378834788357883678837788387883978840788417884278843788447884578846788477884878849788507885178852788537885478855788567885778858788597886078861788627886378864788657886678867788687886978870788717887278873788747887578876788777887878879788807888178882788837888478885788867888778888788897889078891788927889378894788957889678897788987889978900789017890278903789047890578906789077890878909789107891178912789137891478915789167891778918789197892078921789227892378924789257892678927789287892978930789317893278933789347893578936789377893878939789407894178942789437894478945789467894778948789497895078951789527895378954789557895678957789587895978960789617896278963789647896578966789677896878969789707897178972789737897478975789767897778978789797898078981789827898378984789857898678987789887898978990789917899278993789947899578996789977899878999790007900179002790037900479005790067900779008790097901079011790127901379014790157901679017790187901979020790217902279023790247902579026790277902879029790307903179032790337903479035790367903779038790397904079041790427904379044790457904679047790487904979050790517905279053790547905579056790577905879059790607906179062790637906479065790667906779068790697907079071790727907379074790757907679077790787907979080790817908279083790847908579086790877908879089790907909179092790937909479095790967909779098790997910079101791027910379104791057910679107791087910979110791117911279113791147911579116791177911879119791207912179122791237912479125791267912779128791297913079131791327913379134791357913679137791387913979140791417914279143791447914579146791477914879149791507915179152791537915479155791567915779158791597916079161791627916379164791657916679167791687916979170791717917279173791747917579176791777917879179791807918179182791837918479185791867918779188791897919079191791927919379194791957919679197791987919979200792017920279203792047920579206792077920879209792107921179212792137921479215792167921779218792197922079221792227922379224792257922679227792287922979230792317923279233792347923579236792377923879239792407924179242792437924479245792467924779248792497925079251792527925379254792557925679257792587925979260792617926279263792647926579266792677926879269792707927179272792737927479275792767927779278792797928079281792827928379284792857928679287792887928979290792917929279293792947929579296792977929879299793007930179302793037930479305793067930779308793097931079311793127931379314793157931679317793187931979320793217932279323793247932579326793277932879329793307933179332793337933479335793367933779338793397934079341793427934379344793457934679347793487934979350793517935279353793547935579356793577935879359793607936179362793637936479365793667936779368793697937079371793727937379374793757937679377793787937979380793817938279383793847938579386793877938879389793907939179392793937939479395793967939779398793997940079401794027940379404794057940679407794087940979410794117941279413794147941579416794177941879419794207942179422794237942479425794267942779428794297943079431794327943379434794357943679437794387943979440794417944279443794447944579446794477944879449794507945179452794537945479455794567945779458794597946079461794627946379464794657946679467794687946979470794717947279473794747947579476794777947879479794807948179482794837948479485794867948779488794897949079491794927949379494794957949679497794987949979500795017950279503795047950579506795077950879509795107951179512795137951479515795167951779518795197952079521795227952379524795257952679527795287952979530795317953279533795347953579536795377953879539795407954179542795437954479545795467954779548795497955079551795527955379554795557955679557795587955979560795617956279563795647956579566795677956879569795707957179572795737957479575795767957779578795797958079581795827958379584795857958679587795887958979590795917959279593795947959579596795977959879599796007960179602796037960479605796067960779608796097961079611796127961379614796157961679617796187961979620796217962279623796247962579626796277962879629796307963179632796337963479635796367963779638796397964079641796427964379644796457964679647796487964979650796517965279653796547965579656796577965879659796607966179662796637966479665796667966779668796697967079671796727967379674796757967679677796787967979680796817968279683796847968579686796877968879689796907969179692796937969479695796967969779698796997970079701797027970379704797057970679707797087970979710797117971279713797147971579716797177971879719797207972179722797237972479725797267972779728797297973079731797327973379734797357973679737797387973979740797417974279743797447974579746797477974879749797507975179752797537975479755797567975779758797597976079761797627976379764797657976679767797687976979770797717977279773797747977579776797777977879779797807978179782797837978479785797867978779788797897979079791797927979379794797957979679797797987979979800798017980279803798047980579806798077980879809798107981179812798137981479815798167981779818798197982079821798227982379824798257982679827798287982979830798317983279833798347983579836798377983879839798407984179842798437984479845798467984779848798497985079851798527985379854798557985679857798587985979860798617986279863798647986579866798677986879869798707987179872798737987479875798767987779878798797988079881798827988379884798857988679887798887988979890798917989279893798947989579896798977989879899799007990179902799037990479905799067990779908799097991079911799127991379914799157991679917799187991979920799217992279923799247992579926799277992879929799307993179932799337993479935799367993779938799397994079941799427994379944799457994679947799487994979950799517995279953799547995579956799577995879959799607996179962799637996479965799667996779968799697997079971799727997379974799757997679977799787997979980799817998279983799847998579986799877998879989799907999179992799937999479995799967999779998799998000080001800028000380004800058000680007800088000980010800118001280013800148001580016800178001880019800208002180022800238002480025800268002780028800298003080031800328003380034800358003680037800388003980040800418004280043800448004580046800478004880049800508005180052800538005480055800568005780058800598006080061800628006380064800658006680067800688006980070800718007280073800748007580076800778007880079800808008180082800838008480085800868008780088800898009080091800928009380094800958009680097800988009980100801018010280103801048010580106801078010880109801108011180112801138011480115801168011780118801198012080121801228012380124801258012680127801288012980130801318013280133801348013580136801378013880139801408014180142801438014480145801468014780148801498015080151801528015380154801558015680157801588015980160801618016280163801648016580166801678016880169801708017180172801738017480175801768017780178801798018080181801828018380184801858018680187801888018980190801918019280193801948019580196801978019880199802008020180202802038020480205802068020780208802098021080211802128021380214802158021680217802188021980220802218022280223802248022580226802278022880229802308023180232802338023480235802368023780238802398024080241802428024380244802458024680247802488024980250802518025280253802548025580256802578025880259802608026180262802638026480265802668026780268802698027080271802728027380274802758027680277802788027980280802818028280283802848028580286802878028880289802908029180292802938029480295802968029780298802998030080301803028030380304803058030680307803088030980310803118031280313803148031580316803178031880319803208032180322803238032480325803268032780328803298033080331803328033380334803358033680337803388033980340803418034280343803448034580346803478034880349803508035180352803538035480355803568035780358803598036080361803628036380364803658036680367803688036980370803718037280373803748037580376803778037880379803808038180382803838038480385803868038780388803898039080391803928039380394803958039680397803988039980400804018040280403804048040580406804078040880409804108041180412804138041480415804168041780418804198042080421804228042380424804258042680427804288042980430804318043280433804348043580436804378043880439804408044180442804438044480445804468044780448804498045080451804528045380454804558045680457804588045980460804618046280463804648046580466804678046880469804708047180472804738047480475804768047780478804798048080481804828048380484804858048680487804888048980490804918049280493804948049580496804978049880499805008050180502805038050480505805068050780508805098051080511805128051380514805158051680517805188051980520805218052280523805248052580526805278052880529805308053180532805338053480535805368053780538805398054080541805428054380544805458054680547805488054980550805518055280553805548055580556805578055880559805608056180562805638056480565805668056780568805698057080571805728057380574805758057680577805788057980580805818058280583805848058580586805878058880589805908059180592805938059480595805968059780598805998060080601806028060380604806058060680607806088060980610806118061280613806148061580616806178061880619806208062180622806238062480625806268062780628806298063080631806328063380634806358063680637806388063980640806418064280643806448064580646806478064880649806508065180652806538065480655806568065780658806598066080661806628066380664806658066680667806688066980670806718067280673806748067580676806778067880679806808068180682806838068480685806868068780688806898069080691806928069380694806958069680697806988069980700807018070280703807048070580706807078070880709807108071180712807138071480715807168071780718807198072080721807228072380724807258072680727807288072980730807318073280733807348073580736807378073880739807408074180742807438074480745807468074780748807498075080751807528075380754807558075680757807588075980760807618076280763807648076580766807678076880769807708077180772807738077480775807768077780778807798078080781807828078380784807858078680787807888078980790807918079280793807948079580796807978079880799808008080180802808038080480805808068080780808808098081080811808128081380814808158081680817808188081980820808218082280823808248082580826808278082880829808308083180832808338083480835808368083780838808398084080841808428084380844808458084680847808488084980850808518085280853808548085580856808578085880859808608086180862808638086480865808668086780868808698087080871808728087380874808758087680877808788087980880808818088280883808848088580886808878088880889808908089180892808938089480895808968089780898808998090080901809028090380904809058090680907809088090980910809118091280913809148091580916809178091880919809208092180922809238092480925809268092780928809298093080931809328093380934809358093680937809388093980940809418094280943809448094580946809478094880949809508095180952809538095480955809568095780958809598096080961809628096380964809658096680967809688096980970809718097280973809748097580976809778097880979809808098180982809838098480985809868098780988809898099080991809928099380994809958099680997809988099981000810018100281003810048100581006810078100881009810108101181012810138101481015810168101781018810198102081021810228102381024810258102681027810288102981030810318103281033810348103581036810378103881039810408104181042810438104481045810468104781048810498105081051810528105381054810558105681057810588105981060810618106281063810648106581066810678106881069810708107181072810738107481075810768107781078810798108081081810828108381084810858108681087810888108981090810918109281093810948109581096810978109881099811008110181102811038110481105811068110781108811098111081111811128111381114811158111681117811188111981120811218112281123811248112581126811278112881129811308113181132811338113481135811368113781138811398114081141811428114381144811458114681147811488114981150811518115281153811548115581156811578115881159811608116181162811638116481165811668116781168811698117081171811728117381174811758117681177811788117981180811818118281183811848118581186811878118881189811908119181192811938119481195811968119781198811998120081201812028120381204812058120681207812088120981210812118121281213812148121581216812178121881219812208122181222812238122481225812268122781228812298123081231812328123381234812358123681237812388123981240812418124281243812448124581246812478124881249812508125181252812538125481255812568125781258812598126081261812628126381264812658126681267812688126981270812718127281273812748127581276812778127881279812808128181282812838128481285812868128781288812898129081291812928129381294812958129681297812988129981300813018130281303813048130581306813078130881309813108131181312813138131481315813168131781318813198132081321813228132381324813258132681327813288132981330813318133281333813348133581336813378133881339813408134181342813438134481345813468134781348813498135081351813528135381354813558135681357813588135981360813618136281363813648136581366813678136881369813708137181372813738137481375813768137781378813798138081381813828138381384813858138681387813888138981390813918139281393813948139581396813978139881399814008140181402814038140481405814068140781408814098141081411814128141381414814158141681417814188141981420814218142281423814248142581426814278142881429814308143181432814338143481435814368143781438814398144081441814428144381444814458144681447814488144981450814518145281453814548145581456814578145881459814608146181462814638146481465814668146781468814698147081471814728147381474814758147681477814788147981480814818148281483814848148581486814878148881489814908149181492814938149481495814968149781498814998150081501815028150381504815058150681507815088150981510815118151281513815148151581516815178151881519815208152181522815238152481525815268152781528815298153081531815328153381534815358153681537815388153981540815418154281543815448154581546815478154881549815508155181552815538155481555815568155781558815598156081561815628156381564815658156681567815688156981570815718157281573815748157581576815778157881579815808158181582815838158481585815868158781588815898159081591815928159381594815958159681597815988159981600816018160281603816048160581606816078160881609816108161181612816138161481615816168161781618816198162081621816228162381624816258162681627816288162981630816318163281633816348163581636816378163881639816408164181642816438164481645816468164781648816498165081651816528165381654816558165681657816588165981660816618166281663816648166581666816678166881669816708167181672816738167481675816768167781678816798168081681816828168381684816858168681687816888168981690816918169281693816948169581696816978169881699817008170181702817038170481705817068170781708817098171081711817128171381714817158171681717817188171981720817218172281723817248172581726817278172881729817308173181732817338173481735817368173781738817398174081741817428174381744817458174681747817488174981750817518175281753817548175581756817578175881759817608176181762817638176481765817668176781768817698177081771817728177381774817758177681777817788177981780817818178281783817848178581786817878178881789817908179181792817938179481795817968179781798817998180081801818028180381804818058180681807818088180981810818118181281813818148181581816818178181881819818208182181822818238182481825818268182781828818298183081831818328183381834818358183681837818388183981840818418184281843818448184581846818478184881849818508185181852818538185481855818568185781858818598186081861818628186381864818658186681867818688186981870818718187281873818748187581876818778187881879818808188181882818838188481885818868188781888818898189081891818928189381894818958189681897818988189981900819018190281903819048190581906819078190881909819108191181912819138191481915819168191781918819198192081921819228192381924819258192681927819288192981930819318193281933819348193581936819378193881939819408194181942819438194481945819468194781948819498195081951819528195381954819558195681957819588195981960819618196281963819648196581966819678196881969819708197181972819738197481975819768197781978819798198081981819828198381984819858198681987819888198981990819918199281993819948199581996819978199881999820008200182002820038200482005820068200782008820098201082011820128201382014820158201682017820188201982020820218202282023820248202582026820278202882029820308203182032820338203482035820368203782038820398204082041820428204382044820458204682047820488204982050820518205282053820548205582056820578205882059820608206182062820638206482065820668206782068820698207082071820728207382074820758207682077820788207982080820818208282083820848208582086820878208882089820908209182092820938209482095820968209782098820998210082101821028210382104821058210682107821088210982110821118211282113821148211582116821178211882119821208212182122821238212482125821268212782128821298213082131821328213382134821358213682137821388213982140821418214282143821448214582146821478214882149821508215182152821538215482155821568215782158821598216082161821628216382164821658216682167821688216982170821718217282173821748217582176821778217882179821808218182182821838218482185821868218782188821898219082191821928219382194821958219682197821988219982200822018220282203822048220582206822078220882209822108221182212822138221482215822168221782218822198222082221822228222382224822258222682227822288222982230822318223282233822348223582236822378223882239822408224182242822438224482245822468224782248822498225082251822528225382254822558225682257822588225982260822618226282263822648226582266822678226882269822708227182272822738227482275822768227782278822798228082281822828228382284822858228682287822888228982290822918229282293822948229582296822978229882299823008230182302823038230482305823068230782308823098231082311823128231382314823158231682317823188231982320823218232282323823248232582326823278232882329823308233182332823338233482335823368233782338823398234082341823428234382344823458234682347823488234982350823518235282353823548235582356823578235882359823608236182362823638236482365823668236782368823698237082371823728237382374823758237682377823788237982380823818238282383823848238582386823878238882389823908239182392823938239482395823968239782398823998240082401824028240382404824058240682407824088240982410824118241282413824148241582416824178241882419824208242182422824238242482425824268242782428824298243082431824328243382434824358243682437824388243982440824418244282443824448244582446824478244882449824508245182452824538245482455824568245782458824598246082461824628246382464824658246682467824688246982470824718247282473824748247582476824778247882479824808248182482824838248482485824868248782488824898249082491824928249382494824958249682497824988249982500825018250282503825048250582506825078250882509825108251182512825138251482515825168251782518825198252082521825228252382524825258252682527825288252982530825318253282533825348253582536825378253882539825408254182542825438254482545825468254782548825498255082551825528255382554825558255682557825588255982560825618256282563825648256582566825678256882569825708257182572825738257482575825768257782578825798258082581825828258382584825858258682587825888258982590825918259282593825948259582596825978259882599826008260182602826038260482605826068260782608826098261082611826128261382614826158261682617826188261982620826218262282623826248262582626826278262882629826308263182632826338263482635826368263782638826398264082641826428264382644826458264682647826488264982650826518265282653826548265582656826578265882659826608266182662826638266482665826668266782668826698267082671826728267382674826758267682677826788267982680826818268282683826848268582686826878268882689826908269182692826938269482695826968269782698826998270082701827028270382704827058270682707827088270982710827118271282713827148271582716827178271882719827208272182722827238272482725827268272782728827298273082731827328273382734827358273682737827388273982740827418274282743827448274582746827478274882749827508275182752827538275482755827568275782758827598276082761827628276382764827658276682767827688276982770827718277282773827748277582776827778277882779827808278182782827838278482785827868278782788827898279082791827928279382794827958279682797827988279982800828018280282803828048280582806828078280882809828108281182812828138281482815828168281782818828198282082821828228282382824828258282682827828288282982830828318283282833828348283582836828378283882839828408284182842828438284482845828468284782848828498285082851828528285382854828558285682857828588285982860828618286282863828648286582866828678286882869828708287182872828738287482875828768287782878828798288082881828828288382884828858288682887828888288982890828918289282893828948289582896828978289882899829008290182902829038290482905829068290782908829098291082911829128291382914829158291682917829188291982920829218292282923829248292582926829278292882929829308293182932829338293482935829368293782938829398294082941829428294382944829458294682947829488294982950829518295282953829548295582956829578295882959829608296182962829638296482965829668296782968829698297082971829728297382974829758297682977829788297982980829818298282983829848298582986829878298882989829908299182992829938299482995829968299782998829998300083001830028300383004830058300683007830088300983010830118301283013830148301583016830178301883019830208302183022830238302483025830268302783028830298303083031830328303383034830358303683037830388303983040830418304283043830448304583046830478304883049830508305183052830538305483055830568305783058830598306083061830628306383064830658306683067830688306983070830718307283073830748307583076830778307883079830808308183082830838308483085830868308783088830898309083091830928309383094830958309683097830988309983100831018310283103831048310583106831078310883109831108311183112831138311483115831168311783118831198312083121831228312383124831258312683127831288312983130831318313283133831348313583136831378313883139831408314183142831438314483145831468314783148831498315083151831528315383154831558315683157831588315983160831618316283163831648316583166831678316883169831708317183172831738317483175831768317783178831798318083181831828318383184831858318683187831888318983190831918319283193831948319583196831978319883199832008320183202832038320483205832068320783208832098321083211832128321383214832158321683217832188321983220832218322283223832248322583226832278322883229832308323183232832338323483235832368323783238832398324083241832428324383244832458324683247832488324983250832518325283253832548325583256832578325883259832608326183262832638326483265832668326783268832698327083271832728327383274832758327683277832788327983280832818328283283832848328583286832878328883289832908329183292832938329483295832968329783298832998330083301833028330383304833058330683307833088330983310833118331283313833148331583316833178331883319833208332183322833238332483325833268332783328833298333083331833328333383334833358333683337833388333983340833418334283343833448334583346833478334883349833508335183352833538335483355833568335783358833598336083361833628336383364833658336683367833688336983370833718337283373833748337583376833778337883379833808338183382833838338483385833868338783388833898339083391833928339383394833958339683397833988339983400834018340283403834048340583406834078340883409834108341183412834138341483415834168341783418834198342083421834228342383424834258342683427834288342983430834318343283433834348343583436834378343883439834408344183442834438344483445834468344783448834498345083451834528345383454834558345683457834588345983460834618346283463834648346583466834678346883469834708347183472834738347483475834768347783478834798348083481834828348383484834858348683487834888348983490834918349283493834948349583496834978349883499835008350183502835038350483505835068350783508835098351083511835128351383514835158351683517835188351983520835218352283523835248352583526835278352883529835308353183532835338353483535835368353783538835398354083541835428354383544835458354683547835488354983550835518355283553835548355583556835578355883559835608356183562835638356483565835668356783568835698357083571835728357383574835758357683577835788357983580835818358283583835848358583586835878358883589835908359183592835938359483595835968359783598835998360083601836028360383604836058360683607836088360983610836118361283613836148361583616836178361883619836208362183622836238362483625836268362783628836298363083631836328363383634836358363683637836388363983640836418364283643836448364583646836478364883649836508365183652836538365483655836568365783658836598366083661836628366383664836658366683667836688366983670836718367283673836748367583676836778367883679836808368183682836838368483685836868368783688836898369083691836928369383694836958369683697836988369983700837018370283703837048370583706837078370883709837108371183712837138371483715837168371783718837198372083721837228372383724837258372683727837288372983730837318373283733837348373583736837378373883739837408374183742837438374483745837468374783748837498375083751837528375383754837558375683757837588375983760837618376283763837648376583766837678376883769837708377183772837738377483775837768377783778837798378083781837828378383784837858378683787837888378983790837918379283793837948379583796837978379883799838008380183802838038380483805838068380783808838098381083811838128381383814838158381683817838188381983820838218382283823838248382583826838278382883829838308383183832838338383483835838368383783838838398384083841838428384383844838458384683847838488384983850838518385283853838548385583856838578385883859838608386183862838638386483865838668386783868838698387083871838728387383874838758387683877838788387983880838818388283883838848388583886838878388883889838908389183892838938389483895838968389783898838998390083901839028390383904839058390683907839088390983910839118391283913839148391583916839178391883919839208392183922839238392483925839268392783928839298393083931839328393383934839358393683937839388393983940839418394283943839448394583946839478394883949839508395183952839538395483955839568395783958839598396083961839628396383964839658396683967839688396983970839718397283973839748397583976839778397883979839808398183982839838398483985839868398783988839898399083991839928399383994839958399683997839988399984000840018400284003840048400584006840078400884009840108401184012840138401484015840168401784018840198402084021840228402384024840258402684027840288402984030840318403284033840348403584036840378403884039840408404184042840438404484045840468404784048840498405084051840528405384054840558405684057840588405984060840618406284063840648406584066840678406884069840708407184072840738407484075840768407784078840798408084081840828408384084840858408684087840888408984090840918409284093840948409584096840978409884099841008410184102841038410484105841068410784108841098411084111841128411384114841158411684117841188411984120841218412284123841248412584126841278412884129841308413184132841338413484135841368413784138841398414084141841428414384144841458414684147841488414984150841518415284153841548415584156841578415884159841608416184162841638416484165841668416784168841698417084171841728417384174841758417684177841788417984180841818418284183841848418584186841878418884189841908419184192841938419484195841968419784198841998420084201842028420384204842058420684207842088420984210842118421284213842148421584216842178421884219842208422184222842238422484225842268422784228842298423084231842328423384234842358423684237842388423984240842418424284243842448424584246842478424884249842508425184252842538425484255842568425784258842598426084261842628426384264842658426684267842688426984270842718427284273842748427584276842778427884279842808428184282842838428484285842868428784288842898429084291842928429384294842958429684297842988429984300843018430284303843048430584306843078430884309843108431184312843138431484315843168431784318843198432084321843228432384324843258432684327843288432984330843318433284333843348433584336843378433884339843408434184342843438434484345843468434784348843498435084351843528435384354843558435684357843588435984360843618436284363843648436584366843678436884369843708437184372843738437484375843768437784378843798438084381843828438384384843858438684387843888438984390843918439284393843948439584396843978439884399844008440184402844038440484405844068440784408844098441084411844128441384414844158441684417844188441984420844218442284423844248442584426844278442884429844308443184432844338443484435844368443784438844398444084441844428444384444844458444684447844488444984450844518445284453844548445584456844578445884459844608446184462844638446484465844668446784468844698447084471844728447384474844758447684477844788447984480844818448284483844848448584486844878448884489844908449184492844938449484495844968449784498844998450084501845028450384504845058450684507845088450984510845118451284513845148451584516845178451884519845208452184522845238452484525845268452784528845298453084531845328453384534845358453684537845388453984540845418454284543845448454584546845478454884549845508455184552845538455484555845568455784558845598456084561845628456384564845658456684567845688456984570845718457284573845748457584576845778457884579845808458184582845838458484585845868458784588845898459084591845928459384594845958459684597845988459984600846018460284603846048460584606846078460884609846108461184612846138461484615846168461784618846198462084621846228462384624846258462684627846288462984630846318463284633846348463584636846378463884639846408464184642846438464484645846468464784648846498465084651846528465384654846558465684657846588465984660846618466284663846648466584666846678466884669846708467184672846738467484675846768467784678846798468084681846828468384684846858468684687846888468984690846918469284693846948469584696846978469884699847008470184702847038470484705847068470784708847098471084711847128471384714847158471684717847188471984720847218472284723847248472584726847278472884729847308473184732847338473484735847368473784738847398474084741847428474384744847458474684747847488474984750847518475284753847548475584756847578475884759847608476184762847638476484765847668476784768847698477084771847728477384774847758477684777847788477984780847818478284783847848478584786847878478884789847908479184792847938479484795847968479784798847998480084801848028480384804848058480684807848088480984810848118481284813848148481584816848178481884819848208482184822848238482484825848268482784828848298483084831848328483384834848358483684837848388483984840848418484284843848448484584846848478484884849848508485184852848538485484855848568485784858848598486084861848628486384864848658486684867848688486984870848718487284873848748487584876848778487884879848808488184882848838488484885848868488784888848898489084891848928489384894848958489684897848988489984900849018490284903849048490584906849078490884909849108491184912849138491484915849168491784918849198492084921849228492384924849258492684927849288492984930849318493284933849348493584936849378493884939849408494184942849438494484945849468494784948849498495084951849528495384954849558495684957849588495984960849618496284963849648496584966849678496884969849708497184972849738497484975849768497784978849798498084981849828498384984849858498684987849888498984990849918499284993849948499584996849978499884999850008500185002850038500485005850068500785008850098501085011850128501385014850158501685017850188501985020850218502285023850248502585026850278502885029850308503185032850338503485035850368503785038850398504085041850428504385044850458504685047850488504985050850518505285053850548505585056850578505885059850608506185062850638506485065850668506785068850698507085071850728507385074850758507685077850788507985080850818508285083850848508585086850878508885089850908509185092850938509485095850968509785098850998510085101851028510385104851058510685107851088510985110851118511285113851148511585116851178511885119851208512185122851238512485125851268512785128851298513085131851328513385134851358513685137851388513985140851418514285143851448514585146851478514885149851508515185152851538515485155851568515785158851598516085161851628516385164851658516685167851688516985170851718517285173851748517585176851778517885179851808518185182851838518485185851868518785188851898519085191851928519385194851958519685197851988519985200852018520285203852048520585206852078520885209852108521185212852138521485215852168521785218852198522085221852228522385224852258522685227852288522985230852318523285233852348523585236852378523885239852408524185242852438524485245852468524785248852498525085251852528525385254852558525685257852588525985260852618526285263852648526585266852678526885269852708527185272852738527485275852768527785278852798528085281852828528385284852858528685287852888528985290852918529285293852948529585296852978529885299853008530185302853038530485305853068530785308853098531085311853128531385314853158531685317853188531985320853218532285323853248532585326853278532885329853308533185332853338533485335853368533785338853398534085341853428534385344853458534685347853488534985350853518535285353853548535585356853578535885359853608536185362853638536485365853668536785368853698537085371853728537385374853758537685377853788537985380853818538285383853848538585386853878538885389853908539185392853938539485395853968539785398853998540085401854028540385404854058540685407854088540985410854118541285413854148541585416854178541885419854208542185422854238542485425854268542785428854298543085431854328543385434854358543685437854388543985440854418544285443854448544585446854478544885449854508545185452854538545485455854568545785458854598546085461854628546385464854658546685467854688546985470854718547285473854748547585476854778547885479854808548185482854838548485485854868548785488854898549085491854928549385494854958549685497854988549985500855018550285503855048550585506855078550885509855108551185512855138551485515855168551785518855198552085521855228552385524855258552685527855288552985530855318553285533855348553585536855378553885539855408554185542855438554485545855468554785548855498555085551855528555385554855558555685557855588555985560855618556285563855648556585566855678556885569855708557185572855738557485575855768557785578855798558085581855828558385584855858558685587855888558985590855918559285593855948559585596855978559885599856008560185602856038560485605856068560785608856098561085611856128561385614856158561685617856188561985620856218562285623856248562585626856278562885629856308563185632856338563485635856368563785638856398564085641856428564385644856458564685647856488564985650856518565285653856548565585656856578565885659856608566185662856638566485665856668566785668856698567085671856728567385674856758567685677856788567985680856818568285683856848568585686856878568885689856908569185692856938569485695856968569785698856998570085701857028570385704857058570685707857088570985710857118571285713857148571585716857178571885719857208572185722857238572485725857268572785728857298573085731857328573385734857358573685737857388573985740857418574285743857448574585746857478574885749857508575185752857538575485755857568575785758857598576085761857628576385764857658576685767857688576985770857718577285773857748577585776857778577885779857808578185782857838578485785857868578785788857898579085791857928579385794857958579685797857988579985800858018580285803858048580585806858078580885809858108581185812858138581485815858168581785818858198582085821858228582385824858258582685827858288582985830858318583285833858348583585836858378583885839858408584185842858438584485845858468584785848858498585085851858528585385854858558585685857858588585985860858618586285863858648586585866858678586885869858708587185872858738587485875858768587785878858798588085881858828588385884858858588685887858888588985890858918589285893858948589585896858978589885899859008590185902859038590485905859068590785908859098591085911859128591385914859158591685917859188591985920859218592285923859248592585926859278592885929859308593185932859338593485935859368593785938859398594085941859428594385944859458594685947859488594985950859518595285953859548595585956859578595885959859608596185962859638596485965859668596785968859698597085971859728597385974859758597685977859788597985980859818598285983859848598585986859878598885989859908599185992859938599485995859968599785998859998600086001860028600386004860058600686007860088600986010860118601286013860148601586016860178601886019860208602186022860238602486025860268602786028860298603086031860328603386034860358603686037860388603986040860418604286043860448604586046860478604886049860508605186052860538605486055860568605786058860598606086061860628606386064860658606686067860688606986070860718607286073860748607586076860778607886079860808608186082860838608486085860868608786088860898609086091860928609386094860958609686097860988609986100861018610286103861048610586106861078610886109861108611186112861138611486115861168611786118861198612086121861228612386124861258612686127861288612986130861318613286133861348613586136861378613886139861408614186142861438614486145861468614786148861498615086151861528615386154861558615686157861588615986160861618616286163861648616586166861678616886169861708617186172861738617486175861768617786178861798618086181861828618386184861858618686187861888618986190861918619286193861948619586196861978619886199862008620186202862038620486205862068620786208862098621086211862128621386214862158621686217862188621986220862218622286223862248622586226862278622886229862308623186232862338623486235862368623786238862398624086241862428624386244862458624686247862488624986250862518625286253862548625586256862578625886259862608626186262862638626486265862668626786268862698627086271862728627386274862758627686277862788627986280862818628286283862848628586286862878628886289862908629186292862938629486295862968629786298862998630086301863028630386304863058630686307863088630986310863118631286313863148631586316863178631886319863208632186322863238632486325863268632786328863298633086331863328633386334863358633686337863388633986340863418634286343863448634586346863478634886349863508635186352863538635486355863568635786358863598636086361863628636386364863658636686367863688636986370863718637286373863748637586376863778637886379863808638186382863838638486385863868638786388863898639086391863928639386394863958639686397863988639986400864018640286403864048640586406864078640886409864108641186412864138641486415864168641786418864198642086421864228642386424864258642686427864288642986430864318643286433864348643586436864378643886439864408644186442864438644486445864468644786448864498645086451864528645386454864558645686457864588645986460864618646286463864648646586466864678646886469864708647186472864738647486475864768647786478864798648086481864828648386484864858648686487864888648986490864918649286493864948649586496864978649886499865008650186502865038650486505865068650786508865098651086511865128651386514865158651686517865188651986520865218652286523865248652586526865278652886529865308653186532865338653486535865368653786538865398654086541865428654386544865458654686547865488654986550865518655286553865548655586556865578655886559865608656186562865638656486565865668656786568865698657086571865728657386574865758657686577865788657986580865818658286583865848658586586865878658886589865908659186592865938659486595865968659786598865998660086601866028660386604866058660686607866088660986610866118661286613866148661586616866178661886619866208662186622866238662486625866268662786628866298663086631866328663386634866358663686637866388663986640866418664286643866448664586646866478664886649866508665186652866538665486655866568665786658866598666086661866628666386664866658666686667866688666986670866718667286673866748667586676866778667886679866808668186682866838668486685866868668786688866898669086691866928669386694866958669686697866988669986700867018670286703867048670586706867078670886709867108671186712867138671486715867168671786718867198672086721867228672386724867258672686727867288672986730867318673286733867348673586736867378673886739867408674186742867438674486745867468674786748867498675086751867528675386754867558675686757867588675986760867618676286763867648676586766867678676886769867708677186772867738677486775867768677786778867798678086781867828678386784867858678686787867888678986790867918679286793867948679586796867978679886799868008680186802868038680486805868068680786808868098681086811868128681386814868158681686817868188681986820868218682286823868248682586826868278682886829868308683186832868338683486835868368683786838868398684086841868428684386844868458684686847868488684986850868518685286853868548685586856868578685886859868608686186862868638686486865868668686786868868698687086871868728687386874868758687686877868788687986880868818688286883868848688586886868878688886889868908689186892868938689486895868968689786898868998690086901869028690386904869058690686907869088690986910869118691286913869148691586916869178691886919869208692186922869238692486925869268692786928869298693086931869328693386934869358693686937869388693986940869418694286943869448694586946869478694886949869508695186952869538695486955869568695786958869598696086961869628696386964869658696686967869688696986970869718697286973869748697586976869778697886979869808698186982869838698486985869868698786988869898699086991869928699386994869958699686997869988699987000870018700287003870048700587006870078700887009870108701187012870138701487015870168701787018870198702087021870228702387024870258702687027870288702987030870318703287033870348703587036870378703887039870408704187042870438704487045870468704787048870498705087051870528705387054870558705687057870588705987060870618706287063870648706587066870678706887069870708707187072870738707487075870768707787078870798708087081870828708387084870858708687087870888708987090870918709287093870948709587096870978709887099871008710187102871038710487105871068710787108871098711087111871128711387114871158711687117871188711987120871218712287123871248712587126871278712887129871308713187132871338713487135871368713787138871398714087141871428714387144871458714687147871488714987150871518715287153871548715587156871578715887159871608716187162871638716487165871668716787168871698717087171871728717387174871758717687177871788717987180871818718287183871848718587186871878718887189871908719187192871938719487195871968719787198871998720087201872028720387204872058720687207872088720987210872118721287213872148721587216872178721887219872208722187222872238722487225872268722787228872298723087231872328723387234872358723687237872388723987240872418724287243872448724587246872478724887249872508725187252872538725487255872568725787258872598726087261872628726387264872658726687267872688726987270872718727287273872748727587276872778727887279872808728187282872838728487285872868728787288872898729087291872928729387294872958729687297872988729987300873018730287303873048730587306873078730887309873108731187312873138731487315873168731787318873198732087321873228732387324873258732687327873288732987330873318733287333873348733587336873378733887339873408734187342873438734487345873468734787348873498735087351873528735387354873558735687357873588735987360873618736287363873648736587366873678736887369873708737187372873738737487375873768737787378873798738087381873828738387384873858738687387873888738987390873918739287393873948739587396873978739887399874008740187402874038740487405874068740787408874098741087411874128741387414874158741687417874188741987420874218742287423874248742587426874278742887429874308743187432874338743487435874368743787438874398744087441874428744387444874458744687447874488744987450874518745287453874548745587456874578745887459874608746187462874638746487465874668746787468874698747087471874728747387474874758747687477874788747987480874818748287483874848748587486874878748887489874908749187492874938749487495874968749787498874998750087501875028750387504875058750687507875088750987510875118751287513875148751587516875178751887519875208752187522875238752487525875268752787528875298753087531875328753387534875358753687537875388753987540875418754287543875448754587546875478754887549875508755187552875538755487555875568755787558875598756087561875628756387564875658756687567875688756987570875718757287573875748757587576875778757887579875808758187582875838758487585875868758787588875898759087591875928759387594875958759687597875988759987600876018760287603876048760587606876078760887609876108761187612876138761487615876168761787618876198762087621876228762387624876258762687627876288762987630876318763287633876348763587636876378763887639876408764187642876438764487645876468764787648876498765087651876528765387654876558765687657876588765987660876618766287663876648766587666876678766887669876708767187672876738767487675876768767787678876798768087681876828768387684876858768687687876888768987690876918769287693876948769587696876978769887699877008770187702877038770487705877068770787708877098771087711877128771387714877158771687717877188771987720877218772287723877248772587726877278772887729877308773187732877338773487735877368773787738877398774087741877428774387744877458774687747877488774987750877518775287753877548775587756877578775887759877608776187762877638776487765877668776787768877698777087771877728777387774877758777687777877788777987780877818778287783877848778587786877878778887789877908779187792877938779487795877968779787798877998780087801878028780387804878058780687807878088780987810878118781287813878148781587816878178781887819878208782187822878238782487825878268782787828878298783087831878328783387834878358783687837878388783987840878418784287843878448784587846878478784887849878508785187852878538785487855878568785787858878598786087861878628786387864878658786687867878688786987870878718787287873878748787587876878778787887879878808788187882878838788487885878868788787888878898789087891878928789387894878958789687897878988789987900879018790287903879048790587906879078790887909879108791187912879138791487915879168791787918879198792087921879228792387924879258792687927879288792987930879318793287933879348793587936879378793887939879408794187942879438794487945879468794787948879498795087951879528795387954879558795687957879588795987960879618796287963879648796587966879678796887969879708797187972879738797487975879768797787978879798798087981879828798387984879858798687987879888798987990879918799287993879948799587996879978799887999880008800188002880038800488005880068800788008880098801088011880128801388014880158801688017880188801988020880218802288023880248802588026880278802888029880308803188032880338803488035880368803788038880398804088041880428804388044880458804688047880488804988050880518805288053880548805588056880578805888059880608806188062880638806488065880668806788068880698807088071880728807388074880758807688077880788807988080880818808288083880848808588086880878808888089880908809188092880938809488095880968809788098880998810088101881028810388104881058810688107881088810988110881118811288113881148811588116881178811888119881208812188122881238812488125881268812788128881298813088131881328813388134881358813688137881388813988140881418814288143881448814588146881478814888149881508815188152881538815488155881568815788158881598816088161881628816388164881658816688167881688816988170881718817288173881748817588176881778817888179881808818188182881838818488185881868818788188881898819088191881928819388194881958819688197881988819988200882018820288203882048820588206882078820888209882108821188212882138821488215882168821788218882198822088221882228822388224882258822688227882288822988230882318823288233882348823588236882378823888239882408824188242882438824488245882468824788248882498825088251882528825388254882558825688257882588825988260882618826288263882648826588266882678826888269882708827188272882738827488275882768827788278882798828088281882828828388284882858828688287882888828988290882918829288293882948829588296882978829888299883008830188302883038830488305883068830788308883098831088311883128831388314883158831688317883188831988320883218832288323883248832588326883278832888329883308833188332883338833488335883368833788338883398834088341883428834388344883458834688347883488834988350883518835288353883548835588356883578835888359883608836188362883638836488365883668836788368883698837088371883728837388374883758837688377883788837988380883818838288383883848838588386883878838888389883908839188392883938839488395883968839788398883998840088401884028840388404884058840688407884088840988410884118841288413884148841588416884178841888419884208842188422884238842488425884268842788428884298843088431884328843388434884358843688437884388843988440884418844288443884448844588446884478844888449884508845188452884538845488455884568845788458884598846088461884628846388464884658846688467884688846988470884718847288473884748847588476884778847888479884808848188482884838848488485884868848788488884898849088491884928849388494884958849688497884988849988500885018850288503885048850588506885078850888509885108851188512885138851488515885168851788518885198852088521885228852388524885258852688527885288852988530885318853288533885348853588536885378853888539885408854188542885438854488545885468854788548885498855088551885528855388554885558855688557885588855988560885618856288563885648856588566885678856888569885708857188572885738857488575885768857788578885798858088581885828858388584885858858688587885888858988590885918859288593885948859588596885978859888599886008860188602886038860488605886068860788608886098861088611886128861388614886158861688617886188861988620886218862288623886248862588626886278862888629886308863188632886338863488635886368863788638886398864088641886428864388644886458864688647886488864988650886518865288653886548865588656886578865888659886608866188662886638866488665886668866788668886698867088671886728867388674886758867688677886788867988680886818868288683886848868588686886878868888689886908869188692886938869488695886968869788698886998870088701887028870388704887058870688707887088870988710887118871288713887148871588716887178871888719887208872188722887238872488725887268872788728887298873088731887328873388734887358873688737887388873988740887418874288743887448874588746887478874888749887508875188752887538875488755887568875788758887598876088761887628876388764887658876688767887688876988770887718877288773887748877588776887778877888779887808878188782887838878488785887868878788788887898879088791887928879388794887958879688797887988879988800888018880288803888048880588806888078880888809888108881188812888138881488815888168881788818888198882088821888228882388824888258882688827888288882988830888318883288833888348883588836888378883888839888408884188842888438884488845888468884788848888498885088851888528885388854888558885688857888588885988860888618886288863888648886588866888678886888869888708887188872888738887488875888768887788878888798888088881888828888388884888858888688887888888888988890888918889288893888948889588896888978889888899889008890188902889038890488905889068890788908889098891088911889128891388914889158891688917889188891988920889218892288923889248892588926889278892888929889308893188932889338893488935889368893788938889398894088941889428894388944889458894688947889488894988950889518895288953889548895588956889578895888959889608896188962889638896488965889668896788968889698897088971889728897388974889758897688977889788897988980889818898288983889848898588986889878898888989889908899188992889938899488995889968899788998889998900089001890028900389004890058900689007890088900989010890118901289013890148901589016890178901889019890208902189022890238902489025890268902789028890298903089031890328903389034890358903689037890388903989040890418904289043890448904589046890478904889049890508905189052890538905489055890568905789058890598906089061890628906389064890658906689067890688906989070890718907289073890748907589076890778907889079890808908189082890838908489085890868908789088890898909089091890928909389094890958909689097890988909989100891018910289103891048910589106891078910889109891108911189112891138911489115891168911789118891198912089121891228912389124891258912689127891288912989130891318913289133891348913589136891378913889139891408914189142891438914489145891468914789148891498915089151891528915389154891558915689157891588915989160891618916289163891648916589166891678916889169891708917189172891738917489175891768917789178891798918089181891828918389184891858918689187891888918989190891918919289193891948919589196891978919889199892008920189202892038920489205892068920789208892098921089211892128921389214892158921689217892188921989220892218922289223892248922589226892278922889229892308923189232892338923489235892368923789238892398924089241892428924389244892458924689247892488924989250892518925289253892548925589256892578925889259892608926189262892638926489265892668926789268892698927089271892728927389274892758927689277892788927989280892818928289283892848928589286892878928889289892908929189292892938929489295892968929789298892998930089301893028930389304893058930689307893088930989310893118931289313893148931589316893178931889319893208932189322893238932489325893268932789328893298933089331893328933389334893358933689337893388933989340893418934289343893448934589346893478934889349893508935189352893538935489355893568935789358893598936089361893628936389364893658936689367893688936989370893718937289373893748937589376893778937889379893808938189382893838938489385893868938789388893898939089391893928939389394893958939689397893988939989400894018940289403894048940589406894078940889409894108941189412894138941489415894168941789418894198942089421894228942389424894258942689427894288942989430894318943289433894348943589436894378943889439894408944189442894438944489445894468944789448894498945089451894528945389454894558945689457894588945989460894618946289463894648946589466894678946889469894708947189472894738947489475894768947789478894798948089481894828948389484894858948689487894888948989490894918949289493894948949589496894978949889499895008950189502895038950489505895068950789508895098951089511895128951389514895158951689517895188951989520895218952289523895248952589526895278952889529895308953189532895338953489535895368953789538895398954089541895428954389544895458954689547895488954989550895518955289553895548955589556895578955889559895608956189562895638956489565895668956789568895698957089571895728957389574895758957689577895788957989580895818958289583895848958589586895878958889589895908959189592895938959489595895968959789598895998960089601896028960389604896058960689607896088960989610896118961289613896148961589616896178961889619896208962189622896238962489625896268962789628896298963089631896328963389634896358963689637896388963989640896418964289643896448964589646896478964889649896508965189652896538965489655896568965789658896598966089661896628966389664896658966689667896688966989670896718967289673896748967589676896778967889679896808968189682896838968489685896868968789688896898969089691896928969389694896958969689697896988969989700897018970289703897048970589706897078970889709897108971189712897138971489715897168971789718897198972089721897228972389724897258972689727897288972989730897318973289733897348973589736897378973889739897408974189742897438974489745897468974789748897498975089751897528975389754897558975689757897588975989760897618976289763897648976589766897678976889769897708977189772897738977489775897768977789778897798978089781897828978389784897858978689787897888978989790897918979289793897948979589796897978979889799898008980189802898038980489805898068980789808898098981089811898128981389814898158981689817898188981989820898218982289823898248982589826898278982889829898308983189832898338983489835898368983789838898398984089841898428984389844898458984689847898488984989850898518985289853898548985589856898578985889859898608986189862898638986489865898668986789868898698987089871898728987389874898758987689877898788987989880898818988289883898848988589886898878988889889898908989189892898938989489895898968989789898898998990089901899028990389904899058990689907899088990989910899118991289913899148991589916899178991889919899208992189922899238992489925899268992789928899298993089931899328993389934899358993689937899388993989940899418994289943899448994589946899478994889949899508995189952899538995489955899568995789958899598996089961899628996389964899658996689967899688996989970899718997289973899748997589976899778997889979899808998189982899838998489985899868998789988899898999089991899928999389994899958999689997899988999990000900019000290003900049000590006900079000890009900109001190012900139001490015900169001790018900199002090021900229002390024900259002690027900289002990030900319003290033900349003590036900379003890039900409004190042900439004490045900469004790048900499005090051900529005390054900559005690057900589005990060900619006290063900649006590066900679006890069900709007190072900739007490075900769007790078900799008090081900829008390084900859008690087900889008990090900919009290093900949009590096900979009890099901009010190102901039010490105901069010790108901099011090111901129011390114901159011690117901189011990120901219012290123901249012590126901279012890129901309013190132901339013490135901369013790138901399014090141901429014390144901459014690147901489014990150901519015290153901549015590156901579015890159901609016190162901639016490165901669016790168901699017090171901729017390174901759017690177901789017990180901819018290183901849018590186901879018890189901909019190192901939019490195901969019790198901999020090201902029020390204902059020690207902089020990210902119021290213902149021590216902179021890219902209022190222902239022490225902269022790228902299023090231902329023390234902359023690237902389023990240902419024290243902449024590246902479024890249902509025190252902539025490255902569025790258902599026090261902629026390264902659026690267902689026990270902719027290273902749027590276902779027890279902809028190282902839028490285902869028790288902899029090291902929029390294902959029690297902989029990300903019030290303903049030590306903079030890309903109031190312903139031490315903169031790318903199032090321903229032390324903259032690327903289032990330903319033290333903349033590336903379033890339903409034190342903439034490345903469034790348903499035090351903529035390354903559035690357903589035990360903619036290363903649036590366903679036890369903709037190372903739037490375903769037790378903799038090381903829038390384903859038690387903889038990390903919039290393903949039590396903979039890399904009040190402904039040490405904069040790408904099041090411904129041390414904159041690417904189041990420904219042290423904249042590426904279042890429904309043190432904339043490435904369043790438904399044090441904429044390444904459044690447904489044990450904519045290453904549045590456904579045890459904609046190462904639046490465904669046790468904699047090471904729047390474904759047690477904789047990480904819048290483904849048590486904879048890489904909049190492904939049490495904969049790498904999050090501905029050390504905059050690507905089050990510905119051290513905149051590516905179051890519905209052190522905239052490525905269052790528905299053090531905329053390534905359053690537905389053990540905419054290543905449054590546905479054890549905509055190552905539055490555905569055790558905599056090561905629056390564905659056690567905689056990570905719057290573905749057590576905779057890579905809058190582905839058490585905869058790588905899059090591905929059390594905959059690597905989059990600906019060290603906049060590606906079060890609906109061190612906139061490615906169061790618906199062090621906229062390624906259062690627906289062990630906319063290633906349063590636906379063890639906409064190642906439064490645906469064790648906499065090651906529065390654906559065690657906589065990660906619066290663906649066590666906679066890669906709067190672906739067490675906769067790678906799068090681906829068390684906859068690687906889068990690906919069290693906949069590696906979069890699907009070190702907039070490705907069070790708907099071090711907129071390714907159071690717907189071990720907219072290723907249072590726907279072890729907309073190732907339073490735907369073790738907399074090741907429074390744907459074690747907489074990750907519075290753907549075590756907579075890759907609076190762907639076490765907669076790768907699077090771907729077390774907759077690777907789077990780907819078290783907849078590786907879078890789907909079190792907939079490795907969079790798907999080090801908029080390804908059080690807908089080990810908119081290813908149081590816908179081890819908209082190822908239082490825908269082790828908299083090831908329083390834908359083690837908389083990840908419084290843908449084590846908479084890849908509085190852908539085490855908569085790858908599086090861908629086390864908659086690867908689086990870908719087290873908749087590876908779087890879908809088190882908839088490885908869088790888908899089090891908929089390894908959089690897908989089990900909019090290903909049090590906909079090890909909109091190912909139091490915909169091790918909199092090921909229092390924909259092690927909289092990930909319093290933909349093590936909379093890939909409094190942909439094490945909469094790948909499095090951909529095390954909559095690957909589095990960909619096290963909649096590966909679096890969909709097190972909739097490975909769097790978909799098090981909829098390984909859098690987909889098990990909919099290993909949099590996909979099890999910009100191002910039100491005910069100791008910099101091011910129101391014910159101691017910189101991020910219102291023910249102591026910279102891029910309103191032910339103491035910369103791038910399104091041910429104391044910459104691047910489104991050910519105291053910549105591056910579105891059910609106191062910639106491065910669106791068910699107091071910729107391074910759107691077910789107991080910819108291083910849108591086910879108891089910909109191092910939109491095910969109791098910999110091101911029110391104911059110691107911089110991110911119111291113911149111591116911179111891119911209112191122911239112491125911269112791128911299113091131911329113391134911359113691137911389113991140911419114291143911449114591146911479114891149911509115191152911539115491155911569115791158911599116091161911629116391164911659116691167911689116991170911719117291173911749117591176911779117891179911809118191182911839118491185911869118791188911899119091191911929119391194911959119691197911989119991200912019120291203912049120591206912079120891209912109121191212912139121491215912169121791218912199122091221912229122391224912259122691227912289122991230912319123291233912349123591236912379123891239912409124191242912439124491245912469124791248912499125091251912529125391254912559125691257912589125991260912619126291263912649126591266912679126891269912709127191272912739127491275912769127791278912799128091281912829128391284912859128691287912889128991290912919129291293912949129591296912979129891299913009130191302913039130491305913069130791308913099131091311913129131391314913159131691317913189131991320913219132291323913249132591326913279132891329913309133191332913339133491335913369133791338913399134091341913429134391344913459134691347913489134991350913519135291353913549135591356913579135891359913609136191362913639136491365913669136791368913699137091371913729137391374913759137691377913789137991380913819138291383913849138591386913879138891389913909139191392913939139491395913969139791398913999140091401914029140391404914059140691407914089140991410914119141291413914149141591416914179141891419914209142191422914239142491425914269142791428914299143091431914329143391434914359143691437914389143991440914419144291443914449144591446914479144891449914509145191452914539145491455914569145791458914599146091461914629146391464914659146691467914689146991470914719147291473914749147591476914779147891479914809148191482914839148491485914869148791488914899149091491914929149391494914959149691497914989149991500915019150291503915049150591506915079150891509915109151191512915139151491515915169151791518915199152091521915229152391524915259152691527915289152991530915319153291533915349153591536915379153891539915409154191542915439154491545915469154791548915499155091551915529155391554915559155691557915589155991560915619156291563915649156591566915679156891569915709157191572915739157491575915769157791578915799158091581915829158391584915859158691587915889158991590915919159291593915949159591596915979159891599916009160191602916039160491605916069160791608916099161091611916129161391614916159161691617916189161991620916219162291623916249162591626916279162891629916309163191632916339163491635916369163791638916399164091641916429164391644916459164691647916489164991650916519165291653916549165591656916579165891659916609166191662916639166491665916669166791668916699167091671916729167391674916759167691677916789167991680916819168291683916849168591686916879168891689916909169191692916939169491695916969169791698916999170091701917029170391704917059170691707917089170991710917119171291713917149171591716917179171891719917209172191722917239172491725917269172791728917299173091731917329173391734917359173691737917389173991740917419174291743917449174591746917479174891749917509175191752917539175491755917569175791758917599176091761917629176391764917659176691767917689176991770917719177291773917749177591776917779177891779917809178191782917839178491785917869178791788917899179091791917929179391794917959179691797917989179991800918019180291803918049180591806918079180891809918109181191812918139181491815918169181791818918199182091821918229182391824918259182691827918289182991830918319183291833918349183591836918379183891839918409184191842918439184491845918469184791848918499185091851918529185391854918559185691857918589185991860918619186291863918649186591866918679186891869918709187191872918739187491875918769187791878918799188091881918829188391884918859188691887918889188991890918919189291893918949189591896918979189891899919009190191902919039190491905919069190791908919099191091911919129191391914919159191691917919189191991920919219192291923919249192591926919279192891929919309193191932919339193491935919369193791938919399194091941919429194391944919459194691947919489194991950919519195291953919549195591956919579195891959919609196191962919639196491965919669196791968919699197091971919729197391974919759197691977919789197991980919819198291983919849198591986919879198891989919909199191992919939199491995919969199791998919999200092001920029200392004920059200692007920089200992010920119201292013920149201592016920179201892019920209202192022920239202492025920269202792028920299203092031920329203392034920359203692037920389203992040920419204292043920449204592046920479204892049920509205192052920539205492055920569205792058920599206092061920629206392064920659206692067920689206992070920719207292073920749207592076920779207892079920809208192082920839208492085920869208792088920899209092091920929209392094920959209692097920989209992100921019210292103921049210592106921079210892109921109211192112921139211492115921169211792118921199212092121921229212392124921259212692127921289212992130921319213292133921349213592136921379213892139921409214192142921439214492145921469214792148921499215092151921529215392154921559215692157921589215992160921619216292163921649216592166921679216892169921709217192172921739217492175921769217792178921799218092181921829218392184921859218692187921889218992190921919219292193921949219592196921979219892199922009220192202922039220492205922069220792208922099221092211922129221392214922159221692217922189221992220922219222292223922249222592226922279222892229922309223192232922339223492235922369223792238922399224092241922429224392244922459224692247922489224992250922519225292253922549225592256922579225892259922609226192262922639226492265922669226792268922699227092271922729227392274922759227692277922789227992280922819228292283922849228592286922879228892289922909229192292922939229492295922969229792298922999230092301923029230392304923059230692307923089230992310923119231292313923149231592316923179231892319923209232192322923239232492325923269232792328923299233092331923329233392334923359233692337923389233992340923419234292343923449234592346923479234892349923509235192352923539235492355923569235792358923599236092361923629236392364923659236692367923689236992370923719237292373923749237592376923779237892379923809238192382923839238492385923869238792388923899239092391923929239392394923959239692397923989239992400924019240292403924049240592406924079240892409924109241192412924139241492415924169241792418924199242092421924229242392424924259242692427924289242992430924319243292433924349243592436924379243892439924409244192442924439244492445924469244792448924499245092451924529245392454924559245692457924589245992460924619246292463924649246592466924679246892469924709247192472924739247492475924769247792478924799248092481924829248392484924859248692487924889248992490924919249292493924949249592496924979249892499925009250192502925039250492505925069250792508925099251092511925129251392514925159251692517925189251992520925219252292523925249252592526925279252892529925309253192532925339253492535925369253792538925399254092541925429254392544925459254692547925489254992550925519255292553925549255592556925579255892559925609256192562925639256492565925669256792568925699257092571925729257392574925759257692577925789257992580925819258292583925849258592586925879258892589925909259192592925939259492595925969259792598925999260092601926029260392604926059260692607926089260992610926119261292613926149261592616926179261892619926209262192622926239262492625926269262792628926299263092631926329263392634926359263692637926389263992640926419264292643926449264592646926479264892649926509265192652926539265492655926569265792658926599266092661926629266392664926659266692667926689266992670926719267292673926749267592676926779267892679926809268192682926839268492685926869268792688926899269092691926929269392694926959269692697926989269992700927019270292703927049270592706927079270892709927109271192712927139271492715927169271792718927199272092721927229272392724927259272692727927289272992730927319273292733927349273592736927379273892739927409274192742927439274492745927469274792748927499275092751927529275392754927559275692757927589275992760927619276292763927649276592766927679276892769927709277192772927739277492775927769277792778927799278092781927829278392784927859278692787927889278992790927919279292793927949279592796927979279892799928009280192802928039280492805928069280792808928099281092811928129281392814928159281692817928189281992820928219282292823928249282592826928279282892829928309283192832928339283492835928369283792838928399284092841928429284392844928459284692847928489284992850928519285292853928549285592856928579285892859928609286192862928639286492865928669286792868928699287092871928729287392874928759287692877928789287992880928819288292883928849288592886928879288892889928909289192892928939289492895928969289792898928999290092901929029290392904929059290692907929089290992910929119291292913929149291592916929179291892919929209292192922929239292492925929269292792928929299293092931929329293392934929359293692937929389293992940929419294292943929449294592946929479294892949929509295192952929539295492955929569295792958929599296092961929629296392964929659296692967929689296992970929719297292973929749297592976929779297892979929809298192982929839298492985929869298792988929899299092991929929299392994929959299692997929989299993000930019300293003930049300593006930079300893009930109301193012930139301493015930169301793018930199302093021930229302393024930259302693027930289302993030930319303293033930349303593036930379303893039930409304193042930439304493045930469304793048930499305093051930529305393054930559305693057930589305993060930619306293063930649306593066930679306893069930709307193072930739307493075930769307793078930799308093081930829308393084930859308693087930889308993090930919309293093930949309593096930979309893099931009310193102931039310493105931069310793108931099311093111931129311393114931159311693117931189311993120931219312293123931249312593126931279312893129931309313193132931339313493135931369313793138931399314093141931429314393144931459314693147931489314993150931519315293153931549315593156931579315893159931609316193162931639316493165931669316793168931699317093171931729317393174931759317693177931789317993180931819318293183931849318593186931879318893189931909319193192931939319493195931969319793198931999320093201932029320393204932059320693207932089320993210932119321293213932149321593216932179321893219932209322193222932239322493225932269322793228932299323093231932329323393234932359323693237932389323993240932419324293243932449324593246932479324893249932509325193252932539325493255932569325793258932599326093261932629326393264932659326693267932689326993270932719327293273932749327593276932779327893279932809328193282932839328493285932869328793288932899329093291932929329393294932959329693297932989329993300933019330293303933049330593306933079330893309933109331193312933139331493315933169331793318933199332093321933229332393324933259332693327933289332993330933319333293333933349333593336933379333893339933409334193342933439334493345933469334793348933499335093351933529335393354933559335693357933589335993360933619336293363933649336593366933679336893369933709337193372933739337493375933769337793378933799338093381933829338393384933859338693387933889338993390933919339293393933949339593396933979339893399934009340193402934039340493405934069340793408934099341093411934129341393414934159341693417934189341993420934219342293423934249342593426934279342893429934309343193432934339343493435934369343793438934399344093441934429344393444934459344693447934489344993450934519345293453934549345593456934579345893459934609346193462934639346493465934669346793468934699347093471934729347393474934759347693477934789347993480934819348293483934849348593486934879348893489934909349193492934939349493495934969349793498934999350093501935029350393504935059350693507935089350993510935119351293513935149351593516935179351893519935209352193522935239352493525935269352793528935299353093531935329353393534935359353693537935389353993540935419354293543935449354593546935479354893549935509355193552935539355493555935569355793558935599356093561935629356393564935659356693567935689356993570935719357293573935749357593576935779357893579935809358193582935839358493585935869358793588935899359093591935929359393594935959359693597935989359993600936019360293603936049360593606936079360893609936109361193612936139361493615936169361793618936199362093621936229362393624936259362693627936289362993630936319363293633936349363593636936379363893639936409364193642936439364493645936469364793648936499365093651936529365393654936559365693657936589365993660936619366293663936649366593666936679366893669936709367193672936739367493675936769367793678936799368093681936829368393684936859368693687936889368993690936919369293693936949369593696936979369893699937009370193702937039370493705937069370793708937099371093711937129371393714937159371693717937189371993720937219372293723937249372593726937279372893729937309373193732937339373493735937369373793738937399374093741937429374393744937459374693747937489374993750937519375293753937549375593756937579375893759937609376193762937639376493765937669376793768937699377093771937729377393774937759377693777937789377993780937819378293783937849378593786937879378893789937909379193792937939379493795937969379793798937999380093801938029380393804938059380693807938089380993810938119381293813938149381593816938179381893819938209382193822938239382493825938269382793828938299383093831938329383393834938359383693837938389383993840938419384293843938449384593846938479384893849938509385193852938539385493855938569385793858938599386093861938629386393864938659386693867938689386993870938719387293873938749387593876938779387893879938809388193882938839388493885938869388793888938899389093891938929389393894938959389693897938989389993900939019390293903939049390593906939079390893909939109391193912939139391493915939169391793918939199392093921939229392393924939259392693927939289392993930939319393293933939349393593936939379393893939939409394193942939439394493945939469394793948939499395093951939529395393954939559395693957939589395993960939619396293963939649396593966939679396893969939709397193972939739397493975939769397793978939799398093981939829398393984939859398693987939889398993990939919399293993939949399593996939979399893999940009400194002940039400494005940069400794008940099401094011940129401394014940159401694017940189401994020940219402294023940249402594026940279402894029940309403194032940339403494035940369403794038940399404094041940429404394044940459404694047940489404994050940519405294053940549405594056940579405894059940609406194062940639406494065940669406794068940699407094071940729407394074940759407694077940789407994080940819408294083940849408594086940879408894089940909409194092940939409494095940969409794098940999410094101941029410394104941059410694107941089410994110941119411294113941149411594116941179411894119941209412194122941239412494125941269412794128941299413094131941329413394134941359413694137941389413994140941419414294143941449414594146941479414894149941509415194152941539415494155941569415794158941599416094161941629416394164941659416694167941689416994170941719417294173941749417594176941779417894179941809418194182941839418494185941869418794188941899419094191941929419394194941959419694197941989419994200942019420294203942049420594206942079420894209942109421194212942139421494215942169421794218942199422094221942229422394224942259422694227942289422994230942319423294233942349423594236942379423894239942409424194242942439424494245942469424794248942499425094251942529425394254942559425694257942589425994260942619426294263942649426594266942679426894269942709427194272942739427494275942769427794278942799428094281942829428394284942859428694287942889428994290942919429294293942949429594296942979429894299943009430194302943039430494305943069430794308943099431094311943129431394314943159431694317943189431994320943219432294323943249432594326943279432894329943309433194332943339433494335943369433794338943399434094341943429434394344943459434694347943489434994350943519435294353943549435594356943579435894359943609436194362943639436494365943669436794368943699437094371943729437394374943759437694377943789437994380943819438294383943849438594386943879438894389943909439194392943939439494395943969439794398943999440094401944029440394404944059440694407944089440994410944119441294413944149441594416944179441894419944209442194422944239442494425944269442794428944299443094431944329443394434944359443694437944389443994440944419444294443944449444594446944479444894449944509445194452944539445494455944569445794458944599446094461944629446394464944659446694467944689446994470944719447294473944749447594476944779447894479944809448194482944839448494485944869448794488944899449094491944929449394494944959449694497944989449994500945019450294503945049450594506945079450894509945109451194512945139451494515945169451794518945199452094521945229452394524945259452694527945289452994530945319453294533945349453594536945379453894539945409454194542945439454494545945469454794548945499455094551945529455394554945559455694557945589455994560945619456294563945649456594566945679456894569945709457194572945739457494575945769457794578945799458094581945829458394584945859458694587945889458994590945919459294593945949459594596945979459894599946009460194602946039460494605946069460794608946099461094611946129461394614946159461694617946189461994620946219462294623946249462594626946279462894629946309463194632946339463494635946369463794638946399464094641946429464394644946459464694647946489464994650946519465294653946549465594656946579465894659946609466194662946639466494665946669466794668946699467094671946729467394674946759467694677946789467994680946819468294683946849468594686946879468894689946909469194692946939469494695946969469794698946999470094701947029470394704947059470694707947089470994710947119471294713947149471594716947179471894719947209472194722947239472494725947269472794728947299473094731947329473394734947359473694737947389473994740947419474294743947449474594746947479474894749947509475194752947539475494755947569475794758947599476094761947629476394764947659476694767947689476994770947719477294773947749477594776947779477894779947809478194782947839478494785947869478794788947899479094791947929479394794947959479694797947989479994800948019480294803948049480594806948079480894809948109481194812948139481494815948169481794818948199482094821948229482394824948259482694827948289482994830948319483294833948349483594836948379483894839948409484194842948439484494845948469484794848948499485094851948529485394854948559485694857948589485994860948619486294863948649486594866948679486894869948709487194872948739487494875948769487794878948799488094881948829488394884948859488694887948889488994890948919489294893948949489594896948979489894899949009490194902949039490494905949069490794908949099491094911949129491394914949159491694917949189491994920949219492294923949249492594926949279492894929949309493194932949339493494935949369493794938949399494094941949429494394944949459494694947949489494994950949519495294953949549495594956949579495894959949609496194962949639496494965949669496794968949699497094971949729497394974949759497694977949789497994980949819498294983949849498594986949879498894989949909499194992949939499494995949969499794998949999500095001950029500395004950059500695007950089500995010950119501295013950149501595016950179501895019950209502195022950239502495025950269502795028950299503095031950329503395034950359503695037950389503995040950419504295043950449504595046950479504895049950509505195052950539505495055950569505795058950599506095061950629506395064950659506695067950689506995070950719507295073950749507595076950779507895079950809508195082950839508495085950869508795088950899509095091950929509395094950959509695097950989509995100951019510295103951049510595106951079510895109951109511195112951139511495115951169511795118951199512095121951229512395124951259512695127951289512995130951319513295133951349513595136951379513895139951409514195142951439514495145951469514795148951499515095151951529515395154951559515695157951589515995160951619516295163951649516595166951679516895169951709517195172951739517495175951769517795178951799518095181951829518395184951859518695187951889518995190951919519295193951949519595196951979519895199952009520195202952039520495205952069520795208952099521095211952129521395214952159521695217952189521995220952219522295223952249522595226952279522895229952309523195232952339523495235952369523795238952399524095241952429524395244952459524695247952489524995250952519525295253952549525595256952579525895259952609526195262952639526495265952669526795268952699527095271952729527395274952759527695277952789527995280952819528295283952849528595286952879528895289952909529195292952939529495295952969529795298952999530095301953029530395304953059530695307953089530995310953119531295313953149531595316953179531895319953209532195322953239532495325953269532795328953299533095331953329533395334953359533695337953389533995340953419534295343953449534595346953479534895349953509535195352953539535495355953569535795358953599536095361953629536395364953659536695367953689536995370953719537295373953749537595376953779537895379953809538195382953839538495385953869538795388953899539095391953929539395394953959539695397953989539995400954019540295403954049540595406954079540895409954109541195412954139541495415954169541795418954199542095421954229542395424954259542695427954289542995430954319543295433954349543595436954379543895439954409544195442954439544495445954469544795448954499545095451954529545395454954559545695457954589545995460954619546295463954649546595466954679546895469954709547195472954739547495475954769547795478954799548095481954829548395484954859548695487954889548995490954919549295493954949549595496954979549895499955009550195502955039550495505955069550795508955099551095511955129551395514955159551695517955189551995520955219552295523955249552595526955279552895529955309553195532955339553495535955369553795538955399554095541955429554395544955459554695547955489554995550955519555295553955549555595556955579555895559955609556195562955639556495565955669556795568955699557095571955729557395574955759557695577955789557995580955819558295583955849558595586955879558895589955909559195592955939559495595955969559795598955999560095601956029560395604956059560695607956089560995610956119561295613956149561595616956179561895619956209562195622956239562495625956269562795628956299563095631956329563395634956359563695637956389563995640956419564295643956449564595646956479564895649956509565195652956539565495655956569565795658956599566095661956629566395664956659566695667956689566995670956719567295673956749567595676956779567895679956809568195682956839568495685956869568795688956899569095691956929569395694956959569695697956989569995700957019570295703957049570595706957079570895709957109571195712957139571495715957169571795718957199572095721957229572395724957259572695727957289572995730957319573295733957349573595736957379573895739957409574195742957439574495745957469574795748957499575095751957529575395754957559575695757957589575995760957619576295763957649576595766957679576895769957709577195772957739577495775957769577795778957799578095781957829578395784957859578695787957889578995790957919579295793957949579595796957979579895799958009580195802958039580495805958069580795808958099581095811958129581395814958159581695817958189581995820958219582295823958249582595826958279582895829958309583195832958339583495835958369583795838958399584095841958429584395844958459584695847958489584995850958519585295853958549585595856958579585895859958609586195862958639586495865958669586795868958699587095871958729587395874958759587695877958789587995880958819588295883958849588595886958879588895889958909589195892958939589495895958969589795898958999590095901959029590395904959059590695907959089590995910959119591295913959149591595916959179591895919959209592195922959239592495925959269592795928959299593095931959329593395934959359593695937959389593995940959419594295943959449594595946959479594895949959509595195952959539595495955959569595795958959599596095961959629596395964959659596695967959689596995970959719597295973959749597595976959779597895979959809598195982959839598495985959869598795988959899599095991959929599395994959959599695997959989599996000960019600296003960049600596006960079600896009960109601196012960139601496015960169601796018960199602096021960229602396024960259602696027960289602996030960319603296033960349603596036960379603896039960409604196042960439604496045960469604796048960499605096051960529605396054960559605696057960589605996060960619606296063960649606596066960679606896069960709607196072960739607496075960769607796078960799608096081960829608396084960859608696087960889608996090960919609296093960949609596096960979609896099961009610196102961039610496105961069610796108961099611096111961129611396114961159611696117961189611996120961219612296123961249612596126961279612896129961309613196132961339613496135961369613796138961399614096141961429614396144961459614696147961489614996150961519615296153961549615596156961579615896159961609616196162961639616496165961669616796168961699617096171961729617396174961759617696177961789617996180961819618296183961849618596186961879618896189961909619196192961939619496195961969619796198961999620096201962029620396204962059620696207962089620996210962119621296213962149621596216962179621896219962209622196222962239622496225962269622796228962299623096231962329623396234962359623696237962389623996240962419624296243962449624596246962479624896249962509625196252962539625496255962569625796258962599626096261962629626396264962659626696267962689626996270962719627296273962749627596276962779627896279962809628196282962839628496285962869628796288962899629096291962929629396294962959629696297962989629996300963019630296303963049630596306963079630896309963109631196312963139631496315963169631796318963199632096321963229632396324963259632696327963289632996330963319633296333963349633596336963379633896339963409634196342963439634496345963469634796348963499635096351963529635396354963559635696357963589635996360963619636296363963649636596366963679636896369963709637196372963739637496375963769637796378963799638096381963829638396384963859638696387963889638996390963919639296393963949639596396963979639896399964009640196402964039640496405964069640796408964099641096411964129641396414964159641696417964189641996420964219642296423964249642596426964279642896429964309643196432964339643496435964369643796438964399644096441964429644396444964459644696447964489644996450964519645296453964549645596456964579645896459964609646196462964639646496465964669646796468964699647096471964729647396474964759647696477964789647996480964819648296483964849648596486964879648896489964909649196492964939649496495964969649796498964999650096501965029650396504965059650696507965089650996510965119651296513965149651596516965179651896519965209652196522965239652496525965269652796528965299653096531965329653396534965359653696537965389653996540965419654296543965449654596546965479654896549965509655196552965539655496555965569655796558965599656096561965629656396564965659656696567965689656996570965719657296573965749657596576965779657896579965809658196582965839658496585965869658796588965899659096591965929659396594965959659696597965989659996600966019660296603966049660596606966079660896609966109661196612966139661496615966169661796618966199662096621966229662396624966259662696627966289662996630966319663296633966349663596636966379663896639966409664196642966439664496645966469664796648966499665096651966529665396654966559665696657966589665996660966619666296663966649666596666966679666896669966709667196672966739667496675966769667796678966799668096681966829668396684966859668696687966889668996690966919669296693966949669596696966979669896699967009670196702967039670496705967069670796708967099671096711967129671396714967159671696717967189671996720967219672296723967249672596726967279672896729967309673196732967339673496735967369673796738967399674096741967429674396744967459674696747967489674996750967519675296753967549675596756967579675896759967609676196762967639676496765967669676796768967699677096771967729677396774967759677696777967789677996780967819678296783967849678596786967879678896789967909679196792967939679496795967969679796798967999680096801968029680396804968059680696807968089680996810968119681296813968149681596816968179681896819968209682196822968239682496825968269682796828968299683096831968329683396834968359683696837968389683996840968419684296843968449684596846968479684896849968509685196852968539685496855968569685796858968599686096861968629686396864968659686696867968689686996870968719687296873968749687596876968779687896879968809688196882968839688496885968869688796888968899689096891968929689396894968959689696897968989689996900969019690296903969049690596906969079690896909969109691196912969139691496915969169691796918969199692096921969229692396924969259692696927969289692996930969319693296933969349693596936969379693896939969409694196942969439694496945969469694796948969499695096951969529695396954969559695696957969589695996960969619696296963969649696596966969679696896969969709697196972969739697496975969769697796978969799698096981969829698396984969859698696987969889698996990969919699296993969949699596996969979699896999970009700197002970039700497005970069700797008970099701097011970129701397014970159701697017970189701997020970219702297023970249702597026970279702897029970309703197032970339703497035970369703797038970399704097041970429704397044970459704697047970489704997050970519705297053970549705597056970579705897059970609706197062970639706497065970669706797068970699707097071970729707397074970759707697077970789707997080970819708297083970849708597086970879708897089970909709197092970939709497095970969709797098970999710097101971029710397104971059710697107971089710997110971119711297113971149711597116971179711897119971209712197122971239712497125971269712797128971299713097131971329713397134971359713697137971389713997140971419714297143971449714597146971479714897149971509715197152971539715497155971569715797158971599716097161971629716397164971659716697167971689716997170971719717297173971749717597176971779717897179971809718197182971839718497185971869718797188971899719097191971929719397194971959719697197971989719997200972019720297203972049720597206972079720897209972109721197212972139721497215972169721797218972199722097221972229722397224972259722697227972289722997230972319723297233972349723597236972379723897239972409724197242972439724497245972469724797248972499725097251972529725397254972559725697257972589725997260972619726297263972649726597266972679726897269972709727197272972739727497275972769727797278972799728097281972829728397284972859728697287972889728997290972919729297293972949729597296972979729897299973009730197302973039730497305973069730797308973099731097311973129731397314973159731697317973189731997320973219732297323973249732597326973279732897329973309733197332973339733497335973369733797338973399734097341973429734397344973459734697347973489734997350973519735297353973549735597356973579735897359973609736197362973639736497365973669736797368973699737097371973729737397374973759737697377973789737997380973819738297383973849738597386973879738897389973909739197392973939739497395973969739797398973999740097401974029740397404974059740697407974089740997410974119741297413974149741597416974179741897419974209742197422974239742497425974269742797428974299743097431974329743397434974359743697437974389743997440974419744297443974449744597446974479744897449974509745197452974539745497455974569745797458974599746097461974629746397464974659746697467974689746997470974719747297473974749747597476974779747897479974809748197482974839748497485974869748797488974899749097491974929749397494974959749697497974989749997500975019750297503975049750597506975079750897509975109751197512975139751497515975169751797518975199752097521975229752397524975259752697527975289752997530975319753297533975349753597536975379753897539975409754197542975439754497545975469754797548975499755097551975529755397554975559755697557975589755997560975619756297563975649756597566975679756897569975709757197572975739757497575975769757797578975799758097581975829758397584975859758697587975889758997590975919759297593975949759597596975979759897599976009760197602976039760497605976069760797608976099761097611976129761397614976159761697617976189761997620976219762297623976249762597626976279762897629976309763197632976339763497635976369763797638976399764097641976429764397644976459764697647976489764997650976519765297653976549765597656976579765897659976609766197662976639766497665976669766797668976699767097671976729767397674976759767697677976789767997680976819768297683976849768597686976879768897689976909769197692976939769497695976969769797698976999770097701977029770397704977059770697707977089770997710977119771297713977149771597716977179771897719977209772197722977239772497725977269772797728977299773097731977329773397734977359773697737977389773997740977419774297743977449774597746977479774897749977509775197752977539775497755977569775797758977599776097761977629776397764977659776697767977689776997770977719777297773977749777597776977779777897779977809778197782977839778497785977869778797788977899779097791977929779397794977959779697797977989779997800978019780297803978049780597806978079780897809978109781197812978139781497815978169781797818978199782097821978229782397824978259782697827978289782997830978319783297833978349783597836978379783897839978409784197842978439784497845978469784797848978499785097851978529785397854978559785697857978589785997860978619786297863978649786597866978679786897869978709787197872978739787497875978769787797878978799788097881978829788397884978859788697887978889788997890978919789297893978949789597896978979789897899979009790197902979039790497905979069790797908979099791097911979129791397914979159791697917979189791997920979219792297923979249792597926979279792897929979309793197932979339793497935979369793797938979399794097941979429794397944979459794697947979489794997950979519795297953979549795597956979579795897959979609796197962979639796497965979669796797968979699797097971979729797397974979759797697977979789797997980979819798297983979849798597986979879798897989979909799197992979939799497995979969799797998979999800098001980029800398004980059800698007980089800998010980119801298013980149801598016980179801898019980209802198022980239802498025980269802798028980299803098031980329803398034980359803698037980389803998040980419804298043980449804598046980479804898049980509805198052980539805498055980569805798058980599806098061980629806398064980659806698067980689806998070980719807298073980749807598076980779807898079980809808198082980839808498085980869808798088980899809098091980929809398094980959809698097980989809998100981019810298103981049810598106981079810898109981109811198112981139811498115981169811798118981199812098121981229812398124981259812698127981289812998130981319813298133981349813598136981379813898139981409814198142981439814498145981469814798148981499815098151981529815398154981559815698157981589815998160981619816298163981649816598166981679816898169981709817198172981739817498175981769817798178981799818098181981829818398184981859818698187981889818998190981919819298193981949819598196981979819898199982009820198202982039820498205982069820798208982099821098211982129821398214982159821698217982189821998220982219822298223982249822598226982279822898229982309823198232982339823498235982369823798238982399824098241982429824398244982459824698247982489824998250982519825298253982549825598256982579825898259982609826198262982639826498265982669826798268982699827098271982729827398274982759827698277982789827998280982819828298283982849828598286982879828898289982909829198292982939829498295982969829798298982999830098301983029830398304983059830698307983089830998310983119831298313983149831598316983179831898319983209832198322983239832498325983269832798328983299833098331983329833398334983359833698337983389833998340983419834298343983449834598346983479834898349983509835198352983539835498355983569835798358983599836098361983629836398364983659836698367983689836998370983719837298373983749837598376983779837898379983809838198382983839838498385983869838798388983899839098391983929839398394983959839698397983989839998400984019840298403984049840598406984079840898409984109841198412984139841498415984169841798418984199842098421984229842398424984259842698427984289842998430984319843298433984349843598436984379843898439984409844198442984439844498445984469844798448984499845098451984529845398454984559845698457984589845998460984619846298463984649846598466984679846898469984709847198472984739847498475984769847798478984799848098481984829848398484984859848698487984889848998490984919849298493984949849598496984979849898499985009850198502985039850498505985069850798508985099851098511985129851398514985159851698517985189851998520985219852298523985249852598526985279852898529985309853198532985339853498535985369853798538985399854098541985429854398544985459854698547985489854998550985519855298553985549855598556985579855898559985609856198562985639856498565985669856798568985699857098571985729857398574985759857698577985789857998580985819858298583985849858598586985879858898589985909859198592985939859498595985969859798598985999860098601986029860398604986059860698607986089860998610986119861298613986149861598616986179861898619986209862198622986239862498625986269862798628986299863098631986329863398634986359863698637986389863998640986419864298643986449864598646986479864898649986509865198652986539865498655986569865798658986599866098661986629866398664986659866698667986689866998670986719867298673986749867598676986779867898679986809868198682986839868498685986869868798688986899869098691986929869398694986959869698697986989869998700987019870298703987049870598706987079870898709987109871198712987139871498715987169871798718987199872098721987229872398724987259872698727987289872998730987319873298733987349873598736987379873898739987409874198742987439874498745987469874798748987499875098751987529875398754987559875698757987589875998760987619876298763987649876598766987679876898769987709877198772987739877498775987769877798778987799878098781987829878398784987859878698787987889878998790987919879298793987949879598796987979879898799988009880198802988039880498805988069880798808988099881098811988129881398814988159881698817988189881998820988219882298823988249882598826988279882898829988309883198832988339883498835988369883798838988399884098841988429884398844988459884698847988489884998850988519885298853988549885598856988579885898859988609886198862988639886498865988669886798868988699887098871988729887398874988759887698877988789887998880988819888298883988849888598886988879888898889988909889198892988939889498895988969889798898988999890098901989029890398904989059890698907989089890998910989119891298913989149891598916989179891898919989209892198922989239892498925989269892798928989299893098931989329893398934989359893698937989389893998940989419894298943989449894598946989479894898949989509895198952989539895498955989569895798958989599896098961989629896398964989659896698967989689896998970989719897298973989749897598976989779897898979989809898198982989839898498985989869898798988989899899098991989929899398994989959899698997989989899999000990019900299003990049900599006990079900899009990109901199012990139901499015990169901799018990199902099021990229902399024990259902699027990289902999030990319903299033990349903599036990379903899039990409904199042990439904499045990469904799048990499905099051990529905399054990559905699057990589905999060990619906299063990649906599066990679906899069990709907199072990739907499075990769907799078990799908099081990829908399084990859908699087990889908999090990919909299093990949909599096990979909899099991009910199102991039910499105991069910799108991099911099111991129911399114991159911699117991189911999120991219912299123991249912599126991279912899129991309913199132991339913499135991369913799138991399914099141991429914399144991459914699147991489914999150991519915299153991549915599156991579915899159991609916199162991639916499165991669916799168991699917099171991729917399174991759917699177991789917999180991819918299183991849918599186991879918899189991909919199192991939919499195991969919799198991999920099201992029920399204992059920699207992089920999210992119921299213992149921599216992179921899219992209922199222992239922499225992269922799228992299923099231992329923399234992359923699237992389923999240992419924299243992449924599246992479924899249992509925199252992539925499255992569925799258992599926099261992629926399264992659926699267992689926999270992719927299273992749927599276992779927899279992809928199282992839928499285992869928799288992899929099291992929929399294992959929699297992989929999300993019930299303993049930599306993079930899309993109931199312993139931499315993169931799318993199932099321993229932399324993259932699327993289932999330993319933299333993349933599336993379933899339993409934199342993439934499345993469934799348993499935099351993529935399354993559935699357993589935999360993619936299363993649936599366993679936899369993709937199372993739937499375993769937799378993799938099381993829938399384993859938699387993889938999390993919939299393993949939599396993979939899399994009940199402994039940499405994069940799408994099941099411994129941399414994159941699417994189941999420994219942299423994249942599426994279942899429994309943199432994339943499435994369943799438994399944099441994429944399444994459944699447994489944999450994519945299453994549945599456994579945899459994609946199462994639946499465994669946799468994699947099471994729947399474994759947699477994789947999480994819948299483994849948599486994879948899489994909949199492994939949499495994969949799498994999950099501995029950399504995059950699507995089950999510995119951299513995149951599516995179951899519995209952199522995239952499525995269952799528995299953099531995329953399534995359953699537995389953999540995419954299543995449954599546995479954899549995509955199552995539955499555995569955799558995599956099561995629956399564995659956699567995689956999570995719957299573995749957599576995779957899579995809958199582995839958499585995869958799588995899959099591995929959399594995959959699597995989959999600996019960299603996049960599606996079960899609996109961199612996139961499615996169961799618996199962099621996229962399624996259962699627996289962999630996319963299633996349963599636996379963899639996409964199642996439964499645996469964799648996499965099651996529965399654996559965699657996589965999660996619966299663996649966599666996679966899669996709967199672996739967499675996769967799678996799968099681996829968399684996859968699687996889968999690996919969299693996949969599696996979969899699997009970199702997039970499705997069970799708997099971099711997129971399714997159971699717997189971999720997219972299723997249972599726997279972899729997309973199732997339973499735997369973799738997399974099741997429974399744997459974699747997489974999750997519975299753997549975599756997579975899759997609976199762997639976499765997669976799768997699977099771997729977399774997759977699777997789977999780997819978299783997849978599786997879978899789997909979199792997939979499795997969979799798997999980099801998029980399804998059980699807998089980999810998119981299813998149981599816998179981899819998209982199822998239982499825998269982799828998299983099831998329983399834998359983699837998389983999840998419984299843998449984599846998479984899849998509985199852998539985499855998569985799858998599986099861998629986399864998659986699867998689986999870998719987299873998749987599876998779987899879998809988199882998839988499885998869988799888998899989099891998929989399894998959989699897998989989999900999019990299903999049990599906999079990899909999109991199912999139991499915999169991799918999199992099921999229992399924999259992699927999289992999930999319993299933999349993599936999379993899939999409994199942999439994499945999469994799948999499995099951999529995399954999559995699957999589995999960999619996299963999649996599966999679996899969999709997199972999739997499975999769997799978999799998099981999829998399984999859998699987999889998999990999919999299993999949999599996999979999899999100000100001100002100003100004100005100006100007100008100009100010100011100012100013100014100015100016100017100018100019100020100021100022100023100024100025100026100027100028100029100030100031100032100033100034100035100036100037100038100039100040100041100042100043100044100045100046100047100048100049100050100051100052100053100054100055100056100057100058100059100060100061100062100063100064100065100066100067100068100069100070100071100072100073100074100075100076100077100078100079100080100081100082100083100084100085100086100087100088100089100090100091100092100093100094100095100096100097100098100099100100100101100102100103100104100105100106100107100108100109100110100111100112100113100114100115100116100117100118100119100120100121100122100123100124100125100126100127100128100129100130100131100132100133100134100135100136100137100138100139100140100141100142100143100144100145100146100147100148100149100150100151100152100153100154100155100156100157100158100159100160100161100162100163100164100165100166100167100168100169100170100171100172100173100174100175100176100177100178100179100180100181100182100183100184100185100186100187100188100189100190100191100192100193100194100195100196100197100198100199100200100201100202100203100204100205100206100207100208100209100210100211100212100213100214100215100216100217100218100219100220100221100222100223100224100225100226100227100228100229100230100231100232100233100234100235100236100237100238100239100240100241100242100243100244100245100246100247100248100249100250100251100252100253100254100255100256100257100258100259100260100261100262100263100264100265100266100267100268100269100270100271100272100273100274100275100276100277100278100279100280100281100282100283100284100285100286100287100288100289100290100291100292100293100294100295100296100297100298100299100300100301100302100303100304100305100306100307100308100309100310100311100312100313100314100315100316100317100318100319100320100321100322100323100324100325100326100327100328100329100330100331100332100333100334100335100336100337100338100339100340100341100342100343100344100345100346100347100348100349100350100351100352100353100354100355100356100357100358100359100360100361100362100363100364100365100366100367100368100369100370100371100372100373100374100375100376100377100378100379100380100381100382100383100384100385100386100387100388100389100390100391100392100393100394100395100396100397100398100399100400100401100402100403100404100405100406100407100408100409100410100411100412100413100414100415100416100417100418100419100420100421100422100423100424100425100426100427100428100429100430100431100432100433100434100435100436100437100438100439100440100441100442100443100444100445100446100447100448100449100450100451100452100453100454100455100456100457100458100459100460100461100462100463100464100465100466100467100468100469100470100471100472100473100474100475100476100477100478100479100480100481100482100483100484100485100486100487100488100489100490100491100492100493100494100495100496100497100498100499100500100501100502100503100504100505100506100507100508100509100510100511100512100513100514100515100516100517100518100519100520100521100522100523100524100525100526100527100528100529100530100531100532100533100534100535100536100537100538100539100540100541100542100543100544100545100546100547100548100549100550100551100552100553100554100555100556100557100558100559100560100561100562100563100564100565100566100567100568100569100570100571100572100573100574100575100576100577100578100579100580100581100582100583100584100585100586100587100588100589100590100591100592100593100594100595100596100597100598100599100600100601100602100603100604100605100606100607100608100609100610100611100612100613100614100615100616100617100618100619100620100621100622100623100624100625100626100627100628100629100630100631100632100633100634100635100636100637100638100639100640100641100642100643100644100645100646100647100648100649100650100651100652100653100654100655100656100657100658100659100660100661100662100663100664100665100666100667100668100669100670100671100672100673100674100675100676100677100678100679100680100681100682100683100684100685100686100687100688100689100690100691100692100693100694100695100696100697100698100699100700100701100702100703100704100705100706100707100708100709100710100711100712100713100714100715100716100717100718100719100720100721100722100723100724100725100726100727100728100729100730100731100732100733100734100735100736100737100738100739100740100741100742100743100744100745100746100747100748100749100750100751100752100753100754100755100756100757100758100759100760100761100762100763100764100765100766100767100768100769100770100771100772100773100774100775100776100777100778100779100780100781100782100783100784100785100786100787100788100789100790100791100792100793100794100795100796100797100798100799100800100801100802100803100804100805100806100807100808100809100810100811100812100813100814100815100816100817100818100819100820100821100822100823100824100825100826100827100828100829100830100831100832100833100834100835100836100837100838100839100840100841100842100843100844100845100846100847100848100849100850100851100852100853100854100855100856100857100858100859100860100861100862100863100864100865100866100867100868100869100870100871100872100873100874100875100876100877100878100879100880100881100882100883100884100885100886100887100888100889100890100891100892100893100894100895100896100897100898100899100900100901100902100903100904100905100906100907100908100909100910100911100912100913100914100915100916100917100918100919100920100921100922100923100924100925100926100927100928100929100930100931100932100933100934100935100936100937100938100939100940100941100942100943100944100945100946100947100948100949100950100951100952100953100954100955100956100957100958100959100960100961100962100963100964100965100966100967100968100969100970100971100972100973100974100975100976100977100978100979100980100981100982100983100984100985100986100987100988100989100990100991100992100993100994100995100996100997100998100999101000101001101002101003101004101005101006101007101008101009101010101011101012101013101014101015101016101017101018101019101020101021101022101023101024101025101026101027101028101029101030101031101032101033101034101035101036101037101038101039101040101041101042101043101044101045101046101047101048101049101050101051101052101053101054101055101056101057101058101059101060101061101062101063101064101065101066101067101068101069101070101071101072101073101074101075101076101077101078101079101080101081101082101083101084101085101086101087101088101089101090101091101092101093101094101095101096101097101098101099101100101101101102101103101104101105101106101107101108101109101110101111101112101113101114101115101116101117101118101119101120101121101122101123101124101125101126101127101128101129101130101131101132101133101134101135101136101137101138101139101140101141101142101143101144101145101146101147101148101149101150101151101152101153101154101155101156101157101158101159101160101161101162101163101164101165101166101167101168101169101170101171101172101173101174101175101176101177101178101179101180101181101182101183101184101185101186101187101188101189101190101191101192101193101194101195101196101197101198101199101200101201101202101203101204101205101206101207101208101209101210101211101212101213101214101215101216101217101218101219101220101221101222101223101224101225101226101227101228101229101230101231101232101233101234101235101236101237101238101239101240101241101242101243101244101245101246101247101248101249101250101251101252101253101254101255101256101257101258101259101260101261101262101263101264101265101266101267101268101269101270101271101272101273101274101275101276101277101278101279101280101281101282101283101284101285101286101287101288101289101290101291101292101293101294101295101296101297101298101299101300101301101302101303101304101305101306101307101308101309101310101311101312101313101314101315101316101317101318101319101320101321101322101323101324101325101326101327101328101329101330101331101332101333101334101335101336101337101338101339101340101341101342101343101344101345101346101347101348101349101350101351101352101353101354101355101356101357101358101359101360101361101362101363101364101365101366101367101368101369101370101371101372101373101374101375101376101377101378101379101380101381101382101383101384101385101386101387101388101389101390101391101392101393101394101395101396101397101398101399101400101401101402101403101404101405101406101407101408101409101410101411101412101413101414101415101416101417101418101419101420101421101422101423101424101425101426101427101428101429101430101431101432101433101434101435101436101437101438101439101440101441101442101443101444101445101446101447101448101449101450101451101452101453101454101455101456101457101458101459101460101461101462101463101464101465101466101467101468101469101470101471101472101473101474101475101476101477101478101479101480101481101482101483101484101485101486101487101488101489101490101491101492101493101494101495101496101497101498101499101500101501101502101503101504101505101506101507101508101509101510101511101512101513101514101515101516101517101518101519101520101521101522101523101524101525101526101527101528101529101530101531101532101533101534101535101536101537101538101539101540101541101542101543101544101545101546101547101548101549101550101551101552101553101554101555101556101557101558101559101560101561101562101563101564101565101566101567101568101569101570101571101572101573101574101575101576101577101578101579101580101581101582101583101584101585101586101587101588101589101590101591101592101593101594101595101596101597101598101599101600101601101602101603101604101605101606101607101608101609101610101611101612101613101614101615101616101617101618101619101620101621101622101623101624101625101626101627101628101629101630101631101632101633101634101635101636101637101638101639101640101641101642101643101644101645101646101647101648101649101650101651101652101653101654101655101656101657101658101659101660101661101662101663101664101665101666101667101668101669101670101671101672101673101674101675101676101677101678101679101680101681101682101683101684101685101686101687101688101689101690101691101692101693101694101695101696101697101698101699101700101701101702101703101704101705101706101707101708101709101710101711101712101713101714101715101716101717101718101719101720101721101722101723101724101725101726101727101728101729101730101731101732101733101734101735101736101737101738101739101740101741101742101743101744101745101746101747101748101749101750101751101752101753101754101755101756101757101758101759101760101761101762101763101764101765101766101767101768101769101770101771101772101773101774101775101776101777101778101779101780101781101782101783101784101785101786101787101788101789101790101791101792101793101794101795101796101797101798101799101800101801101802101803101804101805101806101807101808101809101810101811101812101813101814101815101816101817101818101819101820101821101822101823101824101825101826101827101828101829101830101831101832101833101834101835101836101837101838101839101840101841101842101843101844101845101846101847101848101849101850101851101852101853101854101855101856101857101858101859101860101861101862101863101864101865101866101867101868101869101870101871101872101873101874101875101876101877101878101879101880101881101882101883101884101885101886101887101888101889101890101891101892101893101894101895101896101897101898101899101900101901101902101903101904101905101906101907101908101909101910101911101912101913101914101915101916101917101918101919101920101921101922101923101924101925101926101927101928101929101930101931101932101933101934101935101936101937101938101939101940101941101942101943101944101945101946101947101948101949101950101951101952101953101954101955101956101957101958101959101960101961101962101963101964101965101966101967101968101969101970101971101972101973101974101975101976101977101978101979101980101981101982101983101984101985101986101987101988101989101990101991101992101993101994101995101996101997101998101999102000102001102002102003102004102005102006102007102008102009102010102011102012102013102014102015102016102017102018102019102020102021102022102023102024102025102026102027102028102029102030102031102032102033102034102035102036102037102038102039102040102041102042102043102044102045102046102047102048102049102050102051102052102053102054102055102056102057102058102059102060102061102062102063102064102065102066102067102068102069102070102071102072102073102074102075102076102077102078102079102080102081102082102083102084102085102086102087102088102089102090102091102092102093102094102095102096102097102098102099102100102101102102102103102104102105102106102107102108102109102110102111102112102113102114102115102116102117102118102119102120102121102122102123102124102125102126102127102128102129102130102131102132102133102134102135102136102137102138102139102140102141102142102143102144102145102146102147102148102149102150102151102152102153102154102155102156102157102158102159102160102161102162102163102164102165102166102167102168102169102170102171102172102173102174102175102176102177102178102179102180102181102182102183102184102185102186102187102188102189102190102191102192102193102194102195102196102197102198102199102200102201102202102203102204102205102206102207102208102209102210102211102212102213102214102215102216102217102218102219102220102221102222102223102224102225102226102227102228102229102230102231102232102233102234102235102236102237102238102239102240102241102242102243102244102245102246102247102248102249102250102251102252102253102254102255102256102257102258102259102260102261102262102263102264102265102266102267102268102269102270102271102272102273102274102275102276102277102278102279102280102281102282102283102284102285102286102287102288102289102290102291102292102293102294102295102296102297102298102299102300102301102302102303102304102305102306102307102308102309102310102311102312102313102314102315102316102317102318102319102320102321102322102323102324102325102326102327102328102329102330102331102332102333102334102335102336102337102338102339102340102341102342102343102344102345102346102347102348102349102350102351102352102353102354102355102356102357102358102359102360102361102362102363102364102365102366102367102368102369102370102371102372102373102374102375102376102377102378102379102380102381102382102383102384102385102386102387102388102389102390102391102392102393102394102395102396102397102398102399102400102401102402102403102404102405102406102407102408102409102410102411102412102413102414102415102416102417102418102419102420102421102422102423102424102425102426102427102428102429102430102431102432102433102434102435102436102437102438102439102440102441102442102443102444102445102446102447102448102449102450102451102452102453102454102455102456102457102458102459102460102461102462102463102464102465102466102467102468102469102470102471102472102473102474102475102476102477102478102479102480102481102482102483102484102485102486102487102488102489102490102491102492102493102494102495102496102497102498102499102500102501102502102503102504102505102506102507102508102509102510102511102512102513102514102515102516102517102518102519102520102521102522102523102524102525102526102527102528102529102530102531102532102533102534102535102536102537102538102539102540102541102542102543102544102545102546102547102548102549102550102551102552102553102554102555102556102557102558102559102560102561102562102563102564102565102566102567102568102569102570102571102572102573102574102575102576102577102578102579102580102581102582102583102584102585102586102587102588102589102590102591102592102593102594102595102596102597102598102599102600102601102602102603102604102605102606102607102608102609102610102611102612102613102614102615102616102617102618102619102620102621102622102623102624102625102626102627102628102629102630102631102632102633102634102635102636102637102638102639102640102641102642102643102644102645102646102647102648102649102650102651102652102653102654102655102656102657102658102659102660102661102662102663102664102665102666102667102668102669102670102671102672102673102674102675102676102677102678102679102680102681102682102683102684102685102686102687102688102689102690102691102692102693102694102695102696102697102698102699102700102701102702102703102704102705102706102707102708102709102710102711102712102713102714102715102716102717102718102719102720102721102722102723102724102725102726102727102728102729102730102731102732102733102734102735102736102737102738102739102740102741102742102743102744102745102746102747102748102749102750102751102752102753102754102755102756102757102758102759102760102761102762102763102764102765102766102767102768102769102770102771102772102773102774102775102776102777102778102779102780102781102782102783102784102785102786102787102788102789102790102791102792102793102794102795102796102797102798102799102800102801102802102803102804102805102806102807102808102809102810102811102812102813102814102815102816102817102818102819102820102821102822102823102824102825102826102827102828102829102830102831102832102833102834102835102836102837102838102839102840102841102842102843102844102845102846102847102848102849102850102851102852102853102854102855102856102857102858102859102860102861102862102863102864102865102866102867102868102869102870102871102872102873102874102875102876102877102878102879102880102881102882102883102884102885102886102887102888102889102890102891102892102893102894102895102896102897102898102899102900102901102902102903102904102905102906102907102908102909102910102911102912102913102914102915102916102917102918102919102920102921102922102923102924102925102926102927102928102929102930102931102932102933102934102935102936102937102938102939102940102941102942102943102944102945102946102947102948102949102950102951102952102953102954102955102956102957102958102959102960102961102962102963102964102965102966102967102968102969102970102971102972102973102974102975102976102977102978102979102980102981102982102983102984102985102986102987102988102989102990102991102992102993102994102995102996102997102998102999103000103001103002103003103004103005103006103007103008103009103010103011103012103013103014103015103016103017103018103019103020103021103022103023103024103025103026103027103028103029103030103031103032103033103034103035103036103037103038103039103040103041103042103043103044103045103046103047103048103049103050103051103052103053103054103055103056103057103058103059103060103061103062103063103064103065103066103067103068103069103070103071103072103073103074103075103076103077103078103079103080103081103082103083103084103085103086103087103088103089103090103091103092103093103094103095103096103097103098103099103100103101103102103103103104103105103106103107103108103109103110103111103112103113103114103115103116103117103118103119103120103121103122103123103124103125103126103127103128103129103130103131103132103133103134103135103136103137103138103139103140103141103142103143103144103145103146103147103148103149103150103151103152103153103154103155103156103157103158103159103160103161103162103163103164103165103166103167103168103169103170103171103172103173103174103175103176103177103178103179103180103181103182103183103184103185103186103187103188103189103190103191103192103193103194103195103196103197103198103199103200103201103202103203103204103205103206103207103208103209103210103211103212103213103214103215103216103217103218103219103220103221103222103223103224103225103226103227103228103229103230103231103232103233103234103235103236103237103238103239103240103241103242103243103244103245103246103247103248103249103250103251103252103253103254103255103256103257103258103259103260103261103262103263103264103265103266103267103268103269103270103271103272103273103274103275103276103277103278103279103280103281103282103283103284103285103286103287103288103289103290103291103292103293103294103295103296103297103298103299103300103301103302103303103304103305103306103307103308103309103310103311103312103313103314103315103316103317103318103319103320103321103322103323103324103325103326103327103328103329103330103331103332103333103334103335103336103337103338103339103340103341103342103343103344103345103346103347103348103349103350103351103352103353103354103355103356103357103358103359103360103361103362103363103364103365103366103367103368103369103370103371103372103373103374103375103376103377103378103379103380103381103382103383103384103385103386103387103388103389103390103391103392103393103394103395103396103397103398103399103400103401103402103403103404103405103406103407103408103409103410103411103412103413103414103415103416103417103418103419103420103421103422103423103424103425103426103427103428103429103430103431103432103433103434103435103436103437103438103439103440103441103442103443103444103445103446103447103448103449103450103451103452103453103454103455103456103457103458103459103460103461103462103463103464103465103466103467103468103469103470103471103472103473103474103475103476103477103478103479103480103481103482103483103484103485103486103487103488103489103490103491103492103493103494103495103496103497103498103499103500103501103502103503103504103505103506103507103508103509103510103511103512103513103514103515103516103517103518103519103520103521103522103523103524103525103526103527103528103529103530103531103532103533103534103535103536103537103538103539103540103541103542103543103544103545103546103547103548103549103550103551103552103553103554103555103556103557103558103559103560103561103562103563103564103565103566103567103568103569103570103571103572103573103574103575103576103577103578103579103580103581103582103583103584103585103586103587103588103589103590103591103592103593103594103595103596103597103598103599103600103601103602103603103604103605103606103607103608103609103610103611103612103613103614103615103616103617103618103619103620103621103622103623103624103625103626103627103628103629103630103631103632103633103634103635103636103637103638103639103640103641103642103643103644103645103646103647103648103649103650103651103652103653103654103655103656103657103658103659103660103661103662103663103664103665103666103667103668103669103670103671103672103673103674103675103676103677103678103679103680103681103682103683103684103685103686103687103688103689103690103691103692103693103694103695103696103697103698103699103700103701103702103703103704103705103706103707103708103709103710103711103712103713103714103715103716103717103718103719103720103721103722103723103724103725103726103727103728103729103730103731103732103733103734103735103736103737103738103739103740103741103742103743103744103745103746103747103748103749103750103751103752103753103754103755103756103757103758103759103760103761103762103763103764103765103766103767103768103769103770103771103772103773103774103775103776103777103778103779103780103781103782103783103784103785103786103787103788103789103790103791103792103793103794103795103796103797103798103799103800103801103802103803103804103805103806103807103808103809103810103811103812103813103814103815103816103817103818103819103820103821103822103823103824103825103826103827103828103829103830103831103832103833103834103835103836103837103838103839103840103841103842103843103844103845103846103847103848103849103850103851103852103853103854103855103856103857103858103859103860103861103862103863103864103865103866103867103868103869103870103871103872103873103874103875103876103877103878103879103880103881103882103883103884103885103886103887103888103889103890103891103892103893103894103895103896103897103898103899103900103901103902103903103904103905103906103907103908103909103910103911103912103913103914103915103916103917103918103919103920103921103922103923103924103925103926103927103928103929103930103931103932103933103934103935103936103937103938103939103940103941103942103943103944103945103946103947103948103949103950103951103952103953103954103955103956103957103958103959103960103961103962103963103964103965103966103967103968103969103970103971103972103973103974103975103976103977103978103979103980103981103982103983103984103985103986103987103988103989103990103991103992103993103994103995103996103997103998103999104000104001104002104003104004104005104006104007104008104009104010104011104012104013104014104015104016104017104018104019104020104021104022104023104024104025104026104027104028104029104030104031104032104033104034104035104036104037104038104039104040104041104042104043104044104045104046104047104048104049104050104051104052104053104054104055104056104057104058104059104060104061104062104063104064104065104066104067104068104069104070104071104072104073104074104075104076104077104078104079104080104081104082104083104084104085104086104087104088104089104090104091104092104093104094104095104096104097104098104099104100104101104102104103104104104105104106104107104108104109104110104111104112104113104114104115104116104117104118104119104120104121104122104123104124104125104126104127104128104129104130104131104132104133104134104135104136104137104138104139104140104141104142104143104144104145104146104147104148104149104150104151104152104153104154104155104156104157104158104159104160104161104162104163104164104165104166104167104168104169104170104171104172104173104174104175104176104177104178104179104180104181104182104183104184104185104186104187104188104189104190104191104192104193104194104195104196104197104198104199104200104201104202104203104204104205104206104207104208104209104210104211104212104213104214104215104216104217104218104219104220104221104222104223104224104225104226104227104228104229104230104231104232104233104234104235104236104237104238104239104240104241104242104243104244104245104246104247104248104249104250104251104252104253104254104255104256104257104258104259104260104261104262104263104264104265104266104267104268104269104270104271104272104273104274104275104276104277104278104279104280104281104282104283104284104285104286104287104288104289104290104291104292104293104294104295104296104297104298104299104300104301104302104303104304104305104306104307104308104309104310104311104312104313104314104315104316104317104318104319104320104321104322104323104324104325104326104327104328104329104330104331104332104333104334104335104336104337104338104339104340104341104342104343104344104345104346104347104348104349104350104351104352104353104354104355104356104357104358104359104360104361104362104363104364104365104366104367104368104369104370104371104372104373104374104375104376104377104378104379104380104381104382104383104384104385104386104387104388104389104390104391104392104393104394104395104396104397104398104399104400104401104402104403104404104405104406104407104408104409104410104411104412104413104414104415104416104417104418104419104420104421104422104423104424104425104426104427104428104429104430104431104432104433104434104435104436104437104438104439104440104441104442104443104444104445104446104447104448104449104450104451104452104453104454104455104456104457104458104459104460104461104462104463104464104465104466104467104468104469104470104471104472104473104474104475104476104477104478104479104480104481104482104483104484104485104486104487104488104489104490104491104492104493104494104495104496104497104498104499104500104501104502104503104504104505104506104507104508104509104510104511104512104513104514104515104516104517104518104519104520104521104522104523104524104525104526104527104528104529104530104531104532104533104534104535104536104537104538104539104540104541104542104543104544104545104546104547104548104549104550104551104552104553104554104555104556104557104558104559104560104561104562104563104564104565104566104567104568104569104570104571104572104573104574104575104576104577104578104579104580104581104582104583104584104585104586104587104588104589104590104591104592104593104594104595104596104597104598104599104600104601104602104603104604104605104606104607104608104609104610104611104612104613104614104615104616104617104618104619104620104621104622104623104624104625104626104627104628104629104630104631104632104633104634104635104636104637104638104639104640104641104642104643104644104645104646104647104648104649104650104651104652104653104654104655104656104657104658104659104660104661104662104663104664104665104666104667104668104669104670104671104672104673104674104675104676104677104678104679104680104681104682104683104684104685104686104687104688104689104690104691104692104693104694104695104696104697104698104699104700104701104702104703104704104705104706104707104708104709104710104711104712104713104714104715104716104717104718104719104720104721104722104723104724104725104726104727104728104729104730104731104732104733104734104735104736104737104738104739104740104741104742104743104744104745104746104747104748104749104750104751104752104753104754104755104756104757104758104759104760104761104762104763104764104765104766104767104768104769104770104771104772104773104774104775104776104777104778104779104780104781104782104783104784104785104786104787104788104789104790104791104792104793104794104795104796104797104798104799104800104801104802104803104804104805104806104807104808104809104810104811104812104813104814104815104816104817104818104819104820104821104822104823104824104825104826104827104828104829104830104831104832104833104834104835104836104837104838104839104840104841104842104843104844104845104846104847104848104849104850104851104852104853104854104855104856104857104858104859104860104861104862104863104864104865104866104867104868104869104870104871104872104873104874104875104876104877104878104879104880104881104882104883104884104885104886104887104888104889104890104891104892104893104894104895104896104897104898104899104900104901104902104903104904104905104906104907104908104909104910104911104912104913104914104915104916104917104918104919104920104921104922104923104924104925104926104927104928104929104930104931104932104933104934104935104936104937104938104939104940104941104942104943104944104945104946104947104948104949104950104951104952104953104954104955104956104957104958104959104960104961104962104963104964104965104966104967104968104969104970104971104972104973104974104975104976104977104978104979104980104981104982104983104984104985104986104987104988104989104990104991104992104993104994104995104996104997104998104999105000105001105002105003105004105005105006105007105008105009105010105011105012105013105014105015105016105017105018105019105020105021105022105023105024105025105026105027105028105029105030105031105032105033105034105035105036105037105038105039105040105041105042105043105044105045105046105047105048105049105050105051105052105053105054105055105056105057105058105059105060105061105062105063105064105065105066105067105068105069105070105071105072105073105074105075105076105077105078105079105080105081105082105083105084105085105086105087105088105089105090105091105092105093105094105095105096105097105098105099105100105101105102105103105104105105105106105107105108105109105110105111105112105113105114105115105116105117105118105119105120105121105122105123105124105125105126105127105128105129105130105131105132105133105134105135105136105137105138105139105140105141105142105143105144105145105146105147105148105149105150105151105152105153105154105155105156105157105158105159105160105161105162105163105164105165105166105167105168105169105170105171105172105173105174105175105176105177105178105179105180105181105182105183105184105185105186105187105188105189105190105191105192105193105194105195105196105197105198105199105200105201105202105203105204105205105206105207105208105209105210105211105212105213105214105215105216105217105218105219105220105221105222105223105224105225105226105227105228105229105230105231105232105233105234105235105236105237105238105239105240105241105242105243105244105245105246105247105248105249105250105251105252105253105254105255105256105257105258105259105260105261105262105263105264105265105266105267105268105269105270105271105272105273105274105275105276105277105278105279105280105281105282105283105284105285105286105287105288105289105290105291105292105293105294105295105296105297105298105299105300105301105302105303105304105305105306105307105308105309105310105311105312105313105314105315105316105317105318105319105320105321105322105323105324105325105326105327105328105329105330105331105332105333105334105335105336105337105338105339105340105341105342105343105344105345105346105347105348105349105350105351105352105353105354105355105356105357105358105359105360105361105362105363105364105365105366105367105368105369105370105371105372105373105374105375105376105377105378105379105380105381105382105383105384105385105386105387105388105389105390105391105392105393105394105395105396105397105398105399105400105401105402105403105404105405105406105407105408105409105410105411105412105413105414105415105416105417105418105419105420105421105422105423105424105425105426105427105428105429105430105431105432105433105434105435105436105437105438105439105440105441105442105443105444105445105446105447105448105449105450105451105452105453105454105455105456105457105458105459105460105461105462105463105464105465105466105467105468105469105470105471105472105473105474105475105476105477105478105479105480105481105482105483105484105485105486105487105488105489105490105491105492105493105494105495105496105497105498105499105500105501105502105503105504105505105506105507105508105509105510105511105512105513105514105515105516105517105518105519105520105521105522105523105524105525105526105527105528105529105530105531105532105533105534105535105536105537105538105539105540105541105542105543105544105545105546105547105548105549105550105551105552105553105554105555105556105557105558105559105560105561105562105563105564105565105566105567105568105569105570105571105572105573105574105575105576105577105578105579105580105581105582105583105584105585105586105587105588105589105590105591105592105593105594105595105596105597105598105599105600105601105602105603105604105605105606105607105608105609105610105611105612105613105614105615105616105617105618105619105620105621105622105623105624105625105626105627105628105629105630105631105632105633105634105635105636105637105638105639105640105641105642105643105644105645105646105647105648105649105650105651105652105653105654105655105656105657105658105659105660105661105662105663105664105665105666105667105668105669105670105671105672105673105674105675105676105677105678105679105680105681105682105683105684105685105686105687105688105689105690105691105692105693105694105695105696105697105698105699105700105701105702105703105704105705105706105707105708105709105710105711105712105713105714105715105716105717105718105719105720105721105722105723105724105725105726105727105728105729105730105731105732105733105734105735105736105737105738105739105740105741105742105743105744105745105746105747105748105749105750105751105752105753105754105755105756105757105758105759105760105761105762105763105764105765105766105767105768105769105770105771105772105773105774105775105776105777105778105779105780105781105782105783105784105785105786105787105788105789105790105791105792105793105794105795105796105797105798105799105800105801105802105803105804105805105806105807105808105809105810105811105812105813105814105815105816105817105818105819105820105821105822105823105824105825105826105827105828105829105830105831105832105833105834105835105836105837105838105839105840105841105842105843105844105845105846105847105848105849105850105851105852105853105854105855105856105857105858105859105860105861105862105863105864105865105866105867105868105869105870105871105872105873105874105875105876105877105878105879105880105881105882105883105884105885105886105887105888105889105890105891105892105893105894105895105896105897105898105899105900105901105902105903105904105905105906105907105908105909105910105911105912105913105914105915105916105917105918105919105920105921105922105923105924105925105926105927105928105929105930105931105932105933105934105935105936105937105938105939105940105941105942105943105944105945105946105947105948105949105950105951105952105953105954105955105956105957105958105959105960105961105962105963105964105965105966105967105968105969105970105971105972105973105974105975105976105977105978105979105980105981105982105983105984105985105986105987105988105989105990105991105992105993105994105995105996105997105998105999106000106001106002106003106004106005106006106007106008106009106010106011106012106013106014106015106016106017106018106019106020106021106022106023106024106025106026106027106028106029106030106031106032106033106034106035106036106037106038106039106040106041106042106043106044106045106046106047106048106049106050106051106052106053106054106055106056106057106058106059106060106061106062106063106064106065106066106067106068106069106070106071106072106073106074106075106076106077106078106079106080106081106082106083106084106085106086106087106088106089106090106091106092106093106094106095106096106097106098106099106100106101106102106103106104106105106106106107106108106109106110106111106112106113106114106115106116106117106118106119106120106121106122106123106124106125106126106127106128106129106130106131106132106133106134106135106136106137106138106139106140106141106142106143106144106145106146106147106148106149106150106151106152106153106154106155106156106157106158106159106160106161106162106163106164106165106166106167106168106169106170106171106172106173106174106175106176106177106178106179106180106181106182106183106184106185106186106187106188106189106190106191106192106193106194106195106196106197106198106199106200106201106202106203106204106205106206106207106208106209106210106211106212106213106214106215106216106217106218106219106220106221106222106223106224106225106226106227106228106229106230106231106232106233106234106235106236106237106238106239106240106241106242106243106244106245106246106247106248106249106250106251106252106253106254106255106256106257106258106259106260106261106262106263106264106265106266106267106268106269106270106271106272106273106274106275106276106277106278106279106280106281106282106283106284106285106286106287106288106289106290106291106292106293106294106295106296106297106298106299106300106301106302106303106304106305106306106307106308106309106310106311106312106313106314106315106316106317106318106319106320106321106322106323106324106325106326106327106328106329106330106331106332106333106334106335106336106337106338106339106340106341106342106343106344106345106346106347106348106349106350106351106352106353106354106355106356106357106358106359106360106361106362106363106364106365106366106367106368106369106370106371106372106373106374106375106376106377106378106379106380106381106382106383106384106385106386106387106388106389106390106391106392106393106394106395106396106397106398106399106400106401106402106403106404106405106406106407106408106409106410106411106412106413106414106415106416106417106418106419106420106421106422106423106424106425106426106427106428106429106430106431106432106433106434106435106436106437106438106439106440106441106442106443106444106445106446106447106448106449106450106451106452106453106454106455106456106457106458106459106460106461106462106463106464106465106466106467106468106469106470106471106472106473106474106475106476106477106478106479106480106481106482106483106484106485106486106487106488106489106490106491106492106493106494106495106496106497106498106499106500106501106502106503106504106505106506106507106508106509106510106511106512106513106514106515106516106517106518106519106520106521106522106523106524106525106526106527106528106529106530106531106532106533106534106535106536106537106538106539106540106541106542106543106544106545106546106547106548106549106550106551106552106553106554106555106556106557106558106559106560106561106562106563106564106565106566106567106568106569106570106571106572106573106574106575106576106577106578106579106580106581106582106583106584106585106586106587106588106589106590106591106592106593106594106595106596106597106598106599106600106601106602106603106604106605106606106607106608106609106610106611106612106613106614106615106616106617106618106619106620106621106622106623106624106625106626106627106628106629106630106631106632106633106634106635106636106637106638106639106640106641106642106643106644106645106646106647106648106649106650106651106652106653106654106655106656106657106658106659106660106661106662106663106664106665106666106667106668106669106670106671106672106673106674106675106676106677106678106679106680106681106682106683106684106685106686106687106688106689106690106691106692106693106694106695106696106697106698106699106700106701106702106703106704106705106706106707106708106709106710106711106712106713106714106715106716106717106718106719106720106721106722106723106724106725106726106727106728106729106730106731106732106733106734106735106736106737106738106739106740106741106742106743106744106745106746106747106748106749106750106751106752106753106754106755106756106757106758106759106760106761106762106763106764106765106766106767106768106769106770106771106772106773106774106775106776106777106778106779106780106781106782106783106784106785106786106787106788106789106790106791106792106793106794106795106796106797106798106799106800106801106802106803106804106805106806106807106808106809106810106811106812106813106814106815106816106817106818106819106820106821106822106823106824106825106826106827106828106829106830106831106832106833106834106835106836106837106838106839106840106841106842106843106844106845106846106847106848106849106850106851106852106853106854106855106856106857106858106859106860106861106862106863106864106865106866106867106868106869106870106871106872106873106874106875106876106877106878106879106880106881106882106883106884106885106886106887106888106889106890106891106892106893106894106895106896106897106898106899106900106901106902106903106904106905106906106907106908106909106910106911106912106913106914106915106916106917106918106919106920106921106922106923106924106925106926106927106928106929106930106931106932106933106934106935106936106937106938106939106940106941106942106943106944106945106946106947106948106949106950106951106952106953106954106955106956106957106958106959106960106961106962106963106964106965106966106967106968106969106970106971106972106973106974106975106976106977106978106979106980106981106982106983106984106985106986106987106988106989106990106991106992106993106994106995106996106997106998106999107000107001107002107003107004107005107006107007107008107009107010107011107012107013107014107015107016107017107018107019107020107021107022107023107024107025107026107027107028107029107030107031107032107033107034107035107036107037107038107039107040107041107042107043107044107045107046107047107048107049107050107051107052107053107054107055107056107057107058107059107060107061107062107063107064107065107066107067107068107069107070107071107072107073107074107075107076107077107078107079107080107081107082107083107084107085107086107087107088107089107090107091107092107093107094107095107096107097107098107099107100107101107102107103107104107105107106107107107108107109107110107111107112107113107114107115107116107117107118107119107120107121107122107123107124107125107126107127107128107129107130107131107132107133107134107135107136107137107138107139107140107141107142107143107144107145107146107147107148107149107150107151107152107153107154107155107156107157107158107159107160107161107162107163107164107165107166107167107168107169107170107171107172107173107174107175107176107177107178107179107180107181107182107183107184107185107186107187107188107189107190107191107192107193107194107195107196107197107198107199107200107201107202107203107204107205107206107207107208107209107210107211107212107213107214107215107216107217107218107219107220107221107222107223107224107225107226107227107228107229107230107231107232107233107234107235107236107237107238107239107240107241107242107243107244107245107246107247107248107249107250107251107252107253107254107255107256107257107258107259107260107261107262107263107264107265107266107267107268107269107270107271107272107273107274107275107276107277107278107279107280107281107282107283107284107285107286107287107288107289107290107291107292107293107294107295107296107297107298107299107300107301107302107303107304107305107306107307107308107309107310107311107312107313107314107315107316107317107318107319107320107321107322107323107324107325107326107327107328107329107330107331107332107333107334107335107336107337107338107339107340107341107342107343107344107345107346107347107348107349107350107351107352107353107354107355107356107357107358107359107360107361107362107363107364107365107366107367107368107369107370107371107372107373107374107375107376107377107378107379107380107381107382107383107384107385107386107387107388107389107390107391107392107393107394107395107396107397107398107399107400107401107402107403107404107405107406107407107408107409107410107411107412107413107414107415107416107417107418107419107420107421107422107423107424107425107426107427107428107429107430107431107432107433107434107435107436107437107438107439107440107441107442107443107444107445107446107447107448107449107450107451107452107453107454107455107456107457107458107459107460107461107462107463107464107465107466107467107468107469107470107471107472107473107474107475107476107477107478107479107480107481107482107483107484107485107486107487107488107489107490107491107492107493107494107495107496107497107498107499107500107501107502107503107504107505107506107507107508107509107510107511107512107513107514107515107516107517107518107519107520107521107522107523107524107525107526107527107528107529107530107531107532107533107534107535107536107537107538107539107540107541107542107543107544107545107546107547107548107549107550107551107552107553107554107555107556107557107558107559107560107561107562107563107564107565107566107567107568107569107570107571107572107573107574107575107576107577107578107579107580107581107582107583107584107585107586107587107588107589107590107591107592107593107594107595107596107597107598107599107600107601107602107603107604107605107606107607107608107609107610107611107612107613107614107615107616107617107618107619107620107621107622107623107624107625107626107627107628107629107630107631107632107633107634107635107636107637107638107639107640107641107642107643107644107645107646107647107648107649107650107651107652107653107654107655107656107657107658107659107660107661107662107663107664107665107666107667107668107669107670107671107672107673107674107675107676107677107678107679107680107681107682107683107684107685107686107687107688107689107690107691107692107693107694107695107696107697107698107699107700107701107702107703107704107705107706107707107708107709107710107711107712107713107714107715107716107717107718107719107720107721107722107723107724107725107726107727107728107729107730107731107732107733107734107735107736107737107738107739107740107741107742107743107744107745107746107747107748107749107750107751107752107753107754107755107756107757107758107759107760107761107762107763107764107765107766107767107768107769107770107771107772107773107774107775107776107777107778107779107780107781107782107783107784107785107786107787107788107789107790107791107792107793107794107795107796107797107798107799107800107801107802107803107804107805107806107807107808107809107810107811107812107813107814107815107816107817107818107819107820107821107822107823107824107825107826107827107828107829107830107831107832107833107834107835107836107837107838107839107840107841107842107843107844107845107846107847107848107849107850107851107852107853107854107855107856107857107858107859107860107861107862107863107864107865107866107867107868107869107870107871107872107873107874107875107876107877107878107879107880107881107882107883107884107885107886107887107888107889107890107891107892107893107894107895107896107897107898107899107900107901107902107903107904107905107906107907107908107909107910107911107912107913107914107915107916107917107918107919107920107921107922107923107924107925107926107927107928107929107930107931107932107933107934107935107936107937107938107939107940107941107942107943107944107945107946107947107948107949107950107951107952107953107954107955107956107957107958107959107960107961107962107963107964107965107966107967107968107969107970107971107972107973107974107975107976107977107978107979107980107981107982107983107984107985107986107987107988107989107990107991107992107993107994107995107996107997107998107999108000108001108002108003108004108005108006108007108008108009108010108011108012108013108014108015108016108017108018108019108020108021108022108023108024108025108026108027108028108029108030108031108032108033108034108035108036108037108038108039108040108041108042108043108044108045108046108047108048108049108050108051108052108053108054108055108056108057108058108059108060108061108062108063108064108065108066108067108068108069108070108071108072108073108074108075108076108077108078108079108080108081108082108083108084108085108086108087108088108089108090108091108092108093108094108095108096108097108098108099108100108101108102108103108104108105108106108107108108108109108110108111108112108113108114108115108116108117108118108119108120108121108122108123108124108125108126108127108128108129108130108131108132108133108134108135108136108137108138108139108140108141108142108143108144108145108146108147108148108149108150108151108152108153108154108155108156108157108158108159108160108161108162108163108164108165108166108167108168108169108170108171108172108173108174108175108176108177108178108179108180108181108182108183108184108185108186108187108188108189108190108191108192108193108194108195108196108197108198108199108200108201108202108203108204108205108206108207108208108209108210108211108212108213108214108215108216108217108218108219108220108221108222108223108224108225108226108227108228108229108230108231108232108233108234108235108236108237108238108239108240108241108242108243108244108245108246108247108248108249108250108251108252108253108254108255108256108257108258108259108260108261108262108263108264108265108266108267108268108269108270108271108272108273108274108275108276108277108278108279108280108281108282108283108284108285108286108287108288108289108290108291108292108293108294108295108296108297108298108299108300108301108302108303108304108305108306108307108308108309108310108311108312108313108314108315108316108317108318108319108320108321108322108323108324108325108326108327108328108329108330108331108332108333108334108335108336108337108338108339108340108341108342108343108344108345108346108347108348108349108350108351108352108353108354108355108356108357108358108359108360108361108362108363108364108365108366108367108368108369108370108371108372108373108374108375108376108377108378108379108380108381108382108383108384108385108386108387108388108389108390108391108392108393108394108395108396108397108398108399108400108401108402108403108404108405108406108407108408108409108410108411108412108413108414108415108416108417108418108419108420108421108422108423108424108425108426108427108428108429108430108431108432108433108434108435108436108437108438108439108440108441108442108443108444108445108446108447108448108449108450108451108452108453108454108455108456108457108458108459108460108461108462108463108464108465108466108467108468108469108470108471108472108473108474108475108476108477108478108479108480108481108482108483108484108485108486108487108488108489108490108491108492108493108494108495108496108497108498108499108500108501108502108503108504108505108506108507108508108509108510108511108512108513108514108515108516108517108518108519108520108521108522108523108524108525108526108527108528108529108530108531108532108533108534108535108536108537108538108539108540108541108542108543108544108545108546108547108548108549108550108551108552108553108554108555108556108557108558108559108560108561108562108563108564108565108566108567108568108569108570108571108572108573108574108575108576108577108578108579108580108581108582108583108584108585108586108587108588108589108590108591108592108593108594108595108596108597108598108599108600108601108602108603108604108605108606108607108608108609108610108611108612108613108614108615108616108617108618108619108620108621108622108623108624108625108626108627108628108629108630108631108632108633108634108635108636108637108638108639108640108641108642108643108644108645108646108647108648108649108650108651108652108653108654108655108656108657108658108659108660108661108662108663108664108665108666108667108668108669108670108671108672108673108674108675108676108677108678108679108680108681108682108683108684108685108686108687108688108689108690108691108692108693108694108695108696108697108698108699108700108701108702108703108704108705108706108707108708108709108710108711108712108713108714108715108716108717108718108719108720108721108722108723108724108725108726108727108728108729108730108731108732108733108734108735108736108737108738108739108740108741108742108743108744108745108746108747108748108749108750108751108752108753108754108755108756108757108758108759108760108761108762108763108764108765108766108767108768108769108770108771108772108773108774108775108776108777108778108779108780108781108782108783108784108785108786108787108788108789108790108791108792108793108794108795108796108797108798108799108800108801108802108803108804108805108806108807108808108809108810108811108812108813108814108815108816108817108818108819108820108821108822108823108824108825108826108827108828108829108830108831108832108833108834108835108836108837108838108839108840108841108842108843108844108845108846108847108848108849108850108851108852108853108854108855108856108857108858108859108860108861108862108863108864108865108866108867108868108869108870108871108872108873108874108875108876108877108878108879108880108881108882108883108884108885108886108887108888108889108890108891108892108893108894108895108896108897108898108899108900108901108902108903108904108905108906108907108908108909108910108911108912108913108914108915108916108917108918108919108920108921108922108923108924108925108926108927108928108929108930108931108932108933108934108935108936108937108938108939108940108941108942108943108944108945108946108947108948108949108950108951108952108953108954108955108956108957108958108959108960108961108962108963108964108965108966108967108968108969108970108971108972108973108974108975108976108977108978108979108980108981108982108983108984108985108986108987108988108989108990108991108992108993108994108995108996108997108998108999109000109001109002109003109004109005109006109007109008109009109010109011109012109013109014109015109016109017109018109019109020109021109022109023109024109025109026109027109028109029109030109031109032109033109034109035109036109037109038109039109040109041109042109043109044109045109046109047109048109049109050109051109052109053109054109055109056109057109058109059109060109061109062109063109064109065109066109067109068109069109070109071109072109073109074109075109076109077109078109079109080109081109082109083109084109085109086109087109088109089109090109091109092109093109094109095109096109097109098109099109100109101109102109103109104109105109106109107109108109109109110109111109112109113109114109115109116109117109118109119109120109121109122109123109124109125109126109127109128109129109130109131109132109133109134109135109136109137109138109139109140109141109142109143109144109145109146109147109148109149109150109151109152109153109154109155109156109157109158109159109160109161109162109163109164109165109166109167109168109169109170109171109172109173109174109175109176109177109178109179109180109181109182109183109184109185109186109187109188109189109190109191109192109193109194109195109196109197109198109199109200109201109202109203109204109205109206109207109208109209109210109211109212109213109214109215109216109217109218109219109220109221109222109223109224109225109226109227109228109229109230109231109232109233109234109235109236109237109238109239109240109241109242109243109244109245109246109247109248109249109250109251109252109253109254109255109256109257109258109259109260109261109262109263109264109265109266109267109268109269109270109271109272109273109274109275109276109277109278109279109280109281109282109283109284109285109286109287109288109289109290109291109292109293109294109295109296109297109298109299109300109301109302109303109304109305109306109307109308109309109310109311109312109313109314109315109316109317109318109319109320109321109322109323109324109325109326109327109328109329109330109331109332109333109334109335109336109337109338109339109340109341109342109343109344109345109346109347109348109349109350109351109352109353109354109355109356109357109358109359109360109361109362109363109364109365109366109367109368109369109370109371109372109373109374109375109376109377109378109379109380109381109382109383109384109385109386109387109388109389109390109391109392109393109394109395109396109397109398109399109400109401109402109403109404109405109406109407109408109409109410109411109412109413109414109415109416109417109418109419109420109421109422109423109424109425109426109427109428109429109430109431109432109433109434109435109436109437109438109439109440109441109442109443109444109445109446109447109448109449109450109451109452109453109454109455109456109457109458109459109460109461109462109463109464109465109466109467109468109469109470109471109472109473109474109475109476109477109478109479109480109481109482109483109484109485109486109487109488109489109490109491109492109493109494109495109496109497109498109499109500109501109502109503109504109505109506109507109508109509109510109511109512109513109514109515109516109517109518109519109520109521109522109523109524109525109526109527109528109529109530109531109532109533109534109535109536109537109538109539109540109541109542109543109544109545109546109547109548109549109550109551109552109553109554109555109556109557109558109559109560109561109562109563109564109565109566109567109568109569109570109571109572109573109574109575109576109577109578109579109580109581109582109583109584109585109586109587109588109589109590109591109592109593109594109595109596109597109598109599109600109601109602109603109604109605109606109607109608109609109610109611109612109613109614109615109616109617109618109619109620109621109622109623109624109625109626109627109628109629109630109631109632109633109634109635109636109637109638109639109640109641109642109643109644109645109646109647109648109649109650109651109652109653109654109655109656109657109658109659109660109661109662109663109664109665109666109667109668109669109670109671109672109673109674109675109676109677109678109679109680109681109682109683109684109685109686109687109688109689109690109691109692109693109694109695109696109697109698109699109700109701109702109703109704109705109706109707109708109709109710109711109712109713109714109715109716109717109718109719109720109721109722109723109724109725109726109727109728109729109730109731109732109733109734109735109736109737109738109739109740109741109742109743109744109745109746109747109748109749109750109751109752109753109754109755109756109757109758109759109760109761109762109763109764109765109766109767109768109769109770109771109772109773109774109775109776109777109778109779109780109781109782109783109784109785109786109787109788109789109790109791109792109793109794109795109796109797109798109799109800109801109802109803109804109805109806109807109808109809109810109811109812109813109814109815109816109817109818109819109820109821109822109823109824109825109826109827109828109829109830109831109832109833109834109835109836109837109838109839109840109841109842109843109844109845109846109847109848109849109850109851109852109853109854109855109856109857109858109859109860109861109862109863109864109865109866109867109868109869109870109871109872109873109874109875109876109877109878109879109880109881109882109883109884109885109886109887109888109889109890109891109892109893109894109895109896109897109898109899109900109901109902109903109904109905109906109907109908109909109910109911109912109913109914109915109916109917109918109919109920109921109922109923109924109925109926109927109928109929109930109931109932109933109934109935109936109937109938109939109940109941109942109943109944109945109946109947109948109949109950109951109952109953109954109955109956109957109958109959109960109961109962109963109964109965109966109967109968109969109970109971109972109973109974109975109976109977109978109979109980109981109982109983109984109985109986109987109988109989109990109991109992109993109994109995109996109997109998109999110000110001110002110003110004110005110006110007110008110009110010110011110012110013110014110015110016110017110018110019110020110021110022110023110024110025110026110027110028110029110030110031110032110033110034110035110036110037110038110039110040110041110042110043110044110045110046110047110048110049110050110051110052110053110054110055110056110057110058110059110060110061110062110063110064110065110066110067110068110069110070110071110072110073110074110075110076110077110078110079110080110081110082110083110084110085110086110087110088110089110090110091110092110093110094110095110096110097110098110099110100110101110102110103110104110105110106110107110108110109110110110111110112110113110114110115110116110117110118110119110120110121110122110123110124110125110126110127110128110129110130110131110132110133110134110135110136110137110138110139110140110141110142110143110144110145110146110147110148110149110150110151110152110153110154110155110156110157110158110159110160110161110162110163110164110165110166110167110168110169110170110171110172110173110174110175110176110177110178110179110180110181110182110183110184110185110186110187110188110189110190110191110192110193110194110195110196110197110198110199110200110201110202110203110204110205110206110207110208110209110210110211110212110213110214110215110216110217110218110219110220110221110222110223110224110225110226110227110228110229110230110231110232110233110234110235110236110237110238110239110240110241110242110243110244110245110246110247110248110249110250110251110252110253110254110255110256110257110258110259110260110261110262110263110264110265110266110267110268110269110270110271110272110273110274110275110276110277110278110279110280110281110282110283110284110285110286110287110288110289110290110291110292110293110294110295110296110297110298110299110300110301110302110303110304110305110306110307110308110309110310110311110312110313110314110315110316110317110318110319110320110321110322110323110324110325110326110327110328110329110330110331110332110333110334110335110336110337110338110339110340110341110342110343110344110345110346110347110348110349110350110351110352110353110354110355110356110357110358110359110360110361110362110363110364110365110366110367110368110369110370110371110372110373110374110375110376110377110378110379110380110381110382110383110384110385110386110387110388110389110390110391110392110393110394110395110396110397110398110399110400110401110402110403110404110405110406110407110408110409110410110411110412110413110414110415110416110417110418110419110420110421110422110423110424110425110426110427110428110429110430110431110432110433110434110435110436110437110438110439110440110441110442110443110444110445110446110447110448110449110450110451110452110453110454110455110456110457110458110459110460110461110462110463110464110465110466110467110468110469110470110471110472110473110474110475110476110477110478110479110480110481110482110483110484110485110486110487110488110489110490110491110492110493110494110495110496110497110498110499110500110501110502110503110504110505110506110507110508110509110510110511110512110513110514110515110516110517110518110519110520110521110522110523110524110525110526110527110528110529110530110531110532110533110534110535110536110537110538110539110540110541110542110543110544110545110546110547110548110549110550110551110552110553110554110555110556110557110558110559110560110561110562110563110564110565110566110567110568110569110570110571110572110573110574110575110576110577110578110579110580110581110582110583110584110585110586110587110588110589110590110591110592110593110594110595110596110597110598110599110600110601110602110603110604110605110606110607110608110609110610110611110612110613110614110615110616110617110618110619110620110621110622110623110624110625110626110627110628110629110630110631110632110633110634110635110636110637110638110639110640110641110642110643110644110645110646110647110648110649110650110651110652110653110654110655110656110657110658110659110660110661110662110663110664110665110666110667110668110669110670110671110672110673110674110675110676110677110678110679110680110681110682110683110684110685110686110687110688110689110690110691110692110693110694110695110696110697110698110699110700110701110702110703110704110705110706110707110708110709110710110711110712110713110714110715110716110717110718110719110720110721110722110723110724110725110726110727110728110729110730110731110732110733110734110735110736110737110738110739110740110741110742110743110744110745110746110747110748110749110750110751110752110753110754110755110756110757110758110759110760110761110762110763110764110765110766110767110768110769110770110771110772110773110774110775110776110777110778110779110780110781110782110783110784110785110786110787110788110789110790110791110792110793110794110795110796110797110798110799110800110801110802110803110804110805110806110807110808110809110810110811110812110813110814110815110816110817110818110819110820110821110822110823110824110825110826110827110828110829110830110831110832110833110834110835110836110837110838110839110840110841110842110843110844110845110846110847110848110849110850110851110852110853110854110855110856110857110858110859110860110861110862110863110864110865110866110867110868110869110870110871110872110873110874110875110876110877110878110879110880110881110882110883110884110885110886110887110888110889110890110891110892110893110894110895110896110897110898110899110900110901110902110903110904110905110906110907110908110909110910110911110912110913110914110915110916110917110918110919110920110921110922110923110924110925110926110927110928110929110930110931110932110933110934110935110936110937110938110939110940110941110942110943110944110945110946110947110948110949110950110951110952110953110954110955110956110957110958110959110960110961110962110963110964110965110966110967110968110969110970110971110972110973110974110975110976110977110978110979110980110981110982110983110984110985110986110987110988110989110990110991110992110993110994110995110996110997110998110999111000111001111002111003111004111005111006111007111008111009111010111011111012111013111014111015111016111017111018111019111020111021111022111023111024111025111026111027111028111029111030111031111032111033111034111035111036111037111038111039111040111041111042111043111044111045111046111047111048111049111050111051111052111053111054111055111056111057111058111059111060111061111062111063111064111065111066111067111068111069111070111071111072111073111074111075111076111077111078111079111080111081111082111083111084111085111086111087111088111089111090111091111092111093111094111095111096111097111098111099111100111101111102111103111104111105111106111107111108111109111110111111111112111113111114111115111116111117111118111119111120111121111122111123111124111125111126111127111128111129111130111131111132111133111134111135111136111137111138111139111140111141111142111143111144111145111146111147111148111149111150111151111152111153111154111155111156111157111158111159111160111161111162111163111164111165111166111167111168111169111170111171111172111173111174111175111176111177111178111179111180111181111182111183111184111185111186111187111188111189111190111191111192111193111194111195111196111197111198111199111200111201111202111203111204111205111206111207111208111209111210111211111212111213111214111215111216111217111218111219111220111221111222111223111224111225111226111227111228111229111230111231111232111233111234111235111236111237111238111239111240111241111242111243111244111245111246111247111248111249111250111251111252111253111254111255111256111257111258111259111260111261111262111263111264111265111266111267111268111269111270111271111272111273111274111275111276111277111278111279111280111281111282111283111284111285111286111287111288111289111290111291111292111293111294111295111296111297111298111299111300111301111302111303111304111305111306111307111308111309111310111311111312111313111314111315111316111317111318111319111320111321111322111323111324111325111326111327111328111329111330111331111332111333111334111335111336111337111338111339111340111341111342111343111344111345111346111347111348111349111350111351111352111353111354111355111356111357111358111359111360111361111362111363111364111365111366111367111368111369111370111371111372111373111374111375111376111377111378111379111380111381111382111383111384111385111386111387111388111389111390111391111392111393111394111395111396111397111398111399111400111401111402111403111404111405111406111407111408111409111410111411111412111413111414111415111416111417111418111419111420111421111422111423111424111425111426111427111428111429111430111431111432111433111434111435111436111437111438111439111440111441111442111443111444111445111446111447111448111449111450111451111452111453111454111455111456111457111458111459111460111461111462111463111464111465111466111467111468111469111470111471111472111473111474111475111476111477111478111479111480111481111482111483111484111485111486111487111488111489111490111491111492111493111494111495111496111497111498111499111500111501111502111503111504111505111506111507111508111509111510111511111512111513111514111515111516111517111518111519111520111521111522111523111524111525111526111527111528111529111530111531111532111533111534111535111536111537111538111539111540111541111542111543111544111545111546111547111548111549111550111551111552111553111554111555111556111557111558111559111560111561111562111563111564111565111566111567111568111569111570111571111572111573111574111575111576111577111578111579111580111581111582111583111584111585111586111587111588111589111590111591111592111593111594111595111596111597111598111599111600111601111602111603111604111605111606111607111608111609111610111611111612111613111614111615111616111617111618111619111620111621111622111623111624111625111626111627111628111629111630111631111632111633111634111635111636111637111638111639111640111641111642111643111644111645111646111647111648111649111650111651111652111653111654111655111656111657111658111659111660111661111662111663111664111665111666111667111668111669111670111671111672111673111674111675111676111677111678111679111680111681111682111683111684111685111686111687111688111689111690111691111692111693111694111695111696111697111698111699111700111701111702111703111704111705111706111707111708111709111710111711111712111713111714111715111716111717111718111719111720111721111722111723111724111725111726111727111728111729111730111731111732111733111734111735111736111737111738111739111740111741111742111743111744111745111746111747111748111749111750111751111752111753111754111755111756111757111758111759111760111761111762111763111764111765111766111767111768111769111770111771111772111773111774111775111776111777111778111779111780111781111782111783111784111785111786111787111788111789111790111791111792111793111794111795111796111797111798111799111800111801111802111803111804111805111806111807111808111809111810111811111812111813111814111815111816111817111818111819111820111821111822111823111824111825111826111827111828111829111830111831111832111833111834111835111836111837111838111839111840111841111842111843111844111845111846111847111848111849111850111851111852111853111854111855111856111857111858111859111860111861111862111863111864111865111866111867111868111869111870111871111872111873111874111875111876111877111878111879111880111881111882111883111884111885111886111887111888111889111890111891111892111893111894111895111896111897111898111899111900111901111902111903111904111905111906111907111908111909111910111911111912111913111914111915111916111917111918111919111920111921111922111923111924111925111926111927111928111929111930111931111932111933111934111935111936111937111938111939111940111941111942111943111944111945111946111947111948111949111950111951111952111953111954111955111956111957111958111959111960111961111962111963111964111965111966111967111968111969111970111971111972111973111974111975111976111977111978111979111980111981111982111983111984111985111986111987111988111989111990111991111992111993111994111995111996111997111998111999112000112001112002112003112004112005112006112007112008112009112010112011112012112013112014112015112016112017112018112019112020112021112022112023112024112025112026112027112028112029112030112031112032112033112034112035112036112037112038112039112040112041112042112043112044112045112046112047112048112049112050112051112052112053112054112055112056112057112058112059112060112061112062112063112064112065112066112067112068112069112070112071112072112073112074112075112076112077112078112079112080112081112082112083112084112085112086112087112088112089112090112091112092112093112094112095112096112097112098112099112100112101112102112103112104112105112106112107112108112109112110112111112112112113112114112115112116112117112118112119112120112121112122112123112124112125112126112127112128112129112130112131112132112133112134112135112136112137112138112139112140112141112142112143112144112145112146112147112148112149112150112151112152112153112154112155112156112157112158112159112160112161112162112163112164112165112166112167112168112169112170112171112172112173112174112175112176112177112178112179112180112181112182112183112184112185112186112187112188112189112190112191112192112193112194112195112196112197112198112199112200112201112202112203112204112205112206112207112208112209112210112211112212112213112214112215112216112217112218112219112220112221112222112223112224112225112226112227112228112229112230112231112232112233112234112235112236112237112238112239112240112241112242112243112244112245112246112247112248112249112250112251112252112253112254112255112256112257112258112259112260112261112262112263112264112265112266112267112268112269112270112271112272112273112274112275112276112277112278112279112280112281112282112283112284112285112286112287112288112289112290112291112292112293112294112295112296112297112298112299112300112301112302112303112304112305112306112307112308112309112310112311112312112313112314112315112316112317112318112319112320112321112322112323112324112325112326112327112328112329112330112331112332112333112334112335112336112337112338112339112340112341112342112343112344112345112346112347112348112349112350112351112352112353112354112355112356112357112358112359112360112361112362112363112364112365112366112367112368112369112370112371112372112373112374112375112376112377112378112379112380112381112382112383112384112385112386112387112388112389112390112391112392112393112394112395112396112397112398112399112400112401112402112403112404112405112406112407112408112409112410112411112412112413112414112415112416112417112418112419112420112421112422112423112424112425112426112427112428112429112430112431112432112433112434112435112436112437112438112439112440112441112442112443112444112445112446112447112448112449112450112451112452112453112454112455112456112457112458112459112460112461112462112463112464112465112466112467112468112469112470112471112472112473112474112475112476112477112478112479112480112481112482112483112484112485112486112487112488112489112490112491112492112493112494112495112496112497112498112499112500112501112502112503112504112505112506112507112508112509112510112511112512112513112514112515112516112517112518112519112520112521112522112523112524112525112526112527112528112529112530112531112532112533112534112535112536112537112538112539112540112541112542112543112544112545112546112547112548112549112550112551112552112553112554112555112556112557112558112559112560112561112562112563112564112565112566112567112568112569112570112571112572112573112574112575112576112577112578112579112580112581112582112583112584112585112586112587112588112589112590112591112592112593112594112595112596112597112598112599112600112601112602112603112604112605112606112607112608112609112610112611112612112613112614112615112616112617112618112619112620112621112622112623112624112625112626112627112628112629112630112631112632112633112634112635112636112637112638112639112640112641112642112643112644112645112646112647112648112649112650112651112652112653112654112655112656112657112658112659112660112661112662112663112664112665112666112667112668112669112670112671112672112673112674112675112676112677112678112679112680112681112682112683112684112685112686112687112688112689112690112691112692112693112694112695112696112697112698112699112700112701112702112703112704112705112706112707112708112709112710112711112712112713112714112715112716112717112718112719112720112721112722112723112724112725112726112727112728112729112730112731112732112733112734112735112736112737112738112739112740112741112742112743112744112745112746112747112748112749112750112751112752112753112754112755112756112757112758112759112760112761112762112763112764112765112766112767112768112769112770112771112772112773112774112775112776112777112778112779112780112781112782112783112784112785112786112787112788112789112790112791112792112793112794112795112796112797112798112799112800112801112802112803112804112805112806112807112808112809112810112811112812112813112814112815112816112817112818112819112820112821112822112823112824112825112826112827112828112829112830112831112832112833112834112835112836112837112838112839112840112841112842112843112844112845112846112847112848112849112850112851112852112853112854112855112856112857112858112859112860112861112862112863112864112865112866112867112868112869112870112871112872112873112874112875112876112877112878112879112880112881112882112883112884112885112886112887112888112889112890112891112892112893112894112895112896112897112898112899112900112901112902112903112904112905112906112907112908112909112910112911112912112913112914112915112916112917112918112919112920112921112922112923112924112925112926112927112928112929112930112931112932112933112934112935112936112937112938112939112940112941112942112943112944112945112946112947112948112949112950112951112952112953112954112955112956112957112958112959112960112961112962112963112964112965112966112967112968112969112970112971112972112973112974112975112976112977112978112979112980112981112982112983112984112985112986112987112988112989112990112991112992112993112994112995112996112997112998112999113000113001113002113003113004113005113006113007113008113009113010113011113012113013113014113015113016113017113018113019113020113021113022113023113024113025113026113027113028113029113030113031113032113033113034113035113036113037113038113039113040113041113042113043113044113045113046113047113048113049113050113051113052113053113054113055113056113057113058113059113060113061113062113063113064113065113066113067113068113069113070113071113072113073113074113075113076113077113078113079113080113081113082113083113084113085113086113087113088113089113090113091113092113093113094113095113096113097113098113099113100113101113102113103113104113105113106113107113108113109113110113111113112113113113114113115113116113117113118113119113120113121113122113123113124113125113126113127113128113129113130113131113132113133113134113135113136113137113138113139113140113141113142113143113144113145113146113147113148113149113150113151113152113153113154113155113156113157113158113159113160113161113162113163113164113165113166113167113168113169113170113171113172113173113174113175113176113177113178113179113180113181113182113183113184113185113186113187113188113189113190113191113192113193113194113195113196113197113198113199113200113201113202113203113204113205113206113207113208113209113210113211113212113213113214113215113216113217113218113219113220113221113222113223113224113225113226113227113228113229113230113231113232113233113234113235113236113237113238113239113240113241113242113243113244113245113246113247113248113249113250113251113252113253113254113255113256113257113258113259113260113261113262113263113264113265113266113267113268113269113270113271113272113273113274113275113276113277113278113279113280113281113282113283113284113285113286113287113288113289113290113291113292113293113294113295113296113297113298113299113300113301113302113303113304113305113306113307113308113309113310113311113312113313113314113315113316113317113318113319113320113321113322113323113324113325113326113327113328113329113330113331113332113333113334113335113336113337113338113339113340113341113342113343113344113345113346113347113348113349113350113351113352113353113354113355113356113357113358113359113360113361113362113363113364113365113366113367113368113369113370113371113372113373113374113375113376113377113378113379113380113381113382113383113384113385113386113387113388113389113390113391113392113393113394113395113396113397113398113399113400113401113402113403113404113405113406113407113408113409113410113411113412113413113414113415113416113417113418113419113420113421113422113423113424113425113426113427113428113429113430113431113432113433113434113435113436113437113438113439113440113441113442113443113444113445113446113447113448113449113450113451113452113453113454113455113456113457113458113459113460113461113462113463113464113465113466113467113468113469113470113471113472113473113474113475113476113477113478113479113480113481113482113483113484113485113486113487113488113489113490113491113492113493113494113495113496113497113498113499113500113501113502113503113504113505113506113507113508113509113510113511113512113513113514113515113516113517113518113519113520113521113522113523113524113525113526113527113528113529113530113531113532113533113534113535113536113537113538113539113540113541113542113543113544113545113546113547113548113549113550113551113552113553113554113555113556113557113558113559113560113561113562113563113564113565113566113567113568113569113570113571113572113573113574113575113576113577113578113579113580113581113582113583113584113585113586113587113588113589113590113591113592113593113594113595113596113597113598113599113600113601113602113603113604113605113606113607113608113609113610113611113612113613113614113615113616113617113618113619113620113621113622113623113624113625113626113627113628113629113630113631113632113633113634113635113636113637113638113639113640113641113642113643113644113645113646113647113648113649113650113651113652113653113654113655113656113657113658113659113660113661113662113663113664113665113666113667113668113669113670113671113672113673113674113675113676113677113678113679113680113681113682113683113684113685113686113687113688113689113690113691113692113693113694113695113696113697113698113699113700113701113702113703113704113705113706113707113708113709113710113711113712113713113714113715113716113717113718113719113720113721113722113723113724113725113726113727113728113729113730113731113732113733113734113735113736113737113738113739113740113741113742113743113744113745113746113747113748113749113750113751113752113753113754113755113756113757113758113759113760113761113762113763113764113765113766113767113768113769113770113771113772113773113774113775113776113777113778113779113780113781113782113783113784113785113786113787113788113789113790113791113792113793113794113795113796113797113798113799113800113801113802113803113804113805113806113807113808113809113810113811113812113813113814113815113816113817113818113819113820113821113822113823113824113825113826113827113828113829113830113831113832113833113834113835113836113837113838113839113840113841113842113843113844113845113846113847113848113849113850113851113852113853113854113855113856113857113858113859113860113861113862113863113864113865113866113867113868113869113870113871113872113873113874113875113876113877113878113879113880113881113882113883113884113885113886113887113888113889113890113891113892113893113894113895113896113897113898113899113900113901113902113903113904113905113906113907113908113909113910113911113912113913113914113915113916113917113918113919113920113921113922113923113924113925113926113927113928113929113930113931113932113933113934113935113936113937113938113939113940113941113942113943113944113945113946113947113948113949113950113951113952113953113954113955113956113957113958113959113960113961113962113963113964113965113966113967113968113969113970113971113972113973113974113975113976113977113978113979113980113981113982113983113984113985113986113987113988113989113990113991113992113993113994113995113996113997113998113999114000114001114002114003114004114005114006114007114008114009114010114011114012114013114014114015114016114017114018114019114020114021114022114023114024114025114026114027114028114029114030114031114032114033114034114035114036114037114038114039114040114041114042114043114044114045114046114047114048114049114050114051114052114053114054114055114056114057114058114059114060114061114062114063114064114065114066114067114068114069114070114071114072114073114074114075114076114077114078114079114080114081114082114083114084114085114086114087114088114089114090114091114092114093114094114095114096114097114098114099114100114101114102114103114104114105114106114107114108114109114110114111114112114113114114114115114116114117114118114119114120114121114122114123114124114125114126114127114128114129114130114131114132114133114134114135114136114137114138114139114140114141114142114143114144114145114146114147114148114149114150114151114152114153114154114155114156114157114158114159114160114161114162114163114164114165114166114167114168114169114170114171114172114173114174114175114176114177114178114179114180114181114182114183114184114185114186114187114188114189114190114191114192114193114194114195114196114197114198114199114200114201114202114203114204114205114206114207114208114209114210114211114212114213114214114215114216114217114218114219114220114221114222114223114224114225114226114227114228114229114230114231114232114233114234114235114236114237114238114239114240114241114242114243114244114245114246114247114248114249114250114251114252114253114254114255114256114257114258114259114260114261114262114263114264114265114266114267114268114269114270114271114272114273114274114275114276114277114278114279114280114281114282114283114284114285114286114287114288114289114290114291114292114293114294114295114296114297114298114299114300114301114302114303114304114305114306114307114308114309114310114311114312114313114314114315114316114317114318114319114320114321114322114323114324114325114326114327114328114329114330114331114332114333114334114335114336114337114338114339114340114341114342114343114344114345114346114347114348114349114350114351114352114353114354114355114356114357114358114359114360114361114362114363114364114365114366114367114368114369114370114371114372114373114374114375114376114377114378114379114380114381114382114383114384114385114386114387114388114389114390114391114392114393114394114395114396114397114398114399114400114401114402114403114404114405114406114407114408114409114410114411114412114413114414114415114416114417114418114419114420114421114422114423114424114425114426114427114428114429114430114431114432114433114434114435114436114437114438114439114440114441114442114443114444114445114446114447114448114449114450114451114452114453114454114455114456114457114458114459114460114461114462114463114464114465114466114467114468114469114470114471114472114473114474114475114476114477114478114479114480114481114482114483114484114485114486114487114488114489114490114491114492114493114494114495114496114497114498114499114500114501114502114503114504114505114506114507114508114509114510114511114512114513114514114515114516114517114518114519114520114521114522114523114524114525114526114527114528114529114530114531114532114533114534114535114536114537114538114539114540114541114542114543114544114545114546114547114548114549114550114551114552114553114554114555114556114557114558114559114560114561114562114563114564114565114566114567114568114569114570114571114572114573114574114575114576114577114578114579114580114581114582114583114584114585114586114587114588114589114590114591114592114593114594114595114596114597114598114599114600114601114602114603114604114605114606114607114608114609114610114611114612114613114614114615114616114617114618114619114620114621114622114623114624114625114626114627114628114629114630114631114632114633114634114635114636114637114638114639114640114641114642114643114644114645114646114647114648114649114650114651114652114653114654114655114656114657114658114659114660114661114662114663114664114665114666114667114668114669114670114671114672114673114674114675114676114677114678114679114680114681114682114683114684114685114686114687114688114689114690114691114692114693114694114695114696114697114698114699114700114701114702114703114704114705114706114707114708114709114710114711114712114713114714114715114716114717114718114719114720114721114722114723114724114725114726114727114728114729114730114731114732114733114734114735114736114737114738114739114740114741114742114743114744114745114746114747114748114749114750114751114752114753114754114755114756114757114758114759114760114761114762114763114764114765114766114767114768114769114770114771114772114773114774114775114776114777114778114779114780114781114782114783114784114785114786114787114788114789114790114791114792114793114794114795114796114797114798114799114800114801114802114803114804114805114806114807114808114809114810114811114812114813114814114815114816114817114818114819114820114821114822114823114824114825114826114827114828114829114830114831114832114833114834114835114836114837114838114839114840114841114842114843114844114845114846114847114848114849114850114851114852114853114854114855114856114857114858114859114860114861114862114863114864114865114866114867114868114869114870114871114872114873114874114875114876114877114878114879114880114881114882114883114884114885114886114887114888114889114890114891114892114893114894114895114896114897114898114899114900114901114902114903114904114905114906114907114908114909114910114911114912114913114914114915114916114917114918114919114920114921114922114923114924114925114926114927114928114929114930114931114932114933114934114935114936114937114938114939114940114941114942114943114944114945114946114947114948114949114950114951114952114953114954114955114956114957114958114959114960114961114962114963114964114965114966114967114968114969114970114971114972114973114974114975114976114977114978114979114980114981114982114983114984114985114986114987114988114989114990114991114992114993114994114995114996114997114998114999115000115001115002115003115004115005115006115007115008115009115010115011115012115013115014115015115016115017115018115019115020115021115022115023115024115025115026115027115028115029115030115031115032115033115034115035115036115037115038115039115040115041115042115043115044115045115046115047115048115049115050115051115052115053115054115055115056115057115058115059115060115061115062115063115064115065115066115067115068115069115070115071115072115073115074115075115076115077115078115079115080115081115082115083115084115085115086115087115088115089115090115091115092115093115094115095115096115097115098115099115100115101115102115103115104115105115106115107115108115109115110115111115112115113115114115115115116115117115118115119115120115121115122115123115124115125115126115127115128115129115130115131115132115133115134115135115136115137115138115139115140115141115142115143115144115145115146115147115148115149115150115151115152115153115154115155115156115157115158115159115160115161115162115163115164115165115166115167115168115169115170115171115172115173115174115175115176115177115178115179115180115181115182115183115184115185115186115187115188115189115190115191115192115193115194115195115196115197115198115199115200115201115202115203115204115205115206115207115208115209115210115211115212115213115214115215115216115217115218115219115220115221115222115223115224115225115226115227115228115229115230115231115232115233115234115235115236115237115238115239115240115241115242115243115244115245115246115247115248115249115250115251115252115253115254115255115256115257115258115259115260115261115262115263115264115265115266115267115268115269115270115271115272115273115274115275115276115277115278115279115280115281115282115283115284115285115286115287115288115289115290115291115292115293115294115295115296115297115298115299115300115301115302115303115304115305115306115307115308115309115310115311115312115313115314115315115316115317115318115319115320115321115322115323115324115325115326115327115328115329115330115331115332115333115334115335115336115337115338115339115340115341115342115343115344115345115346115347115348115349115350115351115352115353115354115355115356115357115358115359115360115361115362115363115364115365115366115367115368115369115370115371115372115373115374115375115376115377115378115379115380115381115382115383115384115385115386115387115388115389115390115391115392115393115394115395115396115397115398115399115400115401115402115403115404115405115406115407115408115409115410115411115412115413115414115415115416115417115418115419115420115421115422115423115424115425115426115427115428115429115430115431115432115433115434115435115436115437115438115439115440115441115442115443115444115445115446115447115448115449115450115451115452115453115454115455115456115457115458115459115460115461115462115463115464115465115466115467115468115469115470115471115472115473115474115475115476115477115478115479115480115481115482115483115484115485115486115487115488115489115490115491115492115493115494115495115496115497115498115499115500115501115502115503115504115505115506115507115508115509115510115511115512115513115514115515115516115517115518115519115520115521115522115523115524115525115526115527115528115529115530115531115532115533115534115535115536115537115538115539115540115541115542115543115544115545115546115547115548115549115550115551115552115553115554115555115556115557115558115559115560115561115562115563115564115565115566115567115568115569115570115571115572115573115574115575115576115577115578115579115580115581115582115583115584115585115586115587115588115589115590115591115592115593115594115595115596115597115598115599115600115601115602115603115604115605115606115607115608115609115610115611115612115613115614115615115616115617115618115619115620115621115622115623115624115625115626115627115628115629115630115631115632115633115634115635115636115637115638115639115640115641115642115643115644115645115646115647115648115649115650115651115652115653115654115655115656115657115658115659115660115661115662115663115664115665115666115667115668115669115670115671115672115673115674115675115676115677115678115679115680115681115682115683115684115685115686115687115688115689115690115691115692115693115694115695115696115697115698115699115700115701115702115703115704115705115706115707115708115709115710115711115712115713115714115715115716115717115718115719115720115721115722115723115724115725115726115727115728115729115730115731115732115733115734115735115736115737115738115739115740115741115742115743115744115745115746115747115748115749115750115751115752115753115754115755115756115757115758115759115760115761115762115763115764115765115766115767115768115769115770115771115772115773115774115775115776115777115778115779115780115781115782115783115784115785115786115787115788115789115790115791115792115793115794115795115796115797115798115799115800115801115802115803115804115805115806115807115808115809115810115811115812115813115814115815115816115817115818115819115820115821115822115823115824115825115826115827115828115829115830115831115832115833115834115835115836115837115838115839115840115841115842115843115844115845115846115847115848115849115850115851115852115853115854115855115856115857115858115859115860115861115862115863115864115865115866115867115868115869115870115871115872115873115874115875115876115877115878115879115880115881115882115883115884115885115886115887115888115889115890115891115892115893115894115895115896115897115898115899115900115901115902115903115904115905115906115907115908115909115910115911115912115913115914115915115916115917115918115919115920115921115922115923115924115925115926115927115928115929115930115931115932115933115934115935115936115937115938115939115940115941115942115943115944115945115946115947115948115949115950115951115952115953115954115955115956115957115958115959115960115961115962115963115964115965115966115967115968115969115970115971115972115973115974115975115976115977115978115979115980115981115982115983115984115985115986115987115988115989115990115991115992115993115994115995115996115997115998115999116000116001116002116003116004116005116006116007116008116009116010116011116012116013116014116015116016116017116018116019116020116021116022116023116024116025116026116027116028116029116030116031116032116033116034116035116036116037116038116039116040116041116042116043116044116045116046116047116048116049116050116051116052116053116054116055116056116057116058116059116060116061116062116063116064116065116066116067116068116069116070116071116072116073116074116075116076116077116078116079116080116081116082116083116084116085116086116087116088116089116090116091116092116093116094116095116096116097116098116099116100116101116102116103116104116105116106116107116108116109116110116111116112116113116114116115116116116117116118116119116120116121116122116123116124116125116126116127116128116129116130116131116132116133116134116135116136116137116138116139116140116141116142116143116144116145116146116147116148116149116150116151116152116153116154116155116156116157116158116159116160116161116162116163116164116165116166116167116168116169116170116171116172116173116174116175116176116177116178116179116180116181116182116183116184116185116186116187116188116189116190116191116192116193116194116195116196116197116198116199116200116201116202116203116204116205116206116207116208116209116210116211116212116213116214116215116216116217116218116219116220116221116222116223116224116225116226116227116228116229116230116231116232116233116234116235116236116237116238116239116240116241116242116243116244116245116246116247116248116249116250116251116252116253116254116255116256116257116258116259116260116261116262116263116264116265116266116267116268116269116270116271116272116273116274116275116276116277116278116279116280116281116282116283116284116285116286116287116288116289116290116291116292116293116294116295116296116297116298116299116300116301116302116303116304116305116306116307116308116309116310116311116312116313116314116315116316116317116318116319116320116321116322116323116324116325116326116327116328116329116330116331116332116333116334116335116336116337116338116339116340116341116342116343116344116345116346116347116348116349116350116351116352116353116354116355116356116357116358116359116360116361116362116363116364116365116366116367116368116369116370116371116372116373116374116375116376116377116378116379116380116381116382116383116384116385116386116387116388116389116390116391116392116393116394116395116396116397116398116399116400116401116402116403116404116405116406116407116408116409116410116411116412116413116414116415116416116417116418116419116420116421116422116423116424116425116426116427116428116429116430116431116432116433116434116435116436116437116438116439116440116441116442116443116444116445116446116447116448116449116450116451116452116453116454116455116456116457116458116459116460116461116462116463116464116465116466116467116468116469116470116471116472116473116474116475116476116477116478116479116480116481116482116483116484116485116486116487116488116489116490116491116492116493116494116495116496116497116498116499116500116501116502116503116504116505116506116507116508116509116510116511116512116513116514116515116516116517116518116519116520116521116522116523116524116525116526116527116528116529116530116531116532116533116534116535116536116537116538116539116540116541116542116543116544116545116546116547116548116549116550116551116552116553116554116555116556116557116558116559116560116561116562116563116564116565116566116567116568116569116570116571116572116573116574116575116576116577116578116579116580116581116582116583116584116585116586116587116588116589116590116591116592116593116594116595116596116597116598116599116600116601116602116603116604116605116606116607116608116609116610116611116612116613116614116615116616116617116618116619116620116621116622116623116624116625116626116627116628116629116630116631116632116633116634116635116636116637116638116639116640116641116642116643116644116645116646116647116648116649116650116651116652116653116654116655116656116657116658116659116660116661116662116663116664116665116666116667116668116669116670116671116672116673116674116675116676116677116678116679116680116681116682116683116684116685116686116687116688116689116690116691116692116693116694116695116696116697116698116699116700116701116702116703116704116705116706116707116708116709116710116711116712116713116714116715116716116717116718116719116720116721116722116723116724116725116726116727116728116729116730116731116732116733116734116735116736116737116738116739116740116741116742116743116744116745116746116747116748116749116750116751116752116753116754116755116756116757116758116759116760116761116762116763116764116765116766116767116768116769116770116771116772116773116774116775116776116777116778116779116780116781116782116783116784116785116786116787116788116789116790116791116792116793116794116795116796116797116798116799116800116801116802116803116804116805116806116807116808116809116810116811116812116813116814116815116816116817116818116819116820116821116822116823116824116825116826116827116828116829116830116831116832116833116834116835116836116837116838116839116840116841116842116843116844116845116846116847116848116849116850116851116852116853116854116855116856116857116858116859116860116861116862116863116864116865116866116867116868116869116870116871116872116873116874116875116876116877116878116879116880116881116882116883116884116885116886116887116888116889116890116891116892116893116894116895116896116897116898116899116900116901116902116903116904116905116906116907116908116909116910116911116912116913116914116915116916116917116918116919116920116921116922116923116924116925116926116927116928116929116930116931116932116933116934116935116936116937116938116939116940116941116942116943116944116945116946116947116948116949116950116951116952116953116954116955116956116957116958116959116960116961116962116963116964116965116966116967116968116969116970116971116972116973116974116975116976116977116978116979116980116981116982116983116984116985116986116987116988116989116990116991116992116993116994116995116996116997116998116999117000117001117002117003117004117005117006117007117008117009117010117011117012117013117014117015117016117017117018117019117020117021117022117023117024117025117026117027117028117029117030117031117032117033117034117035117036117037117038117039117040117041117042117043117044117045117046117047117048117049117050117051117052117053117054117055117056117057117058117059117060117061117062117063117064117065117066117067117068117069117070117071117072117073117074117075117076117077117078117079117080117081117082117083117084117085117086117087117088117089117090117091117092117093117094117095117096117097117098117099117100117101117102117103117104117105117106117107117108117109117110117111117112117113117114117115117116117117117118117119117120117121117122117123117124117125117126117127117128117129117130117131117132117133117134117135117136117137117138117139117140117141117142117143117144117145117146117147117148117149117150117151117152117153117154117155117156117157117158117159117160117161117162117163117164117165117166117167117168117169117170117171117172117173117174117175117176117177117178117179117180117181117182117183117184117185117186117187117188117189117190117191117192117193117194117195117196117197117198117199117200117201117202117203117204117205117206117207117208117209117210117211117212117213117214117215117216117217117218117219117220117221117222117223117224117225117226117227117228117229117230117231117232117233117234117235117236117237117238117239117240117241117242117243117244117245117246117247117248117249117250117251117252117253117254117255117256117257117258117259117260117261117262117263117264117265117266117267117268117269117270117271117272117273117274117275117276117277117278117279117280117281117282117283117284117285117286117287117288117289117290117291117292117293117294117295117296117297117298117299117300117301117302117303117304117305117306117307117308117309117310117311117312117313117314117315117316117317117318117319117320117321117322117323117324117325117326117327117328117329117330117331117332117333117334117335117336117337117338117339117340117341117342117343117344117345117346117347117348117349117350117351117352117353117354117355117356117357117358117359117360117361117362117363117364117365117366117367117368117369117370117371117372117373117374117375117376117377117378117379117380117381117382117383117384117385117386117387117388117389117390117391117392117393117394117395117396117397117398117399117400117401117402117403117404117405117406117407117408117409117410117411117412117413117414117415117416117417117418117419117420117421117422117423117424117425117426117427117428117429117430117431117432117433117434117435117436117437117438117439117440117441117442117443117444117445117446117447117448117449117450117451117452117453117454117455117456117457117458117459117460117461117462117463117464117465117466117467117468117469117470117471117472117473117474117475117476117477117478117479117480117481117482117483117484117485117486117487117488117489117490117491117492117493117494117495117496117497117498117499117500117501117502117503117504117505117506117507117508117509117510117511117512117513117514117515117516117517117518117519117520117521117522117523117524117525117526117527117528117529117530117531117532117533117534117535117536117537117538117539117540117541117542117543117544117545117546117547117548117549117550117551117552117553117554117555117556117557117558117559117560117561117562117563117564117565117566117567117568117569117570117571117572117573117574117575117576117577117578117579117580117581117582117583117584117585117586117587117588117589117590117591117592117593117594117595117596117597117598117599117600117601117602117603117604117605117606117607117608117609117610117611117612117613117614117615117616117617117618117619117620117621117622117623117624117625117626117627117628117629117630117631117632117633117634117635117636117637117638117639117640117641117642117643117644117645117646117647117648117649117650117651117652117653117654117655117656117657117658117659117660117661117662117663117664117665117666117667117668117669117670117671117672117673117674117675117676117677117678117679117680117681117682117683117684117685117686117687117688117689117690117691117692117693117694117695117696117697117698117699117700117701117702117703117704117705117706117707117708117709117710117711117712117713117714117715117716117717117718117719117720117721117722117723117724117725117726117727117728117729117730117731117732117733117734117735117736117737117738117739117740117741117742117743117744117745117746117747117748117749117750117751117752117753117754117755117756117757117758117759117760117761117762117763117764117765117766117767117768117769117770117771117772117773117774117775117776117777117778117779117780117781117782117783117784117785117786117787117788117789117790117791117792117793117794117795117796117797117798117799117800117801117802117803117804117805117806117807117808117809117810117811117812117813117814117815117816117817117818117819117820117821117822117823117824117825117826117827117828117829117830117831117832117833117834117835117836117837117838117839117840117841117842117843117844117845117846117847117848117849117850117851117852117853117854117855117856117857117858117859117860117861117862117863117864117865117866117867117868117869117870117871117872117873117874117875117876117877117878117879117880117881117882117883117884117885117886117887117888117889117890117891117892117893117894117895117896117897117898117899117900117901117902117903117904117905117906117907117908117909117910117911117912117913117914117915117916117917117918117919117920117921117922117923117924117925117926117927117928117929117930117931117932117933117934117935117936117937117938117939117940117941117942117943117944117945117946117947117948117949117950117951117952117953117954117955117956117957117958117959117960117961117962117963117964117965117966117967117968117969117970117971117972117973117974117975117976117977117978117979117980117981117982117983117984117985117986117987117988117989117990117991117992117993117994117995117996117997117998117999118000118001118002118003118004118005118006118007118008118009118010118011118012118013118014118015118016118017118018118019118020118021118022118023118024118025118026118027118028118029118030118031118032118033118034118035118036118037118038118039118040118041118042118043118044118045118046118047118048118049118050118051118052118053118054118055118056118057118058118059118060118061118062118063118064118065118066118067118068118069118070118071118072118073118074118075118076118077118078118079118080118081118082118083118084118085118086118087118088118089118090118091118092118093118094118095118096118097118098118099118100118101118102118103118104118105118106118107118108118109118110118111118112118113118114118115118116118117118118118119118120118121118122118123118124118125118126118127118128118129118130118131118132118133118134118135118136118137118138118139118140118141118142118143118144118145118146118147118148118149118150118151118152118153118154118155118156118157118158118159118160118161118162118163118164118165118166118167118168118169118170118171118172118173118174118175118176118177118178118179118180118181118182118183118184118185118186118187118188118189118190118191118192118193118194118195118196118197118198118199118200118201118202118203118204118205118206118207118208118209118210118211118212118213118214118215118216118217118218118219118220118221118222118223118224118225118226118227118228118229118230118231118232118233118234118235118236118237118238118239118240118241118242118243118244118245118246118247118248118249118250118251118252118253118254118255118256118257118258118259118260118261118262118263118264118265118266118267118268118269118270118271118272118273118274118275118276118277118278118279118280118281118282118283118284118285118286118287118288118289118290118291118292118293118294118295118296118297118298118299118300118301118302118303118304118305118306118307118308118309118310118311118312118313118314118315118316118317118318118319118320118321118322118323118324118325118326118327118328118329118330118331118332118333118334118335118336118337118338118339118340118341118342118343118344118345118346118347118348118349118350118351118352118353118354118355118356118357118358118359118360118361118362118363118364118365118366118367118368118369118370118371118372118373118374118375118376118377118378118379118380118381118382118383118384118385118386118387118388118389118390118391118392118393118394118395118396118397118398118399118400118401118402118403118404118405118406118407118408118409118410118411118412118413118414118415118416118417118418118419118420118421118422118423118424118425118426118427118428118429118430118431118432118433118434118435118436118437118438118439118440118441118442118443118444118445118446118447118448118449118450118451118452118453118454118455118456118457118458118459118460118461118462118463118464118465118466118467118468118469118470118471118472118473118474118475118476118477118478118479118480118481118482118483118484118485118486118487118488118489118490118491118492118493118494118495118496118497118498118499118500118501118502118503118504118505118506118507118508118509118510118511118512118513118514118515118516118517118518118519118520118521118522118523118524118525118526118527118528118529118530118531118532118533118534118535118536118537118538118539118540118541118542118543118544118545118546118547118548118549118550118551118552118553118554118555118556118557118558118559118560118561118562118563118564118565118566118567118568118569118570118571118572118573118574118575118576118577118578118579118580118581118582118583118584118585118586118587118588118589118590118591118592118593118594118595118596118597118598118599118600118601118602118603118604118605118606118607118608118609118610118611118612118613118614118615118616118617118618118619118620118621118622118623118624118625118626118627118628118629118630118631118632118633118634118635118636118637118638118639118640118641118642118643118644118645118646118647118648118649118650118651118652118653118654118655118656118657118658118659118660118661118662118663118664118665118666118667118668118669118670118671118672118673118674118675118676118677118678118679118680118681118682118683118684118685118686118687118688118689118690118691118692118693118694118695118696118697118698118699118700118701118702118703118704118705118706118707118708118709118710118711118712118713118714118715118716118717118718118719118720118721118722118723118724118725118726118727118728118729118730118731118732118733118734118735118736118737118738118739118740118741118742118743118744118745118746118747118748118749118750118751118752118753118754118755118756118757118758118759118760118761118762118763118764118765118766118767118768118769118770118771118772118773118774118775118776118777118778118779118780118781118782118783118784118785118786118787118788118789118790118791118792118793118794118795118796118797118798118799118800118801118802118803118804118805118806118807118808118809118810118811118812118813118814118815118816118817118818118819118820118821118822118823118824118825118826118827118828118829118830118831118832118833118834118835118836118837118838118839118840118841118842118843118844118845118846118847118848118849118850118851118852118853118854118855118856118857118858118859118860118861118862118863118864118865118866118867118868118869118870118871118872118873118874118875118876118877118878118879118880118881118882118883118884118885118886118887118888118889118890118891118892118893118894118895118896118897118898118899118900118901118902118903118904118905118906118907118908118909118910118911118912118913118914118915118916118917118918118919118920118921118922118923118924118925118926118927118928118929118930118931118932118933118934118935118936118937118938118939118940118941118942118943118944118945118946118947118948118949118950118951118952118953118954118955118956118957118958118959118960118961118962118963118964118965118966118967118968118969118970118971118972118973118974118975118976118977118978118979118980118981118982118983118984118985118986118987118988118989118990118991118992118993118994118995118996118997118998118999119000119001119002119003119004119005119006119007119008119009119010119011119012119013119014119015119016119017119018119019119020119021119022119023119024119025119026119027119028119029119030119031119032119033119034119035119036119037119038119039119040119041119042119043119044119045119046119047119048119049119050119051119052119053119054119055119056119057119058119059119060119061119062119063119064119065119066119067119068119069119070119071119072119073119074119075119076119077119078119079119080119081119082119083119084119085119086119087119088119089119090119091119092119093119094119095119096119097119098119099119100119101119102119103119104119105119106119107119108119109119110119111119112119113119114119115119116119117119118119119119120119121119122119123119124119125119126119127119128119129119130119131119132119133119134119135119136119137119138119139119140119141119142119143119144119145119146119147119148119149119150119151119152119153119154119155119156119157119158119159119160119161119162119163119164119165119166119167119168119169119170119171119172119173119174119175119176119177119178119179119180119181119182119183119184119185119186119187119188119189119190119191119192119193119194119195119196119197119198119199119200119201119202119203119204119205119206119207119208119209119210119211119212119213119214119215119216119217119218119219119220119221119222119223119224119225119226119227119228119229119230119231119232119233119234119235119236119237119238119239119240119241119242119243119244119245119246119247119248119249119250119251119252119253119254119255119256119257119258119259119260119261119262119263119264119265119266119267119268119269119270119271119272119273119274119275119276119277119278119279119280119281119282119283119284119285119286119287119288119289119290119291119292119293119294119295119296119297119298119299119300119301119302119303119304119305119306119307119308119309119310119311119312119313119314119315119316119317119318119319119320119321119322119323119324119325119326119327119328119329119330119331119332119333119334119335119336119337119338119339119340119341119342119343119344119345119346119347119348119349119350119351119352119353119354119355119356119357119358119359119360119361119362119363119364119365119366119367119368119369119370119371119372119373119374119375119376119377119378119379119380119381119382119383119384119385119386119387119388119389119390119391119392119393119394119395119396119397119398119399119400119401119402119403119404119405119406119407119408119409119410119411119412119413119414119415119416119417119418119419119420119421119422119423119424119425119426119427119428119429119430119431119432119433119434119435119436119437119438119439119440119441119442119443119444119445119446119447119448119449119450119451119452119453119454119455119456119457119458119459119460119461119462119463119464119465119466119467119468119469119470119471119472119473119474119475119476119477119478119479119480119481119482119483119484119485119486119487119488119489119490119491119492119493119494119495119496119497119498119499119500119501119502119503119504119505119506119507119508119509119510119511119512119513119514119515119516119517119518119519119520119521119522119523119524119525119526119527119528119529119530119531119532119533119534119535119536119537119538119539119540119541119542119543119544119545119546119547119548119549119550119551119552119553119554119555119556119557119558119559119560119561119562119563119564119565119566119567119568119569119570119571119572119573119574119575119576119577119578119579119580119581119582119583119584119585119586119587119588119589119590119591119592119593119594119595119596119597119598119599119600119601119602119603119604119605119606119607119608119609119610119611119612119613119614119615119616119617119618119619119620119621119622119623119624119625119626119627119628119629119630119631119632119633119634119635119636119637119638119639119640119641119642119643119644119645119646119647119648119649119650119651119652119653119654119655119656119657119658119659119660119661119662119663119664119665119666119667119668119669119670119671119672119673119674119675119676119677119678119679119680119681119682119683119684119685119686119687119688119689119690119691119692119693119694119695119696119697119698119699119700119701119702119703119704119705119706119707119708119709119710119711119712119713119714119715119716119717119718119719119720119721119722119723119724119725119726119727119728119729119730119731119732119733119734119735119736119737119738119739119740119741119742119743119744119745119746119747119748119749119750119751119752119753119754119755119756119757119758119759119760119761119762119763119764119765119766119767119768119769119770119771119772119773119774119775119776119777119778119779119780119781119782119783119784119785119786119787119788119789119790119791119792119793119794119795119796119797119798119799119800119801119802119803119804119805119806119807119808119809119810119811119812119813119814119815119816119817119818119819119820119821119822119823119824119825119826119827119828119829119830119831119832119833119834119835119836119837119838119839119840119841119842119843119844119845119846119847119848119849119850119851119852119853119854119855119856119857119858119859119860119861119862119863119864119865119866119867119868119869119870119871119872119873119874119875119876119877119878119879119880119881119882119883119884119885119886119887119888119889119890119891119892119893119894119895119896119897119898119899119900119901119902119903119904119905119906119907119908119909119910119911119912119913119914119915119916119917119918119919119920119921119922119923119924119925119926119927119928119929119930119931119932119933119934119935119936119937119938119939119940119941119942119943119944119945119946119947119948119949119950119951119952119953119954119955119956119957119958119959119960119961119962119963119964119965119966119967119968119969119970119971119972119973119974119975119976119977119978119979119980119981119982119983119984119985119986119987119988119989119990119991119992119993119994119995119996119997119998119999120000120001120002120003120004120005120006120007120008120009120010120011120012120013120014120015120016120017120018120019120020120021120022120023120024120025120026120027120028120029120030120031120032120033120034120035120036120037120038120039120040120041120042120043120044120045120046120047120048120049120050120051120052120053120054120055120056120057120058120059120060120061120062120063120064120065120066120067120068120069120070120071120072120073120074120075120076120077120078120079120080120081120082120083120084120085120086120087120088120089120090120091120092120093120094120095120096120097120098120099120100120101120102120103120104120105120106120107120108120109120110120111120112120113120114120115120116120117120118120119120120120121120122120123120124120125120126120127120128120129120130120131120132120133120134120135120136120137120138120139120140120141120142120143120144120145120146120147120148120149120150120151120152120153120154120155120156120157120158120159120160120161120162120163120164120165120166120167120168120169120170120171120172120173120174120175120176120177120178120179120180120181120182120183120184120185120186120187120188120189120190120191120192120193120194120195120196120197120198120199120200120201120202120203120204120205120206120207120208120209120210120211120212120213120214120215120216120217120218120219120220120221120222120223120224120225120226120227120228120229120230120231120232120233120234120235120236120237120238120239120240120241120242120243120244120245120246120247120248120249120250120251120252120253120254120255120256120257120258120259120260120261120262120263120264120265120266120267120268120269120270120271120272120273120274120275120276120277120278120279120280120281120282120283120284120285120286120287120288120289120290120291120292120293120294120295120296120297120298120299120300120301120302120303120304120305120306120307120308120309120310120311120312120313120314120315120316120317120318120319120320120321120322120323120324120325120326120327120328120329120330120331120332120333120334120335120336120337120338120339120340120341120342120343120344120345120346120347120348120349120350120351120352120353120354120355120356120357120358120359120360120361120362120363120364120365120366120367120368120369120370120371120372120373120374120375120376120377120378120379120380120381120382120383120384120385120386120387120388120389120390120391120392120393120394120395120396120397120398120399120400120401120402120403120404120405120406120407120408120409120410120411120412120413120414120415120416120417120418120419120420120421120422120423120424120425120426120427120428120429120430120431120432120433120434120435120436120437120438120439120440120441120442120443120444120445120446120447120448120449120450120451120452120453120454120455120456120457120458120459120460120461120462120463120464120465120466120467120468120469120470120471120472120473120474120475120476120477120478120479120480120481120482120483120484120485120486120487120488120489120490120491120492120493120494120495120496120497120498120499120500120501120502120503120504120505120506120507120508120509120510120511120512120513120514120515120516120517120518120519120520120521120522120523120524120525120526120527120528120529120530120531120532120533120534120535120536120537120538120539120540120541120542120543120544120545120546120547120548120549120550120551120552120553120554120555120556120557120558120559120560120561120562120563120564120565120566120567120568120569120570120571120572120573120574120575120576120577120578120579120580120581120582120583120584120585120586120587120588120589120590120591120592120593120594120595120596120597120598120599120600120601120602120603120604120605120606120607120608120609120610120611120612120613120614120615120616120617120618120619120620120621120622120623120624120625120626120627120628120629120630120631120632120633120634120635120636120637120638120639120640120641120642120643120644120645120646120647120648120649120650120651120652120653120654120655120656120657120658120659120660120661120662120663120664120665120666120667120668120669120670120671120672120673120674120675120676120677120678120679120680120681120682120683120684120685120686120687120688120689120690120691120692120693120694120695120696120697120698120699120700120701120702120703120704120705120706120707120708120709120710120711120712120713120714120715120716120717120718120719120720120721120722120723120724120725120726120727120728120729120730120731120732120733120734120735120736120737120738120739120740120741120742120743120744120745120746120747120748120749120750120751120752120753120754120755120756120757120758120759120760120761120762120763120764120765120766120767120768120769120770120771120772120773120774120775120776120777120778120779120780120781120782120783120784120785120786120787120788120789120790120791120792120793120794120795120796120797120798120799120800120801120802120803120804120805120806120807120808120809120810120811120812120813120814120815120816120817120818120819120820120821120822120823120824120825120826120827120828120829120830120831120832120833120834120835120836120837120838120839120840120841120842120843120844120845120846120847120848120849120850120851120852120853120854120855120856120857120858120859120860120861120862120863120864120865120866120867120868120869120870120871120872120873120874120875120876120877120878120879120880120881120882120883120884120885120886120887120888120889120890120891120892120893120894120895120896120897120898120899120900120901120902120903120904120905120906120907120908120909120910120911120912120913120914120915120916120917120918120919120920120921120922120923120924120925120926120927120928120929120930120931120932120933120934120935120936120937120938120939120940120941120942120943120944120945120946120947120948120949120950120951120952120953120954120955120956120957120958120959120960120961120962120963120964120965120966120967120968120969120970120971120972120973120974120975120976120977120978120979120980120981120982120983120984120985120986120987120988120989120990120991120992120993120994120995120996120997120998120999121000121001121002121003121004121005121006121007121008121009121010121011121012121013121014121015121016121017121018121019121020121021121022121023121024121025121026121027121028121029121030121031121032121033121034121035121036121037121038121039121040121041121042121043121044121045121046121047121048121049121050121051121052121053121054121055121056121057121058121059121060121061121062121063121064121065121066121067121068121069121070121071121072121073121074121075121076121077121078121079121080121081121082121083121084121085121086121087121088121089121090121091121092121093121094121095121096121097121098121099121100121101121102121103121104121105121106121107121108121109121110121111121112121113121114121115121116121117121118121119121120121121121122121123121124121125121126121127121128121129121130121131121132121133121134121135121136121137121138121139121140121141121142121143121144121145121146121147121148121149121150121151121152121153121154121155121156121157121158121159121160121161121162121163121164121165121166121167121168121169121170121171121172121173121174121175121176121177121178121179121180121181121182121183121184121185121186121187121188121189121190121191121192121193121194121195121196121197121198121199121200121201121202121203121204121205121206121207121208121209121210121211121212121213121214121215121216121217121218121219121220121221121222121223121224121225121226121227121228121229121230121231121232121233121234121235121236121237121238121239121240121241121242121243121244121245121246121247121248121249121250121251121252121253121254121255121256121257121258121259121260121261121262121263121264121265121266121267121268121269121270121271121272121273121274121275121276121277121278121279121280121281121282121283121284121285121286121287121288121289121290121291121292121293121294121295121296121297121298121299121300121301121302121303121304121305121306121307121308121309121310121311121312121313121314121315121316121317121318121319121320121321121322121323121324121325121326121327121328121329121330121331121332121333121334121335121336121337121338121339121340121341121342121343121344121345121346121347121348121349121350121351121352121353121354121355121356121357121358121359121360121361121362121363121364121365121366121367121368121369121370121371121372121373121374121375121376121377121378121379121380121381121382121383121384121385121386121387121388121389121390121391121392121393121394121395121396121397121398121399121400121401121402121403121404121405121406121407121408121409121410121411121412121413121414121415121416121417121418121419121420121421121422121423121424121425121426121427121428121429121430121431121432121433121434121435121436121437121438121439121440121441121442121443121444121445121446121447121448121449121450121451121452121453121454121455121456121457121458121459121460121461121462121463121464121465121466121467121468121469121470121471121472121473121474121475121476121477121478121479121480121481121482121483121484121485121486121487121488121489121490121491121492121493121494121495121496121497121498121499121500121501121502121503121504121505121506121507121508121509121510121511121512121513121514121515121516121517121518121519121520121521121522121523121524121525121526121527121528121529121530121531121532121533121534121535121536121537121538121539121540121541121542121543121544121545121546121547121548121549121550121551121552121553121554121555121556121557121558121559121560121561121562121563121564121565121566121567121568121569121570121571121572121573121574121575121576121577121578121579121580121581121582121583121584121585121586121587121588121589121590121591121592121593121594121595121596121597121598121599121600121601121602121603121604121605121606121607121608121609121610121611121612121613121614121615121616121617121618121619121620121621121622121623121624121625121626121627121628121629121630121631121632121633121634121635121636121637121638121639121640121641121642121643121644121645121646121647121648121649121650121651121652121653121654121655121656121657121658121659121660121661121662121663121664121665121666121667121668121669121670121671121672121673121674121675121676121677121678121679121680121681121682121683121684121685121686121687121688121689121690121691121692121693121694121695121696121697121698121699121700121701121702121703121704121705121706121707121708121709121710121711121712121713121714121715121716121717121718121719121720121721121722121723121724121725121726121727121728121729121730121731121732121733121734121735121736121737121738121739121740121741121742121743121744121745121746121747121748121749121750121751121752121753121754121755121756121757121758121759121760121761121762121763121764121765121766121767121768121769121770121771121772121773121774121775121776121777121778121779121780121781121782121783121784121785121786121787121788121789121790121791121792121793121794121795121796121797121798121799121800121801121802121803121804121805121806121807121808121809121810121811121812121813121814121815121816121817121818121819121820121821121822121823121824121825121826121827121828121829121830121831121832121833121834121835121836121837121838121839121840121841121842121843121844121845121846121847121848121849121850121851121852121853121854121855121856121857121858121859121860121861121862121863121864121865121866121867121868121869121870121871121872121873121874121875121876121877121878121879121880121881121882121883121884121885121886121887121888121889121890121891121892121893121894121895121896121897121898121899121900121901121902121903121904121905121906121907121908121909121910121911121912121913121914121915121916121917121918121919121920121921121922121923121924121925121926121927121928121929121930121931121932121933121934121935121936121937121938121939121940121941121942121943121944121945121946121947121948121949121950121951121952121953121954121955121956121957121958121959121960121961121962121963121964121965121966121967121968121969121970121971121972121973121974121975121976121977121978121979121980121981121982121983121984121985121986121987121988121989121990121991121992121993121994121995121996121997121998121999122000122001122002122003122004122005122006122007122008122009122010122011122012122013122014122015122016122017122018122019122020122021122022122023122024122025122026122027122028122029122030122031122032122033122034122035122036122037122038122039122040122041122042122043122044122045122046122047122048122049122050122051122052122053122054122055122056122057122058122059122060122061122062122063122064122065122066122067122068122069122070122071122072122073122074122075122076122077122078122079122080122081122082122083122084122085122086122087122088122089122090122091122092122093122094122095122096122097122098122099122100122101122102122103122104122105122106122107122108122109122110122111122112122113122114122115122116122117122118122119122120122121122122122123122124122125122126122127122128122129122130122131122132122133122134122135122136122137122138122139122140122141122142122143122144122145122146122147122148122149122150122151122152122153122154122155122156122157122158122159122160122161122162122163122164122165122166122167122168122169122170122171122172122173122174122175122176122177122178122179122180122181122182122183122184122185122186122187122188122189122190122191122192122193122194122195122196122197122198122199122200122201122202122203122204122205122206122207122208122209122210122211122212122213122214122215122216122217122218122219122220122221122222122223122224122225122226122227122228122229122230122231122232122233122234122235122236122237122238122239122240122241122242122243122244122245122246122247122248122249122250122251122252122253122254122255122256122257122258122259122260122261122262122263122264122265122266122267122268122269122270122271122272122273122274122275122276122277122278122279122280122281122282122283122284122285122286122287122288122289122290122291122292122293122294122295122296122297122298122299122300122301122302122303122304122305122306122307122308122309122310122311122312122313122314122315122316122317122318122319122320122321122322122323122324122325122326122327122328122329122330122331122332122333122334122335122336122337122338122339122340122341122342122343122344122345122346122347122348122349122350122351122352122353122354122355122356122357122358122359122360122361122362122363122364122365122366122367122368122369122370122371122372122373122374122375122376122377122378122379122380122381122382122383122384122385122386122387122388122389122390122391122392122393122394122395122396122397122398122399122400122401122402122403122404122405122406122407122408122409122410122411122412122413122414122415122416122417122418122419122420122421122422122423122424122425122426122427122428122429122430122431122432122433122434122435122436122437122438122439122440122441122442122443122444122445122446122447122448122449122450122451122452122453122454122455122456122457122458122459122460122461122462122463122464122465122466122467122468122469122470122471122472122473122474122475122476122477122478122479122480122481122482122483122484122485122486122487122488122489122490122491122492122493122494122495122496122497122498122499122500122501122502122503122504122505122506122507122508122509122510122511122512122513122514122515122516122517122518122519122520122521122522122523122524122525122526122527122528122529122530122531122532122533122534122535122536122537122538122539122540122541122542122543122544122545122546122547122548122549122550122551122552122553122554122555122556122557122558122559122560122561122562122563122564122565122566122567122568122569122570122571122572122573122574122575122576122577122578122579122580122581122582122583122584122585122586122587122588122589122590122591122592122593122594122595122596122597122598122599122600122601122602122603122604122605122606122607122608122609122610122611122612122613122614122615122616122617122618122619122620122621122622122623122624122625122626122627122628122629122630122631122632122633122634122635122636122637122638122639122640122641122642122643122644122645122646122647122648122649122650122651122652122653122654122655122656122657122658122659122660122661122662122663122664122665122666122667122668122669122670122671122672122673122674122675122676122677122678122679122680122681122682122683122684122685122686122687122688122689122690122691122692122693122694122695122696122697122698122699122700122701122702122703122704122705122706122707122708122709122710122711122712122713122714122715122716122717122718122719122720122721122722122723122724122725122726122727122728122729122730122731122732122733122734122735122736122737122738122739122740122741122742122743122744122745122746122747122748122749122750122751122752122753122754122755122756122757122758122759122760122761122762122763122764122765122766122767122768122769122770122771122772122773122774122775122776122777122778122779122780122781122782122783122784122785122786122787122788122789122790122791122792122793122794122795122796122797122798122799122800122801122802122803122804122805122806122807122808122809122810122811122812122813122814122815122816122817122818122819122820122821122822122823122824122825122826122827122828122829122830122831122832122833122834122835122836122837122838122839122840122841122842122843122844122845122846122847122848122849122850122851122852122853122854122855122856122857122858122859122860122861122862122863122864122865122866122867122868122869122870122871122872122873122874122875122876122877122878122879122880122881122882122883122884122885122886122887122888122889122890122891122892122893122894122895122896122897122898122899122900122901122902122903122904122905122906122907122908122909122910122911122912122913122914122915122916122917122918122919122920122921122922122923122924122925122926122927122928122929122930122931122932122933122934122935122936122937122938122939122940122941122942122943122944122945122946122947122948122949122950122951122952122953122954122955122956122957122958122959122960122961122962122963122964122965122966122967122968122969122970122971122972122973122974122975122976122977122978122979122980122981122982122983122984122985122986122987122988122989122990122991122992122993122994122995122996122997122998122999123000123001123002123003123004123005123006123007123008123009123010123011123012123013123014123015123016123017123018123019123020123021123022123023123024123025123026123027123028123029123030123031123032123033123034123035123036123037123038123039123040123041123042123043123044123045123046123047123048123049123050123051123052123053123054123055123056123057123058123059123060123061123062123063123064123065123066123067123068123069123070123071123072123073123074123075123076123077123078123079123080123081123082123083123084123085123086123087123088123089123090123091123092123093123094123095123096123097123098123099123100123101123102123103123104123105123106123107123108123109123110123111123112123113123114123115123116123117123118123119123120123121123122123123123124123125123126123127123128123129123130123131123132123133123134123135123136123137123138123139123140123141123142123143123144123145123146123147123148123149123150123151123152123153123154123155123156123157123158123159123160123161123162123163123164123165123166123167123168123169123170123171123172123173123174123175123176123177123178123179123180123181123182123183123184123185123186123187123188123189123190123191123192123193123194123195123196123197123198123199123200123201123202123203123204123205123206123207123208123209123210123211123212123213123214123215123216123217123218123219123220123221123222123223123224123225123226123227123228123229123230123231123232123233123234123235123236123237123238123239123240123241123242123243123244123245123246123247123248123249123250123251123252123253123254123255123256123257123258123259123260123261123262123263123264123265123266123267123268123269123270123271123272123273123274123275123276123277123278123279123280123281123282123283123284123285123286123287123288123289123290123291123292123293123294123295123296123297123298123299123300123301123302123303123304123305123306123307123308123309123310123311123312123313123314123315123316123317123318123319123320123321123322123323123324123325123326123327123328123329123330123331123332123333123334123335123336123337123338123339123340123341123342123343123344123345123346123347123348123349123350123351123352123353123354123355123356123357123358123359123360123361123362123363123364123365123366123367123368123369123370123371123372123373123374123375123376123377123378123379123380123381123382123383123384123385123386123387123388123389123390123391123392123393123394123395123396123397123398123399123400123401123402123403123404123405123406123407123408123409123410123411123412123413123414123415123416123417123418123419123420123421123422123423123424123425123426123427123428123429123430123431123432123433123434123435123436123437123438123439123440123441123442123443123444123445123446123447123448123449123450123451123452123453123454123455123456123457123458123459123460123461123462123463123464123465123466123467123468123469123470123471123472123473123474123475123476123477123478123479123480123481123482123483123484123485123486123487123488123489123490123491123492123493123494123495123496123497123498123499123500123501123502123503123504123505123506123507123508123509123510123511123512123513123514123515123516123517123518123519123520123521123522123523123524123525123526123527123528123529123530123531123532123533123534123535123536123537123538123539123540123541123542123543123544123545123546123547123548123549123550123551123552123553123554123555123556123557123558123559123560123561123562123563123564123565123566123567123568123569123570123571123572123573123574123575123576123577123578123579123580123581123582123583123584123585123586123587123588123589123590123591123592123593123594123595123596123597123598123599123600123601123602123603123604123605123606123607123608123609123610123611123612123613123614123615123616123617123618123619123620123621123622123623123624123625123626123627123628123629123630123631123632123633123634123635123636123637123638123639123640123641123642123643123644123645123646123647123648123649123650123651123652123653123654123655123656123657123658123659123660123661123662123663123664123665123666123667123668123669123670123671123672123673123674123675123676123677123678123679123680123681123682123683123684123685123686123687123688123689123690123691123692123693123694123695123696123697123698123699123700123701123702123703123704123705123706123707123708123709123710123711123712123713123714123715123716123717123718123719123720123721123722123723123724123725123726123727123728123729123730123731123732123733123734123735123736123737123738123739123740123741123742123743123744123745123746123747123748123749123750123751123752123753123754123755123756123757123758123759123760123761123762123763123764123765123766123767123768123769123770123771123772123773123774123775123776123777123778123779123780123781123782123783123784123785123786123787123788123789123790123791123792123793123794123795123796123797123798123799123800123801123802123803123804123805123806123807123808123809123810123811123812123813123814123815123816123817123818123819123820123821123822123823123824123825123826123827123828123829123830123831123832123833123834123835123836123837123838123839123840123841123842123843123844123845123846123847123848123849123850123851123852123853123854123855123856123857123858123859123860123861123862123863123864123865123866123867123868123869123870123871123872123873123874123875123876123877123878123879123880123881123882123883123884123885123886123887123888123889123890123891123892123893123894123895123896123897123898123899123900123901123902123903123904123905123906123907123908123909123910123911123912123913123914123915123916123917123918123919123920123921123922123923123924123925123926123927123928123929123930123931123932123933123934123935123936123937123938123939123940123941123942123943123944123945123946123947123948123949123950123951123952123953123954123955123956123957123958123959123960123961123962123963123964123965123966123967123968123969123970123971123972123973123974123975123976123977123978123979123980123981123982123983123984123985123986123987123988123989123990123991123992123993123994123995123996123997123998123999124000124001124002124003124004124005124006124007124008124009124010124011124012124013124014124015124016124017124018124019124020124021124022124023124024124025124026124027124028124029124030124031124032124033124034124035124036124037124038124039124040124041124042124043124044124045124046124047124048124049124050124051124052124053124054124055124056124057124058124059124060124061124062124063124064124065124066124067124068124069124070124071124072124073124074124075124076124077124078124079124080124081124082124083124084124085124086124087124088124089124090124091124092124093124094124095124096124097124098124099124100124101124102124103124104124105124106124107124108124109124110124111124112124113124114124115124116124117124118124119124120124121124122124123124124124125124126124127124128124129124130124131124132124133124134124135124136124137124138124139124140124141124142124143124144124145124146124147124148124149124150124151124152124153124154124155124156124157124158124159124160124161124162124163124164124165124166124167124168124169124170124171124172124173124174124175124176124177124178124179124180124181124182124183124184124185124186124187124188124189124190124191124192124193124194124195124196124197124198124199124200124201124202124203124204124205124206124207124208124209124210124211124212124213124214124215124216124217124218124219124220124221124222124223124224124225124226124227124228124229124230124231124232124233124234124235124236124237124238124239124240124241124242124243124244124245124246124247124248124249124250124251124252124253124254124255124256124257124258124259124260124261124262124263124264124265124266124267124268124269124270124271124272124273124274124275124276124277124278124279124280124281124282124283124284124285124286124287124288124289124290124291124292124293124294124295124296124297124298124299124300124301124302124303124304124305124306124307124308124309124310124311124312124313124314124315124316124317124318124319124320124321124322124323124324124325124326124327124328124329124330124331124332124333124334124335124336124337124338124339124340124341124342124343124344124345124346124347124348124349124350124351124352124353124354124355124356124357124358124359124360124361124362124363124364124365124366124367124368124369124370124371124372124373124374124375124376124377124378124379124380124381124382124383124384124385124386124387124388124389124390124391124392124393124394124395124396124397124398124399124400124401124402124403124404124405124406124407124408124409124410124411124412124413124414124415124416124417124418124419124420124421124422124423124424124425124426124427124428124429124430124431124432124433124434124435124436124437124438124439124440124441124442124443124444124445124446124447124448124449124450124451124452124453124454124455124456124457124458124459124460124461124462124463124464124465124466124467124468124469124470124471124472124473124474124475124476124477124478124479124480124481124482124483124484124485124486124487124488124489124490124491124492124493124494124495124496124497124498124499124500124501124502124503124504124505124506124507124508124509124510124511124512124513124514124515124516124517124518124519124520124521124522124523124524124525124526124527124528124529124530124531124532124533124534124535124536124537124538124539124540124541124542124543124544124545124546124547124548124549124550124551124552124553124554124555124556124557124558124559124560124561124562124563124564124565124566124567124568124569124570124571124572124573124574124575124576124577124578124579124580124581124582124583124584124585124586124587124588124589124590124591124592124593124594124595124596124597124598124599124600124601124602124603124604124605124606124607124608124609124610124611124612124613124614124615124616124617124618124619124620124621124622124623124624124625124626124627124628124629124630124631124632124633124634124635124636124637124638124639124640124641124642124643124644124645124646124647124648124649124650124651124652124653124654124655124656124657124658124659124660124661124662124663124664124665124666124667124668124669124670124671124672124673124674124675124676124677124678124679124680124681124682124683124684124685124686124687124688124689124690124691124692124693124694124695124696124697124698124699124700124701124702124703124704124705124706124707124708124709124710124711124712124713124714124715124716124717124718124719124720124721124722124723124724124725124726124727124728124729124730124731124732124733124734124735124736124737124738124739124740124741124742124743124744124745124746124747124748124749124750124751124752124753124754124755124756124757124758124759124760124761124762124763124764124765124766124767124768124769124770124771124772124773124774124775124776124777124778124779124780124781124782124783124784124785124786124787124788124789124790124791124792124793124794124795124796124797124798124799124800124801124802124803124804124805124806124807124808124809124810124811124812124813124814124815124816124817124818124819124820124821124822124823124824124825124826124827124828124829124830124831124832124833124834124835124836124837124838124839124840124841124842124843124844124845124846124847124848124849124850124851124852124853124854124855124856124857124858124859124860124861124862124863124864124865124866124867124868124869124870124871124872124873124874124875124876124877124878124879124880124881124882124883124884124885124886124887124888124889124890124891124892124893124894124895124896124897124898124899124900124901124902124903124904124905124906124907124908124909124910124911124912124913124914124915124916124917124918124919124920124921124922124923124924124925124926124927124928124929124930124931124932124933124934124935124936124937124938124939124940124941124942124943124944124945124946124947124948124949124950124951124952124953124954124955124956124957124958124959124960124961124962124963124964124965124966124967124968124969124970124971124972124973124974124975124976124977124978124979124980124981124982124983124984124985124986124987124988124989124990124991124992124993124994124995124996124997124998124999125000125001125002125003125004125005125006125007125008125009125010125011125012125013125014125015125016125017125018125019125020125021125022125023125024125025125026125027125028125029125030125031125032125033125034125035125036125037125038125039125040125041125042125043125044125045125046125047125048125049125050125051125052125053125054125055125056125057125058125059125060125061125062125063125064125065125066125067125068125069125070125071125072125073125074125075125076125077125078125079125080125081125082125083125084125085125086125087125088125089125090125091125092125093125094125095125096125097125098125099125100125101125102125103125104125105125106125107125108125109125110125111125112125113125114125115125116125117125118125119125120125121125122125123125124125125125126125127125128125129125130125131125132125133125134125135125136125137125138125139125140125141125142125143125144125145125146125147125148125149125150125151125152125153125154125155125156125157125158125159125160125161125162125163125164125165125166125167125168125169125170125171125172125173125174125175125176125177125178125179125180125181125182125183125184125185125186125187125188125189125190125191125192125193125194125195125196125197125198125199125200125201125202125203125204125205125206125207125208125209125210125211125212125213125214125215125216125217125218125219125220125221125222125223125224125225125226125227125228125229125230125231125232125233125234125235125236125237125238125239125240125241125242125243125244125245125246125247125248125249125250125251125252125253125254125255125256125257125258125259125260125261125262125263125264125265125266125267125268125269125270125271125272125273125274125275125276125277125278125279125280125281125282125283125284125285125286125287125288125289125290125291125292125293125294125295125296125297125298125299125300125301125302125303125304125305125306125307125308125309125310125311125312125313125314125315125316125317125318125319125320125321125322125323125324125325125326125327125328125329125330125331125332125333125334125335125336125337125338125339125340125341125342125343125344125345125346125347125348125349125350125351125352125353125354125355125356125357125358125359125360125361125362125363125364125365125366125367125368125369125370125371125372125373125374125375125376125377125378125379125380125381125382125383125384125385125386125387125388125389125390125391125392125393125394125395125396125397125398125399125400125401125402125403125404125405125406125407125408125409125410125411125412125413125414125415125416125417125418125419125420125421125422125423125424125425125426125427125428125429125430125431125432125433125434125435125436125437125438125439125440125441125442125443125444125445125446125447125448125449125450125451125452125453125454125455125456125457125458125459125460125461125462125463125464125465125466125467125468125469125470125471125472125473125474125475125476125477125478125479125480125481125482125483125484125485125486125487125488125489125490125491125492125493125494125495125496125497125498125499125500125501125502125503125504125505125506125507125508125509125510125511125512125513125514125515125516125517125518125519125520125521125522125523125524125525125526125527125528125529125530125531125532125533125534125535125536125537125538125539125540125541125542125543125544125545125546125547125548125549125550125551125552125553125554125555125556125557125558125559125560125561125562125563125564125565125566125567125568125569125570125571125572125573125574125575125576125577125578125579125580125581125582125583125584125585125586125587125588125589125590125591125592125593125594125595125596125597125598125599125600125601125602125603125604125605125606125607125608125609125610125611125612125613125614125615125616125617125618125619125620125621125622125623125624125625125626125627125628125629125630125631125632125633125634125635125636125637125638125639125640125641125642125643125644125645125646125647125648125649125650125651125652125653125654125655125656125657125658125659125660125661125662125663125664125665125666125667125668125669125670125671125672125673125674125675125676125677125678125679125680125681125682125683125684125685125686125687125688125689125690125691125692125693125694125695125696125697125698125699125700125701125702125703125704125705125706125707125708125709125710125711125712125713125714125715125716125717125718125719125720125721125722125723125724125725125726125727125728125729125730125731125732125733125734125735125736125737125738125739125740125741125742125743125744125745125746125747125748125749125750125751125752125753125754125755125756125757125758125759125760125761125762125763125764125765125766125767125768125769125770125771125772125773125774125775125776125777125778125779125780125781125782125783125784125785125786125787125788125789125790125791125792125793125794125795125796125797125798125799125800125801125802125803125804125805125806125807125808125809125810125811125812125813125814125815125816125817125818125819125820125821125822125823125824125825125826125827125828125829125830125831125832125833125834125835125836125837125838125839125840125841125842125843125844125845125846125847125848125849125850125851125852125853125854125855125856125857125858125859125860125861125862125863125864125865125866125867125868125869125870125871125872125873125874125875125876125877125878125879125880125881125882125883125884125885125886125887125888125889125890125891125892125893125894125895125896125897125898125899125900125901125902125903125904125905125906125907125908125909125910125911125912125913125914125915125916125917125918125919125920125921125922125923125924125925125926125927125928125929125930125931125932125933125934125935125936125937125938125939125940125941125942125943125944125945125946125947125948125949125950125951125952125953125954125955125956125957125958125959125960125961125962125963125964125965125966125967125968125969125970125971125972125973125974125975125976125977125978125979125980125981125982125983125984125985125986125987125988125989125990125991125992125993125994125995125996125997125998125999126000126001126002126003126004126005126006126007126008126009126010126011126012126013126014126015126016126017126018126019126020126021126022126023126024126025126026126027126028126029126030126031126032126033126034126035126036126037126038126039126040126041126042126043126044126045126046126047126048126049126050126051126052126053126054126055126056126057126058126059126060126061126062126063126064126065126066126067126068126069126070126071126072126073126074126075126076126077126078126079126080126081126082126083126084126085126086126087126088126089126090126091126092126093126094126095126096126097126098126099126100126101126102126103126104126105126106126107126108126109126110126111126112126113126114126115126116126117126118126119126120126121126122126123126124126125126126126127126128126129126130126131126132126133126134126135126136126137126138126139126140126141126142126143126144126145126146126147126148126149126150126151126152126153126154126155126156126157126158126159126160126161126162126163126164126165126166126167126168126169126170126171126172126173126174126175126176126177126178126179126180126181126182126183126184126185126186126187126188126189126190126191126192126193126194126195126196126197126198126199126200126201126202126203126204126205126206126207126208126209126210126211126212126213126214126215126216126217126218126219126220126221126222126223126224126225126226126227126228126229126230126231126232126233126234126235126236126237126238126239126240126241126242126243126244126245126246126247126248126249126250126251126252126253126254126255126256126257126258126259126260126261126262126263126264126265126266126267126268126269126270126271126272126273126274126275126276126277126278126279126280126281126282126283126284126285126286126287126288126289126290126291126292126293126294126295126296126297126298126299126300126301126302126303126304126305126306126307126308126309126310126311126312126313126314126315126316126317126318126319126320126321126322126323126324126325126326126327126328126329126330126331126332126333126334126335126336126337126338126339126340126341126342126343126344126345126346126347126348126349126350126351126352126353126354126355126356126357126358126359126360126361126362126363126364126365126366126367126368126369126370126371126372126373126374126375126376126377126378126379126380126381126382126383126384126385126386126387126388126389126390126391126392126393126394126395126396126397126398126399126400126401126402126403126404126405126406126407126408126409126410126411126412126413126414126415126416126417126418126419126420126421126422126423126424126425126426126427126428126429126430126431126432126433126434126435126436126437126438126439126440126441126442126443126444126445126446126447126448126449126450126451126452126453126454126455126456126457126458126459126460126461126462126463126464126465126466126467126468126469126470126471126472126473126474126475126476126477126478126479126480126481126482126483126484126485126486126487126488126489126490126491126492126493126494126495126496126497126498126499126500126501126502126503126504126505126506126507126508126509126510126511126512126513126514126515126516126517126518126519126520126521126522126523126524126525126526126527126528126529126530126531126532126533126534126535126536126537126538126539126540126541126542126543126544126545126546126547126548126549126550126551126552126553126554126555126556126557126558126559126560126561126562126563126564126565126566126567126568126569126570126571126572126573126574126575126576126577126578126579126580126581126582126583126584126585126586126587126588126589126590126591126592126593126594126595126596126597126598126599126600126601126602126603126604126605126606126607126608126609126610126611126612126613126614126615126616126617126618126619126620126621126622126623126624126625126626126627126628126629126630126631126632126633126634126635126636126637126638126639126640126641126642126643126644126645126646126647126648126649126650126651126652126653126654126655126656126657126658126659126660126661126662126663126664126665126666126667126668126669126670126671126672126673126674126675126676126677126678126679126680126681126682126683126684126685126686126687126688126689126690126691126692126693126694126695126696126697126698126699126700126701126702126703126704126705126706126707126708126709126710126711126712126713126714126715126716126717126718126719126720126721126722126723126724126725126726126727126728126729126730126731126732126733126734126735126736126737126738126739126740126741126742126743126744126745126746126747126748126749126750126751126752126753126754126755126756126757126758126759126760126761126762126763126764126765126766126767126768126769126770126771126772126773126774126775126776126777126778126779126780126781126782126783126784126785126786126787126788126789126790126791126792126793126794126795126796126797126798126799126800126801126802126803126804126805126806126807126808126809126810126811126812126813126814126815126816126817126818126819126820126821126822126823126824126825126826126827126828126829126830126831126832126833126834126835126836126837126838126839126840126841126842126843126844126845126846126847126848126849126850126851126852126853126854126855126856126857126858126859126860126861126862126863126864126865126866126867126868126869126870126871126872126873126874126875126876126877126878126879126880126881126882126883126884126885126886126887126888126889126890126891126892126893126894126895126896126897126898126899126900126901126902126903126904126905126906126907126908126909126910126911126912126913126914126915126916126917126918126919126920126921126922126923126924126925126926126927126928126929126930126931126932126933126934126935126936126937126938126939126940126941126942126943126944126945126946126947126948126949126950126951126952126953126954126955126956126957126958126959126960126961126962126963126964126965126966126967126968126969126970126971126972126973126974126975126976126977126978126979126980126981126982126983126984126985126986126987126988126989126990126991126992126993126994126995126996126997126998126999127000127001127002127003127004127005127006127007127008127009127010127011127012127013127014127015127016127017127018127019127020127021127022127023127024127025127026127027127028127029127030127031127032127033127034127035127036127037127038127039127040127041127042127043127044127045127046127047127048127049127050127051127052127053127054127055127056127057127058127059127060127061127062127063127064127065127066127067127068127069127070127071127072127073127074127075127076127077127078127079127080127081127082127083127084127085127086127087127088127089127090127091127092127093127094127095127096127097127098127099127100127101127102127103127104127105127106127107127108127109127110127111127112127113127114127115127116127117127118127119127120127121127122127123127124127125127126127127127128127129127130127131127132127133127134127135127136127137127138127139127140127141127142127143127144127145127146127147127148127149127150127151127152127153127154127155127156127157127158127159127160127161127162127163127164127165127166127167127168127169127170127171127172127173127174127175127176127177127178127179127180127181127182127183127184127185127186127187127188127189127190127191127192127193127194127195127196127197127198127199127200127201127202127203127204127205127206127207127208127209127210127211127212127213127214127215127216127217127218127219127220127221127222127223127224127225127226127227127228127229127230127231127232127233127234127235127236127237127238127239127240127241127242127243127244127245127246127247127248127249127250127251127252127253127254127255127256127257127258127259127260127261127262127263127264127265127266127267127268127269127270127271127272127273127274127275127276127277127278127279127280127281127282127283127284127285127286127287127288127289127290127291127292127293127294127295127296127297127298127299127300127301127302127303127304127305127306127307127308127309127310127311127312127313127314127315127316127317127318127319127320127321127322127323127324127325127326127327127328127329127330127331127332127333127334127335127336127337127338127339127340127341127342127343127344127345127346127347127348127349127350127351127352127353127354127355127356127357127358127359127360127361127362127363127364127365127366127367127368127369127370127371127372127373127374127375127376127377127378127379127380127381127382127383127384127385127386127387127388127389127390127391127392127393127394127395127396127397127398127399127400127401127402127403127404127405127406127407127408127409127410127411127412127413127414127415127416127417127418127419127420127421127422127423127424127425127426127427127428127429127430127431127432127433127434127435127436127437127438127439127440127441127442127443127444127445127446127447127448127449127450127451127452127453127454127455127456127457127458127459127460127461127462127463127464127465127466127467127468127469127470127471127472127473127474127475127476127477127478127479127480127481127482127483127484127485127486127487127488127489127490127491127492127493127494127495127496127497127498127499127500127501127502127503127504127505127506127507127508127509127510127511127512127513127514127515127516127517127518127519127520127521127522127523127524127525127526127527127528127529127530127531127532127533127534127535127536127537127538127539127540127541127542127543127544127545127546127547127548127549127550127551127552127553127554127555127556127557127558127559127560127561127562127563127564127565127566127567127568127569127570127571127572127573127574127575127576127577127578127579127580127581127582127583127584127585127586127587127588127589127590127591127592127593127594127595127596127597127598127599127600127601127602127603127604127605127606127607127608127609127610127611127612127613127614127615127616127617127618127619127620127621127622127623127624127625127626127627127628127629127630127631127632127633127634127635127636127637127638127639127640127641127642127643127644127645127646127647127648127649127650127651127652127653127654127655127656127657127658127659127660127661127662127663127664127665127666127667127668127669127670127671127672127673127674127675127676127677127678127679127680127681127682127683127684127685127686127687127688127689127690127691127692127693127694127695127696127697127698127699127700127701127702127703127704127705127706127707127708127709127710127711127712127713127714127715127716127717127718127719127720127721127722127723127724127725127726127727127728127729127730127731127732127733127734127735127736127737127738127739127740127741127742127743127744127745127746127747127748127749127750127751127752127753127754127755127756127757127758127759127760127761127762127763127764127765127766127767127768127769127770127771127772127773127774127775127776127777127778127779127780127781127782127783127784127785127786127787127788127789127790127791127792127793127794127795127796127797127798127799127800127801127802127803127804127805127806127807127808127809127810127811127812127813127814127815127816127817127818127819127820127821127822127823127824127825127826127827127828127829127830127831127832127833127834127835127836127837127838127839127840127841127842127843127844127845127846127847127848127849127850127851127852127853127854127855127856127857127858127859127860127861127862127863127864127865127866127867127868127869127870127871127872127873127874127875127876127877127878127879127880127881127882127883127884127885127886127887127888127889127890127891127892127893127894127895127896127897127898127899127900127901127902127903127904127905127906127907127908127909127910127911127912127913127914127915127916127917127918127919127920127921127922127923127924127925127926127927127928127929127930127931127932127933127934127935127936127937127938127939127940127941127942127943127944127945127946127947127948127949127950127951127952127953127954127955127956127957127958127959127960127961127962127963127964127965127966127967127968127969127970127971127972127973127974127975127976127977127978127979127980127981127982127983127984127985127986127987127988127989127990127991127992127993127994127995127996127997127998127999128000128001128002128003128004128005128006128007128008128009128010128011128012128013128014128015128016128017128018128019128020128021128022128023128024128025128026128027128028128029128030128031128032128033128034128035128036128037128038128039128040128041128042128043128044128045128046128047128048128049128050128051128052128053128054128055128056128057128058128059128060128061128062128063128064128065128066128067128068128069128070128071128072128073128074128075128076128077128078128079128080128081128082128083128084128085128086128087128088128089128090128091128092128093128094128095128096128097128098128099128100128101128102128103128104128105128106128107128108128109128110128111128112128113128114128115128116128117128118128119128120128121128122128123128124128125128126128127128128128129128130128131128132128133128134128135128136128137128138128139128140128141128142128143128144128145128146128147128148128149128150128151128152128153128154128155128156128157128158128159128160128161128162128163128164128165128166128167128168128169128170128171128172128173128174128175128176128177128178128179128180128181128182128183128184128185128186128187128188128189128190128191128192128193128194128195128196128197128198128199128200128201128202128203128204128205128206128207128208128209128210128211128212128213128214128215128216128217128218128219128220128221128222128223128224128225128226128227128228128229128230128231128232128233128234128235128236128237128238128239128240128241128242128243128244128245128246128247128248128249128250128251128252128253128254128255128256128257128258128259128260128261128262128263128264128265128266128267128268128269128270128271128272128273128274128275128276128277128278128279128280128281128282128283128284128285128286128287128288128289128290128291128292128293128294128295128296128297128298128299128300128301128302128303128304128305128306128307128308128309128310128311128312128313128314128315128316128317128318128319128320128321128322128323128324128325128326128327128328128329128330128331128332128333128334128335128336128337128338128339128340128341128342128343128344128345128346128347128348128349128350128351128352128353128354128355128356128357128358128359128360128361128362128363128364128365128366128367128368128369128370128371128372128373128374128375128376128377128378128379128380128381128382128383128384128385128386128387128388128389128390128391128392128393128394128395128396128397128398128399128400128401128402128403128404128405128406128407128408128409128410128411128412128413128414128415128416128417128418128419128420128421128422128423128424128425128426128427128428128429128430128431128432128433128434128435128436128437128438128439128440128441128442128443128444128445128446128447128448128449128450128451128452128453128454128455128456128457128458128459128460128461128462128463128464128465128466128467128468128469128470128471128472128473128474128475128476128477128478128479128480128481128482128483128484128485128486128487128488128489128490128491128492128493128494128495128496128497128498128499128500128501128502128503128504128505128506128507128508128509128510128511128512128513128514128515128516128517128518128519128520128521128522128523128524128525128526128527128528128529128530128531128532128533128534128535128536128537128538128539128540128541128542128543128544128545128546128547128548128549128550128551128552128553128554128555128556128557128558128559128560128561128562128563128564128565128566128567128568128569128570128571128572128573128574128575128576128577128578128579128580128581128582128583128584128585128586128587128588128589128590128591128592128593128594128595128596128597128598128599128600128601128602128603128604128605128606128607128608128609128610128611128612128613128614128615128616128617128618128619128620128621128622128623128624128625128626128627128628128629128630128631128632128633128634128635128636128637128638128639128640128641128642128643128644128645128646128647128648128649128650128651128652128653128654128655128656128657128658128659128660128661128662128663128664128665128666128667128668128669128670128671128672128673128674128675128676128677128678128679128680128681128682128683128684128685128686128687128688128689128690128691128692128693128694128695128696128697128698128699128700128701128702128703128704128705128706128707128708128709128710128711128712128713128714128715128716128717128718128719128720128721128722128723128724128725128726128727128728128729128730128731128732128733128734128735128736128737128738128739128740128741128742128743128744128745128746128747128748128749128750128751128752128753128754128755128756128757128758128759128760128761128762128763128764128765128766128767128768128769128770128771128772128773128774128775128776128777128778128779128780128781128782128783128784128785128786128787128788128789128790128791128792128793128794128795128796128797128798128799128800128801128802128803128804128805128806128807128808128809128810128811128812128813128814128815128816128817128818128819128820128821128822128823128824128825128826128827128828128829128830128831128832128833128834128835128836128837128838128839128840128841128842128843128844128845128846128847128848128849128850128851128852128853128854128855128856128857128858128859128860128861128862128863128864128865128866128867128868128869128870128871128872128873128874128875128876128877128878128879128880128881128882128883128884128885128886128887128888128889128890128891128892128893128894128895128896128897128898128899128900128901128902128903128904128905128906128907128908128909128910128911128912128913128914128915128916128917128918128919128920128921128922128923128924128925128926128927128928128929128930128931128932128933128934128935128936128937128938128939128940128941128942128943128944128945128946128947128948128949128950128951128952128953128954128955128956128957128958128959128960128961128962128963128964128965128966128967128968128969128970128971128972128973128974128975128976128977128978128979128980128981128982128983128984128985128986128987128988128989128990128991128992128993128994128995128996128997128998128999129000129001129002129003129004129005129006129007129008129009129010129011129012129013129014129015129016129017129018129019129020129021129022129023129024129025129026129027129028129029129030129031129032129033129034129035129036129037129038129039129040129041129042129043129044129045129046129047129048129049129050129051129052129053129054129055129056129057129058129059129060129061129062129063129064129065129066129067129068129069129070129071129072129073129074129075129076129077129078129079129080129081129082129083129084129085129086129087129088129089129090129091129092129093129094129095129096129097129098129099129100129101129102129103129104129105129106129107129108129109129110129111129112129113129114129115129116129117129118129119129120129121129122129123129124129125129126129127129128129129129130129131129132129133129134129135129136129137129138129139129140129141129142129143129144129145129146129147129148129149129150129151129152129153129154129155129156129157129158129159129160129161129162129163129164129165129166129167129168129169129170129171129172129173129174129175129176129177129178129179129180129181129182129183129184129185129186129187129188129189129190129191129192129193129194129195129196129197129198129199129200129201129202129203129204129205129206129207129208129209129210129211129212129213129214129215129216129217129218129219129220129221129222129223129224129225129226129227129228129229129230129231129232129233129234129235129236129237129238129239129240129241129242129243129244129245129246129247129248129249129250129251129252129253129254129255129256129257129258129259129260129261129262129263129264129265129266129267129268129269129270129271129272129273129274129275129276129277129278129279129280129281129282129283129284129285129286129287129288129289129290129291129292129293129294129295129296129297129298129299129300129301129302129303129304129305129306129307129308129309129310129311129312129313129314129315129316129317129318129319129320129321129322129323129324129325129326129327129328129329129330129331129332129333129334129335129336129337129338129339129340129341129342129343129344129345129346129347129348129349129350129351129352129353129354129355129356129357129358129359129360129361129362129363129364129365129366129367129368129369129370129371129372129373129374129375129376129377129378129379129380129381129382129383129384129385129386129387129388129389129390129391129392129393129394129395129396129397129398129399129400129401129402129403129404129405129406129407129408129409129410129411129412129413129414129415129416129417129418129419129420129421129422129423129424129425129426129427129428129429129430129431129432129433129434129435129436129437129438129439129440129441129442129443129444129445129446129447129448129449129450129451129452129453129454129455129456129457129458129459129460129461129462129463129464129465129466129467129468129469129470129471129472129473129474129475129476129477129478129479129480129481129482129483129484129485129486129487129488129489129490129491129492129493129494129495129496129497129498129499129500129501129502129503129504129505129506129507129508129509129510129511129512129513129514129515129516129517129518129519129520129521129522129523129524129525129526129527129528129529129530129531129532129533129534129535129536129537129538129539129540129541129542129543129544129545129546129547129548129549129550129551129552129553129554129555129556129557129558129559129560129561129562129563129564129565129566129567129568129569129570129571129572129573129574129575129576129577129578129579129580129581129582129583129584129585129586129587129588129589129590129591129592129593129594129595129596129597129598129599129600129601129602129603129604129605129606129607129608129609129610129611129612129613129614129615129616129617129618129619129620129621129622129623129624129625129626129627129628129629129630129631129632129633129634129635129636129637129638129639129640129641129642129643129644129645129646129647129648129649129650129651129652129653129654129655129656129657129658129659129660129661129662129663129664129665129666129667129668129669129670129671129672129673129674129675129676129677129678129679129680129681129682129683129684129685129686129687129688129689129690129691129692129693129694129695129696129697129698129699129700129701129702129703129704129705129706129707129708129709129710129711129712129713129714129715129716129717129718129719129720129721129722129723129724129725129726129727129728129729129730129731129732129733129734129735129736129737129738129739129740129741129742129743129744129745129746129747129748129749129750129751129752129753129754129755129756129757129758129759129760129761129762129763129764129765129766129767129768129769129770129771129772129773129774129775129776129777129778129779129780129781129782129783129784129785129786129787129788129789129790129791129792129793129794129795129796129797129798129799129800129801129802129803129804129805129806129807129808129809129810129811129812129813129814129815129816129817129818129819129820129821129822129823129824129825129826129827129828129829129830129831129832129833129834129835129836129837129838129839129840129841129842129843129844129845129846129847129848129849129850129851129852129853129854129855129856129857129858129859129860129861129862129863129864129865129866129867129868129869129870129871129872129873129874129875129876129877129878129879129880129881129882129883129884129885129886129887129888129889129890129891129892129893129894129895129896129897129898129899129900129901129902129903129904129905129906129907129908129909129910129911129912129913129914129915129916129917129918129919129920129921129922129923129924129925129926129927129928129929129930129931129932129933129934129935129936129937129938129939129940129941129942129943129944129945129946129947129948129949129950129951129952129953129954129955129956129957129958129959129960129961129962129963129964129965129966129967129968129969129970129971129972129973129974129975129976129977129978129979129980129981129982129983129984129985129986129987129988129989129990129991129992129993129994129995129996129997129998129999130000130001130002130003130004130005130006130007130008130009130010130011130012130013130014130015130016130017130018130019130020130021130022130023130024130025130026130027130028130029130030130031130032130033130034130035130036130037130038130039130040130041130042130043130044130045130046130047130048130049130050130051130052130053130054130055130056130057130058130059130060130061130062130063130064130065130066130067130068130069130070130071130072130073130074130075130076130077130078130079130080130081130082130083130084130085130086130087130088130089130090130091130092130093130094130095130096130097130098130099130100130101130102130103130104130105130106130107130108130109130110130111130112130113130114130115130116130117130118130119130120130121130122130123130124130125130126130127130128130129130130130131130132130133130134130135130136130137130138130139130140130141130142130143130144130145130146130147130148130149130150130151130152130153130154130155130156130157130158130159130160130161130162130163130164130165130166130167130168130169130170130171130172130173130174130175130176130177130178130179130180130181130182130183130184130185130186130187130188130189130190130191130192130193130194130195130196130197130198130199130200130201130202130203130204130205130206130207130208130209130210130211130212130213130214130215130216130217130218130219130220130221130222130223130224130225130226130227130228130229130230130231130232130233130234130235130236130237130238130239130240130241130242130243130244130245130246130247130248130249130250130251130252130253130254130255130256130257130258130259130260130261130262130263130264130265130266130267130268130269130270130271130272130273130274130275130276130277130278130279130280130281130282130283130284130285130286130287130288130289130290130291130292130293130294130295130296130297130298130299130300130301130302130303130304130305130306130307130308130309130310130311130312130313130314130315130316130317130318130319130320130321130322130323130324130325130326130327130328130329130330130331130332130333130334130335130336130337130338130339130340130341130342130343130344130345130346130347130348130349130350130351130352130353130354130355130356130357130358130359130360130361130362130363130364130365130366130367130368130369130370130371130372130373130374130375130376130377130378130379130380130381130382130383130384130385130386130387130388130389130390130391130392130393130394130395130396130397130398130399130400130401130402130403130404130405130406130407130408130409130410130411130412130413130414130415130416130417130418130419130420130421130422130423130424130425130426130427130428130429130430130431130432130433130434130435130436130437130438130439130440130441130442130443130444130445130446130447130448130449130450130451130452130453130454130455130456130457130458130459130460130461130462130463130464130465130466130467130468130469130470130471130472130473130474130475130476130477130478130479130480130481130482130483130484130485130486130487130488130489130490130491130492130493130494130495130496130497130498130499130500130501130502130503130504130505130506130507130508130509130510130511130512130513130514130515130516130517130518130519130520130521130522130523130524130525130526130527130528130529130530130531130532130533130534130535130536130537130538130539130540130541130542130543130544130545130546130547130548130549130550130551130552130553130554130555130556130557130558130559130560130561130562130563130564130565130566130567130568130569130570130571130572130573130574130575130576130577130578130579130580130581130582130583130584130585130586130587130588130589130590130591130592130593130594130595130596130597130598130599130600130601130602130603130604130605130606130607130608130609130610130611130612130613130614130615130616130617130618130619130620130621130622130623130624130625130626130627130628130629130630130631130632130633130634130635130636130637130638130639130640130641130642130643130644130645130646130647130648130649130650130651130652130653130654130655130656130657130658130659130660130661130662130663130664130665130666130667130668
  1. /*! @preserve
  2. * luckysheet
  3. * version: 2.1.13
  4. * https://github.com/mengshukeji/Luckysheet
  5. */
  6. var luckysheet = (() => {
  7. var __create = Object.create;
  8. var __defProp = Object.defineProperty;
  9. var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
  10. var __getOwnPropNames = Object.getOwnPropertyNames;
  11. var __getOwnPropSymbols = Object.getOwnPropertySymbols;
  12. var __getProtoOf = Object.getPrototypeOf;
  13. var __hasOwnProp = Object.prototype.hasOwnProperty;
  14. var __propIsEnum = Object.prototype.propertyIsEnumerable;
  15. var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, {enumerable: true, configurable: true, writable: true, value}) : obj[key] = value;
  16. var __spreadValues = (a, b) => {
  17. for (var prop in b || (b = {}))
  18. if (__hasOwnProp.call(b, prop))
  19. __defNormalProp(a, prop, b[prop]);
  20. if (__getOwnPropSymbols)
  21. for (var prop of __getOwnPropSymbols(b)) {
  22. if (__propIsEnum.call(b, prop))
  23. __defNormalProp(a, prop, b[prop]);
  24. }
  25. return a;
  26. };
  27. var __markAsModule = (target) => __defProp(target, "__esModule", {value: true});
  28. var __esm = (fn, res) => function __init() {
  29. return fn && (res = (0, fn[Object.keys(fn)[0]])(fn = 0)), res;
  30. };
  31. var __commonJS = (cb, mod) => function __require() {
  32. return mod || (0, cb[Object.keys(cb)[0]])((mod = {exports: {}}).exports, mod), mod.exports;
  33. };
  34. var __export = (target, all2) => {
  35. for (var name2 in all2)
  36. __defProp(target, name2, {get: all2[name2], enumerable: true});
  37. };
  38. var __reExport = (target, module, desc) => {
  39. if (module && typeof module === "object" || typeof module === "function") {
  40. for (let key of __getOwnPropNames(module))
  41. if (!__hasOwnProp.call(target, key) && key !== "default")
  42. __defProp(target, key, {get: () => module[key], enumerable: !(desc = __getOwnPropDesc(module, key)) || desc.enumerable});
  43. }
  44. return target;
  45. };
  46. var __toModule = (module) => {
  47. return __reExport(__markAsModule(__defProp(module != null ? __create(__getProtoOf(module)) : {}, "default", module && module.__esModule && "default" in module ? {get: () => module.default, enumerable: true} : {value: module, enumerable: true})), module);
  48. };
  49. // src/controllers/luckysheetConfigsetting.js
  50. var luckysheetConfigsetting, luckysheetConfigsetting_default;
  51. var init_luckysheetConfigsetting = __esm({
  52. "src/controllers/luckysheetConfigsetting.js"() {
  53. luckysheetConfigsetting = {
  54. autoFormatw: false,
  55. accuracy: void 0,
  56. total: 0,
  57. allowCopy: true,
  58. showtoolbar: true,
  59. showinfobar: true,
  60. showsheetbar: true,
  61. showstatisticBar: true,
  62. pointEdit: false,
  63. pointEditUpdate: null,
  64. pointEditZoom: 1,
  65. userInfo: false,
  66. userMenuItem: [],
  67. myFolderUrl: null,
  68. functionButton: null,
  69. showConfigWindowResize: true,
  70. enableAddRow: true,
  71. addRowCount: 100,
  72. enableAddBackTop: true,
  73. enablePage: true,
  74. pageInfo: null,
  75. editMode: false,
  76. beforeCreateDom: null,
  77. workbookCreateBefore: null,
  78. workbookCreateAfter: null,
  79. remoteFunction: null,
  80. fireMousedown: null,
  81. plugins: [],
  82. forceCalculation: false,
  83. defaultColWidth: 73,
  84. defaultRowHeight: 19,
  85. defaultTextColor: "#000",
  86. defaultCellColor: "#fff"
  87. };
  88. luckysheetConfigsetting_default = luckysheetConfigsetting;
  89. }
  90. });
  91. // src/store/index.js
  92. var Store, store_default;
  93. var init_store = __esm({
  94. "src/store/index.js"() {
  95. Store = {
  96. container: null,
  97. loadingObj: {},
  98. luckysheetfile: null,
  99. defaultcolumnNum: 60,
  100. defaultrowNum: 84,
  101. fullscreenmode: true,
  102. devicePixelRatio: 1,
  103. currentSheetIndex: 0,
  104. calculateSheetIndex: 0,
  105. flowdata: [],
  106. config: {},
  107. visibledatarow: [],
  108. visibledatacolumn: [],
  109. ch_width: 0,
  110. rh_height: 0,
  111. cellmainWidth: 0,
  112. cellmainHeight: 0,
  113. toolbarHeight: 0,
  114. infobarHeight: 0,
  115. calculatebarHeight: 0,
  116. rowHeaderWidth: 46,
  117. columnHeaderHeight: 20,
  118. cellMainSrollBarSize: 12,
  119. sheetBarHeight: 31,
  120. statisticBarHeight: 23,
  121. luckysheetTableContentHW: [0, 0],
  122. defaultcollen: 73,
  123. defaultrowlen: 19,
  124. jfcountfuncTimeout: null,
  125. jfautoscrollTimeout: null,
  126. luckysheet_select_status: false,
  127. luckysheet_select_save: [{"row": [0, 0], "column": [0, 0]}],
  128. luckysheet_selection_range: [],
  129. luckysheet_copy_save: {},
  130. luckysheet_paste_iscut: false,
  131. filterchage: true,
  132. luckysheet_filter_save: {"row": [], "column": []},
  133. luckysheet_sheet_move_status: false,
  134. luckysheet_sheet_move_data: [],
  135. luckysheet_scroll_status: false,
  136. luckysheetisrefreshdetail: true,
  137. luckysheetisrefreshtheme: true,
  138. luckysheetcurrentisPivotTable: false,
  139. luckysheet_rows_selected_status: false,
  140. luckysheet_cols_selected_status: false,
  141. luckysheet_rows_change_size: false,
  142. luckysheet_rows_change_size_start: [],
  143. luckysheet_cols_change_size: false,
  144. luckysheet_cols_change_size_start: [],
  145. luckysheet_cols_dbclick_timeout: null,
  146. luckysheet_cols_dbclick_times: 0,
  147. luckysheetCellUpdate: [],
  148. luckysheet_shiftpositon: null,
  149. iscopyself: true,
  150. orderbyindex: 0,
  151. luckysheet_model_move_state: false,
  152. luckysheet_model_xy: [0, 0],
  153. luckysheet_model_move_obj: null,
  154. luckysheet_cell_selected_move: false,
  155. luckysheet_cell_selected_move_index: [],
  156. luckysheet_cell_selected_extend: false,
  157. luckysheet_cell_selected_extend_index: [],
  158. luckysheet_cell_selected_extend_time: null,
  159. clearjfundo: true,
  160. jfundo: [],
  161. jfredo: [],
  162. lang: "en",
  163. createChart: "",
  164. highlightChart: "",
  165. zIndex: 15,
  166. chartparam: {
  167. luckysheetCurrentChart: null,
  168. luckysheetCurrentChartActive: false,
  169. luckysheetCurrentChartMove: null,
  170. luckysheetCurrentChartMoveTimeout: null,
  171. luckysheetCurrentChartMoveObj: null,
  172. luckysheetCurrentChartMoveXy: null,
  173. luckysheetCurrentChartMoveWinH: null,
  174. luckysheetCurrentChartMoveWinW: null,
  175. luckysheetCurrentChartResize: null,
  176. luckysheetCurrentChartResizeObj: null,
  177. luckysheetCurrentChartResizeXy: null,
  178. luckysheetCurrentChartResizeWinH: null,
  179. luckysheetCurrentChartResizeWinW: null,
  180. luckysheetInsertChartTosheetChange: true,
  181. luckysheetCurrentChartZIndexRank: 100,
  182. luckysheet_chart_redo_click: false,
  183. luckysheetCurrentChartMaxState: false,
  184. jfrefreshchartall: "",
  185. changeChartCellData: "",
  186. renderChart: "",
  187. getChartJson: ""
  188. },
  189. functionList: null,
  190. luckysheet_function: null,
  191. chart_selection: {},
  192. currentChart: "",
  193. scrollRefreshSwitch: true,
  194. measureTextCache: {},
  195. measureTextCellInfoCache: {},
  196. measureTextCacheTimeOut: null,
  197. cellOverflowMapCache: {},
  198. zoomRatio: 1,
  199. visibledatacolumn_unique: null,
  200. visibledatarow_unique: null,
  201. showGridLines: true,
  202. toobarObject: {},
  203. inlineStringEditCache: null,
  204. inlineStringEditRange: null,
  205. fontList: [],
  206. defaultFontSize: 10,
  207. currentSheetView: "viewNormal",
  208. cooperativeEdit: {
  209. usernameTimeout: {},
  210. changeCollaborationSize: [],
  211. allDataColumnlen: [],
  212. merge_range: {},
  213. checkoutData: []
  214. },
  215. asyncLoad: ["core"],
  216. defaultCell: {
  217. bg: null,
  218. bl: 0,
  219. ct: {fa: "General", t: "n"},
  220. fc: "rgb(51, 51, 51)",
  221. ff: 0,
  222. fs: 11,
  223. ht: 1,
  224. it: 0,
  225. vt: 1,
  226. m: "",
  227. v: ""
  228. }
  229. };
  230. store_default = Store;
  231. }
  232. });
  233. // src/global/validate.js
  234. function isRealNull(val) {
  235. if (val == null || val.toString().replace(/\s/g, "") == "") {
  236. return true;
  237. } else {
  238. return false;
  239. }
  240. }
  241. function isRealNum(val) {
  242. if (val == null || val.toString().replace(/\s/g, "") === "") {
  243. return false;
  244. }
  245. if (typeof val == "boolean") {
  246. return false;
  247. }
  248. if (!isNaN(val)) {
  249. return true;
  250. } else {
  251. return false;
  252. }
  253. }
  254. function valueIsError(value) {
  255. let isError = false;
  256. for (let x in error) {
  257. if (value == error[x]) {
  258. isError = true;
  259. break;
  260. }
  261. }
  262. return isError;
  263. }
  264. function hasChinaword(s) {
  265. let patrn = /[\u4E00-\u9FA5]|[\uFE30-\uFFA0]/gi;
  266. if (!patrn.exec(s)) {
  267. return false;
  268. } else {
  269. return true;
  270. }
  271. }
  272. function isEditMode() {
  273. if (luckysheetConfigsetting_default.editMode) {
  274. return true;
  275. } else {
  276. return false;
  277. }
  278. }
  279. function checkIsAllowEdit() {
  280. if (store_default.allowEdit) {
  281. return true;
  282. } else {
  283. return false;
  284. }
  285. }
  286. function hasPartMC(cfg, r1, r2, c1, c2) {
  287. let hasPartMC2 = false;
  288. for (let x in store_default.config["merge"]) {
  289. let mc = cfg["merge"][x];
  290. if (r1 < mc.r) {
  291. if (r2 >= mc.r && r2 < mc.r + mc.rs - 1) {
  292. if (c1 >= mc.c && c1 <= mc.c + mc.cs - 1) {
  293. hasPartMC2 = true;
  294. break;
  295. } else if (c2 >= mc.c && c2 <= mc.c + mc.cs - 1) {
  296. hasPartMC2 = true;
  297. break;
  298. } else if (c1 < mc.c && c2 > mc.c + mc.cs - 1) {
  299. hasPartMC2 = true;
  300. break;
  301. }
  302. } else if (r2 >= mc.r && r2 == mc.r + mc.rs - 1) {
  303. if (c1 > mc.c && c1 < mc.c + mc.cs - 1) {
  304. hasPartMC2 = true;
  305. break;
  306. } else if (c2 > mc.c && c2 < mc.c + mc.cs - 1) {
  307. hasPartMC2 = true;
  308. break;
  309. } else if (c1 == mc.c && c2 < mc.c + mc.cs - 1) {
  310. hasPartMC2 = true;
  311. break;
  312. } else if (c1 > mc.c && c2 == mc.c + mc.cs - 1) {
  313. hasPartMC2 = true;
  314. break;
  315. }
  316. } else if (r2 > mc.r + mc.rs - 1) {
  317. if (c1 > mc.c && c1 <= mc.c + mc.cs - 1) {
  318. hasPartMC2 = true;
  319. break;
  320. } else if (c2 >= mc.c && c2 < mc.c + mc.cs - 1) {
  321. hasPartMC2 = true;
  322. break;
  323. } else if (c1 == mc.c && c2 < mc.c + mc.cs - 1) {
  324. hasPartMC2 = true;
  325. break;
  326. } else if (c1 > mc.c && c2 == mc.c + mc.cs - 1) {
  327. hasPartMC2 = true;
  328. break;
  329. }
  330. }
  331. } else if (r1 == mc.r) {
  332. if (r2 < mc.r + mc.rs - 1) {
  333. if (c1 >= mc.c && c1 <= mc.c + mc.cs - 1) {
  334. hasPartMC2 = true;
  335. break;
  336. } else if (c2 >= mc.c && c2 <= mc.c + mc.cs - 1) {
  337. hasPartMC2 = true;
  338. break;
  339. } else if (c1 < mc.c && c2 > mc.c + mc.cs - 1) {
  340. hasPartMC2 = true;
  341. break;
  342. }
  343. } else if (r2 >= mc.r + mc.rs - 1) {
  344. if (c1 > mc.c && c1 <= mc.c + mc.cs - 1) {
  345. hasPartMC2 = true;
  346. break;
  347. } else if (c2 >= mc.c && c2 < mc.c + mc.cs - 1) {
  348. hasPartMC2 = true;
  349. break;
  350. } else if (c1 == mc.c && c2 < mc.c + mc.cs - 1) {
  351. hasPartMC2 = true;
  352. break;
  353. } else if (c1 > mc.c && c2 == mc.c + mc.cs - 1) {
  354. hasPartMC2 = true;
  355. break;
  356. }
  357. }
  358. } else if (r1 <= mc.r + mc.rs - 1) {
  359. if (c1 >= mc.c && c1 <= mc.c + mc.cs - 1) {
  360. hasPartMC2 = true;
  361. break;
  362. } else if (c2 >= mc.c && c2 <= mc.c + mc.cs - 1) {
  363. hasPartMC2 = true;
  364. break;
  365. } else if (c1 < mc.c && c2 > mc.c + mc.cs - 1) {
  366. hasPartMC2 = true;
  367. break;
  368. }
  369. }
  370. }
  371. return hasPartMC2;
  372. }
  373. function checkWordByteLength(value) {
  374. return Math.ceil(value.charCodeAt().toString(2).length / 8);
  375. }
  376. var error;
  377. var init_validate = __esm({
  378. "src/global/validate.js"() {
  379. init_luckysheetConfigsetting();
  380. init_store();
  381. error = {
  382. v: "#VALUE!",
  383. n: "#NAME?",
  384. na: "#N/A",
  385. r: "#REF!",
  386. d: "#DIV/0!",
  387. nm: "#NUM!",
  388. nl: "#NULL!",
  389. sp: "#SPILL!"
  390. };
  391. }
  392. });
  393. // src/utils/math.js
  394. function isInteger(obj) {
  395. return Math.floor(obj) === obj;
  396. }
  397. function toInteger(floatNum) {
  398. var ret = {times: 1, num: 0};
  399. if (isInteger(floatNum)) {
  400. ret.num = floatNum;
  401. return ret;
  402. }
  403. var strfi = floatNum + "";
  404. var dotPos = strfi.indexOf(".");
  405. var len = strfi.substr(dotPos + 1).length;
  406. var times = Math.pow(10, len);
  407. var intNum = parseInt(floatNum * times + 0.5, 10);
  408. ret.times = times;
  409. ret.num = intNum;
  410. return ret;
  411. }
  412. function operation(a, b, op) {
  413. var o1 = toInteger(a);
  414. var o2 = toInteger(b);
  415. var n1 = o1.num;
  416. var n2 = o2.num;
  417. var t1 = o1.times;
  418. var t2 = o2.times;
  419. var max = t1 > t2 ? t1 : t2;
  420. var result = null;
  421. switch (op) {
  422. case "add":
  423. if (t1 === t2) {
  424. result = n1 + n2;
  425. } else if (t1 > t2) {
  426. result = n1 + n2 * (t1 / t2);
  427. } else {
  428. result = n1 * (t2 / t1) + n2;
  429. }
  430. return result / max;
  431. case "subtract":
  432. if (t1 === t2) {
  433. result = n1 - n2;
  434. } else if (t1 > t2) {
  435. result = n1 - n2 * (t1 / t2);
  436. } else {
  437. result = n1 * (t2 / t1) - n2;
  438. }
  439. return result / max;
  440. case "multiply":
  441. result = n1 * n2 / (t1 * t2);
  442. return result;
  443. case "divide":
  444. return result = function() {
  445. var r1 = n1 / n2;
  446. var r2 = t2 / t1;
  447. return operation(r1, r2, "multiply");
  448. }();
  449. }
  450. }
  451. function fixed(num, precision) {
  452. if (!precision) {
  453. precision = 2;
  454. }
  455. if (!isRealNum(num))
  456. return num;
  457. let s = num.toFixed(precision);
  458. let index2 = s.indexOf(".");
  459. let prefix = s.substring(0, index2);
  460. let suffix = s.substring(index2 + 1, s.length);
  461. if (suffix) {
  462. for (let i2 = suffix.length - 1; i2 != 0; i2--) {
  463. if (suffix.charAt(i2) != "0" && i2 == suffix.length - 1) {
  464. break;
  465. } else {
  466. suffix = suffix.substring(0, i2);
  467. }
  468. }
  469. }
  470. return Number(prefix + "." + suffix);
  471. }
  472. var init_math = __esm({
  473. "src/utils/math.js"() {
  474. init_validate();
  475. Number.prototype.add = function(value) {
  476. let number = parseFloat(value);
  477. if (typeof number !== "number" || Number.isNaN(number)) {
  478. throw new Error("\u8BF7\u8F93\u5165\u6570\u5B57\u6216\u8005\u6570\u5B57\u5B57\u7B26\u4E32\uFF5E");
  479. }
  480. ;
  481. return operation(this, number, "add");
  482. };
  483. Number.prototype.subtract = function(value) {
  484. let number = parseFloat(value);
  485. if (typeof number !== "number" || Number.isNaN(number)) {
  486. throw new Error("\u8BF7\u8F93\u5165\u6570\u5B57\u6216\u8005\u6570\u5B57\u5B57\u7B26\u4E32\uFF5E");
  487. }
  488. return operation(this, number, "subtract");
  489. };
  490. Number.prototype.multiply = function(value) {
  491. let number = parseFloat(value);
  492. if (typeof number !== "number" || Number.isNaN(number)) {
  493. throw new Error("\u8BF7\u8F93\u5165\u6570\u5B57\u6216\u8005\u6570\u5B57\u5B57\u7B26\u4E32\uFF5E");
  494. }
  495. return operation(this, number, "multiply");
  496. };
  497. Number.prototype.divide = function(value) {
  498. let number = parseFloat(value);
  499. if (typeof number !== "number" || Number.isNaN(number)) {
  500. throw new Error("\u8BF7\u8F93\u5165\u6570\u5B57\u6216\u8005\u6570\u5B57\u5B57\u7B26\u4E32\uFF5E");
  501. }
  502. return operation(this, number, "divide");
  503. };
  504. Number.prototype.tofixed = function(value) {
  505. let precision = parseFloat(value);
  506. if (typeof precision !== "number" || Number.isNaN(precision)) {
  507. throw new Error("\u8BF7\u8F93\u5165\u6570\u5B57\u6216\u8005\u6570\u5B57\u5B57\u7B26\u4E32\uFF5E");
  508. }
  509. return fixed(this, precision);
  510. };
  511. }
  512. });
  513. // src/config.js
  514. var config_default;
  515. var init_config = __esm({
  516. "src/config.js"() {
  517. config_default = {
  518. container: "luckysheet",
  519. loading: {},
  520. column: 60,
  521. row: 84,
  522. allowCopy: true,
  523. showtoolbar: true,
  524. showinfobar: true,
  525. showsheetbar: true,
  526. showstatisticBar: true,
  527. pointEdit: false,
  528. pointEditUpdate: null,
  529. pointEditZoom: 1,
  530. data: [{"name": "Sheet1", color: "", "status": "1", "order": "0", "data": [], "config": {}, "index": 0}, {"name": "Sheet2", color: "", "status": "0", "order": "1", "data": [], "config": {}, "index": 1}, {"name": "Sheet3", color: "", "status": "0", "order": "2", "data": [], "config": {}, "index": 2}],
  531. title: "Luckysheet Demo",
  532. userInfo: false,
  533. userMenuItem: [{url: "www.baidu.com", "icon": '<i class="fa fa-folder" aria-hidden="true"></i>', "name": "\u6211\u7684\u8868\u683C"}, {url: "www.baidu.com", "icon": '<i class="fa fa-sign-out" aria-hidden="true"></i>', "name": "\u9000\u51FA\u767B\u9646"}],
  534. myFolderUrl: "www.baidu.com",
  535. config: {},
  536. fullscreenmode: true,
  537. devicePixelRatio: window.devicePixelRatio,
  538. allowEdit: true,
  539. loadUrl: "",
  540. loadSheetUrl: "",
  541. gridKey: "",
  542. updateUrl: "",
  543. updateImageUrl: "",
  544. allowUpdate: false,
  545. functionButton: "",
  546. showConfigWindowResize: true,
  547. enableAddRow: true,
  548. enableAddBackTop: true,
  549. autoFormatw: false,
  550. accuracy: void 0,
  551. pageInfo: {
  552. "queryExps": "",
  553. "reportId": "",
  554. "fields": "",
  555. "mobile": "",
  556. "frezon": "",
  557. "currentPage": "",
  558. "totalPage": 10,
  559. "pageUrl": ""
  560. },
  561. editMode: false,
  562. beforeCreateDom: null,
  563. fireMousedown: null,
  564. lang: "en",
  565. plugins: [],
  566. forceCalculation: false,
  567. rowHeaderWidth: 46,
  568. columnHeaderHeight: 20,
  569. defaultColWidth: 73,
  570. defaultRowHeight: 19,
  571. defaultFontSize: 10,
  572. limitSheetNameLength: true,
  573. defaultSheetNameMaxLength: 31,
  574. sheetFormulaBar: true,
  575. showtoolbarConfig: {},
  576. showsheetbarConfig: {},
  577. showstatisticBarConfig: {},
  578. cellRightClickConfig: {},
  579. sheetRightClickConfig: {},
  580. imageUpdateMethodConfig: {}
  581. };
  582. }
  583. });
  584. // src/locale/en.js
  585. var en_default;
  586. var init_en = __esm({
  587. "src/locale/en.js"() {
  588. en_default = {
  589. functionlist: {
  590. "SUMIF": {
  591. "d": "Returns a conditional sum across a range.",
  592. "a": "A conditional sum across a range.",
  593. "p": [
  594. {
  595. "name": "range",
  596. "detail": "The range which is tested against `criterion`."
  597. },
  598. {
  599. "name": "criterion",
  600. "detail": "The pattern or test to apply to `range`."
  601. },
  602. {
  603. "name": "sum_range",
  604. "detail": "The range to be summed, if different from `range`."
  605. }
  606. ]
  607. },
  608. "TAN": {
  609. "d": "Returns the tangent of an angle provided in radians.",
  610. "a": "Tangent of an angle provided in radians.",
  611. "p": [
  612. {
  613. "name": "angle",
  614. "detail": "The angle to find the tangent of, in radians."
  615. }
  616. ]
  617. },
  618. "TANH": {
  619. "d": "Returns the hyperbolic tangent of any real number.",
  620. "a": "Hyperbolic tangent of any real number.",
  621. "p": [
  622. {
  623. "name": "value",
  624. "detail": "Any real value to calculate the hyperbolic tangent of."
  625. }
  626. ]
  627. },
  628. "CEILING": {
  629. "d": "Rounds a number up to the nearest integer multiple of specified significance `factor`.",
  630. "a": "Rounds number up to nearest multiple of a factor.",
  631. "p": [
  632. {
  633. "name": "value",
  634. "detail": "The value to round up to the nearest integer multiple of `factor`."
  635. },
  636. {
  637. "name": "factor",
  638. "detail": "The number to whose multiples `value` will be rounded."
  639. }
  640. ]
  641. },
  642. "ATAN": {
  643. "d": "Returns the inverse tangent of a value, in radians.",
  644. "a": "Inverse tangent of a value, in radians.",
  645. "p": [
  646. {
  647. "name": "value",
  648. "detail": "The value for which to calculate the inverse tangent."
  649. }
  650. ]
  651. },
  652. "ASINH": {
  653. "d": "Returns the inverse hyperbolic sine of a number.",
  654. "a": "Inverse hyperbolic sine of a number.",
  655. "p": [
  656. {
  657. "name": "value",
  658. "detail": "The value for which to calculate the inverse hyperbolic sine."
  659. }
  660. ]
  661. },
  662. "ABS": {
  663. "d": "Returns the absolute value of a number.",
  664. "a": "Absolute value of a number.",
  665. "p": [
  666. {
  667. "name": "value",
  668. "detail": "The number of which to return the absolute value."
  669. }
  670. ]
  671. },
  672. "ACOS": {
  673. "d": "Returns the inverse cosine of a value, in radians.",
  674. "a": "Inverse cosine of a value, in radians.",
  675. "p": [
  676. {
  677. "name": "value",
  678. "detail": "The value for which to calculate the inverse cosine. Must be between `-1` and `1`, inclusive."
  679. }
  680. ]
  681. },
  682. "ACOSH": {
  683. "d": "Returns the inverse hyperbolic cosine of a number.",
  684. "a": "Inverse hyperbolic cosine of a number.",
  685. "p": [
  686. {
  687. "name": "value",
  688. "detail": "The value for which to calculate the inverse hyperbolic cosine. Must be greater than or equal to `1`."
  689. }
  690. ]
  691. },
  692. "MULTINOMIAL": {
  693. "d": "Returns the factorial of the sum of values divided by the product of the values' factorials.",
  694. "a": "Multinomial distribution function.",
  695. "p": [
  696. {
  697. "name": "value1",
  698. "detail": "The first value or range to consider."
  699. },
  700. {
  701. "name": "value2",
  702. "detail": "Additional values or ranges to consider."
  703. }
  704. ]
  705. },
  706. "ATANH": {
  707. "d": "Returns the inverse hyperbolic tangent of a number.",
  708. "a": "Inverse hyperbolic tangent of a number.",
  709. "p": [
  710. {
  711. "name": "value",
  712. "detail": "The value for which to calculate the inverse hyperbolic tangent. Must be between -1 and 1, exclusive."
  713. }
  714. ]
  715. },
  716. "ATAN2": {
  717. "d": "Returns the angle between the x-axis and a line segment from the origin (0,0) to specified coordinate pair (`x`,`y`), in radians.",
  718. "a": "Arctangent of a value.",
  719. "p": [
  720. {
  721. "name": "x",
  722. "detail": "The x coordinate of the endpoint of the line segment for which to calculate the angle from the x-axis."
  723. },
  724. {
  725. "name": "y",
  726. "detail": "The y coordinate of the endpoint of the line segment for which to calculate the angle from the x-axis."
  727. }
  728. ]
  729. },
  730. "COUNTBLANK": {
  731. "d": "Returns the number of empty values in a list of values and ranges.",
  732. "a": "Number of empty values.",
  733. "p": [
  734. {
  735. "name": "value1",
  736. "detail": "The first value or range in which to count the number of blanks."
  737. }
  738. ]
  739. },
  740. "COSH": {
  741. "d": "Returns the hyperbolic cosine of any real number.",
  742. "a": "Hyperbolic cosine of any real number.",
  743. "p": [
  744. {
  745. "name": "value",
  746. "detail": "Any real value to calculate the hyperbolic cosine of."
  747. }
  748. ]
  749. },
  750. "INT": {
  751. "d": "Rounds a number down to the nearest integer that is less than or equal to it.",
  752. "a": "Rounds number down to nearest integer.",
  753. "p": [
  754. {
  755. "name": "value",
  756. "detail": "The value to round down to the nearest integer."
  757. }
  758. ]
  759. },
  760. "ISEVEN": {
  761. "d": "Checks whether the provided value is even.",
  762. "a": "Whether the provided value is even.",
  763. "p": [
  764. {
  765. "name": "value",
  766. "detail": "The value to be verified as even."
  767. }
  768. ]
  769. },
  770. "ISODD": {
  771. "d": "Checks whether the provided value is odd.",
  772. "a": "Whether the provided value is odd.",
  773. "p": [
  774. {
  775. "name": "value",
  776. "detail": "The value to be verified as odd."
  777. }
  778. ]
  779. },
  780. "LCM": {
  781. "d": "Returns the least common multiple of one or more integers.",
  782. "a": "Least common multiple of one or more integers.",
  783. "p": [
  784. {
  785. "name": "value1",
  786. "detail": "The first value or range whose factors to consider in a calculation to find the least common multiple."
  787. },
  788. {
  789. "name": "value2",
  790. "detail": "Additional values or ranges whose factors to consider to find the least common multiple."
  791. }
  792. ]
  793. },
  794. "LN": {
  795. "d": "Returns the logarithm of a number, base e (Euler's number).",
  796. "a": "The logarithm of a number, base e (euler's number).",
  797. "p": [
  798. {
  799. "name": "value",
  800. "detail": "The value for which to calculate the logarithm, base e."
  801. }
  802. ]
  803. },
  804. "LOG": {
  805. "d": "Returns the logarithm of a number with respect to a base.",
  806. "a": "The logarithm of a number with respect to a base.",
  807. "p": [
  808. {
  809. "name": "value",
  810. "detail": "The value for which to calculate the logarithm."
  811. },
  812. {
  813. "name": "base",
  814. "detail": "The base to use for calculation of the logarithm."
  815. }
  816. ]
  817. },
  818. "LOG10": {
  819. "d": "Returns the logarithm of a number, base 10.",
  820. "a": "The logarithm of a number, base 10.",
  821. "p": [
  822. {
  823. "name": "value",
  824. "detail": "The value for which to calculate the logarithm, base 10."
  825. }
  826. ]
  827. },
  828. "MOD": {
  829. "d": "Returns the result of the modulo operator, the remainder after a division operation.",
  830. "a": "Modulo (remainder) operator.",
  831. "p": [
  832. {
  833. "name": "dividend",
  834. "detail": "The number to be divided to find the remainder."
  835. },
  836. {
  837. "name": "divisor",
  838. "detail": "The number to divide by."
  839. }
  840. ]
  841. },
  842. "MROUND": {
  843. "d": "Rounds one number to the nearest integer multiple of another.",
  844. "a": "Rounds a number to the nearest integer multiple.",
  845. "p": [
  846. {
  847. "name": "value",
  848. "detail": "The number to round to the nearest integer multiple of another."
  849. },
  850. {
  851. "name": "factor",
  852. "detail": "The number to whose multiples `value` will be rounded."
  853. }
  854. ]
  855. },
  856. "ODD": {
  857. "d": "Rounds a number up to the nearest odd integer.",
  858. "a": "Rounds a number up to the nearest odd integer.",
  859. "p": [
  860. {
  861. "name": "value",
  862. "detail": "The value to round to the next greatest odd number."
  863. }
  864. ]
  865. },
  866. "SUMSQ": {
  867. "d": "Returns the sum of the squares of a series of numbers and/or cells.",
  868. "a": "Sum of squares.",
  869. "p": [
  870. {
  871. "name": "value1",
  872. "detail": "The first number or range whose squares to add together."
  873. },
  874. {
  875. "name": "value2",
  876. "detail": "Additional numbers or ranges whose squares to add to the square(s) of `value1`."
  877. }
  878. ]
  879. },
  880. "COMBIN": {
  881. "d": "Returns the number of ways to choose some number of objects from a pool of a given size of objects.",
  882. "a": "Number of combinations from a set of objects.",
  883. "p": [
  884. {
  885. "name": "n",
  886. "detail": "The size of the pool of objects to choose from."
  887. },
  888. {
  889. "name": "k",
  890. "detail": "The number of objects to choose."
  891. }
  892. ]
  893. },
  894. "SUM": {
  895. "d": "Returns the sum of a series of numbers and/or cells.",
  896. "a": "Sum of a series of numbers and/or cells.",
  897. "p": [
  898. {
  899. "name": "value1",
  900. "detail": "The first number or range to add together."
  901. },
  902. {
  903. "name": "value2",
  904. "detail": "Additional numbers or ranges to add to `value1`."
  905. }
  906. ]
  907. },
  908. "SUBTOTAL": {
  909. "d": "Returns a subtotal for a vertical range of cells using a specified aggregation function.",
  910. "a": "Subtotal for a range using a specific function.",
  911. "p": [
  912. {
  913. "name": "function_code",
  914. "detail": "The function to use in subtotal aggregation."
  915. },
  916. {
  917. "name": "range1",
  918. "detail": "The first range over which to calculate a subtotal."
  919. },
  920. {
  921. "name": "range2",
  922. "detail": "Additional ranges over which to calculate subtotals."
  923. }
  924. ]
  925. },
  926. "ASIN": {
  927. "d": "Returns the inverse sine of a value, in radians.",
  928. "a": "Inverse sine of a value, in radians.",
  929. "p": [
  930. {
  931. "name": "value",
  932. "detail": "The value for which to calculate the inverse sine. Must be between `-1` and `1`, inclusive."
  933. }
  934. ]
  935. },
  936. "COUNTIF": {
  937. "d": "Returns a conditional count across a range.",
  938. "a": "A conditional count across a range.",
  939. "p": [
  940. {
  941. "name": "range",
  942. "detail": "The range that is tested against `criterion`."
  943. },
  944. {
  945. "name": "criterion",
  946. "detail": "The pattern or test to apply to `range`."
  947. }
  948. ]
  949. },
  950. "RADIANS": {
  951. "d": "Converts an angle value in degrees to radians.",
  952. "a": "Converts an angle value in degrees to radians.",
  953. "p": [
  954. {
  955. "name": "angle",
  956. "detail": "The angle to convert from degrees to radians."
  957. }
  958. ]
  959. },
  960. "RAND": {
  961. "d": "Returns a random number between 0 inclusive and 1 exclusive.",
  962. "a": "A random number between 0 inclusive and 1 exclusive.",
  963. "p": []
  964. },
  965. "COUNTUNIQUE": {
  966. "d": "Counts the number of unique values in a list of specified values and ranges.",
  967. "a": "Counts number of unique values in a range.",
  968. "p": [
  969. {
  970. "name": "value1",
  971. "detail": "The first value or range to consider for uniqueness."
  972. },
  973. {
  974. "name": "value2",
  975. "detail": "Additional values or ranges to consider for uniqueness."
  976. }
  977. ]
  978. },
  979. "DEGREES": {
  980. "d": "Converts an angle value in radians to degrees.",
  981. "a": "Converts an angle value in radians to degrees.",
  982. "p": [
  983. {
  984. "name": "angle",
  985. "detail": "The angle to convert from radians to degrees."
  986. }
  987. ]
  988. },
  989. "ERFC": {
  990. "d": "Returns the complementary Gauss error function of a value.",
  991. "a": "Complementary gauss error function of a value.",
  992. "p": [
  993. {
  994. "name": "z",
  995. "detail": "The number for which to calculate the complementary Gauss error function."
  996. }
  997. ]
  998. },
  999. "EVEN": {
  1000. "d": "Rounds a number up to the nearest even integer.",
  1001. "a": "Rounds a number up to the nearest even integer.",
  1002. "p": [
  1003. {
  1004. "name": "value",
  1005. "detail": "The value to round to the next greatest even number."
  1006. }
  1007. ]
  1008. },
  1009. "EXP": {
  1010. "d": "Returns Euler's number, e (~2.718) raised to a power.",
  1011. "a": "Euler's number, e (~2.718) raised to a power.",
  1012. "p": [
  1013. {
  1014. "name": "exponent",
  1015. "detail": "The exponent to raise e to."
  1016. }
  1017. ]
  1018. },
  1019. "FACT": {
  1020. "d": "Returns the factorial of a number.",
  1021. "a": "Factorial of a number.",
  1022. "p": [
  1023. {
  1024. "name": "value",
  1025. "detail": "The number or reference to a number whose factorial will be calculated and returned."
  1026. }
  1027. ]
  1028. },
  1029. "FACTDOUBLE": {
  1030. "d": 'Returns the "double factorial" of a number.',
  1031. "a": '"double factorial" of a number.',
  1032. "p": [
  1033. {
  1034. "name": "value",
  1035. "detail": "The number or reference to a number whose double factorial will be calculated and returned."
  1036. }
  1037. ]
  1038. },
  1039. "PI": {
  1040. "d": "Returns the value of Pi to 14 decimal places.",
  1041. "a": "The number pi.",
  1042. "p": []
  1043. },
  1044. "FLOOR": {
  1045. "d": "Rounds a number down to the nearest integer multiple of specified significance `factor`.",
  1046. "a": "Rounds number down to nearest multiple of a factor.",
  1047. "p": [
  1048. {
  1049. "name": "value",
  1050. "detail": "The value to round down to the nearest integer multiple of `factor`."
  1051. },
  1052. {
  1053. "name": "factor",
  1054. "detail": "The number to whose multiples `value` will be rounded."
  1055. }
  1056. ]
  1057. },
  1058. "GCD": {
  1059. "d": "Returns the greatest common divisor of one or more integers.",
  1060. "a": "Greatest common divisor of one or more integers.",
  1061. "p": [
  1062. {
  1063. "name": "value1",
  1064. "detail": "The first value or range whose factors to consider in a calculation to find the greatest common divisor."
  1065. },
  1066. {
  1067. "name": "value2",
  1068. "detail": "Additional values or ranges whose factors to consider to find the greatest common divisor."
  1069. }
  1070. ]
  1071. },
  1072. "RANDBETWEEN": {
  1073. "d": "Returns a uniformly random integer between two values, inclusive.",
  1074. "a": "Random integer between two values, inclusive.",
  1075. "p": [
  1076. {
  1077. "name": "low",
  1078. "detail": "The low end of the random range."
  1079. },
  1080. {
  1081. "name": "high",
  1082. "detail": "The high end of the random range."
  1083. }
  1084. ]
  1085. },
  1086. "ROUND": {
  1087. "d": "Rounds a number to a certain number of decimal places according to standard rules.",
  1088. "a": "Rounds a number according to standard rules.",
  1089. "p": [
  1090. {
  1091. "name": "value",
  1092. "detail": "The value to round to `places` number of places."
  1093. },
  1094. {
  1095. "name": "places",
  1096. "detail": "The number of decimal places to which to round."
  1097. }
  1098. ]
  1099. },
  1100. "ROUNDDOWN": {
  1101. "d": "Rounds a number to a certain number of decimal places, always rounding down to the next valid increment.",
  1102. "a": "Rounds down a number.",
  1103. "p": [
  1104. {
  1105. "name": "value",
  1106. "detail": "The value to round to `places` number of places, always rounding down."
  1107. },
  1108. {
  1109. "name": "places",
  1110. "detail": "The number of decimal places to which to round."
  1111. }
  1112. ]
  1113. },
  1114. "ROUNDUP": {
  1115. "d": "Rounds a number to a certain number of decimal places, always rounding up to the next valid increment.",
  1116. "a": "Rounds up a number.",
  1117. "p": [
  1118. {
  1119. "name": "value",
  1120. "detail": "The value to round to `places` number of places, always rounding up."
  1121. },
  1122. {
  1123. "name": "places",
  1124. "detail": "The number of decimal places to which to round."
  1125. }
  1126. ]
  1127. },
  1128. "SERIESSUM": {
  1129. "d": "Given parameters `x`, `n`, `m`, and `a`, returns the power series sum a",
  1130. "a": "Sum of a power series.",
  1131. "p": [
  1132. {
  1133. "name": "x",
  1134. "detail": "The input to the power series. Varies depending on the type of approximation, may be angle, exponent, or some other value."
  1135. },
  1136. {
  1137. "name": "n",
  1138. "detail": "The initial power to which to raise `x` in the power series."
  1139. },
  1140. {
  1141. "name": "m",
  1142. "detail": "The additive increment by which to increase `x`."
  1143. },
  1144. {
  1145. "name": "a",
  1146. "detail": "The array or range containing the coefficients of the power series."
  1147. }
  1148. ]
  1149. },
  1150. "SIGN": {
  1151. "d": "Given an input number, returns `-1` if it is negative, `1` if positive, and `0` if it is zero.",
  1152. "a": "Sign of a provided number (+/-/0).",
  1153. "p": [
  1154. {
  1155. "name": "value",
  1156. "detail": "The value whose sign will be evaluated."
  1157. }
  1158. ]
  1159. },
  1160. "SIN": {
  1161. "d": "Returns the sine of an angle provided in radians.",
  1162. "a": "Sine of an angle provided in radians.",
  1163. "p": [
  1164. {
  1165. "name": "angle",
  1166. "detail": "The angle to find the sine of, in radians."
  1167. }
  1168. ]
  1169. },
  1170. "SINH": {
  1171. "d": "Returns the hyperbolic sine of any real number.",
  1172. "a": "Hyperbolic sine of any real number.",
  1173. "p": [
  1174. {
  1175. "name": "value",
  1176. "detail": "Any real value to calculate the hyperbolic sine of."
  1177. }
  1178. ]
  1179. },
  1180. "SQRT": {
  1181. "d": "Returns the positive square root of a positive number.",
  1182. "a": "Positive square root of a positive number.",
  1183. "p": [
  1184. {
  1185. "name": "value",
  1186. "detail": "The number for which to calculate the positive square root."
  1187. }
  1188. ]
  1189. },
  1190. "SQRTPI": {
  1191. "d": "Returns the positive square root of the product of Pi and the given positive number.",
  1192. "a": "Square root of the product of pi and number.",
  1193. "p": [
  1194. {
  1195. "name": "value",
  1196. "detail": "The number which will be multiplied by Pi and have the product's square root returned"
  1197. }
  1198. ]
  1199. },
  1200. "GAMMALN": {
  1201. "d": "Returns the logarithm of a specified Gamma function, base e (Euler's number).",
  1202. "a": "Logarithm of gamma function.",
  1203. "p": [
  1204. {
  1205. "name": "value",
  1206. "detail": "The input to the Gamma function. The natural logarithm of Gamma(`value`) will be returned."
  1207. }
  1208. ]
  1209. },
  1210. "COS": {
  1211. "d": "Returns the cosine of an angle provided in radians.",
  1212. "a": "Cosine of an angle provided in radians.",
  1213. "p": [
  1214. {
  1215. "name": "angle",
  1216. "detail": "The angle to find the cosine of, in radians."
  1217. }
  1218. ]
  1219. },
  1220. "TRUNC": {
  1221. "d": "Truncates a number to a certain number of significant digits by omitting less significant digits.",
  1222. "a": "Truncates a number.",
  1223. "p": [
  1224. {
  1225. "name": "value",
  1226. "detail": "The value to be truncated."
  1227. },
  1228. {
  1229. "name": "places",
  1230. "detail": "The number of significant digits to the right of the decimal point to retain."
  1231. }
  1232. ]
  1233. },
  1234. "QUOTIENT": {
  1235. "d": "Returns one number divided by another.",
  1236. "a": "One number divided by another.",
  1237. "p": [
  1238. {
  1239. "name": "dividend",
  1240. "detail": "The number to be divided."
  1241. },
  1242. {
  1243. "name": "divisor",
  1244. "detail": "The number to divide by."
  1245. }
  1246. ]
  1247. },
  1248. "POWER": {
  1249. "d": "Returns a number raised to a power.",
  1250. "a": "A number raised to a power.",
  1251. "p": [
  1252. {
  1253. "name": "base",
  1254. "detail": "The number to raise to the `exponent` power."
  1255. },
  1256. {
  1257. "name": "exponent",
  1258. "detail": "The exponent to raise `base` to."
  1259. }
  1260. ]
  1261. },
  1262. "SUMIFS": {
  1263. "d": "Returns the sum of a range depending on multiple criteria.",
  1264. "a": "Sums a range depending on multiple criteria.",
  1265. "p": [
  1266. {
  1267. "name": "sum_range",
  1268. "detail": "The range to sum."
  1269. },
  1270. {
  1271. "name": "criteria_range1",
  1272. "detail": "The range to check against criterion1."
  1273. },
  1274. {
  1275. "name": "criterion1",
  1276. "detail": "The pattern or test to apply to criteria_range1."
  1277. },
  1278. {
  1279. "name": "criteria_range2",
  1280. "detail": "Additional ranges to check."
  1281. }
  1282. ]
  1283. },
  1284. "COUNTIFS": {
  1285. "d": "Returns the count of a range depending on multiple criteria.",
  1286. "a": "Count values depending on multiple criteria.",
  1287. "p": [
  1288. {
  1289. "name": "criteria_range1",
  1290. "detail": "The range to check against `criterion1`."
  1291. },
  1292. {
  1293. "name": "criterion1",
  1294. "detail": "The pattern or test to apply to `criteria_range1`."
  1295. },
  1296. {
  1297. "name": "criteria_range2",
  1298. "detail": "Additional ranges to check."
  1299. }
  1300. ]
  1301. },
  1302. "PRODUCT": {
  1303. "d": "Returns the result of multiplying a series of numbers together.",
  1304. "a": "Result of multiplying a series of numbers together.",
  1305. "p": [
  1306. {
  1307. "name": "factor1",
  1308. "detail": "The first number or range to calculate for the product."
  1309. },
  1310. {
  1311. "name": "factor2",
  1312. "detail": "More numbers or ranges to calculate for the product."
  1313. }
  1314. ]
  1315. },
  1316. "HARMEAN": {
  1317. "d": "Calculates the harmonic mean of a dataset.",
  1318. "a": "The harmonic mean of a dataset.",
  1319. "p": [
  1320. {
  1321. "name": "value1",
  1322. "detail": "The first value or range of the population."
  1323. },
  1324. {
  1325. "name": "value2",
  1326. "detail": "Additional values or ranges to include in the population."
  1327. }
  1328. ]
  1329. },
  1330. "HYPGEOMDIST": {
  1331. "d": "Calculates the probability of drawing a certain number of successes in a certain number of tries given a population of a certain size containing a certain number of successes, without replacement of draws.",
  1332. "a": "Hypergeometric distribution probability.",
  1333. "p": [
  1334. {
  1335. "name": "num_successes",
  1336. "detail": "The desired number of successes."
  1337. },
  1338. {
  1339. "name": "num_draws",
  1340. "detail": "The number of permitted draws."
  1341. },
  1342. {
  1343. "name": "successes_in_pop",
  1344. "detail": "The total number of successes in the population."
  1345. },
  1346. {
  1347. "name": "pop_size",
  1348. "detail": "The total size of the population"
  1349. },
  1350. {
  1351. "name": "cumulative",
  1352. "detail": "Determine the logical value of the function form. \n\nIf cumulative is TRUE(), HYPGEOM.DIST returns the cumulative distribution function;\n\nif FALSE(), it returns the probability density function."
  1353. }
  1354. ]
  1355. },
  1356. "INTERCEPT": {
  1357. "d": "Calculates the y-value at which the line resulting from linear regression of a dataset will intersect the y-axis (x=0).",
  1358. "a": "Y-intercept of line derived via linear regression.",
  1359. "p": [
  1360. {
  1361. "name": "data_y",
  1362. "detail": "The range representing the array or matrix of dependent data."
  1363. },
  1364. {
  1365. "name": "data_x",
  1366. "detail": "The range representing the array or matrix of independent data."
  1367. }
  1368. ]
  1369. },
  1370. "KURT": {
  1371. "d": 'Calculates the kurtosis of a dataset, which describes the shape, and in particular the "peakedness" of that dataset.',
  1372. "a": "Kurtosis of a dataset.",
  1373. "p": [
  1374. {
  1375. "name": "value1",
  1376. "detail": "The first value or range of the dataset."
  1377. },
  1378. {
  1379. "name": "value2",
  1380. "detail": "Additional values or ranges to include in the dataset."
  1381. }
  1382. ]
  1383. },
  1384. "LARGE": {
  1385. "d": "Returns the nth largest element from a data set, where n is user-defined.",
  1386. "a": "Nth largest element from a data set.",
  1387. "p": [
  1388. {
  1389. "name": "data",
  1390. "detail": "Array or range containing the dataset to consider."
  1391. },
  1392. {
  1393. "name": "n",
  1394. "detail": "The rank from largest to smallest of the element to return."
  1395. }
  1396. ]
  1397. },
  1398. "STDEVA": {
  1399. "d": "Calculates the standard deviation based on a sample, setting text to the value `0`.",
  1400. "a": "Standard deviation of sample (text as 0).",
  1401. "p": [
  1402. {
  1403. "name": "value1",
  1404. "detail": "The first value or range of the sample."
  1405. },
  1406. {
  1407. "name": "value2",
  1408. "detail": "Additional values or ranges to include in the sample."
  1409. }
  1410. ]
  1411. },
  1412. "STDEVP": {
  1413. "d": "Calculates the standard deviation based on an entire population.",
  1414. "a": "Standard deviation of an entire population.",
  1415. "p": [
  1416. {
  1417. "name": "value1",
  1418. "detail": "The first value or range of the population."
  1419. },
  1420. {
  1421. "name": "value2",
  1422. "detail": "Additional values or ranges to include in the population."
  1423. }
  1424. ]
  1425. },
  1426. "GEOMEAN": {
  1427. "d": "Calculates the geometric mean of a dataset.",
  1428. "a": "The geometric mean of a dataset.",
  1429. "p": [
  1430. {
  1431. "name": "value1",
  1432. "detail": "The first value or range of the population."
  1433. },
  1434. {
  1435. "name": "value2",
  1436. "detail": "Additional values or ranges to include in the population."
  1437. }
  1438. ]
  1439. },
  1440. "RANK_EQ": {
  1441. "d": "Returns the rank of a specified value in a dataset. If there is more than one entry of the same value in the dataset, the top rank of the entries will be returned.",
  1442. "a": "Top rank of a specified value in a dataset.",
  1443. "p": [
  1444. {
  1445. "name": "value",
  1446. "detail": "The value whose rank will be determined."
  1447. },
  1448. {
  1449. "name": "data",
  1450. "detail": "The array or range containing the dataset to consider."
  1451. },
  1452. {
  1453. "name": "is_ascending",
  1454. "detail": "Whether to consider the values in `data` in descending or ascending order. If omitted, the default is descending (FALSE)."
  1455. }
  1456. ]
  1457. },
  1458. "RANK_AVG": {
  1459. "d": "Returns the rank of a specified value in a dataset. If there is more than one entry of the same value in the dataset, the average rank of the entries will be returned.",
  1460. "a": "Average rank of a specified value in a dataset.",
  1461. "p": [
  1462. {
  1463. "name": "value",
  1464. "detail": "The value whose rank will be determined."
  1465. },
  1466. {
  1467. "name": "data",
  1468. "detail": "The array or range containing the dataset to consider."
  1469. },
  1470. {
  1471. "name": "is_ascending",
  1472. "detail": "Whether to consider the values in `data` in descending or ascending order. If omitted, the default is descending (FALSE)."
  1473. }
  1474. ]
  1475. },
  1476. "PERCENTRANK_EXC": {
  1477. "d": "Returns the percentage rank (percentile) from 0 to 1 exclusive of a specified value in a dataset.",
  1478. "a": "Percentage rank (percentile) from 0 to 1 exclusive.",
  1479. "p": [
  1480. {
  1481. "name": "data",
  1482. "detail": "The array or range containing the dataset to consider."
  1483. },
  1484. {
  1485. "name": "value",
  1486. "detail": "The value whose percentage rank will be determined."
  1487. },
  1488. {
  1489. "name": "significant_digits",
  1490. "detail": "The number of significant figures to use in the calculation. Default is 3."
  1491. }
  1492. ]
  1493. },
  1494. "PERCENTRANK_INC": {
  1495. "d": "Returns the percentage rank (percentile) from 0 to 1 inclusive of a specified value in a dataset.",
  1496. "a": "Percentage rank (percentile) from 0 to 1 inclusive.",
  1497. "p": [
  1498. {
  1499. "name": "data",
  1500. "detail": "The array or range containing the dataset to consider."
  1501. },
  1502. {
  1503. "name": "value",
  1504. "detail": "The value whose percentage rank will be determined."
  1505. },
  1506. {
  1507. "name": "significant_digits",
  1508. "detail": "The number of significant figures to use in the calculation. Default is 3."
  1509. }
  1510. ]
  1511. },
  1512. "FORECAST": {
  1513. "d": "Calculates the expected y-value for a specified x based on a linear regression of a dataset.",
  1514. "a": "Expected y-value based of linear regression.",
  1515. "p": [
  1516. {
  1517. "name": "x",
  1518. "detail": "The value on the x-axis to forecast."
  1519. },
  1520. {
  1521. "name": "data_y",
  1522. "detail": "The range representing the array or matrix of dependent data."
  1523. },
  1524. {
  1525. "name": "data_x",
  1526. "detail": "The range representing the array or matrix of independent data."
  1527. }
  1528. ]
  1529. },
  1530. "FISHERINV": {
  1531. "d": "Returns the inverse Fisher transformation of a specified value.",
  1532. "a": "Inverse fisher transformation of a specified value.",
  1533. "p": [
  1534. {
  1535. "name": "value",
  1536. "detail": "The value for which to calculate the inverse Fisher transformation."
  1537. }
  1538. ]
  1539. },
  1540. "FISHER": {
  1541. "d": "Returns the Fisher transformation of a specified value.",
  1542. "a": "Fisher transformation of a specified value.",
  1543. "p": [
  1544. {
  1545. "name": "value",
  1546. "detail": "The value for which to calculate the Fisher transformation."
  1547. }
  1548. ]
  1549. },
  1550. "MODE_SNGL": {
  1551. "d": "Returns the most commonly occurring value in a dataset.",
  1552. "a": "Most commonly occurring value in a dataset.",
  1553. "p": [
  1554. {
  1555. "name": "value1",
  1556. "detail": "The first value or range to consider when calculating mode."
  1557. },
  1558. {
  1559. "name": "value2",
  1560. "detail": "Additional values or ranges to consider when calculating mode."
  1561. }
  1562. ]
  1563. },
  1564. "WEIBULL_DIST": {
  1565. "d": "Returns the value of the Weibull distribution function (or Weibull cumulative distribution function) for a specified shape and scale.",
  1566. "a": "Weibull distribution function.",
  1567. "p": [
  1568. {
  1569. "name": "x",
  1570. "detail": "The input to the Weibull distribution function."
  1571. },
  1572. {
  1573. "name": "shape",
  1574. "detail": "The shape parameter of the Weibull distribution function."
  1575. },
  1576. {
  1577. "name": "scale",
  1578. "detail": "The scale parameter of the Weibull distribution function."
  1579. },
  1580. {
  1581. "name": "cumulative",
  1582. "detail": "Whether to use the cumulative distribution function."
  1583. }
  1584. ]
  1585. },
  1586. "COUNT": {
  1587. "d": "Returns the number of numeric values in a dataset.",
  1588. "a": "The number of numeric values in dataset.",
  1589. "p": [
  1590. {
  1591. "name": "value1",
  1592. "detail": "The first value or range to consider when counting."
  1593. },
  1594. {
  1595. "name": "value2",
  1596. "detail": "Additional values or ranges to consider when counting."
  1597. }
  1598. ]
  1599. },
  1600. "COUNTA": {
  1601. "d": "Returns the number of values in a dataset.",
  1602. "a": "The number of values in a dataset.",
  1603. "p": [
  1604. {
  1605. "name": "value1",
  1606. "detail": "The first value or range to consider when counting."
  1607. },
  1608. {
  1609. "name": "value2",
  1610. "detail": "Additional values or ranges to consider when counting."
  1611. }
  1612. ]
  1613. },
  1614. "AVEDEV": {
  1615. "d": "Calculates the average of the magnitudes of deviations of data from a dataset's mean.",
  1616. "a": "Average magnitude of deviations from mean.",
  1617. "p": [
  1618. {
  1619. "name": "value1",
  1620. "detail": "The first value or range of the sample."
  1621. },
  1622. {
  1623. "name": "value2",
  1624. "detail": "Additional values or ranges to include in the sample."
  1625. }
  1626. ]
  1627. },
  1628. "AVERAGE": {
  1629. "d": "Returns the numerical average value in a dataset, ignoring text.",
  1630. "a": "Numerical average value in a dataset, ignoring text.",
  1631. "p": [
  1632. {
  1633. "name": "value1",
  1634. "detail": "The first value or range to consider when calculating the average value."
  1635. },
  1636. {
  1637. "name": "value2",
  1638. "detail": "Additional values or ranges to consider when calculating the average value."
  1639. }
  1640. ]
  1641. },
  1642. "AVERAGEA": {
  1643. "d": "Returns the numerical average value in a dataset.",
  1644. "a": "Numerical average value in a dataset.",
  1645. "p": [
  1646. {
  1647. "name": "value1",
  1648. "detail": "The first value or range to consider when calculating the average value."
  1649. },
  1650. {
  1651. "name": "value2",
  1652. "detail": "Additional values or ranges to consider when calculating the average value."
  1653. }
  1654. ]
  1655. },
  1656. "BINOM_DIST": {
  1657. "d": "Calculates the probability of drawing a certain number of successes (or a maximum number of successes) in a certain number of tries given a population of a certain size containing a certain number of successes, with replacement of draws.",
  1658. "a": "Binomial distribution probability.",
  1659. "p": [
  1660. {
  1661. "name": "num_successes",
  1662. "detail": "The number of successes for which to calculate the probability in `num_trials` trials."
  1663. },
  1664. {
  1665. "name": "num_trials",
  1666. "detail": "The number of independent trials."
  1667. },
  1668. {
  1669. "name": "prob_success",
  1670. "detail": "The probability of success in any given trial."
  1671. },
  1672. {
  1673. "name": "cumulative",
  1674. "detail": "Whether to use the binomial cumulative distribution."
  1675. }
  1676. ]
  1677. },
  1678. "BINOM_INV": {
  1679. "d": "Calculates the smallest value for which the cumulative binomial distribution is greater than or equal to a specified criteria.",
  1680. "a": "Inverse cumulative binomial distribution function.",
  1681. "p": [
  1682. {
  1683. "name": "num_trials",
  1684. "detail": "The number of independent trials."
  1685. },
  1686. {
  1687. "name": "prob_success",
  1688. "detail": "The probability of success in any given trial."
  1689. },
  1690. {
  1691. "name": "target_prob",
  1692. "detail": "The desired threshold probability."
  1693. }
  1694. ]
  1695. },
  1696. "CONFIDENCE_NORM": {
  1697. "d": "Calculates the width of half the confidence interval for a normal distribution.",
  1698. "a": "Confidence interval for a normal distribution.",
  1699. "p": [
  1700. {
  1701. "name": "alpha",
  1702. "detail": "One minus the desired confidence level. E.g. `0.1` for `0.9`, or 90%, confidence."
  1703. },
  1704. {
  1705. "name": "standard_deviation",
  1706. "detail": "The standard deviation of the population."
  1707. },
  1708. {
  1709. "name": "pop_size",
  1710. "detail": "The size of the population."
  1711. }
  1712. ]
  1713. },
  1714. "CORREL": {
  1715. "d": "Calculates r, the Pearson product-moment correlation coefficient of a dataset.",
  1716. "a": "Pearson Product-Moment Correlation Coefficient.",
  1717. "p": [
  1718. {
  1719. "name": "data_y",
  1720. "detail": "The range representing the array or matrix of dependent data."
  1721. },
  1722. {
  1723. "name": "data_x",
  1724. "detail": "The range representing the array or matrix of independent data."
  1725. }
  1726. ]
  1727. },
  1728. "COVARIANCE_P": {
  1729. "d": "Calculates the covariance of a dataset.",
  1730. "a": "The covariance of a dataset.",
  1731. "p": [
  1732. {
  1733. "name": "data_y",
  1734. "detail": "The range representing the array or matrix of dependent data."
  1735. },
  1736. {
  1737. "name": "data_x",
  1738. "detail": "The range representing the array or matrix of independent data."
  1739. }
  1740. ]
  1741. },
  1742. "COVARIANCE_S": {
  1743. "d": "Calculates the sample covariance of a dataset.",
  1744. "a": "The sample covariance of a dataset.",
  1745. "p": [
  1746. {
  1747. "name": "data_y",
  1748. "detail": "The range representing the array or matrix of dependent data."
  1749. },
  1750. {
  1751. "name": "data_x",
  1752. "detail": "The range representing the array or matrix of independent data."
  1753. }
  1754. ]
  1755. },
  1756. "DEVSQ": {
  1757. "d": "Calculates the sum of squares of deviations based on a sample.",
  1758. "a": "The sum of squares of deviations based on a sample.",
  1759. "p": [
  1760. {
  1761. "name": "value1",
  1762. "detail": "The first value or range of the sample."
  1763. },
  1764. {
  1765. "name": "value2",
  1766. "detail": "Additional values or ranges to include in the sample."
  1767. }
  1768. ]
  1769. },
  1770. "EXPON_DIST": {
  1771. "d": "Returns the value of the exponential distribution function with a specified lambda at a specified value.",
  1772. "a": "Exponential distribution function.",
  1773. "p": [
  1774. {
  1775. "name": "x",
  1776. "detail": "The input to the exponential distribution function."
  1777. },
  1778. {
  1779. "name": "lambda",
  1780. "detail": "The lambda to specify the exponential distribution function."
  1781. },
  1782. {
  1783. "name": "cumulative",
  1784. "detail": "Whether to use the exponential cumulative distribution."
  1785. }
  1786. ]
  1787. },
  1788. "AVERAGEIF": {
  1789. "d": "Returns the average of a range depending on criteria.",
  1790. "a": "Average of values depending on criteria.",
  1791. "p": [
  1792. {
  1793. "name": "criteria_range",
  1794. "detail": "The range to check against `criterion`."
  1795. },
  1796. {
  1797. "name": "criterion",
  1798. "detail": "The pattern or test to apply to `criteria_range`."
  1799. },
  1800. {
  1801. "name": "average_range",
  1802. "detail": "The range to average. If not included, `criteria_range` is used for the average instead."
  1803. }
  1804. ]
  1805. },
  1806. "AVERAGEIFS": {
  1807. "d": "Returns the average of a range depending on multiple criteria.",
  1808. "a": "Average of values depending on multiple criteria.",
  1809. "p": [
  1810. {
  1811. "name": "average_range",
  1812. "detail": "The range to average."
  1813. },
  1814. {
  1815. "name": "criteria_range1",
  1816. "detail": "The range to check against `criterion1`."
  1817. },
  1818. {
  1819. "name": "criterion1",
  1820. "detail": "The pattern or test to apply to `criteria_range1`."
  1821. },
  1822. {
  1823. "name": "criteria_range2",
  1824. "detail": "Additional ranges to check."
  1825. }
  1826. ]
  1827. },
  1828. "PERMUT": {
  1829. "d": "Returns the number of ways to choose some number of objects from a pool of a given size of objects, considering order.",
  1830. "a": "Number of permutations from a number of objects.",
  1831. "p": [
  1832. {
  1833. "name": "n",
  1834. "detail": "The size of the pool of objects to choose from."
  1835. },
  1836. {
  1837. "name": "k",
  1838. "detail": "The number of objects to choose."
  1839. }
  1840. ]
  1841. },
  1842. "TRIMMEAN": {
  1843. "d": "Calculates the mean of a dataset excluding some proportion of data from the high and low ends of the dataset.",
  1844. "a": "Mean of a dataset excluding high/low ends.",
  1845. "p": [
  1846. {
  1847. "name": "data",
  1848. "detail": "Array or range containing the dataset to consider."
  1849. },
  1850. {
  1851. "name": "exclude_proportion",
  1852. "detail": "The proportion of the dataset to exclude, from the extremities of the set."
  1853. }
  1854. ]
  1855. },
  1856. "PERCENTILE_EXC": {
  1857. "d": "Returns the value at a given percentile of a dataset exclusive of 0 and 1.",
  1858. "a": "Value at a given percentile of a dataset exclusive of 0 and 1.",
  1859. "p": [
  1860. {
  1861. "name": "data",
  1862. "detail": "The array or range containing the dataset to consider."
  1863. },
  1864. {
  1865. "name": "percentile",
  1866. "detail": "The percentile, exclusive of 0 and 1, whose value within 'data' will be calculated and returned."
  1867. }
  1868. ]
  1869. },
  1870. "PERCENTILE_INC": {
  1871. "d": "Returns the value at a given percentile of a dataset.",
  1872. "a": "Value at a given percentile of a dataset.",
  1873. "p": [
  1874. {
  1875. "name": "data",
  1876. "detail": "The array or range containing the dataset to consider."
  1877. },
  1878. {
  1879. "name": "percentile",
  1880. "detail": "The percentile whose value within `data` will be calculated and returned.`"
  1881. }
  1882. ]
  1883. },
  1884. "PEARSON": {
  1885. "d": "Calculates r, the Pearson product-moment correlation coefficient of a dataset.",
  1886. "a": "Pearson Product-Moment Correlation Coefficient.",
  1887. "p": [
  1888. {
  1889. "name": "data_y",
  1890. "detail": "The range representing the array or matrix of dependent data."
  1891. },
  1892. {
  1893. "name": "data_x",
  1894. "detail": "The range representing the array or matrix of independent data."
  1895. }
  1896. ]
  1897. },
  1898. "NORM_S_INV": {
  1899. "d": "Returns the value of the inverse standard normal distribution function for a specified value.",
  1900. "a": "Inverse standard normal distribution function.",
  1901. "p": [
  1902. {
  1903. "name": "x",
  1904. "detail": "The input to the inverse standard normal distribution function."
  1905. }
  1906. ]
  1907. },
  1908. "NORM_S_DIST": {
  1909. "d": "Returns the value of the standard normal cumulative distribution function for a specified value.",
  1910. "a": "Standard normal cumulative distribution function.",
  1911. "p": [
  1912. {
  1913. "name": "x",
  1914. "detail": "The input to the standard normal cumulative distribution function."
  1915. },
  1916. {
  1917. "name": "cumulative",
  1918. "detail": "Determine the logical value of the function form. \n\nIf TRUE(), it returns the cumulative distribution function;\n\nIf it is FALSE(), it returns the probability density function."
  1919. }
  1920. ]
  1921. },
  1922. "NORM_INV": {
  1923. "d": "Returns the value of the inverse normal distribution function for a specified value, mean, and standard deviation.",
  1924. "a": "Inverse normal distribution function.",
  1925. "p": [
  1926. {
  1927. "name": "x",
  1928. "detail": "The input to the inverse normal distribution function."
  1929. },
  1930. {
  1931. "name": "mean",
  1932. "detail": "The mean (mu) of the normal distribution function."
  1933. },
  1934. {
  1935. "name": "standard_deviation",
  1936. "detail": "The standard deviation (sigma) of the normal distribution function."
  1937. }
  1938. ]
  1939. },
  1940. "NORM_DIST": {
  1941. "d": "Returns the value of the normal distribution function (or normal cumulative distribution function) for a specified value, mean, and standard deviation.",
  1942. "a": "Normal distribution function.",
  1943. "p": [
  1944. {
  1945. "name": "x",
  1946. "detail": "The input to the normal distribution function."
  1947. },
  1948. {
  1949. "name": "mean",
  1950. "detail": "The mean (mu) of the normal distribution function."
  1951. },
  1952. {
  1953. "name": "standard_deviation",
  1954. "detail": "The standard deviation (sigma) of the normal distribution function."
  1955. },
  1956. {
  1957. "name": "cumulative",
  1958. "detail": "Whether to use the normal cumulative distribution function rather than the distribution function."
  1959. }
  1960. ]
  1961. },
  1962. "NEGBINOM_DIST": {
  1963. "d": "Calculates the probability of drawing a certain number of failures before a certain number of successes given a probability of success in independent trials.",
  1964. "a": "Negative binomial distribution probability.",
  1965. "p": [
  1966. {
  1967. "name": "num_failures",
  1968. "detail": "The number of failures to model."
  1969. },
  1970. {
  1971. "name": "num_successes",
  1972. "detail": "The number of successes to model."
  1973. },
  1974. {
  1975. "name": "prob_success",
  1976. "detail": "The probability of success in any given trial."
  1977. },
  1978. {
  1979. "name": "cumulative",
  1980. "detail": "Determine the logical value of the function form. \n\nIf TRUE(), it returns the cumulative distribution function;\n\nIf it is FALSE(), it returns the probability density function."
  1981. }
  1982. ]
  1983. },
  1984. "MINA": {
  1985. "d": "Returns the minimum numeric value in a dataset.",
  1986. "a": "Minimum numeric value in a dataset.",
  1987. "p": [
  1988. {
  1989. "name": "value1",
  1990. "detail": "The first value or range to consider when calculating the minimum value."
  1991. },
  1992. {
  1993. "name": "value2",
  1994. "detail": "Additional values or ranges to consider when calculating the minimum value."
  1995. }
  1996. ]
  1997. },
  1998. "MIN": {
  1999. "d": "Returns the minimum value in a numeric dataset.",
  2000. "a": "Minimum value in a numeric dataset.",
  2001. "p": [
  2002. {
  2003. "name": "value1",
  2004. "detail": "The first value or range to consider when calculating the minimum value."
  2005. },
  2006. {
  2007. "name": "value2",
  2008. "detail": "Additional values or ranges to consider when calculating the minimum value."
  2009. }
  2010. ]
  2011. },
  2012. "MEDIAN": {
  2013. "d": "Returns the median value in a numeric dataset.",
  2014. "a": "Median value in a numeric dataset.",
  2015. "p": [
  2016. {
  2017. "name": "value1",
  2018. "detail": "The first value or range to consider when calculating the median value."
  2019. },
  2020. {
  2021. "name": "value2",
  2022. "detail": "Additional values or ranges to consider when calculating the median value."
  2023. }
  2024. ]
  2025. },
  2026. "MAXA": {
  2027. "d": "Returns the maximum numeric value in a dataset.",
  2028. "a": "Maximum numeric value in a dataset.",
  2029. "p": [
  2030. {
  2031. "name": "value1",
  2032. "detail": "The first value or range to consider when calculating the maximum value."
  2033. },
  2034. {
  2035. "name": "value2",
  2036. "detail": "Additional values or ranges to consider when calculating the maximum value."
  2037. }
  2038. ]
  2039. },
  2040. "MAX": {
  2041. "d": "Returns the maximum value in a numeric dataset.",
  2042. "a": "Maximum value in a numeric dataset.",
  2043. "p": [
  2044. {
  2045. "name": "value1",
  2046. "detail": "The first value or range to consider when calculating the maximum value."
  2047. },
  2048. {
  2049. "name": "value2",
  2050. "detail": "Additional values or ranges to consider when calculating the maximum value."
  2051. }
  2052. ]
  2053. },
  2054. "LOGNORM_INV": {
  2055. "d": "Returns the value of the inverse log-normal cumulative distribution with given mean and standard deviation at a specified value.",
  2056. "a": "Inverse log-normal cumulative distribution function.",
  2057. "p": [
  2058. {
  2059. "name": "x",
  2060. "detail": "The input to the inverse log-normal cumulative distribution function."
  2061. },
  2062. {
  2063. "name": "mean",
  2064. "detail": "The mean (mu) of the inverse log-normal cumulative distribution function."
  2065. },
  2066. {
  2067. "name": "standard_deviation",
  2068. "detail": "The standard deviation (sigma) of the inverse log-normal cumulative distribution function."
  2069. }
  2070. ]
  2071. },
  2072. "LOGNORM_DIST": {
  2073. "d": "Returns the value of the log-normal cumulative distribution with given mean and standard deviation at a specified value.",
  2074. "a": "Log-normal cumulative distribution probability.",
  2075. "p": [
  2076. {
  2077. "name": "x",
  2078. "detail": "The input to the log-normal cumulative distribution function."
  2079. },
  2080. {
  2081. "name": "mean",
  2082. "detail": "The mean (mu) of the log-normal cumulative distribution function."
  2083. },
  2084. {
  2085. "name": "standard_deviation",
  2086. "detail": "The standard deviation (sigma) of the log-normal cumulative distribution function."
  2087. },
  2088. {
  2089. "name": "cumulative",
  2090. "detail": "Determine the logical value of the function form. \n\nIf TRUE(), it returns the cumulative distribution function;\n\nIf it is FALSE(), it returns the probability density function."
  2091. }
  2092. ]
  2093. },
  2094. "Z_TEST": {
  2095. "d": "Returns the one-tailed p-value of a Z-test with standard distribution.",
  2096. "a": "One-tailed p-value of a z-test.",
  2097. "p": [
  2098. {
  2099. "name": "data",
  2100. "detail": "The array or range containing the dataset to consider."
  2101. },
  2102. {
  2103. "name": "value",
  2104. "detail": "The test statistic to use in the Z-test."
  2105. },
  2106. {
  2107. "name": "standard_deviation",
  2108. "detail": "The standard deviation to assume for the Z-test. If this is not provided, the standard deviation of the data will be used."
  2109. }
  2110. ]
  2111. },
  2112. "PROB": {
  2113. "d": "Given a set of values and corresponding probabilities, calculates the probability that a value chosen at random falls between two limits.",
  2114. "a": "Probability values lie in a range.",
  2115. "p": [
  2116. {
  2117. "name": "data",
  2118. "detail": "Array or range containing the dataset to consider."
  2119. },
  2120. {
  2121. "name": "probabilities",
  2122. "detail": "Array or range containing probabilities corresponding to `data`."
  2123. },
  2124. {
  2125. "name": "low_limit",
  2126. "detail": "The lower bound on the value range for which to calculate the probability."
  2127. },
  2128. {
  2129. "name": "high_limit",
  2130. "detail": "The upper bound on the value range for which to calculate the probability."
  2131. }
  2132. ]
  2133. },
  2134. "QUARTILE_EXC": {
  2135. "d": "Returns a value nearest to a specified quartile of a dataset exclusive of 0 and 4.",
  2136. "a": "Value nearest to a specific quartile of a dataset exclusive of 0 and 4.",
  2137. "p": [
  2138. {
  2139. "name": "data",
  2140. "detail": "The array or range containing the dataset to consider."
  2141. },
  2142. {
  2143. "name": "quartile_number",
  2144. "detail": "Which quartile to return."
  2145. }
  2146. ]
  2147. },
  2148. "QUARTILE_INC": {
  2149. "d": "Returns a value nearest to a specified quartile of a dataset.",
  2150. "a": "Value nearest to a specific quartile of a dataset.",
  2151. "p": [
  2152. {
  2153. "name": "data",
  2154. "detail": "The array or range containing the dataset to consider."
  2155. },
  2156. {
  2157. "name": "quartile_number",
  2158. "detail": "Which quartile value to return."
  2159. }
  2160. ]
  2161. },
  2162. "POISSON_DIST": {
  2163. "d": "Returns the value of the Poisson distribution function (or Poisson cumulative distribution function) for a specified value and mean.",
  2164. "a": "Poisson distribution function.",
  2165. "p": [
  2166. {
  2167. "name": "x",
  2168. "detail": "The input to the Poisson distribution function."
  2169. },
  2170. {
  2171. "name": "mean",
  2172. "detail": "The mean (mu) of the Poisson distribution function."
  2173. },
  2174. {
  2175. "name": "cumulative",
  2176. "detail": "Whether to use the Poisson cumulative distribution function rather than the distribution function."
  2177. }
  2178. ]
  2179. },
  2180. "RSQ": {
  2181. "d": "Calculates the square of r, the Pearson product-moment correlation coefficient of a dataset.",
  2182. "a": "Square of the correlation coefficient.",
  2183. "p": [
  2184. {
  2185. "name": "data_y",
  2186. "detail": "The range representing the array or matrix of dependent data."
  2187. },
  2188. {
  2189. "name": "data_x",
  2190. "detail": "The range representing the array or matrix of independent data."
  2191. }
  2192. ]
  2193. },
  2194. "T_DIST": {
  2195. "d": "Calculates the left tail probability for a Student's t-distribution with a given input (x).",
  2196. "a": "The left-tailed Student's t-distribution",
  2197. "p": [
  2198. {
  2199. "name": "x",
  2200. "detail": "The input to the t-distribution function."
  2201. },
  2202. {
  2203. "name": "degrees_freedom",
  2204. "detail": "The number of degrees of freedom."
  2205. },
  2206. {
  2207. "name": "cumulative",
  2208. "detail": "If cumulative is TRUE, T.DIST returns the cumulative distribution function; if FALSE, it returns the probability density function."
  2209. }
  2210. ]
  2211. },
  2212. "T_DIST_2T": {
  2213. "d": "Calculates the probability for two tailed Student's t-distribution with a given input (x).",
  2214. "a": "The two tailed Student's t-distribution",
  2215. "p": [
  2216. {
  2217. "name": "x",
  2218. "detail": "The input to the t-distribution function."
  2219. },
  2220. {
  2221. "name": "degrees_freedom",
  2222. "detail": "The number of degrees of freedom."
  2223. }
  2224. ]
  2225. },
  2226. "T_DIST_RT": {
  2227. "d": "Calculates the right tail probability for a Student's t-distribution with a given input (x).",
  2228. "a": "The right-tailed Student's t-distribution",
  2229. "p": [
  2230. {
  2231. "name": "x",
  2232. "detail": "The input to the t-distribution function."
  2233. },
  2234. {
  2235. "name": "degrees_freedom",
  2236. "detail": "The number of degrees of freedom."
  2237. }
  2238. ]
  2239. },
  2240. "T_INV": {
  2241. "d": "Calculates the negative inverse of the one-tailed TDIST function.",
  2242. "a": "T.INV",
  2243. "p": [
  2244. {
  2245. "name": "probability",
  2246. "detail": "The probability associated with the two-tailed t-distribution."
  2247. },
  2248. {
  2249. "name": "degrees_freedom",
  2250. "detail": "The number of degrees of freedom."
  2251. }
  2252. ]
  2253. },
  2254. "T_INV_2T": {
  2255. "d": "Calculates the inverse of the two-tailed TDIST function.",
  2256. "a": "T.INV.2T",
  2257. "p": [
  2258. {
  2259. "name": "probability",
  2260. "detail": "The probability associated with the two-tailed t-distribution."
  2261. },
  2262. {
  2263. "name": "degrees_freedom",
  2264. "detail": "The number of degrees of freedom."
  2265. }
  2266. ]
  2267. },
  2268. "T_TEST": {
  2269. "d": "t-test. Returns the probability associated with Student's t-test. Determines whether two samples are likely to have come from the same two underlying populations that have the same mean.",
  2270. "a": "Returns the probability associated with t-test.",
  2271. "p": [
  2272. {
  2273. "name": "range1",
  2274. "detail": "The first sample of data or group of cells to consider for the t-test."
  2275. },
  2276. {
  2277. "name": "range2",
  2278. "detail": "The second sample of data or group of cells to consider for the t-test."
  2279. },
  2280. {
  2281. "name": "tails",
  2282. "detail": "Specifies the number of distribution tails."
  2283. },
  2284. {
  2285. "name": "type",
  2286. "detail": "Specifies the type of t-test."
  2287. }
  2288. ]
  2289. },
  2290. "F_DIST": {
  2291. "d": "Calculates the left-tailed F probability distribution (degree of diversity) for two data sets with given input x. Alternately called Fisher-Snedecor distribution or Snedecor's F distribution.",
  2292. "a": "F probability distribution (left-tailed).",
  2293. "p": [
  2294. {
  2295. "name": "x",
  2296. "detail": "The input to the F probability distribution function. The value at which to evaluate the function."
  2297. },
  2298. {
  2299. "name": "degrees_freedom1",
  2300. "detail": "The numerator of the number of degrees of freedom."
  2301. },
  2302. {
  2303. "name": "degrees_freedom2",
  2304. "detail": "The denominator of the number of degrees of freedom."
  2305. },
  2306. {
  2307. "name": "cumulative",
  2308. "detail": "Logical value that determines the form of the function."
  2309. }
  2310. ]
  2311. },
  2312. "F_DIST_RT": {
  2313. "d": "Calculates the right-tailed F probability distribution (degree of diversity) for two data sets with given input x. Alternately called Fisher-Snedecor distribution or Snedecor's F distribution.",
  2314. "a": "F probability distribution.",
  2315. "p": [
  2316. {
  2317. "name": "x",
  2318. "detail": "The input to the F probability distribution function. The value at which to evaluate the function."
  2319. },
  2320. {
  2321. "name": "degrees_freedom1",
  2322. "detail": "The numerator of the number of degrees of freedom."
  2323. },
  2324. {
  2325. "name": "degrees_freedom2",
  2326. "detail": "The denominator of the number of degrees of freedom."
  2327. }
  2328. ]
  2329. },
  2330. "VAR_P": {
  2331. "d": "Calculates the variance based on an entire population.",
  2332. "a": "Variance of entire population.",
  2333. "p": [
  2334. {
  2335. "name": "value1",
  2336. "detail": "The first value or range of the population."
  2337. },
  2338. {
  2339. "name": "value2",
  2340. "detail": "Additional values or ranges to include in the population."
  2341. }
  2342. ]
  2343. },
  2344. "VAR_S": {
  2345. "d": "Calculates the variance based on a sample.",
  2346. "a": "Variance.",
  2347. "p": [
  2348. {
  2349. "name": "value1",
  2350. "detail": "The first value or range of the sample."
  2351. },
  2352. {
  2353. "name": "value2",
  2354. "detail": "Additional values or ranges to include in the sample."
  2355. }
  2356. ]
  2357. },
  2358. "VARA": {
  2359. "d": "Calculates the variance based on a sample, setting text to the value `0`.",
  2360. "a": "Variance of sample (text as 0).",
  2361. "p": [
  2362. {
  2363. "name": "value1",
  2364. "detail": "The first value or range of the sample."
  2365. },
  2366. {
  2367. "name": "value2",
  2368. "detail": "Additional values or ranges to include in the sample."
  2369. }
  2370. ]
  2371. },
  2372. "VARPA": {
  2373. "d": "Calculates the variance based on an entire population, setting text to the value `0`.",
  2374. "a": "Variance of entire population (text as 0).",
  2375. "p": [
  2376. {
  2377. "name": "value1",
  2378. "detail": "The first value or range of the population."
  2379. },
  2380. {
  2381. "name": "value2",
  2382. "detail": "Additional values or ranges to include in the population."
  2383. }
  2384. ]
  2385. },
  2386. "STEYX": {
  2387. "d": "Calculates the standard error of the predicted y-value for each x in the regression of a dataset.",
  2388. "a": "Standard error of predicted y-values in regression.",
  2389. "p": [
  2390. {
  2391. "name": "data_y",
  2392. "detail": "The range representing the array or matrix of dependent data."
  2393. },
  2394. {
  2395. "name": "data_x",
  2396. "detail": "The range representing the array or matrix of independent data."
  2397. }
  2398. ]
  2399. },
  2400. "STANDARDIZE": {
  2401. "d": "Calculates the normalized equivalent of a random variable given mean and standard deviation of the distribution.",
  2402. "a": "Normalized equivalent of a random variable.",
  2403. "p": [
  2404. {
  2405. "name": "value",
  2406. "detail": "The value of the random variable to normalize."
  2407. },
  2408. {
  2409. "name": "mean",
  2410. "detail": "The mean of the distribution."
  2411. },
  2412. {
  2413. "name": "standard_deviation",
  2414. "detail": "The standard deviation of the distribution."
  2415. }
  2416. ]
  2417. },
  2418. "SMALL": {
  2419. "d": "Returns the nth smallest element from a data set, where n is user-defined.",
  2420. "a": "Nth smallest element in a data set.",
  2421. "p": [
  2422. {
  2423. "name": "data",
  2424. "detail": "The array or range containing the dataset to consider."
  2425. },
  2426. {
  2427. "name": "n",
  2428. "detail": "The rank from smallest to largest of the element to return."
  2429. }
  2430. ]
  2431. },
  2432. "SLOPE": {
  2433. "d": "Calculates the slope of the line resulting from linear regression of a dataset.",
  2434. "a": "Slope of line from linear regression of data.",
  2435. "p": [
  2436. {
  2437. "name": "data_y",
  2438. "detail": "The range representing the array or matrix of dependent data."
  2439. },
  2440. {
  2441. "name": "data_x",
  2442. "detail": "The range representing the array or matrix of independent data."
  2443. }
  2444. ]
  2445. },
  2446. "SKEW": {
  2447. "d": "Calculates the skewness of a dataset, which describes the symmetry of that dataset about the mean.",
  2448. "a": "Skewness of a dataset.",
  2449. "p": [
  2450. {
  2451. "name": "value1",
  2452. "detail": "The first value or range of the dataset."
  2453. },
  2454. {
  2455. "name": "value2",
  2456. "detail": "Additional values or ranges to include in the dataset."
  2457. }
  2458. ]
  2459. },
  2460. "SKEW_P": {
  2461. "d": "Calculates the skewness of a dataset, which describes the symmetry of that dataset about the mean. This assumes the dataset is for the population.",
  2462. "a": "Skewness of a population's dataset.",
  2463. "p": [
  2464. {
  2465. "name": "value1",
  2466. "detail": "The first value or range of the dataset."
  2467. },
  2468. {
  2469. "name": "value2",
  2470. "detail": "Additional values or ranges to include in the dataset."
  2471. }
  2472. ]
  2473. },
  2474. "VLOOKUP": {
  2475. "d": "Vertical lookup. Searches down the first column of a range for a key and returns the value of a specified cell in the row found.",
  2476. "a": "Vertical lookup.",
  2477. "p": [
  2478. {
  2479. "name": "search_key",
  2480. "detail": 'The value to search for. For example, `42`, `"Cats"`, or `I24`.'
  2481. },
  2482. {
  2483. "name": "range",
  2484. "detail": "The range to consider for the search. The first column in the range is searched for the key specified in `search_key`."
  2485. },
  2486. {
  2487. "name": "index",
  2488. "detail": "The column index of the value to be returned, where the first column in `range` is numbered 1."
  2489. },
  2490. {
  2491. "name": "is_sorted",
  2492. "detail": "Indicates whether the column to be searched (the first column of the specified range) is sorted, in which case the closest match for `search_key` will be returned."
  2493. }
  2494. ]
  2495. },
  2496. "HLOOKUP": {
  2497. "d": "Horizontal lookup. Searches across the first row of a range for a key and returns the value of a specified cell in the column found.",
  2498. "a": "Horizontal lookup",
  2499. "p": [
  2500. {
  2501. "name": "search_key",
  2502. "detail": 'The value to search for. For example, `42`, `"Cats"`, or `I24`.'
  2503. },
  2504. {
  2505. "name": "range",
  2506. "detail": "The range to consider for the search. The first row in the range is searched for the key specified in `search_key`."
  2507. },
  2508. {
  2509. "name": "index",
  2510. "detail": "The row index of the value to be returned, where the first row in `range` is numbered 1."
  2511. },
  2512. {
  2513. "name": "is_sorted",
  2514. "detail": "Indicates whether the row to be searched (the first row of the specified range) is sorted."
  2515. }
  2516. ]
  2517. },
  2518. "LOOKUP": {
  2519. "d": "Looks through a sorted row or column for a key and returns the value of the cell in a result range located in the same position as the search row or column.",
  2520. "a": "Look up a value.",
  2521. "p": [
  2522. {
  2523. "name": "search_key",
  2524. "detail": 'The value to search for in the row or column. For example, `42`, `"Cats"`, or `I24`.'
  2525. },
  2526. {
  2527. "name": "search_range|search_result_array",
  2528. "detail": "One method of using this function is to provide a single sorted row or column `search_range` to look through for the `search_key` with a second argument `result_range`. The other way is to combine these two arguments into one `search_result_array` where the first row or column is searched and a value is returned from the last row or column in the array. If `search_key` is not found, a non-exact match may be returned."
  2529. },
  2530. {
  2531. "name": "result_range",
  2532. "detail": "The range from which to return a result. The value returned corresponds to the location where `search_key` is found in `search_range`. This range must be only a single row or column and should not be used if using the `search_result_array` method."
  2533. }
  2534. ]
  2535. },
  2536. "ADDRESS": {
  2537. "d": "Returns a cell reference as a string.",
  2538. "a": "Cell reference as a string.",
  2539. "p": [
  2540. {
  2541. "name": "row",
  2542. "detail": "The row number of the cell reference"
  2543. },
  2544. {
  2545. "name": "column",
  2546. "detail": "The column number (not name) of the cell reference. `A` is column number `1`."
  2547. },
  2548. {
  2549. "name": "absolute_relative_mode",
  2550. "detail": "An indicator of whether the reference is row/column absolute. `1` is row and column absolute (e.g. $A$1), `2` is row absolute and column relative (e.g. A$1), `3` is row relative and column absolute (e.g. $A1), and `4` is row and column relative (e.g. A1)."
  2551. },
  2552. {
  2553. "name": "use_a1_notation",
  2554. "detail": "A boolean indicating whether to use `A1` style notation (TRUE) or `R1C1` style notation (FALSE)."
  2555. },
  2556. {
  2557. "name": "sheet",
  2558. "detail": "Text indicating the name of the sheet into which the address points."
  2559. }
  2560. ]
  2561. },
  2562. "INDIRECT": {
  2563. "d": "Returns a cell reference specified by a string.",
  2564. "a": "A cell reference specified by a string.",
  2565. "p": [
  2566. {
  2567. "name": "cell_reference_as_string",
  2568. "detail": "A cell reference, written as a string with surrounding quotation marks."
  2569. },
  2570. {
  2571. "name": "is_A1_notation",
  2572. "detail": "Indicates if the cell reference is in A1 notation (TRUE) or R1C1 notation (FALSE)."
  2573. }
  2574. ]
  2575. },
  2576. "ROW": {
  2577. "d": "Returns the row number of a specified cell.",
  2578. "a": "Row number of a specified cell.",
  2579. "p": [
  2580. {
  2581. "name": "cell_reference",
  2582. "detail": "The cell whose row number will be returned."
  2583. }
  2584. ]
  2585. },
  2586. "ROWS": {
  2587. "d": "Returns the number of rows in a specified array or range.",
  2588. "a": "Number of rows in a specified array or range.",
  2589. "p": [
  2590. {
  2591. "name": "range",
  2592. "detail": "The range whose row count will be returned."
  2593. }
  2594. ]
  2595. },
  2596. "COLUMN": {
  2597. "d": "Returns the column number of a specified cell, with `A=1`.",
  2598. "a": "Column number of a specified cell.",
  2599. "p": [
  2600. {
  2601. "name": "cell_reference",
  2602. "detail": "The cell whose column number will be returned. Column `A` corresponds to `1`."
  2603. }
  2604. ]
  2605. },
  2606. "COLUMNS": {
  2607. "d": "Returns the number of columns in a specified array or range.",
  2608. "a": "Number of columns in a specified array or range.",
  2609. "p": [
  2610. {
  2611. "name": "range",
  2612. "detail": "The range whose column count will be returned."
  2613. }
  2614. ]
  2615. },
  2616. "OFFSET": {
  2617. "d": "Returns a range reference shifted a specified number of rows and columns from a starting cell reference.",
  2618. "a": "A range reference offset relative to a cell.",
  2619. "p": [
  2620. {
  2621. "name": "cell_reference",
  2622. "detail": "The starting point from which to count the offset rows and columns."
  2623. },
  2624. {
  2625. "name": "offset_rows",
  2626. "detail": "The number of rows to offset by."
  2627. },
  2628. {
  2629. "name": "offset_columns",
  2630. "detail": "The number of columns to offset by."
  2631. },
  2632. {
  2633. "name": "height",
  2634. "detail": "The height of the range to return starting at the offset target."
  2635. },
  2636. {
  2637. "name": "width",
  2638. "detail": "The width of the range to return starting at the offset target."
  2639. }
  2640. ]
  2641. },
  2642. "MATCH": {
  2643. "d": "Returns the relative position of an item in a range that matches a specified value.",
  2644. "a": "Position of item in range that matches value.",
  2645. "p": [
  2646. {
  2647. "name": "search_key",
  2648. "detail": 'The value to search for. For example, `42`, `"Cats"`, or `I24`.'
  2649. },
  2650. {
  2651. "name": "range",
  2652. "detail": "The one-dimensional array to be searched."
  2653. },
  2654. {
  2655. "name": "search_type",
  2656. "detail": "The search method. `1` (default) finds the largest value less than or equal to `search_key` when `range` is sorted in ascending order. `0` finds the exact value when `range` is unsorted. `-1` finds the smallest value greater than or equal to `search_key` when `range` is sorted in descending order."
  2657. }
  2658. ]
  2659. },
  2660. "INDEX": {
  2661. "d": "Returns the content of a cell, specified by row and column offset.",
  2662. "a": "Content of cell specified by row and column offset.",
  2663. "p": [
  2664. {
  2665. "name": "reference",
  2666. "detail": "The array of cells to be offset into."
  2667. },
  2668. {
  2669. "name": "row",
  2670. "detail": "The number of offset rows."
  2671. },
  2672. {
  2673. "name": "column",
  2674. "detail": "The number of offset columns."
  2675. }
  2676. ]
  2677. },
  2678. "GETPIVOTDATA": {
  2679. "d": "Extracts an aggregated value from a pivot table that corresponds to the specified row and column headings.",
  2680. "a": "Extracts an aggregated value from a pivot table that corresponds to the specified row and column headings.",
  2681. "p": [
  2682. {
  2683. "name": "value_name",
  2684. "detail": "The name of the value in the pivot table for which you want to get data."
  2685. },
  2686. {
  2687. "name": "any_pivot_table_cell",
  2688. "detail": "Any reference to a cell in the desired pivot table (top corner recommended)."
  2689. },
  2690. {
  2691. "name": "original_column",
  2692. "detail": "The name of the column in the original data set (not the pivot table)."
  2693. },
  2694. {
  2695. "name": "pivot_item",
  2696. "detail": "The name of the row or column shown in the pivot table corresponding to *original_column* that you want to retrieve."
  2697. }
  2698. ]
  2699. },
  2700. "CHOOSE": {
  2701. "d": "Returns an element from a list of choices based on index.",
  2702. "a": "An element from a list of choices based on index.",
  2703. "p": [
  2704. {
  2705. "name": "index",
  2706. "detail": "Which choice (of the up to 30 provided) to return."
  2707. },
  2708. {
  2709. "name": "choice1",
  2710. "detail": "A potential value to return. Required. May be a reference to a cell or an individual value."
  2711. },
  2712. {
  2713. "name": "choice2",
  2714. "detail": "Additional values among which to choose."
  2715. }
  2716. ]
  2717. },
  2718. "HYPERLINK": {
  2719. "d": "Creates a hyperlink inside a cell.",
  2720. "a": "Creates a hyperlink inside a cell.",
  2721. "p": [
  2722. {
  2723. "name": "url",
  2724. "detail": "The full URL of the link location enclosed in quotation marks, or a reference to a cell containing such a URL."
  2725. },
  2726. {
  2727. "name": "link_label",
  2728. "detail": "The text to display in the cell as the link, enclosed in quotation marks, or a reference to a cell containing such a label."
  2729. }
  2730. ]
  2731. },
  2732. "TIME": {
  2733. "d": "Converts a provided hour, minute, and second into a time.",
  2734. "a": "Converts hour/minute/second into a time.",
  2735. "p": [
  2736. {
  2737. "name": "hour",
  2738. "detail": "The hour component of the time."
  2739. },
  2740. {
  2741. "name": "minute",
  2742. "detail": "The minute component of the time."
  2743. },
  2744. {
  2745. "name": "second",
  2746. "detail": "The second component of the time."
  2747. }
  2748. ]
  2749. },
  2750. "TIMEVALUE": {
  2751. "d": "Returns the fraction of a 24-hour day the time represents.",
  2752. "a": "Converts a time string into its serial number representation.",
  2753. "p": [
  2754. {
  2755. "name": "time_string",
  2756. "detail": "The string that holds the time representation."
  2757. }
  2758. ]
  2759. },
  2760. "EOMONTH": {
  2761. "d": "Returns a date on the last day of a month that falls a specified number of months before or after another date.",
  2762. "a": "Last day of a month before or after a date.",
  2763. "p": [
  2764. {
  2765. "name": "start_date",
  2766. "detail": "The date from which to calculate the result."
  2767. },
  2768. {
  2769. "name": "months",
  2770. "detail": "The number of months before (negative) or after (positive) 'start_date' to consider."
  2771. }
  2772. ]
  2773. },
  2774. "EDATE": {
  2775. "d": "Returns a date a specified number of months before or after another date.",
  2776. "a": "Date a number of months before/after another date.",
  2777. "p": [
  2778. {
  2779. "name": "start_date",
  2780. "detail": "The date from which to calculate the result."
  2781. },
  2782. {
  2783. "name": "months",
  2784. "detail": "The number of months before (negative) or after (positive) 'start_date' to calculate."
  2785. }
  2786. ]
  2787. },
  2788. "SECOND": {
  2789. "d": "Returns the second component of a specific time, in numeric format.",
  2790. "a": "Second component of a specific time.",
  2791. "p": [
  2792. {
  2793. "name": "time",
  2794. "detail": "The time from which to calculate the second component"
  2795. }
  2796. ]
  2797. },
  2798. "MINUTE": {
  2799. "d": "Returns the minute component of a specific time, in numeric format.",
  2800. "a": "Minute component of a specific time.",
  2801. "p": [
  2802. {
  2803. "name": "time",
  2804. "detail": "The time from which to calculate the minute component."
  2805. }
  2806. ]
  2807. },
  2808. "HOUR": {
  2809. "d": "Returns the hour component of a specific time, in numeric format.",
  2810. "a": "Hour component of a specific time.",
  2811. "p": [
  2812. {
  2813. "name": "time",
  2814. "detail": "The time from which to calculate the hour component."
  2815. }
  2816. ]
  2817. },
  2818. "NOW": {
  2819. "d": "Returns the current date and time as a date value.",
  2820. "a": "Current date and time as a date value.",
  2821. "p": []
  2822. },
  2823. "NETWORKDAYS": {
  2824. "d": "Returns the number of net working days between two provided days.",
  2825. "a": "Net working days between two provided days.",
  2826. "p": [
  2827. {
  2828. "name": "start_date",
  2829. "detail": "The start date of the period from which to calculate the number of net working days."
  2830. },
  2831. {
  2832. "name": "end_date",
  2833. "detail": "The end date of the period from which to calculate the number of net working days."
  2834. },
  2835. {
  2836. "name": "holidays",
  2837. "detail": "A range or array constant containing the date serial numbers to consider holidays."
  2838. }
  2839. ]
  2840. },
  2841. "NETWORKDAYS_INTL": {
  2842. "d": "Returns the number of net working days between two provided days excluding specified weekend days and holidays.",
  2843. "a": "Net working days between two dates (specifying weekends).",
  2844. "p": [
  2845. {
  2846. "name": "start_date",
  2847. "detail": "The start date of the period from which to calculate the number of net working days."
  2848. },
  2849. {
  2850. "name": "end_date",
  2851. "detail": "The end date of the period from which to calculate the number of net working days."
  2852. },
  2853. {
  2854. "name": "weekend",
  2855. "detail": "A number or string representing which days of the week are considered weekends."
  2856. },
  2857. {
  2858. "name": "holidays",
  2859. "detail": "A range or array constant containing the dates to consider as holidays."
  2860. }
  2861. ]
  2862. },
  2863. "ISOWEEKNUM": {
  2864. "d": "Returns a number representing the ISO week of the year where the provided date falls.",
  2865. "a": "ISO week number of the year.",
  2866. "p": [
  2867. {
  2868. "name": "date",
  2869. "detail": "The date for which to determine the ISO week number. Must be a reference to a cell containing a date, a function returning a date type, or a number."
  2870. }
  2871. ]
  2872. },
  2873. "WEEKNUM": {
  2874. "d": "Returns a number representing the week of the year where the provided date falls.",
  2875. "a": "Week number of the year.",
  2876. "p": [
  2877. {
  2878. "name": "date",
  2879. "detail": "The date for which to determine the week number. Must be a reference to a cell containing a date, a function returning a date type, or a number."
  2880. },
  2881. {
  2882. "name": "type",
  2883. "detail": "A number representing the day that a week starts on. Sunday = 1."
  2884. }
  2885. ]
  2886. },
  2887. "WEEKDAY": {
  2888. "d": "Returns a number representing the day of the week of the date provided.",
  2889. "a": "Day of the week of the date provided (as number).",
  2890. "p": [
  2891. {
  2892. "name": "date",
  2893. "detail": "The date for which to determine the day of the week. Must be a reference to a cell containing a date, a function returning a date type, or a number."
  2894. },
  2895. {
  2896. "name": "type",
  2897. "detail": "A number indicating which numbering system to use to represent weekdays. By default, counts starting with Sunday = 1."
  2898. }
  2899. ]
  2900. },
  2901. "DAY": {
  2902. "d": "Returns the day of the month that a specific date falls on, in numeric format.",
  2903. "a": "Day of the month that a specific date falls on.",
  2904. "p": [
  2905. {
  2906. "name": "date",
  2907. "detail": "The date from which to extract the day."
  2908. }
  2909. ]
  2910. },
  2911. "DAYS": {
  2912. "d": "Returns the number of days between two dates.",
  2913. "a": "Number of days between two dates.",
  2914. "p": [
  2915. {
  2916. "name": "end_date",
  2917. "detail": "The end of the date range."
  2918. },
  2919. {
  2920. "name": "start_date",
  2921. "detail": "The start of the date range."
  2922. }
  2923. ]
  2924. },
  2925. "DAYS360": {
  2926. "d": "Returns the difference between two days based on the 360 day year used in some financial interest calculations.",
  2927. "a": "Days between two dates on a 360-day year.",
  2928. "p": [
  2929. {
  2930. "name": "start_date",
  2931. "detail": "The start date to consider in the calculation. Must be a reference to a cell containing a date, a function returning a date type, or a number."
  2932. },
  2933. {
  2934. "name": "end_date",
  2935. "detail": "The end date to consider in the calculation. Must be a reference to a cell containing a date, a function returning a date type, or a number."
  2936. },
  2937. {
  2938. "name": "method",
  2939. "detail": "An indicator of what day count method to use."
  2940. }
  2941. ]
  2942. },
  2943. "DATE": {
  2944. "d": "Converts a provided year, month, and day into a date.",
  2945. "a": "Converts year/month/day into a date.",
  2946. "p": [
  2947. {
  2948. "name": "year",
  2949. "detail": "The year component of the date."
  2950. },
  2951. {
  2952. "name": "month",
  2953. "detail": "The month component of the date."
  2954. },
  2955. {
  2956. "name": "day",
  2957. "detail": "The day component of the date."
  2958. }
  2959. ]
  2960. },
  2961. "DATEVALUE": {
  2962. "d": "Converts a provided date string in a known format to a date value.",
  2963. "a": "Converts a date string to a date value.",
  2964. "p": [
  2965. {
  2966. "name": "date_string",
  2967. "detail": "The string representing the date."
  2968. }
  2969. ]
  2970. },
  2971. "DATEDIF": {
  2972. "d": "Calculates the number of days, months, or years between two dates.",
  2973. "a": "Date Difference.",
  2974. "p": [
  2975. {
  2976. "name": "start_date",
  2977. "detail": "The start date to consider in the calculation. Must be a reference to a cell containing a date, a function returning a date type, or a number."
  2978. },
  2979. {
  2980. "name": "end_date",
  2981. "detail": "The end date to consider in the calculation. Must be a reference to a cell containing a date, a function returning a date type, or a number."
  2982. },
  2983. {
  2984. "name": "unit",
  2985. "detail": 'A string abbreviation for unit of time. For example, "M" for month. Accepted values are "Y","M","D","MD","YM","YD".'
  2986. }
  2987. ]
  2988. },
  2989. "WORKDAY": {
  2990. "d": "Calculates the date after a number of working days from a specified start date.",
  2991. "a": "Number of working days from start date.",
  2992. "p": [
  2993. {
  2994. "name": "start_date",
  2995. "detail": "The date from which to begin counting."
  2996. },
  2997. {
  2998. "name": "num_days",
  2999. "detail": "The number of working days to advance from `start_date`. If negative, counts backwards."
  3000. },
  3001. {
  3002. "name": "holidays",
  3003. "detail": "A range or array constant containing the dates to consider holidays."
  3004. }
  3005. ]
  3006. },
  3007. "WORKDAY_INTL": {
  3008. "d": "Calculates the date after a specified number of workdays excluding specified weekend days and holidays.",
  3009. "a": "Date after a number of workdays (specifying weekends).",
  3010. "p": [
  3011. {
  3012. "name": "start_date",
  3013. "detail": "The date from which to begin counting."
  3014. },
  3015. {
  3016. "name": "num_days",
  3017. "detail": "The number of working days to advance from `start_date`. If negative, counts backwards."
  3018. },
  3019. {
  3020. "name": "weekend",
  3021. "detail": "A number or string representing which days of the week are considered weekends."
  3022. },
  3023. {
  3024. "name": "holidays",
  3025. "detail": "A range or array constant containing the dates to consider holidays."
  3026. }
  3027. ]
  3028. },
  3029. "YEAR": {
  3030. "d": "Returns the year specified by a given date.",
  3031. "a": "Year specified by a given date.",
  3032. "p": [
  3033. {
  3034. "name": "date",
  3035. "detail": "The date from which to extract the year."
  3036. }
  3037. ]
  3038. },
  3039. "YEARFRAC": {
  3040. "d": "Returns the number of years, including fractional years, between two dates using a specified day count convention.",
  3041. "a": "Exact number of years between two dates.",
  3042. "p": [
  3043. {
  3044. "name": "start_date",
  3045. "detail": "The start date to consider in the calculation. Must be a reference to a cell containing a date, a function returning a date type, or a number."
  3046. },
  3047. {
  3048. "name": "end_date",
  3049. "detail": "The end date to consider in the calculation. Must be a reference to a cell containing a date, a function returning a date type, or a number."
  3050. },
  3051. {
  3052. "name": "day_count_convention",
  3053. "detail": "An indicator of what day count method to use."
  3054. }
  3055. ]
  3056. },
  3057. "TODAY": {
  3058. "d": "Returns the current date as a date value.",
  3059. "a": "Current date as a date value.",
  3060. "p": []
  3061. },
  3062. "MONTH": {
  3063. "d": "Returns the month of the year a specific date falls in, in numeric format.",
  3064. "a": "Month of the year a specific date falls in.",
  3065. "p": [
  3066. {
  3067. "name": "date",
  3068. "detail": "The date from which to extract the month."
  3069. }
  3070. ]
  3071. },
  3072. "EFFECT": {
  3073. "d": "Calculates the annual effective interest rate given the nominal rate and number of compounding periods per year.",
  3074. "a": "Annual effective interest rate.",
  3075. "p": [
  3076. {
  3077. "name": "nominal_rate",
  3078. "detail": "The nominal interest rate per year."
  3079. },
  3080. {
  3081. "name": "periods_per_year",
  3082. "detail": "The number of compounding periods per year."
  3083. }
  3084. ]
  3085. },
  3086. "DOLLAR": {
  3087. "d": "Formats a number into the currency specific to your spreadsheet locale.",
  3088. "a": "Formats a number as currency specific to your spreadsheet locale.",
  3089. "p": [
  3090. {
  3091. "name": "number",
  3092. "detail": "The value to be formatted."
  3093. },
  3094. {
  3095. "name": "number_of_places",
  3096. "detail": "The number of decimal places to display."
  3097. }
  3098. ]
  3099. },
  3100. "DOLLARDE": {
  3101. "d": "Converts a price quotation given as a decimal fraction into a decimal value.",
  3102. "a": "Converts a decimal fraction to decimal value.",
  3103. "p": [
  3104. {
  3105. "name": "fractional_price",
  3106. "detail": "The price quotation given using fractional decimal conventions."
  3107. },
  3108. {
  3109. "name": "unit",
  3110. "detail": "The units of the fraction, e.g. `8` for 1/8ths or `32` for 1/32nds."
  3111. }
  3112. ]
  3113. },
  3114. "DOLLARFR": {
  3115. "d": "Converts a price quotation given as a decimal value into a decimal fraction.",
  3116. "a": "Converts a decimal value to decimal fraction.",
  3117. "p": [
  3118. {
  3119. "name": "decimal_price",
  3120. "detail": "The price quotation given as a decimal value."
  3121. },
  3122. {
  3123. "name": "unit",
  3124. "detail": "The units of the desired fraction, e.g. `8` for 1/8ths or `32` for 1/32nds."
  3125. }
  3126. ]
  3127. },
  3128. "DB": {
  3129. "d": "Calculates the depreciation of an asset for a specified period using the arithmetic declining balance method.",
  3130. "a": "Depreciation via declining balance method.",
  3131. "p": [
  3132. {
  3133. "name": "cost",
  3134. "detail": "The initial cost of the asset."
  3135. },
  3136. {
  3137. "name": "salvage",
  3138. "detail": "The value of the asset at the end of depreciation."
  3139. },
  3140. {
  3141. "name": "life",
  3142. "detail": "The number of periods over which the asset is depreciated."
  3143. },
  3144. {
  3145. "name": "period",
  3146. "detail": "The single period within `life` for which to calculate depreciation."
  3147. },
  3148. {
  3149. "name": "month",
  3150. "detail": "The number of months in the first year of depreciation."
  3151. }
  3152. ]
  3153. },
  3154. "DDB": {
  3155. "d": "Calculates the depreciation of an asset for a specified period using the double-declining balance method.",
  3156. "a": "Depreciation via double-declining balance method.",
  3157. "p": [
  3158. {
  3159. "name": "cost",
  3160. "detail": "The initial cost of the asset."
  3161. },
  3162. {
  3163. "name": "salvage",
  3164. "detail": "The value of the asset at the end of depreciation."
  3165. },
  3166. {
  3167. "name": "life",
  3168. "detail": "The number of periods over which the asset is depreciated."
  3169. },
  3170. {
  3171. "name": "period",
  3172. "detail": "The single period within `life` for which to calculate depreciation."
  3173. },
  3174. {
  3175. "name": "factor",
  3176. "detail": "The factor by which depreciation decreases."
  3177. }
  3178. ]
  3179. },
  3180. "RATE": {
  3181. "d": "Calculates the interest rate of an annuity investment based on constant-amount periodic payments and the assumption of a constant interest rate.",
  3182. "a": "Interest rate of an annuity investment.",
  3183. "p": [
  3184. {
  3185. "name": "number_of_periods",
  3186. "detail": "The number of payments to be made."
  3187. },
  3188. {
  3189. "name": "payment_per_period",
  3190. "detail": "The amount per period to be paid."
  3191. },
  3192. {
  3193. "name": "present_value",
  3194. "detail": "The current value of the annuity."
  3195. },
  3196. {
  3197. "name": "future_value",
  3198. "detail": "The future value remaining after the final payment has been made."
  3199. },
  3200. {
  3201. "name": "end_or_beginning",
  3202. "detail": "Whether payments are due at the end (`0`) or beginning (`1`) of each period."
  3203. },
  3204. {
  3205. "name": "rate_guess",
  3206. "detail": "An estimate for what the interest rate will be."
  3207. }
  3208. ]
  3209. },
  3210. "CUMPRINC": {
  3211. "d": "Calculates the cumulative principal paid over a range of payment periods for an investment based on constant-amount periodic payments and a constant interest rate.",
  3212. "a": "Cumulative principal paid over a set of periods.",
  3213. "p": [
  3214. {
  3215. "name": "rate",
  3216. "detail": "The interest rate."
  3217. },
  3218. {
  3219. "name": "number_of_periods",
  3220. "detail": "The number of payments to be made."
  3221. },
  3222. {
  3223. "name": "present_value",
  3224. "detail": "The current value of the annuity."
  3225. },
  3226. {
  3227. "name": "first_period",
  3228. "detail": "The number of the payment period to begin the cumulative calculation."
  3229. },
  3230. {
  3231. "name": "last_period",
  3232. "detail": "The number of the payment period to end the cumulative calculation."
  3233. },
  3234. {
  3235. "name": "end_or_beginning",
  3236. "detail": "Whether payments are due at the end (`0`) or beginning (`1`) of each period."
  3237. }
  3238. ]
  3239. },
  3240. "COUPNUM": {
  3241. "d": "Calculates the number of coupons, or interest payments, between the settlement date and the maturity date of the investment.",
  3242. "a": "Number of coupons between settlement and maturity.",
  3243. "p": [
  3244. {
  3245. "name": "settlement",
  3246. "detail": "The settlement date of the security, the date after issuance when the security is delivered to the buyer."
  3247. },
  3248. {
  3249. "name": "maturity",
  3250. "detail": "The maturity or end date of the security, when it can be redeemed at face, or par value."
  3251. },
  3252. {
  3253. "name": "frequency",
  3254. "detail": "The number of interest or coupon payments per year (1, 2, or 4)."
  3255. },
  3256. {
  3257. "name": "day_count_convention",
  3258. "detail": "An indicator of what day count method to use."
  3259. }
  3260. ]
  3261. },
  3262. "SYD": {
  3263. "d": "Calculates the depreciation of an asset for a specified period using the sum of years digits method.",
  3264. "a": "Depreciation via sum of years digits method.",
  3265. "p": [
  3266. {
  3267. "name": "cost",
  3268. "detail": "The initial cost of the asset."
  3269. },
  3270. {
  3271. "name": "salvage",
  3272. "detail": "The value of the asset at the end of depreciation."
  3273. },
  3274. {
  3275. "name": "life",
  3276. "detail": "The number of periods over which the asset is depreciated."
  3277. },
  3278. {
  3279. "name": "period",
  3280. "detail": "The single period within `life` for which to calculate depreciation."
  3281. }
  3282. ]
  3283. },
  3284. "TBILLEQ": {
  3285. "d": "Calculates the equivalent annualized rate of return of a US Treasury Bill based on discount rate.",
  3286. "a": "Equivalent rate of return for a Treasury bill.",
  3287. "p": [
  3288. {
  3289. "name": "settlement",
  3290. "detail": "The settlement date of the security, the date after issuance when the security is delivered to the buyer."
  3291. },
  3292. {
  3293. "name": "maturity",
  3294. "detail": "The maturity or end date of the security, when it can be redeemed at face, or par value."
  3295. },
  3296. {
  3297. "name": "discount",
  3298. "detail": "The discount rate of the bill at time of purchase."
  3299. }
  3300. ]
  3301. },
  3302. "TBILLYIELD": {
  3303. "d": "Calculates the yield of a US Treasury Bill based on price.",
  3304. "a": "The yield of a us treasury bill based on price.",
  3305. "p": [
  3306. {
  3307. "name": "settlement",
  3308. "detail": "The settlement date of the security, the date after issuance when the security is delivered to the buyer."
  3309. },
  3310. {
  3311. "name": "maturity",
  3312. "detail": "The maturity or end date of the security, when it can be redeemed at face, or par value."
  3313. },
  3314. {
  3315. "name": "price",
  3316. "detail": "The price at which the security is bought per 100 face value."
  3317. }
  3318. ]
  3319. },
  3320. "TBILLPRICE": {
  3321. "d": "Calculates the price of a US Treasury Bill based on discount rate.",
  3322. "a": "Price of US treasury bill.",
  3323. "p": [
  3324. {
  3325. "name": "settlement",
  3326. "detail": "The settlement date of the security, the date after issuance when the security is delivered to the buyer."
  3327. },
  3328. {
  3329. "name": "maturity",
  3330. "detail": "The maturity or end date of the security, when it can be redeemed at face, or par value."
  3331. },
  3332. {
  3333. "name": "discount",
  3334. "detail": "The discount rate of the bill at time of purchase."
  3335. }
  3336. ]
  3337. },
  3338. "PV": {
  3339. "d": "Calculates the present value of an annuity investment based on constant-amount periodic payments and a constant interest rate.",
  3340. "a": "Present value of an annuity investment.",
  3341. "p": [
  3342. {
  3343. "name": "rate",
  3344. "detail": "The interest rate."
  3345. },
  3346. {
  3347. "name": "number_of_periods",
  3348. "detail": "The number of payments to be made."
  3349. },
  3350. {
  3351. "name": "payment_amount",
  3352. "detail": "The amount per period to be paid."
  3353. },
  3354. {
  3355. "name": "future_value",
  3356. "detail": "The future value remaining after the final payment has been made."
  3357. },
  3358. {
  3359. "name": "end_or_beginning",
  3360. "detail": "Whether payments are due at the end (`0`) or beginning (`1`) of each period."
  3361. }
  3362. ]
  3363. },
  3364. "ACCRINT": {
  3365. "d": "Calculates the accrued interest of a security that has periodic payments.",
  3366. "a": "Accrued interest of security with periodic payments.",
  3367. "p": [
  3368. {
  3369. "name": "issue",
  3370. "detail": "The date the security was initially issued."
  3371. },
  3372. {
  3373. "name": "first_payment",
  3374. "detail": "The first date interest will be paid."
  3375. },
  3376. {
  3377. "name": "settlement",
  3378. "detail": "The settlement date of the security, the date after issuance when the security is delivered to the buyer."
  3379. },
  3380. {
  3381. "name": "rate",
  3382. "detail": "The annualized rate of interest."
  3383. },
  3384. {
  3385. "name": "redemption",
  3386. "detail": "The redemption amount per 100 face value, or par."
  3387. },
  3388. {
  3389. "name": "frequency",
  3390. "detail": "The number of interest or coupon payments per year (1, 2, or 4)."
  3391. },
  3392. {
  3393. "name": "day_count_convention",
  3394. "detail": "An indicator of what day count method to use."
  3395. },
  3396. {
  3397. "name": "calc_method",
  3398. "detail": "[Optional-defaults to TRUE()] - A logical value that specifies the method used to calculate the total accrued interest when the settlement date is later than the first interest accrual date. \n\nIf the value is TRUE, the total accrued interest from the issue date to the settlement date is returned. \n\nIf the value is FALSE, return the accrued interest from the first interest accrual date to the settlement date."
  3399. }
  3400. ]
  3401. },
  3402. "ACCRINTM": {
  3403. "d": "Calculates the accrued interest of a security that pays interest at maturity.",
  3404. "a": "Accrued interest of security paying at maturity.",
  3405. "p": [
  3406. {
  3407. "name": "issue",
  3408. "detail": "The date the security was initially issued."
  3409. },
  3410. {
  3411. "name": "maturity",
  3412. "detail": "The maturity date of the security."
  3413. },
  3414. {
  3415. "name": "rate",
  3416. "detail": "The annualized rate of interest."
  3417. },
  3418. {
  3419. "name": "redemption",
  3420. "detail": "The redemption amount per 100 face value, or par."
  3421. },
  3422. {
  3423. "name": "day_count_convention",
  3424. "detail": "An indicator of what day count method to use."
  3425. }
  3426. ]
  3427. },
  3428. "COUPDAYBS": {
  3429. "d": "Calculates the number of days from the first coupon, or interest payment, until settlement.",
  3430. "a": "Number of days from first coupon to settlement.",
  3431. "p": [
  3432. {
  3433. "name": "settlement",
  3434. "detail": "The settlement date of the security, the date after issuance when the security is delivered to the buyer."
  3435. },
  3436. {
  3437. "name": "maturity",
  3438. "detail": "The maturity or end date of the security, when it can be redeemed at face, or par value."
  3439. },
  3440. {
  3441. "name": "frequency",
  3442. "detail": "The number of interest or coupon payments per year (1, 2, or 4)."
  3443. },
  3444. {
  3445. "name": "day_count_convention",
  3446. "detail": "An indicator of what day count method to use."
  3447. }
  3448. ]
  3449. },
  3450. "COUPDAYS": {
  3451. "d": "Calculates the number of days in the coupon, or interest payment, period that contains the specified settlement date.",
  3452. "a": "Days in coupon period containing settlement date.",
  3453. "p": [
  3454. {
  3455. "name": "settlement",
  3456. "detail": "The settlement date of the security, the date after issuance when the security is delivered to the buyer."
  3457. },
  3458. {
  3459. "name": "maturity",
  3460. "detail": "The maturity or end date of the security, when it can be redeemed at face, or par value."
  3461. },
  3462. {
  3463. "name": "frequency",
  3464. "detail": "The number of interest or coupon payments per year (1, 2, or 4)."
  3465. },
  3466. {
  3467. "name": "day_count_convention",
  3468. "detail": "An indicator of what day count method to use."
  3469. }
  3470. ]
  3471. },
  3472. "COUPDAYSNC": {
  3473. "d": "Calculates the number of days from the settlement date until the next coupon, or interest payment.",
  3474. "a": "Days from settlement until next coupon.",
  3475. "p": [
  3476. {
  3477. "name": "settlement",
  3478. "detail": "The settlement date of the security, the date after issuance when the security is delivered to the buyer."
  3479. },
  3480. {
  3481. "name": "maturity",
  3482. "detail": "The maturity or end date of the security, when it can be redeemed at face, or par value."
  3483. },
  3484. {
  3485. "name": "frequency",
  3486. "detail": "The number of interest or coupon payments per year (1, 2, or 4)."
  3487. },
  3488. {
  3489. "name": "day_count_convention",
  3490. "detail": "An indicator of what day count method to use."
  3491. }
  3492. ]
  3493. },
  3494. "COUPNCD": {
  3495. "d": "Calculates next coupon, or interest payment, date after the settlement date.",
  3496. "a": "Next coupon date after the settlement date.",
  3497. "p": [
  3498. {
  3499. "name": "settlement",
  3500. "detail": "The settlement date of the security, the date after issuance when the security is delivered to the buyer."
  3501. },
  3502. {
  3503. "name": "maturity",
  3504. "detail": "The maturity or end date of the security, when it can be redeemed at face, or par value."
  3505. },
  3506. {
  3507. "name": "frequency",
  3508. "detail": "The number of interest or coupon payments per year (1, 2, or 4)."
  3509. },
  3510. {
  3511. "name": "day_count_convention",
  3512. "detail": "An indicator of what day count method to use."
  3513. }
  3514. ]
  3515. },
  3516. "COUPPCD": {
  3517. "d": "Calculates last coupon, or interest payment, date before the settlement date.",
  3518. "a": "Last coupon date before settlement date.",
  3519. "p": [
  3520. {
  3521. "name": "settlement",
  3522. "detail": "The settlement date of the security, the date after issuance when the security is delivered to the buyer."
  3523. },
  3524. {
  3525. "name": "maturity",
  3526. "detail": "The maturity or end date of the security, when it can be redeemed at face, or par value."
  3527. },
  3528. {
  3529. "name": "frequency",
  3530. "detail": "The number of interest or coupon payments per year (1, 2, or 4)."
  3531. },
  3532. {
  3533. "name": "day_count_convention",
  3534. "detail": "An indicator of what day count method to use."
  3535. }
  3536. ]
  3537. },
  3538. "FV": {
  3539. "d": "Calculates the future value of an annuity investment based on constant-amount periodic payments and a constant interest rate.",
  3540. "a": "Future value of an annuity investment.",
  3541. "p": [
  3542. {
  3543. "name": "rate",
  3544. "detail": "The interest rate."
  3545. },
  3546. {
  3547. "name": "number_of_periods",
  3548. "detail": "The number of payments to be made."
  3549. },
  3550. {
  3551. "name": "payment_amount",
  3552. "detail": "The amount per period to be paid."
  3553. },
  3554. {
  3555. "name": "present_value",
  3556. "detail": "The current value of the annuity."
  3557. },
  3558. {
  3559. "name": "end_or_beginning",
  3560. "detail": "Whether payments are due at the end (`0`) or beginning (`1`) of each period."
  3561. }
  3562. ]
  3563. },
  3564. "FVSCHEDULE": {
  3565. "d": "Calculates the future value of some principal based on a specified series of potentially varying interest rates.",
  3566. "a": "Future value of principal from series of rates.",
  3567. "p": [
  3568. {
  3569. "name": "principal",
  3570. "detail": "The amount of initial capital or value to compound against."
  3571. },
  3572. {
  3573. "name": "rate_schedule",
  3574. "detail": "A series of interest rates to compound against the `principal`."
  3575. }
  3576. ]
  3577. },
  3578. "YIELD": {
  3579. "d": "Calculates the annual yield of a security paying periodic interest, such as a US Treasury Bond, based on price.",
  3580. "a": "Annual yield of a security paying periodic interest.",
  3581. "p": [
  3582. {
  3583. "name": "settlement",
  3584. "detail": "The settlement date of the security, the date after issuance when the security is delivered to the buyer."
  3585. },
  3586. {
  3587. "name": "maturity",
  3588. "detail": "The maturity or end date of the security, when it can be redeemed at face, or par value."
  3589. },
  3590. {
  3591. "name": "rate",
  3592. "detail": "The annualized rate of interest."
  3593. },
  3594. {
  3595. "name": "price",
  3596. "detail": "The price at which the security is bought per 100 face value."
  3597. },
  3598. {
  3599. "name": "redemption",
  3600. "detail": "The redemption amount per 100 face value, or par."
  3601. },
  3602. {
  3603. "name": "frequency",
  3604. "detail": "The number of interest or coupon payments per year (1, 2, or 4)."
  3605. },
  3606. {
  3607. "name": "day_count_convention",
  3608. "detail": "An indicator of what day count method to use."
  3609. }
  3610. ]
  3611. },
  3612. "YIELDDISC": {
  3613. "d": "Calculates the annual yield of a discount (non-interest-bearing) security, based on price.",
  3614. "a": "Annual yield of a discount security.",
  3615. "p": [
  3616. {
  3617. "name": "settlement",
  3618. "detail": "The settlement date of the security, the date after issuance when the security is delivered to the buyer."
  3619. },
  3620. {
  3621. "name": "maturity",
  3622. "detail": "The maturity or end date of the security, when it can be redeemed at face, or par value."
  3623. },
  3624. {
  3625. "name": "price",
  3626. "detail": "The price at which the security is bought per 100 face value."
  3627. },
  3628. {
  3629. "name": "redemption",
  3630. "detail": "The redemption amount per 100 face value, or par."
  3631. },
  3632. {
  3633. "name": "day_count_convention",
  3634. "detail": "An indicator of what day count method to use."
  3635. }
  3636. ]
  3637. },
  3638. "NOMINAL": {
  3639. "d": "Calculates the annual nominal interest rate given the effective rate and number of compounding periods per year.",
  3640. "a": "Annual nominal interest rate.",
  3641. "p": [
  3642. {
  3643. "name": "effective_rate",
  3644. "detail": "The effective interest rate per year."
  3645. },
  3646. {
  3647. "name": "periods_per_year",
  3648. "detail": "The number of compounding periods per year."
  3649. }
  3650. ]
  3651. },
  3652. "XIRR": {
  3653. "d": "Calculates the internal rate of return of an investment based on a specified series of potentially irregularly spaced cash flows.",
  3654. "a": "Internal rate of return given non-periodic cashflows.",
  3655. "p": [
  3656. {
  3657. "name": "cashflow_amounts",
  3658. "detail": "An array or range containing the income or payments associated with the investment."
  3659. },
  3660. {
  3661. "name": "cashflow_dates",
  3662. "detail": "An array or range with dates corresponding to the cash flows in `cashflow_amounts`."
  3663. },
  3664. {
  3665. "name": "rate_guess",
  3666. "detail": "An estimate for what the internal rate of return will be."
  3667. }
  3668. ]
  3669. },
  3670. "MIRR": {
  3671. "d": "Calculates the modified internal rate of return on an investment based on a series of periodic cash flows and the difference between the interest rate paid on financing versus the return received on reinvested income.",
  3672. "a": "Modified internal rate of return.",
  3673. "p": [
  3674. {
  3675. "name": "cashflow_amounts",
  3676. "detail": "An array or range containing the income or payments associated with the investment."
  3677. },
  3678. {
  3679. "name": "financing_rate",
  3680. "detail": "The interest rate paid on funds invested."
  3681. },
  3682. {
  3683. "name": "reinvestment_return_rate",
  3684. "detail": "The return (as a percentage) earned on reinvestment of income received from the investment."
  3685. }
  3686. ]
  3687. },
  3688. "IRR": {
  3689. "d": "Calculates the internal rate of return on an investment based on a series of periodic cash flows.",
  3690. "a": "Internal rate of return given periodic cashflows.",
  3691. "p": [
  3692. {
  3693. "name": "cashflow_amounts",
  3694. "detail": "An array or range containing the income or payments associated with the investment."
  3695. },
  3696. {
  3697. "name": "rate_guess",
  3698. "detail": "An estimate for what the internal rate of return will be."
  3699. }
  3700. ]
  3701. },
  3702. "NPV": {
  3703. "d": "Calculates the net present value of an investment based on a series of periodic cash flows and a discount rate.",
  3704. "a": "The net present value of an investment based on a series of periodic cash flows and a discount rate.",
  3705. "p": [
  3706. {
  3707. "name": "discount",
  3708. "detail": "The discount rate of the investment over one period."
  3709. },
  3710. {
  3711. "name": "cashflow1",
  3712. "detail": "The first future cash flow."
  3713. },
  3714. {
  3715. "name": "cashflow2",
  3716. "detail": "Additional future cash flows."
  3717. }
  3718. ]
  3719. },
  3720. "XNPV": {
  3721. "d": "Calculates the net present value of an investment based on a specified series of potentially irregularly spaced cash flows and a discount rate.",
  3722. "a": "Net present value given non-periodic cashflows.",
  3723. "p": [
  3724. {
  3725. "name": "discount",
  3726. "detail": "The discount rate of the investment over one period."
  3727. },
  3728. {
  3729. "name": "cashflow_amounts",
  3730. "detail": "A range of cells containing the income or payments associated with the investment."
  3731. },
  3732. {
  3733. "name": "cashflow_dates",
  3734. "detail": "A range of cells with dates corresponding to the cash flows in `cashflow_amounts`."
  3735. }
  3736. ]
  3737. },
  3738. "CUMIPMT": {
  3739. "d": "Calculates the cumulative interest over a range of payment periods for an investment based on constant-amount periodic payments and a constant interest rate.",
  3740. "a": "Cumulative interest paid over a set of periods.",
  3741. "p": [
  3742. {
  3743. "name": "rate",
  3744. "detail": "The interest rate."
  3745. },
  3746. {
  3747. "name": "number_of_periods",
  3748. "detail": "The number of payments to be made."
  3749. },
  3750. {
  3751. "name": "present_value",
  3752. "detail": "The current value of the annuity."
  3753. },
  3754. {
  3755. "name": "first_period",
  3756. "detail": "The number of the payment period to begin the cumulative calculation."
  3757. },
  3758. {
  3759. "name": "last_period",
  3760. "detail": "The number of the payment period to end the cumulative calculation."
  3761. },
  3762. {
  3763. "name": "end_or_beginning",
  3764. "detail": "Whether payments are due at the end (`0`) or beginning (`1`) of each period."
  3765. }
  3766. ]
  3767. },
  3768. "PMT": {
  3769. "d": "Calculates the periodic payment for an annuity investment based on constant-amount periodic payments and a constant interest rate.",
  3770. "a": "Periodic payment for an annuity investment.",
  3771. "p": [
  3772. {
  3773. "name": "rate",
  3774. "detail": "The interest rate."
  3775. },
  3776. {
  3777. "name": "number_of_periods",
  3778. "detail": "The number of payments to be made."
  3779. },
  3780. {
  3781. "name": "present_value",
  3782. "detail": "The current value of the annuity."
  3783. },
  3784. {
  3785. "name": "future_value",
  3786. "detail": "The future value remaining after the final payment has been made."
  3787. },
  3788. {
  3789. "name": "end_or_beginning",
  3790. "detail": "Whether payments are due at the end (`0`) or beginning (`1`) of each period."
  3791. }
  3792. ]
  3793. },
  3794. "IPMT": {
  3795. "d": "Calculates the payment on interest for an investment based on constant-amount periodic payments and a constant interest rate.",
  3796. "a": "Payment on interest for an investment.",
  3797. "p": [
  3798. {
  3799. "name": "rate",
  3800. "detail": "The interest rate."
  3801. },
  3802. {
  3803. "name": "period",
  3804. "detail": "The amortization period, in terms of number of periods."
  3805. },
  3806. {
  3807. "name": "number_of_periods",
  3808. "detail": "The number of payments to be made."
  3809. },
  3810. {
  3811. "name": "present_value",
  3812. "detail": "The current value of the annuity."
  3813. },
  3814. {
  3815. "name": "future_value",
  3816. "detail": "The future value remaining after the final payment has been made."
  3817. },
  3818. {
  3819. "name": "end_or_beginning",
  3820. "detail": "Whether payments are due at the end (`0`) or beginning (`1`) of each period."
  3821. }
  3822. ]
  3823. },
  3824. "PPMT": {
  3825. "d": "Calculates the payment on the principal of an investment based on constant-amount periodic payments and a constant interest rate.",
  3826. "a": "Payment on the principal of an investment.",
  3827. "p": [
  3828. {
  3829. "name": "rate",
  3830. "detail": "The interest rate."
  3831. },
  3832. {
  3833. "name": "period",
  3834. "detail": "The amortization period, in terms of number of periods."
  3835. },
  3836. {
  3837. "name": "number_of_periods",
  3838. "detail": "The number of payments to be made."
  3839. },
  3840. {
  3841. "name": "present_value",
  3842. "detail": "The current value of the annuity."
  3843. },
  3844. {
  3845. "name": "future_value",
  3846. "detail": "The future value remaining after the final payment has been made."
  3847. },
  3848. {
  3849. "name": "end_or_beginning",
  3850. "detail": "Whether payments are due at the end (`0`) or beginning (`1`) of each period."
  3851. }
  3852. ]
  3853. },
  3854. "INTRATE": {
  3855. "d": "Calculates the effective interest rate generated when an investment is purchased at one price and sold at another with no interest or dividends generated by the investment itself.",
  3856. "a": "Calculates effective interest rate.",
  3857. "p": [
  3858. {
  3859. "name": "buy_date",
  3860. "detail": "The date of purchase of the investment."
  3861. },
  3862. {
  3863. "name": "sell_date",
  3864. "detail": "The date of sale of the investment."
  3865. },
  3866. {
  3867. "name": "buy_price",
  3868. "detail": "The price at which the investment was purchased."
  3869. },
  3870. {
  3871. "name": "sell_price",
  3872. "detail": "The price at which the investment was sold."
  3873. },
  3874. {
  3875. "name": "day_count_convention",
  3876. "detail": "An indicator of what day count method to use."
  3877. }
  3878. ]
  3879. },
  3880. "PRICE": {
  3881. "d": "Calculates the price of a security paying periodic interest, such as a US Treasury Bond, based on expected yield.",
  3882. "a": "Price of a security paying periodic interest.",
  3883. "p": [
  3884. {
  3885. "name": "settlement",
  3886. "detail": "The settlement date of the security, the date after issuance when the security is delivered to the buyer."
  3887. },
  3888. {
  3889. "name": "maturity",
  3890. "detail": "The maturity or end date of the security, when it can be redeemed at face, or par value."
  3891. },
  3892. {
  3893. "name": "rate",
  3894. "detail": "The annualized rate of interest."
  3895. },
  3896. {
  3897. "name": "yield",
  3898. "detail": "The expected annual yield of the security."
  3899. },
  3900. {
  3901. "name": "redemption",
  3902. "detail": "The redemption amount per 100 face value, or par."
  3903. },
  3904. {
  3905. "name": "frequency",
  3906. "detail": "The number of interest or coupon payments per year (1, 2, or 4)."
  3907. },
  3908. {
  3909. "name": "day_count_convention",
  3910. "detail": "An indicator of what day count method to use."
  3911. }
  3912. ]
  3913. },
  3914. "PRICEDISC": {
  3915. "d": "Calculates the price of a discount (non-interest-bearing) security, based on expected yield.",
  3916. "a": "Price of a discount security.",
  3917. "p": [
  3918. {
  3919. "name": "settlement",
  3920. "detail": "The settlement date of the security, the date after issuance when the security is delivered to the buyer."
  3921. },
  3922. {
  3923. "name": "maturity",
  3924. "detail": "The maturity or end date of the security, when it can be redeemed at face, or par value."
  3925. },
  3926. {
  3927. "name": "discount",
  3928. "detail": "The discount rate of the security at time of purchase."
  3929. },
  3930. {
  3931. "name": "redemption",
  3932. "detail": "The redemption amount per 100 face value, or par."
  3933. },
  3934. {
  3935. "name": "day_count_convention",
  3936. "detail": "An indicator of what day count method to use."
  3937. }
  3938. ]
  3939. },
  3940. "PRICEMAT": {
  3941. "d": "Calculates the price of a security paying interest at maturity, based on expected yield.",
  3942. "a": "Price of security paying interest at maturity.",
  3943. "p": [
  3944. {
  3945. "name": "settlement",
  3946. "detail": "The settlement date of the security, the date after issuance when the security is delivered to the buyer."
  3947. },
  3948. {
  3949. "name": "maturity",
  3950. "detail": "The maturity or end date of the security, when it can be redeemed at face, or par value."
  3951. },
  3952. {
  3953. "name": "issue",
  3954. "detail": "The date the security was initially issued."
  3955. },
  3956. {
  3957. "name": "rate",
  3958. "detail": "The annualized rate of interest."
  3959. },
  3960. {
  3961. "name": "yield",
  3962. "detail": "The expected annual yield of the security."
  3963. },
  3964. {
  3965. "name": "day_count_convention",
  3966. "detail": "An indicator of what day count method to use."
  3967. }
  3968. ]
  3969. },
  3970. "RECEIVED": {
  3971. "d": "Calculates the amount received at maturity for an investment in fixed-income securities purchased on a given date.",
  3972. "a": "Amount received at maturity for a security.",
  3973. "p": [
  3974. {
  3975. "name": "settlement",
  3976. "detail": "The settlement date of the security, the date after issuance when the security is delivered to the buyer."
  3977. },
  3978. {
  3979. "name": "maturity",
  3980. "detail": "The maturity or end date of the security, when it can be redeemed at face, or par value."
  3981. },
  3982. {
  3983. "name": "investment",
  3984. "detail": "The amount invested (irrespective of face value of each security)."
  3985. },
  3986. {
  3987. "name": "discount",
  3988. "detail": "The discount rate of the security invested in."
  3989. },
  3990. {
  3991. "name": "day_count_convention",
  3992. "detail": "An indicator of what day count method to use."
  3993. }
  3994. ]
  3995. },
  3996. "DISC": {
  3997. "d": "Calculates the discount rate of a security based on price.",
  3998. "a": "The discount rate of a security based on price.",
  3999. "p": [
  4000. {
  4001. "name": "settlement",
  4002. "detail": "The settlement date of the security, the date after issuance when the security is delivered to the buyer."
  4003. },
  4004. {
  4005. "name": "maturity",
  4006. "detail": "The maturity or end date of the security, when it can be redeemed at face, or par value."
  4007. },
  4008. {
  4009. "name": "price",
  4010. "detail": "The price at which the security is bought per 100 face value."
  4011. },
  4012. {
  4013. "name": "redemption",
  4014. "detail": "The redemption amount per 100 face value, or par."
  4015. },
  4016. {
  4017. "name": "day_count_convention",
  4018. "detail": "An indicator of what day count method to use."
  4019. }
  4020. ]
  4021. },
  4022. "NPER": {
  4023. "d": "Calculates the number of payment periods for an investment based on constant-amount periodic payments and a constant interest rate.",
  4024. "a": "Number of payment periods for an investment.",
  4025. "p": [
  4026. {
  4027. "name": "rate",
  4028. "detail": "The interest rate."
  4029. },
  4030. {
  4031. "name": "payment_amount",
  4032. "detail": "The amount of each payment made."
  4033. },
  4034. {
  4035. "name": "present_value",
  4036. "detail": "The current value of the annuity."
  4037. },
  4038. {
  4039. "name": "future_value",
  4040. "detail": "The future value remaining after the final payment has been made."
  4041. },
  4042. {
  4043. "name": "end_or_beginning",
  4044. "detail": "Whether payments are due at the end (`0`) or beginning (`1`) of each period."
  4045. }
  4046. ]
  4047. },
  4048. "SLN": {
  4049. "d": "Calculates the depreciation of an asset for one period using the straight-line method.",
  4050. "a": "Depreciation of asset using the straight-line method.",
  4051. "p": [
  4052. {
  4053. "name": "cost",
  4054. "detail": "The initial cost of the asset."
  4055. },
  4056. {
  4057. "name": "salvage",
  4058. "detail": "The value of the asset at the end of depreciation."
  4059. },
  4060. {
  4061. "name": "life",
  4062. "detail": "The number of periods over which the asset is depreciated."
  4063. }
  4064. ]
  4065. },
  4066. "DURATION": {
  4067. "d": "Calculates the number of compounding periods required for an investment of a specified present value appreciating at a given rate to reach a target value.",
  4068. "a": "Number of periods for an investment to reach a value.",
  4069. "p": [
  4070. {
  4071. "name": "settlement",
  4072. "detail": "The settlement date of the security, the date after issuance when the security is delivered to the buyer."
  4073. },
  4074. {
  4075. "name": "maturity",
  4076. "detail": "The maturity or end date of the security, when it can be redeemed at face, or par value."
  4077. },
  4078. {
  4079. "name": "rate",
  4080. "detail": "The annualized rate of interest."
  4081. },
  4082. {
  4083. "name": "yield",
  4084. "detail": "The expected annual yield of the security."
  4085. },
  4086. {
  4087. "name": "frequency",
  4088. "detail": "The number of interest or coupon payments per year (1, 2, or 4)."
  4089. },
  4090. {
  4091. "name": "day_count_convention",
  4092. "detail": "An indicator of what day count method to use."
  4093. }
  4094. ]
  4095. },
  4096. "MDURATION": {
  4097. "d": "Calculates the modified Macaulay duration of a security paying periodic interest, such as a US Treasury Bond, based on expected yield.",
  4098. "a": "Modified Macaulay duration.",
  4099. "p": [
  4100. {
  4101. "name": "settlement",
  4102. "detail": "The settlement date of the security, the date after issuance when the security is delivered to the buyer."
  4103. },
  4104. {
  4105. "name": "maturity",
  4106. "detail": "The maturity or end date of the security, when it can be redeemed at face, or par value."
  4107. },
  4108. {
  4109. "name": "rate",
  4110. "detail": "The annualized rate of interest."
  4111. },
  4112. {
  4113. "name": "yield",
  4114. "detail": "The expected annual yield of the security."
  4115. },
  4116. {
  4117. "name": "frequency",
  4118. "detail": "The number of interest or coupon payments per year (1, 2, or 4)."
  4119. },
  4120. {
  4121. "name": "day_count_convention",
  4122. "detail": "An indicator of what day count method to use."
  4123. }
  4124. ]
  4125. },
  4126. "BIN2DEC": {
  4127. "d": "Converts a signed binary number to decimal format.",
  4128. "a": "Converts a signed binary number to decimal format.",
  4129. "p": [
  4130. {
  4131. "name": "signed_binary_number",
  4132. "detail": "The signed 10-bit binary value to be converted to decimal, provided as a string."
  4133. }
  4134. ]
  4135. },
  4136. "BIN2HEX": {
  4137. "d": "Converts a signed binary number to signed hexadecimal format.",
  4138. "a": "Converts a binary number to hexadecimal.",
  4139. "p": [
  4140. {
  4141. "name": "signed_binary_number",
  4142. "detail": "The signed 10-bit binary value to be converted to signed hexademical, provided as a string."
  4143. },
  4144. {
  4145. "name": "significant_digits",
  4146. "detail": "The number of significant digits to ensure in the result."
  4147. }
  4148. ]
  4149. },
  4150. "BIN2OCT": {
  4151. "d": "Converts a signed binary number to signed octal format.",
  4152. "a": "Converts a binary number to octal.",
  4153. "p": [
  4154. {
  4155. "name": "signed_binary_number",
  4156. "detail": "The signed 10-bit binary value to be converted to signed octal, provided as a string."
  4157. },
  4158. {
  4159. "name": "significant_digits",
  4160. "detail": "The number of significant digits to ensure in the result."
  4161. }
  4162. ]
  4163. },
  4164. "DEC2BIN": {
  4165. "d": "Converts a decimal number to signed binary format.",
  4166. "a": "Converts a decimal number to signed binary format.",
  4167. "p": [
  4168. {
  4169. "name": "decimal_number",
  4170. "detail": "The decimal value to be converted to signed binary, provided as a string."
  4171. },
  4172. {
  4173. "name": "significant_digits",
  4174. "detail": "The number of significant digits to ensure in the result."
  4175. }
  4176. ]
  4177. },
  4178. "DEC2HEX": {
  4179. "d": "Converts a decimal number to signed hexadecimal format.",
  4180. "a": "Converts a decimal number to hexadecimal.",
  4181. "p": [
  4182. {
  4183. "name": "decimal_number",
  4184. "detail": "The decimal value to be converted to signed hexadecimal, provided as a string."
  4185. },
  4186. {
  4187. "name": "significant_digits",
  4188. "detail": "The number of significant digits to ensure in the result."
  4189. }
  4190. ]
  4191. },
  4192. "DEC2OCT": {
  4193. "d": "Converts a decimal number to signed octal format.",
  4194. "a": "Converts a decimal number to signed octal format.",
  4195. "p": [
  4196. {
  4197. "name": "decimal_number",
  4198. "detail": "The decimal value to be converted to signed octal, provided as a string."
  4199. },
  4200. {
  4201. "name": "significant_digits",
  4202. "detail": "The number of significant digits to ensure in the result."
  4203. }
  4204. ]
  4205. },
  4206. "HEX2BIN": {
  4207. "d": "Converts a signed hexadecimal number to signed binary format.",
  4208. "a": "Converts a hexadecimal number to binary.",
  4209. "p": [
  4210. {
  4211. "name": "signed_hexadecimal_number",
  4212. "detail": "The signed 40-bit hexadecimal value to be converted to signed binary, provided as a string."
  4213. },
  4214. {
  4215. "name": "significant_digits",
  4216. "detail": "The number of significant digits to ensure in the result."
  4217. }
  4218. ]
  4219. },
  4220. "HEX2DEC": {
  4221. "d": "Converts a signed hexadecimal number to decimal format.",
  4222. "a": "Converts a hexadecimal number to decimal.",
  4223. "p": [
  4224. {
  4225. "name": "signed_hexadecimal_number",
  4226. "detail": "The signed 40-bit hexadecimal value to be converted to decimal, provided as a string."
  4227. }
  4228. ]
  4229. },
  4230. "HEX2OCT": {
  4231. "d": "Converts a signed hexadecimal number to signed octal format.",
  4232. "a": "Converts a hexadecimal number to octal.",
  4233. "p": [
  4234. {
  4235. "name": "signed_hexadecimal_number",
  4236. "detail": "The signed 40-bit hexadecimal value to be converted to signed octal, provided as a string."
  4237. },
  4238. {
  4239. "name": "significant_digits",
  4240. "detail": "The number of significant digits to ensure in the result."
  4241. }
  4242. ]
  4243. },
  4244. "OCT2BIN": {
  4245. "d": "Converts a signed octal number to signed binary format.",
  4246. "a": "Converts an octal number to binary.",
  4247. "p": [
  4248. {
  4249. "name": "signed_octal_number",
  4250. "detail": "The signed 30-bit octal value to be converted to signed binary, provided as a string."
  4251. },
  4252. {
  4253. "name": "significant_digits",
  4254. "detail": "The number of significant digits to ensure in the result."
  4255. }
  4256. ]
  4257. },
  4258. "OCT2DEC": {
  4259. "d": "Converts a signed octal number to decimal format.",
  4260. "a": "Converts a signed octal number to decimal format.",
  4261. "p": [
  4262. {
  4263. "name": "signed_octal_number",
  4264. "detail": "The signed 30-bit octal value to be converted to decimal, provided as a string."
  4265. }
  4266. ]
  4267. },
  4268. "OCT2HEX": {
  4269. "d": "Converts a signed octal number to signed hexadecimal format.",
  4270. "a": "Converts an octal number to hexadecimal.",
  4271. "p": [
  4272. {
  4273. "name": "signed_octal_number",
  4274. "detail": "The signed 30-bit octal value to be converted to signed hexadecimal, provided as a string."
  4275. },
  4276. {
  4277. "name": "significant_digits",
  4278. "detail": "The number of significant digits to ensure in the result."
  4279. }
  4280. ]
  4281. },
  4282. "COMPLEX": {
  4283. "d": "Creates a complex number given real and imaginary coefficients.",
  4284. "a": "Creates a complex number.",
  4285. "p": [
  4286. {
  4287. "name": "real_part",
  4288. "detail": "The real coefficient."
  4289. },
  4290. {
  4291. "name": "imaginary_part",
  4292. "detail": "The imaginary coefficient."
  4293. },
  4294. {
  4295. "name": "suffix",
  4296. "detail": "The suffix for the imaginary coefficient, can only be 'i' or 'j'. If omitted, 'i' will be used."
  4297. }
  4298. ]
  4299. },
  4300. "IMREAL": {
  4301. "d": "Returns the real coefficient of a complex number.",
  4302. "a": "The real coefficient of a complex number.",
  4303. "p": [
  4304. {
  4305. "name": "complex_number",
  4306. "detail": "The complex number, in the a+bi or a+bj format."
  4307. }
  4308. ]
  4309. },
  4310. "IMAGINARY": {
  4311. "d": "Returns the imaginary coefficient of a complex number.",
  4312. "a": "The imaginary coefficient of a complex number.",
  4313. "p": [
  4314. {
  4315. "name": "complex_number",
  4316. "detail": "The complex number, in the a+bi or a+bj format."
  4317. }
  4318. ]
  4319. },
  4320. "IMCONJUGATE": {
  4321. "d": "Returns the complex conjugate of a number.",
  4322. "a": "The complex conjugate of a number.",
  4323. "p": [
  4324. {
  4325. "name": "number",
  4326. "detail": "The complex number to calculate the conjugate for."
  4327. }
  4328. ]
  4329. },
  4330. "IMABS": {
  4331. "d": "Returns absolute value (or modulus) of a complex number.",
  4332. "a": "The absolute value of a complex number.",
  4333. "p": [
  4334. {
  4335. "name": "number",
  4336. "detail": "The complex number to calculate the absolute value of."
  4337. }
  4338. ]
  4339. },
  4340. "DELTA": {
  4341. "d": "Compare two numeric values, returning 1 if they're equal.",
  4342. "a": "Compare two numeric values.",
  4343. "p": [
  4344. {
  4345. "name": "number1",
  4346. "detail": "The first number to compare."
  4347. },
  4348. {
  4349. "name": "number2",
  4350. "detail": "The second number to compare."
  4351. }
  4352. ]
  4353. },
  4354. "IMSUM": {
  4355. "d": "Returns the sum of a series of complex numbers.",
  4356. "a": "Sum of a series of complex numbers.",
  4357. "p": [
  4358. {
  4359. "name": "value1",
  4360. "detail": "The first complex number or range to add together."
  4361. },
  4362. {
  4363. "name": "value2",
  4364. "detail": "Additional complex numbers or ranges to add to `value1`."
  4365. }
  4366. ]
  4367. },
  4368. "IMSUB": {
  4369. "d": "Returns the difference between two complex numbers.",
  4370. "a": "The difference between two complex numbers.",
  4371. "p": [
  4372. {
  4373. "name": "first_number",
  4374. "detail": "The complex number to subtract second_number from."
  4375. },
  4376. {
  4377. "name": "second_number",
  4378. "detail": "The complex number to subtract from first_number."
  4379. }
  4380. ]
  4381. },
  4382. "IMPRODUCT": {
  4383. "d": "Returns the result of multiplying a series of complex numbers together.",
  4384. "a": "Result of multiplying a series of complex numbers together.",
  4385. "p": [
  4386. {
  4387. "name": "factor1",
  4388. "detail": "The first number or range to calculate for the product."
  4389. },
  4390. {
  4391. "name": "factor2",
  4392. "detail": "Additional complex numbers or ranges to calculate for the product."
  4393. }
  4394. ]
  4395. },
  4396. "IMDIV": {
  4397. "d": "Returns one complex number divided by another.",
  4398. "a": "One complex number divided by another.",
  4399. "p": [
  4400. {
  4401. "name": "dividend",
  4402. "detail": "The complex number to be divided."
  4403. },
  4404. {
  4405. "name": "divisor",
  4406. "detail": "The complex number to divide by."
  4407. }
  4408. ]
  4409. },
  4410. "NOT": {
  4411. "d": "Returns the opposite of a logical value - `NOT(TRUE)` returns `FALSE`; `NOT(FALSE)` returns `TRUE`.",
  4412. "a": "Returns opposite of provided logical value.",
  4413. "p": [
  4414. {
  4415. "name": "logical_expression",
  4416. "detail": "An expression or reference to a cell holding an expression that represents some logical value."
  4417. }
  4418. ]
  4419. },
  4420. "TRUE": {
  4421. "d": "Returns the logical value `TRUE`.",
  4422. "a": "Logical value `true`.",
  4423. "p": []
  4424. },
  4425. "FALSE": {
  4426. "d": "Returns the logical value `FALSE`.",
  4427. "a": "Logical value `false`.",
  4428. "p": []
  4429. },
  4430. "AND": {
  4431. "d": "Returns true if all of the provided arguments are logically true, and false if any of the provided arguments are logically false.",
  4432. "a": "Logical `and` operator.",
  4433. "p": [
  4434. {
  4435. "name": "logical_expression1",
  4436. "detail": "An expression or reference to a cell containing an expression that represents some logical value, i.e. `TRUE` or `FALSE`, or an expression that can be coerced to a logical value."
  4437. },
  4438. {
  4439. "name": "logical_expression2",
  4440. "detail": "More expressions that represent logical values."
  4441. }
  4442. ]
  4443. },
  4444. "IFERROR": {
  4445. "d": "Returns the first argument if it is not an error value, otherwise returns the second argument if present, or a blank if the second argument is absent.",
  4446. "a": "Value if it is not an error, otherwise 2nd argument.",
  4447. "p": [
  4448. {
  4449. "name": "value",
  4450. "detail": "The value to return if `value` itself is not an error."
  4451. },
  4452. {
  4453. "name": "value_if_error",
  4454. "detail": "The value the function returns if `value` is an error."
  4455. }
  4456. ]
  4457. },
  4458. "IF": {
  4459. "d": "Returns one value if a logical expression is `TRUE` and another if it is `FALSE`.",
  4460. "a": "Returns value depending on logical expression.",
  4461. "p": [
  4462. {
  4463. "name": "logical_expression",
  4464. "detail": "An expression or reference to a cell containing an expression that represents some logical value, i.e. `TRUE` or `FALSE`."
  4465. },
  4466. {
  4467. "name": "value_if_true",
  4468. "detail": "The value the function returns if `logical_expression` is `TRUE`."
  4469. },
  4470. {
  4471. "name": "value_if_false",
  4472. "detail": "The value the function returns if `logical_expression` is `FALSE`."
  4473. }
  4474. ]
  4475. },
  4476. "OR": {
  4477. "d": "Returns true if any of the provided arguments are logically true, and false if all of the provided arguments are logically false.",
  4478. "a": "Logical `or` operator.",
  4479. "p": [
  4480. {
  4481. "name": "logical_expression1",
  4482. "detail": "An expression or reference to a cell containing an expression that represents some logical value, i.e. `TRUE` or `FALSE`, or an expression that can be coerced to a logical value."
  4483. },
  4484. {
  4485. "name": "logical_expression2",
  4486. "detail": "More expressions that evaluate to logical values."
  4487. }
  4488. ]
  4489. },
  4490. "NE": {
  4491. "d": "Returns `TRUE` if two specified values are not equal and `FALSE` otherwise. Equivalent to the `!=` operator.",
  4492. "a": "Not equal.",
  4493. "p": [
  4494. {
  4495. "name": "value1",
  4496. "detail": "The first value."
  4497. },
  4498. {
  4499. "name": "value2",
  4500. "detail": "The value to test against `value1` for inequality."
  4501. }
  4502. ]
  4503. },
  4504. "EQ": {
  4505. "d": "Returns `TRUE` if two specified values are equal and `FALSE` otherwise. Equivalent to the `==` operator.",
  4506. "a": "Equal.",
  4507. "p": [
  4508. {
  4509. "name": "value1",
  4510. "detail": "The first value."
  4511. },
  4512. {
  4513. "name": "value2",
  4514. "detail": "The value to test against `value1` for equality."
  4515. }
  4516. ]
  4517. },
  4518. "GT": {
  4519. "d": "Returns `TRUE` if the first argument is strictly greater than the second, and `FALSE` otherwise. Equivalent to the `>` operator.",
  4520. "a": "Strictly greater than.",
  4521. "p": [
  4522. {
  4523. "name": "value1",
  4524. "detail": "The value to test as being greater than `value2`."
  4525. },
  4526. {
  4527. "name": "value2",
  4528. "detail": "The second value."
  4529. }
  4530. ]
  4531. },
  4532. "GTE": {
  4533. "d": "Returns `TRUE` if the first argument is greater than or equal to the second, and `FALSE` otherwise. Equivalent to the `>=` operator.",
  4534. "a": "Greater than or equal to.",
  4535. "p": [
  4536. {
  4537. "name": "value1",
  4538. "detail": "The value to test as being greater than or equal to `value2`."
  4539. },
  4540. {
  4541. "name": "value2",
  4542. "detail": "The second value."
  4543. }
  4544. ]
  4545. },
  4546. "LT": {
  4547. "d": "Returns `TRUE` if the first argument is strictly less than the second, and `FALSE` otherwise. Equivalent to the `<` operator.",
  4548. "a": "Less than.",
  4549. "p": [
  4550. {
  4551. "name": "value1",
  4552. "detail": "The value to test as being less than `value2`."
  4553. },
  4554. {
  4555. "name": "value2",
  4556. "detail": "The second value."
  4557. }
  4558. ]
  4559. },
  4560. "LTE": {
  4561. "d": "Returns `TRUE` if the first argument is less than or equal to the second, and `FALSE` otherwise. Equivalent to the `<=` operator.",
  4562. "a": "Less than or equal to.",
  4563. "p": [
  4564. {
  4565. "name": "value1",
  4566. "detail": "The value to test as being less than or equal to `value2`."
  4567. },
  4568. {
  4569. "name": "value2",
  4570. "detail": "The second value."
  4571. }
  4572. ]
  4573. },
  4574. "ADD": {
  4575. "d": "Returns the sum of two numbers. Equivalent to the `+` operator.",
  4576. "a": "Sum of two numbers",
  4577. "p": [
  4578. {
  4579. "name": "value1",
  4580. "detail": "The first addend."
  4581. },
  4582. {
  4583. "name": "value2",
  4584. "detail": "The second addend."
  4585. }
  4586. ]
  4587. },
  4588. "MINUS": {
  4589. "d": "Returns the difference of two numbers. Equivalent to the `-` operator.",
  4590. "a": "Difference of two numbers",
  4591. "p": [
  4592. {
  4593. "name": "value1",
  4594. "detail": "The minuend, or number to be subtracted from."
  4595. },
  4596. {
  4597. "name": "value2",
  4598. "detail": "The subtrahend, or number to subtract from `value1`."
  4599. }
  4600. ]
  4601. },
  4602. "MULTIPLY": {
  4603. "d": "Returns the product of two numbers. Equivalent to the `*` operator.",
  4604. "a": "Product of two numbers",
  4605. "p": [
  4606. {
  4607. "name": "factor1",
  4608. "detail": "The first multiplicand."
  4609. },
  4610. {
  4611. "name": "factor2",
  4612. "detail": "The second multiplicand."
  4613. }
  4614. ]
  4615. },
  4616. "DIVIDE": {
  4617. "d": "Returns one number divided by another. Equivalent to the `/` operator.",
  4618. "a": "One number divided by another",
  4619. "p": [
  4620. {
  4621. "name": "dividend",
  4622. "detail": "The number to be divided."
  4623. },
  4624. {
  4625. "name": "divisor",
  4626. "detail": "The number to divide by."
  4627. }
  4628. ]
  4629. },
  4630. "CONCAT": {
  4631. "d": "Returns the concatenation of two values. Equivalent to the `&` operator.",
  4632. "a": "Concatenation of two values",
  4633. "p": [
  4634. {
  4635. "name": "value1",
  4636. "detail": "The value to which `value2` will be appended."
  4637. },
  4638. {
  4639. "name": "value2",
  4640. "detail": "The value to append to `value1`."
  4641. }
  4642. ]
  4643. },
  4644. "UNARY_PERCENT": {
  4645. "d": "Returns a value interpreted as a percentage; that is, `UNARY_PERCENT(100)` equals `1`.",
  4646. "a": "Value interpreted as a percentage.",
  4647. "p": [
  4648. {
  4649. "name": "percentage",
  4650. "detail": "The value to interpret as a percentage."
  4651. }
  4652. ]
  4653. },
  4654. "CONCATENATE": {
  4655. "d": "Appends strings to one another.",
  4656. "a": "Appends strings to one another.",
  4657. "p": [
  4658. {
  4659. "name": "string1",
  4660. "detail": "The initial string."
  4661. },
  4662. {
  4663. "name": "string2",
  4664. "detail": "More strings to append in sequence."
  4665. }
  4666. ]
  4667. },
  4668. "CODE": {
  4669. "d": "Returns the numeric Unicode map value of the first character in the string provided.",
  4670. "a": "Numeric unicode map value of character.",
  4671. "p": [
  4672. {
  4673. "name": "string",
  4674. "detail": "The string whose first character's Unicode map value will be returned."
  4675. }
  4676. ]
  4677. },
  4678. "CHAR": {
  4679. "d": "Convert a number into a character according to the current Unicode table.",
  4680. "a": "Gets character associated with number.",
  4681. "p": [
  4682. {
  4683. "name": "table_number",
  4684. "detail": "The number of the character to look up from the current Unicode table in decimal format."
  4685. }
  4686. ]
  4687. },
  4688. "ARABIC": {
  4689. "d": "Computes the value of a Roman numeral.",
  4690. "a": "Computes the value of a roman numeral.",
  4691. "p": [
  4692. {
  4693. "name": "roman_numeral",
  4694. "detail": "The Roman numeral to format, whose value must be between 1 and 3999, inclusive."
  4695. }
  4696. ]
  4697. },
  4698. "ROMAN": {
  4699. "d": "Formats a number in Roman numerals.",
  4700. "a": "Formats a number in Roman numerals.",
  4701. "p": [
  4702. {
  4703. "name": "number",
  4704. "detail": "The number to format, between 1 and 3999, inclusive."
  4705. }
  4706. ]
  4707. },
  4708. "REGEXEXTRACT": {
  4709. "d": "Extracts matching substrings according to a regular expression.",
  4710. "a": "Extracts matching substrings with regular expression.",
  4711. "p": [
  4712. {
  4713. "name": "text",
  4714. "detail": "The input text."
  4715. },
  4716. {
  4717. "name": "regular_expression",
  4718. "detail": "The first part of `text` that matches this expression will be returned."
  4719. }
  4720. ]
  4721. },
  4722. "REGEXMATCH": {
  4723. "d": "Whether a piece of text matches a regular expression.",
  4724. "a": "Whether a piece of text matches regular expression.",
  4725. "p": [
  4726. {
  4727. "name": "text",
  4728. "detail": "The text to be tested against the regular expression."
  4729. },
  4730. {
  4731. "name": "regular_expression",
  4732. "detail": "The regular expression to test the text against."
  4733. }
  4734. ]
  4735. },
  4736. "REGEXREPLACE": {
  4737. "d": "Replaces part of a text string with a different text string using regular expressions.",
  4738. "a": "Replaces text with regular expressions.",
  4739. "p": [
  4740. {
  4741. "name": "text",
  4742. "detail": "The text, a part of which will be replaced."
  4743. },
  4744. {
  4745. "name": "regular_expression",
  4746. "detail": "The regular expression. All matching instances in `text` will be replaced."
  4747. },
  4748. {
  4749. "name": "replacement",
  4750. "detail": "The text which will be inserted into the original text."
  4751. }
  4752. ]
  4753. },
  4754. "T": {
  4755. "d": "Returns string arguments as text, or the empty string if the value is not text.",
  4756. "a": "String arguments as text.",
  4757. "p": [
  4758. {
  4759. "name": "value",
  4760. "detail": "The argument to be converted to text."
  4761. }
  4762. ]
  4763. },
  4764. "FIXED": {
  4765. "d": "Formats a number with a fixed number of decimal places.",
  4766. "a": "Formats number with fixed number of decimal places.",
  4767. "p": [
  4768. {
  4769. "name": "number",
  4770. "detail": "The number to format."
  4771. },
  4772. {
  4773. "name": "number_of_places",
  4774. "detail": "The number of decimal places to display in the result."
  4775. },
  4776. {
  4777. "name": "suppress_separator",
  4778. "detail": "Whether or not to suppress the thousands separator used in some locales (e.g. `1,000` becomes `1000`). Separators will be present if this value is 0 or omitted, and absent otherwise."
  4779. }
  4780. ]
  4781. },
  4782. "FIND": {
  4783. "d": "Returns the position at which a string is first found within text where the capitalization of letters matters. Returns `#VALUE!` if the string is not found.",
  4784. "a": "First position of string found in text, case-sensitive.",
  4785. "p": [
  4786. {
  4787. "name": "search_for",
  4788. "detail": "The string to look for within `text_to_search`."
  4789. },
  4790. {
  4791. "name": "text_to_search",
  4792. "detail": "The text to search for the first occurrence of `search_for`."
  4793. },
  4794. {
  4795. "name": "starting_at",
  4796. "detail": "The character within `text_to_search` at which to start the search."
  4797. }
  4798. ]
  4799. },
  4800. "FINDB": {
  4801. "d": "Returns the position at which a string is first found within text counting each double-character as 2.",
  4802. "a": "Position at which a string is first found within text (binary).",
  4803. "p": [
  4804. {
  4805. "name": "search_for",
  4806. "detail": "The string to look for within `text_to_search`."
  4807. },
  4808. {
  4809. "name": "text_to_search",
  4810. "detail": "The text to search for the first occurrence of `search_for`."
  4811. },
  4812. {
  4813. "name": "starting_at",
  4814. "detail": "The character within `text_to_search` at which to start the search."
  4815. }
  4816. ]
  4817. },
  4818. "JOIN": {
  4819. "d": "Concatenates the elements of one or more one-dimensional arrays using a specified delimiter.",
  4820. "a": "Concatenates elements of arrays with delimiter.",
  4821. "p": [
  4822. {
  4823. "name": "delimiter",
  4824. "detail": "The character or string to place between each concatenated value."
  4825. },
  4826. {
  4827. "name": "value_or_array1",
  4828. "detail": "The value or values to be appended using `delimiter`."
  4829. },
  4830. {
  4831. "name": "value_or_array2",
  4832. "detail": "More values to be appended using `delimiter`."
  4833. }
  4834. ]
  4835. },
  4836. "LEFT": {
  4837. "d": "Returns a substring from the beginning of a specified string.",
  4838. "a": "Substring from beginning of specified string.",
  4839. "p": [
  4840. {
  4841. "name": "string",
  4842. "detail": "The string from which the left portion will be returned."
  4843. },
  4844. {
  4845. "name": "number_of_characters",
  4846. "detail": "The number of characters to return from the left side of `string`."
  4847. }
  4848. ]
  4849. },
  4850. "RIGHT": {
  4851. "d": "Returns a substring from the end of a specified string.",
  4852. "a": "A substring from the end of a specified string.",
  4853. "p": [
  4854. {
  4855. "name": "string",
  4856. "detail": "The string from which the right portion will be returned."
  4857. },
  4858. {
  4859. "name": "number_of_characters",
  4860. "detail": "The number of characters to return from the right side of `string`."
  4861. }
  4862. ]
  4863. },
  4864. "MID": {
  4865. "d": "Returns a segment of a string.",
  4866. "a": "A segment of a string.",
  4867. "p": [
  4868. {
  4869. "name": "string",
  4870. "detail": "The string to extract a segment from."
  4871. },
  4872. {
  4873. "name": "starting_at",
  4874. "detail": "The index from the left of `string` from which to begin extracting. The first character in `string` has the index 1."
  4875. },
  4876. {
  4877. "name": "extract_length",
  4878. "detail": "The length of the segment to extract."
  4879. }
  4880. ]
  4881. },
  4882. "LEN": {
  4883. "d": "Returns the length of a string.",
  4884. "a": "Length of a string.",
  4885. "p": [
  4886. {
  4887. "name": "text",
  4888. "detail": "The string whose length will be returned."
  4889. }
  4890. ]
  4891. },
  4892. "LENB": {
  4893. "d": "Returns the length of a string in bytes.",
  4894. "a": "Length of a string in bytes.",
  4895. "p": [
  4896. {
  4897. "name": "text",
  4898. "detail": "The string whose length will be returned."
  4899. }
  4900. ]
  4901. },
  4902. "LOWER": {
  4903. "d": "Converts a specified string to lowercase.",
  4904. "a": "Converts a specified string to lowercase.",
  4905. "p": [
  4906. {
  4907. "name": "text",
  4908. "detail": "The string to convert to lowercase."
  4909. }
  4910. ]
  4911. },
  4912. "UPPER": {
  4913. "d": "Converts a specified string to uppercase.",
  4914. "a": "Converts a specified string to uppercase.",
  4915. "p": [
  4916. {
  4917. "name": "text",
  4918. "detail": "The string to convert to uppercase."
  4919. }
  4920. ]
  4921. },
  4922. "EXACT": {
  4923. "d": "Tests whether two strings are identical.",
  4924. "a": "Tests whether two strings are identical.",
  4925. "p": [
  4926. {
  4927. "name": "string1",
  4928. "detail": "The first string to compare"
  4929. },
  4930. {
  4931. "name": "string2",
  4932. "detail": "The second string to compare"
  4933. }
  4934. ]
  4935. },
  4936. "REPLACE": {
  4937. "d": "Replaces part of a text string with a different text string.",
  4938. "a": "Replaces part of a text string with different text.",
  4939. "p": [
  4940. {
  4941. "name": "text",
  4942. "detail": "The text, a part of which will be replaced."
  4943. },
  4944. {
  4945. "name": "position",
  4946. "detail": "The position where the replacement will begin (starting from 1)."
  4947. },
  4948. {
  4949. "name": "length",
  4950. "detail": "The number of characters in the text to be replaced."
  4951. },
  4952. {
  4953. "name": "new_text",
  4954. "detail": "The text which will be inserted into the original text."
  4955. }
  4956. ]
  4957. },
  4958. "REPT": {
  4959. "d": "Returns specified text repeated a number of times.",
  4960. "a": "Specified text repeated a number of times.",
  4961. "p": [
  4962. {
  4963. "name": "text_to_repeat",
  4964. "detail": "The character or string to repeat."
  4965. },
  4966. {
  4967. "name": "number_of_repetitions",
  4968. "detail": "The number of times `text_to_repeat` should appear in the value returned."
  4969. }
  4970. ]
  4971. },
  4972. "SEARCH": {
  4973. "d": "Returns the position at which a string is first found within text and ignores capitalization of letters. Returns `#VALUE!` if the string is not found.",
  4974. "a": "First position of string found in text, ignoring case.",
  4975. "p": [
  4976. {
  4977. "name": "search_for",
  4978. "detail": "The string to look for within `text_to_search`."
  4979. },
  4980. {
  4981. "name": "text_to_search",
  4982. "detail": "The text to search for the first occurrence of `search_for`."
  4983. },
  4984. {
  4985. "name": "starting_at",
  4986. "detail": "The character within `text_to_search` at which to start the search."
  4987. }
  4988. ]
  4989. },
  4990. "SUBSTITUTE": {
  4991. "d": "Replaces existing text with new text in a string.",
  4992. "a": "Replaces existing text with new text in a string.",
  4993. "p": [
  4994. {
  4995. "name": "text_to_search",
  4996. "detail": "The text within which to search and replace."
  4997. },
  4998. {
  4999. "name": "search_for",
  5000. "detail": "The string to search for within `text_to_search`."
  5001. },
  5002. {
  5003. "name": "replace_with",
  5004. "detail": "The string that will replace `search_for`."
  5005. },
  5006. {
  5007. "name": "occurrence_number",
  5008. "detail": "The instance of `search_for` within `text_to_search` to replace with `replace_with`. By default, all occurrences of `search_for` are replaced; however, if `occurrence_number` is specified, only the indicated instance of `search_for` is replaced."
  5009. }
  5010. ]
  5011. },
  5012. "CLEAN": {
  5013. "d": "Returns the text with the non-printable ASCII characters removed.",
  5014. "a": "Removes non-printable characters from a piece of text.",
  5015. "p": [
  5016. {
  5017. "name": "text",
  5018. "detail": "The text whose non-printable characters are to be removed."
  5019. }
  5020. ]
  5021. },
  5022. "TEXT": {
  5023. "d": "Converts a number into text according to a specified format.",
  5024. "a": "Formats a number into text.",
  5025. "p": [
  5026. {
  5027. "name": "number",
  5028. "detail": "The number, date, or time to format."
  5029. },
  5030. {
  5031. "name": "format",
  5032. "detail": "The pattern by which to format the number, enclosed in quotation marks."
  5033. }
  5034. ]
  5035. },
  5036. "TRIM": {
  5037. "d": "Removes leading, trailing, and repeated spaces in text.",
  5038. "a": "Removes space characters.",
  5039. "p": [
  5040. {
  5041. "name": "text",
  5042. "detail": "The text or reference to a cell containing text to be trimmed."
  5043. }
  5044. ]
  5045. },
  5046. "VALUE": {
  5047. "d": "Converts a string in any of the date, time or number formats that Google Sheets understands into a number.",
  5048. "a": "Converts a date/time/number string into a number.",
  5049. "p": [
  5050. {
  5051. "name": "text",
  5052. "detail": "The string containing the value to be converted."
  5053. }
  5054. ]
  5055. },
  5056. "PROPER": {
  5057. "d": "Capitalizes each word in a specified string.",
  5058. "a": "Capitalizes each word in a specified string.",
  5059. "p": [
  5060. {
  5061. "name": "text_to_capitalize",
  5062. "detail": "The text which will be returned with the first letter of each word in uppercase and all other letters in lowercase."
  5063. }
  5064. ]
  5065. },
  5066. "CONVERT": {
  5067. "d": "Converts a numeric value to a different unit of measure.",
  5068. "a": "Unit conversion for numbers.",
  5069. "p": [
  5070. {
  5071. "name": "value",
  5072. "detail": "The numeric value in `start_unit` to convert to `end_unit`."
  5073. },
  5074. {
  5075. "name": "start_unit",
  5076. "detail": "The starting unit, the unit currently assigned to `value`."
  5077. },
  5078. {
  5079. "name": "end_unit",
  5080. "detail": "The unit of measure into which to convert the argument, `value`."
  5081. }
  5082. ]
  5083. },
  5084. "SUMX2MY2": {
  5085. "d": "Calculates the sum of the differences of the squares of values in two arrays.",
  5086. "a": "Sum of the differences of squares.",
  5087. "p": [
  5088. {
  5089. "name": "array_x",
  5090. "detail": "The array or range of values whose squares will be reduced by the squares of corresponding entries in `array_y` and added together."
  5091. },
  5092. {
  5093. "name": "array_y",
  5094. "detail": "The array or range of values whose squares will be subtracted from the squares of corresponding entries in `array_x` and added together."
  5095. }
  5096. ]
  5097. },
  5098. "SUMX2PY2": {
  5099. "d": "Calculates the sum of the sums of the squares of values in two arrays.",
  5100. "a": "Sum of the sums of squares.",
  5101. "p": [
  5102. {
  5103. "name": "array_x",
  5104. "detail": "The array or range of values whose squares will be added to the squares of corresponding entries in `array_y` and added together."
  5105. },
  5106. {
  5107. "name": "array_y",
  5108. "detail": "The array or range of values whose squares will be added to the squares of corresponding entries in `array_x` and added together."
  5109. }
  5110. ]
  5111. },
  5112. "SUMXMY2": {
  5113. "d": "Calculates the sum of the squares of differences of values in two arrays.",
  5114. "a": "Sum of the squares of differences.",
  5115. "p": [
  5116. {
  5117. "name": "array_x",
  5118. "detail": "The array or range of values that will be reduced by corresponding entries in `array_y`, squared, and added together."
  5119. },
  5120. {
  5121. "name": "array_y",
  5122. "detail": "The array or range of values that will be subtracted from corresponding entries in `array_x`, the result squared, and all such results added together."
  5123. }
  5124. ]
  5125. },
  5126. "TRANSPOSE": {
  5127. "d": "Transposes the rows and columns of an array or range of cells.",
  5128. "a": "Transposes the rows and columns of an array.",
  5129. "p": [
  5130. {
  5131. "name": "array_or_range",
  5132. "detail": "The array or range whose rows and columns will be swapped."
  5133. }
  5134. ]
  5135. },
  5136. "TREND": {
  5137. "d": "Given partial data about a linear trend, fits an ideal linear trend using the least squares method and/or predicts further values.",
  5138. "a": "Fits points to linear trend derived via least-squares.",
  5139. "p": [
  5140. {
  5141. "name": "known_data_y",
  5142. "detail": "The array or range containing dependent (y) values that are already known, used to curve fit an ideal linear trend."
  5143. },
  5144. {
  5145. "name": "known_data_x",
  5146. "detail": "The values of the independent variable(s) corresponding with `known_data_y`."
  5147. },
  5148. {
  5149. "name": "new_data_x",
  5150. "detail": "The data points to return the `y` values for on the ideal curve fit."
  5151. },
  5152. {
  5153. "name": "b",
  5154. "detail": "Given a general linear form of `y = m*x+b` for a curve fit, calculates `b` if `TRUE` or forces `b` to be `0` and only calculates the `m` values if `FALSE`, i.e. forces the curve fit to pass through the origin."
  5155. }
  5156. ]
  5157. },
  5158. "FREQUENCY": {
  5159. "d": "Calculates the frequency distribution of a one-column array into specified classes.",
  5160. "a": "The frequency distribution of array.",
  5161. "p": [
  5162. {
  5163. "name": "data",
  5164. "detail": "The array or range containing the values to be counted."
  5165. },
  5166. {
  5167. "name": "classes",
  5168. "detail": "The array or range containing the set of classes."
  5169. }
  5170. ]
  5171. },
  5172. "GROWTH": {
  5173. "d": "Given partial data about an exponential growth trend, fits an ideal exponential growth trend and/or predicts further values.",
  5174. "a": "Fits points to exponential growth trend.",
  5175. "p": [
  5176. {
  5177. "name": "known_data_y",
  5178. "detail": "The array or range containing dependent (y) values that are already known, used to curve fit an ideal exponential growth curve."
  5179. },
  5180. {
  5181. "name": "known_data_x",
  5182. "detail": "The values of the independent variable(s) corresponding with `known_data_y`."
  5183. },
  5184. {
  5185. "name": "new_data_x",
  5186. "detail": "The data points to return the `y` values for on the ideal curve fit."
  5187. },
  5188. {
  5189. "name": "b",
  5190. "detail": "Given a general exponential form of `y = b*m^x` for a curve fit, calculates `b` if `TRUE` or forces `b` to be `1` and only calculates the `m` values if `FALSE`."
  5191. }
  5192. ]
  5193. },
  5194. "LINEST": {
  5195. "d": "Given partial data about a linear trend, calculates various parameters about the ideal linear trend using the least-squares method.",
  5196. "a": "Best-fit linear trend via least-squares.",
  5197. "p": [
  5198. {
  5199. "name": "known_data_y",
  5200. "detail": "The array or range containing dependent (y) values that are already known, used to curve fit an ideal linear trend."
  5201. },
  5202. {
  5203. "name": "known_data_x",
  5204. "detail": "The values of the independent variable(s) corresponding with `known_data_y`."
  5205. },
  5206. {
  5207. "name": "calculate_b",
  5208. "detail": "Given a linear form of `y = m*x+b`, calculates the y-intercept (`b`) if `TRUE`. Otherwise, forces `b` to be `0` and only calculates the `m` values if `FALSE`, i.e. forces the curve fit to pass through the origin."
  5209. },
  5210. {
  5211. "name": "verbose",
  5212. "detail": "A flag specifying whether to return additional regression statistics or only the linear coefficients and the y-intercept (default)."
  5213. }
  5214. ]
  5215. },
  5216. "LOGEST": {
  5217. "d": "Given partial data about an exponential growth curve, calculates various parameters about the best fit ideal exponential growth curve.",
  5218. "a": "Best-fit exponential growth curve.",
  5219. "p": [
  5220. {
  5221. "name": "known_data_y",
  5222. "detail": "The array or range containing dependent (y) values that are already known, used to curve fit an ideal exponential growth curve."
  5223. },
  5224. {
  5225. "name": "known_data_x",
  5226. "detail": "The values of the independent variable(s) corresponding with `known_data_y`."
  5227. },
  5228. {
  5229. "name": "b",
  5230. "detail": "Given a general exponential form of `y = b*m^x` for a curve fit, calculates `b` if `TRUE` or forces `b` to be `1` and only calculates the `m` values if `FALSE`."
  5231. },
  5232. {
  5233. "name": "verbose",
  5234. "detail": "A flag specifying whether to return additional regression statistics or only the calculated coefficient and exponents."
  5235. }
  5236. ]
  5237. },
  5238. "MDETERM": {
  5239. "d": "Returns the matrix determinant of a square matrix specified as an array or range.",
  5240. "a": "Matrix determinant of a square matrix.",
  5241. "p": [
  5242. {
  5243. "name": "square_matrix",
  5244. "detail": "An array or range with an equal number of rows and columns representing a matrix whose determinant will be calculated."
  5245. }
  5246. ]
  5247. },
  5248. "MINVERSE": {
  5249. "d": "Returns the multiplicative inverse of a square matrix specified as an array or range.",
  5250. "a": "Multiplicative inverse of square matrix.",
  5251. "p": [
  5252. {
  5253. "name": "square_matrix",
  5254. "detail": "An array or range with an equal number of rows and columns representing a matrix whose multiplicative inverse will be calculated."
  5255. }
  5256. ]
  5257. },
  5258. "MMULT": {
  5259. "d": "Calculates the matrix product of two matrices specified as arrays or ranges.",
  5260. "a": "The matrix product of two matrices.",
  5261. "p": [
  5262. {
  5263. "name": "matrix1",
  5264. "detail": "The first matrix in the matrix multiplication operation, represented as an array or range."
  5265. },
  5266. {
  5267. "name": "matrix2",
  5268. "detail": "The second matrix in the matrix multiplication operation, represented as an array or range."
  5269. }
  5270. ]
  5271. },
  5272. "SUMPRODUCT": {
  5273. "d": "Calculates the sum of the products of corresponding entries in two equal-sized arrays or ranges.",
  5274. "a": "Sum of products of elements in two arrays.",
  5275. "p": [
  5276. {
  5277. "name": "array1",
  5278. "detail": "The first array or range whose entries will be multiplied with corresponding entries in the second such array or range."
  5279. },
  5280. {
  5281. "name": "array2",
  5282. "detail": "The second array or range whose entries will be multiplied with corresponding entries in the first such array or range."
  5283. }
  5284. ]
  5285. },
  5286. "ISFORMULA": {
  5287. "d": "Checks whether a value is a formula.",
  5288. "a": "Whether a value is a formula.",
  5289. "p": [
  5290. {
  5291. "name": "cell",
  5292. "detail": "The cell to be verified as containing a formula."
  5293. }
  5294. ]
  5295. },
  5296. "CELL": {
  5297. "d": "Returns the requested information about the specified cell.",
  5298. "a": "Gets information about a cell.",
  5299. "p": [
  5300. {
  5301. "name": "info_type",
  5302. "detail": "The type of information requested (see article for available types)"
  5303. },
  5304. {
  5305. "name": "reference",
  5306. "detail": "The reference to the cell."
  5307. }
  5308. ]
  5309. },
  5310. "NA": {
  5311. "d": 'Returns the "value not available" error, `#N/A`.',
  5312. "a": "The `#N/A` error.",
  5313. "p": []
  5314. },
  5315. "ERROR_TYPE": {
  5316. "d": "Returns a number corresponding to the error value in a different cell.",
  5317. "a": "Error value of cell (as number).",
  5318. "p": [
  5319. {
  5320. "name": "reference",
  5321. "detail": "The cell to find the error number for although you can also provide the error value directly."
  5322. }
  5323. ]
  5324. },
  5325. "ISBLANK": {
  5326. "d": "Checks whether the referenced cell is empty.",
  5327. "a": "Whether the referenced cell is empty.",
  5328. "p": [
  5329. {
  5330. "name": "value",
  5331. "detail": "Reference to the cell that will be checked for emptiness."
  5332. }
  5333. ]
  5334. },
  5335. "ISERR": {
  5336. "d": "Checks whether a value is an error other than `#N/A`.",
  5337. "a": "Whether a value is an error other than `#n/a`.",
  5338. "p": [
  5339. {
  5340. "name": "value",
  5341. "detail": "The value to be verified as an error type other than `#N/A`."
  5342. }
  5343. ]
  5344. },
  5345. "ISERROR": {
  5346. "d": "Checks whether a value is an error.",
  5347. "a": "Whether a value is an error.",
  5348. "p": [
  5349. {
  5350. "name": "value",
  5351. "detail": "The value to be verified as an error type."
  5352. }
  5353. ]
  5354. },
  5355. "ISLOGICAL": {
  5356. "d": "Checks whether a value is `TRUE` or `FALSE`.",
  5357. "a": "Whether a value is `true` or `false`.",
  5358. "p": [
  5359. {
  5360. "name": "value",
  5361. "detail": "The value to be verified as a logical `TRUE` or `FALSE`."
  5362. }
  5363. ]
  5364. },
  5365. "ISNA": {
  5366. "d": "Checks whether a value is the error `#N/A`.",
  5367. "a": "Whether a value is the error `#n/a`.",
  5368. "p": [
  5369. {
  5370. "name": "value",
  5371. "detail": "The value to be compared with the error value `#N/A`."
  5372. }
  5373. ]
  5374. },
  5375. "ISNONTEXT": {
  5376. "d": "Checks whether a value is non-textual.",
  5377. "a": "Whether a value is non-textual.",
  5378. "p": [
  5379. {
  5380. "name": "value",
  5381. "detail": "The value to be checked."
  5382. }
  5383. ]
  5384. },
  5385. "ISNUMBER": {
  5386. "d": "Checks whether a value is a number.",
  5387. "a": "Whether a value is a number.",
  5388. "p": [
  5389. {
  5390. "name": "value",
  5391. "detail": "The value to be verified as a number."
  5392. }
  5393. ]
  5394. },
  5395. "ISREF": {
  5396. "d": "Checks whether a value is a valid cell reference.",
  5397. "a": "Whether a value is a valid cell reference.",
  5398. "p": [
  5399. {
  5400. "name": "value",
  5401. "detail": "The value to be verified as a cell reference."
  5402. }
  5403. ]
  5404. },
  5405. "ISTEXT": {
  5406. "d": "Checks whether a value is text.",
  5407. "a": "Whether a value is text.",
  5408. "p": [
  5409. {
  5410. "name": "value",
  5411. "detail": "The value to be verified as text."
  5412. }
  5413. ]
  5414. },
  5415. "TYPE": {
  5416. "d": "Returns a number associated with the type of data passed into the function.",
  5417. "a": "Get the type of a value.",
  5418. "p": [
  5419. {
  5420. "name": "value",
  5421. "detail": "The value whose type is to be determined."
  5422. }
  5423. ]
  5424. },
  5425. "N": {
  5426. "d": "Returns the argument provided as a number. Text is converted to 0 and errors are returned as-is.",
  5427. "a": "Argument provided as a number.",
  5428. "p": [
  5429. {
  5430. "name": "value",
  5431. "detail": "The argument to be converted to a number."
  5432. }
  5433. ]
  5434. },
  5435. "TO_DATE": {
  5436. "d": "Converts a provided number to a date.",
  5437. "a": "Converts a provided number to a date.",
  5438. "p": [
  5439. {
  5440. "name": "value",
  5441. "detail": "The argument or reference to a cell to be converted to a date."
  5442. }
  5443. ]
  5444. },
  5445. "TO_PURE_NUMBER": {
  5446. "d": "Converts a provided date/time, percentage, currency or other formatted numeric value to a pure number without formatting.",
  5447. "a": "Converts any numeric value to a pure number.",
  5448. "p": [
  5449. {
  5450. "name": "value",
  5451. "detail": "The argument or reference to a cell to be converted to a pure number."
  5452. }
  5453. ]
  5454. },
  5455. "TO_TEXT": {
  5456. "d": "Converts a provided numeric value to a text value.",
  5457. "a": "Converts a provided numeric value to a text value.",
  5458. "p": [
  5459. {
  5460. "name": "value",
  5461. "detail": "The argument or reference to a cell to be converted to text."
  5462. }
  5463. ]
  5464. },
  5465. "TO_DOLLARS": {
  5466. "d": "Converts a provided number to a dollar value.",
  5467. "a": "Converts a provided number to a dollar value.",
  5468. "p": [
  5469. {
  5470. "name": "value",
  5471. "detail": "The argument or reference to a cell to be converted to a dollar value."
  5472. }
  5473. ]
  5474. },
  5475. "TO_PERCENT": {
  5476. "d": "Converts a provided number to a percentage.",
  5477. "a": "Converts a provided number to a percentage.",
  5478. "p": [
  5479. {
  5480. "name": "value",
  5481. "detail": "The argument or reference to a cell to be converted to a percentage."
  5482. }
  5483. ]
  5484. },
  5485. "DGET": {
  5486. "d": "Returns a single value from a database table-like array or range using a SQL-like query.",
  5487. "a": "Single value from a table-like range.",
  5488. "p": [
  5489. {
  5490. "name": "database",
  5491. "detail": "The array or range containing the data to consider, structured in such a way that the first row contains the labels for each column's values."
  5492. },
  5493. {
  5494. "name": "field",
  5495. "detail": "Indicates which column in `database` contains the values to be extracted and operated on."
  5496. },
  5497. {
  5498. "name": "criteria",
  5499. "detail": "An array or range containing zero or more criteria to filter the `database` values by before operating."
  5500. }
  5501. ]
  5502. },
  5503. "DMAX": {
  5504. "d": "Returns the maximum value selected from a database table-like array or range using a SQL-like query.",
  5505. "a": "Maximum of values from a table-like range.",
  5506. "p": [
  5507. {
  5508. "name": "database",
  5509. "detail": "The array or range containing the data to consider, structured in such a way that the first row contains the labels for each column's values."
  5510. },
  5511. {
  5512. "name": "field",
  5513. "detail": "Indicates which column in `database` contains the values to be extracted and operated on."
  5514. },
  5515. {
  5516. "name": "criteria",
  5517. "detail": "An array or range containing zero or more criteria to filter the `database` values by before operating."
  5518. }
  5519. ]
  5520. },
  5521. "DMIN": {
  5522. "d": "Returns the minimum value selected from a database table-like array or range using a SQL-like query.",
  5523. "a": "Minimum of values from a table-like range.",
  5524. "p": [
  5525. {
  5526. "name": "database",
  5527. "detail": "The array or range containing the data to consider, structured in such a way that the first row contains the labels for each column's values."
  5528. },
  5529. {
  5530. "name": "field",
  5531. "detail": "Indicates which column in `database` contains the values to be extracted and operated on."
  5532. },
  5533. {
  5534. "name": "criteria",
  5535. "detail": "An array or range containing zero or more criteria to filter the `database` values by before operating."
  5536. }
  5537. ]
  5538. },
  5539. "DAVERAGE": {
  5540. "d": "Returns the average of a set of values selected from a database table-like array or range using a SQL-like query.",
  5541. "a": "Average of a set of values from a table-like range.",
  5542. "p": [
  5543. {
  5544. "name": "database",
  5545. "detail": "The array or range containing the data to consider, structured in such a way that the first row contains the labels for each column's values."
  5546. },
  5547. {
  5548. "name": "field",
  5549. "detail": "Indicates which column in `database` contains the values to be extracted and operated on."
  5550. },
  5551. {
  5552. "name": "criteria",
  5553. "detail": "An array or range containing zero or more criteria to filter the `database` values by before operating."
  5554. }
  5555. ]
  5556. },
  5557. "DCOUNT": {
  5558. "d": "Counts numeric values selected from a database table-like array or range using a SQL-like query.",
  5559. "a": "Counts values from a table-like range.",
  5560. "p": [
  5561. {
  5562. "name": "database",
  5563. "detail": "The array or range containing the data to consider, structured in such a way that the first row contains the labels for each column's values."
  5564. },
  5565. {
  5566. "name": "field",
  5567. "detail": "Indicates which column in `database` contains the values to be extracted and operated on."
  5568. },
  5569. {
  5570. "name": "criteria",
  5571. "detail": "An array or range containing zero or more criteria to filter the `database` values by before operating."
  5572. }
  5573. ]
  5574. },
  5575. "DCOUNTA": {
  5576. "d": "Counts values, including text, selected from a database table-like array or range using a SQL-like query.",
  5577. "a": "Counts values and text from a table-like range.",
  5578. "p": [
  5579. {
  5580. "name": "database",
  5581. "detail": "The array or range containing the data to consider, structured in such a way that the first row contains the labels for each column's values."
  5582. },
  5583. {
  5584. "name": "field",
  5585. "detail": "Indicates which column in `database` contains the values to be extracted and operated on."
  5586. },
  5587. {
  5588. "name": "criteria",
  5589. "detail": "An array or range containing zero or more criteria to filter the `database` values by before operating."
  5590. }
  5591. ]
  5592. },
  5593. "DPRODUCT": {
  5594. "d": "Returns the product of values selected from a database table-like array or range using a SQL-like query.",
  5595. "a": "Product of values from a table-like range.",
  5596. "p": [
  5597. {
  5598. "name": "database",
  5599. "detail": "The array or range containing the data to consider, structured in such a way that the first row contains the labels for each column's values."
  5600. },
  5601. {
  5602. "name": "field",
  5603. "detail": "Indicates which column in `database` contains the values to be extracted and operated on."
  5604. },
  5605. {
  5606. "name": "criteria",
  5607. "detail": "An array or range containing zero or more criteria to filter the `database` values by before operating."
  5608. }
  5609. ]
  5610. },
  5611. "DSTDEV": {
  5612. "d": "Returns the standard deviation of a population sample selected from a database table-like array or range using a SQL-like query.",
  5613. "a": "Standard deviation of population sample from table.",
  5614. "p": [
  5615. {
  5616. "name": "database",
  5617. "detail": "The array or range containing the data to consider, structured in such a way that the first row contains the labels for each column's values."
  5618. },
  5619. {
  5620. "name": "field",
  5621. "detail": "Indicates which column in `database` contains the values to be extracted and operated on."
  5622. },
  5623. {
  5624. "name": "criteria",
  5625. "detail": "An array or range containing zero or more criteria to filter the `database` values by before operating."
  5626. }
  5627. ]
  5628. },
  5629. "DSTDEVP": {
  5630. "d": "Returns the standard deviation of an entire population selected from a database table-like array or range using a SQL-like query.",
  5631. "a": "Standard deviation of entire population from table.",
  5632. "p": [
  5633. {
  5634. "name": "database",
  5635. "detail": "The array or range containing the data to consider, structured in such a way that the first row contains the labels for each column's values."
  5636. },
  5637. {
  5638. "name": "field",
  5639. "detail": "Indicates which column in `database` contains the values to be extracted and operated on."
  5640. },
  5641. {
  5642. "name": "criteria",
  5643. "detail": "An array or range containing zero or more criteria to filter the `database` values by before operating."
  5644. }
  5645. ]
  5646. },
  5647. "DSUM": {
  5648. "d": "Returns the sum of values selected from a database table-like array or range using a SQL-like query.",
  5649. "a": "Sum of values from a table-like range.",
  5650. "p": [
  5651. {
  5652. "name": "database",
  5653. "detail": "The array or range containing the data to consider, structured in such a way that the first row contains the labels for each column's values."
  5654. },
  5655. {
  5656. "name": "field",
  5657. "detail": "Indicates which column in `database` contains the values to be extracted and operated on."
  5658. },
  5659. {
  5660. "name": "criteria",
  5661. "detail": "An array or range containing zero or more criteria to filter the `database` values by before operating."
  5662. }
  5663. ]
  5664. },
  5665. "DVAR": {
  5666. "d": "Returns the variance of a population sample selected from a database table-like array or range using a SQL-like query.",
  5667. "a": "Variance of population sample from table-like range.",
  5668. "p": [
  5669. {
  5670. "name": "database",
  5671. "detail": "The array or range containing the data to consider, structured in such a way that the first row contains the labels for each column's values."
  5672. },
  5673. {
  5674. "name": "field",
  5675. "detail": "Indicates which column in `database` contains the values to be extracted and operated on."
  5676. },
  5677. {
  5678. "name": "criteria",
  5679. "detail": "An array or range containing zero or more criteria to filter the `database` values by before operating."
  5680. }
  5681. ]
  5682. },
  5683. "DVARP": {
  5684. "d": "Returns the variance of an entire population selected from a database table-like array or range using a SQL-like query.",
  5685. "a": "Variance of a population from a table-like range.",
  5686. "p": [
  5687. {
  5688. "name": "database",
  5689. "detail": "The array or range containing the data to consider, structured in such a way that the first row contains the labels for each column's values."
  5690. },
  5691. {
  5692. "name": "field",
  5693. "detail": "Indicates which column in `database` contains the values to be extracted and operated on."
  5694. },
  5695. {
  5696. "name": "criteria",
  5697. "detail": "An array or range containing zero or more criteria to filter the `database` values by before operating."
  5698. }
  5699. ]
  5700. },
  5701. "AGE_BY_IDCARD": {
  5702. "d": "Calculate the age based on the Chinese ID number. Support 15 or 18",
  5703. "a": "Get age based on ID number.",
  5704. "p": [
  5705. {
  5706. "name": "ID number",
  5707. "detail": "15-digit or 18-digit ID number or range."
  5708. },
  5709. {
  5710. "name": "Deadline",
  5711. "detail": "The deadline or range of age calculation. The default is the current day."
  5712. }
  5713. ]
  5714. },
  5715. "SEX_BY_IDCARD": {
  5716. "d": "Calculate gender based on Chinese ID number. Support 15 or 18",
  5717. "a": "Get gender based on ID number.",
  5718. "p": [
  5719. {
  5720. "name": "ID number",
  5721. "detail": "15-digit or 18-digit ID number or range."
  5722. }
  5723. ]
  5724. },
  5725. "BIRTHDAY_BY_IDCARD": {
  5726. "d": "Calculate the birthday based on the Chinese ID number. Support 15 or 18",
  5727. "a": "Get the birthday based on the ID number.",
  5728. "p": [
  5729. {
  5730. "name": "ID number",
  5731. "detail": "15-digit or 18-digit ID number or range."
  5732. },
  5733. {
  5734. "name": "Birthday format",
  5735. "detail": "Date type, default:0:[1900/01/01], 1:[1900-01-01], 2:[1900\u5E741\u67081\u65E5]"
  5736. }
  5737. ]
  5738. },
  5739. "PROVINCE_BY_IDCARD": {
  5740. "d": "Calculate the province of birthplace based on the Chinese ID number. Support 15 or 18",
  5741. "a": "Get the province of birthplace based on the ID number.",
  5742. "p": [
  5743. {
  5744. "name": "ID number",
  5745. "detail": "15-digit or 18-digit ID number or range."
  5746. }
  5747. ]
  5748. },
  5749. "CITY_BY_IDCARD": {
  5750. "d": "Calculate the city of birthplace based on the Chinese ID number. Support 15 or 18",
  5751. "a": "Get the city of birthplace based on the ID number.",
  5752. "p": [
  5753. {
  5754. "name": "ID number",
  5755. "detail": "15-digit or 18-digit ID number or range."
  5756. }
  5757. ]
  5758. },
  5759. "STAR_BY_IDCARD": {
  5760. "d": "Calculate the constellation based on the Chinese ID number. Support 15 or 18",
  5761. "a": "Get the constellation based on the ID number.",
  5762. "p": [
  5763. {
  5764. "name": "ID number",
  5765. "detail": "15-digit or 18-digit ID number or range."
  5766. }
  5767. ]
  5768. },
  5769. "ANIMAL_BY_IDCARD": {
  5770. "d": "Calculate the zodiac (rat, ox, tiger, rabbit...) based on the Chinese ID number. Support 15 or 18",
  5771. "a": "Get the zodiac according to the ID number.",
  5772. "p": [
  5773. {
  5774. "name": "ID number",
  5775. "detail": "15-digit or 18-digit ID number or range."
  5776. }
  5777. ]
  5778. },
  5779. "ISIDCARD": {
  5780. "d": "Verify that the format of the ID card is correct. Support 15 or 18",
  5781. "a": "Verify the correctness of the ID card format.",
  5782. "p": [
  5783. {
  5784. "name": "ID number",
  5785. "detail": "15-digit or 18-digit ID number or range."
  5786. }
  5787. ]
  5788. },
  5789. "DM_TEXT_CUTWORD": {
  5790. "d": "Text segmentation. Split a series of words into a series of individual words",
  5791. "a": "Chinese text segmentation.",
  5792. "p": [
  5793. {
  5794. "name": "Text",
  5795. "detail": "Any text that needs word segmentation."
  5796. },
  5797. {
  5798. "name": "Word segmentation mode",
  5799. "detail": "The default is 0[precision mode], 1[full mode], 2[search engine mode]."
  5800. }
  5801. ]
  5802. },
  5803. "DM_TEXT_TFIDF": {
  5804. "d": "Use tf-idf algorithm for keyword extraction. Identify keywords from a series of text",
  5805. "a": "tf-idf keyword recognition.",
  5806. "p": [
  5807. {
  5808. "name": "Text",
  5809. "detail": "Any text that needs word segmentation."
  5810. },
  5811. {
  5812. "name": "Number of keywords",
  5813. "detail": "The number of keywords returned by the algorithm, the default is 20"
  5814. },
  5815. {
  5816. "name": "Corpus",
  5817. "detail": "Select a corpus in a specific field, the default is 0[General], 1[Finance], 2[Medical]"
  5818. }
  5819. ]
  5820. },
  5821. "DM_TEXT_TEXTRANK": {
  5822. "d": "Use TextRank algorithm to extract keywords. Identify keywords from a series of text",
  5823. "a": "TextRank keyword recognition.",
  5824. "p": [
  5825. {
  5826. "name": "Text",
  5827. "detail": "Any text that needs word segmentation."
  5828. },
  5829. {
  5830. "name": "Number of keywords",
  5831. "detail": "The number of keywords returned by the algorithm, the default is 20"
  5832. },
  5833. {
  5834. "name": "Corpus",
  5835. "detail": "Select a corpus in a specific field, the default is 0[General], 1[Finance], 2[Medical]"
  5836. }
  5837. ]
  5838. },
  5839. "DATA_CN_STOCK_CLOSE": {
  5840. "d": "According to the stock code and date, return the corresponding stock closing price of A shares.",
  5841. "a": "Returns the closing price of stock.",
  5842. "p": [
  5843. {
  5844. "name": "Stock code",
  5845. "detail": "6-digit stock code, required."
  5846. },
  5847. {
  5848. "name": "Date",
  5849. "detail": "The trading day of the stock, the default is the latest trading day"
  5850. },
  5851. {
  5852. "name": "Reversion and exclusion",
  5853. "detail": "Select the ex right restoration type of the stock, default to 0 [former reversion], 1 [original price], 2 [post reversion]"
  5854. }
  5855. ]
  5856. },
  5857. "DATA_CN_STOCK_OPEN": {
  5858. "d": "According to the stock code and date, return the opening price of stock.",
  5859. "a": "Return the opening price of a shares.",
  5860. "p": [
  5861. {
  5862. "name": "Stock code",
  5863. "detail": "6-digit stock code, required."
  5864. },
  5865. {
  5866. "name": "Date",
  5867. "detail": "The trading day of the stock, the default is the latest trading day"
  5868. },
  5869. {
  5870. "name": "Reversion and exclusion",
  5871. "detail": "Select the ex right restoration type of the stock, default to 0 [former reversion], 1 [original price], 2 [post reversion]"
  5872. }
  5873. ]
  5874. },
  5875. "DATA_CN_STOCK_MAX": {
  5876. "d": "According to the stock code and date, return the highest price of stock.",
  5877. "a": "Return the highest price of stock.",
  5878. "p": [
  5879. {
  5880. "name": "Stock code",
  5881. "detail": "6-digit stock code, required."
  5882. },
  5883. {
  5884. "name": "Date",
  5885. "detail": "The trading day of the stock, the default is the latest trading day"
  5886. },
  5887. {
  5888. "name": "Reversion and exclusion",
  5889. "detail": "Select the ex right restoration type of the stock, default to 0 [former reversion], 1 [original price], 2 [post reversion]"
  5890. }
  5891. ]
  5892. },
  5893. "DATA_CN_STOCK_MIN": {
  5894. "d": "According to the stock code and date, return the lowest price of stock.",
  5895. "a": "Returns the lowest price of stock.",
  5896. "p": [
  5897. {
  5898. "name": "Stock code",
  5899. "detail": "6-digit stock code, required."
  5900. },
  5901. {
  5902. "name": "Date",
  5903. "detail": "The trading day of the stock, the default is the latest trading day"
  5904. },
  5905. {
  5906. "name": "Reversion and exclusion",
  5907. "detail": "Select the ex right restoration type of the stock, default to 0 [former reversion], 1 [original price], 2 [post reversion]"
  5908. }
  5909. ]
  5910. },
  5911. "DATA_CN_STOCK_VOLUMN": {
  5912. "d": "According to the stock code and date, return the corresponding stock trading volume of A shares.",
  5913. "a": "Returns the corresponding stock trading volume of A shares.",
  5914. "p": [
  5915. {
  5916. "name": "Stock code",
  5917. "detail": "6-digit stock code, required."
  5918. },
  5919. {
  5920. "name": "Date",
  5921. "detail": "The trading day of the stock, the default is the latest trading day"
  5922. },
  5923. {
  5924. "name": "Reversion and exclusion",
  5925. "detail": "Select the ex right restoration type of the stock, default to 0 [former reversion], 1 [original price], 2 [post reversion]"
  5926. }
  5927. ]
  5928. },
  5929. "DATA_CN_STOCK_AMOUNT": {
  5930. "d": "According to the stock code and date, return the corresponding stock turnover of A shares.",
  5931. "a": "Returns the corresponding stock turnover of A shares.",
  5932. "p": [
  5933. {
  5934. "name": "Stock code",
  5935. "detail": "6-digit stock code, required."
  5936. },
  5937. {
  5938. "name": "Date",
  5939. "detail": "The trading day of the stock, the default is the latest trading day"
  5940. },
  5941. {
  5942. "name": "Reversion and exclusion",
  5943. "detail": "Select the ex right restoration type of the stock, default to 0 [former reversion], 1 [original price], 2 [post reversion]"
  5944. }
  5945. ]
  5946. },
  5947. "ISDATE": {
  5948. "d": "Returns whether a value is a date.",
  5949. "a": "Whether a value is a date.",
  5950. "p": [
  5951. {
  5952. "name": "value",
  5953. "detail": "The value to be verified as a date."
  5954. }
  5955. ]
  5956. },
  5957. "LINESPLINES": {
  5958. "d": "Generate sparklines embedded in the cell to describe the continuous trend of data",
  5959. "a": "Generate sparklines line chart",
  5960. "p": [
  5961. {
  5962. "name": "Range",
  5963. "detail": "Range\uFF0CValues can be calculated effectively, such as A1:A20, {1,2,3,4,5}, etc."
  5964. },
  5965. {
  5966. "name": "Line color",
  5967. "detail": "The line color of the line graph can be range A1, color table index value or specific color value. Set it to 0 or false to not display it. It supports regx, rgb, rgba, etc. Default #2ec7c9"
  5968. },
  5969. {
  5970. "name": "Line thickness",
  5971. "detail": "Line thickness of the line graph, the default is 1px"
  5972. },
  5973. {
  5974. "name": "Auxiliary line",
  5975. "detail": "A horizontal line, which can be min, max, avg, median, range or custom value, default 0 none"
  5976. },
  5977. {
  5978. "name": "Auxiliary line color",
  5979. "detail": "Color setting of auxiliary line, same as line color configuration, default #000"
  5980. },
  5981. {
  5982. "name": "Maximum mark",
  5983. "detail": "Identifies the maximum value of the line graph, the same line color configuration, default 0 does not display"
  5984. },
  5985. {
  5986. "name": "Minimum mark",
  5987. "detail": "Identify the minimum value of the line graph, the same line color configuration, default 0 does not display"
  5988. },
  5989. {
  5990. "name": "Mark size",
  5991. "detail": "The maximum and minimum mark size settings, the default is 1.5"
  5992. }
  5993. ]
  5994. },
  5995. "AREASPLINES": {
  5996. "d": "Generate sparklines embedded in the cell area chart, generally used to describe the continuous cumulative value trend of the data",
  5997. "a": "Generate sparklines area chart",
  5998. "p": [
  5999. {
  6000. "name": "Range",
  6001. "detail": "Range\uFF0CValues can be calculated effectively, such as A1:A20, {1,2,3,4,5}, etc."
  6002. },
  6003. {
  6004. "name": "Line color",
  6005. "detail": "The line color of the line graph can be range A1, color table index value or specific color value. Set it to 0 or false to not display it. It supports regx, rgb, rgba, etc. Default #2ec7c9"
  6006. },
  6007. {
  6008. "name": "Fill color",
  6009. "detail": "Form an area chart, the same line color configuration, default 0 does not display"
  6010. },
  6011. {
  6012. "name": "Line thickness",
  6013. "detail": "Line thickness of the line graph, the default is 1px"
  6014. },
  6015. {
  6016. "name": "Auxiliary line",
  6017. "detail": "A horizontal line, which can be min, max, avg, median, range or custom value, default 0 none"
  6018. },
  6019. {
  6020. "name": "Auxiliary line color",
  6021. "detail": "Color setting of auxiliary line, same as line color configuration, default #000"
  6022. }
  6023. ]
  6024. },
  6025. "COLUMNSPLINES": {
  6026. "d": "Generate sparklines embedded in the vertical histogram of cells, generally used to describe the size of discrete data",
  6027. "a": "Generate sparklines vertical histogram",
  6028. "p": [
  6029. {
  6030. "name": "Range",
  6031. "detail": "Range\uFF0CValues can be calculated effectively, such as A1:A20, {1,2,3,4,5}, etc."
  6032. },
  6033. {
  6034. "name": "Bar interval",
  6035. "detail": "The distance between bars, the default is 1"
  6036. },
  6037. {
  6038. "name": "Bar color",
  6039. "detail": "The line color of the line graph can be range A1, color table index value or specific color value. Set it to 0 or false to not display it. It supports regx, rgb, rgba, etc. Default #fc5c5c"
  6040. },
  6041. {
  6042. "name": "Negative bar color",
  6043. "detail": "Negative bar color setting, representing the color of negative value, same as the bar color configuration, default #97b552"
  6044. },
  6045. {
  6046. "name": "Max",
  6047. "detail": "The maximum value of the bar chart, used to standardize the length of the bar chart, the default is to automatically calculate false, auto, null"
  6048. },
  6049. {
  6050. "name": "Color palette",
  6051. "detail": "The color palette can set the color of each bar individually, multiple settings can be set, and two formats are supported: 1 color such as #000, which means that the color of the first bar is black; 2 value range: color, such as -2:# 000 indicates that the bar with a value of -2 is black, 0:5:#000 indicates that the bar with a value of 0-5 is black, and the default is empty"
  6052. }
  6053. ]
  6054. },
  6055. "STACKCOLUMNSPLINES": {
  6056. "d": "Generate sparklines, a cumulative vertical histogram embedded in a cell, generally used to describe the numerical size of multiple dimensions of discrete data",
  6057. "a": "Generate sparklines cumulative vertical histogram",
  6058. "p": [
  6059. {
  6060. "name": "Range",
  6061. "detail": "Range\uFF0CValues can be calculated effectively, such as A1:A20, {1,2,3,4,5}, etc."
  6062. },
  6063. {
  6064. "name": "Stack by column",
  6065. "detail": "If you need to stack by row, set this item to false or 0, the default is 1"
  6066. },
  6067. {
  6068. "name": "Bar interval",
  6069. "detail": "The distance between bars, the default is 1"
  6070. },
  6071. {
  6072. "name": "Max",
  6073. "detail": "The maximum value of the cumulative bar, used to regulate the length of the bar, the default is to automatically calculate false, auto, null"
  6074. },
  6075. {
  6076. "name": "Color palette",
  6077. "detail": "The color palette can individually set the bar color of each dimension, which can be set to the range of A1:A10, etc. The default is #2ec7c9, #fc5c5c, #5ab1ef, #ffb980..."
  6078. }
  6079. ]
  6080. },
  6081. "BARSPLINES": {
  6082. "d": "Generate sparklines embedded in the cell, generally used to describe the size of discrete data",
  6083. "a": "Generate sparklines horizontal bar graph",
  6084. "p": [
  6085. {
  6086. "name": "Range",
  6087. "detail": "Range\uFF0CValues can be calculated effectively, such as A1:A20, {1,2,3,4,5}, etc."
  6088. },
  6089. {
  6090. "name": "Bar interval",
  6091. "detail": "The distance between bars, the default is 1"
  6092. },
  6093. {
  6094. "name": "Bar color",
  6095. "detail": "The line color of the line graph can be range A1, color table index value or specific color value. Set it to 0 or false to not display it. It supports regx, rgb, rgba, etc. Default #fc5c5c"
  6096. },
  6097. {
  6098. "name": "Negative bar color",
  6099. "detail": "Negative bar color setting, representing the color of negative value, same as the bar color configuration, default #97b552"
  6100. },
  6101. {
  6102. "name": "Max",
  6103. "detail": "The maximum value of the bar chart, used to standardize the length of the bar chart, the default is to automatically calculate false, auto, null"
  6104. },
  6105. {
  6106. "name": "Color palette",
  6107. "detail": "The color palette can set the color of each bar individually, multiple settings can be set, and two formats are supported: 1 color such as #000, which means that the color of the first bar is black; 2 value range: color, such as -2:# 000 indicates that the bar with a value of -2 is black, 0:5:#000 indicates that the bar with a value of 0-5 is black, and the default is empty"
  6108. }
  6109. ]
  6110. },
  6111. "STACKBARSPLINES": {
  6112. "d": "Generate sparklines, a cumulative horizontal bar graph embedded in a cell, which is generally used to describe the numerical size of multiple dimensions of discrete data",
  6113. "a": "Generate sparklines cumulative horizontal bar graph",
  6114. "p": [
  6115. {
  6116. "name": "Range",
  6117. "detail": "Range\uFF0CValues can be calculated effectively, such as A1:A20, {1,2,3,4,5}, etc."
  6118. },
  6119. {
  6120. "name": "Stack by column",
  6121. "detail": "If you need to stack by row, set this item to false or 0, the default is 1"
  6122. },
  6123. {
  6124. "name": "Bar interval",
  6125. "detail": "The distance between bars, the default is 1"
  6126. },
  6127. {
  6128. "name": "Max",
  6129. "detail": "The maximum value of the cumulative bar, used to regulate the length of the bar, the default is to automatically calculate false, auto, null"
  6130. },
  6131. {
  6132. "name": "Color palette",
  6133. "detail": "The color palette can individually set the bar color of each dimension, which can be set to the range of A1:A10, etc. The default is #2ec7c9, #fc5c5c, #5ab1ef, #ffb980..."
  6134. }
  6135. ]
  6136. },
  6137. "DISCRETESPLINES": {
  6138. "d": "Generate sparklines embedded in the cell, generally used to describe the trend of discrete data",
  6139. "a": "Generate sparklines discrete graph",
  6140. "p": [
  6141. {
  6142. "name": "Range",
  6143. "detail": "Range\uFF0CValues can be calculated effectively, such as A1:A20, {1,2,3,4,5}, etc."
  6144. },
  6145. {
  6146. "name": "Segmentation threshold",
  6147. "detail": "Discrete graph column color distinction, for example: if the value is 0, blue is greater than 0, red is less than 0, and the default is 0"
  6148. },
  6149. {
  6150. "name": "Above threshold color",
  6151. "detail": "The line color of the line graph can be range A1, color table index value or specific color value. Set it to 0 or false to not display it. It supports regx, rgb, rgba, etc. Default #2ec7c9"
  6152. },
  6153. {
  6154. "name": "Below threshold color",
  6155. "detail": "The color setting of the bar below the threshold, the same as the color above the threshold, default #fc5c5c"
  6156. }
  6157. ]
  6158. },
  6159. "TRISTATESPLINES": {
  6160. "d": "Generate sparklines, a three-state graph embedded in the cell, which is generally used to describe the trend of three situations, such as winning, losing, or drawing.",
  6161. "a": "Generate sparklines three-state graph",
  6162. "p": [
  6163. {
  6164. "name": "Range",
  6165. "detail": "Range\uFF0CValues can be calculated effectively, such as A1:A20, {1,2,3,4,5}, etc."
  6166. },
  6167. {
  6168. "name": "Bar interval",
  6169. "detail": "The distance between bars, the default is 1"
  6170. },
  6171. {
  6172. "name": "Bar color",
  6173. "detail": "The line color of the line graph can be range A1, color table index value or specific color value. Set it to 0 or false to not display it. It supports regx, rgb, rgba, etc. Default #fc5c5c"
  6174. },
  6175. {
  6176. "name": "Negative bar color",
  6177. "detail": "Negative bar color setting, representing the color of negative value, same as the bar color configuration, default #97b552"
  6178. },
  6179. {
  6180. "name": "Zero value bar color",
  6181. "detail": "Zero value bar color setting, representing 0 value color, the same color configuration of the bar, default #999"
  6182. },
  6183. {
  6184. "name": "Color palette",
  6185. "detail": "The color palette can set the color of each bar individually, multiple settings can be set, and two formats are supported: 1 color such as #000, which means that the color of the first bar is black; 2 value range: color, such as -2:# 000 indicates that the bar with a value of -2 is black, 0:5:#000 indicates that the bar with a value of 0-5 is black, and the default is empty"
  6186. }
  6187. ]
  6188. },
  6189. "PIESPLINES": {
  6190. "d": "Generate sparklines pie chart embedded in the cell, generally used to describe the proportion of data",
  6191. "a": "Generate sparklines pie chart",
  6192. "p": [
  6193. {
  6194. "name": "Range",
  6195. "detail": "Range\uFF0CValues can be calculated effectively, such as A1:A20, {1,2,3,4,5}, etc."
  6196. },
  6197. {
  6198. "name": "Rotation angle",
  6199. "detail": "The rotation angle of the pie chart, the default is 0"
  6200. },
  6201. {
  6202. "name": "border",
  6203. "detail": "Pie chart border size, default is none 0"
  6204. },
  6205. {
  6206. "name": "Border color",
  6207. "detail": "The border color of the pie chart, the default is #000"
  6208. },
  6209. {
  6210. "name": "Color palette",
  6211. "detail": "The color of the slice can be set in the palette, which can be set to the range of A1:A10, etc. The default is #2ec7c9, #fc5c5c, #5ab1ef, #ffb980..."
  6212. }
  6213. ]
  6214. },
  6215. "BOXSPLINES": {
  6216. "d": "Generate sparklines embedded in the cell box plot, generally used to describe the statistical distribution of the data set",
  6217. "a": "Generate sparklines box plot",
  6218. "p": [
  6219. {
  6220. "name": "Range",
  6221. "detail": "Range\uFF0CValues can be calculated effectively, such as A1:A20, {1,2,3,4,5}, etc."
  6222. },
  6223. {
  6224. "name": "Outlier ratio",
  6225. "detail": "The threshold range of outliers, if it is 0 or false, it will not be displayed, the default is 1.5 times"
  6226. },
  6227. {
  6228. "name": "Target value",
  6229. "detail": "The target value setting on the box plot, the default is false and does not display"
  6230. },
  6231. {
  6232. "name": "Point size",
  6233. "detail": "The radius of the target point and outlier is set, the default is 1.5"
  6234. }
  6235. ]
  6236. },
  6237. "BULLETSPLINES": {
  6238. "d": "Generate sparklines embedded in the cell, generally used to describe the task achievement rate",
  6239. "a": "Generating sparklines bullets",
  6240. "p": [
  6241. {
  6242. "name": "Target",
  6243. "detail": "The numerical value can be calculated effectively for the achieved target value, such as A1, 100, etc."
  6244. },
  6245. {
  6246. "name": "achieved",
  6247. "detail": "Only when the value is completed can the value be calculated effectively, such as A1, 100, etc."
  6248. },
  6249. {
  6250. "name": "Contrast",
  6251. "detail": "Comparative values, such as excess, minimum, and bottom line for awards, can be effectively calculated, such as A1, 100, etc. You can set up to 9 comparison values"
  6252. }
  6253. ]
  6254. },
  6255. "COMPOSESPLINES": {
  6256. "d": "Support multiple types of pictures in the same cell, each parameter represents a sparklines diagram",
  6257. "a": "Combine sparklines graphs into one cell",
  6258. "p": [
  6259. {
  6260. "name": "config",
  6261. "detail": "Sparklines chart settings, such as A1:A20, a completed pie chart, line chart settings, etc."
  6262. }
  6263. ]
  6264. },
  6265. "SORT": {
  6266. "d": "Sorts the rows of a given array or range by the values in one or more columns.",
  6267. "a": "Sorts rows of range by specified column.",
  6268. "p": [
  6269. {
  6270. "name": "range",
  6271. "detail": "The data to be sorted."
  6272. },
  6273. {
  6274. "name": "sort_column",
  6275. "detail": "The index of the column in `range` or a range outside of `range` containing the values by which to sort."
  6276. },
  6277. {
  6278. "name": "is_ascending",
  6279. "detail": "`TRUE` or `FALSE` indicating whether to sort `sort_column` in ascending order. `FALSE` sorts in descending order."
  6280. },
  6281. {
  6282. "name": "sort_column2",
  6283. "detail": "Additional columns."
  6284. }
  6285. ]
  6286. },
  6287. "FILTER": {
  6288. "d": "Returns a filtered version of the source range, returning only rows or columns which meet the specified conditions.",
  6289. "a": "Filters a range based off provided conditions.",
  6290. "p": [
  6291. {
  6292. "name": "range",
  6293. "detail": "The data to be filtered."
  6294. },
  6295. {
  6296. "name": "condition1",
  6297. "detail": "A column or row containing true or false values corresponding to the first column or row of `range`, or an array formula evaluating to true or false."
  6298. },
  6299. {
  6300. "name": "condition2",
  6301. "detail": "Additional rows or columns containing boolean values `TRUE` or `FALSE` indicating whether the corresponding row or column in `range` should pass through `FILTER`. Can also contain array formula expressions which evaluate to such rows or columns. All conditions must be of the same type (row or column). Mixing row conditions and column conditions is not permitted."
  6302. }
  6303. ]
  6304. },
  6305. "UNIQUE": {
  6306. "d": "Returns unique rows in the provided source range, discarding duplicates. Rows are returned in the order in which they first appear in the source range.",
  6307. "a": "Unique rows in the provided source range.",
  6308. "p": [
  6309. {
  6310. "name": "range",
  6311. "detail": "The data to filter by unique entries."
  6312. },
  6313. {
  6314. "name": "by_col",
  6315. "detail": "[Option] - Logical value, indicating how to compare; by row = FALSE() or omitted; by column = TRUE()."
  6316. },
  6317. {
  6318. "name": "occurs_once",
  6319. "detail": "[Option] - Logical value, only one occurrence in the unique value is returned = TRUE(); including all unique values = FALSE() or omitted."
  6320. }
  6321. ]
  6322. },
  6323. "RANDARRAY": {
  6324. "d": "Returns a grid of random numbers between 0 inclusive and 1 exclusive. The grid size will match the provided rows and columns arguments. If neither rows nor columns are provided, then the grid will be size 1 x 1.",
  6325. "a": "Returns a grid of random numbers.",
  6326. "p": [
  6327. {
  6328. "name": "rows",
  6329. "detail": "The number of rows to populate with a random number."
  6330. },
  6331. {
  6332. "name": "columns",
  6333. "detail": "The number of columns to populate with a random number."
  6334. }
  6335. ]
  6336. },
  6337. "SEQUENCE": {
  6338. "d": "Returns a grid of sequential numbers starting at a specified start value and increasing by a specified step size. By default, the sequence starts at and increases by 1.",
  6339. "a": "Returns a grid of sequential numbers.",
  6340. "p": [
  6341. {
  6342. "name": "rows",
  6343. "detail": "The number of rows in the function's resulting grid."
  6344. },
  6345. {
  6346. "name": "columns",
  6347. "detail": "The number of columns in the function's resulting grid. If omitted, the result grid will have 1 column."
  6348. },
  6349. {
  6350. "name": "start",
  6351. "detail": "The number, at which to start the sequence. If omitted, the sequence will start at 1."
  6352. },
  6353. {
  6354. "name": "step",
  6355. "detail": "The amount each value in the sequence will differ by. If omitted, each value will differ by 1."
  6356. }
  6357. ]
  6358. },
  6359. "EVALUATE": {
  6360. "d": "Evaluate a formula or expression expressed in words and return the result",
  6361. "a": "Evaluate according to literal formula or expression.",
  6362. "p": [
  6363. {
  6364. "name": "expression",
  6365. "detail": "Formula or expression"
  6366. }
  6367. ]
  6368. },
  6369. "REMOTE": {
  6370. "d": "Calls a function on a remote server",
  6371. "a": "Calls a function on a remote back end server/API.",
  6372. "p": [
  6373. {
  6374. "name": "remote_expression",
  6375. "detail": "Formula"
  6376. }
  6377. ]
  6378. }
  6379. },
  6380. toolbar: {
  6381. undo: "Undo",
  6382. redo: "Redo",
  6383. paintFormat: "Paint format",
  6384. currencyFormat: "Format as currency",
  6385. percentageFormat: "Format as percent",
  6386. numberDecrease: "Decrease decimal places",
  6387. numberIncrease: "Increase decimal places",
  6388. moreFormats: "More formats",
  6389. font: "Font",
  6390. fontSize: "Font size",
  6391. bold: "Bold (Ctrl+B)",
  6392. italic: "Italic (Ctrl+I)",
  6393. strikethrough: "Strikethrough (Alt+Shift+5)",
  6394. underline: "Underline",
  6395. textColor: "Text color",
  6396. chooseColor: "choose color",
  6397. resetColor: "Reset",
  6398. customColor: "CUSTOM",
  6399. alternatingColors: "Alternating colors",
  6400. confirmColor: "OK",
  6401. cancelColor: "Cancel",
  6402. collapse: "Collapse",
  6403. fillColor: "Fill color",
  6404. border: "Border",
  6405. borderStyle: "Border style",
  6406. mergeCell: "Merge cells",
  6407. chooseMergeType: "Choose merge type",
  6408. horizontalAlign: "Horizontal align",
  6409. verticalAlign: "Vertical align",
  6410. alignment: "Alignment",
  6411. textWrap: "Text wrap",
  6412. textWrapMode: "Text wrap mode",
  6413. textRotate: "Text rotate",
  6414. textRotateMode: "Text rotate mode",
  6415. freezeTopRow: "Freeze first row",
  6416. sortAndFilter: "Sort and filter",
  6417. findAndReplace: "Find and replace",
  6418. sum: "SUM",
  6419. autoSum: "Auto SUM",
  6420. moreFunction: "More functions",
  6421. conditionalFormat: "Conditional format",
  6422. postil: "Comment",
  6423. pivotTable: "Pivot Table",
  6424. chart: "Chart",
  6425. screenshot: "Screenshot",
  6426. splitColumn: "Split text",
  6427. insertImage: "Insert image",
  6428. insertLink: "Insert link",
  6429. dataVerification: "Data verification",
  6430. protection: "Protect the sheet",
  6431. clearText: "Clear color",
  6432. noColorSelectedText: "No color is selected",
  6433. toolMore: "More",
  6434. toolLess: "Less",
  6435. toolClose: "Close",
  6436. toolMoreTip: "More features",
  6437. moreOptions: "More options",
  6438. cellFormat: "Cell format config",
  6439. print: "Print"
  6440. },
  6441. alternatingColors: {
  6442. applyRange: "Apply to range",
  6443. selectRange: "Select a data range",
  6444. header: "Header",
  6445. footer: "Footer",
  6446. errorInfo: "Cannot perform this operation on multiple selection areas, please select a single area and try again",
  6447. textTitle: "Format style",
  6448. custom: "CUSTOM",
  6449. close: "close",
  6450. selectionTextColor: "Click to select text color",
  6451. selectionCellColor: "Click to select cell color",
  6452. removeColor: "Remove alternating colors",
  6453. colorShow: "color",
  6454. currentColor: "Current",
  6455. tipSelectRange: "Please select the range of alternating colors",
  6456. errorNoRange: "No range is selected",
  6457. errorExistColors: "Alternating colors already exist and cannot be edited"
  6458. },
  6459. button: {
  6460. confirm: "OK",
  6461. cancel: "Cancel",
  6462. close: "Close",
  6463. update: "Update",
  6464. delete: "Delete",
  6465. insert: "Insert",
  6466. prevPage: "Previous",
  6467. nextPage: "Next",
  6468. total: "total:"
  6469. },
  6470. paint: {
  6471. start: "Paint format start",
  6472. end: "ESC",
  6473. tipSelectRange: "Please select the range to be copied",
  6474. tipNotMulti: "Cannot perform this operation on multiple selection ranges"
  6475. },
  6476. format: {
  6477. moreCurrency: "More currency formats",
  6478. moreDateTime: "More date and time formats",
  6479. moreNumber: "More number formats",
  6480. titleCurrency: "Currency formats",
  6481. decimalPlaces: "Decimal places",
  6482. titleDateTime: "Date and time formats",
  6483. titleNumber: "Number formats"
  6484. },
  6485. info: {
  6486. detailUpdate: "New opened",
  6487. detailSave: "Local cache restored",
  6488. row: "",
  6489. column: "",
  6490. loading: "Loading...",
  6491. copy: "Copy",
  6492. return: "Exit",
  6493. rename: "Rename",
  6494. tips: "WorkBook rename",
  6495. noName: "Untitled spreadsheet",
  6496. wait: "waiting for update",
  6497. add: "Add",
  6498. addLast: "more rows at bottom",
  6499. backTop: "Back to the top",
  6500. pageInfo: "Total ${total}\uFF0C${totalPage} page\uFF0Ccurrent ${currentPage}",
  6501. nextPage: "Next",
  6502. tipInputNumber: "Please enter the number",
  6503. tipInputNumberLimit: "The increase range is limited to 1-100",
  6504. tipRowHeightLimit: "Row height must be between 0 ~ 545",
  6505. tipColumnWidthLimit: "The column width must be between 0 ~ 2038",
  6506. pageInfoFull: "Total ${total}\uFF0C${totalPage} page\uFF0CAll data displayed"
  6507. },
  6508. currencyDetail: {
  6509. RMB: "RMB",
  6510. USdollar: "US dollar",
  6511. EUR: "EUR",
  6512. GBP: "GBP",
  6513. HK: "HK",
  6514. JPY: "JPY",
  6515. AlbanianLek: "Albanian Lek",
  6516. AlgerianDinar: "Algerian Dinar",
  6517. Afghani: "Afghani",
  6518. ArgentinePeso: "Argentine Peso",
  6519. UnitedArabEmiratesDirham: "United Arab Emirates Dirham",
  6520. ArubanFlorin: "Aruban Florin",
  6521. OmaniRial: "Omani Rial",
  6522. Azerbaijanimanat: "Azerbaijani manat",
  6523. EgyptianPound: "Egyptian Pound",
  6524. EthiopianBirr: "Ethiopian Birr",
  6525. AngolaKwanza: "Angola Kwanza",
  6526. AustralianDollar: "Australian Dollar",
  6527. Patacas: "Patacas",
  6528. BarbadosDollar: "Barbados Dollar",
  6529. PapuaNewGuineaKina: "Papua New Guinea Kina",
  6530. BahamianDollar: "Bahamian Dollar",
  6531. PakistanRupee: "Pakistan Rupee",
  6532. ParaguayanGuarani: "Paraguayan Guarani",
  6533. BahrainiDinar: "Bahraini Dinar",
  6534. PanamanianBalboa: "Panamanian Balboa",
  6535. Brazilianreal: "Brazilian real",
  6536. Belarusianruble: "Belarusian ruble",
  6537. BermudianDollar: "Bermudian Dollar",
  6538. BulgarianLev: "Bulgarian Lev",
  6539. IcelandKrona: "Iceland Krona",
  6540. BosniaHerzegovinaConvertibleMark: "Bosnia-Herzegovina Convertible Mark",
  6541. PolishZloty: "Polish Zloty",
  6542. Boliviano: "Boliviano",
  6543. BelizeDollar: "Belize Dollar",
  6544. BotswanaPula: "Botswana Pula",
  6545. NotDannuzhamu: "Not Dannuzhamu",
  6546. BurundiFranc: "Burundi Franc",
  6547. NorthKoreanWon: "North Korean Won",
  6548. DanishKrone: "Danish Krone",
  6549. EastCaribbeanDollar: "East Caribbean Dollar",
  6550. DominicaPeso: "Dominica Peso",
  6551. RussianRuble: "Russian Ruble",
  6552. EritreanNakfa: "Eritrean Nakfa",
  6553. CFAfranc: "CFA franc",
  6554. PhilippinePeso: "Philippine Peso",
  6555. FijiDollar: "Fiji Dollar",
  6556. CapeVerdeEscudo: "Cape Verde Escudo",
  6557. FalklandIslandsPound: "Falkland Islands Pound",
  6558. GambianDalasi: "Gambian Dalasi",
  6559. Congolesefranc: "Congolese franc",
  6560. ColombianPeso: "Colombian Peso",
  6561. CostaRicanColon: "Costa Rican Colon",
  6562. CubanPeso: "Cuban Peso",
  6563. Cubanconvertiblepeso: "Cuban convertible peso",
  6564. GuyanaDollar: "Guyana Dollar",
  6565. KazakhstanTenge: "Kazakhstan Tenge",
  6566. Haitiangourde: "Haitian gourde",
  6567. won: "won",
  6568. NetherlandsAntillesGuilder: "Netherlands Antilles Guilder",
  6569. Honduraslempiras: "Honduras lempiras",
  6570. DjiboutiFranc: "Djibouti Franc",
  6571. KyrgyzstanSom: "Kyrgyzstan Som",
  6572. GuineaFranc: "Guinea Franc",
  6573. CanadianDollar: "Canadian Dollar",
  6574. GhanaianCedi: "Ghanaian Cedi",
  6575. Cambodianriel: "Cambodian riel",
  6576. CzechKoruna: "Czech Koruna",
  6577. ZimbabweDollar: "Zimbabwe Dollar",
  6578. QatariRiyal: "Qatari Riyal",
  6579. CaymanIslandsDollar: "Cayman Islands Dollar",
  6580. Comorianfranc: "Comorian franc",
  6581. KuwaitiDinar: "Kuwaiti Dinar",
  6582. CroatianKuna: "Croatian Kuna",
  6583. KenyanShilling: "Kenyan Shilling",
  6584. LesothoLoti: "Lesotho Loti",
  6585. LaoKip: "Lao Kip",
  6586. LebanesePound: "Lebanese Pound",
  6587. Lithuanianlitas: "Lithuanian litas",
  6588. LibyanDinar: "Libyan Dinar",
  6589. LiberianDollar: "Liberian Dollar",
  6590. RwandaFranc: "Rwanda Franc",
  6591. RomanianLeu: "Romanian Leu",
  6592. MalagasyAriary: "Malagasy Ariary",
  6593. MaldivianRufiyaa: "Maldivian Rufiyaa",
  6594. MalawiKwacha: "Malawi Kwacha",
  6595. MalaysianRinggit: "Malaysian Ringgit",
  6596. MacedoniawearingDinar: "Macedonia wearing Dinar",
  6597. MauritiusRupee: "Mauritius Rupee",
  6598. MauritanianOuguiya: "Mauritanian Ouguiya",
  6599. MongolianTugrik: "Mongolian Tugrik",
  6600. BangladeshiTaka: "Bangladeshi Taka",
  6601. PeruvianNuevoSol: "Peruvian Nuevo Sol",
  6602. MyanmarKyat: "Myanmar Kyat",
  6603. MoldovanLeu: "Moldovan Leu",
  6604. MoroccanDirham: "Moroccan Dirham",
  6605. MozambiqueMetical: "Mozambique Metical",
  6606. MexicanPeso: "Mexican Peso",
  6607. NamibianDollar: "Namibian Dollar",
  6608. SouthAfricanRand: "South African Rand",
  6609. SouthSudanesePound: "South Sudanese Pound",
  6610. NicaraguaCordoba: "Nicaragua Cordoba",
  6611. NepaleseRupee: "Nepalese Rupee",
  6612. NigerianNaira: "Nigerian Naira",
  6613. NorwegianKrone: "Norwegian Krone",
  6614. GeorgianLari: "Georgian Lari",
  6615. RMBOffshore: "RMB (Offshore)",
  6616. SwedishKrona: "Swedish Krona",
  6617. SwissFranc: "Swiss Franc",
  6618. SerbianDinar: "Serbian Dinar",
  6619. SierraLeone: "Sierra Leone",
  6620. SeychellesRupee: "Seychelles Rupee",
  6621. SaudiRiyal: "Saudi Riyal",
  6622. SaoTomeDobra: "Sao Tome Dobra",
  6623. SaintHelenapound: "Saint Helena pound",
  6624. SriLankaRupee: "Sri Lanka Rupee",
  6625. SwazilandLilangeni: "Swaziland Lilangeni",
  6626. SudanesePound: "Sudanese Pound",
  6627. Surinamesedollar: "Surinamese dollar",
  6628. SolomonIslandsDollar: "Solomon Islands Dollar",
  6629. SomaliShilling: "Somali Shilling",
  6630. TajikistanSomoni: "Tajikistan Somoni",
  6631. PacificFranc: "Pacific Franc",
  6632. ThaiBaht: "Thai Baht",
  6633. TanzanianShilling: "Tanzanian Shilling",
  6634. TonganPaanga: "Tongan Pa'anga",
  6635. TrinidadandTobagoDollar: "Trinidad and Tobago Dollar",
  6636. TunisianDinar: "Tunisian Dinar",
  6637. TurkishLira: "Turkish Lira",
  6638. VanuatuVatu: "Vanuatu Vatu",
  6639. GuatemalanQuetzal: "Guatemalan Quetzal",
  6640. CommissionBolivar: "Commission Bolivar",
  6641. BruneiDollar: "Brunei Dollar",
  6642. UgandanShilling: "Ugandan Shilling",
  6643. UkrainianHryvnia: "Ukrainian Hryvnia",
  6644. UruguayanPeso: "Uruguayan Peso",
  6645. Uzbekistansom: "Uzbekistan som",
  6646. WesternSamoaTala: "Western Samoa Tala",
  6647. SingaporeDollar: "Singapore Dollar",
  6648. NT: "NT",
  6649. NewZealandDollar: "New Zealand Dollar",
  6650. HungarianForint: "Hungarian Forint",
  6651. SyrianPound: "Syrian Pound",
  6652. JamaicanDollar: "Jamaican Dollar",
  6653. ArmenianDram: "Armenian Dram",
  6654. YemeniRial: "Yemeni Rial",
  6655. IraqiDinar: "Iraqi Dinar",
  6656. IranianRial: "Iranian Rial",
  6657. NewIsraeliShekel: "New Israeli Shekel",
  6658. IndianRupee: "Indian Rupee",
  6659. IndonesianRupiah: "Indonesian Rupiah",
  6660. JordanianDinar: "Jordanian Dinar",
  6661. VND: "VND",
  6662. ZambianKwacha: "Zambian Kwacha",
  6663. GibraltarPound: "Gibraltar Pound",
  6664. ChileanPeso: "Chilean Peso",
  6665. CFAFrancBEAC: "CFA Franc BEAC"
  6666. },
  6667. defaultFmt: [
  6668. {"text": "Automatic", "value": "General", "example": ""},
  6669. {"text": "Plain text", "value": "@", "example": ""},
  6670. {"text": "", "value": "split", "example": ""},
  6671. {"text": "Number", "value": "##0.00", "example": "1000.12"},
  6672. {"text": "Percent", "value": "#0.00%", "example": "12.21%"},
  6673. {"text": "Scientific", "value": "0.00E+00", "example": "1.01E+5"},
  6674. {"text": "", "value": "split", "example": ""},
  6675. {"text": "Accounting", "value": "\xA5(0.00)", "example": "\xA5(1200.09)"},
  6676. {"text": "Currency", "value": "\xA50.00", "example": "\xA51200.09"},
  6677. {"text": "", "value": "split", "example": ""},
  6678. {"text": "Date", "value": "yyyy-MM-dd", "example": "2017-11-29"},
  6679. {"text": "Time", "value": "hh:mm AM/PM", "example": "3:00 PM"},
  6680. {"text": "Time 24H", "value": "hh:mm", "example": "15:00"},
  6681. {"text": "Date time", "value": "yyyy-MM-dd hh:mm AM/PM", "example": "2017-11-29 3:00 PM"},
  6682. {"text": "Date time 24 H", "value": "yyyy-MM-dd hh:mm", "example": "2017-11-29 15:00"},
  6683. {"text": "", "value": "split", "example": ""},
  6684. {"text": "Custom formats", "value": "fmtOtherSelf", "example": "more"}
  6685. ],
  6686. dateFmtList: [
  6687. {
  6688. "name": "1930-08-05",
  6689. "value": "yyyy-MM-dd"
  6690. },
  6691. {
  6692. "name": "1930/8/5",
  6693. "value": "yyyy/MM/dd"
  6694. },
  6695. {
  6696. "name": "08-05",
  6697. "value": "MM-dd"
  6698. },
  6699. {
  6700. "name": "8-5",
  6701. "value": "M-d"
  6702. },
  6703. {
  6704. "name": "13:30:30",
  6705. "value": "h:mm:ss"
  6706. },
  6707. {
  6708. "name": "13:30",
  6709. "value": "h:mm"
  6710. },
  6711. {
  6712. "name": "PM 01:30",
  6713. "value": "AM/PM hh:mm"
  6714. },
  6715. {
  6716. "name": "PM 1:30",
  6717. "value": "AM/PM h:mm"
  6718. },
  6719. {
  6720. "name": "PM 1:30:30",
  6721. "value": "AM/PM h:mm:ss"
  6722. },
  6723. {
  6724. "name": "08-05 PM 01:30",
  6725. "value": "MM-dd AM/PM hh:mm"
  6726. }
  6727. ],
  6728. fontFamily: {
  6729. MicrosoftYaHei: "YaHei"
  6730. },
  6731. fontarray: ["Times New Roman", "Arial", "Tahoma", "Verdana"],
  6732. fontjson: {"times new roman": 0, "arial": 1, "tahoma": 2, "verdana": 3},
  6733. border: {
  6734. borderTop: "borderTop",
  6735. borderBottom: "borderBottom",
  6736. borderLeft: "borderLeft",
  6737. borderRight: "borderRight",
  6738. borderNone: "borderNone",
  6739. borderAll: "borderAll",
  6740. borderOutside: "borderOutside",
  6741. borderInside: "borderInside",
  6742. borderHorizontal: "borderHorizontal",
  6743. borderVertical: "borderVertical",
  6744. borderColor: "borderColor",
  6745. borderSize: "borderSize"
  6746. },
  6747. merge: {
  6748. mergeAll: "Merge all",
  6749. mergeV: "Vertically",
  6750. mergeH: "Horizontally",
  6751. mergeCancel: "Unmerge",
  6752. overlappingError: "Cannot merge overlapping areas",
  6753. partiallyError: "Cannot perform this operation on partially merged cells"
  6754. },
  6755. align: {
  6756. left: "left",
  6757. center: "center",
  6758. right: "right",
  6759. top: "Top",
  6760. middle: "Middle",
  6761. bottom: "Bottom"
  6762. },
  6763. textWrap: {
  6764. "overflow": "Overflow",
  6765. "wrap": "Wrap",
  6766. "clip": "Clip"
  6767. },
  6768. rotation: {
  6769. "none": "None",
  6770. "angleup": "Tilt Up",
  6771. "angledown": "Tilt Down",
  6772. "vertical": "Stack Vertically",
  6773. "rotationUp": "Rotate Up",
  6774. "rotationDown": "Rotate Down"
  6775. },
  6776. freezen: {
  6777. default: "Freeze",
  6778. freezenRow: "First Row",
  6779. freezenColumn: "First Column",
  6780. freezenRC: "Both",
  6781. freezenRowRange: "Freezen row range",
  6782. freezenColumnRange: "Freezen column range",
  6783. freezenRCRange: "Freezen both range",
  6784. freezenCancel: "Cancel",
  6785. noSeletionError: "No Range to be selected",
  6786. rangeRCOverErrorTitle: "Freeze reminder",
  6787. rangeRCOverError: "The frozen pane is beyond the visible range, which will lead to abnormal operation. Please reset the frozen area."
  6788. },
  6789. sort: {
  6790. "asc": "Ascending ",
  6791. "desc": "Descending ",
  6792. "custom": "Custom sort",
  6793. "hasTitle": "Data has a header row",
  6794. "sortBy": "Sort by",
  6795. "addOthers": "Add another sort column",
  6796. "close": "close",
  6797. "confirm": "sort",
  6798. "columnOperation": "Column",
  6799. "secondaryTitle": "then by",
  6800. "sortTitle": "Sort range",
  6801. "sortRangeTitle": "Sort range from",
  6802. "sortRangeTitleTo": "to",
  6803. "noRangeError": "Cannot perform this operation on multiple selection areas, please select a single range and try again",
  6804. "mergeError": "There are merged cells in the selection, this operation cannot be performed!",
  6805. "columnSortMergeError": "Column sorting will extend to the entire table selection. There are merged cells, this operation cannot be performed. Please use the sort feature in the toolbar."
  6806. },
  6807. filter: {
  6808. filter: "create filter",
  6809. sortByAsc: "Sort A-Z",
  6810. sortByDesc: "Sort Z-A",
  6811. filterByColor: "Filter by color",
  6812. filterByCondition: "Filter by condition",
  6813. filterByValues: "Filter by values",
  6814. filiterInputNone: "None",
  6815. filiterInputTip: "Enter filter value",
  6816. filiterRangeStart: "",
  6817. filiterRangeStartTip: "Value for formula",
  6818. filiterRangeEnd: "and",
  6819. filiterRangeEndTip: "Value for formula",
  6820. filterValueByAllBtn: "Check all",
  6821. filterValueByClearBtn: "Clear",
  6822. filterValueByInverseBtn: "Inverse",
  6823. filterValueByTip: "filter By Values",
  6824. filterConform: "Confirm",
  6825. filterCancel: "Cancel",
  6826. clearFilter: "Clear filter",
  6827. conditionNone: "None",
  6828. conditionCellIsNull: "Is empty",
  6829. conditionCellNotNull: "Is not empty",
  6830. conditionCellTextContain: "Text contains",
  6831. conditionCellTextNotContain: "Text does not contain",
  6832. conditionCellTextStart: "Text starts with",
  6833. conditionCellTextEnd: "Text ends with",
  6834. conditionCellTextEqual: "Text is exactly",
  6835. conditionCellDateEqual: "Date is",
  6836. conditionCellDateBefore: "Date is before",
  6837. conditionCellDateAfter: "Date is after",
  6838. conditionCellGreater: "Greater than",
  6839. conditionCellGreaterEqual: "Greater than or equal to",
  6840. conditionCellLess: "Less than",
  6841. conditionCellLessEqual: "Less than or equal to",
  6842. conditionCellEqual: "Is equal to",
  6843. conditionCellNotEqual: "Is not equal to",
  6844. conditionCellBetween: "Is between",
  6845. conditionCellNotBetween: "Is not between",
  6846. filiterMoreDataTip: "Big amount of data! please wait",
  6847. filiterMonthText: "Month",
  6848. filiterYearText: "Year",
  6849. filiterByColorTip: "Filter by cell color",
  6850. filiterByTextColorTip: "Filter by font color",
  6851. filterContainerOneColorTip: "This column contains only one color",
  6852. filterDateFormatTip: "Date format",
  6853. valueBlank: "(Null)",
  6854. mergeError: "There are merged cells in the filter selection, this operation cannot be performed!"
  6855. },
  6856. rightclick: {
  6857. copy: "Copy",
  6858. copyAs: "Copy as",
  6859. paste: "Paste",
  6860. insert: "Insert",
  6861. delete: "Delete",
  6862. deleteCell: "Delete cell",
  6863. deleteSelected: "Delete selected ",
  6864. hide: "Hide",
  6865. hideSelected: "Hide selected ",
  6866. showHide: "Show hidden ",
  6867. to: "Towards",
  6868. left: "Left",
  6869. right: "Right",
  6870. top: "Top",
  6871. bottom: "Bottom",
  6872. moveLeft: "Move left",
  6873. moveUp: "Move up",
  6874. add: "Add",
  6875. row: "Row",
  6876. column: "Column",
  6877. width: "Width",
  6878. height: "Height",
  6879. number: "Number",
  6880. confirm: "Confirm",
  6881. orderAZ: "A-Z order",
  6882. orderZA: "Z-A order",
  6883. clearContent: "Clear content",
  6884. matrix: "Matrix operation",
  6885. sortSelection: "Sort",
  6886. filterSelection: "Filter",
  6887. chartGeneration: "Create chart",
  6888. firstLineTitle: "first line title",
  6889. untitled: "untitled",
  6890. array1: "One-dimensional array",
  6891. array2: "Two-dimensional array",
  6892. array3: "Multidimensional Arrays",
  6893. diagonal: "Diagonal",
  6894. antiDiagonal: "Anti-diagonal",
  6895. diagonalOffset: "Diagonal offset",
  6896. offset: "Offset",
  6897. boolean: "Boolean",
  6898. flip: "Flip",
  6899. upAndDown: "Up and down",
  6900. leftAndRight: "Left and right",
  6901. clockwise: "Clockwise",
  6902. counterclockwise: "Counterclockwise",
  6903. transpose: "Transpose",
  6904. matrixCalculation: "Matrix calculation",
  6905. plus: "Plus",
  6906. minus: "Minus",
  6907. multiply: "Multiply",
  6908. divided: "Divided",
  6909. power: "Power",
  6910. root: "Root",
  6911. log: "Log",
  6912. delete0: "Delete 0 values at both ends",
  6913. removeDuplicate: "Remove duplicate values",
  6914. byRow: "By row",
  6915. byCol: "By column",
  6916. generateNewMatrix: "Generate new matrix"
  6917. },
  6918. comment: {
  6919. "insert": "Insert",
  6920. "edit": "Edit",
  6921. "delete": "Delete",
  6922. "showOne": "Show/Hide",
  6923. "showAll": "Show/Hide All"
  6924. },
  6925. screenshot: {
  6926. screenshotTipNoSelection: "Please select the scope of the screenshot",
  6927. screenshotTipTitle: "Warning\uFF01",
  6928. screenshotTipHasMerge: "This operation cannot be performed on merged cells",
  6929. screenshotTipHasMulti: "This operation cannot be performed on multiple selection regions",
  6930. screenshotTipSuccess: "Successful",
  6931. screenshotImageName: "Screenshot",
  6932. downLoadClose: "Close",
  6933. downLoadCopy: "Copy to clipboard",
  6934. downLoadBtn: "Download",
  6935. browserNotTip: "not supported by IE browser!",
  6936. rightclickTip: 'Please right-click "copy" on the picture',
  6937. successTip: 'Successfully (if pasting fails, please right-click on the image to "copy image")'
  6938. },
  6939. splitText: {
  6940. splitDelimiters: "Delimiters",
  6941. splitOther: "Other",
  6942. splitContinueSymbol: "Consecutive separators are treated as a single",
  6943. splitDataPreview: "Preview",
  6944. splitTextTitle: "Split text",
  6945. splitConfirmToExe: "There is already data here, do you want to replace it?",
  6946. tipNoMulti: "Cannot perform this operation on multiple selection areas, please select a single area and try again",
  6947. tipNoMultiColumn: "Only one column of data can be converted at a time. The selected area can have multiple rows but not multiple columns. Please try again after selecting a single column range"
  6948. },
  6949. imageText: {
  6950. imageSetting: "Image setting",
  6951. close: "Close",
  6952. conventional: "Conventional",
  6953. moveCell1: "Move and resize cells",
  6954. moveCell2: "Move and do not resize the cell",
  6955. moveCell3: "Do not move and resize the cell",
  6956. fixedPos: "Fixed position",
  6957. border: "Border",
  6958. width: "Width",
  6959. radius: "Radius",
  6960. style: "Style",
  6961. solid: "Solid",
  6962. dashed: "Dashed",
  6963. dotted: "Dotted",
  6964. double: "Double",
  6965. color: "Color"
  6966. },
  6967. punctuation: {
  6968. "tab": "Tab",
  6969. "semicolon": "semicolon",
  6970. "comma": "comma",
  6971. "space": "space"
  6972. },
  6973. findAndReplace: {
  6974. find: "Find",
  6975. replace: "Replace",
  6976. goto: "Go to",
  6977. location: "Location",
  6978. formula: "Formula",
  6979. date: "Date",
  6980. number: "Number",
  6981. string: "String",
  6982. error: "Error",
  6983. condition: "Condition",
  6984. rowSpan: "Row span",
  6985. columnSpan: "Column span",
  6986. locationExample: "Location",
  6987. lessTwoRowTip: "Please select at least two rows",
  6988. lessTwoColumnTip: "Please select at least two columns",
  6989. findTextbox: "Find Content",
  6990. replaceTextbox: "Replace Content",
  6991. regexTextbox: "Regular Expression",
  6992. wholeTextbox: "Whole word",
  6993. distinguishTextbox: "Case sensitive",
  6994. allReplaceBtn: "Replace All",
  6995. replaceBtn: "Replace",
  6996. allFindBtn: "Find All",
  6997. findBtn: "Find next",
  6998. noFindTip: "The content was not found",
  6999. modeTip: "This operation is not available in this mode",
  7000. searchTargetSheet: "Sheet",
  7001. searchTargetCell: "Cell",
  7002. searchTargetValue: "Value",
  7003. searchInputTip: "Please enter the search content",
  7004. noReplceTip: "There is nothing to replace",
  7005. noMatchTip: "No match found",
  7006. successTip: "${xlength} items found",
  7007. locationConstant: "Constant",
  7008. locationFormula: "Formula",
  7009. locationDate: "Date",
  7010. locationDigital: "Number",
  7011. locationString: "String",
  7012. locationBool: "Logical",
  7013. locationError: "Error",
  7014. locationNull: "Null",
  7015. locationCondition: "Conditional format",
  7016. locationRowSpan: "Row span",
  7017. locationColumnSpan: "Column span",
  7018. locationTiplessTwoRow: "Please select at least two rows",
  7019. locationTiplessTwoColumn: "Please select at least two columns",
  7020. locationTipNotFindCell: "Cell not found"
  7021. },
  7022. sheetconfig: {
  7023. delete: "Delete",
  7024. copy: "Copy",
  7025. rename: "Rename",
  7026. changeColor: "Change color",
  7027. hide: "Hide",
  7028. unhide: "Unhide",
  7029. moveLeft: "Move left",
  7030. moveRight: "Move right",
  7031. resetColor: "Reset color",
  7032. cancelText: "Cancel",
  7033. chooseText: "Confirm color",
  7034. tipNameRepeat: "The name of the tab page cannot be repeated! Please revise",
  7035. noMoreSheet: "The workbook contains at least one visual worksheet. To delete the selected worksheet, please insert a new worksheet or show a hidden worksheet.",
  7036. confirmDelete: "Are you sure to delete",
  7037. redoDelete: "Can be undo by Ctrl+Z",
  7038. noHide: "Can't hide, at least keep one sheet tag",
  7039. chartEditNoOpt: "This operation is not allowed in chart editing mode!",
  7040. sheetNameSpecCharError: `The name cannot contain:[ ] : ? * / ' "`,
  7041. sheetNamecannotIsEmptyError: "Sheet name cannot be empty"
  7042. },
  7043. conditionformat: {
  7044. conditionformat_greaterThan: "Conditionformat-GreaterThan",
  7045. conditionformat_greaterThan_title: "Format cells greater than",
  7046. conditionformat_lessThan: "Conditionformat-LessThan",
  7047. conditionformat_lessThan_title: "Format cells smaller than",
  7048. conditionformat_betweenness: "Conditionformat-Betweenness",
  7049. conditionformat_betweenness_title: "Format cells with values between",
  7050. conditionformat_equal: "Conditionformat-Equal",
  7051. conditionformat_equal_title: "Format cells equal to",
  7052. conditionformat_textContains: "Conditionformat-TextContains",
  7053. conditionformat_textContains_title: "Format cells containing the following text",
  7054. conditionformat_occurrenceDate: "Conditionformat-OccurrenceDate",
  7055. conditionformat_occurrenceDate_title: "Format cells containing the following dates",
  7056. conditionformat_duplicateValue: "Conditionformat-DuplicateValue",
  7057. conditionformat_duplicateValue_title: "Format cells containing the following types of values",
  7058. conditionformat_top10: "Conditionformat-Top10",
  7059. conditionformat_top10_percent: "Conditionformat-Top10%",
  7060. conditionformat_top10_title: "Format the cells with the highest value",
  7061. conditionformat_last10: "Conditionformat-Last10",
  7062. conditionformat_last10_percent: "Conditionformat-Last10%",
  7063. conditionformat_last10_title: "Format the cells with the smallest value",
  7064. conditionformat_AboveAverage: "Conditionformat-AboveAverage",
  7065. conditionformat_AboveAverage_title: "Format cells above average",
  7066. conditionformat_SubAverage: "Conditionformat-SubAverage",
  7067. conditionformat_SubAverage_title: "Format cells below average",
  7068. rule: "Rule",
  7069. newRule: "New rule",
  7070. editRule: "Edit rule",
  7071. deleteRule: "Delete rule",
  7072. deleteCellRule: "Delete cell rule",
  7073. deleteSheetRule: "Delete sheet rule",
  7074. manageRules: "Management rules",
  7075. showRules: "Show its formatting rules",
  7076. highlightCellRules: "Highlight cell rules",
  7077. itemSelectionRules: "Item selection rules",
  7078. conditionformatManageRules: "Conditional Formatting Rule Manager",
  7079. format: "Format",
  7080. setFormat: "Set format",
  7081. setAs: "Set as",
  7082. setAsByArea: "For the selected area, set to",
  7083. applyRange: "Apply range",
  7084. selectRange: "Select application range",
  7085. selectRange_percent: "Percentage of selected range",
  7086. selectRange_average: "Average value of selected range",
  7087. selectRange_value: "Value in the selected range",
  7088. pleaseSelectRange: "Please select application range",
  7089. selectDataRange: "Select data range",
  7090. selectCell: "select cell",
  7091. pleaseSelectCell: "Please select cell",
  7092. pleaseSelectADate: "Please select a date",
  7093. pleaseEnterInteger: "Please enter an integer between 1 and 1000",
  7094. onlySingleCell: "Only a single cell can be referenced",
  7095. conditionValueCanOnly: "The condition value can only be a number or a single cell",
  7096. ruleTypeItem1: "Format all cells based on their respective values",
  7097. ruleTypeItem2: "Only format cells that contain",
  7098. ruleTypeItem2_title: "Only for cells that meet the following conditions",
  7099. ruleTypeItem3: "Format only the top or bottom numbers",
  7100. ruleTypeItem3_title: "Is the value in the following ranking",
  7101. ruleTypeItem4: "Format only values above or below the average",
  7102. ruleTypeItem4_title: "Is a value that satisfies the following conditions",
  7103. ruleTypeItem5: "Format only unique or repeated values",
  7104. ruleTypeItem6: "Use formulas to determine which cells to format",
  7105. formula: "Formula",
  7106. textColor: "Text color",
  7107. cellColor: "Cell color",
  7108. confirm: "Confirm",
  7109. confirmColor: "Confirm color",
  7110. cancel: "Cancel",
  7111. close: "Close",
  7112. clearColorSelect: "Clear color select",
  7113. sheet: "Sheet",
  7114. currentSheet: "Current Sheet",
  7115. dataBar: "data bar",
  7116. dataBarColor: "data bar color",
  7117. gradientDataBar_1: "Blue-white gradient data bar",
  7118. gradientDataBar_2: "Green-white gradient data bar",
  7119. gradientDataBar_3: "Red-white gradient data bar",
  7120. gradientDataBar_4: "Orange-white gradient stripes",
  7121. gradientDataBar_5: "Light blue-white gradient stripes",
  7122. gradientDataBar_6: "Purple-white gradient data bar",
  7123. solidColorDataBar_1: "Blue data bar",
  7124. solidColorDataBar_2: "Green data bar",
  7125. solidColorDataBar_3: "Red data bar",
  7126. solidColorDataBar_4: "Orange data bar",
  7127. solidColorDataBar_5: "Light blue data bar",
  7128. solidColorDataBar_6: "Purple data bar",
  7129. colorGradation: "color gradation",
  7130. colorGradation_1: "Green-yellow-red color gradation",
  7131. colorGradation_2: "Red-yellow-green color gradation",
  7132. colorGradation_3: "Green-white-red color gradation",
  7133. colorGradation_4: "Red-white-green color gradation",
  7134. colorGradation_5: "Blue-white-red color gradation",
  7135. colorGradation_6: "Red-white-blue color gradation",
  7136. colorGradation_7: "White-red color gradation",
  7137. colorGradation_8: "Red-white color gradation",
  7138. colorGradation_9: "Green-white color gradation",
  7139. colorGradation_10: "White-green color gradation",
  7140. colorGradation_11: "Green-yellow color gradation",
  7141. colorGradation_12: "Yellow-green color gradation",
  7142. icons: "icons",
  7143. pleaseSelectIcon: "Please click to select a group of icons:",
  7144. cellValue: "Cell value",
  7145. specificText: "Specific text",
  7146. occurrence: "Date",
  7147. greaterThan: "Greater than",
  7148. lessThan: "Less than",
  7149. between: "Between",
  7150. equal: "Equal",
  7151. in: "In",
  7152. between2: "",
  7153. contain: "Contain",
  7154. textContains: "Text contains",
  7155. duplicateValue: "Duplicate value",
  7156. uniqueValue: "Unique value",
  7157. top: "Top",
  7158. top10: "Top 10",
  7159. top10_percent: "Top 10%",
  7160. last: "Last",
  7161. last10: "Last 10",
  7162. last10_percent: "Last 10%",
  7163. oneself: "",
  7164. above: "Above",
  7165. aboveAverage: "Above average",
  7166. below: "Below",
  7167. belowAverage: "Below average",
  7168. all: "All",
  7169. yesterday: "YTD",
  7170. today: "Today",
  7171. tomorrow: "Tomorrow",
  7172. lastWeek: "Last week",
  7173. thisWeek: "This week",
  7174. lastMonth: "Last month",
  7175. thisMonth: "This month",
  7176. lastYear: "Last year",
  7177. thisYear: "This year",
  7178. last7days: "Last 7 days",
  7179. last30days: "Last 30 days",
  7180. next7days: "Next 7 days",
  7181. next30days: "Next 30 days",
  7182. next60days: "Next 60 days",
  7183. chooseRuleType: "Choose rule type",
  7184. editRuleDescription: "Edit rule description",
  7185. newFormatRule: "New format rule",
  7186. editFormatRule: "Edit format rule",
  7187. formatStyle: "Style",
  7188. fillType: "Fill",
  7189. color: "Color",
  7190. twocolor: "Two-color",
  7191. tricolor: "Tricolor",
  7192. multicolor: "Multi color",
  7193. grayColor: "Gray color",
  7194. gradient: "Gradient",
  7195. solid: "Solid",
  7196. maxValue: "Max value",
  7197. medianValue: "Median value",
  7198. minValue: "Min value",
  7199. direction: "Direction",
  7200. threeWayArrow: "Three-way arrow",
  7201. fourWayArrow: "Four-way arrow",
  7202. fiveWayArrow: "Five-way arrow",
  7203. threeTriangles: "Three triangles",
  7204. shape: "Shape",
  7205. threeColorTrafficLight: "Three-color traffic light",
  7206. fourColorTrafficLight: "Four-color traffic light",
  7207. threeSigns: "Three signs",
  7208. greenRedBlackGradient: "Green-red-black gradient",
  7209. rimless: "Rimless",
  7210. bordered: "Bordered",
  7211. mark: "Mark",
  7212. threeSymbols: "Three symbols",
  7213. tricolorFlag: "Tricolor flag",
  7214. circled: "Circled",
  7215. noCircle: "No circle",
  7216. grade: "Grade",
  7217. grade4: "4 Grade",
  7218. grade5: "5 Grade",
  7219. threeStars: "3 Stars",
  7220. fiveQuadrantDiagram: "Five-quadrant diagram",
  7221. fiveBoxes: "5 Boxes"
  7222. },
  7223. insertLink: {
  7224. linkText: "Text",
  7225. linkType: "Link type",
  7226. external: "External link",
  7227. internal: "Internal link",
  7228. linkAddress: "Link address",
  7229. linkSheet: "Worksheet",
  7230. linkCell: "Cell reference",
  7231. linkTooltip: "Tooltip",
  7232. placeholder1: "Please enter the web link address",
  7233. placeholder2: "Please enter the cell to be quoted, example A1",
  7234. placeholder3: "Please enter the prompt content",
  7235. tooltipInfo1: "Please enter a valid link",
  7236. tooltipInfo2: "Please enter the correct cell reference"
  7237. },
  7238. dataVerification: {
  7239. cellRange: "Cell range",
  7240. selectCellRange: "Click to select a cell range",
  7241. selectCellRange2: "Please select a range of cells",
  7242. verificationCondition: "Verification condition",
  7243. allowMultiSelect: "Allow multiple selection",
  7244. dropdown: "drop-down list",
  7245. checkbox: "Checkbox",
  7246. number: "Number",
  7247. number_integer: "Number-integer",
  7248. number_decimal: "Number-decimal",
  7249. text_content: "Text-content",
  7250. text_length: "Text-length",
  7251. date: "Date",
  7252. validity: "Effectiveness",
  7253. placeholder1: "Please enter the options, separated by commas, such as 1,2,3,4,5",
  7254. placeholder2: "Please enter content",
  7255. placeholder3: "Numeric value, such as 10",
  7256. placeholder4: "Please enter the specified text",
  7257. placeholder5: "Please enter the prompt displayed when the cell is selected",
  7258. selected: "Selected",
  7259. notSelected: "Not selected",
  7260. between: "Between",
  7261. notBetween: "Not between",
  7262. equal: "Equal",
  7263. notEqualTo: "Not equal to",
  7264. moreThanThe: "More than the",
  7265. lessThan: "Less than",
  7266. greaterOrEqualTo: "Greater or equal to",
  7267. lessThanOrEqualTo: "Less than or equal to",
  7268. include: "Include",
  7269. exclude: "Exclude",
  7270. earlierThan: "Earlier than",
  7271. noEarlierThan: "No earlier than",
  7272. laterThan: "Later than",
  7273. noLaterThan: "No later than",
  7274. identificationNumber: "Identification number",
  7275. phoneNumber: "Phone number",
  7276. remote: "Automatic remote acquisition option",
  7277. prohibitInput: "Prohibit input when input data is invalid",
  7278. hintShow: "Show prompt when the cell is selected",
  7279. deleteVerification: "Delete verification",
  7280. tooltipInfo1: "The drop-down list option cannot be empty",
  7281. tooltipInfo2: "Checkbox content cannot be empty",
  7282. tooltipInfo3: "The value entered is not a numeric type",
  7283. tooltipInfo4: "The value 2 cannot be less than the value 1",
  7284. tooltipInfo5: "The text content cannot be empty",
  7285. tooltipInfo6: "The value entered is not a date type",
  7286. tooltipInfo7: "Date 2 cannot be less than date 1",
  7287. textlengthInteger: "Text length must be an integer greater than or equal to 0"
  7288. },
  7289. formula: {
  7290. sum: "Sum",
  7291. average: "Average",
  7292. count: "Count",
  7293. max: "Max",
  7294. min: "Min",
  7295. ifGenerate: "If formula generator",
  7296. find: "Learn more",
  7297. tipNotBelongToIf: "This cell function does not belong to the if formula!",
  7298. tipSelectCell: "Please select the cell to insert the function",
  7299. ifGenCompareValueTitle: "Comparison value",
  7300. ifGenSelectCellTitle: "Click to select cell",
  7301. ifGenRangeTitle: "Range",
  7302. ifGenRangeTo: "to",
  7303. ifGenRangeEvaluate: "Range evaluate",
  7304. ifGenSelectRangeTitle: "Click to select range",
  7305. ifGenCutWay: "Partition way",
  7306. ifGenCutSame: "Same Partition value",
  7307. ifGenCutNpiece: "Partition by N",
  7308. ifGenCutCustom: "Custom",
  7309. ifGenCutConfirm: "Confirm",
  7310. ifGenTipSelectCell: "Select cells",
  7311. ifGenTipSelectCellPlace: "Please select cells",
  7312. ifGenTipSelectRange: "Select range",
  7313. ifGenTipSelectRangePlace: "Please select range",
  7314. ifGenTipNotNullValue: "The comparison value cannot be empty!",
  7315. ifGenTipLableTitile: "Label",
  7316. ifGenTipRangeNotforNull: "The range cannot be empty!",
  7317. ifGenTipCutValueNotforNull: "The partition value cannot be empty!",
  7318. ifGenTipNotGenCondition: "No conditions are available for generation!"
  7319. },
  7320. formulaMore: {
  7321. valueTitle: "Value",
  7322. tipSelectDataRange: "Select data range",
  7323. tipDataRangeTile: "Data range",
  7324. findFunctionTitle: "Search function",
  7325. tipInputFunctionName: "Function name or brief description of function",
  7326. "Array": "Array",
  7327. "Database": "Database",
  7328. "Date": "Date",
  7329. "Engineering": "Engineering",
  7330. "Filter": "Filter",
  7331. "Financial": "Financial",
  7332. "luckysheet": "Luckysheet",
  7333. "other": "Other",
  7334. "Logical": "Logical",
  7335. "Lookup": "Lookup",
  7336. "Math": "Math",
  7337. "Operator": "Operator",
  7338. "Parser": "Parser",
  7339. "Statistical": "Statistical",
  7340. "Text": "Text",
  7341. "dataMining": "Data Mining",
  7342. "selectFunctionTitle": "Select a function",
  7343. "calculationResult": "Result",
  7344. tipSuccessText: "Success",
  7345. tipParamErrorText: "Parameter type error",
  7346. "helpClose": "Close",
  7347. "helpCollapse": "Collapse",
  7348. "helpExample": "Example",
  7349. "helpAbstract": "Abstract",
  7350. "execfunctionError": "Error in the formula",
  7351. "execfunctionSelfError": "The formula cannot refer to its own cell",
  7352. "execfunctionSelfErrorResult": "The formula cannot refer to its own cell, which will lead to inaccurate calculation results",
  7353. "allowRepeatText": "Repeat",
  7354. "allowOptionText": "Option",
  7355. "selectCategory": "Or select a category"
  7356. },
  7357. drag: {
  7358. noMerge: "Cannot perform this operation on merged cells",
  7359. affectPivot: "This change cannot be made to the selected cell because it will affect the pivot table!",
  7360. noMulti: "Cannot perform this operation on multiple selection areas, please select a single area",
  7361. noPaste: "Unable to paste this content here, please select a cell in the paste area and try to paste again",
  7362. noPartMerge: "Cannot perform this operation on partially merged cells",
  7363. inputCorrect: "Please enter the correct value",
  7364. notLessOne: "The number of rows and columns cannot be less than 1",
  7365. offsetColumnLessZero: "The offset column cannot be negative!",
  7366. pasteMustKeybordAlert: "Copy and paste in the Sheet: Ctrl + C to copy, Ctrl + V to paste, Ctrl + X to cut",
  7367. pasteMustKeybordAlertHTMLTitle: "Copy and paste in the Sheet",
  7368. pasteMustKeybordAlertHTML: "<span style='line-height: 1.0;font-size:36px;font-weight: bold;color:#666;'>Ctrl + C</span>&nbsp;&nbsp;to copy<br/><span style='line-height: 1.0;font-size:36px;font-weight: bold;color:#666;'>Ctrl + V</span>&nbsp;&nbsp;to paste<br/><span style='line-height: 1.0;font-size:36px;font-weight: bold;color:#666;'>Ctrl + X</span>&nbsp;&nbsp;to cut"
  7369. },
  7370. paste: {
  7371. warning: "Warning",
  7372. errorNotAllowMulti: "Cannot perform this operation on multiple selection areas, please select a single range and try again",
  7373. errorNotAllowMerged: "Cannot make partial changes to merged cells"
  7374. },
  7375. pivotTable: {
  7376. title: "Pivot Table",
  7377. closePannel: "Close",
  7378. editRange: "Range",
  7379. tipPivotFieldSelected: "Select the fields",
  7380. tipClearSelectedField: "Clear all fields",
  7381. btnClearSelectedField: "Clear",
  7382. btnFilter: "Filter",
  7383. titleRow: "Row",
  7384. titleColumn: "Column",
  7385. titleValue: "Value",
  7386. tipShowColumn: "Statistics fields are displayed as columns",
  7387. tipShowRow: "Statistics fields are displayed as rows",
  7388. titleSelectionDataRange: "Select range",
  7389. titleDataRange: "Data range",
  7390. valueSum: "SUM",
  7391. valueStatisticsSUM: "Sum",
  7392. valueStatisticsCOUNT: "Count",
  7393. valueStatisticsCOUNTA: "Count A",
  7394. valueStatisticsCOUNTUNIQUE: "Count Unique",
  7395. valueStatisticsAVERAGE: "Average",
  7396. valueStatisticsMAX: "Max",
  7397. valueStatisticsMIN: "Min",
  7398. valueStatisticsMEDIAN: "Median",
  7399. valueStatisticsPRODUCT: "Product",
  7400. valueStatisticsSTDEV: "Stdev",
  7401. valueStatisticsSTDEVP: "Stdevp",
  7402. valueStatisticslet: "Var",
  7403. valueStatisticsVARP: "VarP",
  7404. errorNotAllowEdit: "This operation is prohibited in non-editing mode!",
  7405. errorNotAllowMulti: "Cannot perform this operation on multiple selection areas, please select a single range and try again",
  7406. errorSelectRange: "Please select the range of the new pivot table",
  7407. errorIsDamage: "The source data of this pivot table is corrupted!",
  7408. errorNotAllowPivotData: "Cannot select pivot table as source data!",
  7409. errorSelectionRange: "Selection failed, wrong input range!",
  7410. errorIncreaseRange: "Please expand the selected range!",
  7411. titleAddColumn: "Add column to pivot table",
  7412. titleMoveColumn: "Move the column to the white box below",
  7413. titleClearColumnFilter: "Clear the filter for this column",
  7414. titleFilterColumn: "Filter",
  7415. titleSort: "Sort",
  7416. titleNoSort: "No sort",
  7417. titleSortAsc: "ASC",
  7418. titleSortDesc: "DESC",
  7419. titleSortBy: "Sort by",
  7420. titleShowSum: "Show total",
  7421. titleStasticTrue: "Yes",
  7422. titleStasticFalse: "No"
  7423. },
  7424. dropCell: {
  7425. copyCell: "Copy",
  7426. sequence: "Sequence",
  7427. onlyFormat: "Only format",
  7428. noFormat: "Not format",
  7429. day: "Day",
  7430. workDay: "Work Day",
  7431. month: "Month",
  7432. year: "Year",
  7433. chineseNumber: "Chinese numbers"
  7434. },
  7435. imageCtrl: {
  7436. borderTile: "Image border color",
  7437. borderCur: "Color"
  7438. },
  7439. protection: {
  7440. protectiontTitle: "Protection",
  7441. enterPassword: "Enter a password (optional)",
  7442. enterHintTitle: "Prompt when editing is prohibited (optional)",
  7443. enterHint: "The cell or chart you are trying to change is in a protected worksheet. If you want to change it, please unprotect the worksheet. You may need to enter a password",
  7444. swichProtectionTip: "Protect the sheet and contents of locked cells",
  7445. authorityTitle: "Allow users of this sheet to:",
  7446. selectLockedCells: "Select locked cells",
  7447. selectunLockedCells: "Select unlocked cells",
  7448. formatCells: "Format cells",
  7449. formatColumns: "Format columns",
  7450. formatRows: "Format rows",
  7451. insertColumns: "Insert columns",
  7452. insertRows: "Insert rows",
  7453. insertHyperlinks: "Insert hyperlinks",
  7454. deleteColumns: "Delete columns",
  7455. deleteRows: "Delete rows",
  7456. sort: "Sort",
  7457. filter: "Filter",
  7458. usePivotTablereports: "Use Pivot Table reports",
  7459. editObjects: "Edit objects",
  7460. editScenarios: "Edit scenarios",
  7461. allowRangeTitle: "Allow users of range to:",
  7462. allowRangeAdd: "New...",
  7463. allowRangeAddTitle: "Title",
  7464. allowRangeAddSqrf: "Reference",
  7465. selectCellRange: "Click to select a cell range",
  7466. selectCellRangeHolder: "Cell range",
  7467. allowRangeAddTitlePassword: "Password",
  7468. allowRangeAddTitleHint: "Prompt",
  7469. allowRangeAddTitleHintTitle: "Prompt when a password is set (optional)",
  7470. allowRangeAddtitleDefault: "Input range name",
  7471. rangeItemDblclick: "Double click to edit",
  7472. rangeItemHasPassword: "Has password",
  7473. rangeItemErrorTitleNull: "Title is null",
  7474. rangeItemErrorRangeNull: "Reference is null",
  7475. rangeItemErrorRange: "Reference is error",
  7476. validationTitle: "Password validation",
  7477. validationTips: "Need to enter a password to unlock the protection of the worksheet",
  7478. validationInputHint: "Enter a password",
  7479. checkPasswordNullalert: "Password is required!",
  7480. checkPasswordWrongalert: "Incorrect password, please try again!",
  7481. checkPasswordSucceedalert: "Unlock Succeed!",
  7482. defaultRangeHintText: "The cell is being password protected.",
  7483. defaultSheetHintText: "The cell or chart is in a protected worksheet. To make changes, please unprotect the worksheet. You may need to enter a password"
  7484. },
  7485. cellFormat: {
  7486. cellFormatTitle: "Format cells",
  7487. protection: "Protection",
  7488. locked: "Locked",
  7489. hidden: "Hidden",
  7490. protectionTips: "To lock cells or hide formulas, protect the worksheet. On the toolbar, Click Protect Sheet Button",
  7491. tipsPart: "Partial checked",
  7492. tipsAll: "All checked",
  7493. selectionIsNullAlert: "Selection is required!",
  7494. sheetDataIsNullAlert: "error, Data is none!"
  7495. },
  7496. print: {
  7497. normalBtn: "Normal",
  7498. layoutBtn: "Page Layout",
  7499. pageBtn: "Page\u2002break\u2002preview",
  7500. menuItemPrint: "Print (Ctrl+P)",
  7501. menuItemAreas: "Print areas",
  7502. menuItemRows: "Print title rows",
  7503. menuItemColumns: "Print title columns"
  7504. },
  7505. edit: {
  7506. typing: "typing"
  7507. },
  7508. websocket: {
  7509. success: "WebSocket connection success",
  7510. refresh: "An error occurred in the WebSocket connection, please refresh the page!",
  7511. wait: "An error occurred in the WebSocket connection, please be patient!",
  7512. close: "WebSocket connection closed",
  7513. contact: "Server communication error occurred, please refresh the page and try again, if not, please contact the administrator!",
  7514. support: "The current browser does not support WebSocket"
  7515. }
  7516. };
  7517. }
  7518. });
  7519. // src/locale/zh.js
  7520. var zh_default;
  7521. var init_zh = __esm({
  7522. "src/locale/zh.js"() {
  7523. zh_default = {
  7524. functionlist: {
  7525. "SUMIF": {
  7526. "d": "\u5BF9\u8303\u56F4\u4E2D\u7B26\u5408\u6307\u5B9A\u6761\u4EF6\u7684\u503C\u6C42\u548C\u3002",
  7527. "a": "\u5BF9\u8303\u56F4\u4E2D\u7B26\u5408\u6307\u5B9A\u6761\u4EF6\u7684\u503C\u6C42\u548C\u3002",
  7528. "p": [
  7529. {
  7530. "name": "\u8303\u56F4",
  7531. "detail": "\u8981\u6839\u636E\u6761\u4EF6\u8FDB\u884C\u68C0\u6D4B\u7684\u8303\u56F4\u3002"
  7532. },
  7533. {
  7534. "name": "\u6761\u4EF6",
  7535. "detail": "\u8981\u5E94\u7528\u4E8E\u8303\u56F4\u7684\u6A21\u5F0F\u6216\u6D4B\u8BD5\u6761\u4EF6\u3002\n\n\u5982\u679C\u8303\u56F4\u5305\u542B\u7684\u662F\u8981\u68C0\u6D4B\u7684\u6587\u672C\uFF0C\u5219\u6761\u4EF6\u5FC5\u987B\u4E3A\u5B57\u7B26\u4E32\u3002\u6761\u4EF6\u53EF\u4EE5\u5305\u542B\u901A\u914D\u7B26\uFF0C\u5305\u62EC\u7528\u4E8E\u5339\u914D\u5355\u4E2A\u5B57\u7B26\u7684?\u6216\u7528\u4E8E\u5339\u914D\u96F6\u4E2A\u6216\u8FDE\u7EED\u591A\u4E2A\u5B57\u7B26\u7684*\u3002\u8981\u5339\u914D\u95EE\u53F7\u661F\u53F7\u672C\u8EAB\uFF0C\u8BF7\u5728\u8BE5\u5B57\u7B26\u524D\u9762\u52A0\u4E0A\u6CE2\u6D6A\u53F7(~)\u524D\u7F00\uFF08\u5373~?\u548C~*\uFF09\u3002\u5B57\u7B26\u4E32\u6761\u4EF6\u5FC5\u987B\u7528\u5F15\u53F7\u62EC\u8D77\u6765\u3002\u51FD\u6570\u4F1A\u68C0\u67E5\u8303\u56F4\u4E2D\u7684\u6BCF\u4E2A\u5355\u5143\u683C\u4E0E\u6761\u4EF6\u662F\u5426\u76F8\u7B49\u6216\u5339\u914D\uFF08\u5982\u679C\u4F7F\u7528\u4E86\u901A\u914D\u7B26\uFF09\u3002\n\n\u5982\u679C\u8303\u56F4\u5305\u542B\u7684\u662F\u8981\u68C0\u6D4B\u7684\u6570\u5B57\uFF0C\u5219\u6761\u4EF6\u53EF\u4EE5\u662F\u5B57\u7B26\u4E32\u4E5F\u53EF\u4EE5\u662F\u6570\u5B57\u3002\u5982\u679C\u7ED9\u5B9A\u7684\u6761\u4EF6\u662F\u4E00\u4E2A\u6570\u5B57\uFF0C\u5219\u68C0\u67E5\u8303\u56F4\u4E2D\u7684\u6BCF\u4E2A\u5355\u5143\u683C\u662F\u5426\u7B49\u4E8E\u6761\u4EF6\u3002\u53E6\u5916\uFF0C\u6761\u4EF6\u4E5F\u53EF\u80FD\u662F\u5305\u542B\u6570\u5B57\u7684\u5B57\u7B26\u4E32\uFF08\u4E5F\u5C06\u5BF9\u5176\u8FDB\u884C\u76F8\u7B49\u68C0\u6D4B\uFF09\uFF0C\u6216\u8005\u5E26\u6709\u4EE5\u4E0B\u524D\u7F00\u7684\u6570\u5B57\uFF1A=\uFF08\u68C0\u67E5\u662F\u5426\u76F8\u7B49\uFF09\u3001>\uFF08\u68C0\u67E5\u8303\u56F4\u5355\u5143\u683C\u7684\u503C\u662F\u5426\u5927\u4E8E\u6761\u4EF6\u503C\uFF09\u6216<\uFF08\u68C0\u67E5\u8303\u56F4\u5355\u5143\u683C\u7684\u503C\u662F\u5426\u5C0F\u4E8E\u6761\u4EF6\u503C\uFF09"
  7536. },
  7537. {
  7538. "name": "\u6C42\u548C\u8303\u56F4",
  7539. "detail": "\u8981\u6C42\u548C\u7684\u8303\u56F4\uFF08\u5982\u679C\u4E0E\u8303\u56F4\u4E0D\u540C\uFF09\u3002"
  7540. }
  7541. ]
  7542. },
  7543. "TAN": {
  7544. "d": "\u8FD4\u56DE\u5DF2\u77E5\u89D2\u5EA6\u7684\u6B63\u5207\u503C\u3002",
  7545. "a": "\u8FD4\u56DE\u5DF2\u77E5\u89D2\u5EA6\u7684\u6B63\u5207\u503C\u3002",
  7546. "p": [
  7547. {
  7548. "name": "\u89D2\u5EA6",
  7549. "detail": "\u8981\u6C42\u5176\u6B63\u5207\u503C\u7684\u89D2\u5EA6\uFF0C\u4EE5\u5F27\u5EA6\u8868\u793A\u3002"
  7550. }
  7551. ]
  7552. },
  7553. "TANH": {
  7554. "d": "\u8FD4\u56DE\u7ED9\u5B9A\u5B9E\u6570\u7684\u53CC\u66F2\u6B63\u5207\u503C\u3002",
  7555. "a": "\u8FD4\u56DE\u7ED9\u5B9A\u5B9E\u6570\u7684\u53CC\u66F2\u6B63\u5207\u503C\u3002",
  7556. "p": [
  7557. {
  7558. "name": "\u503C",
  7559. "detail": "\u8981\u8BA1\u7B97\u5176\u53CC\u66F2\u6B63\u5207\u503C\u7684\u5B9E\u6570\u3002"
  7560. }
  7561. ]
  7562. },
  7563. "CEILING": {
  7564. "d": "\u5C06\u6570\u503C\u5411\u4E0A\u53D6\u6574\u4E3A\u6700\u63A5\u8FD1\u7684\u6307\u5B9A\u56E0\u6570\u7684\u500D\u6570\u3002",
  7565. "a": "\u5C06\u6570\u503C\u5411\u4E0A\u53D6\u6574\u4E3A\u6700\u63A5\u8FD1\u7684\u6307\u5B9A\u56E0\u6570\u7684\u500D\u6570\u3002",
  7566. "p": [
  7567. {
  7568. "name": "\u503C",
  7569. "detail": "\u8981\u5411\u4E0A\u820D\u5165\u7684\u6570\u503C\u3002"
  7570. },
  7571. {
  7572. "name": "\u56E0\u6570",
  7573. "detail": "\u8981\u5C06\u503C\u820D\u5165\u5230\u6B64\u6570\u7684\u6574\u6570\u500D\u3002"
  7574. }
  7575. ]
  7576. },
  7577. "ATAN": {
  7578. "d": "\u8FD4\u56DE\u6570\u503C\u7684\u53CD\u6B63\u5207\u503C\uFF0C\u4EE5\u5F27\u5EA6\u8868\u793A\u3002",
  7579. "a": "\u8FD4\u56DE\u6570\u503C\u7684\u53CD\u6B63\u5207\u503C",
  7580. "p": [
  7581. {
  7582. "name": "\u503C",
  7583. "detail": "\u8981\u8BA1\u7B97\u5176\u53CD\u6B63\u5207\u503C\u7684\u6570\u503C\u3002"
  7584. }
  7585. ]
  7586. },
  7587. "ASINH": {
  7588. "d": "\u8FD4\u56DE\u6570\u503C\u7684\u53CD\u53CC\u66F2\u6B63\u5F26\u503C\u3002",
  7589. "a": "\u8FD4\u56DE\u6570\u503C\u7684\u53CD\u53CC\u66F2\u6B63\u5F26\u503C\u3002",
  7590. "p": [
  7591. {
  7592. "name": "\u503C",
  7593. "detail": "\u8981\u8BA1\u7B97\u5176\u53CD\u53CC\u66F2\u6B63\u5F26\u503C\u7684\u6570\u503C\u3002"
  7594. }
  7595. ]
  7596. },
  7597. "ABS": {
  7598. "d": "\u8FD4\u56DE\u6570\u503C\u7684\u7EDD\u5BF9\u503C\u3002",
  7599. "a": "\u8FD4\u56DE\u6570\u503C\u7684\u7EDD\u5BF9\u503C\u3002",
  7600. "p": [
  7601. {
  7602. "name": "value",
  7603. "detail": "\u8981\u8FD4\u56DE\u5176\u7EDD\u5BF9\u503C\u7684\u6570\u3002"
  7604. }
  7605. ]
  7606. },
  7607. "ACOS": {
  7608. "d": "\u8FD4\u56DE\u6570\u503C\u7684\u53CD\u4F59\u5F26\u503C\uFF0C\u4EE5\u5F27\u5EA6\u8868\u793A\u3002",
  7609. "a": "\u8FD4\u56DE\u6570\u503C\u7684\u53CD\u4F59\u5F26\u503C",
  7610. "p": [
  7611. {
  7612. "name": "\u503C",
  7613. "detail": "\u8981\u8BA1\u7B97\u5176\u53CD\u4F59\u5F26\u503C\u7684\u6570\u503C\u3002\u5FC5\u987B\u4ECB\u4E8E-1\u548C1\u4E4B\u95F4\uFF0C\u5305\u62EC\u4E24\u7AEF\u503C\u3002"
  7614. }
  7615. ]
  7616. },
  7617. "ACOSH": {
  7618. "d": "\u8FD4\u56DE\u6570\u503C\u7684\u53CD\u53CC\u66F2\u4F59\u5F26\u503C\u3002",
  7619. "a": "\u8FD4\u56DE\u6570\u503C\u7684\u53CD\u53CC\u66F2\u4F59\u5F26\u503C\u3002",
  7620. "p": [
  7621. {
  7622. "name": "\u503C",
  7623. "detail": "\u8981\u8BA1\u7B97\u5176\u53CD\u53CC\u66F2\u4F59\u5F26\u503C\u7684\u6570\u503C\u3002\u5FC5\u987B\u5927\u4E8E\u7B49\u4E8E1\u3002"
  7624. }
  7625. ]
  7626. },
  7627. "MULTINOMIAL": {
  7628. "d": "\u8FD4\u56DE\u53C2\u6570\u548C\u7684\u9636\u4E58\u9664\u4EE5\u5404\u53C2\u6570\u9636\u4E58\u7684\u4E58\u79EF\u540E\u5F97\u5230\u7684\u503C\u3002",
  7629. "a": "\u8FD4\u56DE\u53C2\u6570\u548C\u7684\u9636\u4E58\u9664\u4EE5\u5404\u53C2\u6570\u9636\u4E58\u7684\u4E58\u79EF\u540E\u5F97\u5230\u7684\u503C\u3002",
  7630. "p": [
  7631. {
  7632. "name": "\u503C1",
  7633. "detail": "\u7528\u4E8E\u8BA1\u7B97\u7684\u7B2C\u4E00\u9879\u6570\u503C\u6216\u8303\u56F4\u3002"
  7634. },
  7635. {
  7636. "name": "\u503C2",
  7637. "detail": "\u7528\u4E8E\u8BA1\u7B97\u7684\u5176\u4ED6\u6570\u503C\u6216\u8303\u56F4\u3002"
  7638. }
  7639. ]
  7640. },
  7641. "ATANH": {
  7642. "d": "\u8FD4\u56DE\u6570\u503C\u7684\u53CD\u53CC\u66F2\u6B63\u5207\u503C\u3002",
  7643. "a": "\u8FD4\u56DE\u6570\u503C\u7684\u53CD\u53CC\u66F2\u6B63\u5207\u503C\u3002",
  7644. "p": [
  7645. {
  7646. "name": "\u503C",
  7647. "detail": "\u8981\u8BA1\u7B97\u5176\u53CD\u53CC\u66F2\u6B63\u5207\u503C\u7684\u6570\u503C\u3002\u5FC5\u987B\u4ECB\u4E8E-1\u548C1\u4E4B\u95F4\uFF08\u4E0D\u5305\u62EC-1\u548C1\uFF09\u3002"
  7648. }
  7649. ]
  7650. },
  7651. "ATAN2": {
  7652. "d": "\u4EE5\u5F27\u5EA6\u4E3A\u5355\u4F4D\u8FD4\u56DE x \u8F74\u4E0E\u4ECE\u539F\u70B9 (0,0) \u5230\u6307\u5B9A\u5750\u6807\u70B9 (`x`,`y`) \u4E4B\u95F4\u8FDE\u7EBF\u7684\u5939\u89D2\u3002",
  7653. "a": "\u4EE5\u5F27\u5EA6\u4E3A\u5355\u4F4D\u8FD4\u56DE x \u8F74\u4E0E\u4ECE\u539F\u70B9 (0,0) \u5230\u6307\u5B9A\u5750\u6807\u70B9 (`x`,`y`) \u4E4B\u95F4\u8FDE\u7EBF\u7684\u5939\u89D2\u3002",
  7654. "p": [
  7655. {
  7656. "name": "x",
  7657. "detail": "\u8981\u8BA1\u7B97\u5176\u4E0Ex\u8F74\u5939\u89D2\u5927\u5C0F\u7684\u7EBF\u6BB5\u7684\u7EC8\u70B9x\u5750\u6807\u3002"
  7658. },
  7659. {
  7660. "name": "y",
  7661. "detail": "\u8981\u8BA1\u7B97\u5176\u4E0Ex\u8F74\u5939\u89D2\u5927\u5C0F\u7684\u7EBF\u6BB5\u7684\u7EC8\u70B9y\u5750\u6807\u3002"
  7662. }
  7663. ]
  7664. },
  7665. "COUNTBLANK": {
  7666. "d": "\u8FD4\u56DE\u7ED9\u5B9A\u8303\u56F4\u5185\u7684\u7A7A\u5355\u5143\u683C\u6570\u3002",
  7667. "a": "\u8FD4\u56DE\u7ED9\u5B9A\u8303\u56F4\u5185\u7684\u7A7A\u5355\u5143\u683C\u6570\u3002",
  7668. "p": [
  7669. {
  7670. "name": "\u8303\u56F4",
  7671. "detail": "\u8981\u7EDF\u8BA1\u7A7A\u767D\u5355\u5143\u683C\u6570\u91CF\u7684\u8303\u56F4\u3002"
  7672. }
  7673. ]
  7674. },
  7675. "COSH": {
  7676. "d": "\u8FD4\u56DE\u7ED9\u5B9A\u5B9E\u6570\u7684\u53CC\u66F2\u4F59\u5F26\u503C\u3002",
  7677. "a": "\u8FD4\u56DE\u7ED9\u5B9A\u5B9E\u6570\u7684\u53CC\u66F2\u4F59\u5F26\u503C\u3002",
  7678. "p": [
  7679. {
  7680. "name": "\u503C",
  7681. "detail": "\u8981\u8BA1\u7B97\u5176\u53CC\u66F2\u4F59\u5F26\u503C\u7684\u5B9E\u6570\u503C\u3002"
  7682. }
  7683. ]
  7684. },
  7685. "INT": {
  7686. "d": "\u5C06\u6570\u503C\u5411\u4E0B\u53D6\u6574\u4E3A\u5C0F\u4E8E\u6216\u7B49\u4E8E\u8BE5\u6570\u7684\u6700\u63A5\u8FD1\u7684\u6574\u6570\u3002",
  7687. "a": "\u5C06\u6570\u503C\u5411\u4E0B\u53D6\u6574\u4E3A\u5C0F\u4E8E\u6216\u7B49\u4E8E\u8BE5\u6570\u7684\u6700\u63A5\u8FD1\u7684\u6574\u6570\u3002",
  7688. "p": [
  7689. {
  7690. "name": "\u503C",
  7691. "detail": "\u8981\u5411\u4E0B\u53D6\u6574\u4E3A\u6700\u63A5\u8FD1\u7684\u6574\u6570\u7684\u6570\u503C\u3002"
  7692. }
  7693. ]
  7694. },
  7695. "ISEVEN": {
  7696. "d": "\u68C0\u67E5\u6240\u63D0\u4F9B\u7684\u6570\u503C\u662F\u5426\u4E3A\u5076\u6570\u3002",
  7697. "a": "\u68C0\u67E5\u6240\u63D0\u4F9B\u7684\u6570\u503C\u662F\u5426\u4E3A\u5076\u6570\u3002",
  7698. "p": [
  7699. {
  7700. "name": "\u503C",
  7701. "detail": "\u8981\u9A8C\u8BC1\u5176\u662F\u5426\u4E3A\u5076\u6570\u7684\u6570\u503C\u3002\n\n\u5982\u679C\u503C\u4E3A\u5076\u6570\u6216\u6307\u5411\u5305\u542B\u5076\u6570\u7684\u5355\u5143\u683C\u7684\u5F15\u7528\uFF0CISEVEN\u5C06\u8FD4\u56DETRUE\uFF0C\u5426\u5219\u8FD4\u56DEFALSE\u3002"
  7702. }
  7703. ]
  7704. },
  7705. "ISODD": {
  7706. "d": "\u68C0\u67E5\u6240\u63D0\u4F9B\u7684\u6570\u503C\u662F\u5426\u4E3A\u5947\u6570\u3002",
  7707. "a": "\u68C0\u67E5\u6240\u63D0\u4F9B\u7684\u6570\u503C\u662F\u5426\u4E3A\u5947\u6570\u3002",
  7708. "p": [
  7709. {
  7710. "name": "\u503C",
  7711. "detail": "\u8981\u9A8C\u8BC1\u5176\u662F\u5426\u4E3A\u5947\u6570\u7684\u6570\u503C\u3002\n\n\u5982\u679C\u503C\u4E3A\u5947\u6570\u6216\u6307\u5411\u5305\u542B\u5947\u6570\u7684\u5355\u5143\u683C\uFF0CISODD\u5C06\u8FD4\u56DETRUE\uFF0C\u5426\u5219\u8FD4\u56DEFALSE\u3002"
  7712. }
  7713. ]
  7714. },
  7715. "LCM": {
  7716. "d": "\u8FD4\u56DE\u4E00\u4E2A\u6216\u591A\u4E2A\u6574\u6570\u7684\u6700\u5C0F\u516C\u500D\u6570\u3002",
  7717. "a": "\u8FD4\u56DE\u4E00\u4E2A\u6216\u591A\u4E2A\u6574\u6570\u7684\u6700\u5C0F\u516C\u500D\u6570\u3002",
  7718. "p": [
  7719. {
  7720. "name": "\u503C1",
  7721. "detail": "\u8981\u5728\u6C42\u6700\u5C0F\u516C\u500D\u6570\u6570\u7684\u8BA1\u7B97\u4E2D\u68C0\u67E5\u5176\u56E0\u6570\u7684\u7B2C\u4E00\u9879\u6570\u503C\u6216\u8303\u56F4\u3002"
  7722. },
  7723. {
  7724. "name": "\u503C2",
  7725. "detail": "[\u53EF\u9009] - \u5728\u6C42\u6700\u5C0F\u516C\u500D\u6570\u65F6\u8981\u8003\u8651\u5176\u56E0\u6570\u7684\u5176\u4ED6\u6570\u503C\u6216\u8303\u56F4\u3002"
  7726. }
  7727. ]
  7728. },
  7729. "LN": {
  7730. "d": "\u8FD4\u56DE\u6570\u503C\u4EE5 e\uFF08\u6B27\u62C9\u6570\uFF09\u4E3A\u5E95\u7684\u5BF9\u6570\u3002",
  7731. "a": "\u8FD4\u56DE\u6570\u503C\u4EE5 e\uFF08\u6B27\u62C9\u6570\uFF09\u4E3A\u5E95\u7684\u5BF9\u6570\u3002",
  7732. "p": [
  7733. {
  7734. "name": "\u503C",
  7735. "detail": "\u8981\u4EE5 e \u4E3A\u5E95\u6570\u8BA1\u7B97\u5176\u5BF9\u6570\u7684\u503C\u3002\n\n\u503C\u5FC5\u987B\u4E3A\u6B63\u6570\u3002"
  7736. }
  7737. ]
  7738. },
  7739. "LOG": {
  7740. "d": "\u6839\u636E\u6307\u5B9A\u5E95\u6570\u8FD4\u56DE\u6570\u5B57\u7684\u5BF9\u6570\u3002",
  7741. "a": "\u6839\u636E\u6307\u5B9A\u5E95\u6570\u8FD4\u56DE\u6570\u5B57\u7684\u5BF9\u6570\u3002",
  7742. "p": [
  7743. {
  7744. "name": "\u503C",
  7745. "detail": "\u60F3\u8981\u8BA1\u7B97\u5176\u5BF9\u6570\u7684\u6B63\u5B9E\u6570\u3002"
  7746. },
  7747. {
  7748. "name": "\u5E95\u6570",
  7749. "detail": "[\u53EF\u9009] - \u5BF9\u6570\u7684\u5E95\u6570\u3002"
  7750. }
  7751. ]
  7752. },
  7753. "LOG10": {
  7754. "d": "\u8FD4\u56DE\u6570\u503C\u4EE510\u4E3A\u5E95\u7684\u5BF9\u6570\u3002",
  7755. "a": "\u8FD4\u56DE\u6570\u503C\u4EE510\u4E3A\u5E95\u7684\u5BF9\u6570\u3002",
  7756. "p": [
  7757. {
  7758. "name": "\u503C",
  7759. "detail": "\u8981\u8BA1\u7B97\u5176\u4EE510\u4E3A\u5E95\u7684\u5BF9\u6570\u7684\u6570\u503C\u3002\n\n\u503C\u5FC5\u987B\u4E3A\u6B63\u503C\u3002"
  7760. }
  7761. ]
  7762. },
  7763. "MOD": {
  7764. "d": "\u8FD4\u56DE\u4E24\u6570\u76F8\u9664\u7684\u4F59\u6570, \u7ED3\u679C\u7684\u7B26\u53F7\u4E0E\u9664\u6570\u76F8\u540C\u3002",
  7765. "a": "\u8FD4\u56DE\u4E24\u6570\u76F8\u9664\u7684\u4F59\u6570\u3002",
  7766. "p": [
  7767. {
  7768. "name": "\u88AB\u9664\u6570",
  7769. "detail": "\u8981\u5C06\u5176\u76F8\u9664\u4EE5\u5F97\u5230\u4F59\u6570\u7684\u6570\u503C\u3002"
  7770. },
  7771. {
  7772. "name": "\u9664\u6570",
  7773. "detail": "\u7528\u4E8E\u9664\u5176\u4ED6\u6570\u7684\u6570\u503C\u3002"
  7774. }
  7775. ]
  7776. },
  7777. "MROUND": {
  7778. "d": "\u5C06\u6570\u503C\u53D6\u6574\u4E3A\u53E6\u4E00\u6574\u6570\u6700\u63A5\u8FD1\u7684\u6574\u6570\u500D\u3002",
  7779. "a": "\u5C06\u6570\u503C\u53D6\u6574\u4E3A\u53E6\u4E00\u6574\u6570\u6700\u63A5\u8FD1\u7684\u6574\u6570\u500D\u3002",
  7780. "p": [
  7781. {
  7782. "name": "\u503C",
  7783. "detail": "\u8981\u53D6\u6574\u4E3A\u53E6\u4E00\u6574\u6570\u6700\u63A5\u8FD1\u7684\u6574\u6570\u500D\u7684\u6570\u503C\u3002"
  7784. },
  7785. {
  7786. "name": "\u56E0\u6570",
  7787. "detail": "\u503C\u5C06\u53D6\u6B64\u56E0\u6570\u7684\u6574\u6570\u500D\u3002"
  7788. }
  7789. ]
  7790. },
  7791. "ODD": {
  7792. "d": "\u5C06\u6570\u503C\u5411\u4E0A\u53D6\u6574\u4E3A\u6700\u63A5\u8FD1\u7684\u5947\u6574\u6570\u3002",
  7793. "a": "\u5C06\u6570\u503C\u5411\u4E0A\u53D6\u6574\u4E3A\u6700\u63A5\u8FD1\u7684\u5947\u6574\u6570\u3002",
  7794. "p": [
  7795. {
  7796. "name": "\u503C",
  7797. "detail": "\u8981\u5411\u4E0A\u53D6\u6574\u7684\u6570\u503C\uFF0C\u53D6\u6574\u503C\u4E3A\u5927\u4E8E\u6B64\u503C\u7684\u6700\u63A5\u8FD1\u7684\u5947\u6570\u3002\n\n\u5982\u679C\u503C\u4E3A\u8D1F\u6570\uFF0C\u5219\u5C06\u5176\u53D6\u6574\u4E3A\u7EDD\u5BF9\u503C\u5927\u4E8E\u8BE5\u503C\u7684\u76F8\u90BB\u8D1F\u5947\u6570\u3002"
  7798. }
  7799. ]
  7800. },
  7801. "SUMSQ": {
  7802. "d": "\u8FD4\u56DE\u4E00\u7EC4\u6570\u503C\u548C/\u6216\u5355\u5143\u683C\u7684\u5E73\u65B9\u603B\u548C\u3002",
  7803. "a": "\u8FD4\u56DE\u4E00\u7EC4\u6570\u503C\u548C/\u6216\u5355\u5143\u683C\u7684\u5E73\u65B9\u603B\u548C\u3002",
  7804. "p": [
  7805. {
  7806. "name": "\u503C1",
  7807. "detail": "\u8981\u5C06\u5176\u5E73\u65B9\u76F8\u52A0\u7684\u7B2C\u4E00\u4E2A\u6570\u503C\u6216\u8303\u56F4\u3002"
  7808. },
  7809. {
  7810. "name": "\u503C2, ...",
  7811. "detail": "[\u53EF\u9009] - \u8981\u5C06\u5176\u5E73\u65B9\u4E0E\u503C1\u7684\u5E73\u65B9\u76F8\u52A0\u7684\u5176\u4ED6\u6570\u503C\u6216\u8303\u56F4\u3002"
  7812. }
  7813. ]
  7814. },
  7815. "COMBIN": {
  7816. "d": "\u7ED9\u5B9A\u96C6\u5408\u4E2D\u7684\u5BF9\u8C61\u603B\u6570\u548C\u8981\u9009\u62E9\u7684\u5BF9\u8C61\u6570\u91CF\uFF0C\u8FD4\u56DE\u5171\u6709\u591A\u5C11\u79CD\u4E0D\u540C\u9009\u62E9\u65B9\u5F0F\u3002",
  7817. "a": "\u7ED9\u5B9A\u96C6\u5408\u4E2D\u7684\u5BF9\u8C61\u603B\u6570\u548C\u8981\u9009\u62E9\u7684\u5BF9\u8C61\u6570\u91CF",
  7818. "p": [
  7819. {
  7820. "name": "n",
  7821. "detail": "\u8981\u4ECE\u4E2D\u8FDB\u884C\u9009\u62E9\u7684\u5BF9\u8C61\u96C6\u5408\u7684\u5927\u5C0F\u3002"
  7822. },
  7823. {
  7824. "name": "k",
  7825. "detail": "\u8981\u9009\u62E9\u7684\u5BF9\u8C61\u6570\u91CF\u3002"
  7826. }
  7827. ]
  7828. },
  7829. "SUM": {
  7830. "d": "\u8FD4\u56DE\u4E00\u7EC4\u6570\u503C\u548C/\u6216\u5355\u5143\u683C\u7684\u603B\u548C\u3002",
  7831. "a": "\u8FD4\u56DE\u4E00\u7EC4\u6570\u503C\u548C/\u6216\u5355\u5143\u683C\u7684\u603B\u548C\u3002",
  7832. "p": [
  7833. {
  7834. "name": "\u503C1",
  7835. "detail": "\u8981\u76F8\u52A0\u7684\u7B2C\u4E00\u4E2A\u6570\u503C\u6216\u8303\u56F4\u3002"
  7836. },
  7837. {
  7838. "name": "\u503C2",
  7839. "detail": "[\u53EF\u9009] - \u8981\u76F8\u52A0\u7684\u5176\u4ED6\u6570\u503C\u6216\u8303\u56F4\u3002"
  7840. }
  7841. ]
  7842. },
  7843. "SUBTOTAL": {
  7844. "d": "\u4F7F\u7528\u6307\u5B9A\u7684\u6C47\u603B\u51FD\u6570\uFF0C\u8FD4\u56DE\u4E00\u7CFB\u5217\u7EB5\u5411\u5355\u5143\u683C\u7684\u5206\u7C7B\u6C47\u603B\u3002",
  7845. "a": "\u4F7F\u7528\u6307\u5B9A\u7684\u6C47\u603B\u51FD\u6570",
  7846. "p": [
  7847. {
  7848. "name": "\u51FD\u6570\u4EE3\u7801",
  7849. "detail": "\u7528\u4E8E\u8BA1\u7B97\u5206\u7C7B\u6C47\u603B\u7684\u51FD\u6570\u3002\n\n1\u4EE3\u8868AVERAGE\n\n2\u4EE3\u8868COUNT\n\n3\u4EE3\u8868COUNTA\n\n4\u4EE3\u8868MAX\n\n5\u4EE3\u8868MIN\n\n6\u4EE3\u8868PRODUCT\n\n7\u4EE3\u8868STDEV\n\n8\u4EE3\u8868STDEVP\n\n9\u4EE3\u8868SUM\n\n10\u4EE3\u8868VAR\n\n11\u4EE3\u8868VARP\n\n\u901A\u8FC7\u5728\u8FD9\u4E9B2\u4F4D\u4EE3\u7801\u524D\u9644\u52A010\uFF08\u5BF9\u4E8E1\u4F4D\u4EE3\u7801\uFF09\u62161\uFF08\u5BF9\u4E8E2\u4F4D\u4EE3\u7801\uFF09\uFF0C\u53EF\u4EE5\u5C06\u9690\u85CF\u503C\u5FFD\u7565\u3002\u4F8B\u5982\uFF0C102\u4EE3\u8868\u5FFD\u7565\u9690\u85CF\u5355\u5143\u683C\u7684COUNT\uFF0C\u800C110\u5219\u4EE3\u8868\u5FFD\u7565\u9690\u85CF\u503C\u7684VAR\u3002"
  7850. },
  7851. {
  7852. "name": "\u8303\u56F41",
  7853. "detail": "\u8981\u8BA1\u7B97\u5206\u7C7B\u6C47\u603B\u7684\u7B2C\u4E00\u4E2A\u8303\u56F4\u3002"
  7854. },
  7855. {
  7856. "name": "\u8303\u56F42",
  7857. "detail": "[\u53EF\u9009] - \u8981\u8BA1\u7B97\u5206\u7C7B\u6C47\u603B\u7684\u5176\u4ED6\u8303\u56F4\u3002"
  7858. }
  7859. ]
  7860. },
  7861. "ASIN": {
  7862. "d": "\u8FD4\u56DE\u6570\u503C\u7684\u53CD\u6B63\u5F26\u503C\uFF0C\u4EE5\u5F27\u5EA6\u8868\u793A\u3002",
  7863. "a": "\u8FD4\u56DE\u6570\u503C\u7684\u53CD\u6B63\u5F26\u503C",
  7864. "p": [
  7865. {
  7866. "name": "\u503C",
  7867. "detail": "\u8981\u8BA1\u7B97\u5176\u53CD\u6B63\u5F26\u503C\u7684\u6570\u503C\u3002\u5FC5\u987B\u4ECB\u4E8E-1\u548C1\u4E4B\u95F4\uFF0C\u5305\u62EC\u4E24\u7AEF\u503C\u3002"
  7868. }
  7869. ]
  7870. },
  7871. "COUNTIF": {
  7872. "d": "\u8FD4\u56DE\u8303\u56F4\u5185\u6EE1\u8DB3\u67D0\u4E2A\u6761\u4EF6\u7684\u5355\u5143\u683C\u7684\u6570\u91CF\u3002",
  7873. "a": "\u8FD4\u56DE\u8303\u56F4\u5185\u6EE1\u8DB3\u67D0\u4E2A\u6761\u4EF6\u7684\u5355\u5143\u683C\u7684\u6570\u91CF\u3002",
  7874. "p": [
  7875. {
  7876. "name": "\u8303\u56F4",
  7877. "detail": "\u8981\u6839\u636E\u6761\u4EF6\u8FDB\u884C\u68C0\u6D4B\u7684\u8303\u56F4\u3002"
  7878. },
  7879. {
  7880. "name": "\u6761\u4EF6",
  7881. "detail": "\u8981\u5E94\u7528\u4E8E\u8303\u56F4\u7684\u6A21\u5F0F\u6216\u6D4B\u8BD5\u6761\u4EF6\u3002\n\n\u5982\u679C\u8303\u56F4\u5305\u542B\u7684\u662F\u8981\u68C0\u6D4B\u7684\u6587\u672C\uFF0C\u5219\u6761\u4EF6\u5FC5\u987B\u4E3A\u5B57\u7B26\u4E32\u3002\u6761\u4EF6\u53EF\u4EE5\u5305\u542B\u901A\u914D\u7B26\uFF0C\u5305\u62EC\u7528\u4E8E\u5339\u914D\u5355\u4E2A\u5B57\u7B26\u7684?\u6216\u7528\u4E8E\u5339\u914D\u96F6\u4E2A\u6216\u8FDE\u7EED\u591A\u4E2A\u5B57\u7B26\u7684*\u3002\u8981\u5339\u914D\u95EE\u53F7\u661F\u53F7\u672C\u8EAB\uFF0C\u8BF7\u5728\u8BE5\u5B57\u7B26\u524D\u9762\u52A0\u4E0A\u6CE2\u6D6A\u53F7(~)\u524D\u7F00\uFF08\u5373~?\u548C~*\uFF09\u3002\u5B57\u7B26\u4E32\u6761\u4EF6\u5FC5\u987B\u7528\u5F15\u53F7\u62EC\u8D77\u6765\u3002\u51FD\u6570\u4F1A\u68C0\u67E5\u8303\u56F4\u4E2D\u7684\u6BCF\u4E2A\u5355\u5143\u683C\u4E0E\u6761\u4EF6\u662F\u5426\u76F8\u7B49\u6216\u5339\u914D\uFF08\u5982\u679C\u4F7F\u7528\u4E86\u901A\u914D\u7B26\uFF09\u3002\n\n\u5982\u679C\u8303\u56F4\u5305\u542B\u7684\u662F\u8981\u68C0\u6D4B\u7684\u6570\u5B57\uFF0C\u5219\u6761\u4EF6\u53EF\u4EE5\u662F\u5B57\u7B26\u4E32\u4E5F\u53EF\u4EE5\u662F\u6570\u5B57\u3002\u5982\u679C\u7ED9\u5B9A\u7684\u6761\u4EF6\u662F\u4E00\u4E2A\u6570\u5B57\uFF0C\u5219\u68C0\u67E5\u8303\u56F4\u4E2D\u7684\u6BCF\u4E2A\u5355\u5143\u683C\u662F\u5426\u7B49\u4E8E\u6761\u4EF6\u3002\u53E6\u5916\uFF0C\u6761\u4EF6\u4E5F\u53EF\u80FD\u662F\u5305\u542B\u6570\u5B57\u7684\u5B57\u7B26\u4E32\uFF08\u4E5F\u5C06\u5BF9\u5176\u8FDB\u884C\u76F8\u7B49\u68C0\u6D4B\uFF09\uFF0C\u6216\u8005\u5E26\u6709\u4EE5\u4E0B\u524D\u7F00\u7684\u6570\u5B57\uFF1A=\u3001>\u3001>=\u3001<\u6216<=\uFF0C\u8FD9\u4E9B\u6761\u4EF6\u5C06\u5206\u522B\u7528\u4E8E\u68C0\u67E5\u8303\u56F4\u4E2D\u7684\u5355\u5143\u683C\u662F\u5426\u7B49\u4E8E\u3001\u5927\u4E8E\u3001\u5927\u4E8E\u7B49\u4E8E\u3001\u5C0F\u4E8E\u3001\u5C0F\u4E8E\u7B49\u4E8E\u6761\u4EF6\u503C\u3002"
  7882. }
  7883. ]
  7884. },
  7885. "RADIANS": {
  7886. "d": "\u5C06\u4EE5\u5EA6\u8868\u793A\u7684\u89D2\u5EA6\u503C\u8F6C\u6362\u4E3A\u5F27\u5EA6\u3002",
  7887. "a": "\u5C06\u4EE5\u5EA6\u8868\u793A\u7684\u89D2\u5EA6\u503C\u8F6C\u6362\u4E3A\u5F27\u5EA6\u3002",
  7888. "p": [
  7889. {
  7890. "name": "\u89D2\u5EA6",
  7891. "detail": "\u8981\u4ECE\u5EA6\u8F6C\u6362\u4E3A\u5F27\u5EA6\u7684\u89D2\u5EA6\u3002"
  7892. }
  7893. ]
  7894. },
  7895. "RAND": {
  7896. "d": "\u8FD4\u56DE\u4E00\u4E2A\u4ECB\u4E8E0\u548C1\u4E4B\u95F4\uFF08\u5305\u62EC0\u4F46\u4E0D\u5305\u62EC1\uFF09\u7684\u968F\u673A\u6570\u3002",
  7897. "a": "\u8FD4\u56DE\u4E00\u4E2A\u4ECB\u4E8E0\u548C1\u4E4B\u95F4\uFF08\u5305\u62EC0\u4F46\u4E0D\u5305\u62EC1\uFF09\u7684\u968F\u673A\u6570\u3002",
  7898. "p": []
  7899. },
  7900. "COUNTUNIQUE": {
  7901. "d": "\u8BA1\u7B97\u4E00\u5217\u6307\u5B9A\u503C\u548C\u8303\u56F4\u4E2D\u4E0D\u91CD\u590D\u6570\u503C\u7684\u4E2A\u6570\u3002",
  7902. "a": "\u8BA1\u7B97\u4E00\u5217\u6307\u5B9A\u503C\u548C\u8303\u56F4\u4E2D\u4E0D\u91CD\u590D\u6570\u503C\u7684\u4E2A\u6570\u3002",
  7903. "p": [
  7904. {
  7905. "name": "\u503C1",
  7906. "detail": "\u8981\u68C0\u67E5\u5176\u662F\u5426\u552F\u4E00\u7684\u7B2C\u4E00\u4E2A\u503C\u6216\u8303\u56F4\u3002"
  7907. },
  7908. {
  7909. "name": "\u503C2",
  7910. "detail": "[\u53EF\u9009] - \u8981\u68C0\u67E5\u662F\u5426\u552F\u4E00\u7684\u5176\u4ED6\u503C\u6216\u8303\u56F4\u3002"
  7911. }
  7912. ]
  7913. },
  7914. "DEGREES": {
  7915. "d": "\u5C06\u4EE5\u5F27\u5EA6\u8868\u793A\u7684\u89D2\u5EA6\u503C\u8F6C\u6362\u4E3A\u5EA6\u3002",
  7916. "a": "\u5C06\u4EE5\u5F27\u5EA6\u8868\u793A\u7684\u89D2\u5EA6\u503C\u8F6C\u6362\u4E3A\u5EA6\u3002",
  7917. "p": [
  7918. {
  7919. "name": "\u89D2\u5EA6",
  7920. "detail": "\u8981\u4ECE\u5F27\u5EA6\u8F6C\u6362\u4E3A\u5EA6\u7684\u89D2\u5EA6\u3002"
  7921. }
  7922. ]
  7923. },
  7924. "ERFC": {
  7925. "d": "\u8FD4\u56DE\u6570\u503C\u7684\u4E92\u8865\u9AD8\u65AF\u8BEF\u5DEE\u51FD\u6570\u3002",
  7926. "a": "\u8FD4\u56DE\u6570\u503C\u7684\u4E92\u8865\u9AD8\u65AF\u8BEF\u5DEE\u51FD\u6570\u3002",
  7927. "p": [
  7928. {
  7929. "name": "z",
  7930. "detail": "\u8981\u4E3A\u5176\u8BA1\u7B97\u4E92\u8865\u9AD8\u65AF\u8BEF\u5DEE\u51FD\u6570\u7684\u6570\u503C\u3002"
  7931. }
  7932. ]
  7933. },
  7934. "EVEN": {
  7935. "d": "\u5C06\u6570\u503C\u5411\u4E0A\u53D6\u6574\u4E3A\u6700\u63A5\u8FD1\u7684\u5076\u6574\u6570\u3002",
  7936. "a": "\u5C06\u6570\u503C\u5411\u4E0A\u53D6\u6574\u4E3A\u6700\u63A5\u8FD1\u7684\u5076\u6574\u6570\u3002",
  7937. "p": [
  7938. {
  7939. "name": "\u503C",
  7940. "detail": "\u8981\u5411\u4E0A\u53D6\u6574\u7684\u6570\u503C\uFF0C\u53D6\u6574\u503C\u4E3A\u5927\u4E8E\u6B64\u503C\u7684\u6700\u63A5\u8FD1\u7684\u5076\u6570\u3002\n\n\u5982\u679C\u503C\u4E3A\u8D1F\u6570\uFF0C\u5219\u5C06\u5176\u53D6\u6574\u4E3A\u7EDD\u5BF9\u503C\u5927\u4E8E\u8BE5\u503C\u7684\u76F8\u90BB\u8D1F\u5076\u6570\u3002"
  7941. }
  7942. ]
  7943. },
  7944. "EXP": {
  7945. "d": "\u8FD4\u56DE\u6B27\u62C9\u6570 e (~2.718) \u7684\u6307\u5B9A\u6B21\u5E42\u3002",
  7946. "a": "\u8FD4\u56DE\u6B27\u62C9\u6570 e (~2.718) \u7684\u6307\u5B9A\u6B21\u5E42\u3002",
  7947. "p": [
  7948. {
  7949. "name": "\u6307\u6570",
  7950. "detail": "\u6307\u5B9Ae\u7684\u81EA\u4E58\u5E42\u6B21\u503C\u3002"
  7951. }
  7952. ]
  7953. },
  7954. "FACT": {
  7955. "d": "\u8FD4\u56DE\u6570\u503C\u7684\u9636\u4E58\u3002",
  7956. "a": "\u8FD4\u56DE\u6570\u503C\u7684\u9636\u4E58\u3002",
  7957. "p": [
  7958. {
  7959. "name": "\u503C",
  7960. "detail": "\u8981\u8BA1\u7B97\u5E76\u8FD4\u56DE\u5176\u9636\u4E58\u7684\u6570\u5B57\u6216\u5BF9\u6570\u5B57\uFF08\u6240\u5728\u5355\u5143\u683C\uFF09\u7684\u5F15\u7528\u3002"
  7961. }
  7962. ]
  7963. },
  7964. "FACTDOUBLE": {
  7965. "d": "\u8FD4\u56DE\u6570\u503C\u7684\u201C\u53CC\u9636\u4E58\u201D\u3002",
  7966. "a": "\u8FD4\u56DE\u6570\u503C\u7684\u201C\u53CC\u9636\u4E58\u201D\u3002",
  7967. "p": [
  7968. {
  7969. "name": "\u503C",
  7970. "detail": "\u8981\u8BA1\u7B97\u5E76\u8FD4\u56DE\u5176\u53CC\u9636\u4E58\u7684\u6570\u5B57\u6216\u5BF9\u6570\u5B57\uFF08\u6240\u5728\u5355\u5143\u683C\uFF09\u7684\u5F15\u7528\u3002"
  7971. }
  7972. ]
  7973. },
  7974. "PI": {
  7975. "d": "\u8FD4\u56DE\u5E26\u670914\u4F4D\u5C0F\u6570\u7684 PI \u503C\u3002",
  7976. "a": "\u8FD4\u56DE\u5E26\u670914\u4F4D\u5C0F\u6570\u7684 PI \u503C\u3002",
  7977. "p": []
  7978. },
  7979. "FLOOR": {
  7980. "d": "\u5C06\u6570\u503C\u5411\u4E0B\u53D6\u6574\u4E3A\u6307\u5B9A\u56E0\u6570\u7684\u6700\u63A5\u8FD1\u7684\u6574\u6570\u500D\u3002",
  7981. "a": "\u5C06\u6570\u503C\u5411\u4E0B\u53D6\u6574\u4E3A\u6307\u5B9A\u56E0\u6570\u7684\u6700\u63A5\u8FD1\u7684\u6574\u6570\u500D\u3002",
  7982. "p": [
  7983. {
  7984. "name": "\u503C",
  7985. "detail": "\u8981\u5411\u4E0B\u820D\u5165\u4E3A\u56E0\u6570\u7684\u6700\u63A5\u8FD1\u6574\u6570\u500D\u7684\u6570\u503C\u3002"
  7986. },
  7987. {
  7988. "name": "\u56E0\u6570",
  7989. "detail": "\u8981\u5C06\u503C\u820D\u5165\u5230\u6B64\u6570\u7684\u6574\u6570\u500D\u3002\n\n\u56E0\u6570\u4E0D\u5F97\u4E3A0\u3002"
  7990. }
  7991. ]
  7992. },
  7993. "GCD": {
  7994. "d": "\u8FD4\u56DE\u4E00\u4E2A\u6216\u591A\u4E2A\u6574\u6570\u7684\u6700\u5927\u516C\u7EA6\u6570\u3002",
  7995. "a": "\u8FD4\u56DE\u4E00\u4E2A\u6216\u591A\u4E2A\u6574\u6570\u7684\u6700\u5927\u516C\u7EA6\u6570\u3002",
  7996. "p": [
  7997. {
  7998. "name": "\u503C1",
  7999. "detail": "\u8981\u5728\u67E5\u627E\u6700\u5927\u516C\u7EA6\u6570\u7684\u8BA1\u7B97\u4E2D\u68C0\u67E5\u5176\u56E0\u6570\u7684\u7B2C\u4E00\u9879\u6570\u503C\u6216\u8303\u56F4\u3002"
  8000. },
  8001. {
  8002. "name": "\u503C2",
  8003. "detail": "[\u53EF\u9009] - \u5728\u6C42\u6700\u5927\u516C\u7EA6\u6570\u65F6\u8981\u8003\u8651\u5176\u56E0\u6570\u7684\u5176\u4ED6\u6570\u503C\u6216\u8303\u56F4\u3002"
  8004. }
  8005. ]
  8006. },
  8007. "RANDBETWEEN": {
  8008. "d": "\u8FD4\u56DE\u4ECB\u4E8E\u4E24\u4E2A\u6574\u6570\u4E4B\u95F4\uFF08\u5305\u62EC\u8FD9\u4E24\u4E2A\u6574\u6570\uFF09\u7684\u968F\u673A\u6570\u3002",
  8009. "a": "\u8FD4\u56DE\u4ECB\u4E8E\u4E24\u4E2A\u6574\u6570\u4E4B\u95F4\uFF08\u5305\u62EC\u8FD9\u4E24\u4E2A\u6574\u6570\uFF09\u7684\u968F\u673A\u6570\u3002",
  8010. "p": [
  8011. {
  8012. "name": "\u4E0B\u754C",
  8013. "detail": "\u968F\u673A\u503C\u8303\u56F4\u7684\u4E0B\u754C\u3002"
  8014. },
  8015. {
  8016. "name": "\u4E0A\u754C",
  8017. "detail": "\u968F\u673A\u503C\u8303\u56F4\u7684\u4E0A\u754C\u3002"
  8018. }
  8019. ]
  8020. },
  8021. "ROUND": {
  8022. "d": "\u5C06\u6570\u5B57\u56DB\u820D\u4E94\u5165\u5230\u6307\u5B9A\u7684\u4F4D\u6570\u3002",
  8023. "a": "\u5C06\u6570\u5B57\u56DB\u820D\u4E94\u5165\u5230\u6307\u5B9A\u7684\u4F4D\u6570\u3002",
  8024. "p": [
  8025. {
  8026. "name": "\u503C",
  8027. "detail": "\u8981\u56DB\u820D\u4E94\u5165\u7684\u6570\u5B57\u3002"
  8028. },
  8029. {
  8030. "name": "\u4F4D\u6570",
  8031. "detail": "\u8981\u8FDB\u884C\u56DB\u820D\u4E94\u5165\u8FD0\u7B97\u7684\u4F4D\u6570\u3002\n\n\u4F4D\u6570\u53EF\u4EE5\u53D6\u8D1F\u503C\uFF0C\u5728\u8FD9\u79CD\u60C5\u51B5\u4E0B\u4F1A\u5C06\u503C\u7684\u5C0F\u6570\u70B9\u5DE6\u4FA7\u90E8\u5206\u820D\u5165\u5230\u6307\u5B9A\u7684\u4F4D\u6570\u3002"
  8032. }
  8033. ]
  8034. },
  8035. "ROUNDDOWN": {
  8036. "d": "\u671D\u7740\u96F6\u7684\u65B9\u5411\u5C06\u6570\u5B57\u8FDB\u884C\u5411\u4E0B\u820D\u5165\u3002",
  8037. "a": "\u671D\u7740\u96F6\u7684\u65B9\u5411\u5C06\u6570\u5B57\u8FDB\u884C\u5411\u4E0B\u820D\u5165\u3002",
  8038. "p": [
  8039. {
  8040. "name": "\u503C",
  8041. "detail": "\u9700\u8981\u5411\u4E0B\u820D\u5165\u7684\u4EFB\u610F\u5B9E\u6570\u3002"
  8042. },
  8043. {
  8044. "name": "\u4F4D\u6570",
  8045. "detail": "\u8981\u901A\u8FC7\u820D\u5165\u8FBE\u5230\u7684\u5C0F\u6570\u4F4D\u6570\u3002\n\n\u4F4D\u6570\u53EF\u4EE5\u53D6\u8D1F\u503C\uFF0C\u5728\u8FD9\u79CD\u60C5\u51B5\u4E0B\u4F1A\u5C06\u503C\u7684\u5C0F\u6570\u70B9\u5DE6\u4FA7\u90E8\u5206\u820D\u5165\u5230\u6307\u5B9A\u7684\u4F4D\u6570\u3002"
  8046. }
  8047. ]
  8048. },
  8049. "ROUNDUP": {
  8050. "d": "\u671D\u7740\u8FDC\u79BB 0\uFF08\u96F6\uFF09\u7684\u65B9\u5411\u5C06\u6570\u5B57\u8FDB\u884C\u5411\u4E0A\u820D\u5165\u3002",
  8051. "a": "\u671D\u7740\u8FDC\u79BB 0\uFF08\u96F6\uFF09\u7684\u65B9\u5411\u5C06\u6570\u5B57\u8FDB\u884C\u5411\u4E0A\u820D\u5165\u3002",
  8052. "p": [
  8053. {
  8054. "name": "\u503C",
  8055. "detail": "\u8981\u5C06\u5176\u820D\u5165\u4E3A\u4F4D\u6570\u4F4D\u6570\u5B57\u7684\u503C\uFF0C\u59CB\u7EC8\u5411\u4E0A\u820D\u5165\u3002"
  8056. },
  8057. {
  8058. "name": "\u4F4D\u6570",
  8059. "detail": "\u8981\u901A\u8FC7\u820D\u5165\u8FBE\u5230\u7684\u5C0F\u6570\u4F4D\u6570\u3002\n\n\u4F4D\u6570\u53EF\u4EE5\u53D6\u8D1F\u503C\uFF0C\u5728\u8FD9\u79CD\u60C5\u51B5\u4E0B\u4F1A\u5C06\u503C\u7684\u5C0F\u6570\u70B9\u5DE6\u4FA7\u90E8\u5206\u820D\u5165\u5230\u6307\u5B9A\u7684\u4F4D\u6570\u3002"
  8060. }
  8061. ]
  8062. },
  8063. "SERIESSUM": {
  8064. "d": "\u7ED9\u5B9A\u53C2\u6570 x\u3001n\u3001m \u548C a\uFF0C\u8FD4\u56DE\u5E42\u7EA7\u6570\u7684\u548C a1xn + a2x(n+m) + ... + aix(n+(i-1)m)\uFF0C\u5176\u4E2D i \u4E3A\u8303\u56F4 a \u4E2D\u7684\u9879\u6570\u3002",
  8065. "a": "\u7ED9\u5B9A\u53C2\u6570 x\u3001n\u3001m \u548C a",
  8066. "p": [
  8067. {
  8068. "name": "x",
  8069. "detail": "\u5E42\u7EA7\u6570\u7684\u8F93\u5165\u503C\u3002\u968F\u76F8\u5E94\u7684\u8FD1\u4F3C\u7C7B\u578B\u800C\u53D8\uFF0C\u6709\u53EF\u80FD\u4E3A\u89D2\u5EA6\u3001\u6307\u6570\u6216\u5176\u4ED6\u4E00\u4E9B\u503C\u3002"
  8070. },
  8071. {
  8072. "name": "n",
  8073. "detail": "\u5728\u5E42\u7EA7\u6570\u4E2Dx\u7684\u521D\u59CB\u81EA\u4E58\u5E42\u6B21\u3002"
  8074. },
  8075. {
  8076. "name": "m",
  8077. "detail": "x\u7684\u5E42\u6B21\u4E2D\u7684\u9644\u52A0\u589E\u91CF\u3002"
  8078. },
  8079. {
  8080. "name": "a",
  8081. "detail": "\u5305\u542B\u5E42\u7EA7\u6570\u7CFB\u6570\u7684\u6570\u7EC4\u6216\u8303\u56F4\u3002"
  8082. }
  8083. ]
  8084. },
  8085. "SIGN": {
  8086. "d": "\u7ED9\u5B9A\u8F93\u5165\u6570\u503C\uFF0C\u5982\u679C\u4E3A\u8D1F\u8FD4\u56DE-1\uFF1B\u5982\u679C\u4E3A\u6B63\u8FD4\u56DE1\uFF1B\u5982\u679C\u4E3A\u96F6\u5219\u8FD4\u56DE0\u3002",
  8087. "a": "\u7ED9\u5B9A\u8F93\u5165\u6570\u503C",
  8088. "p": [
  8089. {
  8090. "name": "\u503C",
  8091. "detail": "\u8981\u8FD4\u56DE\u5176\u7B26\u53F7\u7684\u6570\u503C\u3002"
  8092. }
  8093. ]
  8094. },
  8095. "SIN": {
  8096. "d": "\u7ED9\u5B9A\u89D2\u5EA6\uFF08\u4EE5\u5F27\u5EA6\u8868\u793A\uFF09\uFF0C\u8FD4\u56DE\u5176\u6B63\u5F26\u503C\u3002",
  8097. "a": "\u7ED9\u5B9A\u89D2\u5EA6\uFF08\u4EE5\u5F27\u5EA6\u8868\u793A\uFF09",
  8098. "p": [
  8099. {
  8100. "name": "\u89D2\u5EA6",
  8101. "detail": "\u8981\u8FD4\u56DE\u5176\u6B63\u5F26\u503C\u7684\u89D2\u5EA6\uFF0C\u4EE5\u5F27\u5EA6\u8868\u793A\u3002"
  8102. }
  8103. ]
  8104. },
  8105. "SINH": {
  8106. "d": "\u8FD4\u56DE\u7ED9\u5B9A\u5B9E\u6570\u7684\u53CC\u66F2\u6B63\u5F26\u503C\u3002",
  8107. "a": "\u8FD4\u56DE\u7ED9\u5B9A\u5B9E\u6570\u7684\u53CC\u66F2\u6B63\u5F26\u503C\u3002",
  8108. "p": [
  8109. {
  8110. "name": "\u503C",
  8111. "detail": "\u8981\u8BA1\u7B97\u5176\u53CC\u66F2\u6B63\u5F26\u503C\u7684\u5B9E\u6570\u503C\u3002"
  8112. }
  8113. ]
  8114. },
  8115. "SQRT": {
  8116. "d": "\u8FD4\u56DE\u4E00\u4E2A\u6B63\u6570\u7684\u6B63\u5E73\u65B9\u6839\u3002",
  8117. "a": "\u8FD4\u56DE\u4E00\u4E2A\u6B63\u6570\u7684\u6B63\u5E73\u65B9\u6839\u3002",
  8118. "p": [
  8119. {
  8120. "name": "\u503C",
  8121. "detail": "\u8981\u8BA1\u7B97\u5176\u6B63\u5E73\u65B9\u6839\u7684\u6570\u503C\u3002\n\n\u503C\u5FC5\u987B\u4E3A\u6B63\u6570\uFF1B\u5982\u679C\u4E3A\u8D1F\uFF0CSQRT \u5C06\u8FD4\u56DE #NUM! \u9519\u8BEF\u3002"
  8122. }
  8123. ]
  8124. },
  8125. "SQRTPI": {
  8126. "d": "\u8FD4\u56DE PI \u4E0E\u7ED9\u5B9A\u6B63\u6570\u4E58\u79EF\u7684\u6B63\u5E73\u65B9\u6839\u3002",
  8127. "a": "\u8FD4\u56DE PI \u4E0E\u7ED9\u5B9A\u6B63\u6570\u4E58\u79EF\u7684\u6B63\u5E73\u65B9\u6839\u3002",
  8128. "p": [
  8129. {
  8130. "name": "\u503C",
  8131. "detail": "\u8981\u5C06\u5176\u4E0E PI \u76F8\u4E58\u5E76\u8FD4\u56DE\u8BE5\u4E58\u79EF\u7684\u5E73\u65B9\u6839\u7684\u6570\u503C\n\n\u503C\u5FC5\u987B\u4E3A\u6B63\u6570\uFF1B\u5982\u679C\u4E3A\u8D1F\u6570\uFF0CSQRTPI \u5C06\u8FD4\u56DE #NUM! \u9519\u8BEF\u3002"
  8132. }
  8133. ]
  8134. },
  8135. "GAMMALN": {
  8136. "d": "\u8FD4\u56DE\u6307\u5B9A\u4F3D\u739B\u51FD\u6570\u7684\u4EE5 e\uFF08\u6B27\u62C9\u6570\uFF09\u4E3A\u5E95\u7684\u5BF9\u6570\u3002",
  8137. "a": "\u8FD4\u56DE\u6307\u5B9A\u4F3D\u739B\u51FD\u6570\u7684\u4EE5 e\uFF08\u6B27\u62C9\u6570\uFF09\u4E3A\u5E95\u7684\u5BF9\u6570\u3002",
  8138. "p": [
  8139. {
  8140. "name": "\u503C",
  8141. "detail": "\u4F3D\u739B\u51FD\u6570\u7684\u8F93\u5165\u503C\u3002\u8FD4\u56DE\u7684\u5C06\u662F\u4F3D\u739B (\u503C) \u7684\u81EA\u7136\u5BF9\u6570\u3002\n\n\u503C\u5FC5\u987B\u4E3A\u6B63\u6570\u3002"
  8142. }
  8143. ]
  8144. },
  8145. "COS": {
  8146. "d": "\u8FD4\u56DE\u7ED9\u5B9A\u89D2\u5EA6\u7684\u4F59\u5F26\u503C\uFF08\u89D2\u5EA6\u4EE5\u5F27\u5EA6\u8868\u793A\uFF09\u3002",
  8147. "a": "\u8FD4\u56DE\u7ED9\u5B9A\u89D2\u5EA6\u7684\u4F59\u5F26\u503C\uFF08\u89D2\u5EA6\u4EE5\u5F27\u5EA6\u8868\u793A\uFF09\u3002",
  8148. "p": [
  8149. {
  8150. "name": "\u89D2\u5EA6",
  8151. "detail": "\u8981\u53D6\u5176\u4F59\u5F26\u503C\u7684\u89D2\u5EA6\uFF0C\u4EE5\u5F27\u5EA6\u8868\u793A\u3002"
  8152. }
  8153. ]
  8154. },
  8155. "TRUNC": {
  8156. "d": "\u622A\u9664\u6307\u5B9A\u6709\u6548\u4F4D\u4E4B\u5916\u7684\u90E8\u5206\uFF0C\u53D6\u6570\u636E\u7684\u6307\u5B9A\u6709\u6548\u4F4D\u3002",
  8157. "a": "\u622A\u9664\u6307\u5B9A\u6709\u6548\u4F4D\u4E4B\u5916\u7684\u90E8\u5206",
  8158. "p": [
  8159. {
  8160. "name": "\u503C",
  8161. "detail": "\u8981\u622A\u53D6\u7684\u6570\u636E\u3002"
  8162. },
  8163. {
  8164. "name": "\u4F4D\u6570",
  8165. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u503C\u4E3A0] - \u5C0F\u6570\u70B9\u53F3\u4FA7\u8981\u4FDD\u7559\u7684\u6709\u6548\u4F4D\u6570\u3002\n\n\u5982\u679C\u4F4D\u6570\u5927\u4E8E\u503C\u4E2D\u7684\u6709\u6548\u4F4D\u6570\uFF0C\u5219\u5C06\u201C\u503C\u201D\u539F\u6837\u8FD4\u56DE\u3002\n\n\u4F4D\u6570\u53EF\u4EE5\u53D6\u8D1F\u503C\uFF0C\u5728\u8FD9\u79CD\u60C5\u51B5\u4E0B\u4F1A\u5C06\u5C0F\u6570\u70B9\u5DE6\u4FA7\u6307\u5B9A\u4F4D\u6570\u7684\u503C\u66F4\u6539\u4E3A\u96F6\u3002\u5C0F\u6570\u70B9\u53F3\u4FA7\u7684\u6240\u6709\u4F4D\u6570\u90FD\u4F1A\u88AB\u820D\u5F03\u3002\u5982\u679C\u503C\u7684\u6240\u6709\u4F4D\u90FD\u88AB\u66F4\u6539\u4E3A\u96F6\uFF0C\u5219TRUNC\u4F1A\u8FD4\u56DE0\u3002"
  8166. }
  8167. ]
  8168. },
  8169. "QUOTIENT": {
  8170. "d": "\u8FD4\u56DE\u4EE5\u4E00\u4E2A\u6570\u9664\u4EE5\u53E6\u4E00\u4E2A\u6570\u6240\u5F97\u7684\u7ED3\u679C\uFF0C\u4E0D\u5305\u542B\u4F59\u6570\u3002",
  8171. "a": "\u8FD4\u56DE\u4EE5\u4E00\u4E2A\u6570\u9664\u4EE5\u53E6\u4E00\u4E2A\u6570\u6240\u5F97\u7684\u7ED3\u679C",
  8172. "p": [
  8173. {
  8174. "name": "\u88AB\u9664\u6570",
  8175. "detail": "\u8981\u88AB\u9664\u7684\u6570\u503C\u3002"
  8176. },
  8177. {
  8178. "name": "\u9664\u6570",
  8179. "detail": "\u7528\u4E8E\u9664\u5176\u4ED6\u6570\u7684\u6570\u503C\u3002\n\n\u9664\u6570\u4E0D\u5F97\u4E3A0\u3002"
  8180. }
  8181. ]
  8182. },
  8183. "POWER": {
  8184. "d": "\u8FD4\u56DE\u6570\u503C\u7684\u6307\u5B9A\u6B21\u5E42\u3002",
  8185. "a": "\u8FD4\u56DE\u6570\u503C\u7684\u6307\u5B9A\u6B21\u5E42\u3002",
  8186. "p": [
  8187. {
  8188. "name": "\u5E95\u6570",
  8189. "detail": "\u8981\u8BA1\u7B97\u5176\u6307\u6570\u6B21\u5E42\u7684\u6570\u503C\u3002\n\n\u5982\u679C\u5E95\u6570\u4E3A\u8D1F\uFF0C\u5219\u6307\u6570\u5FC5\u987B\u4E3A\u6574\u6570\u3002"
  8190. },
  8191. {
  8192. "name": "\u6307\u6570",
  8193. "detail": "\u6307\u5B9A\u5E95\u6570\u7684\u81EA\u4E58\u5E42\u6B21\u503C\u3002"
  8194. }
  8195. ]
  8196. },
  8197. "SUMIFS": {
  8198. "d": "\u6839\u636E\u591A\u9879\u6761\u4EF6\u8FD4\u56DE\u8303\u56F4\u4E4B\u548C\u3002",
  8199. "a": "\u6839\u636E\u591A\u9879\u6761\u4EF6\u8FD4\u56DE\u8303\u56F4\u4E4B\u548C\u3002",
  8200. "p": [
  8201. {
  8202. "name": "\u6C42\u548C\u8303\u56F4",
  8203. "detail": "\u8981\u5BF9\u5176\u6C42\u548C\u7684\u8303\u56F4\u3002"
  8204. },
  8205. {
  8206. "name": "\u6761\u4EF6\u8303\u56F41",
  8207. "detail": "\u8981\u5728\u54EA\u4E2A\u8303\u56F4\u5185\u68C0\u67E5\u6761\u4EF61\u3002"
  8208. },
  8209. {
  8210. "name": "\u6761\u4EF61",
  8211. "detail": "\u8981\u5E94\u7528\u4E8E\u6761\u4EF6\u8303\u56F41\u7684\u6A21\u5F0F\u6216\u6D4B\u8BD5\u6761\u4EF6\u3002"
  8212. },
  8213. {
  8214. "name": "\u6761\u4EF6\u8303\u56F42, \u6761\u4EF62...",
  8215. "detail": "[ \u53EF\u9009 ] - \u8981\u68C0\u67E5\u7684\u5176\u4ED6\u8303\u56F4\u548C\u6761\u4EF6\u3002"
  8216. }
  8217. ]
  8218. },
  8219. "COUNTIFS": {
  8220. "d": "\u6839\u636E\u591A\u9879\u6761\u4EF6\u8FD4\u56DE\u8303\u56F4\u4E2D\u7684\u5355\u5143\u683C\u6570\u91CF\u3002",
  8221. "a": "\u6839\u636E\u591A\u9879\u6761\u4EF6\u8FD4\u56DE\u8303\u56F4\u4E2D\u7684\u5355\u5143\u683C\u6570\u91CF\u3002",
  8222. "p": [
  8223. {
  8224. "name": "\u6761\u4EF6\u8303\u56F41",
  8225. "detail": "\u8981\u5728\u54EA\u4E2A\u8303\u56F4\u5185\u68C0\u67E5\u6761\u4EF61\u3002"
  8226. },
  8227. {
  8228. "name": "\u6761\u4EF61",
  8229. "detail": "\u8981\u5E94\u7528\u4E8E\u6761\u4EF6\u8303\u56F41\u7684\u6A21\u5F0F\u6216\u6D4B\u8BD5\u6761\u4EF6\u3002"
  8230. },
  8231. {
  8232. "name": "\u6761\u4EF6\u8303\u56F42, \u6761\u4EF62...",
  8233. "detail": "[ \u53EF\u9009 ] - \u8981\u68C0\u67E5\u7684\u5176\u4ED6\u8303\u56F4\u548C\u6761\u4EF6\uFF0C\u53EF\u91CD\u590D\u3002"
  8234. }
  8235. ]
  8236. },
  8237. "PRODUCT": {
  8238. "d": "\u8FD4\u56DE\u5C06\u4E00\u7EC4\u6570\u76F8\u4E58\u6240\u5F97\u7684\u7ED3\u679C\u3002",
  8239. "a": "\u8FD4\u56DE\u5C06\u4E00\u7EC4\u6570\u76F8\u4E58\u6240\u5F97\u7684\u7ED3\u679C\u3002",
  8240. "p": [
  8241. {
  8242. "name": "\u4E58\u65701",
  8243. "detail": "\u7528\u4E8E\u8BA1\u7B97\u4E58\u79EF\u7684\u7B2C\u4E00\u4E2A\u6570\u503C\u6216\u8303\u56F4\u3002"
  8244. },
  8245. {
  8246. "name": "\u4E58\u65702 ... \u4E58\u657030",
  8247. "detail": "[\u53EF\u9009] - \u8981\u76F8\u4E58\u7684\u5176\u4ED6\u6570\u503C\u3002"
  8248. }
  8249. ]
  8250. },
  8251. "HARMEAN": {
  8252. "d": "\u8BA1\u7B97\u6570\u636E\u96C6\u7684\u8C03\u548C\u5E73\u5747\u503C\u3002",
  8253. "a": "\u8BA1\u7B97\u6570\u636E\u96C6\u7684\u8C03\u548C\u5E73\u5747\u503C\u3002",
  8254. "p": [
  8255. {
  8256. "name": "\u503C1",
  8257. "detail": "\u6837\u672C\u4E2D\u7684\u7B2C\u4E00\u9879\u503C\u6216\u8303\u56F4\u3002"
  8258. },
  8259. {
  8260. "name": "\u503C2, ...",
  8261. "detail": "[\u53EF\u9009] - \u6570\u636E\u96C6\u4E2D\u5305\u542B\u7684\u5176\u4ED6\u6570\u503C\u6216\u8303\u56F4\u3002"
  8262. }
  8263. ]
  8264. },
  8265. "HYPGEOMDIST": {
  8266. "d": "\u8FD4\u56DE\u8D85\u51E0\u4F55\u5206\u5E03\u3002 \u5982\u679C\u5DF2\u77E5\u6837\u672C\u91CF\u3001\u603B\u4F53\u6210\u529F\u6B21\u6570\u548C\u603B\u4F53\u5927\u5C0F\uFF0C\u5219 HYPGEOM.DIST \u8FD4\u56DE\u6837\u672C\u53D6\u5F97\u5DF2\u77E5\u6210\u529F\u6B21\u6570\u7684\u6982\u7387\u3002",
  8267. "a": "\u8FD4\u56DE\u8D85\u51E0\u4F55\u5206\u5E03\u3002",
  8268. "p": [
  8269. {
  8270. "name": "Sample_s",
  8271. "detail": "\u6837\u672C\u4E2D\u6210\u529F\u7684\u6B21\u6570\u3002"
  8272. },
  8273. {
  8274. "name": "Number_sample",
  8275. "detail": "\u6837\u672C\u91CF\u3002"
  8276. },
  8277. {
  8278. "name": "Population_s",
  8279. "detail": "\u603B\u4F53\u4E2D\u6210\u529F\u7684\u6B21\u6570\u3002"
  8280. },
  8281. {
  8282. "name": "Number_pop",
  8283. "detail": "\u603B\u4F53\u5927\u5C0F\u3002"
  8284. },
  8285. {
  8286. "name": "cumulative",
  8287. "detail": "\u51B3\u5B9A\u51FD\u6570\u5F62\u5F0F\u7684\u903B\u8F91\u503C\u3002\n\n\u5982\u679C cumulative \u4E3A TRUE()\uFF0C\u5219 HYPGEOM.DIST \u8FD4\u56DE\u7D2F\u79EF\u5206\u5E03\u51FD\u6570\uFF1B\n\n\u5982\u679C\u4E3A FALSE()\uFF0C\u5219\u8FD4\u56DE\u6982\u7387\u5BC6\u5EA6\u51FD\u6570\u3002"
  8288. }
  8289. ]
  8290. },
  8291. "INTERCEPT": {
  8292. "d": "\u8BA1\u7B97\u6570\u636E\u96C6\u7684\u7EBF\u6027\u56DE\u5F52\u65B9\u7A0B\u76F4\u7EBF\u4E0E Y \u8F74\u7684\u76F8\u4EA4\u70B9 (x=0) \u7684 y \u503C\u3002",
  8293. "a": "\u8BA1\u7B97\u6570\u636E\u96C6\u7684\u7EBF\u6027\u56DE\u5F52\u65B9\u7A0B\u76F4\u7EBF\u4E0E Y \u8F74\u7684\u76F8\u4EA4\u70B9 (x=0) \u7684 y \u503C\u3002",
  8294. "p": [
  8295. {
  8296. "name": "\u6570\u636E_y",
  8297. "detail": "\u4EE3\u8868\u56E0\u53D8\u91CF\u6570\u636E\u6570\u7EC4\u6216\u77E9\u9635\u7684\u8303\u56F4\u3002"
  8298. },
  8299. {
  8300. "name": "\u6570\u636E_x",
  8301. "detail": "\u4EE3\u8868\u81EA\u53D8\u91CF\u6570\u636E\u6570\u7EC4\u6216\u77E9\u9635\u7684\u8303\u56F4\u3002"
  8302. }
  8303. ]
  8304. },
  8305. "KURT": {
  8306. "d": "\u8BA1\u7B97\u6570\u636E\u96C6\u7684\u5CED\u5EA6\uFF0C\u8BE5\u6307\u6807\u6307\u793A\u6570\u636E\u96C6\uFF08\u5206\u5E03\uFF09\u7684\u5F62\u6001\uFF0C\u5C24\u5176\u662F\u8BE5\u5F62\u6001\u7684\u9661\u5CED\u7A0B\u5EA6\u3002",
  8307. "a": "\u8BA1\u7B97\u6570\u636E\u96C6\u7684\u5CED\u5EA6",
  8308. "p": [
  8309. {
  8310. "name": "\u503C1",
  8311. "detail": "\u6570\u636E\u96C6\u4E2D\u7684\u7B2C\u4E00\u4E2A\u503C\u6216\u8303\u56F4\u3002"
  8312. },
  8313. {
  8314. "name": "\u503C2, ...",
  8315. "detail": "[\u53EF\u9009] - \u6570\u636E\u96C6\u4E2D\u5305\u542B\u7684\u5176\u4ED6\u503C\u6216\u8303\u56F4\u3002"
  8316. }
  8317. ]
  8318. },
  8319. "LARGE": {
  8320. "d": "\u8FD4\u56DE\u6570\u636E\u96C6\u4E2D\u7B2C n \u4E2A\u6700\u5927\u5143\u7D20\uFF0Cn \u7531\u7528\u6237\u6307\u5B9A\u3002",
  8321. "a": "\u8FD4\u56DE\u6570\u636E\u96C6\u4E2D\u7B2C n \u4E2A\u6700\u5927\u5143\u7D20",
  8322. "p": [
  8323. {
  8324. "name": "\u6570\u636E",
  8325. "detail": "\u5305\u542B\u76F8\u5173\u6570\u636E\u96C6\u7684\u6570\u7EC4\u6216\u8303\u56F4\u3002"
  8326. },
  8327. {
  8328. "name": "n",
  8329. "detail": "\u8981\u8FD4\u56DE\u7684\u5143\u7D20\u7684\u6392\u884C\u4F4D\u7F6E\uFF08\u4ECE\u5927\u5230\u5C0F\u987A\u5E8F\uFF09\u3002\n\n\u4F8B\u5982\uFF0C\u5C06n\u8BBE\u4E3A4\u5C06\u4F7FLARGE\u8FD4\u56DE\u6570\u636E\u4E2D\u6392\u540D\u7B2C4\u7684\u6700\u5927\u5143\u7D20\u3002"
  8330. }
  8331. ]
  8332. },
  8333. "STDEVA": {
  8334. "d": "\u57FA\u4E8E\u6837\u672C\u8BA1\u7B97\u6807\u51C6\u504F\u5DEE\uFF0C\u5C06\u6587\u672C\u53D6\u503C\u4E3A0\u3002",
  8335. "a": "\u57FA\u4E8E\u6837\u672C\u8BA1\u7B97\u6807\u51C6\u504F\u5DEE",
  8336. "p": [
  8337. {
  8338. "name": "\u503C1",
  8339. "detail": "\u6837\u672C\u4E2D\u7684\u7B2C\u4E00\u9879\u503C\u6216\u8303\u56F4\u3002"
  8340. },
  8341. {
  8342. "name": "\u503C2,\u2026",
  8343. "detail": "[\u53EF\u9009] - \u6837\u672C\u4E2D\u5305\u542B\u7684\u5176\u4ED6\u503C\u6216\u8303\u56F4\u3002"
  8344. }
  8345. ]
  8346. },
  8347. "STDEVP": {
  8348. "d": "\u57FA\u4E8E\u6837\u672C\u603B\u4F53\u8BA1\u7B97\u6807\u51C6\u504F\u5DEE\u3002",
  8349. "a": "\u57FA\u4E8E\u6837\u672C\u603B\u4F53\u8BA1\u7B97\u6807\u51C6\u504F\u5DEE\u3002",
  8350. "p": [
  8351. {
  8352. "name": "\u503C1",
  8353. "detail": "\u6570\u636E\u96C6\u4E2D\u7684\u7B2C\u4E00\u4E2A\u503C\u6216\u8303\u56F4\u3002"
  8354. },
  8355. {
  8356. "name": "\u503C2, ...",
  8357. "detail": "[\u53EF\u9009] - \u6570\u636E\u96C6\u4E2D\u5305\u542B\u7684\u5176\u4ED6\u503C\u6216\u8303\u56F4\u3002"
  8358. }
  8359. ]
  8360. },
  8361. "GEOMEAN": {
  8362. "d": "\u8BA1\u7B97\u6570\u636E\u96C6\u7684\u51E0\u4F55\u5E73\u5747\u503C\u3002",
  8363. "a": "\u8BA1\u7B97\u6570\u636E\u96C6\u7684\u51E0\u4F55\u5E73\u5747\u503C\u3002",
  8364. "p": [
  8365. {
  8366. "name": "\u503C1",
  8367. "detail": "\u6837\u672C\u4E2D\u7684\u7B2C\u4E00\u9879\u503C\u6216\u8303\u56F4\u3002"
  8368. },
  8369. {
  8370. "name": "\u503C2, ...",
  8371. "detail": "[\u53EF\u9009] - \u6570\u636E\u96C6\u4E2D\u5305\u542B\u7684\u5176\u4ED6\u6570\u503C\u6216\u8303\u56F4\u3002"
  8372. }
  8373. ]
  8374. },
  8375. "RANK_EQ": {
  8376. "d": "\u8FD4\u56DE\u6307\u5B9A\u503C\u5728\u6570\u636E\u96C6\u4E2D\u7684\u6392\u540D\u3002\u5982\u679C\u76F8\u540C\u7684\u503C\u5728\u6570\u636E\u96C6\u4E2D\u5B58\u5728\u591A\u9879\uFF0C\u5219\u8FD4\u56DE\u5176\u4E2D\u7684\u6700\u9AD8\u6392\u540D\u3002",
  8377. "a": "\u8FD4\u56DE\u6307\u5B9A\u503C\u5728\u6570\u636E\u96C6\u4E2D\u7684\u6392\u540D\u3002\u5982\u679C\u76F8\u540C\u7684\u503C\u5728\u6570\u636E\u96C6\u4E2D\u5B58\u5728\u591A\u9879\uFF0C\u5219\u8FD4\u56DE\u5176\u4E2D\u7684\u6700\u9AD8\u6392\u540D\u3002",
  8378. "p": [
  8379. {
  8380. "name": "number",
  8381. "detail": "\u8981\u786E\u5B9A\u5176\u6392\u540D\u7684\u503C\u3002"
  8382. },
  8383. {
  8384. "name": "ref",
  8385. "detail": "\u5305\u542B\u76F8\u5173\u6570\u636E\u96C6\u7684\u6570\u7EC4\u6216\u8303\u56F4\u3002"
  8386. },
  8387. {
  8388. "name": "order",
  8389. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u4E3A\u6309\u964D\u5E8F (FALSE()) ] - \u8981\u6309\u5347\u5E8F\u8FD8\u662F\u6309\u964D\u5E8F\u8003\u8651\u201Cdata\u201D\u4E2D\u7684\u503C\u3002"
  8390. }
  8391. ]
  8392. },
  8393. "RANK_AVG": {
  8394. "d": "\u8FD4\u56DE\u6307\u5B9A\u503C\u5728\u6570\u636E\u96C6\u4E2D\u7684\u6392\u540D\u3002\u5982\u679C\u76F8\u540C\u7684\u503C\u5728\u6570\u636E\u96C6\u4E2D\u5B58\u5728\u591A\u9879\uFF0C\u5219\u8FD4\u56DE\u8FD9\u4E9B\u9879\u6392\u540D\u7684\u5E73\u5747\u503C\u3002",
  8395. "a": "\u8FD4\u56DE\u6307\u5B9A\u503C\u5728\u6570\u636E\u96C6\u4E2D\u7684\u6392\u540D\u3002\u5982\u679C\u76F8\u540C\u7684\u503C\u5728\u6570\u636E\u96C6\u4E2D\u5B58\u5728\u591A\u9879\uFF0C\u5219\u8FD4\u56DE\u8FD9\u4E9B\u9879\u6392\u540D\u7684\u5E73\u5747\u503C\u3002",
  8396. "p": [
  8397. {
  8398. "name": "number",
  8399. "detail": "\u8981\u786E\u5B9A\u5176\u6392\u540D\u7684\u503C\u3002"
  8400. },
  8401. {
  8402. "name": "ref",
  8403. "detail": "\u5305\u542B\u76F8\u5173\u6570\u636E\u96C6\u7684\u6570\u7EC4\u6216\u8303\u56F4\u3002"
  8404. },
  8405. {
  8406. "name": "order",
  8407. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u4E3A\u6309\u964D\u5E8F (FALSE()) ] - \u8981\u6309\u5347\u5E8F\u8FD8\u662F\u6309\u964D\u5E8F\u8003\u8651\u201Cdata\u201D\u4E2D\u7684\u503C\u3002"
  8408. }
  8409. ]
  8410. },
  8411. "PERCENTRANK_EXC": {
  8412. "d": "\u4EE5\u767E\u5206\u6570\u5F62\u5F0F\u8FD4\u56DE\u6307\u5B9A\u503C\u5728\u7ED9\u5B9A\u6570\u636E\u96C6\u4E2D\u7684\u767E\u5206\u6BD4\u6392\u540D\uFF08\u4ECB\u4E8E0\u548C1\u4E4B\u95F4\uFF0C\u4E0D\u5305\u62EC\u4E24\u7AEF\u503C\uFF09\u3002",
  8413. "a": "\u4EE5\u767E\u5206\u6570\u5F62\u5F0F\u8FD4\u56DE\u6307\u5B9A\u503C\u5728\u7ED9\u5B9A\u6570\u636E\u96C6\u4E2D\u7684\u767E\u5206\u6BD4\u6392\u540D\uFF08\u4ECB\u4E8E0\u548C1\u4E4B\u95F4\uFF0C\u4E0D\u5305\u62EC\u4E24\u7AEF\u503C\uFF09\u3002",
  8414. "p": [
  8415. {
  8416. "name": "data",
  8417. "detail": "\u5305\u542B\u76F8\u5173\u6570\u636E\u96C6\u7684\u6570\u7EC4\u6216\u8303\u56F4\u3002"
  8418. },
  8419. {
  8420. "name": "x",
  8421. "detail": "\u8981\u786E\u5B9A\u5176\u767E\u5206\u6BD4\u6392\u4F4D\u7684\u503C\u3002"
  8422. },
  8423. {
  8424. "name": "significance",
  8425. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u503C\u4E3A 3] - \u8981\u5728\u8BA1\u7B97\u4E2D\u4F7F\u7528\u7684\u6709\u6548\u4F4D\u6570\u3002"
  8426. }
  8427. ]
  8428. },
  8429. "PERCENTRANK_INC": {
  8430. "d": "\u4EE5\u767E\u5206\u6BD4\u5F62\u5F0F\u8FD4\u56DE\u6307\u5B9A\u503C\u5728\u7ED9\u5B9A\u6570\u636E\u96C6\u4E2D\u7684\u767E\u5206\u6BD4\u6392\u540D\uFF08\u4ECB\u4E8E0\u548C1\u4E4B\u95F4\uFF0C\u5305\u62EC\u4E24\u7AEF\u503C\uFF09\u3002",
  8431. "a": "\u4EE5\u767E\u5206\u6BD4\u5F62\u5F0F\u8FD4\u56DE\u6307\u5B9A\u503C\u5728\u7ED9\u5B9A\u6570\u636E\u96C6\u4E2D\u7684\u767E\u5206\u6BD4\u6392\u540D\uFF08\u4ECB\u4E8E0\u548C1\u4E4B\u95F4\uFF0C\u5305\u62EC\u4E24\u7AEF\u503C\uFF09\u3002",
  8432. "p": [
  8433. {
  8434. "name": "data",
  8435. "detail": "\u5305\u542B\u76F8\u5173\u6570\u636E\u96C6\u7684\u6570\u7EC4\u6216\u8303\u56F4\u3002"
  8436. },
  8437. {
  8438. "name": "x",
  8439. "detail": "\u8981\u786E\u5B9A\u5176\u767E\u5206\u6BD4\u6392\u4F4D\u7684\u503C\u3002"
  8440. },
  8441. {
  8442. "name": "significance",
  8443. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u503C\u4E3A 3] - \u8981\u5728\u8BA1\u7B97\u4E2D\u4F7F\u7528\u7684\u6709\u6548\u4F4D\u6570\u3002"
  8444. }
  8445. ]
  8446. },
  8447. "FORECAST": {
  8448. "d": "\u57FA\u4E8E\u6570\u636E\u96C6\u7684\u7EBF\u6027\u56DE\u5F52\uFF0C\u8BA1\u7B97\u6307\u5B9A x \u7684\u9884\u671F y \u503C\u3002",
  8449. "a": "\u57FA\u4E8E\u6570\u636E\u96C6\u7684\u7EBF\u6027\u56DE\u5F52",
  8450. "p": [
  8451. {
  8452. "name": "x",
  8453. "detail": "x\u8F74\u4E0A\u7528\u4E8E\u9884\u6D4B\u7684\u503C\u3002"
  8454. },
  8455. {
  8456. "name": "\u6570\u636E_y",
  8457. "detail": "\u4EE3\u8868\u56E0\u53D8\u91CF\u6570\u636E\u6570\u7EC4\u6216\u77E9\u9635\u7684\u8303\u56F4\u3002"
  8458. },
  8459. {
  8460. "name": "\u6570\u636E_x",
  8461. "detail": "\u4EE3\u8868\u81EA\u53D8\u91CF\u6570\u636E\u6570\u7EC4\u6216\u77E9\u9635\u7684\u8303\u56F4\u3002"
  8462. }
  8463. ]
  8464. },
  8465. "FISHERINV": {
  8466. "d": "\u8FD4\u56DE\u6307\u5B9A\u6570\u503C\u7684 Fisher \u9006\u53D8\u6362\u3002",
  8467. "a": "\u8FD4\u56DE\u6307\u5B9A\u6570\u503C\u7684 Fisher \u9006\u53D8\u6362\u3002",
  8468. "p": [
  8469. {
  8470. "name": "y",
  8471. "detail": "\u8981\u8BA1\u7B97\u5176Fisher\u9006\u53D8\u6362\u7684\u6570\u503C\u3002"
  8472. }
  8473. ]
  8474. },
  8475. "FISHER": {
  8476. "d": "\u8FD4\u56DE\u6307\u5B9A\u6570\u503C\u7684 Fisher \u53D8\u6362\u3002",
  8477. "a": "\u8FD4\u56DE\u6307\u5B9A\u6570\u503C\u7684 Fisher \u53D8\u6362\u3002",
  8478. "p": [
  8479. {
  8480. "name": "x",
  8481. "detail": "\u8981\u8BA1\u7B97\u5176Fisher\u53D8\u6362\u7684\u6570\u503C\u3002"
  8482. }
  8483. ]
  8484. },
  8485. "MODE_SNGL": {
  8486. "d": "\u8FD4\u56DE\u6570\u636E\u96C6\u4E2D\u51FA\u73B0\u6B21\u6570\u6700\u591A\u7684\u503C\u3002",
  8487. "a": "\u8FD4\u56DE\u6570\u636E\u96C6\u4E2D\u51FA\u73B0\u6B21\u6570\u6700\u591A\u7684\u503C\u3002",
  8488. "p": [
  8489. {
  8490. "name": "\u503C1",
  8491. "detail": "\u8BA1\u7B97\u6A21\u5F0F\u65F6\u8981\u68C0\u67E5\u7684\u7B2C\u4E00\u4E2A\u503C\u6216\u8303\u56F4\u3002"
  8492. },
  8493. {
  8494. "name": "\u503C2, ...",
  8495. "detail": "[\u53EF\u9009] - \u5728\u8BA1\u7B97\u6A21\u5F0F\u65F6\u8981\u8003\u8651\u7684\u5176\u4ED6\u6570\u503C\u6216\u8303\u56F4\u3002"
  8496. }
  8497. ]
  8498. },
  8499. "WEIBULL_DIST": {
  8500. "d": "\u7ED9\u5B9A\u5F62\u72B6\u548C\u5C3A\u5EA6\uFF0C\u8FD4\u56DE\u97E6\u4F2F\u5206\u5E03\u51FD\u6570\uFF08\u6216\u97E6\u4F2F\u7D2F\u79EF\u5206\u5E03\u51FD\u6570\uFF09\u7684\u503C\u3002",
  8501. "a": "\u7ED9\u5B9A\u5F62\u72B6\u548C\u5C3A\u5EA6",
  8502. "p": [
  8503. {
  8504. "name": "x",
  8505. "detail": "WEIBULL \u5206\u5E03\u51FD\u6570\u7684\u8F93\u5165\u503C\u3002"
  8506. },
  8507. {
  8508. "name": "alpha",
  8509. "detail": "Weibull \u5206\u5E03\u51FD\u6570\u7684\u5F62\u72B6\u53C2\u6570\u3002\n\nalpha \u503C\u5FC5\u987B\u5927\u4E8E 0\u3002"
  8510. },
  8511. {
  8512. "name": "beta",
  8513. "detail": "Weibull \u5206\u5E03\u51FD\u6570\u7684\u5C3A\u5EA6\u53C2\u6570\u3002\n\nbeta \u503C\u5FC5\u987B\u5927\u4E8E 0\u3002"
  8514. },
  8515. {
  8516. "name": "cumulative",
  8517. "detail": "TRUE() \u8868\u793A\u4F7F\u7528\u7D2F\u79EF\u5206\u5E03\u51FD\u6570\uFF0CFALSE() \u5219\u8868\u793A\u4F7F\u7528\u6982\u7387\u5BC6\u5EA6\u51FD\u6570\u3002"
  8518. }
  8519. ]
  8520. },
  8521. "COUNT": {
  8522. "d": "\u8FD4\u56DE\u6570\u636E\u96C6\u4E2D\u6570\u503C\u7684\u4E2A\u6570\u3002",
  8523. "a": "\u8FD4\u56DE\u6570\u636E\u96C6\u4E2D\u6570\u503C\u7684\u4E2A\u6570\u3002",
  8524. "p": [
  8525. {
  8526. "name": "\u503C1",
  8527. "detail": "\u8BA1\u6570\u65F6\u8981\u68C0\u67E5\u7684\u7B2C\u4E00\u4E2A\u503C\u6216\u8303\u56F4\u3002"
  8528. },
  8529. {
  8530. "name": "\u503C2, ...",
  8531. "detail": "[\u53EF\u9009] - \u5728\u8BA1\u6570\u65F6\u8981\u68C0\u67E5\u7684\u5176\u4ED6\u503C\u6216\u8303\u56F4\u3002"
  8532. }
  8533. ]
  8534. },
  8535. "COUNTA": {
  8536. "d": "\u8FD4\u56DE\u6570\u636E\u96C6\u4E2D\u503C\u7684\u6570\u91CF\u3002",
  8537. "a": "\u8FD4\u56DE\u6570\u636E\u96C6\u4E2D\u503C\u7684\u6570\u91CF\u3002",
  8538. "p": [
  8539. {
  8540. "name": "\u503C1",
  8541. "detail": "\u8BA1\u6570\u65F6\u8981\u68C0\u67E5\u7684\u7B2C\u4E00\u4E2A\u503C\u6216\u8303\u56F4\u3002"
  8542. },
  8543. {
  8544. "name": "\u503C2, ...",
  8545. "detail": "[\u53EF\u9009] - \u5728\u8BA1\u6570\u65F6\u8981\u68C0\u67E5\u7684\u5176\u4ED6\u503C\u6216\u8303\u56F4\u3002"
  8546. }
  8547. ]
  8548. },
  8549. "AVEDEV": {
  8550. "d": "\u8BA1\u7B97\u6570\u636E\u4E0E\u6570\u636E\u96C6\u5747\u503C\u4E4B\u95F4\u7684\u504F\u5DEE\u5927\u5C0F\u7684\u5E73\u5747\u503C\u3002",
  8551. "a": "\u8BA1\u7B97\u6570\u636E\u4E0E\u6570\u636E\u96C6\u5747\u503C\u4E4B\u95F4\u7684\u504F\u5DEE\u5927\u5C0F\u7684\u5E73\u5747\u503C\u3002",
  8552. "p": [
  8553. {
  8554. "name": "\u503C1",
  8555. "detail": "\u6837\u672C\u4E2D\u7684\u7B2C\u4E00\u9879\u503C\u6216\u8303\u56F4\u3002"
  8556. },
  8557. {
  8558. "name": "\u503C2, ...",
  8559. "detail": "[\u53EF\u9009] - \u6837\u672C\u4E2D\u5305\u542B\u7684\u5176\u4ED6\u503C\u6216\u8303\u56F4\u3002"
  8560. }
  8561. ]
  8562. },
  8563. "AVERAGE": {
  8564. "d": "\u8FD4\u56DE\u6570\u636E\u96C6\u7684\u7B97\u672F\u5E73\u5747\u503C\uFF0C\u5BF9\u6587\u672C\u5FFD\u7565\u4E0D\u8BA1\u3002",
  8565. "a": "\u8FD4\u56DE\u6570\u636E\u96C6\u7684\u7B97\u672F\u5E73\u5747\u503C",
  8566. "p": [
  8567. {
  8568. "name": "\u503C1",
  8569. "detail": "\u8BA1\u7B97\u5E73\u5747\u503C\u65F6\u7528\u5230\u7684\u7B2C\u4E00\u4E2A\u6570\u503C\u6216\u8303\u56F4\u3002"
  8570. },
  8571. {
  8572. "name": "\u503C2, ...",
  8573. "detail": "[\u53EF\u9009] - \u5728\u8BA1\u7B97\u5E73\u5747\u503C\u65F6\u8981\u8003\u8651\u7684\u5176\u4ED6\u6570\u503C\u6216\u8303\u56F4\u3002"
  8574. }
  8575. ]
  8576. },
  8577. "AVERAGEA": {
  8578. "d": "\u8FD4\u56DE\u6570\u636E\u96C6\u7684\u7B97\u672F\u5E73\u5747\u503C\u3002",
  8579. "a": "\u8FD4\u56DE\u6570\u636E\u96C6\u7684\u7B97\u672F\u5E73\u5747\u503C\u3002",
  8580. "p": [
  8581. {
  8582. "name": "\u503C1",
  8583. "detail": "\u8BA1\u7B97\u5E73\u5747\u503C\u65F6\u7528\u5230\u7684\u7B2C\u4E00\u4E2A\u6570\u503C\u6216\u8303\u56F4\u3002"
  8584. },
  8585. {
  8586. "name": "\u503C2, ...",
  8587. "detail": "[\u53EF\u9009] - \u5728\u8BA1\u7B97\u5E73\u5747\u503C\u65F6\u8981\u8003\u8651\u7684\u5176\u4ED6\u6570\u503C\u6216\u8303\u56F4\u3002"
  8588. }
  8589. ]
  8590. },
  8591. "BINOM_DIST": {
  8592. "d": "\u8FD4\u56DE\u4E00\u5143\u4E8C\u9879\u5F0F\u5206\u5E03\u7684\u6982\u7387\u3002",
  8593. "a": "\u8FD4\u56DE\u4E00\u5143\u4E8C\u9879\u5F0F\u5206\u5E03\u7684\u6982\u7387\u3002",
  8594. "p": [
  8595. {
  8596. "name": "number_s",
  8597. "detail": "\u8BD5\u9A8C\u7684\u6210\u529F\u6B21\u6570\u3002"
  8598. },
  8599. {
  8600. "name": "trials",
  8601. "detail": "\u72EC\u7ACB\u68C0\u9A8C\u7684\u6B21\u6570\u3002"
  8602. },
  8603. {
  8604. "name": "probability_s",
  8605. "detail": "\u4EFB\u4E00\u7ED9\u5B9A\u68C0\u9A8C\u7684\u6210\u529F\u6982\u7387\u3002"
  8606. },
  8607. {
  8608. "name": "cumulative",
  8609. "detail": "\u662F\u5426\u4F7F\u7528\u4E8C\u9879\u5F0F\u7D2F\u79EF\u5206\u5E03\u3002"
  8610. }
  8611. ]
  8612. },
  8613. "BINOM_INV": {
  8614. "d": "\u8BA1\u7B97\u7D2F\u79EF\u4E8C\u9879\u5F0F\u5206\u5E03\u5927\u4E8E\u6216\u7B49\u4E8E\u6307\u5B9A\u6761\u4EF6\u7684\u6700\u5C0F\u503C\u3002",
  8615. "a": "\u8BA1\u7B97\u7D2F\u79EF\u4E8C\u9879\u5F0F\u5206\u5E03\u5927\u4E8E\u6216\u7B49\u4E8E\u6307\u5B9A\u6761\u4EF6\u7684\u6700\u5C0F\u503C\u3002",
  8616. "p": [
  8617. {
  8618. "name": "trials",
  8619. "detail": "\u8D1D\u52AA\u5229\u8BD5\u9A8C\u6B21\u6570\u3002"
  8620. },
  8621. {
  8622. "name": "probability_s",
  8623. "detail": "\u4EFB\u4E00\u6B21\u7ED9\u5B9A\u68C0\u9A8C\u7684\u6210\u529F\u6982\u7387\u3002"
  8624. },
  8625. {
  8626. "name": "alpha",
  8627. "detail": "\u671F\u671B\u7684\u4E34\u754C\u6982\u7387\u3002"
  8628. }
  8629. ]
  8630. },
  8631. "CONFIDENCE_NORM": {
  8632. "d": "\u8BA1\u7B97\u6B63\u6001\u5206\u5E03\u7684\u7F6E\u4FE1\u533A\u95F4\u7684\u4E00\u534A\u5BBD\u5EA6\u3002",
  8633. "a": "\u8BA1\u7B97\u6B63\u6001\u5206\u5E03\u7684\u7F6E\u4FE1\u533A\u95F4\u7684\u4E00\u534A\u5BBD\u5EA6\u3002",
  8634. "p": [
  8635. {
  8636. "name": "alpha",
  8637. "detail": "\u7528\u6765\u8BA1\u7B97\u7F6E\u4FE1\u6C34\u5E73\u7684\u663E\u8457\u6027\u6C34\u5E73\u3002\n\n\u7F6E\u4FE1\u6C34\u5E73\u7B49\u4E8E 100*(1 - alpha)%\uFF0C\u4EA6\u5373\uFF0C\u5982\u679C alpha \u4E3A 0.05\uFF0C\u5219\u7F6E\u4FE1\u6C34\u5E73\u4E3A 95%\u3002"
  8638. },
  8639. {
  8640. "name": "standard_dev",
  8641. "detail": "\u6570\u636E\u533A\u57DF\u7684\u603B\u4F53\u6807\u51C6\u504F\u5DEE\u3002"
  8642. },
  8643. {
  8644. "name": "size",
  8645. "detail": "\u6837\u672C\u603B\u91CF\u7684\u5927\u5C0F\u3002"
  8646. }
  8647. ]
  8648. },
  8649. "CORREL": {
  8650. "d": "\u8BA1\u7B97\u7ED9\u5B9A\u6570\u636E\u96C6\u7684\u76AE\u5C14\u900A\u79EF\u77E9\u76F8\u5173\u7CFB\u6570 r\u3002",
  8651. "a": "\u8BA1\u7B97\u7ED9\u5B9A\u6570\u636E\u96C6\u7684\u76AE\u5C14\u900A\u79EF\u77E9\u76F8\u5173\u7CFB\u6570 r\u3002",
  8652. "p": [
  8653. {
  8654. "name": "\u6570\u636E_y",
  8655. "detail": "\u4EE3\u8868\u56E0\u53D8\u91CF\u6570\u636E\u6570\u7EC4\u6216\u77E9\u9635\u7684\u8303\u56F4\u3002"
  8656. },
  8657. {
  8658. "name": "\u6570\u636E_x",
  8659. "detail": "\u4EE3\u8868\u81EA\u53D8\u91CF\u6570\u636E\u6570\u7EC4\u6216\u77E9\u9635\u7684\u8303\u56F4\u3002"
  8660. }
  8661. ]
  8662. },
  8663. "COVARIANCE_P": {
  8664. "d": "\u8BA1\u7B97\u6570\u636E\u96C6\u7684\u603B\u4F53\u534F\u65B9\u5DEE\u3002",
  8665. "a": "\u8BA1\u7B97\u6570\u636E\u96C6\u7684\u603B\u4F53\u534F\u65B9\u5DEE\u3002",
  8666. "p": [
  8667. {
  8668. "name": "\u6570\u636E_x",
  8669. "detail": "\u4EE3\u8868\u81EA\u53D8\u91CF\u6570\u636E\u6570\u7EC4\u6216\u77E9\u9635\u7684\u8303\u56F4\u3002"
  8670. },
  8671. {
  8672. "name": "\u6570\u636E_y",
  8673. "detail": "\u4EE3\u8868\u56E0\u53D8\u91CF\u6570\u636E\u6570\u7EC4\u6216\u77E9\u9635\u7684\u8303\u56F4\u3002"
  8674. }
  8675. ]
  8676. },
  8677. "COVARIANCE_S": {
  8678. "d": "\u8BA1\u7B97\u6570\u636E\u96C6\u7684\u6837\u672C\u534F\u65B9\u5DEE\u3002",
  8679. "a": "\u8BA1\u7B97\u6570\u636E\u96C6\u7684\u6837\u672C\u534F\u65B9\u5DEE\u3002",
  8680. "p": [
  8681. {
  8682. "name": "\u6570\u636E_x",
  8683. "detail": "\u4EE3\u8868\u81EA\u53D8\u91CF\u6570\u636E\u6570\u7EC4\u6216\u77E9\u9635\u7684\u8303\u56F4\u3002"
  8684. },
  8685. {
  8686. "name": "\u6570\u636E_y",
  8687. "detail": "\u4EE3\u8868\u56E0\u53D8\u91CF\u6570\u636E\u6570\u7EC4\u6216\u77E9\u9635\u7684\u8303\u56F4\u3002"
  8688. }
  8689. ]
  8690. },
  8691. "DEVSQ": {
  8692. "d": "\u57FA\u4E8E\u6837\u672C\u8BA1\u7B97\u5176\u504F\u5DEE\u7684\u5E73\u65B9\u548C\u3002",
  8693. "a": "\u57FA\u4E8E\u6837\u672C\u8BA1\u7B97\u5176\u504F\u5DEE\u7684\u5E73\u65B9\u548C\u3002",
  8694. "p": [
  8695. {
  8696. "name": "\u503C1",
  8697. "detail": "\u6837\u672C\u4E2D\u7684\u7B2C\u4E00\u9879\u503C\u6216\u8303\u56F4\u3002"
  8698. },
  8699. {
  8700. "name": "\u503C2, ...",
  8701. "detail": "[\u53EF\u9009] - \u6837\u672C\u4E2D\u5305\u542B\u7684\u5176\u4ED6\u503C\u6216\u8303\u56F4\u3002"
  8702. }
  8703. ]
  8704. },
  8705. "EXPON_DIST": {
  8706. "d": "\u8FD4\u56DE\u5E26\u6709\u6307\u5B9A Lambda \u548C\u6307\u5B9A\u503C\u7684\u6307\u6570\u5206\u5E03\u51FD\u6570\u7684\u503C\u3002",
  8707. "a": "\u8FD4\u56DE\u5E26\u6709\u6307\u5B9A Lambda \u548C\u6307\u5B9A\u503C\u7684\u6307\u6570\u5206\u5E03\u51FD\u6570\u7684\u503C\u3002",
  8708. "p": [
  8709. {
  8710. "name": "x",
  8711. "detail": "\u6307\u6570\u5206\u5E03\u51FD\u6570\u7684\u8F93\u5165\u503C\u3002"
  8712. },
  8713. {
  8714. "name": "lambda",
  8715. "detail": "\u7528\u4E8E\u6307\u5B9A\u6307\u6570\u5206\u5E03\u51FD\u6570\u7684 lambda \u503C\u3002"
  8716. },
  8717. {
  8718. "name": "cumulative",
  8719. "detail": "\u662F\u5426\u4F7F\u7528\u6307\u6570\u7D2F\u79EF\u5206\u5E03\u3002"
  8720. }
  8721. ]
  8722. },
  8723. "AVERAGEIF": {
  8724. "d": "\u6839\u636E\u6761\u4EF6\u8FD4\u56DE\u8303\u56F4\u7684\u5E73\u5747\u503C\u3002",
  8725. "a": "\u6839\u636E\u6761\u4EF6\u8FD4\u56DE\u8303\u56F4\u7684\u5E73\u5747\u503C\u3002",
  8726. "p": [
  8727. {
  8728. "name": "criteria_range",
  8729. "detail": "\u8981\u5BF9\u5176\u68C0\u67E5 criterion \u7684\u8303\u56F4\u3002"
  8730. },
  8731. {
  8732. "name": "criterion",
  8733. "detail": '\u8981\u5E94\u7528\u4E8E criteria_range \u7684\u6A21\u5F0F\u6216\u6D4B\u8BD5\u6761\u4EF6\u3002\n\n\u7B49\u4E8E\uFF1A"\u6587\u672C" \u6216 1 \u6216 "=\u6587\u672C" \u6216 "=1"\n\n\u5927\u4E8E\uFF1A">1"\n\n\u5927\u4E8E\u7B49\u4E8E\uFF1A">=1"\n\n\u5C0F\u4E8E\uFF1A"<1"\n\n\u5C0F\u4E8E\u7B49\u4E8E\uFF1A"<=1"\n\n\u4E0D\u7B49\u4E8E\uFF1A"<>1"\u6216"<>\u6587\u672C"'
  8734. },
  8735. {
  8736. "name": "average_range",
  8737. "detail": "[\u53EF\u9009] - \u8981\u8BA1\u7B97\u5E73\u5747\u503C\u7684\u8303\u56F4\u3002\u5982\u679C\u672A\u63D0\u4F9B\u6B64\u53C2\u6570\uFF0C\u5219\u6539\u7528 criteria_range \u6765\u8BA1\u7B97\u5E73\u5747\u503C\u3002"
  8738. }
  8739. ]
  8740. },
  8741. "AVERAGEIFS": {
  8742. "d": "\u6839\u636E\u591A\u9879\u6761\u4EF6\u8FD4\u56DE\u8303\u56F4\u7684\u5E73\u5747\u503C\u3002",
  8743. "a": "\u6839\u636E\u591A\u9879\u6761\u4EF6\u8FD4\u56DE\u8303\u56F4\u7684\u5E73\u5747\u503C\u3002",
  8744. "p": [
  8745. {
  8746. "name": "average_range",
  8747. "detail": "\u8981\u8BA1\u7B97\u5E73\u5747\u503C\u7684\u8303\u56F4\u3002"
  8748. },
  8749. {
  8750. "name": "criteria_range1",
  8751. "detail": "\u8981\u5BF9\u5176\u68C0\u67E5 criterion1 \u7684\u8303\u56F4\u3002"
  8752. },
  8753. {
  8754. "name": "criterion1",
  8755. "detail": "\u8981\u5E94\u7528\u4E8E criteria_range1 \u7684\u6A21\u5F0F\u6216\u6D4B\u8BD5\u6761\u4EF6\u3002"
  8756. },
  8757. {
  8758. "name": "criteria_range2, criterion2, ...",
  8759. "detail": "[\u53EF\u9009] - \u8981\u68C0\u67E5\u7684\u5176\u4ED6\u8303\u56F4\u548C\u6761\u4EF6\u3002"
  8760. }
  8761. ]
  8762. },
  8763. "PERMUT": {
  8764. "d": "\u8FD4\u56DE\u53EF\u4ECE\u6570\u5B57\u5BF9\u8C61\u4E2D\u9009\u62E9\u7684\u7ED9\u5B9A\u6570\u76EE\u5BF9\u8C61\u7684\u6392\u5217\u6570\u3002",
  8765. "a": "\u8FD4\u56DE\u53EF\u4ECE\u6570\u5B57\u5BF9\u8C61\u4E2D\u9009\u62E9\u7684\u7ED9\u5B9A\u6570\u76EE\u5BF9\u8C61\u7684\u6392\u5217\u6570\u3002",
  8766. "p": [
  8767. {
  8768. "name": "number",
  8769. "detail": "\u8868\u793A\u5BF9\u8C61\u4E2A\u6570\u7684\u6574\u6570\u3002"
  8770. },
  8771. {
  8772. "name": "number_chosen",
  8773. "detail": "\u8868\u793A\u6BCF\u4E2A\u6392\u5217\u4E2D\u5BF9\u8C61\u4E2A\u6570\u7684\u6574\u6570\u3002"
  8774. }
  8775. ]
  8776. },
  8777. "TRIMMEAN": {
  8778. "d": "\u5728\u6392\u9664\u6570\u636E\u96C6\u9AD8\u4F4E\u4E24\u7AEF\u7684\u90E8\u5206\u6570\u636E\u4E4B\u540E\u8BA1\u7B97\u6240\u5F97\u7684\u5747\u503C\u3002",
  8779. "a": "\u5728\u6392\u9664\u6570\u636E\u96C6\u9AD8\u4F4E\u4E24\u7AEF\u7684\u90E8\u5206\u6570\u636E\u4E4B\u540E\u8BA1\u7B97\u6240\u5F97\u7684\u5747\u503C\u3002",
  8780. "p": [
  8781. {
  8782. "name": "\u6570\u636E",
  8783. "detail": "\u5305\u542B\u76F8\u5173\u6570\u636E\u96C6\u7684\u6570\u7EC4\u6216\u8303\u56F4\u3002"
  8784. },
  8785. {
  8786. "name": "\u6392\u9664\u6BD4\u4F8B",
  8787. "detail": "\u8981\u4ECE\u6570\u636E\u96C6\u7684\u6781\u503C\u90E8\u5206\u6392\u9664\u7684\u6570\u636E\u5360\u6570\u636E\u96C6\u7684\u6BD4\u4F8B\u3002\n\n\u6392\u9664\u6BD4\u4F8B\u5FC5\u987B\u5927\u4E8E\u7B49\u4E8E0\u4E14\u5C0F\u4E8E1\u3002"
  8788. }
  8789. ]
  8790. },
  8791. "PERCENTILE_EXC": {
  8792. "d": "\u8FD4\u56DE\u6570\u7EC4\u7684 K \u767E\u5206\u70B9\u503C\uFF0CK \u4ECB\u4E8E 0 \u5230 1 \u4E4B\u95F4\uFF0C\u4E0D\u542B 0 \u4E0E 1\u3002",
  8793. "a": "\u8FD4\u56DE\u6570\u7EC4\u7684 K \u767E\u5206\u70B9\u503C\uFF0CK \u4ECB\u4E8E 0 \u5230 1 \u4E4B\u95F4\uFF0C\u4E0D\u542B 0 \u4E0E 1\u3002",
  8794. "p": [
  8795. {
  8796. "name": "array",
  8797. "detail": "\u5B9A\u4E49\u76F8\u5BF9\u4F4D\u7F6E\u7684\u6570\u7EC4\u6216\u6570\u636E\u533A\u57DF\u3002"
  8798. },
  8799. {
  8800. "name": "k",
  8801. "detail": "0 \u5230 1 \u4E4B\u95F4\u7684\u767E\u5206\u70B9\u503C\uFF0C\u4E0D\u5305\u542B 0 \u548C 1\u3002"
  8802. }
  8803. ]
  8804. },
  8805. "PERCENTILE_INC": {
  8806. "d": "\u8FD4\u56DE\u6570\u7EC4\u7684 K \u767E\u5206\u70B9\u503C\uFF0CK \u4ECB\u4E8E 0 \u5230 1 \u4E4B\u95F4\uFF0C\u5305\u542B 0 \u4E0E 1\u3002",
  8807. "a": "\u8FD4\u56DE\u6570\u7EC4\u7684 K \u767E\u5206\u70B9\u503C\uFF0CK \u4ECB\u4E8E 0 \u5230 1 \u4E4B\u95F4\uFF0C\u5305\u542B 0 \u4E0E 1\u3002",
  8808. "p": [
  8809. {
  8810. "name": "array",
  8811. "detail": "\u5B9A\u4E49\u76F8\u5BF9\u4F4D\u7F6E\u7684\u6570\u7EC4\u6216\u6570\u636E\u533A\u57DF\u3002"
  8812. },
  8813. {
  8814. "name": "k",
  8815. "detail": "0 \u5230 1 \u4E4B\u95F4\u7684\u767E\u5206\u70B9\u503C\uFF0C\u5305\u542B 0 \u548C 1\u3002"
  8816. }
  8817. ]
  8818. },
  8819. "PEARSON": {
  8820. "d": "\u8FD4\u56DE\u76AE\u5C14\u751F(Pearson)\u4E58\u79EF\u77E9\u76F8\u5173\u7CFB\u6570 r\u3002",
  8821. "a": "\u8FD4\u56DE\u76AE\u5C14\u751F(Pearson)\u4E58\u79EF\u77E9\u76F8\u5173\u7CFB\u6570 r\u3002",
  8822. "p": [
  8823. {
  8824. "name": "\u6570\u636E_x",
  8825. "detail": "\u4EE3\u8868\u81EA\u53D8\u91CF\u6570\u636E\u6570\u7EC4\u6216\u77E9\u9635\u7684\u8303\u56F4\u3002"
  8826. },
  8827. {
  8828. "name": "\u6570\u636E_y",
  8829. "detail": "\u4EE3\u8868\u56E0\u53D8\u91CF\u6570\u636E\u6570\u7EC4\u6216\u77E9\u9635\u7684\u8303\u56F4\u3002"
  8830. }
  8831. ]
  8832. },
  8833. "NORM_S_INV": {
  8834. "d": "\u8FD4\u56DE\u6807\u51C6\u6B63\u6001\u7D2F\u79EF\u5206\u5E03\u51FD\u6570\u7684\u53CD\u51FD\u6570\u503C\u3002 \u8BE5\u5206\u5E03\u7684\u5E73\u5747\u503C\u4E3A 0\uFF0C\u6807\u51C6\u504F\u5DEE\u4E3A 1\u3002",
  8835. "a": "\u8FD4\u56DE\u6807\u51C6\u6B63\u6001\u7D2F\u79EF\u5206\u5E03\u51FD\u6570\u7684\u53CD\u51FD\u6570\u503C\u3002 \u8BE5\u5206\u5E03\u7684\u5E73\u5747\u503C\u4E3A 0\uFF0C\u6807\u51C6\u504F\u5DEE\u4E3A 1\u3002",
  8836. "p": [
  8837. {
  8838. "name": "probability",
  8839. "detail": "\u5BF9\u5E94\u4E8E\u6B63\u6001\u5206\u5E03\u7684\u6982\u7387\u3002"
  8840. }
  8841. ]
  8842. },
  8843. "NORM_S_DIST": {
  8844. "d": "\u8FD4\u56DE\u6807\u51C6\u6B63\u6001\u5206\u5E03\u51FD\u6570\uFF08\u8BE5\u5206\u5E03\u7684\u5E73\u5747\u503C\u4E3A 0\uFF0C\u6807\u51C6\u504F\u5DEE\u4E3A 1\uFF09\u3002",
  8845. "a": "\u8FD4\u56DE\u6807\u51C6\u6B63\u6001\u5206\u5E03\u51FD\u6570\uFF08\u8BE5\u5206\u5E03\u7684\u5E73\u5747\u503C\u4E3A 0\uFF0C\u6807\u51C6\u504F\u5DEE\u4E3A 1\uFF09\u3002",
  8846. "p": [
  8847. {
  8848. "name": "z",
  8849. "detail": "\u9700\u8981\u8BA1\u7B97\u5176\u5206\u5E03\u7684\u6570\u503C\u3002"
  8850. },
  8851. {
  8852. "name": "cumulative",
  8853. "detail": "\u51B3\u5B9A\u51FD\u6570\u5F62\u5F0F\u7684\u903B\u8F91\u503C\u3002\n\n\u5982\u679C\u4E3A TRUE()\uFF0C\u5219\u8FD4\u56DE\u7D2F\u79EF\u5206\u5E03\u51FD\u6570\uFF1B\n\n\u5982\u679C\u4E3A FALSE()\uFF0C\u5219\u8FD4\u56DE\u6982\u7387\u5BC6\u5EA6\u51FD\u6570\u3002"
  8854. }
  8855. ]
  8856. },
  8857. "NORM_INV": {
  8858. "d": "\u8FD4\u56DE\u6307\u5B9A\u5E73\u5747\u503C\u548C\u6807\u51C6\u504F\u5DEE\u7684\u6B63\u6001\u7D2F\u79EF\u5206\u5E03\u51FD\u6570\u7684\u53CD\u51FD\u6570\u503C\u3002",
  8859. "a": "\u8FD4\u56DE\u6307\u5B9A\u5E73\u5747\u503C\u548C\u6807\u51C6\u504F\u5DEE\u7684\u6B63\u6001\u7D2F\u79EF\u5206\u5E03\u51FD\u6570\u7684\u53CD\u51FD\u6570\u503C\u3002",
  8860. "p": [
  8861. {
  8862. "name": "probability",
  8863. "detail": "\u5BF9\u5E94\u4E8E\u6B63\u6001\u5206\u5E03\u7684\u6982\u7387\u3002"
  8864. },
  8865. {
  8866. "name": "mean",
  8867. "detail": "\u5206\u5E03\u7684\u7B97\u672F\u5E73\u5747\u503C\u3002"
  8868. },
  8869. {
  8870. "name": "standard_dev",
  8871. "detail": "\u5206\u5E03\u7684\u6807\u51C6\u504F\u5DEE\u3002"
  8872. }
  8873. ]
  8874. },
  8875. "NORM_DIST": {
  8876. "d": "\u8FD4\u56DE\u6307\u5B9A\u5E73\u5747\u503C\u548C\u6807\u51C6\u504F\u5DEE\u7684\u6B63\u6001\u5206\u5E03\u51FD\u6570\u3002",
  8877. "a": "\u8FD4\u56DE\u6307\u5B9A\u5E73\u5747\u503C\u548C\u6807\u51C6\u504F\u5DEE\u7684\u6B63\u6001\u5206\u5E03\u51FD\u6570\u3002",
  8878. "p": [
  8879. {
  8880. "name": "x",
  8881. "detail": "\u9700\u8981\u8BA1\u7B97\u5176\u5206\u5E03\u7684\u6570\u503C\u3002"
  8882. },
  8883. {
  8884. "name": "mean",
  8885. "detail": "\u5206\u5E03\u7684\u7B97\u672F\u5E73\u5747\u503C\u3002"
  8886. },
  8887. {
  8888. "name": "standard_dev",
  8889. "detail": "\u5206\u5E03\u7684\u6807\u51C6\u504F\u5DEE\u3002"
  8890. },
  8891. {
  8892. "name": "cumulative",
  8893. "detail": "\u51B3\u5B9A\u51FD\u6570\u5F62\u5F0F\u7684\u903B\u8F91\u503C\u3002\n\n\u5982\u679C\u4E3A TRUE()\uFF0C\u5219\u8FD4\u56DE\u7D2F\u79EF\u5206\u5E03\u51FD\u6570\uFF1B\n\n\u5982\u679C\u4E3A FALSE()\uFF0C\u5219\u8FD4\u56DE\u6982\u7387\u5BC6\u5EA6\u51FD\u6570\u3002"
  8894. }
  8895. ]
  8896. },
  8897. "NEGBINOM_DIST": {
  8898. "d": "\u8FD4\u56DE\u8D1F\u4E8C\u9879\u5F0F\u5206\u5E03\u3002",
  8899. "a": "\u8FD4\u56DE\u8D1F\u4E8C\u9879\u5F0F\u5206\u5E03\u3002",
  8900. "p": [
  8901. {
  8902. "name": "number_f",
  8903. "detail": "\u8981\u6A21\u62DF\u7684\u5931\u8D25\u6B21\u6570\u3002"
  8904. },
  8905. {
  8906. "name": "number_s",
  8907. "detail": "\u8981\u6A21\u62DF\u7684\u6210\u529F\u6B21\u6570\u3002"
  8908. },
  8909. {
  8910. "name": "probability_s",
  8911. "detail": "\u4EFB\u4E00\u6B21\u7ED9\u5B9A\u68C0\u9A8C\u7684\u6210\u529F\u6982\u7387\u3002"
  8912. },
  8913. {
  8914. "name": "cumulative",
  8915. "detail": "\u51B3\u5B9A\u51FD\u6570\u5F62\u5F0F\u7684\u903B\u8F91\u503C\u3002\n\n\u5982\u679C\u4E3A TRUE()\uFF0C\u5219\u8FD4\u56DE\u7D2F\u79EF\u5206\u5E03\u51FD\u6570\uFF1B\n\n\u5982\u679C\u4E3A FALSE()\uFF0C\u5219\u8FD4\u56DE\u6982\u7387\u5BC6\u5EA6\u51FD\u6570\u3002"
  8916. }
  8917. ]
  8918. },
  8919. "MINA": {
  8920. "d": "\u8FD4\u56DE\u6570\u636E\u96C6\u4E2D\u7684\u6700\u5C0F\u6570\u503C\u3002",
  8921. "a": "\u8FD4\u56DE\u6570\u636E\u96C6\u4E2D\u7684\u6700\u5C0F\u6570\u503C\u3002",
  8922. "p": [
  8923. {
  8924. "name": "\u503C1",
  8925. "detail": "\u8BA1\u7B97\u6700\u5C0F\u503C\u65F6\u6240\u7528\u7684\u7B2C\u4E00\u4E2A\u503C\u6216\u8303\u56F4\u3002"
  8926. },
  8927. {
  8928. "name": "\u503C2",
  8929. "detail": "[\u53EF\u9009] - \u5728\u8BA1\u7B97\u6700\u5C0F\u503C\u65F6\u8981\u8003\u8651\u7684\u5176\u4ED6\u6570\u503C\u6216\u8303\u56F4\u3002"
  8930. }
  8931. ]
  8932. },
  8933. "MIN": {
  8934. "d": "\u8FD4\u56DE\u6570\u503C\u6570\u636E\u96C6\u4E2D\u7684\u6700\u5C0F\u503C\u3002",
  8935. "a": "\u8FD4\u56DE\u6570\u503C\u6570\u636E\u96C6\u4E2D\u7684\u6700\u5C0F\u503C\u3002",
  8936. "p": [
  8937. {
  8938. "name": "\u503C1",
  8939. "detail": "\u8BA1\u7B97\u6700\u5C0F\u503C\u65F6\u6240\u7528\u7684\u7B2C\u4E00\u4E2A\u503C\u6216\u8303\u56F4\u3002"
  8940. },
  8941. {
  8942. "name": "\u503C2",
  8943. "detail": "[\u53EF\u9009] - \u5728\u8BA1\u7B97\u6700\u5C0F\u503C\u65F6\u8981\u8003\u8651\u7684\u5176\u4ED6\u6570\u503C\u6216\u8303\u56F4\u3002"
  8944. }
  8945. ]
  8946. },
  8947. "MEDIAN": {
  8948. "d": "\u8FD4\u56DE\u6570\u503C\u6570\u636E\u96C6\u4E2D\u7684\u4E2D\u503C\u3002",
  8949. "a": "\u8FD4\u56DE\u6570\u503C\u6570\u636E\u96C6\u4E2D\u7684\u4E2D\u503C\u3002",
  8950. "p": [
  8951. {
  8952. "name": "\u503C1",
  8953. "detail": "\u8BA1\u7B97\u4E2D\u503C\u65F6\u6240\u7528\u7684\u7B2C\u4E00\u4E2A\u6570\u503C\u6216\u8303\u56F4\u3002"
  8954. },
  8955. {
  8956. "name": "\u503C2",
  8957. "detail": "[\u53EF\u9009] - \u5728\u8BA1\u7B97\u4E2D\u503C\u65F6\u8981\u8003\u8651\u7684\u5176\u4ED6\u6570\u503C\u6216\u8303\u56F4\u3002"
  8958. }
  8959. ]
  8960. },
  8961. "MAXA": {
  8962. "d": "\u8FD4\u56DE\u6570\u636E\u96C6\u4E2D\u7684\u6700\u5927\u6570\u503C\u3002",
  8963. "a": "\u8FD4\u56DE\u6570\u636E\u96C6\u4E2D\u7684\u6700\u5927\u6570\u503C\u3002",
  8964. "p": [
  8965. {
  8966. "name": "\u503C1",
  8967. "detail": "\u8BA1\u7B97\u6700\u5927\u503C\u65F6\u6240\u7528\u7684\u7B2C\u4E00\u4E2A\u503C\u6216\u8303\u56F4\u3002"
  8968. },
  8969. {
  8970. "name": "\u503C2, ...",
  8971. "detail": "[\u53EF\u9009] - \u5728\u8BA1\u7B97\u6700\u5927\u503C\u65F6\u8981\u8003\u8651\u7684\u5176\u4ED6\u6570\u503C\u6216\u8303\u56F4\u3002"
  8972. }
  8973. ]
  8974. },
  8975. "MAX": {
  8976. "d": "\u8FD4\u56DE\u6570\u503C\u6570\u636E\u96C6\u4E2D\u7684\u6700\u5927\u503C\u3002",
  8977. "a": "\u8FD4\u56DE\u6570\u503C\u6570\u636E\u96C6\u4E2D\u7684\u6700\u5927\u503C\u3002",
  8978. "p": [
  8979. {
  8980. "name": "\u503C1",
  8981. "detail": "\u8BA1\u7B97\u6700\u5927\u503C\u65F6\u6240\u7528\u7684\u7B2C\u4E00\u4E2A\u503C\u6216\u8303\u56F4\u3002"
  8982. },
  8983. {
  8984. "name": "\u503C2",
  8985. "detail": "[\u53EF\u9009] - \u5728\u8BA1\u7B97\u6700\u5927\u503C\u65F6\u8981\u8003\u8651\u7684\u5176\u4ED6\u6570\u503C\u6216\u8303\u56F4\u3002"
  8986. }
  8987. ]
  8988. },
  8989. "LOGNORM_INV": {
  8990. "d": "\u8FD4\u56DE x \u7684\u5BF9\u6570\u7D2F\u79EF\u5206\u5E03\u51FD\u6570\u7684\u53CD\u51FD\u6570\u503C\u3002",
  8991. "a": "\u8FD4\u56DE x \u7684\u5BF9\u6570\u7D2F\u79EF\u5206\u5E03\u51FD\u6570\u7684\u53CD\u51FD\u6570\u503C\u3002",
  8992. "p": [
  8993. {
  8994. "name": "probability",
  8995. "detail": "\u4E0E\u5BF9\u6570\u5206\u5E03\u76F8\u5173\u7684\u6982\u7387\uFF0C\u4ECB\u4E8E 0 \u4E0E 1 \u4E4B\u95F4\uFF08\u4E0D\u542B 0 \u4E0E 1\uFF09\u3002"
  8996. },
  8997. {
  8998. "name": "mean",
  8999. "detail": "ln(x) \u7684\u5E73\u5747\u503C\u3002"
  9000. },
  9001. {
  9002. "name": "standard_dev",
  9003. "detail": "ln(x) \u7684\u6807\u51C6\u504F\u5DEE\uFF0C\u6B63\u6570\u3002"
  9004. }
  9005. ]
  9006. },
  9007. "LOGNORM_DIST": {
  9008. "d": "\u8FD4\u56DE x \u7684\u5BF9\u6570\u5206\u5E03\u51FD\u6570\u3002",
  9009. "a": "\u8FD4\u56DE x \u7684\u5BF9\u6570\u5206\u5E03\u51FD\u6570\u3002",
  9010. "p": [
  9011. {
  9012. "name": "x",
  9013. "detail": "\u7528\u6765\u8BA1\u7B97\u51FD\u6570\u7684\u503C\u3002"
  9014. },
  9015. {
  9016. "name": "mean",
  9017. "detail": "ln(x) \u7684\u5E73\u5747\u503C\u3002"
  9018. },
  9019. {
  9020. "name": "standard_dev",
  9021. "detail": "ln(x) \u7684\u6807\u51C6\u504F\u5DEE\uFF0C\u6B63\u6570\u3002"
  9022. },
  9023. {
  9024. "name": "cumulative",
  9025. "detail": "\u51B3\u5B9A\u51FD\u6570\u5F62\u5F0F\u7684\u903B\u8F91\u503C\u3002\n\n\u5982\u679C\u4E3A TRUE()\uFF0C\u5219\u8FD4\u56DE\u7D2F\u79EF\u5206\u5E03\u51FD\u6570\uFF1B\n\n\u5982\u679C\u4E3A FALSE()\uFF0C\u5219\u8FD4\u56DE\u6982\u7387\u5BC6\u5EA6\u51FD\u6570\u3002"
  9026. }
  9027. ]
  9028. },
  9029. "Z_TEST": {
  9030. "d": "\u8FD4\u56DE z \u68C0\u9A8C\u7684\u5355\u5C3E P \u503C\u3002",
  9031. "a": "\u8FD4\u56DE z \u68C0\u9A8C\u7684\u5355\u5C3E P \u503C\u3002",
  9032. "p": [
  9033. {
  9034. "name": "array",
  9035. "detail": "\u7528\u6765\u68C0\u9A8C x \u7684\u6570\u7EC4\u6216\u6570\u636E\u533A\u57DF\u3002"
  9036. },
  9037. {
  9038. "name": "x",
  9039. "detail": "\u8981\u6D4B\u8BD5\u7684\u503C\u3002"
  9040. },
  9041. {
  9042. "name": "sigma",
  9043. "detail": "[\u53EF\u9009] - \u603B\u4F53\uFF08\u5DF2\u77E5\uFF09\u6807\u51C6\u504F\u5DEE\u3002 \u5982\u679C\u7701\u7565\uFF0C\u5219\u4F7F\u7528\u6837\u672C\u6807\u51C6\u504F\u5DEE\u3002"
  9044. }
  9045. ]
  9046. },
  9047. "PROB": {
  9048. "d": "\u8FD4\u56DE\u533A\u57DF\u4E2D\u7684\u6570\u503C\u843D\u5728\u6307\u5B9A\u533A\u95F4\u5185\u7684\u6982\u7387\u3002",
  9049. "a": "\u8FD4\u56DE\u533A\u57DF\u4E2D\u7684\u6570\u503C\u843D\u5728\u6307\u5B9A\u533A\u95F4\u5185\u7684\u6982\u7387\u3002",
  9050. "p": [
  9051. {
  9052. "name": "x_range",
  9053. "detail": "\u5177\u6709\u5404\u81EA\u76F8\u5E94\u6982\u7387\u503C\u7684 x \u6570\u503C\u533A\u57DF\u3002"
  9054. },
  9055. {
  9056. "name": "prob_range",
  9057. "detail": "\u4E0E x_range \u4E2D\u7684\u503C\u76F8\u5173\u8054\u7684\u4E00\u7EC4\u6982\u7387\u503C\u3002"
  9058. },
  9059. {
  9060. "name": "lower_limit",
  9061. "detail": "\u8981\u8BA1\u7B97\u5176\u6982\u7387\u7684\u6570\u503C\u4E0B\u754C\u3002"
  9062. },
  9063. {
  9064. "name": "upper_limit",
  9065. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u503C\u4E3A\u4E0B\u754C] - \u8981\u8BA1\u7B97\u5176\u6982\u7387\u7684\u53EF\u9009\u6570\u503C\u4E0A\u754C\u3002\n\n\u5982\u679C\u7701\u7565\u4E0A\u754C\uFF0CPROB\u5219\u8BA1\u7B97\u968F\u673A\u9009\u53D6\u76F8\u5E94\u503C\u7684\u6B21\u6570\u6070\u597D\u7B49\u4E8E\u4E0B\u754C\u7684\u6982\u7387\u3002"
  9066. }
  9067. ]
  9068. },
  9069. "QUARTILE_EXC": {
  9070. "d": "\u57FA\u4E8E 0 \u5230 1 \u4E4B\u95F4\uFF08\u4E0D\u5305\u62EC 0 \u548C 1\uFF09\u7684\u767E\u5206\u70B9\u503C\u8FD4\u56DE\u6570\u636E\u96C6\u7684\u56DB\u5206\u4F4D\u6570\u3002",
  9071. "a": "\u57FA\u4E8E 0 \u5230 1 \u4E4B\u95F4\uFF08\u4E0D\u5305\u62EC 0 \u548C 1\uFF09\u7684\u767E\u5206\u70B9\u503C\u8FD4\u56DE\u6570\u636E\u96C6\u7684\u56DB\u5206\u4F4D\u6570\u3002",
  9072. "p": [
  9073. {
  9074. "name": "array",
  9075. "detail": "\u8981\u6C42\u5F97\u56DB\u5206\u4F4D\u6570\u503C\u7684\u6570\u7EC4\u6216\u6570\u5B57\u578B\u5355\u5143\u683C\u533A\u57DF\u3002"
  9076. },
  9077. {
  9078. "name": "quart",
  9079. "detail": "\u8981\u8FD4\u56DE\u7B2C\u51E0\u4E2A\u56DB\u5206\u4F4D\u503C\u3002\n\n1\u8FD4\u56DE\u6570\u636E\u4E2D\u6700\u9760\u8FD1\u7B2C\u4E00\u4E2A\u56DB\u5206\u4F4D\u503C\u7684\u503C\uFF0825%\u6807\u8BB0\uFF09\u3002\n\n2\u8FD4\u56DE\u6570\u636E\u4E2D\u6700\u63A5\u8FD1\u4E2D\u503C\u7684\u503C\uFF0850%\u6807\u8BB0\uFF09\u3002\n\n3\u8FD4\u56DE\u6570\u636E\u4E2D\u6700\u63A5\u8FD1\u7B2C\u4E09\u4E2A\u56DB\u5206\u4F4D\u503C\u7684\u503C\uFF0875%\u6807\u8BB0\uFF09\u3002"
  9080. }
  9081. ]
  9082. },
  9083. "QUARTILE_INC": {
  9084. "d": "\u6839\u636E 0 \u5230 1 \u4E4B\u95F4\u7684\u767E\u5206\u70B9\u503C\uFF08\u5305\u542B 0 \u548C 1\uFF09\u8FD4\u56DE\u6570\u636E\u96C6\u7684\u56DB\u5206\u4F4D\u6570\u3002",
  9085. "a": "\u6839\u636E 0 \u5230 1 \u4E4B\u95F4\u7684\u767E\u5206\u70B9\u503C\uFF08\u5305\u542B 0 \u548C 1\uFF09\u8FD4\u56DE\u6570\u636E\u96C6\u7684\u56DB\u5206\u4F4D\u6570\u3002",
  9086. "p": [
  9087. {
  9088. "name": "array",
  9089. "detail": "\u8981\u6C42\u5F97\u56DB\u5206\u4F4D\u6570\u503C\u7684\u6570\u7EC4\u6216\u6570\u5B57\u578B\u5355\u5143\u683C\u533A\u57DF\u3002"
  9090. },
  9091. {
  9092. "name": "quart",
  9093. "detail": "\u8981\u8FD4\u56DE\u7B2C\u51E0\u4E2A\u56DB\u5206\u4F4D\u503C\u3002\n\n0\u8FD4\u56DE\u6570\u636E\u4E2D\u7684\u6700\u5C0F\u503C\uFF080%\u6807\u8BB0\uFF09\u3002\n\n1\u8FD4\u56DE\u6570\u636E\u4E2D\u6700\u9760\u8FD1\u7B2C\u4E00\u4E2A\u56DB\u5206\u4F4D\u503C\u7684\u503C\uFF0825%\u6807\u8BB0\uFF09\u3002\n\n2\u8FD4\u56DE\u6570\u636E\u4E2D\u6700\u63A5\u8FD1\u4E2D\u503C\u7684\u503C\uFF0850%\u6807\u8BB0\uFF09\u3002\n\n3\u8FD4\u56DE\u6570\u636E\u4E2D\u6700\u63A5\u8FD1\u7B2C\u4E09\u4E2A\u56DB\u5206\u4F4D\u503C\u7684\u503C\uFF0875%\u6807\u8BB0\uFF09\u3002\n\n4\u8FD4\u56DE\u6570\u636E\u4E2D\u7684\u6700\u5927\u503C\uFF08100%\u6807\u8BB0\uFF09\u3002"
  9094. }
  9095. ]
  9096. },
  9097. "POISSON_DIST": {
  9098. "d": "\u8FD4\u56DE\u6CCA\u677E\u5206\u5E03\u3002",
  9099. "a": "\u8FD4\u56DE\u6CCA\u677E\u5206\u5E03\u3002",
  9100. "p": [
  9101. {
  9102. "name": "x",
  9103. "detail": "\u4E8B\u4EF6\u6570\u3002"
  9104. },
  9105. {
  9106. "name": "mean",
  9107. "detail": "\u671F\u671B\u503C\u3002\u975E\u8D1F\u6570"
  9108. },
  9109. {
  9110. "name": "cumulative",
  9111. "detail": "\u4E00\u903B\u8F91\u503C\uFF0C\u786E\u5B9A\u6240\u8FD4\u56DE\u7684\u6982\u7387\u5206\u5E03\u7684\u5F62\u5F0F\u3002\n\n\u5982\u679C\u4E3A TRUE()\uFF0C\u5219\u8FD4\u56DE\u53D1\u751F\u7684\u968F\u673A\u4E8B\u4EF6\u6570\u5728\u96F6\uFF08\u542B\u96F6\uFF09\u548C x\uFF08\u542B x\uFF09\u4E4B\u95F4\u7684\u7D2F\u79EF\u6CCA\u677E\u6982\u7387\uFF1B\n\n\u5982\u679C\u4E3A FALSE()\uFF0C\u5219\u8FD4\u56DE\u53D1\u751F\u7684\u4E8B\u4EF6\u6570\u6B63\u597D\u662F x \u7684\u6CCA\u677E\u6982\u7387\u5BC6\u5EA6\u51FD\u6570\u3002"
  9112. }
  9113. ]
  9114. },
  9115. "RSQ": {
  9116. "d": "\u8FD4\u56DE\u76AE\u5C14\u751F(Pearson)\u4E58\u79EF\u77E9\u76F8\u5173\u7CFB\u6570 r \u7684\u5E73\u65B9\u3002",
  9117. "a": "\u8FD4\u56DE\u76AE\u5C14\u751F(Pearson)\u4E58\u79EF\u77E9\u76F8\u5173\u7CFB\u6570 r \u7684\u5E73\u65B9\u3002",
  9118. "p": [
  9119. {
  9120. "name": "\u6570\u636E_y",
  9121. "detail": "\u4EE3\u8868\u56E0\u53D8\u91CF\u6570\u636E\u6570\u7EC4\u6216\u77E9\u9635\u7684\u8303\u56F4\u3002"
  9122. },
  9123. {
  9124. "name": "\u6570\u636E_x",
  9125. "detail": "\u4EE3\u8868\u81EA\u53D8\u91CF\u6570\u636E\u6570\u7EC4\u6216\u77E9\u9635\u7684\u8303\u56F4\u3002"
  9126. }
  9127. ]
  9128. },
  9129. "T_DIST": {
  9130. "d": "\u8FD4\u56DE\u5B66\u751F\u7684\u5DE6\u5C3E t \u5206\u5E03\u3002",
  9131. "a": "\u8FD4\u56DE\u5B66\u751F\u7684\u5DE6\u5C3E t \u5206\u5E03\u3002",
  9132. "p": [
  9133. {
  9134. "name": "x",
  9135. "detail": "T-\u5206\u5E03\u51FD\u6570\u7684\u8F93\u5165\u3002"
  9136. },
  9137. {
  9138. "name": "degrees_freedom",
  9139. "detail": "\u81EA\u7531\u5EA6\u6570\u503C\u3002"
  9140. },
  9141. {
  9142. "name": "tails",
  9143. "detail": "\u51B3\u5B9A\u51FD\u6570\u5F62\u5F0F\u7684\u903B\u8F91\u503C\u3002\n\n\u5982\u679C cumulative \u4E3A TRUE()\uFF0C\u5219 HYPGEOM.DIST \u8FD4\u56DE\u7D2F\u79EF\u5206\u5E03\u51FD\u6570\uFF1B\n\n\u5982\u679C\u4E3A FALSE()\uFF0C\u5219\u8FD4\u56DE\u6982\u7387\u5BC6\u5EA6\u51FD\u6570\u3002"
  9144. }
  9145. ]
  9146. },
  9147. "T_DIST_2T": {
  9148. "d": "\u8FD4\u56DE\u5B66\u751F\u7684\u53CC\u5C3E t \u5206\u5E03\u3002",
  9149. "a": "\u8FD4\u56DE\u5B66\u751F\u7684\u53CC\u5C3E t \u5206\u5E03\u3002",
  9150. "p": [
  9151. {
  9152. "name": "x",
  9153. "detail": "T-\u5206\u5E03\u51FD\u6570\u7684\u8F93\u5165\u3002"
  9154. },
  9155. {
  9156. "name": "degrees_freedom",
  9157. "detail": "\u81EA\u7531\u5EA6\u6570\u503C\u3002"
  9158. }
  9159. ]
  9160. },
  9161. "T_DIST_RT": {
  9162. "d": "\u8FD4\u56DE\u5B66\u751F\u7684\u53F3\u5C3E t \u5206\u5E03\u3002",
  9163. "a": "\u8FD4\u56DE\u5B66\u751F\u7684\u53F3\u5C3E t \u5206\u5E03\u3002",
  9164. "p": [
  9165. {
  9166. "name": "x",
  9167. "detail": "T-\u5206\u5E03\u51FD\u6570\u7684\u8F93\u5165\u3002"
  9168. },
  9169. {
  9170. "name": "degrees_freedom",
  9171. "detail": "\u81EA\u7531\u5EA6\u6570\u503C\u3002"
  9172. }
  9173. ]
  9174. },
  9175. "T_INV": {
  9176. "d": "\u8FD4\u56DE\u5B66\u751F\u7684 t \u5206\u5E03\u7684\u5DE6\u5C3E\u53CD\u51FD\u6570\u3002",
  9177. "a": "\u8FD4\u56DE\u5B66\u751F\u7684 t \u5206\u5E03\u7684\u5DE6\u5C3E\u53CD\u51FD\u6570\u3002",
  9178. "p": [
  9179. {
  9180. "name": "probability",
  9181. "detail": "\u4E0E\u5B66\u751F\u7684 t \u5206\u5E03\u76F8\u5173\u7684\u6982\u7387\u3002\n\n\u5FC5\u987B\u5927\u4E8E 0 \u4E14\u5C0F\u4E8E 1\u3002"
  9182. },
  9183. {
  9184. "name": "deg_freedom",
  9185. "detail": "\u81EA\u7531\u5EA6\u6570\u503C\u3002\n\n\u5982\u679C\u6240\u63D0\u4F9B\u7684\u53C2\u6570\u4E0D\u662F\u6574\u6570\uFF0C\u5C06\u622A\u53D6\u5176\u6574\u6570\u90E8\u5206\u3002\n\n\u5FC5\u987B\u5927\u4E8E\u7B49\u4E8E 1\u3002"
  9186. }
  9187. ]
  9188. },
  9189. "T_INV_2T": {
  9190. "d": "\u8FD4\u56DE\u5B66\u751F t \u5206\u5E03\u7684\u53CC\u5C3E\u53CD\u51FD\u6570\u3002",
  9191. "a": "\u8FD4\u56DE\u5B66\u751F t \u5206\u5E03\u7684\u53CC\u5C3E\u53CD\u51FD\u6570\u3002",
  9192. "p": [
  9193. {
  9194. "name": "probability",
  9195. "detail": "\u4E0E\u5B66\u751F\u7684 t \u5206\u5E03\u76F8\u5173\u7684\u6982\u7387\u3002\n\n\u5FC5\u987B\u5927\u4E8E 0 \u4E14\u5C0F\u4E8E1\u3002"
  9196. },
  9197. {
  9198. "name": "deg_freedom",
  9199. "detail": "\u81EA\u7531\u5EA6\u6570\u503C\u3002\n\n\u5982\u679C\u6240\u63D0\u4F9B\u7684\u53C2\u6570\u4E0D\u662F\u6574\u6570\uFF0C\u5C06\u622A\u53D6\u5176\u6574\u6570\u90E8\u5206\u3002\n\n\u5FC5\u987B\u5927\u4E8E\u7B49\u4E8E 1\u3002"
  9200. }
  9201. ]
  9202. },
  9203. "T_TEST": {
  9204. "d": "\u8FD4\u56DE\u4E0Et-\u68C0\u9A8C\u76F8\u5173\u7684\u6982\u7387\u3002\u7528\u4E8E\u5224\u65AD\u4E24\u4E2A\u6837\u672C\u662F\u5426\u53EF\u80FD\u662F\u51FA\u81EA\u5E73\u5747\u503C\u76F8\u540C\u7684\u4E24\u4E2A\u6837\u672C\u603B\u4F53\u3002",
  9205. "a": "\u8FD4\u56DE\u4E0Et-\u68C0\u9A8C\u76F8\u5173\u7684\u6982\u7387\u3002\u7528\u4E8E\u5224\u65AD\u4E24\u4E2A\u6837\u672C\u662F\u5426\u53EF\u80FD\u662F\u51FA\u81EA\u5E73\u5747\u503C\u76F8\u540C\u7684\u4E24\u4E2A\u6837\u672C\u603B\u4F53\u3002",
  9206. "p": [
  9207. {
  9208. "name": "array1",
  9209. "detail": "\u5C06\u7528\u4E8E t \u68C0\u9A8C\u7684\u7B2C\u4E00\u4E2A\u6570\u636E\u6837\u672C\u6216\u7B2C\u4E00\u7EC4\u5355\u5143\u683C\u3002"
  9210. },
  9211. {
  9212. "name": "array2",
  9213. "detail": "\u5C06\u7528\u4E8E t \u68C0\u9A8C\u7684\u7B2C\u4E8C\u4E2A\u6570\u636E\u6837\u672C\u6216\u7B2C\u4E8C\u7EC4\u5355\u5143\u683C\u3002"
  9214. },
  9215. {
  9216. "name": "tails",
  9217. "detail": "\u6307\u5B9A\u5206\u5E03\u7684\u5C3E\u6570\u3002\n\n\u5982\u679C\u4E3A 1\uFF1A\u4F7F\u7528\u5355\u5C3E\u5206\u5E03\u3002\n\n\u5982\u679C\u4E3A 2\uFF1A\u4F7F\u7528\u53CC\u5C3E\u5206\u5E03\u3002"
  9218. },
  9219. {
  9220. "name": "type",
  9221. "detail": "\u6307\u5B9A t \u68C0\u9A8C\u7684\u7C7B\u578B\u3002\n\n\u5982\u679C\u4E3A 1\uFF1A\u6267\u884C\u914D\u5BF9\u68C0\u9A8C\u3002\n\n\u5982\u679C\u4E3A 2\uFF1A\u6267\u884C\u53CC\u6837\u672C\u7B49\u65B9\u5DEE\uFF08\u540C\u65B9\u5DEE\uFF09\u68C0\u9A8C\u3002\n\n\u5982\u679C\u4E3A3\uFF1A\u6267\u884C\u53CC\u6837\u672C\u4E0D\u7B49\u65B9\u5DEE\uFF08\u5F02\u65B9\u5DEE\uFF09\u68C0\u9A8C\u3002"
  9222. }
  9223. ]
  9224. },
  9225. "F_DIST": {
  9226. "d": "\u7ED9\u5B9A\u8F93\u5165\u503C x\uFF0C\u8BA1\u7B97\u4E24\u4E2A\u6570\u636E\u96C6\u7684\u5DE6\u5C3E F \u6982\u7387\u5206\u5E03\uFF08\u5DEE\u5F02\u7A0B\u5EA6\uFF09\u3002\u6B64\u5206\u5E03\u4E5F\u79F0\u4E3A Fisher-Snedecor \u5206\u5E03\u6216 Snedecor F \u5206\u5E03\u3002",
  9227. "a": "\u7ED9\u5B9A\u8F93\u5165\u503C x",
  9228. "p": [
  9229. {
  9230. "name": "x",
  9231. "detail": "\u7528\u6765\u8BA1\u7B97\u51FD\u6570\u7684\u503C\u3002"
  9232. },
  9233. {
  9234. "name": "degrees_freedom1",
  9235. "detail": "\u5206\u5B50\u81EA\u7531\u5EA6\u3002"
  9236. },
  9237. {
  9238. "name": "degrees_freedom2",
  9239. "detail": "\u5206\u6BCD\u81EA\u7531\u5EA6\u3002"
  9240. },
  9241. {
  9242. "name": "cumulative",
  9243. "detail": "\u7528\u4E8E\u786E\u5B9A\u51FD\u6570\u5F62\u5F0F\u7684\u903B\u8F91\u503C\u3002\u9ED8\u8BA4\u503C\u4E3A FALSE\u3002\n\n\u5982\u679C\u4E3A TRUE()\uFF1AF.DIST \u5C06\u8FD4\u56DE\u7D2F\u79EF\u5206\u5E03\u51FD\u6570\u503C\u3002\n\n\u5982\u679C\u4E3A FALSE()\uFF1AF.DIST \u5C06\u8FD4\u56DE\u6982\u7387\u5BC6\u5EA6\u51FD\u6570\u503C\u3002"
  9244. }
  9245. ]
  9246. },
  9247. "F_DIST_RT": {
  9248. "d": "\u7ED9\u5B9A\u8F93\u5165x\uFF0C\u8BA1\u7B97\u4E24\u4E2A\u6570\u636E\u96C6\u7684\u53F3\u5C3EF\u6982\u7387\u5206\u5E03\uFF08\u5DEE\u5F02\u7A0B\u5EA6\uFF09\u3002 \u6B64\u5206\u5E03\u4E5F\u79F0\u4E3AFisher-Snedecor\u5206\u5E03\u6216Snedecor F\u5206\u5E03\u3002",
  9249. "a": "\u7ED9\u5B9A\u8F93\u5165x",
  9250. "p": [
  9251. {
  9252. "name": "x",
  9253. "detail": "\u7528\u6765\u8BA1\u7B97\u51FD\u6570\u7684\u503C\u3002"
  9254. },
  9255. {
  9256. "name": "degrees_freedom1",
  9257. "detail": "\u5206\u5B50\u81EA\u7531\u5EA6\u3002"
  9258. },
  9259. {
  9260. "name": "degrees_freedom2",
  9261. "detail": "\u5206\u6BCD\u81EA\u7531\u5EA6\u3002"
  9262. }
  9263. ]
  9264. },
  9265. "VAR_P": {
  9266. "d": "\u57FA\u4E8E\u6837\u672C\u603B\u4F53\u8BA1\u7B97\u65B9\u5DEE\u3002",
  9267. "a": "\u57FA\u4E8E\u6837\u672C\u603B\u4F53\u8BA1\u7B97\u65B9\u5DEE\u3002",
  9268. "p": [
  9269. {
  9270. "name": "\u503C1",
  9271. "detail": "\u6570\u636E\u96C6\u4E2D\u7684\u7B2C\u4E00\u4E2A\u503C\u6216\u8303\u56F4\u3002"
  9272. },
  9273. {
  9274. "name": "\u503C2, \u2026",
  9275. "detail": "[\u53EF\u9009] - \u6570\u636E\u96C6\u4E2D\u5305\u542B\u7684\u5176\u4ED6\u503C\u6216\u8303\u56F4\u3002"
  9276. }
  9277. ]
  9278. },
  9279. "VAR_S": {
  9280. "d": "\u57FA\u4E8E\u6837\u672C\u8BA1\u7B97\u65B9\u5DEE\u3002",
  9281. "a": "\u57FA\u4E8E\u6837\u672C\u8BA1\u7B97\u65B9\u5DEE\u3002",
  9282. "p": [
  9283. {
  9284. "name": "\u503C1",
  9285. "detail": "\u6837\u672C\u4E2D\u7684\u7B2C\u4E00\u9879\u503C\u6216\u8303\u56F4\u3002"
  9286. },
  9287. {
  9288. "name": "\u503C2, \u2026",
  9289. "detail": "[\u53EF\u9009] - \u6837\u672C\u4E2D\u5305\u542B\u7684\u5176\u4ED6\u503C\u6216\u8303\u56F4\u3002"
  9290. }
  9291. ]
  9292. },
  9293. "VARA": {
  9294. "d": "\u57FA\u4E8E\u6837\u672C\u8BA1\u7B97\u65B9\u5DEE\uFF0C\u5C06\u6587\u672C\u53D6\u503C\u4E3A0\u3002",
  9295. "a": "\u57FA\u4E8E\u6837\u672C\u8BA1\u7B97\u65B9\u5DEE",
  9296. "p": [
  9297. {
  9298. "name": "value1",
  9299. "detail": "\u6837\u672C\u4E2D\u7684\u7B2C\u4E00\u9879\u503C\u6216\u8303\u56F4\u3002"
  9300. },
  9301. {
  9302. "name": "value2, ...",
  9303. "detail": "[\u53EF\u9009] - \u6837\u672C\u4E2D\u5305\u542B\u7684\u5176\u4ED6\u503C\u6216\u8303\u56F4\u3002"
  9304. }
  9305. ]
  9306. },
  9307. "VARPA": {
  9308. "d": "\u57FA\u4E8E\u6837\u672C\u603B\u4F53\u8BA1\u7B97\u65B9\u5DEE\uFF0C\u5C06\u6587\u672C\u53D6\u503C\u4E3A0\u3002",
  9309. "a": "\u57FA\u4E8E\u6837\u672C\u603B\u4F53\u8BA1\u7B97\u65B9\u5DEE",
  9310. "p": [
  9311. {
  9312. "name": "\u503C1",
  9313. "detail": "\u6837\u672C\u4E2D\u7684\u7B2C\u4E00\u9879\u503C\u6216\u8303\u56F4\u3002"
  9314. },
  9315. {
  9316. "name": "\u503C2, ...",
  9317. "detail": "[\u53EF\u9009] - \u6570\u636E\u96C6\u4E2D\u5305\u542B\u7684\u5176\u4ED6\u6570\u503C\u6216\u8303\u56F4\u3002"
  9318. }
  9319. ]
  9320. },
  9321. "STEYX": {
  9322. "d": "\u8FD4\u56DE\u901A\u8FC7\u7EBF\u6027\u56DE\u5F52\u6CD5\u9884\u6D4B\u6BCF\u4E2A x \u7684 y \u503C\u65F6\u6240\u4EA7\u751F\u7684\u6807\u51C6\u8BEF\u5DEE\u3002",
  9323. "a": "\u8FD4\u56DE\u901A\u8FC7\u7EBF\u6027\u56DE\u5F52\u6CD5\u9884\u6D4B\u6BCF\u4E2A x \u7684 y \u503C\u65F6\u6240\u4EA7\u751F\u7684\u6807\u51C6\u8BEF\u5DEE\u3002",
  9324. "p": [
  9325. {
  9326. "name": "\u6570\u636E_y",
  9327. "detail": "\u4EE3\u8868\u56E0\u53D8\u91CF\u6570\u636E\u6570\u7EC4\u6216\u77E9\u9635\u7684\u8303\u56F4\u3002"
  9328. },
  9329. {
  9330. "name": "\u6570\u636E_x",
  9331. "detail": "\u4EE3\u8868\u81EA\u53D8\u91CF\u6570\u636E\u6570\u7EC4\u6216\u77E9\u9635\u7684\u8303\u56F4\u3002"
  9332. }
  9333. ]
  9334. },
  9335. "STANDARDIZE": {
  9336. "d": "\u7ED9\u5B9A\u5206\u5E03\u7684\u5747\u503C\u548C\u6807\u51C6\u504F\u5DEE\uFF0C\u8BA1\u7B97\u4E00\u4E2A\u968F\u673A\u53D8\u91CF\u6B63\u6001\u5316\u7684\u76F8\u5E94\u503C\u3002",
  9337. "a": "\u7ED9\u5B9A\u5206\u5E03\u7684\u5747\u503C\u548C\u6807\u51C6\u504F\u5DEE\uFF0C\u8BA1\u7B97\u4E00\u4E2A\u968F\u673A\u53D8\u91CF\u6B63\u6001\u5316\u7684\u76F8\u5E94\u503C\u3002",
  9338. "p": [
  9339. {
  9340. "name": "x",
  9341. "detail": "\u8981\u6B63\u6001\u5316\u7684\u968F\u673A\u53D8\u91CF\u503C\u3002"
  9342. },
  9343. {
  9344. "name": "mean",
  9345. "detail": "\u5206\u5E03\u7684\u5747\u503C\u3002"
  9346. },
  9347. {
  9348. "name": "standard_dev",
  9349. "detail": "\u5206\u5E03\u7684\u6807\u51C6\u504F\u5DEE\u3002"
  9350. }
  9351. ]
  9352. },
  9353. "SMALL": {
  9354. "d": "\u8FD4\u56DE\u6570\u636E\u96C6\u4E2D\u7684\u7B2C k \u4E2A\u6700\u5C0F\u503C\u3002",
  9355. "a": "\u8FD4\u56DE\u6570\u636E\u96C6\u4E2D\u7684\u7B2C k \u4E2A\u6700\u5C0F\u503C\u3002",
  9356. "p": [
  9357. {
  9358. "name": "array",
  9359. "detail": "\u9700\u8981\u627E\u5230\u7B2C k \u4E2A\u6700\u5C0F\u503C\u7684\u6570\u7EC4\u6216\u6570\u503C\u6570\u636E\u533A\u57DF\u3002"
  9360. },
  9361. {
  9362. "name": "k",
  9363. "detail": "\u8981\u8FD4\u56DE\u7684\u6570\u636E\u5728\u6570\u7EC4\u6216\u6570\u636E\u533A\u57DF\u91CC\u7684\u4F4D\u7F6E\uFF08\u4ECE\u5C0F\u5230\u5927\uFF09\u3002"
  9364. }
  9365. ]
  9366. },
  9367. "SLOPE": {
  9368. "d": "\u8BA1\u7B97\u901A\u8FC7\u6570\u636E\u96C6\u7684\u7EBF\u6027\u56DE\u5F52\u5F97\u5230\u7684\u76F4\u7EBF\u7684\u659C\u7387\u3002",
  9369. "a": "\u8BA1\u7B97\u901A\u8FC7\u6570\u636E\u96C6\u7684\u7EBF\u6027\u56DE\u5F52\u5F97\u5230\u7684\u76F4\u7EBF\u7684\u659C\u7387\u3002",
  9370. "p": [
  9371. {
  9372. "name": "\u6570\u636E_y",
  9373. "detail": "\u4EE3\u8868\u56E0\u53D8\u91CF\u6570\u636E\u6570\u7EC4\u6216\u77E9\u9635\u7684\u8303\u56F4\u3002"
  9374. },
  9375. {
  9376. "name": "\u6570\u636E_x",
  9377. "detail": "\u4EE3\u8868\u81EA\u53D8\u91CF\u6570\u636E\u6570\u7EC4\u6216\u77E9\u9635\u7684\u8303\u56F4\u3002"
  9378. }
  9379. ]
  9380. },
  9381. "SKEW": {
  9382. "d": "\u8FD4\u56DE\u5206\u5E03\u7684\u504F\u659C\u5EA6\u3002 \u504F\u659C\u5EA6\u8868\u660E\u5206\u5E03\u76F8\u5BF9\u4E8E\u5E73\u5747\u503C\u7684\u4E0D\u5BF9\u79F0\u7A0B\u5EA6\u3002 \u6B63\u504F\u659C\u5EA6\u8868\u660E\u5206\u5E03\u7684\u4E0D\u5BF9\u79F0\u5C3E\u90E8\u8D8B\u5411\u4E8E\u66F4\u591A\u6B63\u503C\u3002 \u8D1F\u504F\u659C\u5EA6\u8868\u660E\u5206\u5E03\u7684\u4E0D\u5BF9\u79F0\u5C3E\u90E8\u8D8B\u5411\u4E8E\u66F4\u591A\u8D1F\u503C\u3002",
  9383. "a": "\u8FD4\u56DE\u5206\u5E03\u7684\u504F\u659C\u5EA6\u3002",
  9384. "p": [
  9385. {
  9386. "name": "\u503C1",
  9387. "detail": "\u6570\u636E\u96C6\u4E2D\u7684\u7B2C\u4E00\u4E2A\u503C\u6216\u8303\u56F4\u3002"
  9388. },
  9389. {
  9390. "name": "\u503C2, ...",
  9391. "detail": "[\u53EF\u9009] - \u6570\u636E\u96C6\u4E2D\u5305\u542B\u7684\u5176\u4ED6\u503C\u6216\u8303\u56F4\u3002"
  9392. }
  9393. ]
  9394. },
  9395. "SKEW_P": {
  9396. "d": "\u8FD4\u56DE\u57FA\u4E8E\u6837\u672C\u603B\u4F53\u7684\u5206\u5E03\u4E0D\u5BF9\u79F0\u5EA6\uFF1A\u8868\u660E\u5206\u5E03\u76F8\u5BF9\u4E8E\u5E73\u5747\u503C\u7684\u4E0D\u5BF9\u79F0\u7A0B\u5EA6\u3002",
  9397. "a": "\u8FD4\u56DE\u57FA\u4E8E\u6837\u672C\u603B\u4F53\u7684\u5206\u5E03\u4E0D\u5BF9\u79F0\u5EA6\uFF1A\u8868\u660E\u5206\u5E03\u76F8\u5BF9\u4E8E\u5E73\u5747\u503C\u7684\u4E0D\u5BF9\u79F0\u7A0B\u5EA6\u3002",
  9398. "p": [
  9399. {
  9400. "name": "\u503C1",
  9401. "detail": "\u6570\u636E\u96C6\u4E2D\u7684\u7B2C\u4E00\u4E2A\u503C\u6216\u8303\u56F4\u3002"
  9402. },
  9403. {
  9404. "name": "\u503C2, ...",
  9405. "detail": "[\u53EF\u9009] - \u6570\u636E\u96C6\u4E2D\u5305\u542B\u7684\u5176\u4ED6\u503C\u6216\u8303\u56F4\u3002"
  9406. }
  9407. ]
  9408. },
  9409. "VLOOKUP": {
  9410. "d": "\u7EB5\u5411\u67E5\u627E\u3002\u5728\u8303\u56F4\u7684\u7B2C\u4E00\u5217\u4E2D\u81EA\u4E0A\u800C\u4E0B\u641C\u7D22\u67D0\u4E2A\u952E\u503C\uFF0C\u5E76\u8FD4\u56DE\u6240\u627E\u5230\u7684\u884C\u4E2D\u6307\u5B9A\u5355\u5143\u683C\u7684\u503C\u3002",
  9411. "a": "\u7EB5\u5411\u67E5\u627E\u3002\u5728\u8303\u56F4\u7684\u7B2C\u4E00\u5217\u4E2D\u81EA\u4E0A\u800C\u4E0B\u641C\u7D22\u67D0\u4E2A\u952E\u503C",
  9412. "p": [
  9413. {
  9414. "name": "\u641C\u7D22\u952E\u503C",
  9415. "detail": '\u8981\u641C\u7D22\u7684\u503C\uFF0C\u5982 42\u3001"Cats" \u6216 I24\u3002'
  9416. },
  9417. {
  9418. "name": "\u8303\u56F4",
  9419. "detail": "\u8981\u8FDB\u884C\u641C\u7D22\u7684\u8303\u56F4\u3002VLOOKUP \u5C06\u5728\u8BE5\u8303\u56F4\u7684\u7B2C\u4E00\u5217\u4E2D\u641C\u7D22\u641C\u7D22\u952E\u503C\u4E2D\u6307\u5B9A\u7684\u952E\u503C\u3002"
  9420. },
  9421. {
  9422. "name": "\u7D22\u5F15",
  9423. "detail": "\u8981\u8FD4\u56DE\u7684\u503C\u7684\u5217\u7D22\u5F15\uFF0C\u8303\u56F4\u4E2D\u7684\u7B2C\u4E00\u5217\u7F16\u53F7\u4E3A 1\u3002\n\n\u5982\u679C\u7D22\u5F15\u4E0D\u662F\u4ECB\u4E8E 1 \u548C\u8303\u56F4\u4E2D\u7684\u5217\u6570\u4E4B\u95F4\uFF0C\u5C06\u8FD4\u56DE #VALUE! \u3002"
  9424. },
  9425. {
  9426. "name": "\u5DF2\u6392\u5E8F",
  9427. "detail": "[\u9ED8\u8BA4\u503C\u4E3A TRUE() ] - \u6307\u793A\u8981\u641C\u7D22\u7684\u5217\uFF08\u6307\u5B9A\u8303\u56F4\u7684\u7B2C\u4E00\u5217\uFF09\u662F\u5426\u5DF2\u6392\u5E8F\u3002\u5927\u591A\u6570\u60C5\u51B5\u4E0B\uFF0C\u5EFA\u8BAE\u8BBE\u4E3A FALSE()\u3002\n\n\u5EFA\u8BAE\u5C06\u5DF2\u6392\u5E8F\u8BBE\u4E3A FALSE\u3002\u5982\u679C\u8BBE\u4E3A FALSE\uFF0C\u5C06\u8FD4\u56DE\u5B8C\u5168\u5339\u914D\u9879\u3002\u5982\u679C\u5B58\u5728\u591A\u4E2A\u5339\u914D\u503C\uFF0C\u5C06\u8FD4\u56DE\u627E\u5230\u7684\u7B2C\u4E00\u4E2A\u503C\u5BF9\u5E94\u7684\u5355\u5143\u683C\u7684\u5185\u5BB9\uFF0C\u5982\u679C\u627E\u4E0D\u5230\u5339\u914D\u503C\uFF0C\u5219\u8FD4\u56DE #N/A\u3002\n\n\u5982\u679C\u5C06\u5DF2\u6392\u5E8F\u8BBE\u4E3A TRUE \u6216\u7701\u7565\uFF0C\u5C06\u8FD4\u56DE\uFF08\u5C0F\u4E8E\u6216\u7B49\u4E8E\u641C\u7D22\u952E\u503C\u7684\uFF09\u6700\u63A5\u8FD1\u7684\u5339\u914D\u9879\u3002\u5982\u679C\u641C\u7D22\u7684\u5217\u4E2D\u6240\u6709\u7684\u503C\u5747\u5927\u4E8E\u641C\u7D22\u952E\u503C\uFF0C\u5219\u8FD4\u56DE #N/A\u3002"
  9428. }
  9429. ]
  9430. },
  9431. "HLOOKUP": {
  9432. "d": "\u6A2A\u5411\u67E5\u627E\u3002\u5728\u8303\u56F4\u7684\u7B2C\u4E00\u884C\u4E2D\u641C\u7D22\u67D0\u4E2A\u952E\u503C\uFF0C\u5E76\u8FD4\u56DE\u6240\u627E\u5230\u7684\u5217\u4E2D\u6307\u5B9A\u5355\u5143\u683C\u7684\u503C\u3002",
  9433. "a": "\u6A2A\u5411\u67E5\u627E\u3002\u5728\u8303\u56F4\u7684\u7B2C\u4E00\u884C\u4E2D\u641C\u7D22\u67D0\u4E2A\u952E\u503C",
  9434. "p": [
  9435. {
  9436. "name": "\u641C\u7D22\u952E\u503C",
  9437. "detail": '\u8981\u641C\u7D22\u7684\u503C\u3002\u4F8B\u5982\uFF0C42\u3001"Cats"\u6216I24\u3002'
  9438. },
  9439. {
  9440. "name": "\u8303\u56F4",
  9441. "detail": "\u8981\u8FDB\u884C\u641C\u7D22\u7684\u8303\u56F4\u3002\u5C06\u5728\u8BE5\u8303\u56F4\u7684\u7B2C\u4E00\u884C\u4E2D\u641C\u7D22\u5728\u641C\u7D22\u952E\u503C\u4E2D\u6307\u5B9A\u7684\u952E\u503C\u3002"
  9442. },
  9443. {
  9444. "name": "\u7D22\u5F15",
  9445. "detail": "\u8981\u8FD4\u56DE\u7684\u503C\u7684\u884C\u7D22\u5F15\uFF0C\u8303\u56F4\u4E2D\u7684\u7B2C\u4E00\u884C\u7F16\u53F7\u4E3A1\u3002\n\n\u5982\u679C\u7D22\u5F15\u4E0D\u662F\u4ECB\u4E8E1\u548C\u8303\u56F4\u4E2D\u7684\u884C\u6570\u4E4B\u95F4\uFF0C\u5C06\u8FD4\u56DE#VALUE!\u3002"
  9446. },
  9447. {
  9448. "name": "\u5DF2\u6392\u5E8F",
  9449. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u503C\u4E3ATRUE()] - \u6307\u793A\u8981\u641C\u7D22\u7684\u884C\uFF08\u6307\u5B9A\u8303\u56F4\u7684\u7B2C\u4E00\u884C\uFF09\u662F\u5426\u5DF2\u6392\u5E8F\u3002\n\n\u5982\u679C\u5C06\u5DF2\u6392\u5E8F\u8BBE\u4E3ATRUE\u6216\u7701\u7565\uFF0C\u5C06\u8FD4\u56DE\u6700\u63A5\u8FD1\u7684\u5339\u914D\u503C\uFF08\u5C0F\u4E8E\u6216\u7B49\u4E8E\u641C\u7D22\u952E\u503C\uFF09\u3002\u5982\u679C\u5728\u641C\u7D22\u7684\u884C\u4E2D\u6240\u6709\u7684\u503C\u5747\u5927\u4E8E\u641C\u7D22\u952E\u503C\uFF0C\u5219\u8FD4\u56DE#N/A\u3002\n\n\u5982\u679C\u5C06\u5DF2\u6392\u5E8F\u8BBE\u4E3ATRUE\u6216\u5C06\u5176\u7701\u7565\uFF0C\u800C\u8303\u56F4\u7684\u9996\u884C\u5E76\u975E\u5904\u4E8E\u5DF2\u6392\u5E8F\u72B6\u6001\uFF0C\u5219\u8FD4\u56DE\u503C\u53EF\u80FD\u4F1A\u662F\u9519\u8BEF\u7684\u3002\n\n\u5982\u679C\u5C06\u5DF2\u6392\u5E8F\u8BBE\u4E3AFALSE\uFF0C\u5219\u4EC5\u8FD4\u56DE\u5B8C\u5168\u5339\u914D\u3002\u5982\u679C\u5B58\u5728\u591A\u4E2A\u5339\u914D\u503C\uFF0C\u5C06\u8FD4\u56DE\u4E0E\u627E\u5230\u7684\u7B2C\u4E00\u4E2A\u503C\u5BF9\u5E94\u7684\u5355\u5143\u683C\u7684\u5185\u5BB9\uFF0C\u5982\u679C\u627E\u4E0D\u5230\u5339\u914D\u503C\u5219\u8FD4\u56DE#N/A\u3002"
  9450. }
  9451. ]
  9452. },
  9453. "LOOKUP": {
  9454. "d": "\u5728\u884C\u6216\u5217\u4E2D\u67E5\u627E\u76F8\u5E94\u952E\uFF0C\u5E76\u5C06\u76F8\u5E94\u5355\u5143\u683C\u7684\u503C\u8FD4\u56DE\u5230\u4E0E\u641C\u7D22\u884C\u6216\u5217\u6240\u5728\u4F4D\u7F6E\u76F8\u540C\u7684\u7ED3\u679C\u8303\u56F4\u4E2D\u3002",
  9455. "a": "\u5728\u884C\u6216\u5217\u4E2D\u67E5\u627E\u76F8\u5E94\u952E",
  9456. "p": [
  9457. {
  9458. "name": "\u641C\u7D22\u952E\u503C",
  9459. "detail": '\u8981\u5728\u884C\u6216\u5217\u4E2D\u641C\u7D22\u7684\u503C\u3002\u4F8B\u5982\uFF0C42\u3001"Cats" \u6216 I24\u3002'
  9460. },
  9461. {
  9462. "name": "\u641C\u7D22\u8303\u56F4 | \u641C\u7D22\u7ED3\u679C\u6570\u7EC4",
  9463. "detail": "\u4F7F\u7528 LOOKUP \u7684\u4E00\u79CD\u65B9\u6CD5\u662F\u7ED9\u5B9A\u5355\u884C\u6216\u5355\u5217\u5F62\u5F0F\u7684\u641C\u7D22\u8303\u56F4\u8FDB\u884C\u641C\u7D22\u67E5\u627E\uFF0C\u8FD9\u79CD\u65B9\u5F0F\u8981\u7528\u5230\u53E6\u4E00\u4E2A\u53C2\u6570\u7ED3\u679C\u8303\u56F4\u3002\u53E6\u4E00\u79CD\u65B9\u5F0F\u662F\u5C06\u8FD9\u4E24\u4E2A\u53C2\u6570\u5408\u5E76\u4E3A\u4E00\u4E2A\u641C\u7D22\u7ED3\u679C\u6570\u7EC4\uFF0C\u5176\u4E2D\u7B2C\u4E00\u884C\u6216\u7B2C\u4E00\u5217\u7528\u4E8E\u641C\u7D22\uFF0C\u5E76\u5C06\u8FD4\u56DE\u503C\u653E\u5728\u8BE5\u6570\u7EC4\u7684\u6700\u540E\u4E00\u884C\u6216\u6700\u540E\u4E00\u5217\u4E2D\u3002"
  9464. },
  9465. {
  9466. "name": "\u7ED3\u679C\u8303\u56F4",
  9467. "detail": "[ \u53EF\u9009 ] - \u7528\u4E8E\u5B58\u653E\u8FD4\u56DE\u7ED3\u679C\u7684\u8303\u56F4\u3002\u8FD4\u56DE\u503C\u5BF9\u5E94\u4E8E\u5728\u641C\u7D22\u8303\u56F4\u4E2D\u627E\u5230\u641C\u7D22\u952E\u503C\u7684\u4F4D\u7F6E\u3002\u6B64\u8303\u56F4\u5FC5\u987B\u4EC5\u4E3A\u5355\u884C\u6216\u5355\u5217\uFF0C\u800C\u5982\u679C\u60A8\u4F7F\u7528\u7684\u662F\u641C\u7D22\u7ED3\u679C\u6570\u7EC4\u65B9\u5F0F\uFF0C\u5219\u4E0D\u5E94\u63D0\u4F9B\u6B64\u53C2\u6570\u3002"
  9468. }
  9469. ]
  9470. },
  9471. "ADDRESS": {
  9472. "d": "\u8FD4\u56DE\u5B57\u7B26\u4E32\u5F62\u5F0F\u7684\u5355\u5143\u683C\u5F15\u7528\u3002",
  9473. "a": "\u8FD4\u56DE\u5B57\u7B26\u4E32\u5F62\u5F0F\u7684\u5355\u5143\u683C\u5F15\u7528\u3002",
  9474. "p": [
  9475. {
  9476. "name": "row_num",
  9477. "detail": "\u4E00\u4E2A\u6570\u503C\uFF0C\u6307\u5B9A\u8981\u5728\u5355\u5143\u683C\u5F15\u7528\u4E2D\u4F7F\u7528\u7684\u884C\u53F7\u3002"
  9478. },
  9479. {
  9480. "name": "column_num",
  9481. "detail": "\u4E00\u4E2A\u6570\u503C\uFF0C\u6307\u5B9A\u8981\u5728\u5355\u5143\u683C\u5F15\u7528\u4E2D\u4F7F\u7528\u7684\u5217\u53F7\uFF08\u800C\u975E\u540D\u79F0\uFF09\u3002A\u5217\u7684\u7F16\u53F7\u4E3A1\u3002"
  9482. },
  9483. {
  9484. "name": "abs_num",
  9485. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u503C\u4E3A1] - \u4E00\u4E2A\u6570\u503C\uFF0C\u6307\u5B9A\u8981\u8FD4\u56DE\u7684\u5F15\u7528\u7C7B\u578B\u3002\n\n1 \u8868\u793A\u884C\u5217\u5747\u91C7\u7528\u7EDD\u5BF9\u503C\uFF08\u4F8B\u5982$A$1\uFF09\uFF1B\n\n2 \u8868\u793A\u91C7\u7528\u7EDD\u5BF9\u884C\u53F7\uFF0C\u76F8\u5BF9\u5217\u6807\uFF08\u4F8B\u5982A$1\uFF09\uFF1B\n\n3 \u8868\u793A\u91C7\u7528\u76F8\u5BF9\u884C\u53F7\uFF0C\u7EDD\u5BF9\u5217\u6807\uFF08\u4F8B\u5982$A1\uFF09\uFF1B\n\n4 \u8868\u793A\u884C\u5217\u5747\u91C7\u7528\u76F8\u5BF9\u503C\uFF08\u4F8B\u5982A1\uFF09\u3002"
  9486. },
  9487. {
  9488. "name": "A1",
  9489. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u503C\u4E3ATRUE()] - \u4E00\u4E2A\u5E03\u5C14\u503C\uFF0C\u6307\u793A\u91C7\u7528A1\u6807\u8BB0\u5F62\u5F0F(TRUE)\u8FD8\u662FR1C1\u6807\u8BB0\u5F62\u5F0F(FALSE)\u3002"
  9490. },
  9491. {
  9492. "name": "sheet_text",
  9493. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u7F3A\u7701] - \u7528\u4E8E\u6307\u5B9A\u5730\u5740\u6240\u6307\u5411\u7684\u5DE5\u4F5C\u8868\u540D\u79F0\u3002"
  9494. }
  9495. ]
  9496. },
  9497. "INDIRECT": {
  9498. "d": "\u8FD4\u56DE\u4EE5\u5B57\u7B26\u4E32\u6307\u5B9A\u7684\u5355\u5143\u683C\u5F15\u7528\u3002",
  9499. "a": "\u8FD4\u56DE\u4EE5\u5B57\u7B26\u4E32\u6307\u5B9A\u7684\u5355\u5143\u683C\u5F15\u7528\u3002",
  9500. "p": [
  9501. {
  9502. "name": "ref_text",
  9503. "detail": "\u4EE5\u5E26\u5F15\u53F7\u7684\u5B57\u7B26\u4E32\u5F62\u5F0F\u63D0\u4F9B\u7684\u5355\u5143\u683C\u5F15\u7528\u3002"
  9504. },
  9505. {
  9506. "name": "A1",
  9507. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u503C\u4E3ATRUE()] - \u4E00\u4E2A\u5E03\u5C14\u503C\uFF0C\u6307\u793A\u91C7\u7528A1\u6807\u8BB0\u5F62\u5F0F(TRUE)\u8FD8\u662FR1C1\u6807\u8BB0\u5F62\u5F0F(FALSE)\u3002"
  9508. }
  9509. ]
  9510. },
  9511. "ROW": {
  9512. "d": "\u8FD4\u56DE\u6307\u5B9A\u5355\u5143\u683C\u7684\u884C\u53F7",
  9513. "a": "\u8FD4\u56DE\u6307\u5B9A\u5355\u5143\u683C\u7684\u884C\u53F7",
  9514. "p": [
  9515. {
  9516. "name": "reference",
  9517. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u4E3A\u6B64\u516C\u5F0F\u6240\u5728\u7684\u5355\u5143\u683C] - \u8981\u8FD4\u56DE\u5176\u884C\u53F7\u7684\u5355\u5143\u683C\u3002\n\n\u5982\u679C\u5355\u5143\u683C\u5F15\u7528\u6307\u5411\u7684\u8303\u56F4\u5176\u5BBD\u5EA6\u5927\u4E8E\u4E00\u4E2A\u5355\u5143\u683C\uFF0C\u800C\u6B64\u516C\u5F0F\u4E0D\u662F\u7528\u4F5C\u6570\u7EC4\u516C\u5F0F\u7684\uFF0C\u8FD9\u65F6\u4F1A\u4EC5\u8FD4\u56DE\u5355\u5143\u683C\u5F15\u7528\u4E2D\u9996\u884C\u7684\u7F16\u53F7\u503C\u3002"
  9518. }
  9519. ]
  9520. },
  9521. "ROWS": {
  9522. "d": "\u8FD4\u56DE\u6307\u5B9A\u6570\u7EC4\u6216\u8303\u56F4\u4E2D\u7684\u884C\u6570\u3002",
  9523. "a": "\u8FD4\u56DE\u6307\u5B9A\u6570\u7EC4\u6216\u8303\u56F4\u4E2D\u7684\u884C\u6570\u3002",
  9524. "p": [
  9525. {
  9526. "name": "array",
  9527. "detail": "\u8981\u8FD4\u56DE\u5176\u884C\u6570\u7684\u8303\u56F4\u3002"
  9528. }
  9529. ]
  9530. },
  9531. "COLUMN": {
  9532. "d": "\u6309\u7167 `A=1` \u7684\u89C4\u5219\u8FD4\u56DE\u6307\u5B9A\u5355\u5143\u683C\u7684\u5217\u53F7\u3002",
  9533. "a": "\u6309\u7167 `A=1` \u7684\u89C4\u5219\u8FD4\u56DE\u6307\u5B9A\u5355\u5143\u683C\u7684\u5217\u53F7\u3002",
  9534. "p": [
  9535. {
  9536. "name": "reference",
  9537. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u4E3A\u5305\u542B\u6B64\u516C\u5F0F\u7684\u5355\u5143\u683C] - \u8981\u8FD4\u56DE\u5176\u5217\u53F7\u7684\u5355\u5143\u683C\u3002A\u5217\u5BF9\u5E94\u7684\u7F16\u53F7\u4E3A1\u3002\n\n\u5982\u679C\u5355\u5143\u683C\u5F15\u7528\u662F\u5BBD\u5EA6\u8D85\u8FC7\u4E00\u4E2A\u5355\u5143\u683C\u7684\u8303\u56F4\uFF0C\u800C\u6B64\u516C\u5F0F\u4E0D\u662F\u4F5C\u4E3A\u6570\u7EC4\u516C\u5F0F\u6765\u4F7F\u7528\u7684\uFF0C\u56E0\u6B64\u5C06\u8FD4\u56DE\u5355\u5143\u683C\u5F15\u7528\u4E2D\u7684\u7B2C\u4E00\u5217\u7684\u4F4D\u7F6E\u3002"
  9538. }
  9539. ]
  9540. },
  9541. "COLUMNS": {
  9542. "d": "\u8FD4\u56DE\u6307\u5B9A\u6570\u7EC4\u6216\u8303\u56F4\u4E2D\u7684\u5217\u6570\u3002",
  9543. "a": "\u8FD4\u56DE\u6307\u5B9A\u6570\u7EC4\u6216\u8303\u56F4\u4E2D\u7684\u5217\u6570\u3002",
  9544. "p": [
  9545. {
  9546. "name": "array",
  9547. "detail": "\u8981\u8FD4\u56DE\u5176\u5217\u6570\u7684\u8303\u56F4\u3002"
  9548. }
  9549. ]
  9550. },
  9551. "OFFSET": {
  9552. "d": "\u7ED9\u5B9A\u67D0\u8303\u56F4\u7684\u8D77\u59CB\u5355\u5143\u683C\u5F15\u7528\u4EE5\u53CA\u8BE5\u8303\u56F4\u6DB5\u76D6\u7684\u884C\u5217\u6570\u91CF\uFF0C\u8FD4\u56DE\u8BE5\u8303\u56F4\u7684\u5F15\u7528\u3002",
  9553. "a": "\u7ED9\u5B9A\u67D0\u8303\u56F4\u7684\u8D77\u59CB\u5355\u5143\u683C\u5F15\u7528\u4EE5\u53CA\u8BE5\u8303\u56F4\u6DB5\u76D6\u7684\u884C\u5217\u6570\u91CF\uFF0C\u8FD4\u56DE\u8BE5\u8303\u56F4\u7684\u5F15\u7528\u3002",
  9554. "p": [
  9555. {
  9556. "name": "reference",
  9557. "detail": "\u7528\u4E8E\u8BA1\u7B97\u884C\u5217\u504F\u79FB\u91CF\u7684\u8D77\u70B9\u3002"
  9558. },
  9559. {
  9560. "name": "rows",
  9561. "detail": "\u8981\u504F\u79FB\u7684\u884C\u6570\u3002\n\n\u884C\u504F\u79FB\u91CF\u5FC5\u987B\u662F\u6574\u6570\uFF0C\u4F46\u4E5F\u53EF\u4EE5\u662F\u8D1F\u6570\u3002\u5982\u679C\u63D0\u4F9B\u7684\u53C2\u6570\u5E26\u6709\u5C0F\u6570\uFF0C\u5C0F\u6570\u90E8\u5206\u5C06\u88AB\u622A\u53BB\u3002"
  9562. },
  9563. {
  9564. "name": "cols",
  9565. "detail": "\u8981\u504F\u79FB\u7684\u5217\u6570\u3002\n\n\u5217\u504F\u79FB\u91CF\u5FC5\u987B\u662F\u6574\u6570\uFF0C\u4F46\u4E5F\u53EF\u4EE5\u662F\u8D1F\u6570\u3002\u5982\u679C\u63D0\u4F9B\u7684\u53C2\u6570\u5E26\u6709\u5C0F\u6570\uFF0C\u5C0F\u6570\u90E8\u5206\u5C06\u88AB\u622A\u53BB\u3002"
  9566. },
  9567. {
  9568. "name": "height",
  9569. "detail": "[\u53EF\u9009] - \u8981\u4ECE\u504F\u79FB\u76EE\u6807\u5F00\u59CB\u8FD4\u56DE\u7684\u8303\u56F4\u7684\u9AD8\u5EA6\u3002"
  9570. },
  9571. {
  9572. "name": "width",
  9573. "detail": "[\u53EF\u9009] - \u8981\u4ECE\u504F\u79FB\u76EE\u6807\u5F00\u59CB\u8FD4\u56DE\u7684\u8303\u56F4\u7684\u5BBD\u5EA6\u3002"
  9574. }
  9575. ]
  9576. },
  9577. "MATCH": {
  9578. "d": "\u5728\u5355\u5143\u683C\u4E2D\u641C\u7D22\u6307\u5B9A\u9879\uFF0C\u7136\u540E\u8FD4\u56DE\u8BE5\u9879\u5728\u5355\u5143\u683C\u533A\u57DF\u4E2D\u7684\u76F8\u5BF9\u4F4D\u7F6E\u3002",
  9579. "a": "\u5728\u5355\u5143\u683C\u4E2D\u641C\u7D22\u6307\u5B9A\u9879\uFF0C\u7136\u540E\u8FD4\u56DE\u8BE5\u9879\u5728\u5355\u5143\u683C\u533A\u57DF\u4E2D\u7684\u76F8\u5BF9\u4F4D\u7F6E\u3002",
  9580. "p": [
  9581. {
  9582. "name": "lookup_value",
  9583. "detail": "\u8981\u5728 lookup_array \u4E2D\u5339\u914D\u7684\u503C\u3002"
  9584. },
  9585. {
  9586. "name": "lookup_array",
  9587. "detail": "\u8981\u641C\u7D22\u7684\u5355\u5143\u683C\u533A\u57DF\u3002\n\n\u5982\u679C\u6240\u7528\u7684\u8303\u56F4\u7684\u9AD8\u5EA6\u548C\u5BBD\u5EA6\u5747\u5927\u4E8E1\uFF0CMATCH\u5C06\u8FD4\u56DE#N/A!\u3002"
  9588. },
  9589. {
  9590. "name": "match_type",
  9591. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u503C\u4E3A1] - \u8981\u91C7\u7528\u7684\u641C\u7D22\u65B9\u5F0F\u3002\n\n1\u4E3A\u9ED8\u8BA4\u7C7B\u578B\uFF0C\u6B64\u65F6MATCH\u4F1A\u5047\u8BBE\u8303\u56F4\u5DF2\u6309\u5347\u5E8F\u6392\u5E8F\uFF0C\u5E76\u8FD4\u56DE\u5C0F\u4E8E\u7B49\u4E8E\u641C\u7D22\u952E\u503C\u7684\u6700\u5927\u503C\u3002\n\n0\u8868\u793A\u5B8C\u5168\u5339\u914D\uFF0C\u5728\u8303\u56F4\u672A\u6392\u5E8F\u7684\u60C5\u51B5\u4E0B\u9700\u8981\u4F7F\u7528\u6B64\u65B9\u5F0F\u3002\n\n-1\u8BA9MATCH\u5047\u8BBE\u8303\u56F4\u662F\u6309\u964D\u5E8F\u6392\u5E8F\u7684\uFF0C\u5E76\u8FD4\u56DE\u5927\u4E8E\u7B49\u4E8E\u641C\u7D22\u952E\u503C\u7684\u6700\u5C0F\u503C\u3002"
  9592. }
  9593. ]
  9594. },
  9595. "INDEX": {
  9596. "d": "\u8FD4\u56DE\u8868\u683C\u6216\u4E2D\u7684\u5143\u7D20\u503C\uFF0C\u6B64\u5143\u7D20\u7531\u884C\u53F7\u548C\u5217\u53F7\u7684\u7D22\u5F15\u503C\u7ED9\u5B9A\u3002",
  9597. "a": "\u8FD4\u56DE\u8868\u683C\u6216\u4E2D\u7684\u5143\u7D20\u503C\uFF0C\u6B64\u5143\u7D20\u7531\u884C\u53F7\u548C\u5217\u53F7\u7684\u7D22\u5F15\u503C\u7ED9\u5B9A\u3002",
  9598. "p": [
  9599. {
  9600. "name": "array",
  9601. "detail": "\u5355\u5143\u683C\u533A\u57DF\u6216\u6570\u7EC4\u5E38\u91CF\u3002"
  9602. },
  9603. {
  9604. "name": "row_num",
  9605. "detail": "\u9009\u62E9\u6570\u7EC4\u4E2D\u7684\u67D0\u884C\uFF0C\u51FD\u6570\u4ECE\u8BE5\u884C\u8FD4\u56DE\u6570\u503C\u3002"
  9606. },
  9607. {
  9608. "name": "column_num",
  9609. "detail": "\u9009\u62E9\u6570\u7EC4\u4E2D\u7684\u67D0\u5217\uFF0C\u51FD\u6570\u4ECE\u8BE5\u5217\u8FD4\u56DE\u6570\u503C\u3002"
  9610. }
  9611. ]
  9612. },
  9613. "GETPIVOTDATA": {
  9614. "d": "\u4ECE\u4E0E\u6307\u5B9A\u884C\u548C\u5217\u6807\u9898\u5BF9\u5E94\u7684\u6570\u636E\u900F\u89C6\u8868\u4E2D\u63D0\u53D6\u6C47\u603B\u503C\u3002",
  9615. "a": "\u4ECE\u4E0E\u6307\u5B9A\u884C\u548C\u5217\u6807\u9898\u5BF9\u5E94\u7684\u6570\u636E\u900F\u89C6\u8868\u4E2D\u63D0\u53D6\u6C47\u603B\u503C\u3002",
  9616. "p": [
  9617. {
  9618. "name": "data_field",
  9619. "detail": "\u60A8\u60F3\u4ECE\u6570\u636E\u900F\u89C6\u8868\u4E2D\u83B7\u53D6\u5176\u6570\u636E\u7684\u503C\u540D\u79F0\u3002\n\u503C\u540D\u79F0\u5FC5\u987B\u62EC\u5728\u5F15\u53F7\u4E2D\u6216\u662F\u6307\u5411\u5305\u542B\u76F8\u5173\u6587\u672C\u7684\u4EFB\u4F55\u5355\u5143\u683C\u7684\u5F15\u7528\u3002\n\u5982\u679C\u6709\u591A\u4E2A\u503C\u5B57\u6BB5\uFF0C\u5219\u5FC5\u987B\u4F7F\u7528\u6570\u636E\u900F\u89C6\u8868\u4E2D\u663E\u793A\u7684\u786E\u5207\u540D\u79F0\uFF08\u5982\u201C\u9500\u552E\u603B\u989D\u201D\uFF09\u3002"
  9620. },
  9621. {
  9622. "name": "pivot_table",
  9623. "detail": "\u76EE\u6807\u6570\u636E\u900F\u89C6\u8868\u4E2D\u7684\u4EFB\u4F55\u5355\u5143\u683C\u7684\u5F15\u7528\uFF08\u63A8\u8350\u4F4D\u4E8E\u9876\u89D2\u7684\u5355\u5143\u683C\uFF09\u3002"
  9624. },
  9625. {
  9626. "name": "field1",
  9627. "detail": "[\u53EF\u9009] - \u6E90\u6570\u636E\u96C6\uFF08\u4E0D\u662F\u6570\u636E\u900F\u89C6\u8868\uFF09\u4E2D\u5217\u7684\u540D\u79F0\u3002"
  9628. },
  9629. {
  9630. "name": "item1",
  9631. "detail": "[\u53EF\u9009] - \u6570\u636E\u900F\u89C6\u8868\u4E2D\u663E\u793A\u7684\u4E0E\u60A8\u8981\u68C0\u7D22\u7684\u5B57\u6BB5\u540D\u79F0 1 \u76F8\u5BF9\u5E94\u7684\u884C\u6216\u5217\u7684\u540D\u79F0\u3002"
  9632. }
  9633. ]
  9634. },
  9635. "CHOOSE": {
  9636. "d": "\u57FA\u4E8E\u7D22\u5F15\u8FD4\u56DE\u9009\u9879\u5217\u8868\u4E2D\u7684\u5143\u7D20\u3002",
  9637. "a": "\u57FA\u4E8E\u7D22\u5F15\u8FD4\u56DE\u9009\u9879\u5217\u8868\u4E2D\u7684\u5143\u7D20\u3002",
  9638. "p": [
  9639. {
  9640. "name": "index_num",
  9641. "detail": "\u6307\u5B9A\u8981\u8FD4\u56DE\u54EA\u4E00\u9879\u3002\n\n\u5982\u679C\u7D22\u5F15\u4E3A\u96F6\u3001\u8D1F\u503C\u6216\u5927\u4E8E\u63D0\u4F9B\u7684\u9009\u62E9\u6570\u91CF\uFF0C\u5C06\u8FD4\u56DE#VALUE!\u9519\u8BEF\u3002"
  9642. },
  9643. {
  9644. "name": "value1",
  9645. "detail": "\u4E00\u9879\u53EF\u80FD\u7684\u8FD4\u56DE\u503C\u3002\u5FC5\u987B\u63D0\u4F9B\u3002\u53EF\u4EE5\u662F\u5355\u5143\u683C\u5F15\u7528\u6216\u5355\u72EC\u7684\u503C\u3002"
  9646. },
  9647. {
  9648. "name": "value2",
  9649. "detail": "[\u53EF\u9009] - \u5176\u4ED6\u53EF\u4EE5\u9009\u62E9\u7684\u503C\u3002\u9009\u62E9"
  9650. }
  9651. ]
  9652. },
  9653. "HYPERLINK": {
  9654. "d": "\u5728\u5355\u5143\u683C\u5185\u521B\u5EFA\u4E00\u4E2A\u8D85\u94FE\u63A5\u3002",
  9655. "a": "\u5728\u5355\u5143\u683C\u5185\u521B\u5EFA\u4E00\u4E2A\u8D85\u94FE\u63A5\u3002",
  9656. "p": [
  9657. {
  9658. "name": "\u7F51\u5740",
  9659. "detail": "\u4EE5\u5F15\u53F7\u62EC\u4F4F\u7684\u94FE\u63A5\u4F4D\u7F6E\u7684\u5B8C\u6574\u7F51\u5740\uFF0C\u6216\u5BF9\u5305\u542B\u8FD9\u79CD\u7F51\u5740\u7684\u5355\u5143\u683C\u7684\u5F15\u7528\u3002\n\n\u4EC5\u5141\u8BB8\u67D0\u4E9B\u94FE\u63A5\u7C7B\u578B\u3002\u5176\u4E2D\u5305\u62EC\uFF1Ahttp://\u3001https://\u3001mailto:\u3001aim:\u3001ftp://\u3001gopher://\u3001telnet://\u548Cnews://\uFF0C\u660E\u786E\u7981\u7528\u4F7F\u7528\u5176\u4ED6\u534F\u8BAE\u3002\u5982\u679C\u6307\u5B9A\u7684\u662F\u5176\u4ED6\u534F\u8BAE\uFF0C\u5C06\u4F1A\u5728\u5355\u5143\u683C\u4E2D\u663E\u793A\u94FE\u63A5\u6807\u7B7E\uFF0C\u4F46\u8BE5\u6807\u7B7E\u4E0D\u4F1A\u4EE5\u94FE\u63A5\u5F62\u5F0F\u5448\u73B0\u3002\n\n\u5982\u679C\u672A\u6307\u5B9A\u534F\u8BAE\uFF0C\u5219\u5047\u8BBE\u4F7F\u7528http://\uFF0C\u5E76\u5C06\u5176\u4F5C\u4E3A\u7F51\u5740\u7684\u524D\u7F00\u3002"
  9660. },
  9661. {
  9662. "name": "\u94FE\u63A5\u6807\u7B7E",
  9663. "detail": '[\u53EF\u9009 - \u9ED8\u8BA4\u4E3A\u7F51\u5740] - \u8981\u5728\u5355\u5143\u683C\u4E2D\u4F5C\u4E3A\u94FE\u63A5\u663E\u793A\u7684\u6587\u672C\uFF08\u7528\u5F15\u53F7\u62EC\u8D77\u6765\u7684\uFF09\uFF0C\u6216\u8005\u6307\u5411\u5305\u542B\u8FD9\u79CD\u6807\u7B7E\u7684\u5355\u5143\u683C\u7684\u5F15\u7528\u3002\n\n\u5982\u679C\u94FE\u63A5\u6807\u7B7E\u662F\u6307\u5411\u67D0\u4E2A\u7A7A\u5355\u5143\u683C\u7684\u5F15\u7528\uFF0C\u5982\u679C\u7F51\u5740\u6709\u6548\uFF0C\u5C31\u5C06\u5176\u4F5C\u4E3A\u94FE\u63A5\u663E\u793A\uFF0C\u5426\u5219\u4F5C\u4E3A\u7EAF\u6587\u672C\u663E\u793A\u3002\n\n\u5982\u679C\u94FE\u63A5\u6807\u7B7E\u4E3A\u7A7A\u5B57\u7B26\u4E32\u5E38\u91CF("")\uFF0C\u6240\u5728\u5355\u5143\u683C\u663E\u793A\u7684\u5185\u5BB9\u5C06\u4E3A\u7A7A\u767D\uFF0C\u4F46\u901A\u8FC7\u70B9\u51FB\u8BE5\u5355\u5143\u683C\u6216\u8F6C\u5165\u8BE5\u5355\u5143\u683C\u4ECD\u7136\u53EF\u4EE5\u8BBF\u95EE\u94FE\u63A5\u3002'
  9664. }
  9665. ]
  9666. },
  9667. "TIME": {
  9668. "d": "\u5C06\u7ED9\u5B9A\u7684\u5C0F\u65F6\u3001\u5206\u949F\u548C\u79D2\u8F6C\u6362\u4E3A\u65F6\u95F4\u3002",
  9669. "a": "\u5C06\u7ED9\u5B9A\u7684\u5C0F\u65F6\u3001\u5206\u949F\u548C\u79D2\u8F6C\u6362\u4E3A\u65F6\u95F4\u3002",
  9670. "p": [
  9671. {
  9672. "name": "\u5C0F\u65F6",
  9673. "detail": "0\uFF08\u96F6\uFF09\u5230 32767 \u4E4B\u95F4\u7684\u6570\u5B57\uFF0C\u4EE3\u8868\u5C0F\u65F6\u3002\n\n\u4EFB\u4F55\u5927\u4E8E 23 \u7684\u503C\u90FD\u4F1A\u9664\u4EE5 24\uFF0C\u4F59\u6570\u5C06\u4F5C\u4E3A\u5C0F\u65F6\u503C\u3002"
  9674. },
  9675. {
  9676. "name": "\u5206\u949F",
  9677. "detail": "0\uFF08\u96F6\uFF09\u5230 32767 \u4E4B\u95F4\u7684\u6570\u5B57\uFF0C\u4EE3\u8868\u5206\u949F\u3002\n\n\u4EFB\u4F55\u5927\u4E8E 59 \u7684\u503C\u5C06\u8F6C\u6362\u4E3A\u5C0F\u65F6\u548C\u5206\u949F\u3002"
  9678. },
  9679. {
  9680. "name": "\u79D2",
  9681. "detail": "0\uFF08\u96F6\uFF09\u5230 32767 \u4E4B\u95F4\u7684\u6570\u5B57\uFF0C\u4EE3\u8868\u79D2\u3002\n\n\u4EFB\u4F55\u5927\u4E8E 59 \u7684\u503C\u5C06\u8F6C\u6362\u4E3A\u5C0F\u65F6\u3001\u5206\u949F\u548C\u79D2\u3002"
  9682. }
  9683. ]
  9684. },
  9685. "TIMEVALUE": {
  9686. "d": "\u6309\u4E00\u592924\u5C0F\u65F6\u8FD4\u56DE\u8BE5\u65F6\u95F4\u7684\u5206\u6570\u8868\u793A\u3002",
  9687. "a": "\u6309\u4E00\u592924\u5C0F\u65F6\u8FD4\u56DE\u8BE5\u65F6\u95F4\u7684\u5206\u6570\u8868\u793A\u3002",
  9688. "p": [
  9689. {
  9690. "name": "time_text",
  9691. "detail": "\u7528\u4E8E\u8868\u793A\u65F6\u95F4\u7684\u5B57\u7B26\u4E32\u3002"
  9692. }
  9693. ]
  9694. },
  9695. "EOMONTH": {
  9696. "d": "\u8FD4\u56DE\u67D0\u4E2A\u6708\u4EFD\u6700\u540E\u4E00\u5929\u7684\u5E8F\u5217\u53F7\uFF0C\u8BE5\u6708\u4EFD\u5728\u53E6\u4E00\u4E2A\u65E5\u671F\u4E4B\u524D\u6216\u4E4B\u540E\u7684\u6570\u4E2A\u6708\uFF08\u6708\u6570\u7531\u53C2\u6570\u6307\u5B9A\uFF09\u3002",
  9697. "a": "\u8FD4\u56DE\u67D0\u4E2A\u6708\u4EFD\u6700\u540E\u4E00\u5929\u7684\u5E8F\u5217\u53F7",
  9698. "p": [
  9699. {
  9700. "name": "start_date",
  9701. "detail": "\u7528\u4E8E\u8BA1\u7B97\u7ED3\u679C\u7684\u53C2\u7167\u65E5\u671F\u3002"
  9702. },
  9703. {
  9704. "name": "months",
  9705. "detail": "\u7528\u4E8E\u8BA1\u7B97\u7684\u8D77\u59CB\u65E5\u671F\u4E4B\u524D\uFF08\u8D1F\uFF09\u6216\u4E4B\u540E\uFF08\u6B63\uFF09\u7684\u6708\u6570\u3002\u8FD4\u56DE\u7684\u662F\u8BA1\u7B97\u6240\u5F97\u6708\u4EFD\u7684\u6700\u540E\u90A3\u5929\u3002"
  9706. }
  9707. ]
  9708. },
  9709. "EDATE": {
  9710. "d": "\u8FD4\u56DE\u8868\u793A\u67D0\u4E2A\u65E5\u671F\u7684\u5E8F\u5217\u53F7\uFF0C\u8BE5\u65E5\u671F\u5728\u53E6\u4E00\u4E2A\u65E5\u671F\u7684\u6570\u6708\u4E4B\u524D/\u4E4B\u540E\u3002",
  9711. "a": "\u8FD4\u56DE\u8868\u793A\u67D0\u4E2A\u65E5\u671F\u7684\u5E8F\u5217\u53F7",
  9712. "p": [
  9713. {
  9714. "name": "start_date",
  9715. "detail": "\u7528\u4E8E\u8BA1\u7B97\u7ED3\u679C\u7684\u53C2\u7167\u65E5\u671F\u3002"
  9716. },
  9717. {
  9718. "name": "months",
  9719. "detail": "\u7528\u4E8E\u8BA1\u7B97\u7684\u8D77\u59CB\u65E5\u671F\u4E4B\u524D\uFF08\u8D1F\uFF09\u6216\u4E4B\u540E\uFF08\u6B63\uFF09\u7684\u6708\u6570\u3002"
  9720. }
  9721. ]
  9722. },
  9723. "SECOND": {
  9724. "d": "\u8FD4\u56DE\u65F6\u95F4\u503C\u7684\u79D2\u6570\u3002 \u79D2\u6570\u662F 0\uFF08\u96F6\uFF09\u5230 59 \u8303\u56F4\u5185\u7684\u6574\u6570\u3002",
  9725. "a": "\u8FD4\u56DE\u65F6\u95F4\u503C\u7684\u79D2\u6570\u3002 \u79D2\u6570\u662F 0\uFF08\u96F6\uFF09\u5230 59 \u8303\u56F4\u5185\u7684\u6574\u6570\u3002",
  9726. "p": [
  9727. {
  9728. "name": "\u65F6\u95F4",
  9729. "detail": "\u7528\u4E8E\u8BA1\u7B97\u79D2\u949F\u90E8\u5206\u7684\u65F6\u95F4\u3002\u5FC5\u987B\u4E3A\u4EE5\u4E0B\u503C\u4E4B\u4E00\uFF1A\u6307\u5411\u5305\u542B\u65E5\u671F/\u65F6\u95F4\u503C\u7684\u5355\u5143\u683C\u7684\u5F15\u7528\u3001\u8FD4\u56DE\u65E5\u671F/\u65F6\u95F4\u7684\u51FD\u6570\u6216\u8005\u6570\u5B57\u3002"
  9730. }
  9731. ]
  9732. },
  9733. "MINUTE": {
  9734. "d": "\u4EE5\u6570\u5B57\u683C\u5F0F\u8FD4\u56DE\u7279\u5B9A\u65F6\u95F4\u7684\u5206\u949F\u90E8\u5206\u3002",
  9735. "a": "\u4EE5\u6570\u5B57\u683C\u5F0F\u8FD4\u56DE\u7279\u5B9A\u65F6\u95F4\u7684\u5206\u949F\u90E8\u5206\u3002",
  9736. "p": [
  9737. {
  9738. "name": "\u65F6\u95F4",
  9739. "detail": "\u7528\u4E8E\u8BA1\u7B97\u5206\u949F\u90E8\u5206\u7684\u65F6\u95F4\u3002\u5FC5\u987B\u4E3A\u4EE5\u4E0B\u503C\u4E4B\u4E00\uFF1A\u6307\u5411\u5305\u542B\u65E5\u671F/\u65F6\u95F4\u503C\u7684\u5355\u5143\u683C\u7684\u5F15\u7528\u3001\u8FD4\u56DE\u65E5\u671F/\u65F6\u95F4\u7684\u51FD\u6570\u6216\u8005\u6570\u5B57\u3002"
  9740. }
  9741. ]
  9742. },
  9743. "HOUR": {
  9744. "d": "\u4EE5\u6570\u5B57\u683C\u5F0F\u8FD4\u56DE\u7279\u5B9A\u65F6\u95F4\u7684\u5C0F\u65F6\u90E8\u5206\u3002",
  9745. "a": "\u4EE5\u6570\u5B57\u683C\u5F0F\u8FD4\u56DE\u7279\u5B9A\u65F6\u95F4\u7684\u5C0F\u65F6\u90E8\u5206\u3002",
  9746. "p": [
  9747. {
  9748. "name": "\u65F6\u95F4",
  9749. "detail": "\u7528\u4E8E\u8BA1\u7B97\u5C0F\u65F6\u90E8\u5206\u7684\u65F6\u95F4\u3002\u5FC5\u987B\u4E3A\u4EE5\u4E0B\u503C\u4E4B\u4E00\uFF1A\u6307\u5411\u5305\u542B\u65E5\u671F/\u65F6\u95F4\u503C\u7684\u5355\u5143\u683C\u7684\u5F15\u7528\u3001\u8FD4\u56DE\u65E5\u671F/\u65F6\u95F4\u7684\u51FD\u6570\u6216\u8005\u6570\u5B57\u3002"
  9750. }
  9751. ]
  9752. },
  9753. "NOW": {
  9754. "d": "\u4EE5\u65E5\u671F\u503C\u683C\u5F0F\u8FD4\u56DE\u5F53\u524D\u65E5\u671F\u548C\u65F6\u95F4\u3002",
  9755. "a": "\u4EE5\u65E5\u671F\u503C\u683C\u5F0F\u8FD4\u56DE\u5F53\u524D\u65E5\u671F\u548C\u65F6\u95F4\u3002",
  9756. "p": []
  9757. },
  9758. "NETWORKDAYS": {
  9759. "d": "\u8FD4\u56DE\u6240\u63D0\u4F9B\u7684\u4E24\u4E2A\u65E5\u671F\u4E4B\u95F4\u7684\u51C0\u5DE5\u4F5C\u65E5\u5929\u6570\u3002",
  9760. "a": "\u8FD4\u56DE\u6240\u63D0\u4F9B\u7684\u4E24\u4E2A\u65E5\u671F\u4E4B\u95F4\u7684\u51C0\u5DE5\u4F5C\u65E5\u5929\u6570\u3002",
  9761. "p": [
  9762. {
  9763. "name": "start_date",
  9764. "detail": "\u7528\u4E8E\u8BA1\u7B97\u51C0\u5DE5\u4F5C\u65E5\u5929\u6570\u7684\u65F6\u95F4\u6BB5\u5F00\u59CB\u65E5\u671F\u3002"
  9765. },
  9766. {
  9767. "name": "end_date",
  9768. "detail": "\u7528\u4E8E\u8BA1\u7B97\u51C0\u5DE5\u4F5C\u65E5\u5929\u6570\u7684\u65F6\u95F4\u6BB5\u7ED3\u675F\u65E5\u671F\u3002"
  9769. },
  9770. {
  9771. "name": "holidays",
  9772. "detail": "[\u53EF\u9009] - \u4E00\u4E2A\u8303\u56F4\u6216\u6570\u7EC4\u5E38\u91CF\uFF0C\u5176\u4E2D\u5305\u542B\u4F5C\u4E3A\u8282\u5047\u65E5\u7684\u65E5\u671F\u5E8F\u53F7\u3002\n\n\u5728\u8282\u5047\u65E5\u6570\u7EC4\u4E2D\u63D0\u4F9B\u7684\u503C\u5FC5\u987B\u662F\u65E5\u671F\u5E8F\u53F7\u503C\uFF08\u4F8B\u5982\u7531N\u6240\u8FD4\u56DE\u7684\u503C\uFF09\u6216\u65E5\u671F\u503C\uFF08\u4F8B\u5982\u7531DATE\u3001DATEVALUE\u6216TO_DATE\u8FD4\u56DE\u7684\u503C\uFF09\u3002\u7531\u8303\u56F4\u6307\u5B9A\u7684\u503C\u5E94\u8BE5\u662F\u6807\u51C6\u7684\u65E5\u671F\u503C\u6216\u65E5\u671F\u5E8F\u6570\u503C\u3002"
  9773. }
  9774. ]
  9775. },
  9776. "NETWORKDAYS_INTL": {
  9777. "d": "\u8FD4\u56DE\u7ED9\u5B9A\u7684\u4E24\u4E2A\u65E5\u671F\u4E4B\u95F4\u7684\u51C0\u5DE5\u4F5C\u65E5\u5929\u6570\uFF08\u6392\u9664\u6307\u5B9A\u7684\u5468\u672B\u548C\u8282\u5047\u65E5\uFF09\u3002",
  9778. "a": "\u8FD4\u56DE\u7ED9\u5B9A\u7684\u4E24\u4E2A\u65E5\u671F\u4E4B\u95F4\u7684\u51C0\u5DE5\u4F5C\u65E5\u5929\u6570\uFF08\u6392\u9664\u6307\u5B9A\u7684\u5468\u672B\u548C\u8282\u5047\u65E5\uFF09\u3002",
  9779. "p": [
  9780. {
  9781. "name": "start_date",
  9782. "detail": "\u7528\u4E8E\u8BA1\u7B97\u51C0\u5DE5\u4F5C\u65E5\u5929\u6570\u7684\u65F6\u95F4\u6BB5\u5F00\u59CB\u65E5\u671F\u3002"
  9783. },
  9784. {
  9785. "name": "end_date",
  9786. "detail": "\u7528\u4E8E\u8BA1\u7B97\u51C0\u5DE5\u4F5C\u65E5\u5929\u6570\u7684\u65F6\u95F4\u6BB5\u7ED3\u675F\u65E5\u671F\u3002"
  9787. },
  9788. {
  9789. "name": "weekend",
  9790. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u503C\u4E3A1] - \u7528\u4E8E\u8868\u793A\u54EA\u4E9B\u5929\u4E3A\u5468\u672B\u7684\u6570\u5B57\u6216\u5B57\u7B26\u4E32\u3002\n\u5B57\u7B26\u4E32\u65B9\u5F0F\uFF1A\u53EF\u4EE5\u4F7F\u7528\u75310\u548C1\u7EC4\u6210\u7684\u5B57\u7B26\u4E32\u6765\u6307\u5B9A\u5468\u672B\uFF0C\u4E32\u4E2D\u7684\u7B2C\u4E00\u4E2A\u6570\u5B57\u5B57\u7B26\u4EE3\u8868\u5468\u4E00\uFF0C\u6700\u540E\u4E00\u4E2A\u5219\u4EE3\u8868\u5468\u65E5\u3002\u96F6\u8868\u793A\u8FD9\u4E00\u5929\u662F\u5DE5\u4F5C\u65E5\uFF0C1\u8868\u793A\u8FD9\u4E00\u5929\u4E3A\u5468\u672B\u3002\u4F8B\u5982\uFF0C\u201C0000011\u201D\u8868\u793A\u5C06\u5468\u516D\u548C\u5468\u65E5\u4F5C\u4E3A\u5468\u672B\u3002\n\u6570\u5B57\u65B9\u5F0F\uFF1A\u8FD9\u79CD\u65B9\u5F0F\u4E0D\u4F7F\u7528\u4E0A\u8FF0\u5B57\u7B26\u4E32\u5F62\u5F0F\uFF0C\u800C\u662F\u4F7F\u7528\u4E00\u4E2A\u6570\u5B57\u30021 =\u5468\u516D/\u5468\u65E5\u4E3A\u5468\u672B\uFF0C2 =\u5468\u65E5/\u5468\u4E00\u4E3A\u5468\u672B\uFF0C\u4F9D\u6B64\u7C7B\u63A8\u52197 =\u5468\u4E94/\u5468\u516D\u300211 =\u5468\u65E5\u4E3A\u552F\u4E00\u5468\u672B\uFF0C12 =\u5468\u4E00\u4E3A\u552F\u4E00\u5468\u672B\uFF0C\u4F9D\u6B64\u7C7B\u63A8\u521917 =\u5468\u516D\u4E3A\u552F\u4E00\u5468\u672B\u3002"
  9791. },
  9792. {
  9793. "name": "holidays",
  9794. "detail": "[ \u53EF\u9009 ] - \u8FD9\u662F\u4E00\u4E2A\u8303\u56F4\u6216\u6570\u7EC4\u5E38\u91CF\uFF0C\u5176\u4E2D\u5305\u542B\u4F5C\u4E3A\u8282\u5047\u65E5\u7684\u65E5\u671F\u3002\n\u5728\u8282\u5047\u65E5\u6570\u7EC4\u5185\u63D0\u4F9B\u7684\u503C\u5FC5\u987B\u4E3A\u65E5\u671F\u5E8F\u6570\u503C\uFF08\u4F8B\u5982N\u7684\u8FD4\u56DE\u503C\uFF09\u6216\u65E5\u671F\u503C\uFF08\u4F8B\u5982DATE\u3001DATEVALUE\u6216TO_DATE\u7684\u8FD4\u56DE\u503C\uFF09\u3002\u7531\u8303\u56F4\u6307\u5B9A\u7684\u503C\u5E94\u8BE5\u662F\u6807\u51C6\u7684\u65E5\u671F\u503C\u6216\u65E5\u671F\u5E8F\u6570\u503C\u3002"
  9795. }
  9796. ]
  9797. },
  9798. "ISOWEEKNUM": {
  9799. "d": "\u8FD4\u56DE\u7ED9\u5B9A\u65E5\u671F\u5728\u5168\u5E74\u4E2D\u7684 ISO \u5468\u6570\u3002",
  9800. "a": "\u8FD4\u56DE\u7ED9\u5B9A\u65E5\u671F\u5728\u5168\u5E74\u4E2D\u7684 ISO \u5468\u6570\u3002",
  9801. "p": [
  9802. {
  9803. "name": "date",
  9804. "detail": "\u7528\u4E8E\u65E5\u671F\u548C\u65F6\u95F4\u8BA1\u7B97\u7684\u65E5\u671F-\u65F6\u95F4\u4EE3\u7801\u3002"
  9805. }
  9806. ]
  9807. },
  9808. "WEEKNUM": {
  9809. "d": "\u8FD4\u56DE\u7279\u5B9A\u65E5\u671F\u7684\u5468\u6570\u3002",
  9810. "a": "\u8FD4\u56DE\u7279\u5B9A\u65E5\u671F\u7684\u5468\u6570\u3002",
  9811. "p": [
  9812. {
  9813. "name": "serial_number",
  9814. "detail": "\u8981\u786E\u5B9A\u5176\u4F4D\u4E8E\u7B2C\u51E0\u5468\u7684\u65E5\u671F\uFF0C\u5FC5\u987B\u662F\u5BF9\u5305\u542B\u65E5\u671F\u7684\u5355\u5143\u683C\u7684\u5F15\u7528\u3001\u8FD4\u56DE\u65E5\u671F\u7C7B\u578B\u7684\u51FD\u6570\u6216\u8005\u6570\u5B57\u3002"
  9815. },
  9816. {
  9817. "name": "return_type",
  9818. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u503C\u4E3A 1 ] - \u4EE3\u8868\u4E00\u5468\u8D77\u59CB\u65E5\u7684\u6570\u5B57\uFF0C\u7CFB\u7EDF\u4E5F\u4F7F\u7528\u8BE5\u6570\u5B57\u6765\u786E\u5B9A\u4E00\u5E74\u7684\u7B2C\u4E00\u5468\uFF081=\u5468\u65E5\uFF0C2=\u5468\u4E00\uFF09\u3002"
  9819. }
  9820. ]
  9821. },
  9822. "WEEKDAY": {
  9823. "d": "\u8FD4\u56DE\u4E00\u4E2A\u6570\u5B57\uFF0C\u5BF9\u5E94\u4E8E\u7ED9\u5B9A\u65E5\u671F\u6240\u5728\u7684\u661F\u671F\u51E0\u3002",
  9824. "a": "\u8FD4\u56DE\u4E00\u4E2A\u6570\u5B57\uFF0C\u5BF9\u5E94\u4E8E\u7ED9\u5B9A\u65E5\u671F\u6240\u5728\u7684\u661F\u671F\u51E0\u3002",
  9825. "p": [
  9826. {
  9827. "name": "serial_number",
  9828. "detail": "\u8981\u4E3A\u5176\u786E\u5B9A\u661F\u671F\u51E0\u7684\u65E5\u671F\u3002\u5FC5\u987B\u662F\u5BF9\u5305\u542B\u65E5\u671F\u7684\u5355\u5143\u683C\u7684\u5F15\u7528\u3001\u8FD4\u56DE\u65E5\u671F\u7C7B\u578B\u7684\u51FD\u6570\u6216\u8005\u6570\u5B57\u3002"
  9829. },
  9830. {
  9831. "name": "return_type",
  9832. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u503C\u4E3A 1] - \u4EE5\u6570\u5B57\u6307\u793A\u4F7F\u7528\u54EA\u79CD\u7F16\u53F7\u987A\u5E8F\u6765\u8868\u793A\u661F\u671F\u51E0\u3002\u9ED8\u8BA4\u60C5\u51B5\u4E0B\uFF0C\u6309\u661F\u671F\u65E5 (= 1) \u5F00\u59CB\u8BA1\u7B97\u3002\n\n\u5982\u679C\u7C7B\u578B\u4E3A 1\uFF0C\u5219\u661F\u671F\u503C\u5C06\u4ECE\u661F\u671F\u65E5\u5F00\u59CB\u7B97\u8D77\uFF0C\u5E76\u4E14\u661F\u671F\u65E5\u7684\u503C\u4E3A 1\uFF0C\u56E0\u6B64\u661F\u671F\u516D\u7684\u503C\u5C31\u662F 7\u3002\n\n\u5982\u679C\u7C7B\u578B\u4E3A 2\uFF0C\u5219\u661F\u671F\u503C\u5C06\u4ECE\u661F\u671F\u4E00\u5F00\u59CB\u7B97\u8D77\uFF0C\u5E76\u4E14\u661F\u671F\u4E00\u7684\u503C\u4E3A 1\uFF0C\u56E0\u6B64\u661F\u671F\u65E5\u7684\u503C\u5C31\u662F 7\u3002\n\n\u5982\u679C\u7C7B\u578B\u4E3A 3\uFF0C\u5219\u661F\u671F\u503C\u5C06\u4ECE\u661F\u671F\u4E00\u7B97\u8D77\uFF0C\u5E76\u4E14\u661F\u671F\u4E00\u7684\u503C\u4E3A 0\uFF0C\u56E0\u6B64\u661F\u671F\u65E5\u7684\u503C\u5C31\u662F 6\u3002"
  9833. }
  9834. ]
  9835. },
  9836. "DAY": {
  9837. "d": "\u4EE5\u6570\u5B57\u683C\u5F0F\u8FD4\u56DE\u7279\u5B9A\u65E5\u671F\u6240\u5728\u7684\u5F53\u6708\u51E0\u53F7\u3002",
  9838. "a": "\u4EE5\u6570\u5B57\u683C\u5F0F\u8FD4\u56DE\u7279\u5B9A\u65E5\u671F\u6240\u5728\u7684\u5F53\u6708\u51E0\u53F7\u3002",
  9839. "p": [
  9840. {
  9841. "name": "serial_number",
  9842. "detail": "\u8981\u4ECE\u4E2D\u63D0\u53D6\u5177\u4F53\u51E0\u53F7\u7684\u65E5\u671F\u3002\u5FC5\u987B\u662F\u4EE5\u4E0B\u4E00\u79CD\uFF1A\u5BF9\u5305\u542B\u65E5\u671F\u7684\u5355\u5143\u683C\u7684\u5F15\u7528\u3001\u8FD4\u56DE\u65E5\u671F\u7C7B\u578B\u7684\u51FD\u6570\u6216\u8005\u6570\u5B57\u3002"
  9843. }
  9844. ]
  9845. },
  9846. "DAYS": {
  9847. "d": "\u8FD4\u56DE\u4E24\u4E2A\u65E5\u671F\u4E4B\u95F4\u7684\u5929\u6570\u3002",
  9848. "a": "\u8FD4\u56DE\u4E24\u4E2A\u65E5\u671F\u4E4B\u95F4\u7684\u5929\u6570\u3002",
  9849. "p": [
  9850. {
  9851. "name": "end_date",
  9852. "detail": "\u8BA1\u7B97\u4E2D\u8981\u4F7F\u7528\u7684\u7ED3\u675F\u65E5\u671F\u3002\u5FC5\u987B\u662F\u4EE5\u4E0B\u4E00\u79CD\uFF1A\u5BF9\u5305\u542B\u65E5\u671F\u7684\u5355\u5143\u683C\u7684\u5F15\u7528\u3001\u8FD4\u56DE\u65E5\u671F\u7C7B\u578B\u7684\u51FD\u6570\u6216\u8005\u6570\u5B57\u3002"
  9853. },
  9854. {
  9855. "name": "start_date",
  9856. "detail": "\u8BA1\u7B97\u4E2D\u8981\u4F7F\u7528\u7684\u5F00\u59CB\u65E5\u671F\u3002\u5FC5\u987B\u662F\u4EE5\u4E0B\u4E00\u79CD\uFF1A\u5BF9\u5305\u542B\u65E5\u671F\u7684\u5355\u5143\u683C\u7684\u5F15\u7528\u3001\u8FD4\u56DE\u65E5\u671F\u7C7B\u578B\u7684\u51FD\u6570\u6216\u8005\u6570\u5B57\u3002"
  9857. }
  9858. ]
  9859. },
  9860. "DAYS360": {
  9861. "d": "\u6309\u7167\u6BCF\u5E74360\u5929\uFF0C\u8FD4\u56DE\u4E24\u4E2A\u65E5\u671F\u4E4B\u95F4\u7684\u5DEE\uFF08\u7528\u4E8E\u8BA1\u7B97\u5229\u606F\uFF09\u3002",
  9862. "a": "\u6309\u7167\u6BCF\u5E74360\u5929\uFF0C\u8FD4\u56DE\u4E24\u4E2A\u65E5\u671F\u4E4B\u95F4\u7684\u5DEE\uFF08\u7528\u4E8E\u8BA1\u7B97\u5229\u606F\uFF09\u3002",
  9863. "p": [
  9864. {
  9865. "name": "start_date",
  9866. "detail": "\u8BA1\u7B97\u4E2D\u8981\u4F7F\u7528\u7684\u5F00\u59CB\u65E5\u671F\u3002\u5FC5\u987B\u662F\u4EE5\u4E0B\u4E00\u79CD\uFF1A\u5BF9\u5305\u542B\u65E5\u671F\u7684\u5355\u5143\u683C\u7684\u5F15\u7528\u3001\u8FD4\u56DE\u65E5\u671F\u7C7B\u578B\u7684\u51FD\u6570\u6216\u8005\u6570\u5B57\u3002"
  9867. },
  9868. {
  9869. "name": "end_date",
  9870. "detail": "\u8BA1\u7B97\u4E2D\u8981\u4F7F\u7528\u7684\u7ED3\u675F\u65E5\u671F\u3002\u5FC5\u987B\u662F\u4EE5\u4E0B\u4E00\u79CD\uFF1A\u5BF9\u5305\u542B\u65E5\u671F\u7684\u5355\u5143\u683C\u7684\u5F15\u7528\u3001\u8FD4\u56DE\u65E5\u671F\u7C7B\u578B\u7684\u51FD\u6570\u6216\u8005\u6570\u5B57\u3002"
  9871. },
  9872. {
  9873. "name": "method",
  9874. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u4E3AFALSE()] - \u6307\u793A\u8981\u4F7F\u7528\u54EA\u79CD\u5929\u6570\u8BA1\u7B97\u65B9\u6CD5\u3002\n\nFALSE - \u91C7\u7528\u7F8E\u56FD (NASD) \u65B9\u6CD5\u65F6\uFF0C\u5982\u679C\u8D77\u59CB\u65E5\u671F\u4E3A\u67D0\u6708\u7684\u6700\u540E\u4E00\u5929\uFF0C\u4E3A\u4FBF\u4E8E\u8BA1\u7B97\uFF0C\u4F1A\u5C06\u8D77\u59CB\u65E5\u671F\u7684\u5F53\u6708\u51E0\u53F7\u66F4\u6539\u4E3A30\u3002\u6B64\u5916\uFF0C\u5982\u679C\u7ED3\u675F\u65E5\u671F\u662F\u6240\u5728\u6708\u4EFD\u7684\u6700\u540E\u4E00\u5929\uFF0C\u800C\u4E14\u8D77\u59CB\u65E5\u671F\u5728\u5176\u6240\u5728\u6708\u768430\u53F7\u4E4B\u524D\uFF0C\u5219\u5C06\u7ED3\u675F\u65E5\u671F\u66F4\u6539\u4E3A\u7ED3\u675F\u65E5\u671F\u4E4B\u540E\u90A3\u4E2A\u6708\u7684\u7B2C\u4E00\u5929\uFF0C\u5426\u5219\u5C06\u7ED3\u675F\u65E5\u671F\u66F4\u6539\u4E3A\u8BE5\u6708\u768430\u53F7\u3002\n\nTRUE - \u91C7\u7528\u6B27\u6D32\u65B9\u6CD5\u65F6\uFF0C\u4F1A\u5C06\u6240\u6709\u65E5\u671F\u572831\u53F7\u7684\u8D77\u59CB\u65E5\u671F\u6216\u7ED3\u675F\u65E5\u671F\u66F4\u6539\u4E3A\u5F53\u6708\u768430\u53F7\u3002"
  9875. }
  9876. ]
  9877. },
  9878. "DATE": {
  9879. "d": "\u5C06\u63D0\u4F9B\u7684\u5E74\u3001\u6708\u3001\u65E5\u8F6C\u6362\u4E3A\u65E5\u671F\u3002",
  9880. "a": "\u5C06\u63D0\u4F9B\u7684\u5E74\u3001\u6708\u3001\u65E5\u8F6C\u6362\u4E3A\u65E5\u671F\u3002",
  9881. "p": [
  9882. {
  9883. "name": "year",
  9884. "detail": "\u65E5\u671F\u7684\u5E74\u4EFD\u90E8\u5206\uFF0C\u5305\u542B\u4E00\u5230\u56DB\u4F4D\u6570\u5B57\u3002\n\n\u4ECB\u4E8E 0\uFF08\u96F6\uFF09\u5230 1899 \u4E4B\u95F4\uFF0C\u4F1A\u5C06\u8BE5\u503C\u4E0E 1900 \u76F8\u52A0\u6765\u8BA1\u7B97\u5E74\u4EFD\uFF1B\n\n\u4ECB\u4E8E 1900 \u5230 9999 \u4E4B\u95F4\uFF0C\u5C06\u4F7F\u7528\u8BE5\u6570\u503C\u4F5C\u4E3A\u5E74\u4EFD\uFF1B\n\n\u5C0F\u4E8E 0 \u6216\u5927\u4E8E\u7B49\u4E8E 10000\uFF0C\u8FD4\u56DE \u9519\u8BEF\u503C #NUM!\u3002"
  9885. },
  9886. {
  9887. "name": "month",
  9888. "detail": "\u65E5\u671F\u7684\u6708\u4EFD\u90E8\u5206\uFF0C\u4E00\u4E2A\u6B63\u6574\u6570\u6216\u8D1F\u6574\u6570\u3002\n\n\u5982\u679C month \u5927\u4E8E 12\uFF0C\u5219 month \u4F1A\u5C06\u8BE5\u6708\u4EFD\u6570\u4E0E\u6307\u5B9A\u5E74\u4E2D\u7684\u7B2C\u4E00\u4E2A\u6708\u76F8\u52A0\u3002\n\n\u5982\u679C month \u5C0F\u4E8E 1\uFF0Cmonth \u5219\u4ECE\u6307\u5B9A\u5E74\u4EFD\u7684\u4E00\u6708\u4EFD\u5F00\u59CB\u9012\u51CF\u8BE5\u6708\u4EFD\u6570\uFF0C\u7136\u540E\u518D\u52A0\u4E0A 1 \u4E2A\u6708\u3002"
  9889. },
  9890. {
  9891. "name": "day",
  9892. "detail": "\u65E5\u671F\u7684\u65E5\u90E8\u5206\uFF0C\u4E00\u4E2A\u6B63\u6574\u6570\u6216\u8D1F\u6574\u6570\u3002\n\n\u5982\u679C day \u5927\u4E8E\u6708\u4E2D\u6307\u5B9A\u7684\u5929\u6570\uFF0C\u5219 day \u4F1A\u5C06\u5929\u6570\u4E0E\u8BE5\u6708\u4E2D\u7684\u7B2C\u4E00\u5929\u76F8\u52A0\u3002\n\n\u5982\u679C day \u5C0F\u4E8E 1\uFF0C\u5219 day \u4ECE\u6307\u5B9A\u6708\u4EFD\u7684\u7B2C\u4E00\u5929\u5F00\u59CB\u9012\u51CF\u8BE5\u5929\u6570\uFF0C\u7136\u540E\u518D\u52A0\u4E0A 1 \u5929\u3002"
  9893. }
  9894. ]
  9895. },
  9896. "DATEVALUE": {
  9897. "d": "\u5C06\u63D0\u4F9B\u7684\u65E5\u671F\u5B57\u7B26\u4E32\u8F6C\u6362\u4E3A\u65E5\u671F\u7684\u5E8F\u5217\u53F7\u3002",
  9898. "a": "\u5C06\u63D0\u4F9B\u7684\u65E5\u671F\u5B57\u7B26\u4E32\u8F6C\u6362\u4E3A\u65E5\u671F\u7684\u5E8F\u5217\u53F7\u3002",
  9899. "p": [
  9900. {
  9901. "name": "date_text",
  9902. "detail": "\u8868\u793A\u65E5\u671F\u7684\u5B57\u7B26\u4E32\u3002"
  9903. }
  9904. ]
  9905. },
  9906. "DATEDIF": {
  9907. "d": "\u8BA1\u7B97\u4E24\u4E2A\u65E5\u671F\u4E4B\u95F4\u7684\u5929\u6570\u3001\u6708\u6570\u6216\u5E74\u6570\u3002",
  9908. "a": "\u8BA1\u7B97\u4E24\u4E2A\u65E5\u671F\u4E4B\u95F4\u7684\u5929\u6570\u3001\u6708\u6570\u6216\u5E74\u6570\u3002",
  9909. "p": [
  9910. {
  9911. "name": "\u8D77\u59CB\u65E5\u671F",
  9912. "detail": "\u8BA1\u7B97\u4E2D\u8981\u4F7F\u7528\u7684\u5F00\u59CB\u65E5\u671F\u3002\u5FC5\u987B\u662F\u5BF9\u5305\u542BDATE\u503C\u7684\u5355\u5143\u683C\u7684\u5F15\u7528\u3001\u8FD4\u56DEDATE\u7C7B\u578B\u7684\u51FD\u6570\u6216\u6570\u5B57\u3002"
  9913. },
  9914. {
  9915. "name": "\u7ED3\u675F\u65E5\u671F",
  9916. "detail": "\u8BA1\u7B97\u4E2D\u8981\u4F7F\u7528\u7684\u7ED3\u675F\u65E5\u671F\u3002\u5FC5\u987B\u662F\u5BF9\u5305\u542BDATE\u503C\u7684\u5355\u5143\u683C\u7684\u5F15\u7528\u3001\u8FD4\u56DEDATE\u7C7B\u578B\u7684\u51FD\u6570\u6216\u6570\u5B57\u3002"
  9917. },
  9918. {
  9919. "name": "\u5355\u4F4D",
  9920. "detail": '\u65F6\u95F4\u5355\u4F4D\u7684\u7F29\u5199\u6587\u5B57\u3002\u4F8B\u5982 "M" \u4EE3\u8868\u6708\u3002\u6709\u6548\u503C\u5305\u62EC\uFF1A"Y"\u3001"M"\u3001"D"\u3001"MD"\u3001"YM" \u548C "YD"\u3002\n\n"Y"\uFF1A\u8FD4\u56DE\u8D77\u59CB\u65E5\u671F\u548C\u7ED3\u675F\u65E5\u671F\u4E4B\u95F4\u7684\u6574\u5E74\u6570\u3002\n\n"M"\uFF1A\u8FD4\u56DE\u8D77\u59CB\u65E5\u671F\u548C\u7ED3\u675F\u65E5\u671F\u4E4B\u95F4\u7684\u6574\u6708\u6570\u3002\n\n"D"\uFF1A\u8FD4\u56DE\u8D77\u59CB\u65E5\u671F\u548C\u7ED3\u675F\u65E5\u671F\u4E4B\u95F4\u7684\u5929\u6570\u3002\n\n"MD"\uFF1A\u8FD4\u56DE\u8D77\u59CB\u65E5\u671F\u548C\u7ED3\u675F\u65E5\u671F\u4E4B\u95F4\u7684\u5929\u6570\uFF08\u4E0D\u8BA1\u6574\u6708\u6570\uFF09\u3002\n\n"YM"\uFF1A\u8FD4\u56DE\u8D77\u59CB\u65E5\u671F\u548C\u7ED3\u675F\u65E5\u671F\u4E4B\u95F4\u7684\u6574\u6708\u6570\uFF08\u4E0D\u8BA1\u6574\u5E74\u6570\uFF09\u3002\n\n"YD"\uFF1A\u8FD4\u56DE\u8D77\u59CB\u65E5\u671F\u548C\u7ED3\u675F\u65E5\u671F\u4E4B\u95F4\u7684\u5929\u6570\uFF08\u5047\u8BBE\u8D77\u59CB\u65E5\u671F\u548C\u7ED3\u675F\u65E5\u671F\u7684\u95F4\u9694\u4E0D\u8D85\u8FC7\u4E00\u5E74\uFF09\u3002'
  9921. }
  9922. ]
  9923. },
  9924. "WORKDAY": {
  9925. "d": "\u6307\u5B9A\u5DE5\u4F5C\u65E5\u5929\u6570\uFF0C\u8BA1\u7B97\u7ED3\u675F\u65E5\u671F\u3002",
  9926. "a": "\u6307\u5B9A\u5DE5\u4F5C\u65E5\u5929\u6570\uFF0C\u8BA1\u7B97\u7ED3\u675F\u65E5\u671F\u3002",
  9927. "p": [
  9928. {
  9929. "name": "start_date",
  9930. "detail": "\u8BA1\u7B97\u7684\u5F00\u59CB\u65E5\u671F\u3002"
  9931. },
  9932. {
  9933. "name": "days",
  9934. "detail": "start_date \u4E4B\u524D\u6216\u4E4B\u540E\u4E0D\u542B\u5468\u672B\u53CA\u8282\u5047\u65E5\u7684\u5929\u6570\u3002\n\n\u4E3A\u6B63\u503C\u5C06\u751F\u6210\u672A\u6765\u65E5\u671F\uFF1B\n\n\u4E3A\u8D1F\u503C\u751F\u6210\u8FC7\u53BB\u65E5\u671F\u3002"
  9935. },
  9936. {
  9937. "name": "holidays",
  9938. "detail": "[\u53EF\u9009] - \u4E00\u4E2A\u8303\u56F4\u6216\u6570\u7EC4\u5E38\u91CF\uFF0C\u5176\u4E2D\u5305\u542B\u4F5C\u4E3A\u8282\u5047\u65E5\u7684\u65E5\u671F\u5E8F\u53F7\u3002\n\n\u5728\u8282\u5047\u65E5\u6570\u7EC4\u4E2D\u63D0\u4F9B\u7684\u503C\u5FC5\u987B\u662F\u65E5\u671F\u5E8F\u53F7\u503C\uFF08\u4F8B\u5982\u7531N\u6240\u8FD4\u56DE\u7684\u503C\uFF09\u6216\u65E5\u671F\u503C\uFF08\u4F8B\u5982\u7531DATE\u3001DATEVALUE\u6216TO_DATE\u8FD4\u56DE\u7684\u503C\uFF09\u3002\u7531\u8303\u56F4\u6307\u5B9A\u7684\u503C\u5E94\u8BE5\u662F\u6807\u51C6\u7684\u65E5\u671F\u503C\u6216\u65E5\u671F\u5E8F\u6570\u503C\u3002"
  9939. }
  9940. ]
  9941. },
  9942. "WORKDAY_INTL": {
  9943. "d": "\u8FD4\u56DE\u6307\u5B9A\u7684\u82E5\u5E72\u4E2A\u5DE5\u4F5C\u65E5\u4E4B\u524D\u6216\u4E4B\u540E\u7684\u65E5\u671F\u7684\u5E8F\u5217\u53F7\uFF08\u4F7F\u7528\u81EA\u5B9A\u4E49\u5468\u672B\u53C2\u6570\uFF09\u3002 ",
  9944. "a": "\u8FD4\u56DE\u6307\u5B9A\u7684\u82E5\u5E72\u4E2A\u5DE5\u4F5C\u65E5\u4E4B\u524D\u6216\u4E4B\u540E\u7684\u65E5\u671F\u7684\u5E8F\u5217\u53F7\uFF08\u4F7F\u7528\u81EA\u5B9A\u4E49\u5468\u672B\u53C2\u6570\uFF09\u3002 ",
  9945. "p": [
  9946. {
  9947. "name": "start_date",
  9948. "detail": "\u5F00\u59CB\u65E5\u671F\uFF08\u5C06\u88AB\u622A\u5C3E\u53D6\u6574\uFF09\u3002"
  9949. },
  9950. {
  9951. "name": "days",
  9952. "detail": "start_date \u4E4B\u524D\u6216\u4E4B\u540E\u7684\u5DE5\u4F5C\u65E5\u7684\u5929\u6570\u3002\n\n\u6B63\u503C\u8868\u793A\u672A\u6765\u65E5\u671F\uFF1B\n\n\u8D1F\u503C\u8868\u793A\u8FC7\u53BB\u65E5\u671F\uFF1B\n\n\u96F6\u503C\u8868\u793A\u5F00\u59CB\u65E5\u671F\u3002"
  9953. },
  9954. {
  9955. "name": "weekend",
  9956. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u503C\u4E3A1] - \u7528\u4E8E\u8868\u793A\u54EA\u4E9B\u5929\u4E3A\u5468\u672B\u7684\u6570\u5B57\u6216\u5B57\u7B26\u4E32\u3002\n\u5B57\u7B26\u4E32\u65B9\u5F0F\uFF1A\u53EF\u4EE5\u4F7F\u7528\u75310\u548C1\u7EC4\u6210\u7684\u5B57\u7B26\u4E32\u6765\u6307\u5B9A\u5468\u672B\uFF0C\u4E32\u4E2D\u7684\u7B2C\u4E00\u4E2A\u6570\u5B57\u5B57\u7B26\u4EE3\u8868\u5468\u4E00\uFF0C\u6700\u540E\u4E00\u4E2A\u5219\u4EE3\u8868\u5468\u65E5\u3002\u96F6\u8868\u793A\u8FD9\u4E00\u5929\u662F\u5DE5\u4F5C\u65E5\uFF0C1\u8868\u793A\u8FD9\u4E00\u5929\u4E3A\u5468\u672B\u3002\u4F8B\u5982\uFF0C\u201C0000011\u201D\u8868\u793A\u5C06\u5468\u516D\u548C\u5468\u65E5\u4F5C\u4E3A\u5468\u672B\u3002\n\u6570\u5B57\u65B9\u5F0F\uFF1A\u8FD9\u79CD\u65B9\u5F0F\u4E0D\u4F7F\u7528\u4E0A\u8FF0\u5B57\u7B26\u4E32\u5F62\u5F0F\uFF0C\u800C\u662F\u4F7F\u7528\u4E00\u4E2A\u6570\u5B57\u30021 =\u5468\u516D/\u5468\u65E5\u4E3A\u5468\u672B\uFF0C2 =\u5468\u65E5/\u5468\u4E00\u4E3A\u5468\u672B\uFF0C\u4F9D\u6B64\u7C7B\u63A8\u52197 =\u5468\u4E94/\u5468\u516D\u300211 =\u5468\u65E5\u4E3A\u552F\u4E00\u5468\u672B\uFF0C12 =\u5468\u4E00\u4E3A\u552F\u4E00\u5468\u672B\uFF0C\u4F9D\u6B64\u7C7B\u63A8\u521917 =\u5468\u516D\u4E3A\u552F\u4E00\u5468\u672B\u3002"
  9957. },
  9958. {
  9959. "name": "holidays",
  9960. "detail": "[ \u53EF\u9009 ] - \u8FD9\u662F\u4E00\u4E2A\u8303\u56F4\u6216\u6570\u7EC4\u5E38\u91CF\uFF0C\u5176\u4E2D\u5305\u542B\u4F5C\u4E3A\u8282\u5047\u65E5\u7684\u65E5\u671F\u3002\n\u5728\u8282\u5047\u65E5\u6570\u7EC4\u5185\u63D0\u4F9B\u7684\u503C\u5FC5\u987B\u4E3A\u65E5\u671F\u5E8F\u6570\u503C\uFF08\u4F8B\u5982N\u7684\u8FD4\u56DE\u503C\uFF09\u6216\u65E5\u671F\u503C\uFF08\u4F8B\u5982DATE\u3001DATEVALUE\u6216TO_DATE\u7684\u8FD4\u56DE\u503C\uFF09\u3002\u7531\u8303\u56F4\u6307\u5B9A\u7684\u503C\u5E94\u8BE5\u662F\u6807\u51C6\u7684\u65E5\u671F\u503C\u6216\u65E5\u671F\u5E8F\u6570\u503C\u3002"
  9961. }
  9962. ]
  9963. },
  9964. "YEAR": {
  9965. "d": "\u8FD4\u56DE\u5BF9\u5E94\u4E8E\u67D0\u4E2A\u65E5\u671F\u7684\u5E74\u4EFD\u3002 Year \u4F5C\u4E3A 1900 - 9999 \u4E4B\u95F4\u7684\u6574\u6570\u8FD4\u56DE\u3002",
  9966. "a": "\u8FD4\u56DE\u5BF9\u5E94\u4E8E\u67D0\u4E2A\u65E5\u671F\u7684\u5E74\u4EFD\u3002 Year \u4F5C\u4E3A 1900 - 9999 \u4E4B\u95F4\u7684\u6574\u6570\u8FD4\u56DE\u3002",
  9967. "p": [
  9968. {
  9969. "name": "serial_number",
  9970. "detail": "\u7528\u4E8E\u8BA1\u7B97\u5E74\u4EFD\u7684\u65E5\u671F\u3002\u5FC5\u987B\u662F\u4EE5\u4E0B\u4E00\u79CD\uFF1A\u5BF9\u5305\u542B\u65E5\u671F\u7684\u5355\u5143\u683C\u7684\u5F15\u7528\u3001\u8FD4\u56DE\u65E5\u671F\u7C7B\u578B\u7684\u51FD\u6570\u6216\u8005\u6570\u5B57\u3002"
  9971. }
  9972. ]
  9973. },
  9974. "YEARFRAC": {
  9975. "d": "\u8FD4\u56DE start_date \u548C end_date \u4E4B\u95F4\u7684\u5929\u6570\u5360\u5168\u5E74\u5929\u6570\u7684\u767E\u5206\u6BD4\u3002",
  9976. "a": "\u8FD4\u56DE start_date \u548C end_date \u4E4B\u95F4\u7684\u5929\u6570\u5360\u5168\u5E74\u5929\u6570\u7684\u767E\u5206\u6BD4\u3002",
  9977. "p": [
  9978. {
  9979. "name": "start_date",
  9980. "detail": "\u8BA1\u7B97\u4E2D\u8981\u4F7F\u7528\u7684\u5F00\u59CB\u65E5\u671F\u3002\u5FC5\u987B\u662F\u4EE5\u4E0B\u4E00\u79CD\uFF1A\u5BF9\u5305\u542B\u65E5\u671F\u7684\u5355\u5143\u683C\u7684\u5F15\u7528\u3001\u8FD4\u56DE\u65E5\u671F\u7C7B\u578B\u7684\u51FD\u6570\u6216\u8005\u6570\u5B57\u3002"
  9981. },
  9982. {
  9983. "name": "end_date",
  9984. "detail": "\u8BA1\u7B97\u4E2D\u8981\u4F7F\u7528\u7684\u7ED3\u675F\u65E5\u671F\u3002\u5FC5\u987B\u662F\u4EE5\u4E0B\u4E00\u79CD\uFF1A\u5BF9\u5305\u542B\u65E5\u671F\u7684\u5355\u5143\u683C\u7684\u5F15\u7528\u3001\u8FD4\u56DE\u65E5\u671F\u7C7B\u578B\u7684\u51FD\u6570\u6216\u8005\u6570\u5B57\u3002"
  9985. },
  9986. {
  9987. "name": "basis",
  9988. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u4E3A0] - \u8981\u4F7F\u7528\u7684\u65E5\u8BA1\u6570\u57FA\u51C6\u7C7B\u578B\u3002\n\n0\u8868\u793A\u201C\u7F8E\u56FD(NASD) 30/360\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u6309\u7167\u7F8E\u56FD\u5168\u56FD\u8BC1\u5238\u4EA4\u6613\u5546\u534F\u4F1A\u6807\u51C6\uFF0C\u5047\u8BBE\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\uFF0C\u5E76\u5BF9\u6240\u8F93\u5165\u7684\u6708\u672B\u65E5\u671F\u8FDB\u884C\u5177\u4F53\u8C03\u6574\u3002\n\n1\u8868\u793A\u201C\u5B9E\u9645/\u5B9E\u9645\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u8BA1\u7B97\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u548C\u6240\u6D89\u53CA\u7684\u5E74\u4EFD\u4E2D\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\u3002\u6B64\u65B9\u6CD5\u7528\u4E8E\u7F8E\u56FD\u957F\u671F\u503A\u5238\uFF0C\u4E5F\u662F\u5728\u975E\u8D22\u7ECF\u7528\u9014\u65B9\u9762\u4F7F\u7528\u6700\u591A\u7684\u65B9\u6CD5\u3002\n\n2\u8868\u793A\u201C\u5B9E\u9645/360\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u5047\u5B9A\u6BCF\u5E74\u4E3A360\u5929\u3002\n\n3\u8868\u793A\u201C\u5B9E\u9645/365\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u5047\u5B9A\u6BCF\u5E74\u4E3A365\u5929\u3002\n\n4\u8868\u793A\u201C\u6B27\u6D3230/360\u201D\u65B9\u6CD5 - \u7C7B\u4F3C\u4E8E0\uFF0C\u6B64\u65B9\u6CD5\u57FA\u4E8E\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u6309\u7167\u6B27\u6D32\u91D1\u878D\u60EF\u4F8B\u5BF9\u6708\u672B\u65E5\u671F\u8FDB\u884C\u8C03\u6574\u3002"
  9989. }
  9990. ]
  9991. },
  9992. "TODAY": {
  9993. "d": "\u4EE5\u65E5\u671F\u503C\u683C\u5F0F\u8FD4\u56DE\u5F53\u524D\u65E5\u671F\u3002",
  9994. "a": "\u4EE5\u65E5\u671F\u503C\u683C\u5F0F\u8FD4\u56DE\u5F53\u524D\u65E5\u671F\u3002",
  9995. "p": []
  9996. },
  9997. "MONTH": {
  9998. "d": "\u8FD4\u56DE\u65E5\u671F\uFF08\u4EE5\u5E8F\u5217\u6570\u8868\u793A\uFF09\u4E2D\u7684\u6708\u4EFD\u3002 \u6708\u4EFD\u662F\u4ECB\u4E8E 1\uFF08\u4E00\u6708\uFF09\u5230 12\uFF08\u5341\u4E8C\u6708\uFF09\u4E4B\u95F4\u7684\u6574\u6570\u3002",
  9999. "a": "\u8FD4\u56DE\u65E5\u671F\uFF08\u4EE5\u5E8F\u5217\u6570\u8868\u793A\uFF09\u4E2D\u7684\u6708\u4EFD\u3002 \u6708\u4EFD\u662F\u4ECB\u4E8E 1\uFF08\u4E00\u6708\uFF09\u5230 12\uFF08\u5341\u4E8C\u6708\uFF09\u4E4B\u95F4\u7684\u6574\u6570\u3002",
  10000. "p": [
  10001. {
  10002. "name": "serial_number",
  10003. "detail": "\u8981\u4ECE\u4E2D\u63D0\u53D6\u6708\u4EFD\u7684\u65E5\u671F\u3002\u5FC5\u987B\u662F\u4EE5\u4E0B\u4E00\u79CD\uFF1A\u5BF9\u5305\u542B\u65E5\u671F\u7684\u5355\u5143\u683C\u7684\u5F15\u7528\u3001\u8FD4\u56DE\u65E5\u671F\u7C7B\u578B\u7684\u51FD\u6570\u6216\u8005\u6570\u5B57\u3002"
  10004. }
  10005. ]
  10006. },
  10007. "EFFECT": {
  10008. "d": "\u6839\u636E\u540D\u4E49\u5229\u7387\u53CA\u6BCF\u5E74\u7684\u590D\u5229\u8BA1\u606F\u671F\u6570\u6765\u8BA1\u7B97\u5B9E\u9645\u5E74\u5229\u7387\u3002",
  10009. "a": "\u6839\u636E\u540D\u4E49\u5229\u7387\u53CA\u6BCF\u5E74\u7684\u590D\u5229\u8BA1\u606F\u671F\u6570\u6765\u8BA1\u7B97\u5B9E\u9645\u5E74\u5229\u7387\u3002",
  10010. "p": [
  10011. {
  10012. "name": "nominal_rate",
  10013. "detail": "\u6BCF\u5E74\u7684\u540D\u4E49\u5229\u7387\u3002"
  10014. },
  10015. {
  10016. "name": "npery",
  10017. "detail": "\u6BCF\u5E74\u7684\u590D\u5229\u8BA1\u7B97\u671F\u6570\u3002"
  10018. }
  10019. ]
  10020. },
  10021. "DOLLAR": {
  10022. "d": "\u5C06\u6570\u5B57\u683C\u5F0F\u8BBE\u7F6E\u4E3A\u4E0E\u8BED\u8A00\u533A\u57DF\u76F8\u5BF9\u5E94\u7684\u8D27\u5E01\u683C\u5F0F\u3002",
  10023. "a": "\u5C06\u6570\u5B57\u683C\u5F0F\u8BBE\u7F6E\u4E3A\u4E0E\u8BED\u8A00\u533A\u57DF\u76F8\u5BF9\u5E94\u7684\u8D27\u5E01\u683C\u5F0F\u3002",
  10024. "p": [
  10025. {
  10026. "name": "number",
  10027. "detail": "\u8981\u8BBE\u7F6E\u683C\u5F0F\u7684\u503C\u3002"
  10028. },
  10029. {
  10030. "name": "decimals",
  10031. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u503C\u4E3A 2] - \u8981\u663E\u793A\u7684\u5C0F\u6570\u4F4D\u6570\u3002\n\n\u5982\u679C\u8FD9\u662F\u8D1F\u6570\uFF0C\u5219\u5C06\u6570\u5B57\u56DB\u820D\u4E94\u5165\u5230\u5C0F\u6570\u70B9\u5DE6\u4FA7\u3002"
  10032. }
  10033. ]
  10034. },
  10035. "DOLLARDE": {
  10036. "d": "\u5C06\u4EE5\u6574\u6570\u90E8\u5206\u548C\u5206\u6570\u90E8\u5206\u8F6C\u6362\u4E3A\u4EE5\u5C0F\u6570\u90E8\u5206\u8868\u793A\u7684\u91D1\u989D\u6570\u5B57",
  10037. "a": "\u5C06\u4EE5\u6574\u6570\u90E8\u5206\u548C\u5206\u6570\u90E8\u5206\u8F6C\u6362\u4E3A\u4EE5\u5C0F\u6570\u90E8\u5206\u8868\u793A\u7684\u91D1\u989D\u6570\u5B57",
  10038. "p": [
  10039. {
  10040. "name": "fractional_dollar",
  10041. "detail": "\u4EE5\u6574\u6570\u90E8\u4EFD\u548C\u5206\u6570\u90E8\u5206\u8868\u793A\u7684\u6570\u5B57\uFF0C\u7528\u5C0F\u6570\u70B9\u9694\u5F00\u3002"
  10042. },
  10043. {
  10044. "name": "fraction",
  10045. "detail": "\u7528\u4F5C\u5206\u6570\u4E2D\u7684\u5206\u6BCD\u7684\u6574\u6570\u3002"
  10046. }
  10047. ]
  10048. },
  10049. "DOLLARFR": {
  10050. "d": "\u5C06\u5C0F\u6570\u8F6C\u6362\u4E3A\u5206\u6570\u8868\u793A\u7684\u91D1\u989D\u6570\u5B57\u3002",
  10051. "a": "\u5C06\u5C0F\u6570\u8F6C\u6362\u4E3A\u5206\u6570\u8868\u793A\u7684\u91D1\u989D\u6570\u5B57\u3002",
  10052. "p": [
  10053. {
  10054. "name": "decimal_dollar",
  10055. "detail": "\u5C0F\u6570\u3002"
  10056. },
  10057. {
  10058. "name": "fraction",
  10059. "detail": "\u7528\u4F5C\u5206\u6570\u4E2D\u7684\u5206\u6BCD\u7684\u6574\u6570\u3002"
  10060. }
  10061. ]
  10062. },
  10063. "DB": {
  10064. "d": "\u4F7F\u7528\u56FA\u5B9A\u4F59\u989D\u9012\u51CF\u6CD5\uFF0C\u8FD4\u56DE\u6307\u5B9A\u671F\u95F4\u5185\u67D0\u9879\u56FA\u5B9A\u8D44\u4EA7\u7684\u6298\u65E7\u503C\u3002",
  10065. "a": "\u4F7F\u7528\u56FA\u5B9A\u4F59\u989D\u9012\u51CF\u6CD5\uFF0C\u8FD4\u56DE\u6307\u5B9A\u671F\u95F4\u5185\u67D0\u9879\u56FA\u5B9A\u8D44\u4EA7\u7684\u6298\u65E7\u503C\u3002",
  10066. "p": [
  10067. {
  10068. "name": "cost",
  10069. "detail": "\u8D44\u4EA7\u539F\u503C\u3002"
  10070. },
  10071. {
  10072. "name": "salvage",
  10073. "detail": "\u6298\u65E7\u672B\u5C3E\u65F6\u7684\u503C\uFF08\u6709\u65F6\u4E5F\u79F0\u4E3A\u8D44\u4EA7\u6B8B\u503C\uFF09\u3002"
  10074. },
  10075. {
  10076. "name": "life",
  10077. "detail": "\u8D44\u4EA7\u7684\u6298\u65E7\u671F\u6570\uFF08\u6709\u65F6\u4E5F\u79F0\u4F5C\u8D44\u4EA7\u7684\u4F7F\u7528\u5BFF\u547D\uFF09\u3002"
  10078. },
  10079. {
  10080. "name": "period",
  10081. "detail": "\u5728\u4F7F\u7528\u671F\u9650\u5185\u8981\u8BA1\u7B97\u6298\u65E7\u7684\u6298\u65E7\u671F\u3002"
  10082. },
  10083. {
  10084. "name": "month",
  10085. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u503C\u4E3A12] - \u6298\u65E7\u7B2C\u4E00\u5E74\u4E2D\u7684\u6708\u6570\u3002"
  10086. }
  10087. ]
  10088. },
  10089. "DDB": {
  10090. "d": "\u7528\u53CC\u500D\u4F59\u989D\u9012\u51CF\u6CD5\uFF0C\u8FD4\u56DE\u6307\u5B9A\u671F\u95F4\u5185\u67D0\u9879\u56FA\u5B9A\u8D44\u4EA7\u7684\u6298\u65E7\u503C\u3002",
  10091. "a": "\u7528\u53CC\u500D\u4F59\u989D\u9012\u51CF\u6CD5\uFF0C\u8FD4\u56DE\u6307\u5B9A\u671F\u95F4\u5185\u67D0\u9879\u56FA\u5B9A\u8D44\u4EA7\u7684\u6298\u65E7\u503C\u3002",
  10092. "p": [
  10093. {
  10094. "name": "cost",
  10095. "detail": "\u8D44\u4EA7\u539F\u503C\u3002"
  10096. },
  10097. {
  10098. "name": "salvage",
  10099. "detail": "\u6298\u65E7\u672B\u5C3E\u65F6\u7684\u503C\uFF08\u6709\u65F6\u4E5F\u79F0\u4E3A\u8D44\u4EA7\u6B8B\u503C\uFF09\u3002"
  10100. },
  10101. {
  10102. "name": "life",
  10103. "detail": "\u8D44\u4EA7\u7684\u6298\u65E7\u671F\u6570\uFF08\u6709\u65F6\u4E5F\u79F0\u4F5C\u8D44\u4EA7\u7684\u4F7F\u7528\u5BFF\u547D\uFF09\u3002"
  10104. },
  10105. {
  10106. "name": "period",
  10107. "detail": "\u5728\u4F7F\u7528\u671F\u9650\u5185\u8981\u8BA1\u7B97\u6298\u65E7\u7684\u6298\u65E7\u671F\u3002"
  10108. },
  10109. {
  10110. "name": "factor",
  10111. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u503C\u4E3A2] - \u6298\u65E7\u7684\u9012\u51CF\u7CFB\u6570\u3002"
  10112. }
  10113. ]
  10114. },
  10115. "RATE": {
  10116. "d": "\u8FD4\u56DE\u5E74\u91D1\u6BCF\u671F\u7684\u5229\u7387\u3002",
  10117. "a": "\u8FD4\u56DE\u5E74\u91D1\u6BCF\u671F\u7684\u5229\u7387\u3002",
  10118. "p": [
  10119. {
  10120. "name": "nper",
  10121. "detail": "\u5E74\u91D1\u7684\u4ED8\u6B3E\u603B\u671F\u6570\u3002"
  10122. },
  10123. {
  10124. "name": "pmt",
  10125. "detail": "\u6BCF\u671F\u7684\u4ED8\u6B3E\u91D1\u989D\uFF0C\u5728\u5E74\u91D1\u5468\u671F\u5185\u4E0D\u80FD\u66F4\u6539\u3002"
  10126. },
  10127. {
  10128. "name": "pv",
  10129. "detail": "\u73B0\u503C\u5373\u4E00\u7CFB\u5217\u672A\u6765\u4ED8\u6B3E\u5F53\u524D\u503C\u7684\u603B\u548C\u3002"
  10130. },
  10131. {
  10132. "name": "fv",
  10133. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u503C\u4E3A0] - \u672A\u6765\u503C\uFF0C\u6216\u5728\u6700\u540E\u4E00\u6B21\u4ED8\u6B3E\u540E\u5E0C\u671B\u5F97\u5230\u7684\u73B0\u91D1\u4F59\u989D\u3002"
  10134. },
  10135. {
  10136. "name": "type",
  10137. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u503C\u4E3A0] - \u6307\u5B9A\u5404\u671F\u7684\u4ED8\u6B3E\u65F6\u95F4\u662F\u5728\u671F\u521D\u8FD8\u662F\u671F\u672B\u3002\n\n0 \u8868\u793A\u671F\u672B\uFF1B\n\n1 \u8868\u793A\u671F\u521D\u3002"
  10138. },
  10139. {
  10140. "name": "guess",
  10141. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u503C\u4E3A0.1] - \u9884\u671F\u5229\u7387\u3002"
  10142. }
  10143. ]
  10144. },
  10145. "CUMPRINC": {
  10146. "d": "\u57FA\u4E8E\u7B49\u989D\u5206\u671F\u4ED8\u6B3E\u548C\u56FA\u5B9A\u5229\u7387\uFF0C\u8BA1\u7B97\u6295\u8D44\u5728\u591A\u4E2A\u4ED8\u6B3E\u671F\u5185\u7684\u7D2F\u8BA1\u672C\u91D1\u507F\u8FD8\u989D\u3002",
  10147. "a": "\u57FA\u4E8E\u7B49\u989D\u5206\u671F\u4ED8\u6B3E\u548C\u56FA\u5B9A\u5229\u7387\uFF0C\u8BA1\u7B97\u6295\u8D44\u5728\u591A\u4E2A\u4ED8\u6B3E\u671F\u5185\u7684\u7D2F\u8BA1\u672C\u91D1\u507F\u8FD8\u989D\u3002",
  10148. "p": [
  10149. {
  10150. "name": "rate",
  10151. "detail": "\u5229\u7387\u3002"
  10152. },
  10153. {
  10154. "name": "nper",
  10155. "detail": "\u603B\u4ED8\u6B3E\u671F\u6570\u3002"
  10156. },
  10157. {
  10158. "name": "pv",
  10159. "detail": "\u5E74\u91D1\u7684\u73B0\u503C\u3002"
  10160. },
  10161. {
  10162. "name": "start_period",
  10163. "detail": "\u5F00\u59CB\u7D2F\u8BA1\u8BA1\u7B97\u7684\u4ED8\u6B3E\u671F\u5E8F\u53F7\u3002\n\n\u9996\u671F\u5FC5\u987B\u5927\u4E8E\u7B49\u4E8E1\u3002"
  10164. },
  10165. {
  10166. "name": "end_period",
  10167. "detail": "\u7ED3\u675F\u7D2F\u8BA1\u8BA1\u7B97\u7684\u4ED8\u6B3E\u671F\u5E8F\u53F7\u3002\n\n\u672B\u671F\u5FC5\u987B\u5927\u4E8E\u9996\u671F\u3002"
  10168. },
  10169. {
  10170. "name": "type",
  10171. "detail": "\u6307\u5B9A\u5404\u671F\u7684\u4ED8\u6B3E\u65F6\u95F4\u662F\u5728\u671F\u521D\u8FD8\u662F\u671F\u672B\u3002\n\n0 \u8868\u793A\u671F\u672B\uFF1B\n\n1 \u8868\u793A\u671F\u521D\u3002"
  10172. }
  10173. ]
  10174. },
  10175. "COUPNUM": {
  10176. "d": "\u8FD4\u56DE\u5728\u7ED3\u7B97\u65E5\u548C\u5230\u671F\u65E5\u4E4B\u95F4\u7684\u4ED8\u606F\u6B21\u6570\uFF0C\u5411\u4E0A\u820D\u5165\u5230\u6700\u8FD1\u7684\u6574\u6570\u3002",
  10177. "a": "\u8FD4\u56DE\u5728\u7ED3\u7B97\u65E5\u548C\u5230\u671F\u65E5\u4E4B\u95F4\u7684\u4ED8\u606F\u6B21\u6570\uFF0C\u5411\u4E0A\u820D\u5165\u5230\u6700\u8FD1\u7684\u6574\u6570\u3002",
  10178. "p": [
  10179. {
  10180. "name": "settlement",
  10181. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u7ED3\u7B97\u65E5\u3002\u6709\u4EF7\u8BC1\u5238\u7ED3\u7B97\u65E5\u662F\u5728\u53D1\u884C\u65E5\u4E4B\u540E\uFF0C\u6709\u4EF7\u8BC1\u5238\u5356\u7ED9\u8D2D\u4E70\u8005\u7684\u65E5\u671F\u3002"
  10182. },
  10183. {
  10184. "name": "maturity",
  10185. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u5230\u671F\u65E5\u3002\u5230\u671F\u65E5\u662F\u6709\u4EF7\u8BC1\u5238\u6709\u6548\u671F\u622A\u6B62\u65F6\u7684\u65E5\u671F\u3002"
  10186. },
  10187. {
  10188. "name": "frequency",
  10189. "detail": "\u5E74\u4ED8\u606F\u6B21\u6570\u3002\n\n\u5982\u679C\u6309\u5E74\u652F\u4ED8\uFF0Cfrequency = 1\uFF1B\n\n\u6309\u534A\u5E74\u671F\u652F\u4ED8\uFF0Cfrequency = 2\uFF1B\n\n\u6309\u5B63\u652F\u4ED8\uFF0Cfrequency = 4\u3002"
  10190. },
  10191. {
  10192. "name": "basis",
  10193. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u4E3A0] - \u6307\u793A\u8981\u4F7F\u7528\u54EA\u79CD\u5929\u6570\u8BA1\u7B97\u65B9\u6CD5\u3002\n\n0\u8868\u793A\u201C\u7F8E\u56FD(NASD) 30/360\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u6309\u7167\u7F8E\u56FD\u5168\u56FD\u8BC1\u5238\u4EA4\u6613\u5546\u534F\u4F1A\u6807\u51C6\uFF0C\u5047\u8BBE\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\uFF0C\u5E76\u5BF9\u6240\u8F93\u5165\u7684\u6708\u672B\u65E5\u671F\u8FDB\u884C\u5177\u4F53\u8C03\u6574\u3002\n\n1\u8868\u793A\u201C\u5B9E\u9645/\u5B9E\u9645\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u8BA1\u7B97\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u548C\u6240\u6D89\u53CA\u7684\u5E74\u4EFD\u4E2D\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\u3002\u6B64\u65B9\u6CD5\u7528\u4E8E\u7F8E\u56FD\u957F\u671F\u503A\u5238\uFF0C\u4E5F\u662F\u5728\u975E\u8D22\u7ECF\u7528\u9014\u65B9\u9762\u4F7F\u7528\u6700\u591A\u7684\u65B9\u6CD5\u3002\n\n2\u8868\u793A\u201C\u5B9E\u9645/360\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u5047\u5B9A\u6BCF\u5E74\u4E3A360\u5929\u3002\n\n3\u8868\u793A\u201C\u5B9E\u9645/365\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u5047\u5B9A\u6BCF\u5E74\u4E3A365\u5929\u3002\n\n4\u8868\u793A\u201C\u6B27\u6D3230/360\u201D\u65B9\u6CD5 - \u7C7B\u4F3C\u4E8E0\uFF0C\u6B64\u65B9\u6CD5\u57FA\u4E8E\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u6309\u7167\u6B27\u6D32\u91D1\u878D\u60EF\u4F8B\u5BF9\u6708\u672B\u65E5\u671F\u8FDB\u884C\u8C03\u6574\u3002"
  10194. }
  10195. ]
  10196. },
  10197. "SYD": {
  10198. "d": "\u8FD4\u56DE\u5728\u6307\u5B9A\u671F\u95F4\u5185\u8D44\u4EA7\u6309\u5E74\u9650\u603B\u548C\u6298\u65E7\u6CD5\u8BA1\u7B97\u7684\u6298\u65E7\u3002",
  10199. "a": "\u8FD4\u56DE\u5728\u6307\u5B9A\u671F\u95F4\u5185\u8D44\u4EA7\u6309\u5E74\u9650\u603B\u548C\u6298\u65E7\u6CD5\u8BA1\u7B97\u7684\u6298\u65E7\u3002",
  10200. "p": [
  10201. {
  10202. "name": "cost",
  10203. "detail": "\u8D44\u4EA7\u539F\u503C\u3002"
  10204. },
  10205. {
  10206. "name": "salvage",
  10207. "detail": "\u6298\u65E7\u672B\u5C3E\u65F6\u7684\u503C\uFF08\u6709\u65F6\u4E5F\u79F0\u4E3A\u8D44\u4EA7\u6B8B\u503C\uFF09\u3002"
  10208. },
  10209. {
  10210. "name": "life",
  10211. "detail": "\u8D44\u4EA7\u7684\u6298\u65E7\u671F\u6570\uFF08\u6709\u65F6\u4E5F\u79F0\u4F5C\u8D44\u4EA7\u7684\u4F7F\u7528\u5BFF\u547D\uFF09\u3002"
  10212. },
  10213. {
  10214. "name": "period",
  10215. "detail": "\u5728\u4F7F\u7528\u671F\u9650\u5185\u8981\u8BA1\u7B97\u6298\u65E7\u7684\u6298\u65E7\u671F\u3002"
  10216. }
  10217. ]
  10218. },
  10219. "TBILLEQ": {
  10220. "d": "\u57FA\u4E8E\u8D34\u73B0\u7387\u8BA1\u7B97\u7F8E\u56FD\u653F\u5E9C\u77ED\u671F\u503A\u5238\u7684\u7B49\u6548\u5E74\u5316\u6536\u76CA\u7387\u3002",
  10221. "a": "\u57FA\u4E8E\u8D34\u73B0\u7387\u8BA1\u7B97\u7F8E\u56FD\u653F\u5E9C\u77ED\u671F\u503A\u5238\u7684\u7B49\u6548\u5E74\u5316\u6536\u76CA\u7387\u3002",
  10222. "p": [
  10223. {
  10224. "name": "settlement",
  10225. "detail": "\u503A\u5238\u7684\u7ED3\u7B97\u65E5\u671F\uFF0C\u6B64\u65E5\u671F\u4E3A\u503A\u5238\u53D1\u884C\u540E\u4EA4\u4ED8\u7ED9\u4E70\u5BB6\u7684\u65E5\u671F\u3002"
  10226. },
  10227. {
  10228. "name": "maturity",
  10229. "detail": "\u503A\u5238\u7684\u5230\u671F\u6216\u7ED3\u675F\u65E5\u671F\uFF0C\u5C4A\u65F6\u53EF\u5C06\u5176\u4EE5\u9762\u503C\u6216\u7968\u9762\u4EF7\u503C\u8D4E\u56DE\u3002"
  10230. },
  10231. {
  10232. "name": "discount",
  10233. "detail": "\u503A\u5238\u8D2D\u4E70\u65F6\u7684\u8D34\u73B0\u7387\u3002"
  10234. }
  10235. ]
  10236. },
  10237. "TBILLYIELD": {
  10238. "d": "\u57FA\u4E8E\u4EF7\u683C\u8BA1\u7B97\u7F8E\u56FD\u653F\u5E9C\u77ED\u671F\u503A\u5238\u7684\u6536\u76CA\u7387\u3002",
  10239. "a": "\u57FA\u4E8E\u4EF7\u683C\u8BA1\u7B97\u7F8E\u56FD\u653F\u5E9C\u77ED\u671F\u503A\u5238\u7684\u6536\u76CA\u7387\u3002",
  10240. "p": [
  10241. {
  10242. "name": "settlement",
  10243. "detail": "\u503A\u5238\u7684\u7ED3\u7B97\u65E5\u671F\uFF0C\u6B64\u65E5\u671F\u4E3A\u503A\u5238\u53D1\u884C\u540E\u4EA4\u4ED8\u7ED9\u4E70\u5BB6\u7684\u65E5\u671F\u3002"
  10244. },
  10245. {
  10246. "name": "maturity",
  10247. "detail": "\u503A\u5238\u7684\u5230\u671F\u6216\u7ED3\u675F\u65E5\u671F\uFF0C\u5C4A\u65F6\u53EF\u5C06\u5176\u4EE5\u9762\u503C\u6216\u7968\u9762\u4EF7\u503C\u8D4E\u56DE\u3002"
  10248. },
  10249. {
  10250. "name": "pr",
  10251. "detail": "\u503A\u5238\u7684\u8D2D\u4E70\u4EF7\u683C\u3002"
  10252. }
  10253. ]
  10254. },
  10255. "TBILLPRICE": {
  10256. "d": "\u57FA\u4E8E\u8D34\u73B0\u7387\u8BA1\u7B97\u7F8E\u56FD\u653F\u5E9C\u77ED\u671F\u503A\u5238\u7684\u4EF7\u683C\u3002",
  10257. "a": "\u57FA\u4E8E\u8D34\u73B0\u7387\u8BA1\u7B97\u7F8E\u56FD\u653F\u5E9C\u77ED\u671F\u503A\u5238\u7684\u4EF7\u683C\u3002",
  10258. "p": [
  10259. {
  10260. "name": "settlement",
  10261. "detail": "\u503A\u5238\u7684\u7ED3\u7B97\u65E5\u671F\uFF0C\u6B64\u65E5\u671F\u4E3A\u503A\u5238\u53D1\u884C\u540E\u4EA4\u4ED8\u7ED9\u4E70\u5BB6\u7684\u65E5\u671F\u3002"
  10262. },
  10263. {
  10264. "name": "maturity",
  10265. "detail": "\u503A\u5238\u7684\u5230\u671F\u6216\u7ED3\u675F\u65E5\u671F\uFF0C\u5C4A\u65F6\u53EF\u5C06\u5176\u4EE5\u9762\u503C\u6216\u7968\u9762\u4EF7\u503C\u8D4E\u56DE\u3002"
  10266. },
  10267. {
  10268. "name": "discount",
  10269. "detail": "\u503A\u5238\u8D2D\u4E70\u65F6\u7684\u8D34\u73B0\u7387\u3002"
  10270. }
  10271. ]
  10272. },
  10273. "PV": {
  10274. "d": "\u57FA\u4E8E\u7B49\u989D\u5206\u671F\u4ED8\u6B3E\u548C\u56FA\u5B9A\u5229\u7387\uFF0C\u8BA1\u7B97\u5E74\u91D1\u6295\u8D44\u7684\u73B0\u503C\u3002",
  10275. "a": "\u57FA\u4E8E\u7B49\u989D\u5206\u671F\u4ED8\u6B3E\u548C\u56FA\u5B9A\u5229\u7387\uFF0C\u8BA1\u7B97\u5E74\u91D1\u6295\u8D44\u7684\u73B0\u503C\u3002",
  10276. "p": [
  10277. {
  10278. "name": "rate",
  10279. "detail": "\u5404\u671F\u5229\u7387\u3002"
  10280. },
  10281. {
  10282. "name": "nper",
  10283. "detail": "\u5E74\u91D1\u7684\u4ED8\u6B3E\u603B\u671F\u6570\u3002"
  10284. },
  10285. {
  10286. "name": "pmt",
  10287. "detail": "\u6BCF\u671F\u7684\u4ED8\u6B3E\u91D1\u989D\uFF0C\u5728\u5E74\u91D1\u5468\u671F\u5185\u4E0D\u80FD\u66F4\u6539\u3002"
  10288. },
  10289. {
  10290. "name": "fv",
  10291. "detail": "[\u53EF\u9009] - \u672A\u6765\u503C\uFF0C\u6216\u5728\u6700\u540E\u4E00\u6B21\u4ED8\u6B3E\u540E\u5E0C\u671B\u5F97\u5230\u7684\u73B0\u91D1\u4F59\u989D\u3002"
  10292. },
  10293. {
  10294. "name": "type",
  10295. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u503C\u4E3A0] - \u6307\u5B9A\u5404\u671F\u7684\u4ED8\u6B3E\u65F6\u95F4\u662F\u5728\u671F\u521D\u8FD8\u662F\u671F\u672B\u3002\n\n0 \u8868\u793A\u671F\u672B\uFF1B\n\n1 \u8868\u793A\u671F\u521D\u3002"
  10296. }
  10297. ]
  10298. },
  10299. "ACCRINT": {
  10300. "d": "\u8FD4\u56DE\u5B9A\u671F\u4ED8\u606F\u8BC1\u5238\u7684\u5E94\u8BA1\u5229\u606F\u3002",
  10301. "a": "\u8FD4\u56DE\u5B9A\u671F\u4ED8\u606F\u8BC1\u5238\u7684\u5E94\u8BA1\u5229\u606F\u3002",
  10302. "p": [
  10303. {
  10304. "name": "issue",
  10305. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u53D1\u884C\u65E5\u3002"
  10306. },
  10307. {
  10308. "name": "first_interest",
  10309. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u9996\u6B21\u8BA1\u606F\u65E5\u3002"
  10310. },
  10311. {
  10312. "name": "settlement",
  10313. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u7ED3\u7B97\u65E5\u3002 \u6709\u4EF7\u8BC1\u5238\u7ED3\u7B97\u65E5\u662F\u5728\u53D1\u884C\u65E5\u4E4B\u540E\uFF0C\u6709\u4EF7\u8BC1\u5238\u5356\u7ED9\u8D2D\u4E70\u8005\u7684\u65E5\u671F\u3002"
  10314. },
  10315. {
  10316. "name": "rate",
  10317. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u5E74\u606F\u7968\u5229\u7387\u3002"
  10318. },
  10319. {
  10320. "name": "par",
  10321. "detail": "\u8BC1\u5238\u7684\u7968\u9762\u503C\u3002"
  10322. },
  10323. {
  10324. "name": "frequency",
  10325. "detail": "\u5E74\u4ED8\u606F\u6B21\u6570\u3002\n\n\u5982\u679C\u6309\u5E74\u652F\u4ED8\uFF0Cfrequency = 1\uFF1B\n\n\u6309\u534A\u5E74\u671F\u652F\u4ED8\uFF0Cfrequency = 2\uFF1B\n\n\u6309\u5B63\u652F\u4ED8\uFF0Cfrequency = 4\u3002"
  10326. },
  10327. {
  10328. "name": "basis",
  10329. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u4E3A0] - \u6307\u793A\u8981\u4F7F\u7528\u54EA\u79CD\u5929\u6570\u8BA1\u7B97\u65B9\u6CD5\u3002\n\n0\u8868\u793A\u201C\u7F8E\u56FD(NASD) 30/360\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u6309\u7167\u7F8E\u56FD\u5168\u56FD\u8BC1\u5238\u4EA4\u6613\u5546\u534F\u4F1A\u6807\u51C6\uFF0C\u5047\u8BBE\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\uFF0C\u5E76\u5BF9\u6240\u8F93\u5165\u7684\u6708\u672B\u65E5\u671F\u8FDB\u884C\u5177\u4F53\u8C03\u6574\u3002\n\n1\u8868\u793A\u201C\u5B9E\u9645/\u5B9E\u9645\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u8BA1\u7B97\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u548C\u6240\u6D89\u53CA\u7684\u5E74\u4EFD\u4E2D\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\u3002\u6B64\u65B9\u6CD5\u7528\u4E8E\u7F8E\u56FD\u957F\u671F\u503A\u5238\uFF0C\u4E5F\u662F\u5728\u975E\u8D22\u7ECF\u7528\u9014\u65B9\u9762\u4F7F\u7528\u6700\u591A\u7684\u65B9\u6CD5\u3002\n\n2\u8868\u793A\u201C\u5B9E\u9645/360\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u5047\u5B9A\u6BCF\u5E74\u4E3A360\u5929\u3002\n\n3\u8868\u793A\u201C\u5B9E\u9645/365\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u5047\u5B9A\u6BCF\u5E74\u4E3A365\u5929\u3002\n\n4\u8868\u793A\u201C\u201C\u6B27\u6D3230/360\u201D\u65B9\u6CD5\u201D - \u7C7B\u4F3C\u4E8E0\uFF0C\u6B64\u65B9\u6CD5\u57FA\u4E8E\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u6309\u7167\u6B27\u6D32\u91D1\u878D\u60EF\u4F8B\u5BF9\u6708\u672B\u65E5\u671F\u8FDB\u884C\u8C03\u6574\u3002"
  10330. },
  10331. {
  10332. "name": "calc_method",
  10333. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u4E3ATRUE()] - \u4E00\u4E2A\u903B\u8F91\u503C\uFF0C\u6307\u5B9A\u5F53\u7ED3\u7B97\u65E5\u671F\u665A\u4E8E\u9996\u6B21\u8BA1\u606F\u65E5\u671F\u65F6\u7528\u4E8E\u8BA1\u7B97\u603B\u5E94\u8BA1\u5229\u606F\u7684\u65B9\u6CD5\u3002\n\n\u5982\u679C\u503C\u4E3A TRUE\uFF0C\u5219\u8FD4\u56DE\u4ECE\u53D1\u884C\u65E5\u5230\u7ED3\u7B97\u65E5\u7684\u603B\u5E94\u8BA1\u5229\u606F\u3002\n\n\u5982\u679C\u503C\u4E3A FALSE\uFF0C\u5219\u8FD4\u56DE\u4ECE\u9996\u6B21\u8BA1\u606F\u65E5\u5230\u7ED3\u7B97\u65E5\u7684\u5E94\u8BA1\u5229\u606F\u3002"
  10334. }
  10335. ]
  10336. },
  10337. "ACCRINTM": {
  10338. "d": "\u8FD4\u56DE\u5728\u5230\u671F\u65E5\u652F\u4ED8\u5229\u606F\u7684\u6709\u4EF7\u8BC1\u5238\u7684\u5E94\u8BA1\u5229\u606F\u3002",
  10339. "a": "\u8FD4\u56DE\u5728\u5230\u671F\u65E5\u652F\u4ED8\u5229\u606F\u7684\u6709\u4EF7\u8BC1\u5238\u7684\u5E94\u8BA1\u5229\u606F\u3002",
  10340. "p": [
  10341. {
  10342. "name": "issue",
  10343. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u53D1\u884C\u65E5\u3002"
  10344. },
  10345. {
  10346. "name": "settlement",
  10347. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u5230\u671F\u65E5\u3002"
  10348. },
  10349. {
  10350. "name": "rate",
  10351. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u5E74\u606F\u7968\u5229\u7387\u3002"
  10352. },
  10353. {
  10354. "name": "par",
  10355. "detail": "\u8BC1\u5238\u7684\u7968\u9762\u503C\u3002"
  10356. },
  10357. {
  10358. "name": "basis",
  10359. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u4E3A0] - \u6307\u793A\u8981\u4F7F\u7528\u54EA\u79CD\u5929\u6570\u8BA1\u7B97\u65B9\u6CD5\u3002\n\n0\u8868\u793A\u201C\u7F8E\u56FD(NASD) 30/360\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u6309\u7167\u7F8E\u56FD\u5168\u56FD\u8BC1\u5238\u4EA4\u6613\u5546\u534F\u4F1A\u6807\u51C6\uFF0C\u5047\u8BBE\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\uFF0C\u5E76\u5BF9\u6240\u8F93\u5165\u7684\u6708\u672B\u65E5\u671F\u8FDB\u884C\u5177\u4F53\u8C03\u6574\u3002\n\n1\u8868\u793A\u201C\u5B9E\u9645/\u5B9E\u9645\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u8BA1\u7B97\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u548C\u6240\u6D89\u53CA\u7684\u5E74\u4EFD\u4E2D\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\u3002\u6B64\u65B9\u6CD5\u7528\u4E8E\u7F8E\u56FD\u957F\u671F\u503A\u5238\uFF0C\u4E5F\u662F\u5728\u975E\u8D22\u7ECF\u7528\u9014\u65B9\u9762\u4F7F\u7528\u6700\u591A\u7684\u65B9\u6CD5\u3002\n\n2\u8868\u793A\u201C\u5B9E\u9645/360\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u5047\u5B9A\u6BCF\u5E74\u4E3A360\u5929\u3002\n\n3\u8868\u793A\u201C\u5B9E\u9645/365\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u5047\u5B9A\u6BCF\u5E74\u4E3A365\u5929\u3002\n\n4\u8868\u793A\u201C\u6B27\u6D3230/360\u201D\u65B9\u6CD5 - \u7C7B\u4F3C\u4E8E0\uFF0C\u6B64\u65B9\u6CD5\u57FA\u4E8E\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u6309\u7167\u6B27\u6D32\u91D1\u878D\u60EF\u4F8B\u5BF9\u6708\u672B\u65E5\u671F\u8FDB\u884C\u8C03\u6574\u3002"
  10360. }
  10361. ]
  10362. },
  10363. "COUPDAYBS": {
  10364. "d": "\u8FD4\u56DE\u4ECE\u4ED8\u606F\u671F\u5F00\u59CB\u5230\u7ED3\u7B97\u65E5\u7684\u5929\u6570\u3002",
  10365. "a": "\u8FD4\u56DE\u4ECE\u4ED8\u606F\u671F\u5F00\u59CB\u5230\u7ED3\u7B97\u65E5\u7684\u5929\u6570\u3002",
  10366. "p": [
  10367. {
  10368. "name": "settlement",
  10369. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u7ED3\u7B97\u65E5\u3002 \u6709\u4EF7\u8BC1\u5238\u7ED3\u7B97\u65E5\u662F\u5728\u53D1\u884C\u65E5\u4E4B\u540E\uFF0C\u6709\u4EF7\u8BC1\u5238\u5356\u7ED9\u8D2D\u4E70\u8005\u7684\u65E5\u671F\u3002"
  10370. },
  10371. {
  10372. "name": "maturity",
  10373. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u5230\u671F\u65E5\u3002 \u5230\u671F\u65E5\u662F\u6709\u4EF7\u8BC1\u5238\u6709\u6548\u671F\u622A\u6B62\u65F6\u7684\u65E5\u671F\u3002"
  10374. },
  10375. {
  10376. "name": "frequency",
  10377. "detail": "\u5E74\u4ED8\u606F\u6B21\u6570\u3002\n\n\u5982\u679C\u6309\u5E74\u652F\u4ED8\uFF0Cfrequency = 1\uFF1B\n\n\u6309\u534A\u5E74\u671F\u652F\u4ED8\uFF0Cfrequency = 2\uFF1B\n\n\u6309\u5B63\u652F\u4ED8\uFF0Cfrequency = 4\u3002"
  10378. },
  10379. {
  10380. "name": "basis",
  10381. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u4E3A0] - \u6307\u793A\u8981\u4F7F\u7528\u54EA\u79CD\u5929\u6570\u8BA1\u7B97\u65B9\u6CD5\u3002\n\n0\u8868\u793A\u201C\u7F8E\u56FD(NASD) 30/360\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u6309\u7167\u7F8E\u56FD\u5168\u56FD\u8BC1\u5238\u4EA4\u6613\u5546\u534F\u4F1A\u6807\u51C6\uFF0C\u5047\u8BBE\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\uFF0C\u5E76\u5BF9\u6240\u8F93\u5165\u7684\u6708\u672B\u65E5\u671F\u8FDB\u884C\u5177\u4F53\u8C03\u6574\u3002\n\n1\u8868\u793A\u201C\u5B9E\u9645/\u5B9E\u9645\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u8BA1\u7B97\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u548C\u6240\u6D89\u53CA\u7684\u5E74\u4EFD\u4E2D\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\u3002\u6B64\u65B9\u6CD5\u7528\u4E8E\u7F8E\u56FD\u957F\u671F\u503A\u5238\uFF0C\u4E5F\u662F\u5728\u975E\u8D22\u7ECF\u7528\u9014\u65B9\u9762\u4F7F\u7528\u6700\u591A\u7684\u65B9\u6CD5\u3002\n\n2\u8868\u793A\u201C\u5B9E\u9645/360\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u5047\u5B9A\u6BCF\u5E74\u4E3A360\u5929\u3002\n\n3\u8868\u793A\u201C\u5B9E\u9645/365\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u5047\u5B9A\u6BCF\u5E74\u4E3A365\u5929\u3002\n\n4\u8868\u793A\u201C\u6B27\u6D3230/360\u201D\u65B9\u6CD5 - \u7C7B\u4F3C\u4E8E0\uFF0C\u6B64\u65B9\u6CD5\u57FA\u4E8E\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u6309\u7167\u6B27\u6D32\u91D1\u878D\u60EF\u4F8B\u5BF9\u6708\u672B\u65E5\u671F\u8FDB\u884C\u8C03\u6574\u3002"
  10382. }
  10383. ]
  10384. },
  10385. "COUPDAYS": {
  10386. "d": "\u8FD4\u56DE\u7ED3\u7B97\u65E5\u6240\u5728\u7684\u4ED8\u606F\u671F\u7684\u5929\u6570\u3002",
  10387. "a": "\u8FD4\u56DE\u7ED3\u7B97\u65E5\u6240\u5728\u7684\u4ED8\u606F\u671F\u7684\u5929\u6570\u3002",
  10388. "p": [
  10389. {
  10390. "name": "settlement",
  10391. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u7ED3\u7B97\u65E5\u3002 \u6709\u4EF7\u8BC1\u5238\u7ED3\u7B97\u65E5\u662F\u5728\u53D1\u884C\u65E5\u4E4B\u540E\uFF0C\u6709\u4EF7\u8BC1\u5238\u5356\u7ED9\u8D2D\u4E70\u8005\u7684\u65E5\u671F\u3002"
  10392. },
  10393. {
  10394. "name": "maturity",
  10395. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u5230\u671F\u65E5\u3002 \u5230\u671F\u65E5\u662F\u6709\u4EF7\u8BC1\u5238\u6709\u6548\u671F\u622A\u6B62\u65F6\u7684\u65E5\u671F\u3002"
  10396. },
  10397. {
  10398. "name": "frequency",
  10399. "detail": "\u5E74\u4ED8\u606F\u6B21\u6570\u3002\n\n\u5982\u679C\u6309\u5E74\u652F\u4ED8\uFF0Cfrequency = 1\uFF1B\n\n\u6309\u534A\u5E74\u671F\u652F\u4ED8\uFF0Cfrequency = 2\uFF1B\n\n\u6309\u5B63\u652F\u4ED8\uFF0Cfrequency = 4\u3002"
  10400. },
  10401. {
  10402. "name": "basis",
  10403. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u4E3A0] - \u6307\u793A\u8981\u4F7F\u7528\u54EA\u79CD\u5929\u6570\u8BA1\u7B97\u65B9\u6CD5\u3002\n\n0\u8868\u793A\u201C\u7F8E\u56FD(NASD) 30/360\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u6309\u7167\u7F8E\u56FD\u5168\u56FD\u8BC1\u5238\u4EA4\u6613\u5546\u534F\u4F1A\u6807\u51C6\uFF0C\u5047\u8BBE\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\uFF0C\u5E76\u5BF9\u6240\u8F93\u5165\u7684\u6708\u672B\u65E5\u671F\u8FDB\u884C\u5177\u4F53\u8C03\u6574\u3002\n\n1\u8868\u793A\u201C\u5B9E\u9645/\u5B9E\u9645\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u8BA1\u7B97\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u548C\u6240\u6D89\u53CA\u7684\u5E74\u4EFD\u4E2D\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\u3002\u6B64\u65B9\u6CD5\u7528\u4E8E\u7F8E\u56FD\u957F\u671F\u503A\u5238\uFF0C\u4E5F\u662F\u5728\u975E\u8D22\u7ECF\u7528\u9014\u65B9\u9762\u4F7F\u7528\u6700\u591A\u7684\u65B9\u6CD5\u3002\n\n2\u8868\u793A\u201C\u5B9E\u9645/360\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u5047\u5B9A\u6BCF\u5E74\u4E3A360\u5929\u3002\n\n3\u8868\u793A\u201C\u5B9E\u9645/365\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u5047\u5B9A\u6BCF\u5E74\u4E3A365\u5929\u3002\n\n4\u8868\u793A\u201C\u6B27\u6D3230/360\u201D\u65B9\u6CD5 - \u7C7B\u4F3C\u4E8E0\uFF0C\u6B64\u65B9\u6CD5\u57FA\u4E8E\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u6309\u7167\u6B27\u6D32\u91D1\u878D\u60EF\u4F8B\u5BF9\u6708\u672B\u65E5\u671F\u8FDB\u884C\u8C03\u6574\u3002"
  10404. }
  10405. ]
  10406. },
  10407. "COUPDAYSNC": {
  10408. "d": "\u8FD4\u56DE\u4ECE\u7ED3\u7B97\u65E5\u5230\u4E0B\u4E00\u7968\u606F\u652F\u4ED8\u65E5\u4E4B\u95F4\u7684\u5929\u6570\u3002",
  10409. "a": "\u8FD4\u56DE\u4ECE\u7ED3\u7B97\u65E5\u5230\u4E0B\u4E00\u7968\u606F\u652F\u4ED8\u65E5\u4E4B\u95F4\u7684\u5929\u6570\u3002",
  10410. "p": [
  10411. {
  10412. "name": "settlement",
  10413. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u7ED3\u7B97\u65E5\u3002 \u6709\u4EF7\u8BC1\u5238\u7ED3\u7B97\u65E5\u662F\u5728\u53D1\u884C\u65E5\u4E4B\u540E\uFF0C\u6709\u4EF7\u8BC1\u5238\u5356\u7ED9\u8D2D\u4E70\u8005\u7684\u65E5\u671F\u3002"
  10414. },
  10415. {
  10416. "name": "maturity",
  10417. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u5230\u671F\u65E5\u3002 \u5230\u671F\u65E5\u662F\u6709\u4EF7\u8BC1\u5238\u6709\u6548\u671F\u622A\u6B62\u65F6\u7684\u65E5\u671F\u3002"
  10418. },
  10419. {
  10420. "name": "frequency",
  10421. "detail": "\u5E74\u4ED8\u606F\u6B21\u6570\u3002\n\n\u5982\u679C\u6309\u5E74\u652F\u4ED8\uFF0Cfrequency = 1\uFF1B\n\n\u6309\u534A\u5E74\u671F\u652F\u4ED8\uFF0Cfrequency = 2\uFF1B\n\n\u6309\u5B63\u652F\u4ED8\uFF0Cfrequency = 4\u3002"
  10422. },
  10423. {
  10424. "name": "basis",
  10425. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u4E3A0] - \u6307\u793A\u8981\u4F7F\u7528\u54EA\u79CD\u5929\u6570\u8BA1\u7B97\u65B9\u6CD5\u3002\n\n0\u8868\u793A\u201C\u7F8E\u56FD(NASD) 30/360\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u6309\u7167\u7F8E\u56FD\u5168\u56FD\u8BC1\u5238\u4EA4\u6613\u5546\u534F\u4F1A\u6807\u51C6\uFF0C\u5047\u8BBE\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\uFF0C\u5E76\u5BF9\u6240\u8F93\u5165\u7684\u6708\u672B\u65E5\u671F\u8FDB\u884C\u5177\u4F53\u8C03\u6574\u3002\n\n1\u8868\u793A\u201C\u5B9E\u9645/\u5B9E\u9645\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u8BA1\u7B97\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u548C\u6240\u6D89\u53CA\u7684\u5E74\u4EFD\u4E2D\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\u3002\u6B64\u65B9\u6CD5\u7528\u4E8E\u7F8E\u56FD\u957F\u671F\u503A\u5238\uFF0C\u4E5F\u662F\u5728\u975E\u8D22\u7ECF\u7528\u9014\u65B9\u9762\u4F7F\u7528\u6700\u591A\u7684\u65B9\u6CD5\u3002\n\n2\u8868\u793A\u201C\u5B9E\u9645/360\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u5047\u5B9A\u6BCF\u5E74\u4E3A360\u5929\u3002\n\n3\u8868\u793A\u201C\u5B9E\u9645/365\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u5047\u5B9A\u6BCF\u5E74\u4E3A365\u5929\u3002\n\n4\u8868\u793A\u201C\u6B27\u6D3230/360\u201D\u65B9\u6CD5 - \u7C7B\u4F3C\u4E8E0\uFF0C\u6B64\u65B9\u6CD5\u57FA\u4E8E\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u6309\u7167\u6B27\u6D32\u91D1\u878D\u60EF\u4F8B\u5BF9\u6708\u672B\u65E5\u671F\u8FDB\u884C\u8C03\u6574\u3002"
  10426. }
  10427. ]
  10428. },
  10429. "COUPNCD": {
  10430. "d": "\u8BA1\u7B97\u7ED3\u7B97\u65E5\u4E4B\u540E\u7684\u4E0B\u4E00\u7968\u606F\u6216\u5229\u606F\u6D3E\u53D1\u65E5\u671F\u3002",
  10431. "a": "\u8BA1\u7B97\u7ED3\u7B97\u65E5\u4E4B\u540E\u7684\u4E0B\u4E00\u7968\u606F\u6216\u5229\u606F\u6D3E\u53D1\u65E5\u671F\u3002",
  10432. "p": [
  10433. {
  10434. "name": "settlement",
  10435. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u7ED3\u7B97\u65E5\u3002 \u6709\u4EF7\u8BC1\u5238\u7ED3\u7B97\u65E5\u662F\u5728\u53D1\u884C\u65E5\u4E4B\u540E\uFF0C\u6709\u4EF7\u8BC1\u5238\u5356\u7ED9\u8D2D\u4E70\u8005\u7684\u65E5\u671F\u3002"
  10436. },
  10437. {
  10438. "name": "maturity",
  10439. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u5230\u671F\u65E5\u3002 \u5230\u671F\u65E5\u662F\u6709\u4EF7\u8BC1\u5238\u6709\u6548\u671F\u622A\u6B62\u65F6\u7684\u65E5\u671F\u3002"
  10440. },
  10441. {
  10442. "name": "frequency",
  10443. "detail": "\u5E74\u4ED8\u606F\u6B21\u6570\u3002\n\n\u5982\u679C\u6309\u5E74\u652F\u4ED8\uFF0Cfrequency = 1\uFF1B\n\n\u6309\u534A\u5E74\u671F\u652F\u4ED8\uFF0Cfrequency = 2\uFF1B\n\n\u6309\u5B63\u652F\u4ED8\uFF0Cfrequency = 4\u3002"
  10444. },
  10445. {
  10446. "name": "basis",
  10447. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u4E3A0] - \u6307\u793A\u8981\u4F7F\u7528\u54EA\u79CD\u5929\u6570\u8BA1\u7B97\u65B9\u6CD5\u3002\n\n0\u8868\u793A\u201C\u7F8E\u56FD(NASD) 30/360\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u6309\u7167\u7F8E\u56FD\u5168\u56FD\u8BC1\u5238\u4EA4\u6613\u5546\u534F\u4F1A\u6807\u51C6\uFF0C\u5047\u8BBE\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\uFF0C\u5E76\u5BF9\u6240\u8F93\u5165\u7684\u6708\u672B\u65E5\u671F\u8FDB\u884C\u5177\u4F53\u8C03\u6574\u3002\n\n1\u8868\u793A\u201C\u5B9E\u9645/\u5B9E\u9645\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u8BA1\u7B97\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u548C\u6240\u6D89\u53CA\u7684\u5E74\u4EFD\u4E2D\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\u3002\u6B64\u65B9\u6CD5\u7528\u4E8E\u7F8E\u56FD\u957F\u671F\u503A\u5238\uFF0C\u4E5F\u662F\u5728\u975E\u8D22\u7ECF\u7528\u9014\u65B9\u9762\u4F7F\u7528\u6700\u591A\u7684\u65B9\u6CD5\u3002\n\n2\u8868\u793A\u201C\u5B9E\u9645/360\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u5047\u5B9A\u6BCF\u5E74\u4E3A360\u5929\u3002\n\n3\u8868\u793A\u201C\u5B9E\u9645/365\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u5047\u5B9A\u6BCF\u5E74\u4E3A365\u5929\u3002\n\n4\u8868\u793A\u201C\u6B27\u6D3230/360\u201D\u65B9\u6CD5 - \u7C7B\u4F3C\u4E8E0\uFF0C\u6B64\u65B9\u6CD5\u57FA\u4E8E\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u6309\u7167\u6B27\u6D32\u91D1\u878D\u60EF\u4F8B\u5BF9\u6708\u672B\u65E5\u671F\u8FDB\u884C\u8C03\u6574\u3002"
  10448. }
  10449. ]
  10450. },
  10451. "COUPPCD": {
  10452. "d": "\u8BA1\u7B97\u7ED3\u7B97\u65E5\u4E4B\u524D\u7684\u6700\u540E\u4E00\u4E2A\u7968\u606F\u6216\u5229\u606F\u652F\u4ED8\u65E5\u3002",
  10453. "a": "\u8BA1\u7B97\u7ED3\u7B97\u65E5\u4E4B\u524D\u7684\u6700\u540E\u4E00\u4E2A\u7968\u606F\u6216\u5229\u606F\u652F\u4ED8\u65E5\u3002",
  10454. "p": [
  10455. {
  10456. "name": "settlement",
  10457. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u7ED3\u7B97\u65E5\u3002 \u6709\u4EF7\u8BC1\u5238\u7ED3\u7B97\u65E5\u662F\u5728\u53D1\u884C\u65E5\u4E4B\u540E\uFF0C\u6709\u4EF7\u8BC1\u5238\u5356\u7ED9\u8D2D\u4E70\u8005\u7684\u65E5\u671F\u3002"
  10458. },
  10459. {
  10460. "name": "maturity",
  10461. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u5230\u671F\u65E5\u3002 \u5230\u671F\u65E5\u662F\u6709\u4EF7\u8BC1\u5238\u6709\u6548\u671F\u622A\u6B62\u65F6\u7684\u65E5\u671F\u3002"
  10462. },
  10463. {
  10464. "name": "frequency",
  10465. "detail": "\u5E74\u4ED8\u606F\u6B21\u6570\u3002\n\n\u5982\u679C\u6309\u5E74\u652F\u4ED8\uFF0Cfrequency = 1\uFF1B\n\n\u6309\u534A\u5E74\u671F\u652F\u4ED8\uFF0Cfrequency = 2\uFF1B\n\n\u6309\u5B63\u652F\u4ED8\uFF0Cfrequency = 4\u3002"
  10466. },
  10467. {
  10468. "name": "basis",
  10469. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u4E3A0] - \u6307\u793A\u8981\u4F7F\u7528\u54EA\u79CD\u5929\u6570\u8BA1\u7B97\u65B9\u6CD5\u3002\n\n0\u8868\u793A\u201C\u7F8E\u56FD(NASD) 30/360\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u6309\u7167\u7F8E\u56FD\u5168\u56FD\u8BC1\u5238\u4EA4\u6613\u5546\u534F\u4F1A\u6807\u51C6\uFF0C\u5047\u8BBE\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\uFF0C\u5E76\u5BF9\u6240\u8F93\u5165\u7684\u6708\u672B\u65E5\u671F\u8FDB\u884C\u5177\u4F53\u8C03\u6574\u3002\n\n1\u8868\u793A\u201C\u5B9E\u9645/\u5B9E\u9645\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u8BA1\u7B97\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u548C\u6240\u6D89\u53CA\u7684\u5E74\u4EFD\u4E2D\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\u3002\u6B64\u65B9\u6CD5\u7528\u4E8E\u7F8E\u56FD\u957F\u671F\u503A\u5238\uFF0C\u4E5F\u662F\u5728\u975E\u8D22\u7ECF\u7528\u9014\u65B9\u9762\u4F7F\u7528\u6700\u591A\u7684\u65B9\u6CD5\u3002\n\n2\u8868\u793A\u201C\u5B9E\u9645/360\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u5047\u5B9A\u6BCF\u5E74\u4E3A360\u5929\u3002\n\n3\u8868\u793A\u201C\u5B9E\u9645/365\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u5047\u5B9A\u6BCF\u5E74\u4E3A365\u5929\u3002\n\n4\u8868\u793A\u201C\u6B27\u6D3230/360\u201D\u65B9\u6CD5 - \u7C7B\u4F3C\u4E8E0\uFF0C\u6B64\u65B9\u6CD5\u57FA\u4E8E\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u6309\u7167\u6B27\u6D32\u91D1\u878D\u60EF\u4F8B\u5BF9\u6708\u672B\u65E5\u671F\u8FDB\u884C\u8C03\u6574\u3002"
  10470. }
  10471. ]
  10472. },
  10473. "FV": {
  10474. "d": "\u57FA\u4E8E\u7B49\u989D\u5206\u671F\u4ED8\u6B3E\u548C\u56FA\u5B9A\u5229\u7387\uFF0C\u8BA1\u7B97\u5E74\u91D1\u6295\u8D44\u7684\u672A\u6765\u4EF7\u503C\u3002",
  10475. "a": "\u57FA\u4E8E\u7B49\u989D\u5206\u671F\u4ED8\u6B3E\u548C\u56FA\u5B9A\u5229\u7387\uFF0C\u8BA1\u7B97\u5E74\u91D1\u6295\u8D44\u7684\u672A\u6765\u4EF7\u503C\u3002",
  10476. "p": [
  10477. {
  10478. "name": "rate",
  10479. "detail": "\u5404\u671F\u5229\u7387\u3002"
  10480. },
  10481. {
  10482. "name": "nper",
  10483. "detail": "\u5E74\u91D1\u7684\u4ED8\u6B3E\u603B\u671F\u6570\u3002"
  10484. },
  10485. {
  10486. "name": "pmt",
  10487. "detail": "\u5404\u671F\u6240\u5E94\u652F\u4ED8\u7684\u91D1\u989D\uFF0C\u5728\u6574\u4E2A\u5E74\u91D1\u671F\u95F4\u4FDD\u6301\u4E0D\u53D8\u3002"
  10488. },
  10489. {
  10490. "name": "pv",
  10491. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u503C\u4E3A 0 ] - \u73B0\u503C\uFF0C\u6216\u4E00\u7CFB\u5217\u672A\u6765\u4ED8\u6B3E\u7684\u5F53\u524D\u503C\u7684\u7D2F\u79EF\u548C\u3002"
  10492. },
  10493. {
  10494. "name": "type",
  10495. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u503C\u4E3A 0 ] - \u6307\u5B9A\u5404\u671F\u7684\u4ED8\u6B3E\u65F6\u95F4\u662F\u5728\u671F\u521D\u8FD8\u662F\u671F\u672B\u3002\n\n0 \u8868\u793A\u671F\u672B\uFF1B\n\n1 \u8868\u793A\u671F\u521D\u3002"
  10496. }
  10497. ]
  10498. },
  10499. "FVSCHEDULE": {
  10500. "d": "\u8FD4\u56DE\u5E94\u7528\u4E00\u7CFB\u5217\u590D\u5229\u7387\u8BA1\u7B97\u7684\u521D\u59CB\u672C\u91D1\u7684\u672A\u6765\u503C\u3002",
  10501. "a": "\u8FD4\u56DE\u5E94\u7528\u4E00\u7CFB\u5217\u590D\u5229\u7387\u8BA1\u7B97\u7684\u521D\u59CB\u672C\u91D1\u7684\u672A\u6765\u503C\u3002",
  10502. "p": [
  10503. {
  10504. "name": "principal",
  10505. "detail": "\u73B0\u503C\u3002"
  10506. },
  10507. {
  10508. "name": "schedule",
  10509. "detail": "\u7528\u4E8E\u8BA1\u7B97\u672C\u91D1\u590D\u5229\u7684\u4E00\u7EC4\u5229\u7387\u3002\n\n\u5229\u7387\u8868\u5FC5\u987B\u662F\u8303\u56F4\u6216\u6570\u7EC4\uFF0C\u5176\u4E2D\u5305\u542B\u8981\u7528\u4E8E\u8BA1\u7B97\u590D\u5229\u7684\u4E00\u7EC4\u5229\u7387\u3002\u8FD9\u4E9B\u5229\u7387\u503C\u5E94\u8BE5\u4EE5\u5341\u8FDB\u5236\u5C0F\u6570\u5F62\u5F0F\u8868\u793A\uFF0C\u6216\u8005\u4F7F\u7528UNARY_PERCENT\u4EE5\u767E\u5206\u6BD4\u5F62\u5F0F\u8868\u793A\uFF0C\u5373\u8868\u793A\u4E3A0.09\u6216UNARY_PERCENT(9)\uFF0C\u800C\u4E0D\u8981\u8868\u793A\u4E3A9\u3002"
  10510. }
  10511. ]
  10512. },
  10513. "YIELD": {
  10514. "d": "\u8FD4\u56DE\u5B9A\u671F\u652F\u4ED8\u5229\u606F\u7684\u503A\u5238\u7684\u6536\u76CA\u7387\u3002",
  10515. "a": "\u8FD4\u56DE\u5B9A\u671F\u652F\u4ED8\u5229\u606F\u7684\u503A\u5238\u7684\u6536\u76CA\u7387\u3002",
  10516. "p": [
  10517. {
  10518. "name": "settlement",
  10519. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u7ED3\u7B97\u65E5\u3002 \u6709\u4EF7\u8BC1\u5238\u7ED3\u7B97\u65E5\u662F\u5728\u53D1\u884C\u65E5\u4E4B\u540E\uFF0C\u6709\u4EF7\u8BC1\u5238\u5356\u7ED9\u8D2D\u4E70\u8005\u7684\u65E5\u671F\u3002"
  10520. },
  10521. {
  10522. "name": "maturity",
  10523. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u5230\u671F\u65E5\u3002 \u5230\u671F\u65E5\u662F\u6709\u4EF7\u8BC1\u5238\u6709\u6548\u671F\u622A\u6B62\u65F6\u7684\u65E5\u671F\u3002"
  10524. },
  10525. {
  10526. "name": "rate",
  10527. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u5E74\u606F\u7968\u5229\u7387\u3002"
  10528. },
  10529. {
  10530. "name": "pr",
  10531. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u4EF7\u683C\u3002"
  10532. },
  10533. {
  10534. "name": "redemption",
  10535. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u6E05\u507F\u4EF7\u503C\u3002"
  10536. },
  10537. {
  10538. "name": "frequency",
  10539. "detail": "\u5E74\u4ED8\u606F\u6B21\u6570\u3002\n\n\u5982\u679C\u6309\u5E74\u652F\u4ED8\uFF0Cfrequency = 1\uFF1B\n\n\u6309\u534A\u5E74\u671F\u652F\u4ED8\uFF0Cfrequency = 2\uFF1B\n\n\u6309\u5B63\u652F\u4ED8\uFF0Cfrequency = 4\u3002"
  10540. },
  10541. {
  10542. "name": "basis",
  10543. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u4E3A0] - \u6307\u793A\u8981\u4F7F\u7528\u54EA\u79CD\u5929\u6570\u8BA1\u7B97\u65B9\u6CD5\u3002\n\n0\u8868\u793A\u201C\u7F8E\u56FD(NASD) 30/360\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u6309\u7167\u7F8E\u56FD\u5168\u56FD\u8BC1\u5238\u4EA4\u6613\u5546\u534F\u4F1A\u6807\u51C6\uFF0C\u5047\u8BBE\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\uFF0C\u5E76\u5BF9\u6240\u8F93\u5165\u7684\u6708\u672B\u65E5\u671F\u8FDB\u884C\u5177\u4F53\u8C03\u6574\u3002\n\n1\u8868\u793A\u201C\u5B9E\u9645/\u5B9E\u9645\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u8BA1\u7B97\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u548C\u6240\u6D89\u53CA\u7684\u5E74\u4EFD\u4E2D\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\u3002\u6B64\u65B9\u6CD5\u7528\u4E8E\u7F8E\u56FD\u957F\u671F\u503A\u5238\uFF0C\u4E5F\u662F\u5728\u975E\u8D22\u7ECF\u7528\u9014\u65B9\u9762\u4F7F\u7528\u6700\u591A\u7684\u65B9\u6CD5\u3002\n\n2\u8868\u793A\u201C\u5B9E\u9645/360\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u5047\u5B9A\u6BCF\u5E74\u4E3A360\u5929\u3002\n\n3\u8868\u793A\u201C\u5B9E\u9645/365\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u5047\u5B9A\u6BCF\u5E74\u4E3A365\u5929\u3002\n\n4\u8868\u793A\u201C\u6B27\u6D3230/360\u201D\u65B9\u6CD5 - \u7C7B\u4F3C\u4E8E0\uFF0C\u6B64\u65B9\u6CD5\u57FA\u4E8E\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u6309\u7167\u6B27\u6D32\u91D1\u878D\u60EF\u4F8B\u5BF9\u6708\u672B\u65E5\u671F\u8FDB\u884C\u8C03\u6574\u3002"
  10544. }
  10545. ]
  10546. },
  10547. "YIELDDISC": {
  10548. "d": "\u57FA\u4E8E\u4EF7\u683C\u8BA1\u7B97\u6298\u4EF7\u53D1\u884C\u7684\uFF08\u4E0D\u5E26\u606F\uFF09\u503A\u5238\u7684\u5E74\u6536\u76CA\u7387\u3002",
  10549. "a": "\u57FA\u4E8E\u4EF7\u683C\u8BA1\u7B97\u6298\u4EF7\u53D1\u884C\u7684\uFF08\u4E0D\u5E26\u606F\uFF09\u503A\u5238\u7684\u5E74\u6536\u76CA\u7387\u3002",
  10550. "p": [
  10551. {
  10552. "name": "settlement",
  10553. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u7ED3\u7B97\u65E5\u3002 \u6709\u4EF7\u8BC1\u5238\u7ED3\u7B97\u65E5\u662F\u5728\u53D1\u884C\u65E5\u4E4B\u540E\uFF0C\u6709\u4EF7\u8BC1\u5238\u5356\u7ED9\u8D2D\u4E70\u8005\u7684\u65E5\u671F\u3002"
  10554. },
  10555. {
  10556. "name": "maturity",
  10557. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u5230\u671F\u65E5\u3002 \u5230\u671F\u65E5\u662F\u6709\u4EF7\u8BC1\u5238\u6709\u6548\u671F\u622A\u6B62\u65F6\u7684\u65E5\u671F\u3002"
  10558. },
  10559. {
  10560. "name": "pr",
  10561. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u4EF7\u683C\u3002"
  10562. },
  10563. {
  10564. "name": "redemption",
  10565. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u6E05\u507F\u4EF7\u503C\u3002"
  10566. },
  10567. {
  10568. "name": "basis",
  10569. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u4E3A0] - \u6307\u793A\u8981\u4F7F\u7528\u54EA\u79CD\u5929\u6570\u8BA1\u7B97\u65B9\u6CD5\u3002\n\n0\u8868\u793A\u201C\u7F8E\u56FD(NASD) 30/360\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u6309\u7167\u7F8E\u56FD\u5168\u56FD\u8BC1\u5238\u4EA4\u6613\u5546\u534F\u4F1A\u6807\u51C6\uFF0C\u5047\u8BBE\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\uFF0C\u5E76\u5BF9\u6240\u8F93\u5165\u7684\u6708\u672B\u65E5\u671F\u8FDB\u884C\u5177\u4F53\u8C03\u6574\u3002\n\n1\u8868\u793A\u201C\u5B9E\u9645/\u5B9E\u9645\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u8BA1\u7B97\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u548C\u6240\u6D89\u53CA\u7684\u5E74\u4EFD\u4E2D\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\u3002\u6B64\u65B9\u6CD5\u7528\u4E8E\u7F8E\u56FD\u957F\u671F\u503A\u5238\uFF0C\u4E5F\u662F\u5728\u975E\u8D22\u7ECF\u7528\u9014\u65B9\u9762\u4F7F\u7528\u6700\u591A\u7684\u65B9\u6CD5\u3002\n\n2\u8868\u793A\u201C\u5B9E\u9645/360\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u5047\u5B9A\u6BCF\u5E74\u4E3A360\u5929\u3002\n\n3\u8868\u793A\u201C\u5B9E\u9645/365\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u5047\u5B9A\u6BCF\u5E74\u4E3A365\u5929\u3002\n\n4\u8868\u793A\u201C\u6B27\u6D3230/360\u201D\u65B9\u6CD5 - \u7C7B\u4F3C\u4E8E0\uFF0C\u6B64\u65B9\u6CD5\u57FA\u4E8E\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u6309\u7167\u6B27\u6D32\u91D1\u878D\u60EF\u4F8B\u5BF9\u6708\u672B\u65E5\u671F\u8FDB\u884C\u8C03\u6574\u3002"
  10570. }
  10571. ]
  10572. },
  10573. "NOMINAL": {
  10574. "d": "\u57FA\u4E8E\u7ED9\u5B9A\u7684\u5B9E\u9645\u5229\u7387\u548C\u5E74\u590D\u5229\u671F\u6570\uFF0C\u8FD4\u56DE\u540D\u4E49\u5E74\u5229\u7387\u3002",
  10575. "a": "\u57FA\u4E8E\u7ED9\u5B9A\u7684\u5B9E\u9645\u5229\u7387\u548C\u5E74\u590D\u5229\u671F\u6570\uFF0C\u8FD4\u56DE\u540D\u4E49\u5E74\u5229\u7387\u3002",
  10576. "p": [
  10577. {
  10578. "name": "effect_rate",
  10579. "detail": "\u6BCF\u5E74\u7684\u5B9E\u9645\u5229\u7387\u3002"
  10580. },
  10581. {
  10582. "name": "npery",
  10583. "detail": "\u6BCF\u5E74\u7684\u590D\u5229\u671F\u6570\u3002"
  10584. }
  10585. ]
  10586. },
  10587. "XIRR": {
  10588. "d": "\u8FD4\u56DE\u4E00\u7EC4\u4E0D\u4E00\u5B9A\u5B9A\u671F\u53D1\u751F\u7684\u73B0\u91D1\u6D41\u7684\u5185\u90E8\u6536\u76CA\u7387\u3002",
  10589. "a": "\u8FD4\u56DE\u4E00\u7EC4\u4E0D\u4E00\u5B9A\u5B9A\u671F\u53D1\u751F\u7684\u73B0\u91D1\u6D41\u7684\u5185\u90E8\u6536\u76CA\u7387\u3002",
  10590. "p": [
  10591. {
  10592. "name": "values",
  10593. "detail": "\u5176\u4E2D\u542B\u6709\u6295\u8D44\u76F8\u5173\u6536\u76CA\u6216\u652F\u51FA\u7684\u6570\u7EC4\u6216\u8303\u56F4\u3002\n\n\u73B0\u91D1\u6D41\u6570\u989D\u4E2D\u5FC5\u987B\u81F3\u5C11\u5305\u542B\u4E00\u9879\u8D1F\u7684\u548C\u4E00\u9879\u6B63\u7684\u73B0\u91D1\u6D41\u91D1\u989D\u624D\u80FD\u8BA1\u7B97\u56DE\u62A5\u7387\u3002"
  10594. },
  10595. {
  10596. "name": "dates",
  10597. "detail": "\u4E0E\u73B0\u91D1\u6D41\u6570\u989D\u53C2\u6570\u4E2D\u7684\u73B0\u91D1\u6D41\u5BF9\u5E94\u7684\u65E5\u671F\u6570\u7EC4\u6216\u8303\u56F4\u3002"
  10598. },
  10599. {
  10600. "name": "guess",
  10601. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u503C\u4E3A0.1] - \u5BF9\u5185\u90E8\u56DE\u62A5\u7387\u7684\u4F30\u7B97\u503C\u3002"
  10602. }
  10603. ]
  10604. },
  10605. "MIRR": {
  10606. "d": "\u8FD4\u56DE\u4E00\u7CFB\u5217\u5B9A\u671F\u73B0\u91D1\u6D41\u7684\u4FEE\u6539\u540E\u5185\u90E8\u6536\u76CA\u7387\u3002",
  10607. "a": "\u8FD4\u56DE\u4E00\u7CFB\u5217\u5B9A\u671F\u73B0\u91D1\u6D41\u7684\u4FEE\u6539\u540E\u5185\u90E8\u6536\u76CA\u7387\u3002",
  10608. "p": [
  10609. {
  10610. "name": "values",
  10611. "detail": "\u5176\u4E2D\u542B\u6709\u6295\u8D44\u76F8\u5173\u6536\u76CA\u6216\u652F\u51FA\u7684\u6570\u7EC4\u6216\u8303\u56F4\u3002\n\n\u73B0\u91D1\u6D41\u6570\u989D\u4E2D\u5FC5\u987B\u81F3\u5C11\u5305\u542B\u4E00\u9879\u8D1F\u7684\u548C\u4E00\u9879\u6B63\u7684\u73B0\u91D1\u6D41\u91D1\u989D\u624D\u80FD\u8BA1\u7B97\u56DE\u62A5\u7387\u3002"
  10612. },
  10613. {
  10614. "name": "finance_rate",
  10615. "detail": "\u73B0\u91D1\u6D41\u4E2D\u4F7F\u7528\u7684\u8D44\u91D1\u652F\u4ED8\u7684\u5229\u7387\u3002"
  10616. },
  10617. {
  10618. "name": "reinvest_rate",
  10619. "detail": "\u5C06\u73B0\u91D1\u6D41\u518D\u6295\u8D44\u7684\u6536\u76CA\u7387\u3002"
  10620. }
  10621. ]
  10622. },
  10623. "IRR": {
  10624. "d": "\u8FD4\u56DE\u7531\u503C\u4E2D\u7684\u6570\u5B57\u8868\u793A\u7684\u4E00\u7CFB\u5217\u73B0\u91D1\u6D41\u7684\u5185\u90E8\u6536\u76CA\u7387\u3002 ",
  10625. "a": "\u8FD4\u56DE\u7531\u503C\u4E2D\u7684\u6570\u5B57\u8868\u793A\u7684\u4E00\u7CFB\u5217\u73B0\u91D1\u6D41\u7684\u5185\u90E8\u6536\u76CA\u7387\u3002 ",
  10626. "p": [
  10627. {
  10628. "name": "values",
  10629. "detail": "\u5176\u4E2D\u542B\u6709\u6295\u8D44\u76F8\u5173\u6536\u76CA\u6216\u652F\u51FA\u7684\u6570\u7EC4\u6216\u8303\u56F4\u3002\n\n\u73B0\u91D1\u6D41\u6570\u989D\u4E2D\u5FC5\u987B\u81F3\u5C11\u5305\u542B\u4E00\u9879\u8D1F\u7684\u548C\u4E00\u9879\u6B63\u7684\u73B0\u91D1\u6D41\u91D1\u989D\u624D\u80FD\u8BA1\u7B97\u56DE\u62A5\u7387\u3002"
  10630. },
  10631. {
  10632. "name": "guess",
  10633. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u4E3A 0.1] - \u5185\u90E8\u6536\u76CA\u7387\u7684\u4F30\u503C\u3002"
  10634. }
  10635. ]
  10636. },
  10637. "NPV": {
  10638. "d": "\u4F7F\u7528\u8D34\u73B0\u7387\u548C\u4E00\u7CFB\u5217\u672A\u6765\u652F\u51FA\uFF08\u8D1F\u503C\uFF09\u548C\u6536\u76CA\uFF08\u6B63\u503C\uFF09\u6765\u8BA1\u7B97\u4E00\u9879\u6295\u8D44\u7684\u51C0\u73B0\u503C\u3002",
  10639. "a": "\u4F7F\u7528\u8D34\u73B0\u7387\u548C\u4E00\u7CFB\u5217\u672A\u6765\u652F\u51FA\uFF08\u8D1F\u503C\uFF09\u548C\u6536\u76CA\uFF08\u6B63\u503C\uFF09\u6765\u8BA1\u7B97\u4E00\u9879\u6295\u8D44\u7684\u51C0\u73B0\u503C\u3002",
  10640. "p": [
  10641. {
  10642. "name": "rate",
  10643. "detail": "\u67D0\u4E00\u671F\u95F4\u7684\u8D34\u73B0\u7387\u3002"
  10644. },
  10645. {
  10646. "name": "value1",
  10647. "detail": "\u7B2C\u4E00\u7B14\u652F\u51FA\uFF08\u8D1F\u503C\uFF09\u548C\u6536\u76CA\uFF08\u6B63\u503C\uFF09\u3002"
  10648. },
  10649. {
  10650. "name": "value2, ...",
  10651. "detail": "[\u53EF\u9009] - \u5176\u4ED6\u652F\u51FA\uFF08\u8D1F\u503C\uFF09\u548C\u6536\u76CA\uFF08\u6B63\u503C\uFF09\u3002"
  10652. }
  10653. ]
  10654. },
  10655. "XNPV": {
  10656. "d": "\u8FD4\u56DE\u4E00\u7EC4\u73B0\u91D1\u6D41\u7684\u51C0\u73B0\u503C\uFF0C\u8FD9\u4E9B\u73B0\u91D1\u6D41\u4E0D\u4E00\u5B9A\u5B9A\u671F\u53D1\u751F\u3002",
  10657. "a": "\u8FD4\u56DE\u4E00\u7EC4\u73B0\u91D1\u6D41\u7684\u51C0\u73B0\u503C\uFF0C\u8FD9\u4E9B\u73B0\u91D1\u6D41\u4E0D\u4E00\u5B9A\u5B9A\u671F\u53D1\u751F\u3002",
  10658. "p": [
  10659. {
  10660. "name": "rate",
  10661. "detail": "\u5E94\u7528\u4E8E\u73B0\u91D1\u6D41\u7684\u8D34\u73B0\u7387\u3002"
  10662. },
  10663. {
  10664. "name": "values",
  10665. "detail": "\u4E0E dates \u4E2D\u7684\u652F\u4ED8\u65F6\u95F4\u76F8\u5BF9\u5E94\u7684\u4E00\u7CFB\u5217\u73B0\u91D1\u6D41\u3002"
  10666. },
  10667. {
  10668. "name": "dates",
  10669. "detail": "\u4E0E\u73B0\u91D1\u6D41\u652F\u4ED8\u76F8\u5BF9\u5E94\u7684\u652F\u4ED8\u65E5\u671F\u8868\u3002"
  10670. }
  10671. ]
  10672. },
  10673. "CUMIPMT": {
  10674. "d": "\u57FA\u4E8E\u7B49\u989D\u5206\u671F\u4ED8\u6B3E\u548C\u56FA\u5B9A\u5229\u7387\uFF0C\u8BA1\u7B97\u6295\u8D44\u5728\u4E00\u7CFB\u5217\u4ED8\u6B3E\u671F\u5185\u7684\u7D2F\u8BA1\u5229\u606F\u3002",
  10675. "a": "\u57FA\u4E8E\u7B49\u989D\u5206\u671F\u4ED8\u6B3E\u548C\u56FA\u5B9A\u5229\u7387\uFF0C\u8BA1\u7B97\u6295\u8D44\u5728\u4E00\u7CFB\u5217\u4ED8\u6B3E\u671F\u5185\u7684\u7D2F\u8BA1\u5229\u606F\u3002",
  10676. "p": [
  10677. {
  10678. "name": "rate",
  10679. "detail": "\u5229\u606F\u7387\u3002"
  10680. },
  10681. {
  10682. "name": "nper",
  10683. "detail": "\u603B\u4ED8\u6B3E\u671F\u6570\u3002"
  10684. },
  10685. {
  10686. "name": "pv",
  10687. "detail": "\u73B0\u503C\u3002"
  10688. },
  10689. {
  10690. "name": "start_period",
  10691. "detail": "\u5F00\u59CB\u7D2F\u8BA1\u8BA1\u7B97\u7684\u4ED8\u6B3E\u671F\u5E8F\u53F7\u3002\n\n\u9996\u671F\u5FC5\u987B\u5927\u4E8E\u7B49\u4E8E1\u3002"
  10692. },
  10693. {
  10694. "name": "end_period",
  10695. "detail": "\u7ED3\u675F\u7D2F\u8BA1\u8BA1\u7B97\u7684\u4ED8\u6B3E\u671F\u5E8F\u53F7\u3002\n\n\u672B\u671F\u5FC5\u987B\u5927\u4E8E\u9996\u671F\u3002"
  10696. },
  10697. {
  10698. "name": "type",
  10699. "detail": "\u6307\u5B9A\u5404\u671F\u7684\u4ED8\u6B3E\u65F6\u95F4\u662F\u5728\u671F\u521D\u8FD8\u662F\u671F\u672B\u3002\n\n0 \u8868\u793A\u671F\u672B\uFF1B\n\n1 \u8868\u793A\u671F\u521D\u3002"
  10700. }
  10701. ]
  10702. },
  10703. "PMT": {
  10704. "d": "\u7528\u4E8E\u6839\u636E\u56FA\u5B9A\u4ED8\u6B3E\u989D\u548C\u56FA\u5B9A\u5229\u7387\u8BA1\u7B97\u8D37\u6B3E\u7684\u4ED8\u6B3E\u989D\u3002",
  10705. "a": "\u7528\u4E8E\u6839\u636E\u56FA\u5B9A\u4ED8\u6B3E\u989D\u548C\u56FA\u5B9A\u5229\u7387\u8BA1\u7B97\u8D37\u6B3E\u7684\u4ED8\u6B3E\u989D\u3002",
  10706. "p": [
  10707. {
  10708. "name": "rate",
  10709. "detail": "\u8D37\u6B3E\u5229\u7387\u3002"
  10710. },
  10711. {
  10712. "name": "nper",
  10713. "detail": "\u8BE5\u9879\u8D37\u6B3E\u7684\u4ED8\u6B3E\u603B\u6570\u3002"
  10714. },
  10715. {
  10716. "name": "pv",
  10717. "detail": "\u73B0\u503C\uFF0C\u6216\u4E00\u7CFB\u5217\u672A\u6765\u4ED8\u6B3E\u989D\u73B0\u5728\u6240\u503C\u7684\u603B\u989D\uFF0C\u4E5F\u53EB\u672C\u91D1\u3002"
  10718. },
  10719. {
  10720. "name": "fv",
  10721. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u503C\u4E3A 0] - \u672A\u6765\u503C\uFF0C\u6216\u5728\u6700\u540E\u4E00\u6B21\u4ED8\u6B3E\u540E\u5E0C\u671B\u5F97\u5230\u7684\u73B0\u91D1\u4F59\u989D\u3002"
  10722. },
  10723. {
  10724. "name": "type",
  10725. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u503C\u4E3A 0] - \u6307\u5B9A\u5404\u671F\u7684\u4ED8\u6B3E\u65F6\u95F4\u662F\u5728\u671F\u521D\u8FD8\u662F\u671F\u672B\u3002\n\n0 \u8868\u793A\u671F\u672B\uFF1B\n\n1 \u8868\u793A\u671F\u521D\u3002"
  10726. }
  10727. ]
  10728. },
  10729. "IPMT": {
  10730. "d": "\u57FA\u4E8E\u56FA\u5B9A\u5229\u7387\u53CA\u7B49\u989D\u5206\u671F\u4ED8\u6B3E\u65B9\u5F0F\uFF0C\u8FD4\u56DE\u7ED9\u5B9A\u671F\u6570\u5185\u5BF9\u6295\u8D44\u7684\u5229\u606F\u507F\u8FD8\u989D\u3002",
  10731. "a": "\u57FA\u4E8E\u56FA\u5B9A\u5229\u7387\u53CA\u7B49\u989D\u5206\u671F\u4ED8\u6B3E\u65B9\u5F0F\uFF0C\u8FD4\u56DE\u7ED9\u5B9A\u671F\u6570\u5185\u5BF9\u6295\u8D44\u7684\u5229\u606F\u507F\u8FD8\u989D\u3002",
  10732. "p": [
  10733. {
  10734. "name": "rate",
  10735. "detail": "\u5404\u671F\u5229\u7387\u3002"
  10736. },
  10737. {
  10738. "name": "per",
  10739. "detail": "\u7528\u4E8E\u8BA1\u7B97\u5176\u5229\u606F\u6570\u989D\u7684\u671F\u6570\uFF0C\u5FC5\u987B\u5728 1 \u5230 nper \u4E4B\u95F4\u3002"
  10740. },
  10741. {
  10742. "name": "nper",
  10743. "detail": "\u5E74\u91D1\u7684\u4ED8\u6B3E\u603B\u671F\u6570\u3002"
  10744. },
  10745. {
  10746. "name": "pv",
  10747. "detail": "\u73B0\u503C\uFF0C\u6216\u4E00\u7CFB\u5217\u672A\u6765\u4ED8\u6B3E\u7684\u5F53\u524D\u503C\u7684\u7D2F\u79EF\u548C\u3002"
  10748. },
  10749. {
  10750. "name": "fv",
  10751. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u503C\u4E3A 0] - \u672A\u6765\u503C\uFF0C\u6216\u5728\u6700\u540E\u4E00\u6B21\u4ED8\u6B3E\u540E\u5E0C\u671B\u5F97\u5230\u7684\u73B0\u91D1\u4F59\u989D\u3002"
  10752. },
  10753. {
  10754. "name": "type",
  10755. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u503C\u4E3A 0] - \u6307\u5B9A\u5404\u671F\u7684\u4ED8\u6B3E\u65F6\u95F4\u662F\u5728\u671F\u521D\u8FD8\u662F\u671F\u672B\u3002\n\n0 \u8868\u793A\u671F\u672B\uFF1B\n\n1 \u8868\u793A\u671F\u521D\u3002"
  10756. }
  10757. ]
  10758. },
  10759. "PPMT": {
  10760. "d": "\u8FD4\u56DE\u6839\u636E\u5B9A\u671F\u56FA\u5B9A\u4ED8\u6B3E\u548C\u56FA\u5B9A\u5229\u7387\u800C\u5B9A\u7684\u6295\u8D44\u5728\u5DF2\u77E5\u671F\u95F4\u5185\u7684\u672C\u91D1\u507F\u4ED8\u989D\u3002",
  10761. "a": "\u8FD4\u56DE\u6839\u636E\u5B9A\u671F\u56FA\u5B9A\u4ED8\u6B3E\u548C\u56FA\u5B9A\u5229\u7387\u800C\u5B9A\u7684\u6295\u8D44\u5728\u5DF2\u77E5\u671F\u95F4\u5185\u7684\u672C\u91D1\u507F\u4ED8\u989D\u3002",
  10762. "p": [
  10763. {
  10764. "name": "rate",
  10765. "detail": "\u5404\u671F\u5229\u7387\u3002"
  10766. },
  10767. {
  10768. "name": "per",
  10769. "detail": "\u6307\u5B9A\u671F\u6570\uFF0C\u8BE5\u503C\u5FC5\u987B\u5728 1 \u5230 nper \u8303\u56F4\u5185\u3002"
  10770. },
  10771. {
  10772. "name": "nper",
  10773. "detail": "\u5E74\u91D1\u7684\u4ED8\u6B3E\u603B\u671F\u6570\u3002"
  10774. },
  10775. {
  10776. "name": "pv",
  10777. "detail": "\u73B0\u503C\u5373\u4E00\u7CFB\u5217\u672A\u6765\u4ED8\u6B3E\u5F53\u524D\u503C\u7684\u603B\u548C\u3002"
  10778. },
  10779. {
  10780. "name": "fv",
  10781. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u503C\u4E3A 0] - \u672A\u6765\u503C\uFF0C\u6216\u5728\u6700\u540E\u4E00\u6B21\u4ED8\u6B3E\u540E\u5E0C\u671B\u5F97\u5230\u7684\u73B0\u91D1\u4F59\u989D\u3002"
  10782. },
  10783. {
  10784. "name": "type",
  10785. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u503C\u4E3A 0] - \u6307\u5B9A\u5404\u671F\u7684\u4ED8\u6B3E\u65F6\u95F4\u662F\u5728\u671F\u521D\u8FD8\u662F\u671F\u672B\u3002\n\n0 \u8868\u793A\u671F\u672B\uFF1B\n\n1 \u8868\u793A\u671F\u521D\u3002"
  10786. }
  10787. ]
  10788. },
  10789. "INTRATE": {
  10790. "d": "\u8FD4\u56DE\u5B8C\u5168\u6295\u8D44\u578B\u8BC1\u5238\u7684\u5229\u7387\u3002",
  10791. "a": "\u8FD4\u56DE\u5B8C\u5168\u6295\u8D44\u578B\u8BC1\u5238\u7684\u5229\u7387\u3002",
  10792. "p": [
  10793. {
  10794. "name": "settlement",
  10795. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u7ED3\u7B97\u65E5\u3002 \u6709\u4EF7\u8BC1\u5238\u7ED3\u7B97\u65E5\u662F\u5728\u53D1\u884C\u65E5\u4E4B\u540E\uFF0C\u6709\u4EF7\u8BC1\u5238\u5356\u7ED9\u8D2D\u4E70\u8005\u7684\u65E5\u671F\u3002"
  10796. },
  10797. {
  10798. "name": "maturity",
  10799. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u5230\u671F\u65E5\u3002 \u5230\u671F\u65E5\u662F\u6709\u4EF7\u8BC1\u5238\u6709\u6548\u671F\u622A\u6B62\u65F6\u7684\u65E5\u671F\u3002"
  10800. },
  10801. {
  10802. "name": "investment",
  10803. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u6295\u8D44\u989D\u3002"
  10804. },
  10805. {
  10806. "name": "redemption",
  10807. "detail": "\u6709\u4EF7\u8BC1\u5238\u5230\u671F\u65F6\u7684\u5151\u6362\u503C\u3002"
  10808. },
  10809. {
  10810. "name": "basis",
  10811. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u4E3A0] - \u6307\u793A\u8981\u4F7F\u7528\u54EA\u79CD\u5929\u6570\u8BA1\u7B97\u65B9\u6CD5\u3002\n\n0\u8868\u793A\u201C\u7F8E\u56FD(NASD) 30/360\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u6309\u7167\u7F8E\u56FD\u5168\u56FD\u8BC1\u5238\u4EA4\u6613\u5546\u534F\u4F1A\u6807\u51C6\uFF0C\u5047\u8BBE\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\uFF0C\u5E76\u5BF9\u6240\u8F93\u5165\u7684\u6708\u672B\u65E5\u671F\u8FDB\u884C\u5177\u4F53\u8C03\u6574\u3002\n\n1\u8868\u793A\u201C\u5B9E\u9645/\u5B9E\u9645\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u8BA1\u7B97\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u548C\u6240\u6D89\u53CA\u7684\u5E74\u4EFD\u4E2D\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\u3002\u6B64\u65B9\u6CD5\u7528\u4E8E\u7F8E\u56FD\u957F\u671F\u503A\u5238\uFF0C\u4E5F\u662F\u5728\u975E\u8D22\u7ECF\u7528\u9014\u65B9\u9762\u4F7F\u7528\u6700\u591A\u7684\u65B9\u6CD5\u3002\n\n2\u8868\u793A\u201C\u5B9E\u9645/360\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u5047\u5B9A\u6BCF\u5E74\u4E3A360\u5929\u3002\n\n3\u8868\u793A\u201C\u5B9E\u9645/365\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u5047\u5B9A\u6BCF\u5E74\u4E3A365\u5929\u3002\n\n4\u8868\u793A\u201C\u6B27\u6D3230/360\u201D\u65B9\u6CD5 - \u7C7B\u4F3C\u4E8E0\uFF0C\u6B64\u65B9\u6CD5\u57FA\u4E8E\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u6309\u7167\u6B27\u6D32\u91D1\u878D\u60EF\u4F8B\u5BF9\u6708\u672B\u65E5\u671F\u8FDB\u884C\u8C03\u6574\u3002"
  10812. }
  10813. ]
  10814. },
  10815. "PRICE": {
  10816. "d": "\u8FD4\u56DE\u5B9A\u671F\u4ED8\u606F\u7684\u9762\u503C \uFFE5100 \u7684\u6709\u4EF7\u8BC1\u5238\u7684\u4EF7\u683C\u3002",
  10817. "a": "\u8FD4\u56DE\u5B9A\u671F\u4ED8\u606F\u7684\u9762\u503C \uFFE5100 \u7684\u6709\u4EF7\u8BC1\u5238\u7684\u4EF7\u683C\u3002",
  10818. "p": [
  10819. {
  10820. "name": "settlement",
  10821. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u7ED3\u7B97\u65E5\u3002 \u6709\u4EF7\u8BC1\u5238\u7ED3\u7B97\u65E5\u662F\u5728\u53D1\u884C\u65E5\u4E4B\u540E\uFF0C\u6709\u4EF7\u8BC1\u5238\u5356\u7ED9\u8D2D\u4E70\u8005\u7684\u65E5\u671F\u3002"
  10822. },
  10823. {
  10824. "name": "maturity",
  10825. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u5230\u671F\u65E5\u3002 \u5230\u671F\u65E5\u662F\u6709\u4EF7\u8BC1\u5238\u6709\u6548\u671F\u622A\u6B62\u65F6\u7684\u65E5\u671F\u3002"
  10826. },
  10827. {
  10828. "name": "rate",
  10829. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u5E74\u606F\u7968\u5229\u7387\u3002"
  10830. },
  10831. {
  10832. "name": "yld",
  10833. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u5E74\u6536\u76CA\u7387\u3002"
  10834. },
  10835. {
  10836. "name": "redemption",
  10837. "detail": "\u9762\u503C \uFFE5100 \u7684\u6709\u4EF7\u8BC1\u5238\u7684\u6E05\u507F\u4EF7\u503C\u3002"
  10838. },
  10839. {
  10840. "name": "frequency",
  10841. "detail": "\u5E74\u4ED8\u606F\u6B21\u6570\u3002\n\n\u5982\u679C\u6309\u5E74\u652F\u4ED8\uFF0Cfrequency = 1\uFF1B\n\n\u6309\u534A\u5E74\u671F\u652F\u4ED8\uFF0Cfrequency = 2\uFF1B\n\n\u6309\u5B63\u652F\u4ED8\uFF0Cfrequency = 4\u3002"
  10842. },
  10843. {
  10844. "name": "basis",
  10845. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u4E3A0] - \u6307\u793A\u8981\u4F7F\u7528\u54EA\u79CD\u5929\u6570\u8BA1\u7B97\u65B9\u6CD5\u3002\n\n0\u8868\u793A\u201C\u7F8E\u56FD(NASD) 30/360\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u6309\u7167\u7F8E\u56FD\u5168\u56FD\u8BC1\u5238\u4EA4\u6613\u5546\u534F\u4F1A\u6807\u51C6\uFF0C\u5047\u8BBE\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\uFF0C\u5E76\u5BF9\u6240\u8F93\u5165\u7684\u6708\u672B\u65E5\u671F\u8FDB\u884C\u5177\u4F53\u8C03\u6574\u3002\n\n1\u8868\u793A\u201C\u5B9E\u9645/\u5B9E\u9645\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u8BA1\u7B97\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u548C\u6240\u6D89\u53CA\u7684\u5E74\u4EFD\u4E2D\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\u3002\u6B64\u65B9\u6CD5\u7528\u4E8E\u7F8E\u56FD\u957F\u671F\u503A\u5238\uFF0C\u4E5F\u662F\u5728\u975E\u8D22\u7ECF\u7528\u9014\u65B9\u9762\u4F7F\u7528\u6700\u591A\u7684\u65B9\u6CD5\u3002\n\n2\u8868\u793A\u201C\u5B9E\u9645/360\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u5047\u5B9A\u6BCF\u5E74\u4E3A360\u5929\u3002\n\n3\u8868\u793A\u201C\u5B9E\u9645/365\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u5047\u5B9A\u6BCF\u5E74\u4E3A365\u5929\u3002\n\n4\u8868\u793A\u201C\u6B27\u6D3230/360\u201D\u65B9\u6CD5 - \u7C7B\u4F3C\u4E8E0\uFF0C\u6B64\u65B9\u6CD5\u57FA\u4E8E\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u6309\u7167\u6B27\u6D32\u91D1\u878D\u60EF\u4F8B\u5BF9\u6708\u672B\u65E5\u671F\u8FDB\u884C\u8C03\u6574\u3002"
  10846. }
  10847. ]
  10848. },
  10849. "PRICEDISC": {
  10850. "d": "\u8FD4\u56DE\u6298\u4EF7\u53D1\u884C\u7684\u9762\u503C \uFFE5100 \u7684\u6709\u4EF7\u8BC1\u5238\u7684\u4EF7\u683C\u3002",
  10851. "a": "\u8FD4\u56DE\u6298\u4EF7\u53D1\u884C\u7684\u9762\u503C \uFFE5100 \u7684\u6709\u4EF7\u8BC1\u5238\u7684\u4EF7\u683C\u3002",
  10852. "p": [
  10853. {
  10854. "name": "settlement",
  10855. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u7ED3\u7B97\u65E5\u3002 \u6709\u4EF7\u8BC1\u5238\u7ED3\u7B97\u65E5\u662F\u5728\u53D1\u884C\u65E5\u4E4B\u540E\uFF0C\u6709\u4EF7\u8BC1\u5238\u5356\u7ED9\u8D2D\u4E70\u8005\u7684\u65E5\u671F\u3002"
  10856. },
  10857. {
  10858. "name": "maturity",
  10859. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u5230\u671F\u65E5\u3002 \u5230\u671F\u65E5\u662F\u6709\u4EF7\u8BC1\u5238\u6709\u6548\u671F\u622A\u6B62\u65F6\u7684\u65E5\u671F\u3002"
  10860. },
  10861. {
  10862. "name": "discount",
  10863. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u8D34\u73B0\u7387\u3002"
  10864. },
  10865. {
  10866. "name": "redemption",
  10867. "detail": "\u9762\u503C \uFFE5100 \u7684\u6709\u4EF7\u8BC1\u5238\u7684\u6E05\u507F\u4EF7\u503C\u3002"
  10868. },
  10869. {
  10870. "name": "basis",
  10871. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u4E3A0] - \u6307\u793A\u8981\u4F7F\u7528\u54EA\u79CD\u5929\u6570\u8BA1\u7B97\u65B9\u6CD5\u3002\n\n0\u8868\u793A\u201C\u7F8E\u56FD(NASD) 30/360\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u6309\u7167\u7F8E\u56FD\u5168\u56FD\u8BC1\u5238\u4EA4\u6613\u5546\u534F\u4F1A\u6807\u51C6\uFF0C\u5047\u8BBE\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\uFF0C\u5E76\u5BF9\u6240\u8F93\u5165\u7684\u6708\u672B\u65E5\u671F\u8FDB\u884C\u5177\u4F53\u8C03\u6574\u3002\n\n1\u8868\u793A\u201C\u5B9E\u9645/\u5B9E\u9645\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u8BA1\u7B97\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u548C\u6240\u6D89\u53CA\u7684\u5E74\u4EFD\u4E2D\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\u3002\u6B64\u65B9\u6CD5\u7528\u4E8E\u7F8E\u56FD\u957F\u671F\u503A\u5238\uFF0C\u4E5F\u662F\u5728\u975E\u8D22\u7ECF\u7528\u9014\u65B9\u9762\u4F7F\u7528\u6700\u591A\u7684\u65B9\u6CD5\u3002\n\n2\u8868\u793A\u201C\u5B9E\u9645/360\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u5047\u5B9A\u6BCF\u5E74\u4E3A360\u5929\u3002\n\n3\u8868\u793A\u201C\u5B9E\u9645/365\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u5047\u5B9A\u6BCF\u5E74\u4E3A365\u5929\u3002\n\n4\u8868\u793A\u201C\u6B27\u6D3230/360\u201D\u65B9\u6CD5 - \u7C7B\u4F3C\u4E8E0\uFF0C\u6B64\u65B9\u6CD5\u57FA\u4E8E\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u6309\u7167\u6B27\u6D32\u91D1\u878D\u60EF\u4F8B\u5BF9\u6708\u672B\u65E5\u671F\u8FDB\u884C\u8C03\u6574\u3002"
  10872. }
  10873. ]
  10874. },
  10875. "PRICEMAT": {
  10876. "d": "\u8FD4\u56DE\u5230\u671F\u4ED8\u606F\u7684\u9762\u503C \uFFE5100 \u7684\u6709\u4EF7\u8BC1\u5238\u7684\u4EF7\u683C\u3002",
  10877. "a": "\u8FD4\u56DE\u5230\u671F\u4ED8\u606F\u7684\u9762\u503C \uFFE5100 \u7684\u6709\u4EF7\u8BC1\u5238\u7684\u4EF7\u683C\u3002",
  10878. "p": [
  10879. {
  10880. "name": "settlement",
  10881. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u7ED3\u7B97\u65E5\u3002 \u6709\u4EF7\u8BC1\u5238\u7ED3\u7B97\u65E5\u662F\u5728\u53D1\u884C\u65E5\u4E4B\u540E\uFF0C\u6709\u4EF7\u8BC1\u5238\u5356\u7ED9\u8D2D\u4E70\u8005\u7684\u65E5\u671F\u3002"
  10882. },
  10883. {
  10884. "name": "maturity",
  10885. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u5230\u671F\u65E5\u3002 \u5230\u671F\u65E5\u662F\u6709\u4EF7\u8BC1\u5238\u6709\u6548\u671F\u622A\u6B62\u65F6\u7684\u65E5\u671F\u3002"
  10886. },
  10887. {
  10888. "name": "issue",
  10889. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u53D1\u884C\u65E5\u3002"
  10890. },
  10891. {
  10892. "name": "rate",
  10893. "detail": "\u6709\u4EF7\u8BC1\u5238\u5728\u53D1\u884C\u65E5\u7684\u5229\u7387\u3002"
  10894. },
  10895. {
  10896. "name": "yld",
  10897. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u5E74\u6536\u76CA\u7387\u3002"
  10898. },
  10899. {
  10900. "name": "basis",
  10901. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u4E3A0] - \u6307\u793A\u8981\u4F7F\u7528\u54EA\u79CD\u5929\u6570\u8BA1\u7B97\u65B9\u6CD5\u3002\n\n0\u8868\u793A\u201C\u7F8E\u56FD(NASD) 30/360\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u6309\u7167\u7F8E\u56FD\u5168\u56FD\u8BC1\u5238\u4EA4\u6613\u5546\u534F\u4F1A\u6807\u51C6\uFF0C\u5047\u8BBE\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\uFF0C\u5E76\u5BF9\u6240\u8F93\u5165\u7684\u6708\u672B\u65E5\u671F\u8FDB\u884C\u5177\u4F53\u8C03\u6574\u3002\n\n1\u8868\u793A\u201C\u5B9E\u9645/\u5B9E\u9645\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u8BA1\u7B97\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u548C\u6240\u6D89\u53CA\u7684\u5E74\u4EFD\u4E2D\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\u3002\u6B64\u65B9\u6CD5\u7528\u4E8E\u7F8E\u56FD\u957F\u671F\u503A\u5238\uFF0C\u4E5F\u662F\u5728\u975E\u8D22\u7ECF\u7528\u9014\u65B9\u9762\u4F7F\u7528\u6700\u591A\u7684\u65B9\u6CD5\u3002\n\n2\u8868\u793A\u201C\u5B9E\u9645/360\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u5047\u5B9A\u6BCF\u5E74\u4E3A360\u5929\u3002\n\n3\u8868\u793A\u201C\u5B9E\u9645/365\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u5047\u5B9A\u6BCF\u5E74\u4E3A365\u5929\u3002\n\n4\u8868\u793A\u201C\u6B27\u6D3230/360\u201D\u65B9\u6CD5 - \u7C7B\u4F3C\u4E8E0\uFF0C\u6B64\u65B9\u6CD5\u57FA\u4E8E\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u6309\u7167\u6B27\u6D32\u91D1\u878D\u60EF\u4F8B\u5BF9\u6708\u672B\u65E5\u671F\u8FDB\u884C\u8C03\u6574\u3002"
  10902. }
  10903. ]
  10904. },
  10905. "RECEIVED": {
  10906. "d": "\u8FD4\u56DE\u4E00\u6B21\u6027\u4ED8\u606F\u7684\u6709\u4EF7\u8BC1\u5238\u5230\u671F\u6536\u56DE\u7684\u91D1\u989D\u3002",
  10907. "a": "\u8FD4\u56DE\u4E00\u6B21\u6027\u4ED8\u606F\u7684\u6709\u4EF7\u8BC1\u5238\u5230\u671F\u6536\u56DE\u7684\u91D1\u989D\u3002",
  10908. "p": [
  10909. {
  10910. "name": "settlement",
  10911. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u7ED3\u7B97\u65E5\u3002 \u6709\u4EF7\u8BC1\u5238\u7ED3\u7B97\u65E5\u662F\u5728\u53D1\u884C\u65E5\u4E4B\u540E\uFF0C\u6709\u4EF7\u8BC1\u5238\u5356\u7ED9\u8D2D\u4E70\u8005\u7684\u65E5\u671F\u3002"
  10912. },
  10913. {
  10914. "name": "maturity",
  10915. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u5230\u671F\u65E5\u3002 \u5230\u671F\u65E5\u662F\u6709\u4EF7\u8BC1\u5238\u6709\u6548\u671F\u622A\u6B62\u65F6\u7684\u65E5\u671F\u3002"
  10916. },
  10917. {
  10918. "name": "investment",
  10919. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u6295\u8D44\u989D\u3002"
  10920. },
  10921. {
  10922. "name": "discount",
  10923. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u8D34\u73B0\u7387\u3002"
  10924. },
  10925. {
  10926. "name": "basis",
  10927. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u4E3A0] - \u6307\u793A\u8981\u4F7F\u7528\u54EA\u79CD\u5929\u6570\u8BA1\u7B97\u65B9\u6CD5\u3002\n\n0\u8868\u793A\u201C\u7F8E\u56FD(NASD) 30/360\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u6309\u7167\u7F8E\u56FD\u5168\u56FD\u8BC1\u5238\u4EA4\u6613\u5546\u534F\u4F1A\u6807\u51C6\uFF0C\u5047\u8BBE\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\uFF0C\u5E76\u5BF9\u6240\u8F93\u5165\u7684\u6708\u672B\u65E5\u671F\u8FDB\u884C\u5177\u4F53\u8C03\u6574\u3002\n\n1\u8868\u793A\u201C\u5B9E\u9645/\u5B9E\u9645\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u8BA1\u7B97\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u548C\u6240\u6D89\u53CA\u7684\u5E74\u4EFD\u4E2D\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\u3002\u6B64\u65B9\u6CD5\u7528\u4E8E\u7F8E\u56FD\u957F\u671F\u503A\u5238\uFF0C\u4E5F\u662F\u5728\u975E\u8D22\u7ECF\u7528\u9014\u65B9\u9762\u4F7F\u7528\u6700\u591A\u7684\u65B9\u6CD5\u3002\n\n2\u8868\u793A\u201C\u5B9E\u9645/360\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u5047\u5B9A\u6BCF\u5E74\u4E3A360\u5929\u3002\n\n3\u8868\u793A\u201C\u5B9E\u9645/365\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u5047\u5B9A\u6BCF\u5E74\u4E3A365\u5929\u3002\n\n4\u8868\u793A\u201C\u6B27\u6D3230/360\u201D\u65B9\u6CD5 - \u7C7B\u4F3C\u4E8E0\uFF0C\u6B64\u65B9\u6CD5\u57FA\u4E8E\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u6309\u7167\u6B27\u6D32\u91D1\u878D\u60EF\u4F8B\u5BF9\u6708\u672B\u65E5\u671F\u8FDB\u884C\u8C03\u6574\u3002"
  10928. }
  10929. ]
  10930. },
  10931. "DISC": {
  10932. "d": "\u8FD4\u56DE\u6709\u4EF7\u8BC1\u5238\u7684\u8D34\u73B0\u7387\u3002",
  10933. "a": "\u8FD4\u56DE\u6709\u4EF7\u8BC1\u5238\u7684\u8D34\u73B0\u7387\u3002",
  10934. "p": [
  10935. {
  10936. "name": "settlement",
  10937. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u7ED3\u7B97\u65E5\u3002 \u6709\u4EF7\u8BC1\u5238\u7ED3\u7B97\u65E5\u662F\u5728\u53D1\u884C\u65E5\u4E4B\u540E\uFF0C\u6709\u4EF7\u8BC1\u5238\u5356\u7ED9\u8D2D\u4E70\u8005\u7684\u65E5\u671F\u3002"
  10938. },
  10939. {
  10940. "name": "maturity",
  10941. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u5230\u671F\u65E5\u3002 \u5230\u671F\u65E5\u662F\u6709\u4EF7\u8BC1\u5238\u6709\u6548\u671F\u622A\u6B62\u65F6\u7684\u65E5\u671F\u3002"
  10942. },
  10943. {
  10944. "name": "pr",
  10945. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u4EF7\u683C\uFF08\u6309\u9762\u503C\u4E3A \uFFE5100 \u8BA1\u7B97\uFF09\u3002"
  10946. },
  10947. {
  10948. "name": "redemption",
  10949. "detail": "\u9762\u503C \uFFE5100 \u7684\u6709\u4EF7\u8BC1\u5238\u7684\u6E05\u507F\u4EF7\u503C\u3002"
  10950. },
  10951. {
  10952. "name": "basis",
  10953. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u4E3A0] - \u6307\u793A\u8981\u4F7F\u7528\u54EA\u79CD\u5929\u6570\u8BA1\u7B97\u65B9\u6CD5\u3002\n\n0\u8868\u793A\u201C\u7F8E\u56FD(NASD) 30/360\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u6309\u7167\u7F8E\u56FD\u5168\u56FD\u8BC1\u5238\u4EA4\u6613\u5546\u534F\u4F1A\u6807\u51C6\uFF0C\u5047\u8BBE\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\uFF0C\u5E76\u5BF9\u6240\u8F93\u5165\u7684\u6708\u672B\u65E5\u671F\u8FDB\u884C\u5177\u4F53\u8C03\u6574\u3002\n\n1\u8868\u793A\u201C\u5B9E\u9645/\u5B9E\u9645\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u8BA1\u7B97\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u548C\u6240\u6D89\u53CA\u7684\u5E74\u4EFD\u4E2D\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\u3002\u6B64\u65B9\u6CD5\u7528\u4E8E\u7F8E\u56FD\u957F\u671F\u503A\u5238\uFF0C\u4E5F\u662F\u5728\u975E\u8D22\u7ECF\u7528\u9014\u65B9\u9762\u4F7F\u7528\u6700\u591A\u7684\u65B9\u6CD5\u3002\n\n2\u8868\u793A\u201C\u5B9E\u9645/360\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u5047\u5B9A\u6BCF\u5E74\u4E3A360\u5929\u3002\n\n3\u8868\u793A\u201C\u5B9E\u9645/365\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u5047\u5B9A\u6BCF\u5E74\u4E3A365\u5929\u3002\n\n4\u8868\u793A\u201C\u6B27\u6D3230/360\u201D\u65B9\u6CD5 - \u7C7B\u4F3C\u4E8E0\uFF0C\u6B64\u65B9\u6CD5\u57FA\u4E8E\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u6309\u7167\u6B27\u6D32\u91D1\u878D\u60EF\u4F8B\u5BF9\u6708\u672B\u65E5\u671F\u8FDB\u884C\u8C03\u6574\u3002"
  10954. }
  10955. ]
  10956. },
  10957. "NPER": {
  10958. "d": "\u57FA\u4E8E\u56FA\u5B9A\u5229\u7387\u53CA\u7B49\u989D\u5206\u671F\u4ED8\u6B3E\u65B9\u5F0F\uFF0C\u8FD4\u56DE\u67D0\u9879\u6295\u8D44\u7684\u603B\u671F\u6570\u3002",
  10959. "a": "\u57FA\u4E8E\u56FA\u5B9A\u5229\u7387\u53CA\u7B49\u989D\u5206\u671F\u4ED8\u6B3E\u65B9\u5F0F\uFF0C\u8FD4\u56DE\u67D0\u9879\u6295\u8D44\u7684\u603B\u671F\u6570\u3002",
  10960. "p": [
  10961. {
  10962. "name": "rate",
  10963. "detail": "\u5404\u671F\u5229\u7387\u3002"
  10964. },
  10965. {
  10966. "name": "pmt",
  10967. "detail": "\u5404\u671F\u6240\u5E94\u652F\u4ED8\u7684\u91D1\u989D\uFF0C\u5728\u6574\u4E2A\u5E74\u91D1\u671F\u95F4\u4FDD\u6301\u4E0D\u53D8\u3002"
  10968. },
  10969. {
  10970. "name": "pv",
  10971. "detail": "\u73B0\u503C\uFF0C\u6216\u4E00\u7CFB\u5217\u672A\u6765\u4ED8\u6B3E\u7684\u5F53\u524D\u503C\u7684\u7D2F\u79EF\u548C\u3002"
  10972. },
  10973. {
  10974. "name": "fv",
  10975. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u503C\u4E3A0] - \u672A\u6765\u503C\uFF0C\u6216\u5728\u6700\u540E\u4E00\u6B21\u4ED8\u6B3E\u540E\u5E0C\u671B\u5F97\u5230\u7684\u73B0\u91D1\u4F59\u989D\u3002"
  10976. },
  10977. {
  10978. "name": "type",
  10979. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u503C\u4E3A0] - \u6307\u5B9A\u5404\u671F\u7684\u4ED8\u6B3E\u65F6\u95F4\u662F\u5728\u671F\u521D\u8FD8\u662F\u671F\u672B\u3002\n\n0 \u8868\u793A\u671F\u672B\uFF1B\n\n1 \u8868\u793A\u671F\u521D\u3002"
  10980. }
  10981. ]
  10982. },
  10983. "SLN": {
  10984. "d": "\u8FD4\u56DE\u4E00\u4E2A\u671F\u95F4\u5185\u7684\u8D44\u4EA7\u7684\u76F4\u7EBF\u6298\u65E7\u3002",
  10985. "a": "\u8FD4\u56DE\u4E00\u4E2A\u671F\u95F4\u5185\u7684\u8D44\u4EA7\u7684\u76F4\u7EBF\u6298\u65E7\u3002",
  10986. "p": [
  10987. {
  10988. "name": "cost",
  10989. "detail": "\u8D44\u4EA7\u539F\u503C\u3002"
  10990. },
  10991. {
  10992. "name": "salvage",
  10993. "detail": "\u6298\u65E7\u672B\u5C3E\u65F6\u7684\u503C\uFF08\u6709\u65F6\u4E5F\u79F0\u4E3A\u8D44\u4EA7\u6B8B\u503C\uFF09\u3002"
  10994. },
  10995. {
  10996. "name": "life",
  10997. "detail": "\u8D44\u4EA7\u7684\u6298\u65E7\u671F\u6570\uFF08\u6709\u65F6\u4E5F\u79F0\u4F5C\u8D44\u4EA7\u7684\u4F7F\u7528\u5BFF\u547D\uFF09\u3002"
  10998. }
  10999. ]
  11000. },
  11001. "DURATION": {
  11002. "d": "\u8FD4\u56DE\u5047\u8BBE\u9762\u503C \uFFE5100 \u7684\u5B9A\u671F\u4ED8\u606F\u6709\u4EF7\u8BC1\u5238\u7684\u4FEE\u6B63\u671F\u9650\u3002",
  11003. "a": "\u8FD4\u56DE\u5047\u8BBE\u9762\u503C \uFFE5100 \u7684\u5B9A\u671F\u4ED8\u606F\u6709\u4EF7\u8BC1\u5238\u7684\u4FEE\u6B63\u671F\u9650\u3002",
  11004. "p": [
  11005. {
  11006. "name": "settlement",
  11007. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u7ED3\u7B97\u65E5\u3002 \u6709\u4EF7\u8BC1\u5238\u7ED3\u7B97\u65E5\u662F\u5728\u53D1\u884C\u65E5\u4E4B\u540E\uFF0C\u6709\u4EF7\u8BC1\u5238\u5356\u7ED9\u8D2D\u4E70\u8005\u7684\u65E5\u671F\u3002"
  11008. },
  11009. {
  11010. "name": "maturity",
  11011. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u5230\u671F\u65E5\u3002 \u5230\u671F\u65E5\u662F\u6709\u4EF7\u8BC1\u5238\u6709\u6548\u671F\u622A\u6B62\u65F6\u7684\u65E5\u671F\u3002"
  11012. },
  11013. {
  11014. "name": "coupon",
  11015. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u5E74\u606F\u7968\u5229\u7387\u3002"
  11016. },
  11017. {
  11018. "name": "yld",
  11019. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u5E74\u6536\u76CA\u7387\u3002"
  11020. },
  11021. {
  11022. "name": "frequency",
  11023. "detail": "\u5E74\u4ED8\u606F\u6B21\u6570\u3002\n\n\u5982\u679C\u6309\u5E74\u652F\u4ED8\uFF0Cfrequency = 1\uFF1B\n\n\u6309\u534A\u5E74\u671F\u652F\u4ED8\uFF0Cfrequency = 2\uFF1B\n\n\u6309\u5B63\u652F\u4ED8\uFF0Cfrequency = 4\u3002"
  11024. },
  11025. {
  11026. "name": "basis",
  11027. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u4E3A0] - \u6307\u793A\u8981\u4F7F\u7528\u54EA\u79CD\u5929\u6570\u8BA1\u7B97\u65B9\u6CD5\u3002\n\n0\u8868\u793A\u201C\u7F8E\u56FD(NASD) 30/360\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u6309\u7167\u7F8E\u56FD\u5168\u56FD\u8BC1\u5238\u4EA4\u6613\u5546\u534F\u4F1A\u6807\u51C6\uFF0C\u5047\u8BBE\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\uFF0C\u5E76\u5BF9\u6240\u8F93\u5165\u7684\u6708\u672B\u65E5\u671F\u8FDB\u884C\u5177\u4F53\u8C03\u6574\u3002\n\n1\u8868\u793A\u201C\u5B9E\u9645/\u5B9E\u9645\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u8BA1\u7B97\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u548C\u6240\u6D89\u53CA\u7684\u5E74\u4EFD\u4E2D\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\u3002\u6B64\u65B9\u6CD5\u7528\u4E8E\u7F8E\u56FD\u957F\u671F\u503A\u5238\uFF0C\u4E5F\u662F\u5728\u975E\u8D22\u7ECF\u7528\u9014\u65B9\u9762\u4F7F\u7528\u6700\u591A\u7684\u65B9\u6CD5\u3002\n\n2\u8868\u793A\u201C\u5B9E\u9645/360\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u5047\u5B9A\u6BCF\u5E74\u4E3A360\u5929\u3002\n\n3\u8868\u793A\u201C\u5B9E\u9645/365\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u5047\u5B9A\u6BCF\u5E74\u4E3A365\u5929\u3002\n\n4\u8868\u793A\u201C\u6B27\u6D3230/360\u201D\u65B9\u6CD5 - \u7C7B\u4F3C\u4E8E0\uFF0C\u6B64\u65B9\u6CD5\u57FA\u4E8E\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u6309\u7167\u6B27\u6D32\u91D1\u878D\u60EF\u4F8B\u5BF9\u6708\u672B\u65E5\u671F\u8FDB\u884C\u8C03\u6574\u3002"
  11028. }
  11029. ]
  11030. },
  11031. "MDURATION": {
  11032. "d": "\u8FD4\u56DE\u5047\u8BBE\u9762\u503C \uFFE5100 \u7684\u6709\u4EF7\u8BC1\u5238\u7684 Macauley \u4FEE\u6B63\u671F\u9650\u3002",
  11033. "a": "\u8FD4\u56DE\u5047\u8BBE\u9762\u503C \uFFE5100 \u7684\u6709\u4EF7\u8BC1\u5238\u7684 Macauley \u4FEE\u6B63\u671F\u9650\u3002",
  11034. "p": [
  11035. {
  11036. "name": "settlement",
  11037. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u7ED3\u7B97\u65E5\u3002 \u6709\u4EF7\u8BC1\u5238\u7ED3\u7B97\u65E5\u662F\u5728\u53D1\u884C\u65E5\u4E4B\u540E\uFF0C\u6709\u4EF7\u8BC1\u5238\u5356\u7ED9\u8D2D\u4E70\u8005\u7684\u65E5\u671F\u3002"
  11038. },
  11039. {
  11040. "name": "maturity",
  11041. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u5230\u671F\u65E5\u3002 \u5230\u671F\u65E5\u662F\u6709\u4EF7\u8BC1\u5238\u6709\u6548\u671F\u622A\u6B62\u65F6\u7684\u65E5\u671F\u3002"
  11042. },
  11043. {
  11044. "name": "coupon",
  11045. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u5E74\u606F\u7968\u5229\u7387\u3002"
  11046. },
  11047. {
  11048. "name": "yld",
  11049. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u5E74\u6536\u76CA\u7387\u3002"
  11050. },
  11051. {
  11052. "name": "frequency",
  11053. "detail": "\u5E74\u4ED8\u606F\u6B21\u6570\u3002\n\n\u5982\u679C\u6309\u5E74\u652F\u4ED8\uFF0Cfrequency = 1\uFF1B\n\n\u6309\u534A\u5E74\u671F\u652F\u4ED8\uFF0Cfrequency = 2\uFF1B\n\n\u6309\u5B63\u652F\u4ED8\uFF0Cfrequency = 4\u3002"
  11054. },
  11055. {
  11056. "name": "basis",
  11057. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u4E3A0] - \u6307\u793A\u8981\u4F7F\u7528\u54EA\u79CD\u5929\u6570\u8BA1\u7B97\u65B9\u6CD5\u3002\n\n0\u8868\u793A\u201C\u7F8E\u56FD(NASD) 30/360\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u6309\u7167\u7F8E\u56FD\u5168\u56FD\u8BC1\u5238\u4EA4\u6613\u5546\u534F\u4F1A\u6807\u51C6\uFF0C\u5047\u8BBE\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\uFF0C\u5E76\u5BF9\u6240\u8F93\u5165\u7684\u6708\u672B\u65E5\u671F\u8FDB\u884C\u5177\u4F53\u8C03\u6574\u3002\n\n1\u8868\u793A\u201C\u5B9E\u9645/\u5B9E\u9645\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u8BA1\u7B97\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u548C\u6240\u6D89\u53CA\u7684\u5E74\u4EFD\u4E2D\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\u3002\u6B64\u65B9\u6CD5\u7528\u4E8E\u7F8E\u56FD\u957F\u671F\u503A\u5238\uFF0C\u4E5F\u662F\u5728\u975E\u8D22\u7ECF\u7528\u9014\u65B9\u9762\u4F7F\u7528\u6700\u591A\u7684\u65B9\u6CD5\u3002\n\n2\u8868\u793A\u201C\u5B9E\u9645/360\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u5047\u5B9A\u6BCF\u5E74\u4E3A360\u5929\u3002\n\n3\u8868\u793A\u201C\u5B9E\u9645/365\u201D\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u4E8E\u6307\u5B9A\u65E5\u671F\u4E4B\u95F4\u7684\u5B9E\u9645\u5929\u6570\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u5047\u5B9A\u6BCF\u5E74\u4E3A365\u5929\u3002\n\n4\u8868\u793A\u201C\u6B27\u6D3230/360\u201D\u65B9\u6CD5 - \u7C7B\u4F3C\u4E8E0\uFF0C\u6B64\u65B9\u6CD5\u57FA\u4E8E\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\u8FDB\u884C\u8BA1\u7B97\uFF0C\u4F46\u6309\u7167\u6B27\u6D32\u91D1\u878D\u60EF\u4F8B\u5BF9\u6708\u672B\u65E5\u671F\u8FDB\u884C\u8C03\u6574\u3002"
  11058. }
  11059. ]
  11060. },
  11061. "BIN2DEC": {
  11062. "d": "\u5C06\u4E8C\u8FDB\u5236\u6570\u8F6C\u6362\u4E3A\u5341\u8FDB\u5236\u6570\u3002",
  11063. "a": "\u5C06\u4E8C\u8FDB\u5236\u6570\u8F6C\u6362\u4E3A\u5341\u8FDB\u5236\u6570\u3002",
  11064. "p": [
  11065. {
  11066. "name": "number",
  11067. "detail": '\u8981\u8F6C\u6362\u4E3A\u5341\u8FDB\u5236\u6570\u7684\u5E26\u7B26\u53F7\u768410\u4F4D\u4E8C\u8FDB\u5236\u6570\u503C\uFF08\u4EE5\u5B57\u7B26\u4E32\u5F62\u5F0F\u63D0\u4F9B\uFF09\u3002\n\n\u5E26\u7B26\u53F7\u7684\u4E8C\u8FDB\u5236\u6570\u7684\u6700\u9AD8\u4F4D\u662F\u7B26\u53F7\u4F4D\uFF1B\u4E5F\u5C31\u662F\u8BF4\uFF0C\u8D1F\u6570\u662F\u4EE5\u4E8C\u7684\u8865\u7801\u5F62\u5F0F\u8868\u793A\u7684\u3002\n\n\u5BF9\u4E8E\u6B64\u51FD\u6570\uFF0C\u6700\u5927\u7684\u6B63\u6570\u8F93\u5165\u503C\u4E3A0111111111\uFF0C\u6700\u5C0F\u7684\u8D1F\u6570\u8F93\u5165\u503C\u4E3A1000000000\u3002\n\n\u5982\u679C\u6240\u63D0\u4F9B\u7684\u5E26\u7B26\u53F7\u7684\u4E8C\u8FDB\u5236\u6570\u662F\u6709\u6548\u7684\u4E8C\u8FDB\u5236\u6570\uFF0C\u4F1A\u81EA\u52A8\u5C06\u5176\u8F6C\u6362\u4E3A\u76F8\u5E94\u7684\u5B57\u7B26\u4E32\u8F93\u5165\u3002\u4F8B\u5982\uFF0CBIN2DEC(100)\u548CBIN2DEC("100")\u5F97\u51FA\u7684\u7ED3\u679C\u76F8\u540C\uFF0C\u5747\u4E3A4\u3002'
  11068. }
  11069. ]
  11070. },
  11071. "BIN2HEX": {
  11072. "d": "\u5C06\u4E8C\u8FDB\u5236\u6570\u8F6C\u6362\u4E3A\u5341\u516D\u8FDB\u5236\u6570\u3002",
  11073. "a": "\u5C06\u4E8C\u8FDB\u5236\u6570\u8F6C\u6362\u4E3A\u5341\u516D\u8FDB\u5236\u6570\u3002",
  11074. "p": [
  11075. {
  11076. "name": "number",
  11077. "detail": '\u8981\u8F6C\u6362\u4E3A\u5E26\u7B26\u53F7\u7684\u5341\u516D\u8FDB\u5236\u6570\u7684\u5E26\u7B26\u53F7\u768410\u4F4D\u4E8C\u8FDB\u5236\u6570\u503C\uFF08\u4EE5\u5B57\u7B26\u4E32\u5F62\u5F0F\u63D0\u4F9B\uFF09\u3002\n\n\u5E26\u7B26\u53F7\u7684\u4E8C\u8FDB\u5236\u6570\u7684\u6700\u9AD8\u4F4D\u662F\u7B26\u53F7\u4F4D\uFF1B\u4E5F\u5C31\u662F\u8BF4\uFF0C\u8D1F\u6570\u662F\u4EE5\u4E8C\u7684\u8865\u7801\u5F62\u5F0F\u8868\u793A\u7684\u3002\n\n\u5BF9\u4E8E\u6B64\u51FD\u6570\uFF0C\u6700\u5927\u7684\u6B63\u6570\u8F93\u5165\u503C\u4E3A0111111111\uFF0C\u6700\u5C0F\u7684\u8D1F\u6570\u8F93\u5165\u503C\u4E3A1000000000\u3002\n\n\u5982\u679C\u6240\u63D0\u4F9B\u7684\u5E26\u7B26\u53F7\u7684\u4E8C\u8FDB\u5236\u6570\u662F\u6709\u6548\u7684\u4E8C\u8FDB\u5236\u6570\uFF0C\u4F1A\u81EA\u52A8\u5C06\u5176\u8F6C\u6362\u4E3A\u76F8\u5E94\u7684\u5B57\u7B26\u4E32\u8F93\u5165\u3002\u4F8B\u5982\uFF0CBIN2HEX(11111)\u548CBIN2HEX("11111")\u5F97\u51FA \u7684\u7ED3\u679C\u76F8\u540C\uFF0C\u5747\u4E3A1F\u3002'
  11078. },
  11079. {
  11080. "name": "places",
  11081. "detail": '[ \u53EF\u9009 ] - \u7ED3\u679C\u4E2D\u8981\u786E\u4FDD\u7684\u6709\u6548\u4F4D\u6570\u3002\n\n\u5982\u679C\u8BBE\u7F6E\u7684\u6709\u6548\u4F4D\u6570\u5927\u4E8E\u7ED3\u679C\u4E2D\u7684\u6709\u6548\u4F4D\u6570\uFF0C\u5219\u5728\u7ED3\u679C\u7684\u5DE6\u4FA7\u586B\u51450\uFF0C\u4F7F\u603B\u6709\u6548\u4F4D\u6570\u8FBE\u5230\u6709\u6548\u4F4D\u6570\u3002\u4F8B\u5982\uFF0CBIN2HEX("11111",8)\u6240\u5F97\u7684\u7ED3\u679C\u503C\u4E3A0000001F\u3002\n\n\u5982\u679C\u5E26\u7B26\u53F7\u7684\u4E8C\u8FDB\u5236\u6570\u7684\u6700\u9AD8\u4F4D\u4E3A1\uFF0C\u5219\u5FFD\u7565\u6B64\u503C\uFF1B\u5373\u5F53\u63D0\u4F9B\u7684\u5E26\u7B26\u53F7\u7684\u4E8C\u8FDB\u5236\u6570\u5927\u4E8E\u7B49\u4E8E1000000000\u65F6\u5FFD\u7565\u6B64\u503C\u3002'
  11082. }
  11083. ]
  11084. },
  11085. "BIN2OCT": {
  11086. "d": "\u5C06\u4E8C\u8FDB\u5236\u6570\u8F6C\u6362\u4E3A\u516B\u8FDB\u5236\u6570\u3002",
  11087. "a": "\u5C06\u4E8C\u8FDB\u5236\u6570\u8F6C\u6362\u4E3A\u516B\u8FDB\u5236\u6570\u3002",
  11088. "p": [
  11089. {
  11090. "name": "number",
  11091. "detail": '\u8981\u8F6C\u6362\u4E3A\u5E26\u7B26\u53F7\u7684\u516B\u8FDB\u5236\u6570\u7684\u5E26\u7B26\u53F7\u768410\u4F4D\u4E8C\u8FDB\u5236\u6570\u503C\uFF08\u4EE5\u5B57\u7B26\u4E32\u5F62\u5F0F\u63D0\u4F9B\uFF09\u3002\n\n\u5E26\u7B26\u53F7\u7684\u4E8C\u8FDB\u5236\u6570\u7684\u6700\u9AD8\u4F4D\u662F\u7B26\u53F7\u4F4D\uFF1B\u4E5F\u5C31\u662F\u8BF4\uFF0C\u8D1F\u6570\u662F\u4EE5\u4E8C\u7684\u8865\u7801\u5F62\u5F0F\u8868\u793A\u7684\u3002\n\n\u5BF9\u4E8E\u6B64\u51FD\u6570\uFF0C\u6700\u5927\u7684\u6B63\u6570\u8F93\u5165\u503C\u4E3A0111111111\uFF0C\u6700\u5C0F\u7684\u8D1F\u6570\u8F93\u5165\u503C\u4E3A1000000000\u3002\n\n\u5982\u679C\u6240\u63D0\u4F9B\u7684\u5E26\u7B26\u53F7\u7684\u4E8C\u8FDB\u5236\u6570\u662F\u6709\u6548\u7684\u4E8C\u8FDB\u5236\u6570\uFF0C\u4F1A\u81EA\u52A8\u5C06\u5176\u8F6C\u6362\u4E3A\u76F8\u5E94\u7684\u5B57\u7B26\u4E32\u8F93\u5165\u3002\u4F8B\u5982\uFF0CBIN2OCT(11111)\u548CBIN2OCT("11111")\u5F97\u51FA\u7684\u7ED3\u679C\u76F8\u540C\uFF0C\u5747\u4E3A37\u3002'
  11092. },
  11093. {
  11094. "name": "places",
  11095. "detail": '[ \u53EF\u9009 ] - \u7ED3\u679C\u4E2D\u8981\u786E\u4FDD\u7684\u6709\u6548\u4F4D\u6570\u3002\n\n\u5982\u679C\u8BBE\u7F6E\u7684\u6709\u6548\u4F4D\u6570\u5927\u4E8E\u7ED3\u679C\u4E2D\u7684\u6709\u6548\u4F4D\u6570\uFF0C\u5219\u5728\u7ED3\u679C\u7684\u5DE6\u4FA7\u586B\u51450\uFF0C\u4F7F\u603B\u6709\u6548\u4F4D\u6570\u8FBE\u5230\u6709\u6548\u4F4D\u6570\u3002\u4F8B\u5982\uFF0CBIN2OCT("11111")\u5F97\u5230\u7684\u7ED3\u679C\u503C\u4E3A00000037\u3002\n\n\u5982\u679C\u5E26\u7B26\u53F7\u7684\u4E8C\u8FDB\u5236\u6570\u7684\u6700\u9AD8\u4F4D\u4E3A1\uFF0C\u5219\u5FFD\u7565\u6B64\u503C\uFF1B\u5373\u5F53\u63D0\u4F9B\u7684\u5E26\u7B26\u53F7\u7684\u4E8C\u8FDB\u5236\u6570\u5927\u4E8E\u7B49\u4E8E1000000000\u65F6\u5FFD\u7565\u6B64\u503C\u3002'
  11096. }
  11097. ]
  11098. },
  11099. "DEC2BIN": {
  11100. "d": "\u5C06\u5341\u8FDB\u5236\u6570\u8F6C\u6362\u4E3A\u4E8C\u8FDB\u5236\u6570\u3002",
  11101. "a": "\u5C06\u5341\u8FDB\u5236\u6570\u8F6C\u6362\u4E3A\u4E8C\u8FDB\u5236\u6570\u3002",
  11102. "p": [
  11103. {
  11104. "name": "number",
  11105. "detail": '\u8981\u8F6C\u6362\u4E3A\u5E26\u7B26\u53F7\u7684\u4E8C\u8FDB\u5236\u6570\u7684\u5341\u8FDB\u5236\u6570\u503C\uFF08\u4EE5\u5B57\u7B26\u4E32\u5F62\u5F0F\u63D0\u4F9B\uFF09\u3002\n\n\u5BF9\u4E8E\u6B64\u51FD\u6570\uFF0C\u6700\u5927\u7684\u6B63\u6570\u8F93\u5165\u503C\u4E3A511\uFF0C\u6700\u5C0F\u7684\u8D1F\u6570\u8F93\u5165\u503C\u4E3A-512\u3002\n\n\u5982\u679C\u6240\u63D0\u4F9B\u7684\u5341\u8FDB\u5236\u6570\u662F\u6709\u6548\u7684\u5341\u8FDB\u5236\u6570\uFF0C\u4F1A\u81EA\u52A8\u5C06\u5176\u8F6C\u6362\u4E3A\u76F8\u5E94\u7684\u5B57\u7B26\u4E32\u8F93\u5165\u3002\u4F8B\u5982\uFF0CDEC2BIN(199)\u548CDEC2BIN("199")\u5F97\u51FA\u7684\u7ED3\u679C\u76F8\u540C\uFF0C\u5747\u4E3A11000111\u3002'
  11106. },
  11107. {
  11108. "name": "places",
  11109. "detail": "[ \u53EF\u9009 ] - \u7ED3\u679C\u4E2D\u8981\u786E\u4FDD\u7684\u6709\u6548\u4F4D\u6570\u3002\n\n\u5982\u679C\u8BBE\u7F6E\u7684\u6709\u6548\u4F4D\u6570\u5927\u4E8E\u7ED3\u679C\u4E2D\u7684\u6709\u6548\u4F4D\u6570\uFF0C\u5219\u5728\u7ED3\u679C\u7684\u5DE6\u4FA7\u586B\u51450\uFF0C\u4F7F\u603B\u6709\u6548\u4F4D\u6570\u8FBE\u5230\u6709\u6548\u4F4D\u6570\u3002\n\n\u5982\u679C\u5341\u8FDB\u5236\u6570\u4E3A\u8D1F\u6570\uFF0C\u5219\u5FFD\u7565\u6B64\u503C\u3002"
  11110. }
  11111. ]
  11112. },
  11113. "DEC2HEX": {
  11114. "d": "\u5C06\u5341\u8FDB\u5236\u6570\u8F6C\u6362\u4E3A\u5341\u516D\u8FDB\u5236\u6570\u3002",
  11115. "a": "\u5C06\u5341\u8FDB\u5236\u6570\u8F6C\u6362\u4E3A\u5341\u516D\u8FDB\u5236\u6570\u3002",
  11116. "p": [
  11117. {
  11118. "name": "number",
  11119. "detail": '\u8981\u8F6C\u6362\u4E3A\u5E26\u7B26\u53F7\u7684\u5341\u516D\u8FDB\u5236\u6570\u7684\u5341\u8FDB\u5236\u6570\u503C\uFF08\u4EE5\u5B57\u7B26\u4E32\u5F62\u5F0F\u63D0\u4F9B\uFF09\u3002\n\n\u6B64\u51FD\u6570\u53EF\u63A5\u53D7\u7684\u6700\u5927\u6B63\u6570\u503C\u4E3A549755813887\uFF0C\u6700\u5C0F\u8D1F\u6570\u503C\u4E3A-549755814888\u3002\n\n\u5982\u679C\u6240\u63D0\u4F9B\u7684\u5341\u8FDB\u5236\u6570\u662F\u6709\u6548\u7684\u5341\u8FDB\u5236\u6570\uFF0C\u4F1A\u81EA\u52A8\u5C06\u5176\u8F6C\u6362\u4E3A\u76F8\u5E94\u7684\u5B57\u7B26\u4E32\u8F93\u5165\u3002\u4F8B\u5982\uFF0CDEC2HEX(100)\u548CDEC2HEX("100")\u5F97\u51FA\u7684\u7ED3\u679C\u76F8\u540C\uFF0C\u5747\u4E3A64\u3002'
  11120. },
  11121. {
  11122. "name": "places",
  11123. "detail": "[ \u53EF\u9009 ] - \u7ED3\u679C\u4E2D\u8981\u786E\u4FDD\u7684\u6709\u6548\u4F4D\u6570\u3002\n\n\u5982\u679C\u8BBE\u7F6E\u7684\u6709\u6548\u4F4D\u6570\u5927\u4E8E\u7ED3\u679C\u4E2D\u7684\u6709\u6548\u4F4D\u6570\uFF0C\u5219\u5728\u7ED3\u679C\u7684\u5DE6\u4FA7\u586B\u51450\uFF0C\u4F7F\u603B\u6709\u6548\u4F4D\u6570\u8FBE\u5230\u6709\u6548\u4F4D\u6570\u3002\n\n\u5982\u679C\u5341\u8FDB\u5236\u6570\u4E3A\u8D1F\u6570\uFF0C\u5219\u5FFD\u7565\u6B64\u503C\u3002"
  11124. }
  11125. ]
  11126. },
  11127. "DEC2OCT": {
  11128. "d": "\u5C06\u5341\u8FDB\u5236\u6570\u8F6C\u6362\u4E3A\u516B\u8FDB\u5236\u6570\u3002",
  11129. "a": "\u5C06\u5341\u8FDB\u5236\u6570\u8F6C\u6362\u4E3A\u516B\u8FDB\u5236\u6570\u3002",
  11130. "p": [
  11131. {
  11132. "name": "number",
  11133. "detail": '\u8981\u8F6C\u6362\u4E3A\u5E26\u7B26\u53F7\u7684\u516B\u8FDB\u5236\u6570\u7684\u5341\u8FDB\u5236\u6570\u503C\uFF08\u4EE5\u5B57\u7B26\u4E32\u5F62\u5F0F\u63D0\u4F9B\uFF09\u3002\n\n\u6B64\u51FD\u6570\u53EF\u63A5\u53D7\u7684\u6700\u5927\u6B63\u6570\u503C\u4E3A536870911\uFF0C\u6700\u5C0F\u8D1F\u6570\u503C\u4E3A-53687092\u3002\n\n\u5982\u679C\u6240\u63D0\u4F9B\u7684\u5341\u8FDB\u5236\u6570\u662F\u6709\u6548\u7684\u5341\u8FDB\u5236\u6570\uFF0C\u4F1A\u81EA\u52A8\u5C06\u5176\u8F6C\u6362\u4E3A\u76F8\u5E94\u7684\u5B57\u7B26\u4E32\u8F93\u5165\u3002\u4F8B\u5982\uFF0CDEC2OCT(199)\u548CDEC2OCT("199")\u5F97\u51FA\u7684\u7ED3\u679C\u76F8\u540C\uFF0C\u5747\u4E3A307\u3002'
  11134. },
  11135. {
  11136. "name": "places",
  11137. "detail": "[ \u53EF\u9009 ] - \u7ED3\u679C\u4E2D\u8981\u786E\u4FDD\u7684\u6709\u6548\u4F4D\u6570\u3002\n\n\u5982\u679C\u8BBE\u7F6E\u7684\u6709\u6548\u4F4D\u6570\u5927\u4E8E\u7ED3\u679C\u4E2D\u7684\u6709\u6548\u4F4D\u6570\uFF0C\u5219\u5728\u7ED3\u679C\u7684\u5DE6\u4FA7\u586B\u51450\uFF0C\u4F7F\u603B\u6709\u6548\u4F4D\u6570\u8FBE\u5230\u6709\u6548\u4F4D\u6570\u3002\n\n\u5982\u679C\u5341\u8FDB\u5236\u6570\u4E3A\u8D1F\u6570\uFF0C\u5219\u5FFD\u7565\u6B64\u503C\u3002"
  11138. }
  11139. ]
  11140. },
  11141. "HEX2BIN": {
  11142. "d": "\u5C06\u5341\u516D\u8FDB\u5236\u6570\u8F6C\u6362\u4E3A\u4E8C\u8FDB\u5236\u6570\u3002",
  11143. "a": "\u5C06\u5341\u516D\u8FDB\u5236\u6570\u8F6C\u6362\u4E3A\u4E8C\u8FDB\u5236\u6570\u3002",
  11144. "p": [
  11145. {
  11146. "name": "number",
  11147. "detail": '\u8981\u8F6C\u6362\u4E3A\u5E26\u7B26\u53F7\u7684\u4E8C\u8FDB\u5236\u6570\u7684\u5E26\u7B26\u53F7\u768440\u4F4D\u5341\u516D\u8FDB\u5236\u6570\u503C\uFF08\u4EE5\u5B57\u7B26\u4E32\u5F62\u5F0F\u63D0\u4F9B\uFF09\u3002\n\n\u5E26\u7B26\u53F7\u7684\u5341\u516D\u8FDB\u5236\u6570\u7684\u6700\u9AD8\u4F4D\u662F\u7B26\u53F7\u4F4D\uFF1B\u4E5F\u5C31\u662F\u8BF4\uFF0C\u8D1F\u6570\u662F\u4EE5\u4E8C\u7684\u8865\u7801\u5F62\u5F0F\u8868\u793A\u7684\u3002\n\n\u6B64\u51FD\u6570\u53EF\u63A5\u53D7\u7684\u6700\u5927\u6B63\u6570\u503C\u4E3A1FF\uFF0C\u6700\u5C0F\u8D1F\u6570\u503C\u4E3AFFFFFFFE00\u3002\n\n\u5982\u679C\u6240\u63D0\u4F9B\u7684\u5E26\u7B26\u53F7\u7684\u5341\u516D\u8FDB\u5236\u6570\u662F\u6709\u6548\u7684\u5341\u516D\u8FDB\u5236\u6570\uFF0C\u51FD\u6570\u4F1A\u81EA\u52A8\u5C06\u5176\u8F6C\u6362\u4E3A\u76F8\u5E94\u7684\u5B57\u7B26\u4E32\u8F93\u5165\u3002\u4F8B\u5982\uFF0CHEX2BIN(199)\u548CHEX2BIN("199")\u5F97\u51FA\u7684\u7ED3\u679C\u76F8\u540C\uFF0C\u5747\u4E3A110011001\u3002'
  11148. },
  11149. {
  11150. "name": "places",
  11151. "detail": "[ \u53EF\u9009 ] - \u7ED3\u679C\u4E2D\u8981\u786E\u4FDD\u7684\u6709\u6548\u4F4D\u6570\u3002\n\n\u5982\u679C\u8BBE\u7F6E\u7684\u6709\u6548\u4F4D\u6570\u5927\u4E8E\u7ED3\u679C\u4E2D\u7684\u6709\u6548\u4F4D\u6570\uFF0C\u5219\u5728\u7ED3\u679C\u7684\u5DE6\u4FA7\u586B\u51450\uFF0C\u4F7F\u603B\u6709\u6548\u4F4D\u6570\u8FBE\u5230\u6709\u6548\u4F4D\u6570\u3002\n\n\u5982\u679C\u5E26\u7B26\u53F7\u7684\u5341\u516D\u8FDB\u5236\u6570\u7684\u6700\u9AD8\u4F4D\u4E3A1\uFF0C\u5219\u5FFD\u7565\u6B64\u503C\uFF1B\u5373\u5F53\u63D0\u4F9B\u7684\u5E26\u7B26\u53F7\u7684\u5341\u516D\u8FDB\u5236\u6570\u5927\u4E8E\u7B49\u4E8E8000000000\u65F6\u5FFD\u7565\u6B64\u503C\u3002"
  11152. }
  11153. ]
  11154. },
  11155. "HEX2DEC": {
  11156. "d": "\u5C06\u5341\u516D\u8FDB\u5236\u6570\u8F6C\u6362\u4E3A\u5341\u8FDB\u5236\u6570\u3002",
  11157. "a": "\u5C06\u5341\u516D\u8FDB\u5236\u6570\u8F6C\u6362\u4E3A\u5341\u8FDB\u5236\u6570\u3002",
  11158. "p": [
  11159. {
  11160. "name": "number",
  11161. "detail": '\u8981\u8F6C\u6362\u4E3A\u5341\u8FDB\u5236\u6570\u7684\u5E26\u7B26\u53F7\u768440\u4F4D\u5341\u516D\u8FDB\u5236\u6570\u503C\uFF08\u4EE5\u5B57\u7B26\u4E32\u5F62\u5F0F\u63D0\u4F9B\uFF09\u3002\n\n\u5E26\u7B26\u53F7\u7684\u5341\u516D\u8FDB\u5236\u6570\u7684\u6700\u9AD8\u4F4D\u662F\u7B26\u53F7\u4F4D\uFF1B\u4E5F\u5C31\u662F\u8BF4\uFF0C\u8D1F\u6570\u662F\u4EE5\u4E8C\u7684\u8865\u7801\u5F62\u5F0F\u8868\u793A\u7684\u3002\n\n\u6B64\u51FD\u6570\u53EF\u63A5\u53D7\u7684\u6700\u5927\u6B63\u6570\u503C\u4E3A7fffffffff\uFF0C\u6700\u5C0F\u8D1F\u6570\u503C\u4E3A8000000000\u3002\n\n\u5982\u679C\u6240\u63D0\u4F9B\u7684\u5E26\u7B26\u53F7\u7684\u5341\u516D\u8FDB\u5236\u6570\u662F\u6709\u6548\u7684\u5341\u516D\u8FDB\u5236\u6570\uFF0C\u51FD\u6570\u4F1A\u81EA\u52A8\u5C06\u5176\u8F6C\u6362\u4E3A\u76F8\u5E94\u7684\u5B57\u7B26\u4E32\u8F93\u5165\u3002\u4F8B\u5982\uFF0CHEX2DEC(199)\u548CHEX2DEC("199")\u5F97\u51FA\u7684\u7ED3\u679C\u76F8\u540C\uFF0C\u5747\u4E3A409\u3002'
  11162. }
  11163. ]
  11164. },
  11165. "HEX2OCT": {
  11166. "d": "\u5C06\u5341\u516D\u8FDB\u5236\u6570\u8F6C\u6362\u4E3A\u516B\u8FDB\u5236\u6570\u3002",
  11167. "a": "\u5C06\u5341\u516D\u8FDB\u5236\u6570\u8F6C\u6362\u4E3A\u516B\u8FDB\u5236\u6570\u3002",
  11168. "p": [
  11169. {
  11170. "name": "number",
  11171. "detail": '\u8981\u8F6C\u6362\u4E3A\u5E26\u7B26\u53F7\u7684\u516B\u8FDB\u5236\u6570\u7684\u5E26\u7B26\u53F7\u768440\u4F4D\u5341\u516D\u8FDB\u5236\u6570\u503C\uFF08\u4EE5\u5B57\u7B26\u4E32\u5F62\u5F0F\u63D0\u4F9B\uFF09\u3002\n\n\u5E26\u7B26\u53F7\u7684\u5341\u516D\u8FDB\u5236\u6570\u7684\u6700\u9AD8\u4F4D\u662F\u7B26\u53F7\u4F4D\uFF1B\u4E5F\u5C31\u662F\u8BF4\uFF0C\u8D1F\u6570\u662F\u4EE5\u4E8C\u7684\u8865\u7801\u5F62\u5F0F\u8868\u793A\u7684\u3002\n\n\u6B64\u51FD\u6570\u53EF\u63A5\u53D7\u7684\u6700\u5927\u6B63\u6570\u503C\u4E3A1FFFFFFF\uFF0C\u6700\u5C0F\u8D1F\u6570\u503C\u4E3AFFE0000000\u3002\n\n\u5982\u679C\u6240\u63D0\u4F9B\u7684\u5E26\u7B26\u53F7\u7684\u5341\u516D\u8FDB\u5236\u6570\u662F\u6709\u6548\u7684\u5341\u516D\u8FDB\u5236\u6570\uFF0C\u51FD\u6570\u4F1A\u81EA\u52A8\u5C06\u5176\u8F6C\u6362\u4E3A\u76F8\u5E94\u7684\u5B57\u7B26\u4E32\u8F93\u5165\u3002\u4F8B\u5982\uFF0CHEX2OCT(199)\u548CHEX2OCT("199")\u5F97\u51FA\u7684\u7ED3\u679C\u76F8\u540C\uFF0C\u5747\u4E3A631\u3002'
  11172. },
  11173. {
  11174. "name": "places",
  11175. "detail": "[ \u53EF\u9009 ] - \u7ED3\u679C\u4E2D\u8981\u786E\u4FDD\u7684\u6709\u6548\u4F4D\u6570\u3002\n\n\u5982\u679C\u8BBE\u7F6E\u7684\u6709\u6548\u4F4D\u6570\u5927\u4E8E\u7ED3\u679C\u4E2D\u7684\u6709\u6548\u4F4D\u6570\uFF0C\u5219\u5728\u7ED3\u679C\u7684\u5DE6\u4FA7\u586B\u51450\uFF0C\u4F7F\u603B\u6709\u6548\u4F4D\u6570\u8FBE\u5230\u6709\u6548\u4F4D\u6570\u3002\n\n\u5982\u679C\u5E26\u7B26\u53F7\u7684\u5341\u516D\u8FDB\u5236\u6570\u7684\u6700\u9AD8\u4F4D\u4E3A1\uFF0C\u5219\u5FFD\u7565\u6B64\u503C\uFF1B\u5373\u5F53\u7ED9\u5B9A\u7684\u5E26\u7B26\u53F7\u7684\u5341\u516D\u8FDB\u5236\u6570\u5927\u4E8E\u7B49\u4E8E8000000000\u65F6\u5FFD\u7565\u6B64\u503C\u3002"
  11176. }
  11177. ]
  11178. },
  11179. "OCT2BIN": {
  11180. "d": "\u5C06\u516B\u8FDB\u5236\u6570\u8F6C\u6362\u4E3A\u4E8C\u8FDB\u5236\u6570\u3002",
  11181. "a": "\u5C06\u516B\u8FDB\u5236\u6570\u8F6C\u6362\u4E3A\u4E8C\u8FDB\u5236\u6570\u3002",
  11182. "p": [
  11183. {
  11184. "name": "number",
  11185. "detail": '\u8981\u8F6C\u6362\u4E3A\u5E26\u7B26\u53F7\u7684\u4E8C\u8FDB\u5236\u6570\u7684\u5E26\u7B26\u53F7\u768430\u4F4D\u516B\u8FDB\u5236\u6570\u503C\uFF08\u4EE5\u5B57\u7B26\u4E32\u5F62\u5F0F\u63D0\u4F9B\uFF09\u3002\n\n\u5E26\u7B26\u53F7\u7684\u516B\u8FDB\u5236\u6570\u7684\u6700\u9AD8\u4F4D\u662F\u7B26\u53F7\u4F4D\uFF1B\u4E5F\u5C31\u662F\u8BF4\uFF0C\u8D1F\u6570\u662F\u4EE5\u4E8C\u7684\u8865\u7801\u5F62\u5F0F\u8868\u793A\u7684\u3002\n\n\u6B64\u51FD\u6570\u53EF\u63A5\u53D7\u7684\u6700\u5927\u6B63\u6570\u503C\u4E3A777\uFF0C\u6700\u5C0F\u8D1F\u6570\u503C\u4E3A7777777000\u3002\n\n\u5982\u679C\u6240\u63D0\u4F9B\u7684\u5E26\u7B26\u53F7\u7684\u516B\u8FDB\u5236\u6570\u662F\u6709\u6548\u7684\u516B\u8FDB\u5236\u6570\uFF0C\u51FD\u6570\u4F1A\u81EA\u52A8\u5C06\u5176\u8F6C\u6362\u4E3A\u76F8\u5E94\u7684\u5B57\u7B26\u4E32\u8F93\u5165\u3002\u4F8B\u5982\uFF0COCT2BIN(177)\u548COCT2BIN("177")\u5F97\u51FA\u7684\u7ED3\u679C\u76F8\u540C\uFF0C\u5747\u4E3A1111111\u3002'
  11186. },
  11187. {
  11188. "name": "places",
  11189. "detail": "[ \u53EF\u9009 ] - \u7ED3\u679C\u4E2D\u8981\u786E\u4FDD\u7684\u6709\u6548\u4F4D\u6570\u3002\n\n\u5982\u679C\u8BBE\u7F6E\u7684\u6709\u6548\u4F4D\u6570\u5927\u4E8E\u7ED3\u679C\u4E2D\u7684\u6709\u6548\u4F4D\u6570\uFF0C\u5219\u5728\u7ED3\u679C\u7684\u5DE6\u4FA7\u586B\u51450\uFF0C\u4F7F\u603B\u6709\u6548\u4F4D\u6570\u8FBE\u5230\u6709\u6548\u4F4D\u6570\u3002\n\n\u5982\u679C\u5E26\u7B26\u53F7\u7684\u516B\u8FDB\u5236\u6570\u7684\u6700\u9AD8\u4F4D\u4E3A1\uFF0C\u5219\u5FFD\u7565\u6B64\u503C\uFF1B\u5373\u5F53\u7ED9\u5B9A\u7684\u5E26\u7B26\u53F7\u7684\u516B\u8FDB\u5236\u6570\u5927\u4E8E\u7B49\u4E8E4000000000\u65F6\u5FFD\u7565\u6B64\u503C\u3002"
  11190. }
  11191. ]
  11192. },
  11193. "OCT2DEC": {
  11194. "d": "\u5C06\u516B\u8FDB\u5236\u6570\u8F6C\u6362\u4E3A\u5341\u8FDB\u5236\u6570\u3002",
  11195. "a": "\u5C06\u516B\u8FDB\u5236\u6570\u8F6C\u6362\u4E3A\u5341\u8FDB\u5236\u6570\u3002",
  11196. "p": [
  11197. {
  11198. "name": "number",
  11199. "detail": '\u8981\u8F6C\u6362\u4E3A\u5341\u8FDB\u5236\u6570\u7684\u5E26\u7B26\u53F7\u768430\u4F4D\u516B\u8FDB\u5236\u6570\u503C\uFF08\u4EE5\u5B57\u7B26\u4E32\u5F62\u5F0F\u63D0\u4F9B\uFF09\u3002\n\n\u5E26\u7B26\u53F7\u7684ba\u8FDB\u5236\u6570\u7684\u6700\u9AD8\u4F4D\u662F\u7B26\u53F7\u4F4D\uFF1B\u4E5F\u5C31\u662F\u8BF4\uFF0C\u8D1F\u6570\u662F\u4EE5\u4E8C\u7684\u8865\u7801\u5F62\u5F0F\u8868\u793A\u7684\u3002\n\n\u6B64\u51FD\u6570\u53EF\u63A5\u53D7\u7684\u6700\u5927\u6B63\u6570\u503C\u4E3A3777777777\uFF0C\u6700\u5C0F\u8D1F\u6570\u503C\u4E3A4000000000\u3002\n\n\u5982\u679C\u6240\u63D0\u4F9B\u7684\u5E26\u7B26\u53F7\u7684\u516B\u8FDB\u5236\u6570\u662F\u6709\u6548\u7684\u516B\u8FDB\u5236\u6570\uFF0C\u51FD\u6570\u4F1A\u81EA\u52A8\u5C06\u5176\u8F6C\u6362\u4E3A\u76F8\u5E94\u7684\u5B57\u7B26\u4E32\u8F93\u5165\u3002\u4F8B\u5982\uFF0COCT2DEC(177)\u548COCT2DEC("177")\u5F97\u51FA\u7684\u7ED3\u679C\u76F8\u540C\uFF0C\u5747\u4E3A127\u3002'
  11200. }
  11201. ]
  11202. },
  11203. "OCT2HEX": {
  11204. "d": "\u5C06\u516B\u8FDB\u5236\u6570\u8F6C\u6362\u4E3A\u5341\u516D\u8FDB\u5236\u6570\u3002",
  11205. "a": "\u5C06\u516B\u8FDB\u5236\u6570\u8F6C\u6362\u4E3A\u5341\u516D\u8FDB\u5236\u6570\u3002",
  11206. "p": [
  11207. {
  11208. "name": "number",
  11209. "detail": '\u8981\u8F6C\u6362\u4E3A\u5E26\u7B26\u53F7\u7684\u5341\u516D\u8FDB\u5236\u6570\u7684\u5E26\u7B26\u53F7\u768430\u4F4D\u516B\u8FDB\u5236\u6570\u503C\uFF08\u4EE5\u5B57\u7B26\u4E32\u5F62\u5F0F\u63D0\u4F9B\uFF09\u3002\n\n\u5E26\u7B26\u53F7\u7684ba\u8FDB\u5236\u6570\u7684\u6700\u9AD8\u4F4D\u662F\u7B26\u53F7\u4F4D\uFF1B\u4E5F\u5C31\u662F\u8BF4\uFF0C\u8D1F\u6570\u662F\u4EE5\u4E8C\u7684\u8865\u7801\u5F62\u5F0F\u8868\u793A\u7684\u3002\n\n\u6B64\u51FD\u6570\u53EF\u63A5\u53D7\u7684\u6700\u5927\u6B63\u6570\u503C\u4E3A3777777777\uFF0C\u6700\u5C0F\u8D1F\u6570\u503C\u4E3A4000000000\u3002\n\n\u5982\u679C\u6240\u63D0\u4F9B\u7684\u5E26\u7B26\u53F7\u7684\u516B\u8FDB\u5236\u6570\u662F\u6709\u6548\u7684\u516B\u8FDB\u5236\u6570\uFF0C\u51FD\u6570\u4F1A\u81EA\u52A8\u5C06\u5176\u8F6C\u6362\u4E3A\u76F8\u5E94\u7684\u5B57\u7B26\u4E32\u8F93\u5165\u3002\u4F8B\u5982\uFF0COCT2HEX(177)\u548COCT2HEX("177")\u5F97\u51FA\u7684\u7ED3\u679C\u76F8\u540C\uFF0C\u5747\u4E3A7F\u3002'
  11210. },
  11211. {
  11212. "name": "places",
  11213. "detail": "[ \u53EF\u9009 ] - \u7ED3\u679C\u4E2D\u8981\u786E\u4FDD\u7684\u6709\u6548\u4F4D\u6570\u3002\n\n\u5982\u679C\u8BBE\u7F6E\u7684\u6709\u6548\u4F4D\u6570\u5927\u4E8E\u7ED3\u679C\u4E2D\u7684\u6709\u6548\u4F4D\u6570\uFF0C\u5219\u5728\u7ED3\u679C\u7684\u5DE6\u4FA7\u586B\u51450\uFF0C\u4F7F\u603B\u6709\u6548\u4F4D\u6570\u8FBE\u5230\u6709\u6548\u4F4D\u6570\u3002\n\n\u5982\u679C\u5E26\u7B26\u53F7\u7684\u516B\u8FDB\u5236\u6570\u7684\u6700\u9AD8\u4F4D\u4E3A1\uFF0C\u5219\u5FFD\u7565\u6B64\u503C\uFF1B\u5373\u5F53\u7ED9\u5B9A\u7684\u5E26\u7B26\u53F7\u7684\u516B\u8FDB\u5236\u6570\u5927\u4E8E\u7B49\u4E8E4000000000\u65F6\u5FFD\u7565\u6B64\u503C\u3002"
  11214. }
  11215. ]
  11216. },
  11217. "COMPLEX": {
  11218. "d": "\u5C06\u5B9E\u7CFB\u6570\u53CA\u865A\u7CFB\u6570\u8F6C\u6362\u4E3A x+yi \u6216 x+yj \u5F62\u5F0F\u7684\u590D\u6570\u3002",
  11219. "a": "\u5C06\u5B9E\u7CFB\u6570\u53CA\u865A\u7CFB\u6570\u8F6C\u6362\u4E3A x+yi \u6216 x+yj \u5F62\u5F0F\u7684\u590D\u6570\u3002",
  11220. "p": [
  11221. {
  11222. "name": "real_num",
  11223. "detail": "\u590D\u6570\u7684\u5B9E\u7CFB\u6570\u3002"
  11224. },
  11225. {
  11226. "name": "i_num",
  11227. "detail": "\u590D\u6570\u7684\u865A\u7CFB\u6570\u3002"
  11228. },
  11229. {
  11230. "name": "suffix",
  11231. "detail": '[\u53EF\u9009 - \u9ED8\u8BA4\u4E3A "i"] - \u590D\u6570\u4E2D\u865A\u7CFB\u6570\u7684\u540E\u7F00\u3002'
  11232. }
  11233. ]
  11234. },
  11235. "IMREAL": {
  11236. "d": "\u8FD4\u56DE\u4EE5 x+yi \u6216 x+yj \u6587\u672C\u683C\u5F0F\u8868\u793A\u7684\u590D\u6570\u7684\u5B9E\u7CFB\u6570\u3002",
  11237. "a": "\u8FD4\u56DE\u4EE5 x+yi \u6216 x+yj \u6587\u672C\u683C\u5F0F\u8868\u793A\u7684\u590D\u6570\u7684\u5B9E\u7CFB\u6570\u3002",
  11238. "p": [
  11239. {
  11240. "name": "inumber",
  11241. "detail": "\u9700\u8981\u8BA1\u7B97\u5176\u5B9E\u7CFB\u6570\u7684\u590D\u6570\u3002"
  11242. }
  11243. ]
  11244. },
  11245. "IMAGINARY": {
  11246. "d": "\u8FD4\u56DE\u4EE5 x+yi \u6216 x+yj \u6587\u672C\u683C\u5F0F\u8868\u793A\u7684\u590D\u6570\u7684\u865A\u7CFB\u6570\u3002",
  11247. "a": "\u8FD4\u56DE\u4EE5 x+yi \u6216 x+yj \u6587\u672C\u683C\u5F0F\u8868\u793A\u7684\u590D\u6570\u7684\u865A\u7CFB\u6570\u3002",
  11248. "p": [
  11249. {
  11250. "name": "inumber",
  11251. "detail": "\u9700\u8981\u8BA1\u7B97\u5176\u865A\u7CFB\u6570\u7684\u590D\u6570\u3002"
  11252. }
  11253. ]
  11254. },
  11255. "IMCONJUGATE": {
  11256. "d": "\u8FD4\u56DE\u4EE5 x+yi \u6216 x+yj \u6587\u672C\u683C\u5F0F\u8868\u793A\u7684\u590D\u6570\u7684\u5171\u8F6D\u590D\u6570\u3002",
  11257. "a": "\u8FD4\u56DE\u4EE5 x+yi \u6216 x+yj \u6587\u672C\u683C\u5F0F\u8868\u793A\u7684\u590D\u6570\u7684\u5171\u8F6D\u590D\u6570\u3002",
  11258. "p": [
  11259. {
  11260. "name": "inumber",
  11261. "detail": "\u9700\u8981\u8BA1\u7B97\u5176\u5171\u8F6D\u6570\u7684\u590D\u6570\u3002"
  11262. }
  11263. ]
  11264. },
  11265. "IMABS": {
  11266. "d": "\u8FD4\u56DE\u4EE5 x+yi \u6216 x+yj \u6587\u672C\u683C\u5F0F\u8868\u793A\u7684\u590D\u6570\u7684\u7EDD\u5BF9\u503C\uFF08\u6A21\uFF09\u3002",
  11267. "a": "\u8FD4\u56DE\u4EE5 x+yi \u6216 x+yj \u6587\u672C\u683C\u5F0F\u8868\u793A\u7684\u590D\u6570\u7684\u7EDD\u5BF9\u503C\uFF08\u6A21\uFF09\u3002",
  11268. "p": [
  11269. {
  11270. "name": "inumber",
  11271. "detail": "\u8981\u8BA1\u7B97\u5176\u7EDD\u5BF9\u503C\u7684\u590D\u6570\u3002"
  11272. }
  11273. ]
  11274. },
  11275. "DELTA": {
  11276. "d": "\u68C0\u9A8C\u4E24\u4E2A\u503C\u662F\u5426\u76F8\u7B49\u3002 \u5982\u679C number1=number2\uFF0C\u5219\u8FD4\u56DE 1\uFF1B\u5426\u5219\u8FD4\u56DE 0\u3002",
  11277. "a": "\u68C0\u9A8C\u4E24\u4E2A\u503C\u662F\u5426\u76F8\u7B49\u3002 \u5982\u679C number1=number2\uFF0C\u5219\u8FD4\u56DE 1\uFF1B\u5426\u5219\u8FD4\u56DE 0\u3002",
  11278. "p": [
  11279. {
  11280. "name": "number1",
  11281. "detail": "\u7B2C\u4E00\u4E2A\u6570\u5B57\u3002"
  11282. },
  11283. {
  11284. "name": "number2",
  11285. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u4E3A 0] - \u7B2C\u4E8C\u4E2A\u6570\u5B57\u3002"
  11286. }
  11287. ]
  11288. },
  11289. "IMSUM": {
  11290. "d": "\u8FD4\u56DE\u4EE5 x+yi \u6216 x+yj \u6587\u672C\u683C\u5F0F\u8868\u793A\u7684 1 \u81F3 255 \u4E2A\u590D\u6570\u7684\u548C\u3002",
  11291. "a": "\u8FD4\u56DE\u4EE5 x+yi \u6216 x+yj \u6587\u672C\u683C\u5F0F\u8868\u793A\u7684 1 \u81F3 255 \u4E2A\u590D\u6570\u7684\u548C\u3002",
  11292. "p": [
  11293. {
  11294. "name": "inumber1",
  11295. "detail": "\u8981\u76F8\u52A0\u7684\u7B2C\u4E00\u4E2A\u590D\u6570"
  11296. },
  11297. {
  11298. "name": "inumber2, \u2026",
  11299. "detail": "[\u53EF\u9009] - \u8981\u4E0E\u503C1 \u76F8\u52A0\u7684\u5176\u4ED6\u590D\u6570"
  11300. }
  11301. ]
  11302. },
  11303. "IMSUB": {
  11304. "d": "\u8FD4\u56DE\u4EE5 x+yi \u6216 x+yj \u6587\u672C\u683C\u5F0F\u8868\u793A\u7684\u4E24\u4E2A\u590D\u6570\u7684\u5DEE\u3002",
  11305. "a": "\u8FD4\u56DE\u4EE5 x+yi \u6216 x+yj \u6587\u672C\u683C\u5F0F\u8868\u793A\u7684\u4E24\u4E2A\u590D\u6570\u7684\u5DEE\u3002",
  11306. "p": [
  11307. {
  11308. "name": "inumber1",
  11309. "detail": "\u4ECE\uFF08\u590D\uFF09\u6570\u4E2D\u51CF\u53BB inumber2\u3002"
  11310. },
  11311. {
  11312. "name": "inumber2",
  11313. "detail": "\u4ECE inumber1 \u4E2D\u51CF\uFF08\u590D\uFF09\u6570\u3002"
  11314. }
  11315. ]
  11316. },
  11317. "IMPRODUCT": {
  11318. "d": "\u8FD4\u56DE\u4EE5 x+yi \u6216 x+yj \u6587\u672C\u683C\u5F0F\u8868\u793A\u7684 1 \u81F3 255 \u4E2A\u590D\u6570\u7684\u4E58\u79EF\u3002",
  11319. "a": "\u8FD4\u56DE\u4EE5 x+yi \u6216 x+yj \u6587\u672C\u683C\u5F0F\u8868\u793A\u7684 1 \u81F3 255 \u4E2A\u590D\u6570\u7684\u4E58\u79EF\u3002",
  11320. "p": [
  11321. {
  11322. "name": "inumber1",
  11323. "detail": "\u7528\u4E8E\u8BA1\u7B97\u4E58\u79EF\u7684\u7B2C\u4E00\u4E2A\u590D\u6570"
  11324. },
  11325. {
  11326. "name": "inumber2, \u2026",
  11327. "detail": "[\u53EF\u9009] - \u8981\u76F8\u4E58\u7684\u5176\u4ED6\u590D\u6570\u3002"
  11328. }
  11329. ]
  11330. },
  11331. "IMDIV": {
  11332. "d": "\u8FD4\u56DE\u4EE5 x+yi \u6216 x+yj \u6587\u672C\u683C\u5F0F\u8868\u793A\u7684\u4E24\u4E2A\u590D\u6570\u7684\u5546\u3002",
  11333. "a": "\u8FD4\u56DE\u4EE5 x+yi \u6216 x+yj \u6587\u672C\u683C\u5F0F\u8868\u793A\u7684\u4E24\u4E2A\u590D\u6570\u7684\u5546\u3002",
  11334. "p": [
  11335. {
  11336. "name": "inumber1",
  11337. "detail": "\u590D\u6570\u5206\u5B50\u6216\u88AB\u9664\u6570\u3002"
  11338. },
  11339. {
  11340. "name": "inumber2",
  11341. "detail": "\u590D\u6570\u5206\u6BCD\u6216\u9664\u6570\u3002"
  11342. }
  11343. ]
  11344. },
  11345. "NOT": {
  11346. "d": "\u8FD4\u56DE\u67D0\u4E2A\u903B\u8F91\u503C\u7684\u76F8\u53CD\u503C - \u201CNOT(TRUE())\u201D\u5C06\u8FD4\u56DE FALSE\uFF1B\u201CNOT(FALSE())\u201D\u5C06\u8FD4\u56DE TRUE\u3002",
  11347. "a": "\u8FD4\u56DE\u67D0\u4E2A\u903B\u8F91\u503C\u7684\u76F8\u53CD\u503C - \u201CNOT(TRUE())\u201D\u5C06\u8FD4\u56DE FALSE\uFF1B\u201CNOT(FALSE())\u201D\u5C06\u8FD4\u56DE TRUE\u3002",
  11348. "p": [
  11349. {
  11350. "name": "logical",
  11351. "detail": "\u8BA1\u7B97\u7ED3\u679C\u4E3A TRUE \u6216 FALSE \u7684\u4EFB\u4F55\u503C\u6216\u8868\u8FBE\u5F0F\u3002"
  11352. }
  11353. ]
  11354. },
  11355. "TRUE": {
  11356. "d": "\u8FD4\u56DE\u903B\u8F91\u503C TRUE\u3002",
  11357. "a": "\u8FD4\u56DE\u903B\u8F91\u503C TRUE\u3002",
  11358. "p": []
  11359. },
  11360. "FALSE": {
  11361. "d": "\u8FD4\u56DE\u903B\u8F91\u503C FALSE\u3002",
  11362. "a": "\u8FD4\u56DE\u903B\u8F91\u503C FALSE\u3002",
  11363. "p": []
  11364. },
  11365. "AND": {
  11366. "d": "\u6240\u6709\u53C2\u6570\u7684\u8BA1\u7B97\u7ED3\u679C\u4E3A TRUE \u65F6\uFF0C\u8FD4\u56DE TRUE\uFF1B\u53EA\u8981\u6709\u4E00\u4E2A\u53C2\u6570\u7684\u8BA1\u7B97\u7ED3\u679C\u4E3A FALSE\uFF0C\u5373\u8FD4\u56DE FALSE\u3002",
  11367. "a": "\u6240\u6709\u53C2\u6570\u7684\u8BA1\u7B97\u7ED3\u679C\u4E3A TRUE \u65F6\uFF0C\u8FD4\u56DE TRUE\uFF1B\u53EA\u8981\u6709\u4E00\u4E2A\u53C2\u6570\u7684\u8BA1\u7B97\u7ED3\u679C\u4E3A FALSE\uFF0C\u5373\u8FD4\u56DE FALSE\u3002",
  11368. "p": [
  11369. {
  11370. "name": "logical1",
  11371. "detail": "\u8981\u6D4B\u8BD5\u7684\u7B2C\u4E00\u4E2A\u6761\u4EF6\uFF0C\u5176\u8BA1\u7B97\u7ED3\u679C\u53EF\u4EE5\u4E3A TRUE \u6216 FALSE\u3002"
  11372. },
  11373. {
  11374. "name": "logical2,...",
  11375. "detail": "[\u53EF\u9009] - \u8981\u6D4B\u8BD5\u7684\u5176\u4ED6\u6761\u4EF6\uFF0C\u5176\u8BA1\u7B97\u7ED3\u679C\u53EF\u4EE5\u4E3A TRUE \u6216 FALSE\uFF0C\u6700\u591A\u53EF\u5305\u542B 255 \u4E2A\u6761\u4EF6\u3002"
  11376. }
  11377. ]
  11378. },
  11379. "IFERROR": {
  11380. "d": "\u5982\u679C\u7B2C\u4E00\u4E2A\u53C2\u6570\u4E0D\u662F\u9519\u8BEF\u503C\uFF0C\u5C31\u8FD4\u56DE\u7B2C\u4E00\u4E2A\u53C2\u6570\uFF1B\u5426\u5219\uFF0C\u8FD4\u56DE\u7B2C\u4E8C\u4E2A\u53C2\u6570\u3002",
  11381. "a": "\u5982\u679C\u7B2C\u4E00\u4E2A\u53C2\u6570\u4E0D\u662F\u9519\u8BEF\u503C",
  11382. "p": [
  11383. {
  11384. "name": "value",
  11385. "detail": "\u68C0\u67E5\u662F\u5426\u5B58\u5728\u9519\u8BEF\u7684\u53C2\u6570\u3002"
  11386. },
  11387. {
  11388. "name": "value_if_error",
  11389. "detail": "\u516C\u5F0F\u7684\u8BA1\u7B97\u7ED3\u679C\u9519\u8BEF\u65F6\u8FD4\u56DE\u7684\u503C\u3002 \u8BA1\u7B97\u4EE5\u4E0B\u9519\u8BEF\u7C7B\u578B\uFF1A#N/A\u3001#VALUE!\u3001#REF!\u3001#DIV/0!\u3001#NUM!\u3001#NAME? \u6216 #NULL!\u3002"
  11390. }
  11391. ]
  11392. },
  11393. "IF": {
  11394. "d": "\u5F53\u903B\u8F91\u8868\u8FBE\u5F0F\u7684\u503C\u4E3A TRUE \u65F6\u8FD4\u56DE\u4E00\u4E2A\u503C\uFF0C\u800C\u5F53\u5176\u4E3A FALSE \u65F6\u8FD4\u56DE\u53E6\u4E00\u4E2A\u503C\u3002",
  11395. "a": "\u5F53\u903B\u8F91\u8868\u8FBE\u5F0F\u7684\u503C\u4E3A TRUE \u65F6\u8FD4\u56DE\u4E00\u4E2A\u503C\uFF0C\u800C\u5F53\u5176\u4E3A FALSE \u65F6\u8FD4\u56DE\u53E6\u4E00\u4E2A\u503C\u3002",
  11396. "p": [
  11397. {
  11398. "name": "logical_test",
  11399. "detail": "\u4E00\u4E2A\u8868\u8FBE\u5F0F\u6216\u5BF9\u5305\u542B\u8868\u8FBE\u5F0F\u7684\u5355\u5143\u683C\u7684\u5F15\u7528\uFF0C\u8BE5\u8868\u8FBE\u5F0F\u4EE3\u8868\u67D0\u79CD\u903B\u8F91\u503C\uFF08\u5373TRUE\u6216FALSE\uFF09\u3002"
  11400. },
  11401. {
  11402. "name": "value_if_true",
  11403. "detail": "\u5F53\u903B\u8F91\u8868\u8FBE\u5F0F\u4E3ATRUE\u65F6\u7684\u8FD4\u56DE\u503C\u3002"
  11404. },
  11405. {
  11406. "name": "value_if_false",
  11407. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u4E3A\u7A7A\u767D] - \u5F53\u903B\u8F91\u8868\u8FBE\u5F0F\u7B49\u4E8EFALSE\u65F6\u7684\u51FD\u6570\u8FD4\u56DE\u503C\u3002"
  11408. }
  11409. ]
  11410. },
  11411. "OR": {
  11412. "d": "\u53EA\u8981\u6709\u4E00\u4E2A\u53C2\u6570\u7684\u8BA1\u7B97\u7ED3\u679C\u4E3A TRUE \u65F6\uFF0C\u8FD4\u56DE TRUE\uFF1B\u6240\u6709\u53C2\u6570\u7684\u8BA1\u7B97\u7ED3\u679C\u4E3A FALSE\uFF0C\u5373\u8FD4\u56DE FALSE\u3002",
  11413. "a": "\u53EA\u8981\u6709\u4E00\u4E2A\u53C2\u6570\u7684\u8BA1\u7B97\u7ED3\u679C\u4E3A TRUE \u65F6\uFF0C\u8FD4\u56DE TRUE\uFF1B\u6240\u6709\u53C2\u6570\u7684\u8BA1\u7B97\u7ED3\u679C\u4E3A FALSE\uFF0C\u5373\u8FD4\u56DE FALSE\u3002",
  11414. "p": [
  11415. {
  11416. "name": "logical1",
  11417. "detail": "\u8981\u6D4B\u8BD5\u7684\u7B2C\u4E00\u4E2A\u6761\u4EF6\uFF0C\u5176\u8BA1\u7B97\u7ED3\u679C\u53EF\u4EE5\u4E3A TRUE \u6216 FALSE\u3002"
  11418. },
  11419. {
  11420. "name": "\u903B\u8F91\u8868\u8FBE\u5F0F2",
  11421. "detail": "[\u53EF\u9009] - \u5176\u4ED6\u8868\u8FBE\u5F0F\u6216\u5BF9\u5305\u542B\u8868\u8FBE\u5F0F\u7684\u5355\u5143\u683C\u7684\u5F15\u7528\uFF0C\u8FD9\u4E9B\u8868\u8FBE\u5F0F\u4EE3\u8868\u67D0\u79CD\u903B\u8F91\u503C\uFF08\u5373TRUE\u6216FALSE\uFF09\u6216\u8005\u53EF\u4EE5\u5F3A\u5236\u8F6C\u6362\u4E3A\u903B\u8F91\u503C\u3002"
  11422. }
  11423. ]
  11424. },
  11425. "NE": {
  11426. "d": "\u5982\u679C\u6307\u5B9A\u7684\u503C\u4E0D\u76F8\u7B49\uFF0C\u5219\u8FD4\u56DE\u201CTRUE\u201D\uFF1B\u5426\u5219\u8FD4\u56DE\u201CFALSE\u201D\u3002\u76F8\u5F53\u4E8E\u201C<>\u201D\u8FD0\u7B97\u7B26\u3002",
  11427. "a": "\u5982\u679C\u6307\u5B9A\u7684\u503C\u4E0D\u76F8\u7B49\uFF0C\u5219\u8FD4\u56DE\u201CTRUE\u201D\uFF1B\u5426\u5219\u8FD4\u56DE\u201CFALSE\u201D\u3002\u76F8\u5F53\u4E8E\u201C<>\u201D\u8FD0\u7B97\u7B26\u3002",
  11428. "p": [
  11429. {
  11430. "name": "value1",
  11431. "detail": "\u7B2C\u4E00\u4E2A\u503C\u3002"
  11432. },
  11433. {
  11434. "name": "value2",
  11435. "detail": "\u8981\u68C0\u67E5\u662F\u5426\u4E0E value1 \u4E0D\u76F8\u7B49\u7684\u503C\u3002"
  11436. }
  11437. ]
  11438. },
  11439. "EQ": {
  11440. "d": "\u5982\u679C\u6307\u5B9A\u7684\u503C\u76F8\u7B49\uFF0C\u5219\u8FD4\u56DE\u201CTRUE\u201D\uFF1B\u5426\u5219\u8FD4\u56DE\u201CFALSE\u201D\u3002\u76F8\u5F53\u4E8E\u201C=\u201D\u8FD0\u7B97\u7B26\u3002",
  11441. "a": "\u5982\u679C\u6307\u5B9A\u7684\u503C\u76F8\u7B49\uFF0C\u5219\u8FD4\u56DE\u201CTRUE\u201D\uFF1B\u5426\u5219\u8FD4\u56DE\u201CFALSE\u201D\u3002\u76F8\u5F53\u4E8E\u201C=\u201D\u8FD0\u7B97\u7B26\u3002",
  11442. "p": [
  11443. {
  11444. "name": "value1",
  11445. "detail": "\u7B2C\u4E00\u4E2A\u503C\u3002"
  11446. },
  11447. {
  11448. "name": "value2",
  11449. "detail": "\u8981\u68C0\u67E5\u662F\u5426\u4E0E value1 \u76F8\u7B49\u7684\u503C\u3002"
  11450. }
  11451. ]
  11452. },
  11453. "GT": {
  11454. "d": "\u5982\u679C\u7B2C\u4E00\u4E2A\u53C2\u6570\u4E25\u683C\u5927\u4E8E\u7B2C\u4E8C\u4E2A\uFF0C\u5219\u8FD4\u56DE TRUE\uFF1B\u5426\u5219\u8FD4\u56DE FALSE\u3002\u76F8\u5F53\u4E8E\u201C>\u201D\u8FD0\u7B97\u7B26\u3002",
  11455. "a": "\u5982\u679C\u7B2C\u4E00\u4E2A\u53C2\u6570\u4E25\u683C\u5927\u4E8E\u7B2C\u4E8C\u4E2A\uFF0C\u5219\u8FD4\u56DE TRUE\uFF1B\u5426\u5219\u8FD4\u56DE FALSE\u3002\u76F8\u5F53\u4E8E\u201C>\u201D\u8FD0\u7B97\u7B26\u3002",
  11456. "p": [
  11457. {
  11458. "name": "value1",
  11459. "detail": "\u8981\u6D4B\u8BD5\u5176\u662F\u5426\u5927\u4E8E value2 \u7684\u503C\u3002"
  11460. },
  11461. {
  11462. "name": "value2",
  11463. "detail": "\u7B2C\u4E8C\u4E2A\u503C\u3002"
  11464. }
  11465. ]
  11466. },
  11467. "GTE": {
  11468. "d": "\u5982\u679C\u7B2C\u4E00\u4E2A\u53C2\u6570\u5927\u4E8E\u6216\u7B49\u4E8E\u7B2C\u4E8C\u4E2A\uFF0C\u5219\u8FD4\u56DE TRUE\uFF1B\u5426\u5219\u8FD4\u56DE FALSE\u3002\u76F8\u5F53\u4E8E\u201C>=\u201D\u8FD0\u7B97\u7B26\u3002",
  11469. "a": "\u5982\u679C\u7B2C\u4E00\u4E2A\u53C2\u6570\u5927\u4E8E\u6216\u7B49\u4E8E\u7B2C\u4E8C\u4E2A\uFF0C\u5219\u8FD4\u56DE TRUE\uFF1B\u5426\u5219\u8FD4\u56DE FALSE\u3002\u76F8\u5F53\u4E8E\u201C>=\u201D\u8FD0\u7B97\u7B26\u3002",
  11470. "p": [
  11471. {
  11472. "name": "value1",
  11473. "detail": "\u8981\u6D4B\u8BD5\u5176\u662F\u5426\u5927\u4E8E\u7B49\u4E8E value2 \u7684\u503C\u3002"
  11474. },
  11475. {
  11476. "name": "value2",
  11477. "detail": "\u7B2C\u4E8C\u4E2A\u503C\u3002"
  11478. }
  11479. ]
  11480. },
  11481. "LT": {
  11482. "d": "\u5982\u679C\u7B2C\u4E00\u4E2A\u53C2\u6570\u4E25\u683C\u5C0F\u4E8E\u7B2C\u4E8C\u4E2A\uFF0C\u5219\u8FD4\u56DE TRUE\uFF1B\u5426\u5219\u8FD4\u56DE FALSE\u3002\u76F8\u5F53\u4E8E\u201C<\u201D\u8FD0\u7B97\u7B26\u3002",
  11483. "a": "\u5982\u679C\u7B2C\u4E00\u4E2A\u53C2\u6570\u4E25\u683C\u5C0F\u4E8E\u7B2C\u4E8C\u4E2A\uFF0C\u5219\u8FD4\u56DE TRUE\uFF1B\u5426\u5219\u8FD4\u56DE FALSE\u3002\u76F8\u5F53\u4E8E\u201C<\u201D\u8FD0\u7B97\u7B26\u3002",
  11484. "p": [
  11485. {
  11486. "name": "value1",
  11487. "detail": "\u8981\u6D4B\u8BD5\u5176\u662F\u5426\u5C0F\u4E8E value2 \u7684\u503C\u3002"
  11488. },
  11489. {
  11490. "name": "value2",
  11491. "detail": "\u7B2C\u4E8C\u4E2A\u503C\u3002"
  11492. }
  11493. ]
  11494. },
  11495. "LTE": {
  11496. "d": "\u5982\u679C\u7B2C\u4E00\u4E2A\u53C2\u6570\u5C0F\u4E8E\u6216\u7B49\u4E8E\u7B2C\u4E8C\u4E2A\uFF0C\u5219\u8FD4\u56DE TRUE\uFF1B\u5426\u5219\u8FD4\u56DE FALSE\u3002\u76F8\u5F53\u4E8E\u201C<=\u201D\u8FD0\u7B97\u7B26\u3002",
  11497. "a": "\u5982\u679C\u7B2C\u4E00\u4E2A\u53C2\u6570\u5C0F\u4E8E\u6216\u7B49\u4E8E\u7B2C\u4E8C\u4E2A\uFF0C\u5219\u8FD4\u56DE TRUE\uFF1B\u5426\u5219\u8FD4\u56DE FALSE\u3002\u76F8\u5F53\u4E8E\u201C<=\u201D\u8FD0\u7B97\u7B26\u3002",
  11498. "p": [
  11499. {
  11500. "name": "value1",
  11501. "detail": "\u8981\u6D4B\u8BD5\u5176\u662F\u5426\u5C0F\u4E8E\u7B49\u4E8E value2 \u7684\u503C\u3002"
  11502. },
  11503. {
  11504. "name": "value2",
  11505. "detail": "\u7B2C\u4E8C\u4E2A\u503C\u3002"
  11506. }
  11507. ]
  11508. },
  11509. "ADD": {
  11510. "d": "\u8FD4\u56DE\u4E24\u4E2A\u6570\u503C\u4E4B\u548C\u3002\u76F8\u5F53\u4E8E `+` \u8FD0\u7B97\u7B26\u3002",
  11511. "a": "\u8FD4\u56DE\u4E24\u4E2A\u6570\u503C\u4E4B\u548C\u3002\u76F8\u5F53\u4E8E `+` \u8FD0\u7B97\u7B26\u3002",
  11512. "p": [
  11513. {
  11514. "name": "value1",
  11515. "detail": "\u7B2C\u4E00\u4E2A\u52A0\u6570\u3002"
  11516. },
  11517. {
  11518. "name": "value2",
  11519. "detail": "\u7B2C\u4E8C\u4E2A\u52A0\u6570\u3002"
  11520. }
  11521. ]
  11522. },
  11523. "MINUS": {
  11524. "d": "\u8FD4\u56DE\u4E24\u4E2A\u6570\u503C\u4E4B\u5DEE\u3002\u76F8\u5F53\u4E8E\u201C-\u201D\u8FD0\u7B97\u7B26\u3002",
  11525. "a": "\u8FD4\u56DE\u4E24\u4E2A\u6570\u503C\u4E4B\u5DEE\u3002\u76F8\u5F53\u4E8E\u201C-\u201D\u8FD0\u7B97\u7B26\u3002",
  11526. "p": [
  11527. {
  11528. "name": "value1",
  11529. "detail": "\u88AB\u51CF\u6570\uFF0C\u5373\u8981\u5BF9\u5176\u8BA1\u51CF\u7684\u6570\u503C\u3002"
  11530. },
  11531. {
  11532. "name": "value2",
  11533. "detail": "\u51CF\u6570\uFF0C\u5373\u8981\u4ECE value1 \u4E2D\u51CF\u9664\u7684\u6570\u503C\u3002"
  11534. }
  11535. ]
  11536. },
  11537. "MULTIPLY": {
  11538. "d": "\u8FD4\u56DE\u4E24\u4E2A\u6570\u7684\u4E58\u79EF\u3002\u76F8\u5F53\u4E8E\u201C*\u201D\u8FD0\u7B97\u7B26\u3002",
  11539. "a": "\u8FD4\u56DE\u4E24\u4E2A\u6570\u7684\u4E58\u79EF\u3002\u76F8\u5F53\u4E8E\u201C*\u201D\u8FD0\u7B97\u7B26\u3002",
  11540. "p": [
  11541. {
  11542. "name": "value1",
  11543. "detail": "\u7B2C\u4E00\u4E2A\u4E58\u6570\u3002"
  11544. },
  11545. {
  11546. "name": "value2",
  11547. "detail": "\u7B2C\u4E8C\u4E2A\u4E58\u6570\u3002"
  11548. }
  11549. ]
  11550. },
  11551. "DIVIDE": {
  11552. "d": "\u8FD4\u56DE\u4E24\u4E2A\u53C2\u6570\u76F8\u9664\u6240\u5F97\u7684\u7ED3\u679C\u3002\u76F8\u5F53\u4E8E `/` \u8FD0\u7B97\u7B26\u3002",
  11553. "a": "\u8FD4\u56DE\u4E24\u4E2A\u53C2\u6570\u76F8\u9664\u6240\u5F97\u7684\u7ED3\u679C\u3002\u76F8\u5F53\u4E8E `/` \u8FD0\u7B97\u7B26\u3002",
  11554. "p": [
  11555. {
  11556. "name": "value1",
  11557. "detail": "\u8981\u88AB\u9664\u7684\u6570\u503C\u3002"
  11558. },
  11559. {
  11560. "name": "value2",
  11561. "detail": "\u7528\u4E8E\u9664\u5176\u4ED6\u6570\u7684\u6570\u503C\u3002\n\n\u9664\u6570\u4E0D\u5F97\u4E3A0\u3002"
  11562. }
  11563. ]
  11564. },
  11565. "CONCAT": {
  11566. "d": "\u8FD4\u56DE\u4E24\u4E2A\u503C\u7684\u4E32\u8054\u3002\u76F8\u5F53\u4E8E `&` \u8FD0\u7B97\u7B26\u3002",
  11567. "a": "\u8FD4\u56DE\u4E24\u4E2A\u503C\u7684\u4E32\u8054\u3002\u76F8\u5F53\u4E8E `&` \u8FD0\u7B97\u7B26\u3002",
  11568. "p": [
  11569. {
  11570. "name": "value1",
  11571. "detail": "value2 \u5C06\u9644\u4E8E\u5176\u540E\u7684\u503C\u3002"
  11572. },
  11573. {
  11574. "name": "value2",
  11575. "detail": "\u8981\u9644\u4E8E value1 \u4E4B\u540E\u7684\u503C\u3002"
  11576. }
  11577. ]
  11578. },
  11579. "UNARY_PERCENT": {
  11580. "d": "\u8FD4\u56DE\u6309\u767E\u5206\u6BD4\u89E3\u91CA\u7684\u6570\u503C\u3002\u4F8B\u5982\uFF0C\u201CUNARY_PERCENT(100)\u201D\u7B49\u4E8E1\u3002",
  11581. "a": "\u8FD4\u56DE\u6309\u767E\u5206\u6BD4\u89E3\u91CA\u7684\u6570\u503C\u3002\u4F8B\u5982\uFF0C\u201CUNARY_PERCENT(100)\u201D\u7B49\u4E8E1\u3002",
  11582. "p": [
  11583. {
  11584. "name": "number",
  11585. "detail": "\u8981\u4F5C\u4E3A\u767E\u5206\u6BD4\u89E3\u91CA\u7684\u6570\u503C\u3002"
  11586. }
  11587. ]
  11588. },
  11589. "CONCATENATE": {
  11590. "d": "\u5C06\u4E24\u4E2A\u6216\u591A\u4E2A\u6587\u672C\u5B57\u7B26\u4E32\u8054\u63A5\u4E3A\u4E00\u4E2A\u5B57\u7B26\u4E32\u3002",
  11591. "a": "\u5C06\u4E24\u4E2A\u6216\u591A\u4E2A\u6587\u672C\u5B57\u7B26\u4E32\u8054\u63A5\u4E3A\u4E00\u4E2A\u5B57\u7B26\u4E32\u3002",
  11592. "p": [
  11593. {
  11594. "name": "text1",
  11595. "detail": "\u521D\u59CB\u5B57\u7B26\u4E32\u3002"
  11596. },
  11597. {
  11598. "name": "text2 ...",
  11599. "detail": "[\u53EF\u9009] - \u8981\u6309\u987A\u5E8F\u8FDE\u63A5\u5728\u4E00\u8D77\u7684\u5176\u4ED6\u5B57\u7B26\u4E32\u3002"
  11600. }
  11601. ]
  11602. },
  11603. "CODE": {
  11604. "d": "\u8FD4\u56DE\u6240\u63D0\u4F9B\u7684\u5B57\u7B26\u4E32\u4E2D\u9996\u5B57\u7B26\u7684 Unicode \u6620\u5C04\u503C\u3002",
  11605. "a": "\u8FD4\u56DE\u6240\u63D0\u4F9B\u7684\u5B57\u7B26\u4E32\u4E2D\u9996\u5B57\u7B26\u7684 Unicode \u6620\u5C04\u503C\u3002",
  11606. "p": [
  11607. {
  11608. "name": "text",
  11609. "detail": "\u8981\u8FD4\u56DE\u5176\u9996\u5B57\u7B26\u7684Unicode\u6620\u5C04\u503C\u7684\u5B57\u7B26\u4E32\u3002"
  11610. }
  11611. ]
  11612. },
  11613. "CHAR": {
  11614. "d": "\u6309\u7167\u5F53\u524D Unicode \u7F16\u7801\u8868\uFF0C\u5C06\u6570\u5B57\u8F6C\u6362\u4E3A\u5BF9\u5E94\u7684\u5B57\u7B26\u3002",
  11615. "a": "\u6309\u7167\u5F53\u524D Unicode \u7F16\u7801\u8868\uFF0C\u5C06\u6570\u5B57\u8F6C\u6362\u4E3A\u5BF9\u5E94\u7684\u5B57\u7B26\u3002",
  11616. "p": [
  11617. {
  11618. "name": "number",
  11619. "detail": "\u4ECB\u4E8E 1 \u5230 255 \u4E4B\u95F4\u7684\u6570\u5B57\u3002"
  11620. }
  11621. ]
  11622. },
  11623. "ARABIC": {
  11624. "d": "\u5C06\u7F57\u9A6C\u6570\u5B57\u8F6C\u6362\u4E3A\u963F\u62C9\u4F2F\u6570\u5B57\u3002",
  11625. "a": "\u5C06\u7F57\u9A6C\u6570\u5B57\u8F6C\u6362\u4E3A\u963F\u62C9\u4F2F\u6570\u5B57\u3002",
  11626. "p": [
  11627. {
  11628. "name": "text",
  11629. "detail": "\u8981\u8F6C\u6362\u683C\u5F0F\u7684\u7F57\u9A6C\u6570\u5B57"
  11630. }
  11631. ]
  11632. },
  11633. "ROMAN": {
  11634. "d": "\u5C06\u6570\u5B57\u683C\u5F0F\u8BBE\u7F6E\u4E3A\u7F57\u9A6C\u6570\u5B57\u5F62\u5F0F\u3002",
  11635. "a": "\u5C06\u6570\u5B57\u683C\u5F0F\u8BBE\u7F6E\u4E3A\u7F57\u9A6C\u6570\u5B57\u5F62\u5F0F\u3002",
  11636. "p": [
  11637. {
  11638. "name": "number",
  11639. "detail": "\u8981\u8BBE\u7F6E\u683C\u5F0F\u7684\u6570\u5B57\uFF0C\u4ECB\u4E8E1\u52303999\u4E4B\u95F4\uFF08\u5305\u62EC\u8FD9\u4E24\u4E2A\u6570\u5B57\uFF09\u3002"
  11640. }
  11641. ]
  11642. },
  11643. "REGEXEXTRACT": {
  11644. "d": "\u6309\u7167\u6B63\u5219\u8868\u8FBE\u5F0F\u63D0\u53D6\u5339\u914D\u7684\u5B50\u4E32\u3002",
  11645. "a": "\u6309\u7167\u6B63\u5219\u8868\u8FBE\u5F0F\u63D0\u53D6\u5339\u914D\u7684\u5B50\u4E32\u3002",
  11646. "p": [
  11647. {
  11648. "name": "text",
  11649. "detail": "\u8F93\u5165\u6587\u672C\u3002"
  11650. },
  11651. {
  11652. "name": "regular_expression",
  11653. "detail": "\u6B64\u51FD\u6570\u5C06\u8FD4\u56DE\u6587\u672C\u4E2D\u7B26\u5408\u6B64\u8868\u8FBE\u5F0F\u7684\u7B2C\u4E00\u4E2A\u5B50\u4E32\u3002"
  11654. }
  11655. ]
  11656. },
  11657. "REGEXMATCH": {
  11658. "d": "\u5224\u65AD\u4E00\u6BB5\u6587\u672C\u662F\u5426\u4E0E\u6B63\u5219\u8868\u8FBE\u5F0F\u76F8\u5339\u914D\u3002",
  11659. "a": "\u5224\u65AD\u4E00\u6BB5\u6587\u672C\u662F\u5426\u4E0E\u6B63\u5219\u8868\u8FBE\u5F0F\u76F8\u5339\u914D\u3002",
  11660. "p": [
  11661. {
  11662. "name": "text",
  11663. "detail": "\u8981\u7528\u6B63\u5219\u8868\u8FBE\u5F0F\u6D4B\u8BD5\u7684\u6587\u672C\u3002"
  11664. },
  11665. {
  11666. "name": "regular_expression",
  11667. "detail": "\u7528\u6765\u6D4B\u8BD5\u6587\u672C\u7684\u6B63\u5219\u8868\u8FBE\u5F0F\u3002"
  11668. }
  11669. ]
  11670. },
  11671. "REGEXREPLACE": {
  11672. "d": "\u4F7F\u7528\u6B63\u5219\u8868\u8FBE\u5F0F\u5C06\u6587\u672C\u5B57\u7B26\u4E32\u4E2D\u7684\u4E00\u90E8\u5206\u66FF\u6362\u4E3A\u5176\u4ED6\u6587\u672C\u5B57\u7B26\u4E32\u3002",
  11673. "a": "\u4F7F\u7528\u6B63\u5219\u8868\u8FBE\u5F0F\u5C06\u6587\u672C\u5B57\u7B26\u4E32\u4E2D\u7684\u4E00\u90E8\u5206\u66FF\u6362\u4E3A\u5176\u4ED6\u6587\u672C\u5B57\u7B26\u4E32\u3002",
  11674. "p": [
  11675. {
  11676. "name": "text",
  11677. "detail": "\u8981\u5BF9\u5176\u5C40\u90E8\u8FDB\u884C\u66FF\u6362\u64CD\u4F5C\u7684\u6587\u672C\u3002"
  11678. },
  11679. {
  11680. "name": "regular_expression",
  11681. "detail": "\u6B63\u5219\u8868\u8FBE\u5F0F\u3002 text \u4E2D\u6240\u6709\u5339\u914D\u7684\u5B9E\u4F8B\u90FD\u5C06\u88AB\u66FF\u6362\u3002"
  11682. },
  11683. {
  11684. "name": "replacement",
  11685. "detail": "\u8981\u63D2\u5165\u5230\u539F\u6709\u6587\u672C\u4E2D\u7684\u6587\u672C\u3002"
  11686. }
  11687. ]
  11688. },
  11689. "T": {
  11690. "d": "\u8FD4\u56DE\u6587\u672C\u683C\u5F0F\u7684\u5B57\u7B26\u4E32\u53C2\u6570\u3002",
  11691. "a": "\u8FD4\u56DE\u6587\u672C\u683C\u5F0F\u7684\u5B57\u7B26\u4E32\u53C2\u6570\u3002",
  11692. "p": [
  11693. {
  11694. "name": "value",
  11695. "detail": "\u8981\u8F6C\u6362\u4E3A\u6587\u672C\u7684\u53C2\u6570\u3002\n\n\u5982\u679C\u503C\u4E3A\u6587\u672C\uFF0CT\u5C06\u8FD4\u56DE\u503C\u672C\u8EAB\u3002\n\n\u5982\u679C\u503C\u4E3A\u6307\u5411\u5305\u542B\u6587\u672C\u7684\u5355\u5143\u683C\u7684\u5F15\u7528\uFF0CT\u5C06\u8FD4\u56DE\u503C\u4E2D\u7684\u5185\u5BB9\u3002\n\n\u5982\u679C\u503C\u4E3A\u9519\u8BEF\u503C\u6216\u5305\u542B\u9519\u8BEF\u503C\u7684\u5355\u5143\u683C\uFF0CT\u5C06\u8FD4\u56DE\u8BE5\u9519\u8BEF\u503C\u3002\n\n\u5BF9\u4E8E\u6240\u6709\u5176\u4ED6\u60C5\u51B5\uFF0CT\u5C06\u8FD4\u56DE\u7A7A\u4E32\u3002"
  11696. }
  11697. ]
  11698. },
  11699. "FIXED": {
  11700. "d": "\u4EE5\u56FA\u5B9A\u7684\u5C0F\u6570\u4F4D\u6570\u8BBE\u7F6E\u6570\u5B57\u7684\u683C\u5F0F\u3002",
  11701. "a": "\u4EE5\u56FA\u5B9A\u7684\u5C0F\u6570\u4F4D\u6570\u8BBE\u7F6E\u6570\u5B57\u7684\u683C\u5F0F\u3002",
  11702. "p": [
  11703. {
  11704. "name": "number",
  11705. "detail": "\u8981\u8FDB\u884C\u820D\u5165\u5E76\u8F6C\u6362\u4E3A\u6587\u672C\u7684\u6570\u5B57\u3002"
  11706. },
  11707. {
  11708. "name": "decimals",
  11709. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u503C\u4E3A2] - \u7ED3\u679C\u4E2D\u8981\u663E\u793A\u7684\u5C0F\u6570\u4F4D\u6570\u3002\n\n\u5982\u679C\u6570\u503C\u7684\u6709\u6548\u4F4D\u6570\u5C0F\u4E8E\u5C0F\u6570\u4F4D\u6570\uFF0C\u5C06\u4EE5\u96F6\u586B\u5145\u3002\u5982\u679C\u6570\u503C\u7684\u6709\u6548\u4F4D\u6570\u5927\u4E8E\u5C0F\u6570\u4F4D\u6570\uFF0C\u5219\u5C06\u5176\u820D\u5165\u5230\u6240\u9700\u7684\u5C0F\u6570\u4F4D\u6570\u800C\u4E0D\u662F\u5C06\u5176\u622A\u65AD\u3002"
  11710. },
  11711. {
  11712. "name": "no_commas",
  11713. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u503C\u4E3AFALSE()] - \u4E00\u4E2A\u903B\u8F91\u503C\uFF0C\u5982\u679C\u4E3A TRUE()\uFF0C\u5219\u4F1A\u7981\u6B62 FIXED \u5728\u8FD4\u56DE\u7684\u6587\u672C\u4E2D\u5305\u542B\u9017\u53F7\u3002"
  11714. }
  11715. ]
  11716. },
  11717. "FIND": {
  11718. "d": "\u8FD4\u56DE\u5B57\u7B26\u4E32\u5728\u6587\u672C\u4E2D\u9996\u6B21\u51FA\u73B0\u7684\u4F4D\u7F6E\uFF08\u533A\u5206\u5927\u5C0F\u5199\uFF09\u3002",
  11719. "a": "\u8FD4\u56DE\u5B57\u7B26\u4E32\u5728\u6587\u672C\u4E2D\u9996\u6B21\u51FA\u73B0\u7684\u4F4D\u7F6E\uFF08\u533A\u5206\u5927\u5C0F\u5199\uFF09\u3002",
  11720. "p": [
  11721. {
  11722. "name": "find_text",
  11723. "detail": "\u8981\u5728\u8981\u641C\u7D22\u7684\u6587\u672C\u4E2D\u67E5\u627E\u7684\u5B57\u7B26\u4E32\u3002"
  11724. },
  11725. {
  11726. "name": "within_text",
  11727. "detail": "\u8981\u5728\u5176\u4E2D\u641C\u7D22\u641C\u7D22\u5B57\u7B26\u4E32\u7684\u9996\u6B21\u51FA\u73B0\u4F4D\u7F6E\u7684\u6587\u672C\u3002"
  11728. },
  11729. {
  11730. "name": "start_num",
  11731. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u503C\u4E3A1] - \u8981\u5728\u8981\u641C\u7D22\u7684\u6587\u672C\u4E2D\u5F00\u59CB\u641C\u7D22\u7684\u5B57\u7B26\u4F4D\u7F6E\u3002"
  11732. }
  11733. ]
  11734. },
  11735. "FINDB": {
  11736. "d": "\u8FD4\u56DE\u67D0\u4E2A\u5B57\u7B26\u4E32\u5728\u6587\u672C\u4E2D\u9996\u6B21\u51FA\u73B0\u7684\u4F4D\u7F6E\uFF08\u6BCF\u4E2A\u53CC\u5B57\u8282\u5B57\u7B26\u5360\u4E24\u4E2A\u4F4D\u7F6E\uFF09\u3002",
  11737. "a": "\u8FD4\u56DE\u67D0\u4E2A\u5B57\u7B26\u4E32\u5728\u6587\u672C\u4E2D\u9996\u6B21\u51FA\u73B0\u7684\u4F4D\u7F6E\uFF08\u6BCF\u4E2A\u53CC\u5B57\u8282\u5B57\u7B26\u5360\u4E24\u4E2A\u4F4D\u7F6E\uFF09\u3002",
  11738. "p": [
  11739. {
  11740. "name": "find_text",
  11741. "detail": "\u8981\u5728\u8981\u641C\u7D22\u7684\u6587\u672C\u4E2D\u67E5\u627E\u7684\u5B57\u7B26\u4E32\u3002"
  11742. },
  11743. {
  11744. "name": "within_text",
  11745. "detail": "\u8981\u5728\u5176\u4E2D\u641C\u7D22\u641C\u7D22\u5B57\u7B26\u4E32\u7684\u9996\u6B21\u51FA\u73B0\u4F4D\u7F6E\u7684\u6587\u672C\u3002"
  11746. },
  11747. {
  11748. "name": "start_num",
  11749. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u503C\u4E3A 1] - \u8981\u5728\u8981\u641C\u7D22\u7684\u6587\u672C\u4E2D\u5F00\u59CB\u641C\u7D22\u7684\u5B57\u7B26\u4F4D\u7F6E\u3002"
  11750. }
  11751. ]
  11752. },
  11753. "JOIN": {
  11754. "d": "\u5C06\u4E00\u4E2A\u6216\u591A\u4E2A\u4F7F\u7528\u6307\u5B9A\u5B9A\u754C\u7B26\u7684\u4E00\u7EF4\u6570\u7EC4\u7684\u5143\u7D20\u8FDE\u63A5\u5230\u4E00\u8D77\u3002",
  11755. "a": "\u5C06\u4E00\u4E2A\u6216\u591A\u4E2A\u4F7F\u7528\u6307\u5B9A\u5B9A\u754C\u7B26\u7684\u4E00\u7EF4\u6570\u7EC4\u7684\u5143\u7D20\u8FDE\u63A5\u5230\u4E00\u8D77\u3002",
  11756. "p": [
  11757. {
  11758. "name": "separator",
  11759. "detail": "\u7F6E\u4E8E\u76F8\u4E92\u8FDE\u63A5\u7684\u503C\u4E4B\u95F4\u7684\u5B57\u7B26\u6216\u5B57\u7B26\u4E32\u3002\n\n\u5B9A\u754C\u7B26\u53EF\u4EE5\u4E3A\u7A7A\uFF0C\u4F8B\u5982JOIN(,{1,2,3})\u3002"
  11760. },
  11761. {
  11762. "name": "array1",
  11763. "detail": "\u8981\u4F7F\u7528\u5B9A\u754C\u7B26\u8FDE\u63A5\u7684\u4E00\u4E2A\u6216\u591A\u4E2A\u503C\u3002"
  11764. },
  11765. {
  11766. "name": "array2, ...",
  11767. "detail": "[\u53EF\u9009] - \u8981\u4F7F\u7528\u5B9A\u754C\u7B26\u8FDE\u63A5\u7684\u5176\u4ED6\u503C\u6216\u6570\u7EC4\u3002"
  11768. }
  11769. ]
  11770. },
  11771. "LEFT": {
  11772. "d": "\u4ECE\u6587\u672C\u5B57\u7B26\u4E32\u7684\u7B2C\u4E00\u4E2A\u5B57\u7B26\u5F00\u59CB\u8FD4\u56DE\u6307\u5B9A\u4E2A\u6570\u7684\u5B57\u7B26\u3002",
  11773. "a": "\u4ECE\u6587\u672C\u5B57\u7B26\u4E32\u7684\u7B2C\u4E00\u4E2A\u5B57\u7B26\u5F00\u59CB\u8FD4\u56DE\u6307\u5B9A\u4E2A\u6570\u7684\u5B57\u7B26\u3002",
  11774. "p": [
  11775. {
  11776. "name": "text",
  11777. "detail": "\u5305\u542B\u8981\u63D0\u53D6\u7684\u5B57\u7B26\u7684\u6587\u672C\u5B57\u7B26\u4E32\u3002"
  11778. },
  11779. {
  11780. "name": "num_chars",
  11781. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u503C\u4E3A1] - \u6307\u5B9A\u8981\u7531 LEFT \u63D0\u53D6\u7684\u5B57\u7B26\u7684\u6570\u91CF\u3002"
  11782. }
  11783. ]
  11784. },
  11785. "RIGHT": {
  11786. "d": "\u6839\u636E\u6240\u6307\u5B9A\u7684\u5B57\u7B26\u6570\u8FD4\u56DE\u6587\u672C\u5B57\u7B26\u4E32\u4E2D\u6700\u540E\u4E00\u4E2A\u6216\u591A\u4E2A\u5B57\u7B26\u3002",
  11787. "a": "\u6839\u636E\u6240\u6307\u5B9A\u7684\u5B57\u7B26\u6570\u8FD4\u56DE\u6587\u672C\u5B57\u7B26\u4E32\u4E2D\u6700\u540E\u4E00\u4E2A\u6216\u591A\u4E2A\u5B57\u7B26\u3002",
  11788. "p": [
  11789. {
  11790. "name": "text",
  11791. "detail": "\u5305\u542B\u8981\u63D0\u53D6\u7684\u5B57\u7B26\u7684\u6587\u672C\u5B57\u7B26\u4E32\u3002"
  11792. },
  11793. {
  11794. "name": "num_chars",
  11795. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u503C\u4E3A1] - \u6307\u5B9A\u8981\u7531 RIGHT \u63D0\u53D6\u7684\u5B57\u7B26\u7684\u6570\u91CF\u3002"
  11796. }
  11797. ]
  11798. },
  11799. "MID": {
  11800. "d": "\u8FD4\u56DE\u6587\u672C\u5B57\u7B26\u4E32\u4E2D\u4ECE\u6307\u5B9A\u4F4D\u7F6E\u5F00\u59CB\u7684\u7279\u5B9A\u6570\u76EE\u7684\u5B57\u7B26\u3002",
  11801. "a": "\u8FD4\u56DE\u6587\u672C\u5B57\u7B26\u4E32\u4E2D\u4ECE\u6307\u5B9A\u4F4D\u7F6E\u5F00\u59CB\u7684\u7279\u5B9A\u6570\u76EE\u7684\u5B57\u7B26\u3002",
  11802. "p": [
  11803. {
  11804. "name": "text",
  11805. "detail": "\u5305\u542B\u8981\u63D0\u53D6\u7684\u5B57\u7B26\u7684\u6587\u672C\u5B57\u7B26\u4E32\u3002"
  11806. },
  11807. {
  11808. "name": "start_num",
  11809. "detail": "\u8981\u4ECE\u5B57\u7B26\u4E32\u4E2D\u5F00\u59CB\u63D0\u53D6\u7684\u4F4D\u7F6E\u3002\u5B57\u7B26\u4E32\u4E2D\u7B2C\u4E00\u4E2A\u5B57\u7B26\u7684\u7D22\u5F15\u4E3A1\u3002"
  11810. },
  11811. {
  11812. "name": "num_chars",
  11813. "detail": "\u6307\u5B9A\u8981\u7531 MID \u63D0\u53D6\u7684\u5B57\u7B26\u7684\u6570\u91CF\u3002\n\n\u5982\u679C\u63D0\u53D6\u7684\u5B57\u7B26\u6570\u5C1A\u4E0D\u8DB3\u63D0\u53D6\u957F\u5EA6\u4E2A\u5B57\u7B26\u65F6\u5C31\u5230\u8FBE\u4E86\u5B57\u7B26\u4E32\u5C3E\u90E8\uFF0C\u5219MID\u8FD4\u56DE\u4ECE\u5F00\u59CB\u4F4D\u7F6E\u5230\u5B57\u7B26\u4E32\u5C3E\u90E8\u7684\u5B57\u7B26\u3002"
  11814. }
  11815. ]
  11816. },
  11817. "LEN": {
  11818. "d": "\u8FD4\u56DE\u7ED9\u5B9A\u5B57\u7B26\u4E32\u7684\u957F\u5EA6\u3002",
  11819. "a": "\u8FD4\u56DE\u7ED9\u5B9A\u5B57\u7B26\u4E32\u7684\u957F\u5EA6\u3002",
  11820. "p": [
  11821. {
  11822. "name": "text",
  11823. "detail": "\u8981\u8FD4\u56DE\u5176\u957F\u5EA6\u7684\u5B57\u7B26\u4E32\u3002"
  11824. }
  11825. ]
  11826. },
  11827. "LENB": {
  11828. "d": "\u8FD4\u56DE\u6587\u672C\u4E2D\u6240\u5305\u542B\u7684\u5B57\u7B26\u6570\u3002\u4E0E\u53CC\u5B57\u8282\u5B57\u7B26\u96C6(DBCS)\u4E00\u8D77\u4F7F\u7528\u3002",
  11829. "a": "\u8FD4\u56DE\u6587\u672C\u4E2D\u6240\u5305\u542B\u7684\u5B57\u7B26\u6570\u3002\u4E0E\u53CC\u5B57\u8282\u5B57\u7B26\u96C6(DBCS)\u4E00\u8D77\u4F7F\u7528\u3002",
  11830. "p": [
  11831. {
  11832. "name": "text",
  11833. "detail": "\u8981\u8FD4\u56DE\u5176\u5B57\u8282\u6570\u7684\u5B57\u7B26\u4E32\u3002\uFF08\u4E00\u4E2A\u6C49\u5B57\u4E3A\u4E24\u4E2A\u5B57\u8282\u6570\uFF09"
  11834. }
  11835. ]
  11836. },
  11837. "LOWER": {
  11838. "d": "\u5C06\u6307\u5B9A\u5B57\u7B26\u4E32\u4E2D\u7684\u5B57\u6BCD\u8F6C\u6362\u4E3A\u5C0F\u5199\u3002",
  11839. "a": "\u5C06\u6307\u5B9A\u5B57\u7B26\u4E32\u4E2D\u7684\u5B57\u6BCD\u8F6C\u6362\u4E3A\u5C0F\u5199\u3002",
  11840. "p": [
  11841. {
  11842. "name": "text",
  11843. "detail": "\u8981\u8F6C\u6362\u4E3A\u5C0F\u5199\u7684\u5B57\u7B26\u4E32\u3002"
  11844. }
  11845. ]
  11846. },
  11847. "UPPER": {
  11848. "d": "\u5C06\u6307\u5B9A\u5B57\u7B26\u4E32\u4E2D\u7684\u5B57\u6BCD\u8F6C\u6362\u4E3A\u5927\u5199\u3002",
  11849. "a": "\u5C06\u6307\u5B9A\u5B57\u7B26\u4E32\u4E2D\u7684\u5B57\u6BCD\u8F6C\u6362\u4E3A\u5927\u5199\u3002",
  11850. "p": [
  11851. {
  11852. "name": "text",
  11853. "detail": "\u8981\u8F6C\u6362\u4E3A\u5927\u5199\u7684\u5B57\u7B26\u4E32\u3002"
  11854. }
  11855. ]
  11856. },
  11857. "EXACT": {
  11858. "d": "\u6BD4\u8F83\u4E24\u4E2A\u5B57\u7B26\u4E32\u662F\u5426\u76F8\u540C\u3002",
  11859. "a": "\u6BD4\u8F83\u4E24\u4E2A\u5B57\u7B26\u4E32\u662F\u5426\u76F8\u540C\u3002",
  11860. "p": [
  11861. {
  11862. "name": "text1",
  11863. "detail": "\u8981\u6BD4\u8F83\u7684\u7B2C\u4E00\u4E2A\u5B57\u7B26\u4E32\u3002"
  11864. },
  11865. {
  11866. "name": "text2",
  11867. "detail": "\u8981\u6BD4\u8F83\u7684\u7B2C\u4E8C\u4E2A\u5B57\u7B26\u4E32\u3002"
  11868. }
  11869. ]
  11870. },
  11871. "REPLACE": {
  11872. "d": "\u5C06\u6587\u672C\u5B57\u7B26\u4E32\u7684\u4E00\u90E8\u5206\u66FF\u6362\u4E3A\u5176\u4ED6\u6587\u672C\u5B57\u7B26\u4E32\u3002",
  11873. "a": "\u5C06\u6587\u672C\u5B57\u7B26\u4E32\u7684\u4E00\u90E8\u5206\u66FF\u6362\u4E3A\u5176\u4ED6\u6587\u672C\u5B57\u7B26\u4E32\u3002",
  11874. "p": [
  11875. {
  11876. "name": "old_text",
  11877. "detail": "\u8981\u5BF9\u5176\u5C40\u90E8\u8FDB\u884C\u66FF\u6362\u64CD\u4F5C\u7684\u6587\u672C\u3002"
  11878. },
  11879. {
  11880. "name": "start_num",
  11881. "detail": "\u5F00\u59CB\u8FDB\u884C\u66FF\u6362\u64CD\u4F5C\u7684\u4F4D\u7F6E\uFF08\u6587\u672C\u5F00\u5934\u4F4D\u7F6E\u4E3A 1\uFF09\u3002"
  11882. },
  11883. {
  11884. "name": "num_chars",
  11885. "detail": "\u8981\u5728\u6587\u672C\u4E2D\u66FF\u6362\u7684\u5B57\u7B26\u4E2A\u6570\u3002"
  11886. },
  11887. {
  11888. "name": "new_text",
  11889. "detail": "\u8981\u63D2\u5165\u5230\u539F\u6709\u6587\u672C\u4E2D\u7684\u6587\u672C\u3002"
  11890. }
  11891. ]
  11892. },
  11893. "REPT": {
  11894. "d": "\u8FD4\u56DE\u6307\u5B9A\u6587\u672C\u7684\u591A\u6B21\u91CD\u590D\u3002",
  11895. "a": "\u8FD4\u56DE\u6307\u5B9A\u6587\u672C\u7684\u591A\u6B21\u91CD\u590D\u3002",
  11896. "p": [
  11897. {
  11898. "name": "text",
  11899. "detail": "\u8981\u91CD\u590D\u7684\u5B57\u7B26\u6216\u5B57\u7B26\u4E32\u3002"
  11900. },
  11901. {
  11902. "name": "number_times",
  11903. "detail": "\u8981\u91CD\u590D\u7684\u6587\u672C\u8981\u5728\u8FD4\u56DE\u503C\u4E2D\u51FA\u73B0\u7684\u6B21\u6570\u3002\n\n\u6700\u5927\u91CD\u590D\u6B21\u6570\u4E3A100\u3002\u5373\u4F7F\u91CD\u590D\u6B21\u6570\u5927\u4E8E100\uFF0CREPT\u4E5F\u4EC5\u5C06\u76F8\u5E94\u6587\u672C\u91CD\u590D100\u6B21\u3002"
  11904. }
  11905. ]
  11906. },
  11907. "SEARCH": {
  11908. "d": "\u8FD4\u56DE\u5B57\u7B26\u4E32\u5728\u6587\u672C\u4E2D\u9996\u6B21\u51FA\u73B0\u7684\u4F4D\u7F6E\uFF08\u4E0D\u533A\u5206\u5927\u5C0F\u5199\uFF09\u3002",
  11909. "a": "\u8FD4\u56DE\u5B57\u7B26\u4E32\u5728\u6587\u672C\u4E2D\u9996\u6B21\u51FA\u73B0\u7684\u4F4D\u7F6E\uFF08\u4E0D\u533A\u5206\u5927\u5C0F\u5199\uFF09\u3002",
  11910. "p": [
  11911. {
  11912. "name": "find_text",
  11913. "detail": "\u8981\u5728\u8981\u641C\u7D22\u7684\u6587\u672C\u4E2D\u67E5\u627E\u7684\u5B57\u7B26\u4E32\u3002"
  11914. },
  11915. {
  11916. "name": "within_text",
  11917. "detail": "\u8981\u5728\u5176\u4E2D\u641C\u7D22\u641C\u7D22\u5B57\u7B26\u4E32\u7684\u9996\u6B21\u51FA\u73B0\u4F4D\u7F6E\u7684\u6587\u672C\u3002"
  11918. },
  11919. {
  11920. "name": "start_num",
  11921. "detail": "[ \u53EF\u9009 - \u9ED8\u8BA4\u503C\u4E3A1 ] - \u8981\u5728\u8981\u641C\u7D22\u7684\u6587\u672C\u4E2D\u5F00\u59CB\u641C\u7D22\u7684\u5B57\u7B26\u4F4D\u7F6E\u3002"
  11922. }
  11923. ]
  11924. },
  11925. "SUBSTITUTE": {
  11926. "d": "\u5728\u6587\u672C\u5B57\u7B26\u4E32\u4E2D\u7528 new_text \u66FF\u6362 old_text\u3002",
  11927. "a": "\u5728\u6587\u672C\u5B57\u7B26\u4E32\u4E2D\u7528 new_text \u66FF\u6362 old_text\u3002",
  11928. "p": [
  11929. {
  11930. "name": "text",
  11931. "detail": "\u9700\u8981\u66FF\u6362\u5176\u4E2D\u5B57\u7B26\u7684\u6587\u672C\uFF0C\u6216\u5BF9\u542B\u6709\u6587\u672C\uFF08\u9700\u8981\u66FF\u6362\u5176\u4E2D\u5B57\u7B26\uFF09\u7684\u5355\u5143\u683C\u7684\u5F15\u7528\u3002"
  11932. },
  11933. {
  11934. "name": "old_text",
  11935. "detail": "\u9700\u8981\u66FF\u6362\u7684\u6587\u672C\u3002"
  11936. },
  11937. {
  11938. "name": "new_text",
  11939. "detail": "\u7528\u4E8E\u66FF\u6362 old_text \u7684\u6587\u672C\u3002"
  11940. },
  11941. {
  11942. "name": "instance_num",
  11943. "detail": "[ \u53EF\u9009 ] - \u6307\u5B9A\u8981\u7528 new_text \u66FF\u6362 old_text \u7684\u4E8B\u4EF6\u3002 \u5982\u679C\u6307\u5B9A\u4E86 instance_num\uFF0C\u5219\u53EA\u6709\u6EE1\u8DB3\u8981\u6C42\u7684 old_text \u88AB\u66FF\u6362\u3002 \u5426\u5219\uFF0C\u6587\u672C\u4E2D\u51FA\u73B0\u7684\u6240\u6709 old_text \u90FD\u4F1A\u66F4\u6539\u4E3A new_text\u3002"
  11944. }
  11945. ]
  11946. },
  11947. "CLEAN": {
  11948. "d": "\u79FB\u9664\u6587\u672C\u4E2D\u7684\u4E0D\u53EF\u6253\u5370 ASCII \u5B57\u7B26\u540E\u5C06\u5176\u8FD4\u56DE\u3002",
  11949. "a": "\u79FB\u9664\u6587\u672C\u4E2D\u7684\u4E0D\u53EF\u6253\u5370 ASCII \u5B57\u7B26\u540E\u5C06\u5176\u8FD4\u56DE\u3002",
  11950. "p": [
  11951. {
  11952. "name": "text",
  11953. "detail": "\u8981\u79FB\u9664\u5176\u4E2D\u4E0D\u53EF\u6253\u5370\u5B57\u7B26\u7684\u6587\u672C\u3002"
  11954. }
  11955. ]
  11956. },
  11957. "TEXT": {
  11958. "d": "\u6309\u7167\u6307\u5B9A\u683C\u5F0F\u5C06\u6570\u5B57\u8F6C\u6362\u4E3A\u6587\u672C\u3002",
  11959. "a": "\u6309\u7167\u6307\u5B9A\u683C\u5F0F\u5C06\u6570\u5B57\u8F6C\u6362\u4E3A\u6587\u672C\u3002",
  11960. "p": [
  11961. {
  11962. "name": "value",
  11963. "detail": "\u8981\u8BBE\u7F6E\u683C\u5F0F\u7684\u6570\u5B57\u3001\u65E5\u671F\u6216\u65F6\u95F4\u3002"
  11964. },
  11965. {
  11966. "name": "format_text",
  11967. "detail": '\u4EE5\u62EC\u53F7\u62EC\u8D77\u6765\u7684\u6A21\u5F0F\u4E32\uFF0C\u5C06\u6309\u8BE5\u6A21\u5F0F\u8BBE\u7F6E\u6570\u5B57\u7684\u683C\u5F0F\u3002\n\n0\u8868\u793A\u5728\u6570\u503C\u4F4D\u6570\u5C11\u4E8E\u683C\u5F0F\u6307\u5B9A\u7684\u4F4D\u6570\u65F6\u5FC5\u5B9A\u4EE5\u96F6\u586B\u5145\u3002\u4F8B\u5982\uFF0CTEXT(12.3,"000.00")\u5C06\u8FD4\u56DE012.30\u3002\u5F53\u6570\u503C\u7684\u5C0F\u6570\u4F4D\u6570\u8D85\u8FC7\u6A21\u5F0F\u6307\u5B9A\u7684\u5C0F\u6570\u4F4D\u6570\u65F6\uFF0C\u56DB\u820D\u4E94\u5165\u4E3A\u6307\u5B9A\u7684\u5C0F\u6570\u4F4D\u6570\u3002\u4F8B\u5982\uFF0CTEXT(12.305,"00.00")\u5C06\u8FD4\u56DE12.31\u3002\n\n#\u7C7B\u4F3C\u4E8E0\uFF0C\u4F46\u5E76\u4E0D\u662F\u5728\u5C0F\u6570\u70B9\u7684\u4E24\u4FA7\u90FD\u4EE5\u96F6\u586B\u5145\u3002\u4F8B\u5982\uFF0CTEXT(12.3,"###.##")\u5C06\u8FD4\u56DE12.3\u3002'
  11968. }
  11969. ]
  11970. },
  11971. "TRIM": {
  11972. "d": "\u5220\u9664\u6307\u5B9A\u5B57\u7B26\u4E32\u524D\u540E\u7684\u7A7A\u683C\u3002",
  11973. "a": "\u5220\u9664\u6307\u5B9A\u5B57\u7B26\u4E32\u524D\u540E\u7684\u7A7A\u683C\u3002",
  11974. "p": [
  11975. {
  11976. "name": "text",
  11977. "detail": "\u8981\u4FEE\u526A\u7684\u5B57\u7B26\u4E32\u6216\u6307\u5411\u5305\u542B\u8BE5\u5B57\u7B26\u4E32\u7684\u5355\u5143\u683C\u7684\u5F15\u7528\u3002"
  11978. }
  11979. ]
  11980. },
  11981. "VALUE": {
  11982. "d": "\u5C06\u53EF\u8BC6\u522B\u7684\u4EFB\u4F55\u65E5\u671F\u3001\u65F6\u95F4\u6216\u6570\u5B57\u683C\u5F0F\u7684\u5B57\u7B26\u4E32\u8F6C\u6362\u4E3A\u6570\u5B57\u3002",
  11983. "a": "\u5C06\u53EF\u8BC6\u522B\u7684\u4EFB\u4F55\u65E5\u671F\u3001\u65F6\u95F4\u6216\u6570\u5B57\u683C\u5F0F\u7684\u5B57\u7B26\u4E32\u8F6C\u6362\u4E3A\u6570\u5B57\u3002",
  11984. "p": [
  11985. {
  11986. "name": "text",
  11987. "detail": "\u5305\u542B\u8981\u8F6C\u6362\u7684\u503C\u7684\u5B57\u7B26\u4E32\u3002"
  11988. }
  11989. ]
  11990. },
  11991. "PROPER": {
  11992. "d": "\u5C06\u6307\u5B9A\u5B57\u7B26\u4E32\u4E2D\u6BCF\u4E2A\u5355\u8BCD\u7684\u9996\u5B57\u6BCD\u8F6C\u4E3A\u5927\u5199\u3002",
  11993. "a": "\u5C06\u6307\u5B9A\u5B57\u7B26\u4E32\u4E2D\u6BCF\u4E2A\u5355\u8BCD\u7684\u9996\u5B57\u6BCD\u8F6C\u4E3A\u5927\u5199\u3002",
  11994. "p": [
  11995. {
  11996. "name": "text",
  11997. "detail": "\u8981\u8F6C\u6362\u7684\u6587\u672C\uFF0C\u5176\u4E2D\u6BCF\u4E2A\u5355\u8BCD\u7684\u9996\u5B57\u6BCD\u90FD\u5C06\u8F6C\u4E3A\u5927\u5199\uFF0C\u6240\u6709\u5176\u4ED6\u5B57\u6BCD\u5219\u8F6C\u4E3A\u5C0F\u5199\u3002"
  11998. }
  11999. ]
  12000. },
  12001. "CONVERT": {
  12002. "d": "\u5C06\u6570\u5B57\u4ECE\u4E00\u79CD\u5EA6\u91CF\u7CFB\u7EDF\u8F6C\u6362\u4E3A\u53E6\u4E00\u79CD\u5EA6\u91CF\u7CFB\u7EDF\u3002",
  12003. "a": "\u5C06\u6570\u5B57\u4ECE\u4E00\u79CD\u5EA6\u91CF\u7CFB\u7EDF\u8F6C\u6362\u4E3A\u53E6\u4E00\u79CD\u5EA6\u91CF\u7CFB\u7EDF\u3002",
  12004. "p": [
  12005. {
  12006. "name": "number",
  12007. "detail": "\u662F\u4EE5 from_unit \u4E3A\u5355\u4F4D\u7684\u9700\u8981\u8FDB\u884C\u8F6C\u6362\u7684\u6570\u503C\u3002"
  12008. },
  12009. {
  12010. "name": "from_unit",
  12011. "detail": "\u662F\u6570\u503C\u7684\u5355\u4F4D\u3002"
  12012. },
  12013. {
  12014. "name": "to_unit",
  12015. "detail": "\u662F\u7ED3\u679C\u7684\u5355\u4F4D\u3002"
  12016. }
  12017. ]
  12018. },
  12019. "SUMX2MY2": {
  12020. "d": "\u8FD4\u56DE\u4E24\u6570\u7EC4\u4E2D\u5BF9\u5E94\u6570\u503C\u7684\u5E73\u65B9\u5DEE\u4E4B\u548C\u3002",
  12021. "a": "\u8FD4\u56DE\u4E24\u6570\u7EC4\u4E2D\u5BF9\u5E94\u6570\u503C\u7684\u5E73\u65B9\u5DEE\u4E4B\u548C\u3002",
  12022. "p": [
  12023. {
  12024. "name": "array_x",
  12025. "detail": "\u7B2C\u4E00\u4E2A\u6570\u7EC4\u6216\u6570\u503C\u533A\u57DF\u3002"
  12026. },
  12027. {
  12028. "name": "array_y",
  12029. "detail": "\u7B2C\u4E8C\u4E2A\u6570\u7EC4\u6216\u6570\u503C\u533A\u57DF\u3002"
  12030. }
  12031. ]
  12032. },
  12033. "SUMX2PY2": {
  12034. "d": "\u8FD4\u56DE\u4E24\u6570\u7EC4\u4E2D\u5BF9\u5E94\u6570\u503C\u7684\u5E73\u65B9\u548C\u4E4B\u548C\u3002",
  12035. "a": "\u8FD4\u56DE\u4E24\u6570\u7EC4\u4E2D\u5BF9\u5E94\u6570\u503C\u7684\u5E73\u65B9\u548C\u4E4B\u548C\u3002",
  12036. "p": [
  12037. {
  12038. "name": "array_x",
  12039. "detail": "\u7B2C\u4E00\u4E2A\u6570\u7EC4\u6216\u6570\u503C\u533A\u57DF\u3002"
  12040. },
  12041. {
  12042. "name": "array_y",
  12043. "detail": "\u7B2C\u4E8C\u4E2A\u6570\u7EC4\u6216\u6570\u503C\u533A\u57DF\u3002"
  12044. }
  12045. ]
  12046. },
  12047. "SUMXMY2": {
  12048. "d": "\u8FD4\u56DE\u4E24\u6570\u7EC4\u4E2D\u5BF9\u5E94\u6570\u503C\u4E4B\u5DEE\u7684\u5E73\u65B9\u548C\u3002",
  12049. "a": "\u8FD4\u56DE\u4E24\u6570\u7EC4\u4E2D\u5BF9\u5E94\u6570\u503C\u4E4B\u5DEE\u7684\u5E73\u65B9\u548C\u3002",
  12050. "p": [
  12051. {
  12052. "name": "array_x",
  12053. "detail": "\u7B2C\u4E00\u4E2A\u6570\u7EC4\u6216\u6570\u503C\u533A\u57DF\u3002"
  12054. },
  12055. {
  12056. "name": "array_y",
  12057. "detail": "\u7B2C\u4E8C\u4E2A\u6570\u7EC4\u6216\u6570\u503C\u533A\u57DF\u3002"
  12058. }
  12059. ]
  12060. },
  12061. "TRANSPOSE": {
  12062. "d": "\u5C06\u6570\u7EC4\u6216\u5355\u5143\u683C\u8303\u56F4\u7684\u884C\u5217\u8F6C\u7F6E\u3002",
  12063. "a": "\u5C06\u6570\u7EC4\u6216\u5355\u5143\u683C\u8303\u56F4\u7684\u884C\u5217\u8F6C\u7F6E\u3002",
  12064. "p": [
  12065. {
  12066. "name": "array",
  12067. "detail": "\u8981\u5C06\u5176\u884C\u5217\u4E92\u6362\u7684\u6570\u7EC4\u6216\u8303\u56F4\u3002"
  12068. }
  12069. ]
  12070. },
  12071. "TREND": {
  12072. "d": "\u8FD4\u56DE\u7EBF\u6027\u8D8B\u52BF\u503C\u3002",
  12073. "a": "\u8FD4\u56DE\u7EBF\u6027\u8D8B\u52BF\u503C\u3002",
  12074. "p": [
  12075. {
  12076. "name": "known_y",
  12077. "detail": "\u5173\u7CFB\u8868\u8FBE\u5F0F y = mx + b \u4E2D\u5DF2\u77E5\u7684 y \u503C\u96C6\u5408\u3002\n\n\u5982\u679C known_y \u4E3A\u4E8C\u7EF4\u6570\u7EC4\u6216\u8303\u56F4\uFF0C\u5219 known_x \u7684\u7EF4\u6570\u5FC5\u987B\u4E0E\u4E4B\u76F8\u540C\uFF0C\u6216\u8005\u7701\u7565\u6B64\u53C2\u6570\u3002\n\n\u5982\u679C known_y \u4E3A\u4E00\u7EF4\u6570\u7EC4\u6216\u8303\u56F4\uFF0Cknown_x \u5219\u53EF\u4EE3\u8868\u4E8C\u7EF4\u6570\u7EC4\u6216\u8303\u56F4\u4E2D\u7684\u591A\u4E2A\u81EA\u53D8\u91CF\u3002\u4E5F\u5C31\u662F\u8BF4\uFF0C\u5982\u679C known_y \u4E3A\u5355\u884C\uFF0C\u5219\u5C06 known_x \u4E2D\u7684\u6BCF\u884C\u89E3\u91CA\u4E3A\u5404\u81EA\u72EC\u7ACB\u7684\u503C\uFF0C\u7C7B\u4F3C\u60C5\u51B5\u4E5F\u9002\u7528\u4E8E known_y \u4E3A\u5355\u5217\u7684\u60C5\u51B5\u3002"
  12078. },
  12079. {
  12080. "name": "known_x",
  12081. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u8BE5\u6570\u7EC4\u4E3A{1,2,3,...},\u5176\u5927\u5C0F\u4E0E known_y \u76F8\u540C] - \u5173\u7CFB\u8868\u8FBE\u5F0F y = mx + b \u4E2D\u5DF2\u77E5\u7684\u53EF\u9009 x \u503C\u96C6\u5408\u3002\n\n\u5982\u679C known_y \u4E3A\u4E00\u7EF4\u6570\u7EC4\u6216\u8303\u56F4\uFF0Cknown_x \u5219\u53EF\u4EE3\u8868\u4E8C\u7EF4\u6570\u7EC4\u6216\u8303\u56F4\u4E2D\u7684\u591A\u4E2A\u81EA\u53D8\u91CF\u3002\u4E5F\u5C31\u662F\u8BF4\uFF0C\u5982\u679C known_y \u4E3A\u5355\u884C\uFF0C\u5219\u5C06 known_x \u4E2D\u7684\u6BCF\u884C\u89E3\u91CA\u4E3A\u5404\u81EA\u72EC\u7ACB\u7684\u503C\uFF0C\u7C7B\u4F3C\u60C5\u51B5\u4E5F\u9002\u7528\u4E8E known_y \u4E3A\u5355\u5217\u7684\u60C5\u51B5\u3002"
  12082. },
  12083. {
  12084. "name": "new_x",
  12085. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u4E0E known_x \u76F8\u540C] - \u9700\u8981\u51FD\u6570 TREND \u8FD4\u56DE\u5BF9\u5E94 y \u503C\u7684\u65B0 x \u503C\u3002"
  12086. },
  12087. {
  12088. "name": "const",
  12089. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u503C\u4E3ATRUE()] - \u4E00\u4E2A\u903B\u8F91\u503C\uFF0C\u7528\u4E8E\u6307\u5B9A\u662F\u5426\u5C06\u5E38\u91CF b \u5F3A\u5236\u8BBE\u4E3A 0\u3002\n\nTRUE() \u8868\u793A b \u5C06\u6309\u6B63\u5E38\u8BA1\u7B97\uFF1B\n\nFALSE() \u8868\u793A b \u5C06\u88AB\u8BBE\u4E3A 0\uFF08\u96F6\uFF09\uFF0Cm \u5C06\u88AB\u8C03\u6574\u4EE5\u4F7F y = mx\u3002"
  12090. }
  12091. ]
  12092. },
  12093. "FREQUENCY": {
  12094. "d": "\u8BA1\u7B97\u6570\u503C\u5728\u67D0\u4E2A\u533A\u57DF\u5185\u7684\u51FA\u73B0\u9891\u7387\uFF0C\u7136\u540E\u8FD4\u56DE\u4E00\u4E2A\u5782\u76F4\u6570\u7EC4\u3002",
  12095. "a": "\u8BA1\u7B97\u6570\u503C\u5728\u67D0\u4E2A\u533A\u57DF\u5185\u7684\u51FA\u73B0\u9891\u7387\uFF0C\u7136\u540E\u8FD4\u56DE\u4E00\u4E2A\u5782\u76F4\u6570\u7EC4\u3002",
  12096. "p": [
  12097. {
  12098. "name": "data_array",
  12099. "detail": "\u8981\u5BF9\u5176\u9891\u7387\u8FDB\u884C\u8BA1\u6570\u7684\u4E00\u7EC4\u6570\u503C\u6216\u5BF9\u8FD9\u7EC4\u6570\u503C\u7684\u5F15\u7528\u3002"
  12100. },
  12101. {
  12102. "name": "bins_array",
  12103. "detail": "\u8981\u5C06 data_array \u4E2D\u7684\u503C\u63D2\u5165\u5230\u7684\u95F4\u9694\u6570\u7EC4\u6216\u5BF9\u95F4\u9694\u7684\u5F15\u7528\u3002\n\n\u4E3A\u6E05\u6670\u8D77\u89C1\uFF0C\u5E94\u5C06\u7C7B\u522B\u6392\u5E8F\uFF0C\u4F46\u5982\u679C\u672A\u6392\u5E8F\uFF0CFREQUENCY\u4F1A\u5728\u5185\u90E8\u5BF9\u8FD9\u4E9B\u6307\u5B9A\u7684\u503C\u8FDB\u884C\u6392\u5E8F\u5E76\u8FD4\u56DE\u6B63\u786E\u7ED3\u679C\u3002"
  12104. }
  12105. ]
  12106. },
  12107. "GROWTH": {
  12108. "d": "\u4F7F\u7528\u73B0\u6709\u6570\u636E\u8BA1\u7B97\u9884\u6D4B\u7684\u6307\u6570\u7B49\u6BD4\u3002",
  12109. "a": "\u4F7F\u7528\u73B0\u6709\u6570\u636E\u8BA1\u7B97\u9884\u6D4B\u7684\u6307\u6570\u7B49\u6BD4\u3002",
  12110. "p": [
  12111. {
  12112. "name": "known_y",
  12113. "detail": "\u5173\u7CFB\u8868\u8FBE\u5F0F y = b*m^x \u4E2D\u5DF2\u77E5\u7684 y \u503C\u96C6\u5408\u3002\n\n\u5982\u679C\u5DF2\u77E5\u6570\u636E_y\u4E3A\u4E8C\u7EF4\u6570\u7EC4\u6216\u8303\u56F4\uFF0C\u5219\u5DF2\u77E5\u6570\u636E_x\u7684\u7EF4\u6570\u5FC5\u987B\u4E0E\u4E4B\u76F8\u540C\uFF0C\u6216\u8005\u7701\u7565\u6B64\u53C2\u6570\u3002\n\n\u5982\u679C\u5DF2\u77E5\u6570\u636E_y\u4E3A\u4E00\u7EF4\u6570\u7EC4\u6216\u8303\u56F4\uFF0C\u5DF2\u77E5\u6570\u636E_x\u5219\u53EF\u4EE3\u8868\u4E8C\u7EF4\u6570\u7EC4\u6216\u8303\u56F4\u4E2D\u7684\u591A\u4E2A\u81EA\u53D8\u91CF\u3002\u4E5F\u5C31\u662F\u8BF4\uFF0C\u5982\u679C\u5DF2\u77E5\u6570\u636E_y\u4E3A\u5355\u884C\uFF0C\u5219\u5C06\u5DF2\u77E5\u6570\u636E_x\u4E2D\u7684\u6BCF\u884C\u89E3\u91CA\u4E3A\u5404\u81EA\u72EC\u7ACB\u7684\u503C\uFF0C\u7C7B\u4F3C\u60C5\u51B5\u4E5F\u9002\u7528\u4E8E\u5DF2\u77E5\u6570\u636E_y\u4E3A\u5355\u5217\u7684\u60C5\u51B5\u3002"
  12114. },
  12115. {
  12116. "name": "known_x",
  12117. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u8BE5\u6570\u7EC4\u4E3A{1,2,3,...},\u5176\u5927\u5C0F\u4E0E known_y \u76F8\u540C] - \u5173\u7CFB\u8868\u8FBE\u5F0F y = b*m^x \u4E2D\u5DF2\u77E5\u7684\u53EF\u9009 x \u503C\u96C6\u5408\u3002\n\n\u5982\u679C\u5DF2\u77E5\u6570\u636E_y\u4E3A\u4E00\u7EF4\u6570\u7EC4\u6216\u8303\u56F4\uFF0C\u5DF2\u77E5\u6570\u636E_x\u5219\u53EF\u4EE3\u8868\u4E8C\u7EF4\u6570\u7EC4\u6216\u8303\u56F4\u4E2D\u7684\u591A\u4E2A\u81EA\u53D8\u91CF\u3002\u4E5F\u5C31\u662F\u8BF4\uFF0C\u5982\u679C\u5DF2\u77E5\u6570\u636E_y\u4E3A\u5355\u884C\uFF0C\u5219\u5C06\u5DF2\u77E5\u6570\u636E_x\u4E2D\u7684\u6BCF\u884C\u89E3\u91CA\u4E3A\u5404\u81EA\u72EC\u7ACB\u7684\u503C\uFF0C\u7C7B\u4F3C\u60C5\u51B5\u4E5F\u9002\u7528\u4E8E\u5DF2\u77E5\u6570\u636E_y\u4E3A\u5355\u5217\u7684\u60C5\u51B5\u3002"
  12118. },
  12119. {
  12120. "name": "new_x",
  12121. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u4E0E known_x \u76F8\u540C] - \u9700\u8981\u51FD\u6570 GROWTH \u8FD4\u56DE\u5BF9\u5E94 y \u503C\u7684\u65B0 x \u503C\u3002"
  12122. },
  12123. {
  12124. "name": "const",
  12125. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u503C\u4E3ATRUE()] -\u4E00\u4E2A\u903B\u8F91\u503C\uFF0C\u7528\u4E8E\u6307\u5B9A\u662F\u5426\u5C06\u5E38\u91CF b \u5F3A\u5236\u8BBE\u4E3A 1\u3002\n\nTRUE() \u8868\u793A b \u5C06\u6309\u6B63\u5E38\u8BA1\u7B97\uFF1B\n\nFALSE() \u8868\u793A b \u5C06\u88AB\u8BBE\u4E3A 1\uFF0Cm \u5C06\u88AB\u8C03\u6574\u4EE5\u4F7F y = m^x\u3002"
  12126. }
  12127. ]
  12128. },
  12129. "LINEST": {
  12130. "d": "\u53EF\u901A\u8FC7\u4F7F\u7528\u6700\u5C0F\u4E8C\u4E58\u6CD5\u8BA1\u7B97\u4E0E\u73B0\u6709\u6570\u636E\u6700\u4F73\u62DF\u5408\u7684\u76F4\u7EBF\uFF0C\u6765\u8BA1\u7B97\u67D0\u76F4\u7EBF\u7684\u7EDF\u8BA1\u503C\uFF0C\u7136\u540E\u8FD4\u56DE\u63CF\u8FF0\u6B64\u76F4\u7EBF\u7684\u6570\u7EC4\u3002",
  12131. "a": "\u53EF\u901A\u8FC7\u4F7F\u7528\u6700\u5C0F\u4E8C\u4E58\u6CD5\u8BA1\u7B97\u4E0E\u73B0\u6709\u6570\u636E\u6700\u4F73\u62DF\u5408\u7684\u76F4\u7EBF\uFF0C\u6765\u8BA1\u7B97\u67D0\u76F4\u7EBF\u7684\u7EDF\u8BA1\u503C\uFF0C\u7136\u540E\u8FD4\u56DE\u63CF\u8FF0\u6B64\u76F4\u7EBF\u7684\u6570\u7EC4\u3002",
  12132. "p": [
  12133. {
  12134. "name": "known_y",
  12135. "detail": "\u5173\u7CFB\u8868\u8FBE\u5F0F y = mx + b \u4E2D\u5DF2\u77E5\u7684 y \u503C\u96C6\u5408\u3002\n\n\u5982\u679C known_y \u4E3A\u4E8C\u7EF4\u6570\u7EC4\u6216\u8303\u56F4\uFF0C\u5219 known_x \u7684\u7EF4\u6570\u5FC5\u987B\u4E0E\u4E4B\u76F8\u540C\uFF0C\u6216\u8005\u7701\u7565\u6B64\u53C2\u6570\u3002\n\n\u5982\u679C known_y \u4E3A\u4E00\u7EF4\u6570\u7EC4\u6216\u8303\u56F4\uFF0Cknown_x \u5219\u53EF\u4EE3\u8868\u4E8C\u7EF4\u6570\u7EC4\u6216\u8303\u56F4\u4E2D\u7684\u591A\u4E2A\u81EA\u53D8\u91CF\u3002\u4E5F\u5C31\u662F\u8BF4\uFF0C\u5982\u679C known_y \u4E3A\u5355\u884C\uFF0C\u5219\u5C06 known_x \u4E2D\u7684\u6BCF\u884C\u89E3\u91CA\u4E3A\u5404\u81EA\u72EC\u7ACB\u7684\u503C\uFF0C\u7C7B\u4F3C\u60C5\u51B5\u4E5F\u9002\u7528\u4E8E known_y \u4E3A\u5355\u5217\u7684\u60C5\u51B5\u3002"
  12136. },
  12137. {
  12138. "name": "known_x",
  12139. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u8BE5\u6570\u7EC4\u4E3A{1,2,3,...},\u5176\u5927\u5C0F\u4E0E known_y \u76F8\u540C] - \u5173\u7CFB\u8868\u8FBE\u5F0F y = mx + b \u4E2D\u5DF2\u77E5\u7684\u53EF\u9009 x \u503C\u96C6\u5408\u3002\n\n\u5982\u679C known_y \u4E3A\u4E00\u7EF4\u6570\u7EC4\u6216\u8303\u56F4\uFF0Cknown_x \u5219\u53EF\u4EE3\u8868\u4E8C\u7EF4\u6570\u7EC4\u6216\u8303\u56F4\u4E2D\u7684\u591A\u4E2A\u81EA\u53D8\u91CF\u3002\u4E5F\u5C31\u662F\u8BF4\uFF0C\u5982\u679C known_y \u4E3A\u5355\u884C\uFF0C\u5219\u5C06 known_x \u4E2D\u7684\u6BCF\u884C\u89E3\u91CA\u4E3A\u5404\u81EA\u72EC\u7ACB\u7684\u503C\uFF0C\u7C7B\u4F3C\u60C5\u51B5\u4E5F\u9002\u7528\u4E8E known_y \u4E3A\u5355\u5217\u7684\u60C5\u51B5\u3002"
  12140. },
  12141. {
  12142. "name": "const",
  12143. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u503C\u4E3ATRUE()] - \u4E00\u4E2A\u903B\u8F91\u503C\uFF0C\u7528\u4E8E\u6307\u5B9A\u662F\u5426\u5C06\u5E38\u91CF b \u5F3A\u5236\u8BBE\u4E3A 0\u3002\n\nTRUE() \u8868\u793A b \u5C06\u6309\u6B63\u5E38\u8BA1\u7B97\uFF1B\n\nFALSE() \u8868\u793A b \u5C06\u88AB\u8BBE\u4E3A 0\uFF08\u96F6\uFF09\uFF0Cm \u5C06\u88AB\u8C03\u6574\u4EE5\u4F7F y = mx\u3002"
  12144. },
  12145. {
  12146. "name": "stats",
  12147. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u503C\u4E3AFALSE()] - \u4E00\u4E2A\u903B\u8F91\u503C\uFF0C\u7528\u4E8E\u6307\u5B9A\u662F\u5426\u8FD4\u56DE\u9644\u52A0\u56DE\u5F52\u7EDF\u8BA1\u503C\u3002\n\n\u5982\u679C\u8BE6\u7EC6\u4E3ATRUE\uFF0C\u9664\u4E86\u5BF9\u5E94\u4E8E\u6BCF\u4E2A\u81EA\u53D8\u91CF\u7684\u4E00\u7EC4\u7EBF\u6027\u7CFB\u6570\u548Cy\u622A\u8DDD\u4E4B\u5916\uFF0CLINEST\u8FD8\u8FD4\u56DE\u4EE5\u4E0B\u4FE1\u606F\uFF1A\n\n\u6BCF\u9879\u7CFB\u6570\u548C\u622A\u8DDD\u7684\u6807\u51C6\u8BEF\u5DEE\u3001\n\n\u9650\u5B9A\u7CFB\u6570\uFF08\u4ECB\u4E8E0\u548C1\u4E4B\u95F4\uFF0C1\u8868\u793A\u5B8C\u5168\u76F8\u5173\uFF09\u3001\n\n\u56E0\u53D8\u91CF\u503C\u7684\u6807\u51C6\u8BEF\u5DEE\u3001\n\nF\u7EDF\u8BA1\u6216F\u89C2\u6D4B\u503C\uFF0C\u6307\u793A\u6240\u89C2\u6D4B\u5230\u7684\u56E0\u53D8\u91CF\u548C\u81EA\u53D8\u91CF\u53D8\u91CF\u4E4B\u95F4\u7684\u5173\u7CFB\u662F\u968F\u673A\u7684\u8FD8\u662F\u7EBF\u6027\u7684\u3001\n\n\u81EA\u7531\u5EA6\uFF0C\u7528\u4E8E\u5728\u53C2\u7167\u8868\u4E2D\u67E5\u627EF\u7EDF\u8BA1\u503C\u4EE5\u4F30\u7B97\u53EF\u4FE1\u5EA6\u3001\n\n\u56DE\u5F52\u5E73\u65B9\u548C\uFF0C\u4EE5\u53CA\n\n\u6B8B\u5DEE\u5E73\u65B9\u548C\u3002"
  12148. }
  12149. ]
  12150. },
  12151. "LOGEST": {
  12152. "d": "\u5728\u56DE\u5F52\u5206\u6790\u4E2D\uFF0C\u8BA1\u7B97\u6700\u7B26\u5408\u6570\u636E\u7684\u6307\u6570\u56DE\u5F52\u62DF\u5408\u66F2\u7EBF\uFF0C\u5E76\u8FD4\u56DE\u63CF\u8FF0\u8BE5\u66F2\u7EBF\u7684\u6570\u503C\u6570\u7EC4\u3002",
  12153. "a": "\u5728\u56DE\u5F52\u5206\u6790\u4E2D\uFF0C\u8BA1\u7B97\u6700\u7B26\u5408\u6570\u636E\u7684\u6307\u6570\u56DE\u5F52\u62DF\u5408\u66F2\u7EBF\uFF0C\u5E76\u8FD4\u56DE\u63CF\u8FF0\u8BE5\u66F2\u7EBF\u7684\u6570\u503C\u6570\u7EC4\u3002",
  12154. "p": [
  12155. {
  12156. "name": "known_y",
  12157. "detail": "\u5173\u7CFB\u8868\u8FBE\u5F0F y = mx + b \u4E2D\u5DF2\u77E5\u7684 y \u503C\u96C6\u5408\u3002\n\n\u5982\u679C known_y \u4E3A\u4E8C\u7EF4\u6570\u7EC4\u6216\u8303\u56F4\uFF0C\u5219 known_x \u7684\u7EF4\u6570\u5FC5\u987B\u4E0E\u4E4B\u76F8\u540C\uFF0C\u6216\u8005\u7701\u7565\u6B64\u53C2\u6570\u3002\n\n\u5982\u679C known_y \u4E3A\u4E00\u7EF4\u6570\u7EC4\u6216\u8303\u56F4\uFF0Cknown_x \u5219\u53EF\u4EE3\u8868\u4E8C\u7EF4\u6570\u7EC4\u6216\u8303\u56F4\u4E2D\u7684\u591A\u4E2A\u81EA\u53D8\u91CF\u3002\u4E5F\u5C31\u662F\u8BF4\uFF0C\u5982\u679C known_y \u4E3A\u5355\u884C\uFF0C\u5219\u5C06 known_x \u4E2D\u7684\u6BCF\u884C\u89E3\u91CA\u4E3A\u5404\u81EA\u72EC\u7ACB\u7684\u503C\uFF0C\u7C7B\u4F3C\u60C5\u51B5\u4E5F\u9002\u7528\u4E8E known_y \u4E3A\u5355\u5217\u7684\u60C5\u51B5\u3002"
  12158. },
  12159. {
  12160. "name": "known_x",
  12161. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u8BE5\u6570\u7EC4\u4E3A{1,2,3,...},\u5176\u5927\u5C0F\u4E0E known_y \u76F8\u540C] - \u5173\u7CFB\u8868\u8FBE\u5F0F y = mx + b \u4E2D\u5DF2\u77E5\u7684\u53EF\u9009 x \u503C\u96C6\u5408\u3002\n\n\u5982\u679C known_y \u4E3A\u4E00\u7EF4\u6570\u7EC4\u6216\u8303\u56F4\uFF0Cknown_x \u5219\u53EF\u4EE3\u8868\u4E8C\u7EF4\u6570\u7EC4\u6216\u8303\u56F4\u4E2D\u7684\u591A\u4E2A\u81EA\u53D8\u91CF\u3002\u4E5F\u5C31\u662F\u8BF4\uFF0C\u5982\u679C known_y \u4E3A\u5355\u884C\uFF0C\u5219\u5C06 known_x \u4E2D\u7684\u6BCF\u884C\u89E3\u91CA\u4E3A\u5404\u81EA\u72EC\u7ACB\u7684\u503C\uFF0C\u7C7B\u4F3C\u60C5\u51B5\u4E5F\u9002\u7528\u4E8E known_y \u4E3A\u5355\u5217\u7684\u60C5\u51B5\u3002"
  12162. },
  12163. {
  12164. "name": "const",
  12165. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u503C\u4E3ATRUE()] - \u4E00\u4E2A\u903B\u8F91\u503C\uFF0C\u7528\u4E8E\u6307\u5B9A\u662F\u5426\u5C06\u5E38\u91CF b \u5F3A\u5236\u8BBE\u4E3A 0\u3002\n\nTRUE() \u8868\u793A b \u5C06\u6309\u6B63\u5E38\u8BA1\u7B97\uFF1B\n\nFALSE() \u8868\u793A b \u5C06\u88AB\u8BBE\u4E3A 0\uFF08\u96F6\uFF09\uFF0Cm \u5C06\u88AB\u8C03\u6574\u4EE5\u4F7F y = mx\u3002"
  12166. },
  12167. {
  12168. "name": "stats",
  12169. "detail": "[\u53EF\u9009 - \u9ED8\u8BA4\u503C\u4E3AFALSE()] - \u4E00\u4E2A\u903B\u8F91\u503C\uFF0C\u7528\u4E8E\u6307\u5B9A\u662F\u5426\u8FD4\u56DE\u9644\u52A0\u56DE\u5F52\u7EDF\u8BA1\u503C\u3002\n\n\u5982\u679C\u8BE6\u7EC6\u4E3ATRUE\uFF0C\u5219\u9664\u4E86\u4E3A\u6BCF\u4E2A\u81EA\u53D8\u91CF\u548C\u7CFB\u6570 b \u8FD4\u56DE\u4E00\u7EC4\u6307\u6570\u503C\u4E4B\u5916\uFF0CLOGEST \u8FD8\u5C06\u8FD4\u56DE\u4EE5\u4E0B\u6570\u636E\uFF1A\n\n\u6BCF\u9879\u6307\u6570\u548C\u7CFB\u6570\u7684\u6807\u51C6\u8BEF\u5DEE\u3001\n\n\u9650\u5B9A\u7CFB\u6570\uFF08\u4ECB\u4E8E 0 \u548C 1 \u4E4B\u95F4\uFF0C1 \u8868\u793A\u5B8C\u5168\u76F8\u5173\uFF09\u3001\n\n\u56E0\u53D8\u91CF\u503C\u7684\u6807\u51C6\u8BEF\u5DEE\u3001\n\nF \u7EDF\u8BA1\u6216 F \u89C2\u6D4B\u503C\uFF0C\u6307\u793A\u6240\u89C2\u6D4B\u5230\u7684\u56E0\u53D8\u91CF\u548C\u81EA\u53D8\u91CF\u4E4B\u95F4\u7684\u5173\u7CFB\u662F\u968F\u673A\u7684\u8FD8\u662F\u6307\u6570\u7684\u3001\n\n\u81EA\u7531\u5EA6 - \u7528\u4E8E\u5728\u53C2\u7167\u8868\u4E2D\u67E5\u627E F \u7EDF\u8BA1\u503C\u4EE5\u4F30\u7B97\u53EF\u4FE1\u5EA6\u3001\n\n\u56DE\u5F52\u5E73\u65B9\u548C\uFF0C\u4EE5\u53CA\n\n\u6B8B\u5DEE\u5E73\u65B9\u548C\u3002"
  12170. }
  12171. ]
  12172. },
  12173. "MDETERM": {
  12174. "d": "\u8FD4\u56DE\u4E00\u4E2A\u6570\u7EC4\u7684\u77E9\u9635\u884C\u5217\u5F0F\u7684\u503C\u3002",
  12175. "a": "\u8FD4\u56DE\u4E00\u4E2A\u6570\u7EC4\u7684\u77E9\u9635\u884C\u5217\u5F0F\u7684\u503C\u3002",
  12176. "p": [
  12177. {
  12178. "name": "array",
  12179. "detail": "\u884C\u6570\u548C\u5217\u6570\u76F8\u7B49\u7684\u6570\u503C\u6570\u7EC4\u3002"
  12180. }
  12181. ]
  12182. },
  12183. "MINVERSE": {
  12184. "d": "\u8FD4\u56DE\u6570\u7EC4\u4E2D\u5B58\u50A8\u7684\u77E9\u9635\u7684\u9006\u77E9\u9635\u3002",
  12185. "a": "\u8FD4\u56DE\u6570\u7EC4\u4E2D\u5B58\u50A8\u7684\u77E9\u9635\u7684\u9006\u77E9\u9635\u3002",
  12186. "p": [
  12187. {
  12188. "name": "array",
  12189. "detail": "\u884C\u6570\u548C\u5217\u6570\u76F8\u7B49\u7684\u6570\u503C\u6570\u7EC4\u3002"
  12190. }
  12191. ]
  12192. },
  12193. "MMULT": {
  12194. "d": "\u8FD4\u56DE\u4E24\u4E2A\u6570\u7EC4\u7684\u77E9\u9635\u4E58\u79EF\u3002\u7ED3\u679C\u77E9\u9635\u7684\u884C\u6570\u4E0E array1 \u7684\u884C\u6570\u76F8\u540C\uFF0C\u77E9\u9635\u7684\u5217\u6570\u4E0E array2 \u7684\u5217\u6570\u76F8\u540C\u3002",
  12195. "a": "\u8FD4\u56DE\u4E24\u4E2A\u6570\u7EC4\u7684\u77E9\u9635\u4E58\u79EF\u3002\u7ED3\u679C\u77E9\u9635\u7684\u884C\u6570\u4E0E array1 \u7684\u884C\u6570\u76F8\u540C\uFF0C\u77E9\u9635\u7684\u5217\u6570\u4E0E array2 \u7684\u5217\u6570\u76F8\u540C\u3002",
  12196. "p": [
  12197. {
  12198. "name": "array1",
  12199. "detail": "\u8981\u8FDB\u884C\u77E9\u9635\u4E58\u6CD5\u8FD0\u7B97\u7684\u7B2C\u4E00\u4E2A\u77E9\u9635\u6570\u7EC4\u3002\n\narray1 \u5217\u6570\u5FC5\u987B\u4E0E array2 \u7684\u884C\u6570\u76F8\u540C"
  12200. },
  12201. {
  12202. "name": "array2",
  12203. "detail": "\u8981\u8FDB\u884C\u77E9\u9635\u4E58\u6CD5\u8FD0\u7B97\u7684\u7B2C\u4E8C\u4E2A\u77E9\u9635\u6570\u7EC4\u3002\n\narray2 \u7684\u884C\u6570\u5FC5\u987B\u4E0E array1 \u5217\u6570\u76F8\u540C"
  12204. }
  12205. ]
  12206. },
  12207. "SUMPRODUCT": {
  12208. "d": "\u5728\u7ED9\u5B9A\u7684\u51E0\u7EC4\u6570\u7EC4\u4E2D\uFF0C\u5C06\u6570\u7EC4\u95F4\u5BF9\u5E94\u7684\u5143\u7D20\u76F8\u4E58\uFF0C\u5E76\u8FD4\u56DE\u4E58\u79EF\u4E4B\u548C\u3002",
  12209. "a": "\u5728\u7ED9\u5B9A\u7684\u51E0\u7EC4\u6570\u7EC4\u4E2D\uFF0C\u5C06\u6570\u7EC4\u95F4\u5BF9\u5E94\u7684\u5143\u7D20\u76F8\u4E58\uFF0C\u5E76\u8FD4\u56DE\u4E58\u79EF\u4E4B\u548C\u3002",
  12210. "p": [
  12211. {
  12212. "name": "array1",
  12213. "detail": "\u5176\u76F8\u5E94\u5143\u7D20\u9700\u8981\u8FDB\u884C\u76F8\u4E58\u5E76\u6C42\u548C\u7684\u7B2C\u4E00\u4E2A\u6570\u7EC4\u53C2\u6570\u3002"
  12214. },
  12215. {
  12216. "name": "array2",
  12217. "detail": "[\u53EF\u9009] - \u5176\u76F8\u5E94\u5143\u7D20\u9700\u8981\u8FDB\u884C\u76F8\u4E58\u5E76\u6C42\u548C\u7684\u5176\u5B83\u6570\u7EC4\u53C2\u6570\u3002"
  12218. }
  12219. ]
  12220. },
  12221. "ISFORMULA": {
  12222. "d": "\u68C0\u67E5\u516C\u5F0F\u662F\u5426\u4F4D\u4E8E\u5F15\u7528\u7684\u5355\u5143\u683C\u4E2D\u3002",
  12223. "a": "\u68C0\u67E5\u516C\u5F0F\u662F\u5426\u4F4D\u4E8E\u5F15\u7528\u7684\u5355\u5143\u683C\u4E2D\u3002",
  12224. "p": [
  12225. {
  12226. "name": "cell",
  12227. "detail": "\u8981\u68C0\u67E5\u662F\u5426\u5B58\u5728\u516C\u5F0F\u7684\u5355\u5143\u683C\u3002\n\n\u5982\u679C cell \u4E3A\u5305\u542B\u516C\u5F0F\u7684\u5355\u5143\u683C\uFF0C\u5219 ISFORMULA \u5C06\u8FD4\u56DE TRUE\u3002\u5982\u679C cell \u4E3A\u76F8\u5E94\u5355\u5143\u683C\u8303\u56F4\uFF0C\u5219\u5F53\u8BE5\u8303\u56F4\u5185\u7684\u9996\u4E2A\u5355\u5143\u683C\u5305\u542B\u516C\u5F0F\u65F6\uFF0C\u7CFB\u7EDF\u4F1A\u8FD4\u56DE TRUE\u3002\u5982\u679C\u662F\u4EFB\u4F55\u5176\u4ED6\u503C\uFF0C\u7CFB\u7EDF\u90FD\u5C06\u8FD4\u56DE FALSE\u3002"
  12228. }
  12229. ]
  12230. },
  12231. "CELL": {
  12232. "d": "\u8FD4\u56DE\u6709\u5173\u5355\u5143\u683C\u7684\u683C\u5F0F\u3001\u4F4D\u7F6E\u6216\u5185\u5BB9\u7684\u4FE1\u606F\u3002",
  12233. "a": "\u8FD4\u56DE\u6709\u5173\u5355\u5143\u683C\u7684\u683C\u5F0F\u3001\u4F4D\u7F6E\u6216\u5185\u5BB9\u7684\u4FE1\u606F\u3002",
  12234. "p": [
  12235. {
  12236. "name": "info_type",
  12237. "detail": "\u4E00\u4E2A\u6587\u672C\u503C\uFF0C\u6307\u5B9A\u8981\u8FD4\u56DE\u7684\u5355\u5143\u683C\u4FE1\u606F\u7684\u7C7B\u578B\u3002"
  12238. },
  12239. {
  12240. "name": "reference",
  12241. "detail": "\u9700\u8981\u5176\u76F8\u5173\u4FE1\u606F\u7684\u5355\u5143\u683C\u3002"
  12242. }
  12243. ]
  12244. },
  12245. "NA": {
  12246. "d": "\u8FD4\u56DE\u9519\u8BEF\u503C #N/A\u3002",
  12247. "a": "\u8FD4\u56DE\u9519\u8BEF\u503C #N/A\u3002",
  12248. "p": []
  12249. },
  12250. "ERROR_TYPE": {
  12251. "d": "\u8FD4\u56DE\u4E0E\u5176\u4ED6\u5355\u5143\u683C\u4E2D\u7684\u9519\u8BEF\u503C\u76F8\u5BF9\u5E94\u7684\u6570\u5B57\u3002",
  12252. "a": "\u8FD4\u56DE\u4E0E\u5176\u4ED6\u5355\u5143\u683C\u4E2D\u7684\u9519\u8BEF\u503C\u76F8\u5BF9\u5E94\u7684\u6570\u5B57\u3002",
  12253. "p": [
  12254. {
  12255. "name": "error_val",
  12256. "detail": "\u7528\u4E8E\u67E5\u627E\u9519\u8BEF\u53F7\u7684\u5355\u5143\u683C\uFF0C\u867D\u7136\u60A8\u4E5F\u53EF\u4EE5\u76F4\u63A5\u63D0\u4F9B\u9519\u8BEF\u503C\u3002"
  12257. }
  12258. ]
  12259. },
  12260. "ISBLANK": {
  12261. "d": "\u68C0\u67E5\u6240\u5F15\u7528\u7684\u5355\u5143\u683C\u662F\u5426\u4E3A\u7A7A\u3002",
  12262. "a": "\u68C0\u67E5\u6240\u5F15\u7528\u7684\u5355\u5143\u683C\u662F\u5426\u4E3A\u7A7A\u3002",
  12263. "p": [
  12264. {
  12265. "name": "value",
  12266. "detail": "\u5BF9\u8981\u68C0\u67E5\u5176\u662F\u5426\u4E3A\u7A7A\u7684\u5355\u5143\u683C\u7684\u5F15\u7528\u3002\n\n\u5982\u679C\u662F\u7A7A\u5355\u5143\u683C\uFF0C\u5219 TRUE\uFF1B\u5426\u5219\u8FD4\u56DE FALSE\u3002"
  12267. }
  12268. ]
  12269. },
  12270. "ISERR": {
  12271. "d": "\u68C0\u67E5\u67D0\u4E2A\u503C\u662F\u5426\u4E3A #N/A \u4EE5\u5916\u7684\u9519\u8BEF\u503C\u3002",
  12272. "a": "\u68C0\u67E5\u67D0\u4E2A\u503C\u662F\u5426\u4E3A #N/A \u4EE5\u5916\u7684\u9519\u8BEF\u503C\u3002",
  12273. "p": [
  12274. {
  12275. "name": "value",
  12276. "detail": "\u8981\u9A8C\u8BC1\u5176\u662F\u5426\u4E3A#N/A\u4EE5\u5916\u7684\u9519\u8BEF\u7C7B\u578B\u7684\u503C\u3002\n\n\u5982\u679C\u503C\u662F\u9664#N/A\u4E4B\u5916\u7684\u4EFB\u4F55\u9519\u8BEF\uFF08\u5305\u62EC#DIV/0!\u3001#NAME?\u3001#NULL!\u3001#NUM!\u3001#VALUE!\u548C#REF!\uFF09\uFF0CISERR\u5C06\u8FD4\u56DETRUE\u3002"
  12277. }
  12278. ]
  12279. },
  12280. "ISERROR": {
  12281. "d": "\u68C0\u67E5\u67D0\u4E2A\u503C\u662F\u5426\u4E3A\u9519\u8BEF\u503C\u3002",
  12282. "a": "\u68C0\u67E5\u67D0\u4E2A\u503C\u662F\u5426\u4E3A\u9519\u8BEF\u503C\u3002",
  12283. "p": [
  12284. {
  12285. "name": "value",
  12286. "detail": "\u8981\u9A8C\u8BC1\u5176\u662F\u5426\u4E3A\u9519\u8BEF\u7C7B\u578B\u7684\u503C\u3002\n\n\u53EA\u8981\u503C\u662F\u67D0\u79CD\u9519\u8BEF\u503C\uFF08\u5305\u62EC#DIV/0!\u3001#N/A\u3001#NAME?\u3001#NULL!\u3001#NUM!\u3001#VALUE!\u548C#REF!\uFF09\uFF0CISERROR\u5C31\u4F1A\u8FD4\u56DETRUE\u3002"
  12287. }
  12288. ]
  12289. },
  12290. "ISLOGICAL": {
  12291. "d": "\u68C0\u67E5\u67D0\u4E2A\u503C\u662F TRUE \u8FD8\u662F FALSE\u3002",
  12292. "a": "\u68C0\u67E5\u67D0\u4E2A\u503C\u662F TRUE \u8FD8\u662F FALSE\u3002",
  12293. "p": [
  12294. {
  12295. "name": "value",
  12296. "detail": "\u8981\u9A8C\u8BC1\u5176\u4E3A\u903B\u8F91TRUE\u8FD8\u662F\u903B\u8F91FALSE\u7684\u503C\u3002\n\n*\u5982\u679C\u503C\u4E3ATRUE\u6216FALSE\uFF0C\u6216\u4E3A\u6307\u5411\u503C\u4E3ATRUE\u6216FALSE\u7684\u5355\u5143\u683C\u7684\u5F15\u7528\uFF0CISLOGICAL\u5C06\u8FD4\u56DETRUE\u3002"
  12297. }
  12298. ]
  12299. },
  12300. "ISNA": {
  12301. "d": "\u68C0\u67E5\u67D0\u4E2A\u503C\u662F\u5426\u4E3A\u9519\u8BEF\u503C #N/A\u3002",
  12302. "a": "\u68C0\u67E5\u67D0\u4E2A\u503C\u662F\u5426\u4E3A\u9519\u8BEF\u503C #N/A\u3002",
  12303. "p": [
  12304. {
  12305. "name": "value",
  12306. "detail": "\u8981\u4E0E\u9519\u8BEF\u503C#N/A\u8FDB\u884C\u6BD4\u8F83\u7684\u503C\u3002\n\n*\u5982\u679C\u503C\u4E3A#N/A\u6216\u6307\u5411\u5305\u542B#N/A\u7684\u5355\u5143\u683C\u7684\u5F15\u7528\uFF0C\u5219ISNA\u5C06\u8FD4\u56DETRUE\uFF0C\u5426\u5219\u8FD4\u56DEFALSE\u3002"
  12307. }
  12308. ]
  12309. },
  12310. "ISNONTEXT": {
  12311. "d": "\u68C0\u67E5\u67D0\u4E2A\u503C\u662F\u5426\u4E3A\u975E\u6587\u672C\u3002",
  12312. "a": "\u68C0\u67E5\u67D0\u4E2A\u503C\u662F\u5426\u4E3A\u975E\u6587\u672C\u3002",
  12313. "p": [
  12314. {
  12315. "name": "value",
  12316. "detail": "\u8981\u68C0\u67E5\u7684\u6587\u672C\u3002\n\n*\u5982\u679C\u53C2\u6570\u4E3A\u6587\u672C\u503C\u6216\u6307\u5411\u5305\u542B\u6587\u672C\u7684\u5355\u5143\u683C\u7684\u5F15\u7528\uFF0CISNONTEXT\u5C06\u8FD4\u56DEFALSE\uFF0C\u5426\u5219\u8FD4\u56DETRUE\u3002\n\n\u5F53\u503C\u4E3A\u6307\u5411\u7A7A\u5355\u5143\u683C\u7684\u5F15\u7528\u65F6\uFF0CISNONTEXT\u4F1A\u8FD4\u56DETRUE\u3002\n\n\u5F53\u503C\u4E3A\u7A7A\u5B57\u7B26\u4E32\u65F6\uFF0CISNONTEXT\u5C06\u8FD4\u56DEFALSE\uFF0C\u56E0\u4E3A\u7A7A\u4E32\u88AB\u89C6\u4F5C\u6587\u672C\u3002"
  12317. }
  12318. ]
  12319. },
  12320. "ISNUMBER": {
  12321. "d": "\u68C0\u67E5\u67D0\u4E2A\u503C\u662F\u5426\u4E3A\u6570\u5B57\u3002",
  12322. "a": "\u68C0\u67E5\u67D0\u4E2A\u503C\u662F\u5426\u4E3A\u6570\u5B57\u3002",
  12323. "p": [
  12324. {
  12325. "name": "value",
  12326. "detail": "\u8981\u9A8C\u8BC1\u5176\u662F\u5426\u4E3A\u6570\u5B57\u7684\u503C\u3002\n\n*\u5982\u679C\u53C2\u6570\u4E3A\u6570\u5B57\u6216\u6307\u5411\u5185\u5BB9\u4E3A\u6570\u5B57\u503C\u7684\u5355\u5143\u683C\u7684\u5F15\u7528\uFF0CISNUMBER\u5C06\u8FD4\u56DETRUE\uFF0C\u5426\u5219\u8FD4\u56DEFALSE\u3002"
  12327. }
  12328. ]
  12329. },
  12330. "ISREF": {
  12331. "d": "\u68C0\u67E5\u67D0\u4E2A\u503C\u662F\u5426\u4E3A\u6709\u6548\u7684\u5355\u5143\u683C\u5F15\u7528\u3002",
  12332. "a": "\u68C0\u67E5\u67D0\u4E2A\u503C\u662F\u5426\u4E3A\u6709\u6548\u7684\u5355\u5143\u683C\u5F15\u7528\u3002",
  12333. "p": [
  12334. {
  12335. "name": "value",
  12336. "detail": "\u8981\u9A8C\u8BC1\u5176\u662F\u5426\u4E3A\u5355\u5143\u683C\u5F15\u7528\u7684\u503C\u3002\n\n*\u5982\u679C\u53C2\u6570\u662F\u6709\u6548\u7684\u5355\u5143\u683C\u5F15\u7528\uFF0CISREF\u5C06\u8FD4\u56DETRUE\uFF0C\u5426\u5219\u8FD4\u56DEFALSE\u3002"
  12337. }
  12338. ]
  12339. },
  12340. "ISTEXT": {
  12341. "d": "\u68C0\u67E5\u67D0\u4E2A\u503C\u662F\u5426\u4E3A\u6587\u672C\u3002",
  12342. "a": "\u68C0\u67E5\u67D0\u4E2A\u503C\u662F\u5426\u4E3A\u6587\u672C\u3002",
  12343. "p": [
  12344. {
  12345. "name": "value",
  12346. "detail": "\u8981\u9A8C\u8BC1\u5176\u662F\u5426\u4E3A\u6587\u672C\u7684\u503C\u3002\n\n\u5982\u679C\u53C2\u6570\u4E3A\u6587\u672C\u503C\u6216\u6307\u5411\u5305\u542B\u6587\u672C\u503C\u7684\u5355\u5143\u683C\u7684\u5F15\u7528\uFF0CISTEXT\u5C06\u8FD4\u56DETRUE\uFF0C\u5426\u5219\u8FD4\u56DEFALSE\u3002"
  12347. }
  12348. ]
  12349. },
  12350. "TYPE": {
  12351. "d": "\u8FD4\u56DE\u6570\u503C\u7684\u7C7B\u578B\u3002",
  12352. "a": "\u8FD4\u56DE\u6570\u503C\u7684\u7C7B\u578B\u3002",
  12353. "p": [
  12354. {
  12355. "name": "value",
  12356. "detail": "\u8981\u786E\u5B9A\u5176\u7C7B\u578B\u7684\u6570\u636E\u3002\n\n\u6570\u5B57 \u8FD4\u56DE 1;\n\n\u6587\u672C \u8FD4\u56DE 2;\n\n\u903B\u8F91\u503C \u8FD4\u56DE 4;\n\n\u9519\u8BEF\u503C \u8FD4\u56DE 16;\n\n\u6570\u7EC4 \u8FD4\u56DE 64;"
  12357. }
  12358. ]
  12359. },
  12360. "N": {
  12361. "d": "\u8FD4\u56DE\u8F6C\u5316\u4E3A\u6570\u503C\u540E\u7684\u503C\u3002",
  12362. "a": "\u8FD4\u56DE\u8F6C\u5316\u4E3A\u6570\u503C\u540E\u7684\u503C\u3002",
  12363. "p": [
  12364. {
  12365. "name": "value",
  12366. "detail": "\u8981\u8F6C\u6362\u4E3A\u6570\u5B57\u7684\u53C2\u6570\u3002\n\n\u5982\u679C\u503C\u4E3A\u6570\u5B57\uFF0C\u5219\u8FD4\u56DE\u8BE5\u6570\u5B57\u3002\n\n\u5982\u679C\u503C\u4E3A\u65E5\u671F\uFF0C\u5219\u8FD4\u56DE\u8BE5\u65E5\u671F\u7684\u5E8F\u5217\u53F7\u3002\n\n\u5982\u679C\u503C\u4E3ATRUE\uFF0C\u5219\u8FD4\u56DE1\u3002\n\n\u5982\u679C\u503C\u4E3AFALSE\uFF0C\u5219\u8FD4\u56DE0\u3002\n\n\u5982\u679C\u503C\u4E3A\u9519\u8BEF\u503C\uFF0C\u5219\u8FD4\u56DE\u9519\u8BEF\u503C\u3002\n\n\u5982\u679C\u503C\u4E3A\u5176\u4ED6\u503C\uFF0C\u5219\u8FD4\u56DE0\u3002"
  12367. }
  12368. ]
  12369. },
  12370. "TO_DATE": {
  12371. "d": "\u5C06\u6307\u5B9A\u7684\u6570\u5B57\u8F6C\u6362\u4E3A\u65E5\u671F\u3002",
  12372. "a": "\u5C06\u6307\u5B9A\u7684\u6570\u5B57\u8F6C\u6362\u4E3A\u65E5\u671F\u3002",
  12373. "p": [
  12374. {
  12375. "name": "value",
  12376. "detail": "\u8981\u8F6C\u6362\u4E3A\u65E5\u671F\u7684\u53C2\u6570\u6216\u5176\u5355\u5143\u683C\u5F15\u7528\u3002\n\n\u5982\u679C\u503C\u4E3A\u6570\u5B57\u6216\u6307\u5411\u5185\u5BB9\u4E3A\u6570\u503C\u7684\u5355\u5143\u683C\u7684\u5F15\u7528\uFF0CTO_DATE\u4F1A\u5C06\u503C\u8F6C\u6362\u4E3A\u76F8\u5E94\u7684\u65E5\u671F\u5E76\u8FD4\u56DE\uFF0C\u503C\u4EE3\u8868\u4ECE\u5341\u4E8C\u670830\u65E5\u5230\u5BF9\u5E94\u7684\u65E5\u671F\u4E4B\u95F4\u7684\u5929\u6570\uFF0C\n\n\u8D1F\u503C\u8868\u793A\u5BF9\u5E94\u7684\u65E5\u671F\u5728\u5341\u4E8C\u670830\u65E5\u4E4B\u524D\uFF0C\u800C\u5C0F\u6570\u503C\u5219\u4EE3\u8868\u4E00\u5929\u4E2D\u4ECE\u5348\u591C\u7B97\u8D77\u7684\u65F6\u95F4\u3002\n\u5982\u679C\u503C\u4E0D\u662F\u6570\u5B57\u6216\u6307\u5411\u5185\u5BB9\u4E3A\u6570\u503C\u7684\u5355\u5143\u683C\u7684\u5F15\u7528\uFF0C\u5219TO_DATE\u5C06\u5728\u4E0D\u505A\u4EFB\u4F55\u4FEE\u6539\u7684\u60C5\u51B5\u4E0B\u8FD4\u56DE\u503C\u3002"
  12377. }
  12378. ]
  12379. },
  12380. "TO_PURE_NUMBER": {
  12381. "d": "\u5C06\u7ED9\u5B9A\u7684\u65E5\u671F/\u65F6\u95F4\u3001\u767E\u5206\u6BD4\u3001\u8D27\u5E01\u91D1\u989D\u6216\u5176\u4ED6\u683C\u5F0F\u7684\u6570\u503C\u8F6C\u6362\u4E3A\u4E0D\u5E26\u683C\u5F0F\u7684\u7EAF\u6570\u5B57\u3002",
  12382. "a": "\u5C06\u7ED9\u5B9A\u7684\u65E5\u671F/\u65F6\u95F4\u3001\u767E\u5206\u6BD4\u3001\u8D27\u5E01\u91D1\u989D\u6216\u5176\u4ED6\u683C\u5F0F\u7684\u6570\u503C\u8F6C\u6362\u4E3A\u4E0D\u5E26\u683C\u5F0F\u7684\u7EAF\u6570\u5B57\u3002",
  12383. "p": [
  12384. {
  12385. "name": "value",
  12386. "detail": "\u8981\u8F6C\u6362\u4E3A\u7EAF\u6570\u5B57\u7684\u53C2\u6570\u6216\u5176\u5355\u5143\u683C\u5F15\u7528\u3002\n\n\u5982\u679C\u503C\u4E3A\u6570\u5B57\u6216\u6307\u5411\u5305\u542B\u6570\u503C\u7684\u5355\u5143\u683C\u7684\u5F15\u7528\uFF0CTO_PURE_NUMBER\u5C06\u4EE5\u4E0D\u5E26\u4EFB\u4F55\u683C\u5F0F\u4E0E\u89E3\u91CA\u7684\u5F62\u5F0F\u8FD4\u56DE\u503C\u3002\n\n\u5982\u679C\u503C\u4E0D\u662F\u6570\u5B57\u6216\u6307\u5411\u5185\u5BB9\u4E3A\u6570\u503C\u7684\u5355\u5143\u683C\u7684\u5F15\u7528\uFF0C\u5219TO_PERCENT\u5C06\u5728\u4E0D\u505A\u4EFB\u4F55\u4FEE\u6539\u7684\u60C5\u51B5\u4E0B\u8FD4\u56DE\u503C\u3002"
  12387. }
  12388. ]
  12389. },
  12390. "TO_TEXT": {
  12391. "d": "\u5C06\u7ED9\u5B9A\u7684\u6570\u5B57\u503C\u8F6C\u6362\u4E3A\u6587\u672C\u683C\u5F0F\u3002",
  12392. "a": "\u5C06\u7ED9\u5B9A\u7684\u6570\u5B57\u503C\u8F6C\u6362\u4E3A\u6587\u672C\u683C\u5F0F\u3002",
  12393. "p": [
  12394. {
  12395. "name": "value",
  12396. "detail": "\u8981\u8F6C\u6362\u4E3A\u6587\u672C\u7684\u53C2\u6570\u6216\u5176\u5355\u5143\u683C\u5F15\u7528\u3002\n\n\u5982\u679C\u503C\u4E3A\u6570\u5B57\u6216\u6307\u5411\u5305\u542B\u6570\u503C\u7684\u5355\u5143\u683C\u7684\u5F15\u7528\uFF0CTO_TEXT\u5C06\u8FD4\u56DE\u5B57\u7B26\u4E32\u5F62\u5F0F\u7684\u503C\uFF0C\u5E76\u4FDD\u6301\u73B0\u6709\u683C\u5F0F\u3002\u5373\u539F\u4E3A\u8D27\u5E01\u7684\u4ECD\u4E3A\u8D27\u5E01\uFF0C\u539F\u4E3A\u5341\u8FDB\u5236\u6570\u7684\u4ECD\u4E3A\u5341\u8FDB\u5236\u6570\uFF0C\u539F\u4E3A\u767E\u5206\u6BD4\u7684\u4ECD\u4E3A\u767E\u5206\u6BD4\uFF0C\u539F\u4E3A\u65E5\u671F\u7684\u4ECD\u4E3A\u65E5\u671F\u3002\n\n\u5982\u679C\u503C\u4E0D\u662F\u6570\u5B57\u6216\u6307\u5411\u5185\u5BB9\u4E3A\u6570\u503C\u7684\u5355\u5143\u683C\u7684\u5F15\u7528\uFF0C\u5219TO_TEXT\u5C06\u5728\u4E0D\u505A\u4EFB\u4F55\u4FEE\u6539\u7684\u60C5\u51B5\u4E0B\u8FD4\u56DE\u503C\u3002"
  12397. }
  12398. ]
  12399. },
  12400. "TO_DOLLARS": {
  12401. "d": "\u5C06\u6307\u5B9A\u7684\u6570\u5B57\u8F6C\u6362\u4E3A\u7F8E\u5143\u91D1\u989D\u3002",
  12402. "a": "\u5C06\u6307\u5B9A\u7684\u6570\u5B57\u8F6C\u6362\u4E3A\u7F8E\u5143\u91D1\u989D\u3002",
  12403. "p": [
  12404. {
  12405. "name": "value",
  12406. "detail": "\u8981\u8F6C\u6362\u4E3A\u7F8E\u5143\u91D1\u989D\u7684\u53C2\u6570\u6216\u5176\u5355\u5143\u683C\u5F15\u7528\u3002\n\n\u5982\u679C\u503C\u4E0D\u662F\u6570\u5B57\u6216\u6307\u5411\u5185\u5BB9\u4E3A\u6570\u503C\u7684\u5355\u5143\u683C\u7684\u5F15\u7528\uFF0C\u5219 TO_DOLLARS \u5C06\u5728\u4E0D\u505A\u4EFB\u4F55\u4FEE\u6539\u7684\u60C5\u51B5\u4E0B\u8FD4\u56DE\u503C\u3002"
  12407. }
  12408. ]
  12409. },
  12410. "TO_PERCENT": {
  12411. "d": "\u5C06\u6307\u5B9A\u7684\u6570\u5B57\u8F6C\u6362\u4E3A\u767E\u5206\u6BD4\u3002",
  12412. "a": "\u5C06\u6307\u5B9A\u7684\u6570\u5B57\u8F6C\u6362\u4E3A\u767E\u5206\u6BD4\u3002",
  12413. "p": [
  12414. {
  12415. "name": "value",
  12416. "detail": "\u8981\u8F6C\u6362\u4E3A\u767E\u5206\u6BD4\u7684\u53C2\u6570\u6216\u5176\u5355\u5143\u683C\u5F15\u7528\u3002\n\n\u5982\u679C\u503C\u4E3A\u6570\u5B57\u6216\u6307\u5411\u5305\u542B\u6570\u503C\u7684\u5355\u5143\u683C\u7684\u5F15\u7528\uFF0CTO_PERCENT\u4F1A\u4EE51 = 100%\u4E3A\u6807\u51C6\uFF0C\u5C06\u503C\u8F6C\u6362\u4E3A\u767E\u5206\u6BD4\u3002\n\n\u5982\u679C\u503C\u4E0D\u662F\u6570\u5B57\u6216\u6307\u5411\u5185\u5BB9\u4E3A\u6570\u503C\u7684\u5355\u5143\u683C\u7684\u5F15\u7528\uFF0C\u5219TO_PERCENT\u5C06\u5728\u4E0D\u505A\u4EFB\u4F55\u4FEE\u6539\u7684\u60C5\u51B5\u4E0B\u8FD4\u56DE\u503C\u3002"
  12417. }
  12418. ]
  12419. },
  12420. "DGET": {
  12421. "d": "\u4F7F\u7528 SQL \u5F0F\u67E5\u8BE2\uFF0C\u4ECE\u5217\u8868\u6216\u6570\u636E\u5E93\u7684\u5217\u4E2D\u63D0\u53D6\u7B26\u5408\u6307\u5B9A\u6761\u4EF6\u7684\u5355\u4E2A\u503C\u3002",
  12422. "a": "\u4F7F\u7528 SQL \u5F0F\u67E5\u8BE2\uFF0C\u4ECE\u5217\u8868\u6216\u6570\u636E\u5E93\u7684\u5217\u4E2D\u63D0\u53D6\u7B26\u5408\u6307\u5B9A\u6761\u4EF6\u7684\u5355\u4E2A\u503C\u3002",
  12423. "p": [
  12424. {
  12425. "name": "database",
  12426. "detail": "\u6784\u6210\u5217\u8868\u6216\u6570\u636E\u5E93\u7684\u5355\u5143\u683C\u533A\u57DF\uFF0C\u5217\u8868\u7684\u7B2C\u4E00\u884C\u5305\u542B\u6BCF\u4E00\u5217\u7684\u6807\u7B7E\u3002"
  12427. },
  12428. {
  12429. "name": "field",
  12430. "detail": "\u6307\u5B9A database \u4E2D\u7684\u54EA\u4E00\u5217\u5305\u542B\u8981\u63D0\u53D6\u548C\u7528\u4E8E\u8BA1\u7B97\u7684\u503C\u3002\n\nfield \u53EF\u4EE5\u662F\u4E0E database \u7B2C\u4E00\u884C\u4E2D\u67D0\u4E2A\u5217\u6807\u9898\u5BF9\u5E94\u7684\u6587\u672C\u6807\u7B7E\uFF0C\u4E5F\u53EF\u4EE5\u662F\u6307\u5B9A\u76F8\u5173\u5217\u7684\u6570\u5B57\u7D22\u5F15\uFF0C\u7B2C\u4E00\u5217\u7684\u7D22\u5F15\u503C\u4E3A 1\u3002"
  12431. },
  12432. {
  12433. "name": "criteria",
  12434. "detail": "\u5305\u542B\u6240\u6307\u5B9A\u6761\u4EF6\u7684\u5355\u5143\u683C\u533A\u57DF\u3002\u8BA1\u7B97\u4E4B\u524D\u5C06\u4F7F\u7528\u8FD9\u4E9B\u6761\u4EF6\u6765\u8FC7\u6EE4 database \u4E2D\u7684\u503C\u3002"
  12435. }
  12436. ]
  12437. },
  12438. "DMAX": {
  12439. "d": "\u4F7F\u7528 SQL \u5F0F\u67E5\u8BE2\uFF0C\u8FD4\u56DE\u5217\u8868\u6216\u6570\u636E\u5E93\u4E2D\u6EE1\u8DB3\u6307\u5B9A\u6761\u4EF6\u7684\u8BB0\u5F55\u5B57\u6BB5\uFF08\u5217\uFF09\u4E2D\u7684\u6700\u5927\u6570\u5B57\u3002",
  12440. "a": "\u4F7F\u7528 SQL \u5F0F\u67E5\u8BE2\uFF0C\u8FD4\u56DE\u5217\u8868\u6216\u6570\u636E\u5E93\u4E2D\u6EE1\u8DB3\u6307\u5B9A\u6761\u4EF6\u7684\u8BB0\u5F55\u5B57\u6BB5\uFF08\u5217\uFF09\u4E2D\u7684\u6700\u5927\u6570\u5B57\u3002",
  12441. "p": [
  12442. {
  12443. "name": "database",
  12444. "detail": "\u6784\u6210\u5217\u8868\u6216\u6570\u636E\u5E93\u7684\u5355\u5143\u683C\u533A\u57DF\uFF0C\u5217\u8868\u7684\u7B2C\u4E00\u884C\u5305\u542B\u6BCF\u4E00\u5217\u7684\u6807\u7B7E\u3002"
  12445. },
  12446. {
  12447. "name": "field",
  12448. "detail": "\u6307\u5B9A database \u4E2D\u7684\u54EA\u4E00\u5217\u5305\u542B\u8981\u63D0\u53D6\u548C\u7528\u4E8E\u8BA1\u7B97\u7684\u503C\u3002\n\nfield \u53EF\u4EE5\u662F\u4E0E database \u7B2C\u4E00\u884C\u4E2D\u67D0\u4E2A\u5217\u6807\u9898\u5BF9\u5E94\u7684\u6587\u672C\u6807\u7B7E\uFF0C\u4E5F\u53EF\u4EE5\u662F\u6307\u5B9A\u76F8\u5173\u5217\u7684\u6570\u5B57\u7D22\u5F15\uFF0C\u7B2C\u4E00\u5217\u7684\u7D22\u5F15\u503C\u4E3A 1\u3002"
  12449. },
  12450. {
  12451. "name": "criteria",
  12452. "detail": "\u5305\u542B\u6240\u6307\u5B9A\u6761\u4EF6\u7684\u5355\u5143\u683C\u533A\u57DF\u3002\u8BA1\u7B97\u4E4B\u524D\u5C06\u4F7F\u7528\u8FD9\u4E9B\u6761\u4EF6\u6765\u8FC7\u6EE4 database \u4E2D\u7684\u503C\u3002"
  12453. }
  12454. ]
  12455. },
  12456. "DMIN": {
  12457. "d": "\u4F7F\u7528 SQL \u5F0F\u67E5\u8BE2\uFF0C\u8FD4\u56DE\u5217\u8868\u6216\u6570\u636E\u5E93\u4E2D\u6EE1\u8DB3\u6307\u5B9A\u6761\u4EF6\u7684\u8BB0\u5F55\u5B57\u6BB5\uFF08\u5217\uFF09\u4E2D\u7684\u6700\u5C0F\u6570\u5B57\u3002",
  12458. "a": "\u4F7F\u7528 SQL \u5F0F\u67E5\u8BE2\uFF0C\u8FD4\u56DE\u5217\u8868\u6216\u6570\u636E\u5E93\u4E2D\u6EE1\u8DB3\u6307\u5B9A\u6761\u4EF6\u7684\u8BB0\u5F55\u5B57\u6BB5\uFF08\u5217\uFF09\u4E2D\u7684\u6700\u5C0F\u6570\u5B57\u3002",
  12459. "p": [
  12460. {
  12461. "name": "database",
  12462. "detail": "\u6784\u6210\u5217\u8868\u6216\u6570\u636E\u5E93\u7684\u5355\u5143\u683C\u533A\u57DF\uFF0C\u5217\u8868\u7684\u7B2C\u4E00\u884C\u5305\u542B\u6BCF\u4E00\u5217\u7684\u6807\u7B7E\u3002"
  12463. },
  12464. {
  12465. "name": "field",
  12466. "detail": "\u6307\u5B9A database \u4E2D\u7684\u54EA\u4E00\u5217\u5305\u542B\u8981\u63D0\u53D6\u548C\u7528\u4E8E\u8BA1\u7B97\u7684\u503C\u3002\n\nfield \u53EF\u4EE5\u662F\u4E0E database \u7B2C\u4E00\u884C\u4E2D\u67D0\u4E2A\u5217\u6807\u9898\u5BF9\u5E94\u7684\u6587\u672C\u6807\u7B7E\uFF0C\u4E5F\u53EF\u4EE5\u662F\u6307\u5B9A\u76F8\u5173\u5217\u7684\u6570\u5B57\u7D22\u5F15\uFF0C\u7B2C\u4E00\u5217\u7684\u7D22\u5F15\u503C\u4E3A 1\u3002"
  12467. },
  12468. {
  12469. "name": "criteria",
  12470. "detail": "\u5305\u542B\u6240\u6307\u5B9A\u6761\u4EF6\u7684\u5355\u5143\u683C\u533A\u57DF\u3002\u8BA1\u7B97\u4E4B\u524D\u5C06\u4F7F\u7528\u8FD9\u4E9B\u6761\u4EF6\u6765\u8FC7\u6EE4 database \u4E2D\u7684\u503C\u3002"
  12471. }
  12472. ]
  12473. },
  12474. "DAVERAGE": {
  12475. "d": "\u4F7F\u7528 SQL \u5F0F\u67E5\u8BE2\uFF0C\u5BF9\u5217\u8868\u6216\u6570\u636E\u5E93\u4E2D\u6EE1\u8DB3\u6307\u5B9A\u6761\u4EF6\u7684\u8BB0\u5F55\u5B57\u6BB5\uFF08\u5217\uFF09\u4E2D\u7684\u6570\u503C\u6C42\u5E73\u5747\u503C\u3002",
  12476. "a": "\u4F7F\u7528 SQL \u5F0F\u67E5\u8BE2\uFF0C\u5BF9\u5217\u8868\u6216\u6570\u636E\u5E93\u4E2D\u6EE1\u8DB3\u6307\u5B9A\u6761\u4EF6\u7684\u8BB0\u5F55\u5B57\u6BB5\uFF08\u5217\uFF09\u4E2D\u7684\u6570\u503C\u6C42\u5E73\u5747\u503C\u3002",
  12477. "p": [
  12478. {
  12479. "name": "database",
  12480. "detail": "\u6784\u6210\u5217\u8868\u6216\u6570\u636E\u5E93\u7684\u5355\u5143\u683C\u533A\u57DF\uFF0C\u5217\u8868\u7684\u7B2C\u4E00\u884C\u5305\u542B\u6BCF\u4E00\u5217\u7684\u6807\u7B7E\u3002"
  12481. },
  12482. {
  12483. "name": "field",
  12484. "detail": "\u6307\u5B9A database \u4E2D\u7684\u54EA\u4E00\u5217\u5305\u542B\u8981\u63D0\u53D6\u548C\u7528\u4E8E\u8BA1\u7B97\u7684\u503C\u3002\n\nfield \u53EF\u4EE5\u662F\u4E0E database \u7B2C\u4E00\u884C\u4E2D\u67D0\u4E2A\u5217\u6807\u9898\u5BF9\u5E94\u7684\u6587\u672C\u6807\u7B7E\uFF0C\u4E5F\u53EF\u4EE5\u662F\u6307\u5B9A\u76F8\u5173\u5217\u7684\u6570\u5B57\u7D22\u5F15\uFF0C\u7B2C\u4E00\u5217\u7684\u7D22\u5F15\u503C\u4E3A 1\u3002"
  12485. },
  12486. {
  12487. "name": "criteria",
  12488. "detail": "\u5305\u542B\u6240\u6307\u5B9A\u6761\u4EF6\u7684\u5355\u5143\u683C\u533A\u57DF\u3002\u8BA1\u7B97\u4E4B\u524D\u5C06\u4F7F\u7528\u8FD9\u4E9B\u6761\u4EF6\u6765\u8FC7\u6EE4 database \u4E2D\u7684\u503C\u3002"
  12489. }
  12490. ]
  12491. },
  12492. "DCOUNT": {
  12493. "d": "\u4F7F\u7528 SQL \u5F0F\u67E5\u8BE2\uFF0C\u8FD4\u56DE\u5217\u8868\u6216\u6570\u636E\u5E93\u4E2D\u6EE1\u8DB3\u6307\u5B9A\u6761\u4EF6\u7684\u8BB0\u5F55\u5B57\u6BB5\uFF08\u5217\uFF09\u4E2D\u5305\u542B\u6570\u5B57\u7684\u5355\u5143\u683C\u7684\u4E2A\u6570\u3002",
  12494. "a": "\u4F7F\u7528 SQL \u5F0F\u67E5\u8BE2\uFF0C\u8FD4\u56DE\u5217\u8868\u6216\u6570\u636E\u5E93\u4E2D\u6EE1\u8DB3\u6307\u5B9A\u6761\u4EF6\u7684\u8BB0\u5F55\u5B57\u6BB5\uFF08\u5217\uFF09\u4E2D\u5305\u542B\u6570\u5B57\u7684\u5355\u5143\u683C\u7684\u4E2A\u6570\u3002",
  12495. "p": [
  12496. {
  12497. "name": "database",
  12498. "detail": "\u6784\u6210\u5217\u8868\u6216\u6570\u636E\u5E93\u7684\u5355\u5143\u683C\u533A\u57DF\uFF0C\u5217\u8868\u7684\u7B2C\u4E00\u884C\u5305\u542B\u6BCF\u4E00\u5217\u7684\u6807\u7B7E\u3002"
  12499. },
  12500. {
  12501. "name": "field",
  12502. "detail": "\u6307\u5B9A database \u4E2D\u7684\u54EA\u4E00\u5217\u5305\u542B\u8981\u63D0\u53D6\u548C\u7528\u4E8E\u8BA1\u7B97\u7684\u503C\u3002\n\nfield \u53EF\u4EE5\u662F\u4E0E database \u7B2C\u4E00\u884C\u4E2D\u67D0\u4E2A\u5217\u6807\u9898\u5BF9\u5E94\u7684\u6587\u672C\u6807\u7B7E\uFF0C\u4E5F\u53EF\u4EE5\u662F\u6307\u5B9A\u76F8\u5173\u5217\u7684\u6570\u5B57\u7D22\u5F15\uFF0C\u7B2C\u4E00\u5217\u7684\u7D22\u5F15\u503C\u4E3A 1\u3002"
  12503. },
  12504. {
  12505. "name": "criteria",
  12506. "detail": "\u5305\u542B\u6240\u6307\u5B9A\u6761\u4EF6\u7684\u5355\u5143\u683C\u533A\u57DF\u3002\u8BA1\u7B97\u4E4B\u524D\u5C06\u4F7F\u7528\u8FD9\u4E9B\u6761\u4EF6\u6765\u8FC7\u6EE4 database \u4E2D\u7684\u503C\u3002"
  12507. }
  12508. ]
  12509. },
  12510. "DCOUNTA": {
  12511. "d": "\u4F7F\u7528 SQL \u5F0F\u67E5\u8BE2\uFF0C\u8FD4\u56DE\u5217\u8868\u6216\u6570\u636E\u5E93\u4E2D\u6EE1\u8DB3\u6307\u5B9A\u6761\u4EF6\u7684\u8BB0\u5F55\u5B57\u6BB5\uFF08\u5217\uFF09\u4E2D\u7684\u975E\u7A7A\u5355\u5143\u683C\u7684\u4E2A\u6570\u3002",
  12512. "a": "\u4F7F\u7528 SQL \u5F0F\u67E5\u8BE2\uFF0C\u8FD4\u56DE\u5217\u8868\u6216\u6570\u636E\u5E93\u4E2D\u6EE1\u8DB3\u6307\u5B9A\u6761\u4EF6\u7684\u8BB0\u5F55\u5B57\u6BB5\uFF08\u5217\uFF09\u4E2D\u7684\u975E\u7A7A\u5355\u5143\u683C\u7684\u4E2A\u6570\u3002",
  12513. "p": [
  12514. {
  12515. "name": "database",
  12516. "detail": "\u6784\u6210\u5217\u8868\u6216\u6570\u636E\u5E93\u7684\u5355\u5143\u683C\u533A\u57DF\uFF0C\u5217\u8868\u7684\u7B2C\u4E00\u884C\u5305\u542B\u6BCF\u4E00\u5217\u7684\u6807\u7B7E\u3002"
  12517. },
  12518. {
  12519. "name": "field",
  12520. "detail": "\u6307\u5B9A database \u4E2D\u7684\u54EA\u4E00\u5217\u5305\u542B\u8981\u63D0\u53D6\u548C\u7528\u4E8E\u8BA1\u7B97\u7684\u503C\u3002\n\nfield \u53EF\u4EE5\u662F\u4E0E database \u7B2C\u4E00\u884C\u4E2D\u67D0\u4E2A\u5217\u6807\u9898\u5BF9\u5E94\u7684\u6587\u672C\u6807\u7B7E\uFF0C\u4E5F\u53EF\u4EE5\u662F\u6307\u5B9A\u76F8\u5173\u5217\u7684\u6570\u5B57\u7D22\u5F15\uFF0C\u7B2C\u4E00\u5217\u7684\u7D22\u5F15\u503C\u4E3A 1\u3002"
  12521. },
  12522. {
  12523. "name": "criteria",
  12524. "detail": "\u5305\u542B\u6240\u6307\u5B9A\u6761\u4EF6\u7684\u5355\u5143\u683C\u533A\u57DF\u3002\u8BA1\u7B97\u4E4B\u524D\u5C06\u4F7F\u7528\u8FD9\u4E9B\u6761\u4EF6\u6765\u8FC7\u6EE4 database \u4E2D\u7684\u503C\u3002"
  12525. }
  12526. ]
  12527. },
  12528. "DPRODUCT": {
  12529. "d": "\u4F7F\u7528 SQL \u5F0F\u67E5\u8BE2\uFF0C\u8FD4\u56DE\u5217\u8868\u6216\u6570\u636E\u5E93\u4E2D\u6EE1\u8DB3\u6307\u5B9A\u6761\u4EF6\u7684\u8BB0\u5F55\u5B57\u6BB5\uFF08\u5217\uFF09\u4E2D\u7684\u6570\u503C\u7684\u4E58\u79EF\u3002",
  12530. "a": "\u4F7F\u7528 SQL \u5F0F\u67E5\u8BE2\uFF0C\u8FD4\u56DE\u5217\u8868\u6216\u6570\u636E\u5E93\u4E2D\u6EE1\u8DB3\u6307\u5B9A\u6761\u4EF6\u7684\u8BB0\u5F55\u5B57\u6BB5\uFF08\u5217\uFF09\u4E2D\u7684\u6570\u503C\u7684\u4E58\u79EF\u3002",
  12531. "p": [
  12532. {
  12533. "name": "database",
  12534. "detail": "\u6784\u6210\u5217\u8868\u6216\u6570\u636E\u5E93\u7684\u5355\u5143\u683C\u533A\u57DF\uFF0C\u5217\u8868\u7684\u7B2C\u4E00\u884C\u5305\u542B\u6BCF\u4E00\u5217\u7684\u6807\u7B7E\u3002"
  12535. },
  12536. {
  12537. "name": "field",
  12538. "detail": "\u6307\u5B9A database \u4E2D\u7684\u54EA\u4E00\u5217\u5305\u542B\u8981\u63D0\u53D6\u548C\u7528\u4E8E\u8BA1\u7B97\u7684\u503C\u3002\n\nfield \u53EF\u4EE5\u662F\u4E0E database \u7B2C\u4E00\u884C\u4E2D\u67D0\u4E2A\u5217\u6807\u9898\u5BF9\u5E94\u7684\u6587\u672C\u6807\u7B7E\uFF0C\u4E5F\u53EF\u4EE5\u662F\u6307\u5B9A\u76F8\u5173\u5217\u7684\u6570\u5B57\u7D22\u5F15\uFF0C\u7B2C\u4E00\u5217\u7684\u7D22\u5F15\u503C\u4E3A 1\u3002"
  12539. },
  12540. {
  12541. "name": "criteria",
  12542. "detail": "\u5305\u542B\u6240\u6307\u5B9A\u6761\u4EF6\u7684\u5355\u5143\u683C\u533A\u57DF\u3002\u8BA1\u7B97\u4E4B\u524D\u5C06\u4F7F\u7528\u8FD9\u4E9B\u6761\u4EF6\u6765\u8FC7\u6EE4 database \u4E2D\u7684\u503C\u3002"
  12543. }
  12544. ]
  12545. },
  12546. "DSTDEV": {
  12547. "d": "\u4F7F\u7528 SQL \u5F0F\u67E5\u8BE2\uFF0C\u8FD4\u56DE\u5229\u7528\u5217\u8868\u6216\u6570\u636E\u5E93\u4E2D\u6EE1\u8DB3\u6307\u5B9A\u6761\u4EF6\u7684\u8BB0\u5F55\u5B57\u6BB5\uFF08\u5217\uFF09\u4E2D\u7684\u6570\u5B57\u4F5C\u4E3A\u4E00\u4E2A\u6837\u672C\u4F30\u7B97\u51FA\u7684\u603B\u4F53\u6807\u51C6\u504F\u5DEE\u3002",
  12548. "a": "\u4F7F\u7528 SQL \u5F0F\u67E5\u8BE2\uFF0C\u8FD4\u56DE\u5229\u7528\u5217\u8868\u6216\u6570\u636E\u5E93\u4E2D\u6EE1\u8DB3\u6307\u5B9A\u6761\u4EF6\u7684\u8BB0\u5F55\u5B57\u6BB5\uFF08\u5217\uFF09\u4E2D\u7684\u6570\u5B57\u4F5C\u4E3A\u4E00\u4E2A\u6837\u672C\u4F30\u7B97\u51FA\u7684\u603B\u4F53\u6807\u51C6\u504F\u5DEE\u3002",
  12549. "p": [
  12550. {
  12551. "name": "database",
  12552. "detail": "\u6784\u6210\u5217\u8868\u6216\u6570\u636E\u5E93\u7684\u5355\u5143\u683C\u533A\u57DF\uFF0C\u5217\u8868\u7684\u7B2C\u4E00\u884C\u5305\u542B\u6BCF\u4E00\u5217\u7684\u6807\u7B7E\u3002"
  12553. },
  12554. {
  12555. "name": "field",
  12556. "detail": "\u6307\u5B9A database \u4E2D\u7684\u54EA\u4E00\u5217\u5305\u542B\u8981\u63D0\u53D6\u548C\u7528\u4E8E\u8BA1\u7B97\u7684\u503C\u3002\n\nfield \u53EF\u4EE5\u662F\u4E0E database \u7B2C\u4E00\u884C\u4E2D\u67D0\u4E2A\u5217\u6807\u9898\u5BF9\u5E94\u7684\u6587\u672C\u6807\u7B7E\uFF0C\u4E5F\u53EF\u4EE5\u662F\u6307\u5B9A\u76F8\u5173\u5217\u7684\u6570\u5B57\u7D22\u5F15\uFF0C\u7B2C\u4E00\u5217\u7684\u7D22\u5F15\u503C\u4E3A 1\u3002"
  12557. },
  12558. {
  12559. "name": "criteria",
  12560. "detail": "\u5305\u542B\u6240\u6307\u5B9A\u6761\u4EF6\u7684\u5355\u5143\u683C\u533A\u57DF\u3002\u8BA1\u7B97\u4E4B\u524D\u5C06\u4F7F\u7528\u8FD9\u4E9B\u6761\u4EF6\u6765\u8FC7\u6EE4 database \u4E2D\u7684\u503C\u3002"
  12561. }
  12562. ]
  12563. },
  12564. "DSTDEVP": {
  12565. "d": "\u4F7F\u7528 SQL \u5F0F\u67E5\u8BE2\uFF0C\u8FD4\u56DE\u5229\u7528\u5217\u8868\u6216\u6570\u636E\u5E93\u4E2D\u6EE1\u8DB3\u6307\u5B9A\u6761\u4EF6\u7684\u8BB0\u5F55\u5B57\u6BB5\uFF08\u5217\uFF09\u4E2D\u7684\u6570\u5B57\u4F5C\u4E3A\u6837\u672C\u603B\u4F53\u8BA1\u7B97\u51FA\u7684\u603B\u4F53\u6807\u51C6\u504F\u5DEE\u3002",
  12566. "a": "\u4F7F\u7528 SQL \u5F0F\u67E5\u8BE2\uFF0C\u8FD4\u56DE\u5229\u7528\u5217\u8868\u6216\u6570\u636E\u5E93\u4E2D\u6EE1\u8DB3\u6307\u5B9A\u6761\u4EF6\u7684\u8BB0\u5F55\u5B57\u6BB5\uFF08\u5217\uFF09\u4E2D\u7684\u6570\u5B57\u4F5C\u4E3A\u6837\u672C\u603B\u4F53\u8BA1\u7B97\u51FA\u7684\u603B\u4F53\u6807\u51C6\u504F\u5DEE\u3002",
  12567. "p": [
  12568. {
  12569. "name": "database",
  12570. "detail": "\u6784\u6210\u5217\u8868\u6216\u6570\u636E\u5E93\u7684\u5355\u5143\u683C\u533A\u57DF\uFF0C\u5217\u8868\u7684\u7B2C\u4E00\u884C\u5305\u542B\u6BCF\u4E00\u5217\u7684\u6807\u7B7E\u3002"
  12571. },
  12572. {
  12573. "name": "field",
  12574. "detail": "\u6307\u5B9A database \u4E2D\u7684\u54EA\u4E00\u5217\u5305\u542B\u8981\u63D0\u53D6\u548C\u7528\u4E8E\u8BA1\u7B97\u7684\u503C\u3002\n\nfield \u53EF\u4EE5\u662F\u4E0E database \u7B2C\u4E00\u884C\u4E2D\u67D0\u4E2A\u5217\u6807\u9898\u5BF9\u5E94\u7684\u6587\u672C\u6807\u7B7E\uFF0C\u4E5F\u53EF\u4EE5\u662F\u6307\u5B9A\u76F8\u5173\u5217\u7684\u6570\u5B57\u7D22\u5F15\uFF0C\u7B2C\u4E00\u5217\u7684\u7D22\u5F15\u503C\u4E3A 1\u3002"
  12575. },
  12576. {
  12577. "name": "criteria",
  12578. "detail": "\u5305\u542B\u6240\u6307\u5B9A\u6761\u4EF6\u7684\u5355\u5143\u683C\u533A\u57DF\u3002\u8BA1\u7B97\u4E4B\u524D\u5C06\u4F7F\u7528\u8FD9\u4E9B\u6761\u4EF6\u6765\u8FC7\u6EE4 database \u4E2D\u7684\u503C\u3002"
  12579. }
  12580. ]
  12581. },
  12582. "DSUM": {
  12583. "d": "\u4F7F\u7528 SQL \u5F0F\u67E5\u8BE2\uFF0C\u8FD4\u56DE\u5217\u8868\u6216\u6570\u636E\u5E93\u4E2D\u6EE1\u8DB3\u6307\u5B9A\u6761\u4EF6\u7684\u8BB0\u5F55\u5B57\u6BB5\uFF08\u5217\uFF09\u4E2D\u7684\u6570\u5B57\u4E4B\u548C\u3002",
  12584. "a": "\u4F7F\u7528 SQL \u5F0F\u67E5\u8BE2\uFF0C\u8FD4\u56DE\u5217\u8868\u6216\u6570\u636E\u5E93\u4E2D\u6EE1\u8DB3\u6307\u5B9A\u6761\u4EF6\u7684\u8BB0\u5F55\u5B57\u6BB5\uFF08\u5217\uFF09\u4E2D\u7684\u6570\u5B57\u4E4B\u548C\u3002",
  12585. "p": [
  12586. {
  12587. "name": "database",
  12588. "detail": "\u6784\u6210\u5217\u8868\u6216\u6570\u636E\u5E93\u7684\u5355\u5143\u683C\u533A\u57DF\uFF0C\u5217\u8868\u7684\u7B2C\u4E00\u884C\u5305\u542B\u6BCF\u4E00\u5217\u7684\u6807\u7B7E\u3002"
  12589. },
  12590. {
  12591. "name": "field",
  12592. "detail": "\u6307\u5B9A database \u4E2D\u7684\u54EA\u4E00\u5217\u5305\u542B\u8981\u63D0\u53D6\u548C\u7528\u4E8E\u8BA1\u7B97\u7684\u503C\u3002\n\nfield \u53EF\u4EE5\u662F\u4E0E database \u7B2C\u4E00\u884C\u4E2D\u67D0\u4E2A\u5217\u6807\u9898\u5BF9\u5E94\u7684\u6587\u672C\u6807\u7B7E\uFF0C\u4E5F\u53EF\u4EE5\u662F\u6307\u5B9A\u76F8\u5173\u5217\u7684\u6570\u5B57\u7D22\u5F15\uFF0C\u7B2C\u4E00\u5217\u7684\u7D22\u5F15\u503C\u4E3A 1\u3002"
  12593. },
  12594. {
  12595. "name": "criteria",
  12596. "detail": "\u5305\u542B\u6240\u6307\u5B9A\u6761\u4EF6\u7684\u5355\u5143\u683C\u533A\u57DF\u3002\u8BA1\u7B97\u4E4B\u524D\u5C06\u4F7F\u7528\u8FD9\u4E9B\u6761\u4EF6\u6765\u8FC7\u6EE4 database \u4E2D\u7684\u503C\u3002"
  12597. }
  12598. ]
  12599. },
  12600. "DVAR": {
  12601. "d": "\u4F7F\u7528 SQL \u5F0F\u67E5\u8BE2\uFF0C\u8FD4\u56DE\u5229\u7528\u5217\u8868\u6216\u6570\u636E\u5E93\u4E2D\u6EE1\u8DB3\u6307\u5B9A\u6761\u4EF6\u7684\u8BB0\u5F55\u5B57\u6BB5\uFF08\u5217\uFF09\u4E2D\u7684\u6570\u5B57\u4F5C\u4E3A\u4E00\u4E2A\u6837\u672C\u4F30\u7B97\u51FA\u7684\u603B\u4F53\u65B9\u5DEE\u3002",
  12602. "a": "\u4F7F\u7528 SQL \u5F0F\u67E5\u8BE2\uFF0C\u8FD4\u56DE\u5229\u7528\u5217\u8868\u6216\u6570\u636E\u5E93\u4E2D\u6EE1\u8DB3\u6307\u5B9A\u6761\u4EF6\u7684\u8BB0\u5F55\u5B57\u6BB5\uFF08\u5217\uFF09\u4E2D\u7684\u6570\u5B57\u4F5C\u4E3A\u4E00\u4E2A\u6837\u672C\u4F30\u7B97\u51FA\u7684\u603B\u4F53\u65B9\u5DEE\u3002",
  12603. "p": [
  12604. {
  12605. "name": "database",
  12606. "detail": "\u6784\u6210\u5217\u8868\u6216\u6570\u636E\u5E93\u7684\u5355\u5143\u683C\u533A\u57DF\uFF0C\u5217\u8868\u7684\u7B2C\u4E00\u884C\u5305\u542B\u6BCF\u4E00\u5217\u7684\u6807\u7B7E\u3002"
  12607. },
  12608. {
  12609. "name": "field",
  12610. "detail": "\u6307\u5B9A database \u4E2D\u7684\u54EA\u4E00\u5217\u5305\u542B\u8981\u63D0\u53D6\u548C\u7528\u4E8E\u8BA1\u7B97\u7684\u503C\u3002\n\nfield \u53EF\u4EE5\u662F\u4E0E database \u7B2C\u4E00\u884C\u4E2D\u67D0\u4E2A\u5217\u6807\u9898\u5BF9\u5E94\u7684\u6587\u672C\u6807\u7B7E\uFF0C\u4E5F\u53EF\u4EE5\u662F\u6307\u5B9A\u76F8\u5173\u5217\u7684\u6570\u5B57\u7D22\u5F15\uFF0C\u7B2C\u4E00\u5217\u7684\u7D22\u5F15\u503C\u4E3A 1\u3002"
  12611. },
  12612. {
  12613. "name": "criteria",
  12614. "detail": "\u5305\u542B\u6240\u6307\u5B9A\u6761\u4EF6\u7684\u5355\u5143\u683C\u533A\u57DF\u3002\u8BA1\u7B97\u4E4B\u524D\u5C06\u4F7F\u7528\u8FD9\u4E9B\u6761\u4EF6\u6765\u8FC7\u6EE4 database \u4E2D\u7684\u503C\u3002"
  12615. }
  12616. ]
  12617. },
  12618. "DVARP": {
  12619. "d": "\u4F7F\u7528 SQL \u5F0F\u67E5\u8BE2\uFF0C\u901A\u8FC7\u4F7F\u7528\u5217\u8868\u6216\u6570\u636E\u5E93\u4E2D\u6EE1\u8DB3\u6307\u5B9A\u6761\u4EF6\u7684\u8BB0\u5F55\u5B57\u6BB5\uFF08\u5217\uFF09\u4E2D\u7684\u6570\u5B57\u8BA1\u7B97\u6837\u672C\u603B\u4F53\u7684\u6837\u672C\u603B\u4F53\u65B9\u5DEE\u3002",
  12620. "a": "\u4F7F\u7528 SQL \u5F0F\u67E5\u8BE2\uFF0C\u901A\u8FC7\u4F7F\u7528\u5217\u8868\u6216\u6570\u636E\u5E93\u4E2D\u6EE1\u8DB3\u6307\u5B9A\u6761\u4EF6\u7684\u8BB0\u5F55\u5B57\u6BB5\uFF08\u5217\uFF09\u4E2D\u7684\u6570\u5B57\u8BA1\u7B97\u6837\u672C\u603B\u4F53\u7684\u6837\u672C\u603B\u4F53\u65B9\u5DEE\u3002",
  12621. "p": [
  12622. {
  12623. "name": "database",
  12624. "detail": "\u6784\u6210\u5217\u8868\u6216\u6570\u636E\u5E93\u7684\u5355\u5143\u683C\u533A\u57DF\uFF0C\u5217\u8868\u7684\u7B2C\u4E00\u884C\u5305\u542B\u6BCF\u4E00\u5217\u7684\u6807\u7B7E\u3002"
  12625. },
  12626. {
  12627. "name": "field",
  12628. "detail": "\u6307\u5B9A database \u4E2D\u7684\u54EA\u4E00\u5217\u5305\u542B\u8981\u63D0\u53D6\u548C\u7528\u4E8E\u8BA1\u7B97\u7684\u503C\u3002\n\nfield \u53EF\u4EE5\u662F\u4E0E database \u7B2C\u4E00\u884C\u4E2D\u67D0\u4E2A\u5217\u6807\u9898\u5BF9\u5E94\u7684\u6587\u672C\u6807\u7B7E\uFF0C\u4E5F\u53EF\u4EE5\u662F\u6307\u5B9A\u76F8\u5173\u5217\u7684\u6570\u5B57\u7D22\u5F15\uFF0C\u7B2C\u4E00\u5217\u7684\u7D22\u5F15\u503C\u4E3A 1\u3002"
  12629. },
  12630. {
  12631. "name": "criteria",
  12632. "detail": "\u5305\u542B\u6240\u6307\u5B9A\u6761\u4EF6\u7684\u5355\u5143\u683C\u533A\u57DF\u3002\u8BA1\u7B97\u4E4B\u524D\u5C06\u4F7F\u7528\u8FD9\u4E9B\u6761\u4EF6\u6765\u8FC7\u6EE4 database \u4E2D\u7684\u503C\u3002"
  12633. }
  12634. ]
  12635. },
  12636. "AGE_BY_IDCARD": {
  12637. "d": "\u6839\u636E\u4E2D\u56FD\u8EAB\u4EFD\u8BC1\u53F7\u8BA1\u7B97\u51FA\u5E74\u9F84\u3002\u652F\u630115\u4F4D\u621618\u4F4D\u8EAB\u4EFD\u8BC1",
  12638. "a": "\u6839\u636E\u8EAB\u4EFD\u8BC1\u53F7\u5F97\u5230\u5E74\u9F84\u3002",
  12639. "p": [
  12640. {
  12641. "name": "\u8EAB\u4EFD\u8BC1\u53F7",
  12642. "detail": "15\u4F4D\u6216\u800518\u4F4D\u7684\u8EAB\u4EFD\u8BC1\u53F7\u6216\u8303\u56F4\u3002"
  12643. },
  12644. {
  12645. "name": "\u622A\u6B62\u65E5\u671F",
  12646. "detail": "\u5E74\u9F84\u8BA1\u7B97\u7684\u622A\u6B62\u65E5\u671F\u6216\u8303\u56F4\uFF0C\u9ED8\u8BA4\u4E3A\u5F53\u65E5\u3002"
  12647. }
  12648. ]
  12649. },
  12650. "SEX_BY_IDCARD": {
  12651. "d": "\u6839\u636E\u4E2D\u56FD\u8EAB\u4EFD\u8BC1\u53F7\u8BA1\u7B97\u51FA\u6027\u522B\u3002\u652F\u630115\u4F4D\u621618\u4F4D\u8EAB\u4EFD\u8BC1",
  12652. "a": "\u6839\u636E\u8EAB\u4EFD\u8BC1\u53F7\u5F97\u5230\u6027\u522B\u3002",
  12653. "p": [
  12654. {
  12655. "name": "\u8EAB\u4EFD\u8BC1\u53F7",
  12656. "detail": "15\u4F4D\u6216\u800518\u4F4D\u7684\u8EAB\u4EFD\u8BC1\u53F7\u6216\u8303\u56F4\u3002"
  12657. }
  12658. ]
  12659. },
  12660. "BIRTHDAY_BY_IDCARD": {
  12661. "d": "\u6839\u636E\u4E2D\u56FD\u8EAB\u4EFD\u8BC1\u53F7\u8BA1\u7B97\u51FA\u751F\u65E5\u3002\u652F\u630115\u4F4D\u621618\u4F4D\u8EAB\u4EFD\u8BC1",
  12662. "a": "\u6839\u636E\u8EAB\u4EFD\u8BC1\u53F7\u5F97\u5230\u751F\u65E5\u3002",
  12663. "p": [
  12664. {
  12665. "name": "\u8EAB\u4EFD\u8BC1\u53F7",
  12666. "detail": "15\u4F4D\u6216\u800518\u4F4D\u7684\u8EAB\u4EFD\u8BC1\u53F7\u6216\u8303\u56F4\u3002"
  12667. },
  12668. {
  12669. "name": "\u751F\u65E5\u683C\u5F0F",
  12670. "detail": "\u65E5\u671F\u7C7B\u578B,\u9ED8\u8BA40:[1900/01/01], 1:[1900-01-01], 2:[1900\u5E741\u67081\u65E5]"
  12671. }
  12672. ]
  12673. },
  12674. "PROVINCE_BY_IDCARD": {
  12675. "d": "\u6839\u636E\u4E2D\u56FD\u8EAB\u4EFD\u8BC1\u53F7\u8BA1\u7B97\u51FA\u7C4D\u8D2F\u7684\u7701\u4EFD\u3002\u652F\u630115\u4F4D\u621618\u4F4D\u8EAB\u4EFD\u8BC1",
  12676. "a": "\u6839\u636E\u8EAB\u4EFD\u8BC1\u53F7\u5F97\u5230\u7C4D\u8D2F\u7684\u7701\u4EFD\u3002",
  12677. "p": [
  12678. {
  12679. "name": "\u8EAB\u4EFD\u8BC1\u53F7",
  12680. "detail": "15\u4F4D\u6216\u800518\u4F4D\u7684\u8EAB\u4EFD\u8BC1\u53F7\u6216\u8303\u56F4\u3002"
  12681. }
  12682. ]
  12683. },
  12684. "CITY_BY_IDCARD": {
  12685. "d": "\u6839\u636E\u4E2D\u56FD\u8EAB\u4EFD\u8BC1\u53F7\u8BA1\u7B97\u51FA\u7C4D\u8D2F\u7684\u57CE\u5E02\u3002\u652F\u630115\u4F4D\u621618\u4F4D\u8EAB\u4EFD\u8BC1",
  12686. "a": "\u6839\u636E\u8EAB\u4EFD\u8BC1\u53F7\u5F97\u5230\u7C4D\u8D2F\u7684\u57CE\u5E02\u3002",
  12687. "p": [
  12688. {
  12689. "name": "\u8EAB\u4EFD\u8BC1\u53F7",
  12690. "detail": "15\u4F4D\u6216\u800518\u4F4D\u7684\u8EAB\u4EFD\u8BC1\u53F7\u6216\u8303\u56F4\u3002"
  12691. }
  12692. ]
  12693. },
  12694. "STAR_BY_IDCARD": {
  12695. "d": "\u6839\u636E\u4E2D\u56FD\u8EAB\u4EFD\u8BC1\u53F7\u8BA1\u7B97\u51FA\u661F\u5EA7\u3002\u652F\u630115\u4F4D\u621618\u4F4D\u8EAB\u4EFD\u8BC1",
  12696. "a": "\u6839\u636E\u8EAB\u4EFD\u8BC1\u53F7\u5F97\u5230\u661F\u5EA7\u3002",
  12697. "p": [
  12698. {
  12699. "name": "\u8EAB\u4EFD\u8BC1\u53F7",
  12700. "detail": "15\u4F4D\u6216\u800518\u4F4D\u7684\u8EAB\u4EFD\u8BC1\u53F7\u6216\u8303\u56F4\u3002"
  12701. }
  12702. ]
  12703. },
  12704. "ANIMAL_BY_IDCARD": {
  12705. "d": "\u6839\u636E\u4E2D\u56FD\u8EAB\u4EFD\u8BC1\u53F7\u8BA1\u7B97\u51FA\u751F\u8096\uFF08\u9F20\u3001\u725B\u3001\u864E\u3001\u5154...\uFF09\u3002\u652F\u630115\u4F4D\u621618\u4F4D\u8EAB\u4EFD\u8BC1",
  12706. "a": "\u6839\u636E\u8EAB\u4EFD\u8BC1\u53F7\u5F97\u5230\u751F\u8096\u3002",
  12707. "p": [
  12708. {
  12709. "name": "\u8EAB\u4EFD\u8BC1\u53F7",
  12710. "detail": "15\u4F4D\u6216\u800518\u4F4D\u7684\u8EAB\u4EFD\u8BC1\u53F7\u6216\u8303\u56F4\u3002"
  12711. }
  12712. ]
  12713. },
  12714. "ISIDCARD": {
  12715. "d": "\u9A8C\u8BC1\u8EAB\u4EFD\u8BC1\u7684\u683C\u5F0F\u662F\u5426\u6B63\u786E\u3002\u652F\u630115\u4F4D\u621618\u4F4D\u8EAB\u4EFD\u8BC1",
  12716. "a": "\u9A8C\u8BC1\u8EAB\u4EFD\u8BC1\u683C\u5F0F\u6B63\u786E\u6027\u3002",
  12717. "p": [
  12718. {
  12719. "name": "\u8EAB\u4EFD\u8BC1\u53F7",
  12720. "detail": "15\u4F4D\u6216\u800518\u4F4D\u7684\u8EAB\u4EFD\u8BC1\u53F7\u6216\u8303\u56F4\u3002"
  12721. }
  12722. ]
  12723. },
  12724. "DM_TEXT_CUTWORD": {
  12725. "d": "\u6587\u672C\u5206\u8BCD\u3002\u628A\u4E00\u8FDE\u4E32\u6587\u5B57\u62C6\u5206\u4E3A\u4E00\u7CFB\u5217\u5355\u72EC\u8BCD\u8BED",
  12726. "a": "\u4E2D\u6587\u6587\u672C\u5206\u8BCD\u3002",
  12727. "p": [
  12728. {
  12729. "name": "\u6587\u672C",
  12730. "detail": "\u4EFB\u610F\u9700\u8981\u5206\u8BCD\u7684\u6587\u672C\u3002"
  12731. },
  12732. {
  12733. "name": "\u5206\u8BCD\u6A21\u5F0F",
  12734. "detail": "\u9ED8\u8BA4\u4E3A0[\u7CBE\u786E\u6A21\u5F0F], 1[\u5168\u6A21\u5F0F], 2[\u641C\u7D22\u5F15\u64CE\u6A21\u5F0F]\u3002"
  12735. }
  12736. ]
  12737. },
  12738. "DM_TEXT_TFIDF": {
  12739. "d": "\u91C7\u7528tf-idf\u7B97\u6CD5\u8FDB\u884C\u5173\u952E\u8BCD\u63D0\u53D6\u3002\u4ECE\u4E00\u8FDE\u4E32\u6587\u5B57\u4E2D\u8BC6\u522B\u5173\u952E\u8BCD",
  12740. "a": "tf-idf\u5173\u952E\u8BCD\u8BC6\u522B\u3002",
  12741. "p": [
  12742. {
  12743. "name": "\u6587\u672C",
  12744. "detail": "\u4EFB\u610F\u9700\u8981\u5206\u8BCD\u7684\u6587\u672C\u3002"
  12745. },
  12746. {
  12747. "name": "\u5173\u952E\u8BCD\u4E2A\u6570",
  12748. "detail": "\u7B97\u6CD5\u8FD4\u56DE\u7684\u5173\u952E\u8BCD\u4E2A\u6570\uFF0C\u9ED8\u8BA420"
  12749. },
  12750. {
  12751. "name": "\u8BED\u6599\u5E93",
  12752. "detail": "\u9009\u62E9\u7279\u5B9A\u9886\u57DF\u7684\u8BED\u6599\u5E93\uFF0C\u9ED8\u8BA40[\u901A\u7528], 1[\u91D1\u878D], 2[\u533B\u7597]"
  12753. }
  12754. ]
  12755. },
  12756. "DM_TEXT_TEXTRANK": {
  12757. "d": "\u91C7\u7528TextRank\u7B97\u6CD5\u8FDB\u884C\u5173\u952E\u8BCD\u63D0\u53D6\u3002\u4ECE\u4E00\u8FDE\u4E32\u6587\u5B57\u4E2D\u8BC6\u522B\u5173\u952E\u8BCD",
  12758. "a": "TextRank\u5173\u952E\u8BCD\u8BC6\u522B\u3002",
  12759. "p": [
  12760. {
  12761. "name": "\u6587\u672C",
  12762. "detail": "\u4EFB\u610F\u9700\u8981\u5206\u8BCD\u7684\u6587\u672C\u3002"
  12763. },
  12764. {
  12765. "name": "\u5173\u952E\u8BCD\u4E2A\u6570",
  12766. "detail": "\u7B97\u6CD5\u8FD4\u56DE\u7684\u5173\u952E\u8BCD\u4E2A\u6570\uFF0C\u9ED8\u8BA420"
  12767. },
  12768. {
  12769. "name": "\u8BED\u6599\u5E93",
  12770. "detail": "\u9009\u62E9\u7279\u5B9A\u9886\u57DF\u7684\u8BED\u6599\u5E93\uFF0C\u9ED8\u8BA40[\u901A\u7528], 1[\u91D1\u878D], 2[\u533B\u7597]"
  12771. }
  12772. ]
  12773. },
  12774. "DATA_CN_STOCK_CLOSE": {
  12775. "d": "\u6839\u636E\u80A1\u7968\u4EE3\u7801\u548C\u65E5\u671F\uFF0C\u8FD4\u56DEA\u80A1\u5BF9\u5E94\u80A1\u7968\u6536\u76D8\u4EF7\u3002",
  12776. "a": "\u8FD4\u56DEA\u80A1\u5BF9\u5E94\u80A1\u7968\u6536\u76D8\u4EF7\u3002",
  12777. "p": [
  12778. {
  12779. "name": "\u80A1\u7968\u4EE3\u7801",
  12780. "detail": "6\u4F4D\u80A1\u7968\u4EE3\u7801\uFF0C\u5FC5\u586B\u9879\u3002"
  12781. },
  12782. {
  12783. "name": "\u65E5\u671F",
  12784. "detail": "\u80A1\u7968\u7684\u4EA4\u6613\u65E5\uFF0C\u9ED8\u8BA4\u4E3A\u6700\u65B0\u4EA4\u6613\u65E5"
  12785. },
  12786. {
  12787. "name": "\u590D\u6743\u9664\u6743",
  12788. "detail": "\u9009\u62E9\u80A1\u7968\u7684\u9664\u6743\u590D\u6743\u7C7B\u578B\uFF0C\u9ED8\u8BA40[\u524D\u590D\u6743], 1[\u539F\u59CB\u4EF7\u683C], 2[\u540E\u590D\u6743]"
  12789. }
  12790. ]
  12791. },
  12792. "DATA_CN_STOCK_OPEN": {
  12793. "d": "\u6839\u636E\u80A1\u7968\u4EE3\u7801\u548C\u65E5\u671F\uFF0C\u8FD4\u56DEA\u80A1\u5BF9\u5E94\u80A1\u7968\u5F00\u76D8\u4EF7\u3002",
  12794. "a": "\u8FD4\u56DEA\u80A1\u5BF9\u5E94\u80A1\u7968\u5F00\u76D8\u4EF7\u3002",
  12795. "p": [
  12796. {
  12797. "name": "\u80A1\u7968\u4EE3\u7801",
  12798. "detail": "6\u4F4D\u80A1\u7968\u4EE3\u7801\uFF0C\u5FC5\u586B\u9879\u3002"
  12799. },
  12800. {
  12801. "name": "\u65E5\u671F",
  12802. "detail": "\u80A1\u7968\u7684\u4EA4\u6613\u65E5\uFF0C\u9ED8\u8BA4\u4E3A\u6700\u65B0\u4EA4\u6613\u65E5"
  12803. },
  12804. {
  12805. "name": "\u590D\u6743\u9664\u6743",
  12806. "detail": "\u9009\u62E9\u80A1\u7968\u7684\u9664\u6743\u590D\u6743\u7C7B\u578B\uFF0C\u9ED8\u8BA40[\u524D\u590D\u6743], 1[\u539F\u59CB\u4EF7\u683C], 2[\u540E\u590D\u6743]"
  12807. }
  12808. ]
  12809. },
  12810. "DATA_CN_STOCK_MAX": {
  12811. "d": "\u6839\u636E\u80A1\u7968\u4EE3\u7801\u548C\u65E5\u671F\uFF0C\u8FD4\u56DEA\u80A1\u5BF9\u5E94\u80A1\u7968\u6700\u9AD8\u4EF7\u3002",
  12812. "a": "\u8FD4\u56DEA\u80A1\u5BF9\u5E94\u80A1\u7968\u6700\u9AD8\u4EF7\u3002",
  12813. "p": [
  12814. {
  12815. "name": "\u80A1\u7968\u4EE3\u7801",
  12816. "detail": "6\u4F4D\u80A1\u7968\u4EE3\u7801\uFF0C\u5FC5\u586B\u9879\u3002"
  12817. },
  12818. {
  12819. "name": "\u65E5\u671F",
  12820. "detail": "\u80A1\u7968\u7684\u4EA4\u6613\u65E5\uFF0C\u9ED8\u8BA4\u4E3A\u6700\u65B0\u4EA4\u6613\u65E5"
  12821. },
  12822. {
  12823. "name": "\u590D\u6743\u9664\u6743",
  12824. "detail": "\u9009\u62E9\u80A1\u7968\u7684\u9664\u6743\u590D\u6743\u7C7B\u578B\uFF0C\u9ED8\u8BA40[\u524D\u590D\u6743], 1[\u539F\u59CB\u4EF7\u683C], 2[\u540E\u590D\u6743]"
  12825. }
  12826. ]
  12827. },
  12828. "DATA_CN_STOCK_MIN": {
  12829. "d": "\u6839\u636E\u80A1\u7968\u4EE3\u7801\u548C\u65E5\u671F\uFF0C\u8FD4\u56DEA\u80A1\u5BF9\u5E94\u80A1\u7968\u6700\u4F4E\u4EF7\u3002",
  12830. "a": "\u8FD4\u56DEA\u80A1\u5BF9\u5E94\u80A1\u7968\u6700\u4F4E\u4EF7\u3002",
  12831. "p": [
  12832. {
  12833. "name": "\u80A1\u7968\u4EE3\u7801",
  12834. "detail": "6\u4F4D\u80A1\u7968\u4EE3\u7801\uFF0C\u5FC5\u586B\u9879\u3002"
  12835. },
  12836. {
  12837. "name": "\u65E5\u671F",
  12838. "detail": "\u80A1\u7968\u7684\u4EA4\u6613\u65E5\uFF0C\u9ED8\u8BA4\u4E3A\u6700\u65B0\u4EA4\u6613\u65E5"
  12839. },
  12840. {
  12841. "name": "\u590D\u6743\u9664\u6743",
  12842. "detail": "\u9009\u62E9\u80A1\u7968\u7684\u9664\u6743\u590D\u6743\u7C7B\u578B\uFF0C\u9ED8\u8BA40[\u524D\u590D\u6743], 1[\u539F\u59CB\u4EF7\u683C], 2[\u540E\u590D\u6743]"
  12843. }
  12844. ]
  12845. },
  12846. "DATA_CN_STOCK_VOLUMN": {
  12847. "d": "\u6839\u636E\u80A1\u7968\u4EE3\u7801\u548C\u65E5\u671F\uFF0C\u8FD4\u56DEA\u80A1\u5BF9\u5E94\u80A1\u7968\u6210\u4EA4\u91CF\u3002",
  12848. "a": "\u8FD4\u56DEA\u80A1\u5BF9\u5E94\u80A1\u7968\u6210\u4EA4\u91CF\u3002",
  12849. "p": [
  12850. {
  12851. "name": "\u80A1\u7968\u4EE3\u7801",
  12852. "detail": "6\u4F4D\u80A1\u7968\u4EE3\u7801\uFF0C\u5FC5\u586B\u9879\u3002"
  12853. },
  12854. {
  12855. "name": "\u65E5\u671F",
  12856. "detail": "\u80A1\u7968\u7684\u4EA4\u6613\u65E5\uFF0C\u9ED8\u8BA4\u4E3A\u6700\u65B0\u4EA4\u6613\u65E5"
  12857. },
  12858. {
  12859. "name": "\u590D\u6743\u9664\u6743",
  12860. "detail": "\u9009\u62E9\u80A1\u7968\u7684\u9664\u6743\u590D\u6743\u7C7B\u578B\uFF0C\u9ED8\u8BA40[\u524D\u590D\u6743], 1[\u539F\u59CB\u4EF7\u683C], 2[\u540E\u590D\u6743]"
  12861. }
  12862. ]
  12863. },
  12864. "DATA_CN_STOCK_AMOUNT": {
  12865. "d": "\u6839\u636E\u80A1\u7968\u4EE3\u7801\u548C\u65E5\u671F\uFF0C\u8FD4\u56DEA\u80A1\u5BF9\u5E94\u80A1\u7968\u6210\u4EA4\u989D\u3002",
  12866. "a": "\u8FD4\u56DEA\u80A1\u5BF9\u5E94\u80A1\u7968\u6210\u4EA4\u989D\u3002",
  12867. "p": [
  12868. {
  12869. "name": "\u80A1\u7968\u4EE3\u7801",
  12870. "detail": "6\u4F4D\u80A1\u7968\u4EE3\u7801\uFF0C\u5FC5\u586B\u9879\u3002"
  12871. },
  12872. {
  12873. "name": "\u65E5\u671F",
  12874. "detail": "\u80A1\u7968\u7684\u4EA4\u6613\u65E5\uFF0C\u9ED8\u8BA4\u4E3A\u6700\u65B0\u4EA4\u6613\u65E5"
  12875. },
  12876. {
  12877. "name": "\u590D\u6743\u9664\u6743",
  12878. "detail": "\u9009\u62E9\u80A1\u7968\u7684\u9664\u6743\u590D\u6743\u7C7B\u578B\uFF0C\u9ED8\u8BA40[\u524D\u590D\u6743], 1[\u539F\u59CB\u4EF7\u683C], 2[\u540E\u590D\u6743]"
  12879. }
  12880. ]
  12881. },
  12882. "ISDATE": {
  12883. "d": "\u9A8C\u8BC1\u65E5\u671F\u7684\u683C\u5F0F\u662F\u5426\u6B63\u786E\u3002\u652F\u6301\u591A\u79CD\u65E5\u671F\u683C\u5F0F",
  12884. "a": "\u9A8C\u8BC1\u65E5\u671F\u683C\u5F0F\u6B63\u786E\u6027\u3002",
  12885. "p": [
  12886. {
  12887. "name": "\u65E5\u671F",
  12888. "detail": "\u65E5\u671F\u503C\uFF0C\u4F8B\u59821990/01/01, 1990\u5E741\u67081\u65E5\u7B49\u3002"
  12889. }
  12890. ]
  12891. },
  12892. "LINESPLINES": {
  12893. "d": "\u751F\u6210\u5D4C\u5165\u5728\u5355\u5143\u683C\u5185\u7684\u6298\u7EBF\u56FEsparklines\uFF0C\u7528\u4E8E\u63CF\u8FF0\u6570\u636E\u7684\u8FDE\u7EED\u8D70\u52BF",
  12894. "a": "\u751F\u6210\u5355\u5143\u683C\u6298\u7EBF\u56FE",
  12895. "p": [
  12896. {
  12897. "name": "\u6570\u636E\u8303\u56F4",
  12898. "detail": "\u6570\u636E\u8303\u56F4\uFF0C\u6570\u503C\u624D\u80FD\u88AB\u6709\u6548\u8BA1\u7B97\uFF0C\u4F8B\u5982A1:A20\uFF0C {1,2,3,4,5}\u7B49\u3002"
  12899. },
  12900. {
  12901. "name": "\u7EBF\u6761\u989C\u8272",
  12902. "detail": "\u7EBF\u56FE\u7684\u7EBF\u6761\u989C\u8272\uFF0C\u53EF\u4EE5\u662F\u5426\u4E2A\u8303\u56F4A1\u3001\u8272\u8868\u7D22\u5F15\u6570\u503C\u6216\u8005\u5177\u4F53\u989C\u8272\u503C\uFF0C\u8BBE\u7F6E\u4E3A0\u6216false\u5219\u4E0D\u663E\u793A\uFF0C\u652F\u6301regx\u3001rgb\u3001rgba\u7B49\u3002\u9ED8\u8BA4#2ec7c9"
  12903. },
  12904. {
  12905. "name": "\u7EBF\u6761\u7C97\u7EC6",
  12906. "detail": "\u6298\u7EBF\u56FE\u7EBF\u6BB5\u7C97\u7EC6\uFF0C\u9ED8\u8BA4\u4E3A1px"
  12907. },
  12908. {
  12909. "name": "\u8F85\u52A9\u7EBF",
  12910. "detail": "\u4E00\u6761\u6A2A\u7EBF\uFF0C\u53EF\u4EE5\u662Fmin\u3001max\u3001avg\u3001median\u3001\u8303\u56F4\u6216\u81EA\u5B9A\u4E49\u6570\u503C\uFF0C\u9ED8\u8BA40\u65E0"
  12911. },
  12912. {
  12913. "name": "\u8F85\u52A9\u7EBF\u989C\u8272",
  12914. "detail": "\u8F85\u52A9\u7EBF\u7684\u989C\u8272\u8BBE\u7F6E\uFF0C\u540C\u7EBF\u6761\u989C\u8272\u914D\u7F6E\uFF0C\u9ED8\u8BA4#000"
  12915. },
  12916. {
  12917. "name": "\u6700\u5927\u503C\u6807\u8BC6",
  12918. "detail": "\u6807\u8BC6\u7EBF\u56FE\u6700\u5927\u503C\uFF0C\u540C\u7EBF\u6761\u989C\u8272\u914D\u7F6E\uFF0C\u9ED8\u8BA40\u4E0D\u663E\u793A"
  12919. },
  12920. {
  12921. "name": "\u6700\u5C0F\u503C\u6807\u8BC6",
  12922. "detail": "\u6807\u8BC6\u7EBF\u56FE\u6700\u5C0F\u503C\uFF0C\u540C\u7EBF\u6761\u989C\u8272\u914D\u7F6E\uFF0C\u9ED8\u8BA40\u4E0D\u663E\u793A"
  12923. },
  12924. {
  12925. "name": "\u6807\u8BC6\u5927\u5C0F",
  12926. "detail": "\u6700\u5927\u503C\u548C\u6700\u5C0F\u503C\u7684\u6807\u8BC6\u5927\u5C0F\u8BBE\u7F6E\uFF0C\u9ED8\u8BA4\u4E3A1.5"
  12927. }
  12928. ]
  12929. },
  12930. "AREASPLINES": {
  12931. "d": "\u751F\u6210\u5D4C\u5165\u5728\u5355\u5143\u683C\u5185\u7684\u9762\u79EF\u56FEsparklines\uFF0C\u4E00\u822C\u7528\u4E8E\u63CF\u8FF0\u6570\u636E\u7684\u8FDE\u7EED\u7D2F\u79EF\u503C\u8D70\u52BF",
  12932. "a": "\u751F\u6210\u5355\u5143\u683C\u9762\u79EF\u56FE",
  12933. "p": [
  12934. {
  12935. "name": "\u6570\u636E\u8303\u56F4",
  12936. "detail": "\u6570\u636E\u8303\u56F4\uFF0C\u6570\u503C\u624D\u80FD\u88AB\u6709\u6548\u8BA1\u7B97\uFF0C\u4F8B\u5982A1:A20\uFF0C {1,2,3,4,5}\u7B49\u3002"
  12937. },
  12938. {
  12939. "name": "\u7EBF\u6761\u989C\u8272",
  12940. "detail": "\u7EBF\u56FE\u7684\u7EBF\u6761\u989C\u8272\uFF0C\u53EF\u4EE5\u662F\u5426\u4E2A\u8303\u56F4A1\u3001\u8272\u8868\u7D22\u5F15\u6570\u503C\u6216\u8005\u5177\u4F53\u989C\u8272\u503C\uFF0C\u8BBE\u7F6E\u4E3A0\u6216false\u5219\u4E0D\u663E\u793A\uFF0C\u652F\u6301regx\u3001rgb\u3001rgba\u7B49\u3002\u9ED8\u8BA4#2ec7c9"
  12941. },
  12942. {
  12943. "name": "\u586B\u5145\u989C\u8272",
  12944. "detail": "\u5F62\u6210\u9762\u79EF\u56FE\uFF0C\u540C\u7EBF\u6761\u989C\u8272\u914D\u7F6E\uFF0C\u9ED8\u8BA40\u4E0D\u663E\u793A"
  12945. },
  12946. {
  12947. "name": "\u7EBF\u6761\u7C97\u7EC6",
  12948. "detail": "\u6298\u7EBF\u56FE\u7EBF\u6BB5\u7C97\u7EC6\uFF0C\u9ED8\u8BA4\u4E3A1px"
  12949. },
  12950. {
  12951. "name": "\u8F85\u52A9\u7EBF",
  12952. "detail": "\u4E00\u6761\u6A2A\u7EBF\uFF0C\u53EF\u4EE5\u662Fmin\u3001max\u3001avg\u3001median\u3001\u8303\u56F4\u6216\u81EA\u5B9A\u4E49\u6570\u503C\uFF0C\u9ED8\u8BA40\u65E0"
  12953. },
  12954. {
  12955. "name": "\u8F85\u52A9\u7EBF\u989C\u8272",
  12956. "detail": "\u8F85\u52A9\u7EBF\u7684\u989C\u8272\u8BBE\u7F6E\uFF0C\u540C\u7EBF\u6761\u989C\u8272\u914D\u7F6E\uFF0C\u9ED8\u8BA4#000"
  12957. }
  12958. ]
  12959. },
  12960. "COLUMNSPLINES": {
  12961. "d": "\u751F\u6210\u5D4C\u5165\u5728\u5355\u5143\u683C\u5185\u7684\u5782\u76F4\u67F1\u72B6\u56FEsparklines\uFF0C\u4E00\u822C\u7528\u4E8E\u63CF\u8FF0\u79BB\u6563\u6570\u636E\u4E4B\u95F4\u7684\u5927\u5C0F\u60C5\u51B5",
  12962. "a": "\u751F\u6210\u5355\u5143\u683C\u5782\u76F4\u67F1\u72B6\u56FE",
  12963. "p": [
  12964. {
  12965. "name": "\u6570\u636E\u8303\u56F4",
  12966. "detail": "\u6570\u636E\u8303\u56F4\uFF0C\u6570\u503C\u624D\u80FD\u88AB\u6709\u6548\u8BA1\u7B97\uFF0C\u4F8B\u5982A1:A20\uFF0C {1,2,3,4,5}\u7B49\u3002"
  12967. },
  12968. {
  12969. "name": "\u67F1\u6761\u95F4\u9694",
  12970. "detail": "\u67F1\u6761\u4E4B\u95F4\u7684\u95F4\u9694\u8DDD\u79BB\uFF0C\u9ED8\u8BA4\u4E3A1"
  12971. },
  12972. {
  12973. "name": "\u67F1\u6761\u989C\u8272",
  12974. "detail": "\u7EBF\u56FE\u7684\u7EBF\u6761\u989C\u8272\uFF0C\u53EF\u4EE5\u662F\u5426\u4E2A\u8303\u56F4A1\u3001\u8272\u8868\u7D22\u5F15\u6570\u503C\u6216\u8005\u5177\u4F53\u989C\u8272\u503C\uFF0C\u8BBE\u7F6E\u4E3A0\u6216false\u5219\u4E0D\u663E\u793A\uFF0C\u652F\u6301regx\u3001rgb\u3001rgba\u7B49\u3002\u9ED8\u8BA4#fc5c5c"
  12975. },
  12976. {
  12977. "name": "\u8D1F\u5411\u67F1\u6761\u989C\u8272",
  12978. "detail": "\u8D1F\u5411\u67F1\u6761\u989C\u8272\u8BBE\u7F6E\uFF0C\u4EE3\u8868\u8D1F\u503C\u7684\u989C\u8272\uFF0C\u540C\u67F1\u6761\u989C\u8272\u914D\u7F6E\uFF0C\u9ED8\u8BA4#97b552"
  12979. },
  12980. {
  12981. "name": "\u6700\u5927\u503C",
  12982. "detail": "\u67F1\u56FE\u6700\u5927\u503C\uFF0C\u7528\u4E8E\u89C4\u8303\u67F1\u56FE\u957F\u5EA6\uFF0C\u9ED8\u8BA4\u4E3A\u81EA\u52A8\u8BA1\u7B97false\u3001auto\u3001null"
  12983. },
  12984. {
  12985. "name": "\u8272\u677F",
  12986. "detail": "\u8C03\u8272\u677F\u53EF\u4EE5\u5355\u72EC\u8BBE\u7F6E\u6BCF\u4E2A\u67F1\u6761\u7684\u989C\u8272\uFF0C\u53EF\u8BBE\u7F6E\u591A\u4E2A\uFF0C\u652F\u6301\u4E24\u79CD\u683C\u5F0F\uFF1A1\u989C\u8272\u4F8B\u5982#000\uFF0C\u4EE3\u8868\u7B2C\u4E00\u4E2A\u67F1\u7684\u989C\u8272\u662F\u9ED1\u8272\uFF1B2\u6570\u503C\u8303\u56F4:\u989C\u8272\uFF0C\u4F8B\u5982-2:#000\u8868\u793A\u6570\u503C\u4E3A-2\u7684\u67F1\u4E3A\u9ED1\u8272\uFF0C0:5:#000\u8868\u793A\u6570\u503C0-5\u7684\u67F1\u4E3A\u9ED1\u8272\uFF0C\u9ED8\u8BA4\u4E3A\u7A7A"
  12987. }
  12988. ]
  12989. },
  12990. "STACKCOLUMNSPLINES": {
  12991. "d": "\u751F\u6210\u5D4C\u5165\u5728\u5355\u5143\u683C\u5185\u7684\u7D2F\u79EF\u5782\u76F4\u67F1\u72B6\u56FEsparklines\uFF0C\u4E00\u822C\u7528\u4E8E\u63CF\u8FF0\u79BB\u6563\u6570\u636E\u591A\u4E2A\u7EF4\u5EA6\u7684\u6570\u503C\u5927\u5C0F",
  12992. "a": "\u751F\u6210\u5355\u5143\u683C\u7D2F\u79EF\u5782\u76F4\u67F1\u72B6\u56FE",
  12993. "p": [
  12994. {
  12995. "name": "\u6570\u636E\u8303\u56F4",
  12996. "detail": "\u6570\u636E\u8303\u56F4\uFF0C\u6570\u503C\u624D\u80FD\u88AB\u6709\u6548\u8BA1\u7B97\uFF0C\u4F8B\u5982A1:A20\uFF0C {1,2,3,4,5}\u7B49\u3002"
  12997. },
  12998. {
  12999. "name": "\u6309\u5217\u5806\u79EF",
  13000. "detail": "\u5982\u679C\u9700\u8981\u6309\u884C\u5806\u79EF\u5219\u672C\u9879\u8BBE\u4E3Afalse\u62160\uFF0C\u9ED8\u8BA4\u4E3A\u662F1"
  13001. },
  13002. {
  13003. "name": "\u67F1\u6761\u95F4\u9694",
  13004. "detail": "\u67F1\u6761\u4E4B\u95F4\u7684\u95F4\u9694\u8DDD\u79BB\uFF0C\u9ED8\u8BA4\u4E3A1"
  13005. },
  13006. {
  13007. "name": "\u6700\u5927\u503C",
  13008. "detail": "\u7D2F\u79EF\u67F1\u56FE\u6700\u5927\u503C\uFF0C\u7528\u4E8E\u89C4\u8303\u67F1\u56FE\u957F\u5EA6\uFF0C\u9ED8\u8BA4\u4E3A\u81EA\u52A8\u8BA1\u7B97false\u3001auto\u3001null"
  13009. },
  13010. {
  13011. "name": "\u7D2F\u79EF\u8272\u677F",
  13012. "detail": "\u8C03\u8272\u677F\u53EF\u4EE5\u5355\u72EC\u8BBE\u7F6E\u6BCF\u4E2A\u7EF4\u5EA6\u7684\u67F1\u6761\u989C\u8272\uFF0C\u53EF\u8BBE\u7F6E\u4E3AA1:A10\u7B49\u8303\u56F4\uFF0C\u9ED8\u8BA4\u4E3A#2ec7c9, #fc5c5c, #5ab1ef, #ffb980..."
  13013. }
  13014. ]
  13015. },
  13016. "BARSPLINES": {
  13017. "d": "\u751F\u6210\u5D4C\u5165\u5728\u5355\u5143\u683C\u5185\u7684\u6A2A\u5411\u6761\u5F62\u56FEsparklines\uFF0C\u4E00\u822C\u7528\u4E8E\u63CF\u8FF0\u79BB\u6563\u6570\u636E\u4E4B\u95F4\u7684\u5927\u5C0F\u60C5\u51B5",
  13018. "a": "\u751F\u6210\u5355\u5143\u683C\u6A2A\u5411\u6761\u5F62\u56FE",
  13019. "p": [
  13020. {
  13021. "name": "\u6570\u636E\u8303\u56F4",
  13022. "detail": "\u6570\u636E\u8303\u56F4\uFF0C\u6570\u503C\u624D\u80FD\u88AB\u6709\u6548\u8BA1\u7B97\uFF0C\u4F8B\u5982A1:A20\uFF0C {1,2,3,4,5}\u7B49\u3002"
  13023. },
  13024. {
  13025. "name": "\u67F1\u6761\u95F4\u9694",
  13026. "detail": "\u67F1\u6761\u4E4B\u95F4\u7684\u95F4\u9694\u8DDD\u79BB\uFF0C\u9ED8\u8BA4\u4E3A1"
  13027. },
  13028. {
  13029. "name": "\u67F1\u6761\u989C\u8272",
  13030. "detail": "\u7EBF\u56FE\u7684\u7EBF\u6761\u989C\u8272\uFF0C\u53EF\u4EE5\u662F\u5426\u4E2A\u8303\u56F4A1\u3001\u8272\u8868\u7D22\u5F15\u6570\u503C\u6216\u8005\u5177\u4F53\u989C\u8272\u503C\uFF0C\u8BBE\u7F6E\u4E3A0\u6216false\u5219\u4E0D\u663E\u793A\uFF0C\u652F\u6301regx\u3001rgb\u3001rgba\u7B49\u3002\u9ED8\u8BA4#fc5c5c"
  13031. },
  13032. {
  13033. "name": "\u8D1F\u5411\u67F1\u6761\u989C\u8272",
  13034. "detail": "\u8D1F\u5411\u67F1\u6761\u989C\u8272\u8BBE\u7F6E\uFF0C\u4EE3\u8868\u8D1F\u503C\u7684\u989C\u8272\uFF0C\u540C\u67F1\u6761\u989C\u8272\u914D\u7F6E\uFF0C\u9ED8\u8BA4#97b552"
  13035. },
  13036. {
  13037. "name": "\u6700\u5927\u503C",
  13038. "detail": "\u67F1\u56FE\u6700\u5927\u503C\uFF0C\u7528\u4E8E\u89C4\u8303\u67F1\u56FE\u957F\u5EA6\uFF0C\u9ED8\u8BA4\u4E3A\u81EA\u52A8\u8BA1\u7B97false\u3001auto\u3001null"
  13039. },
  13040. {
  13041. "name": "\u8272\u677F",
  13042. "detail": "\u8C03\u8272\u677F\u53EF\u4EE5\u5355\u72EC\u8BBE\u7F6E\u6BCF\u4E2A\u67F1\u6761\u7684\u989C\u8272\uFF0C\u53EF\u8BBE\u7F6E\u591A\u4E2A\uFF0C\u652F\u6301\u4E24\u79CD\u683C\u5F0F\uFF1A1\u989C\u8272\u4F8B\u5982#000\uFF0C\u4EE3\u8868\u7B2C\u4E00\u4E2A\u67F1\u7684\u989C\u8272\u662F\u9ED1\u8272\uFF1B2\u6570\u503C\u8303\u56F4:\u989C\u8272\uFF0C\u4F8B\u5982-2:#000\u8868\u793A\u6570\u503C\u4E3A-2\u7684\u67F1\u4E3A\u9ED1\u8272\uFF0C0:5:#000\u8868\u793A\u6570\u503C0-5\u7684\u67F1\u4E3A\u9ED1\u8272\uFF0C\u9ED8\u8BA4\u4E3A\u7A7A"
  13043. }
  13044. ]
  13045. },
  13046. "STACKBARSPLINES": {
  13047. "d": "\u751F\u6210\u5D4C\u5165\u5728\u5355\u5143\u683C\u5185\u7684\u7D2F\u79EF\u6A2A\u5411\u6761\u5F62\u56FEsparklines\uFF0C\u4E00\u822C\u7528\u4E8E\u63CF\u8FF0\u79BB\u6563\u6570\u636E\u591A\u4E2A\u7EF4\u5EA6\u7684\u6570\u503C\u5927\u5C0F",
  13048. "a": "\u751F\u6210\u5355\u5143\u683C\u7D2F\u79EF\u6A2A\u5411\u6761\u5F62\u56FE",
  13049. "p": [
  13050. {
  13051. "name": "\u6570\u636E\u8303\u56F4",
  13052. "detail": "\u6570\u636E\u8303\u56F4\uFF0C\u6570\u503C\u624D\u80FD\u88AB\u6709\u6548\u8BA1\u7B97\uFF0C\u4F8B\u5982A1:A20\uFF0C {1,2,3,4,5}\u7B49\u3002"
  13053. },
  13054. {
  13055. "name": "\u6309\u5217\u5806\u79EF",
  13056. "detail": "\u5982\u679C\u9700\u8981\u6309\u884C\u5806\u79EF\u5219\u672C\u9879\u8BBE\u4E3Afalse\u62160\uFF0C\u9ED8\u8BA4\u4E3A\u662F1"
  13057. },
  13058. {
  13059. "name": "\u67F1\u6761\u95F4\u9694",
  13060. "detail": "\u67F1\u6761\u4E4B\u95F4\u7684\u95F4\u9694\u8DDD\u79BB\uFF0C\u9ED8\u8BA4\u4E3A1"
  13061. },
  13062. {
  13063. "name": "\u6700\u5927\u503C",
  13064. "detail": "\u7D2F\u79EF\u67F1\u56FE\u6700\u5927\u503C\uFF0C\u7528\u4E8E\u89C4\u8303\u67F1\u56FE\u957F\u5EA6\uFF0C\u9ED8\u8BA4\u4E3A\u81EA\u52A8\u8BA1\u7B97false\u3001auto\u3001null"
  13065. },
  13066. {
  13067. "name": "\u7D2F\u79EF\u8272\u677F",
  13068. "detail": "\u8C03\u8272\u677F\u53EF\u4EE5\u5355\u72EC\u8BBE\u7F6E\u6BCF\u4E2A\u7EF4\u5EA6\u7684\u67F1\u6761\u989C\u8272\uFF0C\u53EF\u8BBE\u7F6E\u4E3AA1:A10\u7B49\u8303\u56F4\uFF0C\u9ED8\u8BA4\u4E3A#2ec7c9, #fc5c5c, #5ab1ef, #ffb980..."
  13069. }
  13070. ]
  13071. },
  13072. "DISCRETESPLINES": {
  13073. "d": "\u751F\u6210\u5D4C\u5165\u5728\u5355\u5143\u683C\u5185\u7684\u79BB\u6563\u56FEsparklines\uFF0C\u4E00\u822C\u7528\u4E8E\u63CF\u8FF0\u79BB\u6563\u6570\u636E\u8D70\u52BF",
  13074. "a": "\u751F\u6210\u5355\u5143\u683C\u79BB\u6563\u56FE",
  13075. "p": [
  13076. {
  13077. "name": "\u6570\u636E\u8303\u56F4",
  13078. "detail": "\u6570\u636E\u8303\u56F4\uFF0C\u6570\u503C\u624D\u80FD\u88AB\u6709\u6548\u8BA1\u7B97\uFF0C\u4F8B\u5982A1:A20\uFF0C {1,2,3,4,5}\u7B49\u3002"
  13079. },
  13080. {
  13081. "name": "\u5206\u5272\u9608\u503C",
  13082. "detail": "\u79BB\u6563\u56FE\u67F1\u5F62\u989C\u8272\u7684\u533A\u5206\uFF0C\u4F8B\u5982\uFF1A\u8BE5\u503C\u4E3A0\uFF0C\u5219\u5927\u4E8E0\u4E3A\u84DD\u8272\uFF0C\u5C0F\u4E8E0\u4E3A\u7EA2\u8272\uFF0C\u9ED8\u8BA4\u4E3A0"
  13083. },
  13084. {
  13085. "name": "\u9608\u503C\u4EE5\u4E0A\u989C\u8272",
  13086. "detail": "\u7EBF\u56FE\u7684\u7EBF\u6761\u989C\u8272\uFF0C\u53EF\u4EE5\u662F\u5426\u4E2A\u8303\u56F4A1\u3001\u8272\u8868\u7D22\u5F15\u6570\u503C\u6216\u8005\u5177\u4F53\u989C\u8272\u503C\uFF0C\u8BBE\u7F6E\u4E3A0\u6216false\u5219\u4E0D\u663E\u793A\uFF0C\u652F\u6301regx\u3001rgb\u3001rgba\u7B49\u3002\u9ED8\u8BA4#2ec7c9"
  13087. },
  13088. {
  13089. "name": "\u9608\u503C\u4EE5\u4E0B\u989C\u8272",
  13090. "detail": "\u9608\u503C\u4EE5\u4E0B\u67F1\u6761\u989C\u8272\u8BBE\u7F6E\uFF0C\u540C\u9608\u503C\u4EE5\u4E0A\u989C\u8272\uFF0C\u9ED8\u8BA4#fc5c5c"
  13091. }
  13092. ]
  13093. },
  13094. "TRISTATESPLINES": {
  13095. "d": "\u751F\u6210\u5D4C\u5165\u5728\u5355\u5143\u683C\u5185\u7684\u4E09\u6001\u56FEsparklines\uFF0C\u4E00\u822C\u7528\u4E8E\u63CF\u8FF0\u4E09\u79CD\u6001\u52BF\u7684\u8D70\u52BF\u4F8B\u5982\u80DC\u8D1F\u5E73",
  13096. "a": "\u751F\u6210\u5355\u5143\u683C\u4E09\u6001\u56FE",
  13097. "p": [
  13098. {
  13099. "name": "\u6570\u636E\u8303\u56F4",
  13100. "detail": "\u6570\u636E\u8303\u56F4\uFF0C\u6570\u503C\u624D\u80FD\u88AB\u6709\u6548\u8BA1\u7B97\uFF0C\u4F8B\u5982A1:A20\uFF0C {1,2,3,4,5}\u7B49\u3002"
  13101. },
  13102. {
  13103. "name": "\u67F1\u6761\u95F4\u9694",
  13104. "detail": "\u67F1\u6761\u4E4B\u95F4\u7684\u95F4\u9694\u8DDD\u79BB\uFF0C\u9ED8\u8BA4\u4E3A1"
  13105. },
  13106. {
  13107. "name": "\u67F1\u6761\u989C\u8272",
  13108. "detail": "\u7EBF\u56FE\u7684\u7EBF\u6761\u989C\u8272\uFF0C\u53EF\u4EE5\u662F\u5426\u4E2A\u8303\u56F4A1\u3001\u8272\u8868\u7D22\u5F15\u6570\u503C\u6216\u8005\u5177\u4F53\u989C\u8272\u503C\uFF0C\u8BBE\u7F6E\u4E3A0\u6216false\u5219\u4E0D\u663E\u793A\uFF0C\u652F\u6301regx\u3001rgb\u3001rgba\u7B49\u3002\u9ED8\u8BA4#fc5c5c"
  13109. },
  13110. {
  13111. "name": "\u8D1F\u5411\u67F1\u6761\u989C\u8272",
  13112. "detail": "\u8D1F\u5411\u67F1\u6761\u989C\u8272\u8BBE\u7F6E\uFF0C\u4EE3\u8868\u8D1F\u503C\u7684\u989C\u8272\uFF0C\u540C\u67F1\u6761\u989C\u8272\u914D\u7F6E\uFF0C\u9ED8\u8BA4#97b552"
  13113. },
  13114. {
  13115. "name": "\u96F6\u503C\u67F1\u6761\u989C\u8272",
  13116. "detail": "\u96F6\u503C\u67F1\u6761\u989C\u8272\u8BBE\u7F6E\uFF0C\u4EE3\u88680\u503C\u989C\u8272\uFF0C\u540C\u67F1\u6761\u989C\u8272\u914D\u7F6E\uFF0C\u9ED8\u8BA4#999"
  13117. },
  13118. {
  13119. "name": "\u8272\u677F",
  13120. "detail": "\u8C03\u8272\u677F\u53EF\u4EE5\u5355\u72EC\u8BBE\u7F6E\u6BCF\u4E2A\u67F1\u6761\u7684\u989C\u8272\uFF0C\u53EF\u8BBE\u7F6E\u591A\u4E2A\uFF0C\u652F\u6301\u4E24\u79CD\u683C\u5F0F\uFF1A1\u989C\u8272\u4F8B\u5982#000\uFF0C\u4EE3\u8868\u7B2C\u4E00\u4E2A\u67F1\u7684\u989C\u8272\u662F\u9ED1\u8272\uFF1B2\u6570\u503C\u8303\u56F4:\u989C\u8272\uFF0C\u4F8B\u5982-2:#000\u8868\u793A\u6570\u503C\u4E3A-2\u7684\u67F1\u4E3A\u9ED1\u8272\uFF0C0-5:#000\u8868\u793A\u6570\u503C0-5\u7684\u67F1\u4E3A\u9ED1\u8272\uFF0C\u9ED8\u8BA4\u4E3A\u7A7A"
  13121. }
  13122. ]
  13123. },
  13124. "PIESPLINES": {
  13125. "d": "\u751F\u6210\u5D4C\u5165\u5728\u5355\u5143\u683C\u5185\u7684\u997C\u56FEsparklines\uFF0C\u4E00\u822C\u7528\u4E8E\u63CF\u8FF0\u6570\u636E\u5360\u6BD4",
  13126. "a": "\u751F\u6210\u5355\u5143\u683C\u997C\u56FE",
  13127. "p": [
  13128. {
  13129. "name": "\u6570\u636E\u8303\u56F4",
  13130. "detail": "\u6570\u636E\u8303\u56F4\uFF0C\u6570\u503C\u624D\u80FD\u88AB\u6709\u6548\u8BA1\u7B97\uFF0C\u4F8B\u5982A1:A20\uFF0C {1,2,3,4,5}\u7B49\u3002"
  13131. },
  13132. {
  13133. "name": "\u65CB\u8F6C\u89D2\u5EA6",
  13134. "detail": "\u997C\u56FE\u7684\u65CB\u8F6C\u89D2\u5EA6\uFF0C\u9ED8\u8BA4\u4E3A0"
  13135. },
  13136. {
  13137. "name": "\u997C\u56FE\u8FB9\u6846",
  13138. "detail": "\u997C\u56FE\u8FB9\u6846\u5927\u5C0F\uFF0C\u9ED8\u8BA4\u4E3A\u65E00"
  13139. },
  13140. {
  13141. "name": "\u8FB9\u6846\u989C\u8272",
  13142. "detail": "\u997C\u56FE\u8FB9\u6846\u989C\u8272\uFF0C\u9ED8\u8BA4\u4E3A#000"
  13143. },
  13144. {
  13145. "name": "\u997C\u56FE\u8272\u677F",
  13146. "detail": "\u8C03\u8272\u677F\u53EF\u4EE5\u8BBE\u7F6E\u5207\u7247\u7684\u989C\u8272\uFF0C\u53EF\u8BBE\u7F6E\u4E3AA1:A10\u7B49\u8303\u56F4\uFF0C\u9ED8\u8BA4\u4E3A#2ec7c9, #fc5c5c, #5ab1ef, #ffb980..."
  13147. }
  13148. ]
  13149. },
  13150. "BOXSPLINES": {
  13151. "d": "\u751F\u6210\u5D4C\u5165\u5728\u5355\u5143\u683C\u5185\u7684\u7BB1\u7EBF\u56FEsparklines\uFF0C\u4E00\u822C\u7528\u4E8E\u63CF\u8FF0\u6570\u636E\u96C6\u7684\u7EDF\u8BA1\u5206\u5E03",
  13152. "a": "\u751F\u6210\u5355\u5143\u683C\u7BB1\u7EBF\u56FE",
  13153. "p": [
  13154. {
  13155. "name": "\u6570\u636E\u8303\u56F4",
  13156. "detail": "\u6570\u636E\u8303\u56F4\uFF0C\u6570\u503C\u624D\u80FD\u88AB\u6709\u6548\u8BA1\u7B97\uFF0C\u4F8B\u5982A1:A20\uFF0C {1,2,3,4,5}\u7B49\u3002"
  13157. },
  13158. {
  13159. "name": "\u79BB\u7FA4\u70B9\u6BD4\u4F8B",
  13160. "detail": "\u79BB\u7FA4\u70B9\u7684\u9608\u503C\u8303\u56F4\uFF0C\u5982\u679C\u4E3A0\u6216false\u5219\u4E0D\u663E\u793A\uFF0C\u9ED8\u8BA4\u4E3A1.5\u500D"
  13161. },
  13162. {
  13163. "name": "\u76EE\u6807\u70B9\u503C",
  13164. "detail": "\u7BB1\u7EBF\u56FE\u4E0A\u7684\u76EE\u6807\u503C\u8BBE\u7F6E\uFF0C\u9ED8\u8BA4\u4E3Afalse\u4E0D\u663E\u793A"
  13165. },
  13166. {
  13167. "name": "\u6570\u636E\u70B9\u5927\u5C0F",
  13168. "detail": "\u76EE\u6807\u70B9\u548C\u79BB\u7FA4\u70B9\u7684\u534A\u5F84\u5927\u5C0F\u8BBE\u7F6E\uFF0C\u9ED8\u8BA4\u4E3A1.5"
  13169. }
  13170. ]
  13171. },
  13172. "BULLETSPLINES": {
  13173. "d": "\u751F\u6210\u5D4C\u5165\u5728\u5355\u5143\u683C\u5185\u7684\u5B50\u5F39\u56FEsparklines\uFF0C\u4E00\u822C\u7528\u4E8E\u63CF\u8FF0\u4EFB\u52A1\u8FBE\u6210\u7387",
  13174. "a": "\u751F\u6210\u5355\u5143\u683C\u5B50\u5F39\u56FE",
  13175. "p": [
  13176. {
  13177. "name": "\u76EE\u6807",
  13178. "detail": "\u8FBE\u6210\u7684\u76EE\u6807\u503C\uFF0C\u6570\u503C\u624D\u80FD\u88AB\u6709\u6548\u8BA1\u7B97\uFF0C\u4F8B\u5982A1\uFF0C 100\u7B49\u3002"
  13179. },
  13180. {
  13181. "name": "\u5B9E\u9645\u5B8C\u6210",
  13182. "detail": "\u76EE\u524D\u5B8C\u6210\u503C\uFF0C\u6570\u503C\u624D\u80FD\u88AB\u6709\u6548\u8BA1\u7B97\uFF0C\u4F8B\u5982A1\uFF0C 100\u7B49\u3002"
  13183. },
  13184. {
  13185. "name": "\u5BF9\u6BD4\u503C",
  13186. "detail": "\u5BF9\u6BD4\u503C\uFF0C\u4F8B\u5982\u8D85\u989D\u3001\u6700\u4F4E\u3001\u83B7\u5956\u5E95\u7EBF\u7B49\uFF0C\u6570\u503C\u624D\u80FD\u88AB\u6709\u6548\u8BA1\u7B97\uFF0C\u4F8B\u5982A1\uFF0C 100\u7B49\u3002\u53EF\u4EE5\u8BBE\u7F6E\u6700\u591A9\u4E2A\u5BF9\u6BD4\u503C"
  13187. }
  13188. ]
  13189. },
  13190. "COMPOSESPLINES": {
  13191. "d": "\u652F\u6301\u591A\u4E2A\u7C7B\u578B\u7684\u56FE\u753B\u5728\u540C\u4E00\u4E2A\u5355\u5143\u683C,\u6BCF\u4E2A\u53C2\u6570\u4EE3\u8868\u4E00\u4E2Asparklines\u56FE",
  13192. "a": "\u7EC4\u5408sparklines\u56FE\u5230\u4E00\u4E2A\u5355\u5143\u683C",
  13193. "p": [
  13194. {
  13195. "name": "\u56FE\u8BBE\u7F6E",
  13196. "detail": "sparklines\u56FE\u8BBE\u7F6E\uFF0C\u4F8B\u5982A1:A20\uFF0C \u4E00\u4E2A\u5B8C\u6210\u7684\u997C\u56FE\u3001\u7EBF\u56FE\u8BBE\u7F6E\u7B49\u3002"
  13197. }
  13198. ]
  13199. },
  13200. "SORT": {
  13201. "d": "\u8FD4\u56DE\u6570\u7EC4\u4E2D\u5143\u7D20\u7684\u6392\u5E8F\u6570\u7EC4\u3002\u8FD4\u56DE\u7684\u6570\u7EC4\u4E0E\u63D0\u4F9B\u7684\u6570\u7EC4\u53C2\u6570\u5F62\u72B6\u76F8\u540C\u3002",
  13202. "a": "\u8FD4\u56DE\u6570\u7EC4\u4E2D\u5143\u7D20\u7684\u6392\u5E8F\u6570\u7EC4\u3002\u8FD4\u56DE\u7684\u6570\u7EC4\u4E0E\u63D0\u4F9B\u7684\u6570\u7EC4\u53C2\u6570\u5F62\u72B6\u76F8\u540C\u3002",
  13203. "p": [
  13204. {
  13205. "name": "array",
  13206. "detail": "\u8981\u6392\u5E8F\u7684\u8303\u56F4\u6216\u6570\u7EC4\u3002"
  13207. },
  13208. {
  13209. "name": "sort_index",
  13210. "detail": "[\u53EF\u9009] - \u8868\u793A\u8981\u6392\u5E8F\u7684\u884C\u6216\u5217\u7684\u6570\u5B57\u3002\uFF08\u9ED8\u8BA4row1/col1\uFF09"
  13211. },
  13212. {
  13213. "name": "sort_order",
  13214. "detail": "[\u53EF\u9009] - \u8868\u793A\u6240\u9700\u6392\u5E8F\u987A\u5E8F\u7684\u6570\u5B57\uFF1B1\u8868\u793A\u5347\u5E8F\uFF08\u9ED8\u8BA4\uFF09\uFF0C-1\u8868\u793A\u964D\u5E8F\u3002"
  13215. },
  13216. {
  13217. "name": "by_col",
  13218. "detail": "[\u53EF\u9009] - \u8868\u793A\u6240\u9700\u6392\u5E8F\u65B9\u5411\u7684\u903B\u8F91\u503C\uFF1B\u6309\u884C\u6392\u5E8F\u4E3AFALSE()\uFF08\u9ED8\u8BA4\uFF09\uFF0C\u6309\u5217\u6392\u5E8F\u4E3ATRUE()\u3002"
  13219. }
  13220. ]
  13221. },
  13222. "FILTER": {
  13223. "d": "\u57FA\u4E8E\u4E00\u4E2A\u5E03\u5C14\uFF08\u771F/\u5047\uFF09\u6570\u7EC4\u8FC7\u6EE4\u4E00\u4E2A\u6570\u7EC4\u3002",
  13224. "a": "\u57FA\u4E8E\u4E00\u4E2A\u5E03\u5C14\uFF08\u771F/\u5047\uFF09\u6570\u7EC4\u8FC7\u6EE4\u4E00\u4E2A\u6570\u7EC4\u3002",
  13225. "p": [
  13226. {
  13227. "name": "array",
  13228. "detail": "\u8981\u7B5B\u9009\u7684\u6570\u7EC4\u6216\u8303\u56F4\u3002"
  13229. },
  13230. {
  13231. "name": "include",
  13232. "detail": "\u5E03\u5C14\u6570\u7EC4\uFF0C\u5176\u9AD8\u5EA6\u6216\u5BBD\u5EA6\u4E0E\u6570\u7EC4\u76F8\u540C"
  13233. },
  13234. {
  13235. "name": "if_empty",
  13236. "detail": "[\u53EF\u9009] - \u5982\u679C\u5305\u542B\u6570\u7EC4\u4E2D\u7684\u6240\u6709\u503C\u90FD\u4E3A\u7A7A(filter\u4E0D\u8FD4\u56DE\u4EFB\u4F55\u503C)\uFF0C\u5219\u8FD4\u56DE\u7684\u503C\u3002"
  13237. }
  13238. ]
  13239. },
  13240. "UNIQUE": {
  13241. "d": "\u8FD4\u56DE\u5217\u8868\u6216\u533A\u57DF\u4E2D\u7684\u552F\u4E00\u503C\u7684\u5217\u8868\u3002",
  13242. "a": "\u8FD4\u56DE\u5217\u8868\u6216\u533A\u57DF\u4E2D\u7684\u552F\u4E00\u503C\u7684\u5217\u8868\u3002",
  13243. "p": [
  13244. {
  13245. "name": "array",
  13246. "detail": "\u4ECE\u5176\u8FD4\u56DE\u552F\u4E00\u503C\u7684\u6570\u7EC4\u6216\u533A\u57DF\u3002"
  13247. },
  13248. {
  13249. "name": "by_col",
  13250. "detail": "[\u53EF\u9009] - \u903B\u8F91\u503C\uFF0C\u6307\u793A\u5982\u4F55\u6BD4\u8F83\uFF1B\u6309\u884C = FALSE() \u6216\u7701\u7565\uFF1B\u6309\u5217 = TRUE()\u3002"
  13251. },
  13252. {
  13253. "name": "occurs_once",
  13254. "detail": "[\u53EF\u9009] - \u903B\u8F91\u503C\uFF0C\u4EC5\u8FD4\u56DE\u552F\u4E00\u503C\u4E2D\u51FA\u73B0\u4E00\u6B21 = TRUE()\uFF1B\u5305\u62EC\u6240\u6709\u552F\u4E00\u503C = FALSE() \u6216\u7701\u7565\u3002"
  13255. }
  13256. ]
  13257. },
  13258. "RANDARRAY": {
  13259. "d": "\u8FD4\u56DE 0 \u5230 1 \u4E4B\u95F4\u7684\u968F\u673A\u6570\u5B57\u6570\u7EC4\u3002",
  13260. "a": "\u8FD4\u56DE 0 \u5230 1 \u4E4B\u95F4\u7684\u968F\u673A\u6570\u5B57\u6570\u7EC4\u3002",
  13261. "p": [
  13262. {
  13263. "name": "rows",
  13264. "detail": "[\u53EF\u9009] - \u8981\u8FD4\u56DE\u7684\u884C\u6570\u3002"
  13265. },
  13266. {
  13267. "name": "cols",
  13268. "detail": "[\u53EF\u9009] - \u8981\u8FD4\u56DE\u7684\u5217\u6570\u3002"
  13269. }
  13270. ]
  13271. },
  13272. "SEQUENCE": {
  13273. "d": "\u751F\u6210\u6570\u5B57\u5E8F\u5217\u7684\u5217\u8868\u3002",
  13274. "a": "\u751F\u6210\u6570\u5B57\u5E8F\u5217\u7684\u5217\u8868\u3002",
  13275. "p": [
  13276. {
  13277. "name": "rows",
  13278. "detail": "\u8981\u8FD4\u56DE\u7684\u884C\u6570\u3002"
  13279. },
  13280. {
  13281. "name": "cols",
  13282. "detail": "[\u53EF\u9009] - \u8981\u8FD4\u56DE\u7684\u5217\u6570\u3002"
  13283. },
  13284. {
  13285. "name": "start",
  13286. "detail": "[\u53EF\u9009] - \u5E8F\u5217\u4E2D\u7684\u7B2C\u4E00\u4E2A\u6570\u5B57\u3002"
  13287. },
  13288. {
  13289. "name": "step",
  13290. "detail": "[\u53EF\u9009] - \u5E8F\u5217\u4E2D\u6BCF\u4E2A\u5E8F\u5217\u503C\u7684\u589E\u91CF\u3002"
  13291. }
  13292. ]
  13293. },
  13294. "EVALUATE": {
  13295. "d": "\u5BF9\u4EE5\u6587\u5B57\u8868\u793A\u7684\u516C\u5F0F\u6216\u8005\u8868\u8FBE\u5F0F\u6C42\u503C\uFF0C\u5E76\u8FD4\u56DE\u7ED3\u679C\u3002",
  13296. "a": "\u6839\u636E\u6587\u5B57\u516C\u5F0F\u6216\u8005\u8868\u8FBE\u5F0F\u6C42\u503C\u3002",
  13297. "p": [
  13298. {
  13299. "name": "\u516C\u5F0F",
  13300. "detail": "\u516C\u5F0F\u6216\u8868\u8FBE\u5F0F"
  13301. }
  13302. ]
  13303. },
  13304. "REMOTE": {
  13305. "d": "Calls a function on a remote server",
  13306. "a": "Calls a function on a remote back end server/API.",
  13307. "p": [
  13308. {
  13309. "name": "remote_expression",
  13310. "detail": "Formula"
  13311. }
  13312. ]
  13313. }
  13314. },
  13315. toolbar: {
  13316. undo: "\u64A4\u9500",
  13317. redo: "\u91CD\u505A",
  13318. paintFormat: "\u683C\u5F0F\u5237",
  13319. currencyFormat: "\u8D27\u5E01\u683C\u5F0F",
  13320. percentageFormat: "\u767E\u5206\u6BD4\u683C\u5F0F",
  13321. numberDecrease: "\u51CF\u5C11\u5C0F\u6570\u4F4D\u6570",
  13322. numberIncrease: "\u589E\u52A0\u5C0F\u6570\u4F4D\u6570",
  13323. moreFormats: "\u66F4\u591A\u683C\u5F0F",
  13324. font: "\u5B57\u4F53",
  13325. fontSize: "\u5B57\u53F7\u5927\u5C0F",
  13326. bold: "\u7C97\u4F53 (Ctrl+B)",
  13327. italic: "\u659C\u4F53 (Ctrl+I)",
  13328. strikethrough: "\u5220\u9664\u7EBF (Alt+Shift+5)",
  13329. underline: "\u4E0B\u5212\u7EBF",
  13330. textColor: "\u6587\u672C\u989C\u8272",
  13331. chooseColor: "\u989C\u8272\u9009\u62E9",
  13332. resetColor: "\u91CD\u7F6E\u989C\u8272",
  13333. customColor: "\u81EA\u5B9A\u4E49",
  13334. alternatingColors: "\u4EA4\u66FF\u989C\u8272",
  13335. confirmColor: "\u786E\u5B9A\u989C\u8272",
  13336. cancelColor: "\u53D6\u6D88",
  13337. collapse: "\u6536\u8D77",
  13338. fillColor: "\u5355\u5143\u683C\u989C\u8272",
  13339. border: "\u8FB9\u6846",
  13340. borderStyle: "\u8FB9\u6846\u7C7B\u578B",
  13341. mergeCell: "\u5408\u5E76\u5355\u5143\u683C",
  13342. chooseMergeType: "\u9009\u62E9\u5408\u5E76\u7C7B\u578B",
  13343. horizontalAlign: "\u6C34\u5E73\u5BF9\u9F50",
  13344. verticalAlign: "\u5782\u76F4\u5BF9\u9F50",
  13345. alignment: "\u5BF9\u9F50\u65B9\u5F0F",
  13346. textWrap: "\u6587\u672C\u6362\u884C",
  13347. textWrapMode: "\u6362\u884C\u65B9\u5F0F",
  13348. textRotate: "\u6587\u672C\u65CB\u8F6C",
  13349. textRotateMode: "\u65CB\u8F6C\u65B9\u5F0F",
  13350. freezeTopRow: "\u51BB\u7ED3\u7B2C\u4E00\u884C",
  13351. sortAndFilter: "\u6392\u5E8F\u548C\u7B5B\u9009",
  13352. findAndReplace: "\u67E5\u627E\u66FF\u6362",
  13353. sum: "\u6C42\u548C",
  13354. autoSum: "\u81EA\u52A8\u6C42\u548C",
  13355. moreFunction: "\u66F4\u591A\u51FD\u6570",
  13356. conditionalFormat: "\u6761\u4EF6\u683C\u5F0F",
  13357. postil: "\u6279\u6CE8",
  13358. pivotTable: "\u6570\u636E\u900F\u89C6\u8868",
  13359. chart: "\u56FE\u8868",
  13360. screenshot: "\u622A\u56FE",
  13361. splitColumn: "\u5206\u5217",
  13362. insertImage: "\u63D2\u5165\u56FE\u7247",
  13363. insertLink: "\u63D2\u5165\u94FE\u63A5",
  13364. dataVerification: "\u6570\u636E\u9A8C\u8BC1",
  13365. protection: "\u4FDD\u62A4\u5DE5\u4F5C\u8868\u5185\u5BB9",
  13366. clearText: "\u6E05\u9664\u989C\u8272\u9009\u62E9",
  13367. noColorSelectedText: "\u6CA1\u6709\u989C\u8272\u88AB\u9009\u62E9",
  13368. toolMore: "\u66F4\u591A",
  13369. toolLess: "\u5C11\u4E8E",
  13370. toolClose: "\u6536\u8D77",
  13371. toolMoreTip: "\u66F4\u591A\u529F\u80FD",
  13372. moreOptions: "\u66F4\u591A\u9009\u9879",
  13373. cellFormat: "\u8BBE\u7F6E\u5355\u5143\u683C\u683C\u5F0F",
  13374. print: "\u6253\u5370"
  13375. },
  13376. alternatingColors: {
  13377. applyRange: "\u5E94\u7528\u8303\u56F4",
  13378. selectRange: "\u9009\u62E9\u5E94\u7528\u8303\u56F4",
  13379. header: "\u9875\u7709",
  13380. footer: "\u9875\u811A",
  13381. errorInfo: "\u4E0D\u80FD\u5BF9\u591A\u91CD\u9009\u62E9\u533A\u57DF\u6267\u884C\u6B64\u64CD\u4F5C\uFF0C\u8BF7\u9009\u62E9\u5355\u4E2A\u533A\u57DF\uFF0C\u7136\u540E\u518D\u8BD5",
  13382. textTitle: "\u683C\u5F0F\u6837\u5F0F",
  13383. custom: "\u81EA\u5B9A\u4E49",
  13384. close: "\u5173\u95ED",
  13385. selectionTextColor: "\u9009\u62E9\u6587\u672C\u989C\u8272",
  13386. selectionCellColor: "\u9009\u62E9\u5355\u5143\u683C\u989C\u8272",
  13387. removeColor: "\u79FB\u9664\u4EA4\u66FF\u989C\u8272",
  13388. colorShow: "\u989C\u8272",
  13389. currentColor: "\u5F53\u524D\u989C\u8272",
  13390. tipSelectRange: "\u8BF7\u9009\u62E9\u4EA4\u66FF\u989C\u8272\u5E94\u7528\u8303\u56F4",
  13391. errorNoRange: "\u60A8\u9009\u62E9\u7684\u5E94\u7528\u8303\u56F4\u4E0D\u662F\u9009\u533A\uFF01",
  13392. errorExistColors: "\u60A8\u9009\u62E9\u7684\u5E94\u7528\u8303\u56F4\u5DF2\u5B58\u5728\u4EA4\u66FF\u989C\u8272\u4E14\u4E0D\u5C5E\u4E8E\u4F60\u8981\u7F16\u8F91\u7684\u5E94\u7528\u8303\u56F4\uFF01"
  13393. },
  13394. button: {
  13395. confirm: "\u786E\u5B9A",
  13396. cancel: "\u53D6\u6D88",
  13397. close: "\u5173\u95ED",
  13398. update: "Update",
  13399. delete: "Delete",
  13400. insert: "\u65B0\u5EFA",
  13401. prevPage: "\u4E0A\u4E00\u9875",
  13402. nextPage: "\u4E0B\u4E00\u9875",
  13403. total: "\u603B\u5171\uFF1A"
  13404. },
  13405. paint: {
  13406. start: "\u683C\u5F0F\u5237\u5F00\u542F",
  13407. end: "ESC\u952E\u9000\u51FA",
  13408. tipSelectRange: "\u8BF7\u9009\u62E9\u9700\u8981\u590D\u5236\u683C\u5F0F\u7684\u533A\u57DF",
  13409. tipNotMulti: "\u65E0\u6CD5\u5BF9\u591A\u91CD\u9009\u62E9\u533A\u57DF\u6267\u884C\u6B64\u64CD\u4F5C"
  13410. },
  13411. format: {
  13412. moreCurrency: "\u66F4\u591A\u8D27\u5E01\u683C\u5F0F",
  13413. moreDateTime: "\u66F4\u591A\u65E5\u671F\u4E0E\u65F6\u95F4\u683C\u5F0F",
  13414. moreNumber: "\u66F4\u591A\u6570\u5B57\u683C\u5F0F",
  13415. titleCurrency: "\u8D27\u5E01\u683C\u5F0F",
  13416. decimalPlaces: "\u5C0F\u6570\u4F4D\u6570",
  13417. titleDateTime: "\u65E5\u671F\u4E0E\u65F6\u95F4\u683C\u5F0F",
  13418. titleNumber: "\u6570\u5B57\u683C\u5F0F"
  13419. },
  13420. info: {
  13421. detailUpdate: "\u65B0\u6253\u5F00",
  13422. detailSave: "\u5DF2\u6062\u590D\u672C\u5730\u7F13\u5B58",
  13423. row: "\u884C",
  13424. column: "\u5217",
  13425. loading: "\u6E32\u67D3\u4E2D\xB7\xB7\xB7",
  13426. copy: "\u526F\u672C",
  13427. return: "\u8FD4\u56DE",
  13428. rename: "\u91CD\u547D\u540D",
  13429. tips: "\u8868\u683C\u91CD\u547D\u540D",
  13430. noName: "\u65E0\u6807\u9898\u7684\u7535\u5B50\u8868\u683C",
  13431. wait: "\u5F85\u66F4\u65B0",
  13432. add: "\u6DFB\u52A0",
  13433. addLast: "\u5728\u5E95\u90E8\u6DFB\u52A0",
  13434. backTop: "\u56DE\u5230\u9876\u90E8",
  13435. pageInfo: "\u5171${total}\u6761\uFF0C${totalPage}\u9875\uFF0C\u5F53\u524D\u5DF2\u663E\u793A${currentPage}\u9875",
  13436. nextPage: "\u4E0B\u4E00\u9875",
  13437. tipInputNumber: "\u8BF7\u8F93\u5165\u6570\u5B57",
  13438. tipInputNumberLimit: "\u589E\u52A0\u8303\u56F4\u9650\u5236\u57281-100",
  13439. tipRowHeightLimit: "\u884C\u9AD8\u5FC5\u987B\u57280 ~ 545\u4E4B\u95F4",
  13440. tipColumnWidthLimit: "\u5217\u5BBD\u5FC5\u987B\u57280 ~ 2038\u4E4B\u95F4",
  13441. pageInfoFull: "\u5171${total}\u6761\uFF0C${totalPage}\u9875\uFF0C\u5DF2\u663E\u793A\u5168\u90E8\u6570\u636E"
  13442. },
  13443. currencyDetail: {
  13444. RMB: "\u4EBA\u6C11\u5E01",
  13445. USdollar: "\u7F8E\u5143",
  13446. EUR: "\u6B27\u5143",
  13447. GBP: "\u82F1\u9551",
  13448. HK: "\u6E2F\u5143",
  13449. JPY: "\u65E5\u5143",
  13450. AlbanianLek: "\u963F\u5C14\u5DF4\u5C3C\u4E9A\u5217\u514B",
  13451. AlgerianDinar: "\u963F\u5C14\u53CA\u5229\u4E9A\u7B2C\u7EB3\u5C14",
  13452. Afghani: "\u963F\u5BCC\u6C57\u5C3C",
  13453. ArgentinePeso: "\u963F\u6839\u5EF7\u6BD4\u7D22",
  13454. UnitedArabEmiratesDirham: "\u963F\u62C9\u4F2F\u8054\u5408\u914B\u957F\u56FD\u8FEA\u62C9\u59C6",
  13455. ArubanFlorin: "\u963F\u9C81\u5DF4\u5F17\u7F57\u6797",
  13456. OmaniRial: "\u963F\u66FC\u91CC\u4E9A\u5C14",
  13457. Azerbaijanimanat: "\u963F\u585E\u62DC\u7586\u9A6C\u7EB3\u7279",
  13458. EgyptianPound: "\u57C3\u53CA\u9551",
  13459. EthiopianBirr: "\u57C3\u585E\u4FC4\u6BD4\u4E9A\u6BD4\u5C14",
  13460. AngolaKwanza: "\u5B89\u54E5\u62C9\u5BBD\u624E",
  13461. AustralianDollar: "\u6FB3\u5927\u5229\u4E9A\u5143",
  13462. Patacas: "\u6FB3\u95E8\u5143",
  13463. BarbadosDollar: "\u5DF4\u5DF4\u591A\u65AF\u5143",
  13464. PapuaNewGuineaKina: "\u5DF4\u5E03\u4E9A\u65B0\u51E0\u5185\u4E9A\u57FA\u90A3",
  13465. BahamianDollar: "\u5DF4\u54C8\u9A6C\u5143",
  13466. PakistanRupee: "\u5DF4\u57FA\u65AF\u5766\u5362\u6BD4",
  13467. ParaguayanGuarani: "\u5DF4\u62C9\u572D\u74DC\u62C9\u5C3C",
  13468. BahrainiDinar: "\u5DF4\u6797\u7B2C\u7EB3\u5C14",
  13469. PanamanianBalboa: "\u5DF4\u62FF\u9A6C\u5DF4\u6CE2\u4E9A",
  13470. Brazilianreal: "\u5DF4\u897F\u91CC\u4E9A\u4F0A",
  13471. Belarusianruble: "\u767D\u4FC4\u7F57\u65AF\u5362\u5E03",
  13472. BermudianDollar: "\u767E\u6155\u5927\u5143",
  13473. BulgarianLev: "\u4FDD\u52A0\u5229\u4E9A\u5217\u5F17",
  13474. IcelandKrona: "\u51B0\u5C9B\u514B\u6717",
  13475. BosniaHerzegovinaConvertibleMark: "\u6CE2\u9ED1\u53EF\u5151\u6362\u9A6C\u514B",
  13476. PolishZloty: "\u6CE2\u5170\u5179\u7F57\u63D0",
  13477. Boliviano: "\u73BB\u5229\u7EF4\u4E9A\u8BFA",
  13478. BelizeDollar: "\u4F2F\u5229\u5179\u5143",
  13479. BotswanaPula: "\u535A\u8328\u74E6\u7EB3\u666E\u62C9",
  13480. NotDannuzhamu: "\u4E0D\u4E39\u52AA\u624E\u59C6",
  13481. BurundiFranc: "\u5E03\u9686\u8FEA\u6CD5\u90CE",
  13482. NorthKoreanWon: "\u671D\u9C9C\u5706",
  13483. DanishKrone: "\u4E39\u9EA6\u514B\u6717",
  13484. EastCaribbeanDollar: "\u4E1C\u52A0\u52D2\u6BD4\u5143",
  13485. DominicaPeso: "\u591A\u7C73\u5C3C\u52A0\u6BD4\u7D22",
  13486. RussianRuble: "\u4FC4\u56FD\u5362\u5E03",
  13487. EritreanNakfa: "\u5384\u7ACB\u7279\u91CC\u4E9A\u7EB3\u514B\u6CD5",
  13488. CFAfranc: "\u975E\u6D32\u91D1\u878D\u5171\u540C\u4F53\u6CD5\u90CE",
  13489. PhilippinePeso: "\u83F2\u5F8B\u5BBE\u6BD4\u7D22",
  13490. FijiDollar: "\u6590\u6D4E\u5143",
  13491. CapeVerdeEscudo: "\u4F5B\u5F97\u89D2\u57C3\u65AF\u5E93\u591A",
  13492. FalklandIslandsPound: "\u798F\u514B\u5170\u7FA4\u5C9B\u9551",
  13493. GambianDalasi: "\u5188\u6BD4\u4E9A\u8FBE\u62C9\u897F",
  13494. Congolesefranc: "\u521A\u679C\u6CD5\u90CE",
  13495. ColombianPeso: "\u54E5\u4F26\u6BD4\u4E9A\u6BD4\u7D22",
  13496. CostaRicanColon: "\u54E5\u65AF\u8FBE\u9ECE\u52A0\u79D1\u6717",
  13497. CubanPeso: "\u53E4\u5DF4\u6BD4\u7D22",
  13498. Cubanconvertiblepeso: "\u53E4\u5DF4\u53EF\u5151\u6362\u6BD4\u7D22",
  13499. GuyanaDollar: "\u572D\u4E9A\u90A3\u5143",
  13500. KazakhstanTenge: "\u54C8\u8428\u514B\u65AF\u5766\u575A\u6208",
  13501. Haitiangourde: "\u6D77\u5730\u53E4\u5FB7",
  13502. won: "\u97E9\u5143",
  13503. NetherlandsAntillesGuilder: "\u8377\u5C5E\u5B89\u7684\u5217\u65AF\u76FE",
  13504. Honduraslempiras: "\u6D2A\u90FD\u62C9\u65AF\u62C9\u4F26\u76AE\u62C9",
  13505. DjiboutiFranc: "\u5409\u5E03\u63D0\u6CD5\u90CE",
  13506. KyrgyzstanSom: "\u5409\u5C14\u5409\u65AF\u65AF\u5766\u7D22\u59C6",
  13507. GuineaFranc: "\u51E0\u5185\u4E9A\u6CD5\u90CE",
  13508. CanadianDollar: "\u52A0\u62FF\u5927\u5143",
  13509. GhanaianCedi: "\u52A0\u7EB3\u585E\u5730",
  13510. Cambodianriel: "\u67EC\u57D4\u5BE8\u745E\u5C14",
  13511. CzechKoruna: "\u6377\u514B\u514B\u6717",
  13512. ZimbabweDollar: "\u6D25\u5DF4\u5E03\u97E6\u5143",
  13513. QatariRiyal: "\u5361\u5854\u5C14\u91CC\u4E9A\u5C14",
  13514. CaymanIslandsDollar: "\u5F00\u66FC\u7FA4\u5C9B\u5143",
  13515. Comorianfranc: "\u79D1\u6469\u7F57\u6CD5\u90CE",
  13516. KuwaitiDinar: "\u79D1\u5A01\u7279\u7B2C\u7EB3\u5C14",
  13517. CroatianKuna: "\u514B\u7F57\u5730\u4E9A\u5E93\u7EB3",
  13518. KenyanShilling: "\u80AF\u5C3C\u4E9A\u5148\u4EE4",
  13519. LesothoLoti: "\u83B1\u7D22\u6258\u6D1B\u8482",
  13520. LaoKip: "\u8001\u631D\u57FA\u666E",
  13521. LebanesePound: "\u9ECE\u5DF4\u5AE9\u9551",
  13522. Lithuanianlitas: "\u7ACB\u9676\u5B9B\u7ACB\u7279",
  13523. LibyanDinar: "\u5229\u6BD4\u4E9A\u7B2C\u7EB3\u5C14",
  13524. LiberianDollar: "\u5229\u6BD4\u4E9A\u5143",
  13525. RwandaFranc: "\u5362\u65FA\u8FBE\u6CD5\u90CE",
  13526. RomanianLeu: "\u7F57\u9A6C\u5C3C\u4E9A\u5217\u4F0A",
  13527. MalagasyAriary: "\u9A6C\u8FBE\u52A0\u65AF\u52A0\u963F\u91CC\u4E9A\u91CC",
  13528. MaldivianRufiyaa: "\u9A6C\u5C14\u4EE3\u592B\u62C9\u83F2\u4E9A",
  13529. MalawiKwacha: "\u9A6C\u62C9\u7EF4\u514B\u74E6\u67E5",
  13530. MalaysianRinggit: "\u9A6C\u6765\u897F\u4E9A\u6797\u5409\u7279",
  13531. MacedoniawearingDinar: "\u9A6C\u5176\u987F\u6234\u7B2C\u7EB3\u5C14",
  13532. MauritiusRupee: "\u6BDB\u91CC\u6C42\u65AF\u5362\u6BD4",
  13533. MauritanianOuguiya: "\u6BDB\u91CC\u5854\u5C3C\u4E9A\u4E4C\u5409\u4E9A",
  13534. MongolianTugrik: "\u8499\u53E4\u56FE\u683C\u91CC\u514B",
  13535. BangladeshiTaka: "\u5B5F\u52A0\u62C9\u5854\u5361",
  13536. PeruvianNuevoSol: "\u79D8\u9C81\u65B0\u7D22\u5C14",
  13537. MyanmarKyat: "\u7F05\u7538\u5F00\u4E9A\u7279",
  13538. MoldovanLeu: "\u6469\u5C14\u591A\u74E6\u5217\u4F0A",
  13539. MoroccanDirham: "\u6469\u6D1B\u54E5\u8FEA\u62C9\u59C6",
  13540. MozambiqueMetical: "\u83AB\u6851\u6BD4\u514B\u6885\u8482\u5361\u5C14",
  13541. MexicanPeso: "\u58A8\u897F\u54E5\u6BD4\u7D22",
  13542. NamibianDollar: "\u7EB3\u7C73\u6BD4\u4E9A\u5143",
  13543. SouthAfricanRand: "\u5357\u975E\u5170\u7279",
  13544. SouthSudanesePound: "\u5357\u82CF\u4E39\u9551",
  13545. NicaraguaCordoba: "\u5C3C\u52A0\u62C9\u74DC\u79D1\u591A\u5DF4",
  13546. NepaleseRupee: "\u5C3C\u6CCA\u5C14\u5362\u6BD4",
  13547. NigerianNaira: "\u5C3C\u65E5\u5229\u4E9A\u5948\u62C9",
  13548. NorwegianKrone: "\u632A\u5A01\u514B\u6717",
  13549. GeorgianLari: "\u4E54\u6CBB\u4E9A\u62C9\u745E",
  13550. RMBOffshore: "\u4EBA\u6C11\u5E01\uFF08\u79BB\u5CB8\uFF09",
  13551. SwedishKrona: "\u745E\u5178\u514B\u6717",
  13552. SwissFranc: "\u745E\u58EB\u6CD5\u90CE",
  13553. SerbianDinar: "\u585E\u5C14\u7EF4\u4E9A\u7B2C\u7EB3\u5C14",
  13554. SierraLeone: "\u585E\u62C9\u5229\u6602\u5229\u6602",
  13555. SeychellesRupee: "\u585E\u820C\u5C14\u5362\u6BD4",
  13556. SaudiRiyal: "\u6C99\u7279\u91CC\u4E9A\u5C14",
  13557. SaoTomeDobra: "\u5723\u591A\u7F8E\u591A\u5E03\u62C9",
  13558. SaintHelenapound: "\u5723\u8D6B\u52D2\u62FF\u7FA4\u5C9B\u78C5",
  13559. SriLankaRupee: "\u65AF\u91CC\u5170\u5361\u5362\u6BD4",
  13560. SwazilandLilangeni: "\u65AF\u5A01\u58EB\u5170\u91CC\u5170\u5409\u5C3C",
  13561. SudanesePound: "\u82CF\u4E39\u9551",
  13562. Surinamesedollar: "\u82CF\u91CC\u5357\u5143",
  13563. SolomonIslandsDollar: "\u6240\u7F57\u95E8\u7FA4\u5C9B\u5143",
  13564. SomaliShilling: "\u7D22\u9A6C\u91CC\u5148\u4EE4",
  13565. TajikistanSomoni: "\u5854\u5409\u514B\u65AF\u5766\u7D22\u83AB\u5C3C",
  13566. PacificFranc: "\u592A\u5E73\u6D0B\u6CD5\u90CE",
  13567. ThaiBaht: "\u6CF0\u56FD\u94E2",
  13568. TanzanianShilling: "\u5766\u6851\u5C3C\u4E9A\u5148\u4EE4",
  13569. TonganPaanga: "\u6C64\u52A0\u6F58\u52A0",
  13570. TrinidadandTobagoDollar: "\u7279\u7ACB\u5C3C\u8FBE\u548C\u591A\u5DF4\u54E5\u5143",
  13571. TunisianDinar: "\u7A81\u5C3C\u65AF\u7B2C\u7EB3\u5C14",
  13572. TurkishLira: "\u571F\u8033\u5176\u91CC\u62C9",
  13573. VanuatuVatu: "\u74E6\u52AA\u963F\u56FE\u74E6\u56FE",
  13574. GuatemalanQuetzal: "\u5371\u5730\u9A6C\u62C9\u683C\u67E5\u5C14",
  13575. CommissionBolivar: "\u59D4\u5185\u745E\u62C9\u535A\u5229\u74E6",
  13576. BruneiDollar: "\u6587\u83B1\u5143",
  13577. UgandanShilling: "\u4E4C\u5E72\u8FBE\u5148\u4EE4",
  13578. UkrainianHryvnia: "\u4E4C\u514B\u5170\u683C\u91CC\u592B\u5C3C\u4E9A",
  13579. UruguayanPeso: "\u4E4C\u62C9\u572D\u6BD4\u7D22",
  13580. Uzbekistansom: "\u4E4C\u5179\u522B\u514B\u65AF\u5766\u82CF\u59C6",
  13581. WesternSamoaTala: "\u897F\u8428\u6469\u4E9A\u5854\u62C9",
  13582. SingaporeDollar: "\u65B0\u52A0\u5761\u5143",
  13583. NT: "\u65B0\u53F0\u5E01",
  13584. NewZealandDollar: "\u65B0\u897F\u5170\u5143",
  13585. HungarianForint: "\u5308\u7259\u5229\u798F\u6797",
  13586. SyrianPound: "\u53D9\u5229\u4E9A\u9551",
  13587. JamaicanDollar: "\u7259\u4E70\u52A0\u5143",
  13588. ArmenianDram: "\u4E9A\u7F8E\u5C3C\u4E9A\u5FB7\u62C9\u59C6",
  13589. YemeniRial: "\u4E5F\u95E8\u91CC\u4E9A\u5C14",
  13590. IraqiDinar: "\u4F0A\u62C9\u514B\u7B2C\u7EB3\u5C14",
  13591. IranianRial: "\u4F0A\u6717\u91CC\u4E9A\u5C14",
  13592. NewIsraeliShekel: "\u4EE5\u8272\u5217\u65B0\u8C22\u514B\u5C14",
  13593. IndianRupee: "\u5370\u5EA6\u5362\u6BD4",
  13594. IndonesianRupiah: "\u5370\u5EA6\u5C3C\u897F\u4E9A\u5362\u6BD4",
  13595. JordanianDinar: "\u7EA6\u65E6\u7B2C\u7EB3\u5C14",
  13596. VND: "\u8D8A\u5357\u76FE",
  13597. ZambianKwacha: "\u8D5E\u6BD4\u4E9A\u514B\u74E6\u67E5",
  13598. GibraltarPound: "\u76F4\u5E03\u7F57\u9640\u9551",
  13599. ChileanPeso: "\u667A\u5229\u6BD4\u7D22",
  13600. CFAFrancBEAC: "\u4E2D\u975E\u91D1\u878D\u5408\u4F5C\u6CD5\u90CE"
  13601. },
  13602. defaultFmt: [
  13603. {"text": "\u81EA\u52A8", "value": "General", "example": ""},
  13604. {"text": "\u7EAF\u6587\u672C", "value": "@", "example": ""},
  13605. {"text": "", "value": "split", "example": ""},
  13606. {"text": "\u6570\u5B57", "value": "##0.00", "example": "1000.12"},
  13607. {"text": "\u767E\u5206\u6BD4", "value": "#0.00%", "example": "12.21%"},
  13608. {"text": "\u79D1\u5B66\u8BA1\u6570", "value": "0.00E+00", "example": "1.01E+5"},
  13609. {"text": "", "value": "split", "example": ""},
  13610. {"text": "\u4F1A\u8BA1", "value": "\xA5(0.00)", "example": "\xA5(1200.09)"},
  13611. {"text": "\u4E07\u5143", "value": "w", "example": "1\u4EBF2000\u4E072500"},
  13612. {"text": "\u8D27\u5E01", "value": "\xA50.00", "example": "\xA51200.09"},
  13613. {"text": "\u4E07\u51432\u4F4D\u5C0F\u6570", "value": "w0.00", "example": "2\u4E072500.55"},
  13614. {"text": "", "value": "split", "example": ""},
  13615. {"text": "\u65E5\u671F", "value": "yyyy-MM-dd", "example": "2017-11-29"},
  13616. {"text": "\u65F6\u95F4", "value": "hh:mm AM/PM", "example": "3:00 PM"},
  13617. {"text": "\u65F6\u95F424H", "value": "hh:mm", "example": "15:00"},
  13618. {"text": "\u65E5\u671F\u65F6\u95F4", "value": "yyyy-MM-dd hh:mm AM/PM", "example": "2017-11-29 3:00 PM"},
  13619. {"text": "\u65E5\u671F\u65F6\u95F424H", "value": "yyyy-MM-dd hh:mm", "example": "2017-11-29 15:00"},
  13620. {"text": "", "value": "split", "example": ""},
  13621. {"text": "\u81EA\u5B9A\u4E49\u683C\u5F0F", "value": "fmtOtherSelf", "example": "more"}
  13622. ],
  13623. dateFmtList: [
  13624. {
  13625. "name": "1930-08-05",
  13626. "value": "yyyy-MM-dd"
  13627. },
  13628. {
  13629. "name": "1930/8/5",
  13630. "value": "yyyy/MM/dd"
  13631. },
  13632. {
  13633. "name": "1930\u5E748\u67085\u65E5",
  13634. "value": 'yyyy"\u5E74"M"\u6708"d"\u65E5"'
  13635. },
  13636. {
  13637. "name": "08-05",
  13638. "value": "MM-dd"
  13639. },
  13640. {
  13641. "name": "8-5",
  13642. "value": "M-d"
  13643. },
  13644. {
  13645. "name": "8\u67085\u65E5",
  13646. "value": 'M"\u6708"d"\u65E5"'
  13647. },
  13648. {
  13649. "name": "13:30:30",
  13650. "value": "h:mm:ss"
  13651. },
  13652. {
  13653. "name": "13:30",
  13654. "value": "h:mm"
  13655. },
  13656. {
  13657. "name": "\u4E0B\u534801:30",
  13658. "value": "\u4E0A\u5348/\u4E0B\u5348 hh:mm"
  13659. },
  13660. {
  13661. "name": "\u4E0B\u53481:30",
  13662. "value": "\u4E0A\u5348/\u4E0B\u5348 h:mm"
  13663. },
  13664. {
  13665. "name": "\u4E0B\u53481:30:30",
  13666. "value": "\u4E0A\u5348/\u4E0B\u5348 h:mm:ss"
  13667. },
  13668. {
  13669. "name": "08-05 \u4E0B\u534801:30",
  13670. "value": "MM-dd \u4E0A\u5348/\u4E0B\u5348 hh:mm"
  13671. }
  13672. ],
  13673. fontFamily: {
  13674. MicrosoftYaHei: "Microsoft YaHei"
  13675. },
  13676. fontarray: ["Times New Roman", "Arial", "Tahoma", "Verdana", "\u5FAE\u8F6F\u96C5\u9ED1", "\u5B8B\u4F53", "\u9ED1\u4F53", "\u6977\u4F53", "\u4EFF\u5B8B", "\u65B0\u5B8B\u4F53", "\u534E\u6587\u65B0\u9B4F", "\u534E\u6587\u884C\u6977", "\u534E\u6587\u96B6\u4E66"],
  13677. fontjson: {"times new roman": 0, "arial": 1, "tahoma": 2, "verdana": 3, "\u5FAE\u8F6F\u96C5\u9ED1": 4, "microsoft yahei": 4, "\u5B8B\u4F53": 5, "simsun": 5, "\u9ED1\u4F53": 6, "simhei": 6, "\u6977\u4F53": 7, "kaiti": 7, "\u4EFF\u5B8B": 8, "fangsong": 8, "\u65B0\u5B8B\u4F53": 9, "nsimsun": 9, "\u534E\u6587\u65B0\u9B4F": 10, "stxinwei": 10, "\u534E\u6587\u884C\u6977": 11, "stxingkai": 11, "\u534E\u6587\u96B6\u4E66": 12, "stliti": 12},
  13678. border: {
  13679. borderTop: "\u4E0A\u6846\u7EBF",
  13680. borderBottom: "\u4E0B\u6846\u7EBF",
  13681. borderLeft: "\u5DE6\u6846\u7EBF",
  13682. borderRight: "\u53F3\u6846\u7EBF",
  13683. borderNone: "\u65E0",
  13684. borderAll: "\u6240\u6709",
  13685. borderOutside: "\u5916\u4FA7",
  13686. borderInside: "\u5185\u4FA7",
  13687. borderHorizontal: "\u5185\u4FA7\u6A2A\u7EBF",
  13688. borderVertical: "\u5185\u4FA7\u7AD6\u7EBF",
  13689. borderColor: "\u8FB9\u6846\u989C\u8272",
  13690. borderSize: "\u8FB9\u6846\u7C97\u7EC6"
  13691. },
  13692. merge: {
  13693. mergeAll: "\u5168\u90E8\u5408\u5E76",
  13694. mergeV: "\u5782\u76F4\u5408\u5E76",
  13695. mergeH: "\u6C34\u5E73\u5408\u5E76",
  13696. mergeCancel: "\u53D6\u6D88\u5408\u5E76",
  13697. overlappingError: "\u4E0D\u80FD\u5408\u5E76\u91CD\u53E0\u533A\u57DF",
  13698. partiallyError: "\u65E0\u6CD5\u5BF9\u90E8\u5206\u5408\u5E76\u5355\u5143\u683C\u6267\u884C\u6B64\u64CD\u4F5C"
  13699. },
  13700. align: {
  13701. left: "\u5DE6\u5BF9\u9F50",
  13702. center: "\u4E2D\u95F4\u5BF9\u9F50",
  13703. right: "\u53F3\u5BF9\u9F50",
  13704. top: "\u9876\u90E8\u5BF9\u9F50",
  13705. middle: "\u5C45\u4E2D\u5BF9\u9F50",
  13706. bottom: "\u5E95\u90E8\u5BF9\u9F50"
  13707. },
  13708. textWrap: {
  13709. "overflow": "\u6EA2\u51FA",
  13710. "wrap": "\u81EA\u52A8\u6362\u884C",
  13711. "clip": "\u622A\u65AD"
  13712. },
  13713. rotation: {
  13714. "none": "\u65E0\u65CB\u8F6C",
  13715. "angleup": "\u5411\u4E0A\u503E\u659C",
  13716. "angledown": "\u5411\u4E0B\u503E\u659C",
  13717. "vertical": "\u7AD6\u6392\u6587\u5B57",
  13718. "rotationUp": "\u5411\u4E0A90\xB0",
  13719. "rotationDown": "\u5411\u4E0B90\xB0"
  13720. },
  13721. freezen: {
  13722. default: "\u51BB\u7ED3\u7B2C\u4E00\u884C",
  13723. freezenRow: "\u51BB\u7ED3\u7B2C\u4E00\u884C",
  13724. freezenColumn: "\u51BB\u7ED3\u7B2CA\u5217",
  13725. freezenRC: "\u51BB\u7ED3\u7B2C\u4E00\u884C\u7B2CA\u5217",
  13726. freezenRowRange: "\u51BB\u7ED3\u884C\u5230\u9009\u533A",
  13727. freezenColumnRange: "\u51BB\u7ED3\u5217\u5230\u9009\u533A",
  13728. freezenRCRange: "\u51BB\u7ED3\u884C\u5217\u5230\u9009\u533A",
  13729. freezenCancel: "\u53D6\u6D88\u51BB\u7ED3",
  13730. noSeletionError: "\u6CA1\u6709\u9009\u533A",
  13731. rangeRCOverErrorTitle: "\u51BB\u7ED3\u63D0\u9192",
  13732. rangeRCOverError: "\u51BB\u7ED3\u7A97\u683C\u8D85\u8FC7\u53EF\u89C1\u8303\u56F4\uFF0C\u4F1A\u5BFC\u81F4\u65E0\u6CD5\u6B63\u5E38\u64CD\u4F5C\uFF0C\u8BF7\u91CD\u65B0\u8BBE\u7F6E\u51BB\u7ED3\u533A\u57DF\u3002"
  13733. },
  13734. sort: {
  13735. "asc": "\u5347\u5E8F",
  13736. "desc": "\u964D\u5E8F",
  13737. "custom": "\u81EA\u5B9A\u4E49\u6392\u5E8F",
  13738. "hasTitle": "\u6570\u636E\u5177\u6709\u6807\u9898\u884C",
  13739. "sortBy": "\u6392\u5E8F\u4F9D\u636E",
  13740. "addOthers": "\u6DFB\u52A0\u5176\u4ED6\u6392\u5E8F\u5217",
  13741. "close": "\u5173\u95ED",
  13742. "confirm": "\u6392\u5E8F",
  13743. "columnOperation": "\u5217",
  13744. "secondaryTitle": "\u6B21\u8981\u6392\u5E8F",
  13745. "sortTitle": "\u6392\u5E8F\u8303\u56F4",
  13746. "sortRangeTitle": "\u6392\u5E8F\u8303\u56F4\u4ECE",
  13747. "sortRangeTitleTo": "\u5230",
  13748. "noRangeError": "\u4E0D\u80FD\u5BF9\u591A\u91CD\u9009\u62E9\u533A\u57DF\u6267\u884C\u6B64\u64CD\u4F5C\uFF0C\u8BF7\u9009\u62E9\u5355\u4E2A\u533A\u57DF\uFF0C\u7136\u540E\u518D\u8BD5",
  13749. "mergeError": "\u9009\u533A\u6709\u5408\u5E76\u5355\u5143\u683C\uFF0C\u65E0\u6CD5\u6267\u884C\u6B64\u64CD\u4F5C\uFF01",
  13750. "columnSortMergeError": "\u5217\u6392\u5E8F\u4F1A\u6269\u5C55\u81F3\u6574\u4E2A\u8868\u683C\u9009\u533A\uFF0C\u9009\u533A\u6709\u5408\u5E76\u5355\u5143\u683C\uFF0C\u65E0\u6CD5\u6267\u884C\u6B64\u64CD\u4F5C\uFF0C\u8BF7\u9009\u62E9\u529F\u80FD\u680F\u6392\u5E8F\u529F\u80FD\uFF01"
  13751. },
  13752. filter: {
  13753. "filter": "\u7B5B\u9009",
  13754. "clearFilter": "\u6E05\u9664\u7B5B\u9009",
  13755. sortByAsc: "\u4EE5A-Z\u5347\u5E8F\u6392\u5217",
  13756. sortByDesc: "\u4EE5Z-A\u964D\u5E8F\u6392\u5217",
  13757. filterByColor: "\u6309\u989C\u8272\u7B5B\u9009",
  13758. filterByCondition: "\u6309\u6761\u4EF6\u8FC7\u6EE4",
  13759. filterByValues: "\u6309\u503C\u8FC7\u6EE4",
  13760. filiterInputNone: "\u65E0",
  13761. filiterInputTip: "\u8F93\u5165\u7B5B\u9009\u503C",
  13762. filiterRangeStart: "\u4ECE",
  13763. filiterRangeStartTip: "\u8303\u56F4\u5F00\u59CB",
  13764. filiterRangeEnd: "\u5230",
  13765. filiterRangeEndTip: "\u8303\u56F4\u7ED3\u675F",
  13766. filterValueByAllBtn: "\u5168\u9009",
  13767. filterValueByClearBtn: "\u6E05\u9664",
  13768. filterValueByInverseBtn: "\u53CD\u9009",
  13769. filterValueByTip: "\u6309\u7167\u503C\u8FDB\u884C\u7B5B\u9009",
  13770. filterConform: "\u786E \u8BA4",
  13771. filterCancel: "\u53D6 \u6D88",
  13772. conditionNone: "\u65E0",
  13773. conditionCellIsNull: "\u5355\u5143\u683C\u4E3A\u7A7A",
  13774. conditionCellNotNull: "\u5355\u5143\u683C\u6709\u6570\u636E",
  13775. conditionCellTextContain: "\u6587\u672C\u5305\u542B",
  13776. conditionCellTextNotContain: "\u6587\u672C\u4E0D\u5305\u542B",
  13777. conditionCellTextStart: "\u6587\u672C\u5F00\u5934\u4E3A",
  13778. conditionCellTextEnd: "\u6587\u672C\u7ED3\u5C3E\u4E3A",
  13779. conditionCellTextEqual: "\u6587\u672C\u7B49\u4E8E",
  13780. conditionCellDateEqual: "\u65E5\u671F\u7B49\u4E8E",
  13781. conditionCellDateBefore: "\u65E5\u671F\u65E9\u4E8E",
  13782. conditionCellDateAfter: "\u65E5\u671F\u665A\u4E8E",
  13783. conditionCellGreater: "\u5927\u4E8E",
  13784. conditionCellGreaterEqual: "\u5927\u4E8E\u7B49\u4E8E",
  13785. conditionCellLess: "\u5C0F\u4E8E",
  13786. conditionCellLessEqual: "\u5C0F\u4E8E\u7B49\u4E8E",
  13787. conditionCellEqual: "\u7B49\u4E8E",
  13788. conditionCellNotEqual: "\u4E0D\u7B49\u4E8E",
  13789. conditionCellBetween: "\u4ECB\u4E8E",
  13790. conditionCellNotBetween: "\u4E0D\u5728\u5176\u4E2D",
  13791. filiterMoreDataTip: "\u6570\u636E\u91CF\u5927\uFF01\u8BF7\u7A0D\u540E",
  13792. filiterMonthText: "\u6708",
  13793. filiterYearText: "\u5E74",
  13794. filiterByColorTip: "\u6309\u5355\u5143\u683C\u989C\u8272\u7B5B\u9009",
  13795. filiterByTextColorTip: "\u6309\u5355\u5143\u683C\u5B57\u4F53\u989C\u8272\u7B5B\u9009",
  13796. filterContainerOneColorTip: "\u672C\u5217\u4EC5\u5305\u542B\u4E00\u79CD\u989C\u8272",
  13797. filterDateFormatTip: "\u65E5\u671F\u683C\u5F0F",
  13798. valueBlank: "(\u7A7A\u767D)",
  13799. mergeError: "\u7B5B\u9009\u9009\u533A\u6709\u5408\u5E76\u5355\u5143\u683C\uFF0C\u65E0\u6CD5\u6267\u884C\u6B64\u64CD\u4F5C\uFF01"
  13800. },
  13801. rightclick: {
  13802. copy: "\u590D\u5236",
  13803. copyAs: "\u590D\u5236\u4E3A",
  13804. paste: "\u7C98\u8D34",
  13805. insert: "\u63D2\u5165",
  13806. delete: "\u5220\u9664",
  13807. deleteCell: "\u5220\u9664\u5355\u5143\u683C",
  13808. deleteSelected: "\u5220\u9664\u9009\u4E2D",
  13809. hide: "\u9690\u85CF",
  13810. hideSelected: "\u9690\u85CF\u9009\u4E2D",
  13811. showHide: "\u663E\u793A\u9690\u85CF",
  13812. to: "\u5411",
  13813. left: "\u5DE6",
  13814. right: "\u53F3",
  13815. top: "\u4E0A",
  13816. bottom: "\u4E0B",
  13817. moveLeft: "\u5DE6\u79FB",
  13818. moveUp: "\u4E0A\u79FB",
  13819. add: "\u589E\u52A0",
  13820. row: "\u884C",
  13821. column: "\u5217",
  13822. width: "\u5BBD",
  13823. height: "\u9AD8",
  13824. number: "\u6570\u5B57",
  13825. confirm: "\u786E\u8BA4",
  13826. orderAZ: "A-Z\u987A\u5E8F\u6392\u5217",
  13827. orderZA: "Z-A\u964D\u5E8F\u6392\u5217",
  13828. clearContent: "\u6E05\u9664\u5185\u5BB9",
  13829. matrix: "\u77E9\u9635\u64CD\u4F5C\u9009\u533A",
  13830. sortSelection: "\u6392\u5E8F\u9009\u533A",
  13831. filterSelection: "\u7B5B\u9009\u9009\u533A",
  13832. chartGeneration: "\u56FE\u8868\u751F\u6210",
  13833. firstLineTitle: "\u9996\u884C\u4E3A\u6807\u9898",
  13834. untitled: "\u65E0\u6807\u9898",
  13835. array1: "\u4E00\u7EF4\u6570\u7EC4",
  13836. array2: "\u4E8C\u7EF4\u6570\u7EC4",
  13837. array3: "\u591A\u7EF4\u6570\u7EC4",
  13838. diagonal: "\u5BF9\u89D2\u7EBF",
  13839. antiDiagonal: "\u53CD\u5BF9\u89D2\u7EBF",
  13840. diagonalOffset: "\u5BF9\u89D2\u504F\u79FB",
  13841. offset: "\u504F\u79FB\u91CF",
  13842. boolean: "\u5E03\u5C14\u503C",
  13843. flip: "\u7FFB\u8F6C",
  13844. upAndDown: "\u4E0A\u4E0B",
  13845. leftAndRight: "\u5DE6\u53F3",
  13846. clockwise: "\u987A\u65F6\u9488",
  13847. counterclockwise: "\u9006\u65F6\u9488",
  13848. transpose: "\u8F6C\u7F6E",
  13849. matrixCalculation: "\u77E9\u9635\u8BA1\u7B97",
  13850. plus: "\u52A0",
  13851. minus: "\u51CF",
  13852. multiply: "\u4E58",
  13853. divided: "\u9664",
  13854. power: "\u6B21\u65B9",
  13855. root: "\u6B21\u65B9\u6839",
  13856. log: "log",
  13857. delete0: "\u5220\u9664\u4E24\u7AEF0\u503C",
  13858. removeDuplicate: "\u5220\u9664\u91CD\u590D\u503C",
  13859. byRow: "\u6309\u884C",
  13860. byCol: "\u6309\u5217",
  13861. generateNewMatrix: "\u751F\u6210\u65B0\u77E9\u9635"
  13862. },
  13863. comment: {
  13864. "insert": "\u65B0\u5EFA\u6279\u6CE8",
  13865. "edit": "\u7F16\u8F91\u6279\u6CE8",
  13866. "delete": "\u5220\u9664",
  13867. "showOne": "\u663E\u793A/\u9690\u85CF\u6279\u6CE8",
  13868. "showAll": "\u663E\u793A/\u9690\u85CF\u6240\u6709\u6279\u6CE8"
  13869. },
  13870. screenshot: {
  13871. screenshotTipNoSelection: "\u8BF7\u6846\u9009\u9700\u8981\u622A\u56FE\u7684\u8303\u56F4",
  13872. screenshotTipTitle: "\u63D0\u793A\uFF01",
  13873. screenshotTipHasMerge: "\u65E0\u6CD5\u5BF9\u5408\u5E76\u5355\u5143\u683C\u6267\u884C\u6B64\u64CD\u4F5C",
  13874. screenshotTipHasMulti: "\u65E0\u6CD5\u5BF9\u591A\u91CD\u9009\u62E9\u533A\u57DF\u6267\u884C\u6B64\u64CD\u4F5C",
  13875. screenshotTipSuccess: "\u622A\u53D6\u6210\u529F",
  13876. screenshotImageName: "\u622A\u56FE",
  13877. downLoadClose: "\u5173\u95ED",
  13878. downLoadCopy: "\u590D\u5236\u5230\u526A\u5207\u677F",
  13879. downLoadBtn: "\u4E0B\u8F7D",
  13880. browserNotTip: "\u4E0B\u8F7D\u529F\u80FDIE\u6D4F\u89C8\u5668\u4E0D\u652F\u6301\uFF01",
  13881. rightclickTip: "\u8BF7\u5728\u56FE\u7247\u4E0A\u53F3\u952E\u70B9\u51FB'\u590D\u5236'",
  13882. successTip: "\u5DF2\u6210\u529F\u590D\u5236\uFF08\u5982\u679C\u7C98\u8D34\u5931\u8D25\uFF0C\u8BF7\u5728\u56FE\u7247\u4E0A\u53F3\u952E\u70B9\u51FB'\u590D\u5236\u56FE\u7247'\uFF09"
  13883. },
  13884. splitText: {
  13885. splitDelimiters: "\u5206\u5272\u7B26\u53F7",
  13886. splitOther: "\u5176\u5B83",
  13887. splitContinueSymbol: "\u8FDE\u7EED\u5206\u9694\u7B26\u53F7\u89C6\u4E3A\u5355\u4E2A\u5904\u7406",
  13888. splitDataPreview: "\u6570\u636E\u9884\u89C8",
  13889. splitTextTitle: "\u6587\u672C\u5206\u5217",
  13890. splitConfirmToExe: "\u6B64\u5904\u5DF2\u6709\u6570\u636E\uFF0C\u662F\u5426\u66FF\u6362\u5B83\uFF1F",
  13891. tipNoMulti: "\u4E0D\u80FD\u5BF9\u591A\u91CD\u9009\u62E9\u533A\u57DF\u6267\u884C\u6B64\u64CD\u4F5C\uFF0C\u8BF7\u9009\u62E9\u5355\u4E2A\u533A\u57DF\uFF0C\u7136\u540E\u518D\u8BD5",
  13892. tipNoMultiColumn: "\u4E00\u6B21\u53EA\u80FD\u8F6C\u6362\u4E00\u5217\u6570\u636E\uFF0C\u9009\u5B9A\u533A\u57DF\u53EF\u4EE5\u6709\u591A\u884C\uFF0C\u4F46\u4E0D\u80FD\u6709\u591A\u5217\uFF0C\u8BF7\u5728\u9009\u5B9A\u5355\u5217\u533A\u57DF\u4EE5\u540E\u518D\u8BD5"
  13893. },
  13894. imageText: {
  13895. imageSetting: "\u56FE\u7247\u8BBE\u7F6E",
  13896. close: "\u5173\u95ED",
  13897. conventional: "\u5E38\u89C4",
  13898. moveCell1: "\u79FB\u52A8\u5E76\u8C03\u6574\u5355\u5143\u683C\u5927\u5C0F",
  13899. moveCell2: "\u79FB\u52A8\u5E76\u4E14\u4E0D\u8C03\u6574\u5355\u5143\u683C\u7684\u5927\u5C0F",
  13900. moveCell3: "\u4E0D\u8981\u79FB\u52A8\u5355\u5143\u683C\u5E76\u8C03\u6574\u5176\u5927\u5C0F",
  13901. fixedPos: "\u56FA\u5B9A\u4F4D\u7F6E",
  13902. border: "\u8FB9\u6846",
  13903. width: "\u5BBD\u5EA6",
  13904. radius: "\u534A\u5F84",
  13905. style: "\u6837\u5F0F",
  13906. solid: "\u5B9E\u7EBF",
  13907. dashed: "\u865A\u7EBF",
  13908. dotted: "\u70B9\u72B6",
  13909. double: "\u53CC\u7EBF",
  13910. color: "\u989C\u8272"
  13911. },
  13912. punctuation: {
  13913. "tab": "Tab \u952E",
  13914. "semicolon": "\u5206\u53F7",
  13915. "comma": "\u9017\u53F7",
  13916. "space": "\u7A7A\u683C"
  13917. },
  13918. findAndReplace: {
  13919. find: "\u67E5\u627E",
  13920. replace: "\u66FF\u6362",
  13921. goto: "\u8F6C\u5230",
  13922. location: "\u5B9A\u4F4D\u6761\u4EF6",
  13923. formula: "\u516C\u5F0F",
  13924. date: "\u65E5\u671F",
  13925. number: "\u6570\u5B57",
  13926. string: "\u5B57\u7B26",
  13927. error: "\u9519\u8BEF",
  13928. condition: "\u6761\u4EF6\u683C\u5F0F",
  13929. rowSpan: "\u95F4\u9694\u884C",
  13930. columnSpan: "\u95F4\u9694\u5217",
  13931. locationExample: "\u5B9A\u4F4D",
  13932. lessTwoRowTip: "\u8BF7\u9009\u62E9\u6700\u5C11\u4E24\u884C",
  13933. lessTwoColumnTip: "\u8BF7\u9009\u62E9\u6700\u5C11\u4E24\u884C",
  13934. findTextbox: "\u67E5\u627E\u5185\u5BB9",
  13935. replaceTextbox: "\u66FF\u6362\u5185\u5BB9",
  13936. regexTextbox: "\u6B63\u5219\u8868\u8FBE\u5F0F\u5339\u914D",
  13937. wholeTextbox: "\u6574\u8BCD\u5339\u914D",
  13938. distinguishTextbox: "\u533A\u5206\u5927\u5C0F\u5199\u5339\u914D",
  13939. allReplaceBtn: "\u5168\u90E8\u66FF\u6362",
  13940. replaceBtn: "\u66FF\u6362",
  13941. allFindBtn: "\u67E5\u627E\u5168\u90E8",
  13942. findBtn: "\u67E5\u627E\u4E0B\u4E00\u4E2A",
  13943. noFindTip: "\u6CA1\u6709\u67E5\u627E\u5230\u8BE5\u5185\u5BB9",
  13944. modeTip: "\u8BE5\u6A21\u5F0F\u4E0B\u4E0D\u53EF\u8FDB\u884C\u6B64\u64CD\u4F5C",
  13945. searchTargetSheet: "\u5DE5\u4F5C\u8868",
  13946. searchTargetCell: "\u5355\u5143\u683C",
  13947. searchTargetValue: "\u503C",
  13948. searchInputTip: "\u8BF7\u8F93\u5165\u67E5\u627E\u5185\u5BB9",
  13949. noReplceTip: "\u6CA1\u6709\u53EF\u66FF\u6362\u7684\u5185\u5BB9",
  13950. noMatchTip: "\u627E\u4E0D\u5230\u5339\u914D\u9879",
  13951. successTip: "\u5DF2\u7ECF\u5E2E\u60A8\u641C\u7D22\u5E76\u8FDB\u884C\u4E86${xlength}\u5904\u66FF\u6362",
  13952. locationConstant: "\u5E38\u91CF",
  13953. locationFormula: "\u516C\u5F0F",
  13954. locationDate: "\u65E5\u671F",
  13955. locationDigital: "\u6570\u5B57",
  13956. locationString: "\u5B57\u7B26",
  13957. locationBool: "\u903B\u8F91\u503C",
  13958. locationError: "\u9519\u8BEF",
  13959. locationNull: "\u7A7A\u503C",
  13960. locationCondition: "\u6761\u4EF6\u683C\u5F0F",
  13961. locationRowSpan: "\u95F4\u9694\u884C",
  13962. locationColumnSpan: "\u95F4\u9694\u5217",
  13963. locationTiplessTwoRow: "\u8BF7\u9009\u62E9\u6700\u5C11\u4E24\u884C",
  13964. locationTiplessTwoColumn: "\u8BF7\u9009\u62E9\u6700\u5C11\u4E24\u5217",
  13965. locationTipNotFindCell: "\u672A\u627E\u5230\u5355\u5143\u683C"
  13966. },
  13967. sheetconfig: {
  13968. delete: "\u5220\u9664",
  13969. copy: "\u590D\u5236",
  13970. rename: "\u91CD\u547D\u540D",
  13971. changeColor: "\u66F4\u6539\u989C\u8272",
  13972. hide: "\u9690\u85CF",
  13973. unhide: "\u53D6\u6D88\u9690\u85CF",
  13974. moveLeft: "\u5411\u5DE6\u79FB",
  13975. moveRight: "\u5411\u53F3\u79FB",
  13976. resetColor: "\u91CD\u7F6E\u989C\u8272",
  13977. cancelText: "\u53D6\u6D88",
  13978. chooseText: "\u786E\u5B9A\u989C\u8272",
  13979. tipNameRepeat: "\u6807\u7B7E\u9875\u7684\u540D\u79F0\u4E0D\u80FD\u91CD\u590D\uFF01\u8BF7\u91CD\u65B0\u4FEE\u6539",
  13980. noMoreSheet: "\u5DE5\u4F5C\u8584\u5185\u81F3\u5C11\u542B\u6709\u4E00\u5F20\u53EF\u89C6\u5DE5\u4F5C\u8868\u3002\u82E5\u9700\u5220\u9664\u9009\u5B9A\u7684\u5DE5\u4F5C\u8868\uFF0C\u8BF7\u5148\u63D2\u5165\u4E00\u5F20\u65B0\u5DE5\u4F5C\u8868\u6216\u663E\u793A\u4E00\u5F20\u9690\u85CF\u7684\u5DE5\u4F5C\u8868\u3002",
  13981. confirmDelete: "\u662F\u5426\u5220\u9664",
  13982. redoDelete: "\u53EF\u4EE5\u901A\u8FC7Ctrl+Z\u64A4\u9500\u5220\u9664",
  13983. noHide: "\u4E0D\u80FD\u9690\u85CF, \u81F3\u5C11\u4FDD\u7559\u4E00\u4E2Asheet\u6807\u7B7E",
  13984. chartEditNoOpt: "\u56FE\u8868\u7F16\u8F91\u6A21\u5F0F\u4E0B\u4E0D\u5141\u8BB8\u8BE5\u64CD\u4F5C\uFF01",
  13985. sheetNameSpecCharError: "\u540D\u79F0\u4E0D\u80FD\u8D85\u8FC731\u4E2A\u5B57\u7B26\uFF0C\u9996\u5C3E\u4E0D\u80FD\u662F' \u4E14\u540D\u79F0\u4E0D\u80FD\u5305\u542B:\r\n[ ] : \\ ? * /",
  13986. sheetNamecannotIsEmptyError: "\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A!"
  13987. },
  13988. conditionformat: {
  13989. conditionformat_greaterThan: "\u6761\u4EF6\u683C\u5F0F\u2014\u2014\u5927\u4E8E",
  13990. conditionformat_greaterThan_title: "\u4E3A\u5927\u4E8E\u4EE5\u4E0B\u503C\u7684\u5355\u5143\u683C\u8BBE\u7F6E\u683C\u5F0F",
  13991. conditionformat_lessThan: "\u6761\u4EF6\u683C\u5F0F\u2014\u2014\u5C0F\u4E8E",
  13992. conditionformat_lessThan_title: "\u4E3A\u5C0F\u4E8E\u4EE5\u4E0B\u503C\u7684\u5355\u5143\u683C\u8BBE\u7F6E\u683C\u5F0F",
  13993. conditionformat_betweenness: "\u6761\u4EF6\u683C\u5F0F\u2014\u2014\u4ECB\u4E8E",
  13994. conditionformat_betweenness_title: "\u4E3A\u4ECB\u4E8E\u4EE5\u4E0B\u503C\u7684\u5355\u5143\u683C\u8BBE\u7F6E\u683C\u5F0F",
  13995. conditionformat_equal: "\u6761\u4EF6\u683C\u5F0F\u2014\u2014\u7B49\u4E8E",
  13996. conditionformat_equal_title: "\u4E3A\u7B49\u4E8E\u4EE5\u4E0B\u503C\u7684\u5355\u5143\u683C\u8BBE\u7F6E\u683C\u5F0F",
  13997. conditionformat_textContains: "\u6761\u4EF6\u683C\u5F0F\u2014\u2014\u6587\u672C\u5305\u542B",
  13998. conditionformat_textContains_title: "\u4E3A\u5305\u542B\u4EE5\u4E0B\u6587\u672C\u7684\u5355\u5143\u683C\u8BBE\u7F6E\u683C\u5F0F",
  13999. conditionformat_occurrenceDate: "\u6761\u4EF6\u683C\u5F0F\u2014\u2014\u53D1\u751F\u65E5\u671F",
  14000. conditionformat_occurrenceDate_title: "\u4E3A\u5305\u542B\u4EE5\u4E0B\u65E5\u671F\u7684\u5355\u5143\u683C\u8BBE\u7F6E\u683C\u5F0F",
  14001. conditionformat_duplicateValue: "\u6761\u4EF6\u683C\u5F0F\u2014\u2014\u91CD\u590D\u503C",
  14002. conditionformat_duplicateValue_title: "\u4E3A\u5305\u542B\u4EE5\u4E0B\u7C7B\u578B\u503C\u7684\u5355\u5143\u683C\u8BBE\u7F6E\u683C\u5F0F",
  14003. conditionformat_top10: "\u6761\u4EF6\u683C\u5F0F\u2014\u2014\u524D 10 \u9879",
  14004. conditionformat_top10_percent: "\u6761\u4EF6\u683C\u5F0F\u2014\u2014\u524D 10%",
  14005. conditionformat_top10_title: "\u4E3A\u503C\u6700\u5927\u7684\u90A3\u4E9B\u5355\u5143\u683C\u8BBE\u7F6E\u683C\u5F0F",
  14006. conditionformat_last10: "\u6761\u4EF6\u683C\u5F0F\u2014\u2014\u6700\u540E 10 \u9879",
  14007. conditionformat_last10_percent: "\u6761\u4EF6\u683C\u5F0F\u2014\u2014\u6700\u540E 10%",
  14008. conditionformat_last10_title: "\u4E3A\u503C\u6700\u5C0F\u7684\u90A3\u4E9B\u5355\u5143\u683C\u8BBE\u7F6E\u683C\u5F0F",
  14009. conditionformat_AboveAverage: "\u6761\u4EF6\u683C\u5F0F\u2014\u2014\u9AD8\u4E8E\u5E73\u5747\u503C",
  14010. conditionformat_AboveAverage_title: "\u4E3A\u9AD8\u4E8E\u5E73\u5747\u503C\u7684\u5355\u5143\u683C\u8BBE\u7F6E\u683C\u5F0F",
  14011. conditionformat_SubAverage: "\u6761\u4EF6\u683C\u5F0F\u2014\u2014\u4F4E\u4E8E\u5E73\u5747\u503C",
  14012. conditionformat_SubAverage_title: "\u4E3A\u4F4E\u4E8E\u5E73\u5747\u503C\u7684\u5355\u5143\u683C\u8BBE\u7F6E\u683C\u5F0F",
  14013. rule: "\u89C4\u5219",
  14014. newRule: "\u65B0\u5EFA\u89C4\u5219",
  14015. editRule: "\u7F16\u8F91\u89C4\u5219",
  14016. deleteRule: "\u5220\u9664\u89C4\u5219",
  14017. deleteCellRule: "\u6E05\u9664\u6240\u9009\u5355\u5143\u683C\u7684\u89C4\u5219",
  14018. deleteSheetRule: "\u6E05\u9664\u6574\u4E2A\u5DE5\u4F5C\u8868\u7684\u89C4\u5219",
  14019. manageRules: "\u7BA1\u7406\u89C4\u5219",
  14020. showRules: "\u663E\u793A\u5176\u683C\u5F0F\u89C4\u5219",
  14021. highlightCellRules: "\u7A81\u51FA\u663E\u793A\u5355\u5143\u683C\u89C4\u5219",
  14022. itemSelectionRules: "\u9879\u76EE\u9009\u53D6\u89C4\u5219",
  14023. conditionformatManageRules: "\u6761\u4EF6\u683C\u5F0F\u89C4\u5219\u7BA1\u7406\u5668",
  14024. format: "\u683C\u5F0F",
  14025. setFormat: "\u8BBE\u7F6E\u683C\u5F0F",
  14026. setAs: "\u8BBE\u7F6E\u4E3A",
  14027. setAsByArea: "\u9488\u5BF9\u9009\u5B9A\u533A\u57DF\uFF0C\u8BBE\u7F6E\u4E3A",
  14028. applyRange: "\u5E94\u7528\u8303\u56F4",
  14029. selectRange: "\u70B9\u51FB\u9009\u62E9\u5E94\u7528\u8303\u56F4",
  14030. selectRange_percent: "\u6240\u9009\u8303\u56F4\u7684\u767E\u5206\u6BD4",
  14031. selectRange_average: "\u9009\u5B9A\u8303\u56F4\u7684\u5E73\u5747\u503C",
  14032. selectRange_value: "\u9009\u5B9A\u8303\u56F4\u4E2D\u7684\u6570\u503C",
  14033. pleaseSelectRange: "\u8BF7\u9009\u62E9\u5E94\u7528\u8303\u56F4",
  14034. selectDataRange: "\u70B9\u51FB\u9009\u62E9\u6570\u636E\u8303\u56F4",
  14035. selectCell: "\u9009\u62E9\u5355\u5143\u683C",
  14036. pleaseSelectCell: "\u8BF7\u9009\u62E9\u5355\u5143\u683C",
  14037. pleaseSelectADate: "\u8BF7\u9009\u62E9\u65E5\u671F",
  14038. pleaseEnterInteger: "\u8BF7\u8F93\u5165\u4E00\u4E2A\u4ECB\u4E8E 1 \u548C 1000 \u4E4B\u95F4\u7684\u6574\u6570",
  14039. onlySingleCell: "\u53EA\u80FD\u5BF9\u5355\u4E2A\u5355\u5143\u683C\u8FDB\u884C\u5F15\u7528",
  14040. conditionValueCanOnly: "\u6761\u4EF6\u503C\u53EA\u80FD\u662F\u6570\u5B57\u6216\u8005\u5355\u4E2A\u5355\u5143\u683C",
  14041. ruleTypeItem1: "\u57FA\u4E8E\u5404\u81EA\u503C\u8BBE\u7F6E\u6240\u6709\u5355\u5143\u683C\u7684\u683C\u5F0F",
  14042. ruleTypeItem2: "\u53EA\u4E3A\u5305\u542B\u4EE5\u4E0B\u5185\u5BB9\u7684\u5355\u5143\u683C\u8BBE\u7F6E\u683C\u5F0F",
  14043. ruleTypeItem2_title: "\u53EA\u4E3A\u6EE1\u8DB3\u4EE5\u4E0B\u6761\u4EF6\u7684\u5355\u5143\u683C",
  14044. ruleTypeItem3: "\u4EC5\u5BF9\u6392\u540D\u9760\u524D\u6216\u9760\u540E\u7684\u6570\u503C\u8BBE\u7F6E\u683C\u5F0F",
  14045. ruleTypeItem3_title: "\u4E3A\u4EE5\u4E0B\u6392\u540D\u5185\u7684\u503C",
  14046. ruleTypeItem4: "\u4EC5\u5BF9\u9AD8\u4E8E\u6216\u4F4E\u4E8E\u5E73\u5747\u503C\u7684\u6570\u503C\u8BBE\u7F6E\u683C\u5F0F",
  14047. ruleTypeItem4_title: "\u4E3A\u6EE1\u8DB3\u4EE5\u4E0B\u6761\u4EF6\u7684\u503C",
  14048. ruleTypeItem5: "\u4EC5\u5BF9\u552F\u4E00\u503C\u6216\u91CD\u590D\u503C\u8BBE\u7F6E\u683C\u5F0F",
  14049. ruleTypeItem6: "\u4F7F\u7528\u516C\u5F0F\u786E\u5B9A\u8981\u8BBE\u7F6E\u683C\u5F0F\u7684\u5355\u5143\u683C",
  14050. formula: "\u516C\u5F0F",
  14051. textColor: "\u6587\u672C\u989C\u8272",
  14052. cellColor: "\u5355\u5143\u683C\u989C\u8272",
  14053. confirm: "\u786E\u5B9A",
  14054. confirmColor: "\u786E\u5B9A\u989C\u8272",
  14055. cancel: "\u53D6\u6D88",
  14056. close: "\u5173\u95ED",
  14057. clearColorSelect: "\u6E05\u9664\u989C\u8272\u9009\u62E9",
  14058. sheet: "\u8868",
  14059. currentSheet: "\u5F53\u524D\u5DE5\u4F5C\u8868",
  14060. dataBar: "\u6570\u636E\u6761",
  14061. dataBarColor: "\u6570\u636E\u6761\u989C\u8272",
  14062. gradientDataBar_1: "\u84DD-\u767D\u6E10\u53D8\u6570\u636E\u6761",
  14063. gradientDataBar_2: "\u7EFF-\u767D\u6E10\u53D8\u6570\u636E\u6761",
  14064. gradientDataBar_3: "\u7EA2-\u767D\u6E10\u53D8\u6570\u636E\u6761",
  14065. gradientDataBar_4: "\u6A59-\u767D\u6E10\u53D8\u6570\u636E\u6761",
  14066. gradientDataBar_5: "\u6D45\u84DD-\u767D\u6E10\u53D8\u6570\u636E\u6761",
  14067. gradientDataBar_6: "\u7D2B-\u767D\u6E10\u53D8\u6570\u636E\u6761",
  14068. solidColorDataBar_1: "\u84DD\u8272\u6570\u636E\u6761",
  14069. solidColorDataBar_2: "\u7EFF\u8272\u6570\u636E\u6761",
  14070. solidColorDataBar_3: "\u7EA2\u8272\u6570\u636E\u6761",
  14071. solidColorDataBar_4: "\u6A59\u8272\u6570\u636E\u6761",
  14072. solidColorDataBar_5: "\u6D45\u84DD\u8272\u6570\u636E\u6761",
  14073. solidColorDataBar_6: "\u7D2B\u8272\u6570\u636E\u6761",
  14074. colorGradation: "\u8272\u9636",
  14075. colorGradation_1: "\u7EFF-\u9EC4-\u7EA2\u8272\u9636",
  14076. colorGradation_2: "\u7EA2-\u9EC4-\u7EFF\u8272\u9636",
  14077. colorGradation_3: "\u7EFF-\u767D-\u7EA2\u8272\u9636",
  14078. colorGradation_4: "\u7EA2-\u767D-\u7EFF\u8272\u9636",
  14079. colorGradation_5: "\u84DD-\u767D-\u7EA2\u8272\u9636",
  14080. colorGradation_6: "\u7EA2-\u767D-\u84DD\u8272\u9636",
  14081. colorGradation_7: "\u767D-\u7EA2\u8272\u9636",
  14082. colorGradation_8: "\u7EA2-\u767D\u8272\u9636",
  14083. colorGradation_9: "\u7EFF-\u767D\u8272\u9636",
  14084. colorGradation_10: "\u767D-\u7EFF\u8272\u9636",
  14085. colorGradation_11: "\u7EFF-\u9EC4\u8272\u9636",
  14086. colorGradation_12: "\u9EC4-\u7EFF\u8272\u9636",
  14087. icons: "\u56FE\u6807\u96C6",
  14088. pleaseSelectIcon: "\u8BF7\u70B9\u51FB\u9009\u62E9\u4E00\u7EC4\u56FE\u6807\uFF1A",
  14089. cellValue: "\u5355\u5143\u683C\u503C",
  14090. specificText: "\u7279\u5B9A\u6587\u672C",
  14091. occurrence: "\u53D1\u751F\u65E5\u671F",
  14092. greaterThan: "\u5927\u4E8E",
  14093. lessThan: "\u5C0F\u4E8E",
  14094. between: "\u4ECB\u4E8E",
  14095. equal: "\u7B49\u4E8E",
  14096. in: "\u548C",
  14097. to: "\u5230",
  14098. between2: "\u4E4B\u95F4",
  14099. contain: "\u5305\u542B",
  14100. textContains: "\u6587\u672C\u5305\u542B",
  14101. duplicateValue: "\u91CD\u590D\u503C",
  14102. uniqueValue: "\u552F\u4E00\u503C",
  14103. top: "\u524D",
  14104. top10: "\u524D 10 \u9879",
  14105. top10_percent: "\u524D 10%",
  14106. last: "\u540E",
  14107. last10: "\u540E 10 \u9879",
  14108. last10_percent: "\u540E 10%",
  14109. oneself: "\u4E2A",
  14110. above: "\u9AD8\u4E8E",
  14111. aboveAverage: "\u9AD8\u4E8E\u5E73\u5747\u503C",
  14112. below: "\u4F4E\u4E8E",
  14113. belowAverage: "\u4F4E\u4E8E\u5E73\u5747\u503C",
  14114. all: "\u5168\u90E8",
  14115. yesterday: "\u6628\u5929",
  14116. today: "\u4ECA\u5929",
  14117. tomorrow: "\u660E\u5929",
  14118. lastWeek: "\u4E0A\u5468",
  14119. thisWeek: "\u672C\u5468",
  14120. lastMonth: "\u4E0A\u6708",
  14121. thisMonth: "\u672C\u6708",
  14122. lastYear: "\u53BB\u5E74",
  14123. thisYear: "\u672C\u5E74",
  14124. last7days: "\u6700\u8FD17\u5929",
  14125. last30days: "\u6700\u8FD130\u5929",
  14126. next7days: "\u672A\u67657\u5929",
  14127. next30days: "\u672A\u676530\u5929",
  14128. next60days: "\u672A\u676560\u5929",
  14129. chooseRuleType: "\u9009\u62E9\u89C4\u5219\u7C7B\u578B",
  14130. editRuleDescription: "\u7F16\u8F91\u89C4\u5219\u8BF4\u660E",
  14131. newFormatRule: "\u65B0\u5EFA\u683C\u5F0F\u89C4\u5219",
  14132. editFormatRule: "\u7F16\u8F91\u683C\u5F0F\u89C4\u5219",
  14133. formatStyle: "\u683C\u5F0F\u6837\u5F0F",
  14134. fillType: "\u586B\u5145\u7C7B\u578B",
  14135. color: "\u989C\u8272",
  14136. twocolor: "\u53CC\u8272",
  14137. tricolor: "\u4E09\u8272",
  14138. multicolor: "\u5F69\u8272",
  14139. grayColor: "\u7070\u8272",
  14140. gradient: "\u6E10\u53D8",
  14141. solid: "\u5B9E\u5FC3",
  14142. maxValue: "\u6700\u5927\u503C",
  14143. medianValue: "\u4E2D\u95F4\u503C",
  14144. minValue: "\u6700\u5C0F\u503C",
  14145. direction: "\u65B9\u5411",
  14146. threeWayArrow: "\u4E09\u5411\u7BAD\u5934",
  14147. fourWayArrow: "\u56DB\u5411\u7BAD\u5934",
  14148. fiveWayArrow: "\u4E94\u5411\u7BAD\u5934",
  14149. threeTriangles: "3\u4E2A\u4E09\u89D2\u5F62",
  14150. shape: "\u5F62\u72B6",
  14151. threeColorTrafficLight: "\u4E09\u8272\u4EA4\u901A\u706F",
  14152. fourColorTrafficLight: "\u56DB\u8272\u4EA4\u901A\u706F",
  14153. threeSigns: "\u4E09\u6807\u5FD7",
  14154. greenRedBlackGradient: "\u7EFF-\u7EA2-\u9ED1\u6E10\u53D8",
  14155. rimless: "\u65E0\u8FB9\u6846",
  14156. bordered: "\u6709\u8FB9\u6846",
  14157. mark: "\u6807\u8BB0",
  14158. threeSymbols: "\u4E09\u4E2A\u7B26\u53F7",
  14159. tricolorFlag: "\u4E09\u8272\u65D7",
  14160. circled: "\u6709\u5706\u5708",
  14161. noCircle: "\u65E0\u5706\u5708",
  14162. grade: "\u7B49\u7EA7",
  14163. grade4: "\u56DB\u7B49\u7EA7",
  14164. grade5: "\u4E94\u7B49\u7EA7",
  14165. threeStars: "3\u4E2A\u661F\u5F62",
  14166. fiveQuadrantDiagram: "\u4E94\u8C61\u9650\u56FE",
  14167. fiveBoxes: "5\u4E2A\u6846"
  14168. },
  14169. insertLink: {
  14170. linkText: "\u6587\u672C",
  14171. linkType: "\u94FE\u63A5\u7C7B\u578B",
  14172. external: "\u5916\u90E8\u94FE\u63A5",
  14173. internal: "\u5185\u90E8\u94FE\u63A5",
  14174. linkAddress: "\u94FE\u63A5\u5730\u5740",
  14175. linkSheet: "\u5DE5\u4F5C\u8868",
  14176. linkCell: "\u5355\u5143\u683C\u5F15\u7528",
  14177. linkTooltip: "\u63D0\u793A",
  14178. placeholder1: "\u8BF7\u8F93\u5165\u7F51\u9875\u94FE\u63A5\u5730\u5740",
  14179. placeholder2: "\u8BF7\u8F93\u5165\u8981\u5F15\u7528\u7684\u5355\u5143\u683C\uFF0C\u4F8BA1",
  14180. placeholder3: "\u8BF7\u8F93\u5165\u63D0\u793A\u5185\u5BB9",
  14181. tooltipInfo1: "\u8BF7\u8F93\u5165\u6709\u6548\u7684\u94FE\u63A5",
  14182. tooltipInfo2: "\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u5355\u5143\u683C\u5F15\u7528"
  14183. },
  14184. dataVerification: {
  14185. cellRange: "\u5355\u5143\u683C\u8303\u56F4",
  14186. selectCellRange: "\u70B9\u51FB\u9009\u62E9\u5355\u5143\u683C\u8303\u56F4",
  14187. selectCellRange2: "\u8BF7\u9009\u62E9\u5355\u5143\u683C\u8303\u56F4",
  14188. verificationCondition: "\u9A8C\u8BC1\u6761\u4EF6",
  14189. allowMultiSelect: "\u662F\u5426\u5141\u8BB8\u591A\u9009",
  14190. dropdown: "\u4E0B\u62C9\u5217\u8868",
  14191. checkbox: "\u590D\u9009\u6846",
  14192. number: "\u6570\u5B57",
  14193. number_integer: "\u6570\u5B57-\u6574\u6570",
  14194. number_decimal: "\u6570\u5B57-\u5C0F\u6570",
  14195. text_content: "\u6587\u672C-\u5185\u5BB9",
  14196. text_length: "\u6587\u672C-\u957F\u5EA6",
  14197. date: "\u65E5\u671F",
  14198. validity: "\u6709\u6548\u6027",
  14199. placeholder1: "\u8BF7\u8F93\u5165\u9009\u9879\uFF0C\u4EE5\u82F1\u6587\u9017\u53F7\u5206\u9694\uFF0C\u59821,2,3,4,5",
  14200. placeholder2: "\u8BF7\u8F93\u5165\u5185\u5BB9",
  14201. placeholder3: "\u6570\u503C\uFF0C\u598210",
  14202. placeholder4: "\u8BF7\u8F93\u5165\u6307\u5B9A\u7684\u6587\u672C",
  14203. placeholder5: "\u8BF7\u8F93\u5165\u9009\u4E2D\u5355\u5143\u683C\u65F6\u663E\u793A\u7684\u63D0\u793A\u8BED",
  14204. selected: "\u9009\u62E9\u65F6",
  14205. notSelected: "\u672A\u9009\u62E9",
  14206. between: "\u4ECB\u4E8E",
  14207. notBetween: "\u4E0D\u4ECB\u4E8E",
  14208. equal: "\u7B49\u4E8E",
  14209. notEqualTo: "\u4E0D\u7B49\u4E8E",
  14210. moreThanThe: "\u5927\u4E8E",
  14211. lessThan: "\u5C0F\u4E8E",
  14212. greaterOrEqualTo: "\u5927\u4E8E\u7B49\u4E8E",
  14213. lessThanOrEqualTo: "\u5C0F\u4E8E\u7B49\u4E8E",
  14214. include: "\u5305\u62EC",
  14215. exclude: "\u4E0D\u5305\u62EC",
  14216. earlierThan: "\u65E9\u4E8E",
  14217. noEarlierThan: "\u4E0D\u65E9\u4E8E",
  14218. laterThan: "\u665A\u4E8E",
  14219. noLaterThan: "\u4E0D\u665A\u4E8E",
  14220. identificationNumber: "\u8EAB\u4EFD\u8BC1\u53F7\u7801",
  14221. phoneNumber: "\u624B\u673A\u53F7",
  14222. remote: "\u81EA\u52A8\u8FDC\u7A0B\u83B7\u53D6\u9009\u9879",
  14223. prohibitInput: "\u8F93\u5165\u6570\u636E\u65E0\u6548\u65F6\u7981\u6B62\u8F93\u5165",
  14224. hintShow: "\u9009\u4E2D\u5355\u5143\u683C\u65F6\u663E\u793A\u63D0\u793A\u8BED",
  14225. deleteVerification: "\u5220\u9664\u9A8C\u8BC1",
  14226. tooltipInfo1: "\u4E0B\u62C9\u5217\u8868\u9009\u9879\u4E0D\u53EF\u4E3A\u7A7A",
  14227. tooltipInfo2: "\u590D\u9009\u6846\u5185\u5BB9\u4E0D\u53EF\u4E3A\u7A7A",
  14228. tooltipInfo3: "\u8F93\u5165\u7684\u503C\u4E0D\u662F\u6570\u503C\u7C7B\u578B",
  14229. tooltipInfo4: "\u6570\u503C2\u4E0D\u80FD\u5C0F\u4E8E\u6570\u503C1",
  14230. tooltipInfo5: "\u6587\u672C\u5185\u5BB9\u4E0D\u80FD\u4E3A\u7A7A",
  14231. tooltipInfo6: "\u8F93\u5165\u7684\u503C\u4E0D\u662F\u65E5\u671F\u7C7B\u578B",
  14232. tooltipInfo7: "\u65E5\u671F2\u4E0D\u80FD\u5C0F\u4E8E\u65E5\u671F1",
  14233. textlengthInteger: "\u6587\u672C\u957F\u5EA6\u5FC5\u987B\u662F\u5927\u4E8E\u7B49\u4E8E0\u7684\u6574\u6570"
  14234. },
  14235. formula: {
  14236. sum: "\u6C42\u548C",
  14237. average: "\u5E73\u5747\u503C",
  14238. count: "\u8BA1\u6570",
  14239. max: "\u6700\u5927\u503C",
  14240. min: "\u6700\u5C0F\u503C",
  14241. ifGenerate: "if\u516C\u5F0F\u751F\u6210\u5668",
  14242. find: "\u66F4\u591A\u51FD\u6570",
  14243. tipNotBelongToIf: "\u8BE5\u5355\u5143\u683C\u51FD\u6570\u4E0D\u5C5E\u4E8Eif\u516C\u5F0F\uFF01",
  14244. tipSelectCell: "\u8BF7\u9009\u62E9\u5355\u5143\u683C\u63D2\u5165\u51FD\u6570",
  14245. ifGenCompareValueTitle: "\u6BD4\u8F83\u503C",
  14246. ifGenSelectCellTitle: "\u70B9\u51FB\u9009\u62E9\u5355\u5143\u683C",
  14247. ifGenRangeTitle: "\u8303\u56F4",
  14248. ifGenRangeTo: "\u81F3",
  14249. ifGenRangeEvaluate: "\u8303\u56F4\u8BC4\u4F30",
  14250. ifGenSelectRangeTitle: "\u70B9\u51FB\u9009\u62E9\u8303\u56F4",
  14251. ifGenCutWay: "\u5212\u5206\u65B9\u5F0F",
  14252. ifGenCutSame: "\u5212\u5206\u503C\u76F8\u540C",
  14253. ifGenCutNpiece: "\u5212\u5206\u4E3AN\u4EFD",
  14254. ifGenCutCustom: "\u81EA\u5B9A\u4E49\u8F93\u5165",
  14255. ifGenCutConfirm: "\u751F\u6210",
  14256. ifGenTipSelectCell: "\u9009\u62E9\u5355\u5143\u683C",
  14257. ifGenTipSelectCellPlace: "\u8BF7\u9009\u62E9\u5355\u5143\u683C",
  14258. ifGenTipSelectRange: "\u9009\u62E9\u5355\u8303\u56F4",
  14259. ifGenTipSelectRangePlace: "\u8BF7\u9009\u62E9\u8303\u56F4",
  14260. ifGenTipNotNullValue: "\u6BD4\u8F83\u503C\u4E0D\u80FD\u4E3A\u7A7A\uFF01",
  14261. ifGenTipLableTitile: "\u6807\u7B7E",
  14262. ifGenTipRangeNotforNull: "\u8303\u56F4\u4E0D\u80FD\u4E3A\u7A7A\uFF01",
  14263. ifGenTipCutValueNotforNull: "\u5212\u5206\u503C\u4E0D\u80FD\u4E3A\u7A7A\uFF01",
  14264. ifGenTipNotGenCondition: "\u6CA1\u6709\u751F\u6210\u53EF\u7528\u7684\u6761\u4EF6\uFF01"
  14265. },
  14266. formulaMore: {
  14267. valueTitle: "\u503C",
  14268. tipSelectDataRange: "\u9009\u53D6\u6570\u636E\u8303\u56F4",
  14269. tipDataRangeTile: "\u6570\u636E\u8303\u56F4",
  14270. findFunctionTitle: "\u67E5\u627E\u51FD\u6570",
  14271. tipInputFunctionName: "\u8BF7\u8F93\u5165\u60A8\u8981\u67E5\u627E\u7684\u51FD\u6570\u540D\u79F0\u6216\u51FD\u6570\u529F\u80FD\u7684\u7B80\u8981\u63CF\u8FF0",
  14272. "Array": "\u6570\u7EC4",
  14273. "Database": "\u6570\u636E\u6E90",
  14274. "Date": "\u65E5\u671F",
  14275. "Engineering": "\u5DE5\u7A0B\u8BA1\u7B97",
  14276. "Filter": "\u8FC7\u6EE4\u5668",
  14277. "Financial": "\u8D22\u52A1",
  14278. "luckysheet": "Luckysheet\u5185\u7F6E",
  14279. "other": "\u5176\u5B83",
  14280. "Logical": "\u903B\u8F91",
  14281. "Lookup": "\u67E5\u627E",
  14282. "Math": "\u6570\u5B66",
  14283. "Operator": "\u8FD0\u7B97\u7B26",
  14284. "Parser": "\u8F6C\u6362\u5DE5\u5177",
  14285. "Statistical": "\u7EDF\u8BA1",
  14286. "Text": "\u6587\u672C",
  14287. "dataMining": "\u6570\u636E\u6316\u6398",
  14288. "selectFunctionTitle": "\u9009\u62E9\u51FD\u6570",
  14289. "calculationResult": "\u8BA1\u7B97\u7ED3\u679C",
  14290. tipSuccessText: "\u6210\u529F",
  14291. tipParamErrorText: "\u53C2\u6570\u7C7B\u578B\u9519\u8BEF",
  14292. "helpClose": "\u5173\u95ED",
  14293. "helpCollapse": "\u6536\u8D77",
  14294. "helpExample": "\u793A\u4F8B",
  14295. "helpAbstract": "\u6458\u8981",
  14296. "execfunctionError": '\u63D0\u793A", "\u516C\u5F0F\u5B58\u5728\u9519\u8BEF',
  14297. "execfunctionSelfError": "\u516C\u5F0F\u4E0D\u53EF\u5F15\u7528\u5176\u672C\u8EAB\u7684\u5355\u5143\u683C",
  14298. "execfunctionSelfErrorResult": "\u516C\u5F0F\u4E0D\u53EF\u5F15\u7528\u5176\u672C\u8EAB\u7684\u5355\u5143\u683C\uFF0C\u4F1A\u5BFC\u81F4\u8BA1\u7B97\u7ED3\u679C\u4E0D\u51C6\u786E",
  14299. "allowRepeatText": "\u53EF\u91CD\u590D",
  14300. "allowOptionText": "\u53EF\u9009",
  14301. "selectCategory": "\u6216\u9009\u62E9\u7C7B\u522B"
  14302. },
  14303. drag: {
  14304. noMerge: "\u65E0\u6CD5\u5BF9\u5408\u5E76\u5355\u5143\u683C\u6267\u884C\u6B64\u64CD\u4F5C",
  14305. affectPivot: "\u65E0\u6CD5\u5BF9\u6240\u9009\u5355\u5143\u683C\u8FDB\u884C\u6B64\u66F4\u6539\uFF0C\u56E0\u4E3A\u5B83\u4F1A\u5F71\u54CD\u6570\u636E\u900F\u89C6\u8868\uFF01",
  14306. noMulti: "\u65E0\u6CD5\u5BF9\u591A\u91CD\u9009\u62E9\u533A\u57DF\u6267\u884C\u6B64\u64CD\u4F5C,\u8BF7\u9009\u62E9\u5355\u4E2A\u533A\u57DF",
  14307. noPaste: "\u65E0\u6CD5\u5728\u6B64\u5904\u7C98\u8D34\u6B64\u5185\u5BB9\uFF0C\u8BF7\u9009\u62E9\u7C98\u8D34\u533A\u57DF\u7684\u4E00\u4E2A\u5355\u5143\u683C\uFF0C\u7136\u540E\u518D\u6B21\u5C1D\u8BD5\u7C98\u8D34",
  14308. noPartMerge: "\u65E0\u6CD5\u5BF9\u90E8\u5206\u5408\u5E76\u5355\u5143\u683C\u6267\u884C\u6B64\u64CD\u4F5C",
  14309. inputCorrect: "\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u6570\u503C",
  14310. notLessOne: "\u884C\u5217\u6570\u4E0D\u80FD\u5C0F\u4E8E1",
  14311. offsetColumnLessZero: "\u504F\u79FB\u5217\u4E0D\u80FD\u4E3A\u8D1F\u6570\uFF01",
  14312. pasteMustKeybordAlert: "Copy and paste in the Sheet: Ctrl + C to copy, Ctrl + V to paste, Ctrl + X to cut",
  14313. pasteMustKeybordAlertHTMLTitle: "Copy and paste in the Sheet",
  14314. pasteMustKeybordAlertHTML: "<span style='line-height: 1.0;font-size:36px;font-weight: bold;color:#666;'>Ctrl + C</span>&nbsp;&nbsp;to copy<br/><span style='line-height: 1.0;font-size:36px;font-weight: bold;color:#666;'>Ctrl + V</span>&nbsp;&nbsp;to paste<br/><span style='line-height: 1.0;font-size:36px;font-weight: bold;color:#666;'>Ctrl + X</span>&nbsp;&nbsp;to cut"
  14315. },
  14316. paste: {
  14317. warning: "\u63D0\u793A",
  14318. errorNotAllowMulti: "\u4E0D\u80FD\u5BF9\u591A\u91CD\u9009\u62E9\u533A\u57DF\u6267\u884C\u6B64\u64CD\u4F5C\uFF0C\u8BF7\u9009\u62E9\u5355\u4E2A\u533A\u57DF\uFF0C\u7136\u540E\u518D\u8BD5",
  14319. errorNotAllowMerged: "\u4E0D\u80FD\u5BF9\u5408\u5E76\u5355\u5143\u683C\u505A\u90E8\u5206\u66F4\u6539"
  14320. },
  14321. pivotTable: {
  14322. title: "\u6570\u636E\u900F\u89C6\u8868",
  14323. closePannel: "\u5173\u95ED",
  14324. editRange: "\u7F16\u8F91\u8303\u56F4",
  14325. tipPivotFieldSelected: "\u9009\u62E9\u9700\u8981\u6DFB\u52A0\u5230\u6570\u636E\u900F\u89C6\u8868\u7684\u5B57\u6BB5",
  14326. tipClearSelectedField: "\u6E05\u9664\u6240\u6709\u5DF2\u9009\u5B57\u6BB5",
  14327. btnClearSelectedField: "\u6E05\u9664",
  14328. btnFilter: "\u7B5B\u9009",
  14329. titleRow: "\u884C",
  14330. titleColumn: "\u5217",
  14331. titleValue: "\u6570\u503C",
  14332. tipShowColumn: "\u7EDF\u8BA1\u5B57\u6BB5\u663E\u793A\u4E3A\u5217",
  14333. tipShowRow: "\u7EDF\u8BA1\u5B57\u6BB5\u663E\u793A\u4E3A\u884C",
  14334. titleSelectionDataRange: "\u9009\u53D6\u6570\u636E\u8303\u56F4",
  14335. titleDataRange: "\u6570\u636E\u8303\u56F4",
  14336. valueSum: "\u603B\u8BA1",
  14337. valueStatisticsSUM: "\u6C42\u548C",
  14338. valueStatisticsCOUNT: "\u6570\u503C\u8BA1\u6570",
  14339. valueStatisticsCOUNTA: "\u8BA1\u6570",
  14340. valueStatisticsCOUNTUNIQUE: "\u53BB\u91CD\u8BA1\u6570",
  14341. valueStatisticsAVERAGE: "\u5E73\u5747\u503C",
  14342. valueStatisticsMAX: "\u6700\u5927\u503C",
  14343. valueStatisticsMIN: "\u6700\u5C0F\u503C",
  14344. valueStatisticsMEDIAN: "\u4E2D\u4F4D\u6570",
  14345. valueStatisticsPRODUCT: "\u4E58\u79EF",
  14346. valueStatisticsSTDEV: "\u6807\u51C6\u5DEE",
  14347. valueStatisticsSTDEVP: "\u6574\u4F53\u6807\u51C6\u5DEE",
  14348. valueStatisticslet: "\u65B9\u5DEE",
  14349. valueStatisticsVARP: "\u6574\u4F53\u65B9\u5DEE",
  14350. errorNotAllowEdit: "\u975E\u7F16\u8F91\u6A21\u5F0F\u4E0B\u7981\u6B62\u8BE5\u64CD\u4F5C\uFF01",
  14351. errorNotAllowMulti: "\u4E0D\u80FD\u5BF9\u591A\u91CD\u9009\u62E9\u533A\u57DF\u6267\u884C\u6B64\u64CD\u4F5C\uFF0C\u8BF7\u9009\u62E9\u5355\u4E2A\u533A\u57DF\uFF0C\u7136\u540E\u518D\u8BD5",
  14352. errorSelectRange: "\u8BF7\u9009\u62E9\u65B0\u5EFA\u900F\u89C6\u8868\u7684\u533A\u57DF",
  14353. errorIsDamage: "\u6B64\u6570\u636E\u900F\u89C6\u8868\u7684\u6E90\u6570\u636E\u5DF2\u635F\u574F\uFF01",
  14354. errorNotAllowPivotData: "\u4E0D\u53EF\u9009\u62E9\u6570\u636E\u900F\u89C6\u8868\u4E3A\u6E90\u6570\u636E\uFF01",
  14355. errorSelectionRange: "\u9009\u62E9\u5931\u8D25, \u8F93\u5165\u8303\u56F4\u9519\u8BEF\uFF01",
  14356. errorIncreaseRange: "\u8BF7\u6269\u5927\u9009\u62E9\u7684\u6570\u636E\u8303\u56F4!",
  14357. titleAddColumn: "\u6DFB\u52A0\u5217\u5230\u6570\u636E\u900F\u89C6\u8868",
  14358. titleMoveColumn: "\u79FB\u52A8\u8BE5\u5217\u5230\u4E0B\u65B9\u767D\u6846",
  14359. titleClearColumnFilter: "\u6E05\u9664\u8BE5\u5217\u7684\u7B5B\u9009\u6761\u4EF6",
  14360. titleFilterColumn: "\u7B5B\u9009\u8BE5\u5217",
  14361. titleSort: "\u6392\u5E8F",
  14362. titleNoSort: "\u65E0\u6392\u5E8F",
  14363. titleSortAsc: "\u5347\u5E8F",
  14364. titleSortDesc: "\u964D\u5E8F",
  14365. titleSortBy: "\u6392\u5E8F\u4F9D\u636E",
  14366. titleShowSum: "\u663E\u793A\u603B\u8BA1",
  14367. titleStasticTrue: "\u662F",
  14368. titleStasticFalse: "\u5426"
  14369. },
  14370. dropCell: {
  14371. copyCell: "\u590D\u5236\u5355\u5143\u683C",
  14372. sequence: "\u586B\u5145\u5E8F\u5217",
  14373. onlyFormat: "\u4EC5\u586B\u5145\u683C\u5F0F",
  14374. noFormat: "\u4E0D\u5E26\u683C\u5F0F\u586B\u5145",
  14375. day: "\u4EE5\u5929\u6570\u586B\u5145",
  14376. workDay: "\u4EE5\u5DE5\u4F5C\u65E5\u586B\u5145",
  14377. month: "\u4EE5\u6708\u586B\u5145",
  14378. year: "\u4EE5\u5E74\u586B\u5145",
  14379. chineseNumber: "\u4EE5\u4E2D\u6587\u5C0F\u5199\u6570\u5B57\u586B\u5145"
  14380. },
  14381. imageCtrl: {
  14382. borderTile: "\u56FE\u7247\u8FB9\u6846\u989C\u8272\u9009\u62E9",
  14383. borderCur: "\u5F53\u524D\u989C\u8272"
  14384. },
  14385. protection: {
  14386. protectiontTitle: "\u4FDD\u62A4\u5DE5\u4F5C\u8868",
  14387. enterPassword: "\u8BF7\u8F93\u5165\u5BC6\u7801\uFF08\u53EF\u7559\u7A7A\uFF09",
  14388. enterHint: "\u60A8\u8BD5\u56FE\u66F4\u6539\u7684\u5355\u5143\u683C\u6216\u56FE\u8868\u4F4D\u4E8E\u53D7\u4FDD\u62A4\u7684\u5DE5\u4F5C\u8868\u4E2D\u3002\u82E5\u8981\u66F4\u6539\uFF0C\u8BF7\u53D6\u6D88\u5DE5\u4F5C\u8868\u4FDD\u62A4\u3002\u60A8\u53EF\u80FD\u9700\u8981\u8F93\u5165\u5BC6\u7801",
  14389. swichProtectionTip: "\u4FDD\u62A4\u5DE5\u4F5C\u8868\u53CA\u9501\u5B9A\u7684\u5355\u5143\u683C\u5185\u5BB9",
  14390. authorityTitle: "\u5141\u8BB8\u6B64\u5DE5\u4F5C\u8868\u7684\u7528\u6237\u8FDB\u884C:",
  14391. selectLockedCells: "\u9009\u5B9A\u9501\u5B9A\u5355\u5143\u683C",
  14392. selectunLockedCells: "\u9009\u5B9A\u89E3\u9664\u9501\u5B9A\u7684\u5355\u5143\u683C",
  14393. formatCells: "\u8BBE\u7F6E\u5355\u5143\u683C\u683C\u5F0F",
  14394. formatColumns: "\u8BBE\u7F6E\u5217\u683C\u5F0F",
  14395. formatRows: "\u8BBE\u7F6E\u884C\u683C\u5F0F",
  14396. insertColumns: "\u63D2\u5165\u5217",
  14397. insertRows: "\u63D2\u5165\u884C",
  14398. insertHyperlinks: "\u63D2\u5165\u8D85\u94FE\u63A5",
  14399. deleteColumns: "\u5220\u9664\u5217",
  14400. deleteRows: "\u5220\u9664\u884C",
  14401. sort: "\u6392\u5E8F",
  14402. filter: "\u4F7F\u7528\u81EA\u52A8\u7B5B\u9009",
  14403. usePivotTablereports: "\u4F7F\u7528\u6570\u636E\u900F\u89C6\u8868\u548C\u62A5\u8868",
  14404. editObjects: "\u7F16\u8F91\u5BF9\u8C61",
  14405. editScenarios: "\u7F16\u8F91\u65B9\u6848",
  14406. allowRangeTitle: "\u5141\u8BB8\u7528\u6237\u7F16\u8F91\u533A\u57DF",
  14407. allowRangeAdd: "\u65B0\u5EFA...",
  14408. allowRangeAddTitle: "\u6807\u9898",
  14409. allowRangeAddSqrf: "\u5F15\u7528\u5355\u5143\u683C",
  14410. selectCellRange: "\u70B9\u51FB\u9009\u62E9\u5355\u5143\u683C\u8303\u56F4",
  14411. selectCellRangeHolder: "\u8BF7\u8F93\u5165\u5355\u5143\u683C\u8303\u56F4",
  14412. allowRangeAddTitlePassword: "\u5BC6\u7801",
  14413. allowRangeAddTitleHint: "\u63D0\u793A",
  14414. allowRangeAddTitleHintTitle: "\u8BBE\u7F6E\u5BC6\u7801\u540E\uFF0C\u63D0\u793A\u7528\u6237\u8F93\u5165\u5BC6\u7801(\u53EF\u7559\u7A7A)",
  14415. allowRangeAddtitleDefault: "\u8BF7\u8F93\u5165\u533A\u57DF\u540D\u79F0",
  14416. rangeItemDblclick: "\u53CC\u51FB\u8FDB\u884C\u7F16\u8F91",
  14417. rangeItemHasPassword: "\u5DF2\u8BBE\u7F6E\u5BC6\u7801",
  14418. rangeItemErrorTitleNull: "\u6807\u9898\u4E0D\u80FD\u4E3A\u7A7A",
  14419. rangeItemErrorRangeNull: "\u5355\u5143\u683C\u8303\u56F4\u4E0D\u80FD\u4E3A\u7A7A",
  14420. rangeItemErrorRange: "\u5355\u5143\u683C\u8303\u56F4\u683C\u5F0F\u9519\u8BEF",
  14421. validationTitle: "\u9A8C\u8BC1\u63D0\u793A",
  14422. validationTips: "\u9700\u8981\u8F93\u5165\u5BC6\u7801\u6765\u64A4\u9500\u5DE5\u4F5C\u8868\u7684\u4FDD\u62A4",
  14423. validationInputHint: "\u8BF7\u8F93\u5165\u5BC6\u7801",
  14424. checkPasswordNullalert: "\u5BC6\u7801\u4E0D\u80FD\u4E3A\u7A7A\uFF01",
  14425. checkPasswordWrongalert: "\u5BC6\u7801\u9519\u8BEF\uFF0C\u8BF7\u91CD\u8BD5\uFF01",
  14426. checkPasswordSucceedalert: "\u89E3\u9501\u6210\u529F\uFF0C\u53EF\u4EE5\u7F16\u8F91\u8BE5\u533A\u57DF!",
  14427. defaultRangeHintText: "\u8BE5\u5355\u5143\u683C\u6B63\u5728\u53D7\u5BC6\u7801\u4FDD\u62A4\u3002",
  14428. defaultSheetHintText: "\u8BE5\u5355\u5143\u683C\u6216\u56FE\u8868\u4F4D\u4E8E\u53D7\u4FDD\u62A4\u7684\u5DE5\u4F5C\u8868\u4E2D\uFF0C\u82E5\u8981\u8FDB\u884C\u66F4\u6539\uFF0C\u8BF7\u53D6\u6D88\u5DE5\u4F5C\u8868\u4FDD\u62A4\uFF0C\u60A8\u53EF\u80FD\u9700\u8981\u8F93\u5165\u5BC6\u7801\u3002"
  14429. },
  14430. cellFormat: {
  14431. cellFormatTitle: "\u8BBE\u7F6E\u5355\u5143\u683C\u683C\u5F0F",
  14432. protection: "\u4FDD\u62A4",
  14433. locked: "\u9501\u5B9A\u5355\u5143\u683C",
  14434. hidden: "\u9690\u85CF\u516C\u5F0F",
  14435. protectionTips: "\u53EA\u6709\u4FDD\u62A4\u5DE5\u4F5C\u8868\u529F\u80FD(\u5728\u83DC\u5355\u680F\u70B9\u51FB\u4FDD\u62A4\u5DE5\u4F5C\u8868\u6309\u94AE\u8FDB\u884C\u8BBE\u7F6E)\u5F00\u542F\u540E\uFF0C\u9501\u5B9A\u5355\u5143\u683C\u6216\u9690\u85CF\u516C\u5F0F\u624D\u80FD\u751F\u6548",
  14436. tipsPart: "\u90E8\u5206\u9009\u4E2D",
  14437. tipsAll: "\u5168\u90E8\u9009\u4E2D",
  14438. selectionIsNullAlert: "\u8BF7\u9009\u62E9\u4E00\u4E2A\u8303\u56F4\uFF01",
  14439. sheetDataIsNullAlert: "\u6570\u636E\u4E3A\u7A7A\u65E0\u6CD5\u8BBE\u7F6E\uFF01"
  14440. },
  14441. print: {
  14442. normalBtn: "\u5E38\u89C4\u89C6\u56FE",
  14443. layoutBtn: "\u9875\u9762\u5E03\u5C40",
  14444. pageBtn: "\u5206\u9875\u9884\u89C8",
  14445. menuItemPrint: "\u6253\u5370(Ctrl+P)",
  14446. menuItemAreas: "\u6253\u5370\u533A\u57DF",
  14447. menuItemRows: "\u6253\u5370\u6807\u9898\u884C",
  14448. menuItemColumns: "\u6253\u5370\u6807\u9898\u5217"
  14449. },
  14450. edit: {
  14451. typing: "\u6B63\u5728\u8F93\u5165"
  14452. },
  14453. websocket: {
  14454. success: "WebSocket\u8FDE\u63A5\u6210\u529F",
  14455. refresh: "WebSocket\u8FDE\u63A5\u53D1\u751F\u9519\u8BEF, \u8BF7\u5237\u65B0\u9875\u9762\uFF01",
  14456. wait: "WebSocket\u8FDE\u63A5\u53D1\u751F\u9519\u8BEF, \u8BF7\u8010\u5FC3\u7B49\u5F85\uFF01",
  14457. close: "WebSocket\u8FDE\u63A5\u5173\u95ED",
  14458. contact: "\u670D\u52A1\u5668\u901A\u4FE1\u53D1\u751F\u9519\u8BEF\uFF0C\u8BF7\u5237\u65B0\u9875\u9762\u540E\u518D\u8BD5\uFF0C\u5982\u82E5\u4E0D\u884C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\uFF01",
  14459. support: "\u5F53\u524D\u6D4F\u89C8\u5668\u4E0D\u652F\u6301WebSocket"
  14460. }
  14461. };
  14462. }
  14463. });
  14464. // src/locale/es.js
  14465. var es_default;
  14466. var init_es = __esm({
  14467. "src/locale/es.js"() {
  14468. es_default = {
  14469. functionlist: {
  14470. "SUMIF": {
  14471. "d": "Returns a conditional sum across a range.",
  14472. "a": "A conditional sum across a range.",
  14473. "p": [
  14474. {
  14475. "name": "range",
  14476. "detail": "The range which is tested against `criterion`."
  14477. },
  14478. {
  14479. "name": "criterion",
  14480. "detail": "The pattern or test to apply to `range`."
  14481. },
  14482. {
  14483. "name": "sum_range",
  14484. "detail": "The range to be summed, if different from `range`."
  14485. }
  14486. ]
  14487. },
  14488. "TAN": {
  14489. "d": "Returns the tangent of an angle provided in radians.",
  14490. "a": "Tangent of an angle provided in radians.",
  14491. "p": [
  14492. {
  14493. "name": "angle",
  14494. "detail": "The angle to find the tangent of, in radians."
  14495. }
  14496. ]
  14497. },
  14498. "TANH": {
  14499. "d": "Returns the hyperbolic tangent of any real number.",
  14500. "a": "Hyperbolic tangent of any real number.",
  14501. "p": [
  14502. {
  14503. "name": "value",
  14504. "detail": "Any real value to calculate the hyperbolic tangent of."
  14505. }
  14506. ]
  14507. },
  14508. "CEILING": {
  14509. "d": "Rounds a number up to the nearest integer multiple of specified significance `factor`.",
  14510. "a": "Rounds number up to nearest multiple of a factor.",
  14511. "p": [
  14512. {
  14513. "name": "value",
  14514. "detail": "The value to round up to the nearest integer multiple of `factor`."
  14515. },
  14516. {
  14517. "name": "factor",
  14518. "detail": "The number to whose multiples `value` will be rounded."
  14519. }
  14520. ]
  14521. },
  14522. "ATAN": {
  14523. "d": "Returns the inverse tangent of a value, in radians.",
  14524. "a": "Inverse tangent of a value, in radians.",
  14525. "p": [
  14526. {
  14527. "name": "value",
  14528. "detail": "The value for which to calculate the inverse tangent."
  14529. }
  14530. ]
  14531. },
  14532. "ASINH": {
  14533. "d": "Returns the inverse hyperbolic sine of a number.",
  14534. "a": "Inverse hyperbolic sine of a number.",
  14535. "p": [
  14536. {
  14537. "name": "value",
  14538. "detail": "The value for which to calculate the inverse hyperbolic sine."
  14539. }
  14540. ]
  14541. },
  14542. "ABS": {
  14543. "d": "Returns the absolute value of a number.",
  14544. "a": "Absolute value of a number.",
  14545. "p": [
  14546. {
  14547. "name": "value",
  14548. "detail": "The number of which to return the absolute value."
  14549. }
  14550. ]
  14551. },
  14552. "ACOS": {
  14553. "d": "Returns the inverse cosine of a value, in radians.",
  14554. "a": "Inverse cosine of a value, in radians.",
  14555. "p": [
  14556. {
  14557. "name": "value",
  14558. "detail": "The value for which to calculate the inverse cosine. Must be between `-1` and `1`, inclusive."
  14559. }
  14560. ]
  14561. },
  14562. "ACOSH": {
  14563. "d": "Returns the inverse hyperbolic cosine of a number.",
  14564. "a": "Inverse hyperbolic cosine of a number.",
  14565. "p": [
  14566. {
  14567. "name": "value",
  14568. "detail": "The value for which to calculate the inverse hyperbolic cosine. Must be greater than or equal to `1`."
  14569. }
  14570. ]
  14571. },
  14572. "MULTINOMIAL": {
  14573. "d": "Returns the factorial of the sum of values divided by the product of the values' factorials.",
  14574. "a": "Multinomial distribution function.",
  14575. "p": [
  14576. {
  14577. "name": "value1",
  14578. "detail": "The first value or range to consider."
  14579. },
  14580. {
  14581. "name": "value2",
  14582. "detail": "Additional values or ranges to consider."
  14583. }
  14584. ]
  14585. },
  14586. "ATANH": {
  14587. "d": "Returns the inverse hyperbolic tangent of a number.",
  14588. "a": "Inverse hyperbolic tangent of a number.",
  14589. "p": [
  14590. {
  14591. "name": "value",
  14592. "detail": "The value for which to calculate the inverse hyperbolic tangent. Must be between -1 and 1, exclusive."
  14593. }
  14594. ]
  14595. },
  14596. "ATAN2": {
  14597. "d": "Returns the angle between the x-axis and a line segment from the origin (0,0) to specified coordinate pair (`x`,`y`), in radians.",
  14598. "a": "Arctangent of a value.",
  14599. "p": [
  14600. {
  14601. "name": "x",
  14602. "detail": "The x coordinate of the endpoint of the line segment for which to calculate the angle from the x-axis."
  14603. },
  14604. {
  14605. "name": "y",
  14606. "detail": "The y coordinate of the endpoint of the line segment for which to calculate the angle from the x-axis."
  14607. }
  14608. ]
  14609. },
  14610. "COUNTBLANK": {
  14611. "d": "Returns the number of empty values in a list of values and ranges.",
  14612. "a": "Number of empty values.",
  14613. "p": [
  14614. {
  14615. "name": "value1",
  14616. "detail": "The first value or range in which to count the number of blanks."
  14617. }
  14618. ]
  14619. },
  14620. "COSH": {
  14621. "d": "Returns the hyperbolic cosine of any real number.",
  14622. "a": "Hyperbolic cosine of any real number.",
  14623. "p": [
  14624. {
  14625. "name": "value",
  14626. "detail": "Any real value to calculate the hyperbolic cosine of."
  14627. }
  14628. ]
  14629. },
  14630. "INT": {
  14631. "d": "Rounds a number down to the nearest integer that is less than or equal to it.",
  14632. "a": "Rounds number down to nearest integer.",
  14633. "p": [
  14634. {
  14635. "name": "value",
  14636. "detail": "The value to round down to the nearest integer."
  14637. }
  14638. ]
  14639. },
  14640. "ISEVEN": {
  14641. "d": "Checks whether the provided value is even.",
  14642. "a": "Whether the provided value is even.",
  14643. "p": [
  14644. {
  14645. "name": "value",
  14646. "detail": "The value to be verified as even."
  14647. }
  14648. ]
  14649. },
  14650. "ISODD": {
  14651. "d": "Checks whether the provided value is odd.",
  14652. "a": "Whether the provided value is odd.",
  14653. "p": [
  14654. {
  14655. "name": "value",
  14656. "detail": "The value to be verified as odd."
  14657. }
  14658. ]
  14659. },
  14660. "LCM": {
  14661. "d": "Returns the least common multiple of one or more integers.",
  14662. "a": "Least common multiple of one or more integers.",
  14663. "p": [
  14664. {
  14665. "name": "value1",
  14666. "detail": "The first value or range whose factors to consider in a calculation to find the least common multiple."
  14667. },
  14668. {
  14669. "name": "value2",
  14670. "detail": "Additional values or ranges whose factors to consider to find the least common multiple."
  14671. }
  14672. ]
  14673. },
  14674. "LN": {
  14675. "d": "Returns the logarithm of a number, base e (Euler's number).",
  14676. "a": "The logarithm of a number, base e (euler's number).",
  14677. "p": [
  14678. {
  14679. "name": "value",
  14680. "detail": "The value for which to calculate the logarithm, base e."
  14681. }
  14682. ]
  14683. },
  14684. "LOG": {
  14685. "d": "Returns the logarithm of a number with respect to a base.",
  14686. "a": "The logarithm of a number with respect to a base.",
  14687. "p": [
  14688. {
  14689. "name": "value",
  14690. "detail": "The value for which to calculate the logarithm."
  14691. },
  14692. {
  14693. "name": "base",
  14694. "detail": "The base to use for calculation of the logarithm."
  14695. }
  14696. ]
  14697. },
  14698. "LOG10": {
  14699. "d": "Returns the logarithm of a number, base 10.",
  14700. "a": "The logarithm of a number, base 10.",
  14701. "p": [
  14702. {
  14703. "name": "value",
  14704. "detail": "The value for which to calculate the logarithm, base 10."
  14705. }
  14706. ]
  14707. },
  14708. "MOD": {
  14709. "d": "Returns the result of the modulo operator, the remainder after a division operation.",
  14710. "a": "Modulo (remainder) operator.",
  14711. "p": [
  14712. {
  14713. "name": "dividend",
  14714. "detail": "The number to be divided to find the remainder."
  14715. },
  14716. {
  14717. "name": "divisor",
  14718. "detail": "The number to divide by."
  14719. }
  14720. ]
  14721. },
  14722. "MROUND": {
  14723. "d": "Rounds one number to the nearest integer multiple of another.",
  14724. "a": "Rounds a number to the nearest integer multiple.",
  14725. "p": [
  14726. {
  14727. "name": "value",
  14728. "detail": "The number to round to the nearest integer multiple of another."
  14729. },
  14730. {
  14731. "name": "factor",
  14732. "detail": "The number to whose multiples `value` will be rounded."
  14733. }
  14734. ]
  14735. },
  14736. "ODD": {
  14737. "d": "Rounds a number up to the nearest odd integer.",
  14738. "a": "Rounds a number up to the nearest odd integer.",
  14739. "p": [
  14740. {
  14741. "name": "value",
  14742. "detail": "The value to round to the next greatest odd number."
  14743. }
  14744. ]
  14745. },
  14746. "SUMSQ": {
  14747. "d": "Returns the sum of the squares of a series of numbers and/or cells.",
  14748. "a": "Sum of squares.",
  14749. "p": [
  14750. {
  14751. "name": "value1",
  14752. "detail": "The first number or range whose squares to add together."
  14753. },
  14754. {
  14755. "name": "value2",
  14756. "detail": "Additional numbers or ranges whose squares to add to the square(s) of `value1`."
  14757. }
  14758. ]
  14759. },
  14760. "COMBIN": {
  14761. "d": "Returns the number of ways to choose some number of objects from a pool of a given size of objects.",
  14762. "a": "Number of combinations from a set of objects.",
  14763. "p": [
  14764. {
  14765. "name": "n",
  14766. "detail": "The size of the pool of objects to choose from."
  14767. },
  14768. {
  14769. "name": "k",
  14770. "detail": "The number of objects to choose."
  14771. }
  14772. ]
  14773. },
  14774. "SUM": {
  14775. "d": "Returns the sum of a series of numbers and/or cells.",
  14776. "a": "Sum of a series of numbers and/or cells.",
  14777. "p": [
  14778. {
  14779. "name": "value1",
  14780. "detail": "The first number or range to add together."
  14781. },
  14782. {
  14783. "name": "value2",
  14784. "detail": "Additional numbers or ranges to add to `value1`."
  14785. }
  14786. ]
  14787. },
  14788. "SUBTOTAL": {
  14789. "d": "Returns a subtotal for a vertical range of cells using a specified aggregation function.",
  14790. "a": "Subtotal for a range using a specific function.",
  14791. "p": [
  14792. {
  14793. "name": "function_code",
  14794. "detail": "The function to use in subtotal aggregation."
  14795. },
  14796. {
  14797. "name": "range1",
  14798. "detail": "The first range over which to calculate a subtotal."
  14799. },
  14800. {
  14801. "name": "range2",
  14802. "detail": "Additional ranges over which to calculate subtotals."
  14803. }
  14804. ]
  14805. },
  14806. "ASIN": {
  14807. "d": "Returns the inverse sine of a value, in radians.",
  14808. "a": "Inverse sine of a value, in radians.",
  14809. "p": [
  14810. {
  14811. "name": "value",
  14812. "detail": "The value for which to calculate the inverse sine. Must be between `-1` and `1`, inclusive."
  14813. }
  14814. ]
  14815. },
  14816. "COUNTIF": {
  14817. "d": "Returns a conditional count across a range.",
  14818. "a": "A conditional count across a range.",
  14819. "p": [
  14820. {
  14821. "name": "range",
  14822. "detail": "The range that is tested against `criterion`."
  14823. },
  14824. {
  14825. "name": "criterion",
  14826. "detail": "The pattern or test to apply to `range`."
  14827. }
  14828. ]
  14829. },
  14830. "RADIANS": {
  14831. "d": "Converts an angle value in degrees to radians.",
  14832. "a": "Converts an angle value in degrees to radians.",
  14833. "p": [
  14834. {
  14835. "name": "angle",
  14836. "detail": "The angle to convert from degrees to radians."
  14837. }
  14838. ]
  14839. },
  14840. "RAND": {
  14841. "d": "Returns a random number between 0 inclusive and 1 exclusive.",
  14842. "a": "A random number between 0 inclusive and 1 exclusive.",
  14843. "p": []
  14844. },
  14845. "COUNTUNIQUE": {
  14846. "d": "Counts the number of unique values in a list of specified values and ranges.",
  14847. "a": "Counts number of unique values in a range.",
  14848. "p": [
  14849. {
  14850. "name": "value1",
  14851. "detail": "The first value or range to consider for uniqueness."
  14852. },
  14853. {
  14854. "name": "value2",
  14855. "detail": "Additional values or ranges to consider for uniqueness."
  14856. }
  14857. ]
  14858. },
  14859. "DEGREES": {
  14860. "d": "Converts an angle value in radians to degrees.",
  14861. "a": "Converts an angle value in radians to degrees.",
  14862. "p": [
  14863. {
  14864. "name": "angle",
  14865. "detail": "The angle to convert from radians to degrees."
  14866. }
  14867. ]
  14868. },
  14869. "ERFC": {
  14870. "d": "Returns the complementary Gauss error function of a value.",
  14871. "a": "Complementary gauss error function of a value.",
  14872. "p": [
  14873. {
  14874. "name": "z",
  14875. "detail": "The number for which to calculate the complementary Gauss error function."
  14876. }
  14877. ]
  14878. },
  14879. "EVEN": {
  14880. "d": "Rounds a number up to the nearest even integer.",
  14881. "a": "Rounds a number up to the nearest even integer.",
  14882. "p": [
  14883. {
  14884. "name": "value",
  14885. "detail": "The value to round to the next greatest even number."
  14886. }
  14887. ]
  14888. },
  14889. "EXP": {
  14890. "d": "Returns Euler's number, e (~2.718) raised to a power.",
  14891. "a": "Euler's number, e (~2.718) raised to a power.",
  14892. "p": [
  14893. {
  14894. "name": "exponent",
  14895. "detail": "The exponent to raise e to."
  14896. }
  14897. ]
  14898. },
  14899. "FACT": {
  14900. "d": "Returns the factorial of a number.",
  14901. "a": "Factorial of a number.",
  14902. "p": [
  14903. {
  14904. "name": "value",
  14905. "detail": "The number or reference to a number whose factorial will be calculated and returned."
  14906. }
  14907. ]
  14908. },
  14909. "FACTDOUBLE": {
  14910. "d": 'Returns the "double factorial" of a number.',
  14911. "a": '"double factorial" of a number.',
  14912. "p": [
  14913. {
  14914. "name": "value",
  14915. "detail": "The number or reference to a number whose double factorial will be calculated and returned."
  14916. }
  14917. ]
  14918. },
  14919. "PI": {
  14920. "d": "Returns the value of Pi to 14 decimal places.",
  14921. "a": "The number pi.",
  14922. "p": []
  14923. },
  14924. "FLOOR": {
  14925. "d": "Rounds a number down to the nearest integer multiple of specified significance `factor`.",
  14926. "a": "Rounds number down to nearest multiple of a factor.",
  14927. "p": [
  14928. {
  14929. "name": "value",
  14930. "detail": "The value to round down to the nearest integer multiple of `factor`."
  14931. },
  14932. {
  14933. "name": "factor",
  14934. "detail": "The number to whose multiples `value` will be rounded."
  14935. }
  14936. ]
  14937. },
  14938. "GCD": {
  14939. "d": "Returns the greatest common divisor of one or more integers.",
  14940. "a": "Greatest common divisor of one or more integers.",
  14941. "p": [
  14942. {
  14943. "name": "value1",
  14944. "detail": "The first value or range whose factors to consider in a calculation to find the greatest common divisor."
  14945. },
  14946. {
  14947. "name": "value2",
  14948. "detail": "Additional values or ranges whose factors to consider to find the greatest common divisor."
  14949. }
  14950. ]
  14951. },
  14952. "RANDBETWEEN": {
  14953. "d": "Returns a uniformly random integer between two values, inclusive.",
  14954. "a": "Random integer between two values, inclusive.",
  14955. "p": [
  14956. {
  14957. "name": "low",
  14958. "detail": "The low end of the random range."
  14959. },
  14960. {
  14961. "name": "high",
  14962. "detail": "The high end of the random range."
  14963. }
  14964. ]
  14965. },
  14966. "ROUND": {
  14967. "d": "Rounds a number to a certain number of decimal places according to standard rules.",
  14968. "a": "Rounds a number according to standard rules.",
  14969. "p": [
  14970. {
  14971. "name": "value",
  14972. "detail": "The value to round to `places` number of places."
  14973. },
  14974. {
  14975. "name": "places",
  14976. "detail": "The number of decimal places to which to round."
  14977. }
  14978. ]
  14979. },
  14980. "ROUNDDOWN": {
  14981. "d": "Rounds a number to a certain number of decimal places, always rounding down to the next valid increment.",
  14982. "a": "Rounds down a number.",
  14983. "p": [
  14984. {
  14985. "name": "value",
  14986. "detail": "The value to round to `places` number of places, always rounding down."
  14987. },
  14988. {
  14989. "name": "places",
  14990. "detail": "The number of decimal places to which to round."
  14991. }
  14992. ]
  14993. },
  14994. "ROUNDUP": {
  14995. "d": "Rounds a number to a certain number of decimal places, always rounding up to the next valid increment.",
  14996. "a": "Rounds up a number.",
  14997. "p": [
  14998. {
  14999. "name": "value",
  15000. "detail": "The value to round to `places` number of places, always rounding up."
  15001. },
  15002. {
  15003. "name": "places",
  15004. "detail": "The number of decimal places to which to round."
  15005. }
  15006. ]
  15007. },
  15008. "SERIESSUM": {
  15009. "d": "Given parameters `x`, `n`, `m`, and `a`, returns the power series sum a",
  15010. "a": "Sum of a power series.",
  15011. "p": [
  15012. {
  15013. "name": "x",
  15014. "detail": "The input to the power series. Varies depending on the type of approximation, may be angle, exponent, or some other value."
  15015. },
  15016. {
  15017. "name": "n",
  15018. "detail": "The initial power to which to raise `x` in the power series."
  15019. },
  15020. {
  15021. "name": "m",
  15022. "detail": "The additive increment by which to increase `x`."
  15023. },
  15024. {
  15025. "name": "a",
  15026. "detail": "The array or range containing the coefficients of the power series."
  15027. }
  15028. ]
  15029. },
  15030. "SIGN": {
  15031. "d": "Given an input number, returns `-1` if it is negative, `1` if positive, and `0` if it is zero.",
  15032. "a": "Sign of a provided number (+/-/0).",
  15033. "p": [
  15034. {
  15035. "name": "value",
  15036. "detail": "The value whose sign will be evaluated."
  15037. }
  15038. ]
  15039. },
  15040. "SIN": {
  15041. "d": "Returns the sine of an angle provided in radians.",
  15042. "a": "Sine of an angle provided in radians.",
  15043. "p": [
  15044. {
  15045. "name": "angle",
  15046. "detail": "The angle to find the sine of, in radians."
  15047. }
  15048. ]
  15049. },
  15050. "SINH": {
  15051. "d": "Returns the hyperbolic sine of any real number.",
  15052. "a": "Hyperbolic sine of any real number.",
  15053. "p": [
  15054. {
  15055. "name": "value",
  15056. "detail": "Any real value to calculate the hyperbolic sine of."
  15057. }
  15058. ]
  15059. },
  15060. "SQRT": {
  15061. "d": "Returns the positive square root of a positive number.",
  15062. "a": "Positive square root of a positive number.",
  15063. "p": [
  15064. {
  15065. "name": "value",
  15066. "detail": "The number for which to calculate the positive square root."
  15067. }
  15068. ]
  15069. },
  15070. "SQRTPI": {
  15071. "d": "Returns the positive square root of the product of Pi and the given positive number.",
  15072. "a": "Square root of the product of pi and number.",
  15073. "p": [
  15074. {
  15075. "name": "value",
  15076. "detail": "The number which will be multiplied by Pi and have the product's square root returned"
  15077. }
  15078. ]
  15079. },
  15080. "GAMMALN": {
  15081. "d": "Returns the logarithm of a specified Gamma function, base e (Euler's number).",
  15082. "a": "Logarithm of gamma function.",
  15083. "p": [
  15084. {
  15085. "name": "value",
  15086. "detail": "The input to the Gamma function. The natural logarithm of Gamma(`value`) will be returned."
  15087. }
  15088. ]
  15089. },
  15090. "COS": {
  15091. "d": "Returns the cosine of an angle provided in radians.",
  15092. "a": "Cosine of an angle provided in radians.",
  15093. "p": [
  15094. {
  15095. "name": "angle",
  15096. "detail": "The angle to find the cosine of, in radians."
  15097. }
  15098. ]
  15099. },
  15100. "TRUNC": {
  15101. "d": "Truncates a number to a certain number of significant digits by omitting less significant digits.",
  15102. "a": "Truncates a number.",
  15103. "p": [
  15104. {
  15105. "name": "value",
  15106. "detail": "The value to be truncated."
  15107. },
  15108. {
  15109. "name": "places",
  15110. "detail": "The number of significant digits to the right of the decimal point to retain."
  15111. }
  15112. ]
  15113. },
  15114. "QUOTIENT": {
  15115. "d": "Returns one number divided by another.",
  15116. "a": "One number divided by another.",
  15117. "p": [
  15118. {
  15119. "name": "dividend",
  15120. "detail": "The number to be divided."
  15121. },
  15122. {
  15123. "name": "divisor",
  15124. "detail": "The number to divide by."
  15125. }
  15126. ]
  15127. },
  15128. "POWER": {
  15129. "d": "Returns a number raised to a power.",
  15130. "a": "A number raised to a power.",
  15131. "p": [
  15132. {
  15133. "name": "base",
  15134. "detail": "The number to raise to the `exponent` power."
  15135. },
  15136. {
  15137. "name": "exponent",
  15138. "detail": "The exponent to raise `base` to."
  15139. }
  15140. ]
  15141. },
  15142. "SUMIFS": {
  15143. "d": "Returns the sum of a range depending on multiple criteria.",
  15144. "a": "Sums a range depending on multiple criteria.",
  15145. "p": [
  15146. {
  15147. "name": "sum_range",
  15148. "detail": "The range to sum."
  15149. },
  15150. {
  15151. "name": "criteria_range1",
  15152. "detail": "The range to check against criterion1."
  15153. },
  15154. {
  15155. "name": "criterion1",
  15156. "detail": "The pattern or test to apply to criteria_range1."
  15157. },
  15158. {
  15159. "name": "criteria_range2",
  15160. "detail": "Additional ranges to check."
  15161. }
  15162. ]
  15163. },
  15164. "COUNTIFS": {
  15165. "d": "Returns the count of a range depending on multiple criteria.",
  15166. "a": "Count values depending on multiple criteria.",
  15167. "p": [
  15168. {
  15169. "name": "criteria_range1",
  15170. "detail": "The range to check against `criterion1`."
  15171. },
  15172. {
  15173. "name": "criterion1",
  15174. "detail": "The pattern or test to apply to `criteria_range1`."
  15175. },
  15176. {
  15177. "name": "criteria_range2",
  15178. "detail": "Additional ranges to check."
  15179. }
  15180. ]
  15181. },
  15182. "PRODUCT": {
  15183. "d": "Returns the result of multiplying a series of numbers together.",
  15184. "a": "Result of multiplying a series of numbers together.",
  15185. "p": [
  15186. {
  15187. "name": "factor1",
  15188. "detail": "The first number or range to calculate for the product."
  15189. },
  15190. {
  15191. "name": "factor2",
  15192. "detail": "More numbers or ranges to calculate for the product."
  15193. }
  15194. ]
  15195. },
  15196. "HARMEAN": {
  15197. "d": "Calculates the harmonic mean of a dataset.",
  15198. "a": "The harmonic mean of a dataset.",
  15199. "p": [
  15200. {
  15201. "name": "value1",
  15202. "detail": "The first value or range of the population."
  15203. },
  15204. {
  15205. "name": "value2",
  15206. "detail": "Additional values or ranges to include in the population."
  15207. }
  15208. ]
  15209. },
  15210. "HYPGEOMDIST": {
  15211. "d": "Calculates the probability of drawing a certain number of successes in a certain number of tries given a population of a certain size containing a certain number of successes, without replacement of draws.",
  15212. "a": "Hypergeometric distribution probability.",
  15213. "p": [
  15214. {
  15215. "name": "num_successes",
  15216. "detail": "The desired number of successes."
  15217. },
  15218. {
  15219. "name": "num_draws",
  15220. "detail": "The number of permitted draws."
  15221. },
  15222. {
  15223. "name": "successes_in_pop",
  15224. "detail": "The total number of successes in the population."
  15225. },
  15226. {
  15227. "name": "pop_size",
  15228. "detail": "The total size of the population"
  15229. },
  15230. {
  15231. "name": "cumulative",
  15232. "detail": "Determine the logical value of the function form. \n\nIf cumulative is TRUE(), HYPGEOM.DIST returns the cumulative distribution function;\n\nif FALSE(), it returns the probability density function."
  15233. }
  15234. ]
  15235. },
  15236. "INTERCEPT": {
  15237. "d": "Calculates the y-value at which the line resulting from linear regression of a dataset will intersect the y-axis (x=0).",
  15238. "a": "Y-intercept of line derived via linear regression.",
  15239. "p": [
  15240. {
  15241. "name": "data_y",
  15242. "detail": "The range representing the array or matrix of dependent data."
  15243. },
  15244. {
  15245. "name": "data_x",
  15246. "detail": "The range representing the array or matrix of independent data."
  15247. }
  15248. ]
  15249. },
  15250. "KURT": {
  15251. "d": 'Calculates the kurtosis of a dataset, which describes the shape, and in particular the "peakedness" of that dataset.',
  15252. "a": "Kurtosis of a dataset.",
  15253. "p": [
  15254. {
  15255. "name": "value1",
  15256. "detail": "The first value or range of the dataset."
  15257. },
  15258. {
  15259. "name": "value2",
  15260. "detail": "Additional values or ranges to include in the dataset."
  15261. }
  15262. ]
  15263. },
  15264. "LARGE": {
  15265. "d": "Returns the nth largest element from a data set, where n is user-defined.",
  15266. "a": "Nth largest element from a data set.",
  15267. "p": [
  15268. {
  15269. "name": "data",
  15270. "detail": "Array or range containing the dataset to consider."
  15271. },
  15272. {
  15273. "name": "n",
  15274. "detail": "The rank from largest to smallest of the element to return."
  15275. }
  15276. ]
  15277. },
  15278. "STDEVA": {
  15279. "d": "Calculates the standard deviation based on a sample, setting text to the value `0`.",
  15280. "a": "Standard deviation of sample (text as 0).",
  15281. "p": [
  15282. {
  15283. "name": "value1",
  15284. "detail": "The first value or range of the sample."
  15285. },
  15286. {
  15287. "name": "value2",
  15288. "detail": "Additional values or ranges to include in the sample."
  15289. }
  15290. ]
  15291. },
  15292. "STDEVP": {
  15293. "d": "Calculates the standard deviation based on an entire population.",
  15294. "a": "Standard deviation of an entire population.",
  15295. "p": [
  15296. {
  15297. "name": "value1",
  15298. "detail": "The first value or range of the population."
  15299. },
  15300. {
  15301. "name": "value2",
  15302. "detail": "Additional values or ranges to include in the population."
  15303. }
  15304. ]
  15305. },
  15306. "GEOMEAN": {
  15307. "d": "Calculates the geometric mean of a dataset.",
  15308. "a": "The geometric mean of a dataset.",
  15309. "p": [
  15310. {
  15311. "name": "value1",
  15312. "detail": "The first value or range of the population."
  15313. },
  15314. {
  15315. "name": "value2",
  15316. "detail": "Additional values or ranges to include in the population."
  15317. }
  15318. ]
  15319. },
  15320. "RANK_EQ": {
  15321. "d": "Returns the rank of a specified value in a dataset. If there is more than one entry of the same value in the dataset, the top rank of the entries will be returned.",
  15322. "a": "Top rank of a specified value in a dataset.",
  15323. "p": [
  15324. {
  15325. "name": "value",
  15326. "detail": "The value whose rank will be determined."
  15327. },
  15328. {
  15329. "name": "data",
  15330. "detail": "The array or range containing the dataset to consider."
  15331. },
  15332. {
  15333. "name": "is_ascending",
  15334. "detail": "Whether to consider the values in `data` in descending or ascending order. If omitted, the default is descending (FALSE)."
  15335. }
  15336. ]
  15337. },
  15338. "RANK_AVG": {
  15339. "d": "Returns the rank of a specified value in a dataset. If there is more than one entry of the same value in the dataset, the average rank of the entries will be returned.",
  15340. "a": "Average rank of a specified value in a dataset.",
  15341. "p": [
  15342. {
  15343. "name": "value",
  15344. "detail": "The value whose rank will be determined."
  15345. },
  15346. {
  15347. "name": "data",
  15348. "detail": "The array or range containing the dataset to consider."
  15349. },
  15350. {
  15351. "name": "is_ascending",
  15352. "detail": "Whether to consider the values in `data` in descending or ascending order. If omitted, the default is descending (FALSE)."
  15353. }
  15354. ]
  15355. },
  15356. "PERCENTRANK_EXC": {
  15357. "d": "Returns the percentage rank (percentile) from 0 to 1 exclusive of a specified value in a dataset.",
  15358. "a": "Percentage rank (percentile) from 0 to 1 exclusive.",
  15359. "p": [
  15360. {
  15361. "name": "data",
  15362. "detail": "The array or range containing the dataset to consider."
  15363. },
  15364. {
  15365. "name": "value",
  15366. "detail": "The value whose percentage rank will be determined."
  15367. },
  15368. {
  15369. "name": "significant_digits",
  15370. "detail": "The number of significant figures to use in the calculation. Default is 3."
  15371. }
  15372. ]
  15373. },
  15374. "PERCENTRANK_INC": {
  15375. "d": "Returns the percentage rank (percentile) from 0 to 1 inclusive of a specified value in a dataset.",
  15376. "a": "Percentage rank (percentile) from 0 to 1 inclusive.",
  15377. "p": [
  15378. {
  15379. "name": "data",
  15380. "detail": "The array or range containing the dataset to consider."
  15381. },
  15382. {
  15383. "name": "value",
  15384. "detail": "The value whose percentage rank will be determined."
  15385. },
  15386. {
  15387. "name": "significant_digits",
  15388. "detail": "The number of significant figures to use in the calculation. Default is 3."
  15389. }
  15390. ]
  15391. },
  15392. "FORECAST": {
  15393. "d": "Calculates the expected y-value for a specified x based on a linear regression of a dataset.",
  15394. "a": "Expected y-value based of linear regression.",
  15395. "p": [
  15396. {
  15397. "name": "x",
  15398. "detail": "The value on the x-axis to forecast."
  15399. },
  15400. {
  15401. "name": "data_y",
  15402. "detail": "The range representing the array or matrix of dependent data."
  15403. },
  15404. {
  15405. "name": "data_x",
  15406. "detail": "The range representing the array or matrix of independent data."
  15407. }
  15408. ]
  15409. },
  15410. "FISHERINV": {
  15411. "d": "Returns the inverse Fisher transformation of a specified value.",
  15412. "a": "Inverse fisher transformation of a specified value.",
  15413. "p": [
  15414. {
  15415. "name": "value",
  15416. "detail": "The value for which to calculate the inverse Fisher transformation."
  15417. }
  15418. ]
  15419. },
  15420. "FISHER": {
  15421. "d": "Returns the Fisher transformation of a specified value.",
  15422. "a": "Fisher transformation of a specified value.",
  15423. "p": [
  15424. {
  15425. "name": "value",
  15426. "detail": "The value for which to calculate the Fisher transformation."
  15427. }
  15428. ]
  15429. },
  15430. "MODE_SNGL": {
  15431. "d": "Returns the most commonly occurring value in a dataset.",
  15432. "a": "Most commonly occurring value in a dataset.",
  15433. "p": [
  15434. {
  15435. "name": "value1",
  15436. "detail": "The first value or range to consider when calculating mode."
  15437. },
  15438. {
  15439. "name": "value2",
  15440. "detail": "Additional values or ranges to consider when calculating mode."
  15441. }
  15442. ]
  15443. },
  15444. "WEIBULL_DIST": {
  15445. "d": "Returns the value of the Weibull distribution function (or Weibull cumulative distribution function) for a specified shape and scale.",
  15446. "a": "Weibull distribution function.",
  15447. "p": [
  15448. {
  15449. "name": "x",
  15450. "detail": "The input to the Weibull distribution function."
  15451. },
  15452. {
  15453. "name": "shape",
  15454. "detail": "The shape parameter of the Weibull distribution function."
  15455. },
  15456. {
  15457. "name": "scale",
  15458. "detail": "The scale parameter of the Weibull distribution function."
  15459. },
  15460. {
  15461. "name": "cumulative",
  15462. "detail": "Whether to use the cumulative distribution function."
  15463. }
  15464. ]
  15465. },
  15466. "COUNT": {
  15467. "d": "Returns the number of numeric values in a dataset.",
  15468. "a": "The number of numeric values in dataset.",
  15469. "p": [
  15470. {
  15471. "name": "value1",
  15472. "detail": "The first value or range to consider when counting."
  15473. },
  15474. {
  15475. "name": "value2",
  15476. "detail": "Additional values or ranges to consider when counting."
  15477. }
  15478. ]
  15479. },
  15480. "COUNTA": {
  15481. "d": "Returns the number of values in a dataset.",
  15482. "a": "The number of values in a dataset.",
  15483. "p": [
  15484. {
  15485. "name": "value1",
  15486. "detail": "The first value or range to consider when counting."
  15487. },
  15488. {
  15489. "name": "value2",
  15490. "detail": "Additional values or ranges to consider when counting."
  15491. }
  15492. ]
  15493. },
  15494. "AVEDEV": {
  15495. "d": "Calculates the average of the magnitudes of deviations of data from a dataset's mean.",
  15496. "a": "Average magnitude of deviations from mean.",
  15497. "p": [
  15498. {
  15499. "name": "value1",
  15500. "detail": "The first value or range of the sample."
  15501. },
  15502. {
  15503. "name": "value2",
  15504. "detail": "Additional values or ranges to include in the sample."
  15505. }
  15506. ]
  15507. },
  15508. "AVERAGE": {
  15509. "d": "Returns the numerical average value in a dataset, ignoring text.",
  15510. "a": "Numerical average value in a dataset, ignoring text.",
  15511. "p": [
  15512. {
  15513. "name": "value1",
  15514. "detail": "The first value or range to consider when calculating the average value."
  15515. },
  15516. {
  15517. "name": "value2",
  15518. "detail": "Additional values or ranges to consider when calculating the average value."
  15519. }
  15520. ]
  15521. },
  15522. "AVERAGEA": {
  15523. "d": "Returns the numerical average value in a dataset.",
  15524. "a": "Numerical average value in a dataset.",
  15525. "p": [
  15526. {
  15527. "name": "value1",
  15528. "detail": "The first value or range to consider when calculating the average value."
  15529. },
  15530. {
  15531. "name": "value2",
  15532. "detail": "Additional values or ranges to consider when calculating the average value."
  15533. }
  15534. ]
  15535. },
  15536. "BINOM_DIST": {
  15537. "d": "Calculates the probability of drawing a certain number of successes (or a maximum number of successes) in a certain number of tries given a population of a certain size containing a certain number of successes, with replacement of draws.",
  15538. "a": "Binomial distribution probability.",
  15539. "p": [
  15540. {
  15541. "name": "num_successes",
  15542. "detail": "The number of successes for which to calculate the probability in `num_trials` trials."
  15543. },
  15544. {
  15545. "name": "num_trials",
  15546. "detail": "The number of independent trials."
  15547. },
  15548. {
  15549. "name": "prob_success",
  15550. "detail": "The probability of success in any given trial."
  15551. },
  15552. {
  15553. "name": "cumulative",
  15554. "detail": "Whether to use the binomial cumulative distribution."
  15555. }
  15556. ]
  15557. },
  15558. "BINOM_INV": {
  15559. "d": "Calculates the smallest value for which the cumulative binomial distribution is greater than or equal to a specified criteria.",
  15560. "a": "Inverse cumulative binomial distribution function.",
  15561. "p": [
  15562. {
  15563. "name": "num_trials",
  15564. "detail": "The number of independent trials."
  15565. },
  15566. {
  15567. "name": "prob_success",
  15568. "detail": "The probability of success in any given trial."
  15569. },
  15570. {
  15571. "name": "target_prob",
  15572. "detail": "The desired threshold probability."
  15573. }
  15574. ]
  15575. },
  15576. "CONFIDENCE_NORM": {
  15577. "d": "Calculates the width of half the confidence interval for a normal distribution.",
  15578. "a": "Confidence interval for a normal distribution.",
  15579. "p": [
  15580. {
  15581. "name": "alpha",
  15582. "detail": "One minus the desired confidence level. E.g. `0.1` for `0.9`, or 90%, confidence."
  15583. },
  15584. {
  15585. "name": "standard_deviation",
  15586. "detail": "The standard deviation of the population."
  15587. },
  15588. {
  15589. "name": "pop_size",
  15590. "detail": "The size of the population."
  15591. }
  15592. ]
  15593. },
  15594. "CORREL": {
  15595. "d": "Calculates r, the Pearson product-moment correlation coefficient of a dataset.",
  15596. "a": "Pearson Product-Moment Correlation Coefficient.",
  15597. "p": [
  15598. {
  15599. "name": "data_y",
  15600. "detail": "The range representing the array or matrix of dependent data."
  15601. },
  15602. {
  15603. "name": "data_x",
  15604. "detail": "The range representing the array or matrix of independent data."
  15605. }
  15606. ]
  15607. },
  15608. "COVARIANCE_P": {
  15609. "d": "Calculates the covariance of a dataset.",
  15610. "a": "The covariance of a dataset.",
  15611. "p": [
  15612. {
  15613. "name": "data_y",
  15614. "detail": "The range representing the array or matrix of dependent data."
  15615. },
  15616. {
  15617. "name": "data_x",
  15618. "detail": "The range representing the array or matrix of independent data."
  15619. }
  15620. ]
  15621. },
  15622. "COVARIANCE_S": {
  15623. "d": "Calculates the sample covariance of a dataset.",
  15624. "a": "The sample covariance of a dataset.",
  15625. "p": [
  15626. {
  15627. "name": "data_y",
  15628. "detail": "The range representing the array or matrix of dependent data."
  15629. },
  15630. {
  15631. "name": "data_x",
  15632. "detail": "The range representing the array or matrix of independent data."
  15633. }
  15634. ]
  15635. },
  15636. "DEVSQ": {
  15637. "d": "Calculates the sum of squares of deviations based on a sample.",
  15638. "a": "The sum of squares of deviations based on a sample.",
  15639. "p": [
  15640. {
  15641. "name": "value1",
  15642. "detail": "The first value or range of the sample."
  15643. },
  15644. {
  15645. "name": "value2",
  15646. "detail": "Additional values or ranges to include in the sample."
  15647. }
  15648. ]
  15649. },
  15650. "EXPON_DIST": {
  15651. "d": "Returns the value of the exponential distribution function with a specified lambda at a specified value.",
  15652. "a": "Exponential distribution function.",
  15653. "p": [
  15654. {
  15655. "name": "x",
  15656. "detail": "The input to the exponential distribution function."
  15657. },
  15658. {
  15659. "name": "lambda",
  15660. "detail": "The lambda to specify the exponential distribution function."
  15661. },
  15662. {
  15663. "name": "cumulative",
  15664. "detail": "Whether to use the exponential cumulative distribution."
  15665. }
  15666. ]
  15667. },
  15668. "AVERAGEIF": {
  15669. "d": "Returns the average of a range depending on criteria.",
  15670. "a": "Average of values depending on criteria.",
  15671. "p": [
  15672. {
  15673. "name": "criteria_range",
  15674. "detail": "The range to check against `criterion`."
  15675. },
  15676. {
  15677. "name": "criterion",
  15678. "detail": "The pattern or test to apply to `criteria_range`."
  15679. },
  15680. {
  15681. "name": "average_range",
  15682. "detail": "The range to average. If not included, `criteria_range` is used for the average instead."
  15683. }
  15684. ]
  15685. },
  15686. "AVERAGEIFS": {
  15687. "d": "Returns the average of a range depending on multiple criteria.",
  15688. "a": "Average of values depending on multiple criteria.",
  15689. "p": [
  15690. {
  15691. "name": "average_range",
  15692. "detail": "The range to average."
  15693. },
  15694. {
  15695. "name": "criteria_range1",
  15696. "detail": "The range to check against `criterion1`."
  15697. },
  15698. {
  15699. "name": "criterion1",
  15700. "detail": "The pattern or test to apply to `criteria_range1`."
  15701. },
  15702. {
  15703. "name": "criteria_range2",
  15704. "detail": "Additional ranges to check."
  15705. }
  15706. ]
  15707. },
  15708. "PERMUT": {
  15709. "d": "Returns the number of ways to choose some number of objects from a pool of a given size of objects, considering order.",
  15710. "a": "Number of permutations from a number of objects.",
  15711. "p": [
  15712. {
  15713. "name": "n",
  15714. "detail": "The size of the pool of objects to choose from."
  15715. },
  15716. {
  15717. "name": "k",
  15718. "detail": "The number of objects to choose."
  15719. }
  15720. ]
  15721. },
  15722. "TRIMMEAN": {
  15723. "d": "Calculates the mean of a dataset excluding some proportion of data from the high and low ends of the dataset.",
  15724. "a": "Mean of a dataset excluding high/low ends.",
  15725. "p": [
  15726. {
  15727. "name": "data",
  15728. "detail": "Array or range containing the dataset to consider."
  15729. },
  15730. {
  15731. "name": "exclude_proportion",
  15732. "detail": "The proportion of the dataset to exclude, from the extremities of the set."
  15733. }
  15734. ]
  15735. },
  15736. "PERCENTILE_EXC": {
  15737. "d": "Returns the value at a given percentile of a dataset exclusive of 0 and 1.",
  15738. "a": "Value at a given percentile of a dataset exclusive of 0 and 1.",
  15739. "p": [
  15740. {
  15741. "name": "data",
  15742. "detail": "The array or range containing the dataset to consider."
  15743. },
  15744. {
  15745. "name": "percentile",
  15746. "detail": "The percentile, exclusive of 0 and 1, whose value within 'data' will be calculated and returned."
  15747. }
  15748. ]
  15749. },
  15750. "PERCENTILE_INC": {
  15751. "d": "Returns the value at a given percentile of a dataset.",
  15752. "a": "Value at a given percentile of a dataset.",
  15753. "p": [
  15754. {
  15755. "name": "data",
  15756. "detail": "The array or range containing the dataset to consider."
  15757. },
  15758. {
  15759. "name": "percentile",
  15760. "detail": "The percentile whose value within `data` will be calculated and returned.`"
  15761. }
  15762. ]
  15763. },
  15764. "PEARSON": {
  15765. "d": "Calculates r, the Pearson product-moment correlation coefficient of a dataset.",
  15766. "a": "Pearson Product-Moment Correlation Coefficient.",
  15767. "p": [
  15768. {
  15769. "name": "data_y",
  15770. "detail": "The range representing the array or matrix of dependent data."
  15771. },
  15772. {
  15773. "name": "data_x",
  15774. "detail": "The range representing the array or matrix of independent data."
  15775. }
  15776. ]
  15777. },
  15778. "NORM_S_INV": {
  15779. "d": "Returns the value of the inverse standard normal distribution function for a specified value.",
  15780. "a": "Inverse standard normal distribution function.",
  15781. "p": [
  15782. {
  15783. "name": "x",
  15784. "detail": "The input to the inverse standard normal distribution function."
  15785. }
  15786. ]
  15787. },
  15788. "NORM_S_DIST": {
  15789. "d": "Returns the value of the standard normal cumulative distribution function for a specified value.",
  15790. "a": "Standard normal cumulative distribution function.",
  15791. "p": [
  15792. {
  15793. "name": "x",
  15794. "detail": "The input to the standard normal cumulative distribution function."
  15795. },
  15796. {
  15797. "name": "cumulative",
  15798. "detail": "Determine the logical value of the function form. \n\nIf TRUE(), it returns the cumulative distribution function;\n\nIf it is FALSE(), it returns the probability density function."
  15799. }
  15800. ]
  15801. },
  15802. "NORM_INV": {
  15803. "d": "Returns the value of the inverse normal distribution function for a specified value, mean, and standard deviation.",
  15804. "a": "Inverse normal distribution function.",
  15805. "p": [
  15806. {
  15807. "name": "x",
  15808. "detail": "The input to the inverse normal distribution function."
  15809. },
  15810. {
  15811. "name": "mean",
  15812. "detail": "The mean (mu) of the normal distribution function."
  15813. },
  15814. {
  15815. "name": "standard_deviation",
  15816. "detail": "The standard deviation (sigma) of the normal distribution function."
  15817. }
  15818. ]
  15819. },
  15820. "NORM_DIST": {
  15821. "d": "Returns the value of the normal distribution function (or normal cumulative distribution function) for a specified value, mean, and standard deviation.",
  15822. "a": "Normal distribution function.",
  15823. "p": [
  15824. {
  15825. "name": "x",
  15826. "detail": "The input to the normal distribution function."
  15827. },
  15828. {
  15829. "name": "mean",
  15830. "detail": "The mean (mu) of the normal distribution function."
  15831. },
  15832. {
  15833. "name": "standard_deviation",
  15834. "detail": "The standard deviation (sigma) of the normal distribution function."
  15835. },
  15836. {
  15837. "name": "cumulative",
  15838. "detail": "Whether to use the normal cumulative distribution function rather than the distribution function."
  15839. }
  15840. ]
  15841. },
  15842. "NEGBINOM_DIST": {
  15843. "d": "Calculates the probability of drawing a certain number of failures before a certain number of successes given a probability of success in independent trials.",
  15844. "a": "Negative binomial distribution probability.",
  15845. "p": [
  15846. {
  15847. "name": "num_failures",
  15848. "detail": "The number of failures to model."
  15849. },
  15850. {
  15851. "name": "num_successes",
  15852. "detail": "The number of successes to model."
  15853. },
  15854. {
  15855. "name": "prob_success",
  15856. "detail": "The probability of success in any given trial."
  15857. },
  15858. {
  15859. "name": "cumulative",
  15860. "detail": "Determine the logical value of the function form. \n\nIf TRUE(), it returns the cumulative distribution function;\n\nIf it is FALSE(), it returns the probability density function."
  15861. }
  15862. ]
  15863. },
  15864. "MINA": {
  15865. "d": "Returns the minimum numeric value in a dataset.",
  15866. "a": "Minimum numeric value in a dataset.",
  15867. "p": [
  15868. {
  15869. "name": "value1",
  15870. "detail": "The first value or range to consider when calculating the minimum value."
  15871. },
  15872. {
  15873. "name": "value2",
  15874. "detail": "Additional values or ranges to consider when calculating the minimum value."
  15875. }
  15876. ]
  15877. },
  15878. "MIN": {
  15879. "d": "Returns the minimum value in a numeric dataset.",
  15880. "a": "Minimum value in a numeric dataset.",
  15881. "p": [
  15882. {
  15883. "name": "value1",
  15884. "detail": "The first value or range to consider when calculating the minimum value."
  15885. },
  15886. {
  15887. "name": "value2",
  15888. "detail": "Additional values or ranges to consider when calculating the minimum value."
  15889. }
  15890. ]
  15891. },
  15892. "MEDIAN": {
  15893. "d": "Returns the median value in a numeric dataset.",
  15894. "a": "Median value in a numeric dataset.",
  15895. "p": [
  15896. {
  15897. "name": "value1",
  15898. "detail": "The first value or range to consider when calculating the median value."
  15899. },
  15900. {
  15901. "name": "value2",
  15902. "detail": "Additional values or ranges to consider when calculating the median value."
  15903. }
  15904. ]
  15905. },
  15906. "MAXA": {
  15907. "d": "Returns the maximum numeric value in a dataset.",
  15908. "a": "Maximum numeric value in a dataset.",
  15909. "p": [
  15910. {
  15911. "name": "value1",
  15912. "detail": "The first value or range to consider when calculating the maximum value."
  15913. },
  15914. {
  15915. "name": "value2",
  15916. "detail": "Additional values or ranges to consider when calculating the maximum value."
  15917. }
  15918. ]
  15919. },
  15920. "MAX": {
  15921. "d": "Returns the maximum value in a numeric dataset.",
  15922. "a": "Maximum value in a numeric dataset.",
  15923. "p": [
  15924. {
  15925. "name": "value1",
  15926. "detail": "The first value or range to consider when calculating the maximum value."
  15927. },
  15928. {
  15929. "name": "value2",
  15930. "detail": "Additional values or ranges to consider when calculating the maximum value."
  15931. }
  15932. ]
  15933. },
  15934. "LOGNORM_INV": {
  15935. "d": "Returns the value of the inverse log-normal cumulative distribution with given mean and standard deviation at a specified value.",
  15936. "a": "Inverse log-normal cumulative distribution function.",
  15937. "p": [
  15938. {
  15939. "name": "x",
  15940. "detail": "The input to the inverse log-normal cumulative distribution function."
  15941. },
  15942. {
  15943. "name": "mean",
  15944. "detail": "The mean (mu) of the inverse log-normal cumulative distribution function."
  15945. },
  15946. {
  15947. "name": "standard_deviation",
  15948. "detail": "The standard deviation (sigma) of the inverse log-normal cumulative distribution function."
  15949. }
  15950. ]
  15951. },
  15952. "LOGNORM_DIST": {
  15953. "d": "Returns the value of the log-normal cumulative distribution with given mean and standard deviation at a specified value.",
  15954. "a": "Log-normal cumulative distribution probability.",
  15955. "p": [
  15956. {
  15957. "name": "x",
  15958. "detail": "The input to the log-normal cumulative distribution function."
  15959. },
  15960. {
  15961. "name": "mean",
  15962. "detail": "The mean (mu) of the log-normal cumulative distribution function."
  15963. },
  15964. {
  15965. "name": "standard_deviation",
  15966. "detail": "The standard deviation (sigma) of the log-normal cumulative distribution function."
  15967. },
  15968. {
  15969. "name": "cumulative",
  15970. "detail": "Determine the logical value of the function form. \n\nIf TRUE(), it returns the cumulative distribution function;\n\nIf it is FALSE(), it returns the probability density function."
  15971. }
  15972. ]
  15973. },
  15974. "Z_TEST": {
  15975. "d": "Returns the one-tailed p-value of a Z-test with standard distribution.",
  15976. "a": "One-tailed p-value of a z-test.",
  15977. "p": [
  15978. {
  15979. "name": "data",
  15980. "detail": "The array or range containing the dataset to consider."
  15981. },
  15982. {
  15983. "name": "value",
  15984. "detail": "The test statistic to use in the Z-test."
  15985. },
  15986. {
  15987. "name": "standard_deviation",
  15988. "detail": "The standard deviation to assume for the Z-test. If this is not provided, the standard deviation of the data will be used."
  15989. }
  15990. ]
  15991. },
  15992. "PROB": {
  15993. "d": "Given a set of values and corresponding probabilities, calculates the probability that a value chosen at random falls between two limits.",
  15994. "a": "Probability values lie in a range.",
  15995. "p": [
  15996. {
  15997. "name": "data",
  15998. "detail": "Array or range containing the dataset to consider."
  15999. },
  16000. {
  16001. "name": "probabilities",
  16002. "detail": "Array or range containing probabilities corresponding to `data`."
  16003. },
  16004. {
  16005. "name": "low_limit",
  16006. "detail": "The lower bound on the value range for which to calculate the probability."
  16007. },
  16008. {
  16009. "name": "high_limit",
  16010. "detail": "The upper bound on the value range for which to calculate the probability."
  16011. }
  16012. ]
  16013. },
  16014. "QUARTILE_EXC": {
  16015. "d": "Returns a value nearest to a specified quartile of a dataset exclusive of 0 and 4.",
  16016. "a": "Value nearest to a specific quartile of a dataset exclusive of 0 and 4.",
  16017. "p": [
  16018. {
  16019. "name": "data",
  16020. "detail": "The array or range containing the dataset to consider."
  16021. },
  16022. {
  16023. "name": "quartile_number",
  16024. "detail": "Which quartile to return."
  16025. }
  16026. ]
  16027. },
  16028. "QUARTILE_INC": {
  16029. "d": "Returns a value nearest to a specified quartile of a dataset.",
  16030. "a": "Value nearest to a specific quartile of a dataset.",
  16031. "p": [
  16032. {
  16033. "name": "data",
  16034. "detail": "The array or range containing the dataset to consider."
  16035. },
  16036. {
  16037. "name": "quartile_number",
  16038. "detail": "Which quartile value to return."
  16039. }
  16040. ]
  16041. },
  16042. "POISSON_DIST": {
  16043. "d": "Returns the value of the Poisson distribution function (or Poisson cumulative distribution function) for a specified value and mean.",
  16044. "a": "Poisson distribution function.",
  16045. "p": [
  16046. {
  16047. "name": "x",
  16048. "detail": "The input to the Poisson distribution function."
  16049. },
  16050. {
  16051. "name": "mean",
  16052. "detail": "The mean (mu) of the Poisson distribution function."
  16053. },
  16054. {
  16055. "name": "cumulative",
  16056. "detail": "Whether to use the Poisson cumulative distribution function rather than the distribution function."
  16057. }
  16058. ]
  16059. },
  16060. "RSQ": {
  16061. "d": "Calculates the square of r, the Pearson product-moment correlation coefficient of a dataset.",
  16062. "a": "Square of the correlation coefficient.",
  16063. "p": [
  16064. {
  16065. "name": "data_y",
  16066. "detail": "The range representing the array or matrix of dependent data."
  16067. },
  16068. {
  16069. "name": "data_x",
  16070. "detail": "The range representing the array or matrix of independent data."
  16071. }
  16072. ]
  16073. },
  16074. "T_DIST": {
  16075. "d": "Calculates the left tail probability for a Student's t-distribution with a given input (x).",
  16076. "a": "The left-tailed Student's t-distribution",
  16077. "p": [
  16078. {
  16079. "name": "x",
  16080. "detail": "The input to the t-distribution function."
  16081. },
  16082. {
  16083. "name": "degrees_freedom",
  16084. "detail": "The number of degrees of freedom."
  16085. },
  16086. {
  16087. "name": "cumulative",
  16088. "detail": "If cumulative is TRUE, T.DIST returns the cumulative distribution function; if FALSE, it returns the probability density function."
  16089. }
  16090. ]
  16091. },
  16092. "T_DIST_2T": {
  16093. "d": "Calculates the probability for two tailed Student's t-distribution with a given input (x).",
  16094. "a": "The two tailed Student's t-distribution",
  16095. "p": [
  16096. {
  16097. "name": "x",
  16098. "detail": "The input to the t-distribution function."
  16099. },
  16100. {
  16101. "name": "degrees_freedom",
  16102. "detail": "The number of degrees of freedom."
  16103. }
  16104. ]
  16105. },
  16106. "T_DIST_RT": {
  16107. "d": "Calculates the right tail probability for a Student's t-distribution with a given input (x).",
  16108. "a": "The right-tailed Student's t-distribution",
  16109. "p": [
  16110. {
  16111. "name": "x",
  16112. "detail": "The input to the t-distribution function."
  16113. },
  16114. {
  16115. "name": "degrees_freedom",
  16116. "detail": "The number of degrees of freedom."
  16117. }
  16118. ]
  16119. },
  16120. "T_INV": {
  16121. "d": "Calculates the negative inverse of the one-tailed TDIST function.",
  16122. "a": "T.INV",
  16123. "p": [
  16124. {
  16125. "name": "probability",
  16126. "detail": "The probability associated with the two-tailed t-distribution."
  16127. },
  16128. {
  16129. "name": "degrees_freedom",
  16130. "detail": "The number of degrees of freedom."
  16131. }
  16132. ]
  16133. },
  16134. "T_INV_2T": {
  16135. "d": "Calculates the inverse of the two-tailed TDIST function.",
  16136. "a": "T.INV.2T",
  16137. "p": [
  16138. {
  16139. "name": "probability",
  16140. "detail": "The probability associated with the two-tailed t-distribution."
  16141. },
  16142. {
  16143. "name": "degrees_freedom",
  16144. "detail": "The number of degrees of freedom."
  16145. }
  16146. ]
  16147. },
  16148. "T_TEST": {
  16149. "d": "t-test. Returns the probability associated with Student's t-test. Determines whether two samples are likely to have come from the same two underlying populations that have the same mean.",
  16150. "a": "Returns the probability associated with t-test.",
  16151. "p": [
  16152. {
  16153. "name": "range1",
  16154. "detail": "The first sample of data or group of cells to consider for the t-test."
  16155. },
  16156. {
  16157. "name": "range2",
  16158. "detail": "The second sample of data or group of cells to consider for the t-test."
  16159. },
  16160. {
  16161. "name": "tails",
  16162. "detail": "Specifies the number of distribution tails."
  16163. },
  16164. {
  16165. "name": "type",
  16166. "detail": "Specifies the type of t-test."
  16167. }
  16168. ]
  16169. },
  16170. "F_DIST": {
  16171. "d": "Calculates the left-tailed F probability distribution (degree of diversity) for two data sets with given input x. Alternately called Fisher-Snedecor distribution or Snedecor's F distribution.",
  16172. "a": "F probability distribution (left-tailed).",
  16173. "p": [
  16174. {
  16175. "name": "x",
  16176. "detail": "The input to the F probability distribution function. The value at which to evaluate the function."
  16177. },
  16178. {
  16179. "name": "degrees_freedom1",
  16180. "detail": "The numerator of the number of degrees of freedom."
  16181. },
  16182. {
  16183. "name": "degrees_freedom2",
  16184. "detail": "The denominator of the number of degrees of freedom."
  16185. },
  16186. {
  16187. "name": "cumulative",
  16188. "detail": "Logical value that determines the form of the function."
  16189. }
  16190. ]
  16191. },
  16192. "F_DIST_RT": {
  16193. "d": "Calculates the right-tailed F probability distribution (degree of diversity) for two data sets with given input x. Alternately called Fisher-Snedecor distribution or Snedecor's F distribution.",
  16194. "a": "F probability distribution.",
  16195. "p": [
  16196. {
  16197. "name": "x",
  16198. "detail": "The input to the F probability distribution function. The value at which to evaluate the function."
  16199. },
  16200. {
  16201. "name": "degrees_freedom1",
  16202. "detail": "The numerator of the number of degrees of freedom."
  16203. },
  16204. {
  16205. "name": "degrees_freedom2",
  16206. "detail": "The denominator of the number of degrees of freedom."
  16207. }
  16208. ]
  16209. },
  16210. "VAR_P": {
  16211. "d": "Calculates the variance based on an entire population.",
  16212. "a": "Variance of entire population.",
  16213. "p": [
  16214. {
  16215. "name": "value1",
  16216. "detail": "The first value or range of the population."
  16217. },
  16218. {
  16219. "name": "value2",
  16220. "detail": "Additional values or ranges to include in the population."
  16221. }
  16222. ]
  16223. },
  16224. "VAR_S": {
  16225. "d": "Calculates the variance based on a sample.",
  16226. "a": "Variance.",
  16227. "p": [
  16228. {
  16229. "name": "value1",
  16230. "detail": "The first value or range of the sample."
  16231. },
  16232. {
  16233. "name": "value2",
  16234. "detail": "Additional values or ranges to include in the sample."
  16235. }
  16236. ]
  16237. },
  16238. "VARA": {
  16239. "d": "Calculates the variance based on a sample, setting text to the value `0`.",
  16240. "a": "Variance of sample (text as 0).",
  16241. "p": [
  16242. {
  16243. "name": "value1",
  16244. "detail": "The first value or range of the sample."
  16245. },
  16246. {
  16247. "name": "value2",
  16248. "detail": "Additional values or ranges to include in the sample."
  16249. }
  16250. ]
  16251. },
  16252. "VARPA": {
  16253. "d": "Calculates the variance based on an entire population, setting text to the value `0`.",
  16254. "a": "Variance of entire population (text as 0).",
  16255. "p": [
  16256. {
  16257. "name": "value1",
  16258. "detail": "The first value or range of the population."
  16259. },
  16260. {
  16261. "name": "value2",
  16262. "detail": "Additional values or ranges to include in the population."
  16263. }
  16264. ]
  16265. },
  16266. "STEYX": {
  16267. "d": "Calculates the standard error of the predicted y-value for each x in the regression of a dataset.",
  16268. "a": "Standard error of predicted y-values in regression.",
  16269. "p": [
  16270. {
  16271. "name": "data_y",
  16272. "detail": "The range representing the array or matrix of dependent data."
  16273. },
  16274. {
  16275. "name": "data_x",
  16276. "detail": "The range representing the array or matrix of independent data."
  16277. }
  16278. ]
  16279. },
  16280. "STANDARDIZE": {
  16281. "d": "Calculates the normalized equivalent of a random variable given mean and standard deviation of the distribution.",
  16282. "a": "Normalized equivalent of a random variable.",
  16283. "p": [
  16284. {
  16285. "name": "value",
  16286. "detail": "The value of the random variable to normalize."
  16287. },
  16288. {
  16289. "name": "mean",
  16290. "detail": "The mean of the distribution."
  16291. },
  16292. {
  16293. "name": "standard_deviation",
  16294. "detail": "The standard deviation of the distribution."
  16295. }
  16296. ]
  16297. },
  16298. "SMALL": {
  16299. "d": "Returns the nth smallest element from a data set, where n is user-defined.",
  16300. "a": "Nth smallest element in a data set.",
  16301. "p": [
  16302. {
  16303. "name": "data",
  16304. "detail": "The array or range containing the dataset to consider."
  16305. },
  16306. {
  16307. "name": "n",
  16308. "detail": "The rank from smallest to largest of the element to return."
  16309. }
  16310. ]
  16311. },
  16312. "SLOPE": {
  16313. "d": "Calculates the slope of the line resulting from linear regression of a dataset.",
  16314. "a": "Slope of line from linear regression of data.",
  16315. "p": [
  16316. {
  16317. "name": "data_y",
  16318. "detail": "The range representing the array or matrix of dependent data."
  16319. },
  16320. {
  16321. "name": "data_x",
  16322. "detail": "The range representing the array or matrix of independent data."
  16323. }
  16324. ]
  16325. },
  16326. "SKEW": {
  16327. "d": "Calculates the skewness of a dataset, which describes the symmetry of that dataset about the mean.",
  16328. "a": "Skewness of a dataset.",
  16329. "p": [
  16330. {
  16331. "name": "value1",
  16332. "detail": "The first value or range of the dataset."
  16333. },
  16334. {
  16335. "name": "value2",
  16336. "detail": "Additional values or ranges to include in the dataset."
  16337. }
  16338. ]
  16339. },
  16340. "SKEW_P": {
  16341. "d": "Calculates the skewness of a dataset, which describes the symmetry of that dataset about the mean. This assumes the dataset is for the population.",
  16342. "a": "Skewness of a population's dataset.",
  16343. "p": [
  16344. {
  16345. "name": "value1",
  16346. "detail": "The first value or range of the dataset."
  16347. },
  16348. {
  16349. "name": "value2",
  16350. "detail": "Additional values or ranges to include in the dataset."
  16351. }
  16352. ]
  16353. },
  16354. "VLOOKUP": {
  16355. "d": "Vertical lookup. Searches down the first column of a range for a key and returns the value of a specified cell in the row found.",
  16356. "a": "Vertical lookup.",
  16357. "p": [
  16358. {
  16359. "name": "search_key",
  16360. "detail": 'The value to search for. For example, `42`, `"Cats"`, or `I24`.'
  16361. },
  16362. {
  16363. "name": "range",
  16364. "detail": "The range to consider for the search. The first column in the range is searched for the key specified in `search_key`."
  16365. },
  16366. {
  16367. "name": "index",
  16368. "detail": "The column index of the value to be returned, where the first column in `range` is numbered 1."
  16369. },
  16370. {
  16371. "name": "is_sorted",
  16372. "detail": "Indicates whether the column to be searched (the first column of the specified range) is sorted, in which case the closest match for `search_key` will be returned."
  16373. }
  16374. ]
  16375. },
  16376. "HLOOKUP": {
  16377. "d": "Horizontal lookup. Searches across the first row of a range for a key and returns the value of a specified cell in the column found.",
  16378. "a": "Horizontal lookup",
  16379. "p": [
  16380. {
  16381. "name": "search_key",
  16382. "detail": 'The value to search for. For example, `42`, `"Cats"`, or `I24`.'
  16383. },
  16384. {
  16385. "name": "range",
  16386. "detail": "The range to consider for the search. The first row in the range is searched for the key specified in `search_key`."
  16387. },
  16388. {
  16389. "name": "index",
  16390. "detail": "The row index of the value to be returned, where the first row in `range` is numbered 1."
  16391. },
  16392. {
  16393. "name": "is_sorted",
  16394. "detail": "Indicates whether the row to be searched (the first row of the specified range) is sorted."
  16395. }
  16396. ]
  16397. },
  16398. "LOOKUP": {
  16399. "d": "Looks through a sorted row or column for a key and returns the value of the cell in a result range located in the same position as the search row or column.",
  16400. "a": "Look up a value.",
  16401. "p": [
  16402. {
  16403. "name": "search_key",
  16404. "detail": 'The value to search for in the row or column. For example, `42`, `"Cats"`, or `I24`.'
  16405. },
  16406. {
  16407. "name": "search_range|search_result_array",
  16408. "detail": "One method of using this function is to provide a single sorted row or column `search_range` to look through for the `search_key` with a second argument `result_range`. The other way is to combine these two arguments into one `search_result_array` where the first row or column is searched and a value is returned from the last row or column in the array. If `search_key` is not found, a non-exact match may be returned."
  16409. },
  16410. {
  16411. "name": "result_range",
  16412. "detail": "The range from which to return a result. The value returned corresponds to the location where `search_key` is found in `search_range`. This range must be only a single row or column and should not be used if using the `search_result_array` method."
  16413. }
  16414. ]
  16415. },
  16416. "ADDRESS": {
  16417. "d": "Returns a cell reference as a string.",
  16418. "a": "Cell reference as a string.",
  16419. "p": [
  16420. {
  16421. "name": "row",
  16422. "detail": "The row number of the cell reference"
  16423. },
  16424. {
  16425. "name": "column",
  16426. "detail": "The column number (not name) of the cell reference. `A` is column number `1`."
  16427. },
  16428. {
  16429. "name": "absolute_relative_mode",
  16430. "detail": "An indicator of whether the reference is row/column absolute. `1` is row and column absolute (e.g. $A$1), `2` is row absolute and column relative (e.g. A$1), `3` is row relative and column absolute (e.g. $A1), and `4` is row and column relative (e.g. A1)."
  16431. },
  16432. {
  16433. "name": "use_a1_notation",
  16434. "detail": "A boolean indicating whether to use `A1` style notation (TRUE) or `R1C1` style notation (FALSE)."
  16435. },
  16436. {
  16437. "name": "sheet",
  16438. "detail": "Text indicating the name of the sheet into which the address points."
  16439. }
  16440. ]
  16441. },
  16442. "INDIRECT": {
  16443. "d": "Returns a cell reference specified by a string.",
  16444. "a": "A cell reference specified by a string.",
  16445. "p": [
  16446. {
  16447. "name": "cell_reference_as_string",
  16448. "detail": "A cell reference, written as a string with surrounding quotation marks."
  16449. },
  16450. {
  16451. "name": "is_A1_notation",
  16452. "detail": "Indicates if the cell reference is in A1 notation (TRUE) or R1C1 notation (FALSE)."
  16453. }
  16454. ]
  16455. },
  16456. "ROW": {
  16457. "d": "Returns the row number of a specified cell.",
  16458. "a": "Row number of a specified cell.",
  16459. "p": [
  16460. {
  16461. "name": "cell_reference",
  16462. "detail": "The cell whose row number will be returned."
  16463. }
  16464. ]
  16465. },
  16466. "ROWS": {
  16467. "d": "Returns the number of rows in a specified array or range.",
  16468. "a": "Number of rows in a specified array or range.",
  16469. "p": [
  16470. {
  16471. "name": "range",
  16472. "detail": "The range whose row count will be returned."
  16473. }
  16474. ]
  16475. },
  16476. "COLUMN": {
  16477. "d": "Returns the column number of a specified cell, with `A=1`.",
  16478. "a": "Column number of a specified cell.",
  16479. "p": [
  16480. {
  16481. "name": "cell_reference",
  16482. "detail": "The cell whose column number will be returned. Column `A` corresponds to `1`."
  16483. }
  16484. ]
  16485. },
  16486. "COLUMNS": {
  16487. "d": "Returns the number of columns in a specified array or range.",
  16488. "a": "Number of columns in a specified array or range.",
  16489. "p": [
  16490. {
  16491. "name": "range",
  16492. "detail": "The range whose column count will be returned."
  16493. }
  16494. ]
  16495. },
  16496. "OFFSET": {
  16497. "d": "Returns a range reference shifted a specified number of rows and columns from a starting cell reference.",
  16498. "a": "A range reference offset relative to a cell.",
  16499. "p": [
  16500. {
  16501. "name": "cell_reference",
  16502. "detail": "The starting point from which to count the offset rows and columns."
  16503. },
  16504. {
  16505. "name": "offset_rows",
  16506. "detail": "The number of rows to offset by."
  16507. },
  16508. {
  16509. "name": "offset_columns",
  16510. "detail": "The number of columns to offset by."
  16511. },
  16512. {
  16513. "name": "height",
  16514. "detail": "The height of the range to return starting at the offset target."
  16515. },
  16516. {
  16517. "name": "width",
  16518. "detail": "The width of the range to return starting at the offset target."
  16519. }
  16520. ]
  16521. },
  16522. "MATCH": {
  16523. "d": "Returns the relative position of an item in a range that matches a specified value.",
  16524. "a": "Position of item in range that matches value.",
  16525. "p": [
  16526. {
  16527. "name": "search_key",
  16528. "detail": 'The value to search for. For example, `42`, `"Cats"`, or `I24`.'
  16529. },
  16530. {
  16531. "name": "range",
  16532. "detail": "The one-dimensional array to be searched."
  16533. },
  16534. {
  16535. "name": "search_type",
  16536. "detail": "The search method. `1` (default) finds the largest value less than or equal to `search_key` when `range` is sorted in ascending order. `0` finds the exact value when `range` is unsorted. `-1` finds the smallest value greater than or equal to `search_key` when `range` is sorted in descending order."
  16537. }
  16538. ]
  16539. },
  16540. "INDEX": {
  16541. "d": "Returns the content of a cell, specified by row and column offset.",
  16542. "a": "Content of cell specified by row and column offset.",
  16543. "p": [
  16544. {
  16545. "name": "reference",
  16546. "detail": "The array of cells to be offset into."
  16547. },
  16548. {
  16549. "name": "row",
  16550. "detail": "The number of offset rows."
  16551. },
  16552. {
  16553. "name": "column",
  16554. "detail": "The number of offset columns."
  16555. }
  16556. ]
  16557. },
  16558. "GETPIVOTDATA": {
  16559. "d": "Extracts an aggregated value from a pivot table that corresponds to the specified row and column headings.",
  16560. "a": "Extracts an aggregated value from a pivot table that corresponds to the specified row and column headings.",
  16561. "p": [
  16562. {
  16563. "name": "value_name",
  16564. "detail": "The name of the value in the pivot table for which you want to get data."
  16565. },
  16566. {
  16567. "name": "any_pivot_table_cell",
  16568. "detail": "Any reference to a cell in the desired pivot table (top corner recommended)."
  16569. },
  16570. {
  16571. "name": "original_column",
  16572. "detail": "The name of the column in the original data set (not the pivot table)."
  16573. },
  16574. {
  16575. "name": "pivot_item",
  16576. "detail": "The name of the row or column shown in the pivot table corresponding to *original_column* that you want to retrieve."
  16577. }
  16578. ]
  16579. },
  16580. "CHOOSE": {
  16581. "d": "Returns an element from a list of choices based on index.",
  16582. "a": "An element from a list of choices based on index.",
  16583. "p": [
  16584. {
  16585. "name": "index",
  16586. "detail": "Which choice (of the up to 30 provided) to return."
  16587. },
  16588. {
  16589. "name": "choice1",
  16590. "detail": "A potential value to return. Required. May be a reference to a cell or an individual value."
  16591. },
  16592. {
  16593. "name": "choice2",
  16594. "detail": "Additional values among which to choose."
  16595. }
  16596. ]
  16597. },
  16598. "HYPERLINK": {
  16599. "d": "Creates a hyperlink inside a cell.",
  16600. "a": "Creates a hyperlink inside a cell.",
  16601. "p": [
  16602. {
  16603. "name": "url",
  16604. "detail": "The full URL of the link location enclosed in quotation marks, or a reference to a cell containing such a URL."
  16605. },
  16606. {
  16607. "name": "link_label",
  16608. "detail": "The text to display in the cell as the link, enclosed in quotation marks, or a reference to a cell containing such a label."
  16609. }
  16610. ]
  16611. },
  16612. "TIME": {
  16613. "d": "Converts a provided hour, minute, and second into a time.",
  16614. "a": "Converts hour/minute/second into a time.",
  16615. "p": [
  16616. {
  16617. "name": "hour",
  16618. "detail": "The hour component of the time."
  16619. },
  16620. {
  16621. "name": "minute",
  16622. "detail": "The minute component of the time."
  16623. },
  16624. {
  16625. "name": "second",
  16626. "detail": "The second component of the time."
  16627. }
  16628. ]
  16629. },
  16630. "TIMEVALUE": {
  16631. "d": "Returns the fraction of a 24-hour day the time represents.",
  16632. "a": "Converts a time string into its serial number representation.",
  16633. "p": [
  16634. {
  16635. "name": "time_string",
  16636. "detail": "The string that holds the time representation."
  16637. }
  16638. ]
  16639. },
  16640. "EOMONTH": {
  16641. "d": "Returns a date on the last day of a month that falls a specified number of months before or after another date.",
  16642. "a": "Last day of a month before or after a date.",
  16643. "p": [
  16644. {
  16645. "name": "start_date",
  16646. "detail": "The date from which to calculate the result."
  16647. },
  16648. {
  16649. "name": "months",
  16650. "detail": "The number of months before (negative) or after (positive) 'start_date' to consider."
  16651. }
  16652. ]
  16653. },
  16654. "EDATE": {
  16655. "d": "Returns a date a specified number of months before or after another date.",
  16656. "a": "Date a number of months before/after another date.",
  16657. "p": [
  16658. {
  16659. "name": "start_date",
  16660. "detail": "The date from which to calculate the result."
  16661. },
  16662. {
  16663. "name": "months",
  16664. "detail": "The number of months before (negative) or after (positive) 'start_date' to calculate."
  16665. }
  16666. ]
  16667. },
  16668. "SECOND": {
  16669. "d": "Returns the second component of a specific time, in numeric format.",
  16670. "a": "Second component of a specific time.",
  16671. "p": [
  16672. {
  16673. "name": "time",
  16674. "detail": "The time from which to calculate the second component"
  16675. }
  16676. ]
  16677. },
  16678. "MINUTE": {
  16679. "d": "Returns the minute component of a specific time, in numeric format.",
  16680. "a": "Minute component of a specific time.",
  16681. "p": [
  16682. {
  16683. "name": "time",
  16684. "detail": "The time from which to calculate the minute component."
  16685. }
  16686. ]
  16687. },
  16688. "HOUR": {
  16689. "d": "Returns the hour component of a specific time, in numeric format.",
  16690. "a": "Hour component of a specific time.",
  16691. "p": [
  16692. {
  16693. "name": "time",
  16694. "detail": "The time from which to calculate the hour component."
  16695. }
  16696. ]
  16697. },
  16698. "NOW": {
  16699. "d": "Returns the current date and time as a date value.",
  16700. "a": "Current date and time as a date value.",
  16701. "p": []
  16702. },
  16703. "NETWORKDAYS": {
  16704. "d": "Returns the number of net working days between two provided days.",
  16705. "a": "Net working days between two provided days.",
  16706. "p": [
  16707. {
  16708. "name": "start_date",
  16709. "detail": "The start date of the period from which to calculate the number of net working days."
  16710. },
  16711. {
  16712. "name": "end_date",
  16713. "detail": "The end date of the period from which to calculate the number of net working days."
  16714. },
  16715. {
  16716. "name": "holidays",
  16717. "detail": "A range or array constant containing the date serial numbers to consider holidays."
  16718. }
  16719. ]
  16720. },
  16721. "NETWORKDAYS_INTL": {
  16722. "d": "Returns the number of net working days between two provided days excluding specified weekend days and holidays.",
  16723. "a": "Net working days between two dates (specifying weekends).",
  16724. "p": [
  16725. {
  16726. "name": "start_date",
  16727. "detail": "The start date of the period from which to calculate the number of net working days."
  16728. },
  16729. {
  16730. "name": "end_date",
  16731. "detail": "The end date of the period from which to calculate the number of net working days."
  16732. },
  16733. {
  16734. "name": "weekend",
  16735. "detail": "A number or string representing which days of the week are considered weekends."
  16736. },
  16737. {
  16738. "name": "holidays",
  16739. "detail": "A range or array constant containing the dates to consider as holidays."
  16740. }
  16741. ]
  16742. },
  16743. "ISOWEEKNUM": {
  16744. "d": "Returns a number representing the ISO week of the year where the provided date falls.",
  16745. "a": "ISO week number of the year.",
  16746. "p": [
  16747. {
  16748. "name": "date",
  16749. "detail": "The date for which to determine the ISO week number. Must be a reference to a cell containing a date, a function returning a date type, or a number."
  16750. }
  16751. ]
  16752. },
  16753. "WEEKNUM": {
  16754. "d": "Returns a number representing the week of the year where the provided date falls.",
  16755. "a": "Week number of the year.",
  16756. "p": [
  16757. {
  16758. "name": "date",
  16759. "detail": "The date for which to determine the week number. Must be a reference to a cell containing a date, a function returning a date type, or a number."
  16760. },
  16761. {
  16762. "name": "type",
  16763. "detail": "A number representing the day that a week starts on. Sunday = 1."
  16764. }
  16765. ]
  16766. },
  16767. "WEEKDAY": {
  16768. "d": "Returns a number representing the day of the week of the date provided.",
  16769. "a": "Day of the week of the date provided (as number).",
  16770. "p": [
  16771. {
  16772. "name": "date",
  16773. "detail": "The date for which to determine the day of the week. Must be a reference to a cell containing a date, a function returning a date type, or a number."
  16774. },
  16775. {
  16776. "name": "type",
  16777. "detail": "A number indicating which numbering system to use to represent weekdays. By default, counts starting with Sunday = 1."
  16778. }
  16779. ]
  16780. },
  16781. "DAY": {
  16782. "d": "Returns the day of the month that a specific date falls on, in numeric format.",
  16783. "a": "Day of the month that a specific date falls on.",
  16784. "p": [
  16785. {
  16786. "name": "date",
  16787. "detail": "The date from which to extract the day."
  16788. }
  16789. ]
  16790. },
  16791. "DAYS": {
  16792. "d": "Returns the number of days between two dates.",
  16793. "a": "Number of days between two dates.",
  16794. "p": [
  16795. {
  16796. "name": "end_date",
  16797. "detail": "The end of the date range."
  16798. },
  16799. {
  16800. "name": "start_date",
  16801. "detail": "The start of the date range."
  16802. }
  16803. ]
  16804. },
  16805. "DAYS360": {
  16806. "d": "Returns the difference between two days based on the 360 day year used in some financial interest calculations.",
  16807. "a": "Days between two dates on a 360-day year.",
  16808. "p": [
  16809. {
  16810. "name": "start_date",
  16811. "detail": "The start date to consider in the calculation. Must be a reference to a cell containing a date, a function returning a date type, or a number."
  16812. },
  16813. {
  16814. "name": "end_date",
  16815. "detail": "The end date to consider in the calculation. Must be a reference to a cell containing a date, a function returning a date type, or a number."
  16816. },
  16817. {
  16818. "name": "method",
  16819. "detail": "An indicator of what day count method to use."
  16820. }
  16821. ]
  16822. },
  16823. "DATE": {
  16824. "d": "Converts a provided year, month, and day into a date.",
  16825. "a": "Converts year/month/day into a date.",
  16826. "p": [
  16827. {
  16828. "name": "year",
  16829. "detail": "The year component of the date."
  16830. },
  16831. {
  16832. "name": "month",
  16833. "detail": "The month component of the date."
  16834. },
  16835. {
  16836. "name": "day",
  16837. "detail": "The day component of the date."
  16838. }
  16839. ]
  16840. },
  16841. "DATEVALUE": {
  16842. "d": "Converts a provided date string in a known format to a date value.",
  16843. "a": "Converts a date string to a date value.",
  16844. "p": [
  16845. {
  16846. "name": "date_string",
  16847. "detail": "The string representing the date."
  16848. }
  16849. ]
  16850. },
  16851. "DATEDIF": {
  16852. "d": "Calculates the number of days, months, or years between two dates.",
  16853. "a": "Date Difference.",
  16854. "p": [
  16855. {
  16856. "name": "start_date",
  16857. "detail": "The start date to consider in the calculation. Must be a reference to a cell containing a date, a function returning a date type, or a number."
  16858. },
  16859. {
  16860. "name": "end_date",
  16861. "detail": "The end date to consider in the calculation. Must be a reference to a cell containing a date, a function returning a date type, or a number."
  16862. },
  16863. {
  16864. "name": "unit",
  16865. "detail": 'A string abbreviation for unit of time. For example, "M" for month. Accepted values are "Y","M","D","MD","YM","YD".'
  16866. }
  16867. ]
  16868. },
  16869. "WORKDAY": {
  16870. "d": "Calculates the date after a number of working days from a specified start date.",
  16871. "a": "Number of working days from start date.",
  16872. "p": [
  16873. {
  16874. "name": "start_date",
  16875. "detail": "The date from which to begin counting."
  16876. },
  16877. {
  16878. "name": "num_days",
  16879. "detail": "The number of working days to advance from `start_date`. If negative, counts backwards."
  16880. },
  16881. {
  16882. "name": "holidays",
  16883. "detail": "A range or array constant containing the dates to consider holidays."
  16884. }
  16885. ]
  16886. },
  16887. "WORKDAY_INTL": {
  16888. "d": "Calculates the date after a specified number of workdays excluding specified weekend days and holidays.",
  16889. "a": "Date after a number of workdays (specifying weekends).",
  16890. "p": [
  16891. {
  16892. "name": "start_date",
  16893. "detail": "The date from which to begin counting."
  16894. },
  16895. {
  16896. "name": "num_days",
  16897. "detail": "The number of working days to advance from `start_date`. If negative, counts backwards."
  16898. },
  16899. {
  16900. "name": "weekend",
  16901. "detail": "A number or string representing which days of the week are considered weekends."
  16902. },
  16903. {
  16904. "name": "holidays",
  16905. "detail": "A range or array constant containing the dates to consider holidays."
  16906. }
  16907. ]
  16908. },
  16909. "YEAR": {
  16910. "d": "Returns the year specified by a given date.",
  16911. "a": "Year specified by a given date.",
  16912. "p": [
  16913. {
  16914. "name": "date",
  16915. "detail": "The date from which to extract the year."
  16916. }
  16917. ]
  16918. },
  16919. "YEARFRAC": {
  16920. "d": "Returns the number of years, including fractional years, between two dates using a specified day count convention.",
  16921. "a": "Exact number of years between two dates.",
  16922. "p": [
  16923. {
  16924. "name": "start_date",
  16925. "detail": "The start date to consider in the calculation. Must be a reference to a cell containing a date, a function returning a date type, or a number."
  16926. },
  16927. {
  16928. "name": "end_date",
  16929. "detail": "The end date to consider in the calculation. Must be a reference to a cell containing a date, a function returning a date type, or a number."
  16930. },
  16931. {
  16932. "name": "day_count_convention",
  16933. "detail": "An indicator of what day count method to use."
  16934. }
  16935. ]
  16936. },
  16937. "TODAY": {
  16938. "d": "Returns the current date as a date value.",
  16939. "a": "Current date as a date value.",
  16940. "p": []
  16941. },
  16942. "MONTH": {
  16943. "d": "Returns the month of the year a specific date falls in, in numeric format.",
  16944. "a": "Month of the year a specific date falls in.",
  16945. "p": [
  16946. {
  16947. "name": "date",
  16948. "detail": "The date from which to extract the month."
  16949. }
  16950. ]
  16951. },
  16952. "EFFECT": {
  16953. "d": "Calculates the annual effective interest rate given the nominal rate and number of compounding periods per year.",
  16954. "a": "Annual effective interest rate.",
  16955. "p": [
  16956. {
  16957. "name": "nominal_rate",
  16958. "detail": "The nominal interest rate per year."
  16959. },
  16960. {
  16961. "name": "periods_per_year",
  16962. "detail": "The number of compounding periods per year."
  16963. }
  16964. ]
  16965. },
  16966. "DOLLAR": {
  16967. "d": "Formats a number into the currency specific to your spreadsheet locale.",
  16968. "a": "Formats a number as currency specific to your spreadsheet locale.",
  16969. "p": [
  16970. {
  16971. "name": "number",
  16972. "detail": "The value to be formatted."
  16973. },
  16974. {
  16975. "name": "number_of_places",
  16976. "detail": "The number of decimal places to display."
  16977. }
  16978. ]
  16979. },
  16980. "DOLLARDE": {
  16981. "d": "Converts a price quotation given as a decimal fraction into a decimal value.",
  16982. "a": "Converts a decimal fraction to decimal value.",
  16983. "p": [
  16984. {
  16985. "name": "fractional_price",
  16986. "detail": "The price quotation given using fractional decimal conventions."
  16987. },
  16988. {
  16989. "name": "unit",
  16990. "detail": "The units of the fraction, e.g. `8` for 1/8ths or `32` for 1/32nds."
  16991. }
  16992. ]
  16993. },
  16994. "DOLLARFR": {
  16995. "d": "Converts a price quotation given as a decimal value into a decimal fraction.",
  16996. "a": "Converts a decimal value to decimal fraction.",
  16997. "p": [
  16998. {
  16999. "name": "decimal_price",
  17000. "detail": "The price quotation given as a decimal value."
  17001. },
  17002. {
  17003. "name": "unit",
  17004. "detail": "The units of the desired fraction, e.g. `8` for 1/8ths or `32` for 1/32nds."
  17005. }
  17006. ]
  17007. },
  17008. "DB": {
  17009. "d": "Calculates the depreciation of an asset for a specified period using the arithmetic declining balance method.",
  17010. "a": "Depreciation via declining balance method.",
  17011. "p": [
  17012. {
  17013. "name": "cost",
  17014. "detail": "The initial cost of the asset."
  17015. },
  17016. {
  17017. "name": "salvage",
  17018. "detail": "The value of the asset at the end of depreciation."
  17019. },
  17020. {
  17021. "name": "life",
  17022. "detail": "The number of periods over which the asset is depreciated."
  17023. },
  17024. {
  17025. "name": "period",
  17026. "detail": "The single period within `life` for which to calculate depreciation."
  17027. },
  17028. {
  17029. "name": "month",
  17030. "detail": "The number of months in the first year of depreciation."
  17031. }
  17032. ]
  17033. },
  17034. "DDB": {
  17035. "d": "Calculates the depreciation of an asset for a specified period using the double-declining balance method.",
  17036. "a": "Depreciation via double-declining balance method.",
  17037. "p": [
  17038. {
  17039. "name": "cost",
  17040. "detail": "The initial cost of the asset."
  17041. },
  17042. {
  17043. "name": "salvage",
  17044. "detail": "The value of the asset at the end of depreciation."
  17045. },
  17046. {
  17047. "name": "life",
  17048. "detail": "The number of periods over which the asset is depreciated."
  17049. },
  17050. {
  17051. "name": "period",
  17052. "detail": "The single period within `life` for which to calculate depreciation."
  17053. },
  17054. {
  17055. "name": "factor",
  17056. "detail": "The factor by which depreciation decreases."
  17057. }
  17058. ]
  17059. },
  17060. "RATE": {
  17061. "d": "Calculates the interest rate of an annuity investment based on constant-amount periodic payments and the assumption of a constant interest rate.",
  17062. "a": "Interest rate of an annuity investment.",
  17063. "p": [
  17064. {
  17065. "name": "number_of_periods",
  17066. "detail": "The number of payments to be made."
  17067. },
  17068. {
  17069. "name": "payment_per_period",
  17070. "detail": "The amount per period to be paid."
  17071. },
  17072. {
  17073. "name": "present_value",
  17074. "detail": "The current value of the annuity."
  17075. },
  17076. {
  17077. "name": "future_value",
  17078. "detail": "The future value remaining after the final payment has been made."
  17079. },
  17080. {
  17081. "name": "end_or_beginning",
  17082. "detail": "Whether payments are due at the end (`0`) or beginning (`1`) of each period."
  17083. },
  17084. {
  17085. "name": "rate_guess",
  17086. "detail": "An estimate for what the interest rate will be."
  17087. }
  17088. ]
  17089. },
  17090. "CUMPRINC": {
  17091. "d": "Calculates the cumulative principal paid over a range of payment periods for an investment based on constant-amount periodic payments and a constant interest rate.",
  17092. "a": "Cumulative principal paid over a set of periods.",
  17093. "p": [
  17094. {
  17095. "name": "rate",
  17096. "detail": "The interest rate."
  17097. },
  17098. {
  17099. "name": "number_of_periods",
  17100. "detail": "The number of payments to be made."
  17101. },
  17102. {
  17103. "name": "present_value",
  17104. "detail": "The current value of the annuity."
  17105. },
  17106. {
  17107. "name": "first_period",
  17108. "detail": "The number of the payment period to begin the cumulative calculation."
  17109. },
  17110. {
  17111. "name": "last_period",
  17112. "detail": "The number of the payment period to end the cumulative calculation."
  17113. },
  17114. {
  17115. "name": "end_or_beginning",
  17116. "detail": "Whether payments are due at the end (`0`) or beginning (`1`) of each period."
  17117. }
  17118. ]
  17119. },
  17120. "COUPNUM": {
  17121. "d": "Calculates the number of coupons, or interest payments, between the settlement date and the maturity date of the investment.",
  17122. "a": "Number of coupons between settlement and maturity.",
  17123. "p": [
  17124. {
  17125. "name": "settlement",
  17126. "detail": "The settlement date of the security, the date after issuance when the security is delivered to the buyer."
  17127. },
  17128. {
  17129. "name": "maturity",
  17130. "detail": "The maturity or end date of the security, when it can be redeemed at face, or par value."
  17131. },
  17132. {
  17133. "name": "frequency",
  17134. "detail": "The number of interest or coupon payments per year (1, 2, or 4)."
  17135. },
  17136. {
  17137. "name": "day_count_convention",
  17138. "detail": "An indicator of what day count method to use."
  17139. }
  17140. ]
  17141. },
  17142. "SYD": {
  17143. "d": "Calculates the depreciation of an asset for a specified period using the sum of years digits method.",
  17144. "a": "Depreciation via sum of years digits method.",
  17145. "p": [
  17146. {
  17147. "name": "cost",
  17148. "detail": "The initial cost of the asset."
  17149. },
  17150. {
  17151. "name": "salvage",
  17152. "detail": "The value of the asset at the end of depreciation."
  17153. },
  17154. {
  17155. "name": "life",
  17156. "detail": "The number of periods over which the asset is depreciated."
  17157. },
  17158. {
  17159. "name": "period",
  17160. "detail": "The single period within `life` for which to calculate depreciation."
  17161. }
  17162. ]
  17163. },
  17164. "TBILLEQ": {
  17165. "d": "Calculates the equivalent annualized rate of return of a US Treasury Bill based on discount rate.",
  17166. "a": "Equivalent rate of return for a Treasury bill.",
  17167. "p": [
  17168. {
  17169. "name": "settlement",
  17170. "detail": "The settlement date of the security, the date after issuance when the security is delivered to the buyer."
  17171. },
  17172. {
  17173. "name": "maturity",
  17174. "detail": "The maturity or end date of the security, when it can be redeemed at face, or par value."
  17175. },
  17176. {
  17177. "name": "discount",
  17178. "detail": "The discount rate of the bill at time of purchase."
  17179. }
  17180. ]
  17181. },
  17182. "TBILLYIELD": {
  17183. "d": "Calculates the yield of a US Treasury Bill based on price.",
  17184. "a": "The yield of a us treasury bill based on price.",
  17185. "p": [
  17186. {
  17187. "name": "settlement",
  17188. "detail": "The settlement date of the security, the date after issuance when the security is delivered to the buyer."
  17189. },
  17190. {
  17191. "name": "maturity",
  17192. "detail": "The maturity or end date of the security, when it can be redeemed at face, or par value."
  17193. },
  17194. {
  17195. "name": "price",
  17196. "detail": "The price at which the security is bought per 100 face value."
  17197. }
  17198. ]
  17199. },
  17200. "TBILLPRICE": {
  17201. "d": "Calculates the price of a US Treasury Bill based on discount rate.",
  17202. "a": "Price of US treasury bill.",
  17203. "p": [
  17204. {
  17205. "name": "settlement",
  17206. "detail": "The settlement date of the security, the date after issuance when the security is delivered to the buyer."
  17207. },
  17208. {
  17209. "name": "maturity",
  17210. "detail": "The maturity or end date of the security, when it can be redeemed at face, or par value."
  17211. },
  17212. {
  17213. "name": "discount",
  17214. "detail": "The discount rate of the bill at time of purchase."
  17215. }
  17216. ]
  17217. },
  17218. "PV": {
  17219. "d": "Calculates the present value of an annuity investment based on constant-amount periodic payments and a constant interest rate.",
  17220. "a": "Present value of an annuity investment.",
  17221. "p": [
  17222. {
  17223. "name": "rate",
  17224. "detail": "The interest rate."
  17225. },
  17226. {
  17227. "name": "number_of_periods",
  17228. "detail": "The number of payments to be made."
  17229. },
  17230. {
  17231. "name": "payment_amount",
  17232. "detail": "The amount per period to be paid."
  17233. },
  17234. {
  17235. "name": "future_value",
  17236. "detail": "The future value remaining after the final payment has been made."
  17237. },
  17238. {
  17239. "name": "end_or_beginning",
  17240. "detail": "Whether payments are due at the end (`0`) or beginning (`1`) of each period."
  17241. }
  17242. ]
  17243. },
  17244. "ACCRINT": {
  17245. "d": "Calculates the accrued interest of a security that has periodic payments.",
  17246. "a": "Accrued interest of security with periodic payments.",
  17247. "p": [
  17248. {
  17249. "name": "issue",
  17250. "detail": "The date the security was initially issued."
  17251. },
  17252. {
  17253. "name": "first_payment",
  17254. "detail": "The first date interest will be paid."
  17255. },
  17256. {
  17257. "name": "settlement",
  17258. "detail": "The settlement date of the security, the date after issuance when the security is delivered to the buyer."
  17259. },
  17260. {
  17261. "name": "rate",
  17262. "detail": "The annualized rate of interest."
  17263. },
  17264. {
  17265. "name": "redemption",
  17266. "detail": "The redemption amount per 100 face value, or par."
  17267. },
  17268. {
  17269. "name": "frequency",
  17270. "detail": "The number of interest or coupon payments per year (1, 2, or 4)."
  17271. },
  17272. {
  17273. "name": "day_count_convention",
  17274. "detail": "An indicator of what day count method to use."
  17275. },
  17276. {
  17277. "name": "calc_method",
  17278. "detail": "[Optional-defaults to TRUE()] - A logical value that specifies the method used to calculate the total accrued interest when the settlement date is later than the first interest accrual date. \n\nIf the value is TRUE, the total accrued interest from the issue date to the settlement date is returned. \n\nIf the value is FALSE, return the accrued interest from the first interest accrual date to the settlement date."
  17279. }
  17280. ]
  17281. },
  17282. "ACCRINTM": {
  17283. "d": "Calculates the accrued interest of a security that pays interest at maturity.",
  17284. "a": "Accrued interest of security paying at maturity.",
  17285. "p": [
  17286. {
  17287. "name": "issue",
  17288. "detail": "The date the security was initially issued."
  17289. },
  17290. {
  17291. "name": "maturity",
  17292. "detail": "The maturity date of the security."
  17293. },
  17294. {
  17295. "name": "rate",
  17296. "detail": "The annualized rate of interest."
  17297. },
  17298. {
  17299. "name": "redemption",
  17300. "detail": "The redemption amount per 100 face value, or par."
  17301. },
  17302. {
  17303. "name": "day_count_convention",
  17304. "detail": "An indicator of what day count method to use."
  17305. }
  17306. ]
  17307. },
  17308. "COUPDAYBS": {
  17309. "d": "Calculates the number of days from the first coupon, or interest payment, until settlement.",
  17310. "a": "Number of days from first coupon to settlement.",
  17311. "p": [
  17312. {
  17313. "name": "settlement",
  17314. "detail": "The settlement date of the security, the date after issuance when the security is delivered to the buyer."
  17315. },
  17316. {
  17317. "name": "maturity",
  17318. "detail": "The maturity or end date of the security, when it can be redeemed at face, or par value."
  17319. },
  17320. {
  17321. "name": "frequency",
  17322. "detail": "The number of interest or coupon payments per year (1, 2, or 4)."
  17323. },
  17324. {
  17325. "name": "day_count_convention",
  17326. "detail": "An indicator of what day count method to use."
  17327. }
  17328. ]
  17329. },
  17330. "COUPDAYS": {
  17331. "d": "Calculates the number of days in the coupon, or interest payment, period that contains the specified settlement date.",
  17332. "a": "Days in coupon period containing settlement date.",
  17333. "p": [
  17334. {
  17335. "name": "settlement",
  17336. "detail": "The settlement date of the security, the date after issuance when the security is delivered to the buyer."
  17337. },
  17338. {
  17339. "name": "maturity",
  17340. "detail": "The maturity or end date of the security, when it can be redeemed at face, or par value."
  17341. },
  17342. {
  17343. "name": "frequency",
  17344. "detail": "The number of interest or coupon payments per year (1, 2, or 4)."
  17345. },
  17346. {
  17347. "name": "day_count_convention",
  17348. "detail": "An indicator of what day count method to use."
  17349. }
  17350. ]
  17351. },
  17352. "COUPDAYSNC": {
  17353. "d": "Calculates the number of days from the settlement date until the next coupon, or interest payment.",
  17354. "a": "Days from settlement until next coupon.",
  17355. "p": [
  17356. {
  17357. "name": "settlement",
  17358. "detail": "The settlement date of the security, the date after issuance when the security is delivered to the buyer."
  17359. },
  17360. {
  17361. "name": "maturity",
  17362. "detail": "The maturity or end date of the security, when it can be redeemed at face, or par value."
  17363. },
  17364. {
  17365. "name": "frequency",
  17366. "detail": "The number of interest or coupon payments per year (1, 2, or 4)."
  17367. },
  17368. {
  17369. "name": "day_count_convention",
  17370. "detail": "An indicator of what day count method to use."
  17371. }
  17372. ]
  17373. },
  17374. "COUPNCD": {
  17375. "d": "Calculates next coupon, or interest payment, date after the settlement date.",
  17376. "a": "Next coupon date after the settlement date.",
  17377. "p": [
  17378. {
  17379. "name": "settlement",
  17380. "detail": "The settlement date of the security, the date after issuance when the security is delivered to the buyer."
  17381. },
  17382. {
  17383. "name": "maturity",
  17384. "detail": "The maturity or end date of the security, when it can be redeemed at face, or par value."
  17385. },
  17386. {
  17387. "name": "frequency",
  17388. "detail": "The number of interest or coupon payments per year (1, 2, or 4)."
  17389. },
  17390. {
  17391. "name": "day_count_convention",
  17392. "detail": "An indicator of what day count method to use."
  17393. }
  17394. ]
  17395. },
  17396. "COUPPCD": {
  17397. "d": "Calculates last coupon, or interest payment, date before the settlement date.",
  17398. "a": "Last coupon date before settlement date.",
  17399. "p": [
  17400. {
  17401. "name": "settlement",
  17402. "detail": "The settlement date of the security, the date after issuance when the security is delivered to the buyer."
  17403. },
  17404. {
  17405. "name": "maturity",
  17406. "detail": "The maturity or end date of the security, when it can be redeemed at face, or par value."
  17407. },
  17408. {
  17409. "name": "frequency",
  17410. "detail": "The number of interest or coupon payments per year (1, 2, or 4)."
  17411. },
  17412. {
  17413. "name": "day_count_convention",
  17414. "detail": "An indicator of what day count method to use."
  17415. }
  17416. ]
  17417. },
  17418. "FV": {
  17419. "d": "Calculates the future value of an annuity investment based on constant-amount periodic payments and a constant interest rate.",
  17420. "a": "Future value of an annuity investment.",
  17421. "p": [
  17422. {
  17423. "name": "rate",
  17424. "detail": "The interest rate."
  17425. },
  17426. {
  17427. "name": "number_of_periods",
  17428. "detail": "The number of payments to be made."
  17429. },
  17430. {
  17431. "name": "payment_amount",
  17432. "detail": "The amount per period to be paid."
  17433. },
  17434. {
  17435. "name": "present_value",
  17436. "detail": "The current value of the annuity."
  17437. },
  17438. {
  17439. "name": "end_or_beginning",
  17440. "detail": "Whether payments are due at the end (`0`) or beginning (`1`) of each period."
  17441. }
  17442. ]
  17443. },
  17444. "FVSCHEDULE": {
  17445. "d": "Calculates the future value of some principal based on a specified series of potentially varying interest rates.",
  17446. "a": "Future value of principal from series of rates.",
  17447. "p": [
  17448. {
  17449. "name": "principal",
  17450. "detail": "The amount of initial capital or value to compound against."
  17451. },
  17452. {
  17453. "name": "rate_schedule",
  17454. "detail": "A series of interest rates to compound against the `principal`."
  17455. }
  17456. ]
  17457. },
  17458. "YIELD": {
  17459. "d": "Calculates the annual yield of a security paying periodic interest, such as a US Treasury Bond, based on price.",
  17460. "a": "Annual yield of a security paying periodic interest.",
  17461. "p": [
  17462. {
  17463. "name": "settlement",
  17464. "detail": "The settlement date of the security, the date after issuance when the security is delivered to the buyer."
  17465. },
  17466. {
  17467. "name": "maturity",
  17468. "detail": "The maturity or end date of the security, when it can be redeemed at face, or par value."
  17469. },
  17470. {
  17471. "name": "rate",
  17472. "detail": "The annualized rate of interest."
  17473. },
  17474. {
  17475. "name": "price",
  17476. "detail": "The price at which the security is bought per 100 face value."
  17477. },
  17478. {
  17479. "name": "redemption",
  17480. "detail": "The redemption amount per 100 face value, or par."
  17481. },
  17482. {
  17483. "name": "frequency",
  17484. "detail": "The number of interest or coupon payments per year (1, 2, or 4)."
  17485. },
  17486. {
  17487. "name": "day_count_convention",
  17488. "detail": "An indicator of what day count method to use."
  17489. }
  17490. ]
  17491. },
  17492. "YIELDDISC": {
  17493. "d": "Calculates the annual yield of a discount (non-interest-bearing) security, based on price.",
  17494. "a": "Annual yield of a discount security.",
  17495. "p": [
  17496. {
  17497. "name": "settlement",
  17498. "detail": "The settlement date of the security, the date after issuance when the security is delivered to the buyer."
  17499. },
  17500. {
  17501. "name": "maturity",
  17502. "detail": "The maturity or end date of the security, when it can be redeemed at face, or par value."
  17503. },
  17504. {
  17505. "name": "price",
  17506. "detail": "The price at which the security is bought per 100 face value."
  17507. },
  17508. {
  17509. "name": "redemption",
  17510. "detail": "The redemption amount per 100 face value, or par."
  17511. },
  17512. {
  17513. "name": "day_count_convention",
  17514. "detail": "An indicator of what day count method to use."
  17515. }
  17516. ]
  17517. },
  17518. "NOMINAL": {
  17519. "d": "Calculates the annual nominal interest rate given the effective rate and number of compounding periods per year.",
  17520. "a": "Annual nominal interest rate.",
  17521. "p": [
  17522. {
  17523. "name": "effective_rate",
  17524. "detail": "The effective interest rate per year."
  17525. },
  17526. {
  17527. "name": "periods_per_year",
  17528. "detail": "The number of compounding periods per year."
  17529. }
  17530. ]
  17531. },
  17532. "XIRR": {
  17533. "d": "Calculates the internal rate of return of an investment based on a specified series of potentially irregularly spaced cash flows.",
  17534. "a": "Internal rate of return given non-periodic cashflows.",
  17535. "p": [
  17536. {
  17537. "name": "cashflow_amounts",
  17538. "detail": "An array or range containing the income or payments associated with the investment."
  17539. },
  17540. {
  17541. "name": "cashflow_dates",
  17542. "detail": "An array or range with dates corresponding to the cash flows in `cashflow_amounts`."
  17543. },
  17544. {
  17545. "name": "rate_guess",
  17546. "detail": "An estimate for what the internal rate of return will be."
  17547. }
  17548. ]
  17549. },
  17550. "MIRR": {
  17551. "d": "Calculates the modified internal rate of return on an investment based on a series of periodic cash flows and the difference between the interest rate paid on financing versus the return received on reinvested income.",
  17552. "a": "Modified internal rate of return.",
  17553. "p": [
  17554. {
  17555. "name": "cashflow_amounts",
  17556. "detail": "An array or range containing the income or payments associated with the investment."
  17557. },
  17558. {
  17559. "name": "financing_rate",
  17560. "detail": "The interest rate paid on funds invested."
  17561. },
  17562. {
  17563. "name": "reinvestment_return_rate",
  17564. "detail": "The return (as a percentage) earned on reinvestment of income received from the investment."
  17565. }
  17566. ]
  17567. },
  17568. "IRR": {
  17569. "d": "Calculates the internal rate of return on an investment based on a series of periodic cash flows.",
  17570. "a": "Internal rate of return given periodic cashflows.",
  17571. "p": [
  17572. {
  17573. "name": "cashflow_amounts",
  17574. "detail": "An array or range containing the income or payments associated with the investment."
  17575. },
  17576. {
  17577. "name": "rate_guess",
  17578. "detail": "An estimate for what the internal rate of return will be."
  17579. }
  17580. ]
  17581. },
  17582. "NPV": {
  17583. "d": "Calculates the net present value of an investment based on a series of periodic cash flows and a discount rate.",
  17584. "a": "The net present value of an investment based on a series of periodic cash flows and a discount rate.",
  17585. "p": [
  17586. {
  17587. "name": "discount",
  17588. "detail": "The discount rate of the investment over one period."
  17589. },
  17590. {
  17591. "name": "cashflow1",
  17592. "detail": "The first future cash flow."
  17593. },
  17594. {
  17595. "name": "cashflow2",
  17596. "detail": "Additional future cash flows."
  17597. }
  17598. ]
  17599. },
  17600. "XNPV": {
  17601. "d": "Calculates the net present value of an investment based on a specified series of potentially irregularly spaced cash flows and a discount rate.",
  17602. "a": "Net present value given non-periodic cashflows.",
  17603. "p": [
  17604. {
  17605. "name": "discount",
  17606. "detail": "The discount rate of the investment over one period."
  17607. },
  17608. {
  17609. "name": "cashflow_amounts",
  17610. "detail": "A range of cells containing the income or payments associated with the investment."
  17611. },
  17612. {
  17613. "name": "cashflow_dates",
  17614. "detail": "A range of cells with dates corresponding to the cash flows in `cashflow_amounts`."
  17615. }
  17616. ]
  17617. },
  17618. "CUMIPMT": {
  17619. "d": "Calculates the cumulative interest over a range of payment periods for an investment based on constant-amount periodic payments and a constant interest rate.",
  17620. "a": "Cumulative interest paid over a set of periods.",
  17621. "p": [
  17622. {
  17623. "name": "rate",
  17624. "detail": "The interest rate."
  17625. },
  17626. {
  17627. "name": "number_of_periods",
  17628. "detail": "The number of payments to be made."
  17629. },
  17630. {
  17631. "name": "present_value",
  17632. "detail": "The current value of the annuity."
  17633. },
  17634. {
  17635. "name": "first_period",
  17636. "detail": "The number of the payment period to begin the cumulative calculation."
  17637. },
  17638. {
  17639. "name": "last_period",
  17640. "detail": "The number of the payment period to end the cumulative calculation."
  17641. },
  17642. {
  17643. "name": "end_or_beginning",
  17644. "detail": "Whether payments are due at the end (`0`) or beginning (`1`) of each period."
  17645. }
  17646. ]
  17647. },
  17648. "PMT": {
  17649. "d": "Calculates the periodic payment for an annuity investment based on constant-amount periodic payments and a constant interest rate.",
  17650. "a": "Periodic payment for an annuity investment.",
  17651. "p": [
  17652. {
  17653. "name": "rate",
  17654. "detail": "The interest rate."
  17655. },
  17656. {
  17657. "name": "number_of_periods",
  17658. "detail": "The number of payments to be made."
  17659. },
  17660. {
  17661. "name": "present_value",
  17662. "detail": "The current value of the annuity."
  17663. },
  17664. {
  17665. "name": "future_value",
  17666. "detail": "The future value remaining after the final payment has been made."
  17667. },
  17668. {
  17669. "name": "end_or_beginning",
  17670. "detail": "Whether payments are due at the end (`0`) or beginning (`1`) of each period."
  17671. }
  17672. ]
  17673. },
  17674. "IPMT": {
  17675. "d": "Calculates the payment on interest for an investment based on constant-amount periodic payments and a constant interest rate.",
  17676. "a": "Payment on interest for an investment.",
  17677. "p": [
  17678. {
  17679. "name": "rate",
  17680. "detail": "The interest rate."
  17681. },
  17682. {
  17683. "name": "period",
  17684. "detail": "The amortization period, in terms of number of periods."
  17685. },
  17686. {
  17687. "name": "number_of_periods",
  17688. "detail": "The number of payments to be made."
  17689. },
  17690. {
  17691. "name": "present_value",
  17692. "detail": "The current value of the annuity."
  17693. },
  17694. {
  17695. "name": "future_value",
  17696. "detail": "The future value remaining after the final payment has been made."
  17697. },
  17698. {
  17699. "name": "end_or_beginning",
  17700. "detail": "Whether payments are due at the end (`0`) or beginning (`1`) of each period."
  17701. }
  17702. ]
  17703. },
  17704. "PPMT": {
  17705. "d": "Calculates the payment on the principal of an investment based on constant-amount periodic payments and a constant interest rate.",
  17706. "a": "Payment on the principal of an investment.",
  17707. "p": [
  17708. {
  17709. "name": "rate",
  17710. "detail": "The interest rate."
  17711. },
  17712. {
  17713. "name": "period",
  17714. "detail": "The amortization period, in terms of number of periods."
  17715. },
  17716. {
  17717. "name": "number_of_periods",
  17718. "detail": "The number of payments to be made."
  17719. },
  17720. {
  17721. "name": "present_value",
  17722. "detail": "The current value of the annuity."
  17723. },
  17724. {
  17725. "name": "future_value",
  17726. "detail": "The future value remaining after the final payment has been made."
  17727. },
  17728. {
  17729. "name": "end_or_beginning",
  17730. "detail": "Whether payments are due at the end (`0`) or beginning (`1`) of each period."
  17731. }
  17732. ]
  17733. },
  17734. "INTRATE": {
  17735. "d": "Calculates the effective interest rate generated when an investment is purchased at one price and sold at another with no interest or dividends generated by the investment itself.",
  17736. "a": "Calculates effective interest rate.",
  17737. "p": [
  17738. {
  17739. "name": "buy_date",
  17740. "detail": "The date of purchase of the investment."
  17741. },
  17742. {
  17743. "name": "sell_date",
  17744. "detail": "The date of sale of the investment."
  17745. },
  17746. {
  17747. "name": "buy_price",
  17748. "detail": "The price at which the investment was purchased."
  17749. },
  17750. {
  17751. "name": "sell_price",
  17752. "detail": "The price at which the investment was sold."
  17753. },
  17754. {
  17755. "name": "day_count_convention",
  17756. "detail": "An indicator of what day count method to use."
  17757. }
  17758. ]
  17759. },
  17760. "PRICE": {
  17761. "d": "Calculates the price of a security paying periodic interest, such as a US Treasury Bond, based on expected yield.",
  17762. "a": "Price of a security paying periodic interest.",
  17763. "p": [
  17764. {
  17765. "name": "settlement",
  17766. "detail": "The settlement date of the security, the date after issuance when the security is delivered to the buyer."
  17767. },
  17768. {
  17769. "name": "maturity",
  17770. "detail": "The maturity or end date of the security, when it can be redeemed at face, or par value."
  17771. },
  17772. {
  17773. "name": "rate",
  17774. "detail": "The annualized rate of interest."
  17775. },
  17776. {
  17777. "name": "yield",
  17778. "detail": "The expected annual yield of the security."
  17779. },
  17780. {
  17781. "name": "redemption",
  17782. "detail": "The redemption amount per 100 face value, or par."
  17783. },
  17784. {
  17785. "name": "frequency",
  17786. "detail": "The number of interest or coupon payments per year (1, 2, or 4)."
  17787. },
  17788. {
  17789. "name": "day_count_convention",
  17790. "detail": "An indicator of what day count method to use."
  17791. }
  17792. ]
  17793. },
  17794. "PRICEDISC": {
  17795. "d": "Calculates the price of a discount (non-interest-bearing) security, based on expected yield.",
  17796. "a": "Price of a discount security.",
  17797. "p": [
  17798. {
  17799. "name": "settlement",
  17800. "detail": "The settlement date of the security, the date after issuance when the security is delivered to the buyer."
  17801. },
  17802. {
  17803. "name": "maturity",
  17804. "detail": "The maturity or end date of the security, when it can be redeemed at face, or par value."
  17805. },
  17806. {
  17807. "name": "discount",
  17808. "detail": "The discount rate of the security at time of purchase."
  17809. },
  17810. {
  17811. "name": "redemption",
  17812. "detail": "The redemption amount per 100 face value, or par."
  17813. },
  17814. {
  17815. "name": "day_count_convention",
  17816. "detail": "An indicator of what day count method to use."
  17817. }
  17818. ]
  17819. },
  17820. "PRICEMAT": {
  17821. "d": "Calculates the price of a security paying interest at maturity, based on expected yield.",
  17822. "a": "Price of security paying interest at maturity.",
  17823. "p": [
  17824. {
  17825. "name": "settlement",
  17826. "detail": "The settlement date of the security, the date after issuance when the security is delivered to the buyer."
  17827. },
  17828. {
  17829. "name": "maturity",
  17830. "detail": "The maturity or end date of the security, when it can be redeemed at face, or par value."
  17831. },
  17832. {
  17833. "name": "issue",
  17834. "detail": "The date the security was initially issued."
  17835. },
  17836. {
  17837. "name": "rate",
  17838. "detail": "The annualized rate of interest."
  17839. },
  17840. {
  17841. "name": "yield",
  17842. "detail": "The expected annual yield of the security."
  17843. },
  17844. {
  17845. "name": "day_count_convention",
  17846. "detail": "An indicator of what day count method to use."
  17847. }
  17848. ]
  17849. },
  17850. "RECEIVED": {
  17851. "d": "Calculates the amount received at maturity for an investment in fixed-income securities purchased on a given date.",
  17852. "a": "Amount received at maturity for a security.",
  17853. "p": [
  17854. {
  17855. "name": "settlement",
  17856. "detail": "The settlement date of the security, the date after issuance when the security is delivered to the buyer."
  17857. },
  17858. {
  17859. "name": "maturity",
  17860. "detail": "The maturity or end date of the security, when it can be redeemed at face, or par value."
  17861. },
  17862. {
  17863. "name": "investment",
  17864. "detail": "The amount invested (irrespective of face value of each security)."
  17865. },
  17866. {
  17867. "name": "discount",
  17868. "detail": "The discount rate of the security invested in."
  17869. },
  17870. {
  17871. "name": "day_count_convention",
  17872. "detail": "An indicator of what day count method to use."
  17873. }
  17874. ]
  17875. },
  17876. "DISC": {
  17877. "d": "Calculates the discount rate of a security based on price.",
  17878. "a": "The discount rate of a security based on price.",
  17879. "p": [
  17880. {
  17881. "name": "settlement",
  17882. "detail": "The settlement date of the security, the date after issuance when the security is delivered to the buyer."
  17883. },
  17884. {
  17885. "name": "maturity",
  17886. "detail": "The maturity or end date of the security, when it can be redeemed at face, or par value."
  17887. },
  17888. {
  17889. "name": "price",
  17890. "detail": "The price at which the security is bought per 100 face value."
  17891. },
  17892. {
  17893. "name": "redemption",
  17894. "detail": "The redemption amount per 100 face value, or par."
  17895. },
  17896. {
  17897. "name": "day_count_convention",
  17898. "detail": "An indicator of what day count method to use."
  17899. }
  17900. ]
  17901. },
  17902. "NPER": {
  17903. "d": "Calculates the number of payment periods for an investment based on constant-amount periodic payments and a constant interest rate.",
  17904. "a": "Number of payment periods for an investment.",
  17905. "p": [
  17906. {
  17907. "name": "rate",
  17908. "detail": "The interest rate."
  17909. },
  17910. {
  17911. "name": "payment_amount",
  17912. "detail": "The amount of each payment made."
  17913. },
  17914. {
  17915. "name": "present_value",
  17916. "detail": "The current value of the annuity."
  17917. },
  17918. {
  17919. "name": "future_value",
  17920. "detail": "The future value remaining after the final payment has been made."
  17921. },
  17922. {
  17923. "name": "end_or_beginning",
  17924. "detail": "Whether payments are due at the end (`0`) or beginning (`1`) of each period."
  17925. }
  17926. ]
  17927. },
  17928. "SLN": {
  17929. "d": "Calculates the depreciation of an asset for one period using the straight-line method.",
  17930. "a": "Depreciation of asset using the straight-line method.",
  17931. "p": [
  17932. {
  17933. "name": "cost",
  17934. "detail": "The initial cost of the asset."
  17935. },
  17936. {
  17937. "name": "salvage",
  17938. "detail": "The value of the asset at the end of depreciation."
  17939. },
  17940. {
  17941. "name": "life",
  17942. "detail": "The number of periods over which the asset is depreciated."
  17943. }
  17944. ]
  17945. },
  17946. "DURATION": {
  17947. "d": "Calculates the number of compounding periods required for an investment of a specified present value appreciating at a given rate to reach a target value.",
  17948. "a": "Number of periods for an investment to reach a value.",
  17949. "p": [
  17950. {
  17951. "name": "settlement",
  17952. "detail": "The settlement date of the security, the date after issuance when the security is delivered to the buyer."
  17953. },
  17954. {
  17955. "name": "maturity",
  17956. "detail": "The maturity or end date of the security, when it can be redeemed at face, or par value."
  17957. },
  17958. {
  17959. "name": "rate",
  17960. "detail": "The annualized rate of interest."
  17961. },
  17962. {
  17963. "name": "yield",
  17964. "detail": "The expected annual yield of the security."
  17965. },
  17966. {
  17967. "name": "frequency",
  17968. "detail": "The number of interest or coupon payments per year (1, 2, or 4)."
  17969. },
  17970. {
  17971. "name": "day_count_convention",
  17972. "detail": "An indicator of what day count method to use."
  17973. }
  17974. ]
  17975. },
  17976. "MDURATION": {
  17977. "d": "Calculates the modified Macaulay duration of a security paying periodic interest, such as a US Treasury Bond, based on expected yield.",
  17978. "a": "Modified Macaulay duration.",
  17979. "p": [
  17980. {
  17981. "name": "settlement",
  17982. "detail": "The settlement date of the security, the date after issuance when the security is delivered to the buyer."
  17983. },
  17984. {
  17985. "name": "maturity",
  17986. "detail": "The maturity or end date of the security, when it can be redeemed at face, or par value."
  17987. },
  17988. {
  17989. "name": "rate",
  17990. "detail": "The annualized rate of interest."
  17991. },
  17992. {
  17993. "name": "yield",
  17994. "detail": "The expected annual yield of the security."
  17995. },
  17996. {
  17997. "name": "frequency",
  17998. "detail": "The number of interest or coupon payments per year (1, 2, or 4)."
  17999. },
  18000. {
  18001. "name": "day_count_convention",
  18002. "detail": "An indicator of what day count method to use."
  18003. }
  18004. ]
  18005. },
  18006. "BIN2DEC": {
  18007. "d": "Converts a signed binary number to decimal format.",
  18008. "a": "Converts a signed binary number to decimal format.",
  18009. "p": [
  18010. {
  18011. "name": "signed_binary_number",
  18012. "detail": "The signed 10-bit binary value to be converted to decimal, provided as a string."
  18013. }
  18014. ]
  18015. },
  18016. "BIN2HEX": {
  18017. "d": "Converts a signed binary number to signed hexadecimal format.",
  18018. "a": "Converts a binary number to hexadecimal.",
  18019. "p": [
  18020. {
  18021. "name": "signed_binary_number",
  18022. "detail": "The signed 10-bit binary value to be converted to signed hexademical, provided as a string."
  18023. },
  18024. {
  18025. "name": "significant_digits",
  18026. "detail": "The number of significant digits to ensure in the result."
  18027. }
  18028. ]
  18029. },
  18030. "BIN2OCT": {
  18031. "d": "Converts a signed binary number to signed octal format.",
  18032. "a": "Converts a binary number to octal.",
  18033. "p": [
  18034. {
  18035. "name": "signed_binary_number",
  18036. "detail": "The signed 10-bit binary value to be converted to signed octal, provided as a string."
  18037. },
  18038. {
  18039. "name": "significant_digits",
  18040. "detail": "The number of significant digits to ensure in the result."
  18041. }
  18042. ]
  18043. },
  18044. "DEC2BIN": {
  18045. "d": "Converts a decimal number to signed binary format.",
  18046. "a": "Converts a decimal number to signed binary format.",
  18047. "p": [
  18048. {
  18049. "name": "decimal_number",
  18050. "detail": "The decimal value to be converted to signed binary, provided as a string."
  18051. },
  18052. {
  18053. "name": "significant_digits",
  18054. "detail": "The number of significant digits to ensure in the result."
  18055. }
  18056. ]
  18057. },
  18058. "DEC2HEX": {
  18059. "d": "Converts a decimal number to signed hexadecimal format.",
  18060. "a": "Converts a decimal number to hexadecimal.",
  18061. "p": [
  18062. {
  18063. "name": "decimal_number",
  18064. "detail": "The decimal value to be converted to signed hexadecimal, provided as a string."
  18065. },
  18066. {
  18067. "name": "significant_digits",
  18068. "detail": "The number of significant digits to ensure in the result."
  18069. }
  18070. ]
  18071. },
  18072. "DEC2OCT": {
  18073. "d": "Converts a decimal number to signed octal format.",
  18074. "a": "Converts a decimal number to signed octal format.",
  18075. "p": [
  18076. {
  18077. "name": "decimal_number",
  18078. "detail": "The decimal value to be converted to signed octal, provided as a string."
  18079. },
  18080. {
  18081. "name": "significant_digits",
  18082. "detail": "The number of significant digits to ensure in the result."
  18083. }
  18084. ]
  18085. },
  18086. "HEX2BIN": {
  18087. "d": "Converts a signed hexadecimal number to signed binary format.",
  18088. "a": "Converts a hexadecimal number to binary.",
  18089. "p": [
  18090. {
  18091. "name": "signed_hexadecimal_number",
  18092. "detail": "The signed 40-bit hexadecimal value to be converted to signed binary, provided as a string."
  18093. },
  18094. {
  18095. "name": "significant_digits",
  18096. "detail": "The number of significant digits to ensure in the result."
  18097. }
  18098. ]
  18099. },
  18100. "HEX2DEC": {
  18101. "d": "Converts a signed hexadecimal number to decimal format.",
  18102. "a": "Converts a hexadecimal number to decimal.",
  18103. "p": [
  18104. {
  18105. "name": "signed_hexadecimal_number",
  18106. "detail": "The signed 40-bit hexadecimal value to be converted to decimal, provided as a string."
  18107. }
  18108. ]
  18109. },
  18110. "HEX2OCT": {
  18111. "d": "Converts a signed hexadecimal number to signed octal format.",
  18112. "a": "Converts a hexadecimal number to octal.",
  18113. "p": [
  18114. {
  18115. "name": "signed_hexadecimal_number",
  18116. "detail": "The signed 40-bit hexadecimal value to be converted to signed octal, provided as a string."
  18117. },
  18118. {
  18119. "name": "significant_digits",
  18120. "detail": "The number of significant digits to ensure in the result."
  18121. }
  18122. ]
  18123. },
  18124. "OCT2BIN": {
  18125. "d": "Converts a signed octal number to signed binary format.",
  18126. "a": "Converts an octal number to binary.",
  18127. "p": [
  18128. {
  18129. "name": "signed_octal_number",
  18130. "detail": "The signed 30-bit octal value to be converted to signed binary, provided as a string."
  18131. },
  18132. {
  18133. "name": "significant_digits",
  18134. "detail": "The number of significant digits to ensure in the result."
  18135. }
  18136. ]
  18137. },
  18138. "OCT2DEC": {
  18139. "d": "Converts a signed octal number to decimal format.",
  18140. "a": "Converts a signed octal number to decimal format.",
  18141. "p": [
  18142. {
  18143. "name": "signed_octal_number",
  18144. "detail": "The signed 30-bit octal value to be converted to decimal, provided as a string."
  18145. }
  18146. ]
  18147. },
  18148. "OCT2HEX": {
  18149. "d": "Converts a signed octal number to signed hexadecimal format.",
  18150. "a": "Converts an octal number to hexadecimal.",
  18151. "p": [
  18152. {
  18153. "name": "signed_octal_number",
  18154. "detail": "The signed 30-bit octal value to be converted to signed hexadecimal, provided as a string."
  18155. },
  18156. {
  18157. "name": "significant_digits",
  18158. "detail": "The number of significant digits to ensure in the result."
  18159. }
  18160. ]
  18161. },
  18162. "COMPLEX": {
  18163. "d": "Creates a complex number given real and imaginary coefficients.",
  18164. "a": "Creates a complex number.",
  18165. "p": [
  18166. {
  18167. "name": "real_part",
  18168. "detail": "The real coefficient."
  18169. },
  18170. {
  18171. "name": "imaginary_part",
  18172. "detail": "The imaginary coefficient."
  18173. },
  18174. {
  18175. "name": "suffix",
  18176. "detail": "The suffix for the imaginary coefficient, can only be 'i' or 'j'. If omitted, 'i' will be used."
  18177. }
  18178. ]
  18179. },
  18180. "IMREAL": {
  18181. "d": "Returns the real coefficient of a complex number.",
  18182. "a": "The real coefficient of a complex number.",
  18183. "p": [
  18184. {
  18185. "name": "complex_number",
  18186. "detail": "The complex number, in the a+bi or a+bj format."
  18187. }
  18188. ]
  18189. },
  18190. "IMAGINARY": {
  18191. "d": "Returns the imaginary coefficient of a complex number.",
  18192. "a": "The imaginary coefficient of a complex number.",
  18193. "p": [
  18194. {
  18195. "name": "complex_number",
  18196. "detail": "The complex number, in the a+bi or a+bj format."
  18197. }
  18198. ]
  18199. },
  18200. "IMCONJUGATE": {
  18201. "d": "Returns the complex conjugate of a number.",
  18202. "a": "The complex conjugate of a number.",
  18203. "p": [
  18204. {
  18205. "name": "number",
  18206. "detail": "The complex number to calculate the conjugate for."
  18207. }
  18208. ]
  18209. },
  18210. "IMABS": {
  18211. "d": "Returns absolute value (or modulus) of a complex number.",
  18212. "a": "The absolute value of a complex number.",
  18213. "p": [
  18214. {
  18215. "name": "number",
  18216. "detail": "The complex number to calculate the absolute value of."
  18217. }
  18218. ]
  18219. },
  18220. "DELTA": {
  18221. "d": "Compare two numeric values, returning 1 if they're equal.",
  18222. "a": "Compare two numeric values.",
  18223. "p": [
  18224. {
  18225. "name": "number1",
  18226. "detail": "The first number to compare."
  18227. },
  18228. {
  18229. "name": "number2",
  18230. "detail": "The second number to compare."
  18231. }
  18232. ]
  18233. },
  18234. "IMSUM": {
  18235. "d": "Returns the sum of a series of complex numbers.",
  18236. "a": "Sum of a series of complex numbers.",
  18237. "p": [
  18238. {
  18239. "name": "value1",
  18240. "detail": "The first complex number or range to add together."
  18241. },
  18242. {
  18243. "name": "value2",
  18244. "detail": "Additional complex numbers or ranges to add to `value1`."
  18245. }
  18246. ]
  18247. },
  18248. "IMSUB": {
  18249. "d": "Returns the difference between two complex numbers.",
  18250. "a": "The difference between two complex numbers.",
  18251. "p": [
  18252. {
  18253. "name": "first_number",
  18254. "detail": "The complex number to subtract second_number from."
  18255. },
  18256. {
  18257. "name": "second_number",
  18258. "detail": "The complex number to subtract from first_number."
  18259. }
  18260. ]
  18261. },
  18262. "IMPRODUCT": {
  18263. "d": "Returns the result of multiplying a series of complex numbers together.",
  18264. "a": "Result of multiplying a series of complex numbers together.",
  18265. "p": [
  18266. {
  18267. "name": "factor1",
  18268. "detail": "The first number or range to calculate for the product."
  18269. },
  18270. {
  18271. "name": "factor2",
  18272. "detail": "Additional complex numbers or ranges to calculate for the product."
  18273. }
  18274. ]
  18275. },
  18276. "IMDIV": {
  18277. "d": "Returns one complex number divided by another.",
  18278. "a": "One complex number divided by another.",
  18279. "p": [
  18280. {
  18281. "name": "dividend",
  18282. "detail": "The complex number to be divided."
  18283. },
  18284. {
  18285. "name": "divisor",
  18286. "detail": "The complex number to divide by."
  18287. }
  18288. ]
  18289. },
  18290. "NOT": {
  18291. "d": "Returns the opposite of a logical value - `NOT(TRUE)` returns `FALSE`; `NOT(FALSE)` returns `TRUE`.",
  18292. "a": "Returns opposite of provided logical value.",
  18293. "p": [
  18294. {
  18295. "name": "logical_expression",
  18296. "detail": "An expression or reference to a cell holding an expression that represents some logical value."
  18297. }
  18298. ]
  18299. },
  18300. "TRUE": {
  18301. "d": "Returns the logical value `TRUE`.",
  18302. "a": "Logical value `true`.",
  18303. "p": []
  18304. },
  18305. "FALSE": {
  18306. "d": "Returns the logical value `FALSE`.",
  18307. "a": "Logical value `false`.",
  18308. "p": []
  18309. },
  18310. "AND": {
  18311. "d": "Returns true if all of the provided arguments are logically true, and false if any of the provided arguments are logically false.",
  18312. "a": "Logical `and` operator.",
  18313. "p": [
  18314. {
  18315. "name": "logical_expression1",
  18316. "detail": "An expression or reference to a cell containing an expression that represents some logical value, i.e. `TRUE` or `FALSE`, or an expression that can be coerced to a logical value."
  18317. },
  18318. {
  18319. "name": "logical_expression2",
  18320. "detail": "More expressions that represent logical values."
  18321. }
  18322. ]
  18323. },
  18324. "IFERROR": {
  18325. "d": "Returns the first argument if it is not an error value, otherwise returns the second argument if present, or a blank if the second argument is absent.",
  18326. "a": "Value if it is not an error, otherwise 2nd argument.",
  18327. "p": [
  18328. {
  18329. "name": "value",
  18330. "detail": "The value to return if `value` itself is not an error."
  18331. },
  18332. {
  18333. "name": "value_if_error",
  18334. "detail": "The value the function returns if `value` is an error."
  18335. }
  18336. ]
  18337. },
  18338. "IF": {
  18339. "d": "Returns one value if a logical expression is `TRUE` and another if it is `FALSE`.",
  18340. "a": "Returns value depending on logical expression.",
  18341. "p": [
  18342. {
  18343. "name": "logical_expression",
  18344. "detail": "An expression or reference to a cell containing an expression that represents some logical value, i.e. `TRUE` or `FALSE`."
  18345. },
  18346. {
  18347. "name": "value_if_true",
  18348. "detail": "The value the function returns if `logical_expression` is `TRUE`."
  18349. },
  18350. {
  18351. "name": "value_if_false",
  18352. "detail": "The value the function returns if `logical_expression` is `FALSE`."
  18353. }
  18354. ]
  18355. },
  18356. "OR": {
  18357. "d": "Returns true if any of the provided arguments are logically true, and false if all of the provided arguments are logically false.",
  18358. "a": "Logical `or` operator.",
  18359. "p": [
  18360. {
  18361. "name": "logical_expression1",
  18362. "detail": "An expression or reference to a cell containing an expression that represents some logical value, i.e. `TRUE` or `FALSE`, or an expression that can be coerced to a logical value."
  18363. },
  18364. {
  18365. "name": "logical_expression2",
  18366. "detail": "More expressions that evaluate to logical values."
  18367. }
  18368. ]
  18369. },
  18370. "NE": {
  18371. "d": "Returns `TRUE` if two specified values are not equal and `FALSE` otherwise. Equivalent to the `!=` operator.",
  18372. "a": "Not equal.",
  18373. "p": [
  18374. {
  18375. "name": "value1",
  18376. "detail": "The first value."
  18377. },
  18378. {
  18379. "name": "value2",
  18380. "detail": "The value to test against `value1` for inequality."
  18381. }
  18382. ]
  18383. },
  18384. "EQ": {
  18385. "d": "Returns `TRUE` if two specified values are equal and `FALSE` otherwise. Equivalent to the `==` operator.",
  18386. "a": "Equal.",
  18387. "p": [
  18388. {
  18389. "name": "value1",
  18390. "detail": "The first value."
  18391. },
  18392. {
  18393. "name": "value2",
  18394. "detail": "The value to test against `value1` for equality."
  18395. }
  18396. ]
  18397. },
  18398. "GT": {
  18399. "d": "Returns `TRUE` if the first argument is strictly greater than the second, and `FALSE` otherwise. Equivalent to the `>` operator.",
  18400. "a": "Strictly greater than.",
  18401. "p": [
  18402. {
  18403. "name": "value1",
  18404. "detail": "The value to test as being greater than `value2`."
  18405. },
  18406. {
  18407. "name": "value2",
  18408. "detail": "The second value."
  18409. }
  18410. ]
  18411. },
  18412. "GTE": {
  18413. "d": "Returns `TRUE` if the first argument is greater than or equal to the second, and `FALSE` otherwise. Equivalent to the `>=` operator.",
  18414. "a": "Greater than or equal to.",
  18415. "p": [
  18416. {
  18417. "name": "value1",
  18418. "detail": "The value to test as being greater than or equal to `value2`."
  18419. },
  18420. {
  18421. "name": "value2",
  18422. "detail": "The second value."
  18423. }
  18424. ]
  18425. },
  18426. "LT": {
  18427. "d": "Returns `TRUE` if the first argument is strictly less than the second, and `FALSE` otherwise. Equivalent to the `<` operator.",
  18428. "a": "Less than.",
  18429. "p": [
  18430. {
  18431. "name": "value1",
  18432. "detail": "The value to test as being less than `value2`."
  18433. },
  18434. {
  18435. "name": "value2",
  18436. "detail": "The second value."
  18437. }
  18438. ]
  18439. },
  18440. "LTE": {
  18441. "d": "Returns `TRUE` if the first argument is less than or equal to the second, and `FALSE` otherwise. Equivalent to the `<=` operator.",
  18442. "a": "Less than or equal to.",
  18443. "p": [
  18444. {
  18445. "name": "value1",
  18446. "detail": "The value to test as being less than or equal to `value2`."
  18447. },
  18448. {
  18449. "name": "value2",
  18450. "detail": "The second value."
  18451. }
  18452. ]
  18453. },
  18454. "ADD": {
  18455. "d": "Returns the sum of two numbers. Equivalent to the `+` operator.",
  18456. "a": "Sum of two numbers",
  18457. "p": [
  18458. {
  18459. "name": "value1",
  18460. "detail": "The first addend."
  18461. },
  18462. {
  18463. "name": "value2",
  18464. "detail": "The second addend."
  18465. }
  18466. ]
  18467. },
  18468. "MINUS": {
  18469. "d": "Returns the difference of two numbers. Equivalent to the `-` operator.",
  18470. "a": "Difference of two numbers",
  18471. "p": [
  18472. {
  18473. "name": "value1",
  18474. "detail": "The minuend, or number to be subtracted from."
  18475. },
  18476. {
  18477. "name": "value2",
  18478. "detail": "The subtrahend, or number to subtract from `value1`."
  18479. }
  18480. ]
  18481. },
  18482. "MULTIPLY": {
  18483. "d": "Returns the product of two numbers. Equivalent to the `*` operator.",
  18484. "a": "Product of two numbers",
  18485. "p": [
  18486. {
  18487. "name": "factor1",
  18488. "detail": "The first multiplicand."
  18489. },
  18490. {
  18491. "name": "factor2",
  18492. "detail": "The second multiplicand."
  18493. }
  18494. ]
  18495. },
  18496. "DIVIDE": {
  18497. "d": "Returns one number divided by another. Equivalent to the `/` operator.",
  18498. "a": "One number divided by another",
  18499. "p": [
  18500. {
  18501. "name": "dividend",
  18502. "detail": "The number to be divided."
  18503. },
  18504. {
  18505. "name": "divisor",
  18506. "detail": "The number to divide by."
  18507. }
  18508. ]
  18509. },
  18510. "CONCAT": {
  18511. "d": "Returns the concatenation of two values. Equivalent to the `&` operator.",
  18512. "a": "Concatenation of two values",
  18513. "p": [
  18514. {
  18515. "name": "value1",
  18516. "detail": "The value to which `value2` will be appended."
  18517. },
  18518. {
  18519. "name": "value2",
  18520. "detail": "The value to append to `value1`."
  18521. }
  18522. ]
  18523. },
  18524. "UNARY_PERCENT": {
  18525. "d": "Returns a value interpreted as a percentage; that is, `UNARY_PERCENT(100)` equals `1`.",
  18526. "a": "Value interpreted as a percentage.",
  18527. "p": [
  18528. {
  18529. "name": "percentage",
  18530. "detail": "The value to interpret as a percentage."
  18531. }
  18532. ]
  18533. },
  18534. "CONCATENATE": {
  18535. "d": "Appends strings to one another.",
  18536. "a": "Appends strings to one another.",
  18537. "p": [
  18538. {
  18539. "name": "string1",
  18540. "detail": "The initial string."
  18541. },
  18542. {
  18543. "name": "string2",
  18544. "detail": "More strings to append in sequence."
  18545. }
  18546. ]
  18547. },
  18548. "CODE": {
  18549. "d": "Returns the numeric Unicode map value of the first character in the string provided.",
  18550. "a": "Numeric unicode map value of character.",
  18551. "p": [
  18552. {
  18553. "name": "string",
  18554. "detail": "The string whose first character's Unicode map value will be returned."
  18555. }
  18556. ]
  18557. },
  18558. "CHAR": {
  18559. "d": "Convert a number into a character according to the current Unicode table.",
  18560. "a": "Gets character associated with number.",
  18561. "p": [
  18562. {
  18563. "name": "table_number",
  18564. "detail": "The number of the character to look up from the current Unicode table in decimal format."
  18565. }
  18566. ]
  18567. },
  18568. "ARABIC": {
  18569. "d": "Computes the value of a Roman numeral.",
  18570. "a": "Computes the value of a roman numeral.",
  18571. "p": [
  18572. {
  18573. "name": "roman_numeral",
  18574. "detail": "The Roman numeral to format, whose value must be between 1 and 3999, inclusive."
  18575. }
  18576. ]
  18577. },
  18578. "ROMAN": {
  18579. "d": "Formats a number in Roman numerals.",
  18580. "a": "Formats a number in Roman numerals.",
  18581. "p": [
  18582. {
  18583. "name": "number",
  18584. "detail": "The number to format, between 1 and 3999, inclusive."
  18585. }
  18586. ]
  18587. },
  18588. "REGEXEXTRACT": {
  18589. "d": "Extracts matching substrings according to a regular expression.",
  18590. "a": "Extracts matching substrings with regular expression.",
  18591. "p": [
  18592. {
  18593. "name": "text",
  18594. "detail": "The input text."
  18595. },
  18596. {
  18597. "name": "regular_expression",
  18598. "detail": "The first part of `text` that matches this expression will be returned."
  18599. }
  18600. ]
  18601. },
  18602. "REGEXMATCH": {
  18603. "d": "Whether a piece of text matches a regular expression.",
  18604. "a": "Whether a piece of text matches regular expression.",
  18605. "p": [
  18606. {
  18607. "name": "text",
  18608. "detail": "The text to be tested against the regular expression."
  18609. },
  18610. {
  18611. "name": "regular_expression",
  18612. "detail": "The regular expression to test the text against."
  18613. }
  18614. ]
  18615. },
  18616. "REGEXREPLACE": {
  18617. "d": "Replaces part of a text string with a different text string using regular expressions.",
  18618. "a": "Replaces text with regular expressions.",
  18619. "p": [
  18620. {
  18621. "name": "text",
  18622. "detail": "The text, a part of which will be replaced."
  18623. },
  18624. {
  18625. "name": "regular_expression",
  18626. "detail": "The regular expression. All matching instances in `text` will be replaced."
  18627. },
  18628. {
  18629. "name": "replacement",
  18630. "detail": "The text which will be inserted into the original text."
  18631. }
  18632. ]
  18633. },
  18634. "T": {
  18635. "d": "Returns string arguments as text, or the empty string if the value is not text.",
  18636. "a": "String arguments as text.",
  18637. "p": [
  18638. {
  18639. "name": "value",
  18640. "detail": "The argument to be converted to text."
  18641. }
  18642. ]
  18643. },
  18644. "FIXED": {
  18645. "d": "Formats a number with a fixed number of decimal places.",
  18646. "a": "Formats number with fixed number of decimal places.",
  18647. "p": [
  18648. {
  18649. "name": "number",
  18650. "detail": "The number to format."
  18651. },
  18652. {
  18653. "name": "number_of_places",
  18654. "detail": "The number of decimal places to display in the result."
  18655. },
  18656. {
  18657. "name": "suppress_separator",
  18658. "detail": "Whether or not to suppress the thousands separator used in some locales (e.g. `1,000` becomes `1000`). Separators will be present if this value is 0 or omitted, and absent otherwise."
  18659. }
  18660. ]
  18661. },
  18662. "FIND": {
  18663. "d": "Returns the position at which a string is first found within text where the capitalization of letters matters. Returns `#VALUE!` if the string is not found.",
  18664. "a": "First position of string found in text, case-sensitive.",
  18665. "p": [
  18666. {
  18667. "name": "search_for",
  18668. "detail": "The string to look for within `text_to_search`."
  18669. },
  18670. {
  18671. "name": "text_to_search",
  18672. "detail": "The text to search for the first occurrence of `search_for`."
  18673. },
  18674. {
  18675. "name": "starting_at",
  18676. "detail": "The character within `text_to_search` at which to start the search."
  18677. }
  18678. ]
  18679. },
  18680. "FINDB": {
  18681. "d": "Returns the position at which a string is first found within text counting each double-character as 2.",
  18682. "a": "Position at which a string is first found within text (binary).",
  18683. "p": [
  18684. {
  18685. "name": "search_for",
  18686. "detail": "The string to look for within `text_to_search`."
  18687. },
  18688. {
  18689. "name": "text_to_search",
  18690. "detail": "The text to search for the first occurrence of `search_for`."
  18691. },
  18692. {
  18693. "name": "starting_at",
  18694. "detail": "The character within `text_to_search` at which to start the search."
  18695. }
  18696. ]
  18697. },
  18698. "JOIN": {
  18699. "d": "Concatenates the elements of one or more one-dimensional arrays using a specified delimiter.",
  18700. "a": "Concatenates elements of arrays with delimiter.",
  18701. "p": [
  18702. {
  18703. "name": "delimiter",
  18704. "detail": "The character or string to place between each concatenated value."
  18705. },
  18706. {
  18707. "name": "value_or_array1",
  18708. "detail": "The value or values to be appended using `delimiter`."
  18709. },
  18710. {
  18711. "name": "value_or_array2",
  18712. "detail": "More values to be appended using `delimiter`."
  18713. }
  18714. ]
  18715. },
  18716. "LEFT": {
  18717. "d": "Returns a substring from the beginning of a specified string.",
  18718. "a": "Substring from beginning of specified string.",
  18719. "p": [
  18720. {
  18721. "name": "string",
  18722. "detail": "The string from which the left portion will be returned."
  18723. },
  18724. {
  18725. "name": "number_of_characters",
  18726. "detail": "The number of characters to return from the left side of `string`."
  18727. }
  18728. ]
  18729. },
  18730. "RIGHT": {
  18731. "d": "Returns a substring from the end of a specified string.",
  18732. "a": "A substring from the end of a specified string.",
  18733. "p": [
  18734. {
  18735. "name": "string",
  18736. "detail": "The string from which the right portion will be returned."
  18737. },
  18738. {
  18739. "name": "number_of_characters",
  18740. "detail": "The number of characters to return from the right side of `string`."
  18741. }
  18742. ]
  18743. },
  18744. "MID": {
  18745. "d": "Returns a segment of a string.",
  18746. "a": "A segment of a string.",
  18747. "p": [
  18748. {
  18749. "name": "string",
  18750. "detail": "The string to extract a segment from."
  18751. },
  18752. {
  18753. "name": "starting_at",
  18754. "detail": "The index from the left of `string` from which to begin extracting. The first character in `string` has the index 1."
  18755. },
  18756. {
  18757. "name": "extract_length",
  18758. "detail": "The length of the segment to extract."
  18759. }
  18760. ]
  18761. },
  18762. "LEN": {
  18763. "d": "Returns the length of a string.",
  18764. "a": "Length of a string.",
  18765. "p": [
  18766. {
  18767. "name": "text",
  18768. "detail": "The string whose length will be returned."
  18769. }
  18770. ]
  18771. },
  18772. "LENB": {
  18773. "d": "Returns the length of a string in bytes.",
  18774. "a": "Length of a string in bytes.",
  18775. "p": [
  18776. {
  18777. "name": "text",
  18778. "detail": "The string whose length will be returned."
  18779. }
  18780. ]
  18781. },
  18782. "LOWER": {
  18783. "d": "Converts a specified string to lowercase.",
  18784. "a": "Converts a specified string to lowercase.",
  18785. "p": [
  18786. {
  18787. "name": "text",
  18788. "detail": "The string to convert to lowercase."
  18789. }
  18790. ]
  18791. },
  18792. "UPPER": {
  18793. "d": "Converts a specified string to uppercase.",
  18794. "a": "Converts a specified string to uppercase.",
  18795. "p": [
  18796. {
  18797. "name": "text",
  18798. "detail": "The string to convert to uppercase."
  18799. }
  18800. ]
  18801. },
  18802. "EXACT": {
  18803. "d": "Tests whether two strings are identical.",
  18804. "a": "Tests whether two strings are identical.",
  18805. "p": [
  18806. {
  18807. "name": "string1",
  18808. "detail": "The first string to compare"
  18809. },
  18810. {
  18811. "name": "string2",
  18812. "detail": "The second string to compare"
  18813. }
  18814. ]
  18815. },
  18816. "REPLACE": {
  18817. "d": "Replaces part of a text string with a different text string.",
  18818. "a": "Replaces part of a text string with different text.",
  18819. "p": [
  18820. {
  18821. "name": "text",
  18822. "detail": "The text, a part of which will be replaced."
  18823. },
  18824. {
  18825. "name": "position",
  18826. "detail": "The position where the replacement will begin (starting from 1)."
  18827. },
  18828. {
  18829. "name": "length",
  18830. "detail": "The number of characters in the text to be replaced."
  18831. },
  18832. {
  18833. "name": "new_text",
  18834. "detail": "The text which will be inserted into the original text."
  18835. }
  18836. ]
  18837. },
  18838. "REPT": {
  18839. "d": "Returns specified text repeated a number of times.",
  18840. "a": "Specified text repeated a number of times.",
  18841. "p": [
  18842. {
  18843. "name": "text_to_repeat",
  18844. "detail": "The character or string to repeat."
  18845. },
  18846. {
  18847. "name": "number_of_repetitions",
  18848. "detail": "The number of times `text_to_repeat` should appear in the value returned."
  18849. }
  18850. ]
  18851. },
  18852. "SEARCH": {
  18853. "d": "Returns the position at which a string is first found within text and ignores capitalization of letters. Returns `#VALUE!` if the string is not found.",
  18854. "a": "First position of string found in text, ignoring case.",
  18855. "p": [
  18856. {
  18857. "name": "search_for",
  18858. "detail": "The string to look for within `text_to_search`."
  18859. },
  18860. {
  18861. "name": "text_to_search",
  18862. "detail": "The text to search for the first occurrence of `search_for`."
  18863. },
  18864. {
  18865. "name": "starting_at",
  18866. "detail": "The character within `text_to_search` at which to start the search."
  18867. }
  18868. ]
  18869. },
  18870. "SUBSTITUTE": {
  18871. "d": "Replaces existing text with new text in a string.",
  18872. "a": "Replaces existing text with new text in a string.",
  18873. "p": [
  18874. {
  18875. "name": "text_to_search",
  18876. "detail": "The text within which to search and replace."
  18877. },
  18878. {
  18879. "name": "search_for",
  18880. "detail": "The string to search for within `text_to_search`."
  18881. },
  18882. {
  18883. "name": "replace_with",
  18884. "detail": "The string that will replace `search_for`."
  18885. },
  18886. {
  18887. "name": "occurrence_number",
  18888. "detail": "The instance of `search_for` within `text_to_search` to replace with `replace_with`. By default, all occurrences of `search_for` are replaced; however, if `occurrence_number` is specified, only the indicated instance of `search_for` is replaced."
  18889. }
  18890. ]
  18891. },
  18892. "CLEAN": {
  18893. "d": "Returns the text with the non-printable ASCII characters removed.",
  18894. "a": "Removes non-printable characters from a piece of text.",
  18895. "p": [
  18896. {
  18897. "name": "text",
  18898. "detail": "The text whose non-printable characters are to be removed."
  18899. }
  18900. ]
  18901. },
  18902. "TEXT": {
  18903. "d": "Converts a number into text according to a specified format.",
  18904. "a": "Formats a number into text.",
  18905. "p": [
  18906. {
  18907. "name": "number",
  18908. "detail": "The number, date, or time to format."
  18909. },
  18910. {
  18911. "name": "format",
  18912. "detail": "The pattern by which to format the number, enclosed in quotation marks."
  18913. }
  18914. ]
  18915. },
  18916. "TRIM": {
  18917. "d": "Removes leading, trailing, and repeated spaces in text.",
  18918. "a": "Removes space characters.",
  18919. "p": [
  18920. {
  18921. "name": "text",
  18922. "detail": "The text or reference to a cell containing text to be trimmed."
  18923. }
  18924. ]
  18925. },
  18926. "VALUE": {
  18927. "d": "Converts a string in any of the date, time or number formats that Google Sheets understands into a number.",
  18928. "a": "Converts a date/time/number string into a number.",
  18929. "p": [
  18930. {
  18931. "name": "text",
  18932. "detail": "The string containing the value to be converted."
  18933. }
  18934. ]
  18935. },
  18936. "PROPER": {
  18937. "d": "Capitalizes each word in a specified string.",
  18938. "a": "Capitalizes each word in a specified string.",
  18939. "p": [
  18940. {
  18941. "name": "text_to_capitalize",
  18942. "detail": "The text which will be returned with the first letter of each word in uppercase and all other letters in lowercase."
  18943. }
  18944. ]
  18945. },
  18946. "CONVERT": {
  18947. "d": "Converts a numeric value to a different unit of measure.",
  18948. "a": "Unit conversion for numbers.",
  18949. "p": [
  18950. {
  18951. "name": "value",
  18952. "detail": "The numeric value in `start_unit` to convert to `end_unit`."
  18953. },
  18954. {
  18955. "name": "start_unit",
  18956. "detail": "The starting unit, the unit currently assigned to `value`."
  18957. },
  18958. {
  18959. "name": "end_unit",
  18960. "detail": "The unit of measure into which to convert the argument, `value`."
  18961. }
  18962. ]
  18963. },
  18964. "SUMX2MY2": {
  18965. "d": "Calculates the sum of the differences of the squares of values in two arrays.",
  18966. "a": "Sum of the differences of squares.",
  18967. "p": [
  18968. {
  18969. "name": "array_x",
  18970. "detail": "The array or range of values whose squares will be reduced by the squares of corresponding entries in `array_y` and added together."
  18971. },
  18972. {
  18973. "name": "array_y",
  18974. "detail": "The array or range of values whose squares will be subtracted from the squares of corresponding entries in `array_x` and added together."
  18975. }
  18976. ]
  18977. },
  18978. "SUMX2PY2": {
  18979. "d": "Calculates the sum of the sums of the squares of values in two arrays.",
  18980. "a": "Sum of the sums of squares.",
  18981. "p": [
  18982. {
  18983. "name": "array_x",
  18984. "detail": "The array or range of values whose squares will be added to the squares of corresponding entries in `array_y` and added together."
  18985. },
  18986. {
  18987. "name": "array_y",
  18988. "detail": "The array or range of values whose squares will be added to the squares of corresponding entries in `array_x` and added together."
  18989. }
  18990. ]
  18991. },
  18992. "SUMXMY2": {
  18993. "d": "Calculates the sum of the squares of differences of values in two arrays.",
  18994. "a": "Sum of the squares of differences.",
  18995. "p": [
  18996. {
  18997. "name": "array_x",
  18998. "detail": "The array or range of values that will be reduced by corresponding entries in `array_y`, squared, and added together."
  18999. },
  19000. {
  19001. "name": "array_y",
  19002. "detail": "The array or range of values that will be subtracted from corresponding entries in `array_x`, the result squared, and all such results added together."
  19003. }
  19004. ]
  19005. },
  19006. "TRANSPOSE": {
  19007. "d": "Transposes the rows and columns of an array or range of cells.",
  19008. "a": "Transposes the rows and columns of an array.",
  19009. "p": [
  19010. {
  19011. "name": "array_or_range",
  19012. "detail": "The array or range whose rows and columns will be swapped."
  19013. }
  19014. ]
  19015. },
  19016. "TREND": {
  19017. "d": "Given partial data about a linear trend, fits an ideal linear trend using the least squares method and/or predicts further values.",
  19018. "a": "Fits points to linear trend derived via least-squares.",
  19019. "p": [
  19020. {
  19021. "name": "known_data_y",
  19022. "detail": "The array or range containing dependent (y) values that are already known, used to curve fit an ideal linear trend."
  19023. },
  19024. {
  19025. "name": "known_data_x",
  19026. "detail": "The values of the independent variable(s) corresponding with `known_data_y`."
  19027. },
  19028. {
  19029. "name": "new_data_x",
  19030. "detail": "The data points to return the `y` values for on the ideal curve fit."
  19031. },
  19032. {
  19033. "name": "b",
  19034. "detail": "Given a general linear form of `y = m*x+b` for a curve fit, calculates `b` if `TRUE` or forces `b` to be `0` and only calculates the `m` values if `FALSE`, i.e. forces the curve fit to pass through the origin."
  19035. }
  19036. ]
  19037. },
  19038. "FREQUENCY": {
  19039. "d": "Calculates the frequency distribution of a one-column array into specified classes.",
  19040. "a": "The frequency distribution of array.",
  19041. "p": [
  19042. {
  19043. "name": "data",
  19044. "detail": "The array or range containing the values to be counted."
  19045. },
  19046. {
  19047. "name": "classes",
  19048. "detail": "The array or range containing the set of classes."
  19049. }
  19050. ]
  19051. },
  19052. "GROWTH": {
  19053. "d": "Given partial data about an exponential growth trend, fits an ideal exponential growth trend and/or predicts further values.",
  19054. "a": "Fits points to exponential growth trend.",
  19055. "p": [
  19056. {
  19057. "name": "known_data_y",
  19058. "detail": "The array or range containing dependent (y) values that are already known, used to curve fit an ideal exponential growth curve."
  19059. },
  19060. {
  19061. "name": "known_data_x",
  19062. "detail": "The values of the independent variable(s) corresponding with `known_data_y`."
  19063. },
  19064. {
  19065. "name": "new_data_x",
  19066. "detail": "The data points to return the `y` values for on the ideal curve fit."
  19067. },
  19068. {
  19069. "name": "b",
  19070. "detail": "Given a general exponential form of `y = b*m^x` for a curve fit, calculates `b` if `TRUE` or forces `b` to be `1` and only calculates the `m` values if `FALSE`."
  19071. }
  19072. ]
  19073. },
  19074. "LINEST": {
  19075. "d": "Given partial data about a linear trend, calculates various parameters about the ideal linear trend using the least-squares method.",
  19076. "a": "Best-fit linear trend via least-squares.",
  19077. "p": [
  19078. {
  19079. "name": "known_data_y",
  19080. "detail": "The array or range containing dependent (y) values that are already known, used to curve fit an ideal linear trend."
  19081. },
  19082. {
  19083. "name": "known_data_x",
  19084. "detail": "The values of the independent variable(s) corresponding with `known_data_y`."
  19085. },
  19086. {
  19087. "name": "calculate_b",
  19088. "detail": "Given a linear form of `y = m*x+b`, calculates the y-intercept (`b`) if `TRUE`. Otherwise, forces `b` to be `0` and only calculates the `m` values if `FALSE`, i.e. forces the curve fit to pass through the origin."
  19089. },
  19090. {
  19091. "name": "verbose",
  19092. "detail": "A flag specifying whether to return additional regression statistics or only the linear coefficients and the y-intercept (default)."
  19093. }
  19094. ]
  19095. },
  19096. "LOGEST": {
  19097. "d": "Given partial data about an exponential growth curve, calculates various parameters about the best fit ideal exponential growth curve.",
  19098. "a": "Best-fit exponential growth curve.",
  19099. "p": [
  19100. {
  19101. "name": "known_data_y",
  19102. "detail": "The array or range containing dependent (y) values that are already known, used to curve fit an ideal exponential growth curve."
  19103. },
  19104. {
  19105. "name": "known_data_x",
  19106. "detail": "The values of the independent variable(s) corresponding with `known_data_y`."
  19107. },
  19108. {
  19109. "name": "b",
  19110. "detail": "Given a general exponential form of `y = b*m^x` for a curve fit, calculates `b` if `TRUE` or forces `b` to be `1` and only calculates the `m` values if `FALSE`."
  19111. },
  19112. {
  19113. "name": "verbose",
  19114. "detail": "A flag specifying whether to return additional regression statistics or only the calculated coefficient and exponents."
  19115. }
  19116. ]
  19117. },
  19118. "MDETERM": {
  19119. "d": "Returns the matrix determinant of a square matrix specified as an array or range.",
  19120. "a": "Matrix determinant of a square matrix.",
  19121. "p": [
  19122. {
  19123. "name": "square_matrix",
  19124. "detail": "An array or range with an equal number of rows and columns representing a matrix whose determinant will be calculated."
  19125. }
  19126. ]
  19127. },
  19128. "MINVERSE": {
  19129. "d": "Returns the multiplicative inverse of a square matrix specified as an array or range.",
  19130. "a": "Multiplicative inverse of square matrix.",
  19131. "p": [
  19132. {
  19133. "name": "square_matrix",
  19134. "detail": "An array or range with an equal number of rows and columns representing a matrix whose multiplicative inverse will be calculated."
  19135. }
  19136. ]
  19137. },
  19138. "MMULT": {
  19139. "d": "Calculates the matrix product of two matrices specified as arrays or ranges.",
  19140. "a": "The matrix product of two matrices.",
  19141. "p": [
  19142. {
  19143. "name": "matrix1",
  19144. "detail": "The first matrix in the matrix multiplication operation, represented as an array or range."
  19145. },
  19146. {
  19147. "name": "matrix2",
  19148. "detail": "The second matrix in the matrix multiplication operation, represented as an array or range."
  19149. }
  19150. ]
  19151. },
  19152. "SUMPRODUCT": {
  19153. "d": "Calculates the sum of the products of corresponding entries in two equal-sized arrays or ranges.",
  19154. "a": "Sum of products of elements in two arrays.",
  19155. "p": [
  19156. {
  19157. "name": "array1",
  19158. "detail": "The first array or range whose entries will be multiplied with corresponding entries in the second such array or range."
  19159. },
  19160. {
  19161. "name": "array2",
  19162. "detail": "The second array or range whose entries will be multiplied with corresponding entries in the first such array or range."
  19163. }
  19164. ]
  19165. },
  19166. "ISFORMULA": {
  19167. "d": "Checks whether a value is a formula.",
  19168. "a": "Whether a value is a formula.",
  19169. "p": [
  19170. {
  19171. "name": "cell",
  19172. "detail": "The cell to be verified as containing a formula."
  19173. }
  19174. ]
  19175. },
  19176. "CELL": {
  19177. "d": "Returns the requested information about the specified cell.",
  19178. "a": "Gets information about a cell.",
  19179. "p": [
  19180. {
  19181. "name": "info_type",
  19182. "detail": "The type of information requested (see article for available types)"
  19183. },
  19184. {
  19185. "name": "reference",
  19186. "detail": "The reference to the cell."
  19187. }
  19188. ]
  19189. },
  19190. "NA": {
  19191. "d": 'Returns the "value not available" error, `#N/A`.',
  19192. "a": "The `#N/A` error.",
  19193. "p": []
  19194. },
  19195. "ERROR_TYPE": {
  19196. "d": "Returns a number corresponding to the error value in a different cell.",
  19197. "a": "Error value of cell (as number).",
  19198. "p": [
  19199. {
  19200. "name": "reference",
  19201. "detail": "The cell to find the error number for although you can also provide the error value directly."
  19202. }
  19203. ]
  19204. },
  19205. "ISBLANK": {
  19206. "d": "Checks whether the referenced cell is empty.",
  19207. "a": "Whether the referenced cell is empty.",
  19208. "p": [
  19209. {
  19210. "name": "value",
  19211. "detail": "Reference to the cell that will be checked for emptiness."
  19212. }
  19213. ]
  19214. },
  19215. "ISERR": {
  19216. "d": "Checks whether a value is an error other than `#N/A`.",
  19217. "a": "Whether a value is an error other than `#n/a`.",
  19218. "p": [
  19219. {
  19220. "name": "value",
  19221. "detail": "The value to be verified as an error type other than `#N/A`."
  19222. }
  19223. ]
  19224. },
  19225. "ISERROR": {
  19226. "d": "Checks whether a value is an error.",
  19227. "a": "Whether a value is an error.",
  19228. "p": [
  19229. {
  19230. "name": "value",
  19231. "detail": "The value to be verified as an error type."
  19232. }
  19233. ]
  19234. },
  19235. "ISLOGICAL": {
  19236. "d": "Checks whether a value is `TRUE` or `FALSE`.",
  19237. "a": "Whether a value is `true` or `false`.",
  19238. "p": [
  19239. {
  19240. "name": "value",
  19241. "detail": "The value to be verified as a logical `TRUE` or `FALSE`."
  19242. }
  19243. ]
  19244. },
  19245. "ISNA": {
  19246. "d": "Checks whether a value is the error `#N/A`.",
  19247. "a": "Whether a value is the error `#n/a`.",
  19248. "p": [
  19249. {
  19250. "name": "value",
  19251. "detail": "The value to be compared with the error value `#N/A`."
  19252. }
  19253. ]
  19254. },
  19255. "ISNONTEXT": {
  19256. "d": "Checks whether a value is non-textual.",
  19257. "a": "Whether a value is non-textual.",
  19258. "p": [
  19259. {
  19260. "name": "value",
  19261. "detail": "The value to be checked."
  19262. }
  19263. ]
  19264. },
  19265. "ISNUMBER": {
  19266. "d": "Checks whether a value is a number.",
  19267. "a": "Whether a value is a number.",
  19268. "p": [
  19269. {
  19270. "name": "value",
  19271. "detail": "The value to be verified as a number."
  19272. }
  19273. ]
  19274. },
  19275. "ISREF": {
  19276. "d": "Checks whether a value is a valid cell reference.",
  19277. "a": "Whether a value is a valid cell reference.",
  19278. "p": [
  19279. {
  19280. "name": "value",
  19281. "detail": "The value to be verified as a cell reference."
  19282. }
  19283. ]
  19284. },
  19285. "ISTEXT": {
  19286. "d": "Checks whether a value is text.",
  19287. "a": "Whether a value is text.",
  19288. "p": [
  19289. {
  19290. "name": "value",
  19291. "detail": "The value to be verified as text."
  19292. }
  19293. ]
  19294. },
  19295. "TYPE": {
  19296. "d": "Returns a number associated with the type of data passed into the function.",
  19297. "a": "Get the type of a value.",
  19298. "p": [
  19299. {
  19300. "name": "value",
  19301. "detail": "The value whose type is to be determined."
  19302. }
  19303. ]
  19304. },
  19305. "N": {
  19306. "d": "Returns the argument provided as a number. Text is converted to 0 and errors are returned as-is.",
  19307. "a": "Argument provided as a number.",
  19308. "p": [
  19309. {
  19310. "name": "value",
  19311. "detail": "The argument to be converted to a number."
  19312. }
  19313. ]
  19314. },
  19315. "TO_DATE": {
  19316. "d": "Converts a provided number to a date.",
  19317. "a": "Converts a provided number to a date.",
  19318. "p": [
  19319. {
  19320. "name": "value",
  19321. "detail": "The argument or reference to a cell to be converted to a date."
  19322. }
  19323. ]
  19324. },
  19325. "TO_PURE_NUMBER": {
  19326. "d": "Converts a provided date/time, percentage, currency or other formatted numeric value to a pure number without formatting.",
  19327. "a": "Converts any numeric value to a pure number.",
  19328. "p": [
  19329. {
  19330. "name": "value",
  19331. "detail": "The argument or reference to a cell to be converted to a pure number."
  19332. }
  19333. ]
  19334. },
  19335. "TO_TEXT": {
  19336. "d": "Converts a provided numeric value to a text value.",
  19337. "a": "Converts a provided numeric value to a text value.",
  19338. "p": [
  19339. {
  19340. "name": "value",
  19341. "detail": "The argument or reference to a cell to be converted to text."
  19342. }
  19343. ]
  19344. },
  19345. "TO_DOLLARS": {
  19346. "d": "Converts a provided number to a dollar value.",
  19347. "a": "Converts a provided number to a dollar value.",
  19348. "p": [
  19349. {
  19350. "name": "value",
  19351. "detail": "The argument or reference to a cell to be converted to a dollar value."
  19352. }
  19353. ]
  19354. },
  19355. "TO_PERCENT": {
  19356. "d": "Converts a provided number to a percentage.",
  19357. "a": "Converts a provided number to a percentage.",
  19358. "p": [
  19359. {
  19360. "name": "value",
  19361. "detail": "The argument or reference to a cell to be converted to a percentage."
  19362. }
  19363. ]
  19364. },
  19365. "DGET": {
  19366. "d": "Returns a single value from a database table-like array or range using a SQL-like query.",
  19367. "a": "Single value from a table-like range.",
  19368. "p": [
  19369. {
  19370. "name": "database",
  19371. "detail": "The array or range containing the data to consider, structured in such a way that the first row contains the labels for each column's values."
  19372. },
  19373. {
  19374. "name": "field",
  19375. "detail": "Indicates which column in `database` contains the values to be extracted and operated on."
  19376. },
  19377. {
  19378. "name": "criteria",
  19379. "detail": "An array or range containing zero or more criteria to filter the `database` values by before operating."
  19380. }
  19381. ]
  19382. },
  19383. "DMAX": {
  19384. "d": "Returns the maximum value selected from a database table-like array or range using a SQL-like query.",
  19385. "a": "Maximum of values from a table-like range.",
  19386. "p": [
  19387. {
  19388. "name": "database",
  19389. "detail": "The array or range containing the data to consider, structured in such a way that the first row contains the labels for each column's values."
  19390. },
  19391. {
  19392. "name": "field",
  19393. "detail": "Indicates which column in `database` contains the values to be extracted and operated on."
  19394. },
  19395. {
  19396. "name": "criteria",
  19397. "detail": "An array or range containing zero or more criteria to filter the `database` values by before operating."
  19398. }
  19399. ]
  19400. },
  19401. "DMIN": {
  19402. "d": "Returns the minimum value selected from a database table-like array or range using a SQL-like query.",
  19403. "a": "Minimum of values from a table-like range.",
  19404. "p": [
  19405. {
  19406. "name": "database",
  19407. "detail": "The array or range containing the data to consider, structured in such a way that the first row contains the labels for each column's values."
  19408. },
  19409. {
  19410. "name": "field",
  19411. "detail": "Indicates which column in `database` contains the values to be extracted and operated on."
  19412. },
  19413. {
  19414. "name": "criteria",
  19415. "detail": "An array or range containing zero or more criteria to filter the `database` values by before operating."
  19416. }
  19417. ]
  19418. },
  19419. "DAVERAGE": {
  19420. "d": "Returns the average of a set of values selected from a database table-like array or range using a SQL-like query.",
  19421. "a": "Average of a set of values from a table-like range.",
  19422. "p": [
  19423. {
  19424. "name": "database",
  19425. "detail": "The array or range containing the data to consider, structured in such a way that the first row contains the labels for each column's values."
  19426. },
  19427. {
  19428. "name": "field",
  19429. "detail": "Indicates which column in `database` contains the values to be extracted and operated on."
  19430. },
  19431. {
  19432. "name": "criteria",
  19433. "detail": "An array or range containing zero or more criteria to filter the `database` values by before operating."
  19434. }
  19435. ]
  19436. },
  19437. "DCOUNT": {
  19438. "d": "Counts numeric values selected from a database table-like array or range using a SQL-like query.",
  19439. "a": "Counts values from a table-like range.",
  19440. "p": [
  19441. {
  19442. "name": "database",
  19443. "detail": "The array or range containing the data to consider, structured in such a way that the first row contains the labels for each column's values."
  19444. },
  19445. {
  19446. "name": "field",
  19447. "detail": "Indicates which column in `database` contains the values to be extracted and operated on."
  19448. },
  19449. {
  19450. "name": "criteria",
  19451. "detail": "An array or range containing zero or more criteria to filter the `database` values by before operating."
  19452. }
  19453. ]
  19454. },
  19455. "DCOUNTA": {
  19456. "d": "Counts values, including text, selected from a database table-like array or range using a SQL-like query.",
  19457. "a": "Counts values and text from a table-like range.",
  19458. "p": [
  19459. {
  19460. "name": "database",
  19461. "detail": "The array or range containing the data to consider, structured in such a way that the first row contains the labels for each column's values."
  19462. },
  19463. {
  19464. "name": "field",
  19465. "detail": "Indicates which column in `database` contains the values to be extracted and operated on."
  19466. },
  19467. {
  19468. "name": "criteria",
  19469. "detail": "An array or range containing zero or more criteria to filter the `database` values by before operating."
  19470. }
  19471. ]
  19472. },
  19473. "DPRODUCT": {
  19474. "d": "Returns the product of values selected from a database table-like array or range using a SQL-like query.",
  19475. "a": "Product of values from a table-like range.",
  19476. "p": [
  19477. {
  19478. "name": "database",
  19479. "detail": "The array or range containing the data to consider, structured in such a way that the first row contains the labels for each column's values."
  19480. },
  19481. {
  19482. "name": "field",
  19483. "detail": "Indicates which column in `database` contains the values to be extracted and operated on."
  19484. },
  19485. {
  19486. "name": "criteria",
  19487. "detail": "An array or range containing zero or more criteria to filter the `database` values by before operating."
  19488. }
  19489. ]
  19490. },
  19491. "DSTDEV": {
  19492. "d": "Returns the standard deviation of a population sample selected from a database table-like array or range using a SQL-like query.",
  19493. "a": "Standard deviation of population sample from table.",
  19494. "p": [
  19495. {
  19496. "name": "database",
  19497. "detail": "The array or range containing the data to consider, structured in such a way that the first row contains the labels for each column's values."
  19498. },
  19499. {
  19500. "name": "field",
  19501. "detail": "Indicates which column in `database` contains the values to be extracted and operated on."
  19502. },
  19503. {
  19504. "name": "criteria",
  19505. "detail": "An array or range containing zero or more criteria to filter the `database` values by before operating."
  19506. }
  19507. ]
  19508. },
  19509. "DSTDEVP": {
  19510. "d": "Returns the standard deviation of an entire population selected from a database table-like array or range using a SQL-like query.",
  19511. "a": "Standard deviation of entire population from table.",
  19512. "p": [
  19513. {
  19514. "name": "database",
  19515. "detail": "The array or range containing the data to consider, structured in such a way that the first row contains the labels for each column's values."
  19516. },
  19517. {
  19518. "name": "field",
  19519. "detail": "Indicates which column in `database` contains the values to be extracted and operated on."
  19520. },
  19521. {
  19522. "name": "criteria",
  19523. "detail": "An array or range containing zero or more criteria to filter the `database` values by before operating."
  19524. }
  19525. ]
  19526. },
  19527. "DSUM": {
  19528. "d": "Returns the sum of values selected from a database table-like array or range using a SQL-like query.",
  19529. "a": "Sum of values from a table-like range.",
  19530. "p": [
  19531. {
  19532. "name": "database",
  19533. "detail": "The array or range containing the data to consider, structured in such a way that the first row contains the labels for each column's values."
  19534. },
  19535. {
  19536. "name": "field",
  19537. "detail": "Indicates which column in `database` contains the values to be extracted and operated on."
  19538. },
  19539. {
  19540. "name": "criteria",
  19541. "detail": "An array or range containing zero or more criteria to filter the `database` values by before operating."
  19542. }
  19543. ]
  19544. },
  19545. "DVAR": {
  19546. "d": "Returns the variance of a population sample selected from a database table-like array or range using a SQL-like query.",
  19547. "a": "Variance of population sample from table-like range.",
  19548. "p": [
  19549. {
  19550. "name": "database",
  19551. "detail": "The array or range containing the data to consider, structured in such a way that the first row contains the labels for each column's values."
  19552. },
  19553. {
  19554. "name": "field",
  19555. "detail": "Indicates which column in `database` contains the values to be extracted and operated on."
  19556. },
  19557. {
  19558. "name": "criteria",
  19559. "detail": "An array or range containing zero or more criteria to filter the `database` values by before operating."
  19560. }
  19561. ]
  19562. },
  19563. "DVARP": {
  19564. "d": "Returns the variance of an entire population selected from a database table-like array or range using a SQL-like query.",
  19565. "a": "Variance of a population from a table-like range.",
  19566. "p": [
  19567. {
  19568. "name": "database",
  19569. "detail": "The array or range containing the data to consider, structured in such a way that the first row contains the labels for each column's values."
  19570. },
  19571. {
  19572. "name": "field",
  19573. "detail": "Indicates which column in `database` contains the values to be extracted and operated on."
  19574. },
  19575. {
  19576. "name": "criteria",
  19577. "detail": "An array or range containing zero or more criteria to filter the `database` values by before operating."
  19578. }
  19579. ]
  19580. },
  19581. "AGE_BY_IDCARD": {
  19582. "d": "Calculate the age based on the Chinese ID number. Support 15 or 18",
  19583. "a": "Get age based on ID number.",
  19584. "p": [
  19585. {
  19586. "name": "ID number",
  19587. "detail": "15-digit or 18-digit ID number or range."
  19588. },
  19589. {
  19590. "name": "Deadline",
  19591. "detail": "The deadline or range of age calculation. The default is the current day."
  19592. }
  19593. ]
  19594. },
  19595. "SEX_BY_IDCARD": {
  19596. "d": "Calculate gender based on Chinese ID number. Support 15 or 18",
  19597. "a": "Get gender based on ID number.",
  19598. "p": [
  19599. {
  19600. "name": "ID number",
  19601. "detail": "15-digit or 18-digit ID number or range."
  19602. }
  19603. ]
  19604. },
  19605. "BIRTHDAY_BY_IDCARD": {
  19606. "d": "Calculate the birthday based on the Chinese ID number. Support 15 or 18",
  19607. "a": "Get the birthday based on the ID number.",
  19608. "p": [
  19609. {
  19610. "name": "ID number",
  19611. "detail": "15-digit or 18-digit ID number or range."
  19612. },
  19613. {
  19614. "name": "Birthday format",
  19615. "detail": "Date type, default:0:[1900/01/01], 1:[1900-01-01], 2:[1900\u5E741\u67081\u65E5]"
  19616. }
  19617. ]
  19618. },
  19619. "PROVINCE_BY_IDCARD": {
  19620. "d": "Calculate the province of birthplace based on the Chinese ID number. Support 15 or 18",
  19621. "a": "Get the province of birthplace based on the ID number.",
  19622. "p": [
  19623. {
  19624. "name": "ID number",
  19625. "detail": "15-digit or 18-digit ID number or range."
  19626. }
  19627. ]
  19628. },
  19629. "CITY_BY_IDCARD": {
  19630. "d": "Calculate the city of birthplace based on the Chinese ID number. Support 15 or 18",
  19631. "a": "Get the city of birthplace based on the ID number.",
  19632. "p": [
  19633. {
  19634. "name": "ID number",
  19635. "detail": "15-digit or 18-digit ID number or range."
  19636. }
  19637. ]
  19638. },
  19639. "STAR_BY_IDCARD": {
  19640. "d": "Calculate the constellation based on the Chinese ID number. Support 15 or 18",
  19641. "a": "Get the constellation based on the ID number.",
  19642. "p": [
  19643. {
  19644. "name": "ID number",
  19645. "detail": "15-digit or 18-digit ID number or range."
  19646. }
  19647. ]
  19648. },
  19649. "ANIMAL_BY_IDCARD": {
  19650. "d": "Calculate the zodiac (rat, ox, tiger, rabbit...) based on the Chinese ID number. Support 15 or 18",
  19651. "a": "Get the zodiac according to the ID number.",
  19652. "p": [
  19653. {
  19654. "name": "ID number",
  19655. "detail": "15-digit or 18-digit ID number or range."
  19656. }
  19657. ]
  19658. },
  19659. "ISIDCARD": {
  19660. "d": "Verify that the format of the ID card is correct. Support 15 or 18",
  19661. "a": "Verify the correctness of the ID card format.",
  19662. "p": [
  19663. {
  19664. "name": "ID number",
  19665. "detail": "15-digit or 18-digit ID number or range."
  19666. }
  19667. ]
  19668. },
  19669. "DM_TEXT_CUTWORD": {
  19670. "d": "Text segmentation. Split a series of words into a series of individual words",
  19671. "a": "Chinese text segmentation.",
  19672. "p": [
  19673. {
  19674. "name": "Text",
  19675. "detail": "Any text that needs word segmentation."
  19676. },
  19677. {
  19678. "name": "Word segmentation mode",
  19679. "detail": "The default is 0[precision mode], 1[full mode], 2[search engine mode]."
  19680. }
  19681. ]
  19682. },
  19683. "DM_TEXT_TFIDF": {
  19684. "d": "Use tf-idf algorithm for keyword extraction. Identify keywords from a series of text",
  19685. "a": "tf-idf keyword recognition.",
  19686. "p": [
  19687. {
  19688. "name": "Text",
  19689. "detail": "Any text that needs word segmentation."
  19690. },
  19691. {
  19692. "name": "Number of keywords",
  19693. "detail": "The number of keywords returned by the algorithm, the default is 20"
  19694. },
  19695. {
  19696. "name": "Corpus",
  19697. "detail": "Select a corpus in a specific field, the default is 0[General], 1[Finance], 2[Medical]"
  19698. }
  19699. ]
  19700. },
  19701. "DM_TEXT_TEXTRANK": {
  19702. "d": "Use TextRank algorithm to extract keywords. Identify keywords from a series of text",
  19703. "a": "TextRank keyword recognition.",
  19704. "p": [
  19705. {
  19706. "name": "Text",
  19707. "detail": "Any text that needs word segmentation."
  19708. },
  19709. {
  19710. "name": "Number of keywords",
  19711. "detail": "The number of keywords returned by the algorithm, the default is 20"
  19712. },
  19713. {
  19714. "name": "Corpus",
  19715. "detail": "Select a corpus in a specific field, the default is 0[General], 1[Finance], 2[Medical]"
  19716. }
  19717. ]
  19718. },
  19719. "DATA_CN_STOCK_CLOSE": {
  19720. "d": "According to the stock code and date, return the corresponding stock closing price of A shares.",
  19721. "a": "Returns the closing price of stock.",
  19722. "p": [
  19723. {
  19724. "name": "Stock code",
  19725. "detail": "6-digit stock code, required."
  19726. },
  19727. {
  19728. "name": "Date",
  19729. "detail": "The trading day of the stock, the default is the latest trading day"
  19730. },
  19731. {
  19732. "name": "Reversion and exclusion",
  19733. "detail": "Select the ex right restoration type of the stock, default to 0 [former reversion], 1 [original price], 2 [post reversion]"
  19734. }
  19735. ]
  19736. },
  19737. "DATA_CN_STOCK_OPEN": {
  19738. "d": "According to the stock code and date, return the opening price of stock.",
  19739. "a": "Return the opening price of a shares.",
  19740. "p": [
  19741. {
  19742. "name": "Stock code",
  19743. "detail": "6-digit stock code, required."
  19744. },
  19745. {
  19746. "name": "Date",
  19747. "detail": "The trading day of the stock, the default is the latest trading day"
  19748. },
  19749. {
  19750. "name": "Reversion and exclusion",
  19751. "detail": "Select the ex right restoration type of the stock, default to 0 [former reversion], 1 [original price], 2 [post reversion]"
  19752. }
  19753. ]
  19754. },
  19755. "DATA_CN_STOCK_MAX": {
  19756. "d": "According to the stock code and date, return the highest price of stock.",
  19757. "a": "Return the highest price of stock.",
  19758. "p": [
  19759. {
  19760. "name": "Stock code",
  19761. "detail": "6-digit stock code, required."
  19762. },
  19763. {
  19764. "name": "Date",
  19765. "detail": "The trading day of the stock, the default is the latest trading day"
  19766. },
  19767. {
  19768. "name": "Reversion and exclusion",
  19769. "detail": "Select the ex right restoration type of the stock, default to 0 [former reversion], 1 [original price], 2 [post reversion]"
  19770. }
  19771. ]
  19772. },
  19773. "DATA_CN_STOCK_MIN": {
  19774. "d": "According to the stock code and date, return the lowest price of stock.",
  19775. "a": "Returns the lowest price of stock.",
  19776. "p": [
  19777. {
  19778. "name": "Stock code",
  19779. "detail": "6-digit stock code, required."
  19780. },
  19781. {
  19782. "name": "Date",
  19783. "detail": "The trading day of the stock, the default is the latest trading day"
  19784. },
  19785. {
  19786. "name": "Reversion and exclusion",
  19787. "detail": "Select the ex right restoration type of the stock, default to 0 [former reversion], 1 [original price], 2 [post reversion]"
  19788. }
  19789. ]
  19790. },
  19791. "DATA_CN_STOCK_VOLUMN": {
  19792. "d": "According to the stock code and date, return the corresponding stock trading volume of A shares.",
  19793. "a": "Returns the corresponding stock trading volume of A shares.",
  19794. "p": [
  19795. {
  19796. "name": "Stock code",
  19797. "detail": "6-digit stock code, required."
  19798. },
  19799. {
  19800. "name": "Date",
  19801. "detail": "The trading day of the stock, the default is the latest trading day"
  19802. },
  19803. {
  19804. "name": "Reversion and exclusion",
  19805. "detail": "Select the ex right restoration type of the stock, default to 0 [former reversion], 1 [original price], 2 [post reversion]"
  19806. }
  19807. ]
  19808. },
  19809. "DATA_CN_STOCK_AMOUNT": {
  19810. "d": "According to the stock code and date, return the corresponding stock turnover of A shares.",
  19811. "a": "Returns the corresponding stock turnover of A shares.",
  19812. "p": [
  19813. {
  19814. "name": "Stock code",
  19815. "detail": "6-digit stock code, required."
  19816. },
  19817. {
  19818. "name": "Date",
  19819. "detail": "The trading day of the stock, the default is the latest trading day"
  19820. },
  19821. {
  19822. "name": "Reversion and exclusion",
  19823. "detail": "Select the ex right restoration type of the stock, default to 0 [former reversion], 1 [original price], 2 [post reversion]"
  19824. }
  19825. ]
  19826. },
  19827. "ISDATE": {
  19828. "d": "Returns whether a value is a date.",
  19829. "a": "Whether a value is a date.",
  19830. "p": [
  19831. {
  19832. "name": "value",
  19833. "detail": "The value to be verified as a date."
  19834. }
  19835. ]
  19836. },
  19837. "LINESPLINES": {
  19838. "d": "Generate sparklines embedded in the cell to describe the continuous trend of data",
  19839. "a": "Generate sparklines line chart",
  19840. "p": [
  19841. {
  19842. "name": "Range",
  19843. "detail": "Range\uFF0CValues can be calculated effectively, such as A1:A20, {1,2,3,4,5}, etc."
  19844. },
  19845. {
  19846. "name": "Line color",
  19847. "detail": "The line color of the line graph can be range A1, color table index value or specific color value. Set it to 0 or false to not display it. It supports regx, rgb, rgba, etc. Default #2ec7c9"
  19848. },
  19849. {
  19850. "name": "Line thickness",
  19851. "detail": "Line thickness of the line graph, the default is 1px"
  19852. },
  19853. {
  19854. "name": "Auxiliary line",
  19855. "detail": "A horizontal line, which can be min, max, avg, median, range or custom value, default 0 none"
  19856. },
  19857. {
  19858. "name": "Auxiliary line color",
  19859. "detail": "Color setting of auxiliary line, same as line color configuration, default #000"
  19860. },
  19861. {
  19862. "name": "Maximum mark",
  19863. "detail": "Identifies the maximum value of the line graph, the same line color configuration, default 0 does not display"
  19864. },
  19865. {
  19866. "name": "Minimum mark",
  19867. "detail": "Identify the minimum value of the line graph, the same line color configuration, default 0 does not display"
  19868. },
  19869. {
  19870. "name": "Mark size",
  19871. "detail": "The maximum and minimum mark size settings, the default is 1.5"
  19872. }
  19873. ]
  19874. },
  19875. "AREASPLINES": {
  19876. "d": "Generate sparklines embedded in the cell area chart, generally used to describe the continuous cumulative value trend of the data",
  19877. "a": "Generate sparklines area chart",
  19878. "p": [
  19879. {
  19880. "name": "Range",
  19881. "detail": "Range\uFF0CValues can be calculated effectively, such as A1:A20, {1,2,3,4,5}, etc."
  19882. },
  19883. {
  19884. "name": "Line color",
  19885. "detail": "The line color of the line graph can be range A1, color table index value or specific color value. Set it to 0 or false to not display it. It supports regx, rgb, rgba, etc. Default #2ec7c9"
  19886. },
  19887. {
  19888. "name": "Fill color",
  19889. "detail": "Form an area chart, the same line color configuration, default 0 does not display"
  19890. },
  19891. {
  19892. "name": "Line thickness",
  19893. "detail": "Line thickness of the line graph, the default is 1px"
  19894. },
  19895. {
  19896. "name": "Auxiliary line",
  19897. "detail": "A horizontal line, which can be min, max, avg, median, range or custom value, default 0 none"
  19898. },
  19899. {
  19900. "name": "Auxiliary line color",
  19901. "detail": "Color setting of auxiliary line, same as line color configuration, default #000"
  19902. }
  19903. ]
  19904. },
  19905. "COLUMNSPLINES": {
  19906. "d": "Generate sparklines embedded in the vertical histogram of cells, generally used to describe the size of discrete data",
  19907. "a": "Generate sparklines vertical histogram",
  19908. "p": [
  19909. {
  19910. "name": "Range",
  19911. "detail": "Range\uFF0CValues can be calculated effectively, such as A1:A20, {1,2,3,4,5}, etc."
  19912. },
  19913. {
  19914. "name": "Bar interval",
  19915. "detail": "The distance between bars, the default is 1"
  19916. },
  19917. {
  19918. "name": "Bar color",
  19919. "detail": "The line color of the line graph can be range A1, color table index value or specific color value. Set it to 0 or false to not display it. It supports regx, rgb, rgba, etc. Default #fc5c5c"
  19920. },
  19921. {
  19922. "name": "Negative bar color",
  19923. "detail": "Negative bar color setting, representing the color of negative value, same as the bar color configuration, default #97b552"
  19924. },
  19925. {
  19926. "name": "Max",
  19927. "detail": "The maximum value of the bar chart, used to standardize the length of the bar chart, the default is to automatically calculate false, auto, null"
  19928. },
  19929. {
  19930. "name": "Color palette",
  19931. "detail": "The color palette can set the color of each bar individually, multiple settings can be set, and two formats are supported: 1 color such as #000, which means that the color of the first bar is black; 2 value range: color, such as -2:# 000 indicates that the bar with a value of -2 is black, 0:5:#000 indicates that the bar with a value of 0-5 is black, and the default is empty"
  19932. }
  19933. ]
  19934. },
  19935. "STACKCOLUMNSPLINES": {
  19936. "d": "Generate sparklines, a cumulative vertical histogram embedded in a cell, generally used to describe the numerical size of multiple dimensions of discrete data",
  19937. "a": "Generate sparklines cumulative vertical histogram",
  19938. "p": [
  19939. {
  19940. "name": "Range",
  19941. "detail": "Range\uFF0CValues can be calculated effectively, such as A1:A20, {1,2,3,4,5}, etc."
  19942. },
  19943. {
  19944. "name": "Stack by column",
  19945. "detail": "If you need to stack by row, set this item to false or 0, the default is 1"
  19946. },
  19947. {
  19948. "name": "Bar interval",
  19949. "detail": "The distance between bars, the default is 1"
  19950. },
  19951. {
  19952. "name": "Max",
  19953. "detail": "The maximum value of the cumulative bar, used to regulate the length of the bar, the default is to automatically calculate false, auto, null"
  19954. },
  19955. {
  19956. "name": "Color palette",
  19957. "detail": "The color palette can individually set the bar color of each dimension, which can be set to the range of A1:A10, etc. The default is #2ec7c9, #fc5c5c, #5ab1ef, #ffb980..."
  19958. }
  19959. ]
  19960. },
  19961. "BARSPLINES": {
  19962. "d": "Generate sparklines embedded in the cell, generally used to describe the size of discrete data",
  19963. "a": "Generate sparklines horizontal bar graph",
  19964. "p": [
  19965. {
  19966. "name": "Range",
  19967. "detail": "Range\uFF0CValues can be calculated effectively, such as A1:A20, {1,2,3,4,5}, etc."
  19968. },
  19969. {
  19970. "name": "Bar interval",
  19971. "detail": "The distance between bars, the default is 1"
  19972. },
  19973. {
  19974. "name": "Bar color",
  19975. "detail": "The line color of the line graph can be range A1, color table index value or specific color value. Set it to 0 or false to not display it. It supports regx, rgb, rgba, etc. Default #fc5c5c"
  19976. },
  19977. {
  19978. "name": "Negative bar color",
  19979. "detail": "Negative bar color setting, representing the color of negative value, same as the bar color configuration, default #97b552"
  19980. },
  19981. {
  19982. "name": "Max",
  19983. "detail": "The maximum value of the bar chart, used to standardize the length of the bar chart, the default is to automatically calculate false, auto, null"
  19984. },
  19985. {
  19986. "name": "Color palette",
  19987. "detail": "The color palette can set the color of each bar individually, multiple settings can be set, and two formats are supported: 1 color such as #000, which means that the color of the first bar is black; 2 value range: color, such as -2:# 000 indicates that the bar with a value of -2 is black, 0:5:#000 indicates that the bar with a value of 0-5 is black, and the default is empty"
  19988. }
  19989. ]
  19990. },
  19991. "STACKBARSPLINES": {
  19992. "d": "Generate sparklines, a cumulative horizontal bar graph embedded in a cell, which is generally used to describe the numerical size of multiple dimensions of discrete data",
  19993. "a": "Generate sparklines cumulative horizontal bar graph",
  19994. "p": [
  19995. {
  19996. "name": "Range",
  19997. "detail": "Range\uFF0CValues can be calculated effectively, such as A1:A20, {1,2,3,4,5}, etc."
  19998. },
  19999. {
  20000. "name": "Stack by column",
  20001. "detail": "If you need to stack by row, set this item to false or 0, the default is 1"
  20002. },
  20003. {
  20004. "name": "Bar interval",
  20005. "detail": "The distance between bars, the default is 1"
  20006. },
  20007. {
  20008. "name": "Max",
  20009. "detail": "The maximum value of the cumulative bar, used to regulate the length of the bar, the default is to automatically calculate false, auto, null"
  20010. },
  20011. {
  20012. "name": "Color palette",
  20013. "detail": "The color palette can individually set the bar color of each dimension, which can be set to the range of A1:A10, etc. The default is #2ec7c9, #fc5c5c, #5ab1ef, #ffb980..."
  20014. }
  20015. ]
  20016. },
  20017. "DISCRETESPLINES": {
  20018. "d": "Generate sparklines embedded in the cell, generally used to describe the trend of discrete data",
  20019. "a": "Generate sparklines discrete graph",
  20020. "p": [
  20021. {
  20022. "name": "Range",
  20023. "detail": "Range\uFF0CValues can be calculated effectively, such as A1:A20, {1,2,3,4,5}, etc."
  20024. },
  20025. {
  20026. "name": "Segmentation threshold",
  20027. "detail": "Discrete graph column color distinction, for example: if the value is 0, blue is greater than 0, red is less than 0, and the default is 0"
  20028. },
  20029. {
  20030. "name": "Above threshold color",
  20031. "detail": "The line color of the line graph can be range A1, color table index value or specific color value. Set it to 0 or false to not display it. It supports regx, rgb, rgba, etc. Default #2ec7c9"
  20032. },
  20033. {
  20034. "name": "Below threshold color",
  20035. "detail": "The color setting of the bar below the threshold, the same as the color above the threshold, default #fc5c5c"
  20036. }
  20037. ]
  20038. },
  20039. "TRISTATESPLINES": {
  20040. "d": "Generate sparklines, a three-state graph embedded in the cell, which is generally used to describe the trend of three situations, such as winning, losing, or drawing.",
  20041. "a": "Generate sparklines three-state graph",
  20042. "p": [
  20043. {
  20044. "name": "Range",
  20045. "detail": "Range\uFF0CValues can be calculated effectively, such as A1:A20, {1,2,3,4,5}, etc."
  20046. },
  20047. {
  20048. "name": "Bar interval",
  20049. "detail": "The distance between bars, the default is 1"
  20050. },
  20051. {
  20052. "name": "Bar color",
  20053. "detail": "The line color of the line graph can be range A1, color table index value or specific color value. Set it to 0 or false to not display it. It supports regx, rgb, rgba, etc. Default #fc5c5c"
  20054. },
  20055. {
  20056. "name": "Negative bar color",
  20057. "detail": "Negative bar color setting, representing the color of negative value, same as the bar color configuration, default #97b552"
  20058. },
  20059. {
  20060. "name": "Zero value bar color",
  20061. "detail": "Zero value bar color setting, representing 0 value color, the same color configuration of the bar, default #999"
  20062. },
  20063. {
  20064. "name": "Color palette",
  20065. "detail": "The color palette can set the color of each bar individually, multiple settings can be set, and two formats are supported: 1 color such as #000, which means that the color of the first bar is black; 2 value range: color, such as -2:# 000 indicates that the bar with a value of -2 is black, 0:5:#000 indicates that the bar with a value of 0-5 is black, and the default is empty"
  20066. }
  20067. ]
  20068. },
  20069. "PIESPLINES": {
  20070. "d": "Generate sparklines pie chart embedded in the cell, generally used to describe the proportion of data",
  20071. "a": "Generate sparklines pie chart",
  20072. "p": [
  20073. {
  20074. "name": "Range",
  20075. "detail": "Range\uFF0CValues can be calculated effectively, such as A1:A20, {1,2,3,4,5}, etc."
  20076. },
  20077. {
  20078. "name": "Rotation angle",
  20079. "detail": "The rotation angle of the pie chart, the default is 0"
  20080. },
  20081. {
  20082. "name": "border",
  20083. "detail": "Pie chart border size, default is none 0"
  20084. },
  20085. {
  20086. "name": "Border color",
  20087. "detail": "The border color of the pie chart, the default is #000"
  20088. },
  20089. {
  20090. "name": "Color palette",
  20091. "detail": "The color of the slice can be set in the palette, which can be set to the range of A1:A10, etc. The default is #2ec7c9, #fc5c5c, #5ab1ef, #ffb980..."
  20092. }
  20093. ]
  20094. },
  20095. "BOXSPLINES": {
  20096. "d": "Generate sparklines embedded in the cell box plot, generally used to describe the statistical distribution of the data set",
  20097. "a": "Generate sparklines box plot",
  20098. "p": [
  20099. {
  20100. "name": "Range",
  20101. "detail": "Range\uFF0CValues can be calculated effectively, such as A1:A20, {1,2,3,4,5}, etc."
  20102. },
  20103. {
  20104. "name": "Outlier ratio",
  20105. "detail": "The threshold range of outliers, if it is 0 or false, it will not be displayed, the default is 1.5 times"
  20106. },
  20107. {
  20108. "name": "Target value",
  20109. "detail": "The target value setting on the box plot, the default is false and does not display"
  20110. },
  20111. {
  20112. "name": "Point size",
  20113. "detail": "The radius of the target point and outlier is set, the default is 1.5"
  20114. }
  20115. ]
  20116. },
  20117. "BULLETSPLINES": {
  20118. "d": "Generate sparklines embedded in the cell, generally used to describe the task achievement rate",
  20119. "a": "Generating sparklines bullets",
  20120. "p": [
  20121. {
  20122. "name": "Target",
  20123. "detail": "The numerical value can be calculated effectively for the achieved target value, such as A1, 100, etc."
  20124. },
  20125. {
  20126. "name": "achieved",
  20127. "detail": "Only when the value is completed can the value be calculated effectively, such as A1, 100, etc."
  20128. },
  20129. {
  20130. "name": "Contrast",
  20131. "detail": "Comparative values, such as excess, minimum, and bottom line for awards, can be effectively calculated, such as A1, 100, etc. You can set up to 9 comparison values"
  20132. }
  20133. ]
  20134. },
  20135. "COMPOSESPLINES": {
  20136. "d": "Support multiple types of pictures in the same cell, each parameter represents a sparklines diagram",
  20137. "a": "Combine sparklines graphs into one cell",
  20138. "p": [
  20139. {
  20140. "name": "config",
  20141. "detail": "Sparklines chart settings, such as A1:A20, a completed pie chart, line chart settings, etc."
  20142. }
  20143. ]
  20144. },
  20145. "SORT": {
  20146. "d": "Sorts the rows of a given array or range by the values in one or more columns.",
  20147. "a": "Sorts rows of range by specified column.",
  20148. "p": [
  20149. {
  20150. "name": "range",
  20151. "detail": "The data to be sorted."
  20152. },
  20153. {
  20154. "name": "sort_column",
  20155. "detail": "The index of the column in `range` or a range outside of `range` containing the values by which to sort."
  20156. },
  20157. {
  20158. "name": "is_ascending",
  20159. "detail": "`TRUE` or `FALSE` indicating whether to sort `sort_column` in ascending order. `FALSE` sorts in descending order."
  20160. },
  20161. {
  20162. "name": "sort_column2",
  20163. "detail": "Additional columns."
  20164. }
  20165. ]
  20166. },
  20167. "FILTER": {
  20168. "d": "Returns a filtered version of the source range, returning only rows or columns which meet the specified conditions.",
  20169. "a": "Filters a range based off provided conditions.",
  20170. "p": [
  20171. {
  20172. "name": "range",
  20173. "detail": "The data to be filtered."
  20174. },
  20175. {
  20176. "name": "condition1",
  20177. "detail": "A column or row containing true or false values corresponding to the first column or row of `range`, or an array formula evaluating to true or false."
  20178. },
  20179. {
  20180. "name": "condition2",
  20181. "detail": "Additional rows or columns containing boolean values `TRUE` or `FALSE` indicating whether the corresponding row or column in `range` should pass through `FILTER`. Can also contain array formula expressions which evaluate to such rows or columns. All conditions must be of the same type (row or column). Mixing row conditions and column conditions is not permitted."
  20182. }
  20183. ]
  20184. },
  20185. "UNIQUE": {
  20186. "d": "Returns unique rows in the provided source range, discarding duplicates. Rows are returned in the order in which they first appear in the source range.",
  20187. "a": "Unique rows in the provided source range.",
  20188. "p": [
  20189. {
  20190. "name": "range",
  20191. "detail": "The data to filter by unique entries."
  20192. },
  20193. {
  20194. "name": "by_col",
  20195. "detail": "[Option] - Logical value, indicating how to compare; by row = FALSE() or omitted; by column = TRUE()."
  20196. },
  20197. {
  20198. "name": "occurs_once",
  20199. "detail": "[Option] - Logical value, only one occurrence in the unique value is returned = TRUE(); including all unique values = FALSE() or omitted."
  20200. }
  20201. ]
  20202. },
  20203. "RANDARRAY": {
  20204. "d": "Returns a grid of random numbers between 0 inclusive and 1 exclusive. The grid size will match the provided rows and columns arguments. If neither rows nor columns are provided, then the grid will be size 1 x 1.",
  20205. "a": "Returns a grid of random numbers.",
  20206. "p": [
  20207. {
  20208. "name": "rows",
  20209. "detail": "The number of rows to populate with a random number."
  20210. },
  20211. {
  20212. "name": "columns",
  20213. "detail": "The number of columns to populate with a random number."
  20214. }
  20215. ]
  20216. },
  20217. "SEQUENCE": {
  20218. "d": "Returns a grid of sequential numbers starting at a specified start value and increasing by a specified step size. By default, the sequence starts at and increases by 1.",
  20219. "a": "Returns a grid of sequential numbers.",
  20220. "p": [
  20221. {
  20222. "name": "rows",
  20223. "detail": "The number of rows in the function's resulting grid."
  20224. },
  20225. {
  20226. "name": "columns",
  20227. "detail": "The number of columns in the function's resulting grid. If omitted, the result grid will have 1 column."
  20228. },
  20229. {
  20230. "name": "start",
  20231. "detail": "The number, at which to start the sequence. If omitted, the sequence will start at 1."
  20232. },
  20233. {
  20234. "name": "step",
  20235. "detail": "The amount each value in the sequence will differ by. If omitted, each value will differ by 1."
  20236. }
  20237. ]
  20238. },
  20239. "EVALUATE": {
  20240. "d": "Evaluate a formula or expression expressed in words and return the result",
  20241. "a": "Evaluate according to literal formula or expression.",
  20242. "p": [
  20243. {
  20244. "name": "expression",
  20245. "detail": "Formula or expression"
  20246. }
  20247. ]
  20248. },
  20249. "REMOTE": {
  20250. "d": "Calls a function on a remote server",
  20251. "a": "Calls a function on a remote back end server/API.",
  20252. "p": [
  20253. {
  20254. "name": "remote_expression",
  20255. "detail": "Formula"
  20256. }
  20257. ]
  20258. }
  20259. },
  20260. toolbar: {
  20261. undo: "Deshacer",
  20262. redo: "Rehacer",
  20263. paintFormat: "Clonar formato",
  20264. currencyFormat: "Formato de moneda",
  20265. percentageFormat: "Formato de porcentaje",
  20266. numberDecrease: "Menos decimales",
  20267. numberIncrease: "M\xE1s decimales",
  20268. moreFormats: "M\xE1s formatos",
  20269. font: "Fuente",
  20270. fontSize: "Tama\xF1o Fuente",
  20271. bold: "Negrita (Ctrl+B)",
  20272. italic: "It\xE1lica (Ctrl+I)",
  20273. strikethrough: "Tachar (Alt+Shift+5)",
  20274. underline: "Guion bajo",
  20275. textColor: "Color texto",
  20276. chooseColor: "elegir color",
  20277. resetColor: "Reinicializar",
  20278. customColor: "PERSONALIZADO",
  20279. alternatingColors: "Colores alternos",
  20280. confirmColor: "Vale",
  20281. cancelColor: "Cancelar",
  20282. collapse: "Recoger",
  20283. fillColor: "Color de relleno",
  20284. border: "Borde",
  20285. borderStyle: "Estilo Borde",
  20286. mergeCell: "Juntar celdas",
  20287. chooseMergeType: "Elegir tipo de uni\xF3n",
  20288. horizontalAlign: "Alineaci\xF3n Horizontal",
  20289. verticalAlign: "Alineaci\xF3n Vertical",
  20290. alignment: "Alineaci\xF3n",
  20291. textWrap: "Ajuste de texto",
  20292. textWrapMode: "Modo de ajuste de texto",
  20293. textRotate: "Rotar texto",
  20294. textRotateMode: "Modo de rotar texto",
  20295. freezeTopRow: "Fijar fila superior",
  20296. sortAndFilter: "Ordenar y filtrar",
  20297. findAndReplace: "Buscar y reemplazar",
  20298. sum: "SUMA",
  20299. autoSum: "SUMA autom\xE1tica",
  20300. moreFunction: "M\xE1s funciones",
  20301. conditionalFormat: "Formato condicional",
  20302. postil: "Comentario",
  20303. pivotTable: "Tabla Din\xE1mica",
  20304. chart: "Gr\xE1fica",
  20305. screenshot: "Captura de pantalla",
  20306. splitColumn: "Separar texto",
  20307. insertImage: "Insertar imagen",
  20308. dataVerification: "Verificaci\xF3n de datos",
  20309. protection: "Proteger la hoja",
  20310. clearText: "Limpiar color",
  20311. noColorSelectedText: "Ning\xFAn color seleccionado",
  20312. toolMore: "M\xE1s",
  20313. toolLess: "Menos",
  20314. toolClose: "Cerrar",
  20315. toolMoreTip: "M\xE1s funcionalidades",
  20316. moreOptions: "M\xE1s opciones",
  20317. cellFormat: "Configuraci\xF3n formato de celda",
  20318. print: "Imprimir"
  20319. },
  20320. alternatingColors: {
  20321. applyRange: "Aplicar a rango",
  20322. selectRange: "Seleccionar un rango de datos",
  20323. header: "Cabecera",
  20324. footer: "Pie",
  20325. errorInfo: "No se puede realizar esta operaci\xF3n en varias \xE1reas de selecci\xF3n, selecciona una sola \xE1rea y vuelve a intentarlo",
  20326. textTitle: "Estilo Formato",
  20327. custom: "PERSONALIZADO",
  20328. close: "cerrar",
  20329. selectionTextColor: "Haz clic para seleccionar el color del texto",
  20330. selectionCellColor: "Haz clic para seleccionar el color de la celda",
  20331. removeColor: "Eliminar colores alternos",
  20332. colorShow: "color",
  20333. currentColor: "Actual",
  20334. tipSelectRange: "Selecciona la gama de colores alternos",
  20335. errorNoRange: "No hay ning\xFAn rango seleccionado",
  20336. errorExistColors: "Los colores alternos ya existen y no se pueden editar"
  20337. },
  20338. button: {
  20339. confirm: "Vale",
  20340. cancel: "Cancelar",
  20341. close: "Cerrar",
  20342. update: "Actualizar",
  20343. delete: "Eliminar",
  20344. insert: "Insertar",
  20345. prevPage: "Previous",
  20346. nextPage: "Next",
  20347. total: "total:"
  20348. },
  20349. paint: {
  20350. start: "Inicio clonar formato",
  20351. end: "ESC",
  20352. tipSelectRange: "Selecciona el rango que quieres copiar",
  20353. tipNotMulti: "No se puede realizar esta operaci\xF3n en un rango de selecci\xF3n m\xFAltiple"
  20354. },
  20355. format: {
  20356. moreCurrency: "M\xE1s formatos de moneda",
  20357. moreDateTime: "M\xE1s formatos de fecha y hora",
  20358. moreNumber: "M\xE1s formatos de n\xFAmero",
  20359. titleCurrency: "Formatos de moneda",
  20360. decimalPlaces: "Decimales",
  20361. titleDateTime: "Formatos de fecha y hora",
  20362. titleNumber: "Formatos de n\xFAmeros"
  20363. },
  20364. info: {
  20365. detailUpdate: "Nuevo abierto",
  20366. detailSave: "Cache local restaurado",
  20367. row: "",
  20368. column: "",
  20369. loading: "Cargando...",
  20370. copy: "Copiar",
  20371. return: "Salir",
  20372. rename: "Renombrar",
  20373. tips: "Renombrar Libro",
  20374. noName: "Hoja sin t\xEDtulo",
  20375. wait: "esperando actualizaci\xF3n",
  20376. add: "A\xF1adir",
  20377. addLast: "m\xE1s filas al final",
  20378. backTop: "Volver arriba",
  20379. pageInfo: "Total ${total}\uFF0Cp\xE1gina ${totalPage}\uFF0Cactual ${currentPage}",
  20380. nextPage: "Siguiente",
  20381. tipInputNumber: "Introduce el n\xFAmero",
  20382. tipInputNumberLimit: "El rango de aumento est\xE1 limitado a 1-100",
  20383. tipRowHeightLimit: "La altura de la fila debe estar entre 0 ~ 545",
  20384. tipColumnWidthLimit: "El ancho de la columna debe estar entre 0 ~ 2038",
  20385. pageInfoFull: "Total ${total}\uFF0Cp\xE1gina ${totalPage}\uFF0CSe muestran todos los datos"
  20386. },
  20387. currencyDetail: {
  20388. RMB: "RMB",
  20389. USdollar: "D\xF3lar US",
  20390. EUR: "EUR",
  20391. GBP: "GBP",
  20392. HK: "HK",
  20393. JPY: "JPY",
  20394. AlbanianLek: "Albanian Lek",
  20395. AlgerianDinar: "Algerian Dinar",
  20396. Afghani: "Afghani",
  20397. ArgentinePeso: "Argentine Peso",
  20398. UnitedArabEmiratesDirham: "United Arab Emirates Dirham",
  20399. ArubanFlorin: "Aruban Florin",
  20400. OmaniRial: "Omani Rial",
  20401. Azerbaijanimanat: "Azerbaijani manat",
  20402. EgyptianPound: "Egyptian Pound",
  20403. EthiopianBirr: "Ethiopian Birr",
  20404. AngolaKwanza: "Angola Kwanza",
  20405. AustralianDollar: "Australian Dollar",
  20406. Patacas: "Patacas",
  20407. BarbadosDollar: "Barbados Dollar",
  20408. PapuaNewGuineaKina: "Papua New Guinea Kina",
  20409. BahamianDollar: "Bahamian Dollar",
  20410. PakistanRupee: "Pakistan Rupee",
  20411. ParaguayanGuarani: "Paraguayan Guarani",
  20412. BahrainiDinar: "Bahraini Dinar",
  20413. PanamanianBalboa: "Panamanian Balboa",
  20414. Brazilianreal: "Brazilian real",
  20415. Belarusianruble: "Belarusian ruble",
  20416. BermudianDollar: "Bermudian Dollar",
  20417. BulgarianLev: "Bulgarian Lev",
  20418. IcelandKrona: "Iceland Krona",
  20419. BosniaHerzegovinaConvertibleMark: "Bosnia-Herzegovina Convertible Mark",
  20420. PolishZloty: "Polish Zloty",
  20421. Boliviano: "Boliviano",
  20422. BelizeDollar: "Belize Dollar",
  20423. BotswanaPula: "Botswana Pula",
  20424. NotDannuzhamu: "Not Dannuzhamu",
  20425. BurundiFranc: "Burundi Franc",
  20426. NorthKoreanWon: "North Korean Won",
  20427. DanishKrone: "Danish Krone",
  20428. EastCaribbeanDollar: "East Caribbean Dollar",
  20429. DominicaPeso: "Dominica Peso",
  20430. RussianRuble: "Russian Ruble",
  20431. EritreanNakfa: "Eritrean Nakfa",
  20432. CFAfranc: "CFA franc",
  20433. PhilippinePeso: "Philippine Peso",
  20434. FijiDollar: "Fiji Dollar",
  20435. CapeVerdeEscudo: "Cape Verde Escudo",
  20436. FalklandIslandsPound: "Falkland Islands Pound",
  20437. GambianDalasi: "Gambian Dalasi",
  20438. Congolesefranc: "Congolese franc",
  20439. ColombianPeso: "Colombian Peso",
  20440. CostaRicanColon: "Costa Rican Colon",
  20441. CubanPeso: "Cuban Peso",
  20442. Cubanconvertiblepeso: "Cuban convertible peso",
  20443. GuyanaDollar: "Guyana Dollar",
  20444. KazakhstanTenge: "Kazakhstan Tenge",
  20445. Haitiangourde: "Haitian gourde",
  20446. won: "won",
  20447. NetherlandsAntillesGuilder: "Netherlands Antilles Guilder",
  20448. Honduraslempiras: "Honduras lempiras",
  20449. DjiboutiFranc: "Djibouti Franc",
  20450. KyrgyzstanSom: "Kyrgyzstan Som",
  20451. GuineaFranc: "Guinea Franc",
  20452. CanadianDollar: "Canadian Dollar",
  20453. GhanaianCedi: "Ghanaian Cedi",
  20454. Cambodianriel: "Cambodian riel",
  20455. CzechKoruna: "Czech Koruna",
  20456. ZimbabweDollar: "Zimbabwe Dollar",
  20457. QatariRiyal: "Qatari Riyal",
  20458. CaymanIslandsDollar: "Cayman Islands Dollar",
  20459. Comorianfranc: "Comorian franc",
  20460. KuwaitiDinar: "Kuwaiti Dinar",
  20461. CroatianKuna: "Croatian Kuna",
  20462. KenyanShilling: "Kenyan Shilling",
  20463. LesothoLoti: "Lesotho Loti",
  20464. LaoKip: "Lao Kip",
  20465. LebanesePound: "Lebanese Pound",
  20466. Lithuanianlitas: "Lithuanian litas",
  20467. LibyanDinar: "Libyan Dinar",
  20468. LiberianDollar: "Liberian Dollar",
  20469. RwandaFranc: "Rwanda Franc",
  20470. RomanianLeu: "Romanian Leu",
  20471. MalagasyAriary: "Malagasy Ariary",
  20472. MaldivianRufiyaa: "Maldivian Rufiyaa",
  20473. MalawiKwacha: "Malawi Kwacha",
  20474. MalaysianRinggit: "Malaysian Ringgit",
  20475. MacedoniawearingDinar: "Macedonia wearing Dinar",
  20476. MauritiusRupee: "Mauritius Rupee",
  20477. MauritanianOuguiya: "Mauritanian Ouguiya",
  20478. MongolianTugrik: "Mongolian Tugrik",
  20479. BangladeshiTaka: "Bangladeshi Taka",
  20480. PeruvianNuevoSol: "Peruvian Nuevo Sol",
  20481. MyanmarKyat: "Myanmar Kyat",
  20482. MoldovanLeu: "Moldovan Leu",
  20483. MoroccanDirham: "Moroccan Dirham",
  20484. MozambiqueMetical: "Mozambique Metical",
  20485. MexicanPeso: "Mexican Peso",
  20486. NamibianDollar: "Namibian Dollar",
  20487. SouthAfricanRand: "South African Rand",
  20488. SouthSudanesePound: "South Sudanese Pound",
  20489. NicaraguaCordoba: "Nicaragua Cordoba",
  20490. NepaleseRupee: "Nepalese Rupee",
  20491. NigerianNaira: "Nigerian Naira",
  20492. NorwegianKrone: "Norwegian Krone",
  20493. GeorgianLari: "Georgian Lari",
  20494. RMBOffshore: "RMB (Offshore)",
  20495. SwedishKrona: "Swedish Krona",
  20496. SwissFranc: "Swiss Franc",
  20497. SerbianDinar: "Serbian Dinar",
  20498. SierraLeone: "Sierra Leone",
  20499. SeychellesRupee: "Seychelles Rupee",
  20500. SaudiRiyal: "Saudi Riyal",
  20501. SaoTomeDobra: "Sao Tome Dobra",
  20502. SaintHelenapound: "Saint Helena pound",
  20503. SriLankaRupee: "Sri Lanka Rupee",
  20504. SwazilandLilangeni: "Swaziland Lilangeni",
  20505. SudanesePound: "Sudanese Pound",
  20506. Surinamesedollar: "Surinamese dollar",
  20507. SolomonIslandsDollar: "Solomon Islands Dollar",
  20508. SomaliShilling: "Somali Shilling",
  20509. TajikistanSomoni: "Tajikistan Somoni",
  20510. PacificFranc: "Pacific Franc",
  20511. ThaiBaht: "Thai Baht",
  20512. TanzanianShilling: "Tanzanian Shilling",
  20513. TonganPaanga: "Tongan Pa'anga",
  20514. TrinidadandTobagoDollar: "Trinidad and Tobago Dollar",
  20515. TunisianDinar: "Tunisian Dinar",
  20516. TurkishLira: "Turkish Lira",
  20517. VanuatuVatu: "Vanuatu Vatu",
  20518. GuatemalanQuetzal: "Guatemalan Quetzal",
  20519. CommissionBolivar: "Commission Bolivar",
  20520. BruneiDollar: "Brunei Dollar",
  20521. UgandanShilling: "Ugandan Shilling",
  20522. UkrainianHryvnia: "Ukrainian Hryvnia",
  20523. UruguayanPeso: "Uruguayan Peso",
  20524. Uzbekistansom: "Uzbekistan som",
  20525. WesternSamoaTala: "Western Samoa Tala",
  20526. SingaporeDollar: "Singapore Dollar",
  20527. NT: "NT",
  20528. NewZealandDollar: "New Zealand Dollar",
  20529. HungarianForint: "Hungarian Forint",
  20530. SyrianPound: "Syrian Pound",
  20531. JamaicanDollar: "Jamaican Dollar",
  20532. ArmenianDram: "Armenian Dram",
  20533. YemeniRial: "Yemeni Rial",
  20534. IraqiDinar: "Iraqi Dinar",
  20535. IranianRial: "Iranian Rial",
  20536. NewIsraeliShekel: "New Israeli Shekel",
  20537. IndianRupee: "Indian Rupee",
  20538. IndonesianRupiah: "Indonesian Rupiah",
  20539. JordanianDinar: "Jordanian Dinar",
  20540. VND: "VND",
  20541. ZambianKwacha: "Zambian Kwacha",
  20542. GibraltarPound: "Gibraltar Pound",
  20543. ChileanPeso: "Chilean Peso",
  20544. CFAFrancBEAC: "CFA Franc BEAC"
  20545. },
  20546. defaultFmt: [
  20547. {"text": "Autom\xE1tico", "value": "General", "example": ""},
  20548. {"text": "Texto", "value": "@", "example": ""},
  20549. {"text": "", "value": "partir", "example": ""},
  20550. {"text": "N\xFAmero", "value": "##0.00", "example": "1000.12"},
  20551. {"text": "Porcentaje", "value": "#0.00%", "example": "12.21%"},
  20552. {"text": "Cient\xEDfico", "value": "0.00E+00", "example": "1.01E+5"},
  20553. {"text": "", "value": "split", "example": ""},
  20554. {"text": "Contabilidad", "value": "\xA5(0.00)", "example": "\xA5(1200.09)"},
  20555. {"text": "Moneda", "value": "\xA50.00", "example": "\xA51200.09"},
  20556. {"text": "", "value": "partir", "example": ""},
  20557. {"text": "Fecha", "value": "yyyy-MM-dd", "example": "2017-11-29"},
  20558. {"text": "Hora", "value": "hh:mm AM/PM", "example": "3:00 PM"},
  20559. {"text": "Hora 24H", "value": "hh:mm", "example": "15:00"},
  20560. {"text": "Fecha Hora", "value": "yyyy-MM-dd hh:mm AM/PM", "example": "2017-11-29 3:00 PM"},
  20561. {"text": "Fecha Hora 24 H", "value": "yyyy-MM-dd hh:mm", "example": "2017-11-29 15:00"},
  20562. {"text": "", "value": "partir", "example": ""},
  20563. {"text": "Formatos personalizados", "value": "fmtOtherSelf", "example": "m\xE1s"}
  20564. ],
  20565. dateFmtList: [
  20566. {
  20567. "name": "1930-08-05",
  20568. "value": "yyyy-MM-dd"
  20569. },
  20570. {
  20571. "name": "1930/8/5",
  20572. "value": "yyyy/MM/dd"
  20573. },
  20574. {
  20575. "name": "08-05",
  20576. "value": "MM-dd"
  20577. },
  20578. {
  20579. "name": "8-5",
  20580. "value": "M-d"
  20581. },
  20582. {
  20583. "name": "13:30:30",
  20584. "value": "h:mm:ss"
  20585. },
  20586. {
  20587. "name": "13:30",
  20588. "value": "h:mm"
  20589. },
  20590. {
  20591. "name": "PM 01:30",
  20592. "value": "AM/PM hh:mm"
  20593. },
  20594. {
  20595. "name": "PM 1:30",
  20596. "value": "AM/PM h:mm"
  20597. },
  20598. {
  20599. "name": "PM 1:30:30",
  20600. "value": "AM/PM h:mm:ss"
  20601. },
  20602. {
  20603. "name": "08-05 PM 01:30",
  20604. "value": "MM-dd AM/PM hh:mm"
  20605. }
  20606. ],
  20607. fontFamily: {
  20608. MicrosoftYaHei: "YaHei"
  20609. },
  20610. fontarray: ["Times New Roman", "Arial", "Tahoma", "Verdana"],
  20611. fontjson: {"times new roman": 0, "arial": 1, "tahoma": 2, "verdana": 3},
  20612. border: {
  20613. borderTop: "borderTop",
  20614. borderBottom: "borderBottom",
  20615. borderLeft: "borderLeft",
  20616. borderRight: "borderRight",
  20617. borderNone: "borderNone",
  20618. borderAll: "borderAll",
  20619. borderOutside: "borderOutside",
  20620. borderInside: "borderInside",
  20621. borderHorizontal: "borderHorizontal",
  20622. borderVertical: "borderVertical",
  20623. borderColor: "borderColor",
  20624. borderSize: "borderSize"
  20625. },
  20626. merge: {
  20627. mergeAll: "Unir todo",
  20628. mergeV: "Verticalmente",
  20629. mergeH: "Horizontalmente",
  20630. mergeCancel: "Separar",
  20631. overlappingError: "No se pueden fusionar \xE1reas superpuestas",
  20632. partiallyError: "No se puede realizar esta operaci\xF3n en celdas parcialmente unidas"
  20633. },
  20634. align: {
  20635. left: "izquierda",
  20636. center: "centro",
  20637. right: "derecha",
  20638. top: "Arriba",
  20639. middle: "Centro",
  20640. bottom: "Abajo"
  20641. },
  20642. textWrap: {
  20643. "overflow": "Desbordar",
  20644. "wrap": "Ajustar",
  20645. "clip": "Cortar"
  20646. },
  20647. rotation: {
  20648. "none": "Ninguno",
  20649. "angleup": "Ladear Arriba",
  20650. "angledown": "Ladear Abajo",
  20651. "vertical": "Apilar Verticalmente",
  20652. "rotationUp": "Rotar Arriba",
  20653. "rotationDown": "Rotar Abajo"
  20654. },
  20655. freezen: {
  20656. default: "Fijar",
  20657. freezenRow: "Primera Fila",
  20658. freezenColumn: "Primera Columna",
  20659. freezenRC: "Ambas",
  20660. freezenRowRange: "Fijar rango filas",
  20661. freezenColumnRange: "Fijar rango columnas",
  20662. freezenRCRange: "Fijar ambos rangos",
  20663. freezenCancel: "Cancelar",
  20664. noSeletionError: "No hay rango para seleccionar",
  20665. rangeRCOverErrorTitle: "Recordatorio de congelaci\xF3n",
  20666. rangeRCOverError: "El panel de congelaci\xF3n excede el rango visible y puede causar que no funcione correctamente. Reinicie el \xE1rea de congelaci\xF3n."
  20667. },
  20668. sort: {
  20669. "asc": "Ascendente ",
  20670. "desc": "Descendente ",
  20671. "custom": "Ordenaci\xF3n personalizada",
  20672. "hasTitle": "Los datos tienen una fila de encabezado",
  20673. "sortBy": "Ordenar por",
  20674. "addOthers": "A\xF1adir otra columna de ordenaci\xF3n",
  20675. "close": "cerrar",
  20676. "confirm": "ordenar",
  20677. "columnOperation": "Columna",
  20678. "secondaryTitle": "y despu\xE9s por",
  20679. "sortTitle": "Ordenar rango",
  20680. "sortRangeTitle": "Ordenar rango de",
  20681. "sortRangeTitleTo": "a",
  20682. "noRangeError": "No se puede realizar esta operaci\xF3n en m\xFAltiples \xE1reas de selecci\xF3n, selecciona un solo rango e intenta nuevamente",
  20683. "mergeError": "Hay celdas combinadas en la selecci\xF3n, \xA1esta operaci\xF3n no se puede realizar!",
  20684. "columnSortMergeError": "La ordenaci\xF3n de las columnas se extiende a toda la selecci\xF3n de la tabla. Esta operaci\xF3n no puede realizarse si hay celdas fusionadas. Utilice la funci\xF3n de clasificaci\xF3n de la barra de herramientas."
  20685. },
  20686. filter: {
  20687. filter: "crear filtro",
  20688. sortByAsc: "Ordenar A-Z",
  20689. sortByDesc: "Ordenar Z-A",
  20690. filterByColor: "Filtrar por color",
  20691. filterByCondition: "Filtrar por condici\xF3n",
  20692. filterByValues: "Filtrar por valores",
  20693. filiterInputNone: "Ninguno",
  20694. filiterInputTip: "Introduce valor de filtro",
  20695. filiterRangeStart: "",
  20696. filiterRangeStartTip: "Valor para f\xF3rmula",
  20697. filiterRangeEnd: "e",
  20698. filiterRangeEndTip: "Valor para f\xF3rmula",
  20699. filterValueByAllBtn: "Seleccionar todos",
  20700. filterValueByClearBtn: "Limpiar",
  20701. filterValueByInverseBtn: "Invertir",
  20702. filterValueByTip: "filtrar por valores",
  20703. filterConform: "Confirmar",
  20704. filterCancel: "Cancelar",
  20705. clearFilter: "Quitar filtro",
  20706. conditionNone: "Ninguno",
  20707. conditionCellIsNull: "Est\xE1 vac\xEDo",
  20708. conditionCellNotNull: "No est\xE1 vac\xEDo",
  20709. conditionCellTextContain: "El texto contiene",
  20710. conditionCellTextNotContain: "El texto no contiene",
  20711. conditionCellTextStart: "El texto empieza con",
  20712. conditionCellTextEnd: "El texto termina con",
  20713. conditionCellTextEqual: "El texto es exactamente",
  20714. conditionCellDateEqual: "La fecha es",
  20715. conditionCellDateBefore: "La fecha es anterior",
  20716. conditionCellDateAfter: "La fecha es posterior",
  20717. conditionCellGreater: "Mayor que",
  20718. conditionCellGreaterEqual: "Mayor o igual que",
  20719. conditionCellLess: "Menor que",
  20720. conditionCellLessEqual: "Menor o igual que",
  20721. conditionCellEqual: "Es igual a",
  20722. conditionCellNotEqual: "No es igual a",
  20723. conditionCellBetween: "Est\xE1 entre",
  20724. conditionCellNotBetween: "No est\xE1 entre",
  20725. filiterMoreDataTip: "\xA1Gran cantidad de datos! por favor espera",
  20726. filiterMonthText: "Mes",
  20727. filiterYearText: "A\xF1o",
  20728. filiterByColorTip: "Filtrar por color de celda",
  20729. filiterByTextColorTip: "Filtrar por color de fuente",
  20730. filterContainerOneColorTip: "Esta columna contiene solo un color",
  20731. filterDateFormatTip: "Format fecha",
  20732. valueBlank: "(Nulo)",
  20733. mergeError: "Hay celdas combinadas en la selecci\xF3n del filtro, \xA1esta operaci\xF3n no se puede realizar!"
  20734. },
  20735. rightclick: {
  20736. copy: "Copiar",
  20737. copyAs: "Copiar como",
  20738. paste: "Pegar",
  20739. insert: "Insertar",
  20740. delete: "Eliminar",
  20741. deleteCell: "Eliminar celda",
  20742. deleteSelected: "Eliminar seleccionado ",
  20743. hide: "Esconder",
  20744. hideSelected: "Esconder seleccionado ",
  20745. showHide: "Mostrar ocultos ",
  20746. to: "Hacia",
  20747. left: "Izquierda",
  20748. right: "Derecha",
  20749. top: "Arriba",
  20750. bottom: "Abajo",
  20751. moveLeft: "Mover izquierda",
  20752. moveUp: "Mover arriba",
  20753. add: "A\xF1adir",
  20754. row: "Fila",
  20755. column: "Columna",
  20756. width: "Ancho",
  20757. height: "Alto",
  20758. number: "N\xFAmero",
  20759. confirm: "Confirmar",
  20760. orderAZ: "Ordenar A-Z",
  20761. orderZA: "Ordenar Z-A",
  20762. clearContent: "Limpiar contenido",
  20763. matrix: "Operaci\xF3n de Matriz",
  20764. sortSelection: "Ordenar",
  20765. filterSelection: "Filtrar",
  20766. chartGeneration: "Crear gr\xE1fico",
  20767. firstLineTitle: "t\xEDtulo primera l\xEDnea",
  20768. untitled: "sin t\xEDtulo",
  20769. array1: "Matriz unidimensional",
  20770. array2: "Matriz bidimensional",
  20771. array3: "Matrices multidimensionales",
  20772. diagonal: "Diagonal",
  20773. antiDiagonal: "Anti-diagonal",
  20774. diagonalOffset: "Desplazamiento Diagonal",
  20775. offset: "Desplazamiento",
  20776. boolean: "Booleana",
  20777. flip: "Voltear",
  20778. upAndDown: "Arriba y abajo",
  20779. leftAndRight: "Izquierda y derecha",
  20780. clockwise: "Sentido horario",
  20781. counterclockwise: "Sentido anti-horario",
  20782. transpose: "Transponer",
  20783. matrixCalculation: "C\xE1lculo de matrices",
  20784. plus: "Suma",
  20785. minus: "Resta",
  20786. multiply: "Multiplicaci\xF3n",
  20787. divided: "Divisi\xF3n",
  20788. power: "Exponenciaci\xF3n",
  20789. root: "Ra\xEDz Cuadrada",
  20790. log: "Logaritmo",
  20791. delete0: "Eliminar valores nulos en ambos extremos",
  20792. removeDuplicate: "Eliminar valores duplicados",
  20793. byRow: "Por fila",
  20794. byCol: "Por columna",
  20795. generateNewMatrix: "Generar nueva matriz"
  20796. },
  20797. comment: {
  20798. "insert": "Insertar",
  20799. "edit": "Editar",
  20800. "delete": "Elimiar",
  20801. "showOne": "Mostrar/Ocular",
  20802. "showAll": "Mostrar/Ocular Todo"
  20803. },
  20804. screenshot: {
  20805. screenshotTipNoSelection: "Selecciona el alcance de la captura de pantalla",
  20806. screenshotTipTitle: "\xA1Advertencia!",
  20807. screenshotTipHasMerge: "Esta operaci\xF3n no se puede realizar en celdas combinadas",
  20808. screenshotTipHasMulti: "Esta operaci\xF3n no se puede realizar en varios rangos de selecci\xF3n",
  20809. screenshotTipSuccess: "Exitoso",
  20810. screenshotImageName: "Captura de pantalla",
  20811. downLoadClose: "Cerrar",
  20812. downLoadCopy: "Copiar al portapapeles",
  20813. downLoadBtn: "Descargar",
  20814. browserNotTip: "no es compatible con el navegador IE.",
  20815. rightclickTip: 'Haz clic con el bot\xF3n derecho en la imagen y selecciona "copiar"',
  20816. successTip: 'Con \xE9xito (si falla el pegado, haz clic con el bot\xF3n derecho en la imagen para "copiar imagen")'
  20817. },
  20818. splitText: {
  20819. splitDelimiters: "Delimitadores",
  20820. splitOther: "Otros",
  20821. splitContinueSymbol: "Los separadores consecutivos se tratan como uno solo",
  20822. splitDataPreview: "Previsualizar",
  20823. splitTextTitle: "Partir texto",
  20824. splitConfirmToExe: "Ya hay datos aqu\xED, \xBFquieres reemplazarlos?",
  20825. tipNoMulti: "No se puede realizar esta operaci\xF3n en varias \xE1reas de selecci\xF3n, selecciona una \xFAnica \xE1rea y vuelve a intentarlo",
  20826. tipNoMultiColumn: "Solo se puede convertir una columna de datos a la vez. El \xE1rea seleccionado puede tener varias filas, pero no varias columnas. Vuelve a intentarlo despu\xE9s de seleccionar un solo rango de columnas"
  20827. },
  20828. imageText: {
  20829. imageSetting: "Configuraci\xF3n de imagen",
  20830. close: "Cerrar",
  20831. conventional: "Convencional",
  20832. moveCell1: "Mover y cambiar el tama\xF1o de las celdas",
  20833. moveCell2: "Mover y no cambiar el tama\xF1o de la celda",
  20834. moveCell3: "No mover ni cambiar el tama\xF1o de la celda",
  20835. fixedPos: "Posici\xF3n fija",
  20836. border: "Borde",
  20837. width: "Ancho",
  20838. radius: "Radio",
  20839. style: "Estilo",
  20840. solid: "S\xF3lido",
  20841. dashed: "Discontinua",
  20842. dotted: "Punteado",
  20843. double: "Doble",
  20844. color: "Color"
  20845. },
  20846. punctuation: {
  20847. "tab": "Tabulaci\xF3n",
  20848. "semicolon": "punto y coma",
  20849. "comma": "coma",
  20850. "space": "espacio"
  20851. },
  20852. findAndReplace: {
  20853. find: "Encontrar",
  20854. replace: "Reemplazar",
  20855. goto: "Ir a",
  20856. location: "Ubicaci\xF3n",
  20857. formula: "F\xF3rmula",
  20858. date: "Fecha",
  20859. number: "N\xFAmero",
  20860. string: "Texto",
  20861. error: "Error",
  20862. condition: "Condici\xF3n",
  20863. rowSpan: "Intervalo de filas",
  20864. columnSpan: "Intervalo de columnas",
  20865. locationExample: "Ubicaci\xF3n",
  20866. lessTwoRowTip: "Selecciona al menos dos filas",
  20867. lessTwoColumnTip: "Selecciona al menos dos columnas",
  20868. findTextbox: "Encontrar Contenido",
  20869. replaceTextbox: "Reemplazar Contenido",
  20870. regexTextbox: "Expresi\xF3n Regular",
  20871. wholeTextbox: "Palabra entera",
  20872. distinguishTextbox: "Distingue may\xFAsculas y min\xFAsculas",
  20873. allReplaceBtn: "Reemplazar Todo",
  20874. replaceBtn: "Reemplazar",
  20875. allFindBtn: "Encontrar Todo",
  20876. findBtn: "Encontrar siguiente",
  20877. noFindTip: "No se encontr\xF3 el contenido",
  20878. modeTip: "Esta operaci\xF3n no est\xE1 disponible en este modo",
  20879. searchTargetSheet: "Hoja",
  20880. searchTargetCell: "Celda",
  20881. searchTargetValue: "Valor",
  20882. searchInputTip: "Introduce el contenido de la b\xFAsqueda",
  20883. noReplceTip: "No hay nada que reemplazar",
  20884. noMatchTip: "No se encontraron coincidencias",
  20885. successTip: "${xlength} elementos encontrados",
  20886. locationConstant: "Constante",
  20887. locationFormula: "F\xF3rmula",
  20888. locationDate: "Fecha",
  20889. locationDigital: "N\xFAmero",
  20890. locationString: "Texto",
  20891. locationBool: "L\xF3gicos",
  20892. locationError: "Error",
  20893. locationNull: "Nulo",
  20894. locationCondition: "Formato condicional",
  20895. locationRowSpan: "Intervalo fila",
  20896. locationColumnSpan: "Intervalo columna",
  20897. locationTiplessTwoRow: "Selecciona al menos dos filas",
  20898. locationTiplessTwoColumn: "Selecciona al menos dos columnas",
  20899. locationTipNotFindCell: "Celda no encontrada"
  20900. },
  20901. sheetconfig: {
  20902. delete: "Eliminar",
  20903. copy: "Copiar",
  20904. rename: "Renombrar",
  20905. changeColor: "Cambiar color",
  20906. hide: "Ocultar",
  20907. unhide: "Mostrar",
  20908. moveLeft: "Mover izquierda",
  20909. moveRight: "Mover derecja",
  20910. resetColor: "Reiniciar color",
  20911. cancelText: "Cancelar",
  20912. chooseText: "Confirmar color",
  20913. tipNameRepeat: "\xA1El nombre de la p\xE1gina de la pesta\xF1a no se puede repetir! Rev\xEDsalo",
  20914. noMoreSheet: "El libro de trabajo contiene al menos una hoja de trabajo visual. Para eliminar la hoja de trabajo seleccionada, inserta una nueva hoja de trabajo o muestra una hoja de trabajo oculta",
  20915. confirmDelete: "\xBFEst\xE1s seguro de eliminar",
  20916. redoDelete: "Se puede deshacer con Ctrl+Z",
  20917. noHide: "No se puede ocultar, al menos conserva una etiqueta de hoja",
  20918. chartEditNoOpt: "\xA1Esta operaci\xF3n no est\xE1 permitida en el modo de edici\xF3n de gr\xE1ficos!",
  20919. sheetNameSpecCharError: `El nombre no puede contener:[ ] : ? * / ' "`,
  20920. sheetNamecannotIsEmptyError: "El nombre de la hoja no puede estar vac\xEDo"
  20921. },
  20922. conditionformat: {
  20923. conditionformat_greaterThan: "Conditionformat-GreaterThan",
  20924. conditionformat_greaterThan_title: "Dar formato a celdas mayores que",
  20925. conditionformat_lessThan: "Conditionformat-LessThan",
  20926. conditionformat_lessThan_title: "Dar formato a celdas m\xE1s peque\xF1as que",
  20927. conditionformat_betweenness: "Conditionformat-Betweenness",
  20928. conditionformat_betweenness_title: "Dar formato a celdas con valores entre",
  20929. conditionformat_equal: "Conditionformat-Equal",
  20930. conditionformat_equal_title: "Dar formato a celdas iguales a",
  20931. conditionformat_textContains: "Conditionformat-TextContains",
  20932. conditionformat_textContains_title: "Dar formato a las celdas que contienen el siguiente texto",
  20933. conditionformat_occurrenceDate: "Conditionformat-OccurrenceDate",
  20934. conditionformat_occurrenceDate_title: "Dar formato a celdas que contienen las siguientes fechas",
  20935. conditionformat_duplicateValue: "Conditionformat-DuplicateValue",
  20936. conditionformat_duplicateValue_title: "Dar formato a celdas que contienen los siguientes tipos de valores",
  20937. conditionformat_top10: "Conditionformat-Top10",
  20938. conditionformat_top10_percent: "Conditionformat-Top10%",
  20939. conditionformat_top10_title: "Formatea las celdas con el valor m\xE1s alto",
  20940. conditionformat_last10: "Conditionformat-Last10",
  20941. conditionformat_last10_percent: "Conditionformat-Last10%",
  20942. conditionformat_last10_title: "Formatea las celdas con el valor m\xE1s peque\xF1o",
  20943. conditionformat_AboveAverage: "Conditionformat-AboveAverage",
  20944. conditionformat_AboveAverage_title: "Dar formato a celdas por encima del promedio",
  20945. conditionformat_SubAverage: "Conditionformat-SubAverage",
  20946. conditionformat_SubAverage_title: "Dar formato a celdas por debajo del promedio",
  20947. rule: "Regla",
  20948. newRule: "Nueva regla",
  20949. editRule: "Editar regla",
  20950. deleteRule: "Eliminar regla",
  20951. deleteCellRule: "Eliminar regla de celda",
  20952. deleteSheetRule: "Eliminar regla de hoja",
  20953. manageRules: "Reglas administraci\xF3n",
  20954. showRules: "Muestra sus reglas de formato",
  20955. highlightCellRules: "Resaltar reglas de celda",
  20956. itemSelectionRules: "Reglas de selecci\xF3n de elementos",
  20957. conditionformatManageRules: "Administrador de reglas de formato condicional",
  20958. format: "Formatear",
  20959. setFormat: "Establecer formato",
  20960. setAs: "Establecer como",
  20961. setAsByArea: "Para el \xE1rea seleccionada, establecer",
  20962. applyRange: "Aplicar rango",
  20963. selectRange: "Seleccionar rango de aplicaci\xF3n",
  20964. selectRange_percent: "Porcentaje del rango seleccionado",
  20965. selectRange_average: "Valor promedio del rango seleccionado",
  20966. selectRange_value: "Valor en el rango seleccionado",
  20967. pleaseSelectRange: "Selecciona el rango de aplicaci\xF3n",
  20968. selectDataRange: "Seleccionar rango de datos",
  20969. selectCell: "seleccionar celda",
  20970. pleaseSelectCell: "Selecciona una celda",
  20971. pleaseSelectADate: "Selecciona una fecha",
  20972. pleaseEnterInteger: "Introduzca un n\xFAmero entero entre 1 y 1000",
  20973. onlySingleCell: "Solo se puede hacer referencia a una sola celda",
  20974. conditionValueCanOnly: "El valor de la condici\xF3n solo puede ser un n\xFAmero o una sola celda",
  20975. ruleTypeItem1: "Aplicar formato a todas las celdas seg\xFAn sus valores respectivos",
  20976. ruleTypeItem2: "Solo formatear celdas que contengan",
  20977. ruleTypeItem2_title: "Solo para celdas que cumplan las siguientes condiciones",
  20978. ruleTypeItem3: "Aplicar formato solo a los n\xFAmeros superiores o inferiores",
  20979. ruleTypeItem3_title: "Es el valor en la siguiente clasificaci\xF3n",
  20980. ruleTypeItem4: "Aplicar formato solo a los valores superiores o inferiores al promedio",
  20981. ruleTypeItem4_title: "Es un valor que cumple las siguientes condiciones",
  20982. ruleTypeItem5: "Aplicar formato solo a valores \xFAnicos o repetidos",
  20983. ruleTypeItem6: "Use f\xF3rmulas para determinar qu\xE9 celdas formatear",
  20984. formula: "f\xF3rmula",
  20985. textColor: "Color Texto",
  20986. cellColor: "Color Celda",
  20987. confirm: "Confirma",
  20988. confirmColor: "Confirma color",
  20989. cancel: "Cancela",
  20990. close: "Cierra",
  20991. clearColorSelect: "Limpiar selecci\xF3n de color",
  20992. sheet: "Hoja",
  20993. currentSheet: "Hoja actual",
  20994. dataBar: "Barra de datos",
  20995. dataBarColor: "Color barra de datos",
  20996. gradientDataBar_1: "Barra de datos de degradado azul-blanco",
  20997. gradientDataBar_2: "Barra de datos de degradado verde-blanco",
  20998. gradientDataBar_3: "Barra de datos de degradado rojo-blanco",
  20999. gradientDataBar_4: "Rayas de degradado de color naranja-blanco",
  21000. gradientDataBar_5: "Rayas de degradado azul claro-blancas",
  21001. gradientDataBar_6: "Barra de datos de degradado p\xFArpura-blanco",
  21002. solidColorDataBar_1: "Barra de datos azul",
  21003. solidColorDataBar_2: "Barra de datos verde",
  21004. solidColorDataBar_3: "Barra de datos roja",
  21005. solidColorDataBar_4: "Barra de datos naranja",
  21006. solidColorDataBar_5: "Barra de datos azul claro",
  21007. solidColorDataBar_6: "Barra de datos p\xFArpura",
  21008. colorGradation: "Degradado de color",
  21009. colorGradation_1: "Gradaci\xF3n de color verde-amarillo-rojo",
  21010. colorGradation_2: "Gradaci\xF3n de color rojo-amarillo-verde",
  21011. colorGradation_3: "Gradaci\xF3n de color verde-blanco-rojo",
  21012. colorGradation_4: "Gradaci\xF3n de color rojo-blanco-verde",
  21013. colorGradation_5: "Gradaci\xF3n de color azul-blanco-rojo",
  21014. colorGradation_6: "Gradaci\xF3n de color rojo-blanco-azul",
  21015. colorGradation_7: "Gradaci\xF3n de color blanco-rojo",
  21016. colorGradation_8: "Gradaci\xF3n de color rojo-blanco",
  21017. colorGradation_9: "Gradaci\xF3n de color verde-blanco",
  21018. colorGradation_10: "Gradaci\xF3n de color blanco-verde",
  21019. colorGradation_11: "Gradaci\xF3n de color verde-amarillo",
  21020. colorGradation_12: "Gradaci\xF3n de color amarillo-verde",
  21021. icons: "iconos",
  21022. pleaseSelectIcon: "Haz clic para seleccionar un grupo de iconos:",
  21023. cellValue: "Valor de celda",
  21024. specificText: "Texto espec\xEDfico",
  21025. occurrence: "Fecha",
  21026. greaterThan: "Mayor que",
  21027. lessThan: "Menor que",
  21028. between: "Entre",
  21029. equal: "Igual",
  21030. in: "En",
  21031. between2: "",
  21032. contain: "Contiene",
  21033. textContains: "Texto contiene",
  21034. duplicateValue: "Valor duplicado",
  21035. uniqueValue: "Valor Unico",
  21036. top: "Mejor",
  21037. top10: "10 mejores",
  21038. top10_percent: "10% mejores",
  21039. last: "Ultimo",
  21040. last10: "Ultimos 10",
  21041. last10_percent: "Ultimos 10%",
  21042. oneself: "",
  21043. above: "Encima",
  21044. aboveAverage: "Encima media",
  21045. below: "Debajo",
  21046. belowAverage: "Debajo media",
  21047. all: "Todos",
  21048. yesterday: "A\xF1o a fecha",
  21049. today: "Hoy",
  21050. tomorrow: "Ma\xF1ana",
  21051. lastWeek: "Ultima semana",
  21052. thisWeek: "Esta semana",
  21053. lastMonth: "Ultimo mes",
  21054. thisMonth: "Este mes",
  21055. lastYear: "Ultimo a\xF1o",
  21056. thisYear: "Este a\xF1o",
  21057. last7days: "Ultimos 7 d\xEDas",
  21058. last30days: "Ultimos 30 d\xEDas",
  21059. next7days: "Siguientes 7 d\xEDas",
  21060. next30days: "Siguientes 30 d\xEDas",
  21061. next60days: "Siguientes 60 d\xEDas",
  21062. chooseRuleType: "Elige el tipo de regla",
  21063. editRuleDescription: "Editar descripci\xF3n de regla",
  21064. newFormatRule: "Nueva regla de formato",
  21065. editFormatRule: "Editar regla de formato",
  21066. formatStyle: "Estilo",
  21067. fillType: "Rellenar",
  21068. color: "Color",
  21069. twocolor: "Dos colores",
  21070. tricolor: "Tricolor",
  21071. multicolor: "Multi color",
  21072. grayColor: "Color gris",
  21073. gradient: "Gradiente",
  21074. solid: "S\xF3lido",
  21075. maxValue: "Valor m\xE1ximo",
  21076. medianValue: "Valor mediano",
  21077. minValue: "Valor m\xEDnimo",
  21078. direction: "Direcci\xF3n",
  21079. threeWayArrow: "Flecha de tres direcciones",
  21080. fourWayArrow: "Flecha de cuatro direcciones",
  21081. fiveWayArrow: "Flecha de cinco direcciones",
  21082. threeTriangles: "Tres tri\xE1ngulos",
  21083. shape: "Forma",
  21084. threeColorTrafficLight: "Sem\xE1foro de tres colores",
  21085. fourColorTrafficLight: "Sem\xE1foro de cuatro colores",
  21086. threeSigns: "Tres signos",
  21087. greenRedBlackGradient: "Gradiente verde-rojo-negro",
  21088. rimless: "Sin aros",
  21089. bordered: "Bordeado",
  21090. mark: "Marcar",
  21091. threeSymbols: "Tres s\xEDmbolos",
  21092. tricolorFlag: "Bandera tricolor",
  21093. circled: "Rodeado",
  21094. noCircle: "Sin c\xEDrculo",
  21095. grade: "Grado",
  21096. grade4: "4 Grado",
  21097. grade5: "5 Grado",
  21098. threeStars: "3 Estrellas",
  21099. fiveQuadrantDiagram: "Diagrama de cinco cuadrantes",
  21100. fiveBoxes: "5 Cajas"
  21101. },
  21102. dataVerification: {
  21103. cellRange: "Rango celdas",
  21104. selectCellRange: "Haz clic para seleccionar un rango de celdas",
  21105. selectCellRange2: "Selecciona un rango de celdas",
  21106. verificationCondition: "Condici\xF3n de verificaci\xF3n",
  21107. allowMultiSelect: "Permitir selecci\xF3n m\xFAltiple",
  21108. dropdown: "lista desplegable",
  21109. checkbox: "Casilla de verificaci\xF3n",
  21110. number: "N\xFAmero",
  21111. number_integer: "N\xFAmero entero",
  21112. number_decimal: "N\xFAmero decimal",
  21113. text_content: "Contenido texto",
  21114. text_length: "Longitud texto",
  21115. date: "Fecha",
  21116. validity: "Eficacia",
  21117. placeholder1: "Introduce las opciones, separadas por comas, como 1,2,3,4,5",
  21118. placeholder2: "Introduce contenido",
  21119. placeholder3: "Valor num\xE9rico, como 10",
  21120. placeholder4: "Introduce el texto especificado",
  21121. placeholder5: "Introduce el mensaje que se muestra cuando se selecciona la celda",
  21122. selected: "Seleccionado",
  21123. notSelected: "No seleccionado",
  21124. between: "Entre",
  21125. notBetween: "No entre",
  21126. equal: "Iqual",
  21127. notEqualTo: "No iqual a",
  21128. moreThanThe: "M\xE1s que el",
  21129. lessThan: "Menos que",
  21130. greaterOrEqualTo: "Mayor o igual a",
  21131. lessThanOrEqualTo: "Menor o igual a",
  21132. include: "Incluir",
  21133. exclude: "Excluir",
  21134. earlierThan: "Antes de",
  21135. noEarlierThan: "No antes de",
  21136. laterThan: "Despu\xE9s de",
  21137. noLaterThan: "No despu\xE9s de",
  21138. identificationNumber: "N\xFAmero de identificaci\xF3n",
  21139. phoneNumber: "N\xFAmero de tel\xE9fono",
  21140. remote: "Opci\xF3n de adquisici\xF3n remota autom\xE1tica",
  21141. prohibitInput: "Prohibir la entrada cuando los datos de entrada no son v\xE1lidos",
  21142. hintShow: "Mostrar mensaje cuando se selecciona la celda",
  21143. deleteVerification: "Eliminar verificaci\xF3n",
  21144. tooltipInfo1: "La opci\xF3n de la lista desplegable no puede estar vac\xEDa",
  21145. tooltipInfo2: "El contenido de la casilla de verificaci\xF3n no puede estar vac\xEDo",
  21146. tooltipInfo3: "El valor ingresado no es un tipo num\xE9rico",
  21147. tooltipInfo4: "El segundo valor no puede ser menor que el primero",
  21148. tooltipInfo5: "El contenido del texto no puede estar vac\xEDo",
  21149. tooltipInfo6: "El valor ingresado no es una fecha",
  21150. tooltipInfo7: "La segunda fecha no puede ser menor que la primera",
  21151. textlengthInteger: "La longitud del texto debe ser un entero mayor o igual a 0"
  21152. },
  21153. formula: {
  21154. sum: "Suma",
  21155. average: "Media",
  21156. count: "Contar",
  21157. max: "M\xE1x",
  21158. min: "M\xEDn",
  21159. ifGenerate: "Generador de f\xF3rmula SI",
  21160. find: "Aprender m\xE1s",
  21161. tipNotBelongToIf: "\xA1Esta funci\xF3n de celda no pertenece a la f\xF3rmula SI!",
  21162. tipSelectCell: "Selecciona la celda para insertar la funci\xF3n",
  21163. ifGenCompareValueTitle: "Valor de comparaci\xF3n",
  21164. ifGenSelectCellTitle: "Haz click para seleccionar una celda",
  21165. ifGenRangeTitle: "Rango",
  21166. ifGenRangeTo: "a",
  21167. ifGenRangeEvaluate: "Evaluar rango",
  21168. ifGenSelectRangeTitle: "Haz click para seleccionar rango",
  21169. ifGenCutWay: "Forma particionado",
  21170. ifGenCutSame: "Mismo valor de particionado",
  21171. ifGenCutNpiece: "Particionar por N",
  21172. ifGenCutCustom: "Personalizado",
  21173. ifGenCutConfirm: "Confirma",
  21174. ifGenTipSelectCell: "Selecciona celdas",
  21175. ifGenTipSelectCellPlace: "Por favor selecciona celdas",
  21176. ifGenTipSelectRange: "Selecciona rango",
  21177. ifGenTipSelectRangePlace: "Por favor selecciona rango",
  21178. ifGenTipNotNullValue: "El valor de comparaci\xF3n no puede ser vac\xEDo!",
  21179. ifGenTipLableTitile: "Etiqueta",
  21180. ifGenTipRangeNotforNull: "El rango no puede quedar vac\xEDo!",
  21181. ifGenTipCutValueNotforNull: "El valor de partici\xF3n no puede ser vac\xEDo!",
  21182. ifGenTipNotGenCondition: "No hay condiciones disponibles para la generaci\xF3n!"
  21183. },
  21184. formulaMore: {
  21185. valueTitle: "Valor",
  21186. tipSelectDataRange: "Selecciona rango de datos",
  21187. tipDataRangeTile: "Rango de datos",
  21188. findFunctionTitle: "Funci\xF3n de b\xFAsqueda",
  21189. tipInputFunctionName: "Nombre o breve descripci\xF3n de la funci\xF3n",
  21190. "Array": "Vector",
  21191. "Database": "Base de datos",
  21192. "Date": "Fecha",
  21193. "Engineering": "Ingenier\xEDa",
  21194. "Filter": "Filtro",
  21195. "Financial": "Financiero",
  21196. "luckysheet": "Luckysheet",
  21197. "other": "Otro",
  21198. "Logical": "L\xF3gica",
  21199. "Lookup": "B\xFAsqueda",
  21200. "Math": "Matem\xE1tico",
  21201. "Operator": "Operadores",
  21202. "Parser": "Compilador",
  21203. "Statistical": "Estad\xEDstico",
  21204. "Text": "Texto",
  21205. "dataMining": "Miner\xEDa de datos",
  21206. "selectFunctionTitle": "Selecciona una funci\xF3n",
  21207. "calculationResult": "Resultado",
  21208. tipSuccessText: "Exito",
  21209. tipParamErrorText: "Par\xE1metro err\xF3neo",
  21210. "helpClose": "Cerrar",
  21211. "helpCollapse": "Recoger",
  21212. "helpExample": "Ejemplo",
  21213. "helpAbstract": "Resumen",
  21214. "execfunctionError": "Error en la f\xF3rmula",
  21215. "execfunctionSelfError": "La f\xF3rmula no puede hacer referencia a su propia celda",
  21216. "execfunctionSelfErrorResult": "La f\xF3rmula no puede hacer referencia a su propia celda, lo que dar\xE1 lugar a resultados de c\xE1lculo inexactos",
  21217. "allowRepeatText": "Repetir",
  21218. "allowOptionText": "Opci\xF3n",
  21219. "selectCategory": "O selecciona una categor\xEDa"
  21220. },
  21221. drag: {
  21222. noMerge: "No se puede realizar esta operaci\xF3n en celdas combinadas",
  21223. afectarPivot: "\xA1Este cambio no se puede realizar en la celda seleccionada porque afectar\xE1 a la tabla din\xE1mica!",
  21224. noMulti: "No se puede realizar esta operaci\xF3n en varias \xE1reas de selecci\xF3n, selecciona una sola \xE1rea",
  21225. noPaste: "No se puede pegar este contenido aqu\xED, selecciona una celda en el \xE1rea de pegado e intenta pegar nuevamente",
  21226. noPartMerge: "No se puede realizar esta operaci\xF3n en celdas parcialmente fusionadas",
  21227. inputCorrect: "Introduce el valor correcto",
  21228. notLessOne: "El n\xFAmero de filas y columnas no puede ser inferior a 1",
  21229. offsetColumnLessZero: "\xA1La columna de desplazamiento no puede ser negativa!",
  21230. pasteMustKeybordAlert: "\u5728\u8868\u683C\u4E2D\u8FDB\u884C\u590D\u5236\u7C98\u8D34: Ctrl + C \u8FDB\u884C\u590D\u5236, Ctrl + V \u8FDB\u884C\u7C98\u8D34, Ctrl + X \u8FDB\u884C\u526A\u5207",
  21231. pasteMustKeybordAlertHTMLTitle: "\u5728\u8868\u683C\u4E2D\u8FDB\u884C\u590D\u5236\u7C98\u8D34",
  21232. pasteMustKeybordAlertHTML: "<span style='line-height: 1.0;font-size:36px;font-weight: bold;color:#666;'>Ctrl + C</span>&nbsp;&nbsp;\u8FDB\u884C\u590D\u5236<br/><span style='line-height: 1.0;font-size:36px;font-weight: bold;color:#666;'>Ctrl + V</span>&nbsp;&nbsp;\u8FDB\u884C\u7C98\u8D34<br/><span style='line-height: 1.0;font-size:36px;font-weight: bold;color:#666;'>Ctrl + X</span>&nbsp;&nbsp;\u8FDB\u884C\u526A\u5207"
  21233. },
  21234. paste: {
  21235. warning: "Advertencia",
  21236. errorNotAllowMulti: "No se puede realizar esta operaci\xF3n en varias \xE1reas de selecci\xF3n, selecciona un solo rango y vuelve a intentarlo",
  21237. errorNotAllowMerged: "No se pueden realizar cambios parciales en las celdas fusionadas"
  21238. },
  21239. pivotTable: {
  21240. title: "Tabla Din\xE1mica",
  21241. closePannel: "Cerrar",
  21242. editRange: "Rango",
  21243. tipPivotFieldSelected: "Selecciona los campos",
  21244. tipClearSelectedField: "Limpiar todos los campos",
  21245. btnClearSelectedField: "Limpiar",
  21246. btnFilter: "Filtrar",
  21247. titleRow: "Fila",
  21248. titleColumn: "Columna",
  21249. titleValue: "Valor",
  21250. tipShowColumn: "Los campos de estad\xEDsticas se muestran como columnas",
  21251. tipShowRow: "Los campos de estad\xEDsticas se muestran como filas",
  21252. titleSelectionDataRange: "Selecciona rango",
  21253. titleDataRange: "Rango de datos",
  21254. valueSum: "SUMA",
  21255. valueStatisticsSUM: "Suma",
  21256. valueStatisticsCOUNT: "Contar",
  21257. valueStatisticsCOUNTA: "Contar A",
  21258. valueStatisticsCOUNTUNIQUE: "Contar Distintos",
  21259. valueStatisticsAVERAGE: "Media",
  21260. valueStatisticsMAX: "M\xE1x",
  21261. valueStatisticsMIN: "M\xEDn",
  21262. valueStatisticsMEDIAN: "Mediana",
  21263. valueStatisticsPRODUCT: "Producto",
  21264. valueStatisticsSTDEV: "Desviaci\xF3n Est\xE1ndar",
  21265. valueStatisticsSTDEVP: "Stdevp",
  21266. valueStatisticslet: "Varianza",
  21267. valueStatisticsVARP: "VarP",
  21268. errorNotAllowEdit: "\xA1Esta operaci\xF3n est\xE1 prohibida en el modo sin edici\xF3n!",
  21269. errorNotAllowMulti: "No se puede realizar esta operaci\xF3n en varias \xE1reas de selecci\xF3n, selecciona un solo rango y vuelve a intentarlo",
  21270. errorSelectRange: "Seleccione el rango de la nueva tabla din\xE1mica",
  21271. errorIsDamage: "\xA1Los datos de origen de esta tabla din\xE1mica est\xE1n da\xF1ados!",
  21272. errorNotAllowPivotData: "\xA1No se puede seleccionar la tabla din\xE1mica como datos de origen!",
  21273. errorSelectionRange: "\xA1La selecci\xF3n fall\xF3, rango de entrada incorrecto!",
  21274. errorIncreaseRange: "\xA1Por favor, expande el rango seleccionado!",
  21275. titleAddColumn: "A\xF1adir columna a la tabla din\xE1mica",
  21276. titleMoveColumn: "Muever la columna a la celda en blanco de abajo",
  21277. titleClearColumnFilter: "Quitar el filtro de esta columna",
  21278. titleFilterColumn: "Filtro",
  21279. titleSort: "Ordenar",
  21280. titleNoSort: "No Ordenar",
  21281. titleSortAsc: "ASC",
  21282. titleSortDesc: "DESC",
  21283. titleSortBy: "Ordenar por",
  21284. titleShowSum: "Mostrar total",
  21285. titleStasticTrue: "S\xED",
  21286. titleStasticFalse: "No"
  21287. },
  21288. dropCell: {
  21289. copyCell: "Copiar",
  21290. sequence: "Secuencia",
  21291. onlyFormat: "Solo formato",
  21292. noFormat: "Sin formato",
  21293. day: "D\xEDa",
  21294. workDay: "D\xEDa Laborable",
  21295. month: "Mes",
  21296. year: "A\xF1o",
  21297. chineseNumber: "N\xFAmeros Chinos"
  21298. },
  21299. imageCtrl: {
  21300. borderTile: "Color de borde de imagen",
  21301. borderCur: "Color"
  21302. },
  21303. protection: {
  21304. protectiontTitle: "Protecci\xF3n",
  21305. enterPassword: "Introduce una contrase\xF1a (opcional)",
  21306. enterHintTitle: "Preguntar cuando la edici\xF3n est\xE1 prohibida (opcional)",
  21307. enterHint: "La celda o el gr\xE1fico que est\xE1s intentando cambiar se encuentra en una hoja de trabajo protegida. Si quieres cambiarlo, desprotege la hoja de trabajo. Es posible que tengas que ingresar una contrase\xF1a",
  21308. swichProtectionTip: "Protege la hoja y el contenido de las celdas bloqueadas",
  21309. authorityTitle: "Permitir a los usuarios de esta hoja:",
  21310. selectLockedCells: "Selecciona celdas bloqueadas",
  21311. selectunLockedCells: "Selecciona celdas desbloqueadas",
  21312. formatCells: "Formatear celdas",
  21313. formatColumns: "Formatear columnas",
  21314. formatRows: "Formatear filas",
  21315. insertColumns: "Insertar columnas",
  21316. insertRows: "Insertar filas",
  21317. insertHyperlinks: "Insertar enlaces",
  21318. deleteColumns: "Eliminar columnas",
  21319. deleteRows: "Eliminar filas",
  21320. sort: "Ordenar",
  21321. filter: "Filtrar",
  21322. usePivotTablereports: "Usar informes de tabla din\xE1mica",
  21323. editObjects: "Editar objetos",
  21324. editScenarios: "Editar escenarios",
  21325. allowRangeTitle: "Permitir a los usuarios del rango:",
  21326. allowRangeAdd: "Nuevo...",
  21327. allowRangeAddTitle: "T\xEDtulo",
  21328. allowRangeAddSqrf: "Referencia",
  21329. selectCellRange: "Haz clic para seleccionar un rango de celdas",
  21330. selectCellRangeHolder: "Rango de celdas",
  21331. allowRangeAddTitlePassword: "Contrase\xF1a",
  21332. allowRangeAddTitleHint: "Pregunta",
  21333. allowRangeAddTitleHintTitle: "Preguntar cuando hay una contrase\xF1a (opcional)",
  21334. allowRangeAddtitleDefault: "Nombre del rango de entrada",
  21335. rangeItemDblclick: "Haz doble clic para editar",
  21336. rangeItemHasPassword: "Tiene contrase\xF1a",
  21337. rangeItemErrorTitleNull: "El t\xEDtulo es nulo",
  21338. rangeItemErrorRangeNull: "La referencia es nula",
  21339. rangeItemErrorRange: "La reference tiene un error",
  21340. validationTitle: "Validaci\xF3n de contrase\xF1a",
  21341. validationTips: "Hay que ingresar una contrase\xF1a para desbloquear la protecci\xF3n de la hoja de trabajo",
  21342. validationInputHint: "Introduce una contrase\xF1a",
  21343. checkPasswordNullalert: "Contrase\xF1a requerida!",
  21344. checkPasswordWrongalert: "\xA1Contrase\xF1a incorrecta. Por favor, prueba de nuevo!",
  21345. checkPasswordSucceedalert: "Desbloqueo conseguido!",
  21346. defaultRangeHintText: "La celda est\xE1 protegida con contrase\xF1a.",
  21347. defaultSheetHintText: "La celda o el gr\xE1fico est\xE1n en una hoja de trabajo protegida. Para realizar cambios, desprotege la hoja de trabajo. Es posible que tengas que ingresar una contrase\xF1a"
  21348. },
  21349. cellFormat: {
  21350. cellFormatTitle: "Formatear celdas",
  21351. protection: "Protecci\xF3n",
  21352. locked: "Bloqueado",
  21353. hidden: "Escondido",
  21354. protectionTips: "Para bloquear celdas u ocultar f\xF3rmulas, protege la hoja de trabajo. En la barra de herramientas, haz clic en el bot\xF3n Proteger hoja",
  21355. tipsPart: "Comprobado parcial",
  21356. tipsAll: "Todo seleccionado",
  21357. selectionIsNullAlert: "Se requiere una selecci\xF3n!",
  21358. sheetDataIsNullAlert: "error, no hay datos!"
  21359. },
  21360. print: {
  21361. normalBtn: "Normal",
  21362. layoutBtn: "Disposici\xF3n de p\xE1gina",
  21363. pageBtn: "Previsualizaci\xF3n de saltos de p\xE1gina",
  21364. menuItemPrint: "Imprimir (Ctrl+P)",
  21365. menuItemAreas: "Imprimir \xE1reas",
  21366. menuItemRows: "Imprimir t\xEDtulos de filas",
  21367. menuItemColumns: "Imprimir t\xEDtulos de columnas"
  21368. },
  21369. edit: {
  21370. typing: "mecanograf\xEDa"
  21371. },
  21372. websocket: {
  21373. success: "\xC9xito de la conexi\xF3n de WebSocket",
  21374. refresh: "Se produjo un error en la conexi\xF3n de WebSocket, \xA1actualice la p\xE1gina!",
  21375. wait: "Se produjo un error en la conexi\xF3n de WebSocket, \xA1tenga paciencia!",
  21376. close: "Conexi\xF3n WebSocket cerrada",
  21377. contact: "Ocurri\xF3 un error de comunicaci\xF3n con el servidor, actualice la p\xE1gina y vuelva a intentarlo; de lo contrario, comun\xEDquese con el administrador.",
  21378. support: "El navegador actual no es compatible con WebSocket"
  21379. }
  21380. };
  21381. }
  21382. });
  21383. // src/locale/zh_tw.js
  21384. var zh_tw_default;
  21385. var init_zh_tw = __esm({
  21386. "src/locale/zh_tw.js"() {
  21387. zh_tw_default = {
  21388. functionlist: {
  21389. "SUMIF": {
  21390. "d": "\u5C0D\u7BC4\u570D\u4E2D\u7B26\u5408\u6307\u5B9A\u689D\u4EF6\u7684\u503C\u6C42\u548C\u3002",
  21391. "a": "\u5C0D\u7BC4\u570D\u4E2D\u7B26\u5408\u6307\u5B9A\u689D\u4EF6\u7684\u503C\u6C42\u548C\u3002",
  21392. "p": [
  21393. {
  21394. "name": "\u7BC4\u570D",
  21395. "detail": "\u8981\u6839\u64DA\u689D\u4EF6\u9032\u884C\u6AA2\u6E2C\u7684\u7BC4\u570D\u3002"
  21396. },
  21397. {
  21398. "name": "\u689D\u4EF6",
  21399. "detail": "\u8981\u61C9\u7528\u65BC\u7BC4\u570D\u7684\u6A21\u5F0F\u6216\u6E2C\u8A66\u689D\u4EF6\u3002\n\n\u5982\u679C\u7BC4\u570D\u5305\u542B\u7684\u662F\u8981\u6AA2\u6E2C\u7684\u6587\u5B57,\u5247\u689D\u4EF6\u5FC5\u9808\u70BA\u5B57\u4E32\u3002\u689D\u4EF6\u53EF\u4EE5\u5305\u542B\u842C\u7528\u5B57\u5143,\u5305\u62EC\u7528\u65BC\u5339\u914D\u55AE\u500B\u5B57\u5143\u7684\uFF1F\u6216\u7528\u65BC\u5339\u914D\u96F6\u500B\u6216\u9023\u7E8C\u591A\u500B\u5B57\u5143\u7684*\u3002\u8981\u5339\u914D\u554F\u865F\u661F\u865F\u672C\u8EAB,\u8ACB\u5728\u8A72\u5B57\u5143\u524D\u9762\u52A0\u4E0A\u6CE2\u6D6A\u865F\uFF08~\uFF09\u9996\u78BC\uFF08\u5373~\uFF1F\u548C~*\uFF09\u3002\u5B57\u4E32\u689D\u4EF6\u5FC5\u9808\u7528\u5F15\u865F\u62EC\u8D77\u4F86\u3002\u51FD\u6578\u6703\u6AA2\u67E5\u7BC4\u570D\u4E2D\u7684\u6BCF\u500B\u5132\u5B58\u683C\u8207\u689D\u4EF6\u662F\u5426\u76F8\u7B49\u6216\u5339\u914D\uFF08\u5982\u679C\u4F7F\u7528\u4E86\u842C\u7528\u5B57\u5143\uFF09\u3002\n\n\u5982\u679C\u7BC4\u570D\u5305\u542B\u7684\u662F\u8981\u6AA2\u6E2C\u7684\u6578\u4F4D,\u5247\u689D\u4EF6\u53EF\u4EE5\u662F\u5B57\u4E32\u4E5F\u53EF\u4EE5\u662F\u6578\u4F4D\u3002\u5982\u679C\u7D66\u5B9A\u7684\u689D\u4EF6\u662F\u4E00\u500B\u6578\u4F4D,\u5247\u6AA2\u67E5\u7BC4\u570D\u4E2D\u7684\u6BCF\u500B\u5132\u5B58\u683C\u662F\u5426\u7B49\u65BC\u689D\u4EF6\u3002\u53E6\u5916,\u689D\u4EF6\u4E5F\u53EF\u80FD\u662F\u5305\u542B\u6578\u4F4D\u7684\u5B57\u4E32\uFF08\u4E5F\u5C07\u5C0D\u5176\u9032\u884C\u76F8\u7B49\u6AA2\u6E2C\uFF09,\u6216\u8005\u5E36\u6709\u4EE5\u4E0B\u9996\u78BC\u7684\u6578\u4F4D:=\uFF08\u6AA2\u67E5\u662F\u5426\u76F8\u7B49\uFF09\u3001>\uFF08\u6AA2\u67E5\u7BC4\u570D\u5132\u5B58\u683C\u7684\u503C\u662F\u5426\u5927\u65BC\u689D\u4EF6\u503C\uFF09\u6216<\uFF08\u6AA2\u67E5\u7BC4\u570D\u5132\u5B58\u683C\u7684\u503C\u662F\u5426\u5C0F\u65BC\u689D\u4EF6\u503C\uFF09"
  21400. },
  21401. {
  21402. "name": "\u6C42\u548C\u7BC4\u570D",
  21403. "detail": "\u8981\u6C42\u548C\u7684\u7BC4\u570D\uFF08\u5982\u679C\u8207\u7BC4\u570D\u4E0D\u540C\uFF09\u3002"
  21404. }
  21405. ]
  21406. },
  21407. "TAN": {
  21408. "d": "\u8FD4\u56DE\u5DF2\u77E5\u89D2\u5EA6\u7684\u6B63\u5207\u503C\u3002",
  21409. "a": "\u8FD4\u56DE\u5DF2\u77E5\u89D2\u5EA6\u7684\u6B63\u5207\u503C\u3002",
  21410. "p": [
  21411. {
  21412. "name": "\u89D2\u5EA6",
  21413. "detail": "\u8981\u6C42\u5176\u6B63\u5207\u503C\u7684\u89D2\u5EA6,\u4EE5\u5F27\u5EA6\u8868\u793A\u3002"
  21414. }
  21415. ]
  21416. },
  21417. "TANH": {
  21418. "d": "\u8FD4\u56DE\u7D66\u5B9A\u5BE6\u6578\u7684\u96D9\u66F2\u6B63\u5207\u503C\u3002",
  21419. "a": "\u8FD4\u56DE\u7D66\u5B9A\u5BE6\u6578\u7684\u96D9\u66F2\u6B63\u5207\u503C\u3002",
  21420. "p": [
  21421. {
  21422. "name": "\u503C",
  21423. "detail": "\u8981\u8A08\u7B97\u5176\u96D9\u66F2\u6B63\u5207\u503C\u7684\u5BE6\u6578\u3002"
  21424. }
  21425. ]
  21426. },
  21427. "CEILING": {
  21428. "d": "\u5C07\u6578\u503C\u5411\u4E0A\u53D6\u6574\u70BA\u6700\u63A5\u8FD1\u7684\u6307\u5B9A\u56E0\u6578\u7684\u500D\u6578\u3002",
  21429. "a": "\u5C07\u6578\u503C\u5411\u4E0A\u53D6\u6574\u70BA\u6700\u63A5\u8FD1\u7684\u6307\u5B9A\u56E0\u6578\u7684\u500D\u6578\u3002",
  21430. "p": [
  21431. {
  21432. "name": "\u503C",
  21433. "detail": "\u8981\u5411\u4E0A\u820D\u5165\u7684\u6578\u503C\u3002"
  21434. },
  21435. {
  21436. "name": "\u56E0\u6578",
  21437. "detail": "\u8981\u5C07\u503C\u820D\u5165\u5230\u6B64\u6578\u7684\u6574\u6578\u500D\u3002"
  21438. }
  21439. ]
  21440. },
  21441. "ATAN": {
  21442. "d": "\u8FD4\u56DE\u6578\u503C\u7684\u53CD\u6B63\u5207\u503C,\u4EE5\u5F27\u5EA6\u8868\u793A\u3002",
  21443. "a": "\u8FD4\u56DE\u6578\u503C\u7684\u53CD\u6B63\u5207\u503C",
  21444. "p": [
  21445. {
  21446. "name": "\u503C",
  21447. "detail": "\u8981\u8A08\u7B97\u5176\u53CD\u6B63\u5207\u503C\u7684\u6578\u503C\u3002"
  21448. }
  21449. ]
  21450. },
  21451. "ASINH": {
  21452. "d": "\u8FD4\u56DE\u6578\u503C\u7684\u53CD\u96D9\u66F2\u6B63\u5F26\u503C\u3002",
  21453. "a": "\u8FD4\u56DE\u6578\u503C\u7684\u53CD\u96D9\u66F2\u6B63\u5F26\u503C\u3002",
  21454. "p": [
  21455. {
  21456. "name": "\u503C",
  21457. "detail": "\u8981\u8A08\u7B97\u5176\u53CD\u96D9\u66F2\u6B63\u5F26\u503C\u7684\u6578\u503C\u3002"
  21458. }
  21459. ]
  21460. },
  21461. "ABS": {
  21462. "d": "\u8FD4\u56DE\u6578\u503C\u7684\u7D55\u5C0D\u503C\u3002",
  21463. "a": "\u8FD4\u56DE\u6578\u503C\u7684\u7D55\u5C0D\u503C\u3002",
  21464. "p": [
  21465. {
  21466. "name": "value",
  21467. "detail": "\u8981\u8FD4\u56DE\u5176\u7D55\u5C0D\u503C\u7684\u6578\u3002"
  21468. }
  21469. ]
  21470. },
  21471. "ACOS": {
  21472. "d": "\u8FD4\u56DE\u6578\u503C\u7684\u53CD\u4F59\u5F26\u503C,\u4EE5\u5F27\u5EA6\u8868\u793A\u3002",
  21473. "a": "\u8FD4\u56DE\u6578\u503C\u7684\u53CD\u4F59\u5F26\u503C",
  21474. "p": [
  21475. {
  21476. "name": "\u503C",
  21477. "detail": "\u8981\u8A08\u7B97\u5176\u53CD\u4F59\u5F26\u503C\u7684\u6578\u503C\u3002\u5FC5\u9808\u4ECB\u65BC-1\u548C1\u4E4B\u9593,\u5305\u62EC\u5169\u7AEF\u503C\u3002"
  21478. }
  21479. ]
  21480. },
  21481. "ACOSH": {
  21482. "d": "\u8FD4\u56DE\u6578\u503C\u7684\u53CD\u96D9\u66F2\u4F59\u5F26\u503C\u3002",
  21483. "a": "\u8FD4\u56DE\u6578\u503C\u7684\u53CD\u96D9\u66F2\u4F59\u5F26\u503C\u3002",
  21484. "p": [
  21485. {
  21486. "name": "\u503C",
  21487. "detail": "\u8981\u8A08\u7B97\u5176\u53CD\u96D9\u66F2\u4F59\u5F26\u503C\u7684\u6578\u503C\u3002\u5FC5\u9808\u5927\u65BC\u7B49\u65BC1\u3002"
  21488. }
  21489. ]
  21490. },
  21491. "MULTINOMIAL": {
  21492. "d": "\u8FD4\u56DE\u53C3\u6578\u548C\u7684\u968E\u4E58\u9664\u4EE5\u5404\u53C3\u6578\u968E\u4E58\u7684\u4E58\u7A4D\u5F8C\u5F97\u5230\u7684\u503C\u3002",
  21493. "a": "\u8FD4\u56DE\u53C3\u6578\u548C\u7684\u968E\u4E58\u9664\u4EE5\u5404\u53C3\u6578\u968E\u4E58\u7684\u4E58\u7A4D\u5F8C\u5F97\u5230\u7684\u503C\u3002",
  21494. "p": [
  21495. {
  21496. "name": "\u503C1",
  21497. "detail": "\u7528\u65BC\u8A08\u7B97\u7684\u7B2C\u4E00\u9805\u6578\u503C\u6216\u7BC4\u570D\u3002"
  21498. },
  21499. {
  21500. "name": "\u503C2",
  21501. "detail": "\u7528\u65BC\u8A08\u7B97\u7684\u5176\u4ED6\u6578\u503C\u6216\u7BC4\u570D\u3002"
  21502. }
  21503. ]
  21504. },
  21505. "ATANH": {
  21506. "d": "\u8FD4\u56DE\u6578\u503C\u7684\u53CD\u96D9\u66F2\u6B63\u5207\u503C\u3002",
  21507. "a": "\u8FD4\u56DE\u6578\u503C\u7684\u53CD\u96D9\u66F2\u6B63\u5207\u503C\u3002",
  21508. "p": [
  21509. {
  21510. "name": "\u503C",
  21511. "detail": "\u8981\u8A08\u7B97\u5176\u53CD\u96D9\u66F2\u6B63\u5207\u503C\u7684\u6578\u503C\u3002\u5FC5\u9808\u4ECB\u65BC-1\u548C1\u4E4B\u9593\uFF08\u4E0D\u5305\u62EC-1\u548C1\uFF09\u3002"
  21512. }
  21513. ]
  21514. },
  21515. "ATAN2": {
  21516. "d": "\u4EE5\u5F27\u5EA6\u70BA\u7D44\u7E54\u8FD4\u56DEx\u8EF8\u8207\u5F9E\u539F\u9EDE\uFF080,0\uFF09\u5230\u6307\u5B9A\u5EA7\u6A19\u9EDE\uFF08`x`,`y`\uFF09\u4E4B\u9593\u9023\u7DDA\u7684\u593E\u89D2\u3002",
  21517. "a": "\u4EE5\u5F27\u5EA6\u70BA\u7D44\u7E54\u8FD4\u56DEx\u8EF8\u8207\u5F9E\u539F\u9EDE\uFF080,0\uFF09\u5230\u6307\u5B9A\u5EA7\u6A19\u9EDE\uFF08`x`,`y`\uFF09\u4E4B\u9593\u9023\u7DDA\u7684\u593E\u89D2\u3002",
  21518. "p": [
  21519. {
  21520. "name": "x",
  21521. "detail": "\u8981\u8A08\u7B97\u5176\u8207x\u8EF8\u593E\u89D2\u5927\u5C0F\u7684\u7DDA\u6BB5\u7684\u7D42\u9EDEx\u5EA7\u6A19\u3002"
  21522. },
  21523. {
  21524. "name": "y",
  21525. "detail": "\u8981\u8A08\u7B97\u5176\u8207x\u8EF8\u593E\u89D2\u5927\u5C0F\u7684\u7DDA\u6BB5\u7684\u7D42\u9EDEy\u5EA7\u6A19\u3002"
  21526. }
  21527. ]
  21528. },
  21529. "COUNTBLANK": {
  21530. "d": "\u8FD4\u56DE\u7D66\u5B9A\u7BC4\u570D\u5167\u7684\u7A7A\u5132\u5B58\u683C\u6578\u3002",
  21531. "a": "\u8FD4\u56DE\u7D66\u5B9A\u7BC4\u570D\u5167\u7684\u7A7A\u5132\u5B58\u683C\u6578\u3002",
  21532. "p": [
  21533. {
  21534. "name": "\u7BC4\u570D",
  21535. "detail": "\u8981\u7D71\u8A08\u7A7A\u767D\u5132\u5B58\u683C\u6578\u91CF\u7684\u7BC4\u570D\u3002"
  21536. }
  21537. ]
  21538. },
  21539. "COSH": {
  21540. "d": "\u8FD4\u56DE\u7D66\u5B9A\u5BE6\u6578\u7684\u96D9\u66F2\u4F59\u5F26\u503C\u3002",
  21541. "a": "\u8FD4\u56DE\u7D66\u5B9A\u5BE6\u6578\u7684\u96D9\u66F2\u4F59\u5F26\u503C\u3002",
  21542. "p": [
  21543. {
  21544. "name": "\u503C",
  21545. "detail": "\u8981\u8A08\u7B97\u5176\u96D9\u66F2\u4F59\u5F26\u503C\u7684\u5BE6\u6578\u503C\u3002"
  21546. }
  21547. ]
  21548. },
  21549. "INT": {
  21550. "d": "\u6578\u503C\u5411\u4E0B\u53D6\u6574\u70BA\u5C0F\u65BC\u6216\u7B49\u65BC\u8A72\u6578\u7684\u6700\u63A5\u8FD1\u7684\u6574\u6578\u3002",
  21551. "a": "\u6578\u503C\u5411\u4E0B\u53D6\u6574\u70BA\u5C0F\u65BC\u6216\u7B49\u65BC\u8A72\u6578\u7684\u6700\u63A5\u8FD1\u7684\u6574\u6578\u3002",
  21552. "p": [
  21553. {
  21554. "name": "\u503C",
  21555. "detail": "\u8981\u5411\u4E0B\u53D6\u6574\u70BA\u6700\u63A5\u8FD1\u7684\u6574\u6578\u7684\u6578\u503C\u3002"
  21556. }
  21557. ]
  21558. },
  21559. "ISEVEN": {
  21560. "d": "\u6AA2\u67E5\u6240\u63D0\u4F9B\u7684\u6578\u503C\u662F\u5426\u70BA\u5076\u6578\u3002",
  21561. "a": "\u6AA2\u67E5\u6240\u63D0\u4F9B\u7684\u6578\u503C\u662F\u5426\u70BA\u5076\u6578\u3002",
  21562. "p": [
  21563. {
  21564. "name": "\u503C",
  21565. "detail": "\u8981\u9A57\u8B49\u5176\u662F\u5426\u70BA\u5076\u6578\u7684\u6578\u503C\u3002\n\n\u5982\u679C\u503C\u70BA\u5076\u6578\u6216\u6307\u5411\u5305\u542B\u5076\u6578\u7684\u5132\u5B58\u683C\u7684\u5F15\u7528,ISEVEN\u5C07\u8FD4\u56DETRUE,\u5426\u5247\u8FD4\u56DEFALSE\u3002"
  21566. }
  21567. ]
  21568. },
  21569. "ISODD": {
  21570. "d": "\u6AA2\u67E5\u6240\u63D0\u4F9B\u7684\u6578\u503C\u662F\u5426\u70BA\u5947\u6578\u3002",
  21571. "a": "\u6AA2\u67E5\u6240\u63D0\u4F9B\u7684\u6578\u503C\u662F\u5426\u70BA\u5947\u6578\u3002",
  21572. "p": [
  21573. {
  21574. "name": "\u503C",
  21575. "detail": "\u8981\u9A57\u8B49\u5176\u662F\u5426\u70BA\u5947\u6578\u7684\u6578\u503C\u3002\n\n\u5982\u679C\u503C\u70BA\u5947\u6578\u6216\u6307\u5411\u5305\u542B\u5947\u6578\u7684\u5132\u5B58\u683C,ISODD\u5C07\u8FD4\u56DETRUE,\u5426\u5247\u8FD4\u56DEFALSE\u3002"
  21576. }
  21577. ]
  21578. },
  21579. "LCM": {
  21580. "d": "\u8FD4\u56DE\u4E00\u500B\u6216\u591A\u500B\u6574\u6578\u7684\u6700\u5C0F\u516C\u500D\u6578\u3002",
  21581. "a": "\u8FD4\u56DE\u4E00\u500B\u6216\u591A\u500B\u6574\u6578\u7684\u6700\u5C0F\u516C\u500D\u6578\u3002",
  21582. "p": [
  21583. {
  21584. "name": "\u503C1",
  21585. "detail": "\u8981\u5728\u6C42\u6700\u5C0F\u516C\u500D\u6578\u6578\u7684\u8A08\u7B97\u4E2D\u6AA2\u67E5\u5176\u56E0\u6578\u7684\u7B2C\u4E00\u9805\u6578\u503C\u6216\u7BC4\u570D\u3002"
  21586. },
  21587. {
  21588. "name": "\u503C2",
  21589. "detail": "[\u53EF\u9078] - \u5728\u6C42\u6700\u5C0F\u516C\u500D\u6578\u6642\u8981\u8003\u616E\u5176\u56E0\u6578\u7684\u5176\u4ED6\u6578\u503C\u6216\u7BC4\u570D\u3002"
  21590. }
  21591. ]
  21592. },
  21593. "LN": {
  21594. "d": "\u8FD4\u56DE\u6578\u503C\u4EE5e\uFF08\u6B50\u62C9\u6578\uFF09\u70BA\u5E95\u7684\u5C0D\u6578\u3002",
  21595. "a": "\u8FD4\u56DE\u6578\u503C\u4EE5e\uFF08\u6B50\u62C9\u6578\uFF09\u70BA\u5E95\u7684\u5C0D\u6578\u3002",
  21596. "p": [
  21597. {
  21598. "name": "\u503C",
  21599. "detail": "\u8981\u4EE5e\u70BA\u5E95\u6578\u8A08\u7B97\u5176\u5C0D\u6578\u7684\u503C\u3002\n\n\u503C\u5FC5\u9808\u70BA\u6B63\u6578\u3002"
  21600. }
  21601. ]
  21602. },
  21603. "LOG": {
  21604. "d": "\u6839\u64DA\u6307\u5B9A\u5E95\u6578\u8FD4\u56DE\u6578\u4F4D\u7684\u5C0D\u6578\u3002",
  21605. "a": "\u6839\u64DA\u6307\u5B9A\u5E95\u6578\u8FD4\u56DE\u6578\u4F4D\u7684\u5C0D\u6578\u3002",
  21606. "p": [
  21607. {
  21608. "name": "\u503C",
  21609. "detail": "\u60F3\u8981\u8A08\u7B97\u5176\u5C0D\u6578\u7684\u6B63\u5BE6\u6578\u3002"
  21610. },
  21611. {
  21612. "name": "\u5E95\u6578",
  21613. "detail": "[\u53EF\u9078] - \u5C0D\u6578\u7684\u5E95\u6578\u3002"
  21614. }
  21615. ]
  21616. },
  21617. "LOG10": {
  21618. "d": "\u8FD4\u56DE\u6578\u503C\u4EE510\u70BA\u5E95\u7684\u5C0D\u6578\u3002",
  21619. "a": "\u8FD4\u56DE\u6578\u503C\u4EE510\u70BA\u5E95\u7684\u5C0D\u6578\u3002",
  21620. "p": [
  21621. {
  21622. "name": "\u503C",
  21623. "detail": "\u8981\u8A08\u7B97\u5176\u4EE510\u70BA\u5E95\u7684\u5C0D\u6578\u7684\u6578\u503C\u3002\n\n\u503C\u5FC5\u9808\u70BA\u6B63\u503C\u3002"
  21624. }
  21625. ]
  21626. },
  21627. "MOD": {
  21628. "d": "\u8FD4\u56DE\u5169\u6578\u76F8\u9664\u7684\u9918\u6578,\u7D50\u679C\u7684\u7B26\u865F\u8207\u9664\u6578\u76F8\u540C\u3002",
  21629. "a": "\u8FD4\u56DE\u5169\u6578\u76F8\u9664\u7684\u9918\u6578\u3002",
  21630. "p": [
  21631. {
  21632. "name": "\u88AB\u9664\u6578",
  21633. "detail": "\u8981\u5C07\u5176\u76F8\u9664\u4EE5\u5F97\u5230\u9918\u6578\u7684\u6578\u503C\u3002"
  21634. },
  21635. {
  21636. "name": "\u9664\u6578",
  21637. "detail": "\u7528\u65BC\u9664\u5176\u4ED6\u6578\u7684\u6578\u503C\u3002"
  21638. }
  21639. ]
  21640. },
  21641. "MROUND": {
  21642. "d": "\u5C07\u6578\u503C\u53D6\u6574\u70BA\u53E6\u4E00\u6574\u6578\u6700\u63A5\u8FD1\u7684\u6574\u6578\u500D\u3002",
  21643. "a": "\u5C07\u6578\u503C\u53D6\u6574\u70BA\u53E6\u4E00\u6574\u6578\u6700\u63A5\u8FD1\u7684\u6574\u6578\u500D\u3002",
  21644. "p": [
  21645. {
  21646. "name": "\u503C",
  21647. "detail": "\u8981\u53D6\u6574\u70BA\u53E6\u4E00\u6574\u6578\u6700\u63A5\u8FD1\u7684\u6574\u6578\u500D\u7684\u6578\u503C\u3002"
  21648. },
  21649. {
  21650. "name": "\u56E0\u6578",
  21651. "detail": "\u503C\u5C07\u53D6\u6B64\u56E0\u6578\u7684\u6574\u6578\u500D\u3002"
  21652. }
  21653. ]
  21654. },
  21655. "ODD": {
  21656. "d": "\u5C07\u6578\u503C\u5411\u4E0A\u53D6\u6574\u70BA\u6700\u63A5\u8FD1\u7684\u5947\u6574\u6578\u3002",
  21657. "a": "\u5C07\u6578\u503C\u5411\u4E0A\u53D6\u6574\u70BA\u6700\u63A5\u8FD1\u7684\u5947\u6574\u6578\u3002",
  21658. "p": [
  21659. {
  21660. "name": "\u503C",
  21661. "detail": "\u8981\u5411\u4E0A\u53D6\u6574\u7684\u6578\u503C,\u53D6\u6574\u503C\u70BA\u5927\u65BC\u6B64\u503C\u7684\u6700\u63A5\u8FD1\u7684\u5947\u6578\u3002\n\n\u5982\u679C\u503C\u70BA\u8CA0\u6578,\u5247\u5C07\u5176\u53D6\u6574\u70BA\u7D55\u5C0D\u503C\u5927\u65BC\u8A72\u503C\u7684\u76F8\u9130\u8CA0\u5947\u6578"
  21662. }
  21663. ]
  21664. },
  21665. "SUMSQ": {
  21666. "d": "\u8FD4\u56DE\u4E00\u7D44\u6578\u503C\u548C/\u6216\u5132\u5B58\u683C\u7684\u5E73\u65B9\u7E3D\u548C\u3002",
  21667. "a": "\u8FD4\u56DE\u4E00\u7D44\u6578\u503C\u548C/\u6216\u5132\u5B58\u683C\u7684\u5E73\u65B9\u7E3D\u548C\u3002",
  21668. "p": [
  21669. {
  21670. "name": "\u503C1",
  21671. "detail": "\u8981\u5C07\u5176\u5E73\u65B9\u76F8\u52A0\u7684\u7B2C\u4E00\u500B\u6578\u503C\u6216\u7BC4\u570D\u3002"
  21672. },
  21673. {
  21674. "name": "\u503C2, ...",
  21675. "detail": "[\u53EF\u9078] - \u8981\u5C07\u5176\u5E73\u65B9\u8207\u503C1\u7684\u5E73\u65B9\u76F8\u52A0\u7684\u5176\u4ED6\u6578\u503C\u6216\u7BC4\u570D\u3002"
  21676. }
  21677. ]
  21678. },
  21679. "COMBIN": {
  21680. "d": "\u7D66\u5B9A\u96C6\u5408\u4E2D\u7684\u5C0D\u8C61\u7E3D\u6578\u548C\u8981\u9078\u64C7\u7684\u5C0D\u8C61\u6578\u91CF,\u8FD4\u56DE\u5171\u6709\u591A\u5C11\u7A2E\u4E0D\u540C\u9078\u64C7\u7BA1\u9053\u3002",
  21681. "a": "\u7D66\u5B9A\u96C6\u5408\u4E2D\u7684\u5C0D\u8C61\u7E3D\u6578\u548C\u8981\u9078\u64C7\u7684\u5C0D\u8C61\u6578\u91CF",
  21682. "p": [
  21683. {
  21684. "name": "n",
  21685. "detail": "\u8981\u5F9E\u4E2D\u9032\u884C\u9078\u64C7\u7684\u5C0D\u8C61\u96C6\u5408\u7684\u5927\u5C0F\u3002"
  21686. },
  21687. {
  21688. "name": "k",
  21689. "detail": "\u8981\u9078\u64C7\u7684\u5C0D\u8C61\u6578\u91CF\u3002"
  21690. }
  21691. ]
  21692. },
  21693. "SUM": {
  21694. "d": "\u8FD4\u56DE\u4E00\u7D44\u6578\u503C\u548C/\u6216\u5132\u5B58\u683C\u7684\u7E3D\u548C\u3002",
  21695. "a": "\u8FD4\u56DE\u4E00\u7D44\u6578\u503C\u548C/\u6216\u5132\u5B58\u683C\u7684\u7E3D\u548C\u3002",
  21696. "p": [
  21697. {
  21698. "name": "\u503C1",
  21699. "detail": "\u8981\u76F8\u52A0\u7684\u7B2C\u4E00\u500B\u6578\u503C\u6216\u7BC4\u570D\u3002"
  21700. },
  21701. {
  21702. "name": "\u503C2",
  21703. "detail": "[\u53EF\u9078] - \u8981\u76F8\u52A0\u7684\u5176\u4ED6\u6578\u503C\u6216\u7BC4\u570D\u3002"
  21704. }
  21705. ]
  21706. },
  21707. "SUBTOTAL": {
  21708. "d": "\u4F7F\u7528\u6307\u5B9A\u7684\u532F\u7E3D\u51FD\u6578,\u8FD4\u56DE\u4E00\u7CFB\u5217\u7E31\u5411\u5132\u5B58\u683C\u7684\u5206\u985E\u532F\u7E3D\u3002",
  21709. "a": "\u4F7F\u7528\u6307\u5B9A\u7684\u532F\u7E3D\u51FD\u6578",
  21710. "p": [
  21711. {
  21712. "name": "\u51FD\u6578\u7A0B\u5F0F\u78BC",
  21713. "detail": "\u7528\u65BC\u8A08\u7B97\u5206\u985E\u532F\u7E3D\u7684\u51FD\u6578\u3002\n\n1\u4EE3\u8868AVERAGE\n\n2\u4EE3\u8868COUNT\n\n3\u4EE3\u8868COUNTA\n\n4\u4EE3\u8868MAX\n\n5\u4EE3\u8868MIN\n\n6\u4EE3\u8868PRODUCT\n\n7\u4EE3\u8868STDEV\n\n8\u4EE3\u8868STDEVP\n\n9\u4EE3\u8868SUM\n\n10\u4EE3\u8868VAR\n\n11\u4EE3\u8868VARP\n\n\u901A\u904E\u5728\u9019\u4E9B2\u4F4D\u7A0B\u5F0F\u78BC\u524D\u9644\u52A010\uFF08\u5C0D\u65BC1\u4F4D\u7A0B\u5F0F\u78BC\uFF09\u62161\uFF08\u5C0D\u65BC2\u4F4D\u7A0B\u5F0F\u78BC\uFF09,\u53EF\u4EE5\u5C07\u96B1\u85CF\u503C\u5FFD\u7565\u3002\u4F8B\u5982,102\u4EE3\u8868\u5FFD\u7565\u96B1\u85CF\u5132\u5B58\u683C\u7684COUNT,\u800C110\u5247\u4EE3\u8868\u5FFD\u7565\u96B1\u85CF\u503C\u7684VAR\u3002"
  21714. },
  21715. {
  21716. "name": "\u7BC4\u570D1",
  21717. "detail": "\u8981\u8A08\u7B97\u5206\u985E\u532F\u7E3D\u7684\u7B2C\u4E00\u500B\u7BC4\u570D\u3002"
  21718. },
  21719. {
  21720. "name": "\u7BC4\u570D2",
  21721. "detail": "[\u53EF\u9078] - \u8981\u8A08\u7B97\u5206\u985E\u532F\u7E3D\u7684\u5176\u4ED6\u7BC4\u570D\u3002"
  21722. }
  21723. ]
  21724. },
  21725. "ASIN": {
  21726. "d": "\u8FD4\u56DE\u6578\u503C\u7684\u53CD\u6B63\u5F26\u503C,\u4EE5\u5F27\u5EA6\u8868\u793A\u3002",
  21727. "a": "\u8FD4\u56DE\u6578\u503C\u7684\u53CD\u6B63\u5F26\u503C",
  21728. "p": [
  21729. {
  21730. "name": "\u503C",
  21731. "detail": "\u8981\u8A08\u7B97\u5176\u53CD\u6B63\u5F26\u503C\u7684\u6578\u503C\u3002\u5FC5\u9808\u4ECB\u65BC-1\u548C1\u4E4B\u9593,\u5305\u62EC\u5169\u7AEF\u503C\u3002"
  21732. }
  21733. ]
  21734. },
  21735. "COUNTIF": {
  21736. "d": "\u8FD4\u56DE\u7BC4\u570D\u5167\u6EFF\u8DB3\u67D0\u500B\u689D\u4EF6\u7684\u5132\u5B58\u683C\u7684\u6578\u91CF\u3002",
  21737. "a": "\u8FD4\u56DE\u7BC4\u570D\u5167\u6EFF\u8DB3\u67D0\u500B\u689D\u4EF6\u7684\u5132\u5B58\u683C\u7684\u6578\u91CF\u3002",
  21738. "p": [
  21739. {
  21740. "name": "\u7BC4\u570D",
  21741. "detail": "\u8981\u6839\u64DA\u689D\u4EF6\u9032\u884C\u6AA2\u6E2C\u7684\u7BC4\u570D\u3002"
  21742. },
  21743. {
  21744. "name": "\u689D\u4EF6",
  21745. "detail": "\u8981\u61C9\u7528\u65BC\u7BC4\u570D\u7684\u6A21\u5F0F\u6216\u6E2C\u8A66\u689D\u4EF6\u3002\n\n\u5982\u679C\u7BC4\u570D\u5305\u542B\u7684\u662F\u8981\u6AA2\u6E2C\u7684\u6587\u5B57,\u5247\u689D\u4EF6\u5FC5\u9808\u70BA\u5B57\u4E32\u3002\u689D\u4EF6\u53EF\u4EE5\u5305\u542B\u842C\u7528\u5B57\u5143,\u5305\u62EC\u7528\u65BC\u5339\u914D\u55AE\u500B\u5B57\u5143\u7684\uFF1F\u6216\u7528\u65BC\u5339\u914D\u96F6\u500B\u6216\u9023\u7E8C\u591A\u500B\u5B57\u5143\u7684*\u3002\u8981\u5339\u914D\u554F\u865F\u661F\u865F\u672C\u8EAB,\u8ACB\u5728\u8A72\u5B57\u5143\u524D\u9762\u52A0\u4E0A\u6CE2\u6D6A\u865F\uFF08~\uFF09\u9996\u78BC\uFF08\u5373~\uFF1F\u548C~*\uFF09\u3002\u5B57\u4E32\u689D\u4EF6\u5FC5\u9808\u7528\u5F15\u865F\u62EC\u8D77\u4F86\u3002\u51FD\u6578\u6703\u6AA2\u67E5\u7BC4\u570D\u4E2D\u7684\u6BCF\u500B\u5132\u5B58\u683C\u8207\u689D\u4EF6\u662F\u5426\u76F8\u7B49\u6216\u5339\u914D\uFF08\u5982\u679C\u4F7F\u7528\u4E86\u842C\u7528\u5B57\u5143\uFF09\u3002\n\n\u5982\u679C\u7BC4\u570D\u5305\u542B\u7684\u662F\u8981\u6AA2\u6E2C\u7684\u6578\u4F4D,\u5247\u689D\u4EF6\u53EF\u4EE5\u662F\u5B57\u4E32\u4E5F\u53EF\u4EE5\u662F\u6578\u4F4D\u3002\u5982\u679C\u7D66\u5B9A\u7684\u689D\u4EF6\u662F\u4E00\u500B\u6578\u4F4D,\u5247\u6AA2\u67E5\u7BC4\u570D\u4E2D\u7684\u6BCF\u500B\u5132\u5B58\u683C\u662F\u5426\u7B49\u65BC\u689D\u4EF6\u3002\u53E6\u5916,\u689D\u4EF6\u4E5F\u53EF\u80FD\u662F\u5305\u542B\u6578\u4F4D\u7684\u5B57\u4E32\uFF08\u4E5F\u5C07\u5C0D\u5176\u9032\u884C\u76F8\u7B49\u6AA2\u6E2C\uFF09,\u6216\u8005\u5E36\u6709\u4EE5\u4E0B\u9996\u78BC\u7684\u6578\u4F4D:=\u3001>\u3001>=\u3001<\u6216<=,\u9019\u4E9B\u689D\u4EF6\u5C07\u5206\u5225\u7528\u65BC\u6AA2\u67E5\u7BC4\u570D\u4E2D\u7684\u5132\u5B58\u683C\u662F\u5426\u7B49\u65BC\u3001\u5927\u65BC\u3001\u5927\u65BC\u7B49\u65BC\u3001\u5C0F\u65BC\u3001\u5C0F\u65BC\u7B49\u65BC\u689D\u4EF6\u503C\u3002"
  21746. }
  21747. ]
  21748. },
  21749. "RADIANS": {
  21750. "d": "\u5C07\u4EE5\u5EA6\u8868\u793A\u7684\u89D2\u5EA6\u503C\u8F49\u63DB\u70BA\u5F27\u5EA6\u3002",
  21751. "a": "\u5C07\u4EE5\u5EA6\u8868\u793A\u7684\u89D2\u5EA6\u503C\u8F49\u63DB\u70BA\u5F27\u5EA6\u3002",
  21752. "p": [
  21753. {
  21754. "name": "\u89D2\u5EA6",
  21755. "detail": "\u8981\u5F9E\u5EA6\u8F49\u63DB\u70BA\u5F27\u5EA6\u7684\u89D2\u5EA6\u3002"
  21756. }
  21757. ]
  21758. },
  21759. "RAND": {
  21760. "d": "\u8FD4\u56DE\u4E00\u500B\u4ECB\u65BC0\u548C1\u4E4B\u9593\uFF08\u5305\u62EC0\u4F46\u4E0D\u5305\u62EC1\uFF09\u7684\u4E82\u6578\u3002",
  21761. "a": "\u8FD4\u56DE\u4E00\u500B\u4ECB\u65BC0\u548C1\u4E4B\u9593\uFF08\u5305\u62EC0\u4F46\u4E0D\u5305\u62EC1\uFF09\u7684\u4E82\u6578\u3002",
  21762. "p": []
  21763. },
  21764. "COUNTUNIQUE": {
  21765. "d": "\u8A08\u7B97\u4E00\u5217\u6307\u5B9A\u503C\u548C\u7BC4\u570D\u4E2D\u4E0D\u91CD\u8907\u6578\u503C\u7684\u500B\u6578\u3002",
  21766. "a": "\u8A08\u7B97\u4E00\u5217\u6307\u5B9A\u503C\u548C\u7BC4\u570D\u4E2D\u4E0D\u91CD\u8907\u6578\u503C\u7684\u500B\u6578\u3002",
  21767. "p": [
  21768. {
  21769. "name": "\u503C1",
  21770. "detail": "\u8981\u6AA2\u67E5\u5176\u662F\u5426\u552F\u4E00\u7684\u7B2C\u4E00\u500B\u503C\u6216\u7BC4\u570D\u3002"
  21771. },
  21772. {
  21773. "name": "\u503C2",
  21774. "detail": "[\u53EF\u9078] - \u8981\u6AA2\u67E5\u662F\u5426\u552F\u4E00\u7684\u5176\u4ED6\u503C\u6216\u7BC4\u570D\u3002"
  21775. }
  21776. ]
  21777. },
  21778. "DEGREES": {
  21779. "d": "\u5C07\u4EE5\u5F27\u5EA6\u8868\u793A\u7684\u89D2\u5EA6\u503C\u8F49\u63DB\u70BA\u5EA6\u3002",
  21780. "a": "\u5C07\u4EE5\u5F27\u5EA6\u8868\u793A\u7684\u89D2\u5EA6\u503C\u8F49\u63DB\u70BA\u5EA6\u3002",
  21781. "p": [
  21782. {
  21783. "name": "\u89D2\u5EA6",
  21784. "detail": "\u8981\u5F9E\u5F27\u5EA6\u8F49\u63DB\u70BA\u5EA6\u7684\u89D2\u5EA6\u3002"
  21785. }
  21786. ]
  21787. },
  21788. "ERFC": {
  21789. "d": "\u8FD4\u56DE\u6578\u503C\u7684\u4E92\u88DC\u9AD8\u65AF\u8AA4\u5DEE\u51FD\u6578\u3002",
  21790. "a": "\u8FD4\u56DE\u6578\u503C\u7684\u4E92\u88DC\u9AD8\u65AF\u8AA4\u5DEE\u51FD\u6578\u3002",
  21791. "p": [
  21792. {
  21793. "name": "z",
  21794. "detail": "\u8981\u70BA\u5176\u8A08\u7B97\u4E92\u88DC\u9AD8\u65AF\u8AA4\u5DEE\u51FD\u6578\u7684\u6578\u503C\u3002"
  21795. }
  21796. ]
  21797. },
  21798. "EVEN": {
  21799. "d": "\u5C07\u6578\u503C\u5411\u4E0A\u53D6\u6574\u70BA\u6700\u63A5\u8FD1\u7684\u5076\u6574\u6578\u3002",
  21800. "a": "\u5C07\u6578\u503C\u5411\u4E0A\u53D6\u6574\u70BA\u6700\u63A5\u8FD1\u7684\u5076\u6574\u6578\u3002",
  21801. "p": [
  21802. {
  21803. "name": "\u503C",
  21804. "detail": "\u8981\u5411\u4E0A\u53D6\u6574\u7684\u6578\u503C,\u53D6\u6574\u503C\u70BA\u5927\u65BC\u6B64\u503C\u7684\u6700\u63A5\u8FD1\u7684\u5076\u6578\u3002\n\n\u5982\u679C\u503C\u70BA\u8CA0\u6578,\u5247\u5C07\u5176\u53D6\u6574\u70BA\u7D55\u5C0D\u503C\u5927\u65BC\u8A72\u503C\u7684\u76F8\u9130\u8CA0\u5076\u6578\u3002"
  21805. }
  21806. ]
  21807. },
  21808. "EXP": {
  21809. "d": "\u8FD4\u56DE\u6B50\u62C9\u6578e\uFF08~2.718\uFF09\u7684\u6307\u5B9A\u6B21\u5E42\u3002",
  21810. "a": "\u8FD4\u56DE\u6B50\u62C9\u6578e\uFF08~2.718\uFF09\u7684\u6307\u5B9A\u6B21\u5E42\u3002",
  21811. "p": [
  21812. {
  21813. "name": "\u6307\u6578",
  21814. "detail": "\u6307\u5B9Ae\u7684\u81EA\u4E58\u5E42\u6B21\u503C\u3002"
  21815. }
  21816. ]
  21817. },
  21818. "FACT": {
  21819. "d": "\u8FD4\u56DE\u6578\u503C\u7684\u968E\u4E58\u3002",
  21820. "a": "\u8FD4\u56DE\u6578\u503C\u7684\u968E\u4E58\u3002",
  21821. "p": [
  21822. {
  21823. "name": "\u503C",
  21824. "detail": "\u8981\u8A08\u7B97\u4E26\u8FD4\u56DE\u5176\u968E\u4E58\u7684\u6578\u4F4D\u6216\u5C0D\u6578\u4F4D\uFF08\u6240\u5728\u5132\u5B58\u683C\uFF09\u7684\u5F15\u7528\u3002"
  21825. }
  21826. ]
  21827. },
  21828. "FACTDOUBLE": {
  21829. "d": '\u8FD4\u56DE\u6578\u503C\u7684"\u96D9\u968E\u4E58"\u3002',
  21830. "a": '\u8FD4\u56DE\u6578\u503C\u7684"\u96D9\u968E\u4E58"\u3002',
  21831. "p": [
  21832. {
  21833. "name": "\u503C",
  21834. "detail": "\u8981\u8A08\u7B97\u4E26\u8FD4\u56DE\u5176\u96D9\u968E\u4E58\u7684\u6578\u4F4D\u6216\u5C0D\u6578\u4F4D\uFF08\u6240\u5728\u5132\u5B58\u683C\uFF09\u7684\u5F15\u7528\u3002"
  21835. }
  21836. ]
  21837. },
  21838. "PI": {
  21839. "d": "\u8FD4\u56DE\u5E36\u670914\u4F4D\u5C0F\u6578\u7684PI\u503C\u3002",
  21840. "a": "\u8FD4\u56DE\u5E36\u670914\u4F4D\u5C0F\u6578\u7684PI\u503C\u3002",
  21841. "p": []
  21842. },
  21843. "FLOOR": {
  21844. "d": "\u5C07\u6578\u503C\u5411\u4E0B\u53D6\u6574\u70BA\u6307\u5B9A\u56E0\u6578\u7684\u6700\u63A5\u8FD1\u7684\u6574\u6578\u500D\u3002",
  21845. "a": "\u5C07\u6578\u503C\u5411\u4E0B\u53D6\u6574\u70BA\u6307\u5B9A\u56E0\u6578\u7684\u6700\u63A5\u8FD1\u7684\u6574\u6578\u500D\u3002",
  21846. "p": [
  21847. {
  21848. "name": "\u503C",
  21849. "detail": "\u8981\u5411\u4E0B\u820D\u5165\u70BA\u56E0\u6578\u7684\u6700\u63A5\u8FD1\u6574\u6578\u500D\u7684\u6578\u503C\u3002"
  21850. },
  21851. {
  21852. "name": "\u56E0\u6578",
  21853. "detail": "\u8981\u5C07\u503C\u820D\u5165\u5230\u6B64\u6578\u7684\u6574\u6578\u500D\u3002\n\n\u56E0\u6578\u4E0D\u5F97\u70BA0\u3002"
  21854. }
  21855. ]
  21856. },
  21857. "GCD": {
  21858. "d": "\u8FD4\u56DE\u4E00\u500B\u6216\u591A\u500B\u6574\u6578\u7684\u6700\u5927\u516C\u7D04\u6578\u3002",
  21859. "a": "\u8FD4\u56DE\u4E00\u500B\u6216\u591A\u500B\u6574\u6578\u7684\u6700\u5927\u516C\u7D04\u6578\u3002",
  21860. "p": [
  21861. {
  21862. "name": "\u503C1",
  21863. "detail": "\u8981\u5728\u67E5\u627E\u6700\u5927\u516C\u7D04\u6578\u7684\u8A08\u7B97\u4E2D\u6AA2\u67E5\u5176\u56E0\u6578\u7684\u7B2C\u4E00\u9805\u6578\u503C\u6216\u7BC4\u570D\u3002"
  21864. },
  21865. {
  21866. "name": "\u503C2",
  21867. "detail": "[\u53EF\u9078] - \u5728\u6C42\u6700\u5927\u516C\u7D04\u6578\u6642\u8981\u8003\u616E\u5176\u56E0\u6578\u7684\u5176\u4ED6\u6578\u503C\u6216\u7BC4\u570D\u3002"
  21868. }
  21869. ]
  21870. },
  21871. "RANDBETWEEN": {
  21872. "d": "\u8FD4\u56DE\u4ECB\u65BC\u5169\u500B\u6574\u6578\u4E4B\u9593\uFF08\u5305\u62EC\u9019\u5169\u500B\u6574\u6578\uFF09\u7684\u4E82\u6578\u3002",
  21873. "a": "\u8FD4\u56DE\u4ECB\u65BC\u5169\u500B\u6574\u6578\u4E4B\u9593\uFF08\u5305\u62EC\u9019\u5169\u500B\u6574\u6578\uFF09\u7684\u4E82\u6578\u3002",
  21874. "p": [
  21875. {
  21876. "name": "\u4E0B\u754C",
  21877. "detail": "\u96A8\u6A5F\u503C\u7BC4\u570D\u7684\u4E0B\u754C\u3002"
  21878. },
  21879. {
  21880. "name": "\u4E0A\u754C",
  21881. "detail": "\u96A8\u6A5F\u503C\u7BC4\u570D\u7684\u4E0A\u754C\u3002"
  21882. }
  21883. ]
  21884. },
  21885. "ROUND": {
  21886. "d": "\u5C07\u6578\u4F4D\u56DB\u6368\u4E94\u5165\u5230\u6307\u5B9A\u7684\u4F4D\u6578\u3002",
  21887. "a": "\u5C07\u6578\u4F4D\u56DB\u6368\u4E94\u5165\u5230\u6307\u5B9A\u7684\u4F4D\u6578\u3002",
  21888. "p": [
  21889. {
  21890. "name": "\u503C",
  21891. "detail": "\u8981\u56DB\u6368\u4E94\u5165\u7684\u6578\u4F4D\u3002"
  21892. },
  21893. {
  21894. "name": "\u4F4D\u6578",
  21895. "detail": "\u8981\u9032\u884C\u56DB\u6368\u4E94\u5165\u904B\u7B97\u7684\u4F4D\u6578\u3002\n\n\u4F4D\u6578\u53EF\u4EE5\u53D6\u8CA0\u503C,\u5728\u9019\u7A2E\u60C5\u6CC1\u4E0B\u6703\u5C07\u503C\u7684\u5C0F\u6578\u9EDE\u5DE6\u5074\u90E8\u5206\u820D\u5165\u5230\u6307\u5B9A\u7684\u4F4D\u6578\u3002"
  21896. }
  21897. ]
  21898. },
  21899. "ROUNDDOWN": {
  21900. "d": "\u671D\u8457\u96F6\u7684\u65B9\u5411\u5C07\u6578\u4F4D\u9032\u884C\u5411\u4E0B\u820D\u5165\u3002",
  21901. "a": "\u671D\u8457\u96F6\u7684\u65B9\u5411\u5C07\u6578\u4F4D\u9032\u884C\u5411\u4E0B\u820D\u5165\u3002",
  21902. "p": [
  21903. {
  21904. "name": "\u503C",
  21905. "detail": "\u9700\u8981\u5411\u4E0B\u820D\u5165\u7684\u4EFB\u610F\u5BE6\u6578\u3002"
  21906. },
  21907. {
  21908. "name": "\u4F4D\u6578",
  21909. "detail": "\u8981\u901A\u904E\u820D\u5165\u9054\u5230\u7684\u5C0F\u6578\u4F4D\u6578\u3002\n\n\u4F4D\u6578\u53EF\u4EE5\u53D6\u8CA0\u503C,\u5728\u9019\u7A2E\u60C5\u6CC1\u4E0B\u6703\u5C07\u503C\u7684\u5C0F\u6578\u9EDE\u5DE6\u5074\u90E8\u5206\u820D\u5165\u5230\u6307\u5B9A\u7684\u4F4D\u6578\u3002"
  21910. }
  21911. ]
  21912. },
  21913. "ROUNDUP": {
  21914. "d": "\u671D\u8457\u9060\u96E20\uFF08\u96F6\uFF09\u7684\u65B9\u5411\u5C07\u6578\u4F4D\u9032\u884C\u5411\u4E0A\u820D\u5165\u3002",
  21915. "a": "\u671D\u8457\u9060\u96E20\uFF08\u96F6\uFF09\u7684\u65B9\u5411\u5C07\u6578\u4F4D\u9032\u884C\u5411\u4E0A\u820D\u5165\u3002",
  21916. "p": [
  21917. {
  21918. "name": "\u503C",
  21919. "detail": "\u8981\u5C07\u5176\u820D\u5165\u70BA\u4F4D\u6578\u4F4D\u6578\u4F4D\u7684\u503C,\u59CB\u7D42\u5411\u4E0A\u820D\u5165\u3002"
  21920. },
  21921. {
  21922. "name": "\u4F4D\u6578",
  21923. "detail": "\u8981\u901A\u904E\u820D\u5165\u9054\u5230\u7684\u5C0F\u6578\u4F4D\u6578\u3002\n\n\u4F4D\u6578\u53EF\u4EE5\u53D6\u8CA0\u503C,\u5728\u9019\u7A2E\u60C5\u6CC1\u4E0B\u6703\u5C07\u503C\u7684\u5C0F\u6578\u9EDE\u5DE6\u5074\u90E8\u5206\u820D\u5165\u5230\u6307\u5B9A\u7684\u4F4D\u6578\u3002"
  21924. }
  21925. ]
  21926. },
  21927. "SERIESSUM": {
  21928. "d": "\u7D66\u5B9A\u53C3\u6578x\u3001n\u3001m\u548Ca,\u8FD4\u56DE\u5E42\u7D1A\u6578\u7684\u548Ca1xn + a2x\uFF08n+m\uFF09+\u2026+ aix\uFF08n+\uFF08i-1\uFF09m\uFF09,\u5176\u4E2Di\u70BA\u7BC4\u570Da\u4E2D\u7684\u9805\u6578\u3002",
  21929. "a": "\u7D66\u5B9A\u53C3\u6578x\u3001n\u3001m\u548Ca",
  21930. "p": [
  21931. {
  21932. "name": "x",
  21933. "detail": "\u5E42\u7D1A\u6578\u7684\u8F38\u5165\u503C\u3002\u96A8\u76F8\u61C9\u7684\u8FD1\u4F3C\u985E\u578B\u800C\u8B8A,\u6709\u53EF\u80FD\u70BA\u89D2\u5EA6\u3001\u6307\u6578\u6216\u5176\u4ED6\u4E00\u4E9B\u503C\u3002"
  21934. },
  21935. {
  21936. "name": "n",
  21937. "detail": "\u5728\u5E42\u7D1A\u6578\u4E2Dx\u7684\u521D\u59CB\u81EA\u4E58\u5E42\u6B21\u3002"
  21938. },
  21939. {
  21940. "name": "m",
  21941. "detail": "x\u7684\u5E42\u6B21\u4E2D\u7684\u9644\u52A0\u589E\u91CF\u3002"
  21942. },
  21943. {
  21944. "name": "a",
  21945. "detail": "\u5305\u542B\u5E42\u7D1A\u6578\u4FC2\u6578\u7684\u6578\u7D44\u6216\u7BC4\u570D\u3002"
  21946. }
  21947. ]
  21948. },
  21949. "SIGN": {
  21950. "d": "\u7D66\u5B9A\u8F38\u5165\u6578\u503C,\u5982\u679C\u70BA\u8CA0\u8FD4\u56DE-1\uFF1B\u5982\u679C\u70BA\u6B63\u8FD4\u56DE1\uFF1B\u5982\u679C\u70BA\u96F6\u5247\u8FD4\u56DE0\u3002",
  21951. "a": "\u7D66\u5B9A\u8F38\u5165\u6578\u503C",
  21952. "p": [
  21953. {
  21954. "name": "\u503C",
  21955. "detail": "\u8981\u8FD4\u56DE\u5176\u7B26\u865F\u7684\u6578\u503C\u3002"
  21956. }
  21957. ]
  21958. },
  21959. "SIN": {
  21960. "d": "\u7D66\u5B9A\u89D2\u5EA6\uFF08\u4EE5\u5F27\u5EA6\u8868\u793A\uFF09,\u8FD4\u56DE\u5176\u6B63\u5F26\u503C\u3002",
  21961. "a": "\u7D66\u5B9A\u89D2\u5EA6\uFF08\u4EE5\u5F27\u5EA6\u8868\u793A\uFF09",
  21962. "p": [
  21963. {
  21964. "name": "\u89D2\u5EA6",
  21965. "detail": "\u8981\u8FD4\u56DE\u5176\u6B63\u5F26\u503C\u7684\u89D2\u5EA6,\u4EE5\u5F27\u5EA6\u8868\u793A\u3002"
  21966. }
  21967. ]
  21968. },
  21969. "SINH": {
  21970. "d": "\u8FD4\u56DE\u7D66\u5B9A\u5BE6\u6578\u7684\u96D9\u66F2\u6B63\u5F26\u503C\u3002",
  21971. "a": "\u8FD4\u56DE\u7D66\u5B9A\u5BE6\u6578\u7684\u96D9\u66F2\u6B63\u5F26\u503C\u3002",
  21972. "p": [
  21973. {
  21974. "name": "\u503C",
  21975. "detail": "\u8981\u8A08\u7B97\u5176\u96D9\u66F2\u6B63\u5F26\u503C\u7684\u5BE6\u6578\u503C\u3002"
  21976. }
  21977. ]
  21978. },
  21979. "SQRT": {
  21980. "d": "\u8FD4\u56DE\u4E00\u500B\u6B63\u6578\u7684\u6B63\u5E73\u65B9\u6839\u3002",
  21981. "a": "\u8FD4\u56DE\u4E00\u500B\u6B63\u6578\u7684\u6B63\u5E73\u65B9\u6839\u3002",
  21982. "p": [
  21983. {
  21984. "name": "\u503C",
  21985. "detail": "\u8981\u8A08\u7B97\u5176\u6B63\u5E73\u65B9\u6839\u7684\u6578\u503C\u3002\n\n\u503C\u5FC5\u9808\u70BA\u6B63\u6578\uFF1B\u5982\u679C\u70BA\u8CA0,SQRT\u5C07\u8FD4\u56DE#NUM\uFF01\u932F\u8AA4\u3002"
  21986. }
  21987. ]
  21988. },
  21989. "SQRTPI": {
  21990. "d": "\u8FD4\u56DEPI\u8207\u7D66\u5B9A\u6B63\u6578\u4E58\u7A4D\u7684\u6B63\u5E73\u65B9\u6839\u3002",
  21991. "a": "\u8FD4\u56DEPI\u8207\u7D66\u5B9A\u6B63\u6578\u4E58\u7A4D\u7684\u6B63\u5E73\u65B9\u6839\u3002",
  21992. "p": [
  21993. {
  21994. "name": "\u503C",
  21995. "detail": "\u8981\u5C07\u5176\u8207PI\u76F8\u4E58\u4E26\u8FD4\u56DE\u8A72\u4E58\u7A4D\u7684\u5E73\u65B9\u6839\u7684\u6578\u503C\n\n\u503C\u5FC5\u9808\u70BA\u6B63\u6578\uFF1B\u5982\u679C\u70BA\u8CA0\u6578,SQRTPI\u5C07\u8FD4\u56DE#NUM\uFF01\u932F\u8AA4\u3002"
  21996. }
  21997. ]
  21998. },
  21999. "GAMMALN": {
  22000. "d": "\u8FD4\u56DE\u6307\u5B9A\u4F3D\u746A\u51FD\u6578\u7684\u4EE5e\uFF08\u6B50\u62C9\u6578\uFF09\u70BA\u5E95\u7684\u5C0D\u6578\u3002",
  22001. "a": "\u8FD4\u56DE\u6307\u5B9A\u4F3D\u746A\u51FD\u6578\u7684\u4EE5e\uFF08\u6B50\u62C9\u6578\uFF09\u70BA\u5E95\u7684\u5C0D\u6578\u3002",
  22002. "p": [
  22003. {
  22004. "name": "\u503C",
  22005. "detail": "\u4F3D\u746A\u51FD\u6578\u7684\u8F38\u5165\u503C\u3002\u8FD4\u56DE\u7684\u5C07\u662F\u4F3D\u746A\uFF08\u503C\uFF09\u7684\u81EA\u7136\u5C0D\u6578\u3002\n\n\u503C\u5FC5\u9808\u70BA\u6B63\u6578\u3002"
  22006. }
  22007. ]
  22008. },
  22009. "COS": {
  22010. "d": "\u8FD4\u56DE\u7D66\u5B9A\u89D2\u5EA6\u7684\u4F59\u5F26\u503C\uFF08\u89D2\u5EA6\u4EE5\u5F27\u5EA6\u8868\u793A\uFF09\u3002",
  22011. "a": "\u8FD4\u56DE\u7D66\u5B9A\u89D2\u5EA6\u7684\u4F59\u5F26\u503C\uFF08\u89D2\u5EA6\u4EE5\u5F27\u5EA6\u8868\u793A\uFF09\u3002",
  22012. "p": [
  22013. {
  22014. "name": "\u89D2\u5EA6",
  22015. "detail": "\u8981\u53D6\u5176\u4F59\u5F26\u503C\u7684\u89D2\u5EA6,\u4EE5\u5F27\u5EA6\u8868\u793A\u3002"
  22016. }
  22017. ]
  22018. },
  22019. "TRUNC": {
  22020. "d": "\u9664\u6307\u5B9A\u6709\u6548\u4F4D\u4E4B\u5916\u7684\u90E8\u5206,\u53D6\u6578\u64DA\u7684\u6307\u5B9A\u6709\u6548\u4F4D\u3002",
  22021. "a": "\u9664\u6307\u5B9A\u6709\u6548\u4F4D\u4E4B\u5916\u7684\u90E8\u5206",
  22022. "p": [
  22023. {
  22024. "name": "\u503C",
  22025. "detail": "\u8981\u622A\u53D6\u7684\u6578\u64DA\u3002"
  22026. },
  22027. {
  22028. "name": "\u4F4D\u6578",
  22029. "detail": '[\u53EF\u9078 - \u9810\u8A2D\u503C\u70BA0] - \u5C0F\u6578\u9EDE\u53F3\u5074\u8981\u4FDD\u7559\u7684\u6709\u6548\u4F4D\u6578\u3002\n\n\u5982\u679C\u4F4D\u6578\u5927\u65BC\u503C\u4E2D\u7684\u6709\u6548\u4F4D\u6578,\u5247\u5C07"\u503C"\u539F\u6A23\u8FD4\u56DE\u3002\n\n\u4F4D\u6578\u53EF\u4EE5\u53D6\u8CA0\u503C,\u5728\u9019\u7A2E\u60C5\u6CC1\u4E0B\u6703\u5C07\u5C0F\u6578\u9EDE\u5DE6\u5074\u6307\u5B9A\u4F4D\u6578\u7684\u503C\u66F4\u6539\u70BA\u96F6\u3002\u5C0F\u6578\u9EDE\u53F3\u5074\u7684\u6240\u6709\u4F4D\u6578\u90FD\u6703\u88AB\u6368\u68C4\u3002\u5982\u679C\u503C\u7684\u6240\u6709\u4F4D\u90FD\u88AB\u66F4\u6539\u70BA\u96F6,\u5247TRUNC\u6703\u8FD4\u56DE0\u3002'
  22030. }
  22031. ]
  22032. },
  22033. "QUOTIENT": {
  22034. "d": "\u8FD4\u56DE\u4EE5\u4E00\u500B\u6578\u9664\u4EE5\u53E6\u4E00\u500B\u6578\u6240\u5F97\u7684\u7D50\u679C,\u4E0D\u5305\u542B\u9918\u6578\u3002",
  22035. "a": "\u8FD4\u56DE\u4EE5\u4E00\u500B\u6578\u9664\u4EE5\u53E6\u4E00\u500B\u6578\u6240\u5F97\u7684\u7D50\u679C",
  22036. "p": [
  22037. {
  22038. "name": "\u88AB\u9664\u6578",
  22039. "detail": "\u8981\u88AB\u9664\u7684\u6578\u503C\u3002"
  22040. },
  22041. {
  22042. "name": "\u9664\u6578",
  22043. "detail": "\u7528\u65BC\u9664\u5176\u4ED6\u6578\u7684\u6578\u503C\u3002\n\n\u9664\u6578\u4E0D\u5F97\u70BA0"
  22044. }
  22045. ]
  22046. },
  22047. "POWER": {
  22048. "d": "\u8FD4\u56DE\u6578\u503C\u7684\u6307\u5B9A\u6B21\u5E42\u3002",
  22049. "a": "\u8FD4\u56DE\u6578\u503C\u7684\u6307\u5B9A\u6B21\u5E42\u3002",
  22050. "p": [
  22051. {
  22052. "name": "\u5E95\u6578",
  22053. "detail": "\u8981\u8A08\u7B97\u5176\u6307\u6578\u6B21\u5E42\u7684\u6578\u503C\u3002\n\n\u5982\u679C\u5E95\u6578\u70BA\u8CA0,\u5247\u6307\u6578\u5FC5\u9808\u70BA\u6574\u6578\u3002"
  22054. },
  22055. {
  22056. "name": "\u6307\u6578",
  22057. "detail": "\u6307\u5B9A\u5E95\u6578\u7684\u81EA\u4E58\u5E42\u6B21\u503C\u3002"
  22058. }
  22059. ]
  22060. },
  22061. "SUMIFS": {
  22062. "d": "\u6839\u64DA\u591A\u9805\u689D\u4EF6\u8FD4\u56DE\u7BC4\u570D\u4E4B\u548C\u3002",
  22063. "a": "\u6839\u64DA\u591A\u9805\u689D\u4EF6\u8FD4\u56DE\u7BC4\u570D\u4E4B\u548C\u3002",
  22064. "p": [
  22065. {
  22066. "name": "\u6C42\u548C\u7BC4\u570D",
  22067. "detail": "\u8981\u5C0D\u5176\u6C42\u548C\u7684\u7BC4\u570D\u3002"
  22068. },
  22069. {
  22070. "name": "\u689D\u4EF6\u7BC4\u570D1",
  22071. "detail": "\u8981\u5728\u54EA\u500B\u7BC4\u570D\u5167\u6AA2\u67E5\u689D\u4EF61\u3002"
  22072. },
  22073. {
  22074. "name": "\u689D\u4EF61",
  22075. "detail": "\u8981\u61C9\u7528\u65BC\u689D\u4EF6\u7BC4\u570D1\u7684\u6A21\u5F0F\u6216\u6E2C\u8A66\u689D\u4EF6\u3002"
  22076. },
  22077. {
  22078. "name": "\u689D\u4EF6\u7BC4\u570D2,\u689D\u4EF62\u2026",
  22079. "detail": "[ \u53EF\u9078 ] - \u8981\u6AA2\u67E5\u7684\u5176\u4ED6\u7BC4\u570D\u548C\u689D\u4EF6\u3002"
  22080. }
  22081. ]
  22082. },
  22083. "COUNTIFS": {
  22084. "d": "\u6839\u64DA\u591A\u9805\u689D\u4EF6\u8FD4\u56DE\u7BC4\u570D\u4E2D\u7684\u5132\u5B58\u683C\u6578\u91CF\u3002",
  22085. "a": "\u6839\u64DA\u591A\u9805\u689D\u4EF6\u8FD4\u56DE\u7BC4\u570D\u4E2D\u7684\u5132\u5B58\u683C\u6578\u91CF\u3002",
  22086. "p": [
  22087. {
  22088. "name": "\u689D\u4EF6\u7BC4\u570D1",
  22089. "detail": "\u8981\u5728\u54EA\u500B\u7BC4\u570D\u5167\u6AA2\u67E5\u689D\u4EF61\u3002"
  22090. },
  22091. {
  22092. "name": "\u689D\u4EF61",
  22093. "detail": "\u8981\u61C9\u7528\u65BC\u689D\u4EF6\u7BC4\u570D1\u7684\u6A21\u5F0F\u6216\u6E2C\u8A66\u689D\u4EF6\u3002"
  22094. },
  22095. {
  22096. "name": "\u689D\u4EF6\u7BC4\u570D2,\u689D\u4EF62\u2026",
  22097. "detail": "[ \u53EF\u9078 ] - \u8981\u6AA2\u67E5\u7684\u5176\u4ED6\u7BC4\u570D\u548C\u689D\u4EF6,\u53EF\u91CD\u8907\u3002"
  22098. }
  22099. ]
  22100. },
  22101. "PRODUCT": {
  22102. "d": "\u8FD4\u56DE\u5C07\u4E00\u7D44\u6578\u76F8\u4E58\u6240\u5F97\u7684\u7D50\u679C\u3002",
  22103. "a": "\u8FD4\u56DE\u5C07\u4E00\u7D44\u6578\u76F8\u4E58\u6240\u5F97\u7684\u7D50\u679C\u3002",
  22104. "p": [
  22105. {
  22106. "name": "\u4E58\u65781",
  22107. "detail": "\u7528\u65BC\u8A08\u7B97\u4E58\u7A4D\u7684\u7B2C\u4E00\u500B\u6578\u503C\u6216\u7BC4\u570D\u3002"
  22108. },
  22109. {
  22110. "name": "\u4E58\u65782 ... \u4E58\u657830",
  22111. "detail": "[\u53EF\u9078] - \u8981\u76F8\u4E58\u7684\u5176\u4ED6\u6578\u503C"
  22112. }
  22113. ]
  22114. },
  22115. "HARMEAN": {
  22116. "d": "\u8A08\u7B97\u6578\u64DA\u96C6\u7684\u8ABF\u548C\u5E73\u5747\u503C\u3002",
  22117. "a": "\u8A08\u7B97\u6578\u64DA\u96C6\u7684\u8ABF\u548C\u5E73\u5747\u503C\u3002",
  22118. "p": [
  22119. {
  22120. "name": "\u503C1",
  22121. "detail": "\u6A23\u672C\u4E2D\u7684\u7B2C\u4E00\u9805\u503C\u6216\u7BC4\u570D\u3002"
  22122. },
  22123. {
  22124. "name": "\u503C2, ...",
  22125. "detail": "[\u53EF\u9078] - \u6578\u64DA\u96C6\u4E2D\u5305\u542B\u7684\u5176\u4ED6\u6578\u503C\u6216\u7BC4\u570D\u3002"
  22126. }
  22127. ]
  22128. },
  22129. "HYPGEOMDIST": {
  22130. "d": "\u8FD4\u56DE\u8D85\u5E7E\u4F55\u5206\u4F48\u3002\u5982\u679C\u5DF2\u77E5\u6A23\u672C\u91CF\u3001\u7E3D\u9AD4\u6210\u529F\u6B21\u6578\u548C\u7E3D\u9AD4\u5927\u5C0F,\u5247 HYPGEOM.DIST \u8FD4\u56DE\u6A23\u672C\u53D6\u5F97\u5DF2\u77E5\u6210\u529F\u6B21\u6578\u7684\u6982\u7387\u3002",
  22131. "a": "\u8FD4\u56DE\u8D85\u5E7E\u4F55\u5206\u4F48\u3002",
  22132. "p": [
  22133. {
  22134. "name": "Sample_s",
  22135. "detail": "\u6A23\u672C\u4E2D\u6210\u529F\u7684\u6B21\u6578\u3002"
  22136. },
  22137. {
  22138. "name": "Number_sample",
  22139. "detail": "\u6A23\u672C\u91CF\u3002"
  22140. },
  22141. {
  22142. "name": "Population_s",
  22143. "detail": "\u7E3D\u9AD4\u4E2D\u6210\u529F\u7684\u6B21\u6578\u3002"
  22144. },
  22145. {
  22146. "name": "Number_pop",
  22147. "detail": "\u7E3D\u9AD4\u5927\u5C0F\u3002"
  22148. },
  22149. {
  22150. "name": "cumulative",
  22151. "detail": "\u51B3\u5B9A\u51FD\u6578\u5F62\u5F0F\u7684\u908F\u8F2F\u503C\u3002\n\n\u5982\u679Ccumulative\u70BATRUE\uFF08\uFF09,\u5247HYPGEOM.DIST\u8FD4\u56DE\u7D2F\u7A4D\u5206\u4F48\u51FD\u6578\uFF1B\n\n\u5982\u679C\u70BAFALSE\uFF08\uFF09,\u5247\u8FD4\u56DE\u6982\u7387\u5BC6\u5EA6\u51FD\u6578\u3002"
  22152. }
  22153. ]
  22154. },
  22155. "INTERCEPT": {
  22156. "d": "\u8A08\u7B97\u6578\u64DA\u96C6\u7684\u7DDA\u6027\u56DE\u6B78\u65B9\u7A0B\u76F4\u7DDA\u8207 Y \u8EF8\u7684\u76F8\u4EA4\u9EDE\uFF08x=0\uFF09\u7684y\u503C\u3002",
  22157. "a": "\u8A08\u7B97\u6578\u64DA\u96C6\u7684\u7DDA\u6027\u56DE\u6B78\u65B9\u7A0B\u76F4\u7DDA\u8207 Y \u8EF8\u7684\u76F8\u4EA4\u9EDE\uFF08x=0\uFF09\u7684y\u503C\u3002",
  22158. "p": [
  22159. {
  22160. "name": "\u6578\u64DA_y",
  22161. "detail": "\u4EE3\u8868\u56E0\u8B8A\u6578\u6578\u64DA\u6578\u7D44\u6216\u77E9\u9663\u7684\u7BC4\u570D\u3002"
  22162. },
  22163. {
  22164. "name": "\u6578\u64DA_x",
  22165. "detail": "\u4EE3\u8868\u5F15\u6578\u6578\u64DA\u6578\u7D44\u6216\u77E9\u9663\u7684\u7BC4\u570D\u3002"
  22166. }
  22167. ]
  22168. },
  22169. "KURT": {
  22170. "d": "\u8A08\u7B97\u6578\u64DA\u96C6\u7684\u5CED\u5EA6,\u8A72\u540D\u984D\u8A13\u793A\u6578\u64DA\u96C6\uFF08\u5206\u4F48\uFF09\u7684\u5F62\u614B,\u5C24\u5176\u662F\u8A72\u5F62\u614B\u7684\u9661\u5CED\u7A0B\u5EA6\u3002",
  22171. "a": "\u8A08\u7B97\u6578\u64DA\u96C6\u7684\u5CED\u5EA6",
  22172. "p": [
  22173. {
  22174. "name": "\u503C1",
  22175. "detail": "\u6578\u64DA\u96C6\u4E2D\u7684\u7B2C\u4E00\u500B\u503C\u6216\u7BC4\u570D\u3002"
  22176. },
  22177. {
  22178. "name": "\u503C2, ...",
  22179. "detail": "[\u53EF\u9078] - \u6578\u64DA\u96C6\u4E2D\u5305\u542B\u7684\u5176\u4ED6\u503C\u6216\u7BC4\u570D\u3002"
  22180. }
  22181. ]
  22182. },
  22183. "LARGE": {
  22184. "d": "\u8FD4\u56DE\u6578\u64DA\u96C6\u4E2D\u7B2C n \u500B\u6700\u5927\u5143\u7D20,n \u7531\u7528\u6236\u6307\u5B9A\u3002",
  22185. "a": "\u8FD4\u56DE\u6578\u64DA\u96C6\u4E2D\u7B2C n \u500B\u6700\u5927\u5143\u7D20",
  22186. "p": [
  22187. {
  22188. "name": "\u6578\u64DA",
  22189. "detail": "\u5305\u542B\u76F8\u95DC\u6578\u64DA\u96C6\u7684\u6578\u7D44\u6216\u7BC4\u570D\u3002"
  22190. },
  22191. {
  22192. "name": "n",
  22193. "detail": "\u8981\u8FD4\u56DE\u7684\u5143\u7D20\u7684\u6392\u884C\u4F4D\u7F6E\uFF08\u5F9E\u5927\u5230\u5C0F\u9806\u5E8F\uFF09\u3002\n\n\u4F8B\u5982,\u5C07n\u8A2D\u70BA4\u5C07\u4F7FLARGE\u8FD4\u56DE\u6578\u64DA\u4E2D\u6392\u540D\u7B2C4\u7684\u6700\u5927\u5143\u7D20\u3002"
  22194. }
  22195. ]
  22196. },
  22197. "STDEVA": {
  22198. "d": "\u57FA\u65BC\u6A23\u672C\u8A08\u7B97\u6A19\u6E96\u5DEE,\u5C07\u6587\u5B57\u53D6\u503C\u70BA0\u3002",
  22199. "a": "\u57FA\u65BC\u6A23\u672C\u8A08\u7B97\u6A19\u6E96\u5DEE",
  22200. "p": [
  22201. {
  22202. "name": "\u503C1",
  22203. "detail": "\u6A23\u672C\u4E2D\u7684\u7B2C\u4E00\u9805\u503C\u6216\u7BC4\u570D\u3002"
  22204. },
  22205. {
  22206. "name": "\u503C2,\u2026",
  22207. "detail": "[\u53EF\u9078] - \u6A23\u672C\u4E2D\u5305\u542B\u7684\u5176\u4ED6\u503C\u6216\u7BC4\u570D\u3002"
  22208. }
  22209. ]
  22210. },
  22211. "STDEVP": {
  22212. "d": "\u57FA\u65BC\u6A23\u672C\u7E3D\u9AD4\u8A08\u7B97\u6A19\u6E96\u5DEE\u3002",
  22213. "a": "\u57FA\u65BC\u6A23\u672C\u7E3D\u9AD4\u8A08\u7B97\u6A19\u6E96\u5DEE\u3002",
  22214. "p": [
  22215. {
  22216. "name": "\u503C1",
  22217. "detail": "\u6578\u64DA\u96C6\u4E2D\u7684\u7B2C\u4E00\u500B\u503C\u6216\u7BC4\u570D\u3002"
  22218. },
  22219. {
  22220. "name": "\u503C2, ...",
  22221. "detail": "[\u53EF\u9078] - \u6578\u64DA\u96C6\u4E2D\u5305\u542B\u7684\u5176\u4ED6\u503C\u6216\u7BC4\u570D\u3002"
  22222. }
  22223. ]
  22224. },
  22225. "GEOMEAN": {
  22226. "d": "\u8A08\u7B97\u6578\u64DA\u96C6\u7684\u5E7E\u4F55\u5E73\u5747\u503C\u3002",
  22227. "a": "\u8A08\u7B97\u6578\u64DA\u96C6\u7684\u5E7E\u4F55\u5E73\u5747\u503C\u3002",
  22228. "p": [
  22229. {
  22230. "name": "\u503C1",
  22231. "detail": "\u6A23\u672C\u4E2D\u7684\u7B2C\u4E00\u9805\u503C\u6216\u7BC4\u570D\u3002"
  22232. },
  22233. {
  22234. "name": "\u503C2, ...",
  22235. "detail": "[\u53EF\u9078] - \u6578\u64DA\u96C6\u4E2D\u5305\u542B\u7684\u5176\u4ED6\u6578\u503C\u6216\u7BC4\u570D\u3002"
  22236. }
  22237. ]
  22238. },
  22239. "RANK_EQ": {
  22240. "d": "\u8FD4\u56DE\u6307\u5B9A\u503C\u5728\u6578\u64DA\u96C6\u4E2D\u7684\u6392\u540D\u3002\u5982\u679C\u76F8\u540C\u7684\u503C\u5728\u6578\u64DA\u96C6\u4E2D\u5B58\u5728\u591A\u9805,\u5247\u8FD4\u56DE\u5176\u4E2D\u7684\u6700\u9AD8\u6392\u540D\u3002",
  22241. "a": "\u8FD4\u56DE\u6307\u5B9A\u503C\u5728\u6578\u64DA\u96C6\u4E2D\u7684\u6392\u540D\u3002\u5982\u679C\u76F8\u540C\u7684\u503C\u5728\u6578\u64DA\u96C6\u4E2D\u5B58\u5728\u591A\u9805,\u5247\u8FD4\u56DE\u5176\u4E2D\u7684\u6700\u9AD8\u6392\u540D\u3002",
  22242. "p": [
  22243. {
  22244. "name": "number",
  22245. "detail": "\u8981\u78BA\u5B9A\u5176\u6392\u540D\u7684\u503C\u3002"
  22246. },
  22247. {
  22248. "name": "ref",
  22249. "detail": "\u5305\u542B\u76F8\u95DC\u6578\u64DA\u96C6\u7684\u6578\u7D44\u6216\u7BC4\u570D\u3002"
  22250. },
  22251. {
  22252. "name": "order",
  22253. "detail": '[\u53EF\u9078-\u9ED8\u8A8D\u70BA\u6309\u964D\u5E8F\uFF08FALSE\uFF08\uFF09\uFF09] - \u8981\u6309\u6607\u51AA\u9084\u662F\u6309\u964D\u5E8F\u8003\u616E"data"\u4E2D\u7684\u503C\u3002'
  22254. }
  22255. ]
  22256. },
  22257. "RANK_AVG": {
  22258. "d": "\u8FD4\u56DE\u6307\u5B9A\u503C\u5728\u6578\u64DA\u96C6\u4E2D\u7684\u6392\u540D\u3002\u5982\u679C\u76F8\u540C\u7684\u503C\u5728\u6578\u64DA\u96C6\u4E2D\u5B58\u5728\u591A\u9805,\u5247\u8FD4\u56DE\u9019\u4E9B\u9805\u6392\u540D\u7684\u5E73\u5747\u503C\u3002",
  22259. "a": "\u8FD4\u56DE\u6307\u5B9A\u503C\u5728\u6578\u64DA\u96C6\u4E2D\u7684\u6392\u540D\u3002\u5982\u679C\u76F8\u540C\u7684\u503C\u5728\u6578\u64DA\u96C6\u4E2D\u5B58\u5728\u591A\u9805,\u5247\u8FD4\u56DE\u9019\u4E9B\u9805\u6392\u540D\u7684\u5E73\u5747\u503C\u3002",
  22260. "p": [
  22261. {
  22262. "name": "number",
  22263. "detail": "\u8981\u78BA\u5B9A\u5176\u6392\u540D\u7684\u503C\u3002"
  22264. },
  22265. {
  22266. "name": "ref",
  22267. "detail": "\u5305\u542B\u76F8\u95DC\u6578\u64DA\u96C6\u7684\u6578\u7D44\u6216\u7BC4\u570D\u3002"
  22268. },
  22269. {
  22270. "name": "order",
  22271. "detail": '[\u53EF\u9078-\u9ED8\u8A8D\u70BA\u6309\u964D\u5E8F\uFF08FALSE\uFF08\uFF09\uFF09] - \u8981\u6309\u6607\u51AA\u9084\u662F\u6309\u964D\u5E8F\u8003\u616E"data"\u4E2D\u7684\u503C\u3002'
  22272. }
  22273. ]
  22274. },
  22275. "PERCENTRANK_EXC": {
  22276. "d": "\u4EE5\u767E\u5206\u6578\u5F62\u5F0F\u8FD4\u56DE\u6307\u5B9A\u503C\u5728\u7D66\u5B9A\u6578\u64DA\u96C6\u4E2D\u7684\u767E\u5206\u6BD4\u6392\u540D\uFF08\u4ECB\u65BC0\u548C1\u4E4B\u9593,\u4E0D\u5305\u62EC\u5169\u7AEF\u503C\uFF09\u3002",
  22277. "a": "\u4EE5\u767E\u5206\u6578\u5F62\u5F0F\u8FD4\u56DE\u6307\u5B9A\u503C\u5728\u7D66\u5B9A\u6578\u64DA\u96C6\u4E2D\u7684\u767E\u5206\u6BD4\u6392\u540D\uFF08\u4ECB\u65BC0\u548C1\u4E4B\u9593,\u4E0D\u5305\u62EC\u5169\u7AEF\u503C\uFF09\u3002",
  22278. "p": [
  22279. {
  22280. "name": "data",
  22281. "detail": "\u5305\u542B\u76F8\u95DC\u6578\u64DA\u96C6\u7684\u6578\u7D44\u6216\u7BC4\u570D\u3002"
  22282. },
  22283. {
  22284. "name": "x",
  22285. "detail": "\u8981\u78BA\u5B9A\u5176\u767E\u5206\u6BD4\u6392\u4F4D\u7684\u503C\u3002"
  22286. },
  22287. {
  22288. "name": "significance",
  22289. "detail": "[\u53EF\u9078-\u9810\u8A2D\u503C\u70BA3] - \u8981\u5728\u8A08\u7B97\u4E2D\u4F7F\u7528\u7684\u6709\u6548\u4F4D\u6578\u3002"
  22290. }
  22291. ]
  22292. },
  22293. "PERCENTRANK_INC": {
  22294. "d": "\u4EE5\u767E\u5206\u6BD4\u5F62\u5F0F\u8FD4\u56DE\u6307\u5B9A\u503C\u5728\u7D66\u5B9A\u6578\u64DA\u96C6\u4E2D\u7684\u767E\u5206\u6BD4\u6392\u540D\uFF08\u4ECB\u65BC0\u548C1\u4E4B\u9593,\u5305\u62EC\u5169\u7AEF\u503C\uFF09\u3002",
  22295. "a": "\u4EE5\u767E\u5206\u6BD4\u5F62\u5F0F\u8FD4\u56DE\u6307\u5B9A\u503C\u5728\u7D66\u5B9A\u6578\u64DA\u96C6\u4E2D\u7684\u767E\u5206\u6BD4\u6392\u540D\uFF08\u4ECB\u65BC0\u548C1\u4E4B\u9593,\u5305\u62EC\u5169\u7AEF\u503C\uFF09\u3002",
  22296. "p": [
  22297. {
  22298. "name": "data",
  22299. "detail": "\u5305\u542B\u76F8\u95DC\u6578\u64DA\u96C6\u7684\u6578\u7D44\u6216\u7BC4\u570D\u3002"
  22300. },
  22301. {
  22302. "name": "x",
  22303. "detail": "\u8981\u78BA\u5B9A\u5176\u767E\u5206\u6BD4\u6392\u4F4D\u7684\u503C\u3002"
  22304. },
  22305. {
  22306. "name": "significance",
  22307. "detail": "[\u53EF\u9078-\u9810\u8A2D\u503C\u70BA3] - \u8981\u5728\u8A08\u7B97\u4E2D\u4F7F\u7528\u7684\u6709\u6548\u4F4D\u6578\u3002"
  22308. }
  22309. ]
  22310. },
  22311. "FORECAST": {
  22312. "d": "\u57FA\u65BC\u6578\u64DA\u96C6\u7684\u7DDA\u6027\u56DE\u6B78,\u8A08\u7B97\u6307\u5B9A x \u7684\u9810\u671F y \u503C\u3002",
  22313. "a": "\u57FA\u65BC\u6578\u64DA\u96C6\u7684\u7DDA\u6027\u56DE\u6B78",
  22314. "p": [
  22315. {
  22316. "name": "x",
  22317. "detail": "x\u8EF8\u4E0A\u7528\u65BC\u9810\u6E2C\u7684\u503C\u3002"
  22318. },
  22319. {
  22320. "name": "\u6578\u64DA_y",
  22321. "detail": "\u4EE3\u8868\u56E0\u8B8A\u6578\u6578\u64DA\u6578\u7D44\u6216\u77E9\u9663\u7684\u7BC4\u570D\u3002"
  22322. },
  22323. {
  22324. "name": "\u6578\u64DA_x",
  22325. "detail": "\u4EE3\u8868\u5F15\u6578\u6578\u64DA\u6578\u7D44\u6216\u77E9\u9663\u7684\u7BC4\u570D\u3002"
  22326. }
  22327. ]
  22328. },
  22329. "FISHERINV": {
  22330. "d": "\u8FD4\u56DE\u6307\u5B9A\u6578\u503C\u7684 Fisher \u9006\u8B8A\u63DB\u3002",
  22331. "a": "\u8FD4\u56DE\u6307\u5B9A\u6578\u503C\u7684 Fisher \u9006\u8B8A\u63DB\u3002",
  22332. "p": [
  22333. {
  22334. "name": "y",
  22335. "detail": "\u8981\u8A08\u7B97\u5176Fisher\u9006\u8B8A\u63DB\u7684\u6578\u503C\u3002"
  22336. }
  22337. ]
  22338. },
  22339. "FISHER": {
  22340. "d": "\u8FD4\u56DE\u6307\u5B9A\u6578\u503C\u7684 Fisher \u8B8A\u63DB\u3002",
  22341. "a": "\u8FD4\u56DE\u6307\u5B9A\u6578\u503C\u7684 Fisher \u8B8A\u63DB\u3002",
  22342. "p": [
  22343. {
  22344. "name": "x",
  22345. "detail": "\u8981\u8A08\u7B97\u5176Fisher\u8B8A\u63DB\u7684\u6578\u503C\u3002"
  22346. }
  22347. ]
  22348. },
  22349. "MODE_SNGL": {
  22350. "d": "\u8FD4\u56DE\u6578\u64DA\u96C6\u4E2D\u51FA\u73FE\u6B21\u6578\u6700\u591A\u7684\u503C\u3002",
  22351. "a": "\u8FD4\u56DE\u6578\u64DA\u96C6\u4E2D\u51FA\u73FE\u6B21\u6578\u6700\u591A\u7684\u503C\u3002",
  22352. "p": [
  22353. {
  22354. "name": "\u503C1",
  22355. "detail": "\u8A08\u7B97\u6A21\u5F0F\u6642\u8981\u6AA2\u67E5\u7684\u7B2C\u4E00\u500B\u503C\u6216\u7BC4\u570D\u3002"
  22356. },
  22357. {
  22358. "name": "\u503C2, ...",
  22359. "detail": "[\u53EF\u9078] - \u5728\u8A08\u7B97\u6A21\u5F0F\u6642\u8981\u8003\u616E\u7684\u5176\u4ED6\u6578\u503C\u6216\u7BC4\u570D\u3002"
  22360. }
  22361. ]
  22362. },
  22363. "WEIBULL_DIST": {
  22364. "d": "\u7D66\u5B9A\u5F62\u72C0\u548C\u5C3A\u5EA6,\u8FD4\u56DE\u97CB\u4F2F\u5206\u4F48\u51FD\u6578\uFF08\u6216\u97CB\u4F2F\u7D2F\u7A4D\u5206\u4F48\u51FD\u6578\uFF09\u7684\u503C\u3002",
  22365. "a": "\u7D66\u5B9A\u5F62\u72C0\u548C\u5C3A\u5EA6",
  22366. "p": [
  22367. {
  22368. "name": "x",
  22369. "detail": "WEIBULL \u5206\u4F48\u51FD\u6578\u7684\u8F38\u5165\u503C\u3002"
  22370. },
  22371. {
  22372. "name": "alpha",
  22373. "detail": "Weibull \u5206\u4F48\u51FD\u6578\u7684\u5F62\u72C0\u53C3\u6578\u3002\n\n alpha\u503C\u5FC5\u9808\u5927\u65BC0\u3002"
  22374. },
  22375. {
  22376. "name": "beta",
  22377. "detail": "Weibull \u5206\u4F48\u51FD\u6578\u7684\u5C3A\u5EA6\u53C3\u6578\u3002\n\n beta\u503C\u5FC5\u9808\u5927\u65BC0\u3002"
  22378. },
  22379. {
  22380. "name": "cumulative",
  22381. "detail": "TRUE\uFF08\uFF09\u8868\u793A\u4F7F\u7528\u7D2F\u7A4D\u5206\u4F48\u51FD\u6578,FALSE\uFF08\uFF09\u5247\u8868\u793A\u4F7F\u7528\u6982\u7387\u5BC6\u5EA6\u51FD\u6578\u3002"
  22382. }
  22383. ]
  22384. },
  22385. "COUNT": {
  22386. "d": "\u8FD4\u56DE\u6578\u64DA\u96C6\u4E2D\u6578\u503C\u7684\u500B\u6578\u3002",
  22387. "a": "\u8FD4\u56DE\u6578\u64DA\u96C6\u4E2D\u6578\u503C\u7684\u500B\u6578\u3002",
  22388. "p": [
  22389. {
  22390. "name": "\u503C1",
  22391. "detail": "\u8A08\u6578\u6642\u8981\u6AA2\u67E5\u7684\u7B2C\u4E00\u500B\u503C\u6216\u7BC4\u570D\u3002"
  22392. },
  22393. {
  22394. "name": "\u503C2, ...",
  22395. "detail": "[\u53EF\u9078] - \u5728\u8A08\u6578\u6642\u8981\u6AA2\u67E5\u7684\u5176\u4ED6\u503C\u6216\u7BC4\u570D\u3002"
  22396. }
  22397. ]
  22398. },
  22399. "COUNTA": {
  22400. "d": "\u8FD4\u56DE\u6578\u64DA\u96C6\u4E2D\u503C\u7684\u6578\u91CF\u3002",
  22401. "a": "\u8FD4\u56DE\u6578\u64DA\u96C6\u4E2D\u503C\u7684\u6578\u91CF\u3002",
  22402. "p": [
  22403. {
  22404. "name": "\u503C1",
  22405. "detail": "\u8A08\u6578\u6642\u8981\u6AA2\u67E5\u7684\u7B2C\u4E00\u500B\u503C\u6216\u7BC4\u570D\u3002"
  22406. },
  22407. {
  22408. "name": "\u503C2, ...",
  22409. "detail": "[\u53EF\u9078] - \u5728\u8A08\u6578\u6642\u8981\u6AA2\u67E5\u7684\u5176\u4ED6\u503C\u6216\u7BC4\u570D\u3002"
  22410. }
  22411. ]
  22412. },
  22413. "AVEDEV": {
  22414. "d": "\u8A08\u7B97\u6578\u64DA\u8207\u6578\u64DA\u96C6\u5E73\u5747\u503C\u4E4B\u9593\u7684\u504F\u5DEE\u5927\u5C0F\u7684\u5E73\u5747\u503C\u3002",
  22415. "a": "\u8A08\u7B97\u6578\u64DA\u8207\u6578\u64DA\u96C6\u5E73\u5747\u503C\u4E4B\u9593\u7684\u504F\u5DEE\u5927\u5C0F\u7684\u5E73\u5747\u503C\u3002",
  22416. "p": [
  22417. {
  22418. "name": "\u503C1",
  22419. "detail": "\u6A23\u672C\u4E2D\u7684\u7B2C\u4E00\u9805\u503C\u6216\u7BC4\u570D\u3002"
  22420. },
  22421. {
  22422. "name": "\u503C2, ...",
  22423. "detail": "[\u53EF\u9078] - \u6A23\u672C\u4E2D\u5305\u542B\u7684\u5176\u4ED6\u503C\u6216\u7BC4\u570D\u3002"
  22424. }
  22425. ]
  22426. },
  22427. "AVERAGE": {
  22428. "d": "\u8FD4\u56DE\u6578\u64DA\u96C6\u7684\u7B97\u8853\u5E73\u5747\u503C,\u5C0D\u6587\u5B57\u5FFD\u7565\u4E0D\u8A08\u3002",
  22429. "a": "\u8FD4\u56DE\u6578\u64DA\u96C6\u7684\u7B97\u8853\u5E73\u5747\u503C",
  22430. "p": [
  22431. {
  22432. "name": "\u503C1",
  22433. "detail": "\u8A08\u7B97\u5E73\u5747\u503C\u6642\u7528\u5230\u7684\u7B2C\u4E00\u500B\u6578\u503C\u6216\u7BC4\u570D\u3002"
  22434. },
  22435. {
  22436. "name": "\u503C2, ...",
  22437. "detail": "[\u53EF\u9078] - \u5728\u8A08\u7B97\u5E73\u5747\u503C\u6642\u8981\u8003\u616E\u7684\u5176\u4ED6\u6578\u503C\u6216\u7BC4\u570D\u3002"
  22438. }
  22439. ]
  22440. },
  22441. "AVERAGEA": {
  22442. "d": "\u8FD4\u56DE\u6578\u64DA\u96C6\u7684\u7B97\u8853\u5E73\u5747\u503C\u3002",
  22443. "a": "\u8FD4\u56DE\u6578\u64DA\u96C6\u7684\u7B97\u8853\u5E73\u5747\u503C\u3002",
  22444. "p": [
  22445. {
  22446. "name": "\u503C1",
  22447. "detail": "\u8A08\u7B97\u5E73\u5747\u503C\u6642\u7528\u5230\u7684\u7B2C\u4E00\u500B\u6578\u503C\u6216\u7BC4\u570D\u3002"
  22448. },
  22449. {
  22450. "name": "\u503C2, ...",
  22451. "detail": "[\u53EF\u9078] - \u5728\u8A08\u7B97\u5E73\u5747\u503C\u6642\u8981\u8003\u616E\u7684\u5176\u4ED6\u6578\u503C\u6216\u7BC4\u570D\u3002"
  22452. }
  22453. ]
  22454. },
  22455. "BINOM_DIST": {
  22456. "d": "\u8FD4\u56DE\u4E00\u5143\u4E8C\u9805\u5F0F\u5206\u4F48\u7684\u6982\u7387\u3002",
  22457. "a": "\u8FD4\u56DE\u4E00\u5143\u4E8C\u9805\u5F0F\u5206\u4F48\u7684\u6982\u7387\u3002",
  22458. "p": [
  22459. {
  22460. "name": "number_s",
  22461. "detail": "\u8A66\u9A57\u7684\u6210\u529F\u6B21\u6578\u3002"
  22462. },
  22463. {
  22464. "name": "trials",
  22465. "detail": "\u7368\u7ACB\u6AA2\u9A57\u7684\u6B21\u6578\u3002"
  22466. },
  22467. {
  22468. "name": "probability_s",
  22469. "detail": "\u4EFB\u4E00\u7D66\u5B9A\u6AA2\u9A57\u7684\u6210\u529F\u6982\u7387\u3002"
  22470. },
  22471. {
  22472. "name": "cumulative",
  22473. "detail": "\u662F\u5426\u4F7F\u7528\u4E8C\u9805\u5F0F\u7D2F\u7A4D\u5206\u4F48\u3002"
  22474. }
  22475. ]
  22476. },
  22477. "BINOM_INV": {
  22478. "d": "\u8A08\u7B97\u7D2F\u7A4D\u4E8C\u9805\u5F0F\u5206\u4F48\u5927\u65BC\u6216\u7B49\u65BC\u6307\u5B9A\u689D\u4EF6\u7684\u6700\u5C0F\u503C\u3002",
  22479. "a": "\u8A08\u7B97\u7D2F\u7A4D\u4E8C\u9805\u5F0F\u5206\u4F48\u5927\u65BC\u6216\u7B49\u65BC\u6307\u5B9A\u689D\u4EF6\u7684\u6700\u5C0F\u503C\u3002",
  22480. "p": [
  22481. {
  22482. "name": "trials",
  22483. "detail": "\u8C9D\u52AA\u5229\u8A66\u9A57\u6B21\u6578\u3002"
  22484. },
  22485. {
  22486. "name": "probability_s",
  22487. "detail": "\u4EFB\u4E00\u6B21\u7D66\u5B9A\u6AA2\u9A57\u7684\u6210\u529F\u6982\u7387\u3002"
  22488. },
  22489. {
  22490. "name": "alpha",
  22491. "detail": "\u671F\u671B\u7684\u81E8\u754C\u6982\u7387\u3002"
  22492. }
  22493. ]
  22494. },
  22495. "CONFIDENCE_NORM": {
  22496. "d": "\u8A08\u7B97\u5E38\u6001\u5206\u914D\u7684\u7F6E\u4FE1\u5340\u9593\u7684\u4E00\u534A\u5BEC\u5EA6\u3002",
  22497. "a": "\u8A08\u7B97\u5E38\u6001\u5206\u914D\u7684\u7F6E\u4FE1\u5340\u9593\u7684\u4E00\u534A\u5BEC\u5EA6\u3002",
  22498. "p": [
  22499. {
  22500. "name": "alpha",
  22501. "detail": "\u7528\u4F86\u8A08\u7B97\u7F6E\u4FE1\u6C34\u51C6\u7684\u986F\u8457\u6027\u6C34\u51C6\u3002\n\n\u7F6E\u4FE1\u6C34\u51C6\u7B49\u65BC100*\uFF081 - alpha\uFF09%,\u4EA6\u5373,\u5982\u679C alpha \u70BA0.05,\u5247\u7F6E\u4FE1\u6C34\u51C6\u70BA 95%\u3002"
  22502. },
  22503. {
  22504. "name": "standard_dev",
  22505. "detail": "\u6578\u64DA\u5340\u57DF\u7684\u7E3D\u9AD4\u6A19\u6E96\u5DEE\u3002"
  22506. },
  22507. {
  22508. "name": "size",
  22509. "detail": "\u6A23\u672C\u7E3D\u91CF\u7684\u5927\u5C0F\u3002"
  22510. }
  22511. ]
  22512. },
  22513. "CORREL": {
  22514. "d": "\u8A08\u7B97\u7D66\u5B9A\u6578\u64DA\u96C6\u7684\u76AE\u723E\u905C\u7A4D\u77E9\u76F8\u95DC\u4FC2\u6578 r\u3002",
  22515. "a": "\u8A08\u7B97\u7D66\u5B9A\u6578\u64DA\u96C6\u7684\u76AE\u723E\u905C\u7A4D\u77E9\u76F8\u95DC\u4FC2\u6578 r\u3002",
  22516. "p": [
  22517. {
  22518. "name": "\u6578\u64DA_y",
  22519. "detail": "\u4EE3\u8868\u56E0\u8B8A\u6578\u6578\u64DA\u6578\u7D44\u6216\u77E9\u9663\u7684\u7BC4\u570D\u3002"
  22520. },
  22521. {
  22522. "name": "\u6578\u64DA_x",
  22523. "detail": "\u4EE3\u8868\u5F15\u6578\u6578\u64DA\u6578\u7D44\u6216\u77E9\u9663\u7684\u7BC4\u570D\u3002"
  22524. }
  22525. ]
  22526. },
  22527. "COVARIANCE_P": {
  22528. "d": "\u8A08\u7B97\u6578\u64DA\u96C6\u7684\u7E3D\u9AD4\u5354\u65B9\u5DEE\u3002",
  22529. "a": "\u8A08\u7B97\u6578\u64DA\u96C6\u7684\u7E3D\u9AD4\u5354\u65B9\u5DEE\u3002",
  22530. "p": [
  22531. {
  22532. "name": "\u6578\u64DA_x",
  22533. "detail": "\u4EE3\u8868\u5F15\u6578\u6578\u64DA\u6578\u7D44\u6216\u77E9\u9663\u7684\u7BC4\u570D\u3002"
  22534. },
  22535. {
  22536. "name": "\u6578\u64DA_y",
  22537. "detail": "\u4EE3\u8868\u56E0\u8B8A\u6578\u6578\u64DA\u6578\u7D44\u6216\u77E9\u9663\u7684\u7BC4\u570D\u3002"
  22538. }
  22539. ]
  22540. },
  22541. "COVARIANCE_S": {
  22542. "d": "\u8A08\u7B97\u6578\u64DA\u96C6\u7684\u6A23\u672C\u5354\u65B9\u5DEE\u3002",
  22543. "a": "\u8A08\u7B97\u6578\u64DA\u96C6\u7684\u6A23\u672C\u5354\u65B9\u5DEE\u3002",
  22544. "p": [
  22545. {
  22546. "name": "\u6578\u64DA_x",
  22547. "detail": "\u4EE3\u8868\u5F15\u6578\u6578\u64DA\u6578\u7D44\u6216\u77E9\u9663\u7684\u7BC4\u570D\u3002"
  22548. },
  22549. {
  22550. "name": "\u6578\u64DA_y",
  22551. "detail": "\u4EE3\u8868\u56E0\u8B8A\u6578\u6578\u64DA\u6578\u7D44\u6216\u77E9\u9663\u7684\u7BC4\u570D\u3002"
  22552. }
  22553. ]
  22554. },
  22555. "DEVSQ": {
  22556. "d": "\u57FA\u65BC\u6A23\u672C\u8A08\u7B97\u5176\u504F\u5DEE\u7684\u5E73\u65B9\u548C\u3002",
  22557. "a": "\u57FA\u65BC\u6A23\u672C\u8A08\u7B97\u5176\u504F\u5DEE\u7684\u5E73\u65B9\u548C\u3002",
  22558. "p": [
  22559. {
  22560. "name": "\u503C1",
  22561. "detail": "\u6A23\u672C\u4E2D\u7684\u7B2C\u4E00\u9805\u503C\u6216\u7BC4\u570D\u3002"
  22562. },
  22563. {
  22564. "name": "\u503C2, ...",
  22565. "detail": "[\u53EF\u9078] - \u6A23\u672C\u4E2D\u5305\u542B\u7684\u5176\u4ED6\u503C\u6216\u7BC4\u570D\u3002"
  22566. }
  22567. ]
  22568. },
  22569. "EXPON_DIST": {
  22570. "d": "\u8FD4\u56DE\u5E36\u6709\u6307\u5B9A Lambda \u548C\u6307\u5B9A\u503C\u7684\u6307\u6578\u5206\u4F48\u51FD\u6578\u7684\u503C\u3002",
  22571. "a": "\u8FD4\u56DE\u5E36\u6709\u6307\u5B9A Lambda \u548C\u6307\u5B9A\u503C\u7684\u6307\u6578\u5206\u4F48\u51FD\u6578\u7684\u503C\u3002",
  22572. "p": [
  22573. {
  22574. "name": "x",
  22575. "detail": "\u6307\u6578\u5206\u4F48\u51FD\u6578\u7684\u8F38\u5165\u503C\u3002"
  22576. },
  22577. {
  22578. "name": "lambda",
  22579. "detail": "\u7528\u65BC\u6307\u5B9A\u6307\u6578\u5206\u4F48\u51FD\u6578\u7684 lambda \u503C\u3002"
  22580. },
  22581. {
  22582. "name": "cumulative",
  22583. "detail": "\u662F\u5426\u4F7F\u7528\u6307\u6578\u7D2F\u7A4D\u5206\u4F48\u3002"
  22584. }
  22585. ]
  22586. },
  22587. "AVERAGEIF": {
  22588. "d": "\u6839\u64DA\u689D\u4EF6\u8FD4\u56DE\u7BC4\u570D\u7684\u5E73\u5747\u503C\u3002",
  22589. "a": "\u6839\u64DA\u689D\u4EF6\u8FD4\u56DE\u7BC4\u570D\u7684\u5E73\u5747\u503C\u3002",
  22590. "p": [
  22591. {
  22592. "name": "criteria_range",
  22593. "detail": "\u8981\u5C0D\u5176\u6AA2\u67E5 criterion \u7684\u7BC4\u570D\u3002"
  22594. },
  22595. {
  22596. "name": "criterion",
  22597. "detail": '\u8981\u61C9\u7528\u65BCcriteria_range\u7684\u6A21\u5F0F\u6216\u6E2C\u8A66\u689D\u4EF6\u3002\n\n\u7B49\u65BC:"\u6587\u5B57" \u6216 1 \u6216 "=\u6587\u5B57" \u6216 "=1"\n\n\u5927\u65BC:">1"\n\n\u5927\u65BC\u7B49\u65BC:">=1"\n\n\u5C0F\u65BC:"<1"\n\n\u5C0F\u65BC\u7B49\u65BC:"<=1"\n\n\u4E0D\u7B49\u65BC:"<>1"\u6216"<>\u6587\u5B57"'
  22598. },
  22599. {
  22600. "name": "average_range",
  22601. "detail": "[\u53EF\u9078] - \u8981\u8A08\u7B97\u5E73\u5747\u503C\u7684\u7BC4\u570D\u3002\u5982\u679C\u672A\u63D0\u4F9B\u6B64\u53C3\u6578,\u5247\u6539\u7528criteria_range\u4F86\u8A08\u7B97\u5E73\u5747\u503C\u3002"
  22602. }
  22603. ]
  22604. },
  22605. "AVERAGEIFS": {
  22606. "d": "\u6839\u64DA\u591A\u9805\u689D\u4EF6\u8FD4\u56DE\u7BC4\u570D\u7684\u5E73\u5747\u503C\u3002",
  22607. "a": "\u6839\u64DA\u591A\u9805\u689D\u4EF6\u8FD4\u56DE\u7BC4\u570D\u7684\u5E73\u5747\u503C\u3002",
  22608. "p": [
  22609. {
  22610. "name": "average_range",
  22611. "detail": "\u8981\u8A08\u7B97\u5E73\u5747\u503C\u7684\u7BC4\u570D\u3002"
  22612. },
  22613. {
  22614. "name": "criteria_range1",
  22615. "detail": "\u8981\u5C0D\u5176\u6AA2\u67E5 criterion1 \u7684\u7BC4\u570D\u3002"
  22616. },
  22617. {
  22618. "name": "criterion1",
  22619. "detail": "\u8981\u61C9\u7528\u65BCcriteria_range1\u7684\u6A21\u5F0F\u6216\u6E2C\u8A66\u689D\u4EF6\u3002"
  22620. },
  22621. {
  22622. "name": "criteria_range2, criterion2, ...",
  22623. "detail": "[\u53EF\u9078] - \u8981\u6AA2\u67E5\u7684\u5176\u4ED6\u7BC4\u570D\u548C\u689D\u4EF6\u3002"
  22624. }
  22625. ]
  22626. },
  22627. "PERMUT": {
  22628. "d": "\u8FD4\u56DE\u53EF\u5F9E\u6578\u4F4D\u5C0D\u8C61\u4E2D\u9078\u64C7\u7684\u7D66\u5B9A\u6578\u76EE\u5C0D\u8C61\u7684\u6392\u5217\u6578\u3002",
  22629. "a": "\u8FD4\u56DE\u53EF\u5F9E\u6578\u4F4D\u5C0D\u8C61\u4E2D\u9078\u64C7\u7684\u7D66\u5B9A\u6578\u76EE\u5C0D\u8C61\u7684\u6392\u5217\u6578\u3002",
  22630. "p": [
  22631. {
  22632. "name": "number",
  22633. "detail": "\u8868\u793A\u5C0D\u8C61\u500B\u6578\u7684\u6574\u6578\u3002"
  22634. },
  22635. {
  22636. "name": "number_chosen",
  22637. "detail": "\u8868\u793A\u6BCF\u500B\u6392\u5217\u4E2D\u5C0D\u8C61\u500B\u6578\u7684\u6574\u6578\u3002"
  22638. }
  22639. ]
  22640. },
  22641. "TRIMMEAN": {
  22642. "d": "\u5728\u6392\u9664\u6578\u64DA\u96C6\u9AD8\u4F4E\u5169\u7AEF\u7684\u90E8\u5206\u6578\u64DA\u4E4B\u5F8C\u8A08\u7B97\u6240\u5F97\u7684\u5E73\u5747\u503C\u3002",
  22643. "a": "\u5728\u6392\u9664\u6578\u64DA\u96C6\u9AD8\u4F4E\u5169\u7AEF\u7684\u90E8\u5206\u6578\u64DA\u4E4B\u5F8C\u8A08\u7B97\u6240\u5F97\u7684\u5E73\u5747\u503C\u3002",
  22644. "p": [
  22645. {
  22646. "name": "\u6578\u64DA",
  22647. "detail": "\u5305\u542B\u76F8\u95DC\u6578\u64DA\u96C6\u7684\u6578\u7D44\u6216\u7BC4\u570D\u3002"
  22648. },
  22649. {
  22650. "name": "\u6392\u9664\u6BD4\u4F8B",
  22651. "detail": "\u8981\u5F9E\u6578\u64DA\u96C6\u7684\u6975\u503C\u90E8\u5206\u6392\u9664\u7684\u6578\u64DA\u5360\u6578\u64DA\u96C6\u7684\u6BD4\u4F8B\u3002\n\n\u6392\u9664\u6BD4\u4F8B\u5FC5\u9808\u5927\u65BC\u7B49\u65BC0\u4E14\u5C0F\u65BC1\u3002"
  22652. }
  22653. ]
  22654. },
  22655. "PERCENTILE_EXC": {
  22656. "d": "\u8FD4\u56DE\u6578\u7D44\u7684 K \u767E\u5206\u9EDE\u503C,K \u4ECB\u65BC0\u52301\u4E4B\u9593,\u4E0D\u542B0\u82071\u3002",
  22657. "a": "\u8FD4\u56DE\u6578\u7D44\u7684 K \u767E\u5206\u9EDE\u503C,K \u4ECB\u65BC0\u52301\u4E4B\u9593,\u4E0D\u542B0\u82071\u3002",
  22658. "p": [
  22659. {
  22660. "name": "array",
  22661. "detail": "\u5B9A\u7FA9\u76F8\u5C0D\u4F4D\u7F6E\u7684\u6578\u7D44\u6216\u6578\u64DA\u5340\u57DF\u3002"
  22662. },
  22663. {
  22664. "name": "k",
  22665. "detail": "0 \u5230 1 \u4E4B\u9593\u7684\u767E\u5206\u9EDE\u503C,\u4E0D\u5305\u542B 0 \u548C 1\u3002"
  22666. }
  22667. ]
  22668. },
  22669. "PERCENTILE_INC": {
  22670. "d": "\u8FD4\u56DE\u6578\u7D44\u7684 K \u767E\u5206\u9EDE\u503C,K \u4ECB\u65BC 0 \u5230 1 \u4E4B\u9593,\u5305\u542B 0 \u8207 1\u3002",
  22671. "a": "\u8FD4\u56DE\u6578\u7D44\u7684 K \u767E\u5206\u9EDE\u503C,K \u4ECB\u65BC 0 \u5230 1 \u4E4B\u9593,\u5305\u542B 0 \u8207 1\u3002",
  22672. "p": [
  22673. {
  22674. "name": "array",
  22675. "detail": "\u5B9A\u7FA9\u76F8\u5C0D\u4F4D\u7F6E\u7684\u6578\u7D44\u6216\u6578\u64DA\u5340\u57DF\u3002"
  22676. },
  22677. {
  22678. "name": "k",
  22679. "detail": "0 \u5230 1 \u4E4B\u9593\u7684\u767E\u5206\u9EDE\u503C,\u5305\u542B 0 \u548C 1\u3002"
  22680. }
  22681. ]
  22682. },
  22683. "PEARSON": {
  22684. "d": "\u56DE\u76AE\u723E\u751F\uFF08Pearson\uFF09\u4E58\u7A4D\u77E9\u76F8\u95DC\u4FC2\u6578 r\u3002",
  22685. "a": "\u56DE\u76AE\u723E\u751F\uFF08Pearson\uFF09\u4E58\u7A4D\u77E9\u76F8\u95DC\u4FC2\u6578 r\u3002",
  22686. "p": [
  22687. {
  22688. "name": "\u6578\u64DA_x",
  22689. "detail": "\u4EE3\u8868\u5F15\u6578\u6578\u64DA\u6578\u7D44\u6216\u77E9\u9663\u7684\u7BC4\u570D\u3002"
  22690. },
  22691. {
  22692. "name": "\u6578\u64DA_y",
  22693. "detail": "\u4EE3\u8868\u56E0\u8B8A\u6578\u6578\u64DA\u6578\u7D44\u6216\u77E9\u9663\u7684\u7BC4\u570D\u3002"
  22694. }
  22695. ]
  22696. },
  22697. "NORM_S_INV": {
  22698. "d": "\u8FD4\u56DE\u6A19\u6E96\u6B63\u614B\u7D2F\u7A4D\u5206\u4F48\u51FD\u6578\u7684\u53CD\u51FD\u6578\u503C\u3002\u8A72\u5206\u4F48\u7684\u5E73\u5747\u503C\u70BA0,\u6A19\u6E96\u5DEE\u70BA1\u3002",
  22699. "a": "\u8FD4\u56DE\u6A19\u6E96\u6B63\u614B\u7D2F\u7A4D\u5206\u4F48\u51FD\u6578\u7684\u53CD\u51FD\u6578\u503C\u3002\u8A72\u5206\u4F48\u7684\u5E73\u5747\u503C\u70BA0,\u6A19\u6E96\u5DEE\u70BA1\u3002",
  22700. "p": [
  22701. {
  22702. "name": "probability",
  22703. "detail": "\u5C0D\u61C9\u65BC\u5E38\u6001\u5206\u914D\u7684\u6982\u7387\u3002"
  22704. }
  22705. ]
  22706. },
  22707. "NORM_S_DIST": {
  22708. "d": "\u8FD4\u56DE\u6A19\u6E96\u5E38\u6001\u5206\u914D\u51FD\u6578\uFF08\u8A72\u5206\u4F48\u7684\u5E73\u5747\u503C\u70BA0,\u6A19\u6E96\u5DEE\u70BA1\uFF09\u3002",
  22709. "a": "\u8FD4\u56DE\u6A19\u6E96\u5E38\u6001\u5206\u914D\u51FD\u6578\uFF08\u8A72\u5206\u4F48\u7684\u5E73\u5747\u503C\u70BA0,\u6A19\u6E96\u5DEE\u70BA1\uFF09\u3002",
  22710. "p": [
  22711. {
  22712. "name": "z",
  22713. "detail": "\u9700\u8981\u8A08\u7B97\u5176\u5206\u4F48\u7684\u6578\u503C\u3002"
  22714. },
  22715. {
  22716. "name": "cumulative",
  22717. "detail": "\u51B3\u5B9A\u51FD\u6578\u5F62\u5F0F\u7684\u908F\u8F2F\u503C\u3002\n\n\u5982\u679C\u70BATRUE\uFF08\uFF09,\u5247\u8FD4\u56DE\u7D2F\u7A4D\u5206\u4F48\u51FD\u6578\uFF1B\n\n\u5982\u679C\u70BAFALSE\uFF08\uFF09,\u5247\u8FD4\u56DE\u6982\u7387\u5BC6\u5EA6\u51FD\u6578\u3002"
  22718. }
  22719. ]
  22720. },
  22721. "NORM_INV": {
  22722. "d": "\u8FD4\u56DE\u6307\u5B9A\u5E73\u5747\u503C\u548C\u6A19\u6E96\u5DEE\u7684\u6B63\u614B\u7D2F\u7A4D\u5206\u4F48\u51FD\u6578\u7684\u53CD\u51FD\u6578\u503C\u3002",
  22723. "a": "\u8FD4\u56DE\u6307\u5B9A\u5E73\u5747\u503C\u548C\u6A19\u6E96\u5DEE\u7684\u6B63\u614B\u7D2F\u7A4D\u5206\u4F48\u51FD\u6578\u7684\u53CD\u51FD\u6578\u503C\u3002",
  22724. "p": [
  22725. {
  22726. "name": "probability",
  22727. "detail": "\u5C0D\u61C9\u65BC\u5E38\u6001\u5206\u914D\u7684\u6982\u7387\u3002"
  22728. },
  22729. {
  22730. "name": "mean",
  22731. "detail": "\u5206\u4F48\u7684\u7B97\u8853\u5E73\u5747\u503C\u3002"
  22732. },
  22733. {
  22734. "name": "standard_dev",
  22735. "detail": "\u5206\u4F48\u7684\u6A19\u6E96\u5DEE\u3002"
  22736. }
  22737. ]
  22738. },
  22739. "NORM_DIST": {
  22740. "d": "\u8FD4\u56DE\u6307\u5B9A\u5E73\u5747\u503C\u548C\u6A19\u6E96\u5DEE\u7684\u5E38\u6001\u5206\u914D\u51FD\u6578\u3002",
  22741. "a": "\u8FD4\u56DE\u6307\u5B9A\u5E73\u5747\u503C\u548C\u6A19\u6E96\u5DEE\u7684\u5E38\u6001\u5206\u914D\u51FD\u6578\u3002",
  22742. "p": [
  22743. {
  22744. "name": "x",
  22745. "detail": "\u9700\u8981\u8A08\u7B97\u5176\u5206\u4F48\u7684\u6578\u503C\u3002"
  22746. },
  22747. {
  22748. "name": "mean",
  22749. "detail": "\u5206\u4F48\u7684\u7B97\u8853\u5E73\u5747\u503C\u3002"
  22750. },
  22751. {
  22752. "name": "standard_dev",
  22753. "detail": "\u5206\u4F48\u7684\u6A19\u6E96\u5DEE\u3002"
  22754. },
  22755. {
  22756. "name": "cumulative",
  22757. "detail": "\u51B3\u5B9A\u51FD\u6578\u5F62\u5F0F\u7684\u908F\u8F2F\u503C\u3002\n\n\u5982\u679C\u70BATRUE\uFF08\uFF09,\u5247\u8FD4\u56DE\u7D2F\u7A4D\u5206\u4F48\u51FD\u6578\uFF1B\n\n\u5982\u679C\u70BAFALSE\uFF08\uFF09,\u5247\u8FD4\u56DE\u6982\u7387\u5BC6\u5EA6\u51FD\u6578\u3002"
  22758. }
  22759. ]
  22760. },
  22761. "NEGBINOM_DIST": {
  22762. "d": "\u8FD4\u56DE\u8CA0\u4E8C\u9805\u5F0F\u5206\u4F48\u3002",
  22763. "a": "\u8FD4\u56DE\u8CA0\u4E8C\u9805\u5F0F\u5206\u4F48\u3002",
  22764. "p": [
  22765. {
  22766. "name": "number_f",
  22767. "detail": "\u8981\u985E\u6BD4\u7684\u5931\u6557\u6B21\u6578\u3002"
  22768. },
  22769. {
  22770. "name": "number_s",
  22771. "detail": "\u8981\u985E\u6BD4\u7684\u6210\u529F\u6B21\u6578\u3002"
  22772. },
  22773. {
  22774. "name": "probability_s",
  22775. "detail": "\u4EFB\u4E00\u6B21\u7D66\u5B9A\u6AA2\u9A57\u7684\u6210\u529F\u6982\u7387\u3002"
  22776. },
  22777. {
  22778. "name": "cumulative",
  22779. "detail": "\u51B3\u5B9A\u51FD\u6578\u5F62\u5F0F\u7684\u908F\u8F2F\u503C\u3002\n\n\u5982\u679C\u70BATRUE\uFF08\uFF09,\u5247\u8FD4\u56DE\u7D2F\u7A4D\u5206\u4F48\u51FD\u6578\uFF1B\n\n\u5982\u679C\u70BAFALSE\uFF08\uFF09,\u5247\u8FD4\u56DE\u6982\u7387\u5BC6\u5EA6\u51FD\u6578\u3002"
  22780. }
  22781. ]
  22782. },
  22783. "MINA": {
  22784. "d": "\u8FD4\u56DE\u6578\u64DA\u96C6\u4E2D\u7684\u6700\u5C0F\u6578\u503C\u3002",
  22785. "a": "\u8FD4\u56DE\u6578\u64DA\u96C6\u4E2D\u7684\u6700\u5C0F\u6578\u503C\u3002",
  22786. "p": [
  22787. {
  22788. "name": "\u503C1",
  22789. "detail": "\u8A08\u7B97\u6700\u5C0F\u503C\u6642\u6240\u7528\u7684\u7B2C\u4E00\u500B\u503C\u6216\u7BC4\u570D\u3002"
  22790. },
  22791. {
  22792. "name": "\u503C2",
  22793. "detail": "[\u53EF\u9078] - \u5728\u8A08\u7B97\u6700\u5C0F\u503C\u6642\u8981\u8003\u616E\u7684\u5176\u4ED6\u6578\u503C\u6216\u7BC4\u570D\u3002"
  22794. }
  22795. ]
  22796. },
  22797. "MIN": {
  22798. "d": "\u8FD4\u56DE\u6578\u503C\u6578\u64DA\u96C6\u4E2D\u7684\u6700\u5C0F\u503C\u3002",
  22799. "a": "\u8FD4\u56DE\u6578\u503C\u6578\u64DA\u96C6\u4E2D\u7684\u6700\u5C0F\u503C\u3002",
  22800. "p": [
  22801. {
  22802. "name": "\u503C1",
  22803. "detail": "\u8A08\u7B97\u6700\u5C0F\u503C\u6642\u6240\u7528\u7684\u7B2C\u4E00\u500B\u503C\u6216\u7BC4\u570D\u3002"
  22804. },
  22805. {
  22806. "name": "\u503C2",
  22807. "detail": "[\u53EF\u9078] - \u5728\u8A08\u7B97\u6700\u5C0F\u503C\u6642\u8981\u8003\u616E\u7684\u5176\u4ED6\u6578\u503C\u6216\u7BC4\u570D\u3002"
  22808. }
  22809. ]
  22810. },
  22811. "MEDIAN": {
  22812. "d": "\u8FD4\u56DE\u6578\u503C\u6578\u64DA\u96C6\u4E2D\u7684\u4E2D\u503C\u3002",
  22813. "a": "\u8FD4\u56DE\u6578\u503C\u6578\u64DA\u96C6\u4E2D\u7684\u4E2D\u503C\u3002",
  22814. "p": [
  22815. {
  22816. "name": "\u503C1",
  22817. "detail": "\u8A08\u7B97\u4E2D\u503C\u6642\u6240\u7528\u7684\u7B2C\u4E00\u500B\u6578\u503C\u6216\u7BC4\u570D\u3002"
  22818. },
  22819. {
  22820. "name": "\u503C2",
  22821. "detail": "[\u53EF\u9078] - \u5728\u8A08\u7B97\u4E2D\u503C\u6642\u8981\u8003\u616E\u7684\u5176\u4ED6\u6578\u503C\u6216\u7BC4\u570D\u3002"
  22822. }
  22823. ]
  22824. },
  22825. "MAXA": {
  22826. "d": "\u8FD4\u56DE\u6578\u64DA\u96C6\u4E2D\u7684\u6700\u5927\u6578\u503C\u3002",
  22827. "a": "\u8FD4\u56DE\u6578\u64DA\u96C6\u4E2D\u7684\u6700\u5927\u6578\u503C\u3002",
  22828. "p": [
  22829. {
  22830. "name": "\u503C1",
  22831. "detail": "\u8A08\u7B97\u6700\u5927\u503C\u6642\u6240\u7528\u7684\u7B2C\u4E00\u500B\u503C\u6216\u7BC4\u570D\u3002"
  22832. },
  22833. {
  22834. "name": "\u503C2, ...",
  22835. "detail": "[\u53EF\u9078] - \u5728\u8A08\u7B97\u6700\u5927\u503C\u6642\u8981\u8003\u616E\u7684\u5176\u4ED6\u6578\u503C\u6216\u7BC4\u570D\u3002"
  22836. }
  22837. ]
  22838. },
  22839. "MAX": {
  22840. "d": "\u8FD4\u56DE\u6578\u503C\u6578\u64DA\u96C6\u4E2D\u7684\u6700\u5927\u503C\u3002",
  22841. "a": "\u8FD4\u56DE\u6578\u503C\u6578\u64DA\u96C6\u4E2D\u7684\u6700\u5927\u503C\u3002",
  22842. "p": [
  22843. {
  22844. "name": "\u503C1",
  22845. "detail": "\u8A08\u7B97\u6700\u5927\u503C\u6642\u6240\u7528\u7684\u7B2C\u4E00\u500B\u503C\u6216\u7BC4\u570D\u3002"
  22846. },
  22847. {
  22848. "name": "\u503C2",
  22849. "detail": "[\u53EF\u9078] - \u5728\u8A08\u7B97\u6700\u5927\u503C\u6642\u8981\u8003\u616E\u7684\u5176\u4ED6\u6578\u503C\u6216\u7BC4\u570D\u3002"
  22850. }
  22851. ]
  22852. },
  22853. "LOGNORM_INV": {
  22854. "d": "\u8FD4\u56DE x \u7684\u5C0D\u6578\u7D2F\u7A4D\u5206\u4F48\u51FD\u6578\u7684\u53CD\u51FD\u6578\u503C\u3002",
  22855. "a": "\u8FD4\u56DE x \u7684\u5C0D\u6578\u7D2F\u7A4D\u5206\u4F48\u51FD\u6578\u7684\u53CD\u51FD\u6578\u503C\u3002",
  22856. "p": [
  22857. {
  22858. "name": "probability",
  22859. "detail": "\u8207\u5C0D\u6578\u5206\u4F48\u76F8\u95DC\u7684\u6982\u7387,\u4ECB\u65BC0\u82071\u4E4B\u9593\uFF08\u4E0D\u542B0\u82071\uFF09\u3002"
  22860. },
  22861. {
  22862. "name": "mean",
  22863. "detail": "ln(x) \u7684\u5E73\u5747\u503C\u3002"
  22864. },
  22865. {
  22866. "name": "standard_dev",
  22867. "detail": "ln(x) \u7684\u6A19\u6E96\u5DEE,\u6B63\u6578\u3002"
  22868. }
  22869. ]
  22870. },
  22871. "LOGNORM_DIST": {
  22872. "d": "\u8FD4\u56DE x \u7684\u5C0D\u6578\u5206\u4F48\u51FD\u6578\u3002",
  22873. "a": "\u8FD4\u56DE x \u7684\u5C0D\u6578\u5206\u4F48\u51FD\u6578\u3002",
  22874. "p": [
  22875. {
  22876. "name": "x",
  22877. "detail": "\u7528\u4F86\u8A08\u7B97\u51FD\u6578\u7684\u503C\u3002"
  22878. },
  22879. {
  22880. "name": "mean",
  22881. "detail": "ln(x) \u7684\u5E73\u5747\u503C\u3002"
  22882. },
  22883. {
  22884. "name": "standard_dev",
  22885. "detail": "ln(x) \u7684\u6A19\u6E96\u5DEE,\u6B63\u6578\u3002"
  22886. },
  22887. {
  22888. "name": "cumulative",
  22889. "detail": "\u51B3\u5B9A\u51FD\u6578\u5F62\u5F0F\u7684\u908F\u8F2F\u503C\u3002\n\n\u5982\u679C\u70BATRUE\uFF08\uFF09,\u5247\u8FD4\u56DE\u7D2F\u7A4D\u5206\u4F48\u51FD\u6578\uFF1B\n\n\u5982\u679C\u70BAFALSE\uFF08\uFF09,\u5247\u8FD4\u56DE\u6982\u7387\u5BC6\u5EA6\u51FD\u6578\u3002"
  22890. }
  22891. ]
  22892. },
  22893. "Z_TEST": {
  22894. "d": "\u8FD4\u56DE z \u6AA2\u9A57\u7684\u55AE\u5C3E P \u503C\u3002",
  22895. "a": "\u8FD4\u56DE z \u6AA2\u9A57\u7684\u55AE\u5C3E P \u503C\u3002",
  22896. "p": [
  22897. {
  22898. "name": "array",
  22899. "detail": "\u7528\u4F86\u6AA2\u9A57 x \u7684\u6578\u7D44\u6216\u6578\u64DA\u5340\u57DF\u3002"
  22900. },
  22901. {
  22902. "name": "x",
  22903. "detail": "\u8981\u6E2C\u8A66\u7684\u503C\u3002"
  22904. },
  22905. {
  22906. "name": "sigma",
  22907. "detail": "[\u53EF\u9078] - \u7E3D\u9AD4\uFF08\u5DF2\u77E5\uFF09\u6A19\u6E96\u5DEE\u3002\u5982\u679C\u7701\u7565,\u5247\u4F7F\u7528\u6A23\u672C\u6A19\u6E96\u5DEE\u3002"
  22908. }
  22909. ]
  22910. },
  22911. "PROB": {
  22912. "d": "\u8FD4\u56DE\u5340\u57DF\u4E2D\u7684\u6578\u503C\u843D\u5728\u6307\u5B9A\u5340\u9593\u5167\u7684\u6982\u7387\u3002",
  22913. "a": "\u8FD4\u56DE\u5340\u57DF\u4E2D\u7684\u6578\u503C\u843D\u5728\u6307\u5B9A\u5340\u9593\u5167\u7684\u6982\u7387\u3002",
  22914. "p": [
  22915. {
  22916. "name": "x_range",
  22917. "detail": "\u5177\u6709\u5404\u81EA\u76F8\u61C9\u6982\u7387\u503C\u7684 x \u6578\u503C\u5340\u57DF\u3002"
  22918. },
  22919. {
  22920. "name": "prob_range",
  22921. "detail": "\u8207 x_range \u4E2D\u7684\u503C\u76F8\u95DC\u806F\u7684\u4E00\u7D44\u6982\u7387\u503C\u3002"
  22922. },
  22923. {
  22924. "name": "lower_limit",
  22925. "detail": "\u8981\u8A08\u7B97\u5176\u6982\u7387\u7684\u6578\u503C\u4E0B\u754C\u3002"
  22926. },
  22927. {
  22928. "name": "upper_limit",
  22929. "detail": "[\u53EF\u9078 - \u9810\u8A2D\u503C\u70BA\u4E0B\u754C] - \u8981\u8A08\u7B97\u5176\u6982\u7387\u7684\u53EF\u9078\u6578\u503C\u4E0A\u754C\u3002\n\n\u5982\u679C\u7701\u7565\u4E0A\u754C,PROB\u5247\u8A08\u7B97\u96A8\u6A5F\u9078\u53D6\u76F8\u61C9\u503C\u7684\u6B21\u6578\u6070\u597D\u7B49\u65BC\u4E0B\u754C\u7684\u6982\u7387\u3002"
  22930. }
  22931. ]
  22932. },
  22933. "QUARTILE_EXC": {
  22934. "d": "\u57FA\u65BC 0 \u5230 1 \u4E4B\u9593\uFF08\u4E0D\u5305\u62EC 0 \u548C 1\uFF09\u7684\u767E\u5206\u9EDE\u503C\u8FD4\u56DE\u6578\u64DA\u96C6\u7684\u56DB\u5206\u4F4D\u6578\u3002",
  22935. "a": "\u57FA\u65BC 0 \u5230 1 \u4E4B\u9593\uFF08\u4E0D\u5305\u62EC 0 \u548C 1\uFF09\u7684\u767E\u5206\u9EDE\u503C\u8FD4\u56DE\u6578\u64DA\u96C6\u7684\u56DB\u5206\u4F4D\u6578\u3002",
  22936. "p": [
  22937. {
  22938. "name": "array",
  22939. "detail": "\u8981\u6C42\u5F97\u56DB\u5206\u4F4D\u6578\u503C\u7684\u6578\u7D44\u6216\u6578\u5B57\u578B\u5132\u5B58\u683C\u5340\u57DF\u3002"
  22940. },
  22941. {
  22942. "name": "quart",
  22943. "detail": "\u8981\u8FD4\u56DE\u7B2C\u5E7E\u500B\u56DB\u5206\u4F4D\u503C\u3002\n\n1\u8FD4\u56DE\u6578\u64DA\u4E2D\u6700\u9760\u8FD1\u7B2C\u4E00\u500B\u56DB\u5206\u4F4D\u503C\u7684\u503C\uFF0825%\u6A19\u8A18\uFF09\u3002\n\n2\u8FD4\u56DE\u6578\u64DA\u4E2D\u6700\u63A5\u8FD1\u4E2D\u503C\u7684\u503C\uFF0850%\u6A19\u8A18\uFF09\u3002\n\n3\u8FD4\u56DE\u6578\u64DA\u4E2D\u6700\u63A5\u8FD1\u7B2C\u4E09\u500B\u56DB\u5206\u4F4D\u503C\u7684\u503C\uFF0875%\u6A19\u8A18\uFF09\u3002"
  22944. }
  22945. ]
  22946. },
  22947. "QUARTILE_INC": {
  22948. "d": "\u6839\u64DA 0 \u5230 1 \u4E4B\u9593\u7684\u767E\u5206\u9EDE\u503C\uFF08\u5305\u542B 0 \u548C 1\uFF09\u8FD4\u56DE\u6578\u64DA\u96C6\u7684\u56DB\u5206\u4F4D\u6578\u3002",
  22949. "a": "\u6839\u64DA 0 \u5230 1 \u4E4B\u9593\u7684\u767E\u5206\u9EDE\u503C\uFF08\u5305\u542B 0 \u548C 1\uFF09\u8FD4\u56DE\u6578\u64DA\u96C6\u7684\u56DB\u5206\u4F4D\u6578\u3002",
  22950. "p": [
  22951. {
  22952. "name": "array",
  22953. "detail": "\u8981\u6C42\u5F97\u56DB\u5206\u4F4D\u6578\u503C\u7684\u6578\u7D44\u6216\u6578\u5B57\u578B\u5132\u5B58\u683C\u5340\u57DF\u3002"
  22954. },
  22955. {
  22956. "name": "quart",
  22957. "detail": "\u8981\u8FD4\u56DE\u7B2C\u5E7E\u500B\u56DB\u5206\u4F4D\u503C\u3002\n\n0\u8FD4\u56DE\u6578\u64DA\u4E2D\u7684\u6700\u5C0F\u503C\uFF080%\u6A19\u8A18\uFF09\u3002\n\n1\u8FD4\u56DE\u6578\u64DA\u4E2D\u6700\u9760\u8FD1\u7B2C\u4E00\u500B\u56DB\u5206\u4F4D\u503C\u7684\u503C\uFF0825%\u6A19\u8A18\uFF09\u3002\n\n2\u8FD4\u56DE\u6578\u64DA\u4E2D\u6700\u63A5\u8FD1\u4E2D\u503C\u7684\u503C\uFF0850%\u6A19\u8A18\uFF09\u3002\n\n3\u8FD4\u56DE\u6578\u64DA\u4E2D\u6700\u63A5\u8FD1\u7B2C\u4E09\u500B\u56DB\u5206\u4F4D\u503C\u7684\u503C\uFF0875%\u6A19\u8A18\uFF09\u3002\n\n4\u8FD4\u56DE\u6578\u64DA\u4E2D\u7684\u6700\u5927\u503C\uFF08100%\u6A19\u8A18\uFF09\u3002"
  22958. }
  22959. ]
  22960. },
  22961. "POISSON_DIST": {
  22962. "d": "\u8FD4\u56DE\u6CCA\u677E\u5206\u5E03\u3002",
  22963. "a": "\u8FD4\u56DE\u6CCA\u677E\u5206\u5E03\u3002",
  22964. "p": [
  22965. {
  22966. "name": "x",
  22967. "detail": "\u4E8B\u4EF6\u6578\u3002"
  22968. },
  22969. {
  22970. "name": "mean",
  22971. "detail": "\u671F\u671B\u503C\u3002\u975E\u8CA0\u6578"
  22972. },
  22973. {
  22974. "name": "cumulative",
  22975. "detail": "\u4E00 \u908F\u8F2F\u503C,\u78BA\u5B9A\u6240\u8FD4\u56DE\u7684\u6982\u7387\u5206\u4F48\u7684\u5F62\u5F0F\u3002\n\n\u5982\u679C\u70BATRUE\uFF08\uFF09,\u5247\u8FD4\u56DE\u767C\u751F\u7684\u96A8\u6A5F\u4E8B\u4EF6\u6578\u5728\u96F6\uFF08\u542B\u96F6\uFF09\u548Cx\uFF08\u542Bx\uFF09\u4E4B\u9593\u7684\u7D2F\u7A4D\u6CCA\u677E\u6982\u7387\uFF1B\n\n\u5982\u679C\u70BAFALSE\uFF08\uFF09,\u5247\u8FD4\u56DE\u767C\u751F\u7684\u4E8B\u4EF6\u6578\u6B63\u597D\u662Fx\u7684\u6CCA\u677E\u6982\u7387\u5BC6\u5EA6\u51FD\u6578\u3002"
  22976. }
  22977. ]
  22978. },
  22979. "RSQ": {
  22980. "d": "\u8FD4\u56DE\u76AE\u723E\u751F(Pearson)\u4E58\u7A4D\u77E9\u76F8\u95DC\u4FC2\u6578r\u7684\u5E73\u65B9\u3002",
  22981. "a": "\u8FD4\u56DE\u76AE\u723E\u751F(Pearson)\u4E58\u7A4D\u77E9\u76F8\u95DC\u4FC2\u6578r\u7684\u5E73\u65B9\u3002",
  22982. "p": [
  22983. {
  22984. "name": "\u6578\u64DA_y",
  22985. "detail": "\u4EE3\u8868\u56E0\u8B8A\u6578\u6578\u64DA\u6578\u7D44\u6216\u77E9\u9663\u7684\u7BC4\u570D\u3002"
  22986. },
  22987. {
  22988. "name": "\u6578\u64DA_x",
  22989. "detail": "\u4EE3\u8868\u5F15\u6578\u6578\u64DA\u6578\u7D44\u6216\u77E9\u9663\u7684\u7BC4\u570D\u3002"
  22990. }
  22991. ]
  22992. },
  22993. "T_DIST": {
  22994. "d": "\u8FD4\u56DE\u5B78\u751F\u7684\u5DE6\u5C3E t \u5206\u4F48\u3002",
  22995. "a": "\u8FD4\u56DE\u5B78\u751F\u7684\u5DE6\u5C3E t \u5206\u4F48\u3002",
  22996. "p": [
  22997. {
  22998. "name": "x",
  22999. "detail": "T-\u5206\u4F48\u51FD\u6578\u7684\u8F38\u5165\u3002"
  23000. },
  23001. {
  23002. "name": "degrees_freedom",
  23003. "detail": "\u81EA\u7531\u5EA6\u6578\u503C\u3002"
  23004. },
  23005. {
  23006. "name": "tails",
  23007. "detail": "\u51B3\u5B9A\u51FD\u6578\u5F62\u5F0F\u7684\u908F\u8F2F\u503C\u3002\n\n\u5982\u679Ccumulative\u70BATRUE\uFF08\uFF09,\u5247HYPGEOM.DIST\u8FD4\u56DE\u7D2F\u7A4D\u5206\u4F48\u51FD\u6578\uFF1B\n\n\u5982\u679C\u70BAFALSE\uFF08\uFF09,\u5247\u8FD4\u56DE\u6982\u7387\u5BC6\u5EA6\u51FD\u6578\u3002"
  23008. }
  23009. ]
  23010. },
  23011. "T_DIST_2T": {
  23012. "d": "\u8FD4\u56DE\u5B78\u751F\u7684\u96D9\u5C3E t \u5206\u4F48\u3002",
  23013. "a": "\u8FD4\u56DE\u5B78\u751F\u7684\u96D9\u5C3E t \u5206\u4F48\u3002",
  23014. "p": [
  23015. {
  23016. "name": "x",
  23017. "detail": "T-\u5206\u4F48\u51FD\u6578\u7684\u8F38\u5165\u3002"
  23018. },
  23019. {
  23020. "name": "degrees_freedom",
  23021. "detail": "\u81EA\u7531\u5EA6\u6578\u503C\u3002"
  23022. }
  23023. ]
  23024. },
  23025. "T_DIST_RT": {
  23026. "d": "\u8FD4\u56DE\u5B78\u751F\u7684\u53F3\u5C3E t \u5206\u4F48\u3002",
  23027. "a": "\u8FD4\u56DE\u5B78\u751F\u7684\u53F3\u5C3E t \u5206\u4F48\u3002",
  23028. "p": [
  23029. {
  23030. "name": "x",
  23031. "detail": "T-\u5206\u4F48\u51FD\u6578\u7684\u8F38\u5165\u3002"
  23032. },
  23033. {
  23034. "name": "degrees_freedom",
  23035. "detail": "\u81EA\u7531\u5EA6\u6578\u503C\u3002"
  23036. }
  23037. ]
  23038. },
  23039. "T_INV": {
  23040. "d": "\u8FD4\u56DE\u5B78\u751F\u7684 t \u5206\u4F48\u7684\u5DE6\u5C3E\u53CD\u51FD\u6578\u3002",
  23041. "a": "\u8FD4\u56DE\u5B78\u751F\u7684 t \u5206\u4F48\u7684\u5DE6\u5C3E\u53CD\u51FD\u6578\u3002",
  23042. "p": [
  23043. {
  23044. "name": "probability",
  23045. "detail": "\u8207\u5B78\u751F\u7684 t \u5206\u4F48\u76F8\u95DC\u7684\u6982\u7387\u3002\n\n\u5FC5\u9808\u5927\u65BC 0 \u4E14\u5C0F\u65BC 1\u3002"
  23046. },
  23047. {
  23048. "name": "deg_freedom",
  23049. "detail": "\u81EA\u7531\u5EA6\u6578\u503C\u3002\n\n\u5982\u679C\u6240\u63D0\u4F9B\u7684\u53C3\u6578\u4E0D\u662F\u6574\u6578,\u5C07\u622A\u53D6\u5176\u6574\u6578\u90E8\u5206\u3002\n\n\u5FC5\u9808\u5927\u65BC\u7B49\u65BC1\u3002"
  23050. }
  23051. ]
  23052. },
  23053. "T_INV_2T": {
  23054. "d": "\u8FD4\u56DE\u5B78\u751F t \u5206\u4F48\u7684\u96D9\u5C3E\u53CD\u51FD\u6578\u3002",
  23055. "a": "\u8FD4\u56DE\u5B78\u751F t \u5206\u4F48\u7684\u96D9\u5C3E\u53CD\u51FD\u6578\u3002",
  23056. "p": [
  23057. {
  23058. "name": "probability",
  23059. "detail": "\u8207\u5B78\u751F\u7684t\u5206\u4F48\u76F8\u95DC\u7684\u6982\u7387\u3002\n\n\u5FC5\u9808\u5927\u65BC 0 \u4E14\u5C0F\u65BC 1\u3002"
  23060. },
  23061. {
  23062. "name": "deg_freedom",
  23063. "detail": "\u81EA\u7531\u5EA6\u6578\u503C\u3002\n\n\u5982\u679C\u6240\u63D0\u4F9B\u7684\u53C3\u6578\u4E0D\u662F\u6574\u6578,\u5C07\u622A\u53D6\u5176\u6574\u6578\u90E8\u5206\u3002\n\n\u5FC5\u9808\u5927\u65BC\u7B49\u65BC1\u3002"
  23064. }
  23065. ]
  23066. },
  23067. "T_TEST": {
  23068. "d": "\u8FD4\u56DE\u8207t-\u6AA2\u9A57\u76F8\u95DC\u7684\u6982\u7387\u3002\u7528\u65BC\u5224\u65B7\u5169\u500B\u6A23\u672C\u662F\u5426\u53EF\u80FD\u662F\u51FA\u81EA\u5E73\u5747\u503C\u76F8\u540C\u7684\u5169\u500B\u6A23\u672C\u7E3D\u9AD4\u3002",
  23069. "a": "\u8FD4\u56DE\u8207t-\u6AA2\u9A57\u76F8\u95DC\u7684\u6982\u7387\u3002\u7528\u65BC\u5224\u65B7\u5169\u500B\u6A23\u672C\u662F\u5426\u53EF\u80FD\u662F\u51FA\u81EA\u5E73\u5747\u503C\u76F8\u540C\u7684\u5169\u500B\u6A23\u672C\u7E3D\u9AD4\u3002",
  23070. "p": [
  23071. {
  23072. "name": "array1",
  23073. "detail": "\u5C07\u7528\u65BCt\u6AA2\u9A57\u7684\u7B2C\u4E00\u500B\u6578\u64DA\u6A23\u672C\u6216\u7B2C\u4E00\u7D44\u5132\u5B58\u683C\u3002"
  23074. },
  23075. {
  23076. "name": "array2",
  23077. "detail": "\u5C07\u7528\u65BCt\u6AA2\u9A57\u7684\u7B2C\u4E8C\u500B\u6578\u64DA\u6A23\u672C\u6216\u7B2C\u4E8C\u7D44\u5132\u5B58\u683C\u3002"
  23078. },
  23079. {
  23080. "name": "tails",
  23081. "detail": "\u6307\u5B9A\u5206\u4F48\u7684\u5C3E\u6578\u3002\n\n\u5982\u679C\u70BA 1:\u4F7F\u7528\u55AE\u5C3E\u5206\u4F48\u3002\n\n\u5982\u679C\u70BA 2:\u4F7F\u7528\u96D9\u5C3E\u5206\u4F48\u3002"
  23082. },
  23083. {
  23084. "name": "type",
  23085. "detail": "\u6307\u5B9At\u6AA2\u9A57\u7684\u985E\u578B\u3002\n\n\u5982\u679C\u70BA 1:\u57F7\u884C\u914D\u5C0D\u6AA2\u9A57\u3002\n\n\u5982\u679C\u70BA 2:\u57F7\u884C\u96D9\u6A23\u672C\u7B49\u65B9\u5DEE\uFF08\u540C\u65B9\u5DEE\uFF09\u6AA2\u9A57\u3002\n\n\u5982\u679C\u70BA 3:\u57F7\u884C\u96D9\u6A23\u672C\u4E0D\u7B49\u65B9\u5DEE\uFF08\u5F02\u65B9\u5DEE\uFF09\u6AA2\u9A57\u3002"
  23086. }
  23087. ]
  23088. },
  23089. "F_DIST": {
  23090. "d": "\u7D66\u5B9A\u8F38\u5165\u503C x,\u8A08\u7B97\u5169\u500B\u6578\u64DA\u96C6\u7684\u5DE6\u5C3E F \u6982\u7387\u5206\u4F48\uFF08\u5DEE\u5F02\u7A0B\u5EA6\uFF09\u3002\u6B64\u5206\u4F48\u4E5F\u7A31\u70BA Fisher-Snedecor \u5206\u4F48\u6216Snedecor F \u5206\u4F48\u3002",
  23091. "a": "\u7D66\u5B9A\u8F38\u5165\u503C x",
  23092. "p": [
  23093. {
  23094. "name": "x",
  23095. "detail": "\u7528\u4F86\u8A08\u7B97\u51FD\u6578\u7684\u503C\u3002"
  23096. },
  23097. {
  23098. "name": "degrees_freedom1",
  23099. "detail": "\u5206\u5B50\u81EA\u7531\u5EA6\u3002"
  23100. },
  23101. {
  23102. "name": "degrees_freedom2",
  23103. "detail": "\u5206\u6BCD\u81EA\u7531\u5EA6\u3002"
  23104. },
  23105. {
  23106. "name": "cumulative",
  23107. "detail": "\u7528\u65BC\u78BA\u5B9A\u51FD\u6578\u5F62\u5F0F\u7684\u908F\u8F2F\u503C\u3002\u9810\u8A2D\u503C\u70BA FALSE\u3002\n\n\u5982\u679C\u70BA TRUE\uFF08\uFF09:F.DIST\u5C07\u8FD4\u56DE\u7D2F\u7A4D\u5206\u4F48\u51FD\u6578\u503C\u3002\n\n\u5982\u679C\u70BAFALSE\uFF08\uFF09:F.DIST\u5C07\u8FD4\u56DE\u6982\u7387\u5BC6\u5EA6\u51FD\u6578\u503C\u3002"
  23108. }
  23109. ]
  23110. },
  23111. "F_DIST_RT": {
  23112. "d": "\u7D66\u5B9A\u8F38\u5165x,\u8A08\u7B97\u5169\u500B\u6578\u64DA\u96C6\u7684\u53F3\u5C3EF\u6982\u7387\u5206\u4F48\uFF08\u5DEE\u5F02\u7A0B\u5EA6\uFF09\u3002\u6B64\u5206\u4F48\u4E5F\u7A31\u70BAFisher-Snedecor\u5206\u4F48\u6216Snedecor F\u5206\u4F48\u3002",
  23113. "a": "\u7D66\u5B9A\u8F38\u5165 x",
  23114. "p": [
  23115. {
  23116. "name": "x",
  23117. "detail": "\u7528\u4F86\u8A08\u7B97\u51FD\u6578\u7684\u503C\u3002"
  23118. },
  23119. {
  23120. "name": "degrees_freedom1",
  23121. "detail": "\u5206\u5B50\u81EA\u7531\u5EA6\u3002"
  23122. },
  23123. {
  23124. "name": "degrees_freedom2",
  23125. "detail": "\u5206\u6BCD\u81EA\u7531\u5EA6\u3002"
  23126. }
  23127. ]
  23128. },
  23129. "VAR_P": {
  23130. "d": "\u57FA\u65BC\u6A23\u672C\u7E3D\u9AD4\u8A08\u7B97\u65B9\u5DEE\u3002",
  23131. "a": "\u57FA\u65BC\u6A23\u672C\u7E3D\u9AD4\u8A08\u7B97\u65B9\u5DEE\u3002",
  23132. "p": [
  23133. {
  23134. "name": "\u503C1",
  23135. "detail": "\u6578\u64DA\u96C6\u4E2D\u7684\u7B2C\u4E00\u500B\u503C\u6216\u7BC4\u570D\u3002"
  23136. },
  23137. {
  23138. "name": "\u503C2, \u2026",
  23139. "detail": "[\u53EF\u9078] - \u6578\u64DA\u96C6\u4E2D\u5305\u542B\u7684\u5176\u4ED6\u503C\u6216\u7BC4\u570D\u3002"
  23140. }
  23141. ]
  23142. },
  23143. "VAR_S": {
  23144. "d": "\u57FA\u65BC\u6A23\u672C\u8A08\u7B97\u65B9\u5DEE\u3002",
  23145. "a": "\u57FA\u65BC\u6A23\u672C\u8A08\u7B97\u65B9\u5DEE\u3002",
  23146. "p": [
  23147. {
  23148. "name": "\u503C1",
  23149. "detail": "\u6A23\u672C\u4E2D\u7684\u7B2C\u4E00\u9805\u503C\u6216\u7BC4\u570D\u3002"
  23150. },
  23151. {
  23152. "name": "\u503C2, \u2026",
  23153. "detail": "[\u53EF\u9078] - \u6A23\u672C\u4E2D\u5305\u542B\u7684\u5176\u4ED6\u503C\u6216\u7BC4\u570D\u3002"
  23154. }
  23155. ]
  23156. },
  23157. "VARA": {
  23158. "d": "\u57FA\u4E8E\u6837\u672C\u8BA1\u7B97\u65B9\u5DEE,\u5C06\u6587\u672C\u53D6\u503C\u4E3A0\u3002",
  23159. "a": "\u57FA\u4E8E\u6837\u672C\u8BA1\u7B97\u65B9\u5DEE",
  23160. "p": [
  23161. {
  23162. "name": "value1",
  23163. "detail": "\u6A23\u672C\u4E2D\u7684\u7B2C\u4E00\u9805\u503C\u6216\u7BC4\u570D\u3002"
  23164. },
  23165. {
  23166. "name": "value2, ...",
  23167. "detail": "[\u53EF\u9078] - \u6A23\u672C\u4E2D\u5305\u542B\u7684\u5176\u4ED6\u503C\u6216\u7BC4\u570D\u3002"
  23168. }
  23169. ]
  23170. },
  23171. "VARPA": {
  23172. "d": "\u57FA\u65BC\u6A23\u672C\u7E3D\u9AD4\u8A08\u7B97\u65B9\u5DEE,\u5C07\u6587\u5B57\u53D6\u503C\u70BA0\u3002",
  23173. "a": "\u57FA\u65BC\u6A23\u672C\u7E3D\u9AD4\u8A08\u7B97\u65B9\u5DEE",
  23174. "p": [
  23175. {
  23176. "name": "\u503C1",
  23177. "detail": "\u6A23\u672C\u4E2D\u7684\u7B2C\u4E00\u9805\u503C\u6216\u7BC4\u570D\u3002"
  23178. },
  23179. {
  23180. "name": "\u503C2, ...",
  23181. "detail": "[\u53EF\u9078] - \u6578\u64DA\u96C6\u4E2D\u5305\u542B\u7684\u5176\u4ED6\u6578\u503C\u6216\u7BC4\u570D\u3002"
  23182. }
  23183. ]
  23184. },
  23185. "STEYX": {
  23186. "d": "\u8FD4\u56DE\u901A\u904E\u7DDA\u6027\u56DE\u6B78\u6CD5\u9810\u6E2C\u6BCF\u500B x \u7684 y \u503C\u6642\u6240\u7522\u751F\u7684\u6A19\u6E96\u8AA4\u5DEE\u3002",
  23187. "a": "\u8FD4\u56DE\u901A\u904E\u7DDA\u6027\u56DE\u6B78\u6CD5\u9810\u6E2C\u6BCF\u500B x \u7684 y \u503C\u6642\u6240\u7522\u751F\u7684\u6A19\u6E96\u8AA4\u5DEE\u3002",
  23188. "p": [
  23189. {
  23190. "name": "\u6578\u64DA_y",
  23191. "detail": "\u4EE3\u8868\u56E0\u8B8A\u6578\u6578\u64DA\u6578\u7D44\u6216\u77E9\u9663\u7684\u7BC4\u570D\u3002"
  23192. },
  23193. {
  23194. "name": "\u6578\u64DA_x",
  23195. "detail": "\u4EE3\u8868\u5F15\u6578\u6578\u64DA\u6578\u7D44\u6216\u77E9\u9663\u7684\u7BC4\u570D\u3002"
  23196. }
  23197. ]
  23198. },
  23199. "STANDARDIZE": {
  23200. "d": "\u7D66\u5B9A\u5206\u4F48\u7684\u5E73\u5747\u503C\u548C\u6A19\u6E96\u5DEE,\u8A08\u7B97\u4E00\u500B\u96A8\u6A5F\u8B8A\u6578\u6B63\u614B\u5316\u7684\u76F8\u61C9\u503C\u3002",
  23201. "a": "\u7D66\u5B9A\u5206\u4F48\u7684\u5E73\u5747\u503C\u548C\u6A19\u6E96\u5DEE,\u8A08\u7B97\u4E00\u500B\u96A8\u6A5F\u8B8A\u6578\u6B63\u614B\u5316\u7684\u76F8\u61C9\u503C\u3002",
  23202. "p": [
  23203. {
  23204. "name": "x",
  23205. "detail": "\u8981\u6B63\u614B\u5316\u7684\u96A8\u6A5F\u8B8A\u6578\u503C\u3002"
  23206. },
  23207. {
  23208. "name": "mean",
  23209. "detail": "\u5206\u4F48\u7684\u5E73\u5747\u503C\u3002"
  23210. },
  23211. {
  23212. "name": "standard_dev",
  23213. "detail": "\u5206\u4F48\u7684\u6A19\u6E96\u5DEE\u3002"
  23214. }
  23215. ]
  23216. },
  23217. "SMALL": {
  23218. "d": "\u8FD4\u56DE\u6578\u64DA\u96C6\u4E2D\u7684\u7B2Ck\u500B\u6700\u5C0F\u503C\u3002",
  23219. "a": "\u8FD4\u56DE\u6578\u64DA\u96C6\u4E2D\u7684\u7B2Ck\u500B\u6700\u5C0F\u503C\u3002",
  23220. "p": [
  23221. {
  23222. "name": "array",
  23223. "detail": "\u9700\u8981\u627E\u5230\u7B2Ck\u500B\u6700\u5C0F\u503C\u7684\u6578\u7D44\u6216\u6578\u503C\u6578\u64DA\u5340\u57DF\u3002"
  23224. },
  23225. {
  23226. "name": "k",
  23227. "detail": "\u8981\u8FD4\u56DE\u7684\u6578\u64DA\u5728\u6578\u7D44\u6216\u6578\u64DA\u5340\u57DF\u88CF\u7684\u4F4D\u7F6E\uFF08\u5F9E\u5C0F\u5230\u5927\uFF09\u3002"
  23228. }
  23229. ]
  23230. },
  23231. "SLOPE": {
  23232. "d": "\u8A08\u7B97\u901A\u904E\u6578\u64DA\u96C6\u7684\u7DDA\u6027\u56DE\u6B78\u5F97\u5230\u7684\u76F4\u7DDA\u7684\u659C\u7387\u3002",
  23233. "a": "\u8A08\u7B97\u901A\u904E\u6578\u64DA\u96C6\u7684\u7DDA\u6027\u56DE\u6B78\u5F97\u5230\u7684\u76F4\u7DDA\u7684\u659C\u7387\u3002",
  23234. "p": [
  23235. {
  23236. "name": "\u6578\u64DA_y",
  23237. "detail": "\u4EE3\u8868\u56E0\u8B8A\u6578\u6578\u64DA\u6578\u7D44\u6216\u77E9\u9663\u7684\u7BC4\u570D\u3002"
  23238. },
  23239. {
  23240. "name": "\u6578\u64DA_x",
  23241. "detail": "\u4EE3\u8868\u5F15\u6578\u6578\u64DA\u6578\u7D44\u6216\u77E9\u9663\u7684\u7BC4\u570D\u3002"
  23242. }
  23243. ]
  23244. },
  23245. "SKEW": {
  23246. "d": "\u8FD4\u56DE\u5206\u4F48\u7684\u504F\u659C\u5EA6\u3002\u504F\u659C\u5EA6\u8868\u660E\u5206\u4F48\u76F8\u5C0D\u65BC\u5E73\u5747\u503C\u7684\u4E0D\u5C0D\u7A31\u7A0B\u5EA6\u3002\u6B63\u504F\u659C\u5EA6\u8868\u660E\u5206\u4F48\u7684\u4E0D\u5C0D\u7A31\u5C3E\u90E8\u8DA8\u5411\u65BC\u66F4\u591A\u6B63\u503C\u3002\u8CA0\u504F\u659C\u5EA6\u8868\u660E\u5206\u4F48\u7684\u4E0D\u5C0D\u7A31\u5C3E\u90E8\u8DA8\u5411\u65BC\u66F4\u591A\u8CA0\u503C\u3002",
  23247. "a": "\u8FD4\u56DE\u5206\u4F48\u7684\u504F\u659C\u5EA6\u3002",
  23248. "p": [
  23249. {
  23250. "name": "\u503C1",
  23251. "detail": "\u6578\u64DA\u96C6\u4E2D\u7684\u7B2C\u4E00\u500B\u503C\u6216\u7BC4\u570D\u3002"
  23252. },
  23253. {
  23254. "name": "\u503C2, ...",
  23255. "detail": "[\u53EF\u9078] - \u6578\u64DA\u96C6\u4E2D\u5305\u542B\u7684\u5176\u4ED6\u503C\u6216\u7BC4\u570D\u3002"
  23256. }
  23257. ]
  23258. },
  23259. "SKEW_P": {
  23260. "d": "\u8FD4\u56DE\u57FA\u65BC\u6A23\u672C\u7E3D\u9AD4\u7684\u5206\u4F48\u4E0D\u5C0D\u7A31\u5EA6:\u8868\u660E\u5206\u4F48\u76F8\u5C0D\u65BC\u5E73\u5747\u503C\u7684\u4E0D\u5C0D\u7A31\u7A0B\u5EA6\u3002",
  23261. "a": "\u8FD4\u56DE\u57FA\u65BC\u6A23\u672C\u7E3D\u9AD4\u7684\u5206\u4F48\u4E0D\u5C0D\u7A31\u5EA6:\u8868\u660E\u5206\u4F48\u76F8\u5C0D\u65BC\u5E73\u5747\u503C\u7684\u4E0D\u5C0D\u7A31\u7A0B\u5EA6\u3002",
  23262. "p": [
  23263. {
  23264. "name": "\u503C1",
  23265. "detail": "\u6578\u64DA\u96C6\u4E2D\u7684\u7B2C\u4E00\u500B\u503C\u6216\u7BC4\u570D\u3002"
  23266. },
  23267. {
  23268. "name": "\u503C2, ...",
  23269. "detail": "[\u53EF\u9078] - \u6578\u64DA\u96C6\u4E2D\u5305\u542B\u7684\u5176\u4ED6\u503C\u6216\u7BC4\u570D\u3002"
  23270. }
  23271. ]
  23272. },
  23273. "VLOOKUP": {
  23274. "d": "\u7E31\u5411\u67E5\u627E\u3002\u5728\u7BC4\u570D\u7684\u7B2C\u4E00\u5217\u4E2D\u81EA\u4E0A\u800C\u4E0B\u8490\u7D22\u67D0\u500B\u9375\u503C,\u4E26\u8FD4\u56DE\u6240\u627E\u5230\u7684\u884C\u4E2D\u6307\u5B9A\u5132\u5B58\u683C\u7684\u503C\u3002",
  23275. "a": "\u7E31\u5411\u67E5\u627E\u3002\u5728\u7BC4\u570D\u7684\u7B2C\u4E00\u5217\u4E2D\u81EA\u4E0A\u800C\u4E0B\u8490\u7D22\u67D0\u500B\u9375\u503C",
  23276. "p": [
  23277. {
  23278. "name": "\u8490\u7D22\u9375\u503C",
  23279. "detail": '\u8981\u8490\u7D22\u7684\u503C,\u5982 42\u3001"Cats" \u6216 I24\u3002'
  23280. },
  23281. {
  23282. "name": "\u7BC4\u570D",
  23283. "detail": "\u8981\u9032\u884C\u8490\u7D22\u7684\u7BC4\u570D\u3002VLOOKUP \u5C07\u5728\u8A72\u7BC4\u570D\u7684\u7B2C\u4E00\u5217\u4E2D\u8490\u7D22\u8490\u7D22\u9375\u503C\u4E2D\u6307\u5B9A\u7684\u9375\u503C\u3002"
  23284. },
  23285. {
  23286. "name": "\u7D22\u5F15",
  23287. "detail": "\u8981\u8FD4\u56DE\u7684\u503C\u7684\u5217\u7D22\u5F15,\u7BC4\u570D\u4E2D\u7684\u7B2C\u4E00\u5217\u7DE8\u865F\u70BA1\u3002\n\n\u5982\u679C\u7D22\u5F15\u4E0D\u662F\u4ECB\u65BC1\u548C\u7BC4\u570D\u4E2D\u7684\u5217\u6578\u4E4B\u9593,\u5C07\u8FD4\u56DE#VALUE\uFF01\u3002"
  23288. },
  23289. {
  23290. "name": "\u5DF2\u6392\u5E8F",
  23291. "detail": "[\u9810\u8A2D\u503C\u70BATRUE()] -\u8A13\u793A\u8981\u8490\u7D22\u7684\u5217\uFF08\u6307\u5B9A\u7BC4\u570D\u7684\u7B2C\u4E00\u5217\uFF09\u662F\u5426\u5DF2\u6392\u5E8F\u3002\u5927\u591A\u6578\u60C5\u51B5\u4E0B,\u5EFA\u8B70\u8A2D\u70BAFALSE\uFF08\uFF09\u3002\n\n\u5EFA\u8B70\u5C07\u5DF2\u6392\u5E8F\u8A2D\u70BAFALSE\u3002\u5982\u679C\u8A2D\u70BAFALSE,\u5C07\u8FD4\u56DE\u5B8C\u5168\u5339\u914D\u9805\u3002\u5982\u679C\u5B58\u5728\u591A\u500B\u5339\u914D\u503C,\u5C07\u8FD4\u56DE\u627E\u5230\u7684\u7B2C\u4E00\u500B\u503C\u5C0D\u61C9\u7684\u5132\u5B58\u683C\u7684\u5167\u5BB9,\u5982\u679C\u627E\u4E0D\u5230\u5339\u914D\u503C,\u5247\u8FD4\u56DE#N/A\u3002\n\n\u5982\u679C\u5C07\u5DF2\u6392\u5E8F\u8A2D\u70BATRUE\u6216\u7701\u7565,\u5C07\u8FD4\u56DE\uFF08\u5C0F\u65BC\u6216\u7B49\u65BC\u8490\u7D22\u9375\u503C\u7684\uFF09\u6700\u63A5\u8FD1\u7684\u5339\u914D\u9805\u3002\u5982\u679C\u8490\u7D22\u7684\u5217\u4E2D\u6240\u6709\u7684\u503C\u5747\u5927\u65BC\u8490\u7D22\u9375\u503C,\u5247\u8FD4\u56DE#N/A\u3002"
  23292. }
  23293. ]
  23294. },
  23295. "HLOOKUP": {
  23296. "d": "\u6A6B\u5411\u67E5\u627E\u3002\u5728\u7BC4\u570D\u7684\u7B2C\u4E00\u884C\u4E2D\u8490\u7D22\u67D0\u500B\u9375\u503C,\u4E26\u8FD4\u56DE\u6240\u627E\u5230\u7684\u5217\u4E2D\u6307\u5B9A\u5132\u5B58\u683C\u7684\u503C\u3002",
  23297. "a": "\u6A6B\u5411\u67E5\u627E\u3002\u5728\u7BC4\u570D\u7684\u7B2C\u4E00\u884C\u4E2D\u8490\u7D22\u67D0\u500B\u9375\u503C",
  23298. "p": [
  23299. {
  23300. "name": "\u8490\u7D22\u9375\u503C",
  23301. "detail": '\u8981\u8490\u7D22\u7684\u503C\u3002\u4F8B\u5982,42\u3001"Cats"\u6216I24\u3002'
  23302. },
  23303. {
  23304. "name": "\u7BC4\u570D",
  23305. "detail": "\u8981\u9032\u884C\u8490\u7D22\u7684\u7BC4\u570D\u3002\u5C07\u5728\u8A72\u7BC4\u570D\u7684\u7B2C\u4E00\u884C\u4E2D\u8490\u7D22\u5728\u8490\u7D22\u9375\u503C\u4E2D\u6307\u5B9A\u7684\u9375\u503C\u3002"
  23306. },
  23307. {
  23308. "name": "\u7D22\u5F15",
  23309. "detail": "\u8981\u8FD4\u56DE\u7684\u503C\u7684\u884C\u7D22\u5F15,\u7BC4\u570D\u4E2D\u7684\u7B2C\u4E00\u884C\u7DE8\u865F\u70BA1\u3002\n\n\u5982\u679C\u7D22\u5F15\u4E0D\u662F\u4ECB\u65BC1\u548C\u7BC4\u570D\u4E2D\u7684\u884C\u6578\u4E4B\u9593,\u5C07\u8FD4\u56DE#VALUE\uFF01\u3002"
  23310. },
  23311. {
  23312. "name": "\u5DF2\u6392\u5E8F",
  23313. "detail": "[\u53EF\u9078 - \u9810\u8A2D\u503C\u70BATRUE()] - \u8A13\u793A\u8981\u8490\u7D22\u7684\u884C\uFF08\u6307\u5B9A\u7BC4\u570D\u7684\u7B2C\u4E00\u884C\uFF09\u662F\u5426\u5DF2\u6392\u5E8F\u3002\n\n\u5982\u679C\u5C07\u5DF2\u6392\u5E8F\u8A2D\u70BATRUE\u6216\u7701\u7565,\u5C07\u8FD4\u56DE\u6700\u63A5\u8FD1\u7684\u5339\u914D\u503C\uFF08\u5C0F\u65BC\u6216\u7B49\u65BC\u8490\u7D22\u9375\u503C\uFF09\u3002\u5982\u679C\u5728\u8490\u7D22\u7684\u884C\u4E2D\u6240\u6709\u7684\u503C\u5747\u5927\u65BC\u8490\u7D22\u9375\u503C,\u5247\u8FD4\u56DE#N/A\u3002\n\n\u5982\u679C\u5C07\u5DF2\u6392\u5E8F\u8A2D\u70BATRUE\u6216\u5C07\u5176\u7701\u7565,\u800C\u7BC4\u570D\u7684\u9996\u884C\u4E26\u975E\u8655\u65BC\u5DF2\u6392\u5E8F\u72C0\u614B,\u5247\u8FD4\u56DE\u503C\u53EF\u80FD\u6703\u662F\u932F\u8AA4\u7684\u3002\n\n\u5982\u679C\u5C07\u5DF2\u6392\u5E8F\u8A2D\u70BAFALSE,\u5247\u50C5\u8FD4\u56DE\u5B8C\u5168\u5339\u914D\u3002\u5982\u679C\u5B58\u5728\u591A\u500B\u5339\u914D\u503C,\u5C07\u8FD4\u56DE\u8207\u627E\u5230\u7684\u7B2C\u4E00\u500B\u503C\u5C0D\u61C9\u7684\u5132\u5B58\u683C\u7684\u5167\u5BB9,\u5982\u679C\u627E\u4E0D\u5230\u5339\u914D\u503C\u5247\u8FD4\u56DE#N/A\u3002"
  23314. }
  23315. ]
  23316. },
  23317. "LOOKUP": {
  23318. "d": "\u5728\u884C\u6216\u5217\u4E2D\u67E5\u627E\u76F8\u61C9\u9375,\u4E26\u5C07\u76F8\u61C9\u5132\u5B58\u683C\u7684\u503C\u8FD4\u56DE\u5230\u8207\u8490\u7D22\u884C\u6216\u5217\u6240\u5728\u4F4D\u7F6E\u76F8\u540C\u7684\u7D50\u679C\u7BC4\u570D\u4E2D\u3002",
  23319. "a": "\u5728\u884C\u6216\u5217\u4E2D\u67E5\u627E\u76F8\u61C9\u9375",
  23320. "p": [
  23321. {
  23322. "name": "\u8490\u7D22\u9375\u503C",
  23323. "detail": '\u8981\u5728\u884C\u6216\u5217\u4E2D\u8490\u7D22\u7684\u503C\u3002\u4F8B\u5982,42\u3001"Cats" \u6216 I24\u3002'
  23324. },
  23325. {
  23326. "name": "\u641C\u7D22\u7BC4\u570D | \u641C\u7D22\u7D50\u679C\u6578\u7D44",
  23327. "detail": "\u4F7F\u7528LOOKUP\u7684\u4E00\u7A2E\u65B9\u6CD5\u662F\u7D66\u5B9A\u55AE\u884C\u6216\u55AE\u5217\u5F62\u5F0F\u7684\u641C\u7D22\u7BC4\u570D\u9032\u884C\u8490\u7D22\u67E5\u627E,\u9019\u7A2E\u7BA1\u9053\u8981\u7528\u5230\u53E6\u4E00\u500B\u53C3\u6578\u7D50\u679C\u7BC4\u570D\u3002\u53E6\u4E00\u7A2E\u7BA1\u9053\u662F\u5C07\u9019\u5169\u500B\u53C3\u6578\u5408\u4F75\u70BA\u4E00\u500B\u641C\u7D22\u7D50\u679C\u6578\u7D44,\u5176\u4E2D\u7B2C\u4E00\u884C\u6216\u7B2C\u4E00\u5217\u7528\u65BC\u8490\u7D22,\u4E26\u5C07\u8FD4\u56DE\u503C\u653E\u5728\u8A72\u6578\u7D44\u7684\u6700\u5F8C\u4E00\u884C\u6216\u6700\u5F8C\u4E00\u5217\u4E2D\u3002"
  23328. },
  23329. {
  23330. "name": "\u7D50\u679C\u7BC4\u570D",
  23331. "detail": "[ \u53EF\u9078 ] - \u7528\u65BC\u5B58\u653E\u8FD4\u56DE\u7D50\u679C\u7684\u7BC4\u570D\u3002\u8FD4\u56DE\u503C\u5C0D\u61C9\u65BC\u5728\u641C\u7D22\u7BC4\u570D\u4E2D\u627E\u5230\u8490\u7D22\u9375\u503C\u7684\u4F4D\u7F6E\u3002\u6B64\u7BC4\u570D\u5FC5\u9808\u50C5\u70BA\u55AE\u884C\u6216\u55AE\u5217,\u800C\u5982\u679C\u60A8\u4F7F\u7528\u7684\u662F\u641C\u7D22\u7D50\u679C\u6578\u7D44\u7BA1\u9053,\u5247\u4E0D\u61C9\u63D0\u4F9B\u6B64\u53C3\u6578\u3002"
  23332. }
  23333. ]
  23334. },
  23335. "ADDRESS": {
  23336. "d": "\u8FD4\u56DE\u5B57\u4E32\u5F62\u5F0F\u7684\u5132\u5B58\u683C\u5F15\u7528\u3002",
  23337. "a": "\u8FD4\u56DE\u5B57\u4E32\u5F62\u5F0F\u7684\u5132\u5B58\u683C\u5F15\u7528\u3002",
  23338. "p": [
  23339. {
  23340. "name": "row_num",
  23341. "detail": "\u4E00\u500B\u6578\u503C,\u6307\u5B9A\u8981\u5728\u5132\u5B58\u683C\u5F15\u7528\u4E2D\u4F7F\u7528\u7684\u884C\u865F\u3002"
  23342. },
  23343. {
  23344. "name": "column_num",
  23345. "detail": "\u4E00\u500B\u6578\u503C,\u6307\u5B9A\u8981\u5728\u5132\u5B58\u683C\u5F15\u7528\u4E2D\u4F7F\u7528\u7684\u5217\u865F\uFF08\u800C\u975E\u540D\u7A31\uFF09\u3002A\u5217\u7684\u7DE8\u865F\u70BA1\u3002"
  23346. },
  23347. {
  23348. "name": "abs_num",
  23349. "detail": "[\u53EF\u9078 - \u9810\u8A2D\u503C\u70BA1] - \u4E00\u500B\u6578\u503C,\u6307\u5B9A\u8981\u8FD4\u56DE\u7684\u53C3\u8003\u985E\u578B\u3002\n\n1\u8868\u793A\u884C\u5217\u5747\u63A1\u7528\u7D55\u5C0D\u503C\uFF08\u4F8B\u5982$A$1\uFF09\uFF1B\n\n2\u8868\u793A\u63A1\u7528\u7D55\u5C0D\u884C\u865F,\u76F8\u5C0D\u5217\u6A19\uFF08\u4F8B\u5982A$1\uFF09\uFF1B\n\n3\u8868\u793A\u63A1\u7528\u76F8\u5C0D\u884C\u865F,\u7D55\u5C0D\u5217\u6A19\uFF08\u4F8B\u5982$A1\uFF09\uFF1B\n\n4\u8868\u793A\u884C\u5217\u5747\u63A1\u7528\u76F8\u5C0D\u503C\uFF08\u4F8B\u5982A1\uFF09\u3002"
  23350. },
  23351. {
  23352. "name": "A1",
  23353. "detail": "[\u53EF\u9078 - \u9810\u8A2D\u503C\u70BATRUE\uFF08\uFF09] - \u4E00\u500B\u5E03\u6797\u503C,\u8A13\u793A\u63A1\u7528A1\u6A19\u8A18\u5F62\u5F0F\uFF08TRUE\uFF09\u9084\u662FR1C1\u6A19\u8A18\u5F62\u5F0F\uFF08FALSE\uFF09\u3002"
  23354. },
  23355. {
  23356. "name": "sheet_text",
  23357. "detail": "[\u53EF\u9078 - \u9ED8\u8A8D\u9810\u8A2D] - \u7528\u65BC\u6307\u5B9A\u5730\u5740\u6240\u6307\u5411\u7684\u5DE5\u4F5C\u8868\u540D\u7A31\u3002"
  23358. }
  23359. ]
  23360. },
  23361. "INDIRECT": {
  23362. "d": "\u8FD4\u56DE\u4EE5\u5B57\u4E32\u6307\u5B9A\u7684\u5132\u5B58\u683C\u5F15\u7528\u3002",
  23363. "a": "\u8FD4\u56DE\u4EE5\u5B57\u4E32\u6307\u5B9A\u7684\u5132\u5B58\u683C\u5F15\u7528\u3002",
  23364. "p": [
  23365. {
  23366. "name": "ref_text",
  23367. "detail": "\u4EE5\u5E36\u5F15\u865F\u7684\u5B57\u4E32\u5F62\u5F0F\u63D0\u4F9B\u7684\u5132\u5B58\u683C\u5F15\u7528\u3002"
  23368. },
  23369. {
  23370. "name": "A1",
  23371. "detail": "[\u53EF\u9078 - \u9810\u8A2D\u503C\u70BATRUE\uFF08\uFF09] - \u4E00\u500B\u5E03\u6797\u503C,\u8A13\u793A\u63A1\u7528A1\u6A19\u8A18\u5F62\u5F0F\uFF08TRUE\uFF09\u9084\u662FR1C1\u6A19\u8A18\u5F62\u5F0F\uFF08FALSE\uFF09\u3002"
  23372. }
  23373. ]
  23374. },
  23375. "ROW": {
  23376. "d": "\u8FD4\u56DE\u6307\u5B9A\u5132\u5B58\u683C\u7684\u884C\u865F",
  23377. "a": "\u8FD4\u56DE\u6307\u5B9A\u5132\u5B58\u683C\u7684\u884C\u865F",
  23378. "p": [
  23379. {
  23380. "name": "reference",
  23381. "detail": "[\u53EF\u9078 - \u9ED8\u8A8D\u70BA\u6B64\u516C\u5F0F\u6240\u5728\u7684\u5132\u5B58\u683C] - \u8981\u8FD4\u56DE\u5176\u884C\u865F\u7684\u5132\u5B58\u683C\u3002\n\n\u5982\u679C\u5132\u5B58\u683C\u5F15\u7528\u6307\u5411\u7684\u7BC4\u570D\u5176\u5BEC\u5EA6\u5927\u65BC\u4E00\u500B\u5132\u5B58\u683C,\u800C\u6B64\u516C\u5F0F\u4E0D\u662F\u7528\u4F5C\u6578\u7D44\u516C\u5F0F\u7684,\u9019\u6642\u6703\u50C5\u8FD4\u56DE\u5132\u5B58\u683C\u5F15\u7528\u4E2D\u9996\u884C\u7684\u7DE8\u865F\u503C\u3002"
  23382. }
  23383. ]
  23384. },
  23385. "ROWS": {
  23386. "d": "\u8FD4\u56DE\u6307\u5B9A\u6578\u7D44\u6216\u7BC4\u570D\u4E2D\u7684\u884C\u6578\u3002",
  23387. "a": "\u8FD4\u56DE\u6307\u5B9A\u6578\u7D44\u6216\u7BC4\u570D\u4E2D\u7684\u884C\u6578\u3002",
  23388. "p": [
  23389. {
  23390. "name": "array",
  23391. "detail": "\u8981\u8FD4\u56DE\u5176\u884C\u6578\u7684\u7BC4\u570D\u3002"
  23392. }
  23393. ]
  23394. },
  23395. "COLUMN": {
  23396. "d": "\u6309\u7167 `A=1` \u7684\u898F\u5247\u8FD4\u56DE\u6307\u5B9A\u5132\u5B58\u683C\u7684\u5217\u865F\u3002",
  23397. "a": "\u6309\u7167 `A=1` \u7684\u898F\u5247\u8FD4\u56DE\u6307\u5B9A\u5132\u5B58\u683C\u7684\u5217\u865F\u3002",
  23398. "p": [
  23399. {
  23400. "name": "reference",
  23401. "detail": "[\u53EF\u9078 - \u9ED8\u8A8D\u70BA\u5305\u542B\u6B64\u516C\u5F0F\u7684\u5132\u5B58\u683C] - \u8981\u8FD4\u56DE\u5176\u5217\u865F\u7684\u5132\u5B58\u683C\u3002A\u5217\u5C0D\u61C9\u7684\u7DE8\u865F\u70BA1\u3002\n\n\u5982\u679C\u5132\u5B58\u683C\u5F15\u7528\u662F\u5BEC\u5EA6\u8D85\u904E\u4E00\u500B\u5132\u5B58\u683C\u7684\u7BC4\u570D,\u800C\u6B64\u516C\u5F0F\u4E0D\u662F\u4F5C\u70BA\u6578\u7D44\u516C\u5F0F\u4F86\u4F7F\u7528\u7684,\u56D9\u6B64\u5C07\u8FD4\u56DE\u5132\u5B58\u683C\u5F15\u7528\u4E2D\u7684\u7B2C\u4E00\u5217\u7684\u4F4D\u7F6E\u3002"
  23402. }
  23403. ]
  23404. },
  23405. "COLUMNS": {
  23406. "d": "\u8FD4\u56DE\u6307\u5B9A\u6578\u7D44\u6216\u7BC4\u570D\u4E2D\u7684\u5217\u6578\u3002",
  23407. "a": "\u8FD4\u56DE\u6307\u5B9A\u6578\u7D44\u6216\u7BC4\u570D\u4E2D\u7684\u5217\u6578\u3002",
  23408. "p": [
  23409. {
  23410. "name": "array",
  23411. "detail": "\u8981\u8FD4\u56DE\u5176\u5217\u6578\u7684\u7BC4\u570D\u3002"
  23412. }
  23413. ]
  23414. },
  23415. "OFFSET": {
  23416. "d": "\u7D66\u5B9A\u67D0\u7BC4\u570D\u7684\u8D77\u59CB\u5132\u5B58\u683C\u5F15\u7528\u4EE5\u53CA\u8A72\u7BC4\u570D\u6DB5\u84CB\u7684\u884C\u5217\u6578\u91CF,\u8FD4\u56DE\u8A72\u7BC4\u570D\u7684\u5F15\u7528\u3002",
  23417. "a": "\u7D66\u5B9A\u67D0\u7BC4\u570D\u7684\u8D77\u59CB\u5132\u5B58\u683C\u5F15\u7528\u4EE5\u53CA\u8A72\u7BC4\u570D\u6DB5\u84CB\u7684\u884C\u5217\u6578\u91CF,\u8FD4\u56DE\u8A72\u7BC4\u570D\u7684\u5F15\u7528\u3002",
  23418. "p": [
  23419. {
  23420. "name": "reference",
  23421. "detail": "\u7528\u65BC\u8A08\u7B97\u884C\u5217\u504F\u79FB\u91CF\u7684\u8D77\u9EDE\u3002"
  23422. },
  23423. {
  23424. "name": "rows",
  23425. "detail": "\u8981\u504F\u79FB\u7684\u884C\u6578\u3002\n\n\u884C\u504F\u79FB\u91CF\u5FC5\u9808\u662F\u6574\u6578,\u4F46\u4E5F\u53EF\u4EE5\u662F\u8CA0\u6578\u3002\u5982\u679C\u63D0\u4F9B\u7684\u53C3\u6578\u5E36\u6709\u5C0F\u6578,\u5C0F\u6578\u90E8\u5206\u5C07\u88AB\u622A\u53BB\u3002"
  23426. },
  23427. {
  23428. "name": "cols",
  23429. "detail": "\u8981\u504F\u79FB\u7684\u5217\u6578\u3002\n\n\u5217\u504F\u79FB\u91CF\u5FC5\u9808\u662F\u6574\u6578,\u4F46\u4E5F\u53EF\u4EE5\u662F\u8CA0\u6578\u3002\u5982\u679C\u63D0\u4F9B\u7684\u53C3\u6578\u5E36\u6709\u5C0F\u6578,\u5C0F\u6578\u90E8\u5206\u5C07\u88AB\u622A\u53BB\u3002"
  23430. },
  23431. {
  23432. "name": "height",
  23433. "detail": "[\u53EF\u9078] - \u8981\u5F9E\u504F\u79FB\u76EE\u6A19\u958B\u59CB\u8FD4\u56DE\u7684\u7BC4\u570D\u7684\u9AD8\u5EA6\u3002"
  23434. },
  23435. {
  23436. "name": "width",
  23437. "detail": "[\u53EF\u9078] - \u8981\u5F9E\u504F\u79FB\u76EE\u6A19\u958B\u59CB\u8FD4\u56DE\u7684\u7BC4\u570D\u7684\u5BEC\u5EA6\u3002"
  23438. }
  23439. ]
  23440. },
  23441. "MATCH": {
  23442. "d": "\u5728\u5132\u5B58\u683C\u4E2D\u8490\u7D22\u6307\u5B9A\u9805,\u7136\u5F8C\u8FD4\u56DE\u8A72\u9805\u5728\u5132\u5B58\u683C\u5340\u57DF\u4E2D\u7684\u76F8\u5C0D\u4F4D\u7F6E\u3002",
  23443. "a": "\u5728\u5132\u5B58\u683C\u4E2D\u8490\u7D22\u6307\u5B9A\u9805,\u7136\u5F8C\u8FD4\u56DE\u8A72\u9805\u5728\u5132\u5B58\u683C\u5340\u57DF\u4E2D\u7684\u76F8\u5C0D\u4F4D\u7F6E\u3002",
  23444. "p": [
  23445. {
  23446. "name": "lookup_value",
  23447. "detail": "\u8981\u5728 lookup_array \u4E2D\u5339\u914D\u7684\u503C\u3002"
  23448. },
  23449. {
  23450. "name": "lookup_array",
  23451. "detail": "\u8981\u8490\u7D22\u7684\u5132\u5B58\u683C\u5340\u57DF\u3002\n\n\u5982\u679C\u6240\u7528\u7684\u7BC4\u570D\u7684\u9AD8\u5EA6\u548C\u5BEC\u5EA6\u5747\u5927\u65BC1,MATCH\u5C07\u8FD4\u56DE#N/A\uFF01\u3002"
  23452. },
  23453. {
  23454. "name": "match_type",
  23455. "detail": "[\u53EF\u9078 - \u9810\u8A2D\u503C\u70BA1] - \u8981\u63A1\u7528\u7684\u8490\u7D22\u7BA1\u9053\u3002\n\n1\u70BA\u9ED8\u8A8D\u985E\u578B,\u6B64\u6642MATCH\u6703\u5047\u8A2D\u7BC4\u570D\u5DF2\u6309\u6607\u51AA\u6392\u5E8F,\u4E26\u8FD4\u56DE\u5C0F\u65BC\u7B49\u65BC\u8490\u7D22\u9375\u503C\u7684\u6700\u5927\u503C\u3002\n\n0\u8868\u793A\u5B8C\u5168\u5339\u914D,\u5728\u7BC4\u570D\u672A\u6392\u5E8F\u7684\u60C5\u51B5\u4E0B\u9700\u8981\u4F7F\u7528\u6B64\u7BA1\u9053\u3002\n\n-1\u8B93MATCH\u5047\u8A2D\u7BC4\u570D\u662F\u6309\u964D\u5E8F\u6392\u5E8F\u7684,\u4E26\u8FD4\u56DE\u5927\u65BC\u7B49\u65BC\u8490\u7D22\u9375\u503C\u7684\u6700\u5C0F\u503C\u3002"
  23456. }
  23457. ]
  23458. },
  23459. "INDEX": {
  23460. "d": "\u8FD4\u56DE\u8868\u683C\u6216\u4E2D\u7684\u5143\u7D20\u503C,\u6B64\u5143\u7D20\u7531\u884C\u865F\u548C\u5217\u865F\u7684\u7D22\u5F15\u503C\u7D66\u5B9A\u3002",
  23461. "a": "\u8FD4\u56DE\u8868\u683C\u6216\u4E2D\u7684\u5143\u7D20\u503C,\u6B64\u5143\u7D20\u7531\u884C\u865F\u548C\u5217\u865F\u7684\u7D22\u5F15\u503C\u7D66\u5B9A\u3002",
  23462. "p": [
  23463. {
  23464. "name": "array",
  23465. "detail": "\u5132\u5B58\u683C\u5340\u57DF\u6216\u6578\u7D44\u5E38\u6578\u3002"
  23466. },
  23467. {
  23468. "name": "row_num",
  23469. "detail": "\u9078\u64C7\u6578\u7D44\u4E2D\u7684\u67D0\u884C,\u51FD\u6578\u5F9E\u8A72\u884C\u8FD4\u56DE\u6578\u503C\u3002"
  23470. },
  23471. {
  23472. "name": "column_num",
  23473. "detail": "\u9078\u64C7\u6578\u7D44\u4E2D\u7684\u67D0\u5217,\u51FD\u6578\u5F9E\u8A72\u5217\u8FD4\u56DE\u6578\u503C\u3002"
  23474. }
  23475. ]
  23476. },
  23477. "GETPIVOTDATA": {
  23478. "d": "\u5F9E\u8207\u6307\u5B9A\u884C\u548C\u5217\u6A19\u984C\u5C0D\u61C9\u7684\u6578\u64DA\u900F\u8996\u9336\u4E2D\u9078\u53D6\u532F\u7E3D\u503C\u3002",
  23479. "a": "\u5F9E\u8207\u6307\u5B9A\u884C\u548C\u5217\u6A19\u984C\u5C0D\u61C9\u7684\u6578\u64DA\u900F\u8996\u9336\u4E2D\u9078\u53D6\u532F\u7E3D\u503C\u3002",
  23480. "p": [
  23481. {
  23482. "name": "data_field",
  23483. "detail": '\u60A8\u60F3\u5F9E\u6578\u64DA\u900F\u8996\u9336\u4E2D\u7372\u53D6\u5176\u6578\u64DA\u7684\u503C\u540D\u7A31\u3002\n\u503C\u540D\u7A31\u5FC5\u9808\u62EC\u5728\u5F15\u865F\u4E2D\u6216\u662F\u6307\u5411\u5305\u542B\u76F8\u95DC\u6587\u5B57\u7684\u4EFB\u4F55\u5132\u5B58\u683C\u7684\u5F15\u7528\u3002\n\u5982\u679C\u6709\u591A\u500B\u503C\u6B04\u4F4D,\u5247\u5FC5\u9808\u4F7F\u7528\u6578\u64DA\u900F\u8996\u9336\u4E2D\u986F\u793A\u7684\u78BA\u5207\u540D\u7A31\uFF08\u5982"\u92B7\u552E\u7E3D\u984D"\uFF09\u3002'
  23484. },
  23485. {
  23486. "name": "pivot_table",
  23487. "detail": "\u76EE\u6A19\u6578\u64DA\u900F\u8996\u9336\u4E2D\u7684\u4EFB\u4F55\u5132\u5B58\u683C\u7684\u5F15\u7528\uFF08\u63A8\u85A6\u4F4D\u65BC\u9802\u89D2\u7684\u5132\u5B58\u683C\uFF09\u3002"
  23488. },
  23489. {
  23490. "name": "field1",
  23491. "detail": "[\u53EF\u9078] - \u6E90\u6578\u64DA\u96C6\uFF08\u4E0D\u662F\u6578\u64DA\u900F\u8996\u9336\uFF09\u4E2D\u5217\u7684\u540D\u7A31\u3002"
  23492. },
  23493. {
  23494. "name": "item1",
  23495. "detail": "[\u53EF\u9078] - \u6578\u64DA\u900F\u8996\u9336\u4E2D\u986F\u793A\u7684\u8207\u60A8\u8981\u6AA2\u7D22\u7684\u6B04\u4F4D\u540D\u7A311\u76F8\u5C0D\u61C9\u7684\u884C\u6216\u5217\u7684\u540D\u7A31\u3002"
  23496. }
  23497. ]
  23498. },
  23499. "CHOOSE": {
  23500. "d": "\u57FA\u65BC\u7D22\u5F15\u8FD4\u56DE\u9078\u9805\u6E05\u55AE\u4E2D\u7684\u5143\u7D20\u3002",
  23501. "a": "\u57FA\u65BC\u7D22\u5F15\u8FD4\u56DE\u9078\u9805\u6E05\u55AE\u4E2D\u7684\u5143\u7D20\u3002",
  23502. "p": [
  23503. {
  23504. "name": "index_num",
  23505. "detail": "\u6307\u5B9A\u8981\u8FD4\u56DE\u54EA\u4E00\u9805\u3002\n\n\u5982\u679C\u7D22\u5F15\u70BA\u96F6\u3001\u8CA0\u503C\u6216\u5927\u65BC\u63D0\u4F9B\u7684\u9078\u64C7\u6578\u91CF,\u5C07\u8FD4\u56DE#VALUE\uFF01\u932F\u8AA4\u3002"
  23506. },
  23507. {
  23508. "name": "value1",
  23509. "detail": "\u4E00\u9805\u53EF\u80FD\u7684\u8FD4\u56DE\u503C\u3002\u5FC5\u9808\u63D0\u4F9B\u3002\u53EF\u4EE5\u662F\u5132\u5B58\u683C\u5F15\u7528\u6216\u55AE\u7368\u7684\u503C\u3002"
  23510. },
  23511. {
  23512. "name": "value2",
  23513. "detail": "[\u53EF\u9078] - \u5176\u4ED6\u53EF\u4EE5\u9078\u64C7\u7684\u503C\u3002\u9078\u64C7"
  23514. }
  23515. ]
  23516. },
  23517. "HYPERLINK": {
  23518. "d": "\u5728\u5132\u5B58\u683C\u5167\u5275\u5EFA\u4E00\u500B\u8D85\u9023\u7D50\u3002",
  23519. "a": "\u5728\u5132\u5B58\u683C\u5167\u5275\u5EFA\u4E00\u500B\u8D85\u9023\u7D50\u3002",
  23520. "p": [
  23521. {
  23522. "name": "\u7DB2\u5740",
  23523. "detail": "\u4EE5\u5F15\u865F\u62EC\u4F4F\u7684\u9023\u7D50\u4F4D\u7F6E\u7684\u5B8C\u6574\u7DB2\u5740,\u6216\u5C0D\u5305\u542B\u9019\u7A2E\u7DB2\u5740\u7684\u5132\u5B58\u683C\u7684\u5F15\u7528\u3002\n\n\u50C5\u5141\u8A31\u67D0\u4E9B\u9023\u7D50\u985E\u578B\u3002\u5176\u4E2D\u5305\u62EC:http://\u3001https://\u3001mailto:\u3001aim:\u3001ftp://\u3001gopher://\u3001telnet://\u548Cnews://,\u660E\u78BA\u7981\u7528\u4F7F\u7528\u5176\u4ED6\u5354\u5B9A\u3002\u5982\u679C\u6307\u5B9A\u7684\u662F\u5176\u4ED6\u5354\u5B9A,\u5C07\u6703\u5728\u5132\u5B58\u683C\u4E2D\u986F\u793A\u9023\u7D50\u6A19\u7C64,\u4F46\u8A72\u6A19\u7C64\u4E0D\u6703\u4EE5\u9023\u7D50\u5F62\u5F0F\u5448\u73FE\u3002\n\n\u5982\u679C\u672A\u6307\u5B9A\u5354\u5B9A,\u5247\u5047\u8A2D\u4F7F\u7528http://,\u4E26\u5C07\u5176\u4F5C\u70BA\u7DB2\u5740\u7684\u9996\u78BC\u3002"
  23524. },
  23525. {
  23526. "name": "\u9023\u7D50\u6A19\u7C64",
  23527. "detail": '[\u53EF\u9078-\u9ED8\u8A8D\u70BA\u7DB2\u5740] - \u8981\u5728\u5132\u5B58\u683C\u4E2D\u4F5C\u70BA\u9023\u7D50\u986F\u793A\u7684\u6587\u5B57\uFF08\u7528\u5F15\u865F\u62EC\u8D77\u4F86\u7684\uFF09,\u6216\u8005\u6307\u5411\u5305\u542B\u9019\u7A2E\u6A19\u7C64\u7684\u5132\u5B58\u683C\u7684\u5F15\u7528\u3002\n\n\u5982\u679C\u9023\u7D50\u6A19\u7C64\u662F\u6307\u5411\u67D0\u500B\u7A7A\u5132\u5B58\u683C\u7684\u5F15\u7528,\u5982\u679C\u7DB2\u5740\u6709\u6548,\u5C31\u5C07\u5176\u4F5C\u70BA\u9023\u7D50\u986F\u793A,\u5426\u5247\u4F5C\u70BA\u7D14\u6587\u5B57\u986F\u793A\u3002\n\n\u5982\u679C\u9023\u7D50\u6A19\u7C64\u70BA\u7A7A\u5B57\u4E32\u5E38\u6578\uFF08""\uFF09,\u6240\u5728\u5132\u5B58\u683C\u986F\u793A\u7684\u5167\u5BB9\u5C07\u70BA\u7A7A\u767D,\u4F46\u901A\u904E\u9EDE\u64CA\u8A72\u5132\u5B58\u683C\u6216\u8F49\u5165\u8A72\u5132\u5B58\u683C\u4ECD\u7136\u53EF\u4EE5\u8A2A\u554F\u9023\u7D50\u3002'
  23528. }
  23529. ]
  23530. },
  23531. "TIME": {
  23532. "d": "\u5C07\u7D66\u5B9A\u7684\u5C0F\u6642\u3001\u5206\u9418\u548C\u79D2\u8F49\u63DB\u70BA\u6642\u9593\u3002",
  23533. "a": "\u5C07\u7D66\u5B9A\u7684\u5C0F\u6642\u3001\u5206\u9418\u548C\u79D2\u8F49\u63DB\u70BA\u6642\u9593\u3002",
  23534. "p": [
  23535. {
  23536. "name": "\u5C0F\u6642",
  23537. "detail": "0\uFF08\u96F6\uFF09\u5230 32767 \u4E4B\u9593\u7684\u6578\u4F4D,\u4EE3\u8868\u5C0F\u6642\u3002\n\n\u4EFB\u4F55\u5927\u65BC 23 \u7684\u503C\u90FD\u6703\u9664\u4EE524,\u9918\u6578\u5C07\u4F5C\u70BA\u5C0F\u6642\u503C\u3002"
  23538. },
  23539. {
  23540. "name": "\u5206\u9418",
  23541. "detail": "0\uFF08\u96F6\uFF09\u5230 32767 \u4E4B\u9593\u7684\u6578\u4F4D,\u4EE3\u8868\u5206\u9418\u3002\n\n\u4EFB\u4F55\u5927\u65BC 59 \u7684\u503C\u5C07\u8F49\u63DB\u70BA\u5C0F\u6642\u548C\u5206\u9418\u3002"
  23542. },
  23543. {
  23544. "name": "\u79D2",
  23545. "detail": "0\uFF08\u96F6\uFF09\u5230 32767 \u4E4B\u9593\u7684\u6578\u4F4D,\u4EE3\u8868\u79D2\u3002\n\n\u4EFB\u4F55\u5927\u65BC 59 \u7684\u503C\u5C07\u8F49\u63DB\u70BA\u5C0F\u6642\u3001\u5206\u9418\u548C\u79D2\u3002"
  23546. }
  23547. ]
  23548. },
  23549. "TIMEVALUE": {
  23550. "d": "\u6309\u4E00\u592924\u5C0F\u6642\u8FD4\u56DE\u8A72\u6642\u9593\u7684\u5206\u6578\u8868\u793A\u3002",
  23551. "a": "\u6309\u4E00\u592924\u5C0F\u6642\u8FD4\u56DE\u8A72\u6642\u9593\u7684\u5206\u6578\u8868\u793A\u3002",
  23552. "p": [
  23553. {
  23554. "name": "time_text",
  23555. "detail": "\u7528\u65BC\u8868\u793A\u6642\u9593\u7684\u5B57\u4E32\u3002"
  23556. }
  23557. ]
  23558. },
  23559. "EOMONTH": {
  23560. "d": "\u8FD4\u56DE\u67D0\u500B\u6708\u4EFD\u6700\u5F8C\u4E00\u5929\u7684\u5E8F\u865F,\u8A72\u6708\u4EFD\u5728\u53E6\u4E00\u500B\u65E5\u671F\u4E4B\u524D\u6216\u4E4B\u5F8C\u7684\u6578\u500B\u6708\uFF08\u6708\u6578\u7531\u53C3\u6578\u6307\u5B9A\uFF09\u3002",
  23561. "a": "\u8FD4\u56DE\u67D0\u500B\u6708\u4EFD\u6700\u5F8C\u4E00\u5929\u7684\u5E8F\u865F",
  23562. "p": [
  23563. {
  23564. "name": "start_date",
  23565. "detail": "\u7528\u65BC\u8A08\u7B97\u7D50\u679C\u7684\u53C3\u7167\u65E5\u671F\u3002"
  23566. },
  23567. {
  23568. "name": "months",
  23569. "detail": "\u7528\u65BC\u8A08\u7B97\u7684\u8D77\u59CB\u65E5\u671F\u4E4B\u524D\uFF08\u8CA0\uFF09\u6216\u4E4B\u5F8C\uFF08\u6B63\uFF09\u7684\u6708\u6578\u3002\u8FD4\u56DE\u7684\u662F\u8A08\u7B97\u6240\u5F97\u6708\u4EFD\u7684\u6700\u5F8C\u90A3\u5929\u3002"
  23570. }
  23571. ]
  23572. },
  23573. "EDATE": {
  23574. "d": "\u8FD4\u56DE\u8868\u793A\u67D0\u500B\u65E5\u671F\u7684\u5E8F\u865F,\u8A72\u65E5\u671F\u5728\u53E6\u4E00\u500B\u65E5\u671F\u7684\u6578\u6708\u4E4B\u524D/\u4E4B\u5F8C\u3002",
  23575. "a": "\u8FD4\u56DE\u8868\u793A\u67D0\u500B\u65E5\u671F\u7684\u5E8F\u865F",
  23576. "p": [
  23577. {
  23578. "name": "start_date",
  23579. "detail": "\u7528\u65BC\u8A08\u7B97\u7D50\u679C\u7684\u53C3\u7167\u65E5\u671F\u3002"
  23580. },
  23581. {
  23582. "name": "months",
  23583. "detail": "\u7528\u65BC\u8A08\u7B97\u7684\u8D77\u59CB\u65E5\u671F\u4E4B\u524D\uFF08\u8CA0\uFF09\u6216\u4E4B\u5F8C\uFF08\u6B63\uFF09\u7684\u6708\u6578\u3002"
  23584. }
  23585. ]
  23586. },
  23587. "SECOND": {
  23588. "d": "\u8FD4\u56DE\u6642\u9593\u503C\u7684\u79D2\u6578\u3002\u79D2\u6578\u662F0\uFF08\u96F6\uFF09\u523059\u7BC4\u570D\u5167\u7684\u6574\u6578\u3002",
  23589. "a": "\u8FD4\u56DE\u6642\u9593\u503C\u7684\u79D2\u6578\u3002\u79D2\u6578\u662F0\uFF08\u96F6\uFF09\u523059\u7BC4\u570D\u5167\u7684\u6574\u6578\u3002",
  23590. "p": [
  23591. {
  23592. "name": "\u6642\u9593",
  23593. "detail": "\u7528\u65BC\u8A08\u7B97\u79D2\u9418\u90E8\u5206\u7684\u6642\u9593\u3002\u5FC5\u9808\u70BA\u4EE5\u4E0B\u503C\u4E4B\u4E00:\u6307\u5411\u5305\u542B\u65E5\u671F/\u6642\u9593\u503C\u7684\u5132\u5B58\u683C\u7684\u5F15\u7528\u3001\u8FD4\u56DE\u65E5\u671F/\u6642\u9593\u7684\u51FD\u6578\u6216\u8005\u6578\u4F4D\u3002"
  23594. }
  23595. ]
  23596. },
  23597. "MINUTE": {
  23598. "d": "\u4EE5\u6578\u4F4D\u683C\u5F0F\u8FD4\u56DE\u7279\u5B9A\u6642\u9593\u7684\u5206\u9418\u90E8\u5206\u3002",
  23599. "a": "\u4EE5\u6578\u4F4D\u683C\u5F0F\u8FD4\u56DE\u7279\u5B9A\u6642\u9593\u7684\u5206\u9418\u90E8\u5206\u3002",
  23600. "p": [
  23601. {
  23602. "name": "\u6642\u9593",
  23603. "detail": "\u7528\u65BC\u8A08\u7B97\u5206\u9418\u90E8\u5206\u7684\u6642\u9593\u3002\u5FC5\u9808\u70BA\u4EE5\u4E0B\u503C\u4E4B\u4E00:\u6307\u5411\u5305\u542B\u65E5\u671F/\u6642\u9593\u503C\u7684\u5132\u5B58\u683C\u7684\u5F15\u7528\u3001\u8FD4\u56DE\u65E5\u671F/\u6642\u9593\u7684\u51FD\u6578\u6216\u8005\u6578\u4F4D\u3002"
  23604. }
  23605. ]
  23606. },
  23607. "HOUR": {
  23608. "d": "\u4EE5\u6578\u4F4D\u683C\u5F0F\u8FD4\u56DE\u7279\u5B9A\u6642\u9593\u7684\u5C0F\u6642\u90E8\u5206\u3002",
  23609. "a": "\u4EE5\u6578\u4F4D\u683C\u5F0F\u8FD4\u56DE\u7279\u5B9A\u6642\u9593\u7684\u5C0F\u6642\u90E8\u5206\u3002",
  23610. "p": [
  23611. {
  23612. "name": "\u6642\u9593",
  23613. "detail": "\u7528\u65BC\u8A08\u7B97\u5C0F\u6642\u90E8\u5206\u7684\u6642\u9593\u3002\u5FC5\u9808\u70BA\u4EE5\u4E0B\u503C\u4E4B\u4E00:\u6307\u5411\u5305\u542B\u65E5\u671F/\u6642\u9593\u503C\u7684\u5132\u5B58\u683C\u7684\u5F15\u7528\u3001\u8FD4\u56DE\u65E5\u671F/\u6642\u9593\u7684\u51FD\u6578\u6216\u8005\u6578\u4F4D\u3002"
  23614. }
  23615. ]
  23616. },
  23617. "NOW": {
  23618. "d": "\u4EE5\u65E5\u671F\u503C\u683C\u5F0F\u8FD4\u56DE\u7576\u524D\u65E5\u671F\u548C\u6642\u9593\u3002",
  23619. "a": "\u4EE5\u65E5\u671F\u503C\u683C\u5F0F\u8FD4\u56DE\u7576\u524D\u65E5\u671F\u548C\u6642\u9593\u3002",
  23620. "p": []
  23621. },
  23622. "NETWORKDAYS": {
  23623. "d": "\u8FD4\u56DE\u6240\u63D0\u4F9B\u7684\u5169\u500B\u65E5\u671F\u4E4B\u9593\u7684\u6DE8\u5DE5\u4F5C\u65E5\u5929\u6578\u3002",
  23624. "a": "\u8FD4\u56DE\u6240\u63D0\u4F9B\u7684\u5169\u500B\u65E5\u671F\u4E4B\u9593\u7684\u6DE8\u5DE5\u4F5C\u65E5\u5929\u6578\u3002",
  23625. "p": [
  23626. {
  23627. "name": "start_date",
  23628. "detail": "\u7528\u65BC\u8A08\u7B97\u6DE8\u5DE5\u4F5C\u65E5\u5929\u6578\u7684\u6642\u9593\u6BB5\u958B\u59CB\u65E5\u671F\u3002"
  23629. },
  23630. {
  23631. "name": "end_date",
  23632. "detail": "\u7528\u65BC\u8A08\u7B97\u6DE8\u5DE5\u4F5C\u65E5\u5929\u6578\u7684\u6642\u9593\u6BB5\u7D50\u675F\u65E5\u671F\u3002"
  23633. },
  23634. {
  23635. "name": "holidays",
  23636. "detail": "[\u53EF\u9078] - \u4E00\u500B\u7BC4\u570D\u6216\u6578\u7D44\u5E38\u6578,\u5176\u4E2D\u5305\u542B\u4F5C\u70BA\u7BC0\u5047\u65E5\u7684\u65E5\u671F\u5E8F\u865F\u3002\n\n\u5728\u7BC0\u5047\u65E5\u6578\u7D44\u4E2D\u63D0\u4F9B\u7684\u503C\u5FC5\u9808\u662F\u65E5\u671F\u5E8F\u865F\u503C\uFF08\u4F8B\u5982\u7531N\u6240\u8FD4\u56DE\u7684\u503C\uFF09\u6216\u65E5\u671F\u503C\uFF08\u4F8B\u5982\u7531DATE\u3001DATEVALUE\u6216TO_DATE\u8FD4\u56DE\u7684\u503C\uFF09\u3002\u7531\u7BC4\u570D\u6307\u5B9A\u7684\u503C\u61C9\u8A72\u662F\u6A19\u6E96\u7684\u65E5\u671F\u503C\u6216\u65E5\u671F\u5E8F\u6578\u503C\u3002"
  23637. }
  23638. ]
  23639. },
  23640. "NETWORKDAYS_INTL": {
  23641. "d": "\u8FD4\u56DE\u7D66\u5B9A\u7684\u5169\u500B\u65E5\u671F\u4E4B\u9593\u7684\u6DE8\u5DE5\u4F5C\u65E5\u5929\u6578\uFF08\u6392\u9664\u6307\u5B9A\u7684\u9031\u672B\u548C\u7BC0\u5047\u65E5\uFF09\u3002",
  23642. "a": "\u8FD4\u56DE\u7D66\u5B9A\u7684\u5169\u500B\u65E5\u671F\u4E4B\u9593\u7684\u6DE8\u5DE5\u4F5C\u65E5\u5929\u6578\uFF08\u6392\u9664\u6307\u5B9A\u7684\u9031\u672B\u548C\u7BC0\u5047\u65E5\uFF09\u3002",
  23643. "p": [
  23644. {
  23645. "name": "start_date",
  23646. "detail": "\u7528\u65BC\u8A08\u7B97\u6DE8\u5DE5\u4F5C\u65E5\u5929\u6578\u7684\u6642\u9593\u6BB5\u958B\u59CB\u65E5\u671F\u3002"
  23647. },
  23648. {
  23649. "name": "end_date",
  23650. "detail": "\u7528\u65BC\u8A08\u7B97\u6DE8\u5DE5\u4F5C\u65E5\u5929\u6578\u7684\u6642\u9593\u6BB5\u7D50\u675F\u65E5\u671F\u3002"
  23651. },
  23652. {
  23653. "name": "weekend",
  23654. "detail": '[\u53EF\u9078-\u9810\u8A2D\u503C\u70BA1] - \u7528\u65BC\u8868\u793A\u54EA\u4E9B\u5929\u70BA\u9031\u672B\u7684\u6578\u4F4D\u6216\u5B57\u4E32\u3002\n\u5B57\u4E32\u7BA1\u9053:\u53EF\u4EE5\u4F7F\u7528\u75310\u548C1\u7D44\u6210\u7684\u5B57\u4E32\u4F86\u6307\u5B9A\u9031\u672B,\u4E32\u4E2D\u7684\u7B2C\u4E00\u500B\u6578\u4F4D\u5B57\u5143\u4EE3\u8868\u9031\u4E00,\u6700\u5F8C\u4E00\u500B\u5247\u4EE3\u8868\u5468\u65E5\u3002\u96F6\u8868\u793A\u9019\u4E00\u5929\u662F\u5DE5\u4F5C\u65E5,1 \u8868\u793A\u9019\u4E00\u5929\u70BA\u9031\u672B\u3002\u4F8B\u5982,"0000011"\u8868\u793A\u5C07\u9031\u516D\u548C\u5468\u65E5\u4F5C\u70BA\u9031\u672B\u3002\n\u6578\u4F4D\u7BA1\u9053:\u9019\u7A2E\u7BA1\u9053\u4E0D\u4F7F\u7528\u4E0A\u8FF0\u5B57\u4E32\u5F62\u5F0F,\u800C\u662F\u4F7F\u7528\u4E00\u500B\u6578\u4F4D\u30021 =\u9031\u516D/\u5468\u65E5\u70BA\u9031\u672B,2 =\u5468\u65E5/\u9031\u4E00\u70BA\u9031\u672B,\u4F9D\u6B64\u985E\u63A8\u52477 =\u9031\u4E94/\u9031\u516D\u300211 =\u5468\u65E5\u70BA\u552F\u4E00\u9031\u672B,12 =\u9031\u4E00\u70BA\u552F\u4E00\u9031\u672B,\u4F9D\u6B64\u985E\u63A8\u524717 =\u9031\u516D\u70BA\u552F\u4E00\u9031\u672B\u3002'
  23655. },
  23656. {
  23657. "name": "holidays",
  23658. "detail": "[\u53EF\u9078] - \u9019\u662F\u4E00\u500B\u7BC4\u570D\u6216\u6578\u7D44\u5E38\u6578,\u5176\u4E2D\u5305\u542B\u4F5C\u70BA\u7BC0\u5047\u65E5\u7684\u65E5\u671F\u3002\n\u5728\u7BC0\u5047\u65E5\u6578\u7D44\u5167\u63D0\u4F9B\u7684\u503C\u5FC5\u9808\u70BA\u65E5\u671F\u5E8F\u6578\u503C\uFF08\u4F8B\u5982N\u7684\u8FD4\u56DE\u503C\uFF09\u6216\u65E5\u671F\u503C\uFF08\u4F8B\u5982DATE\u3001DATEVALUE\u6216TO_DATE\u7684\u8FD4\u56DE\u503C\uFF09\u3002\u7531\u7BC4\u570D\u6307\u5B9A\u7684\u503C\u61C9\u8A72\u662F\u6A19\u6E96\u7684\u65E5\u671F\u503C\u6216\u65E5\u671F\u5E8F\u6578\u503C\u3002"
  23659. }
  23660. ]
  23661. },
  23662. "ISOWEEKNUM": {
  23663. "d": "\u8FD4\u56DE\u7D66\u5B9A\u65E5\u671F\u5728\u5168\u5E74\u4E2D\u7684 ISO \u5468\u6578\u3002",
  23664. "a": "\u8FD4\u56DE\u7D66\u5B9A\u65E5\u671F\u5728\u5168\u5E74\u4E2D\u7684 ISO \u5468\u6578\u3002",
  23665. "p": [
  23666. {
  23667. "name": "date",
  23668. "detail": "\u7528\u65BC\u65E5\u671F\u548C\u6642\u9593\u8A08\u7B97\u7684\u65E5\u671F-\u6642\u9593\u7A0B\u5F0F\u78BC\u3002"
  23669. }
  23670. ]
  23671. },
  23672. "WEEKNUM": {
  23673. "d": "\u8FD4\u56DE\u7279\u5B9A\u65E5\u671F\u7684\u5468\u6578\u3002",
  23674. "a": "\u8FD4\u56DE\u7279\u5B9A\u65E5\u671F\u7684\u5468\u6578\u3002",
  23675. "p": [
  23676. {
  23677. "name": "serial_number",
  23678. "detail": "\u8981\u78BA\u5B9A\u5176\u4F4D\u65BC\u7B2C\u5E7E\u5468\u7684\u65E5\u671F,\u5FC5\u9808\u662F\u5C0D\u5305\u542B\u65E5\u671F\u7684\u5132\u5B58\u683C\u7684\u5F15\u7528\u3001\u8FD4\u56DE\u65E5\u671F\u985E\u578B\u7684\u51FD\u6578\u6216\u8005\u6578\u4F4D\u3002"
  23679. },
  23680. {
  23681. "name": "return_type",
  23682. "detail": "[\u53EF\u9078-\u9810\u8A2D\u503C\u70BA1 ] - \u4EE3\u8868\u4E00\u5468\u8D77\u59CB\u65E5\u7684\u6578\u4F4D,\u7CFB\u7D71\u4E5F\u4F7F\u7528\u8A72\u6578\u4F4D\u4F86\u78BA\u5B9A\u4E00\u5E74\u7684\u7B2C\u4E00\u5468\uFF081=\u5468\u65E5,2=\u9031\u4E00\uFF09\u3002"
  23683. }
  23684. ]
  23685. },
  23686. "WEEKDAY": {
  23687. "d": "\u8FD4\u56DE\u4E00\u500B\u6578\u4F4D,\u5C0D\u61C9\u65BC\u7D66\u5B9A\u65E5\u671F\u6240\u5728\u7684\u661F\u671F\u5E7E\u3002",
  23688. "a": "\u8FD4\u56DE\u4E00\u500B\u6578\u4F4D,\u5C0D\u61C9\u65BC\u7D66\u5B9A\u65E5\u671F\u6240\u5728\u7684\u661F\u671F\u5E7E\u3002",
  23689. "p": [
  23690. {
  23691. "name": "serial_number",
  23692. "detail": "\u8981\u70BA\u5176\u78BA\u5B9A\u661F\u671F\u5E7E\u7684\u65E5\u671F\u3002\u5FC5\u9808\u662F\u5C0D\u5305\u542B\u65E5\u671F\u7684\u5132\u5B58\u683C\u7684\u5F15\u7528\u3001\u8FD4\u56DE\u65E5\u671F\u985E\u578B\u7684\u51FD\u6578\u6216\u8005\u6578\u4F4D\u3002"
  23693. },
  23694. {
  23695. "name": "return_type",
  23696. "detail": "[\u53EF\u9078-\u9810\u8A2D\u503C\u70BA1] -\u4EE5\u6578\u4F4D\u8A13\u793A\u4F7F\u7528\u54EA\u7A2E\u7DE8\u865F\u9806\u5E8F\u4F86\u8868\u793A\u661F\u671F\u5E7E\u3002\u9ED8\u8A8D\u60C5\u51B5\u4E0B,\u6309\u661F\u671F\u65E5\uFF08= 1\uFF09\u958B\u59CB\u8A08\u7B97\u3002\n\n\u5982\u679C\u985E\u578B\u70BA1,\u5247\u661F\u671F\u503C\u5C07\u5F9E\u661F\u671F\u65E5\u958B\u59CB\u7B97\u8D77,\u4E26\u4E14\u661F\u671F\u65E5\u7684\u503C\u70BA1,\u56D9\u6B64\u661F\u671F\u516D\u7684\u503C\u5C31\u662F7\u3002\n\n\u5982\u679C\u985E\u578B\u70BA2,\u5247\u661F\u671F\u503C\u5C07\u5F9E\u661F\u671F\u4E00\u958B\u59CB\u7B97\u8D77,\u4E26\u4E14\u661F\u671F\u4E00\u7684\u503C\u70BA1,\u56D9\u6B64\u661F\u671F\u65E5\u7684\u503C\u5C31\u662F7\u3002\n\n\u5982\u679C\u985E\u578B\u70BA3,\u5247\u661F\u671F\u503C\u5C07\u5F9E\u661F\u671F\u4E00\u7B97\u8D77,\u4E26\u4E14\u661F\u671F\u4E00\u7684\u503C\u70BA0,\u56D9\u6B64\u661F\u671F\u65E5\u7684\u503C\u5C31\u662F6\u3002"
  23697. }
  23698. ]
  23699. },
  23700. "DAY": {
  23701. "d": "\u4EE5\u6578\u4F4D\u683C\u5F0F\u8FD4\u56DE\u7279\u5B9A\u65E5\u671F\u6240\u5728\u7684\u7576\u6708\u5E7E\u865F\u3002",
  23702. "a": "\u4EE5\u6578\u4F4D\u683C\u5F0F\u8FD4\u56DE\u7279\u5B9A\u65E5\u671F\u6240\u5728\u7684\u7576\u6708\u5E7E\u865F\u3002",
  23703. "p": [
  23704. {
  23705. "name": "serial_number",
  23706. "detail": "\u8981\u5F9E\u4E2D\u9078\u53D6\u5177\u9AD4\u5E7E\u865F\u7684\u65E5\u671F\u3002\u5FC5\u9808\u662F\u4EE5\u4E0B\u4E00\u7A2E:\u5C0D\u5305\u542B\u65E5\u671F\u7684\u5132\u5B58\u683C\u7684\u5F15\u7528\u3001\u8FD4\u56DE\u65E5\u671F\u985E\u578B\u7684\u51FD\u6578\u6216\u8005\u6578\u4F4D\u3002"
  23707. }
  23708. ]
  23709. },
  23710. "DAYS": {
  23711. "d": "\u8FD4\u56DE\u5169\u500B\u65E5\u671F\u4E4B\u9593\u7684\u5929\u6578\u3002",
  23712. "a": "\u8FD4\u56DE\u5169\u500B\u65E5\u671F\u4E4B\u9593\u7684\u5929\u6578\u3002",
  23713. "p": [
  23714. {
  23715. "name": "end_date",
  23716. "detail": "\u8A08\u7B97\u4E2D\u8981\u4F7F\u7528\u7684\u7D50\u675F\u65E5\u671F\u3002\u5FC5\u9808\u662F\u4EE5\u4E0B\u4E00\u7A2E:\u5C0D\u5305\u542B\u65E5\u671F\u7684\u5132\u5B58\u683C\u7684\u5F15\u7528\u3001\u8FD4\u56DE\u65E5\u671F\u985E\u578B\u7684\u51FD\u6578\u6216\u8005\u6578\u4F4D\u3002"
  23717. },
  23718. {
  23719. "name": "start_date",
  23720. "detail": "\u8A08\u7B97\u4E2D\u8981\u4F7F\u7528\u7684\u958B\u59CB\u65E5\u671F\u3002\u5FC5\u9808\u662F\u4EE5\u4E0B\u4E00\u7A2E:\u5C0D\u5305\u542B\u65E5\u671F\u7684\u5132\u5B58\u683C\u7684\u5F15\u7528\u3001\u8FD4\u56DE\u65E5\u671F\u985E\u578B\u7684\u51FD\u6578\u6216\u8005\u6578\u4F4D\u3002"
  23721. }
  23722. ]
  23723. },
  23724. "DAYS360": {
  23725. "d": "\u6309\u7167\u6BCF\u5E74360\u5929,\u8FD4\u56DE\u5169\u500B\u65E5\u671F\u4E4B\u9593\u7684\u5DEE\uFF08\u7528\u65BC\u8A08\u7B97\u5229\u606F\uFF09\u3002",
  23726. "a": "\u6309\u7167\u6BCF\u5E74360\u5929,\u8FD4\u56DE\u5169\u500B\u65E5\u671F\u4E4B\u9593\u7684\u5DEE\uFF08\u7528\u65BC\u8A08\u7B97\u5229\u606F\uFF09\u3002",
  23727. "p": [
  23728. {
  23729. "name": "start_date",
  23730. "detail": "\u8A08\u7B97\u4E2D\u8981\u4F7F\u7528\u7684\u958B\u59CB\u65E5\u671F\u3002\u5FC5\u9808\u662F\u4EE5\u4E0B\u4E00\u7A2E:\u5C0D\u5305\u542B\u65E5\u671F\u7684\u5132\u5B58\u683C\u7684\u5F15\u7528\u3001\u8FD4\u56DE\u65E5\u671F\u985E\u578B\u7684\u51FD\u6578\u6216\u8005\u6578\u4F4D\u3002"
  23731. },
  23732. {
  23733. "name": "end_date",
  23734. "detail": "\u8A08\u7B97\u4E2D\u8981\u4F7F\u7528\u7684\u7D50\u675F\u65E5\u671F\u3002\u5FC5\u9808\u662F\u4EE5\u4E0B\u4E00\u7A2E:\u5C0D\u5305\u542B\u65E5\u671F\u7684\u5132\u5B58\u683C\u7684\u5F15\u7528\u3001\u8FD4\u56DE\u65E5\u671F\u985E\u578B\u7684\u51FD\u6578\u6216\u8005\u6578\u4F4D\u3002"
  23735. },
  23736. {
  23737. "name": "method",
  23738. "detail": "[\u53EF\u9078 - \u9ED8\u8A8D\u70BAFALSE\uFF08\uFF09] - \u8A13\u793A\u8981\u4F7F\u7528\u54EA\u7A2E\u5929\u6578\u8A08\u7B97\u65B9\u6CD5\u3002\n\nFALSE -\u63A1\u7528\u7F8E\u570B\uFF08NASD\uFF09\u65B9\u6CD5\u6642,\u5982\u679C\u8D77\u59CB\u65E5\u671F\u70BA\u67D0\u6708\u7684\u6700\u5F8C\u4E00\u5929,\u70BA\u4FBF\u65BC\u8A08\u7B97,\u6703\u5C07\u8D77\u59CB\u65E5\u671F\u7684\u7576\u6708\u5E7E\u865F\u66F4\u6539\u70BA30\u3002\u6B64\u5916,\u5982\u679C\u7D50\u675F\u65E5\u671F\u662F\u6240\u5728\u6708\u4EFD\u7684\u6700\u5F8C\u4E00\u5929,\u800C\u4E14\u8D77\u59CB\u65E5\u671F\u5728\u5176\u6240\u5728\u6708\u768430\u865F\u4E4B\u524D,\u5247\u5C07\u7D50\u675F\u65E5\u671F\u66F4\u6539\u70BA\u7D50\u675F\u65E5\u671F\u4E4B\u5F8C\u90A3\u500B\u6708\u7684\u7B2C\u4E00\u5929,\u5426\u5247\u5C07\u7D50\u675F\u65E5\u671F\u66F4\u6539\u70BA\u8A72\u6708\u768430\u865F\u3002\n\nTRUE -\u63A1\u7528\u6B50\u6D32\u65B9\u6CD5\u6642,\u6703\u5C07\u6240\u6709\u65E5\u671F\u572831\u865F\u7684\u8D77\u59CB\u65E5\u671F\u6216\u7D50\u675F\u65E5\u671F\u66F4\u6539\u70BA\u7576\u6708\u768430\u865F\u3002"
  23739. }
  23740. ]
  23741. },
  23742. "DATE": {
  23743. "d": "\u5C07\u63D0\u4F9B\u7684\u5E74\u3001\u6708\u3001\u65E5\u8F49\u63DB\u70BA\u65E5\u671F\u3002",
  23744. "a": "\u5C07\u63D0\u4F9B\u7684\u5E74\u3001\u6708\u3001\u65E5\u8F49\u63DB\u70BA\u65E5\u671F\u3002",
  23745. "p": [
  23746. {
  23747. "name": "year",
  23748. "detail": "\u65E5\u671F\u7684\u5E74\u4EFD\u90E8\u5206,\u5305\u542B\u4E00\u5230\u56DB\u4F4D\u6578\u4F4D\u3002\n\n\u4ECB\u65BC0\uFF08\u96F6\uFF09\u5230 1899 \u4E4B\u9593,\u6703\u5C07\u8A72\u503C\u8207 1900 \u76F8\u52A0\u4F86\u8A08\u7B97\u5E74\u4EFD\uFF1B\n\n\u4ECB\u65BC 1900 \u5230 9999 \u4E4B\u9593,\u5C07\u4F7F\u7528\u8A72\u6578\u503C\u4F5C\u70BA\u5E74\u4EFD\uFF1B\n\n\u5C0F\u65BC0\u6216\u5927\u65BC\u7B49\u65BC 10000,\u8FD4\u56DE\u932F\u8AA4\u503C#NUM\uFF01\u3002"
  23749. },
  23750. {
  23751. "name": "month",
  23752. "detail": "\u65E5\u671F\u7684\u6708\u4EFD\u90E8\u5206,\u4E00\u500B\u6B63\u6574\u6578\u6216\u8CA0\u6574\u6578\u3002\n\n\u5982\u679C month \u5927\u65BC 12,\u5247 month \u6703\u5C07\u8A72\u6708\u4EFD\u6578\u8207\u6307\u5B9A\u5E74\u4E2D\u7684\u7B2C\u4E00\u500B\u6708\u76F8\u52A0\u3002\n\n\u5982\u679C month \u5C0F\u65BC 1,month \u5247\u5F9E\u6307\u5B9A\u5E74\u4EFD\u7684\u4E00\u6708\u4EFD\u958B\u59CB\u905E\u6E1B\u8A72\u6708\u4EFD\u6578,\u7136\u5F8C\u518D\u52A0\u4E0A 1 \u500B\u6708\u3002"
  23753. },
  23754. {
  23755. "name": "day",
  23756. "detail": "\u65E5\u671F\u7684\u65E5\u90E8\u5206,\u4E00\u500B\u6B63\u6574\u6578\u6216\u8CA0\u6574\u6578\u3002\n\n\u5982\u679C day \u5927\u65BC\u6708\u4E2D\u6307\u5B9A\u7684\u5929\u6578,\u5247 day \u6703\u5C07\u5929\u6578\u8207\u8A72\u6708\u4E2D\u7684\u7B2C\u4E00\u5929\u76F8\u52A0\u3002\n\n\u5982\u679C day \u5C0F\u65BC1,\u5247 day \u5F9E\u6307\u5B9A\u6708\u4EFD\u7684\u7B2C\u4E00\u5929\u958B\u59CB\u905E\u6E1B\u8A72\u5929\u6578,\u7136\u5F8C\u518D\u52A0\u4E0A 1 \u5929\u3002"
  23757. }
  23758. ]
  23759. },
  23760. "DATEVALUE": {
  23761. "d": "\u5C07\u63D0\u4F9B\u7684\u65E5\u671F\u5B57\u4E32\u8F49\u63DB\u70BA\u65E5\u671F\u7684\u5E8F\u865F\u3002",
  23762. "a": "\u5C07\u63D0\u4F9B\u7684\u65E5\u671F\u5B57\u4E32\u8F49\u63DB\u70BA\u65E5\u671F\u7684\u5E8F\u865F\u3002",
  23763. "p": [
  23764. {
  23765. "name": "date_text",
  23766. "detail": "\u8868\u793A\u65E5\u671F\u7684\u5B57\u4E32\u3002"
  23767. }
  23768. ]
  23769. },
  23770. "DATEDIF": {
  23771. "d": "\u8A08\u7B97\u5169\u500B\u65E5\u671F\u4E4B\u9593\u7684\u5929\u6578\u3001\u6708\u6578\u6216\u5E74\u6578\u3002",
  23772. "a": "\u8A08\u7B97\u5169\u500B\u65E5\u671F\u4E4B\u9593\u7684\u5929\u6578\u3001\u6708\u6578\u6216\u5E74\u6578\u3002",
  23773. "p": [
  23774. {
  23775. "name": "\u8D77\u59CB\u65E5\u671F",
  23776. "detail": "\u8A08\u7B97\u4E2D\u8981\u4F7F\u7528\u7684\u958B\u59CB\u65E5\u671F\u3002\u5FC5\u9808\u662F\u5C0D\u5305\u542BDATE\u503C\u7684\u5132\u5B58\u683C\u7684\u5F15\u7528\u3001\u8FD4\u56DEDATE\u985E\u578B\u7684\u51FD\u6578\u6216\u6578\u4F4D\u3002"
  23777. },
  23778. {
  23779. "name": "\u7D50\u675F\u65E5\u671F",
  23780. "detail": "\u8A08\u7B97\u4E2D\u8981\u4F7F\u7528\u7684\u7D50\u675F\u65E5\u671F\u3002\u5FC5\u9808\u662F\u5C0D\u5305\u542BDATE\u503C\u7684\u5132\u5B58\u683C\u7684\u5F15\u7528\u3001\u8FD4\u56DEDATE\u985E\u578B\u7684\u51FD\u6578\u6216\u6578\u4F4D\u3002"
  23781. },
  23782. {
  23783. "name": "\u7D44\u7E54",
  23784. "detail": '\u6642\u9593\u7D44\u7E54\u7684\u7E2E\u5BEB\u6587\u5B57\u3002\u4F8B\u5982"M"\u4EE3\u8868\u6708\u3002\u6709\u6548\u503C\u5305\u62EC:"Y"\u3001"M"\u3001"D"\u3001"MD"\u3001"YM"\u548C"YD"\u3002\n\n"Y":\u8FD4\u56DE\u8D77\u59CB\u65E5\u671F\u548C\u7D50\u675F\u65E5\u671F\u4E4B\u9593\u7684\u6574\u5E74\u6578\u3002\n\n"M":\u8FD4\u56DE\u8D77\u59CB\u65E5\u671F\u548C\u7D50\u675F\u65E5\u671F\u4E4B\u9593\u7684\u6574\u6708\u6578\u3002\n\n"D":\u8FD4\u56DE\u8D77\u59CB\u65E5\u671F\u548C\u7D50\u675F\u65E5\u671F\u4E4B\u9593\u7684\u5929\u6578\u3002\n\n"MD":\u8FD4\u56DE\u8D77\u59CB\u65E5\u671F\u548C\u7D50\u675F\u65E5\u671F\u4E4B\u9593\u7684\u5929\u6578\uFF08\u4E0D\u8A08\u6574\u6708\u6578\uFF09\u3002\n\n"YM":\u8FD4\u56DE\u8D77\u59CB\u65E5\u671F\u548C\u7D50\u675F\u65E5\u671F\u4E4B\u9593\u7684\u6574\u6708\u6578\uFF08\u4E0D\u8A08\u6574\u5E74\u6578\uFF09\u3002\n\n"YD":\u8FD4\u56DE\u8D77\u59CB\u65E5\u671F\u548C\u7D50\u675F\u65E5\u671F\u4E4B\u9593\u7684\u5929\u6578\uFF08\u5047\u8A2D\u8D77\u59CB\u65E5\u671F\u548C\u7D50\u675F\u65E5\u671F\u7684\u9593\u9694\u4E0D\u8D85\u904E\u4E00\u5E74\uFF09\u3002'
  23785. }
  23786. ]
  23787. },
  23788. "WORKDAY": {
  23789. "d": "\u6307\u5B9A\u5DE5\u4F5C\u65E5\u5929\u6578,\u8A08\u7B97\u7D50\u675F\u65E5\u671F\u3002",
  23790. "a": "\u6307\u5B9A\u5DE5\u4F5C\u65E5\u5929\u6578,\u8A08\u7B97\u7D50\u675F\u65E5\u671F\u3002",
  23791. "p": [
  23792. {
  23793. "name": "start_date",
  23794. "detail": "\u8A08\u7B97\u7684\u958B\u59CB\u65E5\u671F\u3002"
  23795. },
  23796. {
  23797. "name": "days",
  23798. "detail": "start_date\u4E4B\u524D\u6216\u4E4B\u5F8C\u4E0D\u542B\u9031\u672B\u53CA\u7BC0\u5047\u65E5\u7684\u5929\u6578\u3002\n\n\u70BA\u6B63\u503C\u5C07\u751F\u6210\u672A\u4F86\u65E5\u671F\uFF1B\n\n\u70BA\u8CA0\u503C\u751F\u6210\u904E\u53BB\u65E5\u671F\u3002"
  23799. },
  23800. {
  23801. "name": "holidays",
  23802. "detail": "[\u53EF\u9078] - \u4E00\u500B\u7BC4\u570D\u6216\u6578\u7D44\u5E38\u6578,\u5176\u4E2D\u5305\u542B\u4F5C\u70BA\u7BC0\u5047\u65E5\u7684\u65E5\u671F\u5E8F\u865F\u3002\n\n\u5728\u7BC0\u5047\u65E5\u6578\u7D44\u4E2D\u63D0\u4F9B\u7684\u503C\u5FC5\u9808\u662F\u65E5\u671F\u5E8F\u865F\u503C\uFF08\u4F8B\u5982\u7531N\u6240\u8FD4\u56DE\u7684\u503C\uFF09\u6216\u65E5\u671F\u503C\uFF08\u4F8B\u5982\u7531DATE\u3001DATEVALUE\u6216TO_DATE\u8FD4\u56DE\u7684\u503C\uFF09\u3002\u7531\u7BC4\u570D\u6307\u5B9A\u7684\u503C\u61C9\u8A72\u662F\u6A19\u6E96\u7684\u65E5\u671F\u503C\u6216\u65E5\u671F\u5E8F\u6578\u503C\u3002"
  23803. }
  23804. ]
  23805. },
  23806. "WORKDAY_INTL": {
  23807. "d": "\u8FD4\u56DE\u6307\u5B9A\u7684\u82E5\u5E72\u500B\u5DE5\u4F5C\u65E5\u4E4B\u524D\u6216\u4E4B\u5F8C\u7684\u65E5\u671F\u7684\u5E8F\u865F\uFF08\u4F7F\u7528\u81EA\u5B9A\u7FA9\u9031\u672B\u53C3\u6578\uFF09\u3002 ",
  23808. "a": "\u8FD4\u56DE\u6307\u5B9A\u7684\u82E5\u5E72\u500B\u5DE5\u4F5C\u65E5\u4E4B\u524D\u6216\u4E4B\u5F8C\u7684\u65E5\u671F\u7684\u5E8F\u865F\uFF08\u4F7F\u7528\u81EA\u5B9A\u7FA9\u9031\u672B\u53C3\u6578\uFF09\u3002 ",
  23809. "p": [
  23810. {
  23811. "name": "start_date",
  23812. "detail": "\u958B\u59CB\u65E5\u671F\uFF08\u5C07\u88AB\u622A\u5C3E\u53D6\u6574\uFF09\u3002"
  23813. },
  23814. {
  23815. "name": "days",
  23816. "detail": "start_date\u4E4B\u524D\u6216\u4E4B\u5F8C\u7684\u5DE5\u4F5C\u65E5\u7684\u5929\u6578\u3002\n\n\u6B63\u503C\u8868\u793A\u672A\u4F86\u65E5\u671F\uFF1B\n\n\u8CA0\u503C\u8868\u793A\u904E\u53BB\u65E5\u671F\uFF1B\n\n\u96F6\u503C\u8868\u793A\u958B\u59CB\u65E5\u671F\u3002"
  23817. },
  23818. {
  23819. "name": "weekend",
  23820. "detail": '[\u53EF\u9078 - \u9810\u8A2D\u503C\u70BA1] - \u7528\u65BC\u8868\u793A\u54EA\u4E9B\u5929\u70BA\u9031\u672B\u7684\u6578\u4F4D\u6216\u5B57\u4E32\u3002\n\u5B57\u4E32\u7BA1\u9053:\u53EF\u4EE5\u4F7F\u7528\u75310\u548C1\u7D44\u6210\u7684\u5B57\u4E32\u4F86\u6307\u5B9A\u9031\u672B,\u4E32\u4E2D\u7684\u7B2C\u4E00\u500B\u6578\u4F4D\u5B57\u5143\u4EE3\u8868\u9031\u4E00,\u6700\u5F8C\u4E00\u500B\u5247\u4EE3\u8868\u5468\u65E5\u3002\u96F6\u8868\u793A\u9019\u4E00\u5929\u662F\u5DE5\u4F5C\u65E5,1\u8868\u793A\u9019\u4E00\u5929\u70BA\u9031\u672B\u3002\u4F8B\u5982,"0000011"\u8868\u793A\u5C07\u9031\u516D\u548C\u5468\u65E5\u4F5C\u70BA\u9031\u672B\u3002\n\u6578\u4F4D\u7BA1\u9053:\u9019\u7A2E\u7BA1\u9053\u4E0D\u4F7F\u7528\u4E0A\u8FF0\u5B57\u4E32\u5F62\u5F0F,\u800C\u662F\u4F7F\u7528\u4E00\u500B\u6578\u4F4D\u30021 =\u9031\u516D/\u5468\u65E5\u70BA\u9031\u672B,2 =\u5468\u65E5/\u9031\u4E00\u70BA\u9031\u672B,\u4F9D\u6B64\u985E\u63A8\u52477 =\u9031\u4E94/\u9031\u516D\u300211 =\u5468\u65E5\u70BA\u552F\u4E00\u9031\u672B,12 =\u9031\u4E00\u70BA\u552F\u4E00\u9031\u672B,\u4F9D\u6B64\u985E\u63A8\u524717 =\u9031\u516D\u70BA\u552F\u4E00\u9031\u672B\u3002'
  23821. },
  23822. {
  23823. "name": "holidays",
  23824. "detail": "[\u53EF\u9078] - \u9019\u662F\u4E00\u500B\u7BC4\u570D\u6216\u6578\u7D44\u5E38\u6578,\u5176\u4E2D\u5305\u542B\u4F5C\u70BA\u7BC0\u5047\u65E5\u7684\u65E5\u671F\u3002\n\u5728\u7BC0\u5047\u65E5\u6578\u7D44\u5167\u63D0\u4F9B\u7684\u503C\u5FC5\u9808\u70BA\u65E5\u671F\u5E8F\u6578\u503C\uFF08\u4F8B\u5982N\u7684\u8FD4\u56DE\u503C\uFF09\u6216\u65E5\u671F\u503C\uFF08\u4F8B\u5982DATE\u3001DATEVALUE\u6216TO_DATE\u7684\u8FD4\u56DE\u503C\uFF09\u3002\u7531\u7BC4\u570D\u6307\u5B9A\u7684\u503C\u61C9\u8A72\u662F\u6A19\u6E96\u7684\u65E5\u671F\u503C\u6216\u65E5\u671F\u5E8F\u6578\u503C\u3002"
  23825. }
  23826. ]
  23827. },
  23828. "YEAR": {
  23829. "d": "\u8FD4\u56DE\u5C0D\u61C9\u65BC\u67D0\u500B\u65E5\u671F\u7684\u5E74\u4EFD\u3002Year\u4F5C\u70BA 1900 - 9999 \u4E4B\u9593\u7684\u6574\u6578\u8FD4\u56DE\u3002",
  23830. "a": "\u8FD4\u56DE\u5C0D\u61C9\u65BC\u67D0\u500B\u65E5\u671F\u7684\u5E74\u4EFD\u3002Year\u4F5C\u70BA 1900 - 9999 \u4E4B\u9593\u7684\u6574\u6578\u8FD4\u56DE\u3002",
  23831. "p": [
  23832. {
  23833. "name": "serial_number",
  23834. "detail": "\u7528\u65BC\u8A08\u7B97\u5E74\u4EFD\u7684\u65E5\u671F\u3002\u5FC5\u9808\u662F\u4EE5\u4E0B\u4E00\u7A2E:\u5C0D\u5305\u542B\u65E5\u671F\u7684\u5132\u5B58\u683C\u7684\u5F15\u7528\u3001\u8FD4\u56DE\u65E5\u671F\u985E\u578B\u7684\u51FD\u6578\u6216\u8005\u6578\u4F4D\u3002"
  23835. }
  23836. ]
  23837. },
  23838. "YEARFRAC": {
  23839. "d": "\u8FD4\u56DE start_date \u548C end_date \u4E4B\u9593\u7684\u5929\u6578\u5360\u5168\u5E74\u5929\u6578\u7684\u767E\u5206\u6BD4\u3002",
  23840. "a": "\u8FD4\u56DE start_date \u548C end_date \u4E4B\u9593\u7684\u5929\u6578\u5360\u5168\u5E74\u5929\u6578\u7684\u767E\u5206\u6BD4\u3002",
  23841. "p": [
  23842. {
  23843. "name": "start_date",
  23844. "detail": "\u8A08\u7B97\u4E2D\u8981\u4F7F\u7528\u7684\u958B\u59CB\u65E5\u671F\u3002\u5FC5\u9808\u662F\u4EE5\u4E0B\u4E00\u7A2E:\u5C0D\u5305\u542B\u65E5\u671F\u7684\u5132\u5B58\u683C\u7684\u5F15\u7528\u3001\u8FD4\u56DE\u65E5\u671F\u985E\u578B\u7684\u51FD\u6578\u6216\u8005\u6578\u4F4D\u3002"
  23845. },
  23846. {
  23847. "name": "end_date",
  23848. "detail": "\u8A08\u7B97\u4E2D\u8981\u4F7F\u7528\u7684\u7D50\u675F\u65E5\u671F\u3002\u5FC5\u9808\u662F\u4EE5\u4E0B\u4E00\u7A2E:\u5C0D\u5305\u542B\u65E5\u671F\u7684\u5132\u5B58\u683C\u7684\u5F15\u7528\u3001\u8FD4\u56DE\u65E5\u671F\u985E\u578B\u7684\u51FD\u6578\u6216\u8005\u6578\u4F4D\u3002"
  23849. },
  23850. {
  23851. "name": "basis",
  23852. "detail": '[\u53EF\u9078 - \u9ED8\u8A8D\u70BA0] - \u8981\u4F7F\u7528\u7684\u65E5\u8A08\u6578\u57FA\u6E96\u985E\u578B\u3002\n\n0\u8868\u793A"\u7F8E\u570B\uFF08NASD\uFF0930/360"\u65B9\u6CD5-\u6B64\u65B9\u6CD5\u6309\u7167\u7F8E\u570B\u5168\u570B\u8B49\u5238\u4EA4\u6613\u5546\u5354\u6703\u6A19\u6E96,\u5047\u8A2D\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929,\u4E26\u5C0D\u6240\u8F38\u5165\u7684\u6708\u672B\u65E5\u671F\u9032\u884C\u5177\u9AD4\u8ABF\u6574\u3002\n\n1\u8868\u793A"\u5BE6\u969B/\u5BE6\u969B"\u65B9\u6CD5-\u6B64\u65B9\u6CD5\u8A08\u7B97\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u548C\u6240\u6D89\u53CA\u7684\u5E74\u4EFD\u4E2D\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97\u3002\u6B64\u65B9\u6CD5\u7528\u65BC\u7F8E\u570B\u9577\u671F\u50B5\u5238,\u4E5F\u662F\u5728\u975E\u8CA1\u7D93\u7528\u9014\u65B9\u9762\u4F7F\u7528\u6700\u591A\u7684\u65B9\u6CD5\u3002\n\n2\u8868\u793A"\u5BE6\u969B/360"\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97, \u4F46\u5047\u5B9A\u6BCF\u5E74\u70BA360\u5929\u3002\n\n3\u8868\u793A"\u5BE6\u969B/365"\u65B9\u6CD5-\u6B64\u65B9\u6CD5\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97,\u4F46\u5047\u5B9A\u6BCF\u5E74\u70BA365\u5929\u3002\n\n4\u8868\u793A"\u6B50\u6D3230 / 360"\u65B9\u6CD5-\u985E\u4F3C\u65BC0,\u6B64\u65B9\u6CD5\u57FA\u65BC\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\u9032\u884C\u8A08\u7B97,\u4F46\u6309\u7167\u6B50\u6D32\u91D1\u878D\u6163\u4F8B\u5C0D\u6708\u672B\u65E5\u671F\u9032\u884C\u8ABF\u6574\u3002'
  23853. }
  23854. ]
  23855. },
  23856. "TODAY": {
  23857. "d": "\u4EE5\u65E5\u671F\u503C\u683C\u5F0F\u8FD4\u56DE\u7576\u524D\u65E5\u671F\u3002",
  23858. "a": "\u4EE5\u65E5\u671F\u503C\u683C\u5F0F\u8FD4\u56DE\u7576\u524D\u65E5\u671F\u3002",
  23859. "p": []
  23860. },
  23861. "MONTH": {
  23862. "d": "\u8FD4\u56DE\u65E5\u671F\uFF08\u4EE5\u5E8F\u5217\u6578\u8868\u793A\uFF09\u4E2D\u7684\u6708\u4EFD\u3002\u6708\u4EFD\u662F\u4ECB\u65BC1\uFF08\u4E00\u6708\uFF09\u523012\uFF08\u5341\u4E8C\u6708\uFF09\u4E4B\u9593\u7684\u6574\u6578\u3002",
  23863. "a": "\u8FD4\u56DE\u65E5\u671F\uFF08\u4EE5\u5E8F\u5217\u6578\u8868\u793A\uFF09\u4E2D\u7684\u6708\u4EFD\u3002\u6708\u4EFD\u662F\u4ECB\u65BC1\uFF08\u4E00\u6708\uFF09\u523012\uFF08\u5341\u4E8C\u6708\uFF09\u4E4B\u9593\u7684\u6574\u6578\u3002",
  23864. "p": [
  23865. {
  23866. "name": "serial_number",
  23867. "detail": "\u8981\u5F9E\u4E2D\u9078\u53D6\u6708\u4EFD\u7684\u65E5\u671F\u3002\u5FC5\u9808\u662F\u4EE5\u4E0B\u4E00\u7A2E:\u5C0D\u5305\u542B\u65E5\u671F\u7684\u5132\u5B58\u683C\u7684\u5F15\u7528\u3001\u8FD4\u56DE\u65E5\u671F\u985E\u578B\u7684\u51FD\u6578\u6216\u8005\u6578\u4F4D\u3002"
  23868. }
  23869. ]
  23870. },
  23871. "EFFECT": {
  23872. "d": "\u6839\u64DA\u540D\u7FA9\u5229\u7387\u53CA\u6BCF\u5E74\u7684\u8907\u5229\u8A08\u606F\u671F\u6578\u4F86\u8A08\u7B97\u5BE6\u969B\u5E74\u5229\u7387\u3002",
  23873. "a": "\u6839\u64DA\u540D\u7FA9\u5229\u7387\u53CA\u6BCF\u5E74\u7684\u8907\u5229\u8A08\u606F\u671F\u6578\u4F86\u8A08\u7B97\u5BE6\u969B\u5E74\u5229\u7387\u3002",
  23874. "p": [
  23875. {
  23876. "name": "nominal_rate",
  23877. "detail": "\u6BCF\u5E74\u7684\u540D\u7FA9\u5229\u7387\u3002"
  23878. },
  23879. {
  23880. "name": "npery",
  23881. "detail": "\u6BCF\u5E74\u7684\u8907\u5229\u8A08\u7B97\u671F\u6578\u3002"
  23882. }
  23883. ]
  23884. },
  23885. "DOLLAR": {
  23886. "d": "\u5C07\u6578\u4F4D\u683C\u5F0F\u8A2D\u5B9A\u70BA\u8207\u8A9E\u8A00\u5340\u57DF\u76F8\u5C0D\u61C9\u7684\u8CA8\u5E63\u683C\u5F0F\u3002",
  23887. "a": "\u5C07\u6578\u4F4D\u683C\u5F0F\u8A2D\u5B9A\u70BA\u8207\u8A9E\u8A00\u5340\u57DF\u76F8\u5C0D\u61C9\u7684\u8CA8\u5E63\u683C\u5F0F\u3002",
  23888. "p": [
  23889. {
  23890. "name": "number",
  23891. "detail": "\u8981\u8A2D\u5B9A\u683C\u5F0F\u7684\u503C\u3002"
  23892. },
  23893. {
  23894. "name": "decimals",
  23895. "detail": "[\u53EF\u9078 - \u9810\u8A2D\u503C\u70BA2] - \u8981\u986F\u793A\u7684\u5C0F\u6578\u4F4D\u6578\u3002\n\n\u5982\u679C\u9019\u662F\u8CA0\u6578,\u5247\u5C07\u6578\u4F4D\u56DB\u6368\u4E94\u5165\u5230\u5C0F\u6578\u9EDE\u5DE6\u5074\u3002"
  23896. }
  23897. ]
  23898. },
  23899. "DOLLARDE": {
  23900. "d": "\u5C07\u4EE5\u6574\u6578\u90E8\u5206\u548C\u5206\u6578\u90E8\u5206\u8F49\u63DB\u70BA\u4EE5\u5C0F\u6578\u90E8\u5206\u8868\u793A\u7684\u91D1\u984D\u6578\u4F4D",
  23901. "a": "\u5C07\u4EE5\u6574\u6578\u90E8\u5206\u548C\u5206\u6578\u90E8\u5206\u8F49\u63DB\u70BA\u4EE5\u5C0F\u6578\u90E8\u5206\u8868\u793A\u7684\u91D1\u984D\u6578\u4F4D",
  23902. "p": [
  23903. {
  23904. "name": "fractional_dollar",
  23905. "detail": "\u4EE5\u6574\u6578\u90E8\u4EFD\u548C\u5206\u6578\u90E8\u5206\u8868\u793A\u7684\u6578\u4F4D,\u7528\u5C0F\u6578\u9EDE\u9694\u958B\u3002"
  23906. },
  23907. {
  23908. "name": "fraction",
  23909. "detail": "\u7528\u4F5C\u5206\u6578\u4E2D\u7684\u5206\u6BCD\u7684\u6574\u6578\u3002"
  23910. }
  23911. ]
  23912. },
  23913. "DOLLARFR": {
  23914. "d": "\u5C07\u5C0F\u6578\u8F49\u63DB\u70BA\u5206\u6578\u8868\u793A\u7684\u91D1\u984D\u6578\u4F4D\u3002",
  23915. "a": "\u5C07\u5C0F\u6578\u8F49\u63DB\u70BA\u5206\u6578\u8868\u793A\u7684\u91D1\u984D\u6578\u4F4D\u3002",
  23916. "p": [
  23917. {
  23918. "name": "decimal_dollar",
  23919. "detail": "\u5C0F\u6578\u3002"
  23920. },
  23921. {
  23922. "name": "fraction",
  23923. "detail": "\u7528\u4F5C\u5206\u6578\u4E2D\u7684\u5206\u6BCD\u7684\u6574\u6578\u3002"
  23924. }
  23925. ]
  23926. },
  23927. "DB": {
  23928. "d": "\u4F7F\u7528\u56FA\u5B9A\u9918\u984D\u905E\u6E1B\u6CD5,\u8FD4\u56DE\u6307\u5B9A\u671F\u9593\u5167\u67D0\u9805\u56FA\u5B9A\u8CC7\u7522\u7684\u6298\u820A\u503C\u3002",
  23929. "a": "\u4F7F\u7528\u56FA\u5B9A\u9918\u984D\u905E\u6E1B\u6CD5,\u8FD4\u56DE\u6307\u5B9A\u671F\u9593\u5167\u67D0\u9805\u56FA\u5B9A\u8CC7\u7522\u7684\u6298\u820A\u503C\u3002",
  23930. "p": [
  23931. {
  23932. "name": "cost",
  23933. "detail": "\u8CC7\u7522\u539F\u503C\u3002"
  23934. },
  23935. {
  23936. "name": "salvage",
  23937. "detail": "\u6298\u820A\u672B\u5C3E\u6642\u7684\u503C\uFF08\u6709\u6642\u4E5F\u7A31\u70BA\u8CC7\u7522\u6B98\u503C\uFF09\u3002"
  23938. },
  23939. {
  23940. "name": "life",
  23941. "detail": "\u8CC7\u7522\u7684\u6298\u820A\u671F\u6578\uFF08\u6709\u6642\u4E5F\u7A31\u4F5C\u8CC7\u7522\u7684\u4F7F\u7528\u58FD\u547D\uFF09\u3002"
  23942. },
  23943. {
  23944. "name": "period",
  23945. "detail": "\u5728\u4F7F\u7528\u671F\u9650\u5167\u8981\u8A08\u7B97\u6298\u820A\u7684\u6298\u820A\u671F\u3002"
  23946. },
  23947. {
  23948. "name": "month",
  23949. "detail": "[\u53EF\u9078 - \u9810\u8A2D\u503C\u70BA12] - \u6298\u820A\u7B2C\u4E00\u5E74\u4E2D\u7684\u6708\u6578\u3002"
  23950. }
  23951. ]
  23952. },
  23953. "DDB": {
  23954. "d": "\u7528\u96D9\u500D\u9918\u984D\u905E\u6E1B\u6CD5,\u8FD4\u56DE\u6307\u5B9A\u671F\u9593\u5167\u67D0\u9805\u56FA\u5B9A\u8CC7\u7522\u7684\u6298\u820A\u503C\u3002",
  23955. "a": "\u7528\u96D9\u500D\u9918\u984D\u905E\u6E1B\u6CD5,\u8FD4\u56DE\u6307\u5B9A\u671F\u9593\u5167\u67D0\u9805\u56FA\u5B9A\u8CC7\u7522\u7684\u6298\u820A\u503C\u3002",
  23956. "p": [
  23957. {
  23958. "name": "cost",
  23959. "detail": "\u8D44\u4EA7\u539F\u503C\u3002"
  23960. },
  23961. {
  23962. "name": "salvage",
  23963. "detail": "\u6298\u820A\u672B\u5C3E\u6642\u7684\u503C\uFF08\u6709\u6642\u4E5F\u7A31\u70BA\u8CC7\u7522\u6B98\u503C\uFF09\u3002"
  23964. },
  23965. {
  23966. "name": "life",
  23967. "detail": "\u8CC7\u7522\u7684\u6298\u820A\u671F\u6578\uFF08\u6709\u6642\u4E5F\u7A31\u4F5C\u8CC7\u7522\u7684\u4F7F\u7528\u58FD\u547D\uFF09\u3002"
  23968. },
  23969. {
  23970. "name": "period",
  23971. "detail": "\u5728\u4F7F\u7528\u671F\u9650\u5167\u8981\u8A08\u7B97\u6298\u820A\u7684\u6298\u820A\u671F\u3002"
  23972. },
  23973. {
  23974. "name": "factor",
  23975. "detail": "[\u53EF\u9078 - \u9810\u8A2D\u503C\u70BA2] - \u6298\u820A\u7684\u905E\u6E1B\u4FC2\u6578\u3002"
  23976. }
  23977. ]
  23978. },
  23979. "RATE": {
  23980. "d": "\u8FD4\u56DE\u5E74\u91D1\u6BCF\u671F\u7684\u5229\u7387\u3002",
  23981. "a": "\u8FD4\u56DE\u5E74\u91D1\u6BCF\u671F\u7684\u5229\u7387\u3002",
  23982. "p": [
  23983. {
  23984. "name": "nper",
  23985. "detail": "\u5E74\u91D1\u7684\u4ED8\u6B3E\u7E3D\u671F\u6578\u3002"
  23986. },
  23987. {
  23988. "name": "pmt",
  23989. "detail": "\u6BCF\u671F\u7684\u4ED8\u6B3E\u91D1\u984D,\u5728\u5E74\u91D1\u9031\u671F\u5167\u4E0D\u80FD\u66F4\u6539\u3002"
  23990. },
  23991. {
  23992. "name": "pv",
  23993. "detail": "\u73FE\u503C\u5373\u4E00\u7CFB\u5217\u672A\u4F86\u4ED8\u6B3E\u7576\u524D\u503C\u7684\u7E3D\u548C\u3002"
  23994. },
  23995. {
  23996. "name": "fv",
  23997. "detail": "[\u53EF\u9078 - \u9810\u8A2D\u503C\u70BA0] - \u672A\u4F86\u503C,\u6216\u5728\u6700\u5F8C\u4E00\u6B21\u4ED8\u6B3E\u5F8C\u5E0C\u671B\u5F97\u5230\u7684\u73FE\u91D1\u9918\u984D\u3002"
  23998. },
  23999. {
  24000. "name": "type",
  24001. "detail": "[\u53EF\u9078 - \u9810\u8A2D\u503C\u70BA0] - \u6307\u5B9A\u5404\u671F\u7684\u4ED8\u6B3E\u6642\u9593\u662F\u5728\u671F\u521D\u9084\u662F\u671F\u672B\u3002\n\n0\u8868\u793A\u671F\u672B\uFF1B\n\n1\u8868\u793A\u671F\u521D\u3002"
  24002. },
  24003. {
  24004. "name": "guess",
  24005. "detail": "[\u53EF\u9078 - \u9810\u8A2D\u503C\u70BA0.1] - \u9810\u671F\u5229\u7387\u3002"
  24006. }
  24007. ]
  24008. },
  24009. "CUMPRINC": {
  24010. "d": "\u57FA\u65BC\u7B49\u984D\u5206\u671F\u4ED8\u6B3E\u548C\u56FA\u5B9A\u5229\u7387,\u8A08\u7B97\u6295\u8CC7\u5728\u591A\u500B\u4ED8\u6B3E\u671F\u5167\u7684\u7D2F\u8A08\u672C\u91D1\u511F\u9084\u984D\u3002",
  24011. "a": "\u57FA\u65BC\u7B49\u984D\u5206\u671F\u4ED8\u6B3E\u548C\u56FA\u5B9A\u5229\u7387,\u8A08\u7B97\u6295\u8CC7\u5728\u591A\u500B\u4ED8\u6B3E\u671F\u5167\u7684\u7D2F\u8A08\u672C\u91D1\u511F\u9084\u984D\u3002",
  24012. "p": [
  24013. {
  24014. "name": "rate",
  24015. "detail": "\u5229\u7387\u3002"
  24016. },
  24017. {
  24018. "name": "nper",
  24019. "detail": "\u7E3D\u4ED8\u6B3E\u671F\u6578\u3002"
  24020. },
  24021. {
  24022. "name": "pv",
  24023. "detail": "\u5E74\u91D1\u7684\u73FE\u503C\u3002"
  24024. },
  24025. {
  24026. "name": "start_period",
  24027. "detail": "\u958B\u59CB\u7D2F\u8A08\u8A08\u7B97\u7684\u4ED8\u6B3E\u671F\u5E8F\u865F\u3002\n\n\u9996\u671F\u5FC5\u9808\u5927\u65BC\u7B49\u65BC1\u3002"
  24028. },
  24029. {
  24030. "name": "end_period",
  24031. "detail": "\u7D50\u675F\u7D2F\u8A08\u8A08\u7B97\u7684\u4ED8\u6B3E\u671F\u5E8F\u865F\u3002\n\n\u672B\u671F\u5FC5\u9808\u5927\u65BC\u9996\u671F\u3002"
  24032. },
  24033. {
  24034. "name": "type",
  24035. "detail": "\u6307\u5B9A\u5404\u671F\u7684\u4ED8\u6B3E\u6642\u9593\u662F\u5728\u671F\u521D\u9084\u662F\u671F\u672B\u3002\n\n0\u8868\u793A\u671F\u672B\uFF1B\n\n1\u8868\u793A\u671F\u521D\u3002"
  24036. }
  24037. ]
  24038. },
  24039. "COUPNUM": {
  24040. "d": "\u8FD4\u56DE\u5728\u7D50\u7B97\u65E5\u548C\u5230\u671F\u65E5\u4E4B\u9593\u7684\u4ED8\u606F\u6B21\u6578\uFF0C\u5411\u4E0A\u820D\u5165\u5230\u6700\u8FD1\u7684\u6574\u6578",
  24041. "a": "\u8FD4\u56DE\u5728\u7D50\u7B97\u65E5\u548C\u5230\u671F\u65E5\u4E4B\u9593\u7684\u4ED8\u606F\u6B21\u6578\uFF0C\u5411\u4E0A\u820D\u5165\u5230\u6700\u8FD1\u7684\u6574\u6578",
  24042. "p": [
  24043. {
  24044. "name": "settlement",
  24045. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u7D50\u7B97\u65E5\u3002\u6709\u50F9\u8B49\u5238\u7D50\u7B97\u65E5\u662F\u5728\u767C\u884C\u65E5\u4E4B\u5F8C,\u6709\u50F9\u8B49\u5238\u8CE3\u7D66\u8CFC\u8CB7\u8005\u7684\u65E5\u671F\u3002"
  24046. },
  24047. {
  24048. "name": "maturity",
  24049. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u5230\u671F\u65E5\u3002\u5230\u671F\u65E5\u662F\u6709\u50F9\u8B49\u5238\u6709\u6548\u671F\u622A\u6B62\u6642\u7684\u65E5\u671F\u3002"
  24050. },
  24051. {
  24052. "name": "frequency",
  24053. "detail": "\u5E74\u4ED8\u606F\u6B21\u6578\u3002\n\n\u5982\u679C\u6309\u5E74\u652F\u4ED8,frequency = 1\uFF1B\n\n\u6309\u534A\u5E74\u671F\u652F\u4ED8,frequency = 2\uFF1B\n\n\u6309\u5B63\u652F\u4ED8,frequency = 4\u3002"
  24054. },
  24055. {
  24056. "name": "basis",
  24057. "detail": '[\u53EF\u9078 - \u9ED8\u8A8D\u70BA0] - \u8A13\u793A\u8981\u4F7F\u7528\u54EA\u7A2E\u5929\u6578\u8A08\u7B97\u65B9\u6CD5\u3002\n\n0\u8868\u793A"\u7F8E\u570B\uFF08NASD\uFF0930/360"\u65B9\u6CD5-\u6B64\u65B9\u6CD5\u6309\u7167\u7F8E\u570B\u5168\u570B\u8B49\u5238\u4EA4\u6613\u5546\u5354\u6703\u6A19\u6E96,\u5047\u8A2D\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929,\u4E26\u5C0D\u6240\u8F38\u5165\u7684\u6708\u672B\u65E5\u671F\u9032\u884C\u5177\u9AD4\u8ABF\u6574\u3002\n\n1\u8868\u793A"\u5BE6\u969B/\u5BE6\u969B"\u65B9\u6CD5-\u6B64\u65B9\u6CD5\u8A08\u7B97\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u548C\u6240\u6D89\u53CA\u7684\u5E74\u4EFD\u4E2D\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97\u3002\u6B64\u65B9\u6CD5\u7528\u65BC\u7F8E\u570B\u9577\u671F\u50B5\u5238,\u4E5F\u662F\u5728\u975E\u8CA1\u7D93\u7528\u9014\u65B9\u9762\u4F7F\u7528\u6700\u591A\u7684\u65B9\u6CD5\u3002\n\n2\u8868\u793A"\u5BE6\u969B/360"\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97, \u4F46\u5047\u5B9A\u6BCF\u5E74\u70BA360\u5929\u3002\n\n3\u8868\u793A"\u5BE6\u969B/365"\u65B9\u6CD5-\u6B64\u65B9\u6CD5\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97,\u4F46\u5047\u5B9A\u6BCF\u5E74\u70BA365\u5929\u3002\n\n4\u8868\u793A"\u6B50\u6D3230 / 360"\u65B9\u6CD5-\u985E\u4F3C\u65BC0,\u6B64\u65B9\u6CD5\u57FA\u65BC\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\u9032\u884C\u8A08\u7B97,\u4F46\u6309\u7167\u6B50\u6D32\u91D1\u878D\u6163\u4F8B\u5C0D\u6708\u672B\u65E5\u671F\u9032\u884C\u8ABF\u6574\u3002'
  24058. }
  24059. ]
  24060. },
  24061. "SYD": {
  24062. "d": "\u8FD4\u56DE\u5728\u6307\u5B9A\u671F\u9593\u5167\u8CC7\u7522\u6309\u5E74\u9650\u7E3D\u548C\u6298\u820A\u6CD5\u8A08\u7B97\u7684\u6298\u820A\u3002",
  24063. "a": "\u8FD4\u56DE\u5728\u6307\u5B9A\u671F\u9593\u5167\u8CC7\u7522\u6309\u5E74\u9650\u7E3D\u548C\u6298\u820A\u6CD5\u8A08\u7B97\u7684\u6298\u820A\u3002",
  24064. "p": [
  24065. {
  24066. "name": "cost",
  24067. "detail": "\u8CC7\u7522\u539F\u503C\u3002"
  24068. },
  24069. {
  24070. "name": "salvage",
  24071. "detail": "\u6298\u820A\u672B\u5C3E\u6642\u7684\u503C\uFF08\u6709\u6642\u4E5F\u7A31\u70BA\u8CC7\u7522\u6B98\u503C\uFF09\u3002"
  24072. },
  24073. {
  24074. "name": "life",
  24075. "detail": "\u8CC7\u7522\u7684\u6298\u820A\u671F\u6578\uFF08\u6709\u6642\u4E5F\u7A31\u4F5C\u8CC7\u7522\u7684\u4F7F\u7528\u58FD\u547D\uFF09\u3002"
  24076. },
  24077. {
  24078. "name": "period",
  24079. "detail": "\u5728\u4F7F\u7528\u671F\u9650\u5167\u8981\u8A08\u7B97\u6298\u820A\u7684\u6298\u820A\u671F\u3002"
  24080. }
  24081. ]
  24082. },
  24083. "TBILLEQ": {
  24084. "d": "\u57FA\u65BC\u8CBC\u73FE\u7387\u8A08\u7B97\u7F8E\u570B\u653F\u5E9C\u77ED\u671F\u50B5\u5238\u7684\u7B49\u6548\u5E74\u5316\u6536\u76CA\u7387\u3002",
  24085. "a": "\u57FA\u65BC\u8CBC\u73FE\u7387\u8A08\u7B97\u7F8E\u570B\u653F\u5E9C\u77ED\u671F\u50B5\u5238\u7684\u7B49\u6548\u5E74\u5316\u6536\u76CA\u7387\u3002",
  24086. "p": [
  24087. {
  24088. "name": "settlement",
  24089. "detail": "\u50B5\u5238\u7684\u7D50\u7B97\u65E5\u671F,\u6B64\u65E5\u671F\u70BA\u50B5\u5238\u767C\u884C\u5F8C\u4EA4\u4ED8\u7D66\u8CB7\u5BB6\u7684\u65E5\u671F\u3002"
  24090. },
  24091. {
  24092. "name": "maturity",
  24093. "detail": "\u50B5\u5238\u7684\u5230\u671F\u6216\u7D50\u675F\u65E5\u671F,\u5C4A\u6642\u53EF\u5C07\u5176\u4EE5\u9762\u503C\u6216\u7968\u9762\u50F9\u503C\u8D16\u56DE\u3002"
  24094. },
  24095. {
  24096. "name": "discount",
  24097. "detail": "\u50B5\u5238\u8CFC\u8CB7\u6642\u7684\u8CBC\u73FE\u7387\u3002"
  24098. }
  24099. ]
  24100. },
  24101. "TBILLYIELD": {
  24102. "d": "\u57FA\u65BC\u50F9\u683C\u8A08\u7B97\u7F8E\u570B\u653F\u5E9C\u77ED\u671F\u50B5\u5238\u7684\u6536\u76CA\u7387\u3002",
  24103. "a": "\u57FA\u65BC\u50F9\u683C\u8A08\u7B97\u7F8E\u570B\u653F\u5E9C\u77ED\u671F\u50B5\u5238\u7684\u6536\u76CA\u7387\u3002",
  24104. "p": [
  24105. {
  24106. "name": "settlement",
  24107. "detail": "\u50B5\u5238\u7684\u7D50\u7B97\u65E5\u671F,\u6B64\u65E5\u671F\u70BA\u50B5\u5238\u767C\u884C\u5F8C\u4EA4\u4ED8\u7D66\u8CB7\u5BB6\u7684\u65E5\u671F\u3002"
  24108. },
  24109. {
  24110. "name": "maturity",
  24111. "detail": "\u50B5\u5238\u7684\u5230\u671F\u6216\u7D50\u675F\u65E5\u671F,\u5C4A\u6642\u53EF\u5C07\u5176\u4EE5\u9762\u503C\u6216\u7968\u9762\u50F9\u503C\u8D16\u56DE\u3002"
  24112. },
  24113. {
  24114. "name": "pr",
  24115. "detail": "\u50B5\u5238\u7684\u8CFC\u8CB7\u50F9\u683C\u3002"
  24116. }
  24117. ]
  24118. },
  24119. "TBILLPRICE": {
  24120. "d": "\u57FA\u65BC\u8CBC\u73FE\u7387\u8A08\u7B97\u7F8E\u570B\u653F\u5E9C\u77ED\u671F\u50B5\u5238\u7684\u50F9\u683C\u3002",
  24121. "a": "\u57FA\u65BC\u8CBC\u73FE\u7387\u8A08\u7B97\u7F8E\u570B\u653F\u5E9C\u77ED\u671F\u50B5\u5238\u7684\u50F9\u683C\u3002",
  24122. "p": [
  24123. {
  24124. "name": "settlement",
  24125. "detail": "\u50B5\u5238\u7684\u7D50\u7B97\u65E5\u671F,\u6B64\u65E5\u671F\u70BA\u50B5\u5238\u767C\u884C\u5F8C\u4EA4\u4ED8\u7D66\u8CB7\u5BB6\u7684\u65E5\u671F\u3002"
  24126. },
  24127. {
  24128. "name": "maturity",
  24129. "detail": "\u50B5\u5238\u7684\u5230\u671F\u6216\u7D50\u675F\u65E5\u671F,\u5C4A\u6642\u53EF\u5C07\u5176\u4EE5\u9762\u503C\u6216\u7968\u9762\u50F9\u503C\u8D16\u56DE\u3002"
  24130. },
  24131. {
  24132. "name": "discount",
  24133. "detail": "\u50B5\u5238\u8CFC\u8CB7\u6642\u7684\u8CBC\u73FE\u7387\u3002"
  24134. }
  24135. ]
  24136. },
  24137. "PV": {
  24138. "d": "\u57FA\u65BC\u7B49\u984D\u5206\u671F\u4ED8\u6B3E\u548C\u56FA\u5B9A\u5229\u7387,\u8A08\u7B97\u5E74\u91D1\u6295\u8CC7\u7684\u73FE\u503C\u3002",
  24139. "a": "\u57FA\u65BC\u7B49\u984D\u5206\u671F\u4ED8\u6B3E\u548C\u56FA\u5B9A\u5229\u7387,\u8A08\u7B97\u5E74\u91D1\u6295\u8CC7\u7684\u73FE\u503C\u3002",
  24140. "p": [
  24141. {
  24142. "name": "rate",
  24143. "detail": "\u5404\u671F\u5229\u7387\u3002"
  24144. },
  24145. {
  24146. "name": "nper",
  24147. "detail": "\u5E74\u91D1\u7684\u4ED8\u6B3E\u7E3D\u671F\u6578\u3002"
  24148. },
  24149. {
  24150. "name": "pmt",
  24151. "detail": "\u6BCF\u671F\u7684\u4ED8\u6B3E\u91D1\u984D,\u5728\u5E74\u91D1\u9031\u671F\u5167\u4E0D\u80FD\u66F4\u6539\u3002"
  24152. },
  24153. {
  24154. "name": "fv",
  24155. "detail": "[\u53EF\u9078] - \u672A\u4F86\u503C,\u6216\u5728\u6700\u5F8C\u4E00\u6B21\u4ED8\u6B3E\u5F8C\u5E0C\u671B\u5F97\u5230\u7684\u73FE\u91D1\u9918\u984D\u3002"
  24156. },
  24157. {
  24158. "name": "type",
  24159. "detail": "[\u53EF\u9078 - \u9810\u8A2D\u503C\u70BA0] - \u6307\u5B9A\u5404\u671F\u7684\u4ED8\u6B3E\u6642\u9593\u662F\u5728\u671F\u521D\u9084\u662F\u671F\u672B\u3002\n\n0\u8868\u793A\u671F\u672B\uFF1B\n\n1\u8868\u793A\u671F\u521D\u3002"
  24160. }
  24161. ]
  24162. },
  24163. "ACCRINT": {
  24164. "d": "\u8FD4\u56DE\u5B9A\u671F\u4ED8\u606F\u8B49\u5238\u7684\u61C9\u8A08\u5229\u606F\u3002",
  24165. "a": "\u8FD4\u56DE\u5B9A\u671F\u4ED8\u606F\u8B49\u5238\u7684\u61C9\u8A08\u5229\u606F\u3002",
  24166. "p": [
  24167. {
  24168. "name": "issue",
  24169. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u767C\u884C\u65E5\u3002"
  24170. },
  24171. {
  24172. "name": "first_interest",
  24173. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u9996\u6B21\u8A08\u606F\u65E5\u3002"
  24174. },
  24175. {
  24176. "name": "settlement",
  24177. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u7D50\u7B97\u65E5\u3002\u6709\u50F9\u8B49\u5238\u7D50\u7B97\u65E5\u662F\u5728\u767C\u884C\u65E5\u4E4B\u5F8C,\u6709\u50F9\u8B49\u5238\u8CE3\u7D66\u8CFC\u8CB7\u8005\u7684\u65E5\u671F\u3002"
  24178. },
  24179. {
  24180. "name": "rate",
  24181. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u5E74\u606F\u7968\u5229\u7387\u3002"
  24182. },
  24183. {
  24184. "name": "par",
  24185. "detail": "\u8B49\u5238\u7684\u7968\u9762\u503C\u3002"
  24186. },
  24187. {
  24188. "name": "frequency",
  24189. "detail": "\u5E74\u4ED8\u606F\u6B21\u6578\u3002\n\n\u5982\u679C\u6309\u5E74\u652F\u4ED8,frequency = 1\uFF1B\n\n\u6309\u534A\u5E74\u671F\u652F\u4ED8,frequency = 2\uFF1B\n\n\u6309\u5B63\u652F\u4ED8,frequency = 4\u3002"
  24190. },
  24191. {
  24192. "name": "basis",
  24193. "detail": '[\u53EF\u9078 - \u9ED8\u8A8D\u70BA0] - \u8A13\u793A\u8981\u4F7F\u7528\u54EA\u7A2E\u5929\u6578\u8A08\u7B97\u65B9\u6CD5\u3002\n\n0\u8868\u793A"\u7F8E\u570B\uFF08NASD\uFF0930/360"\u65B9\u6CD5-\u6B64\u65B9\u6CD5\u6309\u7167\u7F8E\u570B\u5168\u570B\u8B49\u5238\u4EA4\u6613\u5546\u5354\u6703\u6A19\u6E96,\u5047\u8A2D\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929,\u4E26\u5C0D\u6240\u8F38\u5165\u7684\u6708\u672B\u65E5\u671F\u9032\u884C\u5177\u9AD4\u8ABF\u6574\u3002\n\n1\u8868\u793A"\u5BE6\u969B/\u5BE6\u969B"\u65B9\u6CD5-\u6B64\u65B9\u6CD5\u8A08\u7B97\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u548C\u6240\u6D89\u53CA\u7684\u5E74\u4EFD\u4E2D\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97\u3002\u6B64\u65B9\u6CD5\u7528\u65BC\u7F8E\u570B\u9577\u671F\u50B5\u5238,\u4E5F\u662F\u5728\u975E\u8CA1\u7D93\u7528\u9014\u65B9\u9762\u4F7F\u7528\u6700\u591A\u7684\u65B9\u6CD5\u3002\n\n2\u8868\u793A"\u5BE6\u969B/360"\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97, \u4F46\u5047\u5B9A\u6BCF\u5E74\u70BA360\u5929\u3002\n\n3\u8868\u793A"\u5BE6\u969B/365"\u65B9\u6CD5-\u6B64\u65B9\u6CD5\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97,\u4F46\u5047\u5B9A\u6BCF\u5E74\u70BA365\u5929\u3002\n\n4\u8868\u793A""\u6B50\u6D3230/360"\u65B9\u6CD5"-\u985E\u4F3C\u65BC0,\u6B64\u65B9\u6CD5\u57FA\u65BC\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\u9032\u884C\u8A08\u7B97,\u4F46\u6309\u7167\u6B50\u6D32\u91D1\u878D\u6163\u4F8B\u5C0D\u6708\u672B\u65E5\u671F\u9032\u884C\u8ABF\u6574\u3002'
  24194. },
  24195. {
  24196. "name": "calc_method",
  24197. "detail": "[\u53EF\u9078 - \u9ED8\u8A8D\u70BATRUE\uFF08\uFF09] - \u4E00\u500B\u908F\u8F2F\u503C,\u6307\u5B9A\u7576\u7D50\u7B97\u65E5\u671F\u665A\u65BC\u9996\u6B21\u8A08\u606F\u65E5\u671F\u6642\u7528\u65BC\u8A08\u7B97\u7E3D\u61C9\u8A08\u5229\u606F\u7684\u65B9\u6CD5\u3002\n\n\u5982\u679C\u503C\u70BATRUE,\u5247\u8FD4\u56DE\u5F9E\u767C\u884C\u65E5\u5230\u7D50\u7B97\u65E5\u7684\u7E3D\u61C9\u8A08\u5229\u606F\u3002\n\n\u5982\u679C\u503C\u70BAFALSE,\u5247\u8FD4\u56DE\u5F9E\u9996\u6B21\u8A08\u606F\u65E5\u5230\u7D50\u7B97\u65E5\u7684\u61C9\u8A08\u5229\u606F\u3002"
  24198. }
  24199. ]
  24200. },
  24201. "ACCRINTM": {
  24202. "d": "\u8FD4\u56DE\u5728\u5230\u671F\u65E5\u652F\u4ED8\u5229\u606F\u7684\u6709\u50F9\u8B49\u5238\u7684\u61C9\u8A08\u5229\u606F\u3002",
  24203. "a": "\u8FD4\u56DE\u5728\u5230\u671F\u65E5\u652F\u4ED8\u5229\u606F\u7684\u6709\u50F9\u8B49\u5238\u7684\u61C9\u8A08\u5229\u606F\u3002",
  24204. "p": [
  24205. {
  24206. "name": "issue",
  24207. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u767C\u884C\u65E5\u3002"
  24208. },
  24209. {
  24210. "name": "settlement",
  24211. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u5230\u671F\u65E5\u3002"
  24212. },
  24213. {
  24214. "name": "rate",
  24215. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u5E74\u606F\u7968\u5229\u7387\u3002"
  24216. },
  24217. {
  24218. "name": "par",
  24219. "detail": "\u8B49\u5238\u7684\u7968\u9762\u503C\u3002"
  24220. },
  24221. {
  24222. "name": "basis",
  24223. "detail": '[\u53EF\u9078 - \u9ED8\u8A8D\u70BA0] - \u8A13\u793A\u8981\u4F7F\u7528\u54EA\u7A2E\u5929\u6578\u8A08\u7B97\u65B9\u6CD5\u3002\n\n0\u8868\u793A"\u7F8E\u570B\uFF08NASD\uFF0930/360"\u65B9\u6CD5-\u6B64\u65B9\u6CD5\u6309\u7167\u7F8E\u570B\u5168\u570B\u8B49\u5238\u4EA4\u6613\u5546\u5354\u6703\u6A19\u6E96,\u5047\u8A2D\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929,\u4E26\u5C0D\u6240\u8F38\u5165\u7684\u6708\u672B\u65E5\u671F\u9032\u884C\u5177\u9AD4\u8ABF\u6574\u3002\n\n1\u8868\u793A"\u5BE6\u969B/\u5BE6\u969B"\u65B9\u6CD5-\u6B64\u65B9\u6CD5\u8A08\u7B97\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u548C\u6240\u6D89\u53CA\u7684\u5E74\u4EFD\u4E2D\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97\u3002\u6B64\u65B9\u6CD5\u7528\u65BC\u7F8E\u570B\u9577\u671F\u50B5\u5238,\u4E5F\u662F\u5728\u975E\u8CA1\u7D93\u7528\u9014\u65B9\u9762\u4F7F\u7528\u6700\u591A\u7684\u65B9\u6CD5\u3002\n\n2\u8868\u793A"\u5BE6\u969B/360"\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97, \u4F46\u5047\u5B9A\u6BCF\u5E74\u70BA360\u5929\u3002\n\n3\u8868\u793A"\u5BE6\u969B/365"\u65B9\u6CD5-\u6B64\u65B9\u6CD5\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97,\u4F46\u5047\u5B9A\u6BCF\u5E74\u70BA365\u5929\u3002\n\n4\u8868\u793A"\u6B50\u6D3230 / 360"\u65B9\u6CD5-\u985E\u4F3C\u65BC0,\u6B64\u65B9\u6CD5\u57FA\u65BC\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\u9032\u884C\u8A08\u7B97,\u4F46\u6309\u7167\u6B50\u6D32\u91D1\u878D\u6163\u4F8B\u5C0D\u6708\u672B\u65E5\u671F\u9032\u884C\u8ABF\u6574\u3002'
  24224. }
  24225. ]
  24226. },
  24227. "COUPDAYBS": {
  24228. "d": "\u8FD4\u56DE\u5F9E\u4ED8\u606F\u671F\u958B\u59CB\u5230\u7D50\u7B97\u65E5\u7684\u5929\u6578\u3002",
  24229. "a": "\u8FD4\u56DE\u5F9E\u4ED8\u606F\u671F\u958B\u59CB\u5230\u7D50\u7B97\u65E5\u7684\u5929\u6578\u3002",
  24230. "p": [
  24231. {
  24232. "name": "settlement",
  24233. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u7D50\u7B97\u65E5\u3002\u6709\u50F9\u8B49\u5238\u7D50\u7B97\u65E5\u662F\u5728\u767C\u884C\u65E5\u4E4B\u5F8C,\u6709\u50F9\u8B49\u5238\u8CE3\u7D66\u8CFC\u8CB7\u8005\u7684\u65E5\u671F\u3002"
  24234. },
  24235. {
  24236. "name": "maturity",
  24237. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u5230\u671F\u65E5\u3002\u5230\u671F\u65E5\u662F\u6709\u50F9\u8B49\u5238\u6709\u6548\u671F\u622A\u6B62\u6642\u7684\u65E5\u671F\u3002"
  24238. },
  24239. {
  24240. "name": "frequency",
  24241. "detail": "\u5E74\u4ED8\u606F\u6B21\u6578\u3002\n\n\u5982\u679C\u6309\u5E74\u652F\u4ED8,frequency = 1\uFF1B\n\n\u6309\u534A\u5E74\u671F\u652F\u4ED8,frequency = 2\uFF1B\n\n\u6309\u5B63\u652F\u4ED8,frequency = 4\u3002"
  24242. },
  24243. {
  24244. "name": "basis",
  24245. "detail": '[\u53EF\u9078 - \u9ED8\u8A8D\u70BA0] - \u8A13\u793A\u8981\u4F7F\u7528\u54EA\u7A2E\u5929\u6578\u8A08\u7B97\u65B9\u6CD5\u3002\n\n0\u8868\u793A"\u7F8E\u570B\uFF08NASD\uFF0930/360"\u65B9\u6CD5-\u6B64\u65B9\u6CD5\u6309\u7167\u7F8E\u570B\u5168\u570B\u8B49\u5238\u4EA4\u6613\u5546\u5354\u6703\u6A19\u6E96,\u5047\u8A2D\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929,\u4E26\u5C0D\u6240\u8F38\u5165\u7684\u6708\u672B\u65E5\u671F\u9032\u884C\u5177\u9AD4\u8ABF\u6574\u3002\n\n1\u8868\u793A"\u5BE6\u969B/\u5BE6\u969B"\u65B9\u6CD5-\u6B64\u65B9\u6CD5\u8A08\u7B97\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u548C\u6240\u6D89\u53CA\u7684\u5E74\u4EFD\u4E2D\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97\u3002\u6B64\u65B9\u6CD5\u7528\u65BC\u7F8E\u570B\u9577\u671F\u50B5\u5238,\u4E5F\u662F\u5728\u975E\u8CA1\u7D93\u7528\u9014\u65B9\u9762\u4F7F\u7528\u6700\u591A\u7684\u65B9\u6CD5\u3002\n\n2\u8868\u793A"\u5BE6\u969B/360"\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97, \u4F46\u5047\u5B9A\u6BCF\u5E74\u70BA360\u5929\u3002\n\n3\u8868\u793A"\u5BE6\u969B/365"\u65B9\u6CD5-\u6B64\u65B9\u6CD5\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97,\u4F46\u5047\u5B9A\u6BCF\u5E74\u70BA365\u5929\u3002\n\n4\u8868\u793A"\u6B50\u6D3230 / 360"\u65B9\u6CD5-\u985E\u4F3C\u65BC0,\u6B64\u65B9\u6CD5\u57FA\u65BC\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\u9032\u884C\u8A08\u7B97,\u4F46\u6309\u7167\u6B50\u6D32\u91D1\u878D\u6163\u4F8B\u5C0D\u6708\u672B\u65E5\u671F\u9032\u884C\u8ABF\u6574\u3002'
  24246. }
  24247. ]
  24248. },
  24249. "COUPDAYS": {
  24250. "d": "\u8FD4\u56DE\u7D50\u7B97\u65E5\u6240\u5728\u7684\u4ED8\u606F\u671F\u7684\u5929\u6578\u3002",
  24251. "a": "\u8FD4\u56DE\u7D50\u7B97\u65E5\u6240\u5728\u7684\u4ED8\u606F\u671F\u7684\u5929\u6578\u3002",
  24252. "p": [
  24253. {
  24254. "name": "settlement",
  24255. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u7D50\u7B97\u65E5\u3002\u6709\u50F9\u8B49\u5238\u7D50\u7B97\u65E5\u662F\u5728\u767C\u884C\u65E5\u4E4B\u5F8C,\u6709\u50F9\u8B49\u5238\u8CE3\u7D66\u8CFC\u8CB7\u8005\u7684\u65E5\u671F\u3002"
  24256. },
  24257. {
  24258. "name": "maturity",
  24259. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u5230\u671F\u65E5\u3002\u5230\u671F\u65E5\u662F\u6709\u50F9\u8B49\u5238\u6709\u6548\u671F\u622A\u6B62\u6642\u7684\u65E5\u671F\u3002"
  24260. },
  24261. {
  24262. "name": "frequency",
  24263. "detail": "\u5E74\u4ED8\u606F\u6B21\u6578\u3002\n\n\u5982\u679C\u6309\u5E74\u652F\u4ED8,frequency = 1\uFF1B\n\n\u6309\u534A\u5E74\u671F\u652F\u4ED8,frequency = 2\uFF1B\n\n\u6309\u5B63\u652F\u4ED8,frequency = 4\u3002"
  24264. },
  24265. {
  24266. "name": "basis",
  24267. "detail": '[\u53EF\u9078 - \u9ED8\u8A8D\u70BA0] -\u8A13\u793A\u8981\u4F7F\u7528\u54EA\u7A2E\u5929\u6578\u8A08\u7B97\u65B9\u6CD5\u3002\n\n0\u8868\u793A"\u7F8E\u570B\uFF08NASD\uFF0930/360"\u65B9\u6CD5-\u6B64\u65B9\u6CD5\u6309\u7167\u7F8E\u570B\u5168\u570B\u8B49\u5238\u4EA4\u6613\u5546\u5354\u6703\u6A19\u6E96,\u5047\u8A2D\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929,\u4E26\u5C0D\u6240\u8F38\u5165\u7684\u6708\u672B\u65E5\u671F\u9032\u884C\u5177\u9AD4\u8ABF\u6574\u3002\n\n1\u8868\u793A"\u5BE6\u969B/\u5BE6\u969B"\u65B9\u6CD5-\u6B64\u65B9\u6CD5\u8A08\u7B97\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u548C\u6240\u6D89\u53CA\u7684\u5E74\u4EFD\u4E2D\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97\u3002\u6B64\u65B9\u6CD5\u7528\u65BC\u7F8E\u570B\u9577\u671F\u50B5\u5238,\u4E5F\u662F\u5728\u975E\u8CA1\u7D93\u7528\u9014\u65B9\u9762\u4F7F\u7528\u6700\u591A\u7684\u65B9\u6CD5\u3002\n\n2\u8868\u793A"\u5BE6\u969B/360"\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97, \u4F46\u5047\u5B9A\u6BCF\u5E74\u70BA360\u5929\u3002\n\n3\u8868\u793A"\u5BE6\u969B/365"\u65B9\u6CD5-\u6B64\u65B9\u6CD5\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97,\u4F46\u5047\u5B9A\u6BCF\u5E74\u70BA365\u5929\u3002\n\n4\u8868\u793A"\u6B50\u6D3230 / 360"\u65B9\u6CD5-\u985E\u4F3C\u65BC0,\u6B64\u65B9\u6CD5\u57FA\u65BC\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\u9032\u884C\u8A08\u7B97,\u4F46\u6309\u7167\u6B50\u6D32\u91D1\u878D\u6163\u4F8B\u5C0D\u6708\u672B\u65E5\u671F\u9032\u884C\u8ABF\u6574\u3002'
  24268. }
  24269. ]
  24270. },
  24271. "COUPDAYSNC": {
  24272. "d": "\u8FD4\u56DE\u5F9E\u7D50\u7B97\u65E5\u5230\u4E0B\u4E00\u7968\u606F\u652F\u4ED8\u65E5\u4E4B\u9593\u7684\u5929\u6578\u3002",
  24273. "a": "\u8FD4\u56DE\u5F9E\u7D50\u7B97\u65E5\u5230\u4E0B\u4E00\u7968\u606F\u652F\u4ED8\u65E5\u4E4B\u9593\u7684\u5929\u6578\u3002",
  24274. "p": [
  24275. {
  24276. "name": "settlement",
  24277. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u7D50\u7B97\u65E5\u3002\u6709\u50F9\u8B49\u5238\u7D50\u7B97\u65E5\u662F\u5728\u767C\u884C\u65E5\u4E4B\u5F8C,\u6709\u50F9\u8B49\u5238\u8CE3\u7D66\u8CFC\u8CB7\u8005\u7684\u65E5\u671F\u3002"
  24278. },
  24279. {
  24280. "name": "maturity",
  24281. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u5230\u671F\u65E5\u3002\u5230\u671F\u65E5\u662F\u6709\u50F9\u8B49\u5238\u6709\u6548\u671F\u622A\u6B62\u6642\u7684\u65E5\u671F\u3002"
  24282. },
  24283. {
  24284. "name": "frequency",
  24285. "detail": "\u5E74\u4ED8\u606F\u6B21\u6578\u3002\n\n\u5982\u679C\u6309\u5E74\u652F\u4ED8,frequency = 1\uFF1B\n\n\u6309\u534A\u5E74\u671F\u652F\u4ED8,frequency = 2\uFF1B\n\n\u6309\u5B63\u652F\u4ED8,frequency = 4\u3002"
  24286. },
  24287. {
  24288. "name": "basis",
  24289. "detail": '[\u53EF\u9078 - \u9ED8\u8A8D\u70BA0] - \u8A13\u793A\u8981\u4F7F\u7528\u54EA\u7A2E\u5929\u6578\u8A08\u7B97\u65B9\u6CD5\u3002\n\n0\u8868\u793A"\u7F8E\u570B\uFF08NASD\uFF0930/360"\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u6309\u7167\u7F8E\u570B\u5168\u570B\u8B49\u5238\u4EA4\u6613\u5546\u5354\u6703\u6A19\u6E96,\u5047\u8A2D\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929,\u4E26\u5C0D\u6240\u8F38\u5165\u7684\u6708\u672B\u65E5\u671F\u9032\u884C\u5177\u9AD4\u8ABF\u6574\u3002\n\n1\u8868\u793A"\u5BE6\u969B/\u5BE6\u969B"\u65B9\u6CD5-\u6B64\u65B9\u6CD5\u8A08\u7B97\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u548C\u6240\u6D89\u53CA\u7684\u5E74\u4EFD\u4E2D\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97\u3002\u6B64\u65B9\u6CD5\u7528\u65BC\u7F8E\u570B\u9577\u671F\u50B5\u5238,\u4E5F\u662F\u5728\u975E\u8CA1\u7D93\u7528\u9014\u65B9\u9762\u4F7F\u7528\u6700\u591A\u7684\u65B9\u6CD5\u3002\n\n2\u8868\u793A"\u5BE6\u969B/360"\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97, \u4F46\u5047\u5B9A\u6BCF\u5E74\u70BA360\u5929\u3002\n\n3\u8868\u793A"\u5BE6\u969B/365"\u65B9\u6CD5-\u6B64\u65B9\u6CD5\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97,\u4F46\u5047\u5B9A\u6BCF\u5E74\u70BA365\u5929\u3002\n\n4\u8868\u793A"\u6B50\u6D3230 / 360"\u65B9\u6CD5-\u985E\u4F3C\u65BC0,\u6B64\u65B9\u6CD5\u57FA\u65BC\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\u9032\u884C\u8A08\u7B97,\u4F46\u6309\u7167\u6B50\u6D32\u91D1\u878D\u6163\u4F8B\u5C0D\u6708\u672B\u65E5\u671F\u9032\u884C\u8ABF\u6574\u3002'
  24290. }
  24291. ]
  24292. },
  24293. "COUPNCD": {
  24294. "d": "\u8A08\u7B97\u7D50\u7B97\u65E5\u4E4B\u5F8C\u7684\u4E0B\u4E00\u7968\u606F\u6216\u5229\u606F\u6D3E\u767C\u65E5\u671F\u3002",
  24295. "a": "\u8A08\u7B97\u7D50\u7B97\u65E5\u4E4B\u5F8C\u7684\u4E0B\u4E00\u7968\u606F\u6216\u5229\u606F\u6D3E\u767C\u65E5\u671F\u3002",
  24296. "p": [
  24297. {
  24298. "name": "settlement",
  24299. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u7D50\u7B97\u65E5\u3002\u6709\u50F9\u8B49\u5238\u7D50\u7B97\u65E5\u662F\u5728\u767C\u884C\u65E5\u4E4B\u5F8C,\u6709\u50F9\u8B49\u5238\u8CE3\u7D66\u8CFC\u8CB7\u8005\u7684\u65E5\u671F\u3002"
  24300. },
  24301. {
  24302. "name": "maturity",
  24303. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u5230\u671F\u65E5\u3002\u5230\u671F\u65E5\u662F\u6709\u50F9\u8B49\u5238\u6709\u6548\u671F\u622A\u6B62\u6642\u7684\u65E5\u671F\u3002"
  24304. },
  24305. {
  24306. "name": "frequency",
  24307. "detail": "\u5E74\u4ED8\u606F\u6B21\u6578\u3002\n\n\u5982\u679C\u6309\u5E74\u652F\u4ED8,frequency = 1\uFF1B\n\n\u6309\u534A\u5E74\u671F\u652F\u4ED8,frequency = 2\uFF1B\n\n\u6309\u5B63\u652F\u4ED8,frequency = 4\u3002"
  24308. },
  24309. {
  24310. "name": "basis",
  24311. "detail": '[\u53EF\u9078 - \u9ED8\u8A8D\u70BA0] - \u8A13\u793A\u8981\u4F7F\u7528\u54EA\u7A2E\u5929\u6578\u8A08\u7B97\u65B9\u6CD5\u3002\n\n0\u8868\u793A"\u7F8E\u570B\uFF08NASD\uFF0930/360"\u65B9\u6CD5-\u6B64\u65B9\u6CD5\u6309\u7167\u7F8E\u570B\u5168\u570B\u8B49\u5238\u4EA4\u6613\u5546\u5354\u6703\u6A19\u6E96,\u5047\u8A2D\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929,\u4E26\u5C0D\u6240\u8F38\u5165\u7684\u6708\u672B\u65E5\u671F\u9032\u884C\u5177\u9AD4\u8ABF\u6574\u3002\n\n1\u8868\u793A"\u5BE6\u969B/\u5BE6\u969B"\u65B9\u6CD5-\u6B64\u65B9\u6CD5\u8A08\u7B97\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u548C\u6240\u6D89\u53CA\u7684\u5E74\u4EFD\u4E2D\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97\u3002\u6B64\u65B9\u6CD5\u7528\u65BC\u7F8E\u570B\u9577\u671F\u50B5\u5238,\u4E5F\u662F\u5728\u975E\u8CA1\u7D93\u7528\u9014\u65B9\u9762\u4F7F\u7528\u6700\u591A\u7684\u65B9\u6CD5\u3002\n\n2\u8868\u793A"\u5BE6\u969B/360"\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97, \u4F46\u5047\u5B9A\u6BCF\u5E74\u70BA360\u5929\u3002\n\n3\u8868\u793A"\u5BE6\u969B/365"\u65B9\u6CD5-\u6B64\u65B9\u6CD5\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97,\u4F46\u5047\u5B9A\u6BCF\u5E74\u70BA365\u5929\u3002\n\n4\u8868\u793A"\u6B50\u6D3230 / 360"\u65B9\u6CD5-\u985E\u4F3C\u65BC0,\u6B64\u65B9\u6CD5\u57FA\u65BC\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\u9032\u884C\u8A08\u7B97,\u4F46\u6309\u7167\u6B50\u6D32\u91D1\u878D\u6163\u4F8B\u5C0D\u6708\u672B\u65E5\u671F\u9032\u884C\u8ABF\u6574\u3002'
  24312. }
  24313. ]
  24314. },
  24315. "COUPPCD": {
  24316. "d": "\u8A08\u7B97\u7D50\u7B97\u65E5\u4E4B\u524D\u7684\u6700\u5F8C\u4E00\u500B\u7968\u606F\u6216\u5229\u606F\u652F\u4ED8\u65E5\u3002",
  24317. "a": "\u8A08\u7B97\u7D50\u7B97\u65E5\u4E4B\u524D\u7684\u6700\u5F8C\u4E00\u500B\u7968\u606F\u6216\u5229\u606F\u652F\u4ED8\u65E5\u3002",
  24318. "p": [
  24319. {
  24320. "name": "settlement",
  24321. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u7D50\u7B97\u65E5\u3002\u6709\u50F9\u8B49\u5238\u7D50\u7B97\u65E5\u662F\u5728\u767C\u884C\u65E5\u4E4B\u5F8C,\u6709\u50F9\u8B49\u5238\u8CE3\u7D66\u8CFC\u8CB7\u8005\u7684\u65E5\u671F\u3002"
  24322. },
  24323. {
  24324. "name": "maturity",
  24325. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u5230\u671F\u65E5\u3002\u5230\u671F\u65E5\u662F\u6709\u50F9\u8B49\u5238\u6709\u6548\u671F\u622A\u6B62\u6642\u7684\u65E5\u671F\u3002"
  24326. },
  24327. {
  24328. "name": "frequency",
  24329. "detail": "\u5E74\u4ED8\u606F\u6B21\u6578\u3002\n\n\u5982\u679C\u6309\u5E74\u652F\u4ED8,frequency = 1\uFF1B\n\n\u6309\u534A\u5E74\u671F\u652F\u4ED8,frequency = 2\uFF1B\n\n\u6309\u5B63\u652F\u4ED8,frequency = 4 \u3002"
  24330. },
  24331. {
  24332. "name": "basis",
  24333. "detail": '[\u53EF\u9078 - \u9ED8\u8A8D\u70BA0] - \u8A13\u793A\u8981\u4F7F\u7528\u54EA\u7A2E\u5929\u6578\u8A08\u7B97\u65B9\u6CD5\u3002\n\n0\u8868\u793A"\u7F8E\u570B\uFF08NASD\uFF0930/360"\u65B9\u6CD5-\u6B64\u65B9\u6CD5\u6309\u7167\u7F8E\u570B\u5168\u570B\u8B49\u5238\u4EA4\u6613\u5546\u5354\u6703\u6A19\u6E96,\u5047\u8A2D\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929,\u4E26\u5C0D\u6240\u8F38\u5165\u7684\u6708\u672B\u65E5\u671F\u9032\u884C\u5177\u9AD4\u8ABF\u6574\u3002\n\n1\u8868\u793A"\u5BE6\u969B/\u5BE6\u969B"\u65B9\u6CD5-\u6B64\u65B9\u6CD5\u8A08\u7B97\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u548C\u6240\u6D89\u53CA\u7684\u5E74\u4EFD\u4E2D\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97\u3002\u6B64\u65B9\u6CD5\u7528\u65BC\u7F8E\u570B\u9577\u671F\u50B5\u5238,\u4E5F\u662F\u5728\u975E\u8CA1\u7D93\u7528\u9014\u65B9\u9762\u4F7F\u7528\u6700\u591A\u7684\u65B9\u6CD5\u3002\n\n2\u8868\u793A"\u5BE6\u969B/360"\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97, \u4F46\u5047\u5B9A\u6BCF\u5E74\u70BA360\u5929\u3002\n\n3\u8868\u793A"\u5BE6\u969B/365"\u65B9\u6CD5-\u6B64\u65B9\u6CD5\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97,\u4F46\u5047\u5B9A\u6BCF\u5E74\u70BA365\u5929\u3002\n\n4\u8868\u793A"\u6B50\u6D3230 / 360"\u65B9\u6CD5-\u985E\u4F3C\u65BC0,\u6B64\u65B9\u6CD5\u57FA\u65BC\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\u9032\u884C\u8A08\u7B97,\u4F46\u6309\u7167\u6B50\u6D32\u91D1\u878D\u6163\u4F8B\u5C0D\u6708\u672B\u65E5\u671F\u9032\u884C\u8ABF\u6574\u3002'
  24334. }
  24335. ]
  24336. },
  24337. "FV": {
  24338. "d": "\u57FA\u65BC\u7B49\u984D\u5206\u671F\u4ED8\u6B3E\u548C\u56FA\u5B9A\u5229\u7387,\u8A08\u7B97\u5E74\u91D1\u6295\u8CC7\u7684\u672A\u4F86\u50F9\u503C\u3002",
  24339. "a": "\u57FA\u65BC\u7B49\u984D\u5206\u671F\u4ED8\u6B3E\u548C\u56FA\u5B9A\u5229\u7387,\u8A08\u7B97\u5E74\u91D1\u6295\u8CC7\u7684\u672A\u4F86\u50F9\u503C\u3002",
  24340. "p": [
  24341. {
  24342. "name": "rate",
  24343. "detail": "\u5404\u671F\u5229\u7387\u3002"
  24344. },
  24345. {
  24346. "name": "nper",
  24347. "detail": "\u5E74\u91D1\u7684\u4ED8\u6B3E\u7E3D\u671F\u6578\u3002"
  24348. },
  24349. {
  24350. "name": "pmt",
  24351. "detail": "\u5404\u671F\u6240\u61C9\u652F\u4ED8\u7684\u91D1\u984D,\u5728\u6574\u500B\u5E74\u91D1\u671F\u9593\u4FDD\u6301\u4E0D\u8B8A\u3002"
  24352. },
  24353. {
  24354. "name": "pv",
  24355. "detail": "[\u53EF\u9078 - \u9810\u8A2D\u503C\u70BA0 ] - \u73FE\u503C,\u6216\u4E00\u7CFB\u5217\u672A\u4F86\u4ED8\u6B3E\u7684\u7576\u524D\u503C\u7684\u7D2F\u7A4D\u548C\u3002"
  24356. },
  24357. {
  24358. "name": "type",
  24359. "detail": "[\u53EF\u9078 - \u9810\u8A2D\u503C\u70BA0 ] - \u6307\u5B9A\u5404\u671F\u7684\u4ED8\u6B3E\u6642\u9593\u662F\u5728\u671F\u521D\u9084\u662F\u671F\u672B\u3002\n\n0\u8868\u793A\u671F\u672B\uFF1B\n\n1\u8868\u793A\u671F\u521D\u3002"
  24360. }
  24361. ]
  24362. },
  24363. "FVSCHEDULE": {
  24364. "d": "\u8FD4\u56DE\u61C9\u7528\u4E00\u7CFB\u5217\u8907\u5229\u7387\u8A08\u7B97\u7684\u521D\u59CB\u672C\u91D1\u7684\u672A\u4F86\u503C\u3002",
  24365. "a": "\u8FD4\u56DE\u61C9\u7528\u4E00\u7CFB\u5217\u8907\u5229\u7387\u8A08\u7B97\u7684\u521D\u59CB\u672C\u91D1\u7684\u672A\u4F86\u503C\u3002",
  24366. "p": [
  24367. {
  24368. "name": "principal",
  24369. "detail": "\u73FE\u503C\u3002"
  24370. },
  24371. {
  24372. "name": "schedule",
  24373. "detail": "\u7528\u65BC\u8A08\u7B97\u672C\u91D1\u8907\u5229\u7684\u4E00\u7D44\u5229\u7387\u3002\n\n\u5229\u7387\u9336\u5FC5\u9808\u662F\u7BC4\u570D\u6216\u6578\u7D44,\u5176\u4E2D\u5305\u542B\u8981\u7528\u65BC\u8A08\u7B97\u8907\u5229\u7684\u4E00\u7D44\u5229\u7387\u3002\u9019\u4E9B\u5229\u7387\u503C\u61C9\u8A72\u4EE5\u5341\u9032\u4F4D\u5C0F\u6578\u5F62\u5F0F\u8868\u793A,\u6216\u8005\u4F7F\u7528UNARY_PERCENT\u4EE5\u767E\u5206\u6BD4\u5F62\u5F0F\u8868\u793A,\u5373\u8868\u793A\u70BA0.09\u6216UNARY_PERCENT\uFF089\uFF09,\u800C\u4E0D\u8981\u8868\u793A\u70BA9\u3002"
  24374. }
  24375. ]
  24376. },
  24377. "YIELD": {
  24378. "d": "\u8FD4\u56DE\u5B9A\u671F\u652F\u4ED8\u5229\u606F\u7684\u50B5\u5238\u7684\u6536\u76CA\u7387\u3002",
  24379. "a": "\u8FD4\u56DE\u5B9A\u671F\u652F\u4ED8\u5229\u606F\u7684\u50B5\u5238\u7684\u6536\u76CA\u7387\u3002",
  24380. "p": [
  24381. {
  24382. "name": "settlement",
  24383. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u7D50\u7B97\u65E5\u3002\u6709\u50F9\u8B49\u5238\u7D50\u7B97\u65E5\u662F\u5728\u767C\u884C\u65E5\u4E4B\u5F8C,\u6709\u50F9\u8B49\u5238\u8CE3\u7D66\u8CFC\u8CB7\u8005\u7684\u65E5\u671F\u3002"
  24384. },
  24385. {
  24386. "name": "maturity",
  24387. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u5230\u671F\u65E5\u3002\u5230\u671F\u65E5\u662F\u6709\u50F9\u8B49\u5238\u6709\u6548\u671F\u622A\u6B62\u6642\u7684\u65E5\u671F\u3002"
  24388. },
  24389. {
  24390. "name": "rate",
  24391. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u5E74\u606F\u7968\u5229\u7387\u3002"
  24392. },
  24393. {
  24394. "name": "pr",
  24395. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u50F9\u683C\u3002"
  24396. },
  24397. {
  24398. "name": "redemption",
  24399. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u6E05\u511F\u50F9\u503C\u3002"
  24400. },
  24401. {
  24402. "name": "frequency",
  24403. "detail": "\u5E74\u4ED8\u606F\u6B21\u6578\u3002\n\n\u5982\u679C\u6309\u5E74\u652F\u4ED8,frequency = 1\uFF1B\n\n\u6309\u534A\u5E74\u671F\u652F\u4ED8,frequency = 2\uFF1B\n\n\u6309\u5B63\u652F\u4ED8,frequency = 4\u3002"
  24404. },
  24405. {
  24406. "name": "basis",
  24407. "detail": '[\u53EF\u9078 - \u9ED8\u8A8D\u70BA0] - \u8A13\u793A\u8981\u4F7F\u7528\u54EA\u7A2E\u5929\u6578\u8A08\u7B97\u65B9\u6CD5\u3002\n\n0\u8868\u793A"\u7F8E\u570B\uFF08NASD\uFF0930/360"\u65B9\u6CD5-\u6B64\u65B9\u6CD5\u6309\u7167\u7F8E\u570B\u5168\u570B\u8B49\u5238\u4EA4\u6613\u5546\u5354\u6703\u6A19\u6E96,\u5047\u8A2D\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929,\u4E26\u5C0D\u6240\u8F38\u5165\u7684\u6708\u672B\u65E5\u671F\u9032\u884C\u5177\u9AD4\u8ABF\u6574\u3002\n\n1\u8868\u793A"\u5BE6\u969B/\u5BE6\u969B"\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u8A08\u7B97\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u548C\u6240\u6D89\u53CA\u7684\u5E74\u4EFD\u4E2D\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97\u3002\u6B64\u65B9\u6CD5\u7528\u65BC\u7F8E\u570B\u9577\u671F\u50B5\u5238,\u4E5F\u662F\u5728\u975E\u8CA1\u7D93\u7528\u9014\u65B9\u9762\u4F7F\u7528\u6700\u591A\u7684\u65B9\u6CD5\u3002\n\n2\u8868\u793A"\u5BE6\u969B/360"\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97, \u4F46\u5047\u5B9A\u6BCF\u5E74\u70BA360\u5929\u3002\n\n3\u8868\u793A"\u5BE6\u969B/365"\u65B9\u6CD5-\u6B64\u65B9\u6CD5\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97,\u4F46\u5047\u5B9A\u6BCF\u5E74\u70BA365\u5929\u3002\n\n4\u8868\u793A"\u6B50\u6D3230 / 360"\u65B9\u6CD5-\u985E\u4F3C\u65BC0,\u6B64\u65B9\u6CD5\u57FA\u65BC\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\u9032\u884C\u8A08\u7B97,\u4F46\u6309\u7167\u6B50\u6D32\u91D1\u878D\u6163\u4F8B\u5C0D\u6708\u672B\u65E5\u671F\u9032\u884C\u8ABF\u6574\u3002'
  24408. }
  24409. ]
  24410. },
  24411. "YIELDDISC": {
  24412. "d": "\u57FA\u65BC\u50F9\u683C\u8A08\u7B97\u6298\u50F9\u767C\u884C\u7684\uFF08\u4E0D\u5E36\u606F\uFF09\u50B5\u5238\u7684\u5E74\u6536\u76CA\u7387\u3002",
  24413. "a": "\u57FA\u65BC\u50F9\u683C\u8A08\u7B97\u6298\u50F9\u767C\u884C\u7684\uFF08\u4E0D\u5E36\u606F\uFF09\u50B5\u5238\u7684\u5E74\u6536\u76CA\u7387\u3002",
  24414. "p": [
  24415. {
  24416. "name": "settlement",
  24417. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u7D50\u7B97\u65E5\u3002\u6709\u50F9\u8B49\u5238\u7D50\u7B97\u65E5\u662F\u5728\u767C\u884C\u65E5\u4E4B\u5F8C,\u6709\u50F9\u8B49\u5238\u8CE3\u7D66\u8CFC\u8CB7\u8005\u7684\u65E5\u671F\u3002"
  24418. },
  24419. {
  24420. "name": "maturity",
  24421. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u5230\u671F\u65E5\u3002\u5230\u671F\u65E5\u662F\u6709\u50F9\u8B49\u5238\u6709\u6548\u671F\u622A\u6B62\u6642\u7684\u65E5\u671F\u3002"
  24422. },
  24423. {
  24424. "name": "pr",
  24425. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u50F9\u683C\u3002"
  24426. },
  24427. {
  24428. "name": "redemption",
  24429. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u6E05\u511F\u50F9\u503C\u3002"
  24430. },
  24431. {
  24432. "name": "basis",
  24433. "detail": '[\u53EF\u9078 - \u9ED8\u8A8D\u70BA0] - \u8A13\u793A\u8981\u4F7F\u7528\u54EA\u7A2E\u5929\u6578\u8A08\u7B97\u65B9\u6CD5\u3002\n\n0\u8868\u793A"\u7F8E\u570B\uFF08NASD\uFF0930/360"\u65B9\u6CD5-\u6B64\u65B9\u6CD5\u6309\u7167\u7F8E\u570B\u5168\u570B\u8B49\u5238\u4EA4\u6613\u5546\u5354\u6703\u6A19\u6E96,\u5047\u8A2D\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929,\u4E26\u5C0D\u6240\u8F38\u5165\u7684\u6708\u672B\u65E5\u671F\u9032\u884C\u5177\u9AD4\u8ABF\u6574\u3002\n\n1\u8868\u793A"\u5BE6\u969B/\u5BE6\u969B"\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u8A08\u7B97\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u548C\u6240\u6D89\u53CA\u7684\u5E74\u4EFD\u4E2D\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97\u3002\u6B64\u65B9\u6CD5\u7528\u65BC\u7F8E\u570B\u9577\u671F\u50B5\u5238,\u4E5F\u662F\u5728\u975E\u8CA1\u7D93\u7528\u9014\u65B9\u9762\u4F7F\u7528\u6700\u591A\u7684\u65B9\u6CD5\u3002\n\n2\u8868\u793A"\u5BE6\u969B/360"\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97, \u4F46\u5047\u5B9A\u6BCF\u5E74\u70BA360\u5929\u3002\n\n3\u8868\u793A"\u5BE6\u969B/365"\u65B9\u6CD5-\u6B64\u65B9\u6CD5\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97,\u4F46\u5047\u5B9A\u6BCF\u5E74\u70BA365\u5929\u3002\n\n4\u8868\u793A"\u6B50\u6D3230 / 360"\u65B9\u6CD5-\u985E\u4F3C\u65BC0,\u6B64\u65B9\u6CD5\u57FA\u65BC\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\u9032\u884C\u8A08\u7B97,\u4F46\u6309\u7167\u6B50\u6D32\u91D1\u878D\u6163\u4F8B\u5C0D\u6708\u672B\u65E5\u671F\u9032\u884C\u8ABF\u6574\u3002'
  24434. }
  24435. ]
  24436. },
  24437. "NOMINAL": {
  24438. "d": "\u57FA\u65BC\u7D66\u5B9A\u7684\u5BE6\u969B\u5229\u7387\u548C\u5E74\u8907\u5229\u671F\u6578,\u8FD4\u56DE\u540D\u7FA9\u5E74\u5229\u7387\u3002",
  24439. "a": "\u57FA\u65BC\u7D66\u5B9A\u7684\u5BE6\u969B\u5229\u7387\u548C\u5E74\u8907\u5229\u671F\u6578,\u8FD4\u56DE\u540D\u7FA9\u5E74\u5229\u7387\u3002",
  24440. "p": [
  24441. {
  24442. "name": "effect_rate",
  24443. "detail": "\u6BCF\u5E74\u7684\u5BE6\u969B\u5229\u7387\u3002"
  24444. },
  24445. {
  24446. "name": "npery",
  24447. "detail": "\u6BCF\u5E74\u7684\u8907\u5229\u671F\u6578\u3002"
  24448. }
  24449. ]
  24450. },
  24451. "XIRR": {
  24452. "d": "\u8FD4\u56DE\u4E00\u7D44\u4E0D\u4E00\u5B9A\u5B9A\u671F\u767C\u751F\u7684\u73FE\u91D1\u6D41\u7684\u5167\u90E8\u6536\u76CA\u7387\u3002",
  24453. "a": "\u8FD4\u56DE\u4E00\u7D44\u4E0D\u4E00\u5B9A\u5B9A\u671F\u767C\u751F\u7684\u73FE\u91D1\u6D41\u7684\u5167\u90E8\u6536\u76CA\u7387\u3002",
  24454. "p": [
  24455. {
  24456. "name": "values",
  24457. "detail": "\u5176\u4E2D\u542B\u6709\u6295\u8CC7\u76F8\u95DC\u6536\u76CA\u6216\u652F\u51FA\u7684\u6578\u7D44\u6216\u7BC4\u570D\u3002\n\n\u73FE\u91D1\u6D41\u6578\u984D\u4E2D\u5FC5\u9808\u81F3\u5C11\u5305\u542B\u4E00\u9805\u8CA0\u7684\u548C\u4E00\u9805\u6B63\u7684\u73FE\u91D1\u6D41\u91D1\u984D\u624D\u80FD\u8A08\u7B97\u56DE\u5831\u7387\u3002"
  24458. },
  24459. {
  24460. "name": "dates",
  24461. "detail": "\u8207\u73FE\u91D1\u6D41\u6578\u984D\u53C3\u6578\u4E2D\u7684\u73FE\u91D1\u6D41\u5C0D\u61C9\u7684\u65E5\u671F\u6578\u7D44\u6216\u7BC4\u570D\u3002"
  24462. },
  24463. {
  24464. "name": "guess",
  24465. "detail": "[\u53EF\u9078 - \u9810\u8A2D\u503C\u70BA0.1] - \u5C0D\u5167\u90E8\u56DE\u5831\u7387\u7684\u4F30\u7B97\u503C\u3002"
  24466. }
  24467. ]
  24468. },
  24469. "MIRR": {
  24470. "d": "\u8FD4\u56DE\u4E00\u7CFB\u5217\u5B9A\u671F\u73FE\u91D1\u6D41\u7684\u4FEE\u6539\u5F8C\u5167\u90E8\u6536\u76CA\u7387\u3002",
  24471. "a": "\u8FD4\u56DE\u4E00\u7CFB\u5217\u5B9A\u671F\u73FE\u91D1\u6D41\u7684\u4FEE\u6539\u5F8C\u5167\u90E8\u6536\u76CA\u7387\u3002",
  24472. "p": [
  24473. {
  24474. "name": "values",
  24475. "detail": "\u5176\u4E2D\u542B\u6709\u6295\u8CC7\u76F8\u95DC\u6536\u76CA\u6216\u652F\u51FA\u7684\u6578\u7D44\u6216\u7BC4\u570D\u3002\n\n\u73FE\u91D1\u6D41\u6578\u984D\u4E2D\u5FC5\u9808\u81F3\u5C11\u5305\u542B\u4E00\u9805\u8CA0\u7684\u548C\u4E00\u9805\u6B63\u7684\u73FE\u91D1\u6D41\u91D1\u984D\u624D\u80FD\u8A08\u7B97\u56DE\u5831\u7387\u3002"
  24476. },
  24477. {
  24478. "name": "finance_rate",
  24479. "detail": "\u73FE\u91D1\u6D41\u4E2D\u4F7F\u7528\u7684\u8CC7\u91D1\u652F\u4ED8\u7684\u5229\u7387\u3002"
  24480. },
  24481. {
  24482. "name": "reinvest_rate",
  24483. "detail": "\u5C07\u73FE\u91D1\u6D41\u518D\u6295\u8CC7\u7684\u6536\u76CA\u7387\u3002"
  24484. }
  24485. ]
  24486. },
  24487. "IRR": {
  24488. "d": "\u8FD4\u56DE\u7531\u503C\u4E2D\u7684\u6578\u4F4D\u8868\u793A\u7684\u4E00\u7CFB\u5217\u73FE\u91D1\u6D41\u7684\u5167\u90E8\u6536\u76CA\u7387\u3002 ",
  24489. "a": "\u8FD4\u56DE\u7531\u503C\u4E2D\u7684\u6578\u4F4D\u8868\u793A\u7684\u4E00\u7CFB\u5217\u73FE\u91D1\u6D41\u7684\u5167\u90E8\u6536\u76CA\u7387\u3002 ",
  24490. "p": [
  24491. {
  24492. "name": "values",
  24493. "detail": "\u5176\u4E2D\u542B\u6709\u6295\u8CC7\u76F8\u95DC\u6536\u76CA\u6216\u652F\u51FA\u7684\u6578\u7D44\u6216\u7BC4\u570D\u3002\n\n\u73FE\u91D1\u6D41\u6578\u984D\u4E2D\u5FC5\u9808\u81F3\u5C11\u5305\u542B\u4E00\u9805\u8CA0\u7684\u548C\u4E00\u9805\u6B63\u7684\u73FE\u91D1\u6D41\u91D1\u984D\u624D\u80FD\u8A08\u7B97\u56DE\u5831\u7387\u3002"
  24494. },
  24495. {
  24496. "name": "guess",
  24497. "detail": "[\u53EF\u9078 - \u9ED8\u8A8D\u70BA0.1] - \u5167\u90E8\u6536\u76CA\u7387\u7684\u4F30\u503C\u3002"
  24498. }
  24499. ]
  24500. },
  24501. "NPV": {
  24502. "d": "\u4F7F\u7528\u8CBC\u73FE\u7387\u548C\u4E00\u7CFB\u5217\u672A\u4F86\u652F\u51FA\uFF08\u8CA0\u503C\uFF09\u548C\u6536\u76CA\uFF08\u6B63\u503C\uFF09\u4F86\u8A08\u7B97\u4E00\u9805\u6295\u8CC7\u7684\u6DE8\u73FE\u503C\u3002",
  24503. "a": "\u4F7F\u7528\u8CBC\u73FE\u7387\u548C\u4E00\u7CFB\u5217\u672A\u4F86\u652F\u51FA\uFF08\u8CA0\u503C\uFF09\u548C\u6536\u76CA\uFF08\u6B63\u503C\uFF09\u4F86\u8A08\u7B97\u4E00\u9805\u6295\u8CC7\u7684\u6DE8\u73FE\u503C\u3002",
  24504. "p": [
  24505. {
  24506. "name": "rate",
  24507. "detail": "\u67D0\u4E00\u671F\u9593\u7684\u8CBC\u73FE\u7387\u3002"
  24508. },
  24509. {
  24510. "name": "value1",
  24511. "detail": "\u7B2C\u4E00\u7B46\u652F\u51FA\uFF08\u8CA0\u503C\uFF09\u548C\u6536\u76CA\uFF08\u6B63\u503C\uFF09\u3002"
  24512. },
  24513. {
  24514. "name": "value2, ...",
  24515. "detail": "[\u53EF\u9078] - \u5176\u4ED6\u652F\u51FA\uFF08\u8CA0\u503C\uFF09\u548C\u6536\u76CA\uFF08\u6B63\u503C\uFF09\u3002"
  24516. }
  24517. ]
  24518. },
  24519. "XNPV": {
  24520. "d": "\u8FD4\u56DE\u4E00\u7D44\u73FE\u91D1\u6D41\u7684\u6DE8\u73FE\u503C,\u9019\u4E9B\u73FE\u91D1\u6D41\u4E0D\u4E00\u5B9A\u5B9A\u671F\u767C\u751F\u3002",
  24521. "a": "\u8FD4\u56DE\u4E00\u7D44\u73FE\u91D1\u6D41\u7684\u6DE8\u73FE\u503C,\u9019\u4E9B\u73FE\u91D1\u6D41\u4E0D\u4E00\u5B9A\u5B9A\u671F\u767C\u751F\u3002",
  24522. "p": [
  24523. {
  24524. "name": "rate",
  24525. "detail": "\u61C9\u7528\u65BC\u73FE\u91D1\u6D41\u7684\u8CBC\u73FE\u7387\u3002"
  24526. },
  24527. {
  24528. "name": "values",
  24529. "detail": "\u8207dates\u4E2D\u7684\u652F\u4ED8\u6642\u9593\u76F8\u5C0D\u61C9\u7684\u4E00\u7CFB\u5217\u73FE\u91D1\u6D41\u3002"
  24530. },
  24531. {
  24532. "name": "dates",
  24533. "detail": "\u8207\u73FE\u91D1\u6D41\u652F\u4ED8\u76F8\u5C0D\u61C9\u7684\u652F\u4ED8\u65E5\u671F\u9336\u3002"
  24534. }
  24535. ]
  24536. },
  24537. "CUMIPMT": {
  24538. "d": "\u57FA\u65BC\u7B49\u984D\u5206\u671F\u4ED8\u6B3E\u548C\u56FA\u5B9A\u5229\u7387,\u8A08\u7B97\u6295\u8CC7\u5728\u4E00\u7CFB\u5217\u4ED8\u6B3E\u671F\u5167\u7684\u7D2F\u8A08\u5229\u606F\u3002",
  24539. "a": "\u57FA\u65BC\u7B49\u984D\u5206\u671F\u4ED8\u6B3E\u548C\u56FA\u5B9A\u5229\u7387,\u8A08\u7B97\u6295\u8CC7\u5728\u4E00\u7CFB\u5217\u4ED8\u6B3E\u671F\u5167\u7684\u7D2F\u8A08\u5229\u606F\u3002",
  24540. "p": [
  24541. {
  24542. "name": "rate",
  24543. "detail": "\u5229\u606F\u7387\u3002"
  24544. },
  24545. {
  24546. "name": "nper",
  24547. "detail": "\u7E3D\u4ED8\u6B3E\u671F\u6578\u3002"
  24548. },
  24549. {
  24550. "name": "pv",
  24551. "detail": "\u73FE\u503C\u3002"
  24552. },
  24553. {
  24554. "name": "start_period",
  24555. "detail": "\u958B\u59CB\u7D2F\u8A08\u8A08\u7B97\u7684\u4ED8\u6B3E\u671F\u5E8F\u865F\u3002\n\n\u9996\u671F\u5FC5\u9808\u5927\u65BC\u7B49\u65BC1\u3002"
  24556. },
  24557. {
  24558. "name": "end_period",
  24559. "detail": "\u7D50\u675F\u7D2F\u8A08\u8A08\u7B97\u7684\u4ED8\u6B3E\u671F\u5E8F\u865F\u3002\n\n\u672B\u671F\u5FC5\u9808\u5927\u65BC\u9996\u671F\u3002"
  24560. },
  24561. {
  24562. "name": "type",
  24563. "detail": "\u6307\u5B9A\u5404\u671F\u7684\u4ED8\u6B3E\u6642\u9593\u662F\u5728\u671F\u521D\u9084\u662F\u671F\u672B\u3002\n\n0\u8868\u793A\u671F\u672B\uFF1B\n\n1\u8868\u793A\u671F\u521D\u3002"
  24564. }
  24565. ]
  24566. },
  24567. "PMT": {
  24568. "d": "\u7528\u65BC\u6839\u64DA\u56FA\u5B9A\u4ED8\u6B3E\u984D\u548C\u56FA\u5B9A\u5229\u7387\u8A08\u7B97\u8CB8\u6B3E\u7684\u4ED8\u6B3E\u984D\u3002",
  24569. "a": "\u7528\u65BC\u6839\u64DA\u56FA\u5B9A\u4ED8\u6B3E\u984D\u548C\u56FA\u5B9A\u5229\u7387\u8A08\u7B97\u8CB8\u6B3E\u7684\u4ED8\u6B3E\u984D\u3002",
  24570. "p": [
  24571. {
  24572. "name": "rate",
  24573. "detail": "\u8CB8\u6B3E\u5229\u7387\u3002"
  24574. },
  24575. {
  24576. "name": "nper",
  24577. "detail": "\u8A72\u9805\u8CB8\u6B3E\u7684\u4ED8\u6B3E\u7E3D\u6578\u3002"
  24578. },
  24579. {
  24580. "name": "pv",
  24581. "detail": "\u73FE\u503C,\u6216\u4E00\u7CFB\u5217\u672A\u4F86\u4ED8\u6B3E\u984D\u73FE\u5728\u6240\u503C\u7684\u7E3D\u984D,\u4E5F\u53EB\u672C\u91D1\u3002"
  24582. },
  24583. {
  24584. "name": "fv",
  24585. "detail": "[\u53EF\u9078 - \u9810\u8A2D\u503C\u70BA0] - \u672A\u4F86\u503C,\u6216\u5728\u6700\u5F8C\u4E00\u6B21\u4ED8\u6B3E\u5F8C\u5E0C\u671B\u5F97\u5230\u7684\u73FE\u91D1\u9918\u984D\u3002"
  24586. },
  24587. {
  24588. "name": "type",
  24589. "detail": "[\u53EF\u9078 - \u9810\u8A2D\u503C\u70BA0] - \u6307\u5B9A\u5404\u671F\u7684\u4ED8\u6B3E\u6642\u9593\u662F\u5728\u671F\u521D\u9084\u662F\u671F\u672B\u3002\n\n0\u8868\u793A\u671F\u672B\uFF1B\n\n1\u8868\u793A\u671F\u521D\u3002"
  24590. }
  24591. ]
  24592. },
  24593. "IPMT": {
  24594. "d": "\u57FA\u65BC\u56FA\u5B9A\u5229\u7387\u53CA\u7B49\u984D\u5206\u671F\u4ED8\u6B3E\u7BA1\u9053,\u8FD4\u56DE\u7D66\u5B9A\u671F\u6578\u5167\u5C0D\u6295\u8CC7\u7684\u5229\u606F\u511F\u9084\u984D\u3002",
  24595. "a": "\u57FA\u65BC\u56FA\u5B9A\u5229\u7387\u53CA\u7B49\u984D\u5206\u671F\u4ED8\u6B3E\u7BA1\u9053,\u8FD4\u56DE\u7D66\u5B9A\u671F\u6578\u5167\u5C0D\u6295\u8CC7\u7684\u5229\u606F\u511F\u9084\u984D\u3002",
  24596. "p": [
  24597. {
  24598. "name": "rate",
  24599. "detail": "\u5404\u671F\u5229\u7387\u3002"
  24600. },
  24601. {
  24602. "name": "per",
  24603. "detail": "\u7528\u65BC\u8A08\u7B97\u5176\u5229\u606F\u6578\u984D\u7684\u671F\u6578,\u5FC5\u9808\u57281\u5230nper\u4E4B\u9593\u3002"
  24604. },
  24605. {
  24606. "name": "nper",
  24607. "detail": "\u5E74\u91D1\u7684\u4ED8\u6B3E\u7E3D\u671F\u6578\u3002"
  24608. },
  24609. {
  24610. "name": "pv",
  24611. "detail": "\u73FE\u503C,\u6216\u4E00\u7CFB\u5217\u672A\u4F86\u4ED8\u6B3E\u7684\u7576\u524D\u503C\u7684\u7D2F\u7A4D\u548C\u3002"
  24612. },
  24613. {
  24614. "name": "fv",
  24615. "detail": "[\u53EF\u9078 - \u9810\u8A2D\u503C\u70BA0] - \u672A\u4F86\u503C,\u6216\u5728\u6700\u5F8C\u4E00\u6B21\u4ED8\u6B3E\u5F8C\u5E0C\u671B\u5F97\u5230\u7684\u73FE\u91D1\u9918\u984D\u3002"
  24616. },
  24617. {
  24618. "name": "type",
  24619. "detail": "[\u53EF\u9078 - \u9810\u8A2D\u503C\u70BA0] - \u6307\u5B9A\u5404\u671F\u7684\u4ED8\u6B3E\u6642\u9593\u662F\u5728\u671F\u521D\u9084\u662F\u671F\u672B\u3002\n\n0\u8868\u793A\u671F\u672B\uFF1B\n\n1\u8868\u793A\u671F\u521D\u3002"
  24620. }
  24621. ]
  24622. },
  24623. "PPMT": {
  24624. "d": "\u8FD4\u56DE\u6839\u64DA\u5B9A\u671F\u56FA\u5B9A\u4ED8\u6B3E\u548C\u56FA\u5B9A\u5229\u7387\u800C\u5B9A\u7684\u6295\u8CC7\u5728\u5DF2\u77E5\u671F\u9593\u5167\u7684\u672C\u91D1\u511F\u4ED8\u984D\u3002",
  24625. "a": "\u8FD4\u56DE\u6839\u64DA\u5B9A\u671F\u56FA\u5B9A\u4ED8\u6B3E\u548C\u56FA\u5B9A\u5229\u7387\u800C\u5B9A\u7684\u6295\u8CC7\u5728\u5DF2\u77E5\u671F\u9593\u5167\u7684\u672C\u91D1\u511F\u4ED8\u984D\u3002",
  24626. "p": [
  24627. {
  24628. "name": "rate",
  24629. "detail": "\u5404\u671F\u5229\u7387\u3002"
  24630. },
  24631. {
  24632. "name": "per",
  24633. "detail": "\u6307\u5B9A\u671F\u6578,\u8A72\u503C\u5FC5\u9808\u5728 1 \u5230 nper \u7BC4\u570D\u5167\u3002"
  24634. },
  24635. {
  24636. "name": "nper",
  24637. "detail": "\u5E74\u91D1\u7684\u4ED8\u6B3E\u7E3D\u671F\u6578\u3002"
  24638. },
  24639. {
  24640. "name": "pv",
  24641. "detail": "\u73FE\u503C\u5373\u4E00\u7CFB\u5217\u672A\u4F86\u4ED8\u6B3E\u7576\u524D\u503C\u7684\u7E3D\u548C\u3002"
  24642. },
  24643. {
  24644. "name": "fv",
  24645. "detail": "[\u53EF\u9078 - \u9810\u8A2D\u503C\u70BA0] - \u672A\u4F86\u503C,\u6216\u5728\u6700\u5F8C\u4E00\u6B21\u4ED8\u6B3E\u5F8C\u5E0C\u671B\u5F97\u5230\u7684\u73FE\u91D1\u9918\u984D\u3002"
  24646. },
  24647. {
  24648. "name": "type",
  24649. "detail": "[\u53EF\u9078 - \u9810\u8A2D\u503C\u70BA0] - \u6307\u5B9A\u5404\u671F\u7684\u4ED8\u6B3E\u6642\u9593\u662F\u5728\u671F\u521D\u9084\u662F\u671F\u672B\u3002\n\n0\u8868\u793A\u671F\u672B\uFF1B\n\n1\u8868\u793A\u671F\u521D\u3002"
  24650. }
  24651. ]
  24652. },
  24653. "INTRATE": {
  24654. "d": "\u8FD4\u56DE\u5B8C\u5168\u6295\u8CC7\u578B\u8B49\u5238\u7684\u5229\u7387\u3002",
  24655. "a": "\u8FD4\u56DE\u5B8C\u5168\u6295\u8CC7\u578B\u8B49\u5238\u7684\u5229\u7387\u3002",
  24656. "p": [
  24657. {
  24658. "name": "settlement",
  24659. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u7D50\u7B97\u65E5\u3002\u6709\u50F9\u8B49\u5238\u7D50\u7B97\u65E5\u662F\u5728\u767C\u884C\u65E5\u4E4B\u5F8C,\u6709\u50F9\u8B49\u5238\u8CE3\u7D66\u8CFC\u8CB7\u8005\u7684\u65E5\u671F\u3002"
  24660. },
  24661. {
  24662. "name": "maturity",
  24663. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u5230\u671F\u65E5\u3002\u5230\u671F\u65E5\u662F\u6709\u50F9\u8B49\u5238\u6709\u6548\u671F\u622A\u6B62\u6642\u7684\u65E5\u671F\u3002"
  24664. },
  24665. {
  24666. "name": "investment",
  24667. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u6295\u8CC7\u984D\u3002"
  24668. },
  24669. {
  24670. "name": "redemption",
  24671. "detail": "\u6709\u50F9\u8B49\u5238\u5230\u671F\u6642\u7684\u514C\u63DB\u503C\u3002"
  24672. },
  24673. {
  24674. "name": "basis",
  24675. "detail": '[\u53EF\u9078 - \u9ED8\u8A8D\u70BA0] - \u8A13\u793A\u8981\u4F7F\u7528\u54EA\u7A2E\u5929\u6578\u8A08\u7B97\u65B9\u6CD5\u3002\n\n0\u8868\u793A"\u7F8E\u570B\uFF08NASD\uFF0930/360"\u65B9\u6CD5-\u6B64\u65B9\u6CD5\u6309\u7167\u7F8E\u570B\u5168\u570B\u8B49\u5238\u4EA4\u6613\u5546\u5354\u6703\u6A19\u6E96,\u5047\u8A2D\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929,\u4E26\u5C0D\u6240\u8F38\u5165\u7684\u6708\u672B\u65E5\u671F\u9032\u884C\u5177\u9AD4\u8ABF\u6574\u3002\n\n1\u8868\u793A"\u5BE6\u969B/\u5BE6\u969B"\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u8A08\u7B97\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u548C\u6240\u6D89\u53CA\u7684\u5E74\u4EFD\u4E2D\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97\u3002\u6B64\u65B9\u6CD5\u7528\u65BC\u7F8E\u570B\u9577\u671F\u50B5\u5238,\u4E5F\u662F\u5728\u975E\u8CA1\u7D93\u7528\u9014\u65B9\u9762\u4F7F\u7528\u6700\u591A\u7684\u65B9\u6CD5\u3002\n\n2\u8868\u793A"\u5BE6\u969B/360"\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97, \u4F46\u5047\u5B9A\u6BCF\u5E74\u70BA360\u5929\u3002\n\n3\u8868\u793A"\u5BE6\u969B/365"\u65B9\u6CD5-\u6B64\u65B9\u6CD5\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97,\u4F46\u5047\u5B9A\u6BCF\u5E74\u70BA365\u5929\u3002\n\n4\u8868\u793A"\u6B50\u6D3230 / 360"\u65B9\u6CD5-\u985E\u4F3C\u65BC0,\u6B64\u65B9\u6CD5\u57FA\u65BC\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\u9032\u884C\u8A08\u7B97,\u4F46\u6309\u7167\u6B50\u6D32\u91D1\u878D\u6163\u4F8B\u5C0D\u6708\u672B\u65E5\u671F\u9032\u884C\u8ABF\u6574\u3002'
  24676. }
  24677. ]
  24678. },
  24679. "PRICE": {
  24680. "d": "\u8FD4\u56DE\u5B9A\u671F\u4ED8\u606F\u7684\u9762\u503C\uFFE5100\u7684\u6709\u50F9\u8B49\u5238\u7684\u50F9\u683C\u3002",
  24681. "a": "\u8FD4\u56DE\u5B9A\u671F\u4ED8\u606F\u7684\u9762\u503C\uFFE5100\u7684\u6709\u50F9\u8B49\u5238\u7684\u50F9\u683C\u3002",
  24682. "p": [
  24683. {
  24684. "name": "settlement",
  24685. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u7D50\u7B97\u65E5\u3002\u6709\u50F9\u8B49\u5238\u7D50\u7B97\u65E5\u662F\u5728\u767C\u884C\u65E5\u4E4B\u5F8C,\u6709\u50F9\u8B49\u5238\u8CE3\u7D66\u8CFC\u8CB7\u8005\u7684\u65E5\u671F\u3002"
  24686. },
  24687. {
  24688. "name": "maturity",
  24689. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u5230\u671F\u65E5\u3002\u5230\u671F\u65E5\u662F\u6709\u50F9\u8B49\u5238\u6709\u6548\u671F\u622A\u6B62\u6642\u7684\u65E5\u671F\u3002"
  24690. },
  24691. {
  24692. "name": "rate",
  24693. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u5E74\u606F\u7968\u5229\u7387\u3002"
  24694. },
  24695. {
  24696. "name": "yld",
  24697. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u5E74\u6536\u76CA\u7387\u3002"
  24698. },
  24699. {
  24700. "name": "redemption",
  24701. "detail": "\u9762\u503C\uFFE5100\u7684\u6709\u50F9\u8B49\u5238\u7684\u6E05\u511F\u50F9\u503C\u3002"
  24702. },
  24703. {
  24704. "name": "frequency",
  24705. "detail": "\u5E74\u4ED8\u606F\u6B21\u6578\u3002\n\n\u5982\u679C\u6309\u5E74\u652F\u4ED8,frequency = 1\uFF1B\n\n\u6309\u534A\u5E74\u671F\u652F\u4ED8,frequency = 2\uFF1B\n\n\u6309\u5B63\u652F\u4ED8,frequency = 4\u3002"
  24706. },
  24707. {
  24708. "name": "basis",
  24709. "detail": '[\u53EF\u9078 - \u9ED8\u8A8D\u70BA0] - \u8A13\u793A\u8981\u4F7F\u7528\u54EA\u7A2E\u5929\u6578\u8A08\u7B97\u65B9\u6CD5\u3002\n\n0\u8868\u793A"\u7F8E\u570B\uFF08NASD\uFF0930/360"\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u6309\u7167\u7F8E\u570B\u5168\u570B\u8B49\u5238\u4EA4\u6613\u5546\u5354\u6703\u6A19\u6E96,\u5047\u8A2D\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929,\u4E26\u5C0D\u6240\u8F38\u5165\u7684\u6708\u672B\u65E5\u671F\u9032\u884C\u5177\u9AD4\u8ABF\u6574\u3002\n\n1\u8868\u793A"\u5BE6\u969B/\u5BE6\u969B"\u65B9\u6CD5-\u6B64\u65B9\u6CD5\u8A08\u7B97\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u548C\u6240\u6D89\u53CA\u7684\u5E74\u4EFD\u4E2D\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97\u3002\u6B64\u65B9\u6CD5\u7528\u65BC\u7F8E\u570B\u9577\u671F\u50B5\u5238,\u4E5F\u662F\u5728\u975E\u8CA1\u7D93\u7528\u9014\u65B9\u9762\u4F7F\u7528\u6700\u591A\u7684\u65B9\u6CD5\u3002\n\n2\u8868\u793A"\u5BE6\u969B/360"\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97, \u4F46\u5047\u5B9A\u6BCF\u5E74\u70BA360\u5929\u3002\n\n3\u8868\u793A"\u5BE6\u969B/365"\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97,\u4F46\u5047\u5B9A\u6BCF\u5E74\u70BA365\u5929\u3002\n\n4\u8868\u793A"\u6B50\u6D3230 / 360"\u65B9\u6CD5-\u985E\u4F3C\u65BC0,\u6B64\u65B9\u6CD5\u57FA\u65BC\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\u9032\u884C\u8A08\u7B97,\u4F46\u6309\u7167\u6B50\u6D32\u91D1\u878D\u6163\u4F8B\u5C0D\u6708\u672B\u65E5\u671F\u9032\u884C\u8ABF\u6574\u3002'
  24710. }
  24711. ]
  24712. },
  24713. "PRICEDISC": {
  24714. "d": "\u8FD4\u56DE\u6298\u50F9\u767C\u884C\u7684\u9762\u503C\uFFE5100\u7684\u6709\u50F9\u8B49\u5238\u7684\u50F9\u683C\u3002",
  24715. "a": "\u8FD4\u56DE\u6298\u50F9\u767C\u884C\u7684\u9762\u503C\uFFE5100\u7684\u6709\u50F9\u8B49\u5238\u7684\u50F9\u683C\u3002",
  24716. "p": [
  24717. {
  24718. "name": "settlement",
  24719. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u7D50\u7B97\u65E5\u3002\u6709\u50F9\u8B49\u5238\u7D50\u7B97\u65E5\u662F\u5728\u767C\u884C\u65E5\u4E4B\u5F8C,\u6709\u50F9\u8B49\u5238\u8CE3\u7D66\u8CFC\u8CB7\u8005\u7684\u65E5\u671F\u3002"
  24720. },
  24721. {
  24722. "name": "maturity",
  24723. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u5230\u671F\u65E5\u3002\u5230\u671F\u65E5\u662F\u6709\u50F9\u8B49\u5238\u6709\u6548\u671F\u622A\u6B62\u6642\u7684\u65E5\u671F\u3002"
  24724. },
  24725. {
  24726. "name": "discount",
  24727. "detail": "\u6709\u4EF7\u8BC1\u5238\u7684\u8D34\u73B0\u7387\u3002"
  24728. },
  24729. {
  24730. "name": "redemption",
  24731. "detail": "\u9762\u503C\uFFE5100\u7684\u6709\u50F9\u8B49\u5238\u7684\u6E05\u511F\u50F9\u503C\u3002"
  24732. },
  24733. {
  24734. "name": "basis",
  24735. "detail": '[\u53EF\u9078 - \u9ED8\u8A8D\u70BA0] - \u8A13\u793A\u8981\u4F7F\u7528\u54EA\u7A2E\u5929\u6578\u8A08\u7B97\u65B9\u6CD5\u3002\n\n0\u8868\u793A"\u7F8E\u570B\uFF08NASD\uFF0930/360"\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u6309\u7167\u7F8E\u570B\u5168\u570B\u8B49\u5238\u4EA4\u6613\u5546\u5354\u6703\u6A19\u6E96,\u5047\u8A2D\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929,\u4E26\u5C0D\u6240\u8F38\u5165\u7684\u6708\u672B\u65E5\u671F\u9032\u884C\u5177\u9AD4\u8ABF\u6574\u3002\n\n1\u8868\u793A"\u5BE6\u969B/\u5BE6\u969B"\u65B9\u6CD5-\u6B64\u65B9\u6CD5\u8A08\u7B97\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u548C\u6240\u6D89\u53CA\u7684\u5E74\u4EFD\u4E2D\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97\u3002\u6B64\u65B9\u6CD5\u7528\u65BC\u7F8E\u570B\u9577\u671F\u50B5\u5238,\u4E5F\u662F\u5728\u975E\u8CA1\u7D93\u7528\u9014\u65B9\u9762\u4F7F\u7528\u6700\u591A\u7684\u65B9\u6CD5\u3002\n\n2\u8868\u793A"\u5BE6\u969B/360"\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97, \u4F46\u5047\u5B9A\u6BCF\u5E74\u70BA360\u5929\u3002\n\n3\u8868\u793A"\u5BE6\u969B/365"\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97,\u4F46\u5047\u5B9A\u6BCF\u5E74\u70BA365\u5929\u3002\n\n4\u8868\u793A"\u6B50\u6D3230 / 360"\u65B9\u6CD5-\u985E\u4F3C\u65BC0,\u6B64\u65B9\u6CD5\u57FA\u65BC\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\u9032\u884C\u8A08\u7B97,\u4F46\u6309\u7167\u6B50\u6D32\u91D1\u878D\u6163\u4F8B\u5C0D\u6708\u672B\u65E5\u671F\u9032\u884C\u8ABF\u6574\u3002'
  24736. }
  24737. ]
  24738. },
  24739. "PRICEMAT": {
  24740. "d": "\u8FD4\u56DE\u5230\u671F\u4ED8\u606F\u7684\u9762\u503C\uFFE5100\u7684\u6709\u50F9\u8B49\u5238\u7684\u50F9\u683C\u3002",
  24741. "a": "\u8FD4\u56DE\u5230\u671F\u4ED8\u606F\u7684\u9762\u503C\uFFE5100\u7684\u6709\u50F9\u8B49\u5238\u7684\u50F9\u683C\u3002",
  24742. "p": [
  24743. {
  24744. "name": "settlement",
  24745. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u7D50\u7B97\u65E5\u3002\u6709\u50F9\u8B49\u5238\u7D50\u7B97\u65E5\u662F\u5728\u767C\u884C\u65E5\u4E4B\u5F8C,\u6709\u50F9\u8B49\u5238\u8CE3\u7D66\u8CFC\u8CB7\u8005\u7684\u65E5\u671F\u3002"
  24746. },
  24747. {
  24748. "name": "maturity",
  24749. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u5230\u671F\u65E5\u3002\u5230\u671F\u65E5\u662F\u6709\u50F9\u8B49\u5238\u6709\u6548\u671F\u622A\u6B62\u6642\u7684\u65E5\u671F\u3002"
  24750. },
  24751. {
  24752. "name": "issue",
  24753. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u767C\u884C\u65E5\u3002"
  24754. },
  24755. {
  24756. "name": "rate",
  24757. "detail": "\u6709\u50F9\u8B49\u5238\u5728\u767C\u884C\u65E5\u7684\u5229\u7387\u3002"
  24758. },
  24759. {
  24760. "name": "yld",
  24761. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u5E74\u6536\u76CA\u7387\u3002"
  24762. },
  24763. {
  24764. "name": "basis",
  24765. "detail": '[\u53EF\u9078 - \u9ED8\u8A8D\u70BA0] - \u8A13\u793A\u8981\u4F7F\u7528\u54EA\u7A2E\u5929\u6578\u8A08\u7B97\u65B9\u6CD5\u3002\n\n0\u8868\u793A"\u7F8E\u570B\uFF08NASD\uFF0930/360"\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u6309\u7167\u7F8E\u570B\u5168\u570B\u8B49\u5238\u4EA4\u6613\u5546\u5354\u6703\u6A19\u6E96,\u5047\u8A2D\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929,\u4E26\u5C0D\u6240\u8F38\u5165\u7684\u6708\u672B\u65E5\u671F\u9032\u884C\u5177\u9AD4\u8ABF\u6574\u3002\n\n1\u8868\u793A"\u5BE6\u969B/\u5BE6\u969B"\u65B9\u6CD5-\u6B64\u65B9\u6CD5\u8A08\u7B97\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u548C\u6240\u6D89\u53CA\u7684\u5E74\u4EFD\u4E2D\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97\u3002\u6B64\u65B9\u6CD5\u7528\u65BC\u7F8E\u570B\u9577\u671F\u50B5\u5238,\u4E5F\u662F\u5728\u975E\u8CA1\u7D93\u7528\u9014\u65B9\u9762\u4F7F\u7528\u6700\u591A\u7684\u65B9\u6CD5\u3002\n\n2\u8868\u793A"\u5BE6\u969B/360"\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97, \u4F46\u5047\u5B9A\u6BCF\u5E74\u70BA360\u5929\u3002\n\n3\u8868\u793A"\u5BE6\u969B/365"\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97,\u4F46\u5047\u5B9A\u6BCF\u5E74\u70BA365\u5929\u3002\n\n4\u8868\u793A"\u6B50\u6D3230 / 360"\u65B9\u6CD5-\u985E\u4F3C\u65BC0,\u6B64\u65B9\u6CD5\u57FA\u65BC\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\u9032\u884C\u8A08\u7B97,\u4F46\u6309\u7167\u6B50\u6D32\u91D1\u878D\u6163\u4F8B\u5C0D\u6708\u672B\u65E5\u671F\u9032\u884C\u8ABF\u6574\u3002'
  24766. }
  24767. ]
  24768. },
  24769. "RECEIVED": {
  24770. "d": "\u8FD4\u56DE\u4E00\u6B21\u6027\u4ED8\u606F\u7684\u6709\u50F9\u8B49\u5238\u5230\u671F\u6536\u56DE\u7684\u91D1\u984D\u3002",
  24771. "a": "\u8FD4\u56DE\u4E00\u6B21\u6027\u4ED8\u606F\u7684\u6709\u50F9\u8B49\u5238\u5230\u671F\u6536\u56DE\u7684\u91D1\u984D\u3002",
  24772. "p": [
  24773. {
  24774. "name": "settlement",
  24775. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u7D50\u7B97\u65E5\u3002\u6709\u50F9\u8B49\u5238\u7D50\u7B97\u65E5\u662F\u5728\u767C\u884C\u65E5\u4E4B\u5F8C,\u6709\u50F9\u8B49\u5238\u8CE3\u7D66\u8CFC\u8CB7\u8005\u7684\u65E5\u671F\u3002"
  24776. },
  24777. {
  24778. "name": "maturity",
  24779. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u5230\u671F\u65E5\u3002\u5230\u671F\u65E5\u662F\u6709\u50F9\u8B49\u5238\u6709\u6548\u671F\u622A\u6B62\u6642\u7684\u65E5\u671F\u3002"
  24780. },
  24781. {
  24782. "name": "investment",
  24783. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u6295\u8CC7\u984D\u3002"
  24784. },
  24785. {
  24786. "name": "discount",
  24787. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u8CBC\u73FE\u7387\u3002"
  24788. },
  24789. {
  24790. "name": "basis",
  24791. "detail": '[\u53EF\u9078 - \u9ED8\u8A8D\u70BA0] - \u8A13\u793A\u8981\u4F7F\u7528\u54EA\u7A2E\u5929\u6578\u8A08\u7B97\u65B9\u6CD5\u3002\n\n0\u8868\u793A"\u7F8E\u570B\uFF08NASD\uFF0930/360"\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u6309\u7167\u7F8E\u570B\u5168\u570B\u8B49\u5238\u4EA4\u6613\u5546\u5354\u6703\u6A19\u6E96,\u5047\u8A2D\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929,\u4E26\u5C0D\u6240\u8F38\u5165\u7684\u6708\u672B\u65E5\u671F\u9032\u884C\u5177\u9AD4\u8ABF\u6574\u3002\n\n1\u8868\u793A"\u5BE6\u969B/\u5BE6\u969B"\u65B9\u6CD5-\u6B64\u65B9\u6CD5\u8A08\u7B97\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u548C\u6240\u6D89\u53CA\u7684\u5E74\u4EFD\u4E2D\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97\u3002\u6B64\u65B9\u6CD5\u7528\u65BC\u7F8E\u570B\u9577\u671F\u50B5\u5238,\u4E5F\u662F\u5728\u975E\u8CA1\u7D93\u7528\u9014\u65B9\u9762\u4F7F\u7528\u6700\u591A\u7684\u65B9\u6CD5\u3002\n\n2\u8868\u793A"\u5BE6\u969B/360"\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97, \u4F46\u5047\u5B9A\u6BCF\u5E74\u70BA360\u5929\u3002\n\n3\u8868\u793A"\u5BE6\u969B/365"\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97,\u4F46\u5047\u5B9A\u6BCF\u5E74\u70BA365\u5929\u3002\n\n4\u8868\u793A"\u6B50\u6D3230 / 360"\u65B9\u6CD5-\u985E\u4F3C\u65BC0,\u6B64\u65B9\u6CD5\u57FA\u65BC\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\u9032\u884C\u8A08\u7B97,\u4F46\u6309\u7167\u6B50\u6D32\u91D1\u878D\u6163\u4F8B\u5C0D\u6708\u672B\u65E5\u671F\u9032\u884C\u8ABF\u6574\u3002'
  24792. }
  24793. ]
  24794. },
  24795. "DISC": {
  24796. "d": "\u8FD4\u56DE\u6709\u50F9\u8B49\u5238\u7684\u8CBC\u73FE\u7387\u3002",
  24797. "a": "\u8FD4\u56DE\u6709\u50F9\u8B49\u5238\u7684\u8CBC\u73FE\u7387\u3002",
  24798. "p": [
  24799. {
  24800. "name": "settlement",
  24801. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u7D50\u7B97\u65E5\u3002\u6709\u50F9\u8B49\u5238\u7D50\u7B97\u65E5\u662F\u5728\u767C\u884C\u65E5\u4E4B\u5F8C,\u6709\u50F9\u8B49\u5238\u8CE3\u7D66\u8CFC\u8CB7\u8005\u7684\u65E5\u671F\u3002"
  24802. },
  24803. {
  24804. "name": "maturity",
  24805. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u5230\u671F\u65E5\u3002\u5230\u671F\u65E5\u662F\u6709\u50F9\u8B49\u5238\u6709\u6548\u671F\u622A\u6B62\u6642\u7684\u65E5\u671F\u3002"
  24806. },
  24807. {
  24808. "name": "pr",
  24809. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u50F9\u683C\uFF08\u6309\u9762\u503C\u70BA\uFFE5100\u8A08\u7B97\uFF09\u3002"
  24810. },
  24811. {
  24812. "name": "redemption",
  24813. "detail": "\u9762\u503C\uFFE5100\u7684\u6709\u50F9\u8B49\u5238\u7684\u6E05\u511F\u50F9\u503C\u3002"
  24814. },
  24815. {
  24816. "name": "basis",
  24817. "detail": '[\u53EF\u9078 - \u9ED8\u8A8D\u70BA0] - \u8A13\u793A\u8981\u4F7F\u7528\u54EA\u7A2E\u5929\u6578\u8A08\u7B97\u65B9\u6CD5\u3002\n\n0\u8868\u793A"\u7F8E\u570B\uFF08NASD\uFF0930/360"\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u6309\u7167\u7F8E\u570B\u5168\u570B\u8B49\u5238\u4EA4\u6613\u5546\u5354\u6703\u6A19\u6E96,\u5047\u8A2D\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929,\u4E26\u5C0D\u6240\u8F38\u5165\u7684\u6708\u672B\u65E5\u671F\u9032\u884C\u5177\u9AD4\u8ABF\u6574\u3002\n\n1\u8868\u793A"\u5BE6\u969B/\u5BE6\u969B"\u65B9\u6CD5-\u6B64\u65B9\u6CD5\u8A08\u7B97\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u548C\u6240\u6D89\u53CA\u7684\u5E74\u4EFD\u4E2D\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97\u3002\u6B64\u65B9\u6CD5\u7528\u65BC\u7F8E\u570B\u9577\u671F\u50B5\u5238,\u4E5F\u662F\u5728\u975E\u8CA1\u7D93\u7528\u9014\u65B9\u9762\u4F7F\u7528\u6700\u591A\u7684\u65B9\u6CD5\u3002\n\n2\u8868\u793A"\u5BE6\u969B/360"\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97, \u4F46\u5047\u5B9A\u6BCF\u5E74\u70BA360\u5929\u3002\n\n3\u8868\u793A"\u5BE6\u969B/365"\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97,\u4F46\u5047\u5B9A\u6BCF\u5E74\u70BA365\u5929\u3002\n\n4\u8868\u793A"\u6B50\u6D3230 / 360"\u65B9\u6CD5-\u985E\u4F3C\u65BC0,\u6B64\u65B9\u6CD5\u57FA\u65BC\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\u9032\u884C\u8A08\u7B97,\u4F46\u6309\u7167\u6B50\u6D32\u91D1\u878D\u6163\u4F8B\u5C0D\u6708\u672B\u65E5\u671F\u9032\u884C\u8ABF\u6574\u3002'
  24818. }
  24819. ]
  24820. },
  24821. "NPER": {
  24822. "d": "\u57FA\u65BC\u56FA\u5B9A\u5229\u7387\u53CA\u7B49\u984D\u5206\u671F\u4ED8\u6B3E\u7BA1\u9053,\u8FD4\u56DE\u67D0\u9805\u6295\u8CC7\u7684\u7E3D\u671F\u6578\u3002",
  24823. "a": "\u57FA\u65BC\u56FA\u5B9A\u5229\u7387\u53CA\u7B49\u984D\u5206\u671F\u4ED8\u6B3E\u7BA1\u9053,\u8FD4\u56DE\u67D0\u9805\u6295\u8CC7\u7684\u7E3D\u671F\u6578\u3002",
  24824. "p": [
  24825. {
  24826. "name": "rate",
  24827. "detail": "\u5404\u671F\u5229\u7387\u3002"
  24828. },
  24829. {
  24830. "name": "pmt",
  24831. "detail": "\u5404\u671F\u6240\u61C9\u652F\u4ED8\u7684\u91D1\u984D,\u5728\u6574\u500B\u5E74\u91D1\u671F\u9593\u4FDD\u6301\u4E0D\u8B8A\u3002"
  24832. },
  24833. {
  24834. "name": "pv",
  24835. "detail": "\u73FE\u503C,\u6216\u4E00\u7CFB\u5217\u672A\u4F86\u4ED8\u6B3E\u7684\u7576\u524D\u503C\u7684\u7D2F\u7A4D\u548C\u3002"
  24836. },
  24837. {
  24838. "name": "fv",
  24839. "detail": "[\u53EF\u9078 - \u9810\u8A2D\u503C\u70BA0] - \u672A\u4F86\u503C,\u6216\u5728\u6700\u5F8C\u4E00\u6B21\u4ED8\u6B3E\u5F8C\u5E0C\u671B\u5F97\u5230\u7684\u73FE\u91D1\u9918\u984D\u3002"
  24840. },
  24841. {
  24842. "name": "type",
  24843. "detail": "[\u53EF\u9078 - \u9810\u8A2D\u503C\u70BA0] - \u6307\u5B9A\u5404\u671F\u7684\u4ED8\u6B3E\u6642\u9593\u662F\u5728\u671F\u521D\u9084\u662F\u671F\u672B\u3002\n\n0\u8868\u793A\u671F\u672B\uFF1B\n\n1\u8868\u793A\u671F\u521D\u3002"
  24844. }
  24845. ]
  24846. },
  24847. "SLN": {
  24848. "d": "\u8FD4\u56DE\u4E00\u500B\u671F\u9593\u5167\u7684\u8CC7\u7522\u7684\u76F4\u7DDA\u6298\u820A\u3002",
  24849. "a": "\u8FD4\u56DE\u4E00\u500B\u671F\u9593\u5167\u7684\u8CC7\u7522\u7684\u76F4\u7DDA\u6298\u820A\u3002",
  24850. "p": [
  24851. {
  24852. "name": "cost",
  24853. "detail": "\u8CC7\u7522\u539F\u503C\u3002"
  24854. },
  24855. {
  24856. "name": "salvage",
  24857. "detail": "\u6298\u820A\u672B\u5C3E\u6642\u7684\u503C\uFF08\u6709\u6642\u4E5F\u7A31\u70BA\u8CC7\u7522\u6B98\u503C\uFF09\u3002"
  24858. },
  24859. {
  24860. "name": "life",
  24861. "detail": "\u8CC7\u7522\u7684\u6298\u820A\u671F\u6578\uFF08\u6709\u6642\u4E5F\u7A31\u4F5C\u8CC7\u7522\u7684\u4F7F\u7528\u58FD\u547D\uFF09\u3002"
  24862. }
  24863. ]
  24864. },
  24865. "DURATION": {
  24866. "d": "\u8FD4\u56DE\u5047\u8A2D\u9762\u503C\uFFE5100\u7684\u5B9A\u671F\u4ED8\u606F\u6709\u50F9\u8B49\u5238\u7684\u4FEE\u6B63\u671F\u9650\u3002",
  24867. "a": "\u8FD4\u56DE\u5047\u8A2D\u9762\u503C\uFFE5100\u7684\u5B9A\u671F\u4ED8\u606F\u6709\u50F9\u8B49\u5238\u7684\u4FEE\u6B63\u671F\u9650\u3002",
  24868. "p": [
  24869. {
  24870. "name": "settlement",
  24871. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u7D50\u7B97\u65E5\u3002\u6709\u50F9\u8B49\u5238\u7D50\u7B97\u65E5\u662F\u5728\u767C\u884C\u65E5\u4E4B\u5F8C,\u6709\u50F9\u8B49\u5238\u8CE3\u7D66\u8CFC\u8CB7\u8005\u7684\u65E5\u671F\u3002"
  24872. },
  24873. {
  24874. "name": "maturity",
  24875. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u5230\u671F\u65E5\u3002\u5230\u671F\u65E5\u662F\u6709\u50F9\u8B49\u5238\u6709\u6548\u671F\u622A\u6B62\u6642\u7684\u65E5\u671F\u3002"
  24876. },
  24877. {
  24878. "name": "coupon",
  24879. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u5E74\u606F\u7968\u5229\u7387\u3002"
  24880. },
  24881. {
  24882. "name": "yld",
  24883. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u5E74\u6536\u76CA\u7387\u3002"
  24884. },
  24885. {
  24886. "name": "frequency",
  24887. "detail": "\u5E74\u4ED8\u606F\u6B21\u6578\u3002\n\n\u5982\u679C\u6309\u5E74\u652F\u4ED8,frequency = 1\uFF1B\n\n\u6309\u534A\u5E74\u671F\u652F\u4ED8,frequency = 2\uFF1B\n\n\u6309\u5B63\u652F\u4ED8,frequency = 4\u3002"
  24888. },
  24889. {
  24890. "name": "basis",
  24891. "detail": '[\u53EF\u9078 - \u9ED8\u8A8D\u70BA0] - \u8A13\u793A\u8981\u4F7F\u7528\u54EA\u7A2E\u5929\u6578\u8A08\u7B97\u65B9\u6CD5\u3002\n\n0\u8868\u793A"\u7F8E\u570B\uFF08NASD\uFF0930/360"\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u6309\u7167\u7F8E\u570B\u5168\u570B\u8B49\u5238\u4EA4\u6613\u5546\u5354\u6703\u6A19\u6E96,\u5047\u8A2D\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929,\u4E26\u5C0D\u6240\u8F38\u5165\u7684\u6708\u672B\u65E5\u671F\u9032\u884C\u5177\u9AD4\u8ABF\u6574\u3002\n\n1\u8868\u793A"\u5BE6\u969B/\u5BE6\u969B"\u65B9\u6CD5-\u6B64\u65B9\u6CD5\u8A08\u7B97\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u548C\u6240\u6D89\u53CA\u7684\u5E74\u4EFD\u4E2D\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97\u3002\u6B64\u65B9\u6CD5\u7528\u65BC\u7F8E\u570B\u9577\u671F\u50B5\u5238,\u4E5F\u662F\u5728\u975E\u8CA1\u7D93\u7528\u9014\u65B9\u9762\u4F7F\u7528\u6700\u591A\u7684\u65B9\u6CD5\u3002\n\n2\u8868\u793A"\u5BE6\u969B/360"\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97, \u4F46\u5047\u5B9A\u6BCF\u5E74\u70BA360\u5929\u3002\n\n3\u8868\u793A"\u5BE6\u969B/365"\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97,\u4F46\u5047\u5B9A\u6BCF\u5E74\u70BA365\u5929\u3002\n\n4\u8868\u793A"\u6B50\u6D3230 / 360"\u65B9\u6CD5-\u985E\u4F3C\u65BC0,\u6B64\u65B9\u6CD5\u57FA\u65BC\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\u9032\u884C\u8A08\u7B97,\u4F46\u6309\u7167\u6B50\u6D32\u91D1\u878D\u6163\u4F8B\u5C0D\u6708\u672B\u65E5\u671F\u9032\u884C\u8ABF\u6574\u3002'
  24892. }
  24893. ]
  24894. },
  24895. "MDURATION": {
  24896. "d": "\u8FD4\u56DE\u5047\u8A2D\u9762\u503C\uFFE5100\u7684\u6709\u50F9\u8B49\u5238\u7684Macauley\u4FEE\u6B63\u671F\u9650\u3002",
  24897. "a": "\u8FD4\u56DE\u5047\u8A2D\u9762\u503C\uFFE5100\u7684\u6709\u50F9\u8B49\u5238\u7684Macauley\u4FEE\u6B63\u671F\u9650\u3002",
  24898. "p": [
  24899. {
  24900. "name": "settlement",
  24901. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u7D50\u7B97\u65E5\u3002\u6709\u50F9\u8B49\u5238\u7D50\u7B97\u65E5\u662F\u5728\u767C\u884C\u65E5\u4E4B\u5F8C,\u6709\u50F9\u8B49\u5238\u8CE3\u7D66\u8CFC\u8CB7\u8005\u7684\u65E5\u671F\u3002"
  24902. },
  24903. {
  24904. "name": "maturity",
  24905. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u5230\u671F\u65E5\u3002\u5230\u671F\u65E5\u662F\u6709\u50F9\u8B49\u5238\u6709\u6548\u671F\u622A\u6B62\u6642\u7684\u65E5\u671F\u3002"
  24906. },
  24907. {
  24908. "name": "coupon",
  24909. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u5E74\u606F\u7968\u5229\u7387\u3002"
  24910. },
  24911. {
  24912. "name": "yld",
  24913. "detail": "\u6709\u50F9\u8B49\u5238\u7684\u5E74\u6536\u76CA\u7387\u3002"
  24914. },
  24915. {
  24916. "name": "frequency",
  24917. "detail": "\u5E74\u4ED8\u606F\u6B21\u6578\u3002\n\n\u5982\u679C\u6309\u5E74\u652F\u4ED8,frequency = 1\uFF1B\n\n\u6309\u534A\u5E74\u671F\u652F\u4ED8,frequency = 2\uFF1B\n\n\u6309\u5B63\u652F\u4ED8,frequency = 4\u3002"
  24918. },
  24919. {
  24920. "name": "basis",
  24921. "detail": '[\u53EF\u9078 - \u9ED8\u8A8D\u70BA0] - \u8A13\u793A\u8981\u4F7F\u7528\u54EA\u7A2E\u5929\u6578\u8A08\u7B97\u65B9\u6CD5\u3002\n\n0\u8868\u793A"\u7F8E\u570B\uFF08NASD\uFF0930/360"\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u6309\u7167\u7F8E\u570B\u5168\u570B\u8B49\u5238\u4EA4\u6613\u5546\u5354\u6703\u6A19\u6E96,\u5047\u8A2D\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929,\u4E26\u5C0D\u6240\u8F38\u5165\u7684\u6708\u672B\u65E5\u671F\u9032\u884C\u5177\u9AD4\u8ABF\u6574\u3002\n\n1\u8868\u793A"\u5BE6\u969B/\u5BE6\u969B"\u65B9\u6CD5-\u6B64\u65B9\u6CD5\u8A08\u7B97\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u548C\u6240\u6D89\u53CA\u7684\u5E74\u4EFD\u4E2D\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97\u3002\u6B64\u65B9\u6CD5\u7528\u65BC\u7F8E\u570B\u9577\u671F\u50B5\u5238,\u4E5F\u662F\u5728\u975E\u8CA1\u7D93\u7528\u9014\u65B9\u9762\u4F7F\u7528\u6700\u591A\u7684\u65B9\u6CD5\u3002\n\n2\u8868\u793A"\u5BE6\u969B/360"\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97, \u4F46\u5047\u5B9A\u6BCF\u5E74\u70BA360\u5929\u3002\n\n3\u8868\u793A"\u5BE6\u969B/365"\u65B9\u6CD5 - \u6B64\u65B9\u6CD5\u57FA\u65BC\u6307\u5B9A\u65E5\u671F\u4E4B\u9593\u7684\u5BE6\u969B\u5929\u6578\u9032\u884C\u8A08\u7B97,\u4F46\u5047\u5B9A\u6BCF\u5E74\u70BA365\u5929\u3002\n\n4\u8868\u793A"\u6B50\u6D3230 / 360"\u65B9\u6CD5-\u985E\u4F3C\u65BC0,\u6B64\u65B9\u6CD5\u57FA\u65BC\u6BCF\u670830\u5929\u3001\u6BCF\u5E74360\u5929\u9032\u884C\u8A08\u7B97,\u4F46\u6309\u7167\u6B50\u6D32\u91D1\u878D\u6163\u4F8B\u5C0D\u6708\u672B\u65E5\u671F\u9032\u884C\u8ABF\u6574\u3002'
  24922. }
  24923. ]
  24924. },
  24925. "BIN2DEC": {
  24926. "d": "\u5C07\u4E8C\u9032\u4F4D\u6578\u8F49\u63DB\u70BA\u5341\u9032\u4F4D\u6578\u3002",
  24927. "a": "\u5C07\u4E8C\u9032\u4F4D\u6578\u8F49\u63DB\u70BA\u5341\u9032\u4F4D\u6578\u3002",
  24928. "p": [
  24929. {
  24930. "name": "number",
  24931. "detail": '\u8981\u8F49\u63DB\u70BA\u5341\u9032\u4F4D\u6578\u7684\u5E36\u7B26\u865F\u768410\u4F4D\u4E8C\u9032\u4F4D\u6578\u503C\uFF08\u4EE5\u5B57\u4E32\u5F62\u5F0F\u63D0\u4F9B\uFF09\u3002\n\n\u5E36\u7B26\u865F\u7684\u4E8C\u9032\u4F4D\u6578\u7684\u6700\u9AD8\u4F4D\u662F\u7B26\u865F\u4F4D\uFF1B\u4E5F\u5C31\u662F\u8AAA,\u8CA0\u6578\u662F\u4EE5\u4E8C\u7684\u88DC\u6578\u5F62\u5F0F\u8868\u793A\u7684\u3002\n\n\u5C0D\u65BC\u6B64\u51FD\u6578,\u6700\u5927\u7684\u6B63\u6578\u8F38\u5165\u503C\u70BA0111111111,\u6700\u5C0F\u7684\u8CA0\u6578\u8F38\u5165\u503C\u70BA1000000000\u3002\n\n\u5982\u679C\u6240\u63D0\u4F9B\u7684\u5E36\u7B26\u865F\u7684\u4E8C\u9032\u4F4D\u6578\u662F\u6709\u6548\u7684\u4E8C\u9032\u4F4D\u6578,\u6703\u81EA\u52D5\u5C07\u5176\u8F49\u63DB\u70BA\u76F8\u61C9\u7684\u5B57\u4E32\u8F38\u5165\u3002\u4F8B\u5982,BIN2DEC\uFF08100\uFF09\u548CBIN2DEC\uFF08"100"\uFF09\u5F97\u51FA\u7684\u7D50\u679C\u76F8\u540C,\u5747\u70BA4\u3002'
  24932. }
  24933. ]
  24934. },
  24935. "BIN2HEX": {
  24936. "d": "\u5C07\u4E8C\u9032\u4F4D\u6578\u8F49\u63DB\u70BA\u5341\u516D\u9032\u4F4D\u6578\u3002",
  24937. "a": "\u5C07\u4E8C\u9032\u4F4D\u6578\u8F49\u63DB\u70BA\u5341\u516D\u9032\u4F4D\u6578\u3002",
  24938. "p": [
  24939. {
  24940. "name": "number",
  24941. "detail": '\u8981\u8F49\u63DB\u70BA\u5E36\u7B26\u865F\u7684\u5341\u516D\u9032\u4F4D\u6578\u7684\u5E36\u7B26\u865F\u768410\u4F4D\u4E8C\u9032\u4F4D\u6578\u503C\uFF08\u4EE5\u5B57\u4E32\u5F62\u5F0F\u63D0\u4F9B\uFF09\u3002\n\n\u5E36\u7B26\u865F\u7684\u4E8C\u9032\u4F4D\u6578\u7684\u6700\u9AD8\u4F4D\u662F\u7B26\u865F\u4F4D\uFF1B\u4E5F\u5C31\u662F\u8AAA,\u8CA0\u6578\u662F\u4EE5\u4E8C\u7684\u88DC\u6578\u5F62\u5F0F\u8868\u793A\u7684\u3002\n\n\u5C0D\u65BC\u6B64\u51FD\u6578,\u6700\u5927\u7684\u6B63\u6578\u8F38\u5165\u503C\u70BA0111111111,\u6700\u5C0F\u7684\u8CA0\u6578\u8F38\u5165\u503C\u70BA1000000000\u3002\n\n\u5982\u679C\u6240\u63D0\u4F9B\u7684\u5E36\u7B26\u865F\u7684\u4E8C\u9032\u4F4D\u6578\u662F\u6709\u6548\u7684\u4E8C\u9032\u4F4D\u6578,\u6703\u81EA\u52D5\u5C07\u5176\u8F49\u63DB\u70BA\u76F8\u61C9\u7684\u5B57\u4E32\u8F38\u5165\u3002\u4F8B\u5982,BIN2HEX\uFF0811111\uFF09\u548CBIN2HEX\uFF08"11111"\uFF09\u5F97\u51FA\u7684\u7D50\u679C\u76F8\u540C,\u5747\u70BA1F\u3002'
  24942. },
  24943. {
  24944. "name": "places",
  24945. "detail": '[ \u53EF\u9078 ] -\u7D50\u679C\u4E2D\u8981\u78BA\u4FDD\u7684\u6709\u6548\u4F4D\u6578\u3002\n\n\u5982\u679C\u8A2D\u5B9A\u7684\u6709\u6548\u4F4D\u6578\u5927\u65BC\u7D50\u679C\u4E2D\u7684\u6709\u6548\u4F4D\u6578,\u5247\u5728\u7D50\u679C\u7684\u5DE6\u5074\u586B\u51450,\u4F7F\u7E3D\u6709\u6548\u4F4D\u6578\u9054\u5230\u6709\u6548\u4F4D\u6578\u3002\u4F8B\u5982,BIN2HEX\uFF08"11111",8\uFF09\u6240\u5F97\u7684\u7D50\u679C\u503C\u70BA0000001F\u3002\n\n\u5982\u679C\u5E36\u7B26\u865F\u7684\u4E8C\u9032\u4F4D\u6578\u7684\u6700\u9AD8\u4F4D\u70BA1,\u5247\u5FFD\u7565\u6B64\u503C\uFF1B\u5373\u7576\u63D0\u4F9B\u7684\u5E36\u7B26\u865F\u7684\u4E8C\u9032\u4F4D\u6578\u5927\u65BC\u7B49\u65BC1000000000\u6642\u5FFD\u7565\u6B64\u503C\u3002'
  24946. }
  24947. ]
  24948. },
  24949. "BIN2OCT": {
  24950. "d": "\u4E8C\u9032\u4F4D\u6578\u8F49\u63DB\u70BA\u516B\u9032\u5236\u6578\u3002",
  24951. "a": "\u4E8C\u9032\u4F4D\u6578\u8F49\u63DB\u70BA\u516B\u9032\u5236\u6578\u3002",
  24952. "p": [
  24953. {
  24954. "name": "number",
  24955. "detail": '\u8981\u8F49\u63DB\u70BA\u5E36\u7B26\u865F\u7684\u516B\u9032\u5236\u6578\u7684\u5E36\u7B26\u865F\u768410\u4F4D\u4E8C\u9032\u4F4D\u6578\u503C\uFF08\u4EE5\u5B57\u4E32\u5F62\u5F0F\u63D0\u4F9B\uFF09\u3002\n\n\u5E36\u7B26\u865F\u7684\u4E8C\u9032\u4F4D\u6578\u7684\u6700\u9AD8\u4F4D\u662F\u7B26\u865F\u4F4D\uFF1B\u4E5F\u5C31\u662F\u8AAA,\u8CA0\u6578\u662F\u4EE5\u4E8C\u7684\u88DC\u6578\u5F62\u5F0F\u8868\u793A\u7684\u3002\n\n\u5C0D\u65BC\u6B64\u51FD\u6578,\u6700\u5927\u7684\u6B63\u6578\u8F38\u5165\u503C\u70BA0111111111,\u6700\u5C0F\u7684\u8CA0\u6578\u8F38\u5165\u503C\u70BA1000000000\u3002\n\n\u5982\u679C\u6240\u63D0\u4F9B\u7684\u5E36\u7B26\u865F\u7684\u4E8C\u9032\u4F4D\u6578\u662F\u6709\u6548\u7684\u4E8C\u9032\u4F4D\u6578,\u6703\u81EA\u52D5\u5C07\u5176\u8F49\u63DB\u70BA\u76F8\u61C9\u7684\u5B57\u4E32\u8F38\u5165\u3002\u4F8B\u5982,BIN2OCT\uFF0811111\uFF09\u548CBIN2OCT\uFF08"11111"\uFF09\u5F97\u51FA\u7684\u7D50\u679C\u76F8\u540C,\u5747\u70BA37\u3002'
  24956. },
  24957. {
  24958. "name": "places",
  24959. "detail": '[ \u53EF\u9078 ] - \u7D50\u679C\u4E2D\u8981\u78BA\u4FDD\u7684\u6709\u6548\u4F4D\u6578\u3002\n\n\u5982\u679C\u8A2D\u5B9A\u7684\u6709\u6548\u4F4D\u6578\u5927\u65BC\u7D50\u679C\u4E2D\u7684\u6709\u6548\u4F4D\u6578,\u5247\u5728\u7D50\u679C\u7684\u5DE6\u5074\u586B\u51450,\u4F7F\u7E3D\u6709\u6548\u4F4D\u6578\u9054\u5230\u6709\u6548\u4F4D\u6578\u3002\u4F8B\u5982,BIN2OCT\uFF08"11111"\uFF09\u5F97\u5230\u7684\u7D50\u679C\u503C\u70BA00000037\u3002\n\n\u5982\u679C\u5E36\u7B26\u865F\u7684\u4E8C\u9032\u4F4D\u6578\u7684\u6700\u9AD8\u4F4D\u70BA1,\u5247\u5FFD\u7565\u6B64\u503C\uFF1B\u5373\u7576\u63D0\u4F9B\u7684\u5E36\u7B26\u865F\u7684\u4E8C\u9032\u4F4D\u6578\u5927\u65BC\u7B49\u65BC1000000000\u6642\u5FFD\u7565\u6B64\u503C\u3002'
  24960. }
  24961. ]
  24962. },
  24963. "DEC2BIN": {
  24964. "d": "\u5C07\u5341\u9032\u4F4D\u6578\u8F49\u63DB\u70BA\u4E8C\u9032\u4F4D\u6578\u3002",
  24965. "a": "\u5C07\u5341\u9032\u4F4D\u6578\u8F49\u63DB\u70BA\u4E8C\u9032\u4F4D\u6578\u3002",
  24966. "p": [
  24967. {
  24968. "name": "number",
  24969. "detail": '\u8981\u8F49\u63DB\u70BA\u5E36\u7B26\u865F\u7684\u4E8C\u9032\u4F4D\u6578\u7684\u5341\u9032\u4F4D\u6578\u503C\uFF08\u4EE5\u5B57\u4E32\u5F62\u5F0F\u63D0\u4F9B\uFF09\u3002\n\n\u5C0D\u65BC\u6B64\u51FD\u6578,\u6700\u5927\u7684\u6B63\u6578\u8F38\u5165\u503C\u70BA511,\u6700\u5C0F\u7684\u8CA0\u6578\u8F38\u5165\u503C\u70BA-512\u3002\n\n\u5982\u679C\u6240\u63D0\u4F9B\u7684\u5341\u9032\u4F4D\u6578\u662F\u6709\u6548\u7684\u5341\u9032\u4F4D\u6578,\u6703\u81EA\u52D5\u5C07\u5176\u8F49\u63DB\u70BA\u76F8\u61C9\u7684\u5B57\u4E32\u8F38\u5165\u3002\u4F8B\u5982,DEC2BIN\uFF08199\uFF09\u548CDEC2BIN\uFF08"199"\uFF09\u5F97\u51FA\u7684\u7D50\u679C\u76F8\u540C,\u5747\u70BA11000111\u3002'
  24970. },
  24971. {
  24972. "name": "places",
  24973. "detail": "[ \u53EF\u9078 ] - \u7D50\u679C\u4E2D\u8981\u78BA\u4FDD\u7684\u6709\u6548\u4F4D\u6578\u3002\n\n\u5982\u679C\u8A2D\u5B9A\u7684\u6709\u6548\u4F4D\u6578\u5927\u65BC\u7D50\u679C\u4E2D\u7684\u6709\u6548\u4F4D\u6578,\u5247\u5728\u7D50\u679C\u7684\u5DE6\u5074\u586B\u51450,\u4F7F\u7E3D\u6709\u6548\u4F4D\u6578\u9054\u5230\u6709\u6548\u4F4D\u6578\u3002\n\n\u5982\u679C\u5341\u9032\u4F4D\u6578\u70BA\u8CA0\u6578,\u5247\u5FFD\u7565\u6B64\u503C\u3002"
  24974. }
  24975. ]
  24976. },
  24977. "DEC2HEX": {
  24978. "d": "\u5C07\u5341\u9032\u4F4D\u6578\u8F49\u63DB\u70BA\u5341\u516D\u9032\u4F4D\u6578\u3002",
  24979. "a": "\u5C07\u5341\u9032\u4F4D\u6578\u8F49\u63DB\u70BA\u5341\u516D\u9032\u4F4D\u6578\u3002",
  24980. "p": [
  24981. {
  24982. "name": "number",
  24983. "detail": '\u8981\u8F49\u63DB\u70BA\u5E36\u7B26\u865F\u7684\u5341\u516D\u9032\u4F4D\u6578\u7684\u5341\u9032\u4F4D\u6578\u503C\uFF08\u4EE5\u5B57\u4E32\u5F62\u5F0F\u63D0\u4F9B\uFF09\u3002\n\n\u6B64\u51FD\u6578\u53EF\u63A5\u53D7\u7684\u6700\u5927\u6B63\u6578\u503C\u70BA549755813887,\u6700\u5C0F\u8CA0\u6578\u503C\u70BA-549755814888\u3002\n\n\u5982\u679C\u6240\u63D0\u4F9B\u7684\u5341\u9032\u4F4D\u6578\u662F\u6709\u6548\u7684\u5341\u9032\u4F4D\u6578,\u6703\u81EA\u52D5\u5C07\u5176\u8F49\u63DB\u70BA\u76F8\u61C9\u7684\u5B57\u4E32\u8F38\u5165\u3002\u4F8B\u5982,DEC2HEX\uFF08100\uFF09\u548CDEC2HEX\uFF08"100"\uFF09\u5F97\u51FA\u7684\u7D50\u679C\u76F8\u540C,\u5747\u70BA64\u3002'
  24984. },
  24985. {
  24986. "name": "places",
  24987. "detail": "[ \u53EF\u9078 ] - \u7D50\u679C\u4E2D\u8981\u78BA\u4FDD\u7684\u6709\u6548\u4F4D\u6578\u3002\n\n\u5982\u679C\u8A2D\u5B9A\u7684\u6709\u6548\u4F4D\u6578\u5927\u65BC\u7D50\u679C\u4E2D\u7684\u6709\u6548\u4F4D\u6578,\u5247\u5728\u7D50\u679C\u7684\u5DE6\u5074\u586B\u51450,\u4F7F\u7E3D\u6709\u6548\u4F4D\u6578\u9054\u5230\u6709\u6548\u4F4D\u6578\u3002\n\n\u5982\u679C\u5341\u9032\u4F4D\u6578\u70BA\u8CA0\u6578,\u5247\u5FFD\u7565\u6B64\u503C\u3002"
  24988. }
  24989. ]
  24990. },
  24991. "DEC2OCT": {
  24992. "d": "\u5C07\u5341\u9032\u4F4D\u6578\u8F49\u63DB\u70BA\u516B\u9032\u5236\u6578\u3002",
  24993. "a": "\u5C07\u5341\u9032\u4F4D\u6578\u8F49\u63DB\u70BA\u516B\u9032\u5236\u6578\u3002",
  24994. "p": [
  24995. {
  24996. "name": "number",
  24997. "detail": '\u8981\u8F49\u63DB\u70BA\u5E36\u7B26\u865F\u7684\u516B\u9032\u5236\u6578\u7684\u5341\u9032\u4F4D\u6578\u503C\uFF08\u4EE5\u5B57\u4E32\u5F62\u5F0F\u63D0\u4F9B\uFF09\u3002\n\n\u6B64\u51FD\u6578\u53EF\u63A5\u53D7\u7684\u6700\u5927\u6B63\u6578\u503C\u70BA536870911,\u6700\u5C0F\u8CA0\u6578\u503C\u70BA-53687092\u3002\n\n\u5982\u679C\u6240\u63D0\u4F9B\u7684\u5341\u9032\u4F4D\u6578\u662F\u6709\u6548\u7684\u5341\u9032\u4F4D\u6578,\u6703\u81EA\u52D5\u5C07\u5176\u8F49\u63DB\u70BA\u76F8\u61C9\u7684\u5B57\u4E32\u8F38\u5165\u3002\u4F8B\u5982,DEC2OCT\uFF08199\uFF09\u548CDEC2OCT\uFF08"199"\uFF09\u5F97\u51FA\u7684\u7D50\u679C\u76F8\u540C,\u5747\u70BA307\u3002'
  24998. },
  24999. {
  25000. "name": "places",
  25001. "detail": "[ \u53EF\u9078 ] -\u7D50\u679C\u4E2D\u8981\u78BA\u4FDD\u7684\u6709\u6548\u4F4D\u6578\u3002\n\n\u5982\u679C\u8A2D\u5B9A\u7684\u6709\u6548\u4F4D\u6578\u5927\u65BC\u7D50\u679C\u4E2D\u7684\u6709\u6548\u4F4D\u6578,\u5247\u5728\u7D50\u679C\u7684\u5DE6\u5074\u586B\u51450,\u4F7F\u7E3D\u6709\u6548\u4F4D\u6578\u9054\u5230\u6709\u6548\u4F4D\u6578\u3002\n\n\u5982\u679C\u5341\u9032\u4F4D\u6578\u70BA\u8CA0\u6578,\u5247\u5FFD\u7565\u6B64\u503C \u3002"
  25002. }
  25003. ]
  25004. },
  25005. "HEX2BIN": {
  25006. "d": "\u5C07\u5341\u516D\u9032\u4F4D\u6578\u8F49\u63DB\u70BA\u4E8C\u9032\u4F4D\u6578\u3002",
  25007. "a": "\u5C07\u5341\u516D\u9032\u4F4D\u6578\u8F49\u63DB\u70BA\u4E8C\u9032\u4F4D\u6578\u3002",
  25008. "p": [
  25009. {
  25010. "name": "number",
  25011. "detail": '\u8981\u8F49\u63DB\u70BA\u5E36\u7B26\u865F\u7684\u4E8C\u9032\u4F4D\u6578\u7684\u5E36\u7B26\u865F\u768440\u4F4D\u5341\u516D\u9032\u4F4D\u6578\u503C\uFF08\u4EE5\u5B57\u4E32\u5F62\u5F0F\u63D0\u4F9B\uFF09\u3002\n\n\u5E36\u7B26\u865F\u7684\u5341\u516D\u9032\u4F4D\u6578\u7684\u6700\u9AD8\u4F4D\u662F\u7B26\u865F\u4F4D\uFF1B\u4E5F\u5C31\u662F\u8AAA,\u8CA0\u6578\u662F\u4EE5\u4E8C\u7684\u88DC\u6578\u5F62\u5F0F\u8868\u793A\u7684\u3002\n\n\u6B64\u51FD\u6578\u53EF\u63A5\u53D7\u7684\u6700\u5927\u6B63\u6578\u503C\u70BA1FF,\u6700\u5C0F\u8CA0\u6578\u503C\u70BAFFFFFFFE00\u3002\n\n\u5982\u679C\u6240\u63D0\u4F9B\u7684\u5E36\u7B26\u865F\u7684\u5341\u516D\u9032\u4F4D\u6578\u662F\u6709\u6548\u7684\u5341\u516D\u9032\u4F4D\u6578,\u51FD\u6578\u6703\u81EA\u52D5\u5C07\u5176\u8F49\u63DB\u70BA\u76F8\u61C9\u7684\u5B57\u4E32\u8F38\u5165\u3002\u4F8B\u5982,HEX2BIN\uFF08199\uFF09\u548CHEX2BIN\uFF08"199"\uFF09\u5F97\u51FA\u7684\u7D50\u679C\u76F8\u540C,\u5747\u70BA110011001\u3002'
  25012. },
  25013. {
  25014. "name": "places",
  25015. "detail": "[ \u53EF\u9078 ] - \u7D50\u679C\u4E2D\u8981\u78BA\u4FDD\u7684\u6709\u6548\u4F4D\u6578\u3002\n\n\u5982\u679C\u8A2D\u5B9A\u7684\u6709\u6548\u4F4D\u6578\u5927\u65BC\u7D50\u679C\u4E2D\u7684\u6709\u6548\u4F4D\u6578,\u5247\u5728\u7D50\u679C\u7684\u5DE6\u5074\u586B\u51450,\u4F7F\u7E3D\u6709\u6548\u4F4D\u6578\u9054\u5230\u6709\u6548\u4F4D\u6578\u3002\n\n\u5982\u679C\u5E36\u7B26\u865F\u7684\u5341\u516D\u9032\u4F4D\u6578\u7684\u6700\u9AD8\u4F4D\u70BA1,\u5247\u5FFD\u7565\u6B64\u503C\uFF1B\u5373\u7576\u63D0\u4F9B\u7684\u5E36\u7B26\u865F\u7684\u5341\u516D\u9032\u4F4D\u6578\u5927\u65BC\u7B49\u65BC8000000000\u6642\u5FFD\u7565\u6B64\u503C\u3002"
  25016. }
  25017. ]
  25018. },
  25019. "HEX2DEC": {
  25020. "d": "\u5C07\u5341\u516D\u9032\u4F4D\u6578\u8F49\u63DB\u70BA\u5341\u9032\u4F4D\u6578\u3002",
  25021. "a": "\u5C07\u5341\u516D\u9032\u4F4D\u6578\u8F49\u63DB\u70BA\u5341\u9032\u4F4D\u6578\u3002",
  25022. "p": [
  25023. {
  25024. "name": "number",
  25025. "detail": '\u8981\u8F49\u63DB\u70BA\u5341\u9032\u4F4D\u6578\u7684\u5E36\u7B26\u865F\u768440\u4F4D\u5341\u516D\u9032\u4F4D\u6578\u503C\uFF08\u4EE5\u5B57\u4E32\u5F62\u5F0F\u63D0\u4F9B\uFF09\u3002\n\n\u5E36\u7B26\u865F\u7684\u5341\u516D\u9032\u4F4D\u6578\u7684\u6700\u9AD8\u4F4D\u662F\u7B26\u865F\u4F4D\uFF1B\u4E5F\u5C31\u662F\u8AAA,\u8CA0\u6578\u662F\u4EE5\u4E8C\u7684\u88DC\u6578\u5F62\u5F0F\u8868\u793A\u7684\u3002\n\n\u6B64\u51FD\u6578\u53EF\u63A5\u53D7\u7684\u6700\u5927\u6B63\u6578\u503C\u70BA7fffffffff,\u6700\u5C0F\u8CA0\u6578\u503C\u70BA8000000000\u3002\n\n\u5982\u679C\u6240\u63D0\u4F9B\u7684\u5E36\u7B26\u865F\u7684\u5341\u516D\u9032\u4F4D\u6578\u662F\u6709\u6548\u7684\u5341\u516D\u9032\u4F4D\u6578,\u51FD\u6578\u6703\u81EA\u52D5\u5C07\u5176\u8F49\u63DB\u70BA\u76F8\u61C9\u7684\u5B57\u4E32\u8F38\u5165\u3002\u4F8B\u5982,HEX2DEC\uFF08199\uFF09\u548CHEX2DEC\uFF08"199"\uFF09\u5F97\u51FA\u7684\u7D50\u679C\u76F8\u540C,\u5747\u70BA409 \u3002'
  25026. }
  25027. ]
  25028. },
  25029. "HEX2OCT": {
  25030. "d": "\u5C07\u5341\u516D\u9032\u4F4D\u6578\u8F49\u63DB\u70BA\u516B\u9032\u5236\u6578\u3002",
  25031. "a": "\u5C07\u5341\u516D\u9032\u4F4D\u6578\u8F49\u63DB\u70BA\u516B\u9032\u5236\u6578\u3002",
  25032. "p": [
  25033. {
  25034. "name": "number",
  25035. "detail": '\u8981\u8F49\u63DB\u70BA\u5E36\u7B26\u865F\u7684\u516B\u9032\u5236\u6578\u7684\u5E36\u7B26\u865F\u768440\u4F4D\u5341\u516D\u9032\u4F4D\u6578\u503C\uFF08\u4EE5\u5B57\u4E32\u5F62\u5F0F\u63D0\u4F9B\uFF09\u3002\n\n\u5E36\u7B26\u865F\u7684\u5341\u516D\u9032\u4F4D\u6578\u7684\u6700\u9AD8\u4F4D\u662F\u7B26\u865F\u4F4D\uFF1B\u4E5F\u5C31\u662F\u8AAA,\u8CA0\u6578\u662F\u4EE5\u4E8C\u7684\u88DC\u6578\u5F62\u5F0F\u8868\u793A\u7684\u3002\n\n\u6B64\u51FD\u6578\u53EF\u63A5\u53D7\u7684\u6700\u5927\u6B63\u6578\u503C\u70BA1FFFFFFF,\u6700\u5C0F\u8CA0\u6578\u503C\u70BAFFE0000000\u3002\n\n\u5982\u679C\u6240\u63D0\u4F9B\u7684\u5E36\u7B26\u865F\u7684\u5341\u516D\u9032\u4F4D\u6578\u662F\u6709\u6548\u7684\u5341\u516D\u9032\u4F4D\u6578,\u51FD\u6578\u6703\u81EA\u52D5\u5C07\u5176\u8F49\u63DB\u70BA\u76F8\u61C9\u7684\u5B57\u4E32\u8F38\u5165\u3002\u4F8B\u5982,HEX2OCT\uFF08199\uFF09\u548CHEX2OCT\uFF08"199"\uFF09\u5F97\u51FA\u7684\u7D50\u679C\u76F8\u540C,\u5747\u70BA631\u3002'
  25036. },
  25037. {
  25038. "name": "places",
  25039. "detail": "[ \u53EF\u9078 ] - \u7D50\u679C\u4E2D\u8981\u78BA\u4FDD\u7684\u6709\u6548\u4F4D\u6578\u3002\n\n\u5982\u679C\u8A2D\u5B9A\u7684\u6709\u6548\u4F4D\u6578\u5927\u65BC\u7D50\u679C\u4E2D\u7684\u6709\u6548\u4F4D\u6578,\u5247\u5728\u7D50\u679C\u7684\u5DE6\u5074\u586B\u51450,\u4F7F\u7E3D\u6709\u6548\u4F4D\u6578\u9054\u5230\u6709\u6548\u4F4D\u6578\u3002\n\n\u5982\u679C\u5E36\u7B26\u865F\u7684\u5341\u516D\u9032\u4F4D\u6578\u7684\u6700\u9AD8\u4F4D\u70BA1,\u5247\u5FFD\u7565\u6B64\u503C\uFF1B\u5373\u7576\u7D66\u5B9A\u7684\u5E36\u7B26\u865F\u7684\u5341\u516D\u9032\u4F4D\u6578\u5927\u65BC\u7B49\u65BC8000000000\u6642\u5FFD\u7565\u6B64\u503C\u3002"
  25040. }
  25041. ]
  25042. },
  25043. "OCT2BIN": {
  25044. "d": "\u5C07\u516B\u9032\u5236\u6578\u8F49\u63DB\u70BA\u4E8C\u9032\u4F4D\u6578\u3002",
  25045. "a": "\u5C07\u516B\u9032\u5236\u6578\u8F49\u63DB\u70BA\u4E8C\u9032\u4F4D\u6578\u3002",
  25046. "p": [
  25047. {
  25048. "name": "number",
  25049. "detail": '\u8981\u8F49\u63DB\u70BA\u5E36\u7B26\u865F\u7684\u4E8C\u9032\u4F4D\u6578\u7684\u5E36\u7B26\u865F\u768430\u4F4D\u516B\u9032\u5236\u6578\u503C\uFF08\u4EE5\u5B57\u4E32\u5F62\u5F0F\u63D0\u4F9B\uFF09\u3002\n\n\u5E36\u7B26\u865F\u7684\u516B\u9032\u5236\u6578\u7684\u6700\u9AD8\u4F4D\u662F\u7B26\u865F\u4F4D\uFF1B\u4E5F\u5C31\u662F\u8AAA,\u8CA0\u6578\u662F\u4EE5\u4E8C\u7684\u88DC\u6578\u5F62\u5F0F\u8868\u793A\u7684\u3002\n\n\u6B64\u51FD\u6578\u53EF\u63A5\u53D7\u7684\u6700\u5927\u6B63\u6578\u503C\u70BA777,\u6700\u5C0F\u8CA0\u6578\u503C\u70BA7777777000\u3002\n\n\u5982\u679C\u6240\u63D0\u4F9B\u7684\u5E36\u7B26\u865F\u7684\u516B\u9032\u5236\u6578\u662F\u6709\u6548\u7684\u516B\u9032\u5236\u6578,\u51FD\u6578\u6703\u81EA\u52D5\u5C07\u5176\u8F49\u63DB\u70BA\u76F8\u61C9\u7684\u5B57\u4E32\u8F38\u5165\u3002\u4F8B\u5982,OCT2BIN\uFF08177\uFF09\u548COCT2BIN\uFF08"177"\uFF09\u5F97\u51FA\u7684\u7D50\u679C\u76F8\u540C,\u5747\u70BA1111111\u3002'
  25050. },
  25051. {
  25052. "name": "places",
  25053. "detail": "[ \u53EF\u9078 ] - \u7D50\u679C\u4E2D\u8981\u78BA\u4FDD\u7684\u6709\u6548\u4F4D\u6578\u3002\n\n\u5982\u679C\u8A2D\u5B9A\u7684\u6709\u6548\u4F4D\u6578\u5927\u65BC\u7D50\u679C\u4E2D\u7684\u6709\u6548\u4F4D\u6578,\u5247\u5728\u7D50\u679C\u7684\u5DE6\u5074\u586B\u51450,\u4F7F\u7E3D\u6709\u6548\u4F4D\u6578\u9054\u5230\u6709\u6548\u4F4D\u6578\u3002\n\n\u5982\u679C\u5E36\u7B26\u865F\u7684\u516B\u9032\u5236\u6578\u7684\u6700\u9AD8\u4F4D\u70BA1,\u5247\u5FFD\u7565\u6B64\u503C\uFF1B\u5373\u7576\u7D66\u5B9A\u7684\u5E36\u7B26\u865F\u7684\u516B\u9032\u5236\u6578\u5927\u65BC\u7B49\u65BC4000000000\u6642\u5FFD\u7565\u6B64\u503C\u3002"
  25054. }
  25055. ]
  25056. },
  25057. "OCT2DEC": {
  25058. "d": "\u5C07\u516B\u9032\u5236\u6578\u8F49\u63DB\u70BA\u5341\u9032\u4F4D\u6578\u3002",
  25059. "a": "\u5C07\u516B\u9032\u5236\u6578\u8F49\u63DB\u70BA\u5341\u9032\u4F4D\u6578\u3002",
  25060. "p": [
  25061. {
  25062. "name": "number",
  25063. "detail": '\u8981\u8F49\u63DB\u70BA\u5341\u9032\u4F4D\u6578\u7684\u5E36\u7B26\u865F\u768430\u4F4D\u516B\u9032\u5236\u6578\u503C\uFF08\u4EE5\u5B57\u4E32\u5F62\u5F0F\u63D0\u4F9B\uFF09\u3002\n\n\u5E36\u7B26\u865F\u7684ba\u9032\u5236\u6578\u7684\u6700\u9AD8\u4F4D\u662F\u7B26\u865F\u4F4D\uFF1B\u4E5F\u5C31\u662F\u8AAA,\u8CA0\u6578\u662F\u4EE5\u4E8C\u7684\u88DC\u6578\u5F62\u5F0F\u8868\u793A\u7684\u3002\n\n\u6B64\u51FD\u6578\u53EF\u63A5\u53D7\u7684\u6700\u5927\u6B63\u6578\u503C\u70BA3777777777,\u6700\u5C0F\u8CA0\u6578\u503C\u70BA4000000000\u3002\n\n\u5982\u679C\u6240\u63D0\u4F9B\u7684\u5E36\u7B26\u865F\u7684\u516B\u9032\u5236\u6578\u662F\u6709\u6548\u7684\u516B\u9032\u5236\u6578,\u51FD\u6578\u6703\u81EA\u52D5\u5C07\u5176\u8F49\u63DB\u70BA\u76F8\u61C9\u7684\u5B57\u4E32\u8F38\u5165\u3002\u4F8B\u5982,OCT2DEC\uFF08177\uFF09\u548COCT2DEC\uFF08"177"\uFF09\u5F97\u51FA\u7684\u7D50\u679C\u76F8\u540C,\u5747\u70BA127\u3002'
  25064. }
  25065. ]
  25066. },
  25067. "OCT2HEX": {
  25068. "d": "\u5C07\u516B\u9032\u5236\u6578\u8F49\u63DB\u70BA\u5341\u516D\u9032\u4F4D\u6578\u3002",
  25069. "a": "\u5C07\u516B\u9032\u5236\u6578\u8F49\u63DB\u70BA\u5341\u516D\u9032\u4F4D\u6578\u3002",
  25070. "p": [
  25071. {
  25072. "name": "number",
  25073. "detail": '\u8981\u8F49\u63DB\u70BA\u5E36\u7B26\u865F\u7684\u5341\u516D\u9032\u4F4D\u6578\u7684\u5E36\u7B26\u865F\u768430\u4F4D\u516B\u9032\u5236\u6578\u503C\uFF08\u4EE5\u5B57\u4E32\u5F62\u5F0F\u63D0\u4F9B\uFF09\u3002\n\n\u5E36\u7B26\u865F\u7684ba\u9032\u5236\u6578\u7684\u6700\u9AD8\u4F4D\u662F\u7B26\u865F\u4F4D\uFF1B\u4E5F\u5C31\u662F\u8AAA,\u8CA0\u6578\u662F\u4EE5\u4E8C\u7684\u88DC\u6578\u5F62\u5F0F\u8868\u793A\u7684\u3002\n\n\u6B64\u51FD\u6578\u53EF\u63A5\u53D7\u7684\u6700\u5927\u6B63\u6578\u503C\u70BA3777777777,\u6700\u5C0F\u8CA0\u6578\u503C\u70BA4000000000\u3002\n\n\u5982\u679C\u6240\u63D0\u4F9B\u7684\u5E36\u7B26\u865F\u7684\u516B\u9032\u5236\u6578\u662F\u6709\u6548\u7684\u516B\u9032\u5236\u6578,\u51FD\u6578\u6703\u81EA\u52D5\u5C07\u5176\u8F49\u63DB\u70BA\u76F8\u61C9\u7684\u5B57\u4E32\u8F38\u5165\u3002\u4F8B\u5982,OCT2HEX\uFF08177\uFF09\u548COCT2HEX\uFF08"177"\uFF09\u5F97\u51FA\u7684\u7D50\u679C\u76F8\u540C,\u5747\u70BA7F\u3002'
  25074. },
  25075. {
  25076. "name": "places",
  25077. "detail": "[ \u53EF\u9078 ] - \u7D50\u679C\u4E2D\u8981\u78BA\u4FDD\u7684\u6709\u6548\u4F4D\u6578\u3002\n\n\u5982\u679C\u8A2D\u5B9A\u7684\u6709\u6548\u4F4D\u6578\u5927\u65BC\u7D50\u679C\u4E2D\u7684\u6709\u6548\u4F4D\u6578,\u5247\u5728\u7D50\u679C\u7684\u5DE6\u5074\u586B\u51450,\u4F7F\u7E3D\u6709\u6548\u4F4D\u6578\u9054\u5230\u6709\u6548\u4F4D\u6578\u3002\n\n\u5982\u679C\u5E36\u7B26\u865F\u7684\u516B\u9032\u5236\u6578\u7684\u6700\u9AD8\u4F4D\u70BA1,\u5247\u5FFD\u7565\u6B64\u503C\uFF1B\u5373\u7576\u7D66\u5B9A\u7684\u5E36\u7B26\u865F\u7684\u516B\u9032\u5236\u6578\u5927\u65BC\u7B49\u65BC4000000000\u6642\u5FFD\u7565\u6B64\u503C\u3002"
  25078. }
  25079. ]
  25080. },
  25081. "COMPLEX": {
  25082. "d": "\u5C07\u5BE6\u4FC2\u6578\u53CA\u865B\u4FC2\u6578\u8F49\u63DB\u70BA x+yi \u6216 x+yj \u5F62\u5F0F\u7684\u8907\u6578\u3002",
  25083. "a": "\u5C07\u5BE6\u4FC2\u6578\u53CA\u865B\u4FC2\u6578\u8F49\u63DB\u70BA x+yi \u6216 x+yj \u5F62\u5F0F\u7684\u8907\u6578\u3002",
  25084. "p": [
  25085. {
  25086. "name": "real_num",
  25087. "detail": "\u8907\u6578\u7684\u5BE6\u4FC2\u6578\u3002"
  25088. },
  25089. {
  25090. "name": "i_num",
  25091. "detail": "\u8907\u6578\u7684\u865B\u4FC2\u6578\u3002"
  25092. },
  25093. {
  25094. "name": "suffix",
  25095. "detail": '[\u53EF\u9078 - \u9ED8\u8A8D\u70BA"i"] - \u8907\u6578\u4E2D\u865B\u4FC2\u6578\u7684\u5C3E\u78BC\u3002'
  25096. }
  25097. ]
  25098. },
  25099. "IMREAL": {
  25100. "d": "\u8FD4\u56DE\u4EE5 x+yi \u6216 x+yj \u6587\u672C\u683C\u5F0F\u8868\u793A\u7684\u8907\u6578\u7684\u5BE6\u4FC2\u6578\u3002",
  25101. "a": "\u8FD4\u56DE\u4EE5 x+yi \u6216 x+yj \u6587\u672C\u683C\u5F0F\u8868\u793A\u7684\u8907\u6578\u7684\u5BE6\u4FC2\u6578\u3002",
  25102. "p": [
  25103. {
  25104. "name": "inumber",
  25105. "detail": "\u9700\u8981\u8A08\u7B97\u5176\u5BE6\u4FC2\u6578\u7684\u8907\u6578\u3002"
  25106. }
  25107. ]
  25108. },
  25109. "IMAGINARY": {
  25110. "d": "\u8FD4\u56DE\u4EE5 x+yi \u6216 x+yj \u6587\u672C\u683C\u5F0F\u8868\u793A\u7684\u8907\u6578\u7684\u865B\u4FC2\u6578\u3002",
  25111. "a": "\u8FD4\u56DE\u4EE5 x+yi \u6216 x+yj \u6587\u672C\u683C\u5F0F\u8868\u793A\u7684\u8907\u6578\u7684\u865B\u4FC2\u6578\u3002",
  25112. "p": [
  25113. {
  25114. "name": "inumber",
  25115. "detail": "\u9700\u8981\u8A08\u7B97\u5176\u865B\u4FC2\u6578\u7684\u8907\u6578\u3002"
  25116. }
  25117. ]
  25118. },
  25119. "IMCONJUGATE": {
  25120. "d": "\u8FD4\u56DE\u4EE5 x+yi \u6216 x+yj \u6587\u672C\u683C\u5F0F\u8868\u793A\u7684\u8907\u6578\u7684\u5171\u8EDB\u8907\u6578\u3002",
  25121. "a": "\u8FD4\u56DE\u4EE5 x+yi \u6216 x+yj \u6587\u672C\u683C\u5F0F\u8868\u793A\u7684\u8907\u6578\u7684\u5171\u8EDB\u8907\u6578\u3002",
  25122. "p": [
  25123. {
  25124. "name": "inumber",
  25125. "detail": "\u9700\u8981\u8A08\u7B97\u5176\u5171\u8EDB\u6578\u7684\u8907\u6578\u3002"
  25126. }
  25127. ]
  25128. },
  25129. "IMABS": {
  25130. "d": "\u8FD4\u56DE\u4EE5 x+yi \u6216 x+yj \u6587\u672C\u683C\u5F0F\u8868\u793A\u7684\u8907\u6578\u7684\u7D55\u5C0D\u503C\uFF08\u6A21\uFF09\u3002",
  25131. "a": "\u8FD4\u56DE\u4EE5 x+yi \u6216 x+yj \u6587\u672C\u683C\u5F0F\u8868\u793A\u7684\u8907\u6578\u7684\u7D55\u5C0D\u503C\uFF08\u6A21\uFF09\u3002",
  25132. "p": [
  25133. {
  25134. "name": "inumber",
  25135. "detail": "\u8981\u8A08\u7B97\u5176\u7D55\u5C0D\u503C\u7684\u8907\u6578\u3002"
  25136. }
  25137. ]
  25138. },
  25139. "DELTA": {
  25140. "d": "\u6AA2\u9A57\u5169\u500B\u503C\u662F\u5426\u76F8\u7B49\u3002\u5982\u679C number1=number2,\u5247\u8FD4\u56DE1\uFF1B\u5426\u5247\u8FD4\u56DE0\u3002",
  25141. "a": "\u6AA2\u9A57\u5169\u500B\u503C\u662F\u5426\u76F8\u7B49\u3002\u5982\u679C number1=number2,\u5247\u8FD4\u56DE1\uFF1B\u5426\u5247\u8FD4\u56DE0\u3002",
  25142. "p": [
  25143. {
  25144. "name": "number1",
  25145. "detail": "\u7B2C\u4E00\u500B\u6578\u4F4D\u3002"
  25146. },
  25147. {
  25148. "name": "number2",
  25149. "detail": "[\u53EF\u9078 - \u9ED8\u8A8D\u70BA0] - \u7B2C\u4E8C\u500B\u6578\u4F4D\u3002"
  25150. }
  25151. ]
  25152. },
  25153. "IMSUM": {
  25154. "d": "\u8FD4\u56DE\u4EE5 x+yi \u6216 x+yj \u6587\u672C\u683C\u5F0F\u8868\u793A\u7684 1 \u81F3 255 \u500B\u8907\u6578\u7684\u548C\u3002",
  25155. "a": "\u8FD4\u56DE\u4EE5 x+yi \u6216 x+yj \u6587\u672C\u683C\u5F0F\u8868\u793A\u7684 1 \u81F3 255 \u500B\u8907\u6578\u7684\u548C\u3002",
  25156. "p": [
  25157. {
  25158. "name": "inumber1",
  25159. "detail": "\u8981\u76F8\u52A0\u7684\u7B2C\u4E00\u500B\u8907\u6578"
  25160. },
  25161. {
  25162. "name": "inumber2, \u2026",
  25163. "detail": "[\u53EF\u9078] -\u8981\u8207\u503C1\u76F8\u52A0\u7684\u5176\u4ED6\u8907\u6578"
  25164. }
  25165. ]
  25166. },
  25167. "IMSUB": {
  25168. "d": "\u8FD4\u56DE\u4EE5 x+yi \u6216 x+yj \u6587\u672C\u683C\u5F0F\u8868\u793A\u7684\u5169\u500B\u8907\u6578\u7684\u5DEE\u3002",
  25169. "a": "\u8FD4\u56DE\u4EE5 x+yi \u6216 x+yj \u6587\u672C\u683C\u5F0F\u8868\u793A\u7684\u5169\u500B\u8907\u6578\u7684\u5DEE\u3002",
  25170. "p": [
  25171. {
  25172. "name": "inumber1",
  25173. "detail": "\u5F9E\uFF08\u8907\uFF09\u6578\u4E2D\u51CF\u53BB inumber2\u3002"
  25174. },
  25175. {
  25176. "name": "inumber2",
  25177. "detail": "\u5F9E inumber1 \u4E2D\u51CF\uFF08\u8907\uFF09\u6578\u3002"
  25178. }
  25179. ]
  25180. },
  25181. "IMPRODUCT": {
  25182. "d": "\u8FD4\u56DE\u4EE5 x+yi \u6216 x+yj \u6587\u672C\u683C\u5F0F\u8868\u793A\u7684 1 \u81F3 255 \u500B\u8907\u6578\u7684\u4E58\u7A4D\u3002",
  25183. "a": "\u8FD4\u56DE\u4EE5 x+yi \u6216 x+yj \u6587\u672C\u683C\u5F0F\u8868\u793A\u7684 1 \u81F3 255 \u500B\u8907\u6578\u7684\u4E58\u7A4D\u3002",
  25184. "p": [
  25185. {
  25186. "name": "inumber1",
  25187. "detail": "\u7528\u65BC\u8A08\u7B97\u4E58\u7A4D\u7684\u7B2C\u4E00\u500B\u8907\u6578"
  25188. },
  25189. {
  25190. "name": "inumber2, \u2026",
  25191. "detail": "[\u53EF\u9078] -\u8981\u76F8\u4E58\u7684\u5176\u4ED6\u8907\u6578\u3002"
  25192. }
  25193. ]
  25194. },
  25195. "IMDIV": {
  25196. "d": "\u8FD4\u56DE\u4EE5 x+yi \u6216 x+yj \u6587\u672C\u683C\u5F0F\u8868\u793A\u7684\u5169\u500B\u8907\u6578\u7684\u5546\u3002",
  25197. "a": "\u8FD4\u56DE\u4EE5 x+yi \u6216 x+yj \u6587\u672C\u683C\u5F0F\u8868\u793A\u7684\u5169\u500B\u8907\u6578\u7684\u5546\u3002",
  25198. "p": [
  25199. {
  25200. "name": "inumber1",
  25201. "detail": "\u8907\u6578\u5206\u5B50\u6216\u88AB\u9664\u6578\u3002"
  25202. },
  25203. {
  25204. "name": "inumber2",
  25205. "detail": "\u8907\u6578\u5206\u6BCD\u6216\u9664\u6578\u3002"
  25206. }
  25207. ]
  25208. },
  25209. "NOT": {
  25210. "d": '\u8FD4\u56DE\u67D0\u500B\u908F\u8F2F\u503C\u7684\u76F8\u53CD\u503C-"NOT\uFF08TRUE\uFF08\uFF09\uFF09"\u5C07\u8FD4\u56DEFALSE\uFF1B"NOT\uFF08FALSE\uFF08\uFF09\uFF09"\u5C07\u8FD4\u56DETRUE\u3002',
  25211. "a": '\u8FD4\u56DE\u67D0\u500B\u908F\u8F2F\u503C\u7684\u76F8\u53CD\u503C-"NOT\uFF08TRUE\uFF08\uFF09\uFF09"\u5C07\u8FD4\u56DEFALSE\uFF1B"NOT\uFF08FALSE\uFF08\uFF09\uFF09"\u5C07\u8FD4\u56DETRUE\u3002',
  25212. "p": [
  25213. {
  25214. "name": "logical",
  25215. "detail": "\u8A08\u7B97\u7D50\u679C\u70BATRUE\u6216FALSE\u7684\u4EFB\u4F55\u503C\u6216\u904B\u7B97\u5F0F\u3002"
  25216. }
  25217. ]
  25218. },
  25219. "TRUE": {
  25220. "d": "\u8FD4\u56DE\u908F\u8F2F\u503C TRUE\u3002",
  25221. "a": "\u8FD4\u56DE\u908F\u8F2F\u503C TRUE\u3002",
  25222. "p": []
  25223. },
  25224. "FALSE": {
  25225. "d": "\u8FD4\u56DE\u908F\u8F2F\u503C FALSE\u3002",
  25226. "a": "\u8FD4\u56DE\u908F\u8F2F\u503C FALSE\u3002",
  25227. "p": []
  25228. },
  25229. "AND": {
  25230. "d": "\u6240\u6709\u53C3\u6578\u7684\u8A08\u7B97\u7D50\u679C\u70BATRUE\u6642,\u8FD4\u56DETRUE\uFF1B\u53EA\u8981\u6709\u4E00\u500B\u53C3\u6578\u7684\u8A08\u7B97\u7D50\u679C\u70BAFALSE,\u5373\u8FD4\u56DEFALSE\u3002",
  25231. "a": "\u6240\u6709\u53C3\u6578\u7684\u8A08\u7B97\u7D50\u679C\u70BATRUE\u6642,\u8FD4\u56DETRUE\uFF1B\u53EA\u8981\u6709\u4E00\u500B\u53C3\u6578\u7684\u8A08\u7B97\u7D50\u679C\u70BAFALSE,\u5373\u8FD4\u56DEFALSE\u3002",
  25232. "p": [
  25233. {
  25234. "name": "logical1",
  25235. "detail": "\u8981\u6E2C\u8A66\u7684\u7B2C\u4E00\u500B\u689D\u4EF6,\u5176\u8A08\u7B97\u7D50\u679C\u53EF\u4EE5\u70BATRUE\u6216FALSE\u3002"
  25236. },
  25237. {
  25238. "name": "logical2,...",
  25239. "detail": "[\u53EF\u9078] - \u8981\u6E2C\u8A66\u7684\u5176\u4ED6\u689D\u4EF6,\u5176\u8A08\u7B97\u7D50\u679C\u53EF\u4EE5\u70BATRUE\u6216FALSE,\u6700\u591A\u53EF\u5305\u542B255\u500B\u689D\u4EF6\u3002"
  25240. }
  25241. ]
  25242. },
  25243. "IFERROR": {
  25244. "d": "\u5982\u679C\u7B2C\u4E00\u500B\u53C3\u6578\u4E0D\u662F\u932F\u8AA4\u503C,\u5C31\u8FD4\u56DE\u7B2C\u4E00\u500B\u53C3\u6578\uFF1B\u5426\u5247,\u8FD4\u56DE\u7B2C\u4E8C\u500B\u53C3\u6578\u3002",
  25245. "a": "\u5982\u679C\u7B2C\u4E00\u500B\u53C3\u6578\u4E0D\u662F\u932F\u8AA4\u503C",
  25246. "p": [
  25247. {
  25248. "name": "value",
  25249. "detail": "\u6AA2\u67E5\u662F\u5426\u5B58\u5728\u932F\u8AA4\u7684\u53C3\u6578\u3002"
  25250. },
  25251. {
  25252. "name": "value_if_error",
  25253. "detail": "\u516C\u5F0F\u7684\u8A08\u7B97\u7D50\u679C\u932F\u8AA4\u6642\u8FD4\u56DE\u7684\u503C\u3002\u8A08\u7B97\u4EE5\u4E0B\u932F\u8AA4\u985E\u578B:#N/A\u3001#VALUE\uFF01\u3001#REF\uFF01\u3001#DIV/0\uFF01\u3001#NUM\uFF01\u3001#NAME\uFF1F\u6216#NULL\uFF01\u3002"
  25254. }
  25255. ]
  25256. },
  25257. "IF": {
  25258. "d": "\u7576\u908F\u8F2F\u904B\u7B97\u5F0F\u7684\u503C\u70BATRUE\u6642\u8FD4\u56DE\u4E00\u500B\u503C,\u800C\u7576\u5176\u70BAFALSE\u6642\u8FD4\u56DE\u53E6\u4E00\u500B\u503C\u3002",
  25259. "a": "\u7576\u908F\u8F2F\u904B\u7B97\u5F0F\u7684\u503C\u70BATRUE\u6642\u8FD4\u56DE\u4E00\u500B\u503C,\u800C\u7576\u5176\u70BAFALSE\u6642\u8FD4\u56DE\u53E6\u4E00\u500B\u503C\u3002",
  25260. "p": [
  25261. {
  25262. "name": "logical_test",
  25263. "detail": "\u4E00\u500B\u904B\u7B97\u5F0F\u6216\u5C0D\u5305\u542B\u904B\u7B97\u5F0F\u7684\u5132\u5B58\u683C\u7684\u5F15\u7528,\u8A72\u904B\u7B97\u5F0F\u4EE3\u8868\u67D0\u7A2E\u908F\u8F2F\u503C\uFF08\u5373TRUE\u6216FALSE\uFF09\u3002"
  25264. },
  25265. {
  25266. "name": "value_if_true",
  25267. "detail": "\u7576\u908F\u8F2F\u904B\u7B97\u5F0F\u70BATRUE\u6642\u7684\u8FD4\u56DE\u503C\u3002"
  25268. },
  25269. {
  25270. "name": "value_if_false",
  25271. "detail": "[\u53EF\u9078 - \u9ED8\u8A8D\u70BA\u7A7A\u767D] - \u7576\u908F\u8F2F\u904B\u7B97\u5F0F\u7B49\u65BCFALSE\u6642\u7684\u51FD\u6578\u8FD4\u56DE\u503C\u3002"
  25272. }
  25273. ]
  25274. },
  25275. "OR": {
  25276. "d": "\u53EA\u8981\u6709\u4E00\u500B\u53C3\u6578\u7684\u8A08\u7B97\u7D50\u679C\u70BATRUE\u6642,\u8FD4\u56DETRUE\uFF1B\u6240\u6709\u53C3\u6578\u7684\u8A08\u7B97\u7D50\u679C\u70BAFALSE,\u5373\u8FD4\u56DEFALSE\u3002",
  25277. "a": "\u53EA\u8981\u6709\u4E00\u500B\u53C3\u6578\u7684\u8A08\u7B97\u7D50\u679C\u70BATRUE\u6642,\u8FD4\u56DETRUE\uFF1B\u6240\u6709\u53C3\u6578\u7684\u8A08\u7B97\u7D50\u679C\u70BAFALSE,\u5373\u8FD4\u56DEFALSE\u3002",
  25278. "p": [
  25279. {
  25280. "name": "logical1",
  25281. "detail": "\u8981\u6E2C\u8A66\u7684\u7B2C\u4E00\u500B\u689D\u4EF6,\u5176\u8A08\u7B97\u7D50\u679C\u53EF\u4EE5\u70BATRUE\u6216FALSE\u3002"
  25282. },
  25283. {
  25284. "name": "\u908F\u8F2F\u904B\u7B97\u5F0F2",
  25285. "detail": "[\u53EF\u9078] - \u5176\u4ED6\u904B\u7B97\u5F0F\u6216\u5C0D\u5305\u542B\u904B\u7B97\u5F0F\u7684\u5132\u5B58\u683C\u7684\u5F15\u7528,\u9019\u4E9B\u904B\u7B97\u5F0F\u4EE3\u8868\u67D0\u7A2E\u908F\u8F2F\u503C\uFF08\u5373TRUE\u6216FALSE\uFF09\u6216\u8005\u53EF\u4EE5\u5F37\u5236\u8F49\u63DB\u70BA\u908F\u8F2F\u503C\u3002"
  25286. }
  25287. ]
  25288. },
  25289. "NE": {
  25290. "d": '\u5982\u679C\u6307\u5B9A\u7684\u503C\u4E0D\u76F8\u7B49,\u5247\u8FD4\u56DE"TRUE"\uFF1B\u5426\u5247\u8FD4\u56DE"FALSE"\u3002\u76F8\u7576\u65BC"<>"\u904B\u7B97\u5B50\u3002',
  25291. "a": '\u5982\u679C\u6307\u5B9A\u7684\u503C\u4E0D\u76F8\u7B49,\u5247\u8FD4\u56DE"TRUE"\uFF1B\u5426\u5247\u8FD4\u56DE"FALSE"\u3002\u76F8\u7576\u65BC"<>"\u904B\u7B97\u5B50\u3002',
  25292. "p": [
  25293. {
  25294. "name": "value1",
  25295. "detail": "\u7B2C\u4E00\u500B\u503C\u3002"
  25296. },
  25297. {
  25298. "name": "value2",
  25299. "detail": "\u8981\u6AA2\u67E5\u662F\u5426\u8207 value1 \u4E0D\u76F8\u7B49\u7684\u503C\u3002"
  25300. }
  25301. ]
  25302. },
  25303. "EQ": {
  25304. "d": '\u5982\u679C\u6307\u5B9A\u7684\u503C\u76F8\u7B49,\u5247\u8FD4\u56DE"TRUE"\uFF1B\u5426\u5247\u8FD4\u56DE"FALSE"\u3002\u76F8\u7576\u65BC"="\u904B\u7B97\u5B50\u3002',
  25305. "a": '\u5982\u679C\u6307\u5B9A\u7684\u503C\u76F8\u7B49,\u5247\u8FD4\u56DE"TRUE"\uFF1B\u5426\u5247\u8FD4\u56DE"FALSE"\u3002\u76F8\u7576\u65BC"="\u904B\u7B97\u5B50\u3002',
  25306. "p": [
  25307. {
  25308. "name": "value1",
  25309. "detail": "\u7B2C\u4E00\u500B\u503C\u3002"
  25310. },
  25311. {
  25312. "name": "value2",
  25313. "detail": "\u8981\u6AA2\u67E5\u662F\u5426\u8207value1\u76F8\u7B49\u7684\u503C\u3002"
  25314. }
  25315. ]
  25316. },
  25317. "GT": {
  25318. "d": false,
  25319. "a": false,
  25320. "p": [
  25321. {
  25322. "name": "value1",
  25323. "detail": "\u8981\u6E2C\u8A66\u5176\u662F\u5426\u5927\u65BC value2 \u7684\u503C\u3002"
  25324. },
  25325. {
  25326. "name": "value2",
  25327. "detail": "\u7B2C\u4E8C\u500B\u503C\u3002"
  25328. }
  25329. ]
  25330. },
  25331. "GTE": {
  25332. "d": '\u5982\u679C\u7B2C\u4E00\u500B\u53C3\u6578\u5927\u65BC\u6216\u7B49\u65BC\u7B2C\u4E8C\u500B\uFF0C\u5247\u8FD4\u56DETRUE\uFF1B\u5426\u5247\u8FD4\u56DEFALSE\u3002\u76F8\u7576\u65BC">="\u904B\u7B97\u5B50\u3002',
  25333. "a": '\u5982\u679C\u7B2C\u4E00\u500B\u53C3\u6578\u5927\u65BC\u6216\u7B49\u65BC\u7B2C\u4E8C\u500B\uFF0C\u5247\u8FD4\u56DETRUE\uFF1B\u5426\u5247\u8FD4\u56DEFALSE\u3002\u76F8\u7576\u65BC">="\u904B\u7B97\u5B50\u3002',
  25334. "p": [
  25335. {
  25336. "name": "value1",
  25337. "detail": "\u8981\u6D4B\u8BD5\u5176\u662F\u5426\u5927\u4E8E\u7B49\u4E8E value2 \u7684\u503C\u3002"
  25338. },
  25339. {
  25340. "name": "value2",
  25341. "detail": "\u7B2C\u4E8C\u500B\u503C\u3002"
  25342. }
  25343. ]
  25344. },
  25345. "LT": {
  25346. "d": '\u5982\u679C\u7B2C\u4E00\u500B\u53C3\u6578\u56B4\u683C\u5C0F\u65BC\u7B2C\u4E8C\u500B\uFF0C\u5247\u8FD4\u56DETRUE\uFF1B\u5426\u5247\u8FD4\u56DEFALSE\u3002\u76F8\u7576\u65BC"<"\u904B\u7B97\u5B50\u3002',
  25347. "a": '\u5982\u679C\u7B2C\u4E00\u500B\u53C3\u6578\u56B4\u683C\u5C0F\u65BC\u7B2C\u4E8C\u500B\uFF0C\u5247\u8FD4\u56DETRUE\uFF1B\u5426\u5247\u8FD4\u56DEFALSE\u3002\u76F8\u7576\u65BC"<"\u904B\u7B97\u5B50\u3002',
  25348. "p": [
  25349. {
  25350. "name": "value1",
  25351. "detail": "\u8981\u6D4B\u8BD5\u5176\u662F\u5426\u5C0F\u4E8E value2 \u7684\u503C\u3002"
  25352. },
  25353. {
  25354. "name": "value2",
  25355. "detail": "\u7B2C\u4E8C\u500B\u503C\u3002"
  25356. }
  25357. ]
  25358. },
  25359. "LTE": {
  25360. "d": '\u5982\u679C\u7B2C\u4E00\u500B\u53C3\u6578\u5C0F\u65BC\u6216\u7B49\u65BC\u7B2C\u4E8C\u500B\uFF0C\u5247\u8FD4\u56DETRUE\uFF1B\u5426\u5247\u8FD4\u56DEFALSE\u3002\u76F8\u7576\u65BC"<="\u904B\u7B97\u5B50\u3002',
  25361. "a": '\u5982\u679C\u7B2C\u4E00\u500B\u53C3\u6578\u5C0F\u65BC\u6216\u7B49\u65BC\u7B2C\u4E8C\u500B\uFF0C\u5247\u8FD4\u56DETRUE\uFF1B\u5426\u5247\u8FD4\u56DEFALSE\u3002\u76F8\u7576\u65BC"<="\u904B\u7B97\u5B50\u3002',
  25362. "p": [
  25363. {
  25364. "name": "value1",
  25365. "detail": "\u8981\u6D4B\u8BD5\u5176\u662F\u5426\u5C0F\u4E8E\u7B49\u4E8E value2 \u7684\u503C\u3002"
  25366. },
  25367. {
  25368. "name": "value2",
  25369. "detail": "\u7B2C\u4E8C\u500B\u503C\u3002"
  25370. }
  25371. ]
  25372. },
  25373. "ADD": {
  25374. "d": '\u8FD4\u56DE\u5169\u500B\u6578\u503C\u4E4B\u548C\u3002\u76F8\u7576\u65BC"+"\u904B\u7B97\u5B50\u3002',
  25375. "a": '\u8FD4\u56DE\u5169\u500B\u6578\u503C\u4E4B\u548C\u3002\u76F8\u7576\u65BC"+"\u904B\u7B97\u5B50\u3002',
  25376. "p": [
  25377. {
  25378. "name": "value1",
  25379. "detail": "\u7B2C\u4E00\u500B\u52A0\u6578\u3002"
  25380. },
  25381. {
  25382. "name": "value2",
  25383. "detail": "\u7B2C\u4E8C\u500B\u52A0\u6578\u3002"
  25384. }
  25385. ]
  25386. },
  25387. "MINUS": {
  25388. "d": '\u8FD4\u56DE\u5169\u500B\u6578\u503C\u4E4B\u5DEE\u3002\u76F8\u7576\u65BC"-"\u904B\u7B97\u5B50\u3002',
  25389. "a": '\u8FD4\u56DE\u5169\u500B\u6578\u503C\u4E4B\u5DEE\u3002\u76F8\u7576\u65BC"-"\u904B\u7B97\u5B50\u3002',
  25390. "p": [
  25391. {
  25392. "name": "value1",
  25393. "detail": "\u88AB\u6E1B\u6578,\u5373\u8981\u5C0D\u5176\u8A08\u51CF\u7684\u6578\u503C\u3002"
  25394. },
  25395. {
  25396. "name": "value2",
  25397. "detail": "\u6E1B\u6578,\u5373\u8981\u5F9Evalue1\u4E2D\u51CF\u9664\u7684\u6578\u503C\u3002"
  25398. }
  25399. ]
  25400. },
  25401. "MULTIPLY": {
  25402. "d": '\u8FD4\u56DE\u5169\u500B\u6578\u7684\u4E58\u7A4D\u3002\u76F8\u7576\u65BC"*"\u904B\u7B97\u5B50\u3002',
  25403. "a": '\u8FD4\u56DE\u5169\u500B\u6578\u7684\u4E58\u7A4D\u3002\u76F8\u7576\u65BC"*"\u904B\u7B97\u5B50\u3002',
  25404. "p": [
  25405. {
  25406. "name": "value1",
  25407. "detail": "\u7B2C\u4E00\u500B\u4E58\u6578\u3002"
  25408. },
  25409. {
  25410. "name": "value2",
  25411. "detail": "\u7B2C\u4E8C\u500B\u4E58\u6578\u3002"
  25412. }
  25413. ]
  25414. },
  25415. "DIVIDE": {
  25416. "d": "\u8FD4\u56DE\u5169\u500B\u53C3\u6578\u76F8\u9664\u6240\u5F97\u7684\u7D50\u679C\u3002\u76F8\u7576\u65BC`/`\u904B\u7B97\u5B50\u3002",
  25417. "a": "\u8FD4\u56DE\u5169\u500B\u53C3\u6578\u76F8\u9664\u6240\u5F97\u7684\u7D50\u679C\u3002\u76F8\u7576\u65BC`/`\u904B\u7B97\u5B50\u3002",
  25418. "p": [
  25419. {
  25420. "name": "value1",
  25421. "detail": "\u8981\u88AB\u9664\u7684\u6578\u503C\u3002"
  25422. },
  25423. {
  25424. "name": "value2",
  25425. "detail": "\u7528\u65BC\u9664\u5176\u4ED6\u6578\u7684\u6578\u503C\u3002\n\n\u9664\u6578\u4E0D\u5F97\u70BA0\u3002"
  25426. }
  25427. ]
  25428. },
  25429. "CONCAT": {
  25430. "d": "\u8FD4\u56DE\u5169\u500B\u503C\u7684\u4E32\u806F\u3002\u76F8\u7576\u65BC`&`\u904B\u7B97\u5B50\u3002",
  25431. "a": "\u8FD4\u56DE\u5169\u500B\u503C\u7684\u4E32\u806F\u3002\u76F8\u7576\u65BC`&`\u904B\u7B97\u5B50\u3002",
  25432. "p": [
  25433. {
  25434. "name": "value1",
  25435. "detail": "value2 \u5C07\u9644\u65BC\u5176\u5F8C\u7684\u503C\u3002"
  25436. },
  25437. {
  25438. "name": "value2",
  25439. "detail": "\u8981\u9644\u65BC value1 \u4E4B\u5F8C\u7684\u503C\u3002"
  25440. }
  25441. ]
  25442. },
  25443. "UNARY_PERCENT": {
  25444. "d": '\u8FD4\u56DE\u6309\u767E\u5206\u6BD4\u89E3\u91CB\u7684\u6578\u503C\u3002\u4F8B\u5982,"UNARY_PERCENT\uFF08100\uFF09"\u7B49\u65BC1\u3002',
  25445. "a": '\u8FD4\u56DE\u6309\u767E\u5206\u6BD4\u89E3\u91CB\u7684\u6578\u503C\u3002\u4F8B\u5982,"UNARY_PERCENT\uFF08100\uFF09"\u7B49\u65BC1\u3002',
  25446. "p": [
  25447. {
  25448. "name": "number",
  25449. "detail": "\u8981\u4F5C\u70BA\u767E\u5206\u6BD4\u89E3\u91CB\u7684\u6578\u503C\u3002"
  25450. }
  25451. ]
  25452. },
  25453. "CONCATENATE": {
  25454. "d": "\u5C07\u5169\u500B\u6216\u591A\u500B\u6587\u5B57\u5B57\u4E32\u806F\u63A5\u70BA\u4E00\u500B\u5B57\u4E32\u3002",
  25455. "a": "\u5C07\u5169\u500B\u6216\u591A\u500B\u6587\u5B57\u5B57\u4E32\u806F\u63A5\u70BA\u4E00\u500B\u5B57\u4E32\u3002",
  25456. "p": [
  25457. {
  25458. "name": "text1",
  25459. "detail": "\u521D\u59CB\u5B57\u4E32\u3002"
  25460. },
  25461. {
  25462. "name": "text2\u2026",
  25463. "detail": "[\u53EF\u9078] - \u8981\u6309\u9806\u5E8F\u9023\u63A5\u5728\u4E00\u8D77\u7684\u5176\u4ED6\u5B57\u4E32\u3002"
  25464. }
  25465. ]
  25466. },
  25467. "CODE": {
  25468. "d": "\u8FD4\u56DE\u6240\u63D0\u4F9B\u7684\u5B57\u4E32\u4E2D\u9996\u5B57\u5143\u7684Unicode\u6620\u5C04\u503C\u3002",
  25469. "a": "\u8FD4\u56DE\u6240\u63D0\u4F9B\u7684\u5B57\u4E32\u4E2D\u9996\u5B57\u5143\u7684Unicode\u6620\u5C04\u503C\u3002",
  25470. "p": [
  25471. {
  25472. "name": "text",
  25473. "detail": "\u8981\u8FD4\u56DE\u5176\u9996\u5B57\u5143\u7684Unicode\u6620\u5C04\u503C\u7684\u5B57\u4E32\u3002"
  25474. }
  25475. ]
  25476. },
  25477. "CHAR": {
  25478. "d": "\u6309\u7167\u7576\u524DUnicode\u7DE8\u78BC\u8868,\u5C07\u6578\u4F4D\u8F49\u63DB\u70BA\u5C0D\u61C9\u7684\u5B57\u5143\u3002",
  25479. "a": "\u6309\u7167\u7576\u524DUnicode\u7DE8\u78BC\u8868,\u5C07\u6578\u4F4D\u8F49\u63DB\u70BA\u5C0D\u61C9\u7684\u5B57\u5143\u3002",
  25480. "p": [
  25481. {
  25482. "name": "number",
  25483. "detail": "\u4ECB\u65BC1\u5230255\u4E4B\u9593\u7684\u6578\u4F4D\u3002"
  25484. }
  25485. ]
  25486. },
  25487. "ARABIC": {
  25488. "d": "\u5C07\u7F85\u99AC\u6578\u5B57\u8F49\u63DB\u70BA\u963F\u62C9\u4F2F\u6578\u5B57\u3002",
  25489. "a": "\u5C07\u7F85\u99AC\u6578\u5B57\u8F49\u63DB\u70BA\u963F\u62C9\u4F2F\u6578\u5B57\u3002",
  25490. "p": [
  25491. {
  25492. "name": "text",
  25493. "detail": "\u8981\u8F49\u63DB\u683C\u5F0F\u7684\u7F85\u99AC\u6578\u5B57"
  25494. }
  25495. ]
  25496. },
  25497. "ROMAN": {
  25498. "d": "\u5C07\u6578\u4F4D\u683C\u5F0F\u8A2D\u5B9A\u70BA\u7F85\u99AC\u6578\u5B57\u5F62\u5F0F\u3002",
  25499. "a": "\u5C07\u6578\u4F4D\u683C\u5F0F\u8A2D\u5B9A\u70BA\u7F85\u99AC\u6578\u5B57\u5F62\u5F0F\u3002",
  25500. "p": [
  25501. {
  25502. "name": "number",
  25503. "detail": "\u8981\u8A2D\u5B9A\u683C\u5F0F\u7684\u6578\u4F4D,\u4ECB\u65BC1\u52303999\u4E4B\u9593\uFF08\u5305\u62EC\u9019\u5169\u500B\u6578\u4F4D\uFF09\u3002"
  25504. }
  25505. ]
  25506. },
  25507. "REGEXEXTRACT": {
  25508. "d": "\u6309\u7167\u898F\u5247\u904B\u7B97\u5F0F\u9078\u53D6\u5339\u914D\u7684\u5B50\u4E32\u3002",
  25509. "a": "\u6309\u7167\u898F\u5247\u904B\u7B97\u5F0F\u9078\u53D6\u5339\u914D\u7684\u5B50\u4E32\u3002",
  25510. "p": [
  25511. {
  25512. "name": "text",
  25513. "detail": "\u8F38\u5165\u6587\u5B57\u3002"
  25514. },
  25515. {
  25516. "name": "regular_expression",
  25517. "detail": "\u6B64\u51FD\u6578\u5C07\u8FD4\u56DE\u6587\u5B57\u4E2D\u7B26\u5408\u6B64\u904B\u7B97\u5F0F\u7684\u7B2C\u4E00\u500B\u5B50\u4E32\u3002"
  25518. }
  25519. ]
  25520. },
  25521. "REGEXMATCH": {
  25522. "d": "\u5224\u65B7\u4E00\u6BB5\u6587\u5B57\u662F\u5426\u8207\u898F\u5247\u904B\u7B97\u5F0F\u76F8\u5339\u914D\u3002",
  25523. "a": "\u5224\u65B7\u4E00\u6BB5\u6587\u5B57\u662F\u5426\u8207\u898F\u5247\u904B\u7B97\u5F0F\u76F8\u5339\u914D\u3002",
  25524. "p": [
  25525. {
  25526. "name": "text",
  25527. "detail": "\u8981\u7528\u898F\u5247\u904B\u7B97\u5F0F\u6E2C\u8A66\u7684\u6587\u5B57\u3002"
  25528. },
  25529. {
  25530. "name": "regular_expression",
  25531. "detail": "\u7528\u4F86\u6E2C\u8A66\u6587\u5B57\u7684\u898F\u5247\u904B\u7B97\u5F0F\u3002"
  25532. }
  25533. ]
  25534. },
  25535. "REGEXREPLACE": {
  25536. "d": "\u4F7F\u7528\u898F\u5247\u904B\u7B97\u5F0F\u5C07\u6587\u5B57\u5B57\u4E32\u4E2D\u7684\u4E00\u90E8\u5206\u66FF\u63DB\u70BA\u5176\u4ED6\u6587\u5B57\u5B57\u4E32\u3002",
  25537. "a": "\u4F7F\u7528\u898F\u5247\u904B\u7B97\u5F0F\u5C07\u6587\u5B57\u5B57\u4E32\u4E2D\u7684\u4E00\u90E8\u5206\u66FF\u63DB\u70BA\u5176\u4ED6\u6587\u5B57\u5B57\u4E32\u3002",
  25538. "p": [
  25539. {
  25540. "name": "text",
  25541. "detail": "\u8981\u5C0D\u5176\u5C40\u90E8\u9032\u884C\u66FF\u63DB\u64CD\u4F5C\u7684\u6587\u5B57\u3002"
  25542. },
  25543. {
  25544. "name": "regular_expression",
  25545. "detail": "\u898F\u5247\u904B\u7B97\u5F0F\u3002text\u4E2D\u6240\u6709\u5339\u914D\u7684\u5BE6\u4F8B\u90FD\u5C07\u88AB\u66FF\u63DB\u3002"
  25546. },
  25547. {
  25548. "name": "replacement",
  25549. "detail": "\u8981\u63D2\u5165\u5230\u539F\u6709\u6587\u5B57\u4E2D\u7684\u6587\u5B57\u3002"
  25550. }
  25551. ]
  25552. },
  25553. "T": {
  25554. "d": "\u8FD4\u56DE\u6587\u672C\u683C\u5F0F\u7684\u5B57\u4E32\u53C3\u6578\u3002",
  25555. "a": "\u8FD4\u56DE\u6587\u672C\u683C\u5F0F\u7684\u5B57\u4E32\u53C3\u6578\u3002",
  25556. "p": [
  25557. {
  25558. "name": "value",
  25559. "detail": "\u8981\u8F49\u63DB\u70BA\u6587\u5B57\u7684\u53C3\u6578\u3002\n\n\u5982\u679C\u503C\u70BA\u6587\u5B57,T\u5C07\u8FD4\u56DE\u503C\u672C\u8EAB\u3002\n\n\u5982\u679C\u503C\u70BA\u6307\u5411\u5305\u542B\u6587\u5B57\u7684\u5132\u5B58\u683C\u7684\u5F15\u7528,T\u5C07\u8FD4\u56DE\u503C\u4E2D\u7684\u5167\u5BB9\u3002\n\n\u5982\u679C\u503C\u70BA\u932F\u8AA4\u503C\u6216\u5305\u542B\u932F\u8AA4\u503C\u7684\u5132\u5B58\u683C,T\u5C07\u8FD4\u56DE\u8A72\u932F\u8AA4\u503C\u3002\n\n\u5C0D\u65BC\u6240\u6709\u5176\u4ED6\u60C5\u51B5,T\u5C07\u8FD4\u56DE\u7A7A\u4E32\u3002"
  25560. }
  25561. ]
  25562. },
  25563. "FIXED": {
  25564. "d": "\u4EE5\u56FA\u5B9A\u7684\u5C0F\u6578\u4F4D\u6578\u8A2D\u5B9A\u6578\u4F4D\u7684\u683C\u5F0F\u3002",
  25565. "a": "\u4EE5\u56FA\u5B9A\u7684\u5C0F\u6578\u4F4D\u6578\u8A2D\u5B9A\u6578\u4F4D\u7684\u683C\u5F0F\u3002",
  25566. "p": [
  25567. {
  25568. "name": "number",
  25569. "detail": "\u8981\u9032\u884C\u820D\u5165\u4E26\u8F49\u63DB\u70BA\u6587\u5B57\u7684\u6578\u4F4D\u3002"
  25570. },
  25571. {
  25572. "name": "decimals",
  25573. "detail": "[\u53EF\u9078-\u9810\u8A2D\u503C\u70BA2] - \u7D50\u679C\u4E2D\u8981\u986F\u793A\u7684\u5C0F\u6578\u4F4D\u6578\u3002\n\n\u5982\u679C\u6578\u503C\u7684\u6709\u6548\u4F4D\u6578\u5C0F\u65BC\u5C0F\u6578\u4F4D\u6578,\u5C07\u4EE5\u96F6\u586B\u5145\u3002\u5982\u679C\u6578\u503C\u7684\u6709\u6548\u4F4D\u6578\u5927\u65BC\u5C0F\u6578\u4F4D\u6578,\u5247\u5C07\u5176\u820D\u5165\u5230\u6240\u9700\u7684\u5C0F\u6578\u4F4D\u6578\u800C\u4E0D\u662F\u5C07\u5176\u622A\u65B7\u3002"
  25574. },
  25575. {
  25576. "name": "no_commas",
  25577. "detail": "[\u53EF\u9078-\u9810\u8A2D\u503C\u70BAFALSE\uFF08\uFF09] - \u4E00\u500B\u908F\u8F2F\u503C,\u5982\u679C\u70BATRUE\uFF08\uFF09,\u5247\u6703\u7981\u6B62FIXED\u5728\u8FD4\u56DE\u7684\u6587\u5B57\u4E2D\u5305\u542B\u9017\u865F\u3002"
  25578. }
  25579. ]
  25580. },
  25581. "FIND": {
  25582. "d": "\u8FD4\u56DE\u5B57\u4E32\u5728\u6587\u5B57\u4E2D\u9996\u6B21\u51FA\u73FE\u7684\u4F4D\u7F6E\uFF08\u5340\u5206\u5927\u5C0F\u5BEB\uFF09\u3002",
  25583. "a": "\u8FD4\u56DE\u5B57\u4E32\u5728\u6587\u5B57\u4E2D\u9996\u6B21\u51FA\u73FE\u7684\u4F4D\u7F6E\uFF08\u5340\u5206\u5927\u5C0F\u5BEB\uFF09\u3002",
  25584. "p": [
  25585. {
  25586. "name": "find_text",
  25587. "detail": "\u8981\u5728\u8981\u8490\u7D22\u7684\u6587\u5B57\u4E2D\u67E5\u627E\u7684\u5B57\u4E32\u3002"
  25588. },
  25589. {
  25590. "name": "within_text",
  25591. "detail": "\u8981\u5728\u5176\u4E2D\u8490\u7D22\u8490\u7D22\u5B57\u4E32\u7684\u9996\u6B21\u51FA\u73FE\u4F4D\u7F6E\u7684\u6587\u5B57\u3002"
  25592. },
  25593. {
  25594. "name": "start_num",
  25595. "detail": "[\u53EF\u9078-\u9810\u8A2D\u503C\u70BA1] - \u8981\u5728\u8981\u8490\u7D22\u7684\u6587\u5B57\u4E2D\u958B\u59CB\u8490\u7D22\u7684\u5B57\u5143\u4F4D\u7F6E\u3002"
  25596. }
  25597. ]
  25598. },
  25599. "FINDB": {
  25600. "d": "\u8FD4\u56DE\u67D0\u500B\u5B57\u4E32\u5728\u6587\u5B57\u4E2D\u9996\u6B21\u51FA\u73FE\u7684\u4F4D\u7F6E\uFF08\u6BCF\u500B\u96D9\u4F4D\u5143\u7D44\u5B57\u5143\u5360\u5169\u500B\u4F4D\u7F6E\uFF09\u3002",
  25601. "a": "\u8FD4\u56DE\u67D0\u500B\u5B57\u4E32\u5728\u6587\u5B57\u4E2D\u9996\u6B21\u51FA\u73FE\u7684\u4F4D\u7F6E\uFF08\u6BCF\u500B\u96D9\u4F4D\u5143\u7D44\u5B57\u5143\u5360\u5169\u500B\u4F4D\u7F6E\uFF09\u3002",
  25602. "p": [
  25603. {
  25604. "name": "find_text",
  25605. "detail": "\u8981\u5728\u8981\u8490\u7D22\u7684\u6587\u5B57\u4E2D\u67E5\u627E\u7684\u5B57\u4E32\u3002"
  25606. },
  25607. {
  25608. "name": "within_text",
  25609. "detail": "\u8981\u5728\u5176\u4E2D\u8490\u7D22\u8490\u7D22\u5B57\u4E32\u7684\u9996\u6B21\u51FA\u73FE\u4F4D\u7F6E\u7684\u6587\u5B57\u3002"
  25610. },
  25611. {
  25612. "name": "start_num",
  25613. "detail": "[\u53EF\u9078-\u9810\u8A2D\u503C\u70BA1] - \u8981\u5728\u8981\u8490\u7D22\u7684\u6587\u5B57\u4E2D\u958B\u59CB\u8490\u7D22\u7684\u5B57\u5143\u4F4D\u7F6E\u3002"
  25614. }
  25615. ]
  25616. },
  25617. "JOIN": {
  25618. "d": "\u5C07\u4E00\u500B\u6216\u591A\u500B\u4F7F\u7528\u6307\u5B9A\u5B9A\u754C\u7B26\u7684\u4E00\u7DAD\u6578\u7D44\u7684\u5143\u7D20\u9023\u63A5\u5230\u4E00\u8D77\u3002",
  25619. "a": "\u5C07\u4E00\u500B\u6216\u591A\u500B\u4F7F\u7528\u6307\u5B9A\u5B9A\u754C\u7B26\u7684\u4E00\u7DAD\u6578\u7D44\u7684\u5143\u7D20\u9023\u63A5\u5230\u4E00\u8D77\u3002",
  25620. "p": [
  25621. {
  25622. "name": "separator",
  25623. "detail": "\u7F6E\u65BC\u76F8\u4E92\u9023\u63A5\u7684\u503C\u4E4B\u9593\u7684\u5B57\u5143\u6216\u5B57\u4E32\u3002\n\n\u5B9A\u754C\u7B26\u53EF\u4EE5\u70BA\u7A7A,\u4F8B\u5982JOIN\uFF08,{1,2,3}\uFF09\u3002"
  25624. },
  25625. {
  25626. "name": "array1",
  25627. "detail": "\u8981\u4F7F\u7528\u5B9A\u754C\u7B26\u9023\u63A5\u7684\u4E00\u500B\u6216\u591A\u500B\u503C\u3002"
  25628. },
  25629. {
  25630. "name": "array2,\u2026",
  25631. "detail": "[\u53EF\u9078] - \u8981\u4F7F\u7528\u5B9A\u754C\u7B26\u9023\u63A5\u7684\u5176\u4ED6\u503C\u6216\u6578\u7D44\u3002"
  25632. }
  25633. ]
  25634. },
  25635. "LEFT": {
  25636. "d": "\u5F9E\u6587\u5B57\u5B57\u4E32\u7684\u7B2C\u4E00\u500B\u5B57\u5143\u958B\u59CB\u8FD4\u56DE\u6307\u5B9A\u500B\u6578\u7684\u5B57\u5143\u3002",
  25637. "a": "\u5F9E\u6587\u5B57\u5B57\u4E32\u7684\u7B2C\u4E00\u500B\u5B57\u5143\u958B\u59CB\u8FD4\u56DE\u6307\u5B9A\u500B\u6578\u7684\u5B57\u5143\u3002",
  25638. "p": [
  25639. {
  25640. "name": "text",
  25641. "detail": "\u5305\u542B\u8981\u9078\u53D6\u7684\u5B57\u5143\u7684\u6587\u5B57\u5B57\u4E32\u3002"
  25642. },
  25643. {
  25644. "name": "num_chars",
  25645. "detail": "[\u53EF\u9078-\u9810\u8A2D\u503C\u70BA1] - \u6307\u5B9A\u8981\u7531LEFT\u9078\u53D6\u7684\u5B57\u5143\u7684\u6578\u91CF\u3002"
  25646. }
  25647. ]
  25648. },
  25649. "RIGHT": {
  25650. "d": "\u6839\u64DA\u6240\u6307\u5B9A\u7684\u5B57\u5143\u6578\u8FD4\u56DE\u6587\u5B57\u5B57\u4E32\u4E2D\u6700\u5F8C\u4E00\u500B\u6216\u591A\u500B\u5B57\u5143\u3002",
  25651. "a": "\u6839\u64DA\u6240\u6307\u5B9A\u7684\u5B57\u5143\u6578\u8FD4\u56DE\u6587\u5B57\u5B57\u4E32\u4E2D\u6700\u5F8C\u4E00\u500B\u6216\u591A\u500B\u5B57\u5143\u3002",
  25652. "p": [
  25653. {
  25654. "name": "text",
  25655. "detail": "\u5305\u542B\u8981\u9078\u53D6\u7684\u5B57\u5143\u7684\u6587\u5B57\u5B57\u4E32\u3002"
  25656. },
  25657. {
  25658. "name": "num_chars",
  25659. "detail": "[\u53EF\u9078-\u9810\u8A2D\u503C\u70BA1] - \u6307\u5B9A\u8981\u7531RIGHT\u9078\u53D6\u7684\u5B57\u5143\u7684\u6578\u91CF\u3002"
  25660. }
  25661. ]
  25662. },
  25663. "MID": {
  25664. "d": "\u8FD4\u56DE\u6587\u5B57\u5B57\u4E32\u4E2D\u5F9E\u6307\u5B9A\u4F4D\u7F6E\u958B\u59CB\u7684\u7279\u5B9A\u6578\u76EE\u7684\u5B57\u5143\u3002",
  25665. "a": "\u8FD4\u56DE\u6587\u5B57\u5B57\u4E32\u4E2D\u5F9E\u6307\u5B9A\u4F4D\u7F6E\u958B\u59CB\u7684\u7279\u5B9A\u6578\u76EE\u7684\u5B57\u5143\u3002",
  25666. "p": [
  25667. {
  25668. "name": "text",
  25669. "detail": "\u5305\u542B\u8981\u9078\u53D6\u7684\u5B57\u5143\u7684\u6587\u5B57\u5B57\u4E32\u3002"
  25670. },
  25671. {
  25672. "name": "start_num",
  25673. "detail": "\u8981\u5F9E\u5B57\u4E32\u4E2D\u958B\u59CB\u9078\u53D6\u7684\u4F4D\u7F6E\u3002\u5B57\u4E32\u4E2D\u7B2C\u4E00\u500B\u5B57\u5143\u7684\u7D22\u5F15\u70BA1\u3002"
  25674. },
  25675. {
  25676. "name": "num_chars",
  25677. "detail": "\u6307\u5B9A\u8981\u7531MID\u9078\u53D6\u7684\u5B57\u5143\u7684\u6578\u91CF\u3002\n\n\u5982\u679C\u9078\u53D6\u7684\u5B57\u5143\u6578\u5C1A\u4E0D\u8DB3\u9078\u53D6\u9577\u5EA6\u500B\u5B57\u5143\u6642\u5C31\u5230\u9054\u4E86\u5B57\u4E32\u5C3E\u90E8,\u5247MID\u8FD4\u56DE\u5F9E\u958B\u59CB\u4F4D\u7F6E\u5230\u5B57\u4E32\u5C3E\u90E8\u7684\u5B57\u5143\u3002"
  25678. }
  25679. ]
  25680. },
  25681. "LEN": {
  25682. "d": "\u8FD4\u56DE\u7D66\u5B9A\u5B57\u4E32\u7684\u9577\u5EA6\u3002",
  25683. "a": "\u8FD4\u56DE\u7D66\u5B9A\u5B57\u4E32\u7684\u9577\u5EA6\u3002",
  25684. "p": [
  25685. {
  25686. "name": "text",
  25687. "detail": "\u8981\u8FD4\u56DE\u5176\u9577\u5EA6\u7684\u5B57\u4E32\u3002"
  25688. }
  25689. ]
  25690. },
  25691. "LENB": {
  25692. "d": "\u8FD4\u56DE\u6587\u5B57\u4E2D\u6240\u5305\u542B\u7684\u5B57\u5143\u6578\u3002\u8207\u96D9\u4F4D\u5143\u7D44\u5B57\u5143\u96C6\uFF08DBCS\uFF09\u4E00\u8D77\u4F7F\u7528\u3002",
  25693. "a": "\u8FD4\u56DE\u6587\u5B57\u4E2D\u6240\u5305\u542B\u7684\u5B57\u5143\u6578\u3002\u8207\u96D9\u4F4D\u5143\u7D44\u5B57\u5143\u96C6\uFF08DBCS\uFF09\u4E00\u8D77\u4F7F\u7528\u3002",
  25694. "p": [
  25695. {
  25696. "name": "text",
  25697. "detail": "\u8981\u8FD4\u56DE\u5176\u4F4D\u5143\u7D44\u6578\u7684\u5B57\u4E32\u3002\uFF08\u4E00\u500B\u6F22\u5B57\u70BA\u5169\u500B\u4F4D\u5143\u7D44\u6578\uFF09"
  25698. }
  25699. ]
  25700. },
  25701. "LOWER": {
  25702. "d": "\u5C07\u6307\u5B9A\u5B57\u4E32\u4E2D\u7684\u5B57\u6BCD\u8F49\u63DB\u70BA\u5C0F\u5BEB\u3002",
  25703. "a": "\u5C07\u6307\u5B9A\u5B57\u4E32\u4E2D\u7684\u5B57\u6BCD\u8F49\u63DB\u70BA\u5C0F\u5BEB\u3002",
  25704. "p": [
  25705. {
  25706. "name": "text",
  25707. "detail": "\u8981\u8F49\u63DB\u70BA\u5C0F\u5BEB\u7684\u5B57\u4E32\u3002"
  25708. }
  25709. ]
  25710. },
  25711. "UPPER": {
  25712. "d": "\u5C07\u6307\u5B9A\u5B57\u4E32\u4E2D\u7684\u5B57\u6BCD\u8F49\u63DB\u70BA\u5927\u5BEB\u3002",
  25713. "a": "\u5C07\u6307\u5B9A\u5B57\u4E32\u4E2D\u7684\u5B57\u6BCD\u8F49\u63DB\u70BA\u5927\u5BEB\u3002",
  25714. "p": [
  25715. {
  25716. "name": "text",
  25717. "detail": "\u8981\u8F49\u63DB\u70BA\u5927\u5BEB\u7684\u5B57\u4E32\u3002"
  25718. }
  25719. ]
  25720. },
  25721. "EXACT": {
  25722. "d": "\u6BD4\u8F03\u5169\u500B\u5B57\u4E32\u662F\u5426\u76F8\u540C\u3002",
  25723. "a": "\u6BD4\u8F03\u5169\u500B\u5B57\u4E32\u662F\u5426\u76F8\u540C\u3002",
  25724. "p": [
  25725. {
  25726. "name": "text1",
  25727. "detail": "\u8981\u6BD4\u8F03\u7684\u7B2C\u4E00\u500B\u5B57\u4E32\u3002"
  25728. },
  25729. {
  25730. "name": "text2",
  25731. "detail": "\u8981\u6BD4\u8F03\u7684\u7B2C\u4E8C\u500B\u5B57\u4E32\u3002"
  25732. }
  25733. ]
  25734. },
  25735. "REPLACE": {
  25736. "d": "\u5C07\u6587\u5B57\u5B57\u4E32\u7684\u4E00\u90E8\u5206\u66FF\u63DB\u70BA\u5176\u4ED6\u6587\u5B57\u5B57\u4E32\u3002",
  25737. "a": "\u5C07\u6587\u5B57\u5B57\u4E32\u7684\u4E00\u90E8\u5206\u66FF\u63DB\u70BA\u5176\u4ED6\u6587\u5B57\u5B57\u4E32\u3002",
  25738. "p": [
  25739. {
  25740. "name": "old_text",
  25741. "detail": "\u8981\u5C0D\u5176\u5C40\u90E8\u9032\u884C\u66FF\u63DB\u64CD\u4F5C\u7684\u6587\u5B57\u3002"
  25742. },
  25743. {
  25744. "name": "start_num",
  25745. "detail": "\u958B\u59CB\u9032\u884C\u66FF\u63DB\u64CD\u4F5C\u7684\u4F4D\u7F6E\uFF08\u6587\u5B57\u958B\u982D\u4F4D\u7F6E\u70BA1\uFF09\u3002"
  25746. },
  25747. {
  25748. "name": "num_chars",
  25749. "detail": "\u8981\u5728\u6587\u5B57\u4E2D\u66FF\u63DB\u7684\u5B57\u5143\u500B\u6578\u3002"
  25750. },
  25751. {
  25752. "name": "new_text",
  25753. "detail": "\u8981\u63D2\u5165\u5230\u539F\u6709\u6587\u5B57\u4E2D\u7684\u6587\u5B57\u3002"
  25754. }
  25755. ]
  25756. },
  25757. "REPT": {
  25758. "d": "\u8FD4\u56DE\u6307\u5B9A\u6587\u5B57\u7684\u591A\u6B21\u91CD\u8907\u3002",
  25759. "a": "\u8FD4\u56DE\u6307\u5B9A\u6587\u5B57\u7684\u591A\u6B21\u91CD\u8907\u3002",
  25760. "p": [
  25761. {
  25762. "name": "text",
  25763. "detail": "\u8981\u91CD\u8907\u7684\u5B57\u5143\u6216\u5B57\u4E32\u3002"
  25764. },
  25765. {
  25766. "name": "number_times",
  25767. "detail": "\u8981\u91CD\u8907\u7684\u6587\u5B57\u8981\u5728\u8FD4\u56DE\u503C\u4E2D\u51FA\u73FE\u7684\u6B21\u6578\u3002\n\n\u6700\u5927\u91CD\u8907\u6B21\u6578\u70BA100\u3002\u5373\u4F7F\u91CD\u8907\u6B21\u6578\u5927\u65BC100,REPT\u4E5F\u50C5\u5C07\u76F8\u61C9\u6587\u5B57\u91CD\u8907100\u6B21\u3002"
  25768. }
  25769. ]
  25770. },
  25771. "SEARCH": {
  25772. "d": "\u8FD4\u56DE\u5B57\u4E32\u5728\u6587\u5B57\u4E2D\u9996\u6B21\u51FA\u73FE\u7684\u4F4D\u7F6E\uFF08\u4E0D\u5340\u5206\u5927\u5C0F\u5BEB\uFF09\u3002",
  25773. "a": "\u8FD4\u56DE\u5B57\u4E32\u5728\u6587\u5B57\u4E2D\u9996\u6B21\u51FA\u73FE\u7684\u4F4D\u7F6E\uFF08\u4E0D\u5340\u5206\u5927\u5C0F\u5BEB\uFF09\u3002",
  25774. "p": [
  25775. {
  25776. "name": "find_text",
  25777. "detail": "\u8981\u5728\u8981\u8490\u7D22\u7684\u6587\u5B57\u4E2D\u67E5\u627E\u7684\u5B57\u4E32\u3002"
  25778. },
  25779. {
  25780. "name": "within_text",
  25781. "detail": "\u8981\u5728\u5176\u4E2D\u8490\u7D22\u8490\u7D22\u5B57\u4E32\u7684\u9996\u6B21\u51FA\u73FE\u4F4D\u7F6E\u7684\u6587\u5B57\u3002"
  25782. },
  25783. {
  25784. "name": "start_num",
  25785. "detail": "[\u53EF\u9078-\u9810\u8A2D\u503C\u70BA1 ] - \u8981\u5728\u8981\u8490\u7D22\u7684\u6587\u5B57\u4E2D\u958B\u59CB\u8490\u7D22\u7684\u5B57\u5143\u4F4D\u7F6E\u3002"
  25786. }
  25787. ]
  25788. },
  25789. "SUBSTITUTE": {
  25790. "d": "\u5728\u6587\u5B57\u5B57\u4E32\u4E2D\u7528new_text\u66FF\u63DBold_text\u3002",
  25791. "a": "\u5728\u6587\u5B57\u5B57\u4E32\u4E2D\u7528new_text\u66FF\u63DBold_text\u3002",
  25792. "p": [
  25793. {
  25794. "name": "text",
  25795. "detail": "\u9700\u8981\u66FF\u63DB\u5176\u4E2D\u5B57\u5143\u7684\u6587\u5B57,\u6216\u5C0D\u542B\u6709\u6587\u5B57\uFF08\u9700\u8981\u66FF\u63DB\u5176\u4E2D\u5B57\u5143\uFF09\u7684\u5132\u5B58\u683C\u7684\u5F15\u7528\u3002"
  25796. },
  25797. {
  25798. "name": "old_text",
  25799. "detail": "\u9700\u8981\u66FF\u63DB\u7684\u6587\u5B57\u3002"
  25800. },
  25801. {
  25802. "name": "new_text",
  25803. "detail": "\u7528\u65BC\u66FF\u63DBold_text\u7684\u6587\u5B57\u3002"
  25804. },
  25805. {
  25806. "name": "instance_num",
  25807. "detail": "[\u53EF\u9078] - \u6307\u5B9A\u8981\u7528new_text\u66FF\u63DBold_text\u7684\u4E8B\u4EF6\u3002\u5982\u679C\u6307\u5B9A\u4E86instance_num,\u5247\u53EA\u6709\u6EFF\u8DB3\u8981\u6C42\u7684old_text\u88AB\u66FF\u63DB\u3002\u5426\u5247,\u6587\u5B57\u4E2D\u51FA\u73FE\u7684\u6240\u6709old_text\u90FD\u6703\u66F4\u6539\u70BAnew_text\u3002"
  25808. }
  25809. ]
  25810. },
  25811. "CLEAN": {
  25812. "d": "\u79FB\u9664\u6587\u5B57\u4E2D\u7684\u4E0D\u53EF\u5217\u5370ASCII\u5B57\u5143\u5F8C\u5C07\u5176\u8FD4\u56DE\u3002",
  25813. "a": "\u79FB\u9664\u6587\u5B57\u4E2D\u7684\u4E0D\u53EF\u5217\u5370ASCII\u5B57\u5143\u5F8C\u5C07\u5176\u8FD4\u56DE\u3002",
  25814. "p": [
  25815. {
  25816. "name": "text",
  25817. "detail": "\u8981\u79FB\u9664\u5176\u4E2D\u4E0D\u53EF\u5217\u5370\u5B57\u5143\u7684\u6587\u5B57\u3002"
  25818. }
  25819. ]
  25820. },
  25821. "TEXT": {
  25822. "d": "\u6309\u7167\u6307\u5B9A\u683C\u5F0F\u5C07\u6578\u4F4D\u8F49\u63DB\u70BA\u6587\u5B57\u3002",
  25823. "a": "\u6309\u7167\u6307\u5B9A\u683C\u5F0F\u5C07\u6578\u4F4D\u8F49\u63DB\u70BA\u6587\u5B57\u3002",
  25824. "p": [
  25825. {
  25826. "name": "value",
  25827. "detail": "\u8981\u8A2D\u5B9A\u683C\u5F0F\u7684\u6578\u4F4D\u3001\u65E5\u671F\u6216\u6642\u9593\u3002"
  25828. },
  25829. {
  25830. "name": "format_text",
  25831. "detail": '\u4EE5\u62EC\u5F27\u62EC\u8D77\u4F86\u7684\u6A21\u5F0F\u4E32,\u5C07\u6309\u8A72\u6A21\u5F0F\u8A2D\u5B9A\u6578\u4F4D\u7684\u683C\u5F0F\u3002\n\n0\u8868\u793A\u5728\u6578\u503C\u4F4D\u6578\u5C11\u65BC\u683C\u5F0F\u6307\u5B9A\u7684\u4F4D\u6578\u6642\u5FC5\u5B9A\u4EE5\u96F6\u586B\u5145\u3002\u4F8B\u5982,TEXT\uFF0812.3,\u201C000.00"\uFF09\u5C07\u8FD4\u56DE012.30\u3002\u7576\u6578\u503C\u7684\u5C0F\u6578\u4F4D\u6578\u8D85\u904E\u6A21\u5F0F\u6307\u5B9A\u7684\u5C0F\u6578\u4F4D\u6578\u6642,\u56DB\u6368\u4E94\u5165\u70BA\u6307\u5B9A\u7684\u5C0F\u6578\u4F4D\u6578\u3002\u4F8B\u5982,TEXT\uFF0812.305,\u201C00.00"\uFF09\u5C07\u8FD4\u56DE12.31\u3002\n\n#\u985E\u4F3C\u65BC0,\u4F46\u4E26\u4E0D\u662F\u5728\u5C0F\u6578\u9EDE\u7684\u5169\u5074\u90FD\u4EE5\u96F6\u586B\u5145\u3002\u4F8B\u5982,TEXT\uFF0812.3,\u201C###.##"\uFF09\u5C07\u8FD4\u56DE12.3\u3002'
  25832. }
  25833. ]
  25834. },
  25835. "TRIM": {
  25836. "d": "\u5220\u9664\u6307\u5B9A\u5B57\u4E32\u524D\u5F8C\u7684\u7A7A\u683C\u3002",
  25837. "a": "\u5220\u9664\u6307\u5B9A\u5B57\u4E32\u524D\u5F8C\u7684\u7A7A\u683C\u3002",
  25838. "p": [
  25839. {
  25840. "name": "text",
  25841. "detail": "\u8981\u4FEE\u526A\u7684\u5B57\u4E32\u6216\u6307\u5411\u5305\u542B\u8A72\u5B57\u4E32\u7684\u5132\u5B58\u683C\u7684\u5F15\u7528\u3002"
  25842. }
  25843. ]
  25844. },
  25845. "VALUE": {
  25846. "d": "\u5C07\u53EF\u8B58\u5225\u7684\u4EFB\u4F55\u65E5\u671F\u3001\u6642\u9593\u6216\u6578\u4F4D\u683C\u5F0F\u7684\u5B57\u4E32\u8F49\u63DB\u70BA\u6578\u4F4D\u3002",
  25847. "a": "\u5C07\u53EF\u8B58\u5225\u7684\u4EFB\u4F55\u65E5\u671F\u3001\u6642\u9593\u6216\u6578\u4F4D\u683C\u5F0F\u7684\u5B57\u4E32\u8F49\u63DB\u70BA\u6578\u4F4D\u3002",
  25848. "p": [
  25849. {
  25850. "name": "text",
  25851. "detail": "\u5305\u542B\u8981\u8F49\u63DB\u7684\u503C\u7684\u5B57\u4E32\u3002"
  25852. }
  25853. ]
  25854. },
  25855. "PROPER": {
  25856. "d": "\u5C07\u6307\u5B9A\u5B57\u4E32\u4E2D\u6BCF\u500B\u55AE\u8A5E\u7684\u9996\u5B57\u6BCD\u8F49\u70BA\u5927\u5BEB\u3002",
  25857. "a": "\u5C07\u6307\u5B9A\u5B57\u4E32\u4E2D\u6BCF\u500B\u55AE\u8A5E\u7684\u9996\u5B57\u6BCD\u8F49\u70BA\u5927\u5BEB\u3002",
  25858. "p": [
  25859. {
  25860. "name": "text",
  25861. "detail": "\u8981\u8F49\u63DB\u7684\u6587\u5B57,\u5176\u4E2D\u6BCF\u500B\u55AE\u8A5E\u7684\u9996\u5B57\u6BCD\u90FD\u5C07\u8F49\u70BA\u5927\u5BEB,\u6240\u6709\u5176\u4ED6\u5B57\u6BCD\u5247\u8F49\u70BA\u5C0F\u5BEB\u3002"
  25862. }
  25863. ]
  25864. },
  25865. "CONVERT": {
  25866. "d": "\u5C07\u6578\u4F4D\u5F9E\u4E00\u7A2E\u5EA6\u91CF\u7CFB\u7D71\u8F49\u63DB\u70BA\u53E6\u4E00\u7A2E\u5EA6\u91CF\u7CFB\u7D71\u3002",
  25867. "a": "\u5C07\u6578\u4F4D\u5F9E\u4E00\u7A2E\u5EA6\u91CF\u7CFB\u7D71\u8F49\u63DB\u70BA\u53E6\u4E00\u7A2E\u5EA6\u91CF\u7CFB\u7D71\u3002",
  25868. "p": [
  25869. {
  25870. "name": "number",
  25871. "detail": "\u662F\u4EE5from_unit\u70BA\u7D44\u7E54\u7684\u9700\u8981\u9032\u884C\u8F49\u63DB\u7684\u6578\u503C\u3002"
  25872. },
  25873. {
  25874. "name": "from_unit",
  25875. "detail": "\u662F\u6578\u503C\u7684\u7D44\u7E54\u3002"
  25876. },
  25877. {
  25878. "name": "to_unit",
  25879. "detail": "\u662F\u7D50\u679C\u7684\u7D44\u7E54\u3002"
  25880. }
  25881. ]
  25882. },
  25883. "SUMX2MY2": {
  25884. "d": "\u8FD4\u56DE\u5169\u6578\u7D44\u4E2D\u5C0D\u61C9\u6578\u503C\u7684\u5E73\u65B9\u5DEE\u4E4B\u548C\u3002",
  25885. "a": "\u8FD4\u56DE\u5169\u6578\u7D44\u4E2D\u5C0D\u61C9\u6578\u503C\u7684\u5E73\u65B9\u5DEE\u4E4B\u548C\u3002",
  25886. "p": [
  25887. {
  25888. "name": "array_x",
  25889. "detail": "\u7B2C\u4E00\u500B\u6578\u7D44\u6216\u6578\u503C\u5340\u57DF\u3002"
  25890. },
  25891. {
  25892. "name": "array_y",
  25893. "detail": "\u7B2C\u4E8C\u500B\u6578\u7D44\u6216\u6578\u503C\u5340\u57DF\u3002"
  25894. }
  25895. ]
  25896. },
  25897. "SUMX2PY2": {
  25898. "d": "\u8FD4\u56DE\u5169\u6578\u7D44\u4E2D\u5C0D\u61C9\u6578\u503C\u7684\u5E73\u65B9\u548C\u4E4B\u548C\u3002",
  25899. "a": "\u8FD4\u56DE\u5169\u6578\u7D44\u4E2D\u5C0D\u61C9\u6578\u503C\u7684\u5E73\u65B9\u548C\u4E4B\u548C\u3002",
  25900. "p": [
  25901. {
  25902. "name": "array_x",
  25903. "detail": "\u7B2C\u4E00\u500B\u6578\u7D44\u6216\u6578\u503C\u5340\u57DF\u3002"
  25904. },
  25905. {
  25906. "name": "array_y",
  25907. "detail": "\u7B2C\u4E8C\u500B\u6578\u7D44\u6216\u6578\u503C\u5340\u57DF\u3002"
  25908. }
  25909. ]
  25910. },
  25911. "SUMXMY2": {
  25912. "d": "\u8FD4\u56DE\u5169\u6578\u7D44\u4E2D\u5C0D\u61C9\u6578\u503C\u4E4B\u5DEE\u7684\u5E73\u65B9\u548C\u3002",
  25913. "a": "\u8FD4\u56DE\u5169\u6578\u7D44\u4E2D\u5C0D\u61C9\u6578\u503C\u4E4B\u5DEE\u7684\u5E73\u65B9\u548C\u3002",
  25914. "p": [
  25915. {
  25916. "name": "array_x",
  25917. "detail": "\u7B2C\u4E00\u500B\u6578\u7D44\u6216\u6578\u503C\u5340\u57DF\u3002"
  25918. },
  25919. {
  25920. "name": "array_y",
  25921. "detail": "\u7B2C\u4E8C\u500B\u6578\u7D44\u6216\u6578\u503C\u5340\u57DF\u3002"
  25922. }
  25923. ]
  25924. },
  25925. "TRANSPOSE": {
  25926. "d": "\u5C07\u6578\u7D44\u6216\u5132\u5B58\u683C\u7BC4\u570D\u7684\u884C\u5217\u8F49\u7F6E\u3002",
  25927. "a": "\u5C07\u6578\u7D44\u6216\u5132\u5B58\u683C\u7BC4\u570D\u7684\u884C\u5217\u8F49\u7F6E\u3002",
  25928. "p": [
  25929. {
  25930. "name": "array",
  25931. "detail": "\u8981\u5C07\u5176\u884C\u5217\u4E92\u63DB\u7684\u6578\u7D44\u6216\u7BC4\u570D\u3002"
  25932. }
  25933. ]
  25934. },
  25935. "TREND": {
  25936. "d": "\u8FD4\u56DE\u7DDA\u6027\u8DA8\u52E2\u503C\u3002",
  25937. "a": "\u8FD4\u56DE\u7DDA\u6027\u8DA8\u52E2\u503C\u3002",
  25938. "p": [
  25939. {
  25940. "name": "known_y",
  25941. "detail": "\u95DC\u4FC2\u904B\u7B97\u5F0Fy = mx + b \u4E2D\u5DF2\u77E5\u7684y\u503C\u96C6\u5408\u3002\n\n\u5982\u679Cknown_y\u70BA\u4E8C\u7DAD\u9663\u5217\u6216\u7BC4\u570D,\u5247known_x\u7684\u7DAD\u6578\u5FC5\u9808\u8207\u4E4B\u76F8\u540C,\u6216\u8005\u7701\u7565\u6B64\u53C3\u6578\u3002\n\n\u5982\u679Cknown_y\u70BA\u4E00\u7DAD\u6578\u7D44\u6216\u7BC4\u570D,known_x\u5247\u53EF\u4EE3\u8868\u4E8C\u7DAD\u9663\u5217\u6216\u7BC4\u570D\u4E2D\u7684\u591A\u500B\u5F15\u6578\u3002\u4E5F\u5C31\u662F\u8AAA,\u5982\u679Cknown_y\u70BA\u55AE\u884C,\u5247\u5C07known_x\u4E2D\u7684\u6BCF\u884C\u89E3\u91CB\u70BA\u5404\u81EA\u7368\u7ACB\u7684\u503C,\u985E\u4F3C\u60C5\u51B5\u4E5F\u9069\u7528\u65BCknown_y\u70BA\u55AE\u5217\u7684\u60C5\u51B5\u3002"
  25942. },
  25943. {
  25944. "name": "known_x",
  25945. "detail": "[\u53EF\u9078-\u9ED8\u8A8D\u8A72\u6578\u7D44\u70BA{1,2,3,\u2026},\u5176\u5927\u5C0F\u8207known_y\u76F8\u540C] -\u95DC\u4FC2\u904B\u7B97\u5F0Fy = mx + b \u4E2D\u5DF2\u77E5\u7684\u53EF\u9078x\u503C\u96C6\u5408\u3002\n\n\u5982\u679Cknown_y\u70BA\u4E00\u7DAD\u6578\u7D44\u6216\u7BC4\u570D,known_x\u5247\u53EF\u4EE3\u8868\u4E8C\u7DAD\u9663\u5217\u6216\u7BC4\u570D\u4E2D\u7684\u591A\u500B\u5F15\u6578\u3002\u4E5F\u5C31\u662F\u8AAA,\u5982\u679Cknown_y\u70BA\u55AE\u884C,\u5247\u5C07known_x\u4E2D\u7684\u6BCF\u884C\u89E3\u91CB\u70BA\u5404\u81EA\u7368\u7ACB\u7684\u503C,\u985E\u4F3C\u60C5\u51B5\u4E5F\u9069\u7528\u65BCknown_y\u70BA\u55AE\u5217\u7684\u60C5\u51B5\u3002"
  25946. },
  25947. {
  25948. "name": "new_x",
  25949. "detail": "[\u53EF\u9078 - \u9ED8\u8A8D\u8207known_x\u76F8\u540C] - \u9700\u8981\u51FD\u6578TREND\u8FD4\u56DE\u5C0D\u61C9y\u503C\u7684\u65B0x\u503C\u3002"
  25950. },
  25951. {
  25952. "name": "const",
  25953. "detail": "[\u53EF\u9078 - \u9810\u8A2D\u503C\u70BATRUE\uFF08\uFF09] - \u4E00\u500B\u908F\u8F2F\u503C,\u7528\u65BC\u6307\u5B9A\u662F\u5426\u5C07\u5E38\u6578b\u5F37\u5236\u8A2D\u70BA0\u3002\n\nTRUE\uFF08\uFF09\u8868\u793Ab\u5C07\u6309\u6B63\u5E38\u8A08\u7B97\uFF1B\n\nFALSE\uFF08\uFF09\u8868\u793Ab\u5C07\u88AB\u8A2D\u70BA0\uFF08\u96F6\uFF09,m \u5C07\u88AB\u8ABF\u6574\u4EE5\u4F7Fy = mx\u3002"
  25954. }
  25955. ]
  25956. },
  25957. "FREQUENCY": {
  25958. "d": "\u8A08\u7B97\u6578\u503C\u5728\u67D0\u500B\u5340\u57DF\u5167\u7684\u51FA\u73FE\u983B\u7387,\u7136\u5F8C\u8FD4\u56DE\u4E00\u500B\u5782\u76F4\u6578\u7D44\u3002",
  25959. "a": "\u8A08\u7B97\u6578\u503C\u5728\u67D0\u500B\u5340\u57DF\u5167\u7684\u51FA\u73FE\u983B\u7387,\u7136\u5F8C\u8FD4\u56DE\u4E00\u500B\u5782\u76F4\u6578\u7D44\u3002",
  25960. "p": [
  25961. {
  25962. "name": "data_array",
  25963. "detail": "\u8981\u5C0D\u5176\u983B\u7387\u9032\u884C\u8A08\u6578\u7684\u4E00\u7D44\u6578\u503C\u6216\u5C0D\u9019\u7D44\u6578\u503C\u7684\u5F15\u7528\u3002"
  25964. },
  25965. {
  25966. "name": "bins_array",
  25967. "detail": "\u8981\u5C07data_array\u4E2D\u7684\u503C\u63D2\u5165\u5230\u7684\u9593\u9694\u6578\u7D44\u6216\u5C0D\u9593\u9694\u7684\u5F15\u7528\u3002\n\n\u70BA\u6E05\u6670\u8D77\u898B,\u61C9\u5C07\u985E\u5225\u6392\u5E8F,\u4F46\u5982\u679C\u672A\u6392\u5E8F,FREQUENCY\u6703\u5728\u5167\u90E8\u5C0D\u9019\u4E9B\u6307\u5B9A\u7684\u503C\u9032\u884C\u6392\u5E8F\u4E26\u8FD4\u56DE\u6B63\u78BA\u7D50\u679C\u3002"
  25968. }
  25969. ]
  25970. },
  25971. "GROWTH": {
  25972. "d": "\u4F7F\u7528\u73FE\u6709\u6578\u64DA\u8A08\u7B97\u9810\u6E2C\u7684\u6307\u6578\u7B49\u6BD4\u3002",
  25973. "a": "\u4F7F\u7528\u73FE\u6709\u6578\u64DA\u8A08\u7B97\u9810\u6E2C\u7684\u6307\u6578\u7B49\u6BD4\u3002",
  25974. "p": [
  25975. {
  25976. "name": "known_y",
  25977. "detail": "\u95DC\u4FC2\u904B\u7B97\u5F0Fy = b*m^x \u4E2D\u5DF2\u77E5\u7684y\u503C\u96C6\u5408\u3002\n\n\u5982\u679C\u5DF2\u77E5\u6578\u64DA_y\u70BA\u4E8C\u7DAD\u9663\u5217\u6216\u7BC4\u570D,\u5247\u5DF2\u77E5\u6578\u64DA_x\u7684\u7DAD\u6578\u5FC5\u9808\u8207\u4E4B\u76F8\u540C,\u6216\u8005\u7701\u7565\u6B64\u53C3\u6578\u3002\n\n\u5982\u679C\u5DF2\u77E5\u6578\u64DA_y\u70BA\u4E00\u7DAD\u6578\u7D44\u6216\u7BC4\u570D,\u5DF2\u77E5\u6578\u64DA_x\u5247\u53EF\u4EE3\u8868\u4E8C\u7DAD\u9663\u5217\u6216\u7BC4\u570D\u4E2D\u7684\u591A\u500B\u5F15\u6578\u3002\u4E5F\u5C31\u662F\u8AAA,\u5982\u679C\u5DF2\u77E5\u6578\u64DA_y\u70BA\u55AE\u884C,\u5247\u5C07\u5DF2\u77E5\u6578\u64DA_x\u4E2D\u7684\u6BCF\u884C\u89E3\u91CB\u70BA\u5404\u81EA\u7368\u7ACB\u7684\u503C,\u985E\u4F3C\u60C5\u51B5\u4E5F\u9069\u7528\u65BC\u5DF2\u77E5\u6578\u64DA_y\u70BA\u55AE\u5217\u7684\u60C5\u51B5\u3002"
  25978. },
  25979. {
  25980. "name": "known_x",
  25981. "detail": "[\u53EF\u9078 - \u9ED8\u8A8D\u8A72\u6578\u7D44\u70BA{1,2,3,\u2026},\u5176\u5927\u5C0F\u8207known_y\u76F8\u540C] - \u95DC\u4FC2\u904B\u7B97\u5F0Fy = b*m^x \u4E2D\u5DF2\u77E5\u7684\u53EF\u9078x\u503C\u96C6\u5408\u3002\n\n\u5982\u679C\u5DF2\u77E5\u6578\u64DA_y\u70BA\u4E00\u7DAD\u6578\u7D44\u6216\u7BC4\u570D,\u5DF2\u77E5\u6578\u64DA_x\u5247\u53EF\u4EE3\u8868\u4E8C\u7DAD\u9663\u5217\u6216\u7BC4\u570D\u4E2D\u7684\u591A\u500B\u5F15\u6578\u3002\u4E5F\u5C31\u662F\u8AAA,\u5982\u679C\u5DF2\u77E5\u6578\u64DA_y\u70BA\u55AE\u884C,\u5247\u5C07\u5DF2\u77E5\u6578\u64DA_x\u4E2D\u7684\u6BCF\u884C\u89E3\u91CB\u70BA\u5404\u81EA\u7368\u7ACB\u7684\u503C,\u985E\u4F3C\u60C5\u51B5\u4E5F\u9069\u7528\u65BC\u5DF2\u77E5\u6578\u64DA_y\u70BA\u55AE\u5217\u7684\u60C5\u51B5\u3002"
  25982. },
  25983. {
  25984. "name": "new_x",
  25985. "detail": "[\u53EF\u9078 - \u9ED8\u8A8D\u8207known_x\u76F8\u540C] - \u9700\u8981\u51FD\u6578GROWTH\u8FD4\u56DE\u5C0D\u61C9y\u503C\u7684\u65B0x\u503C\u3002"
  25986. },
  25987. {
  25988. "name": "const",
  25989. "detail": "[\u53EF\u9078 - \u9810\u8A2D\u503C\u70BATRUE\uFF08\uFF09] - \u4E00\u500B\u908F\u8F2F\u503C,\u7528\u65BC\u6307\u5B9A\u662F\u5426\u5C07\u5E38\u6578b\u5F37\u5236\u8A2D\u70BA1\u3002\n\nTRUE\uFF08\uFF09\u8868\u793Ab\u5C07\u6309\u6B63\u5E38\u8A08\u7B97\uFF1B\n\nFALSE\uFF08\uFF09\u8868\u793Ab\u5C07\u88AB\u8A2D\u70BA1,m\u5C07\u88AB\u8ABF\u6574\u4EE5\u4F7Fy = m^x\u3002"
  25990. }
  25991. ]
  25992. },
  25993. "LINEST": {
  25994. "d": "\u53EF\u901A\u904E\u4F7F\u7528\u6700\u5C0F\u4E8C\u4E58\u6CD5\u8A08\u7B97\u8207\u73FE\u6709\u6578\u64DA\u6700\u4F73\u64EC\u5408\u7684\u76F4\u7DDA,\u4F86\u8A08\u7B97\u67D0\u76F4\u7DDA\u7684\u7D71\u8A08\u503C,\u7136\u5F8C\u8FD4\u56DE\u63CF\u8FF0\u6B64\u76F4\u7DDA\u7684\u6578\u7D44\u3002",
  25995. "a": "\u53EF\u901A\u904E\u4F7F\u7528\u6700\u5C0F\u4E8C\u4E58\u6CD5\u8A08\u7B97\u8207\u73FE\u6709\u6578\u64DA\u6700\u4F73\u64EC\u5408\u7684\u76F4\u7DDA,\u4F86\u8A08\u7B97\u67D0\u76F4\u7DDA\u7684\u7D71\u8A08\u503C,\u7136\u5F8C\u8FD4\u56DE\u63CF\u8FF0\u6B64\u76F4\u7DDA\u7684\u6578\u7D44\u3002",
  25996. "p": [
  25997. {
  25998. "name": "known_y",
  25999. "detail": "\u95DC\u4FC2\u904B\u7B97\u5F0Fy = mx + b \u4E2D\u5DF2\u77E5\u7684y\u503C\u96C6\u5408\u3002\n\n\u5982\u679Cknown_y\u70BA\u4E8C\u7DAD\u9663\u5217\u6216\u7BC4\u570D,\u5247known_x\u7684\u7DAD\u6578\u5FC5\u9808\u8207\u4E4B\u76F8\u540C,\u6216\u8005\u7701\u7565\u6B64\u53C3\u6578\u3002\n\n\u5982\u679Cknown_y\u70BA\u4E00\u7DAD\u6578\u7D44\u6216\u7BC4\u570D,known_x\u5247\u53EF\u4EE3\u8868\u4E8C\u7DAD\u9663\u5217\u6216\u7BC4\u570D\u4E2D\u7684\u591A\u500B\u5F15\u6578\u3002\u4E5F\u5C31\u662F\u8AAA,\u5982\u679Cknown_y\u70BA\u55AE\u884C,\u5247\u5C07known_x\u4E2D\u7684\u6BCF\u884C\u89E3\u91CB\u70BA\u5404\u81EA\u7368\u7ACB\u7684\u503C,\u985E\u4F3C\u60C5\u51B5\u4E5F\u9069\u7528\u65BCknown_y\u70BA\u55AE\u5217\u7684\u60C5\u51B5\u3002"
  26000. },
  26001. {
  26002. "name": "known_x",
  26003. "detail": "[\u53EF\u9078 - \u9ED8\u8A8D\u8A72\u6578\u7D44\u70BA{1,2,3,\u2026},\u5176\u5927\u5C0F\u8207known_y\u76F8\u540C] - \u95DC\u4FC2\u904B\u7B97\u5F0Fy = mx + b\u4E2D\u5DF2\u77E5\u7684\u53EF\u9078x\u503C\u96C6\u5408\u3002\n\n\u5982\u679Cknown_y\u70BA\u4E00\u7DAD\u6578\u7D44\u6216\u7BC4\u570D,known_x\u5247\u53EF\u4EE3\u8868\u4E8C\u7DAD\u9663\u5217\u6216\u7BC4\u570D\u4E2D\u7684\u591A\u500B\u5F15\u6578\u3002\u4E5F\u5C31\u662F\u8AAA,\u5982\u679Cknown_y\u70BA\u55AE\u884C,\u5247\u5C07known_x\u4E2D\u7684\u6BCF\u884C\u89E3\u91CB\u70BA\u5404\u81EA\u7368\u7ACB\u7684\u503C,\u985E\u4F3C\u60C5\u51B5\u4E5F\u9069\u7528\u65BCknown_y\u70BA\u55AE\u5217\u7684\u60C5\u51B5\u3002"
  26004. },
  26005. {
  26006. "name": "const",
  26007. "detail": "[\u53EF\u9078 - \u9810\u8A2D\u503C\u70BATRUE\uFF08\uFF09] - \u4E00\u500B\u908F\u8F2F\u503C,\u7528\u65BC\u6307\u5B9A\u662F\u5426\u5C07\u5E38\u6578b\u5F37\u5236\u8A2D\u70BA0\u3002\n\nTRUE\uFF08\uFF09\u8868\u793Ab\u5C07\u6309\u6B63\u5E38\u8A08\u7B97\uFF1B\n\nFALSE\uFF08\uFF09\u8868\u793Ab\u5C07\u88AB\u8A2D\u70BA0\uFF08\u96F6\uFF09,m\u5C07\u88AB\u8ABF\u6574\u4EE5\u4F7Fy = mx\u3002"
  26008. },
  26009. {
  26010. "name": "stats",
  26011. "detail": "[\u53EF\u9078 - \u9810\u8A2D\u503C\u70BAFALSE\uFF08\uFF09] - \u4E00\u500B\u908F\u8F2F\u503C,\u7528\u65BC\u6307\u5B9A\u662F\u5426\u8FD4\u56DE\u9644\u52A0\u56DE\u6B78\u7D71\u8A08\u503C\u3002\n\n\u5982\u679C\u8A73\u7D30\u70BATRUE,\u9664\u4E86\u5C0D\u61C9\u65BC\u6BCF\u500B\u5F15\u6578\u7684\u4E00\u7D44\u7DDA\u6027\u4FC2\u6578\u548Cy\u622A\u8DDD\u4E4B\u5916,LINEST\u9084\u8FD4\u56DE\u4EE5\u4E0B\u8CC7\u8A0A:\n\n\u6BCF\u9805\u4FC2\u6578\u548C\u622A\u8DDD\u7684\u6A19\u6E96\u8AA4\u5DEE\u3001\n\n\u9650\u5B9A\u4FC2\u6578\uFF08\u4ECB\u65BC0\u548C1\u4E4B\u9593,1\u8868\u793A\u5B8C\u5168\u76F8\u95DC\uFF09\u3001\n\n\u56E0\u8B8A\u6578\u503C\u7684\u6A19\u51C6\u8AA4\u5DEE\u3001\n\nF\u7D71\u8A08\u6216F\u89C0\u6E2C\u503C,\u8A13\u793A\u6240\u89C0\u6E2C\u5230\u7684\u56E0\u8B8A\u6578\u548C\u5F15\u6578\u8B8A\u6578\u4E4B\u9593\u7684\u95DC\u4FC2\u662F\u96A8\u6A5F\u7684\u9084\u662F\u7DDA\u6027\u7684\u3001\n\n\u81EA\u7531\u5EA6,\u7528\u65BC\u5728\u53C3\u7167\u9336\u4E2D\u67E5\u627EF\u7D71\u8A08\u503C\u4EE5\u4F30\u7B97\u53EF\u4FE1\u5EA6\u3001\n\n\u56DE\u6B78\u5E73\u65B9\u548C,\u4EE5\u53CA\n\n\u6B98\u5DEE\u5E73\u65B9\u548C\u3002"
  26012. }
  26013. ]
  26014. },
  26015. "LOGEST": {
  26016. "d": "\u5728\u56DE\u6B78\u5206\u6790\u4E2D,\u8A08\u7B97\u6700\u7B26\u5408\u6578\u64DA\u7684\u6307\u6578\u56DE\u6B78\u64EC\u5408\u66F2\u7DDA,\u4E26\u8FD4\u56DE\u63CF\u8FF0\u8A72\u66F2\u7DDA\u7684\u6578\u503C\u6578\u7D44\u3002",
  26017. "a": "\u5728\u56DE\u6B78\u5206\u6790\u4E2D,\u8A08\u7B97\u6700\u7B26\u5408\u6578\u64DA\u7684\u6307\u6578\u56DE\u6B78\u64EC\u5408\u66F2\u7DDA,\u4E26\u8FD4\u56DE\u63CF\u8FF0\u8A72\u66F2\u7DDA\u7684\u6578\u503C\u6578\u7D44\u3002",
  26018. "p": [
  26019. {
  26020. "name": "known_y",
  26021. "detail": "\u95DC\u4FC2\u904B\u7B97\u5F0Fy = mx + b \u4E2D\u5DF2\u77E5\u7684y\u503C\u96C6\u5408\u3002\n\n\u5982\u679Cknown_y\u70BA\u4E8C\u7DAD\u9663\u5217\u6216\u7BC4\u570D,\u5247known_x\u7684\u7DAD\u6578\u5FC5\u9808\u8207\u4E4B\u76F8\u540C,\u6216\u8005\u7701\u7565\u6B64\u53C3\u6578\u3002\n\n\u5982\u679Cknown_y\u70BA\u4E00\u7DAD\u6578\u7D44\u6216\u7BC4\u570D,known_x\u5247\u53EF\u4EE3\u8868\u4E8C\u7DAD\u9663\u5217\u6216\u7BC4\u570D\u4E2D\u7684\u591A\u500B\u5F15\u6578\u3002\u4E5F\u5C31\u662F\u8AAA,\u5982\u679Cknown_y\u70BA\u55AE\u884C,\u5247\u5C07known_x\u4E2D\u7684\u6BCF\u884C\u89E3\u91CB\u70BA\u5404\u81EA\u7368\u7ACB\u7684\u503C,\u985E\u4F3C\u60C5\u51B5\u4E5F\u9069\u7528\u65BCknown_y\u70BA\u55AE\u5217\u7684\u60C5\u51B5\u3002"
  26022. },
  26023. {
  26024. "name": "known_x",
  26025. "detail": "[\u53EF\u9078 - \u9ED8\u8A8D\u8A72\u6578\u7D44\u70BA{1,2,3,\u2026},\u5176\u5927\u5C0F\u8207known_y\u76F8\u540C] - \u95DC\u4FC2\u904B\u7B97\u5F0Fy = mx + b\u4E2D\u5DF2\u77E5\u7684\u53EF\u9078x\u503C\u96C6\u5408\u3002\n\n\u5982\u679Cknown_y\u70BA\u4E00\u7DAD\u6578\u7D44\u6216\u7BC4\u570D,known_x\u5247\u53EF\u4EE3\u8868\u4E8C\u7DAD\u9663\u5217\u6216\u7BC4\u570D\u4E2D\u7684\u591A\u500B\u5F15\u6578\u3002\u4E5F\u5C31\u662F\u8AAA,\u5982\u679Cknown_y\u70BA\u55AE\u884C,\u5247\u5C07known_x\u4E2D\u7684\u6BCF\u884C\u89E3\u91CB\u70BA\u5404\u81EA\u7368\u7ACB\u7684\u503C,\u985E\u4F3C\u60C5\u51B5\u4E5F\u9069\u7528\u65BCknown_y\u70BA\u55AE\u5217\u7684\u60C5\u51B5\u3002"
  26026. },
  26027. {
  26028. "name": "const",
  26029. "detail": "[\u53EF\u9078 - \u9810\u8A2D\u503C\u70BATRUE\uFF08\uFF09] - \u4E00\u500B\u908F\u8F2F\u503C,\u7528\u65BC\u6307\u5B9A\u662F\u5426\u5C07\u5E38\u6578b\u5F37\u5236\u8A2D\u70BA0\u3002\n\nTRUE\uFF08\uFF09\u8868\u793Ab\u5C07\u6309\u6B63\u5E38\u8A08\u7B97\uFF1B\n\nFALSE\uFF08\uFF09\u8868\u793Ab\u5C07\u88AB\u8A2D\u70BA0\uFF08\u96F6\uFF09,m\u5C07\u88AB\u8ABF\u6574\u4EE5\u4F7Fy = mx\u3002"
  26030. },
  26031. {
  26032. "name": "stats",
  26033. "detail": "[\u53EF\u9078 - \u9810\u8A2D\u503C\u70BAFALSE\uFF08\uFF09] - \u4E00\u500B\u908F\u8F2F\u503C,\u7528\u65BC\u6307\u5B9A\u662F\u5426\u8FD4\u56DE\u9644\u52A0\u56DE\u6B78\u7D71\u8A08\u503C\u3002\n\n\u5982\u679C\u8A73\u7D30\u70BATRUE,\u5247\u9664\u4E86\u70BA\u6BCF\u500B\u5F15\u6578\u548C\u4FC2\u6578b\u8FD4\u56DE\u4E00\u7D44\u6307\u6578\u503C\u4E4B\u5916,LOGEST\u9084\u5C07\u8FD4\u56DE\u4EE5\u4E0B\u6578\u64DA:\n\n\u6BCF\u9805\u6307\u6578\u548C\u4FC2\u6578\u7684\u6A19\u6E96\u8AA4\u5DEE\u3001\n\n\u9650\u5B9A\u4FC2\u6578\uFF08\u4ECB\u65BC0\u548C1\u4E4B\u9593,1\u8868\u793A\u5B8C\u5168\u76F8\u95DC\uFF09\u3001\n\n\u56E0\u8B8A\u6578\u503C\u7684\u6A19\u51C6\u8AA4\u5DEE\u3001\n\nF\u7D71\u8A08\u6216F\u89C0\u6E2C\u503C,\u8A13\u793A\u6240\u89C0\u6E2C\u5230\u7684\u56E0\u8B8A\u6578\u548C\u5F15\u6578\u4E4B\u9593\u7684\u95DC\u4FC2\u662F\u96A8\u6A5F\u7684\u9084\u662F\u6307\u6578\u7684\u3001\n\n\u81EA\u7531\u5EA6-\u7528\u65BC\u5728\u53C3\u7167\u9336\u4E2D\u67E5\u627EF\u7D71\u8A08\u503C\u4EE5\u4F30\u7B97\u53EF\u4FE1\u5EA6\u3001\n\n\u56DE\u6B78\u5E73\u65B9\u548C,\u4EE5\u53CA\n\n\u6B98\u5DEE\u5E73\u65B9\u548C\u3002"
  26034. }
  26035. ]
  26036. },
  26037. "MDETERM": {
  26038. "d": "\u8FD4\u56DE\u4E00\u500B\u6578\u7D44\u7684\u77E9\u9663\u884C\u5217\u5F0F\u7684\u503C\u3002",
  26039. "a": "\u8FD4\u56DE\u4E00\u500B\u6578\u7D44\u7684\u77E9\u9663\u884C\u5217\u5F0F\u7684\u503C\u3002",
  26040. "p": [
  26041. {
  26042. "name": "array",
  26043. "detail": "\u884C\u6578\u548C\u5217\u6578\u76F8\u7B49\u7684\u6578\u503C\u6578\u7D44\u3002"
  26044. }
  26045. ]
  26046. },
  26047. "MINVERSE": {
  26048. "d": "\u8FD4\u56DE\u6578\u7D44\u4E2D\u5B58\u5132\u7684\u77E9\u9663\u7684\u9006\u77E9\u9663\u3002",
  26049. "a": "\u8FD4\u56DE\u6578\u7D44\u4E2D\u5B58\u5132\u7684\u77E9\u9663\u7684\u9006\u77E9\u9663\u3002",
  26050. "p": [
  26051. {
  26052. "name": "array",
  26053. "detail": "\u884C\u6578\u548C\u5217\u6578\u76F8\u7B49\u7684\u6578\u503C\u6578\u7D44\u3002"
  26054. }
  26055. ]
  26056. },
  26057. "MMULT": {
  26058. "d": "\u8FD4\u56DE\u5169\u500B\u6578\u7D44\u7684\u77E9\u9663\u4E58\u7A4D\u3002\u7D50\u679C\u77E9\u9663\u7684\u884C\u6578\u8207array1\u7684\u884C\u6578\u76F8\u540C,\u77E9\u9663\u7684\u5217\u6578\u8207array2\u7684\u5217\u6578\u76F8\u540C\u3002",
  26059. "a": "\u8FD4\u56DE\u5169\u500B\u6578\u7D44\u7684\u77E9\u9663\u4E58\u7A4D\u3002\u7D50\u679C\u77E9\u9663\u7684\u884C\u6578\u8207array1\u7684\u884C\u6578\u76F8\u540C,\u77E9\u9663\u7684\u5217\u6578\u8207array2\u7684\u5217\u6578\u76F8\u540C\u3002",
  26060. "p": [
  26061. {
  26062. "name": "array1",
  26063. "detail": "\u8981\u9032\u884C\u77E9\u9663\u4E58\u6CD5\u904B\u7B97\u7684\u7B2C\u4E00\u500B\u77E9\u9663\u6578\u7D44\u3002\n\narray1\u5217\u6578\u5FC5\u9808\u8207array2\u7684\u884C\u6578\u76F8\u540C"
  26064. },
  26065. {
  26066. "name": "array2",
  26067. "detail": "\u8981\u9032\u884C\u77E9\u9663\u4E58\u6CD5\u904B\u7B97\u7684\u7B2C\u4E8C\u500B\u77E9\u9663\u6578\u7D44\u3002\n\narray2\u7684\u884C\u6578\u5FC5\u9808\u8207array1\u5217\u6578\u76F8\u540C"
  26068. }
  26069. ]
  26070. },
  26071. "SUMPRODUCT": {
  26072. "d": "\u5728\u7D66\u5B9A\u7684\u5E7E\u7D44\u6578\u7D44\u4E2D,\u5C07\u6578\u7D44\u9593\u5C0D\u61C9\u7684\u5143\u7D20\u76F8\u4E58,\u4E26\u8FD4\u56DE\u4E58\u7A4D\u4E4B\u548C\u3002",
  26073. "a": "\u5728\u7D66\u5B9A\u7684\u5E7E\u7D44\u6578\u7D44\u4E2D,\u5C07\u6578\u7D44\u9593\u5C0D\u61C9\u7684\u5143\u7D20\u76F8\u4E58,\u4E26\u8FD4\u56DE\u4E58\u7A4D\u4E4B\u548C\u3002",
  26074. "p": [
  26075. {
  26076. "name": "array1",
  26077. "detail": "\u5176\u76F8\u61C9\u5143\u7D20\u9700\u8981\u9032\u884C\u76F8\u4E58\u4E26\u6C42\u548C\u7684\u7B2C\u4E00\u500B\u6578\u7D44\u53C3\u6578\u3002"
  26078. },
  26079. {
  26080. "name": "array2",
  26081. "detail": "[\u53EF\u9078] - \u5176\u76F8\u61C9\u5143\u7D20\u9700\u8981\u9032\u884C\u76F8\u4E58\u4E26\u6C42\u548C\u7684\u5176\u5B83\u6578\u7D44\u53C3\u6578\u3002"
  26082. }
  26083. ]
  26084. },
  26085. "ISFORMULA": {
  26086. "d": "\u6AA2\u67E5\u516C\u5F0F\u662F\u5426\u4F4D\u65BC\u5F15\u7528\u7684\u5132\u5B58\u683C\u4E2D\u3002",
  26087. "a": "\u6AA2\u67E5\u516C\u5F0F\u662F\u5426\u4F4D\u65BC\u5F15\u7528\u7684\u5132\u5B58\u683C\u4E2D\u3002",
  26088. "p": [
  26089. {
  26090. "name": "cell",
  26091. "detail": "\u8981\u6AA2\u67E5\u662F\u5426\u5B58\u5728\u516C\u5F0F\u7684\u5132\u5B58\u683C\u3002\n\n\u5982\u679C cell \u70BA\u5305\u542B\u516C\u5F0F\u7684\u5132\u5B58\u683C,\u5247 ISFORMULA \u5C07\u8FD4\u56DETRUE\u3002\u5982\u679C cell \u70BA\u76F8\u61C9\u5132\u5B58\u683C\u7BC4\u570D,\u5247\u7576\u8A72\u7BC4\u570D\u5167\u7684\u9996\u500B\u5132\u5B58\u683C\u5305\u542B\u516C\u5F0F\u6642,\u7CFB\u7D71\u6703\u8FD4\u56DETRUE\u3002\u5982\u679C\u662F\u4EFB\u4F55\u5176\u4ED6\u503C,\u7CFB\u7D71\u90FD\u5C07\u8FD4\u56DEFALSE\u3002"
  26092. }
  26093. ]
  26094. },
  26095. "CELL": {
  26096. "d": "\u8FD4\u56DE\u6709\u95DC\u5132\u5B58\u683C\u7684\u683C\u5F0F\u3001\u4F4D\u7F6E\u6216\u5167\u5BB9\u7684\u8CC7\u8A0A\u3002",
  26097. "a": "\u8FD4\u56DE\u6709\u95DC\u5132\u5B58\u683C\u7684\u683C\u5F0F\u3001\u4F4D\u7F6E\u6216\u5167\u5BB9\u7684\u8CC7\u8A0A\u3002",
  26098. "p": [
  26099. {
  26100. "name": "info_type",
  26101. "detail": "\u4E00\u500B\u6587\u5B57\u503C,\u6307\u5B9A\u8981\u8FD4\u56DE\u7684\u5132\u5B58\u683C\u8CC7\u8A0A\u7684\u985E\u578B\u3002"
  26102. },
  26103. {
  26104. "name": "reference",
  26105. "detail": "\u9700\u8981\u5176\u76F8\u95DC\u8CC7\u8A0A\u7684\u5132\u5B58\u683C\u3002"
  26106. }
  26107. ]
  26108. },
  26109. "NA": {
  26110. "d": "\u8FD4\u56DE\u932F\u8AA4\u503C#N/A\u3002",
  26111. "a": "\u8FD4\u56DE\u932F\u8AA4\u503C#N/A\u3002",
  26112. "p": []
  26113. },
  26114. "ERROR_TYPE": {
  26115. "d": "\u8FD4\u56DE\u8207\u5176\u4ED6\u5132\u5B58\u683C\u4E2D\u7684\u932F\u8AA4\u503C\u76F8\u5C0D\u61C9\u7684\u6578\u4F4D\u3002",
  26116. "a": "\u8FD4\u56DE\u8207\u5176\u4ED6\u5132\u5B58\u683C\u4E2D\u7684\u932F\u8AA4\u503C\u76F8\u5C0D\u61C9\u7684\u6578\u4F4D\u3002",
  26117. "p": [
  26118. {
  26119. "name": "error_val",
  26120. "detail": "\u7528\u65BC\u67E5\u627E\u932F\u8AA4\u865F\u7684\u5132\u5B58\u683C,\u96D6\u7136\u60A8\u4E5F\u53EF\u4EE5\u76F4\u63A5\u63D0\u4F9B\u932F\u8AA4\u503C\u3002"
  26121. }
  26122. ]
  26123. },
  26124. "ISBLANK": {
  26125. "d": "\u6AA2\u67E5\u6240\u5F15\u7528\u7684\u5132\u5B58\u683C\u662F\u5426\u70BA\u7A7A\u3002",
  26126. "a": "\u6AA2\u67E5\u6240\u5F15\u7528\u7684\u5132\u5B58\u683C\u662F\u5426\u70BA\u7A7A\u3002",
  26127. "p": [
  26128. {
  26129. "name": "value",
  26130. "detail": "\u5C0D\u8981\u6AA2\u67E5\u5176\u662F\u5426\u70BA\u7A7A\u7684\u5132\u5B58\u683C\u7684\u5F15\u7528\u3002\n\n\u5982\u679C\u662F\u7A7A\u5132\u5B58\u683C,\u5247TRUE\uFF1B\u5426\u5247\u8FD4\u56DEFALSE\u3002"
  26131. }
  26132. ]
  26133. },
  26134. "ISERR": {
  26135. "d": "\u6AA2\u67E5\u67D0\u500B\u503C\u662F\u5426\u70BA#N/A\u4EE5\u5916\u7684\u932F\u8AA4\u503C\u3002",
  26136. "a": "\u6AA2\u67E5\u67D0\u500B\u503C\u662F\u5426\u70BA#N/A\u4EE5\u5916\u7684\u932F\u8AA4\u503C\u3002",
  26137. "p": [
  26138. {
  26139. "name": "value",
  26140. "detail": "\u8981\u9A57\u8B49\u5176\u662F\u5426\u70BA#N/A\u4EE5\u5916\u7684\u932F\u8AA4\u985E\u578B\u7684\u503C\u3002\n\n\u5982\u679C\u503C\u662F\u9664#N/A\u4E4B\u5916\u7684\u4EFB\u4F55\u932F\u8AA4\uFF08\u5305\u62EC#DIV/0\uFF01\u3001#NAME\uFF1F\u3001#NULL\uFF01\u3001#NUM\uFF01\u3001#VALUE\uFF01\u548C#REF\uFF01\uFF09,ISERR\u5C07\u8FD4\u56DETRUE\u3002"
  26141. }
  26142. ]
  26143. },
  26144. "ISERROR": {
  26145. "d": "\u6AA2\u67E5\u67D0\u500B\u503C\u662F\u5426\u70BA\u932F\u8AA4\u503C\u3002",
  26146. "a": "\u6AA2\u67E5\u67D0\u500B\u503C\u662F\u5426\u70BA\u932F\u8AA4\u503C\u3002",
  26147. "p": [
  26148. {
  26149. "name": "value",
  26150. "detail": "\u8981\u9A57\u8B49\u5176\u662F\u5426\u70BA\u932F\u8AA4\u985E\u578B\u7684\u503C\u3002\n\n\u53EA\u8981\u503C\u662F\u67D0\u7A2E\u932F\u8AA4\u503C\uFF08\u5305\u62EC#DIV/0\uFF01\u3001#N/A\u3001#NAME\uFF1F\u3001#NULL\uFF01\u3001#NUM\uFF01\u3001#VALUE\uFF01\u548C#REF\uFF01\uFF09,ISERROR\u5C31\u6703\u8FD4\u56DETRUE\u3002"
  26151. }
  26152. ]
  26153. },
  26154. "ISLOGICAL": {
  26155. "d": "\u6AA2\u67E5\u67D0\u500B\u503C\u662FTRUE\u9084\u662FFALSE\u3002",
  26156. "a": "\u6AA2\u67E5\u67D0\u500B\u503C\u662FTRUE\u9084\u662FFALSE\u3002",
  26157. "p": [
  26158. {
  26159. "name": "value",
  26160. "detail": "\u8981\u9A57\u8B49\u5176\u70BA\u908F\u8F2F TRUE \u9084\u662F\u908F\u8F2F FALSE \u7684\u503C\u3002\n\n*\u5982\u679C\u503C\u70BATRUE\u6216FALSE,\u6216\u70BA\u6307\u5411\u503C\u70BATRUE\u6216FALSE\u7684\u5132\u5B58\u683C\u7684\u5F15\u7528,ISLOGICAL\u5C07\u8FD4\u56DETRUE\u3002"
  26161. }
  26162. ]
  26163. },
  26164. "ISNA": {
  26165. "d": "\u6AA2\u67E5\u67D0\u500B\u503C\u662F\u5426\u70BA\u932F\u8AA4\u503C#N/A\u3002",
  26166. "a": "\u6AA2\u67E5\u67D0\u500B\u503C\u662F\u5426\u70BA\u932F\u8AA4\u503C#N/A\u3002",
  26167. "p": [
  26168. {
  26169. "name": "value",
  26170. "detail": "\u8981\u8207\u932F\u8AA4\u503C#N/A\u9032\u884C\u6BD4\u8F03\u7684\u503C\u3002\n\n*\u5982\u679C\u503C\u70BA#N/A\u6216\u6307\u5411\u5305\u542B#N/A\u7684\u5132\u5B58\u683C\u7684\u5F15\u7528,\u5247ISNA\u5C07\u8FD4\u56DETRUE,\u5426\u5247\u8FD4\u56DEFALSE\u3002"
  26171. }
  26172. ]
  26173. },
  26174. "ISNONTEXT": {
  26175. "d": "\u6AA2\u67E5\u67D0\u500B\u503C\u662F\u5426\u70BA\u975E\u6587\u5B57\u3002",
  26176. "a": "\u6AA2\u67E5\u67D0\u500B\u503C\u662F\u5426\u70BA\u975E\u6587\u5B57\u3002",
  26177. "p": [
  26178. {
  26179. "name": "value",
  26180. "detail": "\u8981\u6AA2\u67E5\u7684\u6587\u5B57\u3002\n\n*\u5982\u679C\u53C3\u6578\u70BA\u6587\u5B57\u503C\u6216\u6307\u5411\u5305\u542B\u6587\u5B57\u7684\u5132\u5B58\u683C\u7684\u5F15\u7528,ISNONTEXT\u5C07\u8FD4\u56DEFALSE,\u5426\u5247\u8FD4\u56DETRUE\u3002\n\n\u7576\u503C\u70BA\u6307\u5411\u7A7A\u5132\u5B58\u683C\u7684\u5F15\u7528\u6642,ISNONTEXT\u6703\u8FD4\u56DETRUE\u3002\n\n\u7576\u503C\u70BA\u7A7A\u5B57\u4E32\u6642,ISNONTEXT\u5C07\u8FD4\u56DEFALSE,\u56E0\u70BA\u7A7A\u4E32\u88AB\u8996\u4F5C\u6587\u5B57\u3002"
  26181. }
  26182. ]
  26183. },
  26184. "ISNUMBER": {
  26185. "d": "\u6AA2\u67E5\u67D0\u500B\u503C\u662F\u5426\u70BA\u6578\u4F4D\u3002",
  26186. "a": "\u6AA2\u67E5\u67D0\u500B\u503C\u662F\u5426\u70BA\u6578\u4F4D\u3002",
  26187. "p": [
  26188. {
  26189. "name": "value",
  26190. "detail": "\u8981\u9A57\u8B49\u5176\u662F\u5426\u70BA\u6578\u4F4D\u7684\u503C\u3002\n\n*\u5982\u679C\u53C3\u6578\u70BA\u6578\u4F4D\u6216\u6307\u5411\u5167\u5BB9\u70BA\u6578\u4F4D\u503C\u7684\u5132\u5B58\u683C\u7684\u5F15\u7528,ISNUMBER\u5C07\u8FD4\u56DETRUE,\u5426\u5247\u8FD4\u56DEFALSE\u3002"
  26191. }
  26192. ]
  26193. },
  26194. "ISREF": {
  26195. "d": "\u6AA2\u67E5\u67D0\u500B\u503C\u662F\u5426\u70BA\u6709\u6548\u7684\u5132\u5B58\u683C\u5F15\u7528\u3002",
  26196. "a": "\u6AA2\u67E5\u67D0\u500B\u503C\u662F\u5426\u70BA\u6709\u6548\u7684\u5132\u5B58\u683C\u5F15\u7528\u3002",
  26197. "p": [
  26198. {
  26199. "name": "value",
  26200. "detail": "\u8981\u9A57\u8B49\u5176\u662F\u5426\u70BA\u5132\u5B58\u683C\u5F15\u7528\u7684\u503C\u3002\n\n*\u5982\u679C\u53C3\u6578\u662F\u6709\u6548\u7684\u5132\u5B58\u683C\u5F15\u7528,ISREF\u5C07\u8FD4\u56DETRUE,\u5426\u5247\u8FD4\u56DEFALSE\u3002"
  26201. }
  26202. ]
  26203. },
  26204. "ISTEXT": {
  26205. "d": "\u6AA2\u67E5\u67D0\u500B\u503C\u662F\u5426\u70BA\u6587\u5B57\u3002",
  26206. "a": "\u6AA2\u67E5\u67D0\u500B\u503C\u662F\u5426\u70BA\u6587\u5B57\u3002",
  26207. "p": [
  26208. {
  26209. "name": "value",
  26210. "detail": "\u8981\u9A57\u8B49\u5176\u662F\u5426\u70BA\u6587\u5B57\u7684\u503C\u3002\n\n\u5982\u679C\u53C3\u6578\u70BA\u6587\u5B57\u503C\u6216\u6307\u5411\u5305\u542B\u6587\u5B57\u503C\u7684\u5132\u5B58\u683C\u7684\u5F15\u7528,ISTEXT\u5C07\u8FD4\u56DETRUE,\u5426\u5247\u8FD4\u56DEFALSE\u3002"
  26211. }
  26212. ]
  26213. },
  26214. "TYPE": {
  26215. "d": "\u8FD4\u56DE\u6578\u503C\u7684\u985E\u578B\u3002",
  26216. "a": "\u8FD4\u56DE\u6578\u503C\u7684\u985E\u578B\u3002",
  26217. "p": [
  26218. {
  26219. "name": "value",
  26220. "detail": "\u8981\u78BA\u5B9A\u5176\u985E\u578B\u7684\u6578\u64DA\u3002\n\n\u6578\u4F4D\u8FD4\u56DE1\uFF1B\n\n\u6587\u5B57\u8FD4\u56DE2\uFF1B\n\n\u908F\u8F2F\u503C\u8FD4\u56DE4\uFF1B\n\n\u932F\u8AA4\u503C\u8FD4\u56DE16\uFF1B\n\n\u6578\u7D44\u8FD4\u56DE64\uFF1B"
  26221. }
  26222. ]
  26223. },
  26224. "N": {
  26225. "d": "\u8FD4\u56DE\u8F49\u5316\u70BA\u6578\u503C\u5F8C\u7684\u503C\u3002",
  26226. "a": "\u8FD4\u56DE\u8F49\u5316\u70BA\u6578\u503C\u5F8C\u7684\u503C\u3002",
  26227. "p": [
  26228. {
  26229. "name": "value",
  26230. "detail": "\u8981\u8F49\u63DB\u70BA\u6578\u4F4D\u7684\u53C3\u6578\u3002\n\n\u5982\u679C\u503C\u70BA\u6578\u4F4D,\u5247\u8FD4\u56DE\u8A72\u6578\u4F4D\u3002\n\n\u5982\u679C\u503C\u70BA\u65E5\u671F,\u5247\u8FD4\u56DE\u8A72\u65E5\u671F\u7684\u5E8F\u865F\u3002\n\n\u5982\u679C\u503C\u70BATRUE,\u5247\u8FD4\u56DE1\u3002\n\n\u5982\u679C\u503C\u70BAFALSE,\u5247\u8FD4\u56DE0\u3002\n\n\u5982\u679C\u503C\u70BA\u932F\u8AA4\u503C,\u5247\u8FD4\u56DE\u932F\u8AA4\u503C\u3002\n\n\u5982\u679C\u503C\u70BA\u5176\u4ED6\u503C,\u5247\u8FD4\u56DE0\u3002"
  26231. }
  26232. ]
  26233. },
  26234. "TO_DATE": {
  26235. "d": "\u5C07\u6307\u5B9A\u7684\u6578\u4F4D\u8F49\u63DB\u70BA\u65E5\u671F\u3002",
  26236. "a": "\u5C07\u6307\u5B9A\u7684\u6578\u4F4D\u8F49\u63DB\u70BA\u65E5\u671F\u3002",
  26237. "p": [
  26238. {
  26239. "name": "value",
  26240. "detail": "\u8981\u8F49\u63DB\u70BA\u65E5\u671F\u7684\u53C3\u6578\u6216\u5176\u5132\u5B58\u683C\u5F15\u7528\u3002\n\n\u5982\u679C\u503C\u70BA\u6578\u4F4D\u6216\u6307\u5411\u5167\u5BB9\u70BA\u6578\u503C\u7684\u5132\u5B58\u683C\u7684\u5F15\u7528,TO_DATE\u6703\u5C07\u503C\u8F49\u63DB\u70BA\u76F8\u61C9\u7684\u65E5\u671F\u4E26\u8FD4\u56DE,\u503C\u4EE3\u8868\u5F9E\u5341\u4E8C\u670830\u65E5\u5230\u5C0D\u61C9\u7684\u65E5\u671F\u4E4B\u9593\u7684\u5929\u6578,\n\n\u8CA0\u503C\u8868\u793A\u5C0D\u61C9\u7684\u65E5\u671F\u5728\u5341\u4E8C\u670830\u65E5\u4E4B\u524D,\u800C\u5C0F\u6578\u503C\u5247\u4EE3\u8868\u4E00\u5929\u4E2D\u5F9E\u5348\u591C\u7B97\u8D77\u7684\u6642\u9593\u3002\n\u5982\u679C\u503C\u4E0D\u662F\u6578\u4F4D\u6216\u6307\u5411\u5167\u5BB9\u70BA\u6578\u503C\u7684\u5132\u5B58\u683C\u7684\u5F15\u7528,\u5247TO_DATE\u5C07\u5728\u4E0D\u505A\u4EFB\u4F55\u4FEE\u6539\u7684\u60C5\u51B5\u4E0B\u8FD4\u56DE\u503C\u3002"
  26241. }
  26242. ]
  26243. },
  26244. "TO_PURE_NUMBER": {
  26245. "d": "\u5C07\u7D66\u5B9A\u7684\u65E5\u671F/\u6642\u9593\u3001\u767E\u5206\u6BD4\u3001\u8CA8\u5E63\u91D1\u984D\u6216\u5176\u4ED6\u683C\u5F0F\u7684\u6578\u503C\u8F49\u63DB\u70BA\u4E0D\u5E36\u683C\u5F0F\u7684\u7D14\u6578\u4F4D\u3002",
  26246. "a": "\u5C07\u7D66\u5B9A\u7684\u65E5\u671F/\u6642\u9593\u3001\u767E\u5206\u6BD4\u3001\u8CA8\u5E63\u91D1\u984D\u6216\u5176\u4ED6\u683C\u5F0F\u7684\u6578\u503C\u8F49\u63DB\u70BA\u4E0D\u5E36\u683C\u5F0F\u7684\u7D14\u6578\u4F4D\u3002",
  26247. "p": [
  26248. {
  26249. "name": "value",
  26250. "detail": "\u8981\u8F49\u63DB\u70BA\u7D14\u6578\u4F4D\u7684\u53C3\u6578\u6216\u5176\u5132\u5B58\u683C\u5F15\u7528\u3002\n\n\u5982\u679C\u503C\u70BA\u6578\u4F4D\u6216\u6307\u5411\u5305\u542B\u6578\u503C\u7684\u5132\u5B58\u683C\u7684\u5F15\u7528,TO_PURE_NUMBER\u5C07\u4EE5\u4E0D\u5E36\u4EFB\u4F55\u683C\u5F0F\u8207\u89E3\u91CB\u7684\u5F62\u5F0F\u8FD4\u56DE\u503C\u3002\n\n\u5982\u679C\u503C\u4E0D\u662F\u6578\u4F4D\u6216\u6307\u5411\u5167\u5BB9\u70BA\u6578\u503C\u7684\u5132\u5B58\u683C\u7684\u5F15\u7528,\u5247TO_PERCENT\u5C07\u5728\u4E0D\u505A\u4EFB\u4F55\u4FEE\u6539\u7684\u60C5\u51B5\u4E0B\u8FD4\u56DE\u503C\u3002"
  26251. }
  26252. ]
  26253. },
  26254. "TO_TEXT": {
  26255. "d": "\u5C07\u7D66\u5B9A\u7684\u6578\u4F4D\u503C\u8F49\u63DB\u70BA\u6587\u672C\u683C\u5F0F\u3002",
  26256. "a": "\u5C07\u7D66\u5B9A\u7684\u6578\u4F4D\u503C\u8F49\u63DB\u70BA\u6587\u672C\u683C\u5F0F\u3002",
  26257. "p": [
  26258. {
  26259. "name": "value",
  26260. "detail": "\u8981\u8F49\u63DB\u70BA\u6587\u5B57\u7684\u53C3\u6578\u6216\u5176\u5132\u5B58\u683C\u5F15\u7528\u3002\n\n\u5982\u679C\u503C\u70BA\u6578\u4F4D\u6216\u6307\u5411\u5305\u542B\u6578\u503C\u7684\u5132\u5B58\u683C\u7684\u5F15\u7528,TO_TEXT\u5C07\u8FD4\u56DE\u5B57\u4E32\u5F62\u5F0F\u7684\u503C,\u4E26\u4FDD\u6301\u73FE\u6709\u683C\u5F0F\u3002\u5373\u539F\u70BA\u8CA8\u5E63\u7684\u4ECD\u70BA\u8CA8\u5E63,\u539F\u70BA\u5341\u9032\u4F4D\u6578\u7684\u4ECD\u70BA\u5341\u9032\u4F4D\u6578,\u539F\u70BA\u767E\u5206\u6BD4\u7684\u4ECD\u70BA\u767E\u5206\u6BD4,\u539F\u70BA\u65E5\u671F\u7684\u4ECD\u70BA\u65E5\u671F\u3002\n\n\u5982\u679C\u503C\u4E0D\u662F\u6578\u4F4D\u6216\u6307\u5411\u5167\u5BB9\u70BA\u6578\u503C\u7684\u5132\u5B58\u683C\u7684\u5F15\u7528,\u5247TO_TEXT\u5C07\u5728\u4E0D\u505A\u4EFB\u4F55\u4FEE\u6539\u7684\u60C5\u51B5\u4E0B\u8FD4\u56DE\u503C\u3002"
  26261. }
  26262. ]
  26263. },
  26264. "TO_DOLLARS": {
  26265. "d": "\u5C07\u6307\u5B9A\u7684\u6578\u4F4D\u8F49\u63DB\u70BA\u7F8E\u5143\u91D1\u984D\u3002",
  26266. "a": "\u5C07\u6307\u5B9A\u7684\u6578\u4F4D\u8F49\u63DB\u70BA\u7F8E\u5143\u91D1\u984D\u3002",
  26267. "p": [
  26268. {
  26269. "name": "value",
  26270. "detail": "\u8981\u8F49\u63DB\u70BA\u7F8E\u5143\u91D1\u984D\u7684\u53C3\u6578\u6216\u5176\u5132\u5B58\u683C\u5F15\u7528\u3002\n\n\u5982\u679C\u503C\u4E0D\u662F\u6578\u4F4D\u6216\u6307\u5411\u5167\u5BB9\u70BA\u6578\u503C\u7684\u5132\u5B58\u683C\u7684\u5F15\u7528,\u5247TO_DOLLARS\u5C07\u5728\u4E0D\u505A\u4EFB\u4F55\u4FEE\u6539\u7684\u60C5\u51B5\u4E0B\u8FD4\u56DE\u503C\u3002"
  26271. }
  26272. ]
  26273. },
  26274. "TO_PERCENT": {
  26275. "d": "\u5C07\u6307\u5B9A\u7684\u6578\u4F4D\u8F49\u63DB\u70BA\u767E\u5206\u6BD4\u3002",
  26276. "a": "\u5C07\u6307\u5B9A\u7684\u6578\u4F4D\u8F49\u63DB\u70BA\u767E\u5206\u6BD4\u3002",
  26277. "p": [
  26278. {
  26279. "name": "value",
  26280. "detail": "\u8981\u8F49\u63DB\u70BA\u767E\u5206\u6BD4\u7684\u53C3\u6578\u6216\u5176\u5132\u5B58\u683C\u5F15\u7528\u3002\n\n\u5982\u679C\u503C\u70BA\u6578\u4F4D\u6216\u6307\u5411\u5305\u542B\u6578\u503C\u7684\u5132\u5B58\u683C\u7684\u5F15\u7528,TO_PERCENT\u6703\u4EE51 = 100%\u70BA\u6A19\u6E96,\u5C07\u503C\u8F49\u63DB\u70BA\u767E\u5206\u6BD4\u3002\n\n\u5982\u679C\u503C\u4E0D\u662F\u6578\u4F4D\u6216\u6307\u5411\u5167\u5BB9\u70BA\u6578\u503C\u7684\u5132\u5B58\u683C\u7684\u5F15\u7528,\u5247TO_PERCENT\u5C07\u5728\u4E0D\u505A\u4EFB\u4F55\u4FEE\u6539\u7684\u60C5\u51B5\u4E0B\u8FD4\u56DE\u503C\u3002"
  26281. }
  26282. ]
  26283. },
  26284. "DGET": {
  26285. "d": "\u4F7F\u7528SQL\u5F0F\u67FB\u8A62,\u5F9E\u6E05\u55AE\u6216\u8CC7\u6599\u5EAB\u7684\u5217\u4E2D\u9078\u53D6\u7B26\u5408\u6307\u5B9A\u689D\u4EF6\u7684\u55AE\u500B\u503C\u3002",
  26286. "a": "\u4F7F\u7528SQL\u5F0F\u67FB\u8A62,\u5F9E\u6E05\u55AE\u6216\u8CC7\u6599\u5EAB\u7684\u5217\u4E2D\u9078\u53D6\u7B26\u5408\u6307\u5B9A\u689D\u4EF6\u7684\u55AE\u500B\u503C\u3002",
  26287. "p": [
  26288. {
  26289. "name": "database",
  26290. "detail": "\u69CB\u6210\u6E05\u55AE\u6216\u8CC7\u6599\u5EAB\u7684\u5132\u5B58\u683C\u5340\u57DF,\u6E05\u55AE\u7684\u7B2C\u4E00\u884C\u5305\u542B\u6BCF\u4E00\u5217\u7684\u6A19\u7C64\u3002"
  26291. },
  26292. {
  26293. "name": "field",
  26294. "detail": "\u6307\u5B9Adatabase\u4E2D\u7684\u54EA\u4E00\u5217\u5305\u542B\u8981\u9078\u53D6\u548C\u7528\u65BC\u8A08\u7B97\u7684\u503C\u3002\n\nfield\u53EF\u4EE5\u662F\u8207database\u7B2C\u4E00\u884C\u4E2D\u67D0\u500B\u5217\u6A19\u984C\u5C0D\u61C9\u7684\u6587\u5B57\u6A19\u7C64,\u4E5F\u53EF\u4EE5\u662F\u6307\u5B9A\u76F8\u95DC\u5217\u7684\u6578\u4F4D\u7D22\u5F15,\u7B2C\u4E00\u5217\u7684\u7D22\u5F15\u503C\u70BA1\u3002"
  26295. },
  26296. {
  26297. "name": "criteria",
  26298. "detail": "\u5305\u542B\u6240\u6307\u5B9A\u689D\u4EF6\u7684\u5132\u5B58\u683C\u5340\u57DF\u3002\u8A08\u7B97\u4E4B\u524D\u5C07\u4F7F\u7528\u9019\u4E9B\u689D\u4EF6\u4F86\u904E\u6FFEdatabase\u4E2D\u7684\u503C\u3002"
  26299. }
  26300. ]
  26301. },
  26302. "DMAX": {
  26303. "d": "\u4F7F\u7528SQL\u5F0F\u67FB\u8A62,\u8FD4\u56DE\u5217\u8868\u6216\u8CC7\u6599\u5EAB\u4E2D\u6EFF\u8DB3\u6307\u5B9A\u689D\u4EF6\u7684\u8A18\u9304\u6B04\u4F4D\uFF08\u5217\uFF09\u4E2D\u7684\u6700\u5927\u6578\u4F4D\u3002",
  26304. "a": "\u4F7F\u7528SQL\u5F0F\u67FB\u8A62,\u8FD4\u56DE\u5217\u8868\u6216\u8CC7\u6599\u5EAB\u4E2D\u6EFF\u8DB3\u6307\u5B9A\u689D\u4EF6\u7684\u8A18\u9304\u6B04\u4F4D\uFF08\u5217\uFF09\u4E2D\u7684\u6700\u5927\u6578\u4F4D\u3002",
  26305. "p": [
  26306. {
  26307. "name": "database",
  26308. "detail": "\u69CB\u6210\u6E05\u55AE\u6216\u8CC7\u6599\u5EAB\u7684\u5132\u5B58\u683C\u5340\u57DF,\u6E05\u55AE\u7684\u7B2C\u4E00\u884C\u5305\u542B\u6BCF\u4E00\u5217\u7684\u6A19\u7C64\u3002"
  26309. },
  26310. {
  26311. "name": "field",
  26312. "detail": "\u6307\u5B9Adatabase\u4E2D\u7684\u54EA\u4E00\u5217\u5305\u542B\u8981\u9078\u53D6\u548C\u7528\u65BC\u8A08\u7B97\u7684\u503C\u3002\n\nfield\u53EF\u4EE5\u662F\u8207database\u7B2C\u4E00\u884C\u4E2D\u67D0\u500B\u5217\u6A19\u984C\u5C0D\u61C9\u7684\u6587\u5B57\u6A19\u7C64,\u4E5F\u53EF\u4EE5\u662F\u6307\u5B9A\u76F8\u95DC\u5217\u7684\u6578\u4F4D\u7D22\u5F15,\u7B2C\u4E00\u5217\u7684\u7D22\u5F15\u503C\u70BA1\u3002"
  26313. },
  26314. {
  26315. "name": "criteria",
  26316. "detail": "\u5305\u542B\u6240\u6307\u5B9A\u689D\u4EF6\u7684\u5132\u5B58\u683C\u5340\u57DF\u3002\u8A08\u7B97\u4E4B\u524D\u5C07\u4F7F\u7528\u9019\u4E9B\u689D\u4EF6\u4F86\u904E\u6FFEdatabase\u4E2D\u7684\u503C\u3002"
  26317. }
  26318. ]
  26319. },
  26320. "DMIN": {
  26321. "d": "\u4F7F\u7528SQL\u5F0F\u67FB\u8A62,\u8FD4\u56DE\u5217\u8868\u6216\u8CC7\u6599\u5EAB\u4E2D\u6EFF\u8DB3\u6307\u5B9A\u689D\u4EF6\u7684\u8A18\u9304\u6B04\u4F4D\uFF08\u5217\uFF09\u4E2D\u7684\u6700\u5C0F\u6578\u4F4D\u3002",
  26322. "a": "\u4F7F\u7528SQL\u5F0F\u67FB\u8A62,\u8FD4\u56DE\u5217\u8868\u6216\u8CC7\u6599\u5EAB\u4E2D\u6EFF\u8DB3\u6307\u5B9A\u689D\u4EF6\u7684\u8A18\u9304\u6B04\u4F4D\uFF08\u5217\uFF09\u4E2D\u7684\u6700\u5C0F\u6578\u4F4D\u3002",
  26323. "p": [
  26324. {
  26325. "name": "database",
  26326. "detail": "\u69CB\u6210\u6E05\u55AE\u6216\u8CC7\u6599\u5EAB\u7684\u5132\u5B58\u683C\u5340\u57DF,\u6E05\u55AE\u7684\u7B2C\u4E00\u884C\u5305\u542B\u6BCF\u4E00\u5217\u7684\u6A19\u7C64\u3002"
  26327. },
  26328. {
  26329. "name": "field",
  26330. "detail": "\u6307\u5B9Adatabase\u4E2D\u7684\u54EA\u4E00\u5217\u5305\u542B\u8981\u9078\u53D6\u548C\u7528\u65BC\u8A08\u7B97\u7684\u503C\u3002\n\nfield\u53EF\u4EE5\u662F\u8207database\u7B2C\u4E00\u884C\u4E2D\u67D0\u500B\u5217\u6A19\u984C\u5C0D\u61C9\u7684\u6587\u5B57\u6A19\u7C64,\u4E5F\u53EF\u4EE5\u662F\u6307\u5B9A\u76F8\u95DC\u5217\u7684\u6578\u4F4D\u7D22\u5F15,\u7B2C\u4E00\u5217\u7684\u7D22\u5F15\u503C\u70BA1\u3002"
  26331. },
  26332. {
  26333. "name": "criteria",
  26334. "detail": "\u5305\u542B\u6240\u6307\u5B9A\u689D\u4EF6\u7684\u5132\u5B58\u683C\u5340\u57DF\u3002\u8A08\u7B97\u4E4B\u524D\u5C07\u4F7F\u7528\u9019\u4E9B\u689D\u4EF6\u4F86\u904E\u6FFEdatabase\u4E2D\u7684\u503C\u3002"
  26335. }
  26336. ]
  26337. },
  26338. "DAVERAGE": {
  26339. "d": "\u4F7F\u7528SQL\u5F0F\u67FB\u8A62,\u5C0D\u6E05\u55AE\u6216\u8CC7\u6599\u5EAB\u4E2D\u6EFF\u8DB3\u6307\u5B9A\u689D\u4EF6\u7684\u8A18\u9304\u6B04\u4F4D\uFF08\u5217\uFF09\u4E2D\u7684\u6578\u503C\u6C42\u5E73\u5747\u503C\u3002",
  26340. "a": "\u4F7F\u7528SQL\u5F0F\u67FB\u8A62,\u5C0D\u6E05\u55AE\u6216\u8CC7\u6599\u5EAB\u4E2D\u6EFF\u8DB3\u6307\u5B9A\u689D\u4EF6\u7684\u8A18\u9304\u6B04\u4F4D\uFF08\u5217\uFF09\u4E2D\u7684\u6578\u503C\u6C42\u5E73\u5747\u503C\u3002",
  26341. "p": [
  26342. {
  26343. "name": "database",
  26344. "detail": "\u69CB\u6210\u6E05\u55AE\u6216\u8CC7\u6599\u5EAB\u7684\u5132\u5B58\u683C\u5340\u57DF,\u6E05\u55AE\u7684\u7B2C\u4E00\u884C\u5305\u542B\u6BCF\u4E00\u5217\u7684\u6A19\u7C64\u3002"
  26345. },
  26346. {
  26347. "name": "field",
  26348. "detail": "\u6307\u5B9Adatabase\u4E2D\u7684\u54EA\u4E00\u5217\u5305\u542B\u8981\u9078\u53D6\u548C\u7528\u65BC\u8A08\u7B97\u7684\u503C\u3002\n\nfield\u53EF\u4EE5\u662F\u8207database\u7B2C\u4E00\u884C\u4E2D\u67D0\u500B\u5217\u6A19\u984C\u5C0D\u61C9\u7684\u6587\u5B57\u6A19\u7C64,\u4E5F\u53EF\u4EE5\u662F\u6307\u5B9A\u76F8\u95DC\u5217\u7684\u6578\u4F4D\u7D22\u5F15,\u7B2C\u4E00\u5217\u7684\u7D22\u5F15\u503C\u70BA1\u3002"
  26349. },
  26350. {
  26351. "name": "criteria",
  26352. "detail": "\u5305\u542B\u6240\u6307\u5B9A\u689D\u4EF6\u7684\u5132\u5B58\u683C\u5340\u57DF\u3002\u8A08\u7B97\u4E4B\u524D\u5C07\u4F7F\u7528\u9019\u4E9B\u689D\u4EF6\u4F86\u904E\u6FFEdatabase\u4E2D\u7684\u503C\u3002"
  26353. }
  26354. ]
  26355. },
  26356. "DCOUNT": {
  26357. "d": "\u4F7F\u7528SQL\u5F0F\u67FB\u8A62,\u8FD4\u56DE\u5217\u8868\u6216\u8CC7\u6599\u5EAB\u4E2D\u6EFF\u8DB3\u6307\u5B9A\u689D\u4EF6\u7684\u8A18\u9304\u6B04\u4F4D\uFF08\u5217\uFF09\u4E2D\u5305\u542B\u6578\u4F4D\u7684\u5132\u5B58\u683C\u7684\u500B\u6578\u3002",
  26358. "a": "\u4F7F\u7528SQL\u5F0F\u67FB\u8A62,\u8FD4\u56DE\u5217\u8868\u6216\u8CC7\u6599\u5EAB\u4E2D\u6EFF\u8DB3\u6307\u5B9A\u689D\u4EF6\u7684\u8A18\u9304\u6B04\u4F4D\uFF08\u5217\uFF09\u4E2D\u5305\u542B\u6578\u4F4D\u7684\u5132\u5B58\u683C\u7684\u500B\u6578\u3002",
  26359. "p": [
  26360. {
  26361. "name": "database",
  26362. "detail": "\u69CB\u6210\u6E05\u55AE\u6216\u8CC7\u6599\u5EAB\u7684\u5132\u5B58\u683C\u5340\u57DF,\u6E05\u55AE\u7684\u7B2C\u4E00\u884C\u5305\u542B\u6BCF\u4E00\u5217\u7684\u6A19\u7C64\u3002"
  26363. },
  26364. {
  26365. "name": "field",
  26366. "detail": "\u6307\u5B9Adatabase\u4E2D\u7684\u54EA\u4E00\u5217\u5305\u542B\u8981\u9078\u53D6\u548C\u7528\u65BC\u8A08\u7B97\u7684\u503C\u3002\n\nfield\u53EF\u4EE5\u662F\u8207database\u7B2C\u4E00\u884C\u4E2D\u67D0\u500B\u5217\u6A19\u984C\u5C0D\u61C9\u7684\u6587\u5B57\u6A19\u7C64,\u4E5F\u53EF\u4EE5\u662F\u6307\u5B9A\u76F8\u95DC\u5217\u7684\u6578\u4F4D\u7D22\u5F15,\u7B2C\u4E00\u5217\u7684\u7D22\u5F15\u503C\u70BA1\u3002"
  26367. },
  26368. {
  26369. "name": "criteria",
  26370. "detail": "\u5305\u542B\u6240\u6307\u5B9A\u689D\u4EF6\u7684\u5132\u5B58\u683C\u5340\u57DF\u3002\u8A08\u7B97\u4E4B\u524D\u5C07\u4F7F\u7528\u9019\u4E9B\u689D\u4EF6\u4F86\u904E\u6FFEdatabase\u4E2D\u7684\u503C\u3002"
  26371. }
  26372. ]
  26373. },
  26374. "DCOUNTA": {
  26375. "d": "\u4F7F\u7528SQL\u5F0F\u67FB\u8A62,\u8FD4\u56DE\u5217\u8868\u6216\u8CC7\u6599\u5EAB\u4E2D\u6EFF\u8DB3\u6307\u5B9A\u689D\u4EF6\u7684\u8A18\u9304\u6B04\u4F4D\uFF08\u5217\uFF09\u4E2D\u7684\u975E\u7A7A\u5132\u5B58\u683C\u7684\u500B\u6578\u3002",
  26376. "a": "\u4F7F\u7528SQL\u5F0F\u67FB\u8A62,\u8FD4\u56DE\u5217\u8868\u6216\u8CC7\u6599\u5EAB\u4E2D\u6EFF\u8DB3\u6307\u5B9A\u689D\u4EF6\u7684\u8A18\u9304\u6B04\u4F4D\uFF08\u5217\uFF09\u4E2D\u7684\u975E\u7A7A\u5132\u5B58\u683C\u7684\u500B\u6578\u3002",
  26377. "p": [
  26378. {
  26379. "name": "database",
  26380. "detail": "\u69CB\u6210\u6E05\u55AE\u6216\u8CC7\u6599\u5EAB\u7684\u5132\u5B58\u683C\u5340\u57DF,\u6E05\u55AE\u7684\u7B2C\u4E00\u884C\u5305\u542B\u6BCF\u4E00\u5217\u7684\u6A19\u7C64\u3002"
  26381. },
  26382. {
  26383. "name": "field",
  26384. "detail": "\u6307\u5B9Adatabase\u4E2D\u7684\u54EA\u4E00\u5217\u5305\u542B\u8981\u9078\u53D6\u548C\u7528\u65BC\u8A08\u7B97\u7684\u503C\u3002\n\nfield\u53EF\u4EE5\u662F\u8207database\u7B2C\u4E00\u884C\u4E2D\u67D0\u500B\u5217\u6A19\u984C\u5C0D\u61C9\u7684\u6587\u5B57\u6A19\u7C64,\u4E5F\u53EF\u4EE5\u662F\u6307\u5B9A\u76F8\u95DC\u5217\u7684\u6578\u4F4D\u7D22\u5F15,\u7B2C\u4E00\u5217\u7684\u7D22\u5F15\u503C\u70BA1\u3002"
  26385. },
  26386. {
  26387. "name": "criteria",
  26388. "detail": "\u5305\u542B\u6240\u6307\u5B9A\u689D\u4EF6\u7684\u5132\u5B58\u683C\u5340\u57DF\u3002\u8A08\u7B97\u4E4B\u524D\u5C07\u4F7F\u7528\u9019\u4E9B\u689D\u4EF6\u4F86\u904E\u6FFEdatabase\u4E2D\u7684\u503C\u3002"
  26389. }
  26390. ]
  26391. },
  26392. "DPRODUCT": {
  26393. "d": "\u4F7F\u7528SQL\u5F0F\u67FB\u8A62,\u8FD4\u56DE\u5217\u8868\u6216\u8CC7\u6599\u5EAB\u4E2D\u6EFF\u8DB3\u6307\u5B9A\u689D\u4EF6\u7684\u8A18\u9304\u6B04\u4F4D\uFF08\u5217\uFF09\u4E2D\u7684\u6578\u503C\u7684\u4E58\u7A4D\u3002",
  26394. "a": "\u4F7F\u7528SQL\u5F0F\u67FB\u8A62,\u8FD4\u56DE\u5217\u8868\u6216\u8CC7\u6599\u5EAB\u4E2D\u6EFF\u8DB3\u6307\u5B9A\u689D\u4EF6\u7684\u8A18\u9304\u6B04\u4F4D\uFF08\u5217\uFF09\u4E2D\u7684\u6578\u503C\u7684\u4E58\u7A4D\u3002",
  26395. "p": [
  26396. {
  26397. "name": "database",
  26398. "detail": "\u69CB\u6210\u6E05\u55AE\u6216\u8CC7\u6599\u5EAB\u7684\u5132\u5B58\u683C\u5340\u57DF,\u6E05\u55AE\u7684\u7B2C\u4E00\u884C\u5305\u542B\u6BCF\u4E00\u5217\u7684\u6A19\u7C64\u3002"
  26399. },
  26400. {
  26401. "name": "field",
  26402. "detail": "\u6307\u5B9Adatabase\u4E2D\u7684\u54EA\u4E00\u5217\u5305\u542B\u8981\u9078\u53D6\u548C\u7528\u65BC\u8A08\u7B97\u7684\u503C\u3002\n\nfield\u53EF\u4EE5\u662F\u8207database\u7B2C\u4E00\u884C\u4E2D\u67D0\u500B\u5217\u6A19\u984C\u5C0D\u61C9\u7684\u6587\u5B57\u6A19\u7C64,\u4E5F\u53EF\u4EE5\u662F\u6307\u5B9A\u76F8\u95DC\u5217\u7684\u6578\u4F4D\u7D22\u5F15,\u7B2C\u4E00\u5217\u7684\u7D22\u5F15\u503C\u70BA1\u3002"
  26403. },
  26404. {
  26405. "name": "criteria",
  26406. "detail": "\u5305\u542B\u6240\u6307\u5B9A\u689D\u4EF6\u7684\u5132\u5B58\u683C\u5340\u57DF\u3002\u8A08\u7B97\u4E4B\u524D\u5C07\u4F7F\u7528\u9019\u4E9B\u689D\u4EF6\u4F86\u904E\u6FFEdatabase\u4E2D\u7684\u503C\u3002"
  26407. }
  26408. ]
  26409. },
  26410. "DSTDEV": {
  26411. "d": "\u4F7F\u7528SQL\u5F0F\u67FB\u8A62,\u8FD4\u56DE\u5229\u7528\u6E05\u55AE\u6216\u8CC7\u6599\u5EAB\u4E2D\u6EFF\u8DB3\u6307\u5B9A\u689D\u4EF6\u7684\u8A18\u9304\u6B04\u4F4D\uFF08\u5217\uFF09\u4E2D\u7684\u6578\u4F4D\u4F5C\u70BA\u4E00\u500B\u6A23\u672C\u4F30\u7B97\u51FA\u7684\u7E3D\u9AD4\u6A19\u6E96\u5DEE\u3002",
  26412. "a": "\u4F7F\u7528SQL\u5F0F\u67FB\u8A62,\u8FD4\u56DE\u5229\u7528\u6E05\u55AE\u6216\u8CC7\u6599\u5EAB\u4E2D\u6EFF\u8DB3\u6307\u5B9A\u689D\u4EF6\u7684\u8A18\u9304\u6B04\u4F4D\uFF08\u5217\uFF09\u4E2D\u7684\u6578\u4F4D\u4F5C\u70BA\u4E00\u500B\u6A23\u672C\u4F30\u7B97\u51FA\u7684\u7E3D\u9AD4\u6A19\u6E96\u5DEE\u3002",
  26413. "p": [
  26414. {
  26415. "name": "database",
  26416. "detail": "\u69CB\u6210\u6E05\u55AE\u6216\u8CC7\u6599\u5EAB\u7684\u5132\u5B58\u683C\u5340\u57DF,\u6E05\u55AE\u7684\u7B2C\u4E00\u884C\u5305\u542B\u6BCF\u4E00\u5217\u7684\u6A19\u7C64\u3002"
  26417. },
  26418. {
  26419. "name": "field",
  26420. "detail": "\u6307\u5B9Adatabase\u4E2D\u7684\u54EA\u4E00\u5217\u5305\u542B\u8981\u9078\u53D6\u548C\u7528\u65BC\u8A08\u7B97\u7684\u503C\u3002\n\nfield\u53EF\u4EE5\u662F\u8207database\u7B2C\u4E00\u884C\u4E2D\u67D0\u500B\u5217\u6A19\u984C\u5C0D\u61C9\u7684\u6587\u5B57\u6A19\u7C64,\u4E5F\u53EF\u4EE5\u662F\u6307\u5B9A\u76F8\u95DC\u5217\u7684\u6578\u4F4D\u7D22\u5F15,\u7B2C\u4E00\u5217\u7684\u7D22\u5F15\u503C\u70BA1\u3002"
  26421. },
  26422. {
  26423. "name": "criteria",
  26424. "detail": "\u5305\u542B\u6240\u6307\u5B9A\u689D\u4EF6\u7684\u5132\u5B58\u683C\u5340\u57DF\u3002\u8A08\u7B97\u4E4B\u524D\u5C07\u4F7F\u7528\u9019\u4E9B\u689D\u4EF6\u4F86\u904E\u6FFEdatabase\u4E2D\u7684\u503C\u3002"
  26425. }
  26426. ]
  26427. },
  26428. "DSTDEVP": {
  26429. "d": "\u4F7F\u7528SQL\u5F0F\u67FB\u8A62,\u8FD4\u56DE\u5229\u7528\u6E05\u55AE\u6216\u8CC7\u6599\u5EAB\u4E2D\u6EFF\u8DB3\u6307\u5B9A\u689D\u4EF6\u7684\u8A18\u9304\u6B04\u4F4D\uFF08\u5217\uFF09\u4E2D\u7684\u6578\u4F4D\u4F5C\u70BA\u6A23\u672C\u7E3D\u9AD4\u8A08\u7B97\u51FA\u7684\u7E3D\u9AD4\u6A19\u6E96\u5DEE\u3002",
  26430. "a": "\u4F7F\u7528SQL\u5F0F\u67FB\u8A62,\u8FD4\u56DE\u5229\u7528\u6E05\u55AE\u6216\u8CC7\u6599\u5EAB\u4E2D\u6EFF\u8DB3\u6307\u5B9A\u689D\u4EF6\u7684\u8A18\u9304\u6B04\u4F4D\uFF08\u5217\uFF09\u4E2D\u7684\u6578\u4F4D\u4F5C\u70BA\u6A23\u672C\u7E3D\u9AD4\u8A08\u7B97\u51FA\u7684\u7E3D\u9AD4\u6A19\u6E96\u5DEE\u3002",
  26431. "p": [
  26432. {
  26433. "name": "database",
  26434. "detail": "\u69CB\u6210\u6E05\u55AE\u6216\u8CC7\u6599\u5EAB\u7684\u5132\u5B58\u683C\u5340\u57DF,\u6E05\u55AE\u7684\u7B2C\u4E00\u884C\u5305\u542B\u6BCF\u4E00\u5217\u7684\u6A19\u7C64\u3002"
  26435. },
  26436. {
  26437. "name": "field",
  26438. "detail": "\u6307\u5B9Adatabase\u4E2D\u7684\u54EA\u4E00\u5217\u5305\u542B\u8981\u9078\u53D6\u548C\u7528\u65BC\u8A08\u7B97\u7684\u503C\u3002\n\nfield\u53EF\u4EE5\u662F\u8207database\u7B2C\u4E00\u884C\u4E2D\u67D0\u500B\u5217\u6A19\u984C\u5C0D\u61C9\u7684\u6587\u5B57\u6A19\u7C64,\u4E5F\u53EF\u4EE5\u662F\u6307\u5B9A\u76F8\u95DC\u5217\u7684\u6578\u4F4D\u7D22\u5F15,\u7B2C\u4E00\u5217\u7684\u7D22\u5F15\u503C\u70BA1\u3002"
  26439. },
  26440. {
  26441. "name": "criteria",
  26442. "detail": "\u5305\u542B\u6240\u6307\u5B9A\u689D\u4EF6\u7684\u5132\u5B58\u683C\u5340\u57DF\u3002\u8A08\u7B97\u4E4B\u524D\u5C07\u4F7F\u7528\u9019\u4E9B\u689D\u4EF6\u4F86\u904E\u6FFEdatabase\u4E2D\u7684\u503C\u3002"
  26443. }
  26444. ]
  26445. },
  26446. "DSUM": {
  26447. "d": "\u4F7F\u7528SQL\u5F0F\u67FB\u8A62,\u8FD4\u56DE\u5217\u8868\u6216\u8CC7\u6599\u5EAB\u4E2D\u6EFF\u8DB3\u6307\u5B9A\u689D\u4EF6\u7684\u8A18\u9304\u6B04\u4F4D\uFF08\u5217\uFF09\u4E2D\u7684\u6578\u4F4D\u4E4B\u548C\u3002",
  26448. "a": "\u4F7F\u7528SQL\u5F0F\u67FB\u8A62,\u8FD4\u56DE\u5217\u8868\u6216\u8CC7\u6599\u5EAB\u4E2D\u6EFF\u8DB3\u6307\u5B9A\u689D\u4EF6\u7684\u8A18\u9304\u6B04\u4F4D\uFF08\u5217\uFF09\u4E2D\u7684\u6578\u4F4D\u4E4B\u548C\u3002",
  26449. "p": [
  26450. {
  26451. "name": "database",
  26452. "detail": "\u69CB\u6210\u6E05\u55AE\u6216\u8CC7\u6599\u5EAB\u7684\u5132\u5B58\u683C\u5340\u57DF,\u6E05\u55AE\u7684\u7B2C\u4E00\u884C\u5305\u542B\u6BCF\u4E00\u5217\u7684\u6A19\u7C64\u3002"
  26453. },
  26454. {
  26455. "name": "field",
  26456. "detail": "\u6307\u5B9Adatabase\u4E2D\u7684\u54EA\u4E00\u5217\u5305\u542B\u8981\u9078\u53D6\u548C\u7528\u65BC\u8A08\u7B97\u7684\u503C\u3002\n\nfield\u53EF\u4EE5\u662F\u8207database\u7B2C\u4E00\u884C\u4E2D\u67D0\u500B\u5217\u6A19\u984C\u5C0D\u61C9\u7684\u6587\u5B57\u6A19\u7C64,\u4E5F\u53EF\u4EE5\u662F\u6307\u5B9A\u76F8\u95DC\u5217\u7684\u6578\u4F4D\u7D22\u5F15,\u7B2C\u4E00\u5217\u7684\u7D22\u5F15\u503C\u70BA1\u3002"
  26457. },
  26458. {
  26459. "name": "criteria",
  26460. "detail": "\u5305\u542B\u6240\u6307\u5B9A\u689D\u4EF6\u7684\u5132\u5B58\u683C\u5340\u57DF\u3002\u8A08\u7B97\u4E4B\u524D\u5C07\u4F7F\u7528\u9019\u4E9B\u689D\u4EF6\u4F86\u904E\u6FFEdatabase\u4E2D\u7684\u503C\u3002"
  26461. }
  26462. ]
  26463. },
  26464. "DVAR": {
  26465. "d": "\u4F7F\u7528SQL\u5F0F\u67FB\u8A62,\u8FD4\u56DE\u5229\u7528\u6E05\u55AE\u6216\u8CC7\u6599\u5EAB\u4E2D\u6EFF\u8DB3\u6307\u5B9A\u689D\u4EF6\u7684\u8A18\u9304\u6B04\u4F4D\uFF08\u5217\uFF09\u4E2D\u7684\u6578\u4F4D\u4F5C\u70BA\u4E00\u500B\u6A23\u672C\u4F30\u7B97\u51FA\u7684\u7E3D\u9AD4\u65B9\u5DEE\u3002",
  26466. "a": "\u4F7F\u7528SQL\u5F0F\u67FB\u8A62,\u8FD4\u56DE\u5229\u7528\u6E05\u55AE\u6216\u8CC7\u6599\u5EAB\u4E2D\u6EFF\u8DB3\u6307\u5B9A\u689D\u4EF6\u7684\u8A18\u9304\u6B04\u4F4D\uFF08\u5217\uFF09\u4E2D\u7684\u6578\u4F4D\u4F5C\u70BA\u4E00\u500B\u6A23\u672C\u4F30\u7B97\u51FA\u7684\u7E3D\u9AD4\u65B9\u5DEE\u3002",
  26467. "p": [
  26468. {
  26469. "name": "database",
  26470. "detail": "\u69CB\u6210\u6E05\u55AE\u6216\u8CC7\u6599\u5EAB\u7684\u5132\u5B58\u683C\u5340\u57DF,\u6E05\u55AE\u7684\u7B2C\u4E00\u884C\u5305\u542B\u6BCF\u4E00\u5217\u7684\u6A19\u7C64\u3002"
  26471. },
  26472. {
  26473. "name": "field",
  26474. "detail": "\u6307\u5B9Adatabase\u4E2D\u7684\u54EA\u4E00\u5217\u5305\u542B\u8981\u9078\u53D6\u548C\u7528\u65BC\u8A08\u7B97\u7684\u503C\u3002\n\nfield\u53EF\u4EE5\u662F\u8207database\u7B2C\u4E00\u884C\u4E2D\u67D0\u500B\u5217\u6A19\u984C\u5C0D\u61C9\u7684\u6587\u5B57\u6A19\u7C64,\u4E5F\u53EF\u4EE5\u662F\u6307\u5B9A\u76F8\u95DC\u5217\u7684\u6578\u4F4D\u7D22\u5F15,\u7B2C\u4E00\u5217\u7684\u7D22\u5F15\u503C\u70BA1\u3002"
  26475. },
  26476. {
  26477. "name": "criteria",
  26478. "detail": "\u5305\u542B\u6240\u6307\u5B9A\u689D\u4EF6\u7684\u5132\u5B58\u683C\u5340\u57DF\u3002\u8A08\u7B97\u4E4B\u524D\u5C07\u4F7F\u7528\u9019\u4E9B\u689D\u4EF6\u4F86\u904E\u6FFEdatabase\u4E2D\u7684\u503C\u3002"
  26479. }
  26480. ]
  26481. },
  26482. "DVARP": {
  26483. "d": "\u4F7F\u7528SQL\u5F0F\u67FB\u8A62,\u901A\u904E\u4F7F\u7528\u6E05\u55AE\u6216\u8CC7\u6599\u5EAB\u4E2D\u6EFF\u8DB3\u6307\u5B9A\u689D\u4EF6\u7684\u8A18\u9304\u6B04\u4F4D\uFF08\u5217\uFF09\u4E2D\u7684\u6578\u4F4D\u8A08\u7B97\u6A23\u672C\u7E3D\u9AD4\u7684\u6A23\u672C\u7E3D\u9AD4\u65B9\u5DEE\u3002",
  26484. "a": "\u4F7F\u7528SQL\u5F0F\u67FB\u8A62,\u901A\u904E\u4F7F\u7528\u6E05\u55AE\u6216\u8CC7\u6599\u5EAB\u4E2D\u6EFF\u8DB3\u6307\u5B9A\u689D\u4EF6\u7684\u8A18\u9304\u6B04\u4F4D\uFF08\u5217\uFF09\u4E2D\u7684\u6578\u4F4D\u8A08\u7B97\u6A23\u672C\u7E3D\u9AD4\u7684\u6A23\u672C\u7E3D\u9AD4\u65B9\u5DEE\u3002",
  26485. "p": [
  26486. {
  26487. "name": "database",
  26488. "detail": "\u69CB\u6210\u6E05\u55AE\u6216\u8CC7\u6599\u5EAB\u7684\u5132\u5B58\u683C\u5340\u57DF,\u6E05\u55AE\u7684\u7B2C\u4E00\u884C\u5305\u542B\u6BCF\u4E00\u5217\u7684\u6A19\u7C64\u3002"
  26489. },
  26490. {
  26491. "name": "field",
  26492. "detail": "\u6307\u5B9Adatabase\u4E2D\u7684\u54EA\u4E00\u5217\u5305\u542B\u8981\u9078\u53D6\u548C\u7528\u65BC\u8A08\u7B97\u7684\u503C\u3002\n\nfield\u53EF\u4EE5\u662F\u8207database\u7B2C\u4E00\u884C\u4E2D\u67D0\u500B\u5217\u6A19\u984C\u5C0D\u61C9\u7684\u6587\u5B57\u6A19\u7C64,\u4E5F\u53EF\u4EE5\u662F\u6307\u5B9A\u76F8\u95DC\u5217\u7684\u6578\u4F4D\u7D22\u5F15,\u7B2C\u4E00\u5217\u7684\u7D22\u5F15\u503C\u70BA1\u3002"
  26493. },
  26494. {
  26495. "name": "criteria",
  26496. "detail": "\u5305\u542B\u6240\u6307\u5B9A\u689D\u4EF6\u7684\u5132\u5B58\u683C\u5340\u57DF\u3002\u8A08\u7B97\u4E4B\u524D\u5C07\u4F7F\u7528\u9019\u4E9B\u689D\u4EF6\u4F86\u904E\u6FFEdatabase\u4E2D\u7684\u503C\u3002"
  26497. }
  26498. ]
  26499. },
  26500. "AGE_BY_IDCARD": {
  26501. "d": "\u64DA\u4E2D\u570B\u8EAB\u4EFD\u8B49\u865F\u8A08\u7B97\u51FA\u5E74\u9F61\u3002\u652F\u630115\u4F4D\u621618\u4F4D\u8EAB\u4EFD\u8B49",
  26502. "a": "\u64DA\u4E2D\u570B\u8EAB\u4EFD\u8B49\u865F\u8A08\u7B97\u51FA\u5E74\u9F61",
  26503. "p": [
  26504. {
  26505. "name": "\u8EAB\u4EFD\u8B49\u865F",
  26506. "detail": "15\u4F4D\u6216\u800518\u4F4D\u7684\u8EAB\u4EFD\u8B49\u865F\u6216\u7BC4\u570D\u3002"
  26507. },
  26508. {
  26509. "name": "\u622A\u6B62\u65E5\u671F",
  26510. "detail": "\u5E74\u9F61\u8A08\u7B97\u7684\u622A\u6B62\u65E5\u671F\u6216\u7BC4\u570D,\u9ED8\u8A8D\u70BA\u7576\u65E5\u3002"
  26511. }
  26512. ]
  26513. },
  26514. "SEX_BY_IDCARD": {
  26515. "d": "\u6839\u64DA\u4E2D\u570B\u8EAB\u4EFD\u8B49\u865F\u8A08\u7B97\u51FA\u6027\u5225\u3002\u652F\u630115\u4F4D\u621618\u4F4D\u8EAB\u4EFD\u8B49",
  26516. "a": "\u6839\u64DA\u8EAB\u4EFD\u8B49\u865F\u5F97\u5230\u6027\u5225\u3002",
  26517. "p": [
  26518. {
  26519. "name": "\u8EAB\u4EFD\u8B49\u865F",
  26520. "detail": "15\u4F4D\u6216\u800518\u4F4D\u7684\u8EAB\u4EFD\u8B49\u865F\u6216\u7BC4\u570D\u3002"
  26521. }
  26522. ]
  26523. },
  26524. "BIRTHDAY_BY_IDCARD": {
  26525. "d": "\u6839\u64DA\u4E2D\u570B\u8EAB\u4EFD\u8B49\u865F\u8A08\u7B97\u51FA\u751F\u65E5\u3002\u652F\u630115\u4F4D\u621618\u4F4D\u8EAB\u4EFD\u8B49",
  26526. "a": "\u6839\u64DA\u8EAB\u4EFD\u8B49\u865F\u5F97\u5230\u751F\u65E5\u3002",
  26527. "p": [
  26528. {
  26529. "name": "\u8EAB\u4EFD\u8B49\u865F",
  26530. "detail": "15\u4F4D\u6216\u800518\u4F4D\u7684\u8EAB\u4EFD\u8B49\u865F\u6216\u7BC4\u570D\u3002"
  26531. },
  26532. {
  26533. "name": "\u751F\u65E5\u683C\u5F0F",
  26534. "detail": "\u65E5\u671F\u985E\u578B,\u9ED8\u8A8D0:[1900/01/01],1:[1900-01-01],2:[1900\u5E741\u67081\u65E5]"
  26535. }
  26536. ]
  26537. },
  26538. "PROVINCE_BY_IDCARD": {
  26539. "d": "\u6839\u64DA\u4E2D\u570B\u8EAB\u4EFD\u8B49\u865F\u8A08\u7B97\u51FA\u7C4D\u8CAB\u7684\u7701\u4EFD\u3002\u652F\u630115\u4F4D\u621618\u4F4D\u8EAB\u4EFD\u8B49",
  26540. "a": "\u6839\u64DA\u8EAB\u4EFD\u8B49\u865F\u5F97\u5230\u7C4D\u8CAB\u7684\u7701\u4EFD\u3002",
  26541. "p": [
  26542. {
  26543. "name": "\u8EAB\u4EFD\u8B49\u865F",
  26544. "detail": "15\u4F4D\u6216\u800518\u4F4D\u7684\u8EAB\u4EFD\u8B49\u865F\u6216\u7BC4\u570D\u3002"
  26545. }
  26546. ]
  26547. },
  26548. "CITY_BY_IDCARD": {
  26549. "d": "\u6839\u64DA\u4E2D\u570B\u8EAB\u4EFD\u8B49\u865F\u8A08\u7B97\u51FA\u7C4D\u8CAB\u7684\u90FD\u5E02\u3002\u652F\u630115\u4F4D\u621618\u4F4D\u8EAB\u4EFD\u8B49",
  26550. "a": "\u6839\u64DA\u8EAB\u4EFD\u8B49\u865F\u5F97\u5230\u7C4D\u8CAB\u7684\u90FD\u5E02\u3002",
  26551. "p": [
  26552. {
  26553. "name": "\u8EAB\u4EFD\u8B49\u865F",
  26554. "detail": "15\u4F4D\u6216\u800518\u4F4D\u7684\u8EAB\u4EFD\u8B49\u865F\u6216\u7BC4\u570D\u3002"
  26555. }
  26556. ]
  26557. },
  26558. "STAR_BY_IDCARD": {
  26559. "d": "\u6839\u64DA\u4E2D\u570B\u8EAB\u4EFD\u8B49\u865F\u8A08\u7B97\u51FA\u661F\u5EA7\u3002\u652F\u630115\u4F4D\u621618\u4F4D\u8EAB\u4EFD\u8B49",
  26560. "a": "\u6839\u64DA\u8EAB\u4EFD\u8B49\u865F\u5F97\u5230\u661F\u5EA7\u3002",
  26561. "p": [
  26562. {
  26563. "name": "\u8EAB\u4EFD\u8B49\u865F",
  26564. "detail": "15\u4F4D\u6216\u800518\u4F4D\u7684\u8EAB\u4EFD\u8B49\u865F\u6216\u7BC4\u570D\u3002"
  26565. }
  26566. ]
  26567. },
  26568. "ANIMAL_BY_IDCARD": {
  26569. "d": "\u6839\u64DA\u4E2D\u570B\u8EAB\u4EFD\u8B49\u865F\u8A08\u7B97\u51FA\u751F\u8096\uFF08\u9F20\u3001\u725B\u3001\u864E\u3001\u5154\u2026\uFF09\u3002\u652F\u630115\u4F4D\u621618\u4F4D\u8EAB\u4EFD\u8B49",
  26570. "a": "\u6839\u64DA\u8EAB\u4EFD\u8B49\u865F\u5F97\u5230\u751F\u8096\u3002",
  26571. "p": [
  26572. {
  26573. "name": "\u8EAB\u4EFD\u8B49\u865F",
  26574. "detail": "15\u4F4D\u6216\u800518\u4F4D\u7684\u8EAB\u4EFD\u8B49\u865F\u6216\u7BC4\u570D\u3002"
  26575. }
  26576. ]
  26577. },
  26578. "ISIDCARD": {
  26579. "d": "\u9A57\u8B49\u8EAB\u4EFD\u8B49\u7684\u683C\u5F0F\u662F\u5426\u6B63\u78BA\u3002\u652F\u630115\u4F4D\u621618\u4F4D\u8EAB\u4EFD\u8B49",
  26580. "a": "\u9A57\u8B49\u8EAB\u4EFD\u8B49\u683C\u5F0F\u6B63\u78BA\u6027\u3002",
  26581. "p": [
  26582. {
  26583. "name": "\u8EAB\u4EFD\u8B49\u865F",
  26584. "detail": "15\u4F4D\u6216\u800518\u4F4D\u7684\u8EAB\u4EFD\u8B49\u865F\u6216\u7BC4\u570D\u3002"
  26585. }
  26586. ]
  26587. },
  26588. "DM_TEXT_CUTWORD": {
  26589. "d": "\u6587\u5B57\u5206\u8A5E\u3002\u628A\u4E00\u9023\u4E32\u6587\u5B57\u6298\u958B\u70BA\u4E00\u7CFB\u5217\u55AE\u7368\u8A5E\u8A9E",
  26590. "a": "\u4E2D\u6587\u6587\u5B57\u5206\u8A5E\u3002",
  26591. "p": [
  26592. {
  26593. "name": "\u6587\u5B57",
  26594. "detail": "\u4EFB\u610F\u9700\u8981\u5206\u8A5E\u7684\u6587\u5B57\u3002"
  26595. },
  26596. {
  26597. "name": "\u5206\u8A5E\u6A21\u5F0F",
  26598. "detail": "\u9ED8\u8A8D\u70BA0[\u7CBE\u78BA\u6A21\u5F0F]\uFF0C1[\u5168\u6A21\u5F0F]\uFF0C2[\u641C\u5C0B\u5F15\u64CE\u6A21\u5F0F]\u3002"
  26599. }
  26600. ]
  26601. },
  26602. "DM_TEXT_TFIDF": {
  26603. "d": "\u63A1\u7528tf-idf\u7B97\u704B\u9032\u884C\u95DC\u9375\u5B57\u9078\u53D6\u3002\u5F9E\u4E00\u9023\u4E32\u6587\u5B57\u4E2D\u8B58\u5225\u95DC\u9375\u5B57",
  26604. "a": "tf-idf\u95DC\u9375\u5B57\u8B58\u5225\u3002",
  26605. "p": [
  26606. {
  26607. "name": "\u6587\u5B57",
  26608. "detail": "\u4EFB\u610F\u9700\u8981\u5206\u8A5E\u7684\u6587\u5B57\u3002"
  26609. },
  26610. {
  26611. "name": "\u95DC\u9375\u5B57\u500B\u6578",
  26612. "detail": "\u7B97\u704B\u8FD4\u56DE\u7684\u95DC\u9375\u5B57\u500B\u6578\uFF0C\u9ED8\u8A8D20"
  26613. },
  26614. {
  26615. "name": "\u8A9E\u6599\u5EAB",
  26616. "detail": "\u9078\u64C7\u7279\u5B9A\u9818\u57DF\u7684\u8A9E\u6599\u5EAB\uFF0C\u9ED8\u8A8D0[\u901A\u7528]\uFF0C1[\u91D1\u878D]\uFF0C2[\u91AB\u7642]"
  26617. }
  26618. ]
  26619. },
  26620. "DM_TEXT_TEXTRANK": {
  26621. "d": "\u63A1\u7528TextRank\u7B97\u704B\u9032\u884C\u95DC\u9375\u5B57\u9078\u53D6\u3002\u5F9E\u4E00\u9023\u4E32\u6587\u5B57\u4E2D\u8B58\u5225\u95DC\u9375\u5B57",
  26622. "a": "TextRank\u95DC\u9375\u5B57\u8B58\u5225\u3002",
  26623. "p": [
  26624. {
  26625. "name": "\u6587\u5B57",
  26626. "detail": "\u4EFB\u610F\u9700\u8981\u5206\u8A5E\u7684\u6587\u5B57\u3002"
  26627. },
  26628. {
  26629. "name": "\u95DC\u9375\u5B57\u500B\u6578",
  26630. "detail": "\u7B97\u704B\u8FD4\u56DE\u7684\u95DC\u9375\u5B57\u500B\u6578\uFF0C\u9ED8\u8A8D20"
  26631. },
  26632. {
  26633. "name": "\u8A9E\u6599\u5EAB",
  26634. "detail": "\u9078\u64C7\u7279\u5B9A\u9818\u57DF\u7684\u8A9E\u6599\u5EAB\uFF0C\u9ED8\u8A8D0[\u901A\u7528]\uFF0C1[\u91D1\u878D]\uFF0C2[\u91AB\u7642]"
  26635. }
  26636. ]
  26637. },
  26638. "DATA_CN_STOCK_CLOSE": {
  26639. "d": "\u6839\u64DA\u80A1\u7968\u4EE3\u78BC\u548C\u65E5\u671F\uFF0C\u8FD4\u56DEA\u80A1\u5C0D\u61C9\u80A1\u7968\u6536\u76E4\u50F9\u3002",
  26640. "a": "\u8FD4\u56DEA\u80A1\u5C0D\u61C9\u80A1\u7968\u6536\u76E4\u50F9\u3002",
  26641. "p": [
  26642. {
  26643. "name": "\u80A1\u7968\u4EE3\u78BC",
  26644. "detail": "6\u4F4D\u80A1\u7968\u4EE3\u78BC\uFF0C\u5FC5\u586B\u9805\u3002"
  26645. },
  26646. {
  26647. "name": "\u65E5\u671F",
  26648. "detail": "\u80A1\u7968\u7684\u4EA4\u6613\u65E5\uFF0C\u9ED8\u8A8D\u70BA\u6700\u65B0\u4EA4\u6613\u65E5"
  26649. },
  26650. {
  26651. "name": "\u8907\u6B0A\u9664\u6B0A",
  26652. "detail": "\u9078\u64C7\u80A1\u7968\u7684\u9664\u6B0A\u8907\u6B0A\u985E\u578B\uFF0C\u9ED8\u8A8D0[\u524D\u8907\u6B0A]\uFF0C1[\u539F\u59CB\u50F9\u683C]\uFF0C2[\u5F8C\u8907\u6B0A]"
  26653. }
  26654. ]
  26655. },
  26656. "DATA_CN_STOCK_OPEN": {
  26657. "d": "\u6839\u64DA\u80A1\u7968\u4EE3\u78BC\u548C\u65E5\u671F\uFF0C\u8FD4\u56DEA\u80A1\u5C0D\u61C9\u80A1\u7968\u958B\u76E4\u50F9\u3002",
  26658. "a": "\u8FD4\u56DEA\u80A1\u5C0D\u61C9\u80A1\u7968\u958B\u76E4\u50F9\u3002",
  26659. "p": [
  26660. {
  26661. "name": "\u80A1\u7968\u4EE3\u78BC",
  26662. "detail": "6\u4F4D\u80A1\u7968\u4EE3\u78BC\uFF0C\u5FC5\u586B\u9805\u3002"
  26663. },
  26664. {
  26665. "name": "\u65E5\u671F",
  26666. "detail": "\u80A1\u7968\u7684\u4EA4\u6613\u65E5\uFF0C\u9ED8\u8A8D\u70BA\u6700\u65B0\u4EA4\u6613\u65E5"
  26667. },
  26668. {
  26669. "name": "\u8907\u6B0A\u9664\u6B0A",
  26670. "detail": "\u9078\u64C7\u80A1\u7968\u7684\u9664\u6B0A\u8907\u6B0A\u985E\u578B\uFF0C\u9ED8\u8A8D0[\u524D\u8907\u6B0A]\uFF0C1[\u539F\u59CB\u50F9\u683C]\uFF0C2[\u5F8C\u8907\u6B0A]"
  26671. }
  26672. ]
  26673. },
  26674. "DATA_CN_STOCK_MAX": {
  26675. "d": "\u6839\u64DA\u80A1\u7968\u4EE3\u78BC\u548C\u65E5\u671F\uFF0C\u8FD4\u56DEA\u80A1\u5C0D\u61C9\u80A1\u7968\u6700\u9AD8\u50F9\u3002",
  26676. "a": "\u8FD4\u56DEA\u80A1\u5C0D\u61C9\u80A1\u7968\u6700\u9AD8\u50F9\u3002",
  26677. "p": [
  26678. {
  26679. "name": "\u80A1\u7968\u4EE3\u78BC",
  26680. "detail": "6\u4F4D\u80A1\u7968\u4EE3\u78BC\uFF0C\u5FC5\u586B\u9805\u3002"
  26681. },
  26682. {
  26683. "name": "\u65E5\u671F",
  26684. "detail": "\u80A1\u7968\u7684\u4EA4\u6613\u65E5\uFF0C\u9ED8\u8A8D\u70BA\u6700\u65B0\u4EA4\u6613\u65E5"
  26685. },
  26686. {
  26687. "name": "\u8907\u6B0A\u9664\u6B0A",
  26688. "detail": "\u9078\u64C7\u80A1\u7968\u7684\u9664\u6B0A\u8907\u6B0A\u985E\u578B\uFF0C\u9ED8\u8A8D0[\u524D\u8907\u6B0A]\uFF0C1[\u539F\u59CB\u50F9\u683C]\uFF0C2[\u5F8C\u8907\u6B0A]"
  26689. }
  26690. ]
  26691. },
  26692. "DATA_CN_STOCK_MIN": {
  26693. "d": "\u6839\u64DA\u80A1\u7968\u4EE3\u78BC\u548C\u65E5\u671F\uFF0C\u8FD4\u56DEA\u80A1\u5C0D\u61C9\u80A1\u7968\u6700\u4F4E\u50F9\u3002",
  26694. "a": "\u8FD4\u56DEA\u80A1\u5C0D\u61C9\u80A1\u7968\u6700\u4F4E\u50F9\u3002",
  26695. "p": [
  26696. {
  26697. "name": "\u80A1\u7968\u4EE3\u78BC",
  26698. "detail": "6\u4F4D\u80A1\u7968\u4EE3\u78BC\uFF0C\u5FC5\u586B\u9805\u3002"
  26699. },
  26700. {
  26701. "name": "\u65E5\u671F",
  26702. "detail": "\u80A1\u7968\u7684\u4EA4\u6613\u65E5,\u9ED8\u8BA4\u4E3A\u6700\u65B0\u4EA4\u6613\u65E5"
  26703. },
  26704. {
  26705. "name": "\u8907\u6B0A\u9664\u6B0A",
  26706. "detail": "\u9078\u64C7\u80A1\u7968\u7684\u9664\u6B0A\u8907\u6B0A\u985E\u578B\uFF0C\u9ED8\u8A8D0[\u524D\u8907\u6B0A]\uFF0C1[\u539F\u59CB\u50F9\u683C]\uFF0C2[\u5F8C\u8907\u6B0A]"
  26707. }
  26708. ]
  26709. },
  26710. "DATA_CN_STOCK_VOLUMN": {
  26711. "d": "\u6839\u64DA\u80A1\u7968\u4EE3\u78BC\u548C\u65E5\u671F\uFF0C\u8FD4\u56DEA\u80A1\u5C0D\u61C9\u80A1\u7968\u6210\u4EA4\u91CF\u3002",
  26712. "a": "\u8FD4\u56DEA\u80A1\u5C0D\u61C9\u80A1\u7968\u6210\u4EA4\u91CF\u3002",
  26713. "p": [
  26714. {
  26715. "name": "\u80A1\u7968\u4EE3\u78BC",
  26716. "detail": "6\u4F4D\u80A1\u7968\u4EE3\u78BC\uFF0C\u5FC5\u586B\u9805\u3002"
  26717. },
  26718. {
  26719. "name": "\u65E5\u671F",
  26720. "detail": "\u80A1\u7968\u7684\u4EA4\u6613\u65E5\uFF0C\u9ED8\u8A8D\u70BA\u6700\u65B0\u4EA4\u6613\u65E5"
  26721. },
  26722. {
  26723. "name": "\u8907\u6B0A\u9664\u6B0A",
  26724. "detail": "\u9078\u64C7\u80A1\u7968\u7684\u9664\u6B0A\u8907\u6B0A\u985E\u578B\uFF0C\u9ED8\u8A8D0[\u524D\u8907\u6B0A]\uFF0C1[\u539F\u59CB\u50F9\u683C]\uFF0C2[\u5F8C\u8907\u6B0A]"
  26725. }
  26726. ]
  26727. },
  26728. "DATA_CN_STOCK_AMOUNT": {
  26729. "d": "\u6839\u64DA\u80A1\u7968\u4EE3\u78BC\u548C\u65E5\u671F\uFF0C\u8FD4\u56DEA\u80A1\u5C0D\u61C9\u80A1\u7968\u6210\u4EA4\u984D\u3002",
  26730. "a": "\u8FD4\u56DEA\u80A1\u5C0D\u61C9\u80A1\u7968\u6210\u4EA4\u984D\u3002",
  26731. "p": [
  26732. {
  26733. "name": "\u80A1\u7968\u4EE3\u78BC",
  26734. "detail": "6\u4F4D\u80A1\u7968\u4EE3\u78BC\uFF0C\u5FC5\u586B\u9805\u3002"
  26735. },
  26736. {
  26737. "name": "\u65E5\u671F",
  26738. "detail": "\u80A1\u7968\u7684\u4EA4\u6613\u65E5\uFF0C\u9ED8\u8A8D\u70BA\u6700\u65B0\u4EA4\u6613\u65E5"
  26739. },
  26740. {
  26741. "name": "\u8907\u6B0A\u9664\u6B0A",
  26742. "detail": "\u9078\u64C7\u80A1\u7968\u7684\u9664\u6B0A\u8907\u6B0A\u985E\u578B\uFF0C\u9ED8\u8A8D0[\u524D\u8907\u6B0A]\uFF0C1[\u539F\u59CB\u50F9\u683C]\uFF0C2[\u5F8C\u8907\u6B0A]"
  26743. }
  26744. ]
  26745. },
  26746. "ISDATE": {
  26747. "d": "\u9A57\u8B49\u65E5\u671F\u7684\u683C\u5F0F\u662F\u5426\u6B63\u78BA\u3002\u652F\u6301\u591A\u7A2E\u65E5\u671F\u683C\u5F0F",
  26748. "a": "\u9A57\u8B49\u65E5\u671F\u683C\u5F0F\u6B63\u78BA\u6027\u3002",
  26749. "p": [
  26750. {
  26751. "name": "\u65E5\u671F",
  26752. "detail": "\u65E5\u671F\u503C,\u4F8B\u59821990/01/01, 1990\u5E741\u67081\u65E5\u7B49\u3002"
  26753. }
  26754. ]
  26755. },
  26756. "LINESPLINES": {
  26757. "d": "\u751F\u6210\u5D4C\u5165\u5728\u5132\u5B58\u683C\u5167\u7684\u6298\u7DDA\u5716sparklines\uFF0C\u7528\u65BC\u63CF\u8FF0\u6578\u64DA\u7684\u9023\u7E8C\u8D70\u52E2",
  26758. "a": "\u751F\u6210\u5132\u5B58\u683C\u6298\u7DDA\u5716",
  26759. "p": [
  26760. {
  26761. "name": "\u6578\u64DA\u7BC4\u570D",
  26762. "detail": "\u6578\u64DA\u7BC4\u570D\uFF0C\u6578\u503C\u624D\u80FD\u88AB\u6709\u6548\u8A08\u7B97\uFF0C\u4F8B\u5982A1:A20\uFF0C{1,2,3,4,5}\u7B49\u3002"
  26763. },
  26764. {
  26765. "name": "\u7DDA\u689D\u984F\u8272",
  26766. "detail": "\u7DDA\u5716\u7684\u7DDA\u689D\u984F\u8272\uFF0C\u53EF\u4EE5\u662F\u5426\u500B\u7BC4\u570DA1\u3001\u8272\u9336\u7D22\u5F15\u6578\u503C\u6216\u8005\u5177\u9AD4\u984F\u8272\u503C\uFF0C\u8A2D\u5B9A\u70BA0\u6216false\u5247\u4E0D\u986F\u793A\uFF0C\u652F\u6301regx\u3001rgb\u3001rgba\u7B49\u3002\u9ED8\u8A8D#2ec7c9"
  26767. },
  26768. {
  26769. "name": "\u7DDA\u689D\u7C97\u7D30",
  26770. "detail": "\u6298\u7DDA\u5716\u7DDA\u6BB5\u7C97\u7D30\uFF0C\u9ED8\u8A8D\u70BA1px"
  26771. },
  26772. {
  26773. "name": "\u8F14\u52A9\u7DDA",
  26774. "detail": "\u4E00\u689D\u6A6B\u7DDA\uFF0C\u53EF\u4EE5\u662Fmin\u3001max\u3001avg\u3001median\u3001\u7BC4\u570D\u6216\u81EA\u5B9A\u7FA9\u6578\u503C\uFF0C\u9ED8\u8A8D0\u7121"
  26775. },
  26776. {
  26777. "name": "\u8F14\u52A9\u7DDA\u984F\u8272",
  26778. "detail": "\u8F14\u52A9\u7DDA\u7684\u984F\u8272\u8A2D\u5B9A\uFF0C\u540C\u7DDA\u689D\u984F\u8272\u914D\u5BD8\uFF0C\u9ED8\u8A8D#000"
  26779. },
  26780. {
  26781. "name": "\u6700\u5927\u503C\u6A19\u8B58",
  26782. "detail": "\u6A19\u8B58\u7DDA\u5716\u6700\u5927\u503C\uFF0C\u540C\u7DDA\u689D\u984F\u8272\u914D\u5BD8\uFF0C\u9ED8\u8A8D0\u4E0D\u986F\u793A"
  26783. },
  26784. {
  26785. "name": "\u6700\u5C0F\u503C\u6A19\u8B58",
  26786. "detail": "\u6A19\u8B58\u7DDA\u5716\u6700\u5C0F\u503C\uFF0C\u540C\u7DDA\u689D\u984F\u8272\u914D\u5BD8\uFF0C\u9ED8\u8A8D0\u4E0D\u986F\u793A"
  26787. },
  26788. {
  26789. "name": "\u6A19\u8B58\u5927\u5C0F",
  26790. "detail": "\u6700\u5927\u503C\u548C\u6700\u5C0F\u503C\u7684\u6A19\u8B58\u5927\u5C0F\u8A2D\u5B9A\uFF0C\u9ED8\u8A8D\u70BA1.5"
  26791. }
  26792. ]
  26793. },
  26794. "AREASPLINES": {
  26795. "d": "\u751F\u6210\u5D4C\u5165\u5728\u5132\u5B58\u683C\u5167\u7684\u9762\u7A4D\u5716sparklines\uFF0C\u4E00\u822C\u7528\u65BC\u63CF\u8FF0\u6578\u64DA\u7684\u9023\u7E8C\u7D2F\u7A4D\u503C\u8D70\u52E2",
  26796. "a": "\u751F\u6210\u5132\u5B58\u683C\u9762\u7A4D\u5716",
  26797. "p": [
  26798. {
  26799. "name": "\u6578\u64DA\u7BC4\u570D",
  26800. "detail": "\u6578\u64DA\u7BC4\u570D\uFF0C\u6578\u503C\u624D\u80FD\u88AB\u6709\u6548\u8A08\u7B97\uFF0C\u4F8B\u5982A1:A20\uFF0C{1,2,3,4,5}\u7B49\u3002"
  26801. },
  26802. {
  26803. "name": "\u7DDA\u689D\u984F\u8272",
  26804. "detail": "\u7DDA\u5716\u7684\u7DDA\u689D\u984F\u8272\uFF0C\u53EF\u4EE5\u662F\u5426\u500B\u7BC4\u570DA1\u3001\u8272\u9336\u7D22\u5F15\u6578\u503C\u6216\u8005\u5177\u9AD4\u984F\u8272\u503C\uFF0C\u8A2D\u5B9A\u70BA0\u6216false\u5247\u4E0D\u986F\u793A\uFF0C\u652F\u6301regx\u3001rgb\u3001rgba\u7B49\u3002\u9ED8\u8A8D#2ec7c9"
  26805. },
  26806. {
  26807. "name": "\u586B\u5145\u984F\u8272",
  26808. "detail": "\u5F62\u6210\u9762\u7A4D\u5716\uFF0C\u540C\u7DDA\u689D\u984F\u8272\u914D\u5BD8\uFF0C\u9ED8\u8A8D0\u4E0D\u986F\u793A"
  26809. },
  26810. {
  26811. "name": "\u7DDA\u689D\u7C97\u7D30",
  26812. "detail": "\u6298\u7DDA\u5716\u7DDA\u6BB5\u7C97\u7D30\uFF0C\u9ED8\u8A8D\u70BA1px"
  26813. },
  26814. {
  26815. "name": "\u8F14\u52A9\u7DDA",
  26816. "detail": "\u4E00\u689D\u6A6B\u7DDA\uFF0C\u53EF\u4EE5\u662Fmin\u3001max\u3001avg\u3001median\u3001\u7BC4\u570D\u6216\u81EA\u5B9A\u7FA9\u6578\u503C\uFF0C\u9ED8\u8A8D0\u7121"
  26817. },
  26818. {
  26819. "name": "\u8F14\u52A9\u7DDA\u984F\u8272",
  26820. "detail": "\u8F14\u52A9\u7DDA\u7684\u984F\u8272\u8A2D\u5B9A\uFF0C\u540C\u7DDA\u689D\u984F\u8272\u914D\u5BD8\uFF0C\u9ED8\u8A8D#000"
  26821. }
  26822. ]
  26823. },
  26824. "COLUMNSPLINES": {
  26825. "d": "\u751F\u6210\u5D4C\u5165\u5728\u5132\u5B58\u683C\u5167\u7684\u5782\u76F4\u67F1\u72C0\u5716sparklines\uFF0C\u4E00\u822C\u7528\u65BC\u63CF\u8FF0\u96E2\u6563\u6578\u64DA\u4E4B\u9593\u7684\u5927\u5C0F\u60C5\u51B5",
  26826. "a": "\u751F\u6210\u5132\u5B58\u683C\u5782\u76F4\u67F1\u72C0\u5716",
  26827. "p": [
  26828. {
  26829. "name": "\u6578\u64DA\u7BC4\u570D",
  26830. "detail": "\u6578\u64DA\u7BC4\u570D\uFF0C\u6578\u503C\u624D\u80FD\u88AB\u6709\u6548\u8A08\u7B97\uFF0C\u4F8B\u5982A1:A20\uFF0C{1,2,3,4,5}\u7B49\u3002"
  26831. },
  26832. {
  26833. "name": "\u67F1\u689D\u9593\u9694",
  26834. "detail": "\u67F1\u689D\u4E4B\u9593\u7684\u9593\u9694\u8DDD\u96E2\uFF0C\u9ED8\u8A8D\u70BA1"
  26835. },
  26836. {
  26837. "name": "\u67F1\u689D\u984F\u8272",
  26838. "detail": "\u7DDA\u5716\u7684\u7DDA\u689D\u984F\u8272\uFF0C\u53EF\u4EE5\u662F\u5426\u500B\u7BC4\u570DA1\u3001\u8272\u9336\u7D22\u5F15\u6578\u503C\u6216\u8005\u5177\u9AD4\u984F\u8272\u503C\uFF0C\u8A2D\u5B9A\u70BA0\u6216false\u5247\u4E0D\u986F\u793A\uFF0C\u652F\u6301regx\u3001rgb\u3001rgba\u7B49\u3002\u9ED8\u8A8D#fc5c5c"
  26839. },
  26840. {
  26841. "name": "\u8CA0\u5411\u67F1\u689D\u984F\u8272",
  26842. "detail": "\u8CA0\u5411\u67F1\u689D\u984F\u8272\u8A2D\u5B9A\uFF0C\u4EE3\u8868\u8CA0\u503C\u7684\u984F\u8272\uFF0C\u540C\u67F1\u689D\u984F\u8272\u914D\u5BD8\uFF0C\u9ED8\u8A8D#97b552"
  26843. },
  26844. {
  26845. "name": "\u6700\u5927\u503C",
  26846. "detail": "\u67F1\u5716\u6700\u5927\u503C\uFF0C\u7528\u65BC\u898F\u7BC4\u67F1\u5716\u9577\u5EA6\uFF0C\u9ED8\u8A8D\u70BA\u81EA\u52D5\u8A08\u7B97false\u3001auto\u3001null"
  26847. },
  26848. {
  26849. "name": "\u8272\u677F",
  26850. "detail": "\u8ABF\u8272\u677F\u53EF\u4EE5\u55AE\u7368\u8A2D\u5B9A\u6BCF\u500B\u67F1\u689D\u7684\u984F\u8272\uFF0C\u53EF\u8A2D\u5B9A\u591A\u500B\uFF0C\u652F\u6301\u5169\u7A2E\u683C\u5F0F:1\u984F\u8272\u4F8B\u5982#000\uFF0C\u4EE3\u8868\u7B2C\u4E00\u500B\u67F1\u7684\u984F\u8272\u662F\u9ED1\u8272\uFF1B2\u6578\u503C\u7BC4\u570D:\u984F\u8272\uFF0C\u4F8B\u5982-2:#000\u8868\u793A\u6578\u503C\u70BA-2\u7684\u67F1\u70BA\u9ED1\u8272\uFF0C0:5:#000\u8868\u793A\u6578\u503C0-5\u7684\u67F1\u70BA\u9ED1\u8272\uFF0C\u9ED8\u8A8D\u70BA\u7A7A"
  26851. }
  26852. ]
  26853. },
  26854. "STACKCOLUMNSPLINES": {
  26855. "d": "\u751F\u6210\u5D4C\u5165\u5728\u5132\u5B58\u683C\u5167\u7684\u7D2F\u7A4D\u5782\u76F4\u67F1\u72C0\u5716sparklines\uFF0C\u4E00\u822C\u7528\u65BC\u63CF\u8FF0\u96E2\u6563\u6578\u64DA\u591A\u500B\u7DAD\u5EA6\u7684\u6578\u503C\u5927\u5C0F",
  26856. "a": "\u751F\u6210\u5132\u5B58\u683C\u7D2F\u7A4D\u5782\u76F4\u67F1\u72C0\u5716",
  26857. "p": [
  26858. {
  26859. "name": "\u6578\u64DA\u7BC4\u570D",
  26860. "detail": "\u6578\u64DA\u7BC4\u570D\uFF0C\u6578\u503C\u624D\u80FD\u88AB\u6709\u6548\u8A08\u7B97\uFF0C\u4F8B\u5982A1:A20\uFF0C{1,2,3,4,5}\u7B49\u3002"
  26861. },
  26862. {
  26863. "name": "\u6309\u5217\u5806\u7A4D",
  26864. "detail": "\u5982\u679C\u9700\u8981\u6309\u884C\u5806\u7A4D\u5247\u672C\u9805\u8A2D\u70BAfalse\u62160\uFF0C\u9ED8\u8A8D\u70BA\u662F1"
  26865. },
  26866. {
  26867. "name": "\u67F1\u689D\u9593\u9694",
  26868. "detail": "\u67F1\u689D\u4E4B\u9593\u7684\u9593\u9694\u8DDD\u96E2\uFF0C\u9ED8\u8A8D\u70BA1"
  26869. },
  26870. {
  26871. "name": "\u6700\u5927\u503C",
  26872. "detail": "\u7D2F\u7A4D\u67F1\u5716\u6700\u5927\u503C\uFF0C\u7528\u65BC\u898F\u7BC4\u67F1\u5716\u9577\u5EA6\uFF0C\u9ED8\u8A8D\u70BA\u81EA\u52D5\u8A08\u7B97false\u3001auto\u3001null"
  26873. },
  26874. {
  26875. "name": "\u7D2F\u7A4D\u8272\u677F",
  26876. "detail": "\u8ABF\u8272\u677F\u53EF\u4EE5\u55AE\u7368\u8A2D\u5B9A\u6BCF\u500B\u7DAD\u5EA6\u7684\u67F1\u689D\u984F\u8272\uFF0C\u53EF\u8A2D\u5B9A\u70BAA1:A10\u7B49\u7BC4\u570D\uFF0C\u9ED8\u8A8D\u70BA#2ec7c9, #fc5c5c, #5ab1ef, #ffb980..."
  26877. }
  26878. ]
  26879. },
  26880. "BARSPLINES": {
  26881. "d": "\u751F\u6210\u5D4C\u5165\u5728\u5132\u5B58\u683C\u5167\u7684\u6A6B\u5411\u689D\u5F62\u5716sparklines\uFF0C\u4E00\u822C\u7528\u65BC\u63CF\u8FF0\u96E2\u6563\u6578\u64DA\u4E4B\u9593\u7684\u5927\u5C0F\u60C5\u51B5",
  26882. "a": "\u751F\u6210\u5132\u5B58\u683C\u6A6B\u5411\u689D\u5F62\u5716",
  26883. "p": [
  26884. {
  26885. "name": "\u6578\u64DA\u7BC4\u570D",
  26886. "detail": "\u6578\u64DA\u7BC4\u570D,\u6578\u503C\u624D\u80FD\u88AB\u6709\u6548\u8A08\u7B97\uFF0C\u4F8B\u5982A1:A20, {1,2,3,4,5}\u7B49\u3002"
  26887. },
  26888. {
  26889. "name": "\u67F1\u689D\u9593\u9694",
  26890. "detail": "\u67F1\u689D\u4E4B\u9593\u7684\u9593\u9694\u8DDD\u96E2\uFF0C\u9ED8\u8A8D\u70BA1"
  26891. },
  26892. {
  26893. "name": "\u67F1\u689D\u984F\u8272",
  26894. "detail": "\u7DDA\u5716\u7684\u7DDA\u689D\u984F\u8272\uFF0C\u53EF\u4EE5\u662F\u5426\u500B\u7BC4\u570DA1\u3001\u8272\u9336\u7D22\u5F15\u6578\u503C\u6216\u8005\u5177\u9AD4\u984F\u8272\u503C\uFF0C\u8A2D\u5B9A\u70BA0\u6216false\u5247\u4E0D\u986F\u793A\uFF0C\u652F\u6301regx\u3001rgb\u3001rgba\u7B49\u3002\u9ED8\u8A8D#fc5c5c"
  26895. },
  26896. {
  26897. "name": "\u8CA0\u5411\u67F1\u689D\u984F\u8272",
  26898. "detail": "\u8CA0\u5411\u67F1\u689D\u984F\u8272\u8A2D\u5B9A\uFF0C\u4EE3\u8868\u8CA0\u503C\u7684\u984F\u8272\uFF0C\u540C\u67F1\u689D\u984F\u8272\u914D\u5BD8\uFF0C\u9ED8\u8A8D#97b552"
  26899. },
  26900. {
  26901. "name": "\u6700\u5927\u503C",
  26902. "detail": "\u67F1\u5716\u6700\u5927\u503C\uFF0C\u7528\u65BC\u898F\u7BC4\u67F1\u5716\u9577\u5EA6\uFF0C\u9ED8\u8A8D\u70BA\u81EA\u52D5\u8A08\u7B97false\u3001auto\u3001null"
  26903. },
  26904. {
  26905. "name": "\u8272\u677F",
  26906. "detail": "\u8ABF\u8272\u677F\u53EF\u4EE5\u55AE\u7368\u8A2D\u5B9A\u6BCF\u500B\u67F1\u689D\u7684\u984F\u8272\uFF0C\u53EF\u8A2D\u5B9A\u591A\u500B\uFF0C\u652F\u6301\u5169\u7A2E\u683C\u5F0F:1\u984F\u8272\u4F8B\u5982#000\uFF0C\u4EE3\u8868\u7B2C\u4E00\u500B\u67F1\u7684\u984F\u8272\u662F\u9ED1\u8272\uFF1B2\u6578\u503C\u7BC4\u570D:\u984F\u8272\uFF0C\u4F8B\u5982-2:#000\u8868\u793A\u6578\u503C\u70BA-2\u7684\u67F1\u70BA\u9ED1\u8272\uFF0C0:5:#000\u8868\u793A\u6578\u503C0-5\u7684\u67F1\u70BA\u9ED1\u8272\uFF0C\u9ED8\u8A8D\u70BA\u7A7A"
  26907. }
  26908. ]
  26909. },
  26910. "STACKBARSPLINES": {
  26911. "d": "\u751F\u6210\u5D4C\u5165\u5728\u5132\u5B58\u683C\u5167\u7684\u7D2F\u7A4D\u6A6B\u5411\u689D\u5F62\u5716sparklines\uFF0C\u4E00\u822C\u7528\u65BC\u63CF\u8FF0\u96E2\u6563\u6578\u64DA\u591A\u500B\u7DAD\u5EA6\u7684\u6578\u503C\u5927\u5C0F",
  26912. "a": "\u751F\u6210\u5132\u5B58\u683C\u7D2F\u7A4D\u6A6B\u5411\u689D\u5F62\u5716",
  26913. "p": [
  26914. {
  26915. "name": "\u6578\u64DA\u7BC4\u570D",
  26916. "detail": "\u6578\u64DA\u7BC4\u570D,\u6578\u503C\u624D\u80FD\u88AB\u6709\u6548\u8A08\u7B97\uFF0C\u4F8B\u5982A1:A20, {1,2,3,4,5}\u7B49\u3002"
  26917. },
  26918. {
  26919. "name": "\u6309\u5217\u5806\u7A4D",
  26920. "detail": "\u5982\u679C\u9700\u8981\u6309\u884C\u5806\u7A4D\u5247\u672C\u9805\u8A2D\u70BAfalse\u62160\uFF0C\u9ED8\u8A8D\u70BA\u662F1"
  26921. },
  26922. {
  26923. "name": "\u67F1\u689D\u9593\u9694",
  26924. "detail": "\u67F1\u689D\u4E4B\u9593\u7684\u9593\u9694\u8DDD\u96E2\uFF0C\u9ED8\u8A8D\u70BA1"
  26925. },
  26926. {
  26927. "name": "\u6700\u5927\u503C",
  26928. "detail": "\u7D2F\u7A4D\u67F1\u5716\u6700\u5927\u503C\uFF0C\u7528\u65BC\u898F\u7BC4\u67F1\u5716\u9577\u5EA6\uFF0C\u9ED8\u8A8D\u70BA\u81EA\u52D5\u8A08\u7B97false\u3001auto\u3001null"
  26929. },
  26930. {
  26931. "name": "\u7D2F\u7A4D\u8272\u677F",
  26932. "detail": "\u8ABF\u8272\u677F\u53EF\u4EE5\u55AE\u7368\u8A2D\u5B9A\u6BCF\u500B\u7DAD\u5EA6\u7684\u67F1\u689D\u984F\u8272\uFF0C\u53EF\u8A2D\u5B9A\u70BAA1:A10\u7B49\u7BC4\u570D\uFF0C\u9ED8\u8A8D\u70BA#2ec7c9, #fc5c5c, #5ab1ef, #ffb980..."
  26933. }
  26934. ]
  26935. },
  26936. "DISCRETESPLINES": {
  26937. "d": "\u751F\u6210\u5D4C\u5165\u5728\u5132\u5B58\u683C\u5167\u7684\u96E2\u6563\u5716sparklines\uFF0C\u4E00\u822C\u7528\u65BC\u63CF\u8FF0\u96E2\u6563\u6578\u64DA\u8D70\u52E2",
  26938. "a": "\u751F\u6210\u5132\u5B58\u683C\u96E2\u6563\u5716",
  26939. "p": [
  26940. {
  26941. "name": "\u6578\u64DA\u7BC4\u570D",
  26942. "detail": "\u6578\u64DA\u7BC4\u570D,\u6578\u503C\u624D\u80FD\u88AB\u6709\u6548\u8A08\u7B97\uFF0C\u4F8B\u5982A1:A20, {1,2,3,4,5}\u7B49\u3002"
  26943. },
  26944. {
  26945. "name": "\u5206\u5272\u95BE\u503C",
  26946. "detail": "\u96E2\u6563\u5716\u67F1\u5F62\u984F\u8272\u7684\u5340\u5206\uFF0C\u4F8B\u5982:\u8A72\u503C\u70BA0\uFF0C\u5247\u5927\u65BC0\u70BA\u85CD\u8272\uFF0C\u5C0F\u65BC0\u70BA\u7D05\u8272\uFF0C\u9ED8\u8A8D\u70BA0"
  26947. },
  26948. {
  26949. "name": "\u95BE\u503C\u4EE5\u4E0A\u984F\u8272",
  26950. "detail": "\u7DDA\u5716\u7684\u7DDA\u689D\u984F\u8272\uFF0C\u53EF\u4EE5\u662F\u5426\u500B\u7BC4\u570DA1\u3001\u8272\u9336\u7D22\u5F15\u6578\u503C\u6216\u8005\u5177\u9AD4\u984F\u8272\u503C\uFF0C\u8A2D\u5B9A\u70BA0\u6216false\u5247\u4E0D\u986F\u793A\uFF0C\u652F\u6301regx\u3001rgb\u3001rgba\u7B49\u3002\u9ED8\u8A8D#2ec7c9"
  26951. },
  26952. {
  26953. "name": "\u95BE\u503C\u4EE5\u4E0B\u984F\u8272",
  26954. "detail": "\u95BE\u503C\u4EE5\u4E0B\u67F1\u689D\u984F\u8272\u8A2D\u5B9A\uFF0C\u540C\u95BE\u503C\u4EE5\u4E0A\u984F\u8272\uFF0C\u9ED8\u8A8D#fc5c5c"
  26955. }
  26956. ]
  26957. },
  26958. "TRISTATESPLINES": {
  26959. "d": "\u751F\u6210\u5D4C\u5165\u5728\u5132\u5B58\u683C\u5167\u7684\u4E09\u614B\u5716sparklines\uFF0C\u4E00\u822C\u7528\u65BC\u63CF\u8FF0\u4E09\u7A2E\u614B\u52E2\u7684\u8D70\u52E2\u4F8B\u5982\u52DD\u8CA0\u5E73",
  26960. "a": "\u751F\u6210\u5132\u5B58\u683C\u4E09\u614B\u5716",
  26961. "p": [
  26962. {
  26963. "name": "\u6578\u64DA\u7BC4\u570D",
  26964. "detail": "\u6578\u64DA\u7BC4\u570D,\u6578\u503C\u624D\u80FD\u88AB\u6709\u6548\u8A08\u7B97\uFF0C\u4F8B\u5982A1:A20, {1,2,3,4,5}\u7B49\u3002"
  26965. },
  26966. {
  26967. "name": "\u67F1\u689D\u9593\u9694",
  26968. "detail": "\u67F1\u689D\u4E4B\u9593\u7684\u9593\u9694\u8DDD\u96E2\uFF0C\u9ED8\u8A8D\u70BA1"
  26969. },
  26970. {
  26971. "name": "\u67F1\u689D\u984F\u8272",
  26972. "detail": "\u7DDA\u5716\u7684\u7DDA\u689D\u984F\u8272\uFF0C\u53EF\u4EE5\u662F\u5426\u500B\u7BC4\u570DA1\u3001\u8272\u9336\u7D22\u5F15\u6578\u503C\u6216\u8005\u5177\u9AD4\u984F\u8272\u503C\uFF0C\u8A2D\u5B9A\u70BA0\u6216false\u5247\u4E0D\u986F\u793A\uFF0C\u652F\u6301regx\u3001rgb\u3001rgba\u7B49\u3002\u9ED8\u8A8D#fc5c5c"
  26973. },
  26974. {
  26975. "name": "\u8D1F\u5411\u67F1\u689D\u984F\u8272",
  26976. "detail": "\u8CA0\u5411\u67F1\u689D\u984F\u8272\u8A2D\u5B9A\uFF0C\u4EE3\u8868\u8CA0\u503C\u7684\u984F\u8272\uFF0C\u540C\u67F1\u689D\u984F\u8272\u914D\u5BD8\uFF0C\u9ED8\u8A8D#97b552"
  26977. },
  26978. {
  26979. "name": "\u96F6\u503C\u67F1\u689D\u984F\u8272",
  26980. "detail": "\u96F6\u503C\u67F1\u689D\u984F\u8272\u8A2D\u5B9A\uFF0C\u4EE3\u88680\u503C\u984F\u8272\uFF0C\u540C\u67F1\u689D\u984F\u8272\u914D\u5BD8\uFF0C\u9ED8\u8A8D#999"
  26981. },
  26982. {
  26983. "name": "\u8272\u677F",
  26984. "detail": "\u8ABF\u8272\u677F\u53EF\u4EE5\u55AE\u7368\u8A2D\u5B9A\u6BCF\u500B\u67F1\u689D\u7684\u984F\u8272\uFF0C\u53EF\u8A2D\u5B9A\u591A\u500B\uFF0C\u652F\u6301\u5169\u7A2E\u683C\u5F0F:1\u984F\u8272\u4F8B\u5982#000\uFF0C\u4EE3\u8868\u7B2C\u4E00\u500B\u67F1\u7684\u984F\u8272\u662F\u9ED1\u8272\uFF1B2\u6578\u503C\u7BC4\u570D:\u984F\u8272\uFF0C\u4F8B\u5982-2:#000\u8868\u793A\u6578\u503C\u70BA-2\u7684\u67F1\u70BA\u9ED1\u8272\uFF0C0-5:#000\u8868\u793A\u6578\u503C0-5\u7684\u67F1\u70BA\u9ED1\u8272\uFF0C\u9ED8\u8A8D\u70BA\u7A7A"
  26985. }
  26986. ]
  26987. },
  26988. "PIESPLINES": {
  26989. "d": "\u751F\u6210\u5D4C\u5165\u5728\u5132\u5B58\u683C\u5167\u7684\u9905\u5716sparklines\uFF0C\u4E00\u822C\u7528\u65BC\u63CF\u8FF0\u6578\u64DA\u5360\u6BD4",
  26990. "a": "\u751F\u6210\u5132\u5B58\u683C\u9905\u5716",
  26991. "p": [
  26992. {
  26993. "name": "\u6578\u64DA\u7BC4\u570D",
  26994. "detail": "\u6578\u64DA\u7BC4\u570D,\u6578\u503C\u624D\u80FD\u88AB\u6709\u6548\u8A08\u7B97\uFF0C\u4F8B\u5982A1:A20, {1,2,3,4,5}\u7B49\u3002"
  26995. },
  26996. {
  26997. "name": "\u65CB\u8F49\u89D2\u5EA6",
  26998. "detail": "\u9905\u5716\u7684\u65CB\u8F49\u89D2\u5EA6\uFF0C\u9ED8\u8A8D\u70BA0"
  26999. },
  27000. {
  27001. "name": "\u9905\u5716\u908A\u6846",
  27002. "detail": "\u9905\u5716\u908A\u6846\u5927\u5C0F\uFF0C\u9ED8\u8A8D\u70BA\u71210"
  27003. },
  27004. {
  27005. "name": "\u908A\u6846\u984F\u8272",
  27006. "detail": "\u9905\u5716\u908A\u6846\u984F\u8272\uFF0C\u9ED8\u8A8D\u70BA#000"
  27007. },
  27008. {
  27009. "name": "\u9905\u5716\u8272\u677F",
  27010. "detail": "\u8ABF\u8272\u677F\u53EF\u4EE5\u8A2D\u5B9A\u5207\u7247\u7684\u984F\u8272\uFF0C\u53EF\u8A2D\u5B9A\u70BAA1:A10\u7B49\u7BC4\u570D\uFF0C\u9ED8\u8A8D\u70BA#2ec7c9, #fc5c5c, #5ab1ef, #ffb980..."
  27011. }
  27012. ]
  27013. },
  27014. "BOXSPLINES": {
  27015. "d": "\u751F\u6210\u5D4C\u5165\u5728\u5132\u5B58\u683C\u5167\u7684\u7BB1\u7DDA\u5716sparklines\uFF0C\u4E00\u822C\u7528\u65BC\u63CF\u8FF0\u6578\u64DA\u96C6\u7684\u7D71\u8A08\u5206\u4F48",
  27016. "a": "\u751F\u6210\u5132\u5B58\u683C\u7BB1\u7DDA\u5716",
  27017. "p": [
  27018. {
  27019. "name": "\u6578\u64DA\u7BC4\u570D",
  27020. "detail": "\u6578\u64DA\u7BC4\u570D,\u6578\u503C\u624D\u80FD\u88AB\u6709\u6548\u8A08\u7B97\uFF0C\u4F8B\u5982A1:A20, {1,2,3,4,5}\u7B49\u3002"
  27021. },
  27022. {
  27023. "name": "\u96E2\u7FA4\u9EDE\u6BD4\u4F8B",
  27024. "detail": "\u96E2\u7FA4\u9EDE\u7684\u95BE\u503C\u7BC4\u570D\uFF0C\u5982\u679C\u70BA0\u6216false\u5247\u4E0D\u986F\u793A\uFF0C\u9ED8\u8A8D\u70BA1.5\u500D"
  27025. },
  27026. {
  27027. "name": "\u76EE\u6A19\u9EDE\u503C",
  27028. "detail": "\u7BB1\u7DDA\u5716\u4E0A\u7684\u76EE\u6A19\u503C\u8A2D\u5B9A\uFF0C\u9ED8\u8A8D\u70BAfalse\u4E0D\u986F\u793A"
  27029. },
  27030. {
  27031. "name": "\u6578\u64DA\u9EDE\u5927\u5C0F",
  27032. "detail": "\u76EE\u6A19\u9EDE\u548C\u96E2\u7FA4\u9EDE\u7684\u534A\u5F91\u5927\u5C0F\u8A2D\u5B9A\uFF0C\u9ED8\u8A8D\u70BA1.5"
  27033. }
  27034. ]
  27035. },
  27036. "BULLETSPLINES": {
  27037. "d": "\u751F\u6210\u5D4C\u5165\u5728\u5132\u5B58\u683C\u5167\u7684\u5B50\u5F48\u5716sparklines\uFF0C\u4E00\u822C\u7528\u65BC\u63CF\u8FF0\u4EFB\u52D9\u9054\u6210\u7387",
  27038. "a": "\u751F\u6210\u5132\u5B58\u683C\u5B50\u5F48\u5716",
  27039. "p": [
  27040. {
  27041. "name": "\u76EE\u6A19",
  27042. "detail": "\u9054\u6210\u7684\u76EE\u6A19\u503C\uFF0C\u6578\u503C\u624D\u80FD\u88AB\u6709\u6548\u8A08\u7B97\uFF0C\u4F8B\u5982A1\uFF0C100\u7B49\u3002"
  27043. },
  27044. {
  27045. "name": "\u5BE6\u969B\u5B8C\u6210",
  27046. "detail": "\u73FE\u6642\u5B8C\u6210\u503C\uFF0C\u6578\u503C\u624D\u80FD\u88AB\u6709\u6548\u8A08\u7B97\uFF0C\u4F8B\u5982A1\uFF0C100\u7B49\u3002"
  27047. },
  27048. {
  27049. "name": "\u5C0D\u6BD4\u503C",
  27050. "detail": "\u5C0D\u6BD4\u503C\uFF0C\u4F8B\u5982\u8D85\u984D\u3001\u6700\u4F4E\u3001\u7372\u734E\u5E95\u7DDA\u7B49\uFF0C\u6578\u503C\u624D\u80FD\u88AB\u6709\u6548\u8A08\u7B97\uFF0C\u4F8B\u5982A1\uFF0C100\u7B49\u3002\u53EF\u4EE5\u8A2D\u5B9A\u6700\u591A9\u500B\u5C0D\u6BD4\u503C"
  27051. }
  27052. ]
  27053. },
  27054. "COMPOSESPLINES": {
  27055. "d": "\u652F\u6301\u591A\u500B\u985E\u578B\u7684\u5716\u756B\u5728\u540C\u4E00\u500B\u5132\u5B58\u683C\uFF0C\u6BCF\u500B\u53C3\u6578\u4EE3\u8868\u4E00\u500Bsparklines\u5716",
  27056. "a": "\u7D44\u5408sparklines\u5716\u5230\u4E00\u500B\u5132\u5B58\u683C",
  27057. "p": [
  27058. {
  27059. "name": "\u5716\u8A2D\u5B9A",
  27060. "detail": "sparklines\u5716\u8A2D\u5B9A\uFF0C\u4F8B\u5982A1:A20\uFF0C\u4E00\u500B\u5B8C\u6210\u7684\u9905\u5716\u3001\u7DDA\u5716\u8A2D\u5B9A\u7B49\u3002"
  27061. }
  27062. ]
  27063. },
  27064. "SORT": {
  27065. "d": "\u8FD4\u56DE\u6578\u7D44\u4E2D\u5143\u7D20\u7684\u6392\u5E8F\u6578\u7D44\u3002\u8FD4\u56DE\u7684\u6578\u7D44\u8207\u63D0\u4F9B\u7684\u6578\u7D44\u53C3\u6578\u5F62\u72C0\u76F8\u540C\u3002",
  27066. "a": "\u8FD4\u56DE\u6578\u7D44\u4E2D\u5143\u7D20\u7684\u6392\u5E8F\u6578\u7D44\u3002\u8FD4\u56DE\u7684\u6578\u7D44\u8207\u63D0\u4F9B\u7684\u6578\u7D44\u53C3\u6578\u5F62\u72C0\u76F8\u540C\u3002",
  27067. "p": [
  27068. {
  27069. "name": "array",
  27070. "detail": "\u8981\u6392\u5E8F\u7684\u7BC4\u570D\u6216\u6578\u7D44\u3002"
  27071. },
  27072. {
  27073. "name": "sort_index",
  27074. "detail": "[\u53EF\u9078] - \u8868\u793A\u8981\u6392\u5E8F\u7684\u884C\u6216\u5217\u7684\u6578\u4F4D\u3002\uFF08\u9ED8\u8A8Drow1/col1\uFF09"
  27075. },
  27076. {
  27077. "name": "sort_order",
  27078. "detail": "[\u53EF\u9078] - \u8868\u793A\u6240\u9700\u6392\u5E8F\u9806\u5E8F\u7684\u6578\u4F4D\uFF1B1\u8868\u793A\u6607\u51AA\uFF08\u9ED8\u8A8D\uFF09\uFF0C-1\u8868\u793A\u964D\u5E8F\u3002"
  27079. },
  27080. {
  27081. "name": "by_col",
  27082. "detail": "[\u53EF\u9078] - \u8868\u793A\u6240\u9700\u6392\u5E8F\u65B9\u5411\u7684\u908F\u8F2F\u503C\uFF1B\u6309\u884C\u6392\u5E8F\u70BAFALSE\uFF08\uFF09\uFF08\u9ED8\u8A8D\uFF09\uFF0C\u6309\u5217\u6392\u5E8F\u70BATRUE\uFF08\uFF09\u3002"
  27083. }
  27084. ]
  27085. },
  27086. "FILTER": {
  27087. "d": "\u57FA\u65BC\u4E00\u500B\u5E03\u6797\uFF08\u771F/\u5047\uFF09\u6578\u7D44\u904E\u6FFE\u4E00\u500B\u6578\u7D44\u3002",
  27088. "a": "\u57FA\u65BC\u4E00\u500B\u5E03\u6797\uFF08\u771F/\u5047\uFF09\u6578\u7D44\u904E\u6FFE\u4E00\u500B\u6578\u7D44\u3002",
  27089. "p": [
  27090. {
  27091. "name": "array",
  27092. "detail": "\u8981\u7BE9\u9078\u7684\u6578\u7D44\u6216\u7BC4\u570D\u3002"
  27093. },
  27094. {
  27095. "name": "include",
  27096. "detail": "\u5E03\u6797\u6578\u7D44\uFF0C\u5176\u9AD8\u5EA6\u6216\u5BEC\u5EA6\u8207\u6578\u7D44\u76F8\u540C"
  27097. },
  27098. {
  27099. "name": "if_empty",
  27100. "detail": "[\u53EF\u9078] - \u5982\u679C\u5305\u542B\u6578\u7D44\u4E2D\u7684\u6240\u6709\u503C\u90FD\u70BA\u7A7A\uFF08filter\u4E0D\u8FD4\u56DE\u4EFB\u4F55\u503C\uFF09\uFF0C\u5247\u8FD4\u56DE\u7684\u503C\u3002"
  27101. }
  27102. ]
  27103. },
  27104. "UNIQUE": {
  27105. "d": "\u8FD4\u56DE\u5217\u8868\u6216\u5340\u57DF\u4E2D\u7684\u552F\u4E00\u503C\u7684\u6E05\u55AE\u3002",
  27106. "a": "\u8FD4\u56DE\u5217\u8868\u6216\u5340\u57DF\u4E2D\u7684\u552F\u4E00\u503C\u7684\u6E05\u55AE\u3002",
  27107. "p": [
  27108. {
  27109. "name": "array",
  27110. "detail": "\u5F9E\u5176\u8FD4\u56DE\u552F\u4E00\u503C\u7684\u6578\u7D44\u6216\u5340\u57DF\u3002"
  27111. },
  27112. {
  27113. "name": "by_col",
  27114. "detail": "[\u53EF\u9078] - \u908F\u8F2F\u503C\uFF0C\u8A13\u793A\u5982\u4F55\u6BD4\u8F03\uFF1B\u6309\u884C= FALSE\uFF08\uFF09\u6216\u7701\u7565\uFF1B\u6309\u5217= TRUE\uFF08\uFF09\u3002"
  27115. },
  27116. {
  27117. "name": "occurs_once",
  27118. "detail": "[\u53EF\u9078] - \u908F\u8F2F\u503C\uFF0C\u50C5\u8FD4\u56DE\u552F\u4E00\u503C\u4E2D\u51FA\u73FE\u4E00\u6B21= TRUE\uFF08\uFF09\uFF1B\u5305\u62EC\u6240\u6709\u552F\u4E00\u503C= FALSE\uFF08\uFF09\u6216\u7701\u7565\u3002"
  27119. }
  27120. ]
  27121. },
  27122. "RANDARRAY": {
  27123. "d": "\u8FD4\u56DE0\u52301\u4E4B\u9593\u7684\u96A8\u6A5F\u6578\u4F4D\u6578\u7D44\u3002",
  27124. "a": "\u8FD4\u56DE0\u52301\u4E4B\u9593\u7684\u96A8\u6A5F\u6578\u4F4D\u6578\u7D44",
  27125. "p": [
  27126. {
  27127. "name": "rows",
  27128. "detail": "[\u53EF\u9078] - \u8981\u8FD4\u56DE\u7684\u884C\u6578\u3002"
  27129. },
  27130. {
  27131. "name": "cols",
  27132. "detail": "[\u53EF\u9078] - \u8981\u8FD4\u56DE\u7684\u5217\u6578\u3002"
  27133. }
  27134. ]
  27135. },
  27136. "SEQUENCE": {
  27137. "d": "\u751F\u6210\u6578\u4F4D\u5E8F\u5217\u7684\u6E05\u55AE\u3002",
  27138. "a": "\u751F\u6210\u6578\u4F4D\u5E8F\u5217\u7684\u6E05\u55AE\u3002",
  27139. "p": [
  27140. {
  27141. "name": "rows",
  27142. "detail": "\u8981\u8FD4\u56DE\u7684\u884C\u6578\u3002"
  27143. },
  27144. {
  27145. "name": "cols",
  27146. "detail": "[\u53EF\u9078] - \u8981\u8FD4\u56DE\u7684\u5217\u6578\u3002"
  27147. },
  27148. {
  27149. "name": "start",
  27150. "detail": "[\u53EF\u9078] - \u5E8F\u5217\u4E2D\u7684\u7B2C\u4E00\u500B\u6578\u4F4D\u3002"
  27151. },
  27152. {
  27153. "name": "step",
  27154. "detail": "[\u53EF\u9078] -\u5E8F\u5217\u4E2D\u6BCF\u500B\u5E8F\u5217\u503C\u7684\u589E\u91CF\u3002"
  27155. }
  27156. ]
  27157. },
  27158. "EVALUATE": {
  27159. "d": "\u5C0D\u4EE5\u6587\u5B57\u8868\u793A\u7684\u516C\u5F0F\u6216\u8005\u8868\u9054\u5F0F\u6C42\u503C\uFF0C\u4E26\u8FD4\u56DE\u7D50\u679C\u3002",
  27160. "a": "\u6839\u64DA\u6587\u5B57\u516C\u5F0F\u6216\u8005\u8868\u9054\u5F0F\u6C42\u503C\u3002",
  27161. "p": [
  27162. {
  27163. "name": "\u516C\u5F0F",
  27164. "detail": "\u516C\u5F0F\u6216\u8868\u9054\u5F0F"
  27165. }
  27166. ]
  27167. },
  27168. "REMOTE": {
  27169. "d": "Calls a function on a remote server",
  27170. "a": "Calls a function on a remote back end server/API.",
  27171. "p": [
  27172. {
  27173. "name": "remote_expression",
  27174. "detail": "Formula"
  27175. }
  27176. ]
  27177. }
  27178. },
  27179. toolbar: {
  27180. undo: "\u64A4\u92B7",
  27181. redo: "\u91CD\u505A",
  27182. paintFormat: "\u683C\u5F0F\u5237",
  27183. currencyFormat: "\u8CA8\u5E63\u683C\u5F0F",
  27184. percentageFormat: "\u767E\u5206\u6BD4\u683C\u5F0F",
  27185. numberDecrease: "\u51CF\u5C11\u5C0F\u6578\u4F4D\u6578",
  27186. numberIncrease: "\u65B0\u589E\u5C0F\u6578\u4F4D\u6578",
  27187. moreFormats: "\u66F4\u591A\u683C\u5F0F",
  27188. font: "\u5B57\u9AD4",
  27189. fontSize: "\u5B57\u578B\u5927\u5C0F",
  27190. bold: "\u7C97\u9AD4\uFF08Ctrl+B\uFF09",
  27191. italic: "\u659C\u9AD4\uFF08Ctrl+I\uFF09",
  27192. strikethrough: "\u5220\u9664\u7DDA\uFF08Alt+Shift+5\uFF09",
  27193. underline: "\u5E95\u7DDA",
  27194. textColor: "\u6587\u5B57\u984F\u8272",
  27195. chooseColor: "\u984F\u8272\u9078\u64C7",
  27196. resetColor: "\u91CD\u7F6E\u984F\u8272",
  27197. customColor: "\u81EA\u5B9A\u7FA9",
  27198. alternatingColors: "\u4EA4\u66FF\u984F\u8272",
  27199. confirmColor: "\u78BA\u5B9A\u984F\u8272",
  27200. cancelColor: "\u53D6\u6D88",
  27201. collapse: "\u6536\u8D77",
  27202. fillColor: "\u5132\u5B58\u683C\u984F\u8272",
  27203. border: "\u908A\u6846",
  27204. borderStyle: "\u908A\u6846\u985E\u578B",
  27205. mergeCell: "\u5408\u4F75\u5132\u5B58\u683C",
  27206. chooseMergeType: "\u9078\u64C7\u5408\u4F75\u985E\u578B",
  27207. horizontalAlign: "\u6C34\u51C6\u5C0D\u9F4A",
  27208. verticalAlign: "\u5782\u76F4\u5C0D\u9F4A",
  27209. alignment: "\u5C0D\u9F4A\u7BA1\u9053",
  27210. textWrap: "\u6587\u5B57\u63DB\u884C",
  27211. textWrapMode: "\u63DB\u884C\u7BA1\u9053",
  27212. textRotate: "\u6587\u5B57\u65CB\u8F49",
  27213. textRotateMode: "\u65CB\u8F49\u7BA1\u9053",
  27214. freezeTopRow: "\u51CD\u7D50\u7B2C\u4E00\u884C",
  27215. sortAndFilter: "\u6392\u5E8F\u548C\u7BE9\u9078",
  27216. findAndReplace: "\u67E5\u627E\u66FF\u63DB",
  27217. sum: "\u6C42\u548C",
  27218. autoSum: "\u81EA\u52D5\u6C42\u548C",
  27219. moreFunction: "\u66F4\u591A\u51FD\u6578",
  27220. conditionalFormat: "\u689D\u4EF6\u683C\u5F0F",
  27221. postil: "\u6279\u8A3B",
  27222. pivotTable: "\u6578\u64DA\u900F\u8996\u9336",
  27223. chart: "\u5716\u8868",
  27224. screenshot: "\u622A\u5716",
  27225. splitColumn: "\u5206\u5217",
  27226. insertImage: "\u63D2\u5165\u5716\u7247",
  27227. insertLink: "\u63D2\u5165\u9023\u7D50",
  27228. dataVerification: "\u6578\u64DA\u9A57\u8B49",
  27229. protection: "\u4FDD\u8B77\u5DE5\u4F5C\u8868\u5167\u5BB9",
  27230. clearText: "\u6E05\u9664\u984F\u8272\u9078\u64C7",
  27231. noColorSelectedText: "\u6C92\u6709\u984F\u8272\u88AB\u9078\u64C7",
  27232. toolMore: "\u66F4\u591A",
  27233. toolLess: "\u5C11\u65BC",
  27234. toolClose: "\u6536\u8D77",
  27235. toolMoreTip: "\u66F4\u591A\u529F\u80FD",
  27236. moreOptions: "\u66F4\u591A\u9078\u9805",
  27237. cellFormat: "\u8A2D\u5B9A\u5132\u5B58\u683C\u683C\u5F0F",
  27238. print: "\u5217\u5370"
  27239. },
  27240. alternatingColors: {
  27241. applyRange: "\u61C9\u7528\u7BC4\u570D",
  27242. selectRange: "\u9078\u64C7\u61C9\u7528\u7BC4\u570D",
  27243. header: "\u9801\u7709",
  27244. footer: "\u9801\u8173",
  27245. errorInfo: "\u4E0D\u80FD\u5C0D\u591A\u91CD\u9078\u64C7\u5340\u57DF\u57F7\u884C\u6B64\u64CD\u4F5C,\u8ACB\u9078\u64C7\u55AE\u500B\u5340\u57DF,\u7136\u5F8C\u518D\u8A66",
  27246. textTitle: "\u683C\u5F0F\u6A23\u5F0F",
  27247. custom: "\u81EA\u5B9A\u7FA9",
  27248. close: "\u95DC\u9589",
  27249. selectionTextColor: "\u9078\u64C7\u6587\u5B57\u984F\u8272",
  27250. selectionCellColor: "\u9078\u64C7\u5132\u5B58\u683C\u984F\u8272",
  27251. removeColor: "\u79FB\u9664\u4EA4\u66FF\u984F\u8272",
  27252. colorShow: "\u984F\u8272",
  27253. currentColor: "\u7576\u524D\u984F\u8272",
  27254. tipSelectRange: "\u8ACB\u9078\u64C7\u4EA4\u66FF\u984F\u8272\u61C9\u7528\u7BC4\u570D",
  27255. errorNoRange: "\u60A8\u9078\u64C7\u7684\u61C9\u7528\u7BC4\u570D\u4E0D\u662F\u9078\u5340\uFF01",
  27256. errorExistColors: "\u60A8\u9078\u64C7\u7684\u61C9\u7528\u7BC4\u570D\u5DF2\u5B58\u5728\u4EA4\u66FF\u984F\u8272\u4E14\u4E0D\u5C6C\u65BC\u4F60\u8981\u7DE8\u8F2F\u7684\u61C9\u7528\u7BC4\u570D\uFF01"
  27257. },
  27258. button: {
  27259. confirm: "\u78BA\u5B9A",
  27260. cancel: "\u53D6\u6D88",
  27261. close: "\u95DC\u9589",
  27262. update: "Update",
  27263. delete: "Delete",
  27264. insert: "\u65B0\u5EFA",
  27265. prevPage: "\u4E0A\u4E00\u9801",
  27266. nextPage: "\u4E0B\u4E00\u9801",
  27267. total: "\u7E3D\u5171\uFF1A"
  27268. },
  27269. paint: {
  27270. start: "\u683C\u5F0F\u5237\u958B\u555F",
  27271. end: "ESC\u9375\u9000\u51FA",
  27272. tipSelectRange: "\u8ACB\u9078\u64C7\u9700\u8981\u8907\u88FD\u683C\u5F0F\u7684\u5340\u57DF",
  27273. tipNotMulti: "\u7121\u6CD5\u5C0D\u591A\u91CD\u9078\u64C7\u5340\u57DF\u57F7\u884C\u6B64\u64CD\u4F5C"
  27274. },
  27275. format: {
  27276. moreCurrency: "\u66F4\u591A\u8CA8\u5E63\u683C\u5F0F",
  27277. moreDateTime: "\u66F4\u591A\u65E5\u671F\u8207\u6642\u9593\u683C\u5F0F",
  27278. moreNumber: "\u66F4\u591A\u6578\u4F4D\u683C\u5F0F",
  27279. titleCurrency: "\u8CA8\u5E63\u683C\u5F0F",
  27280. decimalPlaces: "\u5C0F\u6578\u4F4D\u6578",
  27281. titleDateTime: "\u65E5\u671F\u8207\u6642\u9593\u683C\u5F0F",
  27282. titleNumber: "\u6578\u4F4D\u683C\u5F0F"
  27283. },
  27284. info: {
  27285. detailUpdate: "\u65B0\u6253\u958B",
  27286. detailSave: "\u5DF2\u6062\u5FA9\u672C\u5730\u7DE9\u5B58",
  27287. row: "\u884C",
  27288. column: "\u5217",
  27289. loading: "\u6E32\u67D3\u4E2D\xB7\xB7\xB7",
  27290. copy: "\u526F\u672C",
  27291. return: "\u8FD4\u56DE",
  27292. rename: "\u91CD\u547D\u540D",
  27293. tips: "\u8868\u683C\u91CD\u547D\u540D",
  27294. noName: "\u7121\u6A19\u984C\u7684\u8A66\u7B97\u8868",
  27295. wait: "\u5F85\u66F4\u65B0",
  27296. add: "\u6DFB\u52A0",
  27297. addLast: "\u5728\u5E95\u90E8\u6DFB\u52A0",
  27298. backTop: "\u56DE\u5230\u9802\u90E8",
  27299. pageInfo: "\u5171${total}\u689D,${totalPage}\u9801,\u7576\u524D\u5DF2\u986F\u793A${currentPage}\u9801",
  27300. nextPage: "\u4E0B\u4E00\u9801",
  27301. tipInputNumber: "\u8ACB\u8F38\u5165\u6578\u4F4D",
  27302. tipInputNumberLimit: "\u65B0\u589E\u7BC4\u570D\u9650\u5236\u57281-100",
  27303. tipRowHeightLimit: "\u884C\u9AD8\u5FC5\u9808\u57280 ~ 545\u4E4B\u9593",
  27304. tipColumnWidthLimit: "\u5217\u5BEC\u5FC5\u9808\u57280 ~ 2038\u4E4B\u9593",
  27305. pageInfoFull: "\u5171${total}\u689D,${totalPage}\u9801,\u5DF2\u986F\u793A\u5168\u90E8\u6578\u64DA"
  27306. },
  27307. currencyDetail: {
  27308. RMB: "\u4EBA\u6C11\u5E63",
  27309. USdollar: "\u7F8E\u5143",
  27310. EUR: "\u6B50\u5143",
  27311. GBP: "\u82F1\u938A",
  27312. HK: "\u6E2F\u5143",
  27313. JPY: "\u65E5\u5143",
  27314. AlbanianLek: "\u963F\u723E\u5DF4\u5C3C\u4E9E\u5217\u514B",
  27315. AlgerianDinar: "\u963F\u723E\u53CA\u5229\u4E9E\u7B2C\u7D0D\u723E",
  27316. Afghani: "\u963F\u5BCC\u6C57\u5C3C",
  27317. ArgentinePeso: "\u963F\u6839\u5EF7\u6BD4\u7D22",
  27318. UnitedArabEmiratesDirham: "\u963F\u62C9\u4F2F\u806F\u5408\u5927\u516C\u570B\u8FEA\u62C9\u59C6",
  27319. ArubanFlorin: "\u963F\u9B6F\u5DF4\u5F17\u7F85\u6797",
  27320. OmaniRial: "\u963F\u66FC\u88E1\u4E9E\u723E",
  27321. Azerbaijanimanat: "\u963F\u585E\u62DC\u7586\u99AC\u7D0D\u7279",
  27322. EgyptianPound: "\u57C3\u53CA\u938A",
  27323. EthiopianBirr: "\u8863\u7D22\u6BD4\u4E9E\u6BD4\u723E",
  27324. AngolaKwanza: "\u5B89\u54E5\u62C9\u5BEC\u7D2E",
  27325. AustralianDollar: "\u6FB3\u5927\u5229\u4E9E\u5143",
  27326. Patacas: "\u6FB3\u9580\u5143",
  27327. BarbadosDollar: "\u5DF4\u5DF4\u591A\u65AF\u5143",
  27328. PapuaNewGuineaKina: "\u5DF4\u5E03\u4E9E\u65B0\u5E7E\u5167\u4E9E\u57FA\u90A3",
  27329. BahamianDollar: "\u5DF4\u54C8\u99AC\u5143",
  27330. PakistanRupee: "\u5DF4\u57FA\u65AF\u5766\u76E7\u6BD4",
  27331. ParaguayanGuarani: "\u5DF4\u62C9\u572D\u74DC\u62C9\u5C3C",
  27332. BahrainiDinar: "\u5DF4\u6797\u7B2C\u7D0D\u723E",
  27333. PanamanianBalboa: "\u5DF4\u62FF\u99AC\u5DF4\u6CE2\u4E9E",
  27334. Brazilianreal: "\u5DF4\u897F\u88CF\u4E9E\u4F0A",
  27335. Belarusianruble: "\u767D\u4FC4\u7F85\u65AF\u76E7\u5E03",
  27336. BermudianDollar: "\u767E\u6155\u5927\u5143",
  27337. BulgarianLev: "\u4FDD\u52A0\u5229\u4E9E\u5217\u5F17",
  27338. IcelandKrona: "\u51B0\u5CF6\u514B\u6717",
  27339. BosniaHerzegovinaConvertibleMark: "\u6CE2\u9ED1\u53EF\u514C\u63DB\u99AC\u514B",
  27340. PolishZloty: "\u6CE2\u862D\u8332\u7F85\u63D0",
  27341. Boliviano: "\u73BB\u5229\u7DAD\u4E9E\u8AFE",
  27342. BelizeDollar: "\u8C9D\u88E1\u65AF\u5143",
  27343. BotswanaPula: "\u6CE2\u5284\u90A3\u666E\u62C9",
  27344. NotDannuzhamu: "\u4E0D\u4E39\u52AA\u7D2E\u59C6",
  27345. BurundiFranc: "\u5E03\u9686\u8FEA\u6CD5\u90CE",
  27346. NorthKoreanWon: "\u671D\u9BAE\u5713",
  27347. DanishKrone: "\u4E39\u9EA5\u514B\u6717",
  27348. EastCaribbeanDollar: "\u6771\u52A0\u52D2\u6BD4\u5143",
  27349. DominicaPeso: "\u591A\u660E\u5C3C\u52A0\u6BD4\u7D22",
  27350. RussianRuble: "\u4FC4\u570B\u76E7\u5E03",
  27351. EritreanNakfa: "\u5384\u5229\u5782\u4E9E\u7D0D\u514B\u6CD5",
  27352. CFAfranc: "\u975E\u6D32\u91D1\u878D\u5171\u540C\u9AD4\u6CD5\u90CE",
  27353. PhilippinePeso: "\u83F2\u5F8B\u8CD3\u6BD4\u7D22",
  27354. FijiDollar: "\u6590\u6FDF\u5143",
  27355. CapeVerdeEscudo: "\u4F5B\u5F97\u89D2\u57C3\u65AF\u5EAB\u591A",
  27356. FalklandIslandsPound: "\u798F\u514B\u862D\u7FA4\u5CF6\u938A",
  27357. GambianDalasi: "\u5CA1\u6BD4\u4E9E\u9054\u62C9\u897F",
  27358. Congolesefranc: "\u525B\u679C\u6CD5\u90CE",
  27359. ColombianPeso: "\u54E5\u502B\u6BD4\u4E9E\u6BD4\u7D22",
  27360. CostaRicanColon: "\u54E5\u65AF\u5927\u9ECE\u52A0\u79D1\u6717",
  27361. CubanPeso: "\u53E4\u5DF4\u6BD4\u7D22",
  27362. Cubanconvertiblepeso: "\u53E4\u5DF4\u53EF\u514C\u63DB\u6BD4\u7D22",
  27363. GuyanaDollar: "\u84CB\u4E9E\u90A3\u5143",
  27364. KazakhstanTenge: "\u54C8\u85A9\u514B\u5171\u548C\u570B\u5805\u6208",
  27365. Haitiangourde: "\u6D77\u5730\u53E4\u5FB7",
  27366. won: "\u97D3\u5143",
  27367. NetherlandsAntillesGuilder: "\u8377\u5C6C\u5B89\u7684\u5217\u65AF\u76FE",
  27368. Honduraslempiras: "\u6D2A\u90FD\u62C9\u65AF\u62C9\u502B\u76AE\u62C9",
  27369. DjiboutiFranc: "\u5409\u5E03\u63D0\u6CD5\u90CE",
  27370. KyrgyzstanSom: "\u5409\u723E\u5409\u65AF\u65AF\u5766\u7D22\u59C6",
  27371. GuineaFranc: "\u5E7E\u5167\u4E9E\u6CD5\u90CE",
  27372. CanadianDollar: "\u52A0\u62FF\u5927\u5143",
  27373. GhanaianCedi: "\u52A0\u7D0D\u585E\u5730",
  27374. Cambodianriel: "\u9AD8\u68C9\u745E\u723E",
  27375. CzechKoruna: "\u6377\u514B\u514B\u6717",
  27376. ZimbabweDollar: "\u8F9B\u5DF4\u5A01\u5143",
  27377. QatariRiyal: "\u5361\u5854\u723E\u88E1\u4E9E\u723E",
  27378. CaymanIslandsDollar: "\u958B\u66FC\u7FA4\u5CF6\u5143",
  27379. Comorianfranc: "\u79D1\u6469\u7F85\u6CD5\u90CE",
  27380. KuwaitiDinar: "\u79D1\u5A01\u7279\u7B2C\u7D0D\u723E",
  27381. CroatianKuna: "\u514B\u7F85\u5730\u4E9E\u5EAB\u7D0D",
  27382. KenyanShilling: "\u80AF\u96C5\u5148\u4EE4",
  27383. LesothoLoti: "\u840A\u7D22\u6258\u6D1B\u8482",
  27384. LaoKip: "\u8001\u64BE\u57FA\u666E",
  27385. LebanesePound: "\u9ECE\u5DF4\u5AE9\u938A",
  27386. Lithuanianlitas: "\u7ACB\u9676\u5B9B\u7ACB\u7279",
  27387. LibyanDinar: "\u5229\u6BD4\u4E9E\u7B2C\u7D0D\u723E",
  27388. LiberianDollar: "\u5229\u6BD4\u4E9E\u5143",
  27389. RwandaFranc: "\u76E7\u5B89\u9054\u6CD5\u90CE",
  27390. RomanianLeu: "\u7F85\u99AC\u5C3C\u4E9E\u5217\u4F0A",
  27391. MalagasyAriary: "\u99AC\u62C9\u52A0\u897F\u963F\u88CF\u4E9E\u88CF",
  27392. MaldivianRufiyaa: "\u746A\u5F8B\u5730\u592B\u62C9\u83F2\u4E9E",
  27393. MalawiKwacha: "\u99AC\u62C9\u5A01\u514B\u74E6\u67E5",
  27394. MalaysianRinggit: "\u99AC\u4F86\u897F\u4E9E\u6797\u5409\u7279",
  27395. MacedoniawearingDinar: "\u99AC\u5176\u9813\u6234\u7B2C\u7D0D\u723E",
  27396. MauritiusRupee: "\u6A21\u88E1\u897F\u65AF\u76E7\u6BD4",
  27397. MauritanianOuguiya: "\u8305\u5229\u5854\u5C3C\u4E9E\u70CF\u5409\u4E9E",
  27398. MongolianTugrik: "\u8499\u53E4\u5716\u683C\u88E1\u514B",
  27399. BangladeshiTaka: "\u5B5F\u52A0\u62C9\u5854\u5361",
  27400. PeruvianNuevoSol: "\u79D8\u9B6F\u65B0\u7D22\u723E",
  27401. MyanmarKyat: "\u7DEC\u7538\u958B\u4E9E\u7279",
  27402. MoldovanLeu: "\u83AB\u723E\u9054\u74E6\u5217\u4F0A",
  27403. MoroccanDirham: "\u6469\u6D1B\u54E5\u8FEA\u62C9\u59C6",
  27404. MozambiqueMetical: "\u83AB\u4E09\u6BD4\u514B\u6885\u8482\u5361\u723E",
  27405. MexicanPeso: "\u58A8\u897F\u54E5\u6BD4\u7D22",
  27406. NamibianDollar: "\u7D0D\u7C73\u6BD4\u4E9E\u5143",
  27407. SouthAfricanRand: "\u5357\u975E\u862D\u7279",
  27408. SouthSudanesePound: "\u5357\u8607\u4E39\u938A",
  27409. NicaraguaCordoba: "\u5C3C\u52A0\u62C9\u74DC\u79D1\u591A\u5DF4",
  27410. NepaleseRupee: "\u5C3C\u6CCA\u723E\u76E7\u6BD4",
  27411. NigerianNaira: "\u5948\u53CA\u5229\u4E9E\u5948\u62C9",
  27412. NorwegianKrone: "\u632A\u5A01\u514B\u6717",
  27413. GeorgianLari: "\u55AC\u6CBB\u4E9E\u62C9\u745E",
  27414. RMBOffshore: "\u4EBA\u6C11\u5E63\uFF08\u96E2\u5CB8\uFF09",
  27415. SwedishKrona: "\u745E\u5178\u514B\u6717",
  27416. SwissFranc: "\u745E\u58EB\u6CD5\u90CE",
  27417. SerbianDinar: "\u585E\u723E\u7DAD\u4E9E\u7B2C\u7D0D\u723E",
  27418. SierraLeone: "\u585E\u62C9\u91CC\u6602\u5229\u6602",
  27419. SeychellesRupee: "\u585E\u820C\u8033\u76E7\u6BD4",
  27420. SaudiRiyal: "\u6C99\u7279\u88E1\u4E9E\u723E",
  27421. SaoTomeDobra: "\u8056\u591A\u7F8E\u591A\u5E03\u62C9",
  27422. SaintHelenapound: "\u8056\u8D6B\u502B\u90A3\u7FA4\u5CF6\u78C5",
  27423. SriLankaRupee: "\u65AF\u91CC\u862D\u5361\u76E7\u6BD4",
  27424. SwazilandLilangeni: "\u53F2\u74E6\u6FDF\u862D\u88CF\u862D\u5409\u5C3C",
  27425. SudanesePound: "\u8607\u4E39\u938A",
  27426. Surinamesedollar: "\u8607\u5229\u5357\u5143",
  27427. SolomonIslandsDollar: "\u6240\u7F85\u9580\u7FA4\u5CF6\u5143",
  27428. SomaliShilling: "\u7D22\u99AC\u5229\u4E9E\u5148\u4EE4",
  27429. TajikistanSomoni: "\u5854\u5409\u514B\u5171\u548C\u570B\u7D22\u83AB\u5C3C",
  27430. PacificFranc: "\u592A\u5E73\u6D0B\u6CD5\u90CE",
  27431. ThaiBaht: "\u6CF0\u570B\u9296",
  27432. TanzanianShilling: "\u5766\u5C1A\u5C3C\u4E9E\u5148\u4EE4",
  27433. TonganPaanga: "\u6771\u52A0\u6F58\u52A0",
  27434. TrinidadandTobagoDollar: "\u5343\u88E1\u9054\u6258\u8C9D\u54E5\u5143",
  27435. TunisianDinar: "\u7A81\u5C3C\u65AF\u7B2C\u7D0D\u723E",
  27436. TurkishLira: "\u571F\u8033\u5176\u91CC\u62C9",
  27437. VanuatuVatu: "\u74E6\u52AA\u963F\u5716\u74E6\u5716",
  27438. GuatemalanQuetzal: "\u74DC\u5730\u99AC\u62C9\u683C\u67E5\u723E",
  27439. CommissionBolivar: "\u59D4\u5167\u745E\u62C9\u535A\u5229\u74E6",
  27440. BruneiDollar: "\u6C76\u840A\u5143",
  27441. UgandanShilling: "\u70CF\u5E72\u9054\u5148\u4EE4",
  27442. UkrainianHryvnia: "\u70CF\u514B\u862D\u683C\u88E1\u592B\u5C3C\u4E9E",
  27443. UruguayanPeso: "\u70CF\u62C9\u572D\u6BD4\u7D22",
  27444. Uzbekistansom: "\u70CF\u8332\u5225\u514B\u8607\u59C6",
  27445. WesternSamoaTala: "\u85A9\u6469\u4E9E\u5854\u62C9",
  27446. SingaporeDollar: "\u65B0\u52A0\u5761\u5143",
  27447. NT: "\u65B0\u81FA\u5E63",
  27448. NewZealandDollar: "\u65B0\u897F\u862D\u5143",
  27449. HungarianForint: "\u5308\u7259\u5229\u798F\u6797",
  27450. SyrianPound: "\u6558\u5229\u4E9E\u938A",
  27451. JamaicanDollar: "\u7259\u8CB7\u52A0\u5143",
  27452. ArmenianDram: "\u4E9E\u7F8E\u5C3C\u4E9E\u5FB7\u62C9\u59C6",
  27453. YemeniRial: "\u8449\u9580\u88E1\u4E9E\u723E",
  27454. IraqiDinar: "\u4F0A\u62C9\u514B\u7B2C\u7D0D\u723E",
  27455. IranianRial: "\u4F0A\u6717\u88E1\u4E9E\u723E",
  27456. NewIsraeliShekel: "\u4EE5\u8272\u5217\u65B0\u8B1D\u514B\u723E",
  27457. IndianRupee: "\u5370\u5EA6\u76E7\u6BD4",
  27458. IndonesianRupiah: "\u5370\u5C3C\u76E7\u6BD4",
  27459. JordanianDinar: "\u7D04\u65E6\u7B2C\u7D0D\u723E",
  27460. VND: "\u8D8A\u5357\u76FE",
  27461. ZambianKwacha: "\u5C1A\u6BD4\u4E9E\u514B\u74E6\u67E5",
  27462. GibraltarPound: "\u76F4\u5E03\u7F85\u9640\u938A",
  27463. ChileanPeso: "\u667A\u5229\u6BD4\u7D22",
  27464. CFAFrancBEAC: "\u4E2D\u975E\u91D1\u878D\u5408\u4F5C\u6CD5\u90CE"
  27465. },
  27466. defaultFmt: [
  27467. {"text": "\u81EA\u52D5", "value": "General", "example": ""},
  27468. {"text": "\u7D14\u6587\u5B57", "value": "@", "example": ""},
  27469. {"text": "", "value": "split", "example": ""},
  27470. {"text": "\u6578\u4F4D", "value": "##0.00", "example": "1000.12"},
  27471. {"text": "\u767E\u5206\u6BD4", "value": "#0.00%", "example": "12.21%"},
  27472. {"text": "\u79D1\u5B78\u8A08\u6578", "value": "0.00E+00", "example": "1.01E+5"},
  27473. {"text": "", "value": "split", "example": ""},
  27474. {"text": "\u6703\u8A08", "value": "\xA5(0.00)", "example": "\xA5(1200.09)"},
  27475. {"text": "\u842C\u5143", "value": "w", "example": "1\u4EBF2000\u4E072500"},
  27476. {"text": "\u8CA8\u5E63", "value": "\xA50.00", "example": "\xA51200.09"},
  27477. {"text": "\u842C\u51432\u4F4D\u5C0F\u6578", "value": "w0.00", "example": "2\u4E072500.55"},
  27478. {"text": "", "value": "split", "example": ""},
  27479. {"text": "\u65E5\u671F", "value": "yyyy-MM-dd", "example": "2017-11-29"},
  27480. {"text": "\u6642\u9593", "value": "hh:mm AM/PM", "example": "3:00 PM"},
  27481. {"text": "\u6642\u959324H", "value": "hh:mm", "example": "15:00"},
  27482. {"text": "\u65E5\u671F\u6642\u9593", "value": "yyyy-MM-dd hh:mm AM/PM", "example": "2017-11-29 3:00 PM"},
  27483. {"text": "\u65E5\u671F\u6642\u959324H", "value": "yyyy-MM-dd hh:mm", "example": "2017-11-29 15:00"},
  27484. {"text": "", "value": "split", "example": ""},
  27485. {"text": "\u81EA\u5B9A\u7FA9\u683C\u5F0F", "value": "fmtOtherSelf", "example": "more"}
  27486. ],
  27487. dateFmtList: [
  27488. {
  27489. "name": "1930-08-05",
  27490. "value": "yyyy-MM-dd"
  27491. },
  27492. {
  27493. "name": "1930/8/5",
  27494. "value": "yyyy/MM/dd"
  27495. },
  27496. {
  27497. "name": "1930\u5E748\u67085\u65E5",
  27498. "value": 'yyyy"\u5E74"M"\u6708"d"\u65E5"'
  27499. },
  27500. {
  27501. "name": "08-05",
  27502. "value": "MM-dd"
  27503. },
  27504. {
  27505. "name": "8-5",
  27506. "value": "M-d"
  27507. },
  27508. {
  27509. "name": "8\u67085\u65E5",
  27510. "value": 'M"\u6708"d"\u65E5"'
  27511. },
  27512. {
  27513. "name": "13:30:30",
  27514. "value": "h:mm:ss"
  27515. },
  27516. {
  27517. "name": "13:30",
  27518. "value": "h:mm"
  27519. },
  27520. {
  27521. "name": "\u4E0B\u534801:30",
  27522. "value": "\u4E0A\u5348/\u4E0B\u5348 hh:mm"
  27523. },
  27524. {
  27525. "name": "\u4E0B\u53481:30",
  27526. "value": "\u4E0A\u5348/\u4E0B\u5348 h:mm"
  27527. },
  27528. {
  27529. "name": "\u4E0B\u53481:30:30",
  27530. "value": "\u4E0A\u5348/\u4E0B\u5348 h:mm:ss"
  27531. },
  27532. {
  27533. "name": "08-05 \u4E0B\u534801:30",
  27534. "value": "MM-dd \u4E0A\u5348/\u4E0B\u5348 hh:mm"
  27535. }
  27536. ],
  27537. fontFamily: {
  27538. MicrosoftYaHei: "Microsoft YaHei"
  27539. },
  27540. fontarray: ["Times New Roman", "Arial", "Tahoma", "Verdana", "\u5FAE\u8EDF\u96C5\u9ED1", "\u5B8B\u9AD4", "\u9ED1\u9AD4", "\u6977\u9AD4", "\u4EFF\u5B8B", "\u65B0\u5B8B\u9AD4", "\u83EF\u6587\u65B0\u9B4F", "\u83EF\u6587\u884C\u6977", "\u83EF\u6587\u96B8\u66F8"],
  27541. fontjson: {"times new roman": 0, "arial": 1, "tahoma": 2, "verdana": 3, "\u5FAE\u8EDF\u96C5\u9ED1": 4, "microsoft yahei": 4, "\u5B8B\u9AD4": 5, "simsun": 5, "\u9ED1\u9AD4": 6, "simhei": 6, "\u6977\u9AD4": 7, "kaiti": 7, "\u4EFF\u5B8B": 8, "fangsong": 8, "\u65B0\u5B8B\u9AD4": 9, "nsimsun": 9, "\u83EF\u6587\u65B0\u9B4F": 10, "stxinwei": 10, "\u83EF\u6587\u884C\u6977": 11, "stxingkai": 11, "\u83EF\u6587\u96B8\u66F8": 12, "stliti": 12},
  27542. border: {
  27543. borderTop: "\u4E0A\u6846\u7DDA",
  27544. borderBottom: "\u4E0B\u6846\u7DDA",
  27545. borderLeft: "\u5DE6\u6846\u7DDA",
  27546. borderRight: "\u53F3\u6846\u7DDA",
  27547. borderNone: "\u7121",
  27548. borderAll: "\u6240\u6709",
  27549. borderOutside: "\u5916\u5074",
  27550. borderInside: "\u5167\u5074",
  27551. borderHorizontal: "\u5167\u5074\u6A6B\u7DDA",
  27552. borderVertical: "\u5167\u5074\u5206\u9694\u865F",
  27553. borderColor: "\u908A\u6846\u984F\u8272",
  27554. borderSize: "\u908A\u6846\u7C97\u7D30"
  27555. },
  27556. merge: {
  27557. mergeAll: "\u5168\u90E8\u5408\u4F75",
  27558. mergeV: "\u5782\u76F4\u5408\u4F75",
  27559. mergeH: "\u6C34\u5E73\u5408\u4F75",
  27560. mergeCancel: "\u53D6\u6D88\u5408\u4F75",
  27561. overlappingError: "\u4E0D\u80FD\u5408\u4F75\u91CD\u758A\u5340\u57DF",
  27562. partiallyError: "\u7121\u6CD5\u5C0D\u90E8\u5206\u5408\u4F75\u5132\u5B58\u683C\u57F7\u884C\u6B64\u64CD\u4F5C"
  27563. },
  27564. align: {
  27565. left: "\u5DE6\u5C0D\u9F4A",
  27566. center: "\u4E2D\u9593\u5C0D\u9F4A",
  27567. right: "\u53F3\u5C0D\u9F4A",
  27568. top: "\u9802\u90E8\u5C0D\u9F4A",
  27569. middle: "\u5C45\u4E2D\u5C0D\u9F4A",
  27570. bottom: "\u5E95\u90E8\u5C0D\u9F4A"
  27571. },
  27572. textWrap: {
  27573. "overflow": "\u6EA2\u51FA",
  27574. "wrap": "\u81EA\u52D5\u63DB\u884C",
  27575. "clip": "\u622A\u65B7"
  27576. },
  27577. rotation: {
  27578. "none": "\u7121\u65CB\u8F49",
  27579. "angleup": "\u5411\u4E0A\u50BE\u659C",
  27580. "angledown": "\u5411\u4E0B\u50BE\u659C",
  27581. "vertical": "\u8C4E\u6392\u6587\u5B57",
  27582. "rotationUp": "\u5411\u4E0A90\xB0",
  27583. "rotationDown": "\u5411\u4E0B90\xB0"
  27584. },
  27585. freezen: {
  27586. default: "\u51CD\u7D50\u7B2C\u4E00\u884C",
  27587. freezenRow: "\u51CD\u7D50\u7B2C\u4E00\u884C",
  27588. freezenColumn: "\u51CD\u7D50\u7B2CA\u5217",
  27589. freezenRC: "\u51CD\u7D50\u884C\u5217",
  27590. freezenRowRange: "\u51CD\u7D50\u884C\u5230\u9078\u5340",
  27591. freezenColumnRange: "\u51CD\u7D50\u5217\u5230\u9078\u5340",
  27592. freezenRCRange: "\u51CD\u7D50\u884C\u5217\u5230\u9078\u5340",
  27593. freezenCancel: "\u53D6\u6D88\u51CD\u7D50",
  27594. noSeletionError: "\u6CA1\u6709\u9078\u5340",
  27595. rangeRCOverErrorTitle: "\u51CD\u7D50\u63D0\u9192",
  27596. rangeRCOverError: "\u51CD\u7D50\u7A97\u683C\u8D85\u904E\u53EF\u898B\u7BC4\u570D\uFF0C\u6703\u5C0E\u81F4\u7121\u6CD5\u6B63\u5E38\u64CD\u4F5C\uFF0C\u8ACB\u91CD\u65B0\u8A2D\u5B9A\u51CD\u7D50\u5340\u57DF\u3002"
  27597. },
  27598. sort: {
  27599. "asc": "\u6607\u51AA",
  27600. "desc": "\u964D\u5E8F",
  27601. "custom": "\u81EA\u5B9A\u7FA9\u6392\u5E8F",
  27602. "hasTitle": "\u6578\u64DA\u5177\u6709\u6A19\u984C\u884C",
  27603. "sortBy": "\u6392\u5E8F\u4F9D\u64DA",
  27604. "addOthers": "\u6DFB\u52A0\u5176\u4ED6\u6392\u5E8F\u5217",
  27605. "close": "\u95DC\u9589",
  27606. "confirm": "\u6392\u5E8F",
  27607. "columnOperation": "\u5217",
  27608. "secondaryTitle": "\u6B21\u8981\u6392\u5E8F",
  27609. "sortTitle": "\u6392\u5E8F\u7BC4\u570D",
  27610. "sortRangeTitle": "\u6392\u5E8F\u7BC4\u570D\u5F9E",
  27611. "sortRangeTitleTo": "\u5230",
  27612. "noRangeError": "\u4E0D\u80FD\u5C0D\u591A\u91CD\u9078\u64C7\u5340\u57DF\u57F7\u884C\u6B64\u64CD\u4F5C,\u8ACB\u9078\u64C7\u55AE\u500B\u5340\u57DF,\u7136\u5F8C\u518D\u8A66",
  27613. "mergeError": "\u9078\u5340\u6709\u5408\u4F75\u5132\u5B58\u683C,\u7121\u6CD5\u57F7\u884C\u6B64\u64CD\u4F5C\uFF01",
  27614. "columnSortMergeError": "\u5217\u6392\u5E8F\u6703\u64F4\u5C55\u81F3\u6574\u500B\u8868\u683C\u9078\u5340\uFF0C\u9078\u5340\u6709\u5408\u4E26\u55AE\u5143\u683C\uFF0C\u7121\u6CD5\u57F7\u884C\u6B64\u64CD\u4F5C\uFF0C\u8ACB\u9078\u64C7\u529F\u80FD\u6B04\u6392\u5E8F\u529F\u80FD\uFF01"
  27615. },
  27616. filter: {
  27617. "filter": "\u7BE9\u9078",
  27618. "clearFilter": "\u6E05\u9664\u7BE9\u9078",
  27619. sortByAsc: "\u4EE5A-Z\u6607\u51AA\u6392\u5217",
  27620. sortByDesc: "\u4EE5Z-A\u964D\u5E8F\u6392\u5217",
  27621. filterByColor: "\u6309\u984F\u8272\u7BE9\u9078",
  27622. filterByCondition: "\u6309\u689D\u4EF6\u904E\u6FFE",
  27623. filterByValues: "\u6309\u503C\u904E\u6FFE",
  27624. filiterInputNone: "\u7121",
  27625. filiterInputTip: "\u8F38\u5165\u7BE9\u9078\u503C",
  27626. filiterRangeStart: "\u5F9E",
  27627. filiterRangeStartTip: "\u7BC4\u570D\u958B\u59CB",
  27628. filiterRangeEnd: "\u5230",
  27629. filiterRangeEndTip: "\u7BC4\u570D\u7ED3\u675F",
  27630. filterValueByAllBtn: "\u5168\u9078",
  27631. filterValueByClearBtn: "\u6E05\u9664",
  27632. filterValueByInverseBtn: "\u53CD\u9078",
  27633. filterValueByTip: "\u6309\u7167\u503C\u9032\u884C\u7BE9\u9078",
  27634. filterConform: "\u78BA \u8A8D",
  27635. filterCancel: "\u53D6 \u6D88",
  27636. conditionNone: "\u7121",
  27637. conditionCellIsNull: "\u5132\u5B58\u683C\u70BA\u7A7A",
  27638. conditionCellNotNull: "\u5132\u5B58\u683C\u6709\u6578\u64DA",
  27639. conditionCellTextContain: "\u6587\u5B57\u5305\u542B",
  27640. conditionCellTextNotContain: "\u6587\u5B57\u4E0D\u5305\u542B",
  27641. conditionCellTextStart: "\u6587\u5B57\u958B\u982D\u70BA",
  27642. conditionCellTextEnd: "\u6587\u5B57\u7D50\u5C3E\u70BA",
  27643. conditionCellTextEqual: "\u6587\u5B57\u7B49\u65BC",
  27644. conditionCellDateEqual: "\u65E5\u671F\u7B49\u65BC",
  27645. conditionCellDateBefore: "\u65E5\u671F\u65E9\u65BC",
  27646. conditionCellDateAfter: "\u65E5\u671F\u665A\u65BC",
  27647. conditionCellGreater: "\u5927\u65BC",
  27648. conditionCellGreaterEqual: "\u5927\u65BC\u7B49\u65BC",
  27649. conditionCellLess: "\u5C0F\u65BC",
  27650. conditionCellLessEqual: "\u5C0F\u4E8E\u7B49\u65BC",
  27651. conditionCellEqual: "\u7B49\u65BC",
  27652. conditionCellNotEqual: "\u4E0D\u7B49\u65BC",
  27653. conditionCellBetween: "\u4ECB\u65BC",
  27654. conditionCellNotBetween: "\u4E0D\u5728\u5176\u4E2D",
  27655. filiterMoreDataTip: "\u6578\u64DA\u91CF\u5927\uFF01\u8ACB\u7A0D\u5F8C",
  27656. filiterMonthText: "\u6708",
  27657. filiterYearText: "\u5E74",
  27658. filiterByColorTip: "\u6309\u5132\u5B58\u683C\u984F\u8272\u7BE9\u9078",
  27659. filiterByTextColorTip: "\u6309\u5132\u5B58\u683C\u5B57\u9AD4\u984F\u8272\u7BE9\u9078",
  27660. filterContainerOneColorTip: "\u672C\u5217\u50C5\u5305\u542B\u4E00\u7A2E\u984F\u8272",
  27661. filterDateFormatTip: "\u65E5\u671F\u683C\u5F0F",
  27662. valueBlank: "(\u7A7A\u767D)",
  27663. mergeError: "\u7BE9\u9078\u9078\u5340\u6709\u5408\u4F75\u5132\u5B58\u683C,\u7121\u6CD5\u57F7\u884C\u6B64\u64CD\u4F5C\uFF01"
  27664. },
  27665. rightclick: {
  27666. copy: "\u8907\u88FD",
  27667. copyAs: "\u8907\u88FD\u70BA",
  27668. paste: "\u7C98\u8CBC",
  27669. insert: "\u63D2\u5165",
  27670. delete: "\u5220\u9664",
  27671. deleteCell: "\u5220\u9664\u5132\u5B58\u683C",
  27672. deleteSelected: "\u5220\u9664\u9078\u4E2D",
  27673. hide: "\u96B1\u85CF",
  27674. hideSelected: "\u96B1\u85CF\u9078\u4E2D",
  27675. showHide: "\u986F\u793A\u96B1\u85CF",
  27676. to: "\u5411",
  27677. left: "\u5DE6",
  27678. right: "\u53F3",
  27679. top: "\u4E0A",
  27680. bottom: "\u4E0B",
  27681. moveLeft: "\u5DE6\u79FB",
  27682. moveUp: "\u4E0A\u79FB",
  27683. add: "\u65B0\u589E",
  27684. row: "\u884C",
  27685. column: "\u5217",
  27686. width: "\u5BEC",
  27687. height: "\u9AD8",
  27688. number: "\u6578\u4F4D",
  27689. confirm: "\u78BA\u8A8D",
  27690. orderAZ: "A-Z\u9806\u5E8F\u6392\u5217",
  27691. orderZA: "Z-A\u964D\u5E8F\u6392\u5217",
  27692. clearContent: "\u6E05\u9664\u5167\u5BB9",
  27693. matrix: "\u77E9\u9663\u64CD\u4F5C\u9078\u5340",
  27694. sortSelection: "\u6392\u5E8F\u9078\u5340",
  27695. filterSelection: "\u7BE9\u9078\u9078\u5340",
  27696. chartGeneration: "\u5716\u8868\u751F\u6210",
  27697. firstLineTitle: "\u9996\u884C\u70BA\u6A19\u984C",
  27698. untitled: "\u7121\u6A19\u984C",
  27699. array1: "\u4E00\u7DAD\u6578\u7D44",
  27700. array2: "\u4E8C\u7DAD\u9663\u5217",
  27701. array3: "\u591A\u5143\u6578\u7D44",
  27702. diagonal: "\u5C0D\u89D2\u7DDA",
  27703. antiDiagonal: "\u53CD\u5C0D\u89D2\u7DDA",
  27704. diagonalOffset: "\u5C0D\u89D2\u504F\u79FB",
  27705. offset: "\u504F\u79FB\u91CF",
  27706. boolean: "\u5E03\u6797\u503C",
  27707. flip: "\u7FFB\u8F49",
  27708. upAndDown: "\u4E0A\u4E0B",
  27709. leftAndRight: "\u5DE6\u53F3",
  27710. clockwise: "\u9806\u6642\u91DD",
  27711. counterclockwise: "\u9006\u6642\u91DD",
  27712. transpose: "\u8F49\u7F6E",
  27713. matrixCalculation: "\u77E9\u9663\u8A08\u7B97",
  27714. plus: "\u52A0",
  27715. minus: "\u51CF",
  27716. multiply: "\u4E58",
  27717. divided: "\u9664",
  27718. power: "\u6B21\u65B9",
  27719. root: "\u6B21\u65B9\u6839",
  27720. log: "log",
  27721. delete0: "\u5220\u9664\u5169\u7AEF0\u503C",
  27722. removeDuplicate: "\u5220\u9664\u91CD\u8907\u503C",
  27723. byRow: "\u6309\u884C",
  27724. byCol: "\u6309\u5217",
  27725. generateNewMatrix: "\u751F\u6210\u65B0\u77E9\u9663"
  27726. },
  27727. comment: {
  27728. "insert": "\u65B0\u5EFA\u6279\u8A3B",
  27729. "edit": "\u7DE8\u8F2F\u6279\u8A3B",
  27730. "delete": "\u5220\u9664",
  27731. "showOne": "\u986F\u793A/\u96B1\u85CF\u6279\u8A3B",
  27732. "showAll": "\u986F\u793A/\u96B1\u85CF\u6240\u6709\u6279\u8A3B"
  27733. },
  27734. screenshot: {
  27735. screenshotTipNoSelection: "\u8ACB\u6846\u9078\u9700\u8981\u622A\u5716\u7684\u7BC4\u570D",
  27736. screenshotTipTitle: "\u63D0\u793A\uFF01",
  27737. screenshotTipHasMerge: "\u7121\u6CD5\u5C0D\u5408\u4F75\u5132\u5B58\u683C\u57F7\u884C\u6B64\u64CD\u4F5C",
  27738. screenshotTipHasMulti: "\u7121\u6CD5\u5C0D\u591A\u91CD\u9078\u64C7\u5340\u57DF\u57F7\u884C\u6B64\u64CD\u4F5C",
  27739. screenshotTipSuccess: "\u622A\u53D6\u6210\u529F",
  27740. screenshotImageName: "\u622A\u5716",
  27741. downLoadClose: "\u95DC\u9589",
  27742. downLoadCopy: "\u8907\u88FD\u5230\u526A\u5207\u677F",
  27743. downLoadBtn: "\u4E0B\u8F09",
  27744. browserNotTip: "\u4E0B\u8F09\u529F\u80FDIE\u700F\u89BD\u5668\u4E0D\u652F\u6301\uFF01",
  27745. rightclickTip: "\u8ACB\u5728\u5716\u7247\u4E0A\u53F3\u9375\u9EDE\u64CA'\u8907\u88FD'",
  27746. successTip: "\u5DF2\u6210\u529F\u8907\u88FD\uFF08\u5982\u679C\u7C98\u8CBC\u5931\u6557,\u8ACB\u5728\u5716\u7247\u4E0A\u53F3\u9375\u9EDE\u64CA'\u8907\u88FD\u5716\u7247'\uFF09"
  27747. },
  27748. splitText: {
  27749. splitDelimiters: "\u5206\u5272\u7B26\u865F",
  27750. splitOther: "\u5176\u5B83",
  27751. splitContinueSymbol: "\u9023\u7E8C\u5206\u9694\u7B26\u865F\u8996\u70BA\u55AE\u500B\u8655\u7406",
  27752. splitDataPreview: "\u6578\u64DA\u9810\u89BD",
  27753. splitTextTitle: "\u6587\u5B57\u5206\u5217",
  27754. splitConfirmToExe: "\u6B64\u8655\u5DF2\u6709\u6578\u64DA,\u662F\u5426\u66FF\u63DB\u5B83\uFF1F",
  27755. tipNoMulti: "\u80FD\u5C0D\u591A\u91CD\u9078\u64C7\u5340\u57DF\u57F7\u884C\u6B64\u64CD\u4F5C,\u8ACB\u9078\u64C7\u55AE\u500B\u5340\u57DF,\u7136\u5F8C\u518D\u8A66",
  27756. tipNoMultiColumn: "\u4E00\u6B21\u53EA\u80FD\u8F49\u63DB\u4E00\u5217\u6578\u64DA,\u9078\u5B9A\u5340\u57DF\u53EF\u4EE5\u6709\u591A\u884C,\u4F46\u4E0D\u80FD\u6709\u591A\u5217,\u8ACB\u5728\u9078\u5B9A\u55AE\u5217\u5340\u57DF\u4EE5\u5F8C\u518D\u8A66"
  27757. },
  27758. imageText: {
  27759. imageSetting: "\u5716\u7247\u8A2D\u5B9A",
  27760. close: "\u95DC\u9589",
  27761. conventional: "\u5E38\u898F",
  27762. moveCell1: "\u79FB\u52D5\u4E26\u8ABF\u6574\u5132\u5B58\u683C\u5927\u5C0F",
  27763. moveCell2: "\u79FB\u52D5\u4E26\u4E14\u4E0D\u8ABF\u6574\u5132\u5B58\u683C\u7684\u5927\u5C0F",
  27764. moveCell3: "\u4E0D\u8981\u79FB\u52D5\u5132\u5B58\u683C\u4E26\u8ABF\u6574\u5176\u5927\u5C0F",
  27765. fixedPos: "\u56FA\u5B9A\u4F4D\u7F6E",
  27766. border: "\u908A\u6846",
  27767. width: "\u5BEC\u5EA6",
  27768. radius: "\u534A\u5F91",
  27769. style: "\u6A23\u5F0F",
  27770. solid: "\u5BE6\u7DDA",
  27771. dashed: "\u865B\u7DDA",
  27772. dotted: "\u9EDE\u72C0",
  27773. double: "\u96D9\u7DDA",
  27774. color: "\u984F\u8272"
  27775. },
  27776. punctuation: {
  27777. "tab": "Tab \u9375",
  27778. "semicolon": "\u5206\u865F",
  27779. "comma": "\u9017\u865F",
  27780. "space": "\u7A7A\u683C"
  27781. },
  27782. findAndReplace: {
  27783. find: "\u67E5\u627E",
  27784. replace: "\u66FF\u63DB",
  27785. goto: "\u8F49\u5230",
  27786. location: "\u5B9A\u4F4D\u689D\u4EF6",
  27787. formula: "\u516C\u5F0F",
  27788. date: "\u65E5\u671F",
  27789. number: "\u6578\u4F4D",
  27790. string: "\u5B57\u5143",
  27791. error: "\u932F\u8AA4",
  27792. condition: "\u689D\u4EF6\u683C\u5F0F",
  27793. rowSpan: "\u9593\u9694\u884C",
  27794. columnSpan: "\u9593\u9694\u5217",
  27795. locationExample: "\u5B9A\u4F4D",
  27796. lessTwoRowTip: "\u8ACB\u9078\u64C7\u6700\u5C11\u5169\u884C",
  27797. lessTwoColumnTip: "\u8ACB\u9078\u64C7\u6700\u5C11\u5169\u884C",
  27798. findTextbox: "\u67E5\u627E\u5185\u5BB9",
  27799. replaceTextbox: "\u66FF\u63DB\u5167\u5BB9",
  27800. regexTextbox: "\u898F\u5247\u904B\u7B97\u5F0F\u5339\u914D",
  27801. wholeTextbox: "\u6574\u8A5E\u5339\u914D",
  27802. distinguishTextbox: "\u5340\u5206\u5927\u5C0F\u5BEB\u5339\u914D",
  27803. allReplaceBtn: "\u5168\u90E8\u66FF\u63DB",
  27804. replaceBtn: "\u66FF\u63DB",
  27805. allFindBtn: "\u67E5\u627E\u5168\u90E8",
  27806. findBtn: "\u67E5\u627E\u4E0B\u4E00\u500B",
  27807. noFindTip: "\u6C92\u6709\u67E5\u627E\u5230\u8A72\u5167\u5BB9",
  27808. modeTip: "\u8A72\u6A21\u5F0F\u4E0B\u4E0D\u53EF\u9032\u884C\u6B64\u64CD\u4F5C",
  27809. searchTargetSheet: "\u5DE5\u4F5C\u8868",
  27810. searchTargetCell: "\u5132\u5B58\u683C",
  27811. searchTargetValue: "\u503C",
  27812. searchInputTip: "\u8ACB\u8F38\u5165\u67E5\u627E\u5167\u5BB9",
  27813. noReplceTip: "\u6C92\u6709\u53EF\u66FF\u63DB\u7684\u5167\u5BB9",
  27814. noMatchTip: "\u627E\u4E0D\u5230\u5339\u914D\u9805",
  27815. successTip: "\u5DF2\u7D93\u5E6B\u60A8\u8490\u7D22\u4E26\u9032\u884C\u4E86${xlength}\u8655\u66FF\u63DB",
  27816. locationConstant: "\u5E38\u6578",
  27817. locationFormula: "\u516C\u5F0F",
  27818. locationDate: "\u65E5\u671F",
  27819. locationDigital: "\u6578\u4F4D",
  27820. locationString: "\u5B57\u5143",
  27821. locationBool: "\u908F\u8F2F\u503C",
  27822. locationError: "\u932F\u8AA4",
  27823. locationNull: "\u7A7A\u503C",
  27824. locationCondition: "\u689D\u4EF6\u683C\u5F0F",
  27825. locationRowSpan: "\u9593\u9694\u884C",
  27826. locationColumnSpan: "\u9593\u9694\u5217",
  27827. locationTiplessTwoRow: "\u8ACB\u9078\u64C7\u6700\u5C11\u5169\u884C",
  27828. locationTiplessTwoColumn: "\u8ACB\u9078\u64C7\u6700\u5C11\u5169\u5217",
  27829. locationTipNotFindCell: "\u672A\u627E\u5230\u5132\u5B58\u683C"
  27830. },
  27831. sheetconfig: {
  27832. delete: "\u5220\u9664",
  27833. copy: "\u8907\u88FD",
  27834. rename: "\u91CD\u547D\u540D",
  27835. changeColor: "\u66F4\u6539\u984F\u8272",
  27836. hide: "\u96B1\u85CF",
  27837. unhide: "\u53D6\u6D88\u96B1\u85CF",
  27838. moveLeft: "\u5411\u5DE6\u79FB",
  27839. moveRight: "\u5411\u53F3\u79FB",
  27840. resetColor: "\u91CD\u7F6E\u984F\u8272",
  27841. cancelText: "\u53D6\u6D88",
  27842. chooseText: "\u78BA\u5B9A\u984F\u8272",
  27843. tipNameRepeat: "\u7C64\u9801\u7684\u540D\u7A31\u4E0D\u80FD\u91CD\u8907\uFF01\u8ACB\u91CD\u65B0\u4FEE\u6539",
  27844. noMoreSheet: "\u5DE5\u4F5C\u8584\u5167\u81F3\u5C11\u542B\u6709\u4E00\u5F35\u53EF\u8996\u5DE5\u4F5C\u8868\u3002\u82E5\u9700\u5220\u9664\u9078\u5B9A\u7684\u5DE5\u4F5C\u8868,\u8ACB\u5148\u63D2\u5165\u4E00\u5F35\u65B0\u5DE5\u4F5C\u8868\u6216\u986F\u793A\u4E00\u5F35\u96B1\u85CF\u7684\u5DE5\u4F5C\u8868\u3002\u3002",
  27845. confirmDelete: "\u662F\u5426\u5220\u9664",
  27846. redoDelete: "\u53EF\u4EE5\u901A\u904ECtrl+Z\u64A4\u92B7\u5220\u9664",
  27847. noHide: "\u4E0D\u80FD\u96B1\u85CF,\u81F3\u5C11\u4FDD\u7559\u4E00\u500Bsheet\u6A19\u7C64",
  27848. chartEditNoOpt: "\u5716\u8868\u7DE8\u8F2F\u6A21\u5F0F\u4E0B\u4E0D\u5141\u8A31\u8A72\u64CD\u4F5C\uFF01",
  27849. sheetNameSpecCharError: `\u540D\u7A31\u4E0D\u80FD\u5305\u542B:[ ] : ? * / ' "`,
  27850. sheetNamecannotIsEmptyError: "\u540D\u7A31\u4E0D\u80FD\u70BA\u7A7A"
  27851. },
  27852. conditionformat: {
  27853. conditionformat_greaterThan: "\u689D\u4EF6\u683C\u5F0F\u2014\u2014\u5927\u65BC",
  27854. conditionformat_greaterThan_title: "\u70BA\u5927\u65BC\u4EE5\u4E0B\u503C\u7684\u5132\u5B58\u683C\u8A2D\u5B9A\u683C\u5F0F",
  27855. conditionformat_lessThan: "\u689D\u4EF6\u683C\u5F0F\u2014\u2014\u5C0F\u65BC",
  27856. conditionformat_lessThan_title: "\u70BA\u5C0F\u65BC\u4EE5\u4E0B\u503C\u7684\u5132\u5B58\u683C\u8A2D\u5B9A\u683C\u5F0F",
  27857. conditionformat_betweenness: "\u689D\u4EF6\u683C\u5F0F\u2014\u2014\u4ECB\u65BC",
  27858. conditionformat_betweenness_title: "\u70BA\u4ECB\u65BC\u4EE5\u4E0B\u503C\u7684\u5132\u5B58\u683C\u8A2D\u5B9A\u683C\u5F0F",
  27859. conditionformat_equal: "\u689D\u4EF6\u683C\u5F0F\u2014\u2014\u7B49\u65BC",
  27860. conditionformat_equal_title: "\u70BA\u7B49\u65BC\u4EE5\u4E0B\u503C\u7684\u5132\u5B58\u683C\u8A2D\u5B9A\u683C\u5F0F",
  27861. conditionformat_textContains: "\u689D\u4EF6\u683C\u5F0F\u2014\u2014\u6587\u5B57\u5305\u542B",
  27862. conditionformat_textContains_title: "\u70BA\u5305\u542B\u4EE5\u4E0B\u6587\u5B57\u7684\u5132\u5B58\u683C\u8A2D\u5B9A\u683C\u5F0F",
  27863. conditionformat_occurrenceDate: "\u689D\u4EF6\u683C\u5F0F\u2014\u2014\u767C\u751F\u65E5\u671F",
  27864. conditionformat_occurrenceDate_title: "\u70BA\u5305\u542B\u4EE5\u4E0B\u65E5\u671F\u7684\u5132\u5B58\u683C\u8A2D\u5B9A\u683C\u5F0F",
  27865. conditionformat_duplicateValue: "\u689D\u4EF6\u683C\u5F0F\u2014\u2014\u91CD\u8907\u503C",
  27866. conditionformat_duplicateValue_title: "\u70BA\u5305\u542B\u4EE5\u4E0B\u985E\u578B\u503C\u7684\u5132\u5B58\u683C\u8A2D\u5B9A\u683C\u5F0F",
  27867. conditionformat_top10: "\u689D\u4EF6\u683C\u5F0F\u2014\u2014\u524D10\u9805",
  27868. conditionformat_top10_percent: "\u689D\u4EF6\u683C\u5F0F\u2014\u2014\u524D10%",
  27869. conditionformat_top10_title: "\u70BA\u503C\u6700\u5927\u7684\u90A3\u4E9B\u5132\u5B58\u683C\u8A2D\u5B9A\u683C\u5F0F",
  27870. conditionformat_last10: "\u689D\u4EF6\u683C\u5F0F\u2014\u2014\u6700\u5F8C10\u9805",
  27871. conditionformat_last10_percent: "\u689D\u4EF6\u683C\u5F0F\u2014\u2014\u6700\u5F8C10%",
  27872. conditionformat_last10_title: "\u70BA\u503C\u6700\u5C0F\u7684\u90A3\u4E9B\u5132\u5B58\u683C\u8A2D\u5B9A\u683C\u5F0F",
  27873. conditionformat_AboveAverage: "\u689D\u4EF6\u683C\u5F0F\u2014\u2014\u9AD8\u65BC\u5E73\u5747\u503C",
  27874. conditionformat_AboveAverage_title: "\u70BA\u9AD8\u65BC\u5E73\u5747\u503C\u7684\u5132\u5B58\u683C\u8A2D\u5B9A\u683C\u5F0F",
  27875. conditionformat_SubAverage: "\u689D\u4EF6\u683C\u5F0F\u2014\u2014\u4F4E\u65BC\u5E73\u5747\u503C",
  27876. conditionformat_SubAverage_title: "\u70BA\u4F4E\u65BC\u5E73\u5747\u503C\u7684\u5132\u5B58\u683C\u8A2D\u5B9A\u683C\u5F0F",
  27877. rule: "\u898F\u5247",
  27878. newRule: "\u65B0\u5EFA\u898F\u5247",
  27879. editRule: "\u7DE8\u8F2F\u898F\u5247",
  27880. deleteRule: "\u5220\u9664\u898F\u5247",
  27881. deleteCellRule: "\u6E05\u9664\u6240\u9078\u5132\u5B58\u683C\u7684\u898F\u5247",
  27882. deleteSheetRule: "\u6E05\u9664\u6574\u500B\u5DE5\u4F5C\u8868\u7684\u898F\u5247",
  27883. manageRules: "\u7BA1\u7406\u898F\u5247",
  27884. showRules: "\u986F\u793A\u5176\u683C\u5F0F\u898F\u5247",
  27885. highlightCellRules: "\u7A81\u51FA\u986F\u793A\u5132\u5B58\u683C\u898F\u5247",
  27886. itemSelectionRules: "\u9805\u76EE\u9078\u53D6\u898F\u5247",
  27887. conditionformatManageRules: "\u689D\u4EF6\u683C\u5F0F\u898F\u5247\u7BA1\u7406\u5668",
  27888. format: "\u683C\u5F0F",
  27889. setFormat: "\u8A2D\u5B9A\u683C\u5F0F",
  27890. setAs: "\u8A2D\u5B9A\u70BA",
  27891. setAsByArea: "\u91DD\u5C0D\u9078\u5B9A\u5340\u57DF,\u8A2D\u5B9A\u70BA",
  27892. applyRange: "\u61C9\u7528\u7BC4\u570D",
  27893. selectRange: "\u9EDE\u64CA\u9078\u64C7\u61C9\u7528\u7BC4\u570D",
  27894. selectRange_percent: "\u6240\u9078\u7BC4\u570D\u7684\u767E\u5206\u6BD4",
  27895. selectRange_average: "\u9078\u5B9A\u7BC4\u570D\u7684\u5E73\u5747\u503C",
  27896. selectRange_value: "\u9078\u5B9A\u7BC4\u570D\u4E2D\u7684\u6578\u503C",
  27897. pleaseSelectRange: "\u8ACB\u9078\u64C7\u61C9\u7528\u7BC4\u570D",
  27898. selectDataRange: "\u9EDE\u64CA\u9078\u64C7\u6578\u64DA\u7BC4\u570D",
  27899. selectCell: "\u9078\u64C7\u5132\u5B58\u683C",
  27900. pleaseSelectCell: "\u8ACB\u9078\u64C7\u5132\u5B58\u683C",
  27901. pleaseSelectADate: "\u8ACB\u9078\u64C7\u65E5\u671F",
  27902. pleaseEnterInteger: "\u8ACB\u8F38\u5165\u4E00\u500B\u4ECB\u65BC1\u548C1000\u4E4B\u9593\u7684\u6574\u6578",
  27903. onlySingleCell: "\u53EA\u80FD\u5C0D\u55AE\u500B\u5132\u5B58\u683C\u9032\u884C\u5F15\u7528",
  27904. conditionValueCanOnly: "\u689D\u4EF6\u503C\u53EA\u80FD\u662F\u6578\u4F4D\u6216\u8005\u55AE\u500B\u5132\u5B58\u683C",
  27905. ruleTypeItem1: "\u57FA\u65BC\u5404\u81EA\u503C\u8A2D\u5B9A\u6240\u6709\u5132\u5B58\u683C\u7684\u683C\u5F0F",
  27906. ruleTypeItem2: "\u53EA\u70BA\u5305\u542B\u4EE5\u4E0B\u5167\u5BB9\u7684\u5132\u5B58\u683C\u8A2D\u5B9A\u683C\u5F0F",
  27907. ruleTypeItem2_title: "\u53EA\u70BA\u6EFF\u8DB3\u4EE5\u4E0B\u689D\u4EF6\u7684\u5132\u5B58\u683C",
  27908. ruleTypeItem3: "\u50C5\u5C0D\u6392\u540D\u9760\u524D\u6216\u9760\u5F8C\u7684\u6578\u503C\u8A2D\u5B9A\u683C\u5F0F",
  27909. ruleTypeItem3_title: "\u70BA\u4EE5\u4E0B\u6392\u540D\u5167\u7684\u503C",
  27910. ruleTypeItem4: "\u50C5\u5C0D\u9AD8\u65BC\u6216\u4F4E\u65BC\u5E73\u5747\u503C\u7684\u6578\u503C\u8A2D\u5B9A\u683C\u5F0F",
  27911. ruleTypeItem4_title: "\u70BA\u6EFF\u8DB3\u4EE5\u4E0B\u689D\u4EF6\u7684\u503C",
  27912. ruleTypeItem5: "\u50C5\u5C0D\u552F\u4E00\u503C\u6216\u91CD\u8907\u503C\u8A2D\u5B9A\u683C\u5F0F",
  27913. ruleTypeItem6: "\u4F7F\u7528\u516C\u5F0F\u78BA\u5B9A\u8981\u8A2D\u7F6E\u683C\u5F0F\u7684\u55AE\u5143\u683C",
  27914. formula: "\u516C\u5F0F",
  27915. textColor: "\u6587\u5B57\u984F\u8272",
  27916. cellColor: "\u5132\u5B58\u683C\u984F\u8272",
  27917. confirm: "\u78BA\u5B9A",
  27918. confirmColor: "\u78BA\u5B9A\u984F\u8272",
  27919. cancel: "\u53D6\u6D88",
  27920. close: "\u95DC\u9589",
  27921. clearColorSelect: "\u6E05\u9664\u984F\u8272\u9078\u64C7",
  27922. sheet: "\u9336",
  27923. currentSheet: "\u7576\u524D\u5DE5\u4F5C\u8868",
  27924. dataBar: "\u6578\u64DA\u689D",
  27925. dataBarColor: "\u6578\u64DA\u689D\u984F\u8272",
  27926. gradientDataBar_1: "\u85CD-\u767D\u6F38\u8B8A\u6578\u64DA\u689D",
  27927. gradientDataBar_2: "\u7DA0-\u767D\u6F38\u8B8A\u6578\u64DA\u689D",
  27928. gradientDataBar_3: "\u7D05-\u767D\u6F38\u8B8A\u6578\u64DA\u689D",
  27929. gradientDataBar_4: "\u67F3\u4E01-\u767D\u6F38\u8B8A\u6578\u64DA\u689D",
  27930. gradientDataBar_5: "\u6DFA\u85CD-\u767D\u6F38\u8B8A\u6578\u64DA\u689D",
  27931. gradientDataBar_6: "\u7D2B-\u767D\u6F38\u8B8A\u6578\u64DA\u689D",
  27932. solidColorDataBar_1: "\u85CD\u8272\u6578\u64DA\u689D",
  27933. solidColorDataBar_2: "\u7DA0\u8272\u6578\u64DA\u689D",
  27934. solidColorDataBar_3: "\u7D05\u8272\u6578\u64DA\u689D",
  27935. solidColorDataBar_4: "\u6A59\u8272\u6578\u64DA\u689D",
  27936. solidColorDataBar_5: "\u6DFA\u85CD\u8272\u6578\u64DA\u689D",
  27937. solidColorDataBar_6: "\u7D2B\u8272\u6578\u64DA\u689D",
  27938. colorGradation: "\u8272\u968E",
  27939. colorGradation_1: "\u7DA0-\u9EC3-\u7D05\u8272\u968E",
  27940. colorGradation_2: "\u7D05-\u9EC3-\u7DA0\u8272\u968E",
  27941. colorGradation_3: "\u7DA0-\u767D-\u7D05\u8272\u968E",
  27942. colorGradation_4: "\u7D05-\u767D-\u7DA0\u8272\u968E",
  27943. colorGradation_5: "\u85CD-\u767D-\u7D05\u8272\u968E",
  27944. colorGradation_6: "\u7D05-\u767D-\u85CD\u8272\u968E",
  27945. colorGradation_7: "\u767D-\u7D05\u8272\u968E",
  27946. colorGradation_8: "\u7D05-\u767D\u8272\u968E",
  27947. colorGradation_9: "\u7DA0-\u767D\u8272\u968E",
  27948. colorGradation_10: "\u767D-\u7DA0\u8272\u968E",
  27949. colorGradation_11: "\u7DA0-\u9EC3\u8272\u968E",
  27950. colorGradation_12: "\u9EC3-\u7DA0\u8272\u968E",
  27951. icons: "\u5716\u6A19\u96C6",
  27952. pleaseSelectIcon: "\u8ACB\u9EDE\u64CA\u9078\u64C7\u4E00\u7D44\u5716\u6A19:",
  27953. cellValue: "\u5132\u5B58\u683C\u503C",
  27954. specificText: "\u7279\u5B9A\u6587\u5B57",
  27955. occurrence: "\u767C\u751F\u65E5\u671F",
  27956. greaterThan: "\u5927\u65BC",
  27957. lessThan: "\u5C0F\u65BC",
  27958. between: "\u4ECB\u65BC",
  27959. equal: "\u7B49\u65BC",
  27960. in: "\u548C",
  27961. to: "\u5230",
  27962. between2: "\u4E4B\u9593",
  27963. contain: "\u5305\u542B",
  27964. textContains: "\u6587\u5B57\u5305\u542B",
  27965. duplicateValue: "\u91CD\u8907\u503C",
  27966. uniqueValue: "\u552F\u4E00\u503C",
  27967. top: "\u524D",
  27968. top10: "\u524D10\u9805",
  27969. top10_percent: "\u524D10%",
  27970. last: "\u5F8C",
  27971. last10: "\u5F8C10\u9805",
  27972. last10_percent: "\u5F8C10%",
  27973. oneself: "\u500B",
  27974. above: "\u9AD8\u65BC",
  27975. aboveAverage: "\u9AD8\u65BC\u5E73\u5747\u503C",
  27976. below: "\u4F4E\u65BC",
  27977. belowAverage: "\u4F4E\u65BC\u5E73\u5747\u503C",
  27978. all: "\u5168\u90E8",
  27979. yesterday: "\u6628\u5929",
  27980. today: "\u4ECA\u5929",
  27981. tomorrow: "\u660E\u5929",
  27982. lastWeek: "\u4E0A\u5468",
  27983. thisWeek: "\u672C\u5468",
  27984. lastMonth: "\u4E0A\u6708",
  27985. thisMonth: "\u672C\u6708",
  27986. lastYear: "\u53BB\u5E74",
  27987. thisYear: "\u672C\u5E74",
  27988. last7days: "\u6700\u8FD17\u5929",
  27989. last30days: "\u6700\u8FD130\u5929",
  27990. next7days: "\u672A\u4F867\u5929",
  27991. next30days: "\u672A\u4F8630\u5929",
  27992. next60days: "\u672A\u4F8660\u5929",
  27993. chooseRuleType: "\u9078\u64C7\u898F\u5247\u985E\u578B",
  27994. editRuleDescription: "\u7DE8\u8F2F\u898F\u5247\u8AAA\u660E",
  27995. newFormatRule: "\u65B0\u5EFA\u683C\u5F0F\u898F\u5247",
  27996. editFormatRule: "\u7DE8\u8F2F\u683C\u5F0F\u898F\u5247",
  27997. formatStyle: "\u683C\u5F0F\u6A23\u5F0F",
  27998. fillType: "\u586B\u5145\u985E\u578B",
  27999. color: "\u984F\u8272",
  28000. twocolor: "\u96D9\u8272",
  28001. tricolor: "\u4E09\u8272",
  28002. multicolor: "\u5F69\u8272",
  28003. grayColor: "\u7070\u8272",
  28004. gradient: "\u6F38\u8B8A",
  28005. solid: "\u5BE6\u5FC3",
  28006. maxValue: "\u6700\u5927\u503C",
  28007. medianValue: "\u4E2D\u9593\u503C",
  28008. minValue: "\u6700\u5C0F\u503C",
  28009. direction: "\u65B9\u5411",
  28010. threeWayArrow: "\u4E09\u5411\u7BAD\u982D",
  28011. fourWayArrow: "\u56DB\u5411\u7BAD\u982D",
  28012. fiveWayArrow: "\u4E94\u5411\u7BAD\u982D",
  28013. threeTriangles: "3\u500B\u4E09\u89D2\u5F62",
  28014. shape: "\u5F62\u72C0",
  28015. threeColorTrafficLight: "\u4E09\u8272\u4EA4\u901A\u71C8",
  28016. fourColorTrafficLight: "\u56DB\u8272\u4EA4\u901A\u71C8",
  28017. threeSigns: "\u4E09\u6A19\u8A8C",
  28018. greenRedBlackGradient: "\u7DA0-\u7D05-\u9ED1\u6F38\u8B8A",
  28019. rimless: "\u7121\u908A\u6846",
  28020. bordered: "\u6709\u908A\u6846",
  28021. mark: "\u6A19\u8A18",
  28022. threeSymbols: "\u4E09\u500B\u7B26\u865F",
  28023. tricolorFlag: "\u4E09\u8272\u65D7",
  28024. circled: "\u6709\u5713\u5708",
  28025. noCircle: "\u7121\u5713\u5708",
  28026. grade: "\u7B49\u7D1A",
  28027. grade4: "\u56DB\u7B49\u7D1A",
  28028. grade5: "\u4E94\u7B49\u7D1A",
  28029. threeStars: "3\u500B\u661F\u5F62",
  28030. fiveQuadrantDiagram: "\u4E94\u8C61\u9650\u5716",
  28031. fiveBoxes: "5\u500B\u6846"
  28032. },
  28033. insertLink: {
  28034. linkText: "\u6587\u5B57",
  28035. linkType: "\u9023\u7D50\u985E\u578B",
  28036. external: "\u5916\u90E8\u9023\u7D50",
  28037. internal: "\u5185\u90E8\u9023\u7D50",
  28038. linkAddress: "\u9023\u7D50\u5730\u5740",
  28039. linkSheet: "\u5DE5\u4F5C\u8868",
  28040. linkCell: "\u5132\u5B58\u683C\u5F15\u7528",
  28041. linkTooltip: "\u63D0\u793A",
  28042. placeholder1: "\u8ACB\u8F38\u5165\u7DB2\u9801\u9023\u7D50\u4F4D\u5740",
  28043. placeholder2: "\u8ACB\u8F38\u5165\u8981\u5F15\u7528\u7684\u5132\u5B58\u683C,\u4F8BA1",
  28044. placeholder3: "\u8ACB\u8F38\u5165\u63D0\u793A\u5167\u5BB9",
  28045. tooltipInfo1: "\u8ACB\u8F38\u5165\u6709\u6548\u7684\u9023\u7D50",
  28046. tooltipInfo2: "\u8ACB\u8F38\u5165\u6B63\u78BA\u7684\u5132\u5B58\u683C\u5F15\u7528"
  28047. },
  28048. dataVerification: {
  28049. cellRange: "\u5132\u5B58\u683C\u7BC4\u570D",
  28050. selectCellRange: "\u9EDE\u64CA\u9078\u64C7\u5132\u5B58\u683C\u7BC4\u570D",
  28051. selectCellRange2: "\u8ACB\u9078\u64C7\u5132\u5B58\u683C\u7BC4\u570D",
  28052. verificationCondition: "\u9A57\u8B49\u689D\u4EF6",
  28053. allowMultiSelect: "\u662F\u5426\u5141\u8A31\u591A\u9078",
  28054. dropdown: "\u4E0B\u62C9\u6E05\u55AE",
  28055. checkbox: "\u6838\u53D6\u65B9\u584A",
  28056. number: "\u6578\u4F4D",
  28057. number_integer: "\u6578\u4F4D-\u6574\u6578",
  28058. number_decimal: "\u6578\u4F4D-\u5C0F\u6578",
  28059. text_content: "\u6587\u5B57-\u5167\u5BB9",
  28060. text_length: "\u6587\u5B57-\u9577\u5EA6",
  28061. date: "\u65E5\u671F",
  28062. validity: "\u6709\u6548\u6027",
  28063. placeholder1: "\u8ACB\u8F38\u5165\u9078\u9805,\u4EE5\u82F1\u6587\u9017\u865F\u5206\u9694,\u59821,2,3,4,5",
  28064. placeholder2: "\u8ACB\u8F38\u5165\u5167\u5BB9",
  28065. placeholder3: "\u6578\u503C,\u598210",
  28066. placeholder4: "\u8ACB\u8F38\u5165\u6307\u5B9A\u7684\u6587\u5B57",
  28067. placeholder5: "\u8ACB\u8F38\u5165\u9078\u4E2D\u5132\u5B58\u683C\u6642\u986F\u793A\u7684\u63D0\u793A\u8A9E",
  28068. selected: "\u9078\u64C7\u6642",
  28069. notSelected: "\u672A\u9078\u64C7",
  28070. between: "\u4ECB\u65BC",
  28071. notBetween: "\u4E0D\u4ECB\u65BC",
  28072. equal: "\u7B49\u65BC",
  28073. notEqualTo: "\u4E0D\u7B49\u65BC",
  28074. moreThanThe: "\u5927\u65BC",
  28075. lessThan: "\u5C0F\u65BC",
  28076. greaterOrEqualTo: "\u5927\u65BC\u7B49\u65BC",
  28077. lessThanOrEqualTo: "\u5C0F\u65BC\u7B49\u65BC",
  28078. include: "\u5305\u62EC",
  28079. exclude: "\u4E0D\u5305\u62EC",
  28080. earlierThan: "\u65E9\u65BC",
  28081. noEarlierThan: "\u4E0D\u65E9\u65BC",
  28082. laterThan: "\u665A\u65BC",
  28083. noLaterThan: "\u4E0D\u665A\u65BC",
  28084. identificationNumber: "\u8EAB\u4EFD\u8B49\u865F\u78BC",
  28085. phoneNumber: "\u624B\u6A5F\u865F",
  28086. remote: "\u81EA\u52D5\u9060\u7A0B\u7372\u53D6\u9078\u9805",
  28087. prohibitInput: "\u8F38\u5165\u6578\u64DA\u7121\u6548\u6642\u7981\u6B62\u8F38\u5165",
  28088. hintShow: "\u9078\u4E2D\u5132\u5B58\u683C\u6642\u986F\u793A\u63D0\u793A\u8A9E",
  28089. deleteVerification: "\u5220\u9664\u9A57\u8B49",
  28090. tooltipInfo1: "\u4E0B\u62C9\u6E05\u55AE\u9078\u9805\u4E0D\u53EF\u70BA\u7A7A",
  28091. tooltipInfo2: "\u6838\u53D6\u65B9\u584A\u5167\u5BB9\u4E0D\u53EF\u70BA\u7A7A",
  28092. tooltipInfo3: "\u8F38\u5165\u7684\u503C\u4E0D\u662F\u6578\u503C\u985E\u578B",
  28093. tooltipInfo4: "\u6578\u503C2\u4E0D\u80FD\u5C0F\u65BC\u6578\u503C1",
  28094. tooltipInfo5: "\u6587\u5B57\u5167\u5BB9\u4E0D\u80FD\u70BA\u7A7A",
  28095. tooltipInfo6: "\u8F38\u5165\u7684\u503C\u4E0D\u662F\u65E5\u671F\u985E\u578B",
  28096. tooltipInfo7: "\u65E5\u671F2\u4E0D\u80FD\u5C0F\u65BC\u65E5\u671F1",
  28097. textlengthInteger: "\u6587\u5B57\u9577\u5EA6\u5FC5\u9808\u662F\u5927\u65BC\u7B49\u65BC0\u7684\u6574\u6578"
  28098. },
  28099. formula: {
  28100. sum: "\u6C42\u548C",
  28101. average: "\u5E73\u5747\u503C",
  28102. count: "\u8A08\u6578",
  28103. max: "\u6700\u5927\u503C",
  28104. min: "\u6700\u5C0F\u503C",
  28105. ifGenerate: "if\u516C\u5F0F\u751F\u6210\u5668",
  28106. find: "\u66F4\u591A\u51FD\u6578",
  28107. tipNotBelongToIf: "\u8A72\u5132\u5B58\u683C\u51FD\u6578\u4E0D\u5C6C\u65BCif\u516C\u5F0F!",
  28108. tipSelectCell: "\u8ACB\u9078\u64C7\u5132\u5B58\u683C\u63D2\u5165\u51FD\u6578",
  28109. ifGenCompareValueTitle: "\u6BD4\u8F83\u503C",
  28110. ifGenSelectCellTitle: "\u9EDE\u64CA\u9078\u64C7\u5132\u5B58\u683C",
  28111. ifGenRangeTitle: "\u7BC4\u570D",
  28112. ifGenRangeTo: "\u81F3",
  28113. ifGenRangeEvaluate: "\u7BC4\u570D\u8A55\u4F30",
  28114. ifGenSelectRangeTitle: "\u9EDE\u64CA\u9078\u64C7\u7BC4\u570D",
  28115. ifGenCutWay: "\u5283\u5206\u7BA1\u9053",
  28116. ifGenCutSame: "\u5283\u5206\u503C\u76F8\u540C",
  28117. ifGenCutNpiece: "\u5283\u5206\u4E3AN\u4EFD",
  28118. ifGenCutCustom: "\u81EA\u5B9A\u7FA9\u8F38\u5165",
  28119. ifGenCutConfirm: "\u751F\u6210",
  28120. ifGenTipSelectCell: "\u9078\u64C7\u5132\u5B58\u683C",
  28121. ifGenTipSelectCellPlace: "\u8ACB\u9078\u64C7\u5132\u5B58\u683C",
  28122. ifGenTipSelectRange: "\u9078\u64C7\u55AE\u7BC4\u570D",
  28123. ifGenTipSelectRangePlace: "\u8ACB\u9078\u64C7\u7BC4\u570D",
  28124. ifGenTipNotNullValue: "\u6BD4\u8F03\u503C\u4E0D\u80FD\u70BA\u7A7A!",
  28125. ifGenTipLableTitile: "\u6A19\u7C64",
  28126. ifGenTipRangeNotforNull: "\u7BC4\u570D\u4E0D\u80FD\u70BA\u7A7A!",
  28127. ifGenTipCutValueNotforNull: "\u5283\u5206\u503C\u4E0D\u80FD\u70BA\u7A7A\uFF01",
  28128. ifGenTipNotGenCondition: "\u6C92\u6709\u751F\u6210\u53EF\u7528\u7684\u689D\u4EF6\uFF01"
  28129. },
  28130. formulaMore: {
  28131. valueTitle: "\u503C",
  28132. tipSelectDataRange: "\u9078\u53D6\u6578\u64DA\u7BC4\u570D",
  28133. tipDataRangeTile: "\u6578\u64DA\u7BC4\u570D",
  28134. findFunctionTitle: "\u67E5\u627E\u51FD\u6578",
  28135. tipInputFunctionName: "\u8ACB\u8F38\u5165\u60A8\u8981\u67E5\u627E\u7684\u51FD\u6578\u540D\u7A31\u6216\u51FD\u6578\u529F\u80FD\u7684\u7C21\u8981\u63CF\u8FF0",
  28136. Array: "\u6578\u7D44",
  28137. Database: "\u8CC7\u6599\u4F86\u6E90",
  28138. Date: "\u65E5\u671F",
  28139. Engineering: "\u5DE5\u7A0B\u8A08\u7B97",
  28140. Filter: "\u7BE9\u6AA2\u7A0B\u5F0F",
  28141. Financial: "\u8CA1\u52D9",
  28142. luckysheet: "Luckysheet\u5167\u5BD8",
  28143. other: "\u5176\u5B83",
  28144. Logical: "\u908F\u8F2F",
  28145. Lookup: "\u67E5\u627E",
  28146. Math: "\u6578\u5B78",
  28147. Operator: "\u904B\u7B97\u5B50",
  28148. Parser: "\u8F49\u63DB\u5DE5\u5177",
  28149. Statistical: "\u7D71\u8A08",
  28150. Text: "\u6587\u5B57",
  28151. dataMining: "\u8CC7\u6599\u6316\u6398",
  28152. selectFunctionTitle: "\u9078\u64C7\u51FD\u6578",
  28153. calculationResult: "\u8A08\u7B97\u7D50\u679C",
  28154. tipSuccessText: "\u6210\u529F",
  28155. tipParamErrorText: "\u53C3\u6578\u985E\u578B\u932F\u8AA4",
  28156. helpClose: "\u95DC\u9589",
  28157. helpCollapse: "\u6536\u8D77",
  28158. helpExample: "\u793A\u4F8B",
  28159. helpAbstract: "\u6458\u8981",
  28160. execfunctionError: '\u63D0\u793A", "\u516C\u5F0F\u5B58\u5728\u932F\u8AA4',
  28161. execfunctionSelfError: "\u516C\u5F0F\u4E0D\u53EF\u5F15\u7528\u5176\u672C\u8EAB\u7684\u5132\u5B58\u683C",
  28162. execfunctionSelfErrorResult: "\u516C\u5F0F\u4E0D\u53EF\u5F15\u7528\u5176\u672C\u8EAB\u7684\u5132\u5B58\u683C,\u6703\u5C0E\u81F4\u8A08\u7B97\u7D50\u679C\u4E0D\u6E96\u78BA",
  28163. allowRepeatText: "\u53EF\u91CD\u8907",
  28164. allowOptionText: "\u53EF\u9078",
  28165. selectCategory: "\u6216\u9078\u64C7\u985E\u5225"
  28166. },
  28167. drag: {
  28168. noMerge: "\u7121\u6CD5\u5C0D\u5408\u4F75\u5132\u5B58\u683C\u57F7\u884C\u6B64\u64CD\u4F5C",
  28169. affectPivot: "\u7121\u6CD5\u5C0D\u6240\u9078\u5132\u5B58\u683C\u9032\u884C\u6B64\u66F4\u6539,\u56E0\u70BA\u5B83\u6703\u5F71\u97FF\u6578\u64DA\u900F\u8996\u9336\uFF01",
  28170. noMulti: "\u7121\u6CD5\u5C0D\u591A\u91CD\u9078\u64C7\u5340\u57DF\u57F7\u884C\u6B64\u64CD\u4F5C,\u8ACB\u9078\u64C7\u55AE\u500B\u5340\u57DF",
  28171. noPaste: "\u7121\u6CD5\u5728\u6B64\u8655\u7C98\u8CBC\u6B64\u5167\u5BB9,\u8ACB\u9078\u64C7\u7C98\u8CBC\u5340\u57DF\u7684\u4E00\u500B\u5132\u5B58\u683C,\u7136\u5F8C\u518D\u6B21\u5617\u8A66\u7C98\u8CBC",
  28172. noPartMerge: "\u7121\u6CD5\u5C0D\u90E8\u5206\u5408\u4F75\u5132\u5B58\u683C\u57F7\u884C\u6B64\u64CD\u4F5C",
  28173. inputCorrect: "\u8ACB\u8F38\u5165\u6B63\u78BA\u7684\u6578\u503C",
  28174. notLessOne: "\u884C\u5217\u6578\u4E0D\u80FD\u5C0F\u65BC1",
  28175. offsetColumnLessZero: "\u504F\u79FB\u5217\u4E0D\u80FD\u70BA\u8CA0\u6578\uFF01",
  28176. pasteMustKeybordAlert: "Copy and paste in the Sheet: Ctrl + C to copy, Ctrl + V to paste, Ctrl + X to cut",
  28177. pasteMustKeybordAlertHTMLTitle: "Copy and paste in the Sheet",
  28178. pasteMustKeybordAlertHTML: "<span style='line-height: 1.0;font-size:36px;font-weight: bold;color:#666;'>Ctrl + C</span>&nbsp;&nbsp;to copy<br/><span style='line-height: 1.0;font-size:36px;font-weight: bold;color:#666;'>Ctrl + V</span>&nbsp;&nbsp;to paste<br/><span style='line-height: 1.0;font-size:36px;font-weight: bold;color:#666;'>Ctrl + X</span>&nbsp;&nbsp;to cut"
  28179. },
  28180. paste: {
  28181. warning: "\u63D0\u793A",
  28182. errorNotAllowMulti: "\u4E0D\u80FD\u5C0D\u591A\u91CD\u9078\u64C7\u5340\u57DF\u57F7\u884C\u6B64\u64CD\u4F5C,\u8ACB\u9078\u64C7\u55AE\u500B\u5340\u57DF,\u7136\u5F8C\u518D\u8A66",
  28183. errorNotAllowMerged: "\u4E0D\u80FD\u5BF9\u5408\u5E76\u5355\u5143\u683C\u505A\u90E8\u5206\u66F4\u6539"
  28184. },
  28185. pivotTable: {
  28186. title: "\u6578\u64DA\u900F\u8996\u9336",
  28187. closePannel: "\u95DC\u9589",
  28188. editRange: "\u7DE8\u8F2F\u7BC4\u570D",
  28189. tipPivotFieldSelected: "\u9078\u64C7\u9700\u8981\u6DFB\u52A0\u5230\u6578\u64DA\u900F\u8996\u9336\u7684\u6B04\u4F4D",
  28190. tipClearSelectedField: "\u6E05\u9664\u6240\u6709\u5DF2\u9078\u6B04\u4F4D",
  28191. btnClearSelectedField: "\u6E05\u9664",
  28192. btnFilter: "\u7BE9\u9078",
  28193. titleRow: "\u884C",
  28194. titleColumn: "\u5217",
  28195. titleValue: "\u6578\u503C",
  28196. tipShowColumn: "\u7D71\u8A08\u6B04\u4F4D\u986F\u793A\u70BA\u5217",
  28197. tipShowRow: "\u7D71\u8A08\u6B04\u4F4D\u986F\u793A\u70BA\u884C",
  28198. titleSelectionDataRange: "\u9078\u53D6\u6578\u64DA\u7BC4\u570D",
  28199. titleDataRange: "\u6578\u64DA\u7BC4\u570D",
  28200. valueSum: "\u7E3D\u8A08",
  28201. valueStatisticsSUM: "\u6C42\u548C",
  28202. valueStatisticsCOUNT: "\u6578\u503C\u8A08\u6578",
  28203. valueStatisticsCOUNTA: "\u8A08\u6578",
  28204. valueStatisticsCOUNTUNIQUE: "\u53BB\u91CD\u8A08\u6578",
  28205. valueStatisticsAVERAGE: "\u5E73\u5747\u503C",
  28206. valueStatisticsMAX: "\u6700\u5927\u503C",
  28207. valueStatisticsMIN: "\u6700\u5C0F\u503C",
  28208. valueStatisticsMEDIAN: "\u4E2D\u4F4D\u6578",
  28209. valueStatisticsPRODUCT: "\u4E58\u7A4D",
  28210. valueStatisticsSTDEV: "\u6A19\u6E96\u5DEE",
  28211. valueStatisticsSTDEVP: "\u6574\u9AD4\u6A19\u6E96\u5DEE",
  28212. valueStatisticslet: "\u65B9\u5DEE",
  28213. valueStatisticsVARP: "\u6574\u9AD4\u65B9\u5DEE",
  28214. errorNotAllowEdit: "\u975E\u7DE8\u8F2F\u6A21\u5F0F\u4E0B\u7981\u6B62\u8A72\u64CD\u4F5C!",
  28215. errorNotAllowMulti: "\u4E0D\u80FD\u5C0D\u591A\u91CD\u9078\u64C7\u5340\u57DF\u57F7\u884C\u6B64\u64CD\u4F5C,\u8ACB\u9078\u64C7\u55AE\u500B\u5340\u57DF,\u7136\u5F8C\u518D\u8A66",
  28216. errorSelectRange: "\u8ACB\u9078\u64C7\u65B0\u5EFA\u900F\u8996\u9336\u7684\u5340\u57DF",
  28217. errorIsDamage: "\u6B64\u6578\u64DA\u900F\u8996\u9336\u7684\u6E90\u6578\u64DA\u5DF2\u640D\u58DE\uFF01",
  28218. errorNotAllowPivotData: "\u4E0D\u53EF\u9078\u64C7\u6578\u64DA\u900F\u8996\u9336\u70BA\u6E90\u6578\u64DA!",
  28219. errorSelectionRange: "\u9078\u64C7\u5931\u6557,\u8F38\u5165\u7BC4\u570D\u932F\u8AA4\uFF01",
  28220. errorIncreaseRange: "\u8ACB\u64F4\u5927\u9078\u64C7\u7684\u6578\u64DA\u7BC4\u570D!",
  28221. titleAddColumn: "\u6DFB\u52A0\u5217\u5230\u6578\u64DA\u900F\u8996\u9336",
  28222. titleMoveColumn: "\u79FB\u52D5\u8A72\u5217\u5230\u4E0B\u65B9\u767D\u6846",
  28223. titleClearColumnFilter: "\u6E05\u9664\u8A72\u5217\u7684\u7BE9\u9078\u689D\u4EF6",
  28224. titleFilterColumn: "\u7BE9\u9078\u8A72\u5217",
  28225. titleSort: "\u6392\u5E8F",
  28226. titleNoSort: "\u7121\u6392\u5E8F",
  28227. titleSortAsc: "\u6607\u51AA",
  28228. titleSortDesc: "\u964D\u5E8F",
  28229. titleSortBy: "\u6392\u5E8F\u4F9D\u64DA",
  28230. titleShowSum: "\u986F\u793A\u7E3D\u8A08",
  28231. titleStasticTrue: "\u662F",
  28232. titleStasticFalse: "\u5426"
  28233. },
  28234. dropCell: {
  28235. copyCell: "\u8907\u88FD\u5132\u5B58\u683C",
  28236. sequence: "\u586B\u5145\u5E8F\u5217",
  28237. onlyFormat: "\u50C5\u586B\u5145\u683C\u5F0F",
  28238. noFormat: "\u4E0D\u5E36\u683C\u5F0F\u586B\u5145",
  28239. day: "\u4EE5\u5929\u6578\u586B\u5145",
  28240. workDay: "\u4EE5\u5DE5\u4F5C\u65E5\u586B\u5145",
  28241. month: "\u4EE5\u6708\u586B\u5145",
  28242. year: "\u4EE5\u5E74\u586B\u5145",
  28243. chineseNumber: "\u4EE5\u4E2D\u6587\u5C0F\u5BEB\u6578\u4F4D\u586B\u5145"
  28244. },
  28245. imageCtrl: {
  28246. borderTile: "\u5716\u7247\u908A\u6846\u984F\u8272\u9078\u64C7",
  28247. borderCur: "\u7576\u524D\u984F\u8272"
  28248. },
  28249. protection: {
  28250. protectiontTitle: "\u4FDD\u8B77\u5DE5\u4F5C\u8868",
  28251. enterPassword: "\u8ACB\u8F38\u5165\u5BC6\u78BC\uFF08\u53EF\u7559\u7A7A\uFF09",
  28252. enterHint: "\u60A8\u8A66\u5716\u66F4\u6539\u7684\u5132\u5B58\u683C\u6216\u5716\u8868\u4F4D\u65BC\u53D7\u4FDD\u8B77\u7684\u5DE5\u4F5C\u8868\u4E2D\u3002\u82E5\u8981\u66F4\u6539,\u8ACB\u53D6\u6D88\u5DE5\u4F5C\u8868\u4FDD\u8B77\u3002\u60A8\u53EF\u80FD\u9700\u8981\u8F38\u5165\u5BC6\u78BC",
  28253. swichProtectionTip: "\u4FDD\u8B77\u5DE5\u4F5C\u8868\u53CA\u9396\u5B9A\u7684\u5132\u5B58\u683C\u5167\u5BB9",
  28254. authorityTitle: "\u5141\u8A31\u6B64\u5DE5\u4F5C\u8868\u7684\u7528\u6236\u9032\u884C:",
  28255. selectLockedCells: "\u5B9A\u9396\u5B9A\u5132\u5B58\u683C",
  28256. selectunLockedCells: "\u9078\u5B9A\u89E3\u9664\u9396\u5B9A\u7684\u5132\u5B58\u683C",
  28257. formatCells: "\u8A2D\u5B9A\u5132\u5B58\u683C\u683C\u5F0F",
  28258. formatColumns: "\u8A2D\u5B9A\u5217\u683C\u5F0F",
  28259. formatRows: "\u8A2D\u5B9A\u884C\u683C\u5F0F",
  28260. insertColumns: "\u63D2\u5165\u5217",
  28261. insertRows: "\u63D2\u5165\u884C",
  28262. insertHyperlinks: "\u63D2\u5165\u8D85\u9023\u7D50",
  28263. deleteColumns: "\u5220\u9664\u5217",
  28264. deleteRows: "\u5220\u9664\u884C",
  28265. sort: "\u6392\u5E8F",
  28266. filter: "\u4F7F\u7528\u81EA\u52D5\u7BE9\u9078",
  28267. usePivotTablereports: "\u4F7F\u7528\u6578\u64DA\u900F\u8996\u9336\u548C\u5831\u8868",
  28268. editObjects: "\u7DE8\u8F2F\u5C0D\u8C61",
  28269. editScenarios: "\u7DE8\u8F2F\u65B9\u6848",
  28270. allowRangeTitle: "\u5141\u8A31\u7528\u6236\u7DE8\u8F2F\u5340\u57DF",
  28271. allowRangeAdd: "\u65B0\u5EFA...",
  28272. allowRangeAddTitle: "\u6A19\u984C",
  28273. allowRangeAddSqrf: "\u5F15\u7528\u5132\u5B58\u683C",
  28274. selectCellRange: "\u9EDE\u64CA\u9078\u64C7\u5132\u5B58\u683C\u7BC4\u570D",
  28275. selectCellRangeHolder: "\u8ACB\u8F38\u5165\u5132\u5B58\u683C\u7BC4\u570D",
  28276. allowRangeAddTitlePassword: "\u5BC6\u78BC",
  28277. allowRangeAddTitleHint: "\u63D0\u793A",
  28278. allowRangeAddTitleHintTitle: "\u8A2D\u7F6E\u5BC6\u78BC\u5F8C,\u63D0\u793A\u7528\u6236\u8F38\u5165\u5BC6\u78BC\uFF08\u53EF\u7559\u7A7A\uFF09",
  28279. allowRangeAddtitleDefault: "\u8ACB\u8F38\u5165\u5340\u57DF\u540D\u7A31",
  28280. rangeItemDblclick: "\u6309\u5169\u4E0B\u9032\u884C\u7DE8\u8F2F",
  28281. rangeItemHasPassword: "\u5DF2\u8A2D\u7F6E\u5BC6\u78BC",
  28282. rangeItemErrorTitleNull: "\u6A19\u984C\u4E0D\u80FD\u70BA\u7A7A",
  28283. rangeItemErrorRangeNull: "\u5132\u5B58\u683C\u7BC4\u570D\u4E0D\u80FD\u70BA\u7A7A",
  28284. rangeItemErrorRange: "\u5132\u5B58\u683C\u7BC4\u570D\u683C\u5F0F\u932F\u8AA4",
  28285. validationTitle: "\u9A57\u8B49\u63D0\u793A",
  28286. validationTips: "\u9700\u8981\u8F38\u5165\u5BC6\u78BC\u4F86\u64A4\u92B7\u5DE5\u4F5C\u8868\u7684\u4FDD\u8B77",
  28287. validationInputHint: "\u8ACB\u8F38\u5165\u5BC6\u78BC",
  28288. checkPasswordNullalert: "\u5BC6\u78BC\u4E0D\u80FD\u70BA\u7A7A!",
  28289. checkPasswordWrongalert: "\u5BC6\u78BC\u932F\u8AA4,\u8ACB\u91CD\u8A66\uFF01",
  28290. checkPasswordSucceedalert: "\u89E3\u9396\u6210\u529F,\u53EF\u4EE5\u7DE8\u8F2F\u8A72\u5340\u57DF!",
  28291. defaultRangeHintText: "\u8A72\u5132\u5B58\u683C\u6B63\u5728\u53D7\u5BC6\u78BC\u4FDD\u8B77",
  28292. defaultSheetHintText: "\u8A72\u5132\u5B58\u683C\u6216\u5716\u8868\u4F4D\u65BC\u53D7\u4FDD\u8B77\u7684\u5DE5\u4F5C\u8868\u4E2D,\u82E5\u8981\u9032\u884C\u66F4\u6539,\u8ACB\u53D6\u6D88\u5DE5\u4F5C\u8868\u4FDD\u8B77,\u60A8\u53EF\u80FD\u9700\u8981\u8F38\u5165\u5BC6\u78BC\u3002"
  28293. },
  28294. cellFormat: {
  28295. cellFormatTitle: "\u8A2D\u5B9A\u5132\u5B58\u683C\u683C\u5F0F",
  28296. protection: "\u4FDD\u8B77",
  28297. locked: "\u9396\u5B9A\u5132\u5B58\u683C",
  28298. hidden: "\u96B1\u85CF\u516C\u5F0F",
  28299. protectionTips: "\u53EA\u6709\u4FDD\u8B77\u5DE5\u4F5C\u8868\u529F\u80FD\uFF08\u5728\u529F\u80FD\u8868\u5217\u9EDE\u64CA\u4FDD\u8B77\u5DE5\u4F5C\u8868\u6309\u9215\u9032\u884C\u8A2D\u5B9A\uFF09\u958B\u555F\u5F8C,\u9396\u5B9A\u5132\u5B58\u683C\u6216\u96B1\u85CF\u516C\u5F0F\u624D\u80FD\u751F\u6548",
  28300. tipsPart: "\u90E8\u5206\u9078\u4E2D",
  28301. tipsAll: "\u5168\u90E8\u9078\u4E2D",
  28302. selectionIsNullAlert: "\u8ACB\u9078\u64C7\u4E00\u500B\u7BC4\u570D\uFF01",
  28303. sheetDataIsNullAlert: "\u6578\u64DA\u70BA\u7A7A\u7121\u6CD5\u8A2D\u5B9A\uFF01"
  28304. },
  28305. print: {
  28306. normalBtn: "\u5E38\u898F\u8996\u5716",
  28307. layoutBtn: "\u9801\u9762\u4F48\u5C40",
  28308. pageBtn: "\u5206\u9801\u9810\u89BD",
  28309. menuItemPrint: "\u5217\u5370(Ctrl+P)",
  28310. menuItemAreas: "\u5217\u5370\u5340\u57DF",
  28311. menuItemRows: "\u5217\u5370\u6A19\u984C\u884C",
  28312. menuItemColumns: "\u5217\u5370\u6A19\u984C\u5217"
  28313. },
  28314. edit: {
  28315. typing: "\u6B63\u5728\u8F38\u5165"
  28316. },
  28317. websocket: {
  28318. success: "WebSocket\u9023\u63A5\u6210\u529F",
  28319. refresh: "WebSocket\u9023\u63A5\u767C\u751F\u932F\u8AA4,\u8ACB\u5237\u65B0\u9801\u9762\uFF01",
  28320. wait: "WebSocket\u9023\u63A5\u767C\u751F\u932F\u8AA4,\u8ACB\u8010\u5FC3\u7B49\u5F85\uFF01",
  28321. close: "WebSocket\u9023\u63A5\u95DC\u9589",
  28322. contact: "\u670D\u52D9\u5668\u901A\u4FE1\u767C\u751F\u932F\u8AA4,\u8ACB\u5237\u65B0\u9801\u9762\u5F8C\u518D\u8A66,\u5982\u82E5\u4E0D\u884C\u8ACB\u806F\u7CFB\u7BA1\u7406\u54E1\uFF01",
  28323. support: "\u7576\u524D\u700F\u89BD\u5668\u4E0D\u652F\u6301WebSocket"
  28324. }
  28325. };
  28326. }
  28327. });
  28328. // src/locale/locale.js
  28329. function locale() {
  28330. return locales[store_default.lang];
  28331. }
  28332. var locales, locale_default;
  28333. var init_locale = __esm({
  28334. "src/locale/locale.js"() {
  28335. init_en();
  28336. init_zh();
  28337. init_es();
  28338. init_zh_tw();
  28339. init_store();
  28340. locales = {en: en_default, zh: zh_default, es: es_default, zh_tw: zh_tw_default};
  28341. locale_default = locale;
  28342. }
  28343. });
  28344. // src/controllers/toolbar.js
  28345. function createToolbarHtml() {
  28346. const toolbar = locale_default().toolbar;
  28347. const fontarray = locale_default().fontarray;
  28348. const defaultFmtArray = locale_default().defaultFmt;
  28349. const htmlMap = {
  28350. undo: `<div class="luckysheet-toolbar-button luckysheet-inline-block disabled" data-tips="${toolbar.undo}"
  28351. id="luckysheet-icon-undo" role="button" style="user-select: none;">
  28352. <div class="luckysheet-toolbar-button-outer-box luckysheet-inline-block"
  28353. style="user-select: none;">
  28354. <div class="luckysheet-toolbar-button-inner-box luckysheet-inline-block"
  28355. style="user-select: none;">
  28356. <div class="luckysheet-icon luckysheet-inline-block " style="user-select: none;">
  28357. <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-undo iconfont luckysheet-iconfont-qianjin"
  28358. style="user-select: none;">
  28359. </div>
  28360. </div>
  28361. </div>
  28362. </div>
  28363. </div>`,
  28364. redo: `<div class="luckysheet-toolbar-button luckysheet-inline-block disabled" data-tips="${toolbar.redo}"
  28365. id="luckysheet-icon-redo" role="button" style="user-select: none;">
  28366. <div class="luckysheet-toolbar-button-outer-box luckysheet-inline-block"
  28367. style="user-select: none;">
  28368. <div class="luckysheet-toolbar-button-inner-box luckysheet-inline-block"
  28369. style="user-select: none;">
  28370. <div class="luckysheet-icon luckysheet-inline-block " style="user-select: none;">
  28371. <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-redo iconfont luckysheet-iconfont-houtui"
  28372. style="user-select: none;">
  28373. </div>
  28374. </div>
  28375. </div>
  28376. </div>
  28377. </div>`,
  28378. paintFormat: `<div class="luckysheet-toolbar-button luckysheet-inline-block" data-tips="${toolbar.paintFormat}"
  28379. id="luckysheet-icon-paintformat" role="button" style="user-select: none;">
  28380. <div class="luckysheet-toolbar-button-outer-box luckysheet-inline-block"
  28381. style="user-select: none;">
  28382. <div class="luckysheet-toolbar-button-inner-box luckysheet-inline-block"
  28383. style="user-select: none;">
  28384. <div class="luckysheet-icon luckysheet-inline-block " style="user-select: none;">
  28385. <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img iconfont luckysheet-iconfont-geshishua"
  28386. style="user-select: none;">
  28387. </div>
  28388. </div>
  28389. </div>
  28390. </div>
  28391. </div>`,
  28392. currencyFormat: `<div class="luckysheet-toolbar-button luckysheet-inline-block" data-tips="${toolbar.currencyFormat}"
  28393. id="luckysheet-icon-currency" role="button" style="user-select: none;">
  28394. <div class="luckysheet-toolbar-button-outer-box luckysheet-inline-block"
  28395. style="user-select: none;">
  28396. <div class="luckysheet-toolbar-button-inner-box luckysheet-inline-block"
  28397. style="user-select: none;">
  28398. <div class="luckysheet-icon luckysheet-inline-block " style="user-select: none;">
  28399. <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img iconfont luckysheet-iconfont-jine"
  28400. style="user-select: none;">
  28401. </div>
  28402. </div>
  28403. </div>
  28404. </div>
  28405. </div>`,
  28406. percentageFormat: `<div class="luckysheet-toolbar-button luckysheet-inline-block" data-tips="${toolbar.percentageFormat}"
  28407. id="luckysheet-icon-percent" role="button" style="user-select: none;">
  28408. <div class="luckysheet-toolbar-button-outer-box luckysheet-inline-block"
  28409. style="user-select: none;">
  28410. <div class="luckysheet-toolbar-button-inner-box luckysheet-inline-block"
  28411. style="user-select: none;">
  28412. <div class="luckysheet-icon luckysheet-inline-block " style="user-select: none;">
  28413. <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img iconfont luckysheet-iconfont-baifenhao"
  28414. style="user-select: none;">
  28415. </div>
  28416. </div>
  28417. </div>
  28418. </div>
  28419. </div>`,
  28420. numberDecrease: `<div class="luckysheet-toolbar-button luckysheet-inline-block" data-tips="${toolbar.numberDecrease}"
  28421. id="luckysheet-icon-fmt-decimal-decrease" role="button" style="user-select: none;">
  28422. <div class="luckysheet-toolbar-button-outer-box luckysheet-inline-block"
  28423. style="user-select: none;">
  28424. <div class="luckysheet-toolbar-button-inner-box luckysheet-inline-block"
  28425. style="user-select: none;">
  28426. <div class="luckysheet-icon luckysheet-inline-block toolbar-decimal-icon"
  28427. style="user-select: none;">
  28428. <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-decimal-decrease iconfont luckysheet-iconfont-zengjiaxiaoshuwei"
  28429. style="user-select: none;">
  28430. </div>
  28431. </div>
  28432. </div>
  28433. </div>
  28434. </div>`,
  28435. numberIncrease: `<div class="luckysheet-toolbar-button luckysheet-inline-block" data-tips="${toolbar.numberIncrease}"
  28436. id="luckysheet-icon-fmt-decimal-increase" role="button" style="user-select: none;">
  28437. <div class="luckysheet-toolbar-button-outer-box luckysheet-inline-block"
  28438. style="user-select: none;">
  28439. <div class="luckysheet-toolbar-button-inner-box luckysheet-inline-block"
  28440. style="user-select: none;">
  28441. <div class="luckysheet-icon luckysheet-inline-block toolbar-decimal-icon"
  28442. style="user-select: none;">
  28443. <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-decimal-increase iconfont luckysheet-iconfont-jianxiaoxiaoshuwei"
  28444. style="user-select: none;">
  28445. </div>
  28446. </div>
  28447. </div>
  28448. </div>
  28449. </div>`,
  28450. moreFormats: `<div class="luckysheet-toolbar-select luckysheet-toolbar-menu-button luckysheet-inline-block" data-tips="${toolbar.moreFormats}"
  28451. id="luckysheet-icon-fmt-other" role="button" style="user-select: none;">
  28452. <div class="luckysheet-toolbar-menu-button-outer-box luckysheet-inline-block"
  28453. style="user-select: none;">
  28454. <div class="luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block"
  28455. style="user-select: none;">
  28456. <div class="luckysheet-toolbar-menu-button-caption luckysheet-inline-block"
  28457. style="user-select: none;">
  28458. ${defaultFmtArray[0].text}
  28459. </div>
  28460. <div class="luckysheet-toolbar-menu-button-dropdown luckysheet-inline-block iconfont luckysheet-iconfont-xiayige"
  28461. style="user-select: none;">
  28462. </div>
  28463. </div>
  28464. </div>
  28465. </div>`,
  28466. font: `<div class="luckysheet-toolbar-select luckysheet-toolbar-menu-button luckysheet-inline-block"
  28467. data-tips="${toolbar.font}" id="luckysheet-icon-font-family" role="button" style="user-select: none;">
  28468. <div class="luckysheet-toolbar-menu-button-outer-box luckysheet-inline-block"
  28469. style="user-select: none;">
  28470. <div class="luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block"
  28471. style="user-select: none;">
  28472. <div class="luckysheet-toolbar-menu-button-caption luckysheet-inline-block"
  28473. style="user-select: none;">
  28474. ${fontarray[0]}
  28475. </div>
  28476. <div class="luckysheet-toolbar-menu-button-dropdown luckysheet-inline-block iconfont luckysheet-iconfont-xiayige"
  28477. style="user-select: none;">
  28478. </div>
  28479. </div>
  28480. </div>
  28481. </div>`,
  28482. fontSize: `<div class="luckysheet-toolbar-select luckysheet-toolbar-zoom-combobox luckysheet-toolbar-combo-button luckysheet-inline-block"
  28483. data-tips="${toolbar.fontSize}" id="luckysheet-icon-font-size" style="user-select: none;">
  28484. <div class="luckysheet-toolbar-combo-button-outer-box luckysheet-inline-block"
  28485. style="user-select: none;">
  28486. <div class="luckysheet-toolbar-combo-button-inner-box luckysheet-inline-block"
  28487. style="user-select: none;">
  28488. <div aria-posinset="4" aria-setsize="7" class="luckysheet-inline-block luckysheet-toolbar-combo-button-caption"
  28489. style="user-select: none;">
  28490. <input aria-label="${toolbar.fontSize}" class="luckysheet-toolbar-combo-button-input luckysheet-toolbar-textinput"
  28491. role="combobox" style="user-select: none;" tabindex="-1" type="text" value="10"
  28492. />
  28493. </div>
  28494. <div class="luckysheet-toolbar-combo-button-dropdown luckysheet-inline-block iconfont luckysheet-iconfont-xiayige"
  28495. style="user-select: none;">
  28496. </div>
  28497. </div>
  28498. </div>
  28499. </div>`,
  28500. bold: `<div class="luckysheet-toolbar-button luckysheet-inline-block" data-tips="${toolbar.bold}"
  28501. id="luckysheet-icon-bold" role="button" style="user-select: none;">
  28502. <div class="luckysheet-toolbar-button-outer-box luckysheet-inline-block"
  28503. style="user-select: none;">
  28504. <div class="luckysheet-toolbar-button-inner-box luckysheet-inline-block"
  28505. style="user-select: none;">
  28506. <div class="luckysheet-icon luckysheet-inline-block " style="user-select: none;">
  28507. <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-bold iconfont luckysheet-iconfont-jiacu"
  28508. style="user-select: none;">
  28509. </div>
  28510. </div>
  28511. </div>
  28512. </div>
  28513. </div>`,
  28514. italic: `<div class="luckysheet-toolbar-button luckysheet-inline-block" data-tips="${toolbar.italic}"
  28515. id="luckysheet-icon-italic" role="button" style="user-select: none;">
  28516. <div class="luckysheet-toolbar-button-outer-box luckysheet-inline-block"
  28517. style="user-select: none;">
  28518. <div class="luckysheet-toolbar-button-inner-box luckysheet-inline-block"
  28519. style="user-select: none;">
  28520. <div class="luckysheet-icon luckysheet-inline-block " style="user-select: none;">
  28521. <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-italic iconfont luckysheet-iconfont-wenbenqingxie1"
  28522. style="user-select: none;">
  28523. </div>
  28524. </div>
  28525. </div>
  28526. </div>
  28527. </div>`,
  28528. strikethrough: `<div class="luckysheet-toolbar-button luckysheet-inline-block" data-tips="${toolbar.strikethrough}"
  28529. id="luckysheet-icon-strikethrough" role="button" style="user-select: none;">
  28530. <div class="luckysheet-toolbar-button-outer-box luckysheet-inline-block"
  28531. style="user-select: none;">
  28532. <div class="luckysheet-toolbar-button-inner-box luckysheet-inline-block"
  28533. style="user-select: none;">
  28534. <div class="luckysheet-icon luckysheet-inline-block " style="user-select: none;">
  28535. <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-strikethrough iconfont luckysheet-iconfont-wenbenshanchuxian"
  28536. style="user-select: none;">
  28537. </div>
  28538. </div>
  28539. </div>
  28540. </div>
  28541. </div>`,
  28542. underline: `<div class="luckysheet-toolbar-button luckysheet-inline-block" data-tips="${toolbar.underline}"
  28543. id="luckysheet-icon-underline" role="button" style="user-select: none;">
  28544. <div class="luckysheet-toolbar-button-outer-box luckysheet-inline-block"
  28545. style="user-select: none;">
  28546. <div class="luckysheet-toolbar-button-inner-box luckysheet-inline-block"
  28547. style="user-select: none;">
  28548. <div class="luckysheet-icon luckysheet-inline-block " style="user-select: none;">
  28549. <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-underline iconfont luckysheet-iconfont-wenbenxiahuaxian"
  28550. style="user-select: none;">
  28551. </div>
  28552. </div>
  28553. </div>
  28554. </div>
  28555. </div>`,
  28556. textColor: `<div class="luckysheet-toolbar-button-split-left luckysheet-toolbar-button luckysheet-inline-block luckysheet-icon-text-color"
  28557. data-tips="${toolbar.textColor}" id="luckysheet-icon-text-color" role="button" style="user-select: none;">
  28558. <div class="luckysheet-toolbar-button-outer-box luckysheet-inline-block"
  28559. style="user-select: none;">
  28560. <div class="luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block"
  28561. style="user-select: none;">
  28562. <div class="luckysheet-toolbar-menu-button-caption luckysheet-inline-block"
  28563. style="user-select: none;">
  28564. <div class="luckysheet-color-menu-button-indicator" style="border-bottom-color: rgb(0, 0, 0); user-select: none;">
  28565. <div class="luckysheet-icon luckysheet-inline-block " style="user-select: none;">
  28566. <div class="text-color-bar" style="background-color:${luckysheetConfigsetting_default.defaultTextColor}"></div>
  28567. <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-text-color iconfont luckysheet-iconfont-wenbenyanse"
  28568. style="user-select: none;">
  28569. </div>
  28570. </div>
  28571. </div>
  28572. </div>
  28573. </div>
  28574. </div>
  28575. </div>
  28576. <div class="luckysheet-toolbar-button-split-right luckysheet-toolbar-menu-button luckysheet-inline-block"
  28577. data-tips="${toolbar.chooseColor}..." id="luckysheet-icon-text-color-menu" role="button"
  28578. style="user-select: none;">
  28579. <div class="luckysheet-toolbar-menu-button-outer-box luckysheet-inline-block"
  28580. style="user-select: none;">
  28581. <div class="luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block"
  28582. style="user-select: none;">
  28583. <div class="luckysheet-toolbar-menu-button-dropdown luckysheet-inline-block iconfont luckysheet-iconfont-xiayige"
  28584. style="user-select: none;">
  28585. </div>
  28586. </div>
  28587. </div>
  28588. </div>`,
  28589. fillColor: `<div class="luckysheet-toolbar-button-split-left luckysheet-toolbar-button luckysheet-inline-block luckysheet-icon-cell-color"
  28590. data-tips="${toolbar.fillColor}" id="luckysheet-icon-cell-color" role="button" style="user-select: none;">
  28591. <div class="luckysheet-toolbar-button-outer-box luckysheet-inline-block"
  28592. style="user-select: none;">
  28593. <div class="luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block"
  28594. style="user-select: none;">
  28595. <div class="luckysheet-toolbar-menu-button-caption luckysheet-inline-block"
  28596. style="user-select: none;">
  28597. <div class="luckysheet-color-menu-button-indicator" style="border-bottom-color: rgb(255, 255, 255); user-select: none;">
  28598. <div class="luckysheet-icon luckysheet-inline-block " style="user-select: none;">
  28599. <div class="text-color-bar" style="background-color:${luckysheetConfigsetting_default.defaultCellColor}"></div>
  28600. <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-cell-color iconfont luckysheet-iconfont-tianchong"
  28601. style="user-select: none;">
  28602. </div>
  28603. </div>
  28604. </div>
  28605. </div>
  28606. </div>
  28607. </div>
  28608. </div>
  28609. <div class="luckysheet-toolbar-button-split-right luckysheet-toolbar-menu-button luckysheet-inline-block"
  28610. data-tips="${toolbar.chooseColor}..." id="luckysheet-icon-cell-color-menu" role="button"
  28611. style="user-select: none;">
  28612. <div class="luckysheet-toolbar-menu-button-outer-box luckysheet-inline-block"
  28613. style="user-select: none;">
  28614. <div class="luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block"
  28615. style="user-select: none;">
  28616. <div class="luckysheet-toolbar-menu-button-dropdown luckysheet-inline-block iconfont luckysheet-iconfont-xiayige"
  28617. style="user-select: none;">
  28618. </div>
  28619. </div>
  28620. </div>
  28621. </div>`,
  28622. border: `<div class="luckysheet-toolbar-button-split-left luckysheet-toolbar-button luckysheet-inline-block luckysheet-icon-border-all"
  28623. data-tips="${toolbar.border}" id="luckysheet-icon-border-all" role="button" style="user-select: none;">
  28624. <div class="luckysheet-toolbar-button-outer-box luckysheet-inline-block"
  28625. style="user-select: none;">
  28626. <div class="luckysheet-toolbar-button-inner-box luckysheet-inline-block"
  28627. style="user-select: none;">
  28628. <div class="luckysheet-icon luckysheet-inline-block " style="user-select: none;">
  28629. <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-all iconfont luckysheet-iconfont-quanjiabiankuang"
  28630. style="user-select: none;">
  28631. </div>
  28632. </div>
  28633. </div>
  28634. </div>
  28635. </div>
  28636. <div class="luckysheet-toolbar-button-split-right luckysheet-toolbar-menu-button luckysheet-inline-block"
  28637. data-tips="${toolbar.borderStyle}..." id="luckysheet-icon-border-menu" role="button" style="user-select: none;">
  28638. <div class="luckysheet-toolbar-menu-button-outer-box luckysheet-inline-block"
  28639. style="user-select: none;">
  28640. <div class="luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block"
  28641. style="user-select: none;">
  28642. <div class="luckysheet-toolbar-menu-button-dropdown luckysheet-inline-block iconfont luckysheet-iconfont-xiayige"
  28643. style="user-select: none;">
  28644. </div>
  28645. </div>
  28646. </div>
  28647. </div>`,
  28648. mergeCell: `<div class="luckysheet-toolbar-button-split-left luckysheet-toolbar-button luckysheet-inline-block luckysheet-icon-merge-button"
  28649. data-tips="${toolbar.mergeCell}" id="luckysheet-icon-merge-button" role="button" style="user-select: none;">
  28650. <div class="luckysheet-toolbar-button-outer-box luckysheet-inline-block"
  28651. style="user-select: none;">
  28652. <div class="luckysheet-toolbar-button-inner-box luckysheet-inline-block"
  28653. style="user-select: none;">
  28654. <div class="luckysheet-icon luckysheet-inline-block " style="user-select: none;">
  28655. <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-merge iconfont luckysheet-iconfont-hebing"
  28656. style="user-select: none;">
  28657. </div>
  28658. </div>
  28659. </div>
  28660. </div>
  28661. </div>
  28662. <div class="luckysheet-toolbar-button-split-right luckysheet-toolbar-menu-button luckysheet-inline-block"
  28663. data-tips="${toolbar.chooseMergeType}..." id="luckysheet-icon-merge-menu" role="button" style="user-select: none;">
  28664. <div class="luckysheet-toolbar-menu-button-outer-box luckysheet-inline-block"
  28665. style="user-select: none;">
  28666. <div class="luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block"
  28667. style="user-select: none;">
  28668. <div class="luckysheet-toolbar-menu-button-dropdown luckysheet-inline-block iconfont luckysheet-iconfont-xiayige"
  28669. style="user-select: none;">
  28670. </div>
  28671. </div>
  28672. </div>
  28673. </div>`,
  28674. horizontalAlignMode: `<div class="luckysheet-toolbar-button-split-left luckysheet-toolbar-button luckysheet-inline-block luckysheet-icon-align"
  28675. data-tips="${toolbar.horizontalAlign}" id="luckysheet-icon-align" role="button" style="user-select: none;">
  28676. <div class="luckysheet-toolbar-button-outer-box luckysheet-inline-block"
  28677. style="user-select: none;">
  28678. <div class="luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block"
  28679. style="user-select: none;">
  28680. <div class="luckysheet-toolbar-menu-button-caption luckysheet-inline-block"
  28681. style="user-select: none;">
  28682. <div class="luckysheet-icon luckysheet-inline-block " style="user-select: none;">
  28683. <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-align-left iconfont luckysheet-iconfont-wenbenzuoduiqi"
  28684. style="user-select: none;">
  28685. </div>
  28686. </div>
  28687. </div>
  28688. </div>
  28689. </div>
  28690. </div>
  28691. <div class="luckysheet-toolbar-button-split-right luckysheet-toolbar-menu-button luckysheet-inline-block"
  28692. data-tips="${toolbar.alignment}..." id="luckysheet-icon-align-menu" role="button" style="user-select: none;">
  28693. <div class="luckysheet-toolbar-menu-button-outer-box luckysheet-inline-block"
  28694. style="user-select: none;">
  28695. <div class="luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block"
  28696. style="user-select: none;">
  28697. <div class="luckysheet-toolbar-menu-button-dropdown luckysheet-inline-block iconfont luckysheet-iconfont-xiayige"
  28698. style="user-select: none;">
  28699. </div>
  28700. </div>
  28701. </div>
  28702. </div>`,
  28703. verticalAlignMode: `<div class="luckysheet-toolbar-button-split-left luckysheet-toolbar-button luckysheet-inline-block luckysheet-icon-valign"
  28704. data-tips="${toolbar.verticalAlign}" id="luckysheet-icon-valign" role="button" style="user-select: none;">
  28705. <div class="luckysheet-toolbar-button-outer-box luckysheet-inline-block"
  28706. style="user-select: none;">
  28707. <div class="luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block"
  28708. style="user-select: none;">
  28709. <div class="luckysheet-toolbar-menu-button-caption luckysheet-inline-block"
  28710. style="user-select: none;">
  28711. <div class="luckysheet-icon luckysheet-inline-block " style="user-select: none;">
  28712. <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-valign-bottom iconfont luckysheet-iconfont-dibuduiqi"
  28713. style="user-select: none;">
  28714. </div>
  28715. </div>
  28716. </div>
  28717. </div>
  28718. </div>
  28719. </div>
  28720. <div class="luckysheet-toolbar-button-split-right luckysheet-toolbar-menu-button luckysheet-inline-block"
  28721. data-tips="${toolbar.alignment}..." id="luckysheet-icon-valign-menu" role="button" style="user-select: none;">
  28722. <div class="luckysheet-toolbar-menu-button-outer-box luckysheet-inline-block"
  28723. style="user-select: none;">
  28724. <div class="luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block"
  28725. style="user-select: none;">
  28726. <div class="luckysheet-toolbar-menu-button-dropdown luckysheet-inline-block iconfont luckysheet-iconfont-xiayige"
  28727. style="user-select: none;">
  28728. </div>
  28729. </div>
  28730. </div>
  28731. </div>`,
  28732. textWrapMode: `<div class="luckysheet-toolbar-button-split-left luckysheet-toolbar-button luckysheet-inline-block luckysheet-icon-textwrap"
  28733. data-tips="${toolbar.textWrap}" id="luckysheet-icon-textwrap" role="button" style="user-select: none;">
  28734. <div class="luckysheet-toolbar-button-outer-box luckysheet-inline-block"
  28735. style="user-select: none;">
  28736. <div class="luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block"
  28737. style="user-select: none;">
  28738. <div class="luckysheet-toolbar-menu-button-caption luckysheet-inline-block"
  28739. style="user-select: none;">
  28740. <div class="luckysheet-icon luckysheet-inline-block " style="user-select: none;">
  28741. <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-textwrap-clip iconfont luckysheet-iconfont-jieduan"
  28742. style="user-select: none;">
  28743. </div>
  28744. </div>
  28745. </div>
  28746. </div>
  28747. </div>
  28748. </div>
  28749. <div class="luckysheet-toolbar-button-split-right luckysheet-toolbar-menu-button luckysheet-inline-block"
  28750. data-tips="${toolbar.textWrapMode}..." id="luckysheet-icon-textwrap-menu" role="button" style="user-select: none;">
  28751. <div class="luckysheet-toolbar-menu-button-outer-box luckysheet-inline-block"
  28752. style="user-select: none;">
  28753. <div class="luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block"
  28754. style="user-select: none;">
  28755. <div class="luckysheet-toolbar-menu-button-dropdown luckysheet-inline-block iconfont luckysheet-iconfont-xiayige"
  28756. style="user-select: none;">
  28757. </div>
  28758. </div>
  28759. </div>
  28760. </div>`,
  28761. textRotateMode: `<div class="luckysheet-toolbar-button-split-left luckysheet-toolbar-button luckysheet-inline-block luckysheet-icon-rotation"
  28762. data-tips="${toolbar.textRotate}" id="luckysheet-icon-rotation" role="button" style="user-select: none;">
  28763. <div class="luckysheet-toolbar-button-outer-box luckysheet-inline-block"
  28764. style="user-select: none;">
  28765. <div class="luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block"
  28766. style="user-select: none;">
  28767. <div class="luckysheet-toolbar-menu-button-caption luckysheet-inline-block"
  28768. style="user-select: none;">
  28769. <div class="luckysheet-icon luckysheet-inline-block " style="user-select: none;">
  28770. <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-none iconfont luckysheet-iconfont-wuxuanzhuang"
  28771. style="user-select: none;">
  28772. </div>
  28773. </div>
  28774. </div>
  28775. </div>
  28776. </div>
  28777. </div>
  28778. <div class="luckysheet-toolbar-button-split-right luckysheet-toolbar-menu-button luckysheet-inline-block"
  28779. data-tips="${toolbar.textRotateMode}..." id="luckysheet-icon-rotation-menu" role="button" style="user-select: none;">
  28780. <div class="luckysheet-toolbar-menu-button-outer-box luckysheet-inline-block"
  28781. style="user-select: none;">
  28782. <div class="luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block"
  28783. style="user-select: none;">
  28784. <div class="luckysheet-toolbar-menu-button-dropdown luckysheet-inline-block iconfont luckysheet-iconfont-xiayige"
  28785. style="user-select: none;">
  28786. </div>
  28787. </div>
  28788. </div>
  28789. </div>`,
  28790. image: `<div class="luckysheet-toolbar-button-split-left luckysheet-toolbar-button luckysheet-inline-block"
  28791. data-tips="${toolbar.insertImage}" id="luckysheet-insertImg-btn-title" role="button" style="user-select: none;">
  28792. <div class="luckysheet-toolbar-button-outer-box luckysheet-inline-block"
  28793. style="user-select: none;">
  28794. <div class="luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block"
  28795. style="user-select: none;">
  28796. <div class="luckysheet-toolbar-menu-button-caption luckysheet-inline-block"
  28797. style="user-select: none;">
  28798. <div class="luckysheet-icon luckysheet-inline-block " style="user-select: none;">
  28799. <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-none iconfont luckysheet-iconfont-tupian"
  28800. style="user-select: none;">
  28801. <input id="luckysheet-imgUpload" type="file" accept="image/*" style="display:none;"></input>
  28802. </div>
  28803. </div>
  28804. </div>
  28805. </div>
  28806. </div>
  28807. </div>`,
  28808. link: `<div class="luckysheet-toolbar-button-split-left luckysheet-toolbar-button luckysheet-inline-block"
  28809. data-tips="${toolbar.insertLink}" id="luckysheet-insertLink-btn-title" role="button" style="user-select: none;">
  28810. <div class="luckysheet-toolbar-button-outer-box luckysheet-inline-block"
  28811. style="user-select: none;">
  28812. <div class="luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block"
  28813. style="user-select: none;">
  28814. <div class="luckysheet-toolbar-menu-button-caption luckysheet-inline-block"
  28815. style="user-select: none;">
  28816. <div class="luckysheet-icon luckysheet-inline-block " style="user-select: none;">
  28817. <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-none iconfont luckysheet-iconfont-lianjie"
  28818. style="user-select: none;">
  28819. </div>
  28820. </div>
  28821. </div>
  28822. </div>
  28823. </div>
  28824. </div>`,
  28825. chart: `<div class="luckysheet-toolbar-button-split-left luckysheet-toolbar-button luckysheet-inline-block"
  28826. data-tips="${toolbar.chart}" id="luckysheet-chart-btn-title" role="button" style="user-select: none;">
  28827. <div class="luckysheet-toolbar-button-outer-box luckysheet-inline-block"
  28828. style="user-select: none;">
  28829. <div class="luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block"
  28830. style="user-select: none;">
  28831. <div class="luckysheet-toolbar-menu-button-caption luckysheet-inline-block"
  28832. style="user-select: none;">
  28833. <div class="luckysheet-icon luckysheet-inline-block " style="user-select: none;">
  28834. <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-none iconfont luckysheet-iconfont-tubiao"
  28835. style="user-select: none;">
  28836. </div>
  28837. </div>
  28838. </div>
  28839. </div>
  28840. </div>
  28841. </div>`,
  28842. postil: `<div class="luckysheet-toolbar-select luckysheet-toolbar-menu-button luckysheet-inline-block" data-tips="${toolbar.postil}"
  28843. id="luckysheet-icon-postil" role="button" style="user-select: none;">
  28844. <div class="luckysheet-toolbar-menu-button-outer-box luckysheet-inline-block"
  28845. style="user-select: none;">
  28846. <div class="luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block"
  28847. style="user-select: none;">
  28848. <div class="luckysheet-icon-img-container luckysheet-toolbar-menu-button-caption luckysheet-inline-block iconfont luckysheet-iconfont-zhushi"
  28849. style="user-select: none;">
  28850. </div>
  28851. <div class="luckysheet-toolbar-menu-button-dropdown luckysheet-inline-block iconfont luckysheet-iconfont-xiayige"
  28852. style="user-select: none;">
  28853. </div>
  28854. </div>
  28855. </div>
  28856. </div>`,
  28857. pivotTable: `<div class="luckysheet-toolbar-button-split-left luckysheet-toolbar-button luckysheet-inline-block"
  28858. data-tips="${toolbar.pivotTable}" id="luckysheet-pivot-btn-title" role="button" style="user-select: none;">
  28859. <div class="luckysheet-toolbar-button-outer-box luckysheet-inline-block"
  28860. style="user-select: none;">
  28861. <div class="luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block"
  28862. style="user-select: none;">
  28863. <div class="luckysheet-toolbar-menu-button-caption luckysheet-inline-block"
  28864. style="user-select: none;">
  28865. <div class="luckysheet-icon luckysheet-inline-block " style="user-select: none;">
  28866. <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-none iconfont luckysheet-iconfont-shujutoushi"
  28867. style="user-select: none;">
  28868. </div>
  28869. </div>
  28870. </div>
  28871. </div>
  28872. </div>
  28873. </div>`,
  28874. function: `<div class="luckysheet-toolbar-button-split-left luckysheet-toolbar-button luckysheet-inline-block luckysheet-icon-function"
  28875. data-tips="${toolbar.autoSum}" id="luckysheet-icon-function" role="button" style="user-select: none;">
  28876. <div class="luckysheet-toolbar-button-outer-box luckysheet-inline-block"
  28877. style="user-select: none;">
  28878. <div class="luckysheet-toolbar-button-inner-box luckysheet-inline-block"
  28879. style="user-select: none;">
  28880. <div class="luckysheet-icon luckysheet-inline-block " style="user-select: none;">
  28881. <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-function iconfont luckysheet-iconfont-jisuan"
  28882. style="user-select: none;">
  28883. </div>
  28884. </div>
  28885. <div class="luckysheet-toolbar-menu-button-caption luckysheet-inline-block"
  28886. style="user-select: none;">
  28887. ${toolbar.sum}
  28888. </div>
  28889. </div>
  28890. </div>
  28891. </div>
  28892. <div class="luckysheet-toolbar-button-split-right luckysheet-toolbar-menu-button luckysheet-inline-block"
  28893. data-tips="${toolbar.moreFunction}..." id="luckysheet-icon-function-menu" role="button" style="user-select: none;">
  28894. <div class="luckysheet-toolbar-menu-button-outer-box luckysheet-inline-block"
  28895. style="user-select: none;">
  28896. <div class="luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block"
  28897. style="user-select: none;">
  28898. <div class="luckysheet-toolbar-menu-button-dropdown luckysheet-inline-block iconfont luckysheet-iconfont-xiayige"
  28899. style="user-select: none;">
  28900. </div>
  28901. </div>
  28902. </div>
  28903. </div>`,
  28904. frozenMode: `<div class="luckysheet-toolbar-button-split-left luckysheet-toolbar-button luckysheet-inline-block luckysheet-freezen-btn-horizontal"
  28905. data-tips="${toolbar.freezeTopRow}" id="luckysheet-freezen-btn-horizontal" role="button" style="user-select: none;">
  28906. <div class="luckysheet-toolbar-button-outer-box luckysheet-inline-block"
  28907. style="user-select: none;">
  28908. <div class="luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block"
  28909. style="user-select: none;">
  28910. <div class="luckysheet-toolbar-menu-button-caption luckysheet-inline-block"
  28911. style="user-select: none;">
  28912. <div class="luckysheet-icon luckysheet-inline-block " style="user-select: none;">
  28913. <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-none iconfont luckysheet-iconfont-dongjie1"
  28914. style="user-select: none;">
  28915. </div>
  28916. </div>
  28917. </div>
  28918. </div>
  28919. </div>
  28920. </div>
  28921. <div class="luckysheet-toolbar-button-split-right luckysheet-toolbar-menu-button luckysheet-inline-block"
  28922. data-tips="${toolbar.moreOptions}..." id="luckysheet-icon-freezen-menu" role="button" style="user-select: none;">
  28923. <div class="luckysheet-toolbar-menu-button-outer-box luckysheet-inline-block"
  28924. style="user-select: none;">
  28925. <div class="luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block"
  28926. style="user-select: none;">
  28927. <div class="luckysheet-toolbar-menu-button-dropdown luckysheet-inline-block iconfont luckysheet-iconfont-xiayige"
  28928. style="user-select: none;">
  28929. </div>
  28930. </div>
  28931. </div>
  28932. </div>`,
  28933. sortAndFilter: `<div class="luckysheet-toolbar-select luckysheet-toolbar-menu-button luckysheet-inline-block" data-tips="${toolbar.sortAndFilter}"
  28934. id="luckysheet-icon-autofilter" role="button" style="user-select: none;">
  28935. <div class="luckysheet-toolbar-menu-button-outer-box luckysheet-inline-block"
  28936. style="user-select: none;">
  28937. <div class="luckysheet-toolbar-button-inner-box luckysheet-inline-block"
  28938. style="user-select: none;">
  28939. <div class="luckysheet-icon luckysheet-inline-block " style="user-select: none;">
  28940. <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-autofilter iconfont luckysheet-iconfont-shaixuan"
  28941. style="user-select: none;">
  28942. </div>
  28943. </div>
  28944. <div class="luckysheet-toolbar-menu-button-dropdown luckysheet-inline-block iconfont luckysheet-iconfont-xiayige"
  28945. style="user-select: none;margin-left: 0px;margin-right: 4px;">
  28946. </div>
  28947. </div>
  28948. </div>
  28949. </div>`,
  28950. conditionalFormat: `<div class="luckysheet-toolbar-select luckysheet-toolbar-menu-button luckysheet-inline-block" data-tips="${toolbar.conditionalFormat}"
  28951. id="luckysheet-icon-conditionformat" role="button" style="user-select: none;">
  28952. <div class="luckysheet-toolbar-menu-button-outer-box luckysheet-inline-block"
  28953. style="user-select: none;">
  28954. <div class="luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block"
  28955. style="user-select: none;">
  28956. <div class="luckysheet-icon luckysheet-inline-block " style="user-select: none;">
  28957. <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-autofilter iconfont luckysheet-iconfont-geshitiaojian"
  28958. style="user-select: none;">
  28959. </div>
  28960. </div>
  28961. <div class="luckysheet-toolbar-menu-button-dropdown luckysheet-inline-block iconfont luckysheet-iconfont-xiayige"
  28962. style="user-select: none;">
  28963. </div>
  28964. </div>
  28965. </div>
  28966. </div>`,
  28967. dataVerification: `<div class="luckysheet-toolbar-button-split-left luckysheet-toolbar-button luckysheet-inline-block"
  28968. data-tips="${toolbar.dataVerification}" id="luckysheet-dataVerification-btn-title" role="button" style="user-select: none;">
  28969. <div class="luckysheet-toolbar-button-outer-box luckysheet-inline-block"
  28970. style="user-select: none;">
  28971. <div class="luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block"
  28972. style="user-select: none;">
  28973. <div class="luckysheet-toolbar-menu-button-caption luckysheet-inline-block"
  28974. style="user-select: none;">
  28975. <div class="luckysheet-icon luckysheet-inline-block " style="user-select: none;">
  28976. <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-none iconfont luckysheet-iconfont-shujuyanzheng"
  28977. style="user-select: none;">
  28978. </div>
  28979. </div>
  28980. </div>
  28981. </div>
  28982. </div>
  28983. </div>`,
  28984. splitColumn: `<div class="luckysheet-toolbar-button-split-left luckysheet-toolbar-button luckysheet-inline-block"
  28985. data-tips="${toolbar.splitColumn}" id="luckysheet-splitColumn-btn-title" role="button" style="user-select: none;">
  28986. <div class="luckysheet-toolbar-button-outer-box luckysheet-inline-block"
  28987. style="user-select: none;">
  28988. <div class="luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block"
  28989. style="user-select: none;">
  28990. <div class="luckysheet-toolbar-menu-button-caption luckysheet-inline-block"
  28991. style="user-select: none;">
  28992. <div class="luckysheet-icon luckysheet-inline-block " style="user-select: none;">
  28993. <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-none iconfont luckysheet-iconfont-wenbenfenge"
  28994. style="user-select: none;">
  28995. </div>
  28996. </div>
  28997. </div>
  28998. </div>
  28999. </div>
  29000. </div>`,
  29001. screenshot: `<div class="luckysheet-toolbar-button-split-left luckysheet-toolbar-button luckysheet-inline-block"
  29002. data-tips="${toolbar.screenshot}" id="luckysheet-chart-btn-screenshot" role="button" style="user-select: none;">
  29003. <div class="luckysheet-toolbar-button-outer-box luckysheet-inline-block"
  29004. style="user-select: none;">
  29005. <div class="luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block"
  29006. style="user-select: none;">
  29007. <div class="luckysheet-toolbar-menu-button-caption luckysheet-inline-block"
  29008. style="user-select: none;">
  29009. <div class="luckysheet-icon luckysheet-inline-block " style="user-select: none;">
  29010. <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-none iconfont luckysheet-iconfont-jieping"
  29011. style="user-select: none;">
  29012. </div>
  29013. </div>
  29014. </div>
  29015. </div>
  29016. </div>
  29017. </div>`,
  29018. findAndReplace: `<div class="luckysheet-toolbar-select luckysheet-toolbar-menu-button luckysheet-inline-block" data-tips="${toolbar.findAndReplace}"
  29019. id="luckysheet-icon-seachmore" role="button" style="user-select: none;">
  29020. <div class="luckysheet-toolbar-menu-button-outer-box luckysheet-inline-block"
  29021. style="user-select: none;">
  29022. <div class="luckysheet-toolbar-button-inner-box luckysheet-inline-block"
  29023. style="user-select: none;">
  29024. <div class="luckysheet-icon luckysheet-inline-block " style="user-select: none;">
  29025. <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-autofilter iconfont luckysheet-iconfont-sousuo"
  29026. style="user-select: none;">
  29027. </div>
  29028. </div>
  29029. <div class="luckysheet-toolbar-menu-button-dropdown luckysheet-inline-block iconfont luckysheet-iconfont-xiayige"
  29030. style="user-select: none;margin-left: 0px;margin-right: 4px;">
  29031. </div>
  29032. </div>
  29033. </div>
  29034. </div>`,
  29035. protection: `<div class="luckysheet-toolbar-button-split-left luckysheet-toolbar-button luckysheet-inline-block"
  29036. data-tips="${toolbar.protection}" id="luckysheet-icon-protection" role="button" style="user-select: none;">
  29037. <div class="luckysheet-toolbar-button-outer-box luckysheet-inline-block"
  29038. style="user-select: none;">
  29039. <div class="luckysheet-toolbar-menu-button-inner-box luckysheet-inline-block"
  29040. style="user-select: none;">
  29041. <div class="luckysheet-toolbar-menu-button-caption luckysheet-inline-block"
  29042. style="user-select: none;">
  29043. <div class="luckysheet-icon luckysheet-inline-block " style="user-select: none;">
  29044. <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-none iconfont luckysheet-iconfont-biaogesuoding"
  29045. style="user-select: none;">
  29046. </div>
  29047. </div>
  29048. </div>
  29049. </div>
  29050. </div>
  29051. </div>`,
  29052. print: `<div class="luckysheet-toolbar-select luckysheet-toolbar-menu-button luckysheet-inline-block" data-tips="${toolbar.print}"
  29053. id="luckysheet-icon-print" role="button" style="user-select: none;">
  29054. <div class="luckysheet-toolbar-menu-button-outer-box luckysheet-inline-block"
  29055. style="user-select: none;">
  29056. <div class="luckysheet-toolbar-button-inner-box luckysheet-inline-block"
  29057. style="user-select: none;">
  29058. <div class="luckysheet-icon luckysheet-inline-block " style="user-select: none;">
  29059. <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-autofilter iconfont luckysheet-iconfont-dayin"
  29060. style="user-select: none;">
  29061. </div>
  29062. </div>
  29063. <div class="luckysheet-toolbar-menu-button-dropdown luckysheet-inline-block iconfont luckysheet-iconfont-xiayige"
  29064. style="user-select: none;margin-left: 0px;margin-right: 4px;">
  29065. </div>
  29066. </div>
  29067. </div>
  29068. </div>`
  29069. };
  29070. const showtoolbar = luckysheetConfigsetting_default.showtoolbar;
  29071. const showtoolbarConfig = luckysheetConfigsetting_default.showtoolbarConfig;
  29072. const buttonHTML = ['<div class="luckysheet-toolbar-left-theme"></div>'];
  29073. if (getObjType(showtoolbarConfig) === "array") {
  29074. if (!showtoolbar) {
  29075. return "";
  29076. }
  29077. let i2 = 0;
  29078. showtoolbarConfig.forEach(function(key, i3) {
  29079. if (key === "|") {
  29080. const nameKeys = showtoolbarConfig[i3 - 1];
  29081. if (nameKeys !== "|") {
  29082. buttonHTML.push(`<div id="toolbar-separator-${camel2split(nameKeys)}" class="luckysheet-toolbar-separator luckysheet-inline-block" style="user-select: none;"></div>`);
  29083. }
  29084. } else {
  29085. buttonHTML.push(htmlMap[key]);
  29086. }
  29087. });
  29088. return buttonHTML.join("");
  29089. }
  29090. const config = defaultToolbar.reduce(function(total, curr) {
  29091. if (curr !== "|") {
  29092. total[curr] = true;
  29093. }
  29094. return total;
  29095. }, {});
  29096. if (!showtoolbar) {
  29097. for (let s in config) {
  29098. config[s] = false;
  29099. }
  29100. }
  29101. if (JSON.stringify(showtoolbarConfig) !== "{}") {
  29102. if (showtoolbarConfig.hasOwnProperty("undoRedo")) {
  29103. config.undo = config.redo = showtoolbarConfig.undoRedo;
  29104. }
  29105. Object.assign(config, showtoolbarConfig);
  29106. }
  29107. for (let i2 = 0; i2 < defaultToolbar.length; i2++) {
  29108. let key = defaultToolbar[i2];
  29109. if (!config[key] && key !== "|") {
  29110. if (defaultToolbar[i2 + 1] === "|") {
  29111. i2++;
  29112. }
  29113. continue;
  29114. }
  29115. if (key === "|") {
  29116. const nameKeys = defaultToolbar[i2 - 1];
  29117. if (nameKeys !== "|") {
  29118. buttonHTML.push(`<div id="toolbar-separator-${camel2split(nameKeys)}" class="luckysheet-toolbar-separator luckysheet-inline-block" style="user-select: none;"></div>`);
  29119. }
  29120. } else {
  29121. buttonHTML.push(htmlMap[key]);
  29122. }
  29123. }
  29124. return buttonHTML.join("");
  29125. }
  29126. var defaultToolbar, toolbarIdMap;
  29127. var init_toolbar = __esm({
  29128. "src/controllers/toolbar.js"() {
  29129. init_locale();
  29130. init_luckysheetConfigsetting();
  29131. init_util();
  29132. defaultToolbar = [
  29133. "undo",
  29134. "redo",
  29135. "paintFormat",
  29136. "|",
  29137. "currencyFormat",
  29138. "percentageFormat",
  29139. "numberIncrease",
  29140. "numberDecrease",
  29141. "moreFormats",
  29142. "|",
  29143. "font",
  29144. "|",
  29145. "fontSize",
  29146. "|",
  29147. "bold",
  29148. "italic",
  29149. "strikethrough",
  29150. "underline",
  29151. "textColor",
  29152. "|",
  29153. "fillColor",
  29154. "border",
  29155. "mergeCell",
  29156. "|",
  29157. "horizontalAlignMode",
  29158. "verticalAlignMode",
  29159. "textWrapMode",
  29160. "textRotateMode",
  29161. "|",
  29162. "image",
  29163. "link",
  29164. "chart",
  29165. "postil",
  29166. "pivotTable",
  29167. "|",
  29168. "function",
  29169. "frozenMode",
  29170. "sortAndFilter",
  29171. "conditionalFormat",
  29172. "dataVerification",
  29173. "splitColumn",
  29174. "screenshot",
  29175. "findAndReplace",
  29176. "protection",
  29177. "print"
  29178. ];
  29179. toolbarIdMap = {
  29180. undo: "#luckysheet-icon-undo",
  29181. redo: "#luckysheet-icon-redo",
  29182. paintFormat: ["#luckysheet-icon-paintformat"],
  29183. currencyFormat: "#luckysheet-icon-currency",
  29184. percentageFormat: "#luckysheet-icon-percent",
  29185. numberDecrease: "#luckysheet-icon-fmt-decimal-decrease",
  29186. numberIncrease: "#luckysheet-icon-fmt-decimal-increase",
  29187. moreFormats: "#luckysheet-icon-fmt-other",
  29188. font: "#luckysheet-icon-font-family",
  29189. fontSize: "#luckysheet-icon-font-size",
  29190. bold: "#luckysheet-icon-bold",
  29191. italic: "#luckysheet-icon-italic",
  29192. strikethrough: "#luckysheet-icon-strikethrough",
  29193. underline: "#luckysheet-icon-underline",
  29194. textColor: ["#luckysheet-icon-text-color", "#luckysheet-icon-text-color-menu"],
  29195. fillColor: ["#luckysheet-icon-cell-color", "#luckysheet-icon-cell-color-menu"],
  29196. border: ["#luckysheet-icon-border-all", "#luckysheet-icon-border-menu"],
  29197. mergeCell: ["#luckysheet-icon-merge-button", "#luckysheet-icon-merge-menu"],
  29198. horizontalAlignMode: ["#luckysheet-icon-align", "#luckysheet-icon-align-menu"],
  29199. verticalAlignMode: ["#luckysheet-icon-valign", "#luckysheet-icon-valign-menu"],
  29200. textWrapMode: ["#luckysheet-icon-textwrap", "#luckysheet-icon-textwrap-menu"],
  29201. textRotateMode: ["#luckysheet-icon-rotation", "#luckysheet-icon-rotation-menu"],
  29202. image: "#luckysheet-insertImg-btn-title",
  29203. link: "#luckysheet-insertLink-btn-title",
  29204. chart: "#luckysheet-chart-btn-title",
  29205. postil: "#luckysheet-icon-postil",
  29206. pivotTable: ["#luckysheet-pivot-btn-title"],
  29207. function: ["#luckysheet-icon-function", "#luckysheet-icon-function-menu"],
  29208. frozenMode: ["#luckysheet-freezen-btn-horizontal", "#luckysheet-icon-freezen-menu"],
  29209. sortAndFilter: "#luckysheet-icon-autofilter",
  29210. conditionalFormat: "#luckysheet-icon-conditionformat",
  29211. dataVerification: "#luckysheet-dataVerification-btn-title",
  29212. splitColumn: "#luckysheet-splitColumn-btn-title",
  29213. screenshot: "#luckysheet-chart-btn-screenshot",
  29214. findAndReplace: "#luckysheet-icon-seachmore",
  29215. protection: "#luckysheet-icon-protection",
  29216. print: "#luckysheet-icon-print"
  29217. };
  29218. }
  29219. });
  29220. // src/controllers/constant.js
  29221. function rightclickHTML() {
  29222. const _locale = locale_default();
  29223. const rightclick = _locale.rightclick;
  29224. const toolbar = _locale.toolbar;
  29225. const config = customCellRightClickConfig();
  29226. let handleincellMenuseparator = true;
  29227. if (!config.insertRow && !config.insertColumn && !config.deleteRow && !config.deleteColumn && !config.deleteCell) {
  29228. handleincellMenuseparator = false;
  29229. }
  29230. let dataMenuseparator = true;
  29231. if (!config.clear && !config.matrix && !config.sort && !config.filter && !config.chart && !config.image && !config.link && !config.data && !config.cellFormat) {
  29232. dataMenuseparator = false;
  29233. }
  29234. const customsButtons = (config.customs || []).map((item2, index2) => `
  29235. <div data-index="${index2}" class="luckysheetColsRowsHandleAdd_custom luckysheet-cols-menuitem luckysheet-mousedown-cancel">
  29236. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">
  29237. ${item2.title}
  29238. </div>
  29239. </div>`).join("");
  29240. const rightclickContainer = `<div id="luckysheet-rightclick-menu" class="luckysheet-cols-menu luckysheet-rightgclick-menu luckysheet-mousedown-cancel">
  29241. <div id="luckysheet-copy-btn" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel luckysheet-copy-btn" data-clipboard-action="copy" data-clipboard-target="#luckysheet-copy-content" style="display:${config.copy ? "block" : "none"};">
  29242. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${rightclick.copy}</div>
  29243. </div>
  29244. <div id="luckysheetcopyfor" class="luckysheet-cols-menuitem luckysheet-cols-submenu luckysheet-mousedown-cancel" style="display:${config.copyAs ? "block" : "none"};">
  29245. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">
  29246. ${rightclick.copyAs}<span class="luckysheet-submenu-arrow iconfont luckysheet-iconfont-youjiantou" style="user-select: none;"></span>
  29247. </div>
  29248. </div>
  29249. <div id="luckysheet-copy-paste" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="display:${config.paste ? "block" : "none"};">
  29250. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${rightclick.paste}</div>
  29251. </div>
  29252. <div id="luckysheet-cols-rows-handleincell">
  29253. <div class="luckysheet-menuseparator luckysheet-mousedown-cancel" role="separator" style="display:${handleincellMenuseparator ? "block" : "none"};"></div>
  29254. <div id="luckysheetColsRowsHandleAdd_row" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="display:${config.insertRow ? "block" : "none"};">
  29255. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">
  29256. ${rightclick.insert}${rightclick.row}<span class="luckysheet-submenu-arrow" style="user-select: none;"></span>
  29257. </div>
  29258. </div>
  29259. <div id="luckysheetColsRowsHandleAdd_column" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="display:${config.insertColumn ? "block" : "none"};">
  29260. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">
  29261. ${rightclick.insert}${rightclick.column}<span class="luckysheet-submenu-arrow" style="user-select: none;"></span>
  29262. </div>
  29263. </div>
  29264. <div id="luckysheet-delRows" class="luckysheet-cols-menuitem luckysheet-cols-submenu luckysheet-mousedown-cancel" style="display:${config.deleteRow ? "block" : "none"};">
  29265. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">
  29266. ${rightclick.deleteSelected}${rightclick.row}<span class="luckysheet-submenu-arrow" style="user-select: none;"></span>
  29267. </div>
  29268. </div>
  29269. <div id="luckysheet-delCols" class="luckysheet-cols-menuitem luckysheet-cols-submenu luckysheet-mousedown-cancel" style="display:${config.deleteColumn ? "block" : "none"};">
  29270. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">
  29271. ${rightclick.deleteSelected}${rightclick.column}<span class="luckysheet-submenu-arrow" style="user-select: none;"></span>
  29272. </div>
  29273. </div>
  29274. <!-- cell right click remove hide button
  29275. <div id="luckysheetColsRowsHandleHid" class="luckysheet-cols-menuitem luckysheet-cols-submenu luckysheet-mousedown-cancel">
  29276. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">
  29277. ${rightclick.hide}<span class="luckysheet-submenu-arrow iconfont luckysheet-iconfont-youjiantou" style="user-select: none;"></span>
  29278. </div>
  29279. </div>
  29280. -->
  29281. <div id="luckysheetCellsHandleDel" class="luckysheet-cols-menuitem luckysheet-cols-submenu luckysheet-mousedown-cancel" style="display:${config.deleteCell ? "block" : "none"};">
  29282. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">
  29283. ${rightclick.deleteCell}<span class="luckysheet-submenu-arrow iconfont luckysheet-iconfont-youjiantou" style="user-select: none;"></span>
  29284. </div>
  29285. </div>
  29286. </div>
  29287. <div id="luckysheet-cols-rows-add">
  29288. <div class="luckysheet-menuseparator luckysheet-mousedown-cancel" role="separator"></div>
  29289. <div id="luckysheet-top-left-add-selected" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel">
  29290. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">
  29291. ${rightclick.to}
  29292. <span class="luckysheet-cols-rows-shift-left">${rightclick.left}</span>
  29293. ${rightclick.add}
  29294. <input type="text" class="luckysheet-mousedown-cancel" placeholder="${rightclick.number}" value="1" style="width:40px;height:20px;box-sizing:border-box;text-align:center;margin-left:5px;"/>
  29295. <span class="luckysheet-cols-rows-shift-word luckysheet-mousedown-cancel">${rightclick.column}</span>
  29296. </div>
  29297. </div>
  29298. <div id="luckysheet-bottom-right-add-selected" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel">
  29299. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">
  29300. ${rightclick.to}
  29301. <span class="luckysheet-cols-rows-shift-right">${rightclick.right}</span>
  29302. ${rightclick.add}
  29303. <input type="text" class="luckysheet-mousedown-cancel" placeholder="${rightclick.number}" value="1" style="width:40px;height:20px;box-sizing:border-box;text-align: center;margin-left:5px;"/>
  29304. <span class="luckysheet-cols-rows-shift-word luckysheet-mousedown-cancel">${rightclick.column}</span>
  29305. </div>
  29306. </div>
  29307. <div id="luckysheet-del-selected" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel">
  29308. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">
  29309. ${rightclick.deleteSelected}
  29310. <span class="luckysheet-cols-rows-shift-word luckysheet-mousedown-cancel">${rightclick.column}</span>
  29311. </div>
  29312. </div>
  29313. <div id="luckysheet-hide-selected" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel">
  29314. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">
  29315. ${rightclick.hideSelected}
  29316. <span class="luckysheet-cols-rows-shift-word luckysheet-mousedown-cancel">${rightclick.column}</span>
  29317. </div>
  29318. </div>
  29319. <div id="luckysheet-show-selected" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel">
  29320. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">
  29321. ${rightclick.showHide}
  29322. <span class="luckysheet-cols-rows-shift-word luckysheet-mousedown-cancel">${rightclick.column}</span>
  29323. </div>
  29324. </div>
  29325. <div id="luckysheet-column-row-width-selected" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel">
  29326. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">
  29327. <span class="luckysheet-cols-rows-shift-word luckysheet-mousedown-cancel">${rightclick.column}</span>
  29328. <span class="luckysheet-cols-rows-shift-size luckysheet-mousedown-cancel">${rightclick.width}</span>
  29329. <input type="number" class="luckysheet-mousedown-cancel rcsize" min="0" max="255" placeholder="${rightclick.number}" value="" style="width:50px;height:20px;box-sizing:border-box;text-align: center;margin-left:5px;">
  29330. px
  29331. </div>
  29332. </div>
  29333. </div>
  29334. <div id="luckysheet-cols-rows-shift">
  29335. <div class="luckysheet-menuseparator luckysheet-mousedown-cancel" role="separator" style="display:${config.sort ? "block" : "none"};"></div>
  29336. <div id="luckysheetorderbyasc" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="display:${config.sort ? "block" : "none"};">
  29337. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${rightclick.orderAZ}</div>
  29338. </div>
  29339. <div id="luckysheetorderbydesc" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="display:${config.sort ? "block" : "none"};">
  29340. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${rightclick.orderZA}</div>
  29341. </div>
  29342. </div>
  29343. <div id="luckysheet-cols-rows-data">
  29344. <div class="luckysheet-menuseparator luckysheet-mousedown-cancel" role="separator" style="display:${dataMenuseparator ? "block" : "none"};"></div>
  29345. <div id="luckysheet-delete-text" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="display:${config.clear ? "block" : "none"};">
  29346. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${rightclick.clearContent}</div>
  29347. </div>
  29348. <div id="luckysheetmatrix" class="luckysheet-cols-menuitem luckysheet-cols-submenu luckysheet-mousedown-cancel" style="display:${config.matrix ? "block" : "none"};">
  29349. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">
  29350. ${rightclick.matrix}<span class="luckysheet-submenu-arrow iconfont luckysheet-iconfont-youjiantou" style="user-select: none;"></span>
  29351. </div>
  29352. </div>
  29353. <div id="luckysheetorderby" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="display:${config.sort ? "block" : "none"};">
  29354. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${rightclick.sortSelection}</div>
  29355. </div>
  29356. <div id="luckysheetfilter" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="display:${config.filter ? "block" : "none"};">
  29357. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${rightclick.filterSelection}</div>
  29358. </div>
  29359. <div id="luckysheetdatavisual" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="display:${config.chart ? "block" : "none"};">
  29360. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${rightclick.chartGeneration}</div>
  29361. </div>
  29362. <div id="luckysheetInsertImage" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="display:${config.image ? "block" : "none"};">
  29363. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${toolbar.insertImage}</div>
  29364. </div>
  29365. <div id="luckysheetInsertLink" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="display:${config.link ? "block" : "none"};">
  29366. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${toolbar.insertLink}</div>
  29367. </div>
  29368. <div id="luckysheetDataVerification" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="display:${config.data ? "block" : "none"};">
  29369. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${toolbar.dataVerification}</div>
  29370. </div>
  29371. <div id="luckysheetCellFormatRightClickMenu" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="display:${config.cellFormat ? "block" : "none"};">
  29372. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${toolbar.cellFormat}</div>
  29373. </div>
  29374. ${customsButtons}
  29375. </div>
  29376. </div>
  29377. <div id="luckysheetcopyfor_sub" class="luckysheet-cols-menu luckysheet-rightgclick-menu luckysheet-rightgclick-menu-sub luckysheet-mousedown-cancel">
  29378. <div id="luckysheet-copy-json-head" data-clipboard-action="copy" data-clipboard-target="#luckysheet-copy-content" class="luckysheet-cols-menuitem luckysheet-copy-btn luckysheet-mousedown-cancel">
  29379. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">Json ${rightclick.firstLineTitle}</div>
  29380. </div>
  29381. <div id="luckysheet-copy-json-nohead" data-clipboard-action="copy" data-clipboard-target="#luckysheet-copy-content" class="luckysheet-cols-menuitem luckysheet-copy-btn luckysheet-mousedown-cancel">
  29382. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">Json ${rightclick.untitled}</div>
  29383. </div>
  29384. <div id="luckysheet-copy-array1" data-clipboard-action="copy" data-clipboard-target="#luckysheet-copy-content" class="luckysheet-cols-menuitem luckysheet-copy-btn luckysheet-mousedown-cancel">
  29385. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${rightclick.array1}</div>
  29386. </div>
  29387. <div id="luckysheet-copy-array2" data-clipboard-action="copy" data-clipboard-target="#luckysheet-copy-content" class="luckysheet-cols-menuitem luckysheet-copy-btn luckysheet-mousedown-cancel">
  29388. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${rightclick.array2}</div>
  29389. </div>
  29390. <div id="luckysheet-copy-arraymore-confirm" data-clipboard-action="copy" data-clipboard-target="#luckysheet-copy-content" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel">
  29391. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">
  29392. <span class="luckysheet-mousedown-cancel">${rightclick.array3}</span>
  29393. <input type="number" id="luckysheet-copy-arraymore-row" min="1" class="luckysheet-mousedown-cancel" placeholder="${rightclick.row}" style="width:40px;height:20px;box-sizing:border-box;text-align: center;"/>
  29394. \xD7
  29395. <input type="number" id="luckysheet-copy-arraymore-col" min="1" class="luckysheet-mousedown-cancel" placeholder="${rightclick.column}" style="width:40px;height:20px;box-sizing:border-box;text-align: center;"/>
  29396. </div>
  29397. </div>
  29398. <div class="luckysheet-menuseparator luckysheet-mousedown-cancel" role="separator"></div>
  29399. <div id="luckysheet-copy-diagonal" data-clipboard-action="copy" data-clipboard-target="#luckysheet-copy-content" class="luckysheet-cols-menuitem luckysheet-copy-btn luckysheet-mousedown-cancel">
  29400. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${rightclick.diagonal}</div>
  29401. </div>
  29402. <div id="luckysheet-copy-antidiagonal" data-clipboard-action="copy" data-clipboard-target="#luckysheet-copy-content" class="luckysheet-cols-menuitem luckysheet-copy-btn luckysheet-mousedown-cancel">
  29403. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${rightclick.antiDiagonal}</div>
  29404. </div>
  29405. <div id="luckysheet-copy-diagonaloffset" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel">
  29406. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">
  29407. ${rightclick.diagonalOffset}
  29408. <input type="number" id="luckysheet-copy-diagonaloffset-value" class="luckysheet-mousedown-cancel" placeholder="${rightclick.offset}" value="1" style="width:40px;height:20px;box-sizing:border-box;text-align: center;margin-left:5px;"/>
  29409. ${rightclick.column}
  29410. </div>
  29411. </div>
  29412. <div id="luckysheet-copy-boolvalue" data-clipboard-action="copy" data-clipboard-target="#luckysheet-copy-content" class="luckysheet-cols-menuitem luckysheet-copy-btn luckysheet-mousedown-cancel">
  29413. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${rightclick.boolean}</div>
  29414. </div>
  29415. </div>
  29416. <!-- Revision: modeled on google sheet
  29417. <div id="luckysheetColsRowsHandleAdd_sub" class="luckysheet-cols-menu luckysheet-rightgclick-menu luckysheet-rightgclick-menu-sub luckysheet-mousedown-cancel">
  29418. <div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel">
  29419. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">
  29420. ${rightclick.to}${rightclick.top}${rightclick.add}
  29421. <input type="text" class="luckysheet-mousedown-cancel" placeholder="${rightclick.number}" value="1" style="width:40px;height:20px;box-sizing:border-box;text-align: center;margin-left:5px;"/>
  29422. <span class="luckysheet-mousedown-cancel">${rightclick.row}</span>
  29423. </div>
  29424. </div>
  29425. <div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel">
  29426. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">
  29427. ${rightclick.to}${rightclick.bottom}${rightclick.add}
  29428. <input type="text" class="luckysheet-mousedown-cancel" placeholder="${rightclick.number}" value="1" style="width:40px;height:20px;box-sizing:border-box;text-align: center;margin-left:5px;"/>
  29429. <span class="luckysheet-mousedown-cancel">${rightclick.row}</span>
  29430. </div>
  29431. </div>
  29432. <div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel">
  29433. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">
  29434. ${rightclick.to}${rightclick.left}${rightclick.add}
  29435. <input type="text" class="luckysheet-mousedown-cancel" placeholder="${rightclick.number}" value="1" style="width:40px;height:20px;box-sizing:border-box;text-align: center;margin-left:5px;"/>
  29436. <span class="luckysheet-mousedown-cancel">${rightclick.column}</span>
  29437. </div>
  29438. </div>
  29439. <div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel">
  29440. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">
  29441. ${rightclick.to}${rightclick.right}${rightclick.add}
  29442. <input type="text" class="luckysheet-mousedown-cancel" placeholder="${rightclick.number}" value="1" style="width:40px;height:20px;box-sizing:border-box;text-align: center;margin-left:5px;"/>
  29443. <span class="luckysheet-mousedown-cancel">${rightclick.column}</span>
  29444. </div>
  29445. </div>
  29446. </div>
  29447. -->
  29448. <!-- delete row or column
  29449. <div id="luckysheetColsRowsHandleDel_sub" class="luckysheet-cols-menu luckysheet-rightgclick-menu luckysheet-rightgclick-menu-sub luckysheet-mousedown-cancel">
  29450. <div id="luckysheet-delRows" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel">
  29451. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">
  29452. ${rightclick.deleteSelected}${rightclick.row}
  29453. </div>
  29454. </div>
  29455. <div id="luckysheet-delCols" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel">
  29456. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">
  29457. ${rightclick.deleteSelected}${rightclick.column}
  29458. </div>
  29459. </div>
  29460. </div>
  29461. -->
  29462. <!--
  29463. <div id="luckysheetColsRowsHandleHid_sub" class="luckysheet-cols-menu luckysheet-rightgclick-menu luckysheet-rightgclick-menu-sub luckysheet-mousedown-cancel">
  29464. <div id="luckysheet-hidRows" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel">
  29465. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">
  29466. ${rightclick.hideSelected}${rightclick.row}
  29467. </div>
  29468. </div>
  29469. <div id="luckysheet-showHidRows" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel">
  29470. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">
  29471. ${rightclick.showHide}${rightclick.row}
  29472. </div>
  29473. </div>
  29474. <div id="luckysheet-hidCols" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel">
  29475. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">
  29476. ${rightclick.hideSelected}${rightclick.column}
  29477. </div>
  29478. </div>
  29479. <div id="luckysheet-showHidCols" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel">
  29480. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">
  29481. ${rightclick.showHide}${rightclick.column}
  29482. </div>
  29483. </div>
  29484. </div>
  29485. -->
  29486. <div id="luckysheetCellsHandleDel_sub" class="luckysheet-cols-menu luckysheet-rightgclick-menu luckysheet-rightgclick-menu-sub luckysheet-mousedown-cancel">
  29487. <div id="luckysheet-delCellsMoveLeft" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel">
  29488. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">
  29489. ${rightclick.moveLeft}
  29490. </div>
  29491. </div>
  29492. <div id="luckysheet-delCellsMoveUp" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel">
  29493. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">
  29494. ${rightclick.moveUp}
  29495. </div>
  29496. </div>
  29497. </div>
  29498. <div id="luckysheetmatrix_sub" class="luckysheet-cols-menu luckysheet-rightgclick-menu luckysheet-rightgclick-menu-sub luckysheet-mousedown-cancel">
  29499. <div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel">
  29500. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">
  29501. ${rightclick.flip}
  29502. <button id="luckysheet-matrix-turn-up" class="btn btn-primary luckysheet-mousedown-cancel" style="margin-left:5px;padding:2px 3px;line-height:12px;font-size:12px;">${rightclick.upAndDown}</button>
  29503. <button id="luckysheet-matrix-turn-left" class="btn btn-primary luckysheet-mousedown-cancel" style="margin-left:5px;padding:2px 3px;line-height:12px;font-size:12px;">${rightclick.leftAndRight}</button>
  29504. </div>
  29505. </div>
  29506. <div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel">
  29507. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">
  29508. ${rightclick.flip}
  29509. <button id="luckysheet-matrix-turn-cw" class="btn btn-primary luckysheet-mousedown-cancel" style="margin-left:5px;padding:2px 3px;line-height:12px;font-size:12px;">${rightclick.clockwise}</button>
  29510. <button id="luckysheet-matrix-turn-anticw" class="btn btn-primary luckysheet-mousedown-cancel" style="margin-left:5px;padding:2px 3px;line-height:12px;font-size:12px;">${rightclick.counterclockwise}</button>
  29511. </div>
  29512. </div>
  29513. <div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel">
  29514. <div id="luckysheet-matrix-turn-trans" class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${rightclick.transpose}</div>
  29515. </div>
  29516. <div class="luckysheet-menuseparator luckysheet-mousedown-cancel" role="separator"></div>
  29517. <div id="luckysheet-matrix-cal-confirm" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel">
  29518. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">
  29519. <div class="luckysheet-mousedown-cancel">${rightclick.matrixCalculation}</div>
  29520. <div class="luckysheet-mousedown-cancel">
  29521. <select id="luckysheet-matrix-cal-type" class="luckysheet-mousedown-cancel" style="height:20px;">
  29522. <option value="plus">${rightclick.plus}</option>
  29523. <option value="minus">${rightclick.minus}</option>
  29524. <option value="multiply">${rightclick.multiply}</option>
  29525. <option value="divided">${rightclick.divided}</option>
  29526. <option value="power">${rightclick.power}</option>
  29527. <option value="root">${rightclick.root}</option>
  29528. <option value="log">${rightclick.log}</option>
  29529. </select>
  29530. <input type="number" id="luckysheet-matrix-cal-value" class="luckysheet-mousedown-cancel" placeholder="${rightclick.number}" value="2" style="width:40px;height:20px;box-sizing:border-box;text-align: center;margin-left:5px;"/>
  29531. </div>
  29532. </div>
  29533. </div>
  29534. <div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel">
  29535. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">
  29536. ${rightclick.delete0}
  29537. <button id="luckysheet-matrix-delezero-row" class="btn btn-primary luckysheet-mousedown-cancel" style="margin-left:5px;padding:2px 3px;line-height:12px;font-size:12px;">${rightclick.byRow}</button>
  29538. <button id="luckysheet-matrix-delezero-column" class="btn btn-primary luckysheet-mousedown-cancel" style="margin-left:5px;padding:2px 3px;line-height:12px;font-size:12px;">${rightclick.byCol}</button>
  29539. </div>
  29540. </div>
  29541. <div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel">
  29542. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">
  29543. ${rightclick.removeDuplicate}
  29544. <button id="luckysheet-matrix-delerpt-row" class="btn btn-primary luckysheet-mousedown-cancel" style="margin-left:5px;padding:2px 3px;line-height:12px;font-size:12px;">${rightclick.byRow}</button>
  29545. <button id="luckysheet-matrix-delerpt-column" class="btn btn-primary luckysheet-mousedown-cancel" style="margin-left:5px;padding:2px 3px;line-height:12px;font-size:12px;">${rightclick.byCol}</button>
  29546. </div>
  29547. </div>
  29548. </div>`;
  29549. return rightclickContainer;
  29550. }
  29551. function sheetconfigHTML() {
  29552. const sheetconfig = locale_default().sheetconfig;
  29553. const config = customSheetRightClickConfig();
  29554. if (Object.values(config).every((ele) => !ele)) {
  29555. $("#luckysheet-sheet-container-c").addClass("luckysheet-sheet-container-menu-hide");
  29556. return "";
  29557. }
  29558. let hideTopMenuseparator = true;
  29559. let moveTopMenuseparator = true;
  29560. if (!config.delete && !config.copy && !config.rename && !config.color) {
  29561. hideTopMenuseparator = false;
  29562. if (!config.hide) {
  29563. moveTopMenuseparator = false;
  29564. }
  29565. }
  29566. if (!config.hide) {
  29567. hideTopMenuseparator = false;
  29568. }
  29569. if (!config.move) {
  29570. moveTopMenuseparator = false;
  29571. }
  29572. const sheetconfigModel = `<div id="luckysheet-rightclick-sheet-menu" class="luckysheet-cols-menu luckysheet-rightgclick-menu luckysheet-mousedown-cancel">
  29573. <div id="luckysheetsheetconfigdelete" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="display:${config.delete ? "block" : "none"};">
  29574. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${sheetconfig.delete}</div>
  29575. </div>
  29576. <div id="luckysheetsheetconfigcopy" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="display:${config.copy ? "block" : "none"};">
  29577. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${sheetconfig.copy}</div>
  29578. </div>
  29579. <div id="luckysheetsheetconfigrename" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="display:${config.rename ? "block" : "none"};">
  29580. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${sheetconfig.rename}</div>
  29581. </div>
  29582. <div id="luckysheetsheetconfigcolor" class="luckysheet-cols-menuitem luckysheet-cols-submenu luckysheet-mousedown-cancel" style="display:${config.color ? "block" : "none"};">
  29583. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">
  29584. ${sheetconfig.changeColor} <span class="luckysheet-submenu-arrow iconfont luckysheet-iconfont-youjiantou" style="user-select: none;"></span>
  29585. </div>
  29586. </div>
  29587. <div class="luckysheet-menuseparator luckysheet-mousedown-cancel" role="separator" style="display:${hideTopMenuseparator ? "block" : "none"};"></div>
  29588. <div id="luckysheetsheetconfighide" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="display:${config.hide ? "block" : "none"};">
  29589. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${sheetconfig.hide}</div>
  29590. </div>
  29591. <div id="luckysheetsheetconfigshow" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="display:${config.hide ? "block" : "none"};">
  29592. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${sheetconfig.unhide}</div>
  29593. </div>
  29594. <div class="luckysheet-menuseparator luckysheet-mousedown-cancel" role="separator" style="display:${moveTopMenuseparator ? "block" : "none"};"></div>
  29595. <div id="luckysheetsheetconfigmoveleft" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="display:${config.move ? "block" : "none"};">
  29596. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${sheetconfig.moveLeft}</div>
  29597. </div>
  29598. <div id="luckysheetsheetconfigmoveright" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="display:${config.move ? "block" : "none"};">
  29599. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${sheetconfig.moveRight}</div>
  29600. </div>
  29601. </div>
  29602. <div id="luckysheetsheetconfigcolor_sub" class="luckysheet-cols-menu luckysheet-rightgclick-menu luckysheet-rightgclick-menu-sub luckysheet-mousedown-cancel">
  29603. <div id="luckysheetsheetconfigcolorreset" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel">
  29604. <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${sheetconfig.resetColor}</div>
  29605. </div>
  29606. <div class="luckysheet-mousedown-cancel">
  29607. <div class="luckysheet-mousedown-cancel">
  29608. <input type="text" id="luckysheetsheetconfigcolorur" />
  29609. </div>
  29610. </div>
  29611. </div>`;
  29612. return sheetconfigModel;
  29613. }
  29614. function filtermenuHTML() {
  29615. const _locale = locale_default();
  29616. const locale_filter = _locale.filter;
  29617. return `<div class="luckysheet-cols-menu luckysheet-mousedown-cancel luckysheet-filter-menu" id="luckysheet-\${menuid}-menu"><div id="luckysheet-\${menuid}-orderby-asc" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${locale_filter.sortByAsc}</div></div><div id="luckysheet-\${menuid}-orderby-desc" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel"><div style="width:205px;" class="luckysheet-mousedown-cancel">${locale_filter.sortByDesc}</div></div></div> <div class="luckysheet-menuseparator luckysheet-mousedown-cancel" role="separator"></div><div id="luckysheet-\${menuid}-orderby-color" class="luckysheet-cols-menuitem luckysheet-cols-submenu luckysheet-mousedown-cancel"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel" style="position: relative;">${locale_filter.filterByColor}<span class="luckysheet-submenu-arrow iconfont luckysheet-iconfont-youjiantou" style="user-select: none;right: 0;"></span></div></div><div class="luckysheet-menuseparator luckysheet-mousedown-cancel" role="separator"></div> <div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" id="luckysheet-\${menuid}-bycondition" style="padding-top:0px;padding-bottom:0px;"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel"><i class="fa fa-caret-right" aria-hidden="true"></i> ${locale_filter.filterByCondition}</div></div> <div class="luckysheet-\${menuid}-bycondition" style="display:none;"><div class="luckysheet-flat-menu-button luckysheet-mousedown-cancel" id="luckysheet-\${menuid}-selected"><span class="luckysheet-mousedown-cancel" data-value="null" data-type="0">${locale_filter.filiterInputNone}</span><div class="luckysheet-mousedown-cancel"><i class="fa fa-sort" aria-hidden="true"></i></div></div><div class="luckysheet-\${menuid}-selected-input"><input type="text" placeholder="${locale_filter.filiterInputTip}" class="luckysheet-mousedown-cancel" /></div><div class="luckysheet-\${menuid}-selected-input luckysheet-\${menuid}-selected-input2"><span>${locale_filter.filiterRangeStart}</span><input type="text" placeholder="${locale_filter.filiterRangeStartTip}" class="luckysheet-mousedown-cancel" /><span>${locale_filter.filiterRangeEnd}</span><input type="text" placeholder="${locale_filter.filiterRangeEndTip}" class="luckysheet-mousedown-cancel" /></div></div> <div class="luckysheet-menuseparator luckysheet-mousedown-cancel" role="separator"></div> <div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" id="luckysheet-\${menuid}-byvalue" style="padding-top:0px;padding-bottom:0px;"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel"><i class="fa fa-caret-right" aria-hidden="true"></i> ${locale_filter.filterByValues}</div></div> <div class="luckysheet-\${menuid}-byvalue"><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel luckysheet-mousedown-\${menuid}-byvalue-btn"><span id="luckysheet-\${menuid}-byvalue-btn-all" class="luckysheet-mousedown-cancel">${locale_filter.filterValueByAllBtn}</span> - <span id="luckysheet-\${menuid}-byvalue-btn-clear" class="luckysheet-mousedown-cancel">${locale_filter.filterValueByClearBtn}</span> - <span id="luckysheet-\${menuid}-byvalue-btn-contra" class="luckysheet-mousedown-cancel">${locale_filter.filterValueByInverseBtn}</span> <div><i class="fa fa-\${menuid} luckysheet-mousedown-cancel" aria-hidden="true"></i></div></div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="padding-left:3px; padding-right:3px;"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel"><input type="text" placeholder="${locale_filter.filterValueByTip}" class="luckysheet-mousedown-cancel" id="luckysheet-\${menuid}-byvalue-input" /><div class="luckysheet-\${menuid}-byvalue-input-icon luckysheet-mousedown-cancel"><i class="fa fa-search luckysheet-mousedown-cancel" aria-hidden="true"></i></div></div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel"><div id="luckysheet-\${menuid}-byvalue-select" class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel"></div></div></div> <div class="luckysheet-menuseparator luckysheet-mousedown-cancel" role="separator"></div> <div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel"><div class="btn btn-primary luckysheet-mousedown-cancel" id="luckysheet-\${menuid}-confirm">${locale_filter.filterConform}</div> <div class="btn btn-default luckysheet-mousedown-cancel" id="luckysheet-\${menuid}-cancel">${locale_filter.filterCancel}</div> <div class="btn btn-danger luckysheet-mousedown-cancel" id="luckysheet-\${menuid}-initial">${locale_filter.clearFilter}</div></div></div> </div>`;
  29618. }
  29619. function filtersubmenuHTML() {
  29620. const _locale = locale_default();
  29621. const locale_filter = _locale.filter;
  29622. return `<div style="z-index:1004;overflow-y:auto;" class="luckysheet-filter-submenu luckysheet-cols-menu luckysheet-mousedown-cancel" id="luckysheet-\${menuid}-submenu"><div data-value="null" data-type="0" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${locale_filter.conditionNone}</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="cellnull" data-type="0"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${locale_filter.conditionCellIsNull}</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="cellnonull" data-type="0"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${locale_filter.conditionCellNotNull}</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="textinclude"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${locale_filter.conditionCellTextContain}</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="textnotinclude"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${locale_filter.conditionCellTextNotContain}</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="textstart"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${locale_filter.conditionCellTextStart}</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="textend"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${locale_filter.conditionCellTextEnd}</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="textequal"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${locale_filter.conditionCellTextEqual}</div></div> <div class="luckysheet-menuseparator luckysheet-mousedown-cancel" role="separator"></div> <div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="dateequal"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${locale_filter.conditionCellDateEqual}</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="datelessthan"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${locale_filter.conditionCellDateBefore}</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="datemorethan"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${locale_filter.conditionCellDateAfter}</div></div> <div class="luckysheet-menuseparator luckysheet-mousedown-cancel" role="separator"></div> <div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="morethan"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${locale_filter.conditionCellGreater}</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="moreequalthan"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${locale_filter.conditionCellGreaterEqual}</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="lessthan"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${locale_filter.conditionCellLess}</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="lessequalthan"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${locale_filter.conditionCellLessEqual}</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="equal"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${locale_filter.conditionCellEqual}</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="noequal"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${locale_filter.conditionCellNotEqual}</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="include" data-type="2"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${locale_filter.conditionCellBetween}</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="noinclude" data-type="2"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${locale_filter.conditionCellNotBetween}</div></div> </div>`;
  29623. }
  29624. function luckysheetAlternateformatHtml() {
  29625. const _locale = locale_default();
  29626. const alternatingColors = _locale.alternatingColors;
  29627. const toolbar = _locale.toolbar;
  29628. return '<div id="luckysheet-modal-dialog-slider-alternateformat" class="luckysheet-modal-dialog-slider luckysheet-modal-dialog-slider-alternateformat" style="display: block;"><div class="luckysheet-modal-dialog-slider-title"><span>' + toolbar.alternatingColors + '</span><span class="luckysheet-model-close-btn" title="' + alternatingColors.close + '"><i class="fa fa-times" aria-hidden="true"></i></span></div><div class="luckysheet-modal-dialog-slider-content"><div class="textTitle">' + alternatingColors.applyRange + '</div><div id="luckysheet-alternateformat-range"><input class="formulaInputFocus" placeholder="' + alternatingColors.selectRange + '"/><i class="fa fa-table" aria-hidden="true"></i></div><div id="luckysheet-alternateformat-checkbox"><div class="cf"><input type="checkbox" id="luckysheet-alternateformat-rowHeader"/><label for="luckysheet-alternateformat-rowHeader">' + alternatingColors.header + '</label></div><div class="cf"><input type="checkbox" id="luckysheet-alternateformat-rowFooter"/><label for="luckysheet-alternateformat-rowFooter">' + alternatingColors.footer + '</label></div></div><div class="textTitle">' + alternatingColors.textTitle + '</div><div id="luckysheet-alternateformat-modelList" class="cf"></div><div class="textTitle">' + alternatingColors.custom + '</div><div id="luckysheet-alternateformat-modelCustom" class="cf"></div><div id="luckysheet-alternateformat-modelToning"><div class="toningbox header"><div class="toningShow"> ' + alternatingColors.header + ' </div><div class="luckysheet-color-menu-button-indicator" title="' + alternatingColors.selectionTextColor + '" style="border-bottom-color: #000;margin-right: 10px;"> <div class="luckysheet-icon luckysheet-inline-block"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-text-color" style="user-select: none;"> </div> </div> </div><div class="luckysheet-color-menu-button-indicator" title="' + alternatingColors.selectionCellColor + '" style="border-bottom-color: #fff;"> <div class="luckysheet-icon luckysheet-inline-block"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-cell-color" style="user-select: none;"> </div> </div> </div></div><div class="toningbox ctOne"><div class="toningShow"> ' + alternatingColors.colorShow + '1 </div><div class="luckysheet-color-menu-button-indicator" title="' + alternatingColors.selectionTextColor + '" style="border-bottom-color: #000;margin-right: 10px;"> <div class="luckysheet-icon luckysheet-inline-block"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-text-color" style="user-select: none;"> </div> </div> </div><div class="luckysheet-color-menu-button-indicator" title="' + alternatingColors.selectionCellColor + '" style="border-bottom-color: #fff;"> <div class="luckysheet-icon luckysheet-inline-block"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-cell-color" style="user-select: none;"> </div> </div> </div></div><div class="toningbox ctTwo"><div class="toningShow"> ' + alternatingColors.colorShow + '2 </div><div class="luckysheet-color-menu-button-indicator" title="' + alternatingColors.selectionTextColor + '" style="border-bottom-color: #000;margin-right: 10px;"> <div class="luckysheet-icon luckysheet-inline-block"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-text-color" style="user-select: none;"> </div> </div> </div><div class="luckysheet-color-menu-button-indicator" title="' + alternatingColors.selectionCellColor + '" style="border-bottom-color: #fff;"> <div class="luckysheet-icon luckysheet-inline-block"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-cell-color" style="user-select: none;"> </div> </div> </div></div><div class="toningbox footer"><div class="toningShow"> ' + alternatingColors.footer + ' </div><div class="luckysheet-color-menu-button-indicator" title="' + alternatingColors.selectionTextColor + '" style="border-bottom-color: #000;margin-right: 10px;"> <div class="luckysheet-icon luckysheet-inline-block"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-text-color" style="user-select: none;"> </div> </div> </div><div class="luckysheet-color-menu-button-indicator" title="' + alternatingColors.selectionCellColor + '" style="border-bottom-color: #fff;"> <div class="luckysheet-icon luckysheet-inline-block"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-cell-color" style="user-select: none;"> </div> </div> </div></div></div><button id="luckysheet-alternateformat-remove" class="btn btn-default" style="margin: 10px;">' + alternatingColors.removeColor + "</button></div></div>";
  29629. }
  29630. function menuToolBar() {
  29631. return createToolbarHtml();
  29632. }
  29633. function customLoadingConfig() {
  29634. const _locale = locale_default();
  29635. const info = _locale.info;
  29636. const config = {
  29637. enable: true,
  29638. image: () => {
  29639. return `<svg viewBox="25 25 50 50" class="circular">
  29640. <circle cx="50" cy="50" r="20" fill="none"></circle>
  29641. </svg>`;
  29642. },
  29643. text: info.loading,
  29644. viewBox: "32 32 64 64",
  29645. imageClass: "",
  29646. textClass: "",
  29647. customClass: ""
  29648. };
  29649. if (JSON.stringify(luckysheetConfigsetting_default.loading) !== "{}") {
  29650. Object.assign(config, luckysheetConfigsetting_default.loading);
  29651. }
  29652. return config;
  29653. }
  29654. function customCellRightClickConfig() {
  29655. const config = {
  29656. copy: true,
  29657. copyAs: true,
  29658. paste: true,
  29659. insertRow: true,
  29660. insertColumn: true,
  29661. deleteRow: true,
  29662. deleteColumn: true,
  29663. deleteCell: true,
  29664. hideRow: true,
  29665. hideColumn: true,
  29666. rowHeight: true,
  29667. columnWidth: true,
  29668. clear: true,
  29669. matrix: true,
  29670. sort: true,
  29671. filter: true,
  29672. chart: true,
  29673. image: true,
  29674. link: true,
  29675. data: true,
  29676. cellFormat: true
  29677. };
  29678. if (JSON.stringify(luckysheetConfigsetting_default.cellRightClickConfig) !== "{}") {
  29679. Object.assign(config, luckysheetConfigsetting_default.cellRightClickConfig);
  29680. }
  29681. luckysheetConfigsetting_default.cellRightClickConfig = config;
  29682. return config;
  29683. }
  29684. function customSheetRightClickConfig() {
  29685. const config = {
  29686. delete: true,
  29687. copy: true,
  29688. rename: true,
  29689. color: true,
  29690. hide: true,
  29691. move: true
  29692. };
  29693. if (JSON.stringify(luckysheetConfigsetting_default.sheetRightClickConfig) !== "{}") {
  29694. Object.assign(config, luckysheetConfigsetting_default.sheetRightClickConfig);
  29695. }
  29696. luckysheetConfigsetting_default.sheetRightClickConfig = config;
  29697. return config;
  29698. }
  29699. var gridHTML, flow, colsmenuHTML, pivottableconfigHTML, pivottablesumHTML, sheetHTML, columnHeaderHTML, sheetselectlistHTML, sheetselectlistitemHTML, inputHTML, modelHTML, maskHTML, luckysheetPivotTableHTML, luckysheetchartpointconfigHTML, luckysheetToolHTML, luckysheetloadingImage, luckysheetlodingHTML, luckyColor, keycode, luckysheetdefaultstyle, luckysheetdefaultFont, luckysheet_CFiconsImg, iconfontObjects;
  29700. var init_constant = __esm({
  29701. "src/controllers/constant.js"() {
  29702. init_locale();
  29703. init_store();
  29704. init_luckysheetConfigsetting();
  29705. init_util();
  29706. init_toolbar();
  29707. gridHTML = function() {
  29708. const _locale = locale_default();
  29709. const locale_info = _locale.info;
  29710. const locale_print = _locale.print;
  29711. const userInfo = luckysheetConfigsetting_default.userInfo === true ? '<i style="font-size:16px;color:#ff6a00;" class="fa fa-taxi" aria-hidden="true"></i> Lucky' : luckysheetConfigsetting_default.userInfo;
  29712. return `<div class="luckysheet">
  29713. <canvas id="luckysheetTableContentF" style="display:none;" class="luckysheetTableContent"></canvas>
  29714. <div class="luckysheet-work-area luckysheet-noselected-text">
  29715. <div id ="luckysheet_info_detail" class="luckysheet_info_detail">
  29716. <div data-tips="${locale_info.return}" id="luckysheet_info_detail_title" class="luckysheet_info_detail_back">
  29717. <i style="color:#444D5A;" class="fa fa-angle-left fa-2x" aria-hidden="true"></i>
  29718. </div>
  29719. <div class="luckysheet-share-logo" title="\${logotitle}"></div>
  29720. <div class="sheet-name">
  29721. <input data-tips="${locale_info.tips}" id="luckysheet_info_detail_input" class="luckysheet_info_detail_input luckysheet-mousedown-cancel" value="${locale_info.noName}" tabindex="0" dir="ltr" aria-label="${locale_info.rename}" style="visibility: visible; width: 149px;" data-tooltip="${locale_info.rename}">
  29722. </div>
  29723. <div id="luckysheet_info_detail_update" class="luckysheet_info_detail_update"> ${locale_info.detailUpdate} </div>
  29724. <div id="luckysheet_info_detail_save" class="luckysheet_info_detail_save"> ${locale_info.wait} </div>
  29725. \${functionButton}
  29726. ${getObjType(userInfo) === "string" ? `<div class="luckysheet_info_detail_user">
  29727. <span id="luckysheet_info_detail_user">${userInfo}</span></div>` : ""}
  29728. ${getObjType(userInfo) === "object" ? `<div class="luckysheet_info_detail_user">
  29729. <img src="${userInfo.userImage}" id="luckysheet_info_detail_user_img">
  29730. <span id="luckysheet_info_detail_user">${userInfo.userName}</span>
  29731. </div>` : ""}
  29732. </div>
  29733. <div id="luckysheet-wa-editor" class="luckysheet-wa-editor toolbar"> \${menu} </div>
  29734. <div id="luckysheet-wa-calculate" class="luckysheet-wa-calculate">
  29735. <div class="luckysheet-wa-calculate-size" id="luckysheet-wa-calculate-size"></div>
  29736. <div class="luckysheet-wa-calculate-help">
  29737. <div class="luckysheet-wa-calculate-help-box">
  29738. <div spellcheck="false" aria-hidden="false" id="luckysheet-helpbox">
  29739. <div id="luckysheet-helpbox-cell" class="luckysheet-helpbox-cell-input luckysheet-mousedown-cancel" tabindex="0" contenteditable="true" dir="ltr" aria-autocomplete="list"></div>
  29740. </div>
  29741. </div>
  29742. <div class="luckysheet-wa-calculate-help-tool">
  29743. <i class="fa fa-caret-down" aria-hidden="true"></i>
  29744. </div>
  29745. </div>
  29746. <div id="luckysheet-wa-functionbox-cancel" class="luckysheet-wa-functionbox">
  29747. <span><i class="iconfont luckysheet-iconfont-qingchu" aria-hidden="true"></i></span>
  29748. </div>
  29749. <div id="luckysheet-wa-functionbox-confirm" class="luckysheet-wa-functionbox">
  29750. <span><i class="iconfont luckysheet-iconfont-yunhang" aria-hidden="true"></i></span>
  29751. </div>
  29752. <div id="luckysheet-wa-functionbox-fx" class="luckysheet-wa-functionbox">
  29753. <span><i class="iconfont luckysheet-iconfont-hanshu" aria-hidden="true" style="color:#333"></i></span>
  29754. </div>
  29755. <div id="luckysheet-functionbox-container" class="luckysheet-mousedown-cancel">
  29756. <div class="luckysheet-mousedown-cancel" dir="ltr">
  29757. <div spellcheck="false" aria-hidden="false" id="luckysheet-functionbox">
  29758. <div id="luckysheet-functionbox-cell" class="luckysheet-functionbox-cell-input luckysheet-mousedown-cancel" tabindex="0" contenteditable="true" dir="ltr" aria-autocomplete="list" aria-label="D4"></div>
  29759. </div>
  29760. </div>
  29761. </div>
  29762. </div>
  29763. </div>
  29764. <div class="luckysheet-grid-container luckysheet-scrollbars-enabled">
  29765. <div class="luckysheet-grid-window">
  29766. <div class="luckysheet-help-sub"></div>
  29767. <div class="luckysheet-grid-window-1" id="luckysheet-grid-window-1">
  29768. <canvas id="luckysheetTableContent" class="luckysheetTableContent"></canvas>
  29769. <table class="luckysheet-grid-window-2" cellspacing="0" cellpadding="0" dir="ltr" tabindex="-1" >
  29770. <tbody>
  29771. <tr>
  29772. <td valign="top" class="luckysheet-paneswrapper">
  29773. <div class="luckysheet-left-top" id="luckysheet-left-top"> </div>
  29774. </td>
  29775. <td valign="top" class="luckysheet-paneswrapper">
  29776. <div id="luckysheet-cols-h-c" class="luckysheet-cols-h-c">
  29777. <div class="luckysheet-cols-change-size" id="luckysheet-cols-change-size"></div>
  29778. <div class="luckysheet-cols-menu-btn luckysheet-mousedown-cancel" id="luckysheet-cols-menu-btn"><i class="fa fa-caret-down luckysheet-mousedown-cancel" aria-hidden="true"></i></div>
  29779. <div class="luckysheet-cols-h-hover" id="luckysheet-cols-h-hover"></div>
  29780. <div id="luckysheet-cols-h-selected"></div>
  29781. <div class="luckysheet-grdusedrange"></div>
  29782. <div class="luckysheet-grdblkflowpush"></div> \${columnHeader}
  29783. </div>
  29784. </td>
  29785. </tr>
  29786. <tr>
  29787. <td valign="top" class="luckysheet-paneswrapper">
  29788. <div class="luckysheet-rows-h" id="luckysheet-rows-h">
  29789. <div class="luckysheet-rows-change-size" id="luckysheet-rows-change-size"></div>
  29790. <div class="luckysheet-rows-h-hover" id="luckysheet-rows-h-hover"></div>
  29791. <div id="luckysheet-rows-h-selected"></div>
  29792. <div class="luckysheet-grdusedrange"></div>
  29793. <div class="luckysheet-grdblkflowpush"></div> \${rowHeader}
  29794. </div>
  29795. </td>
  29796. <td valign="top" class="luckysheet-paneswrapper">
  29797. <div class="luckysheet-cell-loading" id="luckysheet-cell-loading">
  29798. <div class="luckysheet-cell-loading-inner">
  29799. <i class="fa fa-circle-o-notch fa-spin"></i>
  29800. <span></span>
  29801. </div>
  29802. </div>
  29803. <div class="luckysheet-cell-freezen"></div>
  29804. <div class="luckysheet-scrollbars luckysheet-scrollbar-ltr luckysheet-scrollbar-x" id="luckysheet-scrollbar-x"><div></div></div>
  29805. <div class="luckysheet-scrollbars luckysheet-scrollbar-ltr luckysheet-scrollbar-y" id="luckysheet-scrollbar-y"><div></div></div>
  29806. <div class="luckysheet-cell-main " id="luckysheet-cell-main">
  29807. <div id="luckysheet-formula-functionrange"></div>
  29808. <div id="luckysheet-formula-functionrange-select" class="luckysheet-selection-copy luckysheet-formula-functionrange-select">
  29809. <div class="luckysheet-selection-copy-top luckysheet-copy"></div>
  29810. <div class="luckysheet-selection-copy-right luckysheet-copy"></div>
  29811. <div class="luckysheet-selection-copy-bottom luckysheet-copy"></div>
  29812. <div class="luckysheet-selection-copy-left luckysheet-copy"></div>
  29813. <div class="luckysheet-selection-copy-hc"></div>
  29814. </div>
  29815. <div class="luckysheet-row-count-show luckysheet-count-show" id="luckysheet-row-count-show"></div>
  29816. <div class="luckysheet-column-count-show luckysheet-count-show" id="luckysheet-column-count-show"></div>
  29817. <div class="luckysheet-change-size-line" id="luckysheet-change-size-line"></div>
  29818. <div class="luckysheet-cell-selected-focus" id="luckysheet-cell-selected-focus"></div>
  29819. <div id="luckysheet-selection-copy"></div>
  29820. <div id="luckysheet-chart-rangeShow"></div>
  29821. <div class="luckysheet-cell-selected-extend" id="luckysheet-cell-selected-extend"></div>
  29822. <div class="luckysheet-cell-selected-move" id="luckysheet-cell-selected-move"></div>
  29823. <div id="luckysheet-cell-selected-boxs">
  29824. <div id="luckysheet-cell-selected" class="luckysheet-cell-selected">
  29825. <div class="luckysheet-cs-inner-border"></div>
  29826. <div class="luckysheet-cs-fillhandle"></div>
  29827. <div class="luckysheet-cs-inner-border"></div>
  29828. <div class="luckysheet-cs-draghandle-top luckysheet-cs-draghandle"></div>
  29829. <div class="luckysheet-cs-draghandle-bottom luckysheet-cs-draghandle"></div>
  29830. <div class="luckysheet-cs-draghandle-left luckysheet-cs-draghandle"></div>
  29831. <div class="luckysheet-cs-draghandle-right luckysheet-cs-draghandle"></div>
  29832. <div class="luckysheet-cs-touchhandle luckysheet-cs-touchhandle-lt"><div class="luckysheet-cs-touchhandle-btn"></div></div>
  29833. <div class="luckysheet-cs-touchhandle luckysheet-cs-touchhandle-rb"><div class="luckysheet-cs-touchhandle-btn"></div></div>
  29834. </div>
  29835. </div>
  29836. <div id="luckysheet-postil-showBoxs"></div>
  29837. <div id="luckysheet-multipleRange-show"></div>
  29838. <div id="luckysheet-dynamicArray-hightShow"></div>
  29839. <div id="luckysheet-image-showBoxs">
  29840. <div id="luckysheet-modal-dialog-activeImage" class="luckysheet-modal-dialog" style="display:none;padding:0;position:absolute;z-index:300;">
  29841. <div class="luckysheet-modal-dialog-border" style="position:absolute;"></div>
  29842. <div class="luckysheet-modal-dialog-content"></div>
  29843. <div class="luckysheet-modal-dialog-resize">
  29844. <div class="luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-lt" data-type="lt"></div>
  29845. <div class="luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-mt" data-type="mt"></div>
  29846. <div class="luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-lm" data-type="lm"></div>
  29847. <div class="luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-rm" data-type="rm"></div>
  29848. <div class="luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-rt" data-type="rt"></div>
  29849. <div class="luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-lb" data-type="lb"></div>
  29850. <div class="luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-mb" data-type="mb"></div>
  29851. <div class="luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-rb" data-type="rb"></div>
  29852. </div>
  29853. <div class="luckysheet-modal-dialog-controll">
  29854. <span class="luckysheet-modal-controll-btn luckysheet-modal-controll-crop" role="button" tabindex="0" aria-label="\u88C1\u526A" title="\u88C1\u526A">
  29855. <i class="fa fa-pencil" aria-hidden="true"></i>
  29856. </span>
  29857. <span class="luckysheet-modal-controll-btn luckysheet-modal-controll-restore" role="button" tabindex="0" aria-label="\u6062\u590D\u539F\u56FE" title="\u6062\u590D\u539F\u56FE">
  29858. <i class="fa fa-window-maximize" aria-hidden="true"></i>
  29859. </span>
  29860. <span class="luckysheet-modal-controll-btn luckysheet-modal-controll-del" role="button" tabindex="0" aria-label="\u5220\u9664" title="\u5220\u9664">
  29861. <i class="fa fa-trash" aria-hidden="true"></i>
  29862. </span>
  29863. </div>
  29864. </div>
  29865. <div id="luckysheet-modal-dialog-cropping" class="luckysheet-modal-dialog" style="display:none;padding:0;position:absolute;z-index:300;">
  29866. <div class="cropping-mask"></div>
  29867. <div class="cropping-content"></div>
  29868. <div class="luckysheet-modal-dialog-border" style="position:absolute;"></div>
  29869. <div class="luckysheet-modal-dialog-resize">
  29870. <div class="resize-item lt" data-type="lt"></div>
  29871. <div class="resize-item mt" data-type="mt"></div>
  29872. <div class="resize-item lm" data-type="lm"></div>
  29873. <div class="resize-item rm" data-type="rm"></div>
  29874. <div class="resize-item rt" data-type="rt"></div>
  29875. <div class="resize-item lb" data-type="lb"></div>
  29876. <div class="resize-item mb" data-type="mb"></div>
  29877. <div class="resize-item rb" data-type="rb"></div>
  29878. </div>
  29879. <div class="luckysheet-modal-dialog-controll">
  29880. <span class="luckysheet-modal-controll-btn luckysheet-modal-controll-crop" role="button" tabindex="0" aria-label="\u88C1\u526A" title="\u88C1\u526A">
  29881. <i class="fa fa-pencil" aria-hidden="true"></i>
  29882. </span>
  29883. <span class="luckysheet-modal-controll-btn luckysheet-modal-controll-restore" role="button" tabindex="0" aria-label="\u6062\u590D\u539F\u56FE" title="\u6062\u590D\u539F\u56FE">
  29884. <i class="fa fa-window-maximize" aria-hidden="true"></i>
  29885. </span>
  29886. <span class="luckysheet-modal-controll-btn luckysheet-modal-controll-del" role="button" tabindex="0" aria-label="\u5220\u9664" title="\u5220\u9664">
  29887. <i class="fa fa-trash" aria-hidden="true"></i>
  29888. </span>
  29889. </div>
  29890. </div>
  29891. <div class="img-list"></div>
  29892. <div class="cell-date-picker">
  29893. <input id="cellDatePickerBtn" class="formulaInputFocus" readonly="readonly"/>
  29894. </div>
  29895. </div>
  29896. <div id="luckysheet-dataVerification-dropdown-btn"></div>
  29897. <div id="luckysheet-dataVerification-dropdown-List" class="luckysheet-mousedown-cancel"></div>
  29898. <div id="luckysheet-dataVerification-showHintBox" class="luckysheet-mousedown-cancel"></div>
  29899. <div class="luckysheet-cell-copy"></div>
  29900. <div class="luckysheet-grdblkflowpush"></div> \${flow}
  29901. </div>
  29902. </td>
  29903. </tr>
  29904. </tbody>
  29905. </table>
  29906. </div>
  29907. <div class="luckysheet-sheet-area luckysheet-noselected-text" id="luckysheet-sheet-area">
  29908. <div id="luckysheet-sheet-content">
  29909. <div id="luckysheet-sheets-add" class="luckysheet-sheets-add lucky-button-custom"><i class="iconfont luckysheet-iconfont-jia1"></i></div>
  29910. <div id="luckysheet-sheets-m" class="luckysheet-sheets-m lucky-button-custom"><i class="iconfont luckysheet-iconfont-caidan2"></i></div>
  29911. <div class="luckysheet-sheet-container" id="luckysheet-sheet-container">
  29912. <div class="docs-sheet-fade docs-sheet-fade-left" style="display: none;">
  29913. <div class="docs-sheet-fade3"></div>
  29914. <div class="docs-sheet-fade2"></div>
  29915. <div class="docs-sheet-fade1"></div>
  29916. </div>
  29917. <div class="docs-sheet-fade docs-sheet-fade-right" style="display: none;">
  29918. <div class="docs-sheet-fade1"></div>
  29919. <div class="docs-sheet-fade2"></div>
  29920. <div class="docs-sheet-fade3"></div>
  29921. </div>
  29922. <div class="luckysheet-sheet-container-c" id="luckysheet-sheet-container-c"></div>
  29923. </div>
  29924. <div id="luckysheet-sheets-leftscroll" class="luckysheet-sheets-scroll lucky-button-custom"><i class="fa fa-caret-left"></i></div>
  29925. <div id="luckysheet-sheets-rightscroll" class="luckysheet-sheets-scroll lucky-button-custom"><i class="fa fa-caret-right"></i></div>
  29926. </div>
  29927. </div>
  29928. </div>
  29929. <div class="luckysheet-stat-area">
  29930. <div class="luckysheet-sta-c">
  29931. <div class="luckysheet-zoom-content" id="luckysheet-zoom-content">
  29932. <div class="luckysheet-zoom-minus" id="luckysheet-zoom-minus">
  29933. <div class="luckysheet-zoom-minus-icon"></div>
  29934. </div>
  29935. <div class="luckysheet-zoom-slider" id="luckysheet-zoom-slider">
  29936. <div class="luckysheet-zoom-line"></div>
  29937. <div class="luckysheet-zoom-cursor" id="luckysheet-zoom-cursor"></div>
  29938. <div class="luckysheet-zoom-hundred"></div>
  29939. </div>
  29940. <div class="luckysheet-zoom-plus" id="luckysheet-zoom-plus">
  29941. <div class="luckysheet-zoom-plus-icon"></div>
  29942. </div>
  29943. <div class="luckysheet-zoom-ratioText" id="luckysheet-zoom-ratioText">100%</div>
  29944. </div>
  29945. <div class="luckysheet-print-viewList">
  29946. <div type="viewNormal" class="luckysheet-print-viewBtn luckysheet-print-viewNormal luckysheet-print-viewBtn-active" title="${locale_print.normalBtn}"><i class="icon iconfont luckysheet-iconfont-putong"></i></div>
  29947. <div type="viewLayout" class="luckysheet-print-viewBtn luckysheet-print-viewLayout" title="${locale_print.layoutBtn}"><i class="icon iconfont luckysheet-iconfont-yemianbuju"></i></div>
  29948. <div type="viewPage" class="luckysheet-print-viewBtn luckysheet-print-viewPage" title="${locale_print.pageBtn}"><i class="icon iconfont luckysheet-iconfont-fenyeyulan"></i></div>
  29949. </div>
  29950. <div class="luckysheet-sta-content" id="luckysheet-sta-content"></div>
  29951. <!--<div class="luckysheet-bottom-content" id="luckysheet-bottom-content-show"></div> -->
  29952. </div>
  29953. </div>
  29954. </div>
  29955. <div id="luckysheet-copy-content" contenteditable="true"></div>
  29956. <input id="luckysheet-copy-btn" type="button" data-clipboard-target="luckysheet-copy-content">
  29957. <div id="testdpidiv" style="height: 1in; left: -100%; position: absolute; top: -100%; width: 1in;"></div>
  29958. </div>`;
  29959. };
  29960. flow = '<div id="luckysheet-cell-flow_${index}" class="luckysheet-cell-flow luckysheetsheetchange" style="width:${width}px;"><div class="luckysheet-cell-flow-clip"><div class="luckysheet-grdblkpush"></div>${flow}</div></div>';
  29961. colsmenuHTML = "";
  29962. pivottableconfigHTML = function() {
  29963. const _locale = locale_default();
  29964. const locale_pivotTable = _locale.pivotTable;
  29965. return '<div class="luckysheet-cols-menu luckysheet-rightgclick-menu luckysheet-mousedown-cancel" id="luckysheet-pivotTable-config-option"> <div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel"> <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel"> <div class="luckysheet-mousedown-cancel"> <span class="luckysheet-mousedown-cancel">' + locale_pivotTable.titleSort + '</span> <select class="luckysheet-mousedown-cancel" style="height:24px;" id="luckysheet-pivotTable-config-option-order"> <option selected="selected" value="default">' + locale_pivotTable.titleNoSort + '</option> <option value="asc">' + locale_pivotTable.titleSortAsc + '</option> <option value="desc">' + locale_pivotTable.titleSortDesc + '</option> </select> </div> </div> </div> <div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel"> <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel"> <div class="luckysheet-mousedown-cancel"> <span class="luckysheet-mousedown-cancel">' + locale_pivotTable.titleSortBy + '</span> <select class="luckysheet-mousedown-cancel" style="height:24px;" id="luckysheet-pivotTable-config-option-orderby"> </select> </div> </div> </div> <div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel"> <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel"> <div class="luckysheet-mousedown-cancel"> <span class="luckysheet-mousedown-cancel">' + locale_pivotTable.titleShowSum + '</span> <select class="luckysheet-mousedown-cancel" style="height:24px;" id="luckysheet-pivotTable-config-option-stastic"> <option value="0">' + locale_pivotTable.titleStasticFalse + '</option> <option value="1" selected="selected">' + locale_pivotTable.titleStasticTrue + "</option> </select> </div> </div> </div> </div>";
  29966. };
  29967. pivottablesumHTML = function() {
  29968. const _locale = locale_default();
  29969. const locale_pivotTable = _locale.pivotTable;
  29970. return '<div class="luckysheet-cols-menu luckysheet-rightgclick-menu luckysheet-mousedown-cancel" id="luckysheet-pivotTable-config-option-sumtype"> <div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" sumtype="SUM"> <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel"> <span class="luckysheet-mousedown-cancel">' + locale_pivotTable.valueStatisticsSUM + '</span> <span class="luckysheet-submenu-arrow luckysheet-mousedown-cancel" style="user-select: none;"><i class="fa fa-check luckysheet-mousedown-cancel" aria-hidden="true"></i></span> </div> </div> <div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" sumtype="COUNT"> <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel"> <span class="luckysheet-mousedown-cancel">' + locale_pivotTable.valueStatisticsCOUNT + '</span> <span class="luckysheet-submenu-arrow luckysheet-mousedown-cancel" style="user-select: none;"><i class="fa fa-check luckysheet-mousedown-cancel" aria-hidden="true"></i></span> </div> </div> <div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" sumtype="COUNTA"> <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel"> <span class="luckysheet-mousedown-cancel">' + locale_pivotTable.valueStatisticsCOUNTA + '</span> <span class="luckysheet-submenu-arrow luckysheet-mousedown-cancel" style="user-select: none;"><i class="fa fa-check luckysheet-mousedown-cancel" aria-hidden="true"></i></span> </div> </div> <div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" sumtype="COUNTUNIQUE"> <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel"> <span class="luckysheet-mousedown-cancel">' + locale_pivotTable.valueStatisticsCOUNTUNIQUE + '</span> <span class="luckysheet-submenu-arrow luckysheet-mousedown-cancel" style="user-select: none;"><i class="fa fa-check luckysheet-mousedown-cancel" aria-hidden="true"></i></span> </div> </div> <div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" sumtype="AVERAGE"> <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel"> <span class="luckysheet-mousedown-cancel">' + locale_pivotTable.valueStatisticsAVERAGE + '</span> <span class="luckysheet-submenu-arrow luckysheet-mousedown-cancel" style="user-select: none;"><i class="fa fa-check luckysheet-mousedown-cancel" aria-hidden="true"></i></span> </div> </div> <div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" sumtype="MAX"> <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel"> <span class="luckysheet-mousedown-cancel">' + locale_pivotTable.valueStatisticsMAX + '</span> <span class="luckysheet-submenu-arrow luckysheet-mousedown-cancel" style="user-select: none;"><i class="fa fa-check luckysheet-mousedown-cancel" aria-hidden="true"></i></span> </div> </div> <div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" sumtype="MIN"> <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel"> <span class="luckysheet-mousedown-cancel">' + locale_pivotTable.valueStatisticsMIN + '</span> <span class="luckysheet-submenu-arrow luckysheet-mousedown-cancel" style="user-select: none;"><i class="fa fa-check luckysheet-mousedown-cancel" aria-hidden="true"></i></span> </div> </div> <div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" sumtype="MEDIAN"> <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel"> <span class="luckysheet-mousedown-cancel">' + locale_pivotTable.valueStatisticsMEDIAN + '</span> <span class="luckysheet-submenu-arrow luckysheet-mousedown-cancel" style="user-select: none;"><i class="fa fa-check luckysheet-mousedown-cancel" aria-hidden="true"></i></span> </div> </div> <div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" sumtype="PRODUCT"> <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel"> <span class="luckysheet-mousedown-cancel">' + locale_pivotTable.valueStatisticsPRODUCT + '</span> <span class="luckysheet-submenu-arrow luckysheet-mousedown-cancel" style="user-select: none;"><i class="fa fa-check luckysheet-mousedown-cancel" aria-hidden="true"></i></span> </div> </div> <div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" sumtype="STDEV"> <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel"> <span class="luckysheet-mousedown-cancel">' + locale_pivotTable.valueStatisticsSTDEV + '</span> <span class="luckysheet-submenu-arrow luckysheet-mousedown-cancel" style="user-select: none;"><i class="fa fa-check luckysheet-mousedown-cancel" aria-hidden="true"></i></span> </div> </div> <div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" sumtype="STDEVP"> <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel"> <span class="luckysheet-mousedown-cancel">' + locale_pivotTable.valueStatisticsSTDEVP + '</span> <span class="luckysheet-submenu-arrow luckysheet-mousedown-cancel" style="user-select: none;"><i class="fa fa-check luckysheet-mousedown-cancel" aria-hidden="true"></i></span> </div> </div> <div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" sumtype="VAR"> <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel"> <span class="luckysheet-mousedown-cancel">' + locale_pivotTable.valueStatisticslet + '</span> <span class="luckysheet-submenu-arrow luckysheet-mousedown-cancel" style="user-select: none;"><i class="fa fa-check luckysheet-mousedown-cancel" aria-hidden="true"></i></span> </div> </div> <div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" sumtype="VARP"> <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel"> <span class="luckysheet-mousedown-cancel">' + locale_pivotTable.valueStatisticsVARP + '</span> <span class="luckysheet-submenu-arrow luckysheet-mousedown-cancel" style="user-select: none;"><i class="fa fa-check luckysheet-mousedown-cancel" aria-hidden="true"></i></span> </div> </div> </div>';
  29971. };
  29972. sheetHTML = '<div style="${style}" id="luckysheet-sheets-item${index}" data-index="${index}" class="luckysheet-sheets-item ${active}"><span class="luckysheet-sheets-item-name" spellcheck ="false" contenteditable="false">${name}</span> <span class="luckysheet-sheets-item-menu luckysheet-mousedown-cancel"><i class="fa fa-sort-desc luckysheet-mousedown-cancel"></i></span>${colorset}</div>';
  29973. columnHeaderHTML = '<div class="luckysheet-cols-h-cells luckysheetsheetchange" id="luckysheet-cols-h-cells_${index}" style="width:${width}px;"> <div class="luckysheet-cols-h-cells-c"> <div class="luckysheet-grdblkpush"></div>${column}</div></div>';
  29974. sheetselectlistHTML = '<div class="luckysheet-cols-menu luckysheet-rightgclick-menu luckysheet-mousedown-cancel" id="luckysheet-sheet-list">${item}</div>';
  29975. sheetselectlistitemHTML = '<div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" id="luckysheet-sheet-btn${index}" data-index="${index}"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel" style="${style}" ><span class="icon luckysheet-mousedown-cancel">${icon}</span>${name}</div></div>';
  29976. inputHTML = '<div dir="ltr"><div class="luckysheet-input-box-index" id="luckysheet-input-box-index"></div><div id="luckysheet-input-box" spellcheck="false" aria-hidden="false" class="luckysheet-input-box"><div class="luckysheet-cell-input editable" tabindex="0" role="combobox" contenteditable="true" id="luckysheet-rich-text-editor" dir="ltr" g_editable="true" aria-autocomplete="list"></div></div></div>';
  29977. modelHTML = '<div id="${id}" style="${style}" class="luckysheet-modal-dialog ${addclass}" tabindex="0" role="dialog" aria-labelledby=":41e" dir="ltr"> <div class="luckysheet-modal-dialog-title luckysheet-modal-dialog-title-draggable"> <span class="luckysheet-modal-dialog-title-text" role="heading">${title}</span> <span class="luckysheet-modal-dialog-title-close" role="button" tabindex="0" aria-label="${close}"><i class="fa fa-times" aria-hidden="true"></i></span> </div> <div class="luckysheet-modal-dialog-content">${content}</div> <div class="luckysheet-modal-dialog-buttons"> ${botton} </div></div>';
  29978. maskHTML = '<div class="luckysheet-modal-dialog-mask" id="luckysheet-modal-dialog-mask"></div>';
  29979. luckysheetPivotTableHTML = function() {
  29980. const _locale = locale_default();
  29981. const locale_pivotTable = _locale.pivotTable;
  29982. return `
  29983. <div id="luckysheet-modal-dialog-slider-pivot" class="luckysheet-modal-dialog-slider luckysheet-modal-dialog-slider-pivot">
  29984. <div class="luckysheet-modal-dialog-slider-title"> <span>${locale_pivotTable.title}</span> <span id="luckysheet-modal-dialog-slider-close" title="${locale_pivotTable.closePannel}"><i class="fa fa-times" aria-hidden="true"></i></span> </div>
  29985. <div class="luckysheet-modal-dialog-slider-content">
  29986. <div class="luckysheet-modal-dialog-slider-range">
  29987. <div id="luckysheet-dialog-pivotTable-range"></div>
  29988. <div id="luckysheet-dialog-pivotTable-range-seleted">${locale_pivotTable.editRange}</div>
  29989. </div>
  29990. <div class="luckysheet-modal-dialog-slider-list-title"> ${locale_pivotTable.tipPivotFieldSelected} <span title="${locale_pivotTable.tipClearSelectedField}" id="luckysheet-dialog-pivotTable-clearitem">${locale_pivotTable.btnClearSelectedField}</span></div>
  29991. <div id="luckysheet-modal-dialog-pivotTable-list" class="luckysheet-modal-dialog-slider-list luckysheet-scrollbars"> </div>
  29992. <div class="luckysheet-modal-dialog-slider-config-c">
  29993. <div class="luckysheet-modal-dialog-slider-config luckysheet-modal-dialog-config-filter">
  29994. <div> <span><i class="fa fa-filter luckysheet-mousedown-cancel" aria-hidden="true"></i> ${locale_pivotTable.btnFilter}</span> </div>
  29995. <div id="luckysheet-modal-dialog-config-filter" class="luckysheet-modal-dialog-slider-config-list luckysheet-scrollbars"> </div>
  29996. </div>
  29997. <div class="luckysheet-modal-dialog-slider-config luckysheet-modal-dialog-config-row">
  29998. <div> <span><i class="fa fa-list-alt" aria-hidden="true"></i> ${locale_pivotTable.titleRow}</span> </div>
  29999. <div id="luckysheet-modal-dialog-config-row" class="luckysheet-modal-dialog-slider-config-list luckysheet-scrollbars"> </div>
  30000. </div>
  30001. <div class="luckysheet-modal-dialog-slider-config luckysheet-modal-dialog-config-column">
  30002. <div> <span><i class="fa fa-indent" aria-hidden="true"></i> ${locale_pivotTable.titleColumn}</span> </div>
  30003. <div id="luckysheet-modal-dialog-config-column" class="luckysheet-modal-dialog-slider-config-list luckysheet-scrollbars"> </div>
  30004. </div>
  30005. <div class="luckysheet-modal-dialog-slider-config luckysheet-modal-dialog-config-value">
  30006. <div> <span><i class="fa fa-cube" aria-hidden="true"></i> ${locale_pivotTable.titleValue}</span> <span style="float: right;margin-right: 10px;display:none;" id="luckysheetpivottablevaluecolrowshow"><label style="padding:0px 5px;margin:0px;font-size:12px;height:15px;line-height:15px;" title="${locale_pivotTable.tipShowColumn}" for="luckysheetpivottablevaluecolrow">${locale_pivotTable.titleColumn}</label> <input type="radio" checked="checked" value="1" name="luckysheetpivottablevaluecolrow" id="luckysheetpivottablevaluecolrow" /> <label style="padding:0px 5px;margin:0px;font-size:12px;height:15px;line-height:15px;" title="${locale_pivotTable.tipShowRow}" for="luckysheetpivottablevaluecolrow1">${locale_pivotTable.titleRow}</label> <input type="radio" value="0" name="luckysheetpivottablevaluecolrow" id="luckysheetpivottablevaluecolrow1" /></span></div>
  30007. <div id="luckysheet-modal-dialog-config-value" class="luckysheet-modal-dialog-slider-config-list luckysheet-scrollbars"> </div>
  30008. </div>
  30009. </div>
  30010. </div>
  30011. </div>
  30012. `;
  30013. };
  30014. luckysheetchartpointconfigHTML = '<div class="luckysheet-chart-point-config"> <div class="luckysheet-chart-point-config-set"> <div class="luckysheet-chart-point-config-left"> <div class="luckysheet-chart-point-config-left-top"> <div class="luckysheet-chart-point-searchcondition"> <div class="luckysheet-datavisual-content-row" style="margin-bottom: 0px;margin-top: 0px;height: 30px;"> <div class="luckysheet-datavisual-content-column luckysheet-datavisual-content-column-title luckysheet-datavisual-content-column-2x" style="width:10%;white-space:nowrap;">\u9009\u62E9\u7EF4\u5EA6</div> <div class="luckysheet-datavisual-content-column luckysheet-datavisual-content-column-right luckysheet-datavisual-content-column-2x" style="width:80%;"> <select data-tips="\u7EF4\u5EA6\u9009\u62E9" name="luckysheetpointconfigsearchdim" id="luckysheetpointconfigsearchdim"> </select> </div> </div> <div class="luckysheet-datavisual-content-row" style="margin-bottom: 0px;margin-top: 3px;height: 30px;"> <div class="luckysheet-datavisual-content-column luckysheet-datavisual-content-column-title luckysheet-datavisual-content-column-2x" style="width:10%;">\u6392\u5E8F</div> <div class="luckysheet-datavisual-content-column luckysheet-datavisual-content-column-right luckysheet-datavisual-content-column-2x" style="width:80%;"> <label data-tips="\u65E0\u6392\u5E8F" for="luckysheetpointconfigsearchorderno">\u65E0\u6392\u5E8F</label> <input type="radio" checked="checked" value="0" name="luckysheetpointconfigsearchorder" id="luckysheetpointconfigsearchorderno"> <label data-tips="\u5347\u5E8F" for="luckysheetpointconfigsearchorderasc">\u5347\u5E8F</label> <input type="radio" value="1" name="luckysheetpointconfigsearchorder" id="luckysheetpointconfigsearchorderasc"> <label data-tips="\u964D\u5E8F" for="luckysheetpointconfigsearchorderdesc">\u964D\u5E8F</label> <input type="radio" value="2" name="luckysheetpointconfigsearchorder" id="luckysheetpointconfigsearchorderdesc"> </div> </div> <div class="luckysheet-datavisual-content-row" style="margin-bottom: 0px;margin-top: 5px;height: 30px;"> <div class="luckysheet-datavisual-content-column luckysheet-datavisual-content-column-right luckysheet-datavisual-content-column-2x" style="width:90%;text-align: left;"> <select data-width="70" data-tips="\u6309\u7167\u4EC0\u4E48\u65B9\u5F0F\u67E5\u8BE2" name="luckysheetpointconfigsearchtype" id="luckysheetpointconfigsearchtype"> <option value="0" selected="selected">\u6309\u7167\u540D\u79F0</option> <option value="1">\u6309\u6392\u5E8F\u524D%</option> </select> <input data-tips="\u67E5\u8BE2\u5173\u4E8E\u70B9\u7684\u5173\u952E\u5B57" id="luckysheetpointconfigsearchcontent" type="text" class="luckysheet-datavisual-config-input-no" style="width:40%;" placeholder="\u67E5\u8BE2\u5185\u5BB9" /> <button id="luckysheetpointconfigsearchcomfirm" class="btn btn-primary luckysheet-model-conform-btn">\u67E5\u8BE2</button> </div> </div> </div> </div> <div class="luckysheet-chart-point-config-left-mid"> <span id="luckysheet-chart-point-btn-all" class="luckysheet-mousedown-cancel">\u5168\u9009</span> - <span id="luckysheet-chart-point-btn-clear" class="luckysheet-mousedown-cancel">\u6E05\u9664</span> - <span id="luckysheet-chart-point-btn-contra" class="luckysheet-mousedown-cancel">\u53CD\u9009</span><span style="text-decoration:none;color:#8D8D8D;float:right;margin-right:40px;cursor:default;" class="luckysheet-mousedown-cancel">\u53EF\u4EE5\u76F4\u63A5\u6846\u9009\u6570\u636E\u70B9</span> </div> <div class="luckysheet-chart-point-config-left-bottom"> <div class="luckysheet-chart-point-searchitem-c luckysheet-noselected-text"> </div> </div> </div> <div class="luckysheet-chart-point-config-right"> <div class="luckysheet-chart-point-itemconfig"> <div class="luckysheet-datavisual-content-row" style="font-size: 16px;font-weight: bold;"> \u6570\u636E\u70B9\u8BBE\u7F6E </div> <div class="luckysheet-datavisual-content-row"> <div class="luckysheet-datavisual-content-column luckysheet-datavisual-content-column-title luckysheet-datavisual-content-column-2x" style="width:10%;white-space:nowrap;">\u56FE\u5F62\u989C\u8272</div> <div class="luckysheet-datavisual-content-column luckysheet-datavisual-content-column-right luckysheet-datavisual-content-column-2x" style="width:80%;"> <input data-tips="\u989C\u8272" class="luckysheet-datavisual-config-colorOpacity" id="scattersingleitemstylecolor" type="text" data-bigclass="scattersingle" data-attr="itemstyle" data-func="color" /> </div> </div> <div class="luckysheet-datavisual-content-row"> <div class="luckysheet-datavisual-content-column luckysheet-datavisual-content-column-title luckysheet-datavisual-content-column-2x" style="width:10%;white-space:nowrap;">\u56FE\u5F62\u5927\u5C0F</div> <div class="luckysheet-datavisual-content-column luckysheet-datavisual-content-column-right luckysheet-datavisual-content-column-2x" style="width:80%;"> <select data-sliderdiy="scattersingleallsymbolsizeslider" data-tips="\u70B9\u5927\u5C0F\u8BBE\u7F6E" name="scattersingleallsymbolsize" id="scattersingleallsymbolsize" data-width="50" data-bigclass="scattersingle" data-attr="all" data-func="symbolsize"> <option value="4" selected="selected">4px</option> <option value="6">6px</option> <option value="8">8px</option> <option value="10">10px</option> <option value="12">12px</option> <option value="14">14px</option> <option value="16">16px</option> <option value="diy">\u81EA\u5B9A\u4E49</option> </select> </div> </div> <div class="luckysheet-datavisual-content-row" style="display:none;"> <div data-tips="\u6ED1\u52A8\u4FEE\u6539\u70B9\u5927\u5C0F" id="scattersingleallsymbolsizeslider" data-bigclass="scattersingle" data-attr="all" data-func="symbolsize" class="luckysheet-datavisual-config-slider" style="width:70%;" data-min="1" data-max="50" data-step="1"></div> <input data-tips="\u81EA\u5B9A\u4E49\u70B9\u5927\u5C0F" data-sliderid="scattersingleallsymbolsizeslider" id="scattersingleallsymbolsizesliderdiy" type="text" class="luckysheet-datavisual-config-input" data-bigclass="scattersingle" data-attr="all" data-func="symbolsize" placeholder="\u8BF7\u8F93\u5165" style="width:10%;margin-left:10px;text-align:center;margin-right: 2px;" /><label for="scattersingleallsymbolsizesliderdiy">px</label> </div> <div class="luckysheet-datavisual-content-row"> <div class="luckysheet-datavisual-content-column luckysheet-datavisual-content-column-title luckysheet-datavisual-content-column-2x" style="width:10%;white-space:nowrap;">\u56FE\u5F62\u5F62\u72B6</div> <div class="luckysheet-datavisual-content-column luckysheet-datavisual-content-column-right luckysheet-datavisual-content-column-2x" style="width:80%;"> <select data-tips="\u70B9\u7C7B\u578B\u8BBE\u7F6E" data-width="70" name="scattersingleallsymboltype" id="scattersingleallsymboltype" data-bigclass="scattersingle" data-attr="all" data-func="symboltype"> <option value="emptyCircle" selected="selected">\u7A7A\u5FC3\u5706</option> <option value="circle">\u5706\u5F62</option> <option value="emptyRectangle">\u7A7A\u5FC3\u77E9\u5F62</option> <option value="rect">\u77E9\u5F62</option> <option value="roundRect">\u5706\u89D2\u77E9\u5F62</option> <option value="emptyTriangle">\u7A7A\u5FC3\u4E09\u89D2</option> <option value="triangle">\u4E09\u89D2\u5F62</option> <option value="emptyDiamond">\u7A7A\u5FC3\u83F1\u5F62</option> <option value="diamond">\u83F1\u5F62</option> <option value="droplet">\u6C34\u6EF4</option> <option value="pin">\u6807\u6CE8</option> <option value="arrow">\u7BAD\u5934</option> <option value="heart">\u5FC3\u5F62</option> <option value="star">\u661F\u661F</option> </select> </div> </div> <div class="luckysheet-datavisual-content-rowsplit-sub"></div> <div class="luckysheet-datavisual-content-row"> <div class="luckysheet-datavisual-content-column luckysheet-datavisual-content-column-title luckysheet-datavisual-content-column-2x" style="width:10%;white-space:nowrap;">\u8FB9\u6846\u7C97\u7EC6</div> <div class="luckysheet-datavisual-content-column luckysheet-datavisual-content-column-right luckysheet-datavisual-content-column-2x" style="width:80%;"> <select data-sliderdiy="scattersingleitemstyleborderwidthslider" data-tips="\u70B9\u8FB9\u6846\u7C97\u7EC6" name="scattersingleitemstyleborderwidth" id="scattersingleitemstyleborderwidth" data-width="50" data-bigclass="scattersingle" data-attr="itemstyle" data-func="borderwidth"><option value="0" selected="selected">\u65E0</option> <option value="1">1px</option> <option value="2">2px</option> <option value="3">3px</option> <option value="4">4px</option> <option value="5">5px</option> <option value="6">6px</option> <option value="7">7px</option> <option value="8">8px</option> <option value="diy">\u81EA\u5B9A\u4E49</option> </select> </div> </div> <div class="luckysheet-datavisual-content-row" style="display:none;"> <div data-tips="\u6ED1\u52A8\u4FEE\u6539\u8FB9\u6846\u7C97\u7EC6" id="scattersingleitemstyleborderwidthslider" data-bigclass="scattersingle" data-attr="itemstyle" data-func="borderwidth" class="luckysheet-datavisual-config-slider" style="width:70%;" data-min="12" data-max="100" data-step="1"></div> <input data-tips="\u81EA\u5B9A\u4E49\u8FB9\u6846\u7C97\u7EC6" data-sliderid="scattersingleitemstyleborderwidthslider" id="scattersingleitemstyleborderwidthsliderdiy" type="text" class="luckysheet-datavisual-config-input" data-bigclass="scattersingle" data-attr="itemstyle" data-func="borderwidth" placeholder="\u8BF7\u8F93\u5165" style="width:10%;margin-left:10px;text-align:center;margin-right: 2px;" /><label for="scattersingleitemstyleborderwidthsliderdiy">%</label> </div> <div class="luckysheet-datavisual-content-row"> <div class="luckysheet-datavisual-content-column luckysheet-datavisual-content-column-title luckysheet-datavisual-content-column-2x" style="width:10%;white-space:nowrap;">\u8FB9\u6846\u6837\u5F0F</div> <div class="luckysheet-datavisual-content-column luckysheet-datavisual-content-column-right luckysheet-datavisual-content-column-2x" style="width:80%;"> <select data-tips="\u70B9\u8FB9\u6846\u7C7B\u578B\u8BBE\u7F6E" data-width="50" name="scattersingleitemstyleborderlinetype" id="scattersingleitemstyleborderlinetype" data-bigclass="scattersingle" data-attr="itemstyle" data-func="borderlinetype"> <option value="solid" selected="selected">\u5B9E\u7EBF</option> <option value="dashed">\u865A\u7EBF</option> <option value="dotted">\u70B9\u7EBF</option> </select> </div> </div> <div class="luckysheet-datavisual-content-row"> <div class="luckysheet-datavisual-content-column luckysheet-datavisual-content-column-title luckysheet-datavisual-content-column-2x" style="width:10%;white-space:nowrap;">\u8FB9\u6846\u989C\u8272</div> <div class="luckysheet-datavisual-content-column luckysheet-datavisual-content-column-right luckysheet-datavisual-content-column-2x" style="width:80%;"> <input data-tips="\u70B9\u8FB9\u6846\u989C\u8272" class="luckysheet-datavisual-config-colorOpacity" id="scattersingleitemstyleborderlinecolor" type="text" data-bigclass="scattersingle" data-attr="itemstyle" data-func="borderlinecolor" /> </div> </div> <div class="luckysheet-datavisual-content-rowsplit-sub"></div> <div class="luckysheet-datavisual-content-row"> <div class="luckysheet-datavisual-content-column luckysheet-datavisual-content-column-title luckysheet-datavisual-content-column-2x" style="width:10%;white-space:nowrap;"><i class="fa fa-th-large" aria-hidden="true"></i> \u6587\u5B57\u6807\u7B7E</div> <div class="luckysheet-datavisual-content-column luckysheet-datavisual-content-column-right luckysheet-datavisual-content-column-2x" style="width:80%;"> <label data-tips="\u663E\u793A\u6570\u636E\u70B9\u7684\u6807\u7B7E" data-bigclass="scattersingle" data-attr="label" data-func="labelshow" for="scattersinglelabellabelshow">\u663E\u793A</label> <input type="radio" checked="checked" value="1" name="scattersinglelabellabelshow" id="scattersinglelabellabelshow" data-bigclass="scattersingle" data-attr="label" data-func="labelshow"> <label data-tips="\u9690\u85CF\u6570\u636E\u70B9\u7684\u6807\u7B7E" data-bigclass="scattersingle" data-attr="label" data-func="labelshow" for="scattersinglelabellabelshow1">\u9690\u85CF</label> <input type="radio" value="0" name="scattersinglelabellabelshow" id="scattersinglelabellabelshow1" data-bigclass="scattersingle" data-attr="label" data-func="labelshow"> </div> </div> <div class="luckysheet-datavisual-content-row" style="height:auto;line-height: initial;margin-left:auto;" showfor="scattersinglelabellabelshow1" hidefor="scattersinglelabellabelshow"> <div class="luckysheet-datavisual-content-row"> <div class="luckysheet-datavisual-content-column luckysheet-datavisual-content-column-title luckysheet-datavisual-content-column-2x" style="width:40%;">\u6570\u503C\u6BD4\u4F8B</div> <div class="luckysheet-datavisual-content-column luckysheet-datavisual-content-column-right luckysheet-datavisual-content-column-2x" style="width:50%;"> <select data-tips="\u523B\u5EA6\u6570\u503C\u653E\u5927\u6BD4\u4F8B" name="scattersinglelabelformatratio" id="scattersinglelabelformatratio" data-bigclass="scattersingle" data-attr="label" data-func="formatratio"> <option value="0.01">\u4E58\u4EE5100</option> <option value="0.1">\u4E58\u4EE510</option> <option value="1" selected="selected">\u9ED8\u8BA4</option> <option value="10">\u9664\u4EE510</option> <option value="100">\u9664\u4EE5100</option> <option value="1000">\u9664\u4EE51000</option> <option value="10000">\u9664\u4EE51\u4E07</option> <option value="100000">\u9664\u4EE510\u4E07</option> <option value="1000000">\u9664\u4EE5\u4E00\u767E\u4E07</option> <option value="10000000">\u9664\u4EE5\u4E00\u5343\u4E07</option> <option value="100000000">\u9664\u4EE5\u4E00\u4EBF</option> <option value="1000000000">\u9664\u4EE5\u5341\u4EBF</option> </select> </div> </div> <div class="luckysheet-datavisual-content-row"> <div class="luckysheet-datavisual-content-column luckysheet-datavisual-content-column-title luckysheet-datavisual-content-column-2x" style="width:40%;white-space: nowrap;">\u5C0F\u6570\u4F4D\u6570</div> <div class="luckysheet-datavisual-content-column luckysheet-datavisual-content-column-right luckysheet-datavisual-content-column-2x" style="width:50%;"> <select data-tips="\u6570\u503C\u5C0F\u6570\u70B9\u4F4D\u6570" name="scattersinglelabelfloatlen" id="scattersinglelabelfloatlen" data-bigclass="scattersingle" data-attr="label" data-func="floatlen"> <option value="auto" selected="selected">\u81EA\u52A8\u663E\u793A</option> <option value="0">\u6574\u6570</option> <option value="1">1\u4F4D\u5C0F\u6570</option> <option value="2">2\u4F4D\u5C0F\u6570</option> <option value="3">3\u4F4D\u5C0F\u6570</option> <option value="4">4\u4F4D\u5C0F\u6570</option> <option value="5">5\u4F4D\u5C0F\u6570</option> <option value="6">6\u4F4D\u5C0F\u6570</option> <option value="7">7\u4F4D\u5C0F\u6570</option> <option value="8">8\u4F4D\u5C0F\u6570</option> </select> </div> </div> <div class="luckysheet-datavisual-content-row"> <div class="luckysheet-datavisual-content-column luckysheet-datavisual-content-column-title luckysheet-datavisual-content-column-2x" style="width:20%;">\u6807\u7B7E\u683C\u5F0F</div> <div class="luckysheet-datavisual-content-column luckysheet-datavisual-content-column-right luckysheet-datavisual-content-column-2x" style="width:70%;"> <select data-sliderdiy="scattersinglelabelcontentformatslider" data-tips="\u6807\u7B7E\u663E\u793A\u683C\u5F0F" name="scattersinglelabelcontentformat" id="scattersinglelabelcontentformat" data-bigclass="scattersingle" data-attr="label" data-func="contentformat"> <option value="default" selected="selected">\u9ED8\u8BA4</option> <option value="1">\u4EC5\u6570\u636E\u540D</option> <option value="2">\u6570\u636E\u540D+2\u7EF4\u6570\u503C</option> <option value="5">\u6570\u636E\u540D+\u5168\u90E8\u6570\u503C</option> <option value="diy">\u81EA\u5B9A\u4E49</option> </select> </div> </div> <div style="display:none;"> <div class="luckysheet-datavisual-content-row" id="scattersinglelabelcontentformatslider"> <div style="text-align:center; width:60px; display:inline-block;">\u6570\u636E\u540D\u79F0</div> <label data-tips="\u662F\u5426\u663E\u793A\u6570\u636E\u540D" data-bigclass="scattersingle" data-attr="label" data-func="scattersingledatalabelshow" for="scattersinglelabeldatalabelshow" style="font-weight:bold;"><i class="fa fa-eye" aria-hidden="true"></i></label> <input type="checkbox" checked="checked" name="scattersinglelabeldatalabelshow" id="scattersinglelabeldatalabelshow" data-bigclass="scattersingle" data-attr="label" data-func="scattersingledatalabelshow"> <input data-tips="\u663E\u793A\u5728\u6570\u636E\u540D\u524D\u90E8\u6587\u5B57" placeholder="\u524D\u7F00" id="scattersinglelabeldatalabelprefix" type="text" class="luckysheet-datavisual-config-input" style="width:60px;height:19px;" data-bigclass="scattersingle" data-attr="label" data-func="scattersingledatalabelprefix" /> <input data-tips="\u663E\u793A\u5728\u6570\u636E\u540D\u5C3E\u90E8\u6587\u5B57" placeholder="\u540E\u7F00" id="scattersinglelabeldatalabelsuffix" type="text" class="luckysheet-datavisual-config-input" style="width:60px;height:19px;" data-bigclass="scattersingle" data-attr="label" data-func="scattersingledatalabelsuffix" /> <label data-tips="\u662F\u5426\u5728\u6570\u636E\u540D\u540E\u6362\u884C" data-bigclass="scattersingle" data-attr="label" data-func="scattersingledatalabelline" for="scattersinglelabeldatalabelline" style="font-weight:bold;">\u6362\u884C</label> <input type="checkbox" checked="checked" name="scattersinglelabeldatalabelline" id="scattersinglelabeldatalabelline" data-bigclass="scattersingle" data-attr="label" data-func="scattersingledatalabelline"> </div> </div> <div class="luckysheet-datavisual-content-row" > <div class="luckysheet-datavisual-content-column luckysheet-datavisual-content-column-title luckysheet-datavisual-content-column-2x" style="width:10%;white-space:nowrap;">\u6807\u7B7E\u4F4D\u7F6E</div> <div class="luckysheet-datavisual-content-column luckysheet-datavisual-content-column-right luckysheet-datavisual-content-column-2x" style="width:80%;"> <select data-sliderdiy="scattersinglelabellabelplaceslider" data-tips="\u6807\u7B7E\u8DDD\u79BB\u56FE\u5F62\u4F4D\u7F6E" data-width="70" name="scattersinglelabellabelplace" id="scattersinglelabellabelplace" data-bigclass="scattersingle" data-attr="label" data-func="labelplace"> <option value="top" selected="selected">\u9876\u7AEF</option> <option value="left">\u5DE6\u4FA7</option> <option value="right">\u53F3\u4FA7</option> <option value="bottom">\u5E95\u90E8</option> <option value="inside">\u5185\u90E8\u5C45\u4E2D</option> <option value="diy">\u81EA\u5B9A\u4E49</option> <option value="insideLeft">\u5185\u90E8\u5DE6\u4FA7</option> <option value="insideRight">\u5185\u90E8\u53F3\u4FA7</option> <option value="insideTop">\u5185\u90E8\u9876\u7AEF</option> <option value="insideBottom">\u5185\u90E8\u5E95\u7AEF</option> <option value="insideTopLeft">\u5185\u90E8\u5DE6\u4E0A</option> <option value="insideBottomLeft">\u5185\u90E8\u5DE6\u4E0B</option> <option value="insideTopRight">\u5185\u90E8\u53F3\u4E0A</option> <option value="insideBottomRight">\u5185\u90E8\u53F3\u4E0B</option> </select> </div> </div> <div class="luckysheet-datavisual-content-row" style="display:none;height:65px;"> <div data-tips="\u6ED1\u52A8\u4FEE\u6539\u70B9\u6587\u672C\u6C34\u5E73\u4F4D\u7F6E" id="scattersinglelabellabelplaceslider" data-bigclass="scattersingle" data-attr="label" data-func="labelplacediy" class="luckysheet-datavisual-config-slider" style="width:70%;" data-min="-100" data-max="100" data-step="1"></div> <input data-tips="\u81EA\u5B9A\u4E49\u70B9\u6587\u672C\u6C34\u5E73\u4F4D\u7F6E" data-sliderid="scattersinglelabellabelplaceslider" id="scattersinglelabellabelplacesliderdiy" type="text" class="luckysheet-datavisual-config-input" data-bigclass="scattersingle" data-attr="label" data-func="labelplacediy" placeholder="\u8BF7\u8F93\u5165" style="width:10%;margin-left:10px;text-align:center;margin-right: 2px;" /><label for="scattersinglelabellabelplacesliderdiy">px</label> <br /> <div data-tips="\u6ED1\u52A8\u4FEE\u6539\u70B9\u6587\u672C\u5782\u76F4\u4F4D\u7F6E" id="scattersinglelabellabelplaceslider1" data-bigclass="scattersingle" data-attr="label" data-func="labelplacediy" class="luckysheet-datavisual-config-slider" style="width:70%;" data-min="-100" data-max="100" data-step="1"></div> <input data-tips="\u81EA\u5B9A\u4E49\u70B9\u6587\u672C\u5782\u76F4\u4F4D\u7F6E" data-sliderid="scattersinglelabellabelplaceslider1" id="scattersinglelabellabelplaceslider1diy" type="text" class="luckysheet-datavisual-config-input" data-bigclass="scattersingle" data-attr="label" data-func="labelplacediy" placeholder="\u8BF7\u8F93\u5165" style="width:10%;margin-left:10px;text-align:center;margin-right: 2px;" /><label for="scattersinglelabellabelplaceslider1diy">px</label> </div> <div class="luckysheet-datavisual-content-row"> <label data-tips="\u52A0\u7C97" data-bigclass="scattersingle" data-attr="label" data-func="labelbold" for="scattersinglelabellabelbold" style="font-weight:bold;"><i class="fa fa-bold" aria-hidden="true"></i></label> <input type="checkbox" name="scattersinglelabellabelbold" id="scattersinglelabellabelbold" data-bigclass="scattersingle" data-attr="label" data-func="labelbold"> <label data-tips="\u659C\u4F53" data-bigclass="scattersingle" data-attr="label" data-func="labelitalic" for="scattersinglelabellabelitalic" class="luckysheet-datavisual-content-column-italic"><i class="fa fa-italic" aria-hidden="true"></i></label> <input type="checkbox" name="scattersinglelabellabelitalic" id="scattersinglelabellabelitalic" data-bigclass="scattersingle" data-attr="label" data-func="labelitalic"> <select data-sliderdiy="scattersinglelabellabelfontsizeslider" data-width="50" data-tips="\u5B57\u4F53\u5927\u5C0F" name="scattersinglelabellabelfontsize" id="scattersinglelabellabelfontsize" data-bigclass="scattersingle" data-attr="label" data-func="labelfontsize"> <option value="12">12px</option> <option value="14">14px</option> <option value="16">16px</option> <option value="18">18px</option> <option value="20">20px</option> <option value="22">22px</option> <option value="24">24px</option> <option value="30">30px</option> <option value="36">36px</option> <option value="diy">\u81EA\u5B9A\u4E49</option> </select> <input data-tips="\u5B57\u4F53\u989C\u8272" class="luckysheet-datavisual-config-color" id="scattersinglelinelabelcolor" type="text" data-bigclass="scattersingle" data-attr="label" data-func="labelcolor" /> </div> <div class="luckysheet-datavisual-content-row" style="display:none;"> <div data-tips="\u6ED1\u52A8\u4FEE\u6539\u5B57\u4F53\u5927\u5C0F" id="scattersinglelabellabelfontsizeslider" data-bigclass="scattersingle" data-attr="label" data-func="labelfontsize" class="luckysheet-datavisual-config-slider" style="width:70%;" data-min="12" data-max="100" data-step="1"></div> <input data-tips="\u81EA\u5B9A\u4E49\u5B57\u4F53\u5927\u5C0F" data-sliderid="scattersinglelabellabelfontsizeslider" id="scattersinglelabellabelfontsizesliderdiy" type="text" class="luckysheet-datavisual-config-input" data-bigclass="scattersingle" data-attr="label" data-func="labelfontsize" placeholder="\u8BF7\u8F93\u5165" style="width:10%;margin-left:10px;text-align:center;margin-right: 2px;" /><label for="scattersinglelabellabelfontsizesliderdiy">px</label> </div> </div> </div> </div> </div> <div class="luckysheet-chart-point-config-chart"> <div id="luckysheet-chart-point-config-chart-c" class="luckysheet-chart-point-config-chart-c"> </div> </div> </div>';
  30015. luckysheetToolHTML = '<div id="luckysheet-tooltip-up" class="jfk-tooltip" role="tooltip" aria-hidden="true" style="left: 505px; top: 410px;"><div class="jfk-tooltip-contentId">\u7EC4\u5408\u56FE\u8868</div><div class="jfk-tooltip-arrow jfk-tooltip-arrowup" style="left: 35.5px;"><div class="jfk-tooltip-arrowimplbefore"></div><div class="jfk-tooltip-arrowimplafter"></div></div></div>';
  30016. luckysheetloadingImage = function(config) {
  30017. if (typeof config.image === "function") {
  30018. return config.image();
  30019. }
  30020. const regE = new RegExp("^(image|path)://");
  30021. const regResult = regE.exec(config.image);
  30022. let imageHtml = "";
  30023. if (regResult !== null) {
  30024. const prefix = regResult[0];
  30025. const type = regResult[1];
  30026. const imageStr = regResult.input.substring(prefix.length);
  30027. switch (type) {
  30028. case "image":
  30029. imageHtml = `<div class="image-type" style="background-image: url(${imageStr});"></div>`;
  30030. break;
  30031. case "path":
  30032. const svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
  30033. svg.setAttribute("class", "path-type");
  30034. svg.setAttribute("viewBox", config.viewBox);
  30035. const path = document.createElementNS("http://www.w3.org/2000/svg", "path");
  30036. path.setAttribute("d", imageStr);
  30037. path.setAttribute("fill", "currentColor");
  30038. svg.appendChild(path);
  30039. imageHtml = svg.outerHTML;
  30040. break;
  30041. default:
  30042. break;
  30043. }
  30044. }
  30045. return imageHtml;
  30046. };
  30047. luckysheetlodingHTML = function(target, coverConfig) {
  30048. if (!target) {
  30049. return;
  30050. }
  30051. const config = customLoadingConfig();
  30052. if (coverConfig && JSON.stringify(coverConfig) !== "{}") {
  30053. Object.assign(config, coverConfig);
  30054. }
  30055. if (typeof config.enable === "boolean" && config.enable === false) {
  30056. return {
  30057. el: "",
  30058. show,
  30059. close
  30060. };
  30061. }
  30062. const imageHtml = luckysheetloadingImage(config);
  30063. const id = "luckysheet-loading-" + uuid.v4();
  30064. const loadingHtml = `
  30065. <div class="luckysheet-loading-content">
  30066. <div class="${config.imageClass} luckysheet-loading-image">
  30067. ${imageHtml}
  30068. </div>
  30069. <div class="${config.textClass} luckysheet-loading-text">
  30070. <span>${config.text}</span>
  30071. </div>
  30072. </div>`;
  30073. const loading = document.createElement("div");
  30074. loading.id = id;
  30075. loading.className = "luckysheet-loading-mask " + config.customClass;
  30076. $(loading).html(loadingHtml);
  30077. $(target).append(loading);
  30078. function show() {
  30079. if (id) {
  30080. $("#" + id).show();
  30081. }
  30082. }
  30083. function close() {
  30084. if (id) {
  30085. $("#" + id).hide();
  30086. }
  30087. }
  30088. return {
  30089. el: loading,
  30090. show,
  30091. close
  30092. };
  30093. };
  30094. luckyColor = [
  30095. "#c1232b",
  30096. "#27727b",
  30097. "#fcce10",
  30098. "#e87c25",
  30099. "#b5c334",
  30100. "#fe8463",
  30101. "#9bca63",
  30102. "#fad860",
  30103. "#f3a43b",
  30104. "#60c0dd",
  30105. "#d7504b",
  30106. "#c6e579",
  30107. "#f4e001",
  30108. "#f0805a",
  30109. "#26c0c0",
  30110. "#c12e34",
  30111. "#e6b600",
  30112. "#0098d9",
  30113. "#2b821d",
  30114. "#005eaa",
  30115. "#339ca8",
  30116. "#cda819",
  30117. "#32a487",
  30118. "#3fb1e3",
  30119. "#6be6c1",
  30120. "#626c91",
  30121. "#a0a7e6",
  30122. "#c4ebad",
  30123. "#96dee8"
  30124. ];
  30125. keycode = {
  30126. BACKSPACE: 8,
  30127. TAB: 9,
  30128. ENTER: 13,
  30129. SHIFT: 16,
  30130. CTRL: 17,
  30131. PAUSE: 19,
  30132. CAPSLOCK: 20,
  30133. ESC: 27,
  30134. SPACE: 33,
  30135. PAGEUP: 33,
  30136. PAGEDOWN: 34,
  30137. END: 35,
  30138. HOME: 36,
  30139. LEFT: 37,
  30140. UP: 38,
  30141. RIGHT: 39,
  30142. DOWN: 40,
  30143. INSERT: 45,
  30144. DELETE: 46,
  30145. WIN: 91,
  30146. WIN_R: 92,
  30147. MENU: 93,
  30148. F1: 112,
  30149. F2: 113,
  30150. F3: 114,
  30151. F4: 115,
  30152. F5: 116,
  30153. F6: 117,
  30154. F7: 118,
  30155. F8: 119,
  30156. F9: 120,
  30157. F10: 121,
  30158. F11: 122,
  30159. F12: 123,
  30160. NUMLOCK: 144,
  30161. SCROLLLOCK: 145
  30162. };
  30163. luckysheetdefaultstyle = {
  30164. fillStyle: "#000000",
  30165. textBaseline: "middle",
  30166. strokeStyle: "#dfdfdf",
  30167. rowFillStyle: "#5e5e5e",
  30168. textAlign: "center"
  30169. };
  30170. luckysheetdefaultFont = function() {
  30171. return "normal normal normal " + store_default.defaultFontSize + "pt " + locale_default().fontarray[0] + ', "Helvetica Neue", Helvetica, Arial, "PingFang SC", "Hiragino Sans GB", "Heiti SC", "WenQuanYi Micro Hei", sans-serif';
  30172. };
  30173. luckysheet_CFiconsImg = new Image();
  30174. luckysheet_CFiconsImg.src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZoAAAGACAYAAACUS6SeAAAACXBIWXMAAC4jAAAuIwF4pT92AAAKTWlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVN3WJP3Fj7f92UPVkLY8LGXbIEAIiOsCMgQWaIQkgBhhBASQMWFiApWFBURnEhVxILVCkidiOKgKLhnQYqIWotVXDjuH9yntX167+3t+9f7vOec5/zOec8PgBESJpHmomoAOVKFPDrYH49PSMTJvYACFUjgBCAQ5svCZwXFAADwA3l4fnSwP/wBr28AAgBw1S4kEsfh/4O6UCZXACCRAOAiEucLAZBSAMguVMgUAMgYALBTs2QKAJQAAGx5fEIiAKoNAOz0ST4FANipk9wXANiiHKkIAI0BAJkoRyQCQLsAYFWBUiwCwMIAoKxAIi4EwK4BgFm2MkcCgL0FAHaOWJAPQGAAgJlCLMwAIDgCAEMeE80DIEwDoDDSv+CpX3CFuEgBAMDLlc2XS9IzFLiV0Bp38vDg4iHiwmyxQmEXKRBmCeQinJebIxNI5wNMzgwAABr50cH+OD+Q5+bk4eZm52zv9MWi/mvwbyI+IfHf/ryMAgQAEE7P79pf5eXWA3DHAbB1v2upWwDaVgBo3/ldM9sJoFoK0Hr5i3k4/EAenqFQyDwdHAoLC+0lYqG9MOOLPv8z4W/gi372/EAe/tt68ABxmkCZrcCjg/1xYW52rlKO58sEQjFu9+cj/seFf/2OKdHiNLFcLBWK8ViJuFAiTcd5uVKRRCHJleIS6X8y8R+W/QmTdw0ArIZPwE62B7XLbMB+7gECiw5Y0nYAQH7zLYwaC5EAEGc0Mnn3AACTv/mPQCsBAM2XpOMAALzoGFyolBdMxggAAESggSqwQQcMwRSswA6cwR28wBcCYQZEQAwkwDwQQgbkgBwKoRiWQRlUwDrYBLWwAxqgEZrhELTBMTgN5+ASXIHrcBcGYBiewhi8hgkEQcgIE2EhOogRYo7YIs4IF5mOBCJhSDSSgKQg6YgUUSLFyHKkAqlCapFdSCPyLXIUOY1cQPqQ28ggMor8irxHMZSBslED1AJ1QLmoHxqKxqBz0XQ0D12AlqJr0Rq0Hj2AtqKn0UvodXQAfYqOY4DRMQ5mjNlhXIyHRWCJWBomxxZj5Vg1Vo81Yx1YN3YVG8CeYe8IJAKLgBPsCF6EEMJsgpCQR1hMWEOoJewjtBK6CFcJg4Qxwicik6hPtCV6EvnEeGI6sZBYRqwm7iEeIZ4lXicOE1+TSCQOyZLkTgohJZAySQtJa0jbSC2kU6Q+0hBpnEwm65Btyd7kCLKArCCXkbeQD5BPkvvJw+S3FDrFiOJMCaIkUqSUEko1ZT/lBKWfMkKZoKpRzame1AiqiDqfWkltoHZQL1OHqRM0dZolzZsWQ8ukLaPV0JppZ2n3aC/pdLoJ3YMeRZfQl9Jr6Afp5+mD9HcMDYYNg8dIYigZaxl7GacYtxkvmUymBdOXmchUMNcyG5lnmA+Yb1VYKvYqfBWRyhKVOpVWlX6V56pUVXNVP9V5qgtUq1UPq15WfaZGVbNQ46kJ1Bar1akdVbupNq7OUndSj1DPUV+jvl/9gvpjDbKGhUaghkijVGO3xhmNIRbGMmXxWELWclYD6yxrmE1iW7L57Ex2Bfsbdi97TFNDc6pmrGaRZp3mcc0BDsax4PA52ZxKziHODc57LQMtPy2x1mqtZq1+rTfaetq+2mLtcu0W7eva73VwnUCdLJ31Om0693UJuja6UbqFutt1z+o+02PreekJ9cr1Dund0Uf1bfSj9Rfq79bv0R83MDQINpAZbDE4Y/DMkGPoa5hpuNHwhOGoEctoupHEaKPRSaMnuCbuh2fjNXgXPmasbxxirDTeZdxrPGFiaTLbpMSkxeS+Kc2Ua5pmutG003TMzMgs3KzYrMnsjjnVnGueYb7ZvNv8jYWlRZzFSos2i8eW2pZ8ywWWTZb3rJhWPlZ5VvVW16xJ1lzrLOtt1ldsUBtXmwybOpvLtqitm63Edptt3xTiFI8p0in1U27aMez87ArsmuwG7Tn2YfYl9m32zx3MHBId1jt0O3xydHXMdmxwvOuk4TTDqcSpw+lXZxtnoXOd8zUXpkuQyxKXdpcXU22niqdun3rLleUa7rrStdP1o5u7m9yt2W3U3cw9xX2r+00umxvJXcM970H08PdY4nHM452nm6fC85DnL152Xlle+70eT7OcJp7WMG3I28Rb4L3Le2A6Pj1l+s7pAz7GPgKfep+Hvqa+It89viN+1n6Zfgf8nvs7+sv9j/i/4XnyFvFOBWABwQHlAb2BGoGzA2sDHwSZBKUHNQWNBbsGLww+FUIMCQ1ZH3KTb8AX8hv5YzPcZyya0RXKCJ0VWhv6MMwmTB7WEY6GzwjfEH5vpvlM6cy2CIjgR2yIuB9pGZkX+X0UKSoyqi7qUbRTdHF09yzWrORZ+2e9jvGPqYy5O9tqtnJ2Z6xqbFJsY+ybuIC4qriBeIf4RfGXEnQTJAntieTE2MQ9ieNzAudsmjOc5JpUlnRjruXcorkX5unOy553PFk1WZB8OIWYEpeyP+WDIEJQLxhP5aduTR0T8oSbhU9FvqKNolGxt7hKPJLmnVaV9jjdO31D+miGT0Z1xjMJT1IreZEZkrkj801WRNberM/ZcdktOZSclJyjUg1plrQr1zC3KLdPZisrkw3keeZtyhuTh8r35CP5c/PbFWyFTNGjtFKuUA4WTC+oK3hbGFt4uEi9SFrUM99m/ur5IwuCFny9kLBQuLCz2Lh4WfHgIr9FuxYji1MXdy4xXVK6ZHhp8NJ9y2jLspb9UOJYUlXyannc8o5Sg9KlpUMrglc0lamUycturvRauWMVYZVkVe9ql9VbVn8qF5VfrHCsqK74sEa45uJXTl/VfPV5bdra3kq3yu3rSOuk626s91m/r0q9akHV0IbwDa0b8Y3lG19tSt50oXpq9Y7NtM3KzQM1YTXtW8y2rNvyoTaj9nqdf13LVv2tq7e+2Sba1r/dd3vzDoMdFTve75TsvLUreFdrvUV99W7S7oLdjxpiG7q/5n7duEd3T8Wej3ulewf2Re/ranRvbNyvv7+yCW1SNo0eSDpw5ZuAb9qb7Zp3tXBaKg7CQeXBJ9+mfHvjUOihzsPcw83fmX+39QjrSHkr0jq/dawto22gPaG97+iMo50dXh1Hvrf/fu8x42N1xzWPV56gnSg98fnkgpPjp2Snnp1OPz3Umdx590z8mWtdUV29Z0PPnj8XdO5Mt1/3yfPe549d8Lxw9CL3Ytslt0utPa49R35w/eFIr1tv62X3y+1XPK509E3rO9Hv03/6asDVc9f41y5dn3m978bsG7duJt0cuCW69fh29u0XdwruTNxdeo94r/y+2v3qB/oP6n+0/rFlwG3g+GDAYM/DWQ/vDgmHnv6U/9OH4dJHzEfVI0YjjY+dHx8bDRq98mTOk+GnsqcTz8p+Vv9563Or59/94vtLz1j82PAL+YvPv655qfNy76uprzrHI8cfvM55PfGm/K3O233vuO+638e9H5ko/ED+UPPR+mPHp9BP9z7nfP78L/eE8/sl0p8zAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAHBbSURBVHja7J13mFxV+cc/M7OzLbvpjZBKQhISUgAhgAlVkADSRcDyky4iYAAhAmpQQtMIiqigYkV6FRHphgBBKSGBkB5IIb1sdrO72dmZ+f3xniGTzZR755a5s/t+nmefTGbuPec7Z8497ynveU9on5m3YJMuwNnAt4B9gA3A48CPgY0UyPxJUzN/MLMShxwDXAMcAmwGbgD+UlBKhzVn/+yqqwrVFwIuBL7tZnkyYwaK98yaNb/QW6uBk4DLgfHAduDfwI+ApYUmOnHiKC+0AowAfgh8EYgAvwF+AMTd1OlQ40nAtcB+QIMpzx8Cy70oT8U6YZvXn2x+tN8A44ByYE/gMmA18B9g7wB9v58AzwNfADoBA4A/m4c5KPwWuCdDef4X6KVVtF1yGPAx8IDpAFUBPYGvAguBucCRAdJ7CvAecA7QA+gKfB94DKgMiMargaeAQ0159gK+BrwNqLUoIUNzFPAw0C3L5+XmAXoZ6B+A7/ZNM3rJxDTgl2Y0UUwmAxdl+WwI8HOtou2OzwFP5+hERIAxwDPAhADoHQvcbxrvTB3PZ4HaImscDmSbmukO/F6rXWkYmgnAP4wxyUd/U/m6FPF7lQO35bnmMuCvQLSIOs/J8/npQIVW03bDPjaejWrgn8boFJPpRks2jgReKfLo+yygLMfnhwCDtPoF29CMMUam2ka6Y8wDVV2k73Uw0NvCdV9F1kOqiqQzX+WvQqfP2gsDkWlcO79nD/McFWuGoAJZk8nHAcBM8x2LwRAL1+ytVTC4hmawqeiFNHaHInPQkSJ8rxob156ILBp2LYLOkAu/kRJ8egEvFWgw+iPT0cXocJTnGSmkMxJ4zfxbDJ1WjKYSQEPTC3jBYW/qJODX+L8WMhuos3H9JDP876NVQnGZLsbIDHOQxt5mVqGTz9rrgTdtjtpmmhGOouQ1NF2MkRnmQh4XATf7/L02GyO3zcY944FZZhSnKG5QDfwLd9ZZJiBOBOU+f4evAAtsjt5eIVhec0oADU21qdDjXMxnKnCJz99tJuIpt97GPcOA14HRWjUUh5QDTyAL0W5xFPAn/J2OXoV4k75j455aZMr9ZK0GSiZDE0XWVQ7zIK+7kI2efvKO+S6f2LinnzFSB2v1UAokAvwNONaDtM82z5KfbDBG7lUb91Qi+2z+T6uDkm5oQsAfkSknrx6+P5kK6ycLkTWYj2zc0x14EYkqoCh2CCGbcL/sYR6XIDve/WQbsu/rKZvP/B+BKVotOjbpHiW/RNx9vZ5OeByZv32vwDQmG51DsOdJYne/TCdk09xXgUcdfN9DkE2urwGbXCjDLsDvEG+5rcCTSASENVqdA8HtwAU+5HOjGWn8psD7RxmDNRZ7TgZ2p+1CyMbjzkZzoR3izyGOSf8DVrrUFv0S2cvWgqyl3Qgs0SrsnaH5IfAdn/LsgrgTH2rzR031FC/ysXzKzSjsBex5sQGci2wa7ZXWIzzZ5vRDW6oR76NJ5v9VprE4wxie/2qVLirXIaFQ/OIu03l52OZ93wTuxd/NytOQdZv/2bzvGMRzNeWY1Aqch2y2djLqvK9Nx/prSKidc8wzprhI2PxoN/qcby/Tg7CzN+BbPhuZ9JHNWTbvmW4qcvr362xGH/sXqCOCrJ9NylKezwB9tUoXjfPM7+4nEdPg2pmOHoXE1itGRIyLbV7/VdNODGvTOXY6xf8rMs/e1AAPoc5Anhia64uU9zDsxSD6VhHL6ds2e2DX5RjNPYd9t/GQeThOymO8r9cqXTSKVfblyNRuZ4vXX4D/LtLpowarcdGGmPYhksXAPkhh671T8zzPVfi/HaNDGJo9LF77EWAlhvetNvK342s/oojlZGe387UWRnN2A4/ebNHQnqpVumhYfY5WIfu18vFzZO3ACt2QfWBW2KeIZVSB9ZhjV5A7MnQVst5rZ3PoNy0akckUL3xWuzU0b1h8OI5FNkLm4zc2jI2dDZUbi1hOG2xce6iFawYg61TdLVx7iemFWaGzVumi8YbFenQcsMLCtS8jrsxWz3tpKIHnCGCLxeusRK7ugkytWYl1dpIZIVmJUhLFXhgrxYKhud3Cw3GUMTZWuQ5ZuM/HEzbSfLqI5fSkjWuten+Nwto5GVNt5P2KVumike8EwTrEYeNDG2k+jkQZz8cyrHtxPlHEMnoLObfKTYPUC2ubYi/Cusfc+9jb6K1YMDTP5xhO1plh5GKb6SYRL7an8/Ss7Cye/gg5LMpvmhCPGatML9JvuQR/3GqVzLyU47dvBE6jMK/A35B9zS/1rH3X/GvV0DxVpDK6zsa1P8H61KHbsxdnaHV239CALGSex65TRNsQd793Ckw7bob+r2X5MU8E1tqsABOQHdfNPpbRbJvTDffZNExuPRyTsTfFp7jPDchO+LVtjMyZyFSYk9HS3VmesSuw546bRDaT3oi/02hbsrQF2XgT2SIQ91FjI/AldC+N66Rv2PwjcpLeoUjI/FkuVMTUD/d7Y1i24GyD4Xrg66bn3gfrIcwxUxDftZnfJxTmUn2jGdJf6sNvmBp16sMRDP6CuKEfjBzP/KbNDlWu+rsNcQqJIGGSbkKmo+wSM52hn5jnyM5xzIcj0+J2PNe2m05nzKbOvyPrML/24XdrQQKIvqVV2FtDkyrsVz1oCN0Ox7EDawuqIIt/PynAyHyALNyudtAwdMXbaAstZkrmHa3KgSJms/dudSRyHfamn6zMOnxq4/pTTaNvx8hsAk5w0ID/BnGaucnD3yuJzOg8o1XXG9r7oVoRJFyL3T0Os5BgnKtdqLxeOTHETfovazVWfOAi4BGbo5+V5jlyOkqYDvzCw+92HTKbo6ihsU3Kz/58m/c9jbhyb3FBQwvZ16mccpk+HIpP/BCJJmAnztl84PNY23tnhSke1fefYW/vn6KG5jO6IN50dsNU/AGZimpyUUtqnWqei2neSuHBFBXFKiHECcFuiKo3kVBJK13UkkQ2XLo5Q3A/cI3+zGpoCuVeYGIBw/ML8cbLpQ44GncW7H+Hu/P0ipKNb2Mv/BLIOscXsLa52y6tZobgPy6k9SIy9ZzUn1kNTaF80ca1CeByxDXVy0q3AZmSW+UgjaeRSAH6cCh+MNnm9X9CHAYaPdTUiERBn+sgjbdMGi36EwfT0Fhp4BIB+F5Wp75akLDgfp1YuBw4nsLOpXkDeyFJFMUp221ce5sZIbT6oKvOjJoKmSFYgkxlN+rPG1xDk8+luIlgbBq0Emaj3jT6D/msbR7i7tlo857j9eFoN6x04VnzAysRBJLIQv1Un0fahcwQrEK2LOjG5oAbmnxeH48he1yKzfQ8lWkdEjn6pSLpewtxVGix+HAcj/2D15Tg8mCekf/7uOs84kTnm3lmBL4G3FkkfXZmCOrMtUu1+vlPmc3r/4UsRl+Y5Ue/MiDfa7UZNfyT3Q9XW4as4RR7J/1LyE7k+5Aw722JmYf8Apyt6yjBYw4Su+8nGT7bioSxCQIJJAzVv9j9wL4G4HTEu7OYzEPWkv6BRDloS9xcc4mbxnvWrPmB+IEmThxVEhW+EGeAi82PNtf0aFYju4UPCtiQ9H/AOGT9ZRUyrfcY4tsflHAtTyIhzi/NUJ79kHAfi1HaIzchMdBmI7H7NpsRxEFmRBMU1iMenFORM6l2GM2HB8DIpD/rQ0x5vmnKcxMyA7M3sJ/RrJTIiAZkHva3WDsGoNisQTzKLg+wxjpjWH6t1bFDUY1sgEyav4TpfScCqLUJWey/LcDl2YRELnikBH77k5EDEsebkeG/KF50en8MzfxJU/WRd4MZM7QMFKschhy/nD6tW4XExTsL2U1/BR3wfKHUVFCxp6Y8nJK6po3BrgK+gawfTQIW6IimKI9kM4rSjvgcsh+qS5bPI8AYZOPjUbgYTXjixFFWGvAIsmbY3fzb9nWuz3Yga7h3k8VrzmEDPhwYbUYBb2L9VNFUg/4dY8hHmbZvCTKd/jNkbcxrRpL97K+eSJifw9XQKIrihH2AZ3MYmXSqEWeWI/HOA60PEl7mc0APYzScHAdebXrs1yBrjlchO/Cd0h/4K3BE2nv1yHTTneR3q+6OBJ8dl6Hhv96MJCfhvdPN2eSOF3cYMJBguLa7a2hGvVb8eHLtYvruqquCo0Wn8YLIQGTxvJeNe3oYw3SIB41gZyRK+TCPvu9Y4DkkUsA/HKTTAwlKO7jN+7XAz5HF/kvzGJvpGYxMOoMR54xvelwHBlu4ZkB7NDRhff4VxXN6Ie7s/Qvszb9s00BZ4bseGpkUEeTQw04O0rg+TwN9CRIMN9dIYYKFfD7nR8fewjWh9vgAhB1WgM3m73qUFF8CPkRCcSR9+ms1eZ6kxR84uhgj46RR39uMCjq5qOsMn75/byQieqGcbuGac5GTTbMZGysLvT20qgbP0HzJDDVTi4A3aSP3GX9GFhsjPuYZMXn+RYs/UFQjrqtjXEhrAuJEUO6StmE+lsP3HdxrdRR4DvBwlvKxEkm6m1bXYBma/mTe8zHDg+F9KfJQB81b2ZVyJObeIS6meRQSIdmNToyf+3VGOrjXztrUaYgXWUUBhqYC8UxTAmBouiCLk/2z9JAecrHHVapcgr1z2N3ieiRqg1J8IsDfkKCPbnM27kQb93OjipN1h6dsXn8iMs1Ynfae1dNydVTjEWU2H57780wDHImc7X2JawpnVgantKzv6TkTWcD1y+g+CNyi1TkQhJCoGV/2uDOzFvixgzQeBg70qUycbIb7MbKTfqCNe44xHeITkb02dgzNp1qFizuiuQsJVJmPb2H/VL72xuv4d3rf28D56GFoQeF2JBCq19zosEP3K5wdHmYHJxHdNxrDYfdY6FQsti42DI1Th4Awspb2JSRWoRuUIxs5601Z/AUY2l4NzVSblfpOZD7ZbWqR8A2fIHPMXnlxJUwet5k8C+F+vD9y+VO8P9FQsc51wNU+5neXGT0XOso4GtnJPx8JTPk8Mv39G2QH+/eQTZfFrl+LjOH42OZ9hyAef1an7pxMnU0GFiLBO59Gotmf5fB7p6ZgLwJqjCH8OhL9e3IpPRhWps5OQjY82SFqKuwhuBcpuRqYiQSi82P6YyCyw/lYJOJzIQ/brchu8G94NB1xGnqEQFA4r4DnxCkRZMf8RmSqtpDRwkU5Pu9sjE91AMp3ObJz/kUkFI1VDjDPoJeG5qtmpBFuMxL5i2k3nnbQkcg0BVuDxMo7gBKJjZZvRDMBeIDCvNN6Il43XVzSer1PRqYt43G2T+jCAhsBK+m+hRIUirWXrNw0Op1dTrcaibc2IUBlvBIJQ/NRAd/FK0OzN7JhNJylw/2AMZB2yTeLVF2Ejo0nhmYvdvfesMu+Zujnhjvm2UUsJyd5t5iRh5vxqm435aoEhz0sXrcKCf2Sj59j7QTWVAPpZiesCvH2mhTAcl6DTKPN8SDtQgzNVezuTt3WIDyNhOSxyiVkD76ZzomzZs0vD8ohbIUYmi7IoVxu7Is50WKh5WPPIpaT07zrkLUUNw6Gewbv134U+7xh4ZoNyJn1VmJZvWw6OHGL+Te49D1SI6QvBLisNyDrS28HwNAcYOGaLsiU3xAL156ETJmFLP5WnUrh4QhnEf847uxmTnENcra4E1YXsZzcyHsp4o3iZGH1Q1OOcZSgkc+9vM50uj60kebjwGUWrlsGvOfCdyhDXOWPd7ls6jwo783GGL7uYprdC7hnq8XremFt8+73sD4D9DbWPeoCZ2juxRuPsd/hbL73gSKWk1t5v2V6qYW4Im9Czm+vQwkiL5F9zrwRmT79bwHp/ibPCDaJBMh06t6e8nA6tYTKvM6MEP9TREPzQ6xPcbo9qju7VH6otoZmKvB/HuVVaXpo/Qu8fzrezMvmYw7uLro9jf2pr1bEjXUJSpC5wTw/a9sYmdQGXiejpbszvB9HTuL8h0PdISTK8lds3vc84tJbTBrMCOzfLqRVyNTZm/i3Zy69Tn2plNqDdEPzVdxZS8lFP2Nsqgss3MOQmGp+nNewAlmQPQz39xHcanqqVvku3niuKe7zF8Q1/jAzihmKHGDmlMuMwdkCbEPW6j6P83A0IVMXv2nzvv+Y0Y9fvfnO5rvOR6ahlwLvINNHM3FnDbdQ9+b7kdM7/aDFzGyUlMdpah/NocB9+HMWwoGIO+A5BfQC6pENcVdT+lyGnLORb+PVPVl6s0pwiSGHdblJ0oyE3XYE+Tn2Y+S9ifP1Rrsd4ieREFde4mTD5q+RdZhpHupLmtHTC6X2QKQMzSP4GwzzLMTdN/8I6rBm2ilxZI71NbI7XrwCXK7ttuIRl5vRsh3eMZ2jeh91nuaDkXFqaEDCAvVCTvz0gmvN6KnkCJthc78i5D0dCT7YkalD5pcz7e5fisyZt6Ao7lNlGkY7zAO+yK4OKVY2czvtLZ7uU5m40au9zCNjcCvw01KtbGG8jTJrZWTT0VlF5iCkV+LOvhtFycQEoKuN6z9C9q5savO+lViAOxxqHe5TmfzZhTRS01vPuKjLj7iJnhua85EFNj/3ZsRNnv+nzzsgXkM3ID75683rp7VYFA+xEyx2CRJBeUOBowCnbUvYpzL5lUvptJjZCDf2+PwT/73aXKcMCTXxlD53RWc6JRS7SCl5rG4c/QTZV5dt0/LLFkYcTj2kluB9nMMluOuq3Ygcq5JrDRYL5XYm7WD6vEyfN5eYMUPLQCklliFhUXKFmlllPs91FsxU05B+PsvnryOL2E54AjjDw7JIIjvy3R411CHR319DTiC2a/j89Ozz1tDMnzRVHzlF8Rcrh3j5sVfsXNMIDs6i8RjybwqsQ/YMnYl4h40w7y9FTvF8GDnfyQkPIftUDvGgDLYi3ndPelTGaxEvvVexvtdnFeJl127WaHVEoyj+86DpQWdbe3gfd6N952rQPocccfBlJGrHKmRT9XRkvdAKCfOdHvRIZxyZhrrNGLVo2mchcjs1VJM5uvJyxJPrYazHKyuUJcbYvEb+Y1NyeaKWrqEZ9dqtgRCiIyufuOqqYOnpmFOOc4AfAT/J0sP200lmE+LheGVQCidL2Pst5D6kzRMNEyeOcivJecg02jNkjorfYurFFW52MoJyhEDpjGhmVhY3//a7cVQpDjchi89XIgvdjUjssB8Ci7V42iX/RaYpT0M2dY4HtgP/An6A/aOqS2dEU8A9XZAd7d9CjkjdYIbaP0aOhu3YtF+DGEJO9fy2/u6uUI1ETE6avwQyRZTQonHEPsZYH2PK91dIWJigHK3RiETJLoWDC7+JbEAdbUa+T5myXG83IbuG5mTgj+waqmFPI+ZiYDZwgY89sj2Rk0ArkXnaKvOXel1ptKa/rmxzTRVyBvd7wJ3I/pXt+rzuxm/bTF2kfvcTkc1/urnUOocjYZ/Sp1CqkMC2ZyF7zK5AQhAp1jkN2dyY3tu7ARiFxFbc4VZGqSm1Yk9NuTi115Y7TR1M0Q85+fN4YCI215DsGJqjkIWzbDHRypGFupcR7xAvF7MipuE7H/cCgR4E/N00mBfizt6iEOLZc4Xpae1AFgSnYf9skqh5YHoCnwKLfOylTSb7/PgQJDDj17Wds8SBpm51yVG3xyBz+UfhfZTersjR4HYX2TtlaQuWIlGmH0GiTPvFOPP8VmQxQM8iUY/9iNE2wjyrDUgAUjunn1aZ9uJMk0YYcSZ4xDxnfpxHdVgbI5POIKPjTDsJWt1xOwHZvW4l8GZ/86N28bAgrjYjJy+iTfcCHjOF7dTI3IdEqh5rHuIa02i/bvRboQb4mTGAc5C9D/ONsbkO66fxOeGcPJ+fTu5z05Wd0zr/tPhsVJtrx3ioJ2Ke1QtN47hX2t8QMwOQ7S9bWzAUOdtmKd7ufWnLLXnq4FHI4XQ9PNTQ34xCFyDTys+b5/S7Fu/vaTqgtwD7me8TZed04DvAHj6UZb4D1U7B5hHSVgzNGGNk7JwhM8ZU4GqPHg6vPWQipnF32jh/M8dI8l5knSsX5UhI8KsyNE69ERfUe32oeIMs9MJ6qR3JW4bP2yynHuY56u+Rpq/gzd6UVKP5EOJp5TVVFvM50MwoeFGePUzaR7R5vxa4A1krytcxvhnYN8fnQ43B8ZoBFmZXbJVhPkMz2FT0QhqRQ5EjkN3uce9jGlk/pjic9B7yGZEQcoZFrgOTTgUOzpPOuRYqhlNCLtSljkxvMxItpIHrj0xHe2HIvT62OYwcVOg1lTbamX2AWbgfqPN6Mm98TXEpcrZUrufkIAv5HBSQOl1utyJko5fpTTux/ieZxtTNKa4ePhbmjx0aRCsN+C/JfubMEItpDEIJKl2MkRnmII29zaxCJ5e1DfXh++9rsR47YQty0qad0eVMZHrKLawcZXAhEiE6m1GMWUijWyk+BOEcD8cLDh+OFBfh7hHRW30sHyfHGFhdAAwBvyDzdGCTxTRqUYJINbJHwo11lgmIR6SbBxT6FRH4Uh/yOANxkLFKHyQszOEu5W+1Q/41xGkhmsVg5qN7ezE01aZCj3Mxn6mIa5wbzMe/0/2cjMRetHn9DHY/otpqQL1qlKBRjgSDdHMN5CjgT7g3Hb3Ip7I414c8PkEceN61cU9n0xH4kgv52/GyPZPMpxpbMTRd8McByFNDE0XWVQ7zIK+7yO/NYIUY8DufysdJ5NRbsO+K+FNjlFNY3c+jhiZYRJD9HF4shJ9tniU3eMyn8vBrF/M6JBjlf2zcU4V4iH3NYd52t0OcbO6psmlooASnz8Jteu9/RNZVvHr4/mR6ZU6ZhvinB9nQLEWm3pps3ncLO0/Ts7oPoUbb9sAQQhZ9vXTtvQR3vI8eR6aPvGaLj+W/DdlC8A8b95QBfyH7WqkVfoz9vYPHsatH76b2amjSN2z+EtmZ7PV0wuOm1/Geg3TqETfCVMTZHcYo1JmGvRHx5jrZhUrrhOcQn/MnbI46ppvfZpbF62td+F0OMRX4NRsVPt8Q/3dI5ICtSBj2nwBr2rmhuR3ZSOw1NyJ7q37jII2EeUamI8c0p/ah1LEzFE4lEoLECZsd3LsvEnVkLPacIexGPUmtldZQ2JryRuTsHrvehUcD/0aiU/s1ooki3qw9gTfMSNApnZGtFieZ+vOPdOOb+jF+SG43WzfpYgr2UPKfdZGLFjM9kYkfuWBkwJ1QNM+bwn/aprG5EXEtt4KTqbNzkfDrvdKM68kOe7rVpqJNSpueuMT08k/EflSEUuE6dl9n85K7TKfgYYedqcty/I5PFtHQnGdGh34G//0JslH2/QLuXcjO6CiDbdw30bQTj/hgaL6C7Ozvl9bGnWmjrcnWUX2CnbNVVYiH3anGgP43bH7MG31+IHshi3Be7A24HplacwO3Trd7yRS43fSO99jQTEeiF/Rq0zN5Eti/wDQjyDrfpCy/+zNA33ZoZM7D/6O4I8BfcWc6ui01pvE5xoW0Cpk6G10EIwOynODEcWk54slmtxM9AevbKQo1NNcgZwb1S3uvkzFwBzuog/dnqYM9U8972DTMxWAYEqrCTaYi4dfdws1jVF9F5o4bPGoU7HIMO9eCMo06n8O+e3sI2QF9Up5ORrHqnJcU6zuVA4+aDoKbsw7P457rbyGG5iKKd4zJN3G2Z2mFKbuPCpgJsEIhLs4HI+u/2fJ9jsLc8O8i93pkL+AHYazvfv8IcS3Oh52T1I50sXJcnaMgnUwruMlMY2zcds8uZI0m3znuvcwUgJ355pvJHxEBvN+RXgysPkersLb29nNkethqD3e8S9+juxmBu+mWXYih2aeIv2UFzjdBf4qsI8/1QF8hI5qryb1Bv5DOpdVtKyeHkcUgKw/HsViba/2NDWPjVkM+BXENdhsvjguYZYyNm1FYC5k6O9TCNQOQ9TQrPahL2NU1OxedaX9YeY42IJ5GKyxc+zLiymw1QrcbI+XeJt8DXC6bQgzNpiL/nm7kvx6ZUnrXZW3dPHre+yFLGr0tPu9WO/a9w4iXTL6H4yjsue5dh4Txz8cTLhT6Fab3ZwerD2+jR5X4ddPguGVsCjE0Vr2/Rpk/K70bq7THc1byPXR1iCPEhzbSfJzsC/XpLMOZF2dqRPYq7m7UdmJonijib/km7nhipQzWUbi7HaMQQ7PW4nXDkDiPVgyNVf4RRuZib87xcEzG/kFmScSL7ekc12zE+eLpZUhkVDvUYX0+vdHDyjzbjBK3upBWIWs004v0EC/B+hEJpcRLOcq0ETkTpRBvu9+QfS0t9ax9F2fhZAYaI2N3usrq81HI6OARZCG5GHzf5fTqgC8iWweKZWhuxr+QQ+ksBS5Pzdldj3jNpJ+SuA3ZA/JOgRnEzdD/tSyjpBNtWNlsFvUX2AsTU4csgltdpHM6tRdBDgSbgUwnXofENLsI2czZz7zvtAIUskZzH+5551llg+m4tNfTOG8A/q9NvW5E3EdfdjhaujvLM3YF9jYntmUIspPebjTj/2F902ghI5qkMc434e802mbTCXSbejOL8aILaRViaB5Fjhvx+3k/Dlid7tXxR8RN7VDkZL1ZOD8LvhGJI/R7Y1i24M7GvQvMg2fXyBxnHpBzLN7jZI0mjIT4ONmHH7RQ9+YbkUV/P4IepkbHS2jf/AVx705tiHvTYYcqffS+DXG2iCCOJTfh7ATO4abhs3vMxCzzPFsdmRY6ao8BPzAdoj7YC2VzpBkNRm3csx3nRz53ZvcNsFvTOpNuhOMp1L35DvO8f9+H5yDV9i+B3d0HW3A/JEUdsoPfLQ4yFciOkalH9qTMtjkCcDJ19nWfjIwTQ5NqwLribVSIFtM7fYeOQczFaZL0Hv515J5Gs0NPJEK7XSPzimlAttto8JyGoIkjXlxWOcN0RO0YmU3IXjcnhjuMxC87wuP65eSolOvM836Jx8/7yellWYqHVV2PPf/6BmNk3iigYXZiaM7zsUycxDpLGq1Pe6QtbtJ/GSVI/ABZm7HDv81IJjXSt7qfw89YZ99GNiXaOVr8E2R3/lsO8z7NByPjZEST3rl80CNtqfbkxbYWuNSws/em0fRSZhU4AnCyRrOfj2VS5UIP5GwPeuGpSn2/tuuB4xSb1z+NbMRN73wFzdDcaEYydsLofwB8HljgQv6n+/Q9dzi8P46sJb7ggbZrMz3vpWhorM5xNpqRzEwHIwAnazRVPpbJHBfSSM2pznNR1604C/qoeEc/G9c+ikx/txTQs64HWj3+LqmI2XYjWs9CYpOtdknHCJ9+u/tcSKPFdDbecvl5z7ifsRQNjZWGsNH0vv7j0Ag4MTQrfSwTt85lr0MWMd1YsP8d7q0nKO5jdc3jfsRDMlOUAiuGxg+PscsRT067I7RjXR5thXz67e52KZ1UZ9yNzuX9uZ73UjQ0v87zeZOx1C/luMbK5rbN2Ntc15YXfSqPjTiLvNqWDeYBXOUgjaeRxcYkSlCxcujZH5AplmwbnK0cK+3HtJndEzL/gKynNLmsww+Pyg+Aj11Mb7MxNssdpPFPZF0m6ZahsdJwJHwYNv4xxzD9FPLPPf6N3HsPms0D5sQZ4Kd4u+ET0wCcj/uBOpebyldIb/QN7IVOUYrD9DwN1m+QUO+5fkcr0y7/8+G71Nn83hd6VD+9jmaQwJu9MKkQY4Xsb3sL2SeWMy6fXUOTL0ZTE95vxkuaxvUbSCiXTUbXn5AF+OctNtCnGGPyH2Og4ubBuxeJYup0V/Ji0+Bu9qgc3jaVwytvsXnYP9pgnjFQjSi5WOnCs+aUTchRDq9m6KxdieytytexvN70sLOxDH+OILHSwCeQKbYbPBxpP4Q3mz1TMxdnWmzfCh2NfcGm0V5iRpN5n3e7YbjvJ/d+i8dw7hFh1dj81fw56R38xfx5xdPIPoXhyL6FSmR9qFva667m39TrSsQrLv11F/N5Ajnk6gfY21dQKG8ha13PWpgmWWWMTB1KPh4Evpejo/c+7jpl5PrNjjT1c7QZGb9pY4S8EdnXdoVpBEchHl9LTFvwM9wJsZSPBxC35mwRp1tMx/QhH2YYjkcOEjyMXffxhMwznY1OWZ6xpUhkiEdwP5p8W+aa5/1f5PfMTdUdSwMLu4bmX8gi74VZpluu7LBNx8ysznCNuOMVZl3HYc1upvgScirffWRe/I2ZxukCnK3r7MpVVwXr950xw83U5iCnwP4kw2dbzUjbTxaZv0JoQryNbi3irxNHNmlmOlOlHjmW4iWftGzBvmNCoFoyxMPw76aDm+l5fxuZVbL8vBdysNDFSNjrS4CRxqI9ZR6cjZ59fXcbT8UeTyI7wr9qfn//fvf2y03I0b9XImfJNJppkR9iP4itIiP8CWZ09Q1gr7R26n0tHls8i5xDdZYZKY5GplqfMbMptiNbF2JoUmeJJNv0KIo1YvAH7w3dMchRq4cg6zo34O20nl3qEI+/Xwf8IQmZEfe3kWjEG5Bw+z8OoEF8BOvnxLvCxImjaMf4Prpqx+XZgMSodOUUZLuG5mTE4yt9CmVPZPf3xchC2AXaI7PNT4xhSdEJ+DMSWdfdxdTUFFD7Ndy/bTN1kaqfJ5oer6vOKu284VZKnKDUTzuG5ihkITrbonA5sgD2sumVr/JB/56mMU5fVK80hjD9db5F+Bpkb82diNtzg4+/wTfbGJl0piEB9K7A2z0pIeBck88+iEPHayZ/u2eoRJFF4Z5mOmMR/rk6Tyb7/PgQ5IC8r2vzo42jEkxDM8E0wFY2aPVH5vgm4Z0HUgj4pZkecWvT6UHIAthGMyp7yofyL0c8VHJxGRJT6lxkIc6LsrzPGLx0YzEZmc67xOLwucYYpgvYdRFxPXJu0G0+GJx8xz+cbvTt0EdfUfzDSiM9xhgZO6HoxxhjU+2R7suREzy9iGzQE3HNPMyH8j8Ya+dzfxVZZ/Aifto5bYxM247IvcgZKPkM5gvIZrK2niq9kU1y9/pQnoPyfF6FnMehKEqADM1gYzAKeTgPRfzbIy5rDgFXe1wuEWQPgNfYCe9/IhKmvavLGr5lobx/bQx7Nk41RjMX52L/7JNC6oYbnStFUXwyNL1ML7W/g/RPMo2Um8HmhjrUZJUDgT08zmM29qYXJyFuxn1c1GDlnPjUVOXlWT4fYjGNQfrIKYoamhRdjJEZ5kIeFwE3u6i5t4/l82OP099sjLGdHb/jkfDmg13SYNXxIYSstWTalGs1OGGtPnKKooYGZF3laWCci/lMxb2jQ/3cC3GWD3nMRDz61tu4ZxgS5220C/nbjTI9g92nLq3GNqvWR05R1NBEkXUVLxbC70KCTDplCf6ccZHqxfvBO6bMP7FxTz9jpA52mPct2PcO/KnpPKSwem6PGhpF6eCGJoRsxjzJo7wiSITloxymk0A25fmBn1GIFyJrMB/ZuKe7GZEc4yDfpWbkZvdsjlvYedCR1am/Gn3kFKXjkb6P5pfkjszsBuWIm+6RWDt8LBs3mxHApAAbmsmmPIcAFTbui9rMpxMSg+iryJG7hfAccmzCEzZHHdNNHZpl8fpaF+rPIcjG29dcGtl2QQLFnogEtHwSidSwRpsHRXHX0PyQ3O6rbtIFcdM9lMJPpGtEjhz+MuIyu8O8V4ccWrYdWRM6zaHWQsJyh9g9DIrXlJvR4gsUvkn2eTOafdqmsbkR6yd8Opk6OxfZ9Nkr7bc5md3PU7FDNbJHLNVhqTL15gxjeP6rTYSiuGNozsOfw4nS6YUcOXAohceeiiE7+TPxfReMDFhfe0jnWxQnTHgnZArsHgdpvIQcdvZPm0bheI8NzXR2P4+8sxl9HIVE6bVLBFmPnJSlfj4DjAXWajOhKM4II6fkFYNhuBQZtA3fwz136kKmzr5VxN/z2y6k8Soy7edFvLdC1miOyWBk0kfHz2HfDT8E/Irc65G9ivhsKEq7MzRWNyV+BMy3cJ2dEN1Huvx9pgC3u5heIYZmRBF/z5EupTPTGJt6l/UVskYz1cLo+GXsbeK92WKH4FRtIhTFHUPzhoXrViHn02+2cO1vbBgbN48mvQKJzusmhegr5pknbobAn2WMjZuBUQuZOjvEwjUDkHW/7hauvcSC8UrRWZsIRXHH0OQbAWxA5sHthP2/DmsuyE+49D2+A9zhQfkUskbzdBF/zyddTu914DgXjU0hhsaq99co8+d0hJTOK9pEKIo7huZ5sq9p1Jlerd2DzJKm8X86T89/ugvf4RLENTtkU58VCpk6+xHwcRF+yyYkTL/bzDaj2a0upFXIGs30Ij0bS5AjBRRFcUjKvfl682C1dR89Bdm1XghxJBLAc+zu2bMB+BLOPXouBO62aWTqTONlZS2nEEOzATm/ZwbiJuvXUZazKXzaLoIcFzAe8ebbhriJN6S9vhXZpOkkWkIhazT3IVNj03x8LjaYDtYGbSIUxT1DAxIV4H7E5bgrMkfvdL2h0RiU3yP7Erbg3oa48xBXXrtGZjLW5vJTxrYQ1iMnOV6ARFq2c5LpZcB3beb3CYW7VIeR83dO9qG+FerefKPpAF3qg8ZUHVmizYOiuG9oAFpwtgEu24P7ZZfT/Bqym9uOkalH9nu8ifWYa9sd6twBrLB4bcgYYLtG5gNkHWV1gRq/7pORcWJoUga4K95Gr2hB9l+9o02DonhnaEqB/YE/YO8Aq+3GyLxhs8HzK9ZZxIzOzrd53yxkL8gWhyNDv3AS6yxptNbiTTy+uEn/ZW0WFMVdSvG0weuQkCtWaTRGZlYBPWs/DE0VEv/NrpF5Glmk3+Iw//18/O2cHkXdYkajr3mg7TJk6lhRFDU0tgJpNiJrQzPbvN/J4v3bPP4uXdgZY8wOf0CmeJpc0FDl4283x4U0Uut+81zUdSuy/0tRFDU0toxEI+I1l2kvhNWNeNs9/i73AhNt3jMd8baLu6RhpY+/3QyX0qlDgqq6sWD/O7KHuFEUpYMamrkWrmk2Pf4XsnxudW3Ka0PzRRvXJoDLgRuwvg/ICi/69LttxHqUZytsQKYOVzlI42lkH1ZSmwJFCY6hsfJAJjzWfFeez1uQGFX/znGNlbNwNgMfevxdrE59tSD7XO7yQMNP8X4tKo6sQbkdqHM5sv5WyLk0byDrPXFtBhQlWIYmn6tuE95vcnsAme7IRIMxMs/lSeNhcoe/aQb+z4cG2EoInpRb9kMeaVhsGtzNHqX/thl5eBWaZx5ytEGjzXuOx98TVBWlw2LXvfl+cu9jeAzZO+I1FyFuqJcAo02D8Qqyc32BxR72Gch+nHMRl+lOyHrF86aX78eGvelGR68sn68zjajX+zqeRnbfDwd6ItEMqpCTLFOvu5p/U68rEe+99NddzOcJY8x/AHzqQzm+hThUPEt+j8RVxsjU6eOvKME0NP8yo4kLs0xjXOm6wplZI7g8aP4KJQH8xfxZ03FYc/bPnypo0/pqTr47ddBYW2OzDPgiT11q3+AdVlB5NOKOV1ixeAn4ChKypluGz2PIZt0LcLauo3jMxRdfHBgt99xzj/4gRTA0ABcjJxpegpx/sgF4CgkmuVGL1CZPXfo/Tr57HHIq6KlAD9Mz/w5PXaqnO9rjSTOy/aqpp57Xz1JpFLXxVkrF0NQg0zhHIsEX+yLOAT2R6Z8DTI/4FdNDbyjSd2qrcwgypQMyXbI8cDqfurStzkmm0fROZ67RWWlTB/za/BWDPZCp3QPwbo9SEzKdei+FxwwsFZ19kaC/JyKH25UhzjG5PEIbzAg2E0l2j0QeQyKuP4Ksm6oXYhEMzTDgWmTBONselt7mb4LpSW5HFu1vw8Jax/xJU934Lp7rdIlS0VlcZswoRdWnIFOxtT7k9SXgKiRW3VPtVOcYxP2+d5v3y8m9FtetAJ0HA2eZTt2ZqKOIq+TyOqtEdkx/iMxrd7KRbidzz4emcfQyVL7qVILAvsiaYa2PedYi3oj7tkOd5WZ00dvn3/EE3NtYrOQxNEORhdNrsRdXLFNlucakNcwD/apTCQo/ACqKkG+Fybu96TzJPDfF4EJkmk7x0NDsjxzhO97FfMYjQS33dzFN1emuTsUZRxUx7yPboc4Di6gzQqG+m0pG2q7RDEM2O/byIK8+Ju1Dcb7OoDrd1ak4p6edi+NlYbb0q6KuTyVNtVGSYQgloKo+Rpd1zXT7tIlIq+UgG7280llR1srofqsZ0WctvWrqiYQTxBNhNjTUsnBdXz78dE92tJZ5odPW1F6nUIgxkQj7lpWxRzhMp1CIeDJJXTLJikSCD1pbmR+P2wlb0kWrtDeGpgp41KNGMb2iPYYsvBUaeVh1uqtT8ZGWqggrxnRl3dBaEpHdz+3bQhWfjuhMOJ6kz9J6Bs7bSnmT/1FyOlc1ccK+7/P5oUuIRjLnf8TwBcTiEV5fOox/fjCObU1VvuvsFApxXHk5R0ajRNt+GArRExgaiXBkNMrmZJJnW1qYFYupW5nPpE+dTQPG+ZDnWJyd/6463dWp+MSGwZ14++T+rBneOaORSScRCbFmeGfePrk/GwZ38lXngYOWc9NJj3PE8IVZjUyKaCTOEcMXctNJj3PgoOW+6hwdiXBjdTXHZjIyGegeCvG1igqmVFXRORTSClkEQzMUmOJjvlMobDFbdbqrU/GJT8Z1Y8HE3sTL7IUXjJeFWTCxN5+M6+aLzi+NncP5E2dSUdZq676KslbOnziTk8bO8ccYlpXxnaoqagswGCMiEa6tqqKbGhvfDc1UsNQpcIuoydMuqtNdnYoPrN6nCyvGdHWUxooxXVm9j7fLBl8YOZ8Tx7xPoc1vCDhhzPt8YeR8N+RkXfjZOxLhm5WVjs446RkOc1lVVS4XUJ1dc9nQ1CKbB/3mLOwt+KlOd3UqPrC9WznL93NnNLJ8v25s71buic7+3TZz6n7uxG49db93GNDNcTDwjPOFFaEQ51VWFhQ7qy17hsOcWpHV03ub1l53Dc3x2Ns86BadTN5WUZ3u6lR8YNkB3UmG3ZmiSYZDLDuguyc6v7z/25SF3TlKqiyc4Iz93/ZE59HRKN1dnPI6IhqldzisFdUHQ3N0EfM/2qNrVadSdBq6l7O1r7ueWFv7VtHQ3d1RzYBumxnZd42raY7su8aNUc1ujdWR0Wjg01Qyl/PYIuY/1qNrVadSdDYMqimJdA8c7I23mNvpDotEPPEW26+sTCurD4ZmaBHzH+rRtapTKTp1fSpLIt29e6/zRKfb6Q6NRDzR2S0Uood6oHluaDoXMf/OHl2rOpWi01xbVhLp9q71Zt3b7XR7e2gMdJ3Ge0OjKIoHxMq96YHHKtxNt1N5iyc6O1U4OtV9t8WtMg8NTYa0m7UGu2toiunGt82ja1WnUnQicW+2YkRa3U23Je6NQWxpdTTy2s3jwctAPK3J3cp0h9Zgdw3N0iLmv9Sja1WnUnQqtreWRLqbt3vjje92uhsTCc9+q01J3Z/ptaGZW8T853p0repUik7N5h0lke6KzT080el2usvj3oxp6pNJNnhoxBQxNC8VMf+XPLpWdSpFp8dKb04D7rHK3XTnrBroic73Vw1wNb2F8TjbPRh5zGlt1XgzPhiaZ5Ez6f2m0eRtFdXprk7Fa0OzqtH1EP/lTXHXDdjcVQPY2lTtappbm6p532UD1grMisVcTTMJvOpymkpmQ1OPnCHuNw+YvC2PcFWnqzoVjwklkgx6f4uraQ56fwuhhLv979ZEmGfmunuixTNzx9GacN+p9d+xGPUujmr+29rKKp0288XQANwK+GnWY8BtBdynOt3VqXhM3yX1dPvUnTPpun3aRN+l3vQlZi0Zzodr+rmS1odr+jFr6d5Ok8kYIHZ7Mslfd+xwZaprUzLJQzuyrnepB6cHhmYJcIeP+d4JLC7gPtXprk7FB0a+tp5OW5ztVem0pYWRr633LHh9Evjda4ezaquzSNOrtnbjd68dTjLpeM9L1uHQ+62tPObQ2NQnk/yqqSnXmo8u23hgaEBOafTDa2kuzk+uVJ3u6VQ8piyWYOwLa+i6rrA9gF3XNTP2hTWUxbyd4mmKlfPzF77IwnV9C7p/4bq+/PyFL9IUK/e8TF+IxfhTczOFmO9PEwlub2riU50yK4qhaQJOBzZ4mN8Gk4eT1UzV6a5OxQ9j05Jg3xfXsNc7mylrSVi+Z693NrPvi2ss3+OU7S0V3PnSsTzyzoE0tlgzGI0t5TzyzoHc+dKxbG+p8K1MZ7e2cmNjI/+z6DXWnEzyj5YWbm5sZL0aGX/rf5v/LwGOQ7yX+ric1zrkvJQlLqSlOt3VqTinGcgZ7TKUhD0/qqPvknrW7VXDpv7V1PesIB7d2d+LxBLUbtxBj1WN9FnWQMTaKKbZTZ2JZIgXF4xi1tK9OXjIUsYPWMGQHhupjO5cdmyORVm+qSdzVg5k9vKhNMeibuu0tEayMZHg983NPB0Os19ZGaMjEXqGQnQxscu2JhKsTCT4MB7n7dZWmqw7EmzXKu2doQF4F5gIPIZ7Yefnmp63m42i6lQjEyTmAAdbuTASS9Bv4Tb6LZS2NFYZIV4WItKaJNocLzRv13U2x6K8umgkry4aCUBtZTMVZTF2tEapb670Wucb2DjIb30iwb9bWvi3O79lE7BQq7R7hHP0xCcAt+PMeypm0pjgUaOoOpWgcG+hN0ab41Q2tBZqZOzmXbDO+uZKNjbUFmpk7OZ9D7C5SL/lfeh0tC+GJjXMvRYYDfzeZsE3AX8w916Lt5FQVWdbrrpKa7b//Am4vwj53m/ybm86NwKnAVt91vkOMFWrs7tYCa+6GLgQmAKcCBwJjAeGAF3NNVuB5WZo/ArwDNDghsBRoWlWL10MXDg/Oc2WzlGhaZZ1znenzItanopnJIFvAP8Fvmt+Ty9ZjrjQ3409V9xg69y1k/QfYIx5Vo5G9tZUA7k8DroChfhWrzYjmVutdAJnzZofmIo3ceKodmFo2lbS9L9ElveLhjEcD1Kc3fl2SNc5wlTwY035zQKuBpZp+11SJIBfmr8eQJe2F8Sj4fDy/bqNbexafmhrNDwyGQ7tmQzJdaEkdaFEcnVZLLGgemvszSHvbX4/EsvoHlUHbPJSZ2U0Fj51/Dtj9+y69dDKaGxkWTixZziU7AKQSIbqWhPh1c2x6II1dV3ffOy9A95vjkW90AmwCsg6RL+npiYMHGgM0ThgEJDaDLQF+AR4H3j5rqam9z6IxzPF2on50JGzrNN0AtqVW5wVQzPMTNecDWSL+93b/E0ALkY8Nh5AdqsXey3hOGTaqRm4FHguYL/B54Dn0yodwKnAJOAY7C2gKsFhU3oj+9rXhnQz9e9CIFcQsPHACXW9K1kzvHYF8Dvg7kl/W77FD533fPXPtnTu3Xsdh+298DOdF9//f1v8KNx7amqs6pwAnAlwWVXVTp0NDVt8qge2dQKf6TRGqOQJ7TPzlmyfVSIbAaeQ4RAii7Qgu9Z/RI51hfmTsk+JjnrtViffr4cZFaSOON5mpgoKWmTMpbPAdZHPAS+wc8qsLRsLNjYzZmhT78cIOn/9DAHfBm7K8TvnYyvwA+DXuXq6OevnzMrA6OSwZifPkX86czxDFqbOfNNZClNn2ZwBhgJvmpGMk22+5cA1Jq1hRfh+J6UZGczrEwM0knkhTyXsaa4Zr016SVIDPAH8ykFjg7n3LuBxk6bqVJ0lRSZDsz/wusuN23hk3WF/H79b1Bi5tlxOYYuFfhsZNTalzWDTwTrZxTRPNmkOVp2qs5QNzTBkDaOPB3n1MWn7NbK5FBiZ4f0DgHNKxMiosSlNepnfa18P0t7XpN1LdarOUjQ0VcCjHn+RXsgO+SqPv1dPZF0oG9PJ7SIZJCOjxqa0iJg67mWHahgynVKmOlVnqRmaaYjbndeMxftowz/O05gPAr5TQkZGjU3pcC3iMeg1E8k8Naw6VWdgDc1QxLvML6Z4aPn3RVwJ83E90L2EjIwam+DT39Qrv7je5Kk6VWdJGJqpyOK5X0TxLszDnRaHlt2AG0rMyKixCTZXIzvX/aLa5Kk6VWfgDU0tshnTb84iy3GtDjgF2XlrlW/jrSeHF0ZGjU0wqQTOLUK+52JvzVN1dkydRTc0x5N9x7+XdMJGGHALVCCRje3ec3MJGhk1NsFjMrvu2fKLziZv1ak6A21oji5i/m7mfRmwd4EjqwNL0MiosQkWXyiR50h1dkydRTc0Y4uYv1t590FCNRRCqICRUC729tHIpBub54G9tL0vGsU09ONUp+oMuqEZWsT83cr7JofD1yNwLzTNz3w2Mil6IRGgleKwdxHzHq46VWfQDU3nIubvRt7jgfNcSOc23NkIVcyh9LHa3pd0XfYjb9XZMXUW3dCUOne69D1GuWSwikkcpSM+S2HVqTqD/nBsK2L+TvP+MnC4i3puxLkH3vNFLM8Xtb0v2brsV96qs2PqLLqhWVrE/J3kXYlMd7lJX5xvhLoa2FCEstxACYamaEcsL2Ley1Sn6gy6oZlbxPyd5H0l3px3frUxOE6M57E4P8LWrpE5EjkOVim9uuxn3qqzY+osuqF5qYj5F5r3HsD3PdJUg0yhOWEO4hTgh7FJGZkPta0vKi8XMe9XVKfqDLqheRbYXoS8G03ehXAL3p44dx6wTwkYGzUyweEfQFMR8m0GnlGdqjPohqYeeLAIeT9g8rbL54BveKytDHf2pHhpbNTIBIttwMNFyPchoE51qs6gGxpMoxrzMd8YhS3kh4Bf4M9RzCfhjkebF8ZGjUwwuQVo9TG/1gI7RKqzY+osuqFZAtzhY753AosLuO8s4FAfdf7UJaPmprFRIxNcFgJ3+ZjfXcAC1ak6S8XQgJx66YcXw1wKP2Fzms/lcyBwpktpuWFs1MgEnxuA+T7kMx9n5ympzo6ps+iGpgk4HW/3gGwweTQWcO9eFCe2z624F6zSibFRI1MaNAIn+/AcnVzgc6Q6O7bOohsakCm044B1HuS1zqS9pMD77y1SGQ0G7nMxvUKMzXo1MiXFEuSsEC8anQ0m7SWqU3WWqqEBeBeYiLvTaHNNmu86SGNCEcvpEJfTs2Ns1gNHqZEpOd4BPg984GKaH5g031GdqrPUDU3KMk9Azmlx4o0WM2lMcMES/7eI5TTbgzStGBs1MqXNYlP3Z+DMK6kV+LlJa7HqVJ2lRq6w+M3AtcDvkRha5wDVFtNtAv6OuDC7VUAXAn82lj3kU/kkgdfx7kzwlLF5EejR5rN1yAl6rhqZiy++ODCV75577ukIxqYRCWt0DzAVOBvrZ703IfvNbvWhoVGdHVNn0Q1NunW+EJiCHA52JHIGzBB2HvC1FQkuNwcJi/AM0OCy1mXApHbYEM0BDjIjv6ONcXsOuA74WAcF7Wp0cz7wXeAEM1Idl+U5eh8JbfIs/kfoVZ0dU2fRDU3bHn76XyLL+0Vj/pMbaswPmm4Qu5iP69oYxH+OOqVXQzF0zjr1/Ew6Uz2eo5FoDZ/pnPjEHxqKVKS2ytODDkZ7IxWJ40HVqTo7CqF9Zt6S75phyBTa2Vg/q2W7GfrdhoW1mfmTpmb/8KqrrH4Xz3UyY4ZjnbNOPd+RzolP/MHaWlcWrTamzjwvzw4ydaYoHZ5cI5pKZIPkFKDcZrqdgAuQmGR3Aj9C1ny8IBA6Z516vi86Z516fl6dEyeOKvnyVBSl/ZDN62wo8Kbp0ZY7SL8ccSR40/SQ3UZ1dkydiqKUuKHZH/G0Gu9iPuOBWSZtt1CdHVOnoiglbmiGIR5PfTzIq49J240erursmDoVRSlxQ1MFPAr08jC/XsBjWPcnz4Tq7Jg6FUVpB4ZmGuLf7TVjcRaFWXV2TJ2KopS4oRmKeBn5xRQKm0pRnR1Tp6Io7cDQTAWiPuYbNXnaRXV2TJ2KopS4oalFNuX5zVkmb6uozo6pU1GUdmBojsf6zm836WTytorq7Jg6FUVpB4bm6CLmf7RH16rO9qNTUZR2YGjGFjH/sR5dqzrbj05FUdqBoRlaxPyHenSt6mw/OhVFaQeGpnMR8+/s0bWqs/3oVBSlHRgaRVEURfHU0BTzJLdtHl2rOtuPTkVR2oGhWVrE/Jd6dK3qbD86FUVpB4ZmbhHzn+vRtaqz/ehUFKUdGJqXipj/Sx5dqzrbj05FUdqBoXkWOevdbxpN3lZRnR1Tp6Io7cDQ1AMPFiHvB0zeVlGdHVOnoijtwNAA3ArEfMw3BtxWwH2qs2PqVBSlHRiaJcAdPuZ7J7C4gPtUZ8fUqShKOzA0IKcf+uENNBfnJ0Kqzo6nU1GUdmBomoDTgQ0e5rfB5NHoIA3V2TF1KorSDgwNyFTKccA6D/JaZ9Je4kJaqrNj6lQUpR0YGoB3gYm4O50y16T5rotpqs6OqVNRlHZgaFI93AnA7TjzSoqZNCZ41KNVnR1Tp6IoJURon5m35Ltmb+Aa4Byg2mK6TcDfEVdWS15G8ydNzfzBzEprOT51qTOdJ99tzRvqsObM7191laXbZ516viOdE5/4gzWdM2ZkfPviiy+2Wjc8/93vuecefQKVgp4j38jyHCn2KLNwzWLgQmAKcCJwJDAeGAJ0NddsBZYDc4BXgGeABl+/iRiKC3nqUns6T77bV53GUFw469Tzbemc+MQfGnyuG6XxuyveYLWDZ7UjpqihaVecfHdJyJz4xB9KpUQbkAgCD+rj0mEZCnwPmAz0BdYD/7YzY1EghwJTgdHARuBfyF6srS6lvwdwHXAS0AP4ELgBeEF/cv8NzTDgWnJPofQyfwcBFyFTKPcj8/R+bdBTnRbQ6SrFJieYTkZN2nv9gfNNHf4G8KgH+U5Cgq9Gzf/3Ms/DhcBpwFsO0z8GeDhtdI5J/1/A4cDr+tP7Y2gqgRuB7wLl5r1VSEDE2cBCYLN5vzswAjgYON5UxAtMJbwT+BHg1Zi6ves8AdjTR52KDUa9dmug9GRd6yyM4aYxztYhqjIdoI/MaMBNbkwzMun0A140z+9rBaZ9LPCk0d+WiOkInqS123tDMwx4DBhr/j8LuNkMlxNZ7nkD+CPiyfZFMySdiCwoH4ds2HPbAymfzu7AZaaHAvAf4K4A6gxKeSpKOt8nvyNIOXC9Gd24ybgcn9WYkcfxwEyb6X4BeCKLkUmxj/707pLJvXl/0xCOReZCv2aGsf/K0SimkzDXHmbu3WrSmmXSdot8Oochi9TTkIXsI83rOeazoOgMSnkqweeL5ndvMqPfv5hRuVcca6Pxdpu6PJ93Ms/FUTbSPBJ4yoLx3KRVzVtDMwx4DugDLAIOMEPjQkiaew8w00J9TNrDXBoh5NP5B2BAhnsHmM+CorOQ8lzksk4l+HwbmWb9PDIN2w34OvBfZGrVC/aweF0vD/J+0cI11cA/LBq6wxGvSCuu+s9rdfPO0FQhi3q9zJTMJGCZC3ksM73xJSbtx/IMW/NhRedgk2c2DkPcdIuhM4TsUdnHvM5HCBiFeN6ETRqTXNSpBJ9LgV9lmYHYA++OXggV8Tv/FGixaGyeMqO9XM/7sxaNzFZkel3xyNBMQ+ZF65A1gPUu5rPeVIStyLTPNAdpWdFppZc/tAg6RyELp4uA+UholiE50hgCvI0stH5g/kaZtCabtJ3qVILNd0zDl6vRP6Edfu/FwHlmJG/F2DxpnrO2TLJhZFqBr+JtgNkObWiGIhvzUhV7qYt5VCOLd8uQhXlMXoVM+VjVWWEhrYocIzAvdIaQRcgRadeNRxYzh2ZJYya7rsPsY0ZJITOi+Y5DnUqwuRz4pYWRRXU7/f73I1OGVoxNpTE2x6e9N9EYmU4W7o8jDg16zLiHhmYq4ko4i8LXENrSHXgE2Gb+/o3sHp9l8irED/P7HujMVsHd1jkMcRdtS39TLkPbGJlXybzQu0+aUXGqUwkuVyCu7Famr95qx+XwW+Bii8amwnTmvoSsZT3Lrvt/8hmZR7TaeWdoaoGzzf9vtviDWjEyLwBnIH7pIcSD5QkgFVztbJO3VbzQmY2kyQPgLJd0xnPcMyDN2Aw1r/vneTDa6rRbnkpw+S5y8qkVIxNH9py0Z36H7COz4qVZbkb9z1p8HuKIN+fDWu28NTTHm6HlajPqcMvIZHK9PRBYaf6qkRhaVjnB3OOWznz82+js1GY4XqjOZYhrdT5j8wqZveVSvMeuzg//LrA8Fe/oCQwke3T0XEyxYWSSprf/Ugco0/uQNZu4RWPT2aKR+QYaXskXQ3O0ef2MxR5DoUYmvRKk5kGPtJH2US7qtEIiTefRLuk8A4kGkMvY5DIyq4Azc+g8Uqt0UdkfeBNZTP4EWMPOdTQrXAn83Eb9vIBdXfXbO38GzrVobKwYmW8i0cYVHwxNarf6bB+MzErkMKw3zf/H2UjfLZ12eLNN3k51LgWOyGNschmZI8gcDaCQ8lTcZTQSEuXgtPd6Ix5j+bzGAK4GrMakTxmZ+zpgOf/VjEKcGJu4GR39Tautf4YmtQi9oM1nZWSONVSokakHvowcirXIvLeXDa3ZdBaKlTWeRW3ydkNnIcYmZWSW5tG5l1bponET2b2/voPsg8lmbL6H7Bux2khegIQn8ppkQMv674gbciHGJlV+f9Eq66+hSc1lpkI+9EHcBOuQEPF/IfeimhUjsw3Z95Hyjtli/u1sQ2tbnblYa+EaK/uEvNJpx9iszGNkCtWpuEu+UCjfBu7OYGyuQaJyW20kz/fJyIBM/VmhGPtOHkIcYOycBJtAoj//Saur/4amLY8CJ5veWTkS5uJ5oIsDI3M8/obdnpun8m8E3g9A+Sddvk4JNpcAv04zNlOxvqs/Nd3zZx/1Wg3F8mKRynMJsN3m85bQalgcQ7PNvO6C7DqfmOG6g5G4Wl1cMjLd0j63SrrOfMTIva/kWos9Ia90plyYB1hIbwCyp2Yvl3Uq7vKyxeu+hewNuY6drv5WjMy5+D/dcyv5j6NoYaeLvZ+MN+1PVxv3RBDniXO1uvpvaFJTMiPIvYM23dg4Hcnsbf61E0stXacV7jOjsfTpqVXmPauLqHu3ydsNnanNmANspJkyNkPz6FymVbpoXA80Wrz2ImC6DSPzf8giuN8sRDYyZhs1NCFrJR/4rGucaX96FHBvythcoFXWX0Mz17w+BJlOWm3B2DidLjvU/DvXhtZ0nVb5GzDINPojzGs7niZu6xxG9h3/VozNK1mMTSE6FXeZj+yhanQxzdQ+j/uL+L2eMKOHe5H1wphpI+4z7z/qs56xpv3p6SCNkPk+F2m19c/QpDZ7ncjOoHKNeYyNEyOT2iRqZ7oB08imdFrdCNcJ8fi5xfx9B2txj9rqfMklnY/kMTIryb/P5mGXylNxn1fNb+GGsYmb0XcQ9nksQTaGDkTWbVNHOS/yWce+yHqQG8cShJApzG9rtfXH0DxrhsZ7IpGL/2MayUIeFisL/8eaBrMR2dRolWfMPSmd+egPvAP8Ajlj/DTz+h2LI4p0nc+6oHMv0wPMZWRSB7TlMjb7s+t6TaHlqXjDfxAPy+0O0oibDt8DAflOIeTMl5+ZGYGfI5GS/TxGYLTpSFkxMklgh8Xv9SvsbapVCjQ09ewMwXBdWq/c7jSAVe+y682/D5i8rVKf9uBdZ+H635N5nWSE+QyfdUZy3LPKGJilpveYz9hEXNCpeMdMY2waCjQyZyPuu0FgD2M8XwCuMgZwCnK65evYW2sslFE2jcwUJLCmlfYrhETIvkKrrbeGBsS7JIZ4nH0tbRrAqrGxamS+avKIUdhhTZl0ZhvN5Br1fDHPA+KFziXI4momI3MEuzocLCH7PpuF7IwO4FSn4h2vmWfCjrFpNUYmKFGEOyGx9CZl+fwQYwC83L+1j8mjt8XrrzQzFy/YNDZ3mnsVDw3NEiSQH0i4jCE2jI1VIzPEDFMxP+riAvRm05kpr3wM8llnEpm++yjtuneR0/8yebUtRY6fndPGyJxm0trLBZ2K98ZmssWRZixgRgYkivSYPNcMQyIbeMEAY2T62DAyd6b9/2XTflmdxpyB7HVSPDI0IKc0zkX80p9P60HkMjapHf/5jExv0zPqavKY5kBzNp3prLSQzuoi6JyPzDUPN9MBnwOW50hjGbImsy8y5TfKpOGmTsVbZplnZJsFI/NowLSfbfG6r3iQdwiZ0u9r8fqr0zp36byKvWnMu9CYgZ4amibgdGRH/TAkKOS+aT/W8ey62z517PEbefLYFwn6uLe5/3SceeXk0pniY9ObzPXwLy+SzqQZfXyEtR3/SeQo50XIruYxJq1hLulUvOd18/xkCku0wzTojwVQt9VTW4d4kPcX2Om2n49ryB2Q1M7IMoIcXKh4ZGhSUz7HAetM5XkDWQcAWRAchoSnOdZ8ni+S8tdMGnuZNI8jc/Rhu+TSmeK8LCObley+M7iYOu3wNdNoDXFZp+KPsZmA7EupM9M5LyDrH48FVPMmi9dt8SDvYy1eNxVrAUlnmefFSqzEL2h19dbQgKwbTDRTMrWIO2O6F83T5gFpzJHmZHPPX00ac02a77qoPZfOsGmA90OmlV41f9PMe0sCpNPKb+SHTsV7UmtsXZEjho8F/hdgvcWMdWZlQ+Z12HOCecOisemiVdVdynL0xCcgR8ROMb2uScAKJDLAG2b6J9Xj6Y6sOxxiGsWB5v0YMm/6I/LHTCp0xJBP5wvsdN/ujuwRCqLOTOV5qNE5wCedipLOrchR5pU5rvEq1tlHeT6/Aeux4tKZDRxjjGjXLNdohA2XCe0zM+9vtTcyB3oO2c/baEsTsqP5Nix6Q82flCUG5sxKq9/FF50clqV9v+qqYOmcMUNrt1I4O5+7U81IulOWevkN0p0YDnPY/9n5HPVAYqi1dQZIkH9NxgrjgKfY3fs0DpxEapO2PkeejmjSWYyc4TDFjAaORHa4D0nrEWxFFtfnIJs9n6GwzWpOUJ2K4j6pWGffQ6ad+iKOQM+bjo9XYWg2Ia7/M8wz0oJMH9+GO6fsvo8451yBeNX2Mc/mT7EXckqxYWgms/Ps8fORXb9nmh+5GtkA9QQyBfVgEfWqTkXxn1SsM79ZbEYXXtGARNGerj+xt6Smzj5FQk2AnKrXD9jMznNOUryKrDO86rYQi1NnRddpceqs+Dp1yK+UItanoP1BnyNXDU3b/Rwhcu/xmGkaSMfRgrMamMzGpmg6Lc0973xIiqdTHwxFUQJGuMD7DkPmMV9DPDiCiupUFEUpUUOTYiKyKPg6slAYVFSnoihKiRqaFIciC96z2XkIVxBRnYqiKCVqaFJMAP4J/Bdx3Q0F9HurTkVRlBI1NCkOBP6BhNc4KcANpOpUFEUpUUOT4gBk9+07wCkBbiBVp6IoSokamhT7IRsU30PC2tcEtDxUp6IoSokamhTjkLhI64BLA1wuqlNRFMUHQxP3MN9qJAKxG6hOd3UqiqL4Zmi8DOIYY9ezvZ2gOt3VqSiK4iplPuc3F7gdOSNmfYDLRXUqiqKUmKF5Azmk6J/kjvlVbFSnoihKiRma55BT+v4T8HJQnYqiKCVkaBLA48jxru8F+LurTkVRlBIzNC3A3/D21D3VqSiK0gENzXbg98jpkSsD/F1Vp6IoSokZmi3A3cixxBsD/B1Vp6IoSokZmrXAz4HfAvUB/m6qU1EUJeCGZivQJe3/y4CfAn8CmgP0HVSnoihKgMkVGeAyZI2gHnGpHWF63UFrFFWnoihKiY5o/mH+go7qVBRFKdERjaIoiqKooVEURVHU0CiKoihqaBRFURRFDY2iKIqihkZRFEVRdiWU/E8Fo0LTPgX2MO+tnZ+ctofvSg7Lsp1kZmX6/3bRmfY6WDqfunRXnSffHRydiqIoRRrRXGAa7tXA+QHWqzoVRVFKcUTjwEg9D4SAY5BzU7we0ahOHdEEkilXrPUzu0OQI7yHAzOBKXf8ou+qYuls2B5mwIAYx03eSjwO8Xgo9VE34FFgLHLc+LkTJ47a4YXObdsijB7dxJFHb6OxMUzS3rmzruls2RGiulOCE760lepOCVp2hNws6oJ1Fhsn0ZvPAI42r78MPBTQ76g6lfZEGXAHMMH8/xRgA/DtYgmKhGFHc4jWVohEIB7/7KOngEnm9dmmE3V2AMtUdXqME2eAi7O8DhqqU2lP7JVmZFKGp6iNTUV5gk2byti4sYyqqs8G4kPTGsUUpwWwPFVngA1NH+DwtP8fZt4LGqpTaW/0zvBe16I2ImXQ3BxmyeJKQjtblJ4ZLo0HsDxVZ4ANzalABJgPLDCvTw3g91OdSqnRBTgPuBQYk+HzUIC0HgGcQhKqq+OsXFHBpo0RKisTIEeRt6XVSzGhUB6dmfFdZ97yDL5O3wzNmebfR4CHzesvB/D7qU6llKgBbgamAz8BbkMW/NNJBkTrr4FXgCeAuRUVyZ5btkRYtqySikr/JaYW/8Ph3DqzjAwCV54B1umboRmITO2AeEA8Yl4fDgwI0HdTnUqpMQlZ1O+LeBhNBs4NoM7jgEvS/j8GmBEOw7o1UVpjoVyjC08oiyTZVh8mFttlZJNRZ6mUZ0c3NNciUztzgA/N33vmvakB+m5tdX5QAjo/CLBOxXsOyfDeoQHUeUSG9yaEw5BIiNeZ34amsirBmk/LWbMmSk1NPDXCyaizVMqzIxuak4Bvmdc/Ar5o/m40733LXFNsMumkBHQSUJ2Ku0SyvF9u49piEsvw3g6QqatQEVaRysqguSnM4oVVhMPJlIasOkulPDuiobkQmdYJA38GnjY97qmIf/efzGePmGuLRTadlIBOAqhTcdfA7Ad8BTgggxHJtLhRrDWZPoj77OAMn8UtvuebzmSSwTU1cZYvq2Dt2ijV1Ymi6QyF5C9ZmuVZFENTARwPvAzca3pczyD7PA5B1hEON68vNp+Vm2tfNvdW+PA9rOhMEVSdbSmmTsUbJpvf9PfIsd4nBlTnocBi4DHz7wmloLO8InnCtvoIixdWEo0W32ciVHrl6d2I01T+84D+QNS838181jdtOB8DbjXTOnF2XT+4FnHLO8VMAU0FjjR/LUjcr1ZgS1paq4A/As/aeEid6sToCaJOfNapeDNiCZtRSCbX0+lAP/O6CvEqeyZgvdcw8CBQm9ZGPAp0B5qCrDOZ5NFoWbL7+g3RpuYdIVJrRr5WgDLYvj3M9u0hunZN0LIjUirl6bmheRhxq8zGZuBxxAtigXlvFPCltGtOMu/NB34I/B24ygwVuyOeVZk4Lu0HyEchOke30Zk+LA2Szmx4qVNxl1rgeuBgYDnwY/Nvih5IjKp0RiBurOt81noVEu5oBXA5u+7R6Mfu3o6VwEjESSXQOiPh5MhkkvcS8RChUBKfth19pjMSSV5eXx9p+eTjCgYMaAlaeRbV0PwWuNr8f7lp2NaZXtla4CPT4NUi88rDgYva/IIh4G4zxbPI/F2ILGbvY3ryIWSe8sfAEHPfvTa02tH5OaPzwjw1bUERddrBC52Ku0xBNlnWABOR3fqnszM4aqcs91X6rPNaM5JOsTc7Y+xBZoeE1Ggt8DqTEPHZIWE3nRXlyaM/Xl7JmLFNRKPJ8lgsFITyLLqhuQbxcLjONFiXmQdklRkRPG96XnvmSesIdnXTWw0sND2RF41Vv8nkkUQ2pv3AhlYrOkemTU3YIc5O12IvdTrFTZ2Ku1ycNpKNINOeg9JGNdmaPr8XE65r8/+jzEhrblody1b3VKcFndHy5NimpvDchoYwvXu3xrMYmnhHejhS88k3INGD64GDgHeRRfQPjZHYs4C09wReMmkcArxj0q43ed1g8yGzorOfw/LwWqdbuKFTcZd+ed4Lym9TleG9/gEsz5LVmUzSPxIRF+ukPpGfGZoUjyObhBYAvUzDvR9wCzCtgLSnmV7255CzE3qZEc4Ek1ehuK0zhV86neK2TsWf5ysoZNqf0aI63dcZCukDkO1B+Mj0lucA1ciZKFWIZ9R0G+nebO6pBh5A5qffRxZKP3JBdyad1QXoTO+V/N3onOODTie9Jy90Kt6QLBFNqrP96wxcj2srspN+PbIAd5l5/wbgLgtp/grxvsHcO8ykdaxJ2y3a6vyOTZ3pXG7SWG/S9ENnIXipU1EUxdeh/Xp2hkH5Ttp1cyyk+V5a2pea1zeaNN3GiU4CoJOA6VQURfHN0AD8BdlQNAA40Ly3j4U0U9ccaO5tMml5RaE6CYBOAqhTURTFN0PTAMw2rw8y/46ykOaoNvfMNml5RaE6CYBOAqhTURTFN0MD8LH5d2CGBnwJslP9NPO6raEZ2CYNL7GiMxupe5YXQacd/NSpKIrim6HZbv6NIJ5Og4CNyCL/aOQ0uCfM68vMZ4PMtZG0nrzXWNGZjUibNPzSaRc/dSqKovhmaIaaf9eYxvs2xOvpV+zq095i3tsbuN30vteYz/by4XtY1ZmJlM5hPuu0i586FUVRXKMsx2flyNGyAP9FAmZ+HwmzcQayZtDHfL7OXPMcO6Ml9zb/TkSiGMc8+g6F6mxIuweThp86U9QgwTCDolNRFMU3Q/N50wjWAW8gmwW/j+zl6JLlnjrgl8gu/TfM/7sYY/OKR99BdSqKopSooUkdzvM8srj+ADvdhj9FwqCkFqaHAMcgsZ1+YEYSZ5l7v2zS8qphVJ1KUAlleY2F93HpekUpCUPTF3GprUQW2K8G/sbu0UcjwNeAn5kG9C12TvecwM7Q+V414KpTCRrpoUiyRetNtPnN8z2jTsObRPO8V2bhvvJsn6fF94rabG981Zknn/aos6hkcwYYhITcB1kTqDQ96PHI+fbZzrj+s7nmFXPPYeazkSZNt1GdSlCoy/DehrTX29oYlZTRSPfKzHQA2uY2/88UEWKrDZ2ZjFlDG52ZSH8/li3dROKziMV1DhtGT3Xm+d3ao87ijmhmhd/d7c2Jif3T96G0IscJ3zor/K6Vg1FXT0zs/wVk/WFaWmGMmhV+95MMeTnRn1Fnhgc6o04go07gE5fLuVR0lhyzZs13dP/EiaPckvIAcEHa7/MWsLRNw/I0cDI7p7+eZedx3CDHaqxjp1PIduDJNvksM2lPSKtPD9jQ+ZAZKadYC/yvjXF8AZm6TfEBu54G+whyoF86fw2FksQTIRKJEKFQciGE5rLrqaIvBkFnm/8vRM64ae86AzmiWWJ6Uq8Ch84Kv3uzRSMjD3/43cSs8LvTgUNNGpvZdVOnW+yiE4kabeeU8AQS7Vl1Kk6ZbozCemAWcKUxAulch6yzrTdG5Zo2n8811yw0HYzfAfe3uaYVOc1zlknnSVOfrHIBsq9ss8nvKHYPdf8Vo3OzyWdym88/AM5BNiBvRE7XvSUUgkQilH4Gy5dMo7sZ+HebBrloOjPk1RF0FndEk8VQLEbOOP+MjRsX1SBrA0ea6Zwh7PSWqkMWsueYaZ5/9uw5vGFW+N3/mesd8+TmBzO9vYvOUChEMpm0pdMMc/PqPKX7Wa7pNNjSGQ6HGxKJhHs6n3wy62emHAmHwyQSiULKMy+nnHKKqxW5kPrp8rO0CnHUyMVHiCt7rg7FfebPK3aQO1IGZpT1RQsjuAcAGraHGTAgxtlf3UQ8DmknStabv4RpHLd7pXPbtgijRzdx5NHbaGwM09IS2k1nDlzT2bIjRHWnBCd8aSvVnRI0NYVtl6cXOp2O/G1yCLKfcjgwE5hSZuEBHgZcC6Gzy8urO0WjnYhGKwmHo4RCMiBKJhO9E4lY71iseUIstv3ilpbG7Rs3LnoAuK1nz+F+9byHAddWVFSe06NH7+q+ffegS5daKisriETCvPnmgow6IfkAssHTV53ZyvOQQ0YSjyd6Nzfv6F1XVz9h/fp1F69fv6axtTX2oOnl+Knz+2Vl0bN69uxd3bt3b7p160KnTtU0NcVYtmwd9fXbfSnPjz7aeeROeXk54XCY1tZWamtr2bhx0bBIJPL9aLT8rJ49U797Z6qrqygrk/rZ2pro3djY1LuubtuEtWvXXLxx4/rGLVuWPhiPx29Zu7b7kvr6esrKykgkErS07Nzfu88++xBAyoA70qbOTjHTM98ulqBIGHY0h2hthUgE4jtXHJ9i596xs82U4dkBLFPV6XH9LMthYCqBaaFQeEpVVbfyysquhMORLD3gCOFwhLKySqqqupJIxDs1N2+9oKlpyzc2blx0J/Cjnj2HN2e8+bDm3LJTn2fvgVcC02pqaq8cOHCv6MCB/ams3NVBI5lMEgqFcupMJhN3ImsnnurMV56RSJiysggVFVG6dKlh4MA9iMX2rV6x4tPzPv54ydfr67fd4UhnfiqBH1dVVX934MDB0UGD+lNdvetZbS0tccLhEOGwg/J0yIcfflgJTKuu7nTlgAGDo4MGDaCyspxQKLzbyYbl5WHKy2vp0qWWAQP2oLm5pfqTT1aet3Llx1+fPXv2HcCPxo0b10xpsFfaQ5x6sM8upqGpKE+waVMZGzeWMXhwC7FYBCQKxqQ2l54WwPJUnT7Uz7IsRmYo8GhFRe34Tp16EQ7bc24IhyNUV/egsrJL+fbtG67ZsaP+2I0bF33Zg9HN0HA4/NigQUPHDR8+jKqqCsc6zfTHEg8qScHlGY2WMXToQAYO7BddtGjpNR9/vGRyLBY7zQud4XD48X79BowdOXI4NTWdAlme77///tBQKPTYnnsOHDdy5AiqqysJh/Mf8RMKQSgUprq6khEjhjJgwJ7RBQsWXrN69Yovvv/++2eMGTOmFNa9emd4r2sxBYXLoHlbmCWLKxmy12cjwp4ZLo0HsDxVpw/1M5zByOwPvF5T03t8be0ethvFXRueMmpr96Cmpvd4YJZJ2y32j0ajb4wf/7lx48aNtm1kcukEXNXpVnlGo2WMHj2C/fc/aExlZeUbbuuMRqNvjho1Zuz48WNsGxm/ynPevHn7R6PRN0ePHjduzJjR1NRUWzIyu2sMU1NTzZgxoxk9ety4aDT6xrx58/YPwIPaBTgPOeRuTCZ7GaBG5QjgFJJQXR1n5YoKNm2MUFmZgMwxBlu9FBMK5dGZGd915i3PYOssqH6G2xiZYcBztbV79KmsdK+TVFnZldraPfoAz5k8nDIsGo3+e7/9Duo9cGA/T3TiTvBKT8pzjz16cdBBh/SqrKx83i2d0Wj0hX33HddryJBBlJWVBbI8Fy5cOCwajT6/777jew0e3J+KinLn0z4V5Qwe3J999x3fKxqNPr9w4cJiBi2tQTzIpgM/Qda6hre5Jijn0f8acax4AphbUZHsuWVLhGXLKqmo9F9iytMtQ59jF51ZRgaBK8+A6iy4fobTjEwV8GhNTe9eFRW1riusqKilpqZ3L+Axk1ehVIXD4cf23Xe/nv369fJUJxKPrGCdXpZn9+5dOOCAg3qUlZU94VRnOBx+bMSIUd3799+DSCQcyPJcuHBhFfDoyJH79thzzz6uGUOAsrIy9tyzLyNH7tsDeMzkVQwmIWstfYFuiBvsuQFscI4DLkn7/xhgRjgM69ZEaY2Fco0uPKEskmRbfZhYbJeRTUadpVKeAdRZcP1Mb1WmVVTUjnOz552ph1tRUTsW2XhYKNMGDRo6duDAPQKv0+vy7NWrO3vvPXLfcDj848KnG0I37rnnwLEDB/YnEokEsjzLy8sBpvXvP2jcgAH9XDUyO41NhAED+tG//6CxwDSTp98ckuG9QwPY4ByR4b0J4bBEBojH8d3QVFYlWPNpOWvWRKmpiadGOBl1lkp5BlBnwfUzbEYzQ0Oh8JROnXp5rrRTp96EQuEpBU6hDa2pqb1y+PBhhDyuySmdBU75+Faew4btRW1t5+8WqrOysmrKiBF7U14eDWx5zps3b2hVVdWVw4cP91RneXmU4cOHU1VVfeW8efO8nELLZtHLbVxbTDKFTNkBMnUVKsIqUlkZNDeFWbywinA4mdKQVWeplGeRcL1+pkY0U6uqukWdLFRbJRyOUFXVLcrOc2vs9L6nDhy4V5mThX8/dPpZnpFImOHD9ymLRCLX2f+O4esHDBhUVlVVGfTf/bqBA/cqq6mp9lxnTU01AwcOKQuFQtd59ADvh+wUPyDDQ5ppfrtYazJ9EPfZwRk+i1t8zzedySSDa2riLF9Wwdq1UaqrE0XTKd6Nu/1wpVCentXP8MaNi2ohdLaXUzyZplIgdJbkbZna8vKKcwYO3NN3nYAtnX6X5x579Ka8vOIrdnVGImVfGTx4oGdTZm6U55NPPlkbiZSdNXjwQMJh77vK4XAIKZOyrzz55JNuL65NBp4Bfg/8AziRYHIoEs3iMfPvCaWgs7wiecK2+giLF1YSjRbfZyJUeuXpWf0MA8eXl1d3yrYZ06vebXl5dSfgeBu3Hd+zZ+/qysrywOv0vzxD9OvXv9quzl69eldXVlYEvjx79epT7ccodqdBrKBXrz52yzPVI4ySParudOSMoSpgD8RrJ2hTY2HgwbTOQBnwKM4cTnzRmUzyaLQsWbV+Q5TmHSHCYf9FRcpg+/Yw27eHqChPBK08i1Y/w8DR0Wgn37+xyfNoG7cc3afPHiWhsxjl2atXb9s6e/fu7flalxvl2bdvX397oiEwedrRWWse1BeQYJhD2nzeg10j7wKMoDhurFchkaN/y+7z7v2AAW1tLzuPuQi0zkg4OTKZhEQ8RCiU9F1nJJIsb2wM88nHFYTDySCVZ1HrZxkwtqyswvcaZPIca+OWsZ0715aEzmKUZ21tp3Zbnl27dvFdp8nTjs4pyCa2GuSo7a7A6eyM0p2t91Hp81e7FjmiIsXebQxqeY7ecOB1JiHis0PCbjorypNHf7y8kjFjm4hGk+VpQUaLWZ5FrZ9hYGgk4r8rp8lzqI1bhlZXV5SEzmKUp9m8aLM8q30f0RRSnlVV/s8ymDzt6LzYPMSpRuQUdj2cLltB+72Y0NbJ4ag2BjXbInRcdVrTGS1Pjm1qCtPQECYaTQZFZ1HrZxjoHC7CZKbJs7ONWzqHw2GSyaTtv0Qi6bvOUijPaLRwr7iUgZJgpdb/jOOBLZ2pKMz+jrxsl2e/PO8FZUd/Jqvdn+BRsjqTSfpHIuJinUwGRmdR62fJHAUKMHv2AoIV6ik4JBIJ3/KqqalizJjCTpKOx+M888yijvKzhAOoaQe7nz/fojrd1xkKaf1Mz2ibn41Um4Zxm41bVGcOWlpitnXGYoXH5LM7kkn9tbbGbetsbfW/PE2e2xwmkwxg45JUnR1SZ1HrZxhYGo/731EweS61cYvqzEF9faNtnY2NjSR9HNsnk0kaG+3rbGpq8r08TZ5LURTFFUMzt7XV/2gH8fgOkCilVlGdOdi8eYttndu21fuu0+RpS+fWrXW+6zR5ztUmQlHcMTQvxWLbfc+4pWU7wEs2blGdWUgkkqxZ86ltnevXr/d9RLN+/XrbOteuXevromoyCWvXrrWrU1GUHIbm2ZaWxu2JhH/edolEnJaWxkZkk5NVVGcW1q/fSkPDVts6N2xY39jc7N/oq7l5Bxs2rG+yr3NdEXSus6tTUZRshqZnz+H1kHywuXmrjw/yViD5gORtmaLplLyDqTMeT7Bs2XISibhtnfF468OffLKSeDzug844klfrQ3Z0nnLKKfXxeOtDH3+8wpGbup3R4ccfryAeb33wlFNOqdcmQlHcGdEA3NrUtCXmRy88kYjT1LQlhsTRsYvqbMOKFevZuHF1QToTicT0FSs+bm1qavZcZ1NTMytXftyaSCRutntvMpm8ecWK5a0NDY2e69y+vZEVK5a3JpPJW7R5UBQXDU3PnsOXJJOJO7ZvX+/Dg7yeZDJxZ8+ewxcXcLvvOpFoq4HUuWlTPYsXLyCRiBess7m56Y6FCxen3KM9oaUlxsKFi2lsbLyjEJ1jxoxZ0tTU+PNFixb5orOpqfGOMWPGLNbmQVHcHdEATNuxo36ul1M+zc1b2bGjfi4OT65UnbB163bmz19IY+NWRzqTyeSPVq9eMW/FilWeTKHF43FWrFjF6tUr5hWqs6WlBWDaqlWfzF258tPUXhxXaW1tZeXKT1m9+pN5wDSTp6Iobhqanj2HNwGnNzSs37Bjh/tT0zt21NPQsH4DcHrPnsOdzIH4phMIpM716+v44IOFbNq0yhWdiUTitIUL529etWoN8bh7myPj8QSrVq1h4cL5mxOJxGlOdI4YMaIJOH3Bgg82rV691lVj09oaZ/XqdSxY8MGmZDJ52ogRIxq1aVAUb0Y09Ow5fAlwXH39mnVu9sSbm7dSX79mHXCcycMpnus0eQRKZyzWytKla5g/fwEbN65wVWcsFjvmgw/e37h8+Se0trY6TrC1tZXlyz/hgw/e3xiLxY5xQ+eIESOWxGKxYz/4YM6Gjz9eyY4dzkcdO3a08PHHK/nggzkbYrHYsSNGjFji4vMVyvIaC+/j0vWKUvT6uVusm549h78LTGxoWD+3vn4NiUThjU4iEae+fg0NDevnAhNN2m7hmU6TdmB0xmJxVqzYwJw5y1i0aD5bt67xRGcsFjtk/vx5H8yZM4+GhsL3AjU0bGfOnHnMnz/vg1gsdoibOseMGfNuLBY7dP78ufPmzfuQhobGguK8JRIJGhoamTfvQ+bPnzsvFosdOmbMmHddfpDT3eSyDcHSxWcKHV+WI81CiOZ5r8zCfeXZPk+L7xW18F2KpjNPPu1RZ1HrZ8agambUMWHHjvrbt2z5ONbYuAk7HlSJRJzGxk1s2bI8tmNH/e3ABJdGMplGDK7qdGmEULDOeDxJS0sr27Y18umnm5k/fyVvv72QhQsX8umnCzzXmUgkDly9esXPXn/99daPPlqUChljicbGRj76aBGvv/566+rVK36WSCQO9ELnuHHjliQSiYNWrfrk9jfeeL114cKlNDY2k0gkcm7sTCbFwDQ2NrNw4VLeeOP11lWrPrk9kUgcNG7cOKc6M4Uv2JD2elubhzb1UDak/X9dhjQ2t/l/Jg8TO8PlTI1FQxudmUh/P5Yt3UTis4jFdQ4bRk915vnd2qPOotbPrEJ79hzeDFy7ceOi3zc2brqmsXHzOeXl1dXRaCei0UrC4WgqND2JRIJEIkYs1kwstp2WlsYmSP4duK1A7zJbM17AtclkwpFOCvPacl3n7NkfBUHn95qaGu9dvHjB1KVLF5/ds2fvqt69e9OtWxeqq6soKyv7bHqssbGJLVvqWL9+PRs3rm9OJOIPJBKJW0KhkKc6R48e3VxbW3vt7Nmzf79kyYKpy5aJzr59+9K1axeqqqooK4sYnXGamprYurWOtWvXfqYzHo/fcvDBBy+ur3dlDe0B4IK0h/8tdo2Vtg14Gjg5bXrhWWBL2jUvmYe5j/n/duDJNvksM2lPSM1Smryt8hDwtbT/rwX+16bxeQE4Ju29D4AFaf9/BPhhm3T/GgoliSdCJBIhQqHkQgjNZdczZF4Mgs42/1+IhBpq7zqLWj9Dr732oSWVGzcuqgFOBI4ExiNHgXZN61EtB+YArwDP9Ow5vMFKuo890p07fpH9qN4pV6wF4PAjZ1stUFs621js7K1vUwVnnT056+cPPvAvACqrdpS8zlAoRDKZJBwOk0gkbOkMh8MNiUTiszSc6sxH/wGDHNXPVSs/yZtHLp1p9bQ/cAdwGLAIOXnxjTaX7WOu2Q+YB1wOzG8zw/BN4BpTPx4Brmd3J4pDgNuB4cBMYModv+i7ykp5TblibYVpdA4HVgFnAR+1uawbcs7954y+s8216ZwN3Gx0PgR8Z/v2MHv2j3Hc5K0kEhCPhwYCjyIHyP0POGfixFGbvdS5vSG8qv/AFo6bXEc8DvF4aDedGbJzVWcsFvooGk0y+YSt9OjRSlNTuKDydFPnrFnzi1o/Q9+9fE034H7gWKwdL9oCPAycf/qXN7cYY1GJnEP9lSxziW1pNVb+bKDOiqExlaognUDLhIPfAzmWtGCdFhtGRzrNe6rTBZ39BwxqMcbEM52KouQnDPwCmIz1M6zLzVDx+sce6c5jj3QH+IF5L2oxjTKT5502tBasM+091dmBdK5a+UlqxOKHTkVRchiaQrtr6fcd50Iabl6rOlWn3zoVRclhaHoWeG+ftNdupJEP1ak6g6xTUZQchkZRlCzo+oyiqKFRFEVR1NAoiqIoamgURVEURQ2NoiiKooZGURRFUdTQKIqiKGpoFEVRlHZlaOoKvDc9mJsbaeRDdarOIOtUFCWHoXm0wHsfS3vtRhr5UJ2qM8g6FUXJQhlwFVALfAFrx3a2mgfw9rT3bgX6IefXWwl+mEDOUvieDa2qU3UGWaeiKDkMTR0SPt0JLcC3zJ9XqE7VGWSdiqLkMDQdgrdm7+c4jbPO9jZ9t/BDpznfR1EUxZKh6QLci/WpiTgyNXE5Ow/AKgfuAk6zODWRRA6WuhjrC7WqU3UGWaeiKDkMzQzgTJv3XYwcRXqT+f9U4CKbaXwFOafa6n2qU3UGWaeiKFkIA2cUeO/paa/dSCMfqlN1Blmnoig5DE2XAu/t3mZ6w2ka+VCdqjPIOhVFyWFoFEVRFEUNjaIoiqKGRlEURVHU0CiKoihqaBRFURQ1NIqiKIqihkZRFEVRQ6MoiqJ0BEOzscB716W9diONfKhO1RlknYqi5DA0/yrw3mfTXj/nQhr5UJ2qM8g6FUXJYWguNw9zq8V7WoC/Ajenvfdj4G/sjJabj1bzEE+xoVV1qs4g61QUJQv/PwAlukJhy2ScjQAAAABJRU5ErkJggg==";
  30175. iconfontObjects = {
  30176. border: {
  30177. "border-top": " iconfont luckysheet-iconfont-shangbiankuang",
  30178. "border-bottom": " iconfont luckysheet-iconfont-xiabiankuang",
  30179. "border-left": " iconfont luckysheet-iconfont-zuobiankuang",
  30180. "border-right": " iconfont luckysheet-iconfont-youbiankuang",
  30181. "border-none": " iconfont luckysheet-iconfont-wubiankuang",
  30182. "border-all": " iconfont luckysheet-iconfont-quanjiabiankuang",
  30183. "border-outside": " iconfont luckysheet-iconfont-sizhoujiabiankuang",
  30184. "border-inside": " iconfont luckysheet-iconfont-neikuangxian",
  30185. "border-horizontal": " iconfont luckysheet-iconfont-neikuanghengxian",
  30186. "border-vertical": " iconfont luckysheet-iconfont-neikuangshuxian"
  30187. },
  30188. align: {
  30189. "left": " iconfont luckysheet-iconfont-wenbenzuoduiqi",
  30190. "center": " iconfont luckysheet-iconfont-wenbenjuzhongduiqi",
  30191. "right": " iconfont luckysheet-iconfont-wenbenyouduiqi",
  30192. "top": " iconfont luckysheet-iconfont-dingbuduiqi",
  30193. "middle": " iconfont luckysheet-iconfont-shuipingduiqi",
  30194. "bottom": " iconfont luckysheet-iconfont-dibuduiqi"
  30195. },
  30196. textWrap: {
  30197. "overflow": " iconfont luckysheet-iconfont-yichu1",
  30198. "wrap": " iconfont luckysheet-iconfont-zidonghuanhang",
  30199. "clip": " iconfont luckysheet-iconfont-jieduan"
  30200. },
  30201. rotation: {
  30202. "none": " iconfont luckysheet-iconfont-wuxuanzhuang",
  30203. "angleup": " iconfont luckysheet-iconfont-xiangshangqingxie",
  30204. "angledown": " iconfont luckysheet-iconfont-xiangxiaqingxie",
  30205. "vertical": " iconfont luckysheet-iconfont-shupaiwenzi",
  30206. "rotation-up": " iconfont luckysheet-iconfont-wenbenxiangshang",
  30207. "rotation-down": " iconfont luckysheet-iconfont-xiangxia90"
  30208. }
  30209. };
  30210. }
  30211. });
  30212. // src/methods/get.js
  30213. function getSheetIndex(index2) {
  30214. for (let i2 = 0; i2 < store_default.luckysheetfile.length; i2++) {
  30215. if (store_default.luckysheetfile[i2]["index"] == index2) {
  30216. return i2;
  30217. }
  30218. }
  30219. return null;
  30220. }
  30221. function getRangetxt(sheetIndex, range2, currentIndex) {
  30222. let sheettxt = "";
  30223. if (currentIndex == null) {
  30224. currentIndex = store_default.currentSheetIndex;
  30225. }
  30226. if (sheetIndex != currentIndex) {
  30227. sheettxt = store_default.luckysheetfile[getSheetIndex(sheetIndex)].name.replace(/'/g, "''");
  30228. if (/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/.test(sheettxt)) {
  30229. sheettxt = sheettxt + "!";
  30230. } else {
  30231. sheettxt = "'" + sheettxt + "'!";
  30232. }
  30233. }
  30234. let row0 = range2["row"][0], row1 = range2["row"][1];
  30235. let column0 = range2["column"][0], column1 = range2["column"][1];
  30236. if (row0 == null && row1 == null) {
  30237. return sheettxt + chatatABC(column0) + ":" + chatatABC(column1);
  30238. } else if (column0 == null && column1 == null) {
  30239. return sheettxt + (row0 + 1) + ":" + (row1 + 1);
  30240. } else {
  30241. if (column0 == column1 && row0 == row1) {
  30242. return sheettxt + chatatABC(column0) + (row0 + 1);
  30243. } else {
  30244. return sheettxt + chatatABC(column0) + (row0 + 1) + ":" + chatatABC(column1) + (row1 + 1);
  30245. }
  30246. }
  30247. }
  30248. function getluckysheet_select_save() {
  30249. return store_default.luckysheet_select_save;
  30250. }
  30251. function getluckysheetfile(plugin) {
  30252. if (plugin) {
  30253. store_default.luckysheetfile.forEach((file) => {
  30254. if (!!file.chart) {
  30255. file.chart.forEach((chartObj) => {
  30256. const chartJson = store_default.getChartJson(chartObj.chart_id);
  30257. chartObj.chartOptions = chartJson;
  30258. });
  30259. }
  30260. });
  30261. }
  30262. return store_default.luckysheetfile;
  30263. }
  30264. function getconfig() {
  30265. return store_default.config;
  30266. }
  30267. function getvisibledatarow() {
  30268. return store_default.visibledatarow;
  30269. }
  30270. function getvisibledatacolumn() {
  30271. return store_default.visibledatacolumn;
  30272. }
  30273. var init_get = __esm({
  30274. "src/methods/get.js"() {
  30275. init_util();
  30276. init_store();
  30277. }
  30278. });
  30279. // src/methods/set.js
  30280. function setluckysheet_select_save(v) {
  30281. store_default.luckysheet_select_save = v;
  30282. }
  30283. function setluckysheet_scroll_status(v) {
  30284. store_default.luckysheet_scroll_status = v;
  30285. }
  30286. function setluckysheetfile(d) {
  30287. store_default.luckysheetfile = d;
  30288. }
  30289. var init_set = __esm({
  30290. "src/methods/set.js"() {
  30291. init_get();
  30292. init_store();
  30293. }
  30294. });
  30295. // src/global/browser.js
  30296. var browser, browser_default;
  30297. var init_browser = __esm({
  30298. "src/global/browser.js"() {
  30299. browser = {
  30300. mobilecheck: function() {
  30301. var a = false;
  30302. return function(b) {
  30303. (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(b) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(b.substr(0, 4))) && (a = true);
  30304. }(navigator.userAgent || navigator.vendor || window.opera), document.body && document.body.clientWidth && document.body.clientHeight && document.body.clientWidth < 350 && document.body.clientHeight < 500 && (a = true), a;
  30305. },
  30306. iphoneCheck: function() {
  30307. var a = false;
  30308. return /iPhone/i.test(navigator.userAgent) && (a = true), true;
  30309. },
  30310. isWeixin: function() {
  30311. var a = navigator.userAgent.toLowerCase();
  30312. return a.match(/MicroMessenger/i) == "micromessenger" ? true : false;
  30313. },
  30314. isAndroid: function() {
  30315. var a = navigator.userAgent, b = (navigator.appVersion, a.indexOf("Android") > -1 || a.indexOf("Linux") > -1);
  30316. return b;
  30317. },
  30318. tabletCheck: function() {
  30319. var a = /ipad|android|android 3.0|xoom|sch-i800|playbook|tablet|kindle/i.test(navigator.userAgent.toLowerCase());
  30320. return a;
  30321. },
  30322. BrowserType: function() {
  30323. var userAgent = navigator.userAgent;
  30324. var isOpera = userAgent.indexOf("Opera") > -1;
  30325. var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera;
  30326. var isIE11 = userAgent.indexOf("Trident") > -1 && userAgent.indexOf("rv:11.0") > -1;
  30327. var isEdge = userAgent.indexOf("Edge") > -1;
  30328. var isFF = userAgent.indexOf("Firefox") > -1;
  30329. var isSafari = userAgent.indexOf("Safari") > -1 && userAgent.indexOf("Chrome") == -1;
  30330. var isChrome = userAgent.indexOf("Chrome") > -1 && userAgent.indexOf("Safari") > -1;
  30331. if (isIE) {
  30332. var reIE = new RegExp("MSIE (\\d+\\.\\d+);");
  30333. reIE.test(userAgent);
  30334. var fIEVersion = parseFloat(RegExp["$1"]);
  30335. if (fIEVersion == 7) {
  30336. return "IE7";
  30337. } else if (fIEVersion == 8) {
  30338. return "IE8";
  30339. } else if (fIEVersion == 9) {
  30340. return "IE9";
  30341. } else if (fIEVersion == 10) {
  30342. return "IE10";
  30343. } else {
  30344. return "0";
  30345. }
  30346. }
  30347. if (isFF) {
  30348. return "FF";
  30349. }
  30350. if (isOpera) {
  30351. return "Opera";
  30352. }
  30353. if (isSafari) {
  30354. return "Safari";
  30355. }
  30356. if (isChrome) {
  30357. return "Chrome";
  30358. }
  30359. if (isEdge) {
  30360. return "Edge";
  30361. }
  30362. if (isIE11) {
  30363. return "IE11";
  30364. }
  30365. },
  30366. isIE: function() {
  30367. var userAgent = navigator.userAgent;
  30368. var isOpera = userAgent.indexOf("Opera") > -1;
  30369. var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera;
  30370. var isIE11 = userAgent.indexOf("Trident") > -1 && userAgent.indexOf("rv:11.0") > -1;
  30371. if (isIE || isIE11) {
  30372. return "1";
  30373. } else {
  30374. return "-1";
  30375. }
  30376. },
  30377. IEVersion: function() {
  30378. var userAgent = navigator.userAgent;
  30379. var isOpera = userAgent.indexOf("Opera") > -1;
  30380. var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera;
  30381. var isIE11 = userAgent.indexOf("Trident") > -1 && userAgent.indexOf("rv:11.0") > -1;
  30382. var isEdge = userAgent.indexOf("Windows NT 6.1; Trident/7.0;") > -1 && !isIE;
  30383. if (isIE) {
  30384. var reIE = new RegExp("MSIE (\\d+\\.\\d+);");
  30385. reIE.test(userAgent);
  30386. var fIEVersion = parseFloat(RegExp["$1"]);
  30387. if (fIEVersion == 7) {
  30388. return "IE7";
  30389. } else if (fIEVersion == 8) {
  30390. return "IE8";
  30391. } else if (fIEVersion == 9) {
  30392. return "IE9";
  30393. } else if (fIEVersion == 10) {
  30394. return "IE10";
  30395. } else {
  30396. return "0";
  30397. }
  30398. } else if (isEdge) {
  30399. return "Edge";
  30400. } else if (isIE11) {
  30401. return "IE11";
  30402. } else {
  30403. return "-1";
  30404. }
  30405. },
  30406. luckysheetrefreshfixednum: null,
  30407. luckysheetrefreshfixed: function() {
  30408. var _this = this;
  30409. if (_this.luckysheetrefreshfixednum == null) {
  30410. if (_this.BrowserType() == "FF") {
  30411. _this.luckysheetrefreshfixednum = 5;
  30412. } else {
  30413. _this.luckysheetrefreshfixednum = 0;
  30414. }
  30415. }
  30416. return _this.luckysheetrefreshfixednum;
  30417. },
  30418. detectOS() {
  30419. var userAgent = navigator.userAgent;
  30420. var isWin = navigator.platform == "Win32" || navigator.platform == "Windows";
  30421. var isMac = navigator.platform == "Mac68K" || navigator.platform == "MacPPC" || navigator.platform == "Macintosh" || navigator.platform == "MacIntel";
  30422. if (isMac)
  30423. return "Mac";
  30424. var isUnix = navigator.platform == "X11" && !isWin && !isMac;
  30425. if (isUnix)
  30426. return "Unix";
  30427. var isLinux = String(navigator.platform).indexOf("Linux") > -1;
  30428. if (isLinux)
  30429. return "Linux";
  30430. if (isWin) {
  30431. var isWin2K = userAgent.indexOf("Windows NT 5.0") > -1 || userAgent.indexOf("Windows 2000") > -1;
  30432. if (isWin2K)
  30433. return "Win2000";
  30434. var isWinXP = userAgent.indexOf("Windows NT 5.1") > -1 || userAgent.indexOf("Windows XP") > -1;
  30435. if (isWinXP)
  30436. return "WinXP";
  30437. var isWin2003 = userAgent.indexOf("Windows NT 5.2") > -1 || userAgent.indexOf("Windows 2003") > -1;
  30438. if (isWin2003)
  30439. return "Win2003";
  30440. var isWinVista = userAgent.indexOf("Windows NT 6.0") > -1 || userAgent.indexOf("Windows Vista") > -1;
  30441. if (isWinVista)
  30442. return "WinVista";
  30443. var isWin7 = userAgent.indexOf("Windows NT 6.1") > -1 || userAgent.indexOf("Windows 7") > -1;
  30444. if (isWin7)
  30445. return "Win7";
  30446. }
  30447. return "other";
  30448. }
  30449. };
  30450. browser_default = browser;
  30451. }
  30452. });
  30453. // node_modules/pako/lib/utils/common.js
  30454. var require_common = __commonJS({
  30455. "node_modules/pako/lib/utils/common.js"(exports) {
  30456. "use strict";
  30457. var TYPED_OK = typeof Uint8Array !== "undefined" && typeof Uint16Array !== "undefined" && typeof Int32Array !== "undefined";
  30458. function _has(obj, key) {
  30459. return Object.prototype.hasOwnProperty.call(obj, key);
  30460. }
  30461. exports.assign = function(obj) {
  30462. var sources = Array.prototype.slice.call(arguments, 1);
  30463. while (sources.length) {
  30464. var source = sources.shift();
  30465. if (!source) {
  30466. continue;
  30467. }
  30468. if (typeof source !== "object") {
  30469. throw new TypeError(source + "must be non-object");
  30470. }
  30471. for (var p in source) {
  30472. if (_has(source, p)) {
  30473. obj[p] = source[p];
  30474. }
  30475. }
  30476. }
  30477. return obj;
  30478. };
  30479. exports.shrinkBuf = function(buf, size) {
  30480. if (buf.length === size) {
  30481. return buf;
  30482. }
  30483. if (buf.subarray) {
  30484. return buf.subarray(0, size);
  30485. }
  30486. buf.length = size;
  30487. return buf;
  30488. };
  30489. var fnTyped = {
  30490. arraySet: function(dest, src, src_offs, len, dest_offs) {
  30491. if (src.subarray && dest.subarray) {
  30492. dest.set(src.subarray(src_offs, src_offs + len), dest_offs);
  30493. return;
  30494. }
  30495. for (var i2 = 0; i2 < len; i2++) {
  30496. dest[dest_offs + i2] = src[src_offs + i2];
  30497. }
  30498. },
  30499. flattenChunks: function(chunks) {
  30500. var i2, l, len, pos, chunk, result;
  30501. len = 0;
  30502. for (i2 = 0, l = chunks.length; i2 < l; i2++) {
  30503. len += chunks[i2].length;
  30504. }
  30505. result = new Uint8Array(len);
  30506. pos = 0;
  30507. for (i2 = 0, l = chunks.length; i2 < l; i2++) {
  30508. chunk = chunks[i2];
  30509. result.set(chunk, pos);
  30510. pos += chunk.length;
  30511. }
  30512. return result;
  30513. }
  30514. };
  30515. var fnUntyped = {
  30516. arraySet: function(dest, src, src_offs, len, dest_offs) {
  30517. for (var i2 = 0; i2 < len; i2++) {
  30518. dest[dest_offs + i2] = src[src_offs + i2];
  30519. }
  30520. },
  30521. flattenChunks: function(chunks) {
  30522. return [].concat.apply([], chunks);
  30523. }
  30524. };
  30525. exports.setTyped = function(on) {
  30526. if (on) {
  30527. exports.Buf8 = Uint8Array;
  30528. exports.Buf16 = Uint16Array;
  30529. exports.Buf32 = Int32Array;
  30530. exports.assign(exports, fnTyped);
  30531. } else {
  30532. exports.Buf8 = Array;
  30533. exports.Buf16 = Array;
  30534. exports.Buf32 = Array;
  30535. exports.assign(exports, fnUntyped);
  30536. }
  30537. };
  30538. exports.setTyped(TYPED_OK);
  30539. }
  30540. });
  30541. // node_modules/pako/lib/zlib/trees.js
  30542. var require_trees = __commonJS({
  30543. "node_modules/pako/lib/zlib/trees.js"(exports) {
  30544. "use strict";
  30545. var utils = require_common();
  30546. var Z_FIXED = 4;
  30547. var Z_BINARY = 0;
  30548. var Z_TEXT = 1;
  30549. var Z_UNKNOWN = 2;
  30550. function zero(buf) {
  30551. var len = buf.length;
  30552. while (--len >= 0) {
  30553. buf[len] = 0;
  30554. }
  30555. }
  30556. var STORED_BLOCK = 0;
  30557. var STATIC_TREES = 1;
  30558. var DYN_TREES = 2;
  30559. var MIN_MATCH = 3;
  30560. var MAX_MATCH = 258;
  30561. var LENGTH_CODES = 29;
  30562. var LITERALS = 256;
  30563. var L_CODES = LITERALS + 1 + LENGTH_CODES;
  30564. var D_CODES = 30;
  30565. var BL_CODES = 19;
  30566. var HEAP_SIZE = 2 * L_CODES + 1;
  30567. var MAX_BITS = 15;
  30568. var Buf_size = 16;
  30569. var MAX_BL_BITS = 7;
  30570. var END_BLOCK = 256;
  30571. var REP_3_6 = 16;
  30572. var REPZ_3_10 = 17;
  30573. var REPZ_11_138 = 18;
  30574. var extra_lbits = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0];
  30575. var extra_dbits = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13];
  30576. var extra_blbits = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7];
  30577. var bl_order = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];
  30578. var DIST_CODE_LEN = 512;
  30579. var static_ltree = new Array((L_CODES + 2) * 2);
  30580. zero(static_ltree);
  30581. var static_dtree = new Array(D_CODES * 2);
  30582. zero(static_dtree);
  30583. var _dist_code = new Array(DIST_CODE_LEN);
  30584. zero(_dist_code);
  30585. var _length_code = new Array(MAX_MATCH - MIN_MATCH + 1);
  30586. zero(_length_code);
  30587. var base_length = new Array(LENGTH_CODES);
  30588. zero(base_length);
  30589. var base_dist = new Array(D_CODES);
  30590. zero(base_dist);
  30591. function StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {
  30592. this.static_tree = static_tree;
  30593. this.extra_bits = extra_bits;
  30594. this.extra_base = extra_base;
  30595. this.elems = elems;
  30596. this.max_length = max_length;
  30597. this.has_stree = static_tree && static_tree.length;
  30598. }
  30599. var static_l_desc;
  30600. var static_d_desc;
  30601. var static_bl_desc;
  30602. function TreeDesc(dyn_tree, stat_desc) {
  30603. this.dyn_tree = dyn_tree;
  30604. this.max_code = 0;
  30605. this.stat_desc = stat_desc;
  30606. }
  30607. function d_code(dist) {
  30608. return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];
  30609. }
  30610. function put_short(s, w) {
  30611. s.pending_buf[s.pending++] = w & 255;
  30612. s.pending_buf[s.pending++] = w >>> 8 & 255;
  30613. }
  30614. function send_bits(s, value, length) {
  30615. if (s.bi_valid > Buf_size - length) {
  30616. s.bi_buf |= value << s.bi_valid & 65535;
  30617. put_short(s, s.bi_buf);
  30618. s.bi_buf = value >> Buf_size - s.bi_valid;
  30619. s.bi_valid += length - Buf_size;
  30620. } else {
  30621. s.bi_buf |= value << s.bi_valid & 65535;
  30622. s.bi_valid += length;
  30623. }
  30624. }
  30625. function send_code(s, c2, tree) {
  30626. send_bits(s, tree[c2 * 2], tree[c2 * 2 + 1]);
  30627. }
  30628. function bi_reverse(code, len) {
  30629. var res = 0;
  30630. do {
  30631. res |= code & 1;
  30632. code >>>= 1;
  30633. res <<= 1;
  30634. } while (--len > 0);
  30635. return res >>> 1;
  30636. }
  30637. function bi_flush(s) {
  30638. if (s.bi_valid === 16) {
  30639. put_short(s, s.bi_buf);
  30640. s.bi_buf = 0;
  30641. s.bi_valid = 0;
  30642. } else if (s.bi_valid >= 8) {
  30643. s.pending_buf[s.pending++] = s.bi_buf & 255;
  30644. s.bi_buf >>= 8;
  30645. s.bi_valid -= 8;
  30646. }
  30647. }
  30648. function gen_bitlen(s, desc) {
  30649. var tree = desc.dyn_tree;
  30650. var max_code = desc.max_code;
  30651. var stree = desc.stat_desc.static_tree;
  30652. var has_stree = desc.stat_desc.has_stree;
  30653. var extra = desc.stat_desc.extra_bits;
  30654. var base = desc.stat_desc.extra_base;
  30655. var max_length = desc.stat_desc.max_length;
  30656. var h;
  30657. var n, m;
  30658. var bits;
  30659. var xbits;
  30660. var f;
  30661. var overflow = 0;
  30662. for (bits = 0; bits <= MAX_BITS; bits++) {
  30663. s.bl_count[bits] = 0;
  30664. }
  30665. tree[s.heap[s.heap_max] * 2 + 1] = 0;
  30666. for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {
  30667. n = s.heap[h];
  30668. bits = tree[tree[n * 2 + 1] * 2 + 1] + 1;
  30669. if (bits > max_length) {
  30670. bits = max_length;
  30671. overflow++;
  30672. }
  30673. tree[n * 2 + 1] = bits;
  30674. if (n > max_code) {
  30675. continue;
  30676. }
  30677. s.bl_count[bits]++;
  30678. xbits = 0;
  30679. if (n >= base) {
  30680. xbits = extra[n - base];
  30681. }
  30682. f = tree[n * 2];
  30683. s.opt_len += f * (bits + xbits);
  30684. if (has_stree) {
  30685. s.static_len += f * (stree[n * 2 + 1] + xbits);
  30686. }
  30687. }
  30688. if (overflow === 0) {
  30689. return;
  30690. }
  30691. do {
  30692. bits = max_length - 1;
  30693. while (s.bl_count[bits] === 0) {
  30694. bits--;
  30695. }
  30696. s.bl_count[bits]--;
  30697. s.bl_count[bits + 1] += 2;
  30698. s.bl_count[max_length]--;
  30699. overflow -= 2;
  30700. } while (overflow > 0);
  30701. for (bits = max_length; bits !== 0; bits--) {
  30702. n = s.bl_count[bits];
  30703. while (n !== 0) {
  30704. m = s.heap[--h];
  30705. if (m > max_code) {
  30706. continue;
  30707. }
  30708. if (tree[m * 2 + 1] !== bits) {
  30709. s.opt_len += (bits - tree[m * 2 + 1]) * tree[m * 2];
  30710. tree[m * 2 + 1] = bits;
  30711. }
  30712. n--;
  30713. }
  30714. }
  30715. }
  30716. function gen_codes(tree, max_code, bl_count) {
  30717. var next_code = new Array(MAX_BITS + 1);
  30718. var code = 0;
  30719. var bits;
  30720. var n;
  30721. for (bits = 1; bits <= MAX_BITS; bits++) {
  30722. next_code[bits] = code = code + bl_count[bits - 1] << 1;
  30723. }
  30724. for (n = 0; n <= max_code; n++) {
  30725. var len = tree[n * 2 + 1];
  30726. if (len === 0) {
  30727. continue;
  30728. }
  30729. tree[n * 2] = bi_reverse(next_code[len]++, len);
  30730. }
  30731. }
  30732. function tr_static_init() {
  30733. var n;
  30734. var bits;
  30735. var length;
  30736. var code;
  30737. var dist;
  30738. var bl_count = new Array(MAX_BITS + 1);
  30739. length = 0;
  30740. for (code = 0; code < LENGTH_CODES - 1; code++) {
  30741. base_length[code] = length;
  30742. for (n = 0; n < 1 << extra_lbits[code]; n++) {
  30743. _length_code[length++] = code;
  30744. }
  30745. }
  30746. _length_code[length - 1] = code;
  30747. dist = 0;
  30748. for (code = 0; code < 16; code++) {
  30749. base_dist[code] = dist;
  30750. for (n = 0; n < 1 << extra_dbits[code]; n++) {
  30751. _dist_code[dist++] = code;
  30752. }
  30753. }
  30754. dist >>= 7;
  30755. for (; code < D_CODES; code++) {
  30756. base_dist[code] = dist << 7;
  30757. for (n = 0; n < 1 << extra_dbits[code] - 7; n++) {
  30758. _dist_code[256 + dist++] = code;
  30759. }
  30760. }
  30761. for (bits = 0; bits <= MAX_BITS; bits++) {
  30762. bl_count[bits] = 0;
  30763. }
  30764. n = 0;
  30765. while (n <= 143) {
  30766. static_ltree[n * 2 + 1] = 8;
  30767. n++;
  30768. bl_count[8]++;
  30769. }
  30770. while (n <= 255) {
  30771. static_ltree[n * 2 + 1] = 9;
  30772. n++;
  30773. bl_count[9]++;
  30774. }
  30775. while (n <= 279) {
  30776. static_ltree[n * 2 + 1] = 7;
  30777. n++;
  30778. bl_count[7]++;
  30779. }
  30780. while (n <= 287) {
  30781. static_ltree[n * 2 + 1] = 8;
  30782. n++;
  30783. bl_count[8]++;
  30784. }
  30785. gen_codes(static_ltree, L_CODES + 1, bl_count);
  30786. for (n = 0; n < D_CODES; n++) {
  30787. static_dtree[n * 2 + 1] = 5;
  30788. static_dtree[n * 2] = bi_reverse(n, 5);
  30789. }
  30790. static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);
  30791. static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS);
  30792. static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS);
  30793. }
  30794. function init_block(s) {
  30795. var n;
  30796. for (n = 0; n < L_CODES; n++) {
  30797. s.dyn_ltree[n * 2] = 0;
  30798. }
  30799. for (n = 0; n < D_CODES; n++) {
  30800. s.dyn_dtree[n * 2] = 0;
  30801. }
  30802. for (n = 0; n < BL_CODES; n++) {
  30803. s.bl_tree[n * 2] = 0;
  30804. }
  30805. s.dyn_ltree[END_BLOCK * 2] = 1;
  30806. s.opt_len = s.static_len = 0;
  30807. s.last_lit = s.matches = 0;
  30808. }
  30809. function bi_windup(s) {
  30810. if (s.bi_valid > 8) {
  30811. put_short(s, s.bi_buf);
  30812. } else if (s.bi_valid > 0) {
  30813. s.pending_buf[s.pending++] = s.bi_buf;
  30814. }
  30815. s.bi_buf = 0;
  30816. s.bi_valid = 0;
  30817. }
  30818. function copy_block(s, buf, len, header) {
  30819. bi_windup(s);
  30820. if (header) {
  30821. put_short(s, len);
  30822. put_short(s, ~len);
  30823. }
  30824. utils.arraySet(s.pending_buf, s.window, buf, len, s.pending);
  30825. s.pending += len;
  30826. }
  30827. function smaller(tree, n, m, depth) {
  30828. var _n2 = n * 2;
  30829. var _m2 = m * 2;
  30830. return tree[_n2] < tree[_m2] || tree[_n2] === tree[_m2] && depth[n] <= depth[m];
  30831. }
  30832. function pqdownheap(s, tree, k) {
  30833. var v = s.heap[k];
  30834. var j = k << 1;
  30835. while (j <= s.heap_len) {
  30836. if (j < s.heap_len && smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {
  30837. j++;
  30838. }
  30839. if (smaller(tree, v, s.heap[j], s.depth)) {
  30840. break;
  30841. }
  30842. s.heap[k] = s.heap[j];
  30843. k = j;
  30844. j <<= 1;
  30845. }
  30846. s.heap[k] = v;
  30847. }
  30848. function compress_block(s, ltree, dtree) {
  30849. var dist;
  30850. var lc;
  30851. var lx = 0;
  30852. var code;
  30853. var extra;
  30854. if (s.last_lit !== 0) {
  30855. do {
  30856. dist = s.pending_buf[s.d_buf + lx * 2] << 8 | s.pending_buf[s.d_buf + lx * 2 + 1];
  30857. lc = s.pending_buf[s.l_buf + lx];
  30858. lx++;
  30859. if (dist === 0) {
  30860. send_code(s, lc, ltree);
  30861. } else {
  30862. code = _length_code[lc];
  30863. send_code(s, code + LITERALS + 1, ltree);
  30864. extra = extra_lbits[code];
  30865. if (extra !== 0) {
  30866. lc -= base_length[code];
  30867. send_bits(s, lc, extra);
  30868. }
  30869. dist--;
  30870. code = d_code(dist);
  30871. send_code(s, code, dtree);
  30872. extra = extra_dbits[code];
  30873. if (extra !== 0) {
  30874. dist -= base_dist[code];
  30875. send_bits(s, dist, extra);
  30876. }
  30877. }
  30878. } while (lx < s.last_lit);
  30879. }
  30880. send_code(s, END_BLOCK, ltree);
  30881. }
  30882. function build_tree(s, desc) {
  30883. var tree = desc.dyn_tree;
  30884. var stree = desc.stat_desc.static_tree;
  30885. var has_stree = desc.stat_desc.has_stree;
  30886. var elems = desc.stat_desc.elems;
  30887. var n, m;
  30888. var max_code = -1;
  30889. var node;
  30890. s.heap_len = 0;
  30891. s.heap_max = HEAP_SIZE;
  30892. for (n = 0; n < elems; n++) {
  30893. if (tree[n * 2] !== 0) {
  30894. s.heap[++s.heap_len] = max_code = n;
  30895. s.depth[n] = 0;
  30896. } else {
  30897. tree[n * 2 + 1] = 0;
  30898. }
  30899. }
  30900. while (s.heap_len < 2) {
  30901. node = s.heap[++s.heap_len] = max_code < 2 ? ++max_code : 0;
  30902. tree[node * 2] = 1;
  30903. s.depth[node] = 0;
  30904. s.opt_len--;
  30905. if (has_stree) {
  30906. s.static_len -= stree[node * 2 + 1];
  30907. }
  30908. }
  30909. desc.max_code = max_code;
  30910. for (n = s.heap_len >> 1; n >= 1; n--) {
  30911. pqdownheap(s, tree, n);
  30912. }
  30913. node = elems;
  30914. do {
  30915. n = s.heap[1];
  30916. s.heap[1] = s.heap[s.heap_len--];
  30917. pqdownheap(s, tree, 1);
  30918. m = s.heap[1];
  30919. s.heap[--s.heap_max] = n;
  30920. s.heap[--s.heap_max] = m;
  30921. tree[node * 2] = tree[n * 2] + tree[m * 2];
  30922. s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;
  30923. tree[n * 2 + 1] = tree[m * 2 + 1] = node;
  30924. s.heap[1] = node++;
  30925. pqdownheap(s, tree, 1);
  30926. } while (s.heap_len >= 2);
  30927. s.heap[--s.heap_max] = s.heap[1];
  30928. gen_bitlen(s, desc);
  30929. gen_codes(tree, max_code, s.bl_count);
  30930. }
  30931. function scan_tree(s, tree, max_code) {
  30932. var n;
  30933. var prevlen = -1;
  30934. var curlen;
  30935. var nextlen = tree[0 * 2 + 1];
  30936. var count = 0;
  30937. var max_count = 7;
  30938. var min_count = 4;
  30939. if (nextlen === 0) {
  30940. max_count = 138;
  30941. min_count = 3;
  30942. }
  30943. tree[(max_code + 1) * 2 + 1] = 65535;
  30944. for (n = 0; n <= max_code; n++) {
  30945. curlen = nextlen;
  30946. nextlen = tree[(n + 1) * 2 + 1];
  30947. if (++count < max_count && curlen === nextlen) {
  30948. continue;
  30949. } else if (count < min_count) {
  30950. s.bl_tree[curlen * 2] += count;
  30951. } else if (curlen !== 0) {
  30952. if (curlen !== prevlen) {
  30953. s.bl_tree[curlen * 2]++;
  30954. }
  30955. s.bl_tree[REP_3_6 * 2]++;
  30956. } else if (count <= 10) {
  30957. s.bl_tree[REPZ_3_10 * 2]++;
  30958. } else {
  30959. s.bl_tree[REPZ_11_138 * 2]++;
  30960. }
  30961. count = 0;
  30962. prevlen = curlen;
  30963. if (nextlen === 0) {
  30964. max_count = 138;
  30965. min_count = 3;
  30966. } else if (curlen === nextlen) {
  30967. max_count = 6;
  30968. min_count = 3;
  30969. } else {
  30970. max_count = 7;
  30971. min_count = 4;
  30972. }
  30973. }
  30974. }
  30975. function send_tree(s, tree, max_code) {
  30976. var n;
  30977. var prevlen = -1;
  30978. var curlen;
  30979. var nextlen = tree[0 * 2 + 1];
  30980. var count = 0;
  30981. var max_count = 7;
  30982. var min_count = 4;
  30983. if (nextlen === 0) {
  30984. max_count = 138;
  30985. min_count = 3;
  30986. }
  30987. for (n = 0; n <= max_code; n++) {
  30988. curlen = nextlen;
  30989. nextlen = tree[(n + 1) * 2 + 1];
  30990. if (++count < max_count && curlen === nextlen) {
  30991. continue;
  30992. } else if (count < min_count) {
  30993. do {
  30994. send_code(s, curlen, s.bl_tree);
  30995. } while (--count !== 0);
  30996. } else if (curlen !== 0) {
  30997. if (curlen !== prevlen) {
  30998. send_code(s, curlen, s.bl_tree);
  30999. count--;
  31000. }
  31001. send_code(s, REP_3_6, s.bl_tree);
  31002. send_bits(s, count - 3, 2);
  31003. } else if (count <= 10) {
  31004. send_code(s, REPZ_3_10, s.bl_tree);
  31005. send_bits(s, count - 3, 3);
  31006. } else {
  31007. send_code(s, REPZ_11_138, s.bl_tree);
  31008. send_bits(s, count - 11, 7);
  31009. }
  31010. count = 0;
  31011. prevlen = curlen;
  31012. if (nextlen === 0) {
  31013. max_count = 138;
  31014. min_count = 3;
  31015. } else if (curlen === nextlen) {
  31016. max_count = 6;
  31017. min_count = 3;
  31018. } else {
  31019. max_count = 7;
  31020. min_count = 4;
  31021. }
  31022. }
  31023. }
  31024. function build_bl_tree(s) {
  31025. var max_blindex;
  31026. scan_tree(s, s.dyn_ltree, s.l_desc.max_code);
  31027. scan_tree(s, s.dyn_dtree, s.d_desc.max_code);
  31028. build_tree(s, s.bl_desc);
  31029. for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {
  31030. if (s.bl_tree[bl_order[max_blindex] * 2 + 1] !== 0) {
  31031. break;
  31032. }
  31033. }
  31034. s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;
  31035. return max_blindex;
  31036. }
  31037. function send_all_trees(s, lcodes, dcodes, blcodes) {
  31038. var rank;
  31039. send_bits(s, lcodes - 257, 5);
  31040. send_bits(s, dcodes - 1, 5);
  31041. send_bits(s, blcodes - 4, 4);
  31042. for (rank = 0; rank < blcodes; rank++) {
  31043. send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1], 3);
  31044. }
  31045. send_tree(s, s.dyn_ltree, lcodes - 1);
  31046. send_tree(s, s.dyn_dtree, dcodes - 1);
  31047. }
  31048. function detect_data_type(s) {
  31049. var black_mask = 4093624447;
  31050. var n;
  31051. for (n = 0; n <= 31; n++, black_mask >>>= 1) {
  31052. if (black_mask & 1 && s.dyn_ltree[n * 2] !== 0) {
  31053. return Z_BINARY;
  31054. }
  31055. }
  31056. if (s.dyn_ltree[9 * 2] !== 0 || s.dyn_ltree[10 * 2] !== 0 || s.dyn_ltree[13 * 2] !== 0) {
  31057. return Z_TEXT;
  31058. }
  31059. for (n = 32; n < LITERALS; n++) {
  31060. if (s.dyn_ltree[n * 2] !== 0) {
  31061. return Z_TEXT;
  31062. }
  31063. }
  31064. return Z_BINARY;
  31065. }
  31066. var static_init_done = false;
  31067. function _tr_init(s) {
  31068. if (!static_init_done) {
  31069. tr_static_init();
  31070. static_init_done = true;
  31071. }
  31072. s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc);
  31073. s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc);
  31074. s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);
  31075. s.bi_buf = 0;
  31076. s.bi_valid = 0;
  31077. init_block(s);
  31078. }
  31079. function _tr_stored_block(s, buf, stored_len, last) {
  31080. send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3);
  31081. copy_block(s, buf, stored_len, true);
  31082. }
  31083. function _tr_align(s) {
  31084. send_bits(s, STATIC_TREES << 1, 3);
  31085. send_code(s, END_BLOCK, static_ltree);
  31086. bi_flush(s);
  31087. }
  31088. function _tr_flush_block(s, buf, stored_len, last) {
  31089. var opt_lenb, static_lenb;
  31090. var max_blindex = 0;
  31091. if (s.level > 0) {
  31092. if (s.strm.data_type === Z_UNKNOWN) {
  31093. s.strm.data_type = detect_data_type(s);
  31094. }
  31095. build_tree(s, s.l_desc);
  31096. build_tree(s, s.d_desc);
  31097. max_blindex = build_bl_tree(s);
  31098. opt_lenb = s.opt_len + 3 + 7 >>> 3;
  31099. static_lenb = s.static_len + 3 + 7 >>> 3;
  31100. if (static_lenb <= opt_lenb) {
  31101. opt_lenb = static_lenb;
  31102. }
  31103. } else {
  31104. opt_lenb = static_lenb = stored_len + 5;
  31105. }
  31106. if (stored_len + 4 <= opt_lenb && buf !== -1) {
  31107. _tr_stored_block(s, buf, stored_len, last);
  31108. } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {
  31109. send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);
  31110. compress_block(s, static_ltree, static_dtree);
  31111. } else {
  31112. send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);
  31113. send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);
  31114. compress_block(s, s.dyn_ltree, s.dyn_dtree);
  31115. }
  31116. init_block(s);
  31117. if (last) {
  31118. bi_windup(s);
  31119. }
  31120. }
  31121. function _tr_tally(s, dist, lc) {
  31122. s.pending_buf[s.d_buf + s.last_lit * 2] = dist >>> 8 & 255;
  31123. s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 255;
  31124. s.pending_buf[s.l_buf + s.last_lit] = lc & 255;
  31125. s.last_lit++;
  31126. if (dist === 0) {
  31127. s.dyn_ltree[lc * 2]++;
  31128. } else {
  31129. s.matches++;
  31130. dist--;
  31131. s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]++;
  31132. s.dyn_dtree[d_code(dist) * 2]++;
  31133. }
  31134. return s.last_lit === s.lit_bufsize - 1;
  31135. }
  31136. exports._tr_init = _tr_init;
  31137. exports._tr_stored_block = _tr_stored_block;
  31138. exports._tr_flush_block = _tr_flush_block;
  31139. exports._tr_tally = _tr_tally;
  31140. exports._tr_align = _tr_align;
  31141. }
  31142. });
  31143. // node_modules/pako/lib/zlib/adler32.js
  31144. var require_adler32 = __commonJS({
  31145. "node_modules/pako/lib/zlib/adler32.js"(exports, module) {
  31146. "use strict";
  31147. function adler32(adler, buf, len, pos) {
  31148. var s1 = adler & 65535 | 0, s2 = adler >>> 16 & 65535 | 0, n = 0;
  31149. while (len !== 0) {
  31150. n = len > 2e3 ? 2e3 : len;
  31151. len -= n;
  31152. do {
  31153. s1 = s1 + buf[pos++] | 0;
  31154. s2 = s2 + s1 | 0;
  31155. } while (--n);
  31156. s1 %= 65521;
  31157. s2 %= 65521;
  31158. }
  31159. return s1 | s2 << 16 | 0;
  31160. }
  31161. module.exports = adler32;
  31162. }
  31163. });
  31164. // node_modules/pako/lib/zlib/crc32.js
  31165. var require_crc32 = __commonJS({
  31166. "node_modules/pako/lib/zlib/crc32.js"(exports, module) {
  31167. "use strict";
  31168. function makeTable() {
  31169. var c2, table = [];
  31170. for (var n = 0; n < 256; n++) {
  31171. c2 = n;
  31172. for (var k = 0; k < 8; k++) {
  31173. c2 = c2 & 1 ? 3988292384 ^ c2 >>> 1 : c2 >>> 1;
  31174. }
  31175. table[n] = c2;
  31176. }
  31177. return table;
  31178. }
  31179. var crcTable = makeTable();
  31180. function crc32(crc, buf, len, pos) {
  31181. var t = crcTable, end = pos + len;
  31182. crc ^= -1;
  31183. for (var i2 = pos; i2 < end; i2++) {
  31184. crc = crc >>> 8 ^ t[(crc ^ buf[i2]) & 255];
  31185. }
  31186. return crc ^ -1;
  31187. }
  31188. module.exports = crc32;
  31189. }
  31190. });
  31191. // node_modules/pako/lib/zlib/messages.js
  31192. var require_messages = __commonJS({
  31193. "node_modules/pako/lib/zlib/messages.js"(exports, module) {
  31194. "use strict";
  31195. module.exports = {
  31196. 2: "need dictionary",
  31197. 1: "stream end",
  31198. 0: "",
  31199. "-1": "file error",
  31200. "-2": "stream error",
  31201. "-3": "data error",
  31202. "-4": "insufficient memory",
  31203. "-5": "buffer error",
  31204. "-6": "incompatible version"
  31205. };
  31206. }
  31207. });
  31208. // node_modules/pako/lib/zlib/deflate.js
  31209. var require_deflate = __commonJS({
  31210. "node_modules/pako/lib/zlib/deflate.js"(exports) {
  31211. "use strict";
  31212. var utils = require_common();
  31213. var trees = require_trees();
  31214. var adler32 = require_adler32();
  31215. var crc32 = require_crc32();
  31216. var msg = require_messages();
  31217. var Z_NO_FLUSH = 0;
  31218. var Z_PARTIAL_FLUSH = 1;
  31219. var Z_FULL_FLUSH = 3;
  31220. var Z_FINISH = 4;
  31221. var Z_BLOCK = 5;
  31222. var Z_OK = 0;
  31223. var Z_STREAM_END = 1;
  31224. var Z_STREAM_ERROR = -2;
  31225. var Z_DATA_ERROR = -3;
  31226. var Z_BUF_ERROR = -5;
  31227. var Z_DEFAULT_COMPRESSION = -1;
  31228. var Z_FILTERED = 1;
  31229. var Z_HUFFMAN_ONLY = 2;
  31230. var Z_RLE = 3;
  31231. var Z_FIXED = 4;
  31232. var Z_DEFAULT_STRATEGY = 0;
  31233. var Z_UNKNOWN = 2;
  31234. var Z_DEFLATED = 8;
  31235. var MAX_MEM_LEVEL = 9;
  31236. var MAX_WBITS = 15;
  31237. var DEF_MEM_LEVEL = 8;
  31238. var LENGTH_CODES = 29;
  31239. var LITERALS = 256;
  31240. var L_CODES = LITERALS + 1 + LENGTH_CODES;
  31241. var D_CODES = 30;
  31242. var BL_CODES = 19;
  31243. var HEAP_SIZE = 2 * L_CODES + 1;
  31244. var MAX_BITS = 15;
  31245. var MIN_MATCH = 3;
  31246. var MAX_MATCH = 258;
  31247. var MIN_LOOKAHEAD = MAX_MATCH + MIN_MATCH + 1;
  31248. var PRESET_DICT = 32;
  31249. var INIT_STATE = 42;
  31250. var EXTRA_STATE = 69;
  31251. var NAME_STATE = 73;
  31252. var COMMENT_STATE = 91;
  31253. var HCRC_STATE = 103;
  31254. var BUSY_STATE = 113;
  31255. var FINISH_STATE = 666;
  31256. var BS_NEED_MORE = 1;
  31257. var BS_BLOCK_DONE = 2;
  31258. var BS_FINISH_STARTED = 3;
  31259. var BS_FINISH_DONE = 4;
  31260. var OS_CODE = 3;
  31261. function err(strm, errorCode) {
  31262. strm.msg = msg[errorCode];
  31263. return errorCode;
  31264. }
  31265. function rank(f) {
  31266. return (f << 1) - (f > 4 ? 9 : 0);
  31267. }
  31268. function zero(buf) {
  31269. var len = buf.length;
  31270. while (--len >= 0) {
  31271. buf[len] = 0;
  31272. }
  31273. }
  31274. function flush_pending(strm) {
  31275. var s = strm.state;
  31276. var len = s.pending;
  31277. if (len > strm.avail_out) {
  31278. len = strm.avail_out;
  31279. }
  31280. if (len === 0) {
  31281. return;
  31282. }
  31283. utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);
  31284. strm.next_out += len;
  31285. s.pending_out += len;
  31286. strm.total_out += len;
  31287. strm.avail_out -= len;
  31288. s.pending -= len;
  31289. if (s.pending === 0) {
  31290. s.pending_out = 0;
  31291. }
  31292. }
  31293. function flush_block_only(s, last) {
  31294. trees._tr_flush_block(s, s.block_start >= 0 ? s.block_start : -1, s.strstart - s.block_start, last);
  31295. s.block_start = s.strstart;
  31296. flush_pending(s.strm);
  31297. }
  31298. function put_byte(s, b) {
  31299. s.pending_buf[s.pending++] = b;
  31300. }
  31301. function putShortMSB(s, b) {
  31302. s.pending_buf[s.pending++] = b >>> 8 & 255;
  31303. s.pending_buf[s.pending++] = b & 255;
  31304. }
  31305. function read_buf(strm, buf, start, size) {
  31306. var len = strm.avail_in;
  31307. if (len > size) {
  31308. len = size;
  31309. }
  31310. if (len === 0) {
  31311. return 0;
  31312. }
  31313. strm.avail_in -= len;
  31314. utils.arraySet(buf, strm.input, strm.next_in, len, start);
  31315. if (strm.state.wrap === 1) {
  31316. strm.adler = adler32(strm.adler, buf, len, start);
  31317. } else if (strm.state.wrap === 2) {
  31318. strm.adler = crc32(strm.adler, buf, len, start);
  31319. }
  31320. strm.next_in += len;
  31321. strm.total_in += len;
  31322. return len;
  31323. }
  31324. function longest_match(s, cur_match) {
  31325. var chain_length = s.max_chain_length;
  31326. var scan = s.strstart;
  31327. var match;
  31328. var len;
  31329. var best_len = s.prev_length;
  31330. var nice_match = s.nice_match;
  31331. var limit = s.strstart > s.w_size - MIN_LOOKAHEAD ? s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0;
  31332. var _win = s.window;
  31333. var wmask = s.w_mask;
  31334. var prev = s.prev;
  31335. var strend = s.strstart + MAX_MATCH;
  31336. var scan_end1 = _win[scan + best_len - 1];
  31337. var scan_end = _win[scan + best_len];
  31338. if (s.prev_length >= s.good_match) {
  31339. chain_length >>= 2;
  31340. }
  31341. if (nice_match > s.lookahead) {
  31342. nice_match = s.lookahead;
  31343. }
  31344. do {
  31345. match = cur_match;
  31346. if (_win[match + best_len] !== scan_end || _win[match + best_len - 1] !== scan_end1 || _win[match] !== _win[scan] || _win[++match] !== _win[scan + 1]) {
  31347. continue;
  31348. }
  31349. scan += 2;
  31350. match++;
  31351. do {
  31352. } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && scan < strend);
  31353. len = MAX_MATCH - (strend - scan);
  31354. scan = strend - MAX_MATCH;
  31355. if (len > best_len) {
  31356. s.match_start = cur_match;
  31357. best_len = len;
  31358. if (len >= nice_match) {
  31359. break;
  31360. }
  31361. scan_end1 = _win[scan + best_len - 1];
  31362. scan_end = _win[scan + best_len];
  31363. }
  31364. } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);
  31365. if (best_len <= s.lookahead) {
  31366. return best_len;
  31367. }
  31368. return s.lookahead;
  31369. }
  31370. function fill_window(s) {
  31371. var _w_size = s.w_size;
  31372. var p, n, m, more, str;
  31373. do {
  31374. more = s.window_size - s.lookahead - s.strstart;
  31375. if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {
  31376. utils.arraySet(s.window, s.window, _w_size, _w_size, 0);
  31377. s.match_start -= _w_size;
  31378. s.strstart -= _w_size;
  31379. s.block_start -= _w_size;
  31380. n = s.hash_size;
  31381. p = n;
  31382. do {
  31383. m = s.head[--p];
  31384. s.head[p] = m >= _w_size ? m - _w_size : 0;
  31385. } while (--n);
  31386. n = _w_size;
  31387. p = n;
  31388. do {
  31389. m = s.prev[--p];
  31390. s.prev[p] = m >= _w_size ? m - _w_size : 0;
  31391. } while (--n);
  31392. more += _w_size;
  31393. }
  31394. if (s.strm.avail_in === 0) {
  31395. break;
  31396. }
  31397. n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);
  31398. s.lookahead += n;
  31399. if (s.lookahead + s.insert >= MIN_MATCH) {
  31400. str = s.strstart - s.insert;
  31401. s.ins_h = s.window[str];
  31402. s.ins_h = (s.ins_h << s.hash_shift ^ s.window[str + 1]) & s.hash_mask;
  31403. while (s.insert) {
  31404. s.ins_h = (s.ins_h << s.hash_shift ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;
  31405. s.prev[str & s.w_mask] = s.head[s.ins_h];
  31406. s.head[s.ins_h] = str;
  31407. str++;
  31408. s.insert--;
  31409. if (s.lookahead + s.insert < MIN_MATCH) {
  31410. break;
  31411. }
  31412. }
  31413. }
  31414. } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);
  31415. }
  31416. function deflate_stored(s, flush) {
  31417. var max_block_size = 65535;
  31418. if (max_block_size > s.pending_buf_size - 5) {
  31419. max_block_size = s.pending_buf_size - 5;
  31420. }
  31421. for (; ; ) {
  31422. if (s.lookahead <= 1) {
  31423. fill_window(s);
  31424. if (s.lookahead === 0 && flush === Z_NO_FLUSH) {
  31425. return BS_NEED_MORE;
  31426. }
  31427. if (s.lookahead === 0) {
  31428. break;
  31429. }
  31430. }
  31431. s.strstart += s.lookahead;
  31432. s.lookahead = 0;
  31433. var max_start = s.block_start + max_block_size;
  31434. if (s.strstart === 0 || s.strstart >= max_start) {
  31435. s.lookahead = s.strstart - max_start;
  31436. s.strstart = max_start;
  31437. flush_block_only(s, false);
  31438. if (s.strm.avail_out === 0) {
  31439. return BS_NEED_MORE;
  31440. }
  31441. }
  31442. if (s.strstart - s.block_start >= s.w_size - MIN_LOOKAHEAD) {
  31443. flush_block_only(s, false);
  31444. if (s.strm.avail_out === 0) {
  31445. return BS_NEED_MORE;
  31446. }
  31447. }
  31448. }
  31449. s.insert = 0;
  31450. if (flush === Z_FINISH) {
  31451. flush_block_only(s, true);
  31452. if (s.strm.avail_out === 0) {
  31453. return BS_FINISH_STARTED;
  31454. }
  31455. return BS_FINISH_DONE;
  31456. }
  31457. if (s.strstart > s.block_start) {
  31458. flush_block_only(s, false);
  31459. if (s.strm.avail_out === 0) {
  31460. return BS_NEED_MORE;
  31461. }
  31462. }
  31463. return BS_NEED_MORE;
  31464. }
  31465. function deflate_fast(s, flush) {
  31466. var hash_head;
  31467. var bflush;
  31468. for (; ; ) {
  31469. if (s.lookahead < MIN_LOOKAHEAD) {
  31470. fill_window(s);
  31471. if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {
  31472. return BS_NEED_MORE;
  31473. }
  31474. if (s.lookahead === 0) {
  31475. break;
  31476. }
  31477. }
  31478. hash_head = 0;
  31479. if (s.lookahead >= MIN_MATCH) {
  31480. s.ins_h = (s.ins_h << s.hash_shift ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
  31481. hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
  31482. s.head[s.ins_h] = s.strstart;
  31483. }
  31484. if (hash_head !== 0 && s.strstart - hash_head <= s.w_size - MIN_LOOKAHEAD) {
  31485. s.match_length = longest_match(s, hash_head);
  31486. }
  31487. if (s.match_length >= MIN_MATCH) {
  31488. bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);
  31489. s.lookahead -= s.match_length;
  31490. if (s.match_length <= s.max_lazy_match && s.lookahead >= MIN_MATCH) {
  31491. s.match_length--;
  31492. do {
  31493. s.strstart++;
  31494. s.ins_h = (s.ins_h << s.hash_shift ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
  31495. hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
  31496. s.head[s.ins_h] = s.strstart;
  31497. } while (--s.match_length !== 0);
  31498. s.strstart++;
  31499. } else {
  31500. s.strstart += s.match_length;
  31501. s.match_length = 0;
  31502. s.ins_h = s.window[s.strstart];
  31503. s.ins_h = (s.ins_h << s.hash_shift ^ s.window[s.strstart + 1]) & s.hash_mask;
  31504. }
  31505. } else {
  31506. bflush = trees._tr_tally(s, 0, s.window[s.strstart]);
  31507. s.lookahead--;
  31508. s.strstart++;
  31509. }
  31510. if (bflush) {
  31511. flush_block_only(s, false);
  31512. if (s.strm.avail_out === 0) {
  31513. return BS_NEED_MORE;
  31514. }
  31515. }
  31516. }
  31517. s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;
  31518. if (flush === Z_FINISH) {
  31519. flush_block_only(s, true);
  31520. if (s.strm.avail_out === 0) {
  31521. return BS_FINISH_STARTED;
  31522. }
  31523. return BS_FINISH_DONE;
  31524. }
  31525. if (s.last_lit) {
  31526. flush_block_only(s, false);
  31527. if (s.strm.avail_out === 0) {
  31528. return BS_NEED_MORE;
  31529. }
  31530. }
  31531. return BS_BLOCK_DONE;
  31532. }
  31533. function deflate_slow(s, flush) {
  31534. var hash_head;
  31535. var bflush;
  31536. var max_insert;
  31537. for (; ; ) {
  31538. if (s.lookahead < MIN_LOOKAHEAD) {
  31539. fill_window(s);
  31540. if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {
  31541. return BS_NEED_MORE;
  31542. }
  31543. if (s.lookahead === 0) {
  31544. break;
  31545. }
  31546. }
  31547. hash_head = 0;
  31548. if (s.lookahead >= MIN_MATCH) {
  31549. s.ins_h = (s.ins_h << s.hash_shift ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
  31550. hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
  31551. s.head[s.ins_h] = s.strstart;
  31552. }
  31553. s.prev_length = s.match_length;
  31554. s.prev_match = s.match_start;
  31555. s.match_length = MIN_MATCH - 1;
  31556. if (hash_head !== 0 && s.prev_length < s.max_lazy_match && s.strstart - hash_head <= s.w_size - MIN_LOOKAHEAD) {
  31557. s.match_length = longest_match(s, hash_head);
  31558. if (s.match_length <= 5 && (s.strategy === Z_FILTERED || s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096)) {
  31559. s.match_length = MIN_MATCH - 1;
  31560. }
  31561. }
  31562. if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {
  31563. max_insert = s.strstart + s.lookahead - MIN_MATCH;
  31564. bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);
  31565. s.lookahead -= s.prev_length - 1;
  31566. s.prev_length -= 2;
  31567. do {
  31568. if (++s.strstart <= max_insert) {
  31569. s.ins_h = (s.ins_h << s.hash_shift ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
  31570. hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
  31571. s.head[s.ins_h] = s.strstart;
  31572. }
  31573. } while (--s.prev_length !== 0);
  31574. s.match_available = 0;
  31575. s.match_length = MIN_MATCH - 1;
  31576. s.strstart++;
  31577. if (bflush) {
  31578. flush_block_only(s, false);
  31579. if (s.strm.avail_out === 0) {
  31580. return BS_NEED_MORE;
  31581. }
  31582. }
  31583. } else if (s.match_available) {
  31584. bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);
  31585. if (bflush) {
  31586. flush_block_only(s, false);
  31587. }
  31588. s.strstart++;
  31589. s.lookahead--;
  31590. if (s.strm.avail_out === 0) {
  31591. return BS_NEED_MORE;
  31592. }
  31593. } else {
  31594. s.match_available = 1;
  31595. s.strstart++;
  31596. s.lookahead--;
  31597. }
  31598. }
  31599. if (s.match_available) {
  31600. bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);
  31601. s.match_available = 0;
  31602. }
  31603. s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;
  31604. if (flush === Z_FINISH) {
  31605. flush_block_only(s, true);
  31606. if (s.strm.avail_out === 0) {
  31607. return BS_FINISH_STARTED;
  31608. }
  31609. return BS_FINISH_DONE;
  31610. }
  31611. if (s.last_lit) {
  31612. flush_block_only(s, false);
  31613. if (s.strm.avail_out === 0) {
  31614. return BS_NEED_MORE;
  31615. }
  31616. }
  31617. return BS_BLOCK_DONE;
  31618. }
  31619. function deflate_rle(s, flush) {
  31620. var bflush;
  31621. var prev;
  31622. var scan, strend;
  31623. var _win = s.window;
  31624. for (; ; ) {
  31625. if (s.lookahead <= MAX_MATCH) {
  31626. fill_window(s);
  31627. if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) {
  31628. return BS_NEED_MORE;
  31629. }
  31630. if (s.lookahead === 0) {
  31631. break;
  31632. }
  31633. }
  31634. s.match_length = 0;
  31635. if (s.lookahead >= MIN_MATCH && s.strstart > 0) {
  31636. scan = s.strstart - 1;
  31637. prev = _win[scan];
  31638. if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {
  31639. strend = s.strstart + MAX_MATCH;
  31640. do {
  31641. } while (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && scan < strend);
  31642. s.match_length = MAX_MATCH - (strend - scan);
  31643. if (s.match_length > s.lookahead) {
  31644. s.match_length = s.lookahead;
  31645. }
  31646. }
  31647. }
  31648. if (s.match_length >= MIN_MATCH) {
  31649. bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH);
  31650. s.lookahead -= s.match_length;
  31651. s.strstart += s.match_length;
  31652. s.match_length = 0;
  31653. } else {
  31654. bflush = trees._tr_tally(s, 0, s.window[s.strstart]);
  31655. s.lookahead--;
  31656. s.strstart++;
  31657. }
  31658. if (bflush) {
  31659. flush_block_only(s, false);
  31660. if (s.strm.avail_out === 0) {
  31661. return BS_NEED_MORE;
  31662. }
  31663. }
  31664. }
  31665. s.insert = 0;
  31666. if (flush === Z_FINISH) {
  31667. flush_block_only(s, true);
  31668. if (s.strm.avail_out === 0) {
  31669. return BS_FINISH_STARTED;
  31670. }
  31671. return BS_FINISH_DONE;
  31672. }
  31673. if (s.last_lit) {
  31674. flush_block_only(s, false);
  31675. if (s.strm.avail_out === 0) {
  31676. return BS_NEED_MORE;
  31677. }
  31678. }
  31679. return BS_BLOCK_DONE;
  31680. }
  31681. function deflate_huff(s, flush) {
  31682. var bflush;
  31683. for (; ; ) {
  31684. if (s.lookahead === 0) {
  31685. fill_window(s);
  31686. if (s.lookahead === 0) {
  31687. if (flush === Z_NO_FLUSH) {
  31688. return BS_NEED_MORE;
  31689. }
  31690. break;
  31691. }
  31692. }
  31693. s.match_length = 0;
  31694. bflush = trees._tr_tally(s, 0, s.window[s.strstart]);
  31695. s.lookahead--;
  31696. s.strstart++;
  31697. if (bflush) {
  31698. flush_block_only(s, false);
  31699. if (s.strm.avail_out === 0) {
  31700. return BS_NEED_MORE;
  31701. }
  31702. }
  31703. }
  31704. s.insert = 0;
  31705. if (flush === Z_FINISH) {
  31706. flush_block_only(s, true);
  31707. if (s.strm.avail_out === 0) {
  31708. return BS_FINISH_STARTED;
  31709. }
  31710. return BS_FINISH_DONE;
  31711. }
  31712. if (s.last_lit) {
  31713. flush_block_only(s, false);
  31714. if (s.strm.avail_out === 0) {
  31715. return BS_NEED_MORE;
  31716. }
  31717. }
  31718. return BS_BLOCK_DONE;
  31719. }
  31720. function Config(good_length, max_lazy, nice_length, max_chain, func) {
  31721. this.good_length = good_length;
  31722. this.max_lazy = max_lazy;
  31723. this.nice_length = nice_length;
  31724. this.max_chain = max_chain;
  31725. this.func = func;
  31726. }
  31727. var configuration_table;
  31728. configuration_table = [
  31729. new Config(0, 0, 0, 0, deflate_stored),
  31730. new Config(4, 4, 8, 4, deflate_fast),
  31731. new Config(4, 5, 16, 8, deflate_fast),
  31732. new Config(4, 6, 32, 32, deflate_fast),
  31733. new Config(4, 4, 16, 16, deflate_slow),
  31734. new Config(8, 16, 32, 32, deflate_slow),
  31735. new Config(8, 16, 128, 128, deflate_slow),
  31736. new Config(8, 32, 128, 256, deflate_slow),
  31737. new Config(32, 128, 258, 1024, deflate_slow),
  31738. new Config(32, 258, 258, 4096, deflate_slow)
  31739. ];
  31740. function lm_init(s) {
  31741. s.window_size = 2 * s.w_size;
  31742. zero(s.head);
  31743. s.max_lazy_match = configuration_table[s.level].max_lazy;
  31744. s.good_match = configuration_table[s.level].good_length;
  31745. s.nice_match = configuration_table[s.level].nice_length;
  31746. s.max_chain_length = configuration_table[s.level].max_chain;
  31747. s.strstart = 0;
  31748. s.block_start = 0;
  31749. s.lookahead = 0;
  31750. s.insert = 0;
  31751. s.match_length = s.prev_length = MIN_MATCH - 1;
  31752. s.match_available = 0;
  31753. s.ins_h = 0;
  31754. }
  31755. function DeflateState() {
  31756. this.strm = null;
  31757. this.status = 0;
  31758. this.pending_buf = null;
  31759. this.pending_buf_size = 0;
  31760. this.pending_out = 0;
  31761. this.pending = 0;
  31762. this.wrap = 0;
  31763. this.gzhead = null;
  31764. this.gzindex = 0;
  31765. this.method = Z_DEFLATED;
  31766. this.last_flush = -1;
  31767. this.w_size = 0;
  31768. this.w_bits = 0;
  31769. this.w_mask = 0;
  31770. this.window = null;
  31771. this.window_size = 0;
  31772. this.prev = null;
  31773. this.head = null;
  31774. this.ins_h = 0;
  31775. this.hash_size = 0;
  31776. this.hash_bits = 0;
  31777. this.hash_mask = 0;
  31778. this.hash_shift = 0;
  31779. this.block_start = 0;
  31780. this.match_length = 0;
  31781. this.prev_match = 0;
  31782. this.match_available = 0;
  31783. this.strstart = 0;
  31784. this.match_start = 0;
  31785. this.lookahead = 0;
  31786. this.prev_length = 0;
  31787. this.max_chain_length = 0;
  31788. this.max_lazy_match = 0;
  31789. this.level = 0;
  31790. this.strategy = 0;
  31791. this.good_match = 0;
  31792. this.nice_match = 0;
  31793. this.dyn_ltree = new utils.Buf16(HEAP_SIZE * 2);
  31794. this.dyn_dtree = new utils.Buf16((2 * D_CODES + 1) * 2);
  31795. this.bl_tree = new utils.Buf16((2 * BL_CODES + 1) * 2);
  31796. zero(this.dyn_ltree);
  31797. zero(this.dyn_dtree);
  31798. zero(this.bl_tree);
  31799. this.l_desc = null;
  31800. this.d_desc = null;
  31801. this.bl_desc = null;
  31802. this.bl_count = new utils.Buf16(MAX_BITS + 1);
  31803. this.heap = new utils.Buf16(2 * L_CODES + 1);
  31804. zero(this.heap);
  31805. this.heap_len = 0;
  31806. this.heap_max = 0;
  31807. this.depth = new utils.Buf16(2 * L_CODES + 1);
  31808. zero(this.depth);
  31809. this.l_buf = 0;
  31810. this.lit_bufsize = 0;
  31811. this.last_lit = 0;
  31812. this.d_buf = 0;
  31813. this.opt_len = 0;
  31814. this.static_len = 0;
  31815. this.matches = 0;
  31816. this.insert = 0;
  31817. this.bi_buf = 0;
  31818. this.bi_valid = 0;
  31819. }
  31820. function deflateResetKeep(strm) {
  31821. var s;
  31822. if (!strm || !strm.state) {
  31823. return err(strm, Z_STREAM_ERROR);
  31824. }
  31825. strm.total_in = strm.total_out = 0;
  31826. strm.data_type = Z_UNKNOWN;
  31827. s = strm.state;
  31828. s.pending = 0;
  31829. s.pending_out = 0;
  31830. if (s.wrap < 0) {
  31831. s.wrap = -s.wrap;
  31832. }
  31833. s.status = s.wrap ? INIT_STATE : BUSY_STATE;
  31834. strm.adler = s.wrap === 2 ? 0 : 1;
  31835. s.last_flush = Z_NO_FLUSH;
  31836. trees._tr_init(s);
  31837. return Z_OK;
  31838. }
  31839. function deflateReset(strm) {
  31840. var ret = deflateResetKeep(strm);
  31841. if (ret === Z_OK) {
  31842. lm_init(strm.state);
  31843. }
  31844. return ret;
  31845. }
  31846. function deflateSetHeader(strm, head) {
  31847. if (!strm || !strm.state) {
  31848. return Z_STREAM_ERROR;
  31849. }
  31850. if (strm.state.wrap !== 2) {
  31851. return Z_STREAM_ERROR;
  31852. }
  31853. strm.state.gzhead = head;
  31854. return Z_OK;
  31855. }
  31856. function deflateInit2(strm, level, method2, windowBits, memLevel, strategy) {
  31857. if (!strm) {
  31858. return Z_STREAM_ERROR;
  31859. }
  31860. var wrap = 1;
  31861. if (level === Z_DEFAULT_COMPRESSION) {
  31862. level = 6;
  31863. }
  31864. if (windowBits < 0) {
  31865. wrap = 0;
  31866. windowBits = -windowBits;
  31867. } else if (windowBits > 15) {
  31868. wrap = 2;
  31869. windowBits -= 16;
  31870. }
  31871. if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method2 !== Z_DEFLATED || windowBits < 8 || windowBits > 15 || level < 0 || level > 9 || strategy < 0 || strategy > Z_FIXED) {
  31872. return err(strm, Z_STREAM_ERROR);
  31873. }
  31874. if (windowBits === 8) {
  31875. windowBits = 9;
  31876. }
  31877. var s = new DeflateState();
  31878. strm.state = s;
  31879. s.strm = strm;
  31880. s.wrap = wrap;
  31881. s.gzhead = null;
  31882. s.w_bits = windowBits;
  31883. s.w_size = 1 << s.w_bits;
  31884. s.w_mask = s.w_size - 1;
  31885. s.hash_bits = memLevel + 7;
  31886. s.hash_size = 1 << s.hash_bits;
  31887. s.hash_mask = s.hash_size - 1;
  31888. s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);
  31889. s.window = new utils.Buf8(s.w_size * 2);
  31890. s.head = new utils.Buf16(s.hash_size);
  31891. s.prev = new utils.Buf16(s.w_size);
  31892. s.lit_bufsize = 1 << memLevel + 6;
  31893. s.pending_buf_size = s.lit_bufsize * 4;
  31894. s.pending_buf = new utils.Buf8(s.pending_buf_size);
  31895. s.d_buf = 1 * s.lit_bufsize;
  31896. s.l_buf = (1 + 2) * s.lit_bufsize;
  31897. s.level = level;
  31898. s.strategy = strategy;
  31899. s.method = method2;
  31900. return deflateReset(strm);
  31901. }
  31902. function deflateInit(strm, level) {
  31903. return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);
  31904. }
  31905. function deflate(strm, flush) {
  31906. var old_flush, s;
  31907. var beg, val;
  31908. if (!strm || !strm.state || flush > Z_BLOCK || flush < 0) {
  31909. return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;
  31910. }
  31911. s = strm.state;
  31912. if (!strm.output || !strm.input && strm.avail_in !== 0 || s.status === FINISH_STATE && flush !== Z_FINISH) {
  31913. return err(strm, strm.avail_out === 0 ? Z_BUF_ERROR : Z_STREAM_ERROR);
  31914. }
  31915. s.strm = strm;
  31916. old_flush = s.last_flush;
  31917. s.last_flush = flush;
  31918. if (s.status === INIT_STATE) {
  31919. if (s.wrap === 2) {
  31920. strm.adler = 0;
  31921. put_byte(s, 31);
  31922. put_byte(s, 139);
  31923. put_byte(s, 8);
  31924. if (!s.gzhead) {
  31925. put_byte(s, 0);
  31926. put_byte(s, 0);
  31927. put_byte(s, 0);
  31928. put_byte(s, 0);
  31929. put_byte(s, 0);
  31930. put_byte(s, s.level === 9 ? 2 : s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ? 4 : 0);
  31931. put_byte(s, OS_CODE);
  31932. s.status = BUSY_STATE;
  31933. } else {
  31934. put_byte(s, (s.gzhead.text ? 1 : 0) + (s.gzhead.hcrc ? 2 : 0) + (!s.gzhead.extra ? 0 : 4) + (!s.gzhead.name ? 0 : 8) + (!s.gzhead.comment ? 0 : 16));
  31935. put_byte(s, s.gzhead.time & 255);
  31936. put_byte(s, s.gzhead.time >> 8 & 255);
  31937. put_byte(s, s.gzhead.time >> 16 & 255);
  31938. put_byte(s, s.gzhead.time >> 24 & 255);
  31939. put_byte(s, s.level === 9 ? 2 : s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ? 4 : 0);
  31940. put_byte(s, s.gzhead.os & 255);
  31941. if (s.gzhead.extra && s.gzhead.extra.length) {
  31942. put_byte(s, s.gzhead.extra.length & 255);
  31943. put_byte(s, s.gzhead.extra.length >> 8 & 255);
  31944. }
  31945. if (s.gzhead.hcrc) {
  31946. strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);
  31947. }
  31948. s.gzindex = 0;
  31949. s.status = EXTRA_STATE;
  31950. }
  31951. } else {
  31952. var header = Z_DEFLATED + (s.w_bits - 8 << 4) << 8;
  31953. var level_flags = -1;
  31954. if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {
  31955. level_flags = 0;
  31956. } else if (s.level < 6) {
  31957. level_flags = 1;
  31958. } else if (s.level === 6) {
  31959. level_flags = 2;
  31960. } else {
  31961. level_flags = 3;
  31962. }
  31963. header |= level_flags << 6;
  31964. if (s.strstart !== 0) {
  31965. header |= PRESET_DICT;
  31966. }
  31967. header += 31 - header % 31;
  31968. s.status = BUSY_STATE;
  31969. putShortMSB(s, header);
  31970. if (s.strstart !== 0) {
  31971. putShortMSB(s, strm.adler >>> 16);
  31972. putShortMSB(s, strm.adler & 65535);
  31973. }
  31974. strm.adler = 1;
  31975. }
  31976. }
  31977. if (s.status === EXTRA_STATE) {
  31978. if (s.gzhead.extra) {
  31979. beg = s.pending;
  31980. while (s.gzindex < (s.gzhead.extra.length & 65535)) {
  31981. if (s.pending === s.pending_buf_size) {
  31982. if (s.gzhead.hcrc && s.pending > beg) {
  31983. strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
  31984. }
  31985. flush_pending(strm);
  31986. beg = s.pending;
  31987. if (s.pending === s.pending_buf_size) {
  31988. break;
  31989. }
  31990. }
  31991. put_byte(s, s.gzhead.extra[s.gzindex] & 255);
  31992. s.gzindex++;
  31993. }
  31994. if (s.gzhead.hcrc && s.pending > beg) {
  31995. strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
  31996. }
  31997. if (s.gzindex === s.gzhead.extra.length) {
  31998. s.gzindex = 0;
  31999. s.status = NAME_STATE;
  32000. }
  32001. } else {
  32002. s.status = NAME_STATE;
  32003. }
  32004. }
  32005. if (s.status === NAME_STATE) {
  32006. if (s.gzhead.name) {
  32007. beg = s.pending;
  32008. do {
  32009. if (s.pending === s.pending_buf_size) {
  32010. if (s.gzhead.hcrc && s.pending > beg) {
  32011. strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
  32012. }
  32013. flush_pending(strm);
  32014. beg = s.pending;
  32015. if (s.pending === s.pending_buf_size) {
  32016. val = 1;
  32017. break;
  32018. }
  32019. }
  32020. if (s.gzindex < s.gzhead.name.length) {
  32021. val = s.gzhead.name.charCodeAt(s.gzindex++) & 255;
  32022. } else {
  32023. val = 0;
  32024. }
  32025. put_byte(s, val);
  32026. } while (val !== 0);
  32027. if (s.gzhead.hcrc && s.pending > beg) {
  32028. strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
  32029. }
  32030. if (val === 0) {
  32031. s.gzindex = 0;
  32032. s.status = COMMENT_STATE;
  32033. }
  32034. } else {
  32035. s.status = COMMENT_STATE;
  32036. }
  32037. }
  32038. if (s.status === COMMENT_STATE) {
  32039. if (s.gzhead.comment) {
  32040. beg = s.pending;
  32041. do {
  32042. if (s.pending === s.pending_buf_size) {
  32043. if (s.gzhead.hcrc && s.pending > beg) {
  32044. strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
  32045. }
  32046. flush_pending(strm);
  32047. beg = s.pending;
  32048. if (s.pending === s.pending_buf_size) {
  32049. val = 1;
  32050. break;
  32051. }
  32052. }
  32053. if (s.gzindex < s.gzhead.comment.length) {
  32054. val = s.gzhead.comment.charCodeAt(s.gzindex++) & 255;
  32055. } else {
  32056. val = 0;
  32057. }
  32058. put_byte(s, val);
  32059. } while (val !== 0);
  32060. if (s.gzhead.hcrc && s.pending > beg) {
  32061. strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
  32062. }
  32063. if (val === 0) {
  32064. s.status = HCRC_STATE;
  32065. }
  32066. } else {
  32067. s.status = HCRC_STATE;
  32068. }
  32069. }
  32070. if (s.status === HCRC_STATE) {
  32071. if (s.gzhead.hcrc) {
  32072. if (s.pending + 2 > s.pending_buf_size) {
  32073. flush_pending(strm);
  32074. }
  32075. if (s.pending + 2 <= s.pending_buf_size) {
  32076. put_byte(s, strm.adler & 255);
  32077. put_byte(s, strm.adler >> 8 & 255);
  32078. strm.adler = 0;
  32079. s.status = BUSY_STATE;
  32080. }
  32081. } else {
  32082. s.status = BUSY_STATE;
  32083. }
  32084. }
  32085. if (s.pending !== 0) {
  32086. flush_pending(strm);
  32087. if (strm.avail_out === 0) {
  32088. s.last_flush = -1;
  32089. return Z_OK;
  32090. }
  32091. } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) && flush !== Z_FINISH) {
  32092. return err(strm, Z_BUF_ERROR);
  32093. }
  32094. if (s.status === FINISH_STATE && strm.avail_in !== 0) {
  32095. return err(strm, Z_BUF_ERROR);
  32096. }
  32097. if (strm.avail_in !== 0 || s.lookahead !== 0 || flush !== Z_NO_FLUSH && s.status !== FINISH_STATE) {
  32098. var bstate = s.strategy === Z_HUFFMAN_ONLY ? deflate_huff(s, flush) : s.strategy === Z_RLE ? deflate_rle(s, flush) : configuration_table[s.level].func(s, flush);
  32099. if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {
  32100. s.status = FINISH_STATE;
  32101. }
  32102. if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {
  32103. if (strm.avail_out === 0) {
  32104. s.last_flush = -1;
  32105. }
  32106. return Z_OK;
  32107. }
  32108. if (bstate === BS_BLOCK_DONE) {
  32109. if (flush === Z_PARTIAL_FLUSH) {
  32110. trees._tr_align(s);
  32111. } else if (flush !== Z_BLOCK) {
  32112. trees._tr_stored_block(s, 0, 0, false);
  32113. if (flush === Z_FULL_FLUSH) {
  32114. zero(s.head);
  32115. if (s.lookahead === 0) {
  32116. s.strstart = 0;
  32117. s.block_start = 0;
  32118. s.insert = 0;
  32119. }
  32120. }
  32121. }
  32122. flush_pending(strm);
  32123. if (strm.avail_out === 0) {
  32124. s.last_flush = -1;
  32125. return Z_OK;
  32126. }
  32127. }
  32128. }
  32129. if (flush !== Z_FINISH) {
  32130. return Z_OK;
  32131. }
  32132. if (s.wrap <= 0) {
  32133. return Z_STREAM_END;
  32134. }
  32135. if (s.wrap === 2) {
  32136. put_byte(s, strm.adler & 255);
  32137. put_byte(s, strm.adler >> 8 & 255);
  32138. put_byte(s, strm.adler >> 16 & 255);
  32139. put_byte(s, strm.adler >> 24 & 255);
  32140. put_byte(s, strm.total_in & 255);
  32141. put_byte(s, strm.total_in >> 8 & 255);
  32142. put_byte(s, strm.total_in >> 16 & 255);
  32143. put_byte(s, strm.total_in >> 24 & 255);
  32144. } else {
  32145. putShortMSB(s, strm.adler >>> 16);
  32146. putShortMSB(s, strm.adler & 65535);
  32147. }
  32148. flush_pending(strm);
  32149. if (s.wrap > 0) {
  32150. s.wrap = -s.wrap;
  32151. }
  32152. return s.pending !== 0 ? Z_OK : Z_STREAM_END;
  32153. }
  32154. function deflateEnd(strm) {
  32155. var status;
  32156. if (!strm || !strm.state) {
  32157. return Z_STREAM_ERROR;
  32158. }
  32159. status = strm.state.status;
  32160. if (status !== INIT_STATE && status !== EXTRA_STATE && status !== NAME_STATE && status !== COMMENT_STATE && status !== HCRC_STATE && status !== BUSY_STATE && status !== FINISH_STATE) {
  32161. return err(strm, Z_STREAM_ERROR);
  32162. }
  32163. strm.state = null;
  32164. return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;
  32165. }
  32166. function deflateSetDictionary(strm, dictionary) {
  32167. var dictLength = dictionary.length;
  32168. var s;
  32169. var str, n;
  32170. var wrap;
  32171. var avail;
  32172. var next;
  32173. var input;
  32174. var tmpDict;
  32175. if (!strm || !strm.state) {
  32176. return Z_STREAM_ERROR;
  32177. }
  32178. s = strm.state;
  32179. wrap = s.wrap;
  32180. if (wrap === 2 || wrap === 1 && s.status !== INIT_STATE || s.lookahead) {
  32181. return Z_STREAM_ERROR;
  32182. }
  32183. if (wrap === 1) {
  32184. strm.adler = adler32(strm.adler, dictionary, dictLength, 0);
  32185. }
  32186. s.wrap = 0;
  32187. if (dictLength >= s.w_size) {
  32188. if (wrap === 0) {
  32189. zero(s.head);
  32190. s.strstart = 0;
  32191. s.block_start = 0;
  32192. s.insert = 0;
  32193. }
  32194. tmpDict = new utils.Buf8(s.w_size);
  32195. utils.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0);
  32196. dictionary = tmpDict;
  32197. dictLength = s.w_size;
  32198. }
  32199. avail = strm.avail_in;
  32200. next = strm.next_in;
  32201. input = strm.input;
  32202. strm.avail_in = dictLength;
  32203. strm.next_in = 0;
  32204. strm.input = dictionary;
  32205. fill_window(s);
  32206. while (s.lookahead >= MIN_MATCH) {
  32207. str = s.strstart;
  32208. n = s.lookahead - (MIN_MATCH - 1);
  32209. do {
  32210. s.ins_h = (s.ins_h << s.hash_shift ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;
  32211. s.prev[str & s.w_mask] = s.head[s.ins_h];
  32212. s.head[s.ins_h] = str;
  32213. str++;
  32214. } while (--n);
  32215. s.strstart = str;
  32216. s.lookahead = MIN_MATCH - 1;
  32217. fill_window(s);
  32218. }
  32219. s.strstart += s.lookahead;
  32220. s.block_start = s.strstart;
  32221. s.insert = s.lookahead;
  32222. s.lookahead = 0;
  32223. s.match_length = s.prev_length = MIN_MATCH - 1;
  32224. s.match_available = 0;
  32225. strm.next_in = next;
  32226. strm.input = input;
  32227. strm.avail_in = avail;
  32228. s.wrap = wrap;
  32229. return Z_OK;
  32230. }
  32231. exports.deflateInit = deflateInit;
  32232. exports.deflateInit2 = deflateInit2;
  32233. exports.deflateReset = deflateReset;
  32234. exports.deflateResetKeep = deflateResetKeep;
  32235. exports.deflateSetHeader = deflateSetHeader;
  32236. exports.deflate = deflate;
  32237. exports.deflateEnd = deflateEnd;
  32238. exports.deflateSetDictionary = deflateSetDictionary;
  32239. exports.deflateInfo = "pako deflate (from Nodeca project)";
  32240. }
  32241. });
  32242. // node_modules/pako/lib/utils/strings.js
  32243. var require_strings = __commonJS({
  32244. "node_modules/pako/lib/utils/strings.js"(exports) {
  32245. "use strict";
  32246. var utils = require_common();
  32247. var STR_APPLY_OK = true;
  32248. var STR_APPLY_UIA_OK = true;
  32249. try {
  32250. String.fromCharCode.apply(null, [0]);
  32251. } catch (__) {
  32252. STR_APPLY_OK = false;
  32253. }
  32254. try {
  32255. String.fromCharCode.apply(null, new Uint8Array(1));
  32256. } catch (__) {
  32257. STR_APPLY_UIA_OK = false;
  32258. }
  32259. var _utf8len = new utils.Buf8(256);
  32260. for (var q = 0; q < 256; q++) {
  32261. _utf8len[q] = q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1;
  32262. }
  32263. _utf8len[254] = _utf8len[254] = 1;
  32264. exports.string2buf = function(str) {
  32265. var buf, c2, c22, m_pos, i2, str_len = str.length, buf_len = 0;
  32266. for (m_pos = 0; m_pos < str_len; m_pos++) {
  32267. c2 = str.charCodeAt(m_pos);
  32268. if ((c2 & 64512) === 55296 && m_pos + 1 < str_len) {
  32269. c22 = str.charCodeAt(m_pos + 1);
  32270. if ((c22 & 64512) === 56320) {
  32271. c2 = 65536 + (c2 - 55296 << 10) + (c22 - 56320);
  32272. m_pos++;
  32273. }
  32274. }
  32275. buf_len += c2 < 128 ? 1 : c2 < 2048 ? 2 : c2 < 65536 ? 3 : 4;
  32276. }
  32277. buf = new utils.Buf8(buf_len);
  32278. for (i2 = 0, m_pos = 0; i2 < buf_len; m_pos++) {
  32279. c2 = str.charCodeAt(m_pos);
  32280. if ((c2 & 64512) === 55296 && m_pos + 1 < str_len) {
  32281. c22 = str.charCodeAt(m_pos + 1);
  32282. if ((c22 & 64512) === 56320) {
  32283. c2 = 65536 + (c2 - 55296 << 10) + (c22 - 56320);
  32284. m_pos++;
  32285. }
  32286. }
  32287. if (c2 < 128) {
  32288. buf[i2++] = c2;
  32289. } else if (c2 < 2048) {
  32290. buf[i2++] = 192 | c2 >>> 6;
  32291. buf[i2++] = 128 | c2 & 63;
  32292. } else if (c2 < 65536) {
  32293. buf[i2++] = 224 | c2 >>> 12;
  32294. buf[i2++] = 128 | c2 >>> 6 & 63;
  32295. buf[i2++] = 128 | c2 & 63;
  32296. } else {
  32297. buf[i2++] = 240 | c2 >>> 18;
  32298. buf[i2++] = 128 | c2 >>> 12 & 63;
  32299. buf[i2++] = 128 | c2 >>> 6 & 63;
  32300. buf[i2++] = 128 | c2 & 63;
  32301. }
  32302. }
  32303. return buf;
  32304. };
  32305. function buf2binstring(buf, len) {
  32306. if (len < 65534) {
  32307. if (buf.subarray && STR_APPLY_UIA_OK || !buf.subarray && STR_APPLY_OK) {
  32308. return String.fromCharCode.apply(null, utils.shrinkBuf(buf, len));
  32309. }
  32310. }
  32311. var result = "";
  32312. for (var i2 = 0; i2 < len; i2++) {
  32313. result += String.fromCharCode(buf[i2]);
  32314. }
  32315. return result;
  32316. }
  32317. exports.buf2binstring = function(buf) {
  32318. return buf2binstring(buf, buf.length);
  32319. };
  32320. exports.binstring2buf = function(str) {
  32321. var buf = new utils.Buf8(str.length);
  32322. for (var i2 = 0, len = buf.length; i2 < len; i2++) {
  32323. buf[i2] = str.charCodeAt(i2);
  32324. }
  32325. return buf;
  32326. };
  32327. exports.buf2string = function(buf, max) {
  32328. var i2, out, c2, c_len;
  32329. var len = max || buf.length;
  32330. var utf16buf = new Array(len * 2);
  32331. for (out = 0, i2 = 0; i2 < len; ) {
  32332. c2 = buf[i2++];
  32333. if (c2 < 128) {
  32334. utf16buf[out++] = c2;
  32335. continue;
  32336. }
  32337. c_len = _utf8len[c2];
  32338. if (c_len > 4) {
  32339. utf16buf[out++] = 65533;
  32340. i2 += c_len - 1;
  32341. continue;
  32342. }
  32343. c2 &= c_len === 2 ? 31 : c_len === 3 ? 15 : 7;
  32344. while (c_len > 1 && i2 < len) {
  32345. c2 = c2 << 6 | buf[i2++] & 63;
  32346. c_len--;
  32347. }
  32348. if (c_len > 1) {
  32349. utf16buf[out++] = 65533;
  32350. continue;
  32351. }
  32352. if (c2 < 65536) {
  32353. utf16buf[out++] = c2;
  32354. } else {
  32355. c2 -= 65536;
  32356. utf16buf[out++] = 55296 | c2 >> 10 & 1023;
  32357. utf16buf[out++] = 56320 | c2 & 1023;
  32358. }
  32359. }
  32360. return buf2binstring(utf16buf, out);
  32361. };
  32362. exports.utf8border = function(buf, max) {
  32363. var pos;
  32364. max = max || buf.length;
  32365. if (max > buf.length) {
  32366. max = buf.length;
  32367. }
  32368. pos = max - 1;
  32369. while (pos >= 0 && (buf[pos] & 192) === 128) {
  32370. pos--;
  32371. }
  32372. if (pos < 0) {
  32373. return max;
  32374. }
  32375. if (pos === 0) {
  32376. return max;
  32377. }
  32378. return pos + _utf8len[buf[pos]] > max ? pos : max;
  32379. };
  32380. }
  32381. });
  32382. // node_modules/pako/lib/zlib/zstream.js
  32383. var require_zstream = __commonJS({
  32384. "node_modules/pako/lib/zlib/zstream.js"(exports, module) {
  32385. "use strict";
  32386. function ZStream() {
  32387. this.input = null;
  32388. this.next_in = 0;
  32389. this.avail_in = 0;
  32390. this.total_in = 0;
  32391. this.output = null;
  32392. this.next_out = 0;
  32393. this.avail_out = 0;
  32394. this.total_out = 0;
  32395. this.msg = "";
  32396. this.state = null;
  32397. this.data_type = 2;
  32398. this.adler = 0;
  32399. }
  32400. module.exports = ZStream;
  32401. }
  32402. });
  32403. // node_modules/pako/lib/deflate.js
  32404. var require_deflate2 = __commonJS({
  32405. "node_modules/pako/lib/deflate.js"(exports) {
  32406. "use strict";
  32407. var zlib_deflate = require_deflate();
  32408. var utils = require_common();
  32409. var strings = require_strings();
  32410. var msg = require_messages();
  32411. var ZStream = require_zstream();
  32412. var toString2 = Object.prototype.toString;
  32413. var Z_NO_FLUSH = 0;
  32414. var Z_FINISH = 4;
  32415. var Z_OK = 0;
  32416. var Z_STREAM_END = 1;
  32417. var Z_SYNC_FLUSH = 2;
  32418. var Z_DEFAULT_COMPRESSION = -1;
  32419. var Z_DEFAULT_STRATEGY = 0;
  32420. var Z_DEFLATED = 8;
  32421. function Deflate(options) {
  32422. if (!(this instanceof Deflate))
  32423. return new Deflate(options);
  32424. this.options = utils.assign({
  32425. level: Z_DEFAULT_COMPRESSION,
  32426. method: Z_DEFLATED,
  32427. chunkSize: 16384,
  32428. windowBits: 15,
  32429. memLevel: 8,
  32430. strategy: Z_DEFAULT_STRATEGY,
  32431. to: ""
  32432. }, options || {});
  32433. var opt = this.options;
  32434. if (opt.raw && opt.windowBits > 0) {
  32435. opt.windowBits = -opt.windowBits;
  32436. } else if (opt.gzip && opt.windowBits > 0 && opt.windowBits < 16) {
  32437. opt.windowBits += 16;
  32438. }
  32439. this.err = 0;
  32440. this.msg = "";
  32441. this.ended = false;
  32442. this.chunks = [];
  32443. this.strm = new ZStream();
  32444. this.strm.avail_out = 0;
  32445. var status = zlib_deflate.deflateInit2(this.strm, opt.level, opt.method, opt.windowBits, opt.memLevel, opt.strategy);
  32446. if (status !== Z_OK) {
  32447. throw new Error(msg[status]);
  32448. }
  32449. if (opt.header) {
  32450. zlib_deflate.deflateSetHeader(this.strm, opt.header);
  32451. }
  32452. if (opt.dictionary) {
  32453. var dict;
  32454. if (typeof opt.dictionary === "string") {
  32455. dict = strings.string2buf(opt.dictionary);
  32456. } else if (toString2.call(opt.dictionary) === "[object ArrayBuffer]") {
  32457. dict = new Uint8Array(opt.dictionary);
  32458. } else {
  32459. dict = opt.dictionary;
  32460. }
  32461. status = zlib_deflate.deflateSetDictionary(this.strm, dict);
  32462. if (status !== Z_OK) {
  32463. throw new Error(msg[status]);
  32464. }
  32465. this._dict_set = true;
  32466. }
  32467. }
  32468. Deflate.prototype.push = function(data, mode) {
  32469. var strm = this.strm;
  32470. var chunkSize = this.options.chunkSize;
  32471. var status, _mode;
  32472. if (this.ended) {
  32473. return false;
  32474. }
  32475. _mode = mode === ~~mode ? mode : mode === true ? Z_FINISH : Z_NO_FLUSH;
  32476. if (typeof data === "string") {
  32477. strm.input = strings.string2buf(data);
  32478. } else if (toString2.call(data) === "[object ArrayBuffer]") {
  32479. strm.input = new Uint8Array(data);
  32480. } else {
  32481. strm.input = data;
  32482. }
  32483. strm.next_in = 0;
  32484. strm.avail_in = strm.input.length;
  32485. do {
  32486. if (strm.avail_out === 0) {
  32487. strm.output = new utils.Buf8(chunkSize);
  32488. strm.next_out = 0;
  32489. strm.avail_out = chunkSize;
  32490. }
  32491. status = zlib_deflate.deflate(strm, _mode);
  32492. if (status !== Z_STREAM_END && status !== Z_OK) {
  32493. this.onEnd(status);
  32494. this.ended = true;
  32495. return false;
  32496. }
  32497. if (strm.avail_out === 0 || strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH)) {
  32498. if (this.options.to === "string") {
  32499. this.onData(strings.buf2binstring(utils.shrinkBuf(strm.output, strm.next_out)));
  32500. } else {
  32501. this.onData(utils.shrinkBuf(strm.output, strm.next_out));
  32502. }
  32503. }
  32504. } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);
  32505. if (_mode === Z_FINISH) {
  32506. status = zlib_deflate.deflateEnd(this.strm);
  32507. this.onEnd(status);
  32508. this.ended = true;
  32509. return status === Z_OK;
  32510. }
  32511. if (_mode === Z_SYNC_FLUSH) {
  32512. this.onEnd(Z_OK);
  32513. strm.avail_out = 0;
  32514. return true;
  32515. }
  32516. return true;
  32517. };
  32518. Deflate.prototype.onData = function(chunk) {
  32519. this.chunks.push(chunk);
  32520. };
  32521. Deflate.prototype.onEnd = function(status) {
  32522. if (status === Z_OK) {
  32523. if (this.options.to === "string") {
  32524. this.result = this.chunks.join("");
  32525. } else {
  32526. this.result = utils.flattenChunks(this.chunks);
  32527. }
  32528. }
  32529. this.chunks = [];
  32530. this.err = status;
  32531. this.msg = this.strm.msg;
  32532. };
  32533. function deflate(input, options) {
  32534. var deflator = new Deflate(options);
  32535. deflator.push(input, true);
  32536. if (deflator.err) {
  32537. throw deflator.msg || msg[deflator.err];
  32538. }
  32539. return deflator.result;
  32540. }
  32541. function deflateRaw(input, options) {
  32542. options = options || {};
  32543. options.raw = true;
  32544. return deflate(input, options);
  32545. }
  32546. function gzip(input, options) {
  32547. options = options || {};
  32548. options.gzip = true;
  32549. return deflate(input, options);
  32550. }
  32551. exports.Deflate = Deflate;
  32552. exports.deflate = deflate;
  32553. exports.deflateRaw = deflateRaw;
  32554. exports.gzip = gzip;
  32555. }
  32556. });
  32557. // node_modules/pako/lib/zlib/inffast.js
  32558. var require_inffast = __commonJS({
  32559. "node_modules/pako/lib/zlib/inffast.js"(exports, module) {
  32560. "use strict";
  32561. var BAD = 30;
  32562. var TYPE = 12;
  32563. module.exports = function inflate_fast(strm, start) {
  32564. var state;
  32565. var _in;
  32566. var last;
  32567. var _out;
  32568. var beg;
  32569. var end;
  32570. var dmax;
  32571. var wsize;
  32572. var whave;
  32573. var wnext;
  32574. var s_window;
  32575. var hold;
  32576. var bits;
  32577. var lcode;
  32578. var dcode;
  32579. var lmask;
  32580. var dmask;
  32581. var here;
  32582. var op;
  32583. var len;
  32584. var dist;
  32585. var from;
  32586. var from_source;
  32587. var input, output;
  32588. state = strm.state;
  32589. _in = strm.next_in;
  32590. input = strm.input;
  32591. last = _in + (strm.avail_in - 5);
  32592. _out = strm.next_out;
  32593. output = strm.output;
  32594. beg = _out - (start - strm.avail_out);
  32595. end = _out + (strm.avail_out - 257);
  32596. dmax = state.dmax;
  32597. wsize = state.wsize;
  32598. whave = state.whave;
  32599. wnext = state.wnext;
  32600. s_window = state.window;
  32601. hold = state.hold;
  32602. bits = state.bits;
  32603. lcode = state.lencode;
  32604. dcode = state.distcode;
  32605. lmask = (1 << state.lenbits) - 1;
  32606. dmask = (1 << state.distbits) - 1;
  32607. top:
  32608. do {
  32609. if (bits < 15) {
  32610. hold += input[_in++] << bits;
  32611. bits += 8;
  32612. hold += input[_in++] << bits;
  32613. bits += 8;
  32614. }
  32615. here = lcode[hold & lmask];
  32616. dolen:
  32617. for (; ; ) {
  32618. op = here >>> 24;
  32619. hold >>>= op;
  32620. bits -= op;
  32621. op = here >>> 16 & 255;
  32622. if (op === 0) {
  32623. output[_out++] = here & 65535;
  32624. } else if (op & 16) {
  32625. len = here & 65535;
  32626. op &= 15;
  32627. if (op) {
  32628. if (bits < op) {
  32629. hold += input[_in++] << bits;
  32630. bits += 8;
  32631. }
  32632. len += hold & (1 << op) - 1;
  32633. hold >>>= op;
  32634. bits -= op;
  32635. }
  32636. if (bits < 15) {
  32637. hold += input[_in++] << bits;
  32638. bits += 8;
  32639. hold += input[_in++] << bits;
  32640. bits += 8;
  32641. }
  32642. here = dcode[hold & dmask];
  32643. dodist:
  32644. for (; ; ) {
  32645. op = here >>> 24;
  32646. hold >>>= op;
  32647. bits -= op;
  32648. op = here >>> 16 & 255;
  32649. if (op & 16) {
  32650. dist = here & 65535;
  32651. op &= 15;
  32652. if (bits < op) {
  32653. hold += input[_in++] << bits;
  32654. bits += 8;
  32655. if (bits < op) {
  32656. hold += input[_in++] << bits;
  32657. bits += 8;
  32658. }
  32659. }
  32660. dist += hold & (1 << op) - 1;
  32661. if (dist > dmax) {
  32662. strm.msg = "invalid distance too far back";
  32663. state.mode = BAD;
  32664. break top;
  32665. }
  32666. hold >>>= op;
  32667. bits -= op;
  32668. op = _out - beg;
  32669. if (dist > op) {
  32670. op = dist - op;
  32671. if (op > whave) {
  32672. if (state.sane) {
  32673. strm.msg = "invalid distance too far back";
  32674. state.mode = BAD;
  32675. break top;
  32676. }
  32677. }
  32678. from = 0;
  32679. from_source = s_window;
  32680. if (wnext === 0) {
  32681. from += wsize - op;
  32682. if (op < len) {
  32683. len -= op;
  32684. do {
  32685. output[_out++] = s_window[from++];
  32686. } while (--op);
  32687. from = _out - dist;
  32688. from_source = output;
  32689. }
  32690. } else if (wnext < op) {
  32691. from += wsize + wnext - op;
  32692. op -= wnext;
  32693. if (op < len) {
  32694. len -= op;
  32695. do {
  32696. output[_out++] = s_window[from++];
  32697. } while (--op);
  32698. from = 0;
  32699. if (wnext < len) {
  32700. op = wnext;
  32701. len -= op;
  32702. do {
  32703. output[_out++] = s_window[from++];
  32704. } while (--op);
  32705. from = _out - dist;
  32706. from_source = output;
  32707. }
  32708. }
  32709. } else {
  32710. from += wnext - op;
  32711. if (op < len) {
  32712. len -= op;
  32713. do {
  32714. output[_out++] = s_window[from++];
  32715. } while (--op);
  32716. from = _out - dist;
  32717. from_source = output;
  32718. }
  32719. }
  32720. while (len > 2) {
  32721. output[_out++] = from_source[from++];
  32722. output[_out++] = from_source[from++];
  32723. output[_out++] = from_source[from++];
  32724. len -= 3;
  32725. }
  32726. if (len) {
  32727. output[_out++] = from_source[from++];
  32728. if (len > 1) {
  32729. output[_out++] = from_source[from++];
  32730. }
  32731. }
  32732. } else {
  32733. from = _out - dist;
  32734. do {
  32735. output[_out++] = output[from++];
  32736. output[_out++] = output[from++];
  32737. output[_out++] = output[from++];
  32738. len -= 3;
  32739. } while (len > 2);
  32740. if (len) {
  32741. output[_out++] = output[from++];
  32742. if (len > 1) {
  32743. output[_out++] = output[from++];
  32744. }
  32745. }
  32746. }
  32747. } else if ((op & 64) === 0) {
  32748. here = dcode[(here & 65535) + (hold & (1 << op) - 1)];
  32749. continue dodist;
  32750. } else {
  32751. strm.msg = "invalid distance code";
  32752. state.mode = BAD;
  32753. break top;
  32754. }
  32755. break;
  32756. }
  32757. } else if ((op & 64) === 0) {
  32758. here = lcode[(here & 65535) + (hold & (1 << op) - 1)];
  32759. continue dolen;
  32760. } else if (op & 32) {
  32761. state.mode = TYPE;
  32762. break top;
  32763. } else {
  32764. strm.msg = "invalid literal/length code";
  32765. state.mode = BAD;
  32766. break top;
  32767. }
  32768. break;
  32769. }
  32770. } while (_in < last && _out < end);
  32771. len = bits >> 3;
  32772. _in -= len;
  32773. bits -= len << 3;
  32774. hold &= (1 << bits) - 1;
  32775. strm.next_in = _in;
  32776. strm.next_out = _out;
  32777. strm.avail_in = _in < last ? 5 + (last - _in) : 5 - (_in - last);
  32778. strm.avail_out = _out < end ? 257 + (end - _out) : 257 - (_out - end);
  32779. state.hold = hold;
  32780. state.bits = bits;
  32781. return;
  32782. };
  32783. }
  32784. });
  32785. // node_modules/pako/lib/zlib/inftrees.js
  32786. var require_inftrees = __commonJS({
  32787. "node_modules/pako/lib/zlib/inftrees.js"(exports, module) {
  32788. "use strict";
  32789. var utils = require_common();
  32790. var MAXBITS = 15;
  32791. var ENOUGH_LENS = 852;
  32792. var ENOUGH_DISTS = 592;
  32793. var CODES = 0;
  32794. var LENS = 1;
  32795. var DISTS = 2;
  32796. var lbase = [
  32797. 3,
  32798. 4,
  32799. 5,
  32800. 6,
  32801. 7,
  32802. 8,
  32803. 9,
  32804. 10,
  32805. 11,
  32806. 13,
  32807. 15,
  32808. 17,
  32809. 19,
  32810. 23,
  32811. 27,
  32812. 31,
  32813. 35,
  32814. 43,
  32815. 51,
  32816. 59,
  32817. 67,
  32818. 83,
  32819. 99,
  32820. 115,
  32821. 131,
  32822. 163,
  32823. 195,
  32824. 227,
  32825. 258,
  32826. 0,
  32827. 0
  32828. ];
  32829. var lext = [
  32830. 16,
  32831. 16,
  32832. 16,
  32833. 16,
  32834. 16,
  32835. 16,
  32836. 16,
  32837. 16,
  32838. 17,
  32839. 17,
  32840. 17,
  32841. 17,
  32842. 18,
  32843. 18,
  32844. 18,
  32845. 18,
  32846. 19,
  32847. 19,
  32848. 19,
  32849. 19,
  32850. 20,
  32851. 20,
  32852. 20,
  32853. 20,
  32854. 21,
  32855. 21,
  32856. 21,
  32857. 21,
  32858. 16,
  32859. 72,
  32860. 78
  32861. ];
  32862. var dbase = [
  32863. 1,
  32864. 2,
  32865. 3,
  32866. 4,
  32867. 5,
  32868. 7,
  32869. 9,
  32870. 13,
  32871. 17,
  32872. 25,
  32873. 33,
  32874. 49,
  32875. 65,
  32876. 97,
  32877. 129,
  32878. 193,
  32879. 257,
  32880. 385,
  32881. 513,
  32882. 769,
  32883. 1025,
  32884. 1537,
  32885. 2049,
  32886. 3073,
  32887. 4097,
  32888. 6145,
  32889. 8193,
  32890. 12289,
  32891. 16385,
  32892. 24577,
  32893. 0,
  32894. 0
  32895. ];
  32896. var dext = [
  32897. 16,
  32898. 16,
  32899. 16,
  32900. 16,
  32901. 17,
  32902. 17,
  32903. 18,
  32904. 18,
  32905. 19,
  32906. 19,
  32907. 20,
  32908. 20,
  32909. 21,
  32910. 21,
  32911. 22,
  32912. 22,
  32913. 23,
  32914. 23,
  32915. 24,
  32916. 24,
  32917. 25,
  32918. 25,
  32919. 26,
  32920. 26,
  32921. 27,
  32922. 27,
  32923. 28,
  32924. 28,
  32925. 29,
  32926. 29,
  32927. 64,
  32928. 64
  32929. ];
  32930. module.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts) {
  32931. var bits = opts.bits;
  32932. var len = 0;
  32933. var sym = 0;
  32934. var min = 0, max = 0;
  32935. var root = 0;
  32936. var curr = 0;
  32937. var drop = 0;
  32938. var left = 0;
  32939. var used = 0;
  32940. var huff = 0;
  32941. var incr;
  32942. var fill;
  32943. var low;
  32944. var mask;
  32945. var next;
  32946. var base = null;
  32947. var base_index = 0;
  32948. var end;
  32949. var count = new utils.Buf16(MAXBITS + 1);
  32950. var offs = new utils.Buf16(MAXBITS + 1);
  32951. var extra = null;
  32952. var extra_index = 0;
  32953. var here_bits, here_op, here_val;
  32954. for (len = 0; len <= MAXBITS; len++) {
  32955. count[len] = 0;
  32956. }
  32957. for (sym = 0; sym < codes; sym++) {
  32958. count[lens[lens_index + sym]]++;
  32959. }
  32960. root = bits;
  32961. for (max = MAXBITS; max >= 1; max--) {
  32962. if (count[max] !== 0) {
  32963. break;
  32964. }
  32965. }
  32966. if (root > max) {
  32967. root = max;
  32968. }
  32969. if (max === 0) {
  32970. table[table_index++] = 1 << 24 | 64 << 16 | 0;
  32971. table[table_index++] = 1 << 24 | 64 << 16 | 0;
  32972. opts.bits = 1;
  32973. return 0;
  32974. }
  32975. for (min = 1; min < max; min++) {
  32976. if (count[min] !== 0) {
  32977. break;
  32978. }
  32979. }
  32980. if (root < min) {
  32981. root = min;
  32982. }
  32983. left = 1;
  32984. for (len = 1; len <= MAXBITS; len++) {
  32985. left <<= 1;
  32986. left -= count[len];
  32987. if (left < 0) {
  32988. return -1;
  32989. }
  32990. }
  32991. if (left > 0 && (type === CODES || max !== 1)) {
  32992. return -1;
  32993. }
  32994. offs[1] = 0;
  32995. for (len = 1; len < MAXBITS; len++) {
  32996. offs[len + 1] = offs[len] + count[len];
  32997. }
  32998. for (sym = 0; sym < codes; sym++) {
  32999. if (lens[lens_index + sym] !== 0) {
  33000. work[offs[lens[lens_index + sym]]++] = sym;
  33001. }
  33002. }
  33003. if (type === CODES) {
  33004. base = extra = work;
  33005. end = 19;
  33006. } else if (type === LENS) {
  33007. base = lbase;
  33008. base_index -= 257;
  33009. extra = lext;
  33010. extra_index -= 257;
  33011. end = 256;
  33012. } else {
  33013. base = dbase;
  33014. extra = dext;
  33015. end = -1;
  33016. }
  33017. huff = 0;
  33018. sym = 0;
  33019. len = min;
  33020. next = table_index;
  33021. curr = root;
  33022. drop = 0;
  33023. low = -1;
  33024. used = 1 << root;
  33025. mask = used - 1;
  33026. if (type === LENS && used > ENOUGH_LENS || type === DISTS && used > ENOUGH_DISTS) {
  33027. return 1;
  33028. }
  33029. for (; ; ) {
  33030. here_bits = len - drop;
  33031. if (work[sym] < end) {
  33032. here_op = 0;
  33033. here_val = work[sym];
  33034. } else if (work[sym] > end) {
  33035. here_op = extra[extra_index + work[sym]];
  33036. here_val = base[base_index + work[sym]];
  33037. } else {
  33038. here_op = 32 + 64;
  33039. here_val = 0;
  33040. }
  33041. incr = 1 << len - drop;
  33042. fill = 1 << curr;
  33043. min = fill;
  33044. do {
  33045. fill -= incr;
  33046. table[next + (huff >> drop) + fill] = here_bits << 24 | here_op << 16 | here_val | 0;
  33047. } while (fill !== 0);
  33048. incr = 1 << len - 1;
  33049. while (huff & incr) {
  33050. incr >>= 1;
  33051. }
  33052. if (incr !== 0) {
  33053. huff &= incr - 1;
  33054. huff += incr;
  33055. } else {
  33056. huff = 0;
  33057. }
  33058. sym++;
  33059. if (--count[len] === 0) {
  33060. if (len === max) {
  33061. break;
  33062. }
  33063. len = lens[lens_index + work[sym]];
  33064. }
  33065. if (len > root && (huff & mask) !== low) {
  33066. if (drop === 0) {
  33067. drop = root;
  33068. }
  33069. next += min;
  33070. curr = len - drop;
  33071. left = 1 << curr;
  33072. while (curr + drop < max) {
  33073. left -= count[curr + drop];
  33074. if (left <= 0) {
  33075. break;
  33076. }
  33077. curr++;
  33078. left <<= 1;
  33079. }
  33080. used += 1 << curr;
  33081. if (type === LENS && used > ENOUGH_LENS || type === DISTS && used > ENOUGH_DISTS) {
  33082. return 1;
  33083. }
  33084. low = huff & mask;
  33085. table[low] = root << 24 | curr << 16 | next - table_index | 0;
  33086. }
  33087. }
  33088. if (huff !== 0) {
  33089. table[next + huff] = len - drop << 24 | 64 << 16 | 0;
  33090. }
  33091. opts.bits = root;
  33092. return 0;
  33093. };
  33094. }
  33095. });
  33096. // node_modules/pako/lib/zlib/inflate.js
  33097. var require_inflate = __commonJS({
  33098. "node_modules/pako/lib/zlib/inflate.js"(exports) {
  33099. "use strict";
  33100. var utils = require_common();
  33101. var adler32 = require_adler32();
  33102. var crc32 = require_crc32();
  33103. var inflate_fast = require_inffast();
  33104. var inflate_table = require_inftrees();
  33105. var CODES = 0;
  33106. var LENS = 1;
  33107. var DISTS = 2;
  33108. var Z_FINISH = 4;
  33109. var Z_BLOCK = 5;
  33110. var Z_TREES = 6;
  33111. var Z_OK = 0;
  33112. var Z_STREAM_END = 1;
  33113. var Z_NEED_DICT = 2;
  33114. var Z_STREAM_ERROR = -2;
  33115. var Z_DATA_ERROR = -3;
  33116. var Z_MEM_ERROR = -4;
  33117. var Z_BUF_ERROR = -5;
  33118. var Z_DEFLATED = 8;
  33119. var HEAD = 1;
  33120. var FLAGS = 2;
  33121. var TIME = 3;
  33122. var OS = 4;
  33123. var EXLEN = 5;
  33124. var EXTRA = 6;
  33125. var NAME = 7;
  33126. var COMMENT = 8;
  33127. var HCRC = 9;
  33128. var DICTID = 10;
  33129. var DICT = 11;
  33130. var TYPE = 12;
  33131. var TYPEDO = 13;
  33132. var STORED = 14;
  33133. var COPY_ = 15;
  33134. var COPY = 16;
  33135. var TABLE = 17;
  33136. var LENLENS = 18;
  33137. var CODELENS = 19;
  33138. var LEN_ = 20;
  33139. var LEN = 21;
  33140. var LENEXT = 22;
  33141. var DIST = 23;
  33142. var DISTEXT = 24;
  33143. var MATCH = 25;
  33144. var LIT = 26;
  33145. var CHECK = 27;
  33146. var LENGTH = 28;
  33147. var DONE = 29;
  33148. var BAD = 30;
  33149. var MEM = 31;
  33150. var SYNC = 32;
  33151. var ENOUGH_LENS = 852;
  33152. var ENOUGH_DISTS = 592;
  33153. var MAX_WBITS = 15;
  33154. var DEF_WBITS = MAX_WBITS;
  33155. function zswap32(q) {
  33156. return (q >>> 24 & 255) + (q >>> 8 & 65280) + ((q & 65280) << 8) + ((q & 255) << 24);
  33157. }
  33158. function InflateState() {
  33159. this.mode = 0;
  33160. this.last = false;
  33161. this.wrap = 0;
  33162. this.havedict = false;
  33163. this.flags = 0;
  33164. this.dmax = 0;
  33165. this.check = 0;
  33166. this.total = 0;
  33167. this.head = null;
  33168. this.wbits = 0;
  33169. this.wsize = 0;
  33170. this.whave = 0;
  33171. this.wnext = 0;
  33172. this.window = null;
  33173. this.hold = 0;
  33174. this.bits = 0;
  33175. this.length = 0;
  33176. this.offset = 0;
  33177. this.extra = 0;
  33178. this.lencode = null;
  33179. this.distcode = null;
  33180. this.lenbits = 0;
  33181. this.distbits = 0;
  33182. this.ncode = 0;
  33183. this.nlen = 0;
  33184. this.ndist = 0;
  33185. this.have = 0;
  33186. this.next = null;
  33187. this.lens = new utils.Buf16(320);
  33188. this.work = new utils.Buf16(288);
  33189. this.lendyn = null;
  33190. this.distdyn = null;
  33191. this.sane = 0;
  33192. this.back = 0;
  33193. this.was = 0;
  33194. }
  33195. function inflateResetKeep(strm) {
  33196. var state;
  33197. if (!strm || !strm.state) {
  33198. return Z_STREAM_ERROR;
  33199. }
  33200. state = strm.state;
  33201. strm.total_in = strm.total_out = state.total = 0;
  33202. strm.msg = "";
  33203. if (state.wrap) {
  33204. strm.adler = state.wrap & 1;
  33205. }
  33206. state.mode = HEAD;
  33207. state.last = 0;
  33208. state.havedict = 0;
  33209. state.dmax = 32768;
  33210. state.head = null;
  33211. state.hold = 0;
  33212. state.bits = 0;
  33213. state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS);
  33214. state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS);
  33215. state.sane = 1;
  33216. state.back = -1;
  33217. return Z_OK;
  33218. }
  33219. function inflateReset(strm) {
  33220. var state;
  33221. if (!strm || !strm.state) {
  33222. return Z_STREAM_ERROR;
  33223. }
  33224. state = strm.state;
  33225. state.wsize = 0;
  33226. state.whave = 0;
  33227. state.wnext = 0;
  33228. return inflateResetKeep(strm);
  33229. }
  33230. function inflateReset2(strm, windowBits) {
  33231. var wrap;
  33232. var state;
  33233. if (!strm || !strm.state) {
  33234. return Z_STREAM_ERROR;
  33235. }
  33236. state = strm.state;
  33237. if (windowBits < 0) {
  33238. wrap = 0;
  33239. windowBits = -windowBits;
  33240. } else {
  33241. wrap = (windowBits >> 4) + 1;
  33242. if (windowBits < 48) {
  33243. windowBits &= 15;
  33244. }
  33245. }
  33246. if (windowBits && (windowBits < 8 || windowBits > 15)) {
  33247. return Z_STREAM_ERROR;
  33248. }
  33249. if (state.window !== null && state.wbits !== windowBits) {
  33250. state.window = null;
  33251. }
  33252. state.wrap = wrap;
  33253. state.wbits = windowBits;
  33254. return inflateReset(strm);
  33255. }
  33256. function inflateInit2(strm, windowBits) {
  33257. var ret;
  33258. var state;
  33259. if (!strm) {
  33260. return Z_STREAM_ERROR;
  33261. }
  33262. state = new InflateState();
  33263. strm.state = state;
  33264. state.window = null;
  33265. ret = inflateReset2(strm, windowBits);
  33266. if (ret !== Z_OK) {
  33267. strm.state = null;
  33268. }
  33269. return ret;
  33270. }
  33271. function inflateInit(strm) {
  33272. return inflateInit2(strm, DEF_WBITS);
  33273. }
  33274. var virgin = true;
  33275. var lenfix;
  33276. var distfix;
  33277. function fixedtables(state) {
  33278. if (virgin) {
  33279. var sym;
  33280. lenfix = new utils.Buf32(512);
  33281. distfix = new utils.Buf32(32);
  33282. sym = 0;
  33283. while (sym < 144) {
  33284. state.lens[sym++] = 8;
  33285. }
  33286. while (sym < 256) {
  33287. state.lens[sym++] = 9;
  33288. }
  33289. while (sym < 280) {
  33290. state.lens[sym++] = 7;
  33291. }
  33292. while (sym < 288) {
  33293. state.lens[sym++] = 8;
  33294. }
  33295. inflate_table(LENS, state.lens, 0, 288, lenfix, 0, state.work, {bits: 9});
  33296. sym = 0;
  33297. while (sym < 32) {
  33298. state.lens[sym++] = 5;
  33299. }
  33300. inflate_table(DISTS, state.lens, 0, 32, distfix, 0, state.work, {bits: 5});
  33301. virgin = false;
  33302. }
  33303. state.lencode = lenfix;
  33304. state.lenbits = 9;
  33305. state.distcode = distfix;
  33306. state.distbits = 5;
  33307. }
  33308. function updatewindow(strm, src, end, copy) {
  33309. var dist;
  33310. var state = strm.state;
  33311. if (state.window === null) {
  33312. state.wsize = 1 << state.wbits;
  33313. state.wnext = 0;
  33314. state.whave = 0;
  33315. state.window = new utils.Buf8(state.wsize);
  33316. }
  33317. if (copy >= state.wsize) {
  33318. utils.arraySet(state.window, src, end - state.wsize, state.wsize, 0);
  33319. state.wnext = 0;
  33320. state.whave = state.wsize;
  33321. } else {
  33322. dist = state.wsize - state.wnext;
  33323. if (dist > copy) {
  33324. dist = copy;
  33325. }
  33326. utils.arraySet(state.window, src, end - copy, dist, state.wnext);
  33327. copy -= dist;
  33328. if (copy) {
  33329. utils.arraySet(state.window, src, end - copy, copy, 0);
  33330. state.wnext = copy;
  33331. state.whave = state.wsize;
  33332. } else {
  33333. state.wnext += dist;
  33334. if (state.wnext === state.wsize) {
  33335. state.wnext = 0;
  33336. }
  33337. if (state.whave < state.wsize) {
  33338. state.whave += dist;
  33339. }
  33340. }
  33341. }
  33342. return 0;
  33343. }
  33344. function inflate(strm, flush) {
  33345. var state;
  33346. var input, output;
  33347. var next;
  33348. var put;
  33349. var have, left;
  33350. var hold;
  33351. var bits;
  33352. var _in, _out;
  33353. var copy;
  33354. var from;
  33355. var from_source;
  33356. var here = 0;
  33357. var here_bits, here_op, here_val;
  33358. var last_bits, last_op, last_val;
  33359. var len;
  33360. var ret;
  33361. var hbuf = new utils.Buf8(4);
  33362. var opts;
  33363. var n;
  33364. var order = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];
  33365. if (!strm || !strm.state || !strm.output || !strm.input && strm.avail_in !== 0) {
  33366. return Z_STREAM_ERROR;
  33367. }
  33368. state = strm.state;
  33369. if (state.mode === TYPE) {
  33370. state.mode = TYPEDO;
  33371. }
  33372. put = strm.next_out;
  33373. output = strm.output;
  33374. left = strm.avail_out;
  33375. next = strm.next_in;
  33376. input = strm.input;
  33377. have = strm.avail_in;
  33378. hold = state.hold;
  33379. bits = state.bits;
  33380. _in = have;
  33381. _out = left;
  33382. ret = Z_OK;
  33383. inf_leave:
  33384. for (; ; ) {
  33385. switch (state.mode) {
  33386. case HEAD:
  33387. if (state.wrap === 0) {
  33388. state.mode = TYPEDO;
  33389. break;
  33390. }
  33391. while (bits < 16) {
  33392. if (have === 0) {
  33393. break inf_leave;
  33394. }
  33395. have--;
  33396. hold += input[next++] << bits;
  33397. bits += 8;
  33398. }
  33399. if (state.wrap & 2 && hold === 35615) {
  33400. state.check = 0;
  33401. hbuf[0] = hold & 255;
  33402. hbuf[1] = hold >>> 8 & 255;
  33403. state.check = crc32(state.check, hbuf, 2, 0);
  33404. hold = 0;
  33405. bits = 0;
  33406. state.mode = FLAGS;
  33407. break;
  33408. }
  33409. state.flags = 0;
  33410. if (state.head) {
  33411. state.head.done = false;
  33412. }
  33413. if (!(state.wrap & 1) || (((hold & 255) << 8) + (hold >> 8)) % 31) {
  33414. strm.msg = "incorrect header check";
  33415. state.mode = BAD;
  33416. break;
  33417. }
  33418. if ((hold & 15) !== Z_DEFLATED) {
  33419. strm.msg = "unknown compression method";
  33420. state.mode = BAD;
  33421. break;
  33422. }
  33423. hold >>>= 4;
  33424. bits -= 4;
  33425. len = (hold & 15) + 8;
  33426. if (state.wbits === 0) {
  33427. state.wbits = len;
  33428. } else if (len > state.wbits) {
  33429. strm.msg = "invalid window size";
  33430. state.mode = BAD;
  33431. break;
  33432. }
  33433. state.dmax = 1 << len;
  33434. strm.adler = state.check = 1;
  33435. state.mode = hold & 512 ? DICTID : TYPE;
  33436. hold = 0;
  33437. bits = 0;
  33438. break;
  33439. case FLAGS:
  33440. while (bits < 16) {
  33441. if (have === 0) {
  33442. break inf_leave;
  33443. }
  33444. have--;
  33445. hold += input[next++] << bits;
  33446. bits += 8;
  33447. }
  33448. state.flags = hold;
  33449. if ((state.flags & 255) !== Z_DEFLATED) {
  33450. strm.msg = "unknown compression method";
  33451. state.mode = BAD;
  33452. break;
  33453. }
  33454. if (state.flags & 57344) {
  33455. strm.msg = "unknown header flags set";
  33456. state.mode = BAD;
  33457. break;
  33458. }
  33459. if (state.head) {
  33460. state.head.text = hold >> 8 & 1;
  33461. }
  33462. if (state.flags & 512) {
  33463. hbuf[0] = hold & 255;
  33464. hbuf[1] = hold >>> 8 & 255;
  33465. state.check = crc32(state.check, hbuf, 2, 0);
  33466. }
  33467. hold = 0;
  33468. bits = 0;
  33469. state.mode = TIME;
  33470. case TIME:
  33471. while (bits < 32) {
  33472. if (have === 0) {
  33473. break inf_leave;
  33474. }
  33475. have--;
  33476. hold += input[next++] << bits;
  33477. bits += 8;
  33478. }
  33479. if (state.head) {
  33480. state.head.time = hold;
  33481. }
  33482. if (state.flags & 512) {
  33483. hbuf[0] = hold & 255;
  33484. hbuf[1] = hold >>> 8 & 255;
  33485. hbuf[2] = hold >>> 16 & 255;
  33486. hbuf[3] = hold >>> 24 & 255;
  33487. state.check = crc32(state.check, hbuf, 4, 0);
  33488. }
  33489. hold = 0;
  33490. bits = 0;
  33491. state.mode = OS;
  33492. case OS:
  33493. while (bits < 16) {
  33494. if (have === 0) {
  33495. break inf_leave;
  33496. }
  33497. have--;
  33498. hold += input[next++] << bits;
  33499. bits += 8;
  33500. }
  33501. if (state.head) {
  33502. state.head.xflags = hold & 255;
  33503. state.head.os = hold >> 8;
  33504. }
  33505. if (state.flags & 512) {
  33506. hbuf[0] = hold & 255;
  33507. hbuf[1] = hold >>> 8 & 255;
  33508. state.check = crc32(state.check, hbuf, 2, 0);
  33509. }
  33510. hold = 0;
  33511. bits = 0;
  33512. state.mode = EXLEN;
  33513. case EXLEN:
  33514. if (state.flags & 1024) {
  33515. while (bits < 16) {
  33516. if (have === 0) {
  33517. break inf_leave;
  33518. }
  33519. have--;
  33520. hold += input[next++] << bits;
  33521. bits += 8;
  33522. }
  33523. state.length = hold;
  33524. if (state.head) {
  33525. state.head.extra_len = hold;
  33526. }
  33527. if (state.flags & 512) {
  33528. hbuf[0] = hold & 255;
  33529. hbuf[1] = hold >>> 8 & 255;
  33530. state.check = crc32(state.check, hbuf, 2, 0);
  33531. }
  33532. hold = 0;
  33533. bits = 0;
  33534. } else if (state.head) {
  33535. state.head.extra = null;
  33536. }
  33537. state.mode = EXTRA;
  33538. case EXTRA:
  33539. if (state.flags & 1024) {
  33540. copy = state.length;
  33541. if (copy > have) {
  33542. copy = have;
  33543. }
  33544. if (copy) {
  33545. if (state.head) {
  33546. len = state.head.extra_len - state.length;
  33547. if (!state.head.extra) {
  33548. state.head.extra = new Array(state.head.extra_len);
  33549. }
  33550. utils.arraySet(state.head.extra, input, next, copy, len);
  33551. }
  33552. if (state.flags & 512) {
  33553. state.check = crc32(state.check, input, copy, next);
  33554. }
  33555. have -= copy;
  33556. next += copy;
  33557. state.length -= copy;
  33558. }
  33559. if (state.length) {
  33560. break inf_leave;
  33561. }
  33562. }
  33563. state.length = 0;
  33564. state.mode = NAME;
  33565. case NAME:
  33566. if (state.flags & 2048) {
  33567. if (have === 0) {
  33568. break inf_leave;
  33569. }
  33570. copy = 0;
  33571. do {
  33572. len = input[next + copy++];
  33573. if (state.head && len && state.length < 65536) {
  33574. state.head.name += String.fromCharCode(len);
  33575. }
  33576. } while (len && copy < have);
  33577. if (state.flags & 512) {
  33578. state.check = crc32(state.check, input, copy, next);
  33579. }
  33580. have -= copy;
  33581. next += copy;
  33582. if (len) {
  33583. break inf_leave;
  33584. }
  33585. } else if (state.head) {
  33586. state.head.name = null;
  33587. }
  33588. state.length = 0;
  33589. state.mode = COMMENT;
  33590. case COMMENT:
  33591. if (state.flags & 4096) {
  33592. if (have === 0) {
  33593. break inf_leave;
  33594. }
  33595. copy = 0;
  33596. do {
  33597. len = input[next + copy++];
  33598. if (state.head && len && state.length < 65536) {
  33599. state.head.comment += String.fromCharCode(len);
  33600. }
  33601. } while (len && copy < have);
  33602. if (state.flags & 512) {
  33603. state.check = crc32(state.check, input, copy, next);
  33604. }
  33605. have -= copy;
  33606. next += copy;
  33607. if (len) {
  33608. break inf_leave;
  33609. }
  33610. } else if (state.head) {
  33611. state.head.comment = null;
  33612. }
  33613. state.mode = HCRC;
  33614. case HCRC:
  33615. if (state.flags & 512) {
  33616. while (bits < 16) {
  33617. if (have === 0) {
  33618. break inf_leave;
  33619. }
  33620. have--;
  33621. hold += input[next++] << bits;
  33622. bits += 8;
  33623. }
  33624. if (hold !== (state.check & 65535)) {
  33625. strm.msg = "header crc mismatch";
  33626. state.mode = BAD;
  33627. break;
  33628. }
  33629. hold = 0;
  33630. bits = 0;
  33631. }
  33632. if (state.head) {
  33633. state.head.hcrc = state.flags >> 9 & 1;
  33634. state.head.done = true;
  33635. }
  33636. strm.adler = state.check = 0;
  33637. state.mode = TYPE;
  33638. break;
  33639. case DICTID:
  33640. while (bits < 32) {
  33641. if (have === 0) {
  33642. break inf_leave;
  33643. }
  33644. have--;
  33645. hold += input[next++] << bits;
  33646. bits += 8;
  33647. }
  33648. strm.adler = state.check = zswap32(hold);
  33649. hold = 0;
  33650. bits = 0;
  33651. state.mode = DICT;
  33652. case DICT:
  33653. if (state.havedict === 0) {
  33654. strm.next_out = put;
  33655. strm.avail_out = left;
  33656. strm.next_in = next;
  33657. strm.avail_in = have;
  33658. state.hold = hold;
  33659. state.bits = bits;
  33660. return Z_NEED_DICT;
  33661. }
  33662. strm.adler = state.check = 1;
  33663. state.mode = TYPE;
  33664. case TYPE:
  33665. if (flush === Z_BLOCK || flush === Z_TREES) {
  33666. break inf_leave;
  33667. }
  33668. case TYPEDO:
  33669. if (state.last) {
  33670. hold >>>= bits & 7;
  33671. bits -= bits & 7;
  33672. state.mode = CHECK;
  33673. break;
  33674. }
  33675. while (bits < 3) {
  33676. if (have === 0) {
  33677. break inf_leave;
  33678. }
  33679. have--;
  33680. hold += input[next++] << bits;
  33681. bits += 8;
  33682. }
  33683. state.last = hold & 1;
  33684. hold >>>= 1;
  33685. bits -= 1;
  33686. switch (hold & 3) {
  33687. case 0:
  33688. state.mode = STORED;
  33689. break;
  33690. case 1:
  33691. fixedtables(state);
  33692. state.mode = LEN_;
  33693. if (flush === Z_TREES) {
  33694. hold >>>= 2;
  33695. bits -= 2;
  33696. break inf_leave;
  33697. }
  33698. break;
  33699. case 2:
  33700. state.mode = TABLE;
  33701. break;
  33702. case 3:
  33703. strm.msg = "invalid block type";
  33704. state.mode = BAD;
  33705. }
  33706. hold >>>= 2;
  33707. bits -= 2;
  33708. break;
  33709. case STORED:
  33710. hold >>>= bits & 7;
  33711. bits -= bits & 7;
  33712. while (bits < 32) {
  33713. if (have === 0) {
  33714. break inf_leave;
  33715. }
  33716. have--;
  33717. hold += input[next++] << bits;
  33718. bits += 8;
  33719. }
  33720. if ((hold & 65535) !== (hold >>> 16 ^ 65535)) {
  33721. strm.msg = "invalid stored block lengths";
  33722. state.mode = BAD;
  33723. break;
  33724. }
  33725. state.length = hold & 65535;
  33726. hold = 0;
  33727. bits = 0;
  33728. state.mode = COPY_;
  33729. if (flush === Z_TREES) {
  33730. break inf_leave;
  33731. }
  33732. case COPY_:
  33733. state.mode = COPY;
  33734. case COPY:
  33735. copy = state.length;
  33736. if (copy) {
  33737. if (copy > have) {
  33738. copy = have;
  33739. }
  33740. if (copy > left) {
  33741. copy = left;
  33742. }
  33743. if (copy === 0) {
  33744. break inf_leave;
  33745. }
  33746. utils.arraySet(output, input, next, copy, put);
  33747. have -= copy;
  33748. next += copy;
  33749. left -= copy;
  33750. put += copy;
  33751. state.length -= copy;
  33752. break;
  33753. }
  33754. state.mode = TYPE;
  33755. break;
  33756. case TABLE:
  33757. while (bits < 14) {
  33758. if (have === 0) {
  33759. break inf_leave;
  33760. }
  33761. have--;
  33762. hold += input[next++] << bits;
  33763. bits += 8;
  33764. }
  33765. state.nlen = (hold & 31) + 257;
  33766. hold >>>= 5;
  33767. bits -= 5;
  33768. state.ndist = (hold & 31) + 1;
  33769. hold >>>= 5;
  33770. bits -= 5;
  33771. state.ncode = (hold & 15) + 4;
  33772. hold >>>= 4;
  33773. bits -= 4;
  33774. if (state.nlen > 286 || state.ndist > 30) {
  33775. strm.msg = "too many length or distance symbols";
  33776. state.mode = BAD;
  33777. break;
  33778. }
  33779. state.have = 0;
  33780. state.mode = LENLENS;
  33781. case LENLENS:
  33782. while (state.have < state.ncode) {
  33783. while (bits < 3) {
  33784. if (have === 0) {
  33785. break inf_leave;
  33786. }
  33787. have--;
  33788. hold += input[next++] << bits;
  33789. bits += 8;
  33790. }
  33791. state.lens[order[state.have++]] = hold & 7;
  33792. hold >>>= 3;
  33793. bits -= 3;
  33794. }
  33795. while (state.have < 19) {
  33796. state.lens[order[state.have++]] = 0;
  33797. }
  33798. state.lencode = state.lendyn;
  33799. state.lenbits = 7;
  33800. opts = {bits: state.lenbits};
  33801. ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);
  33802. state.lenbits = opts.bits;
  33803. if (ret) {
  33804. strm.msg = "invalid code lengths set";
  33805. state.mode = BAD;
  33806. break;
  33807. }
  33808. state.have = 0;
  33809. state.mode = CODELENS;
  33810. case CODELENS:
  33811. while (state.have < state.nlen + state.ndist) {
  33812. for (; ; ) {
  33813. here = state.lencode[hold & (1 << state.lenbits) - 1];
  33814. here_bits = here >>> 24;
  33815. here_op = here >>> 16 & 255;
  33816. here_val = here & 65535;
  33817. if (here_bits <= bits) {
  33818. break;
  33819. }
  33820. if (have === 0) {
  33821. break inf_leave;
  33822. }
  33823. have--;
  33824. hold += input[next++] << bits;
  33825. bits += 8;
  33826. }
  33827. if (here_val < 16) {
  33828. hold >>>= here_bits;
  33829. bits -= here_bits;
  33830. state.lens[state.have++] = here_val;
  33831. } else {
  33832. if (here_val === 16) {
  33833. n = here_bits + 2;
  33834. while (bits < n) {
  33835. if (have === 0) {
  33836. break inf_leave;
  33837. }
  33838. have--;
  33839. hold += input[next++] << bits;
  33840. bits += 8;
  33841. }
  33842. hold >>>= here_bits;
  33843. bits -= here_bits;
  33844. if (state.have === 0) {
  33845. strm.msg = "invalid bit length repeat";
  33846. state.mode = BAD;
  33847. break;
  33848. }
  33849. len = state.lens[state.have - 1];
  33850. copy = 3 + (hold & 3);
  33851. hold >>>= 2;
  33852. bits -= 2;
  33853. } else if (here_val === 17) {
  33854. n = here_bits + 3;
  33855. while (bits < n) {
  33856. if (have === 0) {
  33857. break inf_leave;
  33858. }
  33859. have--;
  33860. hold += input[next++] << bits;
  33861. bits += 8;
  33862. }
  33863. hold >>>= here_bits;
  33864. bits -= here_bits;
  33865. len = 0;
  33866. copy = 3 + (hold & 7);
  33867. hold >>>= 3;
  33868. bits -= 3;
  33869. } else {
  33870. n = here_bits + 7;
  33871. while (bits < n) {
  33872. if (have === 0) {
  33873. break inf_leave;
  33874. }
  33875. have--;
  33876. hold += input[next++] << bits;
  33877. bits += 8;
  33878. }
  33879. hold >>>= here_bits;
  33880. bits -= here_bits;
  33881. len = 0;
  33882. copy = 11 + (hold & 127);
  33883. hold >>>= 7;
  33884. bits -= 7;
  33885. }
  33886. if (state.have + copy > state.nlen + state.ndist) {
  33887. strm.msg = "invalid bit length repeat";
  33888. state.mode = BAD;
  33889. break;
  33890. }
  33891. while (copy--) {
  33892. state.lens[state.have++] = len;
  33893. }
  33894. }
  33895. }
  33896. if (state.mode === BAD) {
  33897. break;
  33898. }
  33899. if (state.lens[256] === 0) {
  33900. strm.msg = "invalid code -- missing end-of-block";
  33901. state.mode = BAD;
  33902. break;
  33903. }
  33904. state.lenbits = 9;
  33905. opts = {bits: state.lenbits};
  33906. ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);
  33907. state.lenbits = opts.bits;
  33908. if (ret) {
  33909. strm.msg = "invalid literal/lengths set";
  33910. state.mode = BAD;
  33911. break;
  33912. }
  33913. state.distbits = 6;
  33914. state.distcode = state.distdyn;
  33915. opts = {bits: state.distbits};
  33916. ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);
  33917. state.distbits = opts.bits;
  33918. if (ret) {
  33919. strm.msg = "invalid distances set";
  33920. state.mode = BAD;
  33921. break;
  33922. }
  33923. state.mode = LEN_;
  33924. if (flush === Z_TREES) {
  33925. break inf_leave;
  33926. }
  33927. case LEN_:
  33928. state.mode = LEN;
  33929. case LEN:
  33930. if (have >= 6 && left >= 258) {
  33931. strm.next_out = put;
  33932. strm.avail_out = left;
  33933. strm.next_in = next;
  33934. strm.avail_in = have;
  33935. state.hold = hold;
  33936. state.bits = bits;
  33937. inflate_fast(strm, _out);
  33938. put = strm.next_out;
  33939. output = strm.output;
  33940. left = strm.avail_out;
  33941. next = strm.next_in;
  33942. input = strm.input;
  33943. have = strm.avail_in;
  33944. hold = state.hold;
  33945. bits = state.bits;
  33946. if (state.mode === TYPE) {
  33947. state.back = -1;
  33948. }
  33949. break;
  33950. }
  33951. state.back = 0;
  33952. for (; ; ) {
  33953. here = state.lencode[hold & (1 << state.lenbits) - 1];
  33954. here_bits = here >>> 24;
  33955. here_op = here >>> 16 & 255;
  33956. here_val = here & 65535;
  33957. if (here_bits <= bits) {
  33958. break;
  33959. }
  33960. if (have === 0) {
  33961. break inf_leave;
  33962. }
  33963. have--;
  33964. hold += input[next++] << bits;
  33965. bits += 8;
  33966. }
  33967. if (here_op && (here_op & 240) === 0) {
  33968. last_bits = here_bits;
  33969. last_op = here_op;
  33970. last_val = here_val;
  33971. for (; ; ) {
  33972. here = state.lencode[last_val + ((hold & (1 << last_bits + last_op) - 1) >> last_bits)];
  33973. here_bits = here >>> 24;
  33974. here_op = here >>> 16 & 255;
  33975. here_val = here & 65535;
  33976. if (last_bits + here_bits <= bits) {
  33977. break;
  33978. }
  33979. if (have === 0) {
  33980. break inf_leave;
  33981. }
  33982. have--;
  33983. hold += input[next++] << bits;
  33984. bits += 8;
  33985. }
  33986. hold >>>= last_bits;
  33987. bits -= last_bits;
  33988. state.back += last_bits;
  33989. }
  33990. hold >>>= here_bits;
  33991. bits -= here_bits;
  33992. state.back += here_bits;
  33993. state.length = here_val;
  33994. if (here_op === 0) {
  33995. state.mode = LIT;
  33996. break;
  33997. }
  33998. if (here_op & 32) {
  33999. state.back = -1;
  34000. state.mode = TYPE;
  34001. break;
  34002. }
  34003. if (here_op & 64) {
  34004. strm.msg = "invalid literal/length code";
  34005. state.mode = BAD;
  34006. break;
  34007. }
  34008. state.extra = here_op & 15;
  34009. state.mode = LENEXT;
  34010. case LENEXT:
  34011. if (state.extra) {
  34012. n = state.extra;
  34013. while (bits < n) {
  34014. if (have === 0) {
  34015. break inf_leave;
  34016. }
  34017. have--;
  34018. hold += input[next++] << bits;
  34019. bits += 8;
  34020. }
  34021. state.length += hold & (1 << state.extra) - 1;
  34022. hold >>>= state.extra;
  34023. bits -= state.extra;
  34024. state.back += state.extra;
  34025. }
  34026. state.was = state.length;
  34027. state.mode = DIST;
  34028. case DIST:
  34029. for (; ; ) {
  34030. here = state.distcode[hold & (1 << state.distbits) - 1];
  34031. here_bits = here >>> 24;
  34032. here_op = here >>> 16 & 255;
  34033. here_val = here & 65535;
  34034. if (here_bits <= bits) {
  34035. break;
  34036. }
  34037. if (have === 0) {
  34038. break inf_leave;
  34039. }
  34040. have--;
  34041. hold += input[next++] << bits;
  34042. bits += 8;
  34043. }
  34044. if ((here_op & 240) === 0) {
  34045. last_bits = here_bits;
  34046. last_op = here_op;
  34047. last_val = here_val;
  34048. for (; ; ) {
  34049. here = state.distcode[last_val + ((hold & (1 << last_bits + last_op) - 1) >> last_bits)];
  34050. here_bits = here >>> 24;
  34051. here_op = here >>> 16 & 255;
  34052. here_val = here & 65535;
  34053. if (last_bits + here_bits <= bits) {
  34054. break;
  34055. }
  34056. if (have === 0) {
  34057. break inf_leave;
  34058. }
  34059. have--;
  34060. hold += input[next++] << bits;
  34061. bits += 8;
  34062. }
  34063. hold >>>= last_bits;
  34064. bits -= last_bits;
  34065. state.back += last_bits;
  34066. }
  34067. hold >>>= here_bits;
  34068. bits -= here_bits;
  34069. state.back += here_bits;
  34070. if (here_op & 64) {
  34071. strm.msg = "invalid distance code";
  34072. state.mode = BAD;
  34073. break;
  34074. }
  34075. state.offset = here_val;
  34076. state.extra = here_op & 15;
  34077. state.mode = DISTEXT;
  34078. case DISTEXT:
  34079. if (state.extra) {
  34080. n = state.extra;
  34081. while (bits < n) {
  34082. if (have === 0) {
  34083. break inf_leave;
  34084. }
  34085. have--;
  34086. hold += input[next++] << bits;
  34087. bits += 8;
  34088. }
  34089. state.offset += hold & (1 << state.extra) - 1;
  34090. hold >>>= state.extra;
  34091. bits -= state.extra;
  34092. state.back += state.extra;
  34093. }
  34094. if (state.offset > state.dmax) {
  34095. strm.msg = "invalid distance too far back";
  34096. state.mode = BAD;
  34097. break;
  34098. }
  34099. state.mode = MATCH;
  34100. case MATCH:
  34101. if (left === 0) {
  34102. break inf_leave;
  34103. }
  34104. copy = _out - left;
  34105. if (state.offset > copy) {
  34106. copy = state.offset - copy;
  34107. if (copy > state.whave) {
  34108. if (state.sane) {
  34109. strm.msg = "invalid distance too far back";
  34110. state.mode = BAD;
  34111. break;
  34112. }
  34113. }
  34114. if (copy > state.wnext) {
  34115. copy -= state.wnext;
  34116. from = state.wsize - copy;
  34117. } else {
  34118. from = state.wnext - copy;
  34119. }
  34120. if (copy > state.length) {
  34121. copy = state.length;
  34122. }
  34123. from_source = state.window;
  34124. } else {
  34125. from_source = output;
  34126. from = put - state.offset;
  34127. copy = state.length;
  34128. }
  34129. if (copy > left) {
  34130. copy = left;
  34131. }
  34132. left -= copy;
  34133. state.length -= copy;
  34134. do {
  34135. output[put++] = from_source[from++];
  34136. } while (--copy);
  34137. if (state.length === 0) {
  34138. state.mode = LEN;
  34139. }
  34140. break;
  34141. case LIT:
  34142. if (left === 0) {
  34143. break inf_leave;
  34144. }
  34145. output[put++] = state.length;
  34146. left--;
  34147. state.mode = LEN;
  34148. break;
  34149. case CHECK:
  34150. if (state.wrap) {
  34151. while (bits < 32) {
  34152. if (have === 0) {
  34153. break inf_leave;
  34154. }
  34155. have--;
  34156. hold |= input[next++] << bits;
  34157. bits += 8;
  34158. }
  34159. _out -= left;
  34160. strm.total_out += _out;
  34161. state.total += _out;
  34162. if (_out) {
  34163. strm.adler = state.check = state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out);
  34164. }
  34165. _out = left;
  34166. if ((state.flags ? hold : zswap32(hold)) !== state.check) {
  34167. strm.msg = "incorrect data check";
  34168. state.mode = BAD;
  34169. break;
  34170. }
  34171. hold = 0;
  34172. bits = 0;
  34173. }
  34174. state.mode = LENGTH;
  34175. case LENGTH:
  34176. if (state.wrap && state.flags) {
  34177. while (bits < 32) {
  34178. if (have === 0) {
  34179. break inf_leave;
  34180. }
  34181. have--;
  34182. hold += input[next++] << bits;
  34183. bits += 8;
  34184. }
  34185. if (hold !== (state.total & 4294967295)) {
  34186. strm.msg = "incorrect length check";
  34187. state.mode = BAD;
  34188. break;
  34189. }
  34190. hold = 0;
  34191. bits = 0;
  34192. }
  34193. state.mode = DONE;
  34194. case DONE:
  34195. ret = Z_STREAM_END;
  34196. break inf_leave;
  34197. case BAD:
  34198. ret = Z_DATA_ERROR;
  34199. break inf_leave;
  34200. case MEM:
  34201. return Z_MEM_ERROR;
  34202. case SYNC:
  34203. default:
  34204. return Z_STREAM_ERROR;
  34205. }
  34206. }
  34207. strm.next_out = put;
  34208. strm.avail_out = left;
  34209. strm.next_in = next;
  34210. strm.avail_in = have;
  34211. state.hold = hold;
  34212. state.bits = bits;
  34213. if (state.wsize || _out !== strm.avail_out && state.mode < BAD && (state.mode < CHECK || flush !== Z_FINISH)) {
  34214. if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) {
  34215. state.mode = MEM;
  34216. return Z_MEM_ERROR;
  34217. }
  34218. }
  34219. _in -= strm.avail_in;
  34220. _out -= strm.avail_out;
  34221. strm.total_in += _in;
  34222. strm.total_out += _out;
  34223. state.total += _out;
  34224. if (state.wrap && _out) {
  34225. strm.adler = state.check = state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out);
  34226. }
  34227. strm.data_type = state.bits + (state.last ? 64 : 0) + (state.mode === TYPE ? 128 : 0) + (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);
  34228. if ((_in === 0 && _out === 0 || flush === Z_FINISH) && ret === Z_OK) {
  34229. ret = Z_BUF_ERROR;
  34230. }
  34231. return ret;
  34232. }
  34233. function inflateEnd(strm) {
  34234. if (!strm || !strm.state) {
  34235. return Z_STREAM_ERROR;
  34236. }
  34237. var state = strm.state;
  34238. if (state.window) {
  34239. state.window = null;
  34240. }
  34241. strm.state = null;
  34242. return Z_OK;
  34243. }
  34244. function inflateGetHeader(strm, head) {
  34245. var state;
  34246. if (!strm || !strm.state) {
  34247. return Z_STREAM_ERROR;
  34248. }
  34249. state = strm.state;
  34250. if ((state.wrap & 2) === 0) {
  34251. return Z_STREAM_ERROR;
  34252. }
  34253. state.head = head;
  34254. head.done = false;
  34255. return Z_OK;
  34256. }
  34257. function inflateSetDictionary(strm, dictionary) {
  34258. var dictLength = dictionary.length;
  34259. var state;
  34260. var dictid;
  34261. var ret;
  34262. if (!strm || !strm.state) {
  34263. return Z_STREAM_ERROR;
  34264. }
  34265. state = strm.state;
  34266. if (state.wrap !== 0 && state.mode !== DICT) {
  34267. return Z_STREAM_ERROR;
  34268. }
  34269. if (state.mode === DICT) {
  34270. dictid = 1;
  34271. dictid = adler32(dictid, dictionary, dictLength, 0);
  34272. if (dictid !== state.check) {
  34273. return Z_DATA_ERROR;
  34274. }
  34275. }
  34276. ret = updatewindow(strm, dictionary, dictLength, dictLength);
  34277. if (ret) {
  34278. state.mode = MEM;
  34279. return Z_MEM_ERROR;
  34280. }
  34281. state.havedict = 1;
  34282. return Z_OK;
  34283. }
  34284. exports.inflateReset = inflateReset;
  34285. exports.inflateReset2 = inflateReset2;
  34286. exports.inflateResetKeep = inflateResetKeep;
  34287. exports.inflateInit = inflateInit;
  34288. exports.inflateInit2 = inflateInit2;
  34289. exports.inflate = inflate;
  34290. exports.inflateEnd = inflateEnd;
  34291. exports.inflateGetHeader = inflateGetHeader;
  34292. exports.inflateSetDictionary = inflateSetDictionary;
  34293. exports.inflateInfo = "pako inflate (from Nodeca project)";
  34294. }
  34295. });
  34296. // node_modules/pako/lib/zlib/constants.js
  34297. var require_constants = __commonJS({
  34298. "node_modules/pako/lib/zlib/constants.js"(exports, module) {
  34299. "use strict";
  34300. module.exports = {
  34301. Z_NO_FLUSH: 0,
  34302. Z_PARTIAL_FLUSH: 1,
  34303. Z_SYNC_FLUSH: 2,
  34304. Z_FULL_FLUSH: 3,
  34305. Z_FINISH: 4,
  34306. Z_BLOCK: 5,
  34307. Z_TREES: 6,
  34308. Z_OK: 0,
  34309. Z_STREAM_END: 1,
  34310. Z_NEED_DICT: 2,
  34311. Z_ERRNO: -1,
  34312. Z_STREAM_ERROR: -2,
  34313. Z_DATA_ERROR: -3,
  34314. Z_BUF_ERROR: -5,
  34315. Z_NO_COMPRESSION: 0,
  34316. Z_BEST_SPEED: 1,
  34317. Z_BEST_COMPRESSION: 9,
  34318. Z_DEFAULT_COMPRESSION: -1,
  34319. Z_FILTERED: 1,
  34320. Z_HUFFMAN_ONLY: 2,
  34321. Z_RLE: 3,
  34322. Z_FIXED: 4,
  34323. Z_DEFAULT_STRATEGY: 0,
  34324. Z_BINARY: 0,
  34325. Z_TEXT: 1,
  34326. Z_UNKNOWN: 2,
  34327. Z_DEFLATED: 8
  34328. };
  34329. }
  34330. });
  34331. // node_modules/pako/lib/zlib/gzheader.js
  34332. var require_gzheader = __commonJS({
  34333. "node_modules/pako/lib/zlib/gzheader.js"(exports, module) {
  34334. "use strict";
  34335. function GZheader() {
  34336. this.text = 0;
  34337. this.time = 0;
  34338. this.xflags = 0;
  34339. this.os = 0;
  34340. this.extra = null;
  34341. this.extra_len = 0;
  34342. this.name = "";
  34343. this.comment = "";
  34344. this.hcrc = 0;
  34345. this.done = false;
  34346. }
  34347. module.exports = GZheader;
  34348. }
  34349. });
  34350. // node_modules/pako/lib/inflate.js
  34351. var require_inflate2 = __commonJS({
  34352. "node_modules/pako/lib/inflate.js"(exports) {
  34353. "use strict";
  34354. var zlib_inflate = require_inflate();
  34355. var utils = require_common();
  34356. var strings = require_strings();
  34357. var c2 = require_constants();
  34358. var msg = require_messages();
  34359. var ZStream = require_zstream();
  34360. var GZheader = require_gzheader();
  34361. var toString2 = Object.prototype.toString;
  34362. function Inflate(options) {
  34363. if (!(this instanceof Inflate))
  34364. return new Inflate(options);
  34365. this.options = utils.assign({
  34366. chunkSize: 16384,
  34367. windowBits: 0,
  34368. to: ""
  34369. }, options || {});
  34370. var opt = this.options;
  34371. if (opt.raw && opt.windowBits >= 0 && opt.windowBits < 16) {
  34372. opt.windowBits = -opt.windowBits;
  34373. if (opt.windowBits === 0) {
  34374. opt.windowBits = -15;
  34375. }
  34376. }
  34377. if (opt.windowBits >= 0 && opt.windowBits < 16 && !(options && options.windowBits)) {
  34378. opt.windowBits += 32;
  34379. }
  34380. if (opt.windowBits > 15 && opt.windowBits < 48) {
  34381. if ((opt.windowBits & 15) === 0) {
  34382. opt.windowBits |= 15;
  34383. }
  34384. }
  34385. this.err = 0;
  34386. this.msg = "";
  34387. this.ended = false;
  34388. this.chunks = [];
  34389. this.strm = new ZStream();
  34390. this.strm.avail_out = 0;
  34391. var status = zlib_inflate.inflateInit2(this.strm, opt.windowBits);
  34392. if (status !== c2.Z_OK) {
  34393. throw new Error(msg[status]);
  34394. }
  34395. this.header = new GZheader();
  34396. zlib_inflate.inflateGetHeader(this.strm, this.header);
  34397. if (opt.dictionary) {
  34398. if (typeof opt.dictionary === "string") {
  34399. opt.dictionary = strings.string2buf(opt.dictionary);
  34400. } else if (toString2.call(opt.dictionary) === "[object ArrayBuffer]") {
  34401. opt.dictionary = new Uint8Array(opt.dictionary);
  34402. }
  34403. if (opt.raw) {
  34404. status = zlib_inflate.inflateSetDictionary(this.strm, opt.dictionary);
  34405. if (status !== c2.Z_OK) {
  34406. throw new Error(msg[status]);
  34407. }
  34408. }
  34409. }
  34410. }
  34411. Inflate.prototype.push = function(data, mode) {
  34412. var strm = this.strm;
  34413. var chunkSize = this.options.chunkSize;
  34414. var dictionary = this.options.dictionary;
  34415. var status, _mode;
  34416. var next_out_utf8, tail, utf8str;
  34417. var allowBufError = false;
  34418. if (this.ended) {
  34419. return false;
  34420. }
  34421. _mode = mode === ~~mode ? mode : mode === true ? c2.Z_FINISH : c2.Z_NO_FLUSH;
  34422. if (typeof data === "string") {
  34423. strm.input = strings.binstring2buf(data);
  34424. } else if (toString2.call(data) === "[object ArrayBuffer]") {
  34425. strm.input = new Uint8Array(data);
  34426. } else {
  34427. strm.input = data;
  34428. }
  34429. strm.next_in = 0;
  34430. strm.avail_in = strm.input.length;
  34431. do {
  34432. if (strm.avail_out === 0) {
  34433. strm.output = new utils.Buf8(chunkSize);
  34434. strm.next_out = 0;
  34435. strm.avail_out = chunkSize;
  34436. }
  34437. status = zlib_inflate.inflate(strm, c2.Z_NO_FLUSH);
  34438. if (status === c2.Z_NEED_DICT && dictionary) {
  34439. status = zlib_inflate.inflateSetDictionary(this.strm, dictionary);
  34440. }
  34441. if (status === c2.Z_BUF_ERROR && allowBufError === true) {
  34442. status = c2.Z_OK;
  34443. allowBufError = false;
  34444. }
  34445. if (status !== c2.Z_STREAM_END && status !== c2.Z_OK) {
  34446. this.onEnd(status);
  34447. this.ended = true;
  34448. return false;
  34449. }
  34450. if (strm.next_out) {
  34451. if (strm.avail_out === 0 || status === c2.Z_STREAM_END || strm.avail_in === 0 && (_mode === c2.Z_FINISH || _mode === c2.Z_SYNC_FLUSH)) {
  34452. if (this.options.to === "string") {
  34453. next_out_utf8 = strings.utf8border(strm.output, strm.next_out);
  34454. tail = strm.next_out - next_out_utf8;
  34455. utf8str = strings.buf2string(strm.output, next_out_utf8);
  34456. strm.next_out = tail;
  34457. strm.avail_out = chunkSize - tail;
  34458. if (tail) {
  34459. utils.arraySet(strm.output, strm.output, next_out_utf8, tail, 0);
  34460. }
  34461. this.onData(utf8str);
  34462. } else {
  34463. this.onData(utils.shrinkBuf(strm.output, strm.next_out));
  34464. }
  34465. }
  34466. }
  34467. if (strm.avail_in === 0 && strm.avail_out === 0) {
  34468. allowBufError = true;
  34469. }
  34470. } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== c2.Z_STREAM_END);
  34471. if (status === c2.Z_STREAM_END) {
  34472. _mode = c2.Z_FINISH;
  34473. }
  34474. if (_mode === c2.Z_FINISH) {
  34475. status = zlib_inflate.inflateEnd(this.strm);
  34476. this.onEnd(status);
  34477. this.ended = true;
  34478. return status === c2.Z_OK;
  34479. }
  34480. if (_mode === c2.Z_SYNC_FLUSH) {
  34481. this.onEnd(c2.Z_OK);
  34482. strm.avail_out = 0;
  34483. return true;
  34484. }
  34485. return true;
  34486. };
  34487. Inflate.prototype.onData = function(chunk) {
  34488. this.chunks.push(chunk);
  34489. };
  34490. Inflate.prototype.onEnd = function(status) {
  34491. if (status === c2.Z_OK) {
  34492. if (this.options.to === "string") {
  34493. this.result = this.chunks.join("");
  34494. } else {
  34495. this.result = utils.flattenChunks(this.chunks);
  34496. }
  34497. }
  34498. this.chunks = [];
  34499. this.err = status;
  34500. this.msg = this.strm.msg;
  34501. };
  34502. function inflate(input, options) {
  34503. var inflator = new Inflate(options);
  34504. inflator.push(input, true);
  34505. if (inflator.err) {
  34506. throw inflator.msg || msg[inflator.err];
  34507. }
  34508. return inflator.result;
  34509. }
  34510. function inflateRaw(input, options) {
  34511. options = options || {};
  34512. options.raw = true;
  34513. return inflate(input, options);
  34514. }
  34515. exports.Inflate = Inflate;
  34516. exports.inflate = inflate;
  34517. exports.inflateRaw = inflateRaw;
  34518. exports.ungzip = inflate;
  34519. }
  34520. });
  34521. // node_modules/pako/index.js
  34522. var require_pako = __commonJS({
  34523. "node_modules/pako/index.js"(exports, module) {
  34524. "use strict";
  34525. var assign = require_common().assign;
  34526. var deflate = require_deflate2();
  34527. var inflate = require_inflate2();
  34528. var constants = require_constants();
  34529. var pako2 = {};
  34530. assign(pako2, deflate, inflate, constants);
  34531. module.exports = pako2;
  34532. }
  34533. });
  34534. // src/global/loading.js
  34535. function showloading(txt) {
  34536. $("#luckysheet-cell-loading").find("span").text(txt).end().show();
  34537. }
  34538. function hideloading() {
  34539. $("#luckysheet-cell-loading").hide();
  34540. }
  34541. var init_loading = __esm({
  34542. "src/global/loading.js"() {
  34543. }
  34544. });
  34545. // src/global/editor.js
  34546. var editor, editor_default;
  34547. var init_editor = __esm({
  34548. "src/global/editor.js"() {
  34549. init_browser();
  34550. init_formula();
  34551. init_getdata();
  34552. init_refresh();
  34553. init_get();
  34554. init_store();
  34555. editor = {
  34556. deepCopyFlowDataState: false,
  34557. deepCopyFlowDataCache: "",
  34558. deepCopyFlowDataWorker: null,
  34559. deepCopyFlowData: function(flowData) {
  34560. let _this = this;
  34561. if (_this.deepCopyFlowDataState) {
  34562. if (_this.deepCopyFlowDataWorker != null) {
  34563. _this.deepCopyFlowDataWorker.terminate();
  34564. }
  34565. return _this.deepCopyFlowDataCache;
  34566. } else {
  34567. if (flowData == null) {
  34568. flowData = store_default.flowdata;
  34569. }
  34570. return $.extend(true, [], flowData);
  34571. }
  34572. },
  34573. webWorkerFlowDataCache: function(flowData) {
  34574. let _this = this;
  34575. try {
  34576. if (_this.deepCopyFlowDataWorker != null) {
  34577. _this.deepCopyFlowDataWorker.terminate();
  34578. }
  34579. let funcTxt = "data:text/javascript;chartset=US-ASCII,onmessage = function (e) { postMessage(e.data); };";
  34580. _this.deepCopyFlowDataState = false;
  34581. let worker;
  34582. if (browser_default.isIE() == 1) {
  34583. let response = "self.onmessage=function(e){postMessage(e.data);}";
  34584. worker = new Worker("./plugins/Worker-helper.js");
  34585. worker.postMessage(response);
  34586. } else {
  34587. worker = new Worker(funcTxt);
  34588. }
  34589. _this.deepCopyFlowDataWorker = worker;
  34590. worker.postMessage(flowData);
  34591. worker.onmessage = function(e) {
  34592. _this.deepCopyFlowDataCache = e.data;
  34593. _this.deepCopyFlowDataState = true;
  34594. };
  34595. } catch (e) {
  34596. _this.deepCopyFlowDataCache = $.extend(true, [], flowData);
  34597. }
  34598. },
  34599. controlHandler: function(dataChe, range2) {
  34600. let _this = this;
  34601. let d = _this.deepCopyFlowData(store_default.flowdata);
  34602. let last = range2 || store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1];
  34603. let curR = last["row"] == null ? 0 : last["row"][0];
  34604. let curC = last["column"] == null ? 0 : last["column"][0];
  34605. let rlen = dataChe.length, clen = dataChe[0].length;
  34606. let addr = curR + rlen - d.length, addc = curC + clen - d[0].length;
  34607. if (addr > 0 || addc > 0) {
  34608. d = datagridgrowth([].concat(d), addr, addc, true);
  34609. }
  34610. for (let r2 = 0; r2 < rlen; r2++) {
  34611. let x = [].concat(d[r2 + curR]);
  34612. for (let c2 = 0; c2 < clen; c2++) {
  34613. let value = "";
  34614. if (dataChe[r2] != null && dataChe[r2][c2] != null) {
  34615. value = dataChe[r2][c2];
  34616. }
  34617. x[c2 + curC] = value;
  34618. }
  34619. d[r2 + curR] = x;
  34620. }
  34621. if (addr > 0 || addc > 0) {
  34622. jfrefreshgridall(d[0].length, d.length, d, null, store_default.luckysheet_select_save, "datachangeAll");
  34623. } else {
  34624. jfrefreshrange(d, store_default.luckysheet_select_save);
  34625. }
  34626. },
  34627. clearRangeByindex: function(st_r, ed_r, st_c, ed_c, sheetIndex) {
  34628. let index2 = getSheetIndex(sheetIndex);
  34629. let d = $.extend(true, [], store_default.luckysheetfile[index2]["data"]);
  34630. for (let r2 = st_r; r2 <= ed_r; r2++) {
  34631. let x = [].concat(d[r2]);
  34632. for (let c2 = st_c; c2 <= ed_c; c2++) {
  34633. formula_default.delFunctionGroup(r2, c2);
  34634. formula_default.execFunctionGroup(r2, c2, "");
  34635. x[c2] = null;
  34636. }
  34637. d[r2] = x;
  34638. }
  34639. if (sheetIndex == store_default.currentSheetIndex) {
  34640. let rlen = ed_r - st_r + 1, clen = ed_c - st_c + 1;
  34641. if (rlen > 5e3) {
  34642. jfrefreshgrid(d, [{"row": [st_r, ed_r], "column": [st_c, ed_c]}]);
  34643. } else {
  34644. jfrefreshrange(d, {"row": [st_r, ed_r], "column": [st_c, ed_c]});
  34645. }
  34646. } else {
  34647. store_default.luckysheetfile[index2]["data"] = d;
  34648. }
  34649. },
  34650. controlHandlerD: function(dataChe) {
  34651. let _this = this;
  34652. let d = _this.deepCopyFlowData(store_default.flowdata);
  34653. let last = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1];
  34654. let r1 = last["row"][0], r2 = last["row"][1];
  34655. let c1 = last["column"][0], c2 = last["column"][1];
  34656. let rlen = dataChe.length, clen = dataChe[0].length;
  34657. let addr = r1 + rlen - d.length, addc = c1 + clen - d[0].length;
  34658. if (addr > 0 || addc > 0) {
  34659. d = datagridgrowth([].concat(d), addr, addc, true);
  34660. }
  34661. for (let r3 = r1; r3 <= r2; r3++) {
  34662. for (let c3 = c1; c3 <= c2; c3++) {
  34663. d[r3][c3] = null;
  34664. }
  34665. }
  34666. for (let i2 = 0; i2 < rlen; i2++) {
  34667. for (let j = 0; j < clen; j++) {
  34668. d[r1 + i2][c1 + j] = dataChe[i2][j];
  34669. }
  34670. }
  34671. let range2 = [
  34672. {"row": [r1, r2], "column": [c1, c2]},
  34673. {"row": [r1, r1 + rlen - 1], "column": [c1, c1 + clen - 1]}
  34674. ];
  34675. jfrefreshgrid(d, range2);
  34676. }
  34677. };
  34678. editor_default = editor;
  34679. }
  34680. });
  34681. // src/global/dynamicArray.js
  34682. function dynamicArrayCompute(dynamicArray) {
  34683. let dynamicArray_compute = {};
  34684. if (getObjType(dynamicArray) == "array") {
  34685. for (let i2 = 0; i2 < dynamicArray.length; i2++) {
  34686. let d_row = dynamicArray[i2].r;
  34687. let d_col = dynamicArray[i2].c;
  34688. let d_f = dynamicArray[i2].f;
  34689. if (store_default.flowdata[d_row][d_col] != null && store_default.flowdata[d_row][d_col].f != null && store_default.flowdata[d_row][d_col].f == d_f) {
  34690. if (d_row + "_" + d_col in dynamicArray_compute) {
  34691. dynamicArray_compute = dynamicArraySpillEditCompute(dynamicArray_compute, d_row, d_col);
  34692. }
  34693. let d_data = dynamicArray[i2].data;
  34694. let d_rowlen = d_data.length;
  34695. let d_collen = 1;
  34696. if (getObjType(d_data[0]) == "array") {
  34697. d_collen = d_data[0].length;
  34698. }
  34699. if (dynamicArrayRangeIsAllNull({"row": [d_row, d_row + d_rowlen - 1], "column": [d_col, d_col + d_collen - 1]}, store_default.flowdata)) {
  34700. for (let x = 0; x < d_rowlen; x++) {
  34701. for (let y = 0; y < d_collen; y++) {
  34702. let rowIndex = d_row + x;
  34703. let colIndex = d_col + y;
  34704. if (getObjType(d_data[0]) == "array") {
  34705. dynamicArray_compute[rowIndex + "_" + colIndex] = {"v": d_data[x][y], "r": d_row, "c": d_col};
  34706. } else {
  34707. dynamicArray_compute[rowIndex + "_" + colIndex] = {"v": d_data[x], "r": d_row, "c": d_col};
  34708. }
  34709. }
  34710. }
  34711. } else {
  34712. dynamicArray_compute[d_row + "_" + d_col] = {"v": "#SPILL!", "r": d_row, "c": d_col};
  34713. }
  34714. }
  34715. }
  34716. }
  34717. return dynamicArray_compute;
  34718. }
  34719. function dynamicArraySpillEditCompute(computeObj, r2, c2) {
  34720. let rowIndex = computeObj[r2 + "_" + c2].r;
  34721. let colIndex = computeObj[r2 + "_" + c2].c;
  34722. for (let x in computeObj) {
  34723. if (x == rowIndex + "_" + colIndex) {
  34724. computeObj[x].v = "#SPILL!";
  34725. } else if (computeObj[x].r == rowIndex && computeObj[x].c == colIndex) {
  34726. delete computeObj[x];
  34727. }
  34728. }
  34729. return computeObj;
  34730. }
  34731. function dynamicArrayRangeIsAllNull(range2, data) {
  34732. let r1 = range2["row"][0], r2 = range2["row"][1];
  34733. let c1 = range2["column"][0], c2 = range2["column"][1];
  34734. let isAllNull = true;
  34735. for (let r3 = r1; r3 <= r2; r3++) {
  34736. for (let c3 = c1; c3 <= c2; c3++) {
  34737. if (!(r3 == r1 && c3 == c1) && data[r3][c3] != null && data[r3][c3].v != null && data[r3][c3].v.toString() != "") {
  34738. isAllNull = false;
  34739. break;
  34740. }
  34741. }
  34742. }
  34743. return isAllNull;
  34744. }
  34745. function dynamicArrayHightShow(r2, c2) {
  34746. let dynamicArray = store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)]["dynamicArray"] == null ? [] : store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)]["dynamicArray"];
  34747. let dynamicArray_compute = dynamicArrayCompute(dynamicArray);
  34748. if (r2 + "_" + c2 in dynamicArray_compute && dynamicArray_compute[r2 + "_" + c2].v != "#SPILL!") {
  34749. let d_row = dynamicArray_compute[r2 + "_" + c2].r;
  34750. let d_col = dynamicArray_compute[r2 + "_" + c2].c;
  34751. let d_f = store_default.flowdata[d_row][d_col].f;
  34752. let rlen, clen;
  34753. for (let i2 = 0; i2 < dynamicArray.length; i2++) {
  34754. if (dynamicArray[i2].f == d_f) {
  34755. rlen = dynamicArray[i2].data.length;
  34756. if (getObjType(dynamicArray[i2].data[0]) == "array") {
  34757. clen = dynamicArray[i2].data[0].length;
  34758. } else {
  34759. clen = 1;
  34760. }
  34761. }
  34762. }
  34763. let d_row_end = d_row + rlen - 1;
  34764. let d_col_end = d_col + clen - 1;
  34765. let row = store_default.visibledatarow[d_row_end], row_pre = d_row - 1 == -1 ? 0 : store_default.visibledatarow[d_row - 1];
  34766. let col = store_default.visibledatacolumn[d_col_end], col_pre = d_col - 1 == -1 ? 0 : store_default.visibledatacolumn[d_col - 1];
  34767. $("#luckysheet-dynamicArray-hightShow").css({
  34768. "left": col_pre,
  34769. "width": col - col_pre - 1,
  34770. "top": row_pre,
  34771. "height": row - row_pre - 1,
  34772. "display": "block"
  34773. });
  34774. } else {
  34775. $("#luckysheet-dynamicArray-hightShow").hide();
  34776. }
  34777. }
  34778. var init_dynamicArray = __esm({
  34779. "src/global/dynamicArray.js"() {
  34780. init_util();
  34781. init_get();
  34782. init_store();
  34783. }
  34784. });
  34785. // src/global/cursorPos.js
  34786. function luckysheetRangeLast(obj) {
  34787. let range2;
  34788. if (document.createRange) {
  34789. if (obj.innerHTML != obj.innerText || obj.innerHTML == "") {
  34790. obj.focus();
  34791. range2 = window.getSelection();
  34792. range2.selectAllChildren(obj);
  34793. range2.collapseToEnd();
  34794. } else {
  34795. let len = obj.innerText.length;
  34796. range2 = document.createRange();
  34797. range2.selectNodeContents(obj);
  34798. range2.setStart(obj.childNodes[0], len);
  34799. range2.collapse(true);
  34800. let selection2 = window.getSelection();
  34801. selection2.removeAllRanges();
  34802. selection2.addRange(range2);
  34803. }
  34804. } else if (document.selection) {
  34805. range2 = document.body.createTextRange();
  34806. range2.moveToElementText(obj);
  34807. range2.collapse(false);
  34808. range2.select();
  34809. }
  34810. }
  34811. function hideMenuByCancel(event2) {
  34812. if (event2.target.classList && (event2.target.classList.contains("luckysheet-cols-rows-shift-left") || event2.target.classList.contains("luckysheet-cols-rows-shift-right"))) {
  34813. return;
  34814. }
  34815. if (!$(event2.target).hasClass("luckysheet-mousedown-cancel") && $(event2.target).filter("[class*='sp-palette']").length == 0 && $(event2.target).filter("[class*='sp-thumb']").length == 0 && $(event2.target).filter("[class*='sp-']").length == 0) {
  34816. $("#luckysheet-rightclick-menu").hide();
  34817. $("#luckysheet-cols-h-hover").hide();
  34818. $("#luckysheet-cols-menu-btn").hide();
  34819. $("#luckysheet-sheet-list, #luckysheet-rightclick-sheet-menu, #luckysheet-user-menu").hide();
  34820. $("body > .luckysheet-filter-menu, body > .luckysheet-filter-submenu, body > .luckysheet-cols-menu").hide();
  34821. store_default.luckysheet_cols_menu_status = false;
  34822. }
  34823. }
  34824. function selectTextDom(ele) {
  34825. if (window.getSelection) {
  34826. let range2 = document.createRange();
  34827. range2.selectNodeContents(ele);
  34828. if (range2.startContainer && isInPage(range2.startContainer)) {
  34829. window.getSelection().removeAllRanges();
  34830. window.getSelection().addRange(range2);
  34831. }
  34832. } else if (document.selection) {
  34833. let range2 = document.body.createTextRange();
  34834. range2.moveToElementText(ele);
  34835. range2.select();
  34836. }
  34837. }
  34838. function selectTextContent(ele) {
  34839. if (window.getSelection) {
  34840. let range2 = document.createRange();
  34841. var content = ele.firstChild;
  34842. range2.setStart(content, 0);
  34843. range2.setEnd(content, content.length);
  34844. if (range2.startContainer && isInPage(range2.startContainer)) {
  34845. window.getSelection().removeAllRanges();
  34846. window.getSelection().addRange(range2);
  34847. }
  34848. } else if (document.selection) {
  34849. let range2 = document.body.createTextRange();
  34850. range2.moveToElementText(ele);
  34851. range2.select();
  34852. }
  34853. }
  34854. function selectTextContentCross(sEle, eEle) {
  34855. if (window.getSelection) {
  34856. let range2 = document.createRange();
  34857. var sContent = sEle.firstChild, eContent = eEle.firstChild;
  34858. range2.setStart(sContent, 0);
  34859. range2.setEnd(eContent, eContent.length);
  34860. if (range2.startContainer && isInPage(range2.startContainer)) {
  34861. window.getSelection().removeAllRanges();
  34862. window.getSelection().addRange(range2);
  34863. }
  34864. }
  34865. }
  34866. function selectTextContentCollapse(sEle, index2) {
  34867. if (window.getSelection) {
  34868. let range2 = document.createRange();
  34869. var sContent = sEle.firstChild;
  34870. if (index2 > sContent.length) {
  34871. index2 = sContent.length;
  34872. } else if (index2 < 0) {
  34873. index2 = 0;
  34874. }
  34875. range2.setStart(sContent, index2);
  34876. range2.collapse(true);
  34877. if (range2.startContainer && isInPage(range2.startContainer)) {
  34878. window.getSelection().removeAllRanges();
  34879. window.getSelection().addRange(range2);
  34880. }
  34881. }
  34882. }
  34883. function isInPage(node) {
  34884. return node === document.body ? false : document.body.contains(node);
  34885. }
  34886. var init_cursorPos = __esm({
  34887. "src/global/cursorPos.js"() {
  34888. init_store();
  34889. }
  34890. });
  34891. // src/controllers/inlineString.js
  34892. function isInlineStringCell(cell) {
  34893. let isIs = cell && cell.ct != null && cell.ct.t == "inlineStr" && cell.ct.s != null && cell.ct.s.length > 0;
  34894. return isIs;
  34895. }
  34896. function isInlineStringCT(ct) {
  34897. let isIs = ct != null && ct.t == "inlineStr" && ct.s != null && ct.s.length > 0;
  34898. return isIs;
  34899. }
  34900. function updateInlineStringFormat(cell, attr, value, $input) {
  34901. var w = window.getSelection();
  34902. var range2;
  34903. if (w.type == "None") {
  34904. range2 = store_default.inlineStringEditRange;
  34905. } else {
  34906. range2 = w.getRangeAt(0);
  34907. }
  34908. let cac = range2.commonAncestorContainer;
  34909. let $textEditor;
  34910. if (cac.id == "luckysheet-rich-text-editor") {
  34911. $textEditor = $(cac);
  34912. } else {
  34913. $textEditor = $(cac).closest("#luckysheet-rich-text-editor");
  34914. }
  34915. let $functionbox = $(cac).closest("#luckysheet-functionbox-cell");
  34916. if ($textEditor.length == 0 && $functionbox.length == 0 && store_default.inlineStringEditRange != null) {
  34917. range2 = store_default.inlineStringEditRange;
  34918. cac = range2.commonAncestorContainer;
  34919. if (cac.id == "luckysheet-rich-text-editor") {
  34920. $textEditor = $(cac);
  34921. } else {
  34922. $textEditor = $(cac).closest("#luckysheet-rich-text-editor");
  34923. }
  34924. $functionbox = $(cac).closest("#luckysheet-functionbox-cell");
  34925. }
  34926. if (range2.collapsed === true) {
  34927. return;
  34928. }
  34929. let endContainer = range2.endContainer, startContainer = range2.startContainer;
  34930. let endOffset = range2.endOffset, startOffset = range2.startOffset;
  34931. if ($textEditor.length > 0) {
  34932. if (startContainer === endContainer) {
  34933. let span = startContainer.parentNode, spanIndex, inherit = false;
  34934. let content = span.innerText;
  34935. let fullContent = $textEditor.html();
  34936. if (fullContent.substr(0, 5) != "<span") {
  34937. inherit = true;
  34938. }
  34939. let left = "", mid = "", right = "";
  34940. let s1 = 0, s2 = startOffset, s3 = endOffset, s4 = content.length;
  34941. left = content.substring(s1, s2);
  34942. mid = content.substring(s2, s3);
  34943. right = content.substring(s3, s4);
  34944. let cont = "";
  34945. if (left != "") {
  34946. let cssText = span.style.cssText;
  34947. if (inherit) {
  34948. let box = $(span).closest("#luckysheet-input-box").get(0);
  34949. if (box != null) {
  34950. cssText = extendCssText(box.style.cssText, cssText);
  34951. }
  34952. }
  34953. cont += "<span style='" + cssText + "'>" + left + "</span>";
  34954. }
  34955. if (mid != "") {
  34956. let cssText = getCssText(span.style.cssText, attr, value);
  34957. if (inherit) {
  34958. let box = $(span).closest("#luckysheet-input-box").get(0);
  34959. if (box != null) {
  34960. cssText = extendCssText(box.style.cssText, cssText);
  34961. }
  34962. }
  34963. cont += "<span style='" + cssText + "'>" + mid + "</span>";
  34964. }
  34965. if (right != "") {
  34966. let cssText = span.style.cssText;
  34967. if (inherit) {
  34968. let box = $(span).closest("#luckysheet-input-box").get(0);
  34969. if (box != null) {
  34970. cssText = extendCssText(box.style.cssText, cssText);
  34971. }
  34972. }
  34973. cont += "<span style='" + cssText + "'>" + right + "</span>";
  34974. }
  34975. if (startContainer.parentNode.tagName == "SPAN") {
  34976. spanIndex = $textEditor.find("span").index(span);
  34977. $(span).replaceWith(cont);
  34978. } else {
  34979. spanIndex = 0;
  34980. $(span).html(cont);
  34981. }
  34982. let seletedNodeIndex = 0;
  34983. if (s1 == s2) {
  34984. seletedNodeIndex = spanIndex;
  34985. } else {
  34986. seletedNodeIndex = spanIndex + 1;
  34987. }
  34988. selectTextContent($textEditor.find("span").get(seletedNodeIndex));
  34989. } else {
  34990. if (startContainer.parentNode.tagName == "SPAN" && endContainer.parentNode.tagName == "SPAN") {
  34991. let startSpan = startContainer.parentNode, startSpanIndex;
  34992. let endSpan = endContainer.parentNode, endSpanIndex;
  34993. startSpanIndex = $textEditor.find("span").index(startSpan);
  34994. endSpanIndex = $textEditor.find("span").index(endSpan);
  34995. let startContent = startSpan.innerHTML, endContent = endSpan.innerHTML;
  34996. let sleft = "", sright = "", eleft = "", eright = "";
  34997. let s1 = 0, s2 = startOffset, s3 = endOffset, s4 = endContent.length;
  34998. sleft = startContent.substring(s1, s2);
  34999. sright = startContent.substring(s2, startContent.length);
  35000. eleft = endContent.substring(0, s3);
  35001. eright = endContent.substring(s3, s4);
  35002. let spans = $textEditor.find("span");
  35003. let replaceSpans = spans.slice(startSpanIndex, endSpanIndex + 1);
  35004. let cont = "";
  35005. for (let i2 = 0; i2 < startSpanIndex; i2++) {
  35006. let span = spans.get(i2), content = span.innerHTML;
  35007. cont += "<span style='" + span.style.cssText + "'>" + content + "</span>";
  35008. }
  35009. if (sleft != "") {
  35010. cont += "<span style='" + startSpan.style.cssText + "'>" + sleft + "</span>";
  35011. }
  35012. if (sright != "") {
  35013. let cssText = getCssText(startSpan.style.cssText, attr, value);
  35014. cont += "<span style='" + cssText + "'>" + sright + "</span>";
  35015. }
  35016. if (startSpanIndex < endSpanIndex) {
  35017. for (let i2 = startSpanIndex + 1; i2 < endSpanIndex; i2++) {
  35018. let span = spans.get(i2), content = span.innerHTML;
  35019. let cssText = getCssText(span.style.cssText, attr, value);
  35020. cont += "<span style='" + cssText + "'>" + content + "</span>";
  35021. }
  35022. }
  35023. if (eleft != "") {
  35024. let cssText = getCssText(endSpan.style.cssText, attr, value);
  35025. cont += "<span style='" + cssText + "'>" + eleft + "</span>";
  35026. }
  35027. if (eright != "") {
  35028. cont += "<span style='" + endSpan.style.cssText + "'>" + eright + "</span>";
  35029. }
  35030. for (let i2 = endSpanIndex + 1; i2 < spans.length; i2++) {
  35031. let span = spans.get(i2), content = span.innerHTML;
  35032. cont += "<span style='" + span.style.cssText + "'>" + content + "</span>";
  35033. }
  35034. $textEditor.html(cont);
  35035. let startSeletedNodeIndex, endSeletedNodeIndex;
  35036. if (s1 == s2) {
  35037. startSeletedNodeIndex = startSpanIndex;
  35038. endSeletedNodeIndex = endSpanIndex;
  35039. } else {
  35040. startSeletedNodeIndex = startSpanIndex + 1;
  35041. endSeletedNodeIndex = endSpanIndex + 1;
  35042. }
  35043. spans = $textEditor.find("span");
  35044. selectTextContentCross(spans.get(startSeletedNodeIndex), spans.get(endSeletedNodeIndex));
  35045. }
  35046. }
  35047. } else if ($functionbox.length > 0) {
  35048. }
  35049. }
  35050. function enterKeyControll(cell) {
  35051. var w = window.getSelection();
  35052. if (w.type == "None") {
  35053. return;
  35054. }
  35055. var range2 = w.getRangeAt(0);
  35056. let cac = range2.commonAncestorContainer;
  35057. let $textEditor;
  35058. if (cac.id == "luckysheet-rich-text-editor") {
  35059. $textEditor = $(cac);
  35060. } else {
  35061. $textEditor = $(cac).closest("#luckysheet-rich-text-editor");
  35062. }
  35063. let $functionbox = $(cac).closest("#luckysheet-functionbox-cell");
  35064. let endContainer = range2.endContainer, startContainer = range2.startContainer;
  35065. let endOffset = range2.endOffset, startOffset = range2.startOffset;
  35066. if ($textEditor.length > 0) {
  35067. let startSpan = startContainer.parentNode;
  35068. if (startContainer.id == "luckysheet-rich-text-editor") {
  35069. startSpan = $(startContainer).find("span");
  35070. if (startSpan.length == 0) {
  35071. startContainer.innerHTML = `<span>${startContainer.innerText}</span>`;
  35072. startSpan = $(startContainer).find("span");
  35073. }
  35074. startSpan = startSpan.get(startSpan.length - 1);
  35075. startOffset = startSpan.innerHTML.length;
  35076. }
  35077. if (range2.collapsed === false) {
  35078. range2.deleteContents();
  35079. }
  35080. let startContent = startSpan.innerText;
  35081. let sleft = "", sright = "";
  35082. let s1 = 0, s2 = startOffset;
  35083. sleft = startContent.substring(s1, s2);
  35084. sright = startContent.substring(s2, startContent.length);
  35085. let spanIndex, cont;
  35086. if (startContainer.parentNode.tagName == "SPAN") {
  35087. let textSpan = $textEditor.find("span");
  35088. spanIndex = textSpan.index(startSpan);
  35089. if (spanIndex == textSpan.length - 1 && sright == "") {
  35090. let txt = textSpan[spanIndex].innerHTML;
  35091. if (txt.substr(txt.length - 1, 1) == "\n") {
  35092. cont = "<span style='" + startSpan.style.cssText + "'>" + sleft + "\n</span>";
  35093. } else {
  35094. cont = "<span style='" + startSpan.style.cssText + "'>" + sleft + "\n\n</span>";
  35095. }
  35096. } else {
  35097. cont = "<span style='" + startSpan.style.cssText + "'>" + sleft + "\n" + sright + "</span>";
  35098. }
  35099. $(startSpan).replaceWith(cont);
  35100. } else {
  35101. let cssText = startSpan.style.cssText;
  35102. if (sright == "") {
  35103. cont = "<span style='" + cssText + "'>" + sleft + "\n\n</span>";
  35104. } else {
  35105. cont = "<span style='" + cssText + "'>" + sleft + "\n" + sright + "</span>";
  35106. }
  35107. if (startContainer.id == "luckysheet-rich-text-editor") {
  35108. $(startSpan).replaceWith(cont);
  35109. let textSpan = $textEditor.find("span");
  35110. spanIndex = textSpan.length - 1;
  35111. startOffset = textSpan.get(spanIndex).innerHTML.length - 1;
  35112. } else {
  35113. $(startSpan).html(cont);
  35114. spanIndex = 0;
  35115. }
  35116. }
  35117. selectTextContentCollapse($textEditor.find("span").get(spanIndex), startOffset + 1);
  35118. } else if ($functionbox.length > 0) {
  35119. }
  35120. }
  35121. function updateInlineStringFormatOutside(cell, key, value) {
  35122. if (cell.ct == null) {
  35123. return;
  35124. }
  35125. let s = cell.ct.s;
  35126. if (s == null) {
  35127. return;
  35128. }
  35129. for (let i2 = 0; i2 < s.length; i2++) {
  35130. let item2 = s[i2];
  35131. item2[key] = value;
  35132. }
  35133. }
  35134. function convertSpanToShareString($dom) {
  35135. let styles = [], preStyleList, preStyleListString = null;
  35136. for (let i2 = 0; i2 < $dom.length; i2++) {
  35137. let span = $dom.get(i2);
  35138. let styleList = convertCssToStyleList(span.style.cssText);
  35139. let curStyleListString = JSON.stringify(styleList);
  35140. let v = span.innerText;
  35141. v = v.replace(/\n/g, "\r\n");
  35142. if (curStyleListString == preStyleListString) {
  35143. preStyleList.v += v;
  35144. } else {
  35145. styleList.v = v;
  35146. styles.push(styleList);
  35147. preStyleListString = curStyleListString;
  35148. preStyleList = styleList;
  35149. }
  35150. }
  35151. return styles;
  35152. }
  35153. function convertCssToStyleList(cssText) {
  35154. if (cssText == null || cssText.length == 0) {
  35155. return {};
  35156. }
  35157. let cssTextArray = cssText.split(";");
  35158. const _locale = locale_default();
  35159. const locale_fontarray = _locale.fontarray;
  35160. const locale_fontjson = _locale.fontjson;
  35161. let styleList = {
  35162. "ff": locale_fontarray[0],
  35163. "fc": "#000000",
  35164. "fs": 10,
  35165. "cl": 0,
  35166. "un": 0,
  35167. "bl": 0,
  35168. "it": 0
  35169. };
  35170. cssTextArray.forEach((s) => {
  35171. s = s.toLowerCase();
  35172. let key = textTrim(s.substr(0, s.indexOf(":")));
  35173. let value = textTrim(s.substr(s.indexOf(":") + 1));
  35174. if (key == "font-weight") {
  35175. if (value == "bold") {
  35176. styleList["bl"] = 1;
  35177. } else {
  35178. styleList["bl"] = 0;
  35179. }
  35180. }
  35181. if (key == "font-style") {
  35182. if (value == "italic") {
  35183. styleList["it"] = 1;
  35184. } else {
  35185. styleList["it"] = 0;
  35186. }
  35187. }
  35188. if (key == "font-family") {
  35189. let ff = locale_fontjson[value];
  35190. if (ff == null) {
  35191. styleList["ff"] = value;
  35192. } else {
  35193. styleList["ff"] = ff;
  35194. }
  35195. }
  35196. if (key == "font-size") {
  35197. styleList["fs"] = parseInt(value);
  35198. }
  35199. if (key == "color") {
  35200. styleList["fc"] = value;
  35201. }
  35202. if (key == "text-decoration") {
  35203. styleList["cl"] = 1;
  35204. }
  35205. if (key == "border-bottom") {
  35206. styleList["un"] = 1;
  35207. }
  35208. if (key == "lucky-strike") {
  35209. styleList["cl"] = value;
  35210. }
  35211. if (key == "lucky-underline") {
  35212. styleList["un"] = value;
  35213. }
  35214. });
  35215. return styleList;
  35216. }
  35217. function getClassWithcss(cssText, ukey) {
  35218. let cssTextArray = cssText.split(";");
  35219. if (ukey == null || ukey.length == 0) {
  35220. return cssText;
  35221. }
  35222. if (cssText.indexOf(ukey) > -1) {
  35223. for (let i2 = 0; i2 < cssTextArray.length; i2++) {
  35224. let s = cssTextArray[i2];
  35225. s = s.toLowerCase();
  35226. let key = textTrim(s.substr(0, s.indexOf(":")));
  35227. let value = textTrim(s.substr(s.indexOf(":") + 1));
  35228. if (key == ukey) {
  35229. return value;
  35230. }
  35231. }
  35232. }
  35233. return "";
  35234. }
  35235. function upsetClassWithCss(cssText, ukey, uvalue) {
  35236. let cssTextArray = cssText.split(";");
  35237. let newCss = "";
  35238. if (ukey == null || ukey.length == 0) {
  35239. return cssText;
  35240. }
  35241. if (cssText.indexOf(ukey) > -1) {
  35242. for (let i2 = 0; i2 < cssTextArray.length; i2++) {
  35243. let s = cssTextArray[i2];
  35244. s = s.toLowerCase();
  35245. let key = textTrim(s.substr(0, s.indexOf(":")));
  35246. let value = textTrim(s.substr(s.indexOf(":") + 1));
  35247. if (key == ukey) {
  35248. newCss += key + ":" + uvalue + ";";
  35249. } else if (key.length > 0) {
  35250. newCss += key + ":" + value + ";";
  35251. }
  35252. }
  35253. } else if (ukey.length > 0) {
  35254. cssText += ukey + ":" + uvalue + ";";
  35255. newCss = cssText;
  35256. }
  35257. return newCss;
  35258. }
  35259. function removeClassWidthCss(cssText, ukey) {
  35260. let cssTextArray = cssText.split(";");
  35261. let newCss = "";
  35262. let oUkey = ukey;
  35263. if (ukey == null || ukey.length == 0) {
  35264. return cssText;
  35265. }
  35266. if (ukey in luckyToCssName) {
  35267. ukey = luckyToCssName[ukey];
  35268. }
  35269. if (cssText.indexOf(ukey) > -1) {
  35270. for (let i2 = 0; i2 < cssTextArray.length; i2++) {
  35271. let s = cssTextArray[i2];
  35272. s = s.toLowerCase();
  35273. let key = textTrim(s.substr(0, s.indexOf(":")));
  35274. let value = textTrim(s.substr(s.indexOf(":") + 1));
  35275. if (key == ukey || oUkey == "cl" && key == "lucky-strike" || oUkey == "un" && key == "lucky-underline") {
  35276. continue;
  35277. } else if (key.length > 0) {
  35278. newCss += key + ":" + value + ";";
  35279. }
  35280. }
  35281. } else {
  35282. newCss = cssText;
  35283. }
  35284. return newCss;
  35285. }
  35286. function getCssText(cssText, attr, value) {
  35287. let styleObj = {};
  35288. styleObj[attr] = value;
  35289. if (attr == "un") {
  35290. let fontColor = getClassWithcss(cssText, "color");
  35291. if (fontColor == "") {
  35292. fontColor = "#000000";
  35293. }
  35294. let fs = getClassWithcss(cssText, "font-size");
  35295. if (fs == "") {
  35296. fs = 11;
  35297. }
  35298. fs = parseInt(fs);
  35299. styleObj["_fontSize"] = fs;
  35300. styleObj["_color"] = fontColor;
  35301. }
  35302. let s = getFontStyleByCell(styleObj, void 0, void 0, false);
  35303. let ukey = textTrim(s.substr(0, s.indexOf(":")));
  35304. let uvalue = textTrim(s.substr(s.indexOf(":") + 1));
  35305. uvalue = uvalue.substr(0, uvalue.length - 1);
  35306. cssText = removeClassWidthCss(cssText, attr);
  35307. cssText = upsetClassWithCss(cssText, ukey, uvalue);
  35308. return cssText;
  35309. }
  35310. function extendCssText(origin, cover, isLimit = true) {
  35311. let originArray = origin.split(";");
  35312. let coverArray = cover.split(";");
  35313. let newCss = "";
  35314. let addKeyList = {};
  35315. for (let i2 = 0; i2 < originArray.length; i2++) {
  35316. let so = originArray[i2], isAdd = true;
  35317. so = so.toLowerCase();
  35318. let okey = textTrim(so.substr(0, so.indexOf(":")));
  35319. if (okey == "font-size") {
  35320. continue;
  35321. }
  35322. let ovalue = textTrim(so.substr(so.indexOf(":") + 1));
  35323. if (isLimit) {
  35324. if (!(okey in inlineStyleAffectCssName)) {
  35325. continue;
  35326. }
  35327. }
  35328. for (let a = 0; a < coverArray.length; a++) {
  35329. let sc = coverArray[a];
  35330. sc = sc.toLowerCase();
  35331. let ckey = textTrim(sc.substr(0, sc.indexOf(":")));
  35332. let cvalue = textTrim(sc.substr(sc.indexOf(":") + 1));
  35333. if (okey == ckey) {
  35334. newCss += ckey + ":" + cvalue + ";";
  35335. isAdd = false;
  35336. continue;
  35337. }
  35338. }
  35339. if (isAdd) {
  35340. newCss += okey + ":" + ovalue + ";";
  35341. }
  35342. addKeyList[okey] = 1;
  35343. }
  35344. for (let a = 0; a < coverArray.length; a++) {
  35345. let sc = coverArray[a];
  35346. sc = sc.toLowerCase();
  35347. let ckey = textTrim(sc.substr(0, sc.indexOf(":")));
  35348. let cvalue = textTrim(sc.substr(sc.indexOf(":") + 1));
  35349. if (isLimit) {
  35350. if (!(ckey in inlineStyleAffectCssName)) {
  35351. continue;
  35352. }
  35353. }
  35354. if (!(ckey in addKeyList)) {
  35355. newCss += ckey + ":" + cvalue + ";";
  35356. }
  35357. }
  35358. return newCss;
  35359. }
  35360. var inlineStyleAffectAttribute, inlineStyleAffectCssName, luckyToCssName;
  35361. var init_inlineString = __esm({
  35362. "src/controllers/inlineString.js"() {
  35363. init_getdata();
  35364. init_cursorPos();
  35365. init_locale();
  35366. init_store();
  35367. inlineStyleAffectAttribute = {"bl": 1, "it": 1, "ff": 1, "cl": 1, "un": 1, "fs": 1, "fc": 1};
  35368. inlineStyleAffectCssName = {"font-weight": 1, "font-style": 1, "font-family": 1, "text-decoration": 1, "border-bottom": 1, "font-size": 1, "color": 1};
  35369. luckyToCssName = {
  35370. "bl": "font-weight",
  35371. "it": "font-style",
  35372. "ff": "font-family",
  35373. "fs": "font-size",
  35374. "fc": "color",
  35375. "cl": "text-decoration",
  35376. "un": "border-bottom"
  35377. };
  35378. }
  35379. });
  35380. // src/global/getdata.js
  35381. function getdatabyselection(range2, sheetIndex) {
  35382. if (range2 == null) {
  35383. range2 = store_default.luckysheet_select_save[0];
  35384. }
  35385. if (range2["row"] == null || range2["row"].length == 0) {
  35386. return [];
  35387. }
  35388. let d, cfg;
  35389. if (sheetIndex != null && sheetIndex != store_default.currentSheetIndex) {
  35390. d = store_default.luckysheetfile[getSheetIndex(sheetIndex)]["data"];
  35391. cfg = store_default.luckysheetfile[getSheetIndex(sheetIndex)]["config"];
  35392. } else {
  35393. d = editor_default.deepCopyFlowData(store_default.flowdata);
  35394. cfg = store_default.config;
  35395. }
  35396. let data = [];
  35397. for (let r2 = range2["row"][0]; r2 <= range2["row"][1]; r2++) {
  35398. if (d[r2] == null) {
  35399. continue;
  35400. }
  35401. if (cfg["rowhidden"] != null && cfg["rowhidden"][r2] != null) {
  35402. continue;
  35403. }
  35404. let row = [];
  35405. for (let c2 = range2["column"][0]; c2 <= range2["column"][1]; c2++) {
  35406. row.push(d[r2][c2]);
  35407. }
  35408. data.push(row);
  35409. }
  35410. return data;
  35411. }
  35412. function getdatabyselectionD(d, range2) {
  35413. if (range2 == null || range2["row"] == null || range2["row"].length == 0) {
  35414. return [];
  35415. }
  35416. let dynamicArray_compute = dynamicArrayCompute(store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)]["dynamicArray"]);
  35417. let data = [];
  35418. if (d == null) {
  35419. return data;
  35420. }
  35421. for (let r2 = range2["row"][0]; r2 <= range2["row"][1]; r2++) {
  35422. if (d[r2] == null) {
  35423. continue;
  35424. }
  35425. let row = [];
  35426. for (let c2 = range2["column"][0]; c2 <= range2["column"][1]; c2++) {
  35427. let value;
  35428. if (r2 + "_" + c2 in dynamicArray_compute) {
  35429. value = dynamicArray_compute[r2 + "_" + c2];
  35430. } else {
  35431. value = d[r2][c2];
  35432. }
  35433. row.push(value);
  35434. }
  35435. data.push(row);
  35436. }
  35437. return data;
  35438. }
  35439. function getdatabyselectionNoCopy(range2) {
  35440. if (range2 == null || range2["row"] == null || range2["row"].length == 0) {
  35441. return [];
  35442. }
  35443. let data = [];
  35444. for (let r2 = range2["row"][0]; r2 <= range2["row"][1]; r2++) {
  35445. let row = [];
  35446. if (store_default.config["rowhidden"] != null && store_default.config["rowhidden"][r2] != null) {
  35447. continue;
  35448. }
  35449. for (let c2 = range2["column"][0]; c2 <= range2["column"][1]; c2++) {
  35450. let value = "";
  35451. if (store_default.flowdata[r2] != null && store_default.flowdata[r2][c2] != null) {
  35452. value = store_default.flowdata[r2][c2];
  35453. }
  35454. row.push(value);
  35455. }
  35456. data.push(row);
  35457. }
  35458. return data;
  35459. }
  35460. function getcellvalue(r2, c2, data, type) {
  35461. if (type == null) {
  35462. type = "v";
  35463. }
  35464. if (data == null) {
  35465. data = store_default.flowdata;
  35466. }
  35467. let d_value;
  35468. if (r2 != null && c2 != null) {
  35469. d_value = data[r2][c2];
  35470. } else if (r2 != null) {
  35471. d_value = data[r2];
  35472. } else if (c2 != null) {
  35473. let newData = data[0].map(function(col, i2) {
  35474. return data.map(function(row) {
  35475. return row[i2];
  35476. });
  35477. });
  35478. d_value = newData[c2];
  35479. } else {
  35480. return data;
  35481. }
  35482. let retv = d_value;
  35483. if (getObjType(d_value) == "object") {
  35484. retv = d_value[type];
  35485. if (type == "f" && retv != null) {
  35486. retv = formula_default.functionHTMLGenerate(retv);
  35487. } else if (type == "f") {
  35488. retv = d_value["v"];
  35489. } else if (d_value && d_value.ct && d_value.ct.t == "d") {
  35490. retv = d_value.m;
  35491. }
  35492. }
  35493. if (retv == void 0) {
  35494. retv = null;
  35495. }
  35496. return retv;
  35497. }
  35498. function datagridgrowth(data, addr, addc, iscallback) {
  35499. if (addr <= 0 && addc <= 0) {
  35500. return data;
  35501. }
  35502. if (addr <= 0) {
  35503. addr = 0;
  35504. }
  35505. if (addc <= 0) {
  35506. addc = 0;
  35507. }
  35508. let dataClen = 0;
  35509. if (data.length == 0) {
  35510. data = [];
  35511. dataClen = 0;
  35512. } else {
  35513. dataClen = data[0].length;
  35514. }
  35515. let coladd = [];
  35516. for (let c2 = 0; c2 < addc; c2++) {
  35517. coladd.push(null);
  35518. }
  35519. let rowadd = [];
  35520. for (let r2 = 0; r2 < dataClen + addc; r2++) {
  35521. rowadd.push(null);
  35522. }
  35523. for (let r2 = 0; r2 < data.length; r2++) {
  35524. data[r2] = [].concat(data[r2].concat(coladd));
  35525. }
  35526. for (let r2 = 0; r2 < addr; r2++) {
  35527. data.push([].concat(rowadd));
  35528. }
  35529. if (!!iscallback) {
  35530. server_default.saveParam("all", store_default.currentSheetIndex, data.length, {"k": "row"});
  35531. server_default.saveParam("all", store_default.currentSheetIndex, data[0].length, {"k": "column"});
  35532. }
  35533. return data;
  35534. }
  35535. function getcellFormula(r2, c2, i2, data) {
  35536. let cell;
  35537. if (data != null) {
  35538. cell = data[r2][c2];
  35539. } else {
  35540. cell = getOrigincell(r2, c2, i2);
  35541. }
  35542. if (cell == null) {
  35543. return null;
  35544. }
  35545. return cell.f;
  35546. }
  35547. function getOrigincell(r2, c2, i2) {
  35548. if (r2 == null || c2 == null) {
  35549. return;
  35550. }
  35551. let data;
  35552. if (i2 == null) {
  35553. data = store_default.flowdata;
  35554. } else {
  35555. let sheet = sheetmanage_default.getSheetByIndex(i2);
  35556. data = sheet.data;
  35557. }
  35558. if (!data || !data[r2] || !data[r2][c2]) {
  35559. return;
  35560. }
  35561. return data[r2][c2];
  35562. }
  35563. function getRealCellValue(r2, c2) {
  35564. let value = getcellvalue(r2, c2, null, "m");
  35565. if (value == null) {
  35566. value = getcellvalue(r2, c2);
  35567. if (value == null) {
  35568. let ct = getcellvalue(r2, c2, null, "ct");
  35569. if (isInlineStringCT(ct)) {
  35570. value = ct.s;
  35571. }
  35572. }
  35573. }
  35574. return value;
  35575. }
  35576. function getInlineStringNoStyle(r2, c2) {
  35577. let ct = getcellvalue(r2, c2, null, "ct");
  35578. if (isInlineStringCT(ct)) {
  35579. let strings = ct.s, value = "";
  35580. for (let i2 = 0; i2 < strings.length; i2++) {
  35581. let strObj = strings[i2];
  35582. if (strObj.v != null) {
  35583. value += strObj.v;
  35584. }
  35585. }
  35586. return value;
  35587. }
  35588. return "";
  35589. }
  35590. function getInlineStringStyle(r2, c2, data) {
  35591. let ct = getcellvalue(r2, c2, data, "ct");
  35592. if (data == null) {
  35593. data = store_default.flowdata;
  35594. }
  35595. let cell = data[r2][c2];
  35596. if (isInlineStringCT(ct)) {
  35597. let strings = ct.s, value = "";
  35598. for (let i2 = 0; i2 < strings.length; i2++) {
  35599. let strObj = strings[i2];
  35600. if (strObj.v != null) {
  35601. let style = getFontStyleByCell(strObj);
  35602. value += "<span index='" + i2 + "' style='" + style + "'>" + strObj.v + "</span>";
  35603. }
  35604. }
  35605. return value;
  35606. }
  35607. return "";
  35608. }
  35609. function getFontStyleByCell(cell, checksAF, checksCF, isCheck = true) {
  35610. if (cell == null) {
  35611. return;
  35612. }
  35613. let style = "";
  35614. const _locale = locale_default();
  35615. const locale_fontarray = _locale.fontarray;
  35616. for (let key in cell) {
  35617. let value = cell[key];
  35618. if (isCheck) {
  35619. value = checkstatusByCell(cell, key);
  35620. }
  35621. if (key == "bl" && value != "0") {
  35622. style += "font-weight: bold;";
  35623. }
  35624. if (key == "it" && value != "0") {
  35625. style += "font-style:italic;";
  35626. }
  35627. if (key == "ff") {
  35628. let f = value;
  35629. if (!isNaN(parseInt(value))) {
  35630. f = locale_fontarray[parseInt(value)];
  35631. } else {
  35632. f = value;
  35633. }
  35634. style += "font-family: " + f + ";";
  35635. }
  35636. if (key == "fs") {
  35637. style += "font-size: " + value + "pt;";
  35638. }
  35639. if (key == "fc" && value != "#000000" || checksAF != null || checksCF != null && checksCF["textColor"] != null) {
  35640. if (checksCF != null && checksCF["textColor"] != null) {
  35641. style += "color: " + checksCF["textColor"] + ";";
  35642. } else if (checksAF != null) {
  35643. style += "color: " + checksAF[0] + ";";
  35644. } else {
  35645. style += "color: " + value + ";";
  35646. }
  35647. }
  35648. if (key == "cl" && value != "0") {
  35649. style += "text-decoration: line-through;";
  35650. }
  35651. }
  35652. return style;
  35653. }
  35654. function checkstatusByCell(cell, a) {
  35655. let foucsStatus = cell;
  35656. let tf = {"bl": 1, "it": 1, "ff": 1, "cl": 1, "un": 1};
  35657. if (a in tf || a == "fs" && isInlineStringCell(cell)) {
  35658. if (foucsStatus == null) {
  35659. foucsStatus = "0";
  35660. } else {
  35661. foucsStatus = foucsStatus[a];
  35662. if (foucsStatus == null) {
  35663. foucsStatus = "0";
  35664. }
  35665. }
  35666. } else if (a == "fc") {
  35667. if (foucsStatus == null) {
  35668. foucsStatus = "#000000";
  35669. } else {
  35670. foucsStatus = foucsStatus[a];
  35671. if (foucsStatus == null) {
  35672. foucsStatus = "#000000";
  35673. }
  35674. if (foucsStatus.indexOf("rgba") > -1) {
  35675. foucsStatus = rgbTohex(foucsStatus);
  35676. }
  35677. }
  35678. } else if (a == "bg") {
  35679. if (foucsStatus == null) {
  35680. foucsStatus = null;
  35681. } else {
  35682. foucsStatus = foucsStatus[a];
  35683. if (foucsStatus == null) {
  35684. foucsStatus = null;
  35685. } else if (foucsStatus.toString().indexOf("rgba") > -1) {
  35686. foucsStatus = rgbTohex(foucsStatus);
  35687. }
  35688. }
  35689. } else if (a.substr(0, 2) == "bs") {
  35690. if (foucsStatus == null) {
  35691. foucsStatus = "none";
  35692. } else {
  35693. foucsStatus = foucsStatus[a];
  35694. if (foucsStatus == null) {
  35695. foucsStatus = "none";
  35696. }
  35697. }
  35698. } else if (a.substr(0, 2) == "bc") {
  35699. if (foucsStatus == null) {
  35700. foucsStatus = "#000000";
  35701. } else {
  35702. foucsStatus = foucsStatus[a];
  35703. if (foucsStatus == null) {
  35704. foucsStatus = "#000000";
  35705. }
  35706. }
  35707. } else if (a == "ht") {
  35708. if (foucsStatus == null) {
  35709. foucsStatus = "1";
  35710. } else {
  35711. foucsStatus = foucsStatus[a];
  35712. if (foucsStatus == null) {
  35713. foucsStatus = "1";
  35714. }
  35715. }
  35716. if (["0", "1", "2"].indexOf(foucsStatus.toString()) == -1) {
  35717. foucsStatus = "1";
  35718. }
  35719. } else if (a == "vt") {
  35720. if (foucsStatus == null) {
  35721. foucsStatus = "0";
  35722. } else {
  35723. foucsStatus = foucsStatus[a];
  35724. if (foucsStatus == null) {
  35725. foucsStatus = "0";
  35726. }
  35727. }
  35728. if (["0", "1", "2"].indexOf(foucsStatus.toString()) == -1) {
  35729. foucsStatus = "0";
  35730. }
  35731. } else if (a == "ct") {
  35732. if (foucsStatus == null) {
  35733. foucsStatus = null;
  35734. } else {
  35735. foucsStatus = foucsStatus[a];
  35736. if (foucsStatus == null) {
  35737. foucsStatus = null;
  35738. }
  35739. }
  35740. } else if (a == "fs") {
  35741. if (foucsStatus == null) {
  35742. foucsStatus = String(store_default.defaultFontSize);
  35743. } else {
  35744. foucsStatus = foucsStatus[a];
  35745. if (foucsStatus == null) {
  35746. foucsStatus = String(store_default.defaultFontSize);
  35747. }
  35748. }
  35749. } else if (a == "tb") {
  35750. if (foucsStatus == null) {
  35751. foucsStatus = "0";
  35752. } else {
  35753. foucsStatus = foucsStatus[a];
  35754. if (foucsStatus == null) {
  35755. foucsStatus = "0";
  35756. }
  35757. }
  35758. } else if (a == "tr") {
  35759. if (foucsStatus == null) {
  35760. foucsStatus = "0";
  35761. } else {
  35762. foucsStatus = foucsStatus[a];
  35763. if (foucsStatus == null) {
  35764. foucsStatus = "0";
  35765. }
  35766. }
  35767. } else if (a == "rt") {
  35768. if (foucsStatus == null) {
  35769. foucsStatus = null;
  35770. } else {
  35771. foucsStatus = foucsStatus[a];
  35772. if (foucsStatus == null) {
  35773. foucsStatus = null;
  35774. }
  35775. }
  35776. }
  35777. return foucsStatus;
  35778. }
  35779. function textTrim(x) {
  35780. if (x == null || x.length == 0) {
  35781. return x;
  35782. }
  35783. return x.replace(/^\s+|\s+$/gm, "");
  35784. }
  35785. var init_getdata = __esm({
  35786. "src/global/getdata.js"() {
  35787. init_util();
  35788. init_get();
  35789. init_server();
  35790. init_formula();
  35791. init_editor();
  35792. init_dynamicArray();
  35793. init_sheetmanage();
  35794. init_inlineString();
  35795. init_locale();
  35796. init_store();
  35797. }
  35798. });
  35799. // src/controllers/sheetSearch.js
  35800. function luckysheetbinary_search(arr, key) {
  35801. let low = 0, high = arr.length - 1;
  35802. while (low <= high) {
  35803. let mid = parseInt((high + low) / 2);
  35804. if (key < arr[mid] && (mid == 0 || key >= arr[mid - 1])) {
  35805. return mid;
  35806. } else if (key >= arr[mid]) {
  35807. low = mid + 1;
  35808. } else if (key < arr[mid]) {
  35809. high = mid - 1;
  35810. } else {
  35811. return -1;
  35812. }
  35813. }
  35814. }
  35815. function luckysheetorder_search(arr, y) {
  35816. let i2 = 0, row = 0, row_pre = 0, row_index = -1, i_ed = arr.length - 1;
  35817. while (i2 < arr.length && i_ed >= 0 && i_ed >= i2) {
  35818. row = arr[i_ed];
  35819. if (i_ed == 0) {
  35820. row_pre = 0;
  35821. } else {
  35822. row_pre = arr[i_ed - 1];
  35823. }
  35824. if (y >= row_pre && y < row) {
  35825. row_index = i_ed;
  35826. break;
  35827. }
  35828. row = arr[i2];
  35829. if (i2 == 0) {
  35830. row_pre = 0;
  35831. } else {
  35832. row_pre = arr[i2 - 1];
  35833. }
  35834. if (y >= row_pre && y < row) {
  35835. row_index = i2;
  35836. break;
  35837. }
  35838. i2++;
  35839. i_ed--;
  35840. }
  35841. return row_index;
  35842. }
  35843. function luckysheet_searcharray(arr, y) {
  35844. let index2 = arr.length - 1;
  35845. if (arr.length < 40 || y <= arr[20] || y >= arr[index2 - 20]) {
  35846. index2 = luckysheetorder_search(arr, y);
  35847. } else {
  35848. index2 = luckysheetbinary_search(arr, y);
  35849. }
  35850. return index2;
  35851. }
  35852. var init_sheetSearch = __esm({
  35853. "src/controllers/sheetSearch.js"() {
  35854. }
  35855. });
  35856. // src/global/location.js
  35857. function rowLocationByIndex(row_index) {
  35858. let row = 0, row_pre = 0;
  35859. row = store_default.visibledatarow[row_index];
  35860. if (row_index == 0) {
  35861. row_pre = 0;
  35862. } else {
  35863. row_pre = store_default.visibledatarow[row_index - 1];
  35864. }
  35865. return [row_pre, row, row_index];
  35866. }
  35867. function rowLocation(y) {
  35868. let row_index = luckysheet_searcharray(store_default.visibledatarow, y);
  35869. if (row_index == -1 && y > 0) {
  35870. row_index = store_default.visibledatarow.length - 1;
  35871. } else if (row_index == -1 && y <= 0) {
  35872. row_index = 0;
  35873. }
  35874. return rowLocationByIndex(row_index);
  35875. }
  35876. function colLocationByIndex(col_index) {
  35877. let col = 0, col_pre = 0;
  35878. col = store_default.visibledatacolumn[col_index];
  35879. if (col_index == 0) {
  35880. col_pre = 0;
  35881. } else {
  35882. col_pre = store_default.visibledatacolumn[col_index - 1];
  35883. }
  35884. return [col_pre, col, col_index];
  35885. }
  35886. function colSpanLocationByIndex(col_index, span) {
  35887. let col = 0, col_pre = 0;
  35888. col = store_default.visibledatacolumn[col_index + span - 1];
  35889. if (col_index == 0) {
  35890. col_pre = 0;
  35891. } else {
  35892. col_pre = store_default.visibledatacolumn[col_index - 1];
  35893. }
  35894. return [col_pre, col, col_index];
  35895. }
  35896. function colLocation(x) {
  35897. let col_index = luckysheet_searcharray(store_default.visibledatacolumn, x);
  35898. if (col_index == -1 && x > 0) {
  35899. col_index = store_default.visibledatacolumn.length - 1;
  35900. } else if (col_index == -1 && x <= 0) {
  35901. col_index = 0;
  35902. }
  35903. return colLocationByIndex(col_index);
  35904. }
  35905. function mouseposition(x, y) {
  35906. let container_offset = $("#" + store_default.container).offset();
  35907. let newX = x - container_offset.left - store_default.rowHeaderWidth, newY = y - container_offset.top - store_default.infobarHeight - store_default.toolbarHeight - store_default.calculatebarHeight - store_default.columnHeaderHeight;
  35908. return [newX, newY];
  35909. }
  35910. var init_location = __esm({
  35911. "src/global/location.js"() {
  35912. init_sheetSearch();
  35913. init_store();
  35914. }
  35915. });
  35916. // src/global/getRowlen.js
  35917. function rowlenByRange(d, r1, r2, cfg) {
  35918. var _a;
  35919. let cfg_clone = $.extend(true, {}, cfg);
  35920. if (cfg_clone["rowlen"] == null) {
  35921. cfg_clone["rowlen"] = {};
  35922. }
  35923. if (cfg_clone["customHeight"] == null) {
  35924. cfg_clone["customHeight"] = {};
  35925. }
  35926. let canvas = $("#luckysheetTableContent").get(0).getContext("2d");
  35927. canvas.textBaseline = "top";
  35928. for (let r3 = r1; r3 <= r2; r3++) {
  35929. if (cfg_clone["rowhidden"] != null && cfg_clone["rowhidden"][r3] != null) {
  35930. continue;
  35931. }
  35932. let currentRowLen = store_default.defaultrowlen;
  35933. if (cfg_clone["customHeight"][r3] == 1) {
  35934. continue;
  35935. }
  35936. delete cfg_clone["rowlen"][r3];
  35937. for (let c2 = 0; c2 < d[r3].length; c2++) {
  35938. let cell = d[r3][c2];
  35939. if (cell == null) {
  35940. continue;
  35941. }
  35942. if (cell != null && (cell.v != null || isInlineStringCell(cell))) {
  35943. let cellWidth;
  35944. if (cell.mc) {
  35945. if (c2 === cell.mc.c) {
  35946. let st_cellWidth = colLocationByIndex(c2)[0];
  35947. let ed_cellWidth = colLocationByIndex(cell.mc.c + cell.mc.cs - 1)[1];
  35948. cellWidth = ed_cellWidth - st_cellWidth - 2;
  35949. } else {
  35950. continue;
  35951. }
  35952. } else {
  35953. cellWidth = colLocationByIndex(c2)[1] - colLocationByIndex(c2)[0] - 2;
  35954. }
  35955. let textInfo = getCellTextInfo(cell, canvas, {
  35956. r: r3,
  35957. c: c2,
  35958. cellWidth
  35959. });
  35960. let computeRowlen = 0;
  35961. if (textInfo != null) {
  35962. computeRowlen = textInfo.textHeightAll + 2;
  35963. }
  35964. if (computeRowlen > currentRowLen) {
  35965. currentRowLen = computeRowlen;
  35966. }
  35967. }
  35968. }
  35969. currentRowLen = currentRowLen / store_default.zoomRatio;
  35970. if (currentRowLen != store_default.defaultrowlen) {
  35971. cfg_clone["rowlen"][r3] = currentRowLen;
  35972. } else {
  35973. if ((_a = cfg["rowlen"]) == null ? void 0 : _a[r3]) {
  35974. cfg_clone["rowlen"][r3] = cfg["rowlen"][r3];
  35975. }
  35976. }
  35977. }
  35978. return cfg_clone;
  35979. }
  35980. function computeRowlenByContent(d, r2) {
  35981. let currentRowLen = 0;
  35982. let canvas = $("#luckysheetTableContent").get(0).getContext("2d");
  35983. canvas.textBaseline = "top";
  35984. for (let c2 = 0; c2 < d[r2].length; c2++) {
  35985. let cell = d[r2][c2];
  35986. if (cell == null) {
  35987. continue;
  35988. }
  35989. if (cell.mc != null) {
  35990. if (cell.mc.rs !== 1) {
  35991. continue;
  35992. }
  35993. }
  35994. if (store_default.config["colhidden"] != null && store_default.config["colhidden"][c2] != null) {
  35995. continue;
  35996. }
  35997. if (cell != null && (cell.v != null || isInlineStringCell(cell))) {
  35998. let cellWidth = computeCellWidth(cell, c2);
  35999. let textInfo = getCellTextInfo(cell, canvas, {
  36000. r: r2,
  36001. c: c2,
  36002. cellWidth
  36003. });
  36004. let computeRowlen = 0;
  36005. if (textInfo != null) {
  36006. computeRowlen = textInfo.textHeightAll + 2;
  36007. }
  36008. if (computeRowlen > currentRowLen) {
  36009. currentRowLen = computeRowlen;
  36010. }
  36011. }
  36012. }
  36013. return currentRowLen;
  36014. }
  36015. function computeCellWidth(cell, col_index) {
  36016. let colLocationArr = colLocationByIndex(col_index);
  36017. if (cell.mc && cell.mc.cs !== 1) {
  36018. colLocationArr = colSpanLocationByIndex(col_index, cell.mc.cs);
  36019. }
  36020. return colLocationArr[1] - colLocationArr[0] - 2;
  36021. }
  36022. function computeColWidthByContent(d, c2, rh) {
  36023. let currentColLen = 0;
  36024. let rowlenArr = computeRowlenArr(rh, c2);
  36025. let canvas = $("#luckysheetTableContent").get(0).getContext("2d");
  36026. canvas.textBaseline = "top";
  36027. for (var i2 = 0; i2 < d.length; i2++) {
  36028. var cell = d[i2][c2];
  36029. if (cell != null && (cell.v != null || isInlineStringCell(cell))) {
  36030. let cellHeight = rowlenArr[c2];
  36031. let textInfo = getCellTextInfo(cell, canvas, {
  36032. r: i2,
  36033. c: c2,
  36034. cellHeight
  36035. });
  36036. let computeCollen = 0;
  36037. if (textInfo != null) {
  36038. computeCollen = textInfo.textWidthAll + 2;
  36039. }
  36040. if (computeCollen > currentColLen) {
  36041. currentColLen = computeCollen;
  36042. }
  36043. }
  36044. }
  36045. return currentColLen;
  36046. }
  36047. function computeRowlenArr(rowHeight, cfg) {
  36048. let rowlenArr = [];
  36049. let rh_height = 0;
  36050. for (let i2 = 0; i2 < rowHeight; i2++) {
  36051. let rowlen = store_default.defaultrowlen;
  36052. if (cfg["rowlen"] != null && cfg["rowlen"][i2] != null) {
  36053. rowlen = cfg["rowlen"][i2];
  36054. }
  36055. if (cfg["rowhidden"] != null && cfg["rowhidden"][i2] != null) {
  36056. rowlen = cfg["rowhidden"][i2];
  36057. rowlenArr.push(rh_height);
  36058. continue;
  36059. } else {
  36060. rh_height += rowlen + 1;
  36061. }
  36062. rowlenArr.push(rh_height);
  36063. }
  36064. return rowlenArr;
  36065. }
  36066. function getMeasureText(value, ctx, fontset) {
  36067. let mtc = store_default.measureTextCache[value + "_" + ctx.font];
  36068. if (fontset != null) {
  36069. mtc = store_default.measureTextCache[value + "_" + fontset];
  36070. }
  36071. if (mtc != null) {
  36072. return mtc;
  36073. } else {
  36074. if (fontset != null) {
  36075. let preFont = ctx.font;
  36076. ctx.font = fontset;
  36077. }
  36078. let measureText = ctx.measureText(value), cache = {};
  36079. cache.width = measureText.width;
  36080. if (fontset != null) {
  36081. ctx.font = fontset;
  36082. }
  36083. cache.actualBoundingBoxDescent = measureText.actualBoundingBoxDescent;
  36084. cache.actualBoundingBoxAscent = measureText.actualBoundingBoxAscent;
  36085. if (cache.actualBoundingBoxDescent == null || cache.actualBoundingBoxAscent == null || isNaN(cache.actualBoundingBoxDescent) || isNaN(cache.actualBoundingBoxAscent)) {
  36086. let commonWord = "M";
  36087. if (hasChinaword(value)) {
  36088. commonWord = "\u7530";
  36089. }
  36090. let oneLineTextHeight = menuButton_default.getTextSize(commonWord, ctx.font)[1] * 0.8;
  36091. if (ctx.textBaseline == "top") {
  36092. cache.actualBoundingBoxDescent = oneLineTextHeight;
  36093. cache.actualBoundingBoxAscent = 0;
  36094. } else if (ctx.textBaseline == "middle") {
  36095. cache.actualBoundingBoxDescent = oneLineTextHeight / 2;
  36096. cache.actualBoundingBoxAscent = oneLineTextHeight / 2;
  36097. } else {
  36098. cache.actualBoundingBoxDescent = 0;
  36099. cache.actualBoundingBoxAscent = oneLineTextHeight;
  36100. }
  36101. }
  36102. if (ctx.textBaseline == "alphabetic") {
  36103. let descText = "gjpqy", matchText = "abcdABCD";
  36104. let descTextMeasure = store_default.measureTextCache[descText + "_" + ctx.font];
  36105. if (fontset != null) {
  36106. descTextMeasure = store_default.measureTextCache[descText + "_" + fontset];
  36107. }
  36108. let matchTextMeasure = store_default.measureTextCache[matchText + "_" + ctx.font];
  36109. if (fontset != null) {
  36110. matchTextMeasure = store_default.measureTextCache[matchText + "_" + fontset];
  36111. }
  36112. if (descTextMeasure == null) {
  36113. descTextMeasure = ctx.measureText(descText);
  36114. }
  36115. if (matchTextMeasure == null) {
  36116. matchTextMeasure = ctx.measureText(matchText);
  36117. }
  36118. if (cache.actualBoundingBoxDescent <= matchTextMeasure.actualBoundingBoxDescent) {
  36119. cache.actualBoundingBoxDescent = descTextMeasure.actualBoundingBoxDescent;
  36120. if (cache.actualBoundingBoxDescent == null) {
  36121. cache.actualBoundingBoxDescent = 0;
  36122. }
  36123. }
  36124. }
  36125. cache.width *= store_default.zoomRatio;
  36126. cache.actualBoundingBoxDescent *= store_default.zoomRatio;
  36127. cache.actualBoundingBoxAscent *= store_default.zoomRatio;
  36128. store_default.measureTextCache[value + "_" + store_default.zoomRatio + "_" + ctx.font] = cache;
  36129. return cache;
  36130. }
  36131. }
  36132. function isSupportBoundingBox(ctx) {
  36133. let measureText = ctx.measureText("\u7530");
  36134. if (measureText.actualBoundingBoxAscent == null) {
  36135. return false;
  36136. }
  36137. return true;
  36138. }
  36139. function getCellTextInfo(cell, ctx, option) {
  36140. let cellWidth = option.cellWidth;
  36141. let cellHeight = option.cellHeight;
  36142. let isMode = "", isModeSplit = "";
  36143. if (cellWidth == null) {
  36144. isMode = "onlyWidth";
  36145. isModeSplit = "_";
  36146. }
  36147. let textInfo = store_default.measureTextCellInfoCache[option.r + "_" + option.c + isModeSplit + isMode];
  36148. if (textInfo != null) {
  36149. return textInfo;
  36150. }
  36151. let space_width = option.space_width, space_height = option.space_height;
  36152. if (space_width == null) {
  36153. space_width = 2;
  36154. }
  36155. if (space_height == null) {
  36156. space_height = 2;
  36157. }
  36158. let horizonAlign = checkstatusByCell(cell, "ht");
  36159. let verticalAlign = checkstatusByCell(cell, "vt");
  36160. let tb = checkstatusByCell(cell, "tb");
  36161. let tr = checkstatusByCell(cell, "tr");
  36162. let rt = checkstatusByCell(cell, "rt");
  36163. let isRotateUp = 1, isRotateDown = 0;
  36164. if (rt == null) {
  36165. if (tr == "0") {
  36166. rt = 0;
  36167. } else if (tr == "1") {
  36168. rt = 45;
  36169. } else if (tr == "4") {
  36170. rt = 90;
  36171. } else if (tr == "2") {
  36172. rt = 135;
  36173. } else if (tr == "5") {
  36174. rt = 180;
  36175. }
  36176. if (rt == null) {
  36177. rt = 0;
  36178. }
  36179. }
  36180. if (rt > 180 || rt < 0) {
  36181. rt = 0;
  36182. }
  36183. rt = parseInt(rt);
  36184. if (rt > 90) {
  36185. rt = 90 - rt;
  36186. isRotateUp = 0;
  36187. isRotateDown = 1;
  36188. }
  36189. ctx.textAlign = "start";
  36190. let textContent = {};
  36191. textContent.values = [];
  36192. let fontset, cancelLine = "0", underLine = "0", fontSize = 11, isInline = false, value, inlineStringArr = [];
  36193. if (isInlineStringCell(cell)) {
  36194. let sharedStrings = cell.ct.s, similarIndex = 0;
  36195. for (let i2 = 0; i2 < sharedStrings.length; i2++) {
  36196. let shareCell = sharedStrings[i2];
  36197. let scfontset = luckysheetfontformat(shareCell);
  36198. let fc = shareCell.fc, cl = shareCell.cl, un = shareCell.un, v = shareCell.v, fs = shareCell.fs;
  36199. v = v.replace(/\r\n/g, "_x000D_").replace(/&#13;&#10;/g, "_x000D_").replace(/\r/g, "_x000D_").replace(/\n/g, "_x000D_");
  36200. let splitArr = v.split("_x000D_");
  36201. for (let x = 0; x < splitArr.length; x++) {
  36202. let newValue = splitArr[x];
  36203. if (newValue == "" && x != splitArr.length - 1) {
  36204. inlineStringArr.push({
  36205. fontset: scfontset,
  36206. fc: fc == null ? "#000" : fc,
  36207. cl: cl == null ? 0 : cl,
  36208. un: un == null ? 0 : un,
  36209. wrap: true,
  36210. fs: fs == null ? 11 : fs
  36211. });
  36212. similarIndex++;
  36213. } else {
  36214. let newValueArray = newValue.split("");
  36215. for (let n = 0; n < newValueArray.length; n++) {
  36216. let nv = newValueArray[n];
  36217. inlineStringArr.push({
  36218. fontset: scfontset,
  36219. fc: fc == null ? "#000" : fc,
  36220. cl: cl == null ? 0 : cl,
  36221. un: un == null ? 0 : un,
  36222. v: nv,
  36223. si: similarIndex,
  36224. fs: fs == null ? 11 : fs
  36225. });
  36226. }
  36227. if (x != splitArr.length - 1) {
  36228. inlineStringArr.push({
  36229. fontset: scfontset,
  36230. fc: fc == null ? "#000" : fc,
  36231. cl: cl == null ? 0 : cl,
  36232. un: un == null ? 0 : un,
  36233. wrap: true,
  36234. fs: fs == null ? 11 : fs
  36235. });
  36236. similarIndex++;
  36237. }
  36238. }
  36239. }
  36240. similarIndex++;
  36241. }
  36242. isInline = true;
  36243. } else {
  36244. fontset = luckysheetfontformat(cell);
  36245. ctx.font = fontset;
  36246. cancelLine = checkstatusByCell(cell, "cl");
  36247. underLine = checkstatusByCell(cell, "un");
  36248. fontSize = checkstatusByCell(cell, "fs");
  36249. if (cell instanceof Object) {
  36250. value = cell.m;
  36251. if (value == null) {
  36252. value = cell.v;
  36253. }
  36254. } else {
  36255. value = cell;
  36256. }
  36257. if (isRealNull(value)) {
  36258. return null;
  36259. }
  36260. }
  36261. if (tr == "3") {
  36262. ctx.textBaseline = "top";
  36263. let textW_all = 0;
  36264. let textH_all = 0;
  36265. let colIndex = 0, textH_all_cache = 0, textH_all_Column = {}, textH_all_ColumnHeight = [];
  36266. if (isInline) {
  36267. let preShareCell = null;
  36268. for (let i2 = 0; i2 < inlineStringArr.length; i2++) {
  36269. let shareCell = inlineStringArr[i2];
  36270. let value2 = shareCell.v, showValue = shareCell.v;
  36271. if (shareCell.wrap === true) {
  36272. value2 = "M";
  36273. showValue = "";
  36274. if (preShareCell != null && preShareCell.wrap !== true && i2 < inlineStringArr.length - 1) {
  36275. textH_all_ColumnHeight.push(textH_all_cache);
  36276. textH_all_cache = 0;
  36277. colIndex += 1;
  36278. preShareCell = shareCell;
  36279. continue;
  36280. }
  36281. }
  36282. let measureText = getMeasureText(value2, ctx, shareCell.fontset);
  36283. let textW = measureText.width + space_width;
  36284. let textH = measureText.actualBoundingBoxAscent + measureText.actualBoundingBoxDescent + space_height;
  36285. textH_all_cache += textH;
  36286. if (tb == "2" && !shareCell.wrap) {
  36287. if (textH_all_cache > cellHeight && textH_all_Column[colIndex] != null) {
  36288. textH_all_ColumnHeight.push(textH_all_cache - textH);
  36289. textH_all_cache = textH;
  36290. colIndex += 1;
  36291. }
  36292. }
  36293. if (i2 == inlineStringArr.length - 1) {
  36294. textH_all_ColumnHeight.push(textH_all_cache);
  36295. }
  36296. if (textH_all_Column[colIndex] == null) {
  36297. textH_all_Column[colIndex] = [];
  36298. }
  36299. let item2 = {
  36300. content: showValue,
  36301. style: shareCell,
  36302. width: textW,
  36303. height: textH,
  36304. left: 0,
  36305. top: 0,
  36306. colIndex,
  36307. asc: measureText.actualBoundingBoxAscent,
  36308. desc: measureText.actualBoundingBoxDescent,
  36309. inline: true
  36310. };
  36311. if (shareCell.wrap === true) {
  36312. item2.wrap = true;
  36313. }
  36314. textH_all_Column[colIndex].push(item2);
  36315. console.log("normal", i2, colIndex, shareCell, preShareCell, textH_all_Column);
  36316. preShareCell = shareCell;
  36317. }
  36318. } else {
  36319. let measureText = getMeasureText(value, ctx);
  36320. let textHeight = measureText.actualBoundingBoxDescent + measureText.actualBoundingBoxAscent;
  36321. value = value.toString();
  36322. let vArr = [];
  36323. if (value.length > 1) {
  36324. vArr = value.split("");
  36325. } else {
  36326. vArr.push(value);
  36327. }
  36328. let oneWordWidth = getMeasureText(vArr[0], ctx).width;
  36329. for (let i2 = 0; i2 < vArr.length; i2++) {
  36330. let textW = oneWordWidth + space_width;
  36331. let textH = textHeight + space_height;
  36332. textH_all_cache += textH;
  36333. if (tb == "2") {
  36334. if (textH_all_cache > cellHeight && textH_all_Column[colIndex] != null) {
  36335. textH_all_ColumnHeight.push(textH_all_cache - textH);
  36336. textH_all_cache = textH;
  36337. colIndex += 1;
  36338. }
  36339. }
  36340. if (i2 == vArr.length - 1) {
  36341. textH_all_ColumnHeight.push(textH_all_cache);
  36342. }
  36343. if (textH_all_Column[colIndex] == null) {
  36344. textH_all_Column[colIndex] = [];
  36345. }
  36346. textH_all_Column[colIndex].push({
  36347. content: vArr[i2],
  36348. style: fontset,
  36349. width: textW,
  36350. height: textH,
  36351. left: 0,
  36352. top: 0,
  36353. colIndex,
  36354. asc: measureText.actualBoundingBoxAscent,
  36355. desc: measureText.actualBoundingBoxDescent
  36356. });
  36357. }
  36358. }
  36359. let textH_all_ColumWidth = [];
  36360. for (let i2 = 0; i2 < textH_all_ColumnHeight.length; i2++) {
  36361. let columnHeight = textH_all_ColumnHeight[i2];
  36362. let col = textH_all_Column[i2], colMaxW = 0;
  36363. for (let c2 = 0; c2 < col.length; c2++) {
  36364. let word = col[c2];
  36365. colMaxW = Math.max(colMaxW, word.width);
  36366. }
  36367. textH_all_ColumWidth.push(colMaxW);
  36368. textW_all += colMaxW;
  36369. textH_all = Math.max(textH_all, columnHeight);
  36370. }
  36371. textContent.type = "verticalWrap";
  36372. textContent.textWidthAll = textW_all;
  36373. textContent.textHeightAll = textH_all;
  36374. if (isMode == "onlyWidth") {
  36375. return textContent;
  36376. }
  36377. let cumColumnWidth = 0;
  36378. for (let i2 = 0; i2 < textH_all_ColumnHeight.length; i2++) {
  36379. let columnHeight = textH_all_ColumnHeight[i2];
  36380. let columnWidth = textH_all_ColumWidth[i2];
  36381. let col = textH_all_Column[i2];
  36382. let cumWordHeight = 0;
  36383. for (let c2 = 0; c2 < col.length; c2++) {
  36384. let word = col[c2];
  36385. let left = space_width + cumColumnWidth;
  36386. if (horizonAlign == "0") {
  36387. left = cellWidth / 2 + cumColumnWidth - textW_all / 2 + space_width * textH_all_ColumnHeight.length;
  36388. } else if (horizonAlign == "2") {
  36389. left = cellWidth + cumColumnWidth - textW_all + space_width;
  36390. }
  36391. let top = cellHeight - space_height + cumWordHeight - columnHeight;
  36392. if (verticalAlign == "0") {
  36393. top = cellHeight / 2 + cumWordHeight - columnHeight / 2;
  36394. } else if (verticalAlign == "1") {
  36395. top = space_height + cumWordHeight;
  36396. }
  36397. cumWordHeight += word.height;
  36398. word.left = left;
  36399. word.top = top;
  36400. drawLineInfo(word, cancelLine, underLine, {
  36401. width: columnWidth,
  36402. height: word.height,
  36403. left,
  36404. top: top + word.height - space_height,
  36405. asc: word.height,
  36406. desc: 0,
  36407. fs: fontSize
  36408. });
  36409. textContent.values.push(word);
  36410. }
  36411. cumColumnWidth += columnWidth;
  36412. }
  36413. } else {
  36414. let supportBoundBox = isSupportBoundingBox(ctx);
  36415. if (supportBoundBox) {
  36416. ctx.textBaseline = "alphabetic";
  36417. } else {
  36418. ctx.textBaseline = "bottom";
  36419. }
  36420. if (tb == "2" || isInline) {
  36421. let textW_all = 0;
  36422. let textH_all = 0;
  36423. let textW_all_inner = 0;
  36424. let splitIndex = 0, text_all_cache = 0, text_all_split = {}, text_all_splitLen = [];
  36425. textContent.rotate = rt;
  36426. rt = Math.abs(rt);
  36427. let anchor = 0, preHeight = 0, preWidth = 0, preStr, preTextHeight, preTextWidth, preMeasureText, i2 = 1, wrapStyle = {}, spaceOrTwoByte = null, spaceOrTwoByteIndex = null;
  36428. if (isInline) {
  36429. while (i2 <= inlineStringArr.length) {
  36430. let shareCells = inlineStringArr.slice(anchor, i2);
  36431. if (shareCells[shareCells.length - 1].wrap === true) {
  36432. anchor = i2;
  36433. if (shareCells.length > 1) {
  36434. for (let s = 0; s < shareCells.length - 1; s++) {
  36435. let sc = shareCells[s];
  36436. let item2 = {
  36437. content: sc.v,
  36438. style: sc,
  36439. width: sc.measureText.width,
  36440. height: sc.measureText.actualBoundingBoxAscent + sc.measureText.actualBoundingBoxDescent,
  36441. left: 0,
  36442. top: 0,
  36443. splitIndex,
  36444. asc: sc.measureText.actualBoundingBoxAscent,
  36445. desc: sc.measureText.actualBoundingBoxDescent,
  36446. inline: true,
  36447. fs: sc.fs
  36448. };
  36449. text_all_split[splitIndex].push(item2);
  36450. }
  36451. }
  36452. if (shareCells.length == 1 || i2 == inlineStringArr.length) {
  36453. let sc = shareCells[0];
  36454. let measureText = getMeasureText("M", ctx, sc.fontset);
  36455. if (text_all_split[splitIndex] == null) {
  36456. text_all_split[splitIndex] = [];
  36457. }
  36458. text_all_split[splitIndex].push({
  36459. content: "",
  36460. style: sc,
  36461. width: measureText.width,
  36462. height: measureText.actualBoundingBoxAscent + measureText.actualBoundingBoxDescent,
  36463. left: 0,
  36464. top: 0,
  36465. splitIndex,
  36466. asc: measureText.actualBoundingBoxAscent,
  36467. desc: measureText.actualBoundingBoxDescent,
  36468. inline: true,
  36469. wrap: true,
  36470. fs: sc.fs
  36471. });
  36472. }
  36473. splitIndex += 1;
  36474. i2++;
  36475. continue;
  36476. }
  36477. let textWidth = 0, textHeight = 0;
  36478. for (let s = 0; s < shareCells.length; s++) {
  36479. let sc = shareCells[s];
  36480. if (sc.measureText == null) {
  36481. sc.measureText = getMeasureText(sc.v, ctx, sc.fontset);
  36482. }
  36483. textWidth += sc.measureText.width;
  36484. textHeight = Math.max(sc.measureText.actualBoundingBoxAscent + sc.measureText.actualBoundingBoxDescent);
  36485. }
  36486. let width = textWidth * Math.cos(rt * Math.PI / 180) + textHeight * Math.sin(rt * Math.PI / 180);
  36487. let height = textWidth * Math.sin(rt * Math.PI / 180) + textHeight * Math.cos(rt * Math.PI / 180);
  36488. let lastWord = shareCells[shareCells.length - 1];
  36489. if (lastWord.v == " " || checkWordByteLength(lastWord.v) == 2) {
  36490. spaceOrTwoByteIndex = i2;
  36491. }
  36492. if (rt != 0) {
  36493. console.log(height, space_height, cellHeight, shareCells, height + space_height > cellHeight);
  36494. if (height + space_height > cellHeight && text_all_split[splitIndex] != null && tb == "2" && i2 != inlineStringArr.length) {
  36495. if (spaceOrTwoByteIndex != null && spaceOrTwoByteIndex < i2) {
  36496. for (let s = 0; s < spaceOrTwoByteIndex - anchor; s++) {
  36497. let sc = shareCells[s];
  36498. text_all_split[splitIndex].push({
  36499. content: sc.v,
  36500. style: sc,
  36501. width: sc.measureText.width,
  36502. height: sc.measureText.actualBoundingBoxAscent + sc.measureText.actualBoundingBoxDescent,
  36503. left: 0,
  36504. top: 0,
  36505. splitIndex,
  36506. asc: sc.measureText.actualBoundingBoxAscent,
  36507. desc: sc.measureText.actualBoundingBoxDescent,
  36508. inline: true,
  36509. fs: sc.fs
  36510. });
  36511. }
  36512. anchor = spaceOrTwoByteIndex;
  36513. i2 = spaceOrTwoByteIndex + 1;
  36514. splitIndex += 1;
  36515. spaceOrTwoByteIndex = null;
  36516. } else {
  36517. anchor = i2 - 1;
  36518. for (let s = 0; s < shareCells.length - 1; s++) {
  36519. let sc = shareCells[s];
  36520. text_all_split[splitIndex].push({
  36521. content: sc.v,
  36522. style: sc,
  36523. width: sc.measureText.width,
  36524. height: sc.measureText.actualBoundingBoxAscent + sc.measureText.actualBoundingBoxDescent,
  36525. left: 0,
  36526. top: 0,
  36527. splitIndex,
  36528. asc: sc.measureText.actualBoundingBoxAscent,
  36529. desc: sc.measureText.actualBoundingBoxDescent,
  36530. inline: true,
  36531. fs: sc.fs
  36532. });
  36533. }
  36534. splitIndex += 1;
  36535. }
  36536. } else if (i2 == inlineStringArr.length) {
  36537. if (text_all_split[splitIndex] == null) {
  36538. text_all_split[splitIndex] = [];
  36539. }
  36540. for (let s = 0; s < shareCells.length; s++) {
  36541. let sc = shareCells[s];
  36542. text_all_split[splitIndex].push({
  36543. content: sc.v,
  36544. style: sc,
  36545. width: sc.measureText.width,
  36546. height: sc.measureText.actualBoundingBoxAscent + sc.measureText.actualBoundingBoxDescent,
  36547. left: 0,
  36548. top: 0,
  36549. splitIndex,
  36550. asc: sc.measureText.actualBoundingBoxAscent,
  36551. desc: sc.measureText.actualBoundingBoxDescent,
  36552. inline: true,
  36553. fs: sc.fs
  36554. });
  36555. }
  36556. break;
  36557. } else {
  36558. if (text_all_split[splitIndex] == null) {
  36559. text_all_split[splitIndex] = [];
  36560. }
  36561. i2++;
  36562. }
  36563. } else {
  36564. if (width + space_width > cellWidth && text_all_split[splitIndex] != null && tb == "2" && i2 != inlineStringArr.length) {
  36565. if (spaceOrTwoByteIndex != null && spaceOrTwoByteIndex < i2) {
  36566. for (let s = 0; s < spaceOrTwoByteIndex - anchor; s++) {
  36567. let sc = shareCells[s];
  36568. text_all_split[splitIndex].push({
  36569. content: sc.v,
  36570. style: sc,
  36571. width: sc.measureText.width,
  36572. height: sc.measureText.actualBoundingBoxAscent + sc.measureText.actualBoundingBoxDescent,
  36573. left: 0,
  36574. top: 0,
  36575. splitIndex,
  36576. asc: sc.measureText.actualBoundingBoxAscent,
  36577. desc: sc.measureText.actualBoundingBoxDescent,
  36578. inline: true,
  36579. fs: sc.fs
  36580. });
  36581. }
  36582. anchor = spaceOrTwoByteIndex;
  36583. i2 = spaceOrTwoByteIndex + 1;
  36584. splitIndex += 1;
  36585. spaceOrTwoByteIndex = null;
  36586. } else {
  36587. anchor = i2 - 1;
  36588. for (let s = 0; s < shareCells.length - 1; s++) {
  36589. let sc = shareCells[s];
  36590. text_all_split[splitIndex].push({
  36591. content: sc.v,
  36592. style: sc,
  36593. width: sc.measureText.width,
  36594. height: sc.measureText.actualBoundingBoxAscent + sc.measureText.actualBoundingBoxDescent,
  36595. left: 0,
  36596. top: 0,
  36597. splitIndex,
  36598. asc: sc.measureText.actualBoundingBoxAscent,
  36599. desc: sc.measureText.actualBoundingBoxDescent,
  36600. inline: true,
  36601. fs: sc.fs
  36602. });
  36603. }
  36604. splitIndex += 1;
  36605. }
  36606. } else if (i2 == inlineStringArr.length) {
  36607. if (text_all_split[splitIndex] == null) {
  36608. text_all_split[splitIndex] = [];
  36609. }
  36610. for (let s = 0; s < shareCells.length; s++) {
  36611. let sc = shareCells[s];
  36612. text_all_split[splitIndex].push({
  36613. content: sc.v,
  36614. style: sc,
  36615. width: sc.measureText.width,
  36616. height: sc.measureText.actualBoundingBoxAscent + sc.measureText.actualBoundingBoxDescent,
  36617. left: 0,
  36618. top: 0,
  36619. splitIndex,
  36620. asc: sc.measureText.actualBoundingBoxAscent,
  36621. desc: sc.measureText.actualBoundingBoxDescent,
  36622. inline: true,
  36623. fs: sc.fs
  36624. });
  36625. }
  36626. break;
  36627. } else {
  36628. if (text_all_split[splitIndex] == null) {
  36629. text_all_split[splitIndex] = [];
  36630. }
  36631. i2++;
  36632. }
  36633. }
  36634. }
  36635. } else {
  36636. value = value.toString();
  36637. while (i2 <= value.length) {
  36638. let str = value.substring(anchor, i2);
  36639. let measureText = getMeasureText(str, ctx);
  36640. let textWidth = measureText.width;
  36641. let textHeight = measureText.actualBoundingBoxAscent + measureText.actualBoundingBoxDescent;
  36642. let width = textWidth * Math.cos(rt * Math.PI / 180) + textHeight * Math.sin(rt * Math.PI / 180);
  36643. let height = textWidth * Math.sin(rt * Math.PI / 180) + textHeight * Math.cos(rt * Math.PI / 180);
  36644. let lastWord = str.substr(str.length - 1, 1);
  36645. if (lastWord == " " || checkWordByteLength(lastWord) == 2) {
  36646. if (preMeasureText != null) {
  36647. spaceOrTwoByte = {
  36648. index: i2,
  36649. str: preStr + lastWord,
  36650. width: preTextWidth,
  36651. height: preTextHeight,
  36652. asc: preMeasureText.actualBoundingBoxAscent,
  36653. desc: preMeasureText.actualBoundingBoxDescent
  36654. };
  36655. }
  36656. }
  36657. if (rt != 0) {
  36658. if (height + space_height > cellHeight && text_all_split[splitIndex] != null && i2 != value.length) {
  36659. if (spaceOrTwoByte != null && spaceOrTwoByte.index < i2) {
  36660. anchor = spaceOrTwoByte.index;
  36661. i2 = spaceOrTwoByte.index + 1;
  36662. text_all_split[splitIndex].push({
  36663. content: spaceOrTwoByte.str,
  36664. style: fontset,
  36665. width: spaceOrTwoByte.width,
  36666. height: spaceOrTwoByte.height,
  36667. left: 0,
  36668. top: 0,
  36669. splitIndex,
  36670. asc: spaceOrTwoByte.asc,
  36671. desc: spaceOrTwoByte.desc,
  36672. fs: fontSize
  36673. });
  36674. splitIndex += 1;
  36675. spaceOrTwoByte = null;
  36676. } else {
  36677. anchor = i2 - 1;
  36678. text_all_split[splitIndex].push({
  36679. content: preStr,
  36680. style: fontset,
  36681. left: 0,
  36682. top: 0,
  36683. splitIndex,
  36684. height: preTextHeight,
  36685. width: preTextWidth,
  36686. asc: measureText.actualBoundingBoxAscent,
  36687. desc: measureText.actualBoundingBoxDescent,
  36688. fs: fontSize
  36689. });
  36690. splitIndex += 1;
  36691. }
  36692. } else if (i2 == value.length) {
  36693. if (text_all_split[splitIndex] == null) {
  36694. text_all_split[splitIndex] = [];
  36695. }
  36696. text_all_split[splitIndex].push({
  36697. content: str,
  36698. style: fontset,
  36699. left: 0,
  36700. top: 0,
  36701. splitIndex,
  36702. height: textHeight,
  36703. width: textWidth,
  36704. asc: measureText.actualBoundingBoxAscent,
  36705. desc: measureText.actualBoundingBoxDescent,
  36706. fs: fontSize
  36707. });
  36708. break;
  36709. } else {
  36710. if (text_all_split[splitIndex] == null) {
  36711. text_all_split[splitIndex] = [];
  36712. }
  36713. i2++;
  36714. }
  36715. } else {
  36716. if (width + space_width > cellWidth && text_all_split[splitIndex] != null && i2 != value.length) {
  36717. if (spaceOrTwoByte != null && spaceOrTwoByte.index < i2) {
  36718. anchor = spaceOrTwoByte.index;
  36719. i2 = spaceOrTwoByte.index + 1;
  36720. text_all_split[splitIndex].push({
  36721. content: spaceOrTwoByte.str,
  36722. style: fontset,
  36723. width: spaceOrTwoByte.width,
  36724. height: spaceOrTwoByte.height,
  36725. left: 0,
  36726. top: 0,
  36727. splitIndex,
  36728. asc: spaceOrTwoByte.asc,
  36729. desc: spaceOrTwoByte.desc,
  36730. fs: fontSize
  36731. });
  36732. splitIndex += 1;
  36733. spaceOrTwoByte = null;
  36734. } else {
  36735. spaceOrTwoByte = null;
  36736. anchor = i2 - 1;
  36737. text_all_split[splitIndex].push({
  36738. content: preStr,
  36739. style: fontset,
  36740. width: preTextWidth,
  36741. height: preTextHeight,
  36742. left: 0,
  36743. top: 0,
  36744. splitIndex,
  36745. asc: measureText.actualBoundingBoxAscent,
  36746. desc: measureText.actualBoundingBoxDescent,
  36747. fs: fontSize
  36748. });
  36749. splitIndex += 1;
  36750. }
  36751. } else if (i2 == value.length) {
  36752. if (text_all_split[splitIndex] == null) {
  36753. text_all_split[splitIndex] = [];
  36754. }
  36755. text_all_split[splitIndex].push({
  36756. content: str,
  36757. style: fontset,
  36758. width: textWidth,
  36759. height: textHeight,
  36760. left: 0,
  36761. top: 0,
  36762. splitIndex,
  36763. asc: measureText.actualBoundingBoxAscent,
  36764. desc: measureText.actualBoundingBoxDescent,
  36765. fs: fontSize
  36766. });
  36767. break;
  36768. } else {
  36769. if (text_all_split[splitIndex] == null) {
  36770. text_all_split[splitIndex] = [];
  36771. }
  36772. i2++;
  36773. }
  36774. }
  36775. preStr = str;
  36776. preTextHeight = textHeight;
  36777. preTextWidth = textWidth;
  36778. preMeasureText = measureText;
  36779. }
  36780. }
  36781. let split_all_size = [], oneLinemaxWordCount = 0;
  36782. let splitLen = Object.keys(text_all_split).length;
  36783. for (let i3 = 0; i3 < splitLen; i3++) {
  36784. let splitLists = text_all_split[i3];
  36785. if (splitLists == null) {
  36786. continue;
  36787. }
  36788. let sWidth = 0, sHeight = 0, maxDesc = 0, maxAsc = 0, lineHeight = 0, maxWordCount = 0;
  36789. for (let s = 0; s < splitLists.length; s++) {
  36790. let sp = splitLists[s];
  36791. if (rt != 0) {
  36792. sWidth += sp.width;
  36793. sHeight = Math.max(sHeight, sp.height - (supportBoundBox ? sp.desc : 0));
  36794. } else {
  36795. sWidth += sp.width;
  36796. sHeight = Math.max(sHeight, sp.height - (supportBoundBox ? sp.desc : 0));
  36797. }
  36798. maxDesc = Math.max(maxDesc, supportBoundBox ? sp.desc : 0);
  36799. maxAsc = Math.max(maxAsc, sp.asc);
  36800. maxWordCount++;
  36801. }
  36802. lineHeight = sHeight / 2;
  36803. oneLinemaxWordCount = Math.max(oneLinemaxWordCount, maxWordCount);
  36804. if (rt != 0) {
  36805. sHeight += lineHeight;
  36806. textW_all_inner = Math.max(textW_all_inner, sWidth);
  36807. textH_all += sHeight;
  36808. } else {
  36809. sHeight += lineHeight;
  36810. textW_all = Math.max(textW_all, sWidth);
  36811. textH_all += sHeight;
  36812. }
  36813. split_all_size.push({
  36814. width: sWidth,
  36815. height: sHeight,
  36816. desc: maxDesc,
  36817. asc: maxAsc,
  36818. lineHeight,
  36819. wordCount: maxWordCount
  36820. });
  36821. }
  36822. let cumWordHeight = 0, cumColumnWidth = 0;
  36823. let rtPI = rt * Math.PI / 180;
  36824. let lastLine = split_all_size[splitLen - 1];
  36825. let lastLineSpaceHeight = lastLine.lineHeight;
  36826. textH_all = textH_all - lastLineSpaceHeight + lastLine.desc;
  36827. let rw = textH_all / Math.sin(rtPI) + textW_all_inner * Math.cos(rtPI);
  36828. let rh = textW_all_inner * Math.sin(rtPI), fixOneLineLeft = 0;
  36829. if (rt != 0) {
  36830. if (splitLen == 1) {
  36831. textW_all = textW_all_inner + 2 * (textH_all / Math.tan(rtPI));
  36832. fixOneLineLeft = textH_all / Math.tan(rtPI);
  36833. } else {
  36834. textW_all = textW_all_inner + textH_all / Math.tan(rtPI);
  36835. }
  36836. textContent.textWidthAll = rw;
  36837. textContent.textHeightAll = rh;
  36838. } else {
  36839. textContent.textWidthAll = textW_all;
  36840. textContent.textHeightAll = textH_all;
  36841. }
  36842. if (isMode == "onlyWidth") {
  36843. return textContent;
  36844. }
  36845. if (rt != 0 && isRotateUp == "1") {
  36846. ctx.textAlign = "end";
  36847. for (let i3 = 0; i3 < splitLen; i3++) {
  36848. let splitLists = text_all_split[i3];
  36849. if (splitLists == null) {
  36850. continue;
  36851. }
  36852. let size = split_all_size[i3];
  36853. cumColumnWidth = 0;
  36854. for (let c2 = splitLists.length - 1; c2 >= 0; c2--) {
  36855. let wordGroup = splitLists[c2];
  36856. let left, top;
  36857. if (rt != 0) {
  36858. let x, y = cumWordHeight + size.asc;
  36859. x = cumWordHeight / Math.tan(rtPI) - cumColumnWidth + textW_all_inner;
  36860. if (horizonAlign == "0") {
  36861. let sh = textH_all / Math.sin(rtPI);
  36862. if (verticalAlign == "0") {
  36863. left = x + cellWidth / 2 - textW_all / 2 + lastLineSpaceHeight * Math.cos(rtPI) / 2;
  36864. top = y + cellHeight / 2 - textH_all / 2 - lastLineSpaceHeight * Math.cos(rtPI) / 2;
  36865. } else if (verticalAlign == "1") {
  36866. left = x + cellWidth / 2 - textW_all / 2;
  36867. top = y - (textH_all / 2 - rh / 2);
  36868. } else if (verticalAlign == "2") {
  36869. left = x + cellWidth / 2 - textW_all / 2 + lastLineSpaceHeight * Math.cos(rtPI);
  36870. top = y + cellHeight - rh / 2 - textH_all / 2 - lastLineSpaceHeight * Math.cos(rtPI);
  36871. }
  36872. } else if (horizonAlign == "1") {
  36873. if (verticalAlign == "0") {
  36874. left = x - rh * Math.sin(rtPI) / 2 + lastLineSpaceHeight * Math.cos(rtPI) / 2;
  36875. top = y + cellHeight / 2 + rh * Math.cos(rtPI) / 2 - lastLineSpaceHeight * Math.cos(rtPI) / 2;
  36876. } else if (verticalAlign == "1") {
  36877. left = x - rh * Math.sin(rtPI);
  36878. top = y + rh * Math.cos(rtPI);
  36879. } else if (verticalAlign == "2") {
  36880. left = x + lastLineSpaceHeight * Math.cos(rtPI);
  36881. top = y + cellHeight - lastLineSpaceHeight * Math.cos(rtPI);
  36882. }
  36883. } else if (horizonAlign == "2") {
  36884. if (verticalAlign == "0") {
  36885. left = x + cellWidth - rw / 2 - (textW_all_inner / 2 + textH_all / 2 / Math.tan(rtPI)) + lastLineSpaceHeight * Math.cos(rtPI) / 2;
  36886. top = y + cellHeight / 2 - textH_all / 2 - lastLineSpaceHeight * Math.cos(rtPI) / 2;
  36887. } else if (verticalAlign == "1") {
  36888. left = x + cellWidth - textW_all + fixOneLineLeft;
  36889. top = y - textH_all;
  36890. } else if (verticalAlign == "2") {
  36891. left = x + cellWidth - rw * Math.cos(rtPI) + lastLineSpaceHeight * Math.cos(rtPI);
  36892. top = y + cellHeight - rw * Math.sin(rtPI) - lastLineSpaceHeight * Math.cos(rtPI);
  36893. }
  36894. }
  36895. }
  36896. wordGroup.left = left;
  36897. wordGroup.top = top;
  36898. drawLineInfo(wordGroup, cancelLine, underLine, {
  36899. width: wordGroup.width,
  36900. height: wordGroup.height,
  36901. left: left - wordGroup.width,
  36902. top,
  36903. asc: size.asc,
  36904. desc: size.desc,
  36905. fs: wordGroup.fs
  36906. });
  36907. textContent.values.push(wordGroup);
  36908. cumColumnWidth += wordGroup.width;
  36909. }
  36910. cumWordHeight += size.height;
  36911. }
  36912. } else {
  36913. for (let i3 = 0; i3 < splitLen; i3++) {
  36914. let splitLists = text_all_split[i3];
  36915. if (splitLists == null) {
  36916. continue;
  36917. }
  36918. let size = split_all_size[i3];
  36919. cumColumnWidth = 0;
  36920. for (let c2 = 0; c2 < splitLists.length; c2++) {
  36921. let wordGroup = splitLists[c2];
  36922. let left, top;
  36923. if (rt != 0) {
  36924. let x, y = cumWordHeight + size.asc;
  36925. x = (textH_all - cumWordHeight) / Math.tan(rtPI) + cumColumnWidth;
  36926. if (horizonAlign == "0") {
  36927. let sh = textH_all / Math.sin(rtPI);
  36928. if (verticalAlign == "0") {
  36929. left = x + cellWidth / 2 - textW_all / 2 - lastLineSpaceHeight * Math.cos(rtPI) / 2;
  36930. top = y + cellHeight / 2 - textH_all / 2 + lastLineSpaceHeight * Math.cos(rtPI) / 2;
  36931. } else if (verticalAlign == "1") {
  36932. left = x + cellWidth / 2 - textW_all / 2 - lastLineSpaceHeight * Math.cos(rtPI) / 2;
  36933. top = y - (textH_all / 2 - rh / 2) + lastLineSpaceHeight * Math.cos(rtPI) / 2;
  36934. } else if (verticalAlign == "2") {
  36935. left = x + cellWidth / 2 - textW_all / 2 - lastLineSpaceHeight * Math.cos(rtPI);
  36936. top = y + cellHeight - rh / 2 - textH_all / 2 - lastLineSpaceHeight * Math.cos(rtPI);
  36937. }
  36938. } else if (horizonAlign == "1") {
  36939. if (verticalAlign == "0") {
  36940. left = x - rh * Math.sin(rtPI) / 2 - lastLineSpaceHeight * Math.cos(rtPI) / 2;
  36941. top = y - textH_all + cellHeight / 2 - rh * Math.cos(rtPI) / 2 - lastLineSpaceHeight * Math.cos(rtPI) / 2;
  36942. } else if (verticalAlign == "1") {
  36943. left = x;
  36944. top = y - textH_all;
  36945. } else if (verticalAlign == "2") {
  36946. left = x - rh * Math.sin(rtPI) - lastLineSpaceHeight * Math.cos(rtPI);
  36947. top = y - textH_all + cellHeight - rh * Math.cos(rtPI) - lastLineSpaceHeight * Math.cos(rtPI);
  36948. }
  36949. } else if (horizonAlign == "2") {
  36950. if (verticalAlign == "0") {
  36951. left = x + cellWidth - rw / 2 - textW_all / 2 - lastLineSpaceHeight * Math.cos(rtPI) / 2;
  36952. top = y + cellHeight / 2 - textH_all / 2 - lastLineSpaceHeight * Math.cos(rtPI) / 2;
  36953. } else if (verticalAlign == "1") {
  36954. left = x + cellWidth - rw * Math.cos(rtPI);
  36955. top = y + rh * Math.cos(rtPI);
  36956. } else if (verticalAlign == "2") {
  36957. left = x + cellWidth - textW_all - lastLineSpaceHeight * Math.cos(rtPI) + fixOneLineLeft;
  36958. top = y + cellHeight - lastLineSpaceHeight * Math.cos(rtPI);
  36959. }
  36960. }
  36961. drawLineInfo(wordGroup, cancelLine, underLine, {
  36962. width: wordGroup.width,
  36963. height: wordGroup.height,
  36964. left,
  36965. top,
  36966. asc: size.asc,
  36967. desc: size.desc,
  36968. fs: wordGroup.fs
  36969. });
  36970. } else {
  36971. left = space_width + cumColumnWidth;
  36972. if (horizonAlign == "0") {
  36973. left = cellWidth / 2 + cumColumnWidth - size.width / 2;
  36974. } else if (horizonAlign == "2") {
  36975. left = cellWidth + cumColumnWidth - size.width;
  36976. }
  36977. top = cellHeight - space_height + cumWordHeight + size.asc - textH_all;
  36978. if (verticalAlign == "0") {
  36979. top = cellHeight / 2 + cumWordHeight - textH_all / 2 + size.asc;
  36980. } else if (verticalAlign == "1") {
  36981. top = space_height + cumWordHeight + size.asc;
  36982. }
  36983. drawLineInfo(wordGroup, cancelLine, underLine, {
  36984. width: wordGroup.width,
  36985. height: wordGroup.height,
  36986. left,
  36987. top,
  36988. asc: size.asc,
  36989. desc: size.desc,
  36990. fs: wordGroup.fs
  36991. });
  36992. }
  36993. wordGroup.left = left;
  36994. wordGroup.top = top;
  36995. textContent.values.push(wordGroup);
  36996. cumColumnWidth += wordGroup.width;
  36997. }
  36998. cumWordHeight += size.height;
  36999. }
  37000. }
  37001. textContent.type = "plainWrap";
  37002. if (rt != 0) {
  37003. if (horizonAlign == "0") {
  37004. if (verticalAlign == "0") {
  37005. textContent.textLeftAll = cellWidth / 2;
  37006. textContent.textTopAll = cellHeight / 2;
  37007. } else if (verticalAlign == "1") {
  37008. textContent.textLeftAll = cellWidth / 2;
  37009. textContent.textTopAll = rh / 2;
  37010. } else if (verticalAlign == "2") {
  37011. textContent.textLeftAll = cellWidth / 2;
  37012. textContent.textTopAll = cellHeight - rh / 2;
  37013. }
  37014. } else if (horizonAlign == "1") {
  37015. if (verticalAlign == "0") {
  37016. textContent.textLeftAll = 0;
  37017. textContent.textTopAll = cellHeight / 2;
  37018. } else if (verticalAlign == "1") {
  37019. textContent.textLeftAll = 0;
  37020. textContent.textTopAll = 0;
  37021. } else if (verticalAlign == "2") {
  37022. textContent.textLeftAll = 0;
  37023. textContent.textTopAll = cellHeight;
  37024. }
  37025. } else if (horizonAlign == "2") {
  37026. if (verticalAlign == "0") {
  37027. textContent.textLeftAll = cellWidth - rw / 2;
  37028. textContent.textTopAll = cellHeight / 2;
  37029. } else if (verticalAlign == "1") {
  37030. textContent.textLeftAll = cellWidth;
  37031. textContent.textTopAll = 0;
  37032. } else if (verticalAlign == "2") {
  37033. textContent.textLeftAll = cellWidth;
  37034. textContent.textTopAll = cellHeight;
  37035. }
  37036. }
  37037. }
  37038. } else {
  37039. let measureText = getMeasureText(value, ctx);
  37040. let textWidth = measureText.width;
  37041. let textHeight = measureText.actualBoundingBoxDescent + measureText.actualBoundingBoxAscent;
  37042. textContent.rotate = rt;
  37043. rt = Math.abs(rt);
  37044. let rtPI = rt * Math.PI / 180;
  37045. let textWidthAll = textWidth * Math.cos(rtPI) + textHeight * Math.sin(rtPI);
  37046. let textHeightAll = textWidth * Math.sin(rtPI) + textHeight * Math.cos(rtPI);
  37047. if (rt != 0) {
  37048. textContent.textHeightAll = textHeightAll;
  37049. } else {
  37050. textContent.textHeightAll = textHeightAll + textHeight / 2 - measureText.actualBoundingBoxDescent - space_height;
  37051. }
  37052. textContent.textWidthAll = textWidthAll;
  37053. if (isMode == "onlyWidth") {
  37054. return textContent;
  37055. }
  37056. let width = textWidthAll, height = textHeightAll;
  37057. let left = space_width + textHeight * Math.sin(rtPI) * isRotateUp;
  37058. if (horizonAlign == "0") {
  37059. left = cellWidth / 2 - width / 2 + textHeight * Math.sin(rtPI) * isRotateUp;
  37060. } else if (horizonAlign == "2") {
  37061. left = cellWidth - space_width - width + textHeight * Math.sin(rtPI) * isRotateUp;
  37062. }
  37063. let top = cellHeight - space_height - height + measureText.actualBoundingBoxAscent * Math.cos(rtPI) + textWidth * Math.sin(rtPI) * isRotateUp;
  37064. if (verticalAlign == "0") {
  37065. top = cellHeight / 2 - height / 2 + measureText.actualBoundingBoxAscent * Math.cos(rtPI) + textWidth * Math.sin(rtPI) * isRotateUp;
  37066. } else if (verticalAlign == "1") {
  37067. top = space_height + measureText.actualBoundingBoxAscent * Math.cos(rtPI) + textWidth * Math.sin(rtPI) * isRotateUp;
  37068. }
  37069. textContent.type = "plain";
  37070. let wordGroup = {
  37071. content: value,
  37072. style: fontset,
  37073. width,
  37074. height,
  37075. left,
  37076. top
  37077. };
  37078. drawLineInfo(wordGroup, cancelLine, underLine, {
  37079. width: textWidth,
  37080. height: textHeight,
  37081. left,
  37082. top,
  37083. asc: measureText.actualBoundingBoxAscent,
  37084. desc: measureText.actualBoundingBoxDescent,
  37085. fs: fontSize
  37086. });
  37087. textContent.values.push(wordGroup);
  37088. textContent.textLeftAll = left;
  37089. textContent.textTopAll = top;
  37090. textContent.asc = measureText.actualBoundingBoxAscent;
  37091. textContent.desc = measureText.actualBoundingBoxDescent;
  37092. }
  37093. }
  37094. return textContent;
  37095. }
  37096. function drawLineInfo(wordGroup, cancelLine, underLine, option) {
  37097. let left = option.left, top = option.top, width = option.width, height = option.height, asc = option.asc, desc = option.desc, fs = option.fs;
  37098. if (wordGroup.wrap === true) {
  37099. return;
  37100. }
  37101. if (wordGroup.inline == true && wordGroup.style != null) {
  37102. cancelLine = wordGroup.style.cl;
  37103. underLine = wordGroup.style.un;
  37104. }
  37105. if (cancelLine != "0") {
  37106. wordGroup.cancelLine = {};
  37107. wordGroup.cancelLine.startX = left;
  37108. wordGroup.cancelLine.startY = top - asc / 2 + 1;
  37109. wordGroup.cancelLine.endX = left + width;
  37110. wordGroup.cancelLine.endY = top - asc / 2 + 1;
  37111. wordGroup.cancelLine.fs = fs;
  37112. }
  37113. if (underLine != "0") {
  37114. wordGroup.underLine = [];
  37115. if (underLine == "1" || underLine == "2") {
  37116. let item2 = {};
  37117. item2.startX = left;
  37118. item2.startY = top + 3;
  37119. item2.endX = left + width;
  37120. item2.endY = top + 3;
  37121. item2.fs = fs;
  37122. wordGroup.underLine.push(item2);
  37123. }
  37124. if (underLine == "2") {
  37125. let item2 = {};
  37126. item2.startX = left;
  37127. item2.startY = top + desc;
  37128. item2.endX = left + width;
  37129. item2.endY = top + desc;
  37130. item2.fs = fs;
  37131. wordGroup.underLine.push(item2);
  37132. }
  37133. if (underLine == "3" || underLine == "4") {
  37134. let item2 = {};
  37135. item2.startX = left;
  37136. item2.startY = top + desc;
  37137. item2.endX = left + width;
  37138. item2.endY = top + desc;
  37139. item2.fs = fs;
  37140. wordGroup.underLine.push(item2);
  37141. }
  37142. if (underLine == "4") {
  37143. let item2 = {};
  37144. item2.startX = left;
  37145. item2.startY = top + desc + 2;
  37146. item2.endX = left + width;
  37147. item2.endY = top + desc + 2;
  37148. item2.fs = fs;
  37149. wordGroup.underLine.push(item2);
  37150. }
  37151. }
  37152. }
  37153. var init_getRowlen = __esm({
  37154. "src/global/getRowlen.js"() {
  37155. init_util();
  37156. init_menuButton();
  37157. init_getdata();
  37158. init_location();
  37159. init_validate();
  37160. init_inlineString();
  37161. init_store();
  37162. }
  37163. });
  37164. // src/global/rhchInit.js
  37165. function rhchInit(rowheight, colwidth) {
  37166. zoomSetting();
  37167. if (rowheight != null) {
  37168. store_default.visibledatarow = [];
  37169. store_default.rh_height = 0;
  37170. for (let r2 = 0; r2 < rowheight; r2++) {
  37171. let rowlen = store_default.defaultrowlen;
  37172. if (store_default.config["rowlen"] != null && store_default.config["rowlen"][r2] != null) {
  37173. rowlen = store_default.config["rowlen"][r2];
  37174. }
  37175. if (store_default.config["rowhidden"] != null && store_default.config["rowhidden"][r2] != null) {
  37176. store_default.visibledatarow.push(store_default.rh_height);
  37177. continue;
  37178. }
  37179. if (rowlen === "auto") {
  37180. rowlen = computeRowlenByContent(store_default.flowdata, r2);
  37181. }
  37182. store_default.rh_height += Math.round((rowlen + 1) * store_default.zoomRatio);
  37183. store_default.visibledatarow.push(store_default.rh_height);
  37184. }
  37185. if (!luckysheetConfigsetting_default.enableAddRow && !luckysheetConfigsetting_default.enableAddBackTop) {
  37186. store_default.rh_height += 29;
  37187. } else {
  37188. store_default.rh_height += 80;
  37189. }
  37190. }
  37191. if (colwidth != null) {
  37192. store_default.visibledatacolumn = [];
  37193. store_default.ch_width = 0;
  37194. let maxColumnlen = 120;
  37195. for (let c2 = 0; c2 < colwidth; c2++) {
  37196. let firstcolumnlen = store_default.defaultcollen;
  37197. if (store_default.config["columnlen"] != null && store_default.config["columnlen"][c2] != null) {
  37198. firstcolumnlen = store_default.config["columnlen"][c2];
  37199. } else {
  37200. if (store_default.flowdata[0] != null && store_default.flowdata[0][c2] != null) {
  37201. if (firstcolumnlen > 300) {
  37202. firstcolumnlen = 300;
  37203. } else if (firstcolumnlen < store_default.defaultcollen) {
  37204. firstcolumnlen = store_default.defaultcollen;
  37205. }
  37206. if (firstcolumnlen != store_default.defaultcollen) {
  37207. if (store_default.config["columnlen"] == null) {
  37208. store_default.config["columnlen"] = {};
  37209. }
  37210. store_default.config["columnlen"][c2] = firstcolumnlen;
  37211. }
  37212. }
  37213. }
  37214. if (store_default.config["colhidden"] != null && store_default.config["colhidden"][c2] != null) {
  37215. store_default.visibledatacolumn.push(store_default.ch_width);
  37216. continue;
  37217. }
  37218. if (firstcolumnlen === "auto") {
  37219. firstcolumnlen = computeColWidthByContent(store_default.flowdata, c2, rowheight);
  37220. }
  37221. store_default.ch_width += Math.round((firstcolumnlen + 1) * store_default.zoomRatio);
  37222. store_default.visibledatacolumn.push(store_default.ch_width);
  37223. }
  37224. store_default.ch_width += maxColumnlen;
  37225. }
  37226. }
  37227. function zoomSetting() {
  37228. store_default.rowHeaderWidth = luckysheetConfigsetting_default.rowHeaderWidth * store_default.zoomRatio;
  37229. store_default.columnHeaderHeight = luckysheetConfigsetting_default.columnHeaderHeight * store_default.zoomRatio;
  37230. $("#luckysheet-rows-h").width(store_default.rowHeaderWidth - 1.5);
  37231. $("#luckysheet-cols-h-c").height(store_default.columnHeaderHeight - 1.5);
  37232. $("#luckysheet-left-top").css({width: store_default.rowHeaderWidth - 1.5, height: store_default.columnHeaderHeight - 1.5});
  37233. }
  37234. var init_rhchInit = __esm({
  37235. "src/global/rhchInit.js"() {
  37236. init_store();
  37237. init_getRowlen();
  37238. init_luckysheetConfigsetting();
  37239. }
  37240. });
  37241. // node_modules/dayjs/dayjs.min.js
  37242. var require_dayjs_min = __commonJS({
  37243. "node_modules/dayjs/dayjs.min.js"(exports, module) {
  37244. !function(t, e) {
  37245. typeof exports == "object" && typeof module != "undefined" ? module.exports = e() : typeof define == "function" && define.amd ? define(e) : t.dayjs = e();
  37246. }(exports, function() {
  37247. "use strict";
  37248. var t = "millisecond", e = "second", n = "minute", r2 = "hour", i2 = "day", s = "week", u = "month", a = "quarter", o = "year", f = "date", h = /^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[^0-9]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/, c2 = /\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g, d = {name: "en", weekdays: "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), months: "January_February_March_April_May_June_July_August_September_October_November_December".split("_")}, $2 = function(t2, e2, n2) {
  37249. var r3 = String(t2);
  37250. return !r3 || r3.length >= e2 ? t2 : "" + Array(e2 + 1 - r3.length).join(n2) + t2;
  37251. }, l = {s: $2, z: function(t2) {
  37252. var e2 = -t2.utcOffset(), n2 = Math.abs(e2), r3 = Math.floor(n2 / 60), i3 = n2 % 60;
  37253. return (e2 <= 0 ? "+" : "-") + $2(r3, 2, "0") + ":" + $2(i3, 2, "0");
  37254. }, m: function t2(e2, n2) {
  37255. if (e2.date() < n2.date())
  37256. return -t2(n2, e2);
  37257. var r3 = 12 * (n2.year() - e2.year()) + (n2.month() - e2.month()), i3 = e2.clone().add(r3, u), s2 = n2 - i3 < 0, a2 = e2.clone().add(r3 + (s2 ? -1 : 1), u);
  37258. return +(-(r3 + (n2 - i3) / (s2 ? i3 - a2 : a2 - i3)) || 0);
  37259. }, a: function(t2) {
  37260. return t2 < 0 ? Math.ceil(t2) || 0 : Math.floor(t2);
  37261. }, p: function(h2) {
  37262. return {M: u, y: o, w: s, d: i2, D: f, h: r2, m: n, s: e, ms: t, Q: a}[h2] || String(h2 || "").toLowerCase().replace(/s$/, "");
  37263. }, u: function(t2) {
  37264. return t2 === void 0;
  37265. }}, y = "en", M = {};
  37266. M[y] = d;
  37267. var m = function(t2) {
  37268. return t2 instanceof S;
  37269. }, D = function(t2, e2, n2) {
  37270. var r3;
  37271. if (!t2)
  37272. return y;
  37273. if (typeof t2 == "string")
  37274. M[t2] && (r3 = t2), e2 && (M[t2] = e2, r3 = t2);
  37275. else {
  37276. var i3 = t2.name;
  37277. M[i3] = t2, r3 = i3;
  37278. }
  37279. return !n2 && r3 && (y = r3), r3 || !n2 && y;
  37280. }, v = function(t2, e2) {
  37281. if (m(t2))
  37282. return t2.clone();
  37283. var n2 = typeof e2 == "object" ? e2 : {};
  37284. return n2.date = t2, n2.args = arguments, new S(n2);
  37285. }, g = l;
  37286. g.l = D, g.i = m, g.w = function(t2, e2) {
  37287. return v(t2, {locale: e2.$L, utc: e2.$u, x: e2.$x, $offset: e2.$offset});
  37288. };
  37289. var S = function() {
  37290. function d2(t2) {
  37291. this.$L = D(t2.locale, null, true), this.parse(t2);
  37292. }
  37293. var $3 = d2.prototype;
  37294. return $3.parse = function(t2) {
  37295. this.$d = function(t3) {
  37296. var e2 = t3.date, n2 = t3.utc;
  37297. if (e2 === null)
  37298. return new Date(NaN);
  37299. if (g.u(e2))
  37300. return new Date();
  37301. if (e2 instanceof Date)
  37302. return new Date(e2);
  37303. if (typeof e2 == "string" && !/Z$/i.test(e2)) {
  37304. var r3 = e2.match(h);
  37305. if (r3) {
  37306. var i3 = r3[2] - 1 || 0, s2 = (r3[7] || "0").substring(0, 3);
  37307. return n2 ? new Date(Date.UTC(r3[1], i3, r3[3] || 1, r3[4] || 0, r3[5] || 0, r3[6] || 0, s2)) : new Date(r3[1], i3, r3[3] || 1, r3[4] || 0, r3[5] || 0, r3[6] || 0, s2);
  37308. }
  37309. }
  37310. return new Date(e2);
  37311. }(t2), this.$x = t2.x || {}, this.init();
  37312. }, $3.init = function() {
  37313. var t2 = this.$d;
  37314. this.$y = t2.getFullYear(), this.$M = t2.getMonth(), this.$D = t2.getDate(), this.$W = t2.getDay(), this.$H = t2.getHours(), this.$m = t2.getMinutes(), this.$s = t2.getSeconds(), this.$ms = t2.getMilliseconds();
  37315. }, $3.$utils = function() {
  37316. return g;
  37317. }, $3.isValid = function() {
  37318. return !(this.$d.toString() === "Invalid Date");
  37319. }, $3.isSame = function(t2, e2) {
  37320. var n2 = v(t2);
  37321. return this.startOf(e2) <= n2 && n2 <= this.endOf(e2);
  37322. }, $3.isAfter = function(t2, e2) {
  37323. return v(t2) < this.startOf(e2);
  37324. }, $3.isBefore = function(t2, e2) {
  37325. return this.endOf(e2) < v(t2);
  37326. }, $3.$g = function(t2, e2, n2) {
  37327. return g.u(t2) ? this[e2] : this.set(n2, t2);
  37328. }, $3.unix = function() {
  37329. return Math.floor(this.valueOf() / 1e3);
  37330. }, $3.valueOf = function() {
  37331. return this.$d.getTime();
  37332. }, $3.startOf = function(t2, a2) {
  37333. var h2 = this, c3 = !!g.u(a2) || a2, d3 = g.p(t2), $4 = function(t3, e2) {
  37334. var n2 = g.w(h2.$u ? Date.UTC(h2.$y, e2, t3) : new Date(h2.$y, e2, t3), h2);
  37335. return c3 ? n2 : n2.endOf(i2);
  37336. }, l2 = function(t3, e2) {
  37337. return g.w(h2.toDate()[t3].apply(h2.toDate("s"), (c3 ? [0, 0, 0, 0] : [23, 59, 59, 999]).slice(e2)), h2);
  37338. }, y2 = this.$W, M2 = this.$M, m2 = this.$D, D2 = "set" + (this.$u ? "UTC" : "");
  37339. switch (d3) {
  37340. case o:
  37341. return c3 ? $4(1, 0) : $4(31, 11);
  37342. case u:
  37343. return c3 ? $4(1, M2) : $4(0, M2 + 1);
  37344. case s:
  37345. var v2 = this.$locale().weekStart || 0, S2 = (y2 < v2 ? y2 + 7 : y2) - v2;
  37346. return $4(c3 ? m2 - S2 : m2 + (6 - S2), M2);
  37347. case i2:
  37348. case f:
  37349. return l2(D2 + "Hours", 0);
  37350. case r2:
  37351. return l2(D2 + "Minutes", 1);
  37352. case n:
  37353. return l2(D2 + "Seconds", 2);
  37354. case e:
  37355. return l2(D2 + "Milliseconds", 3);
  37356. default:
  37357. return this.clone();
  37358. }
  37359. }, $3.endOf = function(t2) {
  37360. return this.startOf(t2, false);
  37361. }, $3.$set = function(s2, a2) {
  37362. var h2, c3 = g.p(s2), d3 = "set" + (this.$u ? "UTC" : ""), $4 = (h2 = {}, h2[i2] = d3 + "Date", h2[f] = d3 + "Date", h2[u] = d3 + "Month", h2[o] = d3 + "FullYear", h2[r2] = d3 + "Hours", h2[n] = d3 + "Minutes", h2[e] = d3 + "Seconds", h2[t] = d3 + "Milliseconds", h2)[c3], l2 = c3 === i2 ? this.$D + (a2 - this.$W) : a2;
  37363. if (c3 === u || c3 === o) {
  37364. var y2 = this.clone().set(f, 1);
  37365. y2.$d[$4](l2), y2.init(), this.$d = y2.set(f, Math.min(this.$D, y2.daysInMonth())).$d;
  37366. } else
  37367. $4 && this.$d[$4](l2);
  37368. return this.init(), this;
  37369. }, $3.set = function(t2, e2) {
  37370. return this.clone().$set(t2, e2);
  37371. }, $3.get = function(t2) {
  37372. return this[g.p(t2)]();
  37373. }, $3.add = function(t2, a2) {
  37374. var f2, h2 = this;
  37375. t2 = Number(t2);
  37376. var c3 = g.p(a2), d3 = function(e2) {
  37377. var n2 = v(h2);
  37378. return g.w(n2.date(n2.date() + Math.round(e2 * t2)), h2);
  37379. };
  37380. if (c3 === u)
  37381. return this.set(u, this.$M + t2);
  37382. if (c3 === o)
  37383. return this.set(o, this.$y + t2);
  37384. if (c3 === i2)
  37385. return d3(1);
  37386. if (c3 === s)
  37387. return d3(7);
  37388. var $4 = (f2 = {}, f2[n] = 6e4, f2[r2] = 36e5, f2[e] = 1e3, f2)[c3] || 1, l2 = this.$d.getTime() + t2 * $4;
  37389. return g.w(l2, this);
  37390. }, $3.subtract = function(t2, e2) {
  37391. return this.add(-1 * t2, e2);
  37392. }, $3.format = function(t2) {
  37393. var e2 = this;
  37394. if (!this.isValid())
  37395. return "Invalid Date";
  37396. var n2 = t2 || "YYYY-MM-DDTHH:mm:ssZ", r3 = g.z(this), i3 = this.$locale(), s2 = this.$H, u2 = this.$m, a2 = this.$M, o2 = i3.weekdays, f2 = i3.months, h2 = function(t3, r4, i4, s3) {
  37397. return t3 && (t3[r4] || t3(e2, n2)) || i4[r4].substr(0, s3);
  37398. }, d3 = function(t3) {
  37399. return g.s(s2 % 12 || 12, t3, "0");
  37400. }, $4 = i3.meridiem || function(t3, e3, n3) {
  37401. var r4 = t3 < 12 ? "AM" : "PM";
  37402. return n3 ? r4.toLowerCase() : r4;
  37403. }, l2 = {YY: String(this.$y).slice(-2), YYYY: this.$y, M: a2 + 1, MM: g.s(a2 + 1, 2, "0"), MMM: h2(i3.monthsShort, a2, f2, 3), MMMM: h2(f2, a2), D: this.$D, DD: g.s(this.$D, 2, "0"), d: String(this.$W), dd: h2(i3.weekdaysMin, this.$W, o2, 2), ddd: h2(i3.weekdaysShort, this.$W, o2, 3), dddd: o2[this.$W], H: String(s2), HH: g.s(s2, 2, "0"), h: d3(1), hh: d3(2), a: $4(s2, u2, true), A: $4(s2, u2, false), m: String(u2), mm: g.s(u2, 2, "0"), s: String(this.$s), ss: g.s(this.$s, 2, "0"), SSS: g.s(this.$ms, 3, "0"), Z: r3};
  37404. return n2.replace(c2, function(t3, e3) {
  37405. return e3 || l2[t3] || r3.replace(":", "");
  37406. });
  37407. }, $3.utcOffset = function() {
  37408. return 15 * -Math.round(this.$d.getTimezoneOffset() / 15);
  37409. }, $3.diff = function(t2, f2, h2) {
  37410. var c3, d3 = g.p(f2), $4 = v(t2), l2 = 6e4 * ($4.utcOffset() - this.utcOffset()), y2 = this - $4, M2 = g.m(this, $4);
  37411. return M2 = (c3 = {}, c3[o] = M2 / 12, c3[u] = M2, c3[a] = M2 / 3, c3[s] = (y2 - l2) / 6048e5, c3[i2] = (y2 - l2) / 864e5, c3[r2] = y2 / 36e5, c3[n] = y2 / 6e4, c3[e] = y2 / 1e3, c3)[d3] || y2, h2 ? M2 : g.a(M2);
  37412. }, $3.daysInMonth = function() {
  37413. return this.endOf(u).$D;
  37414. }, $3.$locale = function() {
  37415. return M[this.$L];
  37416. }, $3.locale = function(t2, e2) {
  37417. if (!t2)
  37418. return this.$L;
  37419. var n2 = this.clone(), r3 = D(t2, e2, true);
  37420. return r3 && (n2.$L = r3), n2;
  37421. }, $3.clone = function() {
  37422. return g.w(this.$d, this);
  37423. }, $3.toDate = function() {
  37424. return new Date(this.valueOf());
  37425. }, $3.toJSON = function() {
  37426. return this.isValid() ? this.toISOString() : null;
  37427. }, $3.toISOString = function() {
  37428. return this.$d.toISOString();
  37429. }, $3.toString = function() {
  37430. return this.$d.toUTCString();
  37431. }, d2;
  37432. }(), p = S.prototype;
  37433. return v.prototype = p, [["$ms", t], ["$s", e], ["$m", n], ["$H", r2], ["$W", i2], ["$M", u], ["$y", o], ["$D", f]].forEach(function(t2) {
  37434. p[t2[1]] = function(e2) {
  37435. return this.$g(e2, t2[0], t2[1]);
  37436. };
  37437. }), v.extend = function(t2, e2) {
  37438. return t2.$i || (t2(e2, S, v), t2.$i = true), v;
  37439. }, v.locale = D, v.isDayjs = m, v.unix = function(t2) {
  37440. return v(1e3 * t2);
  37441. }, v.en = M[y], v.Ls = M, v.p = {}, v;
  37442. });
  37443. }
  37444. });
  37445. // src/global/datecontroll.js
  37446. function isdatetime(s) {
  37447. if (s == null || s.toString().length < 5) {
  37448. return false;
  37449. } else if (checkDateTime(s)) {
  37450. return true;
  37451. } else {
  37452. return false;
  37453. }
  37454. function checkDateTime(str) {
  37455. var reg1 = /^(\d{4})-(\d{1,2})-(\d{1,2})(\s(\d{1,2}):(\d{1,2})(:(\d{1,2}))?)?$/;
  37456. var reg2 = /^(\d{4})\/(\d{1,2})\/(\d{1,2})(\s(\d{1,2}):(\d{1,2})(:(\d{1,2}))?)?$/;
  37457. if (!reg1.test(str) && !reg2.test(str)) {
  37458. return false;
  37459. }
  37460. var year = RegExp.$1, month = RegExp.$2, day = RegExp.$3;
  37461. if (year < 1900) {
  37462. return false;
  37463. }
  37464. if (month > 12) {
  37465. return false;
  37466. }
  37467. if (day > 31) {
  37468. return false;
  37469. }
  37470. if (month == 2) {
  37471. if (new Date(year, 1, 29).getDate() == 29 && day > 29) {
  37472. return false;
  37473. } else if (new Date(year, 1, 29).getDate() != 29 && day > 28) {
  37474. return false;
  37475. }
  37476. }
  37477. return true;
  37478. }
  37479. }
  37480. function diff(now, then) {
  37481. return (0, import_dayjs.default)(now).diff((0, import_dayjs.default)(then));
  37482. }
  37483. function isdatatypemulti(s) {
  37484. let type = {};
  37485. if (isdatetime(s)) {
  37486. type["date"] = true;
  37487. }
  37488. if (!isNaN(parseFloat(s)) && !hasChinaword(s)) {
  37489. type["num"] = true;
  37490. }
  37491. return type;
  37492. }
  37493. function isdatatype(s) {
  37494. let type = "string";
  37495. if (isdatetime(s)) {
  37496. type = "date";
  37497. } else if (!isNaN(parseFloat(s)) && !hasChinaword(s)) {
  37498. type = "num";
  37499. }
  37500. return type;
  37501. }
  37502. var import_dayjs;
  37503. var init_datecontroll = __esm({
  37504. "src/global/datecontroll.js"() {
  37505. init_validate();
  37506. import_dayjs = __toModule(require_dayjs_min());
  37507. }
  37508. });
  37509. // node_modules/numeral/numeral.js
  37510. var require_numeral = __commonJS({
  37511. "node_modules/numeral/numeral.js"(exports, module) {
  37512. (function(global, factory) {
  37513. if (typeof define === "function" && define.amd) {
  37514. define(factory);
  37515. } else if (typeof module === "object" && module.exports) {
  37516. module.exports = factory();
  37517. } else {
  37518. global.numeral = factory();
  37519. }
  37520. })(exports, function() {
  37521. var numeral7, _, VERSION = "2.0.6", formats2 = {}, locales2 = {}, defaults2 = {
  37522. currentLocale: "en",
  37523. zeroFormat: null,
  37524. nullFormat: null,
  37525. defaultFormat: "0,0",
  37526. scalePercentBy100: true
  37527. }, options = {
  37528. currentLocale: defaults2.currentLocale,
  37529. zeroFormat: defaults2.zeroFormat,
  37530. nullFormat: defaults2.nullFormat,
  37531. defaultFormat: defaults2.defaultFormat,
  37532. scalePercentBy100: defaults2.scalePercentBy100
  37533. };
  37534. function Numeral(input, number) {
  37535. this._input = input;
  37536. this._value = number;
  37537. }
  37538. numeral7 = function(input) {
  37539. var value, kind, unformatFunction, regexp;
  37540. if (numeral7.isNumeral(input)) {
  37541. value = input.value();
  37542. } else if (input === 0 || typeof input === "undefined") {
  37543. value = 0;
  37544. } else if (input === null || _.isNaN(input)) {
  37545. value = null;
  37546. } else if (typeof input === "string") {
  37547. if (options.zeroFormat && input === options.zeroFormat) {
  37548. value = 0;
  37549. } else if (options.nullFormat && input === options.nullFormat || !input.replace(/[^0-9]+/g, "").length) {
  37550. value = null;
  37551. } else {
  37552. for (kind in formats2) {
  37553. regexp = typeof formats2[kind].regexps.unformat === "function" ? formats2[kind].regexps.unformat() : formats2[kind].regexps.unformat;
  37554. if (regexp && input.match(regexp)) {
  37555. unformatFunction = formats2[kind].unformat;
  37556. break;
  37557. }
  37558. }
  37559. unformatFunction = unformatFunction || numeral7._.stringToNumber;
  37560. value = unformatFunction(input);
  37561. }
  37562. } else {
  37563. value = Number(input) || null;
  37564. }
  37565. return new Numeral(input, value);
  37566. };
  37567. numeral7.version = VERSION;
  37568. numeral7.isNumeral = function(obj) {
  37569. return obj instanceof Numeral;
  37570. };
  37571. numeral7._ = _ = {
  37572. numberToFormat: function(value, format, roundingFunction) {
  37573. var locale2 = locales2[numeral7.options.currentLocale], negP = false, optDec = false, leadingCount = 0, abbr = "", trillion = 1e12, billion = 1e9, million = 1e6, thousand = 1e3, decimal = "", neg = false, abbrForce, abs, min, max, power, int2, precision, signed, thousands, output;
  37574. value = value || 0;
  37575. abs = Math.abs(value);
  37576. if (numeral7._.includes(format, "(")) {
  37577. negP = true;
  37578. format = format.replace(/[\(|\)]/g, "");
  37579. } else if (numeral7._.includes(format, "+") || numeral7._.includes(format, "-")) {
  37580. signed = numeral7._.includes(format, "+") ? format.indexOf("+") : value < 0 ? format.indexOf("-") : -1;
  37581. format = format.replace(/[\+|\-]/g, "");
  37582. }
  37583. if (numeral7._.includes(format, "a")) {
  37584. abbrForce = format.match(/a(k|m|b|t)?/);
  37585. abbrForce = abbrForce ? abbrForce[1] : false;
  37586. if (numeral7._.includes(format, " a")) {
  37587. abbr = " ";
  37588. }
  37589. format = format.replace(new RegExp(abbr + "a[kmbt]?"), "");
  37590. if (abs >= trillion && !abbrForce || abbrForce === "t") {
  37591. abbr += locale2.abbreviations.trillion;
  37592. value = value / trillion;
  37593. } else if (abs < trillion && abs >= billion && !abbrForce || abbrForce === "b") {
  37594. abbr += locale2.abbreviations.billion;
  37595. value = value / billion;
  37596. } else if (abs < billion && abs >= million && !abbrForce || abbrForce === "m") {
  37597. abbr += locale2.abbreviations.million;
  37598. value = value / million;
  37599. } else if (abs < million && abs >= thousand && !abbrForce || abbrForce === "k") {
  37600. abbr += locale2.abbreviations.thousand;
  37601. value = value / thousand;
  37602. }
  37603. }
  37604. if (numeral7._.includes(format, "[.]")) {
  37605. optDec = true;
  37606. format = format.replace("[.]", ".");
  37607. }
  37608. int2 = value.toString().split(".")[0];
  37609. precision = format.split(".")[1];
  37610. thousands = format.indexOf(",");
  37611. leadingCount = (format.split(".")[0].split(",")[0].match(/0/g) || []).length;
  37612. if (precision) {
  37613. if (numeral7._.includes(precision, "[")) {
  37614. precision = precision.replace("]", "");
  37615. precision = precision.split("[");
  37616. decimal = numeral7._.toFixed(value, precision[0].length + precision[1].length, roundingFunction, precision[1].length);
  37617. } else {
  37618. decimal = numeral7._.toFixed(value, precision.length, roundingFunction);
  37619. }
  37620. int2 = decimal.split(".")[0];
  37621. if (numeral7._.includes(decimal, ".")) {
  37622. decimal = locale2.delimiters.decimal + decimal.split(".")[1];
  37623. } else {
  37624. decimal = "";
  37625. }
  37626. if (optDec && Number(decimal.slice(1)) === 0) {
  37627. decimal = "";
  37628. }
  37629. } else {
  37630. int2 = numeral7._.toFixed(value, 0, roundingFunction);
  37631. }
  37632. if (abbr && !abbrForce && Number(int2) >= 1e3 && abbr !== locale2.abbreviations.trillion) {
  37633. int2 = String(Number(int2) / 1e3);
  37634. switch (abbr) {
  37635. case locale2.abbreviations.thousand:
  37636. abbr = locale2.abbreviations.million;
  37637. break;
  37638. case locale2.abbreviations.million:
  37639. abbr = locale2.abbreviations.billion;
  37640. break;
  37641. case locale2.abbreviations.billion:
  37642. abbr = locale2.abbreviations.trillion;
  37643. break;
  37644. }
  37645. }
  37646. if (numeral7._.includes(int2, "-")) {
  37647. int2 = int2.slice(1);
  37648. neg = true;
  37649. }
  37650. if (int2.length < leadingCount) {
  37651. for (var i2 = leadingCount - int2.length; i2 > 0; i2--) {
  37652. int2 = "0" + int2;
  37653. }
  37654. }
  37655. if (thousands > -1) {
  37656. int2 = int2.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1" + locale2.delimiters.thousands);
  37657. }
  37658. if (format.indexOf(".") === 0) {
  37659. int2 = "";
  37660. }
  37661. output = int2 + decimal + (abbr ? abbr : "");
  37662. if (negP) {
  37663. output = (negP && neg ? "(" : "") + output + (negP && neg ? ")" : "");
  37664. } else {
  37665. if (signed >= 0) {
  37666. output = signed === 0 ? (neg ? "-" : "+") + output : output + (neg ? "-" : "+");
  37667. } else if (neg) {
  37668. output = "-" + output;
  37669. }
  37670. }
  37671. return output;
  37672. },
  37673. stringToNumber: function(string) {
  37674. var locale2 = locales2[options.currentLocale], stringOriginal = string, abbreviations = {
  37675. thousand: 3,
  37676. million: 6,
  37677. billion: 9,
  37678. trillion: 12
  37679. }, abbreviation, value, i2, regexp;
  37680. if (options.zeroFormat && string === options.zeroFormat) {
  37681. value = 0;
  37682. } else if (options.nullFormat && string === options.nullFormat || !string.replace(/[^0-9]+/g, "").length) {
  37683. value = null;
  37684. } else {
  37685. value = 1;
  37686. if (locale2.delimiters.decimal !== ".") {
  37687. string = string.replace(/\./g, "").replace(locale2.delimiters.decimal, ".");
  37688. }
  37689. for (abbreviation in abbreviations) {
  37690. regexp = new RegExp("[^a-zA-Z]" + locale2.abbreviations[abbreviation] + "(?:\\)|(\\" + locale2.currency.symbol + ")?(?:\\))?)?$");
  37691. if (stringOriginal.match(regexp)) {
  37692. value *= Math.pow(10, abbreviations[abbreviation]);
  37693. break;
  37694. }
  37695. }
  37696. value *= (string.split("-").length + Math.min(string.split("(").length - 1, string.split(")").length - 1)) % 2 ? 1 : -1;
  37697. string = string.replace(/[^0-9\.]+/g, "");
  37698. value *= Number(string);
  37699. }
  37700. return value;
  37701. },
  37702. isNaN: function(value) {
  37703. return typeof value === "number" && isNaN(value);
  37704. },
  37705. includes: function(string, search) {
  37706. return string.indexOf(search) !== -1;
  37707. },
  37708. insert: function(string, subString, start) {
  37709. return string.slice(0, start) + subString + string.slice(start);
  37710. },
  37711. reduce: function(array, callback) {
  37712. if (this === null) {
  37713. throw new TypeError("Array.prototype.reduce called on null or undefined");
  37714. }
  37715. if (typeof callback !== "function") {
  37716. throw new TypeError(callback + " is not a function");
  37717. }
  37718. var t = Object(array), len = t.length >>> 0, k = 0, value;
  37719. if (arguments.length === 3) {
  37720. value = arguments[2];
  37721. } else {
  37722. while (k < len && !(k in t)) {
  37723. k++;
  37724. }
  37725. if (k >= len) {
  37726. throw new TypeError("Reduce of empty array with no initial value");
  37727. }
  37728. value = t[k++];
  37729. }
  37730. for (; k < len; k++) {
  37731. if (k in t) {
  37732. value = callback(value, t[k], k, t);
  37733. }
  37734. }
  37735. return value;
  37736. },
  37737. multiplier: function(x) {
  37738. var parts = x.toString().split(".");
  37739. return parts.length < 2 ? 1 : Math.pow(10, parts[1].length);
  37740. },
  37741. correctionFactor: function() {
  37742. var args = Array.prototype.slice.call(arguments);
  37743. return args.reduce(function(accum, next) {
  37744. var mn = _.multiplier(next);
  37745. return accum > mn ? accum : mn;
  37746. }, 1);
  37747. },
  37748. toFixed: function(value, maxDecimals, roundingFunction, optionals) {
  37749. var splitValue = value.toString().split("."), minDecimals = maxDecimals - (optionals || 0), boundedPrecision, optionalsRegExp, power, output;
  37750. if (splitValue.length === 2) {
  37751. boundedPrecision = Math.min(Math.max(splitValue[1].length, minDecimals), maxDecimals);
  37752. } else {
  37753. boundedPrecision = minDecimals;
  37754. }
  37755. power = Math.pow(10, boundedPrecision);
  37756. output = (roundingFunction(value + "e+" + boundedPrecision) / power).toFixed(boundedPrecision);
  37757. if (optionals > maxDecimals - boundedPrecision) {
  37758. optionalsRegExp = new RegExp("\\.?0{1," + (optionals - (maxDecimals - boundedPrecision)) + "}$");
  37759. output = output.replace(optionalsRegExp, "");
  37760. }
  37761. return output;
  37762. }
  37763. };
  37764. numeral7.options = options;
  37765. numeral7.formats = formats2;
  37766. numeral7.locales = locales2;
  37767. numeral7.locale = function(key) {
  37768. if (key) {
  37769. options.currentLocale = key.toLowerCase();
  37770. }
  37771. return options.currentLocale;
  37772. };
  37773. numeral7.localeData = function(key) {
  37774. if (!key) {
  37775. return locales2[options.currentLocale];
  37776. }
  37777. key = key.toLowerCase();
  37778. if (!locales2[key]) {
  37779. throw new Error("Unknown locale : " + key);
  37780. }
  37781. return locales2[key];
  37782. };
  37783. numeral7.reset = function() {
  37784. for (var property in defaults2) {
  37785. options[property] = defaults2[property];
  37786. }
  37787. };
  37788. numeral7.zeroFormat = function(format) {
  37789. options.zeroFormat = typeof format === "string" ? format : null;
  37790. };
  37791. numeral7.nullFormat = function(format) {
  37792. options.nullFormat = typeof format === "string" ? format : null;
  37793. };
  37794. numeral7.defaultFormat = function(format) {
  37795. options.defaultFormat = typeof format === "string" ? format : "0.0";
  37796. };
  37797. numeral7.register = function(type, name2, format) {
  37798. name2 = name2.toLowerCase();
  37799. if (this[type + "s"][name2]) {
  37800. throw new TypeError(name2 + " " + type + " already registered.");
  37801. }
  37802. this[type + "s"][name2] = format;
  37803. return format;
  37804. };
  37805. numeral7.validate = function(val, culture) {
  37806. var _decimalSep, _thousandSep, _currSymbol, _valArray, _abbrObj, _thousandRegEx, localeData, temp;
  37807. if (typeof val !== "string") {
  37808. val += "";
  37809. if (console.warn) {
  37810. console.warn("Numeral.js: Value is not string. It has been co-erced to: ", val);
  37811. }
  37812. }
  37813. val = val.trim();
  37814. if (!!val.match(/^\d+$/)) {
  37815. return true;
  37816. }
  37817. if (val === "") {
  37818. return false;
  37819. }
  37820. try {
  37821. localeData = numeral7.localeData(culture);
  37822. } catch (e) {
  37823. localeData = numeral7.localeData(numeral7.locale());
  37824. }
  37825. _currSymbol = localeData.currency.symbol;
  37826. _abbrObj = localeData.abbreviations;
  37827. _decimalSep = localeData.delimiters.decimal;
  37828. if (localeData.delimiters.thousands === ".") {
  37829. _thousandSep = "\\.";
  37830. } else {
  37831. _thousandSep = localeData.delimiters.thousands;
  37832. }
  37833. temp = val.match(/^[^\d]+/);
  37834. if (temp !== null) {
  37835. val = val.substr(1);
  37836. if (temp[0] !== _currSymbol) {
  37837. return false;
  37838. }
  37839. }
  37840. temp = val.match(/[^\d]+$/);
  37841. if (temp !== null) {
  37842. val = val.slice(0, -1);
  37843. if (temp[0] !== _abbrObj.thousand && temp[0] !== _abbrObj.million && temp[0] !== _abbrObj.billion && temp[0] !== _abbrObj.trillion) {
  37844. return false;
  37845. }
  37846. }
  37847. _thousandRegEx = new RegExp(_thousandSep + "{2}");
  37848. if (!val.match(/[^\d.,]/g)) {
  37849. _valArray = val.split(_decimalSep);
  37850. if (_valArray.length > 2) {
  37851. return false;
  37852. } else {
  37853. if (_valArray.length < 2) {
  37854. return !!_valArray[0].match(/^\d+.*\d$/) && !_valArray[0].match(_thousandRegEx);
  37855. } else {
  37856. if (_valArray[0].length === 1) {
  37857. return !!_valArray[0].match(/^\d+$/) && !_valArray[0].match(_thousandRegEx) && !!_valArray[1].match(/^\d+$/);
  37858. } else {
  37859. return !!_valArray[0].match(/^\d+.*\d$/) && !_valArray[0].match(_thousandRegEx) && !!_valArray[1].match(/^\d+$/);
  37860. }
  37861. }
  37862. }
  37863. }
  37864. return false;
  37865. };
  37866. numeral7.fn = Numeral.prototype = {
  37867. clone: function() {
  37868. return numeral7(this);
  37869. },
  37870. format: function(inputString, roundingFunction) {
  37871. var value = this._value, format = inputString || options.defaultFormat, kind, output, formatFunction;
  37872. roundingFunction = roundingFunction || Math.round;
  37873. if (value === 0 && options.zeroFormat !== null) {
  37874. output = options.zeroFormat;
  37875. } else if (value === null && options.nullFormat !== null) {
  37876. output = options.nullFormat;
  37877. } else {
  37878. for (kind in formats2) {
  37879. if (format.match(formats2[kind].regexps.format)) {
  37880. formatFunction = formats2[kind].format;
  37881. break;
  37882. }
  37883. }
  37884. formatFunction = formatFunction || numeral7._.numberToFormat;
  37885. output = formatFunction(value, format, roundingFunction);
  37886. }
  37887. return output;
  37888. },
  37889. value: function() {
  37890. return this._value;
  37891. },
  37892. input: function() {
  37893. return this._input;
  37894. },
  37895. set: function(value) {
  37896. this._value = Number(value);
  37897. return this;
  37898. },
  37899. add: function(value) {
  37900. var corrFactor = _.correctionFactor.call(null, this._value, value);
  37901. function cback(accum, curr, currI, O) {
  37902. return accum + Math.round(corrFactor * curr);
  37903. }
  37904. this._value = _.reduce([this._value, value], cback, 0) / corrFactor;
  37905. return this;
  37906. },
  37907. subtract: function(value) {
  37908. var corrFactor = _.correctionFactor.call(null, this._value, value);
  37909. function cback(accum, curr, currI, O) {
  37910. return accum - Math.round(corrFactor * curr);
  37911. }
  37912. this._value = _.reduce([value], cback, Math.round(this._value * corrFactor)) / corrFactor;
  37913. return this;
  37914. },
  37915. multiply: function(value) {
  37916. function cback(accum, curr, currI, O) {
  37917. var corrFactor = _.correctionFactor(accum, curr);
  37918. return Math.round(accum * corrFactor) * Math.round(curr * corrFactor) / Math.round(corrFactor * corrFactor);
  37919. }
  37920. this._value = _.reduce([this._value, value], cback, 1);
  37921. return this;
  37922. },
  37923. divide: function(value) {
  37924. function cback(accum, curr, currI, O) {
  37925. var corrFactor = _.correctionFactor(accum, curr);
  37926. return Math.round(accum * corrFactor) / Math.round(curr * corrFactor);
  37927. }
  37928. this._value = _.reduce([this._value, value], cback);
  37929. return this;
  37930. },
  37931. difference: function(value) {
  37932. return Math.abs(numeral7(this._value).subtract(value).value());
  37933. }
  37934. };
  37935. numeral7.register("locale", "en", {
  37936. delimiters: {
  37937. thousands: ",",
  37938. decimal: "."
  37939. },
  37940. abbreviations: {
  37941. thousand: "k",
  37942. million: "m",
  37943. billion: "b",
  37944. trillion: "t"
  37945. },
  37946. ordinal: function(number) {
  37947. var b = number % 10;
  37948. return ~~(number % 100 / 10) === 1 ? "th" : b === 1 ? "st" : b === 2 ? "nd" : b === 3 ? "rd" : "th";
  37949. },
  37950. currency: {
  37951. symbol: "$"
  37952. }
  37953. });
  37954. (function() {
  37955. numeral7.register("format", "bps", {
  37956. regexps: {
  37957. format: /(BPS)/,
  37958. unformat: /(BPS)/
  37959. },
  37960. format: function(value, format, roundingFunction) {
  37961. var space = numeral7._.includes(format, " BPS") ? " " : "", output;
  37962. value = value * 1e4;
  37963. format = format.replace(/\s?BPS/, "");
  37964. output = numeral7._.numberToFormat(value, format, roundingFunction);
  37965. if (numeral7._.includes(output, ")")) {
  37966. output = output.split("");
  37967. output.splice(-1, 0, space + "BPS");
  37968. output = output.join("");
  37969. } else {
  37970. output = output + space + "BPS";
  37971. }
  37972. return output;
  37973. },
  37974. unformat: function(string) {
  37975. return +(numeral7._.stringToNumber(string) * 1e-4).toFixed(15);
  37976. }
  37977. });
  37978. })();
  37979. (function() {
  37980. var decimal = {
  37981. base: 1e3,
  37982. suffixes: ["B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"]
  37983. }, binary = {
  37984. base: 1024,
  37985. suffixes: ["B", "KiB", "MiB", "GiB", "TiB", "PiB", "EiB", "ZiB", "YiB"]
  37986. };
  37987. var allSuffixes = decimal.suffixes.concat(binary.suffixes.filter(function(item2) {
  37988. return decimal.suffixes.indexOf(item2) < 0;
  37989. }));
  37990. var unformatRegex = allSuffixes.join("|");
  37991. unformatRegex = "(" + unformatRegex.replace("B", "B(?!PS)") + ")";
  37992. numeral7.register("format", "bytes", {
  37993. regexps: {
  37994. format: /([0\s]i?b)/,
  37995. unformat: new RegExp(unformatRegex)
  37996. },
  37997. format: function(value, format, roundingFunction) {
  37998. var output, bytes = numeral7._.includes(format, "ib") ? binary : decimal, suffix = numeral7._.includes(format, " b") || numeral7._.includes(format, " ib") ? " " : "", power, min, max;
  37999. format = format.replace(/\s?i?b/, "");
  38000. for (power = 0; power <= bytes.suffixes.length; power++) {
  38001. min = Math.pow(bytes.base, power);
  38002. max = Math.pow(bytes.base, power + 1);
  38003. if (value === null || value === 0 || value >= min && value < max) {
  38004. suffix += bytes.suffixes[power];
  38005. if (min > 0) {
  38006. value = value / min;
  38007. }
  38008. break;
  38009. }
  38010. }
  38011. output = numeral7._.numberToFormat(value, format, roundingFunction);
  38012. return output + suffix;
  38013. },
  38014. unformat: function(string) {
  38015. var value = numeral7._.stringToNumber(string), power, bytesMultiplier;
  38016. if (value) {
  38017. for (power = decimal.suffixes.length - 1; power >= 0; power--) {
  38018. if (numeral7._.includes(string, decimal.suffixes[power])) {
  38019. bytesMultiplier = Math.pow(decimal.base, power);
  38020. break;
  38021. }
  38022. if (numeral7._.includes(string, binary.suffixes[power])) {
  38023. bytesMultiplier = Math.pow(binary.base, power);
  38024. break;
  38025. }
  38026. }
  38027. value *= bytesMultiplier || 1;
  38028. }
  38029. return value;
  38030. }
  38031. });
  38032. })();
  38033. (function() {
  38034. numeral7.register("format", "currency", {
  38035. regexps: {
  38036. format: /(\$)/
  38037. },
  38038. format: function(value, format, roundingFunction) {
  38039. var locale2 = numeral7.locales[numeral7.options.currentLocale], symbols = {
  38040. before: format.match(/^([\+|\-|\(|\s|\$]*)/)[0],
  38041. after: format.match(/([\+|\-|\)|\s|\$]*)$/)[0]
  38042. }, output, symbol, i2;
  38043. format = format.replace(/\s?\$\s?/, "");
  38044. output = numeral7._.numberToFormat(value, format, roundingFunction);
  38045. if (value >= 0) {
  38046. symbols.before = symbols.before.replace(/[\-\(]/, "");
  38047. symbols.after = symbols.after.replace(/[\-\)]/, "");
  38048. } else if (value < 0 && (!numeral7._.includes(symbols.before, "-") && !numeral7._.includes(symbols.before, "("))) {
  38049. symbols.before = "-" + symbols.before;
  38050. }
  38051. for (i2 = 0; i2 < symbols.before.length; i2++) {
  38052. symbol = symbols.before[i2];
  38053. switch (symbol) {
  38054. case "$":
  38055. output = numeral7._.insert(output, locale2.currency.symbol, i2);
  38056. break;
  38057. case " ":
  38058. output = numeral7._.insert(output, " ", i2 + locale2.currency.symbol.length - 1);
  38059. break;
  38060. }
  38061. }
  38062. for (i2 = symbols.after.length - 1; i2 >= 0; i2--) {
  38063. symbol = symbols.after[i2];
  38064. switch (symbol) {
  38065. case "$":
  38066. output = i2 === symbols.after.length - 1 ? output + locale2.currency.symbol : numeral7._.insert(output, locale2.currency.symbol, -(symbols.after.length - (1 + i2)));
  38067. break;
  38068. case " ":
  38069. output = i2 === symbols.after.length - 1 ? output + " " : numeral7._.insert(output, " ", -(symbols.after.length - (1 + i2) + locale2.currency.symbol.length - 1));
  38070. break;
  38071. }
  38072. }
  38073. return output;
  38074. }
  38075. });
  38076. })();
  38077. (function() {
  38078. numeral7.register("format", "exponential", {
  38079. regexps: {
  38080. format: /(e\+|e-)/,
  38081. unformat: /(e\+|e-)/
  38082. },
  38083. format: function(value, format, roundingFunction) {
  38084. var output, exponential = typeof value === "number" && !numeral7._.isNaN(value) ? value.toExponential() : "0e+0", parts = exponential.split("e");
  38085. format = format.replace(/e[\+|\-]{1}0/, "");
  38086. output = numeral7._.numberToFormat(Number(parts[0]), format, roundingFunction);
  38087. return output + "e" + parts[1];
  38088. },
  38089. unformat: function(string) {
  38090. var parts = numeral7._.includes(string, "e+") ? string.split("e+") : string.split("e-"), value = Number(parts[0]), power = Number(parts[1]);
  38091. power = numeral7._.includes(string, "e-") ? power *= -1 : power;
  38092. function cback(accum, curr, currI, O) {
  38093. var corrFactor = numeral7._.correctionFactor(accum, curr), num = accum * corrFactor * (curr * corrFactor) / (corrFactor * corrFactor);
  38094. return num;
  38095. }
  38096. return numeral7._.reduce([value, Math.pow(10, power)], cback, 1);
  38097. }
  38098. });
  38099. })();
  38100. (function() {
  38101. numeral7.register("format", "ordinal", {
  38102. regexps: {
  38103. format: /(o)/
  38104. },
  38105. format: function(value, format, roundingFunction) {
  38106. var locale2 = numeral7.locales[numeral7.options.currentLocale], output, ordinal = numeral7._.includes(format, " o") ? " " : "";
  38107. format = format.replace(/\s?o/, "");
  38108. ordinal += locale2.ordinal(value);
  38109. output = numeral7._.numberToFormat(value, format, roundingFunction);
  38110. return output + ordinal;
  38111. }
  38112. });
  38113. })();
  38114. (function() {
  38115. numeral7.register("format", "percentage", {
  38116. regexps: {
  38117. format: /(%)/,
  38118. unformat: /(%)/
  38119. },
  38120. format: function(value, format, roundingFunction) {
  38121. var space = numeral7._.includes(format, " %") ? " " : "", output;
  38122. if (numeral7.options.scalePercentBy100) {
  38123. value = value * 100;
  38124. }
  38125. format = format.replace(/\s?\%/, "");
  38126. output = numeral7._.numberToFormat(value, format, roundingFunction);
  38127. if (numeral7._.includes(output, ")")) {
  38128. output = output.split("");
  38129. output.splice(-1, 0, space + "%");
  38130. output = output.join("");
  38131. } else {
  38132. output = output + space + "%";
  38133. }
  38134. return output;
  38135. },
  38136. unformat: function(string) {
  38137. var number = numeral7._.stringToNumber(string);
  38138. if (numeral7.options.scalePercentBy100) {
  38139. return number * 0.01;
  38140. }
  38141. return number;
  38142. }
  38143. });
  38144. })();
  38145. (function() {
  38146. numeral7.register("format", "time", {
  38147. regexps: {
  38148. format: /(:)/,
  38149. unformat: /(:)/
  38150. },
  38151. format: function(value, format, roundingFunction) {
  38152. var hours = Math.floor(value / 60 / 60), minutes = Math.floor((value - hours * 60 * 60) / 60), seconds = Math.round(value - hours * 60 * 60 - minutes * 60);
  38153. return hours + ":" + (minutes < 10 ? "0" + minutes : minutes) + ":" + (seconds < 10 ? "0" + seconds : seconds);
  38154. },
  38155. unformat: function(string) {
  38156. var timeArray = string.split(":"), seconds = 0;
  38157. if (timeArray.length === 3) {
  38158. seconds = seconds + Number(timeArray[0]) * 60 * 60;
  38159. seconds = seconds + Number(timeArray[1]) * 60;
  38160. seconds = seconds + Number(timeArray[2]);
  38161. } else if (timeArray.length === 2) {
  38162. seconds = seconds + Number(timeArray[0]) * 60;
  38163. seconds = seconds + Number(timeArray[1]);
  38164. }
  38165. return Number(seconds);
  38166. }
  38167. });
  38168. })();
  38169. return numeral7;
  38170. });
  38171. }
  38172. });
  38173. // src/global/format.js
  38174. function datenum_local(v, date1904) {
  38175. var epoch = Date.UTC(v.getFullYear(), v.getMonth(), v.getDate(), v.getHours(), v.getMinutes(), v.getSeconds());
  38176. var dnthresh_utc = Date.UTC(1899, 11, 31, 0, 0, 0);
  38177. if (date1904)
  38178. epoch -= 1461 * 24 * 60 * 60 * 1e3;
  38179. else if (v >= base1904)
  38180. epoch += 24 * 60 * 60 * 1e3;
  38181. return (epoch - dnthresh_utc) / (24 * 60 * 60 * 1e3);
  38182. }
  38183. function parseDate(str, fixdate) {
  38184. var d = new Date(str);
  38185. if (good_pd) {
  38186. if (fixdate > 0)
  38187. d.setTime(d.getTime() + d.getTimezoneOffset() * 60 * 1e3);
  38188. else if (fixdate < 0)
  38189. d.setTime(d.getTime() - d.getTimezoneOffset() * 60 * 1e3);
  38190. return d;
  38191. }
  38192. if (str instanceof Date)
  38193. return str;
  38194. if (good_pd_date.getFullYear() == 1917 && !isNaN(d.getFullYear())) {
  38195. var s = d.getFullYear();
  38196. if (str.indexOf("" + s) > -1)
  38197. return d;
  38198. d.setFullYear(d.getFullYear() + 100);
  38199. return d;
  38200. }
  38201. var n = str.match(/\d+/g) || ["2017", "2", "19", "0", "0", "0"];
  38202. var out = new Date(+n[0], +n[1] - 1, +n[2], +n[3] || 0, +n[4] || 0, +n[5] || 0);
  38203. if (str.indexOf("Z") > -1)
  38204. out = new Date(out.getTime() - out.getTimezoneOffset() * 60 * 1e3);
  38205. return out;
  38206. }
  38207. function fuzzynum(s) {
  38208. var v = Number(s);
  38209. if (typeof s == "number") {
  38210. return s;
  38211. }
  38212. if (!isNaN(v))
  38213. return v;
  38214. var wt = 1;
  38215. var ss = s.replace(/([\d]),([\d])/g, "$1$2").replace(/[$]/g, "").replace(/[%]/g, function() {
  38216. wt *= 100;
  38217. return "";
  38218. });
  38219. if (!isNaN(v = Number(ss)))
  38220. return v / wt;
  38221. ss = ss.replace(/[(](.*)[)]/, function($$2, $1) {
  38222. wt = -wt;
  38223. return $1;
  38224. });
  38225. if (!isNaN(v = Number(ss)))
  38226. return v / wt;
  38227. return v;
  38228. }
  38229. function genarate(value) {
  38230. var ret = [];
  38231. var m = null, ct = {}, v = value;
  38232. if (value == null) {
  38233. return null;
  38234. }
  38235. if (/^-?[0-9]{1,}[,][0-9]{3}(.[0-9]{1,2})?$/.test(value)) {
  38236. m = value;
  38237. v = Number(value.split(".")[0].replace(",", ""));
  38238. let fa = "#,##0";
  38239. if (value.split(".")[1]) {
  38240. fa = "#,##0.";
  38241. for (let i3 = 0; i3 < value.split(".")[1].length; i3++) {
  38242. fa += 0;
  38243. }
  38244. }
  38245. ct = {fa, t: "n"};
  38246. } else if (value.toString().substr(0, 1) === "'") {
  38247. m = value.toString().substr(1);
  38248. ct = {"fa": "@", "t": "s"};
  38249. } else if (value.toString().toUpperCase() === "TRUE") {
  38250. m = "TRUE";
  38251. ct = {"fa": "General", "t": "b"};
  38252. v = true;
  38253. } else if (value.toString().toUpperCase() === "FALSE") {
  38254. m = "FALSE";
  38255. ct = {"fa": "General", "t": "b"};
  38256. v = false;
  38257. } else if (valueIsError(value)) {
  38258. m = value.toString();
  38259. ct = {"fa": "General", "t": "e"};
  38260. } else if (/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[12])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i.test(value)) {
  38261. m = value.toString();
  38262. ct = {"fa": "@", "t": "s"};
  38263. } else if (isRealNum(value) && Math.abs(parseFloat(value)) > 0 && (Math.abs(parseFloat(value)) >= 1e11 || Math.abs(parseFloat(value)) < 1e-9)) {
  38264. v = (0, import_numeral.default)(value).value();
  38265. var str = v.toExponential();
  38266. if (str.indexOf(".") > -1) {
  38267. var strlen = str.split(".")[1].split("e")[0].length;
  38268. if (strlen > 5) {
  38269. strlen = 5;
  38270. }
  38271. ct = {"fa": "#0." + new Array(strlen + 1).join("0") + "E+00", "t": "n"};
  38272. } else {
  38273. ct = {"fa": "#0.E+00", "t": "n"};
  38274. }
  38275. m = SSF.format(ct.fa, v);
  38276. } else if (value.toString().indexOf("%") > -1) {
  38277. var index2 = value.toString().indexOf("%");
  38278. var value2 = value.toString().substr(0, index2);
  38279. var value3 = value2.replace(/,/g, "");
  38280. if (index2 == value.toString().length - 1 && isRealNum(value3)) {
  38281. if (value2.indexOf(".") > -1) {
  38282. if (value2.indexOf(".") == value2.lastIndexOf(".")) {
  38283. var value4 = value2.split(".")[0];
  38284. var value5 = value2.split(".")[1];
  38285. var len = value5.length;
  38286. if (len > 9) {
  38287. len = 9;
  38288. }
  38289. if (value4.indexOf(",") > -1) {
  38290. var isThousands = true;
  38291. var ThousandsArr = value4.split(",");
  38292. for (var i2 = 1; i2 < ThousandsArr.length; i2++) {
  38293. if (ThousandsArr[i2].length < 3) {
  38294. isThousands = false;
  38295. break;
  38296. }
  38297. }
  38298. if (isThousands) {
  38299. ct = {"fa": "#,##0." + new Array(len + 1).join("0") + "%", "t": "n"};
  38300. v = (0, import_numeral.default)(value).value();
  38301. m = SSF.format(ct.fa, v);
  38302. } else {
  38303. m = value.toString();
  38304. ct = {"fa": "@", "t": "s"};
  38305. }
  38306. } else {
  38307. ct = {"fa": "0." + new Array(len + 1).join("0") + "%", "t": "n"};
  38308. v = (0, import_numeral.default)(value).value();
  38309. m = SSF.format(ct.fa, v);
  38310. }
  38311. } else {
  38312. m = value.toString();
  38313. ct = {"fa": "@", "t": "s"};
  38314. }
  38315. } else if (value2.indexOf(",") > -1) {
  38316. var isThousands = true;
  38317. var ThousandsArr = value2.split(",");
  38318. for (var i2 = 1; i2 < ThousandsArr.length; i2++) {
  38319. if (ThousandsArr[i2].length < 3) {
  38320. isThousands = false;
  38321. break;
  38322. }
  38323. }
  38324. if (isThousands) {
  38325. ct = {"fa": "#,##0%", "t": "n"};
  38326. v = (0, import_numeral.default)(value).value();
  38327. m = SSF.format(ct.fa, v);
  38328. } else {
  38329. m = value.toString();
  38330. ct = {"fa": "@", "t": "s"};
  38331. }
  38332. } else {
  38333. ct = {"fa": "0%", "t": "n"};
  38334. v = (0, import_numeral.default)(value).value();
  38335. m = SSF.format(ct.fa, v);
  38336. }
  38337. } else {
  38338. m = value.toString();
  38339. ct = {"fa": "@", "t": "s"};
  38340. }
  38341. } else if (value.toString().indexOf(".") > -1) {
  38342. if (value.toString().indexOf(".") == value.toString().lastIndexOf(".")) {
  38343. var value1 = value.toString().split(".")[0];
  38344. var value2 = value.toString().split(".")[1];
  38345. var len = value2.length;
  38346. if (len > 9) {
  38347. len = 9;
  38348. }
  38349. if (value1.indexOf(",") > -1) {
  38350. var isThousands = true;
  38351. var ThousandsArr = value1.split(",");
  38352. for (var i2 = 1; i2 < ThousandsArr.length; i2++) {
  38353. if (!isRealNum(ThousandsArr[i2]) || ThousandsArr[i2].length < 3) {
  38354. isThousands = false;
  38355. break;
  38356. }
  38357. }
  38358. if (isThousands) {
  38359. ct = {"fa": "#,##0." + new Array(len + 1).join("0"), "t": "n"};
  38360. v = (0, import_numeral.default)(value).value();
  38361. m = SSF.format(ct.fa, v);
  38362. } else {
  38363. m = value.toString();
  38364. ct = {"fa": "@", "t": "s"};
  38365. }
  38366. } else {
  38367. if (isRealNum(value1) && isRealNum(value2)) {
  38368. ct = {"fa": "0." + new Array(len + 1).join("0"), "t": "n"};
  38369. v = (0, import_numeral.default)(value).value();
  38370. m = SSF.format(ct.fa, v);
  38371. } else {
  38372. m = value.toString();
  38373. ct = {"fa": "@", "t": "s"};
  38374. }
  38375. }
  38376. } else {
  38377. m = value.toString();
  38378. ct = {"fa": "@", "t": "s"};
  38379. }
  38380. } else if (isRealNum(value)) {
  38381. m = value.toString();
  38382. ct = {"fa": "General", "t": "n"};
  38383. v = parseFloat(value);
  38384. } else if (isdatetime(value) && (value.toString().indexOf(".") > -1 || value.toString().indexOf(":") > -1 || value.toString().length < 16)) {
  38385. v = datenum_local(parseDate(value.toString().replace(/-/g, "/")));
  38386. if (v.toString().indexOf(".") > -1) {
  38387. if (value.toString().length > 18) {
  38388. ct.fa = "yyyy-MM-dd hh:mm:ss";
  38389. } else if (value.toString().length > 11) {
  38390. ct.fa = "yyyy-MM-dd hh:mm";
  38391. } else {
  38392. ct.fa = "yyyy-MM-dd";
  38393. }
  38394. } else {
  38395. ct.fa = "yyyy-MM-dd";
  38396. }
  38397. ct.t = "d";
  38398. m = SSF.format(ct.fa, v);
  38399. } else {
  38400. m = value;
  38401. ct.fa = "General";
  38402. ct.t = "g";
  38403. }
  38404. return [m, ct, v];
  38405. }
  38406. function update(fmt, v) {
  38407. return SSF.format(fmt, v);
  38408. }
  38409. function is_date(fmt, v) {
  38410. return SSF.is_date(fmt, v);
  38411. }
  38412. function valueShowEs(r2, c2, d) {
  38413. var value = getcellvalue(r2, c2, d, "m");
  38414. if (value == null) {
  38415. value = getcellvalue(r2, c2, d, "v");
  38416. } else {
  38417. if (!isNaN(fuzzynum(value))) {
  38418. if (typeof value == "string" && value.indexOf("%") > -1) {
  38419. } else {
  38420. value = getcellvalue(r2, c2, d, "v");
  38421. }
  38422. } else if (d[r2][c2].ct != null && d[r2][c2].ct.t == "d") {
  38423. } else if (d[r2][c2].ct != null && d[r2][c2].ct.t == "b") {
  38424. } else {
  38425. value = getcellvalue(r2, c2, d, "v");
  38426. }
  38427. }
  38428. return value;
  38429. }
  38430. var import_numeral, SSF, make_ssf, XLMLFormatMap, unescapexml, basedate, dnthresh, base1904, good_pd_date, good_pd;
  38431. var init_format = __esm({
  38432. "src/global/format.js"() {
  38433. init_validate();
  38434. init_datecontroll();
  38435. init_getdata();
  38436. import_numeral = __toModule(require_numeral());
  38437. SSF = {};
  38438. make_ssf = function make_ssf2(SSF2) {
  38439. SSF2.version = "0.11.2";
  38440. function _strrev(x) {
  38441. var o = "", i2 = x.length - 1;
  38442. while (i2 >= 0)
  38443. o += x.charAt(i2--);
  38444. return o;
  38445. }
  38446. function fill(c2, l) {
  38447. var o = "";
  38448. while (o.length < l)
  38449. o += c2;
  38450. return o;
  38451. }
  38452. function pad0(v, d) {
  38453. var t = "" + v;
  38454. return t.length >= d ? t : fill("0", d - t.length) + t;
  38455. }
  38456. function pad_(v, d) {
  38457. var t = "" + v;
  38458. return t.length >= d ? t : fill(" ", d - t.length) + t;
  38459. }
  38460. function rpad_(v, d) {
  38461. var t = "" + v;
  38462. return t.length >= d ? t : t + fill(" ", d - t.length);
  38463. }
  38464. function pad0r1(v, d) {
  38465. var t = "" + Math.round(v);
  38466. return t.length >= d ? t : fill("0", d - t.length) + t;
  38467. }
  38468. function pad0r2(v, d) {
  38469. var t = "" + v;
  38470. return t.length >= d ? t : fill("0", d - t.length) + t;
  38471. }
  38472. var p2_32 = Math.pow(2, 32);
  38473. function pad0r(v, d) {
  38474. if (v > p2_32 || v < -p2_32)
  38475. return pad0r1(v, d);
  38476. var i2 = Math.round(v);
  38477. return pad0r2(i2, d);
  38478. }
  38479. function isgeneral(s, i2) {
  38480. i2 = i2 || 0;
  38481. return s.length >= 7 + i2 && (s.charCodeAt(i2) | 32) === 103 && (s.charCodeAt(i2 + 1) | 32) === 101 && (s.charCodeAt(i2 + 2) | 32) === 110 && (s.charCodeAt(i2 + 3) | 32) === 101 && (s.charCodeAt(i2 + 4) | 32) === 114 && (s.charCodeAt(i2 + 5) | 32) === 97 && (s.charCodeAt(i2 + 6) | 32) === 108;
  38482. }
  38483. var days = [
  38484. ["Sun", "Sunday"],
  38485. ["Mon", "Monday"],
  38486. ["Tue", "Tuesday"],
  38487. ["Wed", "Wednesday"],
  38488. ["Thu", "Thursday"],
  38489. ["Fri", "Friday"],
  38490. ["Sat", "Saturday"]
  38491. ];
  38492. var months = [
  38493. ["J", "Jan", "January"],
  38494. ["F", "Feb", "February"],
  38495. ["M", "Mar", "March"],
  38496. ["A", "Apr", "April"],
  38497. ["M", "May", "May"],
  38498. ["J", "Jun", "June"],
  38499. ["J", "Jul", "July"],
  38500. ["A", "Aug", "August"],
  38501. ["S", "Sep", "September"],
  38502. ["O", "Oct", "October"],
  38503. ["N", "Nov", "November"],
  38504. ["D", "Dec", "December"]
  38505. ];
  38506. function init_table(t) {
  38507. t[0] = "General";
  38508. t[1] = "0";
  38509. t[2] = "0.00";
  38510. t[3] = "#,##0";
  38511. t[4] = "#,##0.00";
  38512. t[9] = "0%";
  38513. t[10] = "0.00%";
  38514. t[11] = "0.00E+00";
  38515. t[12] = "# ?/?";
  38516. t[13] = "# ??/??";
  38517. t[14] = "m/d/yy";
  38518. t[15] = "d-mmm-yy";
  38519. t[16] = "d-mmm";
  38520. t[17] = "mmm-yy";
  38521. t[18] = "h:mm AM/PM";
  38522. t[19] = "h:mm:ss AM/PM";
  38523. t[20] = "h:mm";
  38524. t[21] = "h:mm:ss";
  38525. t[22] = "m/d/yy h:mm";
  38526. t[37] = "#,##0 ;(#,##0)";
  38527. t[38] = "#,##0 ;[Red](#,##0)";
  38528. t[39] = "#,##0.00;(#,##0.00)";
  38529. t[40] = "#,##0.00;[Red](#,##0.00)";
  38530. t[45] = "mm:ss";
  38531. t[46] = "[h]:mm:ss";
  38532. t[47] = "mmss.0";
  38533. t[48] = "##0.0E+0";
  38534. t[49] = "@";
  38535. t[56] = '"\u4E0A\u5348/\u4E0B\u5348 "hh"\u6642"mm"\u5206"ss"\u79D2 "';
  38536. t[65535] = "General";
  38537. }
  38538. var table_fmt = {};
  38539. init_table(table_fmt);
  38540. var default_map = [];
  38541. var defi = 0;
  38542. for (defi = 5; defi <= 8; ++defi)
  38543. default_map[defi] = 32 + defi;
  38544. for (defi = 23; defi <= 26; ++defi)
  38545. default_map[defi] = 0;
  38546. for (defi = 27; defi <= 31; ++defi)
  38547. default_map[defi] = 14;
  38548. for (defi = 50; defi <= 58; ++defi)
  38549. default_map[defi] = 14;
  38550. for (defi = 59; defi <= 62; ++defi)
  38551. default_map[defi] = defi - 58;
  38552. for (defi = 67; defi <= 68; ++defi)
  38553. default_map[defi] = defi - 58;
  38554. for (defi = 72; defi <= 75; ++defi)
  38555. default_map[defi] = defi - 58;
  38556. for (defi = 67; defi <= 68; ++defi)
  38557. default_map[defi] = defi - 57;
  38558. for (defi = 76; defi <= 78; ++defi)
  38559. default_map[defi] = defi - 56;
  38560. for (defi = 79; defi <= 81; ++defi)
  38561. default_map[defi] = defi - 34;
  38562. var default_str = [];
  38563. default_str[5] = default_str[63] = '"$"#,##0_);\\("$"#,##0\\)';
  38564. default_str[6] = default_str[64] = '"$"#,##0_);[Red]\\("$"#,##0\\)';
  38565. default_str[7] = default_str[65] = '"$"#,##0.00_);\\("$"#,##0.00\\)';
  38566. default_str[8] = default_str[66] = '"$"#,##0.00_);[Red]\\("$"#,##0.00\\)';
  38567. default_str[41] = '_(* #,##0_);_(* \\(#,##0\\);_(* "-"_);_(@_)';
  38568. default_str[42] = '_("$"* #,##0_);_("$"* \\(#,##0\\);_("$"* "-"_);_(@_)';
  38569. default_str[43] = '_(* #,##0.00_);_(* \\(#,##0.00\\);_(* "-"??_);_(@_)';
  38570. default_str[44] = '_("$"* #,##0.00_);_("$"* \\(#,##0.00\\);_("$"* "-"??_);_(@_)';
  38571. function frac(x, D, mixed) {
  38572. var sgn = x < 0 ? -1 : 1;
  38573. var B = x * sgn;
  38574. var P_2 = 0, P_1 = 1, P = 0;
  38575. var Q_2 = 1, Q_1 = 0, Q = 0;
  38576. var A = Math.floor(B);
  38577. while (Q_1 < D) {
  38578. A = Math.floor(B);
  38579. P = A * P_1 + P_2;
  38580. Q = A * Q_1 + Q_2;
  38581. if (B - A < 5e-8)
  38582. break;
  38583. B = 1 / (B - A);
  38584. P_2 = P_1;
  38585. P_1 = P;
  38586. Q_2 = Q_1;
  38587. Q_1 = Q;
  38588. }
  38589. if (Q > D) {
  38590. if (Q_1 > D) {
  38591. Q = Q_2;
  38592. P = P_2;
  38593. } else {
  38594. Q = Q_1;
  38595. P = P_1;
  38596. }
  38597. }
  38598. if (!mixed)
  38599. return [0, sgn * P, Q];
  38600. var q = Math.floor(sgn * P / Q);
  38601. return [q, sgn * P - q * Q, Q];
  38602. }
  38603. function parse_date_code(v, opts, b2) {
  38604. if (v > 2958465 || v < 0)
  38605. return null;
  38606. var date = v | 0, time = Math.floor(86400 * (v - date)), dow = 0;
  38607. var dout = [];
  38608. var out = {
  38609. D: date,
  38610. T: time,
  38611. u: 86400 * (v - date) - time,
  38612. y: 0,
  38613. m: 0,
  38614. d: 0,
  38615. H: 0,
  38616. M: 0,
  38617. S: 0,
  38618. q: 0
  38619. };
  38620. if (Math.abs(out.u) < 1e-6)
  38621. out.u = 0;
  38622. if (opts && opts.date1904)
  38623. date += 1462;
  38624. if (out.u > 0.9999) {
  38625. out.u = 0;
  38626. if (++time == 86400) {
  38627. out.T = time = 0;
  38628. ++date;
  38629. ++out.D;
  38630. }
  38631. }
  38632. if (date === 60) {
  38633. dout = b2 ? [1317, 10, 29] : [1900, 2, 29];
  38634. dow = 3;
  38635. } else if (date === 0) {
  38636. dout = b2 ? [1317, 8, 29] : [1900, 1, 0];
  38637. dow = 6;
  38638. } else {
  38639. if (date > 60)
  38640. --date;
  38641. var d = new Date(1900, 0, 1);
  38642. d.setDate(d.getDate() + date - 1);
  38643. dout = [d.getFullYear(), d.getMonth() + 1, d.getDate()];
  38644. dow = d.getDay();
  38645. if (date < 60)
  38646. dow = (dow + 6) % 7;
  38647. if (b2)
  38648. dow = fix_hijri(d, dout);
  38649. }
  38650. out.y = dout[0];
  38651. out.m = dout[1];
  38652. out.d = dout[2];
  38653. out.S = time % 60;
  38654. time = Math.floor(time / 60);
  38655. out.M = time % 60;
  38656. time = Math.floor(time / 60);
  38657. out.H = time;
  38658. out.q = dow;
  38659. return out;
  38660. }
  38661. SSF2.parse_date_code = parse_date_code;
  38662. var basedate2 = new Date(1899, 11, 31, 0, 0, 0);
  38663. var dnthresh2 = basedate2.getTime();
  38664. var base19042 = new Date(1900, 2, 1, 0, 0, 0);
  38665. function datenum_local2(v, date1904) {
  38666. var epoch = v.getTime();
  38667. if (date1904)
  38668. epoch -= 1461 * 24 * 60 * 60 * 1e3;
  38669. else if (v >= base19042)
  38670. epoch += 24 * 60 * 60 * 1e3;
  38671. return (epoch - (dnthresh2 + (v.getTimezoneOffset() - basedate2.getTimezoneOffset()) * 6e4)) / (24 * 60 * 60 * 1e3);
  38672. }
  38673. function general_fmt_int(v) {
  38674. return v.toString(10);
  38675. }
  38676. SSF2._general_int = general_fmt_int;
  38677. var general_fmt_num = function make_general_fmt_num() {
  38678. var trailing_zeroes_and_decimal = /(?:\.0*|(\.\d*[1-9])0+)$/;
  38679. function strip_decimal(o) {
  38680. return o.indexOf(".") == -1 ? o : o.replace(trailing_zeroes_and_decimal, "$1");
  38681. }
  38682. var mantissa_zeroes_and_decimal = /(?:\.0*|(\.\d*[1-9])0+)[Ee]/;
  38683. var exp_with_single_digit = /(E[+-])(\d)$/;
  38684. function normalize_exp(o) {
  38685. if (o.indexOf("E") == -1)
  38686. return o;
  38687. return o.replace(mantissa_zeroes_and_decimal, "$1E").replace(exp_with_single_digit, "$10$2");
  38688. }
  38689. function small_exp(v) {
  38690. var w = v < 0 ? 12 : 11;
  38691. var o = strip_decimal(v.toFixed(12));
  38692. if (o.length <= w)
  38693. return o;
  38694. o = v.toPrecision(10);
  38695. if (o.length <= w)
  38696. return o;
  38697. return v.toExponential(5);
  38698. }
  38699. function large_exp(v) {
  38700. var o = strip_decimal(v.toFixed(11));
  38701. return o.length > (v < 0 ? 12 : 11) || o === "0" || o === "-0" ? v.toPrecision(6) : o;
  38702. }
  38703. function general_fmt_num_base(v) {
  38704. var V = Math.floor(Math.log(Math.abs(v)) * Math.LOG10E), o;
  38705. if (V >= -4 && V <= -1)
  38706. o = v.toPrecision(10 + V);
  38707. else if (Math.abs(V) <= 9)
  38708. o = small_exp(v);
  38709. else if (V === 10)
  38710. o = v.toFixed(10).substr(0, 12);
  38711. else
  38712. o = large_exp(v);
  38713. return strip_decimal(normalize_exp(o.toUpperCase()));
  38714. }
  38715. return general_fmt_num_base;
  38716. }();
  38717. SSF2._general_num = general_fmt_num;
  38718. function general_fmt(v, opts) {
  38719. switch (typeof v) {
  38720. case "string":
  38721. return v;
  38722. case "boolean":
  38723. return v ? "TRUE" : "FALSE";
  38724. case "number":
  38725. return (v | 0) === v ? v.toString(10) : general_fmt_num(v);
  38726. case "undefined":
  38727. return "";
  38728. case "object":
  38729. if (v == null)
  38730. return "";
  38731. if (v instanceof Date)
  38732. return format(14, datenum_local2(v, opts && opts.date1904), opts);
  38733. }
  38734. throw new Error("unsupported value in General format: " + v);
  38735. }
  38736. SSF2._general = general_fmt;
  38737. function fix_hijri(date, o) {
  38738. o[0] -= 581;
  38739. var dow = date.getDay();
  38740. if (date < 60)
  38741. dow = (dow + 6) % 7;
  38742. return dow;
  38743. }
  38744. var THAI_DIGITS = "\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59".split("");
  38745. function write_date(type, fmt, val, ss0) {
  38746. var o = "", ss = 0, tt = 0, y = val.y, out, outl = 0;
  38747. switch (type) {
  38748. case 98:
  38749. y = val.y + 543;
  38750. case 121:
  38751. switch (fmt.length) {
  38752. case 1:
  38753. case 2:
  38754. out = y % 100;
  38755. outl = 2;
  38756. break;
  38757. default:
  38758. out = y % 1e4;
  38759. outl = 4;
  38760. break;
  38761. }
  38762. break;
  38763. case 109:
  38764. switch (fmt.length) {
  38765. case 1:
  38766. case 2:
  38767. out = val.m;
  38768. outl = fmt.length;
  38769. break;
  38770. case 3:
  38771. return months[val.m - 1][1];
  38772. case 5:
  38773. return months[val.m - 1][0];
  38774. default:
  38775. return months[val.m - 1][2];
  38776. }
  38777. break;
  38778. case 100:
  38779. switch (fmt.length) {
  38780. case 1:
  38781. case 2:
  38782. out = val.d;
  38783. outl = fmt.length;
  38784. break;
  38785. case 3:
  38786. return days[val.q][0];
  38787. default:
  38788. return days[val.q][1];
  38789. }
  38790. break;
  38791. case 104:
  38792. switch (fmt.length) {
  38793. case 1:
  38794. case 2:
  38795. out = 1 + (val.H + 11) % 12;
  38796. outl = fmt.length;
  38797. break;
  38798. default:
  38799. throw "bad hour format: " + fmt;
  38800. }
  38801. break;
  38802. case 72:
  38803. switch (fmt.length) {
  38804. case 1:
  38805. case 2:
  38806. out = val.H;
  38807. outl = fmt.length;
  38808. break;
  38809. default:
  38810. throw "bad hour format: " + fmt;
  38811. }
  38812. break;
  38813. case 77:
  38814. switch (fmt.length) {
  38815. case 1:
  38816. case 2:
  38817. out = val.M;
  38818. outl = fmt.length;
  38819. break;
  38820. default:
  38821. throw "bad minute format: " + fmt;
  38822. }
  38823. break;
  38824. case 115:
  38825. if (fmt != "s" && fmt != "ss" && fmt != ".0" && fmt != ".00" && fmt != ".000")
  38826. throw "bad second format: " + fmt;
  38827. if (val.u === 0 && (fmt == "s" || fmt == "ss"))
  38828. return pad0(val.S, fmt.length);
  38829. if (ss0 >= 2)
  38830. tt = ss0 === 3 ? 1e3 : 100;
  38831. else
  38832. tt = ss0 === 1 ? 10 : 1;
  38833. ss = Math.round(tt * (val.S + val.u));
  38834. if (ss >= 60 * tt)
  38835. ss = 0;
  38836. if (fmt === "s")
  38837. return ss === 0 ? "0" : "" + ss / tt;
  38838. o = pad0(ss, 2 + ss0);
  38839. if (fmt === "ss")
  38840. return o.substr(0, 2);
  38841. return "." + o.substr(2, fmt.length - 1);
  38842. case 90:
  38843. switch (fmt) {
  38844. case "[h]":
  38845. case "[hh]":
  38846. out = val.D * 24 + val.H;
  38847. break;
  38848. case "[m]":
  38849. case "[mm]":
  38850. out = (val.D * 24 + val.H) * 60 + val.M;
  38851. break;
  38852. case "[s]":
  38853. case "[ss]":
  38854. out = ((val.D * 24 + val.H) * 60 + val.M) * 60 + Math.round(val.S + val.u);
  38855. break;
  38856. default:
  38857. throw "bad abstime format: " + fmt;
  38858. }
  38859. outl = fmt.length === 3 ? 1 : 2;
  38860. break;
  38861. case 101:
  38862. out = y;
  38863. outl = 1;
  38864. break;
  38865. }
  38866. var outstr = outl > 0 ? pad0(out, outl) : "";
  38867. return outstr;
  38868. }
  38869. function commaify(s) {
  38870. var w = 3;
  38871. if (s.length <= w)
  38872. return s;
  38873. var j = s.length % w, o = s.substr(0, j);
  38874. for (; j != s.length; j += w)
  38875. o += (o.length > 0 ? "," : "") + s.substr(j, w);
  38876. return o;
  38877. }
  38878. var write_num = function make_write_num() {
  38879. var pct1 = /%/g;
  38880. function write_num_pct(type, fmt, val) {
  38881. var sfmt = fmt.replace(pct1, ""), mul = fmt.length - sfmt.length;
  38882. return write_num(type, sfmt, val * Math.pow(10, 2 * mul)) + fill("%", mul);
  38883. }
  38884. function write_num_cm(type, fmt, val) {
  38885. var idx = fmt.length - 1;
  38886. while (fmt.charCodeAt(idx - 1) === 44)
  38887. --idx;
  38888. return write_num(type, fmt.substr(0, idx), val / Math.pow(10, 3 * (fmt.length - idx)));
  38889. }
  38890. function write_num_exp(fmt, val) {
  38891. var o;
  38892. var idx = fmt.indexOf("E") - fmt.indexOf(".") - 1;
  38893. if (fmt.match(/^#+0.0E\+0$/)) {
  38894. if (val == 0)
  38895. return "0.0E+0";
  38896. else if (val < 0)
  38897. return "-" + write_num_exp(fmt, -val);
  38898. var period = fmt.indexOf(".");
  38899. if (period === -1)
  38900. period = fmt.indexOf("E");
  38901. var ee = Math.floor(Math.log(val) * Math.LOG10E) % period;
  38902. if (ee < 0)
  38903. ee += period;
  38904. o = (val / Math.pow(10, ee)).toPrecision(idx + 1 + (period + ee) % period);
  38905. if (o.indexOf("e") === -1) {
  38906. var fakee = Math.floor(Math.log(val) * Math.LOG10E);
  38907. if (o.indexOf(".") === -1)
  38908. o = o.charAt(0) + "." + o.substr(1) + "E+" + (fakee - o.length + ee);
  38909. else
  38910. o += "E+" + (fakee - ee);
  38911. while (o.substr(0, 2) === "0.") {
  38912. o = o.charAt(0) + o.substr(2, period) + "." + o.substr(2 + period);
  38913. o = o.replace(/^0+([1-9])/, "$1").replace(/^0+\./, "0.");
  38914. }
  38915. o = o.replace(/\+-/, "-");
  38916. }
  38917. o = o.replace(/^([+-]?)(\d*)\.(\d*)[Ee]/, function($$2, $1, $2, $3) {
  38918. return $1 + $2 + $3.substr(0, (period + ee) % period) + "." + $3.substr(ee) + "E";
  38919. });
  38920. } else
  38921. o = val.toExponential(idx);
  38922. if (fmt.match(/E\+00$/) && o.match(/e[+-]\d$/))
  38923. o = o.substr(0, o.length - 1) + "0" + o.charAt(o.length - 1);
  38924. if (fmt.match(/E\-/) && o.match(/e\+/))
  38925. o = o.replace(/e\+/, "e");
  38926. return o.replace("e", "E");
  38927. }
  38928. var frac1 = /# (\?+)( ?)\/( ?)(\d+)/;
  38929. function write_num_f1(r2, aval, sign) {
  38930. var den = parseInt(r2[4], 10), rr = Math.round(aval * den), base = Math.floor(rr / den);
  38931. var myn = rr - base * den, myd = den;
  38932. return sign + (base === 0 ? "" : "" + base) + " " + (myn === 0 ? fill(" ", r2[1].length + 1 + r2[4].length) : pad_(myn, r2[1].length) + r2[2] + "/" + r2[3] + pad0(myd, r2[4].length));
  38933. }
  38934. function write_num_f2(r2, aval, sign) {
  38935. return sign + (aval === 0 ? "" : "" + aval) + fill(" ", r2[1].length + 2 + r2[4].length);
  38936. }
  38937. var dec1 = /^#*0*\.([0#]+)/;
  38938. var closeparen = /\).*[0#]/;
  38939. var phone = /\(###\) ###\\?-####/;
  38940. function hashq(str) {
  38941. var o = "", cc;
  38942. for (var i2 = 0; i2 != str.length; ++i2)
  38943. switch (cc = str.charCodeAt(i2)) {
  38944. case 35:
  38945. break;
  38946. case 63:
  38947. o += " ";
  38948. break;
  38949. case 48:
  38950. o += "0";
  38951. break;
  38952. default:
  38953. o += String.fromCharCode(cc);
  38954. }
  38955. return o;
  38956. }
  38957. function rnd(val, d) {
  38958. var dd = Math.pow(10, d);
  38959. return "" + Math.round(val * dd) / dd;
  38960. }
  38961. function dec(val, d) {
  38962. var _frac = val - Math.floor(val), dd = Math.pow(10, d);
  38963. if (d < ("" + Math.round(_frac * dd)).length)
  38964. return 0;
  38965. return Math.round(_frac * dd);
  38966. }
  38967. function carry(val, d) {
  38968. if (d < ("" + Math.round((val - Math.floor(val)) * Math.pow(10, d))).length) {
  38969. return 1;
  38970. }
  38971. return 0;
  38972. }
  38973. function flr(val) {
  38974. if (val < 2147483647 && val > -2147483648)
  38975. return "" + (val >= 0 ? val | 0 : val - 1 | 0);
  38976. return "" + Math.floor(val);
  38977. }
  38978. function write_num_flt(type, fmt, val) {
  38979. if (type.charCodeAt(0) === 40 && !fmt.match(closeparen)) {
  38980. var ffmt = fmt.replace(/\( */, "").replace(/ \)/, "").replace(/\)/, "");
  38981. if (val >= 0)
  38982. return write_num_flt("n", ffmt, val);
  38983. return "(" + write_num_flt("n", ffmt, -val) + ")";
  38984. }
  38985. if (fmt.charCodeAt(fmt.length - 1) === 44)
  38986. return write_num_cm(type, fmt, val);
  38987. if (fmt.indexOf("%") !== -1)
  38988. return write_num_pct(type, fmt, val);
  38989. if (fmt.indexOf("E") !== -1)
  38990. return write_num_exp(fmt, val);
  38991. if (fmt.charCodeAt(0) === 36)
  38992. return "$" + write_num_flt(type, fmt.substr(fmt.charAt(1) == " " ? 2 : 1), val);
  38993. var o;
  38994. var r2, ri, ff, aval = Math.abs(val), sign = val < 0 ? "-" : "";
  38995. if (fmt.match(/^00+$/))
  38996. return sign + pad0r(aval, fmt.length);
  38997. if (fmt.match(/^[#?]+$/)) {
  38998. o = pad0r(val, 0);
  38999. if (o === "0")
  39000. o = "";
  39001. return o.length > fmt.length ? o : hashq(fmt.substr(0, fmt.length - o.length)) + o;
  39002. }
  39003. if (r2 = fmt.match(frac1))
  39004. return write_num_f1(r2, aval, sign);
  39005. if (fmt.match(/^#+0+$/))
  39006. return sign + pad0r(aval, fmt.length - fmt.indexOf("0"));
  39007. if (r2 = fmt.match(dec1)) {
  39008. o = rnd(val, r2[1].length).replace(/^([^\.]+)$/, "$1." + hashq(r2[1])).replace(/\.$/, "." + hashq(r2[1])).replace(/\.(\d*)$/, function($$2, $1) {
  39009. return "." + $1 + fill("0", hashq(r2[1]).length - $1.length);
  39010. });
  39011. return fmt.indexOf("0.") !== -1 ? o : o.replace(/^0\./, ".");
  39012. }
  39013. fmt = fmt.replace(/^#+([0.])/, "$1");
  39014. if (r2 = fmt.match(/^(0*)\.(#*)$/)) {
  39015. return sign + rnd(aval, r2[2].length).replace(/\.(\d*[1-9])0*$/, ".$1").replace(/^(-?\d*)$/, "$1.").replace(/^0\./, r2[1].length ? "0." : ".");
  39016. }
  39017. if (r2 = fmt.match(/^#{1,3},##0(\.?)$/))
  39018. return sign + commaify(pad0r(aval, 0));
  39019. if (r2 = fmt.match(/^#,##0\.([#0]*0)$/)) {
  39020. return val < 0 ? "-" + write_num_flt(type, fmt, -val) : commaify("" + (Math.floor(val) + carry(val, r2[1].length))) + "." + pad0(dec(val, r2[1].length), r2[1].length);
  39021. }
  39022. if (r2 = fmt.match(/^#,#*,#0/))
  39023. return write_num_flt(type, fmt.replace(/^#,#*,/, ""), val);
  39024. if (r2 = fmt.match(/^([0#]+)(\\?-([0#]+))+$/)) {
  39025. o = _strrev(write_num_flt(type, fmt.replace(/[\\-]/g, ""), val));
  39026. ri = 0;
  39027. return _strrev(_strrev(fmt.replace(/\\/g, "")).replace(/[0#]/g, function(x2) {
  39028. return ri < o.length ? o.charAt(ri++) : x2 === "0" ? "0" : "";
  39029. }));
  39030. }
  39031. if (fmt.match(phone)) {
  39032. o = write_num_flt(type, "##########", val);
  39033. return "(" + o.substr(0, 3) + ") " + o.substr(3, 3) + "-" + o.substr(6);
  39034. }
  39035. var oa = "";
  39036. if (r2 = fmt.match(/^([#0?]+)( ?)\/( ?)([#0?]+)/)) {
  39037. ri = Math.min(r2[4].length, 7);
  39038. ff = frac(aval, Math.pow(10, ri) - 1, false);
  39039. o = "" + sign;
  39040. oa = write_num("n", r2[1], ff[1]);
  39041. if (oa.charAt(oa.length - 1) == " ")
  39042. oa = oa.substr(0, oa.length - 1) + "0";
  39043. o += oa + r2[2] + "/" + r2[3];
  39044. oa = rpad_(ff[2], ri);
  39045. if (oa.length < r2[4].length)
  39046. oa = hashq(r2[4].substr(r2[4].length - oa.length)) + oa;
  39047. o += oa;
  39048. return o;
  39049. }
  39050. if (r2 = fmt.match(/^# ([#0?]+)( ?)\/( ?)([#0?]+)/)) {
  39051. ri = Math.min(Math.max(r2[1].length, r2[4].length), 7);
  39052. ff = frac(aval, Math.pow(10, ri) - 1, true);
  39053. return sign + (ff[0] || (ff[1] ? "" : "0")) + " " + (ff[1] ? pad_(ff[1], ri) + r2[2] + "/" + r2[3] + rpad_(ff[2], ri) : fill(" ", 2 * ri + 1 + r2[2].length + r2[3].length));
  39054. }
  39055. if (r2 = fmt.match(/^[#0?]+$/)) {
  39056. o = pad0r(val, 0);
  39057. if (fmt.length <= o.length)
  39058. return o;
  39059. return hashq(fmt.substr(0, fmt.length - o.length)) + o;
  39060. }
  39061. if (r2 = fmt.match(/^([#0?]+)\.([#0]+)$/)) {
  39062. o = "" + val.toFixed(Math.min(r2[2].length, 10)).replace(/([^0])0+$/, "$1");
  39063. ri = o.indexOf(".");
  39064. var lres = fmt.indexOf(".") - ri, rres = fmt.length - o.length - lres;
  39065. return hashq(fmt.substr(0, lres) + o + fmt.substr(fmt.length - rres));
  39066. }
  39067. if (r2 = fmt.match(/^00,000\.([#0]*0)$/)) {
  39068. ri = dec(val, r2[1].length);
  39069. return val < 0 ? "-" + write_num_flt(type, fmt, -val) : commaify(flr(val)).replace(/^\d,\d{3}$/, "0$&").replace(/^\d*$/, function($$2) {
  39070. return "00," + ($$2.length < 3 ? pad0(0, 3 - $$2.length) : "") + $$2;
  39071. }) + "." + pad0(ri, r2[1].length);
  39072. }
  39073. switch (fmt) {
  39074. case "###,##0.00":
  39075. return write_num_flt(type, "#,##0.00", val);
  39076. case "###,###":
  39077. case "##,###":
  39078. case "#,###":
  39079. var x = commaify(pad0r(aval, 0));
  39080. return x !== "0" ? sign + x : "";
  39081. case "###,###.00":
  39082. return write_num_flt(type, "###,##0.00", val).replace(/^0\./, ".");
  39083. case "#,###.00":
  39084. return write_num_flt(type, "#,##0.00", val).replace(/^0\./, ".");
  39085. default:
  39086. }
  39087. throw new Error("unsupported format |" + fmt + "|");
  39088. }
  39089. function write_num_cm2(type, fmt, val) {
  39090. var idx = fmt.length - 1;
  39091. while (fmt.charCodeAt(idx - 1) === 44)
  39092. --idx;
  39093. return write_num(type, fmt.substr(0, idx), val / Math.pow(10, 3 * (fmt.length - idx)));
  39094. }
  39095. function write_num_pct2(type, fmt, val) {
  39096. var sfmt = fmt.replace(pct1, ""), mul = fmt.length - sfmt.length;
  39097. return write_num(type, sfmt, val * Math.pow(10, 2 * mul)) + fill("%", mul);
  39098. }
  39099. function write_num_exp2(fmt, val) {
  39100. var o;
  39101. var idx = fmt.indexOf("E") - fmt.indexOf(".") - 1;
  39102. if (fmt.match(/^#+0.0E\+0$/)) {
  39103. if (val == 0)
  39104. return "0.0E+0";
  39105. else if (val < 0)
  39106. return "-" + write_num_exp2(fmt, -val);
  39107. var period = fmt.indexOf(".");
  39108. if (period === -1)
  39109. period = fmt.indexOf("E");
  39110. var ee = Math.floor(Math.log(val) * Math.LOG10E) % period;
  39111. if (ee < 0)
  39112. ee += period;
  39113. o = (val / Math.pow(10, ee)).toPrecision(idx + 1 + (period + ee) % period);
  39114. if (!o.match(/[Ee]/)) {
  39115. var fakee = Math.floor(Math.log(val) * Math.LOG10E);
  39116. if (o.indexOf(".") === -1)
  39117. o = o.charAt(0) + "." + o.substr(1) + "E+" + (fakee - o.length + ee);
  39118. else
  39119. o += "E+" + (fakee - ee);
  39120. o = o.replace(/\+-/, "-");
  39121. }
  39122. o = o.replace(/^([+-]?)(\d*)\.(\d*)[Ee]/, function($$2, $1, $2, $3) {
  39123. return $1 + $2 + $3.substr(0, (period + ee) % period) + "." + $3.substr(ee) + "E";
  39124. });
  39125. } else
  39126. o = val.toExponential(idx);
  39127. if (fmt.match(/E\+00$/) && o.match(/e[+-]\d$/))
  39128. o = o.substr(0, o.length - 1) + "0" + o.charAt(o.length - 1);
  39129. if (fmt.match(/E\-/) && o.match(/e\+/))
  39130. o = o.replace(/e\+/, "e");
  39131. return o.replace("e", "E");
  39132. }
  39133. function write_num_int(type, fmt, val) {
  39134. if (type.charCodeAt(0) === 40 && !fmt.match(closeparen)) {
  39135. var ffmt = fmt.replace(/\( */, "").replace(/ \)/, "").replace(/\)/, "");
  39136. if (val >= 0)
  39137. return write_num_int("n", ffmt, val);
  39138. return "(" + write_num_int("n", ffmt, -val) + ")";
  39139. }
  39140. if (fmt.charCodeAt(fmt.length - 1) === 44)
  39141. return write_num_cm2(type, fmt, val);
  39142. if (fmt.indexOf("%") !== -1)
  39143. return write_num_pct2(type, fmt, val);
  39144. if (fmt.indexOf("E") !== -1)
  39145. return write_num_exp2(fmt, val);
  39146. if (fmt.charCodeAt(0) === 36)
  39147. return "$" + write_num_int(type, fmt.substr(fmt.charAt(1) == " " ? 2 : 1), val);
  39148. var o;
  39149. var r2, ri, ff, aval = Math.abs(val), sign = val < 0 ? "-" : "";
  39150. if (fmt.match(/^00+$/))
  39151. return sign + pad0(aval, fmt.length);
  39152. if (fmt.match(/^[#?]+$/)) {
  39153. o = "" + val;
  39154. if (val === 0)
  39155. o = "";
  39156. return o.length > fmt.length ? o : hashq(fmt.substr(0, fmt.length - o.length)) + o;
  39157. }
  39158. if (r2 = fmt.match(frac1))
  39159. return write_num_f2(r2, aval, sign);
  39160. if (fmt.match(/^#+0+$/))
  39161. return sign + pad0(aval, fmt.length - fmt.indexOf("0"));
  39162. if (r2 = fmt.match(dec1)) {
  39163. o = ("" + val).replace(/^([^\.]+)$/, "$1." + hashq(r2[1])).replace(/\.$/, "." + hashq(r2[1]));
  39164. o = o.replace(/\.(\d*)$/, function($$2, $1) {
  39165. return "." + $1 + fill("0", hashq(r2[1]).length - $1.length);
  39166. });
  39167. return fmt.indexOf("0.") !== -1 ? o : o.replace(/^0\./, ".");
  39168. }
  39169. fmt = fmt.replace(/^#+([0.])/, "$1");
  39170. if (r2 = fmt.match(/^(0*)\.(#*)$/)) {
  39171. return sign + ("" + aval).replace(/\.(\d*[1-9])0*$/, ".$1").replace(/^(-?\d*)$/, "$1.").replace(/^0\./, r2[1].length ? "0." : ".");
  39172. }
  39173. if (r2 = fmt.match(/^#{1,3},##0(\.?)$/))
  39174. return sign + commaify("" + aval);
  39175. if (r2 = fmt.match(/^#,##0\.([#0]*0)$/)) {
  39176. return val < 0 ? "-" + write_num_int(type, fmt, -val) : commaify("" + val) + "." + fill("0", r2[1].length);
  39177. }
  39178. if (r2 = fmt.match(/^#,#*,#0/))
  39179. return write_num_int(type, fmt.replace(/^#,#*,/, ""), val);
  39180. if (r2 = fmt.match(/^([0#]+)(\\?-([0#]+))+$/)) {
  39181. o = _strrev(write_num_int(type, fmt.replace(/[\\-]/g, ""), val));
  39182. ri = 0;
  39183. return _strrev(_strrev(fmt.replace(/\\/g, "")).replace(/[0#]/g, function(x2) {
  39184. return ri < o.length ? o.charAt(ri++) : x2 === "0" ? "0" : "";
  39185. }));
  39186. }
  39187. if (fmt.match(phone)) {
  39188. o = write_num_int(type, "##########", val);
  39189. return "(" + o.substr(0, 3) + ") " + o.substr(3, 3) + "-" + o.substr(6);
  39190. }
  39191. var oa = "";
  39192. if (r2 = fmt.match(/^([#0?]+)( ?)\/( ?)([#0?]+)/)) {
  39193. ri = Math.min(r2[4].length, 7);
  39194. ff = frac(aval, Math.pow(10, ri) - 1, false);
  39195. o = "" + sign;
  39196. oa = write_num("n", r2[1], ff[1]);
  39197. if (oa.charAt(oa.length - 1) == " ")
  39198. oa = oa.substr(0, oa.length - 1) + "0";
  39199. o += oa + r2[2] + "/" + r2[3];
  39200. oa = rpad_(ff[2], ri);
  39201. if (oa.length < r2[4].length)
  39202. oa = hashq(r2[4].substr(r2[4].length - oa.length)) + oa;
  39203. o += oa;
  39204. return o;
  39205. }
  39206. if (r2 = fmt.match(/^# ([#0?]+)( ?)\/( ?)([#0?]+)/)) {
  39207. ri = Math.min(Math.max(r2[1].length, r2[4].length), 7);
  39208. ff = frac(aval, Math.pow(10, ri) - 1, true);
  39209. return sign + (ff[0] || (ff[1] ? "" : "0")) + " " + (ff[1] ? pad_(ff[1], ri) + r2[2] + "/" + r2[3] + rpad_(ff[2], ri) : fill(" ", 2 * ri + 1 + r2[2].length + r2[3].length));
  39210. }
  39211. if (r2 = fmt.match(/^[#0?]+$/)) {
  39212. o = "" + val;
  39213. if (fmt.length <= o.length)
  39214. return o;
  39215. return hashq(fmt.substr(0, fmt.length - o.length)) + o;
  39216. }
  39217. if (r2 = fmt.match(/^([#0]+)\.([#0]+)$/)) {
  39218. o = "" + val.toFixed(Math.min(r2[2].length, 10)).replace(/([^0])0+$/, "$1");
  39219. ri = o.indexOf(".");
  39220. var lres = fmt.indexOf(".") - ri, rres = fmt.length - o.length - lres;
  39221. return hashq(fmt.substr(0, lres) + o + fmt.substr(fmt.length - rres));
  39222. }
  39223. if (r2 = fmt.match(/^00,000\.([#0]*0)$/)) {
  39224. return val < 0 ? "-" + write_num_int(type, fmt, -val) : commaify("" + val).replace(/^\d,\d{3}$/, "0$&").replace(/^\d*$/, function($$2) {
  39225. return "00," + ($$2.length < 3 ? pad0(0, 3 - $$2.length) : "") + $$2;
  39226. }) + "." + pad0(0, r2[1].length);
  39227. }
  39228. switch (fmt) {
  39229. case "###,###":
  39230. case "##,###":
  39231. case "#,###":
  39232. var x = commaify("" + aval);
  39233. return x !== "0" ? sign + x : "";
  39234. default:
  39235. if (fmt.match(/\.[0#?]*$/))
  39236. return write_num_int(type, fmt.slice(0, fmt.lastIndexOf(".")), val) + hashq(fmt.slice(fmt.lastIndexOf(".")));
  39237. }
  39238. throw new Error("unsupported format |" + fmt + "|");
  39239. }
  39240. return function write_num2(type, fmt, val) {
  39241. return (val | 0) === val ? write_num_int(type, fmt, val) : write_num_flt(type, fmt, val);
  39242. };
  39243. }();
  39244. function split_fmt(fmt) {
  39245. var out = [];
  39246. var in_str = false;
  39247. for (var i2 = 0, j = 0; i2 < fmt.length; ++i2)
  39248. switch (fmt.charCodeAt(i2)) {
  39249. case 34:
  39250. in_str = !in_str;
  39251. break;
  39252. case 95:
  39253. case 42:
  39254. case 92:
  39255. ++i2;
  39256. break;
  39257. case 59:
  39258. out[out.length] = fmt.substr(j, i2 - j);
  39259. j = i2 + 1;
  39260. }
  39261. out[out.length] = fmt.substr(j);
  39262. if (in_str === true)
  39263. throw new Error("Format |" + fmt + "| unterminated string ");
  39264. return out;
  39265. }
  39266. SSF2._split = split_fmt;
  39267. var abstime = /\[[HhMmSs\u0E0A\u0E19\u0E17]*\]/;
  39268. function fmt_is_date(fmt) {
  39269. var i2 = 0, c2 = "", o = "";
  39270. while (i2 < fmt.length) {
  39271. switch (c2 = fmt.charAt(i2)) {
  39272. case "G":
  39273. if (isgeneral(fmt, i2))
  39274. i2 += 6;
  39275. i2++;
  39276. break;
  39277. case '"':
  39278. for (; fmt.charCodeAt(++i2) !== 34 && i2 < fmt.length; ) {
  39279. }
  39280. ++i2;
  39281. break;
  39282. case "\\":
  39283. i2 += 2;
  39284. break;
  39285. case "_":
  39286. i2 += 2;
  39287. break;
  39288. case "@":
  39289. ++i2;
  39290. break;
  39291. case "B":
  39292. case "b":
  39293. if (fmt.charAt(i2 + 1) === "1" || fmt.charAt(i2 + 1) === "2")
  39294. return true;
  39295. case "M":
  39296. case "D":
  39297. case "Y":
  39298. case "H":
  39299. case "S":
  39300. case "E":
  39301. case "m":
  39302. case "d":
  39303. case "y":
  39304. case "h":
  39305. case "s":
  39306. case "e":
  39307. case "g":
  39308. return true;
  39309. case "A":
  39310. case "a":
  39311. case "\u4E0A":
  39312. if (fmt.substr(i2, 3).toUpperCase() === "A/P")
  39313. return true;
  39314. if (fmt.substr(i2, 5).toUpperCase() === "AM/PM")
  39315. return true;
  39316. if (fmt.substr(i2, 5).toUpperCase() === "\u4E0A\u5348/\u4E0B\u5348")
  39317. return true;
  39318. ++i2;
  39319. break;
  39320. case "[":
  39321. o = c2;
  39322. while (fmt.charAt(i2++) !== "]" && i2 < fmt.length)
  39323. o += fmt.charAt(i2);
  39324. if (o.match(abstime))
  39325. return true;
  39326. break;
  39327. case ".":
  39328. case "0":
  39329. case "#":
  39330. while (i2 < fmt.length && ("0#?.,E+-%".indexOf(c2 = fmt.charAt(++i2)) > -1 || c2 == "\\" && fmt.charAt(i2 + 1) == "-" && "0#".indexOf(fmt.charAt(i2 + 2)) > -1)) {
  39331. }
  39332. break;
  39333. case "?":
  39334. while (fmt.charAt(++i2) === c2) {
  39335. }
  39336. break;
  39337. case "*":
  39338. ++i2;
  39339. if (fmt.charAt(i2) == " " || fmt.charAt(i2) == "*")
  39340. ++i2;
  39341. break;
  39342. case "(":
  39343. case ")":
  39344. ++i2;
  39345. break;
  39346. case "1":
  39347. case "2":
  39348. case "3":
  39349. case "4":
  39350. case "5":
  39351. case "6":
  39352. case "7":
  39353. case "8":
  39354. case "9":
  39355. while (i2 < fmt.length && "0123456789".indexOf(fmt.charAt(++i2)) > -1) {
  39356. }
  39357. break;
  39358. case " ":
  39359. ++i2;
  39360. break;
  39361. default:
  39362. ++i2;
  39363. break;
  39364. }
  39365. }
  39366. return false;
  39367. }
  39368. SSF2.is_date = fmt_is_date;
  39369. function eval_fmt(fmt, v, opts, flen) {
  39370. var out = [], o = "", i2 = 0, c2 = "", lst = "t", dt, j, cc;
  39371. var hr = "H";
  39372. while (i2 < fmt.length) {
  39373. switch (c2 = fmt.charAt(i2)) {
  39374. case "G":
  39375. if (!isgeneral(fmt, i2))
  39376. throw new Error("unrecognized character " + c2 + " in " + fmt);
  39377. out[out.length] = {
  39378. t: "G",
  39379. v: "General"
  39380. };
  39381. i2 += 7;
  39382. break;
  39383. case '"':
  39384. for (o = ""; (cc = fmt.charCodeAt(++i2)) !== 34 && i2 < fmt.length; )
  39385. o += String.fromCharCode(cc);
  39386. out[out.length] = {
  39387. t: "t",
  39388. v: o
  39389. };
  39390. ++i2;
  39391. break;
  39392. case "\\":
  39393. var w = fmt.charAt(++i2), t = w === "(" || w === ")" ? w : "t";
  39394. out[out.length] = {
  39395. t,
  39396. v: w
  39397. };
  39398. ++i2;
  39399. break;
  39400. case "_":
  39401. out[out.length] = {
  39402. t: "t",
  39403. v: " "
  39404. };
  39405. i2 += 2;
  39406. break;
  39407. case "@":
  39408. out[out.length] = {
  39409. t: "T",
  39410. v
  39411. };
  39412. ++i2;
  39413. break;
  39414. case "B":
  39415. case "b":
  39416. if (fmt.charAt(i2 + 1) === "1" || fmt.charAt(i2 + 1) === "2") {
  39417. if (dt == null) {
  39418. dt = parse_date_code(v, opts, fmt.charAt(i2 + 1) === "2");
  39419. if (dt == null)
  39420. return "";
  39421. }
  39422. out[out.length] = {
  39423. t: "X",
  39424. v: fmt.substr(i2, 2)
  39425. };
  39426. lst = c2;
  39427. i2 += 2;
  39428. break;
  39429. }
  39430. case "M":
  39431. case "D":
  39432. case "Y":
  39433. case "H":
  39434. case "S":
  39435. case "E":
  39436. c2 = c2.toLowerCase();
  39437. case "m":
  39438. case "d":
  39439. case "y":
  39440. case "h":
  39441. case "s":
  39442. case "e":
  39443. case "g":
  39444. if (v < 0)
  39445. return "";
  39446. if (dt == null) {
  39447. dt = parse_date_code(v, opts);
  39448. if (dt == null)
  39449. return "#####";
  39450. }
  39451. o = c2;
  39452. while (++i2 < fmt.length && fmt.charAt(i2).toLowerCase() === c2)
  39453. o += c2;
  39454. if (c2 === "m" && lst.toLowerCase() === "h")
  39455. c2 = "M";
  39456. if (c2 === "h")
  39457. c2 = hr;
  39458. out[out.length] = {
  39459. t: c2,
  39460. v: o
  39461. };
  39462. lst = c2;
  39463. break;
  39464. case "A":
  39465. case "a":
  39466. case "\u4E0A":
  39467. var q = {
  39468. t: c2,
  39469. v: c2
  39470. };
  39471. if (dt == null)
  39472. dt = parse_date_code(v, opts);
  39473. if (fmt.substr(i2, 3).toUpperCase() === "A/P") {
  39474. if (dt != null)
  39475. q.v = dt.H >= 12 ? "P" : "A";
  39476. q.t = "T";
  39477. hr = "h";
  39478. i2 += 3;
  39479. } else if (fmt.substr(i2, 5).toUpperCase() === "AM/PM") {
  39480. if (dt != null)
  39481. q.v = dt.H >= 12 ? "PM" : "AM";
  39482. q.t = "T";
  39483. i2 += 5;
  39484. hr = "h";
  39485. } else if (fmt.substr(i2, 5).toUpperCase() === "\u4E0A\u5348/\u4E0B\u5348") {
  39486. if (dt != null)
  39487. q.v = dt.H >= 12 ? "\u4E0B\u5348" : "\u4E0A\u5348";
  39488. q.t = "T";
  39489. i2 += 5;
  39490. hr = "h";
  39491. } else {
  39492. q.t = "t";
  39493. ++i2;
  39494. }
  39495. if (dt == null && q.t === "T")
  39496. return "";
  39497. out[out.length] = q;
  39498. lst = c2;
  39499. break;
  39500. case "[":
  39501. o = c2;
  39502. while (fmt.charAt(i2++) !== "]" && i2 < fmt.length)
  39503. o += fmt.charAt(i2);
  39504. if (o.slice(-1) !== "]")
  39505. throw 'unterminated "[" block: |' + o + "|";
  39506. if (o.match(abstime)) {
  39507. if (dt == null) {
  39508. dt = parse_date_code(v, opts);
  39509. if (dt == null)
  39510. return "";
  39511. }
  39512. out[out.length] = {
  39513. t: "Z",
  39514. v: o.toLowerCase()
  39515. };
  39516. lst = o.charAt(1);
  39517. } else if (o.indexOf("$") > -1) {
  39518. o = (o.match(/\$([^-\[\]]*)/) || [])[1] || "$";
  39519. if (!fmt_is_date(fmt))
  39520. out[out.length] = {
  39521. t: "t",
  39522. v: o
  39523. };
  39524. }
  39525. break;
  39526. case ".":
  39527. if (dt != null) {
  39528. o = c2;
  39529. while (++i2 < fmt.length && (c2 = fmt.charAt(i2)) === "0")
  39530. o += c2;
  39531. out[out.length] = {
  39532. t: "s",
  39533. v: o
  39534. };
  39535. break;
  39536. }
  39537. case "0":
  39538. case "#":
  39539. o = c2;
  39540. while (++i2 < fmt.length && "0#?.,E+-%".indexOf(c2 = fmt.charAt(i2)) > -1)
  39541. o += c2;
  39542. out[out.length] = {
  39543. t: "n",
  39544. v: o
  39545. };
  39546. break;
  39547. case "?":
  39548. o = c2;
  39549. while (fmt.charAt(++i2) === c2)
  39550. o += c2;
  39551. out[out.length] = {
  39552. t: c2,
  39553. v: o
  39554. };
  39555. lst = c2;
  39556. break;
  39557. case "*":
  39558. ++i2;
  39559. if (fmt.charAt(i2) == " " || fmt.charAt(i2) == "*")
  39560. ++i2;
  39561. break;
  39562. case "(":
  39563. case ")":
  39564. out[out.length] = {
  39565. t: flen === 1 ? "t" : c2,
  39566. v: c2
  39567. };
  39568. ++i2;
  39569. break;
  39570. case "1":
  39571. case "2":
  39572. case "3":
  39573. case "4":
  39574. case "5":
  39575. case "6":
  39576. case "7":
  39577. case "8":
  39578. case "9":
  39579. o = c2;
  39580. while (i2 < fmt.length && "0123456789".indexOf(fmt.charAt(++i2)) > -1)
  39581. o += fmt.charAt(i2);
  39582. out[out.length] = {
  39583. t: "D",
  39584. v: o
  39585. };
  39586. break;
  39587. case " ":
  39588. out[out.length] = {
  39589. t: c2,
  39590. v: c2
  39591. };
  39592. ++i2;
  39593. break;
  39594. case "$":
  39595. out[out.length] = {
  39596. t: "t",
  39597. v: "$"
  39598. };
  39599. ++i2;
  39600. break;
  39601. default:
  39602. if ("\xA4\u0E3FBsBr\u20B5\u20A1\u20AB\u0192FtRs.\u20ADkr\xA3\u20A4Lm\u20A5\u20A6\u20B1PQRSkRp\u09F2\u09F3R$S/.\u3012\u20AE\u20A9\xA5NT\uFFE5z\u0142\u20B4\u20AA\u17DB\u0440\u0443\u0431\u20AC\uFF04,$-+/():!^&'~{}<>=\u20ACacfijklopqrtuvwxzP$\uFFE5LekdinAf$dhAflRial?\uFFE1BirrKzMOPPGKRsGsB/R$\u0440\u0440levkrKMzBsPNuFBuKPkrRD$NfkCFA?CVEGMDFrCDHTGNAfLFdjKGSFGGHSRielKCFknKshLSLL\uFFE1LtRFRONArRfMWKRMMURsMROS/KMDLMTnRC$kr\u20ACGELCHFSLLSCRDbSZLSDGSOSSomFCFPTShT$VUVQUGX\u0433\u0440\u043DsomWSTNT$FtDramRpZMWFCFA".indexOf(c2) === -1)
  39603. throw new Error("unrecognized character " + c2 + " in " + fmt);
  39604. out[out.length] = {
  39605. t: "t",
  39606. v: c2
  39607. };
  39608. ++i2;
  39609. break;
  39610. }
  39611. }
  39612. var bt = 0, ss0 = 0, ssm;
  39613. for (i2 = out.length - 1, lst = "t"; i2 >= 0; --i2) {
  39614. switch (out[i2].t) {
  39615. case "h":
  39616. case "H":
  39617. out[i2].t = hr;
  39618. lst = "h";
  39619. if (bt < 1)
  39620. bt = 1;
  39621. break;
  39622. case "s":
  39623. if (ssm = out[i2].v.match(/\.0+$/))
  39624. ss0 = Math.max(ss0, ssm[0].length - 1);
  39625. if (bt < 3)
  39626. bt = 3;
  39627. case "d":
  39628. case "y":
  39629. case "M":
  39630. case "e":
  39631. lst = out[i2].t;
  39632. break;
  39633. case "m":
  39634. if (lst === "s") {
  39635. out[i2].t = "M";
  39636. if (bt < 2)
  39637. bt = 2;
  39638. }
  39639. break;
  39640. case "X":
  39641. break;
  39642. case "Z":
  39643. if (bt < 1 && out[i2].v.match(/[Hh]/))
  39644. bt = 1;
  39645. if (bt < 2 && out[i2].v.match(/[Mm]/))
  39646. bt = 2;
  39647. if (bt < 3 && out[i2].v.match(/[Ss]/))
  39648. bt = 3;
  39649. }
  39650. }
  39651. switch (bt) {
  39652. case 0:
  39653. break;
  39654. case 1:
  39655. if (dt.u >= 0.5) {
  39656. dt.u = 0;
  39657. ++dt.S;
  39658. }
  39659. if (dt.S >= 60) {
  39660. dt.S = 0;
  39661. ++dt.M;
  39662. }
  39663. if (dt.M >= 60) {
  39664. dt.M = 0;
  39665. ++dt.H;
  39666. }
  39667. break;
  39668. case 2:
  39669. if (dt.u >= 0.5) {
  39670. dt.u = 0;
  39671. ++dt.S;
  39672. }
  39673. if (dt.S >= 60) {
  39674. dt.S = 0;
  39675. ++dt.M;
  39676. }
  39677. break;
  39678. }
  39679. var nstr = "", jj;
  39680. for (i2 = 0; i2 < out.length; ++i2) {
  39681. switch (out[i2].t) {
  39682. case "t":
  39683. case "T":
  39684. case " ":
  39685. case "D":
  39686. break;
  39687. case "X":
  39688. out[i2].v = "";
  39689. out[i2].t = ";";
  39690. break;
  39691. case "d":
  39692. case "m":
  39693. case "y":
  39694. case "h":
  39695. case "H":
  39696. case "M":
  39697. case "s":
  39698. case "e":
  39699. case "b":
  39700. case "Z":
  39701. out[i2].v = write_date(out[i2].t.charCodeAt(0), out[i2].v, dt, ss0);
  39702. out[i2].t = "t";
  39703. break;
  39704. case "n":
  39705. case "?":
  39706. jj = i2 + 1;
  39707. while (out[jj] != null && ((c2 = out[jj].t) === "?" || c2 === "D" || (c2 === " " || c2 === "t") && out[jj + 1] != null && (out[jj + 1].t === "?" || out[jj + 1].t === "t" && out[jj + 1].v === "/") || out[i2].t === "(" && (c2 === " " || c2 === "n" || c2 === ")") || c2 === "t" && (out[jj].v === "/" || out[jj].v === " " && out[jj + 1] != null && out[jj + 1].t == "?"))) {
  39708. out[i2].v += out[jj].v;
  39709. out[jj] = {
  39710. v: "",
  39711. t: ";"
  39712. };
  39713. ++jj;
  39714. }
  39715. nstr += out[i2].v;
  39716. i2 = jj - 1;
  39717. break;
  39718. case "G":
  39719. out[i2].t = "t";
  39720. out[i2].v = general_fmt(v, opts);
  39721. break;
  39722. }
  39723. }
  39724. var vv = "", myv, ostr;
  39725. if (nstr.length > 0) {
  39726. if (nstr.charCodeAt(0) == 40) {
  39727. myv = v < 0 && nstr.charCodeAt(0) === 45 ? -v : v;
  39728. ostr = write_num("n", nstr, myv);
  39729. } else {
  39730. myv = v < 0 && flen > 1 ? -v : v;
  39731. ostr = write_num("n", nstr, myv);
  39732. if (myv < 0 && out[0] && out[0].t == "t") {
  39733. ostr = ostr.substr(1);
  39734. out[0].v = "-" + out[0].v;
  39735. }
  39736. }
  39737. jj = ostr.length - 1;
  39738. var decpt = out.length;
  39739. for (i2 = 0; i2 < out.length; ++i2)
  39740. if (out[i2] != null && out[i2].t != "t" && out[i2].v.indexOf(".") > -1) {
  39741. decpt = i2;
  39742. break;
  39743. }
  39744. var lasti = out.length;
  39745. if (decpt === out.length && ostr.indexOf("E") === -1) {
  39746. for (i2 = out.length - 1; i2 >= 0; --i2) {
  39747. if (out[i2] == null || "n?".indexOf(out[i2].t) === -1)
  39748. continue;
  39749. if (jj >= out[i2].v.length - 1) {
  39750. jj -= out[i2].v.length;
  39751. out[i2].v = ostr.substr(jj + 1, out[i2].v.length);
  39752. } else if (jj < 0)
  39753. out[i2].v = "";
  39754. else {
  39755. out[i2].v = ostr.substr(0, jj + 1);
  39756. jj = -1;
  39757. }
  39758. out[i2].t = "t";
  39759. lasti = i2;
  39760. }
  39761. if (jj >= 0 && lasti < out.length)
  39762. out[lasti].v = ostr.substr(0, jj + 1) + out[lasti].v;
  39763. } else if (decpt !== out.length && ostr.indexOf("E") === -1) {
  39764. jj = ostr.indexOf(".") - 1;
  39765. for (i2 = decpt; i2 >= 0; --i2) {
  39766. if (out[i2] == null || "n?".indexOf(out[i2].t) === -1)
  39767. continue;
  39768. j = out[i2].v.indexOf(".") > -1 && i2 === decpt ? out[i2].v.indexOf(".") - 1 : out[i2].v.length - 1;
  39769. vv = out[i2].v.substr(j + 1);
  39770. for (; j >= 0; --j) {
  39771. if (jj >= 0 && (out[i2].v.charAt(j) === "0" || out[i2].v.charAt(j) === "#"))
  39772. vv = ostr.charAt(jj--) + vv;
  39773. }
  39774. out[i2].v = vv;
  39775. out[i2].t = "t";
  39776. lasti = i2;
  39777. }
  39778. if (jj >= 0 && lasti < out.length)
  39779. out[lasti].v = ostr.substr(0, jj + 1) + out[lasti].v;
  39780. jj = ostr.indexOf(".") + 1;
  39781. for (i2 = decpt; i2 < out.length; ++i2) {
  39782. if (out[i2] == null || "n?(".indexOf(out[i2].t) === -1 && i2 !== decpt)
  39783. continue;
  39784. j = out[i2].v.indexOf(".") > -1 && i2 === decpt ? out[i2].v.indexOf(".") + 1 : 0;
  39785. vv = out[i2].v.substr(0, j);
  39786. for (; j < out[i2].v.length; ++j) {
  39787. if (jj < ostr.length)
  39788. vv += ostr.charAt(jj++);
  39789. }
  39790. out[i2].v = vv;
  39791. out[i2].t = "t";
  39792. lasti = i2;
  39793. }
  39794. }
  39795. }
  39796. for (i2 = 0; i2 < out.length; ++i2)
  39797. if (out[i2] != null && "n?".indexOf(out[i2].t) > -1) {
  39798. myv = flen > 1 && v < 0 && i2 > 0 && out[i2 - 1].v === "-" ? -v : v;
  39799. out[i2].v = write_num(out[i2].t, out[i2].v, myv);
  39800. out[i2].t = "t";
  39801. }
  39802. var retval = "";
  39803. for (i2 = 0; i2 !== out.length; ++i2)
  39804. if (out[i2] != null)
  39805. retval += out[i2].v;
  39806. return retval;
  39807. }
  39808. SSF2._eval = eval_fmt;
  39809. var cfregex = /\[[=<>]/;
  39810. var cfregex2 = /\[(=|>[=]?|<[>=]?)(-?\d+(?:\.\d*)?)\]/;
  39811. function chkcond(v, rr) {
  39812. if (rr == null)
  39813. return false;
  39814. var thresh = parseFloat(rr[2]);
  39815. switch (rr[1]) {
  39816. case "=":
  39817. if (v == thresh)
  39818. return true;
  39819. break;
  39820. case ">":
  39821. if (v > thresh)
  39822. return true;
  39823. break;
  39824. case "<":
  39825. if (v < thresh)
  39826. return true;
  39827. break;
  39828. case "<>":
  39829. if (v != thresh)
  39830. return true;
  39831. break;
  39832. case ">=":
  39833. if (v >= thresh)
  39834. return true;
  39835. break;
  39836. case "<=":
  39837. if (v <= thresh)
  39838. return true;
  39839. break;
  39840. }
  39841. return false;
  39842. }
  39843. function choose_fmt(f, v) {
  39844. var fmt = split_fmt(f);
  39845. var l = fmt.length, lat = fmt[l - 1].indexOf("@");
  39846. if (l < 4 && lat > -1)
  39847. --l;
  39848. if (fmt.length > 4)
  39849. throw new Error("cannot find right format for |" + fmt.join("|") + "|");
  39850. if (typeof v !== "number")
  39851. return [4, fmt.length === 4 || lat > -1 ? fmt[fmt.length - 1] : "@"];
  39852. switch (fmt.length) {
  39853. case 1:
  39854. fmt = lat > -1 ? ["General", "General", "General", fmt[0]] : [fmt[0], fmt[0], fmt[0], "@"];
  39855. break;
  39856. case 2:
  39857. fmt = lat > -1 ? [fmt[0], fmt[0], fmt[0], fmt[1]] : [fmt[0], fmt[1], fmt[0], "@"];
  39858. break;
  39859. case 3:
  39860. fmt = lat > -1 ? [fmt[0], fmt[1], fmt[0], fmt[2]] : [fmt[0], fmt[1], fmt[2], "@"];
  39861. break;
  39862. case 4:
  39863. break;
  39864. }
  39865. var ff = v > 0 ? fmt[0] : v < 0 ? fmt[1] : fmt[2];
  39866. if (fmt[0].indexOf("[") === -1 && fmt[1].indexOf("[") === -1)
  39867. return [l, ff];
  39868. if (fmt[0].match(cfregex) != null || fmt[1].match(cfregex) != null) {
  39869. var m1 = fmt[0].match(cfregex2);
  39870. var m2 = fmt[1].match(cfregex2);
  39871. return chkcond(v, m1) ? [l, fmt[0]] : chkcond(v, m2) ? [l, fmt[1]] : [l, fmt[m1 != null && m2 != null ? 2 : 1]];
  39872. }
  39873. return [l, ff];
  39874. }
  39875. function format(fmt, v, o) {
  39876. if (o == null)
  39877. o = {};
  39878. var sfmt = "";
  39879. switch (typeof fmt) {
  39880. case "string":
  39881. if (fmt == "m/d/yy" && o.dateNF)
  39882. sfmt = o.dateNF;
  39883. else
  39884. sfmt = fmt;
  39885. break;
  39886. case "number":
  39887. if (fmt == 14 && o.dateNF)
  39888. sfmt = o.dateNF;
  39889. else
  39890. sfmt = (o.table != null ? o.table : table_fmt)[fmt];
  39891. if (sfmt == null)
  39892. sfmt = o.table && o.table[default_map[fmt]] || table_fmt[default_map[fmt]];
  39893. if (sfmt == null)
  39894. sfmt = default_str[fmt] || "General";
  39895. break;
  39896. }
  39897. var reg = /^(w|W)((0?)|(0\.0+))$/;
  39898. if (!!sfmt.match(reg)) {
  39899. if (isNaN(v)) {
  39900. return v;
  39901. }
  39902. var acc = sfmt.slice(1);
  39903. var isNegative = false;
  39904. if (!isNaN(v) && Number(v) < 0) {
  39905. isNegative = true;
  39906. v = Math.abs(v);
  39907. }
  39908. var vInt = parseInt(v);
  39909. var vlength = vInt.toString().length;
  39910. if (vlength > 4) {
  39911. if (vlength > 8) {
  39912. var y = parseInt(v / 1e8);
  39913. var w = parseInt(parseFloat(v).subtract(y * 1e8) / 1e4);
  39914. var q = parseFloat(v).subtract(y * 1e8 + w * 1e4);
  39915. if (acc != "") {
  39916. q = (0, import_numeral.default)(q).format(acc);
  39917. }
  39918. v = y + "\u4EBF" + w + "\u4E07" + q;
  39919. } else {
  39920. var w = parseInt(v / 1e4);
  39921. var q = parseFloat(v).subtract(w * 1e4);
  39922. if (acc != "") {
  39923. q = (0, import_numeral.default)(q).format(acc);
  39924. }
  39925. v = w + "\u4E07" + q;
  39926. }
  39927. if (v.indexOf("\u4EBF0\u4E070") != -1) {
  39928. v = v.replace("0\u4E070", "");
  39929. } else if (v.indexOf("\u4EBF0\u4E07") != -1) {
  39930. v = v.replace("0\u4E07", "");
  39931. } else if (v.indexOf("\u4E070") != -1) {
  39932. v = v.replace("\u4E070", "\u4E07");
  39933. }
  39934. if (v.indexOf("\u4EBF") != -1 && v.indexOf("\u4E07") == -1) {
  39935. var afterYi = v.substring(v.indexOf("\u4EBF") + 1);
  39936. if (afterYi.substring(0, 1) !== "." && afterYi != "") {
  39937. switch ((parseInt(afterYi) + "").length) {
  39938. case 1:
  39939. afterYi = "000" + afterYi;
  39940. break;
  39941. case 2:
  39942. afterYi = "00" + afterYi;
  39943. break;
  39944. case 3:
  39945. afterYi = "0" + afterYi;
  39946. break;
  39947. }
  39948. v = v.substring(0, v.indexOf("\u4EBF") + 1) + afterYi;
  39949. }
  39950. } else if (v.indexOf("\u4EBF") == -1 && v.indexOf("\u4E07") != -1) {
  39951. var afterWan = v.substring(v.indexOf("\u4E07") + 1);
  39952. if (afterWan.substring(0, 1) !== "." && afterWan != "") {
  39953. switch ((parseInt(afterWan) + "").length) {
  39954. case 1:
  39955. afterWan = "000" + afterWan;
  39956. break;
  39957. case 2:
  39958. afterWan = "00" + afterWan;
  39959. break;
  39960. case 3:
  39961. afterWan = "0" + afterWan;
  39962. break;
  39963. }
  39964. v = v.substring(0, v.indexOf("\u4E07") + 1) + afterWan;
  39965. }
  39966. } else if (v.indexOf("\u4EBF") != -1 && v.indexOf("\u4E07") != -1) {
  39967. var afterYi = v.substring(v.indexOf("\u4EBF") + 1, v.indexOf("\u4E07")), afterWan = v.substring(v.indexOf("\u4E07") + 1);
  39968. switch ((parseInt(afterYi) + "").length) {
  39969. case 1:
  39970. afterYi = "000" + afterYi;
  39971. break;
  39972. case 2:
  39973. afterYi = "00" + afterYi;
  39974. break;
  39975. case 3:
  39976. afterYi = "0" + afterYi;
  39977. break;
  39978. }
  39979. v = v.substring(0, v.indexOf("\u4EBF") + 1) + afterYi + v.substring(v.indexOf("\u4E07"));
  39980. if (afterWan.substring(0, 1) !== "." && afterWan != "") {
  39981. switch ((parseInt(afterWan) + "").length) {
  39982. case 1:
  39983. afterWan = "000" + afterWan;
  39984. break;
  39985. case 2:
  39986. afterWan = "00" + afterWan;
  39987. break;
  39988. case 3:
  39989. afterWan = "0" + afterWan;
  39990. break;
  39991. }
  39992. v = v.substring(0, v.indexOf("\u4E07") + 1) + afterWan;
  39993. }
  39994. }
  39995. } else {
  39996. if (acc != "") {
  39997. v = (0, import_numeral.default)(v).format(acc);
  39998. }
  39999. }
  40000. if (isNegative) {
  40001. return "-" + v;
  40002. } else {
  40003. return v;
  40004. }
  40005. }
  40006. if (isgeneral(sfmt, 0))
  40007. return general_fmt(v, o);
  40008. if (v instanceof Date)
  40009. v = datenum_local2(v, o.date1904);
  40010. var f = choose_fmt(sfmt, v);
  40011. if (isgeneral(f[1]))
  40012. return general_fmt(v, o);
  40013. if (v === true)
  40014. v = "TRUE";
  40015. else if (v === false)
  40016. v = "FALSE";
  40017. else if (v === "" || v == null)
  40018. return "";
  40019. return eval_fmt(f[1], v, o, f[0]);
  40020. }
  40021. function load_entry(fmt, idx) {
  40022. if (typeof idx != "number") {
  40023. idx = +idx || -1;
  40024. for (var i2 = 0; i2 < 392; ++i2) {
  40025. if (table_fmt[i2] == void 0) {
  40026. if (idx < 0)
  40027. idx = i2;
  40028. continue;
  40029. }
  40030. if (table_fmt[i2] == fmt) {
  40031. idx = i2;
  40032. break;
  40033. }
  40034. }
  40035. if (idx < 0)
  40036. idx = 391;
  40037. }
  40038. table_fmt[idx] = fmt;
  40039. return idx;
  40040. }
  40041. SSF2.load = load_entry;
  40042. SSF2._table = table_fmt;
  40043. SSF2.get_table = function get_table() {
  40044. return table_fmt;
  40045. };
  40046. SSF2.load_table = function load_table(tbl) {
  40047. for (var i2 = 0; i2 != 392; ++i2)
  40048. if (tbl[i2] !== void 0)
  40049. load_entry(tbl[i2], i2);
  40050. };
  40051. SSF2.init_table = init_table;
  40052. SSF2.format = format;
  40053. };
  40054. make_ssf(SSF);
  40055. XLMLFormatMap = {
  40056. "General Number": "General",
  40057. "General Date": SSF._table[22],
  40058. "Long Date": "dddd, mmmm dd, yyyy",
  40059. "Medium Date": SSF._table[15],
  40060. "Short Date": SSF._table[14],
  40061. "Long Time": SSF._table[19],
  40062. "Medium Time": SSF._table[18],
  40063. "Short Time": SSF._table[20],
  40064. "Currency": '"$"#,##0.00_);[Red]\\("$"#,##0.00\\)',
  40065. "Fixed": SSF._table[2],
  40066. "Standard": SSF._table[4],
  40067. "Percent": SSF._table[10],
  40068. "Scientific": SSF._table[11],
  40069. "Yes/No": '"Yes";"Yes";"No";@',
  40070. "True/False": '"True";"True";"False";@',
  40071. "On/Off": '"Yes";"Yes";"No";@'
  40072. };
  40073. unescapexml = function() {
  40074. var encregex = /&(?:quot|apos|gt|lt|amp|#x?([\da-fA-F]+));/g, coderegex = /_x([\da-fA-F]{4})_/g;
  40075. return function unescapexml2(text) {
  40076. var s = text + "", i2 = s.indexOf("<![CDATA[");
  40077. if (i2 == -1)
  40078. return s.replace(encregex, function($$2, $1) {
  40079. return encodings[$$2] || String.fromCharCode(parseInt($1, $$2.indexOf("x") > -1 ? 16 : 10)) || $$2;
  40080. }).replace(coderegex, function(m, c2) {
  40081. return String.fromCharCode(parseInt(c2, 16));
  40082. });
  40083. var j = s.indexOf("]]>");
  40084. return unescapexml2(s.slice(0, i2)) + s.slice(i2 + 9, j) + unescapexml2(s.slice(j + 3));
  40085. };
  40086. }();
  40087. basedate = new Date(1899, 11, 31, 0, 0, 0);
  40088. dnthresh = basedate.getTime();
  40089. base1904 = new Date(1900, 2, 1, 0, 0, 0);
  40090. good_pd_date = new Date("2017-02-19T19:06:09.000Z");
  40091. if (isNaN(good_pd_date.getFullYear()))
  40092. good_pd_date = new Date("2/19/17");
  40093. good_pd = good_pd_date.getFullYear() == 2017;
  40094. }
  40095. });
  40096. // src/global/setdata.js
  40097. function setcellvalue(r2, c2, d, v) {
  40098. if (d == null) {
  40099. d = store_default.flowdata;
  40100. }
  40101. let cell = d[r2][c2];
  40102. let vupdate;
  40103. if (getObjType(v) == "object") {
  40104. if (cell == null) {
  40105. cell = v;
  40106. } else {
  40107. if (v.f != null) {
  40108. cell.f = v.f;
  40109. } else if (cell.hasOwnProperty("f")) {
  40110. delete cell.f;
  40111. }
  40112. if (v.spl != null) {
  40113. cell.spl = v.spl;
  40114. }
  40115. if (v.ct != null) {
  40116. cell.ct = v.ct;
  40117. }
  40118. }
  40119. if (getObjType(v.v) == "object") {
  40120. vupdate = v.v.v;
  40121. } else {
  40122. vupdate = v.v;
  40123. }
  40124. } else {
  40125. vupdate = v;
  40126. }
  40127. if (isRealNull(vupdate)) {
  40128. if (getObjType(cell) == "object") {
  40129. delete cell.m;
  40130. delete cell.v;
  40131. } else {
  40132. cell = null;
  40133. }
  40134. d[r2][c2] = cell;
  40135. return;
  40136. }
  40137. if (isRealNull(cell) || (getObjType(cell) === "string" || getObjType(cell) === "number") && cell === v) {
  40138. cell = {};
  40139. }
  40140. let vupdateStr = vupdate.toString();
  40141. if (vupdateStr.substr(0, 1) == "'") {
  40142. cell.m = vupdateStr.substr(1);
  40143. cell.ct = {"fa": "@", "t": "s"};
  40144. cell.v = vupdateStr.substr(1);
  40145. cell.qp = 1;
  40146. } else if (cell.qp == 1) {
  40147. cell.m = vupdateStr;
  40148. cell.ct = {"fa": "@", "t": "s"};
  40149. cell.v = vupdateStr;
  40150. } else if (vupdateStr.toUpperCase() === "TRUE") {
  40151. cell.m = "TRUE";
  40152. cell.ct = {"fa": "General", "t": "b"};
  40153. cell.v = true;
  40154. } else if (vupdateStr.toUpperCase() === "FALSE") {
  40155. cell.m = "FALSE";
  40156. cell.ct = {"fa": "General", "t": "b"};
  40157. cell.v = false;
  40158. } else if (vupdateStr.substr(-1) === "%" && isRealNum(vupdateStr.substring(0, vupdateStr.length - 1))) {
  40159. cell.ct = {fa: "0%", t: "n"};
  40160. cell.v = vupdateStr.substring(0, vupdateStr.length - 1) / 100;
  40161. cell.m = vupdate;
  40162. } else if (valueIsError(vupdate)) {
  40163. cell.m = vupdateStr;
  40164. if (cell.ct != null) {
  40165. cell.ct.t = "e";
  40166. } else {
  40167. cell.ct = {"fa": "General", "t": "e"};
  40168. }
  40169. cell.v = vupdate;
  40170. } else {
  40171. if (cell.f != null && isRealNum(vupdate) && !/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[12])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i.test(vupdate)) {
  40172. cell.v = parseFloat(vupdate);
  40173. if (cell.ct == null) {
  40174. cell.ct = {"fa": "General", "t": "n"};
  40175. }
  40176. if (cell.v == Infinity || cell.v == -Infinity) {
  40177. cell.m = cell.v.toString();
  40178. } else {
  40179. if (cell.v.toString().indexOf("e") > -1) {
  40180. let len;
  40181. if (cell.v.toString().split(".").length == 1) {
  40182. len = 0;
  40183. } else {
  40184. len = cell.v.toString().split(".")[1].split("e")[0].length;
  40185. }
  40186. if (len > 5) {
  40187. len = 5;
  40188. }
  40189. cell.m = cell.v.toExponential(len).toString();
  40190. } else {
  40191. let v_p = Math.round(cell.v * 1e9) / 1e9;
  40192. if (cell.ct == null) {
  40193. let mask = genarate(v_p);
  40194. cell.m = mask[0].toString();
  40195. } else {
  40196. let mask = update(cell.ct.fa, v_p);
  40197. cell.m = mask.toString();
  40198. }
  40199. }
  40200. }
  40201. } else if (cell.ct != null && cell.ct.fa == "@") {
  40202. cell.m = vupdateStr;
  40203. cell.v = vupdate;
  40204. } else if (cell.ct != null && cell.ct.fa != null && cell.ct.fa != "General") {
  40205. if (isRealNum(vupdate)) {
  40206. vupdate = parseFloat(vupdate);
  40207. }
  40208. let mask = update(cell.ct.fa, vupdate);
  40209. if (mask === vupdate) {
  40210. mask = genarate(vupdate);
  40211. cell.m = mask[0].toString();
  40212. cell.ct = mask[1];
  40213. cell.v = mask[2];
  40214. } else {
  40215. cell.m = mask.toString();
  40216. cell.v = vupdate;
  40217. }
  40218. } else {
  40219. if (isRealNum(vupdate) && !/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[12])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i.test(vupdate)) {
  40220. if (typeof vupdate === "string") {
  40221. let flag = vupdate.split("").every((ele) => ele == "0" || ele == ".");
  40222. if (flag) {
  40223. vupdate = parseFloat(vupdate);
  40224. }
  40225. }
  40226. cell.v = vupdate;
  40227. cell.ct = {"fa": "General", "t": "n"};
  40228. if (cell.v == Infinity || cell.v == -Infinity) {
  40229. cell.m = cell.v.toString();
  40230. } else {
  40231. let mask = genarate(cell.v);
  40232. cell.m = mask[0].toString();
  40233. }
  40234. } else {
  40235. let mask = genarate(vupdate);
  40236. cell.m = mask[0].toString();
  40237. cell.ct = mask[1];
  40238. cell.v = mask[2];
  40239. }
  40240. }
  40241. }
  40242. if (!server_default.allowUpdate && !luckysheetConfigsetting_default.pointEdit) {
  40243. if (cell.ct != null && /^(w|W)((0?)|(0\.0+))$/.test(cell.ct.fa) == false && cell.ct.t == "n" && cell.v != null && parseInt(cell.v).toString().length > 4) {
  40244. let autoFormatw = luckysheetConfigsetting_default.autoFormatw.toString().toUpperCase();
  40245. let accuracy = luckysheetConfigsetting_default.accuracy;
  40246. let sfmt = setAccuracy(autoFormatw, accuracy);
  40247. if (sfmt != "General") {
  40248. cell.ct.fa = sfmt;
  40249. cell.m = update(sfmt, cell.v);
  40250. }
  40251. }
  40252. }
  40253. d[r2][c2] = cell;
  40254. }
  40255. function setAccuracy(autoFormatw, accuracy) {
  40256. let acc = "0.";
  40257. let fmt;
  40258. if (autoFormatw == "TRUE") {
  40259. if (accuracy == void 0) {
  40260. return "w";
  40261. } else {
  40262. let alength = parseInt(accuracy);
  40263. if (alength == 0) {
  40264. return "w0";
  40265. } else {
  40266. acc = "w0.";
  40267. for (let i2 = 0; i2 < alength; i2++) {
  40268. acc += "0";
  40269. }
  40270. fmt = acc;
  40271. }
  40272. }
  40273. } else {
  40274. if (accuracy == void 0) {
  40275. return "General";
  40276. } else {
  40277. let alength = parseInt(accuracy);
  40278. if (alength == 0) {
  40279. return "0";
  40280. } else {
  40281. for (let i2 = 0; i2 < alength; i2++) {
  40282. acc += "0";
  40283. }
  40284. fmt = acc;
  40285. }
  40286. }
  40287. }
  40288. return fmt.toString();
  40289. }
  40290. var init_setdata = __esm({
  40291. "src/global/setdata.js"() {
  40292. init_util();
  40293. init_validate();
  40294. init_format();
  40295. init_server();
  40296. init_luckysheetConfigsetting();
  40297. init_store();
  40298. }
  40299. });
  40300. // src/global/count.js
  40301. function countfunc() {
  40302. if (store_default.luckysheet_select_save.length == 0) {
  40303. return;
  40304. }
  40305. let min = Infinity, max = -Infinity, sum = 0, count = 0, mean = 0;
  40306. for (let s = 0; s < store_default.luckysheet_select_save.length; s++) {
  40307. let data = getdatabyselectionNoCopy(store_default.luckysheet_select_save[s]);
  40308. for (let r2 = 0; r2 < data.length; r2++) {
  40309. for (let c2 = 0; c2 < data[0].length; c2++) {
  40310. if (isRealNull(data[r2][c2])) {
  40311. continue;
  40312. }
  40313. count++;
  40314. if (data[r2][c2].ct != null && data[r2][c2].ct.t == "d") {
  40315. continue;
  40316. }
  40317. let value = data[r2][c2].v;
  40318. if (!isRealNum(value)) {
  40319. continue;
  40320. }
  40321. value = parseFloat(value);
  40322. sum += value;
  40323. if (value < min) {
  40324. min = value;
  40325. }
  40326. if (value > max) {
  40327. max = value;
  40328. }
  40329. }
  40330. }
  40331. }
  40332. let locale_formula = locale_default().formula;
  40333. let ret = "";
  40334. ret += "<span>" + locale_formula.count + ":" + count + "</span>";
  40335. if (isFinite(max) || isFinite(min)) {
  40336. ret += "<span>" + locale_formula.sum + ":" + update("w", sum) + "</span>";
  40337. ret += "<span>" + locale_formula.average + ":" + update("w", Math.round(sum / count * 1e4) / 1e4) + "</span>";
  40338. }
  40339. if (isFinite(max)) {
  40340. ret += "<span>" + locale_formula.max + ":" + update("w", max) + "</span>";
  40341. }
  40342. if (isFinite(min)) {
  40343. ret += "<span>" + locale_formula.min + ":" + update("w", min) + "</span>";
  40344. }
  40345. $("#luckysheet-sta-content").html(ret);
  40346. }
  40347. var init_count = __esm({
  40348. "src/global/count.js"() {
  40349. init_store();
  40350. init_getdata();
  40351. init_validate();
  40352. init_format();
  40353. init_locale();
  40354. }
  40355. });
  40356. // src/controllers/sheetMove.js
  40357. function luckysheetMoveEndCell(postion, type, isScroll, terminal, onlyvalue) {
  40358. if (isScroll == null) {
  40359. isScroll = true;
  40360. }
  40361. if (!postion) {
  40362. postion = "down";
  40363. }
  40364. if (!type) {
  40365. type = "cell";
  40366. }
  40367. if (onlyvalue == null) {
  40368. onlyvalue = false;
  40369. }
  40370. let last = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1];
  40371. let curR = last["row"] == null ? 0 : last["row"][0];
  40372. let curC = last["column"] == null ? 0 : last["column"][0];
  40373. let startR = last["row"] == null ? 0 : last["row"][0];
  40374. let startC = last["column"] == null ? 0 : last["column"][0];
  40375. let endR = last["row"] == null ? 0 : last["row"][1];
  40376. let endC = last["column"] == null ? 0 : last["column"][1];
  40377. formula_default.fucntionboxshow(curR, curC);
  40378. if (type == "range") {
  40379. var p_startR = store_default.luckysheet_shiftpositon["row"][0];
  40380. var p_startC = store_default.luckysheet_shiftpositon["column"][0];
  40381. let p_endR2 = store_default.luckysheet_shiftpositon["row"][1];
  40382. let p_endC2 = store_default.luckysheet_shiftpositon["column"][1];
  40383. if (postion == "down" || postion == "up") {
  40384. if (p_endR2 < endR) {
  40385. curR = last["row"] == null ? 0 : last["row"][1];
  40386. } else if (p_startR > startR) {
  40387. curR = last["row"] == null ? 0 : last["row"][0];
  40388. } else if (p_endR2 == endR && p_startR == startR) {
  40389. if (postion == "down") {
  40390. curR = last["row"] == null ? 0 : last["row"][1];
  40391. } else {
  40392. curR = last["row"] == null ? 0 : last["row"][0];
  40393. }
  40394. }
  40395. } else if (postion == "right" || postion == "left") {
  40396. if (p_endC2 < endC) {
  40397. curC = last["column"] == null ? 0 : last["column"][1];
  40398. } else if (p_startC > startC) {
  40399. curC = last["column"] == null ? 0 : last["column"][0];
  40400. } else if (p_endC2 == endC && p_startC == startC) {
  40401. if (postion == "right") {
  40402. curC = last["column"] == null ? 0 : last["column"][1];
  40403. } else {
  40404. curC = last["column"] == null ? 0 : last["column"][0];
  40405. }
  40406. }
  40407. }
  40408. }
  40409. let datarowlen = store_default.flowdata.length, datacolumnlen = store_default.flowdata[0].length;
  40410. let data = store_default.flowdata, moveP = "", moveV = 0;
  40411. if (postion == "up") {
  40412. if (curR == 0) {
  40413. return;
  40414. } else {
  40415. let stvalue = [], p = null, i2 = 0, p_pre = null;
  40416. for (let c2 = startC; c2 <= endC; c2++) {
  40417. stvalue = [];
  40418. i2 = 0;
  40419. for (let r2 = curR - 1; r2 >= 0; r2--) {
  40420. let cell = data[r2][c2];
  40421. if (getObjType(cell) == "object" && isRealNull(cell.v)) {
  40422. stvalue.push(false);
  40423. } else if (isRealNull(cell)) {
  40424. stvalue.push(false);
  40425. } else {
  40426. stvalue.push(true);
  40427. }
  40428. if (stvalue.length > 1) {
  40429. if (stvalue[i2] == true && stvalue[i2 - 1] == false) {
  40430. p = r2;
  40431. break;
  40432. } else if (stvalue[i2] == false && stvalue[i2 - 1] == true) {
  40433. p = r2 + 1;
  40434. break;
  40435. }
  40436. }
  40437. i2++;
  40438. }
  40439. if (p == null) {
  40440. p = 0;
  40441. }
  40442. if (p_pre == null || p < p_pre) {
  40443. p_pre = p;
  40444. }
  40445. }
  40446. moveP = "down";
  40447. moveV = p_pre - curR;
  40448. }
  40449. } else if (postion == "down") {
  40450. if (curR == datarowlen - 1) {
  40451. return;
  40452. } else {
  40453. let stvalue = [], p = null, i2 = 0, p_pre = null;
  40454. for (let c2 = startC; c2 <= endC; c2++) {
  40455. stvalue = [];
  40456. i2 = 0;
  40457. for (let r2 = curR + 1; r2 < data.length; r2++) {
  40458. let cell = data[r2][c2];
  40459. if (getObjType(cell) == "object" && isRealNull(cell.v)) {
  40460. stvalue.push(false);
  40461. } else if (isRealNull(cell)) {
  40462. stvalue.push(false);
  40463. } else {
  40464. stvalue.push(true);
  40465. }
  40466. if (stvalue.length > 1) {
  40467. if (stvalue[i2] == true && stvalue[i2 - 1] == false) {
  40468. p = r2;
  40469. break;
  40470. } else if (stvalue[i2] == false && stvalue[i2 - 1] == true) {
  40471. p = r2 - 1;
  40472. break;
  40473. }
  40474. }
  40475. i2++;
  40476. }
  40477. if (p == null) {
  40478. p = data.length - 1;
  40479. }
  40480. if (p_pre == null || p > p_pre) {
  40481. p_pre = p;
  40482. }
  40483. }
  40484. moveP = "down";
  40485. moveV = p_pre - curR;
  40486. }
  40487. } else if (postion == "left") {
  40488. if (curC == 0) {
  40489. return;
  40490. } else {
  40491. let stvalue = [], p = null, i2 = 0, p_pre = null;
  40492. for (let r2 = startR; r2 <= endR; r2++) {
  40493. stvalue = [];
  40494. i2 = 0;
  40495. for (let c2 = curC - 1; c2 >= 0; c2--) {
  40496. let cell = data[r2][c2];
  40497. if (getObjType(cell) == "object" && isRealNull(cell.v)) {
  40498. stvalue.push(false);
  40499. } else if (isRealNull(cell)) {
  40500. stvalue.push(false);
  40501. } else {
  40502. stvalue.push(true);
  40503. }
  40504. if (stvalue.length > 1) {
  40505. if (stvalue[i2] == true && stvalue[i2 - 1] == false) {
  40506. p = c2;
  40507. break;
  40508. } else if (stvalue[i2] == false && stvalue[i2 - 1] == true) {
  40509. p = c2 + 1;
  40510. break;
  40511. }
  40512. }
  40513. i2++;
  40514. }
  40515. if (p == null) {
  40516. p = 0;
  40517. }
  40518. if (p_pre == null || p < p_pre) {
  40519. p_pre = p;
  40520. }
  40521. }
  40522. moveP = "right";
  40523. moveV = p_pre - curC;
  40524. }
  40525. } else if (postion == "right") {
  40526. if (curC == datacolumnlen - 1) {
  40527. return;
  40528. } else {
  40529. let stvalue = [], p = null, i2 = 0, p_pre = null;
  40530. for (let r2 = startR; r2 <= endR; r2++) {
  40531. stvalue = [];
  40532. i2 = 0;
  40533. for (let c2 = curC + 1; c2 < data[0].length; c2++) {
  40534. let cell = data[r2][c2];
  40535. if (getObjType(cell) == "object" && isRealNull(cell.v)) {
  40536. stvalue.push(false);
  40537. } else if (isRealNull(cell)) {
  40538. stvalue.push(false);
  40539. } else {
  40540. stvalue.push(true);
  40541. }
  40542. if (stvalue.length > 1) {
  40543. if (stvalue[i2] == true && stvalue[i2 - 1] == false) {
  40544. p = c2;
  40545. break;
  40546. } else if (stvalue[i2] == false && stvalue[i2 - 1] == true) {
  40547. p = c2 - 1;
  40548. break;
  40549. }
  40550. }
  40551. i2++;
  40552. }
  40553. if (p == null) {
  40554. p = data[0].length - 1;
  40555. }
  40556. if (p_pre == null || p > p_pre) {
  40557. p_pre = p;
  40558. }
  40559. }
  40560. moveP = "right";
  40561. moveV = p_pre - curC;
  40562. }
  40563. }
  40564. if (type == "range") {
  40565. if (postion == "up") {
  40566. if (p_endR < endR) {
  40567. if (moveV + curR < p_endR) {
  40568. moveV = p_endR - curR;
  40569. }
  40570. }
  40571. } else if (postion == "down") {
  40572. if (p_startR > startR) {
  40573. if (moveV + curR > p_startR) {
  40574. moveV = p_startR - curR;
  40575. }
  40576. }
  40577. } else if (postion == "left") {
  40578. if (p_endC < endC) {
  40579. if (moveV + curC < p_endC) {
  40580. moveV = p_endC - curC;
  40581. }
  40582. }
  40583. } else if (postion == "right") {
  40584. if (p_startC > startC) {
  40585. if (moveV + curC > p_startC) {
  40586. moveV = p_startC - curC;
  40587. }
  40588. }
  40589. }
  40590. if (terminal != null && Math.abs(moveV) > Math.abs(terminal)) {
  40591. moveV = terminal;
  40592. }
  40593. }
  40594. if (!onlyvalue) {
  40595. if (type == "cell") {
  40596. luckysheetMoveHighlightCell(moveP, moveV, "rangeOfSelect", isScroll);
  40597. } else if (type == "range") {
  40598. luckysheetMoveHighlightRange(moveP, moveV, "rangeOfSelect", isScroll);
  40599. }
  40600. } else {
  40601. return moveV;
  40602. }
  40603. }
  40604. function luckysheetMoveHighlightCell(postion, index2, type, isScroll) {
  40605. if (isScroll == null) {
  40606. isScroll = true;
  40607. }
  40608. if (!postion) {
  40609. postion == "down";
  40610. }
  40611. let datarowlen = store_default.flowdata.length, datacolumnlen = store_default.flowdata[0].length;
  40612. let row, row_pre, row_index, row_index_ed;
  40613. let col, col_pre, col_index, col_index_ed;
  40614. if (type == "rangeOfSelect") {
  40615. let last = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1];
  40616. let curR;
  40617. if (last["row_focus"] == null) {
  40618. curR = last["row"][0];
  40619. } else {
  40620. curR = last["row_focus"];
  40621. }
  40622. let curC;
  40623. if (last["column_focus"] == null) {
  40624. curC = last["column"][0];
  40625. } else {
  40626. curC = last["column_focus"];
  40627. }
  40628. let margeset = menuButton_default.mergeborer(store_default.flowdata, curR, curC);
  40629. if (!!margeset) {
  40630. let str_r = margeset.row[2];
  40631. let end_r = margeset.row[3];
  40632. let str_c = margeset.column[2];
  40633. let end_c = margeset.column[3];
  40634. if (index2 > 0) {
  40635. if (postion == "down") {
  40636. curR = end_r;
  40637. curC = str_c;
  40638. } else if (postion == "right") {
  40639. curR = str_r;
  40640. curC = end_c;
  40641. }
  40642. } else {
  40643. curR = str_r;
  40644. curC = str_c;
  40645. }
  40646. }
  40647. let moveX = last["moveXY"] == null ? curR : last["moveXY"].x;
  40648. let moveY = last["moveXY"] == null ? curC : last["moveXY"].y;
  40649. if (postion == "down") {
  40650. curR += index2;
  40651. moveX = curR;
  40652. } else if (postion == "right") {
  40653. curC += index2;
  40654. moveY = curC;
  40655. }
  40656. if (curR >= datarowlen) {
  40657. curR = datarowlen - 1;
  40658. moveX = curR;
  40659. }
  40660. if (curR < 0) {
  40661. curR = 0;
  40662. moveX = curR;
  40663. }
  40664. if (curC >= datacolumnlen) {
  40665. curC = datacolumnlen - 1;
  40666. moveY = curC;
  40667. }
  40668. if (curC < 0) {
  40669. curC = 0;
  40670. moveY = curC;
  40671. }
  40672. let margeset2 = menuButton_default.mergeborer(store_default.flowdata, curR, curC);
  40673. if (!!margeset2) {
  40674. row = margeset2.row[1];
  40675. row_pre = margeset2.row[0];
  40676. row_index = margeset2.row[2];
  40677. row_index_ed = margeset2.row[3];
  40678. col = margeset2.column[1];
  40679. col_pre = margeset2.column[0];
  40680. col_index = margeset2.column[2];
  40681. col_index_ed = margeset2.column[3];
  40682. } else {
  40683. row = store_default.visibledatarow[moveX];
  40684. row_pre = moveX - 1 == -1 ? 0 : store_default.visibledatarow[moveX - 1];
  40685. col = store_default.visibledatacolumn[moveY];
  40686. col_pre = moveY - 1 == -1 ? 0 : store_default.visibledatacolumn[moveY - 1];
  40687. row_index = row_index_ed = curR;
  40688. col_index = col_index_ed = curC;
  40689. }
  40690. last["row"] = [row_index, row_index_ed];
  40691. last["column"] = [col_index, col_index_ed];
  40692. last["row_focus"] = row_index;
  40693. last["column_focus"] = col_index;
  40694. last["moveXY"] = {"x": moveX, "y": moveY};
  40695. selectHightlightShow();
  40696. pivotTable_default.pivotclick(row_index, col_index);
  40697. formula_default.fucntionboxshow(row_index, col_index);
  40698. } else if (type == "rangeOfFormula") {
  40699. let last = formula_default.func_selectedrange;
  40700. let curR;
  40701. if (last["row_focus"] == null) {
  40702. curR = last["row"][0];
  40703. } else {
  40704. curR = last["row_focus"];
  40705. }
  40706. let curC;
  40707. if (last["column_focus"] == null) {
  40708. curC = last["column"][0];
  40709. } else {
  40710. curC = last["column_focus"];
  40711. }
  40712. let margeset = menuButton_default.mergeborer(store_default.flowdata, curR, curC);
  40713. if (!!margeset) {
  40714. let str_r = margeset.row[2];
  40715. let end_r = margeset.row[3];
  40716. let str_c = margeset.column[2];
  40717. let end_c = margeset.column[3];
  40718. if (index2 > 0) {
  40719. if (postion == "down") {
  40720. curR = end_r;
  40721. curC = str_c;
  40722. } else if (postion == "right") {
  40723. curR = str_r;
  40724. curC = end_c;
  40725. }
  40726. } else {
  40727. curR = str_r;
  40728. curC = str_c;
  40729. }
  40730. }
  40731. let moveX = last["moveXY"] == null ? curR : last["moveXY"].x;
  40732. let moveY = last["moveXY"] == null ? curC : last["moveXY"].y;
  40733. if (postion == "down") {
  40734. curR += index2;
  40735. moveX = curR;
  40736. } else if (postion == "right") {
  40737. curC += index2;
  40738. moveY = curC;
  40739. }
  40740. if (curR >= datarowlen) {
  40741. curR = datarowlen - 1;
  40742. moveX = curR;
  40743. }
  40744. if (curR < 0) {
  40745. curR = 0;
  40746. moveX = curR;
  40747. }
  40748. if (curC >= datacolumnlen) {
  40749. curC = datacolumnlen - 1;
  40750. moveY = curC;
  40751. }
  40752. if (curC < 0) {
  40753. curC = 0;
  40754. moveY = curC;
  40755. }
  40756. let margeset2 = menuButton_default.mergeborer(store_default.flowdata, curR, curC);
  40757. if (!!margeset2) {
  40758. row = margeset2.row[1];
  40759. row_pre = margeset2.row[0];
  40760. row_index = margeset2.row[2];
  40761. row_index_ed = margeset2.row[3];
  40762. col = margeset2.column[1];
  40763. col_pre = margeset2.column[0];
  40764. col_index = margeset2.column[2];
  40765. col_index_ed = margeset2.column[3];
  40766. } else {
  40767. row = store_default.visibledatarow[moveX];
  40768. row_pre = moveX - 1 == -1 ? 0 : store_default.visibledatarow[moveX - 1];
  40769. row_index = moveX;
  40770. row_index_ed = moveX;
  40771. col = store_default.visibledatacolumn[moveY];
  40772. col_pre = moveY - 1 == -1 ? 0 : store_default.visibledatacolumn[moveY - 1];
  40773. col_index = moveY;
  40774. col_index_ed = moveY;
  40775. }
  40776. formula_default.func_selectedrange = {
  40777. "left": col_pre,
  40778. "width": col - col_pre - 1,
  40779. "top": row_pre,
  40780. "height": row - row_pre - 1,
  40781. "left_move": col_pre,
  40782. "width_move": col - col_pre - 1,
  40783. "top_move": row_pre,
  40784. "height_move": row - row_pre - 1,
  40785. "row": [row_index, row_index_ed],
  40786. "column": [col_index, col_index_ed],
  40787. "row_focus": row_index,
  40788. "column_focus": col_index,
  40789. "moveXY": {"x": moveX, "y": moveY}
  40790. };
  40791. $("#luckysheet-formula-functionrange-select").css({
  40792. "left": col_pre,
  40793. "width": col - col_pre - 1,
  40794. "top": row_pre,
  40795. "height": row - row_pre - 1
  40796. }).show();
  40797. formula_default.rangeSetValue({
  40798. "row": [row_index, row_index_ed],
  40799. "column": [col_index, col_index_ed]
  40800. });
  40801. }
  40802. let scrollLeft = $("#luckysheet-cell-main").scrollLeft();
  40803. let scrollTop = $("#luckysheet-cell-main").scrollTop();
  40804. let winH = $("#luckysheet-cell-main").height(), winW = $("#luckysheet-cell-main").width();
  40805. let sleft = 0, stop = 0;
  40806. if (col - scrollLeft - winW + 20 > 0) {
  40807. sleft = col - winW + 20;
  40808. if (isScroll) {
  40809. $("#luckysheet-scrollbar-x").scrollLeft(sleft);
  40810. }
  40811. } else if (col_pre - scrollLeft - 20 < 0) {
  40812. sleft = col_pre - 20;
  40813. if (isScroll) {
  40814. $("#luckysheet-scrollbar-x").scrollLeft(sleft);
  40815. }
  40816. }
  40817. if (row - scrollTop - winH + 20 > 0) {
  40818. stop = row - winH + 20;
  40819. if (isScroll) {
  40820. $("#luckysheet-scrollbar-y").scrollTop(stop);
  40821. }
  40822. } else if (row_pre - scrollTop - 20 < 0) {
  40823. stop = row_pre - 20;
  40824. if (isScroll) {
  40825. $("#luckysheet-scrollbar-y").scrollTop(stop);
  40826. }
  40827. }
  40828. clearTimeout(store_default.countfuncTimeout);
  40829. countfunc();
  40830. server_default.saveParam("mv", store_default.currentSheetIndex, store_default.luckysheet_select_save);
  40831. }
  40832. function luckysheetMoveHighlightCell2(postion, type, isScroll) {
  40833. if (!isScroll) {
  40834. isScroll = true;
  40835. }
  40836. let row, row_pre;
  40837. let col, col_pre;
  40838. if (type == "rangeOfSelect") {
  40839. let last = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1];
  40840. let rf = last["row_focus"], cf = last["column_focus"];
  40841. let focusIsMerge = false, mc = {};
  40842. if (store_default.config["merge"] != null && rf + "_" + cf in store_default.config["merge"]) {
  40843. focusIsMerge = true;
  40844. mc = store_default.config["merge"][rf + "_" + cf];
  40845. }
  40846. if (postion == "down") {
  40847. if (rf == store_default.flowdata.length - 1) {
  40848. return;
  40849. }
  40850. if (focusIsMerge) {
  40851. rf = getNextIndex("down", cf, mc.r + mc.rs - 1, store_default.flowdata.length - 1);
  40852. } else {
  40853. rf = getNextIndex("down", cf, rf, store_default.flowdata.length - 1);
  40854. }
  40855. } else if (postion == "up") {
  40856. if (rf == 0) {
  40857. return;
  40858. }
  40859. if (focusIsMerge) {
  40860. rf = getNextIndex("up", cf, 0, mc.r);
  40861. } else {
  40862. rf = getNextIndex("up", cf, 0, rf);
  40863. }
  40864. } else if (postion == "right") {
  40865. if (cf == store_default.flowdata[0].length - 1) {
  40866. return;
  40867. }
  40868. if (focusIsMerge) {
  40869. cf = getNextIndex("right", rf, mc.c + mc.cs - 1, store_default.flowdata[0].length - 1);
  40870. } else {
  40871. cf = getNextIndex("right", rf, cf, store_default.flowdata[0].length - 1);
  40872. }
  40873. } else if (postion == "left") {
  40874. if (cf == 0) {
  40875. return;
  40876. }
  40877. if (focusIsMerge) {
  40878. cf = getNextIndex("left", rf, 0, mc.c);
  40879. } else {
  40880. cf = getNextIndex("left", rf, 0, cf);
  40881. }
  40882. }
  40883. let rowseleted = [rf, rf];
  40884. let columnseleted = [cf, cf];
  40885. row = store_default.visibledatarow[rf];
  40886. row_pre = rf - 1 == -1 ? 0 : store_default.visibledatarow[rf - 1];
  40887. col = store_default.visibledatacolumn[cf];
  40888. col_pre = cf - 1 == -1 ? 0 : store_default.visibledatacolumn[cf - 1];
  40889. let changeparam = menuButton_default.mergeMoveMain(columnseleted, rowseleted, last, row_pre, row - row_pre - 1, col_pre, col - col_pre - 1);
  40890. if (changeparam != null) {
  40891. columnseleted = changeparam[0];
  40892. rowseleted = changeparam[1];
  40893. }
  40894. store_default.luckysheet_select_save = [{"row": rowseleted, "column": columnseleted}];
  40895. selectHightlightShow();
  40896. pivotTable_default.pivotclick(rf, cf);
  40897. formula_default.fucntionboxshow(rf, cf);
  40898. } else if (type == "rangeOfFormula") {
  40899. let last = formula_default.func_selectedrange;
  40900. let rf = last["row_focus"], cf = last["column_focus"];
  40901. let focusIsMerge = false, mc = {};
  40902. if (store_default.config["merge"] != null && rf + "_" + cf in store_default.config["merge"]) {
  40903. focusIsMerge = true;
  40904. mc = store_default.config["merge"][rf + "_" + cf];
  40905. }
  40906. if (postion == "down") {
  40907. if (rf == store_default.flowdata.length - 1) {
  40908. return;
  40909. }
  40910. if (focusIsMerge) {
  40911. rf = getNextIndex("down", cf, mc.r + mc.rs - 1, store_default.flowdata.length - 1);
  40912. } else {
  40913. rf = getNextIndex("down", cf, rf, store_default.flowdata.length - 1);
  40914. }
  40915. } else if (postion == "up") {
  40916. if (rf == 0) {
  40917. return;
  40918. }
  40919. if (focusIsMerge) {
  40920. rf = getNextIndex("up", cf, 0, mc.r);
  40921. } else {
  40922. rf = getNextIndex("up", cf, 0, rf);
  40923. }
  40924. } else if (postion == "right") {
  40925. if (cf == store_default.flowdata[0].length - 1) {
  40926. return;
  40927. }
  40928. if (focusIsMerge) {
  40929. cf = getNextIndex("right", rf, mc.c + mc.cs - 1, store_default.flowdata[0].length - 1);
  40930. } else {
  40931. cf = getNextIndex("right", rf, cf, store_default.flowdata[0].length - 1);
  40932. }
  40933. } else if (postion == "left") {
  40934. if (cf == 0) {
  40935. return;
  40936. }
  40937. if (focusIsMerge) {
  40938. cf = getNextIndex("left", rf, 0, mc.c);
  40939. } else {
  40940. cf = getNextIndex("left", rf, 0, cf);
  40941. }
  40942. }
  40943. let rowseleted = [rf, rf];
  40944. let columnseleted = [cf, cf];
  40945. row = store_default.visibledatarow[rf];
  40946. row_pre = rf - 1 == -1 ? 0 : store_default.visibledatarow[rf - 1];
  40947. col = store_default.visibledatacolumn[cf];
  40948. col_pre = cf - 1 == -1 ? 0 : store_default.visibledatacolumn[cf - 1];
  40949. let top = row_pre, height = row - row_pre - 1;
  40950. let left = col_pre, width = col - col_pre - 1;
  40951. let changeparam = menuButton_default.mergeMoveMain(columnseleted, rowseleted, last, top, height, left, width);
  40952. if (changeparam != null) {
  40953. columnseleted = changeparam[0];
  40954. rowseleted = changeparam[1];
  40955. top = changeparam[2];
  40956. height = changeparam[3];
  40957. left = changeparam[4];
  40958. width = changeparam[5];
  40959. }
  40960. formula_default.func_selectedrange = {
  40961. "left": left,
  40962. "width": width,
  40963. "top": top,
  40964. "height": height,
  40965. "left_move": left,
  40966. "width_move": width,
  40967. "top_move": top,
  40968. "height_move": height,
  40969. "row": rowseleted,
  40970. "column": columnseleted,
  40971. "row_focus": rf,
  40972. "column_focus": cf
  40973. };
  40974. $("#luckysheet-formula-functionrange-select").css({
  40975. "left": left,
  40976. "width": width,
  40977. "top": top,
  40978. "height": height
  40979. }).show();
  40980. formula_default.rangeSetValue({
  40981. "row": rowseleted,
  40982. "column": columnseleted
  40983. });
  40984. }
  40985. let scrollLeft = $("#luckysheet-cell-main").scrollLeft();
  40986. let scrollTop = $("#luckysheet-cell-main").scrollTop();
  40987. let winH = $("#luckysheet-cell-main").height(), winW = $("#luckysheet-cell-main").width();
  40988. let sleft = 0, stop = 0;
  40989. if (col - scrollLeft - winW + 20 > 0) {
  40990. sleft = col - winW + 20;
  40991. if (isScroll) {
  40992. $("#luckysheet-scrollbar-x").scrollLeft(sleft);
  40993. }
  40994. } else if (col_pre - scrollLeft - 20 < 0) {
  40995. sleft = col_pre - 20;
  40996. if (isScroll) {
  40997. $("#luckysheet-scrollbar-x").scrollLeft(sleft);
  40998. }
  40999. }
  41000. if (row - scrollTop - winH + 20 > 0) {
  41001. stop = row - winH + 20;
  41002. if (isScroll) {
  41003. $("#luckysheet-scrollbar-y").scrollTop(stop);
  41004. }
  41005. } else if (row_pre - scrollTop - 20 < 0) {
  41006. stop = row_pre - 20;
  41007. if (isScroll) {
  41008. $("#luckysheet-scrollbar-y").scrollTop(stop);
  41009. }
  41010. }
  41011. clearTimeout(store_default.countfuncTimeout);
  41012. countfunc();
  41013. }
  41014. function luckysheetMoveHighlightRange(postion, index2, type, isScroll) {
  41015. if (isScroll == null) {
  41016. isScroll = true;
  41017. }
  41018. if (!postion) {
  41019. postion == "down";
  41020. }
  41021. let row, row_pre;
  41022. let col, col_pre;
  41023. if (type == "rangeOfSelect") {
  41024. let last = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1];
  41025. let curR = last["row"][0], endR = last["row"][1];
  41026. let curC = last["column"][0], endC = last["column"][1];
  41027. let rf = last["row_focus"], cf = last["column_focus"];
  41028. let datarowlen = store_default.flowdata.length, datacolumnlen = store_default.flowdata[0].length;
  41029. if (postion == "down") {
  41030. if (rowHasMerge(rf, curC, endC)) {
  41031. let rfMerge = getRowMerge(rf, curC, endC);
  41032. let rf_str = rfMerge[0], rf_end = rfMerge[1];
  41033. if (rf_str > curR && rf_end == endR) {
  41034. if (index2 > 0 && rowHasMerge(curR, curC, endC)) {
  41035. curR = getRowMerge(curR, curC, endC)[1];
  41036. }
  41037. curR += index2;
  41038. } else if (rf_end < endR && rf_str == curR) {
  41039. if (index2 < 0 && rowHasMerge(endR, curC, endC)) {
  41040. endR = getRowMerge(endR, curC, endC)[0];
  41041. }
  41042. endR += index2;
  41043. } else {
  41044. if (index2 > 0) {
  41045. endR += index2;
  41046. } else {
  41047. curR += index2;
  41048. }
  41049. }
  41050. } else {
  41051. if (rf > curR && rf == endR) {
  41052. if (index2 > 0 && rowHasMerge(curR, curC, endC)) {
  41053. curR = getRowMerge(curR, curC, endC)[1];
  41054. }
  41055. curR += index2;
  41056. } else if (rf < endR && rf == curR) {
  41057. if (index2 < 0 && rowHasMerge(endR, curC, endC)) {
  41058. endR = getRowMerge(endR, curC, endC)[0];
  41059. }
  41060. endR += index2;
  41061. } else if (rf == curR && rf == endR) {
  41062. if (index2 > 0) {
  41063. endR += index2;
  41064. } else {
  41065. curR += index2;
  41066. }
  41067. }
  41068. }
  41069. if (endR >= datarowlen) {
  41070. endR = datarowlen - 1;
  41071. }
  41072. if (endR < 0) {
  41073. endR = 0;
  41074. }
  41075. if (curR >= datarowlen) {
  41076. curR = datarowlen - 1;
  41077. }
  41078. if (curR < 0) {
  41079. curR = 0;
  41080. }
  41081. } else {
  41082. if (colHasMerge(cf, curR, endR)) {
  41083. let cfMerge = getColMerge(cf, curR, endR);
  41084. let cf_str = cfMerge[0], cf_end = cfMerge[1];
  41085. if (cf_str > curC && cf_end == endC) {
  41086. if (index2 > 0 && colHasMerge(curC, curR, endR)) {
  41087. curC = getColMerge(curC, curR, endR)[1];
  41088. }
  41089. curC += index2;
  41090. } else if (cf_end < endC && cf_str == curC) {
  41091. if (index2 < 0 && colHasMerge(endC, curR, endR)) {
  41092. endC = getColMerge(endC, curR, endR)[0];
  41093. }
  41094. endC += index2;
  41095. } else {
  41096. if (index2 > 0) {
  41097. endC += index2;
  41098. } else {
  41099. curC += index2;
  41100. }
  41101. }
  41102. } else {
  41103. if (cf > curC && cf == endC) {
  41104. if (index2 > 0 && colHasMerge(curC, curR, endR)) {
  41105. curC = getColMerge(curC, curR, endR)[1];
  41106. }
  41107. curC += index2;
  41108. } else if (cf < endC && cf == curC) {
  41109. if (index2 < 0 && colHasMerge(endC, curR, endR)) {
  41110. endC = getColMerge(endC, curR, endR)[0];
  41111. }
  41112. endC += index2;
  41113. } else if (cf == curC && cf == endC) {
  41114. if (index2 > 0) {
  41115. endC += index2;
  41116. } else {
  41117. curC += index2;
  41118. }
  41119. }
  41120. }
  41121. if (endC >= datacolumnlen) {
  41122. endC = datacolumnlen - 1;
  41123. }
  41124. if (endC < 0) {
  41125. endC = 0;
  41126. }
  41127. if (curC >= datacolumnlen) {
  41128. curC = datacolumnlen - 1;
  41129. }
  41130. if (curC < 0) {
  41131. curC = 0;
  41132. }
  41133. }
  41134. let rowseleted = [curR, endR];
  41135. let columnseleted = [curC, endC];
  41136. row = store_default.visibledatarow[endR];
  41137. row_pre = curR - 1 == -1 ? 0 : store_default.visibledatarow[curR - 1];
  41138. col = store_default.visibledatacolumn[endC];
  41139. col_pre = curC - 1 == -1 ? 0 : store_default.visibledatacolumn[curC - 1];
  41140. let changeparam = menuButton_default.mergeMoveMain(columnseleted, rowseleted, last, row_pre, row - row_pre - 1, col_pre, col - col_pre - 1);
  41141. if (changeparam != null) {
  41142. columnseleted = changeparam[0];
  41143. rowseleted = changeparam[1];
  41144. }
  41145. last["row"] = rowseleted;
  41146. last["column"] = columnseleted;
  41147. selectHightlightShow();
  41148. } else if (type == "rangeOfFormula") {
  41149. let last = formula_default.func_selectedrange;
  41150. let curR = last["row"][0], endR = last["row"][1];
  41151. let curC = last["column"][0], endC = last["column"][1];
  41152. let rf = last["row_focus"], cf = last["column_focus"];
  41153. let datarowlen = store_default.flowdata.length, datacolumnlen = store_default.flowdata[0].length;
  41154. if (postion == "down") {
  41155. if (rowHasMerge(rf, curC, endC)) {
  41156. let rfMerge = getRowMerge(rf, curC, endC);
  41157. let rf_str = rfMerge[0], rf_end = rfMerge[1];
  41158. if (rf_str > curR && rf_end == endR) {
  41159. if (index2 > 0 && rowHasMerge(curR, curC, endC)) {
  41160. curR = getRowMerge(curR, curC, endC)[1];
  41161. }
  41162. curR += index2;
  41163. } else if (rf_end < endR && rf_str == curR) {
  41164. if (index2 < 0 && rowHasMerge(endR, curC, endC)) {
  41165. endR = getRowMerge(endR, curC, endC)[0];
  41166. }
  41167. endR += index2;
  41168. } else {
  41169. if (index2 > 0) {
  41170. endR += index2;
  41171. } else {
  41172. curR += index2;
  41173. }
  41174. }
  41175. } else {
  41176. if (rf > curR && rf == endR) {
  41177. if (index2 > 0 && rowHasMerge(curR, curC, endC)) {
  41178. curR = getRowMerge(curR, curC, endC)[1];
  41179. }
  41180. curR += index2;
  41181. } else if (rf < endR && rf == curR) {
  41182. if (index2 < 0 && rowHasMerge(endR, curC, endC)) {
  41183. endR = getRowMerge(endR, curC, endC)[0];
  41184. }
  41185. endR += index2;
  41186. } else if (rf == curR && rf == endR) {
  41187. if (index2 > 0) {
  41188. endR += index2;
  41189. } else {
  41190. curR += index2;
  41191. }
  41192. }
  41193. }
  41194. if (endR >= datarowlen) {
  41195. endR = datarowlen - 1;
  41196. }
  41197. if (endR < 0) {
  41198. endR = 0;
  41199. }
  41200. if (curR >= datarowlen) {
  41201. curR = datarowlen - 1;
  41202. }
  41203. if (curR < 0) {
  41204. curR = 0;
  41205. }
  41206. } else {
  41207. if (colHasMerge(cf, curR, endR)) {
  41208. let cfMerge = getColMerge(cf, curR, endR);
  41209. let cf_str = cfMerge[0], cf_end = cfMerge[1];
  41210. if (cf_str > curC && cf_end == endC) {
  41211. if (index2 > 0 && colHasMerge(curC, curR, endR)) {
  41212. curC = getColMerge(curC, curR, endR)[1];
  41213. }
  41214. curC += index2;
  41215. } else if (cf_end < endC && cf_str == curC) {
  41216. if (index2 < 0 && colHasMerge(endC, curR, endR)) {
  41217. endC = getColMerge(endC, curR, endR)[0];
  41218. }
  41219. endC += index2;
  41220. } else {
  41221. if (index2 > 0) {
  41222. endC += index2;
  41223. } else {
  41224. curC += index2;
  41225. }
  41226. }
  41227. } else {
  41228. if (cf > curC && cf == endC) {
  41229. if (index2 > 0 && colHasMerge(curC, curR, endR)) {
  41230. curC = getColMerge(curC, curR, endR)[1];
  41231. }
  41232. curC += index2;
  41233. } else if (cf < endC && cf == curC) {
  41234. if (index2 < 0 && colHasMerge(endC, curR, endR)) {
  41235. endC = getColMerge(endC, curR, endR)[0];
  41236. }
  41237. endC += index2;
  41238. } else if (cf == curC && cf == endC) {
  41239. if (index2 > 0) {
  41240. endC += index2;
  41241. } else {
  41242. curC += index2;
  41243. }
  41244. }
  41245. }
  41246. if (endC >= datacolumnlen) {
  41247. endC = datacolumnlen - 1;
  41248. }
  41249. if (endC < 0) {
  41250. endC = 0;
  41251. }
  41252. if (curC >= datacolumnlen) {
  41253. curC = datacolumnlen - 1;
  41254. }
  41255. if (curC < 0) {
  41256. curC = 0;
  41257. }
  41258. }
  41259. let rowseleted = [curR, endR];
  41260. let columnseleted = [curC, endC];
  41261. row = store_default.visibledatarow[endR];
  41262. row_pre = curR - 1 == -1 ? 0 : store_default.visibledatarow[curR - 1];
  41263. col = store_default.visibledatacolumn[endC];
  41264. col_pre = curC - 1 == -1 ? 0 : store_default.visibledatacolumn[curC - 1];
  41265. let top = row_pre, height = row - row_pre - 1;
  41266. let left = col_pre, width = col - col_pre - 1;
  41267. let changeparam = menuButton_default.mergeMoveMain(columnseleted, rowseleted, last, top, height, left, width);
  41268. if (changeparam != null) {
  41269. columnseleted = changeparam[0];
  41270. rowseleted = changeparam[1];
  41271. top = changeparam[2];
  41272. height = changeparam[3];
  41273. left = changeparam[4];
  41274. width = changeparam[5];
  41275. }
  41276. formula_default.func_selectedrange = {
  41277. "left": left,
  41278. "width": width,
  41279. "top": top,
  41280. "height": height,
  41281. "left_move": left,
  41282. "width_move": width,
  41283. "top_move": top,
  41284. "height_move": height,
  41285. "row": rowseleted,
  41286. "column": columnseleted,
  41287. "row_focus": rf,
  41288. "column_focus": cf
  41289. };
  41290. $("#luckysheet-formula-functionrange-select").css({
  41291. "left": left,
  41292. "width": width,
  41293. "top": top,
  41294. "height": height
  41295. }).show();
  41296. formula_default.rangeSetValue({
  41297. "row": rowseleted,
  41298. "column": columnseleted
  41299. });
  41300. }
  41301. let scrollLeft = $("#luckysheet-cell-main").scrollLeft();
  41302. let scrollTop = $("#luckysheet-cell-main").scrollTop();
  41303. let winH = $("#luckysheet-cell-main").height(), winW = $("#luckysheet-cell-main").width();
  41304. let sleft = 0, stop = 0;
  41305. if (col - scrollLeft - winW + 20 > 0) {
  41306. sleft = col - winW + 20;
  41307. if (isScroll) {
  41308. $("#luckysheet-scrollbar-x").scrollLeft(sleft);
  41309. }
  41310. } else if (col_pre - scrollLeft - 20 < 0) {
  41311. sleft = col_pre - 20;
  41312. if (isScroll) {
  41313. $("#luckysheet-scrollbar-x").scrollLeft(sleft);
  41314. }
  41315. }
  41316. if (row - scrollTop - winH + 20 > 0) {
  41317. stop = row - winH + 20;
  41318. if (isScroll) {
  41319. $("#luckysheet-scrollbar-y").scrollTop(stop);
  41320. }
  41321. } else if (row_pre - scrollTop - 20 < 0) {
  41322. stop = row_pre - 20;
  41323. if (isScroll) {
  41324. $("#luckysheet-scrollbar-y").scrollTop(stop);
  41325. }
  41326. }
  41327. clearTimeout(store_default.countfuncTimeout);
  41328. countfunc();
  41329. }
  41330. function luckysheetMoveHighlightRange2(postion, type, isScroll) {
  41331. if (!isScroll) {
  41332. isScroll = true;
  41333. }
  41334. let row, row_pre;
  41335. let col, col_pre;
  41336. if (type == "rangeOfSelect") {
  41337. let last = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1];
  41338. let rf = last["row_focus"], cf = last["column_focus"];
  41339. let r1 = last["row"][0], r2 = last["row"][1];
  41340. let c1 = last["column"][0], c2 = last["column"][1];
  41341. if (postion == "down") {
  41342. if (r2 == store_default.flowdata.length - 1) {
  41343. return;
  41344. }
  41345. if (rowHasMerge(rf, c1, c2)) {
  41346. let rfMerge = getRowMerge(rf, c1, c2);
  41347. let rf_str = rfMerge[0], rf_end = rfMerge[1];
  41348. if (rf_str > r1 && rf_end == r2) {
  41349. r1 = getNextIndex("down", cf, r1, r2);
  41350. } else {
  41351. r2 = getNextIndex("down", cf, r2, store_default.flowdata.length - 1);
  41352. }
  41353. } else {
  41354. if (rf > r1 && rf == r2) {
  41355. r1 = getNextIndex("down", cf, r1, r2);
  41356. } else {
  41357. r2 = getNextIndex("down", cf, r2, store_default.flowdata.length - 1);
  41358. }
  41359. }
  41360. } else if (postion == "up") {
  41361. if (r1 == 0) {
  41362. return;
  41363. }
  41364. if (rowHasMerge(rf, c1, c2)) {
  41365. let rfMerge = getRowMerge(rf, c1, c2);
  41366. let rf_str = rfMerge[0], rf_end = rfMerge[1];
  41367. if (rf_end < r2 && rf_str == r1) {
  41368. r2 = getNextIndex("up", cf, r1, r2);
  41369. } else {
  41370. r1 = getNextIndex("up", cf, 0, r1);
  41371. }
  41372. } else {
  41373. if (rf < r2 && rf == r1) {
  41374. r2 = getNextIndex("up", cf, r1, r2);
  41375. } else {
  41376. r1 = getNextIndex("up", cf, 0, r1);
  41377. }
  41378. }
  41379. } else if (postion == "right") {
  41380. if (c2 == store_default.flowdata[0].length - 1) {
  41381. return;
  41382. }
  41383. if (colHasMerge(cf, r1, r2)) {
  41384. let cfMerge = getColMerge(cf, r1, r2);
  41385. let cf_str = cfMerge[0], cf_end = cfMerge[1];
  41386. if (cf_str > c1 && cf_end == c2) {
  41387. c1 = getNextIndex("right", rf, c1, c2);
  41388. } else {
  41389. c2 = getNextIndex("right", rf, c2, store_default.flowdata[0].length - 1);
  41390. }
  41391. } else {
  41392. if (cf > c1 && cf == c2) {
  41393. c1 = getNextIndex("right", rf, c1, c2);
  41394. } else {
  41395. c2 = getNextIndex("right", rf, c2, store_default.flowdata[0].length - 1);
  41396. }
  41397. }
  41398. } else if (postion == "left") {
  41399. if (c1 == 0) {
  41400. return;
  41401. }
  41402. if (colHasMerge(cf, r1, r2)) {
  41403. let cfMerge = getColMerge(cf, r1, r2);
  41404. let cf_str = cfMerge[0], cf_end = cfMerge[1];
  41405. if (cf_end < c2 && cf_str == c1) {
  41406. c2 = getNextIndex("left", rf, c1, c2);
  41407. } else {
  41408. c1 = getNextIndex("left", rf, 0, c1);
  41409. }
  41410. } else {
  41411. if (cf < c2 && cf == c1) {
  41412. c2 = getNextIndex("left", rf, c1, c2);
  41413. } else {
  41414. c1 = getNextIndex("left", rf, 0, c1);
  41415. }
  41416. }
  41417. }
  41418. let rowseleted = [r1, r2];
  41419. let columnseleted = [c1, c2];
  41420. row = store_default.visibledatarow[r2];
  41421. row_pre = r1 - 1 == -1 ? 0 : store_default.visibledatarow[r1 - 1];
  41422. col = store_default.visibledatacolumn[c2];
  41423. col_pre = c1 - 1 == -1 ? 0 : store_default.visibledatacolumn[c1 - 1];
  41424. let changeparam = menuButton_default.mergeMoveMain(columnseleted, rowseleted, last, row_pre, row - row_pre - 1, col_pre, col - col_pre - 1);
  41425. if (changeparam != null) {
  41426. columnseleted = changeparam[0];
  41427. rowseleted = changeparam[1];
  41428. }
  41429. last["row"] = rowseleted;
  41430. last["column"] = columnseleted;
  41431. selectHightlightShow();
  41432. } else if (type == "rangeOfFormula") {
  41433. let last = formula_default.func_selectedrange;
  41434. let rf = last["row_focus"], cf = last["column_focus"];
  41435. let r1 = last["row"][0], r2 = last["row"][1];
  41436. let c1 = last["column"][0], c2 = last["column"][1];
  41437. if (postion == "down") {
  41438. if (r2 == store_default.flowdata.length - 1) {
  41439. return;
  41440. }
  41441. if (rowHasMerge(rf, c1, c2)) {
  41442. let rfMerge = getRowMerge(rf, c1, c2);
  41443. let rf_str = rfMerge[0], rf_end = rfMerge[1];
  41444. if (rf_str > r1 && rf_end == r2) {
  41445. r1 = getNextIndex("down", cf, r1, r2);
  41446. } else {
  41447. r2 = getNextIndex("down", cf, r2, store_default.flowdata.length - 1);
  41448. }
  41449. } else {
  41450. if (rf > r1 && rf == r2) {
  41451. r1 = getNextIndex("down", cf, r1, r2);
  41452. } else {
  41453. r2 = getNextIndex("down", cf, r2, store_default.flowdata.length - 1);
  41454. }
  41455. }
  41456. } else if (postion == "up") {
  41457. if (r1 == 0) {
  41458. return;
  41459. }
  41460. if (rowHasMerge(rf, c1, c2)) {
  41461. let rfMerge = getRowMerge(rf, c1, c2);
  41462. let rf_str = rfMerge[0], rf_end = rfMerge[1];
  41463. if (rf_end < r2 && rf_str == r1) {
  41464. r2 = getNextIndex("up", cf, r1, r2);
  41465. } else {
  41466. r1 = getNextIndex("up", cf, 0, r1);
  41467. }
  41468. } else {
  41469. if (rf < r2 && rf == r1) {
  41470. r2 = getNextIndex("up", cf, r1, r2);
  41471. } else {
  41472. r1 = getNextIndex("up", cf, 0, r1);
  41473. }
  41474. }
  41475. } else if (postion == "right") {
  41476. if (c2 == store_default.flowdata[0].length - 1) {
  41477. return;
  41478. }
  41479. if (colHasMerge(cf, r1, r2)) {
  41480. let cfMerge = getColMerge(cf, r1, r2);
  41481. let cf_str = cfMerge[0], cf_end = cfMerge[1];
  41482. if (cf_str > c1 && cf_end == c2) {
  41483. c1 = getNextIndex("right", rf, c1, c2);
  41484. } else {
  41485. c2 = getNextIndex("right", rf, c2, store_default.flowdata[0].length - 1);
  41486. }
  41487. } else {
  41488. if (cf > c1 && cf == c2) {
  41489. c1 = getNextIndex("right", rf, c1, c2);
  41490. } else {
  41491. c2 = getNextIndex("right", rf, c2, store_default.flowdata[0].length - 1);
  41492. }
  41493. }
  41494. } else if (postion == "left") {
  41495. if (c1 == 0) {
  41496. return;
  41497. }
  41498. if (colHasMerge(cf, r1, r2)) {
  41499. let cfMerge = getColMerge(cf, r1, r2);
  41500. let cf_str = cfMerge[0], cf_end = cfMerge[1];
  41501. if (cf_end < c2 && cf_str == c1) {
  41502. c2 = getNextIndex("left", rf, c1, c2);
  41503. } else {
  41504. c1 = getNextIndex("left", rf, 0, c1);
  41505. }
  41506. } else {
  41507. if (cf < c2 && cf == c1) {
  41508. c2 = getNextIndex("left", rf, c1, c2);
  41509. } else {
  41510. c1 = getNextIndex("left", rf, 0, c1);
  41511. }
  41512. }
  41513. }
  41514. let rowseleted = [r1, r2];
  41515. let columnseleted = [c1, c2];
  41516. row = store_default.visibledatarow[r2];
  41517. row_pre = r1 - 1 == -1 ? 0 : store_default.visibledatarow[r1 - 1];
  41518. col = store_default.visibledatacolumn[c2];
  41519. col_pre = c1 - 1 == -1 ? 0 : store_default.visibledatacolumn[c1 - 1];
  41520. let top = row_pre, height = row - row_pre - 1;
  41521. let left = col_pre, width = col - col_pre - 1;
  41522. let changeparam = menuButton_default.mergeMoveMain(columnseleted, rowseleted, last, top, height, left, width);
  41523. if (changeparam != null) {
  41524. columnseleted = changeparam[0];
  41525. rowseleted = changeparam[1];
  41526. top = changeparam[2];
  41527. height = changeparam[3];
  41528. left = changeparam[4];
  41529. width = changeparam[5];
  41530. }
  41531. formula_default.func_selectedrange = {
  41532. "left": left,
  41533. "width": width,
  41534. "top": top,
  41535. "height": height,
  41536. "left_move": left,
  41537. "width_move": width,
  41538. "top_move": top,
  41539. "height_move": height,
  41540. "row": rowseleted,
  41541. "column": columnseleted,
  41542. "row_focus": rf,
  41543. "column_focus": cf
  41544. };
  41545. $("#luckysheet-formula-functionrange-select").css({
  41546. "left": left,
  41547. "width": width,
  41548. "top": top,
  41549. "height": height
  41550. }).show();
  41551. formula_default.rangeSetValue({
  41552. "row": rowseleted,
  41553. "column": columnseleted
  41554. });
  41555. }
  41556. let scrollLeft = $("#luckysheet-cell-main").scrollLeft();
  41557. let scrollTop = $("#luckysheet-cell-main").scrollTop();
  41558. let winH = $("#luckysheet-cell-main").height(), winW = $("#luckysheet-cell-main").width();
  41559. let sleft = 0, stop = 0;
  41560. if (col - scrollLeft - winW + 20 > 0) {
  41561. sleft = col - winW + 20;
  41562. if (isScroll) {
  41563. $("#luckysheet-scrollbar-x").scrollLeft(sleft);
  41564. }
  41565. } else if (col_pre - scrollLeft - 20 < 0) {
  41566. sleft = col_pre - 20;
  41567. if (isScroll) {
  41568. $("#luckysheet-scrollbar-x").scrollLeft(sleft);
  41569. }
  41570. }
  41571. if (row - scrollTop - winH + 20 > 0) {
  41572. stop = row - winH + 20;
  41573. if (isScroll) {
  41574. $("#luckysheet-scrollbar-y").scrollTop(stop);
  41575. }
  41576. } else if (row_pre - scrollTop - 20 < 0) {
  41577. stop = row_pre - 20;
  41578. if (isScroll) {
  41579. $("#luckysheet-scrollbar-y").scrollTop(stop);
  41580. }
  41581. }
  41582. clearTimeout(store_default.countfuncTimeout);
  41583. countfunc();
  41584. }
  41585. function rowHasMerge(r2, c1, c2) {
  41586. let rowHasMerge2 = false;
  41587. for (let c3 = c1; c3 <= c2; c3++) {
  41588. let cell = store_default.flowdata[r2][c3];
  41589. if (getObjType(cell) == "object" && "mc" in cell) {
  41590. rowHasMerge2 = true;
  41591. break;
  41592. }
  41593. }
  41594. return rowHasMerge2;
  41595. }
  41596. function colHasMerge(c2, r1, r2) {
  41597. let colHasMerge2 = false;
  41598. for (let r3 = r1; r3 <= r2; r3++) {
  41599. let cell = store_default.flowdata[r3][c2];
  41600. if (getObjType(cell) == "object" && "mc" in cell) {
  41601. colHasMerge2 = true;
  41602. break;
  41603. }
  41604. }
  41605. return colHasMerge2;
  41606. }
  41607. function getRowMerge(rIndex, c1, c2) {
  41608. let r1 = 0, r2 = store_default.flowdata.length - 1;
  41609. let str = null;
  41610. if (rIndex > r1) {
  41611. for (let r3 = rIndex; r3 >= r1; r3--) {
  41612. for (let c3 = c1; c3 <= c2; c3++) {
  41613. let cell = store_default.flowdata[r3][c3];
  41614. if (getObjType(cell) == "object" && "mc" in cell) {
  41615. let mc = store_default.config["merge"][cell["mc"].r + "_" + cell["mc"].c];
  41616. if (str == null || mc.r < str) {
  41617. str = mc.r;
  41618. }
  41619. }
  41620. }
  41621. if (rowHasMerge(str - 1, c1, c2) && str > r1) {
  41622. r3 = str;
  41623. } else {
  41624. break;
  41625. }
  41626. }
  41627. } else {
  41628. str = r1;
  41629. }
  41630. let end = null;
  41631. if (rIndex < r2) {
  41632. for (let r3 = rIndex; r3 <= r2; r3++) {
  41633. for (let c3 = c1; c3 <= c2; c3++) {
  41634. let cell = store_default.flowdata[r3][c3];
  41635. if (getObjType(cell) == "object" && "mc" in cell) {
  41636. let mc = store_default.config["merge"][cell["mc"].r + "_" + cell["mc"].c];
  41637. if (end == null || mc.r + mc.rs - 1 > end) {
  41638. end = mc.r + mc.rs - 1;
  41639. }
  41640. }
  41641. }
  41642. if (rowHasMerge(end + 1, c1, c2) && end < r2) {
  41643. r3 = end;
  41644. } else {
  41645. break;
  41646. }
  41647. }
  41648. } else {
  41649. end = r2;
  41650. }
  41651. return [str, end];
  41652. }
  41653. function getColMerge(cIndex, r1, r2) {
  41654. let c1 = 0, c2 = store_default.flowdata[0].length - 1;
  41655. let str = null;
  41656. if (cIndex > c1) {
  41657. for (let c3 = cIndex; c3 >= c1; c3--) {
  41658. for (let r3 = r1; r3 <= r2; r3++) {
  41659. let cell = store_default.flowdata[r3][c3];
  41660. if (getObjType(cell) == "object" && "mc" in cell) {
  41661. let mc = store_default.config["merge"][cell["mc"].r + "_" + cell["mc"].c];
  41662. if (str == null || mc.c < str) {
  41663. str = mc.c;
  41664. }
  41665. }
  41666. }
  41667. if (colHasMerge(str - 1, r1, r2) && str > c1) {
  41668. c3 = str;
  41669. } else {
  41670. break;
  41671. }
  41672. }
  41673. } else {
  41674. str = c1;
  41675. }
  41676. let end = null;
  41677. if (cIndex < c2) {
  41678. for (let c3 = cIndex; c3 <= c2; c3++) {
  41679. for (let r3 = r1; r3 <= r2; r3++) {
  41680. let cell = store_default.flowdata[r3][c3];
  41681. if (getObjType(cell) == "object" && "mc" in cell) {
  41682. let mc = store_default.config["merge"][cell["mc"].r + "_" + cell["mc"].c];
  41683. if (end == null || mc.c + mc.cs - 1 > end) {
  41684. end = mc.c + mc.cs - 1;
  41685. }
  41686. }
  41687. }
  41688. if (colHasMerge(end + 1, r1, r2) && end < c2) {
  41689. c3 = end;
  41690. } else {
  41691. break;
  41692. }
  41693. }
  41694. } else {
  41695. end = c2;
  41696. }
  41697. return [str, end];
  41698. }
  41699. function getNextIndex(direction, focusIndex, strIndex, endIndex) {
  41700. let index2 = null;
  41701. let stNull;
  41702. if (direction == "down") {
  41703. let stValue = store_default.flowdata[strIndex][focusIndex];
  41704. if (getObjType(stValue) == "object" && isRealNull(stValue.v)) {
  41705. stNull = true;
  41706. } else if (isRealNull(stValue)) {
  41707. stNull = true;
  41708. } else {
  41709. stNull = false;
  41710. }
  41711. console.log(stNull, "stNull");
  41712. let cellNull = [], i2 = 0;
  41713. for (let r2 = strIndex + 1; r2 <= endIndex; r2++) {
  41714. let cell = store_default.flowdata[r2][focusIndex];
  41715. if (getObjType(cell) == "object" && isRealNull(cell.v)) {
  41716. cellNull.push(true);
  41717. } else if (isRealNull(cell)) {
  41718. cellNull.push(true);
  41719. } else {
  41720. cellNull.push(false);
  41721. }
  41722. if (cellNull.length == 1 && stNull == true && cellNull[i2] == false) {
  41723. index2 = strIndex + i2 + 1;
  41724. break;
  41725. } else if (cellNull.length > 1) {
  41726. if (stNull && cellNull[i2] == false) {
  41727. index2 = strIndex + i2 + 1;
  41728. break;
  41729. } else if (!stNull) {
  41730. if (cellNull[i2] == false && cellNull[i2 - 1] == true) {
  41731. index2 = strIndex + i2 + 1;
  41732. break;
  41733. } else if (cellNull[i2] == true && cellNull[i2 - 1] == false) {
  41734. index2 = strIndex + i2;
  41735. break;
  41736. }
  41737. }
  41738. }
  41739. if (r2 == endIndex) {
  41740. index2 = endIndex;
  41741. }
  41742. i2++;
  41743. }
  41744. } else if (direction == "up") {
  41745. let stValue = store_default.flowdata[endIndex][focusIndex];
  41746. if (getObjType(stValue) == "object" && isRealNull(stValue.v)) {
  41747. stNull = true;
  41748. } else if (isRealNull(stValue)) {
  41749. stNull = true;
  41750. } else {
  41751. stNull = false;
  41752. }
  41753. let cellNull = [], i2 = 0;
  41754. for (let r2 = endIndex - 1; r2 >= strIndex; r2--) {
  41755. let cell = store_default.flowdata[r2][focusIndex];
  41756. if (getObjType(cell) == "object" && isRealNull(cell.v)) {
  41757. cellNull.push(true);
  41758. } else if (isRealNull(cell)) {
  41759. cellNull.push(true);
  41760. } else {
  41761. cellNull.push(false);
  41762. }
  41763. if (cellNull.length == 1 && stNull && cellNull[i2] == false) {
  41764. index2 = endIndex - (i2 + 1);
  41765. break;
  41766. } else if (cellNull.length > 1) {
  41767. if (stNull && cellNull[i2] == false) {
  41768. index2 = endIndex - (i2 + 1);
  41769. break;
  41770. } else if (!stNull) {
  41771. if (cellNull[i2] == false && cellNull[i2 - 1] == true) {
  41772. index2 = endIndex - (i2 + 1);
  41773. break;
  41774. } else if (cellNull[i2] == true && cellNull[i2 - 1] == false) {
  41775. index2 = endIndex - i2;
  41776. break;
  41777. }
  41778. }
  41779. }
  41780. if (r2 == strIndex) {
  41781. index2 = strIndex;
  41782. }
  41783. i2++;
  41784. }
  41785. } else if (direction == "right") {
  41786. let stValue = store_default.flowdata[focusIndex][strIndex];
  41787. if (getObjType(stValue) == "object" && isRealNull(stValue.v)) {
  41788. stNull = true;
  41789. } else if (isRealNull(stValue)) {
  41790. stNull = true;
  41791. } else {
  41792. stNull = false;
  41793. }
  41794. let cellNull = [], i2 = 0;
  41795. for (let c2 = strIndex + 1; c2 <= endIndex; c2++) {
  41796. let cell = store_default.flowdata[focusIndex][c2];
  41797. if (getObjType(cell) == "object" && isRealNull(cell.v)) {
  41798. cellNull.push(true);
  41799. } else if (isRealNull(cell)) {
  41800. cellNull.push(true);
  41801. } else {
  41802. cellNull.push(false);
  41803. }
  41804. if (cellNull.length == 1 && stNull && cellNull[i2] == false) {
  41805. index2 = strIndex + i2 + 1;
  41806. break;
  41807. } else if (cellNull.length > 1) {
  41808. if (stNull && cellNull[i2] == false) {
  41809. index2 = strIndex + i2 + 1;
  41810. break;
  41811. } else if (!stNull) {
  41812. if (cellNull[i2] == false && cellNull[i2 - 1] == true) {
  41813. index2 = strIndex + i2 + 1;
  41814. break;
  41815. } else if (cellNull[i2] == true && cellNull[i2 - 1] == false) {
  41816. index2 = strIndex + i2;
  41817. break;
  41818. }
  41819. }
  41820. }
  41821. if (c2 == endIndex) {
  41822. index2 = endIndex;
  41823. }
  41824. i2++;
  41825. }
  41826. } else if (direction == "left") {
  41827. let stValue = store_default.flowdata[focusIndex][endIndex];
  41828. if (getObjType(stValue) == "object" && isRealNull(stValue.v)) {
  41829. stNull = true;
  41830. } else if (isRealNull(stValue)) {
  41831. stNull = true;
  41832. } else {
  41833. stNull = false;
  41834. }
  41835. let cellNull = [], i2 = 0;
  41836. for (let c2 = endIndex - 1; c2 >= strIndex; c2--) {
  41837. let cell = store_default.flowdata[focusIndex][c2];
  41838. if (getObjType(cell) == "object" && isRealNull(cell.v)) {
  41839. cellNull.push(true);
  41840. } else if (isRealNull(cell)) {
  41841. cellNull.push(true);
  41842. } else {
  41843. cellNull.push(false);
  41844. }
  41845. if (cellNull.length == 1 && stNull && cellNull[i2] == false) {
  41846. index2 = endIndex - (i2 + 1);
  41847. break;
  41848. } else if (cellNull.length > 1) {
  41849. if (stNull && cellNull[i2] == false) {
  41850. index2 = endIndex - (i2 + 1);
  41851. break;
  41852. } else if (!stNull) {
  41853. if (cellNull[i2] == false && cellNull[i2 - 1] == true) {
  41854. index2 = endIndex - (i2 + 1);
  41855. break;
  41856. } else if (cellNull[i2] == true && cellNull[i2 - 1] == false) {
  41857. index2 = endIndex - i2;
  41858. break;
  41859. }
  41860. }
  41861. }
  41862. if (c2 == strIndex) {
  41863. index2 = strIndex;
  41864. }
  41865. i2++;
  41866. }
  41867. }
  41868. return index2;
  41869. }
  41870. var init_sheetMove = __esm({
  41871. "src/controllers/sheetMove.js"() {
  41872. init_util();
  41873. init_formula();
  41874. init_validate();
  41875. init_count();
  41876. init_menuButton();
  41877. init_select();
  41878. init_pivotTable();
  41879. init_store();
  41880. init_server();
  41881. }
  41882. });
  41883. // src/controllers/alternateformat.js
  41884. var alternateformat, alternateformat_default;
  41885. var init_alternateformat = __esm({
  41886. "src/controllers/alternateformat.js"() {
  41887. init_get();
  41888. init_util();
  41889. init_formula();
  41890. init_validate();
  41891. init_tooltip();
  41892. init_refresh();
  41893. init_constant();
  41894. init_resize();
  41895. init_server();
  41896. init_select();
  41897. init_store();
  41898. init_locale();
  41899. alternateformat = {
  41900. rangefocus: false,
  41901. modelfocusIndex: null,
  41902. FixedModelColor: [
  41903. {
  41904. "head": {"fc": "#000", "bc": "#bfbdbe"},
  41905. "one": {"fc": "#000", "bc": "#ffffff"},
  41906. "two": {"fc": "#000", "bc": "#f8f3f7"},
  41907. "foot": {"fc": "#000", "bc": "#dde2de"}
  41908. },
  41909. {
  41910. "head": {"fc": "#000", "bc": "#4bd4e7"},
  41911. "one": {"fc": "#000", "bc": "#ffffff"},
  41912. "two": {"fc": "#000", "bc": "#eaf7ff"},
  41913. "foot": {"fc": "#000", "bc": "#aae9f8"}
  41914. },
  41915. {
  41916. "head": {"fc": "#000", "bc": "#5ed593"},
  41917. "one": {"fc": "#000", "bc": "#ffffff"},
  41918. "two": {"fc": "#000", "bc": "#e5fbee"},
  41919. "foot": {"fc": "#000", "bc": "#a5efcc"}
  41920. },
  41921. {
  41922. "head": {"fc": "#000", "bc": "#f6cb4b"},
  41923. "one": {"fc": "#000", "bc": "#ffffff"},
  41924. "two": {"fc": "#000", "bc": "#fff9e7"},
  41925. "foot": {"fc": "#000", "bc": "#ffebac"}
  41926. },
  41927. {
  41928. "head": {"fc": "#000", "bc": "#f96420"},
  41929. "one": {"fc": "#000", "bc": "#ffffff"},
  41930. "two": {"fc": "#000", "bc": "#ffe5d9"},
  41931. "foot": {"fc": "#000", "bc": "#ffcfba"}
  41932. },
  41933. {
  41934. "head": {"fc": "#000", "bc": "#5599fc"},
  41935. "one": {"fc": "#000", "bc": "#ffffff"},
  41936. "two": {"fc": "#000", "bc": "#ecf2fe"},
  41937. "foot": {"fc": "#000", "bc": "#afcbfa"}
  41938. },
  41939. {
  41940. "head": {"fc": "#000", "bc": "#22a69b"},
  41941. "one": {"fc": "#000", "bc": "#ffffff"},
  41942. "two": {"fc": "#000", "bc": "#dff2f8"},
  41943. "foot": {"fc": "#000", "bc": "#8dd4d0"}
  41944. },
  41945. {
  41946. "head": {"fc": "#000", "bc": "#7a939a"},
  41947. "one": {"fc": "#000", "bc": "#ffffff"},
  41948. "two": {"fc": "#000", "bc": "#f0eff7"},
  41949. "foot": {"fc": "#000", "bc": "#bdcad0"}
  41950. },
  41951. {
  41952. "head": {"fc": "#000", "bc": "#d7a270"},
  41953. "one": {"fc": "#000", "bc": "#ffffff"},
  41954. "two": {"fc": "#000", "bc": "#fdf3f1"},
  41955. "foot": {"fc": "#000", "bc": "#ead2b6"}
  41956. },
  41957. {
  41958. "head": {"fc": "#000", "bc": "#89c54b"},
  41959. "one": {"fc": "#000", "bc": "#ffffff"},
  41960. "two": {"fc": "#000", "bc": "#f1f7e9"},
  41961. "foot": {"fc": "#000", "bc": "#c5e3a7"}
  41962. },
  41963. {
  41964. "head": {"fc": "#000", "bc": "#8f88f0"},
  41965. "one": {"fc": "#000", "bc": "#ffffff"},
  41966. "two": {"fc": "#000", "bc": "#f0e5ff"},
  41967. "foot": {"fc": "#000", "bc": "#c6c4f6"}
  41968. },
  41969. {
  41970. "head": {"fc": "#000", "bc": "#fd1664"},
  41971. "one": {"fc": "#000", "bc": "#ffffff"},
  41972. "two": {"fc": "#000", "bc": "#feddee"},
  41973. "foot": {"fc": "#000", "bc": "#f98ab5"}
  41974. },
  41975. {
  41976. "head": {"fc": "#000", "bc": "#da96d3"},
  41977. "one": {"fc": "#000", "bc": "#ffffff"},
  41978. "two": {"fc": "#000", "bc": "#fce8fb"},
  41979. "foot": {"fc": "#000", "bc": "#f2caee"}
  41980. },
  41981. {
  41982. "head": {"fc": "#000", "bc": "#b49191"},
  41983. "one": {"fc": "#000", "bc": "#ffffff"},
  41984. "two": {"fc": "#000", "bc": "#f5ebe8"},
  41985. "foot": {"fc": "#000", "bc": "#d8c3c3"}
  41986. },
  41987. {
  41988. "head": {"fc": "#000", "bc": "#91b493"},
  41989. "one": {"fc": "#000", "bc": "#ffffff"},
  41990. "two": {"fc": "#000", "bc": "#f0fbf0"},
  41991. "foot": {"fc": "#000", "bc": "#b4cfb6"}
  41992. },
  41993. {
  41994. "head": {"fc": "#000", "bc": "#b4a891"},
  41995. "one": {"fc": "#000", "bc": "#ffffff"},
  41996. "two": {"fc": "#000", "bc": "#f8f6f1"},
  41997. "foot": {"fc": "#000", "bc": "#d3cab8"}
  41998. },
  41999. {
  42000. "head": {"fc": "#000", "bc": "#91abb4"},
  42001. "one": {"fc": "#000", "bc": "#ffffff"},
  42002. "two": {"fc": "#000", "bc": "#eff7fa"},
  42003. "foot": {"fc": "#000", "bc": "#b7cbd3"}
  42004. },
  42005. {
  42006. "head": {"fc": "#000", "bc": "#b7ba82"},
  42007. "one": {"fc": "#000", "bc": "#ffffff"},
  42008. "two": {"fc": "#000", "bc": "#fafbeb"},
  42009. "foot": {"fc": "#000", "bc": "#dadcb4"}
  42010. },
  42011. {
  42012. "head": {"fc": "#000", "bc": "#df3e3e"},
  42013. "one": {"fc": "#000", "bc": "#ffffff"},
  42014. "two": {"fc": "#000", "bc": "#fde9e9"},
  42015. "foot": {"fc": "#000", "bc": "#f89292"}
  42016. },
  42017. {
  42018. "head": {"fc": "#000", "bc": "#f2711c"},
  42019. "one": {"fc": "#000", "bc": "#ffffff"},
  42020. "two": {"fc": "#000", "bc": "#fef0d7"},
  42021. "foot": {"fc": "#000", "bc": "#fbb335"}
  42022. },
  42023. {
  42024. "head": {"fc": "#000", "bc": "#b5cc18"},
  42025. "one": {"fc": "#000", "bc": "#ffffff"},
  42026. "two": {"fc": "#000", "bc": "#f9fbd4"},
  42027. "foot": {"fc": "#000", "bc": "#e2ed2a"}
  42028. },
  42029. {
  42030. "head": {"fc": "#000", "bc": "#00b5ad"},
  42031. "one": {"fc": "#000", "bc": "#ffffff"},
  42032. "two": {"fc": "#000", "bc": "#ccfaf9"},
  42033. "foot": {"fc": "#000", "bc": "#00e4df"}
  42034. },
  42035. {
  42036. "head": {"fc": "#000", "bc": "#2185d0"},
  42037. "one": {"fc": "#000", "bc": "#ffffff"},
  42038. "two": {"fc": "#000", "bc": "#d8f3fc"},
  42039. "foot": {"fc": "#000", "bc": "#3cc4f0"}
  42040. },
  42041. {
  42042. "head": {"fc": "#000", "bc": "#a5673f"},
  42043. "one": {"fc": "#000", "bc": "#ffffff"},
  42044. "two": {"fc": "#000", "bc": "#f6ede5"},
  42045. "foot": {"fc": "#000", "bc": "#d3a47c"}
  42046. }
  42047. ],
  42048. getModelBox: function(hasRowHeader, hasRowFooter) {
  42049. let _this = this;
  42050. $("#luckysheet-modal-dialog-slider-alternateformat #luckysheet-alternateformat-modelList").empty();
  42051. $("#luckysheet-modal-dialog-slider-alternateformat #luckysheet-alternateformat-modelCustom").empty();
  42052. let modelListHtml = "";
  42053. for (let i2 = 0; i2 < _this.FixedModelColor.length; i2++) {
  42054. let obj = _this.FixedModelColor[i2];
  42055. let color1, color2, color3, color4;
  42056. if (hasRowHeader && hasRowFooter) {
  42057. color1 = obj["head"];
  42058. color2 = obj["one"];
  42059. color3 = obj["two"];
  42060. color4 = obj["foot"];
  42061. } else if (hasRowHeader) {
  42062. color1 = obj["head"];
  42063. color2 = obj["one"];
  42064. color3 = obj["two"];
  42065. color4 = obj["one"];
  42066. } else if (hasRowFooter) {
  42067. color1 = obj["one"];
  42068. color2 = obj["two"];
  42069. color3 = obj["one"];
  42070. color4 = obj["foot"];
  42071. } else {
  42072. color1 = obj["one"];
  42073. color2 = obj["two"];
  42074. color3 = obj["one"];
  42075. color4 = obj["two"];
  42076. }
  42077. modelListHtml += '<div class="modelbox"><div class="box"><span style="color:' + color1["fc"] + ";background-color:" + color1["bc"] + '"> \u2014 </span><span style="color:' + color2["fc"] + ";background-color:" + color2["bc"] + '"> \u2014 </span><span style="color:' + color3["fc"] + ";background-color:" + color3["bc"] + '"> \u2014 </span><span style="color:' + color4["fc"] + ";background-color:" + color4["bc"] + '"> \u2014 </span></div></div>';
  42078. }
  42079. $("#luckysheet-modal-dialog-slider-alternateformat #luckysheet-alternateformat-modelList").append(modelListHtml);
  42080. let modelCustom = store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)]["luckysheet_alternateformat_save_modelCustom"];
  42081. if (modelCustom != null && modelCustom.length > 0) {
  42082. let modelCustomHtml = "";
  42083. for (let i2 = 0; i2 < modelCustom.length; i2++) {
  42084. let obj = modelCustom[i2];
  42085. let color1, color2, color3, color4;
  42086. if (hasRowHeader && hasRowFooter) {
  42087. color1 = obj["head"];
  42088. color2 = obj["one"];
  42089. color3 = obj["two"];
  42090. color4 = obj["foot"];
  42091. } else if (hasRowHeader) {
  42092. color1 = obj["head"];
  42093. color2 = obj["one"];
  42094. color3 = obj["two"];
  42095. color4 = obj["one"];
  42096. } else if (hasRowFooter) {
  42097. color1 = obj["one"];
  42098. color2 = obj["two"];
  42099. color3 = obj["one"];
  42100. color4 = obj["foot"];
  42101. } else {
  42102. color1 = obj["one"];
  42103. color2 = obj["two"];
  42104. color3 = obj["one"];
  42105. color4 = obj["two"];
  42106. }
  42107. modelCustomHtml += '<div class="modelbox"><div class="box"><span style="color:' + color1["fc"] + ";background-color:" + color1["bc"] + '"> \u2014 </span><span style="color:' + color2["fc"] + ";background-color:" + color2["bc"] + '"> \u2014 </span><span style="color:' + color3["fc"] + ";background-color:" + color3["bc"] + '"> \u2014 </span><span style="color:' + color4["fc"] + ";background-color:" + color4["bc"] + '"> \u2014 </span></div></div>';
  42108. }
  42109. $("#luckysheet-modal-dialog-slider-alternateformat #luckysheet-alternateformat-modelCustom").append(modelCustomHtml);
  42110. }
  42111. },
  42112. init: function() {
  42113. let _this = this;
  42114. $("#luckysheet-modal-dialog-slider-alternateformat").remove();
  42115. $("body").append(luckysheetAlternateformatHtml());
  42116. luckysheetsizeauto();
  42117. $("#luckysheet-modal-dialog-slider-alternateformat .luckysheet-model-close-btn").click(function() {
  42118. $("#luckysheet-modal-dialog-slider-alternateformat").hide();
  42119. luckysheetsizeauto();
  42120. });
  42121. $(document).off("focus.AFrangeInput").on("focus.AFrangeInput", "#luckysheet-alternateformat-range input", function() {
  42122. _this.rangefocus = true;
  42123. });
  42124. $(document).off("blur.AFrangeInput").on("blur.AFrangeInput", "#luckysheet-alternateformat-range input", function() {
  42125. _this.rangefocus = false;
  42126. });
  42127. $(document).off("keydown.AFrangeInput").on("keydown.AFrangeInput", "#luckysheet-alternateformat-range input", function(e) {
  42128. let rangeValue = $(this).val().trim();
  42129. if (e.keyCode == 13) {
  42130. _this.update();
  42131. }
  42132. });
  42133. $(document).off("click.AFrangeIcon").on("click.AFrangeIcon", "#luckysheet-alternateformat-range .fa-table", function() {
  42134. $("#luckysheet-modal-dialog-slider-alternateformat").hide();
  42135. luckysheetsizeauto();
  42136. let rangeValue = $(this).parents("#luckysheet-alternateformat-range").find("input").val().trim();
  42137. _this.rangeDialog(rangeValue);
  42138. });
  42139. $(document).off("click.AFrDCf").on("click.AFrDCf", "#luckysheet-alternateformat-rangeDialog-confirm", function() {
  42140. let rangeValue = $(this).parents("#luckysheet-alternateformat-rangeDialog").find("input").val().trim();
  42141. $("#luckysheet-modal-dialog-slider-alternateformat #luckysheet-alternateformat-range input").val(rangeValue);
  42142. $(this).parents("#luckysheet-alternateformat-rangeDialog").hide();
  42143. $("#luckysheet-modal-dialog-slider-alternateformat").show();
  42144. luckysheetsizeauto();
  42145. _this.update();
  42146. });
  42147. $(document).off("click.AFrDCl").on("click.AFrDCl", "#luckysheet-alternateformat-rangeDialog-close", function() {
  42148. $(this).parents("#luckysheet-alternateformat-rangeDialog").hide();
  42149. $("#luckysheet-modal-dialog-slider-alternateformat").show();
  42150. luckysheetsizeauto();
  42151. });
  42152. $(document).off("click.AFrDTitle").on("click.AFrDTitle", "#luckysheet-alternateformat-rangeDialog .luckysheet-modal-dialog-title-close", function() {
  42153. $(this).parents("#luckysheet-alternateformat-rangeDialog").hide();
  42154. $("#luckysheet-modal-dialog-slider-alternateformat").show();
  42155. luckysheetsizeauto();
  42156. });
  42157. $(document).off("change.AFrowHeader").on("change.AFrowHeader", "#luckysheet-alternateformat-rowHeader", function() {
  42158. let hasRowHeader;
  42159. if ($(this).is(":checked")) {
  42160. hasRowHeader = true;
  42161. } else {
  42162. hasRowHeader = false;
  42163. }
  42164. let hasRowFooter;
  42165. if ($("#luckysheet-alternateformat-rowFooter").is(":checked")) {
  42166. hasRowFooter = true;
  42167. } else {
  42168. hasRowFooter = false;
  42169. }
  42170. _this.checkboxChange(hasRowHeader, hasRowFooter);
  42171. _this.modelboxOn();
  42172. _this.update();
  42173. });
  42174. $(document).off("change.AFrowFooter").on("change.AFrowFooter", "#luckysheet-alternateformat-rowFooter", function() {
  42175. let hasRowHeader;
  42176. if ($("#luckysheet-alternateformat-rowHeader").is(":checked")) {
  42177. hasRowHeader = true;
  42178. } else {
  42179. hasRowHeader = false;
  42180. }
  42181. let hasRowFooter;
  42182. if ($(this).is(":checked")) {
  42183. hasRowFooter = true;
  42184. } else {
  42185. hasRowFooter = false;
  42186. }
  42187. _this.checkboxChange(hasRowHeader, hasRowFooter);
  42188. _this.modelboxOn();
  42189. _this.update();
  42190. });
  42191. $(document).off("click.AFmodelbox").on("click.AFmodelbox", "#luckysheet-modal-dialog-slider-alternateformat .modelbox", function() {
  42192. let index2 = $(this).index();
  42193. let $id = $(this).parents(".cf").attr("id");
  42194. if ($id == "luckysheet-alternateformat-modelList") {
  42195. _this.modelfocusIndex = index2;
  42196. } else if ($id == "luckysheet-alternateformat-modelCustom") {
  42197. let len = _this.FixedModelColor.length;
  42198. _this.modelfocusIndex = index2 + len;
  42199. }
  42200. _this.modelboxOn();
  42201. _this.update();
  42202. });
  42203. $(document).off("click.AFselectColor").on("click.AFselectColor", "#luckysheet-modal-dialog-slider-alternateformat .luckysheet-color-menu-button-indicator", function() {
  42204. let $parent = $(this).closest(".toningbox");
  42205. let colorType, currenColor;
  42206. if ($(this).find(".luckysheet-icon-img").hasClass("luckysheet-icon-text-color")) {
  42207. colorType = "fc";
  42208. currenColor = $parent.find(".toningShow").data("fc");
  42209. } else if ($(this).find(".luckysheet-icon-img").hasClass("luckysheet-icon-cell-color")) {
  42210. colorType = "bc";
  42211. currenColor = $parent.find(".toningShow").data("bc");
  42212. }
  42213. let source;
  42214. if ($parent.hasClass("header")) {
  42215. source = "0";
  42216. } else if ($parent.hasClass("ctOne")) {
  42217. source = "1";
  42218. } else if ($parent.hasClass("ctTwo")) {
  42219. source = "2";
  42220. } else if ($parent.hasClass("footer")) {
  42221. source = "3";
  42222. }
  42223. _this.colorSelectDialog(currenColor, colorType, source);
  42224. });
  42225. $(document).off("click.AFselectColorConfirm").on("click.AFselectColorConfirm", "#luckysheet-alternateformat-colorSelect-dialog-confirm", function() {
  42226. let $parent = $(this).parents("#luckysheet-alternateformat-colorSelect-dialog");
  42227. const _locale = locale_default();
  42228. const alternatingColors = _locale.alternatingColors;
  42229. $("#luckysheet-modal-dialog-mask").hide();
  42230. $parent.hide();
  42231. let currenColor = $parent.find(".currenColor span").attr("title");
  42232. let colorType;
  42233. if ($parent.find(".luckysheet-modal-dialog-title-text").text() == alternatingColors.selectionTextColor) {
  42234. colorType = "fc";
  42235. } else if ($parent.find(".luckysheet-modal-dialog-title-text").text() == alternatingColors.selectionCellColor) {
  42236. colorType = "bc";
  42237. }
  42238. let source = $parent.find(".currenColor").attr("data-source");
  42239. if (source == "0") {
  42240. if (colorType == "fc") {
  42241. $("#luckysheet-alternateformat-modelToning .header .toningShow").css("color", currenColor);
  42242. $("#luckysheet-alternateformat-modelToning .header .toningShow").data("fc", currenColor);
  42243. $("#luckysheet-alternateformat-modelToning .header .luckysheet-icon-text-color").parents(".luckysheet-color-menu-button-indicator").css("border-bottom-color", currenColor);
  42244. }
  42245. if (colorType == "bc") {
  42246. $("#luckysheet-alternateformat-modelToning .header .toningShow").css("background-color", currenColor);
  42247. $("#luckysheet-alternateformat-modelToning .header .toningShow").data("bc", currenColor);
  42248. $("#luckysheet-alternateformat-modelToning .header .luckysheet-icon-cell-color").parents(".luckysheet-color-menu-button-indicator").css("border-bottom-color", currenColor);
  42249. }
  42250. } else if (source == "1") {
  42251. if (colorType == "fc") {
  42252. $("#luckysheet-alternateformat-modelToning .ctOne .toningShow").css("color", currenColor);
  42253. $("#luckysheet-alternateformat-modelToning .ctOne .toningShow").data("fc", currenColor);
  42254. $("#luckysheet-alternateformat-modelToning .ctOne .luckysheet-icon-text-color").parents(".luckysheet-color-menu-button-indicator").css("border-bottom-color", currenColor);
  42255. }
  42256. if (colorType == "bc") {
  42257. $("#luckysheet-alternateformat-modelToning .ctOne .toningShow").css("background-color", currenColor);
  42258. $("#luckysheet-alternateformat-modelToning .ctOne .toningShow").data("bc", currenColor);
  42259. $("#luckysheet-alternateformat-modelToning .ctOne .luckysheet-icon-cell-color").parents(".luckysheet-color-menu-button-indicator").css("border-bottom-color", currenColor);
  42260. }
  42261. } else if (source == "2") {
  42262. if (colorType == "fc") {
  42263. $("#luckysheet-alternateformat-modelToning .ctTwo .toningShow").css("color", currenColor);
  42264. $("#luckysheet-alternateformat-modelToning .ctTwo .toningShow").data("fc", currenColor);
  42265. $("#luckysheet-alternateformat-modelToning .ctTwo .luckysheet-icon-text-color").parents(".luckysheet-color-menu-button-indicator").css("border-bottom-color", currenColor);
  42266. }
  42267. if (colorType == "bc") {
  42268. $("#luckysheet-alternateformat-modelToning .ctTwo .toningShow").css("background-color", currenColor);
  42269. $("#luckysheet-alternateformat-modelToning .ctTwo .toningShow").data("bc", currenColor);
  42270. $("#luckysheet-alternateformat-modelToning .ctTwo .luckysheet-icon-cell-color").parents(".luckysheet-color-menu-button-indicator").css("border-bottom-color", currenColor);
  42271. }
  42272. } else if (source == "3") {
  42273. if (colorType == "fc") {
  42274. $("#luckysheet-alternateformat-modelToning .footer .toningShow").css("color", currenColor);
  42275. $("#luckysheet-alternateformat-modelToning .footer .toningShow").data("fc", currenColor);
  42276. $("#luckysheet-alternateformat-modelToning .footer .luckysheet-icon-text-color").parents(".luckysheet-color-menu-button-indicator").css("border-bottom-color", currenColor);
  42277. }
  42278. if (colorType == "bc") {
  42279. $("#luckysheet-alternateformat-modelToning .footer .toningShow").css("background-color", currenColor);
  42280. $("#luckysheet-alternateformat-modelToning .footer .toningShow").data("bc", currenColor);
  42281. $("#luckysheet-alternateformat-modelToning .footer .luckysheet-icon-cell-color").parents(".luckysheet-color-menu-button-indicator").css("border-bottom-color", currenColor);
  42282. }
  42283. }
  42284. let hasRowHeader;
  42285. if ($("#luckysheet-alternateformat-rowHeader").is(":checked")) {
  42286. hasRowHeader = true;
  42287. } else {
  42288. hasRowHeader = false;
  42289. }
  42290. let hasRowFooter;
  42291. if ($("#luckysheet-alternateformat-rowFooter").is(":checked")) {
  42292. hasRowFooter = true;
  42293. } else {
  42294. hasRowFooter = false;
  42295. }
  42296. let index2 = _this.modelfocusIndex;
  42297. let len = _this.FixedModelColor.length;
  42298. let format, file;
  42299. if (index2 < len) {
  42300. format = $.extend(true, {}, _this.getFormatByIndex());
  42301. } else {
  42302. file = store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)];
  42303. let modelCustom = file["luckysheet_alternateformat_save_modelCustom"];
  42304. format = $.extend(true, {}, modelCustom[index2 - len]);
  42305. }
  42306. if (source == "0") {
  42307. if (colorType == "fc") {
  42308. format["head"]["fc"] = currenColor;
  42309. } else if (colorType == "bc") {
  42310. format["head"]["bc"] = currenColor;
  42311. }
  42312. } else if (source == "1") {
  42313. if (colorType == "fc") {
  42314. format["one"]["fc"] = currenColor;
  42315. } else if (colorType == "bc") {
  42316. format["one"]["bc"] = currenColor;
  42317. }
  42318. } else if (source == "2") {
  42319. if (colorType == "fc") {
  42320. format["two"]["fc"] = currenColor;
  42321. } else if (colorType == "bc") {
  42322. format["two"]["bc"] = currenColor;
  42323. }
  42324. } else if (source == "3") {
  42325. if (colorType == "fc") {
  42326. format["foot"]["fc"] = currenColor;
  42327. }
  42328. if (colorType == "bc") {
  42329. format["foot"]["bc"] = currenColor;
  42330. }
  42331. }
  42332. if (_this.modelfocusIndex < len) {
  42333. _this.addCustomModel(format);
  42334. _this.modelfocusIndex = _this.getIndexByFormat(format);
  42335. } else {
  42336. file["luckysheet_alternateformat_save_modelCustom"][index2 - len] = format;
  42337. if (server_default.allowUpdate) {
  42338. server_default.saveParam("all", store_default.currentSheetIndex, file["luckysheet_alternateformat_save_modelCustom"], {"k": "luckysheet_alternateformat_save_modelCustom"});
  42339. }
  42340. }
  42341. _this.getModelBox(hasRowHeader, hasRowFooter);
  42342. _this.modelboxOn();
  42343. _this.update();
  42344. });
  42345. $(document).off("click.AFremove").on("click.AFremove", "#luckysheet-alternateformat-remove", function() {
  42346. let dataIndex = $(this).data("index");
  42347. let file = store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)];
  42348. let ruleArr2 = file["luckysheet_alternateformat_save"];
  42349. let historyRules = $.extend(true, [], ruleArr2);
  42350. if (ruleArr2.length > 1) {
  42351. ruleArr2.splice(dataIndex, 1);
  42352. } else {
  42353. ruleArr2 = [];
  42354. }
  42355. let currentRules = $.extend(true, [], ruleArr2);
  42356. _this.ref(historyRules, currentRules);
  42357. if (server_default.allowUpdate) {
  42358. server_default.saveParam("all", store_default.currentSheetIndex, ruleArr2, {"k": "luckysheet_alternateformat_save"});
  42359. }
  42360. $("#luckysheet-modal-dialog-mask").hide();
  42361. $("#luckysheet-modal-dialog-slider-alternateformat").hide();
  42362. luckysheetsizeauto();
  42363. });
  42364. },
  42365. perfect: function() {
  42366. let _this = this;
  42367. let range2 = $.extend(true, {}, store_default.luckysheet_select_save[0]);
  42368. let existsIndex = _this.rangeIsExists(range2)[1];
  42369. let obj = $.extend(true, {}, store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)]["luckysheet_alternateformat_save"][existsIndex]);
  42370. let cellrange = obj["cellrange"];
  42371. $("#luckysheet-alternateformat-range input").val(getRangetxt(store_default.currentSheetIndex, {"row": cellrange["row"], "column": cellrange["column"]}, store_default.currentSheetIndex));
  42372. store_default.luckysheet_select_save = [{"row": cellrange["row"], "column": cellrange["column"]}];
  42373. selectHightlightShow();
  42374. let hasRowHeader = obj["hasRowHeader"];
  42375. let hasRowFooter = obj["hasRowFooter"];
  42376. let format = obj["format"];
  42377. _this.modelfocusIndex = _this.getIndexByFormat(format);
  42378. if (_this.modelfocusIndex == null) {
  42379. _this.addCustomModel(format);
  42380. _this.modelfocusIndex = _this.getIndexByFormat(format);
  42381. }
  42382. _this.checkboxChange(hasRowHeader, hasRowFooter);
  42383. _this.modelboxOn();
  42384. $("#luckysheet-alternateformat-remove").data("index", existsIndex);
  42385. },
  42386. checkboxChange: function(hasRowHeader, hasRowFooter) {
  42387. if (hasRowHeader) {
  42388. $("#luckysheet-alternateformat-rowHeader").prop("checked", true);
  42389. $("#luckysheet-alternateformat-modelToning .header").show();
  42390. } else {
  42391. $("#luckysheet-alternateformat-rowHeader").removeAttr("checked");
  42392. $("#luckysheet-alternateformat-modelToning .header").hide();
  42393. }
  42394. if (hasRowFooter) {
  42395. $("#luckysheet-alternateformat-rowFooter").prop("checked", true);
  42396. $("#luckysheet-alternateformat-modelToning .footer").show();
  42397. } else {
  42398. $("#luckysheet-alternateformat-rowFooter").removeAttr("checked");
  42399. $("#luckysheet-alternateformat-modelToning .footer").hide();
  42400. }
  42401. this.getModelBox(hasRowHeader, hasRowFooter);
  42402. },
  42403. modelboxOn: function() {
  42404. let _this = this;
  42405. $("#luckysheet-modal-dialog-slider-alternateformat .modelbox").removeClass("on");
  42406. let index2 = _this.modelfocusIndex;
  42407. let len = _this.FixedModelColor.length;
  42408. if (index2 < len) {
  42409. $("#luckysheet-alternateformat-modelList .modelbox").eq(index2).addClass("on");
  42410. } else {
  42411. $("#luckysheet-alternateformat-modelCustom .modelbox").eq(index2 - len).addClass("on");
  42412. }
  42413. _this.modelToningColor();
  42414. },
  42415. modelToningColor: function() {
  42416. let format = this.getFormatByIndex();
  42417. $("#luckysheet-alternateformat-modelToning .header .toningShow").css({"color": format["head"].fc, "background-color": format["head"].bc});
  42418. $("#luckysheet-alternateformat-modelToning .header .toningShow").data("fc", format["head"].fc).data("bc", format["head"].bc);
  42419. $("#luckysheet-alternateformat-modelToning .header .luckysheet-icon-text-color").parents(".luckysheet-color-menu-button-indicator").css("border-bottom-color", format["head"].fc);
  42420. $("#luckysheet-alternateformat-modelToning .header .luckysheet-icon-cell-color").parents(".luckysheet-color-menu-button-indicator").css("border-bottom-color", format["head"].bc);
  42421. $("#luckysheet-alternateformat-modelToning .ctOne .toningShow").css({"color": format["one"].fc, "background-color": format["one"].bc});
  42422. $("#luckysheet-alternateformat-modelToning .ctOne .toningShow").data("fc", format["one"].fc).data("bc", format["one"].bc);
  42423. $("#luckysheet-alternateformat-modelToning .ctOne .luckysheet-icon-text-color").parents(".luckysheet-color-menu-button-indicator").css("border-bottom-color", format["one"].fc);
  42424. $("#luckysheet-alternateformat-modelToning .ctOne .luckysheet-icon-cell-color").parents(".luckysheet-color-menu-button-indicator").css("border-bottom-color", format["one"].bc);
  42425. $("#luckysheet-alternateformat-modelToning .ctTwo .toningShow").css({"color": format["two"].fc, "background-color": format["two"].bc});
  42426. $("#luckysheet-alternateformat-modelToning .ctTwo .toningShow").data("fc", format["two"].fc).data("bc", format["two"].bc);
  42427. $("#luckysheet-alternateformat-modelToning .ctTwo .luckysheet-icon-text-color").parents(".luckysheet-color-menu-button-indicator").css("border-bottom-color", format["two"].fc);
  42428. $("#luckysheet-alternateformat-modelToning .ctTwo .luckysheet-icon-cell-color").parents(".luckysheet-color-menu-button-indicator").css("border-bottom-color", format["two"].bc);
  42429. $("#luckysheet-alternateformat-modelToning .footer .toningShow").css({"color": format["foot"].fc, "background-color": format["foot"].bc});
  42430. $("#luckysheet-alternateformat-modelToning .footer .toningShow").data("fc", format["foot"].fc).data("bc", format["foot"].bc);
  42431. $("#luckysheet-alternateformat-modelToning .footer .luckysheet-icon-text-color").parents(".luckysheet-color-menu-button-indicator").css("border-bottom-color", format["foot"].fc);
  42432. $("#luckysheet-alternateformat-modelToning .footer .luckysheet-icon-cell-color").parents(".luckysheet-color-menu-button-indicator").css("border-bottom-color", format["foot"].bc);
  42433. },
  42434. addCustomModel: function(format) {
  42435. let file = store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)];
  42436. if (file["luckysheet_alternateformat_save_modelCustom"] == null) {
  42437. file["luckysheet_alternateformat_save_modelCustom"] = [];
  42438. }
  42439. file["luckysheet_alternateformat_save_modelCustom"].push(format);
  42440. if (server_default.allowUpdate) {
  42441. server_default.saveParam("all", store_default.currentSheetIndex, file["luckysheet_alternateformat_save_modelCustom"], {"k": "luckysheet_alternateformat_save_modelCustom"});
  42442. }
  42443. },
  42444. colorSelectDialog: function(currenColor, colorType, source) {
  42445. $("#luckysheet-modal-dialog-mask").show();
  42446. $("#luckysheet-alternateformat-colorSelect-dialog").remove();
  42447. const _locale = locale_default();
  42448. const alternatingColors = _locale.alternatingColors;
  42449. const locale_button = _locale.button;
  42450. const locale_toolbar = _locale.toolbar;
  42451. let title;
  42452. if (colorType == "fc") {
  42453. title = alternatingColors.selectionTextColor;
  42454. } else if (colorType == "bc") {
  42455. title = alternatingColors.selectionCellColor;
  42456. }
  42457. $("body").append(replaceHtml(modelHTML, {
  42458. "id": "luckysheet-alternateformat-colorSelect-dialog",
  42459. "addclass": "luckysheet-alternateformat-colorSelect-dialog",
  42460. "title": title,
  42461. "content": "<div class='currenColor' data-source='" + source + "'>" + alternatingColors.currentColor + "\uFF1A<span title='" + currenColor + "' style='background-color:" + currenColor + "'></span></div><div class='colorshowbox'></div>",
  42462. "botton": '<button id="luckysheet-alternateformat-colorSelect-dialog-confirm" class="btn btn-primary">' + locale_button.confirm + '</button><button class="btn btn-default luckysheet-model-close-btn">' + locale_button.cancel + "</button>",
  42463. "style": "z-index:100003"
  42464. }));
  42465. let $t = $("#luckysheet-alternateformat-colorSelect-dialog").find(".luckysheet-modal-dialog-content").css("min-width", 300).end(), myh = $t.outerHeight(), myw = $t.outerWidth();
  42466. let winw = $(window).width(), winh = $(window).height();
  42467. let scrollLeft = $(document).scrollLeft(), scrollTop = $(document).scrollTop();
  42468. $("#luckysheet-alternateformat-colorSelect-dialog").css({
  42469. "left": (winw + scrollLeft - myw) / 2,
  42470. "top": (winh + scrollTop - myh) / 3
  42471. }).show();
  42472. $("#luckysheet-alternateformat-colorSelect-dialog").find(".colorshowbox").spectrum({
  42473. showPalette: true,
  42474. showPaletteOnly: true,
  42475. preferredFormat: "hex",
  42476. clickoutFiresChange: false,
  42477. showInitial: true,
  42478. showInput: true,
  42479. flat: true,
  42480. hideAfterPaletteSelect: true,
  42481. showSelectionPalette: true,
  42482. showButtons: false,
  42483. maxPaletteSize: 8,
  42484. maxSelectionSize: 8,
  42485. color: currenColor,
  42486. cancelText: locale_button.cancel,
  42487. chooseText: locale_toolbar.confirmColor,
  42488. togglePaletteMoreText: locale_toolbar.customColor,
  42489. togglePaletteLessText: locale_toolbar.collapse,
  42490. togglePaletteOnly: true,
  42491. clearText: locale_toolbar.clearText,
  42492. noColorSelectedText: locale_toolbar.noColorSelectedText,
  42493. localStorageKey: "spectrum.textcolor" + server_default.gridKey,
  42494. palette: [
  42495. ["#000", "#444", "#666", "#999", "#ccc", "#eee", "#f3f3f3", "#fff"],
  42496. ["#f00", "#f90", "#ff0", "#0f0", "#0ff", "#00f", "#90f", "#f0f"],
  42497. ["#f4cccc", "#fce5cd", "#fff2cc", "#d9ead3", "#d0e0e3", "#cfe2f3", "#d9d2e9", "#ead1dc"],
  42498. ["#ea9999", "#f9cb9c", "#ffe599", "#b6d7a8", "#a2c4c9", "#9fc5e8", "#b4a7d6", "#d5a6bd"],
  42499. ["#e06666", "#f6b26b", "#ffd966", "#93c47d", "#76a5af", "#6fa8dc", "#8e7cc3", "#c27ba0"],
  42500. ["#c00", "#e69138", "#f1c232", "#6aa84f", "#45818e", "#3d85c6", "#674ea7", "#a64d79"],
  42501. ["#900", "#b45f06", "#bf9000", "#38761d", "#134f5c", "#0b5394", "#351c75", "#741b47"],
  42502. ["#600", "#783f04", "#7f6000", "#274e13", "#0c343d", "#073763", "#20124d", "#4c1130"]
  42503. ],
  42504. move: function(color) {
  42505. if (color != null) {
  42506. color = color.toHexString();
  42507. } else {
  42508. color = "#000";
  42509. }
  42510. $("#luckysheet-alternateformat-colorSelect-dialog .currenColor span").css("background-color", color).attr("title", color);
  42511. }
  42512. });
  42513. },
  42514. rangeDialog: function(value) {
  42515. $("#luckysheet-modal-dialog-mask").hide();
  42516. $("#luckysheet-alternateformat-rangeDialog").remove();
  42517. const _locale = locale_default();
  42518. const alternatingColors = _locale.alternatingColors;
  42519. const locale_button = _locale.button;
  42520. $("body").append(replaceHtml(modelHTML, {
  42521. "id": "luckysheet-alternateformat-rangeDialog",
  42522. "addclass": "luckysheet-alternateformat-rangeDialog",
  42523. "title": alternatingColors.selectRange,
  42524. "content": '<input readonly="readonly" placeholder="' + alternatingColors.tipSelectRange + '" value="' + value + '"/>',
  42525. "botton": '<button id="luckysheet-alternateformat-rangeDialog-confirm" class="btn btn-primary">' + locale_button.confirm + '</button><button id="luckysheet-alternateformat-rangeDialog-close" class="btn btn-default">' + locale_button.cancel + "</button>",
  42526. "style": "z-index:100003"
  42527. }));
  42528. let $t = $("#luckysheet-alternateformat-rangeDialog").find(".luckysheet-modal-dialog-content").css("min-width", 300).end(), myh = $t.outerHeight(), myw = $t.outerWidth();
  42529. let winw = $(window).width(), winh = $(window).height();
  42530. let scrollLeft = $(document).scrollLeft(), scrollTop = $(document).scrollTop();
  42531. $("#luckysheet-alternateformat-rangeDialog").css({
  42532. "left": (winw + scrollLeft - myw) / 2,
  42533. "top": (winh + scrollTop - myh) / 3
  42534. }).show();
  42535. },
  42536. rangeIsExists: function(range2, index2) {
  42537. let _this = this;
  42538. let isExists = false;
  42539. let existsIndex = null;
  42540. let AFarr = $.extend(true, [], store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)]["luckysheet_alternateformat_save"]);
  42541. if (index2 != void 0 && index2 != null) {
  42542. if (AFarr.length > 1) {
  42543. AFarr.splice(index2, 1);
  42544. } else {
  42545. AFarr = [];
  42546. }
  42547. }
  42548. if (AFarr.length > 0) {
  42549. let arr = [];
  42550. for (let i2 = 0; i2 < AFarr.length; i2++) {
  42551. let obj = {
  42552. "index": i2,
  42553. "map": _this.getRangeMap(AFarr[i2]["cellrange"]["row"], AFarr[i2]["cellrange"]["column"])
  42554. };
  42555. arr.push(obj);
  42556. }
  42557. let rangeMap = _this.getRangeMap(range2["row"], range2["column"]);
  42558. for (let x in rangeMap) {
  42559. if (isExists) {
  42560. break;
  42561. }
  42562. for (let j = 0; j < arr.length; j++) {
  42563. if (x in arr[j]["map"]) {
  42564. isExists = true;
  42565. existsIndex = arr[j]["index"];
  42566. break;
  42567. }
  42568. }
  42569. }
  42570. }
  42571. return [isExists, existsIndex];
  42572. },
  42573. getRangeMap: function(row, column) {
  42574. let map = {};
  42575. let st_r = row[0], ed_r = row[1], st_c = column[0], ed_c = column[1];
  42576. for (let r2 = st_r; r2 <= ed_r; r2++) {
  42577. for (let c2 = st_c; c2 <= ed_c; c2++) {
  42578. map[r2 + "_" + c2] = 0;
  42579. }
  42580. }
  42581. return map;
  42582. },
  42583. getIndexByFormat: function(format) {
  42584. let _this = this;
  42585. let index2 = null;
  42586. let modelList = _this.FixedModelColor;
  42587. for (let i2 = 0; i2 < modelList.length; i2++) {
  42588. let obj = modelList[i2];
  42589. if (format["head"].fc == obj["head"].fc && format["head"].bc == obj["head"].bc) {
  42590. if (format["one"].fc == obj["one"].fc && format["one"].bc == obj["one"].bc) {
  42591. if (format["two"].fc == obj["two"].fc && format["two"].bc == obj["two"].bc) {
  42592. if (format["foot"].fc == obj["foot"].fc && format["foot"].bc == obj["foot"].bc) {
  42593. index2 = i2;
  42594. break;
  42595. }
  42596. }
  42597. }
  42598. }
  42599. }
  42600. let modelCustom = store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)]["luckysheet_alternateformat_save_modelCustom"];
  42601. if (modelCustom != null && modelCustom.length > 0) {
  42602. for (let j = 0; j < modelCustom.length; j++) {
  42603. let obj = modelCustom[j];
  42604. if (format["head"].fc == obj["head"].fc && format["head"].bc == obj["head"].bc) {
  42605. if (format["one"].fc == obj["one"].fc && format["one"].bc == obj["one"].bc) {
  42606. if (format["two"].fc == obj["two"].fc && format["two"].bc == obj["two"].bc) {
  42607. if (format["foot"].fc == obj["foot"].fc && format["foot"].bc == obj["foot"].bc) {
  42608. index2 = modelList.length + j;
  42609. break;
  42610. }
  42611. }
  42612. }
  42613. }
  42614. }
  42615. }
  42616. return index2;
  42617. },
  42618. getFormatByIndex: function() {
  42619. let _this = this;
  42620. let index2 = _this.modelfocusIndex;
  42621. let len = _this.FixedModelColor.length;
  42622. let format = {};
  42623. if (index2 < len) {
  42624. format = _this.FixedModelColor[index2];
  42625. } else {
  42626. format = store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)]["luckysheet_alternateformat_save_modelCustom"][index2 - len];
  42627. }
  42628. return format;
  42629. },
  42630. new: function(cellrange) {
  42631. let _this = this;
  42632. let format = _this.getFormatByIndex();
  42633. let file = store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)];
  42634. let ruleArr2 = file["luckysheet_alternateformat_save"];
  42635. if (ruleArr2 == null) {
  42636. ruleArr2 = [];
  42637. }
  42638. let historyRules = $.extend(true, [], ruleArr2);
  42639. let obj = {
  42640. "cellrange": {
  42641. "row": cellrange["row"],
  42642. "column": cellrange["column"]
  42643. },
  42644. "format": format,
  42645. "hasRowHeader": true,
  42646. "hasRowFooter": false
  42647. };
  42648. ruleArr2.push(obj);
  42649. let currentRules = $.extend(true, [], ruleArr2);
  42650. _this.ref(historyRules, currentRules);
  42651. if (server_default.allowUpdate) {
  42652. server_default.saveParam("all", store_default.currentSheetIndex, ruleArr2, {"k": "luckysheet_alternateformat_save"});
  42653. }
  42654. },
  42655. update: function() {
  42656. let _this = this;
  42657. const _locale = locale_default();
  42658. const alternatingColors = _locale.alternatingColors;
  42659. let dataIndex = $("#luckysheet-alternateformat-remove").data("index");
  42660. let rangeValue = $("#luckysheet-modal-dialog-slider-alternateformat #luckysheet-alternateformat-range input").val().trim();
  42661. if (!formula_default.iscelldata(rangeValue)) {
  42662. if (isEditMode()) {
  42663. alert(alternatingColors.errorNoRange);
  42664. } else {
  42665. tooltip_default.info(alternatingColors.errorNoRange, "");
  42666. }
  42667. return;
  42668. }
  42669. let cellrange = formula_default.getcellrange(rangeValue);
  42670. let isExists = _this.rangeIsExists(cellrange, dataIndex)[0];
  42671. if (isExists) {
  42672. if (isEditMode()) {
  42673. alert(alternatingColors.errorExistColors);
  42674. } else {
  42675. tooltip_default.info(alternatingColors.errorExistColors, "");
  42676. }
  42677. return;
  42678. }
  42679. let hasRowHeader;
  42680. if ($("#luckysheet-modal-dialog-slider-alternateformat #luckysheet-alternateformat-rowHeader").is(":checked")) {
  42681. hasRowHeader = true;
  42682. } else {
  42683. hasRowHeader = false;
  42684. }
  42685. let hasRowFooter;
  42686. if ($("#luckysheet-modal-dialog-slider-alternateformat #luckysheet-alternateformat-rowFooter").is(":checked")) {
  42687. hasRowFooter = true;
  42688. } else {
  42689. hasRowFooter = false;
  42690. }
  42691. let format = _this.getFormatByIndex();
  42692. let file = store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)];
  42693. let ruleArr2 = file["luckysheet_alternateformat_save"];
  42694. if (ruleArr2 == null) {
  42695. ruleArr2 = [];
  42696. }
  42697. let historyRules = $.extend(true, [], ruleArr2);
  42698. let obj = {
  42699. "cellrange": {
  42700. "row": cellrange["row"],
  42701. "column": cellrange["column"]
  42702. },
  42703. "format": format,
  42704. "hasRowHeader": hasRowHeader,
  42705. "hasRowFooter": hasRowFooter
  42706. };
  42707. ruleArr2[dataIndex] = obj;
  42708. let currentRules = $.extend(true, [], ruleArr2);
  42709. _this.ref(historyRules, currentRules);
  42710. if (server_default.allowUpdate) {
  42711. server_default.saveParam("all", store_default.currentSheetIndex, ruleArr2, {"k": "luckysheet_alternateformat_save"});
  42712. }
  42713. },
  42714. checksAF: function(r2, c2, computeMap2) {
  42715. if (r2 + "_" + c2 in computeMap2) {
  42716. return computeMap2[r2 + "_" + c2];
  42717. } else {
  42718. return null;
  42719. }
  42720. },
  42721. getComputeMap: function() {
  42722. let file = store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)];
  42723. let ruleArr2 = file["luckysheet_alternateformat_save"];
  42724. let computeMap2 = this.compute(ruleArr2);
  42725. return computeMap2;
  42726. },
  42727. compute: function(obj) {
  42728. let computeMap2 = {};
  42729. if (obj != null && obj.length > 0) {
  42730. for (let i2 = 0; i2 < obj.length; i2++) {
  42731. let cellrange = obj[i2]["cellrange"];
  42732. let format = obj[i2]["format"];
  42733. let hasRowHeader = obj[i2]["hasRowHeader"];
  42734. let hasRowFooter = obj[i2]["hasRowFooter"];
  42735. let st_r = cellrange["row"][0], ed_r = cellrange["row"][1], st_c = cellrange["column"][0], ed_c = cellrange["column"][1];
  42736. if (hasRowHeader && hasRowFooter) {
  42737. for (let c2 = st_c; c2 <= ed_c; c2++) {
  42738. computeMap2[st_r + "_" + c2] = [format["head"].fc, format["head"].bc];
  42739. }
  42740. if (ed_r - st_r > 1) {
  42741. for (let r2 = st_r + 1; r2 < ed_r; r2++) {
  42742. let fc, bc;
  42743. if ((r2 - st_r) % 2 != 0) {
  42744. fc = format["one"].fc;
  42745. bc = format["one"].bc;
  42746. } else {
  42747. fc = format["two"].fc;
  42748. bc = format["two"].bc;
  42749. }
  42750. for (let c2 = st_c; c2 <= ed_c; c2++) {
  42751. computeMap2[r2 + "_" + c2] = [fc, bc];
  42752. }
  42753. }
  42754. }
  42755. if (ed_r > st_r) {
  42756. for (let c2 = st_c; c2 <= ed_c; c2++) {
  42757. computeMap2[ed_r + "_" + c2] = [format["foot"].fc, format["foot"].bc];
  42758. }
  42759. }
  42760. } else if (hasRowHeader) {
  42761. for (let c2 = st_c; c2 <= ed_c; c2++) {
  42762. computeMap2[st_r + "_" + c2] = [format["head"].fc, format["head"].bc];
  42763. }
  42764. if (ed_r > st_r) {
  42765. for (let r2 = st_r + 1; r2 <= ed_r; r2++) {
  42766. let fc, bc;
  42767. if ((r2 - st_r) % 2 != 0) {
  42768. fc = format["one"].fc;
  42769. bc = format["one"].bc;
  42770. } else {
  42771. fc = format["two"].fc;
  42772. bc = format["two"].bc;
  42773. }
  42774. for (let c2 = st_c; c2 <= ed_c; c2++) {
  42775. computeMap2[r2 + "_" + c2] = [fc, bc];
  42776. }
  42777. }
  42778. }
  42779. } else if (hasRowFooter) {
  42780. if (ed_r > st_r) {
  42781. for (let r2 = st_r; r2 < ed_r; r2++) {
  42782. let fc, bc;
  42783. if ((r2 - st_r) % 2 == 0) {
  42784. fc = format["one"].fc;
  42785. bc = format["one"].bc;
  42786. } else {
  42787. fc = format["two"].fc;
  42788. bc = format["two"].bc;
  42789. }
  42790. for (let c2 = st_c; c2 <= ed_c; c2++) {
  42791. computeMap2[r2 + "_" + c2] = [fc, bc];
  42792. }
  42793. }
  42794. }
  42795. for (let c2 = st_c; c2 <= ed_c; c2++) {
  42796. computeMap2[ed_r + "_" + c2] = [format["foot"].fc, format["foot"].bc];
  42797. }
  42798. } else {
  42799. for (let r2 = st_r; r2 <= ed_r; r2++) {
  42800. let fc, bc;
  42801. if ((r2 - st_r) % 2 == 0) {
  42802. fc = format["one"].fc;
  42803. bc = format["one"].bc;
  42804. } else {
  42805. fc = format["two"].fc;
  42806. bc = format["two"].bc;
  42807. }
  42808. for (let c2 = st_c; c2 <= ed_c; c2++) {
  42809. computeMap2[r2 + "_" + c2] = [fc, bc];
  42810. }
  42811. }
  42812. }
  42813. }
  42814. }
  42815. return computeMap2;
  42816. },
  42817. ref: function(historyRules, currentRules) {
  42818. if (store_default.clearjfundo) {
  42819. store_default.jfundo.length = 0;
  42820. let redo2 = {};
  42821. redo2["type"] = "updateAF";
  42822. redo2["sheetIndex"] = store_default.currentSheetIndex;
  42823. redo2["data"] = {"historyRules": historyRules, "currentRules": currentRules};
  42824. store_default.jfredo.push(redo2);
  42825. }
  42826. let index2 = getSheetIndex(store_default.currentSheetIndex);
  42827. store_default.luckysheetfile[index2]["luckysheet_alternateformat_save"] = currentRules;
  42828. setTimeout(function() {
  42829. luckysheetrefreshgrid();
  42830. }, 1);
  42831. }
  42832. };
  42833. alternateformat_default = alternateformat;
  42834. }
  42835. });
  42836. // src/global/json.js
  42837. var json, json_default;
  42838. var init_json = __esm({
  42839. "src/global/json.js"() {
  42840. init_util();
  42841. json = {
  42842. parseJsonParm: function(obj) {
  42843. if (obj == null) {
  42844. return {};
  42845. } else if (getObjType(obj) == "string") {
  42846. try {
  42847. let json2 = new Function("return " + obj)();
  42848. return json2;
  42849. } catch (e) {
  42850. return {};
  42851. }
  42852. } else {
  42853. return obj;
  42854. }
  42855. },
  42856. hasKey: function(obj) {
  42857. let _this = this;
  42858. let json2 = _this.parseJsonParm(obj);
  42859. for (let item2 in json2) {
  42860. return true;
  42861. }
  42862. return false;
  42863. }
  42864. };
  42865. json_default = json;
  42866. }
  42867. });
  42868. // src/controllers/filter.js
  42869. function labelFilterOptionState($top, optionstate, rowhidden, caljs, notSave, str, edr, cindex, stc, edc) {
  42870. if (optionstate) {
  42871. $top.addClass("luckysheet-filter-options-active").data("rowhidden", JSON.stringify(rowhidden)).data("caljs", JSON.stringify(caljs)).html('<i class="fa fa-filter luckysheet-mousedown-cancel" aria-hidden="true"></i>');
  42872. if (caljs != null) {
  42873. $top.data("byconditionvalue", caljs["value"]).data("byconditiontype", caljs["type"]).data("byconditiontext", caljs["text"]);
  42874. if (caljs["value1"] != null) {
  42875. $top.data("byconditionvalue1", caljs["value1"]);
  42876. }
  42877. if (caljs["value2"] != null) {
  42878. $top.data("byconditionvalue2", caljs["value2"]);
  42879. }
  42880. }
  42881. } else {
  42882. $top.removeClass("luckysheet-filter-options-active").data("rowhidden", "").data("caljs", "").html('<i class="fa fa-caret-down luckysheet-mousedown-cancel" aria-hidden="true"></i>');
  42883. $top.data("byconditionvalue", "null").data("byconditiontype", "0").data("byconditiontext", "\u65E0").data("byconditionvalue1", "").data("byconditionvalue2", "");
  42884. }
  42885. if (!!notSave) {
  42886. let file = store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)];
  42887. if (file.filter == null) {
  42888. file.filter = {};
  42889. }
  42890. if (optionstate) {
  42891. let param = {
  42892. "caljs": caljs,
  42893. "rowhidden": rowhidden,
  42894. "optionstate": optionstate,
  42895. "str": str,
  42896. "edr": edr,
  42897. "cindex": cindex,
  42898. "stc": stc,
  42899. "edc": edc
  42900. };
  42901. file.filter[cindex - stc] = param;
  42902. } else {
  42903. delete file.filter[cindex - stc];
  42904. }
  42905. server_default.saveParam("all", store_default.currentSheetIndex, file.filter, {"k": "filter"});
  42906. }
  42907. }
  42908. function orderbydatafiler(str, stc, edr, edc, index2, asc) {
  42909. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  42910. str = str + 1;
  42911. let hasMc = false;
  42912. let data = [];
  42913. for (let r2 = str; r2 <= edr; r2++) {
  42914. let data_row = [];
  42915. for (let c2 = stc; c2 <= edc; c2++) {
  42916. if (d[r2][c2] != null && d[r2][c2].mc != null) {
  42917. hasMc = true;
  42918. break;
  42919. }
  42920. data_row.push(d[r2][c2]);
  42921. }
  42922. data.push(data_row);
  42923. }
  42924. if (hasMc) {
  42925. const locale_filter = locale_default().filter;
  42926. if (isEditMode()) {
  42927. alert(locale_filter.mergeError);
  42928. } else {
  42929. tooltip_default.info(locale_filter.mergeError, "");
  42930. }
  42931. return;
  42932. }
  42933. data = orderbydata(data, index2 - stc, asc);
  42934. for (let r2 = str; r2 <= edr; r2++) {
  42935. for (let c2 = stc; c2 <= edc; c2++) {
  42936. d[r2][c2] = data[r2 - str][c2 - stc];
  42937. }
  42938. }
  42939. let allParam = {};
  42940. if (store_default.config["rowlen"] != null) {
  42941. let cfg = $.extend(true, {}, store_default.config);
  42942. cfg = rowlenByRange(d, str, edr, cfg);
  42943. allParam = {
  42944. "cfg": cfg,
  42945. "RowlChange": true
  42946. };
  42947. }
  42948. jfrefreshgrid(d, [{"row": [str, edr], "column": [stc, edc]}], allParam);
  42949. }
  42950. function createFilter() {
  42951. if (!checkProtectionAuthorityNormal(store_default.currentSheetIndex, "filter")) {
  42952. return;
  42953. }
  42954. if (store_default.luckysheet_select_save.length > 1) {
  42955. $("#luckysheet-rightclick-menu").hide();
  42956. $("#luckysheet-filter-menu, #luckysheet-filter-submenu").hide();
  42957. $("#" + store_default.container).attr("tabindex", 0).focus();
  42958. const locale_splitText = locale_default().splitText;
  42959. if (isEditMode()) {
  42960. alert(locale_splitText.tipNoMulti);
  42961. } else {
  42962. tooltip_default.info(locale_splitText.tipNoMulti, "");
  42963. }
  42964. return;
  42965. }
  42966. if (store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)].isPivotTable) {
  42967. return;
  42968. }
  42969. $("#luckysheet-filter-selected-sheet" + store_default.currentSheetIndex + ", #luckysheet-filter-options-sheet" + store_default.currentSheetIndex).remove();
  42970. let last = store_default.luckysheet_select_save[0];
  42971. if (last["row"][0] == last["row"][1] && last["column"][0] == last["column"][1]) {
  42972. let st_c, ed_c, curR = last["row"][1];
  42973. for (let c2 = 0; c2 < store_default.flowdata[curR].length; c2++) {
  42974. let cell = store_default.flowdata[curR][c2];
  42975. if (cell != null && !isRealNull(cell.v)) {
  42976. if (st_c == null) {
  42977. st_c = c2;
  42978. }
  42979. } else if (st_c != null) {
  42980. ed_c = c2 - 1;
  42981. break;
  42982. }
  42983. }
  42984. if (ed_c == null) {
  42985. ed_c = store_default.flowdata[curR].length - 1;
  42986. }
  42987. store_default.luckysheet_select_save = [{"row": [curR, curR], "column": [st_c, ed_c]}];
  42988. selectHightlightShow();
  42989. store_default.luckysheet_shiftpositon = $.extend(true, {}, last);
  42990. luckysheetMoveEndCell("down", "range");
  42991. } else if (last["row"][1] - last["row"][0] < 2) {
  42992. store_default.luckysheet_shiftpositon = $.extend(true, {}, last);
  42993. luckysheetMoveEndCell("down", "range");
  42994. }
  42995. store_default.luckysheet_filter_save = $.extend(true, {}, store_default.luckysheet_select_save[0]);
  42996. createFilterOptions(store_default.luckysheet_filter_save);
  42997. server_default.saveParam("all", store_default.currentSheetIndex, store_default.luckysheet_filter_save, {"k": "filter_select"});
  42998. if (store_default.filterchage) {
  42999. store_default.jfredo.push({
  43000. "type": "filtershow",
  43001. "data": [],
  43002. "curdata": [],
  43003. "sheetIndex": store_default.currentSheetIndex,
  43004. "filter_save": store_default.luckysheet_filter_save
  43005. });
  43006. }
  43007. }
  43008. function createFilterOptions(luckysheet_filter_save, filterObj) {
  43009. $("#luckysheet-filter-selected-sheet" + store_default.currentSheetIndex).remove();
  43010. $("#luckysheet-filter-options-sheet" + store_default.currentSheetIndex).remove();
  43011. if (luckysheet_filter_save == null || JSON.stringify(luckysheet_filter_save) == "{}") {
  43012. return;
  43013. }
  43014. let r1 = luckysheet_filter_save.row[0], r2 = luckysheet_filter_save.row[1];
  43015. let c1 = luckysheet_filter_save.column[0], c2 = luckysheet_filter_save.column[1];
  43016. let row = store_default.visibledatarow[r2], row_pre = r1 - 1 == -1 ? 0 : store_default.visibledatarow[r1 - 1];
  43017. let col = store_default.visibledatacolumn[c2], col_pre = c1 - 1 == -1 ? 0 : store_default.visibledatacolumn[c1 - 1];
  43018. let newSelectedHTML = '<div id="luckysheet-filter-selected-sheet' + store_default.currentSheetIndex + '" class="luckysheet-cell-selected luckysheet-filter-selected" style="left:' + col_pre + "px;width:" + (col - col_pre - 1) + "px;top:" + row_pre + "px;height:" + (row - row_pre - 1) + 'px;display:block;border-color:#897BFF;z-index:20;background:none;"></div>';
  43019. $("#luckysheet-cell-main").append(newSelectedHTML);
  43020. let optionHTML = "";
  43021. for (let c3 = c1; c3 <= c2; c3++) {
  43022. if (filterObj == null || filterObj[c3 - c1] == null) {
  43023. optionHTML += '<div data-rowhidden="" data-str="' + r1 + '" data-edr="' + r2 + '" data-cindex="' + c3 + '" data-stc="' + c1 + '" data-edc="' + c2 + '" class="luckysheet-filter-options" style="left:' + (store_default.visibledatacolumn[c3] - 20) + "px;top:" + row_pre + 'px;display:block;"><i class="fa fa-caret-down" aria-hidden="true"></i></div>';
  43024. } else {
  43025. let caljs_data;
  43026. if (filterObj[c3 - c1].caljs != null) {
  43027. let caljs_value1_data;
  43028. if (filterObj[c3 - c1].caljs["value1"] != null) {
  43029. caljs_value1_data = 'data-byconditionvalue1="' + filterObj[c3 - c1].caljs["value1"] + '" ';
  43030. } else {
  43031. caljs_value1_data = "";
  43032. }
  43033. let caljs_value2_data;
  43034. if (filterObj[c3 - c1].caljs["value2"] != null) {
  43035. caljs_value2_data = 'data-byconditionvalue2="' + filterObj[c3 - c1].caljs["value2"] + '" ';
  43036. } else {
  43037. caljs_value2_data = "";
  43038. }
  43039. caljs_data = 'data-caljs="' + JSON.stringify(filterObj[c3 - c1].caljs) + '" data-byconditionvalue="' + filterObj[c3 - c1].caljs["value"] + '" data-byconditiontype="' + filterObj[c3 - c1].caljs["type"] + '" data-byconditiontext="' + filterObj[c3 - c1].caljs["text"] + '" ' + caljs_value1_data + caljs_value2_data;
  43040. } else {
  43041. caljs_data = "";
  43042. }
  43043. optionHTML += '<div data-rowhidden="' + JSON.stringify(filterObj[c3 - c1].rowhidden).replace(/\"/g, "'") + '" ' + caljs_data + ' data-str="' + r1 + '" data-edr="' + r2 + '" data-cindex="' + c3 + '" data-stc="' + c1 + '" data-edc="' + c2 + '" class="luckysheet-filter-options luckysheet-filter-options-active" style="left:' + (store_default.visibledatacolumn[c3] - 20) + "px;top:" + row_pre + 'px;display:block;"><i class="fa fa-filter luckysheet-mousedown-cancel" aria-hidden="true"></i></div>';
  43044. }
  43045. }
  43046. $("#luckysheet-cell-main").append('<div id="luckysheet-filter-options-sheet' + store_default.currentSheetIndex + '" class="luckysheet-filter-options-c">' + optionHTML + "</div>");
  43047. $("#luckysheet-rightclick-menu").hide();
  43048. $("#luckysheet-filter-menu, #luckysheet-filter-submenu").hide();
  43049. if ($("#luckysheet-cell-main").scrollTop() > luckysheet_filter_save["top_move"]) {
  43050. $("#luckysheet-scrollbar-y").scrollTop(luckysheet_filter_save["top_move"]);
  43051. }
  43052. let file = store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)];
  43053. file.filter_select = luckysheet_filter_save;
  43054. }
  43055. function initialFilterHandler() {
  43056. let hidefilersubmenu = null;
  43057. const _locale = locale_default();
  43058. const locale_filter = _locale.filter;
  43059. const locale_button = _locale.button;
  43060. $("#luckysheetfilter").click(createFilter);
  43061. let submenuhide = null, rightclickmenu = null;
  43062. $(".luckysheet-cols-menu .luckysheet-cols-submenu").hover(function() {
  43063. let $t = $(this), attrid = $t.attr("id"), $attr = $("#" + attrid + "_sub"), $con = $t.parent();
  43064. let winW = $(window).width(), winH = $(window).height();
  43065. let menuW = $con.width(), attrH = $attr.height() + 25, attrW = $attr.width() + 5;
  43066. let offset = $t.offset();
  43067. let top = offset.top, left = offset.left + menuW;
  43068. if (left + attrW > winW) {
  43069. left = offset.left - attrW;
  43070. }
  43071. if (top + attrH > winH) {
  43072. top = winH - attrH;
  43073. }
  43074. $attr.css({"top": top, "left": left}).show();
  43075. rightclickmenu = $t;
  43076. }, function() {
  43077. let $t = $(this), attrid = $t.attr("id"), $attr = $("#" + attrid + "_sub");
  43078. submenuhide = setTimeout(function() {
  43079. $attr.hide();
  43080. }, 200);
  43081. });
  43082. $(".luckysheet-rightgclick-menu-sub").hover(function() {
  43083. rightclickmenu.addClass("luckysheet-cols-menuitem-hover");
  43084. clearTimeout(submenuhide);
  43085. }, function() {
  43086. rightclickmenu.removeClass("luckysheet-cols-menuitem-hover");
  43087. $(this).hide();
  43088. });
  43089. $("#luckysheet-filter-menu").mouseover(function() {
  43090. clearTimeout(hidefilersubmenu);
  43091. hidefilersubmenu = setTimeout(function() {
  43092. $("#luckysheet-filter-submenu").hide();
  43093. }, 500);
  43094. });
  43095. $("#luckysheet-filter-submenu").mouseover(function() {
  43096. clearTimeout(hidefilersubmenu);
  43097. }).find(".luckysheet-cols-menuitem").click(function(e) {
  43098. $("#luckysheet-filter-selected span").html($(this).find(".luckysheet-cols-menuitem-content").text()).data("value", $(this).data("value"));
  43099. $("#luckysheet-filter-menu .luckysheet-filter-selected-input").hide();
  43100. let $type = $(this).data("type");
  43101. let $value = $(this).attr("data-value");
  43102. if ($type == "2") {
  43103. $("#luckysheet-filter-selected span").data("type", "2");
  43104. $("#luckysheet-filter-menu .luckysheet-filter-selected-input2").show();
  43105. $("#luckysheet-filter-menu .luckysheet-filter-selected-input input").prop("type", "number");
  43106. } else if ($type == "0") {
  43107. $("#luckysheet-filter-selected span").data("type", "0");
  43108. } else {
  43109. $("#luckysheet-filter-selected span").data("type", "1");
  43110. $("#luckysheet-filter-menu .luckysheet-filter-selected-input").eq(0).show();
  43111. if ($value == "dateequal" || $value == "datelessthan" || $value == "datemorethan") {
  43112. $("#luckysheet-filter-menu .luckysheet-filter-selected-input input").prop("type", "date");
  43113. } else if ($value == "morethan" || $value == "moreequalthan" || $value == "lessthan" || $value == "lessequalthan" || $value == "equal" || $value == "noequal") {
  43114. $("#luckysheet-filter-menu .luckysheet-filter-selected-input input").prop("type", "number");
  43115. } else {
  43116. $("#luckysheet-filter-menu .luckysheet-filter-selected-input input").prop("type", "text");
  43117. }
  43118. }
  43119. $("#luckysheet-filter-byvalue").next().slideUp();
  43120. $("#luckysheet-filter-submenu").hide();
  43121. });
  43122. $("#luckysheet-filter-bycondition, #luckysheet-filter-byvalue").click(function() {
  43123. let $t = $(this);
  43124. $t.next().slideToggle(200);
  43125. setTimeout(function() {
  43126. if ($t.attr("id") == "luckysheet-filter-bycondition" && $("#luckysheet-filter-bycondition").next().is(":visible")) {
  43127. if ($("#luckysheet-filter-selected span").text() != locale_filter.filiterInputNone) {
  43128. $("#luckysheet-filter-byvalue").next().slideUp(200);
  43129. }
  43130. }
  43131. if ($t.is($("#luckysheet-filter-bycondition"))) {
  43132. if ($("#luckysheet-filter-bycondition").next().is(":hidden") && $("#luckysheet-filter-byvalue").next().is(":hidden")) {
  43133. $("#luckysheet-filter-byvalue").next().slideDown(200);
  43134. }
  43135. }
  43136. }, 300);
  43137. });
  43138. $("#luckysheet-filter-selected").click(function() {
  43139. let $t = $(this), toffset = $t.offset(), $menu = $("#luckysheet-filter-submenu");
  43140. $menu.hide();
  43141. let winH = $(window).height(), winW = $(window).width();
  43142. let menuW = $menu.width(), menuH = $menu.height();
  43143. let top = toffset.top, left = toffset.left, mheight = winH - toffset.top - 20;
  43144. if (toffset.left + menuW > winW) {
  43145. left = toffset.left - menuW;
  43146. }
  43147. if (toffset.top > winH / 2) {
  43148. top = winH - toffset.top;
  43149. if (top < 0) {
  43150. top = 0;
  43151. }
  43152. mheight = toffset.top - 20;
  43153. }
  43154. $menu.css({"top": top, "left": left, "height": mheight}).show();
  43155. clearTimeout(hidefilersubmenu);
  43156. });
  43157. $("#luckysheet-cell-main").on("click", ".luckysheet-filter-options", function(e) {
  43158. if (!checkProtectionAuthorityNormal(store_default.currentSheetIndex, "filter")) {
  43159. return;
  43160. }
  43161. let $t = $(e.currentTarget), toffset = $t.offset(), $menu = $("#luckysheet-filter-menu"), winH = $(window).height(), winW = $(window).width();
  43162. let st_r = $t.data("str"), ed_r = $t.data("edr"), cindex = $t.data("cindex"), st_c = $t.data("stc"), ed_c = $t.data("edc"), rowhidden = $t.data("rowhidden") == "" ? {} : JSON.parse($t.data("rowhidden").replace(/\'/g, '"'));
  43163. $("body .luckysheet-cols-menu").hide();
  43164. $("#luckysheet-filter-menu, #luckysheet-filter-submenu").hide();
  43165. $("#luckysheet-filter-byvalue-input").val("");
  43166. $("#luckysheet-filter-bycondition").next().hide();
  43167. $("#luckysheet-filter-byvalue").next().show();
  43168. $menu.data("str", st_r);
  43169. $menu.data("edr", ed_r);
  43170. $menu.data("cindex", cindex);
  43171. $menu.data("stc", st_c);
  43172. $menu.data("edc", ed_c);
  43173. $("#luckysheet-filter-menu .luckysheet-filter-selected-input").hide().find("input").val();
  43174. $("#luckysheet-filter-selected span").data("type", "0").data("type", null).text(locale_filter.filiterInputNone);
  43175. let byconditiontype = $t.data("byconditiontype");
  43176. $("#luckysheet-filter-selected span").data("value", $t.data("byconditionvalue")).data("type", byconditiontype).text($t.data("byconditiontext"));
  43177. if (byconditiontype == "2") {
  43178. let $input = $("#luckysheet-filter-menu .luckysheet-filter-selected-input2").show().find("input");
  43179. $input.eq(0).val($t.data("byconditionvalue1"));
  43180. $input.eq(1).val($t.data("byconditionvalue2"));
  43181. } else if (byconditiontype == "1") {
  43182. $("#luckysheet-filter-menu .luckysheet-filter-selected-input").eq(0).show().find("input").val($t.data("byconditionvalue1"));
  43183. }
  43184. $("#luckysheet-filter-orderby-asc").off("click").on("click", function() {
  43185. orderbydatafiler(st_r, st_c, ed_r, ed_c, cindex, true);
  43186. });
  43187. $("#luckysheet-filter-orderby-desc").off("click").on("click", function() {
  43188. orderbydatafiler(st_r, st_c, ed_r, ed_c, cindex, false);
  43189. });
  43190. const loadingObj = luckysheetlodingHTML("#luckysheet-filter-byvalue-select", {text: locale_filter.filiterMoreDataTip});
  43191. $("#luckysheet-filter-byvalue-select").empty().append(loadingObj.el);
  43192. let rowhiddenother = {};
  43193. $("#luckysheet-filter-options-sheet" + store_default.currentSheetIndex + " .luckysheet-filter-options").not(this).each(function() {
  43194. let $t2 = $(this), rh = $t2.data("rowhidden");
  43195. if (rh == "") {
  43196. return true;
  43197. }
  43198. rh = JSON.parse(rh.replace(/\'/g, '"'));
  43199. for (let r2 in rh) {
  43200. rowhiddenother[r2] = 0;
  43201. }
  43202. });
  43203. let data = store_default.flowdata;
  43204. setTimeout(function() {
  43205. let dvmap = {};
  43206. let dvmap_uncheck = {};
  43207. let vmap = {};
  43208. let vmap_uncheck = {};
  43209. for (let r2 = st_r + 1; r2 <= ed_r; r2++) {
  43210. if (r2 in rowhiddenother) {
  43211. continue;
  43212. }
  43213. if (store_default.flowdata[r2] == null) {
  43214. continue;
  43215. }
  43216. let cell = store_default.flowdata[r2][cindex];
  43217. if (cell != null && !isRealNull(cell.v) && cell.ct != null && cell.ct.t == "d") {
  43218. let v = update("YYYY-MM-DD", cell.v);
  43219. let y = v.split("-")[0];
  43220. let m = v.split("-")[1];
  43221. let d = v.split("-")[2];
  43222. if (!(y in dvmap)) {
  43223. dvmap[y] = {};
  43224. }
  43225. if (!(m in dvmap[y])) {
  43226. dvmap[y][m] = {};
  43227. }
  43228. if (!(d in dvmap[y][m])) {
  43229. dvmap[y][m][d] = 0;
  43230. }
  43231. dvmap[y][m][d]++;
  43232. if (r2 in rowhidden) {
  43233. dvmap_uncheck[y] = 0;
  43234. dvmap_uncheck[m] = 0;
  43235. dvmap_uncheck[d] = 0;
  43236. }
  43237. } else {
  43238. let v, m;
  43239. if (cell == null || isRealNull(cell.v)) {
  43240. v = null;
  43241. m = null;
  43242. } else {
  43243. v = cell.v;
  43244. m = cell.m;
  43245. }
  43246. if (!(v in vmap)) {
  43247. vmap[v] = {};
  43248. }
  43249. if (!(m in vmap[v])) {
  43250. vmap[v][m] = 0;
  43251. }
  43252. vmap[v][m]++;
  43253. if (r2 in rowhidden) {
  43254. vmap_uncheck[v + "#$$$#" + m] = 0;
  43255. }
  43256. }
  43257. }
  43258. let item2 = [];
  43259. if (JSON.stringify(dvmap).length > 2) {
  43260. for (let y in dvmap) {
  43261. let ysum = 0;
  43262. let monthHtml = "";
  43263. for (let m in dvmap[y]) {
  43264. let msum = 0;
  43265. let dayHtml = "";
  43266. for (let d in dvmap[y][m]) {
  43267. let dayL = dvmap[y][m][d];
  43268. msum += dayL;
  43269. let mT;
  43270. if (Number(m) < 10) {
  43271. mT = "0" + Number(m);
  43272. } else {
  43273. mT = m;
  43274. }
  43275. let dT;
  43276. if (Number(d) < 10) {
  43277. dT = "0" + Number(d);
  43278. } else {
  43279. dT = d;
  43280. }
  43281. if (y in dvmap_uncheck && m in dvmap_uncheck && d in dvmap_uncheck) {
  43282. dayHtml += '<div class="day luckysheet-mousedown-cancel cf" data-check="false" title="' + y + "-" + mT + "-" + dT + '"><input class="luckysheet-mousedown-cancel" type="checkbox"/><label class="luckysheet-mousedown-cancel">' + d + '</label><span class="count luckysheet-mousedown-cancel">( ' + dayL + " )</span></div>";
  43283. } else {
  43284. dayHtml += '<div class="day luckysheet-mousedown-cancel cf" data-check="true" title="' + y + "-" + mT + "-" + dT + '"><input class="luckysheet-mousedown-cancel" type="checkbox" checked="checked"/><label class="luckysheet-mousedown-cancel">' + d + '</label><span class="count luckysheet-mousedown-cancel">( ' + dayL + " )</span></div>";
  43285. }
  43286. }
  43287. ysum += msum;
  43288. let mT2;
  43289. if (Number(m) < 10) {
  43290. mT2 = "0" + Number(m);
  43291. } else {
  43292. mT2 = m;
  43293. }
  43294. if (y in dvmap_uncheck && m in dvmap_uncheck) {
  43295. monthHtml += '<div class="monthBox luckysheet-mousedown-cancel"><div class="month luckysheet-mousedown-cancel cf" data-check="false" title="' + y + "-" + mT2 + '"><i class="fa fa-caret-right luckysheet-mousedown-cancel" aria-hidden="true"></i><input class="luckysheet-mousedown-cancel" type="checkbox"/><label class="luckysheet-mousedown-cancel">' + m + "" + locale_filter.filiterMonthText + '</label><span class="count luckysheet-mousedown-cancel">( ' + msum + ' )</span></div><div class="dayList luckysheet-mousedown-cancel">' + dayHtml + "</div></div>";
  43296. } else {
  43297. monthHtml += '<div class="monthBox luckysheet-mousedown-cancel"><div class="month luckysheet-mousedown-cancel cf" data-check="true" title="' + y + "-" + mT2 + '"><i class="fa fa-caret-right luckysheet-mousedown-cancel" aria-hidden="true"></i><input class="luckysheet-mousedown-cancel" type="checkbox" checked="checked"/><label class="luckysheet-mousedown-cancel">' + m + "" + locale_filter.filiterMonthText + '</label><span class="count luckysheet-mousedown-cancel">( ' + msum + ' )</span></div><div class="dayList luckysheet-mousedown-cancel">' + dayHtml + "</div></div>";
  43298. }
  43299. }
  43300. let yearHtml;
  43301. if (y in dvmap_uncheck) {
  43302. yearHtml = '<div class="yearBox luckysheet-mousedown-cancel"><div class="year luckysheet-mousedown-cancel cf" data-check="false" title="' + y + '"><i class="fa fa-caret-right luckysheet-mousedown-cancel" aria-hidden="true"></i><input class="luckysheet-mousedown-cancel" type="checkbox"/><label class="luckysheet-mousedown-cancel">' + y + "" + locale_filter.filiterYearText + '</label><span class="count luckysheet-mousedown-cancel">( ' + ysum + ' )</span></div><div class="monthList luckysheet-mousedown-cancel">' + monthHtml + "</div></div>";
  43303. } else {
  43304. yearHtml = '<div class="yearBox luckysheet-mousedown-cancel"><div class="year luckysheet-mousedown-cancel cf" data-check="true" title="' + y + '"><i class="fa fa-caret-right luckysheet-mousedown-cancel" aria-hidden="true"></i><input class="luckysheet-mousedown-cancel" type="checkbox" checked="checked"/><label class="luckysheet-mousedown-cancel">' + y + "" + locale_filter.filiterYearText + '</label><span class="count luckysheet-mousedown-cancel">( ' + ysum + ' )</span></div><div class="monthList luckysheet-mousedown-cancel">' + monthHtml + "</div></div>";
  43305. }
  43306. item2.unshift(yearHtml);
  43307. }
  43308. }
  43309. if (JSON.stringify(vmap).length > 2) {
  43310. let vmapKeys = Object.keys(vmap);
  43311. vmapKeys = orderbydata1D(vmapKeys, true);
  43312. for (let i2 = 0; i2 < vmapKeys.length; i2++) {
  43313. let v = vmapKeys[i2];
  43314. for (let x in vmap[v]) {
  43315. let text;
  43316. if (v + "#$$$#" + x == "null#$$$#null") {
  43317. text = locale_filter.valueBlank;
  43318. } else {
  43319. text = x;
  43320. }
  43321. let dataHtml;
  43322. if (v + "#$$$#" + x in vmap_uncheck) {
  43323. dataHtml = '<div class="textBox luckysheet-mousedown-cancel cf" data-check="false" data-filter="' + (v + "#$$$#" + x) + '" title="' + text + '"><input class="luckysheet-mousedown-cancel" type="checkbox"/><label class="luckysheet-mousedown-cancel">' + text + '</label><span class="luckysheet-mousedown-cancel count">( ' + vmap[v][x] + " )</span></div>";
  43324. } else {
  43325. dataHtml = '<div class="textBox luckysheet-mousedown-cancel cf" data-check="true" data-filter="' + (v + "#$$$#" + x) + '" title="' + text + '"><input class="luckysheet-mousedown-cancel" type="checkbox" checked="checked"/><label class="luckysheet-mousedown-cancel">' + text + '</label><span class="luckysheet-mousedown-cancel count">( ' + vmap[v][x] + " )</span></div>";
  43326. }
  43327. item2.push(dataHtml);
  43328. }
  43329. }
  43330. }
  43331. let containerH = winH - toffset.top - 350;
  43332. if (containerH < 0)
  43333. containerH = 100;
  43334. $("#luckysheet-filter-byvalue-select").append("<div class='ListBox luckysheet-mousedown-cancel' style='min-height: 100px; max-height: " + containerH + "px; overflow-y: auto; overflow-x: hidden;'><table cellspacing='0' style='width:100%;' class='luckysheet-mousedown-cancel'>" + item2.join("") + "</table></div>");
  43335. loadingObj.close();
  43336. }, 1);
  43337. showrightclickmenu($menu, toffset.left, toffset.top + 20);
  43338. e.stopPropagation();
  43339. return false;
  43340. });
  43341. $("#luckysheet-filter-orderby-color").hover(function() {
  43342. let $menu = $("#luckysheet-filter-menu");
  43343. let st_r = $menu.data("str"), ed_r = $menu.data("edr"), cindex = $menu.data("cindex"), st_c = $menu.data("stc"), ed_c = $menu.data("edc");
  43344. let bgMap = {};
  43345. let fcMap = {};
  43346. let af_compute = alternateformat_default.getComputeMap();
  43347. let cf_compute = conditionformat_default.getComputeMap();
  43348. for (let r2 = st_r + 1; r2 <= ed_r; r2++) {
  43349. let cell = store_default.flowdata[r2][cindex];
  43350. let bg = menuButton_default.checkstatus(store_default.flowdata, r2, cindex, "bg");
  43351. if (bg == null) {
  43352. bg = "#ffffff";
  43353. }
  43354. let checksAF = alternateformat_default.checksAF(r2, cindex, af_compute);
  43355. if (checksAF != null) {
  43356. bg = checksAF[1];
  43357. }
  43358. let checksCF = conditionformat_default.checksCF(r2, cindex, cf_compute);
  43359. if (checksCF != null && checksCF["cellColor"] != null) {
  43360. bg = checksCF["cellColor"];
  43361. }
  43362. if (bg.indexOf("rgb") > -1) {
  43363. bg = rgbTohex(bg);
  43364. }
  43365. if (bg.length == 4) {
  43366. bg = bg.substr(0, 1) + bg.substr(1, 1).repeat(2) + bg.substr(2, 1).repeat(2) + bg.substr(3, 1).repeat(2);
  43367. }
  43368. let fc = menuButton_default.checkstatus(store_default.flowdata, r2, cindex, "fc");
  43369. if (checksAF != null) {
  43370. fc = checksAF[0];
  43371. }
  43372. if (checksCF != null && checksCF["textColor"] != null) {
  43373. fc = checksCF["textColor"];
  43374. }
  43375. if (fc.indexOf("rgb") > -1) {
  43376. fc = rgbTohex(fc);
  43377. }
  43378. if (fc.length == 4) {
  43379. fc = fc.substr(0, 1) + fc.substr(1, 1).repeat(2) + fc.substr(2, 1).repeat(2) + fc.substr(3, 1).repeat(2);
  43380. }
  43381. if (store_default.config != null && store_default.config["rowhidden"] != null && r2 in store_default.config["rowhidden"]) {
  43382. bgMap[bg] = 1;
  43383. if (cell != null && !isRealNull(cell.v)) {
  43384. fcMap[fc] = 1;
  43385. }
  43386. } else {
  43387. bgMap[bg] = 0;
  43388. if (cell != null && !isRealNull(cell.v)) {
  43389. fcMap[fc] = 0;
  43390. }
  43391. }
  43392. }
  43393. let filterBgColorHtml = "";
  43394. if (JSON.stringify(bgMap).length > 2 && Object.keys(bgMap).length > 1) {
  43395. let bgColorItemHtml = "";
  43396. for (let b in bgMap) {
  43397. if (bgMap[b] == 0) {
  43398. bgColorItemHtml += '<div class="item luckysheet-mousedown-cancel"><label class="luckysheet-mousedown-cancel" style="background-color: ' + b + '" title="' + b + '"></label><input class="luckysheet-mousedown-cancel" type="checkbox" checked="checked"/></div>';
  43399. } else {
  43400. bgColorItemHtml += '<div class="item luckysheet-mousedown-cancel"><label class="luckysheet-mousedown-cancel" style="background-color: ' + b + '" title="' + b + '"></label><input class="luckysheet-mousedown-cancel" type="checkbox"/></div>';
  43401. }
  43402. }
  43403. filterBgColorHtml = '<div id="filterBgColor" class="box luckysheet-mousedown-cancel"><div class="title luckysheet-mousedown-cancel">' + locale_filter.filiterByColorTip + '</div><div style="max-height:128px;overflow:auto;" class="luckysheet-mousedown-cancel">' + bgColorItemHtml + "</div></div>";
  43404. }
  43405. let filterFcColorHtml = "";
  43406. if (JSON.stringify(fcMap).length > 2 && Object.keys(fcMap).length > 1) {
  43407. let fcColorItemHtml = "";
  43408. for (let f in fcMap) {
  43409. if (fcMap[f] == 0) {
  43410. fcColorItemHtml += '<div class="item luckysheet-mousedown-cancel"><label class="luckysheet-mousedown-cancel" style="background-color: ' + f + '" title="' + f + '"></label><input class="luckysheet-mousedown-cancel" type="checkbox" checked="checked"/></div>';
  43411. } else {
  43412. fcColorItemHtml += '<div class="item luckysheet-mousedown-cancel"><label class="luckysheet-mousedown-cancel" style="background-color: ' + f + '" title="' + f + '"></label><input class="luckysheet-mousedown-cancel" type="checkbox"/></div>';
  43413. }
  43414. }
  43415. filterFcColorHtml = '<div id="filterFcColor" class="box luckysheet-mousedown-cancel"><div class="title luckysheet-mousedown-cancel">' + locale_filter.filiterByTextColorTip + '</div><div style="max-height:128px;overflow:auto;" class="luckysheet-mousedown-cancel">' + fcColorItemHtml + "</div></div>";
  43416. }
  43417. let content;
  43418. if (filterBgColorHtml == "" && filterFcColorHtml == "") {
  43419. content = '<div class="luckysheet-mousedown-cancel" style="padding: 10px 30px;text-align: center;">' + locale_filter.filterContainerOneColorTip + "</div>";
  43420. } else {
  43421. content = filterBgColorHtml + filterFcColorHtml + '<div class="luckysheet-mousedown-cancel"><button id="luckysheet-filter-orderby-color-confirm" class="btn btn-primary luckysheet-mousedown-cancel" style="margin: 5px 20px;width: 70px;">' + locale_button.confirm + "</button></div>";
  43422. }
  43423. $("#luckysheet-filter-orderby-color-submenu").remove();
  43424. $("body").append('<div id="luckysheet-filter-orderby-color-submenu" class="luckysheet-cols-menu luckysheet-mousedown-cancel">' + content + "</div>");
  43425. let $t = $("#luckysheet-filter-orderby-color-submenu").end();
  43426. let $con = $(this).parent();
  43427. let winW = $(window).width(), winH = $(window).height();
  43428. let menuW = $con.width(), myh = $t.height() + 25, myw = $t.width() + 5;
  43429. let offset = $(this).offset();
  43430. let top = offset.top, left = offset.left + menuW;
  43431. if (left + myw > winW) {
  43432. left = offset.left - myw;
  43433. }
  43434. if (top + myh > winH) {
  43435. top = winH - myh;
  43436. }
  43437. $("#luckysheet-filter-orderby-color-submenu").css({"top": top, "left": left}).show();
  43438. }, function() {
  43439. submenuhide = setTimeout(function() {
  43440. $("#luckysheet-filter-orderby-color-submenu").hide();
  43441. }, 200);
  43442. });
  43443. $(document).on("mouseover mouseleave", "#luckysheet-filter-orderby-color-submenu", function(e) {
  43444. if (e.type === "mouseover") {
  43445. clearTimeout(submenuhide);
  43446. } else {
  43447. $(this).hide();
  43448. }
  43449. });
  43450. $(document).on("click", "#luckysheet-filter-orderby-color-submenu .item label", function() {
  43451. $(this).siblings("input[type='checkbox']").click();
  43452. });
  43453. $(document).off("click.orderbyColorConfirm").on("click.orderbyColorConfirm", "#luckysheet-filter-orderby-color-submenu #luckysheet-filter-orderby-color-confirm", function() {
  43454. let bg_colorMap = {};
  43455. let fc_colorMap = {};
  43456. $("#luckysheet-filter-orderby-color-submenu .item").each(function(i2, e) {
  43457. if ($(e).find("input[type='checkbox']").is(":checked")) {
  43458. let color = $(this).find("label").attr("title");
  43459. let $id = $(this).closest(".box").attr("id");
  43460. if ($id == "filterBgColor") {
  43461. bg_colorMap[color] = 0;
  43462. } else if ($id == "filterFcColor") {
  43463. fc_colorMap[color] = 0;
  43464. }
  43465. }
  43466. });
  43467. let bg_filter;
  43468. if ($("#luckysheet-filter-orderby-color-submenu #filterBgColor").length > 0) {
  43469. bg_filter = true;
  43470. } else {
  43471. bg_filter = false;
  43472. }
  43473. let fc_filter;
  43474. if ($("#luckysheet-filter-orderby-color-submenu #filterFcColor").length > 0) {
  43475. fc_filter = true;
  43476. } else {
  43477. fc_filter = false;
  43478. }
  43479. let $menu = $("#luckysheet-filter-menu");
  43480. let st_r = $menu.data("str"), ed_r = $menu.data("edr"), cindex = $menu.data("cindex"), st_c = $menu.data("stc"), ed_c = $menu.data("edc");
  43481. let rowhiddenother = {};
  43482. $("#luckysheet-filter-options-sheet" + store_default.currentSheetIndex + " .luckysheet-filter-options").not($("#luckysheet-filter-options-sheet" + store_default.currentSheetIndex + " .luckysheet-filter-options").eq(cindex - st_c).get(0)).each(function() {
  43483. let $t = $(this), rh = $t.data("rowhidden");
  43484. if (rh == "") {
  43485. return true;
  43486. }
  43487. rh = JSON.parse(rh);
  43488. for (let r2 in rh) {
  43489. rowhiddenother[r2] = 0;
  43490. }
  43491. });
  43492. let filterdata = {};
  43493. let rowhidden = {};
  43494. let caljs = {};
  43495. let af_compute = alternateformat_default.getComputeMap();
  43496. let cf_compute = conditionformat_default.getComputeMap();
  43497. for (let r2 = st_r + 1; r2 <= ed_r; r2++) {
  43498. if (r2 in rowhiddenother) {
  43499. continue;
  43500. }
  43501. if (store_default.flowdata[r2] == null) {
  43502. continue;
  43503. }
  43504. let cell = store_default.flowdata[r2][cindex];
  43505. let bg = menuButton_default.checkstatus(store_default.flowdata, r2, cindex, "bg");
  43506. let checksAF = alternateformat_default.checksAF(r2, cindex, af_compute);
  43507. if (checksAF != null) {
  43508. bg = checksAF[1];
  43509. }
  43510. let checksCF = conditionformat_default.checksCF(r2, cindex, cf_compute);
  43511. if (checksCF != null && checksCF["cellColor"] != null) {
  43512. bg = checksCF["cellColor"];
  43513. }
  43514. bg = bg == null ? "#ffffff" : bg;
  43515. if (bg.indexOf("rgb") > -1) {
  43516. bg = rgbTohex(bg);
  43517. }
  43518. if (bg.length == 4) {
  43519. bg = bg.substr(0, 1) + bg.substr(1, 1).repeat(2) + bg.substr(2, 1).repeat(2) + bg.substr(3, 1).repeat(2);
  43520. }
  43521. let fc = menuButton_default.checkstatus(store_default.flowdata, r2, cindex, "fc");
  43522. if (checksAF != null) {
  43523. fc = checksAF[0];
  43524. }
  43525. if (checksCF != null && checksCF["textColor"] != null) {
  43526. fc = checksCF["textColor"];
  43527. }
  43528. if (fc.indexOf("rgb") > -1) {
  43529. fc = rgbTohex(fc);
  43530. }
  43531. if (fc.length == 4) {
  43532. fc = fc.substr(0, 1) + fc.substr(1, 1).repeat(2) + fc.substr(2, 1).repeat(2) + fc.substr(3, 1).repeat(2);
  43533. }
  43534. if (bg_filter && fc_filter) {
  43535. if (!(bg in bg_colorMap) && (!(fc in fc_colorMap) || cell == null || isRealNull(cell.v))) {
  43536. rowhidden[r2] = 0;
  43537. }
  43538. } else if (bg_filter) {
  43539. if (!(bg in bg_colorMap)) {
  43540. rowhidden[r2] = 0;
  43541. }
  43542. } else if (fc_filter) {
  43543. if (!(fc in fc_colorMap) || cell == null || isRealNull(cell.v)) {
  43544. rowhidden[r2] = 0;
  43545. }
  43546. }
  43547. }
  43548. let $top = $("#luckysheet-filter-options-sheet" + store_default.currentSheetIndex + " .luckysheet-filter-options").eq(cindex - st_c);
  43549. let optionstate = Object.keys(rowhidden).length > 0;
  43550. let rowhiddenall = $.extend(true, rowhiddenother, rowhidden), rowhidenPre = json_default.parseJsonParm($top.data("rowhidden"));
  43551. labelFilterOptionState($top, optionstate, rowhidden, caljs, true, st_r, ed_r, cindex, st_c, ed_c);
  43552. let cfg = $.extend(true, {}, store_default.config);
  43553. cfg["rowhidden"] = rowhiddenall;
  43554. if (store_default.clearjfundo) {
  43555. let redo2 = {};
  43556. redo2["type"] = "datachangeAll_filter";
  43557. redo2["sheetIndex"] = store_default.currentSheetIndex;
  43558. redo2["config"] = $.extend(true, {}, store_default.config);
  43559. redo2["curconfig"] = cfg;
  43560. redo2["optionstate"] = optionstate;
  43561. redo2["optionsindex"] = cindex - st_c;
  43562. redo2["rowhidden"] = $.extend(true, {}, rowhidden);
  43563. redo2["rowhidenPre"] = $.extend(true, {}, rowhidenPre);
  43564. if (caljs != null) {
  43565. redo2["caljs"] = caljs;
  43566. }
  43567. store_default.jfundo.length = 0;
  43568. store_default.jfredo.push(redo2);
  43569. }
  43570. store_default.config = cfg;
  43571. store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)].config = store_default.config;
  43572. server_default.saveParam("cg", store_default.currentSheetIndex, cfg["rowhidden"], {"k": "rowhidden"});
  43573. jfrefreshgrid_rhcw(store_default.flowdata.length, store_default.flowdata[0].length);
  43574. $("#luckysheet-filter-menu, #luckysheet-filter-submenu, #luckysheet-filter-orderby-color-submenu").hide();
  43575. cleargridelement();
  43576. });
  43577. $(document).off("click.filterCheckbox1").on("click.filterCheckbox1", "#luckysheet-filter-byvalue-select .textBox", function() {
  43578. if ($(this).attr("data-check") == "true") {
  43579. $(this).attr("data-check", "false");
  43580. $(this).find("input[type='checkbox']").removeAttr("checked");
  43581. } else {
  43582. $(this).attr("data-check", "true");
  43583. $(this).find("input[type='checkbox']").prop("checked", true);
  43584. }
  43585. });
  43586. $(document).off("click.filterCheckbox2").on("click.filterCheckbox2", "#luckysheet-filter-byvalue-select .year", function() {
  43587. if ($(this).attr("data-check") == "true") {
  43588. $(this).attr("data-check", "false");
  43589. $(this).parents(".yearBox").find(".month").attr("data-check", "false");
  43590. $(this).parents(".yearBox").find(".day").attr("data-check", "false");
  43591. $(this).parents(".yearBox").find("input[type='checkbox']").removeAttr("checked");
  43592. } else {
  43593. $(this).attr("data-check", "true");
  43594. $(this).parents(".yearBox").find(".month").attr("data-check", "true");
  43595. $(this).parents(".yearBox").find(".day").attr("data-check", "true");
  43596. $(this).parents(".yearBox").find("input[type='checkbox']").prop("checked", true);
  43597. }
  43598. });
  43599. $(document).off("click.filterCheckbox3").on("click.filterCheckbox3", "#luckysheet-filter-byvalue-select .month", function() {
  43600. if ($(this).attr("data-check") == "true") {
  43601. $(this).attr("data-check", "false");
  43602. $(this).parents(".monthBox").find(".day").attr("data-check", "false");
  43603. $(this).parents(".monthBox").find("input[type='checkbox']").removeAttr("checked");
  43604. } else {
  43605. $(this).attr("data-check", "true");
  43606. $(this).parents(".monthBox").find(".day").attr("data-check", "true");
  43607. $(this).parents(".monthBox").find("input[type='checkbox']").prop("checked", true);
  43608. }
  43609. let yearDayAllCheck = true;
  43610. let $yearDay = $(this).parents(".yearBox").find(".day");
  43611. $yearDay.each(function(i2, e) {
  43612. if ($(e).attr("data-check") == "true") {
  43613. } else {
  43614. yearDayAllCheck = false;
  43615. }
  43616. });
  43617. if (yearDayAllCheck) {
  43618. $(this).parents(".yearBox").find(".year").attr("data-check", "true");
  43619. $(this).parents(".yearBox").find(".year input[type='checkbox']").prop("checked", true);
  43620. } else {
  43621. $(this).parents(".yearBox").find(".year").attr("data-check", "false");
  43622. $(this).parents(".yearBox").find(".year input[type='checkbox']").removeAttr("checked");
  43623. }
  43624. });
  43625. $(document).off("click.filterCheckbox4").on("click.filterCheckbox4", "#luckysheet-filter-byvalue-select .day", function() {
  43626. if ($(this).attr("data-check") == "true") {
  43627. $(this).attr("data-check", "false");
  43628. $(this).find("input[type='checkbox']").removeAttr("checked");
  43629. } else {
  43630. $(this).attr("data-check", "true");
  43631. $(this).find("input[type='checkbox']").prop("checked", true);
  43632. }
  43633. let monthDayAllCheck = true;
  43634. let $monthDay = $(this).parents(".monthBox").find(".day");
  43635. $monthDay.each(function(i2, e) {
  43636. if ($(e).attr("data-check") == "true") {
  43637. } else {
  43638. monthDayAllCheck = false;
  43639. }
  43640. });
  43641. if (monthDayAllCheck) {
  43642. $(this).parents(".monthBox").find(".month").attr("data-check", "true");
  43643. $(this).parents(".monthBox").find(".month input[type='checkbox']").prop("checked", true);
  43644. } else {
  43645. $(this).parents(".monthBox").find(".month").attr("data-check", "false");
  43646. $(this).parents(".monthBox").find(".month input[type='checkbox']").removeAttr("checked");
  43647. }
  43648. let yearDayAllCheck = true;
  43649. let $yearDay = $(this).parents(".yearBox").find(".day");
  43650. $yearDay.each(function(i2, e) {
  43651. if ($(e).attr("data-check") == "true") {
  43652. } else {
  43653. yearDayAllCheck = false;
  43654. }
  43655. });
  43656. if (yearDayAllCheck) {
  43657. $(this).parents(".yearBox").find(".year").attr("data-check", "true");
  43658. $(this).parents(".yearBox").find(".year input[type='checkbox']").prop("checked", true);
  43659. } else {
  43660. $(this).parents(".yearBox").find(".year").attr("data-check", "false");
  43661. $(this).parents(".yearBox").find(".year input[type='checkbox']").removeAttr("checked");
  43662. }
  43663. });
  43664. $(document).off("click.filterYearDropdown").on("click.filterYearDropdown", "#luckysheet-filter-byvalue-select .yearBox .fa-caret-right", function(event2) {
  43665. let $p = $(this).parents(".luckysheet-mousedown-cancel");
  43666. if ($p.hasClass("year")) {
  43667. $(this).parents(".yearBox").find(".monthList").slideToggle();
  43668. }
  43669. if ($p.hasClass("month")) {
  43670. $(this).parents(".monthBox").find(".dayList").slideToggle();
  43671. }
  43672. event2.stopPropagation();
  43673. });
  43674. $("#luckysheet-filter-byvalue-btn-all").click(function() {
  43675. $("#luckysheet-filter-byvalue-select .ListBox input[type='checkbox']").prop("checked", true);
  43676. $("#luckysheet-filter-byvalue-select .ListBox input[type='checkbox']").parents(".luckysheet-mousedown-cancel").attr("data-check", "true");
  43677. });
  43678. $("#luckysheet-filter-byvalue-btn-clear").click(function() {
  43679. $("#luckysheet-filter-byvalue-select .ListBox input[type='checkbox']").removeAttr("checked");
  43680. $("#luckysheet-filter-byvalue-select .ListBox input[type='checkbox']").parents(".luckysheet-mousedown-cancel").attr("data-check", "false");
  43681. });
  43682. $("#luckysheet-filter-byvalue-btn-contra").click(function() {
  43683. let $input = $("#luckysheet-filter-byvalue-select .ListBox input[type='checkbox']");
  43684. $input.each(function(i2, e) {
  43685. if ($(e).is(":checked")) {
  43686. $(e).removeAttr("checked");
  43687. $(e).parents(".luckysheet-mousedown-cancel").attr("data-check", "false");
  43688. } else {
  43689. $(e).prop("checked", true);
  43690. $(e).parents(".luckysheet-mousedown-cancel").attr("data-check", "true");
  43691. }
  43692. });
  43693. let $month = $("#luckysheet-filter-byvalue-select .ListBox .monthBox");
  43694. $month.each(function(index2, event2) {
  43695. let monthDayAllCheck = true;
  43696. let $monthDay = $(event2).find(".day input[type='checkbox']");
  43697. $monthDay.each(function(i2, e) {
  43698. if ($(e).is(":checked")) {
  43699. } else {
  43700. monthDayAllCheck = false;
  43701. }
  43702. });
  43703. if (monthDayAllCheck) {
  43704. $(event2).find(".month input[type='checkbox']").prop("checked", true);
  43705. $(event2).attr("data-check", "true");
  43706. } else {
  43707. $(event2).find(".month input[type='checkbox']").removeAttr("checked");
  43708. $(event2).attr("data-check", "false");
  43709. }
  43710. });
  43711. let $year = $("#luckysheet-filter-byvalue-select .ListBox .yearBox");
  43712. $year.each(function(index2, event2) {
  43713. let yearDayAllCheck = true;
  43714. let $yearDay = $(event2).find(".day input[type='checkbox']");
  43715. $yearDay.each(function(i2, e) {
  43716. if ($(e).is(":checked")) {
  43717. } else {
  43718. yearDayAllCheck = false;
  43719. }
  43720. });
  43721. if (yearDayAllCheck) {
  43722. $(event2).find(".year input[type='checkbox']").prop("checked", true);
  43723. $(event2).attr("data-check", "true");
  43724. } else {
  43725. $(event2).find(".year input[type='checkbox']").removeAttr("checked");
  43726. $(event2).attr("data-check", "false");
  43727. }
  43728. });
  43729. });
  43730. $("#luckysheet-filter-initial").click(function() {
  43731. if (!checkProtectionAuthorityNormal(store_default.currentSheetIndex, "filter")) {
  43732. return;
  43733. }
  43734. $("#luckysheet-filter-menu .luckysheet-filter-selected-input").hide().find("input").val();
  43735. $("#luckysheet-filter-selected span").data("type", "0").data("type", null).text(locale_filter.conditionNone);
  43736. let redo2 = {};
  43737. redo2["type"] = "datachangeAll_filter_clear";
  43738. redo2["sheetIndex"] = store_default.currentSheetIndex;
  43739. redo2["config"] = $.extend(true, {}, store_default.config);
  43740. store_default.config["rowhidden"] = {};
  43741. redo2["curconfig"] = $.extend(true, {}, store_default.config);
  43742. redo2["filter_save"] = $.extend(true, {}, store_default.luckysheet_filter_save);
  43743. let optiongroups = [];
  43744. $("#luckysheet-filter-options-sheet" + store_default.currentSheetIndex + " .luckysheet-filter-options").each(function() {
  43745. let $t = $(this);
  43746. let optionstate = $t.hasClass("luckysheet-filter-options-active");
  43747. let rowhidden = json_default.parseJsonParm($t.data("rowhidden"));
  43748. let caljs = json_default.parseJsonParm($t.data("caljs"));
  43749. optiongroups.push({
  43750. "optionstate": optionstate,
  43751. "rowhidden": rowhidden,
  43752. "caljs": caljs,
  43753. "str": $t.data("str"),
  43754. "edr": $t.data("edr"),
  43755. "cindex": $t.data("cindex"),
  43756. "stc": $t.data("stc"),
  43757. "edc": $t.data("edc")
  43758. });
  43759. });
  43760. redo2["optiongroups"] = optiongroups;
  43761. store_default.jfundo.length = 0;
  43762. store_default.jfredo.push(redo2);
  43763. $("#luckysheet-filter-selected-sheet" + store_default.currentSheetIndex + ", #luckysheet-filter-options-sheet" + store_default.currentSheetIndex).remove();
  43764. $("#luckysheet-filter-menu, #luckysheet-filter-submenu").hide();
  43765. store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)].filter = null;
  43766. store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)].filter_select = null;
  43767. server_default.saveParam("fsc", store_default.currentSheetIndex, null);
  43768. store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)].config = store_default.config;
  43769. server_default.saveParam("cg", store_default.currentSheetIndex, {}, {"k": "rowhidden"});
  43770. jfrefreshgrid_rhcw(store_default.flowdata.length, store_default.flowdata[0].length);
  43771. });
  43772. $("#luckysheet-filter-byvalue-input").on("input propertychange", function() {
  43773. let v = $(this).val().toString();
  43774. $("#luckysheet-filter-byvalue-select .ListBox .luckysheet-mousedown-cancel").show();
  43775. if (v != "") {
  43776. $("#luckysheet-filter-byvalue-select .ListBox input[type='checkbox']").each(function(i2, e) {
  43777. if ($(e).closest(".day").length > 0) {
  43778. let day = $(e).siblings("label").text().toString();
  43779. let month = $(e).closest(".monthBox").find(".month label").text().toString();
  43780. let year = $(e).closest(".yearBox").find(".year label").text().toString();
  43781. let itemV = year + "-" + month + "-" + day;
  43782. if (itemV.indexOf(v) == -1) {
  43783. $(e).closest(".day").hide();
  43784. let $monthDay = $(e).closest(".dayList").find(".day:visible");
  43785. if ($monthDay.length == 0) {
  43786. $(e).closest(".monthBox").find(".month").hide();
  43787. }
  43788. let $yearDay = $(e).closest(".monthList").find(".day:visible");
  43789. if ($yearDay.length == 0) {
  43790. $(e).closest(".yearBox").find(".year").hide();
  43791. }
  43792. }
  43793. }
  43794. if ($(e).closest(".textBox").length > 0) {
  43795. let itemV = $(e).siblings("label").text().toString();
  43796. if (itemV.indexOf(v) == -1) {
  43797. $(e).parents(".textBox").hide();
  43798. }
  43799. }
  43800. });
  43801. }
  43802. });
  43803. $("#luckysheet-filter-cancel").click(function() {
  43804. $("#luckysheet-filter-menu, #luckysheet-filter-submenu").hide();
  43805. });
  43806. $("#luckysheet-filter-confirm").click(function() {
  43807. let $menu = $("#luckysheet-filter-menu");
  43808. let st_r = $menu.data("str"), ed_r = $menu.data("edr"), cindex = $menu.data("cindex"), st_c = $menu.data("stc"), ed_c = $menu.data("edc");
  43809. let rowhiddenother = {};
  43810. $("#luckysheet-filter-options-sheet" + store_default.currentSheetIndex + " .luckysheet-filter-options").not($("#luckysheet-filter-options-sheet" + store_default.currentSheetIndex + " .luckysheet-filter-options").eq(cindex - st_c).get(0)).each(function() {
  43811. let $t = $(this), rh = $t.data("rowhidden");
  43812. if (rh == "") {
  43813. return true;
  43814. }
  43815. rh = JSON.parse(rh.replace(/\'/g, '"'));
  43816. for (let r2 in rh) {
  43817. rowhiddenother[r2] = 0;
  43818. }
  43819. });
  43820. let filterdata = {};
  43821. let rowhidden = {};
  43822. let caljs = {};
  43823. if ($("#luckysheet-filter-bycondition").next().is(":visible") && $("#luckysheet-filter-byvalue").next().is(":hidden") && $("#luckysheet-filter-selected span").data("value") != "null") {
  43824. let $t = $("#luckysheet-filter-selected span");
  43825. let type = $t.data("type"), value = $t.data("value");
  43826. caljs["value"] = value;
  43827. caljs["text"] = $t.text();
  43828. if (type == "0") {
  43829. caljs["type"] = "0";
  43830. } else if (type == "2") {
  43831. let $input = $("#luckysheet-filter-menu .luckysheet-filter-selected-input2 input");
  43832. caljs["type"] = "2";
  43833. caljs["value1"] = $input.eq(0).val();
  43834. caljs["value2"] = $input.eq(1).val();
  43835. } else {
  43836. caljs["type"] = "1";
  43837. caljs["value1"] = $("#luckysheet-filter-menu .luckysheet-filter-selected-input").eq(0).find("input").val();
  43838. }
  43839. for (let r2 = st_r + 1; r2 <= ed_r; r2++) {
  43840. if (r2 in rowhiddenother) {
  43841. continue;
  43842. }
  43843. if (store_default.flowdata[r2] == null) {
  43844. continue;
  43845. }
  43846. let cell = store_default.flowdata[r2][cindex];
  43847. if (value == "cellnull") {
  43848. if (cell != null && !isRealNull(cell.v)) {
  43849. rowhidden[r2] = 0;
  43850. }
  43851. } else if (value == "cellnonull") {
  43852. if (cell == null || isRealNull(cell.v)) {
  43853. rowhidden[r2] = 0;
  43854. }
  43855. } else if (value == "textinclude") {
  43856. let value1 = caljs["value1"];
  43857. if (cell == null || isRealNull(cell.v)) {
  43858. rowhidden[r2] = 0;
  43859. } else {
  43860. if (cell.m.indexOf(value1) == -1) {
  43861. rowhidden[r2] = 0;
  43862. }
  43863. }
  43864. } else if (value == "textnotinclude") {
  43865. let value1 = caljs["value1"];
  43866. if (cell == null || isRealNull(cell.v)) {
  43867. } else {
  43868. if (cell.m.indexOf(value1) > -1) {
  43869. rowhidden[r2] = 0;
  43870. }
  43871. }
  43872. } else if (value == "textstart") {
  43873. let value1 = caljs["value1"], valuelen = value1.length;
  43874. if (cell == null || isRealNull(cell.v)) {
  43875. rowhidden[r2] = 0;
  43876. } else {
  43877. if (cell.m.substr(0, valuelen) != value1) {
  43878. rowhidden[r2] = 0;
  43879. }
  43880. }
  43881. } else if (value == "textend") {
  43882. let value1 = caljs["value1"], valuelen = value1.length;
  43883. if (cell == null || isRealNull(cell.v)) {
  43884. rowhidden[r2] = 0;
  43885. } else {
  43886. if (valuelen > cell.m.length || cell.m.substr(cell.m.length - valuelen, valuelen) != value1) {
  43887. rowhidden[r2] = 0;
  43888. }
  43889. }
  43890. } else if (value == "textequal") {
  43891. let value1 = caljs["value1"];
  43892. if (cell == null || isRealNull(cell.v)) {
  43893. rowhidden[r2] = 0;
  43894. } else {
  43895. if (cell.m != value1) {
  43896. rowhidden[r2] = 0;
  43897. }
  43898. }
  43899. } else if (value == "dateequal") {
  43900. let value1 = genarate(caljs["value1"])[2];
  43901. if (cell == null || isRealNull(cell.v)) {
  43902. rowhidden[r2] = 0;
  43903. } else if (cell.ct != null && cell.ct.t == "d") {
  43904. if (parseInt(cell.v) != value1) {
  43905. rowhidden[r2] = 0;
  43906. }
  43907. } else {
  43908. rowhidden[r2] = 0;
  43909. }
  43910. } else if (value == "datelessthan") {
  43911. let value1 = genarate(caljs["value1"])[2];
  43912. if (cell == null || isRealNull(cell.v)) {
  43913. rowhidden[r2] = 0;
  43914. } else if (cell.ct != null && cell.ct.t == "d") {
  43915. if (parseInt(cell.v) >= value1) {
  43916. rowhidden[r2] = 0;
  43917. }
  43918. } else {
  43919. rowhidden[r2] = 0;
  43920. }
  43921. } else if (value == "datemorethan") {
  43922. let value1 = genarate(caljs["value1"])[2];
  43923. if (cell == null || isRealNull(cell.v)) {
  43924. rowhidden[r2] = 0;
  43925. } else if (cell.ct != null && cell.ct.t == "d") {
  43926. if (parseInt(cell.v) <= value1) {
  43927. rowhidden[r2] = 0;
  43928. }
  43929. } else {
  43930. rowhidden[r2] = 0;
  43931. }
  43932. } else if (value == "morethan") {
  43933. let value1 = parseFloat(caljs["value1"]);
  43934. if (cell == null || isRealNull(cell.v)) {
  43935. rowhidden[r2] = 0;
  43936. } else if (cell.ct != null && cell.ct.t == "n") {
  43937. if (cell.v <= value1) {
  43938. rowhidden[r2] = 0;
  43939. }
  43940. } else {
  43941. rowhidden[r2] = 0;
  43942. }
  43943. } else if (value == "moreequalthan") {
  43944. let value1 = parseFloat(caljs["value1"]);
  43945. if (cell == null || isRealNull(cell.v)) {
  43946. rowhidden[r2] = 0;
  43947. } else if (cell.ct != null && cell.ct.t == "n") {
  43948. if (cell.v < value1) {
  43949. rowhidden[r2] = 0;
  43950. }
  43951. } else {
  43952. rowhidden[r2] = 0;
  43953. }
  43954. } else if (value == "lessthan") {
  43955. let value1 = parseFloat(caljs["value1"]);
  43956. if (cell == null || isRealNull(cell.v)) {
  43957. rowhidden[r2] = 0;
  43958. } else if (cell.ct != null && cell.ct.t == "n") {
  43959. if (cell.v >= value1) {
  43960. rowhidden[r2] = 0;
  43961. }
  43962. } else {
  43963. rowhidden[r2] = 0;
  43964. }
  43965. } else if (value == "lessequalthan") {
  43966. let value1 = parseFloat(caljs["value1"]);
  43967. if (cell == null || isRealNull(cell.v)) {
  43968. rowhidden[r2] = 0;
  43969. } else if (cell.ct != null && cell.ct.t == "n") {
  43970. if (cell.v > value1) {
  43971. rowhidden[r2] = 0;
  43972. }
  43973. } else {
  43974. rowhidden[r2] = 0;
  43975. }
  43976. } else if (value == "equal") {
  43977. let value1 = parseFloat(caljs["value1"]);
  43978. if (cell == null || isRealNull(cell.v)) {
  43979. rowhidden[r2] = 0;
  43980. } else if (cell.ct != null && cell.ct.t == "n") {
  43981. if (cell.v != value1) {
  43982. rowhidden[r2] = 0;
  43983. }
  43984. } else {
  43985. rowhidden[r2] = 0;
  43986. }
  43987. } else if (value == "noequal") {
  43988. let value1 = parseFloat(caljs["value1"]);
  43989. if (cell == null || isRealNull(cell.v)) {
  43990. rowhidden[r2] = 0;
  43991. } else if (cell.ct != null && cell.ct.t == "n") {
  43992. if (cell.v == value1) {
  43993. rowhidden[r2] = 0;
  43994. }
  43995. } else {
  43996. rowhidden[r2] = 0;
  43997. }
  43998. } else if (value == "include") {
  43999. let value1 = parseFloat(caljs["value1"]), value2 = parseFloat(caljs["value2"]);
  44000. let min, max;
  44001. if (value1 < value2) {
  44002. min = value1;
  44003. max = value2;
  44004. } else {
  44005. max = value1;
  44006. min = value2;
  44007. }
  44008. if (cell == null || isRealNull(cell.v)) {
  44009. rowhidden[r2] = 0;
  44010. } else if (cell.ct != null && cell.ct.t == "n") {
  44011. if (cell.v < min || cell.v > max) {
  44012. rowhidden[r2] = 0;
  44013. }
  44014. } else {
  44015. rowhidden[r2] = 0;
  44016. }
  44017. } else if (value == "noinclude") {
  44018. let value1 = parseFloat(caljs["value1"]), value2 = parseFloat(caljs["value2"]);
  44019. let min, max;
  44020. if (value1 < value2) {
  44021. min = value1;
  44022. max = value2;
  44023. } else {
  44024. max = value1;
  44025. min = value2;
  44026. }
  44027. if (cell == null || isRealNull(cell.v)) {
  44028. rowhidden[r2] = 0;
  44029. } else if (cell.ct != null && cell.ct.t == "n") {
  44030. if (cell.v >= min && cell.v <= max) {
  44031. rowhidden[r2] = 0;
  44032. }
  44033. } else {
  44034. rowhidden[r2] = 0;
  44035. }
  44036. }
  44037. }
  44038. } else {
  44039. $("#luckysheet-filter-byvalue-select .ListBox input[type='checkbox']").each(function(i2, e) {
  44040. if ($(e).is(":visible") && $(e).is(":checked")) {
  44041. return true;
  44042. }
  44043. if ($(e).closest(".day").length > 0) {
  44044. let day = $(e).siblings("label").text();
  44045. if (Number(day) < 10) {
  44046. day = "0" + Number(day);
  44047. }
  44048. let month = $(e).closest(".monthBox").find(".month label").text().replace(locale_filter.filiterMonthText, "");
  44049. if (Number(month) < 10) {
  44050. month = "0" + Number(month);
  44051. }
  44052. let year = $(e).closest(".yearBox").find(".year label").text().replace(locale_filter.filiterYearText, "");
  44053. let itemV = locale_filter.filterDateFormatTip + "#$$$#" + year + "-" + month + "-" + day;
  44054. filterdata[itemV] = "1";
  44055. }
  44056. if ($(e).closest(".textBox").length > 0) {
  44057. let itemV = $(e).closest(".textBox").data("filter");
  44058. filterdata[itemV] = "1";
  44059. }
  44060. });
  44061. for (let r2 = st_r + 1; r2 <= ed_r; r2++) {
  44062. if (r2 in rowhiddenother) {
  44063. continue;
  44064. }
  44065. if (store_default.flowdata[r2] == null) {
  44066. continue;
  44067. }
  44068. let cell = store_default.flowdata[r2][cindex];
  44069. let value;
  44070. if (cell == null || isRealNull(cell.v)) {
  44071. value = "null#$$$#null";
  44072. } else if (cell.ct != null && cell.ct.t == "d") {
  44073. let fmt = update("YYYY-MM-DD", cell.v);
  44074. value = locale_filter.filterDateFormatTip + "#$$$#" + fmt;
  44075. } else {
  44076. value = cell.v + "#$$$#" + cell.m;
  44077. }
  44078. if (value in filterdata) {
  44079. rowhidden[r2] = 0;
  44080. }
  44081. }
  44082. }
  44083. let $top = $("#luckysheet-filter-options-sheet" + store_default.currentSheetIndex + " .luckysheet-filter-options").eq(cindex - st_c);
  44084. let optionstate = $("#luckysheet-filter-byvalue-select .ListBox input[type='checkbox']:visible:checked").length < $("#luckysheet-filter-byvalue-select .ListBox input[type='checkbox']:visible").length || $("#luckysheet-filter-byvalue-input").val().length > 0 || $("#luckysheet-filter-bycondition").next().is(":visible") && $("#luckysheet-filter-byvalue").next().is(":hidden") && $("#luckysheet-filter-selected span").data("value") != "null";
  44085. let rowhiddenall = $.extend(true, rowhiddenother, rowhidden), rowhidenPre = json_default.parseJsonParm($top.data("rowhidden"));
  44086. labelFilterOptionState($top, optionstate, rowhidden, caljs, true, st_r, ed_r, cindex, st_c, ed_c);
  44087. let cfg = $.extend(true, {}, store_default.config);
  44088. cfg["rowhidden"] = rowhiddenall;
  44089. if (store_default.clearjfundo) {
  44090. let redo2 = {};
  44091. redo2["type"] = "datachangeAll_filter";
  44092. redo2["sheetIndex"] = store_default.currentSheetIndex;
  44093. redo2["config"] = $.extend(true, {}, store_default.config);
  44094. redo2["curconfig"] = cfg;
  44095. redo2["optionstate"] = optionstate;
  44096. redo2["optionsindex"] = cindex - st_c;
  44097. redo2["rowhidden"] = $.extend(true, {}, rowhidden);
  44098. redo2["rowhidenPre"] = $.extend(true, {}, rowhidenPre);
  44099. if (caljs != null) {
  44100. redo2["caljs"] = caljs;
  44101. }
  44102. store_default.jfundo.length = 0;
  44103. store_default.jfredo.push(redo2);
  44104. }
  44105. store_default.config = cfg;
  44106. store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)].config = store_default.config;
  44107. server_default.saveParam("cg", store_default.currentSheetIndex, cfg["rowhidden"], {"k": "rowhidden"});
  44108. jfrefreshgrid_rhcw(store_default.flowdata.length, store_default.flowdata[0].length);
  44109. $("#luckysheet-filter-menu, #luckysheet-filter-submenu").hide();
  44110. cleargridelement();
  44111. });
  44112. }
  44113. var init_filter = __esm({
  44114. "src/controllers/filter.js"() {
  44115. init_get();
  44116. init_editor();
  44117. init_validate();
  44118. init_tooltip();
  44119. init_getRowlen();
  44120. init_select();
  44121. init_sheetMove();
  44122. init_constant();
  44123. init_server();
  44124. init_locale();
  44125. init_store();
  44126. init_menuButton();
  44127. init_conditionformat();
  44128. init_alternateformat();
  44129. init_protection();
  44130. init_util();
  44131. init_cleargridelement();
  44132. init_refresh();
  44133. init_sort();
  44134. init_json();
  44135. init_format();
  44136. }
  44137. });
  44138. // src/controllers/imageCtrl.js
  44139. var imageCtrl, imageCtrl_default;
  44140. var init_imageCtrl = __esm({
  44141. "src/controllers/imageCtrl.js"() {
  44142. init_location();
  44143. init_server();
  44144. init_resize();
  44145. init_constant();
  44146. init_protection();
  44147. init_get();
  44148. init_set();
  44149. init_util();
  44150. init_store();
  44151. init_locale();
  44152. init_tooltip();
  44153. init_method();
  44154. imageCtrl = {
  44155. imgItem: {
  44156. type: "3",
  44157. src: "",
  44158. originWidth: null,
  44159. originHeight: null,
  44160. default: {
  44161. width: null,
  44162. height: null,
  44163. left: null,
  44164. top: null
  44165. },
  44166. crop: {
  44167. width: null,
  44168. height: null,
  44169. offsetLeft: 0,
  44170. offsetTop: 0
  44171. },
  44172. isFixedPos: false,
  44173. fixedLeft: null,
  44174. fixedTop: null,
  44175. border: {
  44176. width: 0,
  44177. radius: 0,
  44178. style: "solid",
  44179. color: "#000"
  44180. }
  44181. },
  44182. images: null,
  44183. currentImgId: null,
  44184. currentWinW: null,
  44185. currentWinH: null,
  44186. resize: null,
  44187. resizeXY: null,
  44188. move: false,
  44189. moveXY: null,
  44190. cropChange: null,
  44191. cropChangeXY: null,
  44192. cropChangeObj: null,
  44193. copyImgItemObj: null,
  44194. insertImg: function(file) {
  44195. const uploadImage = store_default.toJsonOptions && store_default.toJsonOptions["uploadImage"];
  44196. if (typeof uploadImage === "function") {
  44197. uploadImage(file).then((url) => {
  44198. imageCtrl._insertImg(url);
  44199. }).catch((error3) => {
  44200. tooltip_default.info('<i class="fa fa-exclamation-triangle"></i>', "\u56FE\u7247\u4E0A\u4F20\u5931\u8D25");
  44201. });
  44202. } else {
  44203. let render = new FileReader();
  44204. render.readAsDataURL(file);
  44205. render.onload = function(event2) {
  44206. let src = event2.target.result;
  44207. imageCtrl._insertImg(src);
  44208. $("#luckysheet-imgUpload").val("");
  44209. };
  44210. }
  44211. },
  44212. _insertImg: function(src) {
  44213. let _this = this;
  44214. let last = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1];
  44215. let rowIndex = last.row_focus || 0;
  44216. let colIndex = last.column_focus || 0;
  44217. let left = colIndex == 0 ? 0 : store_default.visibledatacolumn[colIndex - 1];
  44218. let top = rowIndex == 0 ? 0 : store_default.visibledatarow[rowIndex - 1];
  44219. let image = new Image();
  44220. image.onload = function() {
  44221. let width = image.width, height = image.height;
  44222. let img = {
  44223. src,
  44224. left,
  44225. top,
  44226. originWidth: width,
  44227. originHeight: height
  44228. };
  44229. _this.addImgItem(img);
  44230. };
  44231. let imageUrlHandle = store_default.toJsonOptions && store_default.toJsonOptions["imageUrlHandle"];
  44232. image.src = typeof imageUrlHandle === "function" ? imageUrlHandle(src) : src;
  44233. },
  44234. generateRandomId: function(prefix) {
  44235. if (prefix == null) {
  44236. prefix = "img";
  44237. }
  44238. let userAgent = window.navigator.userAgent.replace(/[^a-zA-Z0-9]/g, "").split("");
  44239. let mid = "";
  44240. for (let i2 = 0; i2 < 12; i2++) {
  44241. mid += userAgent[Math.round(Math.random() * (userAgent.length - 1))];
  44242. }
  44243. let time = new Date().getTime();
  44244. return prefix + "_" + mid + "_" + time;
  44245. },
  44246. modelHtml: function(id, imgItem) {
  44247. let _this = this;
  44248. let imageUrlHandle = store_default.toJsonOptions && store_default.toJsonOptions["imageUrlHandle"];
  44249. let src = typeof imageUrlHandle === "function" ? imageUrlHandle(imgItem.src) : imgItem.src;
  44250. let imgItemParam = _this.getImgItemParam(imgItem);
  44251. let width = imgItemParam.width * store_default.zoomRatio;
  44252. let height = imgItemParam.height * store_default.zoomRatio;
  44253. let left = imgItemParam.left * store_default.zoomRatio;
  44254. let top = imgItemParam.top * store_default.zoomRatio;
  44255. let position = imgItemParam.position;
  44256. let borderWidth = imgItem.border.width;
  44257. return `<div id="${id}" class="luckysheet-modal-dialog luckysheet-modal-dialog-image" style="width:${width}px;height:${height}px;padding:0;position:${position};left:${left}px;top:${top}px;z-index:200;">
  44258. <div class="luckysheet-modal-dialog-content" style="width:100%;height:100%;overflow:hidden;position:relative;">
  44259. <img src="${src}" style="position:absolute;width:${imgItem.default.width * store_default.zoomRatio}px;height:${imgItem.default.height * store_default.zoomRatio}px;left:${-imgItem.crop.offsetLeft * store_default.zoomRatio}px;top:${-imgItem.crop.offsetTop * store_default.zoomRatio}px;" />
  44260. </div>
  44261. <div class="luckysheet-modal-dialog-border" style="border:${borderWidth}px ${imgItem.border.style} ${imgItem.border.color};border-radius:${imgItem.border.radius * store_default.zoomRatio}px;position:absolute;left:${-borderWidth}px;right:${-borderWidth}px;top:${-borderWidth}px;bottom:${-borderWidth}px;"></div>
  44262. </div>`;
  44263. },
  44264. getSliderHtml: function() {
  44265. let imageText = locale_default().imageText;
  44266. return `<div id="luckysheet-modal-dialog-slider-imageCtrl" class="luckysheet-modal-dialog-slider luckysheet-modal-dialog-slider-imageCtrl" style="display:block;">
  44267. <div class="luckysheet-modal-dialog-slider-title">
  44268. <span>${imageText.imageSetting}</span>
  44269. <span class="luckysheet-model-close-btn" title="${imageText.close}">
  44270. <i class="fa fa-times" aria-hidden="true"></i>
  44271. </span>
  44272. </div>
  44273. <div class="luckysheet-modal-dialog-slider-content">
  44274. <div class="slider-box">
  44275. <div class="slider-box-title">${imageText.conventional}</div>
  44276. <div class="slider-box-radios">
  44277. <div class="radio-item">
  44278. <input type="radio" id="imgItemType1" name="imgItemType" value="1">
  44279. <label for="imgItemType1">${imageText.moveCell1}</label>
  44280. </div>
  44281. <div class="radio-item">
  44282. <input type="radio" id="imgItemType2" name="imgItemType" value="2">
  44283. <label for="imgItemType2">${imageText.moveCell2}</label>
  44284. </div>
  44285. <div class="radio-item">
  44286. <input type="radio" id="imgItemType3" name="imgItemType" value="3">
  44287. <label for="imgItemType3">${imageText.moveCell3}</label>
  44288. </div>
  44289. </div>
  44290. <div class="slider-box-checkbox">
  44291. <input type="checkbox" id="imgItemIsFixedPos">
  44292. <label for="imgItemIsFixedPos">${imageText.fixedPos}</label>
  44293. </div>
  44294. </div>
  44295. <div class="slider-box">
  44296. <div class="slider-box-title">${imageText.border}</div>
  44297. <div class="slider-box-borderConfig">
  44298. <div class="border-item">
  44299. <label>${imageText.width}</label>
  44300. <input type="number" id="imgItemBorderWidth" min="0">
  44301. </div>
  44302. <div class="border-item">
  44303. <label>${imageText.radius}</label>
  44304. <input type="number" id="imgItemBorderRadius" min="0">
  44305. </div>
  44306. <div class="border-item">
  44307. <label>${imageText.style}</label>
  44308. <select id="imgItemBorderStyle">
  44309. <option value="solid">${imageText.solid}</option>
  44310. <option value="dashed">${imageText.dashed}</option>
  44311. <option value="dotted">${imageText.dotted}</option>
  44312. <option value="double">${imageText.double}</option>
  44313. </select>
  44314. </div>
  44315. <div class="border-item">
  44316. <label>${imageText.color}</label>
  44317. <div id="imgItemBorderColor" class="imgItemBorderColor">
  44318. <span></span>
  44319. </div>
  44320. </div>
  44321. </div>
  44322. </div>
  44323. </div>
  44324. </div>`;
  44325. },
  44326. sliderHtmlShow: function() {
  44327. let _this = this;
  44328. $("#luckysheet-modal-dialog-slider-imageCtrl").remove();
  44329. let sliderHtml = _this.getSliderHtml();
  44330. $("body").append(sliderHtml);
  44331. luckysheetsizeauto();
  44332. let imgItem = _this.images[_this.currentImgId];
  44333. let type = imgItem.type;
  44334. $("#luckysheet-modal-dialog-slider-imageCtrl #imgItemType" + type).prop("checked", true);
  44335. let isFixedPos = imgItem.isFixedPos;
  44336. $("#luckysheet-modal-dialog-slider-imageCtrl #imgItemIsFixedPos").prop("checked", isFixedPos);
  44337. let border = imgItem.border;
  44338. $("#luckysheet-modal-dialog-slider-imageCtrl #imgItemBorderWidth").val(border.width);
  44339. $("#luckysheet-modal-dialog-slider-imageCtrl #imgItemBorderRadius").val(border.radius);
  44340. $("#luckysheet-modal-dialog-slider-imageCtrl #imgItemBorderStyle").val(border.style);
  44341. $("#luckysheet-modal-dialog-slider-imageCtrl #imgItemBorderColor span").css("background-color", border.color).attr("title", border.color);
  44342. _this.init();
  44343. },
  44344. colorSelectDialog: function(currenColor) {
  44345. const _locale = locale_default();
  44346. const locale_button = _locale.button;
  44347. const locale_toolbar = _locale.toolbar;
  44348. const locale_imageCtrl = _locale.imageCtrl;
  44349. $("#luckysheet-modal-dialog-mask").show();
  44350. $("#luckysheet-imageCtrl-colorSelect-dialog").remove();
  44351. $("body").append(replaceHtml(modelHTML, {
  44352. "id": "luckysheet-imageCtrl-colorSelect-dialog",
  44353. "addclass": "luckysheet-imageCtrl-colorSelect-dialog",
  44354. "title": locale_imageCtrl.borderTile,
  44355. "content": `<div class="currenColor">
  44356. ${locale_imageCtrl.borderCur}:<span title="${currenColor}" style="background-color:${currenColor}"></span>
  44357. </div>
  44358. <div class="colorshowbox"></div>`,
  44359. "botton": `<button id="luckysheet-imageCtrl-colorSelect-dialog-confirm" class="btn btn-primary">${locale_button.confirm}</button>
  44360. <button class="btn btn-default luckysheet-model-close-btn">${locale_button.cancel}</button>`,
  44361. "style": "z-index:100003"
  44362. }));
  44363. let $t = $("#luckysheet-imageCtrl-colorSelect-dialog").find(".luckysheet-modal-dialog-content").css("min-width", 300).end(), myh = $t.outerHeight(), myw = $t.outerWidth();
  44364. let winw = $(window).width(), winh = $(window).height();
  44365. let scrollLeft = $(document).scrollLeft(), scrollTop = $(document).scrollTop();
  44366. $("#luckysheet-imageCtrl-colorSelect-dialog").css({
  44367. "left": (winw + scrollLeft - myw) / 2,
  44368. "top": (winh + scrollTop - myh) / 3
  44369. }).show();
  44370. $("#luckysheet-imageCtrl-colorSelect-dialog").find(".colorshowbox").spectrum({
  44371. showPalette: true,
  44372. showPaletteOnly: true,
  44373. preferredFormat: "hex",
  44374. clickoutFiresChange: false,
  44375. showInitial: true,
  44376. showInput: true,
  44377. flat: true,
  44378. hideAfterPaletteSelect: true,
  44379. showSelectionPalette: true,
  44380. showButtons: false,
  44381. maxPaletteSize: 8,
  44382. maxSelectionSize: 8,
  44383. color: currenColor,
  44384. cancelText: locale_button.cancel,
  44385. chooseText: locale_toolbar.confirmColor,
  44386. togglePaletteMoreText: locale_toolbar.customColor,
  44387. togglePaletteLessText: locale_toolbar.collapse,
  44388. togglePaletteOnly: true,
  44389. clearText: locale_toolbar.clearText,
  44390. noColorSelectedText: locale_toolbar.noColorSelectedText,
  44391. localStorageKey: "spectrum.textcolor" + server_default.gridKey,
  44392. palette: [
  44393. ["#000", "#444", "#666", "#999", "#ccc", "#eee", "#f3f3f3", "#fff"],
  44394. ["#f00", "#f90", "#ff0", "#0f0", "#0ff", "#00f", "#90f", "#f0f"],
  44395. ["#f4cccc", "#fce5cd", "#fff2cc", "#d9ead3", "#d0e0e3", "#cfe2f3", "#d9d2e9", "#ead1dc"],
  44396. ["#ea9999", "#f9cb9c", "#ffe599", "#b6d7a8", "#a2c4c9", "#9fc5e8", "#b4a7d6", "#d5a6bd"],
  44397. ["#e06666", "#f6b26b", "#ffd966", "#93c47d", "#76a5af", "#6fa8dc", "#8e7cc3", "#c27ba0"],
  44398. ["#c00", "#e69138", "#f1c232", "#6aa84f", "#45818e", "#3d85c6", "#674ea7", "#a64d79"],
  44399. ["#900", "#b45f06", "#bf9000", "#38761d", "#134f5c", "#0b5394", "#351c75", "#741b47"],
  44400. ["#600", "#783f04", "#7f6000", "#274e13", "#0c343d", "#073763", "#20124d", "#4c1130"]
  44401. ],
  44402. move: function(color) {
  44403. if (color != null) {
  44404. color = color.toHexString();
  44405. } else {
  44406. color = "#000";
  44407. }
  44408. $("#luckysheet-imageCtrl-colorSelect-dialog .currenColor span").css("background-color", color).attr("title", color);
  44409. }
  44410. });
  44411. },
  44412. init: function() {
  44413. let _this = this;
  44414. $("#luckysheet-modal-dialog-slider-imageCtrl .luckysheet-model-close-btn").click(function() {
  44415. $("#luckysheet-modal-dialog-slider-imageCtrl").hide();
  44416. luckysheetsizeauto();
  44417. });
  44418. $("#luckysheet-modal-dialog-slider-imageCtrl").off("change.radio").on("change.radio", ".radio-item input[type=radio][name=imgItemType]", function() {
  44419. _this.configChange("type", this.value);
  44420. });
  44421. $("#luckysheet-modal-dialog-slider-imageCtrl").off("change.checkbox").on("change.checkbox", ".slider-box-checkbox input[type=checkbox]", function() {
  44422. _this.configChange("fixedPos", this.checked);
  44423. });
  44424. $("#luckysheet-modal-dialog-slider-imageCtrl").off("change.borderWidth").on("change.borderWidth", "#imgItemBorderWidth", function() {
  44425. _this.configChange("border-width", this.valueAsNumber);
  44426. });
  44427. $("#luckysheet-modal-dialog-slider-imageCtrl").off("change.borderRadius").on("change.borderRadius", "#imgItemBorderRadius", function() {
  44428. _this.configChange("border-radius", this.valueAsNumber);
  44429. });
  44430. $("#luckysheet-modal-dialog-slider-imageCtrl").off("change.borderStyle").on("change.borderStyle", "#imgItemBorderStyle", function() {
  44431. _this.configChange("border-style", this.value);
  44432. });
  44433. $("#luckysheet-modal-dialog-slider-imageCtrl").off("click.color").on("click.color", "#imgItemBorderColor", function() {
  44434. let currenColor = $(this).find("span").attr("title");
  44435. _this.colorSelectDialog(currenColor);
  44436. });
  44437. $(document).off("click.selectColorConfirm").on("click.selectColorConfirm", "#luckysheet-imageCtrl-colorSelect-dialog-confirm", function() {
  44438. let $parent = $(this).parents("#luckysheet-imageCtrl-colorSelect-dialog");
  44439. $("#luckysheet-modal-dialog-mask").hide();
  44440. $parent.hide();
  44441. let currenColor = $parent.find(".currenColor span").attr("title");
  44442. $("#luckysheet-modal-dialog-slider-imageCtrl #imgItemBorderColor span").css("background-color", currenColor).attr("title", currenColor);
  44443. _this.configChange("border-color", currenColor);
  44444. });
  44445. $("#luckysheet-image-showBoxs").off("mousedown.active").on("mousedown.active", ".luckysheet-modal-dialog-image", function(e) {
  44446. if (!checkProtectionAuthorityNormal(store_default.currentSheetIndex, "editObjects", false)) {
  44447. return;
  44448. }
  44449. $(this).hide();
  44450. let id = $(this).attr("id");
  44451. if (_this.currentImgId != null && _this.currentImgId != id) {
  44452. _this.cancelActiveImgItem();
  44453. }
  44454. _this.currentImgId = id;
  44455. let item2 = _this.images[id];
  44456. let imgItemParam = _this.getImgItemParam(item2);
  44457. let width = imgItemParam.width * store_default.zoomRatio;
  44458. let height = imgItemParam.height * store_default.zoomRatio;
  44459. let left = imgItemParam.left * store_default.zoomRatio;
  44460. let top = imgItemParam.top * store_default.zoomRatio;
  44461. let position = imgItemParam.position;
  44462. $("#luckysheet-modal-dialog-activeImage").show().css({
  44463. "width": width,
  44464. "height": height,
  44465. "left": left,
  44466. "top": top,
  44467. "position": position
  44468. });
  44469. let imageUrlHandle = store_default.toJsonOptions && store_default.toJsonOptions["imageUrlHandle"];
  44470. let imgUrl = typeof imageUrlHandle === "function" ? imageUrlHandle(item2.src) : item2.src;
  44471. $("#luckysheet-modal-dialog-activeImage .luckysheet-modal-dialog-content").css({
  44472. "background-image": "url(" + imgUrl + ")",
  44473. "background-size": item2.default.width * store_default.zoomRatio + "px " + item2.default.height * store_default.zoomRatio + "px",
  44474. "background-position": -item2.crop.offsetLeft * store_default.zoomRatio + "px " + -item2.crop.offsetTop * store_default.zoomRatio + "px"
  44475. });
  44476. $("#luckysheet-modal-dialog-activeImage .luckysheet-modal-dialog-border").css({
  44477. "border-width": item2.border.width * store_default.zoomRatio,
  44478. "border-style": item2.border.style,
  44479. "border-color": item2.border.color,
  44480. "border-radius": item2.border.radius * store_default.zoomRatio,
  44481. "left": -item2.border.width * store_default.zoomRatio,
  44482. "right": -item2.border.width * store_default.zoomRatio,
  44483. "top": -item2.border.width * store_default.zoomRatio,
  44484. "bottom": -item2.border.width * store_default.zoomRatio
  44485. });
  44486. _this.sliderHtmlShow();
  44487. e.stopPropagation();
  44488. });
  44489. $("#luckysheet-modal-dialog-activeImage").off("mousedown.move").on("mousedown.move", ".luckysheet-modal-dialog-content", function(e) {
  44490. if (!checkProtectionAuthorityNormal(store_default.currentSheetIndex, "editObjects", false)) {
  44491. return;
  44492. }
  44493. if (!$("#luckysheet-modal-dialog-slider-imageCtrl").is(":visible")) {
  44494. _this.sliderHtmlShow();
  44495. }
  44496. _this.move = true;
  44497. _this.currentWinW = $("#luckysheet-cell-main")[0].scrollWidth;
  44498. _this.currentWinH = $("#luckysheet-cell-main")[0].scrollHeight;
  44499. let offset = $("#luckysheet-modal-dialog-activeImage").offset();
  44500. _this.moveXY = [
  44501. e.pageX - offset.left,
  44502. e.pageY - offset.top
  44503. ];
  44504. setluckysheet_scroll_status(true);
  44505. e.stopPropagation();
  44506. });
  44507. $("#luckysheet-modal-dialog-activeImage").off("mousedown.resize").on("mousedown.resize", ".luckysheet-modal-dialog-resize-item", function(e) {
  44508. if (!checkProtectionAuthorityNormal(store_default.currentSheetIndex, "editObjects", false)) {
  44509. return;
  44510. }
  44511. _this.currentWinW = $("#luckysheet-cell-main")[0].scrollWidth;
  44512. _this.currentWinH = $("#luckysheet-cell-main")[0].scrollHeight;
  44513. _this.resize = $(this).data("type");
  44514. let scrollTop = $("#luckysheet-cell-main").scrollTop(), scrollLeft = $("#luckysheet-cell-main").scrollLeft();
  44515. let mouse = mouseposition(e.pageX, e.pageY);
  44516. let x = mouse[0] + scrollLeft;
  44517. let y = mouse[1] + scrollTop;
  44518. let position = $("#luckysheet-modal-dialog-activeImage").position();
  44519. let width = $("#luckysheet-modal-dialog-activeImage").width();
  44520. let height = $("#luckysheet-modal-dialog-activeImage").height();
  44521. _this.resizeXY = [
  44522. x,
  44523. y,
  44524. width,
  44525. height,
  44526. position.left + scrollLeft,
  44527. position.top + scrollTop,
  44528. scrollLeft,
  44529. scrollTop
  44530. ];
  44531. setluckysheet_scroll_status(true);
  44532. e.stopPropagation();
  44533. });
  44534. $("#luckysheet-modal-dialog-activeImage").off("mousedown.croppingEnter").on("mousedown.croppingEnter", ".luckysheet-modal-controll-crop", function(e) {
  44535. _this.croppingEnter();
  44536. e.stopPropagation();
  44537. });
  44538. $("#luckysheet-modal-dialog-cropping").off("mousedown.croppingExit").on("mousedown.croppingExit", ".luckysheet-modal-controll-crop", function(e) {
  44539. _this.croppingExit();
  44540. e.stopPropagation();
  44541. });
  44542. $("#luckysheet-modal-dialog-cropping").off("mousedown.cropChange").on("mousedown.cropChange", ".resize-item", function(e) {
  44543. _this.cropChange = $(this).data("type");
  44544. let scrollTop = $("#luckysheet-cell-main").scrollTop(), scrollLeft = $("#luckysheet-cell-main").scrollLeft();
  44545. let mouse = mouseposition(e.pageX, e.pageY);
  44546. let x = mouse[0] + scrollLeft;
  44547. let y = mouse[1] + scrollTop;
  44548. _this.cropChangeXY = [
  44549. x,
  44550. y
  44551. ];
  44552. setluckysheet_scroll_status(true);
  44553. e.stopPropagation();
  44554. });
  44555. $("#luckysheet-image-showBoxs").off("mousedown.restore").on("mousedown.restore", ".luckysheet-modal-controll-restore", function(e) {
  44556. _this.restoreImgItem();
  44557. e.stopPropagation();
  44558. });
  44559. $("#luckysheet-image-showBoxs").off("mousedown.delete").on("mousedown.delete", ".luckysheet-modal-controll-del", function(e) {
  44560. _this.removeImgItem();
  44561. e.stopPropagation();
  44562. });
  44563. },
  44564. configChange: function(type, value) {
  44565. let _this = this;
  44566. let imgItem = _this.images[_this.currentImgId];
  44567. switch (type) {
  44568. case "type":
  44569. imgItem.type = value;
  44570. break;
  44571. case "fixedPos":
  44572. imgItem.isFixedPos = value;
  44573. let imgItemParam = _this.getImgItemParam(imgItem);
  44574. let width = imgItemParam.width;
  44575. let height = imgItemParam.height;
  44576. let left = imgItemParam.left;
  44577. let top = imgItemParam.top;
  44578. let position = imgItemParam.position;
  44579. $("#luckysheet-modal-dialog-activeImage").show().css({
  44580. "width": width,
  44581. "height": height,
  44582. "left": left,
  44583. "top": top,
  44584. "position": position
  44585. });
  44586. break;
  44587. case "border-width":
  44588. imgItem.border.width = value;
  44589. $("#luckysheet-modal-dialog-activeImage .luckysheet-modal-dialog-border").css({
  44590. "border-width": value,
  44591. "left": -value,
  44592. "right": -value,
  44593. "top": -value,
  44594. "bottom": -value
  44595. });
  44596. break;
  44597. case "border-radius":
  44598. imgItem.border.radius = value;
  44599. $("#luckysheet-modal-dialog-activeImage .luckysheet-modal-dialog-border").css("border-radius", value);
  44600. break;
  44601. case "border-style":
  44602. imgItem.border.style = value;
  44603. $("#luckysheet-modal-dialog-activeImage .luckysheet-modal-dialog-border").css("border-style", value);
  44604. break;
  44605. case "border-color":
  44606. imgItem.border.color = value;
  44607. $("#luckysheet-modal-dialog-activeImage .luckysheet-modal-dialog-border").css("border-color", value);
  44608. break;
  44609. }
  44610. _this.ref();
  44611. },
  44612. getImgItemParam(imgItem) {
  44613. let isFixedPos = imgItem.isFixedPos;
  44614. let width = imgItem.default.width, height = imgItem.default.height, left = imgItem.default.left, top = imgItem.default.top;
  44615. if (imgItem.crop.width != width || imgItem.crop.height != height) {
  44616. width = imgItem.crop.width;
  44617. height = imgItem.crop.height;
  44618. left += imgItem.crop.offsetLeft;
  44619. top += imgItem.crop.offsetTop;
  44620. }
  44621. let position = "absolute";
  44622. if (isFixedPos) {
  44623. position = "fixed";
  44624. left = imgItem.fixedLeft + imgItem.crop.offsetLeft;
  44625. top = imgItem.fixedTop + imgItem.crop.offsetTop;
  44626. }
  44627. return {
  44628. width,
  44629. height,
  44630. left,
  44631. top,
  44632. position
  44633. };
  44634. },
  44635. cancelActiveImgItem: function() {
  44636. let _this = this;
  44637. $("#luckysheet-modal-dialog-activeImage").hide();
  44638. $("#luckysheet-modal-dialog-cropping").hide();
  44639. $("#luckysheet-modal-dialog-slider-imageCtrl").hide();
  44640. let imgItem = _this.images[_this.currentImgId];
  44641. let imgItemParam = _this.getImgItemParam(imgItem);
  44642. let width = imgItemParam.width * store_default.zoomRatio;
  44643. let height = imgItemParam.height * store_default.zoomRatio;
  44644. let left = imgItemParam.left * store_default.zoomRatio;
  44645. let top = imgItemParam.top * store_default.zoomRatio;
  44646. let position = imgItemParam.position;
  44647. $("#" + _this.currentImgId).show().css({
  44648. "width": width,
  44649. "height": height,
  44650. "left": left,
  44651. "top": top,
  44652. "position": position
  44653. });
  44654. $("#" + _this.currentImgId + " img").css({
  44655. "width": imgItem.default.width * store_default.zoomRatio,
  44656. "height": imgItem.default.height * store_default.zoomRatio,
  44657. "left": -imgItem.crop.offsetLeft * store_default.zoomRatio,
  44658. "top": -imgItem.crop.offsetTop * store_default.zoomRatio
  44659. });
  44660. $("#" + _this.currentImgId + " .luckysheet-modal-dialog-border").css({
  44661. "border-width": imgItem.border.width * store_default.zoomRatio,
  44662. "border-style": imgItem.border.style,
  44663. "border-color": imgItem.border.color,
  44664. "border-radius": imgItem.border.radius * store_default.zoomRatio,
  44665. "left": -imgItem.border.width * store_default.zoomRatio,
  44666. "right": -imgItem.border.width * store_default.zoomRatio,
  44667. "top": -imgItem.border.width * store_default.zoomRatio,
  44668. "bottom": -imgItem.border.width * store_default.zoomRatio
  44669. });
  44670. _this.currentImgId = null;
  44671. },
  44672. addImgItem: function(img) {
  44673. let _this = this;
  44674. let width, height;
  44675. let max = 400;
  44676. if (img.originHeight < img.originWidth) {
  44677. height = Math.round(img.originHeight * (max / img.originWidth));
  44678. width = max;
  44679. } else {
  44680. width = Math.round(img.originWidth * (max / img.originHeight));
  44681. height = max;
  44682. }
  44683. if (_this.images == null) {
  44684. _this.images = {};
  44685. }
  44686. let imgItem = $.extend(true, {}, _this.imgItem);
  44687. imgItem.src = img.src;
  44688. imgItem.originWidth = img.originWidth;
  44689. imgItem.originHeight = img.originHeight;
  44690. imgItem.default.width = width;
  44691. imgItem.default.height = height;
  44692. imgItem.default.left = img.left;
  44693. imgItem.default.top = img.top;
  44694. imgItem.crop.width = width;
  44695. imgItem.crop.height = height;
  44696. let scrollTop = $("#luckysheet-cell-main").scrollTop(), scrollLeft = $("#luckysheet-cell-main").scrollLeft();
  44697. imgItem.fixedLeft = img.left - scrollLeft + store_default.rowHeaderWidth;
  44698. imgItem.fixedTop = img.top - scrollTop + store_default.infobarHeight + store_default.toolbarHeight + store_default.calculatebarHeight + store_default.columnHeaderHeight;
  44699. let id = _this.generateRandomId();
  44700. let modelHtml = _this.modelHtml(id, imgItem);
  44701. $("#luckysheet-image-showBoxs .img-list").append(modelHtml);
  44702. _this.images[id] = imgItem;
  44703. _this.ref();
  44704. _this.init();
  44705. },
  44706. moveImgItem: function() {
  44707. let _this = this;
  44708. _this.move = false;
  44709. let obj = $("#luckysheet-modal-dialog-activeImage")[0];
  44710. let item2 = _this.images[_this.currentImgId];
  44711. if (item2.isFixedPos) {
  44712. item2.fixedLeft = obj.offsetLeft - item2.crop.offsetLeft;
  44713. item2.fixedTop = obj.offsetTop - item2.crop.offsetTop;
  44714. } else {
  44715. item2.default.left = obj.offsetLeft - item2.crop.offsetLeft;
  44716. item2.default.top = obj.offsetTop - item2.crop.offsetTop;
  44717. }
  44718. _this.ref();
  44719. },
  44720. resizeImgItem: function() {
  44721. let _this = this;
  44722. _this.resize = null;
  44723. let obj = $("#luckysheet-modal-dialog-activeImage")[0];
  44724. let item2 = _this.images[_this.currentImgId];
  44725. let scaleX = obj.clientWidth / item2.crop.width;
  44726. let scaleY = obj.clientHeight / item2.crop.height;
  44727. item2.default.width = Math.round(item2.default.width * scaleX);
  44728. item2.default.height = Math.round(item2.default.height * scaleY);
  44729. item2.crop.width = Math.round(item2.crop.width * scaleX);
  44730. item2.crop.height = Math.round(item2.crop.height * scaleY);
  44731. item2.crop.offsetLeft = Math.round(item2.crop.offsetLeft * scaleX);
  44732. item2.crop.offsetTop = Math.round(item2.crop.offsetTop * scaleY);
  44733. if (item2.isFixedPos) {
  44734. item2.fixedLeft = obj.offsetLeft;
  44735. item2.fixedTop = obj.offsetTop;
  44736. } else {
  44737. item2.default.left = obj.offsetLeft - item2.crop.offsetLeft;
  44738. item2.default.top = obj.offsetTop - item2.crop.offsetTop;
  44739. }
  44740. _this.ref();
  44741. },
  44742. croppingEnter: function() {
  44743. let _this = this;
  44744. _this.cropping = true;
  44745. if (!checkProtectionAuthorityNormal(store_default.currentSheetIndex, "editObjects", false)) {
  44746. return;
  44747. }
  44748. $("#luckysheet-modal-dialog-activeImage").hide();
  44749. $("#luckysheet-modal-dialog-slider-imageCtrl").hide();
  44750. let item2 = _this.images[_this.currentImgId];
  44751. let imgItemParam = _this.getImgItemParam(item2);
  44752. let width = imgItemParam.width;
  44753. let height = imgItemParam.height;
  44754. let left = imgItemParam.left;
  44755. let top = imgItemParam.top;
  44756. let position = imgItemParam.position;
  44757. $("#luckysheet-modal-dialog-cropping").show().css({
  44758. "width": width,
  44759. "height": height,
  44760. "left": left,
  44761. "top": top,
  44762. "position": position
  44763. });
  44764. let imageUrlHandle = store_default.toJsonOptions && store_default.toJsonOptions["imageUrlHandle"];
  44765. let imgSrc = typeof imageUrlHandle === "function" ? imageUrlHandle(item2.src) : item2.src;
  44766. $("#luckysheet-modal-dialog-cropping .cropping-mask").css({
  44767. "width": item2.default.width,
  44768. "height": item2.default.height,
  44769. "background-image": "url(" + imgSrc + ")",
  44770. "left": -item2.crop.offsetLeft,
  44771. "top": -item2.crop.offsetTop
  44772. });
  44773. $("#luckysheet-modal-dialog-cropping .cropping-content").css({
  44774. "background-image": "url(" + imgSrc + ")",
  44775. "background-size": item2.default.width + "px " + item2.default.height + "px",
  44776. "background-position": -item2.crop.offsetLeft + "px " + -item2.crop.offsetTop + "px"
  44777. });
  44778. $("#luckysheet-modal-dialog-cropping .luckysheet-modal-dialog-border").css({
  44779. "border-width": item2.border.width,
  44780. "border-style": item2.border.style,
  44781. "border-color": item2.border.color,
  44782. "border-radius": item2.border.radius,
  44783. "left": -item2.border.width,
  44784. "right": -item2.border.width,
  44785. "top": -item2.border.width,
  44786. "bottom": -item2.border.width
  44787. });
  44788. },
  44789. croppingExit: function() {
  44790. let _this = this;
  44791. _this.cropping = false;
  44792. $("#luckysheet-modal-dialog-cropping").hide();
  44793. let item2 = _this.images[_this.currentImgId];
  44794. let imgItemParam = _this.getImgItemParam(item2);
  44795. let width = imgItemParam.width;
  44796. let height = imgItemParam.height;
  44797. let left = imgItemParam.left;
  44798. let top = imgItemParam.top;
  44799. let position = imgItemParam.position;
  44800. $("#luckysheet-modal-dialog-activeImage").show().css({
  44801. "width": width,
  44802. "height": height,
  44803. "left": left,
  44804. "top": top,
  44805. "position": position
  44806. });
  44807. let imageUrlHandle = store_default.toJsonOptions && store_default.toJsonOptions["imageUrlHandle"];
  44808. let imgSrc = typeof imageUrlHandle === "function" ? imageUrlHandle(item2.src) : item2.src;
  44809. $("#luckysheet-modal-dialog-activeImage .luckysheet-modal-dialog-content").css({
  44810. "background-image": "url(" + imgSrc + ")",
  44811. "background-size": item2.default.width + "px " + item2.default.height + "px",
  44812. "background-position": -item2.crop.offsetLeft + "px " + -item2.crop.offsetTop + "px"
  44813. });
  44814. },
  44815. cropChangeImgItem: function() {
  44816. let _this = this;
  44817. _this.cropChange = null;
  44818. let item2 = _this.images[_this.currentImgId];
  44819. item2.crop.width = _this.cropChangeObj.width;
  44820. item2.crop.height = _this.cropChangeObj.height;
  44821. item2.crop.offsetLeft = _this.cropChangeObj.offsetLeft;
  44822. item2.crop.offsetTop = _this.cropChangeObj.offsetTop;
  44823. _this.ref();
  44824. },
  44825. restoreImgItem: function() {
  44826. let _this = this;
  44827. let imgItem = _this.images[_this.currentImgId];
  44828. imgItem.default.width = imgItem.originWidth;
  44829. imgItem.default.height = imgItem.originHeight;
  44830. imgItem.crop.width = imgItem.originWidth;
  44831. imgItem.crop.height = imgItem.originHeight;
  44832. imgItem.crop.offsetLeft = 0;
  44833. imgItem.crop.offsetTop = 0;
  44834. let imgItemParam = _this.getImgItemParam(imgItem);
  44835. let width = imgItemParam.width;
  44836. let height = imgItemParam.height;
  44837. let left = imgItemParam.left;
  44838. let top = imgItemParam.top;
  44839. let position = imgItemParam.position;
  44840. $("#luckysheet-modal-dialog-activeImage").show().css({
  44841. "width": width,
  44842. "height": height,
  44843. "left": left,
  44844. "top": top,
  44845. "position": position
  44846. });
  44847. let imageUrlHandle = store_default.toJsonOptions && store_default.toJsonOptions["imageUrlHandle"];
  44848. let imgSrc = typeof imageUrlHandle === "function" ? imageUrlHandle(imgItem.src) : imgItem.src;
  44849. $("#luckysheet-modal-dialog-activeImage .luckysheet-modal-dialog-content").css({
  44850. "background-image": "url(" + imgSrc + ")",
  44851. "background-size": imgItem.default.width + "px " + imgItem.default.height + "px",
  44852. "background-position": -imgItem.crop.offsetLeft + "px " + -imgItem.crop.offsetTop + "px"
  44853. });
  44854. _this.ref();
  44855. },
  44856. removeImgItem: function() {
  44857. let _this = this;
  44858. let imgItem = _this.images[_this.currentImgId];
  44859. if (!method_default.createHookFunction("imageDeleteBefore", imgItem)) {
  44860. return;
  44861. }
  44862. $("#luckysheet-modal-dialog-activeImage").hide();
  44863. $("#luckysheet-modal-dialog-cropping").hide();
  44864. $("#luckysheet-modal-dialog-slider-imageCtrl").hide();
  44865. $("#" + _this.currentImgId).remove();
  44866. delete _this.images[_this.currentImgId];
  44867. _this.currentImgId = null;
  44868. method_default.createHookFunction("imageDeleteAfter", imgItem);
  44869. _this.ref();
  44870. },
  44871. copyImgItem: function(e) {
  44872. let _this = this;
  44873. _this.copyImgItemObj = $.extend(true, {}, _this.images[_this.currentImgId]);
  44874. let clipboardData = window.clipboardData;
  44875. if (!clipboardData) {
  44876. clipboardData = e.originalEvent.clipboardData;
  44877. }
  44878. let cpdata = '<table data-type="luckysheet_copy_action_image"><tr><td><td></tr></table>';
  44879. if (!clipboardData) {
  44880. let textarea = $("#luckysheet-copy-content");
  44881. textarea.html(cpdata);
  44882. textarea.focus();
  44883. textarea.select();
  44884. document.execCommand("selectAll");
  44885. document.execCommand("Copy");
  44886. setTimeout(function() {
  44887. $("#luckysheet-copy-content").blur();
  44888. }, 10);
  44889. } else {
  44890. clipboardData.setData("Text", cpdata);
  44891. return false;
  44892. }
  44893. },
  44894. pasteImgItem: function() {
  44895. let _this = this;
  44896. if (_this.images == null) {
  44897. _this.images = {};
  44898. }
  44899. let rowIndex = store_default.luckysheet_select_save[0].row_focus || 0;
  44900. let colIndex = store_default.luckysheet_select_save[0].column_focus || 0;
  44901. let left = colIndex == 0 ? 0 : store_default.visibledatacolumn[colIndex - 1];
  44902. let top = rowIndex == 0 ? 0 : store_default.visibledatarow[rowIndex - 1];
  44903. let img = $.extend(true, {}, _this.copyImgItemObj);
  44904. img.default.left = left - img.crop.offsetLeft;
  44905. img.default.top = top - img.crop.offsetTop;
  44906. let scrollTop = $("#luckysheet-cell-main").scrollTop(), scrollLeft = $("#luckysheet-cell-main").scrollLeft();
  44907. img.fixedLeft = img.default.left - scrollLeft + store_default.rowHeaderWidth;
  44908. img.fixedTop = img.default.top - scrollTop + store_default.infobarHeight + store_default.toolbarHeight + store_default.calculatebarHeight + store_default.columnHeaderHeight;
  44909. let id = _this.generateRandomId();
  44910. let modelHtml = _this.modelHtml(id, img);
  44911. $("#luckysheet-image-showBoxs .img-list").append(modelHtml);
  44912. _this.images[id] = img;
  44913. _this.ref();
  44914. _this.init();
  44915. },
  44916. allImagesShow: function() {
  44917. let _this = this;
  44918. $("#luckysheet-modal-dialog-activeImage").hide();
  44919. $("#luckysheet-modal-dialog-cropping").hide();
  44920. $("#luckysheet-modal-dialog-slider-imageCtrl").hide();
  44921. $("#luckysheet-image-showBoxs .img-list").empty();
  44922. if (_this.images == null) {
  44923. return;
  44924. }
  44925. for (let imgId in _this.images) {
  44926. let imgItem = _this.images[imgId];
  44927. let modelHtml = _this.modelHtml(imgId, imgItem);
  44928. $("#luckysheet-image-showBoxs .img-list").append(modelHtml);
  44929. }
  44930. },
  44931. moveChangeSize: function(rc, index2, size) {
  44932. let _this = this;
  44933. let images = $.extend(true, {}, _this.images);
  44934. if (rc == "row") {
  44935. let row = store_default.visibledatarow[index2], row_pre = index2 - 1 == -1 ? 0 : store_default.visibledatarow[index2 - 1];
  44936. let changeSize = size - (row - row_pre - 1);
  44937. for (let imgId in images) {
  44938. let imgItem = images[imgId];
  44939. let imgItemParam = _this.getImgItemParam(imgItem);
  44940. let type = imgItem.type;
  44941. if (type == "1") {
  44942. if (imgItemParam.top >= row) {
  44943. imgItem.default.top = imgItemParam.top + changeSize - imgItem.crop.offsetTop;
  44944. } else {
  44945. if (imgItemParam.top + imgItemParam.height >= row - 2) {
  44946. if (imgItemParam.top < row + changeSize) {
  44947. let scaleY = (imgItemParam.height + changeSize) / imgItemParam.height;
  44948. imgItem.default.height = Math.round(imgItem.default.height * scaleY);
  44949. imgItem.crop.height = Math.round(imgItem.crop.height * scaleY);
  44950. imgItem.crop.offsetTop = Math.round(imgItem.crop.offsetTop * scaleY);
  44951. } else {
  44952. let scaleY = (imgItemParam.top + imgItemParam.height - row) / imgItemParam.height;
  44953. imgItem.default.height = Math.round(imgItem.default.height * scaleY);
  44954. imgItem.crop.height = Math.round(imgItem.crop.height * scaleY);
  44955. imgItem.crop.offsetTop = Math.round(imgItem.crop.offsetTop * scaleY);
  44956. imgItem.default.top = row + changeSize - imgItem.crop.offsetTop;
  44957. }
  44958. } else {
  44959. if (imgItemParam.top > row + changeSize) {
  44960. let scaleY = 1 / imgItemParam.height;
  44961. imgItem.default.height = Math.round(imgItem.default.height * scaleY);
  44962. imgItem.crop.height = Math.round(imgItem.crop.height * scaleY);
  44963. imgItem.crop.offsetTop = Math.round(imgItem.crop.offsetTop * scaleY);
  44964. imgItem.default.top = row + changeSize - imgItem.crop.offsetTop;
  44965. } else if (imgItemParam.top + imgItemParam.height > row + changeSize) {
  44966. let scaleY = (row + changeSize - imgItemParam.top) / imgItemParam.height;
  44967. imgItem.default.height = Math.round(imgItem.default.height * scaleY);
  44968. imgItem.crop.height = Math.round(imgItem.crop.height * scaleY);
  44969. imgItem.crop.offsetTop = Math.round(imgItem.crop.offsetTop * scaleY);
  44970. }
  44971. }
  44972. }
  44973. } else if (type == "2") {
  44974. if (imgItemParam.top >= row) {
  44975. imgItem.default.top = imgItemParam.top + changeSize - imgItem.crop.offsetTop;
  44976. } else if (imgItemParam.top > row + changeSize) {
  44977. imgItem.default.top = row + changeSize - imgItem.crop.offsetTop;
  44978. }
  44979. }
  44980. }
  44981. } else if (rc == "column") {
  44982. let col = store_default.visibledatacolumn[index2], col_pre = index2 - 1 == -1 ? 0 : store_default.visibledatacolumn[index2 - 1];
  44983. let changeSize = size - (col - col_pre - 1);
  44984. for (let imgId in images) {
  44985. let imgItem = images[imgId];
  44986. let imgItemParam = _this.getImgItemParam(imgItem);
  44987. let type = imgItem.type;
  44988. if (type == "1") {
  44989. if (imgItemParam.left >= col) {
  44990. imgItem.default.left = imgItemParam.left + changeSize - imgItem.crop.offsetLeft;
  44991. } else {
  44992. if (imgItemParam.left + imgItemParam.width >= col - 2) {
  44993. if (imgItemParam.left < col + changeSize) {
  44994. let scaleX = (imgItemParam.width + changeSize) / imgItemParam.width;
  44995. imgItem.default.width = Math.round(imgItem.default.width * scaleX);
  44996. imgItem.crop.width = Math.round(imgItem.crop.width * scaleX);
  44997. imgItem.crop.offsetLeft = Math.round(imgItem.crop.offsetLeft * scaleX);
  44998. } else {
  44999. let scaleX = (imgItemParam.left + imgItemParam.width - col) / imgItemParam.width;
  45000. imgItem.default.width = Math.round(imgItem.default.width * scaleX);
  45001. imgItem.crop.width = Math.round(imgItem.crop.width * scaleX);
  45002. imgItem.crop.offsetLeft = Math.round(imgItem.crop.offsetLeft * scaleX);
  45003. imgItem.default.left = col + changeSize - imgItem.crop.offsetLeft;
  45004. }
  45005. } else {
  45006. if (imgItemParam.left > col + changeSize) {
  45007. let scaleX = 1 / imgItemParam.width;
  45008. imgItem.default.width = Math.round(imgItem.default.width * scaleX);
  45009. imgItem.crop.width = Math.round(imgItem.crop.width * scaleX);
  45010. imgItem.crop.offsetLeft = Math.round(imgItem.crop.offsetLeft * scaleX);
  45011. imgItem.default.left = col + changeSize - imgItem.crop.offsetLeft;
  45012. } else if (imgItemParam.left + imgItemParam.width > col + changeSize) {
  45013. let scaleX = (col + changeSize - imgItemParam.left) / imgItemParam.width;
  45014. imgItem.default.width = Math.round(imgItem.default.width * scaleX);
  45015. imgItem.crop.width = Math.round(imgItem.crop.width * scaleX);
  45016. imgItem.crop.offsetLeft = Math.round(imgItem.crop.offsetLeft * scaleX);
  45017. }
  45018. }
  45019. }
  45020. } else if (type == "2") {
  45021. if (imgItemParam.left >= col) {
  45022. imgItem.default.left = imgItemParam.left + changeSize - imgItem.crop.offsetLeft;
  45023. } else if (imgItemParam.left > col + changeSize) {
  45024. imgItem.default.left = col + changeSize - imgItem.crop.offsetLeft;
  45025. }
  45026. }
  45027. }
  45028. }
  45029. return images;
  45030. },
  45031. ref: function() {
  45032. let _this = this;
  45033. let file = store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)];
  45034. let images = _this.images;
  45035. if (store_default.clearjfundo) {
  45036. store_default.jfundo.length = 0;
  45037. store_default.jfredo.push({
  45038. "type": "imageCtrl",
  45039. "sheetIndex": store_default.currentSheetIndex,
  45040. "images": file.images == null ? null : $.extend(true, {}, file.images),
  45041. "curImages": images
  45042. });
  45043. }
  45044. file.images = $.extend(true, {}, images);
  45045. server_default.saveParam("all", store_default.currentSheetIndex, file.images, {"k": "images"});
  45046. }
  45047. };
  45048. imageCtrl_default = imageCtrl;
  45049. }
  45050. });
  45051. // src/controllers/dataVerificationCtrl.js
  45052. function validateIdCard(idCard) {
  45053. var regIdCard = /^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$/;
  45054. if (regIdCard.test(idCard)) {
  45055. if (idCard.length == 18) {
  45056. var idCardWi = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
  45057. var idCardY = new Array(1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2);
  45058. var idCardWiSum = 0;
  45059. for (var i2 = 0; i2 < 17; i2++) {
  45060. idCardWiSum += idCard.substring(i2, i2 + 1) * idCardWi[i2];
  45061. }
  45062. var idCardMod = idCardWiSum % 11;
  45063. var idCardLast = idCard.substring(17);
  45064. if (idCardMod == 2) {
  45065. if (idCardLast == "X" || idCardLast == "x") {
  45066. return true;
  45067. } else {
  45068. return false;
  45069. }
  45070. } else {
  45071. if (idCardLast == idCardY[idCardMod]) {
  45072. return true;
  45073. } else {
  45074. return false;
  45075. }
  45076. }
  45077. }
  45078. } else {
  45079. return false;
  45080. }
  45081. }
  45082. var dataVerificationCtrl, dataVerificationCtrl_default;
  45083. var init_dataVerificationCtrl = __esm({
  45084. "src/controllers/dataVerificationCtrl.js"() {
  45085. init_util();
  45086. init_formula();
  45087. init_validate();
  45088. init_datecontroll();
  45089. init_refresh();
  45090. init_tooltip();
  45091. init_setdata();
  45092. init_getdata();
  45093. init_editor();
  45094. init_constant();
  45095. init_select();
  45096. init_server();
  45097. init_menuButton();
  45098. init_sheetmanage();
  45099. init_get();
  45100. init_locale();
  45101. init_store();
  45102. dataVerificationCtrl = {
  45103. defaultItem: {
  45104. type: "dropdown",
  45105. type2: null,
  45106. value1: "",
  45107. value2: "",
  45108. checked: false,
  45109. remote: false,
  45110. prohibitInput: false,
  45111. hintShow: false,
  45112. hintText: ""
  45113. },
  45114. curItem: null,
  45115. dataVerification: null,
  45116. selectRange: [],
  45117. selectStatus: false,
  45118. optionLabel: {
  45119. "number": "\u6570\u503C",
  45120. "number_integer": "\u6574\u6570",
  45121. "number_decimal": "\u5C0F\u6570",
  45122. "bw": "\u4ECB\u4E8E",
  45123. "nb": "\u4E0D\u4ECB\u4E8E",
  45124. "eq": "\u7B49\u4E8E",
  45125. "ne": "\u4E0D\u7B49\u4E8E",
  45126. "gt": "\u5927\u4E8E",
  45127. "lt": "\u5C0F\u4E8E",
  45128. "gte": "\u5927\u4E8E\u7B49\u4E8E",
  45129. "lte": "\u5C0F\u4E8E\u7B49\u4E8E",
  45130. "include": "\u5305\u62EC",
  45131. "exclude": "\u4E0D\u5305\u62EC",
  45132. "equal": "\u7B49\u4E8E",
  45133. "bf": "\u65E9\u4E8E",
  45134. "nbf": "\u4E0D\u65E9\u4E8E",
  45135. "af": "\u665A\u4E8E",
  45136. "naf": "\u4E0D\u665A\u4E8E",
  45137. "card": "\u8EAB\u4EFD\u8BC1\u53F7\u7801",
  45138. "phone": "\u624B\u673A\u53F7"
  45139. },
  45140. optionLabel_en: {
  45141. "number": "numeric",
  45142. "number_integer": "integer",
  45143. "number_decimal": "decimal",
  45144. "bw": "between",
  45145. "nb": "not between",
  45146. "eq": "equal to",
  45147. "ne": "not equal to",
  45148. "gt": "greater",
  45149. "lt": "less than",
  45150. "gte": "greater or equal to",
  45151. "lte": "less than or equal to",
  45152. "include": "include",
  45153. "exclude": "not include",
  45154. "equal": "equal to",
  45155. "bf": "earlier than",
  45156. "nbf": "not earlier than",
  45157. "af": "later than",
  45158. "naf": "not later than",
  45159. "card": "identification number",
  45160. "phone": "phone number"
  45161. },
  45162. createDialog: function() {
  45163. let _this = this;
  45164. const _locale = locale_default();
  45165. const dvText = _locale.dataVerification;
  45166. const toolbarText = _locale.toolbar;
  45167. const buttonText = _locale.button;
  45168. $("#luckysheet-modal-dialog-mask").show();
  45169. $("#luckysheet-dataVerification-dialog").remove();
  45170. let content = `<div class="box">
  45171. <div class="box-item" style="border-top:1px solid #E1E4E8;">
  45172. <div class="box-item-title">${dvText.cellRange}</div>
  45173. <div id="data-verification-range" class="range">
  45174. <input class="formulaInputFocus" spellcheck="false">
  45175. <i class="fa fa-table" aria-hidden="true" title="${dvText.selectCellRange}"></i>
  45176. </div>
  45177. </div>
  45178. <div class="box-item">
  45179. <div class="box-item-title">${dvText.verificationCondition}</div>
  45180. <select id="data-verification-type-select">
  45181. <option value="dropdown">${dvText.dropdown}</option>
  45182. <option value="checkbox">${dvText.checkbox}</option>
  45183. <option value="number">${dvText.number}</option>
  45184. <option value="number_integer">${dvText.number_integer}</option>
  45185. <option value="number_decimal">${dvText.number_decimal}</option>
  45186. <option value="text_content">${dvText.text_content}</option>
  45187. <option value="text_length">${dvText.text_length}</option>
  45188. <option value="date">${dvText.date}</option>
  45189. <option value="validity">${dvText.validity}</option>
  45190. </select>
  45191. <div class="show-box">
  45192. <div class="show-box-item show-box-item-dropdown">
  45193. <div class="range">
  45194. <input class="formulaInputFocus data-verification-value1" placeholder="${dvText.placeholder1}" spellcheck="false">
  45195. <i class="fa fa-table" aria-hidden="true" title="${dvText.selectCellRange}"></i>
  45196. </div>
  45197. <div class="multi">
  45198. <input type="checkbox" id="data-verification-multi" class="data-verification-multi">
  45199. <label for="data-verification-multi">${dvText.allowMultiSelect}</label>
  45200. </div>
  45201. </div>
  45202. <div class="show-box-item show-box-item-checkbox">
  45203. <div class="check-box">
  45204. <span>${dvText.selected} \u2014\u2014</span>
  45205. <input type="text" class="data-verification-value1" placeholder="${dvText.placeholder2}">
  45206. </div>
  45207. <div class="check-box">
  45208. <span>${dvText.notSelected} \u2014\u2014</span>
  45209. <input type="text" class="data-verification-value2" placeholder="${dvText.placeholder2}">
  45210. </div>
  45211. </div>
  45212. <div class="show-box-item show-box-item-number">
  45213. <select id="data-verification-number-select">
  45214. <option value="bw">${dvText.between}</option>
  45215. <option value="nb">${dvText.notBetween}</option>
  45216. <option value="eq">${dvText.equal}</option>
  45217. <option value="ne">${dvText.notEqualTo}</option>
  45218. <option value="gt">${dvText.moreThanThe}</option>
  45219. <option value="lt">${dvText.lessThan}</option>
  45220. <option value="gte">${dvText.greaterOrEqualTo}</option>
  45221. <option value="lte">${dvText.lessThanOrEqualTo}</option>
  45222. </select>
  45223. <div class="input input1">
  45224. <input type="number" class="data-verification-value1" placeholder="1">
  45225. <span>-</span>
  45226. <input type="number" class="data-verification-value2" placeholder="100">
  45227. </div>
  45228. <div class="input input2">
  45229. <input type="number" class="data-verification-value1" placeholder="${dvText.placeholder3}">
  45230. </div>
  45231. </div>
  45232. <div class="show-box-item show-box-item-text">
  45233. <select id="data-verification-text-select">
  45234. <option value="include">${dvText.include}</option>
  45235. <option value="exclude">${dvText.exclude}</option>
  45236. <option value="equal">${dvText.equal}</option>
  45237. </select>
  45238. <div class="input input2">
  45239. <input type="text" class="data-verification-value1" placeholder="${dvText.placeholder4}"/>
  45240. </div>
  45241. </div>
  45242. <div class="show-box-item show-box-item-textLength">
  45243. <select id="data-verification-textLength-select">
  45244. <option value="bw">${dvText.between}</option>
  45245. <option value="nb">${dvText.notBetween}</option>
  45246. <option value="eq">${dvText.equal}</option>
  45247. <option value="ne">${dvText.notEqualTo}</option>
  45248. <option value="gt">${dvText.moreThanThe}</option>
  45249. <option value="lt">${dvText.lessThan}</option>
  45250. <option value="gte">${dvText.greaterOrEqualTo}</option>
  45251. <option value="lte">${dvText.lessThanOrEqualTo}</option>
  45252. </select>
  45253. <div class="input input1">
  45254. <input type="number" class="data-verification-value1" placeholder="1">
  45255. <span>-</span>
  45256. <input type="number" class="data-verification-value2" placeholder="100">
  45257. </div>
  45258. <div class="input input2">
  45259. <input type="number" class="data-verification-value1" placeholder="${dvText.placeholder3}">
  45260. </div>
  45261. </div>
  45262. <div class="show-box-item show-box-item-date">
  45263. <select id="data-verification-date-select">
  45264. <option value="bw">${dvText.between}</option>
  45265. <option value="nb">${dvText.notBetween}</option>
  45266. <option value="eq">${dvText.equal}</option>
  45267. <option value="ne">${dvText.notEqualTo}</option>
  45268. <option value="bf">${dvText.earlierThan}</option>
  45269. <option value="nbf">${dvText.noEarlierThan}</option>
  45270. <option value="af">${dvText.laterThan}</option>
  45271. <option value="naf">${dvText.noLaterThan}</option>
  45272. </select>
  45273. <div class="input input1">
  45274. <input type="date" class="data-verification-value1" placeholder="2020/9/10">
  45275. <span>-</span>
  45276. <input type="date" class="data-verification-value2" placeholder="2020/9/10">
  45277. </div>
  45278. <div class="input input2">
  45279. <input type="date" class="data-verification-value1" placeholder="2020/9/10">
  45280. </div>
  45281. </div>
  45282. <div class="show-box-item show-box-item-validity">
  45283. <select id="data-verification-validity-select">
  45284. <option value="card">${dvText.identificationNumber}</option>
  45285. <option value="phone">${dvText.phoneNumber}</option>
  45286. </select>
  45287. </div>
  45288. </div>
  45289. </div>
  45290. <div class="box-item">
  45291. <div class="check">
  45292. <input type="checkbox" id="data-verification-remote" class="data-verification-remote">
  45293. <label for="data-verification-remote">${dvText.remote}</label>
  45294. </div>
  45295. <div class="check">
  45296. <input type="checkbox" id="data-verification-prohibitInput">
  45297. <label for="data-verification-prohibitInput">${dvText.prohibitInput}</label>
  45298. </div>
  45299. <div class="check">
  45300. <input type="checkbox" id="data-verification-hint-show">
  45301. <label for="data-verification-hint-show">${dvText.hintShow}</label>
  45302. </div>
  45303. <div class="data-verification-hint-text">
  45304. <input type="text" placeholder="${dvText.placeholder5}">
  45305. </div>
  45306. </div>
  45307. </div>`;
  45308. $("body").append(replaceHtml(modelHTML, {
  45309. "id": "luckysheet-dataVerification-dialog",
  45310. "addclass": "luckysheet-dataVerification-dialog",
  45311. "title": toolbarText.dataVerification,
  45312. "content": content,
  45313. "botton": `<button id="luckysheet-dataVerification-dialog-confirm" class="btn btn-primary">${buttonText.confirm}</button>
  45314. <button id="luckysheet-dataVerification-dialog-delete" class="btn btn-default">${dvText.deleteVerification}</button>
  45315. <button class="btn btn-default luckysheet-model-close-btn">${buttonText.cancel}</button>`,
  45316. "style": "z-index:100003"
  45317. }));
  45318. let $t = $("#luckysheet-dataVerification-dialog").find(".luckysheet-modal-dialog-content").css("min-width", 350).end(), myh = $t.outerHeight(), myw = $t.outerWidth();
  45319. let winw = $(window).width(), winh = $(window).height();
  45320. let scrollLeft = $(document).scrollLeft(), scrollTop = $(document).scrollTop();
  45321. $("#luckysheet-dataVerification-dialog").css({
  45322. "left": (winw + scrollLeft - myw) / 2,
  45323. "top": (winh + scrollTop - myh) / 3
  45324. }).show();
  45325. _this.dataAllocation();
  45326. },
  45327. init: function() {
  45328. let _this = this;
  45329. const dvText = locale_default().dataVerification;
  45330. $(document).off("click.dropdownBtn").on("click.dropdownBtn", "#luckysheet-dataVerification-dropdown-btn", function(e) {
  45331. _this.dropdownListShow();
  45332. e.stopPropagation();
  45333. });
  45334. $(document).off("click.dropdownListItem").on("click.dropdownListItem", "#luckysheet-dataVerification-dropdown-List .dropdown-List-item", function(e) {
  45335. var $item = $(this);
  45336. let value = e.target.innerText;
  45337. if ($item.hasClass("multi")) {
  45338. $item.toggleClass("checked");
  45339. value = $.map($("#luckysheet-dataVerification-dropdown-List").children().filter(".checked"), function(el) {
  45340. return el.innerText;
  45341. }).join(",");
  45342. } else {
  45343. $("#luckysheet-dataVerification-dropdown-List").hide();
  45344. }
  45345. let last = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1];
  45346. let rowIndex = last.row_focus;
  45347. let colIndex = last.column_focus;
  45348. $("#luckysheet-rich-text-editor").text(value);
  45349. formula_default.updatecell(rowIndex, colIndex);
  45350. e.stopPropagation();
  45351. });
  45352. $(document).off("click.dvRange").on("click.dvRange", "#data-verification-range .fa-table", function(e) {
  45353. $("#luckysheet-dataVerification-dialog").hide();
  45354. let dataSource = "0";
  45355. let txt = $(this).siblings("input").val().trim();
  45356. _this.rangeDialog(dataSource, txt);
  45357. _this.selectRange = [];
  45358. let range2 = _this.getRangeByTxt(txt);
  45359. formula_default.rangetosheet = store_default.currentSheetIndex;
  45360. if (range2[0].sheetIndex != store_default.currentSheetIndex) {
  45361. sheetmanage_default.changeSheetExec(range2[0].sheetIndex);
  45362. }
  45363. if (range2.length > 0) {
  45364. for (let s = 0; s < range2.length; s++) {
  45365. let r1 = range2[s].row[0], r2 = range2[s].row[1];
  45366. let c1 = range2[s].column[0], c2 = range2[s].column[1];
  45367. let row = store_default.visibledatarow[r2], row_pre = r1 - 1 == -1 ? 0 : store_default.visibledatarow[r1 - 1];
  45368. let col = store_default.visibledatacolumn[c2], col_pre = c1 - 1 == -1 ? 0 : store_default.visibledatacolumn[c1 - 1];
  45369. _this.selectRange.push({
  45370. "left": col_pre,
  45371. "width": col - col_pre - 1,
  45372. "top": row_pre,
  45373. "height": row - row_pre - 1,
  45374. "left_move": col_pre,
  45375. "width_move": col - col_pre - 1,
  45376. "top_move": row_pre,
  45377. "height_move": row - row_pre - 1,
  45378. "row": [r1, r2],
  45379. "column": [c1, c2],
  45380. "row_focus": r1,
  45381. "column_focus": c1
  45382. });
  45383. }
  45384. }
  45385. selectionCopyShow(_this.selectRange);
  45386. });
  45387. $(document).off("click.dvRange2").on("click.dvRange2", "#luckysheet-dataVerification-dialog .show-box-item-dropdown .range .fa-table", function(e) {
  45388. $("#luckysheet-dataVerification-dialog").hide();
  45389. let dataSource = "1";
  45390. let txt = $(this).siblings("input").val().trim();
  45391. _this.rangeDialog(dataSource, txt);
  45392. _this.selectRange = [];
  45393. let range2 = _this.getRangeByTxt(txt);
  45394. formula_default.rangetosheet = store_default.currentSheetIndex;
  45395. if (range2[0].sheetIndex != store_default.currentSheetIndex) {
  45396. sheetmanage_default.changeSheetExec(range2[0].sheetIndex);
  45397. }
  45398. if (range2.length > 0) {
  45399. for (let s = 0; s < range2.length; s++) {
  45400. let r1 = range2[s].row[0], r2 = range2[s].row[1];
  45401. let c1 = range2[s].column[0], c2 = range2[s].column[1];
  45402. let row = store_default.visibledatarow[r2], row_pre = r1 - 1 == -1 ? 0 : store_default.visibledatarow[r1 - 1];
  45403. let col = store_default.visibledatacolumn[c2], col_pre = c1 - 1 == -1 ? 0 : store_default.visibledatacolumn[c1 - 1];
  45404. _this.selectRange.push({
  45405. "left": col_pre,
  45406. "width": col - col_pre - 1,
  45407. "top": row_pre,
  45408. "height": row - row_pre - 1,
  45409. "left_move": col_pre,
  45410. "width_move": col - col_pre - 1,
  45411. "top_move": row_pre,
  45412. "height_move": row - row_pre - 1,
  45413. "row": [r1, r2],
  45414. "column": [c1, c2],
  45415. "row_focus": r1,
  45416. "column_focus": c1
  45417. });
  45418. }
  45419. }
  45420. selectionCopyShow(_this.selectRange);
  45421. });
  45422. $(document).off("click.dvRangeConfirm").on("click.dvRangeConfirm", "#luckysheet-dataVerificationRange-dialog-confirm", function(e) {
  45423. let dataSource = $(this).attr("data-source");
  45424. let txt = $(this).parents("#luckysheet-dataVerificationRange-dialog").find("input").val();
  45425. if (_this.getRangeByTxt(txt).length > 1) {
  45426. tooltip_default.info('<i class="fa fa-exclamation-triangle"></i>', "\u4E0D\u80FD\u5BF9\u591A\u91CD\u9009\u62E9\u533A\u57DF\u6267\u884C\u6B64\u64CD\u4F5C\uFF0C\u8BF7\u9009\u62E9\u5355\u4E2A\u533A\u57DF\uFF0C\u7136\u540E\u518D\u8BD5");
  45427. return;
  45428. }
  45429. if (dataSource == "0") {
  45430. $("#luckysheet-dataVerification-dialog #data-verification-range input").val(txt);
  45431. } else if (dataSource == "1") {
  45432. $("#luckysheet-dataVerification-dialog .show-box-item-dropdown .range input").val(txt);
  45433. }
  45434. $("#luckysheet-dataVerificationRange-dialog").hide();
  45435. $("#luckysheet-modal-dialog-mask").show();
  45436. $("#luckysheet-dataVerification-dialog").show();
  45437. if (formula_default.rangetosheet != null && formula_default.rangetosheet != store_default.currentSheetIndex) {
  45438. sheetmanage_default.changeSheetExec(formula_default.rangetosheet);
  45439. formula_default.rangetosheet = null;
  45440. }
  45441. let range2 = [];
  45442. selectionCopyShow(range2);
  45443. });
  45444. $(document).off("click.dvRangeClose").on("click.dvRangeClose", "#luckysheet-dataVerificationRange-dialog-close", function(e) {
  45445. $("#luckysheet-dataVerificationRange-dialog").hide();
  45446. $("#luckysheet-modal-dialog-mask").show();
  45447. $("#luckysheet-dataVerification-dialog").show();
  45448. if (formula_default.rangetosheet != null && formula_default.rangetosheet != store_default.currentSheetIndex) {
  45449. sheetmanage_default.changeSheetExec(formula_default.rangetosheet);
  45450. formula_default.rangetosheet = null;
  45451. }
  45452. let range2 = [];
  45453. selectionCopyShow(range2);
  45454. });
  45455. $(document).on("click", "#luckysheet-dataVerificationRange-dialog .luckysheet-modal-dialog-title-close", function(e) {
  45456. $("#luckysheet-dataVerificationRange-dialog").hide();
  45457. $("#luckysheet-modal-dialog-mask").show();
  45458. $("#luckysheet-dataVerification-dialog").show();
  45459. if (formula_default.rangetosheet != null && formula_default.rangetosheet != store_default.currentSheetIndex) {
  45460. sheetmanage_default.changeSheetExec(formula_default.rangetosheet);
  45461. formula_default.rangetosheet = null;
  45462. }
  45463. let range2 = [];
  45464. selectionCopyShow(range2);
  45465. });
  45466. $(document).off("change.typeSelect").on("change.typeSelect", "#data-verification-type-select", function(e) {
  45467. $("#luckysheet-dataVerification-dialog .show-box .show-box-item").hide();
  45468. let value = this.value;
  45469. let item2 = _this.curItem;
  45470. if (value == "dropdown") {
  45471. $("#luckysheet-dataVerification-dialog .show-box .show-box-item-dropdown").show();
  45472. let value1 = "";
  45473. if (value == item2.type) {
  45474. value1 = item2.value1;
  45475. }
  45476. $("#luckysheet-dataVerification-dialog .show-box-item-dropdown .data-verification-value1").val(value1);
  45477. $("#luckysheet-dataVerification-dialog #data-verification-multi").prop("checked", item2.type2 ? true : false);
  45478. } else if (value == "checkbox") {
  45479. $("#luckysheet-dataVerification-dialog .show-box .show-box-item-checkbox").show();
  45480. let value1 = "";
  45481. let value2 = "";
  45482. if (value == item2.type) {
  45483. value1 = item2.value1;
  45484. value2 = item2.value2;
  45485. }
  45486. $("#luckysheet-dataVerification-dialog .show-box-item-checkbox .data-verification-value1").val(value1);
  45487. $("#luckysheet-dataVerification-dialog .show-box-item-checkbox .data-verification-value2").val(value2);
  45488. } else if (value == "number" || value == "number_integer" || value == "number_decimal") {
  45489. $("#luckysheet-dataVerification-dialog .show-box-item-number").show();
  45490. $("#luckysheet-dataVerification-dialog .show-box-item-number .input").hide();
  45491. let type2 = "bw";
  45492. let value1 = "";
  45493. let value2 = "";
  45494. if (item2.type == "number" || item2.type == "number_integer" || item2.type == "number_decimal") {
  45495. type2 = item2.type2;
  45496. value1 = item2.value1;
  45497. value2 = item2.value2;
  45498. }
  45499. $("#luckysheet-dataVerification-dialog #data-verification-number-select").val(type2);
  45500. if (type2 == "bw" || type2 == "nb") {
  45501. $("#luckysheet-dataVerification-dialog .show-box-item-number .input1").show();
  45502. } else {
  45503. $("#luckysheet-dataVerification-dialog .show-box-item-number .input2").show();
  45504. }
  45505. $("#luckysheet-dataVerification-dialog .show-box-item-number .data-verification-value1").val(value1);
  45506. $("#luckysheet-dataVerification-dialog .show-box-item-number .data-verification-value2").val(value2);
  45507. } else if (value == "text_content") {
  45508. $("#luckysheet-dataVerification-dialog .show-box-item-text").show();
  45509. let type2 = "include";
  45510. let value1 = "";
  45511. if (value == item2.type) {
  45512. type2 = item2.type2;
  45513. value1 = item2.value1;
  45514. }
  45515. $("#luckysheet-dataVerification-dialog #data-verification-text-select").val(type2);
  45516. $("#luckysheet-dataVerification-dialog .show-box-item-text .data-verification-value1").val(value1);
  45517. } else if (value == "text_length") {
  45518. $("#luckysheet-dataVerification-dialog .show-box-item-textLength").show();
  45519. $("#luckysheet-dataVerification-dialog .show-box-item-textLength .input").hide();
  45520. let type2 = "bw";
  45521. let value1 = "";
  45522. let value2 = "";
  45523. if (value == item2.type) {
  45524. type2 = item2.type2;
  45525. value1 = item2.value1;
  45526. value2 = item2.value2;
  45527. }
  45528. $("#luckysheet-dataVerification-dialog #data-verification-textLength-select").val(type2);
  45529. if (type2 == "bw" || type2 == "nb") {
  45530. $("#luckysheet-dataVerification-dialog .show-box-item-textLength .input1").show();
  45531. } else {
  45532. $("#luckysheet-dataVerification-dialog .show-box-item-textLength .input2").show();
  45533. }
  45534. $("#luckysheet-dataVerification-dialog .show-box-item-textLength .data-verification-value1").val(value1);
  45535. $("#luckysheet-dataVerification-dialog .show-box-item-textLength .data-verification-value2").val(value2);
  45536. } else if (value == "date") {
  45537. $("#luckysheet-dataVerification-dialog .show-box-item-date").show();
  45538. $("#luckysheet-dataVerification-dialog .show-box-item-date .input").hide();
  45539. let type2 = "bw";
  45540. let value1 = "";
  45541. let value2 = "";
  45542. if (value == item2.type) {
  45543. type2 = item2.type2;
  45544. value1 = item2.value1;
  45545. value2 = item2.value2;
  45546. }
  45547. $("#luckysheet-dataVerification-dialog #data-verification-date-select").val(type2);
  45548. if (type2 == "bw" || type2 == "nb") {
  45549. $("#luckysheet-dataVerification-dialog .show-box-item-date .input1").show();
  45550. } else {
  45551. $("#luckysheet-dataVerification-dialog .show-box-item-date .input2").show();
  45552. }
  45553. $("#luckysheet-dataVerification-dialog .show-box-item-date .data-verification-value1").val(value1);
  45554. $("#luckysheet-dataVerification-dialog .show-box-item-date .data-verification-value2").val(value2);
  45555. } else if (value == "validity") {
  45556. $("#luckysheet-dataVerification-dialog .show-box .show-box-item-validity").show();
  45557. let type2 = "card";
  45558. if (value == item2.type) {
  45559. type2 = item2.type2;
  45560. }
  45561. $("#luckysheet-dataVerification-dialog #data-verification-validity-select").val(type2);
  45562. }
  45563. });
  45564. $(document).off("change.numberSelect").on("change.numberSelect", "#data-verification-number-select", function(e) {
  45565. $("#luckysheet-dataVerification-dialog .show-box-item-number .input").hide();
  45566. let value = this.value;
  45567. if (value == "bw" || value == "nb") {
  45568. $("#luckysheet-dataVerification-dialog .show-box-item-number .input1").show();
  45569. } else {
  45570. $("#luckysheet-dataVerification-dialog .show-box-item-number .input2").show();
  45571. }
  45572. });
  45573. $(document).off("change.textLengthSelect").on("change.textLengthSelect", "#data-verification-textLength-select", function(e) {
  45574. $("#luckysheet-dataVerification-dialog .show-box-item-textLength .input").hide();
  45575. let value = this.value;
  45576. if (value == "bw" || value == "nb") {
  45577. $("#luckysheet-dataVerification-dialog .show-box-item-textLength .input1").show();
  45578. } else {
  45579. $("#luckysheet-dataVerification-dialog .show-box-item-textLength .input2").show();
  45580. }
  45581. });
  45582. $(document).off("change.dateSelect").on("change.dateSelect", "#data-verification-date-select", function(e) {
  45583. $("#luckysheet-dataVerification-dialog .show-box-item-date .input").hide();
  45584. let value = this.value;
  45585. if (value == "bw" || value == "nb") {
  45586. $("#luckysheet-dataVerification-dialog .show-box-item-date .input1").show();
  45587. } else {
  45588. $("#luckysheet-dataVerification-dialog .show-box-item-date .input2").show();
  45589. }
  45590. });
  45591. $(document).off("change.hintShow").on("change.hintShow", "#data-verification-hint-show", function(e) {
  45592. if (this.checked) {
  45593. $("#luckysheet-dataVerification-dialog .data-verification-hint-text").show();
  45594. } else {
  45595. $("#luckysheet-dataVerification-dialog .data-verification-hint-text").hide();
  45596. }
  45597. });
  45598. $(document).off("click.dvSaveConfirm").on("click.dvSaveConfirm", "#luckysheet-dataVerification-dialog-confirm", function(e) {
  45599. let rangeTxt = $("#luckysheet-dataVerification-dialog #data-verification-range input").val().trim();
  45600. let range2 = _this.getRangeByTxt(rangeTxt);
  45601. if (range2.length == 0) {
  45602. tooltip_default.info('<i class="fa fa-exclamation-triangle"></i>', dvText.selectCellRange2);
  45603. return;
  45604. }
  45605. let str = range2[range2.length - 1].row[0], edr = range2[range2.length - 1].row[1], stc = range2[range2.length - 1].column[0], edc = range2[range2.length - 1].column[1];
  45606. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  45607. if (str < 0) {
  45608. str = 0;
  45609. }
  45610. if (edr > d.length - 1) {
  45611. edr = d.length - 1;
  45612. }
  45613. if (stc < 0) {
  45614. stc = 0;
  45615. }
  45616. if (edc > d[0].length - 1) {
  45617. edc = d[0].length - 1;
  45618. }
  45619. let type = $("#luckysheet-dataVerification-dialog #data-verification-type-select").val();
  45620. let type2 = null, value1 = "", value2 = "";
  45621. if (type == "dropdown") {
  45622. value1 = $("#luckysheet-dataVerification-dialog .show-box-item-dropdown .data-verification-value1").val().trim();
  45623. if (value1.length == 0) {
  45624. tooltip_default.info('<i class="fa fa-exclamation-triangle"></i>', dvText.tooltipInfo1);
  45625. return;
  45626. }
  45627. type2 = $("#luckysheet-dataVerification-dialog #data-verification-multi").is(":checked");
  45628. } else if (type == "checkbox") {
  45629. value1 = $("#luckysheet-dataVerification-dialog .show-box-item-checkbox .data-verification-value1").val().trim();
  45630. value2 = $("#luckysheet-dataVerification-dialog .show-box-item-checkbox .data-verification-value2").val().trim();
  45631. if (value1.length == 0 || value2.length == 0) {
  45632. tooltip_default.info('<i class="fa fa-exclamation-triangle"></i>', dvText.tooltipInfo2);
  45633. return;
  45634. }
  45635. } else if (type == "number" || type == "number_integer" || type == "number_decimal") {
  45636. type2 = $("#luckysheet-dataVerification-dialog #data-verification-number-select").val();
  45637. value1 = $("#luckysheet-dataVerification-dialog .show-box-item-number .input:visible .data-verification-value1").val().trim();
  45638. if (!isRealNum(value1)) {
  45639. tooltip_default.info('<i class="fa fa-exclamation-triangle"></i>', dvText.tooltipInfo3);
  45640. return;
  45641. }
  45642. if (type2 == "bw" || type2 == "nb") {
  45643. value2 = $("#luckysheet-dataVerification-dialog .show-box-item-number .input:visible .data-verification-value2").val().trim();
  45644. if (!isRealNum(value2)) {
  45645. tooltip_default.info('<i class="fa fa-exclamation-triangle"></i>', dvText.tooltipInfo3);
  45646. return;
  45647. }
  45648. if (Number(value2) < Number(value1)) {
  45649. tooltip_default.info('<i class="fa fa-exclamation-triangle"></i>', dvText.tooltipInfo4);
  45650. return;
  45651. }
  45652. }
  45653. } else if (type == "text_content") {
  45654. type2 = $("#luckysheet-dataVerification-dialog #data-verification-text-select").val();
  45655. value1 = $("#luckysheet-dataVerification-dialog .show-box-item-text .data-verification-value1").val().trim();
  45656. if (value1.length == 0) {
  45657. tooltip_default.info('<i class="fa fa-exclamation-triangle"></i>', dvText.tooltipInfo5);
  45658. return;
  45659. }
  45660. } else if (type == "text_length") {
  45661. type2 = $("#luckysheet-dataVerification-dialog #data-verification-textLength-select").val();
  45662. value1 = $("#luckysheet-dataVerification-dialog .show-box-item-textLength .input:visible .data-verification-value1").val().trim();
  45663. if (!isRealNum(value1)) {
  45664. tooltip_default.info('<i class="fa fa-exclamation-triangle"></i>', dvText.tooltipInfo3);
  45665. return;
  45666. }
  45667. if (!Number.isInteger(Number(value1)) || Number(value1) < 0) {
  45668. tooltip_default.info('<i class="fa fa-exclamation-triangle"></i>', dvText.textlengthInteger);
  45669. return;
  45670. }
  45671. if (type2 == "bw" || type2 == "nb") {
  45672. value2 = $("#luckysheet-dataVerification-dialog .show-box-item-textLength .input:visible .data-verification-value2").val().trim();
  45673. if (!isRealNum(value2)) {
  45674. tooltip_default.info('<i class="fa fa-exclamation-triangle"></i>', dvText.tooltipInfo3);
  45675. return;
  45676. }
  45677. if (!Number.isInteger(Number(value2)) || Number(value2) < 0) {
  45678. tooltip_default.info('<i class="fa fa-exclamation-triangle"></i>', dvText.textlengthInteger);
  45679. return;
  45680. }
  45681. if (Number(value2) < Number(value1)) {
  45682. tooltip_default.info('<i class="fa fa-exclamation-triangle"></i>', dvText.tooltipInfo4);
  45683. return;
  45684. }
  45685. }
  45686. } else if (type == "date") {
  45687. type2 = $("#luckysheet-dataVerification-dialog #data-verification-date-select").val();
  45688. value1 = $("#luckysheet-dataVerification-dialog .show-box-item-date .input:visible .data-verification-value1").val().trim();
  45689. if (!isdatetime(value1)) {
  45690. tooltip_default.info('<i class="fa fa-exclamation-triangle"></i>', dvText.tooltipInfo6);
  45691. return;
  45692. }
  45693. if (type2 == "bw" || type2 == "nb") {
  45694. value2 = $("#luckysheet-dataVerification-dialog .show-box-item-date .input:visible .data-verification-value2").val().trim();
  45695. if (!isdatetime(value2)) {
  45696. tooltip_default.info('<i class="fa fa-exclamation-triangle"></i>', dvText.tooltipInfo6);
  45697. return;
  45698. }
  45699. if (diff(value1, value2) > 0) {
  45700. tooltip_default.info('<i class="fa fa-exclamation-triangle"></i>', dvText.tooltipInfo7);
  45701. return;
  45702. }
  45703. }
  45704. } else if (type == "validity") {
  45705. type2 = $("#luckysheet-dataVerification-dialog #data-verification-validity-select").val();
  45706. }
  45707. let remote = $("#luckysheet-dataVerification-dialog #data-verification-remote").is(":checked");
  45708. let prohibitInput = $("#luckysheet-dataVerification-dialog #data-verification-prohibitInput").is(":checked");
  45709. let hintShow = $("#luckysheet-dataVerification-dialog #data-verification-hint-show").is(":checked");
  45710. let hintText = "";
  45711. if (hintShow) {
  45712. hintText = $("#luckysheet-dataVerification-dialog .data-verification-hint-text input").val().trim();
  45713. }
  45714. let item2 = {
  45715. type,
  45716. type2,
  45717. value1,
  45718. value2,
  45719. checked: false,
  45720. remote,
  45721. prohibitInput,
  45722. hintShow,
  45723. hintText
  45724. };
  45725. let historyDataVerification = $.extend(true, {}, _this.dataVerification);
  45726. let currentDataVerification = $.extend(true, {}, _this.dataVerification);
  45727. for (let r2 = str; r2 <= edr; r2++) {
  45728. for (let c2 = stc; c2 <= edc; c2++) {
  45729. currentDataVerification[r2 + "_" + c2] = item2;
  45730. if (type == "checkbox") {
  45731. setcellvalue(r2, c2, d, item2.value2);
  45732. }
  45733. }
  45734. }
  45735. if (type == "checkbox") {
  45736. _this.refOfCheckbox(historyDataVerification, currentDataVerification, store_default.currentSheetIndex, d, range2[range2.length - 1]);
  45737. } else {
  45738. _this.ref(historyDataVerification, currentDataVerification, store_default.currentSheetIndex);
  45739. }
  45740. $("#luckysheet-modal-dialog-mask").hide();
  45741. $("#luckysheet-dataVerification-dialog").hide();
  45742. });
  45743. $(document).off("click.delete").on("click.delete", "#luckysheet-dataVerification-dialog-delete", function(e) {
  45744. let rangeTxt = $("#luckysheet-dataVerification-dialog #data-verification-range input").val().trim();
  45745. let range2 = _this.getRangeByTxt(rangeTxt);
  45746. if (range2.length == 0) {
  45747. tooltip_default.info('<i class="fa fa-exclamation-triangle"></i>', dvText.selectCellRange2);
  45748. return;
  45749. }
  45750. let historyDataVerification = $.extend(true, {}, _this.dataVerification);
  45751. let currentDataVerification = $.extend(true, {}, _this.dataVerification);
  45752. let str = range2[range2.length - 1].row[0], edr = range2[range2.length - 1].row[1], stc = range2[range2.length - 1].column[0], edc = range2[range2.length - 1].column[1];
  45753. for (let r2 = str; r2 <= edr; r2++) {
  45754. for (let c2 = stc; c2 <= edc; c2++) {
  45755. delete currentDataVerification[r2 + "_" + c2];
  45756. }
  45757. }
  45758. _this.ref(historyDataVerification, currentDataVerification, store_default.currentSheetIndex);
  45759. $("#luckysheet-modal-dialog-mask").hide();
  45760. $("#luckysheet-dataVerification-dialog").hide();
  45761. });
  45762. $(document).on("click", "#luckysheet-info .luckysheet-modal-dialog-title-close, #luckysheet-info .luckysheet-model-close-btn", function(e) {
  45763. $(this).parents("#luckysheet-info").hide();
  45764. if ($("#luckysheet-dataVerification-dialog").is(":visible")) {
  45765. $("#luckysheet-modal-dialog-mask").show();
  45766. }
  45767. e.stopPropagation();
  45768. });
  45769. },
  45770. dataAllocation: function() {
  45771. let _this = this;
  45772. let range2 = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1];
  45773. let rangeTxt = getRangetxt(store_default.currentSheetIndex, range2, store_default.currentSheetIndex);
  45774. $("#luckysheet-dataVerification-dialog #data-verification-range input").val(rangeTxt);
  45775. let rowIndex = range2.row_focus || range2.row[0];
  45776. let colIndex = range2.column_focus || range2.column[0];
  45777. let dataVerification = $.extend(true, {}, _this.dataVerification);
  45778. let item2 = dataVerification[rowIndex + "_" + colIndex];
  45779. if (item2 == null) {
  45780. item2 = $.extend(true, {}, _this.defaultItem);
  45781. }
  45782. _this.curItem = item2;
  45783. $("#luckysheet-dataVerification-dialog #data-verification-type-select").val(item2.type);
  45784. $("#luckysheet-dataVerification-dialog .show-box .show-box-item").hide();
  45785. if (item2.type == "dropdown") {
  45786. $("#luckysheet-dataVerification-dialog .show-box .show-box-item-dropdown").show();
  45787. $("#luckysheet-dataVerification-dialog .show-box-item-dropdown .data-verification-value1").val(item2.value1);
  45788. $("#luckysheet-dataVerification-dialog #data-verification-multi").prop("checked", item2.type2 ? true : false);
  45789. } else if (item2.type == "checkbox") {
  45790. $("#luckysheet-dataVerification-dialog .show-box .show-box-item-checkbox").show();
  45791. $("#luckysheet-dataVerification-dialog .show-box-item-checkbox .data-verification-value1").val(item2.value1);
  45792. $("#luckysheet-dataVerification-dialog .show-box-item-checkbox .data-verification-value2").val(item2.value2);
  45793. } else if (item2.type == "number" || item2.type == "number_integer" || item2.type == "number_decimal") {
  45794. $("#luckysheet-dataVerification-dialog .show-box-item-number").show();
  45795. $("#luckysheet-dataVerification-dialog #data-verification-number-select").val(item2.type2);
  45796. $("#luckysheet-dataVerification-dialog .show-box-item-number .input").hide();
  45797. if (item2.type2 == "bw" || item2.type2 == "nb") {
  45798. $("#luckysheet-dataVerification-dialog .show-box-item-number .input1").show();
  45799. } else {
  45800. $("#luckysheet-dataVerification-dialog .show-box-item-number .input2").show();
  45801. }
  45802. $("#luckysheet-dataVerification-dialog .show-box-item-number .data-verification-value1").val(item2.value1);
  45803. $("#luckysheet-dataVerification-dialog .show-box-item-number .data-verification-value2").val(item2.value2);
  45804. } else if (item2.type == "text_content") {
  45805. $("#luckysheet-dataVerification-dialog .show-box-item-text").show();
  45806. $("#luckysheet-dataVerification-dialog #data-verification-text-select").val(item2.type2);
  45807. $("#luckysheet-dataVerification-dialog .show-box-item-text .data-verification-value1").val(item2.value1);
  45808. } else if (item2.type == "text_length") {
  45809. $("#luckysheet-dataVerification-dialog .show-box-item-textLength").show();
  45810. $("#luckysheet-dataVerification-dialog #data-verification-textLength-select").val(item2.type2);
  45811. $("#luckysheet-dataVerification-dialog .show-box-item-textLength .input").hide();
  45812. if (item2.type2 == "bw" || item2.type2 == "nb") {
  45813. $("#luckysheet-dataVerification-dialog .show-box-item-textLength .input1").show();
  45814. } else {
  45815. $("#luckysheet-dataVerification-dialog .show-box-item-textLength .input2").show();
  45816. }
  45817. $("#luckysheet-dataVerification-dialog .show-box-item-textLength .data-verification-value1").val(item2.value1);
  45818. $("#luckysheet-dataVerification-dialog .show-box-item-textLength .data-verification-value2").val(item2.value2);
  45819. } else if (item2.type == "date") {
  45820. $("#luckysheet-dataVerification-dialog .show-box-item-date").show();
  45821. $("#luckysheet-dataVerification-dialog #data-verification-date-select").val(item2.type2);
  45822. $("#luckysheet-dataVerification-dialog .show-box-item-date .input").hide();
  45823. if (item2.type2 == "bw" || item2.type2 == "nb") {
  45824. $("#luckysheet-dataVerification-dialog .show-box-item-date .input1").show();
  45825. } else {
  45826. $("#luckysheet-dataVerification-dialog .show-box-item-date .input2").show();
  45827. }
  45828. $("#luckysheet-dataVerification-dialog .show-box-item-date .data-verification-value1").val(item2.value1);
  45829. $("#luckysheet-dataVerification-dialog .show-box-item-date .data-verification-value2").val(item2.value2);
  45830. } else if (item2.type == "validity") {
  45831. $("#luckysheet-dataVerification-dialog .show-box .show-box-item-validity").show();
  45832. $("#luckysheet-dataVerification-dialog #data-verification-validity-select").val(item2.type2);
  45833. }
  45834. $("#luckysheet-dataVerification-dialog #data-verification-remote").prop("checked", item2.remote);
  45835. $("#luckysheet-dataVerification-dialog #data-verification-prohibitInput").prop("checked", item2.prohibitInput);
  45836. $("#luckysheet-dataVerification-dialog #data-verification-hint-show").prop("checked", item2.hintShow);
  45837. if (item2.hintShow) {
  45838. $("#luckysheet-dataVerification-dialog .data-verification-hint-text").show();
  45839. } else {
  45840. $("#luckysheet-dataVerification-dialog .data-verification-hint-text").hide();
  45841. }
  45842. $("#luckysheet-dataVerification-dialog .data-verification-hint-text input").val(item2.hintText);
  45843. },
  45844. rangeDialog: function(dataSource, txt) {
  45845. let _this = this;
  45846. const _locale = locale_default();
  45847. const dvText = _locale.dataVerification;
  45848. const buttonText = _locale.button;
  45849. $("#luckysheet-modal-dialog-mask").hide();
  45850. $("#luckysheet-dataVerificationRange-dialog").remove();
  45851. $("body").append(replaceHtml(modelHTML, {
  45852. "id": "luckysheet-dataVerificationRange-dialog",
  45853. "addclass": "luckysheet-dataVerificationRange-dialog",
  45854. "title": dvText.selectCellRange,
  45855. "content": `<input readonly="readonly" placeholder="${dvText.selectCellRange2}" value="${txt}"/>`,
  45856. "botton": `<button id="luckysheet-dataVerificationRange-dialog-confirm" class="btn btn-primary" data-source="${dataSource}">${buttonText.confirm}</button>
  45857. <button id="luckysheet-dataVerificationRange-dialog-close" class="btn btn-default">${buttonText.close}</button>`,
  45858. "style": "z-index:100003"
  45859. }));
  45860. let $t = $("#luckysheet-dataVerificationRange-dialog").find(".luckysheet-modal-dialog-content").css("min-width", 300).end(), myh = $t.outerHeight(), myw = $t.outerWidth();
  45861. let winw = $(window).width(), winh = $(window).height();
  45862. let scrollLeft = $(document).scrollLeft(), scrollTop = $(document).scrollTop();
  45863. $("#luckysheet-dataVerificationRange-dialog").css({
  45864. "left": (winw + scrollLeft - myw) / 2,
  45865. "top": (winh + scrollTop - myh) / 3
  45866. }).show();
  45867. },
  45868. getTxtByRange: function(range2) {
  45869. if (range2.length > 0) {
  45870. let txt = [];
  45871. for (let s = 0; s < range2.length; s++) {
  45872. let r1 = range2[s].row[0], r2 = range2[s].row[1];
  45873. let c1 = range2[s].column[0], c2 = range2[s].column[1];
  45874. txt.push(getRangetxt(store_default.currentSheetIndex, {"row": [r1, r2], "column": [c1, c2]}, store_default.currentSheetIndex));
  45875. }
  45876. return txt.join(",");
  45877. }
  45878. },
  45879. getRangeByTxt: function(txt) {
  45880. let range2 = [];
  45881. if (txt.indexOf(",") != -1) {
  45882. let arr = txt.split(",");
  45883. for (let i2 = 0; i2 < arr.length; i2++) {
  45884. if (formula_default.iscelldata(arr[i2])) {
  45885. range2.push(formula_default.getcellrange(arr[i2]));
  45886. } else {
  45887. range2 = [];
  45888. break;
  45889. }
  45890. }
  45891. } else {
  45892. if (formula_default.iscelldata(txt)) {
  45893. range2.push(formula_default.getcellrange(txt));
  45894. }
  45895. }
  45896. return range2;
  45897. },
  45898. cellFocus: function(r2, c2, clickMode) {
  45899. $("#luckysheet-dataVerification-dropdown-btn").hide();
  45900. $("#luckysheet-dataVerification-showHintBox").hide();
  45901. let _this = this;
  45902. if (_this.dataVerification == null || _this.dataVerification[r2 + "_" + c2] == null) {
  45903. $("#luckysheet-dataVerification-dropdown-List").hide();
  45904. return;
  45905. }
  45906. let row = store_default.visibledatarow[r2], row_pre = r2 == 0 ? 0 : store_default.visibledatarow[r2 - 1];
  45907. let col = store_default.visibledatacolumn[c2], col_pre = c2 == 0 ? 0 : store_default.visibledatacolumn[c2 - 1];
  45908. let margeset = menuButton_default.mergeborer(store_default.flowdata, r2, c2);
  45909. if (!!margeset) {
  45910. row = margeset.row[1];
  45911. row_pre = margeset.row[0];
  45912. col = margeset.column[1];
  45913. col_pre = margeset.column[0];
  45914. }
  45915. let item2 = _this.dataVerification[r2 + "_" + c2];
  45916. if (clickMode && item2.type == "checkbox") {
  45917. _this.checkboxChange(r2, c2);
  45918. return;
  45919. }
  45920. if (item2.type == "dropdown") {
  45921. $("#luckysheet-dataVerification-dropdown-btn").show().css({
  45922. "max-width": col - col_pre,
  45923. "max-height": row - row_pre,
  45924. "left": col - 20,
  45925. "top": row_pre + (row - row_pre - 20) / 2
  45926. });
  45927. if ($("#luckysheet-dataVerification-dropdown-List").is(":visible")) {
  45928. let dataIndex = $("#luckysheet-dataVerification-dropdown-List").prop("data-index");
  45929. if (dataIndex != r2 + "_" + c2) {
  45930. $("#luckysheet-dataVerification-dropdown-List").hide();
  45931. }
  45932. }
  45933. } else {
  45934. $("#luckysheet-dataVerification-dropdown-List").hide();
  45935. }
  45936. if (item2.hintShow) {
  45937. let hintText;
  45938. if (store_default.lang == "en") {
  45939. hintText = '<span style="color:#f5a623;">Hint: </span>';
  45940. } else {
  45941. hintText = '<span style="color:#f5a623;">\u63D0\u793A\uFF1A</span>';
  45942. }
  45943. hintText += _this.getHintText(item2);
  45944. $("#luckysheet-dataVerification-showHintBox").html(hintText).show().css({
  45945. "left": col_pre,
  45946. "top": row
  45947. });
  45948. return;
  45949. }
  45950. let cellValue = getcellvalue(r2, c2, null);
  45951. if (isRealNull(cellValue)) {
  45952. return;
  45953. }
  45954. let validate = _this.validateCellData(cellValue, item2);
  45955. if (!validate) {
  45956. let failureText;
  45957. if (store_default.lang == "en") {
  45958. failureText = '<span style="color:#f72626;">Failure: </span>';
  45959. } else {
  45960. failureText = '<span style="color:#f72626;">\u5931\u6548\uFF1A</span>';
  45961. }
  45962. failureText += _this.getFailureText(item2);
  45963. $("#luckysheet-dataVerification-showHintBox").html(failureText).show().css({
  45964. "left": col_pre,
  45965. "top": row
  45966. });
  45967. }
  45968. },
  45969. getHintText: function(item2) {
  45970. let _this = this;
  45971. let hintText = item2.hintText || "";
  45972. if (hintText.length == 0) {
  45973. if (store_default.lang == "en") {
  45974. if (item2.type == "dropdown") {
  45975. hintText += "please select an option in the drop-down list";
  45976. } else if (item2.type == "checkbox") {
  45977. } else if (item2.type == "number" || item2.type == "number_integer" || item2.type == "number_decimal") {
  45978. hintText += "please enter a " + _this.optionLabel_en[item2.type] + " " + _this.optionLabel_en[item2.type2] + " " + item2.value1;
  45979. if (item2.type2 == "bw" || item2.type2 == "nb") {
  45980. hintText += " and " + item2.value2;
  45981. }
  45982. } else if (item2.type == "text_content") {
  45983. hintText += "please enter text " + _this.optionLabel_en[item2.type2] + " " + item2.value1;
  45984. } else if (item2.type == "text_length") {
  45985. hintText += "please enter text with length " + _this.optionLabel_en[item2.type2] + " " + item2.value1;
  45986. if (item2.type2 == "bw" || item2.type2 == "nb") {
  45987. hintText += " and " + item2.value2;
  45988. }
  45989. } else if (item2.type == "date") {
  45990. hintText += "please enter a date " + _this.optionLabel_en[item2.type2] + " " + item2.value1;
  45991. if (item2.type2 == "bw" || item2.type2 == "nb") {
  45992. hintText += " and " + item2.value2;
  45993. }
  45994. } else if (item2.type == "validity") {
  45995. hintText += "please enter the correct " + _this.optionLabel_en[item2.type2];
  45996. }
  45997. } else {
  45998. if (item2.type == "dropdown") {
  45999. hintText += "\u8BF7\u9009\u62E9\u4E0B\u62C9\u5217\u8868\u4E2D\u7684\u9009\u9879";
  46000. } else if (item2.type == "checkbox") {
  46001. } else if (item2.type == "number" || item2.type == "number_integer" || item2.type == "number_decimal") {
  46002. hintText += "\u8BF7\u8F93\u5165" + _this.optionLabel[item2.type2] + item2.value1;
  46003. if (item2.type2 == "bw" || item2.type2 == "nb") {
  46004. hintText += "\u548C" + item2.value2 + "\u4E4B\u95F4";
  46005. }
  46006. hintText += "\u7684" + _this.optionLabel[item2.type];
  46007. } else if (item2.type == "text_content") {
  46008. hintText += "\u8BF7\u8F93\u5165\u5185\u5BB9" + _this.optionLabel[item2.type2] + item2.value1 + "\u7684\u6587\u672C";
  46009. } else if (item2.type == "text_length") {
  46010. hintText += "\u8BF7\u8F93\u5165\u957F\u5EA6" + _this.optionLabel[item2.type2] + item2.value1;
  46011. if (item2.type2 == "bw" || item2.type2 == "nb") {
  46012. hintText += "\u548C" + item2.value2 + "\u4E4B\u95F4";
  46013. }
  46014. hintText += "\u7684\u6587\u672C";
  46015. } else if (item2.type == "date") {
  46016. hintText += "\u8BF7\u8F93\u5165" + _this.optionLabel[item2.type2] + item2.value1;
  46017. if (item2.type2 == "bw" || item2.type2 == "nb") {
  46018. hintText += "\u548C" + item2.value2 + "\u4E4B\u95F4";
  46019. }
  46020. hintText += "\u7684\u65E5\u671F";
  46021. } else if (item2.type == "validity") {
  46022. hintText += "\u8BF7\u8F93\u5165\u6B63\u786E\u7684" + _this.optionLabel[item2.type2];
  46023. }
  46024. }
  46025. }
  46026. return hintText;
  46027. },
  46028. getFailureText: function(item2) {
  46029. let _this = this;
  46030. let failureText = "";
  46031. if (store_default.lang == "en") {
  46032. if (item2.type == "dropdown") {
  46033. failureText += "what you selected is not an option in the drop-down list";
  46034. } else if (item2.type == "checkbox") {
  46035. } else if (item2.type == "number" || item2.type == "number_integer" || item2.type == "number_decimal") {
  46036. failureText += "what you entered is not a " + _this.optionLabel_en[item2.type] + " " + _this.optionLabel_en[item2.type2] + " " + item2.value1;
  46037. if (item2.type2 == "bw" || item2.type2 == "nb") {
  46038. failureText += " and " + item2.value2;
  46039. }
  46040. } else if (item2.type == "text_content") {
  46041. failureText += "what you entered is not text that " + _this.optionLabel_en[item2.type2] + " " + item2.value1;
  46042. } else if (item2.type == "text_length") {
  46043. failureText += "the text you entered is not length " + _this.optionLabel_en[item2.type2] + " " + item2.value1;
  46044. if (item2.type2 == "bw" || item2.type2 == "nb") {
  46045. failureText += " and " + item2.value2;
  46046. }
  46047. } else if (item2.type == "date") {
  46048. failureText += "the date you entered is not " + _this.optionLabel_en[item2.type2] + " " + item2.value1;
  46049. if (item2.type2 == "bw" || item2.type2 == "nb") {
  46050. failureText += " and " + item2.value2;
  46051. }
  46052. } else if (item2.type == "validity") {
  46053. failureText += "what you entered is not a correct " + _this.optionLabel_en[item2.type2];
  46054. }
  46055. } else {
  46056. if (item2.type == "dropdown") {
  46057. failureText += "\u4F60\u9009\u62E9\u7684\u4E0D\u662F\u4E0B\u62C9\u5217\u8868\u4E2D\u7684\u9009\u9879";
  46058. } else if (item2.type == "checkbox") {
  46059. } else if (item2.type == "number" || item2.type == "number_integer" || item2.type == "number_decimal") {
  46060. failureText += "\u4F60\u8F93\u5165\u7684\u4E0D\u662F" + _this.optionLabel[item2.type2] + item2.value1;
  46061. if (item2.type2 == "bw" || item2.type2 == "nb") {
  46062. failureText += "\u548C" + item2.value2 + "\u4E4B\u95F4";
  46063. }
  46064. failureText += "\u7684" + _this.optionLabel[item2.type];
  46065. } else if (item2.type == "text_content") {
  46066. failureText += "\u4F60\u8F93\u5165\u7684\u4E0D\u662F\u5185\u5BB9" + _this.optionLabel[item2.type2] + item2.value1 + "\u7684\u6587\u672C";
  46067. } else if (item2.type == "text_length") {
  46068. failureText += "\u4F60\u8F93\u5165\u7684\u4E0D\u662F\u957F\u5EA6" + _this.optionLabel[item2.type2] + item2.value1;
  46069. if (item2.type2 == "bw" || item2.type2 == "nb") {
  46070. failureText += "\u548C" + item2.value2 + "\u4E4B\u95F4";
  46071. }
  46072. failureText += "\u7684\u6587\u672C";
  46073. } else if (item2.type == "date") {
  46074. failureText += "\u4F60\u8F93\u5165\u7684\u4E0D\u662F" + _this.optionLabel[item2.type2] + item2.value1;
  46075. if (item2.type2 == "bw" || item2.type2 == "nb") {
  46076. failureText += "\u548C" + item2.value2 + "\u4E4B\u95F4";
  46077. }
  46078. failureText += "\u7684\u65E5\u671F";
  46079. } else if (item2.type == "validity") {
  46080. failureText += "\u4F60\u8F93\u5165\u7684\u4E0D\u662F\u4E00\u4E2A\u6B63\u786E\u7684" + _this.optionLabel[item2.type2];
  46081. }
  46082. }
  46083. return failureText;
  46084. },
  46085. validateCellData: function(cellValue, item2) {
  46086. let _this = this;
  46087. let type = item2.type, type2 = item2.type2, value1 = item2.value1, value2 = item2.value2;
  46088. if (type == "dropdown") {
  46089. let list = _this.getDropdownList(value1);
  46090. if (type2 && cellValue) {
  46091. return cellValue.split(",").every(function(i2) {
  46092. return list.indexOf(i2) !== -1;
  46093. });
  46094. }
  46095. let result = false;
  46096. for (let i2 = 0; i2 < list.length; i2++) {
  46097. if (list[i2] == cellValue) {
  46098. result = true;
  46099. break;
  46100. }
  46101. }
  46102. return result;
  46103. } else if (type == "checkbox") {
  46104. } else if (type == "number" || type == "number_integer" || type == "number_decimal") {
  46105. if (!isRealNum(cellValue)) {
  46106. return false;
  46107. }
  46108. cellValue = Number(cellValue);
  46109. if (type == "number_integer" && cellValue % 1 !== 0) {
  46110. return false;
  46111. }
  46112. if (type == "number_decimal" && cellValue % 1 === 0) {
  46113. return false;
  46114. }
  46115. value1 = Number(value1);
  46116. value2 = Number(value2);
  46117. if (type2 == "bw" && (cellValue < value1 || cellValue > value2)) {
  46118. return false;
  46119. }
  46120. if (type2 == "nb" && (cellValue >= value1 && cellValue <= value2)) {
  46121. return false;
  46122. }
  46123. if (type2 == "eq" && cellValue != value1) {
  46124. return false;
  46125. }
  46126. if (type2 == "ne" && cellValue == value1) {
  46127. return false;
  46128. }
  46129. if (type2 == "gt" && cellValue <= value1) {
  46130. return false;
  46131. }
  46132. if (type2 == "lt" && cellValue >= value1) {
  46133. return false;
  46134. }
  46135. if (type2 == "gte" && cellValue < value1) {
  46136. return false;
  46137. }
  46138. if (type2 == "lte" && cellValue > value1) {
  46139. return false;
  46140. }
  46141. } else if (type == "text_content") {
  46142. cellValue = cellValue.toString();
  46143. value1 = value1.toString();
  46144. if (type2 == "include" && cellValue.indexOf(value1) == -1) {
  46145. return false;
  46146. }
  46147. if (type2 == "exclude" && cellValue.indexOf(value1) > -1) {
  46148. return false;
  46149. }
  46150. if (type2 == "equal" && cellValue != value1) {
  46151. return false;
  46152. }
  46153. } else if (type == "text_length") {
  46154. cellValue = cellValue.toString().length;
  46155. value1 = Number(value1);
  46156. value2 = Number(value2);
  46157. if (type2 == "bw" && (cellValue < value1 || cellValue > value2)) {
  46158. return false;
  46159. }
  46160. if (type2 == "nb" && (cellValue >= value1 && cellValue <= value2)) {
  46161. return false;
  46162. }
  46163. if (type2 == "eq" && cellValue != value1) {
  46164. return false;
  46165. }
  46166. if (type2 == "ne" && cellValue == value1) {
  46167. return false;
  46168. }
  46169. if (type2 == "gt" && cellValue <= value1) {
  46170. return false;
  46171. }
  46172. if (type2 == "lt" && cellValue >= value1) {
  46173. return false;
  46174. }
  46175. if (type2 == "gte" && cellValue < value1) {
  46176. return false;
  46177. }
  46178. if (type2 == "lte" && cellValue > value1) {
  46179. return false;
  46180. }
  46181. } else if (type == "date") {
  46182. if (!isdatetime(cellValue)) {
  46183. return false;
  46184. }
  46185. if (type2 == "bw" && (diff(cellValue, value1) < 0 || diff(cellValue, value2) > 0)) {
  46186. return false;
  46187. }
  46188. if (type2 == "nb" && (diff(cellValue, value1) >= 0 && diff(cellValue, value2) <= 0)) {
  46189. return false;
  46190. }
  46191. if (type2 == "eq" && diff(cellValue, value1) != 0) {
  46192. return false;
  46193. }
  46194. if (type2 == "ne" && diff(cellValue, value1) == 0) {
  46195. return false;
  46196. }
  46197. if (type2 == "bf" && diff(cellValue, value1) >= 0) {
  46198. return false;
  46199. }
  46200. if (type2 == "nbf" && diff(cellValue, value1) < 0) {
  46201. return false;
  46202. }
  46203. if (type2 == "af" && diff(cellValue, value1) <= 0) {
  46204. return false;
  46205. }
  46206. if (type2 == "naf" && diff(cellValue, value1) > 0) {
  46207. return false;
  46208. }
  46209. } else if (type == "validity") {
  46210. if (type2 == "card" && !validateIdCard(cellValue)) {
  46211. return false;
  46212. }
  46213. if (type2 == "phone" && !/^1[3456789]\d{9}$/.test(cellValue)) {
  46214. return false;
  46215. }
  46216. }
  46217. return true;
  46218. },
  46219. dropdownListShow: function() {
  46220. $("#luckysheet-dataVerification-showHintBox").hide();
  46221. let _this = this;
  46222. let last = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1];
  46223. let rowIndex = last.row_focus;
  46224. let colIndex = last.column_focus;
  46225. let row = store_default.visibledatarow[rowIndex], row_pre = rowIndex == 0 ? 0 : store_default.visibledatarow[rowIndex - 1];
  46226. let col = store_default.visibledatacolumn[colIndex], col_pre = colIndex == 0 ? 0 : store_default.visibledatacolumn[colIndex - 1];
  46227. let margeset = menuButton_default.mergeborer(store_default.flowdata, rowIndex, colIndex);
  46228. if (!!margeset) {
  46229. row = margeset.row[1];
  46230. row_pre = margeset.row[0];
  46231. col = margeset.column[1];
  46232. col_pre = margeset.column[0];
  46233. }
  46234. let item2 = _this.dataVerification[rowIndex + "_" + colIndex];
  46235. let list = _this.getDropdownList(item2.value1);
  46236. let optionHtml = "";
  46237. if (item2.type === "dropdown" && item2.type2) {
  46238. let cellValue = getcellvalue(rowIndex, colIndex, null);
  46239. let valueArr = isRealNull(cellValue) ? [] : cellValue.split(",");
  46240. list.forEach((i2) => {
  46241. let checked = valueArr.indexOf(i2) !== -1;
  46242. optionHtml += `<div class="dropdown-List-item luckysheet-mousedown-cancel multi${checked ? " checked" : ""}">${i2}</div>`;
  46243. });
  46244. } else {
  46245. list.forEach((i2) => {
  46246. optionHtml += `<div class="dropdown-List-item luckysheet-mousedown-cancel">${i2}</div>`;
  46247. });
  46248. }
  46249. $("#luckysheet-dataVerification-dropdown-List").html(optionHtml).prop("data-index", rowIndex + "_" + colIndex).show().css({
  46250. "width": col - col_pre - 1,
  46251. "left": col_pre,
  46252. "top": row
  46253. });
  46254. let myh = $("#luckysheet-dataVerification-dropdown-List").outerHeight();
  46255. let currentWinH = $("#luckysheet-cell-main")[0].scrollHeight;
  46256. if (row + myh > currentWinH - 42 - 6) {
  46257. $("#luckysheet-dataVerification-dropdown-List").css({
  46258. "top": row_pre - myh
  46259. });
  46260. }
  46261. },
  46262. getDropdownList: function(txt) {
  46263. let list = [];
  46264. if (formula_default.iscelldata(txt)) {
  46265. let range2 = formula_default.getcellrange(txt);
  46266. let d = store_default.luckysheetfile[getSheetIndex(range2.sheetIndex)].data;
  46267. for (let r2 = range2.row[0]; r2 <= range2.row[1]; r2++) {
  46268. for (let c2 = range2.column[0]; c2 <= range2.column[1]; c2++) {
  46269. if (d[r2] == null) {
  46270. continue;
  46271. }
  46272. let cell = d[r2][c2];
  46273. if (cell == null || cell.v == null) {
  46274. continue;
  46275. }
  46276. let v = cell.m || cell.v;
  46277. if (!list.includes(v)) {
  46278. list.push(v);
  46279. }
  46280. }
  46281. }
  46282. } else {
  46283. let arr = txt.split(",");
  46284. for (let i2 = 0; i2 < arr.length; i2++) {
  46285. let v = arr[i2];
  46286. if (v.length == 0) {
  46287. continue;
  46288. }
  46289. if (!list.includes(v)) {
  46290. list.push(v);
  46291. }
  46292. }
  46293. }
  46294. return list;
  46295. },
  46296. checkboxChange: function(r2, c2) {
  46297. let _this = this;
  46298. let historyDataVerification = $.extend(true, {}, _this.dataVerification);
  46299. let currentDataVerification = $.extend(true, {}, _this.dataVerification);
  46300. let item2 = currentDataVerification[r2 + "_" + c2];
  46301. item2.checked = !item2.checked;
  46302. let value = item2.value2;
  46303. if (item2.checked) {
  46304. value = item2.value1;
  46305. }
  46306. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  46307. setcellvalue(r2, c2, d, value);
  46308. _this.refOfCheckbox(historyDataVerification, currentDataVerification, store_default.currentSheetIndex, d, {"row": [r2, r2], "column": [c2, c2]});
  46309. },
  46310. ref: function(historyDataVerification, currentDataVerification, sheetIndex) {
  46311. let _this = this;
  46312. if (store_default.clearjfundo) {
  46313. store_default.jfundo.length = 0;
  46314. let redo2 = {};
  46315. redo2["type"] = "updateDataVerification";
  46316. redo2["sheetIndex"] = sheetIndex;
  46317. redo2["historyDataVerification"] = historyDataVerification;
  46318. redo2["currentDataVerification"] = currentDataVerification;
  46319. store_default.jfredo.push(redo2);
  46320. }
  46321. _this.dataVerification = currentDataVerification;
  46322. store_default.luckysheetfile[getSheetIndex(sheetIndex)].dataVerification = currentDataVerification;
  46323. if (server_default.allowUpdate) {
  46324. server_default.saveParam("all", sheetIndex, currentDataVerification, {"k": "dataVerification"});
  46325. }
  46326. setTimeout(function() {
  46327. luckysheetrefreshgrid();
  46328. }, 1);
  46329. },
  46330. refOfCheckbox: function(historyDataVerification, currentDataVerification, sheetIndex, d, range2) {
  46331. let _this = this;
  46332. if (store_default.clearjfundo) {
  46333. store_default.jfundo.length = 0;
  46334. let redo2 = {};
  46335. redo2["type"] = "updateDataVerificationOfCheckbox";
  46336. redo2["sheetIndex"] = sheetIndex;
  46337. redo2["historyDataVerification"] = historyDataVerification;
  46338. redo2["currentDataVerification"] = currentDataVerification;
  46339. redo2["data"] = store_default.flowdata;
  46340. redo2["curData"] = d;
  46341. redo2["range"] = range2;
  46342. store_default.jfredo.push(redo2);
  46343. }
  46344. _this.dataVerification = currentDataVerification;
  46345. store_default.luckysheetfile[getSheetIndex(sheetIndex)].dataVerification = currentDataVerification;
  46346. store_default.flowdata = d;
  46347. editor_default.webWorkerFlowDataCache(store_default.flowdata);
  46348. store_default.luckysheetfile[getSheetIndex(sheetIndex)].data = store_default.flowdata;
  46349. if (server_default.allowUpdate) {
  46350. server_default.saveParam("all", sheetIndex, currentDataVerification, {"k": "dataVerification"});
  46351. server_default.historyParam(store_default.flowdata, sheetIndex, range2);
  46352. }
  46353. setTimeout(function() {
  46354. luckysheetrefreshgrid();
  46355. }, 1);
  46356. }
  46357. };
  46358. dataVerificationCtrl_default = dataVerificationCtrl;
  46359. }
  46360. });
  46361. // src/global/extend.js
  46362. function luckysheetextendtable(type, index2, value, direction, sheetIndex) {
  46363. sheetIndex = sheetIndex || store_default.currentSheetIndex;
  46364. if (type == "row" && !checkProtectionAuthorityNormal(sheetIndex, "insertRows")) {
  46365. return;
  46366. } else if (type == "column" && !checkProtectionAuthorityNormal(sheetIndex, "insertColumns")) {
  46367. return;
  46368. }
  46369. let curOrder = getSheetIndex(sheetIndex);
  46370. let file = store_default.luckysheetfile[curOrder];
  46371. let d = $.extend(true, [], file.data);
  46372. value = Math.floor(value);
  46373. let cfg = $.extend(true, {}, file.config);
  46374. if (cfg["merge"] == null) {
  46375. cfg["merge"] = {};
  46376. }
  46377. let merge_new = {};
  46378. for (let m in cfg["merge"]) {
  46379. let mc = cfg["merge"][m];
  46380. let r2 = mc.r, c2 = mc.c, rs = mc.rs, cs = mc.cs;
  46381. if (type == "row") {
  46382. if (index2 < r2) {
  46383. merge_new[r2 + value + "_" + c2] = {"r": r2 + value, "c": c2, "rs": rs, "cs": cs};
  46384. } else if (index2 == r2 && rs != 1) {
  46385. if (direction == "lefttop") {
  46386. merge_new[r2 + value + "_" + c2] = {"r": r2 + value, "c": c2, "rs": rs, "cs": cs};
  46387. } else {
  46388. merge_new[r2 + "_" + c2] = {"r": r2, "c": c2, "rs": rs + value, "cs": cs};
  46389. }
  46390. } else if (index2 < r2 + rs - 1) {
  46391. merge_new[r2 + "_" + c2] = {"r": r2, "c": c2, "rs": rs + value, "cs": cs};
  46392. } else if (index2 == r2 + rs - 1) {
  46393. if (direction == "lefttop") {
  46394. if (rs == 1) {
  46395. merge_new[r2 + value + "_" + c2] = {"r": r2 + value, "c": c2, "rs": rs, "cs": cs};
  46396. } else {
  46397. merge_new[r2 + "_" + c2] = {"r": r2, "c": c2, "rs": rs + value, "cs": cs};
  46398. }
  46399. } else {
  46400. merge_new[r2 + "_" + c2] = {"r": r2, "c": c2, "rs": rs, "cs": cs};
  46401. }
  46402. } else {
  46403. merge_new[r2 + "_" + c2] = {"r": r2, "c": c2, "rs": rs, "cs": cs};
  46404. }
  46405. } else if (type == "column") {
  46406. if (index2 < c2) {
  46407. merge_new[r2 + "_" + (c2 + value)] = {"r": r2, "c": c2 + value, "rs": rs, "cs": cs};
  46408. } else if (index2 == c2 && cs != 1) {
  46409. if (direction == "lefttop") {
  46410. merge_new[r2 + "_" + (c2 + value)] = {"r": r2, "c": c2 + value, "rs": rs, "cs": cs};
  46411. } else {
  46412. merge_new[r2 + "_" + c2] = {"r": r2, "c": c2, "rs": rs, "cs": cs + value};
  46413. }
  46414. } else if (index2 < c2 + cs - 1) {
  46415. merge_new[r2 + "_" + c2] = {"r": r2, "c": c2, "rs": rs, "cs": cs + value};
  46416. } else if (index2 == c2 + cs - 1) {
  46417. if (direction == "lefttop") {
  46418. if (cs == 1) {
  46419. merge_new[r2 + "_" + (c2 + value)] = {"r": r2, "c": c2 + value, "rs": rs, "cs": cs};
  46420. } else {
  46421. merge_new[r2 + "_" + c2] = {"r": r2, "c": c2, "rs": rs, "cs": cs + value};
  46422. }
  46423. } else {
  46424. merge_new[r2 + "_" + c2] = {"r": r2, "c": c2, "rs": rs, "cs": cs};
  46425. }
  46426. } else {
  46427. merge_new[r2 + "_" + c2] = {"r": r2, "c": c2, "rs": rs, "cs": cs};
  46428. }
  46429. }
  46430. }
  46431. cfg["merge"] = merge_new;
  46432. let calcChain = file.calcChain;
  46433. let newCalcChain = [];
  46434. if (calcChain != null && calcChain.length > 0) {
  46435. for (let i2 = 0; i2 < calcChain.length; i2++) {
  46436. let calc = $.extend(true, {}, calcChain[i2]);
  46437. let calc_r = calc.r, calc_c = calc.c, calc_i = calc.index, calc_funcStr = getcellFormula(calc_r, calc_c, calc_i);
  46438. if (type == "row") {
  46439. let functionStr = "=" + formula_default.functionStrChange(calc_funcStr, "add", "row", direction, index2, value);
  46440. if (d[calc_r][calc_c] && d[calc_r][calc_c].f == calc_funcStr) {
  46441. d[calc_r][calc_c].f = functionStr;
  46442. }
  46443. if (direction == "lefttop") {
  46444. if (calc_r >= index2) {
  46445. calc.r += value;
  46446. }
  46447. } else if (direction == "rightbottom") {
  46448. if (calc_r > index2) {
  46449. calc.r += value;
  46450. }
  46451. }
  46452. newCalcChain.push(calc);
  46453. } else if (type == "column") {
  46454. let functionStr = "=" + formula_default.functionStrChange(calc_funcStr, "add", "col", direction, index2, value);
  46455. if (d[calc_r][calc_c] && d[calc_r][calc_c].f == calc_funcStr) {
  46456. d[calc_r][calc_c].f = functionStr;
  46457. }
  46458. if (direction == "lefttop") {
  46459. if (calc_c >= index2) {
  46460. calc.c += value;
  46461. }
  46462. } else if (direction == "rightbottom") {
  46463. if (calc_c > index2) {
  46464. calc.c += value;
  46465. }
  46466. }
  46467. newCalcChain.push(calc);
  46468. }
  46469. }
  46470. }
  46471. let filter_select = file.filter_select;
  46472. let filter = file.filter;
  46473. let newFilterObj = null;
  46474. if (filter_select != null && JSON.stringify(filter_select) != "{}") {
  46475. newFilterObj = {"filter_select": null, "filter": null};
  46476. let f_r1 = filter_select.row[0], f_r2 = filter_select.row[1];
  46477. let f_c1 = filter_select.column[0], f_c2 = filter_select.column[1];
  46478. if (type == "row") {
  46479. if (f_r1 < index2) {
  46480. if (f_r2 == index2 && direction == "lefttop") {
  46481. f_r2 += value;
  46482. } else if (f_r2 > index2) {
  46483. f_r2 += value;
  46484. }
  46485. } else if (f_r1 == index2) {
  46486. if (direction == "lefttop") {
  46487. f_r1 += value;
  46488. f_r2 += value;
  46489. } else if (direction == "rightbottom" && f_r2 > index2) {
  46490. f_r2 += value;
  46491. }
  46492. } else {
  46493. f_r1 += value;
  46494. f_r2 += value;
  46495. }
  46496. if (filter != null) {
  46497. newFilterObj.filter = {};
  46498. for (let k in filter) {
  46499. let f_rowhidden = filter[k].rowhidden;
  46500. let f_rowhidden_new = {};
  46501. for (let n in f_rowhidden) {
  46502. n = parseFloat(n);
  46503. if (n < index2) {
  46504. f_rowhidden_new[n] = 0;
  46505. } else if (n == index2) {
  46506. if (direction == "lefttop") {
  46507. f_rowhidden_new[n + value] = 0;
  46508. } else if (direction == "rightbottom") {
  46509. f_rowhidden_new[n] = 0;
  46510. }
  46511. } else {
  46512. f_rowhidden_new[n + value] = 0;
  46513. }
  46514. }
  46515. newFilterObj.filter[k] = $.extend(true, {}, filter[k]);
  46516. newFilterObj.filter[k].rowhidden = f_rowhidden_new;
  46517. newFilterObj.filter[k].str = f_r1;
  46518. newFilterObj.filter[k].edr = f_r2;
  46519. }
  46520. }
  46521. } else if (type == "column") {
  46522. if (f_c1 < index2) {
  46523. if (f_c2 == index2 && direction == "lefttop") {
  46524. f_c2 += value;
  46525. } else if (f_c2 > index2) {
  46526. f_c2 += value;
  46527. }
  46528. } else if (f_c1 == index2) {
  46529. if (direction == "lefttop") {
  46530. f_c1 += value;
  46531. f_c2 += value;
  46532. } else if (direction == "rightbottom" && f_c2 > index2) {
  46533. f_c2 += value;
  46534. }
  46535. } else {
  46536. f_c1 += value;
  46537. f_c2 += value;
  46538. }
  46539. if (filter != null) {
  46540. newFilterObj.filter = {};
  46541. for (let k in filter) {
  46542. let f_cindex = filter[k].cindex;
  46543. if (f_cindex == index2 && direction == "lefttop") {
  46544. f_cindex += value;
  46545. } else if (f_cindex > index2) {
  46546. f_cindex += value;
  46547. }
  46548. newFilterObj.filter[f_cindex - f_c1] = $.extend(true, {}, filter[k]);
  46549. newFilterObj.filter[f_cindex - f_c1].cindex = f_cindex;
  46550. newFilterObj.filter[f_cindex - f_c1].stc = f_c1;
  46551. newFilterObj.filter[f_cindex - f_c1].edc = f_c2;
  46552. }
  46553. }
  46554. }
  46555. newFilterObj.filter_select = {"row": [f_r1, f_r2], "column": [f_c1, f_c2]};
  46556. }
  46557. if (newFilterObj != null && newFilterObj.filter != null) {
  46558. if (cfg["rowhidden"] == null) {
  46559. cfg["rowhidden"] = {};
  46560. }
  46561. for (let k in newFilterObj.filter) {
  46562. let f_rowhidden = newFilterObj.filter[k].rowhidden;
  46563. for (let n in f_rowhidden) {
  46564. cfg["rowhidden"][n] = 0;
  46565. }
  46566. }
  46567. }
  46568. let CFarr = file.luckysheet_conditionformat_save;
  46569. let newCFarr = [];
  46570. if (CFarr != null && CFarr.length > 0) {
  46571. for (let i2 = 0; i2 < CFarr.length; i2++) {
  46572. let cf_range = CFarr[i2].cellrange;
  46573. let cf_new_range = [];
  46574. for (let j = 0; j < cf_range.length; j++) {
  46575. let CFr1 = cf_range[j].row[0], CFr2 = cf_range[j].row[1], CFc1 = cf_range[j].column[0], CFc2 = cf_range[j].column[1];
  46576. if (type == "row") {
  46577. if (CFr1 < index2) {
  46578. if (CFr2 == index2 && direction == "lefttop") {
  46579. CFr2 += value;
  46580. } else if (CFr2 > index2) {
  46581. CFr2 += value;
  46582. }
  46583. } else if (CFr1 == index2) {
  46584. if (direction == "lefttop") {
  46585. CFr1 += value;
  46586. CFr2 += value;
  46587. } else if (direction == "rightbottom" && CFr2 > index2) {
  46588. CFr2 += value;
  46589. }
  46590. } else {
  46591. CFr1 += value;
  46592. CFr2 += value;
  46593. }
  46594. } else if (type == "column") {
  46595. if (CFc1 < index2) {
  46596. if (CFc2 == index2 && direction == "lefttop") {
  46597. CFc2 += value;
  46598. } else if (CFc2 > index2) {
  46599. CFc2 += value;
  46600. }
  46601. } else if (CFc1 == index2) {
  46602. if (direction == "lefttop") {
  46603. CFc1 += value;
  46604. CFc2 += value;
  46605. } else if (direction == "rightbottom" && CFc2 > index2) {
  46606. CFc2 += value;
  46607. }
  46608. } else {
  46609. CFc1 += value;
  46610. CFc2 += value;
  46611. }
  46612. }
  46613. cf_new_range.push({"row": [CFr1, CFr2], "column": [CFc1, CFc2]});
  46614. }
  46615. let cf = $.extend(true, {}, CFarr[i2]);
  46616. cf.cellrange = cf_new_range;
  46617. newCFarr.push(cf);
  46618. }
  46619. }
  46620. let AFarr = file.luckysheet_alternateformat_save;
  46621. let newAFarr = [];
  46622. if (AFarr != null && AFarr.length > 0) {
  46623. for (let i2 = 0; i2 < AFarr.length; i2++) {
  46624. let AFr1 = AFarr[i2].cellrange.row[0], AFr2 = AFarr[i2].cellrange.row[1], AFc1 = AFarr[i2].cellrange.column[0], AFc2 = AFarr[i2].cellrange.column[1];
  46625. let af = $.extend(true, {}, AFarr[i2]);
  46626. if (type == "row") {
  46627. if (AFr1 < index2) {
  46628. if (AFr2 == index2 && direction == "lefttop") {
  46629. AFr2 += value;
  46630. } else if (AFr2 > index2) {
  46631. AFr2 += value;
  46632. }
  46633. } else if (AFr1 == index2) {
  46634. if (direction == "lefttop") {
  46635. AFr1 += value;
  46636. AFr2 += value;
  46637. } else if (direction == "rightbottom" && AFr2 > index2) {
  46638. AFr2 += value;
  46639. }
  46640. } else {
  46641. AFr1 += value;
  46642. AFr2 += value;
  46643. }
  46644. } else if (type == "column") {
  46645. if (AFc1 < index2) {
  46646. if (AFc2 == index2 && direction == "lefttop") {
  46647. AFc2 += value;
  46648. } else if (AFc2 > index2) {
  46649. AFc2 += value;
  46650. }
  46651. } else if (AFc1 == index2) {
  46652. if (direction == "lefttop") {
  46653. AFc1 += value;
  46654. AFc2 += value;
  46655. } else if (direction == "rightbottom" && AFc2 > index2) {
  46656. AFc2 += value;
  46657. }
  46658. } else {
  46659. AFc1 += value;
  46660. AFc2 += value;
  46661. }
  46662. }
  46663. af.cellrange = {"row": [AFr1, AFr2], "column": [AFc1, AFc2]};
  46664. newAFarr.push(af);
  46665. }
  46666. }
  46667. let newFreezen = {"freezenhorizontaldata": null, "freezenverticaldata": null};
  46668. if (freezen_default.freezenhorizontaldata != null && type == "row") {
  46669. let freezen_scrollTop = freezen_default.freezenhorizontaldata[2];
  46670. let freezen_row_st = freezen_default.freezenhorizontaldata[1] - 1;
  46671. if (freezen_row_st == index2 && direction == "lefttop") {
  46672. freezen_row_st += value;
  46673. } else if (freezen_row_st > index2) {
  46674. freezen_row_st += value;
  46675. }
  46676. let freezen_top = store_default.visibledatarow[freezen_row_st] - 2 - freezen_scrollTop + store_default.columnHeaderHeight;
  46677. newFreezen.freezenhorizontaldata = [
  46678. store_default.visibledatarow[freezen_row_st],
  46679. freezen_row_st + 1,
  46680. freezen_scrollTop,
  46681. freezen_default.cutVolumn(store_default.visibledatarow, freezen_row_st + 1),
  46682. freezen_top
  46683. ];
  46684. } else {
  46685. newFreezen.freezenhorizontaldata = freezen_default.freezenhorizontaldata;
  46686. }
  46687. if (freezen_default.freezenverticaldata != null && type == "column") {
  46688. let freezen_scrollLeft = freezen_default.freezenverticaldata[2];
  46689. let freezen_col_st = freezen_default.freezenverticaldata[1] - 1;
  46690. if (freezen_col_st == index2 && direction == "lefttop") {
  46691. freezen_col_st += value;
  46692. } else if (freezen_col_st > index2) {
  46693. freezen_col_st += value;
  46694. }
  46695. let freezen_left = store_default.visibledatacolumn[freezen_col_st] - 2 - freezen_scrollLeft + store_default.rowHeaderWidth;
  46696. newFreezen.freezenverticaldata = [
  46697. store_default.visibledatacolumn[freezen_col_st],
  46698. freezen_col_st + 1,
  46699. freezen_scrollLeft,
  46700. freezen_default.cutVolumn(store_default.visibledatacolumn, freezen_col_st + 1),
  46701. freezen_left
  46702. ];
  46703. } else {
  46704. newFreezen.freezenverticaldata = freezen_default.freezenverticaldata;
  46705. }
  46706. let dataVerification = file.dataVerification;
  46707. let newDataVerification = {};
  46708. if (dataVerification != null) {
  46709. for (let key in dataVerification) {
  46710. let r2 = Number(key.split("_")[0]), c2 = Number(key.split("_")[1]);
  46711. let item2 = dataVerification[key];
  46712. if (type == "row") {
  46713. if (index2 < r2) {
  46714. newDataVerification[r2 + value + "_" + c2] = item2;
  46715. } else if (index2 == r2) {
  46716. if (direction == "lefttop") {
  46717. newDataVerification[r2 + value + "_" + c2] = item2;
  46718. for (let i2 = 0; i2 < value; i2++) {
  46719. newDataVerification[r2 + i2 + "_" + c2] = item2;
  46720. }
  46721. } else {
  46722. newDataVerification[r2 + "_" + c2] = item2;
  46723. for (let i2 = 0; i2 < value; i2++) {
  46724. newDataVerification[r2 + i2 + 1 + "_" + c2] = item2;
  46725. }
  46726. }
  46727. } else {
  46728. newDataVerification[r2 + "_" + c2] = item2;
  46729. }
  46730. } else if (type == "column") {
  46731. if (index2 < c2) {
  46732. newDataVerification[r2 + "_" + (c2 + value)] = item2;
  46733. } else if (index2 == c2) {
  46734. if (direction == "lefttop") {
  46735. newDataVerification[r2 + "_" + (c2 + value)] = item2;
  46736. for (let i2 = 0; i2 < value; i2++) {
  46737. newDataVerification[r2 + "_" + (c2 + i2)] = item2;
  46738. }
  46739. } else {
  46740. newDataVerification[r2 + "_" + c2] = item2;
  46741. for (let i2 = 0; i2 < value; i2++) {
  46742. newDataVerification[r2 + "_" + (c2 + i2 + 1)] = item2;
  46743. }
  46744. }
  46745. } else {
  46746. newDataVerification[r2 + "_" + c2] = item2;
  46747. }
  46748. }
  46749. }
  46750. }
  46751. let hyperlink = file.hyperlink;
  46752. let newHyperlink = {};
  46753. if (hyperlink != null) {
  46754. for (let key in hyperlink) {
  46755. let r2 = Number(key.split("_")[0]), c2 = Number(key.split("_")[1]);
  46756. let item2 = hyperlink[key];
  46757. if (type == "row") {
  46758. if (index2 < r2) {
  46759. newHyperlink[r2 + value + "_" + c2] = item2;
  46760. } else if (index2 == r2) {
  46761. if (direction == "lefttop") {
  46762. newHyperlink[r2 + value + "_" + c2] = item2;
  46763. } else {
  46764. newHyperlink[r2 + "_" + c2] = item2;
  46765. }
  46766. } else {
  46767. newHyperlink[r2 + "_" + c2] = item2;
  46768. }
  46769. } else if (type == "column") {
  46770. if (index2 < c2) {
  46771. newHyperlink[r2 + "_" + (c2 + value)] = item2;
  46772. } else if (index2 == c2) {
  46773. if (direction == "lefttop") {
  46774. newHyperlink[r2 + "_" + (c2 + value)] = item2;
  46775. } else {
  46776. newHyperlink[r2 + "_" + c2] = item2;
  46777. }
  46778. } else {
  46779. newHyperlink[r2 + "_" + c2] = item2;
  46780. }
  46781. }
  46782. }
  46783. }
  46784. let type1;
  46785. if (type == "row") {
  46786. type1 = "r";
  46787. if (cfg["rowlen"] != null) {
  46788. let rowlen_new = {};
  46789. for (let r2 in cfg["rowlen"]) {
  46790. r2 = parseFloat(r2);
  46791. if (r2 < index2) {
  46792. rowlen_new[r2] = cfg["rowlen"][r2];
  46793. } else if (r2 == index2) {
  46794. if (direction == "lefttop") {
  46795. rowlen_new[r2 + value] = cfg["rowlen"][r2];
  46796. } else if (direction == "rightbottom") {
  46797. rowlen_new[r2] = cfg["rowlen"][r2];
  46798. }
  46799. } else {
  46800. rowlen_new[r2 + value] = cfg["rowlen"][r2];
  46801. }
  46802. }
  46803. cfg["rowlen"] = rowlen_new;
  46804. }
  46805. if (cfg["rowhidden"] != null) {
  46806. let rowhidden_new = {};
  46807. for (let r2 in cfg["rowhidden"]) {
  46808. r2 = parseFloat(r2);
  46809. if (r2 < index2) {
  46810. rowhidden_new[r2] = cfg["rowhidden"][r2];
  46811. } else if (r2 == index2) {
  46812. if (direction == "lefttop") {
  46813. rowhidden_new[r2 + value] = cfg["rowhidden"][r2];
  46814. } else if (direction == "rightbottom") {
  46815. rowhidden_new[r2] = cfg["rowhidden"][r2];
  46816. }
  46817. } else {
  46818. rowhidden_new[r2 + value] = cfg["rowhidden"][r2];
  46819. }
  46820. }
  46821. cfg["rowhidden"] = rowhidden_new;
  46822. }
  46823. let row = [];
  46824. for (let c2 = 0; c2 < d[0].length; c2++) {
  46825. row.push(null);
  46826. }
  46827. var cellBorderConfig = [];
  46828. if (cfg["borderInfo"] && cfg["borderInfo"].length > 0) {
  46829. let borderInfo = [];
  46830. for (let i2 = 0; i2 < cfg["borderInfo"].length; i2++) {
  46831. let rangeType = cfg["borderInfo"][i2].rangeType;
  46832. if (rangeType == "range") {
  46833. let borderRange = cfg["borderInfo"][i2].range;
  46834. let emptyRange = [];
  46835. for (let j = 0; j < borderRange.length; j++) {
  46836. let bd_r1 = borderRange[j].row[0], bd_r2 = borderRange[j].row[1];
  46837. if (direction == "lefttop") {
  46838. if (index2 <= bd_r1) {
  46839. bd_r1 += value;
  46840. bd_r2 += value;
  46841. } else if (index2 <= bd_r2) {
  46842. bd_r2 += value;
  46843. }
  46844. } else {
  46845. if (index2 < bd_r1) {
  46846. bd_r1 += value;
  46847. bd_r2 += value;
  46848. } else if (index2 < bd_r2) {
  46849. bd_r2 += value;
  46850. }
  46851. }
  46852. if (bd_r2 >= bd_r1) {
  46853. emptyRange.push({"row": [bd_r1, bd_r2], "column": borderRange[j].column});
  46854. }
  46855. }
  46856. if (emptyRange.length > 0) {
  46857. let bd_obj = {
  46858. "rangeType": "range",
  46859. "borderType": cfg["borderInfo"][i2].borderType,
  46860. "style": cfg["borderInfo"][i2].style,
  46861. "color": cfg["borderInfo"][i2].color,
  46862. "range": emptyRange
  46863. };
  46864. borderInfo.push(bd_obj);
  46865. }
  46866. } else if (rangeType == "cell") {
  46867. let row_index = cfg["borderInfo"][i2].value.row_index;
  46868. if (row_index === index2) {
  46869. cellBorderConfig.push(JSON.parse(JSON.stringify(cfg["borderInfo"][i2])));
  46870. }
  46871. if (direction == "lefttop") {
  46872. if (index2 <= row_index) {
  46873. row_index += value;
  46874. }
  46875. } else {
  46876. if (index2 < row_index) {
  46877. row_index += value;
  46878. }
  46879. }
  46880. cfg["borderInfo"][i2].value.row_index = row_index;
  46881. borderInfo.push(cfg["borderInfo"][i2]);
  46882. }
  46883. }
  46884. cfg["borderInfo"] = borderInfo;
  46885. }
  46886. let arr = [];
  46887. for (let r2 = 0; r2 < value; r2++) {
  46888. arr.push(JSON.stringify(row));
  46889. if (cellBorderConfig.length) {
  46890. var cellBorderConfigCopy = JSON.parse(JSON.stringify(cellBorderConfig));
  46891. cellBorderConfigCopy.forEach((item2) => {
  46892. if (direction === "rightbottom") {
  46893. item2.value.row_index += r2 + 1;
  46894. } else if (direction === "lefttop") {
  46895. item2.value.row_index += r2;
  46896. }
  46897. });
  46898. cfg["borderInfo"].push(...cellBorderConfigCopy);
  46899. }
  46900. }
  46901. if (direction == "lefttop") {
  46902. if (index2 == 0) {
  46903. new Function("d", "return d.unshift(" + arr.join(",") + ")")(d);
  46904. } else {
  46905. new Function("d", "return d.splice(" + index2 + ", 0, " + arr.join(",") + ")")(d);
  46906. }
  46907. } else {
  46908. new Function("d", "return d.splice(" + (index2 + 1) + ", 0, " + arr.join(",") + ")")(d);
  46909. }
  46910. } else {
  46911. type1 = "c";
  46912. if (cfg["columnlen"] != null) {
  46913. let columnlen_new = {};
  46914. for (let c2 in cfg["columnlen"]) {
  46915. c2 = parseFloat(c2);
  46916. if (c2 < index2) {
  46917. columnlen_new[c2] = cfg["columnlen"][c2];
  46918. } else if (c2 == index2) {
  46919. if (direction == "lefttop") {
  46920. columnlen_new[c2 + value] = cfg["columnlen"][c2];
  46921. } else if (direction == "rightbottom") {
  46922. columnlen_new[c2] = cfg["columnlen"][c2];
  46923. }
  46924. } else {
  46925. columnlen_new[c2 + value] = cfg["columnlen"][c2];
  46926. }
  46927. }
  46928. cfg["columnlen"] = columnlen_new;
  46929. }
  46930. if (cfg["colhidden"] != null) {
  46931. let colhidden_new = {};
  46932. for (let c2 in cfg["colhidden"]) {
  46933. c2 = parseFloat(c2);
  46934. if (c2 < index2) {
  46935. colhidden_new[c2] = cfg["colhidden"][c2];
  46936. } else if (c2 == index2) {
  46937. if (direction == "lefttop") {
  46938. colhidden_new[c2 + value] = cfg["colhidden"][c2];
  46939. } else if (direction == "rightbottom") {
  46940. colhidden_new[c2] = cfg["colhidden"][c2];
  46941. }
  46942. } else {
  46943. colhidden_new[c2 + value] = cfg["colhidden"][c2];
  46944. }
  46945. }
  46946. cfg["colhidden"] = colhidden_new;
  46947. }
  46948. let col = [];
  46949. for (let r2 = 0; r2 < d.length; r2++) {
  46950. col.push(null);
  46951. }
  46952. var cellBorderConfig = [];
  46953. if (cfg["borderInfo"] && cfg["borderInfo"].length > 0) {
  46954. let borderInfo = [];
  46955. for (let i2 = 0; i2 < cfg["borderInfo"].length; i2++) {
  46956. let rangeType = cfg["borderInfo"][i2].rangeType;
  46957. if (rangeType == "range") {
  46958. let borderRange = cfg["borderInfo"][i2].range;
  46959. let emptyRange = [];
  46960. for (let j = 0; j < borderRange.length; j++) {
  46961. let bd_c1 = borderRange[j].column[0], bd_c2 = borderRange[j].column[1];
  46962. if (direction == "lefttop") {
  46963. if (index2 <= bd_c1) {
  46964. bd_c1 += value;
  46965. bd_c2 += value;
  46966. } else if (index2 <= bd_c2) {
  46967. bd_c2 += value;
  46968. }
  46969. } else {
  46970. if (index2 < bd_c1) {
  46971. bd_c1 += value;
  46972. bd_c2 += value;
  46973. } else if (index2 < bd_c2) {
  46974. bd_c2 += value;
  46975. }
  46976. }
  46977. if (bd_c2 >= bd_c1) {
  46978. emptyRange.push({"row": borderRange[j].row, "column": [bd_c1, bd_c2]});
  46979. }
  46980. }
  46981. if (emptyRange.length > 0) {
  46982. let bd_obj = {
  46983. "rangeType": "range",
  46984. "borderType": cfg["borderInfo"][i2].borderType,
  46985. "style": cfg["borderInfo"][i2].style,
  46986. "color": cfg["borderInfo"][i2].color,
  46987. "range": emptyRange
  46988. };
  46989. borderInfo.push(bd_obj);
  46990. }
  46991. } else if (rangeType == "cell") {
  46992. let col_index = cfg["borderInfo"][i2].value.col_index;
  46993. if (col_index === index2) {
  46994. cellBorderConfig.push(JSON.parse(JSON.stringify(cfg["borderInfo"][i2])));
  46995. }
  46996. if (direction == "lefttop") {
  46997. if (index2 <= col_index) {
  46998. col_index += value;
  46999. }
  47000. } else {
  47001. if (index2 < col_index) {
  47002. col_index += value;
  47003. }
  47004. }
  47005. cfg["borderInfo"][i2].value.col_index = col_index;
  47006. borderInfo.push(cfg["borderInfo"][i2]);
  47007. }
  47008. }
  47009. cfg["borderInfo"] = borderInfo;
  47010. }
  47011. if (cellBorderConfig.length) {
  47012. for (let i2 = 0; i2 < value; i2++) {
  47013. var cellBorderConfigCopy = JSON.parse(JSON.stringify(cellBorderConfig));
  47014. cellBorderConfigCopy.forEach((item2) => {
  47015. if (direction === "rightbottom") {
  47016. item2.value.col_index += i2 + 1;
  47017. } else if (direction === "lefttop") {
  47018. item2.value.col_index += i2;
  47019. }
  47020. });
  47021. cfg["borderInfo"].push(...cellBorderConfigCopy);
  47022. }
  47023. }
  47024. for (let r2 = 0; r2 < d.length; r2++) {
  47025. let row = d[r2];
  47026. for (let i2 = 0; i2 < value; i2++) {
  47027. const COLR = JSON.parse(JSON.stringify(col[r2]));
  47028. if (direction == "lefttop") {
  47029. if (index2 == 0) {
  47030. row.unshift(COLR);
  47031. } else {
  47032. row.splice(index2, 0, COLR);
  47033. }
  47034. } else {
  47035. row.splice(index2 + 1, 0, COLR);
  47036. }
  47037. }
  47038. }
  47039. }
  47040. if (file.index == store_default.currentSheetIndex) {
  47041. jfrefreshgrid_adRC(d, cfg, "addRC", {"index": index2, "len": value, "direction": direction, "rc": type1, "restore": false}, newCalcChain, newFilterObj, newCFarr, newAFarr, newFreezen, newDataVerification, newHyperlink);
  47042. } else {
  47043. file.data = d;
  47044. file.config = cfg;
  47045. file.calcChain = newCalcChain;
  47046. file.filter = newFilterObj.filter;
  47047. file.filter_select = newFilterObj.filter_select;
  47048. file.luckysheet_conditionformat_save = newCFarr;
  47049. file.luckysheet_alternateformat_save = newAFarr;
  47050. file.dataVerification = newDataVerification;
  47051. file.hyperlink = newHyperlink;
  47052. }
  47053. let range2 = null;
  47054. if (type == "row") {
  47055. if (direction == "lefttop") {
  47056. range2 = [{"row": [index2, index2 + value - 1], "column": [0, d[0].length - 1]}];
  47057. } else {
  47058. range2 = [{"row": [index2 + 1, index2 + value], "column": [0, d[0].length - 1]}];
  47059. }
  47060. } else {
  47061. if (direction == "lefttop") {
  47062. range2 = [{"row": [0, d.length - 1], "column": [index2, index2 + value - 1]}];
  47063. } else {
  47064. range2 = [{"row": [0, d.length - 1], "column": [index2 + 1, index2 + value]}];
  47065. }
  47066. }
  47067. file.luckysheet_select_save = range2;
  47068. if (file.index == store_default.currentSheetIndex) {
  47069. store_default.luckysheet_select_save = range2;
  47070. selectHightlightShow();
  47071. }
  47072. if (type == "row") {
  47073. let scrollLeft = $("#luckysheet-cell-main").scrollLeft(), scrollTop = $("#luckysheet-cell-main").scrollTop();
  47074. let winH = $("#luckysheet-cell-main").height(), winW = $("#luckysheet-cell-main").width();
  47075. let row = store_default.visibledatarow[range2[0].row[1]], row_pre = range2[0].row[0] - 1 == -1 ? 0 : store_default.visibledatarow[range2[0].row[0] - 1];
  47076. if (row - scrollTop - winH + 20 > 0) {
  47077. $("#luckysheet-scrollbar-y").scrollTop(row - winH + 20);
  47078. } else if (row_pre - scrollTop - 20 < 0) {
  47079. $("#luckysheet-scrollbar-y").scrollTop(row_pre - 20);
  47080. }
  47081. if (value > 30) {
  47082. $("#luckysheet-row-count-show").hide();
  47083. $("#luckysheet-column-count-show").hide();
  47084. }
  47085. }
  47086. }
  47087. function luckysheetextendData(rowlen, newData) {
  47088. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  47089. let cfg = $.extend(true, {}, store_default.config);
  47090. if (cfg["merge"] == null) {
  47091. cfg["merge"] = {};
  47092. }
  47093. let collen = d[0].length;
  47094. let addNullData = datagridgrowth([], rowlen, collen);
  47095. d = d.concat(addNullData);
  47096. for (let i2 = 0; i2 < newData.length; i2++) {
  47097. let r2 = newData[i2].r, c2 = newData[i2].c, v = newData[i2].v;
  47098. setcellvalue(r2, c2, d, v);
  47099. if (v != null && v.mc != null && v.mc.rs != null) {
  47100. cfg["merge"][v.mc.r + "_" + v.mc.c] = $.extend(true, {}, v.mc);
  47101. }
  47102. }
  47103. store_default.flowdata = d;
  47104. editor_default.webWorkerFlowDataCache(store_default.flowdata);
  47105. store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)].data = d;
  47106. store_default.config = cfg;
  47107. store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)].config = store_default.config;
  47108. jfrefreshgrid_rhcw(store_default.flowdata.length, store_default.flowdata[0].length);
  47109. }
  47110. function luckysheetdeletetable(type, st, ed, sheetIndex) {
  47111. sheetIndex = sheetIndex || store_default.currentSheetIndex;
  47112. if (type == "row" && !checkProtectionAuthorityNormal(sheetIndex, "deleteRows")) {
  47113. return;
  47114. } else if (type == "column" && !checkProtectionAuthorityNormal(sheetIndex, "deleteColumns")) {
  47115. return;
  47116. }
  47117. let curOrder = getSheetIndex(sheetIndex);
  47118. let file = store_default.luckysheetfile[curOrder];
  47119. let d = $.extend(true, [], file.data);
  47120. if (st < 0) {
  47121. st = 0;
  47122. }
  47123. if (ed < 0) {
  47124. ed = 0;
  47125. }
  47126. if (type == "row") {
  47127. if (st > d.length - 1) {
  47128. st = d.length - 1;
  47129. }
  47130. if (ed > d.length - 1) {
  47131. ed = d.length - 1;
  47132. }
  47133. } else {
  47134. if (st > d[0].length - 1) {
  47135. st = d[0].length - 1;
  47136. }
  47137. if (ed > d[0].length - 1) {
  47138. ed = d[0].length - 1;
  47139. }
  47140. }
  47141. if (st > ed) {
  47142. return;
  47143. }
  47144. let slen2 = ed - st + 1;
  47145. let cfg = $.extend(true, {}, file.config);
  47146. if (cfg["merge"] == null) {
  47147. cfg["merge"] = {};
  47148. }
  47149. let merge_new = {};
  47150. for (let m in cfg["merge"]) {
  47151. let mc = cfg["merge"][m];
  47152. let r2 = mc.r, c2 = mc.c, rs = mc.rs, cs = mc.cs;
  47153. if (type == "row") {
  47154. if (r2 < st) {
  47155. if (r2 + rs - 1 < st) {
  47156. merge_new[r2 + "_" + c2] = {"r": r2, "c": c2, "rs": rs, "cs": cs};
  47157. } else if (r2 + rs - 1 >= st && r2 + rs - 1 < ed) {
  47158. merge_new[r2 + "_" + c2] = {"r": r2, "c": c2, "rs": st - r2, "cs": cs};
  47159. } else if (r2 + rs - 1 >= ed) {
  47160. merge_new[r2 + "_" + c2] = {"r": r2, "c": c2, "rs": rs - slen2, "cs": cs};
  47161. }
  47162. } else if (r2 >= st && r2 <= ed) {
  47163. if (r2 + rs - 1 > ed) {
  47164. merge_new[st + "_" + c2] = {"r": st, "c": c2, "rs": r2 + rs - 1 - ed, "cs": cs};
  47165. }
  47166. } else if (r2 > ed) {
  47167. merge_new[r2 - slen2 + "_" + c2] = {"r": r2 - slen2, "c": c2, "rs": rs, "cs": cs};
  47168. }
  47169. } else if (type == "column") {
  47170. if (c2 < st) {
  47171. if (c2 + cs - 1 < st) {
  47172. merge_new[r2 + "_" + c2] = {"r": r2, "c": c2, "rs": rs, "cs": cs};
  47173. } else if (c2 + cs - 1 >= st && c2 + cs - 1 < ed) {
  47174. merge_new[r2 + "_" + c2] = {"r": r2, "c": c2, "rs": rs, "cs": st - c2};
  47175. } else if (c2 + cs - 1 >= ed) {
  47176. merge_new[r2 + "_" + c2] = {"r": r2, "c": c2, "rs": rs, "cs": cs - slen2};
  47177. }
  47178. } else if (c2 >= st && c2 <= ed) {
  47179. if (c2 + cs - 1 > ed) {
  47180. merge_new[r2 + "_" + st] = {"r": r2, "c": st, "rs": rs, "cs": c2 + cs - 1 - ed};
  47181. }
  47182. } else if (c2 > ed) {
  47183. merge_new[r2 + "_" + (c2 - slen2)] = {"r": r2, "c": c2 - slen2, "rs": rs, "cs": cs};
  47184. }
  47185. }
  47186. }
  47187. cfg["merge"] = merge_new;
  47188. let calcChain = file.calcChain;
  47189. let newCalcChain = [];
  47190. if (calcChain != null && calcChain.length > 0) {
  47191. for (let i2 = 0; i2 < calcChain.length; i2++) {
  47192. let calc = $.extend(true, {}, calcChain[i2]);
  47193. let calc_r = calc.r, calc_c = calc.c, calc_i = calc.index, calc_funcStr = getcellFormula(calc_r, calc_c, calc_i);
  47194. if (type == "row") {
  47195. if (calc_r < st || calc_r > ed) {
  47196. let functionStr = "=" + formula_default.functionStrChange(calc_funcStr, "del", "row", null, st, slen2);
  47197. if (d[calc_r][calc_c] && d[calc_r][calc_c].f == calc_funcStr) {
  47198. d[calc_r][calc_c].f = functionStr;
  47199. }
  47200. if (calc_r > ed) {
  47201. calc.r = calc_r - slen2;
  47202. }
  47203. newCalcChain.push(calc);
  47204. }
  47205. } else if (type == "column") {
  47206. if (calc_c < st || calc_c > ed) {
  47207. let functionStr = "=" + formula_default.functionStrChange(calc_funcStr, "del", "col", null, st, slen2);
  47208. if (d[calc_r][calc_c] && d[calc_r][calc_c].f == calc_funcStr) {
  47209. d[calc_r][calc_c].f = functionStr;
  47210. }
  47211. if (calc_c > ed) {
  47212. calc.c = calc_c - slen2;
  47213. }
  47214. newCalcChain.push(calc);
  47215. }
  47216. }
  47217. }
  47218. }
  47219. let filter_select = file.filter_select;
  47220. let filter = file.filter;
  47221. let newFilterObj = null;
  47222. if (filter_select != null && JSON.stringify(filter_select) != "{}") {
  47223. newFilterObj = {"filter_select": null, "filter": null};
  47224. let f_r1 = filter_select.row[0], f_r2 = filter_select.row[1];
  47225. let f_c1 = filter_select.column[0], f_c2 = filter_select.column[1];
  47226. if (type == "row") {
  47227. if (f_r1 > ed) {
  47228. f_r1 -= slen2;
  47229. f_r2 -= slen2;
  47230. newFilterObj.filter_select = {"row": [f_r1, f_r2], "column": [f_c1, f_c2]};
  47231. } else if (f_r1 < st) {
  47232. if (f_r2 < st) {
  47233. } else if (f_r2 <= ed) {
  47234. f_r2 = st - 1;
  47235. } else {
  47236. f_r2 -= slen2;
  47237. }
  47238. newFilterObj.filter_select = {"row": [f_r1, f_r2], "column": [f_c1, f_c2]};
  47239. }
  47240. if (newFilterObj.filter_select != null && filter != null) {
  47241. for (let k in filter) {
  47242. let f_rowhidden = filter[k].rowhidden;
  47243. let f_rowhidden_new = {};
  47244. for (let n in f_rowhidden) {
  47245. if (n < st) {
  47246. f_rowhidden_new[n] = 0;
  47247. } else if (n > ed) {
  47248. f_rowhidden_new[n - slen2] = 0;
  47249. }
  47250. }
  47251. if (JSON.stringify(f_rowhidden_new) != "{}") {
  47252. if (newFilterObj.filter == null) {
  47253. newFilterObj.filter = {};
  47254. }
  47255. newFilterObj.filter[k] = $.extend(true, {}, filter[k]);
  47256. newFilterObj.filter[k].rowhidden = f_rowhidden_new;
  47257. newFilterObj.filter[k].str = f_r1;
  47258. newFilterObj.filter[k].edr = f_r2;
  47259. }
  47260. }
  47261. }
  47262. } else if (type == "column") {
  47263. if (f_c1 > ed) {
  47264. f_c1 -= slen2;
  47265. f_c2 -= slen2;
  47266. newFilterObj.filter_select = {"row": [f_r1, f_r2], "column": [f_c1, f_c2]};
  47267. } else if (f_c1 < st) {
  47268. if (f_c2 < st) {
  47269. } else if (f_c2 <= ed) {
  47270. f_c2 = st - 1;
  47271. } else {
  47272. f_c2 -= slen2;
  47273. }
  47274. newFilterObj.filter_select = {"row": [f_r1, f_r2], "column": [f_c1, f_c2]};
  47275. } else {
  47276. if (f_c2 > ed) {
  47277. f_c1 = st;
  47278. f_c2 -= slen2;
  47279. newFilterObj.filter_select = {"row": [f_r1, f_r2], "column": [f_c1, f_c2]};
  47280. }
  47281. }
  47282. if (newFilterObj.filter_select != null && filter != null) {
  47283. for (let k in filter) {
  47284. let f_cindex = filter[k].cindex;
  47285. if (f_cindex < st) {
  47286. if (newFilterObj.filter == null) {
  47287. newFilterObj.filter = {};
  47288. }
  47289. newFilterObj.filter[f_cindex - f_c1] = $.extend(true, {}, filter[k]);
  47290. newFilterObj.filter[f_cindex - f_c1].edc = f_c2;
  47291. } else if (f_cindex > ed) {
  47292. f_cindex -= slen2;
  47293. if (newFilterObj.filter == null) {
  47294. newFilterObj.filter = {};
  47295. }
  47296. newFilterObj.filter[f_cindex - f_c1] = $.extend(true, {}, filter[k]);
  47297. newFilterObj.filter[f_cindex - f_c1].cindex = f_cindex;
  47298. newFilterObj.filter[f_cindex - f_c1].stc = f_c1;
  47299. newFilterObj.filter[f_cindex - f_c1].edc = f_c2;
  47300. }
  47301. }
  47302. }
  47303. }
  47304. }
  47305. if (newFilterObj != null && newFilterObj.filter != null) {
  47306. if (cfg["rowhidden"] == null) {
  47307. cfg["rowhidden"] = {};
  47308. }
  47309. for (let k in newFilterObj.filter) {
  47310. let f_rowhidden = newFilterObj.filter[k].rowhidden;
  47311. for (let n in f_rowhidden) {
  47312. cfg["rowhidden"][n] = 0;
  47313. }
  47314. }
  47315. }
  47316. let CFarr = file.luckysheet_conditionformat_save;
  47317. let newCFarr = [];
  47318. if (CFarr != null && CFarr.length > 0) {
  47319. for (let i2 = 0; i2 < CFarr.length; i2++) {
  47320. let cf_range = CFarr[i2].cellrange;
  47321. let cf_new_range = [];
  47322. for (let j = 0; j < cf_range.length; j++) {
  47323. let CFr1 = cf_range[j].row[0], CFr2 = cf_range[j].row[1], CFc1 = cf_range[j].column[0], CFc2 = cf_range[j].column[1];
  47324. if (type == "row") {
  47325. if (!(CFr1 >= st && CFr2 <= ed)) {
  47326. if (CFr1 > ed) {
  47327. CFr1 -= slen2;
  47328. CFr2 -= slen2;
  47329. } else if (CFr1 < st) {
  47330. if (CFr2 < st) {
  47331. } else if (CFr2 <= ed) {
  47332. CFr2 = st - 1;
  47333. } else {
  47334. CFr2 -= slen2;
  47335. }
  47336. } else {
  47337. if (CFr2 > ed) {
  47338. CFr1 = st;
  47339. CFr2 -= slen2;
  47340. }
  47341. }
  47342. cf_new_range.push({"row": [CFr1, CFr2], "column": [CFc1, CFc2]});
  47343. }
  47344. } else if (type == "column") {
  47345. if (!(CFc1 >= st && CFc2 <= ed)) {
  47346. if (CFc1 > ed) {
  47347. CFc1 -= slen2;
  47348. CFc2 -= slen2;
  47349. } else if (CFc1 < st) {
  47350. if (CFc2 < st) {
  47351. } else if (CFc2 <= ed) {
  47352. CFc2 = st - 1;
  47353. } else {
  47354. CFc2 -= slen2;
  47355. }
  47356. } else {
  47357. if (CFc2 > ed) {
  47358. CFc1 = st;
  47359. CFc2 -= slen2;
  47360. }
  47361. }
  47362. cf_new_range.push({"row": [CFr1, CFr2], "column": [CFc1, CFc2]});
  47363. }
  47364. }
  47365. }
  47366. if (cf_new_range.length > 0) {
  47367. let cf = $.extend(true, {}, CFarr[i2]);
  47368. cf.cellrange = cf_new_range;
  47369. newCFarr.push(cf);
  47370. }
  47371. }
  47372. }
  47373. let AFarr = file.luckysheet_alternateformat_save;
  47374. let newAFarr = [];
  47375. if (AFarr != null && AFarr.length > 0) {
  47376. for (let i2 = 0; i2 < AFarr.length; i2++) {
  47377. let AFr1 = AFarr[i2].cellrange.row[0], AFr2 = AFarr[i2].cellrange.row[1], AFc1 = AFarr[i2].cellrange.column[0], AFc2 = AFarr[i2].cellrange.column[1];
  47378. if (type == "row") {
  47379. if (!(AFr1 >= st && AFr2 <= ed)) {
  47380. let af = $.extend(true, {}, AFarr[i2]);
  47381. if (AFr1 > ed) {
  47382. AFr1 -= slen2;
  47383. AFr2 -= slen2;
  47384. } else if (AFr1 < st) {
  47385. if (AFr2 < st) {
  47386. } else if (AFr2 <= ed) {
  47387. AFr2 = st - 1;
  47388. } else {
  47389. AFr2 -= slen2;
  47390. }
  47391. } else {
  47392. if (AFr2 > ed) {
  47393. AFr1 = st;
  47394. AFr2 -= slen2;
  47395. }
  47396. }
  47397. af.cellrange = {"row": [AFr1, AFr2], "column": [AFc1, AFc2]};
  47398. newAFarr.push(af);
  47399. }
  47400. } else if (type == "column") {
  47401. if (!(AFc1 >= st && AFc2 <= ed)) {
  47402. let af = $.extend(true, {}, AFarr[i2]);
  47403. if (AFc1 > ed) {
  47404. AFc1 -= slen2;
  47405. AFc2 -= slen2;
  47406. } else if (AFc1 < st) {
  47407. if (AFc2 < st) {
  47408. } else if (AFc2 <= ed) {
  47409. AFc2 = st - 1;
  47410. } else {
  47411. AFc2 -= slen2;
  47412. }
  47413. } else {
  47414. if (AFc2 > ed) {
  47415. AFc1 = st;
  47416. AFc2 -= slen2;
  47417. }
  47418. }
  47419. af.cellrange = {"row": [AFr1, AFr2], "column": [AFc1, AFc2]};
  47420. newAFarr.push(af);
  47421. }
  47422. }
  47423. }
  47424. }
  47425. let newFreezen = {"freezenhorizontaldata": null, "freezenverticaldata": null};
  47426. if (freezen_default.freezenhorizontaldata != null && type == "row") {
  47427. let freezen_scrollTop = freezen_default.freezenhorizontaldata[2];
  47428. let freezen_st = luckysheet_searcharray(store_default.visibledatarow, freezen_scrollTop);
  47429. if (freezen_st == -1) {
  47430. freezen_st = 0;
  47431. }
  47432. let freezen_row_st = freezen_default.freezenhorizontaldata[1] - 1;
  47433. if (freezen_row_st >= st) {
  47434. if (freezen_row_st < ed) {
  47435. freezen_row_st = st - 1;
  47436. } else {
  47437. freezen_row_st -= slen2;
  47438. }
  47439. }
  47440. if (freezen_row_st < freezen_st) {
  47441. freezen_row_st = freezen_st;
  47442. }
  47443. let freezen_top = store_default.visibledatarow[freezen_row_st] - 2 - freezen_scrollTop + store_default.columnHeaderHeight;
  47444. newFreezen.freezenhorizontaldata = [
  47445. store_default.visibledatarow[freezen_row_st],
  47446. freezen_row_st + 1,
  47447. freezen_scrollTop,
  47448. freezen_default.cutVolumn(store_default.visibledatarow, freezen_row_st + 1),
  47449. freezen_top
  47450. ];
  47451. } else {
  47452. newFreezen.freezenhorizontaldata = freezen_default.freezenhorizontaldata;
  47453. }
  47454. if (freezen_default.freezenverticaldata != null && type == "column") {
  47455. let freezen_scrollLeft = freezen_default.freezenverticaldata[2];
  47456. let freezen_st2 = luckysheet_searcharray(store_default.visibledatacolumn, freezen_scrollLeft);
  47457. if (freezen_st2 == -1) {
  47458. freezen_st2 = 0;
  47459. }
  47460. let freezen_col_st = freezen_default.freezenverticaldata[1] - 1;
  47461. if (freezen_col_st >= st) {
  47462. if (freezen_col_st < ed) {
  47463. freezen_col_st = st - 1;
  47464. } else {
  47465. freezen_col_st -= slen2;
  47466. }
  47467. }
  47468. if (freezen_col_st < freezen_st2) {
  47469. freezen_col_st = freezen_st2;
  47470. }
  47471. let freezen_left = store_default.visibledatacolumn[freezen_col_st] - 2 - freezen_scrollLeft + store_default.rowHeaderWidth;
  47472. newFreezen.freezenverticaldata = [
  47473. store_default.visibledatacolumn[freezen_col_st],
  47474. freezen_col_st + 1,
  47475. freezen_scrollLeft,
  47476. freezen_default.cutVolumn(store_default.visibledatacolumn, freezen_col_st + 1),
  47477. freezen_left
  47478. ];
  47479. } else {
  47480. newFreezen.freezenverticaldata = freezen_default.freezenverticaldata;
  47481. }
  47482. let dataVerification = file.dataVerification;
  47483. let newDataVerification = {};
  47484. if (dataVerification != null) {
  47485. for (let key in dataVerification) {
  47486. let r2 = Number(key.split("_")[0]), c2 = Number(key.split("_")[1]);
  47487. let item2 = dataVerification[key];
  47488. if (type == "row") {
  47489. if (r2 < st) {
  47490. newDataVerification[r2 + "_" + c2] = item2;
  47491. } else if (r2 > ed) {
  47492. newDataVerification[r2 - slen2 + "_" + c2] = item2;
  47493. }
  47494. } else if (type == "column") {
  47495. if (c2 < st) {
  47496. newDataVerification[r2 + "_" + c2] = item2;
  47497. } else if (c2 > ed) {
  47498. newDataVerification[r2 + "_" + (c2 - slen2)] = item2;
  47499. }
  47500. }
  47501. }
  47502. }
  47503. let hyperlink = file.hyperlink;
  47504. let newHyperlink = {};
  47505. if (hyperlink != null) {
  47506. for (let key in hyperlink) {
  47507. let r2 = Number(key.split("_")[0]), c2 = Number(key.split("_")[1]);
  47508. let item2 = hyperlink[key];
  47509. if (type == "row") {
  47510. if (r2 < st) {
  47511. newHyperlink[r2 + "_" + c2] = item2;
  47512. } else if (r2 > ed) {
  47513. newHyperlink[r2 - slen2 + "_" + c2] = item2;
  47514. }
  47515. } else if (type == "column") {
  47516. if (c2 < st) {
  47517. newHyperlink[r2 + "_" + c2] = item2;
  47518. } else if (c2 > ed) {
  47519. newHyperlink[r2 + "_" + (c2 - slen2)] = item2;
  47520. }
  47521. }
  47522. }
  47523. }
  47524. let type1;
  47525. if (type == "row") {
  47526. type1 = "r";
  47527. if (cfg["rowlen"] == null) {
  47528. cfg["rowlen"] = {};
  47529. }
  47530. let rowlen_new = {};
  47531. for (let r2 in cfg["rowlen"]) {
  47532. if (r2 < st) {
  47533. rowlen_new[r2] = cfg["rowlen"][r2];
  47534. } else if (r2 > ed) {
  47535. rowlen_new[r2 - slen2] = cfg["rowlen"][r2];
  47536. }
  47537. }
  47538. cfg["rowlen"] = rowlen_new;
  47539. if (cfg["rowhidden"] == null) {
  47540. cfg["rowhidden"] = {};
  47541. }
  47542. let rowhidden_new = {};
  47543. for (let r2 in cfg["rowhidden"]) {
  47544. if (r2 < st) {
  47545. rowhidden_new[r2] = cfg["rowhidden"][r2];
  47546. } else if (r2 > ed) {
  47547. rowhidden_new[r2 - slen2] = cfg["rowhidden"][r2];
  47548. }
  47549. }
  47550. cfg["rowhidden"] = rowhidden_new;
  47551. if (cfg["borderInfo"] && cfg["borderInfo"].length > 0) {
  47552. let borderInfo = [];
  47553. for (let i2 = 0; i2 < cfg["borderInfo"].length; i2++) {
  47554. let rangeType = cfg["borderInfo"][i2].rangeType;
  47555. if (rangeType == "range") {
  47556. let borderRange = cfg["borderInfo"][i2].range;
  47557. let emptyRange = [];
  47558. for (let j = 0; j < borderRange.length; j++) {
  47559. let bd_r1 = borderRange[j].row[0], bd_r2 = borderRange[j].row[1];
  47560. for (let r2 = st; r2 <= ed; r2++) {
  47561. if (r2 < borderRange[j].row[0]) {
  47562. bd_r1 -= 1;
  47563. bd_r2 -= 1;
  47564. } else if (r2 <= borderRange[j].row[1]) {
  47565. bd_r2 -= 1;
  47566. }
  47567. }
  47568. if (bd_r2 >= bd_r1) {
  47569. emptyRange.push({"row": [bd_r1, bd_r2], "column": borderRange[j].column});
  47570. }
  47571. }
  47572. if (emptyRange.length > 0) {
  47573. let bd_obj = {
  47574. "rangeType": "range",
  47575. "borderType": cfg["borderInfo"][i2].borderType,
  47576. "style": cfg["borderInfo"][i2].style,
  47577. "color": cfg["borderInfo"][i2].color,
  47578. "range": emptyRange
  47579. };
  47580. borderInfo.push(bd_obj);
  47581. }
  47582. } else if (rangeType == "cell") {
  47583. let row_index = cfg["borderInfo"][i2].value.row_index;
  47584. if (row_index < st) {
  47585. borderInfo.push(cfg["borderInfo"][i2]);
  47586. } else if (row_index > ed) {
  47587. cfg["borderInfo"][i2].value.row_index = row_index - (ed - st + 1);
  47588. borderInfo.push(cfg["borderInfo"][i2]);
  47589. }
  47590. }
  47591. }
  47592. cfg["borderInfo"] = borderInfo;
  47593. }
  47594. d.splice(st, slen2);
  47595. for (let r2 = 0; r2 < slen2; r2++) {
  47596. let row = [];
  47597. for (let c2 = 0; c2 < d[0].length; c2++) {
  47598. row.push(null);
  47599. }
  47600. d.push(row);
  47601. }
  47602. } else {
  47603. type1 = "c";
  47604. if (cfg["columnlen"] == null) {
  47605. cfg["columnlen"] = {};
  47606. }
  47607. let columnlen_new = {};
  47608. for (let c2 in cfg["columnlen"]) {
  47609. if (c2 < st) {
  47610. columnlen_new[c2] = cfg["columnlen"][c2];
  47611. } else if (c2 > ed) {
  47612. columnlen_new[c2 - slen2] = cfg["columnlen"][c2];
  47613. }
  47614. }
  47615. cfg["columnlen"] = columnlen_new;
  47616. if (cfg["colhidden"] == null) {
  47617. cfg["colhidden"] = {};
  47618. }
  47619. let colhidden_new = {};
  47620. for (let c2 in cfg["colhidden"]) {
  47621. if (c2 < st) {
  47622. colhidden_new[c2] = cfg["colhidden"][c2];
  47623. } else if (c2 > ed) {
  47624. colhidden_new[c2 - slen2] = cfg["colhidden"][c2];
  47625. }
  47626. }
  47627. cfg["colhidden"] = colhidden_new;
  47628. if (cfg["borderInfo"] && cfg["borderInfo"].length > 0) {
  47629. let borderInfo = [];
  47630. for (let i2 = 0; i2 < cfg["borderInfo"].length; i2++) {
  47631. let rangeType = cfg["borderInfo"][i2].rangeType;
  47632. if (rangeType == "range") {
  47633. let borderRange = cfg["borderInfo"][i2].range;
  47634. let emptyRange = [];
  47635. for (let j = 0; j < borderRange.length; j++) {
  47636. let bd_c1 = borderRange[j].column[0], bd_c2 = borderRange[j].column[1];
  47637. for (let c2 = st; c2 <= ed; c2++) {
  47638. if (c2 < borderRange[j].column[0]) {
  47639. bd_c1 -= 1;
  47640. bd_c2 -= 1;
  47641. } else if (c2 <= borderRange[j].column[1]) {
  47642. bd_c2 -= 1;
  47643. }
  47644. }
  47645. if (bd_c2 >= bd_c1) {
  47646. emptyRange.push({"row": borderRange[j].row, "column": [bd_c1, bd_c2]});
  47647. }
  47648. }
  47649. if (emptyRange.length > 0) {
  47650. let bd_obj = {
  47651. "rangeType": "range",
  47652. "borderType": cfg["borderInfo"][i2].borderType,
  47653. "style": cfg["borderInfo"][i2].style,
  47654. "color": cfg["borderInfo"][i2].color,
  47655. "range": emptyRange
  47656. };
  47657. borderInfo.push(bd_obj);
  47658. }
  47659. } else if (rangeType == "cell") {
  47660. let col_index = cfg["borderInfo"][i2].value.col_index;
  47661. if (col_index < st) {
  47662. borderInfo.push(cfg["borderInfo"][i2]);
  47663. } else if (col_index > ed) {
  47664. cfg["borderInfo"][i2].value.col_index = col_index - (ed - st + 1);
  47665. borderInfo.push(cfg["borderInfo"][i2]);
  47666. }
  47667. }
  47668. }
  47669. cfg["borderInfo"] = borderInfo;
  47670. }
  47671. let addcol = [];
  47672. for (let r2 = 0; r2 < slen2; r2++) {
  47673. addcol.push(null);
  47674. }
  47675. for (let r2 = 0; r2 < d.length; r2++) {
  47676. let row = [].concat(d[r2]);
  47677. row.splice(st, slen2);
  47678. d[r2] = row.concat(addcol);
  47679. }
  47680. }
  47681. if (file.index == store_default.currentSheetIndex) {
  47682. jfrefreshgrid_adRC(d, cfg, "delRC", {"index": st, "len": ed - st + 1, "rc": type1}, newCalcChain, newFilterObj, newCFarr, newAFarr, newFreezen, newDataVerification, newHyperlink);
  47683. } else {
  47684. file.data = d;
  47685. file.config = cfg;
  47686. file.calcChain = newCalcChain;
  47687. file.filter = newFilterObj.filter;
  47688. file.filter_select = newFilterObj.filter_select;
  47689. file.luckysheet_conditionformat_save = newCFarr;
  47690. file.luckysheet_alternateformat_save = newAFarr;
  47691. file.dataVerification = newDataVerification;
  47692. file.hyperlink = newHyperlink;
  47693. }
  47694. }
  47695. function luckysheetDeleteCell(type, str, edr, stc, edc, sheetIndex) {
  47696. sheetIndex = sheetIndex || store_default.currentSheetIndex;
  47697. if (!checkProtectionNotEnable(sheetIndex)) {
  47698. return;
  47699. }
  47700. let curOrder = getSheetIndex(sheetIndex);
  47701. let file = store_default.luckysheetfile[curOrder];
  47702. let d = $.extend(true, [], file.data);
  47703. let rlen = edr - str + 1;
  47704. let clen = edc - stc + 1;
  47705. let cfg = $.extend(true, {}, store_default.config);
  47706. if (cfg["merge"] == null) {
  47707. cfg["merge"] = {};
  47708. }
  47709. let merge_new = {};
  47710. for (let m in cfg["merge"]) {
  47711. let mc = cfg["merge"][m];
  47712. let r2 = mc.r, c2 = mc.c, rs = mc.rs, cs = mc.cs;
  47713. if (type == "moveLeft") {
  47714. if (str > r2 + rs - 1 || edr < r2 || stc > c2 + cs - 1) {
  47715. merge_new[r2 + "_" + c2] = {"r": r2, "c": c2, "rs": rs, "cs": cs};
  47716. } else if (str <= r2 && edr >= r2 + rs - 1 && edc < c2) {
  47717. merge_new[r2 + "_" + (c2 - clen)] = {"r": r2, "c": c2 - clen, "rs": rs, "cs": cs};
  47718. } else {
  47719. for (let r_i = r2; r_i <= r2 + rs - 1; r_i++) {
  47720. for (let c_i = c2; c_i <= c2 + cs - 1; c_i++) {
  47721. delete d[r_i][c_i].mc;
  47722. }
  47723. }
  47724. }
  47725. } else if (type == "moveUp") {
  47726. if (stc > c2 + cs - 1 || edc < c2 || str > r2 + rs - 1) {
  47727. merge_new[r2 + "_" + c2] = {"r": r2, "c": c2, "rs": rs, "cs": cs};
  47728. } else if (stc <= c2 && edc >= c2 + cs - 1 && edr < r2) {
  47729. merge_new[r2 - rlen + "_" + c2] = {"r": r2 - rlen, "c": c2, "rs": rs, "cs": cs};
  47730. } else {
  47731. for (let r_i = r2; r_i <= r2 + rs - 1; r_i++) {
  47732. for (let c_i = c2; c_i <= c2 + cs - 1; c_i++) {
  47733. delete d[r_i][c_i].mc;
  47734. }
  47735. }
  47736. }
  47737. }
  47738. }
  47739. cfg["merge"] = merge_new;
  47740. let calcChain = file.calcChain;
  47741. let newCalcChain = [];
  47742. if (calcChain != null && calcChain.length > 0) {
  47743. for (let i2 = 0; i2 < calcChain.length; i2++) {
  47744. let calc = $.extend(true, {}, calcChain[i2]);
  47745. let calc_r = calc.r, calc_c = calc.c, calc_i = calc.index, calc_funcStr = getcellFormula(calc_r, calc_c, calc_i);
  47746. if (calc_r < str || calc_r > edr || calc_c < stc || calc_c > edc) {
  47747. let functionStr;
  47748. if (type == "moveLeft") {
  47749. functionStr = "=" + formula_default.functionStrChange(calc_funcStr, "del", "col", null, stc, clen);
  47750. if (calc_c > edc && calc_r >= str && calc_r <= edr) {
  47751. calc.c = calc_c - clen;
  47752. }
  47753. } else if (type == "moveUp") {
  47754. functionStr = "=" + formula_default.functionStrChange(calc_funcStr, "del", "row", null, str, rlen);
  47755. if (calc_r > edr && calc_c >= stc && calc_c <= edc) {
  47756. calc.r = calc_r - rlen;
  47757. }
  47758. }
  47759. if (d[calc_r][calc_c] && d[calc_r][calc_c].f == calc_funcStr) {
  47760. d[calc_r][calc_c].f = functionStr;
  47761. }
  47762. newCalcChain.push(calc);
  47763. }
  47764. }
  47765. }
  47766. let filter_select = file.filter_select;
  47767. let filter = file.filter;
  47768. let newFilterObj = null;
  47769. if (filter_select != null && JSON.stringify(filter_select) != "{}") {
  47770. newFilterObj = {"filter_select": null, "filter": null};
  47771. let f_r1 = filter_select.row[0], f_r2 = filter_select.row[1];
  47772. let f_c1 = filter_select.column[0], f_c2 = filter_select.column[1];
  47773. if (type == "moveUp") {
  47774. if (f_c1 >= stc && f_c2 <= edc) {
  47775. if (f_r1 > edr) {
  47776. newFilterObj.filter_select = {
  47777. "row": [f_r1 - rlen, f_r2 - rlen],
  47778. "column": [f_c1, f_c2]
  47779. };
  47780. } else if (f_r2 < str) {
  47781. newFilterObj.filter_select = {
  47782. "row": [f_r1, f_r2],
  47783. "column": [f_c1, f_c2]
  47784. };
  47785. } else if (f_r1 < str) {
  47786. if (f_r2 > edr) {
  47787. newFilterObj.filter_select = {
  47788. "row": [f_r1, f_r2 - rlen],
  47789. "column": [f_c1, f_c2]
  47790. };
  47791. } else {
  47792. newFilterObj.filter_select = {
  47793. "row": [f_r1, str - 1],
  47794. "column": [f_c1, f_c2]
  47795. };
  47796. }
  47797. }
  47798. if (newFilterObj.filter_select != null && filter != null) {
  47799. for (let k in filter) {
  47800. let f_rowhidden = filter[k].rowhidden;
  47801. let f_rowhidden_new = {};
  47802. for (let n in f_rowhidden) {
  47803. if (n < str) {
  47804. f_rowhidden_new[n] = 0;
  47805. } else if (n > edr) {
  47806. f_rowhidden_new[n - slen] = 0;
  47807. }
  47808. }
  47809. if (newFilterObj.filter == null) {
  47810. newFilterObj.filter = {};
  47811. }
  47812. newFilterObj.filter[k] = $.extend(true, {}, filter[k]);
  47813. if (JSON.stringify(f_rowhidden_new) != "{}") {
  47814. newFilterObj.filter[k].rowhidden = f_rowhidden_new;
  47815. }
  47816. newFilterObj.filter[k].str = newFilterObj.filter_select.row[0];
  47817. newFilterObj.filter[k].edr = newFilterObj.filter_select.row[1];
  47818. }
  47819. }
  47820. } else if (f_r1 >= str && f_r2 <= edr) {
  47821. if (f_c1 > edc) {
  47822. newFilterObj.filter_select = {
  47823. "row": [f_r1, f_r2],
  47824. "column": [f_c1, f_c2]
  47825. };
  47826. } else if (f_c1 >= stc) {
  47827. if (f_c2 > edc) {
  47828. newFilterObj.filter_select = {
  47829. "row": [f_r1, f_r2],
  47830. "column": [stc, f_c2 - clen]
  47831. };
  47832. }
  47833. } else {
  47834. if (f_c2 < stc) {
  47835. newFilterObj.filter_select = {
  47836. "row": [f_r1, f_r2],
  47837. "column": [f_c1, f_c2]
  47838. };
  47839. } else if (f_c2 <= edc) {
  47840. newFilterObj.filter_select = {
  47841. "row": [f_r1, f_r2],
  47842. "column": [f_c1, stc - 1]
  47843. };
  47844. } else {
  47845. newFilterObj.filter_select = {
  47846. "row": [f_r1, f_r2],
  47847. "column": [f_c1, f_c2 - clen]
  47848. };
  47849. }
  47850. }
  47851. if (newFilterObj.filter_select != null && filter != null) {
  47852. for (let k in filter) {
  47853. let f_stc = newFilterObj.filter_select.column[0];
  47854. let f_edc = newFilterObj.filter_select.column[1];
  47855. let f_cindex = filter[k].cindex;
  47856. if (f_cindex < stc || f_cindex > edc) {
  47857. if (newFilterObj.filter == null) {
  47858. newFilterObj.filter = {};
  47859. }
  47860. if (f_cindex > edc) {
  47861. f_cindex -= clen;
  47862. }
  47863. let k2 = f_cindex - f_stc;
  47864. newFilterObj.filter[k2] = $.extend(true, {}, filter[k]);
  47865. newFilterObj.filter[k2].cindex = f_cindex;
  47866. newFilterObj.filter[k2].stc = f_stc;
  47867. newFilterObj.filter[k2].edc = f_edc;
  47868. }
  47869. }
  47870. }
  47871. } else {
  47872. newFilterObj.filter_select = {
  47873. "row": [f_r1, f_r2],
  47874. "column": [f_c1, f_c2]
  47875. };
  47876. if (filter != null) {
  47877. newFilterObj.filter = filter;
  47878. }
  47879. }
  47880. } else if (type == "moveLeft") {
  47881. if (f_r1 >= str && f_r2 <= edr) {
  47882. if (f_c1 > edc) {
  47883. newFilterObj.filter_select = {
  47884. "row": [f_r1, f_r2],
  47885. "column": [f_c1 - clen, f_c2 - clen]
  47886. };
  47887. } else if (f_c2 < stc) {
  47888. newFilterObj.filter_select = {
  47889. "row": [f_r1, f_r2],
  47890. "column": [f_c1, f_c2]
  47891. };
  47892. } else if (f_c1 < stc) {
  47893. if (f_c2 > edc) {
  47894. newFilterObj.filter_select = {
  47895. "row": [f_r1, f_r2],
  47896. "column": [f_c1, f_c2 - clen]
  47897. };
  47898. } else {
  47899. newFilterObj.filter_select = {
  47900. "row": [f_r1, f_r2],
  47901. "column": [f_c1, stc - 1]
  47902. };
  47903. }
  47904. }
  47905. if (newFilterObj.filter_select != null && filter != null) {
  47906. for (let k in filter) {
  47907. let f_stc = newFilterObj.filter_select.column[0];
  47908. let f_edc = newFilterObj.filter_select.column[1];
  47909. let f_cindex = filter[k].cindex;
  47910. if (f_cindex < stc || f_cindex > edc) {
  47911. if (newFilterObj.filter == null) {
  47912. newFilterObj.filter = {};
  47913. }
  47914. if (f_cindex > edc) {
  47915. f_cindex -= clen;
  47916. }
  47917. let k2 = f_cindex - f_stc;
  47918. newFilterObj.filter[k2] = $.extend(true, {}, filter[k]);
  47919. newFilterObj.filter[k2].cindex = f_cindex;
  47920. newFilterObj.filter[k2].stc = f_stc;
  47921. newFilterObj.filter[k2].edc = f_edc;
  47922. }
  47923. }
  47924. }
  47925. } else if (f_c1 >= stc && f_c2 <= edc) {
  47926. if (f_r1 < str || f_r1 > edr) {
  47927. newFilterObj.filter_select = {
  47928. "row": [f_r1, f_r2],
  47929. "column": [f_c1, f_c2]
  47930. };
  47931. if (filter != null) {
  47932. newFilterObj.filter = filter;
  47933. }
  47934. }
  47935. } else {
  47936. newFilterObj.filter_select = {
  47937. "row": [f_r1, f_r2],
  47938. "column": [f_c1, f_c2]
  47939. };
  47940. if (filter != null) {
  47941. newFilterObj.filter = filter;
  47942. }
  47943. }
  47944. }
  47945. }
  47946. if (newFilterObj != null && newFilterObj.filter != null) {
  47947. if (cfg["rowhidden"] == null) {
  47948. cfg["rowhidden"] = {};
  47949. }
  47950. for (let k in newFilterObj.filter) {
  47951. let f_rowhidden = newFilterObj.filter[k].rowhidden;
  47952. for (let n in f_rowhidden) {
  47953. cfg["rowhidden"][n] = 0;
  47954. }
  47955. }
  47956. }
  47957. let CFarr = file.luckysheet_conditionformat_save;
  47958. let newCFarr = [];
  47959. if (CFarr != null && CFarr.length > 0) {
  47960. for (let i2 = 0; i2 < CFarr.length; i2++) {
  47961. let cf_range = CFarr[i2].cellrange;
  47962. let cf_new_range = [];
  47963. for (let j = 0; j < cf_range.length; j++) {
  47964. let CFr1 = cf_range[j].row[0], CFr2 = cf_range[j].row[1], CFc1 = cf_range[j].column[0], CFc2 = cf_range[j].column[1];
  47965. if (!(str <= CFr1 && edr >= CFr2 && stc <= CFc1 && edc >= CFc2)) {
  47966. cf_new_range = getMoveRange(type, str, edr, stc, edc, CFr1, CFr2, CFc1, CFc2, rlen, clen);
  47967. }
  47968. }
  47969. if (cf_new_range.length > 0) {
  47970. let cf = $.extend(true, {}, CFarr[i2]);
  47971. cf.cellrange = cf_new_range;
  47972. newCFarr.push(cf);
  47973. }
  47974. }
  47975. }
  47976. let dataVerification = file.dataVerification;
  47977. let newDataVerification = {};
  47978. if (dataVerification != null) {
  47979. for (let key in dataVerification) {
  47980. let r2 = Number(key.split("_")[0]), c2 = Number(key.split("_")[1]);
  47981. let item2 = dataVerification[key];
  47982. if (r2 < str || r2 > edr || c2 < stc || c2 > edc) {
  47983. if (type == "moveLeft") {
  47984. if (c2 > edc && r2 >= str && r2 <= edr) {
  47985. newDataVerification[r2 + "_" + (c2 - clen)] = item2;
  47986. } else {
  47987. newDataVerification[r2 + "_" + c2] = item2;
  47988. }
  47989. } else if (type == "moveUp") {
  47990. if (r2 > edr && c2 >= stc && c2 <= edc) {
  47991. newDataVerification[r2 - rlen + "_" + c2] = item2;
  47992. } else {
  47993. newDataVerification[r2 + "_" + c2] = item2;
  47994. }
  47995. }
  47996. }
  47997. }
  47998. }
  47999. let hyperlink = file.hyperlink;
  48000. let newHyperlink = {};
  48001. if (hyperlink != null) {
  48002. for (let key in hyperlink) {
  48003. let r2 = Number(key.split("_")[0]), c2 = Number(key.split("_")[1]);
  48004. let item2 = hyperlink[key];
  48005. if (r2 < str || r2 > edr || c2 < stc || c2 > edc) {
  48006. if (type == "moveLeft") {
  48007. if (c2 > edc && r2 >= str && r2 <= edr) {
  48008. newHyperlink[r2 + "_" + (c2 - clen)] = item2;
  48009. } else {
  48010. newHyperlink[r2 + "_" + c2] = item2;
  48011. }
  48012. } else if (type == "moveUp") {
  48013. if (r2 > edr && c2 >= stc && c2 <= edc) {
  48014. newHyperlink[r2 - rlen + "_" + c2] = item2;
  48015. } else {
  48016. newHyperlink[r2 + "_" + c2] = item2;
  48017. }
  48018. }
  48019. }
  48020. }
  48021. }
  48022. if (cfg["borderInfo"] && cfg["borderInfo"].length > 0) {
  48023. let borderInfo = [];
  48024. for (let i2 = 0; i2 < cfg["borderInfo"].length; i2++) {
  48025. let rangeType = cfg["borderInfo"][i2].rangeType;
  48026. if (rangeType == "range") {
  48027. let borderRange = cfg["borderInfo"][i2].range;
  48028. let emptyRange = [];
  48029. for (let j = 0; j < borderRange.length; j++) {
  48030. let bd_r1 = borderRange[j].row[0], bd_r2 = borderRange[j].row[1], bd_c1 = borderRange[j].column[0], bd_c2 = borderRange[j].column[1];
  48031. if (!(str <= bd_r1 && edr >= bd_r2 && stc <= bd_c1 && edc >= bd_c2)) {
  48032. emptyRange = getMoveRange(type, str, edr, stc, edc, bd_r1, bd_r2, bd_c1, bd_c2, rlen, clen);
  48033. }
  48034. }
  48035. if (emptyRange.length > 0) {
  48036. let bd_obj = {
  48037. "rangeType": "range",
  48038. "borderType": cfg["borderInfo"][i2].borderType,
  48039. "style": cfg["borderInfo"][i2].style,
  48040. "color": cfg["borderInfo"][i2].color,
  48041. "range": emptyRange
  48042. };
  48043. borderInfo.push(bd_obj);
  48044. }
  48045. } else if (rangeType == "cell") {
  48046. let row_index = cfg["borderInfo"][i2].value.row_index;
  48047. let col_index = cfg["borderInfo"][i2].value.col_index;
  48048. if (row_index < str || row_index > edr || col_index < stc || col_index > edc) {
  48049. if (type == "moveLeft") {
  48050. if (col_index > edc && row_index >= str && row_index <= edr) {
  48051. col_index -= clen;
  48052. cfg["borderInfo"][i2].value.col_index = col_index;
  48053. }
  48054. } else if (type == "moveUp") {
  48055. if (row_index > edr && col_index >= stc && col_index <= edc) {
  48056. row_index -= rlen;
  48057. cfg["borderInfo"][i2].value.row_index = row_index;
  48058. }
  48059. }
  48060. borderInfo.push(cfg["borderInfo"][i2]);
  48061. }
  48062. }
  48063. }
  48064. cfg["borderInfo"] = borderInfo;
  48065. }
  48066. let addcol = [];
  48067. for (let c2 = stc; c2 <= edc; c2++) {
  48068. addcol.push(null);
  48069. }
  48070. if (type == "moveUp") {
  48071. let data = [];
  48072. for (let r2 = str; r2 <= d.length - 1; r2++) {
  48073. let row = [];
  48074. for (let c2 = stc; c2 <= edc; c2++) {
  48075. row.push(d[r2][c2]);
  48076. }
  48077. data.push(row);
  48078. }
  48079. data.splice(0, rlen);
  48080. let addrow = [];
  48081. for (let r2 = str; r2 <= edr; r2++) {
  48082. addrow.push(addcol);
  48083. }
  48084. data = data.concat(addrow);
  48085. for (let r2 = str; r2 <= d.length - 1; r2++) {
  48086. for (let c2 = stc; c2 <= edc; c2++) {
  48087. d[r2][c2] = data[r2 - str][c2 - stc];
  48088. }
  48089. }
  48090. } else if (type == "moveLeft") {
  48091. for (let r2 = str; r2 <= edr; r2++) {
  48092. d[r2].splice(stc, clen);
  48093. d[r2] = d[r2].concat(addcol);
  48094. }
  48095. }
  48096. if (file.index == store_default.currentSheetIndex) {
  48097. jfrefreshgrid_deleteCell(d, cfg, {type, "str": str, "edr": edr, "stc": stc, "edc": edc}, newCalcChain, newFilterObj, newCFarr, newDataVerification, newHyperlink);
  48098. } else {
  48099. file.data = d;
  48100. file.config = cfg;
  48101. file.calcChain = newCalcChain;
  48102. file.filter = newFilterObj.filter;
  48103. file.filter_select = newFilterObj.filter_select;
  48104. file.luckysheet_conditionformat_save = newCFarr;
  48105. file.dataVerification = newDataVerification;
  48106. file.hyperlink = newHyperlink;
  48107. }
  48108. }
  48109. function getMoveRange(type, str, edr, stc, edc, r1, r2, c1, c2, rlen, clen) {
  48110. let newRange = [];
  48111. if (type == "moveLeft") {
  48112. if (str > r2 || edr < r1 || stc > c2) {
  48113. newRange.push({
  48114. "row": [r1, r2],
  48115. "column": [c1, c2]
  48116. });
  48117. } else if (edc < c1) {
  48118. if (str <= r1 && edr >= r2) {
  48119. newRange.push({
  48120. "row": [r1, r2],
  48121. "column": [c1 - clen, c2 - clen]
  48122. });
  48123. } else if (str > r1 && edr < r2) {
  48124. let range2 = [
  48125. {"row": [r1, str - 1], "column": [c1, c2]},
  48126. {"row": [edr + 1, r2], "column": [c1, c2]},
  48127. {"row": [str, edr], "column": [c1 - clen, c2 - clen]}
  48128. ];
  48129. newRange = newRange.concat(range2);
  48130. } else if (str > r1) {
  48131. let range2 = [
  48132. {"row": [r1, str - 1], "column": [c1, c2]},
  48133. {"row": [str, r2], "column": [c1 - clen, c2 - clen]}
  48134. ];
  48135. newRange = newRange.concat(range2);
  48136. } else if (edr < r2) {
  48137. let range2 = [
  48138. {"row": [r1, edr], "column": [c1 - clen, c2 - clen]},
  48139. {"row": [edr + 1, r2], "column": [c1, c2]}
  48140. ];
  48141. newRange = newRange.concat(range2);
  48142. }
  48143. } else if (edc >= c1) {
  48144. if (stc <= c1 && edc >= c2) {
  48145. if (str > r1 && edr < r2) {
  48146. let range2 = [
  48147. {"row": [r1, str - 1], "column": [c1, c2]},
  48148. {"row": [edr + 1, r2], "column": [c1, c2]}
  48149. ];
  48150. newRange = newRange.concat(range2);
  48151. } else if (str > r1) {
  48152. let range2 = [
  48153. {"row": [r1, str - 1], "column": [c1, c2]}
  48154. ];
  48155. newRange = newRange.concat(range2);
  48156. } else if (edr < r2) {
  48157. let range2 = [
  48158. {"row": [edr + 1, r2], "column": [c1, c2]}
  48159. ];
  48160. newRange = newRange.concat(range2);
  48161. }
  48162. } else if (stc > c1 && edc < c2) {
  48163. if (str <= r1 && edr >= r2) {
  48164. newRange.push({
  48165. "row": [r1, r2],
  48166. "column": [c1, c2 - clen]
  48167. });
  48168. } else if (str > r1 && edr < r2) {
  48169. let range2 = [
  48170. {"row": [r1, str - 1], "column": [c1, c2]},
  48171. {"row": [edr + 1, r2], "column": [c1, c2]},
  48172. {"row": [str, edr], "column": [c1, c2 - clen]}
  48173. ];
  48174. newRange = newRange.concat(range2);
  48175. } else if (str > r1) {
  48176. let range2 = [
  48177. {"row": [r1, str - 1], "column": [c1, c2]},
  48178. {"row": [str, r2], "column": [c1, c2 - clen]}
  48179. ];
  48180. newRange = newRange.concat(range2);
  48181. } else if (edr < r2) {
  48182. let range2 = [
  48183. {"row": [r1, edr], "column": [c1, c2 - clen]},
  48184. {"row": [edr + 1, r2], "column": [c1, c2]}
  48185. ];
  48186. newRange = newRange.concat(range2);
  48187. }
  48188. } else if (stc > c1) {
  48189. if (str <= r1 && edr >= r2) {
  48190. newRange.push({
  48191. "row": [r1, r2],
  48192. "column": [c1, stc - 1]
  48193. });
  48194. } else if (str > r1 && edr < r2) {
  48195. let range2 = [
  48196. {"row": [r1, str - 1], "column": [c1, c2]},
  48197. {"row": [edr + 1, r2], "column": [c1, c2]},
  48198. {"row": [str, edr], "column": [c1, stc - 1]}
  48199. ];
  48200. newRange = newRange.concat(range2);
  48201. } else if (str > r1) {
  48202. let range2 = [
  48203. {"row": [r1, str - 1], "column": [c1, c2]},
  48204. {"row": [str, r2], "column": [c1, stc - 1]}
  48205. ];
  48206. newRange = newRange.concat(range2);
  48207. } else if (edr < r2) {
  48208. let range2 = [
  48209. {"row": [r1, edr], "column": [c1, stc - 1]},
  48210. {"row": [edr + 1, r2], "column": [c1, c2]}
  48211. ];
  48212. newRange = newRange.concat(range2);
  48213. }
  48214. } else if (edc < c2) {
  48215. if (str <= r1 && edr >= r2) {
  48216. newRange.push({
  48217. "row": [r1, r2],
  48218. "column": [c1 - clen, c2 - clen]
  48219. });
  48220. } else if (str > r1 && edr < r2) {
  48221. let range2 = [
  48222. {"row": [r1, str - 1], "column": [c1, c2]},
  48223. {"row": [edr + 1, r2], "column": [c1, c2]},
  48224. {"row": [str, edr], "column": [c1 - clen, c2 - clen]}
  48225. ];
  48226. newRange = newRange.concat(range2);
  48227. } else if (str > r1) {
  48228. let range2 = [
  48229. {"row": [r1, str - 1], "column": [c1, c2]},
  48230. {"row": [str, r2], "column": [c1 - clen, c2 - clen]}
  48231. ];
  48232. newRange = newRange.concat(range2);
  48233. } else if (edr < r2) {
  48234. let range2 = [
  48235. {"row": [r1, edr], "column": [c1 - clen, c2 - clen]},
  48236. {"row": [edr + 1, r2], "column": [c1, c2]}
  48237. ];
  48238. newRange = newRange.concat(range2);
  48239. }
  48240. }
  48241. }
  48242. } else if (type == "moveUp") {
  48243. if (stc > c2 || edc < c1 || str > r2) {
  48244. newRange.push({
  48245. "row": [r1, r2],
  48246. "column": [c1, c2]
  48247. });
  48248. } else if (edr < r1) {
  48249. if (stc <= c1 && edc >= c2) {
  48250. newRange.push({
  48251. "row": [r1 - rlen, r2 - rlen],
  48252. "column": [c1, c2]
  48253. });
  48254. } else if (stc > c1 && edc < c2) {
  48255. let range2 = [
  48256. {"row": [r1, r2], "column": [c1, stc - 1]},
  48257. {"row": [r1, r2], "column": [edc + 1, c2]},
  48258. {"row": [r1 - rlen, r2 - rlen], "column": [stc, edc]}
  48259. ];
  48260. newRange = newRange.concat(range2);
  48261. } else if (stc > c1) {
  48262. let range2 = [
  48263. {"row": [r1, r2], "column": [c1, stc - 1]},
  48264. {"row": [r1 - rlen, r2 - rlen], "column": [stc, c2]}
  48265. ];
  48266. newRange = newRange.concat(range2);
  48267. } else if (edc < c2) {
  48268. let range2 = [
  48269. {"row": [r1 - rlen, r2 - rlen], "column": [c1, edc]},
  48270. {"row": [r1, r2], "column": [edc + 1, c2]}
  48271. ];
  48272. newRange = newRange.concat(range2);
  48273. }
  48274. } else if (edr >= r1) {
  48275. if (str <= r1 && edr >= r2) {
  48276. if (stc > c1 && edc < c2) {
  48277. let range2 = [
  48278. {"row": [r1, r2], "column": [c1, stc - 1]},
  48279. {"row": [r1, r2], "column": [edc + 1, c2]}
  48280. ];
  48281. newRange = newRange.concat(range2);
  48282. } else if (stc > c1) {
  48283. let range2 = [
  48284. {"row": [r1, r2], "column": [c1, stc - 1]}
  48285. ];
  48286. newRange = newRange.concat(range2);
  48287. } else if (edc < c2) {
  48288. let range2 = [
  48289. {"row": [r1, r2], "column": [edc + 1, c2]}
  48290. ];
  48291. newRange = newRange.concat(range2);
  48292. }
  48293. } else if (str > r1 && edr < r2) {
  48294. if (stc <= c1 && edc >= c2) {
  48295. newRange.push({
  48296. "row": [r1, r2 - rlen],
  48297. "column": [c1, c2]
  48298. });
  48299. } else if (stc > c1 && edc < c2) {
  48300. let range2 = [
  48301. {"row": [r1, r2], "column": [c1, stc - 1]},
  48302. {"row": [r1, r2], "column": [edc + 1, c2]},
  48303. {"row": [r1, r2 - rlen], "column": [stc, edc]}
  48304. ];
  48305. newRange = newRange.concat(range2);
  48306. } else if (stc > c1) {
  48307. let range2 = [
  48308. {"row": [r1, r2], "column": [c1, stc - 1]},
  48309. {"row": [r1, r2 - rlen], "column": [stc, c2]}
  48310. ];
  48311. newRange = newRange.concat(range2);
  48312. } else if (edc < c2) {
  48313. let range2 = [
  48314. {"row": [r1, r2 - rlen], "column": [c1, edc]},
  48315. {"row": [r1, r2], "column": [edc + 1, c2]}
  48316. ];
  48317. newRange = newRange.concat(range2);
  48318. }
  48319. } else if (str > r1) {
  48320. if (stc <= c1 && edc >= c2) {
  48321. newRange.push({
  48322. "row": [r1, str - 1],
  48323. "column": [c1, c2]
  48324. });
  48325. } else if (stc > c1 && edc < c2) {
  48326. let range2 = [
  48327. {"row": [r1, r2], "column": [c1, stc - 1]},
  48328. {"row": [r1, r2], "column": [edc + 1, c2]},
  48329. {"row": [r1, str - 1], "column": [stc, edc]}
  48330. ];
  48331. newRange = newRange.concat(range2);
  48332. } else if (stc > c1) {
  48333. let range2 = [
  48334. {"row": [r1, r2], "column": [c1, stc - 1]},
  48335. {"row": [r1, str - 1], "column": [stc, c2]}
  48336. ];
  48337. newRange = newRange.concat(range2);
  48338. } else if (edc < c2) {
  48339. let range2 = [
  48340. {"row": [r1, str - 1], "column": [c1, edc]},
  48341. {"row": [r1, r2], "column": [edc + 1, c2]}
  48342. ];
  48343. newRange = newRange.concat(range2);
  48344. }
  48345. } else if (edr < r2) {
  48346. if (stc <= c1 && edc >= c2) {
  48347. newRange.push({
  48348. "row": [r1 - rlen, r2 - rlen],
  48349. "column": [c1, c2]
  48350. });
  48351. } else if (stc > c1 && edc < c2) {
  48352. let range2 = [
  48353. {"row": [r1, r2], "column": [c1, stc - 1]},
  48354. {"row": [r1, r2], "column": [edc + 1, c2]},
  48355. {"row": [r1 - rlen, r2 - rlen], "column": [stc, edc]}
  48356. ];
  48357. newRange = newRange.concat(range2);
  48358. } else if (stc > c1) {
  48359. let range2 = [
  48360. {"row": [r1, r2], "column": [c1, stc - 1]},
  48361. {"row": [r1 - rlen, r2 - rlen], "column": [stc, c2]}
  48362. ];
  48363. newRange = newRange.concat(range2);
  48364. } else if (edc < c2) {
  48365. let range2 = [
  48366. {"row": [r1 - rlen, r2 - rlen], "column": [c1, edc]},
  48367. {"row": [r1, r2], "column": [edc + 1, c2]}
  48368. ];
  48369. newRange = newRange.concat(range2);
  48370. }
  48371. }
  48372. }
  48373. }
  48374. return newRange;
  48375. }
  48376. var init_extend = __esm({
  48377. "src/global/extend.js"() {
  48378. init_editor();
  48379. init_formula();
  48380. init_refresh();
  48381. init_getdata();
  48382. init_setdata();
  48383. init_conditionformat();
  48384. init_freezen();
  48385. init_select();
  48386. init_sheetSearch();
  48387. init_protection();
  48388. init_get();
  48389. init_store();
  48390. }
  48391. });
  48392. // src/global/createsheet.js
  48393. function luckysheetcreatesheet(colwidth, rowheight, data, cfg, active) {
  48394. if (active == null) {
  48395. active = true;
  48396. }
  48397. store_default.visibledatarow = [];
  48398. store_default.visibledatacolumn = [];
  48399. store_default.ch_width = 0;
  48400. store_default.rh_height = 0;
  48401. store_default.zoomRatio = 1;
  48402. if (cfg != null) {
  48403. store_default.config = cfg;
  48404. } else {
  48405. store_default.config = {};
  48406. }
  48407. if (data.length == 0) {
  48408. store_default.flowdata = datagridgrowth(data, rowheight, colwidth);
  48409. } else if (data.length < rowheight && data[0].length < colwidth) {
  48410. store_default.flowdata = datagridgrowth(data, rowheight - data.length, colwidth - data[0].length);
  48411. } else if (data.length < rowheight) {
  48412. store_default.flowdata = datagridgrowth(data, rowheight - data.length, 0);
  48413. } else if (data[0].length < colwidth) {
  48414. store_default.flowdata = datagridgrowth(data, 0, colwidth - data[0].length);
  48415. } else {
  48416. store_default.flowdata = data;
  48417. }
  48418. editor_default.webWorkerFlowDataCache(store_default.flowdata);
  48419. rhchInit(rowheight, colwidth);
  48420. if (active) {
  48421. sheetmanage_default.showSheet();
  48422. setTimeout(function() {
  48423. sheetmanage_default.restoreCache();
  48424. formula_default.execFunctionGroup();
  48425. sheetmanage_default.restoreSheetAll(store_default.currentSheetIndex);
  48426. luckysheetrefreshgrid();
  48427. }, 1);
  48428. }
  48429. }
  48430. var init_createsheet = __esm({
  48431. "src/global/createsheet.js"() {
  48432. init_getdata();
  48433. init_editor();
  48434. init_rhchInit();
  48435. init_formula();
  48436. init_refresh();
  48437. init_sheetmanage();
  48438. init_store();
  48439. }
  48440. });
  48441. // src/global/method.js
  48442. var defaultConfig, method, method_default;
  48443. var init_method = __esm({
  48444. "src/global/method.js"() {
  48445. init_server();
  48446. init_constant();
  48447. init_sheetmanage();
  48448. init_formula();
  48449. init_imageCtrl();
  48450. init_dataVerificationCtrl();
  48451. init_pivotTable();
  48452. init_freezen();
  48453. init_get();
  48454. init_extend();
  48455. init_luckysheetConfigsetting();
  48456. init_editor();
  48457. init_createsheet();
  48458. init_store();
  48459. defaultConfig = {
  48460. defaultStore: {
  48461. container: null,
  48462. luckysheetfile: null,
  48463. defaultcolumnNum: 60,
  48464. defaultrowNum: 84,
  48465. fullscreenmode: true,
  48466. devicePixelRatio: 1,
  48467. currentSheetIndex: 0,
  48468. calculateSheetIndex: 0,
  48469. flowdata: [],
  48470. config: {},
  48471. visibledatarow: [],
  48472. visibledatacolumn: [],
  48473. ch_width: 0,
  48474. rh_height: 0,
  48475. cellmainWidth: 0,
  48476. cellmainHeight: 0,
  48477. toolbarHeight: 0,
  48478. infobarHeight: 0,
  48479. calculatebarHeight: 0,
  48480. rowHeaderWidth: 46,
  48481. columnHeaderHeight: 20,
  48482. cellMainSrollBarSize: 12,
  48483. sheetBarHeight: 31,
  48484. statisticBarHeight: 23,
  48485. luckysheetTableContentHW: [0, 0],
  48486. defaultcollen: 73,
  48487. defaultrowlen: 19,
  48488. jfcountfuncTimeout: null,
  48489. jfautoscrollTimeout: null,
  48490. luckysheet_select_status: false,
  48491. luckysheet_select_save: [{"row": [0, 0], "column": [0, 0]}],
  48492. luckysheet_selection_range: [],
  48493. luckysheet_copy_save: {},
  48494. luckysheet_paste_iscut: false,
  48495. filterchage: true,
  48496. luckysheet_filter_save: {"row": [], "column": []},
  48497. luckysheet_sheet_move_status: false,
  48498. luckysheet_sheet_move_data: [],
  48499. luckysheet_scroll_status: false,
  48500. luckysheetisrefreshdetail: true,
  48501. luckysheetisrefreshtheme: true,
  48502. luckysheetcurrentisPivotTable: false,
  48503. luckysheet_rows_selected_status: false,
  48504. luckysheet_cols_selected_status: false,
  48505. luckysheet_rows_change_size: false,
  48506. luckysheet_rows_change_size_start: [],
  48507. luckysheet_cols_change_size: false,
  48508. luckysheet_cols_change_size_start: [],
  48509. luckysheet_cols_dbclick_timeout: null,
  48510. luckysheet_cols_dbclick_times: 0,
  48511. luckysheetCellUpdate: [],
  48512. luckysheet_shiftpositon: null,
  48513. iscopyself: true,
  48514. orderbyindex: 0,
  48515. luckysheet_model_move_state: false,
  48516. luckysheet_model_xy: [0, 0],
  48517. luckysheet_model_move_obj: null,
  48518. luckysheet_cell_selected_move: false,
  48519. luckysheet_cell_selected_move_index: [],
  48520. luckysheet_cell_selected_extend: false,
  48521. luckysheet_cell_selected_extend_index: [],
  48522. luckysheet_cell_selected_extend_time: null,
  48523. clearjfundo: true,
  48524. jfredo: [],
  48525. jfundo: [],
  48526. lang: "en",
  48527. createChart: "",
  48528. highlightChart: "",
  48529. zIndex: 15,
  48530. chartparam: {
  48531. luckysheetCurrentChart: null,
  48532. luckysheetCurrentChartActive: false,
  48533. luckysheetCurrentChartMove: null,
  48534. luckysheetCurrentChartMoveTimeout: null,
  48535. luckysheetCurrentChartMoveObj: null,
  48536. luckysheetCurrentChartMoveXy: null,
  48537. luckysheetCurrentChartMoveWinH: null,
  48538. luckysheetCurrentChartMoveWinW: null,
  48539. luckysheetCurrentChartResize: null,
  48540. luckysheetCurrentChartResizeObj: null,
  48541. luckysheetCurrentChartResizeXy: null,
  48542. luckysheetCurrentChartResizeWinH: null,
  48543. luckysheetCurrentChartResizeWinW: null,
  48544. luckysheetInsertChartTosheetChange: true,
  48545. luckysheetCurrentChartZIndexRank: 100,
  48546. luckysheet_chart_redo_click: false,
  48547. luckysheetCurrentChartMaxState: false,
  48548. jfrefreshchartall: "",
  48549. changeChartCellData: "",
  48550. renderChart: "",
  48551. getChartJson: ""
  48552. },
  48553. functionList: null,
  48554. luckysheet_function: null,
  48555. chart_selection: {},
  48556. currentChart: "",
  48557. scrollRefreshSwitch: true,
  48558. measureTextCache: {},
  48559. measureTextCellInfoCache: {},
  48560. measureTextCacheTimeOut: null,
  48561. cellOverflowMapCache: {},
  48562. zoomRatio: 1,
  48563. visibledatacolumn_unique: null,
  48564. visibledatarow_unique: null,
  48565. showGridLines: true,
  48566. toobarObject: {},
  48567. inlineStringEditCache: null,
  48568. inlineStringEditRange: null,
  48569. fontList: [],
  48570. currentSheetView: "viewNormal"
  48571. },
  48572. defaultFormula: {
  48573. searchFunctionCell: null,
  48574. functionlistPosition: {},
  48575. rangechangeindex: null,
  48576. rangestart: false,
  48577. rangetosheet: null,
  48578. rangeSetValueTo: null,
  48579. func_selectedrange: {},
  48580. rangedrag_column_start: false,
  48581. rangedrag_row_start: false,
  48582. rangeResizeObj: null,
  48583. rangeResize: null,
  48584. rangeResizeIndex: null,
  48585. rangeResizexy: null,
  48586. rangeResizeWinH: null,
  48587. rangeResizeWinW: null,
  48588. rangeResizeTo: null,
  48589. rangeMovexy: null,
  48590. rangeMove: false,
  48591. rangeMoveObj: null,
  48592. rangeMoveIndex: null,
  48593. rangeMoveRangedata: null,
  48594. functionHTMLIndex: 0,
  48595. functionRangeIndex: null,
  48596. execvertex: {},
  48597. execFunctionGroupData: null,
  48598. execFunctionExist: null,
  48599. formulaContainSheetList: {},
  48600. cellTextToIndexList: {},
  48601. isFunctionRangeSave: false,
  48602. formulaContainCellList: {},
  48603. execFunctionGlobalData: {},
  48604. groupValuesRefreshData: [],
  48605. functionResizeData: {},
  48606. functionResizeStatus: false,
  48607. functionResizeTimeout: null,
  48608. data_parm_index: 0
  48609. },
  48610. defaultSheet: {
  48611. sheetMaxIndex: 0,
  48612. nulldata: null,
  48613. mergeCalculationSheet: {},
  48614. checkLoadSheetIndexToDataIndex: {},
  48615. CacheNotLoadControll: []
  48616. },
  48617. defaultPivotTable: {
  48618. pivotDatas: null,
  48619. pivotSheetIndex: 0,
  48620. pivotDataSheetIndex: 0,
  48621. celldata: null,
  48622. origindata: null,
  48623. pivot_data_type: {},
  48624. pivot_select_save: null,
  48625. column: null,
  48626. row: null,
  48627. values: null,
  48628. filter: null,
  48629. showType: null,
  48630. rowhidden: null,
  48631. selected: null,
  48632. caljs: null,
  48633. initial: true,
  48634. filterparm: null,
  48635. luckysheet_pivotTable_select_state: false,
  48636. jgridCurrentPivotInput: null,
  48637. movestate: false,
  48638. moveitemposition: [],
  48639. movesave: {},
  48640. drawPivotTable: true,
  48641. pivotTableBoundary: [12, 6]
  48642. },
  48643. defaultImage: {
  48644. imgItem: {
  48645. type: "3",
  48646. src: "",
  48647. originWidth: null,
  48648. originHeight: null,
  48649. default: {
  48650. width: null,
  48651. height: null,
  48652. left: null,
  48653. top: null
  48654. },
  48655. crop: {
  48656. width: null,
  48657. height: null,
  48658. offsetLeft: 0,
  48659. offsetTop: 0
  48660. },
  48661. isFixedPos: false,
  48662. fixedLeft: null,
  48663. fixedTop: null,
  48664. border: {
  48665. width: 0,
  48666. radius: 0,
  48667. style: "solid",
  48668. color: "#000"
  48669. }
  48670. },
  48671. images: null,
  48672. currentImgId: null,
  48673. currentWinW: null,
  48674. currentWinH: null,
  48675. resize: null,
  48676. resizeXY: null,
  48677. move: false,
  48678. moveXY: null,
  48679. cropChange: null,
  48680. cropChangeXY: null,
  48681. cropChangeObj: null,
  48682. copyImgItemObj: null
  48683. },
  48684. defaultDataVerification: {
  48685. defaultItem: {
  48686. type: "dropdown",
  48687. type2: null,
  48688. value1: "",
  48689. value2: "",
  48690. checked: false,
  48691. remote: false,
  48692. prohibitInput: false,
  48693. hintShow: false,
  48694. hintText: ""
  48695. },
  48696. curItem: null,
  48697. dataVerification: null,
  48698. selectRange: [],
  48699. selectStatus: false
  48700. }
  48701. };
  48702. method = {
  48703. addDataAjax: function(param, index2, url, func) {
  48704. let _this = this;
  48705. if (index2 == null) {
  48706. index2 = store_default.currentSheetIndex;
  48707. }
  48708. if (url == null) {
  48709. url = server_default.loadSheetUrl;
  48710. }
  48711. $("#luckysheet-grid-window-1").append(luckysheetlodingHTML());
  48712. param.currentPage++;
  48713. let dataType = "application/json;charset=UTF-8";
  48714. let token = sessionStorage.getItem("x-auth-token");
  48715. $.ajax({
  48716. method: "POST",
  48717. url,
  48718. headers: {"x-auth-token": token},
  48719. data: JSON.stringify(param),
  48720. contentType: dataType,
  48721. success: function(d) {
  48722. if (typeof d == "string") {
  48723. d = JSON.parse(d);
  48724. }
  48725. let dataset = d.data;
  48726. let newData = dataset.celldata;
  48727. luckysheetextendData(dataset["row"], newData);
  48728. setTimeout(function() {
  48729. store_default.loadingObj.close();
  48730. }, 500);
  48731. if (func && typeof func == "function") {
  48732. func(dataset);
  48733. }
  48734. }
  48735. });
  48736. },
  48737. reload: function(param, index2, url, func) {
  48738. let _this = this;
  48739. if (index2 == null) {
  48740. index2 = store_default.currentSheetIndex;
  48741. }
  48742. if (url == null) {
  48743. url = server_default.loadSheetUrl;
  48744. }
  48745. $("#luckysheet-grid-window-1").append(luckysheetlodingHTML());
  48746. let arg = {"gridKey": server_default.gridKey, "index": index2};
  48747. param = $.extend(true, param, arg);
  48748. let file = store_default.luckysheetfile[getSheetIndex(index2)];
  48749. $.post(url, param, function(d) {
  48750. let dataset = new Function("return " + d)();
  48751. file.celldata = dataset[index2.toString()];
  48752. let data = sheetmanage_default.buildGridData(file);
  48753. setTimeout(function() {
  48754. store_default.loadingObj.close();
  48755. }, 500);
  48756. file["data"] = data;
  48757. store_default.flowdata = data;
  48758. editor_default.webWorkerFlowDataCache(data);
  48759. luckysheetcreatesheet(data[0].length, data.length, data, null, false);
  48760. file["load"] = "1";
  48761. store_default.luckysheet_select_save.length = 0;
  48762. store_default.luckysheet_selection_range = [];
  48763. server_default.saveParam("shs", null, store_default.currentSheetIndex);
  48764. sheetmanage_default.changeSheet(index2);
  48765. if (func && typeof func == "function") {
  48766. func();
  48767. }
  48768. });
  48769. },
  48770. clearSheetByIndex: function(i2) {
  48771. let index2 = getSheetIndex(i2);
  48772. let sheetfile = store_default.luckysheetfile[index2];
  48773. if (!sheetfile.isPivotTable) {
  48774. sheetfile.data = [];
  48775. sheetfile.row = store_default.defaultrowNum;
  48776. sheetfile.column = store_default.defaultcolumnNum;
  48777. sheetfile.chart = [];
  48778. sheetfile.config = null;
  48779. sheetfile.filter = null;
  48780. sheetfile.filter_select = null;
  48781. sheetfile.celldata = [];
  48782. sheetfile.pivotTable = {};
  48783. sheetfile.calcChain = [];
  48784. sheetfile.status = 0;
  48785. sheetfile.load = 0;
  48786. store_default.flowdata = [];
  48787. editor_default.webWorkerFlowDataCache(store_default.flowdata);
  48788. $("#" + store_default.container + " .luckysheet-data-visualization-chart").remove();
  48789. $("#" + store_default.container + " .luckysheet-datavisual-selection-set").remove();
  48790. $("#luckysheet-row-count-show, #luckysheet-formula-functionrange-select, #luckysheet-row-count-show, #luckysheet-column-count-show, #luckysheet-change-size-line, #luckysheet-cell-selected-focus, #luckysheet-selection-copy, #luckysheet-cell-selected-extend, #luckysheet-cell-selected-move, #luckysheet-cell-selected").hide();
  48791. delete sheetfile.load;
  48792. } else {
  48793. delete store_default.luckysheetfile[index2];
  48794. }
  48795. },
  48796. clear: function(index2) {
  48797. let _this = this;
  48798. if (index2 == "all") {
  48799. for (let i2 = 0; i2 < store_default.luckysheetfile.length; i2++) {
  48800. let sheetfile = store_default.luckysheetfile[i2];
  48801. _this.clearSheetByIndex(sheetfile.index);
  48802. }
  48803. } else {
  48804. if (index2 == null) {
  48805. index2 = store_default.currentSheetIndex;
  48806. }
  48807. _this.clearSheetByIndex(index2);
  48808. }
  48809. sheetmanage_default.changeSheet(store_default.luckysheetfile[0].index);
  48810. },
  48811. destroy: function() {
  48812. $("#" + store_default.container).empty();
  48813. $("body > .luckysheet-cols-menu").remove();
  48814. $("#luckysheet-modal-dialog-mask, #luckysheetTextSizeTest, #luckysheet-icon-morebtn-div").remove();
  48815. $("#luckysheet-input-box").parent().remove();
  48816. $("#luckysheet-formula-help-c").remove();
  48817. $(".chartSetting, .luckysheet-modal-dialog-slider").remove();
  48818. $(document).off(".luckysheetEvent");
  48819. $(document).off(".luckysheetProtection");
  48820. freezen_default.initialHorizontal = true;
  48821. freezen_default.initialVertical = true;
  48822. let defaultStore = $.extend(true, {}, defaultConfig.defaultStore);
  48823. for (let key in defaultStore) {
  48824. if (key in store_default) {
  48825. store_default[key] = defaultStore[key];
  48826. }
  48827. }
  48828. let defaultFormula = $.extend(true, {}, defaultConfig.defaultFormula);
  48829. for (let key in defaultFormula) {
  48830. if (key in formula_default) {
  48831. formula_default[key] = defaultFormula[key];
  48832. }
  48833. }
  48834. let defaultSheet = $.extend(true, {}, defaultConfig.defaultSheet);
  48835. for (let key in defaultSheet) {
  48836. if (key in sheetmanage_default) {
  48837. sheetmanage_default[key] = defaultSheet[key];
  48838. }
  48839. }
  48840. let defaultPivotTable = $.extend(true, {}, defaultConfig.defaultPivotTable);
  48841. for (let key in defaultPivotTable) {
  48842. if (key in pivotTable_default) {
  48843. pivotTable_default[key] = defaultPivotTable[key];
  48844. }
  48845. }
  48846. let defaultImage = $.extend(true, {}, defaultConfig.defaultImage);
  48847. for (let key in defaultImage) {
  48848. if (key in imageCtrl_default) {
  48849. imageCtrl_default[key] = defaultImage[key];
  48850. }
  48851. }
  48852. let defaultDataVerification = $.extend(true, {}, defaultConfig.defaultDataVerification);
  48853. for (let key in defaultDataVerification) {
  48854. if (key in dataVerificationCtrl_default) {
  48855. dataVerificationCtrl_default[key] = defaultDataVerification[key];
  48856. }
  48857. }
  48858. store_default.asyncLoad = ["core"];
  48859. },
  48860. editorChart: function(c2) {
  48861. let chart_selection_color = luckyColor[0];
  48862. let chart_id = "luckysheetEditMode-datav-chart";
  48863. let chart_selection_id = chart_id + "_selection";
  48864. c2.chart_id = chart_id;
  48865. let chartTheme = c2.chartTheme;
  48866. chartTheme = chartTheme == null ? "default0000" : chartTheme;
  48867. luckysheet.insertChartTosheet(c2.sheetIndex, c2.dataSheetIndex, c2.option, c2.chartType, c2.selfOption, c2.defaultOption, c2.row, c2.column, chart_selection_color, chart_id, chart_selection_id, c2.chartStyle, c2.rangeConfigCheck, c2.rangeRowCheck, c2.rangeColCheck, c2.chartMarkConfig, c2.chartTitleConfig, c2.winWidth, c2.winHeight, c2.scrollLeft, c2.scrollTop, chartTheme, c2.myWidth, c2.myHeight, c2.myLeft != null ? parseFloat(c2.myLeft) : null, c2.myTop != null ? parseFloat(c2.myTop) : null, c2.myindexrank, true);
  48868. $("#" + chart_id).find(".luckysheet-modal-controll-update").click();
  48869. },
  48870. createHookFunction: function() {
  48871. let hookName = arguments[0];
  48872. if (luckysheetConfigsetting_default.hook && luckysheetConfigsetting_default.hook[hookName] != null && typeof luckysheetConfigsetting_default.hook[hookName] == "function") {
  48873. var args = Array.prototype.slice.apply(arguments);
  48874. args.shift();
  48875. let ret = luckysheetConfigsetting_default.hook[hookName].apply(this, args);
  48876. if (ret === false) {
  48877. return false;
  48878. } else {
  48879. return true;
  48880. }
  48881. }
  48882. return true;
  48883. }
  48884. };
  48885. method_default = method;
  48886. }
  48887. });
  48888. // src/controllers/postil.js
  48889. var luckysheetPostil, postil_default;
  48890. var init_postil = __esm({
  48891. "src/controllers/postil.js"() {
  48892. init_location();
  48893. init_editor();
  48894. init_formula();
  48895. init_cursorPos();
  48896. init_refresh();
  48897. init_set();
  48898. init_get();
  48899. init_util();
  48900. init_freezen();
  48901. init_menuButton();
  48902. init_protection();
  48903. init_server();
  48904. init_store();
  48905. init_method();
  48906. luckysheetPostil = {
  48907. defaultWidth: 144,
  48908. defaultHeight: 84,
  48909. currentObj: null,
  48910. currentWinW: null,
  48911. currentWinH: null,
  48912. resize: null,
  48913. resizeXY: null,
  48914. move: false,
  48915. moveXY: null,
  48916. init: function() {
  48917. let _this = this;
  48918. $("#luckysheet-postil-showBoxs").off("mousedown.showPs").on("mousedown.showPs", ".luckysheet-postil-show", function(event2) {
  48919. if (!checkProtectionAuthorityNormal(store_default.currentSheetIndex, "editObjects", false)) {
  48920. return;
  48921. }
  48922. _this.currentObj = $(this).find(".luckysheet-postil-show-main");
  48923. if ($(this).hasClass("luckysheet-postil-show-active")) {
  48924. event2.stopPropagation();
  48925. return;
  48926. }
  48927. _this.removeActivePs();
  48928. $(this).addClass("luckysheet-postil-show-active");
  48929. $(this).find(".luckysheet-postil-dialog-resize").show();
  48930. $(this).find(".arrowCanvas").css("z-index", 200);
  48931. $(this).find(".luckysheet-postil-show-main").css("z-index", 200);
  48932. event2.stopPropagation();
  48933. });
  48934. $("#luckysheet-postil-showBoxs").off("mouseup.showPs").on("mouseup.showPs", ".luckysheet-postil-show", function(event2) {
  48935. if (event2.which == "3") {
  48936. event2.stopPropagation();
  48937. }
  48938. });
  48939. $("#luckysheet-postil-showBoxs").off("mousedown.resize").on("mousedown.resize", ".luckysheet-postil-show .luckysheet-postil-dialog-resize .luckysheet-postil-dialog-resize-item", function(event2) {
  48940. if (!checkProtectionAuthorityNormal(store_default.currentSheetIndex, "editObjects", false)) {
  48941. return;
  48942. }
  48943. _this.currentObj = $(this).closest(".luckysheet-postil-show-main");
  48944. _this.currentWinW = $("#luckysheet-cell-main")[0].scrollWidth;
  48945. _this.currentWinH = $("#luckysheet-cell-main")[0].scrollHeight;
  48946. _this.resize = $(this).data("type");
  48947. let scrollTop = $("#luckysheet-cell-main").scrollTop(), scrollLeft = $("#luckysheet-cell-main").scrollLeft();
  48948. let mouse = mouseposition(event2.pageX, event2.pageY);
  48949. let x = mouse[0] + scrollLeft;
  48950. let y = mouse[1] + scrollTop;
  48951. let position = _this.currentObj.position();
  48952. let width = _this.currentObj.width();
  48953. let height = _this.currentObj.height();
  48954. _this.resizeXY = [
  48955. x,
  48956. y,
  48957. width,
  48958. height,
  48959. position.left + scrollLeft,
  48960. position.top + scrollTop,
  48961. scrollLeft,
  48962. scrollTop
  48963. ];
  48964. setluckysheet_scroll_status(true);
  48965. if ($(this).closest(".luckysheet-postil-show").hasClass("luckysheet-postil-show-active")) {
  48966. event2.stopPropagation();
  48967. return;
  48968. }
  48969. _this.removeActivePs();
  48970. $(this).closest(".luckysheet-postil-show").addClass("luckysheet-postil-show-active");
  48971. $(this).closest(".luckysheet-postil-show").find(".luckysheet-postil-dialog-resize").show();
  48972. $(this).closest(".luckysheet-postil-show").find(".arrowCanvas").css("z-index", 200);
  48973. $(this).closest(".luckysheet-postil-show").find(".luckysheet-postil-show-main").css("z-index", 200);
  48974. event2.stopPropagation();
  48975. });
  48976. $("#luckysheet-postil-showBoxs").off("mousedown.move").on("mousedown.move", ".luckysheet-postil-show .luckysheet-postil-dialog-move .luckysheet-postil-dialog-move-item", function(event2) {
  48977. if (!checkProtectionAuthorityNormal(store_default.currentSheetIndex, "editObjects", false)) {
  48978. return;
  48979. }
  48980. _this.currentObj = $(this).closest(".luckysheet-postil-show-main");
  48981. _this.currentWinW = $("#luckysheet-cell-main")[0].scrollWidth;
  48982. _this.currentWinH = $("#luckysheet-cell-main")[0].scrollHeight;
  48983. _this.move = true;
  48984. let scrollTop = $("#luckysheet-cell-main").scrollTop(), scrollLeft = $("#luckysheet-cell-main").scrollLeft();
  48985. let offset = _this.currentObj.offset();
  48986. let position = _this.currentObj.position();
  48987. _this.moveXY = [
  48988. event2.pageX - offset.left,
  48989. event2.pageY - offset.top,
  48990. position.left,
  48991. position.top,
  48992. scrollLeft,
  48993. scrollTop
  48994. ];
  48995. setluckysheet_scroll_status(true);
  48996. if ($(this).closest(".luckysheet-postil-show").hasClass("luckysheet-postil-show-active")) {
  48997. event2.stopPropagation();
  48998. return;
  48999. }
  49000. _this.removeActivePs();
  49001. $(this).closest(".luckysheet-postil-show").addClass("luckysheet-postil-show-active");
  49002. $(this).closest(".luckysheet-postil-show").find(".luckysheet-postil-dialog-resize").show();
  49003. $(this).closest(".luckysheet-postil-show").find(".arrowCanvas").css("z-index", 200);
  49004. $(this).closest(".luckysheet-postil-show").find(".luckysheet-postil-show-main").css("z-index", 200);
  49005. event2.stopPropagation();
  49006. });
  49007. },
  49008. overshow: function(event2) {
  49009. let _this = this;
  49010. $("#luckysheet-postil-overshow").remove();
  49011. if ($(event2.target).closest("#luckysheet-cell-main").length == 0) {
  49012. return;
  49013. }
  49014. let mouse = mouseposition(event2.pageX, event2.pageY);
  49015. let scrollLeft = $("#luckysheet-cell-main").scrollLeft();
  49016. let scrollTop = $("#luckysheet-cell-main").scrollTop();
  49017. let x = mouse[0];
  49018. let y = mouse[1];
  49019. let offsetX = 0;
  49020. let offsetY = 0;
  49021. if (freezen_default.freezenverticaldata != null && mouse[0] < freezen_default.freezenverticaldata[0] - freezen_default.freezenverticaldata[2]) {
  49022. offsetX = scrollLeft;
  49023. } else {
  49024. x += scrollLeft;
  49025. }
  49026. if (freezen_default.freezenhorizontaldata != null && mouse[1] < freezen_default.freezenhorizontaldata[0] - freezen_default.freezenhorizontaldata[2]) {
  49027. offsetY = scrollTop;
  49028. } else {
  49029. y += scrollTop;
  49030. }
  49031. let row_index = rowLocation(y)[2];
  49032. let col_index = colLocation(x)[2];
  49033. let margeset = menuButton_default.mergeborer(store_default.flowdata, row_index, col_index);
  49034. if (!!margeset) {
  49035. row_index = margeset.row[2];
  49036. col_index = margeset.column[2];
  49037. }
  49038. if (store_default.flowdata[row_index] == null || store_default.flowdata[row_index][col_index] == null || store_default.flowdata[row_index][col_index].ps == null) {
  49039. return;
  49040. }
  49041. let postil = store_default.flowdata[row_index][col_index].ps;
  49042. if (postil["isshow"] || $("#luckysheet-postil-show_" + row_index + "_" + col_index).length > 0) {
  49043. return;
  49044. }
  49045. let value = postil["value"] == null ? "" : postil["value"];
  49046. let row = store_default.visibledatarow[row_index], row_pre = row_index - 1 == -1 ? 0 : store_default.visibledatarow[row_index - 1];
  49047. let col = store_default.visibledatacolumn[col_index], col_pre = col_index - 1 == -1 ? 0 : store_default.visibledatacolumn[col_index - 1];
  49048. if (!!margeset) {
  49049. row = margeset.row[1];
  49050. row_pre = margeset.row[0];
  49051. col = margeset.column[1];
  49052. col_pre = margeset.column[0];
  49053. }
  49054. let toX = col + offsetX;
  49055. let toY = row_pre + offsetY;
  49056. let fromX = toX + 18 * store_default.zoomRatio;
  49057. let fromY = toY - 18 * store_default.zoomRatio;
  49058. if (fromY < 0) {
  49059. fromY = 2;
  49060. }
  49061. let width = postil["width"] == null ? _this.defaultWidth * store_default.zoomRatio : postil["width"] * store_default.zoomRatio;
  49062. let height = postil["height"] == null ? _this.defaultHeight * store_default.zoomRatio : postil["height"] * store_default.zoomRatio;
  49063. let size = _this.getArrowCanvasSize(fromX, fromY, toX, toY);
  49064. let commentDivs = "";
  49065. let valueLines = value.split("\n");
  49066. for (let line of valueLines) {
  49067. commentDivs += "<div>" + _this.htmlEscape(line) + "</div>";
  49068. }
  49069. let html = '<div id="luckysheet-postil-overshow"><canvas class="arrowCanvas" width="' + size[2] + '" height="' + size[3] + '" style="position:absolute;left:' + size[0] + "px;top:" + size[1] + 'px;z-index:100;pointer-events:none;"></canvas><div style="width:' + (width - 12) + "px;min-height:" + (height - 12) + "px;color:#000;padding:5px;border:1px solid #000;background-color:rgb(255,255,225);position:absolute;left:" + fromX + "px;top:" + fromY + 'px;z-index:100;">' + commentDivs + "</div></div>";
  49070. $(html).appendTo($("#luckysheet-cell-main"));
  49071. let ctx = $("#luckysheet-postil-overshow .arrowCanvas").get(0).getContext("2d");
  49072. _this.drawArrow(ctx, size[4], size[5], size[6], size[7]);
  49073. },
  49074. getArrowCanvasSize: function(fromX, fromY, toX, toY) {
  49075. let left = toX - 5;
  49076. if (fromX < toX) {
  49077. left = fromX - 5;
  49078. }
  49079. let top = toY - 5;
  49080. if (fromY < toY) {
  49081. top = fromY - 5;
  49082. }
  49083. let width = Math.abs(fromX - toX) + 10;
  49084. let height = Math.abs(fromY - toY) + 10;
  49085. let x1 = width - 5;
  49086. let x2 = 5;
  49087. if (fromX < toX) {
  49088. x1 = 5;
  49089. x2 = width - 5;
  49090. }
  49091. let y1 = height - 5;
  49092. let y2 = 5;
  49093. if (fromY < toY) {
  49094. y1 = 5;
  49095. y2 = height - 5;
  49096. }
  49097. return [left, top, width, height, x1, y1, x2, y2];
  49098. },
  49099. drawArrow: function(ctx, fromX, fromY, toX, toY, theta, headlen, width, color) {
  49100. theta = getObjType(theta) == "undefined" ? 30 : theta;
  49101. headlen = getObjType(headlen) == "undefined" ? 6 : headlen;
  49102. width = getObjType(width) == "undefined" ? 1 : width;
  49103. color = getObjType(color) == "undefined" ? "#000" : color;
  49104. let angle = Math.atan2(fromY - toY, fromX - toX) * 180 / Math.PI, angle1 = (angle + theta) * Math.PI / 180, angle2 = (angle - theta) * Math.PI / 180, topX = headlen * Math.cos(angle1), topY = headlen * Math.sin(angle1), botX = headlen * Math.cos(angle2), botY = headlen * Math.sin(angle2);
  49105. ctx.save();
  49106. ctx.beginPath();
  49107. let arrowX = fromX - topX, arrowY = fromY - topY;
  49108. ctx.moveTo(arrowX, arrowY);
  49109. ctx.moveTo(fromX, fromY);
  49110. ctx.lineTo(toX, toY);
  49111. ctx.lineWidth = width;
  49112. ctx.strokeStyle = color;
  49113. ctx.stroke();
  49114. arrowX = toX + topX;
  49115. arrowY = toY + topY;
  49116. ctx.moveTo(arrowX, arrowY);
  49117. ctx.lineTo(toX, toY);
  49118. arrowX = toX + botX;
  49119. arrowY = toY + botY;
  49120. ctx.lineTo(arrowX, arrowY);
  49121. ctx.fillStyle = color;
  49122. ctx.fill();
  49123. ctx.restore();
  49124. },
  49125. buildAllPs: function(data) {
  49126. let _this = this;
  49127. $("#luckysheet-cell-main #luckysheet-postil-showBoxs").empty();
  49128. for (let r2 = 0; r2 < data.length; r2++) {
  49129. for (let c2 = 0; c2 < data[0].length; c2++) {
  49130. if (data[r2][c2] != null && data[r2][c2].ps != null) {
  49131. let postil = data[r2][c2].ps;
  49132. _this.buildPs(r2, c2, postil);
  49133. }
  49134. }
  49135. }
  49136. _this.init();
  49137. },
  49138. buildPs: function(r2, c2, postil) {
  49139. if ($("#luckysheet-postil-show_" + r2 + "_" + c2).length > 0) {
  49140. $("#luckysheet-postil-show_" + r2 + "_" + c2).remove();
  49141. }
  49142. if (postil == null) {
  49143. return;
  49144. }
  49145. let _this = this;
  49146. let isshow = postil["isshow"] == null ? false : postil["isshow"];
  49147. if (isshow) {
  49148. let row = store_default.visibledatarow[r2], row_pre = r2 - 1 == -1 ? 0 : store_default.visibledatarow[r2 - 1];
  49149. let col = store_default.visibledatacolumn[c2], col_pre = c2 - 1 == -1 ? 0 : store_default.visibledatacolumn[c2 - 1];
  49150. let margeset = menuButton_default.mergeborer(store_default.flowdata, r2, c2);
  49151. if (!!margeset) {
  49152. row = margeset.row[1];
  49153. row_pre = margeset.row[0];
  49154. col = margeset.column[1];
  49155. col_pre = margeset.column[0];
  49156. }
  49157. let toX = col;
  49158. let toY = row_pre;
  49159. let left = postil["left"] == null ? toX + 18 * store_default.zoomRatio : postil["left"] * store_default.zoomRatio;
  49160. let top = postil["top"] == null ? toY - 18 * store_default.zoomRatio : postil["top"] * store_default.zoomRatio;
  49161. let width = postil["width"] == null ? _this.defaultWidth * store_default.zoomRatio : postil["width"] * store_default.zoomRatio;
  49162. let height = postil["height"] == null ? _this.defaultHeight * store_default.zoomRatio : postil["height"] * store_default.zoomRatio;
  49163. let value = postil["value"] == null ? "" : postil["value"];
  49164. if (top < 0) {
  49165. top = 2;
  49166. }
  49167. let size = _this.getArrowCanvasSize(left, top, toX, toY);
  49168. let commentDivs = "";
  49169. let valueLines = value.split("\n");
  49170. for (let line of valueLines) {
  49171. commentDivs += "<div>" + _this.htmlEscape(line) + "</div>";
  49172. }
  49173. let html = '<div id="luckysheet-postil-show_' + r2 + "_" + c2 + '" class="luckysheet-postil-show"><canvas class="arrowCanvas" width="' + size[2] + '" height="' + size[3] + '" style="position:absolute;left:' + size[0] + "px;top:" + size[1] + 'px;z-index:100;pointer-events:none;"></canvas><div class="luckysheet-postil-show-main" style="width:' + width + "px;height:" + height + "px;color:#000;padding:5px;border:1px solid #000;background-color:rgb(255,255,225);position:absolute;left:" + left + "px;top:" + top + 'px;box-sizing:border-box;z-index:100;"><div class="luckysheet-postil-dialog-move"><div class="luckysheet-postil-dialog-move-item luckysheet-postil-dialog-move-item-t" data-type="t"></div><div class="luckysheet-postil-dialog-move-item luckysheet-postil-dialog-move-item-r" data-type="r"></div><div class="luckysheet-postil-dialog-move-item luckysheet-postil-dialog-move-item-b" data-type="b"></div><div class="luckysheet-postil-dialog-move-item luckysheet-postil-dialog-move-item-l" data-type="l"></div></div><div class="luckysheet-postil-dialog-resize" style="display:none;"><div class="luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-lt" data-type="lt"></div><div class="luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-mt" data-type="mt"></div><div class="luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-lm" data-type="lm"></div><div class="luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-rm" data-type="rm"></div><div class="luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-rt" data-type="rt"></div><div class="luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-lb" data-type="lb"></div><div class="luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-mb" data-type="mb"></div><div class="luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-rb" data-type="rb"></div></div><div style="width:100%;height:100%;overflow:hidden;"><div class="formulaInputFocus" style="width:' + (width - 12) + "px;height:" + (height - 12) + 'px;line-height:20px;box-sizing:border-box;text-align: center;;word-break:break-all;" spellcheck="false" contenteditable="true">' + commentDivs + "</div></div></div></div>";
  49174. $(html).appendTo($("#luckysheet-cell-main #luckysheet-postil-showBoxs"));
  49175. let ctx = $("#luckysheet-postil-show_" + r2 + "_" + c2 + " .arrowCanvas").get(0).getContext("2d");
  49176. _this.drawArrow(ctx, size[4], size[5], size[6], size[7]);
  49177. }
  49178. },
  49179. newPs: function(r2, c2) {
  49180. if (!checkProtectionAuthorityNormal(store_default.currentSheetIndex, "editObjects")) {
  49181. return;
  49182. }
  49183. if (!method_default.createHookFunction("commentInsertBefore", r2, c2)) {
  49184. return;
  49185. }
  49186. let _this = this;
  49187. let row = store_default.visibledatarow[r2], row_pre = r2 - 1 == -1 ? 0 : store_default.visibledatarow[r2 - 1];
  49188. let col = store_default.visibledatacolumn[c2], col_pre = c2 - 1 == -1 ? 0 : store_default.visibledatacolumn[c2 - 1];
  49189. let margeset = menuButton_default.mergeborer(store_default.flowdata, r2, c2);
  49190. if (!!margeset) {
  49191. row = margeset.row[1];
  49192. row_pre = margeset.row[0];
  49193. col = margeset.column[1];
  49194. col_pre = margeset.column[0];
  49195. }
  49196. let toX = col;
  49197. let toY = row_pre;
  49198. let fromX = toX + 18 * store_default.zoomRatio;
  49199. let fromY = toY - 18 * store_default.zoomRatio;
  49200. if (fromY < 0) {
  49201. fromY = 2;
  49202. }
  49203. let width = _this.defaultWidth * store_default.zoomRatio;
  49204. let height = _this.defaultHeight * store_default.zoomRatio;
  49205. let size = _this.getArrowCanvasSize(fromX, fromY, toX, toY);
  49206. let html = '<div id="luckysheet-postil-show_' + r2 + "_" + c2 + '" class="luckysheet-postil-show luckysheet-postil-show-active"><canvas class="arrowCanvas" width="' + size[2] + '" height="' + size[3] + '" style="position:absolute;left:' + size[0] + "px;top:" + size[1] + 'px;z-index:100;pointer-events:none;"></canvas><div class="luckysheet-postil-show-main" style="width:' + width + "px;height:" + height + "px;color:#000;padding:5px;border:1px solid #000;background-color:rgb(255,255,225);position:absolute;left:" + fromX + "px;top:" + fromY + 'px;box-sizing:border-box;z-index:100;"><div class="luckysheet-postil-dialog-move"><div class="luckysheet-postil-dialog-move-item luckysheet-postil-dialog-move-item-t" data-type="t"></div><div class="luckysheet-postil-dialog-move-item luckysheet-postil-dialog-move-item-r" data-type="r"></div><div class="luckysheet-postil-dialog-move-item luckysheet-postil-dialog-move-item-b" data-type="b"></div><div class="luckysheet-postil-dialog-move-item luckysheet-postil-dialog-move-item-l" data-type="l"></div></div><div class="luckysheet-postil-dialog-resize"><div class="luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-lt" data-type="lt"></div><div class="luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-mt" data-type="mt"></div><div class="luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-lm" data-type="lm"></div><div class="luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-rm" data-type="rm"></div><div class="luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-rt" data-type="rt"></div><div class="luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-lb" data-type="lb"></div><div class="luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-mb" data-type="mb"></div><div class="luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-rb" data-type="rb"></div></div><div style="width:100%;height:100%;overflow:hidden;"><div class="formulaInputFocus" style="width:132px;height:72px;line-height:20px;box-sizing:border-box;text-align: center;word-break:break-all;" spellcheck="false" contenteditable="true"></div></div></div></div>';
  49207. $(html).appendTo($("#luckysheet-cell-main #luckysheet-postil-showBoxs"));
  49208. let ctx = $("#luckysheet-postil-show_" + r2 + "_" + c2 + " .arrowCanvas").get(0).getContext("2d");
  49209. _this.drawArrow(ctx, size[4], size[5], size[6], size[7]);
  49210. $("#luckysheet-postil-show_" + r2 + "_" + c2 + " .formulaInputFocus").focus();
  49211. _this.init();
  49212. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  49213. let rc = [];
  49214. if (d[r2][c2] == null) {
  49215. d[r2][c2] = {};
  49216. }
  49217. d[r2][c2].ps = {"left": null, "top": null, "width": null, "height": null, "value": "", "isshow": false};
  49218. rc.push(r2 + "_" + c2);
  49219. _this.ref(d, rc);
  49220. setTimeout(() => {
  49221. method_default.createHookFunction("commentInsertAfter", r2, c2, d[r2][c2]);
  49222. }, 0);
  49223. },
  49224. editPs: function(r2, c2) {
  49225. let _this = this;
  49226. if (!checkProtectionAuthorityNormal(store_default.currentSheetIndex, "editObjects")) {
  49227. return;
  49228. }
  49229. if ($("#luckysheet-postil-show_" + r2 + "_" + c2).length > 0) {
  49230. $("#luckysheet-postil-show_" + r2 + "_" + c2).show();
  49231. $("#luckysheet-postil-show_" + r2 + "_" + c2).addClass("luckysheet-postil-show-active");
  49232. $("#luckysheet-postil-show_" + r2 + "_" + c2).find(".luckysheet-postil-dialog-resize").show();
  49233. } else {
  49234. let postil = store_default.flowdata[r2][c2].ps;
  49235. let row = store_default.visibledatarow[r2], row_pre = r2 - 1 == -1 ? 0 : store_default.visibledatarow[r2 - 1];
  49236. let col = store_default.visibledatacolumn[c2], col_pre = c2 - 1 == -1 ? 0 : store_default.visibledatacolumn[c2 - 1];
  49237. let margeset = menuButton_default.mergeborer(store_default.flowdata, r2, c2);
  49238. if (!!margeset) {
  49239. row = margeset.row[1];
  49240. row_pre = margeset.row[0];
  49241. col = margeset.column[1];
  49242. col_pre = margeset.column[0];
  49243. }
  49244. let toX = col;
  49245. let toY = row_pre;
  49246. let left = postil["left"] == null ? toX + 18 * store_default.zoomRatio : postil["left"] * store_default.zoomRatio;
  49247. let top = postil["top"] == null ? toY - 18 * store_default.zoomRatio : postil["top"] * store_default.zoomRatio;
  49248. let width = postil["width"] == null ? _this.defaultWidth * store_default.zoomRatio : postil["width"] * store_default.zoomRatio;
  49249. let height = postil["height"] == null ? _this.defaultHeight * store_default.zoomRatio : postil["height"] * store_default.zoomRatio;
  49250. let value = postil["value"] == null ? "" : postil["value"];
  49251. if (top < 0) {
  49252. top = 2;
  49253. }
  49254. let size = _this.getArrowCanvasSize(left, top, toX, toY);
  49255. let commentDivs = "";
  49256. let valueLines = value.split("\n");
  49257. for (let line of valueLines) {
  49258. commentDivs += "<div>" + _this.htmlEscape(line) + "</div>";
  49259. }
  49260. let html = '<div id="luckysheet-postil-show_' + r2 + "_" + c2 + '" class="luckysheet-postil-show luckysheet-postil-show-active"><canvas class="arrowCanvas" width="' + size[2] + '" height="' + size[3] + '" style="position:absolute;left:' + size[0] + "px;top:" + size[1] + 'px;z-index:100;pointer-events:none;"></canvas><div class="luckysheet-postil-show-main" style="width:' + width + "px;height:" + height + "px;color:#000;padding:5px;border:1px solid #000;background-color:rgb(255,255,225);position:absolute;left:" + left + "px;top:" + top + 'px;box-sizing:border-box;z-index:100;"><div class="luckysheet-postil-dialog-move"><div class="luckysheet-postil-dialog-move-item luckysheet-postil-dialog-move-item-t" data-type="t"></div><div class="luckysheet-postil-dialog-move-item luckysheet-postil-dialog-move-item-r" data-type="r"></div><div class="luckysheet-postil-dialog-move-item luckysheet-postil-dialog-move-item-b" data-type="b"></div><div class="luckysheet-postil-dialog-move-item luckysheet-postil-dialog-move-item-l" data-type="l"></div></div><div class="luckysheet-postil-dialog-resize"><div class="luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-lt" data-type="lt"></div><div class="luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-mt" data-type="mt"></div><div class="luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-lm" data-type="lm"></div><div class="luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-rm" data-type="rm"></div><div class="luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-rt" data-type="rt"></div><div class="luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-lb" data-type="lb"></div><div class="luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-mb" data-type="mb"></div><div class="luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-rb" data-type="rb"></div></div><div style="width:100%;height:100%;overflow:hidden;"><div class="formulaInputFocus" style="width:' + (width - 12) + "px;height:" + (height - 12) + 'px;line-height:20px;box-sizing:border-box;text-align: center;;word-break:break-all;" spellcheck="false" contenteditable="true">' + commentDivs + "</div></div></div></div>";
  49261. $(html).appendTo($("#luckysheet-cell-main #luckysheet-postil-showBoxs"));
  49262. let ctx = $("#luckysheet-postil-show_" + r2 + "_" + c2 + " .arrowCanvas").get(0).getContext("2d");
  49263. _this.drawArrow(ctx, size[4], size[5], size[6], size[7]);
  49264. }
  49265. $("#luckysheet-postil-show_" + r2 + "_" + c2 + " .formulaInputFocus").focus();
  49266. luckysheetRangeLast($("#luckysheet-postil-show_" + r2 + "_" + c2 + " .formulaInputFocus").get(0));
  49267. _this.init();
  49268. },
  49269. delPs: function(r2, c2) {
  49270. if (!checkProtectionAuthorityNormal(store_default.currentSheetIndex, "editObjects")) {
  49271. return;
  49272. }
  49273. if (!method_default.createHookFunction("commentDeleteBefore", r2, c2, store_default.flowdata[r2][c2])) {
  49274. return;
  49275. }
  49276. if ($("#luckysheet-postil-show_" + r2 + "_" + c2).length > 0) {
  49277. $("#luckysheet-postil-show_" + r2 + "_" + c2).remove();
  49278. }
  49279. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  49280. let rc = [];
  49281. delete d[r2][c2].ps;
  49282. rc.push(r2 + "_" + c2);
  49283. this.ref(d, rc);
  49284. setTimeout(() => {
  49285. method_default.createHookFunction("commentDeleteAfter", r2, c2, store_default.flowdata[r2][c2]);
  49286. }, 0);
  49287. },
  49288. showHidePs: function(r2, c2) {
  49289. let _this = this;
  49290. let postil = store_default.flowdata[r2][c2].ps;
  49291. let isshow = postil["isshow"];
  49292. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  49293. let rc = [];
  49294. if (isshow) {
  49295. d[r2][c2].ps.isshow = false;
  49296. $("#luckysheet-postil-show_" + r2 + "_" + c2).remove();
  49297. } else {
  49298. d[r2][c2].ps.isshow = true;
  49299. let row = store_default.visibledatarow[r2], row_pre = r2 - 1 == -1 ? 0 : store_default.visibledatarow[r2 - 1];
  49300. let col = store_default.visibledatacolumn[c2], col_pre = c2 - 1 == -1 ? 0 : store_default.visibledatacolumn[c2 - 1];
  49301. let margeset = menuButton_default.mergeborer(store_default.flowdata, r2, c2);
  49302. if (!!margeset) {
  49303. row = margeset.row[1];
  49304. row_pre = margeset.row[0];
  49305. col = margeset.column[1];
  49306. col_pre = margeset.column[0];
  49307. }
  49308. let scrollLeft = $("#luckysheet-cell-main").scrollLeft();
  49309. let scrollTop = $("#luckysheet-cell-main").scrollTop();
  49310. let toX = col;
  49311. let toY = row_pre;
  49312. if (freezen_default.freezenverticaldata != null && toX < freezen_default.freezenverticaldata[0] - freezen_default.freezenverticaldata[2]) {
  49313. toX += scrollLeft;
  49314. }
  49315. if (freezen_default.freezenhorizontaldata != null && toY < freezen_default.freezenhorizontaldata[0] - freezen_default.freezenhorizontaldata[2]) {
  49316. toY += scrollTop;
  49317. }
  49318. let left = postil["left"] == null ? toX + 18 * store_default.zoomRatio : postil["left"] * store_default.zoomRatio;
  49319. let top = postil["top"] == null ? toY - 18 * store_default.zoomRatio : postil["top"] * store_default.zoomRatio;
  49320. let width = postil["width"] == null ? _this.defaultWidth * store_default.zoomRatio : postil["width"] * store_default.zoomRatio;
  49321. let height = postil["height"] == null ? _this.defaultHeight * store_default.zoomRatio : postil["height"] * store_default.zoomRatio;
  49322. let value = postil["value"] == null ? "" : postil["value"];
  49323. if (top < 0) {
  49324. top = 2;
  49325. }
  49326. let size = _this.getArrowCanvasSize(left, top, toX, toY);
  49327. let commentDivs = "";
  49328. let valueLines = value.split("\n");
  49329. for (let line of valueLines) {
  49330. commentDivs += "<div>" + _this.htmlEscape(line) + "</div>";
  49331. }
  49332. let html = '<div id="luckysheet-postil-show_' + r2 + "_" + c2 + '" class="luckysheet-postil-show"><canvas class="arrowCanvas" width="' + size[2] + '" height="' + size[3] + '" style="position:absolute;left:' + size[0] + "px;top:" + size[1] + 'px;z-index:100;pointer-events:none;"></canvas><div class="luckysheet-postil-show-main" style="width:' + width + "px;height:" + height + "px;color:#000;padding:5px;border:1px solid #000;background-color:rgb(255,255,225);position:absolute;left:" + left + "px;top:" + top + 'px;box-sizing:border-box;z-index:100;"><div class="luckysheet-postil-dialog-move"><div class="luckysheet-postil-dialog-move-item luckysheet-postil-dialog-move-item-t" data-type="t"></div><div class="luckysheet-postil-dialog-move-item luckysheet-postil-dialog-move-item-r" data-type="r"></div><div class="luckysheet-postil-dialog-move-item luckysheet-postil-dialog-move-item-b" data-type="b"></div><div class="luckysheet-postil-dialog-move-item luckysheet-postil-dialog-move-item-l" data-type="l"></div></div><div class="luckysheet-postil-dialog-resize" style="display:none;"><div class="luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-lt" data-type="lt"></div><div class="luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-mt" data-type="mt"></div><div class="luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-lm" data-type="lm"></div><div class="luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-rm" data-type="rm"></div><div class="luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-rt" data-type="rt"></div><div class="luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-lb" data-type="lb"></div><div class="luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-mb" data-type="mb"></div><div class="luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-rb" data-type="rb"></div></div><div style="width:100%;height:100%;overflow:hidden;"><div class="formulaInputFocus" style="width:' + (width - 12) + "px;height:" + (height - 12) + 'px;line-height:20px;box-sizing:border-box;text-align: center;;word-break:break-all;" spellcheck="false" contenteditable="true">' + commentDivs + "</div></div></div></div>";
  49333. $(html).appendTo($("#luckysheet-cell-main #luckysheet-postil-showBoxs"));
  49334. let ctx = $("#luckysheet-postil-show_" + r2 + "_" + c2 + " .arrowCanvas").get(0).getContext("2d");
  49335. _this.drawArrow(ctx, size[4], size[5], size[6], size[7]);
  49336. _this.init();
  49337. }
  49338. rc.push(r2 + "_" + c2);
  49339. _this.ref(d, rc);
  49340. },
  49341. showHideAllPs: function() {
  49342. let _this = this;
  49343. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  49344. let isAllShow = true;
  49345. let allPs = [];
  49346. for (let r2 = 0; r2 < d.length; r2++) {
  49347. for (let c2 = 0; c2 < d[0].length; c2++) {
  49348. if (d[r2] != null && d[r2][c2] != null && d[r2][c2].ps != null) {
  49349. allPs.push(r2 + "_" + c2);
  49350. if (!d[r2][c2].ps.isshow) {
  49351. isAllShow = false;
  49352. }
  49353. }
  49354. }
  49355. }
  49356. let rc = [];
  49357. if (allPs.length > 0) {
  49358. if (isAllShow) {
  49359. $("#luckysheet-cell-main #luckysheet-postil-showBoxs").empty();
  49360. for (let i2 = 0; i2 < allPs.length; i2++) {
  49361. let rowIndex = allPs[i2].split("_")[0];
  49362. let colIndex = allPs[i2].split("_")[1];
  49363. let postil = d[rowIndex][colIndex].ps;
  49364. if (postil["isshow"]) {
  49365. d[rowIndex][colIndex].ps.isshow = false;
  49366. rc.push(allPs[i2]);
  49367. }
  49368. }
  49369. } else {
  49370. for (let i2 = 0; i2 < allPs.length; i2++) {
  49371. let rowIndex = allPs[i2].split("_")[0];
  49372. let colIndex = allPs[i2].split("_")[1];
  49373. let postil = d[rowIndex][colIndex].ps;
  49374. if (!postil["isshow"]) {
  49375. let row = store_default.visibledatarow[rowIndex], row_pre = rowIndex - 1 == -1 ? 0 : store_default.visibledatarow[rowIndex - 1];
  49376. let col = store_default.visibledatacolumn[colIndex], col_pre = colIndex - 1 == -1 ? 0 : store_default.visibledatacolumn[colIndex - 1];
  49377. let margeset = menuButton_default.mergeborer(store_default.flowdata, rowIndex, colIndex);
  49378. if (!!margeset) {
  49379. row = margeset.row[1];
  49380. row_pre = margeset.row[0];
  49381. col = margeset.column[1];
  49382. col_pre = margeset.column[0];
  49383. }
  49384. let scrollLeft = $("#luckysheet-cell-main").scrollLeft();
  49385. let scrollTop = $("#luckysheet-cell-main").scrollTop();
  49386. let toX = col;
  49387. let toY = row_pre;
  49388. if (freezen_default.freezenverticaldata != null && toX < freezen_default.freezenverticaldata[0] - freezen_default.freezenverticaldata[2]) {
  49389. toX += scrollLeft;
  49390. }
  49391. if (freezen_default.freezenhorizontaldata != null && toY < freezen_default.freezenhorizontaldata[0] - freezen_default.freezenhorizontaldata[2]) {
  49392. toY += scrollTop;
  49393. }
  49394. let left = postil["left"] == null ? toX + 18 * store_default.zoomRatio : postil["left"] * store_default.zoomRatio;
  49395. let top = postil["top"] == null ? toY - 18 * store_default.zoomRatio : postil["top"] * store_default.zoomRatio;
  49396. let width = postil["width"] == null ? _this.defaultWidth * store_default.zoomRatio : postil["width"] * store_default.zoomRatio;
  49397. let height = postil["height"] == null ? _this.defaultHeight * store_default.zoomRatio : postil["height"] * store_default.zoomRatio;
  49398. let value = postil["value"] == null ? "" : postil["value"];
  49399. if (top < 0) {
  49400. top = 2;
  49401. }
  49402. let size = _this.getArrowCanvasSize(left, top, toX, toY);
  49403. let commentDivs = "";
  49404. let valueLines = value.split("\n");
  49405. for (let line of valueLines) {
  49406. commentDivs += "<div>" + _this.htmlEscape(line) + "</div>";
  49407. }
  49408. let html = '<div id="luckysheet-postil-show_' + rowIndex + "_" + colIndex + '" class="luckysheet-postil-show"><canvas class="arrowCanvas" width="' + size[2] + '" height="' + size[3] + '" style="position:absolute;left:' + size[0] + "px;top:" + size[1] + 'px;z-index:100;pointer-events:none;"></canvas><div class="luckysheet-postil-show-main" style="width:' + width + "px;height:" + height + "px;color:#000;padding:5px;border:1px solid #000;background-color:rgb(255,255,225);position:absolute;left:" + left + "px;top:" + top + 'px;box-sizing:border-box;z-index:100;"><div class="luckysheet-postil-dialog-move"><div class="luckysheet-postil-dialog-move-item luckysheet-postil-dialog-move-item-t" data-type="t"></div><div class="luckysheet-postil-dialog-move-item luckysheet-postil-dialog-move-item-r" data-type="r"></div><div class="luckysheet-postil-dialog-move-item luckysheet-postil-dialog-move-item-b" data-type="b"></div><div class="luckysheet-postil-dialog-move-item luckysheet-postil-dialog-move-item-l" data-type="l"></div></div><div class="luckysheet-postil-dialog-resize" style="display:none;"><div class="luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-lt" data-type="lt"></div><div class="luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-mt" data-type="mt"></div><div class="luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-lm" data-type="lm"></div><div class="luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-rm" data-type="rm"></div><div class="luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-rt" data-type="rt"></div><div class="luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-lb" data-type="lb"></div><div class="luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-mb" data-type="mb"></div><div class="luckysheet-postil-dialog-resize-item luckysheet-postil-dialog-resize-item-rb" data-type="rb"></div></div><div style="width:100%;height:100%;overflow:hidden;"><div class="formulaInputFocus" style="width:' + (width - 12) + "px;height:" + (height - 12) + 'px;line-height:20px;box-sizing:border-box;text-align: center;;word-break:break-all;" spellcheck="false" contenteditable="true">' + commentDivs + "</div></div></div></div>";
  49409. $(html).appendTo($("#luckysheet-cell-main #luckysheet-postil-showBoxs"));
  49410. let ctx = $("#luckysheet-postil-show_" + rowIndex + "_" + colIndex + " .arrowCanvas").get(0).getContext("2d");
  49411. _this.drawArrow(ctx, size[4], size[5], size[6], size[7]);
  49412. d[rowIndex][colIndex].ps.isshow = true;
  49413. rc.push(allPs[i2]);
  49414. }
  49415. }
  49416. }
  49417. }
  49418. _this.ref(d, rc);
  49419. _this.init();
  49420. },
  49421. removeActivePs: function() {
  49422. if ($("#luckysheet-postil-showBoxs .luckysheet-postil-show-active").length > 0) {
  49423. let id = $("#luckysheet-postil-showBoxs .luckysheet-postil-show-active").attr("id");
  49424. let r2 = id.split("luckysheet-postil-show_")[1].split("_")[0];
  49425. let c2 = id.split("luckysheet-postil-show_")[1].split("_")[1];
  49426. let value = $("#" + id).find(".formulaInputFocus").html().replaceAll("<div>", "\n").replaceAll(/<(.*)>.*?|<(.*) \/>/g, "").trim();
  49427. if (!method_default.createHookFunction("commentUpdateBefore", r2, c2, value)) {
  49428. if (!store_default.flowdata[r2][c2].ps.isshow) {
  49429. $("#" + id).remove();
  49430. }
  49431. return;
  49432. }
  49433. const previousCell = $.extend(true, {}, store_default.flowdata[r2][c2]);
  49434. $("#" + id).removeClass("luckysheet-postil-show-active");
  49435. $("#" + id).find(".luckysheet-postil-dialog-resize").hide();
  49436. $("#" + id).find(".arrowCanvas").css("z-index", 100);
  49437. $("#" + id).find(".luckysheet-postil-show-main").css("z-index", 100);
  49438. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  49439. let rc = [];
  49440. d[r2][c2].ps.value = value;
  49441. rc.push(r2 + "_" + c2);
  49442. this.ref(d, rc);
  49443. if (!d[r2][c2].ps.isshow) {
  49444. $("#" + id).remove();
  49445. }
  49446. setTimeout(() => {
  49447. method_default.createHookFunction("commentUpdateAfter", r2, c2, previousCell, d[r2][c2]);
  49448. }, 0);
  49449. }
  49450. },
  49451. ref: function(data, rc) {
  49452. if (store_default.clearjfundo) {
  49453. store_default.jfundo.length = 0;
  49454. store_default.jfredo.push({
  49455. "type": "postil",
  49456. "data": store_default.flowdata,
  49457. "curdata": data,
  49458. "sheetIndex": store_default.currentSheetIndex,
  49459. "rc": rc
  49460. });
  49461. }
  49462. store_default.flowdata = data;
  49463. editor_default.webWorkerFlowDataCache(store_default.flowdata);
  49464. store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)].data = store_default.flowdata;
  49465. if (server_default.allowUpdate) {
  49466. for (let i2 = 0; i2 < rc.length; i2++) {
  49467. let r2 = rc[i2].split("_")[0];
  49468. let c2 = rc[i2].split("_")[1];
  49469. server_default.saveParam("v", store_default.currentSheetIndex, store_default.flowdata[r2][c2], {"r": r2, "c": c2});
  49470. }
  49471. }
  49472. setTimeout(function() {
  49473. luckysheetrefreshgrid();
  49474. }, 1);
  49475. },
  49476. positionSync: function() {
  49477. let _this = this;
  49478. $("#luckysheet-postil-showBoxs .luckysheet-postil-show").each(function(i2, e) {
  49479. let id = $(e).attr("id");
  49480. let r2 = id.split("luckysheet-postil-show_")[1].split("_")[0];
  49481. let c2 = id.split("luckysheet-postil-show_")[1].split("_")[1];
  49482. let cell = store_default.flowdata[r2][c2];
  49483. if (cell != null && cell.ps != null) {
  49484. _this.buildPs(r2, c2, cell.ps);
  49485. } else {
  49486. $("#" + id).hide();
  49487. }
  49488. });
  49489. },
  49490. htmlEscape: function(text) {
  49491. return text.replace(/[<>"&]/g, function(match, pos, originalText) {
  49492. console.log(match, pos, originalText);
  49493. switch (match) {
  49494. case "<": {
  49495. return "&lt";
  49496. }
  49497. case ">": {
  49498. return "&gt";
  49499. }
  49500. case "&": {
  49501. return "&amp";
  49502. }
  49503. case '"': {
  49504. return "&quot;";
  49505. }
  49506. }
  49507. });
  49508. }
  49509. };
  49510. postil_default = luckysheetPostil;
  49511. }
  49512. });
  49513. // src/global/border.js
  49514. function getBorderInfoComputeRange(dataset_row_st, dataset_row_ed, dataset_col_st, dataset_col_ed, sheetIndex) {
  49515. let borderInfoCompute = {};
  49516. let cfg, data;
  49517. if (sheetIndex == null) {
  49518. cfg = store_default.config;
  49519. data = store_default.flowdata;
  49520. } else {
  49521. cfg = store_default.luckysheetfile[getSheetIndex(sheetIndex)].config;
  49522. data = store_default.luckysheetfile[getSheetIndex(sheetIndex)].data;
  49523. }
  49524. let borderInfo = cfg["borderInfo"];
  49525. if (borderInfo != null && borderInfo.length > 0) {
  49526. for (let i2 = 0; i2 < borderInfo.length; i2++) {
  49527. let rangeType = borderInfo[i2].rangeType;
  49528. if (rangeType == "range") {
  49529. let borderType = borderInfo[i2].borderType;
  49530. let borderColor = borderInfo[i2].color;
  49531. let borderStyle = borderInfo[i2].style;
  49532. let borderRange = borderInfo[i2].range;
  49533. for (let j = 0; j < borderRange.length; j++) {
  49534. let bd_r1 = borderRange[j].row[0], bd_r2 = borderRange[j].row[1];
  49535. let bd_c1 = borderRange[j].column[0], bd_c2 = borderRange[j].column[1];
  49536. if (bd_r1 < dataset_row_st) {
  49537. bd_r1 = dataset_row_st;
  49538. }
  49539. if (bd_r2 > dataset_row_ed) {
  49540. bd_r2 = dataset_row_ed;
  49541. }
  49542. if (bd_c1 < dataset_col_st) {
  49543. bd_c1 = dataset_col_st;
  49544. }
  49545. if (bd_c2 > dataset_col_ed) {
  49546. bd_c2 = dataset_col_ed;
  49547. }
  49548. if (borderType == "border-left") {
  49549. for (let bd_r = bd_r1; bd_r <= bd_r2; bd_r++) {
  49550. if (cfg["rowhidden"] != null && cfg["rowhidden"][bd_r] != null) {
  49551. continue;
  49552. }
  49553. if (borderInfoCompute[bd_r + "_" + bd_c1] == null) {
  49554. borderInfoCompute[bd_r + "_" + bd_c1] = {};
  49555. }
  49556. borderInfoCompute[bd_r + "_" + bd_c1].l = {"color": borderColor, "style": borderStyle};
  49557. let bd_c_left = bd_c1 - 1;
  49558. if (bd_c_left >= 0 && borderInfoCompute[bd_r + "_" + bd_c_left]) {
  49559. if (data[bd_r] != null && getObjType(data[bd_r][bd_c_left]) == "object" && data[bd_r][bd_c_left].mc != null) {
  49560. let cell_left = data[bd_r][bd_c_left];
  49561. let mc2 = cfg["merge"][cell_left.mc.r + "_" + cell_left.mc.c];
  49562. if (mc2.c + mc2.cs - 1 == bd_c_left) {
  49563. borderInfoCompute[bd_r + "_" + bd_c_left].r = {"color": borderColor, "style": borderStyle};
  49564. }
  49565. } else {
  49566. borderInfoCompute[bd_r + "_" + bd_c_left].r = {"color": borderColor, "style": borderStyle};
  49567. }
  49568. }
  49569. let mc = cfg["merge"] || {};
  49570. for (const key in mc) {
  49571. let {c: c2, r: r2, cs, rs} = mc[key];
  49572. if (bd_c1 <= c2 + cs - 1 && bd_c1 > c2 && bd_r >= r2 && bd_r <= r2 + rs - 1) {
  49573. borderInfoCompute[bd_r + "_" + bd_c1].l = null;
  49574. }
  49575. }
  49576. }
  49577. } else if (borderType == "border-right") {
  49578. for (let bd_r = bd_r1; bd_r <= bd_r2; bd_r++) {
  49579. if (cfg["rowhidden"] != null && cfg["rowhidden"][bd_r] != null) {
  49580. continue;
  49581. }
  49582. if (borderInfoCompute[bd_r + "_" + bd_c2] == null) {
  49583. borderInfoCompute[bd_r + "_" + bd_c2] = {};
  49584. }
  49585. borderInfoCompute[bd_r + "_" + bd_c2].r = {"color": borderColor, "style": borderStyle};
  49586. let bd_c_right = bd_c2 + 1;
  49587. if (bd_c_right < data[0].length && borderInfoCompute[bd_r + "_" + bd_c_right]) {
  49588. if (data[bd_r] != null && getObjType(data[bd_r][bd_c_right]) == "object" && data[bd_r][bd_c_right].mc != null) {
  49589. let cell_right = data[bd_r][bd_c_right];
  49590. let mc2 = cfg["merge"][cell_right.mc.r + "_" + cell_right.mc.c];
  49591. if (mc2.c == bd_c_right) {
  49592. borderInfoCompute[bd_r + "_" + bd_c_right].l = {"color": borderColor, "style": borderStyle};
  49593. }
  49594. } else {
  49595. borderInfoCompute[bd_r + "_" + bd_c_right].l = {"color": borderColor, "style": borderStyle};
  49596. }
  49597. }
  49598. let mc = cfg["merge"] || {};
  49599. for (const key in mc) {
  49600. let {c: c2, r: r2, cs, rs} = mc[key];
  49601. if (bd_c2 < c2 + cs - 1 && bd_c2 >= c2 && bd_r >= r2 && bd_r <= r2 + rs - 1) {
  49602. borderInfoCompute[bd_r + "_" + bd_c2].r = null;
  49603. }
  49604. }
  49605. }
  49606. } else if (borderType == "border-top") {
  49607. if (cfg["rowhidden"] != null && cfg["rowhidden"][bd_r1] != null) {
  49608. continue;
  49609. }
  49610. for (let bd_c = bd_c1; bd_c <= bd_c2; bd_c++) {
  49611. if (borderInfoCompute[bd_r1 + "_" + bd_c] == null) {
  49612. borderInfoCompute[bd_r1 + "_" + bd_c] = {};
  49613. }
  49614. borderInfoCompute[bd_r1 + "_" + bd_c].t = {"color": borderColor, "style": borderStyle};
  49615. let bd_r_top = bd_r1 - 1;
  49616. if (bd_r_top >= 0 && borderInfoCompute[bd_r_top + "_" + bd_c]) {
  49617. if (data[bd_r_top] != null && getObjType(data[bd_r_top][bd_c]) == "object" && data[bd_r_top][bd_c].mc != null) {
  49618. let cell_top = data[bd_r_top][bd_c];
  49619. let mc2 = cfg["merge"][cell_top.mc.r + "_" + cell_top.mc.c];
  49620. if (mc2.r + mc2.rs - 1 == bd_r_top) {
  49621. borderInfoCompute[bd_r_top + "_" + bd_c].b = {"color": borderColor, "style": borderStyle};
  49622. }
  49623. } else {
  49624. borderInfoCompute[bd_r_top + "_" + bd_c].b = {"color": borderColor, "style": borderStyle};
  49625. }
  49626. }
  49627. let mc = cfg["merge"] || {};
  49628. for (const key in mc) {
  49629. let {c: c2, r: r2, cs, rs} = mc[key];
  49630. if (bd_r1 <= r2 + rs - 1 && bd_r1 > r2 && bd_c >= c2 && bd_c <= c2 + cs - 1) {
  49631. borderInfoCompute[bd_r1 + "_" + bd_c].t = null;
  49632. }
  49633. }
  49634. }
  49635. } else if (borderType == "border-bottom") {
  49636. if (cfg["rowhidden"] != null && cfg["rowhidden"][bd_r2] != null) {
  49637. continue;
  49638. }
  49639. for (let bd_c = bd_c1; bd_c <= bd_c2; bd_c++) {
  49640. if (borderInfoCompute[bd_r2 + "_" + bd_c] == null) {
  49641. borderInfoCompute[bd_r2 + "_" + bd_c] = {};
  49642. }
  49643. borderInfoCompute[bd_r2 + "_" + bd_c].b = {"color": borderColor, "style": borderStyle};
  49644. let bd_r_bottom = bd_r2 + 1;
  49645. if (bd_r_bottom < data.length && borderInfoCompute[bd_r_bottom + "_" + bd_c]) {
  49646. if (data[bd_r_bottom] != null && getObjType(data[bd_r_bottom][bd_c]) == "object" && data[bd_r_bottom][bd_c].mc != null) {
  49647. let cell_bottom = data[bd_r_bottom][bd_c];
  49648. let mc2 = cfg["merge"][cell_bottom.mc.r + "_" + cell_bottom.mc.c];
  49649. if (mc2.r == bd_r_bottom) {
  49650. borderInfoCompute[bd_r_bottom + "_" + bd_c].t = {"color": borderColor, "style": borderStyle};
  49651. }
  49652. } else {
  49653. borderInfoCompute[bd_r_bottom + "_" + bd_c].t = {"color": borderColor, "style": borderStyle};
  49654. }
  49655. }
  49656. let mc = cfg["merge"] || {};
  49657. for (const key in mc) {
  49658. let {c: c2, r: r2, cs, rs} = mc[key];
  49659. if (bd_r2 < r2 + rs - 1 && bd_r2 >= r2 && bd_c >= c2 && bd_c <= c2 + cs - 1) {
  49660. borderInfoCompute[bd_r2 + "_" + bd_c].b = null;
  49661. }
  49662. }
  49663. }
  49664. } else if (borderType == "border-all") {
  49665. for (let bd_r = bd_r1; bd_r <= bd_r2; bd_r++) {
  49666. if (cfg["rowhidden"] != null && cfg["rowhidden"][bd_r] != null) {
  49667. continue;
  49668. }
  49669. for (let bd_c = bd_c1; bd_c <= bd_c2; bd_c++) {
  49670. if (data[bd_r] != null && getObjType(data[bd_r][bd_c]) == "object" && data[bd_r][bd_c].mc != null) {
  49671. let cell = data[bd_r][bd_c];
  49672. let mc = cfg["merge"][cell.mc.r + "_" + cell.mc.c];
  49673. if (mc.r == bd_r) {
  49674. if (borderInfoCompute[bd_r + "_" + bd_c] == null) {
  49675. borderInfoCompute[bd_r + "_" + bd_c] = {};
  49676. }
  49677. borderInfoCompute[bd_r + "_" + bd_c].t = {"color": borderColor, "style": borderStyle};
  49678. }
  49679. if (mc.r + mc.rs - 1 == bd_r) {
  49680. if (borderInfoCompute[bd_r + "_" + bd_c] == null) {
  49681. borderInfoCompute[bd_r + "_" + bd_c] = {};
  49682. }
  49683. borderInfoCompute[bd_r + "_" + bd_c].b = {"color": borderColor, "style": borderStyle};
  49684. }
  49685. if (mc.c == bd_c) {
  49686. if (borderInfoCompute[bd_r + "_" + bd_c] == null) {
  49687. borderInfoCompute[bd_r + "_" + bd_c] = {};
  49688. }
  49689. borderInfoCompute[bd_r + "_" + bd_c].l = {"color": borderColor, "style": borderStyle};
  49690. }
  49691. if (mc.c + mc.cs - 1 == bd_c) {
  49692. if (borderInfoCompute[bd_r + "_" + bd_c] == null) {
  49693. borderInfoCompute[bd_r + "_" + bd_c] = {};
  49694. }
  49695. borderInfoCompute[bd_r + "_" + bd_c].r = {"color": borderColor, "style": borderStyle};
  49696. }
  49697. } else {
  49698. if (borderInfoCompute[bd_r + "_" + bd_c] == null) {
  49699. borderInfoCompute[bd_r + "_" + bd_c] = {};
  49700. }
  49701. borderInfoCompute[bd_r + "_" + bd_c].l = {"color": borderColor, "style": borderStyle};
  49702. borderInfoCompute[bd_r + "_" + bd_c].r = {"color": borderColor, "style": borderStyle};
  49703. borderInfoCompute[bd_r + "_" + bd_c].t = {"color": borderColor, "style": borderStyle};
  49704. borderInfoCompute[bd_r + "_" + bd_c].b = {"color": borderColor, "style": borderStyle};
  49705. }
  49706. if (bd_r == bd_r1) {
  49707. let bd_r_top = bd_r1 - 1;
  49708. if (bd_r_top >= 0 && borderInfoCompute[bd_r_top + "_" + bd_c]) {
  49709. if (data[bd_r_top] != null && getObjType(data[bd_r_top][bd_c]) == "object" && data[bd_r_top][bd_c].mc != null) {
  49710. let cell_top = data[bd_r_top][bd_c];
  49711. let mc = cfg["merge"][cell_top.mc.r + "_" + cell_top.mc.c];
  49712. if (mc.r + mc.rs - 1 == bd_r_top) {
  49713. borderInfoCompute[bd_r_top + "_" + bd_c].b = {"color": borderColor, "style": borderStyle};
  49714. }
  49715. } else {
  49716. borderInfoCompute[bd_r_top + "_" + bd_c].b = {"color": borderColor, "style": borderStyle};
  49717. }
  49718. }
  49719. }
  49720. if (bd_r == bd_r2) {
  49721. let bd_r_bottom = bd_r2 + 1;
  49722. if (bd_r_bottom < data.length && borderInfoCompute[bd_r_bottom + "_" + bd_c]) {
  49723. if (data[bd_r_bottom] != null && getObjType(data[bd_r_bottom][bd_c]) == "object" && data[bd_r_bottom][bd_c].mc != null) {
  49724. let cell_bottom = data[bd_r_bottom][bd_c];
  49725. let mc = cfg["merge"][cell_bottom.mc.r + "_" + cell_bottom.mc.c];
  49726. if (mc.r == bd_r_bottom) {
  49727. borderInfoCompute[bd_r_bottom + "_" + bd_c].t = {"color": borderColor, "style": borderStyle};
  49728. }
  49729. } else {
  49730. borderInfoCompute[bd_r_bottom + "_" + bd_c].t = {"color": borderColor, "style": borderStyle};
  49731. }
  49732. }
  49733. }
  49734. if (bd_c == bd_c1) {
  49735. let bd_c_left = bd_c1 - 1;
  49736. if (bd_c_left >= 0 && borderInfoCompute[bd_r + "_" + bd_c_left]) {
  49737. if (data[bd_r] != null && getObjType(data[bd_r][bd_c_left]) == "object" && data[bd_r][bd_c_left].mc != null) {
  49738. let cell_left = data[bd_r][bd_c_left];
  49739. let mc = cfg["merge"][cell_left.mc.r + "_" + cell_left.mc.c];
  49740. if (mc.c + mc.cs - 1 == bd_c_left) {
  49741. borderInfoCompute[bd_r + "_" + bd_c_left].r = {"color": borderColor, "style": borderStyle};
  49742. }
  49743. } else {
  49744. borderInfoCompute[bd_r + "_" + bd_c_left].r = {"color": borderColor, "style": borderStyle};
  49745. }
  49746. }
  49747. }
  49748. if (bd_c == bd_c2) {
  49749. let bd_c_right = bd_c2 + 1;
  49750. if (bd_c_right < data[0].length && borderInfoCompute[bd_r + "_" + bd_c_right]) {
  49751. if (data[bd_r] != null && getObjType(data[bd_r][bd_c_right]) == "object" && data[bd_r][bd_c_right].mc != null) {
  49752. let cell_right = data[bd_r][bd_c_right];
  49753. let mc = cfg["merge"][cell_right.mc.r + "_" + cell_right.mc.c];
  49754. if (mc.c == bd_c_right) {
  49755. borderInfoCompute[bd_r + "_" + bd_c_right].l = {"color": borderColor, "style": borderStyle};
  49756. }
  49757. } else {
  49758. borderInfoCompute[bd_r + "_" + bd_c_right].l = {"color": borderColor, "style": borderStyle};
  49759. }
  49760. }
  49761. }
  49762. }
  49763. }
  49764. } else if (borderType == "border-outside") {
  49765. for (let bd_r = bd_r1; bd_r <= bd_r2; bd_r++) {
  49766. if (cfg["rowhidden"] != null && cfg["rowhidden"][bd_r] != null) {
  49767. continue;
  49768. }
  49769. for (let bd_c = bd_c1; bd_c <= bd_c2; bd_c++) {
  49770. if (!(bd_r == bd_r1 || bd_r == bd_r2 || bd_c == bd_c1 || bd_c == bd_c2)) {
  49771. continue;
  49772. }
  49773. if (bd_r == bd_r1) {
  49774. if (borderInfoCompute[bd_r + "_" + bd_c] == null) {
  49775. borderInfoCompute[bd_r + "_" + bd_c] = {};
  49776. }
  49777. borderInfoCompute[bd_r + "_" + bd_c].t = {"color": borderColor, "style": borderStyle};
  49778. let bd_r_top = bd_r1 - 1;
  49779. if (bd_r_top >= 0 && borderInfoCompute[bd_r_top + "_" + bd_c]) {
  49780. if (data[bd_r_top] != null && getObjType(data[bd_r_top][bd_c]) == "object" && data[bd_r_top][bd_c].mc != null) {
  49781. let cell_top = data[bd_r_top][bd_c];
  49782. let mc = cfg["merge"][cell_top.mc.r + "_" + cell_top.mc.c];
  49783. if (mc.r + mc.rs - 1 == bd_r_top) {
  49784. borderInfoCompute[bd_r_top + "_" + bd_c].b = {"color": borderColor, "style": borderStyle};
  49785. }
  49786. } else {
  49787. borderInfoCompute[bd_r_top + "_" + bd_c].b = {"color": borderColor, "style": borderStyle};
  49788. }
  49789. }
  49790. }
  49791. if (bd_r == bd_r2) {
  49792. if (borderInfoCompute[bd_r + "_" + bd_c] == null) {
  49793. borderInfoCompute[bd_r + "_" + bd_c] = {};
  49794. }
  49795. borderInfoCompute[bd_r + "_" + bd_c].b = {"color": borderColor, "style": borderStyle};
  49796. let bd_r_bottom = bd_r2 + 1;
  49797. if (bd_r_bottom < data.length && borderInfoCompute[bd_r_bottom + "_" + bd_c]) {
  49798. if (data[bd_r_bottom] != null && getObjType(data[bd_r_bottom][bd_c]) == "object" && data[bd_r_bottom][bd_c].mc != null) {
  49799. let cell_bottom = data[bd_r_bottom][bd_c];
  49800. let mc = cfg["merge"][cell_bottom.mc.r + "_" + cell_bottom.mc.c];
  49801. if (mc.r == bd_r_bottom) {
  49802. borderInfoCompute[bd_r_bottom + "_" + bd_c].t = {"color": borderColor, "style": borderStyle};
  49803. }
  49804. } else {
  49805. borderInfoCompute[bd_r_bottom + "_" + bd_c].t = {"color": borderColor, "style": borderStyle};
  49806. }
  49807. }
  49808. }
  49809. if (bd_c == bd_c1) {
  49810. if (borderInfoCompute[bd_r + "_" + bd_c] == null) {
  49811. borderInfoCompute[bd_r + "_" + bd_c] = {};
  49812. }
  49813. borderInfoCompute[bd_r + "_" + bd_c].l = {"color": borderColor, "style": borderStyle};
  49814. let bd_c_left = bd_c1 - 1;
  49815. if (bd_c_left >= 0 && borderInfoCompute[bd_r + "_" + bd_c_left]) {
  49816. if (data[bd_r] != null && getObjType(data[bd_r][bd_c_left]) == "object" && data[bd_r][bd_c_left].mc != null) {
  49817. let cell_left = data[bd_r][bd_c_left];
  49818. let mc = cfg["merge"][cell_left.mc.r + "_" + cell_left.mc.c];
  49819. if (mc.c + mc.cs - 1 == bd_c_left) {
  49820. borderInfoCompute[bd_r + "_" + bd_c_left].r = {"color": borderColor, "style": borderStyle};
  49821. }
  49822. } else {
  49823. borderInfoCompute[bd_r + "_" + bd_c_left].r = {"color": borderColor, "style": borderStyle};
  49824. }
  49825. }
  49826. }
  49827. if (bd_c == bd_c2) {
  49828. if (borderInfoCompute[bd_r + "_" + bd_c] == null) {
  49829. borderInfoCompute[bd_r + "_" + bd_c] = {};
  49830. }
  49831. borderInfoCompute[bd_r + "_" + bd_c].r = {"color": borderColor, "style": borderStyle};
  49832. let bd_c_right = bd_c2 + 1;
  49833. if (bd_c_right < data[0].length && borderInfoCompute[bd_r + "_" + bd_c_right]) {
  49834. if (data[bd_r] != null && getObjType(data[bd_r][bd_c_right]) == "object" && data[bd_r][bd_c_right].mc != null) {
  49835. let cell_right = data[bd_r][bd_c_right];
  49836. let mc = cfg["merge"][cell_right.mc.r + "_" + cell_right.mc.c];
  49837. if (mc.c == bd_c_right) {
  49838. borderInfoCompute[bd_r + "_" + bd_c_right].l = {"color": borderColor, "style": borderStyle};
  49839. }
  49840. } else {
  49841. borderInfoCompute[bd_r + "_" + bd_c_right].l = {"color": borderColor, "style": borderStyle};
  49842. }
  49843. }
  49844. }
  49845. }
  49846. }
  49847. } else if (borderType == "border-inside") {
  49848. for (let bd_r = bd_r1; bd_r <= bd_r2; bd_r++) {
  49849. if (cfg["rowhidden"] != null && cfg["rowhidden"][bd_r] != null) {
  49850. continue;
  49851. }
  49852. for (let bd_c = bd_c1; bd_c <= bd_c2; bd_c++) {
  49853. if (bd_r == bd_r1 && bd_c == bd_c1) {
  49854. if (data[bd_r] != null && getObjType(data[bd_r][bd_c]) == "object" && data[bd_r][bd_c].mc != null) {
  49855. } else {
  49856. if (borderInfoCompute[bd_r + "_" + bd_c] == null) {
  49857. borderInfoCompute[bd_r + "_" + bd_c] = {};
  49858. }
  49859. borderInfoCompute[bd_r + "_" + bd_c].r = {"color": borderColor, "style": borderStyle};
  49860. borderInfoCompute[bd_r + "_" + bd_c].b = {"color": borderColor, "style": borderStyle};
  49861. }
  49862. } else if (bd_r == bd_r2 && bd_c == bd_c1) {
  49863. if (data[bd_r] != null && getObjType(data[bd_r][bd_c]) == "object" && data[bd_r][bd_c].mc != null) {
  49864. } else {
  49865. if (borderInfoCompute[bd_r + "_" + bd_c] == null) {
  49866. borderInfoCompute[bd_r + "_" + bd_c] = {};
  49867. }
  49868. borderInfoCompute[bd_r + "_" + bd_c].r = {"color": borderColor, "style": borderStyle};
  49869. borderInfoCompute[bd_r + "_" + bd_c].t = {"color": borderColor, "style": borderStyle};
  49870. }
  49871. } else if (bd_r == bd_r1 && bd_c == bd_c2) {
  49872. if (data[bd_r] != null && getObjType(data[bd_r][bd_c]) == "object" && data[bd_r][bd_c].mc != null) {
  49873. } else {
  49874. if (borderInfoCompute[bd_r + "_" + bd_c] == null) {
  49875. borderInfoCompute[bd_r + "_" + bd_c] = {};
  49876. }
  49877. borderInfoCompute[bd_r + "_" + bd_c].l = {"color": borderColor, "style": borderStyle};
  49878. borderInfoCompute[bd_r + "_" + bd_c].b = {"color": borderColor, "style": borderStyle};
  49879. }
  49880. } else if (bd_r == bd_r2 && bd_c == bd_c2) {
  49881. if (data[bd_r] != null && getObjType(data[bd_r][bd_c]) == "object" && data[bd_r][bd_c].mc != null) {
  49882. } else {
  49883. if (borderInfoCompute[bd_r + "_" + bd_c] == null) {
  49884. borderInfoCompute[bd_r + "_" + bd_c] = {};
  49885. }
  49886. borderInfoCompute[bd_r + "_" + bd_c].l = {"color": borderColor, "style": borderStyle};
  49887. borderInfoCompute[bd_r + "_" + bd_c].t = {"color": borderColor, "style": borderStyle};
  49888. }
  49889. } else if (bd_r == bd_r1) {
  49890. if (data[bd_r] != null && getObjType(data[bd_r][bd_c]) == "object" && data[bd_r][bd_c].mc != null) {
  49891. let cell = data[bd_r][bd_c];
  49892. let mc = cfg["merge"][cell.mc.r + "_" + cell.mc.c];
  49893. if (mc.c == bd_c) {
  49894. if (borderInfoCompute[bd_r + "_" + bd_c] == null) {
  49895. borderInfoCompute[bd_r + "_" + bd_c] = {};
  49896. }
  49897. borderInfoCompute[bd_r + "_" + bd_c].l = {"color": borderColor, "style": borderStyle};
  49898. } else if (mc.c + mc.cs - 1 == bd_c) {
  49899. if (borderInfoCompute[bd_r + "_" + bd_c] == null) {
  49900. borderInfoCompute[bd_r + "_" + bd_c] = {};
  49901. }
  49902. borderInfoCompute[bd_r + "_" + bd_c].r = {"color": borderColor, "style": borderStyle};
  49903. }
  49904. } else {
  49905. if (borderInfoCompute[bd_r + "_" + bd_c] == null) {
  49906. borderInfoCompute[bd_r + "_" + bd_c] = {};
  49907. }
  49908. borderInfoCompute[bd_r + "_" + bd_c].l = {"color": borderColor, "style": borderStyle};
  49909. borderInfoCompute[bd_r + "_" + bd_c].r = {"color": borderColor, "style": borderStyle};
  49910. borderInfoCompute[bd_r + "_" + bd_c].b = {"color": borderColor, "style": borderStyle};
  49911. }
  49912. } else if (bd_r == bd_r2) {
  49913. if (data[bd_r] != null && getObjType(data[bd_r][bd_c]) == "object" && data[bd_r][bd_c].mc != null) {
  49914. let cell = data[bd_r][bd_c];
  49915. let mc = cfg["merge"][cell.mc.r + "_" + cell.mc.c];
  49916. if (mc.c == bd_c) {
  49917. if (borderInfoCompute[bd_r + "_" + bd_c] == null) {
  49918. borderInfoCompute[bd_r + "_" + bd_c] = {};
  49919. }
  49920. borderInfoCompute[bd_r + "_" + bd_c].l = {"color": borderColor, "style": borderStyle};
  49921. } else if (mc.c + mc.cs - 1 == bd_c) {
  49922. if (borderInfoCompute[bd_r + "_" + bd_c] == null) {
  49923. borderInfoCompute[bd_r + "_" + bd_c] = {};
  49924. }
  49925. borderInfoCompute[bd_r + "_" + bd_c].r = {"color": borderColor, "style": borderStyle};
  49926. }
  49927. } else {
  49928. if (borderInfoCompute[bd_r + "_" + bd_c] == null) {
  49929. borderInfoCompute[bd_r + "_" + bd_c] = {};
  49930. }
  49931. borderInfoCompute[bd_r + "_" + bd_c].l = {"color": borderColor, "style": borderStyle};
  49932. borderInfoCompute[bd_r + "_" + bd_c].r = {"color": borderColor, "style": borderStyle};
  49933. borderInfoCompute[bd_r + "_" + bd_c].t = {"color": borderColor, "style": borderStyle};
  49934. }
  49935. } else if (bd_c == bd_c1) {
  49936. if (data[bd_r] != null && getObjType(data[bd_r][bd_c]) == "object" && data[bd_r][bd_c].mc != null) {
  49937. let cell = data[bd_r][bd_c];
  49938. let mc = cfg["merge"][cell.mc.r + "_" + cell.mc.c];
  49939. if (mc.r == bd_r) {
  49940. if (borderInfoCompute[bd_r + "_" + bd_c] == null) {
  49941. borderInfoCompute[bd_r + "_" + bd_c] = {};
  49942. }
  49943. borderInfoCompute[bd_r + "_" + bd_c].t = {"color": borderColor, "style": borderStyle};
  49944. } else if (mc.r + mc.rs - 1 == bd_r) {
  49945. if (borderInfoCompute[bd_r + "_" + bd_c] == null) {
  49946. borderInfoCompute[bd_r + "_" + bd_c] = {};
  49947. }
  49948. borderInfoCompute[bd_r + "_" + bd_c].b = {"color": borderColor, "style": borderStyle};
  49949. }
  49950. } else {
  49951. if (borderInfoCompute[bd_r + "_" + bd_c] == null) {
  49952. borderInfoCompute[bd_r + "_" + bd_c] = {};
  49953. }
  49954. borderInfoCompute[bd_r + "_" + bd_c].r = {"color": borderColor, "style": borderStyle};
  49955. borderInfoCompute[bd_r + "_" + bd_c].t = {"color": borderColor, "style": borderStyle};
  49956. borderInfoCompute[bd_r + "_" + bd_c].b = {"color": borderColor, "style": borderStyle};
  49957. }
  49958. } else if (bd_c == bd_c2) {
  49959. if (data[bd_r] != null && getObjType(data[bd_r][bd_c]) == "object" && data[bd_r][bd_c].mc != null) {
  49960. let cell = data[bd_r][bd_c];
  49961. let mc = cfg["merge"][cell.mc.r + "_" + cell.mc.c];
  49962. if (mc.r == bd_r) {
  49963. if (borderInfoCompute[bd_r + "_" + bd_c] == null) {
  49964. borderInfoCompute[bd_r + "_" + bd_c] = {};
  49965. }
  49966. borderInfoCompute[bd_r + "_" + bd_c].t = {"color": borderColor, "style": borderStyle};
  49967. } else if (mc.r + mc.rs - 1 == bd_r) {
  49968. if (borderInfoCompute[bd_r + "_" + bd_c] == null) {
  49969. borderInfoCompute[bd_r + "_" + bd_c] = {};
  49970. }
  49971. borderInfoCompute[bd_r + "_" + bd_c].b = {"color": borderColor, "style": borderStyle};
  49972. }
  49973. } else {
  49974. if (borderInfoCompute[bd_r + "_" + bd_c] == null) {
  49975. borderInfoCompute[bd_r + "_" + bd_c] = {};
  49976. }
  49977. borderInfoCompute[bd_r + "_" + bd_c].l = {"color": borderColor, "style": borderStyle};
  49978. borderInfoCompute[bd_r + "_" + bd_c].t = {"color": borderColor, "style": borderStyle};
  49979. borderInfoCompute[bd_r + "_" + bd_c].b = {"color": borderColor, "style": borderStyle};
  49980. }
  49981. } else {
  49982. if (data[bd_r] != null && getObjType(data[bd_r][bd_c]) == "object" && data[bd_r][bd_c].mc != null) {
  49983. let cell = data[bd_r][bd_c];
  49984. let mc = cfg["merge"][cell.mc.r + "_" + cell.mc.c];
  49985. if (mc.r == bd_r) {
  49986. if (borderInfoCompute[bd_r + "_" + bd_c] == null) {
  49987. borderInfoCompute[bd_r + "_" + bd_c] = {};
  49988. }
  49989. borderInfoCompute[bd_r + "_" + bd_c].t = {"color": borderColor, "style": borderStyle};
  49990. } else if (mc.r + mc.rs - 1 == bd_r) {
  49991. if (borderInfoCompute[bd_r + "_" + bd_c] == null) {
  49992. borderInfoCompute[bd_r + "_" + bd_c] = {};
  49993. }
  49994. borderInfoCompute[bd_r + "_" + bd_c].b = {"color": borderColor, "style": borderStyle};
  49995. }
  49996. if (mc.c == bd_c) {
  49997. if (borderInfoCompute[bd_r + "_" + bd_c] == null) {
  49998. borderInfoCompute[bd_r + "_" + bd_c] = {};
  49999. }
  50000. borderInfoCompute[bd_r + "_" + bd_c].l = {"color": borderColor, "style": borderStyle};
  50001. } else if (mc.c + mc.cs - 1 == bd_c) {
  50002. if (borderInfoCompute[bd_r + "_" + bd_c] == null) {
  50003. borderInfoCompute[bd_r + "_" + bd_c] = {};
  50004. }
  50005. borderInfoCompute[bd_r + "_" + bd_c].r = {"color": borderColor, "style": borderStyle};
  50006. }
  50007. } else {
  50008. if (borderInfoCompute[bd_r + "_" + bd_c] == null) {
  50009. borderInfoCompute[bd_r + "_" + bd_c] = {};
  50010. }
  50011. borderInfoCompute[bd_r + "_" + bd_c].l = {"color": borderColor, "style": borderStyle};
  50012. borderInfoCompute[bd_r + "_" + bd_c].r = {"color": borderColor, "style": borderStyle};
  50013. borderInfoCompute[bd_r + "_" + bd_c].t = {"color": borderColor, "style": borderStyle};
  50014. borderInfoCompute[bd_r + "_" + bd_c].b = {"color": borderColor, "style": borderStyle};
  50015. }
  50016. }
  50017. }
  50018. }
  50019. } else if (borderType == "border-horizontal") {
  50020. for (let bd_r = bd_r1; bd_r <= bd_r2; bd_r++) {
  50021. if (cfg["rowhidden"] != null && cfg["rowhidden"][bd_r] != null) {
  50022. continue;
  50023. }
  50024. for (let bd_c = bd_c1; bd_c <= bd_c2; bd_c++) {
  50025. if (bd_r == bd_r1) {
  50026. if (data[bd_r] != null && getObjType(data[bd_r][bd_c]) == "object" && data[bd_r][bd_c].mc != null) {
  50027. } else {
  50028. if (borderInfoCompute[bd_r + "_" + bd_c] == null) {
  50029. borderInfoCompute[bd_r + "_" + bd_c] = {};
  50030. }
  50031. borderInfoCompute[bd_r + "_" + bd_c].b = {"color": borderColor, "style": borderStyle};
  50032. }
  50033. } else if (bd_r == bd_r2) {
  50034. if (data[bd_r] != null && getObjType(data[bd_r][bd_c]) == "object" && data[bd_r][bd_c].mc != null) {
  50035. } else {
  50036. if (borderInfoCompute[bd_r + "_" + bd_c] == null) {
  50037. borderInfoCompute[bd_r + "_" + bd_c] = {};
  50038. }
  50039. borderInfoCompute[bd_r + "_" + bd_c].t = {"color": borderColor, "style": borderStyle};
  50040. }
  50041. } else {
  50042. if (data[bd_r] != null && getObjType(data[bd_r][bd_c]) == "object" && data[bd_r][bd_c].mc != null) {
  50043. let cell = data[bd_r][bd_c];
  50044. let mc = cfg["merge"][cell.mc.r + "_" + cell.mc.c];
  50045. if (mc.r == bd_r) {
  50046. if (borderInfoCompute[bd_r + "_" + bd_c] == null) {
  50047. borderInfoCompute[bd_r + "_" + bd_c] = {};
  50048. }
  50049. borderInfoCompute[bd_r + "_" + bd_c].t = {"color": borderColor, "style": borderStyle};
  50050. } else if (mc.r + mc.rs - 1 == bd_r) {
  50051. if (borderInfoCompute[bd_r + "_" + bd_c] == null) {
  50052. borderInfoCompute[bd_r + "_" + bd_c] = {};
  50053. }
  50054. borderInfoCompute[bd_r + "_" + bd_c].b = {"color": borderColor, "style": borderStyle};
  50055. }
  50056. } else {
  50057. if (borderInfoCompute[bd_r + "_" + bd_c] == null) {
  50058. borderInfoCompute[bd_r + "_" + bd_c] = {};
  50059. }
  50060. borderInfoCompute[bd_r + "_" + bd_c].t = {"color": borderColor, "style": borderStyle};
  50061. borderInfoCompute[bd_r + "_" + bd_c].b = {"color": borderColor, "style": borderStyle};
  50062. }
  50063. }
  50064. }
  50065. }
  50066. } else if (borderType == "border-vertical") {
  50067. for (let bd_r = bd_r1; bd_r <= bd_r2; bd_r++) {
  50068. if (cfg["rowhidden"] != null && cfg["rowhidden"][bd_r] != null) {
  50069. continue;
  50070. }
  50071. for (let bd_c = bd_c1; bd_c <= bd_c2; bd_c++) {
  50072. if (bd_c == bd_c1) {
  50073. if (data[bd_r] != null && getObjType(data[bd_r][bd_c]) == "object" && data[bd_r][bd_c].mc != null) {
  50074. } else {
  50075. if (borderInfoCompute[bd_r + "_" + bd_c] == null) {
  50076. borderInfoCompute[bd_r + "_" + bd_c] = {};
  50077. }
  50078. borderInfoCompute[bd_r + "_" + bd_c].r = {"color": borderColor, "style": borderStyle};
  50079. }
  50080. } else if (bd_c == bd_c2) {
  50081. if (data[bd_r] != null && getObjType(data[bd_r][bd_c]) == "object" && data[bd_r][bd_c].mc != null) {
  50082. } else {
  50083. if (borderInfoCompute[bd_r + "_" + bd_c] == null) {
  50084. borderInfoCompute[bd_r + "_" + bd_c] = {};
  50085. }
  50086. borderInfoCompute[bd_r + "_" + bd_c].l = {"color": borderColor, "style": borderStyle};
  50087. }
  50088. } else {
  50089. if (data[bd_r] != null && getObjType(data[bd_r][bd_c]) == "object" && data[bd_r][bd_c].mc != null) {
  50090. let cell = data[bd_r][bd_c];
  50091. let mc = cfg["merge"][cell.mc.r + "_" + cell.mc.c] || {};
  50092. if (mc.c == bd_c) {
  50093. if (borderInfoCompute[bd_r + "_" + bd_c] == null) {
  50094. borderInfoCompute[bd_r + "_" + bd_c] = {};
  50095. }
  50096. borderInfoCompute[bd_r + "_" + bd_c].l = {"color": borderColor, "style": borderStyle};
  50097. } else if (mc.c + mc.cs - 1 == bd_c) {
  50098. if (borderInfoCompute[bd_r + "_" + bd_c] == null) {
  50099. borderInfoCompute[bd_r + "_" + bd_c] = {};
  50100. }
  50101. borderInfoCompute[bd_r + "_" + bd_c].r = {"color": borderColor, "style": borderStyle};
  50102. }
  50103. } else {
  50104. if (borderInfoCompute[bd_r + "_" + bd_c] == null) {
  50105. borderInfoCompute[bd_r + "_" + bd_c] = {};
  50106. }
  50107. borderInfoCompute[bd_r + "_" + bd_c].l = {"color": borderColor, "style": borderStyle};
  50108. borderInfoCompute[bd_r + "_" + bd_c].r = {"color": borderColor, "style": borderStyle};
  50109. }
  50110. }
  50111. }
  50112. }
  50113. } else if (borderType == "border-none") {
  50114. for (let bd_r = bd_r1; bd_r <= bd_r2; bd_r++) {
  50115. if (cfg["rowhidden"] != null && cfg["rowhidden"][bd_r] != null) {
  50116. continue;
  50117. }
  50118. for (let bd_c = bd_c1; bd_c <= bd_c2; bd_c++) {
  50119. if (borderInfoCompute[bd_r + "_" + bd_c] != null) {
  50120. delete borderInfoCompute[bd_r + "_" + bd_c];
  50121. }
  50122. if (bd_r == bd_r1) {
  50123. let bd_r_top = bd_r1 - 1;
  50124. if (bd_r_top >= 0 && borderInfoCompute[bd_r_top + "_" + bd_c]) {
  50125. delete borderInfoCompute[bd_r_top + "_" + bd_c].b;
  50126. }
  50127. }
  50128. if (bd_r == bd_r2) {
  50129. let bd_r_bottom = bd_r2 + 1;
  50130. if (bd_r_bottom < data.length && borderInfoCompute[bd_r_bottom + "_" + bd_c]) {
  50131. delete borderInfoCompute[bd_r_bottom + "_" + bd_c].t;
  50132. }
  50133. }
  50134. if (bd_c == bd_c1) {
  50135. let bd_c_left = bd_c1 - 1;
  50136. if (bd_c_left >= 0 && borderInfoCompute[bd_r + "_" + bd_c_left]) {
  50137. delete borderInfoCompute[bd_r + "_" + bd_c_left].r;
  50138. }
  50139. }
  50140. if (bd_c == bd_c2) {
  50141. let bd_c_right = bd_c2 + 1;
  50142. if (bd_c_right < data[0].length && borderInfoCompute[bd_r + "_" + bd_c_right]) {
  50143. delete borderInfoCompute[bd_r + "_" + bd_c_right].l;
  50144. }
  50145. }
  50146. }
  50147. }
  50148. }
  50149. }
  50150. } else if (rangeType == "cell") {
  50151. let value = borderInfo[i2].value;
  50152. let bd_r = value.row_index, bd_c = value.col_index;
  50153. if (bd_r < dataset_row_st || bd_r > dataset_row_ed || bd_c < dataset_col_st || bd_c > dataset_col_ed) {
  50154. continue;
  50155. }
  50156. if (cfg["rowhidden"] != null && cfg["rowhidden"][bd_r] != null) {
  50157. continue;
  50158. }
  50159. if (value.l != null || value.r != null || value.t != null || value.b != null) {
  50160. if (borderInfoCompute[bd_r + "_" + bd_c] == null) {
  50161. borderInfoCompute[bd_r + "_" + bd_c] = {};
  50162. }
  50163. if (data[bd_r] != null && getObjType(data[bd_r][bd_c]) == "object" && data[bd_r][bd_c].mc != null) {
  50164. let cell = data[bd_r][bd_c];
  50165. let mc = cfg["merge"][cell.mc.r + "_" + cell.mc.c] || {};
  50166. if (value.l != null && bd_c == mc.c) {
  50167. borderInfoCompute[bd_r + "_" + bd_c].l = {"color": value.l.color, "style": value.l.style};
  50168. let bd_c_left = bd_c - 1;
  50169. if (bd_c_left >= 0 && borderInfoCompute[bd_r + "_" + bd_c_left]) {
  50170. if (data[bd_r] != null && getObjType(data[bd_r][bd_c_left]) == "object" && data[bd_r][bd_c_left].mc != null) {
  50171. let cell_left = data[bd_r][bd_c_left];
  50172. let mc_l = cfg["merge"][cell_left.mc.r + "_" + cell_left.mc.c];
  50173. if (mc_l.c + mc_l.cs - 1 == bd_c_left) {
  50174. borderInfoCompute[bd_r + "_" + bd_c_left].r = {"color": value.l.color, "style": value.l.style};
  50175. }
  50176. } else {
  50177. borderInfoCompute[bd_r + "_" + bd_c_left].r = {"color": value.l.color, "style": value.l.style};
  50178. }
  50179. }
  50180. } else {
  50181. borderInfoCompute[bd_r + "_" + bd_c].l = null;
  50182. }
  50183. if (value.r != null && bd_c == mc.c + mc.cs - 1) {
  50184. borderInfoCompute[bd_r + "_" + bd_c].r = {"color": value.r.color, "style": value.r.style};
  50185. let bd_c_right = bd_c + 1;
  50186. if (bd_c_right < data[0].length && borderInfoCompute[bd_r + "_" + bd_c_right]) {
  50187. if (data[bd_r] != null && getObjType(data[bd_r][bd_c_right]) == "object" && data[bd_r][bd_c_right].mc != null) {
  50188. let cell_right = data[bd_r][bd_c_right];
  50189. let mc_r = cfg["merge"][cell_right.mc.r + "_" + cell_right.mc.c];
  50190. if (mc_r.c == bd_c_right) {
  50191. borderInfoCompute[bd_r + "_" + bd_c_right].l = {"color": value.r.color, "style": value.r.style};
  50192. }
  50193. } else {
  50194. borderInfoCompute[bd_r + "_" + bd_c_right].l = {"color": value.r.color, "style": value.r.style};
  50195. }
  50196. }
  50197. } else {
  50198. borderInfoCompute[bd_r + "_" + bd_c].r = null;
  50199. }
  50200. if (value.t != null && bd_r == mc.r) {
  50201. borderInfoCompute[bd_r + "_" + bd_c].t = {"color": value.t.color, "style": value.t.style};
  50202. let bd_r_top = bd_r - 1;
  50203. if (bd_r_top >= 0 && borderInfoCompute[bd_r_top + "_" + bd_c]) {
  50204. if (data[bd_r_top] != null && getObjType(data[bd_r_top][bd_c]) == "object" && data[bd_r_top][bd_c].mc != null) {
  50205. let cell_top = data[bd_r_top][bd_c];
  50206. let mc_t = cfg["merge"][cell_top.mc.r + "_" + cell_top.mc.c];
  50207. if (mc_t.r + mc_t.rs - 1 == bd_r_top) {
  50208. borderInfoCompute[bd_r_top + "_" + bd_c].b = {"color": value.t.color, "style": value.t.style};
  50209. }
  50210. } else {
  50211. borderInfoCompute[bd_r_top + "_" + bd_c].b = {"color": value.t.color, "style": value.t.style};
  50212. }
  50213. }
  50214. } else {
  50215. borderInfoCompute[bd_r + "_" + bd_c].t = null;
  50216. }
  50217. if (value.b != null && bd_r == mc.r + mc.rs - 1) {
  50218. borderInfoCompute[bd_r + "_" + bd_c].b = {"color": value.b.color, "style": value.b.style};
  50219. let bd_r_bottom = bd_r + 1;
  50220. if (bd_r_bottom < data.length && borderInfoCompute[bd_r_bottom + "_" + bd_c]) {
  50221. if (data[bd_r_bottom] != null && getObjType(data[bd_r_bottom][bd_c]) == "object" && data[bd_r_bottom][bd_c].mc != null) {
  50222. let cell_bottom = data[bd_r_bottom][bd_c];
  50223. let mc_b = cfg["merge"][cell_bottom.mc.r + "_" + cell_bottom.mc.c];
  50224. if (mc_b.r == bd_r_bottom) {
  50225. borderInfoCompute[bd_r_bottom + "_" + bd_c].t = {"color": value.b.color, "style": value.b.style};
  50226. }
  50227. } else {
  50228. borderInfoCompute[bd_r_bottom + "_" + bd_c].t = {"color": value.b.color, "style": value.b.style};
  50229. }
  50230. }
  50231. } else {
  50232. borderInfoCompute[bd_r + "_" + bd_c].b = null;
  50233. }
  50234. } else {
  50235. if (value.l != null) {
  50236. borderInfoCompute[bd_r + "_" + bd_c].l = {"color": value.l.color, "style": value.l.style};
  50237. let bd_c_left = bd_c - 1;
  50238. if (bd_c_left >= 0 && borderInfoCompute[bd_r + "_" + bd_c_left]) {
  50239. if (data[bd_r] != null && getObjType(data[bd_r][bd_c_left]) == "object" && data[bd_r][bd_c_left].mc != null) {
  50240. let cell_left = data[bd_r][bd_c_left];
  50241. let mc_l = cfg["merge"][cell_left.mc.r + "_" + cell_left.mc.c];
  50242. if (mc_l.c + mc_l.cs - 1 == bd_c_left) {
  50243. borderInfoCompute[bd_r + "_" + bd_c_left].r = {"color": value.l.color, "style": value.l.style};
  50244. }
  50245. } else {
  50246. borderInfoCompute[bd_r + "_" + bd_c_left].r = {"color": value.l.color, "style": value.l.style};
  50247. }
  50248. }
  50249. } else {
  50250. borderInfoCompute[bd_r + "_" + bd_c].l = null;
  50251. }
  50252. if (value.r != null) {
  50253. borderInfoCompute[bd_r + "_" + bd_c].r = {"color": value.r.color, "style": value.r.style};
  50254. let bd_c_right = bd_c + 1;
  50255. if (bd_c_right < data[0].length && borderInfoCompute[bd_r + "_" + bd_c_right]) {
  50256. if (data[bd_r] != null && getObjType(data[bd_r][bd_c_right]) == "object" && data[bd_r][bd_c_right].mc != null) {
  50257. let cell_right = data[bd_r][bd_c_right];
  50258. let mc_r = cfg["merge"][cell_right.mc.r + "_" + cell_right.mc.c];
  50259. if (mc_r.c == bd_c_right) {
  50260. borderInfoCompute[bd_r + "_" + bd_c_right].l = {"color": value.r.color, "style": value.r.style};
  50261. }
  50262. } else {
  50263. borderInfoCompute[bd_r + "_" + bd_c_right].l = {"color": value.r.color, "style": value.r.style};
  50264. }
  50265. }
  50266. } else {
  50267. borderInfoCompute[bd_r + "_" + bd_c].r = null;
  50268. }
  50269. if (value.t != null) {
  50270. borderInfoCompute[bd_r + "_" + bd_c].t = {"color": value.t.color, "style": value.t.style};
  50271. let bd_r_top = bd_r - 1;
  50272. if (bd_r_top >= 0 && borderInfoCompute[bd_r_top + "_" + bd_c]) {
  50273. if (data[bd_r_top] != null && getObjType(data[bd_r_top][bd_c]) == "object" && data[bd_r_top][bd_c].mc != null) {
  50274. let cell_top = data[bd_r_top][bd_c];
  50275. let mc_t = cfg["merge"][cell_top.mc.r + "_" + cell_top.mc.c];
  50276. if (mc_t.r + mc_t.rs - 1 == bd_r_top) {
  50277. borderInfoCompute[bd_r_top + "_" + bd_c].b = {"color": value.t.color, "style": value.t.style};
  50278. }
  50279. } else {
  50280. borderInfoCompute[bd_r_top + "_" + bd_c].b = {"color": value.t.color, "style": value.t.style};
  50281. }
  50282. }
  50283. } else {
  50284. borderInfoCompute[bd_r + "_" + bd_c].t = null;
  50285. }
  50286. if (value.b != null) {
  50287. borderInfoCompute[bd_r + "_" + bd_c].b = {"color": value.b.color, "style": value.b.style};
  50288. let bd_r_bottom = bd_r + 1;
  50289. if (bd_r_bottom < data.length && borderInfoCompute[bd_r_bottom + "_" + bd_c]) {
  50290. if (data[bd_r_bottom] != null && getObjType(data[bd_r_bottom][bd_c]) == "object" && data[bd_r_bottom][bd_c].mc != null) {
  50291. let cell_bottom = data[bd_r_bottom][bd_c];
  50292. let mc_b = cfg["merge"][cell_bottom.mc.r + "_" + cell_bottom.mc.c];
  50293. if (mc_b.r == bd_r_bottom) {
  50294. borderInfoCompute[bd_r_bottom + "_" + bd_c].t = {"color": value.b.color, "style": value.b.style};
  50295. }
  50296. } else {
  50297. borderInfoCompute[bd_r_bottom + "_" + bd_c].t = {"color": value.b.color, "style": value.b.style};
  50298. }
  50299. }
  50300. } else {
  50301. borderInfoCompute[bd_r + "_" + bd_c].b = null;
  50302. }
  50303. }
  50304. } else {
  50305. delete borderInfoCompute[bd_r + "_" + bd_c];
  50306. }
  50307. }
  50308. }
  50309. }
  50310. return borderInfoCompute;
  50311. }
  50312. function getBorderInfoCompute(sheetIndex) {
  50313. let borderInfoCompute = {};
  50314. let cfg, data;
  50315. if (sheetIndex == null) {
  50316. cfg = store_default.config;
  50317. data = store_default.flowdata;
  50318. } else {
  50319. cfg = store_default.luckysheetfile[getSheetIndex(sheetIndex)].config;
  50320. data = store_default.luckysheetfile[getSheetIndex(sheetIndex)].data;
  50321. }
  50322. borderInfoCompute = getBorderInfoComputeRange(0, data.length, 0, data[0].length, sheetIndex);
  50323. return borderInfoCompute;
  50324. }
  50325. var init_border = __esm({
  50326. "src/global/border.js"() {
  50327. init_get();
  50328. init_util();
  50329. init_store();
  50330. }
  50331. });
  50332. // src/controllers/dropCell.js
  50333. var import_dayjs2, luckysheetDropCell, dropCell_default;
  50334. var init_dropCell = __esm({
  50335. "src/controllers/dropCell.js"() {
  50336. init_location();
  50337. init_count();
  50338. init_border();
  50339. init_validate();
  50340. init_format();
  50341. init_refresh();
  50342. init_editor();
  50343. init_formula();
  50344. init_conditionformat();
  50345. init_protection();
  50346. init_select();
  50347. init_get();
  50348. init_util();
  50349. init_store();
  50350. init_locale();
  50351. import_dayjs2 = __toModule(require_dayjs_min());
  50352. luckysheetDropCell = {
  50353. iconHtml: '<div id="luckysheet-dropCell-icon" style="position: absolute;padding: 2px;background-color: #f1f1f1;z-index: 990;cursor: pointer;"><div id="icon_dropCell"></div></div>',
  50354. typeListHtml: '<div id="luckysheet-dropCell-typeList" class="luckysheet-cols-menu luckysheet-rightgclick-menu luckysheet-mousedown-cancel"><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-type="0"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel" style="padding: 3px 2px;"><span style="margin-right:5px;width:13px;display:inline-block;" class="icon luckysheet-mousedown-cancel"></span>${copyCell}</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-type="1"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel" style="padding: 3px 2px;"><span style="margin-right:5px;width:13px;display:inline-block;" class="icon luckysheet-mousedown-cancel"></span>${sequence}</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-type="2"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel" style="padding: 3px 2px;"><span style="margin-right:5px;width:13px;display:inline-block;" class="icon luckysheet-mousedown-cancel"></span>${onlyFormat}</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-type="3"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel" style="padding: 3px 2px;"><span style="margin-right:5px;width:13px;display:inline-block;" class="icon luckysheet-mousedown-cancel"></span>${noFormat}</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-type="4"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel" style="padding: 3px 2px;"><span style="margin-right:5px;width:13px;display:inline-block;" class="icon luckysheet-mousedown-cancel"></span>${day}</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-type="5"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel" style="padding: 3px 2px;"><span style="margin-right:5px;width:13px;display:inline-block;" class="icon luckysheet-mousedown-cancel"></span>${workDay}</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-type="6"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel" style="padding: 3px 2px;"><span style="margin-right:5px;width:13px;display:inline-block;" class="icon luckysheet-mousedown-cancel"></span>${month}</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-type="7"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel" style="padding: 3px 2px;"><span style="margin-right:5px;width:13px;display:inline-block;" class="icon luckysheet-mousedown-cancel"></span>${year}</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-type="8"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel" style="padding: 3px 2px;"><span style="margin-right:5px;width:13px;display:inline-block;" class="icon luckysheet-mousedown-cancel"></span>${chineseNumber}</div></div></div>',
  50355. copyRange: {},
  50356. applyRange: {},
  50357. applyType: null,
  50358. direction: null,
  50359. chnNumChar: {"\u96F6": 0, "\u4E00": 1, "\u4E8C": 2, "\u4E09": 3, "\u56DB": 4, "\u4E94": 5, "\u516D": 6, "\u4E03": 7, "\u516B": 8, "\u4E5D": 9},
  50360. chnNameValue: {
  50361. "\u5341": {value: 10, secUnit: false},
  50362. "\u767E": {value: 100, secUnit: false},
  50363. "\u5343": {value: 1e3, secUnit: false},
  50364. "\u4E07": {value: 1e4, secUnit: true},
  50365. "\u4EBF": {value: 1e8, secUnit: true}
  50366. },
  50367. ChineseToNumber: function(chnStr) {
  50368. let _this = this;
  50369. let rtn = 0;
  50370. let section = 0;
  50371. let number = 0;
  50372. let secUnit = false;
  50373. let str = chnStr.split("");
  50374. for (let i2 = 0; i2 < str.length; i2++) {
  50375. let num = _this.chnNumChar[str[i2]];
  50376. if (typeof num != "undefined") {
  50377. number = num;
  50378. if (i2 == str.length - 1) {
  50379. section += number;
  50380. }
  50381. } else {
  50382. let unit = _this.chnNameValue[str[i2]].value;
  50383. secUnit = _this.chnNameValue[str[i2]].secUnit;
  50384. if (secUnit) {
  50385. section = (section + number) * unit;
  50386. rtn += section;
  50387. section = 0;
  50388. } else {
  50389. section += number * unit;
  50390. }
  50391. number = 0;
  50392. }
  50393. }
  50394. return rtn + section;
  50395. },
  50396. chnNumChar2: ["\u96F6", "\u4E00", "\u4E8C", "\u4E09", "\u56DB", "\u4E94", "\u516D", "\u4E03", "\u516B", "\u4E5D"],
  50397. chnUnitSection: ["", "\u4E07", "\u4EBF", "\u4E07\u4EBF", "\u4EBF\u4EBF"],
  50398. chnUnitChar: ["", "\u5341", "\u767E", "\u5343"],
  50399. SectionToChinese: function(section) {
  50400. let _this = this;
  50401. let strIns = "", chnStr = "";
  50402. let unitPos = 0;
  50403. let zero = true;
  50404. while (section > 0) {
  50405. let v = section % 10;
  50406. if (v == 0) {
  50407. if (!zero) {
  50408. zero = true;
  50409. chnStr = _this.chnNumChar2[v] + chnStr;
  50410. }
  50411. } else {
  50412. zero = false;
  50413. strIns = _this.chnNumChar2[v];
  50414. strIns += _this.chnUnitChar[unitPos];
  50415. chnStr = strIns + chnStr;
  50416. }
  50417. unitPos++;
  50418. section = Math.floor(section / 10);
  50419. }
  50420. return chnStr;
  50421. },
  50422. NumberToChinese: function(num) {
  50423. let _this = this;
  50424. let unitPos = 0;
  50425. let strIns = "", chnStr = "";
  50426. let needZero = false;
  50427. if (num == 0) {
  50428. return _this.chnNumChar2[0];
  50429. }
  50430. while (num > 0) {
  50431. let section = num % 1e4;
  50432. if (needZero) {
  50433. chnStr = _this.chnNumChar2[0] + chnStr;
  50434. }
  50435. strIns = _this.SectionToChinese(section);
  50436. strIns += section != 0 ? _this.chnUnitSection[unitPos] : _this.chnUnitSection[0];
  50437. chnStr = strIns + chnStr;
  50438. needZero = section < 1e3 && section > 0;
  50439. num = Math.floor(num / 1e4);
  50440. unitPos++;
  50441. }
  50442. return chnStr;
  50443. },
  50444. isChnNumber: function(txt) {
  50445. let _this = this;
  50446. let isChnNumber = true;
  50447. if (txt.length == 1) {
  50448. if (txt == "\u65E5" || txt in _this.chnNumChar) {
  50449. isChnNumber = true;
  50450. } else {
  50451. isChnNumber = false;
  50452. }
  50453. } else {
  50454. let str = txt.split("");
  50455. for (let i2 = 0; i2 < str.length; i2++) {
  50456. if (!(str[i2] in _this.chnNumChar || str[i2] in _this.chnNameValue)) {
  50457. isChnNumber = false;
  50458. break;
  50459. }
  50460. }
  50461. }
  50462. return isChnNumber;
  50463. },
  50464. isExtendNumber: function(txt) {
  50465. let reg = /0|([1-9]+[0-9]*)/g;
  50466. let isExtendNumber = reg.test(txt);
  50467. if (isExtendNumber) {
  50468. let match = txt.match(reg);
  50469. let matchTxt = match[match.length - 1];
  50470. let matchIndex = txt.lastIndexOf(matchTxt);
  50471. let beforeTxt = txt.substr(0, matchIndex);
  50472. let afterTxt = txt.substr(matchIndex + matchTxt.length);
  50473. return [isExtendNumber, Number(matchTxt), beforeTxt, afterTxt];
  50474. } else {
  50475. return [isExtendNumber];
  50476. }
  50477. },
  50478. isChnWeek1: function(txt) {
  50479. let _this = this;
  50480. let isChnWeek1;
  50481. if (txt.length == 1) {
  50482. if (txt == "\u65E5" || _this.ChineseToNumber(txt) < 7) {
  50483. isChnWeek1 = true;
  50484. } else {
  50485. isChnWeek1 = false;
  50486. }
  50487. } else {
  50488. isChnWeek1 = false;
  50489. }
  50490. return isChnWeek1;
  50491. },
  50492. isChnWeek2: function(txt) {
  50493. let isChnWeek2;
  50494. if (txt.length == 2) {
  50495. if (txt == "\u5468\u4E00" || txt == "\u5468\u4E8C" || txt == "\u5468\u4E09" || txt == "\u5468\u56DB" || txt == "\u5468\u4E94" || txt == "\u5468\u516D" || txt == "\u5468\u65E5") {
  50496. isChnWeek2 = true;
  50497. } else {
  50498. isChnWeek2 = false;
  50499. }
  50500. } else {
  50501. isChnWeek2 = false;
  50502. }
  50503. return isChnWeek2;
  50504. },
  50505. isChnWeek3: function(txt) {
  50506. let isChnWeek3;
  50507. if (txt.length == 3) {
  50508. if (txt == "\u661F\u671F\u4E00" || txt == "\u661F\u671F\u4E8C" || txt == "\u661F\u671F\u4E09" || txt == "\u661F\u671F\u56DB" || txt == "\u661F\u671F\u4E94" || txt == "\u661F\u671F\u516D" || txt == "\u661F\u671F\u65E5") {
  50509. isChnWeek3 = true;
  50510. } else {
  50511. isChnWeek3 = false;
  50512. }
  50513. } else {
  50514. isChnWeek3 = false;
  50515. }
  50516. return isChnWeek3;
  50517. },
  50518. createIcon: function() {
  50519. let _this = this;
  50520. let copy_r = _this.copyRange["row"][1], copy_c = _this.copyRange["column"][1];
  50521. let apply_r = _this.applyRange["row"][1], apply_c = _this.applyRange["column"][1];
  50522. let row_index, col_index;
  50523. if (apply_r >= copy_r && apply_c >= copy_c) {
  50524. row_index = apply_r;
  50525. col_index = apply_c;
  50526. } else {
  50527. row_index = copy_r;
  50528. col_index = copy_c;
  50529. }
  50530. let row = rowLocationByIndex(row_index)[1], row_pre = rowLocationByIndex(row_index)[0];
  50531. let col = colLocationByIndex(col_index)[1], col_pre = colLocationByIndex(col_index)[0];
  50532. $("#luckysheet-dropCell-icon").remove();
  50533. $("#luckysheet-cell-main").append(_this.iconHtml);
  50534. $("#luckysheet-dropCell-icon").css({"left": col, "top": row});
  50535. $("#luckysheet-dropCell-icon").mouseover(function() {
  50536. $(this).css("background-color", "#ffe8e8");
  50537. }).mouseleave(function() {
  50538. $(this).css("background-color", "#f1f1f1");
  50539. }).mousedown(function(event2) {
  50540. $("#luckysheet-dropCell-typeList").remove();
  50541. const _locale = locale_default();
  50542. const locale_dropCell = _locale.dropCell;
  50543. $("body").append(replaceHtml(_this.typeListHtml, {
  50544. copyCell: locale_dropCell.copyCell,
  50545. sequence: locale_dropCell.sequence,
  50546. onlyFormat: locale_dropCell.onlyFormat,
  50547. noFormat: locale_dropCell.noFormat,
  50548. day: locale_dropCell.day,
  50549. workDay: locale_dropCell.workDay,
  50550. month: locale_dropCell.month,
  50551. year: locale_dropCell.year,
  50552. chineseNumber: locale_dropCell.chineseNumber
  50553. }));
  50554. let typeItemHide = _this.typeItemHide();
  50555. if (!typeItemHide[0] && !typeItemHide[1] && !typeItemHide[2] && !typeItemHide[3] && !typeItemHide[4] && !typeItemHide[5] && !typeItemHide[6]) {
  50556. $("#luckysheet-dropCell-typeList .luckysheet-cols-menuitem[data-type=1]").hide();
  50557. $("#luckysheet-dropCell-typeList .luckysheet-cols-menuitem[data-type=4]").hide();
  50558. $("#luckysheet-dropCell-typeList .luckysheet-cols-menuitem[data-type=5]").hide();
  50559. $("#luckysheet-dropCell-typeList .luckysheet-cols-menuitem[data-type=6]").hide();
  50560. $("#luckysheet-dropCell-typeList .luckysheet-cols-menuitem[data-type=7]").hide();
  50561. $("#luckysheet-dropCell-typeList .luckysheet-cols-menuitem[data-type=8]").hide();
  50562. }
  50563. if (!typeItemHide[2]) {
  50564. $("#luckysheet-dropCell-typeList .luckysheet-cols-menuitem[data-type=4]").hide();
  50565. $("#luckysheet-dropCell-typeList .luckysheet-cols-menuitem[data-type=5]").hide();
  50566. $("#luckysheet-dropCell-typeList .luckysheet-cols-menuitem[data-type=6]").hide();
  50567. $("#luckysheet-dropCell-typeList .luckysheet-cols-menuitem[data-type=7]").hide();
  50568. }
  50569. if (!typeItemHide[3]) {
  50570. $("#luckysheet-dropCell-typeList .luckysheet-cols-menuitem[data-type=8]").hide();
  50571. }
  50572. let left = $(this).offset().left;
  50573. let top = $(this).offset().top + 25;
  50574. let winH = $(window).height(), winW = $(window).width();
  50575. let menuW = $("#luckysheet-dropCell-typeList").width(), menuH = $("#luckysheet-dropCell-typeList").height();
  50576. if (left + menuW > winW) {
  50577. left = left - menuW;
  50578. }
  50579. if (top + menuH > winH) {
  50580. top = top - menuH - 38;
  50581. }
  50582. if (top < 0) {
  50583. top = 0;
  50584. }
  50585. $("#luckysheet-dropCell-typeList").css({"left": left, "top": top}).show();
  50586. $("#luckysheet-dropCell-icon").mouseleave(function() {
  50587. $(this).css("backgroundColor", "#ffe8e8");
  50588. });
  50589. let type = _this.applyType;
  50590. $("#luckysheet-dropCell-typeList .luckysheet-cols-menuitem[data-type=" + type + "]").find("span").append('<i class="fa fa-check luckysheet-mousedown-cancel"></i>');
  50591. event2.stopPropagation();
  50592. });
  50593. $(document).off("click.dCtypeList").on("click.dCtypeList", "#luckysheet-dropCell-typeList .luckysheet-cols-menuitem", function() {
  50594. $("#luckysheet-dropCell-typeList .fa-check").remove();
  50595. $(this).find("span").append('<i class="fa fa-check luckysheet-mousedown-cancel"></i>');
  50596. let type = $(this).attr("data-type");
  50597. _this.applyType = type;
  50598. _this.update();
  50599. $("#luckysheet-dropCell-typeList").hide();
  50600. $("#luckysheet-dropCell-icon").css("backgroundColor", "#f1f1f1");
  50601. $("#luckysheet-dropCell-icon").mouseleave(function() {
  50602. $(this).css("backgroundColor", "#f1f1f1");
  50603. });
  50604. countfunc();
  50605. });
  50606. },
  50607. typeItemHide: function() {
  50608. let _this = this;
  50609. let copyRange = _this.copyRange;
  50610. let str_r = copyRange["row"][0], end_r = copyRange["row"][1];
  50611. let str_c = copyRange["column"][0], end_c = copyRange["column"][1];
  50612. let hasNumber = false, hasExtendNumber = false, hasDate = false, hasChn = false, hasChnWeek1 = false, hasChnWeek2 = false, hasChnWeek3 = false;
  50613. for (let r2 = str_r; r2 <= end_r; r2++) {
  50614. for (let c2 = str_c; c2 <= end_c; c2++) {
  50615. if (!!store_default.flowdata[r2][c2]) {
  50616. let cell = store_default.flowdata[r2][c2];
  50617. if (getObjType(cell) == "object" && cell["v"] != null && cell["f"] == null) {
  50618. if (cell["ct"] != null && cell["ct"].t == "n") {
  50619. hasNumber = true;
  50620. } else if (cell["ct"] != null && cell["ct"].t == "d") {
  50621. hasDate = true;
  50622. } else if (_this.isExtendNumber(cell["m"])[0]) {
  50623. hasExtendNumber = true;
  50624. } else if (_this.isChnNumber(cell["m"]) && cell["m"] != "\u65E5") {
  50625. hasChn = true;
  50626. } else if (cell["m"] == "\u65E5") {
  50627. hasChnWeek1 = true;
  50628. } else if (_this.isChnWeek2(cell["m"])) {
  50629. hasChnWeek2 = true;
  50630. } else if (_this.isChnWeek3(cell["m"])) {
  50631. hasChnWeek3 = true;
  50632. }
  50633. }
  50634. }
  50635. }
  50636. }
  50637. return [hasNumber, hasExtendNumber, hasDate, hasChn, hasChnWeek1, hasChnWeek2, hasChnWeek3];
  50638. },
  50639. update: function() {
  50640. let _this = this;
  50641. if (!checkProtectionLockedRangeList([_this.applyRange], store_default.currentSheetIndex)) {
  50642. return;
  50643. }
  50644. if (store_default.allowEdit === false) {
  50645. return;
  50646. }
  50647. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  50648. let file = store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)];
  50649. let cfg = $.extend(true, {}, store_default.config);
  50650. let borderInfoCompute = getBorderInfoCompute();
  50651. let dataVerification = $.extend(true, {}, file["dataVerification"]);
  50652. let direction = _this.direction;
  50653. let type = _this.applyType;
  50654. let copyRange = _this.copyRange;
  50655. let copy_str_r = copyRange["row"][0], copy_end_r = copyRange["row"][1];
  50656. let copy_str_c = copyRange["column"][0], copy_end_c = copyRange["column"][1];
  50657. let copyData = _this.getCopyData(d, copy_str_r, copy_end_r, copy_str_c, copy_end_c, direction);
  50658. let csLen;
  50659. if (direction == "down" || direction == "up") {
  50660. csLen = copy_end_r - copy_str_r + 1;
  50661. } else if (direction == "right" || direction == "left") {
  50662. csLen = copy_end_c - copy_str_c + 1;
  50663. }
  50664. let applyRange = _this.applyRange;
  50665. let apply_str_r = applyRange["row"][0], apply_end_r = applyRange["row"][1];
  50666. let apply_str_c = applyRange["column"][0], apply_end_c = applyRange["column"][1];
  50667. if (direction == "down" || direction == "up") {
  50668. let asLen = apply_end_r - apply_str_r + 1;
  50669. for (let i2 = apply_str_c; i2 <= apply_end_c; i2++) {
  50670. let copyD = copyData[i2 - apply_str_c];
  50671. let applyData = _this.getApplyData(copyD, csLen, asLen);
  50672. if (direction == "down") {
  50673. for (let j = apply_str_r; j <= apply_end_r; j++) {
  50674. let cell = applyData[j - apply_str_r];
  50675. if (cell.f != null) {
  50676. let f = "=" + formula_default.functionCopy(cell.f, "down", j - apply_str_r + 1);
  50677. let v = formula_default.execfunction(f, j, i2);
  50678. formula_default.execFunctionGroup(j, i2, v[1], void 0, d);
  50679. cell.f = v[2];
  50680. cell.v = v[1];
  50681. if (cell.spl != null) {
  50682. cell.spl = v[3].data;
  50683. } else {
  50684. if (isRealNum(cell.v) && !/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[12])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i.test(cell.v)) {
  50685. if (cell.v == Infinity || cell.v == -Infinity) {
  50686. cell.m = cell.v.toString();
  50687. } else {
  50688. if (cell.v.toString().indexOf("e") > -1) {
  50689. let len = cell.v.toString().split(".")[1].split("e")[0].length;
  50690. if (len > 5) {
  50691. len = 5;
  50692. }
  50693. cell.m = cell.v.toExponential(len).toString();
  50694. } else {
  50695. let mask;
  50696. if (cell.ct.fa === "##0.00") {
  50697. mask = genarate(Math.round(cell.v * 1e9) / 1e9 + ".00");
  50698. cell.m = mask[0].toString();
  50699. } else {
  50700. mask = genarate(Math.round(cell.v * 1e9) / 1e9);
  50701. cell.m = mask[0].toString();
  50702. }
  50703. }
  50704. }
  50705. cell.ct = cell.ct || {"fa": "General", "t": "n"};
  50706. } else {
  50707. let mask = genarate(cell.v);
  50708. cell.m = mask[0].toString();
  50709. cell.ct = mask[1];
  50710. }
  50711. }
  50712. }
  50713. d[j][i2] = cell;
  50714. let bd_r = copy_str_r + (j - apply_str_r) % csLen;
  50715. let bd_c = i2;
  50716. if (borderInfoCompute[bd_r + "_" + bd_c]) {
  50717. let bd_obj = {
  50718. "rangeType": "cell",
  50719. "value": {
  50720. "row_index": j,
  50721. "col_index": i2,
  50722. "l": borderInfoCompute[bd_r + "_" + bd_c].l,
  50723. "r": borderInfoCompute[bd_r + "_" + bd_c].r,
  50724. "t": borderInfoCompute[bd_r + "_" + bd_c].t,
  50725. "b": borderInfoCompute[bd_r + "_" + bd_c].b
  50726. }
  50727. };
  50728. cfg["borderInfo"].push(bd_obj);
  50729. } else if (borderInfoCompute[j + "_" + i2]) {
  50730. let bd_obj = {
  50731. "rangeType": "cell",
  50732. "value": {
  50733. "row_index": j,
  50734. "col_index": i2,
  50735. "l": null,
  50736. "r": null,
  50737. "t": null,
  50738. "b": null
  50739. }
  50740. };
  50741. cfg["borderInfo"].push(bd_obj);
  50742. }
  50743. if (dataVerification[bd_r + "_" + bd_c]) {
  50744. dataVerification[j + "_" + i2] = dataVerification[bd_r + "_" + bd_c];
  50745. }
  50746. }
  50747. }
  50748. if (direction == "up") {
  50749. for (let j = apply_end_r; j >= apply_str_r; j--) {
  50750. let cell = applyData[apply_end_r - j];
  50751. if (cell.f != null) {
  50752. let f = "=" + formula_default.functionCopy(cell.f, "up", apply_end_r - j + 1);
  50753. let v = formula_default.execfunction(f, j, i2);
  50754. formula_default.execFunctionGroup(j, i2, v[1], void 0, d);
  50755. cell.f = v[2];
  50756. cell.v = v[1];
  50757. if (cell.spl != null) {
  50758. cell.spl = v[3].data;
  50759. } else {
  50760. if (isRealNum(cell.v) && !/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[12])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i.test(cell.v)) {
  50761. if (cell.v == Infinity || cell.v == -Infinity) {
  50762. cell.m = cell.v.toString();
  50763. } else {
  50764. if (cell.v.toString().indexOf("e") > -1) {
  50765. let len = cell.v.toString().split(".")[1].split("e")[0].length;
  50766. if (len > 5) {
  50767. len = 5;
  50768. }
  50769. cell.m = cell.v.toExponential(len).toString();
  50770. } else {
  50771. let mask = genarate(Math.round(cell.v * 1e9) / 1e9);
  50772. cell.m = mask[0].toString();
  50773. }
  50774. }
  50775. cell.ct = {"fa": "General", "t": "n"};
  50776. } else {
  50777. let mask = genarate(cell.v);
  50778. cell.m = mask[0].toString();
  50779. cell.ct = mask[1];
  50780. }
  50781. }
  50782. }
  50783. d[j][i2] = cell;
  50784. let bd_r = copy_end_r - (apply_end_r - j) % csLen;
  50785. let bd_c = i2;
  50786. if (borderInfoCompute[bd_r + "_" + bd_c]) {
  50787. let bd_obj = {
  50788. "rangeType": "cell",
  50789. "value": {
  50790. "row_index": j,
  50791. "col_index": i2,
  50792. "l": borderInfoCompute[bd_r + "_" + bd_c].l,
  50793. "r": borderInfoCompute[bd_r + "_" + bd_c].r,
  50794. "t": borderInfoCompute[bd_r + "_" + bd_c].t,
  50795. "b": borderInfoCompute[bd_r + "_" + bd_c].b
  50796. }
  50797. };
  50798. cfg["borderInfo"].push(bd_obj);
  50799. } else if (borderInfoCompute[j + "_" + i2]) {
  50800. let bd_obj = {
  50801. "rangeType": "cell",
  50802. "value": {
  50803. "row_index": j,
  50804. "col_index": i2,
  50805. "l": null,
  50806. "r": null,
  50807. "t": null,
  50808. "b": null
  50809. }
  50810. };
  50811. cfg["borderInfo"].push(bd_obj);
  50812. }
  50813. if (dataVerification[bd_r + "_" + bd_c]) {
  50814. dataVerification[j + "_" + i2] = dataVerification[bd_r + "_" + bd_c];
  50815. }
  50816. }
  50817. }
  50818. }
  50819. } else if (direction == "right" || direction == "left") {
  50820. let asLen = apply_end_c - apply_str_c + 1;
  50821. for (let i2 = apply_str_r; i2 <= apply_end_r; i2++) {
  50822. let copyD = copyData[i2 - apply_str_r];
  50823. let applyData = _this.getApplyData(copyD, csLen, asLen);
  50824. if (direction == "right") {
  50825. for (let j = apply_str_c; j <= apply_end_c; j++) {
  50826. let cell = applyData[j - apply_str_c];
  50827. if (cell.f != null) {
  50828. let f = "=" + formula_default.functionCopy(cell.f, "right", j - apply_str_c + 1);
  50829. let v = formula_default.execfunction(f, i2, j);
  50830. formula_default.execFunctionGroup(i2, j, v[1], void 0, d);
  50831. cell.f = v[2];
  50832. cell.v = v[1];
  50833. if (cell.spl != null) {
  50834. cell.spl = v[3].data;
  50835. } else {
  50836. if (isRealNum(cell.v) && !/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[12])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i.test(cell.v)) {
  50837. if (cell.v == Infinity || cell.v == -Infinity) {
  50838. cell.m = cell.v.toString();
  50839. } else {
  50840. if (cell.v.toString().indexOf("e") > -1) {
  50841. let len = cell.v.toString().split(".")[1].split("e")[0].length;
  50842. if (len > 5) {
  50843. len = 5;
  50844. }
  50845. cell.m = cell.v.toExponential(len).toString();
  50846. } else {
  50847. let mask = genarate(Math.round(cell.v * 1e9) / 1e9);
  50848. cell.m = mask[0].toString();
  50849. }
  50850. }
  50851. cell.ct = {"fa": "General", "t": "n"};
  50852. } else {
  50853. let mask = genarate(cell.v);
  50854. cell.m = mask[0].toString();
  50855. cell.ct = mask[1];
  50856. }
  50857. }
  50858. }
  50859. d[i2][j] = cell;
  50860. let bd_r = i2;
  50861. let bd_c = copy_str_c + (j - apply_str_c) % csLen;
  50862. if (borderInfoCompute[bd_r + "_" + bd_c]) {
  50863. let bd_obj = {
  50864. "rangeType": "cell",
  50865. "value": {
  50866. "row_index": i2,
  50867. "col_index": j,
  50868. "l": borderInfoCompute[bd_r + "_" + bd_c].l,
  50869. "r": borderInfoCompute[bd_r + "_" + bd_c].r,
  50870. "t": borderInfoCompute[bd_r + "_" + bd_c].t,
  50871. "b": borderInfoCompute[bd_r + "_" + bd_c].b
  50872. }
  50873. };
  50874. cfg["borderInfo"].push(bd_obj);
  50875. } else if (borderInfoCompute[i2 + "_" + j]) {
  50876. let bd_obj = {
  50877. "rangeType": "cell",
  50878. "value": {
  50879. "row_index": i2,
  50880. "col_index": j,
  50881. "l": null,
  50882. "r": null,
  50883. "t": null,
  50884. "b": null
  50885. }
  50886. };
  50887. cfg["borderInfo"].push(bd_obj);
  50888. }
  50889. if (dataVerification[bd_r + "_" + bd_c]) {
  50890. dataVerification[i2 + "_" + j] = dataVerification[bd_r + "_" + bd_c];
  50891. }
  50892. }
  50893. }
  50894. if (direction == "left") {
  50895. for (let j = apply_end_c; j >= apply_str_c; j--) {
  50896. let cell = applyData[apply_end_c - j];
  50897. if (cell.f != null) {
  50898. let f = "=" + formula_default.functionCopy(cell.f, "left", apply_end_c - j + 1);
  50899. let v = formula_default.execfunction(f, i2, j);
  50900. formula_default.execFunctionGroup(i2, j, v[1], void 0, d);
  50901. cell.f = v[2];
  50902. cell.v = v[1];
  50903. if (cell.spl != null) {
  50904. cell.spl = v[3].data;
  50905. } else {
  50906. if (isRealNum(cell.v) && !/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[12])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i.test(cell.v)) {
  50907. if (cell.v == Infinity || cell.v == -Infinity) {
  50908. cell.m = cell.v.toString();
  50909. } else {
  50910. if (cell.v.toString().indexOf("e") > -1) {
  50911. let len = cell.v.toString().split(".")[1].split("e")[0].length;
  50912. if (len > 5) {
  50913. len = 5;
  50914. }
  50915. cell.m = cell.v.toExponential(len).toString();
  50916. } else {
  50917. let mask = genarate(Math.round(cell.v * 1e9) / 1e9);
  50918. cell.m = mask[0].toString();
  50919. }
  50920. }
  50921. cell.ct = {"fa": "General", "t": "n"};
  50922. } else {
  50923. let mask = genarate(cell.v);
  50924. cell.m = mask[0].toString();
  50925. cell.ct = mask[1];
  50926. }
  50927. }
  50928. }
  50929. d[i2][j] = cell;
  50930. let bd_r = i2;
  50931. let bd_c = copy_end_c - (apply_end_c - j) % csLen;
  50932. if (borderInfoCompute[bd_r + "_" + bd_c]) {
  50933. let bd_obj = {
  50934. "rangeType": "cell",
  50935. "value": {
  50936. "row_index": i2,
  50937. "col_index": j,
  50938. "l": borderInfoCompute[bd_r + "_" + bd_c].l,
  50939. "r": borderInfoCompute[bd_r + "_" + bd_c].r,
  50940. "t": borderInfoCompute[bd_r + "_" + bd_c].t,
  50941. "b": borderInfoCompute[bd_r + "_" + bd_c].b
  50942. }
  50943. };
  50944. cfg["borderInfo"].push(bd_obj);
  50945. } else if (borderInfoCompute[i2 + "_" + j]) {
  50946. let bd_obj = {
  50947. "rangeType": "cell",
  50948. "value": {
  50949. "row_index": i2,
  50950. "col_index": j,
  50951. "l": null,
  50952. "r": null,
  50953. "t": null,
  50954. "b": null
  50955. }
  50956. };
  50957. cfg["borderInfo"].push(bd_obj);
  50958. }
  50959. if (dataVerification[bd_r + "_" + bd_c]) {
  50960. dataVerification[i2 + "_" + j] = dataVerification[bd_r + "_" + bd_c];
  50961. }
  50962. }
  50963. }
  50964. }
  50965. }
  50966. let cdformat = $.extend(true, [], file["luckysheet_conditionformat_save"]);
  50967. if (cdformat != null && cdformat.length > 0) {
  50968. for (let i2 = 0; i2 < cdformat.length; i2++) {
  50969. let cdformat_cellrange = cdformat[i2].cellrange;
  50970. let emptyRange = [];
  50971. for (let j = 0; j < cdformat_cellrange.length; j++) {
  50972. let range2 = conditionformat_default.CFSplitRange(cdformat_cellrange[j], {"row": copyRange["row"], "column": copyRange["column"]}, {"row": applyRange["row"], "column": applyRange["column"]}, "operatePart");
  50973. if (range2.length > 0) {
  50974. emptyRange = emptyRange.concat(range2);
  50975. }
  50976. }
  50977. if (emptyRange.length > 0) {
  50978. cdformat[i2].cellrange.push(applyRange);
  50979. }
  50980. }
  50981. }
  50982. let allParam = {
  50983. "cfg": cfg,
  50984. "cdformat": cdformat,
  50985. "dataVerification": dataVerification
  50986. };
  50987. jfrefreshgrid(d, store_default.luckysheet_select_save, allParam);
  50988. selectHightlightShow();
  50989. },
  50990. getCopyData: function(d, r1, r2, c1, c2, direction) {
  50991. let _this = this;
  50992. let copyData = [];
  50993. let a12, a2, b1, b2;
  50994. if (direction == "down" || direction == "up") {
  50995. a12 = c1;
  50996. a2 = c2;
  50997. b1 = r1;
  50998. b2 = r2;
  50999. } else if (direction == "right" || direction == "left") {
  51000. a12 = r1;
  51001. a2 = r2;
  51002. b1 = c1;
  51003. b2 = c2;
  51004. }
  51005. for (let a = a12; a <= a2; a++) {
  51006. let obj = {};
  51007. let arrData = [];
  51008. let arrIndex = [];
  51009. let text = "";
  51010. let extendNumberBeforeStr = null;
  51011. let extendNumberAfterStr = null;
  51012. let isSameStr = true;
  51013. for (let b = b1; b <= b2; b++) {
  51014. let data;
  51015. if (direction == "down" || direction == "up") {
  51016. data = d[b][a];
  51017. } else if (direction == "right" || direction == "left") {
  51018. data = d[a][b];
  51019. }
  51020. let str;
  51021. if (!!data && !!data["v"] && data["f"] == null) {
  51022. if (!!data["ct"] && data["ct"]["t"] == "n") {
  51023. str = "number";
  51024. extendNumberBeforeStr = null;
  51025. extendNumberAfterStr = null;
  51026. } else if (!!data["ct"] && data["ct"]["t"] == "d") {
  51027. str = "date";
  51028. extendNumberBeforeStr = null;
  51029. extendNumberAfterStr = null;
  51030. } else if (_this.isExtendNumber(data["m"])[0]) {
  51031. str = "extendNumber";
  51032. let isExtendNumber = _this.isExtendNumber(data["m"]);
  51033. if (extendNumberBeforeStr == null || extendNumberAfterStr == null) {
  51034. isSameStr = true;
  51035. extendNumberBeforeStr = isExtendNumber[2];
  51036. extendNumberAfterStr = isExtendNumber[3];
  51037. } else {
  51038. if (isExtendNumber[2] != extendNumberBeforeStr || isExtendNumber[3] != extendNumberAfterStr) {
  51039. isSameStr = false;
  51040. extendNumberBeforeStr = isExtendNumber[2];
  51041. extendNumberAfterStr = isExtendNumber[3];
  51042. } else {
  51043. isSameStr = true;
  51044. }
  51045. }
  51046. } else if (_this.isChnNumber(data["m"])) {
  51047. str = "chnNumber";
  51048. extendNumberBeforeStr = null;
  51049. extendNumberAfterStr = null;
  51050. } else if (_this.isChnWeek2(data["m"])) {
  51051. str = "chnWeek2";
  51052. extendNumberBeforeStr = null;
  51053. extendNumberAfterStr = null;
  51054. } else if (_this.isChnWeek3(data["m"])) {
  51055. str = "chnWeek3";
  51056. extendNumberBeforeStr = null;
  51057. extendNumberAfterStr = null;
  51058. } else {
  51059. str = "other";
  51060. extendNumberBeforeStr = null;
  51061. extendNumberAfterStr = null;
  51062. }
  51063. } else {
  51064. str = "other";
  51065. extendNumberBeforeStr = null;
  51066. extendNumberAfterStr = null;
  51067. }
  51068. if (str == "extendNumber") {
  51069. if (b == b1) {
  51070. if (b1 == b2) {
  51071. text = str;
  51072. arrData.push(data);
  51073. arrIndex.push(b - b1 + 1);
  51074. obj[text] = [];
  51075. obj[text].push({"data": arrData, "index": arrIndex});
  51076. } else {
  51077. text = str;
  51078. arrData.push(data);
  51079. arrIndex.push(b - b1 + 1);
  51080. }
  51081. } else if (b == b2) {
  51082. if (text == str && isSameStr) {
  51083. arrData.push(data);
  51084. arrIndex.push(b - b1 + 1);
  51085. if (text in obj) {
  51086. obj[text].push({"data": arrData, "index": arrIndex});
  51087. } else {
  51088. obj[text] = [];
  51089. obj[text].push({"data": arrData, "index": arrIndex});
  51090. }
  51091. } else {
  51092. if (text in obj) {
  51093. obj[text].push({"data": arrData, "index": arrIndex});
  51094. } else {
  51095. obj[text] = [];
  51096. obj[text].push({"data": arrData, "index": arrIndex});
  51097. }
  51098. text = str;
  51099. arrData = [];
  51100. arrData.push(data);
  51101. arrIndex = [];
  51102. arrIndex.push(b - b1 + 1);
  51103. if (text in obj) {
  51104. obj[text].push({"data": arrData, "index": arrIndex});
  51105. } else {
  51106. obj[text] = [];
  51107. obj[text].push({"data": arrData, "index": arrIndex});
  51108. }
  51109. }
  51110. } else {
  51111. if (text == str && isSameStr) {
  51112. arrData.push(data);
  51113. arrIndex.push(b - b1 + 1);
  51114. } else {
  51115. if (text in obj) {
  51116. obj[text].push({"data": arrData, "index": arrIndex});
  51117. } else {
  51118. obj[text] = [];
  51119. obj[text].push({"data": arrData, "index": arrIndex});
  51120. }
  51121. text = str;
  51122. arrData = [];
  51123. arrData.push(data);
  51124. arrIndex = [];
  51125. arrIndex.push(b - b1 + 1);
  51126. }
  51127. }
  51128. } else {
  51129. if (b == b1) {
  51130. if (b1 == b2) {
  51131. text = str;
  51132. arrData.push(data);
  51133. arrIndex.push(b - b1 + 1);
  51134. obj[text] = [];
  51135. obj[text].push({"data": arrData, "index": arrIndex});
  51136. } else {
  51137. text = str;
  51138. arrData.push(data);
  51139. arrIndex.push(b - b1 + 1);
  51140. }
  51141. } else if (b == b2) {
  51142. if (text == str) {
  51143. arrData.push(data);
  51144. arrIndex.push(b - b1 + 1);
  51145. if (text in obj) {
  51146. obj[text].push({"data": arrData, "index": arrIndex});
  51147. } else {
  51148. obj[text] = [];
  51149. obj[text].push({"data": arrData, "index": arrIndex});
  51150. }
  51151. } else {
  51152. if (text in obj) {
  51153. obj[text].push({"data": arrData, "index": arrIndex});
  51154. } else {
  51155. obj[text] = [];
  51156. obj[text].push({"data": arrData, "index": arrIndex});
  51157. }
  51158. text = str;
  51159. arrData = [];
  51160. arrData.push(data);
  51161. arrIndex = [];
  51162. arrIndex.push(b - b1 + 1);
  51163. if (text in obj) {
  51164. obj[text].push({"data": arrData, "index": arrIndex});
  51165. } else {
  51166. obj[text] = [];
  51167. obj[text].push({"data": arrData, "index": arrIndex});
  51168. }
  51169. }
  51170. } else {
  51171. if (text == str) {
  51172. arrData.push(data);
  51173. arrIndex.push(b - b1 + 1);
  51174. } else {
  51175. if (text in obj) {
  51176. obj[text].push({"data": arrData, "index": arrIndex});
  51177. } else {
  51178. obj[text] = [];
  51179. obj[text].push({"data": arrData, "index": arrIndex});
  51180. }
  51181. text = str;
  51182. arrData = [];
  51183. arrData.push(data);
  51184. arrIndex = [];
  51185. arrIndex.push(b - b1 + 1);
  51186. }
  51187. }
  51188. }
  51189. }
  51190. copyData.push(obj);
  51191. }
  51192. return copyData;
  51193. },
  51194. getApplyData: function(copyD, csLen, asLen) {
  51195. let _this = this;
  51196. let applyData = [];
  51197. let direction = _this.direction;
  51198. let type = _this.applyType;
  51199. let num = Math.floor(asLen / csLen);
  51200. let rsd = asLen % csLen;
  51201. let copyD_number = copyD["number"];
  51202. let applyD_number = [];
  51203. if (!!copyD_number) {
  51204. for (let i2 = 0; i2 < copyD_number.length; i2++) {
  51205. let s = _this.getLenS(copyD_number[i2]["index"], rsd);
  51206. let len = copyD_number[i2]["index"].length * num + s;
  51207. let arrData;
  51208. if (type == "1" || type == "3") {
  51209. arrData = _this.getDataByType(copyD_number[i2]["data"], len, direction, type, "number");
  51210. } else if (type == "2") {
  51211. arrData = _this.getDataByType(copyD_number[i2]["data"], len, direction, type);
  51212. } else {
  51213. arrData = _this.getDataByType(copyD_number[i2]["data"], len, direction, "0");
  51214. }
  51215. let arrIndex = _this.getDataIndex(csLen, asLen, copyD_number[i2]["index"]);
  51216. applyD_number.push({"data": arrData, "index": arrIndex});
  51217. }
  51218. }
  51219. let copyD_extendNumber = copyD["extendNumber"];
  51220. let applyD_extendNumber = [];
  51221. if (!!copyD_extendNumber) {
  51222. for (let i2 = 0; i2 < copyD_extendNumber.length; i2++) {
  51223. let s = _this.getLenS(copyD_extendNumber[i2]["index"], rsd);
  51224. let len = copyD_extendNumber[i2]["index"].length * num + s;
  51225. let arrData;
  51226. if (type == "1" || type == "3") {
  51227. arrData = _this.getDataByType(copyD_extendNumber[i2]["data"], len, direction, type, "extendNumber");
  51228. } else if (type == "2") {
  51229. arrData = _this.getDataByType(copyD_extendNumber[i2]["data"], len, direction, type);
  51230. } else {
  51231. arrData = _this.getDataByType(copyD_extendNumber[i2]["data"], len, direction, "0");
  51232. }
  51233. let arrIndex = _this.getDataIndex(csLen, asLen, copyD_extendNumber[i2]["index"]);
  51234. applyD_extendNumber.push({"data": arrData, "index": arrIndex});
  51235. }
  51236. }
  51237. let copyD_date = copyD["date"];
  51238. let applyD_date = [];
  51239. if (!!copyD_date) {
  51240. for (let i2 = 0; i2 < copyD_date.length; i2++) {
  51241. let s = _this.getLenS(copyD_date[i2]["index"], rsd);
  51242. let len = copyD_date[i2]["index"].length * num + s;
  51243. let arrData;
  51244. if (type == "1" || type == "3") {
  51245. arrData = _this.getDataByType(copyD_date[i2]["data"], len, direction, type, "date");
  51246. } else if (type == "8") {
  51247. arrData = _this.getDataByType(copyD_date[i2]["data"], len, direction, "0");
  51248. } else {
  51249. arrData = _this.getDataByType(copyD_date[i2]["data"], len, direction, type);
  51250. }
  51251. let arrIndex = _this.getDataIndex(csLen, asLen, copyD_date[i2]["index"]);
  51252. applyD_date.push({"data": arrData, "index": arrIndex});
  51253. }
  51254. }
  51255. let copyD_chnNumber = copyD["chnNumber"];
  51256. let applyD_chnNumber = [];
  51257. if (!!copyD_chnNumber) {
  51258. for (let i2 = 0; i2 < copyD_chnNumber.length; i2++) {
  51259. let s = _this.getLenS(copyD_chnNumber[i2]["index"], rsd);
  51260. let len = copyD_chnNumber[i2]["index"].length * num + s;
  51261. let arrData;
  51262. if (type == "1" || type == "3") {
  51263. arrData = _this.getDataByType(copyD_chnNumber[i2]["data"], len, direction, type, "chnNumber");
  51264. } else if (type == "2" || type == "8") {
  51265. arrData = _this.getDataByType(copyD_chnNumber[i2]["data"], len, direction, type);
  51266. } else {
  51267. arrData = _this.getDataByType(copyD_chnNumber[i2]["data"], len, direction, "0");
  51268. }
  51269. let arrIndex = _this.getDataIndex(csLen, asLen, copyD_chnNumber[i2]["index"]);
  51270. applyD_chnNumber.push({"data": arrData, "index": arrIndex});
  51271. }
  51272. }
  51273. let copyD_chnWeek2 = copyD["chnWeek2"];
  51274. let applyD_chnWeek2 = [];
  51275. if (!!copyD_chnWeek2) {
  51276. for (let i2 = 0; i2 < copyD_chnWeek2.length; i2++) {
  51277. let s = _this.getLenS(copyD_chnWeek2[i2]["index"], rsd);
  51278. let len = copyD_chnWeek2[i2]["index"].length * num + s;
  51279. let arrData;
  51280. if (type == "1" || type == "3") {
  51281. arrData = _this.getDataByType(copyD_chnWeek2[i2]["data"], len, direction, type, "chnWeek2");
  51282. } else if (type == "2") {
  51283. arrData = _this.getDataByType(copyD_chnWeek2[i2]["data"], len, direction, type);
  51284. } else {
  51285. arrData = _this.getDataByType(copyD_chnWeek2[i2]["data"], len, direction, "0");
  51286. }
  51287. let arrIndex = _this.getDataIndex(csLen, asLen, copyD_chnWeek2[i2]["index"]);
  51288. applyD_chnWeek2.push({"data": arrData, "index": arrIndex});
  51289. }
  51290. }
  51291. let copyD_chnWeek3 = copyD["chnWeek3"];
  51292. let applyD_chnWeek3 = [];
  51293. if (!!copyD_chnWeek3) {
  51294. for (let i2 = 0; i2 < copyD_chnWeek3.length; i2++) {
  51295. let s = _this.getLenS(copyD_chnWeek3[i2]["index"], rsd);
  51296. let len = copyD_chnWeek3[i2]["index"].length * num + s;
  51297. let arrData;
  51298. if (type == "1" || type == "3") {
  51299. arrData = _this.getDataByType(copyD_chnWeek3[i2]["data"], len, direction, type, "chnWeek3");
  51300. } else if (type == "2") {
  51301. arrData = _this.getDataByType(copyD_chnWeek3[i2]["data"], len, direction, type);
  51302. } else {
  51303. arrData = _this.getDataByType(copyD_chnWeek3[i2]["data"], len, direction, "0");
  51304. }
  51305. let arrIndex = _this.getDataIndex(csLen, asLen, copyD_chnWeek3[i2]["index"]);
  51306. applyD_chnWeek3.push({"data": arrData, "index": arrIndex});
  51307. }
  51308. }
  51309. let copyD_other = copyD["other"];
  51310. let applyD_other = [];
  51311. if (!!copyD_other) {
  51312. for (let i2 = 0; i2 < copyD_other.length; i2++) {
  51313. let s = _this.getLenS(copyD_other[i2]["index"], rsd);
  51314. let len = copyD_other[i2]["index"].length * num + s;
  51315. let arrData;
  51316. if (type == "2" || type == "3") {
  51317. arrData = _this.getDataByType(copyD_other[i2]["data"], len, direction, type);
  51318. } else {
  51319. arrData = _this.getDataByType(copyD_other[i2]["data"], len, direction, "0");
  51320. }
  51321. let arrIndex = _this.getDataIndex(csLen, asLen, copyD_other[i2]["index"]);
  51322. applyD_other.push({"data": arrData, "index": arrIndex});
  51323. }
  51324. }
  51325. for (let x = 1; x <= asLen; x++) {
  51326. if (applyD_number.length > 0) {
  51327. for (let y = 0; y < applyD_number.length; y++) {
  51328. if (x in applyD_number[y]["index"]) {
  51329. applyData.push(applyD_number[y]["data"][applyD_number[y]["index"][x]]);
  51330. }
  51331. }
  51332. }
  51333. if (applyD_extendNumber.length > 0) {
  51334. for (let y = 0; y < applyD_extendNumber.length; y++) {
  51335. if (x in applyD_extendNumber[y]["index"]) {
  51336. applyData.push(applyD_extendNumber[y]["data"][applyD_extendNumber[y]["index"][x]]);
  51337. }
  51338. }
  51339. }
  51340. if (applyD_date.length > 0) {
  51341. for (let y = 0; y < applyD_date.length; y++) {
  51342. if (x in applyD_date[y]["index"]) {
  51343. applyData.push(applyD_date[y]["data"][applyD_date[y]["index"][x]]);
  51344. }
  51345. }
  51346. }
  51347. if (applyD_chnNumber.length > 0) {
  51348. for (let y = 0; y < applyD_chnNumber.length; y++) {
  51349. if (x in applyD_chnNumber[y]["index"]) {
  51350. applyData.push(applyD_chnNumber[y]["data"][applyD_chnNumber[y]["index"][x]]);
  51351. }
  51352. }
  51353. }
  51354. if (applyD_chnWeek2.length > 0) {
  51355. for (let y = 0; y < applyD_chnWeek2.length; y++) {
  51356. if (x in applyD_chnWeek2[y]["index"]) {
  51357. applyData.push(applyD_chnWeek2[y]["data"][applyD_chnWeek2[y]["index"][x]]);
  51358. }
  51359. }
  51360. }
  51361. if (applyD_chnWeek3.length > 0) {
  51362. for (let y = 0; y < applyD_chnWeek3.length; y++) {
  51363. if (x in applyD_chnWeek3[y]["index"]) {
  51364. applyData.push(applyD_chnWeek3[y]["data"][applyD_chnWeek3[y]["index"][x]]);
  51365. }
  51366. }
  51367. }
  51368. if (applyD_other.length > 0) {
  51369. for (let y = 0; y < applyD_other.length; y++) {
  51370. if (x in applyD_other[y]["index"]) {
  51371. applyData.push(applyD_other[y]["data"][applyD_other[y]["index"][x]]);
  51372. }
  51373. }
  51374. }
  51375. }
  51376. return applyData;
  51377. },
  51378. getLenS: function(indexArr, rsd) {
  51379. let s = 0;
  51380. for (let j = 0; j < indexArr.length; j++) {
  51381. if (indexArr[j] <= rsd) {
  51382. s++;
  51383. } else {
  51384. break;
  51385. }
  51386. }
  51387. return s;
  51388. },
  51389. getDataIndex: function(csLen, asLen, indexArr) {
  51390. let obj = {};
  51391. let num = Math.floor(asLen / csLen);
  51392. let rsd = asLen % csLen;
  51393. let sum = 0;
  51394. if (num > 0) {
  51395. for (let i2 = 1; i2 <= num; i2++) {
  51396. for (let j = 0; j < indexArr.length; j++) {
  51397. obj[indexArr[j] + (i2 - 1) * csLen] = sum;
  51398. sum++;
  51399. }
  51400. }
  51401. for (let a = 0; a < indexArr.length; a++) {
  51402. if (indexArr[a] <= rsd) {
  51403. obj[indexArr[a] + csLen * num] = sum;
  51404. sum++;
  51405. } else {
  51406. break;
  51407. }
  51408. }
  51409. } else {
  51410. for (let a = 0; a < indexArr.length; a++) {
  51411. if (indexArr[a] <= rsd) {
  51412. obj[indexArr[a]] = sum;
  51413. sum++;
  51414. } else {
  51415. break;
  51416. }
  51417. }
  51418. }
  51419. return obj;
  51420. },
  51421. getDataByType: function(data, len, direction, type, dataType) {
  51422. let _this = this;
  51423. let applyData = [];
  51424. if (type == "0") {
  51425. if (direction == "up" || direction == "left") {
  51426. data.reverse();
  51427. }
  51428. applyData = _this.FillCopy(data, len);
  51429. } else if (type == "1") {
  51430. if (dataType == "number") {
  51431. applyData = _this.FillSeries(data, len, direction);
  51432. } else if (dataType == "extendNumber") {
  51433. if (data.length == 1) {
  51434. let step;
  51435. if (direction == "down" || direction == "right") {
  51436. step = 1;
  51437. } else if (direction == "up" || direction == "left") {
  51438. step = -1;
  51439. }
  51440. applyData = _this.FillExtendNumber(data, len, step);
  51441. } else {
  51442. let dataNumArr = [];
  51443. for (let i2 = 0; i2 < data.length; i2++) {
  51444. let txt = data[i2]["m"];
  51445. dataNumArr.push(Number(_this.isExtendNumber(txt)[1]));
  51446. }
  51447. if (direction == "up" || direction == "left") {
  51448. data.reverse();
  51449. dataNumArr.reverse();
  51450. }
  51451. if (_this.isEqualDiff(dataNumArr)) {
  51452. let step = dataNumArr[1] - dataNumArr[0];
  51453. applyData = _this.FillExtendNumber(data, len, step);
  51454. } else {
  51455. applyData = _this.FillCopy(data, len);
  51456. }
  51457. }
  51458. } else if (dataType == "date") {
  51459. if (data.length == 1) {
  51460. let step;
  51461. if (direction == "down" || direction == "right") {
  51462. step = 1;
  51463. } else if (direction == "up" || direction == "left") {
  51464. step = -1;
  51465. }
  51466. applyData = _this.FillDays(data, len, step);
  51467. } else {
  51468. if (direction == "up" || direction == "left") {
  51469. data.reverse();
  51470. }
  51471. let judgeDate = _this.judgeDate(data);
  51472. if (judgeDate[0] && judgeDate[3]) {
  51473. let step = (0, import_dayjs2.default)(data[1]["m"]).diff((0, import_dayjs2.default)(data[0]["m"]), "months");
  51474. applyData = _this.FillMonths(data, len, step);
  51475. } else if (!judgeDate[0] && judgeDate[2]) {
  51476. let step = (0, import_dayjs2.default)(data[1]["m"]).diff((0, import_dayjs2.default)(data[0]["m"]), "days");
  51477. applyData = _this.FillDays(data, len, step);
  51478. } else {
  51479. applyData = _this.FillCopy(data, len);
  51480. }
  51481. }
  51482. } else if (dataType == "chnNumber") {
  51483. if (data.length == 1) {
  51484. if (data[0]["m"] == "\u65E5" || _this.ChineseToNumber(data[0]["m"]) < 7) {
  51485. let step;
  51486. if (direction == "down" || direction == "right") {
  51487. step = 1;
  51488. } else if (direction == "up" || direction == "left") {
  51489. step = -1;
  51490. }
  51491. applyData = _this.FillChnWeek(data, len, step);
  51492. } else {
  51493. let step;
  51494. if (direction == "down" || direction == "right") {
  51495. step = 1;
  51496. } else if (direction == "up" || direction == "left") {
  51497. step = -1;
  51498. }
  51499. applyData = _this.FillChnNumber(data, len, step);
  51500. }
  51501. } else {
  51502. let hasweek = false;
  51503. for (let i2 = 0; i2 < data.length; i2++) {
  51504. if (data[i2]["m"] == "\u65E5") {
  51505. hasweek = true;
  51506. break;
  51507. }
  51508. }
  51509. let dataNumArr = [];
  51510. let weekIndex = 0;
  51511. for (let i2 = 0; i2 < data.length; i2++) {
  51512. if (data[i2]["m"] == "\u65E5") {
  51513. if (i2 == 0) {
  51514. dataNumArr.push(0);
  51515. } else {
  51516. weekIndex++;
  51517. dataNumArr.push(weekIndex * 7);
  51518. }
  51519. } else if (hasweek && _this.ChineseToNumber(data[i2]["m"]) > 0 && _this.ChineseToNumber(data[i2]["m"]) < 7) {
  51520. dataNumArr.push(_this.ChineseToNumber(data[i2]["m"]) + weekIndex * 7);
  51521. } else {
  51522. dataNumArr.push(_this.ChineseToNumber(data[i2]["m"]));
  51523. }
  51524. }
  51525. if (direction == "up" || direction == "left") {
  51526. data.reverse();
  51527. dataNumArr.reverse();
  51528. }
  51529. if (_this.isEqualDiff(dataNumArr)) {
  51530. if (hasweek || dataNumArr[dataNumArr.length - 1] < 6 && dataNumArr[0] > 0 || dataNumArr[0] < 6 && dataNumArr[dataNumArr.length - 1] > 0) {
  51531. let step = dataNumArr[1] - dataNumArr[0];
  51532. applyData = _this.FillChnWeek(data, len, step);
  51533. } else {
  51534. let step = dataNumArr[1] - dataNumArr[0];
  51535. applyData = _this.FillChnNumber(data, len, step);
  51536. }
  51537. } else {
  51538. applyData = _this.FillCopy(data, len);
  51539. }
  51540. }
  51541. } else if (dataType == "chnWeek2") {
  51542. if (data.length == 1) {
  51543. let step;
  51544. if (direction == "down" || direction == "right") {
  51545. step = 1;
  51546. } else if (direction == "up" || direction == "left") {
  51547. step = -1;
  51548. }
  51549. applyData = _this.FillChnWeek2(data, len, step);
  51550. } else {
  51551. let dataNumArr = [];
  51552. let weekIndex = 0;
  51553. for (let i2 = 0; i2 < data.length; i2++) {
  51554. let lastTxt = data[i2]["m"].substr(data[i2]["m"].length - 1, 1);
  51555. if (data[i2]["m"] == "\u5468\u65E5") {
  51556. if (i2 == 0) {
  51557. dataNumArr.push(0);
  51558. } else {
  51559. weekIndex++;
  51560. dataNumArr.push(weekIndex * 7);
  51561. }
  51562. } else {
  51563. dataNumArr.push(_this.ChineseToNumber(lastTxt) + weekIndex * 7);
  51564. }
  51565. }
  51566. if (direction == "up" || direction == "left") {
  51567. data.reverse();
  51568. dataNumArr.reverse();
  51569. }
  51570. if (_this.isEqualDiff(dataNumArr)) {
  51571. let step = dataNumArr[1] - dataNumArr[0];
  51572. applyData = _this.FillChnWeek2(data, len, step);
  51573. } else {
  51574. applyData = _this.FillCopy(data, len);
  51575. }
  51576. }
  51577. } else if (dataType == "chnWeek3") {
  51578. if (data.length == 1) {
  51579. let step;
  51580. if (direction == "down" || direction == "right") {
  51581. step = 1;
  51582. } else if (direction == "up" || direction == "left") {
  51583. step = -1;
  51584. }
  51585. applyData = _this.FillChnWeek3(data, len, step);
  51586. } else {
  51587. let dataNumArr = [];
  51588. let weekIndex = 0;
  51589. for (let i2 = 0; i2 < data.length; i2++) {
  51590. let lastTxt = data[i2]["m"].substr(data[i2]["m"].length - 1, 1);
  51591. if (data[i2]["m"] == "\u661F\u671F\u65E5") {
  51592. if (i2 == 0) {
  51593. dataNumArr.push(0);
  51594. } else {
  51595. weekIndex++;
  51596. dataNumArr.push(weekIndex * 7);
  51597. }
  51598. } else {
  51599. dataNumArr.push(_this.ChineseToNumber(lastTxt) + weekIndex * 7);
  51600. }
  51601. }
  51602. if (direction == "up" || direction == "left") {
  51603. data.reverse();
  51604. dataNumArr.reverse();
  51605. }
  51606. if (_this.isEqualDiff(dataNumArr)) {
  51607. let step = dataNumArr[1] - dataNumArr[0];
  51608. applyData = _this.FillChnWeek3(data, len, step);
  51609. } else {
  51610. applyData = _this.FillCopy(data, len);
  51611. }
  51612. }
  51613. } else {
  51614. if (direction == "up" || direction == "left") {
  51615. data.reverse();
  51616. }
  51617. applyData = _this.FillCopy(data, len);
  51618. }
  51619. } else if (type == "2") {
  51620. if (direction == "up" || direction == "left") {
  51621. data.reverse();
  51622. }
  51623. applyData = _this.FillOnlyFormat(data, len);
  51624. } else if (type == "3") {
  51625. let dataArr = _this.getDataByType(data, len, direction, "1", dataType);
  51626. applyData = _this.FillWithoutFormat(dataArr);
  51627. } else if (type == "4") {
  51628. if (data.length == 1) {
  51629. let step;
  51630. if (direction == "down" || direction == "right") {
  51631. step = 1;
  51632. } else if (direction == "up" || direction == "left") {
  51633. step = -1;
  51634. }
  51635. applyData = _this.FillDays(data, len, step);
  51636. } else if (data.length == 2) {
  51637. if (direction == "up" || direction == "left") {
  51638. data.reverse();
  51639. }
  51640. let step = (0, import_dayjs2.default)(data[1]["m"]).diff((0, import_dayjs2.default)(data[0]["m"]), "days");
  51641. applyData = _this.FillDays(data, len, step);
  51642. } else {
  51643. if (direction == "up" || direction == "left") {
  51644. data.reverse();
  51645. }
  51646. let judgeDate = _this.judgeDate(data);
  51647. if (judgeDate[0] && judgeDate[3]) {
  51648. let step = (0, import_dayjs2.default)(data[1]["m"]).diff((0, import_dayjs2.default)(data[0]["m"]), "months");
  51649. applyData = _this.FillMonths(data, len, step);
  51650. } else if (!judgeDate[0] && judgeDate[2]) {
  51651. let step = (0, import_dayjs2.default)(data[1]["m"]).diff((0, import_dayjs2.default)(data[0]["m"]), "days");
  51652. applyData = _this.FillDays(data, len, step);
  51653. } else {
  51654. applyData = _this.FillCopy(data, len);
  51655. }
  51656. }
  51657. } else if (type == "5") {
  51658. if (data.length == 1) {
  51659. let step;
  51660. if (direction == "down" || direction == "right") {
  51661. step = 1;
  51662. } else if (direction == "up" || direction == "left") {
  51663. step = -1;
  51664. }
  51665. let newLen = Math.round(len * 1.5);
  51666. for (let i2 = 1; i2 <= newLen; i2++) {
  51667. let d = $.extend(true, {}, data[0]);
  51668. let day = (0, import_dayjs2.default)(d["m"]).add(i2, "days").day();
  51669. if (day == 0 || day == 6) {
  51670. continue;
  51671. }
  51672. let date = (0, import_dayjs2.default)(d["m"]).add(step * i2, "days").format("YYYY-MM-DD");
  51673. d["m"] = date;
  51674. d["v"] = genarate(date)[2];
  51675. applyData.push(d);
  51676. if (applyData.length == len) {
  51677. break;
  51678. }
  51679. }
  51680. } else if (data.length == 2) {
  51681. if ((0, import_dayjs2.default)(data[1]["m"]).date() == (0, import_dayjs2.default)(data[0]["m"]).date() && (0, import_dayjs2.default)(data[1]["m"]).diff((0, import_dayjs2.default)(data[0]["m"]), "months") != 0) {
  51682. if (direction == "up" || direction == "left") {
  51683. data.reverse();
  51684. }
  51685. let step = (0, import_dayjs2.default)(data[1]["m"]).diff((0, import_dayjs2.default)(data[0]["m"]), "months");
  51686. for (let i2 = 1; i2 <= len; i2++) {
  51687. let index2 = (i2 - 1) % data.length;
  51688. let d = $.extend(true, {}, data[index2]);
  51689. let day = (0, import_dayjs2.default)(data[data.length - 1]).add(step * i2, "months").day(), date;
  51690. if (day == 0) {
  51691. date = (0, import_dayjs2.default)(data[data.length - 1]).add(step * i2, "months").subtract(2, "days").format("YYYY-MM-DD");
  51692. } else if (day == 6) {
  51693. date = (0, import_dayjs2.default)(data[data.length - 1]).add(step * i2, "months").subtract(1, "days").format("YYYY-MM-DD");
  51694. } else {
  51695. date = (0, import_dayjs2.default)(data[data.length - 1]).add(step * i2, "months").format("YYYY-MM-DD");
  51696. }
  51697. d["m"] = date;
  51698. d["v"] = genarate(date)[2];
  51699. applyData.push(d);
  51700. }
  51701. } else {
  51702. if (Math.abs((0, import_dayjs2.default)(data[1]["m"]).diff((0, import_dayjs2.default)(data[0]["m"]))) > 7) {
  51703. let step_month;
  51704. if (direction == "down" || direction == "right") {
  51705. step_month = 1;
  51706. } else if (direction == "up" || direction == "left") {
  51707. step_month = -1;
  51708. data.reverse();
  51709. }
  51710. let step;
  51711. for (let i2 = 1; i2 <= len; i2++) {
  51712. let index2 = (i2 - 1) % data.length;
  51713. let d = $.extend(true, {}, data[index2]);
  51714. let num = Math.ceil(i2 / data.length);
  51715. if (index2 == 0) {
  51716. step = (0, import_dayjs2.default)(d["m"]).add(step_month * num, "months").diff((0, import_dayjs2.default)(d["m"]), "days");
  51717. }
  51718. let day = (0, import_dayjs2.default)(d["m"]).add(step, "days").day(), date;
  51719. if (day == 0) {
  51720. date = (0, import_dayjs2.default)(d["m"]).add(step, "days").subtract(2, "days").format("YYYY-MM-DD");
  51721. } else if (day == 6) {
  51722. date = (0, import_dayjs2.default)(d["m"]).add(step, "days").subtract(1, "days").format("YYYY-MM-DD");
  51723. } else {
  51724. date = (0, import_dayjs2.default)(d["m"]).add(step, "days").format("YYYY-MM-DD");
  51725. }
  51726. d["m"] = date;
  51727. d["v"] = genarate(date)[2];
  51728. applyData.push(d);
  51729. }
  51730. } else {
  51731. let step_day;
  51732. if (direction == "down" || direction == "right") {
  51733. step_day = 7;
  51734. } else if (direction == "up" || direction == "left") {
  51735. step_day = -7;
  51736. data.reverse();
  51737. }
  51738. let step;
  51739. for (let i2 = 1; i2 <= len; i2++) {
  51740. let index2 = (i2 - 1) % data.length;
  51741. let d = $.extend(true, {}, data[index2]);
  51742. let num = Math.ceil(i2 / data.length);
  51743. if (index2 == 0) {
  51744. step = (0, import_dayjs2.default)(d["m"]).add(step_day * num, "days").diff((0, import_dayjs2.default)(d["m"]), "days");
  51745. }
  51746. let day = (0, import_dayjs2.default)(d["m"]).add(step, "days").day(), date;
  51747. if (day == 0) {
  51748. date = (0, import_dayjs2.default)(d["m"]).add(step, "days").subtract(2, "days").format("YYYY-MM-DD");
  51749. } else if (day == 6) {
  51750. date = (0, import_dayjs2.default)(d["m"]).add(step, "days").subtract(1, "days").format("YYYY-MM-DD");
  51751. } else {
  51752. date = (0, import_dayjs2.default)(d["m"]).add(step, "days").format("YYYY-MM-DD");
  51753. }
  51754. d["m"] = date;
  51755. d["v"] = genarate(date)[2];
  51756. applyData.push(d);
  51757. }
  51758. }
  51759. }
  51760. } else {
  51761. let judgeDate = _this.judgeDate(data);
  51762. if (judgeDate[0] && judgeDate[3]) {
  51763. if (direction == "up" || direction == "left") {
  51764. data.reverse();
  51765. }
  51766. let step = (0, import_dayjs2.default)(data[1]["m"]).diff((0, import_dayjs2.default)(data[0]["m"]), "months");
  51767. for (let i2 = 1; i2 <= len; i2++) {
  51768. let index2 = (i2 - 1) % data.length;
  51769. let d = $.extend(true, {}, data[index2]);
  51770. let day = (0, import_dayjs2.default)(data[data.length - 1]["m"]).add(step * i2, "months").day(), date;
  51771. if (day == 0) {
  51772. date = (0, import_dayjs2.default)(data[data.length - 1]["m"]).add(step * i2, "months").subtract(2, "days").format("YYYY-MM-DD");
  51773. } else if (day == 6) {
  51774. date = (0, import_dayjs2.default)(data[data.length - 1]["m"]).add(step * i2, "months").subtract(1, "days").format("YYYY-MM-DD");
  51775. } else {
  51776. date = (0, import_dayjs2.default)(data[data.length - 1]["m"]).add(step * i2, "months").format("YYYY-MM-DD");
  51777. }
  51778. d["m"] = date;
  51779. d["v"] = genarate(date)[2];
  51780. applyData.push(d);
  51781. }
  51782. } else if (!judgeDate[0] && judgeDate[2]) {
  51783. if (Math.abs((0, import_dayjs2.default)(data[1]["m"]).diff((0, import_dayjs2.default)(data[0]["m"]))) > 7) {
  51784. let step_month;
  51785. if (direction == "down" || direction == "right") {
  51786. step_month = 1;
  51787. } else if (direction == "up" || direction == "left") {
  51788. step_month = -1;
  51789. data.reverse();
  51790. }
  51791. let step;
  51792. for (let i2 = 1; i2 <= len; i2++) {
  51793. let index2 = (i2 - 1) % data.length;
  51794. let d = $.extend(true, {}, data[index2]);
  51795. let num = Math.ceil(i2 / data.length);
  51796. if (index2 == 0) {
  51797. step = (0, import_dayjs2.default)(d["m"]).add(step_month * num, "months").diff((0, import_dayjs2.default)(d["m"]), "days");
  51798. }
  51799. let day = (0, import_dayjs2.default)(d["m"]).add(step, "days").day(), date;
  51800. if (day == 0) {
  51801. date = (0, import_dayjs2.default)(d["m"]).add(step, "days").subtract(2, "days").format("YYYY-MM-DD");
  51802. } else if (day == 6) {
  51803. date = (0, import_dayjs2.default)(d["m"]).add(step, "days").subtract(1, "days").format("YYYY-MM-DD");
  51804. } else {
  51805. date = (0, import_dayjs2.default)(d["m"]).add(step, "days").format("YYYY-MM-DD");
  51806. }
  51807. d["m"] = date;
  51808. d["v"] = genarate(date)[2];
  51809. applyData.push(d);
  51810. }
  51811. } else {
  51812. let step_day;
  51813. if (direction == "down" || direction == "right") {
  51814. step_day = 7;
  51815. } else if (direction == "up" || direction == "left") {
  51816. step_day = -7;
  51817. data.reverse();
  51818. }
  51819. let step;
  51820. for (let i2 = 1; i2 <= len; i2++) {
  51821. let index2 = (i2 - 1) % data.length;
  51822. let d = $.extend(true, {}, data[index2]);
  51823. let num = Math.ceil(i2 / data.length);
  51824. if (index2 == 0) {
  51825. step = (0, import_dayjs2.default)(d["m"]).add(step_day * num, "days").diff((0, import_dayjs2.default)(d["m"]), "days");
  51826. }
  51827. let day = (0, import_dayjs2.default)(d["m"]).add(step, "days").day(), date;
  51828. if (day == 0) {
  51829. date = (0, import_dayjs2.default)(d["m"]).add(step, "days").subtract(2, "days").format("YYYY-MM-DD");
  51830. } else if (day == 6) {
  51831. date = (0, import_dayjs2.default)(d["m"]).add(step, "days").subtract(1, "days").format("YYYY-MM-DD");
  51832. } else {
  51833. date = (0, import_dayjs2.default)(d["m"]).add(step, "days").format("YYYY-MM-DD");
  51834. }
  51835. d["m"] = date;
  51836. d["v"] = genarate(date)[2];
  51837. applyData.push(d);
  51838. }
  51839. }
  51840. } else {
  51841. if (direction == "up" || direction == "left") {
  51842. data.reverse();
  51843. }
  51844. applyData = _this.FillCopy(data, len);
  51845. }
  51846. }
  51847. } else if (type == "6") {
  51848. if (data.length == 1) {
  51849. let step;
  51850. if (direction == "down" || direction == "right") {
  51851. step = 1;
  51852. } else if (direction == "up" || direction == "left") {
  51853. step = -1;
  51854. }
  51855. applyData = _this.FillMonths(data, len, step);
  51856. } else if (data.length == 2) {
  51857. if ((0, import_dayjs2.default)(data[1]["m"]).date() == (0, import_dayjs2.default)(data[0]["m"]).date() && (0, import_dayjs2.default)(data[1]["m"]).diff((0, import_dayjs2.default)(data[0]["m"]), "months") != 0) {
  51858. if (direction == "up" || direction == "left") {
  51859. data.reverse();
  51860. }
  51861. let step = (0, import_dayjs2.default)(data[1]["m"]).diff((0, import_dayjs2.default)(data[0]["m"]), "months");
  51862. applyData = _this.FillMonths(data, len, step);
  51863. } else {
  51864. let step_month;
  51865. if (direction == "down" || direction == "right") {
  51866. step_month = 1;
  51867. } else if (direction == "up" || direction == "left") {
  51868. step_month = -1;
  51869. data.reverse();
  51870. }
  51871. let step;
  51872. for (let i2 = 1; i2 <= len; i2++) {
  51873. let index2 = (i2 - 1) % data.length;
  51874. let d = $.extend(true, {}, data[index2]);
  51875. let num = Math.ceil(i2 / data.length);
  51876. if (index2 == 0) {
  51877. step = (0, import_dayjs2.default)(d["m"]).add(step_month * num, "months").diff((0, import_dayjs2.default)(d["m"]), "days");
  51878. }
  51879. let date = (0, import_dayjs2.default)(d["m"]).add(step, "days").format("YYYY-MM-DD");
  51880. d["m"] = date;
  51881. d["v"] = genarate(date)[2];
  51882. applyData.push(d);
  51883. }
  51884. }
  51885. } else {
  51886. let judgeDate = _this.judgeDate(data);
  51887. if (judgeDate[0] && judgeDate[3]) {
  51888. if (direction == "up" || direction == "left") {
  51889. data.reverse();
  51890. }
  51891. let step = (0, import_dayjs2.default)(data[1]["m"]).diff((0, import_dayjs2.default)(data[0]["m"]), "months");
  51892. applyData = _this.FillMonths(data, len, step);
  51893. } else if (!judgeDate[0] && judgeDate[2]) {
  51894. let step_month;
  51895. if (direction == "down" || direction == "right") {
  51896. step_month = 1;
  51897. } else if (direction == "up" || direction == "left") {
  51898. step_month = -1;
  51899. data.reverse();
  51900. }
  51901. let step;
  51902. for (let i2 = 1; i2 <= len; i2++) {
  51903. let index2 = (i2 - 1) % data.length;
  51904. let d = $.extend(true, {}, data[index2]);
  51905. let num = Math.ceil(i2 / data.length);
  51906. if (index2 == 0) {
  51907. step = (0, import_dayjs2.default)(d["m"]).add(step_month * num, "months").diff((0, import_dayjs2.default)(d["m"]), "days");
  51908. }
  51909. let date = (0, import_dayjs2.default)(d["m"]).add(step, "days").format("YYYY-MM-DD");
  51910. d["m"] = date;
  51911. d["v"] = genarate(date)[2];
  51912. applyData.push(d);
  51913. }
  51914. } else {
  51915. if (direction == "up" || direction == "left") {
  51916. data.reverse();
  51917. }
  51918. applyData = _this.FillCopy(data, len);
  51919. }
  51920. }
  51921. } else if (type == "7") {
  51922. if (data.length == 1) {
  51923. let step;
  51924. if (direction == "down" || direction == "right") {
  51925. step = 1;
  51926. } else if (direction == "up" || direction == "left") {
  51927. step = -1;
  51928. }
  51929. applyData = _this.FillYears(data, len, step);
  51930. } else if (data.length == 2) {
  51931. if ((0, import_dayjs2.default)(data[1]["m"]).date() == (0, import_dayjs2.default)(data[0]["m"]).date() && (0, import_dayjs2.default)(data[1]["m"]).month() == (0, import_dayjs2.default)(data[0]["m"]).month() && (0, import_dayjs2.default)(data[1]["m"]).diff((0, import_dayjs2.default)(data[0]["m"]), "years") != 0) {
  51932. if (direction == "up" || direction == "left") {
  51933. data.reverse();
  51934. }
  51935. let step = (0, import_dayjs2.default)(data[1]["m"]).diff((0, import_dayjs2.default)(data[0]["m"]), "years");
  51936. applyData = _this.FillYears(data, len, step);
  51937. } else {
  51938. let step_year;
  51939. if (direction == "down" || direction == "right") {
  51940. step_year = 1;
  51941. } else if (direction == "up" || direction == "left") {
  51942. step_year = -1;
  51943. data.reverse();
  51944. }
  51945. let step;
  51946. for (let i2 = 1; i2 <= len; i2++) {
  51947. let index2 = (i2 - 1) % data.length;
  51948. let d = $.extend(true, {}, data[index2]);
  51949. let num = Math.ceil(i2 / data.length);
  51950. if (index2 == 0) {
  51951. step = (0, import_dayjs2.default)(d["m"]).add(step_year * num, "years").diff((0, import_dayjs2.default)(d["m"]), "days");
  51952. }
  51953. let date = (0, import_dayjs2.default)(d["m"]).add(step, "days").format("YYYY-MM-DD");
  51954. d["m"] = date;
  51955. d["v"] = genarate(date)[2];
  51956. applyData.push(d);
  51957. }
  51958. }
  51959. } else {
  51960. let judgeDate = _this.judgeDate(data);
  51961. if (judgeDate[0] && judgeDate[1] && judgeDate[4]) {
  51962. if (direction == "up" || direction == "left") {
  51963. data.reverse();
  51964. }
  51965. let step = (0, import_dayjs2.default)(data[1]["m"]).diff((0, import_dayjs2.default)(data[0]["m"]), "years");
  51966. applyData = _this.FillYears(data, len, step);
  51967. } else if (judgeDate[0] && judgeDate[3] || judgeDate[2]) {
  51968. let step_year;
  51969. if (direction == "down" || direction == "right") {
  51970. step_year = 1;
  51971. } else if (direction == "up" || direction == "left") {
  51972. step_year = -1;
  51973. data.reverse();
  51974. }
  51975. let step;
  51976. for (let i2 = 1; i2 <= len; i2++) {
  51977. let index2 = (i2 - 1) % data.length;
  51978. let d = $.extend(true, {}, data[index2]);
  51979. let num = Math.ceil(i2 / data.length);
  51980. if (index2 == 0) {
  51981. step = (0, import_dayjs2.default)(d["m"]).add(step_year * num, "years").diff((0, import_dayjs2.default)(d["m"]), "days");
  51982. }
  51983. let date = (0, import_dayjs2.default)(d["m"]).add(step, "days").format("YYYY-MM-DD");
  51984. d["m"] = date;
  51985. d["v"] = genarate(date)[2];
  51986. applyData.push(d);
  51987. }
  51988. } else {
  51989. if (direction == "up" || direction == "left") {
  51990. data.reverse();
  51991. }
  51992. applyData = _this.FillCopy(data, len);
  51993. }
  51994. }
  51995. } else if (type == "8") {
  51996. if (data.length == 1) {
  51997. let step;
  51998. if (direction == "down" || direction == "right") {
  51999. step = 1;
  52000. } else if (direction == "up" || direction == "left") {
  52001. step = -1;
  52002. }
  52003. applyData = _this.FillChnNumber(data, len, step);
  52004. } else {
  52005. let dataNumArr = [];
  52006. for (let i2 = 0; i2 < data.length; i2++) {
  52007. dataNumArr.push(_this.ChineseToNumber(data[i2]["m"]));
  52008. }
  52009. if (direction == "up" || direction == "left") {
  52010. data.reverse();
  52011. dataNumArr.reverse();
  52012. }
  52013. if (_this.isEqualDiff(dataNumArr)) {
  52014. let step = dataNumArr[1] - dataNumArr[0];
  52015. applyData = _this.FillChnNumber(data, len, step);
  52016. } else {
  52017. applyData = _this.FillCopy(data, len);
  52018. }
  52019. }
  52020. }
  52021. return applyData;
  52022. },
  52023. FillCopy: function(data, len) {
  52024. let applyData = [];
  52025. for (let i2 = 1; i2 <= len; i2++) {
  52026. let index2 = (i2 - 1) % data.length;
  52027. let d = $.extend(true, {}, data[index2]);
  52028. applyData.push(d);
  52029. }
  52030. return applyData;
  52031. },
  52032. FillSeries: function(data, len, direction) {
  52033. let _this = this;
  52034. let applyData = [];
  52035. let dataNumArr = [];
  52036. for (let j = 0; j < data.length; j++) {
  52037. dataNumArr.push(Number(data[j]["v"]));
  52038. }
  52039. if (data.length > 2 && _this.isEqualRatio(dataNumArr)) {
  52040. for (let i2 = 1; i2 <= len; i2++) {
  52041. let index2 = (i2 - 1) % data.length;
  52042. let d = $.extend(true, {}, data[index2]);
  52043. let num;
  52044. if (direction == "down" || direction == "right") {
  52045. num = Number(data[data.length - 1]["v"]) * Math.pow(Number(data[1]["v"]) / Number(data[0]["v"]), i2);
  52046. } else if (direction == "up" || direction == "left") {
  52047. num = Number(data[0]["v"]) / Math.pow(Number(data[1]["v"]) / Number(data[0]["v"]), i2);
  52048. }
  52049. d["v"] = num;
  52050. d["m"] = update(d["ct"]["fa"], num);
  52051. applyData.push(d);
  52052. }
  52053. } else {
  52054. let xArr = _this.getXArr(data.length);
  52055. for (let i2 = 1; i2 <= len; i2++) {
  52056. let index2 = (i2 - 1) % data.length;
  52057. let d = $.extend(true, {}, data[index2]);
  52058. let y;
  52059. if (direction == "down" || direction == "right") {
  52060. y = _this.forecast(data.length + i2, dataNumArr, xArr);
  52061. } else if (direction == "up" || direction == "left") {
  52062. y = _this.forecast(1 - i2, dataNumArr, xArr);
  52063. }
  52064. d["v"] = y;
  52065. d["m"] = update(d["ct"]["fa"], y);
  52066. applyData.push(d);
  52067. }
  52068. }
  52069. return applyData;
  52070. },
  52071. FillExtendNumber: function(data, len, step) {
  52072. let _this = this;
  52073. let applyData = [];
  52074. let reg = /0|([1-9]+[0-9]*)/g;
  52075. for (let i2 = 1; i2 <= len; i2++) {
  52076. let index2 = (i2 - 1) % data.length;
  52077. let d = $.extend(true, {}, data[index2]);
  52078. let last = data[data.length - 1]["m"];
  52079. let match = last.match(reg);
  52080. let lastTxt = match[match.length - 1];
  52081. let num = Math.abs(Number(lastTxt) + step * i2);
  52082. let lastIndex = last.lastIndexOf(lastTxt);
  52083. let valueTxt = last.substr(0, lastIndex) + num.toString() + last.substr(lastIndex + lastTxt.length);
  52084. d["v"] = valueTxt;
  52085. d["m"] = valueTxt;
  52086. applyData.push(d);
  52087. }
  52088. return applyData;
  52089. },
  52090. FillOnlyFormat: function(data, len) {
  52091. let applyData = [];
  52092. for (let i2 = 1; i2 <= len; i2++) {
  52093. let index2 = (i2 - 1) % data.length;
  52094. let d = $.extend(true, {}, data[index2]);
  52095. delete d["f"];
  52096. delete d["m"];
  52097. delete d["v"];
  52098. applyData.push(d);
  52099. }
  52100. return applyData;
  52101. },
  52102. FillWithoutFormat: function(dataArr) {
  52103. let applyData = [];
  52104. for (let i2 = 0; i2 < dataArr.length; i2++) {
  52105. let d = $.extend(true, {}, dataArr[i2]);
  52106. let obj;
  52107. if (d["f"] == null) {
  52108. obj = {"m": d["v"].toString(), "v": d["v"]};
  52109. } else {
  52110. obj = {"f": d["f"], "m": d["v"].toString(), "v": d["v"]};
  52111. }
  52112. applyData.push(obj);
  52113. }
  52114. return applyData;
  52115. },
  52116. FillDays: function(data, len, step) {
  52117. let applyData = [];
  52118. for (let i2 = 1; i2 <= len; i2++) {
  52119. let index2 = (i2 - 1) % data.length;
  52120. let d = $.extend(true, {}, data[index2]);
  52121. let date = update("yyyy-MM-dd", d["v"]);
  52122. date = (0, import_dayjs2.default)(date).add(step * i2, "days").format("YYYY-MM-DD");
  52123. d["v"] = genarate(date)[2];
  52124. d["m"] = update(d["ct"]["fa"], d["v"]);
  52125. applyData.push(d);
  52126. }
  52127. return applyData;
  52128. },
  52129. FillMonths: function(data, len, step) {
  52130. let applyData = [];
  52131. for (let i2 = 1; i2 <= len; i2++) {
  52132. let index2 = (i2 - 1) % data.length;
  52133. let d = $.extend(true, {}, data[index2]);
  52134. let date = update("yyyy-MM-dd", d["v"]);
  52135. date = (0, import_dayjs2.default)(date).add(step * i2, "months").format("YYYY-MM-DD");
  52136. d["v"] = genarate(date)[2];
  52137. d["m"] = update(d["ct"]["fa"], d["v"]);
  52138. applyData.push(d);
  52139. }
  52140. return applyData;
  52141. },
  52142. FillYears: function(data, len, step) {
  52143. let applyData = [];
  52144. for (let i2 = 1; i2 <= len; i2++) {
  52145. let index2 = (i2 - 1) % data.length;
  52146. let d = $.extend(true, {}, data[index2]);
  52147. let date = update("yyyy-MM-dd", d["v"]);
  52148. date = (0, import_dayjs2.default)(date).add(step * i2, "years").format("YYYY-MM-DD");
  52149. d["v"] = genarate(date)[2];
  52150. d["m"] = update(d["ct"]["fa"], d["v"]);
  52151. applyData.push(d);
  52152. }
  52153. return applyData;
  52154. },
  52155. FillChnWeek: function(data, len, step) {
  52156. let _this = this;
  52157. let applyData = [];
  52158. for (let i2 = 1; i2 <= len; i2++) {
  52159. let index2 = (i2 - 1) % data.length;
  52160. let d = $.extend(true, {}, data[index2]);
  52161. let num;
  52162. if (data[data.length - 1]["m"] == "\u65E5") {
  52163. num = 7 + step * i2;
  52164. } else {
  52165. num = _this.ChineseToNumber(data[data.length - 1]["m"]) + step * i2;
  52166. }
  52167. if (num < 0) {
  52168. num = Math.ceil(Math.abs(num) / 7) * 7 + num;
  52169. }
  52170. let rsd = num % 7;
  52171. if (rsd == 0) {
  52172. d["m"] = "\u65E5";
  52173. d["v"] = "\u65E5";
  52174. } else if (rsd == 1) {
  52175. d["m"] = "\u4E00";
  52176. d["v"] = "\u4E00";
  52177. } else if (rsd == 2) {
  52178. d["m"] = "\u4E8C";
  52179. d["v"] = "\u4E8C";
  52180. } else if (rsd == 3) {
  52181. d["m"] = "\u4E09";
  52182. d["v"] = "\u4E09";
  52183. } else if (rsd == 4) {
  52184. d["m"] = "\u56DB";
  52185. d["v"] = "\u56DB";
  52186. } else if (rsd == 5) {
  52187. d["m"] = "\u4E94";
  52188. d["v"] = "\u4E94";
  52189. } else if (rsd == 6) {
  52190. d["m"] = "\u516D";
  52191. d["v"] = "\u516D";
  52192. }
  52193. applyData.push(d);
  52194. }
  52195. return applyData;
  52196. },
  52197. FillChnWeek2: function(data, len, step) {
  52198. let _this = this;
  52199. let applyData = [];
  52200. for (let i2 = 1; i2 <= len; i2++) {
  52201. let index2 = (i2 - 1) % data.length;
  52202. let d = $.extend(true, {}, data[index2]);
  52203. let num;
  52204. if (data[data.length - 1]["m"] == "\u5468\u65E5") {
  52205. num = 7 + step * i2;
  52206. } else {
  52207. let last = data[data.length - 1]["m"];
  52208. let txt = last.substr(last.length - 1, 1);
  52209. num = _this.ChineseToNumber(txt) + step * i2;
  52210. }
  52211. if (num < 0) {
  52212. num = Math.ceil(Math.abs(num) / 7) * 7 + num;
  52213. }
  52214. let rsd = num % 7;
  52215. if (rsd == 0) {
  52216. d["m"] = "\u5468\u65E5";
  52217. d["v"] = "\u5468\u65E5";
  52218. } else if (rsd == 1) {
  52219. d["m"] = "\u5468\u4E00";
  52220. d["v"] = "\u5468\u4E00";
  52221. } else if (rsd == 2) {
  52222. d["m"] = "\u5468\u4E8C";
  52223. d["v"] = "\u5468\u4E8C";
  52224. } else if (rsd == 3) {
  52225. d["m"] = "\u5468\u4E09";
  52226. d["v"] = "\u5468\u4E09";
  52227. } else if (rsd == 4) {
  52228. d["m"] = "\u5468\u56DB";
  52229. d["v"] = "\u5468\u56DB";
  52230. } else if (rsd == 5) {
  52231. d["m"] = "\u5468\u4E94";
  52232. d["v"] = "\u5468\u4E94";
  52233. } else if (rsd == 6) {
  52234. d["m"] = "\u5468\u516D";
  52235. d["v"] = "\u5468\u516D";
  52236. }
  52237. applyData.push(d);
  52238. }
  52239. return applyData;
  52240. },
  52241. FillChnWeek3: function(data, len, step) {
  52242. let _this = this;
  52243. let applyData = [];
  52244. for (let i2 = 1; i2 <= len; i2++) {
  52245. let index2 = (i2 - 1) % data.length;
  52246. let d = $.extend(true, {}, data[index2]);
  52247. let num;
  52248. if (data[data.length - 1]["m"] == "\u661F\u671F\u65E5") {
  52249. num = 7 + step * i2;
  52250. } else {
  52251. let last = data[data.length - 1]["m"];
  52252. let txt = last.substr(last.length - 1, 1);
  52253. num = _this.ChineseToNumber(txt) + step * i2;
  52254. }
  52255. if (num < 0) {
  52256. num = Math.ceil(Math.abs(num) / 7) * 7 + num;
  52257. }
  52258. let rsd = num % 7;
  52259. if (rsd == 0) {
  52260. d["m"] = "\u661F\u671F\u65E5";
  52261. d["v"] = "\u661F\u671F\u65E5";
  52262. } else if (rsd == 1) {
  52263. d["m"] = "\u661F\u671F\u4E00";
  52264. d["v"] = "\u661F\u671F\u4E00";
  52265. } else if (rsd == 2) {
  52266. d["m"] = "\u661F\u671F\u4E8C";
  52267. d["v"] = "\u661F\u671F\u4E8C";
  52268. } else if (rsd == 3) {
  52269. d["m"] = "\u661F\u671F\u4E09";
  52270. d["v"] = "\u661F\u671F\u4E09";
  52271. } else if (rsd == 4) {
  52272. d["m"] = "\u661F\u671F\u56DB";
  52273. d["v"] = "\u661F\u671F\u56DB";
  52274. } else if (rsd == 5) {
  52275. d["m"] = "\u661F\u671F\u4E94";
  52276. d["v"] = "\u661F\u671F\u4E94";
  52277. } else if (rsd == 6) {
  52278. d["m"] = "\u661F\u671F\u516D";
  52279. d["v"] = "\u661F\u671F\u516D";
  52280. }
  52281. applyData.push(d);
  52282. }
  52283. return applyData;
  52284. },
  52285. FillChnNumber: function(data, len, step) {
  52286. let _this = this;
  52287. let applyData = [];
  52288. for (let i2 = 1; i2 <= len; i2++) {
  52289. let index2 = (i2 - 1) % data.length;
  52290. let d = $.extend(true, {}, data[index2]);
  52291. let num = _this.ChineseToNumber(data[data.length - 1]["m"]) + step * i2, txt;
  52292. if (num <= 0) {
  52293. txt = "\u96F6";
  52294. } else {
  52295. txt = _this.NumberToChinese(num);
  52296. }
  52297. d["v"] = txt;
  52298. d["m"] = txt.toString();
  52299. applyData.push(d);
  52300. }
  52301. return applyData;
  52302. },
  52303. isEqualDiff: function(arr) {
  52304. let diff2 = true;
  52305. let step = arr[1] - arr[0];
  52306. for (let i2 = 1; i2 < arr.length; i2++) {
  52307. if (arr[i2] - arr[i2 - 1] != step) {
  52308. diff2 = false;
  52309. break;
  52310. }
  52311. }
  52312. return diff2;
  52313. },
  52314. isEqualRatio: function(arr) {
  52315. let ratio = true;
  52316. let step = arr[1] / arr[0];
  52317. for (let i2 = 1; i2 < arr.length; i2++) {
  52318. if (arr[i2] / arr[i2 - 1] != step) {
  52319. ratio = false;
  52320. break;
  52321. }
  52322. }
  52323. return ratio;
  52324. },
  52325. getXArr: function(len) {
  52326. let xArr = [];
  52327. for (let i2 = 1; i2 <= len; i2++) {
  52328. xArr.push(i2);
  52329. }
  52330. return xArr;
  52331. },
  52332. forecast: function(x, yArr, xArr) {
  52333. function getAverage(arr) {
  52334. let sum = 0;
  52335. for (let i2 = 0; i2 < arr.length; i2++) {
  52336. sum += arr[i2];
  52337. }
  52338. return sum / arr.length;
  52339. }
  52340. let ax = getAverage(xArr);
  52341. let ay = getAverage(yArr);
  52342. let sum_d = 0, sum_n = 0;
  52343. for (let j = 0; j < xArr.length; j++) {
  52344. sum_d += (xArr[j] - ax) * (yArr[j] - ay);
  52345. sum_n += (xArr[j] - ax) * (xArr[j] - ax);
  52346. }
  52347. let b;
  52348. if (sum_n == 0) {
  52349. b = 1;
  52350. } else {
  52351. b = sum_d / sum_n;
  52352. }
  52353. let a = ay - b * ax;
  52354. return Math.round((a + b * x) * 1e5) / 1e5;
  52355. },
  52356. judgeDate: function(data) {
  52357. let isSameDay = true, isSameMonth = true, isEqualDiffDays = true, isEqualDiffMonths = true, isEqualDiffYears = true;
  52358. let sameDay = (0, import_dayjs2.default)(data[0]["m"]).date(), sameMonth = (0, import_dayjs2.default)(data[0]["m"]).month();
  52359. let equalDiffDays = (0, import_dayjs2.default)(data[1]["m"]).diff((0, import_dayjs2.default)(data[0]["m"]), "days");
  52360. let equalDiffMonths = (0, import_dayjs2.default)(data[1]["m"]).diff((0, import_dayjs2.default)(data[0]["m"]), "months");
  52361. let equalDiffYears = (0, import_dayjs2.default)(data[1]["m"]).diff((0, import_dayjs2.default)(data[0]["m"]), "years");
  52362. for (let i2 = 1; i2 < data.length; i2++) {
  52363. if ((0, import_dayjs2.default)(data[i2]["m"]).date() != sameDay) {
  52364. isSameDay = false;
  52365. }
  52366. if ((0, import_dayjs2.default)(data[i2]["m"]).month() != sameMonth) {
  52367. isSameMonth = false;
  52368. }
  52369. if ((0, import_dayjs2.default)(data[i2]["m"]).diff((0, import_dayjs2.default)(data[i2 - 1]["m"]), "days") != equalDiffDays) {
  52370. isEqualDiffDays = false;
  52371. }
  52372. if ((0, import_dayjs2.default)(data[i2]["m"]).diff((0, import_dayjs2.default)(data[i2 - 1]["m"]), "months") != equalDiffMonths) {
  52373. isEqualDiffMonths = false;
  52374. }
  52375. if ((0, import_dayjs2.default)(data[i2]["m"]).diff((0, import_dayjs2.default)(data[i2 - 1]["m"]), "years") != equalDiffYears) {
  52376. isEqualDiffYears = false;
  52377. }
  52378. }
  52379. if (equalDiffDays == 0) {
  52380. isEqualDiffDays = false;
  52381. }
  52382. if (equalDiffMonths == 0) {
  52383. isEqualDiffMonths = false;
  52384. }
  52385. if (equalDiffYears == 0) {
  52386. isEqualDiffYears = false;
  52387. }
  52388. return [isSameDay, isSameMonth, isEqualDiffDays, isEqualDiffMonths, isEqualDiffYears];
  52389. }
  52390. };
  52391. dropCell_default = luckysheetDropCell;
  52392. }
  52393. });
  52394. // src/controllers/freezen.js
  52395. var luckysheetFreezen, freezen_default;
  52396. var init_freezen = __esm({
  52397. "src/controllers/freezen.js"() {
  52398. init_get();
  52399. init_sheetSearch();
  52400. init_select();
  52401. init_filter();
  52402. init_server();
  52403. init_menuButton();
  52404. init_postil();
  52405. init_dropCell();
  52406. init_location();
  52407. init_store();
  52408. init_locale();
  52409. init_refresh();
  52410. luckysheetFreezen = {
  52411. freezenHorizontalHTML: '<div id="luckysheet-freezebar-horizontal" class="luckysheet-freezebar" tabindex="0"><div class="luckysheet-freezebar-handle luckysheet-freezebar-horizontal-handle" ><div class="luckysheet-freezebar-handle-bar luckysheet-freezebar-horizontal-handle-title" ></div><div class="luckysheet-freezebar-handle-bar luckysheet-freezebar-horizontal-handle-bar" ></div></div><div class="luckysheet-freezebar-drop luckysheet-freezebar-horizontal-drop" ><div class="luckysheet-freezebar-drop-bar luckysheet-freezebar-horizontal-drop-title" ></div><div class="luckysheet-freezebar-drop-bar luckysheet-freezebar-horizontal-drop-bar" >&nbsp;</div></div></div>',
  52412. freezenVerticalHTML: '<div id="luckysheet-freezebar-vertical" class="luckysheet-freezebar" tabindex="0"><div class="luckysheet-freezebar-handle luckysheet-freezebar-vertical-handle" ><div class="luckysheet-freezebar-handle-bar luckysheet-freezebar-vertical-handle-title" ></div><div class="luckysheet-freezebar-handle-bar luckysheet-freezebar-vertical-handle-bar" ></div></div><div class="luckysheet-freezebar-drop luckysheet-freezebar-vertical-drop" ><div class="luckysheet-freezebar-drop-bar luckysheet-freezebar-vertical-drop-title" ></div><div class="luckysheet-freezebar-drop-bar luckysheet-freezebar-vertical-drop-bar" >&nbsp;</div></div></div>',
  52413. initialHorizontal: true,
  52414. initialVertical: true,
  52415. horizontalmovestate: false,
  52416. horizontalmoveposition: null,
  52417. verticalmovestate: false,
  52418. verticalmoveposition: null,
  52419. windowHeight: null,
  52420. windowWidth: null,
  52421. freezenhorizontaldata: null,
  52422. freezenverticaldata: null,
  52423. freezenRealFirstRowColumn: true,
  52424. cutVolumn: function(arr, cutindex) {
  52425. if (cutindex <= 0) {
  52426. return arr;
  52427. }
  52428. let pre = arr.slice(0, cutindex);
  52429. let premax = pre[pre.length - 1];
  52430. let ret = arr.slice(cutindex);
  52431. return ret;
  52432. },
  52433. cancelFreezenVertical: function(sheetIndex) {
  52434. let _this = this;
  52435. const _locale = locale_default();
  52436. const locale_freezen = _locale.freezen;
  52437. const freezeHTML = `
  52438. <div class="luckysheet-toolbar-button-outer-box luckysheet-inline-block"
  52439. style="user-select: none;">
  52440. <div class="luckysheet-toolbar-button-inner-box luckysheet-inline-block"
  52441. style="user-select: none;">
  52442. <div class="luckysheet-icon luckysheet-inline-block " style="user-select: none;">
  52443. <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-function iconfont luckysheet-iconfont-dongjie1"
  52444. style="user-select: none;">
  52445. </div>
  52446. </div>
  52447. <div class="luckysheet-toolbar-menu-button-caption luckysheet-inline-block"
  52448. style="user-select: none;">
  52449. ${locale_freezen.default}
  52450. </div>
  52451. </div>
  52452. </div>
  52453. `;
  52454. $("#luckysheet-freezen-btn-horizontal").html(freezeHTML);
  52455. $("#luckysheet-freezen-btn-vertical").html('<i class="fa fa-indent"></i> ' + locale_freezen.freezenColumn);
  52456. _this.freezenverticaldata = null;
  52457. let isvertical = $("#luckysheet-freezebar-vertical").is(":visible");
  52458. $("#luckysheet-freezebar-vertical").hide();
  52459. if (sheetIndex == null) {
  52460. sheetIndex = store_default.currentSheetIndex;
  52461. }
  52462. let currentSheet = store_default.luckysheetfile[getSheetIndex(sheetIndex)];
  52463. if (currentSheet.freezen != null) {
  52464. currentSheet.freezen.vertical = null;
  52465. }
  52466. if (currentSheet.frozen != null && isvertical) {
  52467. server_default.saveParam("all", sheetIndex, currentSheet.frozen, {"k": "frozen"});
  52468. }
  52469. },
  52470. createFreezenVertical: function(freezenverticaldata, left) {
  52471. let _this = this;
  52472. if (_this.initialVertical) {
  52473. _this.initialVertical = false;
  52474. $("#luckysheet-grid-window-1").append(_this.freezenVerticalHTML);
  52475. $("#luckysheet-freezebar-vertical").find(".luckysheet-freezebar-vertical-drop").hover(function() {
  52476. $(this).parent().addClass("luckysheet-freezebar-hover");
  52477. }, function() {
  52478. $(this).parent().removeClass("luckysheet-freezebar-hover");
  52479. });
  52480. $("#luckysheet-freezebar-vertical").find(".luckysheet-freezebar-vertical-drop").mousedown(function() {
  52481. _this.verticalmovestate = true;
  52482. _this.verticalmoveposition = $(this).position().left;
  52483. _this.windowWidth = $("#luckysheet-grid-window-1").width();
  52484. $(this).parent().addClass("luckysheet-freezebar-active");
  52485. $("#luckysheet-freezebar-vertical").find(".luckysheet-freezebar-vertical-handle").css("cursor", "-webkit-grabbing");
  52486. });
  52487. let gridheight = $("#luckysheet-grid-window-1").height();
  52488. $("#luckysheet-freezebar-vertical").find(".luckysheet-freezebar-vertical-handle").css({
  52489. "height": gridheight - 10,
  52490. "width": "4px",
  52491. "cursor": "-webkit-grab",
  52492. "top": "0px"
  52493. }).end().find(".luckysheet-freezebar-vertical-drop").css({
  52494. "height": gridheight - 10,
  52495. "width": "4px",
  52496. "top": "0px",
  52497. "cursor": "-webkit-grab"
  52498. });
  52499. }
  52500. if (freezenverticaldata == null) {
  52501. if (_this.freezenRealFirstRowColumn) {
  52502. let dataset_col_st = 0;
  52503. left = store_default.visibledatacolumn[dataset_col_st] - 2 + store_default.rowHeaderWidth;
  52504. freezenverticaldata = [
  52505. store_default.visibledatacolumn[dataset_col_st],
  52506. dataset_col_st + 1,
  52507. 0,
  52508. _this.cutVolumn(store_default.visibledatacolumn, dataset_col_st + 1),
  52509. left
  52510. ];
  52511. } else {
  52512. let scrollLeft = $("#luckysheet-cell-main").scrollLeft();
  52513. let dataset_col_st = luckysheet_searcharray(store_default.visibledatacolumn, scrollLeft);
  52514. if (dataset_col_st == -1) {
  52515. dataset_col_st = 0;
  52516. }
  52517. left = store_default.visibledatacolumn[dataset_col_st] - 2 - scrollLeft + store_default.rowHeaderWidth;
  52518. freezenverticaldata = [
  52519. store_default.visibledatacolumn[dataset_col_st],
  52520. dataset_col_st + 1,
  52521. scrollLeft,
  52522. _this.cutVolumn(store_default.visibledatacolumn, dataset_col_st + 1),
  52523. left
  52524. ];
  52525. }
  52526. _this.saveFreezen(null, null, freezenverticaldata, left);
  52527. }
  52528. _this.freezenverticaldata = freezenverticaldata;
  52529. const freezeHTML = `
  52530. <div class="luckysheet-toolbar-button-outer-box luckysheet-inline-block"
  52531. style="user-select: none;">
  52532. <div class="luckysheet-toolbar-button-inner-box luckysheet-inline-block"
  52533. style="user-select: none;">
  52534. <div class="luckysheet-icon luckysheet-inline-block " style="user-select: none;">
  52535. <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-function iconfont luckysheet-iconfont-dongjie1"
  52536. style="user-select: none;">
  52537. </div>
  52538. </div>
  52539. <div class="luckysheet-toolbar-menu-button-caption luckysheet-inline-block"
  52540. style="user-select: none;">
  52541. ${locale_default().freezen.freezenCancel}
  52542. </div>
  52543. </div>
  52544. </div>
  52545. `;
  52546. $("#luckysheet-freezen-btn-horizontal").html(freezeHTML);
  52547. $("#luckysheet-freezebar-vertical").show().find(".luckysheet-freezebar-vertical-handle").css({"left": left}).end().find(".luckysheet-freezebar-vertical-drop").css({"left": left});
  52548. },
  52549. saveFreezen: function(freezenhorizontaldata, top, freezenverticaldata, left) {
  52550. let currentSheet = store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)];
  52551. if (currentSheet.freezen == null) {
  52552. currentSheet.freezen = {};
  52553. }
  52554. if (freezenhorizontaldata != null) {
  52555. if (currentSheet.freezen.horizontal == null) {
  52556. currentSheet.freezen.horizontal = {};
  52557. }
  52558. currentSheet.freezen.horizontal.freezenhorizontaldata = freezenhorizontaldata;
  52559. currentSheet.freezen.horizontal.top = top;
  52560. }
  52561. if (freezenverticaldata != null) {
  52562. if (currentSheet.freezen.vertical == null) {
  52563. currentSheet.freezen.vertical = {};
  52564. }
  52565. currentSheet.freezen.vertical.freezenverticaldata = freezenverticaldata;
  52566. currentSheet.freezen.vertical.left = left;
  52567. }
  52568. if (currentSheet.frozen != null) {
  52569. server_default.saveParam("all", store_default.currentSheetIndex, currentSheet.frozen, {"k": "frozen"});
  52570. }
  52571. },
  52572. initialFreezen: function(sheetIndex) {
  52573. let _this = this;
  52574. _this.frozenTofreezen();
  52575. let currentSheet = store_default.luckysheetfile[getSheetIndex(sheetIndex)];
  52576. if (currentSheet.freezen != null && currentSheet.freezen.horizontal != null && currentSheet.freezen.horizontal.freezenhorizontaldata != null) {
  52577. _this.createFreezenHorizontal(currentSheet.freezen.horizontal.freezenhorizontaldata, currentSheet.freezen.horizontal.top);
  52578. } else {
  52579. _this.cancelFreezenHorizontal(sheetIndex);
  52580. }
  52581. if (currentSheet.freezen != null && currentSheet.freezen.vertical != null && currentSheet.freezen.vertical.freezenverticaldata != null) {
  52582. _this.createFreezenVertical(currentSheet.freezen.vertical.freezenverticaldata, currentSheet.freezen.vertical.left);
  52583. } else {
  52584. _this.cancelFreezenVertical(sheetIndex);
  52585. }
  52586. _this.createAssistCanvas();
  52587. },
  52588. changeFreezenIndex: function(originindex, type) {
  52589. let _this = this;
  52590. if (type == "v" && _this.freezenverticaldata != null) {
  52591. let freezen_colindex = _this.freezenverticaldata[1];
  52592. let offset = luckysheet_searcharray(store_default.visibledatacolumn, $("#luckysheet-cell-main").scrollLeft());
  52593. if (originindex - offset < freezen_colindex) {
  52594. originindex = originindex - offset;
  52595. }
  52596. } else if (type == "h" && _this.freezenhorizontaldata != null) {
  52597. let freezen_rowindex = _this.freezenhorizontaldata[1];
  52598. let offset = luckysheet_searcharray(store_default.visibledatarow, $("#luckysheet-cell-main").scrollTop());
  52599. if (originindex - offset < freezen_rowindex) {
  52600. originindex = originindex - offset;
  52601. }
  52602. }
  52603. return originindex;
  52604. },
  52605. scrollFreezen: function() {
  52606. let _this = this;
  52607. let row;
  52608. let row_focus = store_default.luckysheet_select_save[0]["row_focus"];
  52609. if (row_focus == store_default.luckysheet_select_save[0]["row"][0]) {
  52610. row = store_default.luckysheet_select_save[0]["row"][1];
  52611. } else if (row_focus == store_default.luckysheet_select_save[0]["row"][1]) {
  52612. row = store_default.luckysheet_select_save[0]["row"][0];
  52613. }
  52614. let column;
  52615. let column_focus = store_default.luckysheet_select_save[0]["column_focus"];
  52616. if (column_focus == store_default.luckysheet_select_save[0]["column"][0]) {
  52617. column = store_default.luckysheet_select_save[0]["column"][1];
  52618. } else if (column_focus == store_default.luckysheet_select_save[0]["column"][1]) {
  52619. column = store_default.luckysheet_select_save[0]["column"][0];
  52620. }
  52621. if (_this.freezenverticaldata != null) {
  52622. let freezen_colindex = _this.freezenverticaldata[1];
  52623. let offset = luckysheet_searcharray(_this.freezenverticaldata[3], $("#luckysheet-cell-main").scrollLeft());
  52624. let top = _this.freezenverticaldata[4];
  52625. freezen_colindex += offset;
  52626. if (column >= store_default.visibledatacolumn.length) {
  52627. column = store_default.visibledatacolumn.length - 1;
  52628. }
  52629. if (freezen_colindex >= store_default.visibledatacolumn.length) {
  52630. freezen_colindex = store_default.visibledatacolumn.length - 1;
  52631. }
  52632. let column_px = store_default.visibledatacolumn[column], freezen_px = store_default.visibledatacolumn[freezen_colindex];
  52633. if (column_px <= freezen_px + top) {
  52634. setTimeout(function() {
  52635. $("#luckysheet-scrollbar-x").scrollLeft(0);
  52636. }, 100);
  52637. }
  52638. }
  52639. if (_this.freezenhorizontaldata != null) {
  52640. let freezen_rowindex = _this.freezenhorizontaldata[1];
  52641. let offset = luckysheet_searcharray(_this.freezenhorizontaldata[3], $("#luckysheet-cell-main").scrollTop());
  52642. let left = _this.freezenhorizontaldata[4];
  52643. freezen_rowindex += offset;
  52644. if (row >= store_default.visibledatarow.length) {
  52645. row = store_default.visibledatarow.length - 1;
  52646. }
  52647. if (freezen_rowindex >= store_default.visibledatarow.length) {
  52648. freezen_rowindex = store_default.visibledatarow.length - 1;
  52649. }
  52650. let row_px = store_default.visibledatarow[row], freezen_px = store_default.visibledatarow[freezen_rowindex];
  52651. if (row_px <= freezen_px + left) {
  52652. setTimeout(function() {
  52653. $("#luckysheet-scrollbar-y").scrollTop(0);
  52654. }, 100);
  52655. }
  52656. }
  52657. },
  52658. cancelFreezenHorizontal: function(sheetIndex) {
  52659. let _this = this;
  52660. const freezeHTML = `
  52661. <div class="luckysheet-toolbar-button-outer-box luckysheet-inline-block"
  52662. style="user-select: none;">
  52663. <div class="luckysheet-toolbar-button-inner-box luckysheet-inline-block"
  52664. style="user-select: none;">
  52665. <div class="luckysheet-icon luckysheet-inline-block " style="user-select: none;">
  52666. <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-function iconfont luckysheet-iconfont-dongjie1"
  52667. style="user-select: none;">
  52668. </div>
  52669. </div>
  52670. <div class="luckysheet-toolbar-menu-button-caption luckysheet-inline-block"
  52671. style="user-select: none;">
  52672. ${locale_default().freezen.default}
  52673. </div>
  52674. </div>
  52675. </div>
  52676. `;
  52677. $("#luckysheet-freezen-btn-horizontal").html(freezeHTML);
  52678. _this.freezenhorizontaldata = null;
  52679. let ishorizontal = $("#luckysheet-freezebar-horizontal").is(":visible");
  52680. $("#luckysheet-freezebar-horizontal").hide();
  52681. if (sheetIndex == null) {
  52682. sheetIndex = store_default.currentSheetIndex;
  52683. }
  52684. let currentSheet = store_default.luckysheetfile[getSheetIndex(sheetIndex)];
  52685. if (currentSheet.freezen != null) {
  52686. currentSheet.freezen.horizontal = null;
  52687. }
  52688. if (currentSheet.frozen != null && ishorizontal) {
  52689. server_default.saveParam("all", sheetIndex, currentSheet.frozen, {"k": "frozen"});
  52690. }
  52691. },
  52692. createFreezenHorizontal: function(freezenhorizontaldata, top) {
  52693. let _this = this;
  52694. if (_this.initialHorizontal) {
  52695. _this.initialHorizontal = false;
  52696. $("#luckysheet-grid-window-1").append(_this.freezenHorizontalHTML);
  52697. $("#luckysheet-freezebar-horizontal").find(".luckysheet-freezebar-horizontal-drop").hover(function() {
  52698. $(this).parent().addClass("luckysheet-freezebar-hover");
  52699. }, function() {
  52700. $(this).parent().removeClass("luckysheet-freezebar-hover");
  52701. });
  52702. $("#luckysheet-freezebar-horizontal").find(".luckysheet-freezebar-horizontal-drop").mousedown(function() {
  52703. _this.horizontalmovestate = true;
  52704. _this.horizontalmoveposition = $(this).position().top;
  52705. _this.windowHeight = $("#luckysheet-grid-window-1").height();
  52706. $(this).parent().addClass("luckysheet-freezebar-active");
  52707. $("#luckysheet-freezebar-horizontal").find(".luckysheet-freezebar-horizontal-handle").css("cursor", "-webkit-grabbing");
  52708. });
  52709. let gridwidth = $("#luckysheet-grid-window-1").width();
  52710. $("#luckysheet-freezebar-horizontal").find(".luckysheet-freezebar-horizontal-handle").css({
  52711. "width": gridwidth - 10,
  52712. "height": "4px",
  52713. "cursor": "-webkit-grab",
  52714. "left": "0px"
  52715. }).end().find(".luckysheet-freezebar-horizontal-drop").css({
  52716. "width": gridwidth - 10,
  52717. "height": "4px",
  52718. "left": "0px",
  52719. "cursor": "-webkit-grab"
  52720. });
  52721. }
  52722. if (freezenhorizontaldata == null) {
  52723. let dataset_row_st;
  52724. if (_this.freezenRealFirstRowColumn) {
  52725. dataset_row_st = 0;
  52726. top = store_default.visibledatarow[dataset_row_st] - 2 + store_default.columnHeaderHeight;
  52727. freezenhorizontaldata = [
  52728. store_default.visibledatarow[dataset_row_st],
  52729. dataset_row_st + 1,
  52730. 0,
  52731. _this.cutVolumn(store_default.visibledatarow, dataset_row_st + 1),
  52732. top
  52733. ];
  52734. _this.saveFreezen(freezenhorizontaldata, top, null, null);
  52735. setTimeout(() => {
  52736. luckysheetFreezen.createAssistCanvas();
  52737. luckysheetrefreshgrid();
  52738. });
  52739. } else {
  52740. let scrollTop = $("#luckysheet-cell-main").scrollTop();
  52741. dataset_row_st = luckysheet_searcharray(store_default.visibledatarow, scrollTop);
  52742. if (dataset_row_st == -1) {
  52743. dataset_row_st = 0;
  52744. }
  52745. top = store_default.visibledatarow[dataset_row_st] - 2 - scrollTop + store_default.columnHeaderHeight;
  52746. freezenhorizontaldata = [
  52747. store_default.visibledatarow[dataset_row_st],
  52748. dataset_row_st + 1,
  52749. scrollTop,
  52750. _this.cutVolumn(store_default.visibledatarow, dataset_row_st + 1),
  52751. top
  52752. ];
  52753. _this.saveFreezen(freezenhorizontaldata, top, null, null);
  52754. }
  52755. }
  52756. _this.freezenhorizontaldata = freezenhorizontaldata;
  52757. const freezeHTML = `
  52758. <div class="luckysheet-toolbar-button-outer-box luckysheet-inline-block"
  52759. style="user-select: none;">
  52760. <div class="luckysheet-toolbar-button-inner-box luckysheet-inline-block"
  52761. style="user-select: none;">
  52762. <div class="luckysheet-icon luckysheet-inline-block " style="user-select: none;">
  52763. <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-function iconfont luckysheet-iconfont-dongjie1"
  52764. style="user-select: none;">
  52765. </div>
  52766. </div>
  52767. <div class="luckysheet-toolbar-menu-button-caption luckysheet-inline-block"
  52768. style="user-select: none;">
  52769. ${locale_default().freezen.freezenCancel}
  52770. </div>
  52771. </div>
  52772. </div>
  52773. `;
  52774. $("#luckysheet-freezen-btn-horizontal").html(freezeHTML);
  52775. $("#luckysheet-freezebar-horizontal").show().find(".luckysheet-freezebar-horizontal-handle").css({"top": top}).end().find(".luckysheet-freezebar-horizontal-drop").css({"top": top});
  52776. },
  52777. createAssistCanvas: function() {
  52778. let _this = this;
  52779. _this.removeAssistCanvas();
  52780. if (_this.freezenverticaldata != null || _this.freezenhorizontaldata != null) {
  52781. let freezen_horizon_px, freezen_horizon_ed, freezen_horizon_scrollTop;
  52782. let freezen_vertical_px, freezen_vertical_ed, freezen_vertical_scrollTop;
  52783. let drawWidth = store_default.luckysheetTableContentHW[0], drawHeight = store_default.luckysheetTableContentHW[1];
  52784. if (_this.freezenverticaldata != null && _this.freezenhorizontaldata != null) {
  52785. freezen_horizon_px = _this.freezenhorizontaldata[0];
  52786. freezen_horizon_ed = _this.freezenhorizontaldata[1];
  52787. freezen_horizon_scrollTop = _this.freezenhorizontaldata[2];
  52788. freezen_vertical_px = _this.freezenverticaldata[0];
  52789. freezen_vertical_ed = _this.freezenverticaldata[1];
  52790. freezen_vertical_scrollTop = _this.freezenverticaldata[2];
  52791. _this.createCanvas("freezen_3", freezen_vertical_px - freezen_vertical_scrollTop, freezen_horizon_px - freezen_horizon_scrollTop + 1, store_default.rowHeaderWidth - 1, store_default.columnHeaderHeight - 1);
  52792. _this.createCanvas("freezen_4", drawWidth - freezen_vertical_px + freezen_vertical_scrollTop, freezen_horizon_px - freezen_horizon_scrollTop + 1, freezen_vertical_px - freezen_vertical_scrollTop + store_default.rowHeaderWidth - 1, store_default.columnHeaderHeight - 1);
  52793. _this.createCanvas("freezen_7", freezen_vertical_px - freezen_vertical_scrollTop, drawHeight - freezen_horizon_px + freezen_horizon_scrollTop - store_default.columnHeaderHeight, store_default.rowHeaderWidth - 1, freezen_horizon_px - freezen_horizon_scrollTop + store_default.columnHeaderHeight - 1);
  52794. } else if (_this.freezenhorizontaldata != null) {
  52795. freezen_horizon_px = _this.freezenhorizontaldata[0];
  52796. freezen_horizon_ed = _this.freezenhorizontaldata[1];
  52797. freezen_horizon_scrollTop = _this.freezenhorizontaldata[2];
  52798. _this.createCanvas("freezen_h", drawWidth, freezen_horizon_px - freezen_horizon_scrollTop + 1, store_default.rowHeaderWidth - 1, store_default.columnHeaderHeight - 1);
  52799. } else if (_this.freezenverticaldata != null) {
  52800. freezen_vertical_px = _this.freezenverticaldata[0];
  52801. freezen_vertical_ed = _this.freezenverticaldata[1];
  52802. freezen_vertical_scrollTop = _this.freezenverticaldata[2];
  52803. _this.createCanvas("freezen_v", freezen_vertical_px - freezen_vertical_scrollTop, drawHeight, store_default.rowHeaderWidth - 1, store_default.columnHeaderHeight - 1);
  52804. }
  52805. _this.scrollAdapt();
  52806. }
  52807. },
  52808. createCanvas: function(id, width, height, left, top) {
  52809. let c2 = $("<canvas/>").appendTo("#luckysheet-grid-window-1").attr({
  52810. "id": id,
  52811. "width": Math.ceil(width * store_default.devicePixelRatio),
  52812. "height": Math.ceil(height * store_default.devicePixelRatio)
  52813. }).css({
  52814. "user-select": "none",
  52815. "postion": "absolute",
  52816. "left": left,
  52817. "top": top,
  52818. "width": width,
  52819. "height": height,
  52820. "z-index": 10,
  52821. "pointer-events": "none"
  52822. });
  52823. },
  52824. removeAssistCanvas: function() {
  52825. $("#luckysheet-grid-window-1 > canvas").not($("#luckysheetTableContent")).remove();
  52826. $("#luckysheet-cell-selected").css("z-index", 15);
  52827. },
  52828. scrollAdapt: function() {
  52829. let _this = this;
  52830. if (store_default.luckysheet_select_save != null && store_default.luckysheet_select_save.length > 0) {
  52831. _this.scrollAdaptOfselect();
  52832. }
  52833. if ($("#luckysheet-cell-main .luckysheet-data-visualization-chart").length > 0) {
  52834. const chart2 = store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)]["chart"];
  52835. if (chart2 != null && chart2.length > 0) {
  52836. _this.scrollAdaptOfchart();
  52837. }
  52838. }
  52839. if ($("#luckysheet-postil-showBoxs .luckysheet-postil-show").length > 0) {
  52840. _this.scrollAdaptOfpostil();
  52841. }
  52842. if ($("#luckysheet-dropCell-icon").length > 0) {
  52843. _this.scrollAdaptOfdpicon();
  52844. }
  52845. if ($("#luckysheet-filter-options-sheet" + store_default.currentSheetIndex + " .luckysheet-filter-options").length > 0) {
  52846. _this.scrollAdaptOffilteroptions();
  52847. }
  52848. },
  52849. scrollAdaptOfselect: function() {
  52850. let _this = this;
  52851. if ($("#luckysheet-row-count-show").is(":visible")) {
  52852. $("#luckysheet-row-count-show").hide();
  52853. }
  52854. if ($("#luckysheet-column-count-show").is(":visible")) {
  52855. $("#luckysheet-column-count-show").hide();
  52856. }
  52857. $("#luckysheet-rows-h-selected").empty();
  52858. $("#luckysheet-cols-h-selected").empty();
  52859. let scrollTop = $("#luckysheet-cell-main").scrollTop();
  52860. let scrollLeft = $("#luckysheet-cell-main").scrollLeft();
  52861. if (_this.freezenhorizontaldata != null && _this.freezenverticaldata != null) {
  52862. let freezenTop = _this.freezenhorizontaldata[0];
  52863. let freezen_rowindex = _this.freezenhorizontaldata[1];
  52864. let offTop = scrollTop - _this.freezenhorizontaldata[2];
  52865. let freezenLeft = _this.freezenverticaldata[0];
  52866. let freezen_colindex = _this.freezenverticaldata[1];
  52867. let offLeft = scrollLeft - _this.freezenverticaldata[2];
  52868. for (let s = 0; s < store_default.luckysheet_select_save.length; s++) {
  52869. let obj = $.extend(true, {}, store_default.luckysheet_select_save[s]);
  52870. let r1 = obj.row[0], r2 = obj.row[1];
  52871. let row = store_default.visibledatarow[r2], row_pre = r1 - 1 == -1 ? 0 : store_default.visibledatarow[r1 - 1];
  52872. let top_move = row_pre;
  52873. let height_move = row - row_pre - 1;
  52874. let rangeshow = true;
  52875. if (r1 >= freezen_rowindex) {
  52876. if (top_move + height_move < freezenTop + offTop) {
  52877. rangeshow = false;
  52878. } else if (top_move < freezenTop + offTop) {
  52879. $("#luckysheet-cell-selected-boxs").find(".luckysheet-cell-selected").eq(s).show().css({
  52880. "top": freezenTop + offTop,
  52881. "height": height_move - (freezenTop + offTop - top_move)
  52882. });
  52883. } else {
  52884. $("#luckysheet-cell-selected-boxs").find(".luckysheet-cell-selected").eq(s).show().css({
  52885. "top": top_move,
  52886. "height": height_move
  52887. });
  52888. }
  52889. } else if (r2 >= freezen_rowindex) {
  52890. if (top_move + height_move < freezenTop + offTop) {
  52891. $("#luckysheet-cell-selected-boxs").find(".luckysheet-cell-selected").eq(s).show().css({
  52892. "top": top_move + offTop,
  52893. "height": freezenTop - top_move
  52894. });
  52895. } else {
  52896. $("#luckysheet-cell-selected-boxs").find(".luckysheet-cell-selected").eq(s).show().css({
  52897. "top": top_move + offTop,
  52898. "height": height_move - offTop
  52899. });
  52900. }
  52901. } else {
  52902. $("#luckysheet-cell-selected-boxs").find(".luckysheet-cell-selected").eq(s).show().css("top", top_move + offTop);
  52903. }
  52904. let c1 = obj.column[0], c2 = obj.column[1];
  52905. let col = store_default.visibledatacolumn[c2], col_pre = c1 - 1 == -1 ? 0 : store_default.visibledatacolumn[c1 - 1];
  52906. let left_move = col_pre;
  52907. let width_move = col - col_pre - 1;
  52908. if (c1 >= freezen_colindex) {
  52909. if (left_move + width_move < freezenLeft + offLeft) {
  52910. rangeshow = false;
  52911. } else if (left_move < freezenLeft + offLeft) {
  52912. $("#luckysheet-cell-selected-boxs").find(".luckysheet-cell-selected").eq(s).show().css({
  52913. "left": freezenLeft + offLeft,
  52914. "width": width_move - (freezenLeft + offLeft - left_move)
  52915. });
  52916. } else {
  52917. $("#luckysheet-cell-selected-boxs").find(".luckysheet-cell-selected").eq(s).show().css({
  52918. "left": left_move,
  52919. "width": width_move
  52920. });
  52921. }
  52922. } else if (c2 >= freezen_colindex) {
  52923. if (left_move + width_move < freezenLeft + offLeft) {
  52924. $("#luckysheet-cell-selected-boxs").find(".luckysheet-cell-selected").eq(s).show().css({
  52925. "left": left_move + offLeft,
  52926. "width": freezenLeft - left_move
  52927. });
  52928. } else {
  52929. $("#luckysheet-cell-selected-boxs").find(".luckysheet-cell-selected").eq(s).show().css({
  52930. "left": left_move + offLeft,
  52931. "width": width_move - offLeft
  52932. });
  52933. }
  52934. } else {
  52935. $("#luckysheet-cell-selected-boxs").find(".luckysheet-cell-selected").eq(s).show().css("left", left_move + offLeft);
  52936. }
  52937. if (!rangeshow) {
  52938. $("#luckysheet-cell-selected-boxs").find(".luckysheet-cell-selected").eq(s).hide();
  52939. }
  52940. if (s == store_default.luckysheet_select_save.length - 1) {
  52941. let rf = obj.row_focus == null ? r1 : obj.row_focus;
  52942. let cf = obj.column_focus == null ? c1 : obj.column_focus;
  52943. let row_f = store_default.visibledatarow[rf], row_pre_f = rf - 1 == -1 ? 0 : store_default.visibledatarow[rf - 1];
  52944. let col_f = store_default.visibledatacolumn[cf], col_pre_f = cf - 1 == -1 ? 0 : store_default.visibledatacolumn[cf - 1];
  52945. let margeset = menuButton_default.mergeborer(store_default.flowdata, rf, cf);
  52946. if (!!margeset) {
  52947. row_f = margeset.row[1];
  52948. row_pre_f = margeset.row[0];
  52949. col_f = margeset.column[1];
  52950. col_pre_f = margeset.column[0];
  52951. }
  52952. let top = row_pre_f;
  52953. let height = row_f - row_pre_f - 1;
  52954. let left = col_pre_f;
  52955. let width = col_f - col_pre_f - 1;
  52956. let focuscell = true;
  52957. if (top >= freezenTop) {
  52958. if (top + height < freezenTop + offTop) {
  52959. focuscell = false;
  52960. } else if (top < freezenTop + offTop) {
  52961. $("#luckysheet-cell-selected-focus").show().css({
  52962. "top": freezenTop + offTop,
  52963. "height": height - (freezenTop + offTop - top)
  52964. });
  52965. } else {
  52966. $("#luckysheet-cell-selected-focus").show().css({
  52967. "top": top,
  52968. "height": height
  52969. });
  52970. }
  52971. } else if (top + height >= freezenTop) {
  52972. if (top + height < freezenTop + offTop) {
  52973. $("#luckysheet-cell-selected-focus").show().css({
  52974. "top": top + offTop,
  52975. "height": freezenTop - top
  52976. });
  52977. } else {
  52978. $("#luckysheet-cell-selected-focus").show().css({
  52979. "top": top + offTop,
  52980. "height": height - offTop
  52981. });
  52982. }
  52983. } else {
  52984. $("#luckysheet-cell-selected-focus").show().css("top", top + offTop);
  52985. }
  52986. if (left >= freezenLeft) {
  52987. if (left + width < freezenLeft + offLeft) {
  52988. focuscell = false;
  52989. } else if (left < freezenLeft + offLeft) {
  52990. $("#luckysheet-cell-selected-focus").show().css({
  52991. "left": freezenLeft + offLeft,
  52992. "width": width - (freezenLeft + offLeft - left)
  52993. });
  52994. } else {
  52995. $("#luckysheet-cell-selected-focus").show().css({
  52996. "left": left,
  52997. "width": width
  52998. });
  52999. }
  53000. } else if (left + width >= freezenLeft) {
  53001. if (left + width < freezenLeft + offLeft) {
  53002. $("#luckysheet-cell-selected-focus").show().css({
  53003. "left": left + offLeft,
  53004. "width": freezenLeft - left
  53005. });
  53006. } else {
  53007. $("#luckysheet-cell-selected-focus").show().css({
  53008. "left": left + offLeft,
  53009. "width": width - offLeft
  53010. });
  53011. }
  53012. } else {
  53013. $("#luckysheet-cell-selected-focus").show().css("left", left + offLeft);
  53014. }
  53015. if (!focuscell) {
  53016. $("#luckysheet-cell-selected-focus").hide();
  53017. }
  53018. }
  53019. }
  53020. } else if (_this.freezenhorizontaldata != null) {
  53021. let freezenTop = _this.freezenhorizontaldata[0];
  53022. let freezen_rowindex = _this.freezenhorizontaldata[1];
  53023. let offTop = scrollTop - _this.freezenhorizontaldata[2];
  53024. for (let s = 0; s < store_default.luckysheet_select_save.length; s++) {
  53025. let obj = $.extend(true, {}, store_default.luckysheet_select_save[s]);
  53026. let r1 = obj.row[0], r2 = obj.row[1];
  53027. let row = store_default.visibledatarow[r2], row_pre = r1 - 1 == -1 ? 0 : store_default.visibledatarow[r1 - 1];
  53028. let top_move = row_pre;
  53029. let height_move = row - row_pre - 1;
  53030. if (r1 >= freezen_rowindex) {
  53031. if (top_move + height_move < freezenTop + offTop) {
  53032. $("#luckysheet-cell-selected-boxs").find(".luckysheet-cell-selected").eq(s).hide();
  53033. } else if (top_move < freezenTop + offTop) {
  53034. $("#luckysheet-cell-selected-boxs").find(".luckysheet-cell-selected").eq(s).show().css({
  53035. "top": freezenTop + offTop,
  53036. "height": height_move - (freezenTop + offTop - top_move)
  53037. });
  53038. } else {
  53039. $("#luckysheet-cell-selected-boxs").find(".luckysheet-cell-selected").eq(s).show().css({
  53040. "top": top_move,
  53041. "height": height_move
  53042. });
  53043. }
  53044. } else if (r2 >= freezen_rowindex) {
  53045. if (top_move + height_move < freezenTop + offTop) {
  53046. $("#luckysheet-cell-selected-boxs").find(".luckysheet-cell-selected").eq(s).show().css({
  53047. "top": top_move + offTop,
  53048. "height": freezenTop - top_move
  53049. });
  53050. } else {
  53051. $("#luckysheet-cell-selected-boxs").find(".luckysheet-cell-selected").eq(s).show().css({
  53052. "top": top_move + offTop,
  53053. "height": height_move - offTop
  53054. });
  53055. }
  53056. } else {
  53057. $("#luckysheet-cell-selected-boxs").find(".luckysheet-cell-selected").eq(s).show().css("top", top_move + offTop);
  53058. }
  53059. if (s == store_default.luckysheet_select_save.length - 1) {
  53060. let rf = obj.row_focus == null ? r1 : obj.row_focus;
  53061. let cf = obj.column_focus == null ? obj.column[0] : obj.column_focus;
  53062. let row_f = store_default.visibledatarow[rf], row_pre_f = rf - 1 == -1 ? 0 : store_default.visibledatarow[rf - 1];
  53063. let margeset = menuButton_default.mergeborer(store_default.flowdata, rf, cf);
  53064. if (!!margeset) {
  53065. row_f = margeset.row[1];
  53066. row_pre_f = margeset.row[0];
  53067. }
  53068. let top = row_pre_f;
  53069. let height = row_f - row_pre_f - 1;
  53070. if (top >= freezenTop) {
  53071. if (top + height < freezenTop + offTop) {
  53072. $("#luckysheet-cell-selected-focus").hide();
  53073. } else if (top < freezenTop + offTop) {
  53074. $("#luckysheet-cell-selected-focus").show().css({
  53075. "top": freezenTop + offTop,
  53076. "height": height - (freezenTop + offTop - top)
  53077. });
  53078. } else {
  53079. $("#luckysheet-cell-selected-focus").show().css({
  53080. "top": top,
  53081. "height": height
  53082. });
  53083. }
  53084. } else if (top + height >= freezenTop) {
  53085. if (top + height < freezenTop + offTop) {
  53086. $("#luckysheet-cell-selected-focus").show().css({
  53087. "top": top + offTop,
  53088. "height": freezenTop - top
  53089. });
  53090. } else {
  53091. $("#luckysheet-cell-selected-focus").show().css({
  53092. "top": top + offTop,
  53093. "height": height - offTop
  53094. });
  53095. }
  53096. } else {
  53097. $("#luckysheet-cell-selected-focus").show().css("top", top + offTop);
  53098. }
  53099. }
  53100. }
  53101. } else if (_this.freezenverticaldata != null) {
  53102. let freezenLeft = _this.freezenverticaldata[0];
  53103. let freezen_colindex = _this.freezenverticaldata[1];
  53104. let offLeft = scrollLeft - _this.freezenverticaldata[2];
  53105. for (let s = 0; s < store_default.luckysheet_select_save.length; s++) {
  53106. let obj = $.extend(true, {}, store_default.luckysheet_select_save[s]);
  53107. let c1 = obj.column[0], c2 = obj.column[1];
  53108. let col = store_default.visibledatacolumn[c2], col_pre = c1 - 1 == -1 ? 0 : store_default.visibledatacolumn[c1 - 1];
  53109. let left_move = col_pre;
  53110. let width_move = col - col_pre - 1;
  53111. if (c1 >= freezen_colindex) {
  53112. if (left_move + width_move < freezenLeft + offLeft) {
  53113. $("#luckysheet-cell-selected-boxs").find(".luckysheet-cell-selected").eq(s).hide();
  53114. } else if (left_move < freezenLeft + offLeft) {
  53115. $("#luckysheet-cell-selected-boxs").find(".luckysheet-cell-selected").eq(s).show().css({
  53116. "left": freezenLeft + offLeft,
  53117. "width": width_move - (freezenLeft + offLeft - left_move)
  53118. });
  53119. } else {
  53120. $("#luckysheet-cell-selected-boxs").find(".luckysheet-cell-selected").eq(s).show().css({
  53121. "left": left_move,
  53122. "width": width_move
  53123. });
  53124. }
  53125. } else if (c2 >= freezen_colindex) {
  53126. if (left_move + width_move < freezenLeft + offLeft) {
  53127. $("#luckysheet-cell-selected-boxs").find(".luckysheet-cell-selected").eq(s).show().css({
  53128. "left": left_move + offLeft,
  53129. "width": freezenLeft - left_move
  53130. });
  53131. } else {
  53132. $("#luckysheet-cell-selected-boxs").find(".luckysheet-cell-selected").eq(s).show().css({
  53133. "left": left_move + offLeft,
  53134. "width": width_move - offLeft
  53135. });
  53136. }
  53137. } else {
  53138. $("#luckysheet-cell-selected-boxs").find(".luckysheet-cell-selected").eq(s).show().css("left", left_move + offLeft);
  53139. }
  53140. if (s == store_default.luckysheet_select_save.length - 1) {
  53141. let rf = obj.row_focus == null ? obj.row[0] : obj.row_focus;
  53142. let cf = obj.column_focus == null ? c1 : obj.column_focus;
  53143. let col_f = store_default.visibledatacolumn[cf], col_pre_f = cf - 1 == -1 ? 0 : store_default.visibledatacolumn[cf - 1];
  53144. let margeset = menuButton_default.mergeborer(store_default.flowdata, rf, cf);
  53145. if (!!margeset) {
  53146. col_f = margeset.column[1];
  53147. col_pre_f = margeset.column[0];
  53148. }
  53149. let left = col_pre_f;
  53150. let width = col_f - col_pre_f - 1;
  53151. if (left >= freezenLeft) {
  53152. if (left + width < freezenLeft + offLeft) {
  53153. $("#luckysheet-cell-selected-focus").hide();
  53154. } else if (left < freezenLeft + offLeft) {
  53155. $("#luckysheet-cell-selected-focus").show().css({
  53156. "left": freezenLeft + offLeft,
  53157. "width": width - (freezenLeft + offLeft - left)
  53158. });
  53159. } else {
  53160. $("#luckysheet-cell-selected-focus").show().css({
  53161. "left": left,
  53162. "width": width
  53163. });
  53164. }
  53165. } else if (left + width >= freezenLeft) {
  53166. if (left + width < freezenLeft + offLeft) {
  53167. $("#luckysheet-cell-selected-focus").show().css({
  53168. "left": left + offLeft,
  53169. "width": freezenLeft - left
  53170. });
  53171. } else {
  53172. $("#luckysheet-cell-selected-focus").show().css({
  53173. "left": left + offLeft,
  53174. "width": width - offLeft
  53175. });
  53176. }
  53177. } else {
  53178. $("#luckysheet-cell-selected-focus").show().css("left", left + offLeft);
  53179. }
  53180. }
  53181. }
  53182. } else {
  53183. selectHightlightShow();
  53184. }
  53185. },
  53186. scrollAdaptOfchart: function() {
  53187. let _this = this;
  53188. let scrollTop = $("#luckysheet-cell-main").scrollTop();
  53189. let scrollLeft = $("#luckysheet-cell-main").scrollLeft();
  53190. if (_this.freezenhorizontaldata != null && _this.freezenverticaldata != null) {
  53191. let freezenTop = _this.freezenhorizontaldata[0] - _this.freezenhorizontaldata[2];
  53192. let freezenLeft = _this.freezenverticaldata[0] - _this.freezenverticaldata[2];
  53193. $("#luckysheet-cell-main .luckysheet-data-visualization-chart").each(function(i2, e) {
  53194. let x = $(e).position();
  53195. let width = $(e).width();
  53196. let height = $(e).height();
  53197. let $canvas_width = $(e).find("canvas").width();
  53198. let $canvas_height = $(e).find("canvas").height();
  53199. let height_diff = $canvas_height - height;
  53200. let width_diff = $canvas_width - width;
  53201. if (x.top - height_diff < freezenTop) {
  53202. let size = freezenTop - (x.top - height_diff);
  53203. if (size > $canvas_height + 40 + 2) {
  53204. $(e).css("visibility", "hidden");
  53205. } else {
  53206. $(e).css({
  53207. "top": freezenTop + scrollTop,
  53208. "height": $canvas_height - size,
  53209. "visibility": "visible"
  53210. });
  53211. $(e).find("canvas").css("top", -size);
  53212. }
  53213. } else {
  53214. $(e).css({
  53215. "top": x.top - height_diff + scrollTop,
  53216. "height": $canvas_height,
  53217. "visibility": "visible"
  53218. });
  53219. $(e).find("canvas").css("top", 0);
  53220. }
  53221. if (x.left - width_diff < freezenLeft) {
  53222. let size = freezenLeft - (x.left - width_diff);
  53223. if (size > $canvas_width + 20 + 2) {
  53224. $(e).css("visibility", "hidden");
  53225. } else {
  53226. $(e).css({
  53227. "left": freezenLeft + scrollLeft,
  53228. "width": $canvas_width - size,
  53229. "visibility": "visible"
  53230. });
  53231. $(e).find("canvas").css("left", -size);
  53232. }
  53233. } else {
  53234. $(e).css({
  53235. "left": x.left - width_diff + scrollLeft,
  53236. "width": $canvas_width,
  53237. "visibility": "visible"
  53238. });
  53239. $(e).find("canvas").css("left", 0);
  53240. }
  53241. });
  53242. } else if (_this.freezenhorizontaldata != null) {
  53243. let freezenTop = _this.freezenhorizontaldata[0] - _this.freezenhorizontaldata[2];
  53244. $("#luckysheet-cell-main .luckysheet-data-visualization-chart").each(function(i2, e) {
  53245. let x = $(e).position();
  53246. let height = $(e).height();
  53247. let $canvas_height = $(e).find("canvas").height();
  53248. let height_diff = $canvas_height - height;
  53249. if (x.top - height_diff < freezenTop) {
  53250. let size = freezenTop - (x.top - height_diff);
  53251. if (size > $canvas_height + 40 + 2) {
  53252. $(e).css("visibility", "hidden");
  53253. } else {
  53254. $(e).css({
  53255. "top": freezenTop + scrollTop,
  53256. "height": $canvas_height - size,
  53257. "visibility": "visible"
  53258. });
  53259. $(e).find("canvas").css("top", -size);
  53260. }
  53261. } else {
  53262. $(e).css({
  53263. "top": x.top - height_diff + scrollTop,
  53264. "height": $canvas_height,
  53265. "visibility": "visible"
  53266. });
  53267. $(e).find("canvas").css("top", 0);
  53268. }
  53269. });
  53270. } else if (_this.freezenverticaldata != null) {
  53271. let freezenLeft = _this.freezenverticaldata[0] - _this.freezenverticaldata[2];
  53272. $("#luckysheet-cell-main .luckysheet-data-visualization-chart").each(function(i2, e) {
  53273. let x = $(e).position();
  53274. let width = $(e).width();
  53275. let $canvas_width = $(e).find("canvas").width();
  53276. let width_diff = $canvas_width - width;
  53277. if (x.left - width_diff < freezenLeft) {
  53278. let size = freezenLeft - (x.left - width_diff);
  53279. if (size > $canvas_width + 20 + 2) {
  53280. $(e).css("visibility", "hidden");
  53281. } else {
  53282. $(e).css({
  53283. "left": freezenLeft + scrollLeft,
  53284. "width": $canvas_width - size,
  53285. "visibility": "visible"
  53286. });
  53287. $(e).find("canvas").css("left", -size);
  53288. }
  53289. } else {
  53290. $(e).css({
  53291. "left": x.left - width_diff + scrollLeft,
  53292. "width": $canvas_width,
  53293. "visibility": "visible"
  53294. });
  53295. $(e).find("canvas").css("left", 0);
  53296. }
  53297. });
  53298. } else {
  53299. $("#luckysheet-cell-main .luckysheet-data-visualization-chart").each(function(i2, e) {
  53300. let x = $(e).position();
  53301. let width = $(e).width();
  53302. let height = $(e).height();
  53303. let $canvas_width = $(e).find("canvas").width();
  53304. let $canvas_height = $(e).find("canvas").height();
  53305. let height_diff = $canvas_height - height;
  53306. let width_diff = $canvas_width - width;
  53307. $(e).css({
  53308. "top": x.top - height_diff + scrollTop,
  53309. "height": $canvas_height,
  53310. "left": x.left - width_diff + scrollLeft,
  53311. "width": $canvas_width,
  53312. "visibility": "visible"
  53313. });
  53314. $(e).find("canvas").css({
  53315. "top": 0,
  53316. "left": 0
  53317. });
  53318. });
  53319. }
  53320. },
  53321. scrollAdaptOfpostil: function() {
  53322. let _this = this;
  53323. let scrollTop = $("#luckysheet-cell-main").scrollTop();
  53324. let scrollLeft = $("#luckysheet-cell-main").scrollLeft();
  53325. if (_this.freezenhorizontaldata != null && _this.freezenverticaldata != null) {
  53326. let freezenTop = _this.freezenhorizontaldata[0];
  53327. let freezenLeft = _this.freezenverticaldata[0];
  53328. let offTop = scrollTop - _this.freezenhorizontaldata[2];
  53329. let offLeft = scrollLeft - _this.freezenverticaldata[2];
  53330. $("#luckysheet-postil-showBoxs .luckysheet-postil-show").each(function(i2, e) {
  53331. let id = $(e).attr("id");
  53332. let r2 = id.split("luckysheet-postil-show_")[1].split("_")[0];
  53333. let c2 = id.split("luckysheet-postil-show_")[1].split("_")[1];
  53334. let postil = store_default.flowdata[r2][c2].ps;
  53335. let row = store_default.visibledatarow[r2], row_pre = r2 - 1 == -1 ? 0 : store_default.visibledatarow[r2 - 1];
  53336. let col = store_default.visibledatacolumn[c2], col_pre = c2 - 1 == -1 ? 0 : store_default.visibledatacolumn[c2 - 1];
  53337. let margeset = menuButton_default.mergeborer(store_default.flowdata, r2, c2);
  53338. if (!!margeset) {
  53339. row = margeset.row[1];
  53340. row_pre = margeset.row[0];
  53341. col = margeset.column[1];
  53342. col_pre = margeset.column[0];
  53343. }
  53344. let toX = col;
  53345. let toY = row_pre;
  53346. let postil_left = postil["left"] == null ? toX + 18 : postil["left"];
  53347. let postil_top = postil["top"] == null ? toY - 18 : postil["top"];
  53348. let postil_width = postil["width"] == null ? postil_default.defaultWidth : postil["width"];
  53349. let postil_height = postil["height"] == null ? postil_default.defaultHeight : postil["height"];
  53350. if (postil_top < 0) {
  53351. postil_top = 2;
  53352. }
  53353. let size = postil_default.getArrowCanvasSize(postil_left, postil_top, toX, toY);
  53354. let show = true;
  53355. let show2 = true;
  53356. if (r2 >= _this.freezenhorizontaldata[1]) {
  53357. if (postil_top + postil_height < freezenTop) {
  53358. $(e).show().find(".luckysheet-postil-show-main").css("top", postil_top + offTop);
  53359. $(e).show().find(".arrowCanvas").css("top", size[1] + offTop);
  53360. } else {
  53361. if (postil_top < freezenTop + offTop) {
  53362. if (postil_top + postil_height <= freezenTop + offTop) {
  53363. show = false;
  53364. } else {
  53365. $(e).show().find(".luckysheet-postil-show-main").css({"top": freezenTop + offTop, "height": postil_height - (freezenTop + offTop - postil_top)});
  53366. $(e).show().find(".formulaInputFocus").css("margin-top", -(freezenTop + offTop - postil_top));
  53367. $(e).show().find(".arrowCanvas").hide();
  53368. show2 = false;
  53369. }
  53370. } else {
  53371. $(e).show().find(".luckysheet-postil-show-main").css({
  53372. "top": postil_top,
  53373. "height": postil_height
  53374. });
  53375. $(e).show().find(".formulaInputFocus").css("margin-top", 0);
  53376. $(e).show().find(".arrowCanvas").css("top", size[1]);
  53377. }
  53378. }
  53379. } else {
  53380. $(e).show().find(".luckysheet-postil-show-main").css("top", postil_top + offTop);
  53381. $(e).show().find(".arrowCanvas").css("top", size[1] + offTop);
  53382. }
  53383. if (c2 >= _this.freezenverticaldata[1]) {
  53384. if (postil_left + postil_width < freezenLeft) {
  53385. $(e).show().find(".luckysheet-postil-show-main").css("left", postil_left + offLeft);
  53386. $(e).show().find(".arrowCanvas").css("left", size[0] + offLeft);
  53387. } else {
  53388. if (postil_left < freezenLeft + offLeft) {
  53389. if (postil_left + postil_width <= freezenLeft + offLeft) {
  53390. show = false;
  53391. } else {
  53392. $(e).show().find(".luckysheet-postil-show-main").css({"left": freezenLeft + offLeft, "width": postil_width - (freezenLeft + offLeft - postil_left)});
  53393. $(e).show().find(".formulaInputFocus").css("margin-left", -(freezenLeft + offLeft - postil_left));
  53394. $(e).show().find(".arrowCanvas").hide();
  53395. show2 = false;
  53396. }
  53397. } else {
  53398. $(e).show().find(".luckysheet-postil-show-main").css({
  53399. "left": postil_left,
  53400. "width": postil_width
  53401. });
  53402. $(e).show().find(".formulaInputFocus").css("margin-left", 0);
  53403. $(e).show().find(".arrowCanvas").css("left", size[0]);
  53404. }
  53405. }
  53406. } else {
  53407. $(e).show().find(".luckysheet-postil-show-main").css("left", postil_left + offLeft);
  53408. $(e).show().find(".arrowCanvas").css("left", size[0] + offLeft);
  53409. }
  53410. if (!show) {
  53411. $(e).hide();
  53412. }
  53413. if (show && show2) {
  53414. $(e).show().find(".arrowCanvas").show();
  53415. }
  53416. });
  53417. } else if (_this.freezenhorizontaldata != null) {
  53418. let freezenTop = _this.freezenhorizontaldata[0];
  53419. let offTop = scrollTop - _this.freezenhorizontaldata[2];
  53420. $("#luckysheet-postil-showBoxs .luckysheet-postil-show").each(function(i2, e) {
  53421. let id = $(e).attr("id");
  53422. let r2 = id.split("luckysheet-postil-show_")[1].split("_")[0];
  53423. let c2 = id.split("luckysheet-postil-show_")[1].split("_")[1];
  53424. let postil = store_default.flowdata[r2][c2].ps;
  53425. let row = store_default.visibledatarow[r2], row_pre = r2 - 1 == -1 ? 0 : store_default.visibledatarow[r2 - 1];
  53426. let col = store_default.visibledatacolumn[c2], col_pre = c2 - 1 == -1 ? 0 : store_default.visibledatacolumn[c2 - 1];
  53427. let margeset = menuButton_default.mergeborer(store_default.flowdata, r2, c2);
  53428. if (!!margeset) {
  53429. row = margeset.row[1];
  53430. row_pre = margeset.row[0];
  53431. col = margeset.column[1];
  53432. col_pre = margeset.column[0];
  53433. }
  53434. let toX = col;
  53435. let toY = row_pre;
  53436. let postil_left = postil["left"] == null ? toX + 18 : postil["left"];
  53437. let postil_top = postil["top"] == null ? toY - 18 : postil["top"];
  53438. let postil_width = postil["width"] == null ? postil_default.defaultWidth : postil["width"];
  53439. let postil_height = postil["height"] == null ? postil_default.defaultHeight : postil["height"];
  53440. if (postil_top < 0) {
  53441. postil_top = 2;
  53442. }
  53443. let size = postil_default.getArrowCanvasSize(postil_left, postil_top, toX, toY);
  53444. if (r2 >= _this.freezenhorizontaldata[1]) {
  53445. if (postil_top + postil_height < freezenTop) {
  53446. $(e).show().find(".luckysheet-postil-show-main").css("top", postil_top + offTop);
  53447. $(e).show().find(".arrowCanvas").css("top", size[1] + offTop);
  53448. } else {
  53449. if (postil_top < freezenTop + offTop) {
  53450. if (postil_top + postil_height <= freezenTop + offTop) {
  53451. $(e).hide();
  53452. } else {
  53453. $(e).show().find(".luckysheet-postil-show-main").css({"top": freezenTop + offTop, "height": postil_height - (freezenTop + offTop - postil_top)});
  53454. $(e).show().find(".formulaInputFocus").css("margin-top", -(freezenTop + offTop - postil_top));
  53455. $(e).show().find(".arrowCanvas").hide();
  53456. }
  53457. } else {
  53458. postil_default.buildPs(r2, c2, postil);
  53459. }
  53460. }
  53461. } else {
  53462. $(e).show().find(".luckysheet-postil-show-main").css("top", postil_top + offTop);
  53463. $(e).show().find(".arrowCanvas").css("top", size[1] + offTop);
  53464. }
  53465. });
  53466. } else if (_this.freezenverticaldata != null) {
  53467. let freezenLeft = _this.freezenverticaldata[0];
  53468. let offLeft = scrollLeft - _this.freezenverticaldata[2];
  53469. $("#luckysheet-postil-showBoxs .luckysheet-postil-show").each(function(i2, e) {
  53470. let id = $(e).attr("id");
  53471. let r2 = id.split("luckysheet-postil-show_")[1].split("_")[0];
  53472. let c2 = id.split("luckysheet-postil-show_")[1].split("_")[1];
  53473. let postil = store_default.flowdata[r2][c2].ps;
  53474. let row = store_default.visibledatarow[r2], row_pre = r2 - 1 == -1 ? 0 : store_default.visibledatarow[r2 - 1];
  53475. let col = store_default.visibledatacolumn[c2], col_pre = c2 - 1 == -1 ? 0 : store_default.visibledatacolumn[c2 - 1];
  53476. let margeset = menuButton_default.mergeborer(store_default.flowdata, r2, c2);
  53477. if (!!margeset) {
  53478. row = margeset.row[1];
  53479. row_pre = margeset.row[0];
  53480. col = margeset.column[1];
  53481. col_pre = margeset.column[0];
  53482. }
  53483. let toX = col;
  53484. let toY = row_pre;
  53485. let postil_left = postil["left"] == null ? toX + 18 : postil["left"];
  53486. let postil_top = postil["top"] == null ? toY - 18 : postil["top"];
  53487. let postil_width = postil["width"] == null ? postil_default.defaultWidth : postil["width"];
  53488. let postil_height = postil["height"] == null ? postil_default.defaultHeight : postil["height"];
  53489. if (postil_top < 0) {
  53490. postil_top = 2;
  53491. }
  53492. let size = postil_default.getArrowCanvasSize(postil_left, postil_top, toX, toY);
  53493. if (c2 >= _this.freezenverticaldata[1]) {
  53494. if (postil_left + postil_width < freezenLeft) {
  53495. $(e).show().find(".luckysheet-postil-show-main").css("left", postil_left + offLeft);
  53496. $(e).show().find(".arrowCanvas").css("left", size[0] + offLeft);
  53497. } else {
  53498. if (postil_left < freezenLeft + offLeft) {
  53499. if (postil_left + postil_width <= freezenLeft + offLeft) {
  53500. $(e).hide();
  53501. } else {
  53502. $(e).show().find(".luckysheet-postil-show-main").css({"left": freezenLeft + offLeft, "width": postil_width - (freezenLeft + offLeft - postil_left)});
  53503. $(e).show().find(".formulaInputFocus").css("margin-left", -(freezenLeft + offLeft - postil_left));
  53504. $(e).show().find(".arrowCanvas").hide();
  53505. }
  53506. } else {
  53507. postil_default.buildPs(r2, c2, postil);
  53508. }
  53509. }
  53510. } else {
  53511. $(e).show().find(".luckysheet-postil-show-main").css("left", postil_left + offLeft);
  53512. $(e).show().find(".arrowCanvas").css("left", size[0] + offLeft);
  53513. }
  53514. });
  53515. } else {
  53516. $("#luckysheet-postil-showBoxs .luckysheet-postil-show").each(function(i2, e) {
  53517. let id = $(e).attr("id");
  53518. let r2 = id.split("luckysheet-postil-show_")[1].split("_")[0];
  53519. let c2 = id.split("luckysheet-postil-show_")[1].split("_")[1];
  53520. let postil = store_default.flowdata[r2][c2].ps;
  53521. postil_default.buildPs(r2, c2, postil);
  53522. });
  53523. }
  53524. },
  53525. scrollAdaptOfdpicon: function() {
  53526. let _this = this;
  53527. let copy_r = dropCell_default.copyRange["row"][1], copy_c = dropCell_default.copyRange["column"][1];
  53528. let apply_r = dropCell_default.applyRange["row"][1], apply_c = dropCell_default.applyRange["column"][1];
  53529. let row_index, col_index;
  53530. if (apply_r >= copy_r && apply_c >= copy_c) {
  53531. row_index = apply_r;
  53532. col_index = apply_c;
  53533. } else {
  53534. row_index = copy_r;
  53535. col_index = copy_c;
  53536. }
  53537. if (_this.freezenhorizontaldata != null && _this.freezenverticaldata != null) {
  53538. let freezen_rowindex = _this.freezenhorizontaldata[1];
  53539. let offsetRow = luckysheet_searcharray(_this.freezenhorizontaldata[3], $("#luckysheet-cell-main").scrollTop() - _this.freezenhorizontaldata[2]);
  53540. let freezen_colindex = _this.freezenverticaldata[1];
  53541. let offsetColumn = luckysheet_searcharray(_this.freezenverticaldata[3], $("#luckysheet-cell-main").scrollLeft() - _this.freezenverticaldata[2]);
  53542. if (row_index >= freezen_rowindex && col_index >= freezen_colindex) {
  53543. if (row_index < freezen_rowindex + offsetRow - 1 || col_index < freezen_colindex + offsetColumn - 1) {
  53544. $("#luckysheet-dropCell-icon").hide();
  53545. } else {
  53546. $("#luckysheet-dropCell-icon").show();
  53547. }
  53548. } else if (row_index >= freezen_rowindex) {
  53549. if (row_index < freezen_rowindex + offsetRow - 1) {
  53550. $("#luckysheet-dropCell-icon").hide();
  53551. } else {
  53552. let col = colLocationByIndex(col_index + offsetColumn)[1];
  53553. $("#luckysheet-dropCell-icon").show().css("left", col);
  53554. }
  53555. } else if (col_index >= freezen_colindex) {
  53556. if (col_index < freezen_colindex + offsetColumn - 1) {
  53557. $("#luckysheet-dropCell-icon").hide();
  53558. } else {
  53559. let row = rowLocationByIndex(row_index + offsetRow)[1];
  53560. $("#luckysheet-dropCell-icon").show().css("top", row);
  53561. }
  53562. } else {
  53563. let row = rowLocationByIndex(row_index + offsetRow)[1], col = colLocationByIndex(col_index + offsetColumn)[1];
  53564. $("#luckysheet-dropCell-icon").show().css({"left": col, "top": row});
  53565. }
  53566. } else if (_this.freezenhorizontaldata != null) {
  53567. let freezen_rowindex = _this.freezenhorizontaldata[1];
  53568. let offsetRow = luckysheet_searcharray(_this.freezenhorizontaldata[3], $("#luckysheet-cell-main").scrollTop() - _this.freezenhorizontaldata[2]);
  53569. if (row_index >= freezen_rowindex) {
  53570. if (row_index < freezen_rowindex + offsetRow - 1) {
  53571. $("#luckysheet-dropCell-icon").hide();
  53572. } else {
  53573. $("#luckysheet-dropCell-icon").show();
  53574. }
  53575. } else {
  53576. let row = rowLocationByIndex(row_index + offsetRow)[1];
  53577. $("#luckysheet-dropCell-icon").show().css("top", row);
  53578. }
  53579. } else if (_this.freezenverticaldata != null) {
  53580. let freezen_colindex = _this.freezenverticaldata[1];
  53581. let offsetColumn = luckysheet_searcharray(_this.freezenverticaldata[3], $("#luckysheet-cell-main").scrollLeft() - _this.freezenverticaldata[2]);
  53582. if (col_index >= freezen_colindex) {
  53583. if (col_index < freezen_colindex + offsetColumn - 1) {
  53584. $("#luckysheet-dropCell-icon").hide();
  53585. } else {
  53586. $("#luckysheet-dropCell-icon").show();
  53587. }
  53588. } else {
  53589. let col = colLocationByIndex(col_index + offsetColumn)[1];
  53590. $("#luckysheet-dropCell-icon").show().css("left", col);
  53591. }
  53592. } else {
  53593. let row = rowLocationByIndex(row_index)[1], col = colLocationByIndex(col_index)[1];
  53594. $("#luckysheet-dropCell-icon").show().css({"left": col, "top": row});
  53595. }
  53596. },
  53597. scrollAdaptOffilteroptions: function() {
  53598. let _this = this;
  53599. if (_this.freezenhorizontaldata != null && _this.freezenverticaldata != null) {
  53600. let freezen_rowindex = _this.freezenhorizontaldata[1];
  53601. let freezen_top = _this.freezenhorizontaldata[0] + $("#luckysheet-cell-main").scrollTop();
  53602. let freezen_colindex = _this.freezenverticaldata[1];
  53603. let offsetColumn = luckysheet_searcharray(_this.freezenverticaldata[3], $("#luckysheet-cell-main").scrollLeft() - _this.freezenverticaldata[2]);
  53604. $("#luckysheet-filter-options-sheet" + store_default.currentSheetIndex + " .luckysheet-filter-options").each(function(i2, e) {
  53605. let row_index = $(e).data("str");
  53606. let top = row_index - 1 == -1 ? 0 : store_default.visibledatarow[row_index - 1];
  53607. let col_index = $(e).data("cindex");
  53608. if (row_index >= freezen_rowindex && col_index >= freezen_colindex) {
  53609. if (top < freezen_top || col_index < freezen_colindex + offsetColumn) {
  53610. $(e).hide();
  53611. } else {
  53612. $(e).show();
  53613. }
  53614. } else if (row_index >= freezen_rowindex) {
  53615. if (top < freezen_top) {
  53616. $(e).hide();
  53617. } else {
  53618. let left = store_default.visibledatacolumn[col_index + offsetColumn] - 20;
  53619. $(e).show().css("left", left);
  53620. }
  53621. } else if (col_index >= freezen_colindex) {
  53622. if (col_index < freezen_colindex + offsetColumn) {
  53623. $(e).hide();
  53624. } else {
  53625. $(e).show().css("top", top + $("#luckysheet-cell-main").scrollTop());
  53626. }
  53627. } else {
  53628. let left = store_default.visibledatacolumn[col_index + offsetColumn] - 20;
  53629. $(e).show().css({"left": left, "top": top + $("#luckysheet-cell-main").scrollTop()});
  53630. }
  53631. });
  53632. } else if (_this.freezenhorizontaldata != null) {
  53633. let freezen_rowindex = _this.freezenhorizontaldata[1];
  53634. let freezen_top = _this.freezenhorizontaldata[0] + $("#luckysheet-cell-main").scrollTop();
  53635. $("#luckysheet-filter-options-sheet" + store_default.currentSheetIndex + " .luckysheet-filter-options").each(function(i2, e) {
  53636. let row_index = $(e).data("str");
  53637. let top = row_index - 1 == -1 ? 0 : store_default.visibledatarow[row_index - 1];
  53638. if (row_index >= freezen_rowindex) {
  53639. if (top < freezen_top) {
  53640. $(e).hide();
  53641. } else {
  53642. $(e).show();
  53643. }
  53644. } else {
  53645. $(e).show().css("top", top + $("#luckysheet-cell-main").scrollTop());
  53646. }
  53647. });
  53648. } else if (_this.freezenverticaldata != null) {
  53649. let freezen_colindex = _this.freezenverticaldata[1];
  53650. let offsetColumn = luckysheet_searcharray(_this.freezenverticaldata[3], $("#luckysheet-cell-main").scrollLeft() - _this.freezenverticaldata[2]);
  53651. $("#luckysheet-filter-options-sheet" + store_default.currentSheetIndex + " .luckysheet-filter-options").each(function(i2, e) {
  53652. let col_index = $(e).data("cindex");
  53653. if (col_index >= freezen_colindex) {
  53654. if (col_index < freezen_colindex + offsetColumn) {
  53655. $(e).hide();
  53656. } else {
  53657. $(e).show();
  53658. }
  53659. } else {
  53660. let left = store_default.visibledatacolumn[col_index + offsetColumn] - 20;
  53661. $(e).show().css("left", left);
  53662. }
  53663. });
  53664. } else {
  53665. $("#luckysheet-filter-options-sheet" + store_default.currentSheetIndex).empty();
  53666. createFilterOptions(store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)].filter_select);
  53667. }
  53668. },
  53669. saveFrozen: function(operate, order, focus = {}) {
  53670. if (order == null) {
  53671. order = getSheetIndex(store_default.currentSheetIndex);
  53672. }
  53673. const select_save = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1];
  53674. const row_focus = select_save["row_focus"] == null ? select_save["row"][0] : select_save["row_focus"];
  53675. const column_focus = select_save["column_focus"] == null ? select_save["column"][0] : select_save["column_focus"];
  53676. const range2 = {
  53677. row_focus: focus.row_focus || row_focus,
  53678. column_focus: focus.column_focus || column_focus
  53679. };
  53680. const frozen = {
  53681. "freezenRow": {
  53682. type: "row"
  53683. },
  53684. "freezenColumn": {
  53685. type: "column"
  53686. },
  53687. "freezenRC": {
  53688. type: "both"
  53689. },
  53690. "freezenRowRange": {
  53691. type: "rangeRow",
  53692. range: range2
  53693. },
  53694. "freezenColumnRange": {
  53695. type: "rangeColumn",
  53696. range: range2
  53697. },
  53698. "freezenRCRange": {
  53699. type: "rangeBoth",
  53700. range: range2
  53701. },
  53702. "freezenCancel": {
  53703. type: "cancel"
  53704. }
  53705. };
  53706. store_default.luckysheetfile[order]["frozen"] = frozen[operate];
  53707. },
  53708. frozenTofreezen: function() {
  53709. let file = store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)];
  53710. const frozen = file["frozen"];
  53711. if (frozen == null) {
  53712. return;
  53713. }
  53714. let freezen = null;
  53715. if (frozen.type === "row") {
  53716. let scrollTop = 0;
  53717. let row_st = luckysheet_searcharray(store_default.visibledatarow, scrollTop);
  53718. if (row_st == -1) {
  53719. row_st = 0;
  53720. }
  53721. let top = store_default.visibledatarow[row_st] - 2 - scrollTop + store_default.columnHeaderHeight;
  53722. let freezenhorizontaldata = [store_default.visibledatarow[row_st], row_st + 1, scrollTop, luckysheetFreezen.cutVolumn(store_default.visibledatarow, row_st + 1), top];
  53723. freezen = {
  53724. horizontal: {
  53725. freezenhorizontaldata,
  53726. top
  53727. }
  53728. };
  53729. } else if (frozen.type === "column") {
  53730. let scrollLeft = 0;
  53731. let col_st = luckysheet_searcharray(store_default.visibledatacolumn, scrollLeft);
  53732. if (col_st == -1) {
  53733. col_st = 0;
  53734. }
  53735. let left = store_default.visibledatacolumn[col_st] - 2 - scrollLeft + store_default.rowHeaderWidth;
  53736. let freezenverticaldata = [store_default.visibledatacolumn[col_st], col_st + 1, scrollLeft, luckysheetFreezen.cutVolumn(store_default.visibledatacolumn, col_st + 1), left];
  53737. freezen = {
  53738. vertical: {
  53739. freezenverticaldata,
  53740. left
  53741. }
  53742. };
  53743. } else if (frozen.type === "both") {
  53744. let scrollTop = 0;
  53745. let row_st = luckysheet_searcharray(store_default.visibledatarow, scrollTop);
  53746. if (row_st == -1) {
  53747. row_st = 0;
  53748. }
  53749. let top = store_default.visibledatarow[row_st] - 2 - scrollTop + store_default.columnHeaderHeight;
  53750. let freezenhorizontaldata = [store_default.visibledatarow[row_st], row_st + 1, scrollTop, luckysheetFreezen.cutVolumn(store_default.visibledatarow, row_st + 1), top];
  53751. let scrollLeft = 0;
  53752. let col_st = luckysheet_searcharray(store_default.visibledatacolumn, scrollLeft);
  53753. if (col_st == -1) {
  53754. col_st = 0;
  53755. }
  53756. let left = store_default.visibledatacolumn[col_st] - 2 - scrollLeft + store_default.rowHeaderWidth;
  53757. let freezenverticaldata = [store_default.visibledatacolumn[col_st], col_st + 1, scrollLeft, luckysheetFreezen.cutVolumn(store_default.visibledatacolumn, col_st + 1), left];
  53758. freezen = {
  53759. horizontal: {
  53760. freezenhorizontaldata,
  53761. top
  53762. },
  53763. vertical: {
  53764. freezenverticaldata,
  53765. left
  53766. }
  53767. };
  53768. } else if (frozen.type === "rangeRow") {
  53769. let scrollTop = 0;
  53770. let row_st = luckysheet_searcharray(store_default.visibledatarow, scrollTop);
  53771. let row_focus = frozen.range["row_focus"];
  53772. if (row_focus > row_st) {
  53773. row_st = row_focus;
  53774. }
  53775. if (row_st == -1) {
  53776. row_st = 0;
  53777. }
  53778. let top = store_default.visibledatarow[row_st] - 2 - scrollTop + store_default.columnHeaderHeight;
  53779. let freezenhorizontaldata = [store_default.visibledatarow[row_st], row_st + 1, scrollTop, luckysheetFreezen.cutVolumn(store_default.visibledatarow, row_st + 1), top];
  53780. freezen = {
  53781. horizontal: {
  53782. freezenhorizontaldata,
  53783. top
  53784. }
  53785. };
  53786. } else if (frozen.type === "rangeColumn") {
  53787. let scrollLeft = 0;
  53788. let col_st = luckysheet_searcharray(store_default.visibledatacolumn, scrollLeft);
  53789. let column_focus = frozen.range["column_focus"];
  53790. if (column_focus > col_st) {
  53791. col_st = column_focus;
  53792. }
  53793. if (col_st == -1) {
  53794. col_st = 0;
  53795. }
  53796. let left = store_default.visibledatacolumn[col_st] - 2 - scrollLeft + store_default.rowHeaderWidth;
  53797. let freezenverticaldata = [store_default.visibledatacolumn[col_st], col_st + 1, scrollLeft, luckysheetFreezen.cutVolumn(store_default.visibledatacolumn, col_st + 1), left];
  53798. freezen = {
  53799. vertical: {
  53800. freezenverticaldata,
  53801. left
  53802. }
  53803. };
  53804. } else if (frozen.type === "rangeBoth") {
  53805. let scrollTop = 0;
  53806. let row_st = luckysheet_searcharray(store_default.visibledatarow, scrollTop);
  53807. let row_focus = frozen.range["row_focus"];
  53808. if (row_focus > row_st) {
  53809. row_st = row_focus;
  53810. }
  53811. if (row_st == -1) {
  53812. row_st = 0;
  53813. }
  53814. let top = store_default.visibledatarow[row_st] - 2 - scrollTop + store_default.columnHeaderHeight;
  53815. let freezenhorizontaldata = [store_default.visibledatarow[row_st], row_st + 1, scrollTop, luckysheetFreezen.cutVolumn(store_default.visibledatarow, row_st + 1), top];
  53816. let scrollLeft = 0;
  53817. let col_st = luckysheet_searcharray(store_default.visibledatacolumn, scrollLeft);
  53818. let column_focus = frozen.range["column_focus"];
  53819. if (column_focus > col_st) {
  53820. col_st = column_focus;
  53821. }
  53822. if (col_st == -1) {
  53823. col_st = 0;
  53824. }
  53825. let left = store_default.visibledatacolumn[col_st] - 2 - scrollLeft + store_default.rowHeaderWidth;
  53826. let freezenverticaldata = [store_default.visibledatacolumn[col_st], col_st + 1, scrollLeft, luckysheetFreezen.cutVolumn(store_default.visibledatacolumn, col_st + 1), left];
  53827. freezen = {
  53828. horizontal: {
  53829. freezenhorizontaldata,
  53830. top
  53831. },
  53832. vertical: {
  53833. freezenverticaldata,
  53834. left
  53835. }
  53836. };
  53837. } else if (frozen.type === "cancel") {
  53838. freezen = {
  53839. horizontal: null,
  53840. vertical: null
  53841. };
  53842. }
  53843. file["freezen"] = freezen;
  53844. }
  53845. };
  53846. freezen_default = luckysheetFreezen;
  53847. }
  53848. });
  53849. // src/controllers/resize.js
  53850. function luckysheetsizeauto(isRefreshCanvas = true) {
  53851. if (!luckysheetConfigsetting_default.showinfobar) {
  53852. store_default.infobarHeight = 0;
  53853. $("#luckysheet_info_detail").hide();
  53854. } else {
  53855. $("#luckysheet_info_detail").show();
  53856. store_default.infobarHeight = document.querySelector("#luckysheet_info_detail").offsetHeight;
  53857. }
  53858. if (!!store_default.toobarObject && !!store_default.toobarObject.toobarElements && store_default.toobarObject.toobarElements.length === 0) {
  53859. $("#" + store_default.container).find(".luckysheet-wa-editor").hide();
  53860. store_default.toolbarHeight = 0;
  53861. } else {
  53862. $("#" + store_default.container).find(".luckysheet-wa-editor").show();
  53863. store_default.toolbarHeight = document.querySelector("#" + store_default.container + " .luckysheet-wa-editor").offsetHeight;
  53864. }
  53865. customSheetbarConfig();
  53866. customStatisticBarConfig();
  53867. const formulaEle = document.querySelector("#" + store_default.container + " .luckysheet-wa-calculate");
  53868. if (!luckysheetConfigsetting_default.sheetFormulaBar) {
  53869. formulaEle.style.display = "none";
  53870. store_default.calculatebarHeight = 0;
  53871. } else {
  53872. formulaEle.style.display = "block";
  53873. store_default.calculatebarHeight = formulaEle.offsetHeight;
  53874. }
  53875. $("#" + store_default.container).find(".luckysheet-grid-container").css("top", store_default.toolbarHeight + store_default.infobarHeight + store_default.calculatebarHeight);
  53876. gridW = $("#" + store_default.container).width();
  53877. if (luckysheetConfigsetting_default.showConfigWindowResize) {
  53878. if ($("#luckysheet-modal-dialog-slider-pivot").is(":visible")) {
  53879. gridW -= $("#luckysheet-modal-dialog-slider-pivot").outerWidth();
  53880. } else if ($(".chartSetting").is(":visible")) {
  53881. gridW -= $(".chartSetting").outerWidth();
  53882. } else if ($("#luckysheet-modal-dialog-slider-alternateformat").is(":visible")) {
  53883. gridW -= $("#luckysheet-modal-dialog-slider-alternateformat").outerWidth();
  53884. }
  53885. if ($("#luckysheet-modal-dialog-slider-protection").is(":visible")) {
  53886. gridW -= $("#luckysheet-modal-dialog-slider-protection").outerWidth();
  53887. }
  53888. }
  53889. const _locale = locale_default();
  53890. const locale_toolbar = _locale.toolbar;
  53891. let ismore = false, toolbarW = 0, morebtn = `<div class="luckysheet-toolbar-button luckysheet-inline-block" data-tips="${locale_toolbar.toolMoreTip}" id="luckysheet-icon-morebtn" role="button" style="user-select: none;">
  53892. <div class="luckysheet-toolbar-button-outer-box luckysheet-inline-block" style="user-select: none;">
  53893. <div class="luckysheet-toolbar-button-inner-box luckysheet-inline-block" style="user-select: none;">
  53894. <div class="luckysheet-toolbar-menu-button-caption luckysheet-inline-block" style="user-select: none;">
  53895. ${locale_toolbar.toolMore}
  53896. </div>
  53897. <div class="luckysheet-toolbar-menu-button-dropdown luckysheet-inline-block iconfont luckysheet-iconfont-xiayige" style="user-select: none;font-size:12px;">
  53898. </div>
  53899. </div>
  53900. </div>
  53901. </div>`, morediv = '<div id="luckysheet-icon-morebtn-div" class="luckysheet-wa-editor" style="position:absolute;top:' + (store_default.infobarHeight + store_default.toolbarHeight + $("#" + store_default.container).offset().top + $("body").scrollTop()) + 'px;right:0px;z-index:1003;padding:5.5px;visibility:hidden;height:auto;white-space:initial;"></div>';
  53902. if ($("#luckysheet-icon-morebtn-div").length == 0) {
  53903. $("body").append(morediv);
  53904. }
  53905. $$("#luckysheet-icon-morebtn-div").style.visibility = "hidden";
  53906. $("#luckysheet-icon-morebtn-div > div").each(function() {
  53907. const $t = $(this)[0];
  53908. const $container = $("#luckysheet-wa-editor")[0];
  53909. $container.appendChild(document.createTextNode(" "));
  53910. $container.appendChild($t);
  53911. });
  53912. $("#luckysheet-icon-morebtn").remove();
  53913. const toobarWidths = store_default.toobarObject.toobarWidths;
  53914. const toobarElements = store_default.toobarObject.toobarElements;
  53915. let moreButtonIndex = 0;
  53916. if (toobarWidths == void 0) {
  53917. return;
  53918. }
  53919. for (let index2 = toobarWidths.length - 1; index2 >= 0; index2--) {
  53920. if (toobarWidths[index2] < gridW - 90) {
  53921. moreButtonIndex = index2;
  53922. if (moreButtonIndex < toobarWidths.length - 1) {
  53923. ismore = true;
  53924. }
  53925. break;
  53926. }
  53927. }
  53928. for (let index2 = moreButtonIndex; index2 < toobarElements.length; index2++) {
  53929. const element = toobarElements[index2];
  53930. if (element instanceof Array) {
  53931. for (const ele of element) {
  53932. $("#luckysheet-icon-morebtn-div").append($(`${ele}`));
  53933. }
  53934. } else {
  53935. $("#luckysheet-icon-morebtn-div").append($(`${element}`));
  53936. }
  53937. }
  53938. if (ismore) {
  53939. $("#luckysheet-wa-editor").append(morebtn);
  53940. $("#luckysheet-icon-morebtn").click(function() {
  53941. $$("#luckysheet-icon-morebtn-div").style.left = "";
  53942. const containerLeft = $$(`#${store_default.container}`).getBoundingClientRect ? $$(`#${store_default.container}`).getBoundingClientRect().left : 0;
  53943. const morebtnLeft = $$("#luckysheet-icon-morebtn-div").getBoundingClientRect().left;
  53944. if (morebtnLeft < containerLeft) {
  53945. $$("#luckysheet-icon-morebtn-div").style.left = containerLeft + "px";
  53946. }
  53947. let right = $(window).width() - $("#luckysheet-icon-morebtn").offset().left - $("#luckysheet-icon-morebtn").width() + $("body").scrollLeft();
  53948. $$("#luckysheet-icon-morebtn-div").style.right = right < 0 ? 0 : right + "px";
  53949. if ($$("#luckysheet-icon-morebtn-div").style.visibility === "hidden") {
  53950. $$("#luckysheet-icon-morebtn-div").style.visibility = "visible";
  53951. } else {
  53952. $$("#luckysheet-icon-morebtn-div").style.visibility = "hidden";
  53953. }
  53954. let $txt = $(this).find(".luckysheet-toolbar-menu-button-caption");
  53955. if ($txt.text().indexOf(locale_toolbar.toolMore) > -1) {
  53956. const toolCloseHTML = `
  53957. <div class="luckysheet-toolbar-menu-button-caption luckysheet-inline-block" style="user-select: none;">
  53958. ${locale_toolbar.toolClose}
  53959. </div>
  53960. <div class="luckysheet-toolbar-menu-button-dropdown luckysheet-inline-block iconfont luckysheet-iconfont-shangyige" style="user-select: none;font-size:12px;">
  53961. </div>
  53962. `;
  53963. $(this).find(".luckysheet-toolbar-button-inner-box").html(toolCloseHTML);
  53964. } else {
  53965. const toolMoreHTML = `
  53966. <div class="luckysheet-toolbar-menu-button-caption luckysheet-inline-block" style="user-select: none;">
  53967. ${locale_toolbar.toolMore}
  53968. </div>
  53969. <div class="luckysheet-toolbar-menu-button-dropdown luckysheet-inline-block iconfont luckysheet-iconfont-xiayige" style="user-select: none;font-size:12px;">
  53970. </div>
  53971. `;
  53972. $(this).find(".luckysheet-toolbar-button-inner-box").html(toolMoreHTML);
  53973. }
  53974. });
  53975. $("#luckysheet-icon-morebtn-div .luckysheet-toolbar-button-split-left").off("hover").hover(function() {
  53976. $(this).next(".luckysheet-toolbar-button-split-right").addClass("luckysheet-toolbar-button-split-right-hover");
  53977. }, function() {
  53978. $(this).next(".luckysheet-toolbar-button-split-right").removeClass("luckysheet-toolbar-button-split-right-hover");
  53979. });
  53980. $("#luckysheet-icon-morebtn-div .luckysheet-toolbar-button-split-right").off("hover").hover(function() {
  53981. $(this).prev(".luckysheet-toolbar-button-split-left").addClass("luckysheet-toolbar-button-hover");
  53982. }, function() {
  53983. $(this).prev(".luckysheet-toolbar-button-split-left").removeClass("luckysheet-toolbar-button-hover");
  53984. });
  53985. tooltip_default.createHoverTip("#luckysheet-icon-morebtn-div", ".luckysheet-toolbar-menu-button, .luckysheet-toolbar-button, .luckysheet-toolbar-combo-button");
  53986. }
  53987. $("#" + store_default.container + " .luckysheet-wa-editor .luckysheet-toolbar-button-split-left").off("hover").hover(function() {
  53988. $(this).next(".luckysheet-toolbar-button-split-right").addClass("luckysheet-toolbar-button-split-right-hover");
  53989. }, function() {
  53990. $(this).next(".luckysheet-toolbar-button-split-right").removeClass("luckysheet-toolbar-button-split-right-hover");
  53991. });
  53992. $("#" + store_default.container + " .luckysheet-wa-editor .luckysheet-toolbar-button-split-right").off("hover").hover(function() {
  53993. $(this).prev(".luckysheet-toolbar-button-split-left").addClass("luckysheet-toolbar-button-hover");
  53994. }, function() {
  53995. $(this).prev(".luckysheet-toolbar-button-split-left").removeClass("luckysheet-toolbar-button-hover");
  53996. });
  53997. gridH = $("#" + store_default.container).height();
  53998. $("#" + store_default.container).find(".luckysheet").height(gridH - 2).width(gridW - 2);
  53999. changeSheetContainerSize(gridW, gridH);
  54000. if (isRefreshCanvas) {
  54001. luckysheetrefreshgrid($("#luckysheet-cell-main").scrollLeft(), $("#luckysheet-cell-main").scrollTop());
  54002. }
  54003. sheetmanage_default.sheetArrowShowAndHide();
  54004. sheetmanage_default.sheetBarShowAndHide();
  54005. }
  54006. function changeSheetContainerSize(gridW2, gridH2) {
  54007. if (gridW2 == null) {
  54008. gridW2 = $("#" + store_default.container).width();
  54009. }
  54010. if (gridH2 == null) {
  54011. gridH2 = $("#" + store_default.container).height();
  54012. }
  54013. store_default.cellmainHeight = gridH2 - (store_default.infobarHeight + store_default.toolbarHeight + store_default.calculatebarHeight + store_default.columnHeaderHeight + store_default.sheetBarHeight + store_default.statisticBarHeight);
  54014. store_default.cellmainWidth = gridW2 - store_default.rowHeaderWidth;
  54015. $("#luckysheet-cols-h-c, #luckysheet-cell-main").width(store_default.cellmainWidth);
  54016. $("#luckysheet-cell-main").height(store_default.cellmainHeight);
  54017. $("#luckysheet-rows-h").height(store_default.cellmainHeight - store_default.cellMainSrollBarSize);
  54018. $("#luckysheet-scrollbar-y").height(store_default.cellmainHeight + store_default.columnHeaderHeight - store_default.cellMainSrollBarSize - 3);
  54019. $("#luckysheet-scrollbar-x").height(store_default.cellMainSrollBarSize);
  54020. $("#luckysheet-scrollbar-y").width(store_default.cellMainSrollBarSize);
  54021. $("#luckysheet-scrollbar-x").width(store_default.cellmainWidth).css("left", store_default.rowHeaderWidth - 2);
  54022. store_default.luckysheetTableContentHW = [
  54023. store_default.cellmainWidth + store_default.rowHeaderWidth - store_default.cellMainSrollBarSize,
  54024. store_default.cellmainHeight + store_default.columnHeaderHeight - store_default.cellMainSrollBarSize
  54025. ];
  54026. $("#luckysheetTableContent, #luckysheetTableContentF").attr({
  54027. width: Math.ceil(store_default.luckysheetTableContentHW[0] * store_default.devicePixelRatio),
  54028. height: Math.ceil(store_default.luckysheetTableContentHW[1] * store_default.devicePixelRatio)
  54029. }).css({width: store_default.luckysheetTableContentHW[0], height: store_default.luckysheetTableContentHW[1]});
  54030. $("#" + store_default.container).find("#luckysheet-grid-window-1").css("bottom", store_default.sheetBarHeight);
  54031. $("#" + store_default.container).find(".luckysheet-grid-window").css("bottom", store_default.statisticBarHeight);
  54032. let gridwidth = $("#luckysheet-grid-window-1").width();
  54033. $("#luckysheet-freezebar-horizontal").find(".luckysheet-freezebar-horizontal-handle").css({"width": gridwidth - 10}).end().find(".luckysheet-freezebar-horizontal-drop").css({"width": gridwidth - 10});
  54034. let gridheight = $("#luckysheet-grid-window-1").height();
  54035. $("#luckysheet-freezebar-vertical").find(".luckysheet-freezebar-vertical-handle").css({"height": gridheight - 10}).end().find(".luckysheet-freezebar-vertical-drop").css({"height": gridheight - 10});
  54036. freezen_default.createAssistCanvas();
  54037. }
  54038. function menuToolBarWidth() {
  54039. const showtoolbar = luckysheetConfigsetting_default.showtoolbar;
  54040. const showtoolbarConfig = luckysheetConfigsetting_default.showtoolbarConfig;
  54041. const toobarWidths = store_default.toobarObject.toobarWidths = [];
  54042. const toobarElements = store_default.toobarObject.toobarElements = [];
  54043. const toolbarConfig = store_default.toobarObject.toolbarConfig = buildBoolBarConfig();
  54044. function buildBoolBarConfig() {
  54045. let obj = {};
  54046. function array2Config(arr) {
  54047. const obj2 = {};
  54048. let current, next;
  54049. let index2 = 0;
  54050. for (let i2 = 0; i2 < arr.length; i2++) {
  54051. current = arr[i2];
  54052. next = arr[i2 + 1];
  54053. if (current !== "|") {
  54054. obj2[current] = {
  54055. ele: toolbarIdMap[current],
  54056. index: index2++
  54057. };
  54058. }
  54059. if (next === "|") {
  54060. if (getObjType(obj2[current].ele) === "array") {
  54061. obj2[current].ele.push(`#toolbar-separator-${camel2split(current)}`);
  54062. } else {
  54063. obj2[current].ele = [obj2[current].ele, `#toolbar-separator-${camel2split(current)}`];
  54064. }
  54065. }
  54066. }
  54067. return obj2;
  54068. }
  54069. if (getObjType(showtoolbarConfig) === "array") {
  54070. if (!showtoolbar) {
  54071. return obj;
  54072. }
  54073. return array2Config(showtoolbarConfig);
  54074. }
  54075. const config = defaultToolbar.reduce(function(total, curr) {
  54076. if (curr !== "|") {
  54077. total[curr] = true;
  54078. }
  54079. return total;
  54080. }, {});
  54081. if (!showtoolbar) {
  54082. for (let s in config) {
  54083. config[s] = false;
  54084. }
  54085. }
  54086. if (JSON.stringify(showtoolbarConfig) !== "{}") {
  54087. if (showtoolbarConfig.hasOwnProperty("undoRedo")) {
  54088. config.undo = config.redo = showtoolbarConfig.undoRedo;
  54089. }
  54090. Object.assign(config, showtoolbarConfig);
  54091. let current, next;
  54092. let index2 = 0;
  54093. for (let i2 = 0; i2 < defaultToolbar.length; i2++) {
  54094. current = defaultToolbar[i2];
  54095. next = defaultToolbar[i2 + 1];
  54096. if (config[current] === false) {
  54097. continue;
  54098. }
  54099. if (current !== "|" && config[current]) {
  54100. obj[current] = {
  54101. ele: toolbarIdMap[current],
  54102. index: index2++
  54103. };
  54104. }
  54105. if (next === "|") {
  54106. if (getObjType(obj[current].ele) === "array") {
  54107. obj[current].ele.push(`#toolbar-separator-${camel2split(current)}`);
  54108. } else {
  54109. obj[current].ele = [obj[current].ele, `#toolbar-separator-${camel2split(current)}`];
  54110. }
  54111. }
  54112. }
  54113. } else {
  54114. obj = showtoolbar ? array2Config(defaultToolbar) : {};
  54115. }
  54116. return obj;
  54117. }
  54118. for (let s in toolbarConfig) {
  54119. if (Object.prototype.hasOwnProperty.call(toolbarConfig, s)) {
  54120. toobarElements.push($.extend(true, {}, toolbarConfig[s]));
  54121. }
  54122. }
  54123. toobarElements.sort(sortToolbar);
  54124. function sortToolbar(a, b) {
  54125. if (a.index > b.index) {
  54126. return 1;
  54127. } else {
  54128. return -1;
  54129. }
  54130. }
  54131. toobarElements.forEach((curr, index2, arr) => {
  54132. arr[index2] = curr.ele;
  54133. if (index2 !== toobarElements.length - 1) {
  54134. if (curr.ele instanceof Array) {
  54135. toobarWidths.push($(curr.ele[0]).offset().left);
  54136. } else {
  54137. toobarWidths.push($(curr.ele).offset().left);
  54138. }
  54139. } else {
  54140. if (curr.ele instanceof Array) {
  54141. toobarWidths.push($(curr.ele[0]).offset().left);
  54142. toobarWidths.push($(curr.ele[0]).offset().left + $(curr.ele[0]).outerWidth() + 5);
  54143. } else {
  54144. toobarWidths.push($(curr.ele).offset().left);
  54145. toobarWidths.push($(curr.ele).offset().left + $(curr.ele).outerWidth() + 5);
  54146. }
  54147. }
  54148. });
  54149. const containerLeft = $("#" + store_default.container).offset().left;
  54150. toobarWidths.forEach((item2, i2) => {
  54151. toobarWidths[i2] -= containerLeft;
  54152. });
  54153. }
  54154. function customSheetbarConfig() {
  54155. if (!luckysheetConfigsetting_default.initShowsheetbarConfig) {
  54156. luckysheetConfigsetting_default.initShowsheetbarConfig = true;
  54157. const config2 = {
  54158. add: true,
  54159. menu: true,
  54160. sheet: true
  54161. };
  54162. if (!luckysheetConfigsetting_default.showsheetbar) {
  54163. for (let s in config2) {
  54164. config2[s] = false;
  54165. }
  54166. }
  54167. if (JSON.stringify(luckysheetConfigsetting_default.showsheetbarConfig) !== "{}") {
  54168. Object.assign(config2, luckysheetConfigsetting_default.showsheetbarConfig);
  54169. }
  54170. luckysheetConfigsetting_default.showsheetbarConfig = config2;
  54171. }
  54172. const config = luckysheetConfigsetting_default.showsheetbarConfig;
  54173. let isHide = 0;
  54174. for (let s in config) {
  54175. if (!config[s]) {
  54176. switch (s) {
  54177. case "add":
  54178. $("#luckysheet-sheets-add").hide();
  54179. isHide++;
  54180. break;
  54181. case "menu":
  54182. $("#luckysheet-sheets-m").hide();
  54183. isHide++;
  54184. break;
  54185. case "sheet":
  54186. $("#luckysheet-sheet-container").hide();
  54187. $("#luckysheet-sheets-leftscroll").hide();
  54188. $("#luckysheet-sheets-rightscroll").hide();
  54189. isHide++;
  54190. break;
  54191. default:
  54192. break;
  54193. }
  54194. }
  54195. }
  54196. if (isHide === 3) {
  54197. $("#" + store_default.container).find("#luckysheet-sheet-area").hide();
  54198. store_default.sheetBarHeight = 0;
  54199. } else {
  54200. $("#" + store_default.container).find("#luckysheet-sheet-area").show();
  54201. store_default.sheetBarHeight = 31;
  54202. }
  54203. }
  54204. function customStatisticBarConfig() {
  54205. if (!luckysheetConfigsetting_default.initStatisticBarConfig) {
  54206. luckysheetConfigsetting_default.initStatisticBarConfig = true;
  54207. const config2 = {
  54208. count: true,
  54209. view: true,
  54210. zoom: true
  54211. };
  54212. if (!luckysheetConfigsetting_default.showstatisticBar) {
  54213. for (let s in config2) {
  54214. config2[s] = false;
  54215. }
  54216. }
  54217. if (JSON.stringify(luckysheetConfigsetting_default.showstatisticBarConfig) !== "{}") {
  54218. Object.assign(config2, luckysheetConfigsetting_default.showstatisticBarConfig);
  54219. }
  54220. luckysheetConfigsetting_default.showstatisticBarConfig = config2;
  54221. }
  54222. const config = luckysheetConfigsetting_default.showstatisticBarConfig;
  54223. let isHide = 0;
  54224. for (let s in config) {
  54225. if (!config[s]) {
  54226. switch (s) {
  54227. case "count":
  54228. $("#luckysheet-sta-content").hide();
  54229. isHide++;
  54230. break;
  54231. case "view":
  54232. $(".luckysheet-print-viewList").hide();
  54233. isHide++;
  54234. break;
  54235. case "zoom":
  54236. $("#luckysheet-zoom-content").hide();
  54237. isHide++;
  54238. break;
  54239. default:
  54240. break;
  54241. }
  54242. }
  54243. }
  54244. if (isHide === 3) {
  54245. $("#" + store_default.container).find(".luckysheet-stat-area").hide();
  54246. store_default.statisticBarHeight = 0;
  54247. } else {
  54248. $("#" + store_default.container).find(".luckysheet-stat-area").show();
  54249. store_default.statisticBarHeight = 23;
  54250. }
  54251. }
  54252. var gridW, gridH;
  54253. var init_resize = __esm({
  54254. "src/controllers/resize.js"() {
  54255. init_luckysheetConfigsetting();
  54256. init_freezen();
  54257. init_refresh();
  54258. init_store();
  54259. init_locale();
  54260. init_sheetmanage();
  54261. init_tooltip();
  54262. init_util();
  54263. init_toolbar();
  54264. gridW = 0;
  54265. gridH = 0;
  54266. }
  54267. });
  54268. // src/controllers/protection.js
  54269. function addRangeItem(item2) {
  54270. const _locale = locale_default();
  54271. const local_protection = _locale.protection;
  54272. const locale_button = _locale.button;
  54273. let title = item2.name, sqref = item2.sqref, password = item2.password;
  54274. let passwordTxt = "";
  54275. if (password != null && password.length > 0) {
  54276. passwordTxt = '<i class="icon iconfont luckysheet-iconfont-bianji2" title="' + local_protection.rangeItemHasPassword + '"></i>';
  54277. }
  54278. let rangeItemTemplate = `
  54279. <div class="luckysheet-protection-rangeItem" title="${local_protection.rangeItemDblclick}">
  54280. <div class="luckysheet-protection-rangeItem-del" title="${locale_button.delete}">
  54281. <i class="icon iconfont luckysheet-iconfont-shanchu"></i>
  54282. </div>
  54283. <div class="luckysheet-protection-rangeItem-name" title="${title}">
  54284. ${title}${passwordTxt}
  54285. </div>
  54286. <div class="luckysheet-protection-rangeItem-range" title="${sqref}">
  54287. ${sqref}
  54288. </div>
  54289. <div class="luckysheet-protection-rangeItem-update" title="${locale_button.update}">
  54290. <i class="icon iconfont luckysheet-iconfont-bianji"></i>
  54291. </div>
  54292. </div>
  54293. `;
  54294. $("#luckysheet-protection-rangeItem-container").append(rangeItemTemplate);
  54295. }
  54296. function initialEvent(file) {
  54297. const _locale = locale_default();
  54298. const local_protection = _locale.protection;
  54299. const locale_button = _locale.button;
  54300. $("#luckysheet-slider-protection-ok").click(function() {
  54301. let password = $("#protection-password").val();
  54302. let sheet = $("#protection-swichProtectionState").is(":checked");
  54303. let hint = $("#protection-hint").val();
  54304. let file2 = updatingSheetFile, aut = {};
  54305. if (file2 != null && file2.config != null && file2.config.authority != null) {
  54306. aut = file2.config.authority;
  54307. }
  54308. let authorityData = {};
  54309. let algorithmName = "None";
  54310. if (password != "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022") {
  54311. authorityData.password = password;
  54312. authorityData.algorithmName = "None";
  54313. authorityData.saltValue = null;
  54314. } else if (aut != null) {
  54315. authorityData.algorithmName = aut.algorithmName;
  54316. authorityData.saltValue = aut.saltValue;
  54317. authorityData.password = aut.password;
  54318. } else {
  54319. authorityData.algorithmName = "None";
  54320. authorityData.saltValue = null;
  54321. authorityData.password = "";
  54322. }
  54323. authorityData.hintText = hint;
  54324. authorityData.sheet = sheet == true ? 1 : 0;
  54325. for (let i2 = 0; i2 < authorityItemArr.length; i2++) {
  54326. let name2 = authorityItemArr[i2];
  54327. let checkId = "luckysheet-protection-check-" + name2;
  54328. let authorityValue = $("#" + checkId).is(":checked");
  54329. authorityData[name2] = authorityValue == true ? 1 : 0;
  54330. }
  54331. authorityData.allowRangeList = rangeItemListCache;
  54332. rangeItemListCache = [];
  54333. firstInputSheetProtectionPassword = true;
  54334. if (file2.config == null) {
  54335. file2.config = {};
  54336. }
  54337. file2.config.authority = authorityData;
  54338. inputRangeProtectionPassword = {};
  54339. closeProtectionModal();
  54340. });
  54341. $("#luckysheet-slider-protection-cancel, #luckysheet-modal-dialog-protection-close").click(function() {
  54342. closeProtectionModal();
  54343. });
  54344. $("#luckysheet-slider-protection-addRange").click(function() {
  54345. initialProtectionRangeModal();
  54346. isAddRangeItemState = true;
  54347. $("#luckysheet-protection-rangeItem-confirm").html(locale_button.insert);
  54348. openSelfModel("luckysheet-protection-rangeItem-dialog");
  54349. $("#protection-allowRangeAdd-title").val("Default" + rangeItemListCache.length);
  54350. $("#protection-allowRangeAdd-range input").val("");
  54351. $("#protection-allowRangeAdd-password").val("");
  54352. $("#protection-allowRangeAdd-hint").val("");
  54353. });
  54354. $(document).off("click.luckysheetProtection.rangeItemUpdate").on("click.luckysheetProtection.rangeItemUpdate", "#luckysheet-protection-rangeItem-container .luckysheet-protection-rangeItem-update", function(e) {
  54355. initialProtectionRangeModal();
  54356. isAddRangeItemState = false;
  54357. $("#luckysheet-protection-rangeItem-confirm").html(locale_button.update);
  54358. openSelfModel("luckysheet-protection-rangeItem-dialog");
  54359. let $rangeItem = $(e.target).closest(".luckysheet-protection-rangeItem");
  54360. let $rangeItemContainer = $("#luckysheet-protection-rangeItem-container");
  54361. let index2 = $rangeItemContainer.find("> div.luckysheet-protection-rangeItem").index($rangeItem);
  54362. let item2 = rangeItemListCache[index2];
  54363. updateRangeItemIndex = index2;
  54364. $("#protection-allowRangeAdd-title").val(item2.name);
  54365. $("#protection-allowRangeAdd-range input").val(item2.sqref);
  54366. if (item2.algorithmName == "None") {
  54367. $("#protection-allowRangeAdd-password").val(item2.password);
  54368. } else {
  54369. $("#protection-allowRangeAdd-password").val("\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022");
  54370. }
  54371. $("#protection-allowRangeAdd-hint").val(item2.hintText);
  54372. });
  54373. $(document).off("click.luckysheetProtection.rangeItemDelete").on("click.luckysheetProtection.rangeItemDelete", "#luckysheet-protection-rangeItem-container .luckysheet-protection-rangeItem-del", function(e) {
  54374. let $rangeItem = $(e.target).closest(".luckysheet-protection-rangeItem");
  54375. let $rangeItemContainer = $("#luckysheet-protection-rangeItem-container");
  54376. let index2 = $rangeItemContainer.find("> div.luckysheet-protection-rangeItem").index($rangeItem);
  54377. let item2 = rangeItemListCache[index2];
  54378. rangeItemListCache.splice(index2, 1);
  54379. $rangeItem.remove();
  54380. });
  54381. $(document).off("click.luckysheetProtection.rangeItemConfirm").on("click.luckysheetProtection.rangeItemConfirm", "#luckysheet-protection-rangeItem-confirm", function() {
  54382. let name2 = $("#protection-allowRangeAdd-title").val(), rangeText = $("#protection-allowRangeAdd-range input").val(), password = $("#protection-allowRangeAdd-password").val(), hint = $("#protection-allowRangeAdd-hint").val();
  54383. if (name2.length == 0) {
  54384. alert(local_protection.rangeItemErrorTitleNull);
  54385. return;
  54386. }
  54387. let range2 = dataVerificationCtrl_default.getRangeByTxt(rangeText);
  54388. if (rangeText.length == 0) {
  54389. alert(local_protection.rangeItemErrorRangeNull);
  54390. return;
  54391. }
  54392. if (range2.length == 0) {
  54393. alert(local_protection.rangeItemErrorRange);
  54394. return;
  54395. }
  54396. rangeText = transformRangeToAbsolute(rangeText);
  54397. if (isAddRangeItemState) {
  54398. let item2 = {
  54399. name: name2,
  54400. password,
  54401. hintText: hint,
  54402. algorithmName: "None",
  54403. saltValue: null,
  54404. checkRangePasswordUrl: null,
  54405. sqref: rangeText
  54406. };
  54407. addRangeItem(item2);
  54408. rangeItemListCache.push(item2);
  54409. } else {
  54410. let index2 = updateRangeItemIndex;
  54411. let item2 = rangeItemListCache[index2];
  54412. item2.name = name2;
  54413. item2.sqref = rangeText;
  54414. item2.hintText = hint;
  54415. if (password != "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022") {
  54416. item2.password = password;
  54417. item2.algorithmName = "None";
  54418. }
  54419. let $rangeItemContainer = $("#luckysheet-protection-rangeItem-container");
  54420. let $rangeitem = $rangeItemContainer.find("> div.luckysheet-protection-rangeItem").eq(index2);
  54421. let $name = $rangeitem.find(".luckysheet-protection-rangeItem-name");
  54422. let passwordTxt = "";
  54423. if (password != null && password.length > 0) {
  54424. passwordTxt = '<i class="icon iconfont luckysheet-iconfont-bianji2" title="' + local_protection.rangeItemHasPassword + '"></i>';
  54425. }
  54426. $name.html(name2 + passwordTxt).attr("title", name2);
  54427. let $range = $rangeitem.find(".luckysheet-protection-rangeItem-range");
  54428. $range.html(rangeText).attr("title", rangeText);
  54429. }
  54430. $("#luckysheet-protection-rangeItem-dialog").hide();
  54431. $("#luckysheet-modal-dialog-mask").hide();
  54432. });
  54433. $(document).off("click.luckysheetProtection.validationConfirm").on("click.luckysheetProtection.validationConfirm", "#luckysheet-protection-sheet-validation-confirm", function(e) {
  54434. let $validation = $("#luckysheet-protection-sheet-validation");
  54435. let aut = validationAuthority;
  54436. if (aut == null) {
  54437. restoreProtectionConfig(validationAuthority);
  54438. $validation.hide();
  54439. $("#luckysheet-modal-dialog-mask").hide();
  54440. $("#luckysheet-modal-dialog-slider-protection").show();
  54441. luckysheetsizeauto();
  54442. return;
  54443. }
  54444. let $input = $validation.find("input");
  54445. let password = $input.val();
  54446. if (password == null || password.length == 0) {
  54447. alert(local_protection.checkPasswordNullalert);
  54448. return;
  54449. }
  54450. if (aut.algorithmName != null && aut.algorithmName != "None") {
  54451. if (aut.saltValue != null && aut.saltValue.length > 0) {
  54452. var hasher = CryptoApi.getHasher(aut.algorithmName);
  54453. password = CryptoApi.hmac(aut.saltValue, password, hasher);
  54454. } else {
  54455. password = CryptoApi.hash(aut.algorithmName, password);
  54456. }
  54457. }
  54458. if (password == aut.password) {
  54459. restoreProtectionConfig(validationAuthority);
  54460. $validation.hide();
  54461. $("#luckysheet-modal-dialog-mask").hide();
  54462. $("#luckysheet-modal-dialog-slider-protection").show();
  54463. luckysheetsizeauto();
  54464. firstInputSheetProtectionPassword = false;
  54465. } else {
  54466. alert(local_protection.checkPasswordWrongalert);
  54467. }
  54468. });
  54469. $("#luckysheet-protection-check-selectLockedCells").change(function() {
  54470. let $selectLockedCells = $("#luckysheet-protection-check-selectLockedCells"), $selectunLockedCells = $("#luckysheet-protection-check-selectunLockedCells");
  54471. let selectLockedCellsChecked = $selectLockedCells.is(":checked"), selectunLockedCellsChecked = $selectunLockedCells.is(":checked");
  54472. if (selectLockedCellsChecked) {
  54473. $selectunLockedCells.prop("checked", true);
  54474. }
  54475. });
  54476. $("#luckysheet-protection-check-selectunLockedCells").change(function() {
  54477. let $selectLockedCells = $("#luckysheet-protection-check-selectLockedCells"), $selectunLockedCells = $("#luckysheet-protection-check-selectunLockedCells");
  54478. let selectLockedCellsChecked = $selectLockedCells.is(":checked"), selectunLockedCellsChecked = $selectunLockedCells.is(":checked");
  54479. if (!selectunLockedCellsChecked) {
  54480. $selectLockedCells.prop("checked", false);
  54481. }
  54482. });
  54483. $(document).off("click.luckysheetProtection.dvRange").on("click.luckysheetProtection.dvRange", "#protection-allowRangeAdd-range .fa-table", function(e) {
  54484. $("#luckysheet-protection-rangeItem-dialog").hide();
  54485. let dataSource = "0";
  54486. let txt = $(this).siblings("input").val().trim();
  54487. dataVerificationCtrl_default.rangeDialog(dataSource, txt);
  54488. dataVerificationCtrl_default.selectRange = [];
  54489. let range2 = dataVerificationCtrl_default.getRangeByTxt(txt);
  54490. if (range2.length > 0) {
  54491. for (let s = 0; s < range2.length; s++) {
  54492. let r1 = range2[s].row[0], r2 = range2[s].row[1];
  54493. let c1 = range2[s].column[0], c2 = range2[s].column[1];
  54494. let row = store_default.visibledatarow[r2], row_pre = r1 - 1 == -1 ? 0 : store_default.visibledatarow[r1 - 1];
  54495. let col = store_default.visibledatacolumn[c2], col_pre = c1 - 1 == -1 ? 0 : store_default.visibledatacolumn[c1 - 1];
  54496. dataVerificationCtrl_default.selectRange.push({
  54497. "left": col_pre,
  54498. "width": col - col_pre - 1,
  54499. "top": row_pre,
  54500. "height": row - row_pre - 1,
  54501. "left_move": col_pre,
  54502. "width_move": col - col_pre - 1,
  54503. "top_move": row_pre,
  54504. "height_move": row - row_pre - 1,
  54505. "row": [r1, r2],
  54506. "column": [c1, c2],
  54507. "row_focus": r1,
  54508. "column_focus": c1
  54509. });
  54510. }
  54511. }
  54512. selectionCopyShow(dataVerificationCtrl_default.selectRange);
  54513. });
  54514. $(document).off("click.luckysheetProtection.dvRange2").on("click.luckysheetProtection.dvRange2", "#luckysheet-protection-rangeItem-dialog .show-box-item-dropdown .range .fa-table", function(e) {
  54515. $("#luckysheet-protection-rangeItem-dialog").hide();
  54516. let dataSource = "1";
  54517. let txt = $(this).siblings("input").val().trim();
  54518. dataVerificationCtrl_default.rangeDialog(dataSource, txt);
  54519. dataVerificationCtrl_default.selectRange = [];
  54520. let range2 = dataVerificationCtrl_default.getRangeByTxt(txt);
  54521. if (range2.length > 0) {
  54522. for (let s = 0; s < range2.length; s++) {
  54523. let r1 = range2[s].row[0], r2 = range2[s].row[1];
  54524. let c1 = range2[s].column[0], c2 = range2[s].column[1];
  54525. let row = store_default.visibledatarow[r2], row_pre = r1 - 1 == -1 ? 0 : store_default.visibledatarow[r1 - 1];
  54526. let col = store_default.visibledatacolumn[c2], col_pre = c1 - 1 == -1 ? 0 : store_default.visibledatacolumn[c1 - 1];
  54527. dataVerificationCtrl_default.selectRange.push({
  54528. "left": col_pre,
  54529. "width": col - col_pre - 1,
  54530. "top": row_pre,
  54531. "height": row - row_pre - 1,
  54532. "left_move": col_pre,
  54533. "width_move": col - col_pre - 1,
  54534. "top_move": row_pre,
  54535. "height_move": row - row_pre - 1,
  54536. "row": [r1, r2],
  54537. "column": [c1, c2],
  54538. "row_focus": r1,
  54539. "column_focus": c1
  54540. });
  54541. }
  54542. }
  54543. selectionCopyShow(dataVerificationCtrl_default.selectRange);
  54544. });
  54545. $(document).off("click.luckysheetProtection.dvRangeConfirm").on("click.luckysheetProtection.dvRangeConfirm", "#luckysheet-dataVerificationRange-dialog-confirm", function(e) {
  54546. let txt = $(this).parents("#luckysheet-dataVerificationRange-dialog").find("input").val();
  54547. let $input = $("#protection-allowRangeAdd-range input"), inputValue = $input.val();
  54548. if (inputValue.substr(inputValue.length - 1, 1) == ",") {
  54549. $input.val(inputValue + txt);
  54550. } else {
  54551. $input.val(txt);
  54552. }
  54553. $("#luckysheet-dataVerificationRange-dialog").hide();
  54554. $("#luckysheet-modal-dialog-mask").show();
  54555. $("#luckysheet-protection-rangeItem-dialog").show();
  54556. let range2 = [];
  54557. selectionCopyShow(range2);
  54558. });
  54559. $(document).off("click.luckysheetProtection.dvRangeClose").on("click.dvRangeClose", "#luckysheet-dataVerificationRange-dialog-close", function(e) {
  54560. $("#luckysheet-dataVerificationRange-dialog").hide();
  54561. $("#luckysheet-modal-dialog-mask").show();
  54562. $("#luckysheet-protection-rangeItem-dialog").show();
  54563. let range2 = [];
  54564. selectionCopyShow(range2);
  54565. });
  54566. $(document).on("click.luckysheetProtection.luckysheetProtection", "#luckysheet-dataVerificationRange-dialog .luckysheet-modal-dialog-title-close", function(e) {
  54567. $("#luckysheet-dataVerificationRange-dialog").hide();
  54568. $("#luckysheet-modal-dialog-mask").show();
  54569. $("#luckysheet-protection-rangeItem-dialog").show();
  54570. let range2 = [];
  54571. selectionCopyShow(range2);
  54572. });
  54573. }
  54574. function initialProtectionRangeModal(file) {
  54575. if (isInitialProtectionAddRang) {
  54576. return;
  54577. }
  54578. isInitialProtectionAddRang = true;
  54579. let _locale = locale_default();
  54580. let local_protection = _locale.protection;
  54581. const locale_button = _locale.button;
  54582. $("body").append(replaceHtml(modelHTML, {
  54583. "id": "luckysheet-protection-rangeItem-dialog",
  54584. "addclass": "luckysheet-protection-rangeItem-dialog",
  54585. "title": local_protection.allowRangeTitle,
  54586. "content": `
  54587. <div class="luckysheet-protection-rangeItem-content">
  54588. <div class="luckysheet-slider-protection-row">
  54589. <div class="luckysheet-slider-protection-column luckysheet-protection-column-3x">
  54590. ${local_protection.allowRangeAddTitle}
  54591. </div>
  54592. <div class="luckysheet-slider-protection-column luckysheet-protection-column-7x" style="left:30%">
  54593. <input class="luckysheet-protection-rangeItemiInput" id="protection-allowRangeAdd-title" placeHolder="${local_protection.allowRangeAddtitleDefault}">
  54594. </div>
  54595. </div>
  54596. <div class="luckysheet-slider-protection-row">
  54597. <div class="luckysheet-slider-protection-column luckysheet-protection-column-3x">
  54598. ${local_protection.allowRangeAddSqrf}
  54599. </div>
  54600. <div class="luckysheet-slider-protection-column luckysheet-protection-column-7x" style="left:30%">
  54601. <div id="protection-allowRangeAdd-range" class="range">
  54602. <input class="formulaInputFocus" spellcheck="false" placeHolder="${local_protection.selectCellRangeHolder}">
  54603. <i class="fa fa-table" aria-hidden="true" title="${local_protection.selectCellRange}"></i>
  54604. </div>
  54605. </div>
  54606. </div>
  54607. <div class="luckysheet-slider-protection-row">
  54608. <div class="luckysheet-slider-protection-column luckysheet-protection-column-3x">
  54609. ${local_protection.allowRangeAddTitlePassword}
  54610. </div>
  54611. <div class="luckysheet-slider-protection-column luckysheet-protection-column-7x" style="left:30%">
  54612. <input class="luckysheet-protection-rangeItemiInput" id="protection-allowRangeAdd-password" placeHolder="${local_protection.enterPassword}">
  54613. </div>
  54614. </div>
  54615. <div class="luckysheet-slider-protection-row">
  54616. <div class="luckysheet-slider-protection-column luckysheet-protection-column-3x">
  54617. ${local_protection.allowRangeAddTitleHint}
  54618. </div>
  54619. <div class="luckysheet-slider-protection-column luckysheet-protection-column-7x" style="left:30%">
  54620. <textarea class="luckysheet-protection-rangeItemTextarea" id="protection-allowRangeAdd-hint" placeHolder="${local_protection.allowRangeAddTitleHintTitle}"></textarea>
  54621. </div>
  54622. </div>
  54623. </div>
  54624. `,
  54625. "botton": `<button id="luckysheet-protection-rangeItem-confirm" class="btn btn-primary">${locale_button.insert}</button>
  54626. <button class="btn btn-default luckysheet-model-close-btn">${locale_button.cancel}</button>`,
  54627. "style": "z-index:100003"
  54628. }));
  54629. }
  54630. function initialProtectionRIghtBar(file) {
  54631. const _locale = locale_default();
  54632. const local_protection = _locale.protection;
  54633. const locale_button = _locale.button;
  54634. let authorityItemHtml = "";
  54635. for (let i2 = 0; i2 < authorityItemArr.length; i2++) {
  54636. let name2 = authorityItemArr[i2];
  54637. authorityItemHtml += `
  54638. <div class="luckysheet-slider-protection-row" style="height:18px;">
  54639. <div class="luckysheet-slider-protection-column luckysheet-protection-column-10x">
  54640. <label for="luckysheet-protection-check-${name2}"><input id="luckysheet-protection-check-${name2}" name="luckysheet-protection-check-${name2}" type="checkbox">${local_protection[name2]}</label>
  54641. </div>
  54642. </div>
  54643. `;
  54644. }
  54645. const protectionModalHtml = `
  54646. <div id="luckysheet-modal-dialog-slider-protection" class="luckysheet-modal-dialog-slider luckysheet-modal-dialog-slider-pivot" style="display:none;">
  54647. <div class="luckysheet-modal-dialog-slider-title"> <span>${local_protection.protectiontTitle}</span> <span id="luckysheet-modal-dialog-protection-close" title="${locale_button.close}"><i class="fa fa-times" aria-hidden="true"></i></span> </div>
  54648. <div class="luckysheet-modal-dialog-slider-content">
  54649. <div class="luckysheet-slider-protection-config" style="top:10px;height:115px">
  54650. <div class="luckysheet-slider-protection-row">
  54651. <div class="luckysheet-slider-protection-column luckysheet-protection-column-10x">
  54652. <label for="protection-swichProtectionState"><input id="protection-swichProtectionState" name="protection-swichProtectionState" type="checkbox">${local_protection.swichProtectionTip}</label>
  54653. </div>
  54654. </div>
  54655. <div class="luckysheet-slider-protection-row" style="height:23px;">
  54656. <div class="luckysheet-slider-protection-column" style="width:98%;">
  54657. <input class="luckysheet-protection-input" id="protection-password" placeHolder="${local_protection.enterPassword}">
  54658. </div>
  54659. </div>
  54660. <div class="luckysheet-slider-protection-row" style="height:47px;margin-top:4px;">
  54661. <div class="luckysheet-slider-protection-column" style="width:98%;">
  54662. <textarea class="luckysheet-protection-textarea" id="protection-hint" placeHolder="${local_protection.enterHint}"></textarea>
  54663. </div>
  54664. </div>
  54665. </div>
  54666. <div class="luckysheet-slider-protection-config" style="top:130px;height:290px;border-top:1px solid #c5c5c5">
  54667. <div class="luckysheet-slider-protection-row" style="height:20px;">
  54668. ${local_protection.authorityTitle}
  54669. </div>
  54670. ${authorityItemHtml}
  54671. </div>
  54672. <div class="luckysheet-slider-protection-config" style="top:440px;bottom:45px;border-top:1px solid #c5c5c5">
  54673. <div class="luckysheet-slider-protection-row" style="height:25px;">
  54674. <div class="luckysheet-slider-protection-column luckysheet-protection-column-7x" style="left:0px;line-height: 25px;">
  54675. ${local_protection.allowRangeTitle}
  54676. </div>
  54677. <div class="luckysheet-slider-protection-column luckysheet-protection-column-3x" style="left:70%;">
  54678. <div class="luckysheet-slider-protection-ok luckysheet-slider-protection-addRange" id="luckysheet-slider-protection-addRange">
  54679. ${local_protection.allowRangeAdd}
  54680. </div>
  54681. </div>
  54682. </div>
  54683. <div id="luckysheet-protection-rangeItem-container" class="luckysheet-slider-protection-row" style="top:25px;bottom:0px;position:absolute">
  54684. </div>
  54685. </div>
  54686. <div class="luckysheet-slider-protection-config" style="bottom:0px;height:45px">
  54687. <div class="luckysheet-slider-protection-column luckysheet-protection-column-5x" style="left:0px;">
  54688. <div class="luckysheet-slider-protection-ok" id="luckysheet-slider-protection-ok">
  54689. ${locale_button.confirm}
  54690. </div>
  54691. </div>
  54692. <div class="luckysheet-slider-protection-column luckysheet-protection-column-5x" style="left:50%;">
  54693. <div class="luckysheet-slider-protection-cancel" id="luckysheet-slider-protection-cancel">
  54694. ${locale_button.cancel}
  54695. </div>
  54696. </div>
  54697. </div>
  54698. </div>
  54699. </div>
  54700. `;
  54701. $("body").append(protectionModalHtml);
  54702. $("body").append(replaceHtml(modelHTML, {
  54703. "id": "luckysheet-protection-sheet-validation",
  54704. "addclass": "luckysheet-protection-sheet-validation",
  54705. "title": local_protection.validationTitle,
  54706. "content": `
  54707. <div class="luckysheet-slider-protection-row">
  54708. <div class="luckysheet-slider-protection-column luckysheet-protection-column-10x">
  54709. ${local_protection.validationTips}
  54710. </div>
  54711. </div>
  54712. <div class="luckysheet-slider-protection-row" style="margin-top:20px">
  54713. <div class="luckysheet-slider-protection-column luckysheet-protection-column-10x">
  54714. <input type="password" class="luckysheet-protection-rangeItemiInput" placeHolder="${local_protection.validationInputHint}">
  54715. </div>
  54716. </div>
  54717. `,
  54718. "botton": `<button id="luckysheet-protection-sheet-validation-confirm" class="btn btn-primary">${locale_button.confirm}</button>
  54719. <button class="btn btn-default luckysheet-model-close-btn">${locale_button.cancel}</button>`,
  54720. "style": "z-index:100003"
  54721. }));
  54722. }
  54723. function restoreProtectionConfig(aut) {
  54724. if (aut == null) {
  54725. aut = {};
  54726. }
  54727. for (let i2 = 0; i2 < authorityItemArr.length; i2++) {
  54728. let name2 = authorityItemArr[i2];
  54729. let checkId = "luckysheet-protection-check-" + name2;
  54730. let authorityValue = aut[name2];
  54731. if (authorityValue == null) {
  54732. authorityValue = 0;
  54733. }
  54734. if (authorityValue == null && name2 in {selectLockedCells: 1, selectunLockedCells: 1}) {
  54735. authorityValue = 1;
  54736. }
  54737. $("#" + checkId).prop("checked", authorityValue == 1 ? true : false);
  54738. }
  54739. if (aut.password != null && aut.password.length > 0) {
  54740. if (aut.algorithmName == "None" || aut.algorithmName == null) {
  54741. $("#protection-password").val(aut.password);
  54742. } else {
  54743. $("#protection-password").val("\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022");
  54744. }
  54745. } else {
  54746. $("#protection-password").val("");
  54747. }
  54748. let sheet = aut.sheet;
  54749. if (aut.sheet == null) {
  54750. sheet = 0;
  54751. }
  54752. $("#protection-swichProtectionState").prop("checked", sheet == 1 ? true : false);
  54753. let hintText = aut.hintText;
  54754. if (hintText == null) {
  54755. hintText = "";
  54756. }
  54757. $("#protection-hint").val(hintText);
  54758. rangeItemListCache = [];
  54759. $("#luckysheet-protection-rangeItem-container").empty();
  54760. let allowRangeList = aut.allowRangeList;
  54761. if (allowRangeList != null && allowRangeList.length > 0) {
  54762. for (let i2 = 0; i2 < allowRangeList.length; i2++) {
  54763. let item2 = allowRangeList[i2];
  54764. addRangeItem(item2);
  54765. rangeItemListCache.push(item2);
  54766. }
  54767. }
  54768. }
  54769. function openProtectionModal(file) {
  54770. if (!isInitialProtection) {
  54771. initialProtectionRIghtBar(file);
  54772. initialEvent(file);
  54773. isInitialProtection = true;
  54774. }
  54775. updatingSheetFile = file;
  54776. if (file != null && file.config != null && file.config.authority != null) {
  54777. let aut = file.config.authority;
  54778. if (firstInputSheetProtectionPassword && aut.sheet == 1 && aut.password != null && aut.password.length > 0) {
  54779. validationAuthority = aut;
  54780. $("#luckysheet-protection-sheet-validation input").val("");
  54781. openSelfModel("luckysheet-protection-sheet-validation");
  54782. return;
  54783. } else {
  54784. restoreProtectionConfig(aut);
  54785. }
  54786. } else {
  54787. $("#luckysheet-protection-check-selectLockedCells").prop("checked", true);
  54788. $("#luckysheet-protection-check-selectunLockedCells").prop("checked", true);
  54789. }
  54790. $("#luckysheet-modal-dialog-slider-protection").show();
  54791. luckysheetsizeauto();
  54792. }
  54793. function closeProtectionModal() {
  54794. $("#luckysheet-protection-rangeItem-dialog").hide();
  54795. $("#luckysheet-modal-dialog-slider-protection").hide();
  54796. luckysheetsizeauto();
  54797. }
  54798. function checkProtectionLockedSqref(r2, c2, aut, local_protection, isOpenAlert = true, isLock = true) {
  54799. let isPass = false;
  54800. let rangeAut = aut.allowRangeList;
  54801. if (rangeAut != null && rangeAut.length > 0) {
  54802. let isExists = false;
  54803. for (let i2 = 0; i2 < rangeAut.length; i2++) {
  54804. let ra = rangeAut[i2];
  54805. let sqref = ra.sqref;
  54806. let range2 = dataVerificationCtrl_default.getRangeByTxt(sqref);
  54807. if (range2.length > 0) {
  54808. for (let s = 0; s < range2.length; s++) {
  54809. let r1 = range2[s].row[0], r22 = range2[s].row[1];
  54810. let c1 = range2[s].column[0], c22 = range2[s].column[1];
  54811. if (r2 >= r1 && r2 <= r22 && c2 >= c1 && c2 <= c22) {
  54812. isExists = true;
  54813. break;
  54814. }
  54815. }
  54816. }
  54817. if (isExists) {
  54818. let password = ra.password;
  54819. if (password != null && password.length > 0 && !(sqref in inputRangeProtectionPassword)) {
  54820. if (isOpenAlert) {
  54821. openRangePasswordModal(ra);
  54822. $("#luckysheet-selection-copy .luckysheet-selection-copy").hide();
  54823. }
  54824. return false;
  54825. } else {
  54826. isPass = true;
  54827. }
  54828. break;
  54829. }
  54830. }
  54831. }
  54832. if (!isPass && !isLock)
  54833. isPass = true;
  54834. if (!isPass && isOpenAlert) {
  54835. let ht;
  54836. if (aut.hintText != null && aut.hintText.length > 0) {
  54837. ht = aut.hintText;
  54838. } else {
  54839. ht = local_protection.defaultSheetHintText;
  54840. }
  54841. tooltip_default.info("", ht);
  54842. $("#luckysheet-selection-copy .luckysheet-selection-copy").hide();
  54843. }
  54844. return isPass;
  54845. }
  54846. function openRangePasswordModal(rangeAut) {
  54847. const _locale = locale_default();
  54848. const local_protection = _locale.protection;
  54849. const locale_button = _locale.button;
  54850. if (!initialRangePasswordHtml) {
  54851. $("body").append(replaceHtml(modelHTML, {
  54852. "id": "luckysheet-protection-range-validation",
  54853. "addclass": "luckysheet-protection-sheet-validation",
  54854. "title": local_protection.validationTitle,
  54855. "content": `
  54856. <div class="luckysheet-slider-protection-row">
  54857. <div id="luckysheet-protection-range-validation-hint" class="luckysheet-slider-protection-column luckysheet-protection-column-10x">
  54858. </div>
  54859. </div>
  54860. <div class="luckysheet-slider-protection-row" style="margin-top:20px">
  54861. <div class="luckysheet-slider-protection-column luckysheet-protection-column-10x">
  54862. <input type="password" class="luckysheet-protection-rangeItemiInput" placeHolder="${local_protection.validationInputHint}">
  54863. </div>
  54864. </div>
  54865. `,
  54866. "botton": `<button id="luckysheet-protection-range-validation-confirm" class="btn btn-primary">${locale_button.confirm}</button>
  54867. <button class="btn btn-default luckysheet-model-close-btn">${locale_button.cancel}</button>`,
  54868. "style": "z-index:100003"
  54869. }));
  54870. }
  54871. initialRangePasswordHtml = true;
  54872. openSelfModel("luckysheet-protection-range-validation");
  54873. let $hint = $("#luckysheet-protection-range-validation-hint");
  54874. if (rangeAut.hintText != null && rangeAut.hintText.length > 0) {
  54875. $hint.html(rangeAut.hintText);
  54876. } else {
  54877. $hint.html(local_protection.defaultRangeHintText);
  54878. }
  54879. let $rangeV = $("#luckysheet-protection-range-validation");
  54880. let $input = $rangeV.find("input");
  54881. $input.val("");
  54882. $("#luckysheet-protection-range-validation-confirm").off("click").on("click", function() {
  54883. let password = $input.val();
  54884. if (password == null || password.length == 0) {
  54885. alert(local_protection.checkPasswordNullalert);
  54886. return;
  54887. }
  54888. if (rangeAut.algorithmName != null && rangeAut.algorithmName != "None") {
  54889. if (rangeAut.saltValue != null && rangeAut.saltValue.length > 0) {
  54890. var hasher = CryptoApi.getHasher(rangeAut.algorithmName);
  54891. password = CryptoApi.hmac(rangeAut.saltValue, password, hasher);
  54892. } else {
  54893. password = CryptoApi.hash(rangeAut.algorithmName, password);
  54894. }
  54895. }
  54896. if (password == rangeAut.password) {
  54897. inputRangeProtectionPassword[rangeAut.sqref] = 1;
  54898. $rangeV.hide();
  54899. $("#luckysheet-modal-dialog-mask").hide();
  54900. alert(local_protection.checkPasswordSucceedalert);
  54901. } else {
  54902. alert(local_protection.checkPasswordWrongalert);
  54903. }
  54904. });
  54905. }
  54906. function checkProtectionNotEnable(sheetIndex) {
  54907. let sheetFile = sheetmanage_default.getSheetByIndex(sheetIndex);
  54908. if (sheetFile == null) {
  54909. return true;
  54910. }
  54911. if (sheetFile.config == null || sheetFile.config.authority == null) {
  54912. return true;
  54913. }
  54914. let aut = sheetFile.config.authority;
  54915. if (aut == null || aut.sheet == null || aut.sheet == 0) {
  54916. return true;
  54917. }
  54918. const _locale = locale_default();
  54919. const local_protection = _locale.protection;
  54920. let ht;
  54921. if (aut.hintText != null && aut.hintText.length > 0) {
  54922. ht = aut.hintText;
  54923. } else {
  54924. ht = local_protection.defaultSheetHintText;
  54925. }
  54926. tooltip_default.info("", ht);
  54927. return false;
  54928. }
  54929. function checkProtectionLocked(r2, c2, sheetIndex, isOpenAlert = true, isLock = true) {
  54930. let sheetFile = sheetmanage_default.getSheetByIndex(sheetIndex);
  54931. if (sheetFile == null) {
  54932. return true;
  54933. }
  54934. if (sheetFile.config == null || sheetFile.config.authority == null) {
  54935. return true;
  54936. }
  54937. let data = sheetFile.data, cell = data[r2][c2], aut = sheetFile.config.authority;
  54938. if (aut == null || aut.sheet == null || aut.sheet == 0) {
  54939. return true;
  54940. }
  54941. if (cell && cell.lo === 0) {
  54942. return true;
  54943. }
  54944. const _locale = locale_default();
  54945. const local_protection = _locale.protection;
  54946. return checkProtectionLockedSqref(r2, c2, aut, local_protection, isOpenAlert, isLock);
  54947. }
  54948. function checkProtectionCellHidden(r2, c2, sheetIndex) {
  54949. let sheetFile = sheetmanage_default.getSheetByIndex(sheetIndex);
  54950. if (!sheetFile || sheetFile.data && !sheetFile.data[r2] || sheetFile.data && !sheetFile.data[r2][c2]) {
  54951. return true;
  54952. }
  54953. if (sheetFile.config == null || sheetFile.config.authority == null) {
  54954. return true;
  54955. }
  54956. let data = sheetFile.data, cell = data[r2][c2], aut = sheetFile.config.authority;
  54957. if (aut == null || aut.sheet == null || aut.sheet == 0) {
  54958. return true;
  54959. }
  54960. if (cell == null || cell.hi == null || cell.hi == 0) {
  54961. return true;
  54962. }
  54963. return false;
  54964. }
  54965. function checkProtectionLockedRangeList(rangeList, sheetIndex) {
  54966. let sheetFile = sheetmanage_default.getSheetByIndex(sheetIndex);
  54967. if (sheetFile == null) {
  54968. return true;
  54969. }
  54970. if (sheetFile.config == null || sheetFile.config.authority == null) {
  54971. return true;
  54972. }
  54973. let aut = sheetFile.config.authority;
  54974. if (aut == null || aut.sheet == null || aut.sheet == 0) {
  54975. return true;
  54976. }
  54977. if (rangeList == null || rangeList.length == 0) {
  54978. return true;
  54979. }
  54980. const _locale = locale_default();
  54981. const local_protection = _locale.protection;
  54982. for (let s = 0; s < rangeList.length; s++) {
  54983. let r1 = rangeList[s].row[0], r2 = rangeList[s].row[1];
  54984. let c1 = rangeList[s].column[0], c2 = rangeList[s].column[1];
  54985. for (let r3 = r1; r3 <= r2; r3++) {
  54986. for (let c3 = c1; c3 <= c2; c3++) {
  54987. const cell = sheetFile.data[r3][c3] || {};
  54988. let isLock = cell.lo === void 0 || cell.lo === 1, isPass = checkProtectionLockedSqref(r3, c3, aut, local_protection, true, isLock);
  54989. if (!isPass) {
  54990. return false;
  54991. }
  54992. }
  54993. }
  54994. }
  54995. return true;
  54996. }
  54997. function checkProtectionSelectLockedOrUnLockedCells(r2, c2, sheetIndex) {
  54998. const _locale = locale_default();
  54999. const local_protection = _locale.protection;
  55000. let sheetFile = sheetmanage_default.getSheetByIndex(sheetIndex);
  55001. if (sheetFile == null) {
  55002. return true;
  55003. }
  55004. if (sheetFile.config == null || sheetFile.config.authority == null) {
  55005. return true;
  55006. }
  55007. let data = sheetFile.data, cell = data[r2][c2], aut = sheetFile.config.authority;
  55008. if (aut == null || aut.sheet == null || aut.sheet == 0) {
  55009. return true;
  55010. }
  55011. if (cell && cell.lo === 0) {
  55012. if (aut.selectunLockedCells == 1 || aut.selectunLockedCells == null) {
  55013. return true;
  55014. } else {
  55015. return false;
  55016. }
  55017. } else {
  55018. let isAllEdit = checkProtectionLockedSqref(r2, c2, aut, local_protection, false);
  55019. if (isAllEdit) {
  55020. if (aut.selectunLockedCells == 1 || aut.selectunLockedCells == null) {
  55021. return true;
  55022. } else {
  55023. return false;
  55024. }
  55025. } else {
  55026. if (aut.selectLockedCells == 1 || aut.selectLockedCells == null) {
  55027. return true;
  55028. } else {
  55029. return false;
  55030. }
  55031. }
  55032. }
  55033. }
  55034. function checkProtectionAllSelected(sheetIndex) {
  55035. const _locale = locale_default();
  55036. const local_protection = _locale.protection;
  55037. let sheetFile = sheetmanage_default.getSheetByIndex(sheetIndex);
  55038. if (sheetFile == null) {
  55039. return true;
  55040. }
  55041. if (sheetFile.config == null || sheetFile.config.authority == null) {
  55042. return true;
  55043. }
  55044. let aut = sheetFile.config.authority;
  55045. if (aut == null || aut.sheet == null || aut.sheet == 0) {
  55046. return true;
  55047. }
  55048. let selectunLockedCells = false;
  55049. if (aut.selectunLockedCells == 1 || aut.selectunLockedCells == null) {
  55050. selectunLockedCells = true;
  55051. }
  55052. let selectLockedCells = false;
  55053. if (aut.selectLockedCells == 1 || aut.selectLockedCells == null) {
  55054. selectLockedCells = true;
  55055. }
  55056. if (selectunLockedCells && selectLockedCells) {
  55057. return true;
  55058. }
  55059. return false;
  55060. }
  55061. function checkProtectionFormatCells(sheetIndex) {
  55062. let sheetFile = sheetmanage_default.getSheetByIndex(sheetIndex);
  55063. if (sheetFile == null) {
  55064. return true;
  55065. }
  55066. if (sheetFile.config == null || sheetFile.config.authority == null) {
  55067. return true;
  55068. }
  55069. let aut = sheetFile.config.authority;
  55070. if (aut == null || aut.sheet == null || aut.sheet == 0) {
  55071. return true;
  55072. }
  55073. if (aut.formatCells == 1 || aut.formatCells == null) {
  55074. return true;
  55075. }
  55076. const _locale = locale_default();
  55077. const local_protection = _locale.protection;
  55078. let ht;
  55079. if (aut.hintText != null && aut.hintText.length > 0) {
  55080. ht = aut.hintText;
  55081. } else {
  55082. ht = local_protection.defaultSheetHintText;
  55083. }
  55084. tooltip_default.info("", ht);
  55085. return false;
  55086. }
  55087. function checkProtectionAuthorityNormal(sheetIndex, type = "formatColumns", isAlert = true) {
  55088. let sheetFile = sheetmanage_default.getSheetByIndex(sheetIndex);
  55089. if (sheetFile == null) {
  55090. return true;
  55091. }
  55092. if (sheetFile.config == null || sheetFile.config.authority == null) {
  55093. return true;
  55094. }
  55095. let aut = sheetFile.config.authority;
  55096. if (aut == null || aut.sheet == null || aut.sheet == 0) {
  55097. return true;
  55098. }
  55099. if (aut[type] == 1 || aut[type] == null) {
  55100. return true;
  55101. }
  55102. if (isAlert) {
  55103. const _locale = locale_default();
  55104. const local_protection = _locale.protection;
  55105. let ht;
  55106. if (aut.hintText != null && aut.hintText.length > 0) {
  55107. ht = aut.hintText;
  55108. } else {
  55109. ht = local_protection.defaultSheetHintText;
  55110. }
  55111. tooltip_default.info("", ht);
  55112. }
  55113. return false;
  55114. }
  55115. var isInitialProtection, isInitialProtectionAddRang, rangeItemListCache, isAddRangeItemState, updateRangeItemIndex, validationAuthority, updatingSheetFile, firstInputSheetProtectionPassword, inputRangeProtectionPassword, initialRangePasswordHtml, authorityItemArr;
  55116. var init_protection = __esm({
  55117. "src/controllers/protection.js"() {
  55118. init_store();
  55119. init_locale();
  55120. init_constant();
  55121. init_get();
  55122. init_set();
  55123. init_sheetmanage();
  55124. init_resize();
  55125. init_dataVerificationCtrl();
  55126. init_util();
  55127. init_select();
  55128. init_tooltip();
  55129. init_cleargridelement();
  55130. isInitialProtection = false;
  55131. isInitialProtectionAddRang = false;
  55132. rangeItemListCache = [];
  55133. isAddRangeItemState = true;
  55134. updateRangeItemIndex = null;
  55135. validationAuthority = null;
  55136. updatingSheetFile = null;
  55137. firstInputSheetProtectionPassword = true;
  55138. inputRangeProtectionPassword = {};
  55139. initialRangePasswordHtml = false;
  55140. authorityItemArr = [
  55141. "selectLockedCells",
  55142. "selectunLockedCells",
  55143. "formatCells",
  55144. "formatColumns",
  55145. "formatRows",
  55146. "insertColumns",
  55147. "insertRows",
  55148. "insertHyperlinks",
  55149. "deleteColumns",
  55150. "deleteRows",
  55151. "sort",
  55152. "filter",
  55153. "usePivotTablereports",
  55154. "editObjects",
  55155. "editScenarios"
  55156. ];
  55157. }
  55158. });
  55159. // src/global/sort.js
  55160. function orderbydata(data, index2, isAsc) {
  55161. if (isAsc == null) {
  55162. isAsc = true;
  55163. }
  55164. let a = function(x, y) {
  55165. let x1 = x[index2], y1 = y[index2];
  55166. if (getObjType(x[index2]) == "object") {
  55167. x1 = x[index2].v;
  55168. }
  55169. if (getObjType(y[index2]) == "object") {
  55170. y1 = y[index2].v;
  55171. }
  55172. if (isRealNull(x1)) {
  55173. return 1;
  55174. }
  55175. if (isRealNull(y1)) {
  55176. return -1;
  55177. }
  55178. if (isdatetime(x1) && isdatetime(y1)) {
  55179. return diff(x1, y1);
  55180. } else if (isRealNum(x1) && isRealNum(y1)) {
  55181. return (0, import_numeral2.default)(x1).value() - (0, import_numeral2.default)(y1).value();
  55182. } else if (!isRealNum(x1) && !isRealNum(y1)) {
  55183. return x1.localeCompare(y1, "zh");
  55184. } else if (!isRealNum(x1)) {
  55185. return 1;
  55186. } else if (!isRealNum(y1)) {
  55187. return -1;
  55188. }
  55189. };
  55190. let d = function(x, y) {
  55191. let x1 = x[index2], y1 = y[index2];
  55192. if (getObjType(x[index2]) == "object") {
  55193. x1 = x[index2].v;
  55194. }
  55195. if (getObjType(y[index2]) == "object") {
  55196. y1 = y[index2].v;
  55197. }
  55198. if (isRealNull(x1)) {
  55199. return 1;
  55200. }
  55201. if (isRealNull(y1)) {
  55202. return -1;
  55203. }
  55204. if (isdatetime(x1) && isdatetime(y1)) {
  55205. return diff(y1, x1);
  55206. } else if (isRealNum(x1) && isRealNum(y1)) {
  55207. return (0, import_numeral2.default)(y1).value() - (0, import_numeral2.default)(x1).value();
  55208. } else if (!isRealNum(x1) && !isRealNum(y1)) {
  55209. return y1.localeCompare(x1, "zh");
  55210. } else if (!isRealNum(x1)) {
  55211. return -1;
  55212. } else if (!isRealNum(y1)) {
  55213. return 1;
  55214. }
  55215. };
  55216. if (isAsc) {
  55217. return data.sort(a);
  55218. } else {
  55219. return data.sort(d);
  55220. }
  55221. }
  55222. function orderbydata1D(data, isAsc) {
  55223. if (isAsc == null) {
  55224. isAsc = true;
  55225. }
  55226. let a = function(x, y) {
  55227. let x1 = x, y1 = y;
  55228. if (getObjType(x) == "object") {
  55229. x1 = x.v;
  55230. }
  55231. if (getObjType(y) == "object") {
  55232. y1 = y.v;
  55233. }
  55234. if (x1 == null) {
  55235. x1 = "";
  55236. }
  55237. if (y1 == null) {
  55238. y1 = "";
  55239. }
  55240. if (isdatetime(x1) && isdatetime(y1)) {
  55241. return diff(x1, y1);
  55242. } else if (isRealNum(x1) && isRealNum(y1)) {
  55243. return (0, import_numeral2.default)(x1).value() - (0, import_numeral2.default)(y1).value();
  55244. } else if (!isRealNum(x1) && !isRealNum(y1)) {
  55245. return x1.localeCompare(y1, "zh");
  55246. } else if (!isRealNum(x1)) {
  55247. return 1;
  55248. } else if (!isRealNum(y1)) {
  55249. return -1;
  55250. }
  55251. };
  55252. let d = function(x, y) {
  55253. let x1 = x, y1 = y;
  55254. if (getObjType(x) == "object") {
  55255. x1 = x.v;
  55256. }
  55257. if (getObjType(y) == "object") {
  55258. y1 = y.v;
  55259. }
  55260. if (x1 == null) {
  55261. x1 = "";
  55262. }
  55263. if (y1 == null) {
  55264. y1 = "";
  55265. }
  55266. if (isdatetime(x1) && isdatetime(y1)) {
  55267. return diff(y1, x1);
  55268. } else if (isRealNum(x1) && isRealNum(y1)) {
  55269. return (0, import_numeral2.default)(y1).value() - (0, import_numeral2.default)(x1).value();
  55270. } else if (!isRealNum(x1) && !isRealNum(y1)) {
  55271. return y1.localeCompare(x1, "zh");
  55272. } else if (!isRealNum(x1)) {
  55273. return -1;
  55274. } else if (!isRealNum(y1)) {
  55275. return 1;
  55276. }
  55277. };
  55278. if (isAsc) {
  55279. return data.sort(a);
  55280. } else {
  55281. return data.sort(d);
  55282. }
  55283. }
  55284. function sortSelection(isAsc) {
  55285. if (!checkProtectionAuthorityNormal(store_default.currentSheetIndex, "sort")) {
  55286. return;
  55287. }
  55288. const _locale = locale_default();
  55289. const locale_sort = _locale.sort;
  55290. if (store_default.luckysheet_select_save.length > 1) {
  55291. if (isEditMode()) {
  55292. alert(locale_sort.noRangeError);
  55293. } else {
  55294. tooltip_default.info(locale_sort.noRangeError, "");
  55295. }
  55296. return;
  55297. }
  55298. if (isAsc == null) {
  55299. isAsc = true;
  55300. }
  55301. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  55302. let r1 = store_default.luckysheet_select_save[0].row[0], r2 = store_default.luckysheet_select_save[0].row[1];
  55303. let c1 = store_default.luckysheet_select_save[0].column[0], c2 = store_default.luckysheet_select_save[0].column[1];
  55304. let str, edr;
  55305. for (let r3 = r1; r3 <= r2; r3++) {
  55306. if (d[r3] != null && d[r3][c1] != null) {
  55307. let cell = d[r3][c1];
  55308. if (cell.mc != null || isRealNull(cell.v)) {
  55309. continue;
  55310. }
  55311. if (str == null && /[\u4e00-\u9fa5]+/g.test(cell.v)) {
  55312. str = r3 + 1;
  55313. edr = r3 + 1;
  55314. continue;
  55315. }
  55316. if (str == null) {
  55317. str = r3;
  55318. }
  55319. edr = r3;
  55320. }
  55321. }
  55322. if (str == null || str > r2) {
  55323. return;
  55324. }
  55325. let hasMc = false;
  55326. let data = [];
  55327. for (let r3 = str; r3 <= edr; r3++) {
  55328. let data_row = [];
  55329. for (let c3 = c1; c3 <= c2; c3++) {
  55330. if (d[r3][c3] != null && d[r3][c3].mc != null) {
  55331. hasMc = true;
  55332. break;
  55333. }
  55334. data_row.push(d[r3][c3]);
  55335. }
  55336. data.push(data_row);
  55337. }
  55338. if (hasMc) {
  55339. if (isEditMode()) {
  55340. alert(locale_sort.mergeError);
  55341. } else {
  55342. tooltip_default.info(locale_sort.mergeError, "");
  55343. }
  55344. return;
  55345. }
  55346. data = orderbydata(data, 0, isAsc);
  55347. for (let r3 = str; r3 <= edr; r3++) {
  55348. for (let c3 = c1; c3 <= c2; c3++) {
  55349. d[r3][c3] = data[r3 - str][c3 - c1];
  55350. }
  55351. }
  55352. let allParam = {};
  55353. if (store_default.config["rowlen"] != null) {
  55354. let cfg = $.extend(true, {}, store_default.config);
  55355. cfg = rowlenByRange(d, str, edr, cfg);
  55356. allParam = {
  55357. "cfg": cfg,
  55358. "RowlChange": true
  55359. };
  55360. }
  55361. jfrefreshgrid(d, [{"row": [str, edr], "column": [c1, c2]}], allParam);
  55362. }
  55363. function sortColumnSeletion(colIndex, isAsc) {
  55364. if (!checkProtectionAuthorityNormal(store_default.currentSheetIndex, "sort")) {
  55365. return;
  55366. }
  55367. if (isAsc == null) {
  55368. isAsc = true;
  55369. }
  55370. const _locale = locale_default();
  55371. const locale_sort = _locale.sort;
  55372. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  55373. let r1 = 0, r2 = d.length - 1;
  55374. let c1 = 0, c2 = d[0].length - 1;
  55375. let str, edr;
  55376. for (let r3 = r1; r3 <= r2; r3++) {
  55377. if (d[r3][colIndex] != null && d[r3][colIndex].mc != null) {
  55378. continue;
  55379. }
  55380. if (d[r3][colIndex] != null && !isRealNull(d[r3][colIndex].v) && /[\u4e00-\u9fa5]+/g.test(d[r3][colIndex].v) && str == null) {
  55381. str = r3 + 1;
  55382. edr = r3 + 1;
  55383. continue;
  55384. }
  55385. if (str == null) {
  55386. str = r3;
  55387. }
  55388. if (d[r3][colIndex] != null && !isRealNull(d[r3][colIndex].v)) {
  55389. edr = r3;
  55390. }
  55391. }
  55392. if (str == null || str > r2) {
  55393. return;
  55394. }
  55395. let hasMc = false;
  55396. let data = [];
  55397. for (let r3 = str; r3 <= edr; r3++) {
  55398. let data_row = [];
  55399. for (let c3 = c1; c3 <= c2; c3++) {
  55400. if (d[r3][c3] != null && d[r3][c3].mc != null) {
  55401. hasMc = true;
  55402. break;
  55403. }
  55404. data_row.push(d[r3][c3]);
  55405. }
  55406. data.push(data_row);
  55407. }
  55408. if (hasMc) {
  55409. if (isEditMode()) {
  55410. alert(locale_sort.columnSortMergeError);
  55411. } else {
  55412. tooltip_default.info(locale_sort.columnSortMergeError, "");
  55413. }
  55414. return;
  55415. }
  55416. data = orderbydata(data, colIndex, isAsc);
  55417. for (let r3 = str; r3 <= edr; r3++) {
  55418. for (let c3 = c1; c3 <= c2; c3++) {
  55419. d[r3][c3] = data[r3 - str][c3 - c1];
  55420. }
  55421. }
  55422. let allParam = {};
  55423. if (store_default.config["rowlen"] != null) {
  55424. let cfg = $.extend(true, {}, store_default.config);
  55425. cfg = rowlenByRange(d, str, edr, cfg);
  55426. allParam = {
  55427. "cfg": cfg,
  55428. "RowlChange": true
  55429. };
  55430. }
  55431. jfrefreshgrid(d, [{"row": [str, edr], "column": [c1, c2]}], allParam);
  55432. }
  55433. var import_numeral2;
  55434. var init_sort = __esm({
  55435. "src/global/sort.js"() {
  55436. init_util();
  55437. init_validate();
  55438. init_datecontroll();
  55439. init_tooltip();
  55440. init_editor();
  55441. init_getRowlen();
  55442. init_refresh();
  55443. init_protection();
  55444. init_store();
  55445. init_locale();
  55446. import_numeral2 = __toModule(require_numeral());
  55447. }
  55448. });
  55449. // src/global/array.js
  55450. var luckysheetArray, array_default;
  55451. var init_array = __esm({
  55452. "src/global/array.js"() {
  55453. init_getdata();
  55454. luckysheetArray = {
  55455. transpose: function(getdata, useGetcellValue = true) {
  55456. let arr = [];
  55457. if (getdata.length == 0) {
  55458. return [];
  55459. }
  55460. if (getdata[0].length == 0) {
  55461. return [];
  55462. }
  55463. for (let c2 = 0; c2 < getdata[0].length; c2++) {
  55464. let a = [];
  55465. for (let r2 = 0; r2 < getdata.length; r2++) {
  55466. let value = "";
  55467. if (getdata[r2] != null && getdata[r2][c2] != null) {
  55468. if (useGetcellValue) {
  55469. value = getcellvalue(r2, c2, getdata);
  55470. } else {
  55471. value = getdata[r2][c2];
  55472. }
  55473. }
  55474. a.push(value);
  55475. }
  55476. arr.push(a);
  55477. }
  55478. return arr;
  55479. },
  55480. minusClear: function(p, m) {
  55481. if (m.row[0] > p.row[1] || m.row[1] < p.row[0] || m.column[0] > p.column[1] || m.column[1] < p.column[0]) {
  55482. return null;
  55483. }
  55484. if (m.row[0] == p.row[0] && m.row[1] < p.row[1] && m.column[0] > p.column[0] && m.column[1] < p.column[1]) {
  55485. return [];
  55486. }
  55487. let ret = [], range2 = {row: [], column: []};
  55488. let row1 = null, column1 = [p.column[0], p.column[1]];
  55489. if (m.row[1] > p.row[0] && m.row[1] < p.row[1]) {
  55490. row1 = [m.row[1] + 1, p.row[1]];
  55491. } else if (m.row[0] > p.row[0] && m.row[0] < p.row[1]) {
  55492. row1 = [p.row[0], m.row[0] - 1];
  55493. }
  55494. if (row1 != null) {
  55495. ret.push({"row": row1, "column": column1});
  55496. }
  55497. let row2 = [p.row[0], p.row[1]], column2 = null;
  55498. if (m.column[1] > p.column[0] && m.column[1] < p.column[1]) {
  55499. column2 = [m.column[1] + 1, p.column[1]];
  55500. } else if (m.column[0] > p.column[0] && m.column[0] < p.column[1]) {
  55501. column2 = [p.column[0], m.column[0] - 1];
  55502. }
  55503. if (column2 != null) {
  55504. ret.push({"row": row2, "column": column2});
  55505. }
  55506. return ret;
  55507. }
  55508. };
  55509. array_default = luckysheetArray;
  55510. }
  55511. });
  55512. // src/global/analysis.js
  55513. var analysis, analysis_default;
  55514. var init_analysis = __esm({
  55515. "src/global/analysis.js"() {
  55516. init_util();
  55517. analysis = {
  55518. "STDEVP": function(mean, array1d) {
  55519. let cov = 0;
  55520. for (let i2 = 0; i2 < array1d.length; i2++) {
  55521. let xi = array1d[i2];
  55522. cov += Math.pow(xi - mean, 2);
  55523. }
  55524. return numFormat2(Math.sqrt(cov / array1d.length));
  55525. },
  55526. "STDEV": function(mean, array1d) {
  55527. let cov = 0;
  55528. for (let i2 = 0; i2 < array1d.length; i2++) {
  55529. let xi = array1d[i2];
  55530. cov += Math.pow(xi - mean, 2);
  55531. }
  55532. return numFormat2(Math.sqrt(cov / (array1d.length - 1)));
  55533. },
  55534. "VARP": function(mean, array1d) {
  55535. let cov = 0;
  55536. for (let i2 = 0; i2 < array1d.length; i2++) {
  55537. let xi = array1d[i2];
  55538. cov += Math.pow(xi - mean, 2);
  55539. }
  55540. return numFormat2(cov / array1d.length);
  55541. },
  55542. "let": function(mean, array1d) {
  55543. let cov = 0;
  55544. for (let i2 = 0; i2 < array1d.length; i2++) {
  55545. let xi = array1d[i2];
  55546. cov += Math.pow(xi - mean, 2);
  55547. }
  55548. return numFormat2(cov / (array1d.length - 1));
  55549. }
  55550. };
  55551. analysis_default = analysis;
  55552. }
  55553. });
  55554. // src/controllers/pivotTable.js
  55555. var import_numeral3, pivotTable, pivotTable_default;
  55556. var init_pivotTable = __esm({
  55557. "src/controllers/pivotTable.js"() {
  55558. init_get();
  55559. init_util();
  55560. init_getdata();
  55561. init_datecontroll();
  55562. init_format();
  55563. init_validate();
  55564. init_sort();
  55565. init_refresh();
  55566. init_tooltip();
  55567. init_editor();
  55568. init_cleargridelement();
  55569. init_array();
  55570. init_analysis();
  55571. init_select();
  55572. init_sheetSearch();
  55573. init_constant();
  55574. init_sheetmanage();
  55575. init_resize();
  55576. init_server();
  55577. init_protection();
  55578. init_store();
  55579. init_locale();
  55580. import_numeral3 = __toModule(require_numeral());
  55581. init_constant();
  55582. pivotTable = {
  55583. pivotDatas: null,
  55584. pivotSheetIndex: 0,
  55585. pivotDataSheetIndex: 0,
  55586. celldata: null,
  55587. origindata: null,
  55588. getCellData: function(cursheetindex, datasheetindex, data_select_save) {
  55589. let _this = this;
  55590. let sheetIndex;
  55591. if (cursheetindex != null) {
  55592. sheetIndex = cursheetindex;
  55593. } else {
  55594. sheetIndex = store_default.currentSheetIndex;
  55595. }
  55596. let realIndex = getSheetIndex(sheetIndex);
  55597. if (getObjType(store_default.luckysheetfile[realIndex].pivotTable) != "object") {
  55598. store_default.luckysheetfile[realIndex].pivotTable = new Function("return " + store_default.luckysheetfile[realIndex].pivotTable)();
  55599. }
  55600. if (store_default.luckysheetfile[realIndex].pivotTable != null) {
  55601. _this.column = store_default.luckysheetfile[realIndex].pivotTable.column;
  55602. _this.row = store_default.luckysheetfile[realIndex].pivotTable.row;
  55603. _this.values = store_default.luckysheetfile[realIndex].pivotTable.values;
  55604. _this.filter = store_default.luckysheetfile[realIndex].pivotTable.filter;
  55605. _this.showType = store_default.luckysheetfile[realIndex].pivotTable.showType;
  55606. _this.filterparm = store_default.luckysheetfile[realIndex].pivotTable.filterparm;
  55607. if (store_default.luckysheetfile[realIndex].pivotTable.drawPivotTable != null) {
  55608. _this.drawPivotTable = store_default.luckysheetfile[realIndex].pivotTable.drawPivotTable;
  55609. } else {
  55610. _this.drawPivotTable = true;
  55611. }
  55612. if (store_default.luckysheetfile[realIndex].pivotTable.pivotTableBoundary != null) {
  55613. _this.pivotTableBoundary = store_default.luckysheetfile[realIndex].pivotTable.pivotTableBoundary;
  55614. } else {
  55615. _this.pivotTableBoundary = [12, 6];
  55616. }
  55617. if (data_select_save != null) {
  55618. _this.pivot_select_save = data_select_save;
  55619. } else {
  55620. _this.pivot_select_save = store_default.luckysheetfile[realIndex].pivotTable.pivot_select_save;
  55621. }
  55622. if (datasheetindex != null) {
  55623. _this.pivotDataSheetIndex = datasheetindex;
  55624. } else {
  55625. _this.pivotDataSheetIndex = store_default.luckysheetfile[realIndex].pivotTable.pivotDataSheetIndex;
  55626. }
  55627. } else {
  55628. _this.column = null;
  55629. _this.row = null;
  55630. _this.values = null;
  55631. _this.filter = null;
  55632. _this.showType = null;
  55633. _this.filterparm = null;
  55634. _this.drawPivotTable = true;
  55635. _this.pivotTableBoundary = [12, 6];
  55636. if (data_select_save != null) {
  55637. _this.pivot_select_save = data_select_save;
  55638. } else {
  55639. _this.pivot_select_save = store_default.luckysheet_select_save;
  55640. }
  55641. if (datasheetindex != null) {
  55642. _this.pivotDataSheetIndex = datasheetindex;
  55643. } else {
  55644. _this.pivotDataSheetIndex = sheetIndex;
  55645. }
  55646. }
  55647. let pivotrealIndex = getSheetIndex(_this.pivotDataSheetIndex);
  55648. let otherfile = store_default.luckysheetfile[pivotrealIndex];
  55649. if (otherfile["data"] == null) {
  55650. otherfile["data"] = sheetmanage_default.buildGridData(otherfile);
  55651. }
  55652. _this.origindata = getdatabyselectionD(otherfile.data, _this.pivot_select_save);
  55653. let rowhidden = {};
  55654. if (_this.filterparm != null) {
  55655. for (let f in _this.filterparm) {
  55656. for (let h in _this.filterparm[f]) {
  55657. if (h === "rowhidden" && _this.filterparm[f][h] != null) {
  55658. rowhidden = $.extend(true, rowhidden, _this.filterparm[f][h]);
  55659. }
  55660. }
  55661. }
  55662. }
  55663. _this.rowhidden = rowhidden;
  55664. _this.pivotSheetIndex = sheetIndex;
  55665. let newdata = [];
  55666. for (let i2 = 0; i2 < _this.origindata.length; i2++) {
  55667. if (_this.rowhidden != null && _this.rowhidden[i2] != null) {
  55668. continue;
  55669. }
  55670. newdata.push([].concat(_this.origindata[i2]));
  55671. }
  55672. _this.celldata = newdata;
  55673. _this.pivot_data_type = {};
  55674. for (let c2 = 0; c2 < _this.celldata[1].length; c2++) {
  55675. let type = isdatatype(_this.celldata[1][c2]);
  55676. _this.pivot_data_type[c2.toString()] = type;
  55677. }
  55678. },
  55679. pivot_data_type: {},
  55680. pivot_select_save: null,
  55681. column: null,
  55682. row: null,
  55683. values: null,
  55684. filter: null,
  55685. showType: null,
  55686. rowhidden: null,
  55687. selected: null,
  55688. caljs: null,
  55689. initial: true,
  55690. filterparm: null,
  55691. luckysheet_pivotTable_select_state: false,
  55692. jgridCurrentPivotInput: null,
  55693. movestate: false,
  55694. moveitemposition: [],
  55695. movesave: {},
  55696. showvaluecolrow: function() {
  55697. let _this = this;
  55698. if ($("#luckysheet-modal-dialog-config-value .luckysheet-modal-dialog-slider-config-item").length >= 2) {
  55699. $("#luckysheetpivottablevaluecolrowshow").show();
  55700. if (_this.showType == "column") {
  55701. $("#luckysheetpivottablevaluecolrow").prop("checked", true);
  55702. $("#luckysheetpivottablevaluecolrowshow label[for='luckysheetpivottablevaluecolrow']").addClass("ui-state-active");
  55703. $("#luckysheetpivottablevaluecolrow1").prop("checked", false);
  55704. $("#luckysheetpivottablevaluecolrowshow label[for='luckysheetpivottablevaluecolrow1']").removeClass("ui-state-active");
  55705. } else {
  55706. $("#luckysheetpivottablevaluecolrow1").prop("checked", true);
  55707. $("#luckysheetpivottablevaluecolrowshow label[for='luckysheetpivottablevaluecolrow1']").addClass("ui-state-active");
  55708. $("#luckysheetpivottablevaluecolrow").prop("checked", false);
  55709. $("#luckysheetpivottablevaluecolrowshow label[for='luckysheetpivottablevaluecolrow']").removeClass("ui-state-active");
  55710. }
  55711. } else {
  55712. $("#luckysheetpivottablevaluecolrowshow").hide();
  55713. }
  55714. },
  55715. resetOrderby: function(obj) {
  55716. let orderby = $("#luckysheet-modal-dialog-config-value .luckysheet-modal-dialog-slider-config-item").index(obj);
  55717. $("#luckysheet-modal-dialog-config-row, #luckysheet-modal-dialog-config-column").find(".luckysheet-modal-dialog-slider-config-item").each(function() {
  55718. if ($(this).data("orderby") == orderby) {
  55719. $(this).data("orderby", "self");
  55720. }
  55721. });
  55722. },
  55723. luckysheetsliderlistclearfilter: function($filter) {
  55724. let _this = this;
  55725. let $t = $filter.parent();
  55726. let cindex = $t.data("index");
  55727. let rowhidden = {}, selected = {}, d = _this.origindata, filterdata = {};
  55728. $t.data("rowhidden", "").find(".luckysheet-slider-list-item-filtered").hide();
  55729. _this.setDatatojsfile("selected", {}, cindex);
  55730. _this.setDatatojsfile("rowhidden", null, cindex);
  55731. let newdata = [];
  55732. for (let i2 = 0; i2 < d.length; i2++) {
  55733. if (rowhidden[i2] != null) {
  55734. continue;
  55735. }
  55736. newdata.push([].concat(d[i2]));
  55737. }
  55738. _this.celldata = newdata;
  55739. _this.refreshPivotTable();
  55740. $("#luckysheet-pivotTableFilter-menu, #luckysheet-pivotTableFilter-submenu").hide();
  55741. },
  55742. luckysheetsliderlistitemfilter: function($filter) {
  55743. let _this = this;
  55744. const _locale = locale_default();
  55745. const locale_filter = _locale.filter;
  55746. let $t = $filter.parent(), toffset = $t.offset(), $menu = $("#luckysheet-pivotTableFilter-menu"), winH = $(window).height(), winW = $(window).width();
  55747. let cindex = $t.data("index");
  55748. let rowhidden = $t.data("rowhidden");
  55749. if (rowhidden == null || rowhidden == "") {
  55750. rowhidden = {};
  55751. } else if (getObjType(rowhidden) == "string") {
  55752. rowhidden = JSON.parse(rowhidden);
  55753. }
  55754. $("body .luckysheet-cols-menu").hide();
  55755. $("#luckysheet-pivotTableFilter-menu, #luckysheet-pivotTableFilter-submenu").hide();
  55756. $("#luckysheet-pivotTableFilter-byvalue-input").val("");
  55757. $("#luckysheet-pivotTableFilter-bycondition").next().hide();
  55758. $("#luckysheet-pivotTableFilter-byvalue").next().show();
  55759. $menu.data("index", cindex);
  55760. $("#luckysheet-pivotTableFilter-menu .luckysheet-pivotTableFilter-selected-input").hide().find("input").val();
  55761. $("#luckysheet-pivotTableFilter-selected span").data("type", "0").data("type", null).text(locale_filter.filiterInputNone);
  55762. let byconditiontype = $t.data("byconditiontype");
  55763. $("#luckysheet-pivotTableFilter-selected span").data("value", $t.data("byconditionvalue")).data("type", byconditiontype).text($t.data("byconditiontext"));
  55764. if (byconditiontype == "2") {
  55765. let $input = $("#luckysheet-pivotTableFilter-menu .luckysheet-pivotTableFilter-selected-input2").show().find("input");
  55766. $input.eq(0).val($t.data("byconditionvalue1"));
  55767. $input.eq(1).val($t.data("byconditionvalue2"));
  55768. } else if (byconditiontype == "1") {
  55769. $("#luckysheet-pivotTableFilter-menu .luckysheet-pivotTableFilter-selected-input").eq(0).show().find("input").val($t.data("byconditionvalue1"));
  55770. }
  55771. const loadingObj = luckysheetlodingHTML("#luckysheet-pivotTableFilter-byvalue-select", {text: locale_filter.filiterMoreDataTip});
  55772. $("#luckysheet-pivotTableFilter-byvalue-select").empty().append(loadingObj.el);
  55773. let rowhiddenother = {};
  55774. $("#luckysheet-modal-dialog-pivotTable-list .luckysheet-modal-dialog-slider-list-item").not($t.get(0)).each(function() {
  55775. let $t2 = $(this), rh = $t2.data("rowhidden");
  55776. if (rh == null || rh == "") {
  55777. return true;
  55778. }
  55779. if (getObjType(rh) == "string") {
  55780. rh = JSON.parse(rh);
  55781. }
  55782. for (let r2 in rh) {
  55783. rowhiddenother[r2] = 0;
  55784. }
  55785. });
  55786. let data = _this.origindata;
  55787. setTimeout(function() {
  55788. let dvmap = {};
  55789. let dvmap_uncheck = {};
  55790. let vmap = {};
  55791. let vmap_uncheck = {};
  55792. for (let r2 = 1; r2 < data.length; r2++) {
  55793. if (r2 in rowhiddenother) {
  55794. continue;
  55795. }
  55796. if (data[r2] == null) {
  55797. continue;
  55798. }
  55799. let cell = data[r2][cindex];
  55800. if (cell != null && cell.ct != null && cell.ct.t == "d") {
  55801. let v = update("YYYY-MM-DD", cell.v);
  55802. let y = v.split("-")[0];
  55803. let m = v.split("-")[1];
  55804. let d = v.split("-")[2];
  55805. if (!(y in dvmap)) {
  55806. dvmap[y] = {};
  55807. }
  55808. if (!(m in dvmap[y])) {
  55809. dvmap[y][m] = {};
  55810. }
  55811. if (!(d in dvmap[y][m])) {
  55812. dvmap[y][m][d] = 0;
  55813. }
  55814. dvmap[y][m][d]++;
  55815. if (r2 in rowhidden) {
  55816. dvmap_uncheck[y] = 0;
  55817. dvmap_uncheck[m] = 0;
  55818. dvmap_uncheck[d] = 0;
  55819. }
  55820. } else {
  55821. let v, m;
  55822. if (cell == null || isRealNull(cell.v)) {
  55823. v = null;
  55824. m = null;
  55825. } else {
  55826. v = cell.v;
  55827. m = cell.m;
  55828. }
  55829. if (!(v in vmap)) {
  55830. vmap[v] = {};
  55831. }
  55832. if (!(m in vmap[v])) {
  55833. vmap[v][m] = 0;
  55834. }
  55835. vmap[v][m]++;
  55836. if (r2 in rowhidden) {
  55837. vmap_uncheck[v + "#$$$#" + m] = 0;
  55838. }
  55839. }
  55840. }
  55841. let item2 = [];
  55842. if (JSON.stringify(dvmap).length > 2) {
  55843. for (let y in dvmap) {
  55844. let ysum = 0;
  55845. let monthHtml = "";
  55846. for (let m in dvmap[y]) {
  55847. let msum = 0;
  55848. let dayHtml = "";
  55849. for (let d in dvmap[y][m]) {
  55850. let dayL = dvmap[y][m][d];
  55851. msum += dayL;
  55852. let mT;
  55853. if (Number(m) < 10) {
  55854. mT = "0" + Number(m);
  55855. } else {
  55856. mT = m;
  55857. }
  55858. let dT;
  55859. if (Number(d) < 10) {
  55860. dT = "0" + Number(d);
  55861. } else {
  55862. dT = d;
  55863. }
  55864. if (y in dvmap_uncheck && m in dvmap_uncheck && d in dvmap_uncheck) {
  55865. dayHtml += '<div class="day luckysheet-mousedown-cancel cf" data-check="false" title="' + y + "-" + mT + "-" + dT + '"><input class="luckysheet-mousedown-cancel" type="checkbox"/><label class="luckysheet-mousedown-cancel">' + d + '</label><span class="count luckysheet-mousedown-cancel">( ' + dayL + " )</span></div>";
  55866. } else {
  55867. dayHtml += '<div class="day luckysheet-mousedown-cancel cf" data-check="true" title="' + y + "-" + mT + "-" + dT + '"><input class="luckysheet-mousedown-cancel" type="checkbox" checked="checked"/><label class="luckysheet-mousedown-cancel">' + d + '</label><span class="count luckysheet-mousedown-cancel">( ' + dayL + " )</span></div>";
  55868. }
  55869. }
  55870. ysum += msum;
  55871. let mT2;
  55872. if (Number(m) < 10) {
  55873. mT2 = "0" + Number(m);
  55874. } else {
  55875. mT2 = m;
  55876. }
  55877. if (y in dvmap_uncheck && m in dvmap_uncheck) {
  55878. monthHtml += '<div class="monthBox luckysheet-mousedown-cancel"><div class="month luckysheet-mousedown-cancel cf" data-check="false" title="' + y + "-" + mT2 + '"><i class="fa fa-caret-right luckysheet-mousedown-cancel" aria-hidden="true"></i><input class="luckysheet-mousedown-cancel" type="checkbox"/><label class="luckysheet-mousedown-cancel">' + m + "" + locale_filter.filiterMonthText + '</label><span class="count luckysheet-mousedown-cancel">( ' + msum + ' )</span></div><div class="dayList luckysheet-mousedown-cancel">' + dayHtml + "</div></div>";
  55879. } else {
  55880. monthHtml += '<div class="monthBox luckysheet-mousedown-cancel"><div class="month luckysheet-mousedown-cancel cf" data-check="true" title="' + y + "-" + mT2 + '"><i class="fa fa-caret-right luckysheet-mousedown-cancel" aria-hidden="true"></i><input class="luckysheet-mousedown-cancel" type="checkbox" checked="checked"/><label class="luckysheet-mousedown-cancel">' + m + "" + locale_filter.filiterMonthText + '</label><span class="count luckysheet-mousedown-cancel">( ' + msum + ' )</span></div><div class="dayList luckysheet-mousedown-cancel">' + dayHtml + "</div></div>";
  55881. }
  55882. }
  55883. let yearHtml;
  55884. if (y in dvmap_uncheck) {
  55885. yearHtml = '<div class="yearBox luckysheet-mousedown-cancel"><div class="year luckysheet-mousedown-cancel cf" data-check="false" title="' + y + '"><i class="fa fa-caret-right luckysheet-mousedown-cancel" aria-hidden="true"></i><input class="luckysheet-mousedown-cancel" type="checkbox"/><label class="luckysheet-mousedown-cancel">' + y + "" + locale_filter.filiterYearText + '</label><span class="count luckysheet-mousedown-cancel">( ' + ysum + ' )</span></div><div class="monthList luckysheet-mousedown-cancel">' + monthHtml + "</div></div>";
  55886. } else {
  55887. yearHtml = '<div class="yearBox luckysheet-mousedown-cancel"><div class="year luckysheet-mousedown-cancel cf" data-check="true" title="' + y + '"><i class="fa fa-caret-right luckysheet-mousedown-cancel" aria-hidden="true"></i><input class="luckysheet-mousedown-cancel" type="checkbox" checked="checked"/><label class="luckysheet-mousedown-cancel">' + y + "" + locale_filter.filiterYearText + '</label><span class="count luckysheet-mousedown-cancel">( ' + ysum + ' )</span></div><div class="monthList luckysheet-mousedown-cancel">' + monthHtml + "</div></div>";
  55888. }
  55889. item2.unshift(yearHtml);
  55890. }
  55891. }
  55892. if (JSON.stringify(vmap).length > 2) {
  55893. let vmapKeys = Object.keys(vmap);
  55894. vmapKeys = orderbydata1D(vmapKeys, true);
  55895. for (let i2 = 0; i2 < vmapKeys.length; i2++) {
  55896. let v = vmapKeys[i2];
  55897. for (let x in vmap[v]) {
  55898. let text;
  55899. if (v + "#$$$#" + x == "null#$$$#null") {
  55900. text = locale_filter.valueBlank;
  55901. } else {
  55902. text = x;
  55903. }
  55904. let dataHtml;
  55905. if (v + "#$$$#" + x in vmap_uncheck) {
  55906. dataHtml = '<div class="textBox luckysheet-mousedown-cancel cf" data-check="false" data-filter="' + (v + "#$$$#" + x) + '" title="' + x + '"><input class="luckysheet-mousedown-cancel" type="checkbox"/><label class="luckysheet-mousedown-cancel">' + text + '</label><span class="luckysheet-mousedown-cancel count">( ' + vmap[v][x] + " )</span></div>";
  55907. } else {
  55908. dataHtml = '<div class="textBox luckysheet-mousedown-cancel cf" data-check="true" data-filter="' + (v + "#$$$#" + x) + '" title="' + x + '"><input class="luckysheet-mousedown-cancel" type="checkbox" checked="checked"/><label class="luckysheet-mousedown-cancel">' + text + '</label><span class="luckysheet-mousedown-cancel count">( ' + vmap[v][x] + " )</span></div>";
  55909. }
  55910. item2.push(dataHtml);
  55911. }
  55912. }
  55913. }
  55914. let containerH = winH - toffset.top - 350;
  55915. if (containerH < 0)
  55916. containerH = 100;
  55917. $("#luckysheet-pivotTableFilter-byvalue-select").append("<div class='ListBox luckysheet-mousedown-cancel' style='max-height:" + containerH + "px;overflow-y:auto;overflow-x:hidden;'>" + item2.join("") + "</div>");
  55918. loadingObj.close();
  55919. }, 1);
  55920. showrightclickmenu($menu, toffset.left - 250, toffset.top);
  55921. },
  55922. getSumTypeName: function(type) {
  55923. let name2 = "";
  55924. const _locale = locale_default();
  55925. const locale_pivotTable = _locale.pivotTable;
  55926. if (type == "SUM") {
  55927. name2 = locale_pivotTable.valueStatisticsSUM;
  55928. } else if (type == "COUNT") {
  55929. name2 = locale_pivotTable.valueStatisticsCOUNT;
  55930. } else if (type == "COUNTA") {
  55931. name2 = locale_pivotTable.valueStatisticsCOUNTA;
  55932. } else if (type == "COUNTUNIQUE") {
  55933. name2 = locale_pivotTable.valueStatisticsCOUNTUNIQUE;
  55934. } else if (type == "AVERAGE") {
  55935. name2 = locale_pivotTable.valueStatisticsAVERAGE;
  55936. } else if (type == "MAX") {
  55937. name2 = locale_pivotTable.valueStatisticsMAX;
  55938. } else if (type == "MIN") {
  55939. name2 = locale_pivotTable.valueStatisticsMIN;
  55940. } else if (type == "MEDIAN") {
  55941. name2 = locale_pivotTable.valueStatisticsMEDIAN;
  55942. } else if (type == "PRODUCT") {
  55943. name2 = locale_pivotTable.valueStatisticsPRODUCT;
  55944. } else if (type == "STDEV") {
  55945. name2 = locale_pivotTable.valueStatisticsSTDEV;
  55946. } else if (type == "STDEVP") {
  55947. name2 = locale_pivotTable.valueStatisticsSTDEVP;
  55948. } else if (type == "let") {
  55949. name2 = locale_pivotTable.valueStatisticslet;
  55950. } else if (type == "VARP") {
  55951. name2 = locale_pivotTable.valueStatisticsVARP;
  55952. }
  55953. return name2;
  55954. },
  55955. setDatatojsfile: function(attr, value, cindex) {
  55956. let _this = this;
  55957. let index2 = getSheetIndex(_this.pivotSheetIndex);
  55958. if (store_default.luckysheetfile[index2]["pivotTable"] == null) {
  55959. store_default.luckysheetfile[index2]["pivotTable"] = {};
  55960. }
  55961. if (cindex == null) {
  55962. store_default.luckysheetfile[index2]["pivotTable"][attr] = value;
  55963. _this[attr] = value;
  55964. } else {
  55965. if (store_default.luckysheetfile[index2]["pivotTable"]["filterparm"] == null) {
  55966. store_default.luckysheetfile[index2]["pivotTable"]["filterparm"] = {};
  55967. }
  55968. if (store_default.luckysheetfile[index2]["pivotTable"]["filterparm"][cindex.toString()] == null) {
  55969. store_default.luckysheetfile[index2]["pivotTable"]["filterparm"][cindex.toString()] = {};
  55970. }
  55971. store_default.luckysheetfile[index2]["pivotTable"]["filterparm"][cindex.toString()][attr] = value;
  55972. if (_this["filterparm"] == null) {
  55973. _this["filterparm"] = {};
  55974. }
  55975. if (_this["filterparm"][cindex.toString()] == null) {
  55976. _this["filterparm"][cindex.toString()] = {};
  55977. }
  55978. _this["filterparm"][cindex.toString()][attr] = value;
  55979. }
  55980. },
  55981. createPivotTable: function(e) {
  55982. if (isEditMode() || store_default.allowEdit === false) {
  55983. return;
  55984. }
  55985. let _this = this;
  55986. let datasheetindex = store_default.currentSheetIndex;
  55987. const _locale = locale_default();
  55988. const locale_pivotTable = _locale.pivotTable;
  55989. if (isEditMode()) {
  55990. alert(locale_pivotTable.errorNotAllowEdit);
  55991. return;
  55992. }
  55993. if (store_default.luckysheet_select_save.length > 1) {
  55994. tooltip_default.info("", locale_pivotTable.errorNotAllowMulti);
  55995. return;
  55996. }
  55997. if (store_default.luckysheet_select_save.length == 0 || store_default.luckysheet_select_save[0].row[0] == store_default.luckysheet_select_save[0].row[1] || store_default.luckysheet_select_save[0].column[0] == store_default.luckysheet_select_save[0].column[1]) {
  55998. tooltip_default.info("", locale_pivotTable.errorSelectRange);
  55999. return;
  56000. }
  56001. let select_save = $.extend(true, {}, store_default.luckysheet_select_save[0]);
  56002. sheetmanage_default.addNewSheet(e, true);
  56003. _this.getCellData(store_default.currentSheetIndex, datasheetindex, select_save);
  56004. _this.setDatatojsfile("pivot_select_save", select_save);
  56005. _this.setDatatojsfile("pivotDataSheetIndex", datasheetindex);
  56006. _this.initialPivotManage();
  56007. },
  56008. changePivotTable: function(index2) {
  56009. let _this = this;
  56010. const _locale = locale_default();
  56011. const locale_pivotTable = _locale.pivotTable;
  56012. let pivotDataSheetIndex = store_default.luckysheetfile[getSheetIndex(index2)].pivotTable.pivotDataSheetIndex;
  56013. let real_pivotDataSheetIndex = getSheetIndex(pivotDataSheetIndex);
  56014. if (real_pivotDataSheetIndex == null) {
  56015. tooltip_default.info(locale_pivotTable.errorIsDamage, "");
  56016. return;
  56017. }
  56018. _this.getCellData(index2);
  56019. _this.initialPivotManage(true);
  56020. _this.refreshPivotTable();
  56021. },
  56022. refreshPivotTable: function(isRefreshCanvas = true) {
  56023. let _this = this;
  56024. let redo2 = {};
  56025. redo2["pivotTable"] = pivotTable;
  56026. redo2["data"] = editor_default.deepCopyFlowData(store_default.flowdata);
  56027. _this.storePivotTableParam();
  56028. let ret = _this.dataHandler(_this.column, _this.row, _this.values, _this.showType, _this.celldata);
  56029. _this.setDatatojsfile("pivotDatas", ret);
  56030. let d = $.extend(true, [], sheetmanage_default.nulldata);
  56031. let data = d;
  56032. let addr = 0, addc = 0;
  56033. if (ret.length == 0) {
  56034. _this.setDatatojsfile("drawPivotTable", true);
  56035. _this.setDatatojsfile("pivotTableBoundary", [12, 6]);
  56036. } else {
  56037. _this.setDatatojsfile("drawPivotTable", false);
  56038. _this.setDatatojsfile("pivotTableBoundary", [ret.length, ret[0].length]);
  56039. let rlen = ret.length, clen = ret[0].length;
  56040. addr = rlen - d.length;
  56041. addc = clen - d[0].length;
  56042. data = datagridgrowth(d, addr + 20, addc + 10, true);
  56043. for (let r2 = 0; r2 < rlen; r2++) {
  56044. let x = [].concat(data[r2]);
  56045. for (let c2 = 0; c2 < clen; c2++) {
  56046. let value = "";
  56047. if (ret[r2] != null && ret[r2][c2] != null) {
  56048. value = getcellvalue(r2, c2, ret);
  56049. }
  56050. x[c2] = value;
  56051. }
  56052. data[r2] = x;
  56053. }
  56054. }
  56055. redo2["type"] = "pivotTable_change";
  56056. redo2["curdata"] = $.extend(true, [], data);
  56057. redo2["sheetIndex"] = store_default.currentSheetIndex;
  56058. redo2["pivotTablecur"] = _this.getPivotTableData();
  56059. if (store_default.clearjfundo) {
  56060. store_default.jfundo.length = 0;
  56061. store_default.jfredo.push(redo2);
  56062. }
  56063. cleargridelement();
  56064. store_default.clearjfundo = false;
  56065. if (addr > 0 || addc > 0) {
  56066. jfrefreshgridall(data[0].length, data.length, data, null, store_default.luckysheet_select_save, "datachangeAll", void 0, void 0, isRefreshCanvas);
  56067. } else {
  56068. jfrefreshgrid(data, store_default.luckysheet_select_save, {}, null, isRefreshCanvas);
  56069. selectHightlightShow();
  56070. }
  56071. store_default.clearjfundo = true;
  56072. },
  56073. drawPivotTable: true,
  56074. pivotTableBoundary: [12, 6],
  56075. pivotclick: function(row_index, col_index, index2) {
  56076. if (index2 == null) {
  56077. index2 = store_default.currentSheetIndex;
  56078. }
  56079. let file = store_default.luckysheetfile[getSheetIndex(index2)];
  56080. if (!file.isPivotTable) {
  56081. return;
  56082. }
  56083. let pivotDataSheetIndex = file.pivotTable.pivotDataSheetIndex;
  56084. let real_pivotDataSheetIndex = getSheetIndex(pivotDataSheetIndex);
  56085. if (real_pivotDataSheetIndex == null) {
  56086. return;
  56087. }
  56088. let slider = $("#luckysheet-modal-dialog-slider-pivot");
  56089. let isRangeClick = this.isPivotRange(row_index, col_index);
  56090. if (isRangeClick && slider.is(":hidden")) {
  56091. if (!checkProtectionAuthorityNormal(index2, "usePivotTablereports", false)) {
  56092. return;
  56093. }
  56094. slider.show();
  56095. luckysheetsizeauto();
  56096. $("#luckysheet-sta-content").css("padding-right", 260);
  56097. } else if (!isRangeClick && slider.is(":visible")) {
  56098. slider.hide();
  56099. luckysheetsizeauto();
  56100. $("#luckysheet-sta-content").css("padding-right", 10);
  56101. }
  56102. },
  56103. isPivotRange: function(row_index, col_index) {
  56104. let _this = this;
  56105. if (!!store_default.luckysheetcurrentisPivotTable) {
  56106. if (row_index < _this.pivotTableBoundary[0] && col_index < _this.pivotTableBoundary[1]) {
  56107. return true;
  56108. } else {
  56109. return false;
  56110. }
  56111. }
  56112. },
  56113. storePivotTableParam: function() {
  56114. let _this = this;
  56115. let columnarr = [], rowarr = [], filterarr = [], valuesarr = [];
  56116. $("#luckysheet-modal-dialog-config-filter .luckysheet-modal-dialog-slider-config-item").each(function() {
  56117. let item2 = {};
  56118. item2["index"] = $(this).data("index");
  56119. item2["name"] = $(this).data("name");
  56120. item2["fullname"] = $(this).find(".luckysheet-modal-dialog-slider-config-item-txt").text();
  56121. filterarr.push(item2);
  56122. });
  56123. $("#luckysheet-modal-dialog-config-row .luckysheet-modal-dialog-slider-config-item").each(function() {
  56124. let item2 = {};
  56125. item2["index"] = $(this).data("index");
  56126. item2["name"] = $(this).data("name");
  56127. item2["fullname"] = $(this).find(".luckysheet-modal-dialog-slider-config-item-txt").text();
  56128. item2["order"] = $(this).data("order");
  56129. item2["orderby"] = $(this).data("orderby");
  56130. item2["stastic"] = $(this).data("stastic");
  56131. rowarr.push(item2);
  56132. });
  56133. $("#luckysheet-modal-dialog-config-column .luckysheet-modal-dialog-slider-config-item").each(function() {
  56134. let item2 = {};
  56135. item2["index"] = $(this).data("index");
  56136. item2["name"] = $(this).data("name");
  56137. item2["fullname"] = $(this).find(".luckysheet-modal-dialog-slider-config-item-txt").text();
  56138. item2["order"] = $(this).data("order");
  56139. item2["orderby"] = $(this).data("orderby");
  56140. item2["stastic"] = $(this).data("stastic");
  56141. columnarr.push(item2);
  56142. });
  56143. $("#luckysheet-modal-dialog-config-value .luckysheet-modal-dialog-slider-config-item").each(function() {
  56144. let item2 = {};
  56145. item2["index"] = $(this).data("index");
  56146. item2["name"] = $(this).data("name");
  56147. item2["fullname"] = $(this).find(".luckysheet-modal-dialog-slider-config-item-txt").text();
  56148. item2["sumtype"] = $(this).data("sumtype");
  56149. item2["nameindex"] = $(this).data("nameindex");
  56150. valuesarr.push(item2);
  56151. });
  56152. _this.setDatatojsfile("column", columnarr);
  56153. _this.setDatatojsfile("row", rowarr);
  56154. _this.setDatatojsfile("filter", filterarr);
  56155. _this.setDatatojsfile("values", valuesarr);
  56156. let showtype = $("#luckysheetpivottablevaluecolrow:checked, #luckysheetpivottablevaluecolrow1:checked").val();
  56157. _this.setDatatojsfile("showType", showtype == "0" ? "row" : "column");
  56158. let pivotTable2 = _this.getPivotTableData();
  56159. delete pivotTable2.pivotDatas;
  56160. server_default.saveParam("all", _this.pivotSheetIndex, pivotTable2, {"k": "pivotTable"});
  56161. },
  56162. getPivotTableData: function(dataindex) {
  56163. if (dataindex == null) {
  56164. dataindex = this.pivotSheetIndex;
  56165. }
  56166. let index2 = getSheetIndex(dataindex);
  56167. let pivotTable2 = store_default.luckysheetfile[index2]["pivotTable"];
  56168. if (getObjType(pivotTable2) == "object") {
  56169. pivotTable2 = $.extend(true, {}, store_default.luckysheetfile[index2]["pivotTable"]);
  56170. } else {
  56171. pivotTable2 = new Function("return " + pivotTable2)();
  56172. }
  56173. return pivotTable2;
  56174. },
  56175. addValuesToTitle: function(titles, values) {
  56176. let rowLen = titles.length * values.length, colLen = titles[0].length + 1;
  56177. let retdata = [];
  56178. if (titles.length == 0 && values.length > 0) {
  56179. for (let v = 0; v < values.length; v++) {
  56180. retdata.push(values[v].fullname);
  56181. }
  56182. return retdata;
  56183. }
  56184. if (values.length == 0 && titles.length > 0) {
  56185. return titles;
  56186. }
  56187. for (let r2 = 0; r2 < rowLen; r2++) {
  56188. retdata[r2] = new Array(colLen);
  56189. for (let c2 = 0; c2 < colLen - 1; c2++) {
  56190. retdata[r2][c2] = titles[Math.floor(r2 / values.length)][c2];
  56191. }
  56192. retdata[r2][colLen - 1] = values[r2 % values.length].fullname;
  56193. }
  56194. return retdata;
  56195. },
  56196. initialPivotManage: function(restore) {
  56197. let _this = this;
  56198. const _locale = locale_default();
  56199. const locale_pivotTable = _locale.pivotTable;
  56200. const locale_button = _locale.button;
  56201. const locale_filter = _locale.filter;
  56202. if (_this.initial) {
  56203. _this.initial = false;
  56204. $("body").append(luckysheetPivotTableHTML());
  56205. $("#luckysheet-modal-dialog-slider-close").click(function() {
  56206. $("#luckysheet-modal-dialog-slider-pivot").hide();
  56207. luckysheetsizeauto();
  56208. });
  56209. $("body").append(replaceHtml(modelHTML, {"id": "luckysheet-data-pivotTable-selection", "addclass": "luckysheet-data-pivotTable-selection", "title": locale_pivotTable.titleSelectionDataRange, "content": '<input id="luckysheet-pivotTable-range-selection-input" class="luckysheet-datavisual-range-container" style="font-size: 14px;padding:5px;max-width:none;" spellcheck="false" aria-label="' + locale_pivotTable.titleDataRange + '" placeholder="' + locale_pivotTable.titleDataRange + '">', "botton": '<button id="luckysheet-pivotTable-selection-confirm" class="btn btn-primary">' + locale_button.confirm + '</button><button class="btn btn-default luckysheet-model-close-btn">' + locale_button.cancel + "</button>"}));
  56210. $("body").append(replaceHtml(filtermenuHTML(), {"menuid": "pivotTableFilter"}));
  56211. $("body").append(replaceHtml(filtersubmenuHTML(), {"menuid": "pivotTableFilter"}));
  56212. $("body").append(pivottableconfigHTML());
  56213. $("body").append(pivottablesumHTML());
  56214. $("#luckysheet-pivotTableFilter-orderby-asc").remove();
  56215. $("#luckysheet-pivotTableFilter-orderby-desc").next().remove();
  56216. $("#luckysheet-pivotTableFilter-orderby-desc").remove();
  56217. $("#luckysheet-pivotTableFilter-orderby-color").next().remove();
  56218. $("#luckysheet-pivotTableFilter-orderby-color").remove();
  56219. $("#luckysheetpivottablevaluecolrow, #luckysheetpivottablevaluecolrow1").checkboxradio({
  56220. icon: false
  56221. }).change(function() {
  56222. _this.refreshPivotTable();
  56223. });
  56224. let hidefilersubmenu = null;
  56225. $("#luckysheet-pivotTableFilter-menu").mouseover(function() {
  56226. clearTimeout(hidefilersubmenu);
  56227. hidefilersubmenu = setTimeout(function() {
  56228. $("#luckysheet-pivotTableFilter-submenu").hide();
  56229. }, 500);
  56230. });
  56231. $(document).off("click.ptFilterCheckbox1").on("click.ptFilterCheckbox1", "#luckysheet-pivotTableFilter-byvalue-select .textBox", function() {
  56232. if ($(this).attr("data-check") == "true") {
  56233. $(this).attr("data-check", "false");
  56234. $(this).find("input[type='checkbox']").removeAttr("checked");
  56235. } else {
  56236. $(this).attr("data-check", "true");
  56237. $(this).find("input[type='checkbox']").prop("checked", true);
  56238. }
  56239. });
  56240. $(document).off("click.ptFilterCheckbox2").on("click.ptFilterCheckbox2", "#luckysheet-pivotTableFilter-byvalue-select .year", function() {
  56241. if ($(this).attr("data-check") == "true") {
  56242. $(this).attr("data-check", "false");
  56243. $(this).parents(".yearBox").find(".month").attr("data-check", "false");
  56244. $(this).parents(".yearBox").find(".day").attr("data-check", "false");
  56245. $(this).parents(".yearBox").find("input[type='checkbox']").removeAttr("checked");
  56246. } else {
  56247. $(this).attr("data-check", "true");
  56248. $(this).parents(".yearBox").find(".month").attr("data-check", "true");
  56249. $(this).parents(".yearBox").find(".day").attr("data-check", "true");
  56250. $(this).parents(".yearBox").find("input[type='checkbox']").prop("checked", true);
  56251. }
  56252. });
  56253. $(document).off("click.ptFilterCheckbox3").on("click.ptFilterCheckbox3", "#luckysheet-pivotTableFilter-byvalue-select .month", function() {
  56254. if ($(this).attr("data-check") == "true") {
  56255. $(this).attr("data-check", "false");
  56256. $(this).parents(".monthBox").find(".day").attr("data-check", "false");
  56257. $(this).parents(".monthBox").find("input[type='checkbox']").removeAttr("checked");
  56258. } else {
  56259. $(this).attr("data-check", "true");
  56260. $(this).parents(".monthBox").find(".day").attr("data-check", "true");
  56261. $(this).parents(".monthBox").find("input[type='checkbox']").prop("checked", true);
  56262. }
  56263. let yearDayAllCheck = true;
  56264. let $yearDay = $(this).parents(".yearBox").find(".day");
  56265. $yearDay.each(function(i2, e) {
  56266. if ($(e).attr("data-check") == "true") {
  56267. } else {
  56268. yearDayAllCheck = false;
  56269. }
  56270. });
  56271. if (yearDayAllCheck) {
  56272. $(this).parents(".yearBox").find(".year").attr("data-check", "true");
  56273. $(this).parents(".yearBox").find(".year input[type='checkbox']").prop("checked", true);
  56274. } else {
  56275. $(this).parents(".yearBox").find(".year").attr("data-check", "false");
  56276. $(this).parents(".yearBox").find(".year input[type='checkbox']").removeAttr("checked");
  56277. }
  56278. });
  56279. $(document).off("click.ptFilterCheckbox4").on("click.ptFilterCheckbox4", "#luckysheet-pivotTableFilter-byvalue-select .day", function() {
  56280. if ($(this).attr("data-check") == "true") {
  56281. $(this).attr("data-check", "false");
  56282. $(this).find("input[type='checkbox']").removeAttr("checked");
  56283. } else {
  56284. $(this).attr("data-check", "true");
  56285. $(this).find("input[type='checkbox']").prop("checked", true);
  56286. }
  56287. let monthDayAllCheck = true;
  56288. let $monthDay = $(this).parents(".monthBox").find(".day");
  56289. $monthDay.each(function(i2, e) {
  56290. if ($(e).attr("data-check") == "true") {
  56291. } else {
  56292. monthDayAllCheck = false;
  56293. }
  56294. });
  56295. if (monthDayAllCheck) {
  56296. $(this).parents(".monthBox").find(".month").attr("data-check", "true");
  56297. $(this).parents(".monthBox").find(".month input[type='checkbox']").prop("checked", true);
  56298. } else {
  56299. $(this).parents(".monthBox").find(".month").attr("data-check", "false");
  56300. $(this).parents(".monthBox").find(".month input[type='checkbox']").removeAttr("checked");
  56301. }
  56302. let yearDayAllCheck = true;
  56303. let $yearDay = $(this).parents(".yearBox").find(".day");
  56304. $yearDay.each(function(i2, e) {
  56305. if ($(e).attr("data-check") == "true") {
  56306. } else {
  56307. yearDayAllCheck = false;
  56308. }
  56309. });
  56310. if (yearDayAllCheck) {
  56311. $(this).parents(".yearBox").find(".year").attr("data-check", "true");
  56312. $(this).parents(".yearBox").find(".year input[type='checkbox']").prop("checked", true);
  56313. } else {
  56314. $(this).parents(".yearBox").find(".year").attr("data-check", "false");
  56315. $(this).parents(".yearBox").find(".year input[type='checkbox']").removeAttr("checked");
  56316. }
  56317. });
  56318. $(document).off("click.ptFilterYearDropdown").on("click.ptFilterYearDropdown", "#luckysheet-pivotTableFilter-byvalue-select .yearBox .fa-caret-right", function() {
  56319. let $p = $(this).parents(".luckysheet-mousedown-cancel");
  56320. if ($p.hasClass("year")) {
  56321. $(this).parents(".yearBox").find(".monthList").slideToggle();
  56322. }
  56323. if ($p.hasClass("month")) {
  56324. $(this).parents(".monthBox").find(".dayList").slideToggle();
  56325. }
  56326. });
  56327. $("#luckysheet-pivotTableFilter-byvalue-btn-all").click(function() {
  56328. $("#luckysheet-pivotTableFilter-byvalue-select .ListBox input[type='checkbox']").prop("checked", true);
  56329. $("#luckysheet-pivotTableFilter-byvalue-select .ListBox input[type='checkbox']").parents(".luckysheet-mousedown-cancel").attr("data-check", "true");
  56330. });
  56331. $("#luckysheet-pivotTableFilter-byvalue-btn-contra").click(function() {
  56332. let $input = $("#luckysheet-pivotTableFilter-byvalue-select .ListBox input[type='checkbox']");
  56333. $input.each(function(i2, e) {
  56334. if ($(e).is(":checked")) {
  56335. $(e).removeAttr("checked");
  56336. $(e).parents(".luckysheet-mousedown-cancel").attr("data-check", "false");
  56337. } else {
  56338. $(e).prop("checked", true);
  56339. $(e).parents(".luckysheet-mousedown-cancel").attr("data-check", "true");
  56340. }
  56341. });
  56342. let $month = $("#luckysheet-pivotTableFilter-byvalue-select .ListBox .monthBox");
  56343. $month.each(function(index2, event2) {
  56344. let monthDayAllCheck = true;
  56345. let $monthDay = $(event2).find(".day input[type='checkbox']");
  56346. $monthDay.each(function(i2, e) {
  56347. if ($(e).is(":checked")) {
  56348. } else {
  56349. monthDayAllCheck = false;
  56350. }
  56351. });
  56352. if (monthDayAllCheck) {
  56353. $(event2).find(".month input[type='checkbox']").prop("checked", true);
  56354. $(event2).attr("data-check", "true");
  56355. } else {
  56356. $(event2).find(".month input[type='checkbox']").removeAttr("checked");
  56357. $(event2).attr("data-check", "false");
  56358. }
  56359. });
  56360. let $year = $("#luckysheet-pivotTableFilter-byvalue-select .ListBox .yearBox");
  56361. $year.each(function(index2, event2) {
  56362. let yearDayAllCheck = true;
  56363. let $yearDay = $(event2).find(".day input[type='checkbox']");
  56364. $yearDay.each(function(i2, e) {
  56365. if ($(e).is(":checked")) {
  56366. } else {
  56367. yearDayAllCheck = false;
  56368. }
  56369. });
  56370. if (yearDayAllCheck) {
  56371. $(event2).find(".year input[type='checkbox']").prop("checked", true);
  56372. $(event2).attr("data-check", "true");
  56373. } else {
  56374. $(event2).find(".year input[type='checkbox']").removeAttr("checked");
  56375. $(event2).attr("data-check", "false");
  56376. }
  56377. });
  56378. });
  56379. $("#luckysheet-pivotTableFilter-byvalue-btn-clear").click(function() {
  56380. $("#luckysheet-pivotTableFilter-byvalue-select .ListBox input[type='checkbox']").removeAttr("checked");
  56381. $("#luckysheet-pivotTableFilter-byvalue-select .ListBox input[type='checkbox']").parents(".luckysheet-mousedown-cancel").attr("data-check", "false");
  56382. });
  56383. $("#luckysheet-pivotTableFilter-byvalue-input").on("input propertychange", function() {
  56384. let v = $(this).val().toString();
  56385. $("#luckysheet-pivotTableFilter-byvalue-select .ListBox .luckysheet-mousedown-cancel").show();
  56386. if (v != "") {
  56387. let $check = $("#luckysheet-pivotTableFilter-byvalue-select .ListBox input[type='checkbox']");
  56388. $check.each(function(i2, e) {
  56389. let $p = $(e).parents(".luckysheet-mousedown-cancel");
  56390. if ($p.hasClass("day")) {
  56391. let day = $(e).siblings("label").text().toString();
  56392. let month = $(e).parents(".monthBox").find(".month label").text().toString();
  56393. let year = $(e).parents(".yearBox").find(".year label").text().toString();
  56394. let itemV = year + "-" + month + "-" + day;
  56395. if (itemV.indexOf(v) == -1) {
  56396. $(e).parents(".day").hide();
  56397. let $monthDay = $(e).parents(".dayList").find(".day:visible");
  56398. if ($monthDay.length == 0) {
  56399. $(e).parents(".monthBox").find(".month").hide();
  56400. }
  56401. let $yearDay = $(e).parents(".monthList").find(".day:visible");
  56402. if ($yearDay.length == 0) {
  56403. $(e).parents(".yearBox").find(".year").hide();
  56404. }
  56405. }
  56406. }
  56407. if ($p.hasClass("textBox")) {
  56408. let itemV = $(e).siblings("label").text().toString();
  56409. if (itemV.indexOf(v) == -1) {
  56410. $(e).parents(".textBox").hide();
  56411. }
  56412. }
  56413. });
  56414. }
  56415. });
  56416. $("#luckysheet-pivotTableFilter-bycondition, #luckysheet-pivotTableFilter-byvalue").click(function() {
  56417. let $t = $(this);
  56418. $t.next().slideToggle(200);
  56419. setTimeout(function() {
  56420. if ($t.attr("id") == "luckysheet-pivotTableFilter-bycondition" && $("#luckysheet-pivotTableFilter-bycondition").next().is(":visible")) {
  56421. if ($("#luckysheet-pivotTableFilter-selected span").text() != locale_filter.filiterInputNone) {
  56422. $("#luckysheet-pivotTableFilter-byvalue").next().slideUp(200);
  56423. }
  56424. }
  56425. if ($t.is($("#luckysheet-pivotTableFilter-bycondition"))) {
  56426. if ($("#luckysheet-pivotTableFilter-bycondition").next().is(":hidden") && $("#luckysheet-pivotTableFilter-byvalue").next().is(":hidden")) {
  56427. $("#luckysheet-pivotTableFilter-byvalue").next().slideDown(200);
  56428. }
  56429. }
  56430. }, 300);
  56431. });
  56432. $("#luckysheet-pivotTableFilter-cancel").click(function() {
  56433. $("#luckysheet-pivotTableFilter-menu, #luckysheet-pivotTableFilter-submenu").hide();
  56434. });
  56435. $("#luckysheet-pivotTableFilter-selected").click(function() {
  56436. let $t = $(this), toffset = $t.offset(), $menu = $("#luckysheet-pivotTableFilter-submenu");
  56437. $menu.hide();
  56438. let winH = $(window).height(), winW = $(window).width();
  56439. let menuW = $menu.width(), menuH = $menu.height();
  56440. let top = toffset.top, left = toffset.left, mheight = winH - toffset.top - 20;
  56441. if (toffset.left + menuW > winW) {
  56442. left = toffset.left - menuW;
  56443. }
  56444. if (toffset.top > winH / 2) {
  56445. top = winH - toffset.top;
  56446. if (top < 0) {
  56447. top = 0;
  56448. }
  56449. mheight = toffset.top - 20;
  56450. }
  56451. $menu.css({"top": top, "left": left, "height": mheight}).show();
  56452. clearTimeout(hidefilersubmenu);
  56453. });
  56454. $("#luckysheet-pivotTableFilter-submenu").mouseover(function() {
  56455. clearTimeout(hidefilersubmenu);
  56456. }).find(".luckysheet-cols-menuitem").click(function(e) {
  56457. $("#luckysheet-pivotTableFilter-selected span").html($(this).find(".luckysheet-cols-menuitem-content").text()).data("value", $(this).data("value"));
  56458. $("#luckysheet-pivotTableFilter-menu .luckysheet-pivotTableFilter-selected-input").hide();
  56459. if ($(this).data("type") == "2") {
  56460. $("#luckysheet-pivotTableFilter-selected span").data("type", "2");
  56461. $("#luckysheet-pivotTableFilter-menu .luckysheet-pivotTableFilter-selected-input2").show();
  56462. } else if ($(this).data("type") == "0") {
  56463. $("#luckysheet-pivotTableFilter-selected span").data("type", "0");
  56464. } else {
  56465. $("#luckysheet-pivotTableFilter-selected span").data("type", "1");
  56466. $("#luckysheet-pivotTableFilter-menu .luckysheet-pivotTableFilter-selected-input").eq(0).show();
  56467. if ($(this).attr("data-value") == "dateequal" || $(this).attr("data-value") == "datelessthan" || $(this).attr("data-value") == "datemorethan") {
  56468. $("#luckysheet-pivotTableFilter-menu .luckysheet-pivotTableFilter-selected-input input").prop("type", "date");
  56469. } else {
  56470. $("#luckysheet-pivotTableFilter-menu .luckysheet-pivotTableFilter-selected-input input").prop("type", "text");
  56471. }
  56472. }
  56473. $("#luckysheet-pivotTableFilter-byvalue").next().slideUp();
  56474. $("#luckysheet-pivotTableFilter-submenu").hide();
  56475. });
  56476. $("#luckysheet-modal-dialog-pivotTable-list").on("click", " .luckysheet-slider-list-item-filter", function(e) {
  56477. _this.luckysheetsliderlistitemfilter($(this));
  56478. e.stopPropagation();
  56479. return false;
  56480. });
  56481. $("#luckysheet-modal-dialog-pivotTable-list").on("click", " .luckysheet-slider-list-item-filtered", function(e) {
  56482. _this.luckysheetsliderlistclearfilter($(this).next());
  56483. e.stopPropagation();
  56484. return false;
  56485. });
  56486. $("#luckysheet-dialog-pivotTable-range-seleted").click(function() {
  56487. $("#luckysheet-modal-dialog-slider-pivot").hide();
  56488. luckysheetsizeauto();
  56489. let $t = $("#luckysheet-data-pivotTable-selection"), myh = $t.outerHeight(), myw = $t.outerWidth();
  56490. let winw = $(window).width(), winh = $(window).height();
  56491. let scrollLeft = $(document).scrollLeft(), scrollTop = $(document).scrollTop();
  56492. $("#luckysheet-data-pivotTable-selection").css({"left": (winw + scrollLeft - myw) / 2, "top": (winh + scrollTop - myh) / 4}).show();
  56493. _this.jgridCurrentPivotInput = $("#luckysheet-dialog-pivotTable-range").html();
  56494. $("#luckysheet-pivotTable-range-selection-input").val(_this.jgridCurrentPivotInput);
  56495. _this.luckysheet_pivotTable_select_state = true;
  56496. });
  56497. $("#luckysheet-pivotTableFilter-initial").click(function() {
  56498. $("#luckysheet-modal-dialog-pivotTable-list .luckysheet-slider-list-item-filtered").hide();
  56499. $("#luckysheet-modal-dialog-pivotTable-list .luckysheet-modal-dialog-slider-list-item").data("rowhidden", "");
  56500. $("#luckysheet-pivotTableFilter-menu, #luckysheet-pivotTableFilter-submenu").hide();
  56501. $("#luckysheet-pivotTableFilter-menu .luckysheet-pivotTableFilter-selected-input").hide().find("input").val();
  56502. $("#luckysheet-pivotTableFilter-selected span").data("type", "0").data("type", null).text(locale_filter.filiterInputNone);
  56503. _this.setDatatojsfile("filterparm", null);
  56504. _this.celldata = _this.origindata;
  56505. _this.refreshPivotTable();
  56506. });
  56507. $("#luckysheet-modal-dialog-config-row, #luckysheet-modal-dialog-config-column").on("click", ".luckysheet-modal-dialog-slider-config-item-icon", function(e) {
  56508. let $t = $(e.target), $item = $t.closest(".luckysheet-modal-dialog-slider-config-item"), cindex = $item.data("index"), toffset = $item.offset();
  56509. let order = $item.data("order"), orderby = $item.data("orderby"), stastic = $item.data("stastic");
  56510. if (order == null) {
  56511. order = "default";
  56512. }
  56513. let option = '<option value="self">' + $item.find(".luckysheet-modal-dialog-slider-config-item-txt").data("name") + "</option>";
  56514. $("#luckysheet-modal-dialog-config-value .luckysheet-modal-dialog-slider-config-item").each(function(i2) {
  56515. option += '<option value="' + i2 + '">' + $(this).find(".luckysheet-modal-dialog-slider-config-item-txt").text() + "</option>";
  56516. });
  56517. $("#luckysheet-pivotTable-config-option-orderby").empty().html(option);
  56518. if (orderby == null) {
  56519. orderby = "self";
  56520. }
  56521. if (stastic == null) {
  56522. stastic = "1";
  56523. }
  56524. $("#luckysheet-pivotTable-config-option-order").val(order).data("index", cindex);
  56525. $("#luckysheet-pivotTable-config-option-orderby").val(orderby).data("index", cindex);
  56526. $("#luckysheet-pivotTable-config-option-stastic").val(stastic).data("index", cindex);
  56527. mouseclickposition($("#luckysheet-pivotTable-config-option"), toffset.left + $item.outerWidth(), toffset.top - 13, "rightbottom");
  56528. e.stopPropagation();
  56529. return false;
  56530. });
  56531. $("#luckysheet-pivotTable-config-option-order,#luckysheet-pivotTable-config-option-orderby,#luckysheet-pivotTable-config-option-stastic").change(function() {
  56532. let $t = $(this), cindex = $t.data("index");
  56533. $("#luckysheet-modal-dialog-config-row, #luckysheet-modal-dialog-config-column").find(".luckysheet-modal-dialog-slider-config-item").each(function() {
  56534. if ($(this).data("index") == cindex) {
  56535. $(this).data($t.attr("id").replace("luckysheet-pivotTable-config-option-", ""), $t.val());
  56536. }
  56537. });
  56538. _this.refreshPivotTable();
  56539. });
  56540. $("#luckysheet-modal-dialog-config-value").on("click", ".luckysheet-modal-dialog-slider-config-item-icon", function(e) {
  56541. let $t = $(e.target), $item = $t.closest(".luckysheet-modal-dialog-slider-config-item"), cindex = $item.data("index"), toffset = $item.offset(), sumtype = $item.data("sumtype");
  56542. let type = _this.pivot_data_type[cindex.toString()];
  56543. if (sumtype == null) {
  56544. if (type == "num") {
  56545. sumtype = "SUM";
  56546. } else {
  56547. sumtype = "COUNTA";
  56548. }
  56549. }
  56550. let $menu = $("#luckysheet-pivotTable-config-option-sumtype");
  56551. $menu.find(".luckysheet-submenu-arrow").hide();
  56552. $menu.find(".luckysheet-cols-menuitem[sumtype='" + sumtype + "'] .luckysheet-submenu-arrow").css("display", "inline");
  56553. $menu.data("item", $item);
  56554. mouseclickposition($menu, toffset.left + $item.outerWidth(), toffset.top - 13, "rightbottom");
  56555. e.stopPropagation();
  56556. return false;
  56557. });
  56558. $("#luckysheet-pivotTable-config-option-sumtype .luckysheet-cols-menuitem").click(function() {
  56559. let $item = $("#luckysheet-pivotTable-config-option-sumtype").data("item");
  56560. let sumtype = $(this).attr("sumtype");
  56561. $item.data("sumtype", $(this).attr("sumtype"));
  56562. let name2 = _this.getSumTypeName(sumtype) + ":" + $item.data("name");
  56563. $item.attr("title", name2).find(".luckysheet-modal-dialog-slider-config-item-txt").html(name2);
  56564. $("#luckysheet-pivotTable-config-option-sumtype").hide();
  56565. _this.refreshPivotTable();
  56566. });
  56567. $("#luckysheet-modal-dialog-config-filter").on("click", ".luckysheet-modal-dialog-slider-config-item-icon", function(e) {
  56568. let $t = $(e.target), cindex = $t.closest(".luckysheet-modal-dialog-slider-config-item").data("index");
  56569. _this.luckysheetsliderlistitemfilter($("#luckysheet-modal-dialog-pivotTable-list .luckysheet-modal-dialog-slider-list-item").eq(cindex).find(".luckysheet-slider-list-item-filter"));
  56570. e.stopPropagation();
  56571. return false;
  56572. });
  56573. $("#luckysheet-pivotTableFilter-confirm").click(function() {
  56574. let $menu = $("#luckysheet-pivotTableFilter-menu");
  56575. let cindex = $menu.data("index");
  56576. let rowhiddenother = {};
  56577. $("#luckysheet-modal-dialog-pivotTable-list .luckysheet-modal-dialog-slider-list-item").each(function() {
  56578. let $t = $(this), rh = $t.data("rowhidden");
  56579. if ($t.data("index") != cindex) {
  56580. if (rh == null || rh == "") {
  56581. return true;
  56582. }
  56583. if (getObjType(rh) == "string") {
  56584. rh = JSON.parse(rh);
  56585. }
  56586. for (let r2 in rh) {
  56587. rowhiddenother[r2] = 0;
  56588. }
  56589. }
  56590. });
  56591. let d = _this.origindata;
  56592. let filterdata = {};
  56593. let rowhidden = {};
  56594. let caljs = {};
  56595. if ($("#luckysheet-pivotTableFilter-bycondition").next().is(":visible") && $("#luckysheet-pivotTableFilter-byvalue").next().is(":hidden") && $("#luckysheet-pivotTableFilter-selected span").data("value") != "null") {
  56596. let $t = $("#luckysheet-pivotTableFilter-selected span");
  56597. let type = $t.data("type"), value = $t.data("value");
  56598. caljs["value"] = value;
  56599. caljs["text"] = $t.text();
  56600. if (type == "0") {
  56601. caljs["type"] = "0";
  56602. } else if (type == "2") {
  56603. let $input = $("#luckysheet-pivotTableFilter-menu .luckysheet-pivotTableFilter-selected-input2 input");
  56604. caljs["type"] = "2";
  56605. caljs["value1"] = $input.eq(0).val();
  56606. caljs["value2"] = $input.eq(1).val();
  56607. } else {
  56608. caljs["type"] = "1";
  56609. caljs["value1"] = $("#luckysheet-pivotTableFilter-menu .luckysheet-pivotTableFilter-selected-input").eq(0).find("input").val();
  56610. }
  56611. for (let r2 = 1; r2 < d.length; r2++) {
  56612. if (r2 in rowhiddenother) {
  56613. continue;
  56614. }
  56615. if (d[r2] == null) {
  56616. continue;
  56617. }
  56618. let cell = d[r2][cindex];
  56619. if (value == "cellnull") {
  56620. if (cell != null && !isRealNull(cell.v)) {
  56621. rowhidden[r2] = 0;
  56622. }
  56623. } else if (value == "cellnonull") {
  56624. if (cell == null || isRealNull(cell.v)) {
  56625. rowhidden[r2] = 0;
  56626. }
  56627. } else if (value == "textinclude") {
  56628. let value1 = caljs["value1"];
  56629. if (cell == null || isRealNull(cell.v)) {
  56630. rowhidden[r2] = 0;
  56631. } else {
  56632. if (cell.m.indexOf(value1) == -1) {
  56633. rowhidden[r2] = 0;
  56634. }
  56635. }
  56636. } else if (value == "textnotinclude") {
  56637. let value1 = caljs["value1"];
  56638. if (cell == null || isRealNull(cell.v)) {
  56639. } else {
  56640. if (cell.m.indexOf(value1) > -1) {
  56641. rowhidden[r2] = 0;
  56642. }
  56643. }
  56644. } else if (value == "textstart") {
  56645. let value1 = caljs["value1"], valuelen = value1.length;
  56646. if (cell == null || isRealNull(cell.v)) {
  56647. rowhidden[r2] = 0;
  56648. } else {
  56649. if (cell.m.substr(0, valuelen) != value1) {
  56650. rowhidden[r2] = 0;
  56651. }
  56652. }
  56653. } else if (value == "textend") {
  56654. let value1 = caljs["value1"], valuelen = value1.length;
  56655. if (cell == null || isRealNull(cell.v)) {
  56656. rowhidden[r2] = 0;
  56657. } else {
  56658. if (valuelen > cell.m.length || cell.m.substr(cell.m.length - valuelen, valuelen) != value1) {
  56659. rowhidden[r2] = 0;
  56660. }
  56661. }
  56662. } else if (value == "textequal") {
  56663. let value1 = caljs["value1"];
  56664. if (cell == null || isRealNull(cell.v)) {
  56665. rowhidden[r2] = 0;
  56666. } else {
  56667. if (cell.m != value1) {
  56668. rowhidden[r2] = 0;
  56669. }
  56670. }
  56671. } else if (value == "dateequal") {
  56672. let value1 = genarate(caljs["value1"])[2];
  56673. if (cell == null || isRealNull(cell.v)) {
  56674. rowhidden[r2] = 0;
  56675. } else if (cell.ct != null && cell.ct.t == "d") {
  56676. if (parseInt(cell.v) != value1) {
  56677. rowhidden[r2] = 0;
  56678. }
  56679. } else {
  56680. rowhidden[r2] = 0;
  56681. }
  56682. } else if (value == "datelessthan") {
  56683. let value1 = genarate(caljs["value1"])[2];
  56684. if (cell == null || isRealNull(cell.v)) {
  56685. rowhidden[r2] = 0;
  56686. } else if (cell.ct != null && cell.ct.t == "d") {
  56687. if (parseInt(cell.v) >= value1) {
  56688. rowhidden[r2] = 0;
  56689. }
  56690. } else {
  56691. rowhidden[r2] = 0;
  56692. }
  56693. } else if (value == "datemorethan") {
  56694. let value1 = genarate(caljs["value1"])[2];
  56695. if (cell == null || isRealNull(cell.v)) {
  56696. rowhidden[r2] = 0;
  56697. } else if (cell.ct != null && cell.ct.t == "d") {
  56698. if (parseInt(cell.v) <= value1) {
  56699. rowhidden[r2] = 0;
  56700. }
  56701. } else {
  56702. rowhidden[r2] = 0;
  56703. }
  56704. } else if (value == "morethan") {
  56705. let value1 = parseFloat(caljs["value1"]);
  56706. if (cell == null || isRealNull(cell.v)) {
  56707. rowhidden[r2] = 0;
  56708. } else if (cell.ct != null && cell.ct.t == "n") {
  56709. if (cell.v <= value1) {
  56710. rowhidden[r2] = 0;
  56711. }
  56712. } else {
  56713. rowhidden[r2] = 0;
  56714. }
  56715. } else if (value == "moreequalthan") {
  56716. let value1 = parseFloat(caljs["value1"]);
  56717. if (cell == null || isRealNull(cell.v)) {
  56718. rowhidden[r2] = 0;
  56719. } else if (cell.ct != null && cell.ct.t == "n") {
  56720. if (cell.v < value1) {
  56721. rowhidden[r2] = 0;
  56722. }
  56723. } else {
  56724. rowhidden[r2] = 0;
  56725. }
  56726. } else if (value == "lessthan") {
  56727. let value1 = parseFloat(caljs["value1"]);
  56728. if (cell == null || isRealNull(cell.v)) {
  56729. rowhidden[r2] = 0;
  56730. } else if (cell.ct != null && cell.ct.t == "n") {
  56731. if (cell.v >= value1) {
  56732. rowhidden[r2] = 0;
  56733. }
  56734. } else {
  56735. rowhidden[r2] = 0;
  56736. }
  56737. } else if (value == "lessequalthan") {
  56738. let value1 = parseFloat(caljs["value1"]);
  56739. if (cell == null || isRealNull(cell.v)) {
  56740. rowhidden[r2] = 0;
  56741. } else if (cell.ct != null && cell.ct.t == "n") {
  56742. if (cell.v > value1) {
  56743. rowhidden[r2] = 0;
  56744. }
  56745. } else {
  56746. rowhidden[r2] = 0;
  56747. }
  56748. } else if (value == "equal") {
  56749. let value1 = parseFloat(caljs["value1"]);
  56750. if (cell == null || isRealNull(cell.v)) {
  56751. rowhidden[r2] = 0;
  56752. } else if (cell.ct != null && cell.ct.t == "n") {
  56753. if (cell.v != value1) {
  56754. rowhidden[r2] = 0;
  56755. }
  56756. } else {
  56757. rowhidden[r2] = 0;
  56758. }
  56759. } else if (value == "noequal") {
  56760. let value1 = parseFloat(caljs["value1"]);
  56761. if (cell == null || isRealNull(cell.v)) {
  56762. rowhidden[r2] = 0;
  56763. } else if (cell.ct != null && cell.ct.t == "n") {
  56764. if (cell.v == value1) {
  56765. rowhidden[r2] = 0;
  56766. }
  56767. } else {
  56768. rowhidden[r2] = 0;
  56769. }
  56770. } else if (value == "include") {
  56771. let value1 = parseFloat(caljs["value1"]), value2 = parseFloat(caljs["value2"]);
  56772. let min, max;
  56773. if (value1 < value2) {
  56774. min = value1;
  56775. max = value2;
  56776. } else {
  56777. max = value1;
  56778. min = value2;
  56779. }
  56780. if (cell == null || isRealNull(cell.v)) {
  56781. rowhidden[r2] = 0;
  56782. } else if (cell.ct != null && cell.ct.t == "n") {
  56783. if (cell.v < min || cell.v > max) {
  56784. rowhidden[r2] = 0;
  56785. }
  56786. } else {
  56787. rowhidden[r2] = 0;
  56788. }
  56789. } else if (value == "noinclude") {
  56790. let value1 = parseFloat(caljs["value1"]), value2 = parseFloat(caljs["value2"]);
  56791. let min, max;
  56792. if (value1 < value2) {
  56793. min = value1;
  56794. max = value2;
  56795. } else {
  56796. max = value1;
  56797. min = value2;
  56798. }
  56799. if (cell == null || isRealNull(cell.v)) {
  56800. rowhidden[r2] = 0;
  56801. } else if (cell.ct != null && cell.ct.t == "n") {
  56802. if (cell.v >= min && cell.v <= max) {
  56803. rowhidden[r2] = 0;
  56804. }
  56805. } else {
  56806. rowhidden[r2] = 0;
  56807. }
  56808. }
  56809. }
  56810. } else {
  56811. $("#luckysheet-pivotTableFilter-byvalue-select .ListBox input[type='checkbox']").each(function(i2, e) {
  56812. if ($(e).is(":visible") && $(e).is(":checked")) {
  56813. return true;
  56814. }
  56815. if ($(e).closest(".day").length > 0) {
  56816. let day = $(e).siblings("label").text();
  56817. if (Number(day) < 10) {
  56818. day = "0" + day;
  56819. }
  56820. let month = $(e).closest(".monthBox").find(".month label").text().replace(locale_filter.filiterMonthText, "");
  56821. if (Number(month) < 10) {
  56822. month = "0" + month;
  56823. }
  56824. let year = $(e).closest(".yearBox").find(".year label").text().replace(locale_filter.filiterYearText, "");
  56825. let itemV = locale_filter.filterDateFormatTip + "#$$$#" + year + "-" + month + "-" + day;
  56826. filterdata[itemV] = "1";
  56827. }
  56828. if ($(e).closest(".textBox").length > 0) {
  56829. let itemV = $(e).closest(".textBox").data("filter");
  56830. filterdata[itemV] = "1";
  56831. }
  56832. });
  56833. for (let r2 = 1; r2 < d.length; r2++) {
  56834. if (r2 in rowhiddenother) {
  56835. continue;
  56836. }
  56837. if (d[r2] == null) {
  56838. continue;
  56839. }
  56840. let cell = d[r2][cindex];
  56841. let value;
  56842. if (cell == null || isRealNull(cell.v)) {
  56843. value = "null#$$$#null";
  56844. } else if (cell.ct != null && cell.ct.t == "d") {
  56845. let fmt = update("YYYY-MM-DD", cell.v);
  56846. value = locale_filter.filterDateFormatTip + "#$$$#" + fmt;
  56847. } else {
  56848. value = cell.v + "#$$$#" + cell.m;
  56849. }
  56850. if (value in filterdata) {
  56851. rowhidden[r2] = 0;
  56852. }
  56853. }
  56854. }
  56855. let $top = $("#luckysheet-modal-dialog-pivotTable-list .luckysheet-modal-dialog-slider-list-item").eq(cindex);
  56856. if ($("#luckysheet-pivotTableFilter-byvalue-select .ListBox input[type='checkbox']:visible:checked").length < $("#luckysheet-pivotTableFilter-byvalue-select .ListBox input[type='checkbox']:visible").length || $("#luckysheet-pivotTableFilter-byvalue-input").val().length > 0 || $("#luckysheet-pivotTableFilter-bycondition").next().is(":visible") && $("#luckysheet-pivotTableFilter-byvalue").next().is(":hidden") && $("#luckysheet-pivotTableFilter-selected span").data("value") != "null") {
  56857. $top.data("rowhidden", JSON.stringify(rowhidden)).find(".luckysheet-slider-list-item-filtered").show();
  56858. _this.setDatatojsfile("rowhidden", rowhidden, cindex);
  56859. if (caljs != null) {
  56860. $top.data("byconditionvalue", caljs["value"]).data("byconditiontype", caljs["type"]).data("byconditiontext", caljs["text"]);
  56861. if (caljs["value1"] != null) {
  56862. $top.data("byconditionvalue1", caljs["value1"]);
  56863. }
  56864. if (caljs["value2"] != null) {
  56865. $top.data("byconditionvalue2", caljs["value2"]);
  56866. }
  56867. _this.setDatatojsfile("caljs", caljs, cindex);
  56868. }
  56869. } else {
  56870. $top.data("rowhidden", "").find(".luckysheet-slider-list-item-filtered").hide();
  56871. _this.setDatatojsfile("rowhidden", null, cindex);
  56872. }
  56873. let newdata = [];
  56874. for (let i2 = 0; i2 < d.length; i2++) {
  56875. if (i2 in rowhidden || i2 in rowhiddenother) {
  56876. continue;
  56877. }
  56878. newdata.push([].concat(d[i2]));
  56879. }
  56880. _this.celldata = newdata;
  56881. _this.refreshPivotTable();
  56882. $("#luckysheet-pivotTableFilter-menu, #luckysheet-pivotTableFilter-submenu").hide();
  56883. cleargridelement();
  56884. });
  56885. $("#luckysheet-data-pivotTable-selection .luckysheet-model-close-btn, #luckysheet-data-pivotTable-selection .luckysheet-modal-dialog-title-close").click(function() {
  56886. $("#luckysheet-modal-dialog-slider-pivot").show();
  56887. luckysheetsizeauto();
  56888. $("#luckysheet-cell-main .luckysheet-pivotTable-selection-set div").show();
  56889. $("#luckysheet-data-pivotTable-selection").hide();
  56890. sheetmanage_default.changeSheetExec(_this.pivotSheetIndex);
  56891. _this.luckysheet_pivotTable_select_state = false;
  56892. cleargridelement();
  56893. });
  56894. $("#luckysheet-pivotTable-selection-confirm").click(function() {
  56895. let $input = $("#luckysheet-pivotTable-range-selection-input"), val = $input.val();
  56896. if ($.trim(val).length == 0 || $.trim(val).toUpperCase() == _this.jgridCurrentPivotInput.toUpperCase()) {
  56897. $input.val(_this.jgridCurrentPivotInput);
  56898. $("#luckysheet-data-pivotTable-selection .luckysheet-model-close-btn").click();
  56899. return;
  56900. } else {
  56901. let val1 = val.split("!");
  56902. let sheettxt = "", rangetxt = "", sheetIndex = -1;
  56903. if (val1.length > 1) {
  56904. sheettxt = val1[0];
  56905. rangetxt = val1[1];
  56906. for (let i2 in store_default.luckysheetfile) {
  56907. if (sheettxt == store_default.luckysheetfile[i2].name) {
  56908. sheetIndex = store_default.luckysheetfile[i2].index;
  56909. break;
  56910. }
  56911. }
  56912. if (sheetIndex == -1) {
  56913. sheetIndex = 0;
  56914. }
  56915. } else {
  56916. let index2 = getSheetIndex(store_default.currentSheetIndex);
  56917. sheettxt = store_default.luckysheetfile[index2].name;
  56918. sheetIndex = store_default.luckysheetfile[index2].index;
  56919. rangetxt = val1[0];
  56920. }
  56921. if (store_default.luckysheetfile[getSheetIndex(sheetIndex)].isPivotTable) {
  56922. if (isEditMode()) {
  56923. alert(locale_pivotTable.errorNotAllowPivotData);
  56924. } else {
  56925. tooltip_default.info("", locale_pivotTable.errorNotAllowPivotData);
  56926. }
  56927. $input.val(_this.jgridCurrentPivotInput);
  56928. return;
  56929. }
  56930. if (rangetxt.indexOf(":") == -1) {
  56931. if (isEditMode()) {
  56932. alert(locale_pivotTable.errorSelectionRange);
  56933. } else {
  56934. tooltip_default.info("", locale_pivotTable.errorSelectionRange);
  56935. }
  56936. $input.val(_this.jgridCurrentPivotInput);
  56937. return;
  56938. }
  56939. rangetxt = rangetxt.split(":");
  56940. let row = [], col = [];
  56941. row[0] = parseInt(rangetxt[0].replace(/[^0-9]/g, "")) - 1;
  56942. row[1] = parseInt(rangetxt[1].replace(/[^0-9]/g, "")) - 1;
  56943. if (row[0] > row[1]) {
  56944. if (isEditMode()) {
  56945. alert(locale_pivotTable.errorSelectionRange);
  56946. } else {
  56947. tooltip_default.info("", locale_pivotTable.errorSelectionRange);
  56948. }
  56949. $input.val(_this.jgridCurrentPivotInput);
  56950. return;
  56951. }
  56952. col[0] = ABCatNum(rangetxt[0].replace(/[^A-Za-z]/g, ""));
  56953. col[1] = ABCatNum(rangetxt[1].replace(/[^A-Za-z]/g, ""));
  56954. if (col[0] > col[1]) {
  56955. if (isEditMode()) {
  56956. alert(locale_pivotTable.errorSelectionRange);
  56957. } else {
  56958. tooltip_default.info(locale_pivotTable.errorSelectionRange);
  56959. }
  56960. $input.val(_this.jgridCurrentPivotInput);
  56961. return;
  56962. }
  56963. sheetmanage_default.changeSheetExec(_this.pivotSheetIndex);
  56964. _this.setDatatojsfile("pivot_select_save", {"row": row, "column": col});
  56965. _this.setDatatojsfile("pivotDataSheetIndex", sheetIndex);
  56966. _this.getCellData(_this.pivotSheetIndex, sheetIndex, {"row": row, "column": col});
  56967. _this.initialPivotManage();
  56968. $("#luckysheet-dialog-pivotTable-range").html(val);
  56969. $("#luckysheet-modal-dialog-slider-pivot").show();
  56970. $("#luckysheet-data-pivotTable-selection").hide();
  56971. _this.luckysheet_pivotTable_select_state = false;
  56972. _this.refreshPivotTable();
  56973. luckysheetsizeauto();
  56974. cleargridelement();
  56975. }
  56976. });
  56977. $("#luckysheet-modal-dialog-slider-pivot").on("mousedown", ".luckysheet-slider-list-item-name, .luckysheet-modal-dialog-slider-config-item-txt", function(e) {
  56978. let $cur = $(e.target);
  56979. _this.movestate = true;
  56980. _this.movesave.obj = $cur.parent();
  56981. _this.movesave.name = $cur.data("name");
  56982. _this.movesave.containerid = $cur.parent().parent().attr("id");
  56983. _this.movesave.index = $cur.data("index");
  56984. if ($("#luckysheet-modal-dialog-slider-pivot-move").length == 0) {
  56985. $("body").append('<div id="luckysheet-modal-dialog-slider-pivot-move">' + _this.movesave.name + "</div>");
  56986. }
  56987. _this.movesave.width = $("#luckysheet-modal-dialog-slider-pivot-move").outerWidth();
  56988. _this.movesave.height = $("#luckysheet-modal-dialog-slider-pivot-move").outerHeight();
  56989. $("#luckysheet-modal-dialog-pivotTable-list, #luckysheet-modal-dialog-config-filter, #luckysheet-modal-dialog-config-row, #luckysheet-modal-dialog-config-column, #luckysheet-modal-dialog-config-value").css("cursor", "default");
  56990. });
  56991. $("#luckysheet-modal-dialog-config-filter, #luckysheet-modal-dialog-config-row, #luckysheet-modal-dialog-config-column, #luckysheet-modal-dialog-config-value").mousemove(function(e) {
  56992. if (_this.movestate) {
  56993. if (_this.moveitemposition.length == 0) {
  56994. _this.moveitemposition = [0];
  56995. $(this).find(".luckysheet-modal-dialog-slider-config-item").each(function(i2) {
  56996. let $t = $(this), h = $t.outerHeight();
  56997. _this.moveitemposition.push(_this.moveitemposition[i2] + h + 2);
  56998. });
  56999. $(this).append('<div id="luckysheet-modal-dialog-config-order-help" style="position:absolute;height:3px;width:100%;background:#007ACC;z-index:1;pointer-events: none;user-select:none;"></div>');
  57000. }
  57001. $("#luckysheet-modal-dialog-slider-pivot-move").css({"background": "#FD8585", "color": "#fff", "border": "1px solid #FD7070"});
  57002. let x = event.pageX, y = event.pageY, $container = $(this);
  57003. let curtop = y - $container.offset().top + $container.scrollTop();
  57004. let position = _this.moveitemposition;
  57005. let row_index = luckysheet_searcharray(position, curtop);
  57006. if (row_index == -1) {
  57007. $("#luckysheet-modal-dialog-config-order-help").css({"top": position[position.length - 1]});
  57008. } else if (curtop - position[row_index - 1] > (position[row_index] - position[row_index - 1]) / 2) {
  57009. $("#luckysheet-modal-dialog-config-order-help").css({"top": position[row_index]});
  57010. } else {
  57011. $("#luckysheet-modal-dialog-config-order-help").css({"top": position[row_index - 1]});
  57012. }
  57013. }
  57014. }).mouseleave(function() {
  57015. if (_this.movestate) {
  57016. $("#luckysheet-modal-dialog-slider-pivot-move").css({"background": "#fff", "color": "#000", "border": "1px dotted #000"});
  57017. _this.moveitemposition = [];
  57018. $("#luckysheet-modal-dialog-config-order-help").remove();
  57019. }
  57020. }).mouseup(function(e) {
  57021. if (_this.movestate) {
  57022. let $t = $(this);
  57023. let itemHTML;
  57024. if (_this.movesave.containerid == $t.attr("id")) {
  57025. itemHTML = _this.movesave.obj.clone();
  57026. } else {
  57027. let name2 = _this.movesave.name, sumtype = "", nameindex = "";
  57028. if ($t.attr("id") == "luckysheet-modal-dialog-config-value") {
  57029. let type = _this.pivot_data_type[_this.movesave.index.toString()];
  57030. if (type == "num") {
  57031. name2 = locale_pivotTable.valueStatisticsSUM + ":" + name2;
  57032. sumtype = "data-sumtype='SUM'";
  57033. nameindex = "data-nameindex='0'";
  57034. } else {
  57035. name2 = locale_pivotTable.valueStatisticsCOUNTA + ":" + name2;
  57036. sumtype = "data-sumtype='COUNTA'";
  57037. nameindex = "data-nameindex='0'";
  57038. }
  57039. $("#luckysheet-modal-dialog-config-value").find(".luckysheet-modal-dialog-slider-config-item").each(function() {
  57040. if ($(this).find(".luckysheet-modal-dialog-slider-config-item-txt").text() == name2) {
  57041. let ni = parseFloat($(this).data("nameindex")) + 1;
  57042. name2 = name2 + ni.toString();
  57043. $(this).data("nameindex", ni);
  57044. return false;
  57045. }
  57046. });
  57047. }
  57048. itemHTML = '<div title="' + name2 + '" class="luckysheet-modal-dialog-slider-config-item" ' + nameindex + " " + sumtype + ' data-index="' + _this.movesave.index + '" data-name="' + _this.movesave.name + '"><div class="luckysheet-modal-dialog-slider-config-item-txt" ' + nameindex + " " + sumtype + ' data-index="' + _this.movesave.index + '" data-name="' + _this.movesave.name + '">' + name2 + '</div><div class="luckysheet-modal-dialog-slider-config-item-icon"><i class="fa fa-sort-desc" aria-hidden="true"></i></div></div>';
  57049. }
  57050. let x = event.pageX, y = event.pageY, $container = $(this);
  57051. let curtop = y - $container.offset().top + $container.scrollTop();
  57052. let position = _this.moveitemposition;
  57053. let row_index = luckysheet_searcharray(position, curtop);
  57054. if (_this.movesave.containerid == "luckysheet-modal-dialog-pivotTable-list" || _this.movesave.containerid == "luckysheet-modal-dialog-config-value" && _this.movesave.containerid != $t.attr("id")) {
  57055. $("#luckysheet-modal-dialog-config-filter, #luckysheet-modal-dialog-config-row, #luckysheet-modal-dialog-config-column").find(".luckysheet-modal-dialog-slider-config-item").each(function() {
  57056. if ($(this).data("index") == _this.movesave.index) {
  57057. $(this).remove();
  57058. }
  57059. });
  57060. }
  57061. if (row_index == -1) {
  57062. if ($t.find(".luckysheet-modal-dialog-slider-config-item").length == 0) {
  57063. $t.append(itemHTML);
  57064. } else {
  57065. $t.find(".luckysheet-modal-dialog-slider-config-item").last().after(itemHTML);
  57066. }
  57067. } else if (curtop - position[row_index - 1] > (position[row_index] - position[row_index - 1]) / 2) {
  57068. $t.find(".luckysheet-modal-dialog-slider-config-item").eq(row_index - 1).after(itemHTML);
  57069. } else {
  57070. $t.find(".luckysheet-modal-dialog-slider-config-item").eq(row_index - 1).before(itemHTML);
  57071. }
  57072. if (_this.movesave.containerid == "luckysheet-modal-dialog-pivotTable-list") {
  57073. } else if (_this.movesave.containerid == "luckysheet-modal-dialog-config-value" && _this.movesave.containerid != $t.attr("id")) {
  57074. } else {
  57075. _this.movesave.obj.remove();
  57076. }
  57077. $("#luckysheet-modal-dialog-pivotTable-list").find(".luckysheet-modal-dialog-slider-list-item").each(function() {
  57078. let $seleted = $(this).find(".luckysheet-slider-list-item-selected");
  57079. if ($(this).data("index") == _this.movesave.index && $seleted.find("i").length == 0) {
  57080. $seleted.append('<i class="fa fa-check luckysheet-mousedown-cancel"></i>');
  57081. }
  57082. });
  57083. _this.refreshPivotTable();
  57084. $("#luckysheet-modal-dialog-slider-pivot-move").remove();
  57085. _this.movestate = false;
  57086. $("#luckysheet-modal-dialog-pivotTable-list, #luckysheet-modal-dialog-config-filter, #luckysheet-modal-dialog-config-row, #luckysheet-modal-dialog-config-column, #luckysheet-modal-dialog-config-value").css("cursor", "default");
  57087. _this.moveitemposition = [];
  57088. $("#luckysheet-modal-dialog-config-order-help").remove();
  57089. _this.showvaluecolrow();
  57090. e.stopPropagation();
  57091. }
  57092. });
  57093. $("#luckysheet-modal-dialog-pivotTable-list").on("click", ".luckysheet-slider-list-item-selected", function() {
  57094. let $t = $(this), $item = $t.parent(), index2 = $item.data("index"), name2 = $item.data("name");
  57095. if ($t.find("i").length == 0) {
  57096. $t.append('<i class="fa fa-check luckysheet-mousedown-cancel"></i>');
  57097. let type = _this.pivot_data_type[index2.toString()], itemHTML;
  57098. if (type == "num") {
  57099. itemHTML = '<div title="' + name2 + '" class="luckysheet-modal-dialog-slider-config-item" data-nameindex="0" data-sumtype="SUM" data-index="' + index2 + '" data-name="' + name2 + '"><div class="luckysheet-modal-dialog-slider-config-item-txt" data-nameindex="0" data-sumtype="SUM" data-index="' + index2 + '" data-name="' + name2 + '">\u6C42\u548C:' + name2 + '</div><div class="luckysheet-modal-dialog-slider-config-item-icon"><i class="fa fa-sort-desc" aria-hidden="true"></i></div></div>';
  57100. $("#luckysheet-modal-dialog-config-value").append(itemHTML);
  57101. } else {
  57102. itemHTML = '<div title="' + name2 + '" class="luckysheet-modal-dialog-slider-config-item" data-index="' + index2 + '" data-name="' + name2 + '"><div class="luckysheet-modal-dialog-slider-config-item-txt" data-index="' + index2 + '" data-name="' + name2 + '">' + name2 + '</div><div class="luckysheet-modal-dialog-slider-config-item-icon"><i class="fa fa-sort-desc" aria-hidden="true"></i></div></div>';
  57103. let $column = $("#luckysheet-modal-dialog-config-column"), $row = $("#luckysheet-modal-dialog-config-row");
  57104. let columnitem = $column.find(".luckysheet-modal-dialog-slider-config-item"), rowitem = $row.find(".luckysheet-modal-dialog-slider-config-item");
  57105. if (columnitem.length < 2) {
  57106. $column.append(itemHTML);
  57107. } else if (rowitem.length < 2) {
  57108. $row.append(itemHTML);
  57109. } else {
  57110. $column.append(itemHTML);
  57111. }
  57112. }
  57113. } else {
  57114. $t.find("i").remove();
  57115. $("#luckysheet-modal-dialog-config-filter, #luckysheet-modal-dialog-config-row, #luckysheet-modal-dialog-config-column, #luckysheet-modal-dialog-config-value").find(".luckysheet-modal-dialog-slider-config-item").each(function() {
  57116. if ($(this).data("index") == index2) {
  57117. if ($(this).parent().attr("id") == "luckysheet-modal-dialog-config-value") {
  57118. _this.resetOrderby($(this));
  57119. }
  57120. $(this).remove();
  57121. }
  57122. });
  57123. }
  57124. _this.refreshPivotTable();
  57125. _this.showvaluecolrow();
  57126. });
  57127. $("#luckysheet-dialog-pivotTable-clearitem").click(function() {
  57128. $("#luckysheet-modal-dialog-config-filter, #luckysheet-modal-dialog-config-row, #luckysheet-modal-dialog-config-column, #luckysheet-modal-dialog-config-value").find(".luckysheet-modal-dialog-slider-config-item").each(function() {
  57129. $(this).remove();
  57130. });
  57131. $("#luckysheet-modal-dialog-pivotTable-list").find(".luckysheet-modal-dialog-slider-list-item").each(function() {
  57132. $(this).find(".luckysheet-slider-list-item-selected").find("i").remove();
  57133. });
  57134. _this.refreshPivotTable();
  57135. _this.showvaluecolrow();
  57136. });
  57137. }
  57138. if (restore == null) {
  57139. restore = false;
  57140. }
  57141. if (_this.celldata.length <= 1 && _this.celldata[0].length <= 1) {
  57142. if (isEditMode()) {
  57143. alert(locale_pivotTable.errorIncreaseRange);
  57144. } else {
  57145. tooltip_default.info("", locale_pivotTable.errorIncreaseRange);
  57146. }
  57147. }
  57148. let selecteditem = "", selecteditemIndex = 1, selecteditemtest = {}, selecteditemNullIndex = 1;
  57149. for (let i2 = 0; i2 < _this.celldata[0].length; i2++) {
  57150. let name2;
  57151. if (!!_this.celldata[0][i2] && !!_this.celldata[0][i2]["m"]) {
  57152. name2 = _this.celldata[0][i2]["m"];
  57153. } else {
  57154. name2 = getcellvalue(0, i2, _this.celldata);
  57155. }
  57156. if (name2 != null) {
  57157. name2 = name2.toString();
  57158. }
  57159. if (name2 == null || $.trim(name2.toString()).length == 0) {
  57160. name2 = locale_pivotTable.titleColumn + " " + selecteditemNullIndex;
  57161. }
  57162. selecteditemNullIndex++;
  57163. if (name2 in selecteditemtest) {
  57164. name2 = name2 + selecteditemIndex++;
  57165. if (name2 in selecteditemtest) {
  57166. name2 = name2 + selecteditemIndex++;
  57167. if (name2 in selecteditemtest) {
  57168. name2 = name2 + selecteditemIndex++;
  57169. }
  57170. }
  57171. }
  57172. selecteditemtest[name2] = 1;
  57173. let dataother = "", style = "";
  57174. if (restore && _this.filterparm != null) {
  57175. if (_this.filterparm[i2.toString()] != null) {
  57176. let itemset = _this.filterparm[i2.toString()];
  57177. if (itemset.rowhidden != null) {
  57178. dataother += "data-rowhidden='" + JSON.stringify(itemset.rowhidden) + "'";
  57179. }
  57180. if (itemset.selected != null) {
  57181. dataother += "data-selected='" + JSON.stringify(itemset.selected) + "'";
  57182. }
  57183. if (itemset.caljs != null) {
  57184. let caljsset = itemset.caljs;
  57185. if (caljsset.value != null) {
  57186. dataother += "data-byconditionvalue='" + caljsset.value + "'";
  57187. }
  57188. if (caljsset.type != null) {
  57189. dataother += "data-byconditiontype='" + caljsset.type + "'";
  57190. }
  57191. if (caljsset.text != null) {
  57192. dataother += "data-byconditiontext='" + caljsset.text + "'";
  57193. }
  57194. if (caljsset.value1 != null) {
  57195. dataother += "data-byconditionvalue1='" + caljsset.value1 + "'";
  57196. }
  57197. if (caljsset.value2 != null) {
  57198. dataother += "data-byconditionvalue2='" + caljsset.value2 + "'";
  57199. }
  57200. }
  57201. }
  57202. }
  57203. if (dataother.length > 0) {
  57204. style = "display:block;";
  57205. }
  57206. selecteditem += '<div class="luckysheet-modal-dialog-slider-list-item" ' + dataother + ' data-index="' + i2 + '" data-name="' + name2 + '"><div title="' + locale_pivotTable.titleAddColumn + '" class="luckysheet-slider-list-item-selected"><div></div></div><div title="' + locale_pivotTable.titleMoveColumn + '" class="luckysheet-slider-list-item-name" ' + dataother + ' data-index="' + i2 + '" data-name="' + name2 + '">' + name2 + '</div><div title="' + locale_pivotTable.titleClearColumnFilter + '" class="luckysheet-slider-list-item-filtered" style="' + style + '"><i class="fa fa-filter luckysheet-mousedown-cancel" aria-hidden="true"></i><i class="fa fa-times" aria-hidden="true"></i></div><div title="' + locale_pivotTable.titleFilterColumn + '" class="luckysheet-slider-list-item-filter"><i class="fa fa-sort-desc" aria-hidden="true"></i></div></div>';
  57207. }
  57208. $("#luckysheet-modal-dialog-pivotTable-list").html(selecteditem);
  57209. $("#luckysheetpivottablevaluecolrowshow").hide();
  57210. $("#luckysheetpivottablevaluecolrow").prop("checked", true);
  57211. $("#luckysheetpivottablevaluecolrow1").prop("checked", false);
  57212. $("#luckysheet-modal-dialog-config-filter, #luckysheet-modal-dialog-config-row, #luckysheet-modal-dialog-config-column, #luckysheet-modal-dialog-config-value").empty();
  57213. if (restore) {
  57214. if (_this.filter != null && _this.filter.length > 0) {
  57215. for (let i2 = 0; i2 < _this.filter.length; i2++) {
  57216. let item2 = _this.filter[i2];
  57217. let itemHTML = '<div title="' + name + '" class="luckysheet-modal-dialog-slider-config-item" data-index="' + item2.index + '" data-name="' + item2.name + '"><div class="luckysheet-modal-dialog-slider-config-item-txt" data-index="' + item2.index + '" data-name="' + item2.name + '">' + item2.name + '</div><div class="luckysheet-modal-dialog-slider-config-item-icon"><i class="fa fa-sort-desc" aria-hidden="true"></i></div></div>';
  57218. $("#luckysheet-modal-dialog-config-filter").append(itemHTML);
  57219. let $seleted = $("#luckysheet-modal-dialog-pivotTable-list .luckysheet-modal-dialog-slider-list-item").eq(item2.index).find(".luckysheet-slider-list-item-selected");
  57220. if ($seleted.find("i").length == 0) {
  57221. $seleted.append('<i class="fa fa-check luckysheet-mousedown-cancel"></i>');
  57222. }
  57223. }
  57224. }
  57225. if (_this.row != null && _this.row.length > 0) {
  57226. for (let i2 = 0; i2 < _this.row.length; i2++) {
  57227. let item2 = _this.row[i2];
  57228. let otherset = "";
  57229. if (item2.order != null) {
  57230. otherset += "data-order = '" + item2.order + "'";
  57231. }
  57232. if (item2.orderby != null) {
  57233. otherset += "data-orderby = '" + item2.orderby + "'";
  57234. }
  57235. if (item2.order != null) {
  57236. otherset += "data-stastic = '" + item2.stastic + "'";
  57237. }
  57238. let itemHTML = '<div title="' + name + '" class="luckysheet-modal-dialog-slider-config-item" ' + otherset + ' data-index="' + item2.index + '" data-name="' + item2.name + '"><div class="luckysheet-modal-dialog-slider-config-item-txt" ' + otherset + ' data-index="' + item2.index + '" data-name="' + item2.name + '">' + item2.name + '</div><div class="luckysheet-modal-dialog-slider-config-item-icon"><i class="fa fa-sort-desc" aria-hidden="true"></i></div></div>';
  57239. $("#luckysheet-modal-dialog-config-row").append(itemHTML);
  57240. let $seleted = $("#luckysheet-modal-dialog-pivotTable-list .luckysheet-modal-dialog-slider-list-item").eq(item2.index).find(".luckysheet-slider-list-item-selected");
  57241. if ($seleted.find("i").length == 0) {
  57242. $seleted.append('<i class="fa fa-check luckysheet-mousedown-cancel"></i>');
  57243. }
  57244. }
  57245. }
  57246. if (_this.column != null && _this.column.length > 0) {
  57247. for (let i2 = 0; i2 < _this.column.length; i2++) {
  57248. let item2 = _this.column[i2];
  57249. let otherset = "";
  57250. if (item2.order != null) {
  57251. otherset += "data-order = '" + item2.order + "'";
  57252. }
  57253. if (item2.orderby != null) {
  57254. otherset += "data-orderby = '" + item2.orderby + "'";
  57255. }
  57256. if (item2.order != null) {
  57257. otherset += "data-stastic = '" + item2.stastic + "'";
  57258. }
  57259. let itemHTML = '<div title="' + name + '" class="luckysheet-modal-dialog-slider-config-item" ' + otherset + ' data-index="' + item2.index + '" data-name="' + item2.name + '"><div class="luckysheet-modal-dialog-slider-config-item-txt" ' + otherset + ' data-index="' + item2.index + '" data-name="' + item2.name + '">' + item2.name + '</div><div class="luckysheet-modal-dialog-slider-config-item-icon"><i class="fa fa-sort-desc" aria-hidden="true"></i></div></div>';
  57260. $("#luckysheet-modal-dialog-config-column").append(itemHTML);
  57261. let $seleted = $("#luckysheet-modal-dialog-pivotTable-list .luckysheet-modal-dialog-slider-list-item").eq(item2.index).find(".luckysheet-slider-list-item-selected");
  57262. if ($seleted.find("i").length == 0) {
  57263. $seleted.append('<i class="fa fa-check luckysheet-mousedown-cancel"></i>');
  57264. }
  57265. }
  57266. }
  57267. if (_this.values != null && _this.values.length > 0) {
  57268. for (let i2 = 0; i2 < _this.values.length; i2++) {
  57269. let item2 = _this.values[i2];
  57270. let otherset = "";
  57271. if (item2.sumtype != null) {
  57272. otherset += "data-sumtype = '" + item2.sumtype + "'";
  57273. }
  57274. if (item2.nameindex != null) {
  57275. otherset += "data-nameindex = '" + item2.nameindex + "'";
  57276. }
  57277. let itemHTML = '<div title="' + name + '" class="luckysheet-modal-dialog-slider-config-item" ' + otherset + ' data-index="' + item2.index + '" data-name="' + item2.name + '"><div class="luckysheet-modal-dialog-slider-config-item-txt" ' + otherset + ' data-index="' + item2.index + '" data-name="' + item2.name + '">' + _this.getSumTypeName(item2.sumtype) + ":" + item2.name + '</div><div class="luckysheet-modal-dialog-slider-config-item-icon"><i class="fa fa-sort-desc" aria-hidden="true"></i></div></div>';
  57278. $("#luckysheet-modal-dialog-config-value").append(itemHTML);
  57279. let $seleted = $("#luckysheet-modal-dialog-pivotTable-list .luckysheet-modal-dialog-slider-list-item").eq(item2.index).find(".luckysheet-slider-list-item-selected");
  57280. if ($seleted.find("i").length == 0) {
  57281. $seleted.append('<i class="fa fa-check luckysheet-mousedown-cancel"></i>');
  57282. }
  57283. }
  57284. if (_this.values.length >= 2) {
  57285. $("#luckysheetpivottablevaluecolrowshow").show();
  57286. if (_this.showType == "column") {
  57287. $("#luckysheetpivottablevaluecolrow").prop("checked", true);
  57288. $("#luckysheetpivottablevaluecolrowshow label[for='luckysheetpivottablevaluecolrow']").addClass("ui-state-active");
  57289. $("#luckysheetpivottablevaluecolrow1").prop("checked", false);
  57290. $("#luckysheetpivottablevaluecolrowshow label[for='luckysheetpivottablevaluecolrow1']").removeClass("ui-state-active");
  57291. } else {
  57292. $("#luckysheetpivottablevaluecolrow1").prop("checked", true);
  57293. $("#luckysheetpivottablevaluecolrowshow label[for='luckysheetpivottablevaluecolrow1']").addClass("ui-state-active");
  57294. $("#luckysheetpivottablevaluecolrow").prop("checked", false);
  57295. $("#luckysheetpivottablevaluecolrowshow label[for='luckysheetpivottablevaluecolrow']").removeClass("ui-state-active");
  57296. }
  57297. }
  57298. }
  57299. }
  57300. $("#luckysheet-dialog-pivotTable-range").html(getRangetxt(_this.pivotDataSheetIndex, _this.pivot_select_save));
  57301. $("#luckysheet-modal-dialog-slider-pivot").show();
  57302. luckysheetsizeauto(false);
  57303. },
  57304. getComposeArray: function(data) {
  57305. if (data.length == 0) {
  57306. return [];
  57307. }
  57308. let ret = [];
  57309. for (let i2 = 0; i2 < data.length; i2++) {
  57310. let name2 = "";
  57311. for (let x = 0; x <= i2; x++) {
  57312. if (!!data[x] && !!data[x]["m"]) {
  57313. name2 += data[x]["m"];
  57314. } else {
  57315. name2 += getcellvalue(x, null, data);
  57316. }
  57317. }
  57318. ret.push(name2);
  57319. }
  57320. return ret;
  57321. },
  57322. getnameArray: function(data, field) {
  57323. if (data.length == 0) {
  57324. return [];
  57325. }
  57326. if (field.length == 0) {
  57327. return [];
  57328. }
  57329. let ret = [];
  57330. for (let i2 = 0; i2 < field.length; i2++) {
  57331. let c_value;
  57332. if (!!data[field[i2].index] && !!data[field[i2].index]["m"]) {
  57333. c_value = data[field[i2].index]["m"];
  57334. } else {
  57335. c_value = getcellvalue(field[i2].index, null, data);
  57336. }
  57337. ret.push(c_value);
  57338. }
  57339. return ret;
  57340. },
  57341. getTitleFromGroup: function(group, config, dataposition) {
  57342. let _this = this;
  57343. let orderbygroup = _this.orderbygroup(group, config, dataposition);
  57344. return _this.generategrouparraymain(orderbygroup, config);
  57345. },
  57346. orderbygroup: function(group, config, dataposition) {
  57347. let _this = this;
  57348. let stackset = [];
  57349. if (group.length == 0) {
  57350. return [];
  57351. }
  57352. stackset = group;
  57353. let d = null, alllength = stackset.length, alllengthInital = stackset.length, a = 0;
  57354. while (alllength != 0) {
  57355. d = stackset[a++];
  57356. alllength--;
  57357. if (d.children != null && d.children.length > 0) {
  57358. d.children = _this.orderbygroupchildren(d.children, config[d.index].orderby, config[d.index].order, dataposition);
  57359. for (let i2 = 0; i2 < d.children.length; i2++) {
  57360. stackset.push(d.children[i2]);
  57361. alllength++;
  57362. }
  57363. }
  57364. }
  57365. return group.splice(0, alllengthInital);
  57366. },
  57367. orderbygroupchildren: function(childrens, orderby, order, dataposition) {
  57368. if (childrens.length == 0) {
  57369. return [];
  57370. }
  57371. let isAsc = false;
  57372. if (order == null || order == "asc") {
  57373. isAsc = true;
  57374. }
  57375. const _locale = locale_default();
  57376. const locale_filter = _locale.filter;
  57377. let a = function(x, y) {
  57378. let f = null, s = null;
  57379. if (orderby == "self" || orderby == null) {
  57380. if (x.name == null) {
  57381. f = locale_filter.valueBlank;
  57382. } else {
  57383. f = x.name.toString();
  57384. }
  57385. if (y.name == null) {
  57386. s = locale_filter.valueBlank;
  57387. } else {
  57388. s = y.name.toString();
  57389. }
  57390. if (isdatetime(f) && isdatetime(s)) {
  57391. return diff(f, s);
  57392. }
  57393. } else {
  57394. f = parseFloat(dataposition[x.orderby].result);
  57395. s = parseFloat(dataposition[y.orderby].result);
  57396. }
  57397. if (!isNaN(f) && !isNaN(s)) {
  57398. return (0, import_numeral3.default)(f).value() - (0, import_numeral3.default)(s).value();
  57399. } else if (isNaN(f) && isNaN(s)) {
  57400. return f.localeCompare(s);
  57401. } else if (isNaN(f)) {
  57402. return 1;
  57403. } else if (isNaN(s)) {
  57404. return -1;
  57405. }
  57406. };
  57407. let d = function(x, y) {
  57408. let f = null, s = null;
  57409. if (orderby == "self" || orderby == null) {
  57410. if (x.name == null) {
  57411. f = locale_filter.valueBlank;
  57412. } else {
  57413. f = x.name.toString();
  57414. }
  57415. if (y.name == null) {
  57416. s = locale_filter.valueBlank;
  57417. } else {
  57418. s = y.name.toString();
  57419. }
  57420. if (isdatetime(f) && isdatetime(s)) {
  57421. return diff(f, s);
  57422. }
  57423. } else {
  57424. f = parseFloat(dataposition[x.orderby].result);
  57425. s = parseFloat(dataposition[y.orderby].result);
  57426. }
  57427. if (!isNaN(f) && !isNaN(s)) {
  57428. return (0, import_numeral3.default)(s).value() - (0, import_numeral3.default)(f).value();
  57429. } else if (isNaN(f) && isNaN(s)) {
  57430. return s.localeCompare(f);
  57431. } else if (isNaN(f)) {
  57432. return -1;
  57433. } else if (isNaN(s)) {
  57434. return 1;
  57435. }
  57436. };
  57437. if (isAsc) {
  57438. return childrens.sort(a);
  57439. } else {
  57440. return childrens.sort(d);
  57441. }
  57442. },
  57443. generategroupaddstatic: function(arr, name2) {
  57444. let stasticarr = [];
  57445. const _locale = locale_default();
  57446. const locale_pivotTable = _locale.pivotTable;
  57447. for (let a = 0; a < arr[0].length; a++) {
  57448. if (a == 0) {
  57449. if (name2 == locale_pivotTable.valueSum) {
  57450. stasticarr.push(name2);
  57451. } else {
  57452. stasticarr.push({"name": name2, "issum": true});
  57453. }
  57454. } else {
  57455. stasticarr.push("");
  57456. }
  57457. }
  57458. return stasticarr;
  57459. },
  57460. generategrouparraymain: function(group, config) {
  57461. let _this = this;
  57462. let ret = [];
  57463. for (let i2 = 0; i2 < group.length; i2++) {
  57464. let name2 = group[i2].name;
  57465. let arr = _this.generategrouparray(group[i2].children, config, 1);
  57466. if (config[0].stastic == "1" || config[0].stastic == null) {
  57467. arr.push(_this.generategroupaddstatic(arr, name2));
  57468. }
  57469. ret = ret.concat(arr);
  57470. }
  57471. return ret;
  57472. },
  57473. generategrouparray: function(group, config, level) {
  57474. let _this = this;
  57475. let ret = [];
  57476. for (let i2 = 0; i2 < group.length; i2++) {
  57477. let name2 = group[i2].name;
  57478. let arr;
  57479. if (group[i2].children == 0 || group[i2].children.length == 0) {
  57480. arr = [name2];
  57481. ret.push(arr);
  57482. } else {
  57483. arr = _this.generategrouparray(group[i2].children, config, level + 1);
  57484. for (let a = 0; a < arr.length; a++) {
  57485. arr[a].unshift(name2);
  57486. }
  57487. if (config[level].stastic == "1" || config[level].stastic == null) {
  57488. arr.push(_this.generategroupaddstatic(arr, name2));
  57489. }
  57490. ret = ret.concat(arr);
  57491. }
  57492. }
  57493. return ret;
  57494. },
  57495. addStatisticsData: function(dataposition, valueobj, indicator, d_value) {
  57496. if (dataposition[indicator] == null) {
  57497. dataposition[indicator] = {
  57498. "data": [],
  57499. "count": 0,
  57500. "max": -Infinity,
  57501. "min": Infinity,
  57502. "counta": 0,
  57503. "countunique": 0,
  57504. "countuniquedata": {},
  57505. "sum": 0,
  57506. "digitaldata": [],
  57507. "sumtype": valueobj.sumtype,
  57508. "index": valueobj.index,
  57509. "name": valueobj.fullname,
  57510. "acc": 0
  57511. };
  57512. }
  57513. if (isdatatypemulti(d_value)["num"] === true) {
  57514. let num = numFormat2(d_value, 6);
  57515. dataposition[indicator]["digitaldata"].push(num);
  57516. dataposition[indicator]["count"] += 1;
  57517. dataposition[indicator]["sum"] += num;
  57518. if (num > dataposition[indicator]["max"]) {
  57519. dataposition[indicator]["max"] = num;
  57520. }
  57521. if (num < dataposition[indicator]["min"]) {
  57522. dataposition[indicator]["min"] = num;
  57523. }
  57524. let newAcc = numfloatlen(num);
  57525. if (newAcc > dataposition[indicator]["acc"]) {
  57526. dataposition[indicator]["acc"] = newAcc;
  57527. }
  57528. }
  57529. if (d_value != "") {
  57530. dataposition[indicator]["data"].push(d_value);
  57531. dataposition[indicator]["counta"] += 1;
  57532. if (!(d_value in dataposition[indicator]["countuniquedata"])) {
  57533. dataposition[indicator]["countuniquedata"][d_value] = 1;
  57534. dataposition[indicator]["countunique"] += 1;
  57535. }
  57536. }
  57537. },
  57538. dataHandler: function(column, row, values, showType, celldata) {
  57539. let _this = this;
  57540. const _locale = locale_default();
  57541. const locale_filter = _locale.filter;
  57542. const locale_pivotTable = _locale.pivotTable;
  57543. if (showType == null) {
  57544. showType = "column";
  57545. }
  57546. if (column.length == 0 && row.length == 0 && values.length == 0 || celldata.length == 0) {
  57547. _this.pivotDatas = [];
  57548. return [];
  57549. }
  57550. let dataposition = {}, data = celldata, datarowtitle = [], datarowtitlegroup = [], datarowposition = {}, datarowposition_i = 0, datacoltitle = [], datacoltitlegroup = [], datacolposition = {}, datacolposition_i = 0;
  57551. for (let i2 = 1; i2 < data.length; i2++) {
  57552. let d = data[i2];
  57553. let groupbyrowtxt = "", groupbycoltxt = "", rowtxt = "", rowtitle = [], rowtitlename = [], coltxt = "", coltitle = [], coltitlename = [];
  57554. rowtitlename = _this.getnameArray(d, row);
  57555. coltitlename = _this.getnameArray(d, column);
  57556. rowtitle = _this.getComposeArray(rowtitlename);
  57557. coltitle = _this.getComposeArray(coltitlename);
  57558. if (rowtitle.length > 0) {
  57559. rowtitle.unshift(locale_pivotTable.valueSum);
  57560. }
  57561. if (coltitle.length > 0) {
  57562. coltitle.unshift(locale_pivotTable.valueSum);
  57563. }
  57564. let curentLevelobj_row = datarowposition, curentLevelarr_row = datarowtitlegroup;
  57565. for (let r2 = 0; r2 < rowtitle.length; r2++) {
  57566. let item2 = rowtitle[r2], name2 = r2 == 0 ? locale_pivotTable.valueSum : rowtitlename[r2 - 1];
  57567. if (curentLevelobj_row[r2.toString()] != null && curentLevelobj_row[r2.toString()][item2] != null) {
  57568. curentLevelarr_row = curentLevelarr_row[curentLevelobj_row[r2.toString()][item2]].children;
  57569. } else {
  57570. let orderby = r2 == 0 ? "self" : row[r2 - 1].orderby == "self" || row[r2 - 1].orderby == null ? item2 : showType == "column" ? item2 + values[parseInt(row[r2 - 1].orderby)].fullname : item2 + locale_pivotTable.valueSum;
  57571. if (name2 == null) {
  57572. name2 = locale_filter.valueBlank;
  57573. }
  57574. curentLevelarr_row.push({"name": name2, "fullname": item2, "index": r2, "orderby": orderby, "children": []});
  57575. if (curentLevelobj_row[r2.toString()] == null) {
  57576. curentLevelobj_row[r2.toString()] = {};
  57577. }
  57578. if (curentLevelobj_row[r2.toString()][item2] == null) {
  57579. curentLevelobj_row[r2.toString()][item2] = curentLevelarr_row.length - 1;
  57580. }
  57581. curentLevelarr_row = curentLevelarr_row[curentLevelarr_row.length - 1].children;
  57582. }
  57583. }
  57584. let curentLevelobj_col = datacolposition, curentLevelarr_col = datacoltitlegroup;
  57585. for (let r2 = 0; r2 < coltitle.length; r2++) {
  57586. let item2 = coltitle[r2], name2 = r2 == 0 ? locale_pivotTable.valueSum : coltitlename[r2 - 1];
  57587. if (curentLevelobj_col[r2.toString()] != null && curentLevelobj_col[r2.toString()][item2] != null) {
  57588. curentLevelarr_col = curentLevelarr_col[curentLevelobj_col[r2.toString()][item2]].children;
  57589. } else {
  57590. let orderby = r2 == 0 ? "self" : column[r2 - 1].orderby == "self" || column[r2 - 1].orderby == null ? item2 : showType == "column" ? locale_pivotTable.valueSum + item2 : values[parseInt(column[r2 - 1].orderby)].fullname + item2;
  57591. if (name2 == null) {
  57592. name2 = locale_filter.valueBlank;
  57593. }
  57594. curentLevelarr_col.push({"name": name2, "fullname": item2, "index": r2, "orderby": orderby, "children": []});
  57595. if (curentLevelobj_col[r2.toString()] == null) {
  57596. curentLevelobj_col[r2.toString()] = {};
  57597. }
  57598. if (curentLevelobj_col[r2.toString()][item2] == null) {
  57599. curentLevelobj_col[r2.toString()][item2] = curentLevelarr_col.length - 1;
  57600. }
  57601. curentLevelarr_col = curentLevelarr_col[curentLevelarr_col.length - 1].children;
  57602. }
  57603. }
  57604. let v_str = "";
  57605. for (let v = 0; v < values.length; v++) {
  57606. let d_value = getcellvalue(values[v].index, null, d);
  57607. let coltitle_c = [].concat(coltitle), rowtitle_c = [].concat(rowtitle);
  57608. if (showType == "column") {
  57609. if (coltitle_c.length > 0) {
  57610. coltitle_c.push("");
  57611. coltitle_c = coltitle_c.join(values[v].fullname + "|||").split("|||").slice(0, coltitle_c.length - 1);
  57612. } else {
  57613. coltitle_c.push(values[v].fullname);
  57614. }
  57615. } else {
  57616. if (rowtitle_c.length > 0) {
  57617. rowtitle_c.push("");
  57618. rowtitle_c = rowtitle_c.join(values[v].fullname + "|||").split("|||").slice(0, rowtitle_c.length - 1);
  57619. } else {
  57620. rowtitle_c.push(values[v].fullname);
  57621. }
  57622. }
  57623. if (coltitle_c.length == 0) {
  57624. coltitle_c.push("");
  57625. }
  57626. if (rowtitle_c.length == 0) {
  57627. rowtitle_c.push("");
  57628. }
  57629. for (let r2 = 0; r2 < rowtitle_c.length; r2++) {
  57630. for (let c2 = 0; c2 < coltitle_c.length; c2++) {
  57631. let indicator = rowtitle_c[r2] + coltitle_c[c2];
  57632. _this.addStatisticsData(dataposition, values[v], indicator, d_value);
  57633. }
  57634. }
  57635. }
  57636. }
  57637. for (let indicator in dataposition) {
  57638. let json2 = dataposition[indicator];
  57639. if (json2.sumtype == "SUM") {
  57640. json2.result = json2.sum;
  57641. } else if (json2.sumtype == "COUNT") {
  57642. json2.result = json2.count;
  57643. } else if (json2.sumtype == "COUNTA") {
  57644. json2.result = json2.counta;
  57645. } else if (json2.sumtype == "COUNTUNIQUE") {
  57646. json2.result = json2.countunique;
  57647. } else if (json2.sumtype == "AVERAGE") {
  57648. json2.result = numFormat2(json2.sum / json2.count);
  57649. } else if (json2.sumtype == "MAX") {
  57650. json2.result = json2.max;
  57651. } else if (json2.sumtype == "MIN") {
  57652. json2.result = json2.min;
  57653. } else if (json2.sumtype == "MEDIAN") {
  57654. let numArr = json2.digitaldata.sort(function(a, b) {
  57655. return a - b;
  57656. });
  57657. let numLen = numArr.length;
  57658. let numindex = parseInt(numLen / 2);
  57659. if (numLen % 2 == 0) {
  57660. json2.result = (numArr[numindex - 1] + numArr[numindex]) / 2;
  57661. } else {
  57662. json2.result = numArr[numindex];
  57663. }
  57664. } else if (json2.sumtype == "PRODUCT") {
  57665. json2.result = new Function("return " + json2.digitaldata.join("*"))();
  57666. } else if (json2.sumtype == "STDEV") {
  57667. let mean = json2.sum / json2.count;
  57668. json2.result = analysis_default.STDEV(mean, json2.digitaldata);
  57669. } else if (json2.sumtype == "STDEVP") {
  57670. let mean = json2.sum / json2.count;
  57671. json2.result = analysis_default.STDEVP(mean, json2.digitaldata);
  57672. } else if (json2.sumtype == "let") {
  57673. let mean = json2.sum / json2.count;
  57674. json2.result = analysis_default.let(mean, json2.digitaldata);
  57675. } else if (json2.sumtype == "VARP") {
  57676. let mean = json2.sum / json2.count;
  57677. json2.result = analysis_default.VARP(mean, json2.digitaldata);
  57678. }
  57679. let newAcc = numfloatlen(json2.result);
  57680. if (newAcc > json2.acc) {
  57681. json2.acc = newAcc;
  57682. }
  57683. json2.result = numFormat2(json2.result, json2.acc);
  57684. }
  57685. datarowtitle = _this.getTitleFromGroup(datarowtitlegroup, row, dataposition);
  57686. datacoltitle = _this.getTitleFromGroup(datacoltitlegroup, column, dataposition);
  57687. if (showType == "column") {
  57688. if (datacoltitle.length > 0 && datacoltitle[0].length > 0) {
  57689. datacoltitle = _this.addValuesToTitle(datacoltitle, values);
  57690. } else {
  57691. for (let v = 0; v < values.length; v++) {
  57692. datacoltitle.push([values[v].fullname]);
  57693. }
  57694. }
  57695. } else {
  57696. if (datarowtitle.length > 0 && datarowtitle[0].length > 0) {
  57697. datarowtitle = _this.addValuesToTitle(datarowtitle, values);
  57698. } else {
  57699. for (let v = 0; v < values.length; v++) {
  57700. datarowtitle.push([values[v].fullname]);
  57701. }
  57702. }
  57703. }
  57704. let datacoltitle_index = datacoltitle;
  57705. datacoltitle = array_default.transpose(datacoltitle, false);
  57706. let valuenslen = values.length == 0 ? 0 : 1;
  57707. let rowLen = (datacoltitle.length == 0 ? valuenslen : datacoltitle.length) + (datarowtitle.length == 0 ? valuenslen : datarowtitle.length), colLen = (datacoltitle.length == 0 ? valuenslen : datacoltitle[0].length) + (datarowtitle.length == 0 ? valuenslen : datarowtitle[0].length);
  57708. let rowOver = datacoltitle.length, colOver = datarowtitle.length == 0 ? 0 : datarowtitle[0].length;
  57709. let retdata = [];
  57710. for (let r2 = 0; r2 < rowLen; r2++) {
  57711. retdata[r2] = new Array(colLen);
  57712. for (let c2 = 0; c2 < colLen; c2++) {
  57713. let drt = datarowtitle[r2 - rowOver];
  57714. if (r2 < rowOver && c2 < colOver) {
  57715. retdata[r2][c2] = "";
  57716. } else if (r2 < rowOver && c2 >= colOver) {
  57717. if (datacoltitle[r2] != null) {
  57718. if (getObjType(datacoltitle[r2][c2 - colOver]) == "object") {
  57719. retdata[r2][c2] = datacoltitle[r2][c2 - colOver].name + locale_pivotTable.valueSum;
  57720. } else {
  57721. retdata[r2][c2] = datacoltitle[r2][c2 - colOver];
  57722. }
  57723. } else {
  57724. retdata[r2][c2] = "";
  57725. }
  57726. } else if (r2 >= rowOver && c2 < colOver) {
  57727. if (drt != null) {
  57728. if (getObjType(drt[c2]) == "object") {
  57729. retdata[r2][c2] = drt[c2].name + locale_pivotTable.valueSum;
  57730. } else {
  57731. retdata[r2][c2] = drt[c2];
  57732. }
  57733. } else {
  57734. retdata[r2][c2] = "";
  57735. }
  57736. } else {
  57737. let prefix = "";
  57738. if (drt != null) {
  57739. if (!(drt instanceof Array) || drt.length == 1) {
  57740. if (drt instanceof Array) {
  57741. prefix = drt[0];
  57742. } else {
  57743. prefix = drt;
  57744. }
  57745. } else {
  57746. for (let x = 0; x < drt.length; x++) {
  57747. if (getObjType(drt[x]) == "object") {
  57748. prefix += drt[x].name;
  57749. } else {
  57750. prefix += drt[x];
  57751. }
  57752. }
  57753. }
  57754. }
  57755. let suffix = "";
  57756. let dct = datacoltitle_index[c2 - colOver];
  57757. if (dct != null) {
  57758. if (!(dct instanceof Array) || dct.length == 1) {
  57759. if (dct instanceof Array) {
  57760. suffix = dct[0];
  57761. } else {
  57762. suffix = dct;
  57763. }
  57764. } else {
  57765. for (let x = 0; x < dct.length; x++) {
  57766. if (getObjType(dct[x]) == "object") {
  57767. suffix += dct[x].name;
  57768. } else {
  57769. suffix += dct[x];
  57770. }
  57771. }
  57772. }
  57773. }
  57774. let indicator = prefix;
  57775. if (prefix != "" && suffix != "") {
  57776. indicator = prefix + suffix;
  57777. } else if (prefix == "") {
  57778. indicator = suffix;
  57779. }
  57780. if (dataposition[indicator] == null) {
  57781. retdata[r2][c2] = "";
  57782. } else {
  57783. retdata[r2][c2] = dataposition[indicator].result;
  57784. }
  57785. }
  57786. }
  57787. }
  57788. if (values.length == 1 && column.length > 0 && row.length > 0) {
  57789. retdata[0][0] = values[0].fullname;
  57790. retdata.splice(column.length, 1);
  57791. } else if (values.length == 1 && column.length > 0) {
  57792. let titleRow = retdata.splice(column.length, 1);
  57793. let newRetdata = [];
  57794. for (let r2 = 0; r2 < retdata.length; r2++) {
  57795. let row2 = [];
  57796. if (r2 == retdata.length - 1) {
  57797. row2.push(titleRow[0][0]);
  57798. } else {
  57799. row2.push("");
  57800. }
  57801. for (let c2 = 0; c2 < retdata[r2].length - 1; c2++) {
  57802. row2.push(retdata[r2][c2]);
  57803. }
  57804. newRetdata.push(row2);
  57805. }
  57806. retdata = newRetdata;
  57807. }
  57808. _this.pivotDatas = retdata;
  57809. return retdata;
  57810. },
  57811. drillDown: function(row_index, col_index) {
  57812. if (!checkProtectionAuthorityNormal(store_default.currentSheetIndex, "usePivotTablereports")) {
  57813. return;
  57814. }
  57815. let _this = this;
  57816. let cell = _this.pivotDatas[row_index][col_index];
  57817. let d = $.extend(true, [], sheetmanage_default.nulldata);
  57818. const _locale = locale_default();
  57819. const locale_filter = _locale.filter;
  57820. const locale_pivotTable = _locale.pivotTable;
  57821. let selecteditemNullIndex = 1;
  57822. for (let i2 = 0; i2 < _this.celldata[0].length; i2++) {
  57823. let name2;
  57824. if (!!_this.celldata[0][i2] && !!_this.celldata[0][i2]["m"]) {
  57825. name2 = _this.celldata[0][i2]["m"];
  57826. } else {
  57827. name2 = getcellvalue(0, i2, _this.celldata);
  57828. }
  57829. if (name2 != null) {
  57830. name2 = name2.toString();
  57831. }
  57832. if (name2 == null || $.trim(name2.toString()).length == 0) {
  57833. name2 = locale_pivotTable.titleColumn + " " + selecteditemNullIndex;
  57834. }
  57835. selecteditemNullIndex++;
  57836. d[0][i2] = name2;
  57837. }
  57838. let obj = {};
  57839. if (_this.row != null && _this.row.length > 0) {
  57840. for (let a = 0; a < _this.row.length; a++) {
  57841. obj[_this.row[a]["index"]] = _this.pivotDatas[row_index][a];
  57842. }
  57843. }
  57844. if (_this.column != null && _this.column.length > 0) {
  57845. for (let b = 0; b < _this.column.length; b++) {
  57846. obj[_this.column[b]["index"]] = _this.pivotDatas[b][col_index];
  57847. }
  57848. }
  57849. let rowArr = [];
  57850. for (let j = 1; j < _this.celldata.length; j++) {
  57851. let isEqual = true;
  57852. for (let x in obj) {
  57853. let value;
  57854. if (!!_this.celldata[j][x] && !!_this.celldata[j][x]["m"]) {
  57855. value = _this.celldata[j][x]["m"];
  57856. } else {
  57857. value = getcellvalue(j, x, _this.celldata);
  57858. }
  57859. if (value != null) {
  57860. value = value.toString();
  57861. } else {
  57862. value = locale_filter.valueBlank;
  57863. }
  57864. if (value != obj[x]) {
  57865. isEqual = false;
  57866. break;
  57867. }
  57868. }
  57869. if (isEqual) {
  57870. rowArr.push(j);
  57871. }
  57872. }
  57873. for (let r2 = 0; r2 < rowArr.length; r2++) {
  57874. for (let c2 = 0; c2 < _this.celldata[0].length; c2++) {
  57875. let value;
  57876. if (!!_this.celldata[rowArr[r2]][c2] && !!_this.celldata[rowArr[r2]][c2]["m"]) {
  57877. value = _this.celldata[rowArr[r2]][c2]["m"];
  57878. } else {
  57879. value = getcellvalue(rowArr[r2], c2, _this.celldata);
  57880. }
  57881. if (value != null) {
  57882. value = value.toString();
  57883. } else {
  57884. value = "";
  57885. }
  57886. d[r2 + 1][c2] = value;
  57887. }
  57888. }
  57889. store_default.luckysheet_select_save = [{"row": [0, rowArr.length], "column": [0, _this.celldata[0].length - 1]}];
  57890. store_default.clearjfundo = false;
  57891. jfrefreshgrid(d, store_default.luckysheet_select_save);
  57892. selectHightlightShow();
  57893. store_default.clearjfundo = true;
  57894. }
  57895. };
  57896. pivotTable_default = pivotTable;
  57897. }
  57898. });
  57899. // src/controllers/sparkline.js
  57900. var createClass, SPFormat, clipval, quartile, normalizeValue, normalizeValues, all, remove, isNumber, formatNumber, RangeMap, luckysheetSparkline, barHighlightMixin, _luckysheetSparkLineOptions, _luckysheetSparkLineTarget, sparkline_default;
  57901. var init_sparkline = __esm({
  57902. "src/controllers/sparkline.js"() {
  57903. init_store();
  57904. createClass = function() {
  57905. let Class, args;
  57906. Class = function() {
  57907. this.init.apply(this, arguments);
  57908. };
  57909. if (arguments.length > 1) {
  57910. if (arguments[0]) {
  57911. Class.prototype = $.extend(new arguments[0](), arguments[arguments.length - 1]);
  57912. Class._super = arguments[0].prototype;
  57913. } else {
  57914. Class.prototype = arguments[arguments.length - 1];
  57915. }
  57916. if (arguments.length > 2) {
  57917. args = Array.prototype.slice.call(arguments, 1, -1);
  57918. args.unshift(Class.prototype);
  57919. $.extend.apply($, args);
  57920. }
  57921. } else {
  57922. Class.prototype = arguments[0];
  57923. }
  57924. Class.prototype.cls = Class;
  57925. return Class;
  57926. };
  57927. SPFormat = createClass({
  57928. fre: /\{\{([\w.]+?)(:(.+?))?\}\}/g,
  57929. precre: /(\w+)\.(\d+)/,
  57930. init: function(format, fclass) {
  57931. this.format = format;
  57932. this.fclass = fclass;
  57933. },
  57934. render: function(fieldset, lookups, options) {
  57935. let self2 = this, fields = fieldset, match, token, lookupkey, fieldvalue, prec;
  57936. return this.format.replace(this.fre, function() {
  57937. let lookup;
  57938. token = arguments[1];
  57939. lookupkey = arguments[3];
  57940. match = self2.precre.exec(token);
  57941. if (match) {
  57942. prec = match[2];
  57943. token = match[1];
  57944. } else {
  57945. prec = false;
  57946. }
  57947. fieldvalue = fields[token];
  57948. if (fieldvalue === void 0) {
  57949. return "";
  57950. }
  57951. if (lookupkey && lookups && lookups[lookupkey]) {
  57952. lookup = lookups[lookupkey];
  57953. if (lookup.get) {
  57954. return lookups[lookupkey].get(fieldvalue) || fieldvalue;
  57955. } else {
  57956. return lookups[lookupkey][fieldvalue] || fieldvalue;
  57957. }
  57958. }
  57959. if (isNumber(fieldvalue)) {
  57960. if (options.get("numberFormatter")) {
  57961. fieldvalue = options.get("numberFormatter")(fieldvalue);
  57962. } else {
  57963. fieldvalue = formatNumber(fieldvalue, prec, options.get("numberDigitGroupCount"), options.get("numberDigitGroupSep"), options.get("numberDecimalMark"));
  57964. }
  57965. }
  57966. return fieldvalue;
  57967. });
  57968. }
  57969. });
  57970. $.spformat = function(format, fclass) {
  57971. return new SPFormat(format, fclass);
  57972. };
  57973. clipval = function(val, min, max) {
  57974. if (val < min) {
  57975. return min;
  57976. }
  57977. if (val > max) {
  57978. return max;
  57979. }
  57980. return val;
  57981. };
  57982. quartile = function(values, q) {
  57983. let vl;
  57984. if (q === 2) {
  57985. vl = Math.floor(values.length / 2);
  57986. return values.length % 2 ? values[vl] : (values[vl - 1] + values[vl]) / 2;
  57987. } else {
  57988. if (values.length % 2) {
  57989. vl = (values.length * q + q) / 4;
  57990. return vl % 1 ? (values[Math.floor(vl)] + values[Math.floor(vl) - 1]) / 2 : values[vl - 1];
  57991. } else {
  57992. vl = (values.length * q + 2) / 4;
  57993. return vl % 1 ? (values[Math.floor(vl)] + values[Math.floor(vl) - 1]) / 2 : values[vl - 1];
  57994. }
  57995. }
  57996. };
  57997. normalizeValue = function(val) {
  57998. let nf;
  57999. switch (val) {
  58000. case "undefined":
  58001. val = void 0;
  58002. break;
  58003. case "null":
  58004. val = null;
  58005. break;
  58006. case "true":
  58007. val = true;
  58008. break;
  58009. case "false":
  58010. val = false;
  58011. break;
  58012. default:
  58013. nf = parseFloat(val);
  58014. if (val == nf) {
  58015. val = nf;
  58016. }
  58017. }
  58018. return val;
  58019. };
  58020. normalizeValues = function(vals) {
  58021. let i2, result = [];
  58022. for (i2 = vals.length; i2--; ) {
  58023. result[i2] = normalizeValue(vals[i2]);
  58024. }
  58025. return result;
  58026. };
  58027. all = function(val, arr, ignoreNull) {
  58028. let i2;
  58029. for (i2 = arr.length; i2--; ) {
  58030. if (ignoreNull && arr[i2] === null)
  58031. continue;
  58032. if (arr[i2] !== val) {
  58033. return false;
  58034. }
  58035. }
  58036. return true;
  58037. };
  58038. remove = function(vals, filter) {
  58039. let i2, vl, result = [];
  58040. for (i2 = 0, vl = vals.length; i2 < vl; i2++) {
  58041. if (vals[i2] !== filter) {
  58042. result.push(vals[i2]);
  58043. }
  58044. }
  58045. return result;
  58046. };
  58047. isNumber = function(num) {
  58048. return !isNaN(parseFloat(num)) && isFinite(num);
  58049. };
  58050. formatNumber = function(num, prec, groupsize, groupsep, decsep) {
  58051. let p, i2;
  58052. num = (prec === false ? parseFloat(num).toString() : num.toFixed(prec)).split("");
  58053. p = (p = $.inArray(".", num)) < 0 ? num.length : p;
  58054. if (p < num.length) {
  58055. num[p] = decsep;
  58056. }
  58057. for (i2 = p - groupsize; i2 > 0; i2 -= groupsize) {
  58058. num.splice(i2, 0, groupsep);
  58059. }
  58060. return num.join("");
  58061. };
  58062. RangeMap = createClass({
  58063. init: function(map) {
  58064. let key, range2, rangelist = [];
  58065. for (key in map) {
  58066. if (map.hasOwnProperty(key) && typeof key === "string" && key.indexOf(":") > -1) {
  58067. range2 = key.split(":");
  58068. range2[0] = range2[0].length === 0 ? -Infinity : parseFloat(range2[0]);
  58069. range2[1] = range2[1].length === 0 ? Infinity : parseFloat(range2[1]);
  58070. range2[2] = map[key];
  58071. rangelist.push(range2);
  58072. }
  58073. }
  58074. this.map = map;
  58075. this.rangelist = rangelist || false;
  58076. },
  58077. get: function(value) {
  58078. let rangelist = this.rangelist, i2, range2, result;
  58079. if ((result = this.map[value]) !== void 0) {
  58080. return result;
  58081. }
  58082. if (rangelist) {
  58083. for (i2 = rangelist.length; i2--; ) {
  58084. range2 = rangelist[i2];
  58085. if (range2[0] <= value && range2[1] >= value) {
  58086. return range2[2];
  58087. }
  58088. }
  58089. }
  58090. return void 0;
  58091. }
  58092. });
  58093. $.range_map = function(map) {
  58094. return new RangeMap(map);
  58095. };
  58096. luckysheetSparkline = {
  58097. defaultOption: {
  58098. common: {
  58099. type: "line",
  58100. lineColor: "#2ec7c9",
  58101. fillColor: "#CCF3F4",
  58102. defaultPixelsPerValue: 3,
  58103. width: "auto",
  58104. height: "auto",
  58105. composite: false,
  58106. tagValuesAttribute: "values",
  58107. tagOptionsPrefix: "spark",
  58108. enableTagOptions: false,
  58109. enableHighlight: true,
  58110. highlightLighten: 1.4,
  58111. tooltipSkipNull: true,
  58112. tooltipPrefix: "",
  58113. tooltipSuffix: "",
  58114. disableHiddenCheck: false,
  58115. numberFormatter: false,
  58116. numberDigitGroupCount: 3,
  58117. numberDigitGroupSep: ",",
  58118. numberDecimalMark: ".",
  58119. disableTooltips: true,
  58120. disableInteraction: true,
  58121. offsetX: 0,
  58122. offsetY: 0
  58123. },
  58124. line: {
  58125. spotColor: 0,
  58126. highlightSpotColor: "#5f5",
  58127. highlightLineColor: "#f22",
  58128. spotRadius: 1.5,
  58129. minSpotColor: 0,
  58130. maxSpotColor: 0,
  58131. lineWidth: 1,
  58132. normalRangeMin: void 0,
  58133. normalRangeMax: void 0,
  58134. normalRangeColor: "#ccc",
  58135. drawNormalOnTop: true,
  58136. chartRangeMin: void 0,
  58137. chartRangeMax: void 0,
  58138. chartRangeMinX: void 0,
  58139. chartRangeMaxX: void 0
  58140. },
  58141. bar: {
  58142. barColor: "#fc5c5c",
  58143. negBarColor: "#97b552",
  58144. stackedBarColor: ["#2ec7c9", "#fc5c5c", "#5ab1ef", "#ffb980", "#d87a80", "#8d98b3", "#e5cf0d", "#97b552", "#95706d", "#dc69aa", "#07a2a4", "#9a7fd1", "#588dd5", "#f5994e", "#c05050", "#59678c", "#c9ab00", "#7eb00a", "#6f5553", "#c14089"],
  58145. zeroColor: void 0,
  58146. nullColor: void 0,
  58147. zeroAxis: true,
  58148. barWidth: 4,
  58149. barSpacing: 1,
  58150. chartRangeMax: void 0,
  58151. chartRangeMin: void 0,
  58152. chartRangeClip: false,
  58153. colorMap: void 0
  58154. },
  58155. column: {
  58156. barColor: "#fc5c5c",
  58157. negBarColor: "#97b552",
  58158. stackedBarColor: ["#2ec7c9", "#fc5c5c", "#5ab1ef", "#ffb980", "#d87a80", "#8d98b3", "#e5cf0d", "#97b552", "#95706d", "#dc69aa", "#07a2a4", "#9a7fd1", "#588dd5", "#f5994e", "#c05050", "#59678c", "#c9ab00", "#7eb00a", "#6f5553", "#c14089"],
  58159. zeroColor: void 0,
  58160. nullColor: void 0,
  58161. zeroAxis: true,
  58162. barWidth: 4,
  58163. barSpacing: 1,
  58164. chartRangeMax: void 0,
  58165. chartRangeMin: void 0,
  58166. chartRangeClip: false,
  58167. colorMap: void 0
  58168. },
  58169. tristate: {
  58170. barWidth: 4,
  58171. barSpacing: 1,
  58172. posBarColor: "#fc5c5c",
  58173. negBarColor: "#97b552",
  58174. zeroBarColor: "#999",
  58175. colorMap: {}
  58176. },
  58177. discrete: {
  58178. lineHeight: "auto",
  58179. thresholdColor: "#fc5c5c",
  58180. thresholdValue: 0,
  58181. chartRangeMax: void 0,
  58182. chartRangeMin: void 0,
  58183. chartRangeClip: false
  58184. },
  58185. bullet: {
  58186. targetColor: "#f33",
  58187. targetWidth: 3,
  58188. performanceColor: "#33f",
  58189. rangeColors: ["#d3dafe", "#a8b6ff", "#7f94ff", "#6D87FF", "#5876FF", "#4465FF", "#2F54FF", "#1A43FF", "#0532FF"],
  58190. base: void 0
  58191. },
  58192. pie: {
  58193. offset: 0,
  58194. sliceColors: ["#2ec7c9", "#fc5c5c", "#5ab1ef", "#ffb980", "#d87a80", "#8d98b3", "#e5cf0d", "#97b552", "#95706d", "#dc69aa", "#07a2a4", "#9a7fd1", "#588dd5", "#f5994e", "#c05050", "#59678c", "#c9ab00", "#7eb00a", "#6f5553", "#c14089"],
  58195. borderWidth: 0,
  58196. borderColor: "#000"
  58197. },
  58198. box: {
  58199. raw: false,
  58200. boxLineColor: "#000",
  58201. boxFillColor: "#cdf",
  58202. whiskerColor: "#000",
  58203. outlierLineColor: "#5E5E5E",
  58204. outlierFillColor: "#fff",
  58205. medianColor: "#f00",
  58206. showOutliers: true,
  58207. outlierIQR: 1.5,
  58208. spotRadius: 1.5,
  58209. target: void 0,
  58210. targetColor: "#4a2",
  58211. chartRangeMax: void 0,
  58212. chartRangeMin: void 0
  58213. }
  58214. },
  58215. line: {
  58216. type: "line",
  58217. init: function(el, values, options, width, height) {
  58218. this.vertices = [];
  58219. this.regionMap = [];
  58220. this.xvalues = [];
  58221. this.yvalues = [];
  58222. this.yminmax = [];
  58223. this.hightlightSpotId = null;
  58224. this.lastShapeId = null;
  58225. },
  58226. getRegion: function(el, x, y) {
  58227. let i2, regionMap = this.regionMap;
  58228. for (i2 = regionMap.length; i2--; ) {
  58229. if (regionMap[i2] !== null && x >= regionMap[i2][0] && x <= regionMap[i2][1]) {
  58230. return regionMap[i2][2];
  58231. }
  58232. }
  58233. return void 0;
  58234. },
  58235. getCurrentRegionFields: function() {
  58236. let currentRegion = this.currentRegion;
  58237. return {
  58238. isNull: this.yvalues[currentRegion] === null,
  58239. x: this.xvalues[currentRegion],
  58240. y: this.yvalues[currentRegion],
  58241. color: this.options.get("lineColor"),
  58242. fillColor: this.options.get("fillColor"),
  58243. offset: currentRegion
  58244. };
  58245. },
  58246. renderHighlight: function() {
  58247. let currentRegion = this.currentRegion, target = this.target, vertex = this.vertices[currentRegion], options = this.options, spotRadius = options.get("spotRadius"), highlightSpotColor = options.get("highlightSpotColor"), highlightLineColor = options.get("highlightLineColor"), highlightSpot, highlightLine;
  58248. if (!vertex) {
  58249. return;
  58250. }
  58251. if (spotRadius && highlightSpotColor) {
  58252. highlightSpot = target.drawCircle(vertex[0], vertex[1], spotRadius, void 0, highlightSpotColor);
  58253. this.highlightSpotId = highlightSpot.id;
  58254. target.insertAfterShape(this.lastShapeId, highlightSpot);
  58255. }
  58256. if (highlightLineColor) {
  58257. highlightLine = target.drawLine(vertex[0], this.canvasTop, vertex[0], this.canvasTop + this.canvasHeight, highlightLineColor);
  58258. this.highlightLineId = highlightLine.id;
  58259. target.insertAfterShape(this.lastShapeId, highlightLine);
  58260. }
  58261. },
  58262. removeHighlight: function() {
  58263. let target = this.target;
  58264. if (this.highlightSpotId) {
  58265. target.removeShapeId(this.highlightSpotId);
  58266. this.highlightSpotId = null;
  58267. }
  58268. if (this.highlightLineId) {
  58269. target.removeShapeId(this.highlightLineId);
  58270. this.highlightLineId = null;
  58271. }
  58272. },
  58273. scanValues: function() {
  58274. let values = this.values, valcount = values.length, xvalues = this.xvalues, yvalues = this.yvalues, yminmax = this.yminmax, i2, val, isStr, isArray, sp;
  58275. for (i2 = 0; i2 < valcount; i2++) {
  58276. val = values[i2];
  58277. isStr = typeof values[i2] === "string";
  58278. isArray = typeof values[i2] === "object" && values[i2] instanceof Array;
  58279. sp = isStr && values[i2].split(":");
  58280. if (isStr && sp.length === 2) {
  58281. xvalues.push(Number(sp[0]));
  58282. yvalues.push(Number(sp[1]));
  58283. yminmax.push(Number(sp[1]));
  58284. } else if (isArray) {
  58285. xvalues.push(val[0]);
  58286. yvalues.push(val[1]);
  58287. yminmax.push(val[1]);
  58288. } else {
  58289. xvalues.push(i2);
  58290. if (values[i2] === null || values[i2] === "null") {
  58291. yvalues.push(null);
  58292. } else {
  58293. yvalues.push(Number(val));
  58294. yminmax.push(Number(val));
  58295. }
  58296. }
  58297. }
  58298. if (this.options.get("xvalues")) {
  58299. xvalues = this.options.get("xvalues");
  58300. }
  58301. this.maxy = this.maxyorg = Math.max.apply(Math, yminmax);
  58302. this.miny = this.minyorg = Math.min.apply(Math, yminmax);
  58303. this.maxx = Math.max.apply(Math, xvalues);
  58304. this.minx = Math.min.apply(Math, xvalues);
  58305. this.xvalues = xvalues;
  58306. this.yvalues = yvalues;
  58307. this.yminmax = yminmax;
  58308. },
  58309. processRangeOptions: function() {
  58310. let options = this.options, normalRangeMin = options.get("normalRangeMin"), normalRangeMax = options.get("normalRangeMax");
  58311. if (normalRangeMin !== void 0) {
  58312. if (normalRangeMin < this.miny) {
  58313. this.miny = normalRangeMin;
  58314. }
  58315. if (normalRangeMax > this.maxy) {
  58316. this.maxy = normalRangeMax;
  58317. }
  58318. }
  58319. if (options.get("chartRangeMin") !== void 0 && (options.get("chartRangeClip") || options.get("chartRangeMin") < this.miny)) {
  58320. this.miny = options.get("chartRangeMin");
  58321. }
  58322. if (options.get("chartRangeMax") !== void 0 && (options.get("chartRangeClip") || options.get("chartRangeMax") > this.maxy)) {
  58323. this.maxy = options.get("chartRangeMax");
  58324. }
  58325. if (options.get("chartRangeMinX") !== void 0 && (options.get("chartRangeClipX") || options.get("chartRangeMinX") < this.minx)) {
  58326. this.minx = options.get("chartRangeMinX");
  58327. }
  58328. if (options.get("chartRangeMaxX") !== void 0 && (options.get("chartRangeClipX") || options.get("chartRangeMaxX") > this.maxx)) {
  58329. this.maxx = options.get("chartRangeMaxX");
  58330. }
  58331. },
  58332. drawNormalRange: function(canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey) {
  58333. let normalRangeMin = this.options.get("normalRangeMin"), normalRangeMax = this.options.get("normalRangeMax"), ytop = canvasTop + Math.round(canvasHeight - canvasHeight * ((normalRangeMax - this.miny) / rangey)), height = Math.round(canvasHeight * (normalRangeMax - normalRangeMin) / rangey);
  58334. if (height == 0 && normalRangeMin == normalRangeMax) {
  58335. height = 1;
  58336. }
  58337. this.target.drawRect(canvasLeft, ytop, canvasWidth, height, void 0, this.options.get("normalRangeColor")).append();
  58338. },
  58339. render: function(el, userValues) {
  58340. this.vertices = [];
  58341. this.regionMap = [];
  58342. this.xvalues = [];
  58343. this.yvalues = [];
  58344. this.yminmax = [];
  58345. this.hightlightSpotId = null;
  58346. this.lastShapeId = null;
  58347. this.values = userValues;
  58348. let options = this.options, target = this.target, canvasWidth = el.mergedOptions.width, canvasHeight = el.mergedOptions.height, vertices = this.vertices, spotRadius = options.get("spotRadius"), regionMap = this.regionMap, rangex, rangey, yvallast, canvasTop, canvasLeft, vertex, path, paths, x, y, xnext, xpos, xposnext, last, next, yvalcount, lineShapes, fillShapes, plen, valueSpots, hlSpotsEnabled, color, xvalues, yvalues, i2;
  58349. this.scanValues();
  58350. this.processRangeOptions();
  58351. xvalues = this.xvalues;
  58352. yvalues = this.yvalues;
  58353. if (!this.yminmax.length || this.yvalues.length < 2) {
  58354. return;
  58355. }
  58356. canvasTop = canvasLeft = 0;
  58357. rangex = this.maxx - this.minx === 0 ? 1 : this.maxx - this.minx;
  58358. rangey = this.maxy - this.miny === 0 ? 1 : this.maxy - this.miny;
  58359. yvallast = this.yvalues.length - 1;
  58360. if (spotRadius && (canvasWidth < spotRadius * 4 || canvasHeight < spotRadius * 4)) {
  58361. spotRadius = 0;
  58362. }
  58363. if (spotRadius) {
  58364. hlSpotsEnabled = options.get("highlightSpotColor") && !options.get("disableInteraction");
  58365. if (hlSpotsEnabled || options.get("minSpotColor") || options.get("spotColor") && yvalues[yvallast] === this.miny) {
  58366. canvasHeight -= Math.ceil(spotRadius);
  58367. }
  58368. if (hlSpotsEnabled || options.get("maxSpotColor") || options.get("spotColor") && yvalues[yvallast] === this.maxy) {
  58369. canvasHeight -= Math.ceil(spotRadius);
  58370. canvasTop += Math.ceil(spotRadius);
  58371. }
  58372. if (hlSpotsEnabled || (options.get("minSpotColor") || options.get("maxSpotColor")) && (yvalues[0] === this.miny || yvalues[0] === this.maxy)) {
  58373. canvasLeft += Math.ceil(spotRadius);
  58374. canvasWidth -= Math.ceil(spotRadius);
  58375. }
  58376. if (hlSpotsEnabled || options.get("spotColor") || (options.get("minSpotColor") || options.get("maxSpotColor") && (yvalues[yvallast] === this.miny || yvalues[yvallast] === this.maxy))) {
  58377. canvasWidth -= Math.ceil(spotRadius);
  58378. }
  58379. }
  58380. canvasHeight--;
  58381. if (options.get("normalRangeMin") !== void 0 && !options.get("drawNormalOnTop")) {
  58382. this.drawNormalRange(canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey);
  58383. }
  58384. path = [];
  58385. paths = [path];
  58386. last = next = null;
  58387. yvalcount = yvalues.length;
  58388. for (i2 = 0; i2 < yvalcount; i2++) {
  58389. x = xvalues[i2];
  58390. xnext = xvalues[i2 + 1];
  58391. y = yvalues[i2];
  58392. xpos = canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex));
  58393. xposnext = i2 < yvalcount - 1 ? canvasLeft + Math.round((xnext - this.minx) * (canvasWidth / rangex)) : canvasWidth;
  58394. next = xpos + (xposnext - xpos) / 2;
  58395. regionMap[i2] = [last || 0, next, i2];
  58396. last = next;
  58397. if (y === null) {
  58398. if (i2) {
  58399. if (yvalues[i2 - 1] !== null) {
  58400. path = [];
  58401. paths.push(path);
  58402. }
  58403. vertices.push(null);
  58404. }
  58405. } else {
  58406. if (y < this.miny) {
  58407. y = this.miny;
  58408. }
  58409. if (y > this.maxy) {
  58410. y = this.maxy;
  58411. }
  58412. if (!path.length) {
  58413. path.push([xpos, canvasTop + canvasHeight]);
  58414. }
  58415. vertex = [xpos, canvasTop + Math.round(canvasHeight - canvasHeight * ((y - this.miny) / rangey))];
  58416. path.push(vertex);
  58417. vertices.push(vertex);
  58418. }
  58419. }
  58420. lineShapes = [];
  58421. fillShapes = [];
  58422. plen = paths.length;
  58423. for (i2 = 0; i2 < plen; i2++) {
  58424. path = paths[i2];
  58425. if (path.length) {
  58426. if (options.get("fillColor")) {
  58427. path.push([path[path.length - 1][0], canvasTop + canvasHeight]);
  58428. fillShapes.push(path.slice(0));
  58429. path.pop();
  58430. }
  58431. if (path.length > 2) {
  58432. path[0] = [path[0][0], path[1][1]];
  58433. }
  58434. lineShapes.push(path);
  58435. }
  58436. }
  58437. plen = fillShapes.length;
  58438. for (i2 = 0; i2 < plen; i2++) {
  58439. target.drawShape(fillShapes[i2], options.get("fillColor"), options.get("fillColor")).append();
  58440. }
  58441. plen = lineShapes.length;
  58442. for (i2 = 0; i2 < plen; i2++) {
  58443. target.drawShape(lineShapes[i2], options.get("lineColor"), void 0, options.get("lineWidth")).append();
  58444. }
  58445. if (options.get("normalRangeMin") !== void 0 && options.get("drawNormalOnTop")) {
  58446. this.drawNormalRange(canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey);
  58447. }
  58448. if (spotRadius && options.get("valueSpots")) {
  58449. valueSpots = options.get("valueSpots");
  58450. if (valueSpots.get === void 0) {
  58451. valueSpots = new RangeMap(valueSpots);
  58452. }
  58453. for (i2 = 0; i2 < yvalcount; i2++) {
  58454. color = valueSpots.get(yvalues[i2]);
  58455. if (color) {
  58456. target.drawCircle(canvasLeft + Math.round((xvalues[i2] - this.minx) * (canvasWidth / rangex)), canvasTop + Math.round(canvasHeight - canvasHeight * ((yvalues[i2] - this.miny) / rangey)), spotRadius, void 0, color).append();
  58457. }
  58458. }
  58459. }
  58460. if (spotRadius && options.get("spotColor") && yvalues[yvallast] !== null) {
  58461. target.drawCircle(canvasLeft + Math.round((xvalues[xvalues.length - 1] - this.minx) * (canvasWidth / rangex)), canvasTop + Math.round(canvasHeight - canvasHeight * ((yvalues[yvallast] - this.miny) / rangey)), spotRadius, void 0, options.get("spotColor")).append();
  58462. }
  58463. if (this.maxy !== this.minyorg) {
  58464. if (spotRadius && options.get("minSpotColor")) {
  58465. x = xvalues[$.inArray(this.minyorg, yvalues)];
  58466. target.drawCircle(canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex)), canvasTop + Math.round(canvasHeight - canvasHeight * ((this.minyorg - this.miny) / rangey)), spotRadius, void 0, options.get("minSpotColor")).append();
  58467. }
  58468. if (spotRadius && options.get("maxSpotColor")) {
  58469. x = xvalues[$.inArray(this.maxyorg, yvalues)];
  58470. target.drawCircle(canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex)), canvasTop + Math.round(canvasHeight - canvasHeight * ((this.maxyorg - this.miny) / rangey)), spotRadius, void 0, options.get("maxSpotColor")).append();
  58471. }
  58472. }
  58473. }
  58474. },
  58475. bar: {
  58476. type: "bar",
  58477. init: function(el, values) {
  58478. let options = this.options;
  58479. let width = el.mergedOptions.height;
  58480. let height = el.mergedOptions.width;
  58481. this.canvasWidth = el.mergedOptions.height;
  58482. this.canvasHeight = el.mergedOptions.width;
  58483. let barWidth = parseInt(options.get("barWidth"), 10), barSpacing = parseInt(options.get("barSpacing"), 10), chartRangeMin = options.get("chartRangeMin"), chartRangeMax = options.get("chartRangeMax"), chartRangeClip = options.get("chartRangeClip"), stackMin = Infinity, stackMax = -Infinity, isStackString, groupMin, groupMax, stackRanges, numValues, i2, vlen, range2, zeroAxis, xaxisOffset, min, max, clipMin, clipMax, stacked, vlist, j, slen2, svals, val, yoffset, yMaxCalc, canvasHeightEf;
  58484. this.values = values;
  58485. for (i2 = 0, vlen = values.length; i2 < vlen; i2++) {
  58486. val = values[i2];
  58487. isStackString = typeof val === "string" && val.indexOf(":") > -1;
  58488. if (isStackString || $.isArray(val)) {
  58489. stacked = true;
  58490. if (isStackString) {
  58491. val = values[i2] = normalizeValues(val.split(":"));
  58492. }
  58493. val = remove(val, null);
  58494. groupMin = Math.min.apply(Math, val);
  58495. groupMax = Math.max.apply(Math, val);
  58496. if (groupMin < stackMin) {
  58497. stackMin = groupMin;
  58498. }
  58499. if (groupMax > stackMax) {
  58500. stackMax = groupMax;
  58501. }
  58502. }
  58503. }
  58504. this.stacked = stacked;
  58505. this.regionShapes = {};
  58506. this.barWidth = Math.floor(width / values.length) - barSpacing;
  58507. this.barSpacing = barSpacing;
  58508. this.totalBarWidth = this.barWidth + barSpacing;
  58509. this.width = width;
  58510. if (chartRangeClip) {
  58511. clipMin = chartRangeMin === void 0 ? -Infinity : chartRangeMin;
  58512. clipMax = chartRangeMax === void 0 ? Infinity : chartRangeMax;
  58513. }
  58514. numValues = [];
  58515. stackRanges = stacked ? [] : numValues;
  58516. let stackTotals = [];
  58517. let stackRangesNeg = [];
  58518. for (i2 = 0, vlen = values.length; i2 < vlen; i2++) {
  58519. if (stacked) {
  58520. vlist = values[i2];
  58521. values[i2] = svals = [];
  58522. stackTotals[i2] = 0;
  58523. stackRanges[i2] = stackRangesNeg[i2] = 0;
  58524. for (j = 0, slen2 = vlist.length; j < slen2; j++) {
  58525. val = svals[j] = chartRangeClip ? clipval(vlist[j], clipMin, clipMax) : vlist[j];
  58526. if (val !== null) {
  58527. if (val > 0) {
  58528. stackTotals[i2] += val;
  58529. }
  58530. if (stackMin < 0 && stackMax > 0) {
  58531. if (val < 0) {
  58532. stackRangesNeg[i2] += Math.abs(val);
  58533. } else {
  58534. stackRanges[i2] += val;
  58535. }
  58536. } else {
  58537. stackRanges[i2] += Math.abs(val);
  58538. }
  58539. numValues.push(val);
  58540. }
  58541. }
  58542. } else {
  58543. val = chartRangeClip ? clipval(values[i2], clipMin, clipMax) : values[i2];
  58544. val = values[i2] = normalizeValue(val);
  58545. if (val !== null) {
  58546. numValues.push(val);
  58547. }
  58548. }
  58549. }
  58550. this.max = max = Math.max.apply(Math, numValues);
  58551. this.min = min = Math.min.apply(Math, numValues);
  58552. this.stackMax = stackMax = stacked ? Math.max.apply(Math, stackTotals) : max;
  58553. this.stackMin = stackMin = stacked ? Math.min.apply(Math, numValues) : min;
  58554. if (options.get("chartRangeMin") !== void 0 && (options.get("chartRangeClip") || options.get("chartRangeMin") < min)) {
  58555. min = options.get("chartRangeMin");
  58556. }
  58557. if (options.get("chartRangeMax") !== void 0 && (options.get("chartRangeClip") || options.get("chartRangeMax") > max)) {
  58558. max = options.get("chartRangeMax");
  58559. }
  58560. this.zeroAxis = zeroAxis = options.get("zeroAxis", true);
  58561. if (min <= 0 && max >= 0 && zeroAxis) {
  58562. xaxisOffset = 0;
  58563. } else if (zeroAxis == false) {
  58564. xaxisOffset = min;
  58565. } else if (min > 0) {
  58566. xaxisOffset = 0;
  58567. } else {
  58568. xaxisOffset = max;
  58569. }
  58570. this.xaxisOffset = xaxisOffset;
  58571. range2 = stacked ? Math.max.apply(Math, stackRanges) + Math.max.apply(Math, stackRangesNeg) : max - xaxisOffset;
  58572. this.canvasHeightEf = zeroAxis && min < 0 ? this.canvasHeight - 2 : this.canvasHeight - 1;
  58573. this.isNeg = false;
  58574. if (min < xaxisOffset) {
  58575. yoffset = Math.floor(this.canvasHeight / 2);
  58576. this.isNeg = true;
  58577. if (yoffset !== Math.ceil(yoffset)) {
  58578. this.canvasHeightEf -= 2;
  58579. yoffset = Math.ceil(yoffset);
  58580. }
  58581. } else {
  58582. yoffset = 0;
  58583. }
  58584. this.yoffset = yoffset;
  58585. if ($.isArray(options.get("colorMap"))) {
  58586. this.colorMapByIndex = options.get("colorMap");
  58587. this.colorMapByValue = null;
  58588. } else {
  58589. this.colorMapByIndex = null;
  58590. this.colorMapByValue = options.get("colorMap");
  58591. if (this.colorMapByValue && this.colorMapByValue.get === void 0) {
  58592. this.colorMapByValue = new RangeMap(this.colorMapByValue);
  58593. }
  58594. }
  58595. this.range = range2;
  58596. },
  58597. getRegion: function(el, x, y) {
  58598. let result = Math.floor(x / this.totalBarWidth);
  58599. return result < 0 || result >= this.values.length ? void 0 : result;
  58600. },
  58601. getCurrentRegionFields: function() {
  58602. let currentRegion = this.currentRegion, values = ensureArray(this.values[currentRegion]), result = [], value, i2;
  58603. for (i2 = values.length; i2--; ) {
  58604. value = values[i2];
  58605. result.push({
  58606. isNull: value === null,
  58607. value,
  58608. color: this.calcColor(i2, value, currentRegion),
  58609. offset: currentRegion
  58610. });
  58611. }
  58612. return result;
  58613. },
  58614. calcColor: function(stacknum, value, valuenum) {
  58615. let colorMapByIndex = this.colorMapByIndex, colorMapByValue = this.colorMapByValue, options = this.options, color, newColor;
  58616. if (this.stacked) {
  58617. color = options.get("stackedBarColor");
  58618. } else {
  58619. color = value < 0 ? options.get("negBarColor") : options.get("barColor");
  58620. }
  58621. if (value === 0 && options.get("zeroColor") !== void 0) {
  58622. color = options.get("zeroColor");
  58623. }
  58624. if (colorMapByValue && (newColor = colorMapByValue.get(value))) {
  58625. color = newColor;
  58626. } else if (colorMapByIndex && colorMapByIndex.length > valuenum) {
  58627. color = colorMapByIndex[valuenum];
  58628. }
  58629. return $.isArray(color) ? color[stacknum % color.length] : color;
  58630. },
  58631. renderRegion: function(valuenum, highlight) {
  58632. let vals = this.values[valuenum], options = this.options, xaxisOffset = this.xaxisOffset, result = [], range2 = this.range, stacked = this.stacked, target = this.target, x = valuenum * this.totalBarWidth, canvasHeightEf = this.canvasHeightEf, yoffset = this.yoffset, y, height, color, isNull, yoffsetNeg, i2, valcount, val, minPlotted, allMin;
  58633. vals = $.isArray(vals) ? vals : [vals];
  58634. valcount = vals.length;
  58635. val = vals[0];
  58636. isNull = all(null, vals);
  58637. allMin = all(xaxisOffset, vals, true);
  58638. if (isNull) {
  58639. if (options.get("nullColor")) {
  58640. color = highlight ? options.get("nullColor") : this.calcHighlightColor(options.get("nullColor"), options);
  58641. y = yoffset > 0 ? yoffset - 1 : yoffset;
  58642. return target.drawRect(y, x, 0, this.barWidth - 1, color, color);
  58643. } else {
  58644. return void 0;
  58645. }
  58646. }
  58647. yoffsetNeg = yoffset;
  58648. if (this.isNeg) {
  58649. canvasHeightEf = Math.floor(canvasHeightEf / 2);
  58650. }
  58651. for (i2 = 0; i2 < valcount; i2++) {
  58652. val = vals[i2];
  58653. if (stacked && val === xaxisOffset) {
  58654. if (!allMin || minPlotted) {
  58655. continue;
  58656. }
  58657. minPlotted = true;
  58658. }
  58659. if (range2 > 0) {
  58660. height = Math.floor(canvasHeightEf * (Math.abs(val - xaxisOffset) / range2));
  58661. } else {
  58662. height = canvasHeightEf;
  58663. }
  58664. if (val < xaxisOffset || val === xaxisOffset && yoffset === 0) {
  58665. y = yoffsetNeg - height;
  58666. yoffsetNeg += height;
  58667. } else {
  58668. if (stacked) {
  58669. y = yoffset;
  58670. yoffset += height;
  58671. } else {
  58672. y = yoffset;
  58673. yoffset -= height;
  58674. }
  58675. }
  58676. color = this.calcColor(i2, val, valuenum);
  58677. if (highlight) {
  58678. color = this.calcHighlightColor(color, options);
  58679. }
  58680. result.push(target.drawRect(y, x, height - 1, this.barWidth - 1, color, color));
  58681. }
  58682. if (result.length === 1) {
  58683. return result[0];
  58684. }
  58685. return result;
  58686. }
  58687. },
  58688. column: {
  58689. type: "column",
  58690. init: function(el, values) {
  58691. let options = this.options;
  58692. let width = el.mergedOptions.width;
  58693. let height = el.mergedOptions.height;
  58694. this.canvasWidth = el.mergedOptions.width;
  58695. this.canvasHeight = el.mergedOptions.height;
  58696. let barWidth = parseInt(options.get("barWidth"), 10), barSpacing = parseInt(options.get("barSpacing"), 10), chartRangeMin = options.get("chartRangeMin"), chartRangeMax = options.get("chartRangeMax"), chartRangeClip = options.get("chartRangeClip"), stackMin = Infinity, stackMax = -Infinity, isStackString, groupMin, groupMax, stackRanges, numValues, i2, vlen, range2, zeroAxis, xaxisOffset, min, max, clipMin, clipMax, stacked, vlist, j, slen2, svals, val, yoffset, yMaxCalc, canvasHeightEf;
  58697. this.values = values;
  58698. for (i2 = 0, vlen = values.length; i2 < vlen; i2++) {
  58699. val = values[i2];
  58700. isStackString = typeof val === "string" && val.indexOf(":") > -1;
  58701. if (isStackString || $.isArray(val)) {
  58702. stacked = true;
  58703. if (isStackString) {
  58704. val = values[i2] = normalizeValues(val.split(":"));
  58705. }
  58706. val = remove(val, null);
  58707. groupMin = Math.min.apply(Math, val);
  58708. groupMax = Math.max.apply(Math, val);
  58709. if (groupMin < stackMin) {
  58710. stackMin = groupMin;
  58711. }
  58712. if (groupMax > stackMax) {
  58713. stackMax = groupMax;
  58714. }
  58715. }
  58716. }
  58717. this.stacked = stacked;
  58718. this.regionShapes = {};
  58719. this.barWidth = Math.floor(width / values.length) - barSpacing;
  58720. this.barSpacing = barSpacing;
  58721. this.totalBarWidth = this.barWidth + barSpacing;
  58722. this.width = width;
  58723. if (chartRangeClip) {
  58724. clipMin = chartRangeMin === void 0 ? -Infinity : chartRangeMin;
  58725. clipMax = chartRangeMax === void 0 ? Infinity : chartRangeMax;
  58726. }
  58727. numValues = [];
  58728. stackRanges = stacked ? [] : numValues;
  58729. let stackTotals = [];
  58730. let stackRangesNeg = [];
  58731. for (i2 = 0, vlen = values.length; i2 < vlen; i2++) {
  58732. if (stacked) {
  58733. vlist = values[i2];
  58734. values[i2] = svals = [];
  58735. stackTotals[i2] = 0;
  58736. stackRanges[i2] = stackRangesNeg[i2] = 0;
  58737. for (j = 0, slen2 = vlist.length; j < slen2; j++) {
  58738. val = svals[j] = chartRangeClip ? clipval(vlist[j], clipMin, clipMax) : vlist[j];
  58739. if (val !== null) {
  58740. if (val > 0) {
  58741. stackTotals[i2] += val;
  58742. }
  58743. if (stackMin < 0 && stackMax > 0) {
  58744. if (val < 0) {
  58745. stackRangesNeg[i2] += Math.abs(val);
  58746. } else {
  58747. stackRanges[i2] += val;
  58748. }
  58749. } else {
  58750. stackRanges[i2] += Math.abs(val);
  58751. }
  58752. numValues.push(val);
  58753. }
  58754. }
  58755. } else {
  58756. val = chartRangeClip ? clipval(values[i2], clipMin, clipMax) : values[i2];
  58757. val = values[i2] = normalizeValue(val);
  58758. if (val !== null) {
  58759. numValues.push(val);
  58760. }
  58761. }
  58762. }
  58763. this.max = max = Math.max.apply(Math, numValues);
  58764. this.min = min = Math.min.apply(Math, numValues);
  58765. this.stackMax = stackMax = stacked ? Math.max.apply(Math, stackTotals) : max;
  58766. this.stackMin = stackMin = stacked ? Math.min.apply(Math, numValues) : min;
  58767. if (options.get("chartRangeMin") !== void 0 && (options.get("chartRangeClip") || options.get("chartRangeMin") < min)) {
  58768. min = options.get("chartRangeMin");
  58769. }
  58770. if (options.get("chartRangeMax") !== void 0 && (options.get("chartRangeClip") || options.get("chartRangeMax") > max)) {
  58771. max = options.get("chartRangeMax");
  58772. }
  58773. this.zeroAxis = zeroAxis = options.get("zeroAxis", true);
  58774. if (min <= 0 && max >= 0 && zeroAxis) {
  58775. xaxisOffset = 0;
  58776. } else if (zeroAxis == false) {
  58777. xaxisOffset = min;
  58778. } else if (min > 0) {
  58779. xaxisOffset = 0;
  58780. } else {
  58781. xaxisOffset = max;
  58782. }
  58783. this.xaxisOffset = xaxisOffset;
  58784. range2 = stacked ? Math.max.apply(Math, stackRanges) + Math.max.apply(Math, stackRangesNeg) : max - xaxisOffset;
  58785. this.canvasHeightEf = zeroAxis && min < 0 ? this.canvasHeight - 2 : this.canvasHeight - 1;
  58786. this.isNeg = false;
  58787. if (min < xaxisOffset) {
  58788. yoffset = Math.floor(this.canvasHeight / 2);
  58789. this.isNeg = true;
  58790. if (yoffset !== Math.ceil(yoffset)) {
  58791. this.canvasHeightEf -= 2;
  58792. yoffset = Math.ceil(yoffset);
  58793. }
  58794. } else {
  58795. yoffset = this.canvasHeight;
  58796. }
  58797. this.yoffset = yoffset;
  58798. if ($.isArray(options.get("colorMap"))) {
  58799. this.colorMapByIndex = options.get("colorMap");
  58800. this.colorMapByValue = null;
  58801. } else {
  58802. this.colorMapByIndex = null;
  58803. this.colorMapByValue = options.get("colorMap");
  58804. if (this.colorMapByValue && this.colorMapByValue.get === void 0) {
  58805. this.colorMapByValue = new RangeMap(this.colorMapByValue);
  58806. }
  58807. }
  58808. this.range = range2;
  58809. },
  58810. getRegion: function(el, x, y) {
  58811. let result = Math.floor(x / this.totalBarWidth);
  58812. return result < 0 || result >= this.values.length ? void 0 : result;
  58813. },
  58814. getCurrentRegionFields: function() {
  58815. let currentRegion = this.currentRegion, values = ensureArray(this.values[currentRegion]), result = [], value, i2;
  58816. for (i2 = values.length; i2--; ) {
  58817. value = values[i2];
  58818. result.push({
  58819. isNull: value === null,
  58820. value,
  58821. color: this.calcColor(i2, value, currentRegion),
  58822. offset: currentRegion
  58823. });
  58824. }
  58825. return result;
  58826. },
  58827. calcColor: function(stacknum, value, valuenum) {
  58828. let colorMapByIndex = this.colorMapByIndex, colorMapByValue = this.colorMapByValue, options = this.options, color, newColor;
  58829. if (this.stacked) {
  58830. color = options.get("stackedBarColor");
  58831. } else {
  58832. color = value < 0 ? options.get("negBarColor") : options.get("barColor");
  58833. }
  58834. if (value === 0 && options.get("zeroColor") !== void 0) {
  58835. color = options.get("zeroColor");
  58836. }
  58837. if (colorMapByValue && (newColor = colorMapByValue.get(value))) {
  58838. color = newColor;
  58839. } else if (colorMapByIndex && colorMapByIndex.length > valuenum) {
  58840. color = colorMapByIndex[valuenum];
  58841. }
  58842. return $.isArray(color) ? color[stacknum % color.length] : color;
  58843. },
  58844. renderRegion: function(valuenum, highlight) {
  58845. let vals = this.values[valuenum], options = this.options, xaxisOffset = this.xaxisOffset, result = [], range2 = this.range, stacked = this.stacked, target = this.target, x = valuenum * this.totalBarWidth, canvasHeightEf = this.canvasHeightEf, yoffset = this.yoffset, y, height, color, isNull, yoffsetNeg, i2, valcount, val, minPlotted, allMin;
  58846. vals = $.isArray(vals) ? vals : [vals];
  58847. valcount = vals.length;
  58848. val = vals[0];
  58849. isNull = all(null, vals);
  58850. allMin = all(xaxisOffset, vals, true);
  58851. if (isNull) {
  58852. if (options.get("nullColor")) {
  58853. color = highlight ? options.get("nullColor") : this.calcHighlightColor(options.get("nullColor"), options);
  58854. y = yoffset > 0 ? yoffset - 1 : yoffset;
  58855. return target.drawRect(x, y, this.barWidth - 1, 0, color, color);
  58856. } else {
  58857. return void 0;
  58858. }
  58859. }
  58860. yoffsetNeg = yoffset;
  58861. if (this.isNeg) {
  58862. canvasHeightEf = Math.floor(canvasHeightEf / 2);
  58863. }
  58864. for (i2 = 0; i2 < valcount; i2++) {
  58865. val = vals[i2];
  58866. if (stacked && val === xaxisOffset) {
  58867. if (!allMin || minPlotted) {
  58868. continue;
  58869. }
  58870. minPlotted = true;
  58871. }
  58872. if (range2 > 0) {
  58873. height = Math.floor(canvasHeightEf * (Math.abs(val - xaxisOffset) / range2));
  58874. } else {
  58875. height = canvasHeightEf;
  58876. }
  58877. if (val < xaxisOffset || val === xaxisOffset && yoffset === 0) {
  58878. y = yoffsetNeg;
  58879. yoffsetNeg += height;
  58880. } else {
  58881. y = yoffset - height;
  58882. yoffset -= height;
  58883. }
  58884. color = this.calcColor(i2, val, valuenum);
  58885. if (highlight) {
  58886. color = this.calcHighlightColor(color, options);
  58887. }
  58888. result.push(target.drawRect(x, y, this.barWidth - 1, height - 1, color, color));
  58889. }
  58890. if (result.length === 1) {
  58891. return result[0];
  58892. }
  58893. return result;
  58894. }
  58895. },
  58896. tristate: {
  58897. type: "tristate",
  58898. init: function(el, values) {
  58899. let options = this.options;
  58900. let width = el.mergedOptions.width;
  58901. let height = el.mergedOptions.height;
  58902. this.canvasWidth = el.mergedOptions.width;
  58903. this.canvasHeight = el.mergedOptions.height;
  58904. let barWidth = parseInt(options.get("barWidth"), 10), barSpacing = parseInt(options.get("barSpacing"), 10);
  58905. this.regionShapes = {};
  58906. this.barWidth = barWidth;
  58907. this.barSpacing = barSpacing;
  58908. this.totalBarWidth = barWidth + barSpacing;
  58909. this.values = $.map(values, Number);
  58910. this.width = width = values.length * barWidth + (values.length - 1) * barSpacing;
  58911. if ($.isArray(options.get("colorMap"))) {
  58912. this.colorMapByIndex = options.get("colorMap");
  58913. this.colorMapByValue = null;
  58914. } else {
  58915. this.colorMapByIndex = null;
  58916. this.colorMapByValue = options.get("colorMap");
  58917. if (this.colorMapByValue && this.colorMapByValue.get === void 0) {
  58918. this.colorMapByValue = new RangeMap(this.colorMapByValue);
  58919. }
  58920. }
  58921. },
  58922. getRegion: function(el, x, y) {
  58923. return Math.floor(x / this.totalBarWidth);
  58924. },
  58925. getCurrentRegionFields: function() {
  58926. let currentRegion = this.currentRegion;
  58927. return {
  58928. isNull: this.values[currentRegion] === void 0,
  58929. value: this.values[currentRegion],
  58930. color: this.calcColor(this.values[currentRegion], currentRegion),
  58931. offset: currentRegion
  58932. };
  58933. },
  58934. calcColor: function(value, valuenum) {
  58935. let values = this.values, options = this.options, colorMapByIndex = this.colorMapByIndex, colorMapByValue = this.colorMapByValue, color, newColor;
  58936. if (colorMapByValue && (newColor = colorMapByValue.get(value))) {
  58937. color = newColor;
  58938. } else if (colorMapByIndex && colorMapByIndex.length > valuenum) {
  58939. color = colorMapByIndex[valuenum];
  58940. } else if (values[valuenum] < 0) {
  58941. color = options.get("negBarColor");
  58942. } else if (values[valuenum] > 0) {
  58943. color = options.get("posBarColor");
  58944. } else {
  58945. color = options.get("zeroBarColor");
  58946. }
  58947. return color;
  58948. },
  58949. renderRegion: function(valuenum, highlight) {
  58950. let values = this.values, options = this.options, target = this.target, canvasHeight, height, halfHeight, x, y, color;
  58951. canvasHeight = this.canvasHeight;
  58952. halfHeight = Math.round(canvasHeight / 2);
  58953. x = valuenum * this.totalBarWidth;
  58954. if (values[valuenum] < 0) {
  58955. y = halfHeight;
  58956. height = halfHeight - 1;
  58957. } else if (values[valuenum] > 0) {
  58958. y = 0;
  58959. height = halfHeight - 1;
  58960. } else {
  58961. y = halfHeight - 1;
  58962. height = 2;
  58963. }
  58964. color = this.calcColor(values[valuenum], valuenum);
  58965. if (color === null) {
  58966. return;
  58967. }
  58968. if (highlight) {
  58969. color = this.calcHighlightColor(color, options);
  58970. }
  58971. return target.drawRect(x, y, this.barWidth - 1, height - 1, color, color);
  58972. }
  58973. },
  58974. discrete: {
  58975. type: "discrete",
  58976. init: function(el, values) {
  58977. let options = this.options;
  58978. let width = el.mergedOptions.width;
  58979. let height = el.mergedOptions.height;
  58980. this.canvasWidth = el.mergedOptions.width;
  58981. this.canvasHeight = el.mergedOptions.height;
  58982. this.regionShapes = {};
  58983. this.values = values = $.map(values, Number);
  58984. this.min = Math.min.apply(Math, values);
  58985. this.max = Math.max.apply(Math, values);
  58986. this.range = this.max - this.min;
  58987. this.width = width;
  58988. this.interval = Math.floor(width / values.length);
  58989. this.itemWidth = width / values.length;
  58990. if (options.get("chartRangeMin") !== void 0 && (options.get("chartRangeClip") || options.get("chartRangeMin") < this.min)) {
  58991. this.min = options.get("chartRangeMin");
  58992. }
  58993. if (options.get("chartRangeMax") !== void 0 && (options.get("chartRangeClip") || options.get("chartRangeMax") > this.max)) {
  58994. this.max = options.get("chartRangeMax");
  58995. }
  58996. if (this.target) {
  58997. this.lineHeight = options.get("lineHeight") === "auto" ? Math.round(this.canvasHeight * 0.3) : options.get("lineHeight");
  58998. }
  58999. },
  59000. getRegion: function(el, x, y) {
  59001. return Math.floor(x / this.itemWidth);
  59002. },
  59003. getCurrentRegionFields: function() {
  59004. let currentRegion = this.currentRegion;
  59005. return {
  59006. isNull: this.values[currentRegion] === void 0,
  59007. value: this.values[currentRegion],
  59008. offset: currentRegion
  59009. };
  59010. },
  59011. renderRegion: function(valuenum, highlight) {
  59012. let values = this.values, options = this.options, min = this.min, max = this.max, range2 = this.range, interval = this.interval, target = this.target, canvasHeight = this.canvasHeight, lineHeight = this.lineHeight, pheight = canvasHeight - lineHeight, ytop, val, color, x;
  59013. val = clipval(values[valuenum], min, max);
  59014. x = valuenum * interval;
  59015. ytop = Math.round(pheight - pheight * ((val - min) / range2));
  59016. color = options.get("thresholdColor") && val < options.get("thresholdValue") ? options.get("thresholdColor") : options.get("lineColor");
  59017. if (highlight) {
  59018. color = this.calcHighlightColor(color, options);
  59019. }
  59020. return this.target.drawRect(x, ytop, interval <= 2 ? 1 : interval - 2, lineHeight, color, color);
  59021. }
  59022. },
  59023. bullet: {
  59024. type: "bullet",
  59025. init: function(el, values) {
  59026. let options = this.options;
  59027. let width = el.mergedOptions.width;
  59028. let height = el.mergedOptions.height;
  59029. this.canvasWidth = el.mergedOptions.width;
  59030. this.canvasHeight = el.mergedOptions.height;
  59031. let min, max, vals;
  59032. this.values = values = normalizeValues(values);
  59033. vals = values.slice();
  59034. vals[0] = vals[0] === null ? vals[2] : vals[0];
  59035. vals[1] = values[1] === null ? vals[2] : vals[1];
  59036. min = Math.min.apply(Math, values);
  59037. max = Math.max.apply(Math, values);
  59038. if (options.get("base") === void 0) {
  59039. min = min < 0 ? min : 0;
  59040. } else {
  59041. min = options.get("base");
  59042. }
  59043. this.min = min;
  59044. this.max = max;
  59045. this.range = max - min;
  59046. this.shapes = {};
  59047. this.valueShapes = {};
  59048. this.regiondata = {};
  59049. this.width = width;
  59050. if (!values.length) {
  59051. this.disabled = true;
  59052. }
  59053. },
  59054. getRegion: function(el, x, y) {
  59055. let shapeid = this.target.getShapeAt(el, x, y);
  59056. return shapeid !== void 0 && this.shapes[shapeid] !== void 0 ? this.shapes[shapeid] : void 0;
  59057. },
  59058. getCurrentRegionFields: function() {
  59059. let currentRegion = this.currentRegion;
  59060. return {
  59061. fieldkey: currentRegion.substr(0, 1),
  59062. value: this.values[currentRegion.substr(1)],
  59063. region: currentRegion
  59064. };
  59065. },
  59066. changeHighlight: function(highlight) {
  59067. let currentRegion = this.currentRegion, shapeid = this.valueShapes[currentRegion], shape;
  59068. delete this.shapes[shapeid];
  59069. switch (currentRegion.substr(0, 1)) {
  59070. case "r":
  59071. shape = this.renderRange(currentRegion.substr(1), highlight);
  59072. break;
  59073. case "p":
  59074. shape = this.renderPerformance(highlight);
  59075. break;
  59076. case "t":
  59077. shape = this.renderTarget(highlight);
  59078. break;
  59079. }
  59080. this.valueShapes[currentRegion] = shape.id;
  59081. this.shapes[shape.id] = currentRegion;
  59082. this.target.replaceWithShape(shapeid, shape);
  59083. },
  59084. renderRange: function(rn, highlight) {
  59085. let rangeval = this.values[rn], rangewidth = Math.round(this.canvasWidth * ((rangeval - this.min) / this.range)), color = this.options.get("rangeColors")[rn - 2];
  59086. if (highlight) {
  59087. color = this.calcHighlightColor(color, this.options);
  59088. }
  59089. return this.target.drawRect(0, 0, rangewidth - 1, this.canvasHeight - 1, color, color);
  59090. },
  59091. renderPerformance: function(highlight) {
  59092. let perfval = this.values[1], perfwidth = Math.round(this.canvasWidth * ((perfval - this.min) / this.range)), color = this.options.get("performanceColor");
  59093. if (highlight) {
  59094. color = this.calcHighlightColor(color, this.options);
  59095. }
  59096. return this.target.drawRect(0, Math.round(this.canvasHeight * 0.3), perfwidth - 1, Math.round(this.canvasHeight * 0.4) - 1, color, color);
  59097. },
  59098. renderTarget: function(highlight) {
  59099. let targetval = this.values[0], x = Math.round(this.canvasWidth * ((targetval - this.min) / this.range) - this.options.get("targetWidth") / 2), targettop = Math.round(this.canvasHeight * 0.1), targetheight = this.canvasHeight - targettop * 2, color = this.options.get("targetColor");
  59100. if (highlight) {
  59101. color = this.calcHighlightColor(color, this.options);
  59102. }
  59103. return this.target.drawRect(x, targettop, this.options.get("targetWidth") - 1, targetheight - 1, color, color);
  59104. },
  59105. render: function(el, userValues) {
  59106. this.init(el, userValues);
  59107. let vlen = this.values.length, target = this.target, i2, shape;
  59108. for (i2 = 2; i2 < vlen; i2++) {
  59109. shape = this.renderRange(i2).append();
  59110. this.shapes[shape.id] = "r" + i2;
  59111. this.valueShapes["r" + i2] = shape.id;
  59112. }
  59113. if (this.values[1] !== null) {
  59114. shape = this.renderPerformance().append();
  59115. this.shapes[shape.id] = "p1";
  59116. this.valueShapes.p1 = shape.id;
  59117. }
  59118. if (this.values[0] !== null) {
  59119. shape = this.renderTarget().append();
  59120. this.shapes[shape.id] = "t0";
  59121. this.valueShapes.t0 = shape.id;
  59122. }
  59123. }
  59124. },
  59125. pie: {
  59126. type: "pie",
  59127. init: function(el, values) {
  59128. let options = this.options;
  59129. let width = el.mergedOptions.width;
  59130. let height = el.mergedOptions.height;
  59131. this.canvasWidth = el.mergedOptions.width;
  59132. this.canvasHeight = el.mergedOptions.height;
  59133. let total = 0, i2;
  59134. this.shapes = {};
  59135. this.valueShapes = {};
  59136. this.values = values = $.map(values, Number);
  59137. if (options.get("width") === "auto") {
  59138. this.width = this.height;
  59139. }
  59140. if (values.length > 0) {
  59141. for (i2 = values.length; i2--; ) {
  59142. total += values[i2];
  59143. }
  59144. }
  59145. this.total = total;
  59146. this.radius = Math.floor(Math.min(this.canvasWidth, this.canvasHeight) / 2);
  59147. },
  59148. getRegion: function(el, x, y) {
  59149. let shapeid = this.target.getShapeAt(el, x, y);
  59150. return shapeid !== void 0 && this.shapes[shapeid] !== void 0 ? this.shapes[shapeid] : void 0;
  59151. },
  59152. getCurrentRegionFields: function() {
  59153. let currentRegion = this.currentRegion;
  59154. return {
  59155. isNull: this.values[currentRegion] === void 0,
  59156. value: this.values[currentRegion],
  59157. percent: this.values[currentRegion] / this.total * 100,
  59158. color: this.options.get("sliceColors")[currentRegion % this.options.get("sliceColors").length],
  59159. offset: currentRegion
  59160. };
  59161. },
  59162. changeHighlight: function(highlight) {
  59163. let currentRegion = this.currentRegion, newslice = this.renderSlice(currentRegion, highlight), shapeid = this.valueShapes[currentRegion];
  59164. delete this.shapes[shapeid];
  59165. this.target.replaceWithShape(shapeid, newslice);
  59166. this.valueShapes[currentRegion] = newslice.id;
  59167. this.shapes[newslice.id] = currentRegion;
  59168. },
  59169. renderSlice: function(valuenum, highlight) {
  59170. let target = this.target, options = this.options, radius = this.radius, borderWidth = options.get("borderWidth"), offset = options.get("offset"), circle = 2 * Math.PI, values = this.values, total = this.total, next = offset ? 2 * Math.PI * (offset / 360) : 0, start, end, i2, vlen, color;
  59171. vlen = values.length;
  59172. for (i2 = 0; i2 < vlen; i2++) {
  59173. start = next;
  59174. end = next;
  59175. if (total > 0) {
  59176. end = next + circle * (values[i2] / total);
  59177. }
  59178. if (valuenum === i2) {
  59179. color = options.get("sliceColors")[i2 % options.get("sliceColors").length];
  59180. if (highlight) {
  59181. color = this.calcHighlightColor(color, options);
  59182. }
  59183. return target.drawPieSlice(radius, radius, radius - borderWidth, start, end, void 0, color);
  59184. }
  59185. next = end;
  59186. }
  59187. },
  59188. render: function(el, userValues) {
  59189. this.init(el, userValues);
  59190. let target = this.target, values = this.values, options = this.options, radius = this.radius, borderWidth = options.get("borderWidth"), shape, i2;
  59191. if (borderWidth) {
  59192. target.drawCircle(radius, radius, Math.floor(radius - borderWidth / 2), options.get("borderColor"), void 0, borderWidth).append();
  59193. }
  59194. for (i2 = values.length; i2--; ) {
  59195. if (values[i2]) {
  59196. shape = this.renderSlice(i2).append();
  59197. this.valueShapes[i2] = shape.id;
  59198. this.shapes[shape.id] = i2;
  59199. }
  59200. }
  59201. }
  59202. },
  59203. box: {
  59204. type: "box",
  59205. init: function(el, values) {
  59206. let options = this.options;
  59207. let width = el.mergedOptions.width;
  59208. let height = el.mergedOptions.height;
  59209. this.canvasWidth = el.mergedOptions.width;
  59210. this.canvasHeight = el.mergedOptions.height;
  59211. this.values = $.map(values, Number);
  59212. this.width = options.get("width") === "auto" ? "4.0em" : width;
  59213. if (!this.values.length) {
  59214. this.disabled = 1;
  59215. }
  59216. },
  59217. getRegion: function() {
  59218. return 1;
  59219. },
  59220. getCurrentRegionFields: function() {
  59221. let result = [
  59222. {field: "lq", value: this.quartiles[0]},
  59223. {field: "med", value: this.quartiles[1]},
  59224. {field: "uq", value: this.quartiles[2]}
  59225. ];
  59226. if (this.loutlier !== void 0) {
  59227. result.push({field: "lo", value: this.loutlier});
  59228. }
  59229. if (this.routlier !== void 0) {
  59230. result.push({field: "ro", value: this.routlier});
  59231. }
  59232. if (this.lwhisker !== void 0) {
  59233. result.push({field: "lw", value: this.lwhisker});
  59234. }
  59235. if (this.rwhisker !== void 0) {
  59236. result.push({field: "rw", value: this.rwhisker});
  59237. }
  59238. return result;
  59239. },
  59240. render: function(el, userValues) {
  59241. this.init(el, userValues);
  59242. let target = this.target, values = this.values, vlen = values.length, options = this.options, canvasWidth = this.canvasWidth, canvasHeight = this.canvasHeight, minValue = options.get("chartRangeMin") === void 0 ? Math.min.apply(Math, values) : options.get("chartRangeMin"), maxValue = options.get("chartRangeMax") === void 0 ? Math.max.apply(Math, values) : options.get("chartRangeMax"), canvasLeft = 0, lwhisker, loutlier, iqr, q1, q2, q3, rwhisker, routlier, i2, size, unitSize;
  59243. if (options.get("raw")) {
  59244. if (options.get("showOutliers") && values.length > 5) {
  59245. loutlier = values[0];
  59246. lwhisker = values[1];
  59247. q1 = values[2];
  59248. q2 = values[3];
  59249. q3 = values[4];
  59250. rwhisker = values[5];
  59251. routlier = values[6];
  59252. } else {
  59253. lwhisker = values[0];
  59254. q1 = values[1];
  59255. q2 = values[2];
  59256. q3 = values[3];
  59257. rwhisker = values[4];
  59258. }
  59259. } else {
  59260. values.sort(function(a, b) {
  59261. return a - b;
  59262. });
  59263. q1 = quartile(values, 1);
  59264. q2 = quartile(values, 2);
  59265. q3 = quartile(values, 3);
  59266. iqr = q3 - q1;
  59267. if (options.get("showOutliers")) {
  59268. lwhisker = rwhisker = void 0;
  59269. for (i2 = 0; i2 < vlen; i2++) {
  59270. if (lwhisker === void 0 && values[i2] > q1 - iqr * options.get("outlierIQR")) {
  59271. lwhisker = values[i2];
  59272. }
  59273. if (values[i2] < q3 + iqr * options.get("outlierIQR")) {
  59274. rwhisker = values[i2];
  59275. }
  59276. }
  59277. loutlier = values[0];
  59278. routlier = values[vlen - 1];
  59279. } else {
  59280. lwhisker = values[0];
  59281. rwhisker = values[vlen - 1];
  59282. }
  59283. }
  59284. this.quartiles = [q1, q2, q3];
  59285. this.lwhisker = lwhisker;
  59286. this.rwhisker = rwhisker;
  59287. this.loutlier = loutlier;
  59288. this.routlier = routlier;
  59289. unitSize = canvasWidth / (maxValue - minValue + 1);
  59290. if (options.get("showOutliers")) {
  59291. canvasLeft = Math.ceil(options.get("spotRadius"));
  59292. canvasWidth -= 2 * Math.ceil(options.get("spotRadius"));
  59293. unitSize = canvasWidth / (maxValue - minValue + 1);
  59294. if (loutlier < lwhisker) {
  59295. target.drawCircle((loutlier - minValue) * unitSize + canvasLeft, canvasHeight / 2, options.get("spotRadius"), options.get("outlierLineColor"), options.get("outlierFillColor")).append();
  59296. }
  59297. if (routlier > rwhisker) {
  59298. target.drawCircle((routlier - minValue) * unitSize + canvasLeft, canvasHeight / 2, options.get("spotRadius"), options.get("outlierLineColor"), options.get("outlierFillColor")).append();
  59299. }
  59300. }
  59301. target.drawRect(Math.round((q1 - minValue) * unitSize + canvasLeft), Math.round(canvasHeight * 0.1), Math.round((q3 - q1) * unitSize), Math.round(canvasHeight * 0.8), options.get("boxLineColor"), options.get("boxFillColor")).append();
  59302. target.drawLine(Math.round((lwhisker - minValue) * unitSize + canvasLeft), Math.round(canvasHeight / 2), Math.round((q1 - minValue) * unitSize + canvasLeft), Math.round(canvasHeight / 2), options.get("lineColor")).append();
  59303. target.drawLine(Math.round((lwhisker - minValue) * unitSize + canvasLeft), Math.round(canvasHeight / 4), Math.round((lwhisker - minValue) * unitSize + canvasLeft), Math.round(canvasHeight - canvasHeight / 4), options.get("whiskerColor")).append();
  59304. target.drawLine(Math.round((rwhisker - minValue) * unitSize + canvasLeft), Math.round(canvasHeight / 2), Math.round((q3 - minValue) * unitSize + canvasLeft), Math.round(canvasHeight / 2), options.get("lineColor")).append();
  59305. target.drawLine(Math.round((rwhisker - minValue) * unitSize + canvasLeft), Math.round(canvasHeight / 4), Math.round((rwhisker - minValue) * unitSize + canvasLeft), Math.round(canvasHeight - canvasHeight / 4), options.get("whiskerColor")).append();
  59306. target.drawLine(Math.round((q2 - minValue) * unitSize + canvasLeft), Math.round(canvasHeight * 0.1), Math.round((q2 - minValue) * unitSize + canvasLeft), Math.round(canvasHeight * 0.9), options.get("medianColor")).append();
  59307. if (options.get("target")) {
  59308. size = Math.ceil(options.get("spotRadius"));
  59309. target.drawLine(Math.round((options.get("target") - minValue) * unitSize + canvasLeft), Math.round(canvasHeight / 2 - size), Math.round((options.get("target") - minValue) * unitSize + canvasLeft), Math.round(canvasHeight / 2 + size), options.get("targetColor")).append();
  59310. target.drawLine(Math.round((options.get("target") - minValue) * unitSize + canvasLeft - size), Math.round(canvasHeight / 2), Math.round((options.get("target") - minValue) * unitSize + canvasLeft + size), Math.round(canvasHeight / 2), options.get("targetColor")).append();
  59311. }
  59312. }
  59313. },
  59314. shapeCount: 0,
  59315. shapes: {},
  59316. shapeseq: [],
  59317. lastShapeId: null,
  59318. mergedOptions: null,
  59319. init: function(userValues, userOptions) {
  59320. let extendedOptions, defaults2, base;
  59321. userOptions = userOptions || {};
  59322. let _this = this;
  59323. defaults2 = this.defaultOption;
  59324. base = defaults2.common;
  59325. extendedOptions = defaults2[userOptions.type || base.type];
  59326. _this.shapeCount = 0;
  59327. _this.shapes = {};
  59328. _this.shapeseq = [];
  59329. _this.lastShapeId = null;
  59330. _this.mergedOptions = $.extend({}, base, extendedOptions, userOptions);
  59331. _this.mergedOptions.width = _this.mergedOptions.width;
  59332. _this.mergedOptions.height = _this.mergedOptions.height;
  59333. _this[_this.mergedOptions.type].render(_this, userValues);
  59334. return {shapes: _this.shapes, shapeseq: _this.shapeseq, offsetX: _this.mergedOptions.offsetX, offsetY: _this.mergedOptions.offsetY, pixelWidth: _this.mergedOptions.width, pixelHeight: _this.mergedOptions.height};
  59335. },
  59336. _getContext: function(lineColor, fillColor, lineWidth) {
  59337. let context;
  59338. if (this.ctx != null) {
  59339. context = this.ctx;
  59340. } else {
  59341. context = $("#" + this._canvasID).get(0).getContext("2d");
  59342. }
  59343. if (lineColor !== void 0) {
  59344. context.strokeStyle = lineColor;
  59345. }
  59346. context.lineWidth = lineWidth === void 0 ? 1 : lineWidth;
  59347. if (fillColor !== void 0) {
  59348. context.fillStyle = fillColor;
  59349. }
  59350. return context;
  59351. },
  59352. reset: function() {
  59353. let context = this._getContext();
  59354. context.clearRect(0, 0, this.pixelWidth, this.pixelHeight);
  59355. this.shapes = {};
  59356. this.shapeseq = [];
  59357. this.currentTargetShapeId = void 0;
  59358. },
  59359. _drawShape: function(shapeid, path, lineColor, fillColor, lineWidth) {
  59360. let context = this._getContext(lineColor, fillColor, lineWidth), i2, plen;
  59361. context.beginPath();
  59362. context.moveTo(path[0][0] + 0.5 + this.offsetX, path[0][1] + 0.5 + this.offsetY);
  59363. for (i2 = 1, plen = path.length; i2 < plen; i2++) {
  59364. context.lineTo(path[i2][0] + 0.5 + this.offsetX, path[i2][1] + 0.5 + this.offsetY);
  59365. }
  59366. if (lineColor !== void 0) {
  59367. context.stroke();
  59368. }
  59369. if (fillColor !== void 0) {
  59370. context.fill();
  59371. }
  59372. if (this.targetX !== void 0 && this.targetY !== void 0 && context.isPointInPath(this.targetX + this.offsetX, this.targetY + this.offsetY)) {
  59373. this.currentTargetShapeId = shapeid;
  59374. }
  59375. },
  59376. _drawCircle: function(shapeid, x, y, radius, lineColor, fillColor, lineWidth) {
  59377. let context = this._getContext(lineColor, fillColor, lineWidth);
  59378. context.beginPath();
  59379. x += this.offsetX;
  59380. y += this.offsetY;
  59381. context.arc(x, y, radius, 0, 2 * Math.PI, false);
  59382. if (this.targetX !== void 0 && this.targetY !== void 0 && context.isPointInPath(this.targetX + this.offsetX, this.targetY + this.offsetY)) {
  59383. this.currentTargetShapeId = shapeid;
  59384. }
  59385. if (lineColor !== void 0) {
  59386. context.stroke();
  59387. }
  59388. if (fillColor !== void 0) {
  59389. context.fill();
  59390. }
  59391. },
  59392. _drawPieSlice: function(shapeid, x, y, radius, startAngle, endAngle, lineColor, fillColor) {
  59393. let context = this._getContext(lineColor, fillColor);
  59394. x += this.offsetX;
  59395. y += this.offsetY;
  59396. context.beginPath();
  59397. context.moveTo(x, y);
  59398. context.arc(x, y, radius, startAngle, endAngle, false);
  59399. context.lineTo(x, y);
  59400. context.closePath();
  59401. if (lineColor !== void 0) {
  59402. context.stroke();
  59403. }
  59404. if (fillColor) {
  59405. context.fill();
  59406. }
  59407. if (this.targetX !== void 0 && this.targetY !== void 0 && context.isPointInPath(this.targetX + this.offsetX, this.targetY + this.offsetY)) {
  59408. this.currentTargetShapeId = shapeid;
  59409. }
  59410. },
  59411. _drawRect: function(shapeid, x, y, width, height, lineColor, fillColor) {
  59412. return this._drawShape(shapeid, [[x, y], [x + width, y], [x + width, y + height], [x, y + height], [x, y]], lineColor, fillColor);
  59413. },
  59414. appendShape: function(shape) {
  59415. this.shapes[shape.id] = shape;
  59416. this.shapeseq.push(shape.id);
  59417. this.lastShapeId = shape.id;
  59418. return shape.id;
  59419. },
  59420. replaceWithShape: function(shapeid, shape) {
  59421. let shapeseq = this.shapeseq, i2;
  59422. this.shapes[shape.id] = shape;
  59423. for (i2 = shapeseq.length; i2--; ) {
  59424. if (shapeseq[i2] == shapeid) {
  59425. shapeseq[i2] = shape.id;
  59426. }
  59427. }
  59428. delete this.shapes[shapeid];
  59429. },
  59430. replaceWithShapes: function(shapeids, shapes) {
  59431. let shapeseq = this.shapeseq, shapemap = {}, sid, i2, first;
  59432. for (i2 = shapeids.length; i2--; ) {
  59433. shapemap[shapeids[i2]] = true;
  59434. }
  59435. for (i2 = shapeseq.length; i2--; ) {
  59436. sid = shapeseq[i2];
  59437. if (shapemap[sid]) {
  59438. shapeseq.splice(i2, 1);
  59439. delete this.shapes[sid];
  59440. first = i2;
  59441. }
  59442. }
  59443. for (i2 = shapes.length; i2--; ) {
  59444. shapeseq.splice(first, 0, shapes[i2].id);
  59445. this.shapes[shapes[i2].id] = shapes[i2];
  59446. }
  59447. },
  59448. insertAfterShape: function(shapeid, shape) {
  59449. let shapeseq = this.shapeseq, i2;
  59450. for (i2 = shapeseq.length; i2--; ) {
  59451. if (shapeseq[i2] === shapeid) {
  59452. shapeseq.splice(i2 + 1, 0, shape.id);
  59453. this.shapes[shape.id] = shape;
  59454. return;
  59455. }
  59456. }
  59457. },
  59458. removeShapeId: function(shapeid) {
  59459. let shapeseq = this.shapeseq, i2;
  59460. for (i2 = shapeseq.length; i2--; ) {
  59461. if (shapeseq[i2] === shapeid) {
  59462. shapeseq.splice(i2, 1);
  59463. break;
  59464. }
  59465. }
  59466. delete this.shapes[shapeid];
  59467. },
  59468. getShapeAt: function(el, x, y) {
  59469. this.targetX = x;
  59470. this.targetY = y;
  59471. this.render();
  59472. return this.currentTargetShapeId;
  59473. },
  59474. _canvasID: "luckysheetTableContent",
  59475. render: function(shapeseq, shapes, offsetX, offsetY, pixelWidth, pixelHeight, canvasid, ctx) {
  59476. if (canvasid == null) {
  59477. canvasid = "luckysheetTableContent";
  59478. }
  59479. this._canvasID = canvasid;
  59480. if (ctx != null) {
  59481. this.ctx = ctx;
  59482. }
  59483. let shapeCount = shapeseq.length, context = this._getContext(), shapeid, shape, i2;
  59484. this.offsetX = offsetX;
  59485. this.offsetY = offsetY;
  59486. this.pixelWidth = pixelWidth;
  59487. this.pixelHeight = pixelHeight;
  59488. for (i2 = 0; i2 < shapeCount; i2++) {
  59489. shapeid = shapeseq[i2];
  59490. shape = shapes[shapeid];
  59491. this["_draw" + shape.type].apply(this, shape.args);
  59492. }
  59493. },
  59494. drawLine: function(x1, y1, x2, y2, lineColor, lineWidth) {
  59495. return this.drawShape([[x1, y1], [x2, y2]], lineColor, lineWidth);
  59496. },
  59497. drawShape: function(path, lineColor, fillColor, lineWidth) {
  59498. return this._genShape("Shape", [path, lineColor, fillColor, lineWidth]);
  59499. },
  59500. drawCircle: function(x, y, radius, lineColor, fillColor, lineWidth) {
  59501. return this._genShape("Circle", [x, y, radius, lineColor, fillColor, lineWidth]);
  59502. },
  59503. drawPieSlice: function(x, y, radius, startAngle, endAngle, lineColor, fillColor) {
  59504. return this._genShape("PieSlice", [x, y, radius, startAngle, endAngle, lineColor, fillColor]);
  59505. },
  59506. drawRect: function(x, y, width, height, lineColor, fillColor) {
  59507. return this._genShape("Rect", [x, y, width, height, lineColor, fillColor]);
  59508. },
  59509. _genShape: function(shapetype, shapeargs) {
  59510. let id = this.shapeCount++;
  59511. shapeargs.unshift(id);
  59512. let shape = {id, type: shapetype, args: shapeargs};
  59513. this.shapes[id] = shape;
  59514. this.shapeseq.push(id);
  59515. this.lastShapeId = id;
  59516. return {
  59517. append: function() {
  59518. return shape;
  59519. },
  59520. get: function() {
  59521. return id;
  59522. }
  59523. };
  59524. }
  59525. };
  59526. barHighlightMixin = {
  59527. changeHighlight: function(highlight) {
  59528. let currentRegion = this.currentRegion, target = this.target, shapeids = this.regionShapes[currentRegion], newShapes;
  59529. if (shapeids) {
  59530. newShapes = this.renderRegion(currentRegion, highlight);
  59531. if ($.isArray(newShapes) || $.isArray(shapeids)) {
  59532. target.replaceWithShapes(shapeids, newShapes);
  59533. this.regionShapes[currentRegion] = $.map(newShapes, function(newShape) {
  59534. return newShape.id;
  59535. });
  59536. } else {
  59537. target.replaceWithShape(shapeids, newShapes);
  59538. this.regionShapes[currentRegion] = newShapes.id;
  59539. }
  59540. }
  59541. },
  59542. render: function(el, userValues) {
  59543. this.init(el, userValues);
  59544. let values = this.values, target = this.target, regionShapes = this.regionShapes, shapes, ids, i2, j;
  59545. for (i2 = values.length; i2--; ) {
  59546. shapes = this.renderRegion(i2);
  59547. if (shapes) {
  59548. if ($.isArray(shapes)) {
  59549. ids = [];
  59550. for (j = shapes.length; j--; ) {
  59551. shapes[j].append();
  59552. ids.push(shapes[j].id);
  59553. }
  59554. regionShapes[i2] = ids;
  59555. } else {
  59556. shapes.append();
  59557. regionShapes[i2] = shapes.id;
  59558. }
  59559. } else {
  59560. regionShapes[i2] = null;
  59561. }
  59562. }
  59563. }
  59564. };
  59565. _luckysheetSparkLineOptions = {
  59566. get: function(type) {
  59567. return luckysheetSparkline.mergedOptions[type];
  59568. }
  59569. };
  59570. _luckysheetSparkLineTarget = {
  59571. drawLine: function(x1, y1, x2, y2, lineColor, lineWidth) {
  59572. return luckysheetSparkline.drawLine(x1, y1, x2, y2, lineColor, lineWidth);
  59573. },
  59574. drawShape: function(path, lineColor, fillColor, lineWidth) {
  59575. return luckysheetSparkline.drawShape(path, lineColor, fillColor, lineWidth);
  59576. },
  59577. drawCircle: function(x, y, radius, lineColor, fillColor, lineWidth) {
  59578. return luckysheetSparkline.drawCircle(x, y, radius, lineColor, fillColor, lineWidth);
  59579. },
  59580. drawPieSlice: function(x, y, radius, startAngle, endAngle, lineColor, fillColor) {
  59581. return luckysheetSparkline.drawPieSlice(x, y, radius, startAngle, endAngle, lineColor, fillColor);
  59582. },
  59583. drawRect: function(x, y, width, height, lineColor, fillColor) {
  59584. return luckysheetSparkline.drawRect(x, y, width, height, lineColor, fillColor);
  59585. }
  59586. };
  59587. for (let item2 in luckysheetSparkline) {
  59588. if (item2 in {"line": null, "bar": null, "column": null, "tristate": null, "discrete": null, "bullet": null, "pie": null, "box": null}) {
  59589. luckysheetSparkline[item2].options = _luckysheetSparkLineOptions;
  59590. luckysheetSparkline[item2].target = _luckysheetSparkLineTarget;
  59591. }
  59592. if (item2 in {"bar": null, "column": null, "tristate": null, "discrete": null}) {
  59593. luckysheetSparkline[item2].changeHighlight = barHighlightMixin.changeHighlight;
  59594. luckysheetSparkline[item2].render = barHighlightMixin.render;
  59595. }
  59596. }
  59597. sparkline_default = luckysheetSparkline;
  59598. }
  59599. });
  59600. // src/global/draw.js
  59601. function luckysheetDrawgridRowTitle(scrollHeight, drawHeight, offsetTop) {
  59602. if (scrollHeight == null) {
  59603. scrollHeight = $("#luckysheet-cell-main").scrollTop();
  59604. }
  59605. if (drawHeight == null) {
  59606. drawHeight = store_default.luckysheetTableContentHW[1];
  59607. }
  59608. if (offsetTop == null) {
  59609. offsetTop = store_default.columnHeaderHeight;
  59610. }
  59611. let luckysheetTableContent = $("#luckysheetTableContent").get(0).getContext("2d");
  59612. luckysheetTableContent.save();
  59613. luckysheetTableContent.scale(store_default.devicePixelRatio, store_default.devicePixelRatio);
  59614. luckysheetTableContent.clearRect(0, offsetTop, store_default.rowHeaderWidth - 1, drawHeight);
  59615. luckysheetTableContent.font = luckysheetdefaultFont();
  59616. luckysheetTableContent.textBaseline = luckysheetdefaultstyle.textBaseline;
  59617. luckysheetTableContent.fillStyle = luckysheetdefaultstyle.fillStyle;
  59618. let dataset_row_st, dataset_row_ed;
  59619. dataset_row_st = luckysheet_searcharray(store_default.visibledatarow, scrollHeight);
  59620. dataset_row_ed = luckysheet_searcharray(store_default.visibledatarow, scrollHeight + drawHeight);
  59621. if (dataset_row_st == -1) {
  59622. dataset_row_st = 0;
  59623. }
  59624. if (dataset_row_ed == -1) {
  59625. dataset_row_ed = store_default.visibledatarow.length - 1;
  59626. }
  59627. luckysheetTableContent.save();
  59628. luckysheetTableContent.beginPath();
  59629. luckysheetTableContent.rect(0, offsetTop - 1, store_default.rowHeaderWidth - 1, drawHeight - 2);
  59630. luckysheetTableContent.clip();
  59631. let end_r, start_r;
  59632. let bodrder05 = 0.5;
  59633. let preEndR;
  59634. for (let r2 = dataset_row_st; r2 <= dataset_row_ed; r2++) {
  59635. if (r2 == 0) {
  59636. start_r = -scrollHeight - 1;
  59637. } else {
  59638. start_r = store_default.visibledatarow[r2 - 1] - scrollHeight - 1;
  59639. }
  59640. end_r = store_default.visibledatarow[r2] - scrollHeight;
  59641. let firstOffset = dataset_row_st == r2 ? -2 : 0;
  59642. let lastOffset = dataset_row_ed == r2 ? -2 : 0;
  59643. if (!method_default.createHookFunction("rowTitleCellRenderBefore", r2 + 1, {
  59644. r: r2,
  59645. top: start_r + offsetTop + firstOffset,
  59646. width: store_default.rowHeaderWidth - 1,
  59647. height: end_r - start_r + 1 + lastOffset - firstOffset
  59648. }, luckysheetTableContent)) {
  59649. continue;
  59650. }
  59651. if (store_default.config["rowhidden"] != null && store_default.config["rowhidden"][r2] != null) {
  59652. } else {
  59653. luckysheetTableContent.fillStyle = "#ffffff";
  59654. luckysheetTableContent.fillRect(0, start_r + offsetTop + firstOffset, store_default.rowHeaderWidth - 1, end_r - start_r + 1 + lastOffset - firstOffset);
  59655. luckysheetTableContent.fillStyle = "#000000";
  59656. luckysheetTableContent.save();
  59657. luckysheetTableContent.scale(store_default.zoomRatio, store_default.zoomRatio);
  59658. let textMetrics = getMeasureText(r2 + 1, luckysheetTableContent);
  59659. let horizonAlignPos = (store_default.rowHeaderWidth - textMetrics.width) / 2;
  59660. let verticalAlignPos = start_r + (end_r - start_r) / 2 + offsetTop;
  59661. luckysheetTableContent.fillText(r2 + 1, horizonAlignPos / store_default.zoomRatio, verticalAlignPos / store_default.zoomRatio);
  59662. luckysheetTableContent.restore();
  59663. }
  59664. luckysheetTableContent.beginPath();
  59665. luckysheetTableContent.moveTo(store_default.rowHeaderWidth - 2 + bodrder05, start_r + offsetTop - 2);
  59666. luckysheetTableContent.lineTo(store_default.rowHeaderWidth - 2 + bodrder05, end_r + offsetTop - 2);
  59667. luckysheetTableContent.lineWidth = 1;
  59668. luckysheetTableContent.strokeStyle = luckysheetdefaultstyle.strokeStyle;
  59669. luckysheetTableContent.stroke();
  59670. luckysheetTableContent.closePath();
  59671. if (store_default.config["rowhidden"] != null && store_default.config["rowhidden"][r2] == null && store_default.config["rowhidden"][r2 + 1] != null) {
  59672. luckysheetTableContent.beginPath();
  59673. luckysheetTableContent.moveTo(-1, end_r + offsetTop - 4 + bodrder05);
  59674. luckysheetTableContent.lineTo(store_default.rowHeaderWidth - 1, end_r + offsetTop - 4 + bodrder05);
  59675. luckysheetTableContent.closePath();
  59676. luckysheetTableContent.stroke();
  59677. } else if (store_default.config["rowhidden"] == null || store_default.config["rowhidden"][r2] == null) {
  59678. luckysheetTableContent.beginPath();
  59679. luckysheetTableContent.moveTo(-1, end_r + offsetTop - 2 + bodrder05);
  59680. luckysheetTableContent.lineTo(store_default.rowHeaderWidth - 1, end_r + offsetTop - 2 + bodrder05);
  59681. luckysheetTableContent.closePath();
  59682. luckysheetTableContent.stroke();
  59683. }
  59684. if (store_default.config["rowhidden"] != null && store_default.config["rowhidden"][r2 - 1] != null && preEndR != null) {
  59685. luckysheetTableContent.beginPath();
  59686. luckysheetTableContent.moveTo(-1, preEndR + offsetTop + bodrder05);
  59687. luckysheetTableContent.lineTo(store_default.rowHeaderWidth - 1, preEndR + offsetTop + bodrder05);
  59688. luckysheetTableContent.closePath();
  59689. luckysheetTableContent.stroke();
  59690. }
  59691. preEndR = end_r;
  59692. method_default.createHookFunction("rowTitleCellRenderAfter", r2 + 1, {
  59693. r: r2,
  59694. top: start_r + offsetTop + firstOffset,
  59695. width: store_default.rowHeaderWidth - 1,
  59696. height: end_r - start_r + 1 + lastOffset - firstOffset
  59697. }, luckysheetTableContent);
  59698. }
  59699. luckysheetTableContent.restore();
  59700. luckysheetTableContent.restore();
  59701. }
  59702. function luckysheetDrawgridColumnTitle(scrollWidth, drawWidth, offsetLeft) {
  59703. if (scrollWidth == null) {
  59704. scrollWidth = $("#luckysheet-cell-main").scrollLeft();
  59705. }
  59706. if (drawWidth == null) {
  59707. drawWidth = store_default.luckysheetTableContentHW[0];
  59708. }
  59709. if (offsetLeft == null) {
  59710. offsetLeft = store_default.rowHeaderWidth;
  59711. }
  59712. let luckysheetTableContent = $("#luckysheetTableContent").get(0).getContext("2d");
  59713. luckysheetTableContent.save();
  59714. luckysheetTableContent.scale(store_default.devicePixelRatio, store_default.devicePixelRatio);
  59715. luckysheetTableContent.clearRect(offsetLeft, 0, drawWidth, store_default.columnHeaderHeight - 1);
  59716. luckysheetTableContent.font = luckysheetdefaultFont();
  59717. luckysheetTableContent.textBaseline = luckysheetdefaultstyle.textBaseline;
  59718. luckysheetTableContent.fillStyle = luckysheetdefaultstyle.fillStyle;
  59719. let dataset_col_st, dataset_col_ed;
  59720. dataset_col_st = luckysheet_searcharray(store_default.visibledatacolumn, scrollWidth);
  59721. dataset_col_ed = luckysheet_searcharray(store_default.visibledatacolumn, scrollWidth + drawWidth);
  59722. if (dataset_col_st == -1) {
  59723. dataset_col_st = 0;
  59724. }
  59725. if (dataset_col_ed == -1) {
  59726. dataset_col_ed = store_default.visibledatacolumn.length - 1;
  59727. }
  59728. luckysheetTableContent.save();
  59729. luckysheetTableContent.beginPath();
  59730. luckysheetTableContent.rect(offsetLeft - 1, 0, drawWidth, store_default.columnHeaderHeight - 1);
  59731. luckysheetTableContent.clip();
  59732. let end_c, start_c;
  59733. let bodrder05 = 0.5;
  59734. let preEndC;
  59735. for (let c2 = dataset_col_st; c2 <= dataset_col_ed; c2++) {
  59736. if (c2 == 0) {
  59737. start_c = -scrollWidth;
  59738. } else {
  59739. start_c = store_default.visibledatacolumn[c2 - 1] - scrollWidth;
  59740. }
  59741. end_c = store_default.visibledatacolumn[c2] - scrollWidth;
  59742. let abc = chatatABC(c2);
  59743. if (!method_default.createHookFunction("columnTitleCellRenderBefore", abc, {
  59744. c: c2,
  59745. left: start_c + offsetLeft - 1,
  59746. width: end_c - start_c,
  59747. height: store_default.columnHeaderHeight - 1
  59748. }, luckysheetTableContent)) {
  59749. continue;
  59750. }
  59751. if (store_default.config["colhidden"] != null && store_default.config["colhidden"][c2] != null) {
  59752. } else {
  59753. luckysheetTableContent.fillStyle = "#ffffff";
  59754. luckysheetTableContent.fillRect(start_c + offsetLeft - 1, 0, end_c - start_c, store_default.columnHeaderHeight - 1);
  59755. luckysheetTableContent.fillStyle = "#000000";
  59756. luckysheetTableContent.save();
  59757. luckysheetTableContent.scale(store_default.zoomRatio, store_default.zoomRatio);
  59758. let textMetrics = getMeasureText(abc, luckysheetTableContent);
  59759. let horizonAlignPos = Math.round(start_c + (end_c - start_c) / 2 + offsetLeft - textMetrics.width / 2);
  59760. let verticalAlignPos = Math.round(store_default.columnHeaderHeight / 2);
  59761. luckysheetTableContent.fillText(abc, horizonAlignPos / store_default.zoomRatio, verticalAlignPos / store_default.zoomRatio);
  59762. luckysheetTableContent.restore();
  59763. }
  59764. if (store_default.config["colhidden"] != null && store_default.config["colhidden"][c2] == null && store_default.config["colhidden"][c2 + 1] != null) {
  59765. luckysheetTableContent.beginPath();
  59766. luckysheetTableContent.moveTo(end_c + offsetLeft - 4 + bodrder05, 0);
  59767. luckysheetTableContent.lineTo(end_c + offsetLeft - 4 + bodrder05, store_default.columnHeaderHeight - 2);
  59768. luckysheetTableContent.lineWidth = 1;
  59769. luckysheetTableContent.strokeStyle = luckysheetdefaultstyle.strokeStyle;
  59770. luckysheetTableContent.closePath();
  59771. luckysheetTableContent.stroke();
  59772. } else if (store_default.config["colhidden"] == null || store_default.config["colhidden"][c2] == null) {
  59773. luckysheetTableContent.beginPath();
  59774. luckysheetTableContent.moveTo(end_c + offsetLeft - 2 + bodrder05, 0);
  59775. luckysheetTableContent.lineTo(end_c + offsetLeft - 2 + bodrder05, store_default.columnHeaderHeight - 2);
  59776. luckysheetTableContent.lineWidth = 1;
  59777. luckysheetTableContent.strokeStyle = luckysheetdefaultstyle.strokeStyle;
  59778. luckysheetTableContent.closePath();
  59779. luckysheetTableContent.stroke();
  59780. }
  59781. if (store_default.config["colhidden"] != null && store_default.config["colhidden"][c2 - 1] != null && preEndC != null) {
  59782. luckysheetTableContent.beginPath();
  59783. luckysheetTableContent.moveTo(preEndC + offsetLeft + bodrder05, 0);
  59784. luckysheetTableContent.lineTo(preEndC + offsetLeft + bodrder05, store_default.columnHeaderHeight - 2);
  59785. luckysheetTableContent.closePath();
  59786. luckysheetTableContent.stroke();
  59787. }
  59788. luckysheetTableContent.beginPath();
  59789. luckysheetTableContent.moveTo(start_c + offsetLeft - 1, store_default.columnHeaderHeight - 2 + bodrder05);
  59790. luckysheetTableContent.lineTo(end_c + offsetLeft - 1, store_default.columnHeaderHeight - 2 + bodrder05);
  59791. luckysheetTableContent.stroke();
  59792. luckysheetTableContent.closePath();
  59793. preEndC = end_c;
  59794. method_default.createHookFunction("columnTitleCellRenderAfter", abc, {
  59795. c: c2,
  59796. left: start_c + offsetLeft - 1,
  59797. width: end_c - start_c,
  59798. height: store_default.columnHeaderHeight - 1
  59799. }, luckysheetTableContent);
  59800. }
  59801. luckysheetTableContent.restore();
  59802. luckysheetTableContent.restore();
  59803. }
  59804. function luckysheetDrawMain(scrollWidth, scrollHeight, drawWidth, drawHeight, offsetLeft, offsetTop, columnOffsetCell, rowOffsetCell, mycanvas) {
  59805. if (store_default.flowdata == null) {
  59806. return;
  59807. }
  59808. let sheetFile = sheetmanage_default.getSheetByIndex();
  59809. clearTimeout(store_default.measureTextCacheTimeOut);
  59810. if (scrollWidth == null) {
  59811. scrollWidth = $("#luckysheet-cell-main").scrollLeft();
  59812. }
  59813. if (scrollHeight == null) {
  59814. scrollHeight = $("#luckysheet-cell-main").scrollTop();
  59815. }
  59816. if (drawWidth == null) {
  59817. drawWidth = store_default.luckysheetTableContentHW[0];
  59818. }
  59819. if (drawHeight == null) {
  59820. drawHeight = store_default.luckysheetTableContentHW[1];
  59821. }
  59822. if (offsetLeft == null) {
  59823. offsetLeft = store_default.rowHeaderWidth;
  59824. }
  59825. if (offsetTop == null) {
  59826. offsetTop = store_default.columnHeaderHeight;
  59827. }
  59828. if (columnOffsetCell == null) {
  59829. columnOffsetCell = 0;
  59830. }
  59831. if (rowOffsetCell == null) {
  59832. rowOffsetCell = 0;
  59833. }
  59834. let luckysheetTableContent = null;
  59835. if (mycanvas == null) {
  59836. luckysheetTableContent = $("#luckysheetTableContent").get(0).getContext("2d");
  59837. } else {
  59838. if (getObjType(mycanvas) == "object") {
  59839. try {
  59840. luckysheetTableContent = mycanvas.get(0).getContext("2d");
  59841. } catch (err) {
  59842. luckysheetTableContent = mycanvas;
  59843. }
  59844. } else {
  59845. luckysheetTableContent = $("#" + mycanvas).get(0).getContext("2d");
  59846. }
  59847. }
  59848. luckysheetTableContent.save();
  59849. luckysheetTableContent.scale(store_default.devicePixelRatio, store_default.devicePixelRatio);
  59850. luckysheetTableContent.clearRect(0, 0, store_default.luckysheetTableContentHW[0], store_default.luckysheetTableContentHW[1]);
  59851. let dataset_row_st, dataset_row_ed, dataset_col_st, dataset_col_ed;
  59852. dataset_row_st = luckysheet_searcharray(store_default.visibledatarow, scrollHeight);
  59853. dataset_row_ed = luckysheet_searcharray(store_default.visibledatarow, scrollHeight + drawHeight);
  59854. if (dataset_row_st == -1) {
  59855. dataset_row_st = 0;
  59856. }
  59857. dataset_row_st += rowOffsetCell;
  59858. if (dataset_row_ed == -1) {
  59859. dataset_row_ed = store_default.visibledatarow.length - 1;
  59860. }
  59861. dataset_row_ed += rowOffsetCell;
  59862. if (dataset_row_ed >= store_default.visibledatarow.length) {
  59863. dataset_row_ed = store_default.visibledatarow.length - 1;
  59864. }
  59865. dataset_col_st = luckysheet_searcharray(store_default.visibledatacolumn, scrollWidth);
  59866. dataset_col_ed = luckysheet_searcharray(store_default.visibledatacolumn, scrollWidth + drawWidth);
  59867. if (dataset_col_st == -1) {
  59868. dataset_col_st = 0;
  59869. }
  59870. dataset_col_st += columnOffsetCell;
  59871. if (dataset_col_ed == -1) {
  59872. dataset_col_ed = store_default.visibledatacolumn.length - 1;
  59873. }
  59874. dataset_col_ed += columnOffsetCell;
  59875. if (dataset_col_ed >= store_default.visibledatacolumn.length) {
  59876. dataset_col_ed = store_default.visibledatacolumn.length - 1;
  59877. }
  59878. let fill_row_st, fill_row_ed, fill_col_st, fill_col_ed;
  59879. if (dataset_row_st == 0) {
  59880. fill_row_st = 0;
  59881. } else {
  59882. fill_row_st = store_default.visibledatarow[dataset_row_st - 1];
  59883. }
  59884. fill_row_ed = store_default.visibledatarow[dataset_row_ed];
  59885. if (dataset_col_st == 0) {
  59886. fill_col_st = 0;
  59887. } else {
  59888. fill_col_st = store_default.visibledatacolumn[dataset_col_st - 1];
  59889. }
  59890. fill_col_ed = store_default.visibledatacolumn[dataset_col_ed];
  59891. luckysheetTableContent.fillStyle = "#ffffff";
  59892. luckysheetTableContent.fillRect(offsetLeft - 1, offsetTop - 1, fill_col_ed - scrollWidth, fill_row_ed - scrollHeight);
  59893. luckysheetTableContent.font = luckysheetdefaultFont();
  59894. luckysheetTableContent.fillStyle = luckysheetdefaultstyle.fillStyle;
  59895. let cellupdate = [];
  59896. let mergeCache = {};
  59897. let borderOffset = {};
  59898. let bodrder05 = 0.5;
  59899. method_default.createHookFunction("cellAllRenderBefore", store_default.flowdata, sheetFile, luckysheetTableContent);
  59900. for (let r2 = dataset_row_st; r2 <= dataset_row_ed; r2++) {
  59901. let start_r;
  59902. if (r2 == 0) {
  59903. start_r = -scrollHeight - 1;
  59904. } else {
  59905. start_r = store_default.visibledatarow[r2 - 1] - scrollHeight - 1;
  59906. }
  59907. let end_r = store_default.visibledatarow[r2] - scrollHeight;
  59908. if (store_default.config["rowhidden"] != null && store_default.config["rowhidden"][r2] != null) {
  59909. continue;
  59910. }
  59911. for (let c2 = dataset_col_st; c2 <= dataset_col_ed; c2++) {
  59912. let start_c;
  59913. if (c2 == 0) {
  59914. start_c = -scrollWidth;
  59915. } else {
  59916. start_c = store_default.visibledatacolumn[c2 - 1] - scrollWidth;
  59917. }
  59918. let end_c = store_default.visibledatacolumn[c2] - scrollWidth;
  59919. if (store_default.config["colhidden"] != null && store_default.config["colhidden"][c2] != null) {
  59920. continue;
  59921. }
  59922. let firstcolumnlen = store_default.defaultcollen;
  59923. if (store_default.config["columnlen"] != null && store_default.config["columnlen"][c2] != null) {
  59924. firstcolumnlen = store_default.config["columnlen"][c2];
  59925. }
  59926. if (store_default.flowdata[r2] != null && store_default.flowdata[r2][c2] != null) {
  59927. let value = store_default.flowdata[r2][c2];
  59928. if (getObjType(value) == "object" && "mc" in value) {
  59929. borderOffset[r2 + "_" + c2] = {
  59930. "start_r": start_r,
  59931. "start_c": start_c,
  59932. "end_r": end_r,
  59933. "end_c": end_c
  59934. };
  59935. if ("rs" in value["mc"]) {
  59936. let key = "r" + r2 + "c" + c2;
  59937. mergeCache[key] = cellupdate.length;
  59938. } else {
  59939. let key = "r" + value["mc"].r + "c" + value["mc"].c;
  59940. let margeMain = cellupdate[mergeCache[key]];
  59941. if (margeMain == null) {
  59942. mergeCache[key] = cellupdate.length;
  59943. cellupdate.push({
  59944. "r": r2,
  59945. "c": c2,
  59946. "start_c": start_c,
  59947. "start_r": start_r,
  59948. "end_r": end_r,
  59949. "end_c": end_c,
  59950. "firstcolumnlen": firstcolumnlen
  59951. });
  59952. } else {
  59953. if (margeMain.c == c2) {
  59954. margeMain.end_r += end_r - start_r - 1;
  59955. }
  59956. if (margeMain.r == r2) {
  59957. margeMain.end_c += end_c - start_c;
  59958. margeMain.firstcolumnlen += firstcolumnlen;
  59959. }
  59960. }
  59961. continue;
  59962. }
  59963. }
  59964. } else {
  59965. }
  59966. cellupdate.push({
  59967. "r": r2,
  59968. "c": c2,
  59969. "start_r": start_r,
  59970. "start_c": start_c,
  59971. "end_r": end_r,
  59972. "end_c": end_c,
  59973. "firstcolumnlen": firstcolumnlen
  59974. });
  59975. borderOffset[r2 + "_" + c2] = {
  59976. "start_r": start_r,
  59977. "start_c": start_c,
  59978. "end_r": end_r,
  59979. "end_c": end_c
  59980. };
  59981. }
  59982. }
  59983. let dynamicArray_compute = dynamicArrayCompute(store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)]["dynamicArray"]);
  59984. let af_compute = alternateformat_default.getComputeMap();
  59985. let cf_compute = conditionformat_default.getComputeMap();
  59986. let cellOverflowMap = getCellOverflowMap(luckysheetTableContent, dataset_col_st, dataset_col_ed, dataset_row_st, dataset_row_ed);
  59987. let mcArr = [];
  59988. for (let cud = 0; cud < cellupdate.length; cud++) {
  59989. let item2 = cellupdate[cud];
  59990. let r2 = item2.r, c2 = item2.c, start_r = item2.start_r, start_c = item2.start_c, end_r = item2.end_r, end_c = item2.end_c;
  59991. let firstcolumnlen = item2.firstcolumnlen;
  59992. if (store_default.flowdata[r2] == null) {
  59993. continue;
  59994. }
  59995. if (store_default.flowdata[r2][c2] == null) {
  59996. nullCellRender(r2, c2, start_r, start_c, end_r, end_c, luckysheetTableContent, af_compute, cf_compute, offsetLeft, offsetTop, dynamicArray_compute, cellOverflowMap, dataset_col_st, dataset_col_ed, scrollHeight, scrollWidth, bodrder05);
  59997. } else {
  59998. let cell = store_default.flowdata[r2][c2];
  59999. let value = null;
  60000. if (typeof cell == "object" && "mc" in cell) {
  60001. mcArr.push(cellupdate[cud]);
  60002. } else {
  60003. value = getRealCellValue(r2, c2);
  60004. }
  60005. if (value == null || value.toString().length == 0) {
  60006. nullCellRender(r2, c2, start_r, start_c, end_r, end_c, luckysheetTableContent, af_compute, cf_compute, offsetLeft, offsetTop, dynamicArray_compute, cellOverflowMap, dataset_col_st, dataset_col_ed, scrollHeight, scrollWidth, bodrder05);
  60007. let borderfix = menuButton_default.borderfix(store_default.flowdata, r2, c2);
  60008. let cellsize = [
  60009. start_c + offsetLeft + borderfix[0],
  60010. start_r + offsetTop + borderfix[1],
  60011. end_c - start_c - 3 + borderfix[2],
  60012. end_r - start_r - 3 - 1 + borderfix[3]
  60013. ];
  60014. sparklinesRender(r2, c2, cellsize[0], cellsize[1], "luckysheetTableContent", luckysheetTableContent);
  60015. } else {
  60016. if (r2 + "_" + c2 in dynamicArray_compute) {
  60017. value = dynamicArray_compute[r2 + "_" + c2].v;
  60018. }
  60019. cellRender(r2, c2, start_r, start_c, end_r, end_c, value, luckysheetTableContent, af_compute, cf_compute, offsetLeft, offsetTop, dynamicArray_compute, cellOverflowMap, dataset_col_st, dataset_col_ed, scrollHeight, scrollWidth, bodrder05);
  60020. }
  60021. }
  60022. }
  60023. for (let m = 0; m < mcArr.length; m++) {
  60024. let item2 = mcArr[m];
  60025. let r2 = item2.r, c2 = item2.c, start_r = item2.start_r, start_c = item2.start_c, end_r = item2.end_r - 1, end_c = item2.end_c - 1;
  60026. let firstcolumnlen = item2.firstcolumnlen;
  60027. let cell = store_default.flowdata[r2][c2];
  60028. let value = null;
  60029. let margeMaindata = cell["mc"];
  60030. value = getRealCellValue(margeMaindata.r, margeMaindata.c);
  60031. r2 = margeMaindata.r;
  60032. c2 = margeMaindata.c;
  60033. let mainCell = store_default.flowdata[r2][c2];
  60034. if (c2 == 0) {
  60035. start_c = -scrollWidth;
  60036. } else {
  60037. start_c = store_default.visibledatacolumn[c2 - 1] - scrollWidth;
  60038. }
  60039. if (r2 == 0) {
  60040. start_r = -scrollHeight - 1;
  60041. } else {
  60042. start_r = store_default.visibledatarow[r2 - 1] - scrollHeight - 1;
  60043. }
  60044. end_r = store_default.visibledatarow[r2 + mainCell["mc"].rs - 1] - scrollHeight;
  60045. end_c = store_default.visibledatacolumn[c2 + mainCell["mc"].cs - 1] - scrollWidth;
  60046. if (value == null || value.toString().length == 0) {
  60047. nullCellRender(r2, c2, start_r, start_c, end_r, end_c, luckysheetTableContent, af_compute, cf_compute, offsetLeft, offsetTop, dynamicArray_compute, cellOverflowMap, dataset_col_st, dataset_col_ed, scrollHeight, scrollWidth, bodrder05, true);
  60048. let borderfix = menuButton_default.borderfix(store_default.flowdata, r2, c2);
  60049. let cellsize = [
  60050. start_c + offsetLeft + borderfix[0],
  60051. start_r + offsetTop + borderfix[1],
  60052. end_c - start_c - 3 + borderfix[2],
  60053. end_r - start_r - 3 - 1 + borderfix[3]
  60054. ];
  60055. sparklinesRender(r2, c2, cellsize[0], cellsize[1], "luckysheetTableContent", luckysheetTableContent);
  60056. } else {
  60057. if (r2 + "_" + c2 in dynamicArray_compute) {
  60058. value = dynamicArray_compute[r2 + "_" + c2].v;
  60059. }
  60060. cellRender(r2, c2, start_r, start_c, end_r, end_c, value, luckysheetTableContent, af_compute, cf_compute, offsetLeft, offsetTop, dynamicArray_compute, cellOverflowMap, dataset_col_st, dataset_col_ed, scrollHeight, scrollWidth, bodrder05, true);
  60061. }
  60062. }
  60063. for (let r2 = dataset_row_st; r2 <= dataset_row_ed; r2++) {
  60064. let start_r;
  60065. if (r2 == 0) {
  60066. start_r = -scrollHeight - 1;
  60067. } else {
  60068. start_r = store_default.visibledatarow[r2 - 1] - scrollHeight - 1;
  60069. }
  60070. let end_r = store_default.visibledatarow[r2] - scrollHeight;
  60071. for (let c2 = dataset_col_st; c2 <= dataset_col_ed; c2++) {
  60072. let start_c;
  60073. if (c2 == 0) {
  60074. start_c = -scrollWidth;
  60075. } else {
  60076. start_c = store_default.visibledatacolumn[c2 - 1] - scrollWidth;
  60077. }
  60078. let end_c = store_default.visibledatacolumn[c2] - scrollWidth;
  60079. if (!!store_default.luckysheetcurrentisPivotTable && pivotTable_default.drawPivotTable) {
  60080. if ((c2 == 0 || c2 == 5) && r2 <= 11) {
  60081. luckysheetTableContent.beginPath();
  60082. luckysheetTableContent.moveTo(end_c - 2 + bodrder05 + offsetLeft, start_r + offsetTop);
  60083. luckysheetTableContent.lineTo(end_c - 2 + bodrder05 + offsetLeft, end_r - 2 + bodrder05 + offsetTop);
  60084. luckysheetTableContent.lineWidth = 1;
  60085. luckysheetTableContent.strokeStyle = "#000000";
  60086. luckysheetTableContent.closePath();
  60087. luckysheetTableContent.stroke();
  60088. }
  60089. if ((r2 == 2 || r2 == 11) && c2 <= 5) {
  60090. luckysheetTableContent.beginPath();
  60091. luckysheetTableContent.moveTo(start_c - 1 + offsetLeft, end_r - 2 + bodrder05 + offsetTop);
  60092. luckysheetTableContent.lineTo(end_c - 2 + bodrder05 + offsetLeft, end_r - 2 + bodrder05 + offsetTop);
  60093. luckysheetTableContent.lineWidth = 1;
  60094. luckysheetTableContent.strokeStyle = "#000000";
  60095. luckysheetTableContent.closePath();
  60096. luckysheetTableContent.stroke();
  60097. }
  60098. if (r2 == 6 && c2 == 3) {
  60099. luckysheetTableContent.save();
  60100. luckysheetTableContent.font = "bold 30px Arial";
  60101. luckysheetTableContent.fillStyle = "#626675";
  60102. luckysheetTableContent.textAlign = "center";
  60103. luckysheetTableContent.fillText(locale_default().pivotTable.title, start_c + (end_c - start_c) / 2 + 4 + offsetLeft, start_r + (end_r - start_r) / 2 - 1 + offsetTop);
  60104. luckysheetTableContent.restore();
  60105. }
  60106. } else if (!!store_default.luckysheetcurrentisPivotTable) {
  60107. if (c2 < pivotTable_default.pivotTableBoundary[1] && r2 < pivotTable_default.pivotTableBoundary[0]) {
  60108. luckysheetTableContent.beginPath();
  60109. luckysheetTableContent.moveTo(end_c - 2 + bodrder05 + offsetLeft, start_r + offsetTop);
  60110. luckysheetTableContent.lineTo(end_c - 2 + bodrder05 + offsetLeft, end_r - 2 + bodrder05 + offsetTop);
  60111. luckysheetTableContent.lineWidth = 1;
  60112. luckysheetTableContent.strokeStyle = "#000000";
  60113. luckysheetTableContent.closePath();
  60114. luckysheetTableContent.stroke();
  60115. luckysheetTableContent.beginPath();
  60116. luckysheetTableContent.moveTo(start_c - 1 + offsetLeft, end_r - 2 + bodrder05 + offsetTop);
  60117. luckysheetTableContent.lineTo(end_c - 2 + offsetLeft, end_r - 2 + bodrder05 + offsetTop);
  60118. luckysheetTableContent.lineWidth = 1;
  60119. luckysheetTableContent.strokeStyle = "#000000";
  60120. luckysheetTableContent.closePath();
  60121. luckysheetTableContent.stroke();
  60122. }
  60123. }
  60124. }
  60125. }
  60126. if (store_default.config["borderInfo"] != null && store_default.config["borderInfo"].length > 0) {
  60127. let borderLeftRender = function(style, color, start_r, start_c, end_r, end_c, offsetLeft2, offsetTop2, canvas) {
  60128. let linetype = style;
  60129. let m_st = start_c - 2 + bodrder05 + offsetLeft2;
  60130. let m_ed = start_r + offsetTop2 - 1;
  60131. let line_st = start_c - 2 + bodrder05 + offsetLeft2;
  60132. let line_ed = end_r - 2 + bodrder05 + offsetTop2;
  60133. canvas.save();
  60134. menuButton_default.setLineDash(canvas, linetype, "v", m_st, m_ed, line_st, line_ed);
  60135. canvas.strokeStyle = color;
  60136. canvas.stroke();
  60137. canvas.closePath();
  60138. canvas.restore();
  60139. };
  60140. let borderRightRender = function(style, color, start_r, start_c, end_r, end_c, offsetLeft2, offsetTop2, canvas) {
  60141. let linetype = style;
  60142. let m_st = end_c - 2 + bodrder05 + offsetLeft2;
  60143. let m_ed = start_r + offsetTop2 - 1;
  60144. let line_st = end_c - 2 + bodrder05 + offsetLeft2;
  60145. let line_ed = end_r - 2 + bodrder05 + offsetTop2;
  60146. canvas.save();
  60147. menuButton_default.setLineDash(canvas, linetype, "v", m_st, m_ed, line_st, line_ed);
  60148. canvas.strokeStyle = color;
  60149. canvas.stroke();
  60150. canvas.closePath();
  60151. canvas.restore();
  60152. };
  60153. let borderBottomRender = function(style, color, start_r, start_c, end_r, end_c, offsetLeft2, offsetTop2, canvas) {
  60154. let linetype = style;
  60155. let m_st = start_c - 2 + bodrder05 + offsetLeft2;
  60156. let m_ed = end_r - 2 + bodrder05 + offsetTop2;
  60157. let line_st = end_c - 2 + bodrder05 + offsetLeft2;
  60158. let line_ed = end_r - 2 + bodrder05 + offsetTop2;
  60159. canvas.save();
  60160. menuButton_default.setLineDash(canvas, linetype, "h", m_st, m_ed, line_st, line_ed);
  60161. canvas.strokeStyle = color;
  60162. canvas.stroke();
  60163. canvas.closePath();
  60164. canvas.restore();
  60165. };
  60166. let borderTopRender = function(style, color, start_r, start_c, end_r, end_c, offsetLeft2, offsetTop2, canvas) {
  60167. let linetype = style;
  60168. let m_st = start_c - 2 + bodrder05 + offsetLeft2;
  60169. let m_ed = start_r - 1 + bodrder05 + offsetTop2;
  60170. let line_st = end_c - 2 + bodrder05 + offsetLeft2;
  60171. let line_ed = start_r - 1 + bodrder05 + offsetTop2;
  60172. canvas.save();
  60173. menuButton_default.setLineDash(canvas, linetype, "h", m_st, m_ed, line_st, line_ed);
  60174. canvas.strokeStyle = color;
  60175. canvas.stroke();
  60176. canvas.closePath();
  60177. canvas.restore();
  60178. };
  60179. let borderInfoCompute = getBorderInfoComputeRange(dataset_row_st, dataset_row_ed, dataset_col_st, dataset_col_ed);
  60180. for (let x in borderInfoCompute) {
  60181. let bd_r = x.substr(0, x.indexOf("_"));
  60182. let bd_c = x.substr(x.indexOf("_") + 1);
  60183. if (borderOffset[bd_r + "_" + bd_c]) {
  60184. let start_r = borderOffset[bd_r + "_" + bd_c].start_r;
  60185. let start_c = borderOffset[bd_r + "_" + bd_c].start_c;
  60186. let end_r = borderOffset[bd_r + "_" + bd_c].end_r;
  60187. let end_c = borderOffset[bd_r + "_" + bd_c].end_c;
  60188. let cellOverflow_colInObj = cellOverflow_colIn(cellOverflowMap, bd_r, bd_c, dataset_col_st, dataset_col_ed);
  60189. let borderLeft = borderInfoCompute[x].l;
  60190. if (borderLeft != null && (!cellOverflow_colInObj.colIn || cellOverflow_colInObj.stc == bd_c)) {
  60191. borderLeftRender(borderLeft.style, borderLeft.color, start_r, start_c, end_r, end_c, offsetLeft, offsetTop, luckysheetTableContent);
  60192. }
  60193. let borderRight = borderInfoCompute[x].r;
  60194. if (borderRight != null && (!cellOverflow_colInObj.colIn || cellOverflow_colInObj.colLast)) {
  60195. borderRightRender(borderRight.style, borderRight.color, start_r, start_c, end_r, end_c, offsetLeft, offsetTop, luckysheetTableContent);
  60196. }
  60197. let borderTop = borderInfoCompute[x].t;
  60198. if (borderTop != null) {
  60199. borderTopRender(borderTop.style, borderTop.color, start_r, start_c, end_r, end_c, offsetLeft, offsetTop, luckysheetTableContent);
  60200. }
  60201. let borderBottom = borderInfoCompute[x].b;
  60202. if (borderBottom != null) {
  60203. borderBottomRender(borderBottom.style, borderBottom.color, start_r, start_c, end_r, end_c, offsetLeft, offsetTop, luckysheetTableContent);
  60204. }
  60205. }
  60206. }
  60207. }
  60208. if (dataset_col_ed == store_default.visibledatacolumn.length - 1) {
  60209. luckysheetTableContent.clearRect(fill_col_ed - scrollWidth + offsetLeft - 1, offsetTop - 1, store_default.ch_width - store_default.visibledatacolumn[dataset_col_ed], fill_row_ed - scrollHeight);
  60210. }
  60211. luckysheetTableContent.restore();
  60212. store_default.measureTextCacheTimeOut = setTimeout(() => {
  60213. store_default.measureTextCache = {};
  60214. store_default.measureTextCellInfoCache = {};
  60215. store_default.cellOverflowMapCache = {};
  60216. }, 100);
  60217. }
  60218. function getCellOverflowMap(canvas, col_st, col_ed, row_st, row_end) {
  60219. let map = {};
  60220. let data = store_default.flowdata;
  60221. for (let r2 = row_st; r2 <= row_end; r2++) {
  60222. if (data[r2] == null) {
  60223. continue;
  60224. }
  60225. if (store_default.cellOverflowMapCache[r2] != null) {
  60226. map[r2] = store_default.cellOverflowMapCache[r2];
  60227. continue;
  60228. }
  60229. let hasCellOver = false;
  60230. for (let c2 = 0; c2 < data[r2].length; c2++) {
  60231. let cell = data[r2][c2];
  60232. if (store_default.config["colhidden"] != null && store_default.config["colhidden"][c2] != null) {
  60233. continue;
  60234. }
  60235. if (cell != null && (!isRealNull(cell.v) || isInlineStringCell(cell)) && cell.mc == null && cell.tb == "1") {
  60236. let horizonAlign = menuButton_default.checkstatus(data, r2, c2, "ht");
  60237. let textMetricsObj = getCellTextInfo(cell, canvas, {
  60238. r: r2,
  60239. c: c2
  60240. });
  60241. let textMetrics = 0;
  60242. if (textMetricsObj != null) {
  60243. textMetrics = textMetricsObj.textWidthAll;
  60244. }
  60245. let start_c = c2 - 1 < 0 ? 0 : store_default.visibledatacolumn[c2 - 1];
  60246. let end_c = store_default.visibledatacolumn[c2];
  60247. let stc, edc;
  60248. if (end_c - start_c < textMetrics) {
  60249. if (horizonAlign == "0") {
  60250. let trace_forward = cellOverflow_trace(r2, c2, c2 - 1, "forward", horizonAlign, textMetrics);
  60251. let trace_backward = cellOverflow_trace(r2, c2, c2 + 1, "backward", horizonAlign, textMetrics);
  60252. if (trace_forward.success) {
  60253. stc = trace_forward.c;
  60254. } else {
  60255. stc = trace_forward.c + 1;
  60256. }
  60257. if (trace_backward.success) {
  60258. edc = trace_backward.c;
  60259. } else {
  60260. edc = trace_backward.c - 1;
  60261. }
  60262. } else if (horizonAlign == "1") {
  60263. let trace = cellOverflow_trace(r2, c2, c2 + 1, "backward", horizonAlign, textMetrics);
  60264. stc = c2;
  60265. if (trace.success) {
  60266. edc = trace.c;
  60267. } else {
  60268. edc = trace.c - 1;
  60269. }
  60270. } else if (horizonAlign == "2") {
  60271. let trace = cellOverflow_trace(r2, c2, c2 - 1, "forward", horizonAlign, textMetrics);
  60272. edc = c2;
  60273. if (trace.success) {
  60274. stc = trace.c;
  60275. } else {
  60276. stc = trace.c + 1;
  60277. }
  60278. }
  60279. } else {
  60280. stc = c2;
  60281. edc = c2;
  60282. }
  60283. if ((stc <= col_ed || edc >= col_st) && stc < edc) {
  60284. let item2 = {
  60285. r: r2,
  60286. stc,
  60287. edc
  60288. };
  60289. if (map[r2] == null) {
  60290. map[r2] = {};
  60291. }
  60292. map[r2][c2] = item2;
  60293. hasCellOver = true;
  60294. }
  60295. }
  60296. }
  60297. if (hasCellOver) {
  60298. store_default.cellOverflowMapCache[r2] = map[r2];
  60299. }
  60300. }
  60301. return map;
  60302. }
  60303. function cellOverflow_trace(r2, curC, traceC, traceDir, horizonAlign, textMetrics) {
  60304. let data = store_default.flowdata;
  60305. if (traceDir == "forward" && traceC < 0) {
  60306. return {
  60307. success: false,
  60308. r: r2,
  60309. c: traceC
  60310. };
  60311. }
  60312. if (traceDir == "backward" && traceC > data[r2].length - 1) {
  60313. return {
  60314. success: false,
  60315. r: r2,
  60316. c: traceC
  60317. };
  60318. }
  60319. let cell = data[r2][traceC];
  60320. if (cell != null && (!isRealNull(cell.v) || cell.mc != null)) {
  60321. return {
  60322. success: false,
  60323. r: r2,
  60324. c: traceC
  60325. };
  60326. }
  60327. let start_curC = curC - 1 < 0 ? 0 : store_default.visibledatacolumn[curC - 1];
  60328. let end_curC = store_default.visibledatacolumn[curC];
  60329. let w = textMetrics - (end_curC - start_curC);
  60330. if (horizonAlign == "0") {
  60331. start_curC -= w / 2;
  60332. end_curC += w / 2;
  60333. } else if (horizonAlign == "1") {
  60334. end_curC += w;
  60335. } else if (horizonAlign == "2") {
  60336. start_curC -= w;
  60337. }
  60338. let start_traceC = traceC - 1 < 0 ? 0 : store_default.visibledatacolumn[traceC - 1];
  60339. let end_traceC = store_default.visibledatacolumn[traceC];
  60340. if (traceDir == "forward") {
  60341. if (start_curC < start_traceC) {
  60342. return cellOverflow_trace(r2, curC, traceC - 1, traceDir, horizonAlign, textMetrics);
  60343. } else if (start_curC < end_traceC) {
  60344. return {
  60345. success: true,
  60346. r: r2,
  60347. c: traceC
  60348. };
  60349. } else {
  60350. return {
  60351. success: false,
  60352. r: r2,
  60353. c: traceC
  60354. };
  60355. }
  60356. }
  60357. if (traceDir == "backward") {
  60358. if (end_curC > end_traceC) {
  60359. return cellOverflow_trace(r2, curC, traceC + 1, traceDir, horizonAlign, textMetrics);
  60360. } else if (end_curC > start_traceC) {
  60361. return {
  60362. success: true,
  60363. r: r2,
  60364. c: traceC
  60365. };
  60366. } else {
  60367. return {
  60368. success: false,
  60369. r: r2,
  60370. c: traceC
  60371. };
  60372. }
  60373. }
  60374. }
  60375. function cellOverflow_colIn(map, r2, c2, col_st, col_ed) {
  60376. let colIn = false, colLast = false, rowIndex, colIndex, stc, edc;
  60377. for (let rkey in map) {
  60378. for (let ckey in map[rkey]) {
  60379. rowIndex = rkey;
  60380. colIndex = ckey;
  60381. let mapItem = map[rkey][ckey];
  60382. stc = mapItem.stc;
  60383. edc = mapItem.edc;
  60384. if (rowIndex == r2) {
  60385. if (c2 >= stc && c2 <= edc) {
  60386. colIn = true;
  60387. if (c2 == edc || c2 == col_ed) {
  60388. colLast = true;
  60389. break;
  60390. }
  60391. }
  60392. }
  60393. }
  60394. if (colLast) {
  60395. break;
  60396. }
  60397. }
  60398. return {
  60399. colIn,
  60400. colLast,
  60401. rowIndex,
  60402. colIndex,
  60403. stc,
  60404. edc
  60405. };
  60406. }
  60407. function cellTextRender(textInfo, ctx, option) {
  60408. if (textInfo == null) {
  60409. return;
  60410. }
  60411. let values = textInfo.values;
  60412. let pos_x = option.pos_x, pos_y = option.pos_y;
  60413. if (values == null) {
  60414. return;
  60415. }
  60416. if (textInfo.rotate != 0 && textInfo.type != "verticalWrap") {
  60417. ctx.save();
  60418. ctx.translate((pos_x + textInfo.textLeftAll) / store_default.zoomRatio, (pos_y + textInfo.textTopAll) / store_default.zoomRatio);
  60419. ctx.rotate(-textInfo.rotate * Math.PI / 180);
  60420. ctx.translate(-(textInfo.textLeftAll + pos_x) / store_default.zoomRatio, -(pos_y + textInfo.textTopAll) / store_default.zoomRatio);
  60421. }
  60422. for (let i2 = 0; i2 < values.length; i2++) {
  60423. let word = values[i2];
  60424. if (word.inline === true && word.style != null) {
  60425. ctx.font = word.style.fontset;
  60426. ctx.fillStyle = word.style.fc;
  60427. } else {
  60428. ctx.font = word.style;
  60429. }
  60430. let txt = typeof word.content === "object" ? word.content.m : word.content;
  60431. ctx.fillText(txt, (pos_x + word.left) / store_default.zoomRatio, (pos_y + word.top) / store_default.zoomRatio);
  60432. if (word.cancelLine != null) {
  60433. let c2 = word.cancelLine;
  60434. ctx.beginPath();
  60435. ctx.moveTo(Math.floor((pos_x + c2.startX) / store_default.zoomRatio) + 0.5, Math.floor((pos_y + c2.startY) / store_default.zoomRatio) + 0.5);
  60436. ctx.lineTo(Math.floor((pos_x + c2.endX) / store_default.zoomRatio) + 0.5, Math.floor((pos_y + c2.endY) / store_default.zoomRatio) + 0.5);
  60437. ctx.lineWidth = Math.floor(c2.fs / 9);
  60438. ctx.strokeStyle = ctx.fillStyle;
  60439. ctx.stroke();
  60440. ctx.closePath();
  60441. }
  60442. if (word.underLine != null) {
  60443. let underLines = word.underLine;
  60444. for (let a = 0; a < underLines.length; a++) {
  60445. let item2 = underLines[a];
  60446. ctx.beginPath();
  60447. ctx.moveTo(Math.floor((pos_x + item2.startX) / store_default.zoomRatio) + 0.5, Math.floor((pos_y + item2.startY) / store_default.zoomRatio));
  60448. ctx.lineTo(Math.floor((pos_x + item2.endX) / store_default.zoomRatio) + 0.5, Math.floor((pos_y + item2.endY) / store_default.zoomRatio) + 0.5);
  60449. ctx.lineWidth = Math.floor(item2.fs / 9);
  60450. ctx.strokeStyle = ctx.fillStyle;
  60451. ctx.stroke();
  60452. ctx.closePath();
  60453. }
  60454. }
  60455. }
  60456. if (textInfo.rotate != 0 && textInfo.type != "verticalWrap") {
  60457. ctx.restore();
  60458. }
  60459. }
  60460. var sparklinesRender, nullCellRender, cellRender, cellOverflowRender;
  60461. var init_draw = __esm({
  60462. "src/global/draw.js"() {
  60463. init_pivotTable();
  60464. init_conditionformat();
  60465. init_alternateformat();
  60466. init_sparkline();
  60467. init_menuButton();
  60468. init_dataVerificationCtrl();
  60469. init_constant();
  60470. init_sheetSearch();
  60471. init_dynamicArray();
  60472. init_browser();
  60473. init_validate();
  60474. init_getRowlen();
  60475. init_getdata();
  60476. init_border();
  60477. init_get();
  60478. init_util();
  60479. init_inlineString();
  60480. init_method();
  60481. init_store();
  60482. init_locale();
  60483. init_sheetmanage();
  60484. sparklinesRender = function(r2, c2, offsetX, offsetY, canvasid, ctx) {
  60485. if (store_default.flowdata[r2] == null || store_default.flowdata[r2][c2] == null) {
  60486. return;
  60487. }
  60488. let sparklines = store_default.flowdata[r2][c2].spl;
  60489. if (sparklines != null) {
  60490. if (typeof sparklines == "string") {
  60491. sparklines = new Function("return " + sparklines)();
  60492. }
  60493. if (getObjType(sparklines) == "object") {
  60494. let temp1 = sparklines;
  60495. let x = temp1.offsetX;
  60496. let y = temp1.offsetY;
  60497. x = x == null ? 0 : x;
  60498. y = y == null ? 0 : y;
  60499. sparkline_default.render(temp1.shapeseq, temp1.shapes, offsetX + x, offsetY + y, temp1.pixelWidth, temp1.pixelHeight, canvasid, ctx);
  60500. } else if (getObjType(sparklines) == "array" && getObjType(sparklines[0]) == "object") {
  60501. for (let i2 = 0; i2 < sparklines.length; i2++) {
  60502. let temp1 = sparklines[i2];
  60503. let x = temp1.offsetX;
  60504. let y = temp1.offsetY;
  60505. x = x == null ? 0 : x;
  60506. y = y == null ? 0 : y;
  60507. sparkline_default.render(temp1.shapeseq, temp1.shapes, offsetX + x, offsetY + y, temp1.pixelWidth, temp1.pixelHeight, canvasid, ctx);
  60508. }
  60509. }
  60510. }
  60511. };
  60512. nullCellRender = function(r2, c2, start_r, start_c, end_r, end_c, luckysheetTableContent, af_compute, cf_compute, offsetLeft, offsetTop, dynamicArray_compute, cellOverflowMap, dataset_col_st, dataset_col_ed, scrollHeight, scrollWidth, bodrder05, isMerge) {
  60513. let checksAF = alternateformat_default.checksAF(r2, c2, af_compute);
  60514. let checksCF = conditionformat_default.checksCF(r2, c2, cf_compute);
  60515. let borderfix = menuButton_default.borderfix(store_default.flowdata, r2, c2);
  60516. let fillStyle = menuButton_default.checkstatus(store_default.flowdata, r2, c2, "bg");
  60517. if (checksAF != null && checksAF[1] != null) {
  60518. fillStyle = checksAF[1];
  60519. }
  60520. if (checksCF != null && checksCF["cellColor"] != null) {
  60521. fillStyle = checksCF["cellColor"];
  60522. }
  60523. if (store_default.flowdata[r2][c2] != null && store_default.flowdata[r2][c2].tc != null) {
  60524. fillStyle = store_default.flowdata[r2][c2].tc;
  60525. }
  60526. if (fillStyle == null) {
  60527. luckysheetTableContent.fillStyle = "#FFFFFF";
  60528. } else {
  60529. luckysheetTableContent.fillStyle = fillStyle;
  60530. }
  60531. let cellsize = [
  60532. start_c + offsetLeft + borderfix[0] + 1,
  60533. start_r + offsetTop + borderfix[1] + 1,
  60534. end_c - start_c + borderfix[2] - (!!isMerge ? 1 : 0) - 1,
  60535. end_r - start_r + borderfix[3] - 1
  60536. ];
  60537. if (!method_default.createHookFunction("cellRenderBefore", store_default.flowdata[r2][c2], {
  60538. r: r2,
  60539. c: c2,
  60540. "start_r": cellsize[1],
  60541. "start_c": cellsize[0],
  60542. "end_r": cellsize[3] + cellsize[1],
  60543. "end_c": cellsize[2] + cellsize[0]
  60544. }, sheetmanage_default.getSheetByIndex(), luckysheetTableContent)) {
  60545. return;
  60546. }
  60547. luckysheetTableContent.fillRect(cellsize[0], cellsize[1], cellsize[2], cellsize[3]);
  60548. if (r2 + "_" + c2 in dynamicArray_compute) {
  60549. let value = dynamicArray_compute[r2 + "_" + c2].v;
  60550. luckysheetTableContent.fillStyle = "#000000";
  60551. let fontset = luckysheetdefaultFont();
  60552. luckysheetTableContent.font = fontset;
  60553. let horizonAlignPos = start_c + 4 + offsetLeft;
  60554. let verticalFixed = browser_default.luckysheetrefreshfixed();
  60555. let verticalAlignPos = end_r + offsetTop - 2;
  60556. luckysheetTableContent.textBaseline = "bottom";
  60557. luckysheetTableContent.fillText(value == null ? "" : value, horizonAlignPos, verticalAlignPos);
  60558. }
  60559. if (store_default.flowdata[r2][c2] != null && store_default.flowdata[r2][c2].ps != null) {
  60560. let ps_w = 8 * store_default.zoomRatio, ps_h = 8 * store_default.zoomRatio;
  60561. luckysheetTableContent.beginPath();
  60562. luckysheetTableContent.moveTo(end_c + offsetLeft - 1 - ps_w, start_r + offsetTop);
  60563. luckysheetTableContent.lineTo(end_c + offsetLeft - 1, start_r + offsetTop);
  60564. luckysheetTableContent.lineTo(end_c + offsetLeft - 1, start_r + offsetTop + ps_h);
  60565. luckysheetTableContent.fillStyle = "#FC6666";
  60566. luckysheetTableContent.fill();
  60567. luckysheetTableContent.closePath();
  60568. }
  60569. let cellOverflow_colInObj = cellOverflow_colIn(cellOverflowMap, r2, c2, dataset_col_st, dataset_col_ed);
  60570. if (cellOverflow_colInObj.colLast) {
  60571. cellOverflowRender(cellOverflow_colInObj.rowIndex, cellOverflow_colInObj.colIndex, cellOverflow_colInObj.stc, cellOverflow_colInObj.edc, luckysheetTableContent, scrollHeight, scrollWidth, offsetLeft, offsetTop, af_compute, cf_compute);
  60572. }
  60573. if (!cellOverflow_colInObj.colIn || cellOverflow_colInObj.colLast) {
  60574. if (!store_default.luckysheetcurrentisPivotTable && store_default.showGridLines) {
  60575. luckysheetTableContent.beginPath();
  60576. luckysheetTableContent.moveTo(end_c + offsetLeft - 2 + bodrder05, start_r + offsetTop);
  60577. luckysheetTableContent.lineTo(end_c + offsetLeft - 2 + bodrder05, end_r + offsetTop);
  60578. luckysheetTableContent.lineWidth = 1;
  60579. luckysheetTableContent.strokeStyle = luckysheetdefaultstyle.strokeStyle;
  60580. luckysheetTableContent.stroke();
  60581. luckysheetTableContent.closePath();
  60582. }
  60583. }
  60584. if (!store_default.luckysheetcurrentisPivotTable && store_default.showGridLines) {
  60585. luckysheetTableContent.beginPath();
  60586. luckysheetTableContent.moveTo(start_c + offsetLeft - 1, end_r + offsetTop - 2 + bodrder05);
  60587. luckysheetTableContent.lineTo(end_c + offsetLeft - 1, end_r + offsetTop - 2 + bodrder05);
  60588. luckysheetTableContent.lineWidth = 1;
  60589. luckysheetTableContent.strokeStyle = luckysheetdefaultstyle.strokeStyle;
  60590. luckysheetTableContent.stroke();
  60591. luckysheetTableContent.closePath();
  60592. }
  60593. method_default.createHookFunction("cellRenderAfter", store_default.flowdata[r2][c2], {
  60594. r: r2,
  60595. c: c2,
  60596. "start_r": cellsize[1],
  60597. "start_c": cellsize[0],
  60598. "end_r": cellsize[3] + cellsize[1],
  60599. "end_c": cellsize[2] + cellsize[0]
  60600. }, sheetmanage_default.getSheetByIndex(), luckysheetTableContent);
  60601. };
  60602. cellRender = function(r2, c2, start_r, start_c, end_r, end_c, value, luckysheetTableContent, af_compute, cf_compute, offsetLeft, offsetTop, dynamicArray_compute, cellOverflowMap, dataset_col_st, dataset_col_ed, scrollHeight, scrollWidth, bodrder05, isMerge) {
  60603. let cell = store_default.flowdata[r2][c2];
  60604. let cellWidth = end_c - start_c - 2;
  60605. let cellHeight = end_r - start_r - 2;
  60606. let space_width = 2, space_height = 2;
  60607. let horizonAlign = menuButton_default.checkstatus(store_default.flowdata, r2, c2, "ht");
  60608. let verticalAlign = menuButton_default.checkstatus(store_default.flowdata, r2, c2, "vt");
  60609. let checksAF = alternateformat_default.checksAF(r2, c2, af_compute);
  60610. let checksCF = conditionformat_default.checksCF(r2, c2, cf_compute);
  60611. let fillStyle = menuButton_default.checkstatus(store_default.flowdata, r2, c2, "bg");
  60612. if (checksAF != null && checksAF[1] != null) {
  60613. fillStyle = checksAF[1];
  60614. }
  60615. if (checksCF != null && checksCF["cellColor"] != null) {
  60616. fillStyle = checksCF["cellColor"];
  60617. }
  60618. if (fillStyle == null) {
  60619. luckysheetTableContent.fillStyle = "#FFFFFF";
  60620. } else {
  60621. luckysheetTableContent.fillStyle = fillStyle;
  60622. }
  60623. let borderfix = menuButton_default.borderfix(store_default.flowdata, r2, c2);
  60624. let cellsize = [
  60625. start_c + offsetLeft + borderfix[0] + 1,
  60626. start_r + offsetTop + borderfix[1] + 1,
  60627. end_c - start_c + borderfix[2] - (!!isMerge ? 1 : 0) - 1,
  60628. end_r - start_r + borderfix[3] + 1
  60629. ];
  60630. if (!method_default.createHookFunction("cellRenderBefore", store_default.flowdata[r2][c2], {
  60631. r: r2,
  60632. c: c2,
  60633. "start_r": cellsize[1],
  60634. "start_c": cellsize[0],
  60635. "end_r": cellsize[3] + cellsize[1],
  60636. "end_c": cellsize[2] + cellsize[0]
  60637. }, sheetmanage_default.getSheetByIndex(), luckysheetTableContent)) {
  60638. return;
  60639. }
  60640. luckysheetTableContent.fillRect(cellsize[0], cellsize[1], cellsize[2], cellsize[3]);
  60641. let dataVerification = dataVerificationCtrl_default.dataVerification;
  60642. if (dataVerification != null && dataVerification[r2 + "_" + c2] != null && !dataVerificationCtrl_default.validateCellData(value, dataVerification[r2 + "_" + c2])) {
  60643. let dv_w = 5 * store_default.zoomRatio, dv_h = 5 * store_default.zoomRatio;
  60644. luckysheetTableContent.beginPath();
  60645. luckysheetTableContent.moveTo(start_c + offsetLeft, start_r + offsetTop);
  60646. luckysheetTableContent.lineTo(start_c + offsetLeft + dv_w, start_r + offsetTop);
  60647. luckysheetTableContent.lineTo(start_c + offsetLeft, start_r + offsetTop + dv_h);
  60648. luckysheetTableContent.fillStyle = "#FC6666";
  60649. luckysheetTableContent.fill();
  60650. luckysheetTableContent.closePath();
  60651. }
  60652. if (cell.ps != null) {
  60653. let ps_w = 8 * store_default.zoomRatio, ps_h = 8 * store_default.zoomRatio;
  60654. luckysheetTableContent.beginPath();
  60655. luckysheetTableContent.moveTo(end_c + offsetLeft - ps_w, start_r + offsetTop);
  60656. luckysheetTableContent.lineTo(end_c + offsetLeft, start_r + offsetTop);
  60657. luckysheetTableContent.lineTo(end_c + offsetLeft, start_r + offsetTop + ps_h);
  60658. luckysheetTableContent.fillStyle = "#FC6666";
  60659. luckysheetTableContent.fill();
  60660. luckysheetTableContent.closePath();
  60661. }
  60662. if (cell.qp == 1 && isRealNum(cell.v)) {
  60663. let ps_w = 6 * store_default.zoomRatio, ps_h = 6 * store_default.zoomRatio;
  60664. luckysheetTableContent.beginPath();
  60665. luckysheetTableContent.moveTo(start_c + offsetLeft + ps_w - 1, start_r + offsetTop);
  60666. luckysheetTableContent.lineTo(start_c + offsetLeft - 1, start_r + offsetTop);
  60667. luckysheetTableContent.lineTo(start_c + offsetLeft - 1, start_r + offsetTop + ps_h);
  60668. luckysheetTableContent.fillStyle = "#487f1e";
  60669. luckysheetTableContent.fill();
  60670. luckysheetTableContent.closePath();
  60671. }
  60672. let cellOverflow_bd_r_render = true;
  60673. let cellOverflow_colInObj = cellOverflow_colIn(cellOverflowMap, r2, c2, dataset_col_st, dataset_col_ed);
  60674. if (cell.tb == "1" && cellOverflow_colInObj.colIn) {
  60675. if (cellOverflow_colInObj.colLast) {
  60676. cellOverflowRender(cellOverflow_colInObj.rowIndex, cellOverflow_colInObj.colIndex, cellOverflow_colInObj.stc, cellOverflow_colInObj.edc, luckysheetTableContent, scrollHeight, scrollWidth, offsetLeft, offsetTop, af_compute, cf_compute);
  60677. } else {
  60678. cellOverflow_bd_r_render = false;
  60679. }
  60680. } else if (dataVerification != null && dataVerification[r2 + "_" + c2] != null && dataVerification[r2 + "_" + c2].type == "checkbox") {
  60681. let pos_x = start_c + offsetLeft;
  60682. let pos_y = start_r + offsetTop + 1;
  60683. luckysheetTableContent.save();
  60684. luckysheetTableContent.beginPath();
  60685. luckysheetTableContent.rect(pos_x, pos_y, cellWidth, cellHeight);
  60686. luckysheetTableContent.clip();
  60687. luckysheetTableContent.scale(store_default.zoomRatio, store_default.zoomRatio);
  60688. let measureText = getMeasureText(value, luckysheetTableContent);
  60689. let textMetrics = measureText.width + 14;
  60690. let oneLineTextHeight = measureText.actualBoundingBoxDescent + measureText.actualBoundingBoxAscent;
  60691. let horizonAlignPos = pos_x + space_width;
  60692. if (horizonAlign == "0") {
  60693. horizonAlignPos = pos_x + cellWidth / 2 - textMetrics / 2;
  60694. } else if (horizonAlign == "2") {
  60695. horizonAlignPos = pos_x + cellWidth - space_width - textMetrics;
  60696. }
  60697. let verticalCellHeight = cellHeight > oneLineTextHeight ? cellHeight : oneLineTextHeight;
  60698. let verticalAlignPos_text = pos_y + verticalCellHeight - space_height;
  60699. luckysheetTableContent.textBaseline = "bottom";
  60700. let verticalAlignPos_checkbox = verticalAlignPos_text - 13 * store_default.zoomRatio;
  60701. if (verticalAlign == "0") {
  60702. verticalAlignPos_text = pos_y + verticalCellHeight / 2;
  60703. luckysheetTableContent.textBaseline = "middle";
  60704. verticalAlignPos_checkbox = verticalAlignPos_text - 6 * store_default.zoomRatio;
  60705. } else if (verticalAlign == "1") {
  60706. verticalAlignPos_text = pos_y + space_height;
  60707. luckysheetTableContent.textBaseline = "top";
  60708. verticalAlignPos_checkbox = verticalAlignPos_text + 1 * store_default.zoomRatio;
  60709. }
  60710. horizonAlignPos = horizonAlignPos / store_default.zoomRatio;
  60711. verticalAlignPos_text = verticalAlignPos_text / store_default.zoomRatio;
  60712. verticalAlignPos_checkbox = verticalAlignPos_checkbox / store_default.zoomRatio;
  60713. luckysheetTableContent.lineWidth = 1;
  60714. luckysheetTableContent.strokeStyle = "#000";
  60715. luckysheetTableContent.strokeRect(horizonAlignPos, verticalAlignPos_checkbox, 10, 10);
  60716. if (dataVerification[r2 + "_" + c2].checked) {
  60717. luckysheetTableContent.beginPath();
  60718. luckysheetTableContent.lineTo(horizonAlignPos + 1, verticalAlignPos_checkbox + 6);
  60719. luckysheetTableContent.lineTo(horizonAlignPos + 4, verticalAlignPos_checkbox + 9);
  60720. luckysheetTableContent.lineTo(horizonAlignPos + 9, verticalAlignPos_checkbox + 2);
  60721. luckysheetTableContent.stroke();
  60722. luckysheetTableContent.closePath();
  60723. }
  60724. luckysheetTableContent.fillStyle = menuButton_default.checkstatus(store_default.flowdata, r2, c2, "fc");
  60725. luckysheetTableContent.fillText(value == null ? "" : value, horizonAlignPos + 14, verticalAlignPos_text);
  60726. luckysheetTableContent.restore();
  60727. } else {
  60728. if (checksCF != null && checksCF["dataBar"] != null && checksCF["dataBar"]["valueLen"] && checksCF["dataBar"]["valueLen"].toString() !== "NaN") {
  60729. let x = start_c + offsetLeft + space_width;
  60730. let y = start_r + offsetTop + space_height;
  60731. let w = cellWidth - space_width * 2;
  60732. let h = cellHeight - space_height * 2;
  60733. let valueType = checksCF["dataBar"]["valueType"];
  60734. let valueLen = checksCF["dataBar"]["valueLen"];
  60735. let format = checksCF["dataBar"]["format"];
  60736. if (valueType == "minus") {
  60737. let minusLen = checksCF["dataBar"]["minusLen"];
  60738. if (format.length > 1) {
  60739. let my_gradient = luckysheetTableContent.createLinearGradient(x + w * minusLen * (1 - valueLen), y, x + w * minusLen, y);
  60740. my_gradient.addColorStop(0, "#ffffff");
  60741. my_gradient.addColorStop(1, "#ff0000");
  60742. luckysheetTableContent.fillStyle = my_gradient;
  60743. } else {
  60744. luckysheetTableContent.fillStyle = "#ff0000";
  60745. }
  60746. luckysheetTableContent.fillRect(x + w * minusLen * (1 - valueLen), y, w * minusLen * valueLen, h);
  60747. luckysheetTableContent.beginPath();
  60748. luckysheetTableContent.moveTo(x + w * minusLen * (1 - valueLen), y);
  60749. luckysheetTableContent.lineTo(x + w * minusLen * (1 - valueLen), y + h);
  60750. luckysheetTableContent.lineTo(x + w * minusLen, y + h);
  60751. luckysheetTableContent.lineTo(x + w * minusLen, y);
  60752. luckysheetTableContent.lineTo(x + w * minusLen * (1 - valueLen), y);
  60753. luckysheetTableContent.lineWidth = 1;
  60754. luckysheetTableContent.strokeStyle = "#ff0000";
  60755. luckysheetTableContent.stroke();
  60756. luckysheetTableContent.closePath();
  60757. } else if (valueType == "plus") {
  60758. let plusLen = checksCF["dataBar"]["plusLen"];
  60759. if (plusLen == 1) {
  60760. if (format.length > 1) {
  60761. let my_gradient = luckysheetTableContent.createLinearGradient(x, y, x + w * valueLen, y);
  60762. my_gradient.addColorStop(0, format[0]);
  60763. my_gradient.addColorStop(1, format[1]);
  60764. luckysheetTableContent.fillStyle = my_gradient;
  60765. } else {
  60766. luckysheetTableContent.fillStyle = format[0];
  60767. }
  60768. luckysheetTableContent.fillRect(x, y, w * valueLen, h);
  60769. luckysheetTableContent.beginPath();
  60770. luckysheetTableContent.moveTo(x, y);
  60771. luckysheetTableContent.lineTo(x, y + h);
  60772. luckysheetTableContent.lineTo(x + w * valueLen, y + h);
  60773. luckysheetTableContent.lineTo(x + w * valueLen, y);
  60774. luckysheetTableContent.lineTo(x, y);
  60775. luckysheetTableContent.lineWidth = 1;
  60776. luckysheetTableContent.strokeStyle = format[0];
  60777. luckysheetTableContent.stroke();
  60778. luckysheetTableContent.closePath();
  60779. } else {
  60780. let minusLen = checksCF["dataBar"]["minusLen"];
  60781. if (format.length > 1) {
  60782. let my_gradient = luckysheetTableContent.createLinearGradient(x + w * minusLen, y, x + w * minusLen + w * plusLen * valueLen, y);
  60783. my_gradient.addColorStop(0, format[0]);
  60784. my_gradient.addColorStop(1, format[1]);
  60785. luckysheetTableContent.fillStyle = my_gradient;
  60786. } else {
  60787. luckysheetTableContent.fillStyle = format[0];
  60788. }
  60789. luckysheetTableContent.fillRect(x + w * minusLen, y, w * plusLen * valueLen, h);
  60790. luckysheetTableContent.beginPath();
  60791. luckysheetTableContent.moveTo(x + w * minusLen, y);
  60792. luckysheetTableContent.lineTo(x + w * minusLen, y + h);
  60793. luckysheetTableContent.lineTo(x + w * minusLen + w * plusLen * valueLen, y + h);
  60794. luckysheetTableContent.lineTo(x + w * minusLen + w * plusLen * valueLen, y);
  60795. luckysheetTableContent.lineTo(x + w * minusLen, y);
  60796. luckysheetTableContent.lineWidth = 1;
  60797. luckysheetTableContent.strokeStyle = format[0];
  60798. luckysheetTableContent.stroke();
  60799. luckysheetTableContent.closePath();
  60800. }
  60801. }
  60802. }
  60803. let pos_x = start_c + offsetLeft;
  60804. let pos_y = start_r + offsetTop + 1;
  60805. luckysheetTableContent.save();
  60806. luckysheetTableContent.beginPath();
  60807. luckysheetTableContent.rect(pos_x, pos_y, cellWidth, cellHeight);
  60808. luckysheetTableContent.clip();
  60809. luckysheetTableContent.scale(store_default.zoomRatio, store_default.zoomRatio);
  60810. let textInfo = getCellTextInfo(cell, luckysheetTableContent, {
  60811. cellWidth,
  60812. cellHeight,
  60813. space_width,
  60814. space_height,
  60815. r: r2,
  60816. c: c2
  60817. });
  60818. if (checksCF != null && checksCF["icons"] != null && textInfo.type == "plain") {
  60819. let l = checksCF["icons"]["left"];
  60820. let t = checksCF["icons"]["top"];
  60821. let value2 = textInfo.values[0];
  60822. let horizonAlignPos = pos_x + value2.left;
  60823. let verticalAlignPos = pos_y + value2.top - textInfo.textHeightAll;
  60824. if (verticalAlign == "0") {
  60825. verticalAlignPos = pos_y + cellHeight / 2 - textInfo.textHeightAll / 2;
  60826. } else if (verticalAlign == "1") {
  60827. verticalAlignPos = pos_y;
  60828. } else if (verticalAlign == "2") {
  60829. verticalAlignPos = verticalAlignPos - textInfo.desc;
  60830. }
  60831. verticalAlignPos = verticalAlignPos / store_default.zoomRatio;
  60832. horizonAlignPos = horizonAlignPos / store_default.zoomRatio;
  60833. luckysheetTableContent.drawImage(luckysheet_CFiconsImg, l * 42, t * 32, 32, 32, pos_x / store_default.zoomRatio, verticalAlignPos, textInfo.textHeightAll / store_default.zoomRatio, textInfo.textHeightAll / store_default.zoomRatio);
  60834. if (horizonAlign != "0" && horizonAlign != "2") {
  60835. horizonAlignPos = horizonAlignPos + textInfo.textHeightAll / store_default.zoomRatio;
  60836. }
  60837. }
  60838. luckysheetTableContent.fillStyle = menuButton_default.checkstatus(store_default.flowdata, r2, c2, "fc");
  60839. if (checksAF != null && checksAF[0] != null) {
  60840. luckysheetTableContent.fillStyle = checksAF[0];
  60841. }
  60842. if (checksCF != null && checksCF["textColor"] != null) {
  60843. luckysheetTableContent.fillStyle = checksCF["textColor"];
  60844. }
  60845. if (cell.ct && cell.ct.fa && cell.ct.fa.indexOf("[Red]") > -1 && cell.ct.t == "n" && cell.v < 0) {
  60846. luckysheetTableContent.fillStyle = "#ff0000";
  60847. }
  60848. cellTextRender(textInfo, luckysheetTableContent, {
  60849. pos_x,
  60850. pos_y
  60851. });
  60852. luckysheetTableContent.restore();
  60853. }
  60854. if (cellOverflow_bd_r_render) {
  60855. if (!store_default.luckysheetcurrentisPivotTable && store_default.showGridLines) {
  60856. luckysheetTableContent.beginPath();
  60857. luckysheetTableContent.moveTo(end_c + offsetLeft - 2 + bodrder05, start_r + offsetTop);
  60858. luckysheetTableContent.lineTo(end_c + offsetLeft - 2 + bodrder05, end_r + offsetTop);
  60859. luckysheetTableContent.lineWidth = 1;
  60860. luckysheetTableContent.strokeStyle = luckysheetdefaultstyle.strokeStyle;
  60861. luckysheetTableContent.stroke();
  60862. luckysheetTableContent.closePath();
  60863. }
  60864. }
  60865. if (!store_default.luckysheetcurrentisPivotTable && store_default.showGridLines) {
  60866. luckysheetTableContent.beginPath();
  60867. luckysheetTableContent.moveTo(start_c + offsetLeft - 1, end_r + offsetTop - 2 + bodrder05);
  60868. luckysheetTableContent.lineTo(end_c + offsetLeft - 1, end_r + offsetTop - 2 + bodrder05);
  60869. luckysheetTableContent.lineWidth = 1;
  60870. luckysheetTableContent.strokeStyle = luckysheetdefaultstyle.strokeStyle;
  60871. luckysheetTableContent.stroke();
  60872. luckysheetTableContent.closePath();
  60873. }
  60874. method_default.createHookFunction("cellRenderAfter", store_default.flowdata[r2][c2], {
  60875. r: r2,
  60876. c: c2,
  60877. "start_r": cellsize[1],
  60878. "start_c": cellsize[0],
  60879. "end_r": cellsize[3] + cellsize[1],
  60880. "end_c": cellsize[2] + cellsize[0]
  60881. }, sheetmanage_default.getSheetByIndex(), luckysheetTableContent);
  60882. };
  60883. cellOverflowRender = function(r2, c2, stc, edc, luckysheetTableContent, scrollHeight, scrollWidth, offsetLeft, offsetTop, af_compute, cf_compute) {
  60884. let start_r;
  60885. if (r2 == 0) {
  60886. start_r = -scrollHeight - 1;
  60887. } else {
  60888. start_r = store_default.visibledatarow[r2 - 1] - scrollHeight - 1;
  60889. }
  60890. let end_r = store_default.visibledatarow[r2] - scrollHeight;
  60891. let start_c;
  60892. if (stc == 0) {
  60893. start_c = -scrollWidth;
  60894. } else {
  60895. start_c = store_default.visibledatacolumn[stc - 1] - scrollWidth;
  60896. }
  60897. let end_c = store_default.visibledatacolumn[edc] - scrollWidth;
  60898. let cell = store_default.flowdata[r2][c2];
  60899. let cellWidth = end_c - start_c - 2;
  60900. let cellHeight = end_r - start_r - 2;
  60901. let space_width = 2, space_height = 2;
  60902. let pos_x = start_c + offsetLeft;
  60903. let pos_y = start_r + offsetTop + 1;
  60904. let fontset = luckysheetfontformat(cell);
  60905. luckysheetTableContent.font = fontset;
  60906. luckysheetTableContent.save();
  60907. luckysheetTableContent.beginPath();
  60908. luckysheetTableContent.rect(pos_x, pos_y, cellWidth, cellHeight);
  60909. luckysheetTableContent.clip();
  60910. luckysheetTableContent.scale(store_default.zoomRatio, store_default.zoomRatio);
  60911. let textInfo = getCellTextInfo(cell, luckysheetTableContent, {
  60912. cellWidth,
  60913. cellHeight,
  60914. space_width,
  60915. space_height,
  60916. r: r2,
  60917. c: c2
  60918. });
  60919. let checksAF = alternateformat_default.checksAF(r2, c2, af_compute);
  60920. let checksCF = conditionformat_default.checksCF(r2, c2, cf_compute);
  60921. luckysheetTableContent.fillStyle = menuButton_default.checkstatus(store_default.flowdata, r2, c2, "fc");
  60922. if (checksAF != null && checksAF[0] != null) {
  60923. luckysheetTableContent.fillStyle = checksAF[0];
  60924. }
  60925. if (checksCF != null && checksCF["textColor"] != null) {
  60926. luckysheetTableContent.fillStyle = checksCF["textColor"];
  60927. }
  60928. cellTextRender(textInfo, luckysheetTableContent, {
  60929. pos_x,
  60930. pos_y
  60931. });
  60932. luckysheetTableContent.restore();
  60933. };
  60934. }
  60935. });
  60936. // src/controllers/hyperlinkCtrl.js
  60937. var hyperlinkCtrl, hyperlinkCtrl_default;
  60938. var init_hyperlinkCtrl = __esm({
  60939. "src/controllers/hyperlinkCtrl.js"() {
  60940. init_util();
  60941. init_getdata();
  60942. init_refresh();
  60943. init_location();
  60944. init_formula();
  60945. init_tooltip();
  60946. init_editor();
  60947. init_constant();
  60948. init_select();
  60949. init_server();
  60950. init_sheetmanage();
  60951. init_freezen();
  60952. init_menuButton();
  60953. init_get();
  60954. init_locale();
  60955. init_store();
  60956. hyperlinkCtrl = {
  60957. item: {
  60958. linkType: "external",
  60959. linkAddress: "",
  60960. linkTooltip: ""
  60961. },
  60962. hyperlink: null,
  60963. createDialog: function() {
  60964. let _this = this;
  60965. const _locale = locale_default();
  60966. const hyperlinkText = _locale.insertLink;
  60967. const toolbarText = _locale.toolbar;
  60968. const buttonText = _locale.button;
  60969. $("#luckysheet-modal-dialog-mask").show();
  60970. $("#luckysheet-insertLink-dialog").remove();
  60971. let sheetListOption = "";
  60972. store_default.luckysheetfile.forEach((item2) => {
  60973. sheetListOption += `<option value="${item2.name}">${item2.name}</option>`;
  60974. });
  60975. let content = `<div class="box">
  60976. <div class="box-item">
  60977. <label for="luckysheet-insertLink-dialog-linkText">${hyperlinkText.linkText}\uFF1A</label>
  60978. <input type="text" id="luckysheet-insertLink-dialog-linkText"/>
  60979. </div>
  60980. <div class="box-item">
  60981. <label for="luckysheet-insertLink-dialog-linkType">${hyperlinkText.linkType}\uFF1A</label>
  60982. <select id="luckysheet-insertLink-dialog-linkType">
  60983. <option value="external">${hyperlinkText.external}</option>
  60984. <option value="internal">${hyperlinkText.internal}</option>
  60985. </select>
  60986. </div>
  60987. <div class="show-box show-box-external">
  60988. <div class="box-item">
  60989. <label for="luckysheet-insertLink-dialog-linkAddress">${hyperlinkText.linkAddress}\uFF1A</label>
  60990. <input type="text" id="luckysheet-insertLink-dialog-linkAddress" placeholder="${hyperlinkText.placeholder1}" />
  60991. </div>
  60992. </div>
  60993. <div class="show-box show-box-internal">
  60994. <div class="box-item">
  60995. <label for="luckysheet-insertLink-dialog-linkSheet">${hyperlinkText.linkSheet}\uFF1A</label>
  60996. <select id="luckysheet-insertLink-dialog-linkSheet">
  60997. ${sheetListOption}
  60998. </select>
  60999. </div>
  61000. <div class="box-item">
  61001. <label for="luckysheet-insertLink-dialog-linkCell">${hyperlinkText.linkCell}\uFF1A</label>
  61002. <input type="text" id="luckysheet-insertLink-dialog-linkCell" value="A1" placeholder="${hyperlinkText.placeholder2}" />
  61003. </div>
  61004. </div>
  61005. <div class="box-item">
  61006. <label for="luckysheet-insertLink-dialog-linkTooltip">${hyperlinkText.linkTooltip}\uFF1A</label>
  61007. <input type="text" id="luckysheet-insertLink-dialog-linkTooltip" placeholder="${hyperlinkText.placeholder3}" />
  61008. </div>
  61009. </div>`;
  61010. $("body").append(replaceHtml(modelHTML, {
  61011. "id": "luckysheet-insertLink-dialog",
  61012. "addclass": "luckysheet-insertLink-dialog",
  61013. "title": toolbarText.insertLink,
  61014. "content": content,
  61015. "botton": `<button id="luckysheet-insertLink-dialog-confirm" class="btn btn-primary">${buttonText.confirm}</button>
  61016. <button class="btn btn-default luckysheet-model-close-btn">${buttonText.cancel}</button>`,
  61017. "style": "z-index:100003"
  61018. }));
  61019. let $t = $("#luckysheet-insertLink-dialog").find(".luckysheet-modal-dialog-content").css("min-width", 350).end(), myh = $t.outerHeight(), myw = $t.outerWidth();
  61020. let winw = $(window).width(), winh = $(window).height();
  61021. let scrollLeft = $(document).scrollLeft(), scrollTop = $(document).scrollTop();
  61022. $("#luckysheet-insertLink-dialog").css({
  61023. "left": (winw + scrollLeft - myw) / 2,
  61024. "top": (winh + scrollTop - myh) / 3
  61025. }).show();
  61026. _this.dataAllocation();
  61027. },
  61028. init: function() {
  61029. let _this = this;
  61030. const _locale = locale_default();
  61031. const hyperlinkText = _locale.insertLink;
  61032. $(document).off("change.linkType").on("change.linkType", "#luckysheet-insertLink-dialog-linkType", function(e) {
  61033. let value = this.value;
  61034. $("#luckysheet-insertLink-dialog .show-box").hide();
  61035. $("#luckysheet-insertLink-dialog .show-box-" + value).show();
  61036. });
  61037. $(document).off("click.confirm").on("click.confirm", "#luckysheet-insertLink-dialog-confirm", function(e) {
  61038. let last = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1];
  61039. let rowIndex = last.row_focus || last.row[0];
  61040. let colIndex = last.column_focus || last.column[0];
  61041. let linkText = $("#luckysheet-insertLink-dialog-linkText").val();
  61042. let linkType = $("#luckysheet-insertLink-dialog-linkType").val();
  61043. let linkAddress = $("#luckysheet-insertLink-dialog-linkAddress").val();
  61044. let linkSheet = $("#luckysheet-insertLink-dialog-linkSheet").val();
  61045. let linkCell = $("#luckysheet-insertLink-dialog-linkCell").val();
  61046. let linkTooltip = $("#luckysheet-insertLink-dialog-linkTooltip").val();
  61047. if (linkType == "external") {
  61048. if (!/^http[s]?:\/\//.test(linkAddress)) {
  61049. linkAddress = "https://" + linkAddress;
  61050. }
  61051. if (!/^http[s]?:\/\/([\w\-\.]+)+[\w-]*([\w\-\.\/\?%&=]+)?$/ig.test(linkAddress)) {
  61052. tooltip_default.info('<i class="fa fa-exclamation-triangle"></i>', hyperlinkText.tooltipInfo1);
  61053. return;
  61054. }
  61055. } else {
  61056. if (!formula_default.iscelldata(linkCell)) {
  61057. tooltip_default.info('<i class="fa fa-exclamation-triangle"></i>', hyperlinkText.tooltipInfo2);
  61058. return;
  61059. }
  61060. linkAddress = linkSheet + "!" + linkCell;
  61061. }
  61062. if (linkText == null || linkText.replace(/\s/g, "") == "") {
  61063. linkText = linkAddress;
  61064. }
  61065. let item2 = {
  61066. linkType,
  61067. linkAddress,
  61068. linkTooltip
  61069. };
  61070. let historyHyperlink = $.extend(true, {}, _this.hyperlink);
  61071. let currentHyperlink = $.extend(true, {}, _this.hyperlink);
  61072. currentHyperlink[rowIndex + "_" + colIndex] = item2;
  61073. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  61074. let cell = d[rowIndex][colIndex];
  61075. if (cell == null) {
  61076. cell = {};
  61077. }
  61078. cell.fc = "rgb(0, 0, 255)";
  61079. cell.un = 1;
  61080. cell.v = cell.m = linkText;
  61081. d[rowIndex][colIndex] = cell;
  61082. _this.ref(historyHyperlink, currentHyperlink, store_default.currentSheetIndex, d, [{row: [rowIndex, rowIndex], column: [colIndex, colIndex]}]);
  61083. $("#luckysheet-modal-dialog-mask").hide();
  61084. $("#luckysheet-insertLink-dialog").hide();
  61085. });
  61086. },
  61087. dataAllocation: function() {
  61088. let _this = this;
  61089. let last = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1];
  61090. let rowIndex = last.row_focus || last.row[0];
  61091. let colIndex = last.column_focus || last.column[0];
  61092. let hyperlink = _this.hyperlink || {};
  61093. let item2 = hyperlink[rowIndex + "_" + colIndex] || {};
  61094. let text = getcellvalue(rowIndex, colIndex, null, "m");
  61095. $("#luckysheet-insertLink-dialog-linkText").val(text);
  61096. let linkType = item2.linkType || "external";
  61097. $("#luckysheet-insertLink-dialog-linkType").val(linkType);
  61098. $("#luckysheet-insertLink-dialog .show-box").hide();
  61099. $("#luckysheet-insertLink-dialog .show-box-" + linkType).show();
  61100. let linkAddress = item2.linkAddress || "";
  61101. if (linkType == "external") {
  61102. $("#luckysheet-insertLink-dialog-linkAddress").val(linkAddress);
  61103. } else {
  61104. if (formula_default.iscelldata(linkAddress)) {
  61105. let sheettxt = linkAddress.split("!")[0];
  61106. let rangetxt = linkAddress.split("!")[1];
  61107. $("#luckysheet-insertLink-dialog-linkSheet").val(sheettxt);
  61108. $("#luckysheet-insertLink-dialog-linkCell").val(rangetxt);
  61109. }
  61110. }
  61111. let linkTooltip = item2.linkTooltip || "";
  61112. $("#luckysheet-insertLink-dialog-linkTooltip").val(linkTooltip);
  61113. },
  61114. cellFocus: function(r2, c2) {
  61115. let _this = this;
  61116. if (_this.hyperlink == null || _this.hyperlink[r2 + "_" + c2] == null) {
  61117. return;
  61118. }
  61119. let item2 = _this.hyperlink[r2 + "_" + c2];
  61120. if (item2.linkType == "external") {
  61121. window.open(item2.linkAddress);
  61122. } else {
  61123. let cellrange = formula_default.getcellrange(item2.linkAddress);
  61124. let sheetIndex = cellrange.sheetIndex;
  61125. let range2 = [{
  61126. row: cellrange.row,
  61127. column: cellrange.column
  61128. }];
  61129. if (sheetIndex != store_default.currentSheetIndex) {
  61130. $("#luckysheet-sheet-area div.luckysheet-sheets-item").removeClass("luckysheet-sheets-item-active");
  61131. $("#luckysheet-sheets-item" + sheetIndex).addClass("luckysheet-sheets-item-active");
  61132. sheetmanage_default.changeSheet(sheetIndex);
  61133. }
  61134. store_default.luckysheet_select_save = range2;
  61135. selectHightlightShow(true);
  61136. let row_pre = cellrange.row[0] - 1 == -1 ? 0 : store_default.visibledatarow[cellrange.row[0] - 1];
  61137. let col_pre = cellrange.column[0] - 1 == -1 ? 0 : store_default.visibledatacolumn[cellrange.column[0] - 1];
  61138. $("#luckysheet-scrollbar-x").scrollLeft(col_pre);
  61139. $("#luckysheet-scrollbar-y").scrollTop(row_pre);
  61140. }
  61141. },
  61142. overshow: function(event2) {
  61143. let _this = this;
  61144. $("#luckysheet-hyperlink-overshow").remove();
  61145. if ($(event2.target).closest("#luckysheet-cell-main").length == 0) {
  61146. return;
  61147. }
  61148. let mouse = mouseposition(event2.pageX, event2.pageY);
  61149. let scrollLeft = $("#luckysheet-cell-main").scrollLeft();
  61150. let scrollTop = $("#luckysheet-cell-main").scrollTop();
  61151. let x = mouse[0] + scrollLeft;
  61152. let y = mouse[1] + scrollTop;
  61153. if (freezen_default.freezenverticaldata != null && mouse[0] < freezen_default.freezenverticaldata[0] - freezen_default.freezenverticaldata[2]) {
  61154. return;
  61155. }
  61156. if (freezen_default.freezenhorizontaldata != null && mouse[1] < freezen_default.freezenhorizontaldata[0] - freezen_default.freezenhorizontaldata[2]) {
  61157. return;
  61158. }
  61159. let row_index = rowLocation(y)[2];
  61160. let col_index = colLocation(x)[2];
  61161. let margeset = menuButton_default.mergeborer(store_default.flowdata, row_index, col_index);
  61162. if (!!margeset) {
  61163. row_index = margeset.row[2];
  61164. col_index = margeset.column[2];
  61165. }
  61166. if (_this.hyperlink == null || _this.hyperlink[row_index + "_" + col_index] == null) {
  61167. return;
  61168. }
  61169. let item2 = _this.hyperlink[row_index + "_" + col_index];
  61170. let linkTooltip = item2.linkTooltip;
  61171. if (linkTooltip == null || linkTooltip.replace(/\s/g, "") == "") {
  61172. linkTooltip = item2.linkAddress;
  61173. }
  61174. let row = store_default.visibledatarow[row_index], row_pre = row_index - 1 == -1 ? 0 : store_default.visibledatarow[row_index - 1];
  61175. let col = store_default.visibledatacolumn[col_index], col_pre = col_index - 1 == -1 ? 0 : store_default.visibledatacolumn[col_index - 1];
  61176. if (!!margeset) {
  61177. row = margeset.row[1];
  61178. row_pre = margeset.row[0];
  61179. col = margeset.column[1];
  61180. col_pre = margeset.column[0];
  61181. }
  61182. let html = `<div id="luckysheet-hyperlink-overshow" style="background:#fff;padding:5px 10px;border:1px solid #000;box-shadow:2px 2px #999;position:absolute;left:${col_pre}px;top:${row + 5}px;z-index:100;">
  61183. <div>${linkTooltip}</div>
  61184. <div>\u5355\u51FB\u9F20\u6807\u53EF\u4EE5\u8FFD\u8E2A</div>
  61185. </div>`;
  61186. $(html).appendTo($("#luckysheet-cell-main"));
  61187. },
  61188. ref: function(historyHyperlink, currentHyperlink, sheetIndex, d, range2) {
  61189. let _this = this;
  61190. if (store_default.clearjfundo) {
  61191. store_default.jfundo.length = 0;
  61192. let redo2 = {};
  61193. redo2["type"] = "updateHyperlink";
  61194. redo2["sheetIndex"] = sheetIndex;
  61195. redo2["historyHyperlink"] = historyHyperlink;
  61196. redo2["currentHyperlink"] = currentHyperlink;
  61197. redo2["data"] = store_default.flowdata;
  61198. redo2["curData"] = d;
  61199. redo2["range"] = range2;
  61200. store_default.jfredo.push(redo2);
  61201. }
  61202. _this.hyperlink = currentHyperlink;
  61203. store_default.luckysheetfile[getSheetIndex(sheetIndex)].hyperlink = currentHyperlink;
  61204. store_default.flowdata = d;
  61205. editor_default.webWorkerFlowDataCache(store_default.flowdata);
  61206. store_default.luckysheetfile[getSheetIndex(sheetIndex)].data = store_default.flowdata;
  61207. if (server_default.allowUpdate) {
  61208. server_default.saveParam("all", sheetIndex, currentHyperlink, {"k": "hyperlink"});
  61209. server_default.historyParam(store_default.flowdata, sheetIndex, range2[0]);
  61210. }
  61211. setTimeout(function() {
  61212. luckysheetrefreshgrid();
  61213. }, 1);
  61214. }
  61215. };
  61216. hyperlinkCtrl_default = hyperlinkCtrl;
  61217. }
  61218. });
  61219. // src/global/refresh.js
  61220. function runExecFunction(range2, index2, data) {
  61221. formula_default.execFunctionExist = [];
  61222. for (let s = 0; s < range2.length; s++) {
  61223. for (let r2 = range2[s].row[0]; r2 <= range2[s].row[1]; r2++) {
  61224. for (let c2 = range2[s].column[0]; c2 <= range2[s].column[1]; c2++) {
  61225. formula_default.execFunctionExist.push({"r": r2, "c": c2, "i": index2});
  61226. }
  61227. }
  61228. }
  61229. formula_default.execFunctionExist.reverse();
  61230. formula_default.execFunctionGroup(null, null, null, null, data);
  61231. formula_default.execFunctionGlobalData = null;
  61232. }
  61233. function jfrefreshgrid(data, range2, allParam, isRunExecFunction = true, isRefreshCanvas = true) {
  61234. if (data == null) {
  61235. data = store_default.flowdata;
  61236. }
  61237. if (range2 == null) {
  61238. range2 = store_default.luckysheet_select_save;
  61239. }
  61240. range2 = JSON.parse(JSON.stringify(range2));
  61241. clearTimeout(refreshCanvasTimeOut);
  61242. if (allParam == null) {
  61243. allParam = {};
  61244. }
  61245. let cfg = allParam["cfg"];
  61246. let RowlChange = allParam["RowlChange"];
  61247. let cdformat = allParam["cdformat"];
  61248. let dataVerification = allParam["dataVerification"];
  61249. let dynamicArray = allParam["dynamicArray"];
  61250. let hyperlink = allParam["hyperlink"];
  61251. let file = store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)];
  61252. if (store_default.clearjfundo) {
  61253. store_default.jfundo.length = 0;
  61254. let curConfig;
  61255. if (cfg == null) {
  61256. curConfig = $.extend(true, {}, store_default.config);
  61257. } else {
  61258. curConfig = $.extend(true, {}, cfg);
  61259. }
  61260. let curCdformat;
  61261. if (cdformat == null) {
  61262. curCdformat = $.extend(true, [], file["luckysheet_conditionformat_save"]);
  61263. } else {
  61264. curCdformat = cdformat;
  61265. }
  61266. let curDataVerification;
  61267. if (dataVerification == null) {
  61268. curDataVerification = $.extend(true, {}, file["dataVerification"]);
  61269. } else {
  61270. curDataVerification = dataVerification;
  61271. }
  61272. let curDynamicArray;
  61273. if (dynamicArray == null) {
  61274. curDynamicArray = $.extend(true, [], file["dynamicArray"]);
  61275. } else {
  61276. curDynamicArray = dynamicArray;
  61277. }
  61278. store_default.jfredo.push({
  61279. "type": "datachange",
  61280. "data": store_default.flowdata,
  61281. "curdata": data,
  61282. "sheetIndex": store_default.currentSheetIndex,
  61283. "config": $.extend(true, {}, store_default.config),
  61284. "curConfig": curConfig,
  61285. "cdformat": $.extend(true, [], file["luckysheet_conditionformat_save"]),
  61286. "curCdformat": curCdformat,
  61287. "RowlChange": RowlChange,
  61288. "dataVerification": $.extend(true, [], file["dataVerification"]),
  61289. "curDataVerification": curDataVerification,
  61290. "dynamicArray": $.extend(true, [], file["dynamicArray"]),
  61291. "curDynamicArray": curDynamicArray,
  61292. "hyperlink": hyperlink && $.extend(true, {}, file.hyperlink),
  61293. "curHyperlink": hyperlink,
  61294. "range": range2,
  61295. "dataRange": [...file.luckysheet_select_save]
  61296. });
  61297. }
  61298. store_default.flowdata = data;
  61299. editor_default.webWorkerFlowDataCache(store_default.flowdata);
  61300. file.data = store_default.flowdata;
  61301. if (cfg != null) {
  61302. store_default.config = cfg;
  61303. file.config = store_default.config;
  61304. server_default.saveParam("all", store_default.currentSheetIndex, cfg, {"k": "config"});
  61305. if (RowlChange != null) {
  61306. jfrefreshgrid_rhcw(store_default.flowdata.length, store_default.flowdata[0].length);
  61307. }
  61308. }
  61309. if (cdformat != null && cdformat.length !== 0) {
  61310. file["luckysheet_conditionformat_save"] = cdformat;
  61311. server_default.saveParam("all", store_default.currentSheetIndex, cdformat, {"k": "luckysheet_conditionformat_save"});
  61312. }
  61313. if (dataVerification != null && Object.keys(dataVerification).length !== 0) {
  61314. dataVerificationCtrl_default.dataVerification = dataVerification;
  61315. file["dataVerification"] = dataVerification;
  61316. server_default.saveParam("all", store_default.currentSheetIndex, dataVerification, {"k": "dataVerification"});
  61317. }
  61318. if (dynamicArray != null) {
  61319. file["dynamicArray"] = dynamicArray;
  61320. server_default.saveParam("all", store_default.currentSheetIndex, dynamicArray, {"k": "dynamicArray"});
  61321. }
  61322. if (hyperlink != null) {
  61323. file["hyperlink"] = hyperlink;
  61324. hyperlinkCtrl_default.hyperlink = hyperlink;
  61325. server_default.saveParam("all", store_default.currentSheetIndex, hyperlink, {"k": "hyperlink"});
  61326. }
  61327. for (let s = 0; s < range2.length; s++) {
  61328. let r1 = range2[s].row[0];
  61329. let c1 = range2[s].column[0];
  61330. if (store_default.flowdata[r1][c1] != null && store_default.flowdata[r1][c1].spl != null) {
  61331. window.luckysheetCurrentRow = r1;
  61332. window.luckysheetCurrentColumn = c1;
  61333. window.luckysheetCurrentFunction = store_default.flowdata[r1][c1].f;
  61334. let fp = $.trim(formula_default.functionParserExe(store_default.flowdata[r1][c1].f));
  61335. let sparklines = new Function("return " + fp)();
  61336. store_default.flowdata[r1][c1].spl = sparklines;
  61337. }
  61338. if (server_default.allowUpdate) {
  61339. server_default.historyParam(store_default.flowdata, store_default.currentSheetIndex, range2[s]);
  61340. }
  61341. if (typeof store_default.chartparam.jfrefreshchartall == "function") {
  61342. store_default.chartparam.jfrefreshchartall(store_default.flowdata, range2[s].row[0], range2[s].row[1], range2[s].column[0], range2[s].column[1]);
  61343. }
  61344. }
  61345. if (isRunExecFunction) {
  61346. runExecFunction(range2, store_default.currentSheetIndex, data);
  61347. }
  61348. if (isRefreshCanvas) {
  61349. refreshCanvasTimeOut = setTimeout(function() {
  61350. luckysheetrefreshgrid();
  61351. }, 1);
  61352. }
  61353. selectHightlightShow();
  61354. window.luckysheet_getcelldata_cache = null;
  61355. }
  61356. function jfrefreshgridall(colwidth, rowheight, data, cfg, range2, ctrlType, ctrlValue, cdformat, isRefreshCanvas = true) {
  61357. let redo2 = {}, isRunExecFunction = false;
  61358. clearTimeout(refreshCanvasTimeOut);
  61359. if (ctrlType == "cellRowChange") {
  61360. redo2["type"] = "cellRowChange";
  61361. redo2["config"] = $.extend(true, {}, store_default.config);
  61362. redo2["curconfig"] = $.extend(true, {}, cfg);
  61363. redo2["range"] = $.extend(true, [], store_default.luckysheet_select_save);
  61364. redo2["currange"] = range2;
  61365. redo2["ctrlType"] = ctrlType;
  61366. redo2["ctrlValue"] = ctrlValue;
  61367. let setfield = cfg["rowlen"];
  61368. if (setfield == null) {
  61369. setfield = {};
  61370. }
  61371. server_default.saveParam("cg", store_default.currentSheetIndex, setfield, {"k": "rowlen"});
  61372. } else if (ctrlType == "resizeC") {
  61373. redo2["type"] = "resize";
  61374. redo2["config"] = $.extend(true, {}, store_default.config);
  61375. redo2["curconfig"] = $.extend(true, {}, cfg);
  61376. redo2["range"] = $.extend(true, [], store_default.luckysheet_select_save);
  61377. redo2["currange"] = range2;
  61378. redo2["ctrlType"] = ctrlType;
  61379. redo2["ctrlValue"] = ctrlValue;
  61380. let setfield = cfg["columnlen"];
  61381. if (setfield == null) {
  61382. setfield = {};
  61383. }
  61384. server_default.saveParam("cg", store_default.currentSheetIndex, setfield, {"k": "columnlen"});
  61385. } else if (ctrlType.indexOf("extend") > -1) {
  61386. redo2["type"] = "extend";
  61387. redo2["config"] = $.extend(true, {}, store_default.config);
  61388. redo2["curconfig"] = $.extend(true, {}, cfg);
  61389. redo2["range"] = $.extend(true, [], store_default.luckysheet_select_save);
  61390. redo2["currange"] = range2;
  61391. redo2["ctrlType"] = ctrlType;
  61392. redo2["ctrlValue"] = ctrlValue;
  61393. server_default.saveParam("arc", store_default.currentSheetIndex, {"index": ctrlValue.index, "len": ctrlValue.len, "direction": ctrlValue.direction, "mc": cfg.merge}, {"rc": ctrlValue.type});
  61394. } else if (ctrlType.indexOf("dele") > -1) {
  61395. redo2["type"] = "dele";
  61396. redo2["config"] = $.extend(true, {}, store_default.config);
  61397. redo2["curconfig"] = $.extend(true, {}, cfg);
  61398. redo2["range"] = $.extend(true, [], store_default.luckysheet_select_save);
  61399. redo2["currange"] = range2;
  61400. redo2["ctrlType"] = ctrlType;
  61401. redo2["ctrlValue"] = ctrlValue;
  61402. server_default.saveParam("drc", store_default.currentSheetIndex, {"index": ctrlValue.index, "len": ctrlValue.len, "mc": cfg.merge, "borderInfo": cfg.borderInfo}, {"rc": ctrlValue.type});
  61403. } else {
  61404. redo2["type"] = "datachangeAll";
  61405. redo2["range"] = $.extend(true, [], store_default.luckysheet_select_save);
  61406. redo2["currange"] = range2;
  61407. redo2["ctrlType"] = ctrlType;
  61408. redo2["ctrlValue"] = ctrlValue;
  61409. isRunExecFunction = true;
  61410. for (let s = 0; s < range2.length; s++) {
  61411. server_default.historyParam(data, store_default.currentSheetIndex, range2[s]);
  61412. }
  61413. }
  61414. if (store_default.clearjfundo) {
  61415. store_default.jfundo.length = 0;
  61416. redo2["data"] = store_default.flowdata;
  61417. redo2["curdata"] = data;
  61418. redo2["sheetIndex"] = store_default.currentSheetIndex;
  61419. redo2["cdformat"] = $.extend(true, [], store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)]["luckysheet_conditionformat_save"]);
  61420. redo2["curCdformat"] = cdformat;
  61421. store_default.jfredo.push(redo2);
  61422. }
  61423. store_default.flowdata = data;
  61424. editor_default.webWorkerFlowDataCache(data);
  61425. store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)].data = store_default.flowdata;
  61426. if (cfg != null) {
  61427. store_default.config = cfg;
  61428. store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)].config = store_default.config;
  61429. server_default.saveParam("all", store_default.currentSheetIndex, cfg, {"k": "config"});
  61430. }
  61431. if (cdformat != null) {
  61432. store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)]["luckysheet_conditionformat_save"] = cdformat;
  61433. server_default.saveParam("all", store_default.currentSheetIndex, cdformat, {"k": "luckysheet_conditionformat_save"});
  61434. }
  61435. store_default.luckysheet_select_save = $.extend(true, [], range2);
  61436. if (store_default.luckysheet_select_save.length > 0) {
  61437. selectHightlightShow();
  61438. }
  61439. if (isRunExecFunction) {
  61440. runExecFunction(range2, store_default.currentSheetIndex, data);
  61441. }
  61442. jfrefreshgrid_rhcw(rowheight, colwidth);
  61443. if (isRefreshCanvas) {
  61444. refreshCanvasTimeOut = setTimeout(function() {
  61445. luckysheetrefreshgrid();
  61446. }, 1);
  61447. }
  61448. sheetmanage_default.storeSheetParamALL();
  61449. window.luckysheet_getcelldata_cache = null;
  61450. }
  61451. function jfrefreshrange(data, range2, cdformat) {
  61452. clearTimeout(refreshCanvasTimeOut);
  61453. if (store_default.clearjfundo) {
  61454. store_default.jfundo.length = 0;
  61455. store_default.jfredo.push({
  61456. "type": "rangechange",
  61457. "data": store_default.flowdata,
  61458. "curdata": data,
  61459. "range": range2,
  61460. "sheetIndex": store_default.currentSheetIndex,
  61461. "cdformat": $.extend(true, [], store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)]["luckysheet_conditionformat_save"]),
  61462. "curCdformat": cdformat
  61463. });
  61464. }
  61465. store_default.flowdata = data;
  61466. editor_default.webWorkerFlowDataCache(store_default.flowdata);
  61467. store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)].data = store_default.flowdata;
  61468. if (cdformat != null) {
  61469. store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)]["luckysheet_conditionformat_save"] = cdformat;
  61470. }
  61471. runExecFunction(range2, store_default.currentSheetIndex, data);
  61472. refreshCanvasTimeOut = setTimeout(function() {
  61473. luckysheetrefreshgrid();
  61474. }, 1);
  61475. for (let s = 0; s < range2.length; s++) {
  61476. server_default.historyParam(store_default.flowdata, store_default.currentSheetIndex, range2[s]);
  61477. }
  61478. }
  61479. function jfrefreshgrid_adRC(data, cfg, ctrlType, ctrlValue, calc, filterObj, cf, af, freezen, dataVerification, hyperlink) {
  61480. let file = store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)];
  61481. collaborativeEditBox();
  61482. let mcData = [];
  61483. for (let m in cfg["merge"]) {
  61484. let mc = cfg["merge"][m];
  61485. for (let r2 = mc.r; r2 <= mc.r + mc.rs - 1; r2++) {
  61486. for (let c2 = mc.c; c2 <= mc.c + mc.cs - 1; c2++) {
  61487. if (data[r2][c2] == null) {
  61488. data[r2][c2] = {};
  61489. }
  61490. if (r2 == mc.r && c2 == mc.c) {
  61491. data[r2][c2].mc = mc;
  61492. } else {
  61493. data[r2][c2].mc = {"r": mc.r, "c": mc.c};
  61494. }
  61495. mcData.push({"r": r2, "c": c2});
  61496. }
  61497. }
  61498. }
  61499. let funcData = [];
  61500. if (store_default.clearjfundo) {
  61501. store_default.jfundo.length = 0;
  61502. store_default.jfredo.push({
  61503. "type": ctrlType,
  61504. "sheetIndex": store_default.currentSheetIndex,
  61505. "data": store_default.flowdata,
  61506. "curData": data,
  61507. "config": $.extend(true, {}, store_default.config),
  61508. "curConfig": cfg,
  61509. "ctrlValue": ctrlValue,
  61510. "mcData": mcData,
  61511. "calc": $.extend(true, [], file.calcChain),
  61512. "curCalc": calc,
  61513. "funcData": funcData,
  61514. "filterObj": {"filter_select": $.extend(true, {}, file.filter_select), "filter": $.extend(true, {}, file.filter)},
  61515. "curFilterObj": filterObj,
  61516. "cf": $.extend(true, [], file.luckysheet_conditionformat_save),
  61517. "curCf": cf,
  61518. "af": $.extend(true, [], file.luckysheet_alternateformat_save),
  61519. "curAf": af,
  61520. "freezen": {"freezenhorizontaldata": freezen_default.freezenhorizontaldata, "freezenverticaldata": freezen_default.freezenverticaldata},
  61521. "curFreezen": freezen,
  61522. "dataVerification": $.extend(true, {}, file.dataVerification),
  61523. "curDataVerification": dataVerification,
  61524. "hyperlink": $.extend(true, {}, file.hyperlink),
  61525. "curHyperlink": hyperlink,
  61526. "range": file.luckysheet_select_save,
  61527. "dataRange": [...file.luckysheet_select_save]
  61528. });
  61529. }
  61530. let index2 = ctrlValue.index, len = ctrlValue.len, rc = ctrlValue.rc;
  61531. if (ctrlType == "addRC") {
  61532. let direction = ctrlValue.direction, restore = ctrlValue.restore;
  61533. let addData = [];
  61534. if (restore) {
  61535. if (rc == "r") {
  61536. let st_r;
  61537. if (direction == "lefttop") {
  61538. st_r = index2;
  61539. } else if (direction == "rightbottom") {
  61540. st_r = index2 + 1;
  61541. }
  61542. let ed_r = st_r + len - 1;
  61543. for (let r2 = st_r; r2 <= ed_r; r2++) {
  61544. let row = [];
  61545. for (let c2 = 0; c2 < data[0].length; c2++) {
  61546. let cell = data[r2][c2];
  61547. row.push(cell);
  61548. }
  61549. addData.push(row);
  61550. }
  61551. } else if (rc == "c") {
  61552. let st_c;
  61553. if (direction == "lefttop") {
  61554. st_c = index2;
  61555. } else if (direction == "rightbottom") {
  61556. st_c = index2 + 1;
  61557. }
  61558. let ed_c = st_c + len - 1;
  61559. for (let r2 = 0; r2 < data.length; r2++) {
  61560. let row = [];
  61561. for (let c2 = st_c; c2 <= ed_c; c2++) {
  61562. let cell = data[r2][c2];
  61563. row.push(cell);
  61564. }
  61565. addData.push(row);
  61566. }
  61567. }
  61568. }
  61569. server_default.saveParam("arc", store_default.currentSheetIndex, {"index": index2, "len": len, "direction": direction, "data": addData}, {"rc": rc});
  61570. } else if (ctrlType == "delRC") {
  61571. server_default.saveParam("drc", store_default.currentSheetIndex, {"index": index2, "len": len}, {"rc": rc});
  61572. }
  61573. store_default.flowdata = data;
  61574. editor_default.webWorkerFlowDataCache(store_default.flowdata);
  61575. file.data = data;
  61576. store_default.config = cfg;
  61577. file.config = store_default.config;
  61578. server_default.saveParam("all", store_default.currentSheetIndex, cfg, {"k": "config"});
  61579. for (let i2 = 0; i2 < mcData.length; i2++) {
  61580. let mcData_r = mcData[i2].r, mcData_c = mcData[i2].c;
  61581. server_default.saveParam("v", store_default.currentSheetIndex, store_default.flowdata[mcData_r][mcData_c], {"r": mcData_r, "c": mcData_c});
  61582. }
  61583. if (calc.length > 0) {
  61584. for (let i2 = 0; i2 < calc.length; i2++) {
  61585. let clc = calc[i2];
  61586. let clc_r = clc.r, clc_c = clc.c, clc_i = clc.index, clc_funcStr = getcellFormula(clc_r, clc_c, clc_i, data);
  61587. let clc_result = formula_default.execfunction(clc_funcStr, clc_r, clc_c, clc_i, null, true);
  61588. clc.func = clc_result;
  61589. if (data[clc_r][clc_c].f == clc_funcStr) {
  61590. setcellvalue(clc_r, clc_c, data, clc_result[1]);
  61591. }
  61592. }
  61593. }
  61594. file.calcChain = calc;
  61595. server_default.saveParam("all", store_default.currentSheetIndex, calc, {"k": "calcChain"});
  61596. for (let i2 = 0; i2 < funcData.length; i2++) {
  61597. let funcData_r = funcData[i2].r, funcData_c = funcData[i2].c;
  61598. server_default.saveParam("v", store_default.currentSheetIndex, store_default.flowdata[funcData_r][funcData_c], {"r": funcData_r, "c": funcData_c});
  61599. }
  61600. if (filterObj != null) {
  61601. file.filter_select = filterObj.filter_select;
  61602. file.filter = filterObj.filter;
  61603. } else {
  61604. file.filter_select = null;
  61605. file.filter = null;
  61606. }
  61607. createFilterOptions(file.filter_select, file.filter);
  61608. server_default.saveParam("all", store_default.currentSheetIndex, file.filter_select, {"k": "filter_select"});
  61609. server_default.saveParam("all", store_default.currentSheetIndex, file.filter, {"k": "filter"});
  61610. file.luckysheet_conditionformat_save = cf;
  61611. server_default.saveParam("all", store_default.currentSheetIndex, file.luckysheet_conditionformat_save, {"k": "luckysheet_conditionformat_save"});
  61612. file.luckysheet_alternateformat_save = af;
  61613. server_default.saveParam("all", store_default.currentSheetIndex, file.luckysheet_alternateformat_save, {"k": "luckysheet_alternateformat_save"});
  61614. if (freezen != null) {
  61615. freezen_default.freezenhorizontaldata = freezen.freezenhorizontaldata;
  61616. freezen_default.freezenverticaldata = freezen.freezenverticaldata;
  61617. } else {
  61618. freezen_default.freezenhorizontaldata = null;
  61619. freezen_default.freezenverticaldata = null;
  61620. }
  61621. dataVerificationCtrl_default.dataVerification = dataVerification;
  61622. file.dataVerification = dataVerification;
  61623. server_default.saveParam("all", store_default.currentSheetIndex, file.dataVerification, {"k": "dataVerification"});
  61624. hyperlinkCtrl_default.hyperlink = hyperlink;
  61625. file.hyperlink = hyperlink;
  61626. server_default.saveParam("all", store_default.currentSheetIndex, file.hyperlink, {"k": "hyperlink"});
  61627. jfrefreshgrid_rhcw(store_default.flowdata.length, store_default.flowdata[0].length);
  61628. }
  61629. function jfrefreshgrid_deleteCell(data, cfg, ctrl, calc, filterObj, cf, dataVerification, hyperlink) {
  61630. let file = store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)];
  61631. clearTimeout(refreshCanvasTimeOut);
  61632. collaborativeEditBox();
  61633. let mcData = [];
  61634. if (JSON.stringify(cfg["merge"]) == "{}") {
  61635. for (let r2 = 0; r2 < data.length; r2++) {
  61636. for (let c2 = 0; c2 < data[0].length; c2++) {
  61637. let cell = data[r2][c2];
  61638. if (cell != null && cell.mc != null) {
  61639. delete cell.mc;
  61640. mcData.push({"r": r2, "c": c2});
  61641. }
  61642. }
  61643. }
  61644. } else {
  61645. for (let m in cfg["merge"]) {
  61646. let mc = cfg["merge"][m];
  61647. for (let r2 = mc.r; r2 <= mc.r + mc.rs - 1; r2++) {
  61648. for (let c2 = mc.c; c2 <= mc.c + mc.cs - 1; c2++) {
  61649. if (data[r2][c2] == null) {
  61650. data[r2][c2] = {};
  61651. }
  61652. if (r2 == mc.r && c2 == mc.c) {
  61653. if (JSON.stringify(data[r2][c2].mc) != JSON.stringify(mc)) {
  61654. data[r2][c2].mc = mc;
  61655. mcData.push({"r": r2, "c": c2});
  61656. }
  61657. } else {
  61658. let tempMc = {"r": mc.r, "c": mc.c};
  61659. if (JSON.stringify(data[r2][c2].mc) != JSON.stringify(tempMc)) {
  61660. data[r2][c2].mc = tempMc;
  61661. mcData.push({"r": r2, "c": c2});
  61662. }
  61663. }
  61664. }
  61665. }
  61666. }
  61667. }
  61668. let funcData = [];
  61669. if (store_default.clearjfundo) {
  61670. store_default.jfundo.length = 0;
  61671. store_default.jfredo.push({
  61672. "type": "deleteCell",
  61673. "sheetIndex": store_default.currentSheetIndex,
  61674. "ctrl": ctrl,
  61675. "data": store_default.flowdata,
  61676. "curData": data,
  61677. "config": $.extend(true, {}, store_default.config),
  61678. "curConfig": cfg,
  61679. "mcData": mcData,
  61680. "calc": $.extend(true, [], file.calcChain),
  61681. "curCalc": calc,
  61682. "funcData": funcData,
  61683. "filterObj": {"filter_select": $.extend(true, {}, file.filter_select), "filter": $.extend(true, {}, file.filter)},
  61684. "curFilterObj": filterObj,
  61685. "cf": $.extend(true, [], file.luckysheet_conditionformat_save),
  61686. "curCf": cf,
  61687. "dataVerification": $.extend(true, {}, file.dataVerification),
  61688. "curDataVerification": dataVerification,
  61689. "hyperlink": $.extend(true, {}, file.hyperlink),
  61690. "curHyperlink": hyperlink,
  61691. "range": file.luckysheet_select_save,
  61692. "dataRange": [...file.luckysheet_select_save]
  61693. });
  61694. }
  61695. store_default.flowdata = data;
  61696. editor_default.webWorkerFlowDataCache(store_default.flowdata);
  61697. file.data = data;
  61698. if (server_default.allowUpdate) {
  61699. let type = ctrl.type, str = ctrl.str, edr = ctrl.edr, stc = ctrl.stc, edc = ctrl.edc;
  61700. let range2;
  61701. if (type == "moveUp") {
  61702. range2 = {
  61703. "row": [str, data.length - 1],
  61704. "column": [stc, edc]
  61705. };
  61706. } else if (type == "moveLeft") {
  61707. range2 = {
  61708. "row": [str, edr],
  61709. "column": [stc, data[0].length - 1]
  61710. };
  61711. }
  61712. server_default.historyParam(store_default.flowdata, store_default.currentSheetIndex, range2);
  61713. }
  61714. store_default.config = cfg;
  61715. file.config = store_default.config;
  61716. server_default.saveParam("all", store_default.currentSheetIndex, cfg, {"k": "config"});
  61717. for (let i2 = 0; i2 < mcData.length; i2++) {
  61718. let mcData_r = mcData[i2].r, mcData_c = mcData[i2].c;
  61719. server_default.saveParam("v", store_default.currentSheetIndex, store_default.flowdata[mcData_r][mcData_c], {"r": mcData_r, "c": mcData_c});
  61720. }
  61721. if (calc.length > 0) {
  61722. for (let i2 = 0; i2 < calc.length; i2++) {
  61723. let clc = calc[i2];
  61724. let clc_r = clc.r, clc_c = clc.c, clc_i = clc.index, clc_funcStr = getcellFormula(clc_r, clc_c, clc_i, data);
  61725. let clc_result = formula_default.execfunction(clc_funcStr, clc_r, clc_c, clc_i, null, true);
  61726. clc.func = clc_result;
  61727. if (data[clc_r][clc_c].f == clc_funcStr) {
  61728. setcellvalue(clc_r, clc_c, data, clc_result[1]);
  61729. }
  61730. }
  61731. }
  61732. file.calcChain = calc;
  61733. server_default.saveParam("all", store_default.currentSheetIndex, calc, {"k": "calcChain"});
  61734. for (let i2 = 0; i2 < funcData.length; i2++) {
  61735. let funcData_r = funcData[i2].r, funcData_c = funcData[i2].c;
  61736. server_default.saveParam("v", store_default.currentSheetIndex, store_default.flowdata[funcData_r][funcData_c], {"r": funcData_r, "c": funcData_c});
  61737. }
  61738. if (filterObj != null) {
  61739. file.filter_select = filterObj.filter_select;
  61740. file.filter = filterObj.filter;
  61741. } else {
  61742. file.filter_select = null;
  61743. file.filter = null;
  61744. }
  61745. createFilterOptions(file.filter_select, file.filter);
  61746. server_default.saveParam("all", store_default.currentSheetIndex, file.filter_select, {"k": "filter_select"});
  61747. server_default.saveParam("all", store_default.currentSheetIndex, file.filter, {"k": "filter"});
  61748. file.luckysheet_conditionformat_save = cf;
  61749. server_default.saveParam("all", store_default.currentSheetIndex, file.luckysheet_conditionformat_save, {"k": "luckysheet_conditionformat_save"});
  61750. dataVerificationCtrl_default.dataVerification = dataVerification;
  61751. file.dataVerification = dataVerification;
  61752. server_default.saveParam("all", store_default.currentSheetIndex, file.dataVerification, {"k": "dataVerification"});
  61753. hyperlinkCtrl_default.hyperlink = hyperlink;
  61754. file.hyperlink = hyperlink;
  61755. server_default.saveParam("all", store_default.currentSheetIndex, file.hyperlink, {"k": "hyperlink"});
  61756. refreshCanvasTimeOut = setTimeout(function() {
  61757. luckysheetrefreshgrid();
  61758. }, 1);
  61759. }
  61760. function jfrefreshgrid_pastcut(source, target, RowlChange) {
  61761. let execF_rc = {};
  61762. formula_default.execFunctionExist = [];
  61763. clearTimeout(refreshCanvasTimeOut);
  61764. for (let r2 = source["range"].row[0]; r2 <= source["range"].row[1]; r2++) {
  61765. for (let c2 = source["range"].column[0]; c2 <= source["range"].column[1]; c2++) {
  61766. if (r2 + "_" + c2 + "_" + source["sheetIndex"] in execF_rc) {
  61767. continue;
  61768. }
  61769. execF_rc[r2 + "_" + c2 + "_" + source["sheetIndex"]] = 0;
  61770. formula_default.execFunctionExist.push({"r": r2, "c": c2, "i": source["sheetIndex"]});
  61771. }
  61772. }
  61773. for (let r2 = target["range"].row[0]; r2 <= target["range"].row[1]; r2++) {
  61774. for (let c2 = target["range"].column[0]; c2 <= target["range"].column[1]; c2++) {
  61775. if (r2 + "_" + c2 + "_" + target["sheetIndex"] in execF_rc) {
  61776. continue;
  61777. }
  61778. execF_rc[r2 + "_" + c2 + "_" + target["sheetIndex"]] = 0;
  61779. formula_default.execFunctionExist.push({"r": r2, "c": c2, "i": target["sheetIndex"]});
  61780. }
  61781. }
  61782. if (store_default.clearjfundo) {
  61783. store_default.jfundo.length = 0;
  61784. store_default.jfredo.push({
  61785. "type": "pasteCut",
  61786. "source": source,
  61787. "target": target,
  61788. "RowlChange": RowlChange
  61789. });
  61790. }
  61791. let rowHeight;
  61792. if (store_default.currentSheetIndex == source["sheetIndex"]) {
  61793. store_default.config = source["curConfig"];
  61794. rowHeight = source["curData"].length;
  61795. store_default.luckysheetfile[getSheetIndex(target["sheetIndex"])]["config"] = target["curConfig"];
  61796. } else if (store_default.currentSheetIndex == target["sheetIndex"]) {
  61797. store_default.config = target["curConfig"];
  61798. rowHeight = target["curData"].length;
  61799. store_default.luckysheetfile[getSheetIndex(source["sheetIndex"])]["config"] = source["curConfig"];
  61800. }
  61801. if (RowlChange) {
  61802. store_default.visibledatarow = [];
  61803. store_default.rh_height = 0;
  61804. for (let i2 = 0; i2 < rowHeight; i2++) {
  61805. let rowlen = store_default.defaultrowlen;
  61806. if (store_default.config["rowlen"] != null && store_default.config["rowlen"][i2] != null) {
  61807. rowlen = store_default.config["rowlen"][i2];
  61808. }
  61809. if (store_default.config["rowhidden"] != null && store_default.config["rowhidden"][i2] != null) {
  61810. rowlen = store_default.config["rowhidden"][i2];
  61811. store_default.visibledatarow.push(store_default.rh_height);
  61812. continue;
  61813. } else {
  61814. store_default.rh_height += rowlen + 1;
  61815. }
  61816. store_default.visibledatarow.push(store_default.rh_height);
  61817. }
  61818. store_default.rh_height += 80;
  61819. if (store_default.currentSheetIndex == source["sheetIndex"]) {
  61820. let rowlenArr = computeRowlenArr(target["curData"].length, target["curConfig"]);
  61821. store_default.luckysheetfile[getSheetIndex(target["sheetIndex"])]["visibledatarow"] = rowlenArr;
  61822. } else if (store_default.currentSheetIndex == target["sheetIndex"]) {
  61823. let rowlenArr = computeRowlenArr(source["curData"].length, source["curConfig"]);
  61824. store_default.luckysheetfile[getSheetIndex(source["sheetIndex"])]["visibledatarow"] = rowlenArr;
  61825. }
  61826. }
  61827. if (store_default.currentSheetIndex == source["sheetIndex"]) {
  61828. store_default.flowdata = source["curData"];
  61829. store_default.luckysheetfile[getSheetIndex(target["sheetIndex"])]["data"] = target["curData"];
  61830. } else if (store_default.currentSheetIndex == target["sheetIndex"]) {
  61831. store_default.flowdata = target["curData"];
  61832. store_default.luckysheetfile[getSheetIndex(source["sheetIndex"])]["data"] = source["curData"];
  61833. }
  61834. editor_default.webWorkerFlowDataCache(store_default.flowdata);
  61835. store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)].data = store_default.flowdata;
  61836. if (store_default.currentSheetIndex == target["sheetIndex"]) {
  61837. store_default.luckysheet_select_save = [{"row": target["range"].row, "column": target["range"].column}];
  61838. } else {
  61839. store_default.luckysheet_select_save = [{"row": source["range"].row, "column": source["range"].column}];
  61840. }
  61841. if (store_default.luckysheet_select_save.length > 0) {
  61842. selectHightlightShow();
  61843. }
  61844. store_default.luckysheetfile[getSheetIndex(source["sheetIndex"])].luckysheet_conditionformat_save = source["curCdformat"];
  61845. store_default.luckysheetfile[getSheetIndex(target["sheetIndex"])].luckysheet_conditionformat_save = target["curCdformat"];
  61846. if (store_default.currentSheetIndex == source["sheetIndex"]) {
  61847. dataVerificationCtrl_default.dataVerification = source["curDataVerification"];
  61848. } else if (store_default.currentSheetIndex == target["sheetIndex"]) {
  61849. dataVerificationCtrl_default.dataVerification = target["curDataVerification"];
  61850. }
  61851. store_default.luckysheetfile[getSheetIndex(source["sheetIndex"])].dataVerification = source["curDataVerification"];
  61852. store_default.luckysheetfile[getSheetIndex(target["sheetIndex"])].dataVerification = target["curDataVerification"];
  61853. formula_default.execFunctionExist.reverse();
  61854. formula_default.execFunctionGroup(null, null, null, null, target["curData"]);
  61855. formula_default.execFunctionGlobalData = null;
  61856. let index2 = getSheetIndex(store_default.currentSheetIndex);
  61857. let file = store_default.luckysheetfile[index2];
  61858. file.scrollTop = $("#luckysheet-cell-main").scrollTop();
  61859. file.scrollLeft = $("#luckysheet-cell-main").scrollLeft();
  61860. sheetmanage_default.showSheet();
  61861. refreshCanvasTimeOut = setTimeout(function() {
  61862. luckysheetrefreshgrid();
  61863. }, 1);
  61864. sheetmanage_default.storeSheetParamALL();
  61865. server_default.saveParam("all", source["sheetIndex"], source["curConfig"], {"k": "config"});
  61866. server_default.saveParam("all", target["sheetIndex"], target["curConfig"], {"k": "config"});
  61867. server_default.historyParam(source["curData"], source["sheetIndex"], {"row": source["range"]["row"], "column": source["range"]["column"]});
  61868. server_default.historyParam(target["curData"], target["sheetIndex"], {"row": target["range"]["row"], "column": target["range"]["column"]});
  61869. server_default.saveParam("all", source["sheetIndex"], source["curCdformat"], {"k": "luckysheet_conditionformat_save"});
  61870. server_default.saveParam("all", target["sheetIndex"], target["curCdformat"], {"k": "luckysheet_conditionformat_save"});
  61871. server_default.saveParam("all", source["sheetIndex"], source["curDataVerification"], {"k": "dataVerification"});
  61872. server_default.saveParam("all", target["sheetIndex"], target["curDataVerification"], {"k": "dataVerification"});
  61873. }
  61874. function jfrefreshgrid_rhcw(rowheight, colwidth, isRefreshCanvas = true) {
  61875. rhchInit(rowheight, colwidth);
  61876. clearTimeout(refreshCanvasTimeOut);
  61877. sheetmanage_default.storeSheetParam();
  61878. let calcChain = store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)].calcChain;
  61879. if (calcChain != null && calcChain.length > 0) {
  61880. if (store_default.config["rowlen"] == null) {
  61881. store_default.config["rowlen"] = {};
  61882. }
  61883. if (store_default.config["columnlen"] == null) {
  61884. store_default.config["columnlen"] = {};
  61885. }
  61886. for (let i2 = 0; i2 < calcChain.length; i2++) {
  61887. let r2 = calcChain[i2].r, c2 = calcChain[i2].c, index2 = calcChain[i2].index;
  61888. if (index2 == store_default.currentSheetIndex && store_default.flowdata[r2][c2] != null && store_default.flowdata[r2][c2].spl != null && (r2 in store_default.config["rowlen"] || c2 in store_default.config["columnlen"])) {
  61889. window.luckysheetCurrentRow = r2;
  61890. window.luckysheetCurrentColumn = c2;
  61891. window.luckysheetCurrentFunction = store_default.flowdata[r2][c2].f;
  61892. let fp = $.trim(formula_default.functionParserExe(store_default.flowdata[r2][c2].f));
  61893. let sparklines = new Function("return " + fp)();
  61894. store_default.flowdata[r2][c2].spl = sparklines;
  61895. server_default.saveParam("v", store_default.currentSheetIndex, store_default.flowdata[r2][c2], {"r": r2, "c": c2});
  61896. }
  61897. }
  61898. store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)].data = store_default.flowdata;
  61899. }
  61900. postil_default.positionSync();
  61901. selectHightlightShow();
  61902. collaborativeEditBox();
  61903. if ($(".luckysheet-selection-copy").is(":visible")) {
  61904. selectionCopyShow();
  61905. }
  61906. if ($("#luckysheet-dropCell-icon").is(":visible")) {
  61907. $("#luckysheet-dropCell-icon").remove();
  61908. }
  61909. if (freezen_default.freezenhorizontaldata != null && freezen_default.freezenverticaldata != null) {
  61910. let row_st = freezen_default.freezenhorizontaldata[1] - 1;
  61911. let col_st = freezen_default.freezenverticaldata[1] - 1;
  61912. let scrollTop = freezen_default.freezenhorizontaldata[2];
  61913. let scrollLeft = freezen_default.freezenverticaldata[2];
  61914. let top = store_default.visibledatarow[row_st] - 2 - scrollTop + store_default.columnHeaderHeight;
  61915. let freezenhorizontaldata = [
  61916. store_default.visibledatarow[row_st],
  61917. row_st + 1,
  61918. scrollTop,
  61919. freezen_default.cutVolumn(store_default.visibledatarow, row_st + 1),
  61920. top
  61921. ];
  61922. let left = store_default.visibledatacolumn[col_st] - 2 - scrollLeft + store_default.rowHeaderWidth;
  61923. let freezenverticaldata = [
  61924. store_default.visibledatacolumn[col_st],
  61925. col_st + 1,
  61926. scrollLeft,
  61927. freezen_default.cutVolumn(store_default.visibledatacolumn, col_st + 1),
  61928. left
  61929. ];
  61930. freezen_default.saveFreezen(freezenhorizontaldata, top, freezenverticaldata, left);
  61931. freezen_default.createFreezenHorizontal(freezenhorizontaldata, top);
  61932. freezen_default.createFreezenVertical(freezenverticaldata, left);
  61933. freezen_default.createAssistCanvas();
  61934. } else if (freezen_default.freezenhorizontaldata != null) {
  61935. let row_st = freezen_default.freezenhorizontaldata[1] - 1;
  61936. let scrollTop = freezen_default.freezenhorizontaldata[2];
  61937. let top = store_default.visibledatarow[row_st] - 2 - scrollTop + store_default.columnHeaderHeight;
  61938. let freezenhorizontaldata = [
  61939. store_default.visibledatarow[row_st],
  61940. row_st + 1,
  61941. scrollTop,
  61942. freezen_default.cutVolumn(store_default.visibledatarow, row_st + 1),
  61943. top
  61944. ];
  61945. freezen_default.saveFreezen(freezenhorizontaldata, top, null, null);
  61946. freezen_default.createFreezenHorizontal(freezenhorizontaldata, top);
  61947. freezen_default.createAssistCanvas();
  61948. } else if (freezen_default.freezenverticaldata != null) {
  61949. let col_st = freezen_default.freezenverticaldata[1] - 1;
  61950. let scrollLeft = freezen_default.freezenverticaldata[2];
  61951. let left = store_default.visibledatacolumn[col_st] - 2 - scrollLeft + store_default.rowHeaderWidth;
  61952. let freezenverticaldata = [
  61953. store_default.visibledatacolumn[col_st],
  61954. col_st + 1,
  61955. scrollLeft,
  61956. freezen_default.cutVolumn(store_default.visibledatacolumn, col_st + 1),
  61957. left
  61958. ];
  61959. freezen_default.saveFreezen(null, null, freezenverticaldata, left);
  61960. freezen_default.createFreezenVertical(freezenverticaldata, left);
  61961. freezen_default.createAssistCanvas();
  61962. } else {
  61963. if ($("#luckysheet-filter-options-sheet" + store_default.currentSheetIndex + " .luckysheet-filter-options").length > 0) {
  61964. $("#luckysheet-filter-options-sheet" + store_default.currentSheetIndex + " .luckysheet-filter-options").each(function(i2, e) {
  61965. let str = $(e).data("str"), cindex = $(e).data("cindex");
  61966. let left = store_default.visibledatacolumn[cindex] - 20;
  61967. let top = str - 1 == -1 ? 0 : store_default.visibledatarow[str - 1];
  61968. $(e).css({"left": left, "top": top});
  61969. });
  61970. }
  61971. }
  61972. if ($("#luckysheet-filter-selected-sheet" + store_default.currentSheetIndex).length > 0) {
  61973. let luckysheet_filter_save = store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)].filter_select;
  61974. let r1 = luckysheet_filter_save.row[0], r2 = luckysheet_filter_save.row[1];
  61975. let c1 = luckysheet_filter_save.column[0], c2 = luckysheet_filter_save.column[1];
  61976. let row = store_default.visibledatarow[r2], row_pre = r1 - 1 == -1 ? 0 : store_default.visibledatarow[r1 - 1];
  61977. let col = store_default.visibledatacolumn[c2], col_pre = c1 - 1 == -1 ? 0 : store_default.visibledatacolumn[c1 - 1];
  61978. $("#luckysheet-filter-selected-sheet" + store_default.currentSheetIndex).css({
  61979. "left": col_pre,
  61980. "width": col - col_pre - 1,
  61981. "top": row_pre,
  61982. "height": row - row_pre - 1
  61983. });
  61984. }
  61985. sheetmanage_default.showSheet();
  61986. if (isRefreshCanvas) {
  61987. refreshCanvasTimeOut = setTimeout(function() {
  61988. luckysheetrefreshgrid();
  61989. }, 1);
  61990. }
  61991. }
  61992. function luckysheetrefreshgrid(scrollWidth, scrollHeight) {
  61993. formula_default.groupValuesRefresh();
  61994. if (scrollWidth == null) {
  61995. scrollWidth = $("#luckysheet-cell-main").scrollLeft();
  61996. }
  61997. if (scrollHeight == null) {
  61998. scrollHeight = $("#luckysheet-cell-main").scrollTop();
  61999. }
  62000. if (freezen_default.freezenverticaldata != null || freezen_default.freezenhorizontaldata != null) {
  62001. let freezen_horizon_px, freezen_horizon_ed, freezen_horizon_scrollTop;
  62002. let freezen_vertical_px, freezen_vertical_ed, freezen_vertical_scrollTop;
  62003. let drawWidth = store_default.luckysheetTableContentHW[0], drawHeight = store_default.luckysheetTableContentHW[1];
  62004. if (freezen_default.freezenverticaldata != null && freezen_default.freezenhorizontaldata != null) {
  62005. freezen_horizon_px = freezen_default.freezenhorizontaldata[0];
  62006. freezen_horizon_ed = freezen_default.freezenhorizontaldata[1];
  62007. freezen_horizon_scrollTop = freezen_default.freezenhorizontaldata[2];
  62008. freezen_vertical_px = freezen_default.freezenverticaldata[0];
  62009. freezen_vertical_ed = freezen_default.freezenverticaldata[1];
  62010. freezen_vertical_scrollTop = freezen_default.freezenverticaldata[2];
  62011. luckysheetDrawMain(freezen_vertical_scrollTop, freezen_horizon_scrollTop, freezen_vertical_px, freezen_horizon_px, 1, 1, null, null, "freezen_3");
  62012. luckysheetDrawMain(scrollWidth + freezen_vertical_px - freezen_vertical_scrollTop, freezen_horizon_scrollTop, drawWidth - freezen_vertical_px + freezen_vertical_scrollTop, freezen_horizon_px, 1, 1, null, null, "freezen_4");
  62013. luckysheetDrawMain(freezen_vertical_scrollTop, scrollHeight + freezen_horizon_px - freezen_horizon_scrollTop, freezen_vertical_px, drawHeight - freezen_horizon_px + freezen_horizon_scrollTop, 1, 1, null, null, "freezen_7");
  62014. luckysheetDrawMain(scrollWidth + freezen_vertical_px - freezen_vertical_scrollTop, scrollHeight + freezen_horizon_px - freezen_horizon_scrollTop, drawWidth - freezen_vertical_px + freezen_vertical_scrollTop, drawHeight - freezen_horizon_px + freezen_horizon_scrollTop, freezen_vertical_px - freezen_vertical_scrollTop + store_default.rowHeaderWidth, freezen_horizon_px - freezen_horizon_scrollTop + store_default.columnHeaderHeight);
  62015. luckysheetDrawgridColumnTitle(freezen_vertical_scrollTop, freezen_vertical_px, store_default.rowHeaderWidth);
  62016. luckysheetDrawgridColumnTitle(scrollWidth + freezen_vertical_px - freezen_vertical_scrollTop, drawWidth - freezen_vertical_px + freezen_vertical_scrollTop, freezen_vertical_px - freezen_vertical_scrollTop + store_default.rowHeaderWidth);
  62017. luckysheetDrawgridRowTitle(freezen_horizon_scrollTop, freezen_horizon_px, store_default.columnHeaderHeight);
  62018. luckysheetDrawgridRowTitle(scrollHeight + freezen_horizon_px - freezen_horizon_scrollTop, drawHeight - freezen_horizon_px + freezen_horizon_scrollTop, freezen_horizon_px - freezen_horizon_scrollTop + store_default.columnHeaderHeight);
  62019. } else if (freezen_default.freezenhorizontaldata != null) {
  62020. freezen_horizon_px = freezen_default.freezenhorizontaldata[0];
  62021. freezen_horizon_ed = freezen_default.freezenhorizontaldata[1];
  62022. freezen_horizon_scrollTop = freezen_default.freezenhorizontaldata[2];
  62023. luckysheetDrawMain(scrollWidth, freezen_horizon_scrollTop, drawWidth, freezen_horizon_px, 1, 1, null, null, "freezen_h");
  62024. luckysheetDrawMain(scrollWidth, scrollHeight + freezen_horizon_px - freezen_horizon_scrollTop, drawWidth, drawHeight - freezen_horizon_px + freezen_horizon_scrollTop, null, freezen_horizon_px - freezen_horizon_scrollTop + store_default.columnHeaderHeight);
  62025. luckysheetDrawgridColumnTitle(scrollWidth, drawWidth, null);
  62026. luckysheetDrawgridRowTitle(freezen_horizon_scrollTop, freezen_horizon_px, store_default.columnHeaderHeight);
  62027. luckysheetDrawgridRowTitle(scrollHeight + freezen_horizon_px - freezen_horizon_scrollTop, drawHeight - freezen_horizon_px + freezen_horizon_scrollTop, freezen_horizon_px - freezen_horizon_scrollTop + store_default.columnHeaderHeight);
  62028. } else if (freezen_default.freezenverticaldata != null) {
  62029. freezen_vertical_px = freezen_default.freezenverticaldata[0];
  62030. freezen_vertical_ed = freezen_default.freezenverticaldata[1];
  62031. freezen_vertical_scrollTop = freezen_default.freezenverticaldata[2];
  62032. luckysheetDrawMain(freezen_vertical_scrollTop, scrollHeight, freezen_vertical_px, drawHeight, 1, 1, null, null, "freezen_v");
  62033. luckysheetDrawMain(scrollWidth + freezen_vertical_px - freezen_vertical_scrollTop, scrollHeight, drawWidth - freezen_vertical_px + freezen_vertical_scrollTop, drawHeight, freezen_vertical_px - freezen_vertical_scrollTop + store_default.rowHeaderWidth, null);
  62034. luckysheetDrawgridRowTitle(scrollHeight, drawHeight, null);
  62035. luckysheetDrawgridColumnTitle(freezen_vertical_scrollTop, freezen_vertical_px, store_default.rowHeaderWidth);
  62036. luckysheetDrawgridColumnTitle(scrollWidth + freezen_vertical_px - freezen_vertical_scrollTop, drawWidth - freezen_vertical_px + freezen_vertical_scrollTop, freezen_vertical_px - freezen_vertical_scrollTop + store_default.rowHeaderWidth);
  62037. }
  62038. } else {
  62039. if ($("#luckysheetTableContent").length == 0) {
  62040. return;
  62041. }
  62042. let luckysheetTableContent = $("#luckysheetTableContent").get(0).getContext("2d");
  62043. luckysheetDrawMain(scrollWidth, scrollHeight);
  62044. luckysheetDrawgridColumnTitle(scrollWidth);
  62045. luckysheetDrawgridRowTitle(scrollHeight);
  62046. luckysheetTableContent.clearRect(0, 0, store_default.rowHeaderWidth * store_default.devicePixelRatio - 1, store_default.columnHeaderHeight * store_default.devicePixelRatio - 1);
  62047. }
  62048. }
  62049. var refreshCanvasTimeOut;
  62050. var init_refresh = __esm({
  62051. "src/global/refresh.js"() {
  62052. init_rhchInit();
  62053. init_formula();
  62054. init_editor();
  62055. init_setdata();
  62056. init_getdata();
  62057. init_getRowlen();
  62058. init_draw();
  62059. init_freezen();
  62060. init_server();
  62061. init_sheetmanage();
  62062. init_postil();
  62063. init_dataVerificationCtrl();
  62064. init_hyperlinkCtrl();
  62065. init_select();
  62066. init_filter();
  62067. init_get();
  62068. init_store();
  62069. refreshCanvasTimeOut = null;
  62070. }
  62071. });
  62072. // src/controllers/imageUpdateCtrl.js
  62073. function customImageUpdate(method2, url, obj) {
  62074. return new Promise((resolve, reject) => {
  62075. const xhr = new XMLHttpRequest() || new ActiveXObject("Microsoft.XMLHTTP");
  62076. xhr.open(method2, url);
  62077. xhr.send(JSON.stringify(obj));
  62078. xhr.onreadystatechange = function() {
  62079. if (xhr.readyState == 4) {
  62080. if (xhr.status == 200) {
  62081. resolve(xhr.responseText);
  62082. } else {
  62083. reject("error");
  62084. }
  62085. }
  62086. };
  62087. });
  62088. }
  62089. var init_imageUpdateCtrl = __esm({
  62090. "src/controllers/imageUpdateCtrl.js"() {
  62091. }
  62092. });
  62093. // src/controllers/server.js
  62094. var import_pako, import_dayjs3, server, server_default;
  62095. var init_server = __esm({
  62096. "src/controllers/server.js"() {
  62097. import_pako = __toModule(require_pako());
  62098. init_loading();
  62099. init_refresh();
  62100. init_editor();
  62101. init_constant();
  62102. init_sheetmanage();
  62103. init_menuButton();
  62104. init_filter();
  62105. init_freezen();
  62106. init_postil();
  62107. init_imageCtrl();
  62108. init_dataVerificationCtrl();
  62109. init_hyperlinkCtrl();
  62110. init_util();
  62111. init_get();
  62112. init_store();
  62113. init_select();
  62114. init_locale();
  62115. import_dayjs3 = __toModule(require_dayjs_min());
  62116. init_json();
  62117. init_luckysheetConfigsetting();
  62118. init_imageUpdateCtrl();
  62119. init_method();
  62120. server = {
  62121. gridKey: null,
  62122. loadUrl: null,
  62123. updateUrl: null,
  62124. updateImageUrl: null,
  62125. title: null,
  62126. loadSheetUrl: null,
  62127. retryTimer: null,
  62128. allowUpdate: false,
  62129. historyParam: function(data, sheetIndex, range2) {
  62130. let _this = this;
  62131. let r1 = range2.row[0], r2 = range2.row[1];
  62132. let c1 = range2.column[0], c2 = range2.column[1];
  62133. if (r1 == r2 && c1 == c2) {
  62134. let v = data[r1][c1];
  62135. _this.saveParam("v", sheetIndex, v, {"r": r1, "c": c1});
  62136. } else {
  62137. let rowlen = r2 - r1 + 1;
  62138. let collen = c2 - c1 + 1;
  62139. let timeR = Math.floor(1e3 / collen);
  62140. let n = Math.ceil(rowlen / timeR);
  62141. for (let i2 = 0; i2 < n; i2++) {
  62142. let str = r1 + timeR * i2;
  62143. let edr;
  62144. if (i2 == n - 1) {
  62145. edr = r2;
  62146. } else {
  62147. edr = r1 + timeR * (i2 + 1) - 1;
  62148. }
  62149. let v = [];
  62150. for (let r3 = str; r3 <= edr; r3++) {
  62151. let v_row = [];
  62152. for (let c3 = c1; c3 <= c2; c3++) {
  62153. if (data[r3] == null) {
  62154. v_row.push(null);
  62155. } else {
  62156. v_row.push(data[r3][c3]);
  62157. }
  62158. }
  62159. v.push(v_row);
  62160. }
  62161. _this.saveParam("rv", sheetIndex, v, {"range": {"row": [str, edr], "column": [c1, c2]}});
  62162. if (i2 == n - 1) {
  62163. _this.saveParam("rv_end", sheetIndex, null);
  62164. }
  62165. }
  62166. }
  62167. },
  62168. saveParam: function(type, index2, value, params) {
  62169. let _this = this;
  62170. if (!_this.allowUpdate) {
  62171. return;
  62172. }
  62173. if (value == void 0) {
  62174. value = null;
  62175. }
  62176. let d = {};
  62177. d.t = type;
  62178. d.i = index2;
  62179. d.v = value;
  62180. if (type === "shs") {
  62181. return;
  62182. }
  62183. if (type == "rv") {
  62184. d.range = params.range;
  62185. } else if (type == "v" || type == "fu" || type == "fm") {
  62186. d.r = params.r;
  62187. d.c = params.c;
  62188. } else if (type == "fc") {
  62189. d.op = params.op;
  62190. d.pos = params.pos;
  62191. } else if (type == "drc" || type == "arc" || type == "h" || type == "wh") {
  62192. d.rc = params.rc;
  62193. } else if (type == "c") {
  62194. d.cid = params.cid;
  62195. d.op = params.op;
  62196. } else if (type == "f") {
  62197. d.op = params.op;
  62198. d.pos = params.pos;
  62199. } else if (type == "s") {
  62200. } else if (type == "sh") {
  62201. d.op = params.op;
  62202. if (params.cur != null) {
  62203. d.cur = params.cur;
  62204. }
  62205. } else if (type == "cg") {
  62206. d.k = params.k;
  62207. } else if (type == "all") {
  62208. d.k = params.k;
  62209. }
  62210. const customImageUpdateMethodConfig = luckysheetConfigsetting_default.imageUpdateMethodConfig;
  62211. if (JSON.stringify(customImageUpdateMethodConfig) !== "{}") {
  62212. if (d.k != "images") {
  62213. let msg = import_pako.default.gzip(encodeURIComponent(JSON.stringify(d)), {to: "string"});
  62214. if (_this.websocket != null) {
  62215. _this.websocket.send(msg);
  62216. }
  62217. } else {
  62218. customImageUpdate(customImageUpdateMethodConfig.method, customImageUpdateMethodConfig.url, d).then((data) => {
  62219. console.log(data);
  62220. }).catch((err) => {
  62221. console.log(err);
  62222. });
  62223. }
  62224. } else {
  62225. let msg = import_pako.default.gzip(encodeURIComponent(JSON.stringify(d)), {to: "string"});
  62226. if (_this.websocket != null) {
  62227. _this.websocket.send(msg);
  62228. }
  62229. }
  62230. },
  62231. websocket: null,
  62232. wxErrorCount: 0,
  62233. openWebSocket: function() {
  62234. let _this = this;
  62235. if ("WebSocket" in window) {
  62236. let wxUrl = _this.updateUrl + "?t=111&g=" + encodeURIComponent(_this.gridKey);
  62237. if (_this.updateUrl.indexOf("?") > -1) {
  62238. wxUrl = _this.updateUrl + "&t=111&g=" + encodeURIComponent(_this.gridKey);
  62239. }
  62240. _this.websocket = new WebSocket(wxUrl);
  62241. _this.websocket.onopen = function() {
  62242. console.info(locale_default().websocket.success);
  62243. hideloading();
  62244. _this.wxErrorCount = 0;
  62245. _this.retryTimer = setInterval(function() {
  62246. _this.websocket.send("rub");
  62247. }, 6e4);
  62248. };
  62249. _this.websocket.onmessage = function(result) {
  62250. store_default.result = result;
  62251. let data = new Function("return " + result.data)();
  62252. method_default.createHookFunction("cooperativeMessage", data);
  62253. console.info(data);
  62254. let type = data.type;
  62255. let {message, id} = data;
  62256. if (message === "\u7528\u6237\u9000\u51FA") {
  62257. $("#luckysheet-multipleRange-show-" + id).hide();
  62258. store_default.cooperativeEdit.changeCollaborationSize = store_default.cooperativeEdit.changeCollaborationSize.filter((value) => {
  62259. return value.id != id;
  62260. });
  62261. store_default.cooperativeEdit.checkoutData = store_default.cooperativeEdit.checkoutData.filter((value) => {
  62262. return value.id != id;
  62263. });
  62264. }
  62265. if (type == 1) {
  62266. const oldIndex = data.data.v.index;
  62267. const sheetToUpdate = store_default.luckysheetfile.filter((sheet) => sheet.index === oldIndex)[0];
  62268. if (sheetToUpdate !== null) {
  62269. setTimeout(() => {
  62270. const index2 = data.data.i;
  62271. sheetToUpdate.index = index2;
  62272. store_default.currentSheetIndex = index2;
  62273. $(`#luckysheet-sheets-item${oldIndex}`).attr("data-index", index2);
  62274. $(`#luckysheet-sheets-item${oldIndex}`).prop("id", `luckysheet-sheets-item${index2}`);
  62275. $(`#luckysheet-datavisual-selection-set-${oldIndex}`).prop("id", `luckysheet-datavisual-selection-set-${index2}`);
  62276. }, 1);
  62277. }
  62278. } else if (type == 2) {
  62279. let item2 = JSON.parse(data.data);
  62280. _this.wsUpdateMsg(item2);
  62281. let chang_data = JSON.parse(data.data);
  62282. if (chang_data.k == "columnlen") {
  62283. collaborativeEditBox(chang_data.v, null);
  62284. } else if (chang_data.k == "rowlen") {
  62285. collaborativeEditBox(null, chang_data.v);
  62286. }
  62287. } else if (type == 3) {
  62288. let id2 = data.id;
  62289. let username = data.username;
  62290. let item2 = JSON.parse(data.data);
  62291. let type2 = item2.t, index2 = item2.i, value = item2.v;
  62292. if (store_default.cooperativeEdit.changeCollaborationSize.length === 0) {
  62293. store_default.cooperativeEdit.changeCollaborationSize.push({id: id2, v: item2.v[0], i: index2});
  62294. }
  62295. let flag = store_default.cooperativeEdit.changeCollaborationSize.some((value1) => {
  62296. return value1.id == id2;
  62297. });
  62298. if (flag) {
  62299. store_default.cooperativeEdit.changeCollaborationSize.forEach((val) => {
  62300. if (val.id == id2) {
  62301. val.v = item2.v[0] || item2.range[0];
  62302. val.i = index2;
  62303. }
  62304. });
  62305. } else {
  62306. store_default.cooperativeEdit.changeCollaborationSize.push({id: id2, v: item2.v[0], i: index2});
  62307. }
  62308. if (getObjType(value) != "array" && getObjType(value) !== "object") {
  62309. value = JSON.parse(value);
  62310. }
  62311. let r2 = 0;
  62312. let c2 = 0;
  62313. if (index2 == store_default.currentSheetIndex) {
  62314. if (getObjType(value) === "object" && value.op === "enterEdit") {
  62315. r2 = value.range[value.range.length - 1].row[0];
  62316. c2 = value.range[value.range.length - 1].column[0];
  62317. _this.multipleRangeShow(id2, username, r2, c2, value.op);
  62318. } else {
  62319. r2 = value[value.length - 1].row[0];
  62320. c2 = value[value.length - 1].column[0];
  62321. _this.multipleRangeShow(id2, username, r2, c2);
  62322. }
  62323. } else {
  62324. if (getObjType(value) === "object" && value.op === "enterEdit") {
  62325. r2 = value.range[value.range.length - 1].row[0];
  62326. c2 = value.range[value.range.length - 1].column[0];
  62327. } else {
  62328. r2 = value[value.length - 1].row[0];
  62329. c2 = value[value.length - 1].column[0];
  62330. }
  62331. }
  62332. if (store_default.cooperativeEdit.checkoutData.length === 0) {
  62333. if (value.op) {
  62334. store_default.cooperativeEdit.checkoutData.push({id: id2, username, r: r2, c: c2, op: value.op, index: index2});
  62335. } else {
  62336. store_default.cooperativeEdit.checkoutData.push({id: id2, username, r: r2, c: c2, index: index2});
  62337. }
  62338. }
  62339. let checkoutFlag = store_default.cooperativeEdit.checkoutData.some((item3) => {
  62340. return item3.id == id2;
  62341. });
  62342. if (checkoutFlag) {
  62343. store_default.cooperativeEdit.checkoutData.forEach((item3) => {
  62344. if (item3.id == id2) {
  62345. item3.username = username;
  62346. item3.r = r2;
  62347. item3.c = c2;
  62348. item3.index = index2;
  62349. if (value.op === "enterEdit") {
  62350. item3.op = value.op;
  62351. }
  62352. }
  62353. });
  62354. } else {
  62355. if (value.op === "enterEdit") {
  62356. store_default.cooperativeEdit.checkoutData.push({id: id2, username, r: r2, c: c2, op: value.op, index: index2});
  62357. } else {
  62358. store_default.cooperativeEdit.checkoutData.push({id: id2, username, r: r2, c: c2, index: index2});
  62359. }
  62360. }
  62361. store_default.cooperativeEdit.checkoutData.forEach((item3) => {
  62362. if (item3.index != store_default.currentSheetIndex) {
  62363. $("#luckysheet-multipleRange-show-" + item3.id).hide();
  62364. item3.op == "";
  62365. }
  62366. });
  62367. if ($("#luckysheet-multipleRange-show-" + id2)[0]) {
  62368. let change_bottom = $("#luckysheet-multipleRange-show-" + id2)[0].offsetHeight - 1;
  62369. $("#luckysheet-multipleRange-show-" + id2 + ">.username").css({"bottom": change_bottom + "px"});
  62370. }
  62371. } else if (type == 4) {
  62372. let items = data.data === "" ? data.data : JSON.parse(data.data);
  62373. for (let i2 = 0; i2 < items.length; i2++) {
  62374. _this.wsUpdateMsg(item[i2]);
  62375. }
  62376. } else if (type == 5) {
  62377. showloading(data.data);
  62378. } else if (type == 6) {
  62379. hideloading();
  62380. }
  62381. };
  62382. _this.websocket.onerror = function() {
  62383. _this.wxErrorCount++;
  62384. if (_this.wxErrorCount > 3) {
  62385. showloading(locale_default().websocket.refresh);
  62386. } else {
  62387. showloading(locale_default().websocket.wait);
  62388. _this.openWebSocket();
  62389. }
  62390. };
  62391. _this.websocket.onclose = function(e) {
  62392. console.info(locale_default().websocket.close);
  62393. if (e.code === 1e3) {
  62394. clearInterval(_this.retryTimer);
  62395. _this.retryTimer = null;
  62396. } else {
  62397. alert(locale_default().websocket.contact);
  62398. }
  62399. };
  62400. } else {
  62401. alert(locale_default().websocket.support);
  62402. }
  62403. },
  62404. wsUpdateMsg: function(item2) {
  62405. let type = item2.t, index2 = item2.i, value = item2.v;
  62406. let file = store_default.luckysheetfile[getSheetIndex(index2)];
  62407. if (["v", "rv", "cg", "all", "fc", "drc", "arc", "f", "fsc", "fsr", "sh", "c"].includes(type) && file == null) {
  62408. return;
  62409. }
  62410. if (type == "v") {
  62411. if (file.data == null || file.data.length == 0) {
  62412. return;
  62413. }
  62414. let r2 = item2.r, c2 = item2.c;
  62415. file.data[r2][c2] = value;
  62416. if (index2 == store_default.currentSheetIndex) {
  62417. store_default.flowdata = file.data;
  62418. editor_default.webWorkerFlowDataCache(store_default.flowdata);
  62419. if (value != null && value.ps != null) {
  62420. postil_default.buildPs(r2, c2, value.ps);
  62421. } else {
  62422. postil_default.buildPs(r2, c2, null);
  62423. }
  62424. setTimeout(function() {
  62425. luckysheetrefreshgrid();
  62426. }, 1);
  62427. }
  62428. } else if (type == "rv") {
  62429. if (Object.keys(item2.range).length > 0) {
  62430. store_default.cooperativeEdit.merge_range = item2.range;
  62431. store_default.cooperativeEdit.merge_range.v = item2.v;
  62432. collaborativeEditBox();
  62433. }
  62434. if (file.data == null || file.data.length == 0) {
  62435. return;
  62436. }
  62437. let r1 = item2.range.row[0], r2 = item2.range.row[1];
  62438. let c1 = item2.range.column[0], c2 = item2.range.column[1];
  62439. for (let r3 = r1; r3 <= r2; r3++) {
  62440. for (let c3 = c1; c3 <= c2; c3++) {
  62441. file.data[r3][c3] = value[r3 - r1][c3 - c1];
  62442. }
  62443. }
  62444. if (index2 == store_default.currentSheetIndex) {
  62445. store_default.flowdata = file.data;
  62446. editor_default.webWorkerFlowDataCache(store_default.flowdata);
  62447. for (let r3 = r1; r3 <= r2; r3++) {
  62448. for (let c3 = c1; c3 <= c2; c3++) {
  62449. if (value[r3 - r1][c3 - c1] != null && value[r3 - r1][c3 - c1].ps != null) {
  62450. postil_default.buildPs(r3, c3, value[r3 - r1][c3 - c1].ps);
  62451. } else {
  62452. postil_default.buildPs(r3, c3, null);
  62453. }
  62454. }
  62455. }
  62456. setTimeout(function() {
  62457. luckysheetrefreshgrid();
  62458. }, 1);
  62459. }
  62460. } else if (type == "cg") {
  62461. let k = item2.k;
  62462. if (k == "borderInfo") {
  62463. file["config"]["borderInfo"] = value;
  62464. } else {
  62465. if (!(k in file["config"])) {
  62466. file["config"][k] = {};
  62467. }
  62468. if (value && typeof value == "object") {
  62469. file["config"][k] = value;
  62470. }
  62471. }
  62472. if (index2 == store_default.currentSheetIndex) {
  62473. store_default.config = file["config"];
  62474. if (k == "rowlen" || k == "columnlen" || k == "rowhidden") {
  62475. jfrefreshgrid_rhcw(store_default.flowdata.length, store_default.flowdata[0].length);
  62476. }
  62477. setTimeout(function() {
  62478. luckysheetrefreshgrid();
  62479. }, 1);
  62480. }
  62481. } else if (type == "all") {
  62482. let k = item2.k;
  62483. file[k] = value;
  62484. if (k == "name") {
  62485. $("#luckysheet-sheet-container-c #luckysheet-sheets-item" + index2).find("span.luckysheet-sheets-item-name").html(value);
  62486. } else if (k == "color") {
  62487. let currentSheetItem = $("#luckysheet-sheet-container-c #luckysheet-sheets-item" + index2);
  62488. currentSheetItem.find(".luckysheet-sheets-item-color").remove();
  62489. if (value != null || value != "") {
  62490. currentSheetItem.append('<div class="luckysheet-sheets-item-color" style=" position: absolute; width: 100%; height: 3px; bottom: 0px; left: 0px; background-color: ' + value + ';"></div>');
  62491. }
  62492. } else if (k == "pivotTable") {
  62493. } else if (k == "frozen") {
  62494. freezen_default.frozenTofreezen();
  62495. if (index2 == store_default.currentSheetIndex) {
  62496. const _locale = locale_default();
  62497. const locale_freezen = _locale.freezen;
  62498. if (file["freezen"].horizontal == null) {
  62499. $("#luckysheet-freezen-btn-horizontal").html('<i class="fa fa-list-alt"></i> ' + locale_freezen.freezenRow);
  62500. freezen_default.freezenhorizontaldata = null;
  62501. $("#luckysheet-freezebar-horizontal").hide();
  62502. } else {
  62503. freezen_default.createFreezenHorizontal(file["freezen"].horizontal.freezenhorizontaldata, file["freezen"].horizontal.top);
  62504. }
  62505. if (file["freezen"].vertical == null) {
  62506. $("#luckysheet-freezen-btn-vertical").html('<i class="fa fa-indent"></i> ' + locale_freezen.freezenColumn);
  62507. freezen_default.freezenverticaldata = null;
  62508. $("#luckysheet-freezebar-vertical").hide();
  62509. } else {
  62510. freezen_default.createFreezenVertical(file["freezen"].vertical.freezenverticaldata, file["freezen"].vertical.left);
  62511. }
  62512. freezen_default.createAssistCanvas();
  62513. }
  62514. } else if (k == "filter_select") {
  62515. if (index2 == store_default.currentSheetIndex) {
  62516. createFilterOptions(value);
  62517. }
  62518. } else if (k == "filter") {
  62519. if (index2 == store_default.currentSheetIndex) {
  62520. createFilterOptions(file.filter_select, value);
  62521. }
  62522. } else if (k == "luckysheet_conditionformat_save") {
  62523. if (index2 == store_default.currentSheetIndex) {
  62524. setTimeout(function() {
  62525. luckysheetrefreshgrid();
  62526. }, 1);
  62527. }
  62528. } else if (k == "luckysheet_alternateformat_save") {
  62529. if (index2 == store_default.currentSheetIndex) {
  62530. setTimeout(function() {
  62531. luckysheetrefreshgrid();
  62532. }, 1);
  62533. }
  62534. } else if (k == "config") {
  62535. if (index2 == store_default.currentSheetIndex) {
  62536. store_default.config = value;
  62537. jfrefreshgrid_rhcw(store_default.flowdata.length, store_default.flowdata[0].length);
  62538. }
  62539. } else if (k == "dynamicArray") {
  62540. if (index2 == store_default.currentSheetIndex) {
  62541. setTimeout(function() {
  62542. luckysheetrefreshgrid();
  62543. }, 1);
  62544. }
  62545. } else if (k == "images") {
  62546. if (index2 == store_default.currentSheetIndex) {
  62547. imageCtrl_default.images = value;
  62548. imageCtrl_default.allImagesShow();
  62549. imageCtrl_default.init();
  62550. }
  62551. } else if (k == "dataVerification") {
  62552. if (index2 == store_default.currentSheetIndex) {
  62553. dataVerificationCtrl_default.dataVerification = value;
  62554. dataVerificationCtrl_default.init();
  62555. }
  62556. } else if (k == "hyperlink") {
  62557. if (index2 == store_default.currentSheetIndex) {
  62558. hyperlinkCtrl_default.hyperlink = value;
  62559. hyperlinkCtrl_default.init();
  62560. }
  62561. }
  62562. } else if (type == "fc") {
  62563. let op = item2.op, pos = item2.pos;
  62564. if (getObjType(value) != "object") {
  62565. value = new Function("return " + value)();
  62566. }
  62567. let r2 = value.r, c2 = value.c;
  62568. let calcChain = file["calcChain"] == null ? [] : file["calcChain"];
  62569. if (op == "add") {
  62570. calcChain.push(value);
  62571. } else if (op == "del") {
  62572. for (let a = 0; a < calcChain.length; a++) {
  62573. if (r2 == calcChain[a].r && c2 == calcChain[a].c && index2 == calcChain[a].index) {
  62574. calcChain.splice(a, 1);
  62575. }
  62576. }
  62577. }
  62578. setTimeout(function() {
  62579. luckysheetrefreshgrid();
  62580. }, 1);
  62581. } else if (type == "drc") {
  62582. if (file.data == null || file.data.length == 0) {
  62583. return;
  62584. }
  62585. let rc = item2.rc, st_i = value.index, len = value.len, mc = value.mc, borderInfo = value.borderInfo;
  62586. let data = file.data;
  62587. if (rc == "r") {
  62588. file["row"] -= len;
  62589. data.splice(st_i, len);
  62590. let row = [];
  62591. for (let c2 = 0; c2 < data[0].length; c2++) {
  62592. row.push(null);
  62593. }
  62594. for (let r2 = 0; r2 < len; r2++) {
  62595. data.push(row);
  62596. }
  62597. } else {
  62598. file["column"] -= len;
  62599. let addcol = [];
  62600. for (let r2 = 0; r2 < len; r2++) {
  62601. addcol.push(null);
  62602. }
  62603. for (let i2 = 0; i2 < data.length; i2++) {
  62604. data[i2].splice(st_i, len);
  62605. data[i2] = data[i2].concat(addcol);
  62606. }
  62607. }
  62608. for (let x in mc) {
  62609. let r2 = mc[x].r, c2 = mc[x].c;
  62610. data[r2][c2].mc = mc[x];
  62611. }
  62612. file["config"].merge = mc;
  62613. file["config"].borderInfo = borderInfo;
  62614. if (index2 == store_default.currentSheetIndex) {
  62615. store_default.flowdata = data;
  62616. editor_default.webWorkerFlowDataCache(store_default.flowdata);
  62617. store_default.config["merge"] = mc;
  62618. store_default.config["borderInfo"] = borderInfo;
  62619. setTimeout(function() {
  62620. luckysheetrefreshgrid();
  62621. }, 1);
  62622. }
  62623. } else if (type == "arc") {
  62624. if (file.data == null || file.data.length == 0) {
  62625. return;
  62626. }
  62627. let rc = item2.rc, st_i = value.index, len = value.len, addData = value.data, direction = value.direction, mc = value.mc, borderInfo = value.borderInfo;
  62628. let data = $.extend(true, [], file.data);
  62629. if (rc == "r") {
  62630. file["row"] += len;
  62631. let row = [];
  62632. for (let c2 = 0; c2 < data[0].length; c2++) {
  62633. row.push(null);
  62634. }
  62635. let arr = [];
  62636. for (let i2 = 0; i2 < len; i2++) {
  62637. if (addData[i2] == null) {
  62638. arr.push(JSON.stringify(row));
  62639. } else {
  62640. arr.push(JSON.stringify(addData[i2]));
  62641. }
  62642. }
  62643. if (direction == "lefttop") {
  62644. if (st_i == 0) {
  62645. new Function("data", "return data.unshift(" + arr.join(",") + ")")(data);
  62646. } else {
  62647. new Function("data", "return data.splice(" + st_i + ", 0, " + arr.join(",") + ")")(data);
  62648. }
  62649. } else {
  62650. new Function("data", "return data.splice(" + (st_i + 1) + ", 0, " + arr.join(",") + ")")(data);
  62651. }
  62652. } else {
  62653. file["column"] += len;
  62654. for (let i2 = 0; i2 < data.length; i2++) {
  62655. for (let j = 0; j < len; j++) {
  62656. if (direction == "lefttop") {
  62657. data[i2].splice(st_i, 0, addData[j]);
  62658. } else {
  62659. data[i2].splice(st_i + 1, 0, addData[j]);
  62660. }
  62661. }
  62662. }
  62663. }
  62664. for (let x in mc) {
  62665. let r2 = mc[x].r, c2 = mc[x].c;
  62666. data[r2][c2].mc = mc[x];
  62667. }
  62668. file.data = data;
  62669. file["config"].merge = mc;
  62670. file["config"].borderInfo = borderInfo;
  62671. if (index2 == store_default.currentSheetIndex) {
  62672. store_default.flowdata = data;
  62673. editor_default.webWorkerFlowDataCache(store_default.flowdata);
  62674. store_default.config["merge"] = mc;
  62675. store_default.config["borderInfo"] = borderInfo;
  62676. setTimeout(function() {
  62677. luckysheetrefreshgrid();
  62678. }, 1);
  62679. }
  62680. } else if (type == "f") {
  62681. let op = item2.op, pos = item2.pos;
  62682. let filter = file.filter;
  62683. if (filter == null) {
  62684. filter = {};
  62685. }
  62686. if (op == "upOrAdd") {
  62687. filter[pos] = value;
  62688. } else if (op == "del") {
  62689. delete filter[pos];
  62690. }
  62691. if (index2 == store_default.currentSheetIndex) {
  62692. createFilterOptions(file.filter_select, filter);
  62693. }
  62694. } else if (type == "fsc") {
  62695. file.filter = null;
  62696. file.filter_select = null;
  62697. if (index2 == store_default.currentSheetIndex) {
  62698. $("#luckysheet-filter-selected-sheet" + store_default.currentSheetIndex + ", #luckysheet-filter-options-sheet" + store_default.currentSheetIndex).remove();
  62699. $("#luckysheet-filter-menu, #luckysheet-filter-submenu").hide();
  62700. }
  62701. } else if (type == "fsr") {
  62702. file.filter = value.filter;
  62703. file.filter_select = value.filter_select;
  62704. if (index2 == store_default.currentSheetIndex) {
  62705. createFilterOptions(file.filter_select, file.filter);
  62706. }
  62707. } else if (type == "sha") {
  62708. store_default.luckysheetfile.push(value);
  62709. let colorset = "";
  62710. if (value.color != null) {
  62711. colorset = '<div class="luckysheet-sheets-item-color" style=" position: absolute; width: 100%; height: 3px; bottom: 0px; left: 0px; background-color: ' + value.color + ';"></div>';
  62712. }
  62713. $("#luckysheet-sheet-container-c").append(replaceHtml(sheetHTML, {"index": value.index, "active": "", "name": value.name, "style": "", "colorset": colorset}));
  62714. $("#luckysheet-cell-main").append('<div id="luckysheet-datavisual-selection-set-' + value.index + '" class="luckysheet-datavisual-selection-set"></div>');
  62715. sheetmanage_default.locationSheet();
  62716. } else if (type == "shc") {
  62717. let copyindex = value.copyindex, name2 = value.name;
  62718. let copyarrindex = getSheetIndex(copyindex);
  62719. let copyjson = $.extend(true, {}, store_default.luckysheetfile[copyarrindex]);
  62720. copyjson.index = index2;
  62721. copyjson.name = name2;
  62722. store_default.luckysheetfile.splice(copyarrindex + 1, 0, copyjson);
  62723. let copyobject = $("#luckysheet-sheets-item" + copyindex);
  62724. $("#luckysheet-sheet-container-c").append(replaceHtml(sheetHTML, {"index": copyjson.index, "active": "", "name": copyjson.name, "style": "", "colorset": ""}));
  62725. $("#luckysheet-sheets-item" + copyjson.index).insertAfter(copyobject);
  62726. $("#luckysheet-cell-main").append('<div id="luckysheet-datavisual-selection-set-' + copyjson.index + '" class="luckysheet-datavisual-selection-set"></div>');
  62727. } else if (type == "shd") {
  62728. for (let i2 = 0; i2 < store_default.luckysheetfile.length; i2++) {
  62729. if (store_default.luckysheetfile[i2].index == value.deleIndex) {
  62730. if (store_default.currentSheetIndex === value.deleIndex) {
  62731. const index3 = value.deleIndex;
  62732. store_default.luckysheetfile[sheetmanage_default.getSheetIndex(index3)].hide = 1;
  62733. let luckysheetcurrentSheetitem2 = $("#luckysheet-sheets-item" + index3);
  62734. luckysheetcurrentSheetitem2.hide();
  62735. $("#luckysheet-sheet-area div.luckysheet-sheets-item").removeClass("luckysheet-sheets-item-active");
  62736. let indicator = luckysheetcurrentSheetitem2.nextAll(":visible");
  62737. if (luckysheetcurrentSheetitem2.nextAll(":visible").length > 0) {
  62738. indicator = indicator.eq(0).data("index");
  62739. } else {
  62740. indicator = luckysheetcurrentSheetitem2.prevAll(":visible").eq(0).data("index");
  62741. }
  62742. $("#luckysheet-sheets-item" + indicator).addClass("luckysheet-sheets-item-active");
  62743. sheetmanage_default.changeSheetExec(indicator);
  62744. }
  62745. server.sheetDeleSave.push(store_default.luckysheetfile[i2]);
  62746. store_default.luckysheetfile.splice(i2, 1);
  62747. break;
  62748. }
  62749. }
  62750. $("#luckysheet-sheets-item" + value.deleIndex).remove();
  62751. $("#luckysheet-datavisual-selection-set-" + value.deleIndex).remove();
  62752. sheetmanage_default.locationSheet();
  62753. } else if (type == "shr") {
  62754. for (let x in value) {
  62755. store_default.luckysheetfile[getSheetIndex(x)].order = value[x];
  62756. }
  62757. } else if (type == "shre") {
  62758. for (let i2 = 0; i2 < server.sheetDeleSave.length; i2++) {
  62759. if (server.sheetDeleSave[i2].index == value.reIndex) {
  62760. let datav = server.sheetDeleSave[i2];
  62761. store_default.luckysheetfile.push(datav);
  62762. let colorset = "";
  62763. if (value.color != null) {
  62764. colorset = '<div class="luckysheet-sheets-item-color" style=" position: absolute; width: 100%; height: 3px; bottom: 0px; left: 0px; background-color: ' + datav.color + ';"></div>';
  62765. }
  62766. $("#luckysheet-sheet-container-c").append(replaceHtml(sheetHTML, {"index": datav.index, "active": "", "name": datav.name, "style": "", "colorset": colorset}));
  62767. $("#luckysheet-cell-main").append('<div id="luckysheet-datavisual-selection-set-' + datav.index + '" class="luckysheet-datavisual-selection-set"></div>');
  62768. break;
  62769. }
  62770. }
  62771. } else if (type == "sh") {
  62772. let op = item2.op, cur = item2.cur;
  62773. if (op == "hide") {
  62774. file.hide = 1;
  62775. $("#luckysheet-sheets-item" + index2).hide();
  62776. if (index2 == store_default.currentSheetIndex) {
  62777. $("#luckysheet-sheets-item" + cur).addClass("luckysheet-sheets-item-active");
  62778. sheetmanage_default.changeSheetExec(cur);
  62779. }
  62780. } else if (op == "show") {
  62781. file.hide = 0;
  62782. $("#luckysheet-sheets-item" + index2).show();
  62783. }
  62784. sheetmanage_default.locationSheet();
  62785. } else if (type == "c") {
  62786. let op = item2.op, cid = item2.cid;
  62787. if (op == "add") {
  62788. file.chart.push(value);
  62789. luckysheet.insertChartTosheet(value.sheetIndex, value.dataSheetIndex, value.option, value.chartType, value.selfOption, value.defaultOption, value.row, value.column, value.chart_selection_color, value.chart_id, value.chart_selection_id, value.chartStyle, value.rangeConfigCheck, value.rangeRowCheck, value.rangeColCheck, value.chartMarkConfig, value.chartTitleConfig, value.winWidth, value.winHeight, value.scrollLeft1, value.scrollTop1, value.chartTheme, value.myWidth, value.myHeight, value.myLeft, value.myTop, value.myindexrank1, true);
  62790. } else if (op == "xy" || op == "wh" || op == "update") {
  62791. for (let i2 = 0; i2 < file.chart.length; i2++) {
  62792. let chartjson = file.chart[i2];
  62793. if (chartjson.chart_id == cid) {
  62794. for (let item3 in chartjson) {
  62795. for (let vitem in value) {
  62796. if (item3 == vitem) {
  62797. chartjson[item3] = value[vitem];
  62798. }
  62799. }
  62800. }
  62801. sheetmanage_default.saveChart(chartjson);
  62802. return;
  62803. }
  62804. }
  62805. } else if (op == "del") {
  62806. for (let i2 = 0; i2 < file.chart.length; i2++) {
  62807. let chartjson = file.chart[i2];
  62808. if (chartjson.chart_id == cid) {
  62809. file.chart.splice(i2, 1);
  62810. $("#" + cid).remove();
  62811. sheetmanage_default.delChart($("#" + cid).attr("chart_id"), $("#" + cid).attr("sheetIndex"));
  62812. return;
  62813. }
  62814. }
  62815. }
  62816. } else if (type == "na") {
  62817. $("#luckysheet_info_detail_input").val(value).css("width", getByteLen(value) * 10);
  62818. }
  62819. },
  62820. multipleIndex: 0,
  62821. multipleRangeShow: function(id, name2, r2, c2, value) {
  62822. let _this = this;
  62823. const fullName = name2;
  62824. let row = store_default.visibledatarow[r2], row_pre = r2 - 1 == -1 ? 0 : store_default.visibledatarow[r2 - 1], col = store_default.visibledatacolumn[c2], col_pre = c2 - 1 == -1 ? 0 : store_default.visibledatacolumn[c2 - 1];
  62825. let margeset = menuButton_default.mergeborer(store_default.flowdata, r2, c2);
  62826. if (!!margeset) {
  62827. row = margeset.row[1];
  62828. row_pre = margeset.row[0];
  62829. col = margeset.column[1];
  62830. col_pre = margeset.column[0];
  62831. }
  62832. if (col_pre <= 0) {
  62833. col_pre += 1;
  62834. }
  62835. if (row_pre <= 0) {
  62836. row_pre += 1;
  62837. }
  62838. if (getByteLen(name2) > 16) {
  62839. name2 = getByteLen(name2, 16) + "...";
  62840. }
  62841. if (value === "enterEdit") {
  62842. name2 += " " + locale_default().edit.typing;
  62843. }
  62844. if ($("#luckysheet-multipleRange-show-" + id).length > 0) {
  62845. $("#luckysheet-multipleRange-show-" + id).css({"position": "absolute", "left": col_pre - 1, "width": col - col_pre - 1, "top": row_pre - 1, "height": row - row_pre - 1});
  62846. $("#luckysheet-multipleRange-show-" + id + " .username").text(name2);
  62847. $("#luckysheet-multipleRange-show-" + id + " .username").show();
  62848. if (store_default.cooperativeEdit.usernameTimeout["user" + id] != null) {
  62849. clearTimeout(store_default.cooperativeEdit.usernameTimeout["user" + id]);
  62850. }
  62851. store_default.cooperativeEdit.usernameTimeout["user" + id] = setTimeout(() => {
  62852. clearTimeout(store_default.cooperativeEdit.usernameTimeout["user" + id]);
  62853. store_default.cooperativeEdit.usernameTimeout["user" + id] = null;
  62854. }, 10 * 1e3);
  62855. } else {
  62856. let itemHtml = `<div
  62857. id="luckysheet-multipleRange-show-${id}"
  62858. class="luckysheet-multipleRange-show"
  62859. data-color="${luckyColor[_this.multipleIndex]}"
  62860. title="${fullName}"
  62861. style="position: absolute;left: ${col_pre - 1}px;width: ${col - col_pre - 1}px;top: ${row_pre - 1}px;height: ${row - row_pre - 1}px;border: 1px solid ${luckyColor[_this.multipleIndex]};z-index: 15;">
  62862. <div class="username" style="height: 19px;line-height:19px;width: max-content;position: absolute;bottom: ${row - row_pre - 1}px;right: 0;background-color: ${luckyColor[_this.multipleIndex]};color:#ffffff;padding:0 10px;">
  62863. ${name2}
  62864. </div>
  62865. <div style="width: 100%;height: 100%;position: absolute;top: 0;right: 0;bottom: 0;left: 0;opacity: 0.03;background-color: ${luckyColor[_this.multipleIndex]}">
  62866. </div>
  62867. </div>`;
  62868. $(itemHtml).appendTo($("#luckysheet-cell-main #luckysheet-multipleRange-show"));
  62869. _this.multipleIndex++;
  62870. if (store_default.cooperativeEdit.usernameTimeout["user" + id] != null) {
  62871. clearTimeout(store_default.cooperativeEdit.usernameTimeout["user" + id]);
  62872. }
  62873. store_default.cooperativeEdit.usernameTimeout["user" + id] = setTimeout(() => {
  62874. clearTimeout(store_default.cooperativeEdit.usernameTimeout["user" + id]);
  62875. store_default.cooperativeEdit.usernameTimeout["user" + id] = null;
  62876. }, 10 * 1e3);
  62877. }
  62878. },
  62879. sheetDeleSave: [],
  62880. submitInterval: 1e3,
  62881. imagesubmitInterval: 5e3,
  62882. submitdatalimit: 50,
  62883. submitcompresslimit: 1e3,
  62884. checksubmit: function(data) {
  62885. let _this = this;
  62886. _this.submitTimeout();
  62887. clearTimeout(_this.imageRequestTimeout);
  62888. _this.imageRequestTimeout = setTimeout(function() {
  62889. _this.imageRequest();
  62890. }, _this.imagesubmitInterval);
  62891. },
  62892. submitTimeout: function() {
  62893. let _this = this;
  62894. clearTimeout(_this.requestTimeOut);
  62895. if (!_this.requestLock && (_this.requestlast != null && _this.requestlast.clone().add(1, "seconds").isBefore((0, import_dayjs3.default)()))) {
  62896. _this.request();
  62897. }
  62898. _this.requestTimeOut = setTimeout(function() {
  62899. _this.submitTimeout();
  62900. }, _this.submitInterval);
  62901. },
  62902. requestLock: false,
  62903. requestlast: null,
  62904. firstchange: true,
  62905. requestTimeOut: null,
  62906. request: function() {
  62907. let _this = this;
  62908. let key = this.gridKey;
  62909. let cahce_key = key + "__qkcache";
  62910. _this.cachelocaldata(function(cahce_key2, params) {
  62911. if (params.length == 0) {
  62912. return;
  62913. }
  62914. params = encodeURIComponent(JSON.stringify(params));
  62915. let compressBeginLen = params.length;
  62916. let iscommpress = false;
  62917. _this.requestLock = true;
  62918. if (_this.updateUrl != "") {
  62919. $.post(_this.updateUrl, {compress: iscommpress, gridKey: _this.gridKey, data: params}, function(data) {
  62920. let re = new Function("return " + data)();
  62921. if (re.status) {
  62922. $("#luckysheet_info_detail_update").html("\u6700\u8FD1\u5B58\u6863\u65F6\u95F4:" + (0, import_dayjs3.default)().format("M-D H:m:s"));
  62923. $("#luckysheet_info_detail_save").html("\u540C\u6B65\u6210\u529F");
  62924. _this.clearcachelocaldata();
  62925. } else {
  62926. $("#luckysheet_info_detail_save").html("<span style='color:#ff2121'>\u540C\u6B65\u5931\u8D25</span>");
  62927. _this.restorecachelocaldata();
  62928. }
  62929. _this.requestlast = (0, import_dayjs3.default)();
  62930. _this.requestLock = false;
  62931. });
  62932. }
  62933. });
  62934. },
  62935. imageRequestLast: null,
  62936. imageRequestLock: false,
  62937. imageRequestTimeout: null,
  62938. imageRequest: function() {
  62939. let _this = this;
  62940. html2canvas($("#" + container).find(".luckysheet-grid-window").get(0), {
  62941. onrendered: function(canvas) {
  62942. let old = $(canvas).appendTo("body");
  62943. old.hide();
  62944. let newwidth = old.width();
  62945. let newheight = old.height();
  62946. let imageData = old.get(0).getContext("2d").getImageData(0, 0, newwidth, newheight);
  62947. let cutW = newwidth, cutH = newheight;
  62948. if (cutW * 0.54 > cutH) {
  62949. cutW = cutH / 0.54;
  62950. } else {
  62951. cutH = cutW * 0.54;
  62952. }
  62953. let newCanvas = $("<canvas>").attr("width", cutW).attr("height", cutH)[0];
  62954. newCanvas.getContext("2d").putImageData(imageData, 0, 0);
  62955. old.attr("width", 350);
  62956. old.attr("height", 189);
  62957. old.get(0).getContext("2d").drawImage(newCanvas, 0, 0, 350, 189);
  62958. let base64 = old.get(0).toDataURL("image/jpeg", 0.9);
  62959. let curindex = luckysheet.sheetmanage.getCurSheetnoset();
  62960. _this.imageRequestLock = true;
  62961. let data1 = encodeURIComponent(JSON.stringify({"t": "thumb", "img": base64, "curindex": curindex}));
  62962. old.remove();
  62963. if (_this.updateImageUrl != "") {
  62964. $.post(_this.updateImageUrl, {compress: false, gridKey: _this.gridKey, data: data1}, function(data) {
  62965. let re = new Function("return " + data)();
  62966. if (re.status) {
  62967. imageRequestLast = (0, import_dayjs3.default)();
  62968. } else {
  62969. $("#luckysheet_info_detail_save").html("<span style='color:#ff2121'>\u7F51\u7EDC\u4E0D\u7A33\u5B9A</span>");
  62970. }
  62971. _this.imageRequestLock = true;
  62972. });
  62973. }
  62974. }
  62975. });
  62976. },
  62977. localdata: [],
  62978. matchOpt: function(v, d) {
  62979. for (let vitem in v) {
  62980. if (vitem == "t" && v["t"] in {"drc": 1, "arc": 1, "sha": 1, "shc": 1, "shd": 1}) {
  62981. return false;
  62982. }
  62983. if (vitem == "v") {
  62984. continue;
  62985. }
  62986. if (!(vitem in d)) {
  62987. return false;
  62988. }
  62989. if (d[vitem] != v[vitem]) {
  62990. return false;
  62991. }
  62992. }
  62993. return true;
  62994. },
  62995. deleteRepeatOpt: function(data, value) {
  62996. let d = data;
  62997. let _this = this;
  62998. if (value instanceof Array) {
  62999. for (let i2 = 0; i2 < value.length; i2++) {
  63000. let vitem = value[i2];
  63001. for (let a = 0; a < d.length; a++) {
  63002. let ditem = data[i2];
  63003. if (_this.matchOpt(vitem, ditem)) {
  63004. delete d[a];
  63005. }
  63006. }
  63007. }
  63008. } else {
  63009. for (let a = 0; a < d.length; a++) {
  63010. let ditem = d[a];
  63011. if (_this.matchOpt(value, ditem)) {
  63012. delete d[a];
  63013. }
  63014. }
  63015. }
  63016. let ret = [];
  63017. for (let i2 = 0; i2 < d.length; i2++) {
  63018. if (d[i2] != null) {
  63019. ret.push(d[i2]);
  63020. }
  63021. }
  63022. return ret;
  63023. },
  63024. setlocaldata: function(value, func) {
  63025. let key = this.gridKey;
  63026. let _this = this;
  63027. _this.getlocaldata(function(data) {
  63028. if (data == null) {
  63029. data = [];
  63030. }
  63031. if (value instanceof Array) {
  63032. data = data.concat(value);
  63033. } else {
  63034. data.push(value);
  63035. }
  63036. _this.localdata = data;
  63037. func(_this.localdata);
  63038. });
  63039. },
  63040. getlocaldata: function(func) {
  63041. let key = this.gridKey;
  63042. func(this.localdata);
  63043. },
  63044. clearlocaldata: function(func) {
  63045. let key = this.gridKey;
  63046. this.localdata = [];
  63047. func();
  63048. },
  63049. cachelocaldata: function(func) {
  63050. let key = this.gridKey;
  63051. let _this = this;
  63052. let cahce_key = key + "__qkcache";
  63053. let updatedata = _this.localdata;
  63054. let uLen = updatedata.length;
  63055. if (uLen > 1) {
  63056. let prevData = [];
  63057. prevData[0] = updatedata[0];
  63058. for (let i2 = 1; i2 < uLen; i2++) {
  63059. let value = updatedata[i2];
  63060. let flag = true;
  63061. for (let a = 0; a < prevData.length; a++) {
  63062. let ditem = prevData[a];
  63063. if (_this.matchOpt(value, ditem)) {
  63064. prevData.splice(a, 1, value);
  63065. flag = false;
  63066. break;
  63067. }
  63068. }
  63069. if (flag) {
  63070. prevData = prevData.concat(value);
  63071. }
  63072. }
  63073. updatedata = prevData;
  63074. }
  63075. if (updatedata == null || updatedata.length == 0) {
  63076. return;
  63077. }
  63078. _this.clearlocaldata(function() {
  63079. localforage.setItem(cahce_key, updatedata).then(function() {
  63080. func(cahce_key, updatedata);
  63081. });
  63082. });
  63083. },
  63084. clearcachelocaldata: function(func) {
  63085. let key = this.gridKey;
  63086. let cahce_key = key + "__qkcache";
  63087. localforage.removeItem(cahce_key, function(err, value) {
  63088. if (func && typeof func == "function") {
  63089. func();
  63090. }
  63091. });
  63092. },
  63093. restorecachelocaldata: function(func) {
  63094. let key = this.gridKey;
  63095. let cahce_key = key + "__qkcache";
  63096. let _this = this;
  63097. localforage.getItem(cahce_key).then(function(readValue) {
  63098. let updatedata = readValue;
  63099. _this.getlocaldata(function(data) {
  63100. if (data == null) {
  63101. data = [];
  63102. }
  63103. let newdata = updatedata.concat(data);
  63104. _this.localdata = newdata;
  63105. if (func instanceof Function) {
  63106. func(_this.localdata);
  63107. }
  63108. });
  63109. });
  63110. },
  63111. keepHighLightBox: function() {
  63112. store_default.cooperativeEdit.checkoutData.forEach((value) => {
  63113. if (value.index == store_default.currentSheetIndex) {
  63114. if (value.op === "enterEdit") {
  63115. server.multipleRangeShow(value.id, value.username, value.r, value.c, value.op);
  63116. } else {
  63117. server.multipleRangeShow(value.id, value.username, value.r, value.c);
  63118. }
  63119. }
  63120. });
  63121. }
  63122. };
  63123. server_default = server;
  63124. }
  63125. });
  63126. // src/global/tooltip.js
  63127. var tooltip, tooltip_default;
  63128. var init_tooltip = __esm({
  63129. "src/global/tooltip.js"() {
  63130. init_constant();
  63131. init_browser();
  63132. init_util();
  63133. init_locale();
  63134. init_server();
  63135. tooltip = {
  63136. info: function(title, content) {
  63137. $("#luckysheet-modal-dialog-mask").show();
  63138. $("#luckysheet-info").remove();
  63139. let _locale = locale_default();
  63140. let locale_button = _locale.button;
  63141. $("body").append(replaceHtml(modelHTML, {
  63142. "id": "luckysheet-info",
  63143. "addclass": "",
  63144. "title": title,
  63145. "content": content,
  63146. "botton": '<button class="btn btn-default luckysheet-model-close-btn">&nbsp;&nbsp;' + locale_button.close + "&nbsp;&nbsp;</button>",
  63147. "style": "z-index:100003"
  63148. }));
  63149. let $t = $("#luckysheet-info").find(".luckysheet-modal-dialog-content").css("min-width", 300).end(), myh = $t.outerHeight(), myw = $t.outerWidth();
  63150. let winw = $(window).width(), winh = $(window).height();
  63151. let scrollLeft = $(document).scrollLeft(), scrollTop = $(document).scrollTop();
  63152. $("#luckysheet-info").css({"left": (winw + scrollLeft - myw) / 2, "top": (winh + scrollTop - myh) / 3}).show();
  63153. },
  63154. confirm: function(title, content, func1, func2, name1, name2) {
  63155. $("#luckysheet-modal-dialog-mask").show();
  63156. $("#luckysheet-confirm").remove();
  63157. const _locale = locale_default();
  63158. const locale_button = _locale.button;
  63159. if (name1 == null) {
  63160. name1 = locale_button.confirm;
  63161. }
  63162. if (name2 == null) {
  63163. name2 = locale_button.cancel;
  63164. }
  63165. $("body").append(replaceHtml(modelHTML, {
  63166. "id": "luckysheet-confirm",
  63167. "addclass": "",
  63168. "style": "z-index:100003",
  63169. "title": title,
  63170. "content": content,
  63171. "botton": '<button class="btn btn-primary luckysheet-model-conform-btn">&nbsp;&nbsp;' + name1 + '&nbsp;&nbsp;</button><button class="btn btn-default luckysheet-model-cancel-btn">&nbsp;&nbsp;' + name2 + "&nbsp;&nbsp;</button>"
  63172. }));
  63173. let $t = $("#luckysheet-confirm").find(".luckysheet-modal-dialog-content").css("min-width", 300).end(), myh = $t.outerHeight(), myw = $t.outerWidth();
  63174. let winw = $(window).width(), winh = $(window).height();
  63175. let scrollLeft = $(document).scrollLeft(), scrollTop = $(document).scrollTop();
  63176. $("#luckysheet-confirm").css({"left": (winw + scrollLeft - myw) / 2, "top": (winh + scrollTop - myh) / 3}).show();
  63177. $t.find(".luckysheet-model-conform-btn").click(function() {
  63178. if (typeof func1 == "function") {
  63179. func1();
  63180. }
  63181. server_default.keepHighLightBox();
  63182. $("#luckysheet-confirm").hide();
  63183. $("#luckysheet-modal-dialog-mask").hide();
  63184. });
  63185. $t.find(".luckysheet-model-cancel-btn").click(function() {
  63186. if (typeof func2 == "function") {
  63187. func2();
  63188. }
  63189. $("#luckysheet-confirm").hide();
  63190. $("#luckysheet-modal-dialog-mask").hide();
  63191. });
  63192. },
  63193. screenshot: function(title, content, imgurl) {
  63194. const _locale = locale_default();
  63195. const locale_screenshot = _locale.screenshot;
  63196. $("#luckysheet-modal-dialog-mask").show();
  63197. $("#luckysheet-confirm").remove();
  63198. $("body").append(replaceHtml(modelHTML, {
  63199. "id": "luckysheet-confirm",
  63200. "addclass": "",
  63201. "style": "z-index:100003",
  63202. "title": title,
  63203. "content": content,
  63204. "botton": '<a style="text-decoration:none;color:#fff;" class="download btn btn-primary luckysheet-model-conform-btn">&nbsp;&nbsp;' + locale_screenshot.downLoadBtn + '&nbsp;&nbsp;</a>&nbsp;&nbsp;<button class="btn btn-primary luckysheet-model-copy-btn">&nbsp;&nbsp;' + locale_screenshot.downLoadCopy + '&nbsp;&nbsp;</button><button class="btn btn-default luckysheet-model-cancel-btn">&nbsp;&nbsp;' + locale_screenshot.downLoadClose + "&nbsp;&nbsp;</button>"
  63205. }));
  63206. let $t = $("#luckysheet-confirm").find(".luckysheet-modal-dialog-content").css("min-width", 300).end(), myh = $t.outerHeight(), myw = $t.outerWidth();
  63207. let winw = $(window).width(), winh = $(window).height();
  63208. let scrollLeft = $(document).scrollLeft(), scrollTop = $(document).scrollTop();
  63209. $("#luckysheet-confirm").css({"left": (winw + scrollLeft - myw) / 2, "top": (winh + scrollTop - myh) / 3}).show();
  63210. $t.find(".luckysheet-model-conform-btn").click(function() {
  63211. if (browser_default.isIE() == "1") {
  63212. alert(locale_screenshot.browserNotTip);
  63213. } else {
  63214. if (!!window.ActiveXObject || "ActiveXObject" in window) {
  63215. if ($("#IframeReportImg").length === 0) {
  63216. $('<iframe style="display:none;" id="IframeReportImg" name="IframeReportImg" onload="downloadImg();" width="0" height="0" src="about:blank"></iframe>').appendTo("body");
  63217. }
  63218. if ($("#IframeReportImg").attr("src") != imgurl) {
  63219. $("#IframeReportImg").attr("src", imgurl);
  63220. } else {
  63221. if ($("#IframeReportImg").src != "about:blank") {
  63222. window.frames["IframeReportImg"].document.execCommand("SaveAs");
  63223. }
  63224. }
  63225. }
  63226. }
  63227. });
  63228. $t.find(".luckysheet-model-cancel-btn").click(function() {
  63229. $("#luckysheet-confirm").hide();
  63230. $("#luckysheet-modal-dialog-mask").hide();
  63231. });
  63232. $("#luckysheet-confirm .luckysheet-model-copy-btn").click(function() {
  63233. let dt = new clipboard.DT();
  63234. dt.setData("text/html", "<img src='" + imgurl + "'>");
  63235. if (browser_default.isIE() == "1") {
  63236. alert(locale_screenshot.rightclickTip);
  63237. } else {
  63238. clipboard.write(dt);
  63239. alert(locale_screenshot.successTip);
  63240. }
  63241. });
  63242. },
  63243. chartPointConfig: function(id, savefunc1, closefunc2) {
  63244. $("body").append(replaceHtml(modelHTML, {
  63245. "id": id,
  63246. "addclass": "luckysheet-chart-point-config-c",
  63247. "title": "\u6570\u636E\u70B9\u6279\u91CF\u8BBE\u7F6E",
  63248. "content": luckysheetchartpointconfigHTML,
  63249. "botton": '<button class="btn btn-danger luckysheet-model-save-btn">&nbsp;&nbsp;\u4FDD\u5B58\u8BBE\u7F6E&nbsp;&nbsp;</button><button class="btn btn-default luckysheet-model-close-btn">&nbsp;&nbsp;\u53D6\u6D88&nbsp;&nbsp;</button>',
  63250. "style": "z-index:100003;height:80%;width:80%;top:10%;left:10%;"
  63251. }));
  63252. $("#luckysheet-modal-dialog-mask").show();
  63253. let winw = $(window).width(), winh = $(window).height();
  63254. $("#" + id).find(".luckysheet-chart-point-config").css("height", winh - 160);
  63255. $("#" + id).css({
  63256. "height": winh - 90,
  63257. "width": winw - 100,
  63258. "left": 7,
  63259. "top": 14
  63260. }).show().find(".luckysheet-model-save-btn").click(function() {
  63261. if (typeof savefunc1 == "function") {
  63262. savefunc1();
  63263. }
  63264. $("#" + id).hide();
  63265. $("#luckysheet-modal-dialog-mask").hide();
  63266. });
  63267. $("#" + id).find(".luckysheet-model-save-btn").click(function() {
  63268. if (typeof closefunc2 == "function") {
  63269. closefunc2();
  63270. }
  63271. $("#" + id).hide();
  63272. $("#luckysheet-modal-dialog-mask").hide();
  63273. });
  63274. },
  63275. sheetConfig: function() {
  63276. },
  63277. hoverTipshowState: false,
  63278. hoverTipshowTimeOut: null,
  63279. createHoverTip: function(obj, to) {
  63280. let _this = this;
  63281. $(obj).on("mouseover", to, function(e) {
  63282. if (_this.hoverTipshowState) {
  63283. return;
  63284. }
  63285. clearTimeout(_this.hoverTipshowTimeOut);
  63286. _this.hoverTipshowTimeOut = setTimeout(function() {
  63287. let $t = $(e.currentTarget), toffset = $t.offset(), $toolup = $("#luckysheet-tooltip-up");
  63288. let tips = $t.data("tips");
  63289. if (tips == null || tips.length == 0) {
  63290. tips = $t.prev().data("tips");
  63291. if (tips == null || tips.length == 0) {
  63292. return;
  63293. }
  63294. }
  63295. if ($toolup.length == 0) {
  63296. $("body").append(luckysheetToolHTML);
  63297. $toolup = $("#luckysheet-tooltip-up");
  63298. }
  63299. $toolup.removeClass("jfk-tooltip-hide").find("div.jfk-tooltip-contentId").html(tips);
  63300. let toolwidth = $toolup.outerWidth();
  63301. $toolup.find("div.jfk-tooltip-arrow").css("left", toolwidth / 2);
  63302. let toolleft = toffset.left + ($t.outerWidth() - toolwidth) / 2;
  63303. if (toolleft < 2) {
  63304. toolleft = 2;
  63305. $toolup.find("div.jfk-tooltip-arrow").css("left", $t.outerWidth() / 2);
  63306. }
  63307. $toolup.css({"top": toffset.top + $t.outerHeight() + 1, "left": toolleft});
  63308. }, 300);
  63309. }).on("mouseout", to, function(e) {
  63310. _this.hoverTipshowState = false;
  63311. clearTimeout(_this.hoverTipshowTimeOut);
  63312. $("#luckysheet-tooltip-up").addClass("jfk-tooltip-hide");
  63313. }).on("click", to, function(e) {
  63314. _this.hoverTipshowState = true;
  63315. clearTimeout(_this.hoverTipshowTimeOut);
  63316. $("#luckysheet-tooltip-up").addClass("jfk-tooltip-hide");
  63317. });
  63318. },
  63319. popover: function(content, position, close, style, btntxt, exitsFuc) {
  63320. let _locale = locale_default();
  63321. let locale_button = _locale.button;
  63322. let locale_paint = _locale.paint;
  63323. if (btntxt == null) {
  63324. btntxt = locale_button.close;
  63325. }
  63326. let htmldiv = '<div id="luckysheetpopover" class="luckysheetpopover"><div class="luckysheetpopover-content">' + locale_paint.start + '</div><div class="luckysheetpopover-btn">' + btntxt + "</div></div>";
  63327. $("#luckysheetpopover").remove();
  63328. $("body").append(htmldiv);
  63329. $("#luckysheetpopover .luckysheetpopover-content").html(content);
  63330. let w = $("#luckysheetpopover").outerWidth(), h = $("#luckysheetpopover").outerHeight();
  63331. let pcss = {};
  63332. if (position == "topLeft") {
  63333. pcss.top = "20px";
  63334. pcss.left = "20px";
  63335. } else if (position == "topCenter") {
  63336. pcss.top = "20px";
  63337. pcss.left = "50%";
  63338. pcss["margin-left"] = -w / 2;
  63339. } else if (position == "topRight") {
  63340. pcss.top = "20px";
  63341. pcss.right = "20px";
  63342. } else if (position == "midLeft") {
  63343. pcss.top = "50%";
  63344. pcss["margin-top"] = -h / 2;
  63345. pcss.left = "20px";
  63346. } else if (position == "center") {
  63347. pcss.top = "50%";
  63348. pcss["margin-top"] = -h / 2;
  63349. pcss.left = "50%";
  63350. pcss["margin-left"] = -w / 2;
  63351. } else if (position == "midRight") {
  63352. pcss.top = "50%";
  63353. pcss["margin-top"] = -h / 2;
  63354. pcss.right = "20px";
  63355. } else if (position == "bottomLeft") {
  63356. pcss.bottom = "20px";
  63357. pcss.left = "20px";
  63358. } else if (position == "bottomCenter") {
  63359. pcss.bottom = "20px";
  63360. pcss.left = "50%";
  63361. pcss["margin-left"] = -w / 2;
  63362. } else if (position == "bottomRight") {
  63363. pcss.bottom = "20px";
  63364. pcss.right = "20px";
  63365. } else {
  63366. pcss.top = "20px";
  63367. pcss.left = "50%";
  63368. pcss["margin-left"] = -w / 2;
  63369. }
  63370. if (style == "white") {
  63371. pcss.background = "rgba(255, 255, 255, 0.65)";
  63372. pcss.color = "#000";
  63373. $("#luckysheetpopover .luckysheetpopover-btn").css({"border": "1px solid #000"});
  63374. }
  63375. setTimeout(function() {
  63376. $("#luckysheetpopover .luckysheetpopover-content").css({"margin-left": -$("#luckysheetpopover .luckysheetpopover-btn").outerWidth() / 2});
  63377. }, 1);
  63378. $("#luckysheetpopover").css(pcss).fadeIn();
  63379. $("#luckysheetpopover .luckysheetpopover-btn").click(function() {
  63380. if (typeof exitsFuc == "function") {
  63381. exitsFuc();
  63382. }
  63383. });
  63384. if (close != null && typeof close == "number") {
  63385. setTimeout(function() {
  63386. $("#luckysheetpopover").fadeOut().remove();
  63387. if (typeof exitsFuc == "function") {
  63388. exitsFuc();
  63389. }
  63390. }, close);
  63391. }
  63392. }
  63393. };
  63394. tooltip_default = tooltip;
  63395. }
  63396. });
  63397. // src/controllers/conditionformat.js
  63398. var import_dayjs4, conditionformat, conditionformat_default;
  63399. var init_conditionformat = __esm({
  63400. "src/controllers/conditionformat.js"() {
  63401. init_get();
  63402. init_util();
  63403. init_formula();
  63404. init_validate();
  63405. init_tooltip();
  63406. init_refresh();
  63407. init_getdata();
  63408. init_format();
  63409. init_constant();
  63410. init_server();
  63411. init_select();
  63412. init_sheetmanage();
  63413. init_locale();
  63414. init_protection();
  63415. init_store();
  63416. import_dayjs4 = __toModule(require_dayjs_min());
  63417. conditionformat = {
  63418. fileClone: [],
  63419. editorRule: null,
  63420. ruleTypeHtml: function() {
  63421. const conditionformat_Text = locale_default().conditionformat;
  63422. return `<div class="ruleTypeBox">
  63423. <div class="ruleTypeItem">
  63424. <span class="icon iconfont luckysheet-iconfont-youjiantou"></span>
  63425. <span>${conditionformat_Text.ruleTypeItem1}</span>
  63426. </div>
  63427. <div class="ruleTypeItem">
  63428. <span class="icon iconfont luckysheet-iconfont-youjiantou"></span>
  63429. <span>${conditionformat_Text.ruleTypeItem2}</span>
  63430. </div>
  63431. <div class="ruleTypeItem">
  63432. <span class="icon iconfont luckysheet-iconfont-youjiantou"></span>
  63433. <span>${conditionformat_Text.ruleTypeItem3}</span>
  63434. </div>
  63435. <div class="ruleTypeItem">
  63436. <span class="icon iconfont luckysheet-iconfont-youjiantou"></span>
  63437. <span>${conditionformat_Text.ruleTypeItem4}</span>
  63438. </div>
  63439. <div class="ruleTypeItem">
  63440. <span class="icon iconfont luckysheet-iconfont-youjiantou"></span>
  63441. <span>${conditionformat_Text.ruleTypeItem5}</span>
  63442. </div>
  63443. <div class="ruleTypeItem">
  63444. <span class="icon iconfont luckysheet-iconfont-youjiantou"></span>
  63445. <span>${conditionformat_Text.ruleTypeItem6}</span>
  63446. </div>
  63447. </div>`;
  63448. },
  63449. textCellColorHtml: function() {
  63450. const conditionformat_Text = locale_default().conditionformat;
  63451. return `<div id="textCellColor">
  63452. <div class="colorbox">
  63453. <input id="checkTextColor" type="checkbox" checked="checked">
  63454. <label for="checkTextColor">${conditionformat_Text.textColor}\uFF1A</label>
  63455. <input id="textcolorshow" data-tips="${conditionformat_Text.textColor}" data-func="background" class="luckysheet-conditionformat-config-color" type="text" value="#9c0006" style="display: none;">
  63456. </div>
  63457. <div class="colorbox">
  63458. <input id="checkCellColor" type="checkbox" checked="checked">
  63459. <label for="checkCellColor">${conditionformat_Text.cellColor}\uFF1A</label>
  63460. <input id="cellcolorshow" data-tips="${conditionformat_Text.cellColor}" data-func="background" class="luckysheet-conditionformat-config-color" type="text" value="#ffc7ce" style="display: none;">
  63461. </div>
  63462. </div>`;
  63463. },
  63464. selectRange: [],
  63465. selectStatus: false,
  63466. dataBarList: [
  63467. {"format": ["#638ec6", "#ffffff"]},
  63468. {"format": ["#63c384", "#ffffff"]},
  63469. {"format": ["#ff555a", "#ffffff"]},
  63470. {"format": ["#ffb628", "#ffffff"]},
  63471. {"format": ["#008aef", "#ffffff"]},
  63472. {"format": ["#d6007b", "#ffffff"]},
  63473. {"format": ["#638ec6"]},
  63474. {"format": ["#63c384"]},
  63475. {"format": ["#ff555a"]},
  63476. {"format": ["#ffb628"]},
  63477. {"format": ["#008aef"]},
  63478. {"format": ["#d6007b"]}
  63479. ],
  63480. colorGradationList: [
  63481. {"format": ["rgb(99, 190, 123)", "rgb(255, 235, 132)", "rgb(248, 105, 107)"]},
  63482. {"format": ["rgb(248, 105, 107)", "rgb(255, 235, 132)", "rgb(99, 190, 123)"]},
  63483. {"format": ["rgb(99, 190, 123)", "rgb(252, 252, 255)", "rgb(248, 105, 107)"]},
  63484. {"format": ["rgb(248, 105, 107)", "rgb(252, 252, 255)", "rgb(99, 190, 123)"]},
  63485. {"format": ["rgb(90, 138, 198)", "rgb(252, 252, 255)", "rgb(248, 105, 107)"]},
  63486. {"format": ["rgb(248, 105, 107)", "rgb(252, 252, 255)", "rgb(90, 138, 198)"]},
  63487. {"format": ["rgb(252, 252, 255)", "rgb(248, 105, 107)"]},
  63488. {"format": ["rgb(248, 105, 107)", "rgb(252, 252, 255)"]},
  63489. {"format": ["rgb(99, 190, 123)", "rgb(252, 252, 255)"]},
  63490. {"format": ["rgb(252, 252, 255)", "rgb(99, 190, 123)"]},
  63491. {"format": ["rgb(99, 190, 123)", "rgb(255, 235, 132)"]},
  63492. {"format": ["rgb(255, 235, 132)", "rgb(99, 190, 123)"]}
  63493. ],
  63494. init: function() {
  63495. let _this = this;
  63496. const conditionformat_Text = locale_default().conditionformat;
  63497. $(document).off("change.CFchooseSheet").on("change.CFchooseSheet", "#luckysheet-administerRule-dialog .chooseSheet", function() {
  63498. let index2 = $("#luckysheet-administerRule-dialog .chooseSheet option:selected").val();
  63499. _this.getConditionRuleList(index2);
  63500. });
  63501. $(document).off("click.CFadministerRuleItem").on("click.CFadministerRuleItem", "#luckysheet-administerRule-dialog .ruleList .listBox .item", function() {
  63502. $(this).addClass("on").siblings().removeClass("on");
  63503. });
  63504. $(document).off("click.CFadministerRuleConfirm").on("click.CFadministerRuleConfirm", "#luckysheet-administerRule-dialog-confirm", function() {
  63505. if (!checkProtectionFormatCells(store_default.currentSheetIndex)) {
  63506. return;
  63507. }
  63508. let fileH = $.extend(true, [], store_default.luckysheetfile);
  63509. let historyRules = _this.getHistoryRules(fileH);
  63510. let fileClone = $.extend(true, [], _this.fileClone);
  63511. for (let c2 = 0; c2 < fileClone.length; c2++) {
  63512. let sheetIndex = fileClone[c2]["index"];
  63513. store_default.luckysheetfile[getSheetIndex(sheetIndex)]["luckysheet_conditionformat_save"] = fileClone[getSheetIndex(sheetIndex)]["luckysheet_conditionformat_save"];
  63514. }
  63515. let fileC = $.extend(true, [], store_default.luckysheetfile);
  63516. let currentRules = _this.getCurrentRules(fileC);
  63517. _this.ref(historyRules, currentRules);
  63518. $("#luckysheet-modal-dialog-mask").hide();
  63519. $("#luckysheet-administerRule-dialog").hide();
  63520. if (server_default.allowUpdate) {
  63521. let files = $.extend(true, [], store_default.luckysheetfile);
  63522. for (let i2 = 0; i2 < files.length; i2++) {
  63523. server_default.saveParam("all", files[i2]["index"], files[i2]["luckysheet_conditionformat_save"], {"k": "luckysheet_conditionformat_save"});
  63524. }
  63525. }
  63526. });
  63527. $(document).off("click.CFadministerRuleClose").on("click.CFadministerRuleClose", "#luckysheet-administerRule-dialog-close", function() {
  63528. $("#luckysheet-modal-dialog-mask").hide();
  63529. $("#luckysheet-administerRule-dialog").hide();
  63530. _this.fileClone = [];
  63531. });
  63532. $(document).off("click.CFadministerRuleFa").on("click.CFadministerRuleFa", "#luckysheet-administerRule-dialog .item .fa-table", function() {
  63533. $(this).parents("#luckysheet-administerRule-dialog").hide();
  63534. let sheetIndex = $("#luckysheet-administerRule-dialog .chooseSheet select option:selected").val();
  63535. if (sheetIndex != store_default.currentSheetIndex) {
  63536. sheetmanage_default.changeSheetExec(sheetIndex);
  63537. }
  63538. let txt = $(this).siblings("input").val().trim();
  63539. let dataItem = $(this).parents(".item").attr("data-item");
  63540. _this.multiRangeDialog(dataItem, txt);
  63541. _this.selectRange = [];
  63542. let range2 = _this.getRangeByTxt(txt);
  63543. if (range2.length > 0) {
  63544. for (let s = 0; s < range2.length; s++) {
  63545. let r1 = range2[s].row[0], r2 = range2[s].row[1];
  63546. let c1 = range2[s].column[0], c2 = range2[s].column[1];
  63547. let row = store_default.visibledatarow[r2], row_pre = r1 - 1 == -1 ? 0 : store_default.visibledatarow[r1 - 1];
  63548. let col = store_default.visibledatacolumn[c2], col_pre = c1 - 1 == -1 ? 0 : store_default.visibledatacolumn[c1 - 1];
  63549. _this.selectRange.push({
  63550. "left": col_pre,
  63551. "width": col - col_pre - 1,
  63552. "top": row_pre,
  63553. "height": row - row_pre - 1,
  63554. "left_move": col_pre,
  63555. "width_move": col - col_pre - 1,
  63556. "top_move": row_pre,
  63557. "height_move": row - row_pre - 1,
  63558. "row": [r1, r2],
  63559. "column": [c1, c2],
  63560. "row_focus": r1,
  63561. "column_focus": c1
  63562. });
  63563. }
  63564. }
  63565. selectionCopyShow(_this.selectRange);
  63566. });
  63567. $(document).off("click.CFmultiRangeConfirm").on("click.CFmultiRangeConfirm", "#luckysheet-multiRange-dialog-confirm", function() {
  63568. $(this).parents("#luckysheet-multiRange-dialog").hide();
  63569. let dataItem = $(this).attr("data-item");
  63570. let v = $(this).parents("#luckysheet-multiRange-dialog").find("input").val();
  63571. $("#luckysheet-administerRule-dialog .item[data-item=" + dataItem + "] input").val(v);
  63572. let sheetIndex = $("#luckysheet-administerRule-dialog .chooseSheet option:selected").val();
  63573. _this.fileClone[getSheetIndex(sheetIndex)]["luckysheet_conditionformat_save"][dataItem].cellrange = _this.getRangeByTxt(v);
  63574. $("#luckysheet-modal-dialog-mask").show();
  63575. $("#luckysheet-administerRule-dialog").show();
  63576. let range2 = [];
  63577. selectionCopyShow(range2);
  63578. });
  63579. $(document).off("click.CFmultiRangeClose").on("click.CFmultiRangeClose", "#luckysheet-multiRange-dialog-close", function() {
  63580. $(this).parents("#luckysheet-multiRange-dialog").hide();
  63581. $("#luckysheet-modal-dialog-mask").show();
  63582. $("#luckysheet-administerRule-dialog").show();
  63583. $("#luckysheet-formula-functionrange-select").hide();
  63584. $("#luckysheet-row-count-show").hide();
  63585. $("#luckysheet-column-count-show").hide();
  63586. let range2 = [];
  63587. selectionCopyShow(range2);
  63588. });
  63589. $(document).off("click.CFnewConditionRule").on("click.CFnewConditionRule", "#newConditionRule", function() {
  63590. let sheetIndex = $("#luckysheet-administerRule-dialog .chooseSheet option:selected").val();
  63591. if (!checkProtectionFormatCells(sheetIndex)) {
  63592. return;
  63593. }
  63594. if (store_default.luckysheet_select_save.length == 0) {
  63595. if (isEditMode()) {
  63596. alert(conditionformat_Text.pleaseSelectRange);
  63597. } else {
  63598. tooltip_default.info(conditionformat_Text.pleaseSelectRange, "");
  63599. }
  63600. return;
  63601. }
  63602. _this.newConditionRuleDialog(1);
  63603. });
  63604. $(document).off("click.CFnewConditionRuleConfirm").on("click.CFnewConditionRuleConfirm", "#luckysheet-newConditionRule-dialog-confirm", function() {
  63605. if (!checkProtectionFormatCells(store_default.currentSheetIndex)) {
  63606. return;
  63607. }
  63608. let index2 = $("#luckysheet-newConditionRule-dialog .ruleTypeItem.on").index();
  63609. let type1 = $("#luckysheet-newConditionRule-dialog #type1 option:selected").val();
  63610. let type2 = $("#luckysheet-newConditionRule-dialog ." + type1 + "Box #type2 option:selected").val();
  63611. let format, rule;
  63612. if (index2 == 0) {
  63613. if (type1 == "dataBar") {
  63614. let color = $(this).parents("#luckysheet-newConditionRule-dialog").find(".dataBarBox .luckysheet-conditionformat-config-color").spectrum("get").toHexString();
  63615. if (type2 == "gradient") {
  63616. format = [color, "#ffffff"];
  63617. } else if (type2 == "solid") {
  63618. format = [color];
  63619. }
  63620. rule = {
  63621. "type": "dataBar",
  63622. "cellrange": $.extend(true, [], store_default.luckysheet_select_save),
  63623. "format": format
  63624. };
  63625. } else if (type1 == "colorGradation") {
  63626. let maxcolor = $(this).parents("#luckysheet-newConditionRule-dialog").find(".colorGradationBox .maxVal .luckysheet-conditionformat-config-color").spectrum("get").toRgbString();
  63627. let midcolor = $(this).parents("#luckysheet-newConditionRule-dialog").find(".colorGradationBox .midVal .luckysheet-conditionformat-config-color").spectrum("get").toRgbString();
  63628. let mincolor = $(this).parents("#luckysheet-newConditionRule-dialog").find(".colorGradationBox .minVal .luckysheet-conditionformat-config-color").spectrum("get").toRgbString();
  63629. if (type2 == "threeColor") {
  63630. format = [maxcolor, midcolor, mincolor];
  63631. } else if (type2 == "twoColor") {
  63632. format = [maxcolor, mincolor];
  63633. }
  63634. rule = {
  63635. "type": "colorGradation",
  63636. "cellrange": $.extend(true, [], store_default.luckysheet_select_save),
  63637. "format": format
  63638. };
  63639. } else if (type1 == "icons") {
  63640. let len = $(this).parents("#luckysheet-newConditionRule-dialog").find(".iconsBox .model").attr("data-len");
  63641. let leftMin = $(this).parents("#luckysheet-newConditionRule-dialog").find(".iconsBox .model").attr("data-leftmin");
  63642. let top = $(this).parents("#luckysheet-newConditionRule-dialog").find(".iconsBox .model").attr("data-top");
  63643. format = {
  63644. "len": len,
  63645. "leftMin": leftMin,
  63646. "top": top
  63647. };
  63648. rule = {
  63649. "type": "icons",
  63650. "cellrange": $.extend(true, [], store_default.luckysheet_select_save),
  63651. "format": format
  63652. };
  63653. }
  63654. } else {
  63655. let conditionName = "", conditionRange = [], conditionValue = [];
  63656. if (index2 == 1) {
  63657. if (type1 == "number") {
  63658. conditionName = type2;
  63659. if (type2 == "betweenness") {
  63660. let v1 = $("#luckysheet-newConditionRule-dialog #conditionVal input").val().trim();
  63661. let v2 = $("#luckysheet-newConditionRule-dialog #conditionVal2 input").val().trim();
  63662. let rangeArr1 = _this.getRangeByTxt(v1);
  63663. if (rangeArr1.length > 1) {
  63664. _this.infoDialog(conditionformat_Text.onlySingleCell, "");
  63665. return;
  63666. } else if (rangeArr1.length == 1) {
  63667. let r1 = rangeArr1[0].row[0], r2 = rangeArr1[0].row[1];
  63668. let c1 = rangeArr1[0].column[0], c2 = rangeArr1[0].column[1];
  63669. if (r1 == r2 && c1 == c2) {
  63670. v1 = getcellvalue(r1, c1, store_default.flowdata);
  63671. conditionRange.push({"row": rangeArr1[0].row, "column": rangeArr1[0].column});
  63672. conditionValue.push(v1);
  63673. } else {
  63674. _this.infoDialog(conditionformat_Text.onlySingleCell, "");
  63675. return;
  63676. }
  63677. } else if (rangeArr1.length == 0) {
  63678. if (isNaN(v1) || v1 == "") {
  63679. _this.infoDialog(conditionformat_Text.conditionValueCanOnly, "");
  63680. return;
  63681. } else {
  63682. conditionValue.push(v1);
  63683. }
  63684. }
  63685. let rangeArr2 = _this.getRangeByTxt(v2);
  63686. if (rangeArr2.length > 1) {
  63687. _this.infoDialog(conditionformat_Text.onlySingleCell, "");
  63688. return;
  63689. } else if (rangeArr2.length == 1) {
  63690. let r1 = rangeArr2[0].row[0], r2 = rangeArr2[0].row[1];
  63691. let c1 = rangeArr2[0].column[0], c2 = rangeArr2[0].column[1];
  63692. if (r1 == r2 && c1 == c2) {
  63693. v2 = getcellvalue(r1, c1, store_default.flowdata);
  63694. conditionRange.push({"row": rangeArr2[0].row, "column": rangeArr2[0].column});
  63695. conditionValue.push(v2);
  63696. } else {
  63697. _this.infoDialog(conditionformat_Text.onlySingleCell, "");
  63698. return;
  63699. }
  63700. } else if (rangeArr2.length == 0) {
  63701. if (isNaN(v2) || v2 == "") {
  63702. _this.infoDialog(conditionformat_Text.conditionValueCanOnly, "");
  63703. return;
  63704. } else {
  63705. conditionValue.push(v2);
  63706. }
  63707. }
  63708. } else {
  63709. let v = $("#luckysheet-newConditionRule-dialog #conditionVal input").val().trim();
  63710. let rangeArr = _this.getRangeByTxt(v);
  63711. if (rangeArr.length > 1) {
  63712. _this.infoDialog(conditionformat_Text.onlySingleCell, "");
  63713. return;
  63714. } else if (rangeArr.length == 1) {
  63715. let r1 = rangeArr[0].row[0], r2 = rangeArr[0].row[1];
  63716. let c1 = rangeArr[0].column[0], c2 = rangeArr[0].column[1];
  63717. if (r1 == r2 && c1 == c2) {
  63718. v = getcellvalue(r1, c1, store_default.flowdata);
  63719. conditionRange.push({"row": rangeArr[0].row, "column": rangeArr[0].column});
  63720. conditionValue.push(v);
  63721. } else {
  63722. _this.infoDialog(conditionformat_Text.onlySingleCell, "");
  63723. return;
  63724. }
  63725. } else if (rangeArr.length == 0) {
  63726. if (isNaN(v) || v == "") {
  63727. _this.infoDialog(conditionformat_Text.conditionValueCanOnly, "");
  63728. return;
  63729. } else {
  63730. conditionValue.push(v);
  63731. }
  63732. }
  63733. }
  63734. } else if (type1 == "text") {
  63735. conditionName = "textContains";
  63736. let v = $("#luckysheet-newConditionRule-dialog #conditionVal input").val().trim();
  63737. let rangeArr = _this.getRangeByTxt(v);
  63738. if (rangeArr.length > 1) {
  63739. _this.infoDialog(conditionformat_Text.onlySingleCell, "");
  63740. return;
  63741. } else if (rangeArr.length == 1) {
  63742. let r1 = rangeArr[0].row[0], r2 = rangeArr[0].row[1];
  63743. let c1 = rangeArr[0].column[0], c2 = rangeArr[0].column[1];
  63744. if (r1 == r2 && c1 == c2) {
  63745. v = getcellvalue(r1, c1, store_default.flowdata);
  63746. conditionRange.push({"row": rangeArr[0].row, "column": rangeArr[0].column});
  63747. conditionValue.push(v);
  63748. } else {
  63749. _this.infoDialog(conditionformat_Text.onlySingleCell, "");
  63750. return;
  63751. }
  63752. } else if (rangeArr.length == 0) {
  63753. if (v == "") {
  63754. _this.infoDialog(conditionformat_Text.conditionValueCanOnly, "");
  63755. return;
  63756. } else {
  63757. conditionValue.push(v);
  63758. }
  63759. }
  63760. } else if (type1 == "date") {
  63761. conditionName = "occurrenceDate";
  63762. let v = $("#luckysheet-newConditionRule-dialog #daterange-btn").val();
  63763. if (v == "" || v == null) {
  63764. _this.infoDialog(conditionformat_Text.pleaseSelectADate, "");
  63765. return;
  63766. }
  63767. conditionValue.push(v);
  63768. }
  63769. } else if (index2 == 2) {
  63770. if (type1 == "top") {
  63771. if ($("#luckysheet-newConditionRule-dialog #isPercent").is(":selected")) {
  63772. conditionName = "top10%";
  63773. } else {
  63774. conditionName = "top10";
  63775. }
  63776. } else if (type1 == "last") {
  63777. if ($("#luckysheet-newConditionRule-dialog #isPercent").is(":selected")) {
  63778. conditionName = "last10%";
  63779. } else {
  63780. conditionName = "last10";
  63781. }
  63782. }
  63783. let v = $("#luckysheet-newConditionRule-dialog #conditionVal input").val().trim();
  63784. if (parseInt(v) != v || parseInt(v) < 1 || parseInt(v) > 1e3) {
  63785. _this.infoDialog(conditionformat_Text.pleaseEnterInteger, "");
  63786. return;
  63787. }
  63788. conditionValue.push(parseInt(v));
  63789. } else if (index2 == 3) {
  63790. if (type1 == "AboveAverage") {
  63791. conditionName = "AboveAverage";
  63792. conditionValue.push("AboveAverage");
  63793. } else if (type1 == "SubAverage") {
  63794. conditionName = "SubAverage";
  63795. conditionValue.push("SubAverage");
  63796. }
  63797. } else if (index2 == 4) {
  63798. conditionName = "duplicateValue";
  63799. conditionValue.push(type1);
  63800. } else if (index2 == 5) {
  63801. conditionName = "formula";
  63802. let v = $("#luckysheet-newConditionRule-dialog #formulaConditionVal input").val().trim();
  63803. if (v == "") {
  63804. _this.infoDialog("Condition value cannot be empty!", "");
  63805. return;
  63806. }
  63807. conditionValue.push(v);
  63808. }
  63809. let textcolor;
  63810. if ($("#luckysheet-newConditionRule-dialog #checkTextColor").is(":checked")) {
  63811. textcolor = $("#luckysheet-newConditionRule-dialog #textcolorshow").spectrum("get").toHexString();
  63812. } else {
  63813. textcolor = null;
  63814. }
  63815. let cellcolor;
  63816. if ($("#luckysheet-newConditionRule-dialog #checkCellColor").is(":checked")) {
  63817. cellcolor = $("#luckysheet-newConditionRule-dialog #cellcolorshow").spectrum("get").toHexString();
  63818. } else {
  63819. cellcolor = null;
  63820. }
  63821. format = {
  63822. "textColor": textcolor,
  63823. "cellColor": cellcolor
  63824. };
  63825. rule = {
  63826. "type": "default",
  63827. "cellrange": $.extend(true, [], store_default.luckysheet_select_save),
  63828. "format": format,
  63829. "conditionName": conditionName,
  63830. "conditionRange": conditionRange,
  63831. "conditionValue": conditionValue
  63832. };
  63833. }
  63834. $("#luckysheet-newConditionRule-dialog").hide();
  63835. let source = $(this).attr("data-source");
  63836. if (source == 0) {
  63837. $("#luckysheet-modal-dialog-mask").hide();
  63838. let fileH = $.extend(true, [], store_default.luckysheetfile);
  63839. let historyRules = _this.getHistoryRules(fileH);
  63840. let ruleArr2 = store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)]["luckysheet_conditionformat_save"] == void 0 ? [] : store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)]["luckysheet_conditionformat_save"];
  63841. ruleArr2.push(rule);
  63842. store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)]["luckysheet_conditionformat_save"] = ruleArr2;
  63843. let fileC = $.extend(true, [], store_default.luckysheetfile);
  63844. let currentRules = _this.getCurrentRules(fileC);
  63845. _this.ref(historyRules, currentRules);
  63846. if (server_default.allowUpdate) {
  63847. server_default.saveParam("all", store_default.currentSheetIndex, ruleArr2, {"k": "luckysheet_conditionformat_save"});
  63848. }
  63849. } else if (source == 1) {
  63850. let ruleArr2 = !!_this.fileClone[getSheetIndex(store_default.currentSheetIndex)]["luckysheet_conditionformat_save"] ? _this.fileClone[getSheetIndex(store_default.currentSheetIndex)]["luckysheet_conditionformat_save"] : [];
  63851. ruleArr2.push(rule);
  63852. _this.fileClone[getSheetIndex(store_default.currentSheetIndex)]["luckysheet_conditionformat_save"] = ruleArr2;
  63853. _this.administerRuleDialog();
  63854. }
  63855. });
  63856. $(document).off("click.CFnewConditionRuleClose").on("click.CFnewConditionRuleClose", "#luckysheet-newConditionRule-dialog-close", function() {
  63857. let source = $(this).attr("data-source");
  63858. if (source == 0) {
  63859. $("#luckysheet-modal-dialog-mask").hide();
  63860. }
  63861. if (source == 1) {
  63862. $("#luckysheet-administerRule-dialog").show();
  63863. }
  63864. $("#luckysheet-newConditionRule-dialog").hide();
  63865. $("#luckysheet-formula-functionrange-select").hide();
  63866. $("#luckysheet-row-count-show").hide();
  63867. $("#luckysheet-column-count-show").hide();
  63868. });
  63869. $(document).off("click.CFeditorConditionRule").on("click.CFeditorConditionRule", "#editorConditionRule", function() {
  63870. let sheetIndex = $("#luckysheet-administerRule-dialog .chooseSheet option:selected").val();
  63871. if (!checkProtectionFormatCells(sheetIndex)) {
  63872. return;
  63873. }
  63874. let itemIndex = $("#luckysheet-administerRule-dialog .ruleList .listBox .item.on").attr("data-item");
  63875. let rule = {
  63876. "sheetIndex": sheetIndex,
  63877. "itemIndex": itemIndex,
  63878. "data": _this.fileClone[getSheetIndex(sheetIndex)]["luckysheet_conditionformat_save"][itemIndex]
  63879. };
  63880. _this.editorRule = rule;
  63881. _this.editorConditionRuleDialog();
  63882. });
  63883. $(document).off("click.CFeditorConditionRuleConfirm").on("click.CFeditorConditionRuleConfirm", "#luckysheet-editorConditionRule-dialog-confirm", function() {
  63884. let index2 = $("#luckysheet-editorConditionRule-dialog .ruleTypeItem.on").index();
  63885. let type1 = $("#luckysheet-editorConditionRule-dialog #type1 option:selected").val();
  63886. let type2 = $("#luckysheet-editorConditionRule-dialog ." + type1 + "Box #type2 option:selected").val();
  63887. let cellrange = _this.editorRule["data"].cellrange;
  63888. let format, rule;
  63889. if (index2 == 0) {
  63890. if (type1 == "dataBar") {
  63891. let color = $(this).parents("#luckysheet-editorConditionRule-dialog").find(".dataBarBox .luckysheet-conditionformat-config-color").spectrum("get").toHexString();
  63892. if (type2 == "gradient") {
  63893. format = [color, "#ffffff"];
  63894. } else if (type2 == "solid") {
  63895. format = [color];
  63896. }
  63897. rule = {
  63898. "type": "dataBar",
  63899. "cellrange": cellrange,
  63900. "format": format
  63901. };
  63902. } else if (type1 == "colorGradation") {
  63903. let maxcolor = $(this).parents("#luckysheet-editorConditionRule-dialog").find(".colorGradationBox .maxVal .luckysheet-conditionformat-config-color").spectrum("get").toRgbString();
  63904. let midcolor = $(this).parents("#luckysheet-editorConditionRule-dialog").find(".colorGradationBox .midVal .luckysheet-conditionformat-config-color").spectrum("get").toRgbString();
  63905. let mincolor = $(this).parents("#luckysheet-editorConditionRule-dialog").find(".colorGradationBox .minVal .luckysheet-conditionformat-config-color").spectrum("get").toRgbString();
  63906. if (type2 == "threeColor") {
  63907. format = [maxcolor, midcolor, mincolor];
  63908. } else if (type2 == "twoColor") {
  63909. format = [maxcolor, mincolor];
  63910. }
  63911. rule = {
  63912. "type": "colorGradation",
  63913. "cellrange": cellrange,
  63914. "format": format
  63915. };
  63916. } else if (type1 == "icons") {
  63917. let len = $(this).parents("#luckysheet-editorConditionRule-dialog").find(".iconsBox .model").attr("data-len");
  63918. let leftMin = $(this).parents("#luckysheet-editorConditionRule-dialog").find(".iconsBox .model").attr("data-leftmin");
  63919. let top = $(this).parents("#luckysheet-editorConditionRule-dialog").find(".iconsBox .model").attr("data-top");
  63920. format = {
  63921. "len": len,
  63922. "leftMin": leftMin,
  63923. "top": top
  63924. };
  63925. rule = {
  63926. "type": "icons",
  63927. "cellrange": cellrange,
  63928. "format": format
  63929. };
  63930. }
  63931. } else {
  63932. let conditionName = "", conditionRange = [], conditionValue = [];
  63933. if (index2 == 1) {
  63934. if (type1 == "number") {
  63935. conditionName = type2;
  63936. if (type2 == "betweenness") {
  63937. let v1 = $("#luckysheet-editorConditionRule-dialog #conditionVal input").val().trim();
  63938. let v2 = $("#luckysheet-editorConditionRule-dialog #conditionVal2 input").val().trim();
  63939. let rangeArr1 = _this.getRangeByTxt(v1);
  63940. if (rangeArr1.length > 1) {
  63941. _this.infoDialog(conditionformat_Text.onlySingleCell, "");
  63942. return;
  63943. } else if (rangeArr1.length == 1) {
  63944. let r1 = rangeArr1[0].row[0], r2 = rangeArr1[0].row[1];
  63945. let c1 = rangeArr1[0].column[0], c2 = rangeArr1[0].column[1];
  63946. if (r1 == r2 && c1 == c2) {
  63947. v1 = getcellvalue(r1, c1, store_default.flowdata);
  63948. conditionRange.push({"row": rangeArr1[0].row, "column": rangeArr1[0].column});
  63949. conditionValue.push(v1);
  63950. } else {
  63951. _this.infoDialog(conditionformat_Text.onlySingleCell, "");
  63952. return;
  63953. }
  63954. } else if (rangeArr1.length == 0) {
  63955. if (isNaN(v1) || v1 == "") {
  63956. _this.infoDialog(conditionformat_Text.conditionValueCanOnly, "");
  63957. return;
  63958. } else {
  63959. conditionValue.push(v1);
  63960. }
  63961. }
  63962. let rangeArr2 = _this.getRangeByTxt(v2);
  63963. if (rangeArr2.length > 1) {
  63964. _this.infoDialog(conditionformat_Text.onlySingleCell, "");
  63965. return;
  63966. } else if (rangeArr2.length == 1) {
  63967. let r1 = rangeArr2[0].row[0], r2 = rangeArr2[0].row[1];
  63968. let c1 = rangeArr2[0].column[0], c2 = rangeArr2[0].column[1];
  63969. if (r1 == r2 && c1 == c2) {
  63970. v2 = getcellvalue(r1, c1, store_default.flowdata);
  63971. conditionRange.push({"row": rangeArr2[0].row, "column": rangeArr2[0].column});
  63972. conditionValue.push(v2);
  63973. } else {
  63974. _this.infoDialog(conditionformat_Text.onlySingleCell, "");
  63975. return;
  63976. }
  63977. } else if (rangeArr2.length == 0) {
  63978. if (isNaN(v2) || v2 == "") {
  63979. _this.infoDialog(conditionformat_Text.conditionValueCanOnly, "");
  63980. return;
  63981. } else {
  63982. conditionValue.push(v2);
  63983. }
  63984. }
  63985. } else {
  63986. let v = $("#luckysheet-editorConditionRule-dialog #conditionVal input").val().trim();
  63987. let rangeArr = _this.getRangeByTxt(v);
  63988. if (rangeArr.length > 1) {
  63989. _this.infoDialog(conditionformat_Text.onlySingleCell, "");
  63990. return;
  63991. } else if (rangeArr.length == 1) {
  63992. let r1 = rangeArr[0].row[0], r2 = rangeArr[0].row[1];
  63993. let c1 = rangeArr[0].column[0], c2 = rangeArr[0].column[1];
  63994. if (r1 == r2 && c1 == c2) {
  63995. v = getcellvalue(r1, c1, store_default.flowdata);
  63996. conditionRange.push({"row": rangeArr[0].row, "column": rangeArr[0].column});
  63997. conditionValue.push(v);
  63998. } else {
  63999. _this.infoDialog(conditionformat_Text.onlySingleCell, "");
  64000. return;
  64001. }
  64002. } else if (rangeArr.length == 0) {
  64003. if (isNaN(v) || v == "") {
  64004. _this.infoDialog(conditionformat_Text.conditionValueCanOnly, "");
  64005. return;
  64006. } else {
  64007. conditionValue.push(v);
  64008. }
  64009. }
  64010. }
  64011. } else if (type1 == "text") {
  64012. conditionName = "textContains";
  64013. let v = $("#luckysheet-editorConditionRule-dialog #conditionVal input").val().trim();
  64014. let rangeArr = _this.getRangeByTxt(v);
  64015. if (rangeArr.length > 1) {
  64016. _this.infoDialog(conditionformat_Text.onlySingleCell, "");
  64017. return;
  64018. } else if (rangeArr.length == 1) {
  64019. let r1 = rangeArr[0].row[0], r2 = rangeArr[0].row[1];
  64020. let c1 = rangeArr[0].column[0], c2 = rangeArr[0].column[1];
  64021. if (r1 == r2 && c1 == c2) {
  64022. v = getcellvalue(r1, c1, store_default.flowdata);
  64023. conditionRange.push({"row": rangeArr[0].row, "column": rangeArr[0].column});
  64024. conditionValue.push(v);
  64025. } else {
  64026. _this.infoDialog(conditionformat_Text.onlySingleCell, "");
  64027. return;
  64028. }
  64029. } else if (rangeArr.length == 0) {
  64030. if (isNaN(v) || v == "") {
  64031. _this.infoDialog(conditionformat_Text.conditionValueCanOnly, "");
  64032. return;
  64033. } else {
  64034. conditionValue.push(v);
  64035. }
  64036. }
  64037. } else if (type1 == "date") {
  64038. conditionName = "occurrenceDate";
  64039. let v = $("#luckysheet-editorConditionRule-dialog #daterange-btn").val();
  64040. if (v == "" || v == null) {
  64041. _this.infoDialog(conditionformat_Text.pleaseSelectADate, "");
  64042. return;
  64043. }
  64044. conditionValue.push(v);
  64045. }
  64046. } else if (index2 == 2) {
  64047. if (type1 == "top") {
  64048. if ($("#luckysheet-editorConditionRule-dialog #isPercent").is(":selected")) {
  64049. conditionName = "top10%";
  64050. } else {
  64051. conditionName = "top10";
  64052. }
  64053. } else if (type1 == "last") {
  64054. if ($("#luckysheet-editorConditionRule-dialog #isPercent").is(":selected")) {
  64055. conditionName = "last10%";
  64056. } else {
  64057. conditionName = "last10";
  64058. }
  64059. }
  64060. let v = $("#luckysheet-editorConditionRule-dialog #conditionVal input").val().trim();
  64061. if (parseInt(v) != v || parseInt(v) < 1 || parseInt(v) > 1e3) {
  64062. _this.infoDialog(conditionformat_Text.pleaseEnterInteger, "");
  64063. return;
  64064. }
  64065. conditionValue.push(v);
  64066. } else if (index2 == 3) {
  64067. if (type1 == "AboveAverage") {
  64068. conditionName = "AboveAverage";
  64069. conditionValue.push("AboveAverage");
  64070. } else if (type1 == "SubAverage") {
  64071. conditionName = "SubAverage";
  64072. conditionValue.push("SubAverage");
  64073. }
  64074. } else if (index2 == 4) {
  64075. conditionName = "duplicateValue";
  64076. conditionValue.push(type1);
  64077. } else if (index2 == 5) {
  64078. conditionName = "formula";
  64079. let v = $("#luckysheet-editorConditionRule-dialog #formulaConditionVal input").val().trim();
  64080. console.log(v);
  64081. if (v == "") {
  64082. _this.infoDialog("Condition value cannot be empty!", "");
  64083. return;
  64084. }
  64085. conditionValue.push(v);
  64086. }
  64087. let textcolor;
  64088. if ($("#luckysheet-editorConditionRule-dialog #checkTextColor").is(":checked")) {
  64089. textcolor = $("#luckysheet-editorConditionRule-dialog #textcolorshow").spectrum("get").toHexString();
  64090. } else {
  64091. textcolor = null;
  64092. }
  64093. let cellcolor;
  64094. if ($("#luckysheet-editorConditionRule-dialog #checkCellColor").is(":checked")) {
  64095. cellcolor = $("#luckysheet-editorConditionRule-dialog #cellcolorshow").spectrum("get").toHexString();
  64096. } else {
  64097. cellcolor = null;
  64098. }
  64099. format = {
  64100. "textColor": textcolor,
  64101. "cellColor": cellcolor
  64102. };
  64103. rule = {
  64104. "type": "default",
  64105. "cellrange": cellrange,
  64106. "format": format,
  64107. "conditionName": conditionName,
  64108. "conditionRange": conditionRange,
  64109. "conditionValue": conditionValue
  64110. };
  64111. }
  64112. let sheetIndex = _this.editorRule["sheetIndex"];
  64113. let itemIndex = _this.editorRule["itemIndex"];
  64114. _this.fileClone[getSheetIndex(sheetIndex)]["luckysheet_conditionformat_save"][itemIndex] = rule;
  64115. $("#luckysheet-editorConditionRule-dialog").hide();
  64116. _this.administerRuleDialog();
  64117. });
  64118. $(document).off("click.CFeditorConditionRuleClose").on("click.CFeditorConditionRuleClose", "#luckysheet-editorConditionRule-dialog-close", function() {
  64119. $("#luckysheet-editorConditionRule-dialog").hide();
  64120. $("#luckysheet-administerRule-dialog").show();
  64121. $("#luckysheet-formula-functionrange-select").hide();
  64122. $("#luckysheet-row-count-show").hide();
  64123. $("#luckysheet-column-count-show").hide();
  64124. });
  64125. $(document).off("click.CFnewEditorRuleItem").on("click.CFnewEditorRuleItem", ".luckysheet-newEditorRule-dialog .ruleTypeItem", function() {
  64126. $(this).addClass("on").siblings().removeClass("on");
  64127. let index2 = $(this).index();
  64128. $(this).parents(".luckysheet-newEditorRule-dialog").find(".ruleExplainBox").html(_this.getRuleExplain(index2));
  64129. _this.colorSelectInit();
  64130. });
  64131. $(document).off("change.CFnewEditorRuleType1").on("change.CFnewEditorRuleType1", ".luckysheet-newEditorRule-dialog #type1", function() {
  64132. let optionVal = $(this).find("option:selected").val();
  64133. if (optionVal == "dataBar" || optionVal == "colorGradation" || optionVal == "icons" || optionVal == "number" || optionVal == "text" || optionVal == "date") {
  64134. $(this).parents(".luckysheet-newEditorRule-dialog").find("." + optionVal + "Box").show().siblings().hide();
  64135. }
  64136. if (optionVal == "date") {
  64137. _this.daterangeInit($(this).parents(".luckysheet-newEditorRule-dialog").attr("id"));
  64138. }
  64139. });
  64140. $(document).off("change.CFnewEditorRuleType2").on("change.CFnewEditorRuleType2", ".luckysheet-newEditorRule-dialog #type2", function() {
  64141. let type1 = $(this).parents(".luckysheet-newEditorRule-dialog").find("#type1 option:selected").val();
  64142. if (type1 == "colorGradation") {
  64143. let type2 = $(this).find("option:selected").val();
  64144. if (type2 == "threeColor") {
  64145. $(this).parents(".luckysheet-newEditorRule-dialog").find(".midVal").show();
  64146. } else {
  64147. $(this).parents(".luckysheet-newEditorRule-dialog").find(".midVal").hide();
  64148. }
  64149. } else if (type1 == "number") {
  64150. let type2 = $(this).find("option:selected").val();
  64151. if (type2 == "betweenness") {
  64152. $(this).parents(".luckysheet-newEditorRule-dialog").find(".txt").show();
  64153. $(this).parents(".luckysheet-newEditorRule-dialog").find("#conditionVal2").show();
  64154. } else {
  64155. $(this).parents(".luckysheet-newEditorRule-dialog").find(".txt").hide();
  64156. $(this).parents(".luckysheet-newEditorRule-dialog").find("#conditionVal2").hide();
  64157. }
  64158. }
  64159. });
  64160. $(document).off("click.CFiconsShowbox").on("click.CFiconsShowbox", ".luckysheet-newEditorRule-dialog .iconsBox .showbox", function() {
  64161. $(this).parents(".iconsBox").find("ul").toggle();
  64162. });
  64163. $(document).off("click.CFiconsLi").on("click.CFiconsLi", ".luckysheet-newEditorRule-dialog .iconsBox li", function() {
  64164. let len = $(this).find("div").attr("data-len");
  64165. let leftmin = $(this).find("div").attr("data-leftmin");
  64166. let top = $(this).find("div").attr("data-top");
  64167. let title = $(this).find("div").attr("title");
  64168. let position = $(this).find("div").css("background-position");
  64169. $(this).parents(".iconsBox").find(".showbox .model").css("background-position", position);
  64170. $(this).parents(".iconsBox").find(".showbox .model").attr("data-len", len);
  64171. $(this).parents(".iconsBox").find(".showbox .model").attr("data-leftmin", leftmin);
  64172. $(this).parents(".iconsBox").find(".showbox .model").attr("data-top", top);
  64173. $(this).parents(".iconsBox").find(".showbox .model").attr("title", title);
  64174. $(this).parents("ul").hide();
  64175. });
  64176. $(document).off("click.CFdeleteConditionRule").on("click.CFdeleteConditionRule", "#deleteConditionRule", function() {
  64177. let sheetIndex = $("#luckysheet-administerRule-dialog .chooseSheet option:selected").val();
  64178. if (!checkProtectionFormatCells(sheetIndex)) {
  64179. return;
  64180. }
  64181. let itemIndex = $("#luckysheet-administerRule-dialog .ruleList .listBox .item.on").attr("data-item");
  64182. _this.fileClone[getSheetIndex(sheetIndex)]["luckysheet_conditionformat_save"].splice(itemIndex, 1);
  64183. _this.administerRuleDialog();
  64184. });
  64185. $(document).off("click.CFdefault").on("click.CFdefault", "#luckysheet-conditionformat-dialog-confirm", function() {
  64186. if (!checkProtectionFormatCells(store_default.currentSheetIndex)) {
  64187. return;
  64188. }
  64189. let conditionName = $("#luckysheet-conditionformat-dialog .box").attr("data-itemvalue");
  64190. let conditionRange = [];
  64191. let conditionValue = [];
  64192. if (conditionName == "greaterThan" || conditionName == "lessThan" || conditionName == "equal" || conditionName == "textContains") {
  64193. let v = $("#luckysheet-conditionformat-dialog #conditionVal").val().trim();
  64194. let rangeArr = _this.getRangeByTxt(v);
  64195. if (rangeArr.length > 1) {
  64196. _this.infoDialog(conditionformat_Text.onlySingleCell, "");
  64197. return;
  64198. } else if (rangeArr.length == 1) {
  64199. let r1 = rangeArr[0].row[0], r2 = rangeArr[0].row[1];
  64200. let c1 = rangeArr[0].column[0], c2 = rangeArr[0].column[1];
  64201. if (r1 == r2 && c1 == c2) {
  64202. v = getcellvalue(r1, c1, store_default.flowdata);
  64203. conditionRange.push({"row": rangeArr[0].row, "column": rangeArr[0].column});
  64204. conditionValue.push(v);
  64205. } else {
  64206. _this.infoDialog(conditionformat_Text.onlySingleCell, "");
  64207. return;
  64208. }
  64209. } else if (rangeArr.length == 0) {
  64210. if (isNaN(v) || v == "") {
  64211. _this.infoDialog(conditionformat_Text.conditionValueCanOnly, "");
  64212. return;
  64213. } else {
  64214. conditionValue.push(v);
  64215. }
  64216. }
  64217. } else if (conditionName == "betweenness") {
  64218. let v1 = $("#luckysheet-conditionformat-dialog #conditionVal").val().trim();
  64219. let v2 = $("#luckysheet-conditionformat-dialog #conditionVal2").val().trim();
  64220. let rangeArr1 = _this.getRangeByTxt(v1);
  64221. if (rangeArr1.length > 1) {
  64222. _this.infoDialog(conditionformat_Text.onlySingleCell, "");
  64223. return;
  64224. } else if (rangeArr1.length == 1) {
  64225. let r1 = rangeArr1[0].row[0], r2 = rangeArr1[0].row[1];
  64226. let c1 = rangeArr1[0].column[0], c2 = rangeArr1[0].column[1];
  64227. if (r1 == r2 && c1 == c2) {
  64228. v1 = getcellvalue(r1, c1, store_default.flowdata);
  64229. conditionRange.push({"row": rangeArr1[0].row, "column": rangeArr1[0].column});
  64230. conditionValue.push(v1);
  64231. } else {
  64232. _this.infoDialog(conditionformat_Text.onlySingleCell, "");
  64233. return;
  64234. }
  64235. } else if (rangeArr1.length == 0) {
  64236. if (isNaN(v1) || v1 == "") {
  64237. _this.infoDialog(conditionformat_Text.conditionValueCanOnly, "");
  64238. return;
  64239. } else {
  64240. conditionValue.push(v1);
  64241. }
  64242. }
  64243. let rangeArr2 = _this.getRangeByTxt(v2);
  64244. if (rangeArr2.length > 1) {
  64245. _this.infoDialog(conditionformat_Text.onlySingleCell, "");
  64246. return;
  64247. } else if (rangeArr2.length == 1) {
  64248. let r1 = rangeArr2[0].row[0], r2 = rangeArr2[0].row[1];
  64249. let c1 = rangeArr2[0].column[0], c2 = rangeArr2[0].column[1];
  64250. if (r1 == r2 && c1 == c2) {
  64251. v2 = getcellvalue(r1, c1, store_default.flowdata);
  64252. conditionRange.push({"row": rangeArr2[0].row, "column": rangeArr2[0].column});
  64253. conditionValue.push(v2);
  64254. } else {
  64255. _this.infoDialog(conditionformat_Text.onlySingleCell, "");
  64256. return;
  64257. }
  64258. } else if (rangeArr2.length == 0) {
  64259. if (isNaN(v2) || v2 == "") {
  64260. _this.infoDialog(conditionformat_Text.conditionValueCanOnly, "");
  64261. return;
  64262. } else {
  64263. conditionValue.push(v2);
  64264. }
  64265. }
  64266. } else if (conditionName == "occurrenceDate") {
  64267. let v = $("#luckysheet-conditionformat-dialog #daterange-btn").val();
  64268. if (v == "" || v == null) {
  64269. _this.infoDialog(conditionformat_Text.pleaseSelectADate, "");
  64270. return;
  64271. }
  64272. conditionValue.push(v);
  64273. } else if (conditionName == "duplicateValue") {
  64274. conditionValue.push($("#luckysheet-conditionformat-dialog #conditionVal option:selected").val());
  64275. } else if (conditionName == "top10" || conditionName == "top10%" || conditionName == "last10" || conditionName == "last10%") {
  64276. let v = $("#luckysheet-conditionformat-dialog #conditionVal").val().trim();
  64277. if (parseInt(v) != v || parseInt(v) < 1 || parseInt(v) > 1e3) {
  64278. _this.infoDialog(conditionformat_Text.pleaseEnterInteger, "");
  64279. return;
  64280. }
  64281. conditionValue.push(v);
  64282. } else if (conditionName == "AboveAverage") {
  64283. conditionValue.push("AboveAverage");
  64284. } else if (conditionName == "SubAverage") {
  64285. conditionValue.push("SubAverage");
  64286. }
  64287. let textcolor;
  64288. if ($("#checkTextColor").is(":checked")) {
  64289. textcolor = $("#textcolorshow").spectrum("get").toHexString();
  64290. } else {
  64291. textcolor = null;
  64292. }
  64293. let cellcolor;
  64294. if ($("#checkCellColor").is(":checked")) {
  64295. cellcolor = $("#cellcolorshow").spectrum("get").toHexString();
  64296. } else {
  64297. cellcolor = null;
  64298. }
  64299. let fileH = $.extend(true, [], store_default.luckysheetfile);
  64300. let historyRules = _this.getHistoryRules(fileH);
  64301. let rule = {
  64302. "type": "default",
  64303. "cellrange": $.extend(true, [], store_default.luckysheet_select_save),
  64304. "format": {
  64305. "textColor": textcolor,
  64306. "cellColor": cellcolor
  64307. },
  64308. "conditionName": conditionName,
  64309. "conditionRange": conditionRange,
  64310. "conditionValue": conditionValue
  64311. };
  64312. let ruleArr2 = store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)]["luckysheet_conditionformat_save"] == void 0 ? [] : store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)]["luckysheet_conditionformat_save"];
  64313. ruleArr2.push(rule);
  64314. store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)]["luckysheet_conditionformat_save"] = ruleArr2;
  64315. let fileC = $.extend(true, [], store_default.luckysheetfile);
  64316. let currentRules = _this.getCurrentRules(fileC);
  64317. _this.ref(historyRules, currentRules);
  64318. $("#luckysheet-modal-dialog-mask").hide();
  64319. $("#luckysheet-conditionformat-dialog").hide();
  64320. if (server_default.allowUpdate) {
  64321. server_default.saveParam("all", store_default.currentSheetIndex, ruleArr2, {"k": "luckysheet_conditionformat_save"});
  64322. }
  64323. });
  64324. $(document).off("click.CFicons").on("click.CFicons", "#luckysheet-CFicons-dialog .item", function() {
  64325. $("#luckysheet-modal-dialog-mask").hide();
  64326. $("#luckysheet-CFicons-dialog").hide();
  64327. if (store_default.luckysheet_select_save.length > 0) {
  64328. let cellrange = $.extend(true, [], store_default.luckysheet_select_save);
  64329. let format = {
  64330. "len": $(this).attr("data-len"),
  64331. "leftMin": $(this).attr("data-leftMin"),
  64332. "top": $(this).attr("data-top")
  64333. };
  64334. _this.updateItem("icons", cellrange, format);
  64335. }
  64336. });
  64337. $(document).on("click", ".range .fa-table", function() {
  64338. let id = $(this).parents(".luckysheet-modal-dialog").attr("id");
  64339. $("#" + id).hide();
  64340. let source;
  64341. if (id == "luckysheet-conditionformat-dialog") {
  64342. let $id = $(this).siblings("input").attr("id");
  64343. if ($id == "conditionVal") {
  64344. source = "0_1";
  64345. } else {
  64346. source = "0_2";
  64347. }
  64348. } else if (id == "luckysheet-newConditionRule-dialog") {
  64349. let $id = $(this).parents(".range").attr("id");
  64350. if ($id == "formulaConditionVal") {
  64351. source = "1_0";
  64352. } else if ($id == "conditionVal") {
  64353. source = "1_1";
  64354. } else {
  64355. source = "1_2";
  64356. }
  64357. } else if (id == "luckysheet-editorConditionRule-dialog") {
  64358. let $id = $(this).parents(".range").attr("id");
  64359. if ($id == "formulaConditionVal") {
  64360. source = "2_0";
  64361. } else if ($id == "conditionVal") {
  64362. source = "2_1";
  64363. } else {
  64364. source = "2_2";
  64365. }
  64366. }
  64367. let v = $(this).siblings("input").val();
  64368. _this.singleRangeDialog(source, v);
  64369. selectionCopyShow(_this.getRangeByTxt(v));
  64370. });
  64371. $(document).on("click", "#luckysheet-singleRange-dialog-confirm", function() {
  64372. $("#luckysheet-modal-dialog-mask").show();
  64373. $(this).parents("#luckysheet-singleRange-dialog").hide();
  64374. let source = $(this).attr("data-source");
  64375. let v = $(this).parents("#luckysheet-singleRange-dialog").find("input").val();
  64376. if (source == "0_1") {
  64377. $("#luckysheet-conditionformat-dialog").show();
  64378. $("#luckysheet-conditionformat-dialog #conditionVal").val(v);
  64379. } else if (source == "0_2") {
  64380. $("#luckysheet-conditionformat-dialog").show();
  64381. $("#luckysheet-conditionformat-dialog #conditionVal2").val(v);
  64382. } else if (source == "1_0") {
  64383. $("#luckysheet-newConditionRule-dialog").show();
  64384. $("#luckysheet-newConditionRule-dialog #formulaConditionVal input").val(v);
  64385. } else if (source == "1_1") {
  64386. $("#luckysheet-newConditionRule-dialog").show();
  64387. $("#luckysheet-newConditionRule-dialog #conditionVal input").val(v);
  64388. } else if (source == "1_2") {
  64389. $("#luckysheet-newConditionRule-dialog").show();
  64390. $("#luckysheet-newConditionRule-dialog #conditionVal2 input").val(v);
  64391. } else if (source == "2_0") {
  64392. $("#luckysheet-editorConditionRule-dialog").show();
  64393. $("#luckysheet-editorConditionRule-dialog #formulaConditionVal input").val(v);
  64394. } else if (source == "2_1") {
  64395. $("#luckysheet-editorConditionRule-dialog").show();
  64396. $("#luckysheet-editorConditionRule-dialog #conditionVal input").val(v);
  64397. } else if (source == "2_2") {
  64398. $("#luckysheet-editorConditionRule-dialog").show();
  64399. $("#luckysheet-editorConditionRule-dialog #conditionVal2 input").val(v);
  64400. }
  64401. let range2 = [];
  64402. selectionCopyShow(range2);
  64403. });
  64404. $(document).on("click", "#luckysheet-singleRange-dialog-close", function() {
  64405. $("#luckysheet-modal-dialog-mask").show();
  64406. $(this).parents("#luckysheet-singleRange-dialog").hide();
  64407. let source = $(this).attr("data-source");
  64408. if (source == "0_1" || source == "0_2") {
  64409. $("#luckysheet-conditionformat-dialog").show();
  64410. } else if (source == "1_0" || source == "1_1" || source == "1_2") {
  64411. $("#luckysheet-newConditionRule-dialog").show();
  64412. } else if (source == "2_0" || source == "2_1" || source == "2_2") {
  64413. $("#luckysheet-editorConditionRule-dialog").show();
  64414. }
  64415. let range2 = [];
  64416. selectionCopyShow(range2);
  64417. });
  64418. $(document).on("click", ".luckysheet-modal-dialog-title-close", function() {
  64419. let id = $(this).parents(".luckysheet-modal-dialog").attr("id");
  64420. if (id == "luckysheet-newConditionRule-dialog") {
  64421. let source = $("#" + id).find("#luckysheet-newConditionRule-dialog-close").attr("data-source");
  64422. if (source == 1) {
  64423. $("#luckysheet-administerRule-dialog").show();
  64424. }
  64425. }
  64426. if (id == "luckysheet-editorConditionRule-dialog") {
  64427. $("#luckysheet-administerRule-dialog").show();
  64428. }
  64429. if (id == "luckysheet-singleRange-dialog") {
  64430. $("#luckysheet-modal-dialog-mask").show();
  64431. let source = $(this).parents("#luckysheet-singleRange-dialog").find("#luckysheet-singleRange-dialog-confirm").attr("data-source");
  64432. if (source == "0_1" || source == "0_2") {
  64433. $("#luckysheet-conditionformat-dialog").show();
  64434. } else if (source == "1_1" || source == "1_2") {
  64435. $("#luckysheet-newConditionRule-dialog").show();
  64436. } else if (source == "2_1" || source == "2_2") {
  64437. $("#luckysheet-editorConditionRule-dialog").show();
  64438. }
  64439. let range2 = [];
  64440. selectionCopyShow(range2);
  64441. }
  64442. if (id == "luckysheet-multiRange-dialog") {
  64443. $("#luckysheet-modal-dialog-mask").show();
  64444. $("#luckysheet-administerRule-dialog").show();
  64445. let range2 = [];
  64446. selectionCopyShow(range2);
  64447. }
  64448. if (id == "luckysheet-conditionformat-info-dialog") {
  64449. $("#luckysheet-modal-dialog-mask").show();
  64450. }
  64451. });
  64452. $(document).on("click", "#luckysheet-conditionformat-info-dialog-close", function() {
  64453. $(this).parents("#luckysheet-conditionformat-info-dialog").hide();
  64454. });
  64455. },
  64456. singleRangeDialog: function(source, value) {
  64457. $("#luckysheet-modal-dialog-mask").hide();
  64458. $("#luckysheet-singleRange-dialog").remove();
  64459. const conditionformat_Text = locale_default().conditionformat;
  64460. $("body").append(replaceHtml(modelHTML, {
  64461. "id": "luckysheet-singleRange-dialog",
  64462. "addclass": "luckysheet-singleRange-dialog",
  64463. "title": conditionformat_Text.selectCell,
  64464. "content": `<input readonly="readonly" placeholder="${conditionformat_Text.pleaseSelectCell}" value="${value}"/>`,
  64465. "botton": `<button id="luckysheet-singleRange-dialog-confirm" class="btn btn-primary" data-source="${source}">${conditionformat_Text.confirm}</button>
  64466. <button id="luckysheet-singleRange-dialog-close" class="btn btn-default" data-source="${source}">${conditionformat_Text.cancel}</button>`,
  64467. "style": "z-index:100003"
  64468. }));
  64469. let $t = $("#luckysheet-singleRange-dialog").find(".luckysheet-modal-dialog-content").css("min-width", 300).end(), myh = $t.outerHeight(), myw = $t.outerWidth();
  64470. let winw = $(window).width(), winh = $(window).height();
  64471. let scrollLeft = $(document).scrollLeft(), scrollTop = $(document).scrollTop();
  64472. $("#luckysheet-singleRange-dialog").css({
  64473. "left": (winw + scrollLeft - myw) / 2,
  64474. "top": (winh + scrollTop - myh) / 3
  64475. }).show();
  64476. },
  64477. multiRangeDialog: function(dataItem, value) {
  64478. let _this = this;
  64479. $("#luckysheet-modal-dialog-mask").hide();
  64480. $("#luckysheet-multiRange-dialog").remove();
  64481. const conditionformat_Text = locale_default().conditionformat;
  64482. $("body").append(replaceHtml(modelHTML, {
  64483. "id": "luckysheet-multiRange-dialog",
  64484. "addclass": "luckysheet-multiRange-dialog",
  64485. "title": conditionformat_Text.selectRange,
  64486. "content": `<input readonly="readonly" placeholder="${conditionformat_Text.pleaseSelectRange}" value="${value}"/>`,
  64487. "botton": `<button id="luckysheet-multiRange-dialog-confirm" class="btn btn-primary" data-item="${dataItem}">${conditionformat_Text.confirm}</button>
  64488. <button id="luckysheet-multiRange-dialog-close" class="btn btn-default">${conditionformat_Text.cancel}</button>`,
  64489. "style": "z-index:100003"
  64490. }));
  64491. let $t = $("#luckysheet-multiRange-dialog").find(".luckysheet-modal-dialog-content").css("min-width", 300).end(), myh = $t.outerHeight(), myw = $t.outerWidth();
  64492. let winw = $(window).width(), winh = $(window).height();
  64493. let scrollLeft = $(document).scrollLeft(), scrollTop = $(document).scrollTop();
  64494. $("#luckysheet-multiRange-dialog").css({
  64495. "left": (winw + scrollLeft - myw) / 2,
  64496. "top": (winh + scrollTop - myh) / 3
  64497. }).show();
  64498. selectionCopyShow(_this.getRangeByTxt(value));
  64499. },
  64500. getTxtByRange: function(range2) {
  64501. if (range2.length > 0) {
  64502. let txt = [];
  64503. for (let s = 0; s < range2.length; s++) {
  64504. let r1 = range2[s].row[0], r2 = range2[s].row[1];
  64505. let c1 = range2[s].column[0], c2 = range2[s].column[1];
  64506. txt.push(getRangetxt(store_default.currentSheetIndex, {"row": [r1, r2], "column": [c1, c2]}, store_default.currentSheetIndex));
  64507. }
  64508. return txt.join(",");
  64509. }
  64510. },
  64511. getRangeByTxt: function(txt) {
  64512. let range2 = [];
  64513. txt = txt.toString();
  64514. if (txt.indexOf(",") != -1) {
  64515. let arr = txt.split(",");
  64516. for (let i2 = 0; i2 < arr.length; i2++) {
  64517. if (formula_default.iscelldata(arr[i2])) {
  64518. range2.push(formula_default.getcellrange(arr[i2]));
  64519. } else {
  64520. range2 = [];
  64521. break;
  64522. }
  64523. }
  64524. } else {
  64525. if (formula_default.iscelldata(txt)) {
  64526. range2.push(formula_default.getcellrange(txt));
  64527. }
  64528. }
  64529. return range2;
  64530. },
  64531. colorSelectInit: function() {
  64532. const conditionformat_Text = locale_default().conditionformat;
  64533. $(".luckysheet-conditionformat-config-color").spectrum({
  64534. showPalette: true,
  64535. showPaletteOnly: true,
  64536. preferredFormat: "hex",
  64537. clickoutFiresChange: false,
  64538. showInitial: true,
  64539. showInput: true,
  64540. hideAfterPaletteSelect: true,
  64541. showSelectionPalette: true,
  64542. maxPaletteSize: 8,
  64543. maxSelectionSize: 8,
  64544. cancelText: conditionformat_Text.cancel,
  64545. chooseText: conditionformat_Text.confirmColor,
  64546. togglePaletteMoreText: "\u81EA\u5B9A\u4E49",
  64547. togglePaletteLessText: "\u6536\u8D77",
  64548. togglePaletteOnly: true,
  64549. clearText: conditionformat_Text.clearColorSelect,
  64550. noColorSelectedText: "\u6CA1\u6709\u989C\u8272\u88AB\u9009\u62E9",
  64551. localStorageKey: "spectrum.textcolor" + server_default.gridKey,
  64552. palette: [
  64553. ["#000", "#444", "#666", "#999", "#ccc", "#eee", "#f3f3f3", "#fff"],
  64554. ["#f00", "#f90", "#ff0", "#0f0", "#0ff", "#00f", "#90f", "#f0f"],
  64555. ["#f4cccc", "#fce5cd", "#fff2cc", "#d9ead3", "#d0e0e3", "#cfe2f3", "#d9d2e9", "#ead1dc"],
  64556. ["#ea9999", "#f9cb9c", "#ffe599", "#b6d7a8", "#a2c4c9", "#9fc5e8", "#b4a7d6", "#d5a6bd"],
  64557. ["#e06666", "#f6b26b", "#ffd966", "#93c47d", "#76a5af", "#6fa8dc", "#8e7cc3", "#c27ba0"],
  64558. ["#c00", "#e69138", "#f1c232", "#6aa84f", "#45818e", "#3d85c6", "#674ea7", "#a64d79"],
  64559. ["#900", "#b45f06", "#bf9000", "#38761d", "#134f5c", "#0b5394", "#351c75", "#741b47"],
  64560. ["#600", "#783f04", "#7f6000", "#274e13", "#0c343d", "#073763", "#20124d", "#4c1130"]
  64561. ],
  64562. change: function(color) {
  64563. if (color != null) {
  64564. color = color.toHexString();
  64565. }
  64566. }
  64567. });
  64568. },
  64569. conditionformatDialog: function(title, content) {
  64570. let _this = this;
  64571. $("#luckysheet-modal-dialog-mask").show();
  64572. $("#luckysheet-conditionformat-dialog").remove();
  64573. const conditionformat_Text = locale_default().conditionformat;
  64574. $("body").append(replaceHtml(modelHTML, {
  64575. "id": "luckysheet-conditionformat-dialog",
  64576. "addclass": "luckysheet-conditionformat-dialog",
  64577. "title": title,
  64578. "content": content,
  64579. "botton": `<button id="luckysheet-conditionformat-dialog-confirm" class="btn btn-primary">${conditionformat_Text.confirm}</button>
  64580. <button class="btn btn-default luckysheet-model-close-btn">${conditionformat_Text.cancel}</button>`,
  64581. "style": "z-index:9999"
  64582. }));
  64583. let $t = $("#luckysheet-conditionformat-dialog").find(".luckysheet-modal-dialog-content").css("min-width", 300).end(), myh = $t.outerHeight(), myw = $t.outerWidth();
  64584. let winw = $(window).width(), winh = $(window).height();
  64585. let scrollLeft = $(document).scrollLeft(), scrollTop = $(document).scrollTop();
  64586. $("#luckysheet-conditionformat-dialog").css({
  64587. "left": (winw + scrollLeft - myw) / 2,
  64588. "top": (winh + scrollTop - myh) / 3
  64589. }).show();
  64590. _this.init();
  64591. _this.colorSelectInit();
  64592. if (title == locale_default().conditionformat.conditionformat_occurrenceDate) {
  64593. _this.daterangeInit("luckysheet-conditionformat-dialog");
  64594. }
  64595. },
  64596. CFiconsDialog: function() {
  64597. $("#luckysheet-modal-dialog-mask").show();
  64598. $("#luckysheet-CFicons-dialog").remove();
  64599. const conditionformat_Text = locale_default().conditionformat;
  64600. let content = `<div class="box">
  64601. <div style="margin-bottom: 10px;">${conditionformat_Text.pleaseSelectIcon}</div>
  64602. <div class="title">${conditionformat_Text.direction}</div>
  64603. <div class="list">
  64604. <div class="left">
  64605. <div class="item" data-len="3" data-leftMin="0" data-top="0" title="${conditionformat_Text.threeWayArrow}(${conditionformat_Text.multicolor})"><div style="background-position:0 0;"></div></div>
  64606. <div class="item" data-len="3" data-leftMin="0" data-top="1" title="${conditionformat_Text.threeTriangles}"><div style="background-position:0 -20px;"></div></div>
  64607. <div class="item" data-len="4" data-leftMin="0" data-top="2" title="${conditionformat_Text.fourWayArrow}(${conditionformat_Text.multicolor})"><div style="background-position:0 -40px;"></div></div>
  64608. <div class="item" data-len="5" data-leftMin="0" data-top="3" title="${conditionformat_Text.fiveWayArrow}(${conditionformat_Text.multicolor})"><div style="background-position:0 -60px;"></div></div>
  64609. </div>
  64610. <div class="right">
  64611. <div class="item" data-len="3" data-leftMin="5" data-top="0" title="${conditionformat_Text.threeWayArrow}(${conditionformat_Text.grayColor})"><div style="background-position:-131px 0;"></div></div>
  64612. <div class="item" data-len="4" data-leftMin="5" data-top="1" title="${conditionformat_Text.fourWayArrow}(${conditionformat_Text.grayColor})"><div style="background-position:-131px -20px;"></div></div>
  64613. <div class="item" data-len="5" data-leftMin="5" data-top="2" title="${conditionformat_Text.fiveWayArrow}(${conditionformat_Text.grayColor})"><div style="background-position:-131px -40px;"></div></div>
  64614. </div>
  64615. <div style="clear:both;"></div>
  64616. </div>
  64617. <div class="title">${conditionformat_Text.shape}</div>
  64618. <div class="list">
  64619. <div class="left">
  64620. <div class="item" data-len="3" data-leftMin="0" data-top="4" title="${conditionformat_Text.threeColorTrafficLight}(${conditionformat_Text.rimless})"><div style="background-position:0 -80px;"></div></div>
  64621. <div class="item" data-len="3" data-leftMin="0" data-top="5" title="${conditionformat_Text.threeSigns}"><div style="background-position:0 -100px;"></div></div>
  64622. <div class="item" data-len="4" data-leftMin="0" data-top="6" title="${conditionformat_Text.greenRedBlackGradient}"><div style="background-position:0 -120px;"></div></div>
  64623. </div>
  64624. <div class="right">
  64625. <div class="item" data-len="3" data-leftMin="5" data-top="4" title="${conditionformat_Text.threeColorTrafficLight}(${conditionformat_Text.bordered})"><div style="background-position:-131px -80px;"></div></div>
  64626. <div class="item" data-len="4" data-leftMin="5" data-top="5" title="${conditionformat_Text.fourColorTrafficLight}"><div style="background-position:-131px -100px;"></div></div>
  64627. </div>
  64628. <div style="clear:both;"></div>
  64629. </div>
  64630. <div class="title">${conditionformat_Text.mark}</div>
  64631. <div class="list">
  64632. <div class="left">
  64633. <div class="item" data-len="3" data-leftMin="0" data-top="7" title="${conditionformat_Text.threeSymbols}(${conditionformat_Text.circled})"><div style="background-position:0 -140px;"></div></div>
  64634. <div class="item" data-len="3" data-leftMin="0" data-top="8" title="${conditionformat_Text.tricolorFlag}"><div style="background-position:0 -160px;"></div></div>
  64635. </div>
  64636. <div class="right">
  64637. <div class="item" data-len="3" data-leftMin="5" data-top="7" title="${conditionformat_Text.threeSymbols}(${conditionformat_Text.noCircle})"><div style="background-position:-131px -140px;"></div></div>
  64638. </div>
  64639. <div style="clear:both;"></div>
  64640. </div>
  64641. <div class="title">${conditionformat_Text.grade}</div>
  64642. <div class="list">
  64643. <div class="left">
  64644. <div class="item" data-len="3" data-leftMin="0" data-top="9" title="${conditionformat_Text.threeStars}"><div style="background-position:0 -180px;"></div></div>
  64645. <div class="item" data-len="5" data-leftMin="0" data-top="10" title="${conditionformat_Text.fiveQuadrantDiagram}"><div style="background-position:0 -200px;"></div></div>
  64646. <div class="item" data-len="5" data-leftMin="0" data-top="11" title="${conditionformat_Text.fiveBoxes}"><div style="background-position:0 -220px;"></div></div>
  64647. </div>
  64648. <div class="right">
  64649. <div class="item" data-len="4" data-leftMin="5" data-top="9" title="${conditionformat_Text.grade4}"><div style="background-position:-131px -180px;"></div></div>
  64650. <div class="item" data-len="5" data-leftMin="5" data-top="10" title="${conditionformat_Text.grade5}"><div style="background-position:-131px -200px;"></div></div>
  64651. </div>
  64652. <div style="clear:both;"></div>
  64653. </div>
  64654. </div>`;
  64655. $("body").append(replaceHtml(modelHTML, {
  64656. "id": "luckysheet-CFicons-dialog",
  64657. "addclass": "luckysheet-CFicons-dialog",
  64658. "title": conditionformat_Text.icons,
  64659. "content": content,
  64660. "botton": `<button class="btn btn-default luckysheet-model-close-btn">${conditionformat_Text.close}</button>`,
  64661. "style": "z-index:100003"
  64662. }));
  64663. let $t = $("#luckysheet-CFicons-dialog").find(".luckysheet-modal-dialog-content").css("min-width", 400).end(), myh = $t.outerHeight(), myw = $t.outerWidth();
  64664. let winw = $(window).width(), winh = $(window).height();
  64665. let scrollLeft = $(document).scrollLeft(), scrollTop = $(document).scrollTop();
  64666. $("#luckysheet-CFicons-dialog").css({
  64667. "left": (winw + scrollLeft - myw) / 2,
  64668. "top": (winh + scrollTop - myh) / 3
  64669. }).show();
  64670. },
  64671. administerRuleDialog: function() {
  64672. $("#luckysheet-modal-dialog-mask").show();
  64673. $("#luckysheet-administerRule-dialog").remove();
  64674. const conditionformat_Text = locale_default().conditionformat;
  64675. let opHtml = "";
  64676. for (let j = 0; j < store_default.luckysheetfile.length; j++) {
  64677. if (store_default.luckysheetfile[j].status == "1") {
  64678. opHtml += `<option value="${store_default.luckysheetfile[j]["index"]}" selected="selected">
  64679. ${conditionformat_Text.currentSheet}\uFF1A${store_default.luckysheetfile[j]["name"]}
  64680. </option>`;
  64681. } else {
  64682. opHtml += `<option value="${store_default.luckysheetfile[j]["index"]}">
  64683. ${conditionformat_Text.sheet}\uFF1A${store_default.luckysheetfile[j]["name"]}
  64684. </option>`;
  64685. }
  64686. }
  64687. let content = `<div class="chooseSheet">
  64688. <label>${conditionformat_Text.showRules}\uFF1A</label>
  64689. <select>${opHtml}</select>
  64690. </div>
  64691. <div class="ruleBox">
  64692. <div class="ruleBtn">
  64693. <button id="newConditionRule" class="btn btn-default">${conditionformat_Text.newRule}</button>
  64694. <button id="editorConditionRule" class="btn btn-default">${conditionformat_Text.editRule}</button>
  64695. <button id="deleteConditionRule" class="btn btn-default">${conditionformat_Text.deleteRule}</button>
  64696. </div>
  64697. <div class="ruleList">
  64698. <div class="listTitle">
  64699. <span>${conditionformat_Text.rule}</span>
  64700. <span>${conditionformat_Text.format}</span>
  64701. <span>${conditionformat_Text.applyRange}</span>
  64702. </div>
  64703. <div class="listBox"></div>
  64704. </div>
  64705. </div>`;
  64706. $("body").append(replaceHtml(modelHTML, {
  64707. "id": "luckysheet-administerRule-dialog",
  64708. "addclass": "luckysheet-administerRule-dialog",
  64709. "title": conditionformat_Text.conditionformatManageRules,
  64710. "content": content,
  64711. "botton": `<button id="luckysheet-administerRule-dialog-confirm" class="btn btn-primary">${conditionformat_Text.confirm}</button>
  64712. <button id="luckysheet-administerRule-dialog-close" class="btn btn-default">${conditionformat_Text.close}</button>`,
  64713. "style": "z-index:100003"
  64714. }));
  64715. let $t = $("#luckysheet-administerRule-dialog").find(".luckysheet-modal-dialog-content").css("min-width", 400).end(), myh = $t.outerHeight(), myw = $t.outerWidth();
  64716. let winw = $(window).width(), winh = $(window).height();
  64717. let scrollLeft = $(document).scrollLeft(), scrollTop = $(document).scrollTop();
  64718. $("#luckysheet-administerRule-dialog").css({
  64719. "left": (winw + scrollLeft - myw) / 2,
  64720. "top": (winh + scrollTop - myh) / 3
  64721. }).show();
  64722. let index2 = $("#luckysheet-administerRule-dialog .chooseSheet option:selected").val();
  64723. this.getConditionRuleList(index2);
  64724. },
  64725. getConditionRuleList: function(index2) {
  64726. let _this = this;
  64727. $("#luckysheet-administerRule-dialog .ruleList .listBox").empty();
  64728. let ruleArr2 = _this.fileClone[getSheetIndex(index2)].luckysheet_conditionformat_save;
  64729. if (ruleArr2 != null && ruleArr2.length > 0) {
  64730. const conditionformat_Text = locale_default().conditionformat;
  64731. for (let i2 = 0; i2 < ruleArr2.length; i2++) {
  64732. let type = ruleArr2[i2]["type"];
  64733. let format = ruleArr2[i2]["format"];
  64734. let cellrange = ruleArr2[i2]["cellrange"];
  64735. let ruleName;
  64736. let formatHtml = "";
  64737. if (type == "dataBar") {
  64738. ruleName = conditionformat_Text.dataBar;
  64739. formatHtml = '<canvas width="46" height="18" style="width: 46px;height: 18px;margin: 3px 0 0 5px;"></canvas>';
  64740. } else if (type == "colorGradation") {
  64741. ruleName = conditionformat_Text.colorGradation;
  64742. formatHtml = '<canvas width="46" height="18" style="width: 46px;height: 18px;margin: 3px 0 0 5px;"></canvas>';
  64743. } else if (type == "icons") {
  64744. ruleName = conditionformat_Text.icons;
  64745. formatHtml = '<canvas width="46" height="18" style="width: 46px;height: 18px;margin: 3px 0 0 5px;"></canvas>';
  64746. } else {
  64747. ruleName = _this.getConditionRuleName(ruleArr2[i2].conditionName, ruleArr2[i2].conditionRange, ruleArr2[i2].conditionValue);
  64748. if (format["textColor"] != null) {
  64749. formatHtml += '<span class="colorbox" title="' + conditionformat_Text.textColor + '" style="background-color:' + format["textColor"] + '"></span>';
  64750. }
  64751. if (format["cellColor"] != null) {
  64752. formatHtml += '<span class="colorbox" title="' + conditionformat_Text.cellColor + '" style="background-color:' + format["cellColor"] + '"></span>';
  64753. }
  64754. }
  64755. let rangeTxtArr = [];
  64756. for (let s = 0; s < cellrange.length; s++) {
  64757. let r1 = cellrange[s].row[0], r2 = cellrange[s].row[1];
  64758. let c1 = cellrange[s].column[0], c2 = cellrange[s].column[1];
  64759. rangeTxtArr.push(chatatABC(c1) + (r1 + 1) + ":" + chatatABC(c2) + (r2 + 1));
  64760. }
  64761. let itemHtml = '<div class="item" data-item="' + i2 + '"><div class="ruleName" title="' + ruleName + '">' + ruleName + '</div><div class="format">' + formatHtml + '</div><div class="ruleRange"><input class="formulaInputFocus" readonly="true" value="' + rangeTxtArr.join(",") + '"/><i class="fa fa-table" aria-hidden="true" title="' + conditionformat_Text.selectRange + '"></i></div></div>';
  64762. $("#luckysheet-administerRule-dialog .ruleList .listBox").prepend(itemHtml);
  64763. }
  64764. $("#luckysheet-administerRule-dialog .ruleList .listBox .item canvas").each(function(i2) {
  64765. let x = $(this).closest(".item").attr("data-item");
  64766. let type = ruleArr2[x]["type"];
  64767. let format = ruleArr2[x]["format"];
  64768. let can = $(this).get(0).getContext("2d");
  64769. if (type == "dataBar") {
  64770. if (format.length == 2) {
  64771. let my_gradient = can.createLinearGradient(0, 0, 46, 0);
  64772. my_gradient.addColorStop(0, format[0]);
  64773. my_gradient.addColorStop(1, format[1]);
  64774. can.fillStyle = my_gradient;
  64775. can.fillRect(0, 0, 46, 18);
  64776. can.beginPath();
  64777. can.moveTo(0, 0);
  64778. can.lineTo(0, 18);
  64779. can.lineTo(46, 18);
  64780. can.lineTo(46, 0);
  64781. can.lineTo(0, 0);
  64782. can.lineWidth = store_default.devicePixelRatio;
  64783. can.strokeStyle = format[0];
  64784. can.stroke();
  64785. can.closePath();
  64786. } else if (format.length == 1) {
  64787. can.fillStyle = format[0];
  64788. can.fillRect(0, 0, 46, 18);
  64789. can.beginPath();
  64790. can.moveTo(0, 0);
  64791. can.lineTo(0, 18);
  64792. can.lineTo(46, 18);
  64793. can.lineTo(46, 0);
  64794. can.lineTo(0, 0);
  64795. can.lineWidth = store_default.devicePixelRatio;
  64796. can.strokeStyle = format[0];
  64797. can.stroke();
  64798. can.closePath();
  64799. }
  64800. } else if (type == "colorGradation") {
  64801. let my_gradient = can.createLinearGradient(0, 0, 46, 0);
  64802. if (format.length == 3) {
  64803. my_gradient.addColorStop(0, format[0]);
  64804. my_gradient.addColorStop(0.5, format[1]);
  64805. my_gradient.addColorStop(1, format[2]);
  64806. } else if (format.length == 2) {
  64807. my_gradient.addColorStop(0, format[0]);
  64808. my_gradient.addColorStop(1, format[1]);
  64809. }
  64810. can.fillStyle = my_gradient;
  64811. can.fillRect(0, 0, 46, 18);
  64812. } else if (type == "icons") {
  64813. let len = format["len"];
  64814. let l = format["leftMin"];
  64815. let t = format["top"];
  64816. let w1 = 32 * len + 10 * (len - 1);
  64817. let h1 = 32;
  64818. let w2 = 46;
  64819. let h2 = 46 * 32 / w1;
  64820. if (l == "0") {
  64821. can.drawImage(luckysheet_CFiconsImg, 0, t * 32, w1, h1, 0, (18 - h2) / 2, w2, h2);
  64822. } else if (l == "5") {
  64823. can.drawImage(luckysheet_CFiconsImg, 210, t * 32, w1, h1, 0, (18 - h2) / 2, w2, h2);
  64824. }
  64825. }
  64826. });
  64827. $("#luckysheet-administerRule-dialog .ruleList .listBox .item").eq(0).addClass("on");
  64828. }
  64829. },
  64830. getConditionRuleName: function(conditionName, conditionRange, conditionValue) {
  64831. let v;
  64832. if (conditionRange[0] != null) {
  64833. v = chatatABC(conditionRange[0]["column"][0]) + (conditionRange[0]["row"][0] + 1);
  64834. } else {
  64835. v = conditionValue[0];
  64836. }
  64837. const conditionformat_Text = locale_default().conditionformat;
  64838. if (conditionName == "greaterThan") {
  64839. return conditionformat_Text.cellValue + " > " + v;
  64840. } else if (conditionName == "lessThan") {
  64841. return conditionformat_Text.cellValue + " < " + v;
  64842. } else if (conditionName == "betweenness") {
  64843. let v2;
  64844. if (conditionRange[1] != null) {
  64845. v2 = chatatABC(conditionRange[1]["column"][0]) + (conditionRange[1]["row"][0] + 1);
  64846. } else {
  64847. v2 = conditionValue[1];
  64848. }
  64849. return conditionformat_Text.cellValue + " " + conditionformat_Text.between + " " + v + " " + conditionformat_Text.in + " " + v2 + " " + conditionformat_Text.between2;
  64850. } else if (conditionName == "equal") {
  64851. return conditionformat_Text.cellValue + " = " + v;
  64852. } else if (conditionName == "textContains") {
  64853. return conditionformat_Text.cellValue + conditionformat_Text.contain + " =" + v;
  64854. } else if (conditionName == "occurrenceDate") {
  64855. return conditionValue;
  64856. } else if (conditionName == "duplicateValue") {
  64857. if (conditionValue == "0") {
  64858. return conditionformat_Text.duplicateValue;
  64859. }
  64860. if (conditionValue == "1") {
  64861. return conditionformat_Text.uniqueValue;
  64862. }
  64863. } else if (conditionName == "top10") {
  64864. return conditionformat_Text.top + " " + v + " " + conditionformat_Text.oneself;
  64865. } else if (conditionName == "top10%") {
  64866. return conditionformat_Text.top + " " + v + "% " + conditionformat_Text.oneself;
  64867. } else if (conditionName == "last10") {
  64868. return conditionformat_Text.last + " " + v + " " + conditionformat_Text.oneself;
  64869. } else if (conditionName == "last10%") {
  64870. return conditionformat_Text.last + " " + v + "% " + conditionformat_Text.oneself;
  64871. } else if (conditionName == "AboveAverage") {
  64872. return conditionformat_Text.aboveAverage;
  64873. } else if (conditionName == "SubAverage") {
  64874. return conditionformat_Text.belowAverage;
  64875. } else if (conditionName == "formula") {
  64876. if (v.slice(0, 1) != "=") {
  64877. v = "=" + v;
  64878. }
  64879. return conditionformat_Text.formula + ": " + v;
  64880. }
  64881. },
  64882. newConditionRuleDialog: function(source) {
  64883. let _this = this;
  64884. const conditionformat_Text = locale_default().conditionformat;
  64885. let ruleExplainHtml = _this.getRuleExplain(0);
  64886. $("#luckysheet-modal-dialog-mask").show();
  64887. $("#luckysheet-administerRule-dialog").hide();
  64888. $("#luckysheet-newConditionRule-dialog").remove();
  64889. let content = '<div><div class="boxTitle">' + conditionformat_Text.chooseRuleType + "\uFF1A</div>" + _this.ruleTypeHtml() + '<div class="boxTitle">' + conditionformat_Text.editRuleDescription + '\uFF1A</div><div class="ruleExplainBox">' + ruleExplainHtml + "</div></div>";
  64890. $("body").append(replaceHtml(modelHTML, {
  64891. "id": "luckysheet-newConditionRule-dialog",
  64892. "addclass": "luckysheet-newEditorRule-dialog",
  64893. "title": conditionformat_Text.newFormatRule,
  64894. "content": content,
  64895. "botton": `<button id="luckysheet-newConditionRule-dialog-confirm" class="btn btn-primary" data-source="${source}">${conditionformat_Text.confirm}</button>
  64896. <button id="luckysheet-newConditionRule-dialog-close" class="btn btn-default" data-source="${source}">${conditionformat_Text.cancel}</button>`,
  64897. "style": "z-index:100003"
  64898. }));
  64899. let $t = $("#luckysheet-newConditionRule-dialog").find(".luckysheet-modal-dialog-content").css("min-width", 400).end(), myh = $t.outerHeight(), myw = $t.outerWidth();
  64900. let winw = $(window).width(), winh = $(window).height();
  64901. let scrollLeft = $(document).scrollLeft(), scrollTop = $(document).scrollTop();
  64902. $("#luckysheet-newConditionRule-dialog").css({
  64903. "left": (winw + scrollLeft - myw) / 2,
  64904. "top": (winh + scrollTop - myh) / 3
  64905. }).show();
  64906. $("#luckysheet-newConditionRule-dialog .ruleTypeBox .ruleTypeItem:eq(0)").addClass("on").siblings().removeClass("on");
  64907. _this.colorSelectInit();
  64908. },
  64909. editorConditionRuleDialog: function() {
  64910. let _this = this;
  64911. const conditionformat_Text = locale_default().conditionformat;
  64912. let rule = _this.editorRule.data;
  64913. if (rule == null) {
  64914. return;
  64915. }
  64916. let ruleType = rule["type"], ruleFormat = rule["format"], conditionName = rule["conditionName"];
  64917. let index2, type1;
  64918. if (ruleType == "dataBar" || ruleType == "colorGradation" || ruleType == "icons") {
  64919. index2 = 0;
  64920. type1 = ruleType;
  64921. } else {
  64922. if (conditionName == "greaterThan" || conditionName == "lessThan" || conditionName == "betweenness" || conditionName == "equal" || conditionName == "textContains" || conditionName == "occurrenceDate") {
  64923. index2 = 1;
  64924. if (conditionName == "greaterThan" || conditionName == "lessThan" || conditionName == "betweenness" || conditionName == "equal") {
  64925. type1 = "number";
  64926. } else if (conditionName == "textContains") {
  64927. type1 = "text";
  64928. } else if (conditionName == "occurrenceDate") {
  64929. type1 = "date";
  64930. }
  64931. } else if (conditionName == "top10" || conditionName == "top10%" || conditionName == "last10" || conditionName == "last10%") {
  64932. index2 = 2;
  64933. if (conditionName == "top10" || conditionName == "top10%") {
  64934. type1 = "top";
  64935. } else if (conditionName == "last10" || conditionName == "last10%") {
  64936. type1 = "last";
  64937. }
  64938. } else if (conditionName == "AboveAverage" || conditionName == "SubAverage") {
  64939. index2 = 3;
  64940. type1 = conditionName;
  64941. } else if (conditionName == "duplicateValue") {
  64942. index2 = 4;
  64943. type1 = rule["conditionValue"];
  64944. } else if (conditionName == "formula") {
  64945. index2 = 5;
  64946. }
  64947. }
  64948. let ruleExplainHtml = _this.getRuleExplain(index2);
  64949. $("#luckysheet-modal-dialog-mask").show();
  64950. $("#luckysheet-administerRule-dialog").hide();
  64951. $("#luckysheet-editorConditionRule-dialog").remove();
  64952. let content = '<div><div class="boxTitle">' + conditionformat_Text.chooseRuleType + "\uFF1A</div>" + _this.ruleTypeHtml() + '<div class="boxTitle">' + conditionformat_Text.editRuleDescription + '\uFF1A</div><div class="ruleExplainBox">' + ruleExplainHtml + "</div></div>";
  64953. $("body").append(replaceHtml(modelHTML, {
  64954. "id": "luckysheet-editorConditionRule-dialog",
  64955. "addclass": "luckysheet-newEditorRule-dialog",
  64956. "title": conditionformat_Text.editFormatRule,
  64957. "content": content,
  64958. "botton": `<button id="luckysheet-editorConditionRule-dialog-confirm" class="btn btn-primary">${conditionformat_Text.confirm}</button>
  64959. <button id="luckysheet-editorConditionRule-dialog-close" class="btn btn-default">${conditionformat_Text.cancel}</button>`,
  64960. "style": "z-index:100003"
  64961. }));
  64962. let $t = $("#luckysheet-editorConditionRule-dialog").find(".luckysheet-modal-dialog-content").css("min-width", 400).end(), myh = $t.outerHeight(), myw = $t.outerWidth();
  64963. let winw = $(window).width(), winh = $(window).height();
  64964. let scrollLeft = $(document).scrollLeft(), scrollTop = $(document).scrollTop();
  64965. $("#luckysheet-editorConditionRule-dialog").css({
  64966. "left": (winw + scrollLeft - myw) / 2,
  64967. "top": (winh + scrollTop - myh) / 3
  64968. }).show();
  64969. _this.colorSelectInit();
  64970. $("#luckysheet-editorConditionRule-dialog .ruleTypeBox .ruleTypeItem:eq(" + index2 + ")").addClass("on").siblings().removeClass("on");
  64971. $("#luckysheet-editorConditionRule-dialog #type1").val(type1);
  64972. if (type1 == "dataBar" || type1 == "colorGradation" || type1 == "icons" || type1 == "number" || type1 == "text" || type1 == "date") {
  64973. $("#luckysheet-editorConditionRule-dialog ." + type1 + "Box").show();
  64974. $("#luckysheet-editorConditionRule-dialog ." + type1 + "Box").siblings().hide();
  64975. }
  64976. if (type1 == "date") {
  64977. _this.daterangeInit("luckysheet-editorConditionRule-dialog");
  64978. }
  64979. if (ruleType == "dataBar" || ruleType == "colorGradation" || ruleType == "icons") {
  64980. if (type1 == "dataBar") {
  64981. if (ruleFormat.length == 2) {
  64982. $("#luckysheet-editorConditionRule-dialog .dataBarBox #type2").val("gradient");
  64983. } else if (ruleFormat.length == 1) {
  64984. $("#luckysheet-editorConditionRule-dialog .dataBarBox #type2").val("solid");
  64985. }
  64986. $("#luckysheet-editorConditionRule-dialog .dataBarBox .luckysheet-conditionformat-config-color").spectrum("set", ruleFormat[0]);
  64987. } else if (type1 == "colorGradation") {
  64988. if (ruleFormat.length == 3) {
  64989. $("#luckysheet-editorConditionRule-dialog .colorGradationBox #type2").val("threeColor");
  64990. $("#luckysheet-editorConditionRule-dialog .colorGradationBox .midVal").show();
  64991. $("#luckysheet-editorConditionRule-dialog .colorGradationBox .maxVal .luckysheet-conditionformat-config-color").spectrum("set", ruleFormat[0]);
  64992. $("#luckysheet-editorConditionRule-dialog .colorGradationBox .midVal .luckysheet-conditionformat-config-color").spectrum("set", ruleFormat[1]);
  64993. $("#luckysheet-editorConditionRule-dialog .colorGradationBox .minVal .luckysheet-conditionformat-config-color").spectrum("set", ruleFormat[2]);
  64994. } else if (ruleFormat.length == 2) {
  64995. $("#luckysheet-editorConditionRule-dialog .colorGradationBox #type2").val("twoColor");
  64996. $("#luckysheet-editorConditionRule-dialog .colorGradationBox .midVal").hide();
  64997. $("#luckysheet-editorConditionRule-dialog .colorGradationBox .maxVal .luckysheet-conditionformat-config-color").spectrum("set", ruleFormat[0]);
  64998. $("#luckysheet-editorConditionRule-dialog .colorGradationBox .minVal .luckysheet-conditionformat-config-color").spectrum("set", ruleFormat[1]);
  64999. }
  65000. } else if (type1 == "icons") {
  65001. let len = ruleFormat["len"];
  65002. let l = ruleFormat["leftMin"];
  65003. let t = ruleFormat["top"];
  65004. $("#luckysheet-editorConditionRule-dialog .iconsBox li").each(function(i2, e) {
  65005. if ($(e).find("div").attr("data-len") == len && $(e).find("div").attr("data-leftmin") == l && $(e).find("div").attr("data-top") == t) {
  65006. $("#luckysheet-editorConditionRule-dialog .iconsBox .showbox .model").css("background-position", $(e).find("div").css("background-position"));
  65007. $("#luckysheet-editorConditionRule-dialog .iconsBox .showbox .model").attr("data-len", $(e).find("div").attr("data-len"));
  65008. $("#luckysheet-editorConditionRule-dialog .iconsBox .showbox .model").attr("data-leftmin", $(e).find("div").attr("data-leftmin"));
  65009. $("#luckysheet-editorConditionRule-dialog .iconsBox .showbox .model").attr("data-top", $(e).find("div").attr("data-leftmin"));
  65010. $("#luckysheet-editorConditionRule-dialog .iconsBox .showbox .model").attr("title", $(e).find("div").attr("title"));
  65011. return true;
  65012. }
  65013. });
  65014. }
  65015. } else {
  65016. if (type1 == "number") {
  65017. $("#luckysheet-editorConditionRule-dialog .numberBox #type2").val(conditionName);
  65018. let val1;
  65019. if (rule.conditionRange[0] != null) {
  65020. val1 = getRangetxt(store_default.currentSheetIndex, {"row": rule.conditionRange[0]["row"], "column": rule.conditionRange[0]["column"]}, store_default.currentSheetIndex);
  65021. } else {
  65022. val1 = rule.conditionValue[0];
  65023. }
  65024. $("#luckysheet-editorConditionRule-dialog .numberBox #conditionVal input").val(val1);
  65025. if (conditionName == "betweenness") {
  65026. $("#luckysheet-editorConditionRule-dialog .numberBox .txt").show();
  65027. $("#luckysheet-editorConditionRule-dialog .numberBox #conditionVal2").show();
  65028. let val2;
  65029. if (rule.conditionRange[1] != null) {
  65030. val2 = getRangetxt(store_default.currentSheetIndex, {"row": rule.conditionRange[1]["row"], "column": rule.conditionRange[1]["column"]}, store_default.currentSheetIndex);
  65031. } else {
  65032. val2 = rule.conditionValue[1];
  65033. }
  65034. $("#luckysheet-editorConditionRule-dialog .numberBox #conditionVal2 input").val(val2);
  65035. } else {
  65036. $("#luckysheet-editorConditionRule-dialog .numberBox .txt").hide();
  65037. $("#luckysheet-editorConditionRule-dialog .numberBox #conditionVal2").hide();
  65038. }
  65039. } else if (type1 == "text") {
  65040. let val1;
  65041. if (rule.conditionRange[0] != null) {
  65042. val1 = getRangetxt(store_default.currentSheetIndex, {"row": rule.conditionRange[0]["row"], "column": rule.conditionRange[0]["column"]}, store_default.currentSheetIndex);
  65043. } else {
  65044. val1 = rule.conditionValue[0];
  65045. }
  65046. $("#luckysheet-editorConditionRule-dialog .textBox #conditionVal input").val(val1);
  65047. } else if (type1 == "date") {
  65048. _this.daterangeInit("luckysheet-editorConditionRule-dialog");
  65049. let val1 = rule.conditionValue[0];
  65050. $("#luckysheet-editorConditionRule-dialog .dateBox #daterange-btn").val(val1);
  65051. } else if (type1 == "top" || type1 == "last") {
  65052. let val1 = rule.conditionValue[0];
  65053. if (conditionName == "top10%" || conditionName == "last10%") {
  65054. $("#luckysheet-editorConditionRule-dialog #isPercent").attr("checked", "checked");
  65055. }
  65056. } else {
  65057. if (conditionName == "formula") {
  65058. let val1 = rule.conditionValue[0];
  65059. $("#luckysheet-editorConditionRule-dialog #formulaConditionVal input").val(val1);
  65060. }
  65061. }
  65062. $("#luckysheet-editorConditionRule-dialog #textcolorshow").spectrum("set", ruleFormat.textColor);
  65063. $("#luckysheet-editorConditionRule-dialog #cellcolorshow").spectrum("set", ruleFormat.cellColor);
  65064. }
  65065. },
  65066. infoDialog: function(title, content) {
  65067. $("#luckysheet-modal-dialog-mask").show();
  65068. $("#luckysheet-conditionformat-info-dialog").remove();
  65069. $("body").append(replaceHtml(modelHTML, {
  65070. "id": "luckysheet-conditionformat-info-dialog",
  65071. "addclass": "",
  65072. "title": title,
  65073. "content": content,
  65074. "botton": `<button id="luckysheet-conditionformat-info-dialog-close" class="btn btn-default">${locale_default().conditionformat.close}</button>`,
  65075. "style": "z-index:100003"
  65076. }));
  65077. let $t = $("#luckysheet-conditionformat-info-dialog").find(".luckysheet-modal-dialog-content").css("min-width", 300).end(), myh = $t.outerHeight(), myw = $t.outerWidth();
  65078. let winw = $(window).width(), winh = $(window).height();
  65079. let scrollLeft = $(document).scrollLeft(), scrollTop = $(document).scrollTop();
  65080. $("#luckysheet-conditionformat-info-dialog").css({
  65081. "left": (winw + scrollLeft - myw) / 2,
  65082. "top": (winh + scrollTop - myh) / 3
  65083. }).show();
  65084. },
  65085. getRuleExplain: function(index2) {
  65086. const conditionformat_Text = locale_default().conditionformat;
  65087. let textCellColorHtml = this.textCellColorHtml();
  65088. let ruleExplainHtml;
  65089. switch (index2) {
  65090. case 0:
  65091. ruleExplainHtml = `<div class="title">${conditionformat_Text.ruleTypeItem1}\uFF1A</div>
  65092. <div style="height: 30px;margin-bottom: 5px;">
  65093. <label style="display: block;width: 80px;height: 30px;line-height: 30px;float: left;">${conditionformat_Text.formatStyle}\uFF1A</label>
  65094. <select id="type1">
  65095. <option value="dataBar">${conditionformat_Text.dataBar}</option>
  65096. <option value="colorGradation">${conditionformat_Text.colorGradation}</option>
  65097. <option value="icons">${conditionformat_Text.icons}</option>
  65098. </select>
  65099. </div>
  65100. <div>
  65101. <div class="type1Box dataBarBox">
  65102. <div style="height: 30px;margin-bottom: 5px;">
  65103. <label style="display: block;width: 80px;height: 30px;line-height: 30px;float: left;">${conditionformat_Text.fillType}\uFF1A</label>
  65104. <select id="type2">
  65105. <option value="gradient">${conditionformat_Text.gradient}</option>
  65106. <option value="solid">${conditionformat_Text.solid}</option>
  65107. </select>
  65108. </div>
  65109. <div style="height: 30px;margin-bottom: 5px;">
  65110. <label style="display: block;width: 80px;height: 30px;line-height: 30px;float: left;">${conditionformat_Text.color}\uFF1A</label>
  65111. <input data-tips="${conditionformat_Text.dataBarColor}" data-func="background" class="luckysheet-conditionformat-config-color" type="text" value="#638ec6" style="display: none;">
  65112. </div>
  65113. </div>
  65114. <div class="type1Box colorGradationBox" style="display: none;">
  65115. <div style="height: 30px;margin-bottom: 5px;">
  65116. <label style="display: block;width: 80px;height: 30px;line-height: 30px;float: left;">${conditionformat_Text.fillType}\uFF1A</label>
  65117. <select id="type2">
  65118. <option value="threeColor">${conditionformat_Text.tricolor}</option>
  65119. <option value="twoColor">${conditionformat_Text.twocolor}</option>
  65120. </select>
  65121. </div>
  65122. <div class="maxVal" style="height: 30px;margin-bottom: 5px;">
  65123. <label style="display: block;width: 80px;height: 30px;line-height: 30px;float: left;">${conditionformat_Text.maxValue}\uFF1A</label>
  65124. <input data-tips="${conditionformat_Text.maxValue} ${conditionformat_Text.color}" data-func="background" class="luckysheet-conditionformat-config-color" type="text" value="rgb(99, 190, 123)" style="display: none;">
  65125. </div>
  65126. <div class="midVal" style="height: 30px;margin-bottom: 5px;">
  65127. <label style="display: block;width: 80px;height: 30px;line-height: 30px;float: left;">${conditionformat_Text.medianValue}\uFF1A</label>
  65128. <input data-tips="${conditionformat_Text.medianValue} ${conditionformat_Text.color}" data-func="background" class="luckysheet-conditionformat-config-color" type="text" value="rgb(255, 235, 132)" style="display: none;">
  65129. </div>
  65130. <div class="minVal" style="height: 30px;margin-bottom: 5px;">
  65131. <label style="display: block;width: 80px;height: 30px;line-height: 30px;float: left;">${conditionformat_Text.minValue}\uFF1A</label>
  65132. <input data-tips="${conditionformat_Text.minValue} ${conditionformat_Text.color}" data-func="background" class="luckysheet-conditionformat-config-color" type="text" value="rgb(248, 105, 107)" style="display: none;">
  65133. </div>
  65134. </div>
  65135. <div class="type1Box iconsBox" style="display: none;">
  65136. <label>${conditionformat_Text.fillType}\uFF1A</label>
  65137. <div class="showbox">
  65138. <div class="model" data-len="3" data-leftmin="0" data-top="0" title="${conditionformat_Text.threeWayArrow}(${conditionformat_Text.multicolor})" style="background-position: 0 0;"></div>
  65139. <span class="ui-selectmenu-icon ui-icon ui-icon-triangle-1-s" style="margin-top: 2px;"></span>
  65140. </div>
  65141. <ul>
  65142. <li><div data-len="3" data-leftmin="0" data-top="0" title="${conditionformat_Text.threeWayArrow}(${conditionformat_Text.multicolor})" style="background-position: 0 0;"></div></li>
  65143. <li><div data-len="3" data-leftmin="5" data-top="0" title="${conditionformat_Text.threeWayArrow}(${conditionformat_Text.grayColor})" style="background-position: -131px 0;"></div></li>
  65144. <li><div data-len="3" data-leftmin="0" data-top="1" title="${conditionformat_Text.threeTriangles}" style="background-position: 0 -20px;"></div></li>
  65145. <li><div data-len="4" data-leftmin="0" data-top="2" title="${conditionformat_Text.fourWayArrow}(${conditionformat_Text.multicolor})" style="background-position: 0 -40px;"></div></li>
  65146. <li><div data-len="4" data-leftmin="5" data-top="1" title="${conditionformat_Text.fourWayArrow}(${conditionformat_Text.grayColor})" style="background-position: -131px -20px;"></div></li>
  65147. <li><div data-len="5" data-leftmin="0" data-top="3" title="${conditionformat_Text.fiveWayArrow}(${conditionformat_Text.multicolor})" style="background-position: 0 -60px;"></div></li>
  65148. <li><div data-len="5" data-leftmin="5" data-top="2" title="${conditionformat_Text.fiveWayArrow}(${conditionformat_Text.grayColor})" style="background-position: -131px -40px;"></div></li>
  65149. <li><div data-len="3" data-leftmin="0" data-top="4" title="${conditionformat_Text.threeColorTrafficLight}(${conditionformat_Text.rimless})" style="background-position: 0 -80px;"></div></li>
  65150. <li><div data-len="3" data-leftmin="5" data-top="4" title="${conditionformat_Text.threeColorTrafficLight}(${conditionformat_Text.bordered})" style="background-position: -131px -80px;"></div></li>
  65151. <li><div data-len="3" data-leftmin="0" data-top="5" title="${conditionformat_Text.threeSigns}" style="background-position: 0 -100px;"></div></li>
  65152. <li><div data-len="4" data-leftmin="5" data-top="5" title="${conditionformat_Text.fourColorTrafficLight}" style="background-position: -131px -100px;"></div></li>
  65153. <li><div data-len="4" data-leftmin="0" data-top="6" title="${conditionformat_Text.greenRedBlackGradient}" style="background-position: 0 -120px;"></div></li>
  65154. <li><div data-len="3" data-leftmin="0" data-top="7" title="${conditionformat_Text.threeSymbols}(${conditionformat_Text.circled})" style="background-position: 0 -140px;"></div></li>
  65155. <li><div data-len="3" data-leftmin="5" data-top="7" title="${conditionformat_Text.threeSymbols}(${conditionformat_Text.noCircle})" style="background-position: -131px -140px;"></div></li>
  65156. <li><div data-len="3" data-leftmin="0" data-top="8" title="${conditionformat_Text.tricolorFlag}" style="background-position: 0 -160px;"></div></li>
  65157. <li><div data-len="3" data-leftmin="0" data-top="9" title="${conditionformat_Text.threeStars}" style="background-position: 0 -180px;"></div></li>
  65158. <li><div data-len="5" data-leftmin="0" data-top="10" title="${conditionformat_Text.fiveQuadrantDiagram}" style="background-position: 0 -200px;"></div></li>
  65159. <li><div data-len="5" data-leftmin="0" data-top="11" title="${conditionformat_Text.fiveBoxes}" style="background-position: 0 -220px;"></div></li>
  65160. <li><div data-len="4" data-leftmin="5" data-top="9" title="${conditionformat_Text.grade4}" style="background-position: -131px -180px;"></div></li>
  65161. <li><div data-len="5" data-leftmin="5" data-top="10" title="${conditionformat_Text.grade5}" style="background-position: -131px -200px;"></div></li>
  65162. </ul>
  65163. </div>
  65164. </div>`;
  65165. break;
  65166. case 1:
  65167. ruleExplainHtml = `<div class="title">${conditionformat_Text.ruleTypeItem2_title}\uFF1A</div>
  65168. <div style="height: 30px;margin-bottom: 10px;">
  65169. <select id="type1">
  65170. <option value="number">${conditionformat_Text.cellValue}</option>
  65171. <option value="text">${conditionformat_Text.specificText}</option>
  65172. <option value="date">${conditionformat_Text.occurrence}</option>
  65173. </select>
  65174. <div>
  65175. <div class="type1Box numberBox">
  65176. <select id="type2">
  65177. <option value="greaterThan">${conditionformat_Text.greaterThan}</option>
  65178. <option value="lessThan">${conditionformat_Text.lessThan}</option>
  65179. <option value="betweenness">${conditionformat_Text.between}</option>
  65180. <option value="equal">${conditionformat_Text.equal}</option>
  65181. </select>
  65182. <div class="inpbox range" id="conditionVal">
  65183. <input class="formulaInputFocus"/>
  65184. <i class="fa fa-table" aria-hidden="true" title="${conditionformat_Text.selectCell}"></i>
  65185. </div>
  65186. <span class="txt" style="display: none;">${conditionformat_Text.in}</span>
  65187. <div class="inpbox range" id="conditionVal2" style="display: none;">
  65188. <input class="formulaInputFocus"/>
  65189. <i class="fa fa-table" aria-hidden="true" title="${conditionformat_Text.selectDataRange}"></i>
  65190. </div>
  65191. </div>
  65192. <div class="type1Box textBox" style="display: none;">
  65193. <select id="type2">
  65194. <option value="">${conditionformat_Text.contain}</option>
  65195. </select>
  65196. <div class="inpbox range" id="conditionVal">
  65197. <input class="formulaInputFocus"/>
  65198. <i class="fa fa-table" aria-hidden="true" title="${conditionformat_Text.selectCell}"></i>
  65199. </div>
  65200. </div>
  65201. <div class="type1Box dateBox" style="display: none;">
  65202. <div style="width: 162px;" class="inpbox">
  65203. <input style="width: 150px;" id="daterange-btn" readonly="readonly" placeholder="${conditionformat_Text.pleaseSelectADate}"/>
  65204. </div>
  65205. </div>
  65206. </div>
  65207. </div>
  65208. <div class="title">${conditionformat_Text.setFormat}: </div>${textCellColorHtml}`;
  65209. break;
  65210. case 2:
  65211. ruleExplainHtml = `<div class="title">${conditionformat_Text.ruleTypeItem3_title}\uFF1A</div>
  65212. <div style="height: 30px;margin-bottom: 10px;">
  65213. <select id="type1">
  65214. <option value="top">${conditionformat_Text.top}</option>
  65215. <option value="last">${conditionformat_Text.last}</option>
  65216. </select>
  65217. <div class="inpbox" id="conditionVal">
  65218. <input class="formulaInputFocus" type="number" value="10"/>
  65219. </div>
  65220. <input id="isPercent" type="checkbox"/>
  65221. <label for="isPercent" class="txt">${conditionformat_Text.selectRange_percent}</label>
  65222. </div>
  65223. <div class="title">${conditionformat_Text.setFormat}\uFF1A</div>${textCellColorHtml}`;
  65224. break;
  65225. case 3:
  65226. ruleExplainHtml = `<div class="title">${conditionformat_Text.ruleTypeItem4_title}\uFF1A</div>
  65227. <div style="height: 30px;margin-bottom: 10px;">
  65228. <select id="type1">
  65229. <option value="AboveAverage">${conditionformat_Text.above}</option>
  65230. <option value="SubAverage">${conditionformat_Text.below}</option>
  65231. </select>
  65232. <span class="txt">${conditionformat_Text.selectRange_average}</span>
  65233. </div>
  65234. <div class="title">${conditionformat_Text.setFormat}\uFF1A</div>${textCellColorHtml}`;
  65235. break;
  65236. case 4:
  65237. ruleExplainHtml = `<div class="title">${conditionformat_Text.all}\uFF1A</div>
  65238. <div style="height: 30px;margin-bottom: 10px;">
  65239. <select id="type1">
  65240. <option value="0">${conditionformat_Text.duplicateValue}</option>
  65241. <option value="1">${conditionformat_Text.uniqueValue}</option>
  65242. </select>
  65243. <span class="txt">${conditionformat_Text.selectRange_value}</span>
  65244. </div>
  65245. <div class="title">${conditionformat_Text.setFormat}\uFF1A</div>${textCellColorHtml}`;
  65246. break;
  65247. case 5:
  65248. ruleExplainHtml = `<div class="title">${conditionformat_Text.ruleTypeItem2_title}\uFF1A</div>
  65249. <div style="height: 30px;margin-bottom: 10px;">
  65250. <div class="inpbox range" id="formulaConditionVal" style="width: 250px;">
  65251. <input class="formulaInputFocus" style="width: 200px;"/>
  65252. <i class="fa fa-table" aria-hidden="true" title="${conditionformat_Text.selectCell}"></i>
  65253. </div>
  65254. </div>
  65255. <div class="title">${conditionformat_Text.setFormat}: </div>${textCellColorHtml}`;
  65256. break;
  65257. }
  65258. return ruleExplainHtml;
  65259. },
  65260. daterangeInit: function(id) {
  65261. const conditionformat_Text = locale_default().conditionformat;
  65262. $(".ranges_1 ul").remove();
  65263. $("#" + id).find("#daterange-btn").flatpickr({
  65264. mode: "range",
  65265. onChange: function(data, label) {
  65266. const [start, end] = data;
  65267. let format1 = [
  65268. conditionformat_Text.yesterday,
  65269. conditionformat_Text.today
  65270. ];
  65271. let format2 = [
  65272. conditionformat_Text.lastWeek,
  65273. conditionformat_Text.thisWeek,
  65274. conditionformat_Text.lastMonth,
  65275. conditionformat_Text.thisMonth,
  65276. conditionformat_Text.lastYear,
  65277. conditionformat_Text.thisYear,
  65278. conditionformat_Text.last7days,
  65279. conditionformat_Text.last30days
  65280. ];
  65281. if (label == conditionformat_Text.all) {
  65282. $("#daterange-btn").val("");
  65283. } else if (format1.indexOf(label) > -1) {
  65284. $("#daterange-btn").val((0, import_dayjs4.default)(start).format("YYYY/MM/DD"));
  65285. } else if (format2.indexOf(label) > -1) {
  65286. $("#daterange-btn").val((0, import_dayjs4.default)(start).format("YYYY/MM/DD") + "-" + (0, import_dayjs4.default)(end).format("YYYY/MM/DD"));
  65287. }
  65288. }
  65289. });
  65290. },
  65291. CFSplitRange: function(range1, range2, range3, type) {
  65292. let range4 = [];
  65293. let offset_r = range3["row"][0] - range2["row"][0];
  65294. let offset_c = range3["column"][0] - range2["column"][0];
  65295. let r1 = range1["row"][0], r2 = range1["row"][1];
  65296. let c1 = range1["column"][0], c2 = range1["column"][1];
  65297. if (r1 >= range2["row"][0] && r2 <= range2["row"][1] && c1 >= range2["column"][0] && c2 <= range2["column"][1]) {
  65298. if (type == "allPart") {
  65299. range4 = [
  65300. {"row": [r1 + offset_r, r2 + offset_r], "column": [c1 + offset_c, c2 + offset_c]}
  65301. ];
  65302. } else if (type == "restPart") {
  65303. range4 = [];
  65304. } else if (type == "operatePart") {
  65305. range4 = [
  65306. {"row": [r1 + offset_r, r2 + offset_r], "column": [c1 + offset_c, c2 + offset_c]}
  65307. ];
  65308. }
  65309. } else if (r1 >= range2["row"][0] && r1 <= range2["row"][1] && c1 >= range2["column"][0] && c2 <= range2["column"][1]) {
  65310. if (type == "allPart") {
  65311. range4 = [
  65312. {"row": [range2["row"][1] + 1, r2], "column": [c1, c2]},
  65313. {"row": [r1 + offset_r, range2["row"][1] + offset_r], "column": [c1 + offset_c, c2 + offset_c]}
  65314. ];
  65315. } else if (type == "restPart") {
  65316. range4 = [
  65317. {"row": [range2["row"][1] + 1, r2], "column": [c1, c2]}
  65318. ];
  65319. } else if (type == "operatePart") {
  65320. range4 = [
  65321. {"row": [r1 + offset_r, range2["row"][1] + offset_r], "column": [c1 + offset_c, c2 + offset_c]}
  65322. ];
  65323. }
  65324. } else if (r2 >= range2["row"][0] && r2 <= range2["row"][1] && c1 >= range2["column"][0] && c2 <= range2["column"][1]) {
  65325. if (type == "allPart") {
  65326. range4 = [
  65327. {"row": [r1, range2["row"][0] - 1], "column": [c1, c2]},
  65328. {"row": [range2["row"][0] + offset_r, r2 + offset_r], "column": [c1 + offset_c, c2 + offset_c]}
  65329. ];
  65330. } else if (type == "restPart") {
  65331. range4 = [
  65332. {"row": [r1, range2["row"][0] - 1], "column": [c1, c2]}
  65333. ];
  65334. } else if (type == "operatePart") {
  65335. range4 = [
  65336. {"row": [range2["row"][0] + offset_r, r2 + offset_r], "column": [c1 + offset_c, c2 + offset_c]}
  65337. ];
  65338. }
  65339. } else if (r1 < range2["row"][0] && r2 > range2["row"][1] && c1 >= range2["column"][0] && c2 <= range2["column"][1]) {
  65340. if (type == "allPart") {
  65341. range4 = [
  65342. {"row": [r1, range2["row"][0] - 1], "column": [c1, c2]},
  65343. {"row": [range2["row"][1] + 1, r2], "column": [c1, c2]},
  65344. {"row": [range2["row"][0] + offset_r, range2["row"][1] + offset_r], "column": [c1 + offset_c, c2 + offset_c]}
  65345. ];
  65346. } else if (type == "restPart") {
  65347. range4 = [
  65348. {"row": [r1, range2["row"][0] - 1], "column": [c1, c2]},
  65349. {"row": [range2["row"][1] + 1, r2], "column": [c1, c2]}
  65350. ];
  65351. } else if (type == "operatePart") {
  65352. range4 = [
  65353. {"row": [range2["row"][0] + offset_r, range2["row"][1] + offset_r], "column": [c1 + offset_c, c2 + offset_c]}
  65354. ];
  65355. }
  65356. } else if (c1 >= range2["column"][0] && c1 <= range2["column"][1] && r1 >= range2["row"][0] && r2 <= range2["row"][1]) {
  65357. if (type == "allPart") {
  65358. range4 = [
  65359. {"row": [r1, r2], "column": [range2["column"][1] + 1, c2]},
  65360. {"row": [r1 + offset_r, r2 + offset_r], "column": [c1 + offset_c, range2["column"][1] + offset_c]}
  65361. ];
  65362. } else if (type == "restPart") {
  65363. range4 = [
  65364. {"row": [r1, r2], "column": [range2["column"][1] + 1, c2]}
  65365. ];
  65366. } else if (type == "operatePart") {
  65367. range4 = [
  65368. {"row": [r1 + offset_r, r2 + offset_r], "column": [c1 + offset_c, range2["column"][1] + offset_c]}
  65369. ];
  65370. }
  65371. } else if (c2 >= range2["column"][0] && c2 <= range2["column"][1] && r1 >= range2["row"][0] && r2 <= range2["row"][1]) {
  65372. if (type == "allPart") {
  65373. range4 = [
  65374. {"row": [r1, r2], "column": [c1, range2["column"][0] - 1]},
  65375. {"row": [r1 + offset_r, r2 + offset_r], "column": [range2["column"][0] + offset_c, c2 + offset_c]}
  65376. ];
  65377. } else if (type == "restPart") {
  65378. range4 = [
  65379. {"row": [r1, r2], "column": [c1, range2["column"][0] - 1]}
  65380. ];
  65381. } else if (type == "operatePart") {
  65382. range4 = [
  65383. {"row": [r1 + offset_r, r2 + offset_r], "column": [range2["column"][0] + offset_c, c2 + offset_c]}
  65384. ];
  65385. }
  65386. } else if (c1 < range2["column"][0] && c2 > range2["column"][1] && r1 >= range2["row"][0] && r2 <= range2["row"][1]) {
  65387. if (type == "allPart") {
  65388. range4 = [
  65389. {"row": [r1, r2], "column": [c1, range2["column"][0] - 1]},
  65390. {"row": [r1, r2], "column": [range2["column"][1] + 1, c2]},
  65391. {"row": [r1 + offset_r, r2 + offset_r], "column": [range2["column"][0] + offset_c, range2["column"][1] + offset_c]}
  65392. ];
  65393. } else if (type == "restPart") {
  65394. range4 = [
  65395. {"row": [r1, r2], "column": [c1, range2["column"][0] - 1]},
  65396. {"row": [r1, r2], "column": [range2["column"][1] + 1, c2]}
  65397. ];
  65398. } else if (type == "operatePart") {
  65399. range4 = [
  65400. {"row": [r1 + offset_r, r2 + offset_r], "column": [range2["column"][0] + offset_c, range2["column"][1] + offset_c]}
  65401. ];
  65402. }
  65403. } else if (r1 >= range2["row"][0] && r1 <= range2["row"][1] && c1 >= range2["column"][0] && c1 <= range2["column"][1]) {
  65404. if (type == "allPart") {
  65405. range4 = [
  65406. {"row": [r1, range2["row"][1]], "column": [range2["column"][1] + 1, c2]},
  65407. {"row": [range2["row"][1] + 1, r2], "column": [c1, c2]},
  65408. {"row": [r1 + offset_r, range2["row"][1] + offset_r], "column": [c1 + offset_c, range2["column"][1] + offset_c]}
  65409. ];
  65410. } else if (type == "restPart") {
  65411. range4 = [
  65412. {"row": [r1, range2["row"][1]], "column": [range2["column"][1] + 1, c2]},
  65413. {"row": [range2["row"][1] + 1, r2], "column": [c1, c2]}
  65414. ];
  65415. } else if (type == "operatePart") {
  65416. range4 = [
  65417. {"row": [r1 + offset_r, range2["row"][1] + offset_r], "column": [c1 + offset_c, range2["column"][1] + offset_c]}
  65418. ];
  65419. }
  65420. } else if (r1 >= range2["row"][0] && r1 <= range2["row"][1] && c2 >= range2["column"][0] && c2 <= range2["column"][1]) {
  65421. if (type == "allPart") {
  65422. range4 = [
  65423. {"row": [r1, range2["row"][1]], "column": [c1, range2["column"][0] - 1]},
  65424. {"row": [range2["row"][1] + 1, r2], "column": [c1, c2]},
  65425. {"row": [r1 + offset_r, range2["row"][1] + offset_r], "column": [range2["column"][0] + offset_c, c2 + offset_c]}
  65426. ];
  65427. } else if (type == "restPart") {
  65428. range4 = [
  65429. {"row": [r1, range2["row"][1]], "column": [c1, range2["column"][0] - 1]},
  65430. {"row": [range2["row"][1] + 1, r2], "column": [c1, c2]}
  65431. ];
  65432. } else if (type == "operatePart") {
  65433. range4 = [
  65434. {"row": [r1 + offset_r, range2["row"][1] + offset_r], "column": [range2["column"][0] + offset_c, c2 + offset_c]}
  65435. ];
  65436. }
  65437. } else if (r2 >= range2["row"][0] && r2 <= range2["row"][1] && c1 >= range2["column"][0] && c1 <= range2["column"][1]) {
  65438. if (type == "allPart") {
  65439. range4 = [
  65440. {"row": [r1, range2["row"][0] - 1], "column": [c1, c2]},
  65441. {"row": [range2["row"][0], r2], "column": [range2["column"][1] + 1, c2]},
  65442. {"row": [range2["row"][0] + offset_r, r2 + offset_r], "column": [c1 + offset_c, range2["column"][1] + offset_c]}
  65443. ];
  65444. } else if (type == "restPart") {
  65445. range4 = [
  65446. {"row": [r1, range2["row"][0] - 1], "column": [c1, c2]},
  65447. {"row": [range2["row"][0], r2], "column": [range2["column"][1] + 1, c2]}
  65448. ];
  65449. } else if (type == "operatePart") {
  65450. range4 = [
  65451. {"row": [range2["row"][0] + offset_r, r2 + offset_r], "column": [c1 + offset_c, range2["column"][1] + offset_c]}
  65452. ];
  65453. }
  65454. } else if (r2 >= range2["row"][0] && r2 <= range2["row"][1] && c2 >= range2["column"][0] && c2 <= range2["column"][1]) {
  65455. if (type == "allPart") {
  65456. range4 = [
  65457. {"row": [r1, range2["row"][0] - 1], "column": [c1, c2]},
  65458. {"row": [range2["row"][0], r2], "column": [c1, range2["column"][0] - 1]},
  65459. {"row": [range2["row"][0] + offset_r, r2 + offset_r], "column": [range2["column"][0] + offset_c, c2 + offset_c]}
  65460. ];
  65461. } else if (type == "restPart") {
  65462. range4 = [
  65463. {"row": [r1, range2["row"][0] - 1], "column": [c1, c2]},
  65464. {"row": [range2["row"][0], r2], "column": [c1, range2["column"][0] - 1]}
  65465. ];
  65466. } else if (type == "operatePart") {
  65467. range4 = [
  65468. {"row": [range2["row"][0] + offset_r, r2 + offset_r], "column": [range2["column"][0] + offset_c, c2 + offset_c]}
  65469. ];
  65470. }
  65471. } else if (r1 < range2["row"][0] && r2 > range2["row"][1] && c1 >= range2["column"][0] && c1 <= range2["column"][1]) {
  65472. if (type == "allPart") {
  65473. range4 = [
  65474. {"row": [r1, range2["row"][0] - 1], "column": [c1, c2]},
  65475. {"row": [range2["row"][0], range2["row"][1]], "column": [range2["column"][1] + 1, c2]},
  65476. {"row": [range2["row"][1] + 1, r2], "column": [c1, c2]},
  65477. {"row": [range2["row"][0] + offset_r, range2["row"][1] + offset_r], "column": [c1 + offset_c, range2["column"][1] + offset_c]}
  65478. ];
  65479. } else if (type == "restPart") {
  65480. range4 = [
  65481. {"row": [r1, range2["row"][0] - 1], "column": [c1, c2]},
  65482. {"row": [range2["row"][0], range2["row"][1]], "column": [range2["column"][1] + 1, c2]},
  65483. {"row": [range2["row"][1] + 1, r2], "column": [c1, c2]}
  65484. ];
  65485. } else if (type == "operatePart") {
  65486. range4 = [
  65487. {"row": [range2["row"][0] + offset_r, range2["row"][1] + offset_r], "column": [c1 + offset_c, range2["column"][1] + offset_c]}
  65488. ];
  65489. }
  65490. } else if (r1 < range2["row"][0] && r2 > range2["row"][1] && c2 >= range2["column"][0] && c2 <= range2["column"][1]) {
  65491. if (type == "allPart") {
  65492. range4 = [
  65493. {"row": [r1, range2["row"][0] - 1], "column": [c1, c2]},
  65494. {"row": [range2["row"][0], range2["row"][1]], "column": [c1, range2["column"][0] - 1]},
  65495. {"row": [range2["row"][1] + 1, r2], "column": [c1, c2]},
  65496. {"row": [range2["row"][0] + offset_r, range2["row"][1] + offset_r], "column": [range2["column"][0] + offset_c, c2 + offset_c]}
  65497. ];
  65498. } else if (type == "restPart") {
  65499. range4 = [
  65500. {"row": [r1, range2["row"][0] - 1], "column": [c1, c2]},
  65501. {"row": [range2["row"][0], range2["row"][1]], "column": [c1, range2["column"][0] - 1]},
  65502. {"row": [range2["row"][1] + 1, r2], "column": [c1, c2]}
  65503. ];
  65504. } else if (type == "operatePart") {
  65505. range4 = [
  65506. {"row": [range2["row"][0] + offset_r, range2["row"][1] + offset_r], "column": [range2["column"][0] + offset_c, c2 + offset_c]}
  65507. ];
  65508. }
  65509. } else if (c1 < range2["column"][0] && c2 > range2["column"][1] && r1 >= range2["row"][0] && r1 <= range2["row"][1]) {
  65510. if (type == "allPart") {
  65511. range4 = [
  65512. {"row": [r1, range2["row"][1]], "column": [c1, range2["column"][0] - 1]},
  65513. {"row": [r1, range2["row"][1]], "column": [range2["column"][1] + 1, c2]},
  65514. {"row": [range2["row"][1] + 1, r2], "column": [c1, c2]},
  65515. {"row": [r1 + offset_r, range2["row"][1] + offset_r], "column": [range2["column"][0] + offset_c, range2["column"][1] + offset_c]}
  65516. ];
  65517. } else if (type == "restPart") {
  65518. range4 = [
  65519. {"row": [r1, range2["row"][1]], "column": [c1, range2["column"][0] - 1]},
  65520. {"row": [r1, range2["row"][1]], "column": [range2["column"][1] + 1, c2]},
  65521. {"row": [range2["row"][1] + 1, r2], "column": [c1, c2]}
  65522. ];
  65523. } else if (type == "operatePart") {
  65524. range4 = [
  65525. {"row": [r1 + offset_r, range2["row"][1] + offset_r], "column": [range2["column"][0] + offset_c, range2["column"][1] + offset_c]}
  65526. ];
  65527. }
  65528. } else if (c1 < range2["column"][0] && c2 > range2["column"][1] && r2 >= range2["row"][0] && r2 <= range2["row"][1]) {
  65529. if (type == "allPart") {
  65530. range4 = [
  65531. {"row": [r1, range2["row"][0] - 1], "column": [c1, c2]},
  65532. {"row": [range2["row"][0], r2], "column": [c1, range2["column"][0] - 1]},
  65533. {"row": [range2["row"][0], r2], "column": [range2["column"][1] + 1, c2]},
  65534. {"row": [range2["row"][0] + offset_r, r2 + offset_r], "column": [range2["column"][0] + offset_c, range2["column"][1] + offset_c]}
  65535. ];
  65536. } else if (type == "restPart") {
  65537. range4 = [
  65538. {"row": [r1, range2["row"][0] - 1], "column": [c1, c2]},
  65539. {"row": [range2["row"][0], r2], "column": [c1, range2["column"][0] - 1]},
  65540. {"row": [range2["row"][0], r2], "column": [range2["column"][1] + 1, c2]}
  65541. ];
  65542. } else if (type == "operatePart") {
  65543. range4 = [
  65544. {"row": [range2["row"][0] + offset_r, r2 + offset_r], "column": [range2["column"][0] + offset_c, range2["column"][1] + offset_c]}
  65545. ];
  65546. }
  65547. } else if (r1 < range2["row"][0] && r2 > range2["row"][1] && c1 < range2["column"][0] && c2 > range2["column"][1]) {
  65548. if (type == "allPart") {
  65549. range4 = [
  65550. {"row": [r1, range2["row"][0] - 1], "column": [c1, c2]},
  65551. {"row": [range2["row"][0], range2["row"][1]], "column": [c1, range2["column"][0] - 1]},
  65552. {"row": [range2["row"][0], range2["row"][1]], "column": [range2["column"][1] + 1, c2]},
  65553. {"row": [range2["row"][1] + 1, r2], "column": [c1, c2]},
  65554. {"row": [range2["row"][0] + offset_r, range2["row"][1] + offset_r], "column": [range2["column"][0] + offset_c, range2["column"][1] + offset_c]}
  65555. ];
  65556. } else if (type == "restPart") {
  65557. range4 = [
  65558. {"row": [r1, range2["row"][0] - 1], "column": [c1, c2]},
  65559. {"row": [range2["row"][0], range2["row"][1]], "column": [c1, range2["column"][0] - 1]},
  65560. {"row": [range2["row"][0], range2["row"][1]], "column": [range2["column"][1] + 1, c2]},
  65561. {"row": [range2["row"][1] + 1, r2], "column": [c1, c2]}
  65562. ];
  65563. } else if (type == "operatePart") {
  65564. range4 = [
  65565. {"row": [range2["row"][0] + offset_r, range2["row"][1] + offset_r], "column": [range2["column"][0] + offset_c, range2["column"][1] + offset_c]}
  65566. ];
  65567. }
  65568. } else {
  65569. if (type == "allPart") {
  65570. range4 = [
  65571. {"row": [r1, r2], "column": [c1, c2]}
  65572. ];
  65573. } else if (type == "restPart") {
  65574. range4 = [
  65575. {"row": [r1, r2], "column": [c1, c2]}
  65576. ];
  65577. } else if (type == "operatePart") {
  65578. range4 = [];
  65579. }
  65580. }
  65581. return range4;
  65582. },
  65583. getcolorGradation: function(color1, color2, value1, value2, value) {
  65584. let rgb1 = color1.split(",");
  65585. let r1 = parseInt(rgb1[0].split("(")[1]);
  65586. let g1 = parseInt(rgb1[1]);
  65587. let b1 = parseInt(rgb1[2].split(")")[0]);
  65588. let rgb2 = color2.split(",");
  65589. let r2 = parseInt(rgb2[0].split("(")[1]);
  65590. let g2 = parseInt(rgb2[1]);
  65591. let b2 = parseInt(rgb2[2].split(")")[0]);
  65592. let r3 = Math.round(r1 - (r1 - r2) / (value1 - value2) * (value1 - value));
  65593. let g = Math.round(g1 - (g1 - g2) / (value1 - value2) * (value1 - value));
  65594. let b = Math.round(b1 - (b1 - b2) / (value1 - value2) * (value1 - value));
  65595. return "rgb(" + r3 + ", " + g + ", " + b + ")";
  65596. },
  65597. getCFPartRange: function(sheetIndex, range1, range2) {
  65598. let ruleArr2 = [];
  65599. let cf = store_default.luckysheetfile[getSheetIndex(sheetIndex)].luckysheet_conditionformat_save;
  65600. if (cf != null && cf.length > 0) {
  65601. label:
  65602. for (let i2 = 0; i2 < cf.length; i2++) {
  65603. let cellrange = cf[i2].cellrange;
  65604. for (let j = 0; j < cellrange.length; j++) {
  65605. let r1 = cellrange[j].row[0], r2 = cellrange[j].row[1];
  65606. let c1 = cellrange[j].column[0], c2 = cellrange[j].column[1];
  65607. for (let s = 0; s < range.length; s++) {
  65608. if (range[s].row[0] >= r1 && range[s].row[0] <= r2 || range[s].row[1] >= r1 && range[s].row[1] <= r2 || range[s].column[0] >= c1 && range[s].column[0] <= c2 || range[s].column[1] >= c1 && range[s].column[1] <= c2) {
  65609. ruleArr2.push(cf[i2]);
  65610. continue label;
  65611. }
  65612. }
  65613. }
  65614. }
  65615. }
  65616. return ruleArr2;
  65617. },
  65618. checksCF: function(r2, c2, computeMap2) {
  65619. if (computeMap2 != null && r2 + "_" + c2 in computeMap2) {
  65620. return computeMap2[r2 + "_" + c2];
  65621. } else {
  65622. return null;
  65623. }
  65624. },
  65625. getComputeMap: function(sheetIndex) {
  65626. let index2 = getSheetIndex(store_default.currentSheetIndex);
  65627. if (sheetIndex != null) {
  65628. index2 = getSheetIndex(sheetIndex);
  65629. }
  65630. let ruleArr2 = store_default.luckysheetfile[index2]["luckysheet_conditionformat_save"];
  65631. let data = store_default.luckysheetfile[index2]["data"];
  65632. if (data == null) {
  65633. return null;
  65634. }
  65635. let computeMap2 = this.compute(ruleArr2, data);
  65636. return computeMap2;
  65637. },
  65638. compute: function(ruleArr2, d) {
  65639. let _this = this;
  65640. if (ruleArr2 == null) {
  65641. ruleArr2 = [];
  65642. }
  65643. let computeMap2 = {};
  65644. if (ruleArr2.length > 0) {
  65645. for (let i2 = 0; i2 < ruleArr2.length; i2++) {
  65646. let type = ruleArr2[i2]["type"];
  65647. let cellrange = ruleArr2[i2]["cellrange"];
  65648. let format = ruleArr2[i2]["format"];
  65649. if (type == "dataBar") {
  65650. let max = null, min = null;
  65651. for (let s = 0; s < cellrange.length; s++) {
  65652. for (let r2 = cellrange[s].row[0]; r2 <= cellrange[s].row[1]; r2++) {
  65653. for (let c2 = cellrange[s].column[0]; c2 <= cellrange[s].column[1]; c2++) {
  65654. if (d[r2] == null || d[r2][c2] == null) {
  65655. continue;
  65656. }
  65657. let cell = d[r2][c2];
  65658. if (getObjType(cell) == "object" && cell["ct"] != null && cell["ct"].t == "n" && cell.v != null) {
  65659. if (max == null || parseInt(cell.v) > max) {
  65660. max = parseInt(cell.v);
  65661. }
  65662. if (min == null || parseInt(cell.v) < min) {
  65663. min = parseInt(cell.v);
  65664. }
  65665. }
  65666. }
  65667. }
  65668. }
  65669. if (max != null && min != null) {
  65670. if (min < 0) {
  65671. let plusLen = Math.round(max / (max - min) * 10) / 10;
  65672. let minusLen = Math.round(Math.abs(min) / (max - min) * 10) / 10;
  65673. for (let s = 0; s < cellrange.length; s++) {
  65674. for (let r2 = cellrange[s].row[0]; r2 <= cellrange[s].row[1]; r2++) {
  65675. for (let c2 = cellrange[s].column[0]; c2 <= cellrange[s].column[1]; c2++) {
  65676. if (d[r2] == null || d[r2][c2] == null) {
  65677. continue;
  65678. }
  65679. let cell = d[r2][c2];
  65680. if (getObjType(cell) == "object" && cell["ct"] != null && cell["ct"].t == "n" && cell.v != null) {
  65681. if (parseInt(cell.v) < 0) {
  65682. let valueLen = Math.round(Math.abs(parseInt(cell.v)) / Math.abs(min) * 100) / 100;
  65683. if (r2 + "_" + c2 in computeMap2) {
  65684. computeMap2[r2 + "_" + c2]["dataBar"] = {"valueType": "minus", "minusLen": minusLen, "valueLen": valueLen, "format": format};
  65685. } else {
  65686. computeMap2[r2 + "_" + c2] = {"dataBar": {"valueType": "minus", "minusLen": minusLen, "valueLen": valueLen, "format": format}};
  65687. }
  65688. }
  65689. if (parseInt(cell.v) > 0) {
  65690. let valueLen = Math.round(parseInt(cell.v) / max * 100) / 100;
  65691. if (r2 + "_" + c2 in computeMap2) {
  65692. computeMap2[r2 + "_" + c2]["dataBar"] = {"valueType": "plus", "plusLen": plusLen, "minusLen": minusLen, "valueLen": valueLen, "format": format};
  65693. } else {
  65694. computeMap2[r2 + "_" + c2] = {"dataBar": {"valueType": "plus", "plusLen": plusLen, "minusLen": minusLen, "valueLen": valueLen, "format": format}};
  65695. }
  65696. }
  65697. }
  65698. }
  65699. }
  65700. }
  65701. } else {
  65702. let plusLen = 1;
  65703. for (let s = 0; s < cellrange.length; s++) {
  65704. for (let r2 = cellrange[s].row[0]; r2 <= cellrange[s].row[1]; r2++) {
  65705. for (let c2 = cellrange[s].column[0]; c2 <= cellrange[s].column[1]; c2++) {
  65706. if (d[r2] == null || d[r2][c2] == null) {
  65707. continue;
  65708. }
  65709. let cell = d[r2][c2];
  65710. if (getObjType(cell) == "object" && cell["ct"] != null && cell["ct"].t == "n" && cell.v != null) {
  65711. let valueLen;
  65712. if (max == 0) {
  65713. valueLen = 1;
  65714. } else {
  65715. valueLen = Math.round(parseInt(cell.v) / max * 100) / 100;
  65716. }
  65717. if (r2 + "_" + c2 in computeMap2) {
  65718. computeMap2[r2 + "_" + c2]["dataBar"] = {"valueType": "plus", "plusLen": plusLen, "valueLen": valueLen, "format": format};
  65719. } else {
  65720. computeMap2[r2 + "_" + c2] = {"dataBar": {"valueType": "plus", "plusLen": plusLen, "valueLen": valueLen, "format": format}};
  65721. }
  65722. }
  65723. }
  65724. }
  65725. }
  65726. }
  65727. }
  65728. } else if (type == "colorGradation") {
  65729. let max = null, min = null, sum = 0, count = 0;
  65730. for (let s = 0; s < cellrange.length; s++) {
  65731. for (let r2 = cellrange[s].row[0]; r2 <= cellrange[s].row[1]; r2++) {
  65732. for (let c2 = cellrange[s].column[0]; c2 <= cellrange[s].column[1]; c2++) {
  65733. if (d[r2] == null || d[r2][c2] == null) {
  65734. continue;
  65735. }
  65736. let cell = d[r2][c2];
  65737. if (getObjType(cell) == "object" && cell["ct"] != null && cell["ct"].t == "n" && cell.v != null) {
  65738. count++;
  65739. sum += parseInt(cell.v);
  65740. if (max == null || parseInt(cell.v) > max) {
  65741. max = parseInt(cell.v);
  65742. }
  65743. if (min == null || parseInt(cell.v) < min) {
  65744. min = parseInt(cell.v);
  65745. }
  65746. }
  65747. }
  65748. }
  65749. }
  65750. if (max != null && min != null) {
  65751. if (format.length == 3) {
  65752. let avg = Math.floor(sum / count);
  65753. for (let s = 0; s < cellrange.length; s++) {
  65754. for (let r2 = cellrange[s].row[0]; r2 <= cellrange[s].row[1]; r2++) {
  65755. for (let c2 = cellrange[s].column[0]; c2 <= cellrange[s].column[1]; c2++) {
  65756. if (d[r2] == null || d[r2][c2] == null) {
  65757. continue;
  65758. }
  65759. let cell = d[r2][c2];
  65760. if (getObjType(cell) == "object" && cell["ct"] != null && cell["ct"].t == "n" && cell.v != null) {
  65761. if (parseInt(cell.v) == min) {
  65762. if (r2 + "_" + c2 in computeMap2) {
  65763. computeMap2[r2 + "_" + c2]["cellColor"] = format[2];
  65764. } else {
  65765. computeMap2[r2 + "_" + c2] = {"cellColor": format[2]};
  65766. }
  65767. } else if (parseInt(cell.v) > min && parseInt(cell.v) < avg) {
  65768. if (r2 + "_" + c2 in computeMap2) {
  65769. computeMap2[r2 + "_" + c2]["cellColor"] = _this.getcolorGradation(format[2], format[1], min, avg, parseInt(cell.v));
  65770. } else {
  65771. computeMap2[r2 + "_" + c2] = {"cellColor": _this.getcolorGradation(format[2], format[1], min, avg, parseInt(cell.v))};
  65772. }
  65773. } else if (parseInt(cell.v) == avg) {
  65774. if (r2 + "_" + c2 in computeMap2) {
  65775. computeMap2[r2 + "_" + c2]["cellColor"] = format[1];
  65776. } else {
  65777. computeMap2[r2 + "_" + c2] = {"cellColor": format[1]};
  65778. }
  65779. } else if (parseInt(cell.v) > avg && parseInt(cell.v) < max) {
  65780. if (r2 + "_" + c2 in computeMap2) {
  65781. computeMap2[r2 + "_" + c2]["cellColor"] = _this.getcolorGradation(format[1], format[0], avg, max, parseInt(cell.v));
  65782. } else {
  65783. computeMap2[r2 + "_" + c2] = {"cellColor": _this.getcolorGradation(format[1], format[0], avg, max, parseInt(cell.v))};
  65784. }
  65785. } else if (parseInt(cell.v) == max) {
  65786. if (r2 + "_" + c2 in computeMap2) {
  65787. computeMap2[r2 + "_" + c2]["cellColor"] = format[0];
  65788. } else {
  65789. computeMap2[r2 + "_" + c2] = {"cellColor": format[0]};
  65790. }
  65791. }
  65792. }
  65793. }
  65794. }
  65795. }
  65796. } else if (format.length == 2) {
  65797. for (let s = 0; s < cellrange.length; s++) {
  65798. for (let r2 = cellrange[s].row[0]; r2 <= cellrange[s].row[1]; r2++) {
  65799. for (let c2 = cellrange[s].column[0]; c2 <= cellrange[s].column[1]; c2++) {
  65800. if (d[r2] == null || d[r2][c2] == null) {
  65801. continue;
  65802. }
  65803. let cell = d[r2][c2];
  65804. if (getObjType(cell) == "object" && cell["ct"] != null && cell["ct"].t == "n" && cell.v != null) {
  65805. if (parseInt(cell.v) == min) {
  65806. if (r2 + "_" + c2 in computeMap2) {
  65807. computeMap2[r2 + "_" + c2]["cellColor"] = format[1];
  65808. } else {
  65809. computeMap2[r2 + "_" + c2] = {"cellColor": format[1]};
  65810. }
  65811. } else if (parseInt(cell.v) > min && parseInt(cell.v) < max) {
  65812. if (r2 + "_" + c2 in computeMap2) {
  65813. computeMap2[r2 + "_" + c2]["cellColor"] = _this.getcolorGradation(format[1], format[0], min, max, parseInt(cell.v));
  65814. } else {
  65815. computeMap2[r2 + "_" + c2] = {"cellColor": _this.getcolorGradation(format[1], format[0], min, max, parseInt(cell.v))};
  65816. }
  65817. } else if (parseInt(cell.v) == max) {
  65818. if (r2 + "_" + c2 in computeMap2) {
  65819. computeMap2[r2 + "_" + c2]["cellColor"] = format[0];
  65820. } else {
  65821. computeMap2[r2 + "_" + c2] = {"cellColor": format[0]};
  65822. }
  65823. }
  65824. }
  65825. }
  65826. }
  65827. }
  65828. }
  65829. }
  65830. } else if (type == "icons") {
  65831. let len = parseInt(format["len"]);
  65832. let leftMin = parseInt(format["leftMin"]);
  65833. let top = parseInt(format["top"]);
  65834. let max = null, min = null;
  65835. for (let s = 0; s < cellrange.length; s++) {
  65836. for (let r2 = cellrange[s].row[0]; r2 <= cellrange[s].row[1]; r2++) {
  65837. for (let c2 = cellrange[s].column[0]; c2 <= cellrange[s].column[1]; c2++) {
  65838. if (d[r2] == null || d[r2][c2] == null) {
  65839. continue;
  65840. }
  65841. let cell = d[r2][c2];
  65842. if (getObjType(cell) == "object" && cell["ct"] != null && cell["ct"].t == "n" && cell.v != null) {
  65843. if (max == null || parseInt(cell.v) > max) {
  65844. max = parseInt(cell.v);
  65845. }
  65846. if (min == null || parseInt(cell.v) < min) {
  65847. min = parseInt(cell.v);
  65848. }
  65849. }
  65850. }
  65851. }
  65852. }
  65853. if (max != null && min != null) {
  65854. let a = Math.floor((max - min + 1) / len);
  65855. let b = (max - min + 1) % len;
  65856. if (len == 3) {
  65857. let v1, v2, v3;
  65858. if (b == 2) {
  65859. v1 = [min, min + a];
  65860. v2 = [min + a + 1, min + a * 2];
  65861. v3 = [min + a * 2 + 1, max];
  65862. } else {
  65863. v1 = [min, min + a - 1];
  65864. v2 = [min + a, min + a * 2 - 1];
  65865. v3 = [min + a * 2, max];
  65866. }
  65867. for (let s = 0; s < cellrange.length; s++) {
  65868. for (let r2 = cellrange[s].row[0]; r2 <= cellrange[s].row[1]; r2++) {
  65869. for (let c2 = cellrange[s].column[0]; c2 <= cellrange[s].column[1]; c2++) {
  65870. if (d[r2] == null || d[r2][c2] == null) {
  65871. continue;
  65872. }
  65873. let cell = d[r2][c2];
  65874. if (getObjType(cell) == "object" && cell["ct"] != null && cell["ct"].t == "n" && cell.v != null) {
  65875. if (parseInt(cell.v) >= v1[0] && parseInt(cell.v) <= v1[1]) {
  65876. if (r2 + "_" + c2 in computeMap2) {
  65877. computeMap2[r2 + "_" + c2]["icons"] = {"left": leftMin + 2, "top": top};
  65878. } else {
  65879. computeMap2[r2 + "_" + c2] = {"icons": {"left": leftMin + 2, "top": top}};
  65880. }
  65881. } else if (parseInt(cell.v) >= v2[0] && parseInt(cell.v) <= v2[1]) {
  65882. if (r2 + "_" + c2 in computeMap2) {
  65883. computeMap2[r2 + "_" + c2]["icons"] = {"left": leftMin + 1, "top": top};
  65884. } else {
  65885. computeMap2[r2 + "_" + c2] = {"icons": {"left": leftMin + 1, "top": top}};
  65886. }
  65887. } else if (parseInt(cell.v) >= v3[0] && parseInt(cell.v) <= v3[1]) {
  65888. if (r2 + "_" + c2 in computeMap2) {
  65889. computeMap2[r2 + "_" + c2]["icons"] = {"left": leftMin, "top": top};
  65890. } else {
  65891. computeMap2[r2 + "_" + c2] = {"icons": {"left": leftMin, "top": top}};
  65892. }
  65893. }
  65894. }
  65895. }
  65896. }
  65897. }
  65898. } else if (len == 4) {
  65899. let v1, v2, v3, v4;
  65900. if (b == 2) {
  65901. v1 = [min, min + a];
  65902. v2 = [min + a + 1, min + a * 2];
  65903. v3 = [min + a * 2 + 1, min + a * 3];
  65904. v4 = [min + a * 3 + 1, max];
  65905. } else if (b == 3) {
  65906. v1 = [min, min + a];
  65907. v2 = [min + a + 1, min + a * 2];
  65908. v3 = [min + a * 2 + 1, min + a * 3 + 1];
  65909. v4 = [min + a * 3 + 2, max];
  65910. } else {
  65911. v1 = [min, min + a - 1];
  65912. v2 = [min + a, min + a * 2 - 1];
  65913. v3 = [min + a * 2, min + a * 3 - 1];
  65914. v4 = [min + a * 3, max];
  65915. }
  65916. for (let s = 0; s < cellrange.length; s++) {
  65917. for (let r2 = cellrange[s].row[0]; r2 <= cellrange[s].row[1]; r2++) {
  65918. for (let c2 = cellrange[s].column[0]; c2 <= cellrange[s].column[1]; c2++) {
  65919. if (d[r2] == null || d[r2][c2] == null) {
  65920. continue;
  65921. }
  65922. let cell = d[r2][c2];
  65923. if (getObjType(cell) == "object" && cell["ct"] != null && cell["ct"].t == "n" && cell.v != null) {
  65924. if (parseInt(cell.v) >= v1[0] && parseInt(cell.v) <= v1[1]) {
  65925. if (r2 + "_" + c2 in computeMap2) {
  65926. computeMap2[r2 + "_" + c2]["icons"] = {"left": leftMin + 3, "top": top};
  65927. } else {
  65928. computeMap2[r2 + "_" + c2] = {"icons": {"left": leftMin + 3, "top": top}};
  65929. }
  65930. } else if (parseInt(cell.v) >= v2[0] && parseInt(cell.v) <= v2[1]) {
  65931. if (r2 + "_" + c2 in computeMap2) {
  65932. computeMap2[r2 + "_" + c2]["icons"] = {"left": leftMin + 2, "top": top};
  65933. } else {
  65934. computeMap2[r2 + "_" + c2] = {"icons": {"left": leftMin + 2, "top": top}};
  65935. }
  65936. } else if (parseInt(cell.v) >= v3[0] && parseInt(cell.v) <= v3[1]) {
  65937. if (r2 + "_" + c2 in computeMap2) {
  65938. computeMap2[r2 + "_" + c2]["icons"] = {"left": leftMin + 1, "top": top};
  65939. } else {
  65940. computeMap2[r2 + "_" + c2] = {"icons": {"left": leftMin + 1, "top": top}};
  65941. }
  65942. } else if (parseInt(cell.v) >= v4[0] && parseInt(cell.v) <= v4[1]) {
  65943. if (r2 + "_" + c2 in computeMap2) {
  65944. computeMap2[r2 + "_" + c2]["icons"] = {"left": leftMin, "top": top};
  65945. } else {
  65946. computeMap2[r2 + "_" + c2] = {"icons": {"left": leftMin, "top": top}};
  65947. }
  65948. }
  65949. }
  65950. }
  65951. }
  65952. }
  65953. } else if (len == 5) {
  65954. let v1, v2, v3, v4, v5;
  65955. if (b == 2) {
  65956. v1 = [min, min + a];
  65957. v2 = [min + a + 1, min + a * 2];
  65958. v3 = [min + a * 2 + 1, min + a * 3];
  65959. v4 = [min + a * 3 + 1, min + a * 4];
  65960. v5 = [min + a * 4 + 1, max];
  65961. } else if (b == 3) {
  65962. v1 = [min, min + a];
  65963. v2 = [min + a + 1, min + a * 2];
  65964. v3 = [min + a * 2 + 1, min + a * 3 + 1];
  65965. v4 = [min + a * 3 + 2, min + a * 4 + 1];
  65966. v5 = [min + a * 4 + 2, max];
  65967. } else if (b == 4) {
  65968. v1 = [min, min + a];
  65969. v2 = [min + a + 1, min + a * 2 + 1];
  65970. v3 = [min + a * 2 + 2, min + a * 3 + 1];
  65971. v4 = [min + a * 3 + 2, min + a * 4 + 2];
  65972. v5 = [min + a * 4 + 3, max];
  65973. } else {
  65974. v1 = [min, min + a - 1];
  65975. v2 = [min + a, min + a * 2 - 1];
  65976. v3 = [min + a * 2, min + a * 3 - 1];
  65977. v4 = [min + a * 3, min + a * 4 - 1];
  65978. v5 = [min + a * 4, max];
  65979. }
  65980. for (let s = 0; s < cellrange.length; s++) {
  65981. for (let r2 = cellrange[s].row[0]; r2 <= cellrange[s].row[1]; r2++) {
  65982. for (let c2 = cellrange[s].column[0]; c2 <= cellrange[s].column[1]; c2++) {
  65983. if (d[r2] == null || d[r2][c2] == null) {
  65984. continue;
  65985. }
  65986. let cell = d[r2][c2];
  65987. if (getObjType(cell) == "object" && cell["ct"] != null && cell["ct"].t == "n" && cell.v != null) {
  65988. if (parseInt(cell.v) >= v1[0] && parseInt(cell.v) <= v1[1]) {
  65989. if (r2 + "_" + c2 in computeMap2) {
  65990. computeMap2[r2 + "_" + c2]["icons"] = {"left": leftMin + 4, "top": top};
  65991. } else {
  65992. computeMap2[r2 + "_" + c2] = {"icons": {"left": leftMin + 4, "top": top}};
  65993. }
  65994. } else if (parseInt(cell.v) >= v2[0] && parseInt(cell.v) <= v2[1]) {
  65995. if (r2 + "_" + c2 in computeMap2) {
  65996. computeMap2[r2 + "_" + c2]["icons"] = {"left": leftMin + 3, "top": top};
  65997. } else {
  65998. computeMap2[r2 + "_" + c2] = {"icons": {"left": leftMin + 3, "top": top}};
  65999. }
  66000. } else if (parseInt(cell.v) >= v3[0] && parseInt(cell.v) <= v3[1]) {
  66001. if (r2 + "_" + c2 in computeMap2) {
  66002. computeMap2[r2 + "_" + c2]["icons"] = {"left": leftMin + 2, "top": top};
  66003. } else {
  66004. computeMap2[r2 + "_" + c2] = {"icons": {"left": leftMin + 2, "top": top}};
  66005. }
  66006. } else if (parseInt(cell.v) >= v4[0] && parseInt(cell.v) <= v4[1]) {
  66007. if (r2 + "_" + c2 in computeMap2) {
  66008. computeMap2[r2 + "_" + c2]["icons"] = {"left": leftMin + 1, "top": top};
  66009. } else {
  66010. computeMap2[r2 + "_" + c2] = {"icons": {"left": leftMin + 1, "top": top}};
  66011. }
  66012. } else if (parseInt(cell.v) >= v5[0] && parseInt(cell.v) <= v5[1]) {
  66013. if (r2 + "_" + c2 in computeMap2) {
  66014. computeMap2[r2 + "_" + c2]["icons"] = {"left": leftMin, "top": top};
  66015. } else {
  66016. computeMap2[r2 + "_" + c2] = {"icons": {"left": leftMin, "top": top}};
  66017. }
  66018. }
  66019. }
  66020. }
  66021. }
  66022. }
  66023. }
  66024. }
  66025. } else {
  66026. let conditionName = ruleArr2[i2].conditionName, conditionValue0 = ruleArr2[i2].conditionValue[0], conditionValue1 = ruleArr2[i2].conditionValue[1], textColor = format.textColor, cellColor = format.cellColor;
  66027. for (let s = 0; s < cellrange.length; s++) {
  66028. if (conditionName == "greaterThan" || conditionName == "lessThan" || conditionName == "equal" || conditionName == "textContains") {
  66029. for (let r2 = cellrange[s].row[0]; r2 <= cellrange[s].row[1]; r2++) {
  66030. for (let c2 = cellrange[s].column[0]; c2 <= cellrange[s].column[1]; c2++) {
  66031. if (d[r2] == null || d[r2][c2] == null) {
  66032. continue;
  66033. }
  66034. let cell = d[r2][c2];
  66035. if (getObjType(cell) != "object" || isRealNull(cell.v)) {
  66036. continue;
  66037. }
  66038. if (conditionName == "greaterThan" && cell.v > conditionValue0) {
  66039. if (r2 + "_" + c2 in computeMap2) {
  66040. computeMap2[r2 + "_" + c2]["textColor"] = textColor;
  66041. computeMap2[r2 + "_" + c2]["cellColor"] = cellColor;
  66042. } else {
  66043. computeMap2[r2 + "_" + c2] = {"textColor": textColor, "cellColor": cellColor};
  66044. }
  66045. } else if (conditionName == "lessThan" && cell.v < conditionValue0) {
  66046. if (r2 + "_" + c2 in computeMap2) {
  66047. computeMap2[r2 + "_" + c2]["textColor"] = textColor;
  66048. computeMap2[r2 + "_" + c2]["cellColor"] = cellColor;
  66049. } else {
  66050. computeMap2[r2 + "_" + c2] = {"textColor": textColor, "cellColor": cellColor};
  66051. }
  66052. } else if (conditionName == "equal" && cell.v == conditionValue0) {
  66053. if (r2 + "_" + c2 in computeMap2) {
  66054. computeMap2[r2 + "_" + c2]["textColor"] = textColor;
  66055. computeMap2[r2 + "_" + c2]["cellColor"] = cellColor;
  66056. } else {
  66057. computeMap2[r2 + "_" + c2] = {"textColor": textColor, "cellColor": cellColor};
  66058. }
  66059. } else if (conditionName == "textContains" && cell.v.toString().indexOf(conditionValue0) != -1) {
  66060. if (r2 + "_" + c2 in computeMap2) {
  66061. computeMap2[r2 + "_" + c2]["textColor"] = textColor;
  66062. computeMap2[r2 + "_" + c2]["cellColor"] = cellColor;
  66063. } else {
  66064. computeMap2[r2 + "_" + c2] = {"textColor": textColor, "cellColor": cellColor};
  66065. }
  66066. }
  66067. }
  66068. }
  66069. } else if (conditionName == "betweenness") {
  66070. let vBig, vSmall;
  66071. if (conditionValue0 > conditionValue1) {
  66072. vBig = conditionValue0;
  66073. vSmall = conditionValue1;
  66074. } else {
  66075. vBig = conditionValue1;
  66076. vSmall = conditionValue0;
  66077. }
  66078. for (let r2 = cellrange[s].row[0]; r2 <= cellrange[s].row[1]; r2++) {
  66079. for (let c2 = cellrange[s].column[0]; c2 <= cellrange[s].column[1]; c2++) {
  66080. if (d[r2] == null || d[r2][c2] == null) {
  66081. continue;
  66082. }
  66083. let cell = d[r2][c2];
  66084. if (getObjType(cell) != "object" || isRealNull(cell.v)) {
  66085. continue;
  66086. }
  66087. if (cell.v >= vSmall && cell.v <= vBig) {
  66088. if (r2 + "_" + c2 in computeMap2) {
  66089. computeMap2[r2 + "_" + c2]["textColor"] = textColor;
  66090. computeMap2[r2 + "_" + c2]["cellColor"] = cellColor;
  66091. } else {
  66092. computeMap2[r2 + "_" + c2] = {"textColor": textColor, "cellColor": cellColor};
  66093. }
  66094. }
  66095. }
  66096. }
  66097. } else if (conditionName == "occurrenceDate") {
  66098. let dBig, dSmall;
  66099. if (conditionValue0.toString().indexOf("-") == -1) {
  66100. dBig = genarate(conditionValue0)[2];
  66101. dSmall = genarate(conditionValue0)[2];
  66102. } else {
  66103. let str = conditionValue0.toString().split("-");
  66104. dBig = genarate(str[1].trim())[2];
  66105. dSmall = genarate(str[0].trim())[2];
  66106. }
  66107. for (let r2 = cellrange[s].row[0]; r2 <= cellrange[s].row[1]; r2++) {
  66108. for (let c2 = cellrange[s].column[0]; c2 <= cellrange[s].column[1]; c2++) {
  66109. if (d[r2] == null || d[r2][c2] == null) {
  66110. continue;
  66111. }
  66112. if (d[r2][c2].ct != null && d[r2][c2].ct.t == "d") {
  66113. let cellVal = getcellvalue(r2, c2, d);
  66114. if (cellVal >= dSmall && cellVal <= dBig) {
  66115. if (r2 + "_" + c2 in computeMap2) {
  66116. computeMap2[r2 + "_" + c2]["textColor"] = textColor;
  66117. computeMap2[r2 + "_" + c2]["cellColor"] = cellColor;
  66118. } else {
  66119. computeMap2[r2 + "_" + c2] = {"textColor": textColor, "cellColor": cellColor};
  66120. }
  66121. }
  66122. }
  66123. }
  66124. }
  66125. } else if (conditionName == "duplicateValue") {
  66126. let dmap = {};
  66127. for (let r2 = cellrange[s].row[0]; r2 <= cellrange[s].row[1]; r2++) {
  66128. for (let c2 = cellrange[s].column[0]; c2 <= cellrange[s].column[1]; c2++) {
  66129. let item2 = getcellvalue(r2, c2, d);
  66130. if (!(item2 in dmap)) {
  66131. dmap[item2] = [];
  66132. }
  66133. dmap[item2].push({"r": r2, "c": c2});
  66134. }
  66135. }
  66136. if (conditionValue0 == "0") {
  66137. for (let x in dmap) {
  66138. if (x != "null" && x != "undefined" && dmap[x].length > 1) {
  66139. for (let j = 0; j < dmap[x].length; j++) {
  66140. if (dmap[x][j].r + "_" + dmap[x][j].c in computeMap2) {
  66141. computeMap2[dmap[x][j].r + "_" + dmap[x][j].c]["textColor"] = textColor;
  66142. computeMap2[dmap[x][j].r + "_" + dmap[x][j].c]["cellColor"] = cellColor;
  66143. } else {
  66144. computeMap2[dmap[x][j].r + "_" + dmap[x][j].c] = {"textColor": textColor, "cellColor": cellColor};
  66145. }
  66146. }
  66147. }
  66148. }
  66149. }
  66150. if (conditionValue0 == "1") {
  66151. for (let x in dmap) {
  66152. if (x != "null" && x != "undefined" && dmap[x].length == 1) {
  66153. if (dmap[x][0].r + "_" + dmap[x][0].c in computeMap2) {
  66154. computeMap2[dmap[x][0].r + "_" + dmap[x][0].c]["textColor"] = textColor;
  66155. computeMap2[dmap[x][0].r + "_" + dmap[x][0].c]["cellColor"] = cellColor;
  66156. } else {
  66157. computeMap2[dmap[x][0].r + "_" + dmap[x][0].c] = {"textColor": textColor, "cellColor": cellColor};
  66158. }
  66159. }
  66160. }
  66161. }
  66162. } else if (conditionName == "top10" || conditionName == "top10%" || conditionName == "last10" || conditionName == "last10%" || conditionName == "AboveAverage" || conditionName == "SubAverage") {
  66163. let dArr = [];
  66164. for (let r2 = cellrange[s].row[0]; r2 <= cellrange[s].row[1]; r2++) {
  66165. for (let c2 = cellrange[s].column[0]; c2 <= cellrange[s].column[1]; c2++) {
  66166. if (d[r2] == null || d[r2][c2] == null) {
  66167. continue;
  66168. }
  66169. if (d[r2][c2].ct != null && d[r2][c2].ct.t == "n") {
  66170. dArr.push(getcellvalue(r2, c2, d));
  66171. }
  66172. }
  66173. }
  66174. if (conditionName == "top10" || conditionName == "top10%" || conditionName == "last10" || conditionName == "last10%") {
  66175. for (let j = 0; j < dArr.length; j++) {
  66176. for (let k = 0; k < dArr.length - 1 - j; k++) {
  66177. if (dArr[k] < dArr[k + 1]) {
  66178. let temp = dArr[k];
  66179. dArr[k] = dArr[k + 1];
  66180. dArr[k + 1] = temp;
  66181. }
  66182. }
  66183. }
  66184. let cArr;
  66185. if (conditionName == "top10") {
  66186. cArr = dArr.slice(0, conditionValue0);
  66187. } else if (conditionName == "top10%") {
  66188. cArr = dArr.slice(0, Math.floor(conditionValue0 * dArr.length / 100));
  66189. } else if (conditionName == "last10") {
  66190. cArr = dArr.slice(dArr.length - conditionValue0, dArr.length);
  66191. } else if (conditionName == "last10%") {
  66192. cArr = dArr.slice(dArr.length - Math.floor(conditionValue0 * dArr.length / 100), dArr.length);
  66193. }
  66194. for (let r2 = cellrange[s].row[0]; r2 <= cellrange[s].row[1]; r2++) {
  66195. for (let c2 = cellrange[s].column[0]; c2 <= cellrange[s].column[1]; c2++) {
  66196. if (d[r2] == null || d[r2][c2] == null) {
  66197. continue;
  66198. }
  66199. let cellVal = getcellvalue(r2, c2, d);
  66200. if (cArr.indexOf(cellVal) != -1) {
  66201. if (r2 + "_" + c2 in computeMap2) {
  66202. computeMap2[r2 + "_" + c2]["textColor"] = textColor;
  66203. computeMap2[r2 + "_" + c2]["cellColor"] = cellColor;
  66204. } else {
  66205. computeMap2[r2 + "_" + c2] = {"textColor": textColor, "cellColor": cellColor};
  66206. }
  66207. }
  66208. }
  66209. }
  66210. } else if (conditionName == "AboveAverage" || conditionName == "SubAverage") {
  66211. let sum = 0;
  66212. for (let j = 0; j < dArr.length; j++) {
  66213. sum += dArr[j];
  66214. }
  66215. let averageNum = sum / dArr.length;
  66216. if (conditionName == "AboveAverage") {
  66217. for (let r2 = cellrange[s].row[0]; r2 <= cellrange[s].row[1]; r2++) {
  66218. for (let c2 = cellrange[s].column[0]; c2 <= cellrange[s].column[1]; c2++) {
  66219. if (d[r2] == null || d[r2][c2] == null) {
  66220. continue;
  66221. }
  66222. let cellVal = getcellvalue(r2, c2, d);
  66223. if (cellVal > averageNum) {
  66224. if (r2 + "_" + c2 in computeMap2) {
  66225. computeMap2[r2 + "_" + c2]["textColor"] = textColor;
  66226. computeMap2[r2 + "_" + c2]["cellColor"] = cellColor;
  66227. } else {
  66228. computeMap2[r2 + "_" + c2] = {"textColor": textColor, "cellColor": cellColor};
  66229. }
  66230. }
  66231. }
  66232. }
  66233. } else if (conditionName == "SubAverage") {
  66234. for (let r2 = cellrange[s].row[0]; r2 <= cellrange[s].row[1]; r2++) {
  66235. for (let c2 = cellrange[s].column[0]; c2 <= cellrange[s].column[1]; c2++) {
  66236. if (d[r2] == null || d[r2][c2] == null) {
  66237. continue;
  66238. }
  66239. let cellVal = getcellvalue(r2, c2, d);
  66240. if (cellVal < averageNum) {
  66241. if (r2 + "_" + c2 in computeMap2) {
  66242. computeMap2[r2 + "_" + c2]["textColor"] = textColor;
  66243. computeMap2[r2 + "_" + c2]["cellColor"] = cellColor;
  66244. } else {
  66245. computeMap2[r2 + "_" + c2] = {"textColor": textColor, "cellColor": cellColor};
  66246. }
  66247. }
  66248. }
  66249. }
  66250. }
  66251. }
  66252. } else if (conditionName == "formula") {
  66253. let str = cellrange[s].row[0], edr = cellrange[s].row[1], stc = cellrange[s].column[0], edc = cellrange[s].column[1];
  66254. let formulaTxt = conditionValue0;
  66255. if (conditionValue0.toString().slice(0, 1) != "=") {
  66256. formulaTxt = "=" + conditionValue0;
  66257. }
  66258. for (let r2 = str; r2 <= edr; r2++) {
  66259. for (let c2 = stc; c2 <= edc; c2++) {
  66260. let func = formulaTxt;
  66261. let offsetRow = r2 - str;
  66262. let offsetCol = c2 - stc;
  66263. if (offsetRow > 0) {
  66264. func = "=" + formula_default.functionCopy(func, "down", offsetRow);
  66265. }
  66266. if (offsetCol > 0) {
  66267. func = "=" + formula_default.functionCopy(func, "right", offsetCol);
  66268. }
  66269. let funcV = formula_default.execfunction(func);
  66270. let v = funcV[1];
  66271. if (typeof v != "boolean") {
  66272. v = !!Number(v);
  66273. }
  66274. if (!v) {
  66275. continue;
  66276. }
  66277. if (r2 + "_" + c2 in computeMap2) {
  66278. computeMap2[r2 + "_" + c2]["textColor"] = textColor;
  66279. computeMap2[r2 + "_" + c2]["cellColor"] = cellColor;
  66280. } else {
  66281. computeMap2[r2 + "_" + c2] = {"textColor": textColor, "cellColor": cellColor};
  66282. }
  66283. }
  66284. }
  66285. }
  66286. }
  66287. }
  66288. }
  66289. }
  66290. return computeMap2;
  66291. },
  66292. updateItem: function(type, cellrange, format) {
  66293. if (!checkProtectionFormatCells(store_default.currentSheetIndex)) {
  66294. return;
  66295. }
  66296. let _this = this;
  66297. let index2 = getSheetIndex(store_default.currentSheetIndex);
  66298. let fileH = $.extend(true, [], store_default.luckysheetfile);
  66299. let historyRules = _this.getHistoryRules(fileH);
  66300. let ruleArr2;
  66301. if (type == "delSheet") {
  66302. ruleArr2 = [];
  66303. } else {
  66304. let rule = {
  66305. "type": type,
  66306. "cellrange": cellrange,
  66307. "format": format
  66308. };
  66309. ruleArr2 = store_default.luckysheetfile[index2]["luckysheet_conditionformat_save"] == null ? [] : store_default.luckysheetfile[index2]["luckysheet_conditionformat_save"];
  66310. ruleArr2.push(rule);
  66311. }
  66312. store_default.luckysheetfile[index2]["luckysheet_conditionformat_save"] = ruleArr2;
  66313. let fileC = $.extend(true, [], store_default.luckysheetfile);
  66314. let currentRules = _this.getCurrentRules(fileC);
  66315. _this.ref(historyRules, currentRules);
  66316. if (server_default.allowUpdate) {
  66317. server_default.saveParam("all", store_default.currentSheetIndex, ruleArr2, {"k": "luckysheet_conditionformat_save"});
  66318. }
  66319. },
  66320. getHistoryRules: function(fileH) {
  66321. let historyRules = [];
  66322. for (let h = 0; h < fileH.length; h++) {
  66323. historyRules.push({"sheetIndex": fileH[h]["index"], "luckysheet_conditionformat_save": fileH[h]["luckysheet_conditionformat_save"]});
  66324. }
  66325. return historyRules;
  66326. },
  66327. getCurrentRules: function(fileC) {
  66328. let currentRules = [];
  66329. for (let c2 = 0; c2 < fileC.length; c2++) {
  66330. currentRules.push({"sheetIndex": fileC[c2]["index"], "luckysheet_conditionformat_save": fileC[c2]["luckysheet_conditionformat_save"]});
  66331. }
  66332. return currentRules;
  66333. },
  66334. ref: function(historyRules, currentRules) {
  66335. if (store_default.clearjfundo) {
  66336. store_default.jfundo.length = 0;
  66337. let redo2 = {};
  66338. redo2["type"] = "updateCF";
  66339. redo2["data"] = {"historyRules": historyRules, "currentRules": currentRules};
  66340. store_default.jfredo.push(redo2);
  66341. }
  66342. setTimeout(function() {
  66343. luckysheetrefreshgrid();
  66344. }, 1);
  66345. }
  66346. };
  66347. conditionformat_default = conditionformat;
  66348. }
  66349. });
  66350. // src/controllers/selection.js
  66351. var selection, selection_default;
  66352. var init_selection = __esm({
  66353. "src/controllers/selection.js"() {
  66354. init_select();
  66355. init_menuButton();
  66356. init_conditionformat();
  66357. init_protection();
  66358. init_editor();
  66359. init_tooltip();
  66360. init_formula();
  66361. init_border();
  66362. init_getdata();
  66363. init_getRowlen();
  66364. init_validate();
  66365. init_refresh();
  66366. init_format();
  66367. init_get();
  66368. init_util();
  66369. init_store();
  66370. init_locale();
  66371. init_imageCtrl();
  66372. selection = {
  66373. clearcopy: function(e) {
  66374. let clipboardData = window.clipboardData;
  66375. if (!clipboardData) {
  66376. if (!!e) {
  66377. clipboardData = e.originalEvent.clipboardData;
  66378. }
  66379. }
  66380. let cpdata = " ";
  66381. store_default.luckysheet_selection_range = [];
  66382. selectionCopyShow();
  66383. if (!clipboardData) {
  66384. let textarea = $("#luckysheet-copy-content").css("visibility", "hidden");
  66385. textarea.val(cpdata);
  66386. textarea.focus();
  66387. textarea.select();
  66388. setTimeout(function() {
  66389. textarea.blur().css("visibility", "visible");
  66390. }, 10);
  66391. } else {
  66392. clipboardData.setData("Text", cpdata);
  66393. return false;
  66394. }
  66395. },
  66396. getHtmlBorderStyle: function(type, color) {
  66397. let style = "";
  66398. let borderType = {
  66399. "0": "none",
  66400. "1": "Thin",
  66401. "2": "Hair",
  66402. "3": "Dotted",
  66403. "4": "Dashed",
  66404. "5": "DashDot",
  66405. "6": "DashDotDot",
  66406. "7": "Double",
  66407. "8": "Medium",
  66408. "9": "MediumDashed",
  66409. "10": "MediumDashDot",
  66410. "11": "MediumDashDotDot",
  66411. "12": "SlantedDashDot",
  66412. "13": "Thick"
  66413. };
  66414. type = borderType[type.toString()];
  66415. if (type.indexOf("Medium") > -1) {
  66416. style += "1pt ";
  66417. } else if (type == "Thick") {
  66418. style += "1.5pt ";
  66419. } else {
  66420. style += "0.5pt ";
  66421. }
  66422. if (type == "Hair") {
  66423. style += "double ";
  66424. } else if (type.indexOf("DashDotDot") > -1) {
  66425. style += "dotted ";
  66426. } else if (type.indexOf("DashDot") > -1) {
  66427. style += "dashed ";
  66428. } else if (type.indexOf("Dotted") > -1) {
  66429. style += "dotted ";
  66430. } else if (type.indexOf("Dashed") > -1) {
  66431. style += "dashed ";
  66432. } else {
  66433. style += "solid ";
  66434. }
  66435. return style + color + ";";
  66436. },
  66437. copy: function(e) {
  66438. let clipboardData = window.clipboardData;
  66439. if (!clipboardData) {
  66440. clipboardData = e.originalEvent.clipboardData;
  66441. }
  66442. store_default.luckysheet_selection_range = [];
  66443. let rowIndexArr = [], colIndexArr = [];
  66444. let copyRange = [], RowlChange = false, HasMC = false;
  66445. for (let s = 0; s < store_default.luckysheet_select_save.length; s++) {
  66446. let range2 = store_default.luckysheet_select_save[s];
  66447. let r1 = range2.row[0], r2 = range2.row[1];
  66448. let c1 = range2.column[0], c2 = range2.column[1];
  66449. for (let copyR = r1; copyR <= r2; copyR++) {
  66450. if (store_default.config["rowhidden"] != null && store_default.config["rowhidden"][copyR] != null) {
  66451. continue;
  66452. }
  66453. if (!rowIndexArr.includes(copyR)) {
  66454. rowIndexArr.push(copyR);
  66455. }
  66456. if (store_default.config["rowlen"] != null && copyR in store_default.config["rowlen"]) {
  66457. RowlChange = true;
  66458. }
  66459. for (let copyC = c1; copyC <= c2; copyC++) {
  66460. if (store_default.config["colhidden"] != null && store_default.config["colhidden"][copyC] != null) {
  66461. continue;
  66462. }
  66463. if (!colIndexArr.includes(copyC)) {
  66464. colIndexArr.push(copyC);
  66465. }
  66466. let cell = store_default.flowdata[copyR][copyC];
  66467. if (getObjType(cell) == "object" && "mc" in cell && cell.mc.rs != null) {
  66468. HasMC = true;
  66469. }
  66470. }
  66471. }
  66472. store_default.luckysheet_selection_range.push({"row": range2.row, "column": range2.column});
  66473. copyRange.push({"row": range2.row, "column": range2.column});
  66474. }
  66475. selectionCopyShow();
  66476. store_default.luckysheet_copy_save = {
  66477. "dataSheetIndex": store_default.currentSheetIndex,
  66478. "copyRange": copyRange,
  66479. "RowlChange": RowlChange,
  66480. "HasMC": HasMC
  66481. };
  66482. let _this = this;
  66483. let borderInfoCompute;
  66484. if (store_default.config["borderInfo"] && store_default.config["borderInfo"].length > 0) {
  66485. borderInfoCompute = getBorderInfoCompute();
  66486. }
  66487. let cpdata = "", d = editor_default.deepCopyFlowData(store_default.flowdata);
  66488. let colgroup = "";
  66489. for (let i2 = 0; i2 < rowIndexArr.length; i2++) {
  66490. let r2 = rowIndexArr[i2];
  66491. if (store_default.config["rowhidden"] != null && store_default.config["rowhidden"][r2] != null) {
  66492. continue;
  66493. }
  66494. if (store_default.config == null || store_default.config["rowlen"] == null || store_default.config["rowlen"][r2.toString()] == null) {
  66495. cpdata += '<tr height="19">';
  66496. } else {
  66497. cpdata += `<tr height="${store_default.config["rowlen"][r2.toString()]}">`;
  66498. }
  66499. for (let j = 0; j < colIndexArr.length; j++) {
  66500. let c2 = colIndexArr[j];
  66501. if (r2 == rowIndexArr[0]) {
  66502. if (store_default.config == null || store_default.config["columnlen"] == null || store_default.config["columnlen"][c2.toString()] == null) {
  66503. colgroup += '<col width="72px"></col>';
  66504. } else {
  66505. colgroup += '<col width="' + store_default.config["columnlen"][c2.toString()] + 'px"></col>';
  66506. }
  66507. }
  66508. if (store_default.config["colhidden"] != null && store_default.config["colhidden"][c2] != null) {
  66509. continue;
  66510. }
  66511. let column = '<td ${span} style="${style}">';
  66512. if (d[r2] != null && d[r2][c2] != null) {
  66513. let style = "", span = "";
  66514. let reg = /^(w|W)((0?)|(0\.0+))$/;
  66515. let c_value;
  66516. if (d[r2][c2].ct != null && d[r2][c2].ct.fa != null && d[r2][c2].ct.fa.match(reg)) {
  66517. c_value = getcellvalue(r2, c2, d);
  66518. } else {
  66519. c_value = getcellvalue(r2, c2, d, "m");
  66520. }
  66521. style += menuButton_default.getStyleByCell(d, r2, c2);
  66522. if (getObjType(d[r2][c2]) == "object" && "mc" in d[r2][c2]) {
  66523. if ("rs" in d[r2][c2]["mc"]) {
  66524. span = 'rowspan="' + d[r2][c2]["mc"].rs + '" colspan="' + d[r2][c2]["mc"].cs + '"';
  66525. if (borderInfoCompute && borderInfoCompute[r2 + "_" + c2]) {
  66526. let bl_obj = {"color": {}, "style": {}}, br_obj = {"color": {}, "style": {}}, bt_obj = {"color": {}, "style": {}}, bb_obj = {"color": {}, "style": {}};
  66527. for (let bd_r = r2; bd_r < r2 + d[r2][c2]["mc"].rs; bd_r++) {
  66528. for (let bd_c = c2; bd_c < c2 + d[r2][c2]["mc"].cs; bd_c++) {
  66529. if (bd_r == r2 && borderInfoCompute[bd_r + "_" + bd_c] && borderInfoCompute[bd_r + "_" + bd_c].t) {
  66530. let linetype = borderInfoCompute[bd_r + "_" + bd_c].t.style;
  66531. let bcolor = borderInfoCompute[bd_r + "_" + bd_c].t.color;
  66532. if (bt_obj["style"][linetype] == null) {
  66533. bt_obj["style"][linetype] = 1;
  66534. } else {
  66535. bt_obj["style"][linetype] = bt_obj["style"][linetype] + 1;
  66536. }
  66537. if (bt_obj["color"][bcolor] == null) {
  66538. bt_obj["color"][bcolor] = 1;
  66539. } else {
  66540. bt_obj["color"][bcolor] = bt_obj["color"][bcolor] + 1;
  66541. }
  66542. }
  66543. if (bd_r == r2 + d[r2][c2]["mc"].rs - 1 && borderInfoCompute[bd_r + "_" + bd_c] && borderInfoCompute[bd_r + "_" + bd_c].b) {
  66544. let linetype = borderInfoCompute[bd_r + "_" + bd_c].b.style;
  66545. let bcolor = borderInfoCompute[bd_r + "_" + bd_c].b.color;
  66546. if (bb_obj["style"][linetype] == null) {
  66547. bb_obj["style"][linetype] = 1;
  66548. } else {
  66549. bb_obj["style"][linetype] = bb_obj["style"][linetype] + 1;
  66550. }
  66551. if (bb_obj["color"][bcolor] == null) {
  66552. bb_obj["color"][bcolor] = 1;
  66553. } else {
  66554. bb_obj["color"][bcolor] = bb_obj["color"][bcolor] + 1;
  66555. }
  66556. }
  66557. if (bd_c == c2 && borderInfoCompute[bd_r + "_" + bd_c] && borderInfoCompute[bd_r + "_" + bd_c].l) {
  66558. let linetype = borderInfoCompute[r2 + "_" + c2].l.style;
  66559. let bcolor = borderInfoCompute[bd_r + "_" + bd_c].l.color;
  66560. if (bl_obj["style"][linetype] == null) {
  66561. bl_obj["style"][linetype] = 1;
  66562. } else {
  66563. bl_obj["style"][linetype] = bl_obj["style"][linetype] + 1;
  66564. }
  66565. if (bl_obj["color"][bcolor] == null) {
  66566. bl_obj["color"][bcolor] = 1;
  66567. } else {
  66568. bl_obj["color"][bcolor] = bl_obj["color"][bcolor] + 1;
  66569. }
  66570. }
  66571. if (bd_c == c2 + d[r2][c2]["mc"].cs - 1 && borderInfoCompute[bd_r + "_" + bd_c] && borderInfoCompute[bd_r + "_" + bd_c].r) {
  66572. let linetype = borderInfoCompute[bd_r + "_" + bd_c].r.style;
  66573. let bcolor = borderInfoCompute[bd_r + "_" + bd_c].r.color;
  66574. if (br_obj["style"][linetype] == null) {
  66575. br_obj["style"][linetype] = 1;
  66576. } else {
  66577. br_obj["style"][linetype] = br_obj["style"][linetype] + 1;
  66578. }
  66579. if (br_obj["color"][bcolor] == null) {
  66580. br_obj["color"][bcolor] = 1;
  66581. } else {
  66582. br_obj["color"][bcolor] = br_obj["color"][bcolor] + 1;
  66583. }
  66584. }
  66585. }
  66586. }
  66587. let rowlen = d[r2][c2]["mc"].rs, collen = d[r2][c2]["mc"].cs;
  66588. if (JSON.stringify(bl_obj).length > 23) {
  66589. let bl_color = null, bl_style = null;
  66590. for (let x in bl_obj.color) {
  66591. if (bl_obj.color[x] >= rowlen / 2) {
  66592. bl_color = x;
  66593. }
  66594. }
  66595. for (let x in bl_obj.style) {
  66596. if (bl_obj.style[x] >= rowlen / 2) {
  66597. bl_style = x;
  66598. }
  66599. }
  66600. if (bl_color != null && bl_style != null) {
  66601. style += "border-left:" + _this.getHtmlBorderStyle(bl_style, bl_color);
  66602. }
  66603. }
  66604. if (JSON.stringify(br_obj).length > 23) {
  66605. let br_color = null, br_style = null;
  66606. for (let x in br_obj.color) {
  66607. if (br_obj.color[x] >= rowlen / 2) {
  66608. br_color = x;
  66609. }
  66610. }
  66611. for (let x in br_obj.style) {
  66612. if (br_obj.style[x] >= rowlen / 2) {
  66613. br_style = x;
  66614. }
  66615. }
  66616. if (br_color != null && br_style != null) {
  66617. style += "border-right:" + _this.getHtmlBorderStyle(br_style, br_color);
  66618. }
  66619. }
  66620. if (JSON.stringify(bt_obj).length > 23) {
  66621. let bt_color = null, bt_style = null;
  66622. for (let x in bt_obj.color) {
  66623. if (bt_obj.color[x] >= collen / 2) {
  66624. bt_color = x;
  66625. }
  66626. }
  66627. for (let x in bt_obj.style) {
  66628. if (bt_obj.style[x] >= collen / 2) {
  66629. bt_style = x;
  66630. }
  66631. }
  66632. if (bt_color != null && bt_style != null) {
  66633. style += "border-top:" + _this.getHtmlBorderStyle(bt_style, bt_color);
  66634. }
  66635. }
  66636. if (JSON.stringify(bb_obj).length > 23) {
  66637. let bb_color = null, bb_style = null;
  66638. for (let x in bb_obj.color) {
  66639. if (bb_obj.color[x] >= collen / 2) {
  66640. bb_color = x;
  66641. }
  66642. }
  66643. for (let x in bb_obj.style) {
  66644. if (bb_obj.style[x] >= collen / 2) {
  66645. bb_style = x;
  66646. }
  66647. }
  66648. if (bb_color != null && bb_style != null) {
  66649. style += "border-bottom:" + _this.getHtmlBorderStyle(bb_style, bb_color);
  66650. }
  66651. }
  66652. }
  66653. } else {
  66654. continue;
  66655. }
  66656. } else {
  66657. if (borderInfoCompute && borderInfoCompute[r2 + "_" + c2]) {
  66658. if (borderInfoCompute[r2 + "_" + c2].l) {
  66659. let linetype = borderInfoCompute[r2 + "_" + c2].l.style;
  66660. let bcolor = borderInfoCompute[r2 + "_" + c2].l.color;
  66661. style += "border-left:" + _this.getHtmlBorderStyle(linetype, bcolor);
  66662. }
  66663. if (borderInfoCompute[r2 + "_" + c2].r) {
  66664. let linetype = borderInfoCompute[r2 + "_" + c2].r.style;
  66665. let bcolor = borderInfoCompute[r2 + "_" + c2].r.color;
  66666. style += "border-right:" + _this.getHtmlBorderStyle(linetype, bcolor);
  66667. }
  66668. if (borderInfoCompute[r2 + "_" + c2].b) {
  66669. let linetype = borderInfoCompute[r2 + "_" + c2].b.style;
  66670. let bcolor = borderInfoCompute[r2 + "_" + c2].b.color;
  66671. style += "border-bottom:" + _this.getHtmlBorderStyle(linetype, bcolor);
  66672. }
  66673. if (borderInfoCompute[r2 + "_" + c2].t) {
  66674. let linetype = borderInfoCompute[r2 + "_" + c2].t.style;
  66675. let bcolor = borderInfoCompute[r2 + "_" + c2].t.color;
  66676. style += "border-top:" + _this.getHtmlBorderStyle(linetype, bcolor);
  66677. }
  66678. }
  66679. }
  66680. column = replaceHtml(column, {"style": style, "span": span});
  66681. if (c_value == null) {
  66682. c_value = getcellvalue(r2, c2, d);
  66683. }
  66684. if (c_value == null && d[r2][c2] && d[r2][c2].ct && d[r2][c2].ct.t == "inlineStr") {
  66685. c_value = d[r2][c2].ct.s.map((val) => {
  66686. const brDom = $('<br style="mso-data-placement:same-cell;">');
  66687. const splitValue = val.v.split("\r\n");
  66688. return splitValue.map((item2) => {
  66689. if (!item2) {
  66690. return "";
  66691. }
  66692. const font = $("<font></font>");
  66693. val.fs && font.css("font-size", `${val.fs}pt`);
  66694. val.bl && font.css("font-weight", "bold");
  66695. val.it && font.css("font-style", "italic");
  66696. val.un && font.css("text-decoration", "underline");
  66697. val.fc && font.css("color", val.fc);
  66698. if (val.cl) {
  66699. font.append(`<s>${item2}</s>`);
  66700. } else {
  66701. font.text(item2);
  66702. }
  66703. return font[0].outerHTML;
  66704. }).join(brDom[0].outerHTML);
  66705. }).join("");
  66706. }
  66707. if (c_value == null) {
  66708. c_value = "";
  66709. }
  66710. c_value = formula_default.ltGtSignDeal(c_value);
  66711. column += c_value;
  66712. } else {
  66713. let style = "";
  66714. if (borderInfoCompute && borderInfoCompute[r2 + "_" + c2]) {
  66715. if (borderInfoCompute[r2 + "_" + c2].l) {
  66716. let linetype = borderInfoCompute[r2 + "_" + c2].l.style;
  66717. let bcolor = borderInfoCompute[r2 + "_" + c2].l.color;
  66718. style += "border-left:" + _this.getHtmlBorderStyle(linetype, bcolor);
  66719. }
  66720. if (borderInfoCompute[r2 + "_" + c2].r) {
  66721. let linetype = borderInfoCompute[r2 + "_" + c2].r.style;
  66722. let bcolor = borderInfoCompute[r2 + "_" + c2].r.color;
  66723. style += "border-right:" + _this.getHtmlBorderStyle(linetype, bcolor);
  66724. }
  66725. if (borderInfoCompute[r2 + "_" + c2].b) {
  66726. let linetype = borderInfoCompute[r2 + "_" + c2].b.style;
  66727. let bcolor = borderInfoCompute[r2 + "_" + c2].b.color;
  66728. style += "border-bottom:" + _this.getHtmlBorderStyle(linetype, bcolor);
  66729. }
  66730. if (borderInfoCompute[r2 + "_" + c2].t) {
  66731. let linetype = borderInfoCompute[r2 + "_" + c2].t.style;
  66732. let bcolor = borderInfoCompute[r2 + "_" + c2].t.color;
  66733. style += "border-top:" + _this.getHtmlBorderStyle(linetype, bcolor);
  66734. }
  66735. }
  66736. column += "";
  66737. column = replaceHtml(column, {"style": style, "span": ""});
  66738. column += "";
  66739. }
  66740. column += "</td>";
  66741. cpdata += column;
  66742. }
  66743. cpdata += "</tr>";
  66744. }
  66745. cpdata = `<table data-type="luckysheet_copy_action_table"><colgroup>${colgroup}</colgroup>` + cpdata + "</table>";
  66746. store_default.iscopyself = true;
  66747. if (!clipboardData) {
  66748. let textarea = $("#luckysheet-copy-content");
  66749. textarea.html(cpdata);
  66750. textarea.focus();
  66751. textarea.select();
  66752. document.execCommand("selectAll");
  66753. document.execCommand("Copy");
  66754. setTimeout(function() {
  66755. $("#luckysheet-copy-content").blur();
  66756. }, 10);
  66757. } else {
  66758. clipboardData.setData("Text", cpdata);
  66759. return false;
  66760. }
  66761. },
  66762. copybyformat: function(e, txt) {
  66763. let clipboardData = window.clipboardData;
  66764. if (!clipboardData) {
  66765. clipboardData = e.originalEvent && e.originalEvent.clipboardData;
  66766. }
  66767. store_default.luckysheet_selection_range = [{"row": store_default.luckysheet_select_save[0].row, "column": store_default.luckysheet_select_save[0].column}];
  66768. selectionCopyShow();
  66769. let cpdata = txt;
  66770. store_default.iscopyself = true;
  66771. if (!clipboardData) {
  66772. let textarea = $("#luckysheet-copy-content");
  66773. textarea.text(cpdata);
  66774. textarea.focus();
  66775. textarea.select();
  66776. document.execCommand("selectAll");
  66777. document.execCommand("Copy");
  66778. setTimeout(function() {
  66779. textarea.blur();
  66780. }, 10);
  66781. } else {
  66782. clipboardData.setData("Text", cpdata);
  66783. return false;
  66784. }
  66785. },
  66786. isPasteAction: false,
  66787. paste: function(e, triggerType) {
  66788. let _this = this;
  66789. if (store_default.allowEdit === false) {
  66790. return;
  66791. }
  66792. const _locale = locale_default();
  66793. const local_drag = _locale.drag;
  66794. let textarea = $("#luckysheet-copy-content");
  66795. textarea.focus();
  66796. textarea.select();
  66797. setTimeout(function() {
  66798. let data = textarea.html();
  66799. if (data.indexOf("luckysheet_copy_action_table") > -1 && store_default.luckysheet_copy_save["copyRange"] != null && store_default.luckysheet_copy_save["copyRange"].length > 0) {
  66800. if (store_default.luckysheet_paste_iscut) {
  66801. store_default.luckysheet_paste_iscut = false;
  66802. _this.pasteHandlerOfCutPaste(store_default.luckysheet_copy_save);
  66803. _this.clearcopy(e);
  66804. } else {
  66805. _this.pasteHandlerOfCopyPaste(store_default.luckysheet_copy_save);
  66806. }
  66807. } else if (data.indexOf("luckysheet_copy_action_image") > -1) {
  66808. imageCtrl_default.pasteImgItem();
  66809. } else if (triggerType != "btn") {
  66810. _this.pasteHandler(data);
  66811. } else {
  66812. if (isEditMode()) {
  66813. alert(local_drag.pasteMustKeybordAlert);
  66814. } else {
  66815. tooltip_default.info(local_drag.pasteMustKeybordAlertHTMLTitle, local_drag.pasteMustKeybordAlertHTML);
  66816. }
  66817. }
  66818. }, 10);
  66819. },
  66820. pasteHandler: function(data, borderInfo) {
  66821. if (!checkProtectionLockedRangeList(store_default.luckysheet_select_save, store_default.currentSheetIndex)) {
  66822. return;
  66823. }
  66824. if (store_default.allowEdit === false) {
  66825. return;
  66826. }
  66827. const _locale = locale_default();
  66828. const locale_paste = _locale.paste;
  66829. if (store_default.luckysheet_select_save.length > 1) {
  66830. if (isEditMode()) {
  66831. alert(locale_paste.errorNotAllowMulti);
  66832. } else {
  66833. tooltip_default.info(`<i class="fa fa-exclamation-triangle"></i>${locale_paste.warning}`, locale_paste.errorNotAllowMulti);
  66834. }
  66835. }
  66836. if (typeof data == "object") {
  66837. if (data.length == 0) {
  66838. return;
  66839. }
  66840. ;
  66841. let cfg = $.extend(true, {}, store_default.config);
  66842. if (cfg["merge"] == null) {
  66843. cfg["merge"] = {};
  66844. }
  66845. if (JSON.stringify(borderInfo).length > 2 && cfg["borderInfo"] == null) {
  66846. cfg["borderInfo"] = [];
  66847. }
  66848. let copyh = data.length, copyc = data[0].length;
  66849. let minh = store_default.luckysheet_select_save[0].row[0], maxh = minh + copyh - 1;
  66850. let minc = store_default.luckysheet_select_save[0].column[0], maxc = minc + copyc - 1;
  66851. let has_PartMC = false;
  66852. if (cfg["merge"] != null) {
  66853. has_PartMC = hasPartMC(cfg, minh, maxh, minc, maxc);
  66854. }
  66855. if (has_PartMC) {
  66856. if (isEditMode()) {
  66857. alert(locale_paste.errorNotAllowMerged);
  66858. } else {
  66859. tooltip_default.info(`<i class="fa fa-exclamation-triangle"></i>${locale_paste.warning}`, locale_paste.errorNotAllowMerged);
  66860. }
  66861. return;
  66862. }
  66863. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  66864. let rowMaxLength = d.length;
  66865. let cellMaxLength = d[0].length;
  66866. let addr = maxh - rowMaxLength + 1, addc = maxc - cellMaxLength + 1;
  66867. if (addr > 0 || addc > 0) {
  66868. d = datagridgrowth([].concat(d), addr, addc, true);
  66869. }
  66870. if (cfg["rowlen"] == null) {
  66871. cfg["rowlen"] = {};
  66872. }
  66873. let RowlChange = false;
  66874. let offsetMC = {};
  66875. for (let h = minh; h <= maxh; h++) {
  66876. let x = [].concat(d[h]);
  66877. let currentRowLen = store_default.defaultrowlen;
  66878. if (cfg["rowlen"][h] != null) {
  66879. currentRowLen = cfg["rowlen"][h];
  66880. }
  66881. for (let c2 = minc; c2 <= maxc; c2++) {
  66882. if (getObjType(x[c2]) == "object" && "mc" in x[c2]) {
  66883. if ("rs" in x[c2].mc) {
  66884. delete cfg["merge"][x[c2]["mc"].r + "_" + x[c2]["mc"].c];
  66885. }
  66886. delete x[c2].mc;
  66887. }
  66888. let value = null;
  66889. if (data[h - minh] != null && data[h - minh][c2 - minc] != null) {
  66890. value = data[h - minh][c2 - minc];
  66891. }
  66892. x[c2] = $.extend(true, {}, value);
  66893. if (value != null && "mc" in x[c2]) {
  66894. if (x[c2]["mc"].rs != null) {
  66895. x[c2]["mc"].r = h;
  66896. x[c2]["mc"].c = c2;
  66897. cfg["merge"][x[c2]["mc"].r + "_" + x[c2]["mc"].c] = x[c2]["mc"];
  66898. offsetMC[value["mc"].r + "_" + value["mc"].c] = [x[c2]["mc"].r, x[c2]["mc"].c];
  66899. } else {
  66900. x[c2] = {"mc": {r: offsetMC[value["mc"].r + "_" + value["mc"].c][0], c: offsetMC[value["mc"].r + "_" + value["mc"].c][1]}};
  66901. }
  66902. }
  66903. if (borderInfo[h - minh + "_" + (c2 - minc)]) {
  66904. let bd_obj = {
  66905. "rangeType": "cell",
  66906. "value": {
  66907. "row_index": h,
  66908. "col_index": c2,
  66909. "l": borderInfo[h - minh + "_" + (c2 - minc)].l,
  66910. "r": borderInfo[h - minh + "_" + (c2 - minc)].r,
  66911. "t": borderInfo[h - minh + "_" + (c2 - minc)].t,
  66912. "b": borderInfo[h - minh + "_" + (c2 - minc)].b
  66913. }
  66914. };
  66915. cfg["borderInfo"].push(bd_obj);
  66916. }
  66917. let fontset = luckysheetfontformat(x[c2]);
  66918. let oneLineTextHeight = menuButton_default.getTextSize("\u7530", fontset)[1];
  66919. if (oneLineTextHeight > currentRowLen) {
  66920. currentRowLen = oneLineTextHeight;
  66921. RowlChange = true;
  66922. }
  66923. }
  66924. d[h] = x;
  66925. if (currentRowLen != store_default.defaultrowlen) {
  66926. cfg["rowlen"][h] = currentRowLen;
  66927. }
  66928. }
  66929. store_default.luckysheet_select_save = [{"row": [minh, maxh], "column": [minc, maxc]}];
  66930. if (addr > 0 || addc > 0 || RowlChange) {
  66931. let allParam = {
  66932. "cfg": cfg,
  66933. "RowlChange": true
  66934. };
  66935. jfrefreshgrid(d, store_default.luckysheet_select_save, allParam);
  66936. } else {
  66937. let allParam = {
  66938. "cfg": cfg
  66939. };
  66940. jfrefreshgrid(d, store_default.luckysheet_select_save, allParam);
  66941. selectHightlightShow();
  66942. }
  66943. } else {
  66944. data = data.replace(/\r/g, "");
  66945. let dataChe = [];
  66946. let che = data.split("\n"), colchelen = che[0].split(" ").length;
  66947. for (let i2 = 0; i2 < che.length; i2++) {
  66948. if (che[i2].split(" ").length < colchelen) {
  66949. continue;
  66950. }
  66951. dataChe.push(che[i2].split(" "));
  66952. }
  66953. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  66954. let last = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1];
  66955. let curR = last["row"] == null ? 0 : last["row"][0];
  66956. let curC = last["column"] == null ? 0 : last["column"][0];
  66957. let rlen = dataChe.length, clen = dataChe[0].length;
  66958. let has_PartMC = false;
  66959. if (store_default.config["merge"] != null) {
  66960. has_PartMC = hasPartMC(store_default.config, curR, curR + rlen - 1, curC, curC + clen - 1);
  66961. }
  66962. if (has_PartMC) {
  66963. if (isEditMode()) {
  66964. alert(locale_paste.errorNotAllowMerged);
  66965. } else {
  66966. tooltip_default.info(`<i class="fa fa-exclamation-triangle"></i>${locale_paste.warning}`, locale_paste.errorNotAllowMerged);
  66967. }
  66968. return;
  66969. }
  66970. let addr = curR + rlen - d.length, addc = curC + clen - d[0].length;
  66971. if (addr > 0 || addc > 0) {
  66972. d = datagridgrowth([].concat(d), addr, addc, true);
  66973. }
  66974. for (let r2 = 0; r2 < rlen; r2++) {
  66975. let x = [].concat(d[r2 + curR]);
  66976. for (let c2 = 0; c2 < clen; c2++) {
  66977. let originCell = x[c2 + curC];
  66978. let value = dataChe[r2][c2];
  66979. if (isRealNum(value)) {
  66980. if (originCell && originCell.ct && originCell.ct.fa === "@") {
  66981. value = String(value);
  66982. } else {
  66983. value = parseFloat(value);
  66984. }
  66985. }
  66986. if (originCell instanceof Object) {
  66987. originCell.v = value;
  66988. if (originCell.ct != null && originCell.ct.fa != null) {
  66989. originCell.m = update(originCell["ct"]["fa"], value);
  66990. } else {
  66991. originCell.m = value;
  66992. }
  66993. if (originCell.f != null && originCell.f.length > 0) {
  66994. originCell.f = "";
  66995. formula_default.delFunctionGroup(r2 + curR, c2 + curC, store_default.currentSheetIndex);
  66996. }
  66997. } else {
  66998. let cell = {};
  66999. let mask = genarate(value);
  67000. cell.v = mask[2];
  67001. cell.ct = mask[1];
  67002. cell.m = mask[0];
  67003. x[c2 + curC] = cell;
  67004. }
  67005. }
  67006. d[r2 + curR] = x;
  67007. }
  67008. last["row"] = [curR, curR + rlen - 1];
  67009. last["column"] = [curC, curC + clen - 1];
  67010. if (addr > 0 || addc > 0) {
  67011. let allParam = {
  67012. "RowlChange": true
  67013. };
  67014. jfrefreshgrid(d, store_default.luckysheet_select_save, allParam);
  67015. } else {
  67016. jfrefreshgrid(d, store_default.luckysheet_select_save);
  67017. selectHightlightShow();
  67018. }
  67019. }
  67020. },
  67021. pasteHandlerOfCutPaste: function(copyRange) {
  67022. if (!checkProtectionLockedRangeList(store_default.luckysheet_select_save, store_default.currentSheetIndex)) {
  67023. return;
  67024. }
  67025. if (store_default.allowEdit === false) {
  67026. return;
  67027. }
  67028. const _locale = locale_default();
  67029. const locale_paste = _locale.paste;
  67030. let cfg = $.extend(true, {}, store_default.config);
  67031. if (cfg["merge"] == null) {
  67032. cfg["merge"] = {};
  67033. }
  67034. let copyHasMC = copyRange["HasMC"];
  67035. let copyRowlChange = copyRange["RowlChange"];
  67036. let copySheetIndex = copyRange["dataSheetIndex"];
  67037. let c_r1 = copyRange["copyRange"][0].row[0], c_r2 = copyRange["copyRange"][0].row[1], c_c1 = copyRange["copyRange"][0].column[0], c_c2 = copyRange["copyRange"][0].column[1];
  67038. let copyData = $.extend(true, [], getdatabyselection({"row": [c_r1, c_r2], "column": [c_c1, c_c2]}, copySheetIndex));
  67039. let copyh = copyData.length, copyc = copyData[0].length;
  67040. let last = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1];
  67041. let minh = last["row_focus"], maxh = minh + copyh - 1;
  67042. let minc = last["column_focus"], maxc = minc + copyc - 1;
  67043. let has_PartMC = false;
  67044. if (cfg["merge"] != null) {
  67045. has_PartMC = hasPartMC(cfg, minh, maxh, minc, maxc);
  67046. }
  67047. if (has_PartMC) {
  67048. if (isEditMode()) {
  67049. alert(locale_paste.errorNotAllowMerged);
  67050. } else {
  67051. tooltip_default.info(`<i class="fa fa-exclamation-triangle"></i>${locale_paste.warning}`, locale_paste.errorNotAllowMerged);
  67052. }
  67053. return;
  67054. }
  67055. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  67056. let rowMaxLength = d.length;
  67057. let cellMaxLength = d[0].length;
  67058. let addr = copyh + minh - rowMaxLength, addc = copyc + minc - cellMaxLength;
  67059. if (addr > 0 || addc > 0) {
  67060. d = datagridgrowth([].concat(d), addr, addc, true);
  67061. }
  67062. let borderInfoCompute = getBorderInfoCompute(copySheetIndex);
  67063. let c_dataVerification = $.extend(true, {}, store_default.luckysheetfile[getSheetIndex(copySheetIndex)]["dataVerification"]);
  67064. let dataVerification = $.extend(true, {}, store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)]["dataVerification"]);
  67065. if (store_default.currentSheetIndex == copySheetIndex) {
  67066. for (let i2 = c_r1; i2 <= c_r2; i2++) {
  67067. for (let j = c_c1; j <= c_c2; j++) {
  67068. let cell = d[i2][j];
  67069. if (getObjType(cell) == "object" && "mc" in cell) {
  67070. if ("rs" in cell["mc"]) {
  67071. delete cfg["merge"][cell["mc"].r + "_" + cell["mc"].c];
  67072. }
  67073. delete cell["mc"];
  67074. }
  67075. d[i2][j] = null;
  67076. delete dataVerification[i2 + "_" + j];
  67077. }
  67078. }
  67079. if (cfg["borderInfo"] && cfg["borderInfo"].length > 0) {
  67080. let source_borderInfo = [];
  67081. for (let i2 = 0; i2 < cfg["borderInfo"].length; i2++) {
  67082. let bd_rangeType = cfg["borderInfo"][i2].rangeType;
  67083. if (bd_rangeType == "range") {
  67084. let bd_range = cfg["borderInfo"][i2].range;
  67085. let bd_emptyRange = [];
  67086. for (let j = 0; j < bd_range.length; j++) {
  67087. bd_emptyRange = bd_emptyRange.concat(conditionformat_default.CFSplitRange(bd_range[j], {"row": [c_r1, c_r2], "column": [c_c1, c_c2]}, {"row": [minh, maxh], "column": [minc, maxc]}, "restPart"));
  67088. }
  67089. cfg["borderInfo"][i2].range = bd_emptyRange;
  67090. source_borderInfo.push(cfg["borderInfo"][i2]);
  67091. } else if (bd_rangeType == "cell") {
  67092. let bd_r = cfg["borderInfo"][i2].value.row_index;
  67093. let bd_c = cfg["borderInfo"][i2].value.col_index;
  67094. if (!(bd_r >= c_r1 && bd_r <= c_r2 && bd_c >= c_c1 && bd_c <= c_c2)) {
  67095. source_borderInfo.push(cfg["borderInfo"][i2]);
  67096. }
  67097. }
  67098. }
  67099. cfg["borderInfo"] = source_borderInfo;
  67100. }
  67101. }
  67102. let offsetMC = {};
  67103. for (let h = minh; h <= maxh; h++) {
  67104. let x = [].concat(d[h]);
  67105. for (let c2 = minc; c2 <= maxc; c2++) {
  67106. if (borderInfoCompute[c_r1 + h - minh + "_" + (c_c1 + c2 - minc)]) {
  67107. let bd_obj = {
  67108. "rangeType": "cell",
  67109. "value": {
  67110. "row_index": h,
  67111. "col_index": c2,
  67112. "l": borderInfoCompute[c_r1 + h - minh + "_" + (c_c1 + c2 - minc)].l,
  67113. "r": borderInfoCompute[c_r1 + h - minh + "_" + (c_c1 + c2 - minc)].r,
  67114. "t": borderInfoCompute[c_r1 + h - minh + "_" + (c_c1 + c2 - minc)].t,
  67115. "b": borderInfoCompute[c_r1 + h - minh + "_" + (c_c1 + c2 - minc)].b
  67116. }
  67117. };
  67118. if (cfg["borderInfo"] == null) {
  67119. cfg["borderInfo"] = [];
  67120. }
  67121. cfg["borderInfo"].push(bd_obj);
  67122. } else if (borderInfoCompute[h + "_" + c2]) {
  67123. let bd_obj = {
  67124. "rangeType": "cell",
  67125. "value": {
  67126. "row_index": h,
  67127. "col_index": c2,
  67128. "l": null,
  67129. "r": null,
  67130. "t": null,
  67131. "b": null
  67132. }
  67133. };
  67134. if (cfg["borderInfo"] == null) {
  67135. cfg["borderInfo"] = [];
  67136. }
  67137. cfg["borderInfo"].push(bd_obj);
  67138. }
  67139. if (c_dataVerification[c_r1 + h - minh + "_" + (c_c1 + c2 - minc)]) {
  67140. dataVerification[h + "_" + c2] = c_dataVerification[c_r1 + h - minh + "_" + (c_c1 + c2 - minc)];
  67141. }
  67142. if (getObjType(x[c2]) == "object" && "mc" in x[c2]) {
  67143. if ("rs" in x[c2].mc) {
  67144. delete cfg["merge"][x[c2]["mc"].r + "_" + x[c2]["mc"].c];
  67145. }
  67146. delete x[c2].mc;
  67147. }
  67148. let value = null;
  67149. if (copyData[h - minh] != null && copyData[h - minh][c2 - minc] != null) {
  67150. value = copyData[h - minh][c2 - minc];
  67151. }
  67152. x[c2] = $.extend(true, {}, value);
  67153. if (value != null && copyHasMC && "mc" in x[c2]) {
  67154. if (x[c2]["mc"].rs != null) {
  67155. x[c2]["mc"].r = h;
  67156. x[c2]["mc"].c = c2;
  67157. cfg["merge"][x[c2]["mc"].r + "_" + x[c2]["mc"].c] = x[c2]["mc"];
  67158. offsetMC[value["mc"].r + "_" + value["mc"].c] = [x[c2]["mc"].r, x[c2]["mc"].c];
  67159. } else {
  67160. x[c2] = {"mc": {r: offsetMC[value["mc"].r + "_" + value["mc"].c][0], c: offsetMC[value["mc"].r + "_" + value["mc"].c][1]}};
  67161. }
  67162. }
  67163. }
  67164. d[h] = x;
  67165. }
  67166. last["row"] = [minh, maxh];
  67167. last["column"] = [minc, maxc];
  67168. if (copyRowlChange) {
  67169. if (store_default.currentSheetIndex != copySheetIndex) {
  67170. cfg = rowlenByRange(d, minh, maxh, cfg);
  67171. } else {
  67172. cfg = rowlenByRange(d, c_r1, c_r2, cfg);
  67173. cfg = rowlenByRange(d, minh, maxh, cfg);
  67174. }
  67175. }
  67176. let source, target;
  67177. if (store_default.currentSheetIndex != copySheetIndex) {
  67178. let sourceData = $.extend(true, [], store_default.luckysheetfile[getSheetIndex(copySheetIndex)]["data"]);
  67179. let sourceConfig = $.extend(true, {}, store_default.luckysheetfile[getSheetIndex(copySheetIndex)]["config"]);
  67180. let sourceCurData = $.extend(true, [], sourceData);
  67181. let sourceCurConfig = $.extend(true, {}, sourceConfig);
  67182. if (sourceCurConfig["merge"] == null) {
  67183. sourceCurConfig["merge"] = {};
  67184. }
  67185. for (let source_r = c_r1; source_r <= c_r2; source_r++) {
  67186. for (let source_c = c_c1; source_c <= c_c2; source_c++) {
  67187. let cell = sourceCurData[source_r][source_c];
  67188. if (getObjType(cell) == "object" && "mc" in cell) {
  67189. if ("rs" in cell["mc"]) {
  67190. delete sourceCurConfig["merge"][cell["mc"].r + "_" + cell["mc"].c];
  67191. }
  67192. delete cell["mc"];
  67193. }
  67194. sourceCurData[source_r][source_c] = null;
  67195. }
  67196. }
  67197. if (copyRowlChange) {
  67198. sourceCurConfig = rowlenByRange(sourceCurData, c_r1, c_r2, sourceCurConfig);
  67199. }
  67200. if (sourceCurConfig["borderInfo"] && sourceCurConfig["borderInfo"].length > 0) {
  67201. let source_borderInfo = [];
  67202. for (let i2 = 0; i2 < sourceCurConfig["borderInfo"].length; i2++) {
  67203. let bd_rangeType = sourceCurConfig["borderInfo"][i2].rangeType;
  67204. if (bd_rangeType == "range") {
  67205. let bd_range = sourceCurConfig["borderInfo"][i2].range;
  67206. let bd_emptyRange = [];
  67207. for (let j = 0; j < bd_range.length; j++) {
  67208. bd_emptyRange = bd_emptyRange.concat(conditionformat_default.CFSplitRange(bd_range[j], {"row": [c_r1, c_r2], "column": [c_c1, c_c2]}, {"row": [minh, maxh], "column": [minc, maxc]}, "restPart"));
  67209. }
  67210. sourceCurConfig["borderInfo"][i2].range = bd_emptyRange;
  67211. source_borderInfo.push(sourceCurConfig["borderInfo"][i2]);
  67212. } else if (bd_rangeType == "cell") {
  67213. let bd_r = sourceCurConfig["borderInfo"][i2].value.row_index;
  67214. let bd_c = sourceCurConfig["borderInfo"][i2].value.col_index;
  67215. if (!(bd_r >= c_r1 && bd_r <= c_r2 && bd_c >= c_c1 && bd_c <= c_c2)) {
  67216. source_borderInfo.push(sourceCurConfig["borderInfo"][i2]);
  67217. }
  67218. }
  67219. }
  67220. sourceCurConfig["borderInfo"] = source_borderInfo;
  67221. }
  67222. let source_cdformat = $.extend(true, [], store_default.luckysheetfile[getSheetIndex(copySheetIndex)]["luckysheet_conditionformat_save"]);
  67223. let source_curCdformat = $.extend(true, [], source_cdformat);
  67224. let ruleArr2 = [];
  67225. if (source_curCdformat != null && source_curCdformat.length > 0) {
  67226. for (let i2 = 0; i2 < source_curCdformat.length; i2++) {
  67227. let source_curCdformat_cellrange = source_curCdformat[i2].cellrange;
  67228. let emptyRange = [];
  67229. let emptyRange2 = [];
  67230. for (let j = 0; j < source_curCdformat_cellrange.length; j++) {
  67231. let range2 = conditionformat_default.CFSplitRange(source_curCdformat_cellrange[j], {"row": [c_r1, c_r2], "column": [c_c1, c_c2]}, {"row": [minh, maxh], "column": [minc, maxc]}, "restPart");
  67232. emptyRange = emptyRange.concat(range2);
  67233. let range22 = conditionformat_default.CFSplitRange(source_curCdformat_cellrange[j], {"row": [c_r1, c_r2], "column": [c_c1, c_c2]}, {"row": [minh, maxh], "column": [minc, maxc]}, "operatePart");
  67234. if (range22.length > 0) {
  67235. emptyRange2 = emptyRange2.concat(range22);
  67236. }
  67237. }
  67238. source_curCdformat[i2].cellrange = emptyRange;
  67239. if (emptyRange2.length > 0) {
  67240. let ruleObj = $.extend(true, {}, source_curCdformat[i2]);
  67241. ruleObj.cellrange = emptyRange2;
  67242. ruleArr2.push(ruleObj);
  67243. }
  67244. }
  67245. }
  67246. let target_cdformat = $.extend(true, [], store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)]["luckysheet_conditionformat_save"]);
  67247. let target_curCdformat = $.extend(true, [], target_cdformat);
  67248. if (ruleArr2.length > 0) {
  67249. target_curCdformat = target_curCdformat.concat(ruleArr2);
  67250. }
  67251. for (let i2 = c_r1; i2 <= c_r2; i2++) {
  67252. for (let j = c_c1; j <= c_c2; j++) {
  67253. delete c_dataVerification[i2 + "_" + j];
  67254. }
  67255. }
  67256. source = {
  67257. "sheetIndex": copySheetIndex,
  67258. "data": sourceData,
  67259. "curData": sourceCurData,
  67260. "config": sourceConfig,
  67261. "curConfig": sourceCurConfig,
  67262. "cdformat": source_cdformat,
  67263. "curCdformat": source_curCdformat,
  67264. "dataVerification": $.extend(true, {}, store_default.luckysheetfile[getSheetIndex(copySheetIndex)]["dataVerification"]),
  67265. "curDataVerification": c_dataVerification,
  67266. "range": {
  67267. "row": [c_r1, c_r2],
  67268. "column": [c_c1, c_c2]
  67269. }
  67270. };
  67271. target = {
  67272. "sheetIndex": store_default.currentSheetIndex,
  67273. "data": store_default.flowdata,
  67274. "curData": d,
  67275. "config": $.extend(true, {}, store_default.config),
  67276. "curConfig": cfg,
  67277. "cdformat": target_cdformat,
  67278. "curCdformat": target_curCdformat,
  67279. "dataVerification": $.extend(true, {}, store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)]["dataVerification"]),
  67280. "curDataVerification": dataVerification,
  67281. "range": {
  67282. "row": [minh, maxh],
  67283. "column": [minc, maxc]
  67284. }
  67285. };
  67286. } else {
  67287. let cdformat = $.extend(true, [], store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)]["luckysheet_conditionformat_save"]);
  67288. let curCdformat = $.extend(true, [], cdformat);
  67289. if (curCdformat != null && curCdformat.length > 0) {
  67290. for (let i2 = 0; i2 < curCdformat.length; i2++) {
  67291. let cellrange = curCdformat[i2].cellrange;
  67292. let emptyRange = [];
  67293. for (let j = 0; j < cellrange.length; j++) {
  67294. let range2 = conditionformat_default.CFSplitRange(cellrange[j], {"row": [c_r1, c_r2], "column": [c_c1, c_c2]}, {"row": [minh, maxh], "column": [minc, maxc]}, "allPart");
  67295. emptyRange = emptyRange.concat(range2);
  67296. }
  67297. curCdformat[i2].cellrange = emptyRange;
  67298. }
  67299. }
  67300. source = {
  67301. "sheetIndex": store_default.currentSheetIndex,
  67302. "data": store_default.flowdata,
  67303. "curData": d,
  67304. "config": $.extend(true, {}, store_default.config),
  67305. "curConfig": cfg,
  67306. "cdformat": cdformat,
  67307. "curCdformat": curCdformat,
  67308. "dataVerification": $.extend(true, {}, store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)]["dataVerification"]),
  67309. "curDataVerification": dataVerification,
  67310. "range": {
  67311. "row": [c_r1, c_r2],
  67312. "column": [c_c1, c_c2]
  67313. }
  67314. };
  67315. target = {
  67316. "sheetIndex": store_default.currentSheetIndex,
  67317. "data": store_default.flowdata,
  67318. "curData": d,
  67319. "config": $.extend(true, {}, store_default.config),
  67320. "curConfig": cfg,
  67321. "cdformat": cdformat,
  67322. "curCdformat": curCdformat,
  67323. "dataVerification": $.extend(true, {}, store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)]["dataVerification"]),
  67324. "curDataVerification": dataVerification,
  67325. "range": {
  67326. "row": [minh, maxh],
  67327. "column": [minc, maxc]
  67328. }
  67329. };
  67330. }
  67331. if (addr > 0 || addc > 0) {
  67332. jfrefreshgrid_pastcut(source, target, true);
  67333. } else {
  67334. jfrefreshgrid_pastcut(source, target, copyRowlChange);
  67335. }
  67336. },
  67337. pasteHandlerOfCopyPaste: function(copyRange) {
  67338. if (!checkProtectionLockedRangeList(store_default.luckysheet_select_save, store_default.currentSheetIndex)) {
  67339. return;
  67340. }
  67341. const _locale = locale_default();
  67342. const locale_paste = _locale.paste;
  67343. let cfg = $.extend(true, {}, store_default.config);
  67344. if (cfg["merge"] == null) {
  67345. cfg["merge"] = {};
  67346. }
  67347. let copyHasMC = copyRange["HasMC"];
  67348. let copyRowlChange = copyRange["RowlChange"];
  67349. let copySheetIndex = copyRange["dataSheetIndex"];
  67350. let c_r1 = copyRange["copyRange"][0].row[0], c_r2 = copyRange["copyRange"][0].row[1], c_c1 = copyRange["copyRange"][0].column[0], c_c2 = copyRange["copyRange"][0].column[1];
  67351. let arr = [], isSameRow = false;
  67352. for (let i2 = 0; i2 < copyRange["copyRange"].length; i2++) {
  67353. let arrData = getdatabyselection({"row": copyRange["copyRange"][i2].row, "column": copyRange["copyRange"][i2].column}, copySheetIndex);
  67354. if (copyRange["copyRange"].length > 1) {
  67355. if (c_r1 == copyRange["copyRange"][1].row[0] && c_r2 == copyRange["copyRange"][1].row[1]) {
  67356. arrData = arrData[0].map(function(col, a) {
  67357. return arrData.map(function(row) {
  67358. return row[a];
  67359. });
  67360. });
  67361. arr = arr.concat(arrData);
  67362. isSameRow = true;
  67363. } else if (c_c1 == copyRange["copyRange"][1].column[0] && c_c2 == copyRange["copyRange"][1].column[1]) {
  67364. arr = arr.concat(arrData);
  67365. }
  67366. } else {
  67367. arr = arrData;
  67368. }
  67369. }
  67370. if (isSameRow) {
  67371. arr = arr[0].map(function(col, b) {
  67372. return arr.map(function(row) {
  67373. return row[b];
  67374. });
  67375. });
  67376. }
  67377. let copyData = $.extend(true, [], arr);
  67378. if (copyRange["copyRange"].length > 1) {
  67379. for (let i2 = 0; i2 < copyData.length; i2++) {
  67380. for (let j = 0; j < copyData[i2].length; j++) {
  67381. if (copyData[i2][j] != null && copyData[i2][j].f != null) {
  67382. delete copyData[i2][j].f;
  67383. delete copyData[i2][j].spl;
  67384. }
  67385. }
  67386. }
  67387. }
  67388. let copyh = copyData.length, copyc = copyData[0].length;
  67389. let last = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1];
  67390. let minh = last["row"][0], maxh = last["row"][1];
  67391. let minc = last["column"][0], maxc = last["column"][1];
  67392. let mh = (maxh - minh + 1) % copyh;
  67393. let mc = (maxc - minc + 1) % copyc;
  67394. if (mh != 0 || mc != 0) {
  67395. maxh = minh + copyh - 1;
  67396. maxc = minc + copyc - 1;
  67397. }
  67398. let has_PartMC = false;
  67399. if (cfg["merge"] != null) {
  67400. has_PartMC = hasPartMC(cfg, minh, maxh, minc, maxc);
  67401. }
  67402. if (has_PartMC) {
  67403. if (isEditMode()) {
  67404. alert(locale_paste.errorNotAllowMerged);
  67405. } else {
  67406. tooltip_default.info(`<i class="fa fa-exclamation-triangle"></i>${locale_paste.warning}`, locale_paste.errorNotAllowMerged);
  67407. }
  67408. return;
  67409. }
  67410. let timesH = (maxh - minh + 1) / copyh;
  67411. let timesC = (maxc - minc + 1) / copyc;
  67412. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  67413. let rowMaxLength = d.length;
  67414. let cellMaxLength = d[0].length;
  67415. let addr = copyh + minh - rowMaxLength, addc = copyc + minc - cellMaxLength;
  67416. if (addr > 0 || addc > 0) {
  67417. d = datagridgrowth([].concat(d), addr, addc, true);
  67418. }
  67419. let borderInfoCompute = getBorderInfoCompute(copySheetIndex);
  67420. let c_dataVerification = $.extend(true, {}, store_default.luckysheetfile[getSheetIndex(copySheetIndex)].dataVerification);
  67421. let dataVerification = null;
  67422. let mth = 0, mtc = 0, maxcellCahe = 0, maxrowCache = 0;
  67423. for (let th = 1; th <= timesH; th++) {
  67424. for (let tc = 1; tc <= timesC; tc++) {
  67425. mth = minh + (th - 1) * copyh;
  67426. mtc = minc + (tc - 1) * copyc;
  67427. maxrowCache = minh + th * copyh;
  67428. maxcellCahe = minc + tc * copyc;
  67429. let offsetRow = mth - c_r1;
  67430. let offsetCol = mtc - c_c1;
  67431. let offsetMC = {};
  67432. for (let h = mth; h < maxrowCache; h++) {
  67433. let x = [].concat(d[h]);
  67434. for (let c2 = mtc; c2 < maxcellCahe; c2++) {
  67435. if (borderInfoCompute[c_r1 + h - mth + "_" + (c_c1 + c2 - mtc)]) {
  67436. let bd_obj = {
  67437. "rangeType": "cell",
  67438. "value": {
  67439. "row_index": h,
  67440. "col_index": c2,
  67441. "l": borderInfoCompute[c_r1 + h - mth + "_" + (c_c1 + c2 - mtc)].l,
  67442. "r": borderInfoCompute[c_r1 + h - mth + "_" + (c_c1 + c2 - mtc)].r,
  67443. "t": borderInfoCompute[c_r1 + h - mth + "_" + (c_c1 + c2 - mtc)].t,
  67444. "b": borderInfoCompute[c_r1 + h - mth + "_" + (c_c1 + c2 - mtc)].b
  67445. }
  67446. };
  67447. if (cfg["borderInfo"] == null) {
  67448. cfg["borderInfo"] = [];
  67449. }
  67450. cfg["borderInfo"].push(bd_obj);
  67451. } else if (borderInfoCompute[h + "_" + c2]) {
  67452. let bd_obj = {
  67453. "rangeType": "cell",
  67454. "value": {
  67455. "row_index": h,
  67456. "col_index": c2,
  67457. "l": null,
  67458. "r": null,
  67459. "t": null,
  67460. "b": null
  67461. }
  67462. };
  67463. if (cfg["borderInfo"] == null) {
  67464. cfg["borderInfo"] = [];
  67465. }
  67466. cfg["borderInfo"].push(bd_obj);
  67467. }
  67468. if (c_dataVerification[c_r1 + h - mth + "_" + (c_c1 + c2 - mtc)]) {
  67469. if (dataVerification == null) {
  67470. dataVerification = $.extend(true, {}, store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)].dataVerification);
  67471. }
  67472. dataVerification[h + "_" + c2] = c_dataVerification[c_r1 + h - mth + "_" + (c_c1 + c2 - mtc)];
  67473. }
  67474. if (getObjType(x[c2]) == "object" && "mc" in x[c2]) {
  67475. if ("rs" in x[c2].mc) {
  67476. delete cfg["merge"][x[c2]["mc"].r + "_" + x[c2]["mc"].c];
  67477. }
  67478. delete x[c2].mc;
  67479. }
  67480. let value = null;
  67481. if (copyData[h - mth] != null && copyData[h - mth][c2 - mtc] != null) {
  67482. value = $.extend(true, {}, copyData[h - mth][c2 - mtc]);
  67483. }
  67484. if (value != null && value.f != null) {
  67485. let func = value.f;
  67486. if (offsetRow > 0) {
  67487. func = "=" + formula_default.functionCopy(func, "down", offsetRow);
  67488. }
  67489. if (offsetRow < 0) {
  67490. func = "=" + formula_default.functionCopy(func, "up", Math.abs(offsetRow));
  67491. }
  67492. if (offsetCol > 0) {
  67493. func = "=" + formula_default.functionCopy(func, "right", offsetCol);
  67494. }
  67495. if (offsetCol < 0) {
  67496. func = "=" + formula_default.functionCopy(func, "left", Math.abs(offsetCol));
  67497. }
  67498. let funcV = formula_default.execfunction(func, h, c2, void 0, true);
  67499. if (value.spl != null) {
  67500. value.f = funcV[2];
  67501. value.v = funcV[1];
  67502. value.spl = funcV[3].data;
  67503. } else {
  67504. value.f = funcV[2];
  67505. value.v = funcV[1];
  67506. if (value.ct != null && value.ct["fa"] != null) {
  67507. value.m = update(value.ct["fa"], funcV[1]);
  67508. }
  67509. }
  67510. }
  67511. x[c2] = $.extend(true, {}, value);
  67512. if (value != null && copyHasMC && "mc" in x[c2]) {
  67513. if (x[c2]["mc"].rs != null) {
  67514. x[c2]["mc"].r = h;
  67515. x[c2]["mc"].c = c2;
  67516. cfg["merge"][x[c2]["mc"].r + "_" + x[c2]["mc"].c] = x[c2]["mc"];
  67517. offsetMC[value["mc"].r + "_" + value["mc"].c] = [x[c2]["mc"].r, x[c2]["mc"].c];
  67518. } else {
  67519. x[c2] = {"mc": {r: offsetMC[value["mc"].r + "_" + value["mc"].c][0], c: offsetMC[value["mc"].r + "_" + value["mc"].c][1]}};
  67520. }
  67521. }
  67522. }
  67523. d[h] = x;
  67524. }
  67525. }
  67526. }
  67527. let cdformat = null;
  67528. if (copyRange["copyRange"].length == 1) {
  67529. let c_file = store_default.luckysheetfile[getSheetIndex(copySheetIndex)];
  67530. let a_file = store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)];
  67531. let ruleArr_cf = $.extend(true, [], c_file["luckysheet_conditionformat_save"]);
  67532. if (ruleArr_cf != null && ruleArr_cf.length > 0) {
  67533. cdformat = $.extend(true, [], a_file["luckysheet_conditionformat_save"]);
  67534. for (let i2 = 0; i2 < ruleArr_cf.length; i2++) {
  67535. let cf_range = ruleArr_cf[i2].cellrange;
  67536. let emptyRange = [];
  67537. for (let th = 1; th <= timesH; th++) {
  67538. for (let tc = 1; tc <= timesC; tc++) {
  67539. mth = minh + (th - 1) * copyh;
  67540. mtc = minc + (tc - 1) * copyc;
  67541. maxrowCache = minh + th * copyh;
  67542. maxcellCahe = minc + tc * copyc;
  67543. for (let j = 0; j < cf_range.length; j++) {
  67544. let range2 = conditionformat_default.CFSplitRange(cf_range[j], {"row": [c_r1, c_r2], "column": [c_c1, c_c2]}, {"row": [mth, maxrowCache - 1], "column": [mtc, maxcellCahe - 1]}, "operatePart");
  67545. if (range2.length > 0) {
  67546. emptyRange = emptyRange.concat(range2);
  67547. }
  67548. }
  67549. }
  67550. }
  67551. if (emptyRange.length > 0) {
  67552. ruleArr_cf[i2].cellrange = emptyRange;
  67553. cdformat.push(ruleArr_cf[i2]);
  67554. }
  67555. }
  67556. }
  67557. }
  67558. last["row"] = [minh, maxh];
  67559. last["column"] = [minc, maxc];
  67560. if (copyRowlChange || addr > 0 || addc > 0) {
  67561. cfg = rowlenByRange(d, minh, maxh, cfg);
  67562. let allParam = {
  67563. "cfg": cfg,
  67564. "RowlChange": true,
  67565. "cdformat": cdformat,
  67566. "dataVerification": dataVerification
  67567. };
  67568. jfrefreshgrid(d, store_default.luckysheet_select_save, allParam);
  67569. } else {
  67570. let allParam = {
  67571. "cfg": cfg,
  67572. "cdformat": cdformat,
  67573. "dataVerification": dataVerification
  67574. };
  67575. jfrefreshgrid(d, store_default.luckysheet_select_save, allParam);
  67576. selectHightlightShow();
  67577. }
  67578. },
  67579. pasteHandlerOfPaintModel: function(copyRange) {
  67580. if (!checkProtectionLockedRangeList(store_default.luckysheet_select_save, store_default.currentSheetIndex)) {
  67581. return;
  67582. }
  67583. const _locale = locale_default();
  67584. const locale_paste = _locale.paste;
  67585. let cfg = $.extend(true, {}, store_default.config);
  67586. if (cfg["merge"] == null) {
  67587. cfg["merge"] = {};
  67588. }
  67589. let copyHasMC = copyRange["HasMC"];
  67590. let copyRowlChange = copyRange["RowlChange"];
  67591. let copySheetIndex = copyRange["dataSheetIndex"];
  67592. let c_r1 = copyRange["copyRange"][0].row[0], c_r2 = copyRange["copyRange"][0].row[1], c_c1 = copyRange["copyRange"][0].column[0], c_c2 = copyRange["copyRange"][0].column[1];
  67593. let copyData = $.extend(true, [], getdatabyselection({"row": [c_r1, c_r2], "column": [c_c1, c_c2]}, copySheetIndex));
  67594. let last = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1];
  67595. let minh = last["row"][0], maxh = last["row"][1];
  67596. let minc = last["column"][0], maxc = last["column"][1];
  67597. let copyh = copyData.length, copyc = copyData[0].length;
  67598. if (minh == maxh && minc == maxc) {
  67599. let has_PartMC = false;
  67600. if (cfg["merge"] != null) {
  67601. has_PartMC = hasPartMC(cfg, minh, minh + copyh - 1, minc, minc + copyc - 1);
  67602. }
  67603. if (has_PartMC) {
  67604. if (isEditMode()) {
  67605. alert(locale_paste.errorNotAllowMerged);
  67606. } else {
  67607. tooltip_default.info(`<i class="fa fa-exclamation-triangle"></i>${locale_paste.warning}`, locale_paste.errorNotAllowMerged);
  67608. }
  67609. return;
  67610. }
  67611. maxh = minh + copyh - 1;
  67612. maxc = minc + copyc - 1;
  67613. }
  67614. let timesH = Math.ceil((maxh - minh + 1) / copyh);
  67615. let timesC = Math.ceil((maxc - minc + 1) / copyc);
  67616. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  67617. let cellMaxLength = d[0].length;
  67618. let rowMaxLength = d.length;
  67619. let borderInfoCompute = getBorderInfoCompute(copySheetIndex);
  67620. let c_dataVerification = $.extend(true, {}, store_default.luckysheetfile[getSheetIndex(copySheetIndex)].dataVerification);
  67621. let dataVerification = null;
  67622. let mth = 0, mtc = 0, maxcellCahe = 0, maxrowCache = 0;
  67623. for (let th = 1; th <= timesH; th++) {
  67624. for (let tc = 1; tc <= timesC; tc++) {
  67625. mth = minh + (th - 1) * copyh;
  67626. mtc = minc + (tc - 1) * copyc;
  67627. maxrowCache = minh + th * copyh > rowMaxLength ? rowMaxLength : minh + th * copyh;
  67628. if (maxrowCache > maxh + 1) {
  67629. maxrowCache = maxh + 1;
  67630. }
  67631. maxcellCahe = minc + tc * copyc > cellMaxLength ? cellMaxLength : minc + tc * copyc;
  67632. if (maxcellCahe > maxc + 1) {
  67633. maxcellCahe = maxc + 1;
  67634. }
  67635. let offsetMC = {};
  67636. for (let h = mth; h < maxrowCache; h++) {
  67637. let x = [].concat(d[h]);
  67638. for (let c2 = mtc; c2 < maxcellCahe; c2++) {
  67639. if (borderInfoCompute[c_r1 + h - mth + "_" + (c_c1 + c2 - mtc)]) {
  67640. let bd_obj = {
  67641. "rangeType": "cell",
  67642. "value": {
  67643. "row_index": h,
  67644. "col_index": c2,
  67645. "l": borderInfoCompute[c_r1 + h - mth + "_" + (c_c1 + c2 - mtc)].l,
  67646. "r": borderInfoCompute[c_r1 + h - mth + "_" + (c_c1 + c2 - mtc)].r,
  67647. "t": borderInfoCompute[c_r1 + h - mth + "_" + (c_c1 + c2 - mtc)].t,
  67648. "b": borderInfoCompute[c_r1 + h - mth + "_" + (c_c1 + c2 - mtc)].b
  67649. }
  67650. };
  67651. if (cfg["borderInfo"] == null) {
  67652. cfg["borderInfo"] = [];
  67653. }
  67654. cfg["borderInfo"].push(bd_obj);
  67655. } else if (borderInfoCompute[h + "_" + c2]) {
  67656. let bd_obj = {
  67657. "rangeType": "cell",
  67658. "value": {
  67659. "row_index": h,
  67660. "col_index": c2,
  67661. "l": null,
  67662. "r": null,
  67663. "t": null,
  67664. "b": null
  67665. }
  67666. };
  67667. if (cfg["borderInfo"] == null) {
  67668. cfg["borderInfo"] = [];
  67669. }
  67670. cfg["borderInfo"].push(bd_obj);
  67671. }
  67672. if (c_dataVerification[c_r1 + h - mth + "_" + (c_c1 + c2 - mtc)]) {
  67673. if (dataVerification == null) {
  67674. dataVerification = $.extend(true, {}, store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)].dataVerification);
  67675. }
  67676. dataVerification[h + "_" + c2] = c_dataVerification[c_r1 + h - mth + "_" + (c_c1 + c2 - mtc)];
  67677. }
  67678. if (getObjType(x[c2]) == "object" && "mc" in x[c2]) {
  67679. if ("rs" in x[c2].mc) {
  67680. delete cfg["merge"][x[c2]["mc"].r + "_" + x[c2]["mc"].c];
  67681. }
  67682. delete x[c2].mc;
  67683. }
  67684. let value = null;
  67685. if (copyData[h - mth] != null && copyData[h - mth][c2 - mtc] != null) {
  67686. value = copyData[h - mth][c2 - mtc];
  67687. }
  67688. if (value != null) {
  67689. delete value["v"];
  67690. delete value["m"];
  67691. delete value["f"];
  67692. delete value["spl"];
  67693. if (value.ct && value.ct.t == "inlineStr") {
  67694. delete value.ct;
  67695. }
  67696. if (getObjType(x[c2]) == "object") {
  67697. if (x[c2].ct && x[c2].ct.t === "inlineStr") {
  67698. delete value["ct"];
  67699. } else {
  67700. let format = ["bg", "fc", "ct", "ht", "vt", "bl", "it", "cl", "un", "fs", "ff", "tb"];
  67701. format.forEach((item2) => {
  67702. Reflect.deleteProperty(x[c2], item2);
  67703. });
  67704. }
  67705. } else {
  67706. x[c2] = {"v": x[c2]};
  67707. }
  67708. x[c2] = $.extend(true, x[c2], value);
  67709. if (x[c2].ct && x[c2].ct.t === "inlineStr") {
  67710. x[c2].ct.s.forEach((item2) => item2 = $.extend(true, item2, value));
  67711. }
  67712. if (copyHasMC && "mc" in x[c2]) {
  67713. if (x[c2]["mc"].rs != null) {
  67714. x[c2]["mc"].r = h;
  67715. if (x[c2]["mc"].rs + h >= maxrowCache) {
  67716. x[c2]["mc"].rs = maxrowCache - h;
  67717. }
  67718. x[c2]["mc"].c = c2;
  67719. if (x[c2]["mc"].cs + c2 >= maxcellCahe) {
  67720. x[c2]["mc"].cs = maxcellCahe - c2;
  67721. }
  67722. cfg["merge"][x[c2]["mc"].r + "_" + x[c2]["mc"].c] = x[c2]["mc"];
  67723. offsetMC[value["mc"].r + "_" + value["mc"].c] = [x[c2]["mc"].r, x[c2]["mc"].c];
  67724. } else {
  67725. x[c2] = {"mc": {r: offsetMC[value["mc"].r + "_" + value["mc"].c][0], c: offsetMC[value["mc"].r + "_" + value["mc"].c][1]}};
  67726. }
  67727. }
  67728. if (x[c2].v != null) {
  67729. if (value["ct"] != null && value["ct"]["fa"] != null) {
  67730. let mask = update(value["ct"]["fa"], x[c2].v);
  67731. x[c2].m = mask;
  67732. }
  67733. }
  67734. }
  67735. }
  67736. d[h] = x;
  67737. }
  67738. }
  67739. }
  67740. let cdformat = null;
  67741. let ruleArr2 = $.extend(true, [], store_default.luckysheetfile[getSheetIndex(copySheetIndex)]["luckysheet_conditionformat_save"]);
  67742. if (ruleArr2 != null && ruleArr2.length > 0) {
  67743. cdformat = $.extend(true, [], store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)]["luckysheet_conditionformat_save"]);
  67744. for (let i2 = 0; i2 < ruleArr2.length; i2++) {
  67745. let cdformat_cellrange = ruleArr2[i2].cellrange;
  67746. let emptyRange = [];
  67747. for (let j = 0; j < cdformat_cellrange.length; j++) {
  67748. let range2 = conditionformat_default.CFSplitRange(cdformat_cellrange[j], {"row": [c_r1, c_r2], "column": [c_c1, c_c2]}, {"row": [minh, maxh], "column": [minc, maxc]}, "operatePart");
  67749. if (range2.length > 0) {
  67750. emptyRange = emptyRange.concat(range2);
  67751. }
  67752. }
  67753. if (emptyRange.length > 0) {
  67754. ruleArr2[i2].cellrange = [{"row": [minh, maxh], "column": [minc, maxc]}];
  67755. cdformat.push(ruleArr2[i2]);
  67756. }
  67757. }
  67758. }
  67759. last["row"] = [minh, maxh];
  67760. last["column"] = [minc, maxc];
  67761. if (copyRowlChange) {
  67762. cfg = rowlenByRange(d, minh, maxh, cfg);
  67763. let allParam = {
  67764. "cfg": cfg,
  67765. "RowlChange": true,
  67766. "cdformat": cdformat,
  67767. "dataVerification": dataVerification
  67768. };
  67769. jfrefreshgrid(d, store_default.luckysheet_select_save, allParam);
  67770. } else {
  67771. if (maxh >= d.length) {
  67772. maxh = d.length - 1;
  67773. }
  67774. cfg = rowlenByRange(d, minh, maxh, cfg);
  67775. let allParam = {
  67776. "cfg": cfg,
  67777. "RowlChange": true,
  67778. "cdformat": cdformat,
  67779. "dataVerification": dataVerification
  67780. };
  67781. jfrefreshgrid(d, store_default.luckysheet_select_save, allParam);
  67782. selectHightlightShow();
  67783. }
  67784. },
  67785. matchcopy: function(data1, data2) {
  67786. let data1cache = [], data2cache = [], data1len, data2len;
  67787. if (typeof data1 == "object") {
  67788. data1cache = data1;
  67789. } else {
  67790. data1cache = data1.split("\n");
  67791. for (let i2 = 0; i2 < data1cache.length; i2++) {
  67792. data1cache[i2] = data1cache[i2].split(" ");
  67793. }
  67794. }
  67795. data1len = data1cache.length;
  67796. if (typeof data2 == "object") {
  67797. data2cache = data2;
  67798. } else {
  67799. data2cache = data2.split("\n");
  67800. for (let i2 = 0; i2 < data2cache.length; i2++) {
  67801. data2cache[i2] = data2cache[i2].split(" ");
  67802. }
  67803. }
  67804. data2len = data2cache.length;
  67805. if (data1len != data2len) {
  67806. return false;
  67807. }
  67808. for (let r1 = 0; r1 < data1len; r1++) {
  67809. if (store_default.config["rowhidden"] != null && store_default.config["rowhidden"][r1] != null) {
  67810. continue;
  67811. }
  67812. for (let r2 = 0; r2 < data2len; r2++) {
  67813. if (data1cache[r1].length != data2cache[r2].length) {
  67814. return false;
  67815. }
  67816. }
  67817. }
  67818. for (let r2 = 0; r2 < data1len; r2++) {
  67819. if (store_default.config["rowhidden"] != null && store_default.config["rowhidden"][r2] != null) {
  67820. continue;
  67821. }
  67822. for (let c2 = 0; c2 < data1cache[0].length; c2++) {
  67823. if (getcellvalue(r2, c2, data1cache) != getcellvalue(r2, c2, data2cache)) {
  67824. return false;
  67825. }
  67826. }
  67827. }
  67828. return true;
  67829. }
  67830. };
  67831. selection_default = selection;
  67832. }
  67833. });
  67834. // src/global/cleargridelement.js
  67835. function cleargridelement(event2) {
  67836. $("#luckysheet-cols-h-hover").hide();
  67837. $("#luckysheet-rightclick-menu").hide();
  67838. $("#luckysheet-cell-selected-boxs .luckysheet-cell-selected").hide();
  67839. $("#luckysheet-cols-h-selected .luckysheet-cols-h-selected").hide();
  67840. $("#luckysheet-rows-h-selected .luckysheet-rows-h-selected").hide();
  67841. $("#luckysheet-cell-selected-focus").hide();
  67842. $("#luckysheet-rows-h-hover").hide();
  67843. $("#luckysheet-selection-copy .luckysheet-selection-copy").hide();
  67844. $("#luckysheet-cols-menu-btn").hide();
  67845. $("#luckysheet-row-count-show, #luckysheet-column-count-show").hide();
  67846. if (!event2) {
  67847. selection_default.clearcopy(event2);
  67848. }
  67849. if ($("#luckysheet-dropCell-icon").is(":visible")) {
  67850. if (event2) {
  67851. $("#luckysheet-dropCell-icon").remove();
  67852. }
  67853. }
  67854. if (menuButton_default.luckysheetPaintModelOn && !event2) {
  67855. menuButton_default.cancelPaintModel();
  67856. }
  67857. }
  67858. var init_cleargridelement = __esm({
  67859. "src/global/cleargridelement.js"() {
  67860. init_selection();
  67861. init_menuButton();
  67862. }
  67863. });
  67864. // src/global/createdom.js
  67865. function luckysheetcreatedom(colwidth, rowheight, data, menu, title) {
  67866. let gh = gridHTML();
  67867. gh = replaceHtml(gh, {"logotitle": title});
  67868. gh = replaceHtml(gh, {"menu": menuToolBar()});
  67869. let flowHTML = flow;
  67870. if (store_default.config == null) {
  67871. store_default.config = {};
  67872. }
  67873. rhchInit(rowheight, colwidth);
  67874. const _locale = locale_default();
  67875. const locale_info = _locale.info;
  67876. let addControll = '<button id="luckysheet-bottom-add-row" class="btn btn-default">' + locale_info.add + '</button><input id="luckysheet-bottom-add-row-input" type="text" class="luckysheet-datavisual-config-input luckysheet-mousedown-cancel" placeholder="' + (luckysheetConfigsetting_default.addRowCount || 100) + '"><span style="font-size: 14px;">' + locale_info.row + '</span><span style="font-size: 14px;color: #9c9c9c;">(' + locale_info.addLast + ")</span>";
  67877. let backControll = ' <button id="luckysheet-bottom-bottom-top" class="btn btn-default" style="">' + locale_info.backTop + "</button>";
  67878. let pageInfo = replaceHtml(locale_info.pageInfo, {
  67879. total: luckysheetConfigsetting_default.total ? luckysheetConfigsetting_default.total : "",
  67880. totalPage: luckysheetConfigsetting_default.pageInfo.totalPage ? luckysheetConfigsetting_default.pageInfo.totalPage : "",
  67881. currentPage: luckysheetConfigsetting_default.pageInfo.currentPage ? luckysheetConfigsetting_default.pageInfo.currentPage : ""
  67882. });
  67883. let pageControll = ' <span id="luckysheet-bottom-page-info" style="font-size: 14px;color: #f34141;">' + pageInfo + '</span> <button id="luckysheet-bottom-page-next" class="btn btn-danger" style="">\u4E0B\u4E00\u9875</button>';
  67884. let pageControll2 = ' <span id="luckysheet-bottom-page-info" style="font-size: 14px;color: #f34141;">' + pageInfo + "</span>";
  67885. let bottomControll = "";
  67886. if (luckysheetConfigsetting_default.enableAddRow) {
  67887. bottomControll += addControll;
  67888. }
  67889. if (luckysheetConfigsetting_default.enablePage) {
  67890. if (parseInt(luckysheetConfigsetting_default.pageInfo.totalPage) == 1) {
  67891. bottomControll += pageControll2;
  67892. } else {
  67893. bottomControll += pageControll;
  67894. }
  67895. }
  67896. if (luckysheetConfigsetting_default.enableAddBackTop) {
  67897. bottomControll += backControll;
  67898. }
  67899. let flowstr = replaceHtml('<div id="luckysheetcoltable_0" class="luckysheet-cell-flow-col"> <div id ="luckysheet-sheettable_0" class="luckysheet-cell-sheettable" style="height:${height}px;width:${width}px;"></div><div id="luckysheet-bottom-controll-row" class="luckysheet-bottom-controll-row"> ' + bottomControll + " </div> </div>", {"height": store_default.rh_height, "width": store_default.ch_width - 1});
  67900. let colsheader = replaceHtml(columnHeaderHTML, {"width": store_default.ch_width, "index": 0, "column": ""});
  67901. flowHTML = replaceHtml(flowHTML, {"width": store_default.ch_width, "flow": flowstr, "index": 0});
  67902. gh = replaceHtml(gh, {"flow": flowHTML, "rowHeader": "<div style='height:" + store_default.rh_height + "px' id='luckysheetrowHeader_0' class='luckysheetsheetchange'></div>", "columnHeader": colsheader, "functionButton": luckysheetConfigsetting_default.functionButton});
  67903. $("#" + store_default.container).append(gh);
  67904. $("#luckysheet-scrollbar-x div").width(store_default.ch_width);
  67905. $("#luckysheet-scrollbar-y div").height(store_default.rh_height + store_default.columnHeaderHeight - store_default.cellMainSrollBarSize - 3);
  67906. $("body").append(maskHTML);
  67907. $("body").append(colsmenuHTML);
  67908. $("body").append(rightclickHTML());
  67909. $("body").append(inputHTML);
  67910. $("body").append(replaceHtml(filtermenuHTML(), {"menuid": "filter"}));
  67911. $("body").append(replaceHtml(filtersubmenuHTML(), {"menuid": "filter"}));
  67912. $("body").append(sheetconfigHTML());
  67913. $("#luckysheet-rows-h").width(store_default.rowHeaderWidth - 1.5);
  67914. $("#luckysheet-cols-h-c").height(store_default.columnHeaderHeight - 1.5);
  67915. $("#luckysheet-left-top").css({width: store_default.rowHeaderWidth - 1.5, height: store_default.columnHeaderHeight - 1.5});
  67916. $("#luckysheet_info_detail_input").val(luckysheetConfigsetting_default.title);
  67917. }
  67918. var init_createdom = __esm({
  67919. "src/global/createdom.js"() {
  67920. init_constant();
  67921. init_luckysheetConfigsetting();
  67922. init_postil();
  67923. init_getdata();
  67924. init_editor();
  67925. init_rhchInit();
  67926. init_util();
  67927. init_store();
  67928. init_locale();
  67929. }
  67930. });
  67931. // src/utils/chartUtil.js
  67932. function generateRandomKey(prefix) {
  67933. if (prefix == null) {
  67934. prefix = "chart";
  67935. }
  67936. var userAgent = window.navigator.userAgent.replace(/[^a-zA-Z0-9]/g, "").split("");
  67937. var mid = "";
  67938. for (var i2 = 0; i2 < 12; i2++) {
  67939. mid += userAgent[Math.round(Math.random() * (userAgent.length - 1))];
  67940. }
  67941. var time = new Date().getTime();
  67942. return prefix + "_" + mid + "_" + time;
  67943. }
  67944. function replaceHtml2(temp, dataarry) {
  67945. return temp.replace(/\$\{([\w]+)\}/g, function(s1, s2) {
  67946. var s = dataarry[s2];
  67947. if (typeof s != "undefined") {
  67948. return s;
  67949. } else {
  67950. return s1;
  67951. }
  67952. });
  67953. }
  67954. var init_chartUtil = __esm({
  67955. "src/utils/chartUtil.js"() {
  67956. }
  67957. });
  67958. // src/global/func_methods.js
  67959. var import_dayjs5, error2, func_methods, func_methods_default;
  67960. var init_func_methods = __esm({
  67961. "src/global/func_methods.js"() {
  67962. init_util();
  67963. init_validate();
  67964. init_format();
  67965. init_formula();
  67966. import_dayjs5 = __toModule(require_dayjs_min());
  67967. error2 = {
  67968. v: "#VALUE!",
  67969. n: "#NAME?",
  67970. na: "#N/A",
  67971. r: "#REF!",
  67972. d: "#DIV/0!",
  67973. nm: "#NUM!",
  67974. nl: "#NULL!",
  67975. sp: "#SPILL!"
  67976. };
  67977. func_methods = {
  67978. getCellDataArr: function(rangeObj, nullCellType, isNeglectNullCell) {
  67979. let dataArr = [];
  67980. if (rangeObj.data == null) {
  67981. if (!isNeglectNullCell) {
  67982. if (nullCellType === "number") {
  67983. dataArr.push(0);
  67984. } else if (nullCellType === "text") {
  67985. dataArr.push("");
  67986. }
  67987. }
  67988. } else {
  67989. if (getObjType(rangeObj.data) === "array") {
  67990. for (let i2 = 0; i2 < rangeObj.data.length; i2++) {
  67991. for (let j = 0; j < rangeObj.data[i2].length; j++) {
  67992. let cell = rangeObj.data[i2][j];
  67993. let value = cell;
  67994. if (getObjType(cell) === "object") {
  67995. value = cell.v;
  67996. }
  67997. if (value == null) {
  67998. if (!isNeglectNullCell) {
  67999. if (nullCellType === "number") {
  68000. value = 0;
  68001. } else if (nullCellType === "text") {
  68002. value = "";
  68003. }
  68004. dataArr.push(value);
  68005. }
  68006. } else {
  68007. dataArr.push(value);
  68008. }
  68009. }
  68010. }
  68011. } else {
  68012. if (isRealNull(rangeObj.data.v)) {
  68013. if (!isNeglectNullCell) {
  68014. if (nullCellType == "number") {
  68015. dataArr.push(0);
  68016. } else if (nullCellType == "text") {
  68017. dataArr.push("");
  68018. }
  68019. }
  68020. } else {
  68021. dataArr.push(rangeObj.data.v);
  68022. }
  68023. }
  68024. }
  68025. return dataArr;
  68026. },
  68027. getCellDataDyadicArr: function(rangeObj, nullCellType) {
  68028. let dataArr = [];
  68029. if (rangeObj.data == null) {
  68030. let rowArr = [];
  68031. if (nullCellType == "number") {
  68032. rowArr.push(0);
  68033. } else if (nullCellType == "text") {
  68034. rowArr.push("");
  68035. }
  68036. dataArr.push(rowArr);
  68037. } else {
  68038. if (getObjType(rangeObj.data) == "array") {
  68039. for (let i2 = 0; i2 < rangeObj.data.length; i2++) {
  68040. let rowArr = [];
  68041. for (let j = 0; j < rangeObj.data[i2].length; j++) {
  68042. let cell = rangeObj.data[i2][j];
  68043. let value = cell;
  68044. if (getObjType(cell) === "object") {
  68045. value = cell.v;
  68046. }
  68047. if (value == null) {
  68048. if (nullCellType === "number") {
  68049. value = 0;
  68050. } else if (nullCellType === "text") {
  68051. value = "";
  68052. }
  68053. }
  68054. rowArr.push(value);
  68055. }
  68056. dataArr.push(rowArr);
  68057. }
  68058. } else {
  68059. let rowArr = [];
  68060. let value = rangeObj.data.v;
  68061. if (isRealNull(value)) {
  68062. if (nullCellType == "number") {
  68063. value = 0;
  68064. } else if (nullCellType == "text") {
  68065. value = "";
  68066. }
  68067. }
  68068. rowArr.push(value);
  68069. dataArr.push(rowArr);
  68070. }
  68071. }
  68072. return dataArr;
  68073. },
  68074. getDataArr: function(arr, isNeglectNaN) {
  68075. let dataArr = [];
  68076. if (isNeglectNaN == null) {
  68077. isNeglectNaN = false;
  68078. }
  68079. if (getObjType(arr[0]) == "array") {
  68080. for (let i2 = 0; i2 < arr.length; i2++) {
  68081. for (let j = 0; j < arr[i2].length; j++) {
  68082. if (isNeglectNaN && !isRealNum(arr[i2][j])) {
  68083. continue;
  68084. }
  68085. dataArr.push(arr[i2][j]);
  68086. }
  68087. }
  68088. } else {
  68089. for (let i2 = 0; i2 < arr.length; i2++) {
  68090. if (isNeglectNaN && !isRealNum(arr[i2])) {
  68091. continue;
  68092. }
  68093. dataArr.push(arr[i2]);
  68094. }
  68095. }
  68096. return dataArr;
  68097. },
  68098. getDataDyadicArr: function(arr) {
  68099. let dataArr = [];
  68100. if (getObjType(arr[0]) == "array") {
  68101. for (let i2 = 0; i2 < arr.length; i2++) {
  68102. let rowArr = [];
  68103. for (let j = 0; j < arr[i2].length; j++) {
  68104. rowArr.push(arr[i2][j]);
  68105. }
  68106. dataArr.push(rowArr);
  68107. }
  68108. } else {
  68109. let rowArr = [];
  68110. for (let i2 = 0; i2 < arr.length; i2++) {
  68111. rowArr.push(arr[i2]);
  68112. }
  68113. dataArr.push(rowArr);
  68114. }
  68115. return dataArr;
  68116. },
  68117. isDyadicArr: function(arr) {
  68118. let isDyadic = true;
  68119. if (arr.length > 1) {
  68120. let collen = arr[0].length;
  68121. for (let i2 = 1; i2 < arr.length; i2++) {
  68122. if (arr[i2].length != collen) {
  68123. isDyadic = false;
  68124. break;
  68125. }
  68126. }
  68127. }
  68128. return isDyadic;
  68129. },
  68130. getFirstValue: function(data, nullCellType) {
  68131. let _this = this;
  68132. if (nullCellType == null) {
  68133. nullCellType = "number";
  68134. }
  68135. let value;
  68136. if (getObjType(data) == "array") {
  68137. if (getObjType(data[0]) == "array") {
  68138. if (!_this.isDyadicArr(data)) {
  68139. return error2.v;
  68140. }
  68141. value = data[0][0];
  68142. } else {
  68143. value = data[0];
  68144. }
  68145. } else if (getObjType(data) == "object" && data.startCell != null) {
  68146. if (data.data == null) {
  68147. if (nullCellType == "number") {
  68148. value = 0;
  68149. } else if (nullCellType == "text") {
  68150. value = "";
  68151. }
  68152. } else {
  68153. let cell_r = window.luckysheetCurrentRow;
  68154. let cell_c = window.luckysheetCurrentColumn;
  68155. if (data.rowl == 1 && data.coll == 1) {
  68156. value = data.data;
  68157. if (value == null || isRealNull(value.v)) {
  68158. if (nullCellType == "number") {
  68159. value = 0;
  68160. } else if (nullCellType == "text") {
  68161. value = "";
  68162. }
  68163. } else {
  68164. value = value.v;
  68165. }
  68166. } else {
  68167. if (data.data[0][0].mc != null && data.data[0][0].mc.rs == data.rowl && data.data[0][0].mc.cs == data.coll) {
  68168. value = data.data[0][0];
  68169. if (value == null || isRealNull(value.v)) {
  68170. if (nullCellType == "number") {
  68171. value = 0;
  68172. } else if (nullCellType == "text") {
  68173. value = "";
  68174. }
  68175. } else {
  68176. value = value.v;
  68177. }
  68178. } else if (data.rowl == 1 || data.coll == 1) {
  68179. let cellrange = formula_default.getcellrange(data.startCell);
  68180. let str = cellrange.row[0], edr = str + data.rowl - 1, stc = cellrange.column[0], edc = stc + data.coll - 1;
  68181. if (data.rowl == 1) {
  68182. if (cell_c < stc || cell_c > edc) {
  68183. return error2.v;
  68184. }
  68185. value = data.data[0][cell_c - stc];
  68186. } else if (data.coll == 1) {
  68187. if (cell_r < str || cell_r > edr) {
  68188. return error2.v;
  68189. }
  68190. value = data.data[cell_r - str][0];
  68191. }
  68192. if (value == null || isRealNull(value.v) || value.mc != null) {
  68193. if (nullCellType == "number") {
  68194. value = 0;
  68195. } else if (nullCellType == "text") {
  68196. value = "";
  68197. }
  68198. } else {
  68199. value = value.v;
  68200. }
  68201. } else {
  68202. return error2.v;
  68203. }
  68204. }
  68205. }
  68206. } else {
  68207. value = data;
  68208. }
  68209. return value;
  68210. },
  68211. getCellBoolen: function(data) {
  68212. let _this = this;
  68213. let cumulative = _this.getFirstValue(data);
  68214. if (valueIsError(cumulative)) {
  68215. return cumulative;
  68216. }
  68217. if (getObjType(cumulative) == "boolean") {
  68218. } else if (getObjType(cumulative) == "string" && (cumulative.toLowerCase() == "true" || cumulative.toLowerCase() == "false")) {
  68219. if (cumulative.toLowerCase() == "true") {
  68220. cumulative = true;
  68221. } else if (cumulative.toLowerCase() == "false") {
  68222. cumulative = false;
  68223. }
  68224. } else if (isRealNum(cumulative)) {
  68225. cumulative = parseFloat(cumulative);
  68226. cumulative = cumulative == 0 ? false : true;
  68227. } else {
  68228. return error2.v;
  68229. }
  68230. return cumulative;
  68231. },
  68232. getCellDate: function(data) {
  68233. let _this = this;
  68234. let date_text;
  68235. if (getObjType(data) == "array") {
  68236. if (getObjType(data[0]) == "array") {
  68237. if (!_this.isDyadicArr(data)) {
  68238. return error2.v;
  68239. }
  68240. date_text = data[0][0];
  68241. } else {
  68242. date_text = data[0];
  68243. }
  68244. } else if (getObjType(data) == "object" && data.startCell != null) {
  68245. if (data.data == null || getObjType(data.data) == "array" || isRealNull(data.data.v)) {
  68246. return error2.v;
  68247. }
  68248. date_text = data.data.v;
  68249. if (data.data.ct != null && data.data.ct.t == "d") {
  68250. date_text = update("YYYY-MM-DD h:mm:ss", date_text);
  68251. }
  68252. } else {
  68253. date_text = data;
  68254. }
  68255. return date_text;
  68256. },
  68257. getCellrangeDate: function(data) {
  68258. let _this = this;
  68259. let date = [];
  68260. if (getObjType(data) == "array") {
  68261. if (getObjType(data[0]) == "array" && !_this.isDyadicArr(data)) {
  68262. return error2.v;
  68263. }
  68264. date = date.concat(_this.getDataArr(data, false));
  68265. } else if (getObjType(data) == "object" && data.startCell != null) {
  68266. if (data.data == null) {
  68267. date.push(0);
  68268. } else {
  68269. if (getObjType(data.data) == "array") {
  68270. for (let i2 = 0; i2 < data.data.length; i2++) {
  68271. for (let j = 0; j < data.data[i2].length; j++) {
  68272. if (data.data[i2][j] != null && !isRealNull(data.data[i2][j].v)) {
  68273. let value = data.data[i2][j].v;
  68274. if (data.data[i2][j].ct != null && data.data[i2][j].ct.t == "d") {
  68275. value = update("YYYY-MM-DD h:mm:ss", value);
  68276. }
  68277. date.push(value);
  68278. } else {
  68279. date.push(0);
  68280. }
  68281. }
  68282. }
  68283. } else {
  68284. let value = data.data.v;
  68285. if (data.data.ct != null && data.data.ct.t == "d") {
  68286. value = update("YYYY-MM-DD h:mm:ss", value);
  68287. }
  68288. date.push(value);
  68289. }
  68290. }
  68291. } else {
  68292. date.push(data);
  68293. }
  68294. return date;
  68295. },
  68296. getRegExpStr: function(str) {
  68297. return str.replace("~*", "\\*").replace("~?", "\\?").replace(".", "\\.").replace("*", ".*").replace("?", ".");
  68298. },
  68299. factorial: function(num) {
  68300. if (num == 0 || num == 1) {
  68301. return 1;
  68302. } else {
  68303. return num * this.factorial(num - 1);
  68304. }
  68305. },
  68306. factorialDouble: function(num) {
  68307. if (num <= 0) {
  68308. return 1;
  68309. } else {
  68310. return num * this.factorialDouble(num - 2);
  68311. }
  68312. },
  68313. variance: function(num_arr) {
  68314. let sum = 0, count = 0;
  68315. for (let i2 = 0; i2 < num_arr.length; i2++) {
  68316. let number = num_arr[i2];
  68317. sum += number;
  68318. count++;
  68319. }
  68320. let avg = sum / count;
  68321. let sum_variance = 0;
  68322. for (let j = 0; j < num_arr.length; j++) {
  68323. let number = num_arr[j];
  68324. sum_variance += (number - avg) * (number - avg);
  68325. }
  68326. return sum_variance / count;
  68327. },
  68328. variance_s: function(num_arr) {
  68329. let sum = 0, count = 0;
  68330. for (let i2 = 0; i2 < num_arr.length; i2++) {
  68331. let number = num_arr[i2];
  68332. sum += number;
  68333. count++;
  68334. }
  68335. let avg = sum / count;
  68336. let sum_variance = 0;
  68337. for (let j = 0; j < num_arr.length; j++) {
  68338. let number = num_arr[j];
  68339. sum_variance += (number - avg) * (number - avg);
  68340. }
  68341. return sum_variance / (count - 1);
  68342. },
  68343. standardDeviation: function(num_arr) {
  68344. let sum = 0, count = 0;
  68345. for (let i2 = 0; i2 < num_arr.length; i2++) {
  68346. let number = num_arr[i2];
  68347. sum += number;
  68348. count++;
  68349. }
  68350. let avg = sum / count;
  68351. let sum_variance = 0;
  68352. for (let j = 0; j < num_arr.length; j++) {
  68353. let number = num_arr[j];
  68354. sum_variance += (number - avg) * (number - avg);
  68355. }
  68356. return Math.sqrt(sum_variance / count);
  68357. },
  68358. standardDeviation_s: function(num_arr) {
  68359. let sum = 0, count = 0;
  68360. for (let i2 = 0; i2 < num_arr.length; i2++) {
  68361. let number = num_arr[i2];
  68362. sum += number;
  68363. count++;
  68364. }
  68365. let avg = sum / count;
  68366. let sum_variance = 0;
  68367. for (let j = 0; j < num_arr.length; j++) {
  68368. let number = num_arr[j];
  68369. sum_variance += (number - avg) * (number - avg);
  68370. }
  68371. return Math.sqrt(sum_variance / (count - 1));
  68372. },
  68373. isLeapYear: function(year) {
  68374. return new Date(year, 1, 29).getMonth() === 1;
  68375. },
  68376. feb29Between: function(date1, date2) {
  68377. let _this = this;
  68378. let year1 = (0, import_dayjs5.default)(date1).year();
  68379. let mar1year1 = (0, import_dayjs5.default)().set({"year": year1, "month": 2, "date": 1});
  68380. if (_this.isLeapYear(year1) && (0, import_dayjs5.default)(date1) < (0, import_dayjs5.default)(mar1year1) && (0, import_dayjs5.default)(date2) >= (0, import_dayjs5.default)(mar1year1)) {
  68381. return true;
  68382. }
  68383. let year2 = (0, import_dayjs5.default)(date2).year();
  68384. let mar1year2 = (0, import_dayjs5.default)().set({"year": year2, "month": 2, "date": 1});
  68385. return _this.isLeapYear(year2) && (0, import_dayjs5.default)(date2) >= (0, import_dayjs5.default)(mar1year2) && (0, import_dayjs5.default)(date1) < (0, import_dayjs5.default)(mar1year2);
  68386. },
  68387. findResultIndex: function(database, criterias) {
  68388. let matches = {};
  68389. for (let i2 = 1; i2 < database[0].length; ++i2) {
  68390. matches[i2] = true;
  68391. }
  68392. let maxCriteriaLength = criterias[0].length;
  68393. for (i = 1; i < criterias.length; ++i) {
  68394. if (criterias[i].length > maxCriteriaLength) {
  68395. maxCriteriaLength = criterias[i].length;
  68396. }
  68397. }
  68398. for (let k = 1; k < database.length; ++k) {
  68399. for (let l = 1; l < database[k].length; ++l) {
  68400. let currentCriteriaResult = false;
  68401. let hasMatchingCriteria = false;
  68402. for (let j = 0; j < criterias.length; ++j) {
  68403. let criteria = criterias[j];
  68404. if (criteria.length < maxCriteriaLength) {
  68405. continue;
  68406. }
  68407. let criteriaField = criteria[0];
  68408. if (database[k][0] !== criteriaField) {
  68409. continue;
  68410. }
  68411. hasMatchingCriteria = true;
  68412. for (let p = 1; p < criteria.length; ++p) {
  68413. currentCriteriaResult = currentCriteriaResult || new Function("return " + database[k][l] + criteria[p])();
  68414. }
  68415. }
  68416. if (hasMatchingCriteria) {
  68417. matches[l] = matches[l] && currentCriteriaResult;
  68418. }
  68419. }
  68420. }
  68421. let result = [];
  68422. for (let n = 0; n < database[0].length; ++n) {
  68423. if (matches[n]) {
  68424. result.push(n - 1);
  68425. }
  68426. }
  68427. return result;
  68428. },
  68429. findField: function(database, title) {
  68430. let index2 = null;
  68431. for (let i2 = 0; i2 < database.length; i2++) {
  68432. if (database[i2][0] == title) {
  68433. index2 = i2;
  68434. break;
  68435. }
  68436. }
  68437. if (index2 == null) {
  68438. return error2.v;
  68439. }
  68440. return index2;
  68441. },
  68442. rest: function(array, idx) {
  68443. idx = idx || 1;
  68444. if (!array || typeof array.slice !== "function") {
  68445. return array;
  68446. }
  68447. return array.slice(idx);
  68448. },
  68449. compact: function(array) {
  68450. if (!array) {
  68451. return array;
  68452. }
  68453. let result = [];
  68454. for (let i2 = 0; i2 < array.length; ++i2) {
  68455. if (!array[i2]) {
  68456. continue;
  68457. }
  68458. result.push(array[i2]);
  68459. }
  68460. return result;
  68461. }
  68462. };
  68463. func_methods_default = func_methods;
  68464. }
  68465. });
  68466. // src/function/matrix_methods.js
  68467. function inverse(els) {
  68468. var M = matrix.sylvester_matrix.create(els);
  68469. return M.inverse().elements;
  68470. }
  68471. var matrix, init;
  68472. var init_matrix_methods = __esm({
  68473. "src/function/matrix_methods.js"() {
  68474. matrix = {};
  68475. init = function init2(matrix2) {
  68476. var sylvester_matrix = function() {
  68477. };
  68478. sylvester_matrix.precision = 1e-6;
  68479. sylvester_matrix.create = function(elements) {
  68480. var M = new sylvester_matrix();
  68481. return M.setElements(elements);
  68482. };
  68483. var $M = sylvester_matrix.create;
  68484. sylvester_matrix.I = function(n) {
  68485. var els = [], i2 = n, j;
  68486. while (i2--) {
  68487. j = n;
  68488. els[i2] = [];
  68489. while (j--) {
  68490. els[i2][j] = i2 === j ? 1 : 0;
  68491. }
  68492. }
  68493. return sylvester_matrix.create(els);
  68494. };
  68495. sylvester_matrix.prototype = {
  68496. e: function(i2, j) {
  68497. if (i2 < 1 || i2 > this.elements.length || j < 1 || j > this.elements[0].length) {
  68498. return null;
  68499. }
  68500. return this.elements[i2 - 1][j - 1];
  68501. },
  68502. dimensions: function() {
  68503. var cols = this.elements.length === 0 ? 0 : this.elements[0].length;
  68504. return {rows: this.elements.length, cols};
  68505. },
  68506. rows: function() {
  68507. return this.elements.length;
  68508. },
  68509. cols: function() {
  68510. if (this.elements.length === 0) {
  68511. return 0;
  68512. }
  68513. return this.elements[0].length;
  68514. },
  68515. eql: function(matrix3) {
  68516. var M = matrix3.elements || matrix3;
  68517. if (!M[0] || typeof M[0][0] === "undefined") {
  68518. M = sylvester_matrix.create(M).elements;
  68519. }
  68520. if (this.elements.length === 0 || M.length === 0) {
  68521. return this.elements.length === M.length;
  68522. }
  68523. if (this.elements.length !== M.length) {
  68524. return false;
  68525. }
  68526. if (this.elements[0].length !== M[0].length) {
  68527. return false;
  68528. }
  68529. var i2 = this.elements.length, nj = this.elements[0].length, j;
  68530. while (i2--) {
  68531. j = nj;
  68532. while (j--) {
  68533. if (Math.abs(this.elements[i2][j] - M[i2][j]) > sylvester_matrix.precision) {
  68534. return false;
  68535. }
  68536. }
  68537. }
  68538. return true;
  68539. },
  68540. dup: function() {
  68541. return sylvester_matrix.create(this.elements);
  68542. },
  68543. map: function(fn, context) {
  68544. if (this.elements.length === 0) {
  68545. return sylvester_matrix.create([]);
  68546. }
  68547. var els = [], i2 = this.elements.length, nj = this.elements[0].length, j;
  68548. while (i2--) {
  68549. j = nj;
  68550. els[i2] = [];
  68551. while (j--) {
  68552. els[i2][j] = fn.call(context, this.elements[i2][j], i2 + 1, j + 1);
  68553. }
  68554. }
  68555. return sylvester_matrix.create(els);
  68556. },
  68557. isSameSizeAs: function(matrix3) {
  68558. var M = matrix3.elements || matrix3;
  68559. if (typeof M[0][0] === "undefined") {
  68560. M = sylvester_matrix.create(M).elements;
  68561. }
  68562. if (this.elements.length === 0) {
  68563. return M.length === 0;
  68564. }
  68565. return this.elements.length === M.length && this.elements[0].length === M[0].length;
  68566. },
  68567. add: function(matrix3) {
  68568. if (this.elements.length === 0)
  68569. return this.map(function(x) {
  68570. return x;
  68571. });
  68572. var M = matrix3.elements || matrix3;
  68573. if (typeof M[0][0] === "undefined") {
  68574. M = sylvester_matrix.create(M).elements;
  68575. }
  68576. if (!this.isSameSizeAs(M)) {
  68577. return null;
  68578. }
  68579. return this.map(function(x, i2, j) {
  68580. return x + M[i2 - 1][j - 1];
  68581. });
  68582. },
  68583. subtract: function(matrix3) {
  68584. if (this.elements.length === 0)
  68585. return this.map(function(x) {
  68586. return x;
  68587. });
  68588. var M = matrix3.elements || matrix3;
  68589. if (typeof M[0][0] === "undefined") {
  68590. M = sylvester_matrix.create(M).elements;
  68591. }
  68592. if (!this.isSameSizeAs(M)) {
  68593. return null;
  68594. }
  68595. return this.map(function(x, i2, j) {
  68596. return x - M[i2 - 1][j - 1];
  68597. });
  68598. },
  68599. canMultiplyFromLeft: function(matrix3) {
  68600. if (this.elements.length === 0) {
  68601. return false;
  68602. }
  68603. var M = matrix3.elements || matrix3;
  68604. if (typeof M[0][0] === "undefined") {
  68605. M = sylvester_matrix.create(M).elements;
  68606. }
  68607. return this.elements[0].length === M.length;
  68608. },
  68609. multiply: function(matrix3) {
  68610. if (this.elements.length === 0) {
  68611. return null;
  68612. }
  68613. if (!matrix3.elements) {
  68614. return this.map(function(x) {
  68615. return x * matrix3;
  68616. });
  68617. }
  68618. var returnVector = matrix3.modulus ? true : false;
  68619. var M = matrix3.elements || matrix3;
  68620. if (typeof M[0][0] === "undefined") {
  68621. M = sylvester_matrix.create(M).elements;
  68622. }
  68623. if (!this.canMultiplyFromLeft(M)) {
  68624. return null;
  68625. }
  68626. var i2 = this.elements.length, nj = M[0].length, j;
  68627. var cols = this.elements[0].length, c2, elements = [], sum;
  68628. while (i2--) {
  68629. j = nj;
  68630. elements[i2] = [];
  68631. while (j--) {
  68632. c2 = cols;
  68633. sum = 0;
  68634. while (c2--) {
  68635. sum += this.elements[i2][c2] * M[c2][j];
  68636. }
  68637. elements[i2][j] = sum;
  68638. }
  68639. }
  68640. var M = sylvester_matrix.create(elements);
  68641. return returnVector ? M.col(1) : M;
  68642. },
  68643. minor: function(a, b, c2, d) {
  68644. if (this.elements.length === 0) {
  68645. return null;
  68646. }
  68647. var elements = [], ni = c2, i2, nj, j;
  68648. var rows = this.elements.length, cols = this.elements[0].length;
  68649. while (ni--) {
  68650. i2 = c2 - ni - 1;
  68651. elements[i2] = [];
  68652. nj = d;
  68653. while (nj--) {
  68654. j = d - nj - 1;
  68655. elements[i2][j] = this.elements[(a + i2 - 1) % rows][(b + j - 1) % cols];
  68656. }
  68657. }
  68658. return sylvester_matrix.create(elements);
  68659. },
  68660. transpose: function() {
  68661. if (this.elements.length === 0)
  68662. return sylvester_matrix.create([]);
  68663. var rows = this.elements.length, i2, cols = this.elements[0].length, j;
  68664. var elements = [], i2 = cols;
  68665. while (i2--) {
  68666. j = rows;
  68667. elements[i2] = [];
  68668. while (j--) {
  68669. elements[i2][j] = this.elements[j][i2];
  68670. }
  68671. }
  68672. return sylvester_matrix.create(elements);
  68673. },
  68674. isSquare: function() {
  68675. var cols = this.elements.length === 0 ? 0 : this.elements[0].length;
  68676. return this.elements.length === cols;
  68677. },
  68678. max: function() {
  68679. if (this.elements.length === 0) {
  68680. return null;
  68681. }
  68682. var m = 0, i2 = this.elements.length, nj = this.elements[0].length, j;
  68683. while (i2--) {
  68684. j = nj;
  68685. while (j--) {
  68686. if (Math.abs(this.elements[i2][j]) > Math.abs(m)) {
  68687. m = this.elements[i2][j];
  68688. }
  68689. }
  68690. }
  68691. return m;
  68692. },
  68693. indexOf: function(x) {
  68694. if (this.elements.length === 0) {
  68695. return null;
  68696. }
  68697. var index2 = null, ni = this.elements.length, i2, nj = this.elements[0].length, j;
  68698. for (i2 = 0; i2 < ni; i2++) {
  68699. for (j = 0; j < nj; j++) {
  68700. if (this.elements[i2][j] === x) {
  68701. return {i: i2 + 1, j: j + 1};
  68702. }
  68703. }
  68704. }
  68705. return null;
  68706. },
  68707. diagonal: function() {
  68708. if (!this.isSquare) {
  68709. return null;
  68710. }
  68711. var els = [], n = this.elements.length;
  68712. for (var i2 = 0; i2 < n; i2++) {
  68713. els.push(this.elements[i2][i2]);
  68714. }
  68715. return sylvester_matrix.create(els);
  68716. },
  68717. toRightTriangular: function() {
  68718. if (this.elements.length === 0)
  68719. return sylvester_matrix.create([]);
  68720. var M = this.dup(), els;
  68721. var n = this.elements.length, i2, j, np = this.elements[0].length, p;
  68722. for (i2 = 0; i2 < n; i2++) {
  68723. if (M.elements[i2][i2] === 0) {
  68724. for (j = i2 + 1; j < n; j++) {
  68725. if (M.elements[j][i2] !== 0) {
  68726. els = [];
  68727. for (p = 0; p < np; p++) {
  68728. els.push(M.elements[i2][p] + M.elements[j][p]);
  68729. }
  68730. M.elements[i2] = els;
  68731. break;
  68732. }
  68733. }
  68734. }
  68735. if (M.elements[i2][i2] !== 0) {
  68736. for (j = i2 + 1; j < n; j++) {
  68737. var multiplier = M.elements[j][i2] / M.elements[i2][i2];
  68738. els = [];
  68739. for (p = 0; p < np; p++) {
  68740. els.push(p <= i2 ? 0 : M.elements[j][p] - M.elements[i2][p] * multiplier);
  68741. }
  68742. M.elements[j] = els;
  68743. }
  68744. }
  68745. }
  68746. return M;
  68747. },
  68748. determinant: function() {
  68749. if (this.elements.length === 0) {
  68750. return 1;
  68751. }
  68752. if (!this.isSquare()) {
  68753. return null;
  68754. }
  68755. var M = this.toRightTriangular();
  68756. var det = M.elements[0][0], n = M.elements.length;
  68757. for (var i2 = 1; i2 < n; i2++) {
  68758. det = det * M.elements[i2][i2];
  68759. }
  68760. return det;
  68761. },
  68762. isSingular: function() {
  68763. return this.isSquare() && this.determinant() === 0;
  68764. },
  68765. trace: function() {
  68766. if (this.elements.length === 0) {
  68767. return 0;
  68768. }
  68769. if (!this.isSquare()) {
  68770. return null;
  68771. }
  68772. var tr = this.elements[0][0], n = this.elements.length;
  68773. for (var i2 = 1; i2 < n; i2++) {
  68774. tr += this.elements[i2][i2];
  68775. }
  68776. return tr;
  68777. },
  68778. rank: function() {
  68779. if (this.elements.length === 0) {
  68780. return 0;
  68781. }
  68782. var M = this.toRightTriangular(), rank = 0;
  68783. var i2 = this.elements.length, nj = this.elements[0].length, j;
  68784. while (i2--) {
  68785. j = nj;
  68786. while (j--) {
  68787. if (Math.abs(M.elements[i2][j]) > sylvester_matrix.precision) {
  68788. rank++;
  68789. break;
  68790. }
  68791. }
  68792. }
  68793. return rank;
  68794. },
  68795. augment: function(matrix3) {
  68796. if (this.elements.length === 0) {
  68797. return this.dup();
  68798. }
  68799. var M = matrix3.elements || matrix3;
  68800. if (typeof M[0][0] === "undefined") {
  68801. M = sylvester_matrix.create(M).elements;
  68802. }
  68803. var T = this.dup(), cols = T.elements[0].length;
  68804. var i2 = T.elements.length, nj = M[0].length, j;
  68805. if (i2 !== M.length) {
  68806. return null;
  68807. }
  68808. while (i2--) {
  68809. j = nj;
  68810. while (j--) {
  68811. T.elements[i2][cols + j] = M[i2][j];
  68812. }
  68813. }
  68814. return T;
  68815. },
  68816. inverse: function() {
  68817. if (this.elements.length === 0) {
  68818. return null;
  68819. }
  68820. if (!this.isSquare() || this.isSingular()) {
  68821. return null;
  68822. }
  68823. var n = this.elements.length, i2 = n, j;
  68824. var M = this.augment(sylvester_matrix.I(n)).toRightTriangular();
  68825. var np = M.elements[0].length, p, els, divisor;
  68826. var inverse_elements = [], new_element;
  68827. while (i2--) {
  68828. els = [];
  68829. inverse_elements[i2] = [];
  68830. divisor = M.elements[i2][i2];
  68831. for (p = 0; p < np; p++) {
  68832. new_element = M.elements[i2][p] / divisor;
  68833. els.push(new_element);
  68834. if (p >= n) {
  68835. inverse_elements[i2].push(new_element);
  68836. }
  68837. }
  68838. M.elements[i2] = els;
  68839. j = i2;
  68840. while (j--) {
  68841. els = [];
  68842. for (p = 0; p < np; p++) {
  68843. els.push(M.elements[j][p] - M.elements[i2][p] * M.elements[j][i2]);
  68844. }
  68845. M.elements[j] = els;
  68846. }
  68847. }
  68848. return sylvester_matrix.create(inverse_elements);
  68849. },
  68850. round: function() {
  68851. return this.map(function(x) {
  68852. return Math.round(x);
  68853. });
  68854. },
  68855. snapTo: function(x) {
  68856. return this.map(function(p) {
  68857. return Math.abs(p - x) <= sylvester_matrix.precision ? x : p;
  68858. });
  68859. },
  68860. setElements: function(els) {
  68861. var i2, j, elements = els.elements || els;
  68862. if (elements[0] && typeof elements[0][0] !== "undefined") {
  68863. i2 = elements.length;
  68864. this.elements = [];
  68865. while (i2--) {
  68866. j = elements[i2].length;
  68867. this.elements[i2] = [];
  68868. while (j--) {
  68869. this.elements[i2][j] = elements[i2][j];
  68870. }
  68871. }
  68872. return this;
  68873. }
  68874. var n = elements.length;
  68875. this.elements = [];
  68876. for (i2 = 0; i2 < n; i2++) {
  68877. this.elements.push([elements[i2]]);
  68878. }
  68879. return this;
  68880. }
  68881. };
  68882. matrix2.sylvester_matrix = sylvester_matrix;
  68883. };
  68884. init(matrix);
  68885. }
  68886. });
  68887. // src/function/func.js
  68888. function luckysheet_compareWith() {
  68889. let sp = arguments[1];
  68890. let data_fp = arguments[0];
  68891. let fp;
  68892. if (getObjType(data_fp) == "object" && data_fp.startCell != null) {
  68893. if (sp == "&") {
  68894. fp = func_methods_default.getCellDataDyadicArr(data_fp, "text");
  68895. } else {
  68896. fp = func_methods_default.getCellDataDyadicArr(data_fp, "number");
  68897. }
  68898. if (fp.length == 1 && fp[0].length == 1) {
  68899. fp = fp[0][0];
  68900. }
  68901. } else {
  68902. fp = data_fp;
  68903. }
  68904. let data_tp = arguments[2];
  68905. let tp;
  68906. if (getObjType(data_tp) == "object" && data_tp.startCell != null) {
  68907. if (sp == "&") {
  68908. tp = func_methods_default.getCellDataDyadicArr(data_tp, "text");
  68909. } else {
  68910. tp = func_methods_default.getCellDataDyadicArr(data_tp, "number");
  68911. }
  68912. if (tp.length == 1 && tp[0].length == 1) {
  68913. tp = tp[0][0];
  68914. }
  68915. } else {
  68916. tp = data_tp;
  68917. }
  68918. if (valueIsError(fp)) {
  68919. return fp;
  68920. }
  68921. if (valueIsError(tp)) {
  68922. return tp;
  68923. }
  68924. if (getObjType(fp) == "array" && getObjType(fp[0]) == "array" && !func_methods_default.isDyadicArr(fp)) {
  68925. return error.v;
  68926. }
  68927. if (getObjType(tp) == "array" && getObjType(tp[0]) == "array" && !func_methods_default.isDyadicArr(tp)) {
  68928. return error.v;
  68929. }
  68930. if (sp == "<>") {
  68931. sp = "!=";
  68932. }
  68933. if (sp == "=") {
  68934. sp = "==";
  68935. }
  68936. if (fp == null && tp == null) {
  68937. return "#INVERSE!";
  68938. } else if (fp == "#INVERSE!") {
  68939. fp = 0;
  68940. if (sp == "-") {
  68941. sp = "+";
  68942. } else if (sp == "+") {
  68943. sp = "-";
  68944. }
  68945. } else if (sp == "-" && fp == null) {
  68946. fp = 0;
  68947. } else if (sp == "/" && (tp == 0 || tp == null)) {
  68948. return error.d;
  68949. }
  68950. function booleanOperation(a, operator, b) {
  68951. if (isRealNum(a)) {
  68952. a = parseFloat(a);
  68953. }
  68954. if (isRealNum(b)) {
  68955. b = parseFloat(b);
  68956. }
  68957. if (operator == "==") {
  68958. if (a == b) {
  68959. return true;
  68960. } else {
  68961. return false;
  68962. }
  68963. } else if (operator == "!=") {
  68964. if (a != b) {
  68965. return true;
  68966. } else {
  68967. return false;
  68968. }
  68969. } else if (operator == ">=") {
  68970. if (a >= b) {
  68971. return true;
  68972. } else {
  68973. return false;
  68974. }
  68975. } else if (operator == "<=") {
  68976. if (a <= b) {
  68977. return true;
  68978. } else {
  68979. return false;
  68980. }
  68981. } else if (operator == ">") {
  68982. if (a > b) {
  68983. return true;
  68984. } else {
  68985. return false;
  68986. }
  68987. } else if (operator == "<") {
  68988. if (a < b) {
  68989. return true;
  68990. } else {
  68991. return false;
  68992. }
  68993. }
  68994. }
  68995. function booleanToNum(v) {
  68996. if (v == null) {
  68997. return v;
  68998. }
  68999. if (v.toString().toLowerCase() == "true") {
  69000. return 1;
  69001. }
  69002. if (v.toString().toLowerCase() == "false") {
  69003. return 0;
  69004. }
  69005. return v;
  69006. }
  69007. if (sp == "*") {
  69008. if (getObjType(fp) == "array" && getObjType(tp) == "array") {
  69009. let result = [];
  69010. if (getObjType(fp[0]) == "array" && getObjType(tp[0]) == "array") {
  69011. if (fp.length == tp.length && fp[0].length == tp[0].length) {
  69012. for (let m = 0; m < fp.length; m++) {
  69013. let rowArr = [];
  69014. for (let n = 0; n < fp[m].length; n++) {
  69015. fp[m][n] = booleanToNum(fp[m][n]);
  69016. tp[m][n] = booleanToNum(tp[m][n]);
  69017. let value;
  69018. if (isRealNum(fp[m][n]) && isRealNum(tp[m][n])) {
  69019. value = luckysheet_calcADPMM(fp[m][n], sp, tp[m][n]);
  69020. } else {
  69021. value = error.v;
  69022. }
  69023. rowArr.push(value);
  69024. }
  69025. result.push(rowArr);
  69026. }
  69027. } else if (fp[0].length == tp.length) {
  69028. let rowlen = fp.length;
  69029. let collen = tp[0].length;
  69030. for (let m = 0; m < rowlen; m++) {
  69031. let rowArr = [];
  69032. for (let n = 0; n < collen; n++) {
  69033. let value = 0;
  69034. for (let p = 0; p < fp[0].length; p++) {
  69035. fp[m][p] = booleanToNum(fp[m][p]);
  69036. tp[p][n] = booleanToNum(tp[p][n]);
  69037. if (isRealNum(fp[m][p]) && isRealNum(tp[p][n])) {
  69038. value += luckysheet_calcADPMM(fp[m][p], sp, tp[p][n]);
  69039. } else {
  69040. value += error.v;
  69041. }
  69042. }
  69043. if (value.toString() == "NaN") {
  69044. value = error.v;
  69045. }
  69046. rowArr.push(value);
  69047. }
  69048. result.push(rowArr);
  69049. }
  69050. } else if (fp.length == tp[0].length) {
  69051. let rowlen = tp.length;
  69052. let collen = fp[0].length;
  69053. for (let m = 0; m < rowlen; m++) {
  69054. let rowArr = [];
  69055. for (let n = 0; n < collen; n++) {
  69056. let value = 0;
  69057. for (let p = 0; p < tp[0].length; p++) {
  69058. fp[p][n] = booleanToNum(fp[p][n]);
  69059. tp[m][p] = booleanToNum(tp[m][p]);
  69060. if (isRealNum(tp[m][p]) && isRealNum(fp[p][n])) {
  69061. value += luckysheet_calcADPMM(fp[p][n], sp, tp[m][p]);
  69062. } else {
  69063. value += error.v;
  69064. }
  69065. }
  69066. if (value.toString() == "NaN") {
  69067. value = error.v;
  69068. }
  69069. rowArr.push(value);
  69070. }
  69071. result.push(rowArr);
  69072. }
  69073. } else {
  69074. return error.na;
  69075. }
  69076. } else if (getObjType(fp[0]) == "array") {
  69077. if (fp[0].length == tp.length) {
  69078. for (let m = 0; m < fp.length; m++) {
  69079. let rowArr = [];
  69080. for (let n = 0; n < fp[m].length; n++) {
  69081. fp[m][n] = booleanToNum(fp[m][n]);
  69082. tp[n] = booleanToNum(tp[n]);
  69083. let value;
  69084. if (isRealNum(fp[m][n]) && isRealNum(tp[n])) {
  69085. value = luckysheet_calcADPMM(fp[m][n], sp, tp[n]);
  69086. } else {
  69087. value = error.v;
  69088. }
  69089. rowArr.push(value);
  69090. }
  69091. result.push(rowArr);
  69092. }
  69093. } else if (fp[0].length == 1) {
  69094. let rowlen = fp.length;
  69095. let collen = tp.length;
  69096. for (let m = 0; m < rowlen; m++) {
  69097. let rowArr = [];
  69098. for (let n = 0; n < collen; n++) {
  69099. fp[m][0] = booleanToNum(fp[m][0]);
  69100. tp[n] = booleanToNum(tp[n]);
  69101. let value;
  69102. if (isRealNum(fp[m][0]) && isRealNum(tp[n])) {
  69103. value = luckysheet_calcADPMM(fp[m][0], sp, tp[n]);
  69104. } else {
  69105. value = error.v;
  69106. }
  69107. rowArr.push(value);
  69108. }
  69109. result.push(rowArr);
  69110. }
  69111. } else {
  69112. return error.na;
  69113. }
  69114. } else if (getObjType(tp[0]) == "array") {
  69115. if (tp[0].length == fp.length) {
  69116. for (let m = 0; m < tp.length; m++) {
  69117. let rowArr = [];
  69118. for (let n = 0; n < tp[m].length; n++) {
  69119. fp[n] = booleanToNum(fp[n]);
  69120. tp[m][n] = booleanToNum(tp[m][n]);
  69121. let value;
  69122. if (isRealNum(fp[n]) && isRealNum(tp[m][n])) {
  69123. value = luckysheet_calcADPMM(fp[n], sp, tp[m][n]);
  69124. } else {
  69125. value = error.v;
  69126. }
  69127. rowArr.push(value);
  69128. }
  69129. result.push(rowArr);
  69130. }
  69131. } else if (tp[0].length == 1) {
  69132. let rowlen = tp.length;
  69133. let collen = fp.length;
  69134. for (let m = 0; m < rowlen; m++) {
  69135. let rowArr = [];
  69136. for (let n = 0; n < collen; n++) {
  69137. fp[n] = booleanToNum(fp[n]);
  69138. tp[m][0] = booleanToNum(tp[m][0]);
  69139. let value;
  69140. if (isRealNum(fp[n]) && isRealNum(tp[m][0])) {
  69141. value = luckysheet_calcADPMM(fp[n], sp, tp[m][0]);
  69142. } else {
  69143. value = error.v;
  69144. }
  69145. rowArr.push(value);
  69146. }
  69147. result.push(rowArr);
  69148. }
  69149. } else {
  69150. return error.na;
  69151. }
  69152. } else {
  69153. if (fp.length != tp.length) {
  69154. return error.na;
  69155. }
  69156. for (let n = 0; n < fp.length; n++) {
  69157. fp[n] = booleanToNum(fp[n]);
  69158. tp[n] = booleanToNum(tp[n]);
  69159. let value;
  69160. if (isRealNum(fp[n]) && isRealNum(tp[n])) {
  69161. value = luckysheet_calcADPMM(fp[n], sp, tp[n]);
  69162. } else {
  69163. value = error.v;
  69164. }
  69165. result.push(value);
  69166. }
  69167. }
  69168. return result;
  69169. } else if (getObjType(fp) == "array") {
  69170. tp = booleanToNum(tp);
  69171. let result = [];
  69172. if (getObjType(fp[0]) == "array") {
  69173. for (let m = 0; m < fp.length; m++) {
  69174. let rowArr = [];
  69175. for (let n = 0; n < fp[m].length; n++) {
  69176. fp[m][n] = booleanToNum(fp[m][n]);
  69177. let value;
  69178. if (isRealNum(fp[m][n]) && isRealNum(tp)) {
  69179. value = luckysheet_calcADPMM(fp[m][n], sp, tp);
  69180. } else {
  69181. value = error.v;
  69182. }
  69183. rowArr.push(value);
  69184. }
  69185. result.push(rowArr);
  69186. }
  69187. } else {
  69188. for (let n = 0; n < fp.length; n++) {
  69189. fp[n] = booleanToNum(fp[n]);
  69190. let value;
  69191. if (isRealNum(fp[n]) && isRealNum(tp)) {
  69192. value = luckysheet_calcADPMM(fp[n], sp, tp);
  69193. } else {
  69194. value = error.v;
  69195. }
  69196. result.push(value);
  69197. }
  69198. }
  69199. return result;
  69200. } else if (getObjType(tp) == "array") {
  69201. fp = booleanToNum(fp);
  69202. let result = [];
  69203. if (getObjType(tp[0]) == "array") {
  69204. for (let m = 0; m < tp.length; m++) {
  69205. let rowArr = [];
  69206. for (let n = 0; n < tp[m].length; n++) {
  69207. tp[m][n] = booleanToNum(tp[m][n]);
  69208. let value;
  69209. if (isRealNum(fp) && isRealNum(tp[m][n])) {
  69210. value = luckysheet_calcADPMM(fp, sp, tp[m][n]);
  69211. } else {
  69212. value = error.v;
  69213. }
  69214. rowArr.push(value);
  69215. }
  69216. result.push(rowArr);
  69217. }
  69218. } else {
  69219. for (let n = 0; n < tp.length; n++) {
  69220. tp[n] = booleanToNum(tp[n]);
  69221. let value;
  69222. if (isRealNum(fp) && isRealNum(tp[n])) {
  69223. value = luckysheet_calcADPMM(fp, sp, tp[n]);
  69224. } else {
  69225. value = error.v;
  69226. }
  69227. result.push(value);
  69228. }
  69229. }
  69230. return result;
  69231. } else {
  69232. fp = booleanToNum(fp);
  69233. tp = booleanToNum(tp);
  69234. let result;
  69235. if (isRealNum(fp) && isRealNum(tp)) {
  69236. result = luckysheet_calcADPMM(fp, sp, tp);
  69237. } else {
  69238. result = error.v;
  69239. }
  69240. return result;
  69241. }
  69242. } else if (sp == "/") {
  69243. if (getObjType(fp) == "array" && getObjType(tp) == "array") {
  69244. let result = [];
  69245. if (getObjType(fp[0]) == "array" && getObjType(tp[0]) == "array") {
  69246. if (fp.length == tp.length && fp[0].length == tp[0].length) {
  69247. for (let m = 0; m < fp.length; m++) {
  69248. let rowArr = [];
  69249. for (let n = 0; n < fp[m].length; n++) {
  69250. fp[m][n] = booleanToNum(fp[m][n]);
  69251. tp[m][n] = booleanToNum(tp[m][n]);
  69252. let value;
  69253. if (isRealNum(fp[m][n]) && isRealNum(tp[m][n])) {
  69254. if (parseFloat(tp[m][n]) == 0) {
  69255. value = error.d;
  69256. } else {
  69257. value = luckysheet_calcADPMM(fp[m][n], sp, tp[m][n]);
  69258. }
  69259. } else {
  69260. value = error.v;
  69261. }
  69262. rowArr.push(value);
  69263. }
  69264. result.push(rowArr);
  69265. }
  69266. } else if (fp[0].length == tp.length) {
  69267. let tp_inverse = inverse(tp);
  69268. let rowlen = fp.length;
  69269. let collen = tp_inverse[0].length;
  69270. for (let m = 0; m < rowlen; m++) {
  69271. let rowArr = [];
  69272. for (let n = 0; n < collen; n++) {
  69273. let value = 0;
  69274. for (let p = 0; p < fp[0].length; p++) {
  69275. fp[m][p] = booleanToNum(fp[m][p]);
  69276. tp_inverse[p][n] = booleanToNum(tp_inverse[p][n]);
  69277. if (isRealNum(fp[m][p]) && isRealNum(tp_inverse[p][n])) {
  69278. value += luckysheet_calcADPMM(fp[m][p], "*", tp_inverse[p][n]);
  69279. } else {
  69280. value += error.v;
  69281. }
  69282. }
  69283. if (value.toString() == "NaN") {
  69284. value = error.v;
  69285. }
  69286. rowArr.push(value);
  69287. }
  69288. result.push(rowArr);
  69289. }
  69290. } else {
  69291. return error.na;
  69292. }
  69293. } else if (getObjType(fp[0]) == "array") {
  69294. if (fp[0].length == tp.length) {
  69295. for (let m = 0; m < fp.length; m++) {
  69296. let rowArr = [];
  69297. for (let n = 0; n < fp[m].length; n++) {
  69298. fp[m][n] = booleanToNum(fp[m][n]);
  69299. tp[n] = booleanToNum(tp[n]);
  69300. let value;
  69301. if (isRealNum(fp[m][n]) && isRealNum(tp[n])) {
  69302. if (parseFloat(tp[n]) == 0) {
  69303. value = error.d;
  69304. } else {
  69305. value = luckysheet_calcADPMM(fp[m][n], sp, tp[n]);
  69306. }
  69307. } else {
  69308. value = error.v;
  69309. }
  69310. rowArr.push(value);
  69311. }
  69312. result.push(rowArr);
  69313. }
  69314. } else if (fp[0].length == 1) {
  69315. let rowlen = fp.length;
  69316. let collen = tp.length;
  69317. for (let m = 0; m < rowlen; m++) {
  69318. let rowArr = [];
  69319. for (let n = 0; n < collen; n++) {
  69320. fp[m][0] = booleanToNum(fp[m][0]);
  69321. tp[n] = booleanToNum(tp[n]);
  69322. let value;
  69323. if (isRealNum(fp[m][0]) && isRealNum(tp[n])) {
  69324. if (parseFloat(tp[n]) == 0) {
  69325. value = error.d;
  69326. } else {
  69327. value = luckysheet_calcADPMM(fp[m][0], sp, tp[n]);
  69328. }
  69329. } else {
  69330. value = error.v;
  69331. }
  69332. rowArr.push(value);
  69333. }
  69334. result.push(rowArr);
  69335. }
  69336. } else {
  69337. return error.na;
  69338. }
  69339. } else if (getObjType(tp[0]) == "array") {
  69340. if (tp[0].length == fp.length) {
  69341. for (let m = 0; m < tp.length; m++) {
  69342. let rowArr = [];
  69343. for (let n = 0; n < tp[m].length; n++) {
  69344. fp[n] = booleanToNum(fp[n]);
  69345. tp[m][n] = booleanToNum(tp[m][n]);
  69346. let value;
  69347. if (isRealNum(fp[n]) && isRealNum(tp[m][n])) {
  69348. if (parseFloat(tp[m][n]) == 0) {
  69349. value = error.d;
  69350. } else {
  69351. value = luckysheet_calcADPMM(fp[n], sp, tp[m][n]);
  69352. }
  69353. } else {
  69354. value = error.v;
  69355. }
  69356. rowArr.push(value);
  69357. }
  69358. result.push(rowArr);
  69359. }
  69360. } else if (tp[0].length == 1) {
  69361. let rowlen = tp.length;
  69362. let collen = fp.length;
  69363. for (let m = 0; m < rowlen; m++) {
  69364. let rowArr = [];
  69365. for (let n = 0; n < collen; n++) {
  69366. fp[n] = booleanToNum(fp[n]);
  69367. tp[m][0] = booleanToNum(tp[m][0]);
  69368. let value;
  69369. if (isRealNum(fp[n]) && isRealNum(tp[m][0])) {
  69370. if (parseFloat(tp[m][0]) == 0) {
  69371. value = error.d;
  69372. } else {
  69373. value = luckysheet_calcADPMM(fp[n], sp, tp[m][0]);
  69374. }
  69375. } else {
  69376. value = error.v;
  69377. }
  69378. rowArr.push(value);
  69379. }
  69380. result.push(rowArr);
  69381. }
  69382. } else {
  69383. return error.na;
  69384. }
  69385. } else {
  69386. if (fp.length != tp.length) {
  69387. return error.na;
  69388. }
  69389. for (let n = 0; n < fp.length; n++) {
  69390. fp[n] = booleanToNum(fp[n]);
  69391. tp[n] = booleanToNum(tp[n]);
  69392. let value;
  69393. if (isRealNum(fp[n]) && isRealNum(tp[n])) {
  69394. if (parseFloat(tp[n]) == 0) {
  69395. value = error.d;
  69396. } else {
  69397. value = luckysheet_calcADPMM(fp[n], sp, tp[n]);
  69398. }
  69399. } else {
  69400. value = error.v;
  69401. }
  69402. result.push(value);
  69403. }
  69404. }
  69405. return result;
  69406. } else if (getObjType(fp) == "array") {
  69407. tp = booleanToNum(tp);
  69408. let result = [];
  69409. if (getObjType(fp[0]) == "array") {
  69410. for (let m = 0; m < fp.length; m++) {
  69411. let rowArr = [];
  69412. for (let n = 0; n < fp[m].length; n++) {
  69413. fp[m][n] = booleanToNum(fp[m][n]);
  69414. let value;
  69415. if (isRealNum(fp[m][n]) && isRealNum(tp)) {
  69416. if (parseFloat(tp) == 0) {
  69417. value = error.d;
  69418. } else {
  69419. value = luckysheet_calcADPMM(fp[m][n], sp, tp);
  69420. }
  69421. } else {
  69422. value = error.v;
  69423. }
  69424. rowArr.push(value);
  69425. }
  69426. result.push(rowArr);
  69427. }
  69428. } else {
  69429. for (let n = 0; n < fp.length; n++) {
  69430. fp[n] = booleanToNum(fp[n]);
  69431. let value;
  69432. if (isRealNum(fp[n]) && isRealNum(tp)) {
  69433. if (parseFloat(tp) == 0) {
  69434. value = error.d;
  69435. } else {
  69436. value = luckysheet_calcADPMM(fp[n], sp, tp);
  69437. }
  69438. } else {
  69439. value = error.v;
  69440. }
  69441. result.push(value);
  69442. }
  69443. }
  69444. return result;
  69445. } else if (getObjType(tp) == "array") {
  69446. fp = booleanToNum(fp);
  69447. let result = [];
  69448. if (getObjType(tp[0]) == "array") {
  69449. for (let m = 0; m < tp.length; m++) {
  69450. let rowArr = [];
  69451. for (let n = 0; n < tp[m].length; n++) {
  69452. tp[m][n] = booleanToNum(tp[m][n]);
  69453. let value;
  69454. if (isRealNum(fp) && isRealNum(tp[m][n])) {
  69455. if (parseFloat(tp[m][n]) == 0) {
  69456. value = error.d;
  69457. } else {
  69458. value = luckysheet_calcADPMM(fp, sp, tp[m][n]);
  69459. }
  69460. } else {
  69461. value = error.v;
  69462. }
  69463. rowArr.push(value);
  69464. }
  69465. result.push(rowArr);
  69466. }
  69467. } else {
  69468. for (let n = 0; n < tp.length; n++) {
  69469. tp[n] = booleanToNum(tp[n]);
  69470. let value;
  69471. if (isRealNum(fp) && isRealNum(tp[n])) {
  69472. if (parseFloat(tp[n]) == 0) {
  69473. value = error.d;
  69474. } else {
  69475. value = luckysheet_calcADPMM(fp, sp, tp[n]);
  69476. }
  69477. } else {
  69478. value = error.v;
  69479. }
  69480. result.push(value);
  69481. }
  69482. }
  69483. return result;
  69484. } else {
  69485. fp = booleanToNum(fp);
  69486. tp = booleanToNum(tp);
  69487. let result;
  69488. if (isRealNum(fp) && isRealNum(tp)) {
  69489. if (parseFloat(tp) == 0) {
  69490. result = error.d;
  69491. } else {
  69492. result = luckysheet_calcADPMM(fp, sp, tp);
  69493. }
  69494. } else {
  69495. result = error.v;
  69496. }
  69497. return result;
  69498. }
  69499. } else if (sp == "+" || sp == "-" || sp == "%") {
  69500. if (getObjType(fp) == "array" && getObjType(tp) == "array") {
  69501. let result = [];
  69502. if (getObjType(fp[0]) == "array" && getObjType(tp[0]) == "array") {
  69503. if (fp.length != tp.length && fp[0].length != tp[0].length) {
  69504. return error.na;
  69505. }
  69506. for (let m = 0; m < fp.length; m++) {
  69507. let rowArr = [];
  69508. for (let n = 0; n < fp[m].length; n++) {
  69509. fp[m][n] = booleanToNum(fp[m][n]);
  69510. tp[m][n] = booleanToNum(tp[m][n]);
  69511. let value;
  69512. if (isRealNum(fp[m][n]) && isRealNum(tp[m][n])) {
  69513. if (sp == "%" && parseFloat(tp[m][n]) == 0) {
  69514. value = error.d;
  69515. } else {
  69516. value = luckysheet_calcADPMM(fp[m][n], sp, tp[m][n]);
  69517. }
  69518. } else {
  69519. value = error.v;
  69520. }
  69521. rowArr.push(value);
  69522. }
  69523. result.push(rowArr);
  69524. }
  69525. } else if (getObjType(fp[0]) == "array") {
  69526. if (fp[0].length != tp.length) {
  69527. return error.na;
  69528. }
  69529. for (let m = 0; m < fp.length; m++) {
  69530. let rowArr = [];
  69531. for (let n = 0; n < fp[m].length; n++) {
  69532. fp[m][n] = booleanToNum(fp[m][n]);
  69533. tp[n] = booleanToNum(tp[n]);
  69534. let value;
  69535. if (isRealNum(fp[m][n]) && isRealNum(tp[n])) {
  69536. if (sp == "%" && parseFloat(tp[n]) == 0) {
  69537. value = error.d;
  69538. } else {
  69539. value = luckysheet_calcADPMM(fp[m][n], sp, tp[n]);
  69540. }
  69541. } else {
  69542. value = error.v;
  69543. }
  69544. rowArr.push(value);
  69545. }
  69546. result.push(rowArr);
  69547. }
  69548. } else if (getObjType(tp[0]) == "array") {
  69549. if (tp[0].length != fp.length) {
  69550. return error.na;
  69551. }
  69552. for (let m = 0; m < tp.length; m++) {
  69553. let rowArr = [];
  69554. for (let n = 0; n < tp[m].length; n++) {
  69555. fp[n] = booleanToNum(fp[n]);
  69556. tp[m][n] = booleanToNum(tp[m][n]);
  69557. let value;
  69558. if (isRealNum(fp[n]) && isRealNum(tp[m][n])) {
  69559. if (sp == "%" && parseFloat(tp[m][n]) == 0) {
  69560. value = error.d;
  69561. } else {
  69562. value = luckysheet_calcADPMM(fp[n], sp, tp[m][n]);
  69563. }
  69564. } else {
  69565. value = error.v;
  69566. }
  69567. rowArr.push(value);
  69568. }
  69569. result.push(rowArr);
  69570. }
  69571. } else {
  69572. if (fp.length != tp.length) {
  69573. return error.na;
  69574. }
  69575. for (let n = 0; n < fp.length; n++) {
  69576. fp[n] = booleanToNum(fp[n]);
  69577. tp[n] = booleanToNum(tp[n]);
  69578. let value;
  69579. if (isRealNum(fp[n]) && isRealNum(tp[n])) {
  69580. if (sp == "%" && parseFloat(tp[n]) == 0) {
  69581. value = error.d;
  69582. } else {
  69583. value = luckysheet_calcADPMM(fp[n], sp, tp[n]);
  69584. }
  69585. } else {
  69586. value = error.v;
  69587. }
  69588. result.push(value);
  69589. }
  69590. }
  69591. return result;
  69592. } else if (getObjType(fp) == "array") {
  69593. tp = booleanToNum(tp);
  69594. let result = [];
  69595. if (getObjType(fp[0]) == "array") {
  69596. for (let m = 0; m < fp.length; m++) {
  69597. let rowArr = [];
  69598. for (let n = 0; n < fp[m].length; n++) {
  69599. fp[m][n] = booleanToNum(fp[m][n]);
  69600. let value;
  69601. if (isRealNum(fp[m][n]) && isRealNum(tp)) {
  69602. if (sp == "%" && parseFloat(tp) == 0) {
  69603. value = error.d;
  69604. } else {
  69605. value = luckysheet_calcADPMM(fp[m][n], sp, tp);
  69606. }
  69607. } else {
  69608. value = error.v;
  69609. }
  69610. rowArr.push(value);
  69611. }
  69612. result.push(rowArr);
  69613. }
  69614. } else {
  69615. for (let n = 0; n < fp.length; n++) {
  69616. fp[n] = booleanToNum(fp[n]);
  69617. let value;
  69618. if (isRealNum(fp[n]) && isRealNum(tp)) {
  69619. if (sp == "%" && parseFloat(tp) == 0) {
  69620. value = error.d;
  69621. } else {
  69622. value = luckysheet_calcADPMM(fp[n], sp, tp);
  69623. }
  69624. } else {
  69625. value = error.v;
  69626. }
  69627. result.push(value);
  69628. }
  69629. }
  69630. return result;
  69631. } else if (getObjType(tp) == "array") {
  69632. fp = booleanToNum(fp);
  69633. let result = [];
  69634. if (getObjType(tp[0]) == "array") {
  69635. for (let m = 0; m < tp.length; m++) {
  69636. let rowArr = [];
  69637. for (let n = 0; n < tp[m].length; n++) {
  69638. tp[m][n] = booleanToNum(tp[m][n]);
  69639. let value;
  69640. if (isRealNum(fp) && isRealNum(tp[m][n])) {
  69641. if (sp == "%" && parseFloat(tp[m][n]) == 0) {
  69642. value = error.d;
  69643. } else {
  69644. value = luckysheet_calcADPMM(fp, sp, tp[m][n]);
  69645. }
  69646. } else {
  69647. value = error.v;
  69648. }
  69649. rowArr.push(value);
  69650. }
  69651. result.push(rowArr);
  69652. }
  69653. } else {
  69654. for (let n = 0; n < tp.length; n++) {
  69655. tp[n] = booleanToNum(tp[n]);
  69656. let value;
  69657. if (isRealNum(fp) && isRealNum(tp[n])) {
  69658. if (sp == "%" && parseFloat(tp[n]) == 0) {
  69659. value = error.d;
  69660. } else {
  69661. value = luckysheet_calcADPMM(fp, sp, tp[n]);
  69662. }
  69663. } else {
  69664. value = error.v;
  69665. }
  69666. result.push(value);
  69667. }
  69668. }
  69669. return result;
  69670. } else {
  69671. fp = booleanToNum(fp);
  69672. tp = booleanToNum(tp);
  69673. let result;
  69674. if (isRealNum(fp) && isRealNum(tp)) {
  69675. if (sp == "%" && parseFloat(tp) == 0) {
  69676. result = error.d;
  69677. } else {
  69678. result = luckysheet_calcADPMM(fp, sp, tp);
  69679. }
  69680. } else {
  69681. result = error.v;
  69682. }
  69683. return result;
  69684. }
  69685. } else if (sp == "==" || sp == "!=" || sp == ">=" || sp == "<=" || sp == ">" || sp == "<") {
  69686. if (getObjType(fp) == "array" && getObjType(tp) == "array") {
  69687. let result = [];
  69688. if (getObjType(fp[0]) == "array" && getObjType(tp[0]) == "array") {
  69689. if (fp.length != tp.length && fp[0].length != tp[0].length) {
  69690. return error.na;
  69691. }
  69692. for (let m = 0; m < fp.length; m++) {
  69693. let rowArr = [];
  69694. for (let n = 0; n < fp[m].length; n++) {
  69695. let value = booleanOperation(fp[m][n], sp, tp[m][n]);
  69696. rowArr.push(value);
  69697. }
  69698. result.push(rowArr);
  69699. }
  69700. } else if (getObjType(fp[0]) == "array") {
  69701. if (fp[0].length != tp.length) {
  69702. return error.na;
  69703. }
  69704. for (let m = 0; m < fp.length; m++) {
  69705. let rowArr = [];
  69706. for (let n = 0; n < fp[m].length; n++) {
  69707. let value = booleanOperation(fp[m][n], sp, tp[n]);
  69708. rowArr.push(value);
  69709. }
  69710. result.push(rowArr);
  69711. }
  69712. } else if (getObjType(tp[0]) == "array") {
  69713. if (tp[0].length != fp.length) {
  69714. return error.na;
  69715. }
  69716. for (let m = 0; m < tp.length; m++) {
  69717. let rowArr = [];
  69718. for (let n = 0; n < tp[m].length; n++) {
  69719. let value = booleanOperation(fp[n], sp, tp[m][n]);
  69720. rowArr.push(value);
  69721. }
  69722. result.push(rowArr);
  69723. }
  69724. } else {
  69725. if (fp.length != tp.length) {
  69726. return error.na;
  69727. }
  69728. for (let n = 0; n < fp.length; n++) {
  69729. let value = booleanOperation(fp[n], sp, tp[n]);
  69730. result.push(value);
  69731. }
  69732. }
  69733. return result;
  69734. } else if (getObjType(fp) == "array") {
  69735. let result = [];
  69736. if (getObjType(fp[0]) == "array") {
  69737. for (let m = 0; m < fp.length; m++) {
  69738. let rowArr = [];
  69739. for (let n = 0; n < fp[m].length; n++) {
  69740. let value = booleanOperation(fp[m][n], sp, tp);
  69741. rowArr.push(value);
  69742. }
  69743. result.push(rowArr);
  69744. }
  69745. } else {
  69746. for (let n = 0; n < fp.length; n++) {
  69747. let value = booleanOperation(fp[n], sp, tp);
  69748. result.push(value);
  69749. }
  69750. }
  69751. return result;
  69752. } else if (getObjType(tp) == "array") {
  69753. let result = [];
  69754. if (getObjType(tp[0]) == "array") {
  69755. for (let m = 0; m < tp.length; m++) {
  69756. let rowArr = [];
  69757. for (let n = 0; n < tp[m].length; n++) {
  69758. let value = booleanOperation(fp, sp, tp[m][n]);
  69759. rowArr.push(value);
  69760. }
  69761. result.push(rowArr);
  69762. }
  69763. } else {
  69764. for (let n = 0; n < tp.length; n++) {
  69765. let value = booleanOperation(fp, sp, tp[n]);
  69766. result.push(value);
  69767. }
  69768. }
  69769. return result;
  69770. } else {
  69771. return booleanOperation(fp, sp, tp);
  69772. }
  69773. } else if (sp == "&") {
  69774. if (getObjType(fp) == "array" && getObjType(tp) == "array") {
  69775. let result = [];
  69776. if (getObjType(fp[0]) == "array" && getObjType(tp[0]) == "array") {
  69777. if (fp.length != tp.length && fp[0].length != tp[0].length) {
  69778. return error.na;
  69779. }
  69780. for (let m = 0; m < fp.length; m++) {
  69781. let rowArr = [];
  69782. for (let n = 0; n < fp[m].length; n++) {
  69783. rowArr.push(fp[m][n] + "" + tp[m][n]);
  69784. }
  69785. result.push(rowArr);
  69786. }
  69787. } else if (getObjType(fp[0]) == "array") {
  69788. if (fp[0].length != tp.length) {
  69789. return error.na;
  69790. }
  69791. for (let m = 0; m < fp.length; m++) {
  69792. let rowArr = [];
  69793. for (let n = 0; n < fp[m].length; n++) {
  69794. rowArr.push(fp[m][n] + "" + tp[n]);
  69795. }
  69796. result.push(rowArr);
  69797. }
  69798. } else if (getObjType(tp[0]) == "array") {
  69799. if (tp[0].length != fp.length) {
  69800. return error.na;
  69801. }
  69802. for (let m = 0; m < tp.length; m++) {
  69803. let rowArr = [];
  69804. for (let n = 0; n < tp[m].length; n++) {
  69805. rowArr.push(fp[n] + "" + tp[m][n]);
  69806. }
  69807. result.push(rowArr);
  69808. }
  69809. } else {
  69810. if (fp.length != tp.length) {
  69811. return error.na;
  69812. }
  69813. for (let n = 0; n < fp.length; n++) {
  69814. result.push(fp[n] + "" + tp[n]);
  69815. }
  69816. }
  69817. return result;
  69818. } else if (getObjType(fp) == "array") {
  69819. let result = [];
  69820. if (getObjType(fp[0]) == "array") {
  69821. for (let m = 0; m < fp.length; m++) {
  69822. let rowArr = [];
  69823. for (let n = 0; n < fp[m].length; n++) {
  69824. rowArr.push(fp[m][n] + "" + tp);
  69825. }
  69826. result.push(rowArr);
  69827. }
  69828. } else {
  69829. for (let n = 0; n < fp.length; n++) {
  69830. result.push(fp[n] + "" + tp);
  69831. }
  69832. }
  69833. return result;
  69834. } else if (getObjType(tp) == "array") {
  69835. let result = [];
  69836. if (getObjType(tp[0]) == "array") {
  69837. for (let m = 0; m < tp.length; m++) {
  69838. let rowArr = [];
  69839. for (let n = 0; n < tp[m].length; n++) {
  69840. rowArr.push(fp + "" + tp[m][n]);
  69841. }
  69842. result.push(rowArr);
  69843. }
  69844. } else {
  69845. for (let n = 0; n < tp.length; n++) {
  69846. result.push(fp + "" + tp[n]);
  69847. }
  69848. }
  69849. return result;
  69850. } else {
  69851. return fp + "" + tp;
  69852. }
  69853. } else if (sp == "^") {
  69854. if (getObjType(fp) == "array" && getObjType(tp) == "array") {
  69855. let result = [];
  69856. if (getObjType(fp[0]) == "array" && getObjType(tp[0]) == "array") {
  69857. if (fp.length != tp.length && fp[0].length != tp[0].length) {
  69858. return error.na;
  69859. }
  69860. for (let m = 0; m < fp.length; m++) {
  69861. let rowArr = [];
  69862. for (let n = 0; n < fp[m].length; n++) {
  69863. fp[m][n] = booleanToNum(fp[m][n]);
  69864. tp[m][n] = booleanToNum(tp[m][n]);
  69865. let value;
  69866. if (isRealNum(fp[m][n]) && isRealNum(tp[m][n])) {
  69867. value = Math.pow(parseFloat(fp[m][n]), parseFloat(tp[m][n]));
  69868. } else {
  69869. value = error.v;
  69870. }
  69871. rowArr.push(value);
  69872. }
  69873. result.push(rowArr);
  69874. }
  69875. } else if (getObjType(fp[0]) == "array") {
  69876. if (fp[0].length != tp.length) {
  69877. return error.na;
  69878. }
  69879. for (let m = 0; m < fp.length; m++) {
  69880. let rowArr = [];
  69881. for (let n = 0; n < fp[m].length; n++) {
  69882. fp[m][n] = booleanToNum(fp[m][n]);
  69883. tp[n] = booleanToNum(tp[n]);
  69884. let value;
  69885. if (isRealNum(fp[m][n]) && isRealNum(tp[n])) {
  69886. value = Math.pow(parseFloat(fp[m][n]), parseFloat(tp[n]));
  69887. } else {
  69888. value = error.v;
  69889. }
  69890. rowArr.push(value);
  69891. }
  69892. result.push(rowArr);
  69893. }
  69894. } else if (getObjType(tp[0]) == "array") {
  69895. if (tp[0].length != fp.length) {
  69896. return error.na;
  69897. }
  69898. for (let m = 0; m < tp.length; m++) {
  69899. let rowArr = [];
  69900. for (let n = 0; n < tp[m].length; n++) {
  69901. fp[n] = booleanToNum(fp[n]);
  69902. tp[m][n] = booleanToNum(tp[m][n]);
  69903. let value;
  69904. if (isRealNum(fp[n]) && isRealNum(tp[m][n])) {
  69905. value = Math.pow(parseFloat(fp[n]), parseFloat(tp[m][n]));
  69906. } else {
  69907. value = error.v;
  69908. }
  69909. rowArr.push(value);
  69910. }
  69911. result.push(rowArr);
  69912. }
  69913. } else {
  69914. if (fp.length != tp.length) {
  69915. return error.na;
  69916. }
  69917. for (let n = 0; n < fp.length; n++) {
  69918. fp[n] = booleanToNum(fp[n]);
  69919. tp[n] = booleanToNum(tp[n]);
  69920. let value;
  69921. if (isRealNum(fp[n]) && isRealNum(tp[n])) {
  69922. value = Math.pow(parseFloat(fp[n]), parseFloat(tp[n]));
  69923. } else {
  69924. value = error.v;
  69925. }
  69926. result.push(value);
  69927. }
  69928. }
  69929. return result;
  69930. } else if (getObjType(fp) == "array") {
  69931. tp = booleanToNum(tp);
  69932. let result = [];
  69933. if (getObjType(fp[0]) == "array") {
  69934. for (let m = 0; m < fp.length; m++) {
  69935. let rowArr = [];
  69936. for (let n = 0; n < fp[m].length; n++) {
  69937. fp[m][n] = booleanToNum(fp[m][n]);
  69938. let value;
  69939. if (isRealNum(fp[m][n]) && isRealNum(tp)) {
  69940. value = Math.pow(parseFloat(fp[m][n]), parseFloat(tp));
  69941. } else {
  69942. value = error.v;
  69943. }
  69944. rowArr.push(value);
  69945. }
  69946. result.push(rowArr);
  69947. }
  69948. } else {
  69949. for (let n = 0; n < fp.length; n++) {
  69950. fp[n] = booleanToNum(fp[n]);
  69951. let value;
  69952. if (isRealNum(fp[n]) && isRealNum(tp)) {
  69953. value = Math.pow(parseFloat(fp[n]), parseFloat(tp));
  69954. } else {
  69955. value = error.v;
  69956. }
  69957. result.push(value);
  69958. }
  69959. }
  69960. return result;
  69961. } else if (getObjType(tp) == "array") {
  69962. fp = booleanToNum(fp);
  69963. let result = [];
  69964. if (getObjType(tp[0]) == "array") {
  69965. for (let m = 0; m < tp.length; m++) {
  69966. let rowArr = [];
  69967. for (let n = 0; n < tp[m].length; n++) {
  69968. tp[m][n] = booleanToNum(tp[m][n]);
  69969. let value;
  69970. if (isRealNum(fp) && isRealNum(tp[m][n])) {
  69971. value = Math.pow(parseFloat(fp), parseFloat(tp[m][n]));
  69972. } else {
  69973. value = error.v;
  69974. }
  69975. rowArr.push(value);
  69976. }
  69977. result.push(rowArr);
  69978. }
  69979. } else {
  69980. for (let n = 0; n < tp.length; n++) {
  69981. tp[n] = booleanToNum(tp[n]);
  69982. let value;
  69983. if (isRealNum(fp) && isRealNum(tp[n])) {
  69984. value = Math.pow(parseFloat(fp), parseFloat(tp[n]));
  69985. } else {
  69986. value = error.v;
  69987. }
  69988. result.push(value);
  69989. }
  69990. }
  69991. return result;
  69992. } else {
  69993. fp = booleanToNum(fp);
  69994. tp = booleanToNum(tp);
  69995. let result;
  69996. if (isRealNum(fp) && isRealNum(tp)) {
  69997. result = Math.pow(parseFloat(fp), parseFloat(tp));
  69998. } else {
  69999. result = error.v;
  70000. }
  70001. return result;
  70002. }
  70003. }
  70004. }
  70005. function luckysheet_getarraydata() {
  70006. let fp = arguments[0];
  70007. fp = fp.replace("{", "").replace("}", "").replace(/\"/g, "");
  70008. let arr = [];
  70009. if (fp.indexOf(";") > -1) {
  70010. arr = fp.split(";");
  70011. for (let i2 = 0; i2 < arr.length; i2++) {
  70012. arr[i2] = arr[i2].split(",");
  70013. }
  70014. } else {
  70015. arr = fp.split(",");
  70016. }
  70017. return arr;
  70018. }
  70019. function luckysheet_calcADPMM(fp, sp, tp) {
  70020. let value;
  70021. if (sp == "+") {
  70022. value = (0, import_numeral4.default)(fp).add(tp).value();
  70023. } else if (sp == "-") {
  70024. value = (0, import_numeral4.default)(fp).subtract(tp).value();
  70025. } else if (sp == "%") {
  70026. value = new Function("return " + parseFloat(fp) + sp + "(" + parseFloat(tp) + ")")();
  70027. } else if (sp == "/") {
  70028. value = (0, import_numeral4.default)(fp).divide(tp).value();
  70029. } else if (sp == "*") {
  70030. value = (0, import_numeral4.default)(fp).multiply(tp).value();
  70031. }
  70032. return value;
  70033. }
  70034. function luckysheet_getcelldata(txt) {
  70035. if (window.luckysheet_getcelldata_cache == null) {
  70036. window.luckysheet_getcelldata_cache = {};
  70037. }
  70038. if (txt in window.luckysheet_getcelldata_cache) {
  70039. return window.luckysheet_getcelldata_cache[txt];
  70040. }
  70041. let luckysheetfile = getluckysheetfile();
  70042. let val = txt.split("!");
  70043. let sheettxt = "", rangetxt = "", sheetIndex = -1, sheetdata = null;
  70044. if (val.length > 1) {
  70045. sheettxt = val[0].replace(/''/g, "'");
  70046. rangetxt = val[1];
  70047. if (sheettxt.substr(0, 1) == "'" && sheettxt.substr(sheettxt.length - 1, 1) == "'") {
  70048. sheettxt = sheettxt.substring(1, sheettxt.length - 1);
  70049. }
  70050. for (let i2 in luckysheetfile) {
  70051. if (sheettxt == luckysheetfile[i2].name) {
  70052. sheetIndex = luckysheetfile[i2].index;
  70053. sheetdata = luckysheetfile[i2].data;
  70054. break;
  70055. }
  70056. }
  70057. if (sheetIndex == -1) {
  70058. sheetIndex = 0;
  70059. }
  70060. } else {
  70061. let index2 = getSheetIndex(store_default.calculateSheetIndex);
  70062. sheettxt = luckysheetfile[index2].name;
  70063. sheetIndex = luckysheetfile[index2].index;
  70064. sheetdata = luckysheetfile[index2].data;
  70065. rangetxt = val[0];
  70066. }
  70067. if (rangetxt.indexOf(":") == -1) {
  70068. let row = parseInt(rangetxt.replace(/[^0-9]/g, "")) - 1;
  70069. let col = ABCatNum(rangetxt.replace(/[^A-Za-z]/g, ""));
  70070. if (!isNaN(row) && !isNaN(col)) {
  70071. let ret = getdatabyselectionD(sheetdata, {
  70072. "row": [row, row],
  70073. "column": [col, col]
  70074. })[0][0];
  70075. if (formula_default.execFunctionGlobalData != null) {
  70076. let ef = formula_default.execFunctionGlobalData[row + "_" + col + "_" + sheetIndex];
  70077. if (ef != null) {
  70078. ret = ef;
  70079. }
  70080. }
  70081. let rowl = 1;
  70082. let coll = 1;
  70083. let retAll = {
  70084. "sheetName": sheettxt,
  70085. "startCell": rangetxt,
  70086. "rowl": rowl,
  70087. "coll": coll,
  70088. "data": ret
  70089. };
  70090. window.luckysheet_getcelldata_cache[txt] = retAll;
  70091. return retAll;
  70092. } else {
  70093. return [];
  70094. }
  70095. } else {
  70096. rangetxt = rangetxt.split(":");
  70097. let row = [], col = [];
  70098. row[0] = parseInt(rangetxt[0].replace(/[^0-9]/g, "")) - 1;
  70099. row[1] = parseInt(rangetxt[1].replace(/[^0-9]/g, "")) - 1;
  70100. if (isNaN(row[0])) {
  70101. row[0] = 0;
  70102. }
  70103. if (isNaN(row[1])) {
  70104. row[1] = sheetdata.length - 1;
  70105. }
  70106. if (row[0] > row[1]) {
  70107. tooltip_default.info("\u9009\u62E9\u5931\u8D25", "\u8F93\u5165\u8303\u56F4\u9519\u8BEF\uFF01");
  70108. return [];
  70109. }
  70110. col[0] = ABCatNum(rangetxt[0].replace(/[^A-Za-z]/g, ""));
  70111. col[1] = ABCatNum(rangetxt[1].replace(/[^A-Za-z]/g, ""));
  70112. if (isNaN(col[0])) {
  70113. col[0] = 0;
  70114. }
  70115. if (isNaN(col[1])) {
  70116. col[1] = sheetdata[0].length - 1;
  70117. }
  70118. if (col[0] > col[1]) {
  70119. tooltip_default.info("\u9009\u62E9\u5931\u8D25", "\u8F93\u5165\u8303\u56F4\u9519\u8BEF\uFF01");
  70120. return [];
  70121. }
  70122. let ret = getdatabyselectionD(sheetdata, {
  70123. "row": row,
  70124. "column": col
  70125. });
  70126. if (formula_default.execFunctionGlobalData != null) {
  70127. for (let r2 = row[0]; r2 <= row[1]; r2++) {
  70128. for (let c2 = col[0]; c2 <= col[1]; c2++) {
  70129. let ef = formula_default.execFunctionGlobalData[r2 + "_" + c2 + "_" + sheetIndex];
  70130. if (ef != null) {
  70131. ret[r2 - row[0]][c2 - col[0]] = ef;
  70132. }
  70133. }
  70134. }
  70135. }
  70136. let rowl = row[1] - row[0] + 1;
  70137. let coll = col[1] - col[0] + 1;
  70138. let retAll = {
  70139. "sheetName": sheettxt,
  70140. "startCell": rangetxt[0],
  70141. "rowl": rowl,
  70142. "coll": coll,
  70143. "data": ret
  70144. };
  70145. window.luckysheet_getcelldata_cache[txt] = retAll;
  70146. return retAll;
  70147. }
  70148. }
  70149. function luckysheet_parseData(value) {
  70150. if (typeof value === "object") {
  70151. if (value == null) {
  70152. return "";
  70153. } else if (Array.isArray(value)) {
  70154. let v = genarate(value[0]);
  70155. return v[2];
  70156. } else {
  70157. if (Array.isArray(value.data)) {
  70158. return error.v;
  70159. } else {
  70160. if (value.data.v === void 0) {
  70161. return "";
  70162. } else {
  70163. return value.data.v;
  70164. }
  70165. }
  70166. }
  70167. } else if (!formula_default.isCompareOperator(value).flag) {
  70168. let v = genarate(value);
  70169. return v[2];
  70170. } else if (typeof value === "string" || typeof value === "number") {
  70171. return value;
  70172. }
  70173. return error.v;
  70174. }
  70175. function luckysheet_getValue() {
  70176. let args = arguments[0];
  70177. for (let i2 = 0; i2 < args.length; i2++) {
  70178. let value = args[i2];
  70179. if (typeof value === "object") {
  70180. if (value == null) {
  70181. value = "";
  70182. } else if (Array.isArray(value)) {
  70183. let v = genarate(value[0]);
  70184. value = v[2];
  70185. } else {
  70186. if (Array.isArray(value.data)) {
  70187. value = value.data;
  70188. } else {
  70189. if (value.data.v === void 0) {
  70190. value = "";
  70191. } else {
  70192. value = value.data.v;
  70193. }
  70194. }
  70195. }
  70196. } else if (!formula_default.isCompareOperator(value).flag) {
  70197. let v = genarate(value);
  70198. value = v[2];
  70199. }
  70200. args[i2] = value;
  70201. }
  70202. }
  70203. function luckysheet_indirect_check() {
  70204. let cellTxt = arguments[0];
  70205. if (cellTxt == null || cellTxt.length == 0) {
  70206. return null;
  70207. }
  70208. return cellTxt;
  70209. }
  70210. function luckysheet_indirect_check_return(txt) {
  70211. return txt;
  70212. }
  70213. function luckysheet_offset_check() {
  70214. if (!(getObjType(arguments[0]) == "object" && arguments[0].startCell != null)) {
  70215. return formula_default.error.v;
  70216. }
  70217. var reference = arguments[0].startCell;
  70218. var rows = func_methods_default.getFirstValue(arguments[1]);
  70219. if (valueIsError(rows)) {
  70220. return rows;
  70221. }
  70222. if (!isRealNum(rows)) {
  70223. return formula_default.error.v;
  70224. }
  70225. rows = parseInt(rows);
  70226. var cols = func_methods_default.getFirstValue(arguments[2]);
  70227. if (valueIsError(cols)) {
  70228. return cols;
  70229. }
  70230. if (!isRealNum(cols)) {
  70231. return formula_default.error.v;
  70232. }
  70233. cols = parseInt(cols);
  70234. var height = arguments[0].rowl;
  70235. if (arguments.length >= 4) {
  70236. height = func_methods_default.getFirstValue(arguments[3]);
  70237. if (valueIsError(height)) {
  70238. return height;
  70239. }
  70240. if (!isRealNum(height)) {
  70241. return formula_default.error.v;
  70242. }
  70243. height = parseInt(height);
  70244. }
  70245. var width = arguments[0].coll;
  70246. if (arguments.length == 5) {
  70247. width = func_methods_default.getFirstValue(arguments[4]);
  70248. if (valueIsError(width)) {
  70249. return width;
  70250. }
  70251. if (!isRealNum(width)) {
  70252. return formula_default.error.v;
  70253. }
  70254. width = parseInt(width);
  70255. }
  70256. if (height < 1 || width < 1) {
  70257. return formula_default.error.r;
  70258. }
  70259. var cellrange = formula_default.getcellrange(reference);
  70260. var cellRow0 = cellrange["row"][0];
  70261. var cellCol0 = cellrange["column"][0];
  70262. cellRow0 += rows;
  70263. cellCol0 += cols;
  70264. var cellRow1 = cellRow0 + height - 1;
  70265. var cellCol1 = cellCol0 + width - 1;
  70266. if (cellRow0 < 0 || cellRow1 >= store_default.flowdata.length || cellCol0 < 0 || cellCol1 >= store_default.flowdata[0].length) {
  70267. return formula_default.error.r;
  70268. }
  70269. return getRangetxt(store_default.calculateSheetIndex, {
  70270. row: [cellRow0, cellRow1],
  70271. column: [cellCol0, cellCol1]
  70272. });
  70273. }
  70274. function luckysheet_getSpecialReference(isCellFirst, param1, param2) {
  70275. let functionRange, rangeTxt;
  70276. if (isCellFirst) {
  70277. rangeTxt = param1;
  70278. functionRange = param2;
  70279. } else {
  70280. functionRange = param1;
  70281. rangeTxt = param2;
  70282. }
  70283. if (functionRange.startCell.indexOf(":") > -1 || rangeTxt.indexOf(":") > -1) {
  70284. return error.v;
  70285. }
  70286. if (isCellFirst) {
  70287. return luckysheet_getcelldata(rangeTxt + ":" + functionRange.startCell);
  70288. } else {
  70289. let rangeT = rangeTxt, sheetName = "";
  70290. if (rangeTxt.indexOf("!") > -1) {
  70291. let rangetxtArr = rangeTxt.split("!");
  70292. sheetName = rangetxtArr[0] + "!";
  70293. rangeT = rangetxtArr[1];
  70294. }
  70295. return luckysheet_getcelldata(sheetName + functionRange.startCell + ":" + rangeT);
  70296. }
  70297. }
  70298. var import_numeral4;
  70299. var init_func = __esm({
  70300. "src/function/func.js"() {
  70301. init_func_methods();
  70302. init_formula();
  70303. init_tooltip();
  70304. init_validate();
  70305. init_getdata();
  70306. init_format();
  70307. init_matrix_methods();
  70308. init_get();
  70309. init_util();
  70310. init_store();
  70311. import_numeral4 = __toModule(require_numeral());
  70312. }
  70313. });
  70314. // src/expendPlugins/chart/plugin.js
  70315. function chart(data, isDemo2) {
  70316. loadLinks(dependLinks);
  70317. seriesLoadScripts(dependScripts, null, function() {
  70318. const store = new Vuex.Store();
  70319. console.info("chartmix::", chartmix.default);
  70320. Vue.use(chartmix.default, {store});
  70321. let outDom = document.getElementsByTagName("body")[0];
  70322. chartmix.default.initChart(outDom, store_default.lang);
  70323. $(".chartSetting").css({
  70324. top: "1px",
  70325. bottom: "1px",
  70326. position: "absolute",
  70327. right: "0px",
  70328. width: "350px",
  70329. background: "#fff",
  70330. border: "1px solid #E5E5E5",
  70331. "z-index": 1004,
  70332. "box-shadow": "0px 2px 4px rgba(0,0,0,0.2)",
  70333. "-webkit-box-shadow": "0px 2px 4px rgba(0,0,0,0.2)",
  70334. "-moz-box-shadow": "0px 2px 4px rgba(0,0,0,0.2)",
  70335. "-moz-user-select": "none",
  70336. "-khtml-user-select": "none",
  70337. "-webkit-user-select": "none",
  70338. "-ms-user-select": "none",
  70339. "user-select": "none",
  70340. "padding-left": "30px",
  70341. display: "none"
  70342. });
  70343. store_default.createChart = chartmix.default.createChart;
  70344. store_default.highlightChart = chartmix.default.highlightChart;
  70345. store_default.deleteChart = chartmix.default.deleteChart;
  70346. store_default.resizeChart = chartmix.default.resizeChart;
  70347. store_default.changeChartRange = chartmix.default.changeChartRange;
  70348. store_default.changeChartCellData = chartmix.default.changeChartCellData;
  70349. store_default.getChartJson = chartmix.default.getChartJson;
  70350. store_default.chart_selection = chart_selection();
  70351. store_default.chartparam.jfrefreshchartall = jfrefreshchartall;
  70352. store_default.chartparam.changeChartCellData = chartmix.default.changeChartCellData;
  70353. store_default.chartparam.renderChart = chartmix.default.renderChart;
  70354. store_default.chartparam.getChartJson = chartmix.default.getChartJson;
  70355. store_default.chartparam.insertToStore = chartmix.default.insertToStore;
  70356. for (let i2 = 0; i2 < data.length; i2++) {
  70357. renderCharts(data[i2].chart, isDemo2);
  70358. }
  70359. for (let i2 = 0; i2 < data.length; i2++) {
  70360. if (data[i2].status == "1") {
  70361. renderChartShow(data[i2].index);
  70362. }
  70363. }
  70364. arrayRemoveItem(store_default.asyncLoad, "chart");
  70365. });
  70366. }
  70367. function renderCharts(chartLists, isDemo2) {
  70368. if (chartLists == void 0) {
  70369. return;
  70370. }
  70371. for (let i2 = 0; i2 < chartLists.length; i2++) {
  70372. let chart2 = chartLists[i2];
  70373. if (isDemo2) {
  70374. store_default.chartparam.insertToStore({chart_id: chart2.chart_id, chartOptions: chart2.chartOptions});
  70375. }
  70376. let chart_id = chart2.chart_id;
  70377. let chart_id_c = chart_id + "_c";
  70378. let modelChartShowHTML = '<div id="${id}"class="luckysheet-modal-dialog luckysheet-modal-dialog-chart ${addclass}"tabindex="0"role="dialog"aria-labelledby=":41e"dir="ltr"><div class="luckysheet-modal-dialog-resize"><div class="luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-lt"data-type="lt"></div><div class="luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-mt"data-type="mt"></div><div class="luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-lm"data-type="lm"></div><div class="luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-rm"data-type="rm"></div><div class="luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-rt"data-type="rt"></div><div class="luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-lb"data-type="lb"></div><div class="luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-mb"data-type="mb"></div><div class="luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-rb"data-type="rb"></div></div><div class="luckysheet-modal-dialog-controll"><span class="luckysheet-modal-controll-btn luckysheet-modal-controll-update"role="button"tabindex="0"aria-label="\u4FEE\u6539\u56FE\u8868"title="\u4FEE\u6539\u56FE\u8868"><i class="fa fa-pencil"aria-hidden="true"></i></span><span class="luckysheet-modal-controll-btn luckysheet-modal-controll-max"role="butluckysheet_chartIns_indexton"tabindex="0"aria-label="\u6700\u5927\u5316"title="\u6700\u5927\u5316"><i class="fa fa-window-maximize"aria-hidden="true"></i></span><span class="luckysheet-modal-controll-btn luckysheet-modal-controll-del"role="button"tabindex="0"aria-label="\u5220\u9664"title="\u5220\u9664"><i class="fa fa-trash"aria-hidden="true"></i></span></div><div class="luckysheet-modal-dialog-content">${content}</div></div>';
  70379. let $t = $(replaceHtml2(modelChartShowHTML, {
  70380. id: chart_id_c,
  70381. addclass: "luckysheet-data-visualization-chart",
  70382. title: "\u56FE\u8868\u751F\u6210",
  70383. content: ""
  70384. })).appendTo($(".luckysheet-cell-main"));
  70385. setChartMoveableEffect($t);
  70386. $(`#${chart_id_c}`).children(".luckysheet-modal-dialog-content")[0].id = chart_id;
  70387. let container2 = document.getElementById(chart_id_c);
  70388. let chart_json;
  70389. chart_json = store_default.chartparam.getChartJson(chart2.chart_id);
  70390. store_default.chartparam.renderChart({chart_id: chart2.chart_id, chartOptions: chart_json});
  70391. store_default.currentChart = chart_json;
  70392. showNeedRangeShow(chart_id);
  70393. $(`#${chart_id}_c .luckysheet-modal-controll-del`).click(function(e) {
  70394. delChart(chart_id);
  70395. });
  70396. $(`#${chart_id}_c .luckysheet-modal-controll-update`).click(function(e) {
  70397. showChartSettingComponent();
  70398. });
  70399. $t.children(".luckysheet-modal-dialog-content").mousedown(function(e) {
  70400. if (!store_default.chartparam.luckysheetCurrentChartMaxState) {
  70401. showNeedRangeShow(chart_id);
  70402. }
  70403. e.stopPropagation();
  70404. });
  70405. $t.mousedown(function(e) {
  70406. if (!store_default.chartparam.luckysheetCurrentChartMaxState) {
  70407. showNeedRangeShow(chart_id);
  70408. setluckysheet_scroll_status(true);
  70409. if (!$(e.target).is(".luckysheet-modal-dialog-controll") && !$(e.target).is(".luckysheet-modal-controll-btn") && !$(e.target).is("i")) {
  70410. store_default.chartparam.luckysheetCurrentChartMoveTimeout = setTimeout(function() {
  70411. store_default.chartparam.luckysheetCurrentChartMove = true;
  70412. }, 100);
  70413. }
  70414. var toffset = store_default.chartparam.luckysheetCurrentChartMoveObj.offset();
  70415. var tpsition = store_default.chartparam.luckysheetCurrentChartMoveObj.position();
  70416. store_default.chartparam.luckysheetCurrentChartMoveXy = [
  70417. e.pageX - toffset.left,
  70418. e.pageY - toffset.top,
  70419. tpsition.left,
  70420. tpsition.top,
  70421. $("#luckysheet-scrollbar-x").scrollLeft(),
  70422. $("#luckysheet-scrollbar-y").scrollTop()
  70423. ];
  70424. store_default.chartparam.luckysheetCurrentChartMoveWinH = $("#luckysheet-cell-main")[0].scrollHeight;
  70425. store_default.chartparam.luckysheetCurrentChartMoveWinW = $("#luckysheet-cell-main")[0].scrollWidth;
  70426. if (!$(e.target).hasClass("luckysheet-mousedown-cancel") && $(e.target).filter("[class*='sp-palette']").length == 0 && $(e.target).filter("[class*='sp-thumb']").length == 0 && $(e.target).filter("[class*='sp-']").length == 0) {
  70427. $("#luckysheet-rightclick-menu").hide();
  70428. $("#luckysheet-cols-h-hover").hide();
  70429. $("#luckysheet-cols-menu-btn").hide();
  70430. $("#luckysheet-rightclick-menu").hide();
  70431. $("#luckysheet-sheet-list, #luckysheet-rightclick-sheet-menu, #luckysheet-user-menu").hide();
  70432. $("body > .luckysheet-filter-menu, body > .luckysheet-filter-submenu, body > .luckysheet-cols-menu").hide();
  70433. }
  70434. e.stopPropagation();
  70435. }
  70436. }).find(".luckysheet-modal-dialog-resize-item").mousedown(function(e) {
  70437. if (store_default.chartparam.luckysheetCurrentChartActive) {
  70438. store_default.chartparam.luckysheetCurrentChartResize = $(this).data("type");
  70439. var mouse = mouseposition(e.pageX, e.pageY), scrollLeft = $("#luckysheet-scrollbar-x").scrollLeft(), scrollTop = $("#luckysheet-scrollbar-y").scrollTop();
  70440. var x = mouse[0] + scrollLeft;
  70441. var y = mouse[1] + scrollTop;
  70442. var position = store_default.chartparam.luckysheetCurrentChartResizeObj.position();
  70443. store_default.chartparam.luckysheetCurrentChartResizeXy = [
  70444. x,
  70445. y,
  70446. $t.width(),
  70447. $t.height(),
  70448. position.left + scrollLeft,
  70449. position.top + scrollTop,
  70450. scrollLeft,
  70451. scrollTop
  70452. ];
  70453. store_default.chartparam.luckysheetCurrentChartResizeWinH = $("#luckysheet-cell-main")[0].scrollHeight;
  70454. store_default.chartparam.luckysheetCurrentChartResizeWinW = $("#luckysheet-cell-main")[0].scrollWidth;
  70455. store_default.chartparam.luckysheetCurrentChart = chart_id;
  70456. e.stopPropagation();
  70457. }
  70458. });
  70459. let width = chart2.width;
  70460. let height = chart2.height;
  70461. let left = chart2.left;
  70462. let top = chart2.top;
  70463. container2.style.width = width + "px";
  70464. container2.style.height = height + "px";
  70465. container2.style.position = "absolute";
  70466. container2.style.background = "#fff";
  70467. container2.style.left = left + "px";
  70468. container2.style.top = top + "px";
  70469. container2.style.zIndex = store_default.zIndex ? store_default.zIndex : 15;
  70470. store_default.zIndex++;
  70471. }
  70472. }
  70473. function jfrefreshchartall(flowdata1, r_st, r_ed, c_st, c_ed) {
  70474. let chart2 = store_default.currentChart;
  70475. if (!chart2) {
  70476. return;
  70477. }
  70478. if (chart2.rangeArray.length == 1) {
  70479. var row = chart2.rangeArray[0].row;
  70480. var column = chart2.rangeArray[0].column;
  70481. if (r_st > row[1] || r_ed < row[0] || c_st > column[1] || c_ed < column[0]) {
  70482. return;
  70483. }
  70484. var luckysheetgetcellrange = formula_default.getcellrange(chart2.rangeTxt);
  70485. var sheetIndex = luckysheetgetcellrange.sheetIndex == -1 ? 0 : luckysheetgetcellrange.sheetIndex;
  70486. var selection2 = {
  70487. row: luckysheetgetcellrange.row,
  70488. column: luckysheetgetcellrange.column,
  70489. dataSheetIndex: sheetIndex
  70490. };
  70491. var getcelldata = luckysheet_getcelldata(chart2.rangeTxt);
  70492. if (typeof getcelldata === "object" && getcelldata.length != 0 && getcelldata.data.length != null) {
  70493. var chartData = getcelldata.data;
  70494. store_default.chartparam.changeChartCellData(chart2.chart_id, chartData);
  70495. }
  70496. }
  70497. }
  70498. function chart_selection() {
  70499. return {
  70500. create: function() {
  70501. var chart_json = store_default.currentChart;
  70502. if (chart_json.rangeArray.length > 1) {
  70503. return;
  70504. }
  70505. $("#luckysheet-chart-rangeShow").empty();
  70506. $("#luckysheet-cell-selected-boxs").hide();
  70507. $("#luckysheet-cell-selected-focus").hide();
  70508. $("#luckysheet-rows-h-selected").empty();
  70509. $("#luckysheet-cols-h-selected").empty();
  70510. $("#luckysheet-row-count-show").hide();
  70511. $("#luckysheet-column-count-show").hide();
  70512. var st_r = chart_json.rangeArray[0].row[0];
  70513. var st_c = chart_json.rangeArray[0].column[0];
  70514. var rangeSplitArray = chart_json.rangeSplitArray;
  70515. var rangeRowCheck = chart_json.rangeRowCheck;
  70516. if (rangeRowCheck.exits) {
  70517. var chart_rowtitle_html = getRangeShowHtml("rowtitle", rangeSplitArray.rowtitle.row[0] + st_r, rangeSplitArray.rowtitle.row[1] + st_r, rangeSplitArray.rowtitle.column[0] + st_c, rangeSplitArray.rowtitle.column[1] + st_c);
  70518. } else {
  70519. var chart_rowtitle_html = "";
  70520. }
  70521. var rangeColCheck = chart_json.rangeColCheck;
  70522. if (rangeColCheck.exits) {
  70523. var chart_coltitle_html = getRangeShowHtml("coltitle", rangeSplitArray.coltitle.row[0] + st_r, rangeSplitArray.coltitle.row[1] + st_r, rangeSplitArray.coltitle.column[0] + st_c, rangeSplitArray.coltitle.column[1] + st_c);
  70524. } else {
  70525. var chart_coltitle_html = "";
  70526. }
  70527. var chart_content_html = getRangeShowHtml("content", rangeSplitArray.content.row[0] + st_r, rangeSplitArray.content.row[1] + st_r, rangeSplitArray.content.column[0] + st_c, rangeSplitArray.content.column[1] + st_c);
  70528. $("#luckysheet-chart-rangeShow").append(chart_rowtitle_html + chart_coltitle_html + chart_content_html);
  70529. function getRangeShowHtml(type, r1, r2, c1, c2) {
  70530. var visibledatarow = getvisibledatarow();
  70531. var visibledatacolumn = getvisibledatacolumn();
  70532. var row = visibledatarow[r2], row_pre = r1 - 1 == -1 ? 0 : visibledatarow[r1 - 1];
  70533. var col = visibledatacolumn[c2], col_pre = c1 - 1 == -1 ? 0 : visibledatacolumn[c1 - 1];
  70534. if (type == "rowtitle") {
  70535. var color = "#C65151";
  70536. }
  70537. if (type == "coltitle") {
  70538. var color = "#9667C0";
  70539. }
  70540. if (type == "content") {
  70541. var color = "#4970D1";
  70542. }
  70543. var html = '<div id="luckysheet-chart-rangeShow-' + type + '" style="left: ' + col_pre + "px;width: " + (col - col_pre - 1) + "px;top: " + row_pre + "px;height: " + (row - row_pre - 1) + 'px;border: none;margin: 0;position: absolute;z-index: 14;"><div class="luckysheet-chart-rangeShow-move" data-type="top" style="height: 2px;border-top: 2px solid #fff;border-bottom: 2px solid #fff;background: ' + color + ';position: absolute;left: 0;right: 0;top: -2px;z-index: 18;opacity: 0.9;cursor: move;"></div><div class="luckysheet-chart-rangeShow-move" data-type="right" style="width: 2px;border-left: 2px solid #fff;border-right: 2px solid #fff;background: ' + color + ';position: absolute;top: 0;bottom: 0;right: -2px;z-index: 18;opacity: 0.9;cursor: move;"></div><div class="luckysheet-chart-rangeShow-move" data-type="bottom" style="height: 2px;border-top: 2px solid #fff;border-bottom: 2px solid #fff;background: ' + color + ';position: absolute;left: 0;right: 0;bottom: -2px;z-index: 18;opacity: 0.9;cursor: move;"></div><div class="luckysheet-chart-rangeShow-move" data-type="left" style="width: 2px;border-left: 2px solid #fff;border-right: 2px solid #fff;background: ' + color + ';position: absolute;top: 0;bottom: 0;left: -2px;z-index: 18;opacity: 0.9;cursor: move;"></div><div style="border: 2px solid #85c0fc;background: ' + color + ';position: absolute;top: 0;right: 0;bottom: 0;left: 0;z-index: 15;opacity: 0.1;"></div><div class="luckysheet-chart-rangeShow-resize" data-type="lt" style="width: 6px;height: 6px;border: 1px solid #fff;background: ' + color + ';position: absolute;left: -3px;top: -3px;z-index: 19;cursor: se-resize;"></div><div class="luckysheet-chart-rangeShow-resize" data-type="rt" style="width: 6px;height: 6px;border: 1px solid #fff;background: ' + color + ';position: absolute;right: -3px;top: -3px;z-index: 19;cursor: ne-resize;"></div><div class="luckysheet-chart-rangeShow-resize" data-type="lb" style="width: 6px;height: 6px;border: 1px solid #fff;background: ' + color + ';position: absolute;left: -3px;bottom: -3px;z-index: 19;cursor: ne-resize;"></div><div class="luckysheet-chart-rangeShow-resize" data-type="rb" style="width: 6px;height: 6px;border: 1px solid #fff;background: ' + color + ';position: absolute;right: -3px;bottom: -3px;z-index: 19;cursor: se-resize;"></div></div>';
  70544. return html;
  70545. }
  70546. },
  70547. rangeMove: false,
  70548. rangeMovexy: null,
  70549. rangeMoveIndex: null,
  70550. rangeMoveObj: null,
  70551. rangeMoveDraging: function(event2, sheetBarHeight, statisticBarHeight) {
  70552. var chart_json = store_default.currentChart;
  70553. var st_r = chart_json.rangeArray[0].row[0];
  70554. var st_c = chart_json.rangeArray[0].column[0];
  70555. var rangeRowCheck = chart_json.rangeRowCheck;
  70556. var rangeColCheck = chart_json.rangeColCheck;
  70557. var rangeSplitArray = chart_json.rangeSplitArray;
  70558. var mouse = mouseposition(event2.pageX, event2.pageY);
  70559. var scrollLeft = $("#luckysheet-cell-main").scrollLeft();
  70560. var scrollTop = $("#luckysheet-cell-main").scrollTop();
  70561. var x = mouse[0] + scrollLeft;
  70562. var y = mouse[1] + scrollTop;
  70563. var winH = $(window).height() + scrollTop - sheetBarHeight - statisticBarHeight, winW = $(window).width() + scrollLeft;
  70564. var rowLocation2 = _rowLocation(y), row_index = rowLocation2[2];
  70565. var colLocation2 = _colLocation(x), col_index = colLocation2[2];
  70566. var visibledatarow = getvisibledatarow();
  70567. var visibledatacolumn = getvisibledatacolumn();
  70568. var $id = store_default.chart_selection.rangeMoveObj.attr("id");
  70569. if ($id == "luckysheet-chart-rangeShow-content") {
  70570. var row_s = store_default.chart_selection.rangeMoveIndex[0] - store_default.chart_selection.rangeMovexy[0] + row_index;
  70571. if (rangeRowCheck.exits) {
  70572. if (row_s < st_r + rangeRowCheck.range[1] + 1 || y < 0) {
  70573. row_s = st_r + rangeRowCheck.range[1] + 1;
  70574. }
  70575. } else {
  70576. if (row_s < 0 || y < 0) {
  70577. row_s = 0;
  70578. }
  70579. }
  70580. var row_e = rangeSplitArray.content.row[1] - rangeSplitArray.content.row[0] + row_s;
  70581. if (row_e >= visibledatarow.length - 1 || y > winH) {
  70582. row_s = visibledatarow.length - 1 - rangeSplitArray.content.row[1] + rangeSplitArray.content.row[0];
  70583. row_e = visibledatarow.length - 1;
  70584. }
  70585. var col_s = store_default.chart_selection.rangeMoveIndex[1] - store_default.chart_selection.rangeMovexy[1] + col_index;
  70586. if (rangeColCheck.exits) {
  70587. if (col_s < st_c + rangeColCheck.range[1] + 1 || x < 0) {
  70588. col_s = st_c + rangeColCheck.range[1] + 1;
  70589. }
  70590. } else {
  70591. if (col_s < 0 || x < 0) {
  70592. col_s = 0;
  70593. }
  70594. }
  70595. var col_e = rangeSplitArray.content.column[1] - rangeSplitArray.content.column[0] + col_s;
  70596. if (col_e >= visibledatacolumn.length - 1 || x > winW) {
  70597. col_s = visibledatacolumn.length - 1 - rangeSplitArray.content.column[1] + rangeSplitArray.content.column[0];
  70598. col_e = visibledatacolumn.length - 1;
  70599. }
  70600. if (rangeRowCheck.exits && rangeColCheck.exits) {
  70601. chart_json.rangeArray = [{row: [st_r, row_e], column: [st_c, col_e]}];
  70602. chart_json.rangeSplitArray.range = {
  70603. row: [st_r, row_e],
  70604. column: [st_c, col_e]
  70605. };
  70606. chart_json.rangeSplitArray.content = {
  70607. row: [row_s - st_r, row_e - st_r],
  70608. column: [col_s - st_c, col_e - st_c]
  70609. };
  70610. chart_json.rangeSplitArray.rowtitle = {
  70611. row: chart_json.rangeSplitArray.rowtitle.row,
  70612. column: [col_s - st_c, col_e - st_c]
  70613. };
  70614. chart_json.rangeSplitArray.coltitle = {
  70615. row: [row_s - st_r, row_e - st_r],
  70616. column: chart_json.rangeSplitArray.coltitle.column
  70617. };
  70618. } else if (rangeRowCheck.exits) {
  70619. chart_json.rangeArray = [{row: [st_r, row_e], column: [col_s, col_e]}];
  70620. chart_json.rangeSplitArray.range = {
  70621. row: [st_r, row_e],
  70622. column: [col_s, col_e]
  70623. };
  70624. chart_json.rangeSplitArray.content = {
  70625. row: [row_s - st_r, row_e - st_r],
  70626. column: chart_json.rangeSplitArray.content.column
  70627. };
  70628. } else if (rangeColCheck.exits) {
  70629. chart_json.rangeArray = [{row: [row_s, row_e], column: [st_c, col_e]}];
  70630. chart_json.rangeSplitArray.range = {
  70631. row: [row_s, row_e],
  70632. column: [st_c, col_e]
  70633. };
  70634. chart_json.rangeSplitArray.content = {
  70635. row: chart_json.rangeSplitArray.content.row,
  70636. column: [col_s - st_c, col_e - st_c]
  70637. };
  70638. } else {
  70639. chart_json.rangeArray = [
  70640. {row: [row_s, row_e], column: [col_s, col_e]}
  70641. ];
  70642. chart_json.rangeSplitArray.range = {
  70643. row: [row_s, row_e],
  70644. column: [col_s, col_e]
  70645. };
  70646. }
  70647. } else if ($id == "luckysheet-chart-rangeShow-rowtitle") {
  70648. var col_s = store_default.chart_selection.rangeMoveIndex[1] - store_default.chart_selection.rangeMovexy[1] + col_index;
  70649. if (rangeColCheck.exits) {
  70650. if (col_s < st_c + rangeColCheck.range[1] + 1 || x < 0) {
  70651. col_s = st_c + rangeColCheck.range[1] + 1;
  70652. }
  70653. } else {
  70654. if (col_s < 0 || x < 0) {
  70655. col_s = 0;
  70656. }
  70657. }
  70658. var col_e = rangeSplitArray.rowtitle.column[1] - rangeSplitArray.rowtitle.column[0] + col_s;
  70659. if (col_e >= visibledatacolumn.length - 1 || x > winW) {
  70660. col_s = visibledatacolumn.length - 1 - rangeSplitArray.rowtitle.column[1] + rangeSplitArray.rowtitle.column[0];
  70661. col_e = visibledatacolumn.length - 1;
  70662. }
  70663. if (rangeColCheck.exits) {
  70664. chart_json.rangeArray = [
  70665. {row: chart_json.rangeArray[0].row, column: [st_c, col_e]}
  70666. ];
  70667. chart_json.rangeSplitArray.range = {
  70668. row: chart_json.rangeArray[0].row,
  70669. column: [st_c, col_e]
  70670. };
  70671. chart_json.rangeSplitArray.rowtitle = {
  70672. row: chart_json.rangeSplitArray.rowtitle.row,
  70673. column: [col_s - st_c, col_e - st_c]
  70674. };
  70675. chart_json.rangeSplitArray.content = {
  70676. row: chart_json.rangeSplitArray.content.row,
  70677. column: [col_s - st_c, col_e - st_c]
  70678. };
  70679. } else {
  70680. chart_json.rangeArray = [
  70681. {row: chart_json.rangeArray[0].row, column: [col_s, col_e]}
  70682. ];
  70683. chart_json.rangeSplitArray.range = {
  70684. row: chart_json.rangeArray[0].row,
  70685. column: [col_s, col_e]
  70686. };
  70687. }
  70688. } else if ($id == "luckysheet-chart-rangeShow-coltitle") {
  70689. var row_s = store_default.chart_selection.rangeMoveIndex[0] - store_default.chart_selection.rangeMovexy[0] + row_index;
  70690. if (rangeRowCheck.exits) {
  70691. if (row_s < st_r + rangeRowCheck.range[1] + 1 || y < 0) {
  70692. row_s = st_r + rangeRowCheck.range[1] + 1;
  70693. }
  70694. } else {
  70695. if (row_s < 0 || y < 0) {
  70696. row_s = 0;
  70697. }
  70698. }
  70699. var row_e = rangeSplitArray.coltitle.row[1] - rangeSplitArray.coltitle.row[0] + row_s;
  70700. if (row_e >= visibledatarow.length - 1 || y > winH) {
  70701. row_s = visibledatarow.length - 1 - rangeSplitArray.coltitle.row[1] + rangeSplitArray.coltitle.row[0];
  70702. row_e = visibledatarow.length - 1;
  70703. }
  70704. if (rangeRowCheck.exits) {
  70705. chart_json.rangeArray = [
  70706. {row: [st_r, row_e], column: chart_json.rangeArray[0].column}
  70707. ];
  70708. chart_json.rangeSplitArray.range = {
  70709. row: [st_r, row_e],
  70710. column: chart_json.rangeArray[0].column
  70711. };
  70712. chart_json.rangeSplitArray.coltitle = {
  70713. row: [row_s - st_r, row_e - st_r],
  70714. column: chart_json.rangeSplitArray.coltitle.column
  70715. };
  70716. chart_json.rangeSplitArray.content = {
  70717. row: [row_s - st_r, row_e - st_r],
  70718. column: chart_json.rangeSplitArray.content.column
  70719. };
  70720. } else {
  70721. chart_json.rangeArray = [
  70722. {row: [row_s, row_e], column: chart_json.rangeArray[0].column}
  70723. ];
  70724. chart_json.rangeSplitArray.range = {
  70725. row: [row_s, row_e],
  70726. column: chart_json.rangeArray[0].column
  70727. };
  70728. }
  70729. }
  70730. store_default.chart_selection.create();
  70731. },
  70732. rangeMoveDragged: function() {
  70733. store_default.chart_selection.rangeMove = false;
  70734. var updateJson = store_default.currentChart;
  70735. updateJson.rangeTxt = getRangetxt(store_default.currentSheetIndex, updateJson.rangeArray[0], store_default.currentSheetIndex);
  70736. updateJson.chartData = getdatabyselection(updateJson.rangeArray[0], store_default.currentSheetIndex);
  70737. store_default.changeChartRange(updateJson.chart_id, updateJson.chartData, updateJson.rangeArray, updateJson.rangeTxt);
  70738. },
  70739. rangeResize: false,
  70740. rangeResizexy: null,
  70741. rangeResizeIndex: null,
  70742. rangeResizeObj: null,
  70743. rangeResizeDraging: function(event2, sheetBarHeight, statisticBarHeight) {
  70744. var chart_json = store_default.currentChart;
  70745. var st_r = chart_json.rangeArray[0].row[0];
  70746. var st_c = chart_json.rangeArray[0].column[0];
  70747. var rangeRowCheck = chart_json.rangeRowCheck;
  70748. var rangeColCheck = chart_json.rangeColCheck;
  70749. var rangeSplitArray = chart_json.rangeSplitArray;
  70750. var mouse = mouseposition(event2.pageX, event2.pageY);
  70751. var scrollLeft = $("#luckysheet-cell-main").scrollLeft();
  70752. var scrollTop = $("#luckysheet-cell-main").scrollTop();
  70753. var x = mouse[0] + scrollLeft;
  70754. var y = mouse[1] + scrollTop;
  70755. var winH = $(window).height() + scrollTop - sheetBarHeight - statisticBarHeight, winW = $(window).width() + scrollLeft;
  70756. var rowLocation2 = _rowLocation(y), row_index = rowLocation2[2];
  70757. var colLocation2 = _colLocation(x), col_index = colLocation2[2];
  70758. var visibledatarow = getvisibledatarow();
  70759. var visibledatacolumn = getvisibledatacolumn();
  70760. var $id = store_default.chart_selection.rangeResizeObj.attr("id");
  70761. if ($id == "luckysheet-chart-rangeShow-content") {
  70762. var r1, r2, c1, c2;
  70763. if (store_default.chart_selection.rangeResize == "lt") {
  70764. r1 = store_default.chart_selection.rangeResizeIndex.row[0];
  70765. c1 = store_default.chart_selection.rangeResizeIndex.column[0];
  70766. r2 = store_default.chart_selection.rangeResizeIndex.row[1];
  70767. c2 = store_default.chart_selection.rangeResizeIndex.column[1];
  70768. } else if (store_default.chart_selection.rangeResize == "lb") {
  70769. r1 = store_default.chart_selection.rangeResizeIndex.row[1];
  70770. c1 = store_default.chart_selection.rangeResizeIndex.column[0];
  70771. r2 = store_default.chart_selection.rangeResizeIndex.row[0];
  70772. c2 = store_default.chart_selection.rangeResizeIndex.column[1];
  70773. } else if (store_default.chart_selection.rangeResize == "rt") {
  70774. r1 = store_default.chart_selection.rangeResizeIndex.row[0];
  70775. c1 = store_default.chart_selection.rangeResizeIndex.column[1];
  70776. r2 = store_default.chart_selection.rangeResizeIndex.row[1];
  70777. c2 = store_default.chart_selection.rangeResizeIndex.column[0];
  70778. } else if (store_default.chart_selection.rangeResize == "rb") {
  70779. r1 = store_default.chart_selection.rangeResizeIndex.row[1];
  70780. c1 = store_default.chart_selection.rangeResizeIndex.column[1];
  70781. r2 = store_default.chart_selection.rangeResizeIndex.row[0];
  70782. c2 = store_default.chart_selection.rangeResizeIndex.column[0];
  70783. }
  70784. if (rangeRowCheck.exits) {
  70785. var row_s = r1 - store_default.chart_selection.rangeResizexy[0] + row_index;
  70786. if (row_s < st_r + rangeRowCheck.range[1] + 1 || y < 0) {
  70787. row_s = st_r + rangeRowCheck.range[1] + 1;
  70788. } else if (row_s >= visibledatarow.length - 1 || y > winH) {
  70789. row_s = visibledatarow.length - 1;
  70790. }
  70791. } else {
  70792. var row_s = st_r - store_default.chart_selection.rangeResizexy[0] + row_index;
  70793. if (row_s < 0 || y < 0) {
  70794. row_s = 0;
  70795. } else if (row_s >= visibledatarow.length - 1 || y > winH) {
  70796. row_s = visibledatarow.length - 1;
  70797. }
  70798. }
  70799. if (rangeColCheck.exits) {
  70800. var col_s = c1 - store_default.chart_selection.rangeResizexy[1] + col_index;
  70801. if (col_s < st_c + rangeColCheck.range[1] + 1 || x < 0) {
  70802. col_s = st_c + rangeColCheck.range[1] + 1;
  70803. } else if (col_s >= visibledatacolumn.length - 1 || x > winW) {
  70804. col_s = visibledatacolumn.length - 1;
  70805. }
  70806. } else {
  70807. var col_s = st_c - store_default.chart_selection.rangeResizexy[1] + col_index;
  70808. if (col_s < 0 || x < 0) {
  70809. col_s = 0;
  70810. } else if (col_s >= visibledatacolumn.length - 1 || x > winW) {
  70811. col_s = visibledatacolumn.length - 1;
  70812. }
  70813. }
  70814. var obj_r1, obj_r2, obj_c1, obj_c2;
  70815. if (row_s > r2) {
  70816. obj_r1 = r2;
  70817. obj_r2 = row_s;
  70818. } else {
  70819. obj_r1 = row_s;
  70820. obj_r2 = r2;
  70821. }
  70822. if (col_s > c2) {
  70823. obj_c1 = c2;
  70824. obj_c2 = col_s;
  70825. } else {
  70826. obj_c1 = col_s;
  70827. obj_c2 = c2;
  70828. }
  70829. if (!rangeRowCheck.exits && !rangeColCheck.exits) {
  70830. chart_json.rangeArray = [
  70831. {row: [obj_r1, obj_r2], column: [obj_c1, obj_c2]}
  70832. ];
  70833. chart_json.rangeSplitArray.range = {
  70834. row: [obj_r1, obj_r2],
  70835. column: [obj_c1, obj_c2]
  70836. };
  70837. } else {
  70838. chart_json.rangeArray = [
  70839. {row: [st_r, obj_r2], column: [st_c, obj_c2]}
  70840. ];
  70841. chart_json.rangeSplitArray.range = {
  70842. row: [st_r, obj_r2],
  70843. column: [st_c, obj_c2]
  70844. };
  70845. chart_json.rangeSplitArray.content = {
  70846. row: [obj_r1 - st_r, obj_r2 - st_r],
  70847. column: [obj_c1 - st_c, obj_c2 - st_c]
  70848. };
  70849. if (rangeRowCheck.exits) {
  70850. chart_json.rangeSplitArray.rowtitle = {
  70851. row: chart_json.rangeSplitArray.rowtitle.row,
  70852. column: [obj_c1 - st_c, obj_c2 - st_c]
  70853. };
  70854. }
  70855. if (rangeColCheck.exits) {
  70856. chart_json.rangeSplitArray.coltitle = {
  70857. row: [obj_r1 - st_r, obj_r2 - st_r],
  70858. column: chart_json.rangeSplitArray.coltitle.column
  70859. };
  70860. }
  70861. }
  70862. } else if ($id == "luckysheet-chart-rangeShow-rowtitle") {
  70863. var c1, c2;
  70864. if (store_default.chart_selection.rangeResize == "lt" || store_default.chart_selection.rangeResize == "lb") {
  70865. c1 = store_default.chart_selection.rangeResizeIndex.column[0];
  70866. c2 = store_default.chart_selection.rangeResizeIndex.column[1];
  70867. } else if (store_default.chart_selection.rangeResize == "rt" || store_default.chart_selection.rangeResize == "rb") {
  70868. c1 = store_default.chart_selection.rangeResizeIndex.column[1];
  70869. c2 = store_default.chart_selection.rangeResizeIndex.column[0];
  70870. }
  70871. if (rangeColCheck.exits) {
  70872. var col_s = c1 - store_default.chart_selection.rangeResizexy[1] + col_index;
  70873. if (col_s < st_c + rangeColCheck.range[1] + 1 || x < 0) {
  70874. col_s = st_c + rangeColCheck.range[1] + 1;
  70875. } else if (col_s >= visibledatacolumn.length - 1 || x > winW) {
  70876. col_s = visibledatacolumn.length - 1;
  70877. }
  70878. } else {
  70879. var col_s = st_c - store_default.chart_selection.rangeResizexy[1] + col_index;
  70880. if (col_s < 0 || x < 0) {
  70881. col_s = 0;
  70882. } else if (col_s >= visibledatacolumn.length - 1 || x > winW) {
  70883. col_s = visibledatacolumn.length - 1;
  70884. }
  70885. }
  70886. var obj_c1, obj_c2;
  70887. if (col_s > c2) {
  70888. obj_c1 = c2;
  70889. obj_c2 = col_s;
  70890. } else {
  70891. obj_c1 = col_s;
  70892. obj_c2 = c2;
  70893. }
  70894. if (!rangeColCheck.exits) {
  70895. chart_json.rangeArray = [
  70896. {row: chart_json.rangeArray[0].row, column: [obj_c1, obj_c2]}
  70897. ];
  70898. chart_json.rangeSplitArray.range = {
  70899. row: chart_json.rangeArray[0].row,
  70900. column: [obj_c1, obj_c2]
  70901. };
  70902. } else {
  70903. chart_json.rangeArray = [
  70904. {row: chart_json.rangeArray[0].row, column: [st_c, obj_c2]}
  70905. ];
  70906. chart_json.rangeSplitArray.range = {
  70907. row: chart_json.rangeArray[0].row,
  70908. column: [st_c, obj_c2]
  70909. };
  70910. chart_json.rangeSplitArray.rowtitle = {
  70911. row: chart_json.rangeSplitArray.rowtitle.row,
  70912. column: [obj_c1 - st_c, obj_c2 - st_c]
  70913. };
  70914. chart_json.rangeSplitArray.content = {
  70915. row: chart_json.rangeSplitArray.content.row,
  70916. column: [obj_c1 - st_c, obj_c2 - st_c]
  70917. };
  70918. }
  70919. } else if ($id == "luckysheet-chart-rangeShow-coltitle") {
  70920. var r1, r2;
  70921. if (store_default.chart_selection.rangeResize == "lt" || store_default.chart_selection.rangeResize == "rt") {
  70922. r1 = store_default.chart_selection.rangeResizeIndex.row[0];
  70923. r2 = store_default.chart_selection.rangeResizeIndex.row[1];
  70924. } else if (store_default.chart_selection.rangeResize == "lb" || store_default.chart_selection.rangeResize == "rb") {
  70925. r1 = store_default.chart_selection.rangeResizeIndex.row[1];
  70926. r2 = store_default.chart_selection.rangeResizeIndex.row[0];
  70927. }
  70928. if (rangeRowCheck.exits) {
  70929. var row_s = r1 - store_default.chart_selection.rangeResizexy[0] + row_index;
  70930. if (row_s < st_r + rangeRowCheck.range[1] + 1 || y < 0) {
  70931. row_s = st_r + rangeRowCheck.range[1] + 1;
  70932. } else if (row_s >= visibledatarow.length - 1 || y > winH) {
  70933. row_s = visibledatarow.length - 1;
  70934. }
  70935. } else {
  70936. var row_s = st_r - store_default.chart_selection.rangeResizexy[0] + row_index;
  70937. if (row_s < 0 || y < 0) {
  70938. row_s = 0;
  70939. } else if (row_s >= visibledatarow.length - 1 || y > winH) {
  70940. row_s = visibledatarow.length - 1;
  70941. }
  70942. }
  70943. var obj_r1, obj_r2;
  70944. if (row_s > r2) {
  70945. obj_r1 = r2;
  70946. obj_r2 = row_s;
  70947. } else {
  70948. obj_r1 = row_s;
  70949. obj_r2 = r2;
  70950. }
  70951. if (!rangeRowCheck.exits) {
  70952. chart_json.rangeArray = [
  70953. {row: [obj_r1, obj_r2], column: chart_json.rangeArray[0].column}
  70954. ];
  70955. chart_json.rangeSplitArray.range = {
  70956. row: [obj_r1, obj_r2],
  70957. column: chart_json.rangeArray[0].column
  70958. };
  70959. } else {
  70960. chart_json.rangeArray = [
  70961. {row: [st_r, obj_r2], column: chart_json.rangeArray[0].column}
  70962. ];
  70963. chart_json.rangeSplitArray.range = {
  70964. row: [st_r, obj_r2],
  70965. column: chart_json.rangeArray[0].column
  70966. };
  70967. chart_json.rangeSplitArray.coltitle = {
  70968. row: [obj_r1 - st_r, obj_r2 - st_r],
  70969. column: chart_json.rangeSplitArray.coltitle.column
  70970. };
  70971. chart_json.rangeSplitArray.content = {
  70972. row: [obj_r1 - st_r, obj_r2 - st_r],
  70973. column: chart_json.rangeSplitArray.content.column
  70974. };
  70975. }
  70976. }
  70977. store_default.chart_selection.create();
  70978. },
  70979. rangeResizeDragged: function() {
  70980. store_default.chart_selection.rangeResize = null;
  70981. var updateJson = store_default.currentChart;
  70982. updateJson.rangeTxt = getRangetxt(store_default.currentSheetIndex, updateJson.rangeArray[0], store_default.currentSheetIndex);
  70983. updateJson.chartData = getdatabyselection(updateJson.rangeArray[0], store_default.currentSheetIndex);
  70984. store_default.changeChartRange(updateJson.chart_id, updateJson.chartData, updateJson.rangeArray, updateJson.rangeTxt);
  70985. }
  70986. };
  70987. }
  70988. function createLuckyChart(width, height, left, top) {
  70989. var jfgird_select_save = luckysheet.getluckysheet_select_save();
  70990. if (jfgird_select_save.length == 1 && jfgird_select_save[0].row[0] == jfgird_select_save[0].row[1] && jfgird_select_save[0].column[0] == jfgird_select_save[0].column[1]) {
  70991. luckysheetMoveHighlightRange2("right", "rangeOfSelect");
  70992. luckysheetMoveHighlightRange2("down", "rangeOfSelect");
  70993. jfgird_select_save = luckysheet.getluckysheet_select_save();
  70994. }
  70995. var shiftpositon_row = -1;
  70996. var row_ed = jfgird_select_save[0]["row"][1] - jfgird_select_save[0]["row"][0];
  70997. for (var r2 = jfgird_select_save[0]["row"][0]; r2 <= jfgird_select_save[0]["row"][1]; r2++) {
  70998. for (var c2 = jfgird_select_save[0]["column"][0]; c2 <= jfgird_select_save[0]["column"][1]; c2++) {
  70999. var value = getcellvalue(r2, c2, luckysheet.flowdata());
  71000. if (value != null && value.toString().length > 0) {
  71001. shiftpositon_row = r2;
  71002. break;
  71003. }
  71004. }
  71005. if (shiftpositon_row !== -1) {
  71006. break;
  71007. }
  71008. }
  71009. if (shiftpositon_row == -1) {
  71010. shiftpositon_row = 0;
  71011. }
  71012. jfgird_select_save[0]["row"] = [shiftpositon_row, shiftpositon_row];
  71013. jfgird_select_save[0].row_focus = shiftpositon_row;
  71014. luckysheet.setluckysheet_select_save(jfgird_select_save);
  71015. store_default.luckysheet_shiftpositon = $.extend(true, {}, jfgird_select_save[0]);
  71016. luckysheetMoveEndCell("down", "range", false, row_ed);
  71017. jfgird_select_save = luckysheet.getluckysheet_select_save();
  71018. var shiftpositon_col = -1;
  71019. var column_ed = jfgird_select_save[0]["column"][1] - jfgird_select_save[0]["column"][0];
  71020. for (var c2 = jfgird_select_save[0]["column"][0]; c2 <= jfgird_select_save[0]["column"][1]; c2++) {
  71021. for (var r2 = jfgird_select_save[0]["row"][0]; r2 <= jfgird_select_save[0]["row"][1]; r2++) {
  71022. var value = getcellvalue(r2, c2, luckysheet.flowdata());
  71023. if (value != null && value.toString().length > 0) {
  71024. shiftpositon_col = c2;
  71025. break;
  71026. }
  71027. }
  71028. if (shiftpositon_col !== -1) {
  71029. break;
  71030. }
  71031. }
  71032. if (shiftpositon_col == -1) {
  71033. shiftpositon_col = 0;
  71034. }
  71035. jfgird_select_save[0]["column"] = [shiftpositon_col, shiftpositon_col];
  71036. jfgird_select_save[0].column_focus = shiftpositon_col;
  71037. luckysheet.setluckysheet_select_save(jfgird_select_save);
  71038. store_default.luckysheet_shiftpositon = $.extend(true, {}, jfgird_select_save[0]);
  71039. luckysheetMoveEndCell("right", "range", false, column_ed);
  71040. jfgird_select_save = luckysheet.getluckysheet_select_save();
  71041. var rangeArray = $.extend(true, [], jfgird_select_save);
  71042. var rangeTxt = getRangetxt(store_default.currentSheetIndex, rangeArray[0], store_default.currentSheetIndex);
  71043. let chartData = getdatabyselection();
  71044. console.dir(chartData);
  71045. let chart_id = generateRandomKey("chart");
  71046. let chart_id_c = chart_id + "_c";
  71047. let modelChartShowHTML = '<div id="${id}"class="luckysheet-modal-dialog luckysheet-modal-dialog-chart ${addclass}"tabindex="0"role="dialog"aria-labelledby=":41e"dir="ltr"><div class="luckysheet-modal-dialog-resize"><div class="luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-lt"data-type="lt"></div><div class="luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-mt"data-type="mt"></div><div class="luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-lm"data-type="lm"></div><div class="luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-rm"data-type="rm"></div><div class="luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-rt"data-type="rt"></div><div class="luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-lb"data-type="lb"></div><div class="luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-mb"data-type="mb"></div><div class="luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-rb"data-type="rb"></div></div><div class="luckysheet-modal-dialog-controll"><span class="luckysheet-modal-controll-btn luckysheet-modal-controll-update"role="button"tabindex="0"aria-label="\u4FEE\u6539\u56FE\u8868"title="\u4FEE\u6539\u56FE\u8868"><i class="fa fa-pencil"aria-hidden="true"></i></span><span class="luckysheet-modal-controll-btn luckysheet-modal-controll-max"role="butluckysheet_chartIns_indexton"tabindex="0"aria-label="\u6700\u5927\u5316"title="\u6700\u5927\u5316"><i class="fa fa-window-maximize"aria-hidden="true"></i></span><span class="luckysheet-modal-controll-btn luckysheet-modal-controll-del"role="button"tabindex="0"aria-label="\u5220\u9664"title="\u5220\u9664"><i class="fa fa-trash"aria-hidden="true"></i></span></div><div class="luckysheet-modal-dialog-content">${content}</div></div>';
  71048. let $t = $(replaceHtml2(modelChartShowHTML, {
  71049. id: chart_id_c,
  71050. addclass: "luckysheet-data-visualization-chart",
  71051. title: "\u56FE\u8868\u751F\u6210",
  71052. content: ""
  71053. })).appendTo($(".luckysheet-cell-main"));
  71054. let container2 = document.getElementById(chart_id_c);
  71055. let {render, chart_json} = store_default.createChart($(`#${chart_id_c}`).children(".luckysheet-modal-dialog-content")[0], chartData, chart_id, rangeArray, rangeTxt);
  71056. console.dir(JSON.stringify(chart_json));
  71057. width = width ? width : 400;
  71058. height = height ? height : 250;
  71059. left = left ? left : 0;
  71060. top = top ? top : 0;
  71061. container2.style.width = width + "px";
  71062. container2.style.height = height + "px";
  71063. container2.style.position = "absolute";
  71064. container2.style.background = "#fff";
  71065. container2.style.left = left + "px";
  71066. container2.style.top = top + "px";
  71067. render.style.width = "100%";
  71068. render.style.height = "100%";
  71069. container2.style.zIndex = store_default.zIndex ? store_default.zIndex : 15;
  71070. store_default.zIndex++;
  71071. let sheetFile = store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)];
  71072. if (!sheetFile.chart) {
  71073. sheetFile.chart = [];
  71074. }
  71075. sheetFile.chart.push({
  71076. chart_id,
  71077. width,
  71078. height,
  71079. left,
  71080. top,
  71081. sheetIndex: sheetFile.index
  71082. });
  71083. showNeedRangeShow(chart_id);
  71084. $(`#${chart_id}_c .luckysheet-modal-controll-del`).click(function(e) {
  71085. delChart(chart_id);
  71086. });
  71087. setChartMoveableEffect($t);
  71088. $(`#${chart_id}_c .luckysheet-modal-controll-update`).click(function(e) {
  71089. showChartSettingComponent();
  71090. });
  71091. $t.children(".luckysheet-modal-dialog-content").mousedown(function(e) {
  71092. if (!store_default.chartparam.luckysheetCurrentChartMaxState) {
  71093. showNeedRangeShow(chart_id);
  71094. }
  71095. e.stopPropagation();
  71096. });
  71097. $t.mousedown(function(e) {
  71098. if (!store_default.chartparam.luckysheetCurrentChartMaxState) {
  71099. showNeedRangeShow(chart_id);
  71100. setluckysheet_scroll_status(true);
  71101. if (!$(e.target).is(".luckysheet-modal-dialog-controll") && !$(e.target).is(".luckysheet-modal-controll-btn") && !$(e.target).is("i")) {
  71102. store_default.chartparam.luckysheetCurrentChartMoveTimeout = setTimeout(function() {
  71103. store_default.chartparam.luckysheetCurrentChartMove = true;
  71104. }, 100);
  71105. }
  71106. var toffset = store_default.chartparam.luckysheetCurrentChartMoveObj.offset();
  71107. var tpsition = store_default.chartparam.luckysheetCurrentChartMoveObj.position();
  71108. store_default.chartparam.luckysheetCurrentChartMoveXy = [
  71109. e.pageX - toffset.left,
  71110. e.pageY - toffset.top,
  71111. tpsition.left,
  71112. tpsition.top,
  71113. $("#luckysheet-scrollbar-x").scrollLeft(),
  71114. $("#luckysheet-scrollbar-y").scrollTop()
  71115. ];
  71116. store_default.chartparam.luckysheetCurrentChartMoveWinH = $("#luckysheet-cell-main")[0].scrollHeight;
  71117. store_default.chartparam.luckysheetCurrentChartMoveWinW = $("#luckysheet-cell-main")[0].scrollWidth;
  71118. if (!$(e.target).hasClass("luckysheet-mousedown-cancel") && $(e.target).filter("[class*='sp-palette']").length == 0 && $(e.target).filter("[class*='sp-thumb']").length == 0 && $(e.target).filter("[class*='sp-']").length == 0) {
  71119. $("#luckysheet-rightclick-menu").hide();
  71120. $("#luckysheet-cols-h-hover").hide();
  71121. $("#luckysheet-cols-menu-btn").hide();
  71122. $("#luckysheet-rightclick-menu").hide();
  71123. $("#luckysheet-sheet-list, #luckysheet-rightclick-sheet-menu, #luckysheet-user-menu").hide();
  71124. $("body > .luckysheet-filter-menu, body > .luckysheet-filter-submenu, body > .luckysheet-cols-menu").hide();
  71125. }
  71126. e.stopPropagation();
  71127. }
  71128. }).find(".luckysheet-modal-dialog-resize-item").mousedown(function(e) {
  71129. if (store_default.chartparam.luckysheetCurrentChartActive) {
  71130. store_default.chartparam.luckysheetCurrentChartResize = $(this).data("type");
  71131. var mouse = mouseposition(e.pageX, e.pageY), scrollLeft = $("#luckysheet-scrollbar-x").scrollLeft(), scrollTop = $("#luckysheet-scrollbar-y").scrollTop();
  71132. var x = mouse[0] + scrollLeft;
  71133. var y = mouse[1] + scrollTop;
  71134. var position = store_default.chartparam.luckysheetCurrentChartResizeObj.position();
  71135. store_default.chartparam.luckysheetCurrentChartResizeXy = [
  71136. x,
  71137. y,
  71138. $t.width(),
  71139. $t.height(),
  71140. position.left + scrollLeft,
  71141. position.top + scrollTop,
  71142. scrollLeft,
  71143. scrollTop
  71144. ];
  71145. store_default.chartparam.luckysheetCurrentChartResizeWinH = $("#luckysheet-cell-main")[0].scrollHeight;
  71146. store_default.chartparam.luckysheetCurrentChartResizeWinW = $("#luckysheet-cell-main")[0].scrollWidth;
  71147. store_default.chartparam.luckysheetCurrentChart = chart_id;
  71148. e.stopPropagation();
  71149. }
  71150. });
  71151. }
  71152. function setChartMoveableEffect($container) {
  71153. $container.find(".luckysheet-modal-dialog-content").hover(function() {
  71154. $container.removeClass("chart-moveable");
  71155. }, function() {
  71156. $container.addClass("chart-moveable");
  71157. });
  71158. $container.hover(function() {
  71159. $container.addClass("chart-moveable");
  71160. }, function() {
  71161. $container.removeClass("chart-moveable");
  71162. });
  71163. }
  71164. function delChart(chart_id) {
  71165. $(`.luckysheet-cell-main #${chart_id}_c`).remove();
  71166. hideAllNeedRangeShow();
  71167. let sheetFile = store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)];
  71168. let index2 = sheetFile.chart.findIndex((item2) => item2.chart_id == chart_id);
  71169. sheetFile.chart.splice(index2, 1);
  71170. store_default.deleteChart(chart_id);
  71171. }
  71172. function showNeedRangeShow(chart_id) {
  71173. let chartLists = store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)].chart;
  71174. for (let chartId in chartLists) {
  71175. chartLists[chartId].needRangeShow = false;
  71176. if (chartLists[chartId].chart_id == chart_id) {
  71177. chartLists[chartId].needRangeShow = true;
  71178. store_default.currentChart = store_default.getChartJson(chart_id);
  71179. }
  71180. }
  71181. selectRangeBorderShow(chart_id);
  71182. }
  71183. function hideAllNeedRangeShow() {
  71184. let chartLists = store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)].chart;
  71185. for (let chartId in chartLists) {
  71186. chartLists[chartId].needRangeShow = false;
  71187. }
  71188. selectRangeBorderHide();
  71189. }
  71190. function selectRangeBorderShow(chart_id) {
  71191. let $t = $("#" + chart_id + "_c");
  71192. store_default.chart_selection.create();
  71193. store_default.chartparam.luckysheetCurrentChartActive = true;
  71194. store_default.chartparam.luckysheetCurrentChartMoveObj = $t;
  71195. store_default.chartparam.luckysheetCurrentChartResizeObj = $t;
  71196. store_default.chartparam.luckysheetCurrentChart = chart_id;
  71197. $("#luckysheet-cell-main").find(".luckysheet-modal-dialog-chart .luckysheet-modal-dialog-resize").hide();
  71198. $("#luckysheet-cell-main").find(".luckysheet-modal-dialog-chart .luckysheet-modal-dialog-controll").hide();
  71199. $t.css("z-index", store_default.chartparam.luckysheetCurrentChartZIndexRank++);
  71200. $t.find(".luckysheet-modal-dialog-resize").show();
  71201. $t.find(".luckysheet-modal-dialog-controll").show();
  71202. if (($(".chartSetting").is(":visible") || store_default.chartparam.luckysheet_chart_redo_click) && chart_id != store_default.chartparam.luckysheetCurrentChart) {
  71203. $("body .luckysheet-cols-menu").hide();
  71204. }
  71205. store_default.currentChart = store_default.highlightChart(chart_id);
  71206. }
  71207. function selectRangeBorderHide(settingShow) {
  71208. $("#luckysheet-cell-main .luckysheet-modal-dialog-chart .luckysheet-modal-dialog-resize, #luckysheet-cell-main .luckysheet-modal-dialog-chart .luckysheet-modal-dialog-controll").hide();
  71209. $("#luckysheet-cell-main").find(".luckysheet-datavisual-selection-set div").remove();
  71210. store_default.chartparam.luckysheetCurrentChartActive = false;
  71211. $("#luckysheet-chart-rangeShow").empty();
  71212. if (!settingShow && $(".chartSetting").is(":visible") && !isEditMode()) {
  71213. hideChartSettingComponent();
  71214. }
  71215. }
  71216. function showChartSettingComponent(refresh2, chart_id) {
  71217. if (!$(".chartSetting").is(":visible")) {
  71218. $(".chartSetting").show();
  71219. $("#luckysheet-cell-main").find(".luckysheet-datavisual-selection-set div").show();
  71220. store_default.chartparam.luckysheetCurrentChartActive = true;
  71221. setTimeout(function() {
  71222. luckysheetsizeauto();
  71223. }, 0);
  71224. }
  71225. }
  71226. function hideChartSettingComponent(refresh2) {
  71227. if ($(".chartSetting").is(":visible")) {
  71228. $(".chartSetting").hide();
  71229. $("#luckysheet-cell-main .luckysheet-modal-dialog-chart .luckysheet-modal-dialog-resize, #luckysheet-cell-main .luckysheet-modal-dialog-chart .luckysheet-modal-dialog-controll").hide();
  71230. $("#luckysheet-cell-main").find(".luckysheet-datavisual-selection-set div").remove();
  71231. store_default.chartparam.luckysheetCurrentChartActive = false;
  71232. if (!isEditMode() && !refresh2) {
  71233. setTimeout(function() {
  71234. luckysheetsizeauto();
  71235. }, 0);
  71236. }
  71237. }
  71238. }
  71239. function renderChartShow(index2) {
  71240. selectRangeBorderHide("true");
  71241. const luckysheetfile = store_default.luckysheetfile;
  71242. luckysheetfile.forEach((file) => {
  71243. if (file.index == index2) {
  71244. const chartLists = file.chart || [];
  71245. chartLists.forEach((chart2) => {
  71246. chart2.isShow = true;
  71247. $("#" + chart2.chart_id + "_c").show();
  71248. store_default.resizeChart(chart2.chart_id);
  71249. if (chart2.needRangeShow == true) {
  71250. store_default.currentChart = store_default.getChartJson(chart2.chart_id);
  71251. selectRangeBorderShow(chart2.chart_id);
  71252. }
  71253. });
  71254. } else {
  71255. const chartLists = file.chart || [];
  71256. chartLists.forEach((chart2) => {
  71257. chart2.isShow = false;
  71258. $("#" + chart2.chart_id + "_c").hide();
  71259. });
  71260. }
  71261. });
  71262. }
  71263. var _rowLocation, _colLocation, dependScripts, dependLinks;
  71264. var init_plugin = __esm({
  71265. "src/expendPlugins/chart/plugin.js"() {
  71266. init_util();
  71267. init_chartUtil();
  71268. init_getdata();
  71269. init_store();
  71270. init_formula();
  71271. init_func();
  71272. init_get();
  71273. init_location();
  71274. init_set();
  71275. init_sheetMove();
  71276. init_validate();
  71277. init_resize();
  71278. _rowLocation = rowLocation;
  71279. _colLocation = colLocation;
  71280. dependScripts = [
  71281. "https://cdn.jsdelivr.net/npm/vue@2.6.11",
  71282. "https://unpkg.com/vuex@3.4.0",
  71283. "https://cdn.bootcdn.net/ajax/libs/element-ui/2.13.2/index.js",
  71284. "https://cdn.bootcdn.net/ajax/libs/echarts/4.8.0/echarts.min.js",
  71285. "expendPlugins/chart/chartmix.umd.min.js"
  71286. ];
  71287. dependLinks = [
  71288. "https://cdn.bootcdn.net/ajax/libs/element-ui/2.13.2/theme-chalk/index.css",
  71289. "expendPlugins/chart/chartmix.css"
  71290. ];
  71291. }
  71292. });
  71293. // src/controllers/zoom.js
  71294. function zoomChange(ratio) {
  71295. if (store_default.flowdata == null || store_default.flowdata.length == 0) {
  71296. return;
  71297. }
  71298. clearTimeout(luckysheetZoomTimeout);
  71299. luckysheetZoomTimeout = setTimeout(() => {
  71300. if (store_default.clearjfundo) {
  71301. store_default.jfredo.push({
  71302. "type": "zoomChange",
  71303. "zoomRatio": store_default.zoomRatio,
  71304. "curZoomRatio": ratio,
  71305. "sheetIndex": store_default.currentSheetIndex
  71306. });
  71307. }
  71308. currentWheelZoom = null;
  71309. store_default.zoomRatio = ratio;
  71310. let currentSheet = sheetmanage_default.getSheetByIndex();
  71311. postil_default.buildAllPs(currentSheet.data);
  71312. imageCtrl_default.images = currentSheet.images;
  71313. imageCtrl_default.allImagesShow();
  71314. imageCtrl_default.init();
  71315. if (currentSheet.config == null) {
  71316. currentSheet.config = {};
  71317. }
  71318. if (currentSheet.config.sheetViewZoom == null) {
  71319. currentSheet.config.sheetViewZoom = {};
  71320. }
  71321. let type = currentSheet.config.curentsheetView;
  71322. if (type == null) {
  71323. type = "viewNormal";
  71324. }
  71325. currentSheet.config.sheetViewZoom[type + "ZoomScale"] = ratio;
  71326. server_default.saveParam("all", store_default.currentSheetIndex, store_default.zoomRatio, {"k": "zoomRatio"});
  71327. server_default.saveParam("cg", store_default.currentSheetIndex, currentSheet.config["sheetViewZoom"], {"k": "sheetViewZoom"});
  71328. zoomRefreshView();
  71329. }, 100);
  71330. }
  71331. function zoomRefreshView() {
  71332. jfrefreshgrid_rhcw(store_default.flowdata.length, store_default.flowdata[0].length);
  71333. changeSheetContainerSize();
  71334. }
  71335. function zoomInitial() {
  71336. const ZOOM_WHEEL_STEP = 0.02;
  71337. const ZOOM_STEP = 0.1;
  71338. const MAX_ZOOM_RATIO = 4;
  71339. const MIN_ZOOM_RATIO = 0.1;
  71340. $("#luckysheet-zoom-minus").click(function() {
  71341. let currentRatio;
  71342. if (store_default.zoomRatio == null) {
  71343. currentRatio = store_default.zoomRatio = 1;
  71344. } else {
  71345. currentRatio = Math.ceil(store_default.zoomRatio * 10) / 10;
  71346. }
  71347. currentRatio = currentRatio - ZOOM_STEP;
  71348. if (currentRatio == store_default.zoomRatio) {
  71349. currentRatio = currentRatio - ZOOM_STEP;
  71350. }
  71351. if (currentRatio <= MIN_ZOOM_RATIO) {
  71352. currentRatio = MIN_ZOOM_RATIO;
  71353. }
  71354. zoomChange(currentRatio);
  71355. zoomNumberDomBind(currentRatio);
  71356. });
  71357. $("#luckysheet-zoom-plus").click(function() {
  71358. let currentRatio;
  71359. if (store_default.zoomRatio == null) {
  71360. currentRatio = store_default.zoomRatio = 1;
  71361. } else {
  71362. currentRatio = Math.floor(store_default.zoomRatio * 10) / 10;
  71363. }
  71364. currentRatio = currentRatio + ZOOM_STEP;
  71365. if (currentRatio == store_default.zoomRatio) {
  71366. currentRatio = currentRatio + ZOOM_STEP;
  71367. }
  71368. if (currentRatio >= MAX_ZOOM_RATIO) {
  71369. currentRatio = MAX_ZOOM_RATIO;
  71370. }
  71371. zoomChange(currentRatio);
  71372. zoomNumberDomBind(currentRatio);
  71373. });
  71374. $("#luckysheet-zoom-slider").mousedown(function(e) {
  71375. let xoffset = $(this).offset().left, pageX = e.pageX;
  71376. let currentRatio = positionToRatio(pageX - xoffset);
  71377. zoomChange(currentRatio);
  71378. zoomNumberDomBind(currentRatio);
  71379. });
  71380. $("#luckysheet-zoom-cursor").mousedown(function(e) {
  71381. let curentX = e.pageX, cursorLeft = parseFloat($("#luckysheet-zoom-cursor").css("left"));
  71382. $("#luckysheet-zoom-cursor").css("transition", "none");
  71383. $(document).off("mousemove.zoomCursor").on("mousemove.zoomCursor", function(event2) {
  71384. let moveX = event2.pageX;
  71385. let offsetX = moveX - curentX;
  71386. let pos = cursorLeft + offsetX;
  71387. let currentRatio = positionToRatio(pos);
  71388. if (currentRatio > MAX_ZOOM_RATIO) {
  71389. currentRatio = MAX_ZOOM_RATIO;
  71390. pos = 100;
  71391. }
  71392. if (currentRatio < MIN_ZOOM_RATIO) {
  71393. currentRatio = MIN_ZOOM_RATIO;
  71394. pos = 0;
  71395. }
  71396. zoomChange(currentRatio);
  71397. let r2 = Math.round(currentRatio * 100) + "%";
  71398. $("#luckysheet-zoom-ratioText").html(r2);
  71399. $("#luckysheet-zoom-cursor").css("left", pos - 4);
  71400. });
  71401. $(document).off("mouseup.zoomCursor").on("mouseup.zoomCursor", function(event2) {
  71402. $(document).off(".zoomCursor");
  71403. $("#luckysheet-zoom-cursor").css("transition", "all 0.3s");
  71404. });
  71405. e.stopPropagation();
  71406. }).click(function(e) {
  71407. e.stopPropagation();
  71408. });
  71409. $("#luckysheet-zoom-ratioText").click(function() {
  71410. zoomChange(1);
  71411. zoomNumberDomBind(1);
  71412. });
  71413. zoomNumberDomBind(store_default.zoomRatio);
  71414. currentWheelZoom = null;
  71415. document.addEventListener("wheel", function(ev) {
  71416. if (!ev.ctrlKey || !ev.deltaY) {
  71417. return;
  71418. }
  71419. if (currentWheelZoom === null) {
  71420. currentWheelZoom = store_default.zoomRatio || 1;
  71421. }
  71422. currentWheelZoom += ev.deltaY < 0 ? ZOOM_WHEEL_STEP : -ZOOM_WHEEL_STEP;
  71423. if (currentWheelZoom >= MAX_ZOOM_RATIO) {
  71424. currentWheelZoom = MAX_ZOOM_RATIO;
  71425. } else if (currentWheelZoom < MIN_ZOOM_RATIO) {
  71426. currentWheelZoom = MIN_ZOOM_RATIO;
  71427. }
  71428. zoomChange(currentWheelZoom);
  71429. zoomNumberDomBind(currentWheelZoom);
  71430. ev.preventDefault();
  71431. ev.stopPropagation();
  71432. }, {capture: true, passive: false});
  71433. document.addEventListener("keydown", function(ev) {
  71434. if (!ev.ctrlKey) {
  71435. return;
  71436. }
  71437. let handled = false;
  71438. let zoom = store_default.zoomRatio || 1;
  71439. if (ev.key === "-" || ev.which === 189) {
  71440. zoom -= ZOOM_STEP;
  71441. handled = true;
  71442. } else if (ev.key === "+" || ev.which === 187) {
  71443. zoom += ZOOM_STEP;
  71444. handled = true;
  71445. } else if (ev.key === "0" || ev.which === 48) {
  71446. zoom = 1;
  71447. handled = true;
  71448. }
  71449. if (handled) {
  71450. ev.preventDefault();
  71451. if (zoom >= MAX_ZOOM_RATIO) {
  71452. zoom = MAX_ZOOM_RATIO;
  71453. } else if (zoom < MIN_ZOOM_RATIO) {
  71454. zoom = MIN_ZOOM_RATIO;
  71455. }
  71456. zoomChange(zoom);
  71457. zoomNumberDomBind(zoom);
  71458. }
  71459. }, {capture: true});
  71460. }
  71461. function positionToRatio(pos) {
  71462. let ratio = 1;
  71463. if (pos < 50) {
  71464. ratio = Math.round((pos * 1.8 / 100 + 0.1) * 100) / 100;
  71465. } else if (pos > 50) {
  71466. ratio = Math.round(((pos - 50) * 6 / 100 + 1) * 100) / 100;
  71467. }
  71468. return ratio;
  71469. }
  71470. function zoomSlierDomBind(ratio) {
  71471. let domPos = 50;
  71472. if (ratio < 1) {
  71473. domPos = Math.round((ratio - 0.1) * 100 / 0.18) / 10;
  71474. } else if (ratio > 1) {
  71475. domPos = Math.round((ratio - 1) * 100 / 0.6) / 10 + 50;
  71476. }
  71477. $("#luckysheet-zoom-cursor").css("left", domPos - 4);
  71478. }
  71479. function zoomNumberDomBind(ratio) {
  71480. let r2 = Math.round(ratio * 100) + "%";
  71481. $("#luckysheet-zoom-ratioText").html(r2);
  71482. zoomSlierDomBind(ratio);
  71483. }
  71484. var luckysheetZoomTimeout, currentWheelZoom;
  71485. var init_zoom = __esm({
  71486. "src/controllers/zoom.js"() {
  71487. init_store();
  71488. init_locale();
  71489. init_util();
  71490. init_sheetmanage();
  71491. init_resize();
  71492. init_refresh();
  71493. init_server();
  71494. init_postil();
  71495. init_imageCtrl();
  71496. luckysheetZoomTimeout = null;
  71497. currentWheelZoom = null;
  71498. }
  71499. });
  71500. // src/controllers/sheetmanage.js
  71501. var sheetmanage, sheetmanage_default;
  71502. var init_sheetmanage = __esm({
  71503. "src/controllers/sheetmanage.js"() {
  71504. init_validate();
  71505. init_cleargridelement();
  71506. init_getdata();
  71507. init_setdata();
  71508. init_createdom();
  71509. init_tooltip();
  71510. init_formula();
  71511. init_refresh();
  71512. init_rhchInit();
  71513. init_editor();
  71514. init_extend();
  71515. init_validate();
  71516. init_util();
  71517. init_constant();
  71518. init_server();
  71519. init_luckysheetConfigsetting();
  71520. init_pivotTable();
  71521. init_resize();
  71522. init_postil();
  71523. init_imageCtrl();
  71524. init_dataVerificationCtrl();
  71525. init_hyperlinkCtrl();
  71526. init_freezen();
  71527. init_filter();
  71528. init_select();
  71529. init_store();
  71530. init_locale();
  71531. init_plugin();
  71532. init_resize();
  71533. init_zoom();
  71534. init_menuButton();
  71535. init_method();
  71536. sheetmanage = {
  71537. generateRandomSheetIndex: function(prefix) {
  71538. if (prefix == null) {
  71539. prefix = "Sheet";
  71540. }
  71541. let userAgent = window.navigator.userAgent.replace(/[^a-zA-Z0-9]/g, "").split("");
  71542. let mid = "";
  71543. for (let i2 = 0; i2 < 12; i2++) {
  71544. mid += userAgent[Math.round(Math.random() * (userAgent.length - 1))];
  71545. }
  71546. let time = new Date().getTime();
  71547. return prefix + "_" + mid + "_" + time;
  71548. },
  71549. generateRandomSheetName: function(file, isPivotTable) {
  71550. let index2 = file.length;
  71551. const locale_pivotTable = locale_default().pivotTable;
  71552. const title = locale_pivotTable.title;
  71553. for (let i2 = 0; i2 < file.length; i2++) {
  71554. if (file[i2].name.indexOf("Sheet") > -1 || file[i2].name.indexOf(title) > -1) {
  71555. let suffix = parseFloat(file[i2].name.replace("Sheet", "").replace(title, ""));
  71556. if (suffix != "NaN" && Math.ceil(suffix) > index2) {
  71557. index2 = Math.ceil(suffix);
  71558. }
  71559. }
  71560. }
  71561. if (isPivotTable) {
  71562. return title + (index2 + 1);
  71563. } else {
  71564. return "Sheet" + (index2 + 1);
  71565. }
  71566. },
  71567. generateCopySheetName: function(file, name2) {
  71568. let _locale = locale_default();
  71569. let locale_info = _locale.info;
  71570. let copyWord = "(" + locale_info.copy;
  71571. const copy_i = name2.toString().indexOf(copyWord);
  71572. if (~copy_i) {
  71573. name2 = name2.toString().substring(0, copy_i);
  71574. }
  71575. let index2 = "";
  71576. let nameCopy = name2 + copyWord;
  71577. const sheetNames = [];
  71578. for (let i2 = 0; i2 < file.length; i2++) {
  71579. let fileName = file[i2].name.toString();
  71580. sheetNames.push(fileName);
  71581. let st_i = fileName.indexOf(nameCopy);
  71582. if (st_i === 0) {
  71583. index2 = index2 || 2;
  71584. let ed_i = fileName.indexOf(")", st_i + nameCopy.length);
  71585. let num = fileName.substring(st_i + nameCopy.length, ed_i);
  71586. if (isRealNum(num)) {
  71587. if (parseInt(num) >= index2) {
  71588. index2 = parseInt(num) + 1;
  71589. }
  71590. }
  71591. }
  71592. }
  71593. let sheetCopyName;
  71594. do {
  71595. let postfix = copyWord + index2 + ")";
  71596. const lengthLimit = 31 - postfix.length;
  71597. sheetCopyName = name2;
  71598. if (sheetCopyName.length > lengthLimit) {
  71599. sheetCopyName = sheetCopyName.slice(0, lengthLimit - 1) + "\u2026";
  71600. }
  71601. sheetCopyName = sheetCopyName + postfix;
  71602. } while (~sheetNames.indexOf(sheetCopyName) && (index2 = (index2 || 1) + 1));
  71603. return sheetCopyName;
  71604. },
  71605. getSheetByIndex: function(index2) {
  71606. let _this = this;
  71607. if (index2 == null) {
  71608. index2 = store_default.currentSheetIndex;
  71609. }
  71610. let i2 = _this.getSheetIndex(index2);
  71611. return store_default.luckysheetfile[i2];
  71612. },
  71613. getSheetByName: function(name2) {
  71614. let _this = this;
  71615. if (name2 == null) {
  71616. return null;
  71617. }
  71618. for (let i2 = 0; i2 < store_default.luckysheetfile.length; i2++) {
  71619. let file = store_default.luckysheetfile[i2];
  71620. if (file.name == name2) {
  71621. return file;
  71622. }
  71623. }
  71624. return null;
  71625. },
  71626. getCurSheetnoset: function() {
  71627. let curindex = 0;
  71628. for (let i2 = 0; i2 < store_default.luckysheetfile.length; i2++) {
  71629. if (store_default.luckysheetfile[i2].status == 1) {
  71630. curindex = store_default.luckysheetfile[i2].index;
  71631. break;
  71632. }
  71633. }
  71634. return curindex;
  71635. },
  71636. getCurSheet: function() {
  71637. if (store_default.luckysheetfile.length) {
  71638. let hasActive = false, indexs = [];
  71639. store_default.luckysheetfile.forEach((item2) => {
  71640. if (typeof item2.index === "undefined") {
  71641. item2.index = this.generateRandomSheetIndex();
  71642. }
  71643. if (indexs.includes(item2.index)) {
  71644. item2.index = this.generateRandomSheetIndex();
  71645. } else {
  71646. indexs.push(item2.index);
  71647. }
  71648. if (typeof item2.status === "undefined") {
  71649. item2.status = 0;
  71650. }
  71651. if (item2.status == 1) {
  71652. if (hasActive) {
  71653. item2.status = 0;
  71654. } else {
  71655. hasActive = true;
  71656. }
  71657. }
  71658. });
  71659. if (!hasActive) {
  71660. store_default.luckysheetfile[0].status = 1;
  71661. }
  71662. }
  71663. store_default.currentSheetIndex = store_default.luckysheetfile[0].index;
  71664. for (let i2 = 0; i2 < store_default.luckysheetfile.length; i2++) {
  71665. if (store_default.luckysheetfile[i2].status == 1) {
  71666. store_default.currentSheetIndex = store_default.luckysheetfile[i2].index;
  71667. break;
  71668. }
  71669. }
  71670. return store_default.currentSheetIndex;
  71671. },
  71672. addNewSheet: function(e, isPivotTable) {
  71673. if (isEditMode() || store_default.allowEdit === false) {
  71674. return;
  71675. }
  71676. if (!method_default.createHookFunction("sheetCreateBefore")) {
  71677. return;
  71678. }
  71679. let _this = this;
  71680. let order = store_default.luckysheetfile.length;
  71681. let index2 = _this.generateRandomSheetIndex();
  71682. let sheetname = _this.generateRandomSheetName(store_default.luckysheetfile, isPivotTable);
  71683. $("#luckysheet-sheet-container-c").append(replaceHtml(sheetHTML, {"index": index2, "active": "", "name": sheetname, "style": "", "colorset": ""}));
  71684. let sheetconfig = {
  71685. "name": sheetname,
  71686. "color": "",
  71687. "status": "0",
  71688. "order": order,
  71689. "index": index2,
  71690. "celldata": [],
  71691. "row": store_default.defaultrowNum,
  71692. "column": store_default.defaultcolumnNum,
  71693. "config": {},
  71694. "pivotTable": null,
  71695. "isPivotTable": !!isPivotTable
  71696. };
  71697. store_default.luckysheetfile.push(sheetconfig);
  71698. $("#luckysheet-sheet-area div.luckysheet-sheets-item").removeClass("luckysheet-sheets-item-active");
  71699. $("#luckysheet-sheets-item" + index2).addClass("luckysheet-sheets-item-active");
  71700. $("#luckysheet-cell-main").append('<div id="luckysheet-datavisual-selection-set-' + index2 + '" class="luckysheet-datavisual-selection-set"></div>');
  71701. cleargridelement(e);
  71702. server_default.saveParam("sha", null, $.extend(true, {}, sheetconfig));
  71703. if (store_default.clearjfundo) {
  71704. store_default.jfundo.length = 0;
  71705. let redo2 = {};
  71706. redo2["type"] = "addSheet";
  71707. redo2["sheetconfig"] = $.extend(true, {}, sheetconfig);
  71708. redo2["index"] = index2;
  71709. redo2["currentSheetIndex"] = store_default.currentSheetIndex;
  71710. store_default.jfredo.push(redo2);
  71711. }
  71712. _this.changeSheetExec(index2, isPivotTable, true);
  71713. },
  71714. setSheetHide: function(index2, isDelete) {
  71715. let _this = this;
  71716. let currentIdx = _this.getSheetIndex(index2);
  71717. if (!isDelete && !method_default.createHookFunction("sheetHideBefore", {sheet: store_default.luckysheetfile[currentIdx]})) {
  71718. return;
  71719. }
  71720. store_default.luckysheetfile[currentIdx].hide = 1;
  71721. let luckysheetcurrentSheetitem2 = $("#luckysheet-sheets-item" + index2);
  71722. luckysheetcurrentSheetitem2.hide();
  71723. $("#luckysheet-sheet-area div.luckysheet-sheets-item").removeClass("luckysheet-sheets-item-active");
  71724. let indicator;
  71725. if (luckysheetConfigsetting_default.showsheetbarConfig.sheet) {
  71726. indicator = luckysheetcurrentSheetitem2.nextAll(":visible");
  71727. if (luckysheetcurrentSheetitem2.nextAll(":visible").length > 0) {
  71728. indicator = indicator.eq(0).data("index");
  71729. } else {
  71730. indicator = luckysheetcurrentSheetitem2.prevAll(":visible").eq(0).data("index");
  71731. }
  71732. } else {
  71733. let nextActiveIdx, showSheetIdxs = [];
  71734. store_default.luckysheetfile.forEach((ele, index3) => {
  71735. if (ele.hide !== 1)
  71736. showSheetIdxs.push(index3);
  71737. });
  71738. let len = showSheetIdxs.length;
  71739. if (len === 1) {
  71740. nextActiveIdx = showSheetIdxs[0];
  71741. } else {
  71742. nextActiveIdx = showSheetIdxs[len - 1] > currentIdx ? showSheetIdxs.find((e) => e > currentIdx) : showSheetIdxs[len - 1];
  71743. }
  71744. indicator = store_default.luckysheetfile[nextActiveIdx].index;
  71745. }
  71746. $("#luckysheet-sheets-item" + indicator).addClass("luckysheet-sheets-item-active");
  71747. _this.changeSheetExec(indicator);
  71748. _this.locationSheet();
  71749. server_default.saveParam("sh", luckysheetcurrentSheetitem2.data("index"), 1, {"op": "hide", "cur": indicator});
  71750. if (!isDelete) {
  71751. method_default.createHookFunction("sheetHideAfter", {sheet: store_default.luckysheetfile[currentIdx]});
  71752. }
  71753. },
  71754. setSheetShow: function(index2) {
  71755. let _this = this;
  71756. const file = store_default.luckysheetfile[_this.getSheetIndex(index2)];
  71757. if (!method_default.createHookFunction("sheetShowBefore", {sheet: file})) {
  71758. return;
  71759. }
  71760. file.hide = 0;
  71761. _this.changeSheetExec(index2);
  71762. server_default.saveParam("sh", index2, 0, {"op": "show", "cur": null});
  71763. method_default.createHookFunction("sheetShowAfter", {sheet: file});
  71764. },
  71765. sheetMaxIndex: 0,
  71766. ordersheet: function(property) {
  71767. return function(a, b) {
  71768. let value1 = a[property];
  71769. let value2 = b[property];
  71770. return value1 - value2;
  71771. };
  71772. },
  71773. getCurrentOrder: function() {
  71774. let orders = {};
  71775. $("#luckysheet-sheet-area div.luckysheet-sheets-item").each(function(a) {
  71776. let index2 = $(this).data("index");
  71777. for (let i2 = 0; i2 < store_default.luckysheetfile.length; i2++) {
  71778. if (store_default.luckysheetfile[i2].index == index2) {
  71779. orders[index2.toString()] = a;
  71780. break;
  71781. }
  71782. }
  71783. });
  71784. return orders;
  71785. },
  71786. reOrderAllSheet: function() {
  71787. let orders = {};
  71788. $("#luckysheet-sheet-area div.luckysheet-sheets-item").each(function(a) {
  71789. let index2 = $(this).data("index");
  71790. for (let i2 = 0; i2 < store_default.luckysheetfile.length; i2++) {
  71791. if (store_default.luckysheetfile[i2].index == index2) {
  71792. store_default.luckysheetfile[i2].order = a;
  71793. orders[index2.toString()] = a;
  71794. break;
  71795. }
  71796. }
  71797. });
  71798. server_default.saveParam("shr", null, orders);
  71799. store_default.luckysheetfile.sort((x, y) => {
  71800. let order_x = x.order;
  71801. let order_y = y.order;
  71802. if (order_x != null && order_y != null) {
  71803. return order_x - order_y;
  71804. } else if (order_x != null) {
  71805. return -1;
  71806. } else if (order_y != null) {
  71807. return 1;
  71808. } else {
  71809. return 1;
  71810. }
  71811. });
  71812. },
  71813. createSheet: function() {
  71814. let _this = this;
  71815. let btn = [];
  71816. store_default.luckysheetfile.sort(_this.ordersheet("order"));
  71817. for (let i2 = 0; i2 < store_default.luckysheetfile.length; i2++) {
  71818. let display = "";
  71819. let sheetIndex = store_default.luckysheetfile[i2].index;
  71820. let colorset = "";
  71821. if (store_default.luckysheetfile[i2].color != null) {
  71822. colorset = '<div class="luckysheet-sheets-item-color" style=" position: absolute; width: 100%; height: 3px; bottom: 0px; left: 0px; background-color: ' + store_default.luckysheetfile[i2].color + ';"></div>';
  71823. }
  71824. if (store_default.currentSheetIndex == sheetIndex) {
  71825. btn.push(replaceHtml(sheetHTML, {"index": sheetIndex, "active": "luckysheet-sheets-item-active", "name": store_default.luckysheetfile[i2].name, "style": "", "colorset": colorset}));
  71826. } else {
  71827. if (store_default.luckysheetfile[i2].hide == 1) {
  71828. btn.push(replaceHtml(sheetHTML, {"index": sheetIndex, "active": "", "name": store_default.luckysheetfile[i2].name, "style": "display:none;", "colorset": colorset}));
  71829. } else {
  71830. btn.push(replaceHtml(sheetHTML, {"index": sheetIndex, "active": "", "name": store_default.luckysheetfile[i2].name, "style": "", "colorset": colorset}));
  71831. }
  71832. display = "style='display:none;'";
  71833. }
  71834. $("#luckysheet-cell-main").append("<div " + display + ' id="luckysheet-datavisual-selection-set-' + sheetIndex + '" class="luckysheet-datavisual-selection-set"></div>');
  71835. }
  71836. $("#luckysheet-sheet-container-c").append(btn.join(""));
  71837. _this.locationSheet();
  71838. },
  71839. locationSheet: function() {
  71840. let $c = $("#luckysheet-sheet-container-c"), winW = $("#" + store_default.container).width();
  71841. let $cursheet = $("#luckysheet-sheet-container-c > div.luckysheet-sheets-item-active").eq(0);
  71842. let scrollLeftpx = 0;
  71843. let c_width = 0;
  71844. $("#luckysheet-sheet-container-c > div.luckysheet-sheets-item:visible").each(function() {
  71845. if ($(this).hasClass("luckysheet-sheets-item-active")) {
  71846. scrollLeftpx = c_width;
  71847. }
  71848. c_width += $(this).outerWidth();
  71849. });
  71850. setTimeout(function() {
  71851. $c.scrollLeft(scrollLeftpx - 10);
  71852. if (luckysheetConfigsetting_default.showsheetbarConfig.sheet) {
  71853. if (c_width >= winW * 0.7) {
  71854. $("#luckysheet-sheet-area .luckysheet-sheets-scroll").css("display", "inline-block");
  71855. $("#luckysheet-sheet-container .docs-sheet-fade-left").show();
  71856. } else {
  71857. $("#luckysheet-sheet-area .luckysheet-sheets-scroll").css("display", "none");
  71858. $("#luckysheet-sheet-container .docs-sheet-fade-left").hide();
  71859. }
  71860. }
  71861. }, 1);
  71862. },
  71863. copySheet: function(copyindex, e) {
  71864. if (isEditMode() || store_default.allowEdit === false) {
  71865. return;
  71866. }
  71867. let _this = this;
  71868. let order = store_default.luckysheetfile.length;
  71869. let index2 = _this.generateRandomSheetIndex();
  71870. let copyarrindex = _this.getSheetIndex(copyindex);
  71871. let copyjson = $.extend(true, {}, store_default.luckysheetfile[copyarrindex]);
  71872. copyjson.order = order;
  71873. copyjson.index = index2;
  71874. copyjson.name = _this.generateCopySheetName(store_default.luckysheetfile, copyjson.name);
  71875. if (!method_default.createHookFunction("sheetCopyBefore", {
  71876. targetSheet: store_default.luckysheetfile[copyarrindex],
  71877. copySheet: copyjson
  71878. })) {
  71879. return;
  71880. }
  71881. let colorset = "";
  71882. if (copyjson.color != null) {
  71883. colorset = '<div class="luckysheet-sheets-item-color" style=" position: absolute; width: 100%; height: 3px; bottom: 0px; left: 0px; background-color: ' + copyjson.color + ';"></div>';
  71884. }
  71885. let copyobject = $("#luckysheet-sheets-item" + copyindex);
  71886. $("#luckysheet-sheet-container-c").append(replaceHtml(sheetHTML, {"index": copyjson.index, "active": "", "name": copyjson.name, "order": copyjson.order, "style": "", "colorset": colorset}));
  71887. $("#luckysheet-sheets-item" + copyjson.index).insertAfter(copyobject);
  71888. store_default.luckysheetfile.splice(copyarrindex + 1, 0, copyjson);
  71889. $("#luckysheet-sheet-area div.luckysheet-sheets-item").removeClass("luckysheet-sheets-item-active");
  71890. $("#luckysheet-sheets-item" + index2).addClass("luckysheet-sheets-item-active");
  71891. $("#luckysheet-cell-main").append('<div id="luckysheet-datavisual-selection-set-' + index2 + '" class="luckysheet-datavisual-selection-set"></div>');
  71892. cleargridelement(e);
  71893. server_default.saveParam("shc", index2, {"copyindex": copyindex, "name": copyjson.name});
  71894. _this.changeSheetExec(index2, void 0, void 0, true);
  71895. _this.reOrderAllSheet();
  71896. if (store_default.clearjfundo) {
  71897. store_default.jfredo.push({
  71898. "type": "copySheet",
  71899. "copyindex": copyindex,
  71900. "index": copyjson.index,
  71901. "sheetIndex": copyjson.index
  71902. });
  71903. } else if (store_default.jfredo.length > 0) {
  71904. let jfredostr = store_default.jfredo[store_default.jfredo.length - 1];
  71905. if (jfredostr.type == "copySheet") {
  71906. jfredostr.index = copyjson.index;
  71907. jfredostr.sheetIndex = copyjson.index;
  71908. }
  71909. }
  71910. },
  71911. hasSheet: function(index2) {
  71912. if (index2 == null) {
  71913. return false;
  71914. }
  71915. index2 = this.getSheetIndex(index2);
  71916. if (index2 == null) {
  71917. return false;
  71918. } else {
  71919. return true;
  71920. }
  71921. },
  71922. createSheetbydata: function(data, isrenew, isBefore = true) {
  71923. let _this = this;
  71924. let colorset = "";
  71925. if (data.color != null) {
  71926. colorset = '<div class="luckysheet-sheets-item-color" style=" position: absolute; width: 100%; height: 3px; bottom: 0px; left: 0px; background-color: ' + data.color + ';"></div>';
  71927. }
  71928. $("#luckysheet-sheet-container-c").append(replaceHtml(sheetHTML, {"index": data.index, "active": "", "name": data.name, "order": data.order, "style": "", "colorset": colorset}));
  71929. if (isBefore) {
  71930. let previndex = data.order;
  71931. if (previndex >= store_default.luckysheetfile.length) {
  71932. previndex = store_default.luckysheetfile.length - 1;
  71933. $("#luckysheet-sheets-item" + data.index).insertAfter($("#luckysheet-sheets-item" + store_default.luckysheetfile[previndex].index));
  71934. } else {
  71935. $("#luckysheet-sheets-item" + data.index).insertBefore($("#luckysheet-sheets-item" + store_default.luckysheetfile[previndex].index));
  71936. }
  71937. }
  71938. store_default.luckysheetfile.push(data);
  71939. $("#luckysheet-sheet-area div.luckysheet-sheets-item").removeClass("luckysheet-sheets-item-active");
  71940. $("#luckysheet-sheets-item" + data.index).addClass("luckysheet-sheets-item-active");
  71941. $("#luckysheet-cell-main").append('<div id="luckysheet-datavisual-selection-set-' + data.index + '" class="luckysheet-datavisual-selection-set"></div>');
  71942. cleargridelement();
  71943. if (isrenew != null) {
  71944. server_default.saveParam("shre", null, {"reIndex": data.index});
  71945. data.hide = 0;
  71946. server_default.saveParam("sh", data.index, 0, {"op": "show", "cur": null});
  71947. } else {
  71948. server_default.saveParam("sha", null, data);
  71949. }
  71950. _this.changeSheetExec(data.index, data.isPivotTable, true);
  71951. _this.reOrderAllSheet();
  71952. },
  71953. deleteSheet: function(index2) {
  71954. let _this = this;
  71955. if (store_default.allowEdit === false) {
  71956. return;
  71957. }
  71958. let arrIndex = _this.getSheetIndex(index2);
  71959. const file = store_default.luckysheetfile[arrIndex];
  71960. if (!method_default.createHookFunction("sheetDeleteBefore", {sheet: file})) {
  71961. return;
  71962. }
  71963. _this.setSheetHide(index2, true);
  71964. $("#luckysheet-sheets-item" + index2).remove();
  71965. $("#luckysheet-datavisual-selection-set-" + index2).remove();
  71966. let removedsheet = store_default.luckysheetfile.splice(arrIndex, 1);
  71967. _this.reOrderAllSheet();
  71968. server_default.saveParam("shd", null, {"deleIndex": index2});
  71969. if (store_default.clearjfundo) {
  71970. removedsheet[0].type = "deleteSheet";
  71971. store_default.jfredo.push(removedsheet[0]);
  71972. }
  71973. method_default.createHookFunction("sheetDeleteAfter", {sheet: file});
  71974. },
  71975. nulldata: null,
  71976. getGridData: function(d) {
  71977. let ret = [];
  71978. for (let r2 = 0; r2 < d.length; r2++) {
  71979. for (let c2 = 0; c2 < d[0].length; c2++) {
  71980. if (d[r2][c2] == null) {
  71981. continue;
  71982. }
  71983. ret.push({r: r2, c: c2, v: d[r2][c2]});
  71984. }
  71985. }
  71986. return ret;
  71987. },
  71988. buildGridData: function(file) {
  71989. let row = file.row == null ? store_default.defaultrowNum : file.row, column = file.column == null ? store_default.defaultcolumnNum : file.column, data = file.data && file.data.length > 0 ? file.data : datagridgrowth([], row, column), celldata = file.celldata;
  71990. if (file.data && file.data.length > 0) {
  71991. for (let i2 = 0; i2 < data.length; i2++) {
  71992. for (let j = 0; j < data[0].length; j++) {
  71993. setcellvalue(i2, j, data, data[i2][j]);
  71994. }
  71995. }
  71996. } else {
  71997. if (celldata && celldata.length > 0) {
  71998. for (let i2 = 0; i2 < celldata.length; i2++) {
  71999. let item2 = celldata[i2];
  72000. let r2 = item2.r;
  72001. let c2 = item2.c;
  72002. let v = item2.v;
  72003. if (r2 >= data.length) {
  72004. data = datagridgrowth(data, r2 - data.length + 1, 0);
  72005. }
  72006. if (c2 >= data[0].length) {
  72007. data = datagridgrowth(data, 0, c2 - data[0].length + 1);
  72008. }
  72009. setcellvalue(r2, c2, data, v);
  72010. }
  72011. }
  72012. }
  72013. luckysheetConfigsetting_default.autoFormatw = false;
  72014. luckysheetConfigsetting_default.accuracy = void 0;
  72015. return data;
  72016. },
  72017. cutGridData: function(d) {
  72018. let rowindex = 0;
  72019. for (let r2 = d.length - 1; r2 >= 0; r2--) {
  72020. let isnull = true;
  72021. for (let c2 = 0; c2 < d[0].length; c2++) {
  72022. let value = getcellvalue(r2, c2);
  72023. if (value != null && $.trim(value).length > 0) {
  72024. isnull = false;
  72025. break;
  72026. }
  72027. }
  72028. if (!isnull) {
  72029. break;
  72030. } else {
  72031. rowindex = r2;
  72032. }
  72033. }
  72034. return d.slice(0, rowindex);
  72035. },
  72036. addGridData: function(celldata, row, column) {
  72037. let data = datagridgrowth([], row, column);
  72038. if (celldata != null) {
  72039. for (let i2 = 0; i2 < celldata.length; i2++) {
  72040. let item2 = celldata[i2];
  72041. let r2 = item2.r;
  72042. let c2 = item2.c;
  72043. let v = item2.v;
  72044. if (r2 >= data.length) {
  72045. data = datagridgrowth(data, r2 - data.length + 1, 0);
  72046. }
  72047. if (c2 >= data[0].length) {
  72048. data = datagridgrowth(data, 0, c2 - data[0].length + 1);
  72049. }
  72050. setcellvalue(r2, c2, data, v);
  72051. }
  72052. }
  72053. return data;
  72054. },
  72055. sheetParamRestore: function(file, data) {
  72056. store_default.luckysheet_select_save = file["luckysheet_select_save"];
  72057. if (store_default.luckysheet_select_save == null || store_default.luckysheet_select_save.length == 0) {
  72058. if (data[0] != null && data[0][0] != null && data[0][0].mc != null) {
  72059. store_default.luckysheet_select_save = [{
  72060. "row": [0, data[0][0].mc.rs - 1],
  72061. "column": [0, data[0][0].mc.cs - 1]
  72062. }];
  72063. } else {
  72064. store_default.luckysheet_select_save = [{
  72065. "row": [0, 0],
  72066. "column": [0, 0]
  72067. }];
  72068. }
  72069. }
  72070. store_default.luckysheet_selection_range = file["luckysheet_selection_range"] == null ? [] : file["luckysheet_selection_range"];
  72071. store_default.config = file["config"] == null ? {} : file["config"];
  72072. store_default.zoomRatio = file["zoomRatio"] == null ? 1 : file["zoomRatio"];
  72073. if (file["defaultRowHeight"] != null) {
  72074. store_default.defaultrowlen = parseFloat(file["defaultRowHeight"]);
  72075. } else {
  72076. store_default.defaultrowlen = luckysheetConfigsetting_default["defaultRowHeight"];
  72077. }
  72078. if (file["defaultColWidth"] != null) {
  72079. store_default.defaultcollen = parseFloat(file["defaultColWidth"]);
  72080. } else {
  72081. store_default.defaultcollen = luckysheetConfigsetting_default["defaultColWidth"];
  72082. }
  72083. if (file["showGridLines"] != null) {
  72084. let showGridLines2 = file["showGridLines"];
  72085. if (showGridLines2 == 0 || showGridLines2 == false) {
  72086. store_default.showGridLines = false;
  72087. } else {
  72088. store_default.showGridLines = true;
  72089. }
  72090. } else {
  72091. store_default.showGridLines = true;
  72092. }
  72093. },
  72094. initialjfFile: function(menu, title) {
  72095. let _this = this;
  72096. _this.getCurSheet();
  72097. let file = store_default.luckysheetfile[_this.getSheetIndex(store_default.currentSheetIndex)];
  72098. _this.nulldata = datagridgrowth([], store_default.defaultrowNum, store_default.defaultcolumnNum);
  72099. let data = _this.buildGridData(file);
  72100. let select_save = [];
  72101. file.jfgird_select_save = file.jfgird_select_save || [];
  72102. file.jfgird_select_save.forEach((item2) => select_save.push({"row": item2.row, "column": item2.column}));
  72103. file.luckysheet_select_save = select_save;
  72104. this.sheetParamRestore(file, data);
  72105. let r2 = store_default.luckysheet_select_save[0].row[1], c2 = store_default.luckysheet_select_save[0].column[1];
  72106. if (store_default.luckysheet_select_save.length > 1) {
  72107. for (let i2 = 0; i2 < store_default.luckysheet_select_save.length; i2++) {
  72108. if (store_default.luckysheet_select_save[i2].row[1] > r2) {
  72109. r2 = store_default.luckysheet_select_save[i2].row[1];
  72110. }
  72111. if (store_default.luckysheet_select_save[i2].column[1] > c2) {
  72112. c2 = store_default.luckysheet_select_save[i2].column[1];
  72113. }
  72114. }
  72115. }
  72116. menuButton_default.fontInitial(store_default.fontList);
  72117. file.data = data;
  72118. let rowheight = data.length;
  72119. if (r2 > rowheight - 1) {
  72120. rowheight = r2 + 1;
  72121. }
  72122. let colwidth = data[0].length;
  72123. if (c2 > colwidth - 1) {
  72124. colwidth = c2 + 1;
  72125. }
  72126. if (typeof luckysheetConfigsetting_default.beforeCreateDom == "function") {
  72127. luckysheetConfigsetting_default.beforeCreateDom(luckysheet);
  72128. }
  72129. if (typeof luckysheetConfigsetting_default.workbookCreateBefore == "function") {
  72130. luckysheetConfigsetting_default.workbookCreateBefore(luckysheet);
  72131. }
  72132. luckysheetcreatedom(colwidth, rowheight, data, menu, title);
  72133. setTimeout(function() {
  72134. tooltip_default.createHoverTip("#luckysheet_info_detail", ".luckysheet_info_detail_back, .luckysheet_info_detail_input, .luckysheet_info_detail_update");
  72135. tooltip_default.createHoverTip("#luckysheet-wa-editor", ".luckysheet-toolbar-menu-button, .luckysheet-toolbar-button, .luckysheet-toolbar-combo-button");
  72136. store_default.luckysheetTableContentHW = [
  72137. $("#luckysheet-cell-main").width() + store_default.rowHeaderWidth - store_default.cellMainSrollBarSize,
  72138. $("#luckysheet-cell-main").height() + store_default.columnHeaderHeight - store_default.cellMainSrollBarSize
  72139. ];
  72140. $("#luckysheetTableContent, #luckysheetTableContentF").attr({
  72141. width: Math.ceil(store_default.luckysheetTableContentHW[0] * store_default.devicePixelRatio),
  72142. height: Math.ceil(store_default.luckysheetTableContentHW[1] * store_default.devicePixelRatio)
  72143. }).css({
  72144. width: store_default.luckysheetTableContentHW[0],
  72145. height: store_default.luckysheetTableContentHW[1]
  72146. }).get(0).getContext("2d");
  72147. let locale_info = locale_default().info;
  72148. let key = server_default.gridKey;
  72149. let cahce_key = key + "__qkcache";
  72150. let ini = function() {
  72151. file["load"] = "1";
  72152. _this.createSheet();
  72153. let execF = function() {
  72154. _this.mergeCalculation(file["index"]);
  72155. _this.setSheetParam(false);
  72156. _this.storeSheetParam();
  72157. _this.restoreselect();
  72158. _this.CacheNotLoadControll = [];
  72159. _this.restoreCache();
  72160. formula_default.execFunctionGroupForce(luckysheetConfigsetting_default.forceCalculation);
  72161. _this.restoreSheetAll(store_default.currentSheetIndex);
  72162. $("#luckysheet_info_detail_save").html(locale_info.detailSave);
  72163. if (!!file.isPivotTable) {
  72164. store_default.luckysheetcurrentisPivotTable = true;
  72165. } else {
  72166. store_default.luckysheetcurrentisPivotTable = false;
  72167. $("#luckysheet-modal-dialog-slider-pivot").hide();
  72168. }
  72169. menuToolBarWidth();
  72170. luckysheetsizeauto();
  72171. if (file["scrollLeft"] != null && file["scrollLeft"] > 0) {
  72172. $("#luckysheet-scrollbar-x").scrollLeft(file["scrollLeft"]);
  72173. } else {
  72174. $("#luckysheet-scrollbar-x").scrollLeft(0);
  72175. }
  72176. if (file["scrollTop"] != null && file["scrollTop"] > 0) {
  72177. $("#luckysheet-scrollbar-y").scrollTop(file["scrollTop"]);
  72178. } else {
  72179. $("#luckysheet-scrollbar-y").scrollTop(0);
  72180. }
  72181. arrayRemoveItem(store_default.asyncLoad, "core");
  72182. if (luckysheetConfigsetting_default.pointEdit) {
  72183. setTimeout(function() {
  72184. store_default.loadingObj.close();
  72185. }, 0);
  72186. } else {
  72187. setTimeout(function() {
  72188. store_default.loadingObj.close();
  72189. }, 500);
  72190. }
  72191. };
  72192. let loadSheetUrl = server_default.loadSheetUrl;
  72193. if (loadSheetUrl == "") {
  72194. _this.loadOtherFile(file);
  72195. execF();
  72196. } else {
  72197. let sheetindexset = _this.checkLoadSheetIndex(file);
  72198. let sheetindex = [];
  72199. for (let i2 = 0; i2 < sheetindexset.length; i2++) {
  72200. let item2 = sheetindexset[i2];
  72201. if (item2 == file["index"]) {
  72202. continue;
  72203. }
  72204. sheetindex.push(item2);
  72205. }
  72206. if (sheetindex.length === 0) {
  72207. execF();
  72208. return;
  72209. }
  72210. $.post(loadSheetUrl, {"gridKey": server_default.gridKey, "index": sheetindex.join(",")}, function(d) {
  72211. let dataset = new Function("return " + d)();
  72212. for (let item2 in dataset) {
  72213. if (item2 == file["index"]) {
  72214. continue;
  72215. }
  72216. let otherfile = store_default.luckysheetfile[_this.getSheetIndex(item2)];
  72217. if (otherfile["load"] == null || otherfile["load"] == "0") {
  72218. otherfile.celldata = dataset[item2.toString()];
  72219. otherfile["data"] = _this.buildGridData(otherfile);
  72220. otherfile["load"] = "1";
  72221. }
  72222. }
  72223. execF();
  72224. });
  72225. }
  72226. };
  72227. try {
  72228. localforage.getItem(cahce_key).then(function(readValue) {
  72229. if (readValue != null) {
  72230. _this.CacheNotLoadControll = readValue;
  72231. }
  72232. server_default.clearcachelocaldata(function() {
  72233. ini();
  72234. });
  72235. });
  72236. } catch (e) {
  72237. ini();
  72238. console.log("\u7F13\u5B58\u64CD\u4F5C\u5931\u8D25");
  72239. }
  72240. }, 1);
  72241. },
  72242. storeSheetParam: function() {
  72243. let index2 = this.getSheetIndex(store_default.currentSheetIndex);
  72244. let file = store_default.luckysheetfile[index2];
  72245. file["config"] = store_default.config;
  72246. file["visibledatarow"] = store_default.visibledatarow;
  72247. file["visibledatacolumn"] = store_default.visibledatacolumn;
  72248. file["ch_width"] = store_default.ch_width;
  72249. file["rh_height"] = store_default.rh_height;
  72250. file["luckysheet_select_save"] = $.extend(true, [], store_default.luckysheet_select_save);
  72251. file["luckysheet_selection_range"] = $.extend(true, [], store_default.luckysheet_selection_range);
  72252. if ($("#luckysheet-scrollbar-x")[0].scrollWidth > $("#luckysheet-scrollbar-x")[0].offsetWidth) {
  72253. file["scrollLeft"] = $("#luckysheet-scrollbar-x").scrollLeft();
  72254. }
  72255. if ($("#luckysheet-scrollbar-y")[0].scrollHeight > $("#luckysheet-scrollbar-y")[0].offsetHeight) {
  72256. file["scrollTop"] = $("#luckysheet-scrollbar-y").scrollTop();
  72257. }
  72258. file["zoomRatio"] = store_default.zoomRatio;
  72259. },
  72260. setSheetParam: function(isload = true) {
  72261. let index2 = this.getSheetIndex(store_default.currentSheetIndex);
  72262. let file = store_default.luckysheetfile[index2];
  72263. store_default.flowdata = file["data"];
  72264. editor_default.webWorkerFlowDataCache(store_default.flowdata);
  72265. formula_default.execFunctionGlobalData = null;
  72266. window.luckysheet_getcelldata_cache = null;
  72267. this.sheetParamRestore(file, store_default.flowdata);
  72268. if (file["freezen"] == null) {
  72269. freezen_default.freezenhorizontaldata = null;
  72270. freezen_default.freezenverticaldata = null;
  72271. } else {
  72272. freezen_default.freezenhorizontaldata = file["freezen"].horizontal == null ? null : file["freezen"].horizontal.freezenhorizontaldata;
  72273. freezen_default.freezenverticaldata = file["freezen"].vertical == null ? null : file["freezen"].vertical.freezenverticaldata;
  72274. }
  72275. if (isload) {
  72276. rhchInit(store_default.flowdata.length, store_default.flowdata[0].length);
  72277. }
  72278. postil_default.buildAllPs(store_default.flowdata);
  72279. imageCtrl_default.currentImgId = null;
  72280. imageCtrl_default.images = file.images;
  72281. imageCtrl_default.allImagesShow();
  72282. imageCtrl_default.init();
  72283. dataVerificationCtrl_default.dataVerification = file.dataVerification;
  72284. dataVerificationCtrl_default.init();
  72285. hyperlinkCtrl_default.hyperlink = file.hyperlink;
  72286. hyperlinkCtrl_default.init();
  72287. createFilterOptions(file["filter_select"], file["filter"]);
  72288. },
  72289. restoreselect: function() {
  72290. let index2 = this.getSheetIndex(store_default.currentSheetIndex);
  72291. let file = store_default.luckysheetfile[index2];
  72292. selectHightlightShow(true);
  72293. selectionCopyShow();
  72294. if (file["scrollLeft"] != null && file["scrollLeft"] > 0) {
  72295. $("#luckysheet-scrollbar-x").scrollLeft(file["scrollLeft"]);
  72296. } else {
  72297. $("#luckysheet-scrollbar-x").scrollLeft(0);
  72298. }
  72299. if (file["scrollTop"] != null && file["scrollTop"] > 0) {
  72300. $("#luckysheet-scrollbar-y").scrollTop(file["scrollTop"]);
  72301. } else {
  72302. $("#luckysheet-scrollbar-y").scrollTop(0);
  72303. }
  72304. },
  72305. storeSheetParamALL: function() {
  72306. let _this = this;
  72307. _this.storeSheetParam();
  72308. let index2 = _this.getSheetIndex(store_default.currentSheetIndex);
  72309. store_default.luckysheetfile[index2]["data"] = store_default.flowdata;
  72310. store_default.luckysheetfile[index2]["config"] = $.extend(true, {}, store_default.config);
  72311. },
  72312. mergeCalculationSheet: {},
  72313. mergeCalculation: function(index2) {
  72314. let file = store_default.luckysheetfile[this.getSheetIndex(index2)];
  72315. let config = file.config, data = file.data;
  72316. if (config == null) {
  72317. return;
  72318. }
  72319. let mergeConfig = config.merge;
  72320. if (mergeConfig == null || index2 in this.mergeCalculationSheet || file["autoCalculationMerge"] === false) {
  72321. return;
  72322. }
  72323. this.mergeCalculationSheet[index2] = 1;
  72324. for (let x in mergeConfig) {
  72325. let r2 = parseInt(x.substr(0, x.indexOf("_")));
  72326. let c2 = parseInt(x.substr(x.indexOf("_") + 1));
  72327. let mcInfo = mergeConfig[x];
  72328. if (data[r2][c2] == null) {
  72329. data[r2][c2] = {};
  72330. }
  72331. data[r2][c2]["mc"] = {
  72332. r: r2,
  72333. c: c2,
  72334. rs: mcInfo.rs,
  72335. cs: mcInfo.cs
  72336. };
  72337. for (let ir = r2; ir < r2 + mcInfo.rs; ir++) {
  72338. for (let ic = c2; ic < c2 + mcInfo.cs; ic++) {
  72339. if (ir == r2 && ic == c2) {
  72340. continue;
  72341. }
  72342. if (data[ir][ic] == null) {
  72343. data[ir][ic] = {};
  72344. }
  72345. data[ir][ic]["mc"] = {
  72346. r: r2,
  72347. c: c2
  72348. };
  72349. }
  72350. }
  72351. }
  72352. },
  72353. loadOtherFile: function(file) {
  72354. let _this = this;
  72355. for (let i2 = 0; i2 < store_default.luckysheetfile.length; i2++) {
  72356. let otherfile = store_default.luckysheetfile[i2];
  72357. if (otherfile.index == file.index) {
  72358. continue;
  72359. }
  72360. if (otherfile["load"] == null || otherfile["load"] == "0") {
  72361. otherfile["data"] = _this.buildGridData(otherfile);
  72362. otherfile["load"] = "1";
  72363. }
  72364. }
  72365. },
  72366. changeSheet: function(index2, isPivotInitial2, isNewSheet, isCopySheet) {
  72367. if (isEditMode()) {
  72368. return;
  72369. }
  72370. let _this = this;
  72371. if (index2 == store_default.currentSheetIndex) {
  72372. return;
  72373. }
  72374. if (server_default.allowUpdate) {
  72375. $("#luckysheet-cell-main #luckysheet-multipleRange-show").empty();
  72376. server_default.multipleIndex = 0;
  72377. }
  72378. let file = store_default.luckysheetfile[_this.getSheetIndex(index2)];
  72379. if (isNewSheet) {
  72380. method_default.createHookFunction("sheetCreateAfter", {sheet: file});
  72381. }
  72382. if (isCopySheet) {
  72383. method_default.createHookFunction("sheetCopyAfter", {sheet: file});
  72384. }
  72385. method_default.createHookFunction("sheetActivate", index2, isPivotInitial2, isNewSheet);
  72386. $("#luckysheet-filter-selected-sheet" + store_default.currentSheetIndex + ", #luckysheet-filter-options-sheet" + store_default.currentSheetIndex).hide();
  72387. $("#luckysheet-filter-selected-sheet" + index2 + ", #luckysheet-filter-options-sheet" + index2).show();
  72388. _this.storeSheetParamALL();
  72389. _this.setCurSheet(index2);
  72390. if (!!file.isPivotTable) {
  72391. store_default.luckysheetcurrentisPivotTable = true;
  72392. if (!isPivotInitial2) {
  72393. pivotTable_default.changePivotTable(index2);
  72394. }
  72395. } else {
  72396. store_default.luckysheetcurrentisPivotTable = false;
  72397. $("#luckysheet-modal-dialog-slider-pivot").hide();
  72398. luckysheetsizeauto(false);
  72399. }
  72400. let load = file["load"];
  72401. if (load != null) {
  72402. let data = _this.buildGridData(file);
  72403. file.data = data;
  72404. _this.mergeCalculation(index2);
  72405. _this.setSheetParam(true);
  72406. _this.showSheet();
  72407. setTimeout(function() {
  72408. formula_default.execFunctionGroup();
  72409. luckysheetrefreshgrid();
  72410. server_default.saveParam("shs", null, store_default.currentSheetIndex);
  72411. }, 1);
  72412. } else {
  72413. let loadSheetUrl = server_default.loadSheetUrl;
  72414. if (loadSheetUrl == "" || store_default.luckysheetcurrentisPivotTable || !!isNewSheet) {
  72415. let data = _this.buildGridData(file);
  72416. file["data"] = data;
  72417. file["load"] = "1";
  72418. _this.mergeCalculation(index2);
  72419. _this.setSheetParam();
  72420. _this.showSheet();
  72421. setTimeout(function() {
  72422. _this.restoreCache();
  72423. formula_default.execFunctionGroupForce(luckysheetConfigsetting_default.forceCalculation);
  72424. _this.restoreSheetAll(store_default.currentSheetIndex);
  72425. luckysheetrefreshgrid();
  72426. }, 1);
  72427. server_default.saveParam("shs", null, store_default.currentSheetIndex);
  72428. } else {
  72429. $("#luckysheet-grid-window-1").append(luckysheetlodingHTML());
  72430. let sheetindex = _this.checkLoadSheetIndex(file);
  72431. $.post(loadSheetUrl, {"gridKey": server_default.gridKey, "index": sheetindex.join(",")}, function(d) {
  72432. let dataset = new Function("return " + d)();
  72433. file.celldata = dataset[index2.toString()];
  72434. let data = _this.buildGridData(file);
  72435. setTimeout(function() {
  72436. store_default.loadingObj.close();
  72437. }, 500);
  72438. for (let item2 in dataset) {
  72439. if (item2 == index2) {
  72440. continue;
  72441. }
  72442. let otherfile = store_default.luckysheetfile[_this.getSheetIndex(item2)];
  72443. if (otherfile["load"] == null || otherfile["load"] == "0") {
  72444. otherfile.celldata = dataset[item2.toString()];
  72445. otherfile["data"] = _this.buildGridData(otherfile);
  72446. otherfile["load"] = "1";
  72447. }
  72448. }
  72449. file["data"] = data;
  72450. file["load"] = "1";
  72451. _this.mergeCalculation(index2);
  72452. _this.setSheetParam();
  72453. _this.showSheet();
  72454. setTimeout(function() {
  72455. _this.restoreCache();
  72456. formula_default.execFunctionGroupForce(luckysheetConfigsetting_default.forceCalculation);
  72457. _this.restoreSheetAll(store_default.currentSheetIndex);
  72458. luckysheetrefreshgrid();
  72459. }, 1);
  72460. server_default.saveParam("shs", null, store_default.currentSheetIndex);
  72461. });
  72462. }
  72463. }
  72464. $("#luckysheet-cell-main .luckysheet-datavisual-selection-set").hide();
  72465. $("#luckysheet-datavisual-selection-set-" + index2).show();
  72466. renderChartShow(index2);
  72467. freezen_default.initialFreezen(index2);
  72468. _this.restoreselect();
  72469. },
  72470. checkLoadSheetIndexToDataIndex: {},
  72471. checkLoadSheetIndex: function(file) {
  72472. let calchain = formula_default.getAllFunctionGroup();
  72473. let chart2 = file.chart;
  72474. let pivotTable2 = file.pivotTable;
  72475. let ret = [], cache = {};
  72476. if (file.index in this.checkLoadSheetIndexToDataIndex) {
  72477. return [];
  72478. }
  72479. ret.push(file.index);
  72480. cache[file.index.toString()] = 1;
  72481. this.checkLoadSheetIndexToDataIndex[file.index] = 1;
  72482. if (calchain != null) {
  72483. let dataIndexList = {};
  72484. for (let i2 = 0; i2 < calchain.length; i2++) {
  72485. let f = calchain[i2];
  72486. let dataindex = f.index;
  72487. let formulaTxt = getcellFormula(f.r, f.c, dataindex);
  72488. if (formulaTxt == null) {
  72489. let file2 = store_default.luckysheetfile[this.getSheetIndex(dataindex)];
  72490. file2.data = this.buildGridData(file2);
  72491. formulaTxt = getcellFormula(f.r, f.c, dataindex);
  72492. if (formulaTxt == null) {
  72493. continue;
  72494. }
  72495. }
  72496. if (formulaTxt.indexOf("!") == -1) {
  72497. formula_default.addToSheetIndexList(formulaTxt, dataindex);
  72498. } else if (formula_default.formulaContainSheetList != null && formula_default.formulaContainSheetList[formulaTxt] != null) {
  72499. for (let dataSheetIndex in formula_default.formulaContainSheetList[formulaTxt]) {
  72500. dataIndexList[dataSheetIndex] = 1;
  72501. }
  72502. } else {
  72503. formula_default.functionParser(formulaTxt, (str) => {
  72504. formula_default.addToCellList(formulaTxt, str);
  72505. if (str.indexOf("!") > -1) {
  72506. let name2 = str.substr(0, str.indexOf("!"));
  72507. let sheet = this.getSheetByName(name2);
  72508. if (sheet != null) {
  72509. let dataSheetIndex = sheet.index;
  72510. dataIndexList[dataSheetIndex] = 1;
  72511. formula_default.addToSheetIndexList(formulaTxt, dataSheetIndex);
  72512. }
  72513. }
  72514. });
  72515. if (formula_default.formulaContainSheetList[formulaTxt] == null) {
  72516. formula_default.addToSheetIndexList(formulaTxt, dataindex);
  72517. }
  72518. }
  72519. if (dataindex == null) {
  72520. continue;
  72521. }
  72522. }
  72523. for (let index2 in dataIndexList) {
  72524. let dataindex = index2;
  72525. if (cache[dataindex.toString()] == null) {
  72526. ret.push(dataindex);
  72527. cache[dataindex.toString()] = 1;
  72528. this.checkLoadSheetIndexToDataIndex[dataindex] = 1;
  72529. }
  72530. }
  72531. }
  72532. if (chart2 != null) {
  72533. for (let i2 = 0; i2 < chart2.length; i2++) {
  72534. let cc = chart2[i2];
  72535. let dataindex = cc.dataSheetIndex;
  72536. if (dataindex == null) {
  72537. continue;
  72538. }
  72539. if (cache[dataindex.toString()] == null) {
  72540. ret.push(dataindex);
  72541. cache[dataindex.toString()] = 1;
  72542. }
  72543. }
  72544. }
  72545. if (pivotTable2 != null) {
  72546. let dataindex = pivotTable2.pivotDataSheetIndex;
  72547. if (dataindex != null && cache[dataindex.toString()] == null) {
  72548. ret.push(dataindex);
  72549. cache[dataindex.toString()] = 1;
  72550. }
  72551. }
  72552. return ret;
  72553. },
  72554. showSheet: function() {
  72555. $("#luckysheet-cell-flow_0").css({"width": store_default.ch_width, "top": "-1px"});
  72556. $("#luckysheet-sheettable_0").css({"width": store_default.ch_width - 1, "height": store_default.rh_height});
  72557. $("#luckysheetrowHeader_0").css("height", store_default.rh_height);
  72558. $("#luckysheet-cols-h-cells_0").css("width", store_default.ch_width);
  72559. $("#luckysheet-scrollbar-x div").width(store_default.ch_width);
  72560. $("#luckysheet-scrollbar-y div").height(store_default.rh_height + store_default.columnHeaderHeight - store_default.cellMainSrollBarSize - 3);
  72561. let index2 = this.getSheetIndex(store_default.currentSheetIndex);
  72562. let file = store_default.luckysheetfile[index2];
  72563. store_default.scrollRefreshSwitch = false;
  72564. if (file["scrollLeft"] != null && file["scrollLeft"] > 0) {
  72565. $("#luckysheet-scrollbar-x").scrollLeft(file["scrollLeft"] * store_default.zoomRatio);
  72566. } else {
  72567. $("#luckysheet-scrollbar-x").scrollLeft(0);
  72568. }
  72569. if (file["scrollTop"] != null && file["scrollTop"] > 0) {
  72570. $("#luckysheet-scrollbar-y").scrollTop(file["scrollTop"] * store_default.zoomRatio);
  72571. } else {
  72572. $("#luckysheet-scrollbar-y").scrollTop(0);
  72573. }
  72574. setTimeout(() => {
  72575. store_default.scrollRefreshSwitch = true;
  72576. }, 0);
  72577. zoomNumberDomBind(store_default.zoomRatio);
  72578. },
  72579. setCurSheet: function(index2) {
  72580. for (let i2 = 0; i2 < store_default.luckysheetfile.length; i2++) {
  72581. if (store_default.luckysheetfile[i2]["index"] == index2) {
  72582. store_default.luckysheetfile[i2].status = 1;
  72583. } else {
  72584. store_default.luckysheetfile[i2].status = 0;
  72585. }
  72586. }
  72587. store_default.currentSheetIndex = index2;
  72588. },
  72589. getSheetIndex: function(index2) {
  72590. for (let i2 = 0; i2 < store_default.luckysheetfile.length; i2++) {
  72591. if (store_default.luckysheetfile[i2]["index"] == index2) {
  72592. return i2;
  72593. }
  72594. }
  72595. return null;
  72596. },
  72597. changeSheetExec: function(index2, isPivotInitial2, isNewSheet, isCopySheet) {
  72598. let $sheet = $("#luckysheet-sheets-item" + index2);
  72599. window.luckysheet_getcelldata_cache = null;
  72600. $("#luckysheet-sheet-area div.luckysheet-sheets-item").removeClass("luckysheet-sheets-item-active");
  72601. $sheet.addClass("luckysheet-sheets-item-active").show();
  72602. cleargridelement();
  72603. this.changeSheet(index2, isPivotInitial2, isNewSheet, isCopySheet);
  72604. $("#luckysheet-sheet-list, #luckysheet-rightclick-sheet-menu").hide();
  72605. if (formula_default.rangestart) {
  72606. formula_default.createRangeHightlight();
  72607. }
  72608. this.sheetBarShowAndHide(index2);
  72609. },
  72610. sheetArrowShowAndHide() {
  72611. const $wrap = $("#luckysheet-sheet-container-c");
  72612. if (!$wrap.length)
  72613. return;
  72614. var sw = $wrap[0].scrollWidth;
  72615. var w = Math.ceil($wrap.width());
  72616. if (sw > w) {
  72617. if (luckysheetConfigsetting_default.showsheetbarConfig.sheet) {
  72618. $("#luckysheet-sheet-area .luckysheet-sheets-scroll").css("display", "inline-block");
  72619. $("#luckysheet-sheet-container .docs-sheet-fade-left").show();
  72620. }
  72621. } else {
  72622. $("#luckysheet-sheet-area .luckysheet-sheets-scroll").css("display", "none");
  72623. $("#luckysheet-sheet-container .docs-sheet-fade-left").hide();
  72624. }
  72625. },
  72626. sheetBarShowAndHide(index2) {
  72627. let $c = $("#luckysheet-sheet-container-c");
  72628. if (index2 != null) {
  72629. let $sheet = $("#luckysheet-sheets-item" + index2);
  72630. $c.scrollLeft($sheet.offset().left);
  72631. }
  72632. let c_width = $c.width(), c_srollwidth = $c[0].scrollWidth, scrollLeft = $c.scrollLeft();
  72633. if (scrollLeft <= 0) {
  72634. $("#luckysheet-sheet-container .docs-sheet-fade-left").hide();
  72635. } else {
  72636. $("#luckysheet-sheet-container .docs-sheet-fade-left").show();
  72637. }
  72638. if (c_width + scrollLeft >= c_srollwidth) {
  72639. $("#luckysheet-sheet-container .docs-sheet-fade-right").hide();
  72640. } else {
  72641. $("#luckysheet-sheet-container .docs-sheet-fade-right").show();
  72642. }
  72643. },
  72644. delChart: function(chart_id, sheetIndex) {
  72645. let index2 = this.getSheetIndex(sheetIndex);
  72646. let file = store_default.luckysheetfile[index2];
  72647. if (file.chart == null) {
  72648. file.chart = [];
  72649. } else {
  72650. for (let i2 = 0; i2 < file.chart.length; i2++) {
  72651. if (file.chart[i2].chart_id == chart_id) {
  72652. store_default.luckysheetfile[index2].chart.splice(i2, 1);
  72653. break;
  72654. }
  72655. }
  72656. }
  72657. },
  72658. saveChart: function(json2) {
  72659. let index2 = this.getSheetIndex(json2.sheetIndex);
  72660. let file = store_default.luckysheetfile[index2];
  72661. if (file.chart == null) {
  72662. file.chart = [];
  72663. file.chart.push(json2);
  72664. } else {
  72665. for (let i2 = 0; i2 < file.chart.length; i2++) {
  72666. if (file.chart[i2].chart_id == json2.chart_id) {
  72667. let old = $.extend(true, {}, file.chart[i2]);
  72668. file.chart[i2] = $.extend(true, {}, old, json2);
  72669. return;
  72670. }
  72671. }
  72672. file.chart.push(json2);
  72673. }
  72674. },
  72675. getChart: function(sheetIndex, chart_id) {
  72676. let index2 = this.getSheetIndex(sheetIndex);
  72677. let file = store_default.luckysheetfile[index2];
  72678. if (file.chart == null) {
  72679. return null;
  72680. } else {
  72681. for (let i2 = 0; i2 < file.chart.length; i2++) {
  72682. if (file.chart[i2].chart_id == chart_id) {
  72683. return file.chart[i2];
  72684. }
  72685. }
  72686. return null;
  72687. }
  72688. },
  72689. getRangetxt: function(sheetIndex, range2, currentIndex) {
  72690. let sheettxt = "";
  72691. if (currentIndex == null) {
  72692. currentIndex = store_default.currentSheetIndex;
  72693. }
  72694. if (sheetIndex != currentIndex) {
  72695. sheettxt = store_default.luckysheetfile[this.getSheetIndex(sheetIndex)].name + "!";
  72696. }
  72697. let row0 = range2["row"][0], row1 = range2["row"][1];
  72698. let column0 = range2["column"][0], column1 = range2["column"][1];
  72699. if (row0 == null && row1 == null) {
  72700. return sheettxt + chatatABC(column0) + ":" + chatatABC(column1);
  72701. } else if (column0 == null && column1 == null) {
  72702. return sheettxt + (row0 + 1) + ":" + (row1 + 1);
  72703. } else {
  72704. if (column0 == column1 && row0 == row1) {
  72705. return sheettxt + chatatABC(column0) + (row0 + 1);
  72706. } else {
  72707. return sheettxt + chatatABC(column0) + (row0 + 1) + ":" + chatatABC(column1) + (row1 + 1);
  72708. }
  72709. }
  72710. },
  72711. getSheetName: function(sheetIndex) {
  72712. if (sheetIndex == null) {
  72713. sheetIndex = store_default.currentSheetIndex;
  72714. }
  72715. return store_default.luckysheetfile[this.getSheetIndex(sheetIndex)].name;
  72716. },
  72717. getSheetMerge: function() {
  72718. if (store_default.config.merge == null) {
  72719. return null;
  72720. }
  72721. return store_default.config.merge;
  72722. },
  72723. getSheetData: function(sheetIndex) {
  72724. if (sheetIndex == null) {
  72725. sheetIndex = store_default.currentSheetIndex;
  72726. }
  72727. return store_default.luckysheetfile[this.getSheetIndex(sheetIndex)].data;
  72728. },
  72729. getSheetConfig: function(sheetIndex) {
  72730. let _this = this;
  72731. if (sheetIndex == null) {
  72732. sheetIndex = store_default.currentSheetIndex;
  72733. }
  72734. let config = store_default.luckysheetfile[_this.getSheetIndex(sheetIndex)].config;
  72735. if (config == null) {
  72736. store_default.luckysheetfile[_this.getSheetIndex(sheetIndex)].config = {};
  72737. }
  72738. return store_default.luckysheetfile[_this.getSheetIndex(sheetIndex)].config;
  72739. },
  72740. restoreFilter: function(sheetIndex) {
  72741. let index2 = this.getSheetIndex(sheetIndex);
  72742. let file = store_default.luckysheetfile[index2];
  72743. if (getObjType(file.filter_select) == "string") {
  72744. file.filter_select = JSON.parse(file.filter_select);
  72745. }
  72746. if (file.filter_select == null || file.filter_select.row == null || file.filter_select.column == null) {
  72747. return;
  72748. }
  72749. createFilterOptions(file.filter_select);
  72750. if (getObjType(file.filter) != "object") {
  72751. if (file.filter != null && getObjType(file.filter) == "string") {
  72752. file.filter = JSON.parse(file.filter);
  72753. }
  72754. }
  72755. let rowhidden = {};
  72756. if (file.config != null && file.config.rowhidden != null) {
  72757. rowhidden = file.config.rowhidden;
  72758. }
  72759. $("#luckysheet-filter-options-sheet" + sheetIndex + " .luckysheet-filter-options").each(function(i2) {
  72760. if (file.filter == null) {
  72761. return false;
  72762. }
  72763. let $top = $(this);
  72764. let item2 = file.filter[i2];
  72765. if (item2 == null) {
  72766. return true;
  72767. }
  72768. if (getObjType(item2) != "object") {
  72769. item2 = JSON.parse(item2);
  72770. }
  72771. labelFilterOptionState($top, item2.optionstate, item2.rowhidden, item2.caljs, false, item2.st_r, item2.ed_r, item2.cindex, item2.st_c, item2.ed_c);
  72772. rowhidden = $.extend(true, rowhidden, item2.rowhidden);
  72773. });
  72774. if (file.config == null) {
  72775. file.config = {};
  72776. }
  72777. file.config["rowhidden"] = rowhidden;
  72778. store_default.config = file.config;
  72779. jfrefreshgrid_rhcw(store_default.flowdata.length, store_default.flowdata[0].length, false);
  72780. },
  72781. restorePivot: function(sheetIndex) {
  72782. let index2 = this.getSheetIndex(sheetIndex);
  72783. let file = store_default.luckysheetfile[index2];
  72784. if (!file.isPivotTable) {
  72785. return;
  72786. }
  72787. pivotTable_default.getCellData(sheetIndex);
  72788. pivotTable_default.initialPivotManage(true);
  72789. pivotTable_default.refreshPivotTable(false);
  72790. },
  72791. restoreSheetAll: function(sheetIndex) {
  72792. let _this = this;
  72793. _this.restorePivot(sheetIndex);
  72794. _this.restoreFilter(sheetIndex);
  72795. _this.restoreFreezen(sheetIndex);
  72796. },
  72797. restoreFreezen: function(sheetIndex) {
  72798. freezen_default.initialFreezen(sheetIndex);
  72799. },
  72800. restoreCache: function() {
  72801. let _this = this;
  72802. let data = _this.CacheNotLoadControll;
  72803. _this.CacheNotLoadControll = [];
  72804. if (data.length == 0) {
  72805. return;
  72806. }
  72807. for (let i2 = 0; i2 < data.length; i2++) {
  72808. let item2 = data[i2];
  72809. _this.execCache(item2);
  72810. }
  72811. },
  72812. CacheNotLoadControll: [],
  72813. execCache: function(item2) {
  72814. let _this = this;
  72815. let type = item2.t;
  72816. let index2 = item2.i;
  72817. let value = item2.v;
  72818. let file = store_default.luckysheetfile[_this.getSheetIndex(index2)];
  72819. if (type == "sha") {
  72820. store_default.luckysheetfile.push(value);
  72821. } else if (type == "shc") {
  72822. let copyjson = $.extend(true, {}, store_default.luckysheetfile[_this.getSheetIndex(value.copyindex)]);
  72823. copyjson.index = index2;
  72824. store_default.luckysheetfile.push(copyjson);
  72825. } else if (type == "shd") {
  72826. store_default.luckysheetfile.splice(value.deleIndex, 1);
  72827. } else if (type == "shr") {
  72828. for (let pos in value) {
  72829. store_default.luckysheetfile[_this.getSheetIndex(pos)].order = value[pos];
  72830. }
  72831. }
  72832. if ((file == null || file.load != "1") && !(type in {"sha": 0, "shc": 0, "shd": 0, "shr": 0})) {
  72833. _this.CacheNotLoadControll.push(item2);
  72834. return;
  72835. }
  72836. if (type == "v") {
  72837. let r2 = item2.r, c2 = item2.c, v = item2.v;
  72838. let data = _this.getSheetData(index2);
  72839. file.data[r2][c2] = v;
  72840. } else if (type == "fc") {
  72841. let op = item2.op, pos = item2.pos;
  72842. if (getObjType(value) != "object") {
  72843. value = new Function("return " + value)();
  72844. }
  72845. let r2 = value.r, c2 = value.c;
  72846. if (op == "del") {
  72847. formula_default.delFunctionGroup(r2, c2, index2);
  72848. } else {
  72849. formula_default.insertUpdateFunctionGroup(r2, c2, index2);
  72850. }
  72851. } else if (type == "cg") {
  72852. let v = value, k = item2.k;
  72853. let config1 = _this.getSheetConfig(index2);
  72854. if (!(k in config1)) {
  72855. config1[k] = {};
  72856. }
  72857. for (let key in v) {
  72858. config1[k][key] = v[key];
  72859. }
  72860. store_default.config = config1;
  72861. } else if (type == "f") {
  72862. let v = value, op = item2.op, pos = item2.pos;
  72863. let filter = file.filter;
  72864. if (filter == null) {
  72865. filter = {};
  72866. }
  72867. if (op == "upOrAdd") {
  72868. filter[pos] = v;
  72869. } else if (op == "del") {
  72870. delete filter[pos];
  72871. }
  72872. } else if (type == "fsc") {
  72873. file.filter = null;
  72874. file.filter_select = null;
  72875. } else if (type == "fsr") {
  72876. let v = value;
  72877. file.filter = v.filter;
  72878. file.filter_select = v.filter_select;
  72879. } else if (type == "sh") {
  72880. let op = item2.op, cur = item2.cur, v = value;
  72881. if (op == "hide") {
  72882. file.status = 0;
  72883. store_default.luckysheetfile[_this.getSheetIndex(cur)].status = 1;
  72884. } else if (op == "show") {
  72885. for (let i2 = 0; i2 < store_default.luckysheetfile.length; i2++) {
  72886. store_default.luckysheetfile[i2].status = 0;
  72887. }
  72888. file.status = 1;
  72889. }
  72890. } else if (type == "all") {
  72891. let k = item2.k, s = item2.s;
  72892. if (s && getObjType(value) != "object") {
  72893. file[k] = JSON.stringify(value);
  72894. } else {
  72895. file[k] = value;
  72896. }
  72897. } else if (type == "c") {
  72898. let op = item2.op, cid = item2.cid;
  72899. if (op == "add") {
  72900. file.chart.push(value);
  72901. } else if (op == "xy" || op == "wh" || op == "update") {
  72902. for (let i2 = 0; i2 < file.chart.length; i2++) {
  72903. if (file.chart[i2].chart_id == cid) {
  72904. for (let item3 in file.chart[i2]) {
  72905. for (let vitem in value) {
  72906. if (item3 == vitem) {
  72907. file.chart[i2][item3] = value[vitem];
  72908. }
  72909. }
  72910. }
  72911. return;
  72912. }
  72913. }
  72914. } else if (op == "del") {
  72915. for (let i2 = 0; i2 < file.chart.length; i2++) {
  72916. if (file.chart[i2].chart_id == cid) {
  72917. file.chart.splice(i2, 1);
  72918. return;
  72919. }
  72920. }
  72921. }
  72922. } else if (type == "drc") {
  72923. let rc = item2.rc, index3 = value.index, len = value.len;
  72924. let celldata = file.celldata;
  72925. if (rc == "r") {
  72926. for (let i2 = 0; celldata.length == 0; i2++) {
  72927. let cell = celldata[i2];
  72928. if (cell.r >= index3 && cell.r < index3 + len) {
  72929. delete celldata[i2];
  72930. } else if (cell.r >= index3 + len) {
  72931. cell.r -= len;
  72932. }
  72933. }
  72934. file.row -= len;
  72935. } else {
  72936. for (let i2 = 0; celldata.length == 0; i2++) {
  72937. let cell = celldata[i2];
  72938. if (cell.c >= index3 && cell.c < index3 + len) {
  72939. delete celldata[i2];
  72940. } else if (cell.c >= index3 + len) {
  72941. cell.c -= len;
  72942. }
  72943. }
  72944. file.column -= len;
  72945. }
  72946. let ret = [];
  72947. for (let i2 = 0; i2 < celldata.length; i2++) {
  72948. if (celldata[i2] != null) {
  72949. ret.push(celldata[i2]);
  72950. }
  72951. }
  72952. file.celldata = ret;
  72953. let mtype, mst, med;
  72954. if (rc == "r") {
  72955. mtype = "row";
  72956. } else {
  72957. mtype = "column";
  72958. }
  72959. mst = index3;
  72960. med = index3 + len - 1;
  72961. luckysheetdeletetable(mtype, mst, med, true);
  72962. } else if (type == "arc") {
  72963. let rc = item2.rc, index3 = value.index, len = value.len;
  72964. let celldata = file.celldata;
  72965. if (rc == "r") {
  72966. for (let i2 = 0; i2 < celldata.length; i2++) {
  72967. let cell = celldata[i2];
  72968. if (cell.r > index3) {
  72969. cell.r += len;
  72970. }
  72971. }
  72972. file.row += len;
  72973. } else {
  72974. for (let i2 = 0; i2 < celldata.length; i2++) {
  72975. let cell = celldata[i2];
  72976. if (cell.c > index3) {
  72977. cell.c += len;
  72978. }
  72979. }
  72980. file.column += len;
  72981. }
  72982. let mtype;
  72983. if (rc == "r") {
  72984. mtype = "row";
  72985. } else {
  72986. mtype = "column";
  72987. }
  72988. luckysheetextendtable(mtype, index3, len, true);
  72989. } else if (type == "na") {
  72990. server_default.saveParam("na", null, value);
  72991. } else if (type == "thumb") {
  72992. setTimeout(function() {
  72993. _this.imageRequest();
  72994. }, 2e3);
  72995. }
  72996. }
  72997. };
  72998. sheetmanage_default = sheetmanage;
  72999. }
  73000. });
  73001. // src/global/formula.js
  73002. var luckysheetformula, formula_default;
  73003. var init_formula = __esm({
  73004. "src/global/formula.js"() {
  73005. init_util();
  73006. init_get();
  73007. init_set();
  73008. init_constant();
  73009. init_sheetmanage();
  73010. init_menuButton();
  73011. init_server();
  73012. init_freezen();
  73013. init_protection();
  73014. init_dataVerificationCtrl();
  73015. init_select();
  73016. init_validate();
  73017. init_datecontroll();
  73018. init_getRowlen();
  73019. init_getdata();
  73020. init_setdata();
  73021. init_format();
  73022. init_editor();
  73023. init_tooltip();
  73024. init_location();
  73025. init_cursorPos();
  73026. init_refresh();
  73027. init_inlineString();
  73028. init_func();
  73029. init_store();
  73030. init_locale();
  73031. init_json();
  73032. init_method();
  73033. luckysheetformula = {
  73034. error: {
  73035. v: "#VALUE!",
  73036. n: "#NAME?",
  73037. na: "#N/A",
  73038. r: "#REF!",
  73039. d: "#DIV/0!",
  73040. nm: "#NUM!",
  73041. nl: "#NULL!",
  73042. sp: "#SPILL!"
  73043. },
  73044. errorInfo: function(err) {
  73045. return err;
  73046. },
  73047. errorParamCheck: function(thisp, data, i2) {
  73048. let type, require2;
  73049. let _locale = locale_default();
  73050. let locale_formulaMore = _locale.formulaMore;
  73051. if (i2 < thisp.length) {
  73052. type = thisp[i2].type;
  73053. require2 = thisp[i2].require;
  73054. } else {
  73055. type = thisp[thisp.length - 1].type;
  73056. require2 = thisp[thisp.length - 1].require;
  73057. }
  73058. if (require2 == "o" && (data == null || data == "")) {
  73059. return [true, locale_formulaMore.tipSuccessText];
  73060. }
  73061. if (type.indexOf("all") > -1) {
  73062. return [true, locale_formulaMore.tipSuccessText];
  73063. } else {
  73064. if (type.indexOf("range") > -1 && (getObjType(data) == "object" || getObjType(data) == "array")) {
  73065. return [true, locale_formulaMore.tipSuccessText];
  73066. }
  73067. if (type.indexOf("number") > -1 && (isRealNum(data) || getObjType(data) == "boolean")) {
  73068. return [true, locale_formulaMore.tipSuccessText];
  73069. }
  73070. if (type.indexOf("string") > -1 && getObjType(data) == "string") {
  73071. return [true, locale_formulaMore.tipSuccessText];
  73072. }
  73073. if (type.indexOf("date") > -1 && isdatetime(data)) {
  73074. return [true, locale_formulaMore.tipSuccessText];
  73075. }
  73076. return [false, locale_formulaMore.tipParamErrorText];
  73077. }
  73078. },
  73079. getPureValueByData: function(data) {
  73080. if (data.length == 0) {
  73081. return [];
  73082. }
  73083. let output = [];
  73084. if (getObjType(data) == "array") {
  73085. if (getObjType(data[0]) == "array") {
  73086. for (let r2 = 0; r2 < data.length; r2++) {
  73087. let row = [];
  73088. for (let c2 = 0; c2 < data[0].length; c2++) {
  73089. let cell = data[r2][c2];
  73090. if (getObjType(cell) == "object") {
  73091. row.push(cell.v);
  73092. } else {
  73093. row.push(cell);
  73094. }
  73095. }
  73096. output.push(row);
  73097. }
  73098. } else {
  73099. for (let i2 = 0; i2 < data.length; i2++) {
  73100. let cell = data[i2];
  73101. if (getObjType(cell) == "object") {
  73102. output.push(cell.v);
  73103. } else {
  73104. output.push(cell);
  73105. }
  73106. }
  73107. }
  73108. } else {
  73109. let cell = data;
  73110. if (getObjType(cell) == "object") {
  73111. output.push(cell.v);
  73112. } else {
  73113. output.push(cell);
  73114. }
  73115. }
  73116. return output;
  73117. },
  73118. readCellDataToOneArray: function(rangeValue) {
  73119. let _this = this;
  73120. if (rangeValue == null) {
  73121. return [];
  73122. }
  73123. if (getObjType(rangeValue) != "object") {
  73124. return [rangeValue];
  73125. }
  73126. let dataformat = [];
  73127. let data = [];
  73128. if (rangeValue != null && rangeValue.data != null) {
  73129. data = rangeValue.data;
  73130. } else if (rangeValue != null && !isRealNull(rangeValue.v)) {
  73131. return [rangeValue.v];
  73132. } else {
  73133. return [];
  73134. }
  73135. if (getObjType(data) == "array") {
  73136. data = _this.getPureValueByData(data);
  73137. } else if (getObjType(data) == "object") {
  73138. data = data.v;
  73139. return [data];
  73140. } else {
  73141. if (/\{.*?\}/.test(data)) {
  73142. data = data.replace(/\{/g, "[").replace(/\}/g, "]");
  73143. }
  73144. data = new Function("return " + data)();
  73145. }
  73146. if (getObjType(data[0]) == "array") {
  73147. for (let i2 = 0; i2 < data.length; i2++) {
  73148. dataformat = dataformat.concat(data[i2]);
  73149. }
  73150. } else {
  73151. dataformat = data;
  73152. }
  73153. return dataformat;
  73154. },
  73155. getValueByFuncData: function(value, arg) {
  73156. if (value == null) {
  73157. return null;
  73158. }
  73159. let _this = this;
  73160. if (getObjType(value) == "array") {
  73161. if (arg == "avg") {
  73162. return luckysheet_function.AVERAGE.f.apply(luckysheet_function.AVERAGE, value);
  73163. } else if (arg == "sum") {
  73164. return luckysheet_function.SUM.f.apply(luckysheet_function.SUM, value);
  73165. } else {
  73166. if (getObjType(value[0]) == "object") {
  73167. return luckysheet.mask.getValueByFormat(value[0]);
  73168. } else {
  73169. return value[0];
  73170. }
  73171. }
  73172. } else if (getObjType(value) == "object") {
  73173. return luckysheet.mask.getValueByFormat(value);
  73174. } else {
  73175. return value;
  73176. }
  73177. },
  73178. sparklinesColorMap: function(args, len) {
  73179. let _this = this;
  73180. let colorLists = null;
  73181. if (len == null) {
  73182. len = 5;
  73183. }
  73184. let index2 = 0;
  73185. if (args.length > len) {
  73186. for (let i2 = len; i2 < args.length; i2++) {
  73187. let colorMap = args[i2];
  73188. let colorListArray = _this.readCellDataToOneArray(colorMap);
  73189. for (let a = 0; a < colorListArray.length; a++) {
  73190. let ca = colorListArray[a];
  73191. if (ca.indexOf(":") > -1) {
  73192. if (!colorLists) {
  73193. colorLists = {};
  73194. }
  73195. let calist = ca.split(":");
  73196. if (calist.length == 2) {
  73197. colorLists[calist[0]] = calist[1];
  73198. } else if (calist.length > 1) {
  73199. colorLists[calist[0] + ":" + calist[1]] = calist[2];
  73200. }
  73201. } else {
  73202. if (!colorLists) {
  73203. colorLists = [];
  73204. }
  73205. colorLists.push(ca);
  73206. }
  73207. }
  73208. index2++;
  73209. }
  73210. }
  73211. return colorLists;
  73212. },
  73213. colorList: ["#2ec7c9", "#fc5c5c", "#5ab1ef", "#ffb980", "#d87a80", "#8d98b3", "#e5cf0d", "#97b552", "#95706d", "#dc69aa", "#07a2a4", "#9a7fd1", "#588dd5", "#f5994e", "#c05050", "#59678c", "#c9ab00", "#7eb00a", "#6f5553", "#c14089"],
  73214. classlist: {
  73215. "province": {
  73216. 11: "\u5317\u4EAC",
  73217. 12: "\u5929\u6D25",
  73218. 13: "\u6CB3\u5317",
  73219. 14: "\u5C71\u897F",
  73220. 15: "\u5185\u8499\u53E4",
  73221. 21: "\u8FBD\u5B81",
  73222. 22: "\u5409\u6797",
  73223. 23: "\u9ED1\u9F99\u6C5F",
  73224. 31: "\u4E0A\u6D77",
  73225. 32: "\u6C5F\u82CF",
  73226. 33: "\u6D59\u6C5F",
  73227. 34: "\u5B89\u5FBD",
  73228. 35: "\u798F\u5EFA",
  73229. 36: "\u6C5F\u897F",
  73230. 37: "\u5C71\u4E1C",
  73231. 41: "\u6CB3\u5357",
  73232. 42: "\u6E56\u5317",
  73233. 43: "\u6E56\u5357",
  73234. 44: "\u5E7F\u4E1C",
  73235. 45: "\u5E7F\u897F",
  73236. 46: "\u6D77\u5357",
  73237. 50: "\u91CD\u5E86",
  73238. 51: "\u56DB\u5DDD",
  73239. 52: "\u8D35\u5DDE",
  73240. 53: "\u4E91\u5357",
  73241. 54: "\u897F\u85CF",
  73242. 61: "\u9655\u897F",
  73243. 62: "\u7518\u8083",
  73244. 63: "\u9752\u6D77",
  73245. 64: "\u5B81\u590F",
  73246. 65: "\u65B0\u7586",
  73247. 71: "\u53F0\u6E7E",
  73248. 81: "\u9999\u6E2F",
  73249. 82: "\u6FB3\u95E8",
  73250. 91: "\u56FD\u5916"
  73251. }
  73252. },
  73253. oldvalue: null,
  73254. dontupdate: function() {
  73255. let _this = this;
  73256. store_default.luckysheetCellUpdate.length = 0;
  73257. $("#luckysheet-functionbox-cell, #luckysheet-rich-text-editor").html(_this.oldvalue);
  73258. _this.cancelNormalSelected();
  73259. if (_this.rangetosheet != store_default.currentSheetIndex) {
  73260. sheetmanage_default.changeSheetExec(_this.rangetosheet);
  73261. }
  73262. },
  73263. xssDeal: function(str) {
  73264. if (typeof str !== "string")
  73265. return str;
  73266. return str.replace(/<script>/g, "&lt;script&gt;").replace(/<\/script>/, "&lt;/script&gt;");
  73267. },
  73268. ltGtSignDeal: function(str) {
  73269. if (typeof str !== "string")
  73270. return str;
  73271. if (str.substr(0, 5) === "<span" || str.startsWith("=")) {
  73272. return str;
  73273. }
  73274. return str.replace(/</g, "&lt;").replace(/>/g, "&gt;");
  73275. },
  73276. fucntionboxshow: function(r2, c2) {
  73277. if (!checkProtectionCellHidden(r2, c2, store_default.currentSheetIndex)) {
  73278. $("#luckysheet-functionbox-cell").html("");
  73279. return;
  73280. }
  73281. let _this = this;
  73282. let d = store_default.flowdata;
  73283. let value = "";
  73284. if (d[r2] != null && d[r2][c2] != null) {
  73285. let cell = $.extend(true, {}, d[r2][c2]);
  73286. if (isInlineStringCell(cell)) {
  73287. value = getInlineStringNoStyle(r2, c2);
  73288. } else if (cell.f != null) {
  73289. value = getcellvalue(r2, c2, d, "f");
  73290. } else {
  73291. value = valueShowEs(r2, c2, d);
  73292. }
  73293. }
  73294. value = this.xssDeal(value);
  73295. _this.oldvalue = value;
  73296. $("#luckysheet-functionbox-cell").html(value);
  73297. },
  73298. cellOffset: function(range2, rows, cols, height, width) {
  73299. let startCell = range2.startCell;
  73300. let rowl = range2.rowl;
  73301. let coll = range2.coll;
  73302. let startCellRow = parseInt(startCell.replace(/[^0-9]/g, ""));
  73303. let startCellCol = ABCatNum(startCell.replace(/[^A-Za-z]/g, ""));
  73304. let row = [], col = [], offsetRange;
  73305. row[0] = startCellRow + rows;
  73306. col[0] = startCellCol + cols;
  73307. row[1] = row[0] + height - 1;
  73308. col[1] = col[0] + width - 1;
  73309. col[0] = chatatABC(col[0]);
  73310. col[1] = chatatABC(col[1]);
  73311. let cellF = col[0] + row[0];
  73312. let cellL = col[1] + row[1];
  73313. if (cellF == cellL) {
  73314. offsetRange = range2.sheetName + "!" + cellF;
  73315. } else {
  73316. offsetRange = range2.sheetName + "!" + cellF + ":" + cellL;
  73317. }
  73318. return offsetRange;
  73319. },
  73320. parseDatetoNum: function(date) {
  73321. let _this = this;
  73322. if (typeof date == "object" && typeof date.v == "number") {
  73323. date = date.v;
  73324. } else if (isdatatype(date) == "num") {
  73325. date = parseFloat(date);
  73326. } else if (isdatatype(date) == "date") {
  73327. date = genarate(date)[2];
  73328. } else {
  73329. return _this.error.v;
  73330. }
  73331. return date;
  73332. },
  73333. getRangeArray: function(range2) {
  73334. let rangeNow = [];
  73335. let fmt = "General";
  73336. if (range2.length == 1) {
  73337. for (let c2 = 0; c2 < range2[0].length; c2++) {
  73338. if (range2[0][c2] != null && range2[0][c2].v) {
  73339. rangeNow.push(range2[0][c2].v);
  73340. let f = range2[0][c2].ct.fa;
  73341. fmt = fmt == "General" ? f : fmt;
  73342. } else {
  73343. rangeNow.push(null);
  73344. }
  73345. }
  73346. } else if (range2[0].length == 1) {
  73347. for (let r2 = 0; r2 < range2.length; r2++) {
  73348. if (range2[r2][0] != null && range2[r2][0].v) {
  73349. rangeNow.push(range2[r2][0].v);
  73350. let f = range2[r2][0].ct.fa;
  73351. fmt = fmt == "General" ? f : fmt;
  73352. } else {
  73353. rangeNow.push(null);
  73354. }
  73355. }
  73356. } else {
  73357. for (let r2 = 0; r2 < range2.length; r2++) {
  73358. for (let c2 = 0; c2 < range2[r2].length; c2++) {
  73359. if (range2[r2][c2] != null && range2[r2][c2].v) {
  73360. rangeNow.push(range2[r2][c2].v);
  73361. let f = range2[r2][c2].ct.fa;
  73362. fmt = fmt == "General" ? f : fmt;
  73363. } else {
  73364. rangeNow.push(null);
  73365. }
  73366. }
  73367. }
  73368. }
  73369. range2 = rangeNow;
  73370. return [range2, fmt];
  73371. },
  73372. getRangeArrayTwo: function(range2) {
  73373. let data = $.extend(true, [], range2);
  73374. if (data.length == 1) {
  73375. for (let c2 = 0; c2 < data[0].length; c2++) {
  73376. if (data[0][c2] instanceof Object) {
  73377. if (data[0][c2] != null && data[0][c2] instanceof Object && !!data[0][c2].m) {
  73378. data[0][c2] = data[0][c2].m;
  73379. } else {
  73380. if (data[0][c2] != null && data[0][c2] instanceof Object && !!data[0][c2].v) {
  73381. data[0][c2] = data[0][c2].v;
  73382. } else {
  73383. data[0][c2] = null;
  73384. }
  73385. }
  73386. }
  73387. }
  73388. } else if (data[0].length == 1) {
  73389. for (let r2 = 0; r2 < data.length; r2++) {
  73390. if (data[r2][0] instanceof Object) {
  73391. if (data[r2][0] != null && data[r2][0] instanceof Object && !!data[r2][0].m) {
  73392. data[r2][0] = data[r2][0].m;
  73393. } else {
  73394. if (data[r2][0] != null && data[r2][0] instanceof Object && !!data[r2][0].v) {
  73395. data[r2][0] = data[r2][0].v;
  73396. } else {
  73397. data[r2][0] = null;
  73398. }
  73399. }
  73400. }
  73401. }
  73402. } else {
  73403. for (let r2 = 0; r2 < data.length; r2++) {
  73404. for (let c2 = 0; c2 < data[r2].length; c2++) {
  73405. if (data[r2][c2] instanceof Object) {
  73406. if (data[r2][c2] != null && data[r2][c2] instanceof Object && !!data[r2][c2].m) {
  73407. data[r2][c2] = data[r2][c2].m;
  73408. } else {
  73409. if (data[r2][c2] != null && data[r2][c2] instanceof Object && !!data[r2][c2].v) {
  73410. data[r2][c2] = data[r2][c2].v;
  73411. } else {
  73412. data[r2][c2] = null;
  73413. }
  73414. }
  73415. }
  73416. }
  73417. }
  73418. }
  73419. return data;
  73420. },
  73421. isWildcard: function(a, b) {
  73422. let _this = this;
  73423. a = a.toString();
  73424. b = b.toString();
  73425. if (_this.isCompareOperator(b).flag) {
  73426. b = _this.isCompareOperator(b).num;
  73427. }
  73428. let str = "";
  73429. for (let i2 = 0; i2 < b.length; i2++) {
  73430. let v = b.charAt(i2);
  73431. if (v == "*") {
  73432. str += ".*";
  73433. } else if (v == "?") {
  73434. str += ".";
  73435. } else if (v == "~") {
  73436. if (b.charAt(i2 + 1) == "*") {
  73437. str += "\\*";
  73438. i2++;
  73439. } else if (b.charAt(i2 + 1) == "?") {
  73440. str += "\\?";
  73441. i2++;
  73442. } else {
  73443. str += "~";
  73444. }
  73445. } else {
  73446. str += v;
  73447. }
  73448. }
  73449. let reg = new RegExp("^" + str + "$", "g");
  73450. return !!a.match(reg);
  73451. },
  73452. isCompareOperator: function(str) {
  73453. str = str.toString();
  73454. let ope = "";
  73455. let num = "";
  73456. let strOne = str.substr(0, 1);
  73457. let strTwo = str.substr(1, 1);
  73458. let flag = false;
  73459. let ret;
  73460. if (strOne == ">") {
  73461. if (strTwo == "=") {
  73462. ope = str.substr(0, 2);
  73463. num = str.substr(2);
  73464. flag = true;
  73465. } else if (strTwo != "=") {
  73466. ope = str.substr(0, 1);
  73467. num = str.substr(1);
  73468. flag = true;
  73469. }
  73470. } else if (strOne == "<") {
  73471. if (strTwo == "=" || strTwo == ">") {
  73472. ope = str.substr(0, 2);
  73473. num = str.substr(2);
  73474. flag = true;
  73475. } else if (strTwo != "=" && strTwo != ">") {
  73476. ope = str.substr(0, 1);
  73477. num = str.substr(1);
  73478. flag = true;
  73479. }
  73480. } else if (strOne == "=" && strTwo != "=") {
  73481. ope = str.substr(0, 1);
  73482. num = str.substr(1);
  73483. flag = true;
  73484. }
  73485. ret = {"flag": flag, "ope": ope, "num": num};
  73486. return ret;
  73487. },
  73488. acompareb: function(a, b) {
  73489. let _this = this;
  73490. let flag = false;
  73491. if (isRealNum(b)) {
  73492. flag = luckysheet_compareWith(a, "==", b);
  73493. } else if (typeof b == "string") {
  73494. if (b.indexOf("*") != -1 || b.indexOf("?") != -1) {
  73495. return _this.isWildcard(a, b);
  73496. } else if (_this.isCompareOperator(b).flag) {
  73497. let ope = _this.isCompareOperator(b).ope;
  73498. let num = _this.isCompareOperator(b).num;
  73499. flag = luckysheet_compareWith(a, ope, num);
  73500. } else {
  73501. flag = luckysheet_compareWith(a, "==", b);
  73502. }
  73503. }
  73504. return flag;
  73505. },
  73506. compareParams: function(fp, sp, sym) {
  73507. let flag = false;
  73508. let classNameA = toString.call(fp), classNameB = toString.call(sp);
  73509. if (sym == ">" && fp > sp) {
  73510. flag = true;
  73511. } else if (sym == ">=" && fp >= sp) {
  73512. flag = true;
  73513. } else if (sym == "<" && fp < sp) {
  73514. flag = true;
  73515. } else if (sym == "<=" && fp <= sp) {
  73516. flag = true;
  73517. } else if (sym == "=" && fp == sp) {
  73518. flag = true;
  73519. } else if (sym == "<>" && fp != sp) {
  73520. flag = true;
  73521. }
  73522. if (classNameA == "[object Object]" && classNameB == "[object Object]") {
  73523. let propsA = Object.getOwnPropertyNames(fp), propsB = Object.getOwnPropertyNames(sp);
  73524. if (propsA.length != propsB.length) {
  73525. return false;
  73526. }
  73527. for (let i2 = 0; i2 < propsA.length; i2++) {
  73528. let propName = propsA[i2];
  73529. if (fp[propName] !== sp[propName]) {
  73530. return false;
  73531. }
  73532. }
  73533. return true;
  73534. }
  73535. if (classNameA == "[object Array]" && classNameB == "[object Array]") {
  73536. if (fp.toString() == sp.toString()) {
  73537. return true;
  73538. }
  73539. return false;
  73540. }
  73541. return flag;
  73542. },
  73543. parseDecimal: function(num) {
  73544. num = parseFloat(num);
  73545. let d = parseInt(num, 10);
  73546. if (d == 0) {
  73547. return num;
  73548. }
  73549. num = num % d;
  73550. return num;
  73551. },
  73552. getcellrange: function(txt, formulaIndex) {
  73553. if (txt == null || txt.length == 0) {
  73554. return;
  73555. }
  73556. let sheettxt = "", rangetxt = "", sheetIndex = null, sheetdata = null;
  73557. let luckysheetfile = getluckysheetfile();
  73558. if (txt.indexOf("!") > -1) {
  73559. if (txt in this.cellTextToIndexList) {
  73560. return this.cellTextToIndexList[txt];
  73561. }
  73562. let val = txt.split("!");
  73563. sheettxt = val[0];
  73564. rangetxt = val[1];
  73565. sheettxt = sheettxt.replace(/\\'/g, "'").replace(/''/g, "'");
  73566. if (sheettxt.substr(0, 1) == "'" && sheettxt.substr(sheettxt.length - 1, 1) == "'") {
  73567. sheettxt = sheettxt.substring(1, sheettxt.length - 1);
  73568. }
  73569. for (let i2 in luckysheetfile) {
  73570. if (sheettxt == luckysheetfile[i2].name) {
  73571. sheetIndex = luckysheetfile[i2].index;
  73572. sheetdata = luckysheetfile[i2].data;
  73573. break;
  73574. }
  73575. }
  73576. } else {
  73577. let i2 = formulaIndex;
  73578. if (i2 == null) {
  73579. i2 = store_default.currentSheetIndex;
  73580. }
  73581. if (txt + "_" + i2 in this.cellTextToIndexList) {
  73582. return this.cellTextToIndexList[txt + "_" + i2];
  73583. }
  73584. let index2 = getSheetIndex(i2);
  73585. sheettxt = luckysheetfile[index2].name;
  73586. sheetIndex = luckysheetfile[index2].index;
  73587. sheetdata = store_default.flowdata;
  73588. rangetxt = txt;
  73589. }
  73590. if (rangetxt.indexOf(":") == -1) {
  73591. let row = parseInt(rangetxt.replace(/[^0-9]/g, "")) - 1;
  73592. let col = ABCatNum(rangetxt.replace(/[^A-Za-z]/g, ""));
  73593. if (!isNaN(row) && !isNaN(col)) {
  73594. let item2 = {
  73595. "row": [row, row],
  73596. "column": [col, col],
  73597. "sheetIndex": sheetIndex
  73598. };
  73599. this.addToCellIndexList(txt, item2);
  73600. return item2;
  73601. } else {
  73602. return null;
  73603. }
  73604. } else {
  73605. rangetxt = rangetxt.split(":");
  73606. let row = [], col = [];
  73607. row[0] = parseInt(rangetxt[0].replace(/[^0-9]/g, "")) - 1;
  73608. row[1] = parseInt(rangetxt[1].replace(/[^0-9]/g, "")) - 1;
  73609. if (isNaN(row[0])) {
  73610. row[0] = 0;
  73611. }
  73612. if (isNaN(row[1])) {
  73613. row[1] = sheetdata.length - 1;
  73614. }
  73615. if (row[0] > row[1]) {
  73616. return null;
  73617. }
  73618. col[0] = ABCatNum(rangetxt[0].replace(/[^A-Za-z]/g, ""));
  73619. col[1] = ABCatNum(rangetxt[1].replace(/[^A-Za-z]/g, ""));
  73620. if (isNaN(col[0])) {
  73621. col[0] = 0;
  73622. }
  73623. if (isNaN(col[1])) {
  73624. col[1] = sheetdata[0].length - 1;
  73625. }
  73626. if (col[0] > col[1]) {
  73627. return null;
  73628. }
  73629. let item2 = {
  73630. "row": row,
  73631. "column": col,
  73632. "sheetIndex": sheetIndex
  73633. };
  73634. this.addToCellIndexList(txt, item2);
  73635. return item2;
  73636. }
  73637. },
  73638. rangeHightlightHTML: '<div id="luckysheet-formula-functionrange-highlight-${id}" rangeindex="${id}" class="luckysheet-selection-highlight luckysheet-formula-functionrange-highlight"><div data-type="top" class="luckysheet-selection-copy-top luckysheet-copy"></div><div data-type="right" class="luckysheet-selection-copy-right luckysheet-copy"></div><div data-type="bottom" class="luckysheet-selection-copy-bottom luckysheet-copy"></div><div data-type="left" class="luckysheet-selection-copy-left luckysheet-copy"></div><div class="luckysheet-selection-copy-hc"></div><div data-type="lt" class="luckysheet-selection-highlight-topleft luckysheet-highlight"></div><div data-type="rt" class="luckysheet-selection-highlight-topright luckysheet-highlight"></div><div data-type="lb" class="luckysheet-selection-highlight-bottomleft luckysheet-highlight"></div><div data-type="rb" class="luckysheet-selection-highlight-bottomright luckysheet-highlight"></div></div>',
  73639. createRangeHightlight: function() {
  73640. let _this = this;
  73641. let $span = $("#luckysheet-rich-text-editor").find("span.luckysheet-formula-functionrange-cell");
  73642. $("#luckysheet-formula-functionrange .luckysheet-formula-functionrange-highlight").remove();
  73643. $span.each(function() {
  73644. let rangeindex = $(this).attr("rangeindex"), range2 = $(this).text();
  73645. $("#luckysheet-formula-functionrange").append(replaceHtml(_this.rangeHightlightHTML, {
  73646. "id": rangeindex
  73647. }));
  73648. let cellrange = _this.getcellrange(range2);
  73649. let rangeid = "luckysheet-formula-functionrange-highlight-" + rangeindex;
  73650. if (cellrange == null) {
  73651. } else if (cellrange.sheetIndex == store_default.currentSheetIndex || cellrange.sheetIndex == -1 && _this.rangetosheet == store_default.currentSheetIndex) {
  73652. $("#" + rangeid).data("range", cellrange).find(".luckysheet-copy").css({"background": luckyColor[rangeindex]}).end().find(".luckysheet-highlight").css({"background": luckyColor[rangeindex]}).end().find(".luckysheet-selection-copy-hc").css({"background": luckyColor[rangeindex]});
  73653. seletedHighlistByindex(rangeid, cellrange.row[0], cellrange.row[1], cellrange.column[0], cellrange.column[1]);
  73654. }
  73655. });
  73656. $("#luckysheet-formula-functionrange .luckysheet-formula-functionrange-highlight").show();
  73657. },
  73658. searchHTML: '<div id="luckysheet-formula-search-c" class="luckysheet-formula-search-c"></div>',
  73659. helpHTML: '<div id="luckysheet-formula-help-c" class="luckysheet-formula-help-c"> <div class="luckysheet-formula-help-close" title="${helpClose}"><i class="fa fa-times" aria-hidden="true"></i></div> <div class="luckysheet-formula-help-collapse" title="${helpCollapse}"><i class="fa fa-angle-up" aria-hidden="true"></i></div> <div class="luckysheet-formula-help-title"><div class="luckysheet-formula-help-title-formula"> <span class="luckysheet-arguments-help-function-name">SUM</span> <span class="luckysheet-arguments-paren">(</span> <span class="luckysheet-arguments-parameter-holder"> <span class="luckysheet-arguments-help-parameter luckysheet-arguments-help-parameter-active" dir="auto">A2:A100</span>, <span class="luckysheet-arguments-help-parameter" dir="auto">101</span> </span> <span class="luckysheet-arguments-paren">)</span> </div></div> <div class="luckysheet-formula-help-content"> <div class="luckysheet-formula-help-content-example"> <div class="luckysheet-arguments-help-section-title">${helpExample}</div> <div class="luckysheet-arguments-help-formula"> <span class="luckysheet-arguments-help-function-name">SUM</span> <span class="luckysheet-arguments-paren">(</span> <span class="luckysheet-arguments-parameter-holder"> <span class="luckysheet-arguments-help-parameter luckysheet-arguments-help-parameter-active" dir="auto">A2:A100</span>, <span class="luckysheet-arguments-help-parameter" dir="auto">101</span> </span> <span class="luckysheet-arguments-paren">)</span> </div> </div> <div class="luckysheet-formula-help-content-detail"> <div class="luckysheet-arguments-help-section"> <div class="luckysheet-arguments-help-section-title luckysheet-arguments-help-parameter-name">${helpAbstract}</div> <span class="luckysheet-arguments-help-parameter-content">${helpAbstract}</span> </div> </div> <div class="luckysheet-formula-help-content-param"> ${param} </div> </div> <div class="luckysheet-formula-help-foot"></div></div>',
  73660. getrangeseleciton: function() {
  73661. let currSelection = window.getSelection();
  73662. let anchor = $(currSelection.anchorNode);
  73663. let anchorOffset = currSelection.anchorOffset;
  73664. if (anchor.parent().is("span") && anchorOffset != 0) {
  73665. let txt = $.trim(anchor.text()), lasttxt = "";
  73666. if (txt.length == 0 && anchor.parent().prev().length > 0) {
  73667. let ahr = anchor.parent().prev();
  73668. txt = $.trim(ahr.text());
  73669. lasttxt = txt.substr(txt.length - 1, 1);
  73670. return ahr;
  73671. } else {
  73672. lasttxt = txt.substr(anchorOffset - 1, 1);
  73673. return anchor.parent();
  73674. }
  73675. } else if (anchor.is("#luckysheet-rich-text-editor") || anchor.is("#luckysheet-functionbox-cell")) {
  73676. let txt = $.trim(anchor.find("span").last().text());
  73677. if (txt.length == 0 && anchor.find("span").length > 1) {
  73678. let ahr = anchor.find("span");
  73679. txt = $.trim(ahr.eq(ahr.length - 2).text());
  73680. return ahr;
  73681. } else {
  73682. return anchor.find("span").last();
  73683. }
  73684. } else if (anchor.parent().is("#luckysheet-rich-text-editor") || anchor.parent().is("#luckysheet-functionbox-cell") || anchorOffset == 0) {
  73685. if (anchorOffset == 0) {
  73686. anchor = anchor.parent();
  73687. }
  73688. if (anchor.prev().length > 0) {
  73689. let txt = $.trim(anchor.prev().text());
  73690. let lasttxt = txt.substr(txt.length - 1, 1);
  73691. return anchor.prev();
  73692. }
  73693. }
  73694. return null;
  73695. },
  73696. searchFunctionPosition: function($menu, $editor, x, y, isparam) {
  73697. let winH = $(window).height(), winW = $(window).width();
  73698. let menuW = $menu.outerWidth(), menuH = $menu.outerHeight();
  73699. if (isparam == null) {
  73700. isparam = false;
  73701. }
  73702. let left = x;
  73703. if (x + menuW > winW) {
  73704. left = x - menuW + $editor.outerWidth();
  73705. } else {
  73706. left = x;
  73707. }
  73708. let top = y;
  73709. if (y + menuH > winH) {
  73710. top = y - menuH;
  73711. } else {
  73712. top = y + $editor.outerHeight();
  73713. if (!isparam) {
  73714. $menu.html($menu.find(".luckysheet-formula-search-item").get().reverse());
  73715. }
  73716. }
  73717. if (top < 0) {
  73718. top = 0;
  73719. }
  73720. if (left < 0) {
  73721. left = 0;
  73722. }
  73723. $menu.css({
  73724. "top": top,
  73725. "left": left
  73726. }).show();
  73727. },
  73728. searchFunctionCell: null,
  73729. searchFunction: function($editer) {
  73730. let _this = this;
  73731. let functionlist2 = store_default.functionlist;
  73732. let $cell = _this.getrangeseleciton();
  73733. _this.searchFunctionCell = $cell;
  73734. if ($cell == null || $editer == null) {
  73735. return;
  73736. }
  73737. let inputContent = $editer.text();
  73738. let searchtxt = $cell.text().toUpperCase();
  73739. let reg = /^[a-zA-Z]|[a-zA-Z_]+$/;
  73740. if (!reg.test(searchtxt) || inputContent.substr(0, 1) != "=") {
  73741. return;
  73742. }
  73743. let result = {
  73744. "f": [],
  73745. "s": [],
  73746. "t": []
  73747. }, result_i = 0;
  73748. for (let i2 = 0; i2 < functionlist2.length; i2++) {
  73749. let item2 = functionlist2[i2], n = item2.n;
  73750. if (n == searchtxt) {
  73751. result.f.unshift(item2);
  73752. result_i++;
  73753. } else if (n.substr(0, searchtxt.length) == searchtxt) {
  73754. result.s.unshift(item2);
  73755. result_i++;
  73756. } else if (n.indexOf(searchtxt) > -1) {
  73757. result.t.unshift(item2);
  73758. result_i++;
  73759. }
  73760. if (result_i >= 10) {
  73761. break;
  73762. }
  73763. }
  73764. let list = result.t.concat(result.s.concat(result.f));
  73765. if (list.length <= 0) {
  73766. return;
  73767. }
  73768. let listHTML = _this.searchFunctionHTML(list);
  73769. $("#luckysheet-formula-search-c").html(listHTML).show();
  73770. $("#luckysheet-formula-help-c").hide();
  73771. let $c = $editer.parent(), offset = $c.offset();
  73772. _this.searchFunctionPosition($("#luckysheet-formula-search-c"), $c, offset.left, offset.top);
  73773. },
  73774. searchFunctionEnter: function($obj) {
  73775. let _this = this;
  73776. let functxt = $obj.data("func");
  73777. _this.searchFunctionCell.text(functxt).after('<span dir="auto" class="luckysheet-formula-text-color">(</span>');
  73778. _this.setCaretPosition(_this.searchFunctionCell.next().get(0), 0, 1);
  73779. $("#luckysheet-formula-search-c").hide();
  73780. _this.helpFunctionExe(_this.searchFunctionCell.closest("div"), _this.searchFunctionCell.next());
  73781. },
  73782. searchFunctionHTML: function(list) {
  73783. let _this = this;
  73784. if ($("#luckysheet-formula-search-c").length == 0) {
  73785. $("body").append(_this.searchHTML);
  73786. $("#luckysheet-formula-search-c").on("mouseover", ".luckysheet-formula-search-item", function() {
  73787. $("#luckysheet-formula-search-c").find(".luckysheet-formula-search-item").removeClass("luckysheet-formula-search-item-active");
  73788. $(this).addClass("luckysheet-formula-search-item-active");
  73789. }).on("mouseout", ".luckysheet-formula-search-item", function() {
  73790. }).on("click", ".luckysheet-formula-search-item", function() {
  73791. if (_this.searchFunctionCell == null) {
  73792. return;
  73793. }
  73794. _this.searchFunctionEnter($(this));
  73795. });
  73796. }
  73797. let itemHTML = '<div data-func="${n}" class="luckysheet-formula-search-item ${class}"><div class="luckysheet-formula-search-func">${n}</div><div class="luckysheet-formula-search-detail">${a}</div></div>';
  73798. let retHTML = "";
  73799. for (let i2 = 0; i2 < list.length; i2++) {
  73800. let item2 = list[i2];
  73801. if (i2 == list.length - 1) {
  73802. retHTML += replaceHtml(itemHTML, {
  73803. "class": "luckysheet-formula-search-item-active",
  73804. "n": item2.n,
  73805. "a": item2.a
  73806. });
  73807. } else {
  73808. retHTML += replaceHtml(itemHTML, {
  73809. "class": "",
  73810. "n": item2.n,
  73811. "a": item2.a
  73812. });
  73813. }
  73814. }
  73815. return retHTML;
  73816. },
  73817. functionlistPosition: {},
  73818. helpFunction: function($editer, funcname, paramIndex) {
  73819. let _this = this;
  73820. let functionlist2 = store_default.functionlist;
  73821. let $func = functionlist2[_this.functionlistPosition[$.trim(funcname).toUpperCase()]];
  73822. if ($func == null) {
  73823. return;
  73824. }
  73825. let _locale = locale_default();
  73826. let locale_formulaMore = _locale.formulaMore;
  73827. $("#luckysheet-formula-help-c .luckysheet-arguments-help-function-name").html($func.n);
  73828. $("#luckysheet-formula-help-c .luckysheet-arguments-help-parameter-content").html($func.d);
  73829. let helpformula = '<span class="luckysheet-arguments-help-function-name">${name}</span> <span class="luckysheet-arguments-paren">(</span> <span class="luckysheet-arguments-parameter-holder"> ${param} </span> <span class="luckysheet-arguments-paren">)</span>';
  73830. let helpformulaItem = '<span class="luckysheet-arguments-help-parameter" dir="auto">${param}</span>';
  73831. let helpformulaArg = '<div class="luckysheet-arguments-help-section"><div class="luckysheet-arguments-help-section-title">${param}</div><span class="luckysheet-arguments-help-parameter-content">${content}</span></div>';
  73832. let fht = "", ahf = "", fhcp = "";
  73833. for (let i2 = 0; i2 < $func.p.length; i2++) {
  73834. let paramitem = $func.p[i2];
  73835. let name2 = paramitem.name, nameli = paramitem.name;
  73836. if (paramitem.repeat == "y") {
  73837. name2 += ", ...";
  73838. nameli += '<span class="luckysheet-arguments-help-argument-info">...-' + locale_formulaMore.allowRepeatText + "</span>";
  73839. }
  73840. if (paramitem.require == "o") {
  73841. name2 = "[" + name2 + "]";
  73842. nameli += '<span class="luckysheet-arguments-help-argument-info">-[' + locale_formulaMore.allowOptionText + "]</span>";
  73843. }
  73844. fht += '<span class="luckysheet-arguments-help-parameter" dir="auto">' + name2 + "</span>, ";
  73845. ahf += '<span class="luckysheet-arguments-help-parameter" dir="auto">' + paramitem.example + "</span>, ";
  73846. fhcp += replaceHtml(helpformulaArg, {
  73847. "param": nameli,
  73848. "content": paramitem.detail
  73849. });
  73850. }
  73851. fht = fht.substr(0, fht.length - 2);
  73852. ahf = ahf.substr(0, ahf.length - 2);
  73853. $("#luckysheet-formula-help-c .luckysheet-formula-help-title .luckysheet-arguments-parameter-holder").html(fht);
  73854. $("#luckysheet-formula-help-c .luckysheet-arguments-help-formula .luckysheet-arguments-parameter-holder").html(ahf);
  73855. $("#luckysheet-formula-help-c .luckysheet-formula-help-content-param").html(fhcp);
  73856. if (paramIndex == null) {
  73857. $("#luckysheet-formula-help-c .luckysheet-formula-help-title-formula .luckysheet-arguments-help-function-name").css("font-weight", "bold");
  73858. } else {
  73859. $("#luckysheet-formula-help-c .luckysheet-formula-help-title-formula .luckysheet-arguments-help-function-name").css("font-weight", "normal");
  73860. let index2 = paramIndex >= $func.p.length ? $func.p.length - 1 : paramIndex;
  73861. $("#luckysheet-formula-help-c .luckysheet-formula-help-title .luckysheet-arguments-parameter-holder .luckysheet-arguments-help-parameter").removeClass("luckysheet-arguments-help-parameter-active");
  73862. $("#luckysheet-formula-help-c .luckysheet-formula-help-title .luckysheet-arguments-parameter-holder .luckysheet-arguments-help-parameter").eq(index2).addClass("luckysheet-arguments-help-parameter-active");
  73863. $("#luckysheet-formula-help-c .luckysheet-arguments-help-formula .luckysheet-arguments-parameter-holder .luckysheet-arguments-help-parameter").removeClass("luckysheet-arguments-help-parameter-active");
  73864. $("#luckysheet-formula-help-c .luckysheet-arguments-help-formula .luckysheet-arguments-parameter-holder .luckysheet-arguments-help-parameter").eq(index2).addClass("luckysheet-arguments-help-parameter-active");
  73865. $("#luckysheet-formula-help-c .luckysheet-formula-help-content-param .luckysheet-arguments-help-section").removeClass("luckysheet-arguments-help-parameter-active");
  73866. $("#luckysheet-formula-help-c .luckysheet-formula-help-content-param .luckysheet-arguments-help-section").eq(index2).addClass("luckysheet-arguments-help-parameter-active");
  73867. }
  73868. let $c = $editer.parent(), offset = $c.offset();
  73869. _this.searchFunctionPosition($("#luckysheet-formula-help-c"), $c, offset.left, offset.top, true);
  73870. },
  73871. helpFunctionExe: function($editer, currSelection) {
  73872. let _this = this;
  73873. let functionlist2 = store_default.functionlist;
  73874. let _locale = locale_default();
  73875. let locale_formulaMore = _locale.formulaMore;
  73876. if ($("#luckysheet-formula-help-c").length == 0) {
  73877. $("body").after(replaceHtml(_this.helpHTML, {
  73878. helpClose: locale_formulaMore.helpClose,
  73879. helpCollapse: locale_formulaMore.helpCollapse,
  73880. helpExample: locale_formulaMore.helpExample,
  73881. helpAbstract: locale_formulaMore.helpAbstract
  73882. }));
  73883. $("#luckysheet-formula-help-c .luckysheet-formula-help-close").click(function() {
  73884. $("#luckysheet-formula-help-c").hide();
  73885. });
  73886. $("#luckysheet-formula-help-c .luckysheet-formula-help-collapse").click(function() {
  73887. let $content = $("#luckysheet-formula-help-c .luckysheet-formula-help-content");
  73888. $content.slideToggle(100, function() {
  73889. let $c = _this.rangeResizeTo.parent(), offset = $c.offset();
  73890. _this.searchFunctionPosition($("#luckysheet-formula-help-c"), $c, offset.left, offset.top, true);
  73891. });
  73892. if ($content.is(":hidden")) {
  73893. $(this).html('<i class="fa fa-angle-up" aria-hidden="true"></i>');
  73894. } else {
  73895. $(this).html('<i class="fa fa-angle-down" aria-hidden="true"></i>');
  73896. }
  73897. });
  73898. for (let i3 = 0; i3 < functionlist2.length; i3++) {
  73899. _this.functionlistPosition[functionlist2[i3].n] = i3;
  73900. }
  73901. }
  73902. if (!currSelection) {
  73903. return;
  73904. }
  73905. let $prev = currSelection, funcLen = $editer.length, $span = $editer.find("span"), currentIndex = currSelection.index(), i2 = currentIndex;
  73906. if ($prev == null) {
  73907. return;
  73908. }
  73909. let funcName = null, paramindex = null;
  73910. if ($span.eq(i2).is(".luckysheet-formula-text-func")) {
  73911. funcName = $span.eq(i2).text();
  73912. } else {
  73913. let $cur = null, exceptIndex = [-1, -1];
  73914. while (--i2 > 0) {
  73915. $cur = $span.eq(i2);
  73916. if ($cur.is(".luckysheet-formula-text-func") || $.trim($cur.text()).toUpperCase() in _this.functionlistPosition) {
  73917. funcName = $cur.text();
  73918. paramindex = null;
  73919. let endstate = true;
  73920. for (let a = i2; a <= currentIndex; a++) {
  73921. if (!paramindex) {
  73922. paramindex = 0;
  73923. }
  73924. if (a >= exceptIndex[0] && a <= exceptIndex[1]) {
  73925. continue;
  73926. }
  73927. $cur = $span.eq(a);
  73928. if ($cur.is(".luckysheet-formula-text-rpar")) {
  73929. exceptIndex = [i2, a];
  73930. funcName = null;
  73931. endstate = false;
  73932. break;
  73933. }
  73934. if ($cur.is(".luckysheet-formula-text-comma")) {
  73935. paramindex++;
  73936. }
  73937. }
  73938. if (endstate) {
  73939. break;
  73940. }
  73941. }
  73942. }
  73943. }
  73944. if (funcName == null) {
  73945. return;
  73946. }
  73947. _this.helpFunction($editer, funcName, paramindex);
  73948. },
  73949. rangeHightlightselected: function($editer, kcode) {
  73950. let _this = this;
  73951. let currSelection = _this.getrangeseleciton();
  73952. $("#luckysheet-formula-search-c, #luckysheet-formula-help-c").hide();
  73953. $("#luckysheet-formula-functionrange .luckysheet-formula-functionrange-highlight .luckysheet-selection-copy-hc").css("opacity", "0.03");
  73954. $("#luckysheet-formula-search-c, #luckysheet-formula-help-c").hide();
  73955. _this.helpFunctionExe($editer, currSelection);
  73956. if ($(currSelection).closest(".luckysheet-formula-functionrange-cell").length == 0) {
  73957. _this.searchFunction($editer);
  73958. return;
  73959. }
  73960. let $anchorOffset = $(currSelection).closest(".luckysheet-formula-functionrange-cell");
  73961. let rangeindex = $anchorOffset.attr("rangeindex");
  73962. let rangeid = "luckysheet-formula-functionrange-highlight-" + rangeindex;
  73963. $("#" + rangeid).find(".luckysheet-selection-copy-hc").css({
  73964. "opacity": "0.13"
  73965. });
  73966. },
  73967. updatecell: function(r2, c2, value, isRefresh = true) {
  73968. let _this = this;
  73969. let $input = $("#luckysheet-rich-text-editor");
  73970. let inputText = $input.text(), inputHtml = $input.html();
  73971. if (_this.rangetosheet != null && _this.rangetosheet != store_default.currentSheetIndex) {
  73972. sheetmanage_default.changeSheetExec(_this.rangetosheet);
  73973. }
  73974. if (!checkProtectionLocked(r2, c2, store_default.currentSheetIndex)) {
  73975. return;
  73976. }
  73977. if (dataVerificationCtrl_default.dataVerification != null) {
  73978. let dvItem = dataVerificationCtrl_default.dataVerification[r2 + "_" + c2];
  73979. if (dvItem != null && dvItem.prohibitInput && !dataVerificationCtrl_default.validateCellData(inputText, dvItem)) {
  73980. let failureText = dataVerificationCtrl_default.getFailureText(dvItem);
  73981. tooltip_default.info(failureText, "");
  73982. _this.cancelNormalSelected();
  73983. return;
  73984. }
  73985. }
  73986. let curv = store_default.flowdata[r2][c2];
  73987. const oldValue = JSON.stringify(curv);
  73988. let isPrevInline = isInlineStringCell(curv);
  73989. let isCurInline = inputText.slice(0, 1) != "=" && inputHtml.substr(0, 5) == "<span";
  73990. let isCopyVal = false;
  73991. if (!isCurInline && inputText && inputText.length > 0) {
  73992. let splitArr = inputText.replace(/\r\n/g, "_x000D_").replace(/&#13;&#10;/g, "_x000D_").replace(/\r/g, "_x000D_").replace(/\n/g, "_x000D_").split("_x000D_");
  73993. if (splitArr.length > 1) {
  73994. isCopyVal = true;
  73995. isCurInline = true;
  73996. inputText = splitArr.join("\r\n");
  73997. }
  73998. }
  73999. if (!value && !isCurInline && isPrevInline) {
  74000. delete curv.ct.s;
  74001. curv.ct.t = "g";
  74002. curv.ct.fa = "General";
  74003. value = "";
  74004. } else if (isCurInline) {
  74005. if (getObjType(curv) != "object") {
  74006. curv = {};
  74007. }
  74008. delete curv.f;
  74009. delete curv.v;
  74010. delete curv.m;
  74011. if (curv.ct == null) {
  74012. curv.ct = {};
  74013. curv.ct.fa = "General";
  74014. }
  74015. curv.ct.t = "inlineStr";
  74016. curv.ct.s = convertSpanToShareString($input.find("span"));
  74017. if (isCopyVal) {
  74018. curv.ct.s = [
  74019. {
  74020. v: inputText
  74021. }
  74022. ];
  74023. }
  74024. }
  74025. value = value || $input.text();
  74026. if (!method_default.createHookFunction("cellUpdateBefore", r2, c2, value, isRefresh)) {
  74027. _this.cancelNormalSelected();
  74028. return;
  74029. }
  74030. if (!isCurInline) {
  74031. if (isRealNull(value) && !isPrevInline) {
  74032. if (curv == null || isRealNull(curv.v) && curv.spl == null && curv.f == null) {
  74033. _this.cancelNormalSelected();
  74034. return;
  74035. }
  74036. } else if (curv != null && curv.qp != 1) {
  74037. if (getObjType(curv) == "object" && (value == curv.f || value == curv.v || value == curv.m)) {
  74038. _this.cancelNormalSelected();
  74039. return;
  74040. } else if (value == curv) {
  74041. _this.cancelNormalSelected();
  74042. return;
  74043. }
  74044. }
  74045. if (getObjType(value) == "string" && value.slice(0, 1) == "=" && value.length > 1) {
  74046. } else if (getObjType(curv) == "object" && curv.ct != null && curv.ct.fa != null && curv.ct.fa != "@" && !isRealNull(value)) {
  74047. delete curv.m;
  74048. if (curv.f != null) {
  74049. delete curv.f;
  74050. delete curv.spl;
  74051. }
  74052. }
  74053. }
  74054. window.luckysheet_getcelldata_cache = null;
  74055. let isRunExecFunction = true;
  74056. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  74057. let dynamicArrayItem = null;
  74058. if (getObjType(curv) == "object") {
  74059. if (!isCurInline) {
  74060. if (getObjType(value) == "string" && value.slice(0, 1) == "=" && value.length > 1) {
  74061. let v = _this.execfunction(value, r2, c2, void 0, true);
  74062. isRunExecFunction = false;
  74063. curv = $.extend(true, {}, d[r2][c2]);
  74064. curv.v = v[1];
  74065. curv.f = v[2];
  74066. if (v.length == 4 && v[3].type == "sparklines") {
  74067. delete curv.m;
  74068. delete curv.v;
  74069. let curCalv = v[3].data;
  74070. if (getObjType(curCalv) == "array" && getObjType(curCalv[0]) != "object") {
  74071. curv.v = curCalv[0];
  74072. } else {
  74073. curv.spl = v[3].data;
  74074. }
  74075. } else if (v.length == 4 && v[3].type == "dynamicArrayItem") {
  74076. dynamicArrayItem = v[3].data;
  74077. }
  74078. } else if (getObjType(value) == "object") {
  74079. let valueFunction = value.f;
  74080. if (getObjType(valueFunction) == "string" && valueFunction.slice(0, 1) == "=" && valueFunction.length > 1) {
  74081. let v = _this.execfunction(valueFunction, r2, c2, void 0, true);
  74082. isRunExecFunction = false;
  74083. curv = $.extend(true, {}, d[r2][c2]);
  74084. curv.v = v[1];
  74085. curv.f = v[2];
  74086. if (v.length == 4 && v[3].type == "sparklines") {
  74087. delete curv.m;
  74088. delete curv.v;
  74089. let curCalv = v[3].data;
  74090. if (getObjType(curCalv) == "array" && getObjType(curCalv[0]) != "object") {
  74091. curv.v = curCalv[0];
  74092. } else {
  74093. curv.spl = v[3].data;
  74094. }
  74095. } else if (v.length == 4 && v[3].type == "dynamicArrayItem") {
  74096. dynamicArrayItem = v[3].data;
  74097. }
  74098. } else {
  74099. for (let attr in value) {
  74100. curv[attr] = value[attr];
  74101. }
  74102. }
  74103. } else {
  74104. _this.delFunctionGroup(r2, c2);
  74105. _this.execFunctionGroup(r2, c2, value);
  74106. isRunExecFunction = false;
  74107. curv = $.extend(true, {}, d[r2][c2]);
  74108. curv.v = value;
  74109. delete curv.f;
  74110. delete curv.spl;
  74111. if (curv.qp == 1 && ("" + value).substr(0, 1) != "'") {
  74112. curv.qp = 0;
  74113. if (curv.ct != null) {
  74114. curv.ct.fa = "General";
  74115. curv.ct.t = "n";
  74116. }
  74117. }
  74118. }
  74119. }
  74120. value = curv;
  74121. } else {
  74122. if (getObjType(value) == "string" && value.slice(0, 1) == "=" && value.length > 1) {
  74123. let v = _this.execfunction(value, r2, c2, void 0, true);
  74124. isRunExecFunction = false;
  74125. value = {
  74126. "v": v[1],
  74127. "f": v[2]
  74128. };
  74129. if (v.length == 4 && v[3].type == "sparklines") {
  74130. let curCalv = v[3].data;
  74131. if (getObjType(curCalv) == "array" && getObjType(curCalv[0]) != "object") {
  74132. value.v = curCalv[0];
  74133. } else {
  74134. value.spl = v[3].data;
  74135. }
  74136. } else if (v.length == 4 && v[3].type == "dynamicArrayItem") {
  74137. dynamicArrayItem = v[3].data;
  74138. }
  74139. } else if (getObjType(value) == "object") {
  74140. let valueFunction = value.f;
  74141. if (getObjType(valueFunction) == "string" && valueFunction.slice(0, 1) == "=" && valueFunction.length > 1) {
  74142. let v = _this.execfunction(valueFunction, r2, c2, void 0, true);
  74143. isRunExecFunction = false;
  74144. value.v = v[1];
  74145. value.f = v[2];
  74146. if (v.length == 4 && v[3].type == "sparklines") {
  74147. let curCalv = v[3].data;
  74148. if (getObjType(curCalv) == "array" && getObjType(curCalv[0]) != "object") {
  74149. value.v = curCalv[0];
  74150. } else {
  74151. value.spl = v[3].data;
  74152. }
  74153. } else if (v.length == 4 && v[3].type == "dynamicArrayItem") {
  74154. dynamicArrayItem = v[3].data;
  74155. }
  74156. } else {
  74157. let v = curv;
  74158. if (value.v == null) {
  74159. value.v = v;
  74160. }
  74161. }
  74162. } else {
  74163. _this.delFunctionGroup(r2, c2);
  74164. _this.execFunctionGroup(r2, c2, value);
  74165. isRunExecFunction = false;
  74166. }
  74167. }
  74168. setcellvalue(r2, c2, d, value);
  74169. _this.cancelNormalSelected();
  74170. let RowlChange = false;
  74171. let cfg = $.extend(true, {}, getluckysheetfile()[getSheetIndex(store_default.currentSheetIndex)]["config"]);
  74172. if (cfg["rowlen"] == null) {
  74173. cfg["rowlen"] = {};
  74174. }
  74175. if (d[r2][c2].tb == "2" && d[r2][c2].v != null || isInlineStringCell(d[r2][c2]) && typeof d[r2][c2]["mc"] == "undefined") {
  74176. let defaultrowlen = store_default.defaultrowlen;
  74177. let canvas = $("#luckysheetTableContent").get(0).getContext("2d");
  74178. if (cfg["customHeight"] && cfg["customHeight"][r2] == 1) {
  74179. } else {
  74180. let cellWidth = colLocationByIndex(c2)[1] - colLocationByIndex(c2)[0] - 2;
  74181. let textInfo = getCellTextInfo(d[r2][c2], canvas, {
  74182. r: r2,
  74183. c: c2,
  74184. cellWidth
  74185. });
  74186. let currentRowLen = defaultrowlen;
  74187. if (textInfo != null) {
  74188. currentRowLen = textInfo.textHeightAll + 2;
  74189. }
  74190. if (currentRowLen > defaultrowlen) {
  74191. cfg["rowlen"][r2] = currentRowLen;
  74192. RowlChange = true;
  74193. }
  74194. }
  74195. }
  74196. let dynamicArray = null;
  74197. if (!!dynamicArrayItem) {
  74198. dynamicArray = $.extend(true, [], this.insertUpdateDynamicArray(dynamicArrayItem));
  74199. }
  74200. let allParam = {
  74201. "dynamicArray": dynamicArray
  74202. };
  74203. if (RowlChange) {
  74204. allParam = {
  74205. "cfg": cfg,
  74206. "dynamicArray": dynamicArray,
  74207. "RowlChange": RowlChange
  74208. };
  74209. }
  74210. setTimeout(() => {
  74211. method_default.createHookFunction("cellUpdated", r2, c2, JSON.parse(oldValue), store_default.flowdata[r2][c2], isRefresh);
  74212. }, 0);
  74213. if (isRefresh) {
  74214. jfrefreshgrid(d, [{"row": [r2, r2], "column": [c2, c2]}], allParam, isRunExecFunction);
  74215. _this.execFunctionGlobalData = null;
  74216. } else {
  74217. return {
  74218. data: d,
  74219. allParam
  74220. };
  74221. }
  74222. },
  74223. cancelNormalSelected: function() {
  74224. let _this = this;
  74225. _this.canceFunctionrangeSelected();
  74226. $("#luckysheet-formula-functionrange .luckysheet-formula-functionrange-highlight").remove();
  74227. $("#luckysheet-input-box").removeAttr("style");
  74228. $("#luckysheet-input-box-index").hide();
  74229. $("#luckysheet-wa-functionbox-cancel, #luckysheet-wa-functionbox-confirm").removeClass("luckysheet-wa-calculate-active");
  74230. _this.rangestart = false;
  74231. _this.rangedrag_column_start = false;
  74232. _this.rangedrag_row_start = false;
  74233. },
  74234. canceFunctionrangeSelected: function() {
  74235. $("#luckysheet-formula-functionrange-select").hide();
  74236. $("#luckysheet-row-count-show, #luckysheet-column-count-show").hide();
  74237. $("#luckysheet-formula-search-c, #luckysheet-formula-help-c").hide();
  74238. },
  74239. iscellformat: function(txt) {
  74240. let re_abc = /[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ][123456789]/;
  74241. },
  74242. iscelldata: function(txt) {
  74243. let val = txt.split("!"), rangetxt;
  74244. if (val.length > 1) {
  74245. rangetxt = val[1];
  74246. } else {
  74247. rangetxt = val[0];
  74248. }
  74249. let reg_cell = /^(([a-zA-Z]+)|([$][a-zA-Z]+))(([0-9]+)|([$][0-9]+))$/g;
  74250. let reg_cellRange = /^(((([a-zA-Z]+)|([$][a-zA-Z]+))(([0-9]+)|([$][0-9]+)))|((([a-zA-Z]+)|([$][a-zA-Z]+))))$/g;
  74251. if (rangetxt.indexOf(":") == -1) {
  74252. let row = parseInt(rangetxt.replace(/[^0-9]/g, "")) - 1;
  74253. let col = ABCatNum(rangetxt.replace(/[^A-Za-z]/g, ""));
  74254. if (!isNaN(row) && !isNaN(col) && rangetxt.toString().match(reg_cell)) {
  74255. return true;
  74256. } else if (!isNaN(row)) {
  74257. return false;
  74258. } else if (!isNaN(col)) {
  74259. return false;
  74260. } else {
  74261. return false;
  74262. }
  74263. } else {
  74264. reg_cellRange = /^(((([a-zA-Z]+)|([$][a-zA-Z]+))(([0-9]+)|([$][0-9]+)))|((([a-zA-Z]+)|([$][a-zA-Z]+)))|((([0-9]+)|([$][0-9]+s))))$/g;
  74265. rangetxt = rangetxt.split(":");
  74266. let row = [], col = [];
  74267. row[0] = parseInt(rangetxt[0].replace(/[^0-9]/g, "")) - 1;
  74268. row[1] = parseInt(rangetxt[1].replace(/[^0-9]/g, "")) - 1;
  74269. if (row[0] > row[1]) {
  74270. return false;
  74271. }
  74272. col[0] = ABCatNum(rangetxt[0].replace(/[^A-Za-z]/g, ""));
  74273. col[1] = ABCatNum(rangetxt[1].replace(/[^A-Za-z]/g, ""));
  74274. if (col[0] > col[1]) {
  74275. return false;
  74276. }
  74277. if (rangetxt[0].toString().match(reg_cellRange) && rangetxt[1].toString().match(reg_cellRange)) {
  74278. return true;
  74279. } else {
  74280. return false;
  74281. }
  74282. }
  74283. },
  74284. operator: "==|!=|<>|<=|>=|=|+|-|>|<|/|*|%|&|^",
  74285. operatorjson: null,
  74286. functionCopy: function(txt, mode, step) {
  74287. let _this = this;
  74288. if (_this.operatorjson == null) {
  74289. let arr = _this.operator.split("|"), op = {};
  74290. for (let i3 = 0; i3 < arr.length; i3++) {
  74291. op[arr[i3].toString()] = 1;
  74292. }
  74293. _this.operatorjson = op;
  74294. }
  74295. if (mode == null) {
  74296. mode = "down";
  74297. }
  74298. if (step == null) {
  74299. step = 1;
  74300. }
  74301. if (txt.substr(0, 1) == "=") {
  74302. txt = txt.substr(1);
  74303. }
  74304. let funcstack = txt.split("");
  74305. let i2 = 0, str = "", function_str = "", ispassby = true;
  74306. let matchConfig = {
  74307. "bracket": 0,
  74308. "comma": 0,
  74309. "squote": 0,
  74310. "dquote": 0
  74311. };
  74312. while (i2 < funcstack.length) {
  74313. let s = funcstack[i2];
  74314. if (s == "(" && matchConfig.dquote == 0) {
  74315. matchConfig.bracket += 1;
  74316. if (str.length > 0) {
  74317. function_str += str + "(";
  74318. } else {
  74319. function_str += "(";
  74320. }
  74321. str = "";
  74322. } else if (s == ")" && matchConfig.dquote == 0) {
  74323. matchConfig.bracket -= 1;
  74324. function_str += _this.functionCopy(str, mode, step) + ")";
  74325. str = "";
  74326. } else if (s == '"' && matchConfig.squote == 0) {
  74327. if (matchConfig.dquote > 0) {
  74328. function_str += str + '"';
  74329. matchConfig.dquote -= 1;
  74330. str = "";
  74331. } else {
  74332. matchConfig.dquote += 1;
  74333. str += '"';
  74334. }
  74335. } else if (s == "," && matchConfig.dquote == 0) {
  74336. function_str += _this.functionCopy(str, mode, step) + ",";
  74337. str = "";
  74338. } else if (s == "&" && matchConfig.dquote == 0) {
  74339. if (str.length > 0) {
  74340. function_str += _this.functionCopy(str, mode, step) + "&";
  74341. str = "";
  74342. } else {
  74343. function_str += "&";
  74344. }
  74345. } else if (s in _this.operatorjson && matchConfig.dquote == 0) {
  74346. let s_next = "";
  74347. if (i2 + 1 < funcstack.length) {
  74348. s_next = funcstack[i2 + 1];
  74349. }
  74350. let p = i2 - 1, s_pre = null;
  74351. if (p >= 0) {
  74352. do {
  74353. s_pre = funcstack[p--];
  74354. } while (p >= 0 && s_pre == " ");
  74355. }
  74356. if (s + s_next in _this.operatorjson) {
  74357. if (str.length > 0) {
  74358. function_str += _this.functionCopy(str, mode, step) + s + s_next;
  74359. str = "";
  74360. } else {
  74361. function_str += s + s_next;
  74362. }
  74363. i2++;
  74364. } else if (!/[^0-9]/.test(s_next) && s == "-" && (s_pre == "(" || s_pre == null || s_pre == "," || s_pre == " " || s_pre in _this.operatorjson)) {
  74365. str += s;
  74366. } else {
  74367. if (str.length > 0) {
  74368. function_str += _this.functionCopy(str, mode, step) + s;
  74369. str = "";
  74370. } else {
  74371. function_str += s;
  74372. }
  74373. }
  74374. } else {
  74375. str += s;
  74376. }
  74377. if (i2 == funcstack.length - 1) {
  74378. if (_this.iscelldata($.trim(str))) {
  74379. if (mode == "down") {
  74380. function_str += _this.downparam($.trim(str), step);
  74381. } else if (mode == "up") {
  74382. function_str += _this.upparam($.trim(str), step);
  74383. } else if (mode == "left") {
  74384. function_str += _this.leftparam($.trim(str), step);
  74385. } else if (mode == "right") {
  74386. function_str += _this.rightparam($.trim(str), step);
  74387. }
  74388. } else {
  74389. function_str += $.trim(str);
  74390. }
  74391. }
  74392. i2++;
  74393. }
  74394. return function_str;
  74395. },
  74396. isfreezonFuc: function(txt) {
  74397. let row = txt.replace(/[^0-9]/g, "");
  74398. let col = txt.replace(/[^A-Za-z]/g, "");
  74399. let row$ = txt.substr(txt.indexOf(row) - 1, 1);
  74400. let col$ = txt.substr(txt.indexOf(col) - 1, 1);
  74401. let ret = [false, false];
  74402. if (row$ == "$") {
  74403. ret[0] = true;
  74404. }
  74405. if (col$ == "$") {
  74406. ret[1] = true;
  74407. }
  74408. return ret;
  74409. },
  74410. setfreezonFuceExe: function(rangetxt) {
  74411. let row = parseInt(rangetxt.replace(/[^0-9]/g, ""));
  74412. let col = ABCatNum(rangetxt.replace(/[^A-Za-z]/g, ""));
  74413. let $row = "$", $col = "$";
  74414. if (!isNaN(row) && !isNaN(col)) {
  74415. return $col + chatatABC(col) + $row + row;
  74416. } else if (!isNaN(row)) {
  74417. return $row + row;
  74418. } else if (!isNaN(col)) {
  74419. return $col + chatatABC(col);
  74420. } else {
  74421. return rangetxt;
  74422. }
  74423. },
  74424. setfreezonFuc: function(event2) {
  74425. let _this = this;
  74426. let obj = _this.getrangeseleciton();
  74427. if (!_this.iscelldata(obj.text())) {
  74428. return;
  74429. }
  74430. let txt = obj.text(), pos = window.getSelection().anchorOffset;
  74431. let val = txt.split("!"), rangetxt, prefix = "";
  74432. if (val.length > 1) {
  74433. rangetxt = val[1];
  74434. prefix = val[0] + "!";
  74435. } else {
  74436. rangetxt = val[0];
  74437. }
  74438. let newtxt = "", newpos = "";
  74439. let rangetxtIndex = rangetxt.indexOf(":");
  74440. if (rangetxtIndex == -1) {
  74441. newtxt = prefix + _this.setfreezonFuceExe(rangetxt);
  74442. newpos = newtxt.length;
  74443. } else {
  74444. rangetxt = rangetxt.split(":");
  74445. if (pos > rangetxtIndex) {
  74446. let ret = prefix + rangetxt[0] + ":" + _this.setfreezonFuceExe(rangetxt[1]);
  74447. newtxt = ret;
  74448. newpos = ret.length;
  74449. } else {
  74450. let firsttxt = prefix + _this.setfreezonFuceExe(rangetxt[0]);
  74451. let ret = firsttxt + ":" + rangetxt[1];
  74452. newtxt = ret;
  74453. newpos = firsttxt.length;
  74454. }
  74455. }
  74456. obj.text(prefix + newtxt);
  74457. _this.setCaretPosition(obj.get(0), 0, newpos);
  74458. },
  74459. updateparam: function(orient, txt, step) {
  74460. let _this = this;
  74461. let val = txt.split("!"), rangetxt, prefix = "";
  74462. if (val.length > 1) {
  74463. rangetxt = val[1];
  74464. prefix = val[0] + "!";
  74465. } else {
  74466. rangetxt = val[0];
  74467. }
  74468. if (rangetxt.indexOf(":") == -1) {
  74469. let row = parseInt(rangetxt.replace(/[^0-9]/g, ""));
  74470. let col = ABCatNum(rangetxt.replace(/[^A-Za-z]/g, ""));
  74471. let freezonFuc = _this.isfreezonFuc(rangetxt);
  74472. let $row = freezonFuc[0] ? "$" : "", $col = freezonFuc[1] ? "$" : "";
  74473. if (orient == "u" && !freezonFuc[0]) {
  74474. row -= step;
  74475. } else if (orient == "r" && !freezonFuc[1]) {
  74476. col += step;
  74477. } else if (orient == "l" && !freezonFuc[1]) {
  74478. col -= step;
  74479. } else if (orient == "d" && !freezonFuc[0]) {
  74480. row += step;
  74481. }
  74482. if (row[0] < 0 || col[0] < 0) {
  74483. return _this.error.r;
  74484. }
  74485. if (!isNaN(row) && !isNaN(col)) {
  74486. return prefix + $col + chatatABC(col) + $row + row;
  74487. } else if (!isNaN(row)) {
  74488. return prefix + $row + row;
  74489. } else if (!isNaN(col)) {
  74490. return prefix + $col + chatatABC(col);
  74491. } else {
  74492. return txt;
  74493. }
  74494. } else {
  74495. rangetxt = rangetxt.split(":");
  74496. let row = [], col = [];
  74497. row[0] = parseInt(rangetxt[0].replace(/[^0-9]/g, ""));
  74498. row[1] = parseInt(rangetxt[1].replace(/[^0-9]/g, ""));
  74499. if (row[0] > row[1]) {
  74500. return txt;
  74501. }
  74502. col[0] = ABCatNum(rangetxt[0].replace(/[^A-Za-z]/g, ""));
  74503. col[1] = ABCatNum(rangetxt[1].replace(/[^A-Za-z]/g, ""));
  74504. if (col[0] > col[1]) {
  74505. return txt;
  74506. }
  74507. let freezonFuc0 = _this.isfreezonFuc(rangetxt[0]);
  74508. let freezonFuc1 = _this.isfreezonFuc(rangetxt[1]);
  74509. let $row0 = freezonFuc0[0] ? "$" : "", $col0 = freezonFuc0[1] ? "$" : "";
  74510. let $row1 = freezonFuc1[0] ? "$" : "", $col1 = freezonFuc1[1] ? "$" : "";
  74511. if (orient == "u") {
  74512. if (!freezonFuc0[0]) {
  74513. row[0] -= step;
  74514. }
  74515. if (!freezonFuc1[0]) {
  74516. row[1] -= step;
  74517. }
  74518. } else if (orient == "r") {
  74519. if (!freezonFuc0[1]) {
  74520. col[0] += step;
  74521. }
  74522. if (!freezonFuc1[1]) {
  74523. col[1] += step;
  74524. }
  74525. } else if (orient == "l") {
  74526. if (!freezonFuc0[1]) {
  74527. col[0] -= step;
  74528. }
  74529. if (!freezonFuc1[1]) {
  74530. col[1] -= step;
  74531. }
  74532. } else if (orient == "d") {
  74533. if (!freezonFuc0[0]) {
  74534. row[0] += step;
  74535. }
  74536. if (!freezonFuc1[0]) {
  74537. row[1] += step;
  74538. }
  74539. }
  74540. if (row[0] < 0 || col[0] < 0) {
  74541. return _this.error.r;
  74542. }
  74543. if (isNaN(col[0]) && isNaN(col[1])) {
  74544. return prefix + $row0 + row[0] + ":" + $row1 + row[1];
  74545. } else if (isNaN(row[0]) && isNaN(row[1])) {
  74546. return prefix + $col0 + chatatABC(col[0]) + ":" + $col1 + chatatABC(col[1]);
  74547. } else {
  74548. return prefix + $col0 + chatatABC(col[0]) + $row0 + row[0] + ":" + $col1 + chatatABC(col[1]) + $row1 + row[1];
  74549. }
  74550. }
  74551. },
  74552. downparam: function(txt, step) {
  74553. return this.updateparam("d", txt, step);
  74554. },
  74555. upparam: function(txt, step) {
  74556. return this.updateparam("u", txt, step);
  74557. },
  74558. leftparam: function(txt, step) {
  74559. return this.updateparam("l", txt, step);
  74560. },
  74561. rightparam: function(txt, step) {
  74562. return this.updateparam("r", txt, step);
  74563. },
  74564. functionStrChange: function(txt, type, rc, orient, stindex, step) {
  74565. let _this = this;
  74566. if (_this.operatorjson == null) {
  74567. let arr = _this.operator.split("|"), op = {};
  74568. for (let i3 = 0; i3 < arr.length; i3++) {
  74569. op[arr[i3].toString()] = 1;
  74570. }
  74571. _this.operatorjson = op;
  74572. }
  74573. if (txt.substr(0, 1) == "=") {
  74574. txt = txt.substr(1);
  74575. }
  74576. let funcstack = txt.split("");
  74577. let i2 = 0, str = "", function_str = "", ispassby = true;
  74578. let matchConfig = {
  74579. "bracket": 0,
  74580. "comma": 0,
  74581. "squote": 0,
  74582. "dquote": 0
  74583. };
  74584. while (i2 < funcstack.length) {
  74585. let s = funcstack[i2];
  74586. if (s == "(" && matchConfig.dquote == 0) {
  74587. matchConfig.bracket += 1;
  74588. if (str.length > 0) {
  74589. function_str += str + "(";
  74590. } else {
  74591. function_str += "(";
  74592. }
  74593. str = "";
  74594. } else if (s == ")" && matchConfig.dquote == 0) {
  74595. matchConfig.bracket -= 1;
  74596. function_str += _this.functionStrChange(str, type, rc, orient, stindex, step) + ")";
  74597. str = "";
  74598. } else if (s == '"' && matchConfig.squote == 0) {
  74599. if (matchConfig.dquote > 0) {
  74600. function_str += str + '"';
  74601. matchConfig.dquote -= 1;
  74602. str = "";
  74603. } else {
  74604. matchConfig.dquote += 1;
  74605. str += '"';
  74606. }
  74607. } else if (s == "," && matchConfig.dquote == 0) {
  74608. function_str += _this.functionStrChange(str, type, rc, orient, stindex, step) + ",";
  74609. str = "";
  74610. } else if (s == "&" && matchConfig.dquote == 0) {
  74611. if (str.length > 0) {
  74612. function_str += _this.functionStrChange(str, type, rc, orient, stindex, step) + "&";
  74613. str = "";
  74614. } else {
  74615. function_str += "&";
  74616. }
  74617. } else if (s in _this.operatorjson && matchConfig.dquote == 0) {
  74618. let s_next = "";
  74619. if (i2 + 1 < funcstack.length) {
  74620. s_next = funcstack[i2 + 1];
  74621. }
  74622. let p = i2 - 1, s_pre = null;
  74623. if (p >= 0) {
  74624. do {
  74625. s_pre = funcstack[p--];
  74626. } while (p >= 0 && s_pre == " ");
  74627. }
  74628. if (s + s_next in _this.operatorjson) {
  74629. if (str.length > 0) {
  74630. function_str += _this.functionStrChange(str, type, rc, orient, stindex, step) + s + s_next;
  74631. str = "";
  74632. } else {
  74633. function_str += s + s_next;
  74634. }
  74635. i2++;
  74636. } else if (!/[^0-9]/.test(s_next) && s == "-" && (s_pre == "(" || s_pre == null || s_pre == "," || s_pre == " " || s_pre in _this.operatorjson)) {
  74637. str += s;
  74638. } else {
  74639. if (str.length > 0) {
  74640. function_str += _this.functionStrChange(str, type, rc, orient, stindex, step) + s;
  74641. str = "";
  74642. } else {
  74643. function_str += s;
  74644. }
  74645. }
  74646. } else {
  74647. str += s;
  74648. }
  74649. if (i2 == funcstack.length - 1) {
  74650. if (_this.iscelldata($.trim(str))) {
  74651. function_str += _this.functionStrChange_range($.trim(str), type, rc, orient, stindex, step);
  74652. } else {
  74653. function_str += $.trim(str);
  74654. }
  74655. }
  74656. i2++;
  74657. }
  74658. return function_str;
  74659. },
  74660. functionStrChange_range: function(txt, type, rc, orient, stindex, step) {
  74661. let _this = this;
  74662. let val = txt.split("!"), rangetxt, prefix = "";
  74663. if (val.length > 1) {
  74664. rangetxt = val[1];
  74665. prefix = val[0] + "!";
  74666. } else {
  74667. rangetxt = val[0];
  74668. }
  74669. let r1, r2, c1, c2;
  74670. let $row0, $row1, $col0, $col1;
  74671. if (rangetxt.indexOf(":") == -1) {
  74672. r1 = r2 = parseInt(rangetxt.replace(/[^0-9]/g, "")) - 1;
  74673. c1 = c2 = ABCatNum(rangetxt.replace(/[^A-Za-z]/g, ""));
  74674. let freezonFuc = _this.isfreezonFuc(rangetxt);
  74675. $row0 = $row1 = freezonFuc[0] ? "$" : "", $col0 = $col1 = freezonFuc[1] ? "$" : "";
  74676. } else {
  74677. rangetxt = rangetxt.split(":");
  74678. r1 = parseInt(rangetxt[0].replace(/[^0-9]/g, "")) - 1;
  74679. r2 = parseInt(rangetxt[1].replace(/[^0-9]/g, "")) - 1;
  74680. if (r1 > r2) {
  74681. return txt;
  74682. }
  74683. c1 = ABCatNum(rangetxt[0].replace(/[^A-Za-z]/g, ""));
  74684. c2 = ABCatNum(rangetxt[1].replace(/[^A-Za-z]/g, ""));
  74685. if (c1 > c2) {
  74686. return txt;
  74687. }
  74688. let freezonFuc0 = _this.isfreezonFuc(rangetxt[0]);
  74689. $row0 = freezonFuc0[0] ? "$" : "";
  74690. $col0 = freezonFuc0[1] ? "$" : "";
  74691. let freezonFuc1 = _this.isfreezonFuc(rangetxt[1]);
  74692. $row1 = freezonFuc1[0] ? "$" : "";
  74693. $col1 = freezonFuc1[1] ? "$" : "";
  74694. }
  74695. if (type == "del") {
  74696. if (rc == "row") {
  74697. if (r1 >= stindex && r2 <= stindex + step - 1) {
  74698. return _this.error.r;
  74699. }
  74700. if (r1 > stindex + step - 1) {
  74701. r1 -= step;
  74702. } else if (r1 >= stindex) {
  74703. r1 = stindex;
  74704. }
  74705. if (r2 > stindex + step - 1) {
  74706. r2 -= step;
  74707. } else if (r2 >= stindex) {
  74708. r2 = stindex - 1;
  74709. }
  74710. if (r1 < 0) {
  74711. r1 = 0;
  74712. }
  74713. if (r2 < r1) {
  74714. r2 = r1;
  74715. }
  74716. } else if (rc == "col") {
  74717. if (c1 >= stindex && c2 <= stindex + step - 1) {
  74718. return _this.error.r;
  74719. }
  74720. if (c1 > stindex + step - 1) {
  74721. c1 -= step;
  74722. } else if (c1 >= stindex) {
  74723. c1 = stindex;
  74724. }
  74725. if (c2 > stindex + step - 1) {
  74726. c2 -= step;
  74727. } else if (c2 >= stindex) {
  74728. c2 = stindex - 1;
  74729. }
  74730. if (c1 < 0) {
  74731. c1 = 0;
  74732. }
  74733. if (c2 < c1) {
  74734. c2 = c1;
  74735. }
  74736. }
  74737. if (r1 == r2 && c1 == c2) {
  74738. if (!isNaN(r1) && !isNaN(c1)) {
  74739. return prefix + $col0 + chatatABC(c1) + $row0 + (r1 + 1);
  74740. } else if (!isNaN(r1)) {
  74741. return prefix + $row0 + (r1 + 1);
  74742. } else if (!isNaN(c1)) {
  74743. return prefix + $col0 + chatatABC(c1);
  74744. } else {
  74745. return txt;
  74746. }
  74747. } else {
  74748. if (isNaN(c1) && isNaN(c2)) {
  74749. return prefix + $row0 + (r1 + 1) + ":" + $row1 + (r2 + 1);
  74750. } else if (isNaN(r1) && isNaN(r2)) {
  74751. return prefix + $col0 + chatatABC(c1) + ":" + $col1 + chatatABC(c2);
  74752. } else {
  74753. return prefix + $col0 + chatatABC(c1) + $row0 + (r1 + 1) + ":" + $col1 + chatatABC(c2) + $row1 + (r2 + 1);
  74754. }
  74755. }
  74756. } else if (type == "add") {
  74757. if (rc == "row") {
  74758. if (orient == "lefttop") {
  74759. if (r1 >= stindex) {
  74760. r1 += step;
  74761. }
  74762. if (r2 >= stindex) {
  74763. r2 += step;
  74764. }
  74765. } else if (orient == "rightbottom") {
  74766. if (r1 > stindex) {
  74767. r1 += step;
  74768. }
  74769. if (r2 > stindex) {
  74770. r2 += step;
  74771. }
  74772. }
  74773. } else if (rc == "col") {
  74774. if (orient == "lefttop") {
  74775. if (c1 >= stindex) {
  74776. c1 += step;
  74777. }
  74778. if (c2 >= stindex) {
  74779. c2 += step;
  74780. }
  74781. } else if (orient == "rightbottom") {
  74782. if (c1 > stindex) {
  74783. c1 += step;
  74784. }
  74785. if (c2 > stindex) {
  74786. c2 += step;
  74787. }
  74788. }
  74789. }
  74790. if (r1 == r2 && c1 == c2) {
  74791. if (!isNaN(r1) && !isNaN(c1)) {
  74792. return prefix + $col0 + chatatABC(c1) + $row0 + (r1 + 1);
  74793. } else if (!isNaN(r1)) {
  74794. return prefix + $row0 + (r1 + 1);
  74795. } else if (!isNaN(c1)) {
  74796. return prefix + $col0 + chatatABC(c1);
  74797. } else {
  74798. return txt;
  74799. }
  74800. } else {
  74801. if (isNaN(c1) && isNaN(c2)) {
  74802. return prefix + $row0 + (r1 + 1) + ":" + $row1 + (r2 + 1);
  74803. } else if (isNaN(r1) && isNaN(r2)) {
  74804. return prefix + $col0 + chatatABC(c1) + ":" + $col1 + chatatABC(c2);
  74805. } else {
  74806. return prefix + $col0 + chatatABC(c1) + $row0 + (r1 + 1) + ":" + $col1 + chatatABC(c2) + $row1 + (r2 + 1);
  74807. }
  74808. }
  74809. }
  74810. },
  74811. israngeseleciton: function(istooltip) {
  74812. let _this = this;
  74813. if (_this.operatorjson == null) {
  74814. let arr = _this.operator.split("|"), op = {};
  74815. for (let i2 = 0; i2 < arr.length; i2++) {
  74816. op[arr[i2].toString()] = 1;
  74817. }
  74818. _this.operatorjson = op;
  74819. }
  74820. if (istooltip == null) {
  74821. istooltip = false;
  74822. }
  74823. let currSelection = window.getSelection();
  74824. let anchor = $(currSelection.anchorNode);
  74825. let anchorOffset = currSelection.anchorOffset;
  74826. if (anchor.parent().is("span") && anchorOffset != 0) {
  74827. let txt = $.trim(anchor.text()), lasttxt = "";
  74828. if (txt.length == 0 && anchor.parent().prev().length > 0) {
  74829. let ahr = anchor.parent().prev();
  74830. txt = $.trim(ahr.text());
  74831. lasttxt = txt.substr(txt.length - 1, 1);
  74832. _this.rangeSetValueTo = ahr;
  74833. } else {
  74834. lasttxt = txt.substr(anchorOffset - 1, 1);
  74835. _this.rangeSetValueTo = anchor.parent();
  74836. }
  74837. if (istooltip && (lasttxt == "(" || lasttxt == ",") || !istooltip && (lasttxt == "(" || lasttxt == "," || lasttxt == "=" || lasttxt in _this.operatorjson || lasttxt == "&")) {
  74838. return true;
  74839. }
  74840. } else if (anchor.is("#luckysheet-rich-text-editor") || anchor.is("#luckysheet-functionbox-cell")) {
  74841. let txt = $.trim(anchor.find("span").last().text()), lasttxt;
  74842. _this.rangeSetValueTo = anchor.find("span").last();
  74843. if (txt.length == 0 && anchor.find("span").length > 1) {
  74844. let ahr = anchor.find("span");
  74845. txt = $.trim(ahr.eq(ahr.length - 2).text());
  74846. _this.rangeSetValueTo = ahr;
  74847. }
  74848. lasttxt = txt.substr(txt.length - 1, 1);
  74849. if (istooltip && (lasttxt == "(" || lasttxt == ",") || !istooltip && (lasttxt == "(" || lasttxt == "," || lasttxt == "=" || lasttxt in _this.operatorjson || lasttxt == "&")) {
  74850. return true;
  74851. }
  74852. } else if (anchor.parent().is("#luckysheet-rich-text-editor") || anchor.parent().is("#luckysheet-functionbox-cell") || anchorOffset == 0) {
  74853. if (anchorOffset == 0) {
  74854. anchor = anchor.parent();
  74855. }
  74856. if (anchor.prev().length > 0) {
  74857. let txt = $.trim(anchor.prev().text());
  74858. let lasttxt = txt.substr(txt.length - 1, 1);
  74859. _this.rangeSetValueTo = anchor.prev();
  74860. if (istooltip && (lasttxt == "(" || lasttxt == ",") || !istooltip && (lasttxt == "(" || lasttxt == "," || lasttxt == "=" || lasttxt in _this.operatorjson || lasttxt == "&")) {
  74861. return true;
  74862. }
  74863. }
  74864. }
  74865. return false;
  74866. },
  74867. rangechangeindex: null,
  74868. rangestart: false,
  74869. rangetosheet: null,
  74870. rangeSetValueTo: null,
  74871. func_selectedrange: {},
  74872. rangeSetValue: function(selected, obj) {
  74873. let _this = this;
  74874. let range2 = "", rf = selected["row"][0], cf = selected["column"][0];
  74875. if (store_default.config["merge"] != null && rf + "_" + cf in store_default.config["merge"]) {
  74876. range2 = getRangetxt(store_default.currentSheetIndex, {
  74877. column: [cf, cf],
  74878. row: [rf, rf]
  74879. }, _this.rangetosheet);
  74880. } else {
  74881. range2 = getRangetxt(store_default.currentSheetIndex, selected, _this.rangetosheet);
  74882. }
  74883. let $editor;
  74884. if (_this.rangestart || _this.rangedrag_column_start || _this.rangedrag_row_start) {
  74885. if ($("#luckysheet-search-formula-parm").is(":visible") || $("#luckysheet-search-formula-parm-select").is(":visible")) {
  74886. $editor = $("#luckysheet-rich-text-editor");
  74887. $("#luckysheet-search-formula-parm-select-input").val(range2);
  74888. $("#luckysheet-search-formula-parm .parmBox").eq(_this.data_parm_index).find(".txt input").val(range2);
  74889. let txtdata = luckysheet_getcelldata(range2).data;
  74890. if (txtdata instanceof Array) {
  74891. let txtArr = [];
  74892. for (let i2 = 0; i2 < txtdata.length; i2++) {
  74893. for (let j = 0; j < txtdata[i2].length; j++) {
  74894. if (txtdata[i2][j] == null) {
  74895. txtArr.push(null);
  74896. } else {
  74897. txtArr.push(txtdata[i2][j].v);
  74898. }
  74899. }
  74900. }
  74901. $("#luckysheet-search-formula-parm .parmBox").eq(_this.data_parm_index).find(".val").text(" = {" + txtArr.join(",") + "}");
  74902. } else {
  74903. $("#luckysheet-search-formula-parm .parmBox").eq(_this.data_parm_index).find(".val").text(" = {" + txtdata.v + "}");
  74904. }
  74905. let isVal = true;
  74906. let parmValArr = [];
  74907. let lvi = -1;
  74908. $("#luckysheet-search-formula-parm .parmBox").each(function(i2, e) {
  74909. let parmtxt = $(e).find(".txt input").val();
  74910. if (parmtxt == "" && $(e).find(".txt input").attr("data_parm_require") == "m") {
  74911. isVal = false;
  74912. }
  74913. if (parmtxt != "") {
  74914. lvi = i2;
  74915. }
  74916. });
  74917. let functionHtmlTxt;
  74918. if (lvi == -1) {
  74919. functionHtmlTxt = "=" + $("#luckysheet-search-formula-parm .luckysheet-modal-dialog-title-text").text() + "()";
  74920. } else if (lvi == 0) {
  74921. functionHtmlTxt = "=" + $("#luckysheet-search-formula-parm .luckysheet-modal-dialog-title-text").text() + "(" + $("#luckysheet-search-formula-parm .parmBox").eq(0).find(".txt input").val() + ")";
  74922. } else {
  74923. for (let j = 0; j <= lvi; j++) {
  74924. parmValArr.push($("#luckysheet-search-formula-parm .parmBox").eq(j).find(".txt input").val());
  74925. }
  74926. functionHtmlTxt = "=" + $("#luckysheet-search-formula-parm .luckysheet-modal-dialog-title-text").text() + "(" + parmValArr.join(",") + ")";
  74927. }
  74928. let function_str = _this.functionHTMLGenerate(functionHtmlTxt);
  74929. $("#luckysheet-rich-text-editor").html(function_str);
  74930. $("#luckysheet-functionbox-cell").html($("#luckysheet-rich-text-editor").html());
  74931. if (isVal) {
  74932. let fp = $.trim(_this.functionParserExe($("#luckysheet-rich-text-editor").text()));
  74933. let result = new Function("return " + fp)();
  74934. $("#luckysheet-search-formula-parm .result span").text(result);
  74935. }
  74936. } else {
  74937. let currSelection = window.getSelection();
  74938. let anchorOffset = currSelection.anchorNode;
  74939. $editor = $(anchorOffset).closest("div");
  74940. let $span = $editor.find("span[rangeindex='" + _this.rangechangeindex + "']").html(range2);
  74941. _this.setCaretPosition($span.get(0), 0, range2.length);
  74942. }
  74943. } else {
  74944. let function_str = '<span class="luckysheet-formula-functionrange-cell" rangeindex="' + _this.functionHTMLIndex + '" dir="auto" style="color:' + luckyColor[_this.functionHTMLIndex] + ';">' + range2 + "</span>";
  74945. let $t = $(function_str).insertAfter(_this.rangeSetValueTo);
  74946. _this.rangechangeindex = _this.functionHTMLIndex;
  74947. $editor = $(_this.rangeSetValueTo).closest("div");
  74948. _this.setCaretPosition($editor.find("span[rangeindex='" + _this.rangechangeindex + "']").get(0), 0, range2.length);
  74949. _this.functionHTMLIndex++;
  74950. }
  74951. if ($editor.attr("id") == "luckysheet-rich-text-editor") {
  74952. $("#luckysheet-functionbox-cell").html($("#luckysheet-rich-text-editor").html());
  74953. } else {
  74954. $("#luckysheet-rich-text-editor").html($("#luckysheet-functionbox-cell").html());
  74955. }
  74956. },
  74957. rangedrag: function(event2) {
  74958. let _this = this;
  74959. let mouse = mouseposition(event2.pageX, event2.pageY);
  74960. let x = mouse[0] + $("#luckysheet-cell-main").scrollLeft();
  74961. let y = mouse[1] + $("#luckysheet-cell-main").scrollTop();
  74962. let row_location = rowLocation(y), row = row_location[1], row_pre = row_location[0], row_index = row_location[2];
  74963. let col_location = colLocation(x), col = col_location[1], col_pre = col_location[0], col_index = col_location[2];
  74964. let top = 0, height = 0, rowseleted = [];
  74965. if (_this.func_selectedrange.top > row_pre) {
  74966. top = row_pre;
  74967. height = _this.func_selectedrange.top + _this.func_selectedrange.height - row_pre;
  74968. rowseleted = [row_index, _this.func_selectedrange.row[1]];
  74969. } else if (_this.func_selectedrange.top == row_pre) {
  74970. top = row_pre;
  74971. height = _this.func_selectedrange.top + _this.func_selectedrange.height - row_pre;
  74972. rowseleted = [row_index, _this.func_selectedrange.row[0]];
  74973. } else {
  74974. top = _this.func_selectedrange.top;
  74975. height = row - _this.func_selectedrange.top - 1;
  74976. rowseleted = [_this.func_selectedrange.row[0], row_index];
  74977. }
  74978. let left = 0, width = 0, columnseleted = [];
  74979. if (_this.func_selectedrange.left > col_pre) {
  74980. left = col_pre;
  74981. width = _this.func_selectedrange.left + _this.func_selectedrange.width - col_pre;
  74982. columnseleted = [col_index, _this.func_selectedrange.column[1]];
  74983. } else if (_this.func_selectedrange.left == col_pre) {
  74984. left = col_pre;
  74985. width = _this.func_selectedrange.left + _this.func_selectedrange.width - col_pre;
  74986. columnseleted = [col_index, _this.func_selectedrange.column[0]];
  74987. } else {
  74988. left = _this.func_selectedrange.left;
  74989. width = col - _this.func_selectedrange.left - 1;
  74990. columnseleted = [_this.func_selectedrange.column[0], col_index];
  74991. }
  74992. rowseleted[0] = freezen_default.changeFreezenIndex(rowseleted[0], "h");
  74993. rowseleted[1] = freezen_default.changeFreezenIndex(rowseleted[1], "h");
  74994. columnseleted[0] = freezen_default.changeFreezenIndex(columnseleted[0], "v");
  74995. columnseleted[1] = freezen_default.changeFreezenIndex(columnseleted[1], "v");
  74996. let changeparam = menuButton_default.mergeMoveMain(columnseleted, rowseleted, _this.func_selectedrange, top, height, left, width);
  74997. if (changeparam != null) {
  74998. columnseleted = changeparam[0];
  74999. rowseleted = changeparam[1];
  75000. top = changeparam[2];
  75001. height = changeparam[3];
  75002. left = changeparam[4];
  75003. width = changeparam[5];
  75004. }
  75005. _this.func_selectedrange["row"] = rowseleted;
  75006. _this.func_selectedrange["column"] = columnseleted;
  75007. _this.func_selectedrange["left_move"] = left;
  75008. _this.func_selectedrange["width_move"] = width;
  75009. _this.func_selectedrange["top_move"] = top;
  75010. _this.func_selectedrange["height_move"] = height;
  75011. luckysheet_count_show(left, top, width, height, rowseleted, columnseleted);
  75012. $("#luckysheet-formula-functionrange-select").css({
  75013. "left": left,
  75014. "width": width,
  75015. "top": top,
  75016. "height": height
  75017. }).show();
  75018. if ($("#luckysheet-ifFormulaGenerator-multiRange-dialog").is(":visible")) {
  75019. let range2 = getRangetxt(store_default.currentSheetIndex, {"row": rowseleted, "column": columnseleted}, store_default.currentSheetIndex);
  75020. $("#luckysheet-ifFormulaGenerator-multiRange-dialog input").val(range2);
  75021. } else {
  75022. _this.rangeSetValue({
  75023. "row": rowseleted,
  75024. "column": columnseleted
  75025. });
  75026. }
  75027. freezen_default.scrollFreezen(rowseleted, columnseleted);
  75028. },
  75029. rangedrag_column_start: false,
  75030. rangedrag_row_start: false,
  75031. rangedrag_column: function(event2) {
  75032. let _this = this;
  75033. let mouse = mouseposition(event2.pageX, event2.pageY);
  75034. let x = mouse[0] + $("#luckysheet-cell-main").scrollLeft();
  75035. let y = mouse[1] + $("#luckysheet-cell-main").scrollTop();
  75036. let visibledatarow = store_default.visibledatarow;
  75037. let row_index = visibledatarow.length - 1, row = visibledatarow[row_index], row_pre = 0;
  75038. let col_location = colLocation(x), col = col_location[1], col_pre = col_location[0], col_index = col_location[2];
  75039. let left = 0, width = 0, columnseleted = [];
  75040. if (_this.func_selectedrange.left > col_pre) {
  75041. left = col_pre;
  75042. width = _this.func_selectedrange.left + _this.func_selectedrange.width - col_pre;
  75043. columnseleted = [col_index, _this.func_selectedrange.column[1]];
  75044. } else if (_this.func_selectedrange.left == col_pre) {
  75045. left = col_pre;
  75046. width = _this.func_selectedrange.left + _this.func_selectedrange.width - col_pre;
  75047. columnseleted = [col_index, _this.func_selectedrange.column[0]];
  75048. } else {
  75049. left = _this.func_selectedrange.left;
  75050. width = col - _this.func_selectedrange.left - 1;
  75051. columnseleted = [_this.func_selectedrange.column[0], col_index];
  75052. }
  75053. columnseleted[0] = freezen_default.changeFreezenIndex(columnseleted[0], "v");
  75054. columnseleted[1] = freezen_default.changeFreezenIndex(columnseleted[1], "v");
  75055. let changeparam = menuButton_default.mergeMoveMain(columnseleted, [0, row_index], _this.func_selectedrange, row_pre, row - row_pre - 1, left, width);
  75056. if (changeparam != null) {
  75057. columnseleted = changeparam[0];
  75058. left = changeparam[4];
  75059. width = changeparam[5];
  75060. }
  75061. _this.func_selectedrange["column"] = columnseleted;
  75062. _this.func_selectedrange["left_move"] = left;
  75063. _this.func_selectedrange["width_move"] = width;
  75064. luckysheet_count_show(left, row_pre, width, row - row_pre - 1, [0, row_index], columnseleted);
  75065. _this.rangeSetValue({
  75066. "row": [null, null],
  75067. "column": columnseleted
  75068. });
  75069. $("#luckysheet-formula-functionrange-select").css({
  75070. "left": left,
  75071. "width": width,
  75072. "top": row_pre,
  75073. "height": row - row_pre - 1
  75074. }).show();
  75075. freezen_default.scrollFreezen([0, row_index], columnseleted);
  75076. },
  75077. rangedrag_row: function(event2) {
  75078. let _this = this;
  75079. let mouse = mouseposition(event2.pageX, event2.pageY);
  75080. let x = mouse[0] + $("#luckysheet-cell-main").scrollLeft();
  75081. let y = mouse[1] + $("#luckysheet-cell-main").scrollTop();
  75082. let row_location = rowLocation(y), row = row_location[1], row_pre = row_location[0], row_index = row_location[2];
  75083. let visibledatacolumn = store_default.visibledatacolumn;
  75084. let col_index = visibledatacolumn.length - 1, col = visibledatacolumn[col_index], col_pre = 0;
  75085. let top = 0, height = 0, rowseleted = [];
  75086. if (_this.func_selectedrange.top > row_pre) {
  75087. top = row_pre;
  75088. height = _this.func_selectedrange.top + _this.func_selectedrange.height - row_pre;
  75089. rowseleted = [row_index, _this.func_selectedrange.row[1]];
  75090. } else if (_this.func_selectedrange.top == row_pre) {
  75091. top = row_pre;
  75092. height = _this.func_selectedrange.top + _this.func_selectedrange.height - row_pre;
  75093. rowseleted = [row_index, _this.func_selectedrange.row[0]];
  75094. } else {
  75095. top = _this.func_selectedrange.top;
  75096. height = row - _this.func_selectedrange.top - 1;
  75097. rowseleted = [_this.func_selectedrange.row[0], row_index];
  75098. }
  75099. rowseleted[0] = freezen_default.changeFreezenIndex(rowseleted[0], "h");
  75100. rowseleted[1] = freezen_default.changeFreezenIndex(rowseleted[1], "h");
  75101. let changeparam = menuButton_default.mergeMoveMain([0, col_index], rowseleted, _this.func_selectedrange, top, height, col_pre, col - col_pre - 1);
  75102. if (changeparam != null) {
  75103. rowseleted = changeparam[1];
  75104. top = changeparam[2];
  75105. height = changeparam[3];
  75106. }
  75107. _this.func_selectedrange["row"] = rowseleted;
  75108. _this.func_selectedrange["top_move"] = top;
  75109. _this.func_selectedrange["height_move"] = height;
  75110. luckysheet_count_show(col_pre, top, col - col_pre - 1, height, rowseleted, [0, col_index]);
  75111. _this.rangeSetValue({
  75112. "row": rowseleted,
  75113. "column": [null, null]
  75114. });
  75115. $("#luckysheet-formula-functionrange-select").css({
  75116. "left": col_pre,
  75117. "width": col - col_pre - 1,
  75118. "top": top,
  75119. "height": height
  75120. }).show();
  75121. freezen_default.scrollFreezen(rowseleted, [0, col_index]);
  75122. },
  75123. rangedragged: function() {
  75124. },
  75125. rangeResizeObj: null,
  75126. rangeResize: null,
  75127. rangeResizeIndex: null,
  75128. rangeResizexy: null,
  75129. rangeResizeWinH: null,
  75130. rangeResizeWinW: null,
  75131. rangeResizeTo: null,
  75132. rangeResizeDraging: function(event2, luckysheetCurrentChartResizeObj, luckysheetCurrentChartResizeXy, luckysheetCurrentChartResize, luckysheetCurrentChartResizeWinW, luckysheetCurrentChartResizeWinH, ch_width, rh_height) {
  75133. let _this = this;
  75134. let scrollTop = $("#luckysheet-scrollbar-y").scrollTop(), scrollLeft = $("#luckysheet-scrollbar-x").scrollLeft();
  75135. let mouse = mouseposition(event2.pageX, event2.pageY);
  75136. let x = mouse[0] + scrollLeft;
  75137. let y = mouse[1] + scrollTop;
  75138. let row_location = rowLocation(y), row = row_location[1], row_pre = row_location[0], row_index = row_location[2];
  75139. let col_location = colLocation(x), col = col_location[1], col_pre = col_location[0], col_index = col_location[2];
  75140. if (x < 0 || y < 0) {
  75141. return false;
  75142. }
  75143. let topchange = row_pre - luckysheetCurrentChartResizeXy[1], leftchange = col_pre - luckysheetCurrentChartResizeXy[0];
  75144. let top = luckysheetCurrentChartResizeXy[5], height = luckysheetCurrentChartResizeXy[3], left = luckysheetCurrentChartResizeXy[4], width = luckysheetCurrentChartResizeXy[2];
  75145. if (luckysheetCurrentChartResize == "lt" || luckysheetCurrentChartResize == "lb") {
  75146. if (luckysheetCurrentChartResizeXy[0] + luckysheetCurrentChartResizeXy[2] < col_pre) {
  75147. return;
  75148. }
  75149. left = col_pre;
  75150. width = luckysheetCurrentChartResizeXy[2] - leftchange;
  75151. if (left > luckysheetCurrentChartResizeXy[2] + luckysheetCurrentChartResizeXy[4] - col + col_pre) {
  75152. left = luckysheetCurrentChartResizeXy[2] + luckysheetCurrentChartResizeXy[4] - col + col_pre;
  75153. width = luckysheetCurrentChartResizeXy[2] - (luckysheetCurrentChartResizeXy[2] + luckysheetCurrentChartResizeXy[4] - col + col_pre - luckysheetCurrentChartResizeXy[0]);
  75154. } else if (left <= 0) {
  75155. left = 0;
  75156. width = luckysheetCurrentChartResizeXy[2] + luckysheetCurrentChartResizeXy[0];
  75157. }
  75158. }
  75159. if (luckysheetCurrentChartResize == "rt" || luckysheetCurrentChartResize == "rb") {
  75160. if (luckysheetCurrentChartResizeXy[6] - luckysheetCurrentChartResizeXy[2] > col) {
  75161. return;
  75162. }
  75163. width = luckysheetCurrentChartResizeXy[2] + col - luckysheetCurrentChartResizeXy[6];
  75164. if (width < col - col_pre - 1) {
  75165. width = col - col_pre - 1;
  75166. } else if (width >= ch_width - left) {
  75167. width = ch_width - left;
  75168. }
  75169. }
  75170. if (luckysheetCurrentChartResize == "lt" || luckysheetCurrentChartResize == "rt") {
  75171. if (luckysheetCurrentChartResizeXy[1] + luckysheetCurrentChartResizeXy[3] < row_pre) {
  75172. return;
  75173. }
  75174. top = row_pre;
  75175. height = luckysheetCurrentChartResizeXy[3] - topchange;
  75176. if (top > luckysheetCurrentChartResizeXy[3] + luckysheetCurrentChartResizeXy[5] - row + row_pre) {
  75177. top = luckysheetCurrentChartResizeXy[3] + luckysheetCurrentChartResizeXy[5] - row + row_pre;
  75178. height = luckysheetCurrentChartResizeXy[3] - (luckysheetCurrentChartResizeXy[3] + luckysheetCurrentChartResizeXy[5] - row + row_pre - luckysheetCurrentChartResizeXy[1]);
  75179. } else if (top <= 0) {
  75180. top = 0;
  75181. height = luckysheetCurrentChartResizeXy[3] + luckysheetCurrentChartResizeXy[1];
  75182. }
  75183. }
  75184. if (luckysheetCurrentChartResize == "lb" || luckysheetCurrentChartResize == "rb") {
  75185. if (luckysheetCurrentChartResizeXy[7] - luckysheetCurrentChartResizeXy[3] > row) {
  75186. return;
  75187. }
  75188. height = luckysheetCurrentChartResizeXy[3] + row - luckysheetCurrentChartResizeXy[7];
  75189. if (height < row - row_pre - 1) {
  75190. height = row - row_pre - 1;
  75191. } else if (height >= rh_height - top) {
  75192. height = rh_height - top;
  75193. }
  75194. }
  75195. let rangeindex = _this.rangeResizeIndex;
  75196. let selected = {
  75197. "top": top,
  75198. "left": left,
  75199. "height": height,
  75200. "width": width
  75201. };
  75202. let range2 = _this.getSelectedFromRange(selected);
  75203. let rangetxt = getRangetxt(store_default.currentSheetIndex, range2, _this.rangetosheet);
  75204. let $span = _this.rangeResizeTo.find("span[rangeindex='" + rangeindex + "']").html(rangetxt);
  75205. luckysheetRangeLast(_this.rangeResizeTo[0]);
  75206. luckysheetCurrentChartResizeObj.css(selected).data("range", range2);
  75207. },
  75208. getSelectedFromRange: function(obj) {
  75209. let row_st = obj.top + 2, row_ed = obj.top + obj.height - 2;
  75210. let col_st = obj.left + 2, col_ed = obj.left + obj.width - 2;
  75211. let ret = {
  75212. "row": [
  75213. rowLocation(row_st)[2],
  75214. rowLocation(row_ed)[2]
  75215. ],
  75216. "column": [
  75217. colLocation(col_st)[2],
  75218. colLocation(col_ed)[2]
  75219. ]
  75220. };
  75221. return ret;
  75222. },
  75223. rangeResizeDragged: function(event2, luckysheetCurrentChartResizeObj, luckysheetCurrentChartResizeXy, luckysheetCurrentChartResize, luckysheetCurrentChartResizeWinW, luckysheetCurrentChartResizeWinH) {
  75224. let _this = this;
  75225. _this.rangeResize = null;
  75226. $("#luckysheet-formula-functionrange-highlight-" + _this.rangeResizeIndex).find(".luckysheet-selection-copy-hc").css("opacity", 0.03);
  75227. },
  75228. rangeMovexy: null,
  75229. rangeMove: false,
  75230. rangeMoveObj: null,
  75231. rangeMoveIndex: null,
  75232. rangeMoveRangedata: null,
  75233. rangeMoveDraging: function(event2, luckysheet_cell_selected_move_index, luckysheet_select_save, obj, sheetBarHeight, statisticBarHeight) {
  75234. let _this = this;
  75235. let mouse = mouseposition(event2.pageX, event2.pageY);
  75236. let scrollLeft = $("#luckysheet-scrollbar-x").scrollLeft();
  75237. let scrollTop = $("#luckysheet-scrollbar-y").scrollTop();
  75238. let x = mouse[0] + scrollLeft;
  75239. let y = mouse[1] + scrollTop;
  75240. let winH = $(window).height() + scrollTop - sheetBarHeight - statisticBarHeight, winW = $(window).width() + scrollLeft;
  75241. let row_index_original = luckysheet_cell_selected_move_index[0], col_index_original = luckysheet_cell_selected_move_index[1];
  75242. let row_s = luckysheet_select_save["row"][0] - row_index_original + rowLocation(y)[2], row_e = luckysheet_select_save["row"][1] - row_index_original + rowLocation(y)[2];
  75243. let col_s = luckysheet_select_save["column"][0] - col_index_original + colLocation(x)[2], col_e = luckysheet_select_save["column"][1] - col_index_original + colLocation(x)[2];
  75244. if (row_s < 0 || y < 0) {
  75245. row_s = 0;
  75246. row_e = luckysheet_select_save["row"][1] - luckysheet_select_save["row"][0];
  75247. }
  75248. if (col_s < 0 || x < 0) {
  75249. col_s = 0;
  75250. col_e = luckysheet_select_save["column"][1] - luckysheet_select_save["column"][0];
  75251. }
  75252. let visibledatarow = store_default.visibledatarow;
  75253. if (row_e >= visibledatarow[visibledatarow.length - 1] || y > winH) {
  75254. row_s = visibledatarow.length - 1 - luckysheet_select_save["row"][1] + luckysheet_select_save["row"][0];
  75255. row_e = visibledatarow.length - 1;
  75256. }
  75257. let visibledatacolumn = store_default.visibledatacolumn;
  75258. if (col_e >= visibledatacolumn[visibledatacolumn.length - 1] || x > winW) {
  75259. col_s = visibledatacolumn.length - 1 - luckysheet_select_save["column"][1] + luckysheet_select_save["column"][0];
  75260. col_e = visibledatacolumn.length - 1;
  75261. }
  75262. let col_pre = col_s - 1 == -1 ? 0 : visibledatacolumn[col_s - 1], col = visibledatacolumn[col_e];
  75263. let row_pre = row_s - 1 == -1 ? 0 : visibledatarow[row_s - 1], row = visibledatarow[row_e];
  75264. let rangeindex = _this.rangeMoveIndex;
  75265. let selected = {
  75266. "left": col_pre,
  75267. "width": col - col_pre - 2,
  75268. "top": row_pre,
  75269. "height": row - row_pre - 2,
  75270. "display": "block"
  75271. };
  75272. let range2 = _this.getSelectedFromRange(selected);
  75273. let rangetxt = getRangetxt(store_default.currentSheetIndex, range2, _this.rangetosheet);
  75274. let $span = _this.rangeResizeTo.find("span[rangeindex='" + rangeindex + "']").html(rangetxt);
  75275. luckysheetRangeLast(_this.rangeResizeTo[0]);
  75276. _this.rangeMoveRangedata = range2;
  75277. obj.css(selected);
  75278. },
  75279. rangeMoveDragged: function(obj) {
  75280. let _this = this;
  75281. _this.rangeMove = false;
  75282. $("#luckysheet-formula-functionrange-highlight-" + _this.rangeMoveIndex).data("range", _this.rangeMoveRangedata).find(".luckysheet-selection-copy-hc").css("opacity", 0.03);
  75283. },
  75284. functionHTMLIndex: 0,
  75285. functionRangeIndex: null,
  75286. findrangeindex: function(v, vp) {
  75287. let _this = this;
  75288. let re = /<span.*?>/g;
  75289. let v_a = v.replace(re, ""), vp_a = vp.replace(re, "");
  75290. v_a = v_a.split("</span>");
  75291. vp_a = vp_a.split("</span>");
  75292. v_a.pop();
  75293. vp_a.pop();
  75294. let pfri = _this.functionRangeIndex;
  75295. let i2 = 0;
  75296. let spanlen = vp_a.length > v_a.length ? v_a.length : vp_a.length;
  75297. let vplen = vp_a.length, vlen = v_a.length;
  75298. if (vplen == vlen) {
  75299. let i3 = pfri[0];
  75300. let p = vp_a[i3], n = v_a[i3];
  75301. if (p == null) {
  75302. if (vp_a.length <= i3) {
  75303. pfri = [vp_a.length - 1, vp_a.length - 1];
  75304. } else if (v_a.length <= i3) {
  75305. pfri = [v_a.length - 1, v_a.length - 1];
  75306. }
  75307. return pfri;
  75308. } else if (p.length == n.length) {
  75309. if (vp_a[i3 + 1] != null && v_a[i3 + 1] != null && vp_a[i3 + 1].length < v_a[i3 + 1].length) {
  75310. pfri[0] = pfri[0] + 1;
  75311. pfri[1] = 1;
  75312. }
  75313. return pfri;
  75314. } else if (p.length > n.length) {
  75315. if (p != null && v_a[i3 + 1] != null && v_a[i3 + 1].substr(0, 1) == '"' && (p.indexOf("{") > -1 || p.indexOf("}") > -1)) {
  75316. pfri[0] = pfri[0] + 1;
  75317. pfri[1] = 1;
  75318. }
  75319. return pfri;
  75320. } else if (p.length < n.length) {
  75321. if (pfri[1] > n.length) {
  75322. pfri[1] = n.length;
  75323. }
  75324. return pfri;
  75325. }
  75326. } else if (vplen > vlen) {
  75327. let i3 = pfri[0];
  75328. let p = vp_a[i3], n = v_a[i3];
  75329. if (n == null) {
  75330. if (v_a[i3 - 1].indexOf("{") > -1) {
  75331. pfri[0] = pfri[0] - 1;
  75332. let start = v_a[i3 - 1].search("{");
  75333. pfri[1] = pfri[1] + start;
  75334. } else {
  75335. pfri[0] = 0;
  75336. pfri[1] = 0;
  75337. }
  75338. } else if (p.length == n.length) {
  75339. if (v_a[i3 + 1] != null && (v_a[i3 + 1].substr(0, 1) == '"' || v_a[i3 + 1].substr(0, 1) == "{" || v_a[i3 + 1].substr(0, 1) == "}")) {
  75340. pfri[0] = pfri[0] + 1;
  75341. pfri[1] = 1;
  75342. } else if (p != null && p.length > 2 && p.substr(0, 1) == '"' && p.substr(p.length - 1, 1) == '"') {
  75343. } else if (v_a[i3] != null && v_a[i3] == '")') {
  75344. pfri[1] = 1;
  75345. } else if (v_a[i3] != null && v_a[i3] == '"}') {
  75346. pfri[1] = 1;
  75347. } else if (v_a[i3] != null && v_a[i3] == "{)") {
  75348. pfri[1] = 1;
  75349. } else {
  75350. pfri[1] = n.length;
  75351. }
  75352. return pfri;
  75353. } else if (p.length > n.length) {
  75354. if (v_a[i3 + 1] != null && (v_a[i3 + 1].substr(0, 1) == '"' || v_a[i3 + 1].substr(0, 1) == "{" || v_a[i3 + 1].substr(0, 1) == "}")) {
  75355. pfri[0] = pfri[0] + 1;
  75356. pfri[1] = 1;
  75357. }
  75358. return pfri;
  75359. } else if (p.length < n.length) {
  75360. return pfri;
  75361. }
  75362. return pfri;
  75363. } else if (vplen < vlen) {
  75364. let i3 = pfri[0];
  75365. let p = vp_a[i3], n = v_a[i3];
  75366. if (p == null) {
  75367. pfri[0] = v_a.length - 1;
  75368. if (n != null) {
  75369. pfri[1] = n.length;
  75370. } else {
  75371. pfri[1] = 1;
  75372. }
  75373. } else if (p.length == n.length) {
  75374. if (vp_a[i3 + 1] != null && (vp_a[i3 + 1].substr(0, 1) == '"' || vp_a[i3 + 1].substr(0, 1) == "{" || vp_a[i3 + 1].substr(0, 1) == "}")) {
  75375. pfri[1] = n.length;
  75376. } else if (v_a[i3 + 1] != null && v_a[i3 + 1].substr(0, 1) == '"' && (v_a[i3 + 1].substr(0, 1) == "{" || v_a[i3 + 1].substr(0, 1) == "}")) {
  75377. pfri[0] = pfri[0] + 1;
  75378. pfri[1] = 1;
  75379. } else if (n != null && n.substr(0, 1) == '"' && n.substr(n.length - 1, 1) == '"' && p.substr(0, 1) == '"' && p.substr(p.length - 1, 1) == ")") {
  75380. pfri[1] = n.length;
  75381. } else if (n != null && n.substr(0, 1) == "{" && n.substr(n.length - 1, 1) == "}" && p.substr(0, 1) == "{" && p.substr(p.length - 1, 1) == ")") {
  75382. pfri[1] = n.length;
  75383. } else {
  75384. pfri[0] = pfri[0] + vlen - vplen;
  75385. if (v_a.length > vp_a.length) {
  75386. pfri[1] = v_a[i3 + 1].length;
  75387. } else {
  75388. pfri[1] = 1;
  75389. }
  75390. }
  75391. return pfri;
  75392. } else if (p.length > n.length) {
  75393. if (p != null && p.substr(0, 1) == '"') {
  75394. pfri[1] = n.length;
  75395. } else if (v_a[i3 + 1] != null && /{.*?}/.test(v_a[i3 + 1])) {
  75396. pfri[0] = pfri[0] + 1;
  75397. pfri[1] = v_a[i3 + 1].length;
  75398. } else if (p != null && v_a[i3 + 1].substr(0, 1) == '"' && (p.indexOf("{") > -1 || p.indexOf("}") > -1)) {
  75399. pfri[0] = pfri[0] + 1;
  75400. pfri[1] = 1;
  75401. } else if (p != null && (p.indexOf("{") > -1 || p.indexOf("}") > -1)) {
  75402. } else {
  75403. pfri[0] = pfri[0] + vlen - vplen - 1;
  75404. pfri[1] = v_a[i3 - 1].length;
  75405. }
  75406. return pfri;
  75407. } else if (p.length < n.length) {
  75408. return pfri;
  75409. }
  75410. return pfri;
  75411. }
  75412. return null;
  75413. },
  75414. setCaretPosition: function(textDom, children, pos) {
  75415. try {
  75416. let el = textDom;
  75417. let range2 = document.createRange();
  75418. let sel = window.getSelection();
  75419. range2.setStart(el.childNodes[children], pos);
  75420. range2.collapse(true);
  75421. sel.removeAllRanges();
  75422. sel.addRange(range2);
  75423. el.focus();
  75424. } catch (err) {
  75425. luckysheetRangeLast(this.rangeResizeTo[0]);
  75426. }
  75427. },
  75428. functionRange: function(obj, v, vp) {
  75429. let _this = this;
  75430. if (window.getSelection) {
  75431. let currSelection = window.getSelection();
  75432. let fri = _this.findrangeindex(v, vp);
  75433. if (fri == null) {
  75434. currSelection.selectAllChildren(obj.get(0));
  75435. currSelection.collapseToEnd();
  75436. } else {
  75437. _this.setCaretPosition(obj.find("span").get(fri[0]), 0, fri[1]);
  75438. }
  75439. } else if (document.selection) {
  75440. _this.functionRangeIndex.moveToElementText(obj);
  75441. _this.functionRangeIndex.collapse(false);
  75442. _this.functionRangeIndex.select();
  75443. }
  75444. },
  75445. functionInputHanddler: function($to, $input, kcode) {
  75446. if (isEditMode()) {
  75447. return;
  75448. }
  75449. let _this = this;
  75450. let $copy = $to, $editer = $input;
  75451. let value1 = $editer.html(), value1txt = $editer.text();
  75452. let xssDeal = this.xssDeal;
  75453. setTimeout(function() {
  75454. let value = $editer.text(), valuetxt = value;
  75455. value = xssDeal(value);
  75456. if (value.length > 0 && value.substr(0, 1) == "=" && (kcode != 229 || value.length == 1)) {
  75457. value = _this.functionHTMLGenerate(value);
  75458. value1 = _this.functionHTMLGenerate(value1txt);
  75459. if (window.getSelection) {
  75460. let currSelection = window.getSelection();
  75461. if ($(currSelection.anchorNode).is("div")) {
  75462. let editorlen = $("#luckysheet-rich-text-editor span").length;
  75463. _this.functionRangeIndex = [editorlen - 1, $("#luckysheet-rich-text-editor").find("span").eq(editorlen - 1).text().length];
  75464. } else {
  75465. _this.functionRangeIndex = [$(currSelection.anchorNode).parent().index(), currSelection.anchorOffset];
  75466. }
  75467. } else {
  75468. let textRange = document.selection.createRange();
  75469. _this.functionRangeIndex = textRange;
  75470. }
  75471. $editer.html(value);
  75472. _this.functionRange($editer, value, value1);
  75473. _this.canceFunctionrangeSelected();
  75474. if (kcode != 46) {
  75475. _this.createRangeHightlight();
  75476. }
  75477. $copy.html(value);
  75478. _this.rangestart = false;
  75479. _this.rangedrag_column_start = false;
  75480. _this.rangedrag_row_start = false;
  75481. _this.rangeHightlightselected($editer, kcode);
  75482. } else if (value1txt.substr(0, 1) != "=") {
  75483. if ($copy.attr("id") == "luckysheet-rich-text-editor") {
  75484. if ($copy.html().substr(0, 5) == "<span") {
  75485. } else {
  75486. value = _this.ltGtSignDeal(value);
  75487. $copy.html(value);
  75488. }
  75489. } else {
  75490. value = _this.ltGtSignDeal(value);
  75491. $copy.html(value);
  75492. }
  75493. }
  75494. }, 1);
  75495. },
  75496. functionHTMLGenerate: function(txt) {
  75497. let _this = this;
  75498. if (txt.length == 0 || txt.substr(0, 1) != "=") {
  75499. return txt;
  75500. }
  75501. _this.functionHTMLIndex = 0;
  75502. return '<span dir="auto" class="luckysheet-formula-text-color">=</span>' + _this.functionHTML(txt);
  75503. },
  75504. functionHTML: function(txt) {
  75505. let _this = this;
  75506. if (_this.operatorjson == null) {
  75507. let arr = _this.operator.split("|"), op = {};
  75508. for (let i3 = 0; i3 < arr.length; i3++) {
  75509. op[arr[i3].toString()] = 1;
  75510. }
  75511. _this.operatorjson = op;
  75512. }
  75513. if (txt.substr(0, 1) == "=") {
  75514. txt = txt.substr(1);
  75515. }
  75516. let funcstack = txt.split("");
  75517. let i2 = 0, str = "", function_str = "", ispassby = true;
  75518. let matchConfig = {
  75519. "bracket": 0,
  75520. "comma": 0,
  75521. "squote": 0,
  75522. "dquote": 0,
  75523. "braces": 0
  75524. };
  75525. while (i2 < funcstack.length) {
  75526. let s = funcstack[i2];
  75527. if (s == "(" && matchConfig.squote == 0 && matchConfig.dquote == 0 && matchConfig.braces == 0) {
  75528. matchConfig.bracket += 1;
  75529. if (str.length > 0) {
  75530. function_str += '<span dir="auto" class="luckysheet-formula-text-func">' + str + '</span><span dir="auto" class="luckysheet-formula-text-lpar">(</span>';
  75531. } else {
  75532. function_str += '<span dir="auto" class="luckysheet-formula-text-lpar">(</span>';
  75533. }
  75534. str = "";
  75535. } else if (s == ")" && matchConfig.squote == 0 && matchConfig.dquote == 0 && matchConfig.braces == 0) {
  75536. matchConfig.bracket -= 1;
  75537. function_str += _this.functionHTML(str) + '<span dir="auto" class="luckysheet-formula-text-rpar">)</span>';
  75538. str = "";
  75539. } else if (s == "{" && matchConfig.squote == 0 && matchConfig.dquote == 0) {
  75540. str += "{";
  75541. matchConfig.braces += 1;
  75542. } else if (s == "}" && matchConfig.squote == 0 && matchConfig.dquote == 0) {
  75543. str += "}";
  75544. matchConfig.braces -= 1;
  75545. } else if (s == '"' && matchConfig.squote == 0) {
  75546. if (matchConfig.dquote > 0) {
  75547. if (str.length > 0) {
  75548. function_str += str + '"</span>';
  75549. } else {
  75550. function_str += '"</span>';
  75551. }
  75552. matchConfig.dquote -= 1;
  75553. str = "";
  75554. } else {
  75555. matchConfig.dquote += 1;
  75556. if (str.length > 0) {
  75557. function_str += _this.functionHTML(str) + '<span dir="auto" class="luckysheet-formula-text-string">"';
  75558. } else {
  75559. function_str += '<span dir="auto" class="luckysheet-formula-text-string">"';
  75560. }
  75561. str = "";
  75562. }
  75563. } else if (s == "'" && matchConfig.dquote == 0) {
  75564. str += "'";
  75565. matchConfig.squote = matchConfig.squote == 0 ? 1 : 0;
  75566. } else if (s == "," && matchConfig.squote == 0 && matchConfig.dquote == 0 && matchConfig.braces == 0) {
  75567. function_str += _this.functionHTML(str) + '<span dir="auto" class="luckysheet-formula-text-comma">,</span>';
  75568. str = "";
  75569. } else if (s == "&" && matchConfig.squote == 0 && matchConfig.dquote == 0 && matchConfig.braces == 0) {
  75570. if (str.length > 0) {
  75571. function_str += _this.functionHTML(str) + '<span dir="auto" class="luckysheet-formula-text-calc">&</span>';
  75572. str = "";
  75573. } else {
  75574. function_str += '<span dir="auto" class="luckysheet-formula-text-calc">&</span>';
  75575. }
  75576. } else if (s in _this.operatorjson && matchConfig.squote == 0 && matchConfig.dquote == 0 && matchConfig.braces == 0) {
  75577. let s_next = "";
  75578. if (i2 + 1 < funcstack.length) {
  75579. s_next = funcstack[i2 + 1];
  75580. }
  75581. let p = i2 - 1, s_pre = null;
  75582. if (p >= 0) {
  75583. do {
  75584. s_pre = funcstack[p--];
  75585. } while (p >= 0 && s_pre == " ");
  75586. }
  75587. if (s + s_next in _this.operatorjson) {
  75588. if (str.length > 0) {
  75589. function_str += _this.functionHTML(str) + '<span dir="auto" class="luckysheet-formula-text-calc">' + s + s_next + "</span>";
  75590. str = "";
  75591. } else {
  75592. function_str += '<span dir="auto" class="luckysheet-formula-text-calc">' + s + s_next + "</span>";
  75593. }
  75594. i2++;
  75595. } else if (!/[^0-9]/.test(s_next) && s == "-" && (s_pre == "(" || s_pre == null || s_pre == "," || s_pre == " " || s_pre in _this.operatorjson)) {
  75596. str += s;
  75597. } else {
  75598. if (str.length > 0) {
  75599. function_str += _this.functionHTML(str) + '<span dir="auto" class="luckysheet-formula-text-calc">' + s + "</span>";
  75600. str = "";
  75601. } else {
  75602. function_str += '<span dir="auto" class="luckysheet-formula-text-calc">' + s + "</span>";
  75603. }
  75604. }
  75605. } else {
  75606. str += s;
  75607. }
  75608. if (i2 == funcstack.length - 1) {
  75609. if (_this.iscelldata($.trim(str))) {
  75610. function_str += '<span class="luckysheet-formula-functionrange-cell" rangeindex="' + _this.functionHTMLIndex + '" dir="auto" style="color:' + luckyColor[_this.functionHTMLIndex] + ';">' + str + "</span>";
  75611. _this.functionHTMLIndex++;
  75612. } else if (matchConfig.dquote > 0) {
  75613. function_str += str + "</span>";
  75614. } else if (str.indexOf("</span>") == -1 && str.length > 0) {
  75615. let regx = /{.*?}/;
  75616. if (regx.test($.trim(str))) {
  75617. let arraytxt = regx.exec(str)[0];
  75618. let arraystart = str.search(regx);
  75619. let alltxt = "";
  75620. if (arraystart > 0) {
  75621. alltxt += '<span dir="auto" class="luckysheet-formula-text-color">' + str.substr(0, arraystart) + "</span>";
  75622. }
  75623. alltxt += '<span dir="auto" style="color:#959a05" class="luckysheet-formula-text-array">' + arraytxt + "</span>";
  75624. if (arraystart + arraytxt.length < str.length) {
  75625. alltxt += '<span dir="auto" class="luckysheet-formula-text-color">' + str.substr(arraystart + arraytxt.length, str.length) + "</span>";
  75626. }
  75627. function_str += alltxt;
  75628. } else {
  75629. function_str += '<span dir="auto" class="luckysheet-formula-text-color">' + str + "</span>";
  75630. }
  75631. }
  75632. }
  75633. i2++;
  75634. }
  75635. return function_str;
  75636. },
  75637. getfunctionParam: function(txt) {
  75638. let _this = this;
  75639. if (_this.operatorjson == null) {
  75640. let arr = _this.operator.split("|"), op = {};
  75641. for (let i3 = 0; i3 < arr.length; i3++) {
  75642. op[arr[i3].toString()] = 1;
  75643. }
  75644. _this.operatorjson = op;
  75645. }
  75646. if (txt.substr(0, 1) == "=") {
  75647. txt = txt.substr(1);
  75648. }
  75649. let funcstack = txt.split("");
  75650. let i2 = 0, str = "", function_str = "";
  75651. let matchConfig = {
  75652. "bracket": 0,
  75653. "comma": 0,
  75654. "squote": 0,
  75655. "dquote": 0,
  75656. "compare": 0
  75657. };
  75658. let fn = null, param = [], bracket = [];
  75659. while (i2 < funcstack.length) {
  75660. let s = funcstack[i2];
  75661. if (s == "(" && matchConfig.dquote == 0) {
  75662. if (str.length > 0 && bracket.length == 0) {
  75663. fn = str.toUpperCase();
  75664. bracket.push(1);
  75665. str = "";
  75666. } else if (bracket.length == 0) {
  75667. bracket.push(0);
  75668. str = "";
  75669. } else {
  75670. bracket.push(0);
  75671. str += s;
  75672. }
  75673. } else if (s == ")" && matchConfig.dquote == 0) {
  75674. let bt = bracket.pop();
  75675. if (bracket.length == 0) {
  75676. param.push(str);
  75677. str = "";
  75678. } else {
  75679. str += s;
  75680. }
  75681. } else if (s == '"') {
  75682. str += '"';
  75683. if (matchConfig.dquote > 0) {
  75684. matchConfig.dquote -= 1;
  75685. str = "";
  75686. } else {
  75687. matchConfig.dquote += 1;
  75688. }
  75689. } else if (s == "," && matchConfig.dquote == 0) {
  75690. if (bracket.length <= 1) {
  75691. param.push(str);
  75692. str = "";
  75693. } else {
  75694. str += ",";
  75695. }
  75696. } else if (s in _this.operatorjson && matchConfig.dquote == 0) {
  75697. let s_next = "";
  75698. if (i2 + 1 < funcstack.length) {
  75699. s_next = funcstack[i2 + 1];
  75700. }
  75701. let p = i2 - 1, s_pre = null;
  75702. if (p >= 0) {
  75703. do {
  75704. s_pre = funcstack[p--];
  75705. } while (p >= 0 && s_pre == " ");
  75706. }
  75707. if (!/[^0-9]/.test(s_next) && s == "-" && (s_pre == "(" || s_pre == null || s_pre == "," || s_pre == " " || s_pre in _this.operatorjson)) {
  75708. if (matchConfig.dquote == 0) {
  75709. str += $.trim(s);
  75710. } else {
  75711. str += s;
  75712. }
  75713. } else {
  75714. function_str = "";
  75715. str = "";
  75716. }
  75717. } else {
  75718. if (matchConfig.dquote == 0) {
  75719. str += $.trim(s);
  75720. } else {
  75721. str += s;
  75722. }
  75723. }
  75724. i2++;
  75725. }
  75726. return {"fn": fn, "param": param};
  75727. },
  75728. calPostfixExpression: function(cal) {
  75729. if (cal.length == 0) {
  75730. return "";
  75731. }
  75732. let stack = [];
  75733. for (let i2 = cal.length - 1; i2 >= 0; i2--) {
  75734. let c2 = cal[i2];
  75735. if (c2 in this.operatorjson) {
  75736. let s2 = stack.pop();
  75737. let s1 = stack.pop();
  75738. let str = "luckysheet_compareWith(" + s1 + ",'" + c2 + "', " + s2 + ")";
  75739. stack.push(str);
  75740. } else {
  75741. stack.push(c2);
  75742. }
  75743. }
  75744. if (stack.length > 0) {
  75745. return stack[0];
  75746. } else {
  75747. return "";
  75748. }
  75749. },
  75750. checkBracketNum: function(fp) {
  75751. let bra_l = fp.match(/\(/g), bra_r = fp.match(/\)/g), bra_tl_txt = fp.match(/(['"])(?:(?!\1).)*?\1/g), bra_tr_txt = fp.match(/(['"])(?:(?!\1).)*?\1/g);
  75752. let bra_l_len = 0, bra_r_len = 0;
  75753. if (bra_l != null) {
  75754. bra_l_len += bra_l.length;
  75755. }
  75756. if (bra_r != null) {
  75757. bra_r_len += bra_r.length;
  75758. }
  75759. let bra_tl_len = 0, bra_tr_len = 0;
  75760. if (bra_tl_txt != null) {
  75761. for (let i2 = 0; i2 < bra_tl_txt.length; i2++) {
  75762. let bra_tl = bra_tl_txt[i2].match(/\(/g);
  75763. if (bra_tl != null) {
  75764. bra_tl_len += bra_tl.length;
  75765. }
  75766. }
  75767. }
  75768. if (bra_tr_txt != null) {
  75769. for (let i2 = 0; i2 < bra_tr_txt.length; i2++) {
  75770. let bra_tr = bra_tr_txt[i2].match(/\)/g);
  75771. if (bra_tr != null) {
  75772. bra_tr_len += bra_tr.length;
  75773. }
  75774. }
  75775. }
  75776. bra_l_len -= bra_tl_len;
  75777. bra_r_len -= bra_tr_len;
  75778. if (bra_l_len != bra_r_len) {
  75779. return false;
  75780. } else {
  75781. return true;
  75782. }
  75783. },
  75784. operatorPriority: {
  75785. "^": 0,
  75786. "%": 1,
  75787. "*": 1,
  75788. "/": 1,
  75789. "+": 2,
  75790. "-": 2
  75791. },
  75792. functionParserExe: function(txt) {
  75793. let _this = this;
  75794. return this.functionParser(txt);
  75795. },
  75796. functionParser: function(txt, cellRangeFunction) {
  75797. let _this = this;
  75798. if (_this.operatorjson == null) {
  75799. let arr = _this.operator.split("|"), op = {};
  75800. for (let i3 = 0; i3 < arr.length; i3++) {
  75801. op[arr[i3].toString()] = 1;
  75802. }
  75803. _this.operatorjson = op;
  75804. }
  75805. if (txt == null) {
  75806. return "";
  75807. }
  75808. if (txt.substr(0, 2) == "=+") {
  75809. txt = txt.substr(2);
  75810. } else if (txt.substr(0, 1) == "=") {
  75811. txt = txt.substr(1);
  75812. }
  75813. let funcstack = txt.split("");
  75814. let i2 = 0, str = "", function_str = "";
  75815. let matchConfig = {
  75816. "bracket": 0,
  75817. "comma": 0,
  75818. "squote": 0,
  75819. "dquote": 0,
  75820. "compare": 0,
  75821. "braces": 0
  75822. };
  75823. let cal1 = [], cal2 = [], bracket = [];
  75824. let firstSQ = -1;
  75825. while (i2 < funcstack.length) {
  75826. let s = funcstack[i2];
  75827. if (s == "(" && matchConfig.squote == 0 && matchConfig.dquote == 0 && matchConfig.braces == 0) {
  75828. if (str.length > 0 && bracket.length == 0) {
  75829. str = str.toUpperCase();
  75830. if (str.indexOf(":") > -1) {
  75831. let funcArray = str.split(":");
  75832. function_str += "luckysheet_getSpecialReference(true,'" + $.trim(funcArray[0]).replace(/'/g, "\\'") + "', luckysheet_function." + funcArray[1] + ".f(#lucky#";
  75833. } else {
  75834. function_str += "luckysheet_function." + str + ".f(";
  75835. }
  75836. bracket.push(1);
  75837. str = "";
  75838. } else if (bracket.length == 0) {
  75839. function_str += "(";
  75840. bracket.push(0);
  75841. str = "";
  75842. } else {
  75843. bracket.push(0);
  75844. str += s;
  75845. }
  75846. } else if (s == ")" && matchConfig.squote == 0 && matchConfig.dquote == 0 && matchConfig.braces == 0) {
  75847. let bt = bracket.pop();
  75848. if (bracket.length == 0) {
  75849. let functionS = _this.functionParser(str, cellRangeFunction);
  75850. if (functionS.indexOf("#lucky#") > -1) {
  75851. functionS = functionS.replace(/#lucky#/g, "") + ")";
  75852. }
  75853. function_str += functionS + ")";
  75854. str = "";
  75855. } else {
  75856. str += s;
  75857. }
  75858. } else if (s == "{" && matchConfig.squote == 0 && matchConfig.dquote == 0) {
  75859. str += "{";
  75860. matchConfig.braces += 1;
  75861. } else if (s == "}" && matchConfig.squote == 0 && matchConfig.dquote == 0) {
  75862. str += "}";
  75863. matchConfig.braces -= 1;
  75864. } else if (s == '"' && matchConfig.squote == 0) {
  75865. if (matchConfig.dquote > 0) {
  75866. if (i2 < funcstack.length - 1 && funcstack[i2 + 1] == '"') {
  75867. i2++;
  75868. str += "\x7F";
  75869. } else {
  75870. matchConfig.dquote -= 1;
  75871. str += '"';
  75872. }
  75873. } else {
  75874. matchConfig.dquote += 1;
  75875. str += '"';
  75876. }
  75877. } else if (s == "'" && matchConfig.dquote == 0) {
  75878. str += "'";
  75879. if (matchConfig.squote > 0) {
  75880. if (firstSQ == i2 - 1) {
  75881. return "";
  75882. }
  75883. if (i2 < funcstack.length - 1 && funcstack[i2 + 1] == "'") {
  75884. i2++;
  75885. str += "'";
  75886. } else {
  75887. if (funcstack[i2 - 1] == "'") {
  75888. return "";
  75889. } else {
  75890. matchConfig.squote -= 1;
  75891. }
  75892. }
  75893. } else {
  75894. matchConfig.squote += 1;
  75895. firstSQ = i2;
  75896. }
  75897. } else if (s == "," && matchConfig.squote == 0 && matchConfig.dquote == 0 && matchConfig.braces == 0) {
  75898. if (bracket.length <= 1) {
  75899. let functionS = _this.functionParser(str, cellRangeFunction);
  75900. if (functionS.indexOf("#lucky#") > -1) {
  75901. functionS = functionS.replace(/#lucky#/g, "") + ")";
  75902. }
  75903. function_str += functionS + ",";
  75904. str = "";
  75905. } else {
  75906. str += ",";
  75907. }
  75908. } else if (s in _this.operatorjson && matchConfig.squote == 0 && matchConfig.dquote == 0 && matchConfig.braces == 0) {
  75909. let s_next = "";
  75910. let op = _this.operatorPriority;
  75911. if (i2 + 1 < funcstack.length) {
  75912. s_next = funcstack[i2 + 1];
  75913. }
  75914. if (s + s_next in _this.operatorjson) {
  75915. if (bracket.length == 0) {
  75916. if ($.trim(str).length > 0) {
  75917. cal2.unshift(_this.functionParser($.trim(str), cellRangeFunction));
  75918. } else if ($.trim(function_str).length > 0) {
  75919. cal2.unshift($.trim(function_str));
  75920. }
  75921. if (cal1[0] in _this.operatorjson) {
  75922. let stackCeilPri = op[cal1[0]];
  75923. while (cal1.length > 0 && stackCeilPri != null) {
  75924. cal2.unshift(cal1.shift());
  75925. stackCeilPri = op[cal1[0]];
  75926. }
  75927. }
  75928. cal1.unshift(s + s_next);
  75929. function_str = "";
  75930. str = "";
  75931. } else {
  75932. str += s + s_next;
  75933. }
  75934. i2++;
  75935. } else {
  75936. if (bracket.length == 0) {
  75937. if ($.trim(str).length > 0) {
  75938. cal2.unshift(_this.functionParser($.trim(str), cellRangeFunction));
  75939. } else if ($.trim(function_str).length > 0) {
  75940. cal2.unshift($.trim(function_str));
  75941. }
  75942. if (cal1[0] in _this.operatorjson) {
  75943. let stackCeilPri = op[cal1[0]];
  75944. stackCeilPri = stackCeilPri == null ? 1e3 : stackCeilPri;
  75945. let sPri = op[s];
  75946. sPri = sPri == null ? 1e3 : sPri;
  75947. while (cal1.length > 0 && sPri >= stackCeilPri) {
  75948. cal2.unshift(cal1.shift());
  75949. stackCeilPri = op[cal1[0]];
  75950. stackCeilPri = stackCeilPri == null ? 1e3 : stackCeilPri;
  75951. }
  75952. }
  75953. cal1.unshift(s);
  75954. function_str = "";
  75955. str = "";
  75956. } else {
  75957. str += s;
  75958. }
  75959. }
  75960. } else {
  75961. if (matchConfig.dquote == 0 && matchConfig.squote == 0) {
  75962. str += s;
  75963. } else {
  75964. str += s;
  75965. }
  75966. }
  75967. if (i2 == funcstack.length - 1) {
  75968. let endstr = "";
  75969. let str_nb = $.trim(str).replace(/'/g, "\\'");
  75970. if (_this.iscelldata(str_nb) && str_nb.substr(0, 1) != ":") {
  75971. endstr = "luckysheet_getcelldata('" + str_nb + "')";
  75972. if (typeof cellRangeFunction == "function") {
  75973. cellRangeFunction(str_nb);
  75974. }
  75975. } else if (str_nb.substr(0, 1) == ":") {
  75976. str_nb = str_nb.substr(1);
  75977. if (_this.iscelldata(str_nb)) {
  75978. endstr = "luckysheet_getSpecialReference(false," + function_str + ",'" + str_nb + "')";
  75979. }
  75980. } else {
  75981. str = $.trim(str);
  75982. let regx = /{.*?}/;
  75983. if (regx.test(str) && str.substr(0, 1) != '"' && str.substr(str.length - 1, 1) != '"') {
  75984. let arraytxt = regx.exec(str)[0];
  75985. let arraystart = str.search(regx);
  75986. let alltxt = "";
  75987. if (arraystart > 0) {
  75988. endstr += str.substr(0, arraystart);
  75989. }
  75990. endstr += "luckysheet_getarraydata('" + arraytxt + "')";
  75991. if (arraystart + arraytxt.length < str.length) {
  75992. endstr += str.substr(arraystart + arraytxt.length, str.length);
  75993. }
  75994. } else {
  75995. endstr = str;
  75996. }
  75997. }
  75998. if (endstr.length > 0) {
  75999. cal2.unshift(endstr);
  76000. }
  76001. if (cal1.length > 0) {
  76002. if (function_str.length > 0) {
  76003. cal2.unshift(function_str);
  76004. function_str = "";
  76005. }
  76006. while (cal1.length > 0) {
  76007. cal2.unshift(cal1.shift());
  76008. }
  76009. }
  76010. if (cal2.length > 0) {
  76011. function_str = _this.calPostfixExpression(cal2);
  76012. } else {
  76013. function_str += endstr;
  76014. }
  76015. }
  76016. i2++;
  76017. }
  76018. return function_str;
  76019. },
  76020. insertUpdateDynamicArray: function(dynamicArrayItem) {
  76021. let r2 = dynamicArrayItem.r, c2 = dynamicArrayItem.c, index2 = dynamicArrayItem.index;
  76022. if (index2 == null) {
  76023. index2 = store_default.currentSheetIndex;
  76024. }
  76025. let luckysheetfile = getluckysheetfile();
  76026. let file = luckysheetfile[getSheetIndex(index2)];
  76027. let dynamicArray = file.dynamicArray;
  76028. if (dynamicArray == null) {
  76029. dynamicArray = [];
  76030. }
  76031. for (let i2 = 0; i2 < dynamicArray.length; i2++) {
  76032. let calc = dynamicArray[i2];
  76033. if (calc.r == r2 && calc.c == c2 && calc.index == index2) {
  76034. calc.data = dynamicArrayItem.data;
  76035. calc.f = dynamicArrayItem.f;
  76036. return dynamicArray;
  76037. }
  76038. }
  76039. dynamicArray.push(dynamicArrayItem);
  76040. return dynamicArray;
  76041. },
  76042. addFunctionGroup: function(r2, c2, func, index2) {
  76043. if (index2 == null) {
  76044. index2 = store_default.currentSheetIndex;
  76045. }
  76046. let luckysheetfile = getluckysheetfile();
  76047. let file = luckysheetfile[getSheetIndex(index2)];
  76048. if (file.calcChain == null) {
  76049. file.calcChain = [];
  76050. }
  76051. let cc = {
  76052. "r": r2,
  76053. "c": c2,
  76054. "index": index2,
  76055. "func": func
  76056. };
  76057. file.calcChain.push(cc);
  76058. server_default.saveParam("fc", index2, JSON.stringify(cc), {
  76059. "op": "add",
  76060. "pos": file.calcChain.length - 1
  76061. });
  76062. setluckysheetfile(luckysheetfile);
  76063. },
  76064. getAllFunctionGroup: function() {
  76065. let luckysheetfile = getluckysheetfile();
  76066. let ret = [];
  76067. for (let i2 = 0; i2 < luckysheetfile.length; i2++) {
  76068. let file = luckysheetfile[i2];
  76069. let calcChain = file.calcChain;
  76070. if (calcChain) {
  76071. let tempCalcChain = [];
  76072. calcChain.forEach((item2, idx) => {
  76073. if (typeof item2 === "string") {
  76074. tempCalcChain.push(JSON.parse(item2));
  76075. } else {
  76076. tempCalcChain.push(item2);
  76077. }
  76078. });
  76079. calcChain = file.calcChain = tempCalcChain;
  76080. }
  76081. let dynamicArray_compute = file.dynamicArray_compute;
  76082. if (calcChain == null) {
  76083. calcChain = [];
  76084. }
  76085. if (dynamicArray_compute == null) {
  76086. dynamicArray_compute = [];
  76087. }
  76088. ret = ret.concat(calcChain);
  76089. for (let i3 = 0; i3 < dynamicArray_compute.length; i3++) {
  76090. let d = dynamicArray_compute[0];
  76091. ret.push({
  76092. r: d.r,
  76093. c: d.c,
  76094. index: d.index
  76095. });
  76096. }
  76097. }
  76098. return ret;
  76099. },
  76100. getFunctionGroup: function(index2) {
  76101. if (index2 == null) {
  76102. index2 = store_default.currentSheetIndex;
  76103. }
  76104. let luckysheetfile = getluckysheetfile();
  76105. let file = luckysheetfile[getSheetIndex(index2)];
  76106. if (file.calcChain == null) {
  76107. return [];
  76108. }
  76109. return file.calcChain;
  76110. },
  76111. updateFunctionGroup: function(r2, c2, index2) {
  76112. if (index2 == null) {
  76113. index2 = store_default.currentSheetIndex;
  76114. }
  76115. let luckysheetfile = getluckysheetfile();
  76116. let file = luckysheetfile[getSheetIndex(index2)];
  76117. let calcChain = file.calcChain;
  76118. if (calcChain != null) {
  76119. for (let i2 = 0; i2 < calcChain.length; i2++) {
  76120. let calc = calcChain[i2];
  76121. if (calc.r == r2 && calc.c == c2 && calc.index == index2) {
  76122. server_default.saveParam("fc", index2, JSON.stringify(calc), {
  76123. "op": "update",
  76124. "pos": i2
  76125. });
  76126. break;
  76127. }
  76128. }
  76129. }
  76130. setluckysheetfile(luckysheetfile);
  76131. },
  76132. insertUpdateFunctionGroup: function(r2, c2, index2) {
  76133. if (index2 == null) {
  76134. index2 = store_default.currentSheetIndex;
  76135. }
  76136. let luckysheetfile = getluckysheetfile();
  76137. let file = luckysheetfile[getSheetIndex(index2)];
  76138. let calcChain = file.calcChain;
  76139. if (calcChain == null) {
  76140. calcChain = [];
  76141. }
  76142. for (let i2 = 0; i2 < calcChain.length; i2++) {
  76143. let calc = calcChain[i2];
  76144. if (calc.r == r2 && calc.c == c2 && calc.index == index2) {
  76145. server_default.saveParam("fc", index2, JSON.stringify(calc), {
  76146. "op": "update",
  76147. "pos": i2
  76148. });
  76149. return;
  76150. }
  76151. }
  76152. let cc = {
  76153. "r": r2,
  76154. "c": c2,
  76155. "index": index2
  76156. };
  76157. calcChain.push(cc);
  76158. file.calcChain = calcChain;
  76159. server_default.saveParam("fc", index2, JSON.stringify(cc), {
  76160. "op": "add",
  76161. "pos": file.calcChain.length - 1
  76162. });
  76163. setluckysheetfile(luckysheetfile);
  76164. },
  76165. isFunctionRangeSave: false,
  76166. isFunctionRangeSimple: function(txt, r2, c2, index2, dynamicArray_compute) {
  76167. if (txt == null || txt.length == 0) {
  76168. return;
  76169. }
  76170. let txtArray = txt.split(/==|!=|<>|<=|>=|[,()=+-\/*%&^><]/g);
  76171. if (txtArray.length > 0) {
  76172. for (let i2 = 0; i2 < txtArray.length; i2++) {
  76173. let t = txtArray[i2];
  76174. if (t.length <= 1) {
  76175. continue;
  76176. }
  76177. if (t.substr(0, 1) == '"' && t.substr(t.length - 1, 1) == '"') {
  76178. continue;
  76179. }
  76180. this.isFunctionRangeSaveChange(t, r2, c2, index2, dynamicArray_compute);
  76181. }
  76182. }
  76183. },
  76184. isFunctionRangeSimple1: function(txt, r2, c2, index2, dynamicArray_compute) {
  76185. let _this = this;
  76186. if (_this.operatorjson == null) {
  76187. let arr = _this.operator.split("|"), op = {};
  76188. for (let i3 = 0; i3 < arr.length; i3++) {
  76189. op[arr[i3].toString()] = 1;
  76190. }
  76191. _this.operatorjson = op;
  76192. }
  76193. if (txt.substr(0, 1) == "=") {
  76194. txt = txt.substr(1);
  76195. }
  76196. let funcstack = txt.split("");
  76197. let i2 = 0, str = "", function_str = "", ispassby = true;
  76198. let matchConfig = {
  76199. "bracket": 0,
  76200. "comma": 0,
  76201. "squote": 0,
  76202. "dquote": 0
  76203. };
  76204. let luckysheetfile = getluckysheetfile();
  76205. while (i2 < funcstack.length) {
  76206. let s = funcstack[i2];
  76207. if (s == "(" && matchConfig.dquote == 0) {
  76208. matchConfig.bracket += 1;
  76209. if (str.length > 0) {
  76210. function_str += "luckysheet_function." + str.toUpperCase() + ".f(";
  76211. } else {
  76212. function_str += "(";
  76213. }
  76214. str = "";
  76215. } else if (s == ")" && matchConfig.dquote == 0) {
  76216. matchConfig.bracket -= 1;
  76217. function_str += _this.isFunctionRangeSimple(str, r2, c2, index2, dynamicArray_compute) + ")";
  76218. str = "";
  76219. } else if (s == "," && matchConfig.dquote == 0) {
  76220. function_str += _this.isFunctionRangeSimple(str, r2, c2, index2, dynamicArray_compute) + ",";
  76221. str = "";
  76222. } else if (s in _this.operatorjson && matchConfig.dquote == 0) {
  76223. let s_next = "";
  76224. if (i2 + 1 < funcstack.length) {
  76225. s_next = funcstack[i2 + 1];
  76226. }
  76227. if (s + s_next in _this.operatorjson) {
  76228. if (str.length > 0) {
  76229. function_str += _this.isFunctionRangeSimple(str, r2, c2, index2, dynamicArray_compute) + s + s_next;
  76230. str = "";
  76231. } else {
  76232. function_str += s + s_next;
  76233. }
  76234. i2++;
  76235. } else {
  76236. if (str.length > 0) {
  76237. function_str += _this.isFunctionRangeSimple(str, r2, c2, index2, dynamicArray_compute) + s;
  76238. str = "";
  76239. } else {
  76240. function_str += s;
  76241. }
  76242. }
  76243. } else {
  76244. str += s;
  76245. }
  76246. if (i2 == funcstack.length - 1) {
  76247. if (_this.iscelldata($.trim(str))) {
  76248. _this.isFunctionRangeSaveChange(str, r2, c2, index2, dynamicArray_compute);
  76249. } else {
  76250. }
  76251. }
  76252. i2++;
  76253. }
  76254. return function_str;
  76255. },
  76256. isFunctionRangeSelect: function(txt, r2, c2, index2, dynamicArray_compute) {
  76257. if (txt == null || txt == "") {
  76258. return;
  76259. }
  76260. if (index2 == null) {
  76261. index2 = store_default.currentSheetIndex;
  76262. }
  76263. if (dynamicArray_compute == null) {
  76264. dynamicArray_compute = {};
  76265. }
  76266. let _this = this;
  76267. let txt1 = txt.toUpperCase();
  76268. let isOffsetFunc = txt1.indexOf("INDIRECT(") > -1 || txt1.indexOf("OFFSET(") > -1 || txt1.indexOf("INDEX(") > -1;
  76269. if (txt in this.formulaContainCellList) {
  76270. let cellList = this.formulaContainCellList[txt];
  76271. if (isOffsetFunc) {
  76272. let isoff = cellList["__LuckyisOff__"];
  76273. if (isoff == true) {
  76274. for (let cellStr in cellList) {
  76275. if (cellStr == "__LuckyisOff__") {
  76276. continue;
  76277. }
  76278. this.isFunctionRangeSaveChange(cellStr, r2, c2, index2, dynamicArray_compute);
  76279. }
  76280. } else {
  76281. this.isFunctionRange(txt, r2, c2, index2, dynamicArray_compute, function(str) {
  76282. _this.addToCellList(txt, str);
  76283. });
  76284. cellList["__LuckyisOff__"] = true;
  76285. }
  76286. } else {
  76287. for (let cellStr in cellList) {
  76288. if (cellStr == "__LuckyisOff__") {
  76289. continue;
  76290. }
  76291. this.isFunctionRangeSaveChange(cellStr, r2, c2, index2, dynamicArray_compute);
  76292. }
  76293. }
  76294. return;
  76295. }
  76296. if (isOffsetFunc) {
  76297. this.isFunctionRange(txt, r2, c2, index2, dynamicArray_compute);
  76298. } else {
  76299. this.isFunctionRangeSimple(txt, r2, c2, index2, dynamicArray_compute);
  76300. }
  76301. },
  76302. isFunctionRange: function(txt, r2, c2, index2, dynamicArray_compute, cellRangeFunction) {
  76303. let _this = this;
  76304. if (_this.operatorjson == null) {
  76305. let arr = _this.operator.split("|"), op = {};
  76306. for (let i3 = 0; i3 < arr.length; i3++) {
  76307. op[arr[i3].toString()] = 1;
  76308. }
  76309. _this.operatorjson = op;
  76310. }
  76311. if (txt.substr(0, 1) == "=") {
  76312. txt = txt.substr(1);
  76313. }
  76314. let funcstack = txt.split("");
  76315. let i2 = 0, str = "", function_str = "", ispassby = true;
  76316. let matchConfig = {
  76317. "bracket": 0,
  76318. "comma": 0,
  76319. "squote": 0,
  76320. "dquote": 0,
  76321. "compare": 0,
  76322. "braces": 0
  76323. };
  76324. let cal1 = [], cal2 = [], bracket = [];
  76325. let firstSQ = -1;
  76326. while (i2 < funcstack.length) {
  76327. let s = funcstack[i2];
  76328. if (s == "(" && matchConfig.squote == 0 && matchConfig.dquote == 0 && matchConfig.braces == 0) {
  76329. if (str.length > 0 && bracket.length == 0) {
  76330. str = str.toUpperCase();
  76331. if (str.indexOf(":") > -1) {
  76332. let funcArray = str.split(":");
  76333. function_str += "luckysheet_getSpecialReference(true,'" + $.trim(funcArray[0]).replace(/'/g, "\\'") + "', luckysheet_function." + funcArray[1] + ".f(#lucky#";
  76334. } else {
  76335. function_str += "luckysheet_function." + str + ".f(";
  76336. }
  76337. bracket.push(1);
  76338. str = "";
  76339. } else if (bracket.length == 0) {
  76340. function_str += "(";
  76341. bracket.push(0);
  76342. str = "";
  76343. } else {
  76344. bracket.push(0);
  76345. str += s;
  76346. }
  76347. } else if (s == ")" && matchConfig.squote == 0 && matchConfig.dquote == 0 && matchConfig.braces == 0) {
  76348. let bt = bracket.pop();
  76349. if (bracket.length == 0) {
  76350. let functionS = _this.isFunctionRange(str, r2, c2, index2, dynamicArray_compute, cellRangeFunction);
  76351. if (functionS.indexOf("#lucky#") > -1) {
  76352. functionS = functionS.replace(/#lucky#/g, "") + ")";
  76353. }
  76354. function_str += functionS + ")";
  76355. str = "";
  76356. } else {
  76357. str += s;
  76358. }
  76359. } else if (s == "{" && matchConfig.squote == 0 && matchConfig.dquote == 0) {
  76360. str += "{";
  76361. matchConfig.braces += 1;
  76362. } else if (s == "}" && matchConfig.squote == 0 && matchConfig.dquote == 0) {
  76363. str += "}";
  76364. matchConfig.braces -= 1;
  76365. } else if (s == '"' && matchConfig.squote == 0) {
  76366. if (matchConfig.dquote > 0) {
  76367. if (i2 < funcstack.length - 1 && funcstack[i2 + 1] == '"') {
  76368. i2++;
  76369. str += "\x7F";
  76370. } else {
  76371. matchConfig.dquote -= 1;
  76372. str += '"';
  76373. }
  76374. } else {
  76375. matchConfig.dquote += 1;
  76376. str += '"';
  76377. }
  76378. } else if (s == "'" && matchConfig.dquote == 0) {
  76379. str += "'";
  76380. if (matchConfig.squote > 0) {
  76381. if (i2 < funcstack.length - 1 && funcstack[i2 + 1] == "'") {
  76382. i2++;
  76383. str += "'";
  76384. } else {
  76385. matchConfig.squote -= 1;
  76386. }
  76387. } else {
  76388. matchConfig.squote += 1;
  76389. firstSQ = i2;
  76390. }
  76391. } else if (s == "," && matchConfig.squote == 0 && matchConfig.dquote == 0 && matchConfig.braces == 0) {
  76392. if (bracket.length <= 1) {
  76393. let functionS = _this.isFunctionRange(str, r2, c2, index2, dynamicArray_compute, cellRangeFunction);
  76394. if (functionS.indexOf("#lucky#") > -1) {
  76395. functionS = functionS.replace(/#lucky#/g, "") + ")";
  76396. }
  76397. function_str += functionS + ",";
  76398. str = "";
  76399. } else {
  76400. str += ",";
  76401. }
  76402. } else if (s in _this.operatorjson && matchConfig.squote == 0 && matchConfig.dquote == 0 && matchConfig.braces == 0) {
  76403. let s_next = "";
  76404. let op = _this.operatorPriority;
  76405. if (i2 + 1 < funcstack.length) {
  76406. s_next = funcstack[i2 + 1];
  76407. }
  76408. if (s + s_next in _this.operatorjson) {
  76409. if (bracket.length == 0) {
  76410. if ($.trim(str).length > 0) {
  76411. cal2.unshift(_this.isFunctionRange($.trim(str), r2, c2, index2, dynamicArray_compute, cellRangeFunction));
  76412. } else if ($.trim(function_str).length > 0) {
  76413. cal2.unshift($.trim(function_str));
  76414. }
  76415. if (cal1[0] in _this.operatorjson) {
  76416. let stackCeilPri = op[cal1[0]];
  76417. while (cal1.length > 0 && stackCeilPri != null) {
  76418. cal2.unshift(cal1.shift());
  76419. stackCeilPri = op[cal1[0]];
  76420. }
  76421. }
  76422. cal1.unshift(s + s_next);
  76423. function_str = "";
  76424. str = "";
  76425. } else {
  76426. str += s + s_next;
  76427. }
  76428. i2++;
  76429. } else {
  76430. if (bracket.length == 0) {
  76431. if ($.trim(str).length > 0) {
  76432. cal2.unshift(_this.isFunctionRange($.trim(str), r2, c2, index2, dynamicArray_compute, cellRangeFunction));
  76433. } else if ($.trim(function_str).length > 0) {
  76434. cal2.unshift($.trim(function_str));
  76435. }
  76436. if (cal1[0] in _this.operatorjson) {
  76437. let stackCeilPri = op[cal1[0]];
  76438. stackCeilPri = stackCeilPri == null ? 1e3 : stackCeilPri;
  76439. let sPri = op[s];
  76440. sPri = sPri == null ? 1e3 : sPri;
  76441. while (cal1.length > 0 && sPri >= stackCeilPri) {
  76442. cal2.unshift(cal1.shift());
  76443. stackCeilPri = op[cal1[0]];
  76444. stackCeilPri = stackCeilPri == null ? 1e3 : stackCeilPri;
  76445. }
  76446. }
  76447. cal1.unshift(s);
  76448. function_str = "";
  76449. str = "";
  76450. } else {
  76451. str += s;
  76452. }
  76453. }
  76454. } else {
  76455. if (matchConfig.dquote == 0 && matchConfig.squote == 0) {
  76456. str += $.trim(s);
  76457. } else {
  76458. str += s;
  76459. }
  76460. }
  76461. if (i2 == funcstack.length - 1) {
  76462. let endstr = "";
  76463. let str_nb = $.trim(str).replace(/'/g, "\\'");
  76464. if (_this.iscelldata(str_nb) && str_nb.substr(0, 1) != ":") {
  76465. endstr = "luckysheet_getcelldata('" + str_nb + "')";
  76466. _this.isFunctionRangeSaveChange(str, r2, c2, index2, dynamicArray_compute);
  76467. } else if (str_nb.substr(0, 1) == ":") {
  76468. str_nb = str_nb.substr(1);
  76469. if (_this.iscelldata(str_nb)) {
  76470. endstr = "luckysheet_getSpecialReference(false," + function_str + ",'" + str_nb + "')";
  76471. }
  76472. } else {
  76473. str = $.trim(str);
  76474. let regx = /{.*?}/;
  76475. if (regx.test(str) && str.substr(0, 1) != '"' && str.substr(str.length - 1, 1) != '"') {
  76476. let arraytxt = regx.exec(str)[0];
  76477. let arraystart = str.search(regx);
  76478. let alltxt = "";
  76479. if (arraystart > 0) {
  76480. endstr += str.substr(0, arraystart);
  76481. }
  76482. endstr += "luckysheet_getarraydata('" + arraytxt + "')";
  76483. if (arraystart + arraytxt.length < str.length) {
  76484. endstr += str.substr(arraystart + arraytxt.length, str.length);
  76485. }
  76486. } else {
  76487. endstr = str;
  76488. }
  76489. }
  76490. if (endstr.length > 0) {
  76491. cal2.unshift(endstr);
  76492. }
  76493. if (cal1.length > 0) {
  76494. if (function_str.length > 0) {
  76495. cal2.unshift(function_str);
  76496. function_str = "";
  76497. }
  76498. while (cal1.length > 0) {
  76499. cal2.unshift(cal1.shift());
  76500. }
  76501. }
  76502. if (cal2.length > 0) {
  76503. function_str = _this.calPostfixExpression(cal2);
  76504. } else {
  76505. function_str += endstr;
  76506. }
  76507. }
  76508. i2++;
  76509. }
  76510. _this.checkSpecialFunctionRange(function_str, r2, c2, index2, dynamicArray_compute, cellRangeFunction);
  76511. return function_str;
  76512. },
  76513. isFunctionRangeSaveChange: function(str, r2, c2, index2, dynamicArray_compute) {
  76514. let _this = this;
  76515. if (r2 != null && c2 != null) {
  76516. let range2 = _this.getcellrange($.trim(str), index2);
  76517. if (range2 == null) {
  76518. return;
  76519. }
  76520. let row = range2.row, col = range2.column, sheetIndex = range2.sheetIndex;
  76521. if (r2 + "_" + c2 in dynamicArray_compute && (index2 == sheetIndex || index2 == null)) {
  76522. let isd_range = false;
  76523. for (let d_r = row[0]; d_r <= row[1]; d_r++) {
  76524. for (let d_c = col[0]; d_c <= col[1]; d_c++) {
  76525. if (d_r + "_" + d_c in dynamicArray_compute && dynamicArray_compute[d_r + "_" + d_c].r == r2 && dynamicArray_compute[d_r + "_" + d_c].c == c2) {
  76526. isd_range = true;
  76527. }
  76528. }
  76529. }
  76530. if (isd_range) {
  76531. _this.isFunctionRangeSave = _this.isFunctionRangeSave || true;
  76532. } else {
  76533. _this.isFunctionRangeSave = _this.isFunctionRangeSave || false;
  76534. }
  76535. } else {
  76536. if (r2 >= row[0] && r2 <= row[1] && c2 >= col[0] && c2 <= col[1] && (index2 == sheetIndex || index2 == null)) {
  76537. _this.isFunctionRangeSave = _this.isFunctionRangeSave || true;
  76538. } else {
  76539. _this.isFunctionRangeSave = _this.isFunctionRangeSave || false;
  76540. }
  76541. }
  76542. } else {
  76543. _this.isFunctionRangeSave = _this.isFunctionRangeSave || false;
  76544. }
  76545. },
  76546. checkSpecialFunctionRange: function(function_str, r2, c2, index2, dynamicArray_compute, cellRangeFunction) {
  76547. if (function_str.substr(0, 30) == "luckysheet_getSpecialReference" || function_str.substr(0, 20) == "luckysheet_function.") {
  76548. if (function_str.substr(0, 20) == "luckysheet_function.") {
  76549. let funcName = function_str.split(".")[1];
  76550. if (funcName != null) {
  76551. funcName = funcName.toUpperCase();
  76552. if (funcName != "INDIRECT" && funcName != "OFFSET" && funcName != "INDEX") {
  76553. return;
  76554. }
  76555. }
  76556. }
  76557. try {
  76558. store_default.calculateSheetIndex = index2;
  76559. let str = new Function("return " + function_str)();
  76560. if (str instanceof Object && str.startCell != null) {
  76561. str = str.startCell;
  76562. }
  76563. let str_nb = $.trim(str);
  76564. if (this.iscelldata(str_nb)) {
  76565. if (typeof cellRangeFunction == "function") {
  76566. cellRangeFunction(str_nb);
  76567. }
  76568. }
  76569. } catch (e) {
  76570. }
  76571. }
  76572. },
  76573. execvertex: {},
  76574. execFunctionGroupData: null,
  76575. execFunctionExist: null,
  76576. formulaContainSheetList: {},
  76577. formulaContainCellList: {},
  76578. cellTextToIndexList: {},
  76579. addToCellList: function(formulaTxt, cellstring) {
  76580. if (formulaTxt == null || formulaTxt.length == 0 || cellstring == null || cellstring.length == 0) {
  76581. return;
  76582. }
  76583. if (this.formulaContainCellList == null) {
  76584. this.formulaContainCellList = {};
  76585. }
  76586. if (this.formulaContainCellList[formulaTxt] == null) {
  76587. this.formulaContainCellList[formulaTxt] = {};
  76588. }
  76589. this.formulaContainCellList[formulaTxt][cellstring] = 1;
  76590. },
  76591. addToCellIndexList: function(txt, infoObj) {
  76592. if (txt == null || txt.length == 0 || infoObj == null) {
  76593. return;
  76594. }
  76595. if (this.cellTextToIndexList == null) {
  76596. this.cellTextToIndexList = {};
  76597. }
  76598. if (txt.indexOf("!") > -1) {
  76599. txt = txt.replace(/\\'/g, "'").replace(/''/g, "'");
  76600. this.cellTextToIndexList[txt] = infoObj;
  76601. } else {
  76602. this.cellTextToIndexList[txt + "_" + infoObj.sheetIndex] = infoObj;
  76603. }
  76604. },
  76605. addToSheetIndexList: function(formulaTxt, sheetIndex, obIndex) {
  76606. if (formulaTxt == null || formulaTxt.length == 0) {
  76607. return;
  76608. }
  76609. if (sheetIndex == null || sheetIndex.length == 0) {
  76610. sheetIndex = store_default.currentSheetIndex;
  76611. }
  76612. if (obIndex == null || obIndex.length == 0) {
  76613. obIndex = "";
  76614. }
  76615. if (this.formulaContainSheetList == null) {
  76616. this.formulaContainSheetList = {};
  76617. }
  76618. if (this.formulaContainSheetList[formulaTxt] == null) {
  76619. this.formulaContainSheetList[formulaTxt] = {};
  76620. }
  76621. this.formulaContainSheetList[formulaTxt][sheetIndex] = obIndex;
  76622. },
  76623. execFunctionGlobalData: {},
  76624. execFunctionGroupForce: function(isForce) {
  76625. if (isForce) {
  76626. this.execFunctionGroup(void 0, void 0, void 0, void 0, void 0, true);
  76627. } else {
  76628. this.execFunctionGroup();
  76629. }
  76630. },
  76631. execFunctionGroup: function(origin_r, origin_c, value, index2, data, isForce = false) {
  76632. let _this = this;
  76633. if (data == null) {
  76634. data = store_default.flowdata;
  76635. }
  76636. if (!window.luckysheet_compareWith) {
  76637. window.luckysheet_compareWith = luckysheet_compareWith;
  76638. window.luckysheet_getarraydata = luckysheet_getarraydata;
  76639. window.luckysheet_getcelldata = luckysheet_getcelldata;
  76640. window.luckysheet_parseData = luckysheet_parseData;
  76641. window.luckysheet_getValue = luckysheet_getValue;
  76642. window.luckysheet_indirect_check = luckysheet_indirect_check;
  76643. window.luckysheet_indirect_check_return = luckysheet_indirect_check_return;
  76644. window.luckysheet_offset_check = luckysheet_offset_check;
  76645. window.luckysheet_calcADPMM = luckysheet_calcADPMM;
  76646. window.luckysheet_getSpecialReference = luckysheet_getSpecialReference;
  76647. }
  76648. if (_this.execFunctionGlobalData == null) {
  76649. _this.execFunctionGlobalData = {};
  76650. }
  76651. if (index2 == null) {
  76652. index2 = store_default.currentSheetIndex;
  76653. }
  76654. if (value != null) {
  76655. let cellCache = [[{v: null}]];
  76656. setcellvalue(0, 0, cellCache, value);
  76657. _this.execFunctionGlobalData[origin_r + "_" + origin_c + "_" + index2] = cellCache[0][0];
  76658. }
  76659. let calcChains = _this.getAllFunctionGroup(), formulaObjects = {};
  76660. let sheets = getluckysheetfile();
  76661. let sheetData = {};
  76662. for (let i2 = 0; i2 < sheets.length; i2++) {
  76663. let sheet = sheets[i2];
  76664. sheetData[sheet.index] = sheet.data;
  76665. }
  76666. let updateValueOjects = {}, updateValueArray = [];
  76667. if (_this.execFunctionExist == null) {
  76668. let key = "r" + origin_r + "c" + origin_c + "i" + index2;
  76669. updateValueOjects[key] = 1;
  76670. } else {
  76671. for (let x = 0; x < _this.execFunctionExist.length; x++) {
  76672. let cell = _this.execFunctionExist[x];
  76673. let key = "r" + cell.r + "c" + cell.c + "i" + cell.i;
  76674. updateValueOjects[key] = 1;
  76675. }
  76676. }
  76677. let arrayMatchCache = {};
  76678. let arrayMatch = function(formulaArray, formulaObjects2, updateValueOjects2, func) {
  76679. for (let a = 0; a < formulaArray.length; a++) {
  76680. let range2 = formulaArray[a];
  76681. let cacheKey = "r" + range2.row[0] + "" + range2.row[1] + "c" + range2.column[0] + "" + range2.column[1] + "index" + range2.sheetIndex;
  76682. if (cacheKey in arrayMatchCache) {
  76683. let amc = arrayMatchCache[cacheKey];
  76684. amc.forEach((item2) => {
  76685. func(item2.key, item2.r, item2.c, item2.sheetIndex);
  76686. });
  76687. } else {
  76688. let functionArr = [];
  76689. for (let r2 = range2.row[0]; r2 <= range2.row[1]; r2++) {
  76690. for (let c2 = range2.column[0]; c2 <= range2.column[1]; c2++) {
  76691. let key = "r" + r2 + "c" + c2 + "i" + range2.sheetIndex;
  76692. func(key, r2, c2, range2.sheetIndex);
  76693. if (formulaObjects2 && key in formulaObjects2 || updateValueOjects2 && key in updateValueOjects2) {
  76694. functionArr.push({
  76695. key,
  76696. r: r2,
  76697. c: c2,
  76698. sheetIndex: range2.sheetIndex
  76699. });
  76700. }
  76701. }
  76702. }
  76703. if (formulaObjects2 || updateValueOjects2) {
  76704. arrayMatchCache[cacheKey] = functionArr;
  76705. }
  76706. }
  76707. }
  76708. };
  76709. let existsChildFormulaMatch = {}, ii = 0;
  76710. for (let i2 = 0; i2 < calcChains.length; i2++) {
  76711. let formulaCell = calcChains[i2];
  76712. let key = "r" + formulaCell.r + "c" + formulaCell.c + "i" + formulaCell.index;
  76713. let calc_funcStr = getcellFormula(formulaCell.r, formulaCell.c, formulaCell.index);
  76714. if (calc_funcStr == null) {
  76715. continue;
  76716. }
  76717. let txt1 = calc_funcStr.toUpperCase();
  76718. let isOffsetFunc = txt1.indexOf("INDIRECT(") > -1 || txt1.indexOf("OFFSET(") > -1 || txt1.indexOf("INDEX(") > -1;
  76719. let formulaArray = [];
  76720. if (isOffsetFunc) {
  76721. this.isFunctionRange(calc_funcStr, null, null, formulaCell.index, null, function(str_nb) {
  76722. let range2 = _this.getcellrange($.trim(str_nb), formulaCell.index);
  76723. if (range2 != null) {
  76724. formulaArray.push(range2);
  76725. }
  76726. });
  76727. } else if (!(calc_funcStr.substr(0, 2) == '="' && calc_funcStr.substr(calc_funcStr.length - 1, 1) == '"')) {
  76728. let point = 0;
  76729. let squote = -1;
  76730. let dquote = -1;
  76731. let formulaTextArray = [];
  76732. let sq_end_array = [];
  76733. let calc_funcStr_length = calc_funcStr.length;
  76734. for (let i3 = 0; i3 < calc_funcStr_length; i3++) {
  76735. let char = calc_funcStr.charAt(i3);
  76736. if (char == "'" && dquote == -1) {
  76737. if (squote == -1) {
  76738. if (point != i3) {
  76739. formulaTextArray.push(...calc_funcStr.substring(point, i3).split(/==|!=|<>|<=|>=|[,()=+-\/*%&\^><]/));
  76740. }
  76741. squote = i3;
  76742. point = i3;
  76743. } else {
  76744. if (i3 < calc_funcStr_length - 1 && calc_funcStr.charAt(i3 + 1) == "'") {
  76745. i3++;
  76746. } else {
  76747. point = i3 + 1;
  76748. formulaTextArray.push(calc_funcStr.substring(squote, point));
  76749. sq_end_array.push(formulaTextArray.length - 1);
  76750. squote = -1;
  76751. }
  76752. }
  76753. }
  76754. if (char == '"' && squote == -1) {
  76755. if (dquote == -1) {
  76756. if (point != i3) {
  76757. formulaTextArray.push(...calc_funcStr.substring(point, i3).split(/==|!=|<>|<=|>=|[,()=+-\/*%&\^><]/));
  76758. }
  76759. dquote = i3;
  76760. point = i3;
  76761. } else {
  76762. if (i3 < calc_funcStr_length - 1 && calc_funcStr.charAt(i3 + 1) == '"') {
  76763. i3++;
  76764. } else {
  76765. point = i3 + 1;
  76766. formulaTextArray.push(calc_funcStr.substring(dquote, point));
  76767. dquote = -1;
  76768. }
  76769. }
  76770. }
  76771. }
  76772. if (point != calc_funcStr_length) {
  76773. formulaTextArray.push(...calc_funcStr.substring(point, calc_funcStr_length).split(/==|!=|<>|<=|>=|[,()=+-\/*%&\^><]/));
  76774. }
  76775. for (let i3 = sq_end_array.length - 1; i3 >= 0; i3--) {
  76776. if (sq_end_array[i3] != formulaTextArray.length - 1) {
  76777. formulaTextArray[sq_end_array[i3]] = formulaTextArray[sq_end_array[i3]] + formulaTextArray[sq_end_array[i3] + 1];
  76778. formulaTextArray.splice(sq_end_array[i3] + 1, 1);
  76779. }
  76780. }
  76781. for (let i3 = 0; i3 < formulaTextArray.length; i3++) {
  76782. let t = formulaTextArray[i3];
  76783. if (t.length <= 1) {
  76784. continue;
  76785. }
  76786. if (t.substr(0, 1) == '"' && t.substr(t.length - 1, 1) == '"' && !_this.iscelldata(t)) {
  76787. continue;
  76788. }
  76789. let range2 = _this.getcellrange($.trim(t), formulaCell.index);
  76790. if (range2 == null) {
  76791. continue;
  76792. }
  76793. formulaArray.push(range2);
  76794. }
  76795. }
  76796. let item2 = {
  76797. formulaArray,
  76798. calc_funcStr,
  76799. key,
  76800. r: formulaCell.r,
  76801. c: formulaCell.c,
  76802. index: formulaCell.index,
  76803. parents: {},
  76804. chidren: {},
  76805. color: "w"
  76806. };
  76807. formulaObjects[key] = item2;
  76808. }
  76809. Object.keys(formulaObjects).forEach((key) => {
  76810. let formulaObject = formulaObjects[key];
  76811. arrayMatch(formulaObject.formulaArray, formulaObjects, updateValueOjects, function(childKey) {
  76812. if (childKey in formulaObjects) {
  76813. let childFormulaObject = formulaObjects[childKey];
  76814. formulaObject.chidren[childKey] = 1;
  76815. childFormulaObject.parents[key] = 1;
  76816. }
  76817. if (!isForce && childKey in updateValueOjects) {
  76818. updateValueArray.push(formulaObject);
  76819. }
  76820. });
  76821. if (isForce) {
  76822. updateValueArray.push(formulaObject);
  76823. }
  76824. });
  76825. let formulaRunList = [];
  76826. let stack = updateValueArray, existsFormulaRunList = {};
  76827. while (stack.length > 0) {
  76828. let formulaObject = stack.pop();
  76829. if (formulaObject == null || formulaObject.key in existsFormulaRunList) {
  76830. continue;
  76831. }
  76832. if (formulaObject.color == "b") {
  76833. formulaRunList.push(formulaObject);
  76834. existsFormulaRunList[formulaObject.key] = 1;
  76835. continue;
  76836. }
  76837. let cacheStack = [];
  76838. Object.keys(formulaObject.parents).forEach((parentKey) => {
  76839. let parentFormulaObject = formulaObjects[parentKey];
  76840. if (parentFormulaObject != null) {
  76841. cacheStack.push(parentFormulaObject);
  76842. }
  76843. });
  76844. ii++;
  76845. if (cacheStack.length == 0) {
  76846. formulaRunList.push(formulaObject);
  76847. existsFormulaRunList[formulaObject.key] = 1;
  76848. } else {
  76849. formulaObject.color = "b";
  76850. stack.push(formulaObject);
  76851. stack = stack.concat(cacheStack);
  76852. }
  76853. }
  76854. formulaRunList.reverse();
  76855. for (let i2 = 0; i2 < formulaRunList.length; i2++) {
  76856. let formulaCell = formulaRunList[i2];
  76857. if (formulaCell.level == Math.max) {
  76858. continue;
  76859. }
  76860. window.luckysheet_getcelldata_cache = null;
  76861. let calc_funcStr = formulaCell.calc_funcStr;
  76862. let v = _this.execfunction(calc_funcStr, formulaCell.r, formulaCell.c, formulaCell.index);
  76863. _this.groupValuesRefreshData.push({
  76864. "r": formulaCell.r,
  76865. "c": formulaCell.c,
  76866. "v": v[1],
  76867. "f": v[2],
  76868. "spe": v[3],
  76869. "index": formulaCell.index
  76870. });
  76871. _this.execFunctionGlobalData[formulaCell.r + "_" + formulaCell.c + "_" + formulaCell.index] = {
  76872. v: v[1],
  76873. f: v[2]
  76874. };
  76875. }
  76876. _this.execFunctionExist = null;
  76877. },
  76878. execFunctionGroup1: function(origin_r, origin_c, value, index2, data, isForce = false) {
  76879. let _this = this;
  76880. if (data == null) {
  76881. data = store_default.flowdata;
  76882. }
  76883. if (!window.luckysheet_compareWith) {
  76884. window.luckysheet_compareWith = luckysheet_compareWith;
  76885. window.luckysheet_getarraydata = luckysheet_getarraydata;
  76886. window.luckysheet_getcelldata = luckysheet_getcelldata;
  76887. window.luckysheet_parseData = luckysheet_parseData;
  76888. window.luckysheet_getValue = luckysheet_getValue;
  76889. window.luckysheet_indirect_check = luckysheet_indirect_check;
  76890. window.luckysheet_indirect_check_return = luckysheet_indirect_check_return;
  76891. window.luckysheet_offset_check = luckysheet_offset_check;
  76892. window.luckysheet_calcADPMM = luckysheet_calcADPMM;
  76893. window.luckysheet_getSpecialReference = luckysheet_getSpecialReference;
  76894. }
  76895. if (_this.execFunctionGlobalData == null) {
  76896. _this.execFunctionGlobalData = {};
  76897. }
  76898. let luckysheetfile = getluckysheetfile();
  76899. let dynamicArray_compute = luckysheetfile[getSheetIndex(store_default.currentSheetIndex)]["dynamicArray_compute"] == null ? {} : luckysheetfile[getSheetIndex(store_default.currentSheetIndex)]["dynamicArray_compute"];
  76900. if (index2 == null) {
  76901. index2 = store_default.currentSheetIndex;
  76902. }
  76903. if (value != null) {
  76904. let cellCache = [[{v: null}]];
  76905. setcellvalue(0, 0, cellCache, value);
  76906. _this.execFunctionGlobalData[origin_r + "_" + origin_c + "_" + index2] = cellCache[0][0];
  76907. }
  76908. let group = _this.getAllFunctionGroup(), vertex1 = {}, stack = [], count = 0;
  76909. _this.execvertex = {};
  76910. if (_this.execFunctionExist == null) {
  76911. for (let i3 = 0; i3 < group.length; i3++) {
  76912. let item2 = group[i3];
  76913. let file = luckysheetfile[getSheetIndex(item2["index"])];
  76914. if (file == null) {
  76915. continue;
  76916. }
  76917. let cell = file.data[item2.r][item2.c];
  76918. let calc_funcStr = getcellFormula(item2.r, item2.c, item2.index);
  76919. if (cell != null && cell.f != null && cell.f == calc_funcStr) {
  76920. if (!(item2 instanceof Object)) {
  76921. item2 = new Function("return " + item2)();
  76922. }
  76923. item2.color = "w";
  76924. item2.parent = null;
  76925. item2.chidren = {};
  76926. item2.times = 0;
  76927. vertex1["r" + item2.r + "c" + item2.c + "i" + item2.index] = item2;
  76928. _this.isFunctionRangeSave = false;
  76929. if (isForce) {
  76930. _this.isFunctionRangeSave = true;
  76931. } else if (origin_r != null && origin_c != null) {
  76932. _this.isFunctionRangeSelect(calc_funcStr, origin_r, origin_c, index2, dynamicArray_compute);
  76933. }
  76934. if (_this.isFunctionRangeSave) {
  76935. stack.push(item2);
  76936. _this.execvertex["r" + item2.r + "c" + item2.c + "i" + item2.index] = item2;
  76937. count++;
  76938. }
  76939. }
  76940. }
  76941. } else {
  76942. for (let x = 0; x < _this.execFunctionExist.length; x++) {
  76943. let cell = _this.execFunctionExist[x];
  76944. if ("r" + cell.r + "c" + cell.c + "i" + cell.i in vertex1) {
  76945. continue;
  76946. }
  76947. for (let i3 = 0; i3 < group.length; i3++) {
  76948. let item2 = group[i3];
  76949. let calc_funcStr = getcellFormula(item2.r, item2.c, item2.index);
  76950. item2.color = "w";
  76951. item2.parent = null;
  76952. item2.chidren = {};
  76953. item2.times = 0;
  76954. vertex1["r" + item2.r + "c" + item2.c + "i" + item2.index] = item2;
  76955. _this.isFunctionRangeSave = false;
  76956. if (isForce) {
  76957. _this.isFunctionRangeSave = true;
  76958. } else {
  76959. _this.isFunctionRangeSelect(calc_funcStr, cell.r, cell.c, cell.i, dynamicArray_compute);
  76960. }
  76961. if (_this.isFunctionRangeSave) {
  76962. stack.push(item2);
  76963. _this.execvertex["r" + item2.r + "c" + item2.c + "i" + item2.index] = item2;
  76964. count++;
  76965. }
  76966. }
  76967. }
  76968. }
  76969. while (stack.length > 0) {
  76970. let u = stack.shift();
  76971. let excludeList = {};
  76972. _this.getChildrenVertex(u, vertex1, excludeList);
  76973. for (let name2 in vertex1) {
  76974. let item2 = vertex1[name2];
  76975. if (item2 == null) {
  76976. continue;
  76977. }
  76978. let ukey = "r" + u.r + "c" + u.c + "i" + u.index;
  76979. if (name2 in excludeList) {
  76980. continue;
  76981. }
  76982. _this.isFunctionRangeSave = false;
  76983. let calc_funcStr = getcellFormula(item2.r, item2.c, item2.index);
  76984. _this.isFunctionRangeSelect(calc_funcStr, u.r, u.c, u.index, dynamicArray_compute);
  76985. if (_this.isFunctionRangeSave) {
  76986. if (!(name2 in _this.execvertex)) {
  76987. stack.push(item2);
  76988. _this.execvertex[name2] = item2;
  76989. }
  76990. count++;
  76991. _this.execvertex[name2].chidren[ukey] = 1;
  76992. }
  76993. }
  76994. }
  76995. _this.groupValuesRefreshData = [];
  76996. let i2 = 0;
  76997. while (i2 < count) {
  76998. for (let name2 in _this.execvertex) {
  76999. let u = _this.execvertex[name2];
  77000. if (u.color == "w") {
  77001. _this.functionDFS(u);
  77002. } else if (u.color == "b") {
  77003. i2++;
  77004. }
  77005. }
  77006. }
  77007. _this.execFunctionExist = null;
  77008. },
  77009. getChildrenVertex: function(u, vertex1, obj) {
  77010. let ukey = "r" + u.r + "c" + u.c + "i" + u.index;
  77011. obj[ukey] = 1;
  77012. if (u.chidren != null) {
  77013. for (let key in u.chidren) {
  77014. if (vertex1[key] && !(key in obj)) {
  77015. this.getChildrenVertex(vertex1[key], vertex1, obj);
  77016. }
  77017. }
  77018. }
  77019. },
  77020. functionDFS: function(u) {
  77021. let _this = this;
  77022. u.color = "g";
  77023. u.times += 1;
  77024. for (let chd in u.chidren) {
  77025. let v2 = _this.execvertex[chd];
  77026. if (v2.color == "w") {
  77027. v2.parent = "r" + u.r.toString() + "c" + u.c.toString() + "i" + u.index;
  77028. _this.functionDFS(v2);
  77029. }
  77030. }
  77031. u.color = "b";
  77032. window.luckysheet_getcelldata_cache = null;
  77033. let calc_funcStr = getcellFormula(u.r, u.c, u.index);
  77034. let v = _this.execfunction(calc_funcStr, u.r, u.c, u.index);
  77035. _this.groupValuesRefreshData.push({
  77036. "r": u.r,
  77037. "c": u.c,
  77038. "v": v[1],
  77039. "f": v[2],
  77040. "spe": v[3],
  77041. "index": u.index
  77042. });
  77043. _this.execFunctionGlobalData[u.r + "_" + u.c + "_" + u.index] = {
  77044. v: v[1],
  77045. f: v[2]
  77046. };
  77047. },
  77048. groupValuesRefreshData: [],
  77049. groupValuesRefresh: function() {
  77050. let _this = this;
  77051. let luckysheetfile = getluckysheetfile();
  77052. if (_this.groupValuesRefreshData.length > 0) {
  77053. for (let i2 = 0; i2 < _this.groupValuesRefreshData.length; i2++) {
  77054. let item2 = _this.groupValuesRefreshData[i2];
  77055. let file = luckysheetfile[getSheetIndex(item2.index)];
  77056. let data = file.data;
  77057. if (data == null) {
  77058. continue;
  77059. }
  77060. let updateValue = {};
  77061. if (item2.spe != null) {
  77062. if (item2.spe.type == "sparklines") {
  77063. updateValue.spl = item2.spe.data;
  77064. } else if (item2.spe.type == "dynamicArrayItem") {
  77065. file.dynamicArray = _this.insertUpdateDynamicArray(item2.spe.data);
  77066. }
  77067. }
  77068. updateValue.v = item2.v;
  77069. updateValue.f = item2.f;
  77070. setcellvalue(item2.r, item2.c, data, updateValue);
  77071. server_default.saveParam("v", item2.index, item2.v, {
  77072. "r": item2.r,
  77073. "c": item2.c
  77074. });
  77075. }
  77076. editor_default.webWorkerFlowDataCache(store_default.flowdata);
  77077. _this.groupValuesRefreshData = [];
  77078. }
  77079. },
  77080. delFunctionGroup: function(r2, c2, index2) {
  77081. if (index2 == null) {
  77082. index2 = store_default.currentSheetIndex;
  77083. }
  77084. let luckysheetfile = getluckysheetfile();
  77085. let file = luckysheetfile[getSheetIndex(index2)];
  77086. let calcChain = file.calcChain;
  77087. if (calcChain != null) {
  77088. for (let i2 = 0; i2 < calcChain.length; i2++) {
  77089. let calc = calcChain[i2];
  77090. if (calc.r == r2 && calc.c == c2 && calc.index == index2) {
  77091. calcChain.splice(i2, 1);
  77092. server_default.saveParam("fc", index2, null, {
  77093. "op": "del",
  77094. "pos": i2
  77095. });
  77096. break;
  77097. }
  77098. }
  77099. }
  77100. let dynamicArray = file.dynamicArray;
  77101. if (dynamicArray != null) {
  77102. for (let i2 = 0; i2 < dynamicArray.length; i2++) {
  77103. let calc = dynamicArray[i2];
  77104. if (calc.r == r2 && calc.c == c2 && (calc.index == null || calc.index == index2)) {
  77105. dynamicArray.splice(i2, 1);
  77106. server_default.saveParam("ac", index2, null, {
  77107. "op": "del",
  77108. "pos": i2
  77109. });
  77110. break;
  77111. }
  77112. }
  77113. }
  77114. setluckysheetfile(luckysheetfile);
  77115. },
  77116. execfunction: function(txt, r2, c2, index2, isrefresh, notInsertFunc) {
  77117. let _this = this;
  77118. let _locale = locale_default();
  77119. let locale_formulaMore = _locale.formulaMore;
  77120. if (txt.indexOf(_this.error.r) > -1) {
  77121. return [false, _this.error.r, txt];
  77122. }
  77123. if (!_this.checkBracketNum(txt)) {
  77124. txt += ")";
  77125. }
  77126. if (index2 == null) {
  77127. index2 = store_default.currentSheetIndex;
  77128. }
  77129. store_default.calculateSheetIndex = index2;
  77130. let fp = $.trim(_this.functionParserExe(txt));
  77131. if (fp.substr(0, 20) == "luckysheet_function." || fp.substr(0, 22) == "luckysheet_compareWith") {
  77132. _this.functionHTMLIndex = 0;
  77133. }
  77134. if (!_this.testFunction(txt, fp) || fp == "") {
  77135. tooltip_default.info("", locale_formulaMore.execfunctionError);
  77136. return [false, _this.error.n, txt];
  77137. }
  77138. let result = null;
  77139. window.luckysheetCurrentRow = r2;
  77140. window.luckysheetCurrentColumn = c2;
  77141. window.luckysheetCurrentIndex = index2;
  77142. window.luckysheetCurrentFunction = txt;
  77143. let sparklines = null;
  77144. try {
  77145. if (fp.indexOf("luckysheet_getcelldata") > -1) {
  77146. let funcg = fp.split("luckysheet_getcelldata('");
  77147. for (let i2 = 1; i2 < funcg.length; i2++) {
  77148. let funcgStr = funcg[i2].split("')")[0];
  77149. let funcgRange = _this.getcellrange(funcgStr);
  77150. if (funcgRange.row[0] < 0 || funcgRange.column[0] < 0) {
  77151. return [true, _this.error.r, txt];
  77152. }
  77153. if (funcgRange.sheetIndex == store_default.calculateSheetIndex && r2 >= funcgRange.row[0] && r2 <= funcgRange.row[1] && c2 >= funcgRange.column[0] && c2 <= funcgRange.column[1]) {
  77154. if (isEditMode()) {
  77155. alert(locale_formulaMore.execfunctionSelfError);
  77156. } else {
  77157. tooltip_default.info("", locale_formulaMore.execfunctionSelfErrorResult);
  77158. }
  77159. return [false, 0, txt];
  77160. }
  77161. }
  77162. }
  77163. result = new Function("return " + fp)();
  77164. if (typeof result == "string") {
  77165. result = result.replace(/\x7F/g, '"');
  77166. }
  77167. if (fp.indexOf("SPLINES") > -1) {
  77168. sparklines = result;
  77169. result = "";
  77170. }
  77171. } catch (e) {
  77172. let err = e;
  77173. console.log(e, fp);
  77174. err = _this.errorInfo(err);
  77175. result = [_this.error.n, err];
  77176. }
  77177. if (getObjType(result) == "object" && result.startCell != null) {
  77178. if (getObjType(result.data) == "array") {
  77179. result = _this.error.v;
  77180. } else {
  77181. if (getObjType(result.data) == "object" && !isRealNull(result.data.v)) {
  77182. result = result.data.v;
  77183. } else if (!isRealNull(result.data)) {
  77184. if (result.cell > 1 || result.rowl > 1) {
  77185. result = result.data;
  77186. } else {
  77187. result = 0;
  77188. }
  77189. } else {
  77190. result = 0;
  77191. }
  77192. }
  77193. }
  77194. let dynamicArrayItem = null;
  77195. if (getObjType(result) == "array") {
  77196. let isErr = false;
  77197. if (getObjType(result[0]) != "array" && result.length == 2) {
  77198. isErr = valueIsError(result[0]);
  77199. }
  77200. if (!isErr) {
  77201. if (getObjType(result[0]) == "array" && result.length == 1 && result[0].length == 1) {
  77202. result = result[0][0];
  77203. } else {
  77204. dynamicArrayItem = {"r": r2, "c": c2, "f": txt, "index": index2, "data": result};
  77205. result = "";
  77206. }
  77207. } else {
  77208. result = result[0];
  77209. }
  77210. }
  77211. window.luckysheetCurrentRow = null;
  77212. window.luckysheetCurrentColumn = null;
  77213. window.luckysheetCurrentIndex = null;
  77214. window.luckysheetCurrentFunction = null;
  77215. if (r2 != null && c2 != null) {
  77216. if (isrefresh) {
  77217. _this.execFunctionGroup(r2, c2, result, index2);
  77218. }
  77219. if (!notInsertFunc) {
  77220. _this.insertUpdateFunctionGroup(r2, c2, index2);
  77221. }
  77222. }
  77223. if (!!sparklines) {
  77224. return [true, result, txt, {type: "sparklines", data: sparklines}];
  77225. }
  77226. if (!!dynamicArrayItem) {
  77227. return [true, result, txt, {type: "dynamicArrayItem", data: dynamicArrayItem}];
  77228. }
  77229. return [true, result, txt];
  77230. },
  77231. testFunction: function(txt, fp) {
  77232. if (txt.substr(0, 1) == "=") {
  77233. return true;
  77234. } else {
  77235. return false;
  77236. }
  77237. },
  77238. execstringformula: function(txt, r2, c2, index2) {
  77239. let _this = this;
  77240. return this.execfunction(txt, r2, c2, index2);
  77241. },
  77242. functionResizeData: {},
  77243. functionResizeStatus: false,
  77244. functionResizeTimeout: null,
  77245. data_parm_index: 0
  77246. };
  77247. formula_default = luckysheetformula;
  77248. }
  77249. });
  77250. // src/controllers/controlHistory.js
  77251. function formulaHistoryHanddler(ctr, type = "redo") {
  77252. if (ctr == null) {
  77253. return;
  77254. }
  77255. let data = ctr.data;
  77256. if (type == "undo") {
  77257. data = ctr.curdata;
  77258. }
  77259. for (let s = 0; s < ctr.range.length; s++) {
  77260. let st_r = ctr.range[s].row[0];
  77261. let ed_r = ctr.range[s].row[1];
  77262. let st_c = ctr.range[s].column[0];
  77263. let ed_c = ctr.range[s].column[1];
  77264. for (let r2 = st_r; r2 < ed_r + 1; r2++) {
  77265. for (let c2 = st_c; c2 < ed_c + 1; c2++) {
  77266. if (r2 > data.length - 1) {
  77267. break;
  77268. }
  77269. if (data[r2][c2] == null || data[r2][c2].f == null || data[r2][c2].f == "") {
  77270. formula_default.delFunctionGroup(r2, c2, ctr.sheetIndex);
  77271. } else if (data[r2][c2] != null && data[r2][c2].f != null && data[r2][c2].f.length > 0) {
  77272. formula_default.insertUpdateFunctionGroup(r2, c2, ctr.sheetIndex);
  77273. }
  77274. }
  77275. }
  77276. }
  77277. }
  77278. var controlHistory, controlHistory_default;
  77279. var init_controlHistory = __esm({
  77280. "src/controllers/controlHistory.js"() {
  77281. init_sheetmanage();
  77282. init_server();
  77283. init_pivotTable();
  77284. init_conditionformat();
  77285. init_postil();
  77286. init_imageCtrl();
  77287. init_dataVerificationCtrl();
  77288. init_hyperlinkCtrl();
  77289. init_zoom();
  77290. init_filter();
  77291. init_formula();
  77292. init_json();
  77293. init_cleargridelement();
  77294. init_refresh();
  77295. init_get();
  77296. init_store();
  77297. init_select();
  77298. init_method();
  77299. controlHistory = {
  77300. redo: function(e) {
  77301. if (store_default.jfredo.length == 0) {
  77302. return;
  77303. }
  77304. let ctr = store_default.jfredo.pop();
  77305. store_default.jfundo.push(ctr);
  77306. store_default.clearjfundo = false;
  77307. if (sheetmanage_default.hasSheet(ctr.sheetIndex) && store_default.currentSheetIndex != ctr.sheetIndex) {
  77308. sheetmanage_default.changeSheetExec(ctr.sheetIndex);
  77309. }
  77310. if (ctr.type == "datachange") {
  77311. formulaHistoryHanddler(ctr);
  77312. let allParam = {
  77313. "cfg": ctr.config,
  77314. "RowlChange": ctr.RowlChange,
  77315. "cdformat": ctr.cdformat,
  77316. "dataVerification": ctr.dataVerification,
  77317. "dynamicArray": ctr.dynamicArray,
  77318. "hyperlink": ctr.hyperlink
  77319. };
  77320. jfrefreshgrid(ctr.data, ctr.dataRange, allParam);
  77321. } else if (ctr.type == "pasteCut") {
  77322. let s = {
  77323. "sheetIndex": ctr.source["sheetIndex"],
  77324. "data": ctr.source["curData"],
  77325. "curData": ctr.source["data"],
  77326. "config": ctr.source["curConfig"],
  77327. "curConfig": ctr.source["config"],
  77328. "cdformat": ctr.source["curCdformat"],
  77329. "curCdformat": ctr.source["cdformat"],
  77330. "dataVerification": ctr.source["curDataVerification"],
  77331. "curDataVerification": ctr.source["dataVerification"],
  77332. "range": ctr.source["range"]
  77333. };
  77334. let t = {
  77335. "sheetIndex": ctr.target["sheetIndex"],
  77336. "data": ctr.target["curData"],
  77337. "curData": ctr.target["data"],
  77338. "config": ctr.target["curConfig"],
  77339. "curConfig": ctr.target["config"],
  77340. "cdformat": ctr.target["curCdformat"],
  77341. "curCdformat": ctr.target["cdformat"],
  77342. "dataVerification": ctr.target["curDataVerification"],
  77343. "curDataVerification": ctr.target["dataVerification"],
  77344. "range": ctr.target["range"]
  77345. };
  77346. jfrefreshgrid_pastcut(s, t, ctr.RowlChange);
  77347. } else if (ctr.type == "rangechange") {
  77348. formulaHistoryHanddler(ctr);
  77349. jfrefreshrange(ctr.data, ctr.range, ctr.cdformat);
  77350. } else if (ctr.type == "resize") {
  77351. store_default.config = ctr.config;
  77352. store_default.luckysheetfile[getSheetIndex(ctr.sheetIndex)].config = store_default.config;
  77353. if (ctr.ctrlType == "resizeR") {
  77354. server_default.saveParam("cg", ctr.sheetIndex, ctr.config["rowlen"], {"k": "rowlen"});
  77355. } else if (ctr.ctrlType == "resizeC") {
  77356. server_default.saveParam("cg", ctr.sheetIndex, ctr.config["columnlen"], {"k": "columnlen"});
  77357. }
  77358. let images = $.extend(true, {}, ctr.images);
  77359. store_default.luckysheetfile[getSheetIndex(ctr.sheetIndex)].images = images;
  77360. server_default.saveParam("all", ctr.sheetIndex, images, {"k": "images"});
  77361. imageCtrl_default.images = images;
  77362. imageCtrl_default.allImagesShow();
  77363. jfrefreshgrid_rhcw(store_default.flowdata.length, store_default.flowdata[0].length);
  77364. } else if (ctr.type == "cellRowChange") {
  77365. jfrefreshgridall(ctr.data[0].length, ctr.data.length, ctr.data, ctr.config, ctr.range, ctr.ctrlType, ctr.ctrlValue, ctr.cdformat);
  77366. } else if (ctr.type == "extend") {
  77367. jfrefreshgridall(ctr.data[0].length, ctr.data.length, ctr.data, ctr.config, ctr.range, "dele", ctr.ctrlValue);
  77368. } else if (ctr.type == "dele") {
  77369. let ctrlValue1 = $.extend(true, {}, ctr.ctrlValue);
  77370. ctrlValue1.restore = true;
  77371. jfrefreshgridall(ctr.data[0].length, ctr.data.length, ctr.data, ctr.config, ctr.range, "extend", ctrlValue1);
  77372. } else if (ctr.type == "addRC") {
  77373. let ctrlValue = $.extend(true, {}, ctr.ctrlValue);
  77374. if (ctrlValue.direction == "rightbottom") {
  77375. ctrlValue.index = ctrlValue.index + 1;
  77376. }
  77377. jfrefreshgrid_adRC(ctr.data, ctr.config, "delRC", ctrlValue, ctr.calc, ctr.filterObj, ctr.cf, ctr.af, ctr.freezen, ctr.dataVerification, ctr.hyperlink);
  77378. } else if (ctr.type == "delRC") {
  77379. let ctrlValue = $.extend(true, {}, ctr.ctrlValue);
  77380. ctrlValue.restore = true;
  77381. ctrlValue.direction = "lefttop";
  77382. jfrefreshgrid_adRC(ctr.data, ctr.config, "addRC", ctrlValue, ctr.calc, ctr.filterObj, ctr.cf, ctr.af, ctr.freezen, ctr.dataVerification, ctr.hyperlink);
  77383. } else if (ctr.type == "deleteCell") {
  77384. jfrefreshgrid_deleteCell(ctr.data, ctr.config, ctr.ctrl, ctr.calc, ctr.filterObj, ctr.cf, ctr.dataVerification, ctr.hyperlink);
  77385. } else if (ctr.type == "showHidRows") {
  77386. store_default.config = ctr.config;
  77387. store_default.luckysheetfile[getSheetIndex(ctr.sheetIndex)].config = ctr.config;
  77388. server_default.saveParam("cg", ctr.sheetIndex, ctr.config["rowhidden"], {"k": "rowhidden"});
  77389. jfrefreshgrid_rhcw(store_default.flowdata.length, store_default.flowdata[0].length);
  77390. } else if (ctr.type == "showHidCols") {
  77391. store_default.config = ctr.config;
  77392. store_default.luckysheetfile[getSheetIndex(ctr.sheetIndex)].config = ctr.config;
  77393. server_default.saveParam("cg", ctr.sheetIndex, ctr.config["colhidden"], {"k": "colhidden"});
  77394. jfrefreshgrid_rhcw(store_default.flowdata.length, store_default.flowdata[0].length);
  77395. } else if (ctr.type == "datachangeAll") {
  77396. formula_default.execFunctionGroup();
  77397. jfrefreshgridall(ctr.data[0].length, ctr.data.length, ctr.data, null, ctr.range, "datachangeAll", ctr.ctrlValue);
  77398. } else if (ctr.type == "datachangeAll_filter_clear") {
  77399. createFilterOptions(ctr.filter_save);
  77400. $("#luckysheet-filter-options-sheet" + store_default.currentSheetIndex + " .luckysheet-filter-options").each(function(i2) {
  77401. let $top = $(this);
  77402. let item2 = ctr.optiongroups[i2];
  77403. labelFilterOptionState($top, item2.optionstate, item2.rowhidden, item2.caljs, false, item2.st_r, item2.ed_r, item2.cindex, item2.st_c, item2.ed_c);
  77404. });
  77405. server_default.saveParam("fsr", store_default.currentSheetIndex, {"filter": ctr.optiongroups, "filter_select": ctr.filter_save});
  77406. store_default.config = ctr.config;
  77407. store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)].config = store_default.config;
  77408. if (store_default.config["rowhidden"] == null) {
  77409. store_default.config["rowhidden"] = {};
  77410. }
  77411. server_default.saveParam("cg", store_default.currentSheetIndex, store_default.config["rowhidden"], {"k": "rowhidden"});
  77412. jfrefreshgrid_rhcw(store_default.flowdata.length, store_default.flowdata[0].length);
  77413. $("#luckysheet-filter-menu, #luckysheet-filter-submenu").hide();
  77414. } else if (ctr.type == "datachangeAll_filter") {
  77415. let $top = $("#luckysheet-filter-options-sheet" + store_default.currentSheetIndex + " .luckysheet-filter-options").eq(ctr["optionsindex"]);
  77416. let st_r = $top.data("str"), ed_r = $top.data("edr"), cindex = $top.data("cindex"), st_c = $top.data("stc"), ed_c = $top.data("edc");
  77417. labelFilterOptionState($top, json_default.hasKey(ctr.rowhidenPre), ctr.rowhidenPre, ctr.caljs, true, st_r, ed_r, cindex, st_c, ed_c);
  77418. store_default.config = ctr.config;
  77419. store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)].config = store_default.config;
  77420. if (store_default.config["rowhidden"] == null) {
  77421. store_default.config["rowhidden"] = {};
  77422. }
  77423. server_default.saveParam("cg", store_default.currentSheetIndex, store_default.config["rowhidden"], {"k": "rowhidden"});
  77424. jfrefreshgrid_rhcw(store_default.flowdata.length, store_default.flowdata[0].length);
  77425. $("#luckysheet-filter-menu, #luckysheet-filter-submenu").hide();
  77426. } else if (ctr.type == "filtershow") {
  77427. $("#luckysheet-filter-selected-sheet" + ctr.sheetIndex + ", #luckysheet-filter-options-sheet" + ctr.sheetIndex).remove();
  77428. if (server_default.allowUpdate) {
  77429. server_default.saveParam("all", ctr.sheetIndex, null, {"k": "filter_select"});
  77430. }
  77431. } else if (ctr.type == "pivotTable_change") {
  77432. store_default.luckysheetfile[getSheetIndex(ctr.sheetIndex)].pivotTable = ctr.pivotTable;
  77433. pivotTable_default.getCellData(ctr.sheetIndex);
  77434. pivotTable_default.initialPivotManage(true);
  77435. pivotTable_default.refreshPivotTable();
  77436. } else if (ctr.type == "addSheet") {
  77437. sheetmanage_default.deleteSheet(ctr.index);
  77438. sheetmanage_default.changeSheetExec(ctr.currentSheetIndex);
  77439. $("#luckysheet-input-box").removeAttr("style");
  77440. $("#luckysheet-sheet-list, #luckysheet-rightclick-sheet-menu").hide();
  77441. } else if (ctr.type == "copySheet") {
  77442. sheetmanage_default.deleteSheet(ctr.index);
  77443. sheetmanage_default.changeSheetExec(ctr.copyindex);
  77444. } else if (ctr.type == "deleteSheet") {
  77445. let isDupName = false;
  77446. for (let i2 = 0; i2 < store_default.luckysheetfile.length; i2++) {
  77447. if (store_default.luckysheetfile[i2].name == ctr.name) {
  77448. isDupName = true;
  77449. }
  77450. }
  77451. if (!isDupName) {
  77452. sheetmanage_default.createSheetbydata(ctr, "isrenew");
  77453. $("#luckysheet-input-box").removeAttr("style");
  77454. $("#luckysheet-sheet-list, #luckysheet-rightclick-sheet-menu").hide();
  77455. }
  77456. } else if (ctr.type == "sheetName") {
  77457. store_default.luckysheetfile[getSheetIndex(ctr.sheetIndex)].name = ctr.oldtxt;
  77458. $("#luckysheet-sheets-item" + ctr.sheetIndex).find(".luckysheet-sheets-item-name").html(ctr.oldtxt);
  77459. server_default.saveParam("all", ctr.sheetIndex, ctr.oldtxt, {"k": "name"});
  77460. } else if (ctr.type == "sheetColor") {
  77461. store_default.luckysheetfile[getSheetIndex(ctr.sheetIndex)].color = ctr.oldcolor;
  77462. let luckysheetcurrentSheetitem2 = $("#luckysheet-sheets-item" + ctr.sheetIndex);
  77463. luckysheetcurrentSheetitem2.find(".luckysheet-sheets-item-color").remove();
  77464. if (ctr.oldcolor != null) {
  77465. luckysheetcurrentSheetitem2.append('<div class="luckysheet-sheets-item-color" style=" position: absolute; width: 100%; height: 3px; bottom: 0px; left: 0px; background-color: ' + ctr.oldcolor + ';"></div>');
  77466. }
  77467. server_default.saveParam("all", ctr.sheetIndex, ctr.oldcolor, {"k": "color"});
  77468. } else if (ctr.type == "mergeChange") {
  77469. let allParam = {
  77470. "cfg": ctr.config
  77471. };
  77472. jfrefreshgrid(ctr.data, ctr.range, allParam);
  77473. } else if (ctr.type == "updateDataVerification") {
  77474. dataVerificationCtrl_default.ref(ctr.currentDataVerification, ctr.historyDataVerification, ctr.sheetIndex);
  77475. } else if (ctr.type == "updateDataVerificationOfCheckbox") {
  77476. dataVerificationCtrl_default.refOfCheckbox(ctr.currentDataVerification, ctr.historyDataVerification, ctr.sheetIndex, ctr.data, ctr.range);
  77477. } else if (ctr.type == "updateHyperlink") {
  77478. hyperlinkCtrl_default.ref(ctr.currentHyperlink, ctr.historyHyperlink, ctr.sheetIndex, ctr.data, ctr.range);
  77479. } else if (ctr.type == "updateCF") {
  77480. let historyRules = ctr["data"]["historyRules"];
  77481. for (let i2 = 0; i2 < historyRules.length; i2++) {
  77482. let sheetIndex = historyRules[i2]["sheetIndex"];
  77483. store_default.luckysheetfile[getSheetIndex(sheetIndex)]["luckysheet_conditionformat_save"] = historyRules[i2]["luckysheet_conditionformat_save"];
  77484. if (server_default.allowUpdate) {
  77485. server_default.saveParam("all", sheetIndex, historyRules[i2]["luckysheet_conditionformat_save"], {"k": "luckysheet_conditionformat_save"});
  77486. }
  77487. }
  77488. conditionformat_default.ref();
  77489. } else if (ctr.type == "updateAF") {
  77490. let historyRules = ctr["data"]["historyRules"];
  77491. let index2 = getSheetIndex(ctr["sheetIndex"]);
  77492. store_default.luckysheetfile[index2]["luckysheet_alternateformat_save"] = $.extend(true, [], historyRules);
  77493. setTimeout(function() {
  77494. luckysheetrefreshgrid();
  77495. }, 1);
  77496. } else if (ctr.type == "borderChange") {
  77497. if (ctr.config["borderInfo"] == null) {
  77498. server_default.saveParam("cg", ctr.sheetIndex, [], {"k": "borderInfo"});
  77499. } else {
  77500. server_default.saveParam("cg", ctr.sheetIndex, ctr.config["borderInfo"], {"k": "borderInfo"});
  77501. }
  77502. store_default.config = ctr.config;
  77503. store_default.luckysheetfile[getSheetIndex(ctr.sheetIndex)].config = store_default.config;
  77504. setTimeout(function() {
  77505. luckysheetrefreshgrid();
  77506. }, 1);
  77507. } else if (ctr.type == "postil") {
  77508. postil_default.ref(ctr.data, ctr.rc);
  77509. for (let i2 = 0; i2 < ctr.rc.length; i2++) {
  77510. let r2 = ctr.rc[i2].split("_")[0];
  77511. let c2 = ctr.rc[i2].split("_")[1];
  77512. if (ctr.data[r2][c2] != null && ctr.data[r2][c2].ps != null) {
  77513. postil_default.buildPs(r2, c2, ctr.data[r2][c2].ps);
  77514. } else {
  77515. postil_default.buildPs(r2, c2, null);
  77516. }
  77517. }
  77518. } else if (ctr.type == "imageCtrl") {
  77519. imageCtrl_default.images = $.extend(true, {}, ctr.images);
  77520. imageCtrl_default.allImagesShow();
  77521. imageCtrl_default.ref();
  77522. } else if (ctr.type == "zoomChange") {
  77523. store_default.zoomRatio = ctr.zoomRatio;
  77524. server_default.saveParam("all", ctr.currentSheetIndex, ctr.zoomRatio, {"k": "zoomRatio"});
  77525. zoomNumberDomBind();
  77526. zoomRefreshView();
  77527. }
  77528. cleargridelement(e);
  77529. if (ctr.range) {
  77530. store_default.luckysheet_select_save = ctr.range;
  77531. selectHightlightShow();
  77532. }
  77533. store_default.clearjfundo = true;
  77534. let newCtr = __spreadValues(__spreadValues({}, ctr), {data: ctr.curdata, curdata: ctr.data});
  77535. method_default.createHookFunction("updated", newCtr);
  77536. },
  77537. undo: function() {
  77538. if (store_default.jfundo.length == 0) {
  77539. return;
  77540. }
  77541. let ctr = store_default.jfundo.pop();
  77542. store_default.jfredo.push(ctr);
  77543. store_default.clearjfundo = false;
  77544. if (sheetmanage_default.hasSheet(ctr.sheetIndex) && store_default.currentSheetIndex != ctr.sheetIndex) {
  77545. sheetmanage_default.changeSheetExec(ctr.sheetIndex);
  77546. }
  77547. if (ctr.type == "datachange") {
  77548. formula_default.execFunctionGroup();
  77549. let allParam = {
  77550. "cfg": ctr.curConfig,
  77551. "RowlChange": ctr.RowlChange,
  77552. "cdformat": ctr.curCdformat,
  77553. "dataVerification": ctr.curDataVerification,
  77554. "dynamicArray": ctr.curDynamicArray,
  77555. "hyperlink": ctr.curHyperlink
  77556. };
  77557. formulaHistoryHanddler(ctr, "undo");
  77558. jfrefreshgrid(ctr.curdata, ctr.range, allParam);
  77559. } else if (ctr.type == "pasteCut") {
  77560. jfrefreshgrid_pastcut(ctr.source, ctr.target, ctr.RowlChange);
  77561. } else if (ctr.type == "rangechange") {
  77562. formulaHistoryHanddler(ctr, "undo");
  77563. jfrefreshrange(ctr.curdata, ctr.range, ctr.curCdformat);
  77564. } else if (ctr.type == "resize") {
  77565. store_default.config = ctr.curconfig;
  77566. store_default.luckysheetfile[getSheetIndex(ctr.sheetIndex)].config = store_default.config;
  77567. if (ctr.ctrlType == "resizeR") {
  77568. server_default.saveParam("cg", ctr.sheetIndex, ctr.curconfig["rowlen"], {"k": "rowlen"});
  77569. } else if (ctr.ctrlType == "resizeC") {
  77570. server_default.saveParam("cg", ctr.sheetIndex, ctr.curconfig["columnlen"], {"k": "columnlen"});
  77571. }
  77572. let images = $.extend(true, {}, ctr.curImages);
  77573. store_default.luckysheetfile[getSheetIndex(ctr.sheetIndex)].images = images;
  77574. server_default.saveParam("all", ctr.sheetIndex, images, {"k": "images"});
  77575. imageCtrl_default.images = images;
  77576. imageCtrl_default.allImagesShow();
  77577. jfrefreshgrid_rhcw(store_default.flowdata.length, store_default.flowdata[0].length);
  77578. } else if (ctr.type == "cellRowChange") {
  77579. jfrefreshgridall(ctr.curdata[0].length, ctr.curdata.length, ctr.curdata, ctr.curconfig, ctr.currange, ctr.ctrlType, ctr.ctrlValue, ctr.curCdformat);
  77580. } else if (ctr.type == "extend") {
  77581. jfrefreshgridall(ctr.curdata[0].length, ctr.curdata.length, ctr.curdata, ctr.curconfig, ctr.currange, ctr.ctrlType, ctr.ctrlValue);
  77582. } else if (ctr.type == "dele") {
  77583. let ctrlValue1 = $.extend(true, {}, ctr.ctrlValue);
  77584. ctrlValue1.restore = true;
  77585. jfrefreshgridall(ctr.curdata[0].length, ctr.curdata.length, ctr.curdata, ctr.curconfig, ctr.currange, ctr.ctrlType, ctr.ctrlValue);
  77586. } else if (ctr.type == "addRC") {
  77587. jfrefreshgrid_adRC(ctr.curData, ctr.curConfig, "addRC", ctr.ctrlValue, ctr.curCalc, ctr.curFilterObj, ctr.curCf, ctr.curAf, ctr.curFreezen, ctr.curDataVerification, ctr.curHyperlink);
  77588. } else if (ctr.type == "delRC") {
  77589. jfrefreshgrid_adRC(ctr.curData, ctr.curConfig, "delRC", ctr.ctrlValue, ctr.curCalc, ctr.curFilterObj, ctr.curCf, ctr.curAf, ctr.curFreezen, ctr.curDataVerification, ctr.curHyperlink);
  77590. } else if (ctr.type == "deleteCell") {
  77591. jfrefreshgrid_deleteCell(ctr.curData, ctr.curConfig, ctr.ctrl, ctr.curCalc, ctr.curFilterObj, ctr.curCf, ctr.curDataVerification, ctr.curHyperlink);
  77592. } else if (ctr.type == "showHidRows") {
  77593. store_default.config = ctr.curconfig;
  77594. store_default.luckysheetfile[getSheetIndex(ctr.sheetIndex)].config = ctr.curconfig;
  77595. server_default.saveParam("cg", ctr.sheetIndex, ctr.curconfig["rowhidden"], {"k": "rowhidden"});
  77596. jfrefreshgrid_rhcw(store_default.flowdata.length, store_default.flowdata[0].length);
  77597. } else if (ctr.type == "showHidCols") {
  77598. store_default.config = ctr.curconfig;
  77599. store_default.luckysheetfile[getSheetIndex(ctr.sheetIndex)].config = ctr.curconfig;
  77600. server_default.saveParam("cg", ctr.sheetIndex, ctr.curconfig["colhidden"], {"k": "colhidden"});
  77601. jfrefreshgrid_rhcw(store_default.flowdata.length, store_default.flowdata[0].length);
  77602. } else if (ctr.type == "datachangeAll") {
  77603. formula_default.execFunctionGroup();
  77604. jfrefreshgridall(ctr.curdata[0].length, ctr.curdata.length, ctr.curdata, null, ctr.currange, "datachangeAll", ctr.ctrlValue);
  77605. } else if (ctr.type == "datachangeAll_filter_clear") {
  77606. server_default.saveParam("fsc", store_default.currentSheetIndex, null);
  77607. store_default.config = ctr.curconfig;
  77608. store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)].config = store_default.config;
  77609. server_default.saveParam("cg", store_default.currentSheetIndex, {}, {"k": "rowhidden"});
  77610. jfrefreshgrid_rhcw(store_default.flowdata.length, store_default.flowdata[0].length);
  77611. $("#luckysheet-filter-menu .luckysheet-filter-selected-input").hide().find("input").val();
  77612. $("#luckysheet-filter-selected span").data("type", "0").data("type", null).text("\u65E0");
  77613. $("#luckysheet-filter-selected-sheet" + store_default.currentSheetIndex + ", #luckysheet-filter-options-sheet" + store_default.currentSheetIndex).remove();
  77614. $("#luckysheet-filter-menu, #luckysheet-filter-submenu").hide();
  77615. } else if (ctr.type == "datachangeAll_filter") {
  77616. let $top = $("#luckysheet-filter-options-sheet" + store_default.currentSheetIndex + " .luckysheet-filter-options").eq(ctr["optionsindex"]);
  77617. let st_r = $top.data("str"), ed_r = $top.data("edr"), cindex = $top.data("cindex"), st_c = $top.data("stc"), ed_c = $top.data("edc");
  77618. labelFilterOptionState($top, json_default.hasKey(ctr.rowhidden), ctr.rowhidden, ctr.caljs, true, st_r, ed_r, cindex, st_c, ed_c);
  77619. store_default.config = ctr.curconfig;
  77620. store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)].config = store_default.config;
  77621. server_default.saveParam("cg", store_default.currentSheetIndex, store_default.config["rowhidden"], {"k": "rowhidden"});
  77622. jfrefreshgrid_rhcw(store_default.flowdata.length, store_default.flowdata[0].length);
  77623. $("#luckysheet-filter-menu, #luckysheet-filter-submenu").hide();
  77624. } else if (ctr.type == "filtershow") {
  77625. store_default.luckysheet_select_save = [ctr.filter_save];
  77626. store_default.filterchage = false;
  77627. createFilter();
  77628. store_default.filterchage = true;
  77629. server_default.saveParam("all", ctr.sheetIndex, ctr.filter_save, {"k": "filter_select"});
  77630. } else if (ctr.type == "pivotTable_change") {
  77631. store_default.luckysheetfile[getSheetIndex(ctr.sheetIndex)].pivotTable = ctr.pivotTablecur;
  77632. pivotTable_default.getCellData(ctr.sheetIndex);
  77633. pivotTable_default.initialPivotManage(true);
  77634. pivotTable_default.refreshPivotTable();
  77635. } else if (ctr.type == "addSheet") {
  77636. sheetmanage_default.createSheetbydata(ctr.sheetconfig);
  77637. $("#luckysheet-input-box").removeAttr("style");
  77638. $("#luckysheet-sheet-list, #luckysheet-rightclick-sheet-menu").hide();
  77639. } else if (ctr.type == "copySheet") {
  77640. sheetmanage_default.copySheet(ctr.copyindex);
  77641. } else if (ctr.type == "deleteSheet") {
  77642. sheetmanage_default.deleteSheet(ctr.index);
  77643. if (ctr.order == 0) {
  77644. sheetmanage_default.changeSheetExec(store_default.luckysheetfile[0].index);
  77645. } else {
  77646. sheetmanage_default.changeSheetExec(store_default.luckysheetfile[ctr.order - 1].index);
  77647. }
  77648. $("#luckysheet-input-box").removeAttr("style");
  77649. $("#luckysheet-sheet-list, #luckysheet-rightclick-sheet-menu").hide();
  77650. } else if (ctr.type == "sheetName") {
  77651. store_default.luckysheetfile[getSheetIndex(ctr.sheetIndex)].name = ctr.txt;
  77652. $("#luckysheet-sheets-item" + ctr.sheetIndex).find(".luckysheet-sheets-item-name").html(ctr.txt);
  77653. server_default.saveParam("all", ctr.sheetIndex, ctr.txt, {"k": "name"});
  77654. } else if (ctr.type == "sheetColor") {
  77655. store_default.luckysheetfile[getSheetIndex(ctr.sheetIndex)].color = ctr.color;
  77656. let luckysheetcurrentSheetitem2 = $("#luckysheet-sheets-item" + ctr.sheetIndex);
  77657. luckysheetcurrentSheetitem2.find(".luckysheet-sheets-item-color").remove();
  77658. if (ctr.color != null) {
  77659. luckysheetcurrentSheetitem2.append('<div class="luckysheet-sheets-item-color" style=" position: absolute; width: 100%; height: 3px; bottom: 0px; left: 0px; background-color: ' + ctr.color + ';"></div>');
  77660. }
  77661. server_default.saveParam("all", ctr.sheetIndex, ctr.color, {"k": "color"});
  77662. } else if (ctr.type == "mergeChange") {
  77663. let allParam = {
  77664. "cfg": ctr.curConfig
  77665. };
  77666. jfrefreshgrid(ctr.curData, ctr.range, allParam);
  77667. } else if (ctr.type == "updateDataVerification") {
  77668. dataVerificationCtrl_default.ref(ctr.historyDataVerification, ctr.currentDataVerification, ctr.sheetIndex);
  77669. } else if (ctr.type == "updateDataVerificationOfCheckbox") {
  77670. dataVerificationCtrl_default.refOfCheckbox(ctr.historyDataVerification, ctr.currentDataVerification, ctr.sheetIndex, ctr.curData, ctr.range);
  77671. } else if (ctr.type == "updateHyperlink") {
  77672. hyperlinkCtrl_default.ref(ctr.historyHyperlink, ctr.currentHyperlink, ctr.sheetIndex, ctr.curData, ctr.range);
  77673. } else if (ctr.type == "updateCF") {
  77674. let currentRules = ctr["data"]["currentRules"];
  77675. for (let i2 = 0; i2 < currentRules.length; i2++) {
  77676. let sheetIndex = currentRules[i2]["sheetIndex"];
  77677. store_default.luckysheetfile[getSheetIndex(sheetIndex)]["luckysheet_conditionformat_save"] = currentRules[i2]["luckysheet_conditionformat_save"];
  77678. if (server_default.allowUpdate) {
  77679. server_default.saveParam("all", sheetIndex, currentRules[i2]["luckysheet_conditionformat_save"], {"k": "luckysheet_conditionformat_save"});
  77680. }
  77681. }
  77682. conditionformat_default.ref();
  77683. } else if (ctr.type == "updateAF") {
  77684. let currentRules = ctr["data"]["currentRules"];
  77685. let index2 = getSheetIndex(ctr["sheetIndex"]);
  77686. store_default.luckysheetfile[index2]["luckysheet_alternateformat_save"] = $.extend(true, [], currentRules);
  77687. setTimeout(function() {
  77688. luckysheetrefreshgrid();
  77689. }, 1);
  77690. } else if (ctr.type == "borderChange") {
  77691. server_default.saveParam("cg", ctr.sheetIndex, ctr.curconfig["borderInfo"], {"k": "borderInfo"});
  77692. store_default.config = ctr.curconfig;
  77693. store_default.luckysheetfile[getSheetIndex(ctr.sheetIndex)].config = store_default.config;
  77694. setTimeout(function() {
  77695. luckysheetrefreshgrid();
  77696. }, 1);
  77697. } else if (ctr.type == "postil") {
  77698. postil_default.ref(ctr.curdata, ctr.rc);
  77699. for (let i2 = 0; i2 < ctr.rc.length; i2++) {
  77700. let r2 = ctr.rc[i2].split("_")[0];
  77701. let c2 = ctr.rc[i2].split("_")[1];
  77702. if (ctr.curdata[r2][c2] != null && ctr.curdata[r2][c2].ps != null) {
  77703. postil_default.buildPs(r2, c2, ctr.curdata[r2][c2].ps);
  77704. } else {
  77705. postil_default.buildPs(r2, c2, null);
  77706. }
  77707. }
  77708. } else if (ctr.type == "imageCtrl") {
  77709. imageCtrl_default.images = $.extend(true, {}, ctr.curImages);
  77710. imageCtrl_default.allImagesShow();
  77711. imageCtrl_default.ref();
  77712. } else if (ctr.type == "zoomChange") {
  77713. store_default.zoomRatio = ctr.curZoomRatio;
  77714. server_default.saveParam("all", ctr.currentSheetIndex, ctr.curZoomRatio, {"k": "zoomRatio"});
  77715. zoomNumberDomBind();
  77716. zoomRefreshView();
  77717. }
  77718. if (ctr.range) {
  77719. store_default.luckysheet_select_save = ctr.range;
  77720. selectHightlightShow();
  77721. }
  77722. store_default.clearjfundo = true;
  77723. }
  77724. };
  77725. controlHistory_default = controlHistory;
  77726. }
  77727. });
  77728. // node_modules/flatpickr/dist/esm/types/options.js
  77729. var HOOKS, defaults;
  77730. var init_options = __esm({
  77731. "node_modules/flatpickr/dist/esm/types/options.js"() {
  77732. HOOKS = [
  77733. "onChange",
  77734. "onClose",
  77735. "onDayCreate",
  77736. "onDestroy",
  77737. "onKeyDown",
  77738. "onMonthChange",
  77739. "onOpen",
  77740. "onParseConfig",
  77741. "onReady",
  77742. "onValueUpdate",
  77743. "onYearChange",
  77744. "onPreCalendarPosition"
  77745. ];
  77746. defaults = {
  77747. _disable: [],
  77748. allowInput: false,
  77749. allowInvalidPreload: false,
  77750. altFormat: "F j, Y",
  77751. altInput: false,
  77752. altInputClass: "form-control input",
  77753. animate: typeof window === "object" && window.navigator.userAgent.indexOf("MSIE") === -1,
  77754. ariaDateFormat: "F j, Y",
  77755. autoFillDefaultTime: true,
  77756. clickOpens: true,
  77757. closeOnSelect: true,
  77758. conjunction: ", ",
  77759. dateFormat: "Y-m-d",
  77760. defaultHour: 12,
  77761. defaultMinute: 0,
  77762. defaultSeconds: 0,
  77763. disable: [],
  77764. disableMobile: false,
  77765. enableSeconds: false,
  77766. enableTime: false,
  77767. errorHandler: (err) => typeof console !== "undefined" && console.warn(err),
  77768. getWeek: (givenDate) => {
  77769. const date = new Date(givenDate.getTime());
  77770. date.setHours(0, 0, 0, 0);
  77771. date.setDate(date.getDate() + 3 - (date.getDay() + 6) % 7);
  77772. var week1 = new Date(date.getFullYear(), 0, 4);
  77773. return 1 + Math.round(((date.getTime() - week1.getTime()) / 864e5 - 3 + (week1.getDay() + 6) % 7) / 7);
  77774. },
  77775. hourIncrement: 1,
  77776. ignoredFocusElements: [],
  77777. inline: false,
  77778. locale: "default",
  77779. minuteIncrement: 5,
  77780. mode: "single",
  77781. monthSelectorType: "dropdown",
  77782. nextArrow: "<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M13.207 8.472l-7.854 7.854-0.707-0.707 7.146-7.146-7.146-7.148 0.707-0.707 7.854 7.854z' /></svg>",
  77783. noCalendar: false,
  77784. now: new Date(),
  77785. onChange: [],
  77786. onClose: [],
  77787. onDayCreate: [],
  77788. onDestroy: [],
  77789. onKeyDown: [],
  77790. onMonthChange: [],
  77791. onOpen: [],
  77792. onParseConfig: [],
  77793. onReady: [],
  77794. onValueUpdate: [],
  77795. onYearChange: [],
  77796. onPreCalendarPosition: [],
  77797. plugins: [],
  77798. position: "auto",
  77799. positionElement: void 0,
  77800. prevArrow: "<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M5.207 8.471l7.146 7.147-0.707 0.707-7.853-7.854 7.854-7.853 0.707 0.707-7.147 7.146z' /></svg>",
  77801. shorthandCurrentMonth: false,
  77802. showMonths: 1,
  77803. static: false,
  77804. time_24hr: false,
  77805. weekNumbers: false,
  77806. wrap: false
  77807. };
  77808. }
  77809. });
  77810. // node_modules/flatpickr/dist/esm/l10n/default.js
  77811. var english, default_default;
  77812. var init_default = __esm({
  77813. "node_modules/flatpickr/dist/esm/l10n/default.js"() {
  77814. english = {
  77815. weekdays: {
  77816. shorthand: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
  77817. longhand: [
  77818. "Sunday",
  77819. "Monday",
  77820. "Tuesday",
  77821. "Wednesday",
  77822. "Thursday",
  77823. "Friday",
  77824. "Saturday"
  77825. ]
  77826. },
  77827. months: {
  77828. shorthand: [
  77829. "Jan",
  77830. "Feb",
  77831. "Mar",
  77832. "Apr",
  77833. "May",
  77834. "Jun",
  77835. "Jul",
  77836. "Aug",
  77837. "Sep",
  77838. "Oct",
  77839. "Nov",
  77840. "Dec"
  77841. ],
  77842. longhand: [
  77843. "January",
  77844. "February",
  77845. "March",
  77846. "April",
  77847. "May",
  77848. "June",
  77849. "July",
  77850. "August",
  77851. "September",
  77852. "October",
  77853. "November",
  77854. "December"
  77855. ]
  77856. },
  77857. daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
  77858. firstDayOfWeek: 0,
  77859. ordinal: (nth) => {
  77860. const s = nth % 100;
  77861. if (s > 3 && s < 21)
  77862. return "th";
  77863. switch (s % 10) {
  77864. case 1:
  77865. return "st";
  77866. case 2:
  77867. return "nd";
  77868. case 3:
  77869. return "rd";
  77870. default:
  77871. return "th";
  77872. }
  77873. },
  77874. rangeSeparator: " to ",
  77875. weekAbbreviation: "Wk",
  77876. scrollTitle: "Scroll to increment",
  77877. toggleTitle: "Click to toggle",
  77878. amPM: ["AM", "PM"],
  77879. yearAriaLabel: "Year",
  77880. monthAriaLabel: "Month",
  77881. hourAriaLabel: "Hour",
  77882. minuteAriaLabel: "Minute",
  77883. time_24hr: false
  77884. };
  77885. default_default = english;
  77886. }
  77887. });
  77888. // node_modules/flatpickr/dist/esm/utils/index.js
  77889. function debounce(fn, wait) {
  77890. let t;
  77891. return function() {
  77892. clearTimeout(t);
  77893. t = setTimeout(() => fn.apply(this, arguments), wait);
  77894. };
  77895. }
  77896. var pad, int, arrayify;
  77897. var init_utils = __esm({
  77898. "node_modules/flatpickr/dist/esm/utils/index.js"() {
  77899. pad = (number, length = 2) => `000${number}`.slice(length * -1);
  77900. int = (bool) => bool === true ? 1 : 0;
  77901. arrayify = (obj) => obj instanceof Array ? obj : [obj];
  77902. }
  77903. });
  77904. // node_modules/flatpickr/dist/esm/utils/dom.js
  77905. function toggleClass(elem, className, bool) {
  77906. if (bool === true)
  77907. return elem.classList.add(className);
  77908. elem.classList.remove(className);
  77909. }
  77910. function createElement(tag, className, content) {
  77911. const e = window.document.createElement(tag);
  77912. className = className || "";
  77913. content = content || "";
  77914. e.className = className;
  77915. if (content !== void 0)
  77916. e.textContent = content;
  77917. return e;
  77918. }
  77919. function clearNode(node) {
  77920. while (node.firstChild)
  77921. node.removeChild(node.firstChild);
  77922. }
  77923. function findParent(node, condition) {
  77924. if (condition(node))
  77925. return node;
  77926. else if (node.parentNode)
  77927. return findParent(node.parentNode, condition);
  77928. return void 0;
  77929. }
  77930. function createNumberInput(inputClassName, opts) {
  77931. const wrapper = createElement("div", "numInputWrapper"), numInput = createElement("input", "numInput " + inputClassName), arrowUp = createElement("span", "arrowUp"), arrowDown = createElement("span", "arrowDown");
  77932. if (navigator.userAgent.indexOf("MSIE 9.0") === -1) {
  77933. numInput.type = "number";
  77934. } else {
  77935. numInput.type = "text";
  77936. numInput.pattern = "\\d*";
  77937. }
  77938. if (opts !== void 0)
  77939. for (const key in opts)
  77940. numInput.setAttribute(key, opts[key]);
  77941. wrapper.appendChild(numInput);
  77942. wrapper.appendChild(arrowUp);
  77943. wrapper.appendChild(arrowDown);
  77944. return wrapper;
  77945. }
  77946. function getEventTarget(event2) {
  77947. try {
  77948. if (typeof event2.composedPath === "function") {
  77949. const path = event2.composedPath();
  77950. return path[0];
  77951. }
  77952. return event2.target;
  77953. } catch (error3) {
  77954. return event2.target;
  77955. }
  77956. }
  77957. var init_dom = __esm({
  77958. "node_modules/flatpickr/dist/esm/utils/dom.js"() {
  77959. }
  77960. });
  77961. // node_modules/flatpickr/dist/esm/utils/formatting.js
  77962. var doNothing, monthToStr, revFormat, tokenRegex, formats;
  77963. var init_formatting = __esm({
  77964. "node_modules/flatpickr/dist/esm/utils/formatting.js"() {
  77965. init_utils();
  77966. doNothing = () => void 0;
  77967. monthToStr = (monthNumber, shorthand, locale2) => locale2.months[shorthand ? "shorthand" : "longhand"][monthNumber];
  77968. revFormat = {
  77969. D: doNothing,
  77970. F: function(dateObj, monthName, locale2) {
  77971. dateObj.setMonth(locale2.months.longhand.indexOf(monthName));
  77972. },
  77973. G: (dateObj, hour) => {
  77974. dateObj.setHours(parseFloat(hour));
  77975. },
  77976. H: (dateObj, hour) => {
  77977. dateObj.setHours(parseFloat(hour));
  77978. },
  77979. J: (dateObj, day) => {
  77980. dateObj.setDate(parseFloat(day));
  77981. },
  77982. K: (dateObj, amPM, locale2) => {
  77983. dateObj.setHours(dateObj.getHours() % 12 + 12 * int(new RegExp(locale2.amPM[1], "i").test(amPM)));
  77984. },
  77985. M: function(dateObj, shortMonth, locale2) {
  77986. dateObj.setMonth(locale2.months.shorthand.indexOf(shortMonth));
  77987. },
  77988. S: (dateObj, seconds) => {
  77989. dateObj.setSeconds(parseFloat(seconds));
  77990. },
  77991. U: (_, unixSeconds) => new Date(parseFloat(unixSeconds) * 1e3),
  77992. W: function(dateObj, weekNum, locale2) {
  77993. const weekNumber = parseInt(weekNum);
  77994. const date = new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);
  77995. date.setDate(date.getDate() - date.getDay() + locale2.firstDayOfWeek);
  77996. return date;
  77997. },
  77998. Y: (dateObj, year) => {
  77999. dateObj.setFullYear(parseFloat(year));
  78000. },
  78001. Z: (_, ISODate) => new Date(ISODate),
  78002. d: (dateObj, day) => {
  78003. dateObj.setDate(parseFloat(day));
  78004. },
  78005. h: (dateObj, hour) => {
  78006. dateObj.setHours(parseFloat(hour));
  78007. },
  78008. i: (dateObj, minutes) => {
  78009. dateObj.setMinutes(parseFloat(minutes));
  78010. },
  78011. j: (dateObj, day) => {
  78012. dateObj.setDate(parseFloat(day));
  78013. },
  78014. l: doNothing,
  78015. m: (dateObj, month) => {
  78016. dateObj.setMonth(parseFloat(month) - 1);
  78017. },
  78018. n: (dateObj, month) => {
  78019. dateObj.setMonth(parseFloat(month) - 1);
  78020. },
  78021. s: (dateObj, seconds) => {
  78022. dateObj.setSeconds(parseFloat(seconds));
  78023. },
  78024. u: (_, unixMillSeconds) => new Date(parseFloat(unixMillSeconds)),
  78025. w: doNothing,
  78026. y: (dateObj, year) => {
  78027. dateObj.setFullYear(2e3 + parseFloat(year));
  78028. }
  78029. };
  78030. tokenRegex = {
  78031. D: "(\\w+)",
  78032. F: "(\\w+)",
  78033. G: "(\\d\\d|\\d)",
  78034. H: "(\\d\\d|\\d)",
  78035. J: "(\\d\\d|\\d)\\w+",
  78036. K: "",
  78037. M: "(\\w+)",
  78038. S: "(\\d\\d|\\d)",
  78039. U: "(.+)",
  78040. W: "(\\d\\d|\\d)",
  78041. Y: "(\\d{4})",
  78042. Z: "(.+)",
  78043. d: "(\\d\\d|\\d)",
  78044. h: "(\\d\\d|\\d)",
  78045. i: "(\\d\\d|\\d)",
  78046. j: "(\\d\\d|\\d)",
  78047. l: "(\\w+)",
  78048. m: "(\\d\\d|\\d)",
  78049. n: "(\\d\\d|\\d)",
  78050. s: "(\\d\\d|\\d)",
  78051. u: "(.+)",
  78052. w: "(\\d\\d|\\d)",
  78053. y: "(\\d{2})"
  78054. };
  78055. formats = {
  78056. Z: (date) => date.toISOString(),
  78057. D: function(date, locale2, options) {
  78058. return locale2.weekdays.shorthand[formats.w(date, locale2, options)];
  78059. },
  78060. F: function(date, locale2, options) {
  78061. return monthToStr(formats.n(date, locale2, options) - 1, false, locale2);
  78062. },
  78063. G: function(date, locale2, options) {
  78064. return pad(formats.h(date, locale2, options));
  78065. },
  78066. H: (date) => pad(date.getHours()),
  78067. J: function(date, locale2) {
  78068. return locale2.ordinal !== void 0 ? date.getDate() + locale2.ordinal(date.getDate()) : date.getDate();
  78069. },
  78070. K: (date, locale2) => locale2.amPM[int(date.getHours() > 11)],
  78071. M: function(date, locale2) {
  78072. return monthToStr(date.getMonth(), true, locale2);
  78073. },
  78074. S: (date) => pad(date.getSeconds()),
  78075. U: (date) => date.getTime() / 1e3,
  78076. W: function(date, _, options) {
  78077. return options.getWeek(date);
  78078. },
  78079. Y: (date) => pad(date.getFullYear(), 4),
  78080. d: (date) => pad(date.getDate()),
  78081. h: (date) => date.getHours() % 12 ? date.getHours() % 12 : 12,
  78082. i: (date) => pad(date.getMinutes()),
  78083. j: (date) => date.getDate(),
  78084. l: function(date, locale2) {
  78085. return locale2.weekdays.longhand[date.getDay()];
  78086. },
  78087. m: (date) => pad(date.getMonth() + 1),
  78088. n: (date) => date.getMonth() + 1,
  78089. s: (date) => date.getSeconds(),
  78090. u: (date) => date.getTime(),
  78091. w: (date) => date.getDay(),
  78092. y: (date) => String(date.getFullYear()).substring(2)
  78093. };
  78094. }
  78095. });
  78096. // node_modules/flatpickr/dist/esm/utils/dates.js
  78097. function compareDates(date1, date2, timeless = true) {
  78098. if (timeless !== false) {
  78099. return new Date(date1.getTime()).setHours(0, 0, 0, 0) - new Date(date2.getTime()).setHours(0, 0, 0, 0);
  78100. }
  78101. return date1.getTime() - date2.getTime();
  78102. }
  78103. function getDefaultHours(config) {
  78104. let hours = config.defaultHour;
  78105. let minutes = config.defaultMinute;
  78106. let seconds = config.defaultSeconds;
  78107. if (config.minDate !== void 0) {
  78108. const minHour = config.minDate.getHours();
  78109. const minMinutes = config.minDate.getMinutes();
  78110. const minSeconds = config.minDate.getSeconds();
  78111. if (hours < minHour) {
  78112. hours = minHour;
  78113. }
  78114. if (hours === minHour && minutes < minMinutes) {
  78115. minutes = minMinutes;
  78116. }
  78117. if (hours === minHour && minutes === minMinutes && seconds < minSeconds)
  78118. seconds = config.minDate.getSeconds();
  78119. }
  78120. if (config.maxDate !== void 0) {
  78121. const maxHr = config.maxDate.getHours();
  78122. const maxMinutes = config.maxDate.getMinutes();
  78123. hours = Math.min(hours, maxHr);
  78124. if (hours === maxHr)
  78125. minutes = Math.min(maxMinutes, minutes);
  78126. if (hours === maxHr && minutes === maxMinutes)
  78127. seconds = config.maxDate.getSeconds();
  78128. }
  78129. return {hours, minutes, seconds};
  78130. }
  78131. var createDateFormatter, createDateParser, isBetween, duration;
  78132. var init_dates = __esm({
  78133. "node_modules/flatpickr/dist/esm/utils/dates.js"() {
  78134. init_formatting();
  78135. init_options();
  78136. init_default();
  78137. createDateFormatter = ({config = defaults, l10n = english, isMobile = false}) => (dateObj, frmt, overrideLocale) => {
  78138. const locale2 = overrideLocale || l10n;
  78139. if (config.formatDate !== void 0 && !isMobile) {
  78140. return config.formatDate(dateObj, frmt, locale2);
  78141. }
  78142. return frmt.split("").map((c2, i2, arr) => formats[c2] && arr[i2 - 1] !== "\\" ? formats[c2](dateObj, locale2, config) : c2 !== "\\" ? c2 : "").join("");
  78143. };
  78144. createDateParser = ({config = defaults, l10n = english}) => (date, givenFormat, timeless, customLocale) => {
  78145. if (date !== 0 && !date)
  78146. return void 0;
  78147. const locale2 = customLocale || l10n;
  78148. let parsedDate;
  78149. const dateOrig = date;
  78150. if (date instanceof Date)
  78151. parsedDate = new Date(date.getTime());
  78152. else if (typeof date !== "string" && date.toFixed !== void 0)
  78153. parsedDate = new Date(date);
  78154. else if (typeof date === "string") {
  78155. const format = givenFormat || (config || defaults).dateFormat;
  78156. const datestr = String(date).trim();
  78157. if (datestr === "today") {
  78158. parsedDate = new Date();
  78159. timeless = true;
  78160. } else if (/Z$/.test(datestr) || /GMT$/.test(datestr))
  78161. parsedDate = new Date(date);
  78162. else if (config && config.parseDate)
  78163. parsedDate = config.parseDate(date, format);
  78164. else {
  78165. parsedDate = !config || !config.noCalendar ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0) : new Date(new Date().setHours(0, 0, 0, 0));
  78166. let matched, ops = [];
  78167. for (let i2 = 0, matchIndex = 0, regexStr = ""; i2 < format.length; i2++) {
  78168. const token = format[i2];
  78169. const isBackSlash = token === "\\";
  78170. const escaped = format[i2 - 1] === "\\" || isBackSlash;
  78171. if (tokenRegex[token] && !escaped) {
  78172. regexStr += tokenRegex[token];
  78173. const match = new RegExp(regexStr).exec(date);
  78174. if (match && (matched = true)) {
  78175. ops[token !== "Y" ? "push" : "unshift"]({
  78176. fn: revFormat[token],
  78177. val: match[++matchIndex]
  78178. });
  78179. }
  78180. } else if (!isBackSlash)
  78181. regexStr += ".";
  78182. ops.forEach(({fn, val}) => parsedDate = fn(parsedDate, val, locale2) || parsedDate);
  78183. }
  78184. parsedDate = matched ? parsedDate : void 0;
  78185. }
  78186. }
  78187. if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {
  78188. config.errorHandler(new Error(`Invalid date provided: ${dateOrig}`));
  78189. return void 0;
  78190. }
  78191. if (timeless === true)
  78192. parsedDate.setHours(0, 0, 0, 0);
  78193. return parsedDate;
  78194. };
  78195. isBetween = (ts, ts1, ts2) => {
  78196. return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);
  78197. };
  78198. duration = {
  78199. DAY: 864e5
  78200. };
  78201. }
  78202. });
  78203. // node_modules/flatpickr/dist/esm/utils/polyfills.js
  78204. var init_polyfills = __esm({
  78205. "node_modules/flatpickr/dist/esm/utils/polyfills.js"() {
  78206. "use strict";
  78207. if (typeof Object.assign !== "function") {
  78208. Object.assign = function(target, ...args) {
  78209. if (!target) {
  78210. throw TypeError("Cannot convert undefined or null to object");
  78211. }
  78212. for (const source of args) {
  78213. if (source) {
  78214. Object.keys(source).forEach((key) => target[key] = source[key]);
  78215. }
  78216. }
  78217. return target;
  78218. };
  78219. }
  78220. }
  78221. });
  78222. // node_modules/flatpickr/dist/esm/index.js
  78223. function FlatpickrInstance(element, instanceConfig) {
  78224. const self2 = {
  78225. config: Object.assign(Object.assign({}, defaults), flatpickr.defaultConfig),
  78226. l10n: default_default
  78227. };
  78228. self2.parseDate = createDateParser({config: self2.config, l10n: self2.l10n});
  78229. self2._handlers = [];
  78230. self2.pluginElements = [];
  78231. self2.loadedPlugins = [];
  78232. self2._bind = bind;
  78233. self2._setHoursFromDate = setHoursFromDate;
  78234. self2._positionCalendar = positionCalendar;
  78235. self2.changeMonth = changeMonth;
  78236. self2.changeYear = changeYear;
  78237. self2.clear = clear;
  78238. self2.close = close;
  78239. self2._createElement = createElement;
  78240. self2.destroy = destroy;
  78241. self2.isEnabled = isEnabled;
  78242. self2.jumpToDate = jumpToDate;
  78243. self2.open = open;
  78244. self2.redraw = redraw;
  78245. self2.set = set;
  78246. self2.setDate = setDate;
  78247. self2.toggle = toggle;
  78248. function setupHelperFunctions() {
  78249. self2.utils = {
  78250. getDaysInMonth(month = self2.currentMonth, yr = self2.currentYear) {
  78251. if (month === 1 && (yr % 4 === 0 && yr % 100 !== 0 || yr % 400 === 0))
  78252. return 29;
  78253. return self2.l10n.daysInMonth[month];
  78254. }
  78255. };
  78256. }
  78257. function init3() {
  78258. self2.element = self2.input = element;
  78259. self2.isOpen = false;
  78260. parseConfig();
  78261. setupLocale();
  78262. setupInputs();
  78263. setupDates();
  78264. setupHelperFunctions();
  78265. if (!self2.isMobile)
  78266. build();
  78267. bindEvents();
  78268. if (self2.selectedDates.length || self2.config.noCalendar) {
  78269. if (self2.config.enableTime) {
  78270. setHoursFromDate(self2.config.noCalendar ? self2.latestSelectedDateObj : void 0);
  78271. }
  78272. updateValue(false);
  78273. }
  78274. setCalendarWidth();
  78275. const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
  78276. if (!self2.isMobile && isSafari) {
  78277. positionCalendar();
  78278. }
  78279. triggerEvent("onReady");
  78280. }
  78281. function bindToInstance(fn) {
  78282. return fn.bind(self2);
  78283. }
  78284. function setCalendarWidth() {
  78285. const config = self2.config;
  78286. if (config.weekNumbers === false && config.showMonths === 1) {
  78287. return;
  78288. } else if (config.noCalendar !== true) {
  78289. window.requestAnimationFrame(function() {
  78290. if (self2.calendarContainer !== void 0) {
  78291. self2.calendarContainer.style.visibility = "hidden";
  78292. self2.calendarContainer.style.display = "block";
  78293. }
  78294. if (self2.daysContainer !== void 0) {
  78295. const daysWidth = (self2.days.offsetWidth + 1) * config.showMonths;
  78296. self2.daysContainer.style.width = daysWidth + "px";
  78297. self2.calendarContainer.style.width = daysWidth + (self2.weekWrapper !== void 0 ? self2.weekWrapper.offsetWidth : 0) + "px";
  78298. self2.calendarContainer.style.removeProperty("visibility");
  78299. self2.calendarContainer.style.removeProperty("display");
  78300. }
  78301. });
  78302. }
  78303. }
  78304. function updateTime(e) {
  78305. if (self2.selectedDates.length === 0) {
  78306. const defaultDate = self2.config.minDate === void 0 || compareDates(new Date(), self2.config.minDate) >= 0 ? new Date() : new Date(self2.config.minDate.getTime());
  78307. const defaults2 = getDefaultHours(self2.config);
  78308. defaultDate.setHours(defaults2.hours, defaults2.minutes, defaults2.seconds, defaultDate.getMilliseconds());
  78309. self2.selectedDates = [defaultDate];
  78310. self2.latestSelectedDateObj = defaultDate;
  78311. }
  78312. if (e !== void 0 && e.type !== "blur") {
  78313. timeWrapper(e);
  78314. }
  78315. const prevValue = self2._input.value;
  78316. setHoursFromInputs();
  78317. updateValue();
  78318. if (self2._input.value !== prevValue) {
  78319. self2._debouncedChange();
  78320. }
  78321. }
  78322. function ampm2military(hour, amPM) {
  78323. return hour % 12 + 12 * int(amPM === self2.l10n.amPM[1]);
  78324. }
  78325. function military2ampm(hour) {
  78326. switch (hour % 24) {
  78327. case 0:
  78328. case 12:
  78329. return 12;
  78330. default:
  78331. return hour % 12;
  78332. }
  78333. }
  78334. function setHoursFromInputs() {
  78335. if (self2.hourElement === void 0 || self2.minuteElement === void 0)
  78336. return;
  78337. let hours = (parseInt(self2.hourElement.value.slice(-2), 10) || 0) % 24, minutes = (parseInt(self2.minuteElement.value, 10) || 0) % 60, seconds = self2.secondElement !== void 0 ? (parseInt(self2.secondElement.value, 10) || 0) % 60 : 0;
  78338. if (self2.amPM !== void 0) {
  78339. hours = ampm2military(hours, self2.amPM.textContent);
  78340. }
  78341. const limitMinHours = self2.config.minTime !== void 0 || self2.config.minDate && self2.minDateHasTime && self2.latestSelectedDateObj && compareDates(self2.latestSelectedDateObj, self2.config.minDate, true) === 0;
  78342. const limitMaxHours = self2.config.maxTime !== void 0 || self2.config.maxDate && self2.maxDateHasTime && self2.latestSelectedDateObj && compareDates(self2.latestSelectedDateObj, self2.config.maxDate, true) === 0;
  78343. if (limitMaxHours) {
  78344. const maxTime = self2.config.maxTime !== void 0 ? self2.config.maxTime : self2.config.maxDate;
  78345. hours = Math.min(hours, maxTime.getHours());
  78346. if (hours === maxTime.getHours())
  78347. minutes = Math.min(minutes, maxTime.getMinutes());
  78348. if (minutes === maxTime.getMinutes())
  78349. seconds = Math.min(seconds, maxTime.getSeconds());
  78350. }
  78351. if (limitMinHours) {
  78352. const minTime = self2.config.minTime !== void 0 ? self2.config.minTime : self2.config.minDate;
  78353. hours = Math.max(hours, minTime.getHours());
  78354. if (hours === minTime.getHours() && minutes < minTime.getMinutes())
  78355. minutes = minTime.getMinutes();
  78356. if (minutes === minTime.getMinutes())
  78357. seconds = Math.max(seconds, minTime.getSeconds());
  78358. }
  78359. setHours(hours, minutes, seconds);
  78360. }
  78361. function setHoursFromDate(dateObj) {
  78362. const date = dateObj || self2.latestSelectedDateObj;
  78363. if (date) {
  78364. setHours(date.getHours(), date.getMinutes(), date.getSeconds());
  78365. }
  78366. }
  78367. function setHours(hours, minutes, seconds) {
  78368. if (self2.latestSelectedDateObj !== void 0) {
  78369. self2.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);
  78370. }
  78371. if (!self2.hourElement || !self2.minuteElement || self2.isMobile)
  78372. return;
  78373. self2.hourElement.value = pad(!self2.config.time_24hr ? (12 + hours) % 12 + 12 * int(hours % 12 === 0) : hours);
  78374. self2.minuteElement.value = pad(minutes);
  78375. if (self2.amPM !== void 0)
  78376. self2.amPM.textContent = self2.l10n.amPM[int(hours >= 12)];
  78377. if (self2.secondElement !== void 0)
  78378. self2.secondElement.value = pad(seconds);
  78379. }
  78380. function onYearInput(event2) {
  78381. const eventTarget = getEventTarget(event2);
  78382. const year = parseInt(eventTarget.value) + (event2.delta || 0);
  78383. if (year / 1e3 > 1 || event2.key === "Enter" && !/[^\d]/.test(year.toString())) {
  78384. changeYear(year);
  78385. }
  78386. }
  78387. function bind(element2, event2, handler, options) {
  78388. if (event2 instanceof Array)
  78389. return event2.forEach((ev) => bind(element2, ev, handler, options));
  78390. if (element2 instanceof Array)
  78391. return element2.forEach((el) => bind(el, event2, handler, options));
  78392. element2.addEventListener(event2, handler, options);
  78393. self2._handlers.push({
  78394. remove: () => element2.removeEventListener(event2, handler)
  78395. });
  78396. }
  78397. function triggerChange() {
  78398. triggerEvent("onChange");
  78399. }
  78400. function bindEvents() {
  78401. if (self2.config.wrap) {
  78402. ["open", "close", "toggle", "clear"].forEach((evt) => {
  78403. Array.prototype.forEach.call(self2.element.querySelectorAll(`[data-${evt}]`), (el) => bind(el, "click", self2[evt]));
  78404. });
  78405. }
  78406. if (self2.isMobile) {
  78407. setupMobile();
  78408. return;
  78409. }
  78410. const debouncedResize = debounce(onResize, 50);
  78411. self2._debouncedChange = debounce(triggerChange, DEBOUNCED_CHANGE_MS);
  78412. if (self2.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent))
  78413. bind(self2.daysContainer, "mouseover", (e) => {
  78414. if (self2.config.mode === "range")
  78415. onMouseOver(getEventTarget(e));
  78416. });
  78417. bind(window.document.body, "keydown", onKeyDown);
  78418. if (!self2.config.inline && !self2.config.static)
  78419. bind(window, "resize", debouncedResize);
  78420. if (window.ontouchstart !== void 0)
  78421. bind(window.document, "touchstart", documentClick);
  78422. else
  78423. bind(window.document, "mousedown", documentClick);
  78424. bind(window.document, "focus", documentClick, {capture: true});
  78425. if (self2.config.clickOpens === true) {
  78426. bind(self2._input, "focus", self2.open);
  78427. bind(self2._input, "click", self2.open);
  78428. }
  78429. if (self2.daysContainer !== void 0) {
  78430. bind(self2.monthNav, "click", onMonthNavClick);
  78431. bind(self2.monthNav, ["keyup", "increment"], onYearInput);
  78432. bind(self2.daysContainer, "click", selectDate);
  78433. }
  78434. if (self2.timeContainer !== void 0 && self2.minuteElement !== void 0 && self2.hourElement !== void 0) {
  78435. const selText = (e) => getEventTarget(e).select();
  78436. bind(self2.timeContainer, ["increment"], updateTime);
  78437. bind(self2.timeContainer, "blur", updateTime, {capture: true});
  78438. bind(self2.timeContainer, "click", timeIncrement);
  78439. bind([self2.hourElement, self2.minuteElement], ["focus", "click"], selText);
  78440. if (self2.secondElement !== void 0)
  78441. bind(self2.secondElement, "focus", () => self2.secondElement && self2.secondElement.select());
  78442. if (self2.amPM !== void 0) {
  78443. bind(self2.amPM, "click", (e) => {
  78444. updateTime(e);
  78445. triggerChange();
  78446. });
  78447. }
  78448. }
  78449. if (self2.config.allowInput) {
  78450. bind(self2._input, "blur", onBlur);
  78451. }
  78452. }
  78453. function jumpToDate(jumpDate, triggerChange2) {
  78454. const jumpTo = jumpDate !== void 0 ? self2.parseDate(jumpDate) : self2.latestSelectedDateObj || (self2.config.minDate && self2.config.minDate > self2.now ? self2.config.minDate : self2.config.maxDate && self2.config.maxDate < self2.now ? self2.config.maxDate : self2.now);
  78455. const oldYear = self2.currentYear;
  78456. const oldMonth = self2.currentMonth;
  78457. try {
  78458. if (jumpTo !== void 0) {
  78459. self2.currentYear = jumpTo.getFullYear();
  78460. self2.currentMonth = jumpTo.getMonth();
  78461. }
  78462. } catch (e) {
  78463. e.message = "Invalid date supplied: " + jumpTo;
  78464. self2.config.errorHandler(e);
  78465. }
  78466. if (triggerChange2 && self2.currentYear !== oldYear) {
  78467. triggerEvent("onYearChange");
  78468. buildMonthSwitch();
  78469. }
  78470. if (triggerChange2 && (self2.currentYear !== oldYear || self2.currentMonth !== oldMonth)) {
  78471. triggerEvent("onMonthChange");
  78472. }
  78473. self2.redraw();
  78474. }
  78475. function timeIncrement(e) {
  78476. const eventTarget = getEventTarget(e);
  78477. if (~eventTarget.className.indexOf("arrow"))
  78478. incrementNumInput(e, eventTarget.classList.contains("arrowUp") ? 1 : -1);
  78479. }
  78480. function incrementNumInput(e, delta, inputElem) {
  78481. const target = e && getEventTarget(e);
  78482. const input = inputElem || target && target.parentNode && target.parentNode.firstChild;
  78483. const event2 = createEvent("increment");
  78484. event2.delta = delta;
  78485. input && input.dispatchEvent(event2);
  78486. }
  78487. function build() {
  78488. const fragment = window.document.createDocumentFragment();
  78489. self2.calendarContainer = createElement("div", "flatpickr-calendar");
  78490. self2.calendarContainer.tabIndex = -1;
  78491. if (!self2.config.noCalendar) {
  78492. fragment.appendChild(buildMonthNav());
  78493. self2.innerContainer = createElement("div", "flatpickr-innerContainer");
  78494. if (self2.config.weekNumbers) {
  78495. const {weekWrapper, weekNumbers} = buildWeeks();
  78496. self2.innerContainer.appendChild(weekWrapper);
  78497. self2.weekNumbers = weekNumbers;
  78498. self2.weekWrapper = weekWrapper;
  78499. }
  78500. self2.rContainer = createElement("div", "flatpickr-rContainer");
  78501. self2.rContainer.appendChild(buildWeekdays());
  78502. if (!self2.daysContainer) {
  78503. self2.daysContainer = createElement("div", "flatpickr-days");
  78504. self2.daysContainer.tabIndex = -1;
  78505. }
  78506. buildDays();
  78507. self2.rContainer.appendChild(self2.daysContainer);
  78508. self2.innerContainer.appendChild(self2.rContainer);
  78509. fragment.appendChild(self2.innerContainer);
  78510. }
  78511. if (self2.config.enableTime) {
  78512. fragment.appendChild(buildTime());
  78513. }
  78514. toggleClass(self2.calendarContainer, "rangeMode", self2.config.mode === "range");
  78515. toggleClass(self2.calendarContainer, "animate", self2.config.animate === true);
  78516. toggleClass(self2.calendarContainer, "multiMonth", self2.config.showMonths > 1);
  78517. self2.calendarContainer.appendChild(fragment);
  78518. const customAppend = self2.config.appendTo !== void 0 && self2.config.appendTo.nodeType !== void 0;
  78519. if (self2.config.inline || self2.config.static) {
  78520. self2.calendarContainer.classList.add(self2.config.inline ? "inline" : "static");
  78521. if (self2.config.inline) {
  78522. if (!customAppend && self2.element.parentNode)
  78523. self2.element.parentNode.insertBefore(self2.calendarContainer, self2._input.nextSibling);
  78524. else if (self2.config.appendTo !== void 0)
  78525. self2.config.appendTo.appendChild(self2.calendarContainer);
  78526. }
  78527. if (self2.config.static) {
  78528. const wrapper = createElement("div", "flatpickr-wrapper");
  78529. if (self2.element.parentNode)
  78530. self2.element.parentNode.insertBefore(wrapper, self2.element);
  78531. wrapper.appendChild(self2.element);
  78532. if (self2.altInput)
  78533. wrapper.appendChild(self2.altInput);
  78534. wrapper.appendChild(self2.calendarContainer);
  78535. }
  78536. }
  78537. if (!self2.config.static && !self2.config.inline)
  78538. (self2.config.appendTo !== void 0 ? self2.config.appendTo : window.document.body).appendChild(self2.calendarContainer);
  78539. }
  78540. function createDay(className, date, dayNumber, i2) {
  78541. const dateIsEnabled = isEnabled(date, true), dayElement = createElement("span", "flatpickr-day " + className, date.getDate().toString());
  78542. dayElement.dateObj = date;
  78543. dayElement.$i = i2;
  78544. dayElement.setAttribute("aria-label", self2.formatDate(date, self2.config.ariaDateFormat));
  78545. if (className.indexOf("hidden") === -1 && compareDates(date, self2.now) === 0) {
  78546. self2.todayDateElem = dayElement;
  78547. dayElement.classList.add("today");
  78548. dayElement.setAttribute("aria-current", "date");
  78549. }
  78550. if (dateIsEnabled) {
  78551. dayElement.tabIndex = -1;
  78552. if (isDateSelected(date)) {
  78553. dayElement.classList.add("selected");
  78554. self2.selectedDateElem = dayElement;
  78555. if (self2.config.mode === "range") {
  78556. toggleClass(dayElement, "startRange", self2.selectedDates[0] && compareDates(date, self2.selectedDates[0], true) === 0);
  78557. toggleClass(dayElement, "endRange", self2.selectedDates[1] && compareDates(date, self2.selectedDates[1], true) === 0);
  78558. if (className === "nextMonthDay")
  78559. dayElement.classList.add("inRange");
  78560. }
  78561. }
  78562. } else {
  78563. dayElement.classList.add("flatpickr-disabled");
  78564. }
  78565. if (self2.config.mode === "range") {
  78566. if (isDateInRange(date) && !isDateSelected(date))
  78567. dayElement.classList.add("inRange");
  78568. }
  78569. if (self2.weekNumbers && self2.config.showMonths === 1 && className !== "prevMonthDay" && dayNumber % 7 === 1) {
  78570. self2.weekNumbers.insertAdjacentHTML("beforeend", "<span class='flatpickr-day'>" + self2.config.getWeek(date) + "</span>");
  78571. }
  78572. triggerEvent("onDayCreate", dayElement);
  78573. return dayElement;
  78574. }
  78575. function focusOnDayElem(targetNode) {
  78576. targetNode.focus();
  78577. if (self2.config.mode === "range")
  78578. onMouseOver(targetNode);
  78579. }
  78580. function getFirstAvailableDay(delta) {
  78581. const startMonth = delta > 0 ? 0 : self2.config.showMonths - 1;
  78582. const endMonth = delta > 0 ? self2.config.showMonths : -1;
  78583. for (let m = startMonth; m != endMonth; m += delta) {
  78584. const month = self2.daysContainer.children[m];
  78585. const startIndex = delta > 0 ? 0 : month.children.length - 1;
  78586. const endIndex = delta > 0 ? month.children.length : -1;
  78587. for (let i2 = startIndex; i2 != endIndex; i2 += delta) {
  78588. const c2 = month.children[i2];
  78589. if (c2.className.indexOf("hidden") === -1 && isEnabled(c2.dateObj))
  78590. return c2;
  78591. }
  78592. }
  78593. return void 0;
  78594. }
  78595. function getNextAvailableDay(current, delta) {
  78596. const givenMonth = current.className.indexOf("Month") === -1 ? current.dateObj.getMonth() : self2.currentMonth;
  78597. const endMonth = delta > 0 ? self2.config.showMonths : -1;
  78598. const loopDelta = delta > 0 ? 1 : -1;
  78599. for (let m = givenMonth - self2.currentMonth; m != endMonth; m += loopDelta) {
  78600. const month = self2.daysContainer.children[m];
  78601. const startIndex = givenMonth - self2.currentMonth === m ? current.$i + delta : delta < 0 ? month.children.length - 1 : 0;
  78602. const numMonthDays = month.children.length;
  78603. for (let i2 = startIndex; i2 >= 0 && i2 < numMonthDays && i2 != (delta > 0 ? numMonthDays : -1); i2 += loopDelta) {
  78604. const c2 = month.children[i2];
  78605. if (c2.className.indexOf("hidden") === -1 && isEnabled(c2.dateObj) && Math.abs(current.$i - i2) >= Math.abs(delta))
  78606. return focusOnDayElem(c2);
  78607. }
  78608. }
  78609. self2.changeMonth(loopDelta);
  78610. focusOnDay(getFirstAvailableDay(loopDelta), 0);
  78611. return void 0;
  78612. }
  78613. function focusOnDay(current, offset) {
  78614. const dayFocused = isInView(document.activeElement || document.body);
  78615. const startElem = current !== void 0 ? current : dayFocused ? document.activeElement : self2.selectedDateElem !== void 0 && isInView(self2.selectedDateElem) ? self2.selectedDateElem : self2.todayDateElem !== void 0 && isInView(self2.todayDateElem) ? self2.todayDateElem : getFirstAvailableDay(offset > 0 ? 1 : -1);
  78616. if (startElem === void 0) {
  78617. self2._input.focus();
  78618. } else if (!dayFocused) {
  78619. focusOnDayElem(startElem);
  78620. } else {
  78621. getNextAvailableDay(startElem, offset);
  78622. }
  78623. }
  78624. function buildMonthDays(year, month) {
  78625. const firstOfMonth = (new Date(year, month, 1).getDay() - self2.l10n.firstDayOfWeek + 7) % 7;
  78626. const prevMonthDays = self2.utils.getDaysInMonth((month - 1 + 12) % 12, year);
  78627. const daysInMonth = self2.utils.getDaysInMonth(month, year), days = window.document.createDocumentFragment(), isMultiMonth = self2.config.showMonths > 1, prevMonthDayClass = isMultiMonth ? "prevMonthDay hidden" : "prevMonthDay", nextMonthDayClass = isMultiMonth ? "nextMonthDay hidden" : "nextMonthDay";
  78628. let dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;
  78629. for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {
  78630. days.appendChild(createDay(prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));
  78631. }
  78632. for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {
  78633. days.appendChild(createDay("", new Date(year, month, dayNumber), dayNumber, dayIndex));
  78634. }
  78635. for (let dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth && (self2.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {
  78636. days.appendChild(createDay(nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));
  78637. }
  78638. const dayContainer = createElement("div", "dayContainer");
  78639. dayContainer.appendChild(days);
  78640. return dayContainer;
  78641. }
  78642. function buildDays() {
  78643. if (self2.daysContainer === void 0) {
  78644. return;
  78645. }
  78646. clearNode(self2.daysContainer);
  78647. if (self2.weekNumbers)
  78648. clearNode(self2.weekNumbers);
  78649. const frag = document.createDocumentFragment();
  78650. for (let i2 = 0; i2 < self2.config.showMonths; i2++) {
  78651. const d = new Date(self2.currentYear, self2.currentMonth, 1);
  78652. d.setMonth(self2.currentMonth + i2);
  78653. frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));
  78654. }
  78655. self2.daysContainer.appendChild(frag);
  78656. self2.days = self2.daysContainer.firstChild;
  78657. if (self2.config.mode === "range" && self2.selectedDates.length === 1) {
  78658. onMouseOver();
  78659. }
  78660. }
  78661. function buildMonthSwitch() {
  78662. if (self2.config.showMonths > 1 || self2.config.monthSelectorType !== "dropdown")
  78663. return;
  78664. const shouldBuildMonth = function(month) {
  78665. if (self2.config.minDate !== void 0 && self2.currentYear === self2.config.minDate.getFullYear() && month < self2.config.minDate.getMonth()) {
  78666. return false;
  78667. }
  78668. return !(self2.config.maxDate !== void 0 && self2.currentYear === self2.config.maxDate.getFullYear() && month > self2.config.maxDate.getMonth());
  78669. };
  78670. self2.monthsDropdownContainer.tabIndex = -1;
  78671. self2.monthsDropdownContainer.innerHTML = "";
  78672. for (let i2 = 0; i2 < 12; i2++) {
  78673. if (!shouldBuildMonth(i2))
  78674. continue;
  78675. const month = createElement("option", "flatpickr-monthDropdown-month");
  78676. month.value = new Date(self2.currentYear, i2).getMonth().toString();
  78677. month.textContent = monthToStr(i2, self2.config.shorthandCurrentMonth, self2.l10n);
  78678. month.tabIndex = -1;
  78679. if (self2.currentMonth === i2) {
  78680. month.selected = true;
  78681. }
  78682. self2.monthsDropdownContainer.appendChild(month);
  78683. }
  78684. }
  78685. function buildMonth() {
  78686. const container2 = createElement("div", "flatpickr-month");
  78687. const monthNavFragment = window.document.createDocumentFragment();
  78688. let monthElement;
  78689. if (self2.config.showMonths > 1 || self2.config.monthSelectorType === "static") {
  78690. monthElement = createElement("span", "cur-month");
  78691. } else {
  78692. self2.monthsDropdownContainer = createElement("select", "flatpickr-monthDropdown-months");
  78693. self2.monthsDropdownContainer.setAttribute("aria-label", self2.l10n.monthAriaLabel);
  78694. bind(self2.monthsDropdownContainer, "change", (e) => {
  78695. const target = getEventTarget(e);
  78696. const selectedMonth = parseInt(target.value, 10);
  78697. self2.changeMonth(selectedMonth - self2.currentMonth);
  78698. triggerEvent("onMonthChange");
  78699. });
  78700. buildMonthSwitch();
  78701. monthElement = self2.monthsDropdownContainer;
  78702. }
  78703. const yearInput = createNumberInput("cur-year", {tabindex: "-1"});
  78704. const yearElement = yearInput.getElementsByTagName("input")[0];
  78705. yearElement.setAttribute("aria-label", self2.l10n.yearAriaLabel);
  78706. if (self2.config.minDate) {
  78707. yearElement.setAttribute("min", self2.config.minDate.getFullYear().toString());
  78708. }
  78709. if (self2.config.maxDate) {
  78710. yearElement.setAttribute("max", self2.config.maxDate.getFullYear().toString());
  78711. yearElement.disabled = !!self2.config.minDate && self2.config.minDate.getFullYear() === self2.config.maxDate.getFullYear();
  78712. }
  78713. const currentMonth = createElement("div", "flatpickr-current-month");
  78714. currentMonth.appendChild(monthElement);
  78715. currentMonth.appendChild(yearInput);
  78716. monthNavFragment.appendChild(currentMonth);
  78717. container2.appendChild(monthNavFragment);
  78718. return {
  78719. container: container2,
  78720. yearElement,
  78721. monthElement
  78722. };
  78723. }
  78724. function buildMonths() {
  78725. clearNode(self2.monthNav);
  78726. self2.monthNav.appendChild(self2.prevMonthNav);
  78727. if (self2.config.showMonths) {
  78728. self2.yearElements = [];
  78729. self2.monthElements = [];
  78730. }
  78731. for (let m = self2.config.showMonths; m--; ) {
  78732. const month = buildMonth();
  78733. self2.yearElements.push(month.yearElement);
  78734. self2.monthElements.push(month.monthElement);
  78735. self2.monthNav.appendChild(month.container);
  78736. }
  78737. self2.monthNav.appendChild(self2.nextMonthNav);
  78738. }
  78739. function buildMonthNav() {
  78740. self2.monthNav = createElement("div", "flatpickr-months");
  78741. self2.yearElements = [];
  78742. self2.monthElements = [];
  78743. self2.prevMonthNav = createElement("span", "flatpickr-prev-month");
  78744. self2.prevMonthNav.innerHTML = self2.config.prevArrow;
  78745. self2.nextMonthNav = createElement("span", "flatpickr-next-month");
  78746. self2.nextMonthNav.innerHTML = self2.config.nextArrow;
  78747. buildMonths();
  78748. Object.defineProperty(self2, "_hidePrevMonthArrow", {
  78749. get: () => self2.__hidePrevMonthArrow,
  78750. set(bool) {
  78751. if (self2.__hidePrevMonthArrow !== bool) {
  78752. toggleClass(self2.prevMonthNav, "flatpickr-disabled", bool);
  78753. self2.__hidePrevMonthArrow = bool;
  78754. }
  78755. }
  78756. });
  78757. Object.defineProperty(self2, "_hideNextMonthArrow", {
  78758. get: () => self2.__hideNextMonthArrow,
  78759. set(bool) {
  78760. if (self2.__hideNextMonthArrow !== bool) {
  78761. toggleClass(self2.nextMonthNav, "flatpickr-disabled", bool);
  78762. self2.__hideNextMonthArrow = bool;
  78763. }
  78764. }
  78765. });
  78766. self2.currentYearElement = self2.yearElements[0];
  78767. updateNavigationCurrentMonth();
  78768. return self2.monthNav;
  78769. }
  78770. function buildTime() {
  78771. self2.calendarContainer.classList.add("hasTime");
  78772. if (self2.config.noCalendar)
  78773. self2.calendarContainer.classList.add("noCalendar");
  78774. const defaults2 = getDefaultHours(self2.config);
  78775. self2.timeContainer = createElement("div", "flatpickr-time");
  78776. self2.timeContainer.tabIndex = -1;
  78777. const separator = createElement("span", "flatpickr-time-separator", ":");
  78778. const hourInput = createNumberInput("flatpickr-hour", {
  78779. "aria-label": self2.l10n.hourAriaLabel
  78780. });
  78781. self2.hourElement = hourInput.getElementsByTagName("input")[0];
  78782. const minuteInput = createNumberInput("flatpickr-minute", {
  78783. "aria-label": self2.l10n.minuteAriaLabel
  78784. });
  78785. self2.minuteElement = minuteInput.getElementsByTagName("input")[0];
  78786. self2.hourElement.tabIndex = self2.minuteElement.tabIndex = -1;
  78787. self2.hourElement.value = pad(self2.latestSelectedDateObj ? self2.latestSelectedDateObj.getHours() : self2.config.time_24hr ? defaults2.hours : military2ampm(defaults2.hours));
  78788. self2.minuteElement.value = pad(self2.latestSelectedDateObj ? self2.latestSelectedDateObj.getMinutes() : defaults2.minutes);
  78789. self2.hourElement.setAttribute("step", self2.config.hourIncrement.toString());
  78790. self2.minuteElement.setAttribute("step", self2.config.minuteIncrement.toString());
  78791. self2.hourElement.setAttribute("min", self2.config.time_24hr ? "0" : "1");
  78792. self2.hourElement.setAttribute("max", self2.config.time_24hr ? "23" : "12");
  78793. self2.hourElement.setAttribute("maxlength", "2");
  78794. self2.minuteElement.setAttribute("min", "0");
  78795. self2.minuteElement.setAttribute("max", "59");
  78796. self2.minuteElement.setAttribute("maxlength", "2");
  78797. self2.timeContainer.appendChild(hourInput);
  78798. self2.timeContainer.appendChild(separator);
  78799. self2.timeContainer.appendChild(minuteInput);
  78800. if (self2.config.time_24hr)
  78801. self2.timeContainer.classList.add("time24hr");
  78802. if (self2.config.enableSeconds) {
  78803. self2.timeContainer.classList.add("hasSeconds");
  78804. const secondInput = createNumberInput("flatpickr-second");
  78805. self2.secondElement = secondInput.getElementsByTagName("input")[0];
  78806. self2.secondElement.value = pad(self2.latestSelectedDateObj ? self2.latestSelectedDateObj.getSeconds() : defaults2.seconds);
  78807. self2.secondElement.setAttribute("step", self2.minuteElement.getAttribute("step"));
  78808. self2.secondElement.setAttribute("min", "0");
  78809. self2.secondElement.setAttribute("max", "59");
  78810. self2.secondElement.setAttribute("maxlength", "2");
  78811. self2.timeContainer.appendChild(createElement("span", "flatpickr-time-separator", ":"));
  78812. self2.timeContainer.appendChild(secondInput);
  78813. }
  78814. if (!self2.config.time_24hr) {
  78815. self2.amPM = createElement("span", "flatpickr-am-pm", self2.l10n.amPM[int((self2.latestSelectedDateObj ? self2.hourElement.value : self2.config.defaultHour) > 11)]);
  78816. self2.amPM.title = self2.l10n.toggleTitle;
  78817. self2.amPM.tabIndex = -1;
  78818. self2.timeContainer.appendChild(self2.amPM);
  78819. }
  78820. return self2.timeContainer;
  78821. }
  78822. function buildWeekdays() {
  78823. if (!self2.weekdayContainer)
  78824. self2.weekdayContainer = createElement("div", "flatpickr-weekdays");
  78825. else
  78826. clearNode(self2.weekdayContainer);
  78827. for (let i2 = self2.config.showMonths; i2--; ) {
  78828. const container2 = createElement("div", "flatpickr-weekdaycontainer");
  78829. self2.weekdayContainer.appendChild(container2);
  78830. }
  78831. updateWeekdays();
  78832. return self2.weekdayContainer;
  78833. }
  78834. function updateWeekdays() {
  78835. if (!self2.weekdayContainer) {
  78836. return;
  78837. }
  78838. const firstDayOfWeek = self2.l10n.firstDayOfWeek;
  78839. let weekdays = [...self2.l10n.weekdays.shorthand];
  78840. if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {
  78841. weekdays = [
  78842. ...weekdays.splice(firstDayOfWeek, weekdays.length),
  78843. ...weekdays.splice(0, firstDayOfWeek)
  78844. ];
  78845. }
  78846. for (let i2 = self2.config.showMonths; i2--; ) {
  78847. self2.weekdayContainer.children[i2].innerHTML = `
  78848. <span class='flatpickr-weekday'>
  78849. ${weekdays.join("</span><span class='flatpickr-weekday'>")}
  78850. </span>
  78851. `;
  78852. }
  78853. }
  78854. function buildWeeks() {
  78855. self2.calendarContainer.classList.add("hasWeeks");
  78856. const weekWrapper = createElement("div", "flatpickr-weekwrapper");
  78857. weekWrapper.appendChild(createElement("span", "flatpickr-weekday", self2.l10n.weekAbbreviation));
  78858. const weekNumbers = createElement("div", "flatpickr-weeks");
  78859. weekWrapper.appendChild(weekNumbers);
  78860. return {
  78861. weekWrapper,
  78862. weekNumbers
  78863. };
  78864. }
  78865. function changeMonth(value, isOffset = true) {
  78866. const delta = isOffset ? value : value - self2.currentMonth;
  78867. if (delta < 0 && self2._hidePrevMonthArrow === true || delta > 0 && self2._hideNextMonthArrow === true)
  78868. return;
  78869. self2.currentMonth += delta;
  78870. if (self2.currentMonth < 0 || self2.currentMonth > 11) {
  78871. self2.currentYear += self2.currentMonth > 11 ? 1 : -1;
  78872. self2.currentMonth = (self2.currentMonth + 12) % 12;
  78873. triggerEvent("onYearChange");
  78874. buildMonthSwitch();
  78875. }
  78876. buildDays();
  78877. triggerEvent("onMonthChange");
  78878. updateNavigationCurrentMonth();
  78879. }
  78880. function clear(triggerChangeEvent = true, toInitial = true) {
  78881. self2.input.value = "";
  78882. if (self2.altInput !== void 0)
  78883. self2.altInput.value = "";
  78884. if (self2.mobileInput !== void 0)
  78885. self2.mobileInput.value = "";
  78886. self2.selectedDates = [];
  78887. self2.latestSelectedDateObj = void 0;
  78888. if (toInitial === true) {
  78889. self2.currentYear = self2._initialDate.getFullYear();
  78890. self2.currentMonth = self2._initialDate.getMonth();
  78891. }
  78892. if (self2.config.enableTime === true) {
  78893. const {hours, minutes, seconds} = getDefaultHours(self2.config);
  78894. setHours(hours, minutes, seconds);
  78895. }
  78896. self2.redraw();
  78897. if (triggerChangeEvent)
  78898. triggerEvent("onChange");
  78899. }
  78900. function close() {
  78901. self2.isOpen = false;
  78902. if (!self2.isMobile) {
  78903. if (self2.calendarContainer !== void 0) {
  78904. self2.calendarContainer.classList.remove("open");
  78905. }
  78906. if (self2._input !== void 0) {
  78907. self2._input.classList.remove("active");
  78908. }
  78909. }
  78910. triggerEvent("onClose");
  78911. }
  78912. function destroy() {
  78913. if (self2.config !== void 0)
  78914. triggerEvent("onDestroy");
  78915. for (let i2 = self2._handlers.length; i2--; ) {
  78916. self2._handlers[i2].remove();
  78917. }
  78918. self2._handlers = [];
  78919. if (self2.mobileInput) {
  78920. if (self2.mobileInput.parentNode)
  78921. self2.mobileInput.parentNode.removeChild(self2.mobileInput);
  78922. self2.mobileInput = void 0;
  78923. } else if (self2.calendarContainer && self2.calendarContainer.parentNode) {
  78924. if (self2.config.static && self2.calendarContainer.parentNode) {
  78925. const wrapper = self2.calendarContainer.parentNode;
  78926. wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);
  78927. if (wrapper.parentNode) {
  78928. while (wrapper.firstChild)
  78929. wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);
  78930. wrapper.parentNode.removeChild(wrapper);
  78931. }
  78932. } else
  78933. self2.calendarContainer.parentNode.removeChild(self2.calendarContainer);
  78934. }
  78935. if (self2.altInput) {
  78936. self2.input.type = "text";
  78937. if (self2.altInput.parentNode)
  78938. self2.altInput.parentNode.removeChild(self2.altInput);
  78939. delete self2.altInput;
  78940. }
  78941. if (self2.input) {
  78942. self2.input.type = self2.input._type;
  78943. self2.input.classList.remove("flatpickr-input");
  78944. self2.input.removeAttribute("readonly");
  78945. }
  78946. [
  78947. "_showTimeInput",
  78948. "latestSelectedDateObj",
  78949. "_hideNextMonthArrow",
  78950. "_hidePrevMonthArrow",
  78951. "__hideNextMonthArrow",
  78952. "__hidePrevMonthArrow",
  78953. "isMobile",
  78954. "isOpen",
  78955. "selectedDateElem",
  78956. "minDateHasTime",
  78957. "maxDateHasTime",
  78958. "days",
  78959. "daysContainer",
  78960. "_input",
  78961. "_positionElement",
  78962. "innerContainer",
  78963. "rContainer",
  78964. "monthNav",
  78965. "todayDateElem",
  78966. "calendarContainer",
  78967. "weekdayContainer",
  78968. "prevMonthNav",
  78969. "nextMonthNav",
  78970. "monthsDropdownContainer",
  78971. "currentMonthElement",
  78972. "currentYearElement",
  78973. "navigationCurrentMonth",
  78974. "selectedDateElem",
  78975. "config"
  78976. ].forEach((k) => {
  78977. try {
  78978. delete self2[k];
  78979. } catch (_) {
  78980. }
  78981. });
  78982. }
  78983. function isCalendarElem(elem) {
  78984. if (self2.config.appendTo && self2.config.appendTo.contains(elem))
  78985. return true;
  78986. return self2.calendarContainer.contains(elem);
  78987. }
  78988. function documentClick(e) {
  78989. if (self2.isOpen && !self2.config.inline) {
  78990. const eventTarget = getEventTarget(e);
  78991. const isCalendarElement = isCalendarElem(eventTarget);
  78992. const isInput = eventTarget === self2.input || eventTarget === self2.altInput || self2.element.contains(eventTarget) || e.path && e.path.indexOf && (~e.path.indexOf(self2.input) || ~e.path.indexOf(self2.altInput));
  78993. const lostFocus = e.type === "blur" ? isInput && e.relatedTarget && !isCalendarElem(e.relatedTarget) : !isInput && !isCalendarElement && !isCalendarElem(e.relatedTarget);
  78994. const isIgnored = !self2.config.ignoredFocusElements.some((elem) => elem.contains(eventTarget));
  78995. if (lostFocus && isIgnored) {
  78996. if (self2.timeContainer !== void 0 && self2.minuteElement !== void 0 && self2.hourElement !== void 0 && self2.input.value !== "" && self2.input.value !== void 0) {
  78997. updateTime();
  78998. }
  78999. self2.close();
  79000. if (self2.config && self2.config.mode === "range" && self2.selectedDates.length === 1) {
  79001. self2.clear(false);
  79002. self2.redraw();
  79003. }
  79004. }
  79005. }
  79006. }
  79007. function changeYear(newYear) {
  79008. if (!newYear || self2.config.minDate && newYear < self2.config.minDate.getFullYear() || self2.config.maxDate && newYear > self2.config.maxDate.getFullYear())
  79009. return;
  79010. const newYearNum = newYear, isNewYear = self2.currentYear !== newYearNum;
  79011. self2.currentYear = newYearNum || self2.currentYear;
  79012. if (self2.config.maxDate && self2.currentYear === self2.config.maxDate.getFullYear()) {
  79013. self2.currentMonth = Math.min(self2.config.maxDate.getMonth(), self2.currentMonth);
  79014. } else if (self2.config.minDate && self2.currentYear === self2.config.minDate.getFullYear()) {
  79015. self2.currentMonth = Math.max(self2.config.minDate.getMonth(), self2.currentMonth);
  79016. }
  79017. if (isNewYear) {
  79018. self2.redraw();
  79019. triggerEvent("onYearChange");
  79020. buildMonthSwitch();
  79021. }
  79022. }
  79023. function isEnabled(date, timeless = true) {
  79024. var _a;
  79025. const dateToCheck = self2.parseDate(date, void 0, timeless);
  79026. if (self2.config.minDate && dateToCheck && compareDates(dateToCheck, self2.config.minDate, timeless !== void 0 ? timeless : !self2.minDateHasTime) < 0 || self2.config.maxDate && dateToCheck && compareDates(dateToCheck, self2.config.maxDate, timeless !== void 0 ? timeless : !self2.maxDateHasTime) > 0)
  79027. return false;
  79028. if (!self2.config.enable && self2.config.disable.length === 0)
  79029. return true;
  79030. if (dateToCheck === void 0)
  79031. return false;
  79032. const bool = !!self2.config.enable, array = (_a = self2.config.enable) !== null && _a !== void 0 ? _a : self2.config.disable;
  79033. for (let i2 = 0, d; i2 < array.length; i2++) {
  79034. d = array[i2];
  79035. if (typeof d === "function" && d(dateToCheck))
  79036. return bool;
  79037. else if (d instanceof Date && dateToCheck !== void 0 && d.getTime() === dateToCheck.getTime())
  79038. return bool;
  79039. else if (typeof d === "string") {
  79040. const parsed = self2.parseDate(d, void 0, true);
  79041. return parsed && parsed.getTime() === dateToCheck.getTime() ? bool : !bool;
  79042. } else if (typeof d === "object" && dateToCheck !== void 0 && d.from && d.to && dateToCheck.getTime() >= d.from.getTime() && dateToCheck.getTime() <= d.to.getTime())
  79043. return bool;
  79044. }
  79045. return !bool;
  79046. }
  79047. function isInView(elem) {
  79048. if (self2.daysContainer !== void 0)
  79049. return elem.className.indexOf("hidden") === -1 && elem.className.indexOf("flatpickr-disabled") === -1 && self2.daysContainer.contains(elem);
  79050. return false;
  79051. }
  79052. function onBlur(e) {
  79053. const isInput = e.target === self2._input;
  79054. if (isInput && (self2.selectedDates.length > 0 || self2._input.value.length > 0) && !(e.relatedTarget && isCalendarElem(e.relatedTarget))) {
  79055. self2.setDate(self2._input.value, true, e.target === self2.altInput ? self2.config.altFormat : self2.config.dateFormat);
  79056. }
  79057. }
  79058. function onKeyDown(e) {
  79059. const eventTarget = getEventTarget(e);
  79060. const isInput = self2.config.wrap ? element.contains(eventTarget) : eventTarget === self2._input;
  79061. const allowInput = self2.config.allowInput;
  79062. const allowKeydown = self2.isOpen && (!allowInput || !isInput);
  79063. const allowInlineKeydown = self2.config.inline && isInput && !allowInput;
  79064. if (e.keyCode === 13 && isInput) {
  79065. if (allowInput) {
  79066. self2.setDate(self2._input.value, true, eventTarget === self2.altInput ? self2.config.altFormat : self2.config.dateFormat);
  79067. return eventTarget.blur();
  79068. } else {
  79069. self2.open();
  79070. }
  79071. } else if (isCalendarElem(eventTarget) || allowKeydown || allowInlineKeydown) {
  79072. const isTimeObj = !!self2.timeContainer && self2.timeContainer.contains(eventTarget);
  79073. switch (e.keyCode) {
  79074. case 13:
  79075. if (isTimeObj) {
  79076. e.preventDefault();
  79077. updateTime();
  79078. focusAndClose();
  79079. } else
  79080. selectDate(e);
  79081. break;
  79082. case 27:
  79083. e.preventDefault();
  79084. focusAndClose();
  79085. break;
  79086. case 8:
  79087. case 46:
  79088. if (isInput && !self2.config.allowInput) {
  79089. e.preventDefault();
  79090. self2.clear();
  79091. }
  79092. break;
  79093. case 37:
  79094. case 39:
  79095. if (!isTimeObj && !isInput) {
  79096. e.preventDefault();
  79097. if (self2.daysContainer !== void 0 && (allowInput === false || document.activeElement && isInView(document.activeElement))) {
  79098. const delta2 = e.keyCode === 39 ? 1 : -1;
  79099. if (!e.ctrlKey)
  79100. focusOnDay(void 0, delta2);
  79101. else {
  79102. e.stopPropagation();
  79103. changeMonth(delta2);
  79104. focusOnDay(getFirstAvailableDay(1), 0);
  79105. }
  79106. }
  79107. } else if (self2.hourElement)
  79108. self2.hourElement.focus();
  79109. break;
  79110. case 38:
  79111. case 40:
  79112. e.preventDefault();
  79113. const delta = e.keyCode === 40 ? 1 : -1;
  79114. if (self2.daysContainer && eventTarget.$i !== void 0 || eventTarget === self2.input || eventTarget === self2.altInput) {
  79115. if (e.ctrlKey) {
  79116. e.stopPropagation();
  79117. changeYear(self2.currentYear - delta);
  79118. focusOnDay(getFirstAvailableDay(1), 0);
  79119. } else if (!isTimeObj)
  79120. focusOnDay(void 0, delta * 7);
  79121. } else if (eventTarget === self2.currentYearElement) {
  79122. changeYear(self2.currentYear - delta);
  79123. } else if (self2.config.enableTime) {
  79124. if (!isTimeObj && self2.hourElement)
  79125. self2.hourElement.focus();
  79126. updateTime(e);
  79127. self2._debouncedChange();
  79128. }
  79129. break;
  79130. case 9:
  79131. if (isTimeObj) {
  79132. const elems = [
  79133. self2.hourElement,
  79134. self2.minuteElement,
  79135. self2.secondElement,
  79136. self2.amPM
  79137. ].concat(self2.pluginElements).filter((x) => x);
  79138. const i2 = elems.indexOf(eventTarget);
  79139. if (i2 !== -1) {
  79140. const target = elems[i2 + (e.shiftKey ? -1 : 1)];
  79141. e.preventDefault();
  79142. (target || self2._input).focus();
  79143. }
  79144. } else if (!self2.config.noCalendar && self2.daysContainer && self2.daysContainer.contains(eventTarget) && e.shiftKey) {
  79145. e.preventDefault();
  79146. self2._input.focus();
  79147. }
  79148. break;
  79149. default:
  79150. break;
  79151. }
  79152. }
  79153. if (self2.amPM !== void 0 && eventTarget === self2.amPM) {
  79154. switch (e.key) {
  79155. case self2.l10n.amPM[0].charAt(0):
  79156. case self2.l10n.amPM[0].charAt(0).toLowerCase():
  79157. self2.amPM.textContent = self2.l10n.amPM[0];
  79158. setHoursFromInputs();
  79159. updateValue();
  79160. break;
  79161. case self2.l10n.amPM[1].charAt(0):
  79162. case self2.l10n.amPM[1].charAt(0).toLowerCase():
  79163. self2.amPM.textContent = self2.l10n.amPM[1];
  79164. setHoursFromInputs();
  79165. updateValue();
  79166. break;
  79167. }
  79168. }
  79169. if (isInput || isCalendarElem(eventTarget)) {
  79170. triggerEvent("onKeyDown", e);
  79171. }
  79172. }
  79173. function onMouseOver(elem) {
  79174. if (self2.selectedDates.length !== 1 || elem && (!elem.classList.contains("flatpickr-day") || elem.classList.contains("flatpickr-disabled")))
  79175. return;
  79176. const hoverDate = elem ? elem.dateObj.getTime() : self2.days.firstElementChild.dateObj.getTime(), initialDate = self2.parseDate(self2.selectedDates[0], void 0, true).getTime(), rangeStartDate = Math.min(hoverDate, self2.selectedDates[0].getTime()), rangeEndDate = Math.max(hoverDate, self2.selectedDates[0].getTime());
  79177. let containsDisabled = false;
  79178. let minRange = 0, maxRange = 0;
  79179. for (let t = rangeStartDate; t < rangeEndDate; t += duration.DAY) {
  79180. if (!isEnabled(new Date(t), true)) {
  79181. containsDisabled = containsDisabled || t > rangeStartDate && t < rangeEndDate;
  79182. if (t < initialDate && (!minRange || t > minRange))
  79183. minRange = t;
  79184. else if (t > initialDate && (!maxRange || t < maxRange))
  79185. maxRange = t;
  79186. }
  79187. }
  79188. for (let m = 0; m < self2.config.showMonths; m++) {
  79189. const month = self2.daysContainer.children[m];
  79190. for (let i2 = 0, l = month.children.length; i2 < l; i2++) {
  79191. const dayElem = month.children[i2], date = dayElem.dateObj;
  79192. const timestamp = date.getTime();
  79193. const outOfRange = minRange > 0 && timestamp < minRange || maxRange > 0 && timestamp > maxRange;
  79194. if (outOfRange) {
  79195. dayElem.classList.add("notAllowed");
  79196. ["inRange", "startRange", "endRange"].forEach((c2) => {
  79197. dayElem.classList.remove(c2);
  79198. });
  79199. continue;
  79200. } else if (containsDisabled && !outOfRange)
  79201. continue;
  79202. ["startRange", "inRange", "endRange", "notAllowed"].forEach((c2) => {
  79203. dayElem.classList.remove(c2);
  79204. });
  79205. if (elem !== void 0) {
  79206. elem.classList.add(hoverDate <= self2.selectedDates[0].getTime() ? "startRange" : "endRange");
  79207. if (initialDate < hoverDate && timestamp === initialDate)
  79208. dayElem.classList.add("startRange");
  79209. else if (initialDate > hoverDate && timestamp === initialDate)
  79210. dayElem.classList.add("endRange");
  79211. if (timestamp >= minRange && (maxRange === 0 || timestamp <= maxRange) && isBetween(timestamp, initialDate, hoverDate))
  79212. dayElem.classList.add("inRange");
  79213. }
  79214. }
  79215. }
  79216. }
  79217. function onResize() {
  79218. if (self2.isOpen && !self2.config.static && !self2.config.inline)
  79219. positionCalendar();
  79220. }
  79221. function open(e, positionElement = self2._positionElement) {
  79222. if (self2.isMobile === true) {
  79223. if (e) {
  79224. e.preventDefault();
  79225. const eventTarget = getEventTarget(e);
  79226. if (eventTarget) {
  79227. eventTarget.blur();
  79228. }
  79229. }
  79230. if (self2.mobileInput !== void 0) {
  79231. self2.mobileInput.focus();
  79232. self2.mobileInput.click();
  79233. }
  79234. triggerEvent("onOpen");
  79235. return;
  79236. } else if (self2._input.disabled || self2.config.inline) {
  79237. return;
  79238. }
  79239. const wasOpen = self2.isOpen;
  79240. self2.isOpen = true;
  79241. if (!wasOpen) {
  79242. self2.calendarContainer.classList.add("open");
  79243. self2._input.classList.add("active");
  79244. triggerEvent("onOpen");
  79245. positionCalendar(positionElement);
  79246. }
  79247. if (self2.config.enableTime === true && self2.config.noCalendar === true) {
  79248. if (self2.config.allowInput === false && (e === void 0 || !self2.timeContainer.contains(e.relatedTarget))) {
  79249. setTimeout(() => self2.hourElement.select(), 50);
  79250. }
  79251. }
  79252. }
  79253. function minMaxDateSetter(type) {
  79254. return (date) => {
  79255. const dateObj = self2.config[`_${type}Date`] = self2.parseDate(date, self2.config.dateFormat);
  79256. const inverseDateObj = self2.config[`_${type === "min" ? "max" : "min"}Date`];
  79257. if (dateObj !== void 0) {
  79258. self2[type === "min" ? "minDateHasTime" : "maxDateHasTime"] = dateObj.getHours() > 0 || dateObj.getMinutes() > 0 || dateObj.getSeconds() > 0;
  79259. }
  79260. if (self2.selectedDates) {
  79261. self2.selectedDates = self2.selectedDates.filter((d) => isEnabled(d));
  79262. if (!self2.selectedDates.length && type === "min")
  79263. setHoursFromDate(dateObj);
  79264. updateValue();
  79265. }
  79266. if (self2.daysContainer) {
  79267. redraw();
  79268. if (dateObj !== void 0)
  79269. self2.currentYearElement[type] = dateObj.getFullYear().toString();
  79270. else
  79271. self2.currentYearElement.removeAttribute(type);
  79272. self2.currentYearElement.disabled = !!inverseDateObj && dateObj !== void 0 && inverseDateObj.getFullYear() === dateObj.getFullYear();
  79273. }
  79274. };
  79275. }
  79276. function parseConfig() {
  79277. const boolOpts = [
  79278. "wrap",
  79279. "weekNumbers",
  79280. "allowInput",
  79281. "allowInvalidPreload",
  79282. "clickOpens",
  79283. "time_24hr",
  79284. "enableTime",
  79285. "noCalendar",
  79286. "altInput",
  79287. "shorthandCurrentMonth",
  79288. "inline",
  79289. "static",
  79290. "enableSeconds",
  79291. "disableMobile"
  79292. ];
  79293. const userConfig = Object.assign(Object.assign({}, JSON.parse(JSON.stringify(element.dataset || {}))), instanceConfig);
  79294. const formats2 = {};
  79295. self2.config.parseDate = userConfig.parseDate;
  79296. self2.config.formatDate = userConfig.formatDate;
  79297. Object.defineProperty(self2.config, "enable", {
  79298. get: () => self2.config._enable,
  79299. set: (dates) => {
  79300. self2.config._enable = parseDateRules(dates);
  79301. }
  79302. });
  79303. Object.defineProperty(self2.config, "disable", {
  79304. get: () => self2.config._disable,
  79305. set: (dates) => {
  79306. self2.config._disable = parseDateRules(dates);
  79307. }
  79308. });
  79309. const timeMode = userConfig.mode === "time";
  79310. if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {
  79311. const defaultDateFormat = flatpickr.defaultConfig.dateFormat || defaults.dateFormat;
  79312. formats2.dateFormat = userConfig.noCalendar || timeMode ? "H:i" + (userConfig.enableSeconds ? ":S" : "") : defaultDateFormat + " H:i" + (userConfig.enableSeconds ? ":S" : "");
  79313. }
  79314. if (userConfig.altInput && (userConfig.enableTime || timeMode) && !userConfig.altFormat) {
  79315. const defaultAltFormat = flatpickr.defaultConfig.altFormat || defaults.altFormat;
  79316. formats2.altFormat = userConfig.noCalendar || timeMode ? "h:i" + (userConfig.enableSeconds ? ":S K" : " K") : defaultAltFormat + ` h:i${userConfig.enableSeconds ? ":S" : ""} K`;
  79317. }
  79318. Object.defineProperty(self2.config, "minDate", {
  79319. get: () => self2.config._minDate,
  79320. set: minMaxDateSetter("min")
  79321. });
  79322. Object.defineProperty(self2.config, "maxDate", {
  79323. get: () => self2.config._maxDate,
  79324. set: minMaxDateSetter("max")
  79325. });
  79326. const minMaxTimeSetter = (type) => (val) => {
  79327. self2.config[type === "min" ? "_minTime" : "_maxTime"] = self2.parseDate(val, "H:i:S");
  79328. };
  79329. Object.defineProperty(self2.config, "minTime", {
  79330. get: () => self2.config._minTime,
  79331. set: minMaxTimeSetter("min")
  79332. });
  79333. Object.defineProperty(self2.config, "maxTime", {
  79334. get: () => self2.config._maxTime,
  79335. set: minMaxTimeSetter("max")
  79336. });
  79337. if (userConfig.mode === "time") {
  79338. self2.config.noCalendar = true;
  79339. self2.config.enableTime = true;
  79340. }
  79341. Object.assign(self2.config, formats2, userConfig);
  79342. for (let i2 = 0; i2 < boolOpts.length; i2++)
  79343. self2.config[boolOpts[i2]] = self2.config[boolOpts[i2]] === true || self2.config[boolOpts[i2]] === "true";
  79344. HOOKS.filter((hook) => self2.config[hook] !== void 0).forEach((hook) => {
  79345. self2.config[hook] = arrayify(self2.config[hook] || []).map(bindToInstance);
  79346. });
  79347. self2.isMobile = !self2.config.disableMobile && !self2.config.inline && self2.config.mode === "single" && !self2.config.disable.length && !self2.config.enable && !self2.config.weekNumbers && /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
  79348. for (let i2 = 0; i2 < self2.config.plugins.length; i2++) {
  79349. const pluginConf = self2.config.plugins[i2](self2) || {};
  79350. for (const key in pluginConf) {
  79351. if (HOOKS.indexOf(key) > -1) {
  79352. self2.config[key] = arrayify(pluginConf[key]).map(bindToInstance).concat(self2.config[key]);
  79353. } else if (typeof userConfig[key] === "undefined")
  79354. self2.config[key] = pluginConf[key];
  79355. }
  79356. }
  79357. if (!userConfig.altInputClass) {
  79358. self2.config.altInputClass = getInputElem().className + " " + self2.config.altInputClass;
  79359. }
  79360. triggerEvent("onParseConfig");
  79361. }
  79362. function getInputElem() {
  79363. return self2.config.wrap ? element.querySelector("[data-input]") : element;
  79364. }
  79365. function setupLocale() {
  79366. if (typeof self2.config.locale !== "object" && typeof flatpickr.l10ns[self2.config.locale] === "undefined")
  79367. self2.config.errorHandler(new Error(`flatpickr: invalid locale ${self2.config.locale}`));
  79368. self2.l10n = Object.assign(Object.assign({}, flatpickr.l10ns.default), typeof self2.config.locale === "object" ? self2.config.locale : self2.config.locale !== "default" ? flatpickr.l10ns[self2.config.locale] : void 0);
  79369. tokenRegex.K = `(${self2.l10n.amPM[0]}|${self2.l10n.amPM[1]}|${self2.l10n.amPM[0].toLowerCase()}|${self2.l10n.amPM[1].toLowerCase()})`;
  79370. const userConfig = Object.assign(Object.assign({}, instanceConfig), JSON.parse(JSON.stringify(element.dataset || {})));
  79371. if (userConfig.time_24hr === void 0 && flatpickr.defaultConfig.time_24hr === void 0) {
  79372. self2.config.time_24hr = self2.l10n.time_24hr;
  79373. }
  79374. self2.formatDate = createDateFormatter(self2);
  79375. self2.parseDate = createDateParser({config: self2.config, l10n: self2.l10n});
  79376. }
  79377. function positionCalendar(customPositionElement) {
  79378. if (typeof self2.config.position === "function") {
  79379. return void self2.config.position(self2, customPositionElement);
  79380. }
  79381. if (self2.calendarContainer === void 0)
  79382. return;
  79383. triggerEvent("onPreCalendarPosition");
  79384. const positionElement = customPositionElement || self2._positionElement;
  79385. const calendarHeight = Array.prototype.reduce.call(self2.calendarContainer.children, (acc, child) => acc + child.offsetHeight, 0), calendarWidth = self2.calendarContainer.offsetWidth, configPos = self2.config.position.split(" "), configPosVertical = configPos[0], configPosHorizontal = configPos.length > 1 ? configPos[1] : null, inputBounds = positionElement.getBoundingClientRect(), distanceFromBottom = window.innerHeight - inputBounds.bottom, showOnTop = configPosVertical === "above" || configPosVertical !== "below" && distanceFromBottom < calendarHeight && inputBounds.top > calendarHeight;
  79386. const top = window.pageYOffset + inputBounds.top + (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);
  79387. toggleClass(self2.calendarContainer, "arrowTop", !showOnTop);
  79388. toggleClass(self2.calendarContainer, "arrowBottom", showOnTop);
  79389. if (self2.config.inline)
  79390. return;
  79391. let left = window.pageXOffset + inputBounds.left;
  79392. let isCenter = false;
  79393. let isRight = false;
  79394. if (configPosHorizontal === "center") {
  79395. left -= (calendarWidth - inputBounds.width) / 2;
  79396. isCenter = true;
  79397. } else if (configPosHorizontal === "right") {
  79398. left -= calendarWidth - inputBounds.width;
  79399. isRight = true;
  79400. }
  79401. toggleClass(self2.calendarContainer, "arrowLeft", !isCenter && !isRight);
  79402. toggleClass(self2.calendarContainer, "arrowCenter", isCenter);
  79403. toggleClass(self2.calendarContainer, "arrowRight", isRight);
  79404. const right = window.document.body.offsetWidth - (window.pageXOffset + inputBounds.right);
  79405. const rightMost = left + calendarWidth > window.document.body.offsetWidth;
  79406. const centerMost = right + calendarWidth > window.document.body.offsetWidth;
  79407. toggleClass(self2.calendarContainer, "rightMost", rightMost);
  79408. if (self2.config.static)
  79409. return;
  79410. self2.calendarContainer.style.top = `${top}px`;
  79411. if (!rightMost) {
  79412. self2.calendarContainer.style.left = `${left}px`;
  79413. self2.calendarContainer.style.right = "auto";
  79414. } else if (!centerMost) {
  79415. self2.calendarContainer.style.left = "auto";
  79416. self2.calendarContainer.style.right = `${right}px`;
  79417. } else {
  79418. const doc = getDocumentStyleSheet();
  79419. if (doc === void 0)
  79420. return;
  79421. const bodyWidth = window.document.body.offsetWidth;
  79422. const centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);
  79423. const centerBefore = ".flatpickr-calendar.centerMost:before";
  79424. const centerAfter = ".flatpickr-calendar.centerMost:after";
  79425. const centerIndex = doc.cssRules.length;
  79426. const centerStyle = `{left:${inputBounds.left}px;right:auto;}`;
  79427. toggleClass(self2.calendarContainer, "rightMost", false);
  79428. toggleClass(self2.calendarContainer, "centerMost", true);
  79429. doc.insertRule(`${centerBefore},${centerAfter}${centerStyle}`, centerIndex);
  79430. self2.calendarContainer.style.left = `${centerLeft}px`;
  79431. self2.calendarContainer.style.right = "auto";
  79432. }
  79433. }
  79434. function getDocumentStyleSheet() {
  79435. let editableSheet = null;
  79436. for (let i2 = 0; i2 < document.styleSheets.length; i2++) {
  79437. const sheet = document.styleSheets[i2];
  79438. try {
  79439. sheet.cssRules;
  79440. } catch (err) {
  79441. continue;
  79442. }
  79443. editableSheet = sheet;
  79444. break;
  79445. }
  79446. return editableSheet != null ? editableSheet : createStyleSheet();
  79447. }
  79448. function createStyleSheet() {
  79449. const style = document.createElement("style");
  79450. document.head.appendChild(style);
  79451. return style.sheet;
  79452. }
  79453. function redraw() {
  79454. if (self2.config.noCalendar || self2.isMobile)
  79455. return;
  79456. buildMonthSwitch();
  79457. updateNavigationCurrentMonth();
  79458. buildDays();
  79459. }
  79460. function focusAndClose() {
  79461. self2._input.focus();
  79462. if (window.navigator.userAgent.indexOf("MSIE") !== -1 || navigator.msMaxTouchPoints !== void 0) {
  79463. setTimeout(self2.close, 0);
  79464. } else {
  79465. self2.close();
  79466. }
  79467. }
  79468. function selectDate(e) {
  79469. e.preventDefault();
  79470. e.stopPropagation();
  79471. const isSelectable = (day) => day.classList && day.classList.contains("flatpickr-day") && !day.classList.contains("flatpickr-disabled") && !day.classList.contains("notAllowed");
  79472. const t = findParent(getEventTarget(e), isSelectable);
  79473. if (t === void 0)
  79474. return;
  79475. const target = t;
  79476. const selectedDate = self2.latestSelectedDateObj = new Date(target.dateObj.getTime());
  79477. const shouldChangeMonth = (selectedDate.getMonth() < self2.currentMonth || selectedDate.getMonth() > self2.currentMonth + self2.config.showMonths - 1) && self2.config.mode !== "range";
  79478. self2.selectedDateElem = target;
  79479. if (self2.config.mode === "single")
  79480. self2.selectedDates = [selectedDate];
  79481. else if (self2.config.mode === "multiple") {
  79482. const selectedIndex = isDateSelected(selectedDate);
  79483. if (selectedIndex)
  79484. self2.selectedDates.splice(parseInt(selectedIndex), 1);
  79485. else
  79486. self2.selectedDates.push(selectedDate);
  79487. } else if (self2.config.mode === "range") {
  79488. if (self2.selectedDates.length === 2) {
  79489. self2.clear(false, false);
  79490. }
  79491. self2.latestSelectedDateObj = selectedDate;
  79492. self2.selectedDates.push(selectedDate);
  79493. if (compareDates(selectedDate, self2.selectedDates[0], true) !== 0)
  79494. self2.selectedDates.sort((a, b) => a.getTime() - b.getTime());
  79495. }
  79496. setHoursFromInputs();
  79497. if (shouldChangeMonth) {
  79498. const isNewYear = self2.currentYear !== selectedDate.getFullYear();
  79499. self2.currentYear = selectedDate.getFullYear();
  79500. self2.currentMonth = selectedDate.getMonth();
  79501. if (isNewYear) {
  79502. triggerEvent("onYearChange");
  79503. buildMonthSwitch();
  79504. }
  79505. triggerEvent("onMonthChange");
  79506. }
  79507. updateNavigationCurrentMonth();
  79508. buildDays();
  79509. updateValue();
  79510. if (!shouldChangeMonth && self2.config.mode !== "range" && self2.config.showMonths === 1)
  79511. focusOnDayElem(target);
  79512. else if (self2.selectedDateElem !== void 0 && self2.hourElement === void 0) {
  79513. self2.selectedDateElem && self2.selectedDateElem.focus();
  79514. }
  79515. if (self2.hourElement !== void 0)
  79516. self2.hourElement !== void 0 && self2.hourElement.focus();
  79517. if (self2.config.closeOnSelect) {
  79518. const single = self2.config.mode === "single" && !self2.config.enableTime;
  79519. const range2 = self2.config.mode === "range" && self2.selectedDates.length === 2 && !self2.config.enableTime;
  79520. if (single || range2) {
  79521. focusAndClose();
  79522. }
  79523. }
  79524. triggerChange();
  79525. }
  79526. const CALLBACKS = {
  79527. locale: [setupLocale, updateWeekdays],
  79528. showMonths: [buildMonths, setCalendarWidth, buildWeekdays],
  79529. minDate: [jumpToDate],
  79530. maxDate: [jumpToDate],
  79531. clickOpens: [
  79532. () => {
  79533. if (self2.config.clickOpens === true) {
  79534. bind(self2._input, "focus", self2.open);
  79535. bind(self2._input, "click", self2.open);
  79536. } else {
  79537. self2._input.removeEventListener("focus", self2.open);
  79538. self2._input.removeEventListener("click", self2.open);
  79539. }
  79540. }
  79541. ]
  79542. };
  79543. function set(option, value) {
  79544. if (option !== null && typeof option === "object") {
  79545. Object.assign(self2.config, option);
  79546. for (const key in option) {
  79547. if (CALLBACKS[key] !== void 0)
  79548. CALLBACKS[key].forEach((x) => x());
  79549. }
  79550. } else {
  79551. self2.config[option] = value;
  79552. if (CALLBACKS[option] !== void 0)
  79553. CALLBACKS[option].forEach((x) => x());
  79554. else if (HOOKS.indexOf(option) > -1)
  79555. self2.config[option] = arrayify(value);
  79556. }
  79557. self2.redraw();
  79558. updateValue(true);
  79559. }
  79560. function setSelectedDate(inputDate, format) {
  79561. let dates = [];
  79562. if (inputDate instanceof Array)
  79563. dates = inputDate.map((d) => self2.parseDate(d, format));
  79564. else if (inputDate instanceof Date || typeof inputDate === "number")
  79565. dates = [self2.parseDate(inputDate, format)];
  79566. else if (typeof inputDate === "string") {
  79567. switch (self2.config.mode) {
  79568. case "single":
  79569. case "time":
  79570. dates = [self2.parseDate(inputDate, format)];
  79571. break;
  79572. case "multiple":
  79573. dates = inputDate.split(self2.config.conjunction).map((date) => self2.parseDate(date, format));
  79574. break;
  79575. case "range":
  79576. dates = inputDate.split(self2.l10n.rangeSeparator).map((date) => self2.parseDate(date, format));
  79577. break;
  79578. default:
  79579. break;
  79580. }
  79581. } else
  79582. self2.config.errorHandler(new Error(`Invalid date supplied: ${JSON.stringify(inputDate)}`));
  79583. self2.selectedDates = self2.config.allowInvalidPreload ? dates : dates.filter((d) => d instanceof Date && isEnabled(d, false));
  79584. if (self2.config.mode === "range")
  79585. self2.selectedDates.sort((a, b) => a.getTime() - b.getTime());
  79586. }
  79587. function setDate(date, triggerChange2 = false, format = self2.config.dateFormat) {
  79588. if (date !== 0 && !date || date instanceof Array && date.length === 0)
  79589. return self2.clear(triggerChange2);
  79590. setSelectedDate(date, format);
  79591. self2.latestSelectedDateObj = self2.selectedDates[self2.selectedDates.length - 1];
  79592. self2.redraw();
  79593. jumpToDate(void 0, triggerChange2);
  79594. setHoursFromDate();
  79595. if (self2.selectedDates.length === 0) {
  79596. self2.clear(false);
  79597. }
  79598. updateValue(triggerChange2);
  79599. if (triggerChange2)
  79600. triggerEvent("onChange");
  79601. }
  79602. function parseDateRules(arr) {
  79603. return arr.slice().map((rule) => {
  79604. if (typeof rule === "string" || typeof rule === "number" || rule instanceof Date) {
  79605. return self2.parseDate(rule, void 0, true);
  79606. } else if (rule && typeof rule === "object" && rule.from && rule.to)
  79607. return {
  79608. from: self2.parseDate(rule.from, void 0),
  79609. to: self2.parseDate(rule.to, void 0)
  79610. };
  79611. return rule;
  79612. }).filter((x) => x);
  79613. }
  79614. function setupDates() {
  79615. self2.selectedDates = [];
  79616. self2.now = self2.parseDate(self2.config.now) || new Date();
  79617. const preloadedDate = self2.config.defaultDate || ((self2.input.nodeName === "INPUT" || self2.input.nodeName === "TEXTAREA") && self2.input.placeholder && self2.input.value === self2.input.placeholder ? null : self2.input.value);
  79618. if (preloadedDate)
  79619. setSelectedDate(preloadedDate, self2.config.dateFormat);
  79620. self2._initialDate = self2.selectedDates.length > 0 ? self2.selectedDates[0] : self2.config.minDate && self2.config.minDate.getTime() > self2.now.getTime() ? self2.config.minDate : self2.config.maxDate && self2.config.maxDate.getTime() < self2.now.getTime() ? self2.config.maxDate : self2.now;
  79621. self2.currentYear = self2._initialDate.getFullYear();
  79622. self2.currentMonth = self2._initialDate.getMonth();
  79623. if (self2.selectedDates.length > 0)
  79624. self2.latestSelectedDateObj = self2.selectedDates[0];
  79625. if (self2.config.minTime !== void 0)
  79626. self2.config.minTime = self2.parseDate(self2.config.minTime, "H:i");
  79627. if (self2.config.maxTime !== void 0)
  79628. self2.config.maxTime = self2.parseDate(self2.config.maxTime, "H:i");
  79629. self2.minDateHasTime = !!self2.config.minDate && (self2.config.minDate.getHours() > 0 || self2.config.minDate.getMinutes() > 0 || self2.config.minDate.getSeconds() > 0);
  79630. self2.maxDateHasTime = !!self2.config.maxDate && (self2.config.maxDate.getHours() > 0 || self2.config.maxDate.getMinutes() > 0 || self2.config.maxDate.getSeconds() > 0);
  79631. }
  79632. function setupInputs() {
  79633. self2.input = getInputElem();
  79634. if (!self2.input) {
  79635. self2.config.errorHandler(new Error("Invalid input element specified"));
  79636. return;
  79637. }
  79638. self2.input._type = self2.input.type;
  79639. self2.input.type = "text";
  79640. self2.input.classList.add("flatpickr-input");
  79641. self2._input = self2.input;
  79642. if (self2.config.altInput) {
  79643. self2.altInput = createElement(self2.input.nodeName, self2.config.altInputClass);
  79644. self2._input = self2.altInput;
  79645. self2.altInput.placeholder = self2.input.placeholder;
  79646. self2.altInput.disabled = self2.input.disabled;
  79647. self2.altInput.required = self2.input.required;
  79648. self2.altInput.tabIndex = self2.input.tabIndex;
  79649. self2.altInput.type = "text";
  79650. self2.input.setAttribute("type", "hidden");
  79651. if (!self2.config.static && self2.input.parentNode)
  79652. self2.input.parentNode.insertBefore(self2.altInput, self2.input.nextSibling);
  79653. }
  79654. if (!self2.config.allowInput)
  79655. self2._input.setAttribute("readonly", "readonly");
  79656. self2._positionElement = self2.config.positionElement || self2._input;
  79657. }
  79658. function setupMobile() {
  79659. const inputType = self2.config.enableTime ? self2.config.noCalendar ? "time" : "datetime-local" : "date";
  79660. self2.mobileInput = createElement("input", self2.input.className + " flatpickr-mobile");
  79661. self2.mobileInput.tabIndex = 1;
  79662. self2.mobileInput.type = inputType;
  79663. self2.mobileInput.disabled = self2.input.disabled;
  79664. self2.mobileInput.required = self2.input.required;
  79665. self2.mobileInput.placeholder = self2.input.placeholder;
  79666. self2.mobileFormatStr = inputType === "datetime-local" ? "Y-m-d\\TH:i:S" : inputType === "date" ? "Y-m-d" : "H:i:S";
  79667. if (self2.selectedDates.length > 0) {
  79668. self2.mobileInput.defaultValue = self2.mobileInput.value = self2.formatDate(self2.selectedDates[0], self2.mobileFormatStr);
  79669. }
  79670. if (self2.config.minDate)
  79671. self2.mobileInput.min = self2.formatDate(self2.config.minDate, "Y-m-d");
  79672. if (self2.config.maxDate)
  79673. self2.mobileInput.max = self2.formatDate(self2.config.maxDate, "Y-m-d");
  79674. if (self2.input.getAttribute("step"))
  79675. self2.mobileInput.step = String(self2.input.getAttribute("step"));
  79676. self2.input.type = "hidden";
  79677. if (self2.altInput !== void 0)
  79678. self2.altInput.type = "hidden";
  79679. try {
  79680. if (self2.input.parentNode)
  79681. self2.input.parentNode.insertBefore(self2.mobileInput, self2.input.nextSibling);
  79682. } catch (_a) {
  79683. }
  79684. bind(self2.mobileInput, "change", (e) => {
  79685. self2.setDate(getEventTarget(e).value, false, self2.mobileFormatStr);
  79686. triggerEvent("onChange");
  79687. triggerEvent("onClose");
  79688. });
  79689. }
  79690. function toggle(e) {
  79691. if (self2.isOpen === true)
  79692. return self2.close();
  79693. self2.open(e);
  79694. }
  79695. function triggerEvent(event2, data) {
  79696. if (self2.config === void 0)
  79697. return;
  79698. const hooks = self2.config[event2];
  79699. if (hooks !== void 0 && hooks.length > 0) {
  79700. for (let i2 = 0; hooks[i2] && i2 < hooks.length; i2++)
  79701. hooks[i2](self2.selectedDates, self2.input.value, self2, data);
  79702. }
  79703. if (event2 === "onChange") {
  79704. self2.input.dispatchEvent(createEvent("change"));
  79705. self2.input.dispatchEvent(createEvent("input"));
  79706. }
  79707. }
  79708. function createEvent(name2) {
  79709. const e = document.createEvent("Event");
  79710. e.initEvent(name2, true, true);
  79711. return e;
  79712. }
  79713. function isDateSelected(date) {
  79714. for (let i2 = 0; i2 < self2.selectedDates.length; i2++) {
  79715. if (compareDates(self2.selectedDates[i2], date) === 0)
  79716. return "" + i2;
  79717. }
  79718. return false;
  79719. }
  79720. function isDateInRange(date) {
  79721. if (self2.config.mode !== "range" || self2.selectedDates.length < 2)
  79722. return false;
  79723. return compareDates(date, self2.selectedDates[0]) >= 0 && compareDates(date, self2.selectedDates[1]) <= 0;
  79724. }
  79725. function updateNavigationCurrentMonth() {
  79726. if (self2.config.noCalendar || self2.isMobile || !self2.monthNav)
  79727. return;
  79728. self2.yearElements.forEach((yearElement, i2) => {
  79729. const d = new Date(self2.currentYear, self2.currentMonth, 1);
  79730. d.setMonth(self2.currentMonth + i2);
  79731. if (self2.config.showMonths > 1 || self2.config.monthSelectorType === "static") {
  79732. self2.monthElements[i2].textContent = monthToStr(d.getMonth(), self2.config.shorthandCurrentMonth, self2.l10n) + " ";
  79733. } else {
  79734. self2.monthsDropdownContainer.value = d.getMonth().toString();
  79735. }
  79736. yearElement.value = d.getFullYear().toString();
  79737. });
  79738. self2._hidePrevMonthArrow = self2.config.minDate !== void 0 && (self2.currentYear === self2.config.minDate.getFullYear() ? self2.currentMonth <= self2.config.minDate.getMonth() : self2.currentYear < self2.config.minDate.getFullYear());
  79739. self2._hideNextMonthArrow = self2.config.maxDate !== void 0 && (self2.currentYear === self2.config.maxDate.getFullYear() ? self2.currentMonth + 1 > self2.config.maxDate.getMonth() : self2.currentYear > self2.config.maxDate.getFullYear());
  79740. }
  79741. function getDateStr(format) {
  79742. return self2.selectedDates.map((dObj) => self2.formatDate(dObj, format)).filter((d, i2, arr) => self2.config.mode !== "range" || self2.config.enableTime || arr.indexOf(d) === i2).join(self2.config.mode !== "range" ? self2.config.conjunction : self2.l10n.rangeSeparator);
  79743. }
  79744. function updateValue(triggerChange2 = true) {
  79745. if (self2.mobileInput !== void 0 && self2.mobileFormatStr) {
  79746. self2.mobileInput.value = self2.latestSelectedDateObj !== void 0 ? self2.formatDate(self2.latestSelectedDateObj, self2.mobileFormatStr) : "";
  79747. }
  79748. self2.input.value = getDateStr(self2.config.dateFormat);
  79749. if (self2.altInput !== void 0) {
  79750. self2.altInput.value = getDateStr(self2.config.altFormat);
  79751. }
  79752. if (triggerChange2 !== false)
  79753. triggerEvent("onValueUpdate");
  79754. }
  79755. function onMonthNavClick(e) {
  79756. const eventTarget = getEventTarget(e);
  79757. const isPrevMonth = self2.prevMonthNav.contains(eventTarget);
  79758. const isNextMonth = self2.nextMonthNav.contains(eventTarget);
  79759. if (isPrevMonth || isNextMonth) {
  79760. changeMonth(isPrevMonth ? -1 : 1);
  79761. } else if (self2.yearElements.indexOf(eventTarget) >= 0) {
  79762. eventTarget.select();
  79763. } else if (eventTarget.classList.contains("arrowUp")) {
  79764. self2.changeYear(self2.currentYear + 1);
  79765. } else if (eventTarget.classList.contains("arrowDown")) {
  79766. self2.changeYear(self2.currentYear - 1);
  79767. }
  79768. }
  79769. function timeWrapper(e) {
  79770. e.preventDefault();
  79771. const isKeyDown = e.type === "keydown", eventTarget = getEventTarget(e), input = eventTarget;
  79772. if (self2.amPM !== void 0 && eventTarget === self2.amPM) {
  79773. self2.amPM.textContent = self2.l10n.amPM[int(self2.amPM.textContent === self2.l10n.amPM[0])];
  79774. }
  79775. const min = parseFloat(input.getAttribute("min")), max = parseFloat(input.getAttribute("max")), step = parseFloat(input.getAttribute("step")), curValue = parseInt(input.value, 10), delta = e.delta || (isKeyDown ? e.which === 38 ? 1 : -1 : 0);
  79776. let newValue = curValue + step * delta;
  79777. if (typeof input.value !== "undefined" && input.value.length === 2) {
  79778. const isHourElem = input === self2.hourElement, isMinuteElem = input === self2.minuteElement;
  79779. if (newValue < min) {
  79780. newValue = max + newValue + int(!isHourElem) + (int(isHourElem) && int(!self2.amPM));
  79781. if (isMinuteElem)
  79782. incrementNumInput(void 0, -1, self2.hourElement);
  79783. } else if (newValue > max) {
  79784. newValue = input === self2.hourElement ? newValue - max - int(!self2.amPM) : min;
  79785. if (isMinuteElem)
  79786. incrementNumInput(void 0, 1, self2.hourElement);
  79787. }
  79788. if (self2.amPM && isHourElem && (step === 1 ? newValue + curValue === 23 : Math.abs(newValue - curValue) > step)) {
  79789. self2.amPM.textContent = self2.l10n.amPM[int(self2.amPM.textContent === self2.l10n.amPM[0])];
  79790. }
  79791. input.value = pad(newValue);
  79792. }
  79793. }
  79794. init3();
  79795. return self2;
  79796. }
  79797. function _flatpickr(nodeList, config) {
  79798. const nodes = Array.prototype.slice.call(nodeList).filter((x) => x instanceof HTMLElement);
  79799. const instances = [];
  79800. for (let i2 = 0; i2 < nodes.length; i2++) {
  79801. const node = nodes[i2];
  79802. try {
  79803. if (node.getAttribute("data-fp-omit") !== null)
  79804. continue;
  79805. if (node._flatpickr !== void 0) {
  79806. node._flatpickr.destroy();
  79807. node._flatpickr = void 0;
  79808. }
  79809. node._flatpickr = FlatpickrInstance(node, config || {});
  79810. instances.push(node._flatpickr);
  79811. } catch (e) {
  79812. console.error(e);
  79813. }
  79814. }
  79815. return instances.length === 1 ? instances[0] : instances;
  79816. }
  79817. var DEBOUNCED_CHANGE_MS, flatpickr, esm_default;
  79818. var init_esm = __esm({
  79819. "node_modules/flatpickr/dist/esm/index.js"() {
  79820. init_options();
  79821. init_default();
  79822. init_utils();
  79823. init_dom();
  79824. init_dates();
  79825. init_formatting();
  79826. init_polyfills();
  79827. DEBOUNCED_CHANGE_MS = 300;
  79828. if (typeof HTMLElement !== "undefined" && typeof HTMLCollection !== "undefined" && typeof NodeList !== "undefined") {
  79829. HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function(config) {
  79830. return _flatpickr(this, config);
  79831. };
  79832. HTMLElement.prototype.flatpickr = function(config) {
  79833. return _flatpickr([this], config);
  79834. };
  79835. }
  79836. flatpickr = function(selector, config) {
  79837. if (typeof selector === "string") {
  79838. return _flatpickr(window.document.querySelectorAll(selector), config);
  79839. } else if (selector instanceof Node) {
  79840. return _flatpickr([selector], config);
  79841. } else {
  79842. return _flatpickr(selector, config);
  79843. }
  79844. };
  79845. flatpickr.defaultConfig = {};
  79846. flatpickr.l10ns = {
  79847. en: Object.assign({}, default_default),
  79848. default: Object.assign({}, default_default)
  79849. };
  79850. flatpickr.localize = (l10n) => {
  79851. flatpickr.l10ns.default = Object.assign(Object.assign({}, flatpickr.l10ns.default), l10n);
  79852. };
  79853. flatpickr.setDefaults = (config) => {
  79854. flatpickr.defaultConfig = Object.assign(Object.assign({}, flatpickr.defaultConfig), config);
  79855. };
  79856. flatpickr.parseDate = createDateParser({});
  79857. flatpickr.formatDate = createDateFormatter({});
  79858. flatpickr.compareDates = compareDates;
  79859. if (typeof jQuery !== "undefined" && typeof jQuery.fn !== "undefined") {
  79860. jQuery.fn.flatpickr = function(config) {
  79861. return _flatpickr(this, config);
  79862. };
  79863. }
  79864. Date.prototype.fp_incr = function(days) {
  79865. return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === "string" ? parseInt(days, 10) : days));
  79866. };
  79867. if (typeof window !== "undefined") {
  79868. window.flatpickr = flatpickr;
  79869. }
  79870. esm_default = flatpickr;
  79871. }
  79872. });
  79873. // src/controllers/cellDatePickerCtrl.js
  79874. var import_dayjs6, fitFormat, cellDatePickerCtrl, cellDatePickerCtrl_default;
  79875. var init_cellDatePickerCtrl = __esm({
  79876. "src/controllers/cellDatePickerCtrl.js"() {
  79877. init_menuButton();
  79878. init_formula();
  79879. init_store();
  79880. init_esm();
  79881. import_dayjs6 = __toModule(require_dayjs_min());
  79882. init_format();
  79883. init_api();
  79884. fitFormat = (formatStr) => {
  79885. let dateFormat = formatStr.replace(/y/g, "Y");
  79886. dateFormat = dateFormat.replace(/d/g, "D");
  79887. dateFormat = dateFormat.replace(/h/g, "H");
  79888. dateFormat = dateFormat.replace(/上午\/下午/g, "A");
  79889. dateFormat = dateFormat.replace(/上午/g, "A");
  79890. dateFormat = dateFormat.replace(/下午/g, "A");
  79891. dateFormat = dateFormat.replace(/AM\/PM/g, "A");
  79892. dateFormat = dateFormat.replace(/AM/g, "A");
  79893. dateFormat = dateFormat.replace(/PM/g, "A");
  79894. dateFormat = dateFormat.replace(/\"/g, "");
  79895. if (dateFormat.includes("A")) {
  79896. dateFormat = dateFormat.replace(/H/g, "h");
  79897. }
  79898. return dateFormat;
  79899. };
  79900. cellDatePickerCtrl = {
  79901. cellFocus: function(r2, c2, cell) {
  79902. let row = store_default.visibledatarow[r2], row_pre = r2 == 0 ? 0 : store_default.visibledatarow[r2 - 1];
  79903. let col = store_default.visibledatacolumn[c2], col_pre = c2 == 0 ? 0 : store_default.visibledatacolumn[c2 - 1];
  79904. let margeset = menuButton_default.mergeborer(store_default.flowdata, r2, c2);
  79905. let type = cell.ct.fa || "YYYY-MM-DD";
  79906. let defaultDate = update("yyyy-MM-dd hh:mm:ss", cell.v);
  79907. let dateFormat = fitFormat(type);
  79908. let enableTime = false;
  79909. let noCalendar = false;
  79910. let enableSeconds = false;
  79911. let time_24hr = true;
  79912. let hasChineseTime = false;
  79913. if (!!margeset) {
  79914. row = margeset.row[1];
  79915. row_pre = margeset.row[0];
  79916. col = margeset.column[1];
  79917. col_pre = margeset.column[0];
  79918. }
  79919. $(".cell-date-picker").show().css({
  79920. width: col - col_pre + 1,
  79921. height: row - row_pre + 1,
  79922. left: col_pre,
  79923. top: row_pre
  79924. });
  79925. if (/[上午下午]/.test(type)) {
  79926. hasChineseTime = true;
  79927. }
  79928. if (/[Hhms]/.test(dateFormat)) {
  79929. enableTime = true;
  79930. }
  79931. if (!/[YMD]/.test(dateFormat)) {
  79932. noCalendar = true;
  79933. }
  79934. if (/s/.test(dateFormat)) {
  79935. enableSeconds = true;
  79936. }
  79937. if (/A/.test(dateFormat)) {
  79938. time_24hr = false;
  79939. }
  79940. const fp = esm_default("#luckysheet-input-box", {
  79941. allowInput: false,
  79942. noCalendar,
  79943. enableSeconds,
  79944. enableTime,
  79945. dateFormat,
  79946. time_24hr,
  79947. defaultDate,
  79948. onClose() {
  79949. setTimeout(() => {
  79950. fp.destroy();
  79951. }, 0);
  79952. },
  79953. parseDate: (datestr, format) => {
  79954. return (0, import_dayjs6.default)(datestr).toDate();
  79955. },
  79956. formatDate: (date, format, locale2) => {
  79957. if (hasChineseTime) {
  79958. return (0, import_dayjs6.default)(date).format(format).replace("AM", "\u4E0A\u5348").replace("PM", "\u4E0B\u5348");
  79959. }
  79960. return (0, import_dayjs6.default)(date).format(format);
  79961. },
  79962. onChange: function(selectedDates, dateStr) {
  79963. let currentVal = datenum_local(new Date(selectedDates));
  79964. $("#luckysheet-rich-text-editor").html(dateStr);
  79965. setCellValue(r2, c2, currentVal, {isRefresh: false});
  79966. setCellFormat(r2, c2, "ct", cell.ct);
  79967. if (!enableTime) {
  79968. formula_default.updatecell(store_default.luckysheetCellUpdate[0], store_default.luckysheetCellUpdate[1]);
  79969. }
  79970. }
  79971. });
  79972. $("#luckysheet-input-box").click();
  79973. }
  79974. };
  79975. cellDatePickerCtrl_default = cellDatePickerCtrl;
  79976. }
  79977. });
  79978. // src/controllers/updateCell.js
  79979. function luckysheetupdateCell(row_index1, col_index1, d, cover, isnotfocus) {
  79980. if (!checkProtectionLocked(row_index1, col_index1, store_default.currentSheetIndex)) {
  79981. $("#luckysheet-functionbox-cell").blur();
  79982. return;
  79983. }
  79984. if (isEditMode() || store_default.allowEdit === false) {
  79985. return;
  79986. }
  79987. if (!method_default.createHookFunction("cellEditBefore", store_default.luckysheet_select_save)) {
  79988. return;
  79989. }
  79990. server_default.saveParam("mv", store_default.currentSheetIndex, {op: "enterEdit", range: store_default.luckysheet_select_save});
  79991. if (dataVerificationCtrl_default.dataVerification != null && dataVerificationCtrl_default.dataVerification[row_index1 + "_" + col_index1] != null) {
  79992. let dataVerificationItem = dataVerificationCtrl_default.dataVerification[row_index1 + "_" + col_index1];
  79993. if (dataVerificationItem.type == "dropdown") {
  79994. dataVerificationCtrl_default.dropdownListShow();
  79995. } else if (dataVerificationItem.type == "checkbox") {
  79996. return;
  79997. }
  79998. }
  79999. let size = getColumnAndRowSize(row_index1, col_index1, d);
  80000. let row = size.row, row_pre = size.row_pre, col = size.col, col_pre = size.col_pre, row_index = size.row_index, col_index = size.col_index;
  80001. if ($("#luckysheet-dropCell-icon").is(":visible")) {
  80002. $("#luckysheet-dropCell-icon").remove();
  80003. }
  80004. let winH = $(window).height(), winW = $(window).width();
  80005. let container_offset = $("#" + store_default.container).offset();
  80006. let scrollLeft = $("#luckysheet-cell-main").scrollLeft();
  80007. let scrollTop = $("#luckysheet-cell-main").scrollTop();
  80008. if (pivotTable_default.isPivotRange(row_index, col_index)) {
  80009. return;
  80010. }
  80011. let left = col_pre + container_offset.left + store_default.rowHeaderWidth - scrollLeft - 2;
  80012. if (freezen_default.freezenverticaldata != null && col_index1 <= freezen_default.freezenverticaldata[1]) {
  80013. left = col_pre + container_offset.left + store_default.rowHeaderWidth - 2;
  80014. }
  80015. let top = row_pre + container_offset.top + store_default.infobarHeight + store_default.toolbarHeight + store_default.calculatebarHeight + store_default.columnHeaderHeight - scrollTop - 2;
  80016. if (freezen_default.freezenhorizontaldata != null && row_index1 <= freezen_default.freezenhorizontaldata[1]) {
  80017. top = row_pre + container_offset.top + store_default.infobarHeight + store_default.toolbarHeight + store_default.calculatebarHeight + store_default.columnHeaderHeight - 2;
  80018. }
  80019. let input_postition = {
  80020. "min-width": col - col_pre + 1 - 8,
  80021. "min-height": row - row_pre + 1 - 4,
  80022. "max-width": winW + scrollLeft - col_pre - 20 - store_default.rowHeaderWidth,
  80023. "max-height": winH + scrollTop - row_pre - 20 - 15 - store_default.toolbarHeight - store_default.infobarHeight - store_default.calculatebarHeight - store_default.sheetBarHeight - store_default.statisticBarHeight,
  80024. "left": left,
  80025. "top": top
  80026. };
  80027. let inputContentScale = {
  80028. "transform": "scale(" + store_default.zoomRatio + ")",
  80029. "transform-origin": "left top",
  80030. "width": 100 / store_default.zoomRatio + "%",
  80031. "height": 100 / store_default.zoomRatio + "%"
  80032. };
  80033. store_default.luckysheetCellUpdate = [row_index, col_index];
  80034. if (!isnotfocus) {
  80035. $("#luckysheet-rich-text-editor").focus().select();
  80036. }
  80037. $("#luckysheet-input-box").removeAttr("style").css({
  80038. "background-color": "rgb(255, 255, 255)",
  80039. "padding": "0px 2px",
  80040. "font-size": `${store_default.defaultFontSize}pt`,
  80041. "right": "auto",
  80042. "overflow-y": "auto",
  80043. "box-sizing": "initial",
  80044. "display": "flex"
  80045. });
  80046. if (freezen_default.freezenverticaldata != null || freezen_default.freezenhorizontaldata != null) {
  80047. $("#luckysheet-input-box").css("z-index", 10002);
  80048. }
  80049. $("#luckysheet-input-box-index").html(chatatABC(col_index) + (row_index + 1)).hide();
  80050. $("#luckysheet-wa-functionbox-cancel, #luckysheet-wa-functionbox-confirm").addClass("luckysheet-wa-calculate-active");
  80051. let value = "", isCenter = false;
  80052. if (d[row_index] != null && d[row_index][col_index] != null) {
  80053. let cell = d[row_index][col_index];
  80054. let htValue = cell["ht"];
  80055. let leftOrigin = "left", topOrigin = "top";
  80056. if (htValue == "0") {
  80057. input_postition = {
  80058. "min-width": col - col_pre + 1 - 8,
  80059. "min-height": row - row_pre + 1 - 4,
  80060. "max-width": winW * 2 / 3,
  80061. "max-height": winH + scrollTop - row_pre - 20 - 15 - store_default.toolbarHeight - store_default.infobarHeight - store_default.calculatebarHeight - store_default.sheetBarHeight - store_default.statisticBarHeight,
  80062. "left": col_pre + container_offset.left + store_default.rowHeaderWidth - scrollLeft - 2,
  80063. "top": row_pre + container_offset.top + store_default.infobarHeight + store_default.toolbarHeight + store_default.calculatebarHeight + store_default.columnHeaderHeight - scrollTop - 2
  80064. };
  80065. if (store_default.zoomRatio < 1) {
  80066. leftOrigin = "center";
  80067. }
  80068. isCenter = true;
  80069. } else if (htValue == "2") {
  80070. input_postition = {
  80071. "min-width": col - col_pre + 1 - 8,
  80072. "min-height": row - row_pre + 1 - 4,
  80073. "max-width": col + container_offset.left - scrollLeft - 8,
  80074. "max-height": winH + scrollTop - row_pre - 20 - 15 - store_default.toolbarHeight - store_default.infobarHeight - store_default.calculatebarHeight - store_default.sheetBarHeight - store_default.statisticBarHeight,
  80075. "right": winW - (container_offset.left + (store_default.rowHeaderWidth - 1) - scrollLeft) - col,
  80076. "top": row_pre + container_offset.top + store_default.infobarHeight + store_default.toolbarHeight + store_default.calculatebarHeight + store_default.columnHeaderHeight - scrollTop - 2
  80077. };
  80078. if (store_default.zoomRatio < 1) {
  80079. leftOrigin = "right";
  80080. }
  80081. }
  80082. if (cell["vt"] == "0") {
  80083. topOrigin = "center";
  80084. } else if (cell["vt"] == "2") {
  80085. topOrigin = "bottom";
  80086. }
  80087. inputContentScale["transform-origin"] = leftOrigin + " " + topOrigin;
  80088. if (!cover) {
  80089. if (isInlineStringCell(cell)) {
  80090. value = getInlineStringStyle(row_index, col_index, d);
  80091. } else if (cell.f != null) {
  80092. value = getcellvalue(row_index, col_index, d, "f");
  80093. } else {
  80094. value = valueShowEs(row_index, col_index, d);
  80095. if (cell.qp == "1") {
  80096. value = value ? "" + value : value;
  80097. }
  80098. }
  80099. }
  80100. let style = menuButton_default.getStyleByCell(d, row_index, col_index);
  80101. style = $("#luckysheet-input-box").get(0).style.cssText + style;
  80102. $("#luckysheet-input-box").get(0).style.cssText = style;
  80103. if ($("#luckysheet-input-box").get(0).style.backgroundColor == "rgba(0, 0, 0, 0)") {
  80104. $("#luckysheet-input-box").get(0).style.background = "rgb(255,255,255)";
  80105. }
  80106. } else {
  80107. let af_compute = alternateformat_default.getComputeMap();
  80108. var checksAF = alternateformat_default.checksAF(row_index, col_index, af_compute);
  80109. var cf_compute = conditionformat_default.getComputeMap();
  80110. var checksCF = conditionformat_default.checksCF(row_index, col_index, cf_compute);
  80111. if (checksCF != null && checksCF["cellColor"] != null) {
  80112. $("#luckysheet-input-box").get(0).style.background = checksCF["cellColor"];
  80113. } else if (checksAF != null) {
  80114. $("#luckysheet-input-box").get(0).style.background = checksAF[1];
  80115. }
  80116. }
  80117. if (input_postition["min-height"] > input_postition["max-height"]) {
  80118. input_postition["min-height"] = input_postition["max-height"];
  80119. }
  80120. if (input_postition["min-width"] > input_postition["max-width"]) {
  80121. input_postition["min-width"] = input_postition["max-width"];
  80122. }
  80123. value = formula_default.xssDeal(value);
  80124. if (!checkProtectionCellHidden(row_index, col_index, store_default.currentSheetIndex) && value.length > 0 && value.substr(0, 63) == '<span dir="auto" class="luckysheet-formula-text-color">=</span>') {
  80125. $("#luckysheet-rich-text-editor").html("");
  80126. } else {
  80127. value = formula_default.ltGtSignDeal(value);
  80128. $("#luckysheet-rich-text-editor").html(value);
  80129. if (!isnotfocus) {
  80130. luckysheetRangeLast($("#luckysheet-rich-text-editor")[0]);
  80131. }
  80132. }
  80133. if (isCenter) {
  80134. let width = $("#luckysheet-input-box").width();
  80135. if (width > input_postition["max-width"]) {
  80136. width = input_postition["max-width"];
  80137. }
  80138. if (width < input_postition["min-width"]) {
  80139. width = input_postition["min-width"];
  80140. }
  80141. let newLeft = input_postition["left"] - width / 2 + (col - col_pre) / 2;
  80142. if (newLeft < 2) {
  80143. newLeft = 2;
  80144. }
  80145. input_postition["left"] = newLeft - 2;
  80146. }
  80147. $("#luckysheet-input-box").css(input_postition);
  80148. $("#luckysheet-rich-text-editor").css(inputContentScale);
  80149. if (d[row_index1][col_index1] && d[row_index1][col_index1].ct && d[row_index1][col_index1].ct.t == "d") {
  80150. cellDatePickerCtrl_default.cellFocus(row_index1, col_index1, d[row_index1][col_index1]);
  80151. }
  80152. formula_default.rangetosheet = store_default.currentSheetIndex;
  80153. formula_default.createRangeHightlight();
  80154. formula_default.rangeResizeTo = $("#luckysheet-rich-text-editor");
  80155. cleargridelement();
  80156. }
  80157. function setCenterInputPosition(row_index, col_index, d) {
  80158. if (row_index == null || col_index == null) {
  80159. return;
  80160. }
  80161. let cell = d[row_index][col_index];
  80162. if (cell == null) {
  80163. return;
  80164. }
  80165. let htValue = cell["ht"];
  80166. if (cell != null && htValue != "0") {
  80167. return;
  80168. }
  80169. let size = getColumnAndRowSize(row_index, col_index, d);
  80170. let row = size.row, row_pre = size.row_pre, col = size.col, col_pre = size.col_pre;
  80171. let winH = $(window).height(), winW = $(window).width();
  80172. let container_offset = $("#" + store_default.container).offset();
  80173. let scrollLeft = $("#luckysheet-cell-main").scrollLeft();
  80174. let scrollTop = $("#luckysheet-cell-main").scrollTop();
  80175. let input_postition = {
  80176. "min-width": col - col_pre + 1 - 8,
  80177. "max-width": winW * 2 / 3,
  80178. "left": col_pre + container_offset.left + store_default.rowHeaderWidth - scrollLeft - 2
  80179. };
  80180. let width = $("#luckysheet-input-box").width();
  80181. if (width > input_postition["max-width"]) {
  80182. width = input_postition["max-width"];
  80183. }
  80184. if (width < input_postition["min-width"]) {
  80185. width = input_postition["min-width"];
  80186. }
  80187. let newLeft = input_postition["left"] - width / 2 + (col - col_pre) / 2;
  80188. if (newLeft < 2) {
  80189. newLeft = 2;
  80190. }
  80191. input_postition["left"] = newLeft - 2;
  80192. $("#luckysheet-input-box").css(input_postition);
  80193. }
  80194. function getColumnAndRowSize(row_index, col_index, d) {
  80195. let row = store_default.visibledatarow[row_index], row_pre = row_index - 1 == -1 ? 0 : store_default.visibledatarow[row_index - 1];
  80196. let col = store_default.visibledatacolumn[col_index], col_pre = col_index - 1 == -1 ? 0 : store_default.visibledatacolumn[col_index - 1];
  80197. if (d == null) {
  80198. d = store_default.flowdata;
  80199. }
  80200. let margeset = menuButton_default.mergeborer(d, row_index, col_index);
  80201. if (!!margeset) {
  80202. row = margeset.row[1];
  80203. row_pre = margeset.row[0];
  80204. row_index = margeset.row[2];
  80205. col = margeset.column[1];
  80206. col_pre = margeset.column[0];
  80207. col_index = margeset.column[2];
  80208. }
  80209. return {
  80210. row,
  80211. row_pre,
  80212. row_index,
  80213. col,
  80214. col_pre,
  80215. col_index
  80216. };
  80217. }
  80218. var init_updateCell = __esm({
  80219. "src/controllers/updateCell.js"() {
  80220. init_pivotTable();
  80221. init_freezen();
  80222. init_menuButton();
  80223. init_conditionformat();
  80224. init_alternateformat();
  80225. init_cellDatePickerCtrl();
  80226. init_dataVerificationCtrl();
  80227. init_protection();
  80228. init_util();
  80229. init_validate();
  80230. init_getdata();
  80231. init_format();
  80232. init_formula();
  80233. init_cursorPos();
  80234. init_cleargridelement();
  80235. init_inlineString();
  80236. init_store();
  80237. init_server();
  80238. init_method();
  80239. }
  80240. });
  80241. // src/global/api.js
  80242. var api_exports = {};
  80243. __export(api_exports, {
  80244. cancelFrozen: () => cancelFrozen,
  80245. cancelRangeMerge: () => cancelRangeMerge,
  80246. changLang: () => changLang,
  80247. checkTheStatusOfTheSelectedCells: () => checkTheStatusOfTheSelectedCells,
  80248. clearCell: () => clearCell,
  80249. clearRange: () => clearRange,
  80250. closeWebsocket: () => closeWebsocket,
  80251. deleteCell: () => deleteCell,
  80252. deleteColumn: () => deleteColumn,
  80253. deleteDataVerification: () => deleteDataVerification,
  80254. deleteImage: () => deleteImage,
  80255. deleteRange: () => deleteRange,
  80256. deleteRangeConditionalFormat: () => deleteRangeConditionalFormat,
  80257. deleteRow: () => deleteRow,
  80258. deleteRowOrColumn: () => deleteRowOrColumn,
  80259. enterEditMode: () => enterEditMode,
  80260. exitEditMode: () => exitEditMode,
  80261. find: () => find,
  80262. frozenColumnRange: () => frozenColumnRange,
  80263. frozenFirstColumn: () => frozenFirstColumn,
  80264. frozenFirstRow: () => frozenFirstRow,
  80265. frozenRowRange: () => frozenRowRange,
  80266. getAllSheets: () => getAllSheets,
  80267. getCellValue: () => getCellValue,
  80268. getColumnWidth: () => getColumnWidth,
  80269. getConfig: () => getConfig,
  80270. getDefaultColWidth: () => getDefaultColWidth,
  80271. getDefaultRowHeight: () => getDefaultRowHeight,
  80272. getImageOption: () => getImageOption,
  80273. getLuckysheetfile: () => getLuckysheetfile,
  80274. getRange: () => getRange,
  80275. getRangeArray: () => getRangeArray,
  80276. getRangeAxis: () => getRangeAxis,
  80277. getRangeBoolean: () => getRangeBoolean,
  80278. getRangeByTxt: () => getRangeByTxt,
  80279. getRangeDiagonal: () => getRangeDiagonal,
  80280. getRangeHtml: () => getRangeHtml,
  80281. getRangeJson: () => getRangeJson,
  80282. getRangeValue: () => getRangeValue,
  80283. getRangeValuesWithFlatte: () => getRangeValuesWithFlatte,
  80284. getRangeWithFlatten: () => getRangeWithFlatten,
  80285. getRowHeight: () => getRowHeight,
  80286. getScreenshot: () => getScreenshot,
  80287. getSheet: () => getSheet,
  80288. getSheetData: () => getSheetData,
  80289. getTxtByRange: () => getTxtByRange,
  80290. getWorkbookName: () => getWorkbookName,
  80291. hideColumn: () => hideColumn,
  80292. hideGridLines: () => hideGridLines,
  80293. hideRow: () => hideRow,
  80294. hideRowOrColumn: () => hideRowOrColumn,
  80295. insertColumn: () => insertColumn,
  80296. insertColumnRight: () => insertColumnRight,
  80297. insertImage: () => insertImage,
  80298. insertRow: () => insertRow,
  80299. insertRowBottom: () => insertRowBottom,
  80300. insertRowBottomOrColumnRight: () => insertRowBottomOrColumnRight,
  80301. insertRowOrColumn: () => insertRowOrColumn,
  80302. matrixCalculation: () => matrixCalculation,
  80303. matrixOperation: () => matrixOperation,
  80304. pagerInit: () => pagerInit,
  80305. redo: () => redo,
  80306. refresh: () => refresh,
  80307. refreshFormula: () => refreshFormula,
  80308. refreshMenuButtonFocus: () => refreshMenuButtonFocus,
  80309. replace: () => replace,
  80310. resize: () => resize,
  80311. scroll: () => scroll,
  80312. setBothFrozen: () => setBothFrozen,
  80313. setCellFormat: () => setCellFormat,
  80314. setCellValue: () => setCellValue,
  80315. setColumnWidth: () => setColumnWidth,
  80316. setConfig: () => setConfig,
  80317. setDataVerification: () => setDataVerification,
  80318. setHorizontalFrozen: () => setHorizontalFrozen,
  80319. setRangeConditionalFormat: () => setRangeConditionalFormat,
  80320. setRangeConditionalFormatDefault: () => setRangeConditionalFormatDefault,
  80321. setRangeFilter: () => setRangeFilter,
  80322. setRangeFormat: () => setRangeFormat,
  80323. setRangeMerge: () => setRangeMerge,
  80324. setRangeShow: () => setRangeShow,
  80325. setRangeSort: () => setRangeSort,
  80326. setRangeSortMulti: () => setRangeSortMulti,
  80327. setRangeValue: () => setRangeValue,
  80328. setRowHeight: () => setRowHeight,
  80329. setSheetActive: () => setSheetActive,
  80330. setSheetAdd: () => setSheetAdd,
  80331. setSheetColor: () => setSheetColor,
  80332. setSheetCopy: () => setSheetCopy,
  80333. setSheetDelete: () => setSheetDelete,
  80334. setSheetHide: () => setSheetHide,
  80335. setSheetMove: () => setSheetMove,
  80336. setSheetName: () => setSheetName,
  80337. setSheetOrder: () => setSheetOrder,
  80338. setSheetShow: () => setSheetShow,
  80339. setSheetZoom: () => setSheetZoom,
  80340. setSingleRangeFormat: () => setSingleRangeFormat,
  80341. setVerticalFrozen: () => setVerticalFrozen,
  80342. setWorkbookName: () => setWorkbookName,
  80343. showColumn: () => showColumn,
  80344. showGridLines: () => showGridLines,
  80345. showRow: () => showRow,
  80346. showRowOrColumn: () => showRowOrColumn,
  80347. toJson: () => toJson,
  80348. transToCellData: () => transToCellData,
  80349. transToData: () => transToData,
  80350. undo: () => undo,
  80351. updataSheet: () => updataSheet
  80352. });
  80353. function getCellValue(row, column, options = {}) {
  80354. if (!isRealNum(row) || !isRealNum(column)) {
  80355. return tooltip_default.info("Arguments row or column cannot be null or undefined.", "");
  80356. }
  80357. let curSheetOrder = getSheetIndex(store_default.currentSheetIndex);
  80358. let {
  80359. type = "v",
  80360. order = curSheetOrder
  80361. } = __spreadValues({}, options);
  80362. let targetSheetData = store_default.luckysheetfile[order].data;
  80363. let cellData = targetSheetData[row][column];
  80364. let return_v;
  80365. if (getObjType(cellData) == "object") {
  80366. return_v = cellData[type];
  80367. if (type == "f" && return_v != null) {
  80368. return_v = formula_default.functionHTMLGenerate(return_v);
  80369. } else if (type == "f") {
  80370. return_v = cellData["v"];
  80371. } else if (cellData && cellData.ct) {
  80372. if (cellData.ct.fa == "yyyy-MM-dd") {
  80373. return_v = cellData.m;
  80374. } else if (cellData.ct.hasOwnProperty("t") && cellData.ct.t === "inlineStr") {
  80375. let inlineStrValueArr = cellData.ct.s;
  80376. if (inlineStrValueArr) {
  80377. return_v = inlineStrValueArr.map((i2) => i2.v).join("");
  80378. }
  80379. }
  80380. }
  80381. }
  80382. if (return_v == void 0) {
  80383. return_v = null;
  80384. }
  80385. return return_v;
  80386. }
  80387. function setCellValue(row, column, value, options = {}) {
  80388. let curv = store_default.flowdata[row][column];
  80389. const oldValue = JSON.stringify(curv);
  80390. if (!isRealNum(row) || !isRealNum(column)) {
  80391. return tooltip_default.info("The row or column parameter is invalid.", "");
  80392. }
  80393. let {
  80394. order = getSheetIndex(store_default.currentSheetIndex),
  80395. isRefresh = true,
  80396. success
  80397. } = __spreadValues({}, options);
  80398. let file = store_default.luckysheetfile[order];
  80399. if (file == null) {
  80400. return tooltip_default.info("The order parameter is invalid.", "");
  80401. }
  80402. if (!method_default.createHookFunction("cellUpdateBefore", row, column, value, isRefresh)) {
  80403. return;
  80404. }
  80405. let data = file.data;
  80406. if (isRefresh) {
  80407. data = $.extend(true, [], file.data);
  80408. }
  80409. if (data.length == 0) {
  80410. data = sheetmanage_default.buildGridData(file);
  80411. }
  80412. let formatList = {
  80413. bg: 1,
  80414. ff: 1,
  80415. fc: 1,
  80416. bl: 1,
  80417. it: 1,
  80418. fs: 1,
  80419. cl: 1,
  80420. un: 1,
  80421. vt: 1,
  80422. ht: 1,
  80423. mc: 1,
  80424. tr: 1,
  80425. tb: 1,
  80426. rt: 1,
  80427. qp: 1
  80428. };
  80429. if (value == null || value.toString().length == 0) {
  80430. formula_default.delFunctionGroup(row, column);
  80431. setcellvalue(row, column, data, value);
  80432. } else if (value instanceof Object) {
  80433. let curv2 = {};
  80434. if (isRealNull(data[row][column])) {
  80435. data[row][column] = {};
  80436. }
  80437. let cell = data[row][column];
  80438. if (value.f != null && value.v == null) {
  80439. curv2.f = value.f;
  80440. if (value.ct != null) {
  80441. curv2.ct = value.ct;
  80442. }
  80443. data = formula_default.updatecell(row, column, curv2, false).data;
  80444. } else {
  80445. if (value.ct != null) {
  80446. curv2.ct = value.ct;
  80447. }
  80448. if (value.f != null) {
  80449. curv2.f = value.f;
  80450. }
  80451. if (value.v != null) {
  80452. curv2.v = value.v;
  80453. } else {
  80454. curv2.v = cell.v;
  80455. }
  80456. if (value.m != null) {
  80457. curv2.m = value.m;
  80458. }
  80459. formula_default.delFunctionGroup(row, column);
  80460. setcellvalue(row, column, data, curv2);
  80461. }
  80462. for (let attr in value) {
  80463. let v = value[attr];
  80464. if (attr in formatList) {
  80465. menuButton_default.updateFormatCell(data, attr, v, row, row, column, column);
  80466. } else {
  80467. cell[attr] = v;
  80468. }
  80469. }
  80470. data[row][column] = cell;
  80471. } else {
  80472. if (value.toString().substr(0, 1) == "=" || value.toString().substr(0, 5) == "<span") {
  80473. data = formula_default.updatecell(row, column, value, false).data;
  80474. } else {
  80475. formula_default.delFunctionGroup(row, column);
  80476. setcellvalue(row, column, data, value);
  80477. }
  80478. }
  80479. setTimeout(() => {
  80480. method_default.createHookFunction("cellUpdated", row, column, JSON.parse(oldValue), store_default.flowdata[row][column], isRefresh);
  80481. }, 0);
  80482. if (file.index == store_default.currentSheetIndex && isRefresh) {
  80483. jfrefreshgrid(data, [{"row": [row, row], "column": [column, column]}]);
  80484. } else {
  80485. file.data = data;
  80486. }
  80487. if (success && typeof success === "function") {
  80488. success(data);
  80489. }
  80490. }
  80491. function clearCell(row, column, options = {}) {
  80492. if (!isRealNum(row) || !isRealNum(column)) {
  80493. return tooltip_default.info("Arguments row and column cannot be null or undefined.", "");
  80494. }
  80495. let curSheetOrder = getSheetIndex(store_default.currentSheetIndex);
  80496. let {
  80497. order = curSheetOrder,
  80498. success
  80499. } = __spreadValues({}, options);
  80500. let targetSheetData = $.extend(true, [], store_default.luckysheetfile[order].data);
  80501. let cell = targetSheetData[row][column];
  80502. if (getObjType(cell) == "object") {
  80503. delete cell["m"];
  80504. delete cell["v"];
  80505. if (cell["f"] != null) {
  80506. delete cell["f"];
  80507. formula_default.delFunctionGroup(row, column, order);
  80508. delete cell["spl"];
  80509. }
  80510. } else {
  80511. cell = null;
  80512. }
  80513. if (order === curSheetOrder) {
  80514. jfrefreshgrid(targetSheetData, [{
  80515. row: [row, row],
  80516. column: [column, column]
  80517. }]);
  80518. } else {
  80519. store_default.luckysheetfile[order].data = targetSheetData;
  80520. }
  80521. if (success && typeof success === "function") {
  80522. success(cell);
  80523. }
  80524. }
  80525. function deleteCell(move, row, column, options = {}) {
  80526. let moveTypes = ["left", "up"];
  80527. if (!move || moveTypes.indexOf(move) < 0) {
  80528. return tooltip_default.info("Arguments move cannot be null or undefined and its value must be 'left' or 'up'", "");
  80529. }
  80530. if (!isRealNum(row) || !isRealNum(column)) {
  80531. return tooltip_default.info("Arguments row and column cannot be null or undefined.", "");
  80532. }
  80533. let curSheetOrder = getSheetIndex(store_default.currentSheetIndex);
  80534. let {
  80535. order = curSheetOrder,
  80536. success
  80537. } = __spreadValues({}, options);
  80538. let moveType = "move" + move.replace(move[0], move[0].toUpperCase());
  80539. let sheetIndex;
  80540. if (order) {
  80541. if (store_default.luckysheetfile[order]) {
  80542. sheetIndex = store_default.luckysheetfile[order].index;
  80543. }
  80544. }
  80545. luckysheetDeleteCell(moveType, row, row, column, column, sheetIndex);
  80546. if (success && typeof success === "function") {
  80547. success();
  80548. }
  80549. }
  80550. function setCellFormat(row, column, attr, value, options = {}) {
  80551. if (!isRealNum(row) || !isRealNum(column)) {
  80552. return tooltip_default.info("Arguments row or column cannot be null or undefined.", "");
  80553. }
  80554. if (!attr) {
  80555. return tooltip_default.info("Arguments attr cannot be null or undefined.", "");
  80556. }
  80557. let curSheetOrder = getSheetIndex(store_default.currentSheetIndex);
  80558. let {
  80559. order = curSheetOrder,
  80560. success
  80561. } = __spreadValues({}, options);
  80562. let file = store_default.luckysheetfile[order];
  80563. if (file == null) {
  80564. return tooltip_default.info("The order parameter is invalid.", "");
  80565. }
  80566. let targetSheetData = $.extend(true, [], file.data);
  80567. if (targetSheetData.length == 0) {
  80568. targetSheetData = sheetmanage_default.buildGridData(file);
  80569. }
  80570. let cellData = targetSheetData[row][column] || {};
  80571. let cfg = $.extend(true, {}, file.config);
  80572. if (attr == "ct" && (!value || !value.hasOwnProperty("fa") || !value.hasOwnProperty("t"))) {
  80573. return new TypeError("While set attribute 'ct' to cell, the value must have property 'fa' and 't'");
  80574. }
  80575. if (attr == "bd") {
  80576. if (cfg["borderInfo"] == null) {
  80577. cfg["borderInfo"] = [];
  80578. }
  80579. let borderInfo = __spreadValues({
  80580. rangeType: "range",
  80581. borderType: "border-all",
  80582. color: "#000",
  80583. style: "1",
  80584. range: [{
  80585. column: [column, column],
  80586. row: [row, row]
  80587. }]
  80588. }, value);
  80589. cfg["borderInfo"].push(borderInfo);
  80590. } else {
  80591. cellData[attr] = value;
  80592. }
  80593. targetSheetData[row][column] = cellData;
  80594. if (file.index == store_default.currentSheetIndex) {
  80595. file.config = cfg;
  80596. store_default.config = cfg;
  80597. jfrefreshgrid(targetSheetData, [{"row": [row, row], "column": [column, column]}]);
  80598. } else {
  80599. file.config = cfg;
  80600. file.data = targetSheetData;
  80601. }
  80602. if (success && typeof success === "function") {
  80603. success(cellData);
  80604. }
  80605. }
  80606. function find(content, options = {}) {
  80607. if (!content && content != 0) {
  80608. return tooltip_default.info("Search content cannot be null or empty", "");
  80609. }
  80610. let curSheetOrder = getSheetIndex(store_default.currentSheetIndex);
  80611. let {
  80612. isRegularExpression = false,
  80613. isWholeWord = false,
  80614. isCaseSensitive = false,
  80615. order = curSheetOrder,
  80616. type = "m"
  80617. } = __spreadValues({}, options);
  80618. let targetSheetData = store_default.luckysheetfile[order].data;
  80619. let result = [];
  80620. for (let i2 = 0; i2 < targetSheetData.length; i2++) {
  80621. const rowArr = targetSheetData[i2];
  80622. for (let j = 0; j < rowArr.length; j++) {
  80623. const cell = rowArr[j];
  80624. if (!cell) {
  80625. continue;
  80626. }
  80627. cell.row = i2;
  80628. cell.column = j;
  80629. if (isWholeWord) {
  80630. if (isCaseSensitive) {
  80631. if (content.toString() == cell[type]) {
  80632. result.push(cell);
  80633. }
  80634. } else {
  80635. if (cell[type] && content.toString().toLowerCase() == cell[type].toLowerCase()) {
  80636. result.push(cell);
  80637. }
  80638. }
  80639. } else if (isRegularExpression) {
  80640. let reg;
  80641. if (isCaseSensitive) {
  80642. reg = new RegExp(func_methods_default.getRegExpStr(content), "g");
  80643. } else {
  80644. reg = new RegExp(func_methods_default.getRegExpStr(content), "ig");
  80645. }
  80646. if (reg.test(cell[type])) {
  80647. result.push(cell);
  80648. }
  80649. } else if (isCaseSensitive) {
  80650. let reg = new RegExp(func_methods_default.getRegExpStr(content), "g");
  80651. if (reg.test(cell[type])) {
  80652. result.push(cell);
  80653. }
  80654. } else {
  80655. let reg = new RegExp(func_methods_default.getRegExpStr(content), "ig");
  80656. if (reg.test(cell[type])) {
  80657. result.push(cell);
  80658. }
  80659. }
  80660. }
  80661. }
  80662. return result;
  80663. }
  80664. function replace(content, replaceContent, options = {}) {
  80665. let matchCells = find(content, options);
  80666. let curSheetOrder = getSheetIndex(store_default.currentSheetIndex);
  80667. let {
  80668. order = curSheetOrder
  80669. } = __spreadValues({}, options);
  80670. let file = store_default.luckysheetfile[order];
  80671. if (file == null) {
  80672. return tooltip_default.info("The order parameter is invalid.", "");
  80673. }
  80674. let sheetData = $.extend(true, [], file.data);
  80675. matchCells.forEach((cell) => {
  80676. cell.m = replaceContent;
  80677. setCellValue(cell.row, cell.column, replaceContent, {order, isRefresh: false});
  80678. });
  80679. let fileData = $.extend(true, [], file.data);
  80680. file.data.length = 0;
  80681. file.data.push(...sheetData);
  80682. if (file.index == store_default.currentSheetIndex) {
  80683. jfrefreshgrid(fileData, void 0, void 0, true, false);
  80684. }
  80685. luckysheetrefreshgrid();
  80686. if (options.success && typeof options.success === "function") {
  80687. options.success(matchCells);
  80688. }
  80689. return matchCells;
  80690. }
  80691. function exitEditMode(options = {}) {
  80692. if (parseInt($("#luckysheet-input-box").css("top")) > 0) {
  80693. if ($("#luckysheet-formula-search-c").is(":visible") && formula_default.searchFunctionCell != null) {
  80694. formula_default.searchFunctionEnter($("#luckysheet-formula-search-c").find(".luckysheet-formula-search-item-active"));
  80695. } else {
  80696. formula_default.updatecell(store_default.luckysheetCellUpdate[0], store_default.luckysheetCellUpdate[1]);
  80697. store_default.luckysheet_select_save = [{
  80698. "row": [store_default.luckysheetCellUpdate[0], store_default.luckysheetCellUpdate[0]],
  80699. "column": [store_default.luckysheetCellUpdate[1], store_default.luckysheetCellUpdate[1]],
  80700. "row_focus": store_default.luckysheetCellUpdate[0],
  80701. "column_focus": store_default.luckysheetCellUpdate[1]
  80702. }];
  80703. }
  80704. if ($("#luckysheet-search-formula-parm").is(":visible")) {
  80705. $("#luckysheet-search-formula-parm").hide();
  80706. }
  80707. if ($("#luckysheet-search-formula-parm-select").is(":visible")) {
  80708. $("#luckysheet-search-formula-parm-select").hide();
  80709. }
  80710. }
  80711. if (options.success && typeof options.success === "function") {
  80712. options.success();
  80713. }
  80714. }
  80715. function enterEditMode(options = {}) {
  80716. if ($("#luckysheet-conditionformat-dialog").is(":visible")) {
  80717. return;
  80718. } else if ($("#luckysheet-cell-selected").is(":visible")) {
  80719. let last = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1];
  80720. let row_index = last["row_focus"], col_index = last["column_focus"];
  80721. luckysheetupdateCell(row_index, col_index, store_default.flowdata);
  80722. }
  80723. if (options.success && typeof options.success === "function") {
  80724. options.success();
  80725. }
  80726. }
  80727. function frozenFirstRow(order) {
  80728. freezen_default.saveFrozen("freezenRow", order);
  80729. if (!order || order == getSheetIndex(store_default.currentSheetIndex)) {
  80730. let freezenhorizontaldata, row_st, top;
  80731. if (freezen_default.freezenRealFirstRowColumn) {
  80732. let row_st2 = 0;
  80733. top = store_default.visibledatarow[row_st2] - 2 + store_default.columnHeaderHeight;
  80734. freezenhorizontaldata = [
  80735. store_default.visibledatarow[row_st2],
  80736. row_st2 + 1,
  80737. 0,
  80738. freezen_default.cutVolumn(store_default.visibledatarow, row_st2 + 1),
  80739. top
  80740. ];
  80741. } else {
  80742. let scrollTop = $("#luckysheet-cell-main").scrollTop();
  80743. row_st = luckysheet_searcharray(store_default.visibledatarow, scrollTop);
  80744. if (row_st == -1) {
  80745. row_st = 0;
  80746. }
  80747. top = store_default.visibledatarow[row_st] - 2 - scrollTop + store_default.columnHeaderHeight;
  80748. freezenhorizontaldata = [
  80749. store_default.visibledatarow[row_st],
  80750. row_st + 1,
  80751. scrollTop,
  80752. freezen_default.cutVolumn(store_default.visibledatarow, row_st + 1),
  80753. top
  80754. ];
  80755. }
  80756. freezen_default.saveFreezen(freezenhorizontaldata, top, null, null);
  80757. if (freezen_default.freezenverticaldata != null) {
  80758. freezen_default.cancelFreezenVertical();
  80759. freezen_default.createAssistCanvas();
  80760. luckysheetrefreshgrid();
  80761. }
  80762. freezen_default.createFreezenHorizontal(freezenhorizontaldata, top);
  80763. freezen_default.createAssistCanvas();
  80764. luckysheetrefreshgrid();
  80765. }
  80766. }
  80767. function frozenFirstColumn(order) {
  80768. freezen_default.saveFrozen("freezenColumn", order);
  80769. if (!order || order == getSheetIndex(store_default.currentSheetIndex)) {
  80770. let freezenverticaldata, col_st, left;
  80771. if (freezen_default.freezenRealFirstRowColumn) {
  80772. col_st = 0;
  80773. left = store_default.visibledatacolumn[col_st] - 2 + store_default.rowHeaderWidth;
  80774. freezenverticaldata = [
  80775. store_default.visibledatacolumn[col_st],
  80776. col_st + 1,
  80777. 0,
  80778. freezen_default.cutVolumn(store_default.visibledatacolumn, col_st + 1),
  80779. left
  80780. ];
  80781. } else {
  80782. let scrollLeft = $("#luckysheet-cell-main").scrollLeft();
  80783. col_st = luckysheet_searcharray(store_default.visibledatacolumn, scrollLeft);
  80784. if (col_st == -1) {
  80785. col_st = 0;
  80786. }
  80787. left = store_default.visibledatacolumn[col_st] - 2 - scrollLeft + store_default.rowHeaderWidth;
  80788. freezenverticaldata = [
  80789. store_default.visibledatacolumn[col_st],
  80790. col_st + 1,
  80791. scrollLeft,
  80792. freezen_default.cutVolumn(store_default.visibledatacolumn, col_st + 1),
  80793. left
  80794. ];
  80795. }
  80796. freezen_default.saveFreezen(null, null, freezenverticaldata, left);
  80797. if (freezen_default.freezenhorizontaldata != null) {
  80798. freezen_default.cancelFreezenHorizontal();
  80799. freezen_default.createAssistCanvas();
  80800. luckysheetrefreshgrid();
  80801. }
  80802. freezen_default.createFreezenVertical(freezenverticaldata, left);
  80803. freezen_default.createAssistCanvas();
  80804. luckysheetrefreshgrid();
  80805. }
  80806. }
  80807. function frozenRowRange(range2, order) {
  80808. const locale_frozen = locale_default().freezen;
  80809. if (!range2 || !range2.hasOwnProperty("row_focus") && !formula_default.iscelldata(range2)) {
  80810. if (isEditMode()) {
  80811. alert(locale_frozen.noSeletionError);
  80812. } else {
  80813. tooltip_default.info(locale_frozen.noSeletionError, "");
  80814. }
  80815. return;
  80816. }
  80817. if (typeof range2 === "string" && formula_default.iscelldata(range2)) {
  80818. range2 = formula_default.getcellrange(range2);
  80819. range2 = {
  80820. row_focus: range2.row[0],
  80821. column_focus: range2.column[0]
  80822. };
  80823. }
  80824. freezen_default.saveFrozen("freezenRowRange", order, range2);
  80825. if (!order || order == getSheetIndex(store_default.currentSheetIndex)) {
  80826. let scrollTop = $("#luckysheet-cell-main").scrollTop();
  80827. let row_st = luckysheet_searcharray(store_default.visibledatarow, scrollTop);
  80828. let row_focus = range2.row_focus;
  80829. if (row_focus > row_st) {
  80830. row_st = row_focus;
  80831. }
  80832. if (row_st == -1) {
  80833. row_st = 0;
  80834. }
  80835. let top = store_default.visibledatarow[row_st] - 2 - scrollTop + store_default.columnHeaderHeight;
  80836. let freezenhorizontaldata = [
  80837. store_default.visibledatarow[row_st],
  80838. row_st + 1,
  80839. scrollTop,
  80840. freezen_default.cutVolumn(store_default.visibledatarow, row_st + 1),
  80841. top
  80842. ];
  80843. freezen_default.saveFreezen(freezenhorizontaldata, top, null, null);
  80844. if (freezen_default.freezenverticaldata != null) {
  80845. freezen_default.cancelFreezenVertical();
  80846. freezen_default.createAssistCanvas();
  80847. luckysheetrefreshgrid();
  80848. }
  80849. freezen_default.createFreezenHorizontal(freezenhorizontaldata, top);
  80850. freezen_default.createAssistCanvas();
  80851. luckysheetrefreshgrid();
  80852. }
  80853. }
  80854. function frozenColumnRange(range2, order) {
  80855. const locale_frozen = locale_default().freezen;
  80856. let isStringRange = typeof range2 === "string" && formula_default.iscelldata(range2);
  80857. if (!range2 || !range2.hasOwnProperty("column_focus") && !isStringRange) {
  80858. if (isEditMode()) {
  80859. alert(locale_frozen.noSeletionError);
  80860. } else {
  80861. tooltip_default.info(locale_frozen.noSeletionError, "");
  80862. }
  80863. return;
  80864. }
  80865. if (isStringRange) {
  80866. range2 = formula_default.getcellrange(range2);
  80867. range2 = {
  80868. row_focus: range2.row[0],
  80869. column_focus: range2.column[0]
  80870. };
  80871. }
  80872. freezen_default.saveFrozen("freezenColumnRange", order, range2);
  80873. if (!order || order == getSheetIndex(store_default.currentSheetIndex)) {
  80874. let scrollLeft = $("#luckysheet-cell-main").scrollLeft();
  80875. let col_st = luckysheet_searcharray(store_default.visibledatacolumn, scrollLeft);
  80876. let column_focus = range2.column_focus;
  80877. if (column_focus > col_st) {
  80878. col_st = column_focus;
  80879. }
  80880. if (col_st == -1) {
  80881. col_st = 0;
  80882. }
  80883. let left = store_default.visibledatacolumn[col_st] - 2 - scrollLeft + store_default.rowHeaderWidth;
  80884. let freezenverticaldata = [
  80885. store_default.visibledatacolumn[col_st],
  80886. col_st + 1,
  80887. scrollLeft,
  80888. freezen_default.cutVolumn(store_default.visibledatacolumn, col_st + 1),
  80889. left
  80890. ];
  80891. freezen_default.saveFreezen(null, null, freezenverticaldata, left);
  80892. if (freezen_default.freezenhorizontaldata != null) {
  80893. freezen_default.cancelFreezenHorizontal();
  80894. freezen_default.createAssistCanvas();
  80895. luckysheetrefreshgrid();
  80896. }
  80897. freezen_default.createFreezenVertical(freezenverticaldata, left);
  80898. freezen_default.createAssistCanvas();
  80899. luckysheetrefreshgrid();
  80900. }
  80901. }
  80902. function cancelFrozen(order) {
  80903. freezen_default.saveFrozen("freezenCancel", order);
  80904. if (!order || order == getSheetIndex(store_default.currentSheetIndex)) {
  80905. if (freezen_default.freezenverticaldata != null) {
  80906. freezen_default.cancelFreezenVertical();
  80907. }
  80908. if (freezen_default.freezenhorizontaldata != null) {
  80909. freezen_default.cancelFreezenHorizontal();
  80910. }
  80911. freezen_default.createAssistCanvas();
  80912. luckysheetrefreshgrid();
  80913. }
  80914. }
  80915. function setHorizontalFrozen(isRange, options = {}) {
  80916. let curSheetOrder = getSheetIndex(store_default.currentSheetIndex);
  80917. let {
  80918. range: range2,
  80919. order = curSheetOrder,
  80920. success
  80921. } = __spreadValues({}, options);
  80922. cancelFrozen(order);
  80923. if (!isRange) {
  80924. frozenFirstRow(order);
  80925. } else {
  80926. frozenRowRange(range2, order);
  80927. }
  80928. if (success && typeof success === "function") {
  80929. success();
  80930. }
  80931. }
  80932. function setVerticalFrozen(isRange, options = {}) {
  80933. let curSheetOrder = getSheetIndex(store_default.currentSheetIndex);
  80934. let {
  80935. range: range2,
  80936. order = curSheetOrder,
  80937. success
  80938. } = __spreadValues({}, options);
  80939. cancelFrozen(order);
  80940. if (!isRange) {
  80941. frozenFirstColumn(order);
  80942. } else {
  80943. frozenColumnRange(range2, order);
  80944. }
  80945. if (success && typeof success === "function") {
  80946. success();
  80947. }
  80948. }
  80949. function setBothFrozen(isRange, options = {}) {
  80950. let curSheetOrder = getSheetIndex(store_default.currentSheetIndex);
  80951. let {
  80952. range: range2,
  80953. order = curSheetOrder,
  80954. success
  80955. } = __spreadValues({}, options);
  80956. let isCurrentSheet = !order || order == getSheetIndex(store_default.currentSheetIndex);
  80957. const locale_frozen = locale_default().freezen;
  80958. cancelFrozen(order);
  80959. if (!isRange) {
  80960. freezen_default.saveFrozen("freezenRC", order);
  80961. if (isCurrentSheet) {
  80962. let scrollTop = $("#luckysheet-cell-main").scrollTop();
  80963. let row_st = luckysheet_searcharray(store_default.visibledatarow, scrollTop);
  80964. if (row_st == -1) {
  80965. row_st = 0;
  80966. }
  80967. let top = store_default.visibledatarow[row_st] - 2 - scrollTop + store_default.columnHeaderHeight;
  80968. let freezenhorizontaldata = [
  80969. store_default.visibledatarow[row_st],
  80970. row_st + 1,
  80971. scrollTop,
  80972. freezen_default.cutVolumn(store_default.visibledatarow, row_st + 1),
  80973. top
  80974. ];
  80975. freezen_default.saveFreezen(freezenhorizontaldata, top, null, null);
  80976. freezen_default.createFreezenHorizontal(freezenhorizontaldata, top);
  80977. let scrollLeft = $("#luckysheet-cell-main").scrollLeft();
  80978. let col_st = luckysheet_searcharray(store_default.visibledatacolumn, scrollLeft);
  80979. if (col_st == -1) {
  80980. col_st = 0;
  80981. }
  80982. let left = store_default.visibledatacolumn[col_st] - 2 - scrollLeft + store_default.rowHeaderWidth;
  80983. let freezenverticaldata = [
  80984. store_default.visibledatacolumn[col_st],
  80985. col_st + 1,
  80986. scrollLeft,
  80987. freezen_default.cutVolumn(store_default.visibledatacolumn, col_st + 1),
  80988. left
  80989. ];
  80990. freezen_default.saveFreezen(null, null, freezenverticaldata, left);
  80991. freezen_default.createFreezenVertical(freezenverticaldata, left);
  80992. freezen_default.createAssistCanvas();
  80993. luckysheetrefreshgrid();
  80994. }
  80995. } else {
  80996. freezen_default.saveFrozen("freezenRCRange", order, range2);
  80997. let isStringRange = typeof range2 === "string" && formula_default.iscelldata(range2);
  80998. if (isCurrentSheet) {
  80999. if ((!range2 || !(range2.hasOwnProperty("column_focus") && range2.hasOwnProperty("row_focus"))) && !isStringRange) {
  81000. if (isEditMode()) {
  81001. alert(locale_frozen.noSeletionError);
  81002. } else {
  81003. tooltip_default.info(locale_frozen.noSeletionError, "");
  81004. }
  81005. return;
  81006. }
  81007. if (isStringRange) {
  81008. range2 = formula_default.getcellrange(range2);
  81009. range2 = {
  81010. row_focus: range2.row[0],
  81011. column_focus: range2.column[0]
  81012. };
  81013. }
  81014. let scrollTop = $("#luckysheet-cell-main").scrollTop();
  81015. let row_st = luckysheet_searcharray(store_default.visibledatarow, scrollTop);
  81016. let row_focus = range2.row_focus;
  81017. if (row_focus > row_st) {
  81018. row_st = row_focus;
  81019. }
  81020. if (row_st == -1) {
  81021. row_st = 0;
  81022. }
  81023. let top = store_default.visibledatarow[row_st] - 2 - scrollTop + store_default.columnHeaderHeight;
  81024. let freezenhorizontaldata = [
  81025. store_default.visibledatarow[row_st],
  81026. row_st + 1,
  81027. scrollTop,
  81028. freezen_default.cutVolumn(store_default.visibledatarow, row_st + 1),
  81029. top
  81030. ];
  81031. freezen_default.saveFreezen(freezenhorizontaldata, top, null, null);
  81032. freezen_default.createFreezenHorizontal(freezenhorizontaldata, top);
  81033. let scrollLeft = $("#luckysheet-cell-main").scrollLeft();
  81034. let col_st = luckysheet_searcharray(store_default.visibledatacolumn, scrollLeft);
  81035. let column_focus = range2.column_focus;
  81036. if (column_focus > col_st) {
  81037. col_st = column_focus;
  81038. }
  81039. if (col_st == -1) {
  81040. col_st = 0;
  81041. }
  81042. let left = store_default.visibledatacolumn[col_st] - 2 - scrollLeft + store_default.rowHeaderWidth;
  81043. let freezenverticaldata = [
  81044. store_default.visibledatacolumn[col_st],
  81045. col_st + 1,
  81046. scrollLeft,
  81047. freezen_default.cutVolumn(store_default.visibledatacolumn, col_st + 1),
  81048. left
  81049. ];
  81050. freezen_default.saveFreezen(null, null, freezenverticaldata, left);
  81051. freezen_default.createFreezenVertical(freezenverticaldata, left);
  81052. freezen_default.createAssistCanvas();
  81053. luckysheetrefreshgrid();
  81054. }
  81055. }
  81056. }
  81057. function insertRowOrColumn(type, index2 = 0, options = {}) {
  81058. if (!isRealNum(index2)) {
  81059. return tooltip_default.info("The index parameter is invalid.", "");
  81060. }
  81061. let curSheetOrder = getSheetIndex(store_default.currentSheetIndex);
  81062. let {
  81063. number = 1,
  81064. order = curSheetOrder,
  81065. success
  81066. } = __spreadValues({}, options);
  81067. let _locale = locale_default();
  81068. let locale_info = _locale.info;
  81069. if (!isRealNum(number)) {
  81070. if (isEditMode()) {
  81071. alert(locale_info.tipInputNumber);
  81072. } else {
  81073. tooltip_default.info(locale_info.tipInputNumber, "");
  81074. }
  81075. return;
  81076. }
  81077. number = parseInt(number);
  81078. if (number < 1 || number > 100) {
  81079. if (isEditMode()) {
  81080. alert(locale_info.tipInputNumberLimit);
  81081. } else {
  81082. tooltip_default.info(locale_info.tipInputNumberLimit, "");
  81083. }
  81084. return;
  81085. }
  81086. let sheetIndex;
  81087. if (order) {
  81088. if (store_default.luckysheetfile[order]) {
  81089. sheetIndex = store_default.luckysheetfile[order].index;
  81090. }
  81091. }
  81092. luckysheetextendtable(type, index2, number, "lefttop", sheetIndex);
  81093. if (success && typeof success === "function") {
  81094. success();
  81095. }
  81096. }
  81097. function insertRowBottomOrColumnRight(type, index2 = 0, options = {}) {
  81098. if (!isRealNum(index2)) {
  81099. return tooltip_default.info("The index parameter is invalid.", "");
  81100. }
  81101. let curSheetOrder = getSheetIndex(store_default.currentSheetIndex);
  81102. let {
  81103. number = 1,
  81104. order = curSheetOrder,
  81105. success
  81106. } = __spreadValues({}, options);
  81107. let _locale = locale_default();
  81108. let locale_info = _locale.info;
  81109. if (!isRealNum(number)) {
  81110. if (isEditMode()) {
  81111. alert(locale_info.tipInputNumber);
  81112. } else {
  81113. tooltip_default.info(locale_info.tipInputNumber, "");
  81114. }
  81115. return;
  81116. }
  81117. number = parseInt(number);
  81118. if (number < 1 || number > 100) {
  81119. if (isEditMode()) {
  81120. alert(locale_info.tipInputNumberLimit);
  81121. } else {
  81122. tooltip_default.info(locale_info.tipInputNumberLimit, "");
  81123. }
  81124. return;
  81125. }
  81126. let sheetIndex;
  81127. if (order) {
  81128. if (store_default.luckysheetfile[order]) {
  81129. sheetIndex = store_default.luckysheetfile[order].index;
  81130. }
  81131. }
  81132. luckysheetextendtable(type, index2, number, "rightbottom", sheetIndex);
  81133. if (success && typeof success === "function") {
  81134. success();
  81135. }
  81136. }
  81137. function insertRow(row = 0, options = {}) {
  81138. insertRowOrColumn("row", row, options);
  81139. }
  81140. function insertRowBottom(row = 0, options = {}) {
  81141. insertRowBottomOrColumnRight("row", row, options);
  81142. }
  81143. function insertColumn(column = 0, options = {}) {
  81144. insertRowOrColumn("column", column, options);
  81145. }
  81146. function insertColumnRight(column = 0, options = {}) {
  81147. insertRowBottomOrColumnRight("column", column, options);
  81148. }
  81149. function deleteRowOrColumn(type, startIndex, endIndex, options = {}) {
  81150. if (!isRealNum(startIndex) || !isRealNum(endIndex)) {
  81151. return tooltip_default.info("Please enter the index for deleting rows or columns correctly.", "");
  81152. }
  81153. let curSheetOrder = getSheetIndex(store_default.currentSheetIndex);
  81154. let {
  81155. order = curSheetOrder,
  81156. success
  81157. } = __spreadValues({}, options);
  81158. let sheetIndex;
  81159. if (order) {
  81160. if (store_default.luckysheetfile[order]) {
  81161. sheetIndex = store_default.luckysheetfile[order].index;
  81162. }
  81163. }
  81164. luckysheetdeletetable(type, startIndex, endIndex, sheetIndex);
  81165. if (success && typeof success === "function") {
  81166. success();
  81167. }
  81168. }
  81169. function deleteRow(rowStart, rowEnd, options = {}) {
  81170. deleteRowOrColumn("row", rowStart, rowEnd, options);
  81171. }
  81172. function deleteColumn(columnStart, columnEnd, options = {}) {
  81173. deleteRowOrColumn("column", columnStart, columnEnd, options);
  81174. }
  81175. function hideRowOrColumn(type, startIndex, endIndex, options = {}) {
  81176. if (!isRealNum(startIndex) || !isRealNum(endIndex)) {
  81177. return tooltip_default.info("Please enter the index for deleting rows or columns correctly.", "");
  81178. }
  81179. let curSheetOrder = getSheetIndex(store_default.currentSheetIndex);
  81180. let {
  81181. order = curSheetOrder,
  81182. saveParam = true,
  81183. success
  81184. } = __spreadValues({}, options);
  81185. let file = store_default.luckysheetfile[order];
  81186. let cfgKey = type === "row" ? "rowhidden" : "colhidden";
  81187. let cfg = $.extend(true, {}, file.config);
  81188. if (cfg[cfgKey] == null) {
  81189. cfg[cfgKey] = {};
  81190. }
  81191. for (let i2 = startIndex; i2 <= endIndex; i2++) {
  81192. cfg[cfgKey][i2] = 0;
  81193. }
  81194. if (store_default.clearjfundo) {
  81195. let redo2 = {};
  81196. redo2["type"] = type === "row" ? "showHidRows" : "showHidCols";
  81197. redo2["sheetIndex"] = file.index;
  81198. redo2["config"] = $.extend(true, {}, file.config);
  81199. redo2["curconfig"] = cfg;
  81200. store_default.jfundo.length = 0;
  81201. store_default.jfredo.push(redo2);
  81202. }
  81203. store_default.luckysheetfile[order].config = cfg;
  81204. if (saveParam) {
  81205. server_default.saveParam("cg", file.index, cfg[cfgKey], {"k": cfgKey});
  81206. }
  81207. if (order == curSheetOrder) {
  81208. store_default.config = cfg;
  81209. jfrefreshgrid_rhcw(store_default.flowdata.length, store_default.flowdata[0].length);
  81210. }
  81211. if (success && typeof success === "function") {
  81212. success();
  81213. }
  81214. }
  81215. function showRowOrColumn(type, startIndex, endIndex, options = {}) {
  81216. if (!isRealNum(startIndex) || !isRealNum(endIndex)) {
  81217. return tooltip_default.info("Please enter the index for deleting rows or columns correctly.", "");
  81218. }
  81219. let curSheetOrder = getSheetIndex(store_default.currentSheetIndex);
  81220. let {
  81221. order = curSheetOrder,
  81222. saveParam = true,
  81223. success
  81224. } = __spreadValues({}, options);
  81225. let file = store_default.luckysheetfile[order];
  81226. let cfgKey = type === "row" ? "rowhidden" : "colhidden";
  81227. let cfg = $.extend(true, {}, file.config);
  81228. if (cfg[cfgKey] == null) {
  81229. return;
  81230. }
  81231. for (let i2 = startIndex; i2 <= endIndex; i2++) {
  81232. delete cfg[cfgKey][i2];
  81233. }
  81234. if (store_default.clearjfundo) {
  81235. let redo2 = {};
  81236. redo2["type"] = type === "row" ? "showHidRows" : "showHidCols";
  81237. redo2["sheetIndex"] = file.index;
  81238. redo2["config"] = $.extend(true, {}, file.config);
  81239. redo2["curconfig"] = cfg;
  81240. store_default.jfundo.length = 0;
  81241. store_default.jfredo.push(redo2);
  81242. }
  81243. store_default.luckysheetfile[order].config = store_default.config;
  81244. if (saveParam) {
  81245. server_default.saveParam("cg", file.index, cfg[cfgKey], {"k": cfgKey});
  81246. }
  81247. if (order === curSheetOrder) {
  81248. store_default.config = cfg;
  81249. jfrefreshgrid_rhcw(store_default.flowdata.length, store_default.flowdata[0].length);
  81250. }
  81251. if (success && typeof success === "function") {
  81252. success();
  81253. }
  81254. }
  81255. function hideRow(startIndex, endIndex, options = {}) {
  81256. hideRowOrColumn("row", startIndex, endIndex, options);
  81257. }
  81258. function showRow(startIndex, endIndex, options = {}) {
  81259. showRowOrColumn("row", startIndex, endIndex, options);
  81260. }
  81261. function hideColumn(startIndex, endIndex, options = {}) {
  81262. hideRowOrColumn("column", startIndex, endIndex, options);
  81263. }
  81264. function showColumn(startIndex, endIndex, options = {}) {
  81265. showRowOrColumn("column", startIndex, endIndex, options);
  81266. }
  81267. function setRowHeight(rowInfo, options = {}) {
  81268. if (getObjType(rowInfo) != "object") {
  81269. return tooltip_default.info("The rowInfo parameter is invalid.", "");
  81270. }
  81271. let {
  81272. order = getSheetIndex(store_default.currentSheetIndex),
  81273. success
  81274. } = __spreadValues({}, options);
  81275. let file = store_default.luckysheetfile[order];
  81276. if (file == null) {
  81277. return tooltip_default.info("The order parameter is invalid.", "");
  81278. }
  81279. let cfg = $.extend(true, {}, file.config);
  81280. if (cfg["rowlen"] == null) {
  81281. cfg["rowlen"] = {};
  81282. }
  81283. for (let r2 in rowInfo) {
  81284. if (parseInt(r2) >= 0) {
  81285. let len = rowInfo[r2];
  81286. if (len === "auto") {
  81287. cfg["rowlen"][parseInt(r2)] = len;
  81288. } else {
  81289. if (Number(len) >= 0) {
  81290. cfg["rowlen"][parseInt(r2)] = Number(len);
  81291. }
  81292. }
  81293. }
  81294. }
  81295. file.config = cfg;
  81296. server_default.saveParam("cg", file.index, cfg["rowlen"], {"k": "rowlen"});
  81297. if (file.index == store_default.currentSheetIndex) {
  81298. store_default.config = cfg;
  81299. jfrefreshgrid_rhcw(store_default.flowdata.length, store_default.flowdata[0].length);
  81300. }
  81301. if (success && typeof success === "function") {
  81302. success();
  81303. }
  81304. }
  81305. function setColumnWidth(columnInfo, options = {}) {
  81306. if (getObjType(columnInfo) != "object") {
  81307. return tooltip_default.info("The columnInfo parameter is invalid.", "");
  81308. }
  81309. let {
  81310. order = getSheetIndex(store_default.currentSheetIndex),
  81311. success
  81312. } = __spreadValues({}, options);
  81313. let file = store_default.luckysheetfile[order];
  81314. if (file == null) {
  81315. return tooltip_default.info("The order parameter is invalid.", "");
  81316. }
  81317. let cfg = $.extend(true, {}, file.config);
  81318. if (cfg["columnlen"] == null) {
  81319. cfg["columnlen"] = {};
  81320. }
  81321. for (let c2 in columnInfo) {
  81322. if (parseInt(c2) >= 0) {
  81323. let len = columnInfo[c2];
  81324. if (len === "auto") {
  81325. cfg["columnlen"][parseInt(c2)] = len;
  81326. } else {
  81327. if (Number(len) >= 0) {
  81328. cfg["columnlen"][parseInt(c2)] = Number(len);
  81329. }
  81330. }
  81331. }
  81332. }
  81333. file.config = cfg;
  81334. server_default.saveParam("cg", file.index, cfg["columnlen"], {"k": "columnlen"});
  81335. if (file.index == store_default.currentSheetIndex) {
  81336. store_default.config = cfg;
  81337. jfrefreshgrid_rhcw(store_default.flowdata.length, store_default.flowdata[0].length);
  81338. }
  81339. if (success && typeof success === "function") {
  81340. success();
  81341. }
  81342. }
  81343. function getRowHeight(rowInfo, options = {}) {
  81344. if (getObjType(rowInfo) != "array" || rowInfo.length == 0) {
  81345. return tooltip_default.info("The rowInfo parameter is invalid.", "");
  81346. }
  81347. let {
  81348. order = getSheetIndex(store_default.currentSheetIndex),
  81349. success
  81350. } = __spreadValues({}, options);
  81351. let file = store_default.luckysheetfile[order];
  81352. if (file == null) {
  81353. return tooltip_default.info("The order parameter is invalid.", "");
  81354. }
  81355. let cfg = $.extend(true, {}, file.config);
  81356. let rowlen = cfg["rowlen"] || {};
  81357. let rowlenObj = {};
  81358. rowInfo.forEach((item2) => {
  81359. if (parseInt(item2) >= 0) {
  81360. let size = rowlen[parseInt(item2)] || store_default.defaultrowlen;
  81361. rowlenObj[parseInt(item2)] = size;
  81362. }
  81363. });
  81364. setTimeout(() => {
  81365. if (success && typeof success === "function") {
  81366. success();
  81367. }
  81368. }, 1);
  81369. return rowlenObj;
  81370. }
  81371. function getColumnWidth(columnInfo, options = {}) {
  81372. if (getObjType(columnInfo) != "array" || columnInfo.length == 0) {
  81373. return tooltip_default.info("The columnInfo parameter is invalid.", "");
  81374. }
  81375. let {
  81376. order = getSheetIndex(store_default.currentSheetIndex),
  81377. success
  81378. } = __spreadValues({}, options);
  81379. let file = store_default.luckysheetfile[order];
  81380. if (file == null) {
  81381. return tooltip_default.info("The order parameter is invalid.", "");
  81382. }
  81383. let cfg = $.extend(true, {}, file.config);
  81384. let columnlen = cfg["columnlen"] || {};
  81385. let columnlenObj = {};
  81386. columnInfo.forEach((item2) => {
  81387. if (parseInt(item2) >= 0) {
  81388. let size = columnlen[parseInt(item2)] || store_default.defaultcollen;
  81389. columnlenObj[parseInt(item2)] = size;
  81390. }
  81391. });
  81392. setTimeout(() => {
  81393. if (success && typeof success === "function") {
  81394. success();
  81395. }
  81396. }, 1);
  81397. return columnlenObj;
  81398. }
  81399. function getDefaultRowHeight(options = {}) {
  81400. let {
  81401. order = getSheetIndex(store_default.currentSheetIndex),
  81402. success
  81403. } = __spreadValues({}, options);
  81404. setTimeout(() => {
  81405. if (success && typeof success === "function") {
  81406. success();
  81407. }
  81408. }, 1);
  81409. return store_default.luckysheetfile[order].defaultRowHeight || store_default.defaultrowlen;
  81410. }
  81411. function getDefaultColWidth(options = {}) {
  81412. let {
  81413. order = getSheetIndex(store_default.currentSheetIndex),
  81414. success
  81415. } = __spreadValues({}, options);
  81416. setTimeout(() => {
  81417. if (success && typeof success === "function") {
  81418. success();
  81419. }
  81420. }, 1);
  81421. return store_default.luckysheetfile[order].defaultColWidth || store_default.defaultcollen;
  81422. }
  81423. function getRange() {
  81424. let rangeArr = JSON.parse(JSON.stringify(store_default.luckysheet_select_save));
  81425. let result = [];
  81426. for (let i2 = 0; i2 < rangeArr.length; i2++) {
  81427. let rangeItem = rangeArr[i2];
  81428. let temp = {
  81429. row: rangeItem.row,
  81430. column: rangeItem.column
  81431. };
  81432. result.push(temp);
  81433. }
  81434. return result;
  81435. }
  81436. function getRangeWithFlatten(range2) {
  81437. range2 = range2 || getRange();
  81438. let result = [];
  81439. range2.forEach((ele) => {
  81440. let rs = ele.row;
  81441. let cs = ele.column;
  81442. for (let r2 = rs[0]; r2 <= rs[1]; r2++) {
  81443. for (let c2 = cs[0]; c2 <= cs[1]; c2++) {
  81444. result.push({r: r2, c: c2});
  81445. }
  81446. }
  81447. });
  81448. return result;
  81449. }
  81450. function getRangeValuesWithFlatte(range2) {
  81451. range2 = range2 || getRangeWithFlatten();
  81452. let values = [];
  81453. range2.forEach((item2) => {
  81454. values.push(store_default.flowdata[item2.r][item2.c]);
  81455. });
  81456. return values;
  81457. }
  81458. function getRangeAxis() {
  81459. let result = [];
  81460. let rangeArr = JSON.parse(JSON.stringify(store_default.luckysheet_select_save));
  81461. let sheetIndex = store_default.currentSheetIndex;
  81462. rangeArr.forEach((ele) => {
  81463. let axisText = getRangetxt(sheetIndex, {column: ele.column, row: ele.row});
  81464. result.push(axisText);
  81465. });
  81466. return result;
  81467. }
  81468. function getRangeValue(options = {}) {
  81469. let curOrder = getSheetIndex(store_default.currentSheetIndex);
  81470. let {
  81471. range: range2,
  81472. order = curOrder
  81473. } = __spreadValues({}, options);
  81474. let file = store_default.luckysheetfile[order];
  81475. if (!range2 || typeof range2 === "object") {
  81476. return getdatabyselection(range2, file.index);
  81477. } else if (typeof range2 === "string") {
  81478. if (formula_default.iscelldata(range2)) {
  81479. return getdatabyselection(formula_default.getcellrange(range2), file.index);
  81480. } else {
  81481. tooltip_default.info("The range is invalid, please check range parameter.", "");
  81482. }
  81483. }
  81484. }
  81485. function getRangeHtml(options = {}) {
  81486. let {
  81487. range: range2 = store_default.luckysheet_select_save,
  81488. order = getSheetIndex(store_default.currentSheetIndex),
  81489. success
  81490. } = __spreadValues({}, options);
  81491. range2 = JSON.parse(JSON.stringify(range2));
  81492. if (getObjType(range2) == "string") {
  81493. if (!formula_default.iscelldata(range2)) {
  81494. return tooltip_default.info("The range parameter is invalid.", "");
  81495. }
  81496. let cellrange = formula_default.getcellrange(range2);
  81497. range2 = [{
  81498. "row": cellrange.row,
  81499. "column": cellrange.column
  81500. }];
  81501. } else if (getObjType(range2) == "object") {
  81502. if (range2.row == null || range2.column == null) {
  81503. return tooltip_default.info("The range parameter is invalid.", "");
  81504. }
  81505. range2 = [{
  81506. "row": range2.row,
  81507. "column": range2.column
  81508. }];
  81509. }
  81510. if (getObjType(range2) != "array") {
  81511. return tooltip_default.info("The range parameter is invalid.", "");
  81512. }
  81513. let file = store_default.luckysheetfile[order];
  81514. if (file == null) {
  81515. return tooltip_default.info("The order parameter is invalid.", "");
  81516. }
  81517. let cfg = $.extend(true, {}, file.config);
  81518. if (cfg["merge"] != null) {
  81519. let has_PartMC = false;
  81520. for (let s = 0; s < range2.length; s++) {
  81521. let r1 = range2[s].row[0], r2 = range2[s].row[1];
  81522. let c1 = range2[s].column[0], c2 = range2[s].column[1];
  81523. has_PartMC = hasPartMC(cfg, r1, r2, c1, c2);
  81524. if (has_PartMC) {
  81525. break;
  81526. }
  81527. }
  81528. if (has_PartMC) {
  81529. return tooltip_default.info("Cannot perform this operation on partially merged cells", "");
  81530. }
  81531. }
  81532. let cdformat = $.extend(true, [], file.luckysheet_conditionformat_save);
  81533. if (range2.length > 1 && cdformat.length > 0) {
  81534. let hasCF = false;
  81535. let cf_compute = conditionformat_default.getComputeMap(file.index);
  81536. for (let s = 0; s < range2.length; s++) {
  81537. let r1 = range2[s].row[0], r2 = range2[s].row[1];
  81538. let c1 = range2[s].column[0], c2 = range2[s].column[1];
  81539. for (let r3 = r1; r3 <= r2; r3++) {
  81540. for (let c3 = c1; c3 <= c2; c3++) {
  81541. if (conditionformat_default.checksCF(r3, c3, cf_compute) != null) {
  81542. hasCF = true;
  81543. break;
  81544. }
  81545. }
  81546. if (hasCF) {
  81547. break;
  81548. }
  81549. }
  81550. if (hasCF) {
  81551. break;
  81552. }
  81553. }
  81554. if (hasCF) {
  81555. return tooltip_default.info("Cannot perform this operation on multiple selection areas, please select a single area", "");
  81556. }
  81557. }
  81558. if (range2.length > 1) {
  81559. let isSameRow = true, str_r = range2[0].row[0], end_r = range2[0].row[1];
  81560. let isSameCol = true, str_c = range2[0].column[0], end_c = range2[0].column[1];
  81561. for (let s = 1; s < range2.length; s++) {
  81562. if (range2[s].row[0] != str_r || range2[s].row[1] != end_r) {
  81563. isSameRow = false;
  81564. }
  81565. if (range2[s].column[0] != str_c || range2[s].column[1] != end_c) {
  81566. isSameCol = false;
  81567. }
  81568. }
  81569. if (!isSameRow && !isSameCol || selectIsOverlap(range2)) {
  81570. return tooltip_default.info("Cannot perform this operation on multiple selection areas, please select a single area", "");
  81571. }
  81572. }
  81573. let rowIndexArr = [], colIndexArr = [];
  81574. for (let s = 0; s < range2.length; s++) {
  81575. let r1 = range2[s].row[0], r2 = range2[s].row[1];
  81576. let c1 = range2[s].column[0], c2 = range2[s].column[1];
  81577. for (let r3 = r1; r3 <= r2; r3++) {
  81578. if (cfg["rowhidden"] != null && cfg["rowhidden"][r3] != null) {
  81579. continue;
  81580. }
  81581. if (!rowIndexArr.includes(r3)) {
  81582. rowIndexArr.push(r3);
  81583. }
  81584. for (let c3 = c1; c3 <= c2; c3++) {
  81585. if (cfg["colhidden"] != null && cfg["colhidden"][c3] != null) {
  81586. continue;
  81587. }
  81588. if (!colIndexArr.includes(c3)) {
  81589. colIndexArr.push(c3);
  81590. }
  81591. }
  81592. }
  81593. }
  81594. let borderInfoCompute;
  81595. if (cfg["borderInfo"] && cfg["borderInfo"].length > 0) {
  81596. borderInfoCompute = getBorderInfoCompute(file.index);
  81597. }
  81598. let d = file.data;
  81599. if (d == null || d.length == 0) {
  81600. d = sheetmanage_default.buildGridData(file);
  81601. }
  81602. let cpdata = "";
  81603. let colgroup = "";
  81604. rowIndexArr = rowIndexArr.sort((a, b) => a - b);
  81605. colIndexArr = colIndexArr.sort((a, b) => a - b);
  81606. for (let i2 = 0; i2 < rowIndexArr.length; i2++) {
  81607. let r2 = rowIndexArr[i2];
  81608. if (cfg["rowhidden"] != null && cfg["rowhidden"][r2] != null) {
  81609. continue;
  81610. }
  81611. cpdata += "<tr>";
  81612. for (let j = 0; j < colIndexArr.length; j++) {
  81613. let c2 = colIndexArr[j];
  81614. if (cfg["colhidden"] != null && cfg["colhidden"][c2] != null) {
  81615. continue;
  81616. }
  81617. let column = '<td ${span} style="${style}">';
  81618. if (d[r2] != null && d[r2][c2] != null) {
  81619. let style = "", span = "";
  81620. if (r2 == rowIndexArr[0]) {
  81621. if (cfg["columnlen"] == null || cfg["columnlen"][c2.toString()] == null) {
  81622. colgroup += '<colgroup width="72px"></colgroup>';
  81623. } else {
  81624. colgroup += '<colgroup width="' + cfg["columnlen"][c2.toString()] + 'px"></colgroup>';
  81625. }
  81626. }
  81627. if (c2 == colIndexArr[0]) {
  81628. if (cfg["rowlen"] == null || cfg["rowlen"][r2.toString()] == null) {
  81629. style += "height:19px;";
  81630. } else {
  81631. style += "height:" + cfg["rowlen"][r2.toString()] + "px;";
  81632. }
  81633. }
  81634. let reg = /^(w|W)((0?)|(0\.0+))$/;
  81635. let c_value;
  81636. if (d[r2][c2].ct != null && d[r2][c2].ct.fa != null && d[r2][c2].ct.fa.match(reg)) {
  81637. c_value = getcellvalue(r2, c2, d);
  81638. } else {
  81639. c_value = getcellvalue(r2, c2, d, "m");
  81640. }
  81641. style += menuButton_default.getStyleByCell(d, r2, c2);
  81642. if (getObjType(d[r2][c2]) == "object" && "mc" in d[r2][c2]) {
  81643. if ("rs" in d[r2][c2]["mc"]) {
  81644. span = 'rowspan="' + d[r2][c2]["mc"].rs + '" colspan="' + d[r2][c2]["mc"].cs + '"';
  81645. if (borderInfoCompute && borderInfoCompute[r2 + "_" + c2]) {
  81646. let bl_obj = {"color": {}, "style": {}}, br_obj = {"color": {}, "style": {}}, bt_obj = {"color": {}, "style": {}}, bb_obj = {"color": {}, "style": {}};
  81647. for (let bd_r = r2; bd_r < r2 + d[r2][c2]["mc"].rs; bd_r++) {
  81648. for (let bd_c = c2; bd_c < c2 + d[r2][c2]["mc"].cs; bd_c++) {
  81649. if (bd_r == r2 && borderInfoCompute[bd_r + "_" + bd_c] && borderInfoCompute[bd_r + "_" + bd_c].t) {
  81650. let linetype = borderInfoCompute[bd_r + "_" + bd_c].t.style;
  81651. let bcolor = borderInfoCompute[bd_r + "_" + bd_c].t.color;
  81652. if (bt_obj["style"][linetype] == null) {
  81653. bt_obj["style"][linetype] = 1;
  81654. } else {
  81655. bt_obj["style"][linetype] = bt_obj["style"][linetype] + 1;
  81656. }
  81657. if (bt_obj["color"][bcolor] == null) {
  81658. bt_obj["color"][bcolor] = 1;
  81659. } else {
  81660. bt_obj["color"][bcolor] = bt_obj["color"][bcolor] + 1;
  81661. }
  81662. }
  81663. if (bd_r == r2 + d[r2][c2]["mc"].rs - 1 && borderInfoCompute[bd_r + "_" + bd_c] && borderInfoCompute[bd_r + "_" + bd_c].b) {
  81664. let linetype = borderInfoCompute[bd_r + "_" + bd_c].b.style;
  81665. let bcolor = borderInfoCompute[bd_r + "_" + bd_c].b.color;
  81666. if (bb_obj["style"][linetype] == null) {
  81667. bb_obj["style"][linetype] = 1;
  81668. } else {
  81669. bb_obj["style"][linetype] = bb_obj["style"][linetype] + 1;
  81670. }
  81671. if (bb_obj["color"][bcolor] == null) {
  81672. bb_obj["color"][bcolor] = 1;
  81673. } else {
  81674. bb_obj["color"][bcolor] = bb_obj["color"][bcolor] + 1;
  81675. }
  81676. }
  81677. if (bd_c == c2 && borderInfoCompute[bd_r + "_" + bd_c] && borderInfoCompute[bd_r + "_" + bd_c].l) {
  81678. let linetype = borderInfoCompute[r2 + "_" + c2].l.style;
  81679. let bcolor = borderInfoCompute[bd_r + "_" + bd_c].l.color;
  81680. if (bl_obj["style"][linetype] == null) {
  81681. bl_obj["style"][linetype] = 1;
  81682. } else {
  81683. bl_obj["style"][linetype] = bl_obj["style"][linetype] + 1;
  81684. }
  81685. if (bl_obj["color"][bcolor] == null) {
  81686. bl_obj["color"][bcolor] = 1;
  81687. } else {
  81688. bl_obj["color"][bcolor] = bl_obj["color"][bcolor] + 1;
  81689. }
  81690. }
  81691. if (bd_c == c2 + d[r2][c2]["mc"].cs - 1 && borderInfoCompute[bd_r + "_" + bd_c] && borderInfoCompute[bd_r + "_" + bd_c].r) {
  81692. let linetype = borderInfoCompute[bd_r + "_" + bd_c].r.style;
  81693. let bcolor = borderInfoCompute[bd_r + "_" + bd_c].r.color;
  81694. if (br_obj["style"][linetype] == null) {
  81695. br_obj["style"][linetype] = 1;
  81696. } else {
  81697. br_obj["style"][linetype] = br_obj["style"][linetype] + 1;
  81698. }
  81699. if (br_obj["color"][bcolor] == null) {
  81700. br_obj["color"][bcolor] = 1;
  81701. } else {
  81702. br_obj["color"][bcolor] = br_obj["color"][bcolor] + 1;
  81703. }
  81704. }
  81705. }
  81706. }
  81707. let rowlen = d[r2][c2]["mc"].rs, collen = d[r2][c2]["mc"].cs;
  81708. if (JSON.stringify(bl_obj).length > 23) {
  81709. let bl_color = null, bl_style = null;
  81710. for (let x in bl_obj.color) {
  81711. if (bl_obj.color[x] >= rowlen / 2) {
  81712. bl_color = x;
  81713. }
  81714. }
  81715. for (let x in bl_obj.style) {
  81716. if (bl_obj.style[x] >= rowlen / 2) {
  81717. bl_style = x;
  81718. }
  81719. }
  81720. if (bl_color != null && bl_style != null) {
  81721. style += "border-left:" + selection_default.getHtmlBorderStyle(bl_style, bl_color);
  81722. }
  81723. }
  81724. if (JSON.stringify(br_obj).length > 23) {
  81725. let br_color = null, br_style = null;
  81726. for (let x in br_obj.color) {
  81727. if (br_obj.color[x] >= rowlen / 2) {
  81728. br_color = x;
  81729. }
  81730. }
  81731. for (let x in br_obj.style) {
  81732. if (br_obj.style[x] >= rowlen / 2) {
  81733. br_style = x;
  81734. }
  81735. }
  81736. if (br_color != null && br_style != null) {
  81737. style += "border-right:" + selection_default.getHtmlBorderStyle(br_style, br_color);
  81738. }
  81739. }
  81740. if (JSON.stringify(bt_obj).length > 23) {
  81741. let bt_color = null, bt_style = null;
  81742. for (let x in bt_obj.color) {
  81743. if (bt_obj.color[x] >= collen / 2) {
  81744. bt_color = x;
  81745. }
  81746. }
  81747. for (let x in bt_obj.style) {
  81748. if (bt_obj.style[x] >= collen / 2) {
  81749. bt_style = x;
  81750. }
  81751. }
  81752. if (bt_color != null && bt_style != null) {
  81753. style += "border-top:" + selection_default.getHtmlBorderStyle(bt_style, bt_color);
  81754. }
  81755. }
  81756. if (JSON.stringify(bb_obj).length > 23) {
  81757. let bb_color = null, bb_style = null;
  81758. for (let x in bb_obj.color) {
  81759. if (bb_obj.color[x] >= collen / 2) {
  81760. bb_color = x;
  81761. }
  81762. }
  81763. for (let x in bb_obj.style) {
  81764. if (bb_obj.style[x] >= collen / 2) {
  81765. bb_style = x;
  81766. }
  81767. }
  81768. if (bb_color != null && bb_style != null) {
  81769. style += "border-bottom:" + selection_default.getHtmlBorderStyle(bb_style, bb_color);
  81770. }
  81771. }
  81772. }
  81773. } else {
  81774. continue;
  81775. }
  81776. } else {
  81777. if (borderInfoCompute && borderInfoCompute[r2 + "_" + c2]) {
  81778. if (borderInfoCompute[r2 + "_" + c2].l) {
  81779. let linetype = borderInfoCompute[r2 + "_" + c2].l.style;
  81780. let bcolor = borderInfoCompute[r2 + "_" + c2].l.color;
  81781. style += "border-left:" + selection_default.getHtmlBorderStyle(linetype, bcolor);
  81782. }
  81783. if (borderInfoCompute[r2 + "_" + c2].r) {
  81784. let linetype = borderInfoCompute[r2 + "_" + c2].r.style;
  81785. let bcolor = borderInfoCompute[r2 + "_" + c2].r.color;
  81786. style += "border-right:" + selection_default.getHtmlBorderStyle(linetype, bcolor);
  81787. }
  81788. if (borderInfoCompute[r2 + "_" + c2].b) {
  81789. let linetype = borderInfoCompute[r2 + "_" + c2].b.style;
  81790. let bcolor = borderInfoCompute[r2 + "_" + c2].b.color;
  81791. style += "border-bottom:" + selection_default.getHtmlBorderStyle(linetype, bcolor);
  81792. }
  81793. if (borderInfoCompute[r2 + "_" + c2].t) {
  81794. let linetype = borderInfoCompute[r2 + "_" + c2].t.style;
  81795. let bcolor = borderInfoCompute[r2 + "_" + c2].t.color;
  81796. style += "border-top:" + selection_default.getHtmlBorderStyle(linetype, bcolor);
  81797. }
  81798. }
  81799. }
  81800. column = replaceHtml(column, {"style": style, "span": span});
  81801. if (c_value == null) {
  81802. c_value = getcellvalue(r2, c2, d);
  81803. }
  81804. if (c_value == null) {
  81805. c_value = " ";
  81806. }
  81807. column += c_value;
  81808. } else {
  81809. let style = "";
  81810. if (borderInfoCompute && borderInfoCompute[r2 + "_" + c2]) {
  81811. if (borderInfoCompute[r2 + "_" + c2].l) {
  81812. let linetype = borderInfoCompute[r2 + "_" + c2].l.style;
  81813. let bcolor = borderInfoCompute[r2 + "_" + c2].l.color;
  81814. style += "border-left:" + selection_default.getHtmlBorderStyle(linetype, bcolor);
  81815. }
  81816. if (borderInfoCompute[r2 + "_" + c2].r) {
  81817. let linetype = borderInfoCompute[r2 + "_" + c2].r.style;
  81818. let bcolor = borderInfoCompute[r2 + "_" + c2].r.color;
  81819. style += "border-right:" + selection_default.getHtmlBorderStyle(linetype, bcolor);
  81820. }
  81821. if (borderInfoCompute[r2 + "_" + c2].b) {
  81822. let linetype = borderInfoCompute[r2 + "_" + c2].b.style;
  81823. let bcolor = borderInfoCompute[r2 + "_" + c2].b.color;
  81824. style += "border-bottom:" + selection_default.getHtmlBorderStyle(linetype, bcolor);
  81825. }
  81826. if (borderInfoCompute[r2 + "_" + c2].t) {
  81827. let linetype = borderInfoCompute[r2 + "_" + c2].t.style;
  81828. let bcolor = borderInfoCompute[r2 + "_" + c2].t.color;
  81829. style += "border-top:" + selection_default.getHtmlBorderStyle(linetype, bcolor);
  81830. }
  81831. }
  81832. column += "";
  81833. if (r2 == rowIndexArr[0]) {
  81834. if (cfg["columnlen"] == null || cfg["columnlen"][c2.toString()] == null) {
  81835. colgroup += '<colgroup width="72px"></colgroup>';
  81836. } else {
  81837. colgroup += '<colgroup width="' + cfg["columnlen"][c2.toString()] + 'px"></colgroup>';
  81838. }
  81839. }
  81840. if (c2 == colIndexArr[0]) {
  81841. if (cfg["rowlen"] == null || cfg["rowlen"][r2.toString()] == null) {
  81842. style += "height:19px;";
  81843. } else {
  81844. style += "height:" + cfg["rowlen"][r2.toString()] + "px;";
  81845. }
  81846. }
  81847. column = replaceHtml(column, {"style": style, "span": ""});
  81848. column += " ";
  81849. }
  81850. column += "</td>";
  81851. cpdata += column;
  81852. }
  81853. cpdata += "</tr>";
  81854. }
  81855. cpdata = '<table data-type="luckysheet_copy_action_table">' + colgroup + cpdata + "</table>";
  81856. return cpdata;
  81857. }
  81858. function getRangeArray(dimensional, options = {}) {
  81859. let dimensionalValues = ["oneDimensional", "twoDimensional"];
  81860. if (!dimensionalValues.includes(dimensional)) {
  81861. return tooltip_default.info("The dimensional parameter is invalid.", "");
  81862. }
  81863. let {
  81864. range: range2 = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1],
  81865. order = getSheetIndex(store_default.currentSheetIndex)
  81866. } = __spreadValues({}, options);
  81867. let file = store_default.luckysheetfile[order];
  81868. if (file == null) {
  81869. return tooltip_default.info("The order parameter is invalid.", "");
  81870. }
  81871. if (getObjType(range2) == "string") {
  81872. if (!formula_default.iscelldata(range2)) {
  81873. return tooltip_default.info("The range parameter is invalid.", "");
  81874. }
  81875. range2 = formula_default.getcellrange(range2);
  81876. }
  81877. if (getObjType(range2) != "object" || range2.row == null || range2.column == null) {
  81878. return tooltip_default.info("The range parameter is invalid.", "");
  81879. }
  81880. let r1 = range2.row[0], r2 = range2.row[1];
  81881. let c1 = range2.column[0], c2 = range2.column[1];
  81882. let cfg = $.extend(true, {}, file.config);
  81883. if (cfg["merge"] != null) {
  81884. let has_PartMC = hasPartMC(cfg, r1, r2, c1, c2);
  81885. if (has_PartMC) {
  81886. return tooltip_default.info("Cannot perform this operation on partially merged cells", "");
  81887. }
  81888. }
  81889. let data = file.data;
  81890. if (data == null || data.length == 0) {
  81891. data = sheetmanage_default.buildGridData(file);
  81892. }
  81893. let dataArr = [];
  81894. if (dimensional == "oneDimensional") {
  81895. for (let r3 = r1; r3 <= r2; r3++) {
  81896. for (let c3 = c1; c3 <= c2; c3++) {
  81897. let cell = data[r3][c3];
  81898. if (cell == null || cell.v == null) {
  81899. dataArr.push(null);
  81900. } else {
  81901. dataArr.push(cell.v);
  81902. }
  81903. }
  81904. }
  81905. } else if (dimensional == "twoDimensional") {
  81906. for (let r3 = r1; r3 <= r2; r3++) {
  81907. let row = [];
  81908. for (let c3 = c1; c3 <= c2; c3++) {
  81909. let cell = data[r3][c3];
  81910. if (cell == null || cell.v == null) {
  81911. row.push(null);
  81912. } else {
  81913. row.push(cell.v);
  81914. }
  81915. }
  81916. dataArr.push(row);
  81917. }
  81918. }
  81919. return dataArr;
  81920. }
  81921. function getRangeJson(isFirstRowTitle, options = {}) {
  81922. let curRange = store_default.luckysheet_select_save[0];
  81923. let curSheetOrder = getSheetIndex(store_default.currentSheetIndex);
  81924. let {
  81925. range: range2 = curRange,
  81926. order = curSheetOrder
  81927. } = __spreadValues({}, options);
  81928. let file = store_default.luckysheetfile[order];
  81929. let config = file.config;
  81930. if (range2 && typeof range2 === "string" && formula_default.iscelldata(range2)) {
  81931. range2 = formula_default.getcellrange(range2);
  81932. }
  81933. if (!range2 || range2.length > 1) {
  81934. if (isEditMode()) {
  81935. alert(locale_drag.noMulti);
  81936. } else {
  81937. tooltip_default.info(locale_drag.noMulti, "");
  81938. }
  81939. return;
  81940. }
  81941. if (config["merge"] != null) {
  81942. let has_PartMC = false;
  81943. let r1 = range2.row[0], r2 = range2.row[1], c1 = range2.column[0], c2 = range2.column[1];
  81944. has_PartMC = hasPartMC(config, r1, r2, c1, c2);
  81945. if (has_PartMC) {
  81946. if (isEditMode()) {
  81947. alert(locale_default().drag.noPartMerge);
  81948. } else {
  81949. tooltip_default.info(locale_default().drag.noPartMerge, "");
  81950. }
  81951. return;
  81952. }
  81953. }
  81954. let getdata = getdatabyselection(range2, file.index);
  81955. let arr = [];
  81956. if (getdata.length === 0) {
  81957. return;
  81958. }
  81959. if (isFirstRowTitle) {
  81960. if (getdata.length === 1) {
  81961. let obj = {};
  81962. for (let i2 = 0; i2 < getdata[0].length; i2++) {
  81963. obj[getcellvalue(0, i2, getdata)] = "";
  81964. }
  81965. arr.push(obj);
  81966. } else {
  81967. for (let r2 = 1; r2 < getdata.length; r2++) {
  81968. let obj = {};
  81969. for (let c2 = 0; c2 < getdata[0].length; c2++) {
  81970. if (getcellvalue(0, c2, getdata) == void 0) {
  81971. obj[""] = getcellvalue(r2, c2, getdata);
  81972. } else {
  81973. obj[getcellvalue(0, c2, getdata)] = getcellvalue(r2, c2, getdata);
  81974. }
  81975. }
  81976. arr.push(obj);
  81977. }
  81978. }
  81979. } else {
  81980. let st = range2["column"][0];
  81981. for (let r2 = 0; r2 < getdata.length; r2++) {
  81982. let obj = {};
  81983. for (let c2 = 0; c2 < getdata[0].length; c2++) {
  81984. obj[chatatABC(c2 + st)] = getcellvalue(r2, c2, getdata);
  81985. }
  81986. arr.push(obj);
  81987. }
  81988. }
  81989. return arr;
  81990. }
  81991. function getRangeDiagonal(type, options = {}) {
  81992. let typeValues = ["normal", "anti", "offset"];
  81993. if (typeValues.indexOf(type) < 0) {
  81994. return tooltip_default.info("The type parameter must be included in ['normal', 'anti', 'offset']", "");
  81995. }
  81996. let curSheetOrder = getSheetIndex(store_default.currentSheetIndex);
  81997. let curRange = JSON.parse(JSON.stringify(store_default.luckysheet_select_save));
  81998. let {
  81999. column = 1,
  82000. range: range2 = curRange,
  82001. order = curSheetOrder
  82002. } = __spreadValues({}, options);
  82003. let file = store_default.luckysheetfile[order];
  82004. let config = file.config;
  82005. if (range2 && typeof range2 === "string" && formula_default.iscelldata(range2)) {
  82006. range2 = formula_default.getcellrange(range2);
  82007. }
  82008. if (!range2 || range2.length > 1) {
  82009. if (isEditMode()) {
  82010. alert(locale_default().drag.noMulti);
  82011. } else {
  82012. tooltip_default.info(locale_default().drag.noMulti, "");
  82013. }
  82014. return;
  82015. }
  82016. if (config["merge"] != null) {
  82017. let has_PartMC = false;
  82018. let r1 = range2[0].row[0], r2 = range2[0].row[1], c1 = range2[0].column[0], c2 = range2[0].column[1];
  82019. has_PartMC = hasPartMC(config, r1, r2, c1, c2);
  82020. if (has_PartMC) {
  82021. if (isEditMode()) {
  82022. alert(locale_default().drag.noPartMerge);
  82023. } else {
  82024. tooltip_default.info(locale_default().drag.noPartMerge, "");
  82025. }
  82026. return;
  82027. }
  82028. }
  82029. let getdata = getdatabyselection(range2, order);
  82030. let arr = [];
  82031. if (getdata.length === 0) {
  82032. return;
  82033. }
  82034. let clen = getdata[0].length;
  82035. switch (type) {
  82036. case "normal":
  82037. for (let r2 = 0; r2 < getdata.length; r2++) {
  82038. if (r2 >= clen) {
  82039. break;
  82040. }
  82041. arr.push(getdata[r2][r2]);
  82042. }
  82043. break;
  82044. case "anti":
  82045. for (let r2 = 0; r2 < getdata.length; r2++) {
  82046. if (r2 >= clen) {
  82047. break;
  82048. }
  82049. arr.push(getdata[r2][clen - r2 - 1]);
  82050. }
  82051. break;
  82052. case "offset":
  82053. if (column.toString() == "NaN") {
  82054. if (isEditMode()) {
  82055. alert(locale_default().drag.inputCorrect);
  82056. } else {
  82057. tooltip_default.info(locale_default().drag.inputCorrect, "");
  82058. }
  82059. return;
  82060. }
  82061. if (column < 0) {
  82062. if (isEditMode()) {
  82063. alert(locale_default().drag.offsetColumnLessZero);
  82064. } else {
  82065. tooltip_default.info(locale_default().drag.offsetColumnLessZero, "");
  82066. }
  82067. return;
  82068. }
  82069. for (let r2 = 0; r2 < getdata.length; r2++) {
  82070. if (r2 + column >= clen) {
  82071. break;
  82072. }
  82073. arr.push(getdata[r2][r2 + column]);
  82074. }
  82075. break;
  82076. }
  82077. selection_default.copybyformat(new Event(), JSON.stringify(arr));
  82078. }
  82079. function getRangeBoolean(options = {}) {
  82080. let curSheetOrder = getSheetIndex(store_default.currentSheetIndex);
  82081. let curRange = JSON.parse(JSON.stringify(store_default.luckysheet_select_save));
  82082. let {
  82083. range: range2 = curRange,
  82084. order = curSheetOrder
  82085. } = __spreadValues({}, options);
  82086. let file = store_default.luckysheetfile[order];
  82087. let config = file.config;
  82088. if (range2 && typeof range2 === "string" && formula_default.iscelldata(range2)) {
  82089. range2 = formula_default.getcellrange(range2);
  82090. }
  82091. if (!range2 || range2.length > 1) {
  82092. if (isEditMode()) {
  82093. alert(locale_default().drag.noMulti);
  82094. } else {
  82095. tooltip_default.info(locale_default().drag.noMulti, "");
  82096. }
  82097. return;
  82098. }
  82099. if (config["merge"] != null) {
  82100. let has_PartMC = false;
  82101. let r1 = range2[0].row[0], r2 = range2[0].row[1], c1 = range2[0].column[0], c2 = range2[0].column[1];
  82102. has_PartMC = hasPartMC(config, r1, r2, c1, c2);
  82103. if (has_PartMC) {
  82104. if (isEditMode()) {
  82105. alert(locale_default().drag.noPartMerge);
  82106. } else {
  82107. tooltip_default.info(locale_default().drag.noPartMerge, "");
  82108. }
  82109. return;
  82110. }
  82111. }
  82112. let getdata = getdatabyselection(range2, order);
  82113. let arr = [];
  82114. if (getdata.length === 0) {
  82115. return;
  82116. }
  82117. for (let r2 = 0; r2 < getdata.length; r2++) {
  82118. let a = [];
  82119. for (let c2 = 0; c2 < getdata[0].length; c2++) {
  82120. let bool = false;
  82121. let v;
  82122. if (getObjType(getdata[r2][c2]) == "object") {
  82123. v = getdata[r2][c2].v;
  82124. } else {
  82125. v = getdata[r2][c2];
  82126. }
  82127. if (v == null || v == "") {
  82128. bool = false;
  82129. } else {
  82130. v = parseInt(v);
  82131. if (v == null || v > 0) {
  82132. bool = true;
  82133. } else {
  82134. bool = false;
  82135. }
  82136. }
  82137. a.push(bool);
  82138. }
  82139. arr.push(a);
  82140. }
  82141. selection_default.copybyformat(event, JSON.stringify(arr));
  82142. }
  82143. function setRangeShow(range2, options = {}) {
  82144. if (getObjType(range2) == "string") {
  82145. if (!formula_default.iscelldata(range2)) {
  82146. return tooltip_default.info("The range parameter is invalid.", "");
  82147. }
  82148. let cellrange = formula_default.getcellrange(range2);
  82149. range2 = [{
  82150. "row": cellrange.row,
  82151. "column": cellrange.column
  82152. }];
  82153. } else if (getObjType(range2) == "object") {
  82154. if (range2.row == null || range2.column == null) {
  82155. return tooltip_default.info("The range parameter is invalid.", "");
  82156. }
  82157. range2 = [{
  82158. "row": range2.row,
  82159. "column": range2.column
  82160. }];
  82161. }
  82162. if (getObjType(range2) == "array") {
  82163. for (let i2 = 0; i2 < range2.length; i2++) {
  82164. if (getObjType(range2[i2]) === "string") {
  82165. if (!formula_default.iscelldata(range2[i2])) {
  82166. return tooltip_default.info("The range parameter is invalid.", "");
  82167. }
  82168. let cellrange = formula_default.getcellrange(range2[i2]);
  82169. range2[i2] = {
  82170. "row": cellrange.row,
  82171. "column": cellrange.column
  82172. };
  82173. } else if (getObjType(range2) == "object") {
  82174. if (range2.row == null || range2.column == null) {
  82175. return tooltip_default.info("The range parameter is invalid.", "");
  82176. }
  82177. range2 = {
  82178. "row": range2.row,
  82179. "column": range2.column
  82180. };
  82181. }
  82182. }
  82183. }
  82184. if (getObjType(range2) != "array") {
  82185. return tooltip_default.info("The range parameter is invalid.", "");
  82186. }
  82187. let {
  82188. show = true,
  82189. order = getSheetIndex(store_default.currentSheetIndex),
  82190. success
  82191. } = __spreadValues({}, options);
  82192. let file = store_default.luckysheetfile[order];
  82193. if (file == null) {
  82194. return tooltip_default.info("The order parameter is invalid.", "");
  82195. }
  82196. for (let i2 = 0; i2 < range2.length; i2++) {
  82197. let changeparam = menuButton_default.mergeMoveMain(range2[i2].column, range2[i2].row, range2[i2]);
  82198. if (changeparam) {
  82199. range2[i2] = {
  82200. "row": changeparam[1],
  82201. "column": changeparam[0]
  82202. };
  82203. }
  82204. }
  82205. file.luckysheet_select_save = range2;
  82206. if (file.index == store_default.currentSheetIndex) {
  82207. store_default.luckysheet_select_save = range2;
  82208. selectHightlightShow();
  82209. if (!show) {
  82210. $("#luckysheet-cell-selected-boxs").hide();
  82211. $("#luckysheet-cell-selected-focus").hide();
  82212. $("#luckysheet-row-count-show").hide();
  82213. $("#luckysheet-column-count-show").hide();
  82214. $("#luckysheet-rows-h-selected").empty();
  82215. $("#luckysheet-cols-h-selected").empty();
  82216. }
  82217. }
  82218. if (success && typeof success === "function") {
  82219. success();
  82220. }
  82221. }
  82222. function setRangeValue(data, options = {}) {
  82223. let curSheetOrder = getSheetIndex(store_default.currentSheetIndex);
  82224. let curRange = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1];
  82225. let {
  82226. range: range2 = curRange,
  82227. isRefresh = true,
  82228. order = curSheetOrder,
  82229. success
  82230. } = __spreadValues({}, options);
  82231. if (data == null) {
  82232. return tooltip_default.info("The data which will be set to range cannot be null.", "");
  82233. }
  82234. if (range2 instanceof Array) {
  82235. return tooltip_default.info("setRangeValue only supports a single selection.", "");
  82236. }
  82237. if (typeof range2 === "string" && formula_default.iscelldata(range2)) {
  82238. range2 = formula_default.getcellrange(range2);
  82239. }
  82240. let rowCount = range2.row[1] - range2.row[0] + 1, columnCount = range2.column[1] - range2.column[0] + 1;
  82241. if (data.length !== rowCount || data[0].length !== columnCount) {
  82242. return tooltip_default.info("The data to be set does not match the selection.", "");
  82243. }
  82244. let file = store_default.luckysheetfile[order];
  82245. if (file == null) {
  82246. return tooltip_default.info("The order parameter is invalid.", "");
  82247. }
  82248. let sheetData = $.extend(true, [], file.data);
  82249. for (let i2 = 0; i2 < rowCount; i2++) {
  82250. for (let j = 0; j < columnCount; j++) {
  82251. let row = range2.row[0] + i2, column = range2.column[0] + j;
  82252. setCellValue(row, column, data[i2][j], {order, isRefresh: false});
  82253. }
  82254. }
  82255. let fileData = $.extend(true, [], file.data);
  82256. file.data.length = 0;
  82257. file.data.push(...sheetData);
  82258. if (file.index == store_default.currentSheetIndex) {
  82259. jfrefreshgrid(fileData, [{
  82260. row: range2.row,
  82261. column: range2.column
  82262. }], void 0, true, false);
  82263. }
  82264. if (isRefresh) {
  82265. luckysheetrefreshgrid();
  82266. }
  82267. if (success && typeof success === "function") {
  82268. success();
  82269. }
  82270. }
  82271. function setSingleRangeFormat(attr, value, options = {}) {
  82272. let curSheetOrder = getSheetIndex(store_default.currentSheetIndex);
  82273. let curRange = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1];
  82274. let {
  82275. range: range2 = curRange,
  82276. order = curSheetOrder
  82277. } = __spreadValues({}, options);
  82278. if (!attr) {
  82279. tooltip_default.info("Arguments attr cannot be null or undefined.", "");
  82280. return "error";
  82281. }
  82282. if (range2 instanceof Array) {
  82283. tooltip_default.info("setRangeValue only supports a single selection.", "");
  82284. return "error";
  82285. }
  82286. if (getObjType(range2) == "string") {
  82287. if (!formula_default.iscelldata(range2)) {
  82288. tooltip_default.info("The range parameter is invalid.", "");
  82289. return "error";
  82290. }
  82291. range2 = formula_default.getcellrange(range2);
  82292. }
  82293. if (getObjType(range2) != "object" || range2.row == null || range2.column == null) {
  82294. tooltip_default.info("The range parameter is invalid.", "");
  82295. return "error";
  82296. }
  82297. for (let r2 = range2.row[0]; r2 <= range2.row[1]; r2++) {
  82298. for (let c2 = range2.column[0]; c2 <= range2.column[1]; c2++) {
  82299. console.log("r", r2);
  82300. console.log("c", c2);
  82301. setCellValue(r2, c2, {[attr]: value}, {
  82302. order,
  82303. isRefresh: false
  82304. });
  82305. }
  82306. }
  82307. }
  82308. function setRangeFormat(attr, value, options = {}) {
  82309. let curSheetOrder = getSheetIndex(store_default.currentSheetIndex);
  82310. let curRange = JSON.parse(JSON.stringify(store_default.luckysheet_select_save));
  82311. let {
  82312. range: range2 = curRange,
  82313. order = curSheetOrder,
  82314. success
  82315. } = __spreadValues({}, options);
  82316. if (getObjType(range2) == "string") {
  82317. if (!formula_default.iscelldata(range2)) {
  82318. return tooltip_default.info("The range parameter is invalid.", "");
  82319. }
  82320. let cellrange = formula_default.getcellrange(range2);
  82321. range2 = [{
  82322. "row": cellrange.row,
  82323. "column": cellrange.column
  82324. }];
  82325. } else if (getObjType(range2) == "object") {
  82326. if (range2.row == null || range2.column == null) {
  82327. return tooltip_default.info("The range parameter is invalid.", "");
  82328. }
  82329. range2 = [{
  82330. "row": range2.row,
  82331. "column": range2.column
  82332. }];
  82333. }
  82334. if (getObjType(range2) != "array") {
  82335. return tooltip_default.info("The range parameter is invalid.", "");
  82336. }
  82337. let file = store_default.luckysheetfile[order];
  82338. let result = [];
  82339. for (let i2 = 0; i2 < range2.length; i2++) {
  82340. result.push(setSingleRangeFormat(attr, value, {range: range2[i2], order}));
  82341. }
  82342. let fileData = $.extend(true, [], file.data);
  82343. if (result.some((i2) => i2 === "error")) {
  82344. file.data.length = 0;
  82345. file.data.push(...fileData);
  82346. return false;
  82347. }
  82348. file.data.length = 0;
  82349. file.data.push(...fileData);
  82350. if (file.index == store_default.currentSheetIndex) {
  82351. jfrefreshgrid(fileData, void 0, void 0, true, false);
  82352. }
  82353. luckysheetrefreshgrid();
  82354. if (success && typeof success === "function") {
  82355. }
  82356. }
  82357. function setRangeFilter(type, options = {}) {
  82358. let typeValues = ["open", "close"];
  82359. if (!typeValues.includes(type)) {
  82360. return tooltip_default.info("The type parameter is invalid.", "");
  82361. }
  82362. let {
  82363. range: range2 = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1],
  82364. order = getSheetIndex(store_default.currentSheetIndex),
  82365. success
  82366. } = __spreadValues({}, options);
  82367. let file = store_default.luckysheetfile[order];
  82368. if (file == null) {
  82369. return tooltip_default.info("The order parameter is invalid.", "");
  82370. }
  82371. if (getObjType(range2) == "string") {
  82372. if (!formula_default.iscelldata(range2)) {
  82373. return tooltip_default.info("The range parameter is invalid.", "");
  82374. }
  82375. range2 = formula_default.getcellrange(range2);
  82376. }
  82377. if (getObjType(range2) != "object" || range2.row == null || range2.column == null) {
  82378. return tooltip_default.info("The range parameter is invalid.", "");
  82379. }
  82380. setTimeout(() => {
  82381. if (success && typeof success === "function") {
  82382. success();
  82383. }
  82384. }, 1);
  82385. if (type == "open") {
  82386. file.filter_select = range2;
  82387. if (file.index == store_default.currentSheetIndex) {
  82388. createFilterOptions(range2, file.filter);
  82389. }
  82390. return {
  82391. "row": range2.row,
  82392. "column": range2.column
  82393. };
  82394. } else if (type == "close") {
  82395. let luckysheet_filter_save = $.extend(true, {}, file.filter_select);
  82396. file.filter_select = null;
  82397. $("#luckysheet-filter-selected-sheet" + file.index).remove();
  82398. $("#luckysheet-filter-options-sheet" + file.index).remove();
  82399. return {
  82400. "row": luckysheet_filter_save.row,
  82401. "column": luckysheet_filter_save.column
  82402. };
  82403. }
  82404. }
  82405. function setRangeMerge(type, options = {}) {
  82406. let typeValues = ["all", "horizontal", "vertical"];
  82407. if (typeValues.indexOf(type) < 0) {
  82408. return tooltip_default.info("The type parameter must be included in ['all', 'horizontal', 'vertical']", "");
  82409. }
  82410. let curSheetOrder = getSheetIndex(store_default.currentSheetIndex), curRange = JSON.parse(JSON.stringify(store_default.luckysheet_select_save));
  82411. let {
  82412. range: range2 = curRange,
  82413. order = curSheetOrder,
  82414. success
  82415. } = __spreadValues({}, options);
  82416. let file = store_default.luckysheetfile[order], cfg = $.extend(true, {}, file.config), data = $.extend(true, [], file.data);
  82417. if (data.length == 0) {
  82418. data = $.extend(true, [], sheetmanage_default.buildGridData(file));
  82419. }
  82420. if (getObjType(range2) == "string") {
  82421. if (!formula_default.iscelldata(range2)) {
  82422. return tooltip_default.info("Incorrect selection format", "");
  82423. }
  82424. let cellrange = formula_default.getcellrange(range2);
  82425. range2 = [{
  82426. "row": cellrange.row,
  82427. "column": cellrange.column
  82428. }];
  82429. } else if (getObjType(range2) == "object") {
  82430. if (!range2.hasOwnProperty("row") || !range2.hasOwnProperty("column")) {
  82431. return tooltip_default.info("Incorrect selection format", "");
  82432. }
  82433. range2 = [{
  82434. "row": range2.row,
  82435. "column": range2.column
  82436. }];
  82437. }
  82438. if (selectIsOverlap(range2)) {
  82439. return tooltip_default.info("Cannot merge overlapping range", "");
  82440. }
  82441. if (cfg["merge"] != null) {
  82442. let has_PartMC = false;
  82443. for (let s = 0; s < range2.length; s++) {
  82444. let r1 = range2[s].row[0], r2 = range2[s].row[1];
  82445. let c1 = range2[s].column[0], c2 = range2[s].column[1];
  82446. has_PartMC = hasPartMC(cfg, r1, r2, c1, c2);
  82447. if (has_PartMC) {
  82448. break;
  82449. }
  82450. }
  82451. if (has_PartMC) {
  82452. return tooltip_default.info("Cannot perform this operation on partially merged cells", "");
  82453. }
  82454. } else {
  82455. cfg.merge = {};
  82456. }
  82457. let isHasMc = false;
  82458. for (let i2 = 0; i2 < range2.length; i2++) {
  82459. let r1 = range2[i2].row[0], r2 = range2[i2].row[1];
  82460. let c1 = range2[i2].column[0], c2 = range2[i2].column[1];
  82461. for (let r3 = r1; r3 <= r2; r3++) {
  82462. for (let c3 = c1; c3 <= c2; c3++) {
  82463. let cell = data[r3][c3];
  82464. if (getObjType(cell) == "object" && "mc" in cell) {
  82465. isHasMc = true;
  82466. break;
  82467. }
  82468. }
  82469. if (isHasMc) {
  82470. break;
  82471. }
  82472. }
  82473. }
  82474. if (isHasMc) {
  82475. cancelRangeMerge({
  82476. range: range2,
  82477. order
  82478. });
  82479. } else {
  82480. for (let i2 = 0; i2 < range2.length; i2++) {
  82481. let r1 = range2[i2].row[0], r2 = range2[i2].row[1];
  82482. let c1 = range2[i2].column[0], c2 = range2[i2].column[1];
  82483. if (r1 == r2 && c1 == c2) {
  82484. continue;
  82485. }
  82486. if (type == "all") {
  82487. let fv = {}, isfirst = false;
  82488. for (let r3 = r1; r3 <= r2; r3++) {
  82489. for (let c3 = c1; c3 <= c2; c3++) {
  82490. let cell = data[r3][c3];
  82491. if (cell != null && (!isRealNull(cell.v) || cell.f != null) && !isfirst) {
  82492. fv = $.extend(true, {}, cell);
  82493. isfirst = true;
  82494. }
  82495. data[r3][c3] = {"mc": {"r": r1, "c": c1}};
  82496. }
  82497. }
  82498. data[r1][c1] = fv;
  82499. data[r1][c1].mc = {"r": r1, "c": c1, "rs": r2 - r1 + 1, "cs": c2 - c1 + 1};
  82500. cfg["merge"][r1 + "_" + c1] = {"r": r1, "c": c1, "rs": r2 - r1 + 1, "cs": c2 - c1 + 1};
  82501. } else if (type == "vertical") {
  82502. for (let c3 = c1; c3 <= c2; c3++) {
  82503. let fv = {}, isfirst = false;
  82504. for (let r3 = r1; r3 <= r2; r3++) {
  82505. let cell = data[r3][c3];
  82506. if (cell != null && (!isRealNull(cell.v) || cell.f != null) && !isfirst) {
  82507. fv = $.extend(true, {}, cell);
  82508. isfirst = true;
  82509. }
  82510. data[r3][c3] = {"mc": {"r": r1, "c": c3}};
  82511. }
  82512. data[r1][c3] = fv;
  82513. data[r1][c3].mc = {"r": r1, "c": c3, "rs": r2 - r1 + 1, "cs": 1};
  82514. cfg["merge"][r1 + "_" + c3] = {"r": r1, "c": c3, "rs": r2 - r1 + 1, "cs": 1};
  82515. }
  82516. } else if (type == "horizontal") {
  82517. for (let r3 = r1; r3 <= r2; r3++) {
  82518. let fv = {}, isfirst = false;
  82519. for (let c3 = c1; c3 <= c2; c3++) {
  82520. let cell = data[r3][c3];
  82521. if (cell != null && (!isRealNull(cell.v) || cell.f != null) && !isfirst) {
  82522. fv = $.extend(true, {}, cell);
  82523. isfirst = true;
  82524. }
  82525. data[r3][c3] = {"mc": {"r": r3, "c": c1}};
  82526. }
  82527. data[r3][c1] = fv;
  82528. data[r3][c1].mc = {"r": r3, "c": c1, "rs": 1, "cs": c2 - c1 + 1};
  82529. cfg["merge"][r3 + "_" + c1] = {"r": r3, "c": c1, "rs": 1, "cs": c2 - c1 + 1};
  82530. }
  82531. }
  82532. }
  82533. if (order == curSheetOrder) {
  82534. if (store_default.clearjfundo) {
  82535. store_default.jfundo.length = 0;
  82536. store_default.jfredo.push({
  82537. "type": "mergeChange",
  82538. "sheetIndex": file.index,
  82539. "data": $.extend(true, [], file.data),
  82540. "curData": data,
  82541. "range": range2,
  82542. "config": $.extend(true, {}, file.config),
  82543. "curConfig": cfg
  82544. });
  82545. }
  82546. store_default.clearjfundo = false;
  82547. jfrefreshgrid(data, range2, {"cfg": cfg});
  82548. store_default.clearjfundo = true;
  82549. } else {
  82550. file.data = data;
  82551. file.config = cfg;
  82552. }
  82553. }
  82554. if (success && typeof success === "function") {
  82555. success();
  82556. }
  82557. }
  82558. function cancelRangeMerge(options = {}) {
  82559. let curRange = store_default.luckysheet_select_save, curSheetOrder = getSheetIndex(store_default.currentSheetIndex);
  82560. let {
  82561. range: range2 = curRange,
  82562. order = curSheetOrder,
  82563. success
  82564. } = __spreadValues({}, options);
  82565. let file = store_default.luckysheetfile[order], cfg = $.extend(true, {}, file.config), data = $.extend(true, [], file.data);
  82566. if (data.length == 0) {
  82567. data = $.extend(true, [], sheetmanage_default.buildGridData(file));
  82568. }
  82569. if (getObjType(range2) == "string") {
  82570. if (!formula_default.iscelldata(range2)) {
  82571. return tooltip_default.info("Incorrect selection format", "");
  82572. }
  82573. let cellrange = formula_default.getcellrange(range2);
  82574. range2 = [{
  82575. "row": cellrange.row,
  82576. "column": cellrange.column
  82577. }];
  82578. } else if (getObjType(range2) == "object") {
  82579. if (!range2.hasOwnProperty("row") || !range2.hasOwnProperty("column")) {
  82580. return tooltip_default.info("Incorrect selection format", "");
  82581. }
  82582. range2 = [{
  82583. "row": range2.row,
  82584. "column": range2.column
  82585. }];
  82586. }
  82587. if (selectIsOverlap(range2)) {
  82588. return tooltip_default.info("Cannot merge overlapping range", "");
  82589. }
  82590. if (cfg["merge"] != null) {
  82591. let has_PartMC = false;
  82592. for (let s = 0; s < range2.length; s++) {
  82593. let r1 = range2[s].row[0], r2 = range2[s].row[1];
  82594. let c1 = range2[s].column[0], c2 = range2[s].column[1];
  82595. has_PartMC = hasPartMC(cfg, r1, r2, c1, c2);
  82596. if (has_PartMC) {
  82597. break;
  82598. }
  82599. }
  82600. if (has_PartMC) {
  82601. return tooltip_default.info("Cannot perform this operation on partially merged cells", "");
  82602. }
  82603. }
  82604. for (let i2 = 0; i2 < range2.length; i2++) {
  82605. let r1 = range2[i2].row[0], r2 = range2[i2].row[1];
  82606. let c1 = range2[i2].column[0], c2 = range2[i2].column[1];
  82607. if (r1 == r2 && c1 == c2) {
  82608. continue;
  82609. }
  82610. let fv = {};
  82611. for (let r3 = r1; r3 <= r2; r3++) {
  82612. for (let c3 = c1; c3 <= c2; c3++) {
  82613. let cell = data[r3][c3];
  82614. if (cell != null && cell.mc != null) {
  82615. let mc_r = cell.mc.r, mc_c = cell.mc.c;
  82616. if ("rs" in cell.mc) {
  82617. delete cell.mc;
  82618. delete cfg["merge"][mc_r + "_" + mc_c];
  82619. fv[mc_r + "_" + mc_c] = $.extend(true, {}, cell);
  82620. } else {
  82621. let cell_clone = JSON.parse(JSON.stringify(fv[mc_r + "_" + mc_c]));
  82622. delete cell_clone.v;
  82623. delete cell_clone.m;
  82624. delete cell_clone.ct;
  82625. delete cell_clone.f;
  82626. delete cell_clone.spl;
  82627. data[r3][c3] = cell_clone;
  82628. }
  82629. }
  82630. }
  82631. }
  82632. }
  82633. if (order == curSheetOrder) {
  82634. if (store_default.clearjfundo) {
  82635. store_default.jfundo.length = 0;
  82636. store_default.jfredo.push({
  82637. "type": "mergeChange",
  82638. "sheetIndex": file.index,
  82639. "data": $.extend(true, [], file.data),
  82640. "curData": data,
  82641. "range": range2,
  82642. "config": $.extend(true, {}, file.config),
  82643. "curConfig": cfg
  82644. });
  82645. }
  82646. store_default.clearjfundo = false;
  82647. jfrefreshgrid(data, range2, {"cfg": cfg});
  82648. store_default.clearjfundo = true;
  82649. } else {
  82650. file.data = data;
  82651. file.config = cfg;
  82652. }
  82653. }
  82654. function setRangeSort(type, options = {}) {
  82655. let typeValues = ["asc", "desc"];
  82656. if (typeValues.indexOf(type) < 0) {
  82657. return tooltip_default.info("The type parameter must be included in ['asc', 'desc'", "");
  82658. }
  82659. let curSheetOrder = getSheetIndex(store_default.currentSheetIndex), curRange = store_default.luckysheet_select_save[0];
  82660. let {
  82661. range: range2 = curRange,
  82662. order = curSheetOrder,
  82663. success
  82664. } = __spreadValues({}, options);
  82665. let file = store_default.luckysheetfile[order], cfg = $.extend(true, {}, file.config), fileData = $.extend(true, [], file.data);
  82666. if (fileData.length == 0) {
  82667. fileData = $.extend(true, [], sheetmanage_default.buildGridData(file));
  82668. }
  82669. if (range2 instanceof Array && range2.length > 1) {
  82670. tooltip_default.info(locale_default().sort.noRangeError, "");
  82671. return;
  82672. }
  82673. if (range2 && typeof range2 === "string" && formula_default.iscelldata(range2)) {
  82674. range2 = formula_default.getcellrange(range2);
  82675. }
  82676. let r1 = range2.row[0], r2 = range2.row[1], c1 = range2.column[0], c2 = range2.column[1];
  82677. let hasMc = false;
  82678. let data = [];
  82679. for (let r3 = r1; r3 <= r2; r3++) {
  82680. let data_row = [];
  82681. for (let c3 = c1; c3 <= c2; c3++) {
  82682. if (fileData[r3][c3] != null && fileData[r3][c3].mc != null) {
  82683. hasMc = true;
  82684. break;
  82685. }
  82686. data_row.push(fileData[r3][c3]);
  82687. }
  82688. data.push(data_row);
  82689. }
  82690. if (hasMc) {
  82691. tooltip_default.info(locale_default().sort.mergeError, "");
  82692. return;
  82693. }
  82694. data = orderbydata([].concat(data), 0, type === "asc");
  82695. for (let r3 = r1; r3 <= r2; r3++) {
  82696. for (let c3 = c1; c3 <= c2; c3++) {
  82697. fileData[r3][c3] = data[r3 - r1][c3 - c1];
  82698. }
  82699. }
  82700. let allParam = {};
  82701. if (cfg["rowlen"] != null) {
  82702. cfg = rowlenByRange(fileData, r1, r2, cfg);
  82703. allParam = {
  82704. "cfg": cfg,
  82705. "RowlChange": true
  82706. };
  82707. }
  82708. if (file.index == store_default.currentSheetIndex) {
  82709. jfrefreshgrid(fileData, [{"row": [r1, r2], "column": [c1, c2]}], allParam);
  82710. } else {
  82711. file.data = fileData;
  82712. file.config = cfg;
  82713. }
  82714. if (success && typeof success === "function") {
  82715. success();
  82716. }
  82717. }
  82718. function setRangeSortMulti(hasTitle, sort, options = {}) {
  82719. if (!sort || !(sort instanceof Array)) {
  82720. return tooltip_default.info("The sort parameter is invalid.", "");
  82721. }
  82722. let curSheetOrder = getSheetIndex(store_default.currentSheetIndex), curRange = store_default.luckysheet_select_save[0];
  82723. let {
  82724. range: range2 = curRange,
  82725. order = curSheetOrder,
  82726. success
  82727. } = __spreadValues({}, options);
  82728. let file = store_default.luckysheetfile[order], cfg = $.extend(true, {}, file.config), fileData = $.extend(true, [], file.data);
  82729. if (fileData.length == 0) {
  82730. fileData = $.extend(true, [], sheetmanage_default.buildGridData(file));
  82731. }
  82732. if (range2 instanceof Array && range2.length > 1) {
  82733. tooltip_default.info(locale_default().sort.noRangeError, "");
  82734. return;
  82735. }
  82736. if (range2 && typeof range2 === "string" && formula_default.iscelldata(range2)) {
  82737. range2 = formula_default.getcellrange(range2);
  82738. }
  82739. let r1 = range2.row[0], r2 = range2.row[1], c1 = range2.column[0], c2 = range2.column[1];
  82740. let str;
  82741. if (hasTitle) {
  82742. str = r1 + 1;
  82743. } else {
  82744. str = r1;
  82745. }
  82746. let hasMc = false;
  82747. let data = [];
  82748. for (let r3 = str; r3 <= r2; r3++) {
  82749. let data_row = [];
  82750. for (let c3 = c1; c3 <= c2; c3++) {
  82751. if (fileData[r3][c3] != null && fileData[r3][c3].mc != null) {
  82752. hasMc = true;
  82753. break;
  82754. }
  82755. data_row.push(fileData[r3][c3]);
  82756. }
  82757. data.push(data_row);
  82758. }
  82759. if (hasMc) {
  82760. tooltip_default.info(locale_default().sort.mergeError, "");
  82761. return;
  82762. }
  82763. sort.forEach((sortItem) => {
  82764. let i2 = sortItem.i;
  82765. i2 -= c1;
  82766. data = orderbydata([].concat(data), i2, sortItem.sort === "asc");
  82767. });
  82768. for (let r3 = str; r3 <= r2; r3++) {
  82769. for (let c3 = c1; c3 <= c2; c3++) {
  82770. fileData[r3][c3] = data[r3 - str][c3 - c1];
  82771. }
  82772. }
  82773. let allParam = {};
  82774. if (cfg["rowlen"] != null) {
  82775. cfg = rowlenByRange(fileData, str, r2, cfg);
  82776. allParam = {
  82777. "cfg": cfg,
  82778. "RowlChange": true
  82779. };
  82780. }
  82781. if (file.index === store_default.currentSheetIndex) {
  82782. jfrefreshgrid(fileData, [{"row": [str, r2], "column": [c1, c2]}], allParam);
  82783. } else {
  82784. file.data = fileData;
  82785. file.config = cfg;
  82786. }
  82787. if (success && typeof success === "function") {
  82788. success();
  82789. }
  82790. }
  82791. function setRangeConditionalFormatDefault(conditionName, conditionValue, options = {}) {
  82792. let conditionNameValues = [
  82793. "greaterThan",
  82794. "lessThan",
  82795. "betweenness",
  82796. "equal",
  82797. "textContains",
  82798. "occurrenceDate",
  82799. "duplicateValue",
  82800. "top10",
  82801. "top10%",
  82802. "last10",
  82803. "last10%",
  82804. "AboveAverage",
  82805. "SubAverage"
  82806. ];
  82807. if (!conditionName || !conditionNameValues.includes(conditionName)) {
  82808. return tooltip_default.info("The conditionName parameter is invalid.", "");
  82809. }
  82810. if (getObjType(conditionValue) != "array" || conditionValue.length == 0) {
  82811. return tooltip_default.info("The conditionValue parameter is invalid.", "");
  82812. }
  82813. let {
  82814. format = {
  82815. "textColor": "#000000",
  82816. "cellColor": "#ff0000"
  82817. },
  82818. cellrange = store_default.luckysheet_select_save,
  82819. order = getSheetIndex(store_default.currentSheetIndex),
  82820. success
  82821. } = __spreadValues({}, options);
  82822. cellrange = JSON.parse(JSON.stringify(cellrange));
  82823. let file = store_default.luckysheetfile[order];
  82824. let data = file.data;
  82825. if (data == null || data.length == 0) {
  82826. data = sheetmanage_default.buildGridData(file);
  82827. }
  82828. if (file == null) {
  82829. return tooltip_default.info("Incorrect worksheet index", "");
  82830. }
  82831. const conditionformat_Text = locale_default().conditionformat;
  82832. let conditionRange = [], conditionValue2 = [];
  82833. if (conditionName == "betweenness") {
  82834. let v1 = conditionValue[0];
  82835. let v2 = conditionValue[1];
  82836. let rangeArr1 = conditionformat_default.getRangeByTxt(v1);
  82837. if (rangeArr1.length > 1) {
  82838. conditionformat_default.infoDialog(conditionformat_Text.onlySingleCell, "");
  82839. return;
  82840. } else if (rangeArr1.length == 1) {
  82841. let r1 = rangeArr1[0].row[0], r2 = rangeArr1[0].row[1];
  82842. let c1 = rangeArr1[0].column[0], c2 = rangeArr1[0].column[1];
  82843. if (r1 == r2 && c1 == c2) {
  82844. v1 = getcellvalue(r1, c1, data);
  82845. conditionRange.push({"row": rangeArr1[0].row, "column": rangeArr1[0].column});
  82846. conditionValue2.push(v1);
  82847. } else {
  82848. conditionformat_default.infoDialog(conditionformat_Text.onlySingleCell, "");
  82849. return;
  82850. }
  82851. } else if (rangeArr1.length == 0) {
  82852. if (isNaN(v1) || v1 == "") {
  82853. conditionformat_default.infoDialog(conditionformat_Text.conditionValueCanOnly, "");
  82854. return;
  82855. } else {
  82856. conditionValue2.push(v1);
  82857. }
  82858. }
  82859. let rangeArr2 = conditionformat_default.getRangeByTxt(v2);
  82860. if (rangeArr2.length > 1) {
  82861. conditionformat_default.infoDialog(conditionformat_Text.onlySingleCell, "");
  82862. return;
  82863. } else if (rangeArr2.length == 1) {
  82864. let r1 = rangeArr2[0].row[0], r2 = rangeArr2[0].row[1];
  82865. let c1 = rangeArr2[0].column[0], c2 = rangeArr2[0].column[1];
  82866. if (r1 == r2 && c1 == c2) {
  82867. v2 = getcellvalue(r1, c1, data);
  82868. conditionRange.push({"row": rangeArr2[0].row, "column": rangeArr2[0].column});
  82869. conditionValue2.push(v2);
  82870. } else {
  82871. conditionformat_default.infoDialog(conditionformat_Text.onlySingleCell, "");
  82872. return;
  82873. }
  82874. } else if (rangeArr2.length == 0) {
  82875. if (isNaN(v2) || v2 == "") {
  82876. conditionformat_default.infoDialog(conditionformat_Text.conditionValueCanOnly, "");
  82877. return;
  82878. } else {
  82879. conditionValue2.push(v2);
  82880. }
  82881. }
  82882. } else if (conditionName == "greaterThan" || conditionName == "lessThan" || conditionName == "equal") {
  82883. let v = conditionValue[0];
  82884. let rangeArr = conditionformat_default.getRangeByTxt(v);
  82885. if (rangeArr.length > 1) {
  82886. conditionformat_default.infoDialog(conditionformat_Text.onlySingleCell, "");
  82887. return;
  82888. } else if (rangeArr.length == 1) {
  82889. let r1 = rangeArr[0].row[0], r2 = rangeArr[0].row[1];
  82890. let c1 = rangeArr[0].column[0], c2 = rangeArr[0].column[1];
  82891. if (r1 == r2 && c1 == c2) {
  82892. v = getcellvalue(r1, c1, data);
  82893. conditionRange.push({"row": rangeArr[0].row, "column": rangeArr[0].column});
  82894. conditionValue2.push(v);
  82895. } else {
  82896. conditionformat_default.infoDialog(conditionformat_Text.onlySingleCell, "");
  82897. return;
  82898. }
  82899. } else if (rangeArr.length == 0) {
  82900. if (isNaN(v) || v == "") {
  82901. conditionformat_default.infoDialog(conditionformat_Text.conditionValueCanOnly, "");
  82902. return;
  82903. } else {
  82904. conditionValue2.push(v);
  82905. }
  82906. }
  82907. } else if (conditionName == "textContains") {
  82908. let v = conditionValue[0];
  82909. let rangeArr = conditionformat_default.getRangeByTxt(v);
  82910. if (rangeArr.length > 1) {
  82911. conditionformat_default.infoDialog(conditionformat_Text.onlySingleCell, "");
  82912. return;
  82913. } else if (rangeArr.length == 1) {
  82914. let r1 = rangeArr[0].row[0], r2 = rangeArr[0].row[1];
  82915. let c1 = rangeArr[0].column[0], c2 = rangeArr[0].column[1];
  82916. if (r1 == r2 && c1 == c2) {
  82917. v = getcellvalue(r1, c1, data);
  82918. conditionRange.push({"row": rangeArr[0].row, "column": rangeArr[0].column});
  82919. conditionValue2.push(v);
  82920. } else {
  82921. conditionformat_default.infoDialog(conditionformat_Text.onlySingleCell, "");
  82922. return;
  82923. }
  82924. } else if (rangeArr.length == 0) {
  82925. if (v == "") {
  82926. conditionformat_default.infoDialog(conditionformat_Text.conditionValueCanOnly, "");
  82927. return;
  82928. } else {
  82929. conditionValue2.push(v);
  82930. }
  82931. }
  82932. } else if (conditionName == "occurrenceDate") {
  82933. let v1 = conditionValue[0];
  82934. let v2 = conditionValue[1];
  82935. if (!isdatetime(v1) || !isdatetime(v2)) {
  82936. return tooltip_default.info("The conditionValue parameter is invalid.", "");
  82937. }
  82938. let v;
  82939. if (diff(v1, v2) > 0) {
  82940. v = (0, import_dayjs7.default)(v2).format("YYYY/MM/DD") + "-" + (0, import_dayjs7.default)(v1).format("YYYY/MM/DD");
  82941. } else {
  82942. v = (0, import_dayjs7.default)(v1).format("YYYY/MM/DD") + "-" + (0, import_dayjs7.default)(v2).format("YYYY/MM/DD");
  82943. }
  82944. conditionValue2.push(v);
  82945. } else if (conditionName == "duplicateValue") {
  82946. let v = conditionValue[0];
  82947. if (v != "0" || v != "1") {
  82948. return tooltip_default.info("The conditionValue parameter is invalid.", "");
  82949. }
  82950. conditionValue2.push(v);
  82951. } else if (conditionName == "top10" || conditionName == "top10%" || conditionName == "last10" || conditionName == "last10%") {
  82952. let v = conditionValue[0];
  82953. if (parseInt(v) != v || parseInt(v) < 1 || parseInt(v) > 1e3) {
  82954. conditionformat_default.infoDialog(conditionformat_Text.pleaseEnterInteger, "");
  82955. return;
  82956. }
  82957. conditionValue2.push(parseInt(v));
  82958. } else if (conditionName == "AboveAverage" || conditionName == "SubAverage") {
  82959. conditionValue2.push(conditionName);
  82960. }
  82961. if (!format.hasOwnProperty("textColor") || !format.hasOwnProperty("cellColor")) {
  82962. return tooltip_default.info("The format parameter is invalid.", "");
  82963. }
  82964. if (getObjType(cellrange) == "string") {
  82965. cellrange = conditionformat_default.getRangeByTxt(cellrange);
  82966. } else if (getObjType(cellrange) == "object") {
  82967. cellrange = [cellrange];
  82968. }
  82969. if (getObjType(cellrange) != "array") {
  82970. return tooltip_default.info("The cellrange parameter is invalid.", "");
  82971. }
  82972. let rule = {
  82973. "type": "default",
  82974. "cellrange": cellrange,
  82975. "format": format,
  82976. "conditionName": conditionName,
  82977. "conditionRange": conditionRange,
  82978. "conditionValue": conditionValue2
  82979. };
  82980. let fileH = $.extend(true, [], store_default.luckysheetfile);
  82981. let historyRules = conditionformat_default.getHistoryRules(fileH);
  82982. let ruleArr2 = file["luckysheet_conditionformat_save"] || [];
  82983. ruleArr2.push(rule);
  82984. file["luckysheet_conditionformat_save"] = ruleArr2;
  82985. let fileC = $.extend(true, [], store_default.luckysheetfile);
  82986. let currentRules = conditionformat_default.getCurrentRules(fileC);
  82987. conditionformat_default.ref(historyRules, currentRules);
  82988. if (server_default.allowUpdate) {
  82989. server_default.saveParam("all", file.index, ruleArr2, {"k": "luckysheet_conditionformat_save"});
  82990. }
  82991. if (success && typeof success === "function") {
  82992. success();
  82993. }
  82994. }
  82995. function setRangeConditionalFormat(type, options = {}) {
  82996. let typeValues = [
  82997. "dataBar",
  82998. "colorGradation",
  82999. "icons"
  83000. ];
  83001. if (!type || !typeValues.includes(type)) {
  83002. return tooltip_default.info("The type parameter is invalid.", "");
  83003. }
  83004. let {
  83005. format,
  83006. cellrange = store_default.luckysheet_select_save,
  83007. order = getSheetIndex(store_default.currentSheetIndex),
  83008. success
  83009. } = __spreadValues({}, options);
  83010. cellrange = JSON.parse(JSON.stringify(cellrange));
  83011. let file = store_default.luckysheetfile[order];
  83012. if (file == null) {
  83013. return tooltip_default.info("Incorrect worksheet index", "");
  83014. }
  83015. if (type == "dataBar") {
  83016. if (format == null) {
  83017. format = ["#638ec6", "#ffffff"];
  83018. }
  83019. if (getObjType(format) != "array" || format.length < 1 || format.length > 2) {
  83020. return tooltip_default.info("The format parameter is invalid.", "");
  83021. }
  83022. } else if (type == "colorGradation") {
  83023. if (format == null) {
  83024. format = ["rgb(99, 190, 123)", "rgb(255, 235, 132)", "rgb(248, 105, 107)"];
  83025. }
  83026. if (getObjType(format) != "array" || format.length < 2 || format.length > 3) {
  83027. return tooltip_default.info("The format parameter is invalid.", "");
  83028. }
  83029. } else if (type == "icons") {
  83030. if (format == null) {
  83031. format = "threeWayArrowMultiColor";
  83032. }
  83033. let formatValues = [
  83034. "threeWayArrowMultiColor",
  83035. "threeTriangles",
  83036. "fourWayArrowMultiColor",
  83037. "fiveWayArrowMultiColor",
  83038. "threeWayArrowGrayColor",
  83039. "fourWayArrowGrayColor",
  83040. "fiveWayArrowGrayColor",
  83041. "threeColorTrafficLightRimless",
  83042. "threeSigns",
  83043. "greenRedBlackGradient",
  83044. "threeColorTrafficLightBordered",
  83045. "fourColorTrafficLight",
  83046. "threeSymbolsCircled",
  83047. "tricolorFlag",
  83048. "threeSymbolsnoCircle",
  83049. "threeStars",
  83050. "fiveQuadrantDiagram",
  83051. "fiveBoxes",
  83052. "grade4",
  83053. "grade5"
  83054. ];
  83055. if (getObjType(format) != "string" || !formatValues.includes(format)) {
  83056. return tooltip_default.info("The format parameter is invalid.", "");
  83057. }
  83058. switch (format) {
  83059. case "threeWayArrowMultiColor":
  83060. format = {
  83061. "len": 3,
  83062. "leftMin": 0,
  83063. "top": 0
  83064. };
  83065. break;
  83066. case "threeTriangles":
  83067. format = {
  83068. "len": 3,
  83069. "leftMin": 0,
  83070. "top": 1
  83071. };
  83072. break;
  83073. case "fourWayArrowMultiColor":
  83074. format = {
  83075. "len": 4,
  83076. "leftMin": 0,
  83077. "top": 2
  83078. };
  83079. break;
  83080. case "fiveWayArrowMultiColor":
  83081. format = {
  83082. "len": 5,
  83083. "leftMin": 0,
  83084. "top": 3
  83085. };
  83086. break;
  83087. case "threeWayArrowGrayColor":
  83088. format = {
  83089. "len": 3,
  83090. "leftMin": 5,
  83091. "top": 0
  83092. };
  83093. break;
  83094. case "fourWayArrowGrayColor":
  83095. format = {
  83096. "len": 4,
  83097. "leftMin": 5,
  83098. "top": 1
  83099. };
  83100. break;
  83101. case "fiveWayArrowGrayColor":
  83102. format = {
  83103. "len": 5,
  83104. "leftMin": 5,
  83105. "top": 2
  83106. };
  83107. break;
  83108. case "threeColorTrafficLightRimless":
  83109. format = {
  83110. "len": 3,
  83111. "leftMin": 0,
  83112. "top": 4
  83113. };
  83114. break;
  83115. case "threeSigns":
  83116. format = {
  83117. "len": 3,
  83118. "leftMin": 0,
  83119. "top": 5
  83120. };
  83121. break;
  83122. case "greenRedBlackGradient":
  83123. format = {
  83124. "len": 4,
  83125. "leftMin": 0,
  83126. "top": 6
  83127. };
  83128. break;
  83129. case "threeColorTrafficLightBordered":
  83130. format = {
  83131. "len": 3,
  83132. "leftMin": 5,
  83133. "top": 4
  83134. };
  83135. break;
  83136. case "fourColorTrafficLight":
  83137. format = {
  83138. "len": 4,
  83139. "leftMin": 5,
  83140. "top": 5
  83141. };
  83142. break;
  83143. case "threeSymbolsCircled":
  83144. format = {
  83145. "len": 3,
  83146. "leftMin": 0,
  83147. "top": 7
  83148. };
  83149. break;
  83150. case "tricolorFlag":
  83151. format = {
  83152. "len": 3,
  83153. "leftMin": 0,
  83154. "top": 8
  83155. };
  83156. break;
  83157. case "threeSymbolsnoCircle":
  83158. format = {
  83159. "len": 3,
  83160. "leftMin": 5,
  83161. "top": 7
  83162. };
  83163. break;
  83164. case "threeStars":
  83165. format = {
  83166. "len": 3,
  83167. "leftMin": 0,
  83168. "top": 9
  83169. };
  83170. break;
  83171. case "fiveQuadrantDiagram":
  83172. format = {
  83173. "len": 5,
  83174. "leftMin": 0,
  83175. "top": 10
  83176. };
  83177. break;
  83178. case "fiveBoxes":
  83179. format = {
  83180. "len": 5,
  83181. "leftMin": 0,
  83182. "top": 11
  83183. };
  83184. break;
  83185. case "grade4":
  83186. format = {
  83187. "len": 4,
  83188. "leftMin": 5,
  83189. "top": 9
  83190. };
  83191. break;
  83192. case "grade5":
  83193. format = {
  83194. "len": 5,
  83195. "leftMin": 5,
  83196. "top": 10
  83197. };
  83198. break;
  83199. }
  83200. }
  83201. if (getObjType(cellrange) == "string") {
  83202. cellrange = conditionformat_default.getRangeByTxt(cellrange);
  83203. } else if (getObjType(cellrange) == "object") {
  83204. cellrange = [cellrange];
  83205. }
  83206. if (getObjType(cellrange) != "array") {
  83207. return tooltip_default.info("The cellrange parameter is invalid.", "");
  83208. }
  83209. let rule = {
  83210. "type": type,
  83211. "cellrange": cellrange,
  83212. "format": format
  83213. };
  83214. let fileH = $.extend(true, [], store_default.luckysheetfile);
  83215. let historyRules = conditionformat_default.getHistoryRules(fileH);
  83216. let ruleArr2 = file["luckysheet_conditionformat_save"] || [];
  83217. ruleArr2.push(rule);
  83218. file["luckysheet_conditionformat_save"] = ruleArr2;
  83219. let fileC = $.extend(true, [], store_default.luckysheetfile);
  83220. let currentRules = conditionformat_default.getCurrentRules(fileC);
  83221. conditionformat_default.ref(historyRules, currentRules);
  83222. if (server_default.allowUpdate) {
  83223. server_default.saveParam("all", file.index, ruleArr2, {"k": "luckysheet_conditionformat_save"});
  83224. }
  83225. if (success && typeof success === "function") {
  83226. success();
  83227. }
  83228. }
  83229. function deleteRangeConditionalFormat(itemIndex, options = {}) {
  83230. if (!isRealNum(itemIndex)) {
  83231. return tooltip_default.info("The itemIndex parameter is invalid.", "");
  83232. }
  83233. itemIndex = Number(itemIndex);
  83234. let {
  83235. order = getSheetIndex(store_default.currentSheetIndex),
  83236. success
  83237. } = __spreadValues({}, options);
  83238. let file = store_default.luckysheetfile[order];
  83239. if (file == null) {
  83240. return tooltip_default.info("The order parameter is invalid.", "");
  83241. }
  83242. let cdformat = $.extend(true, [], file.luckysheet_conditionformat_save);
  83243. if (cdformat.length == 0) {
  83244. return tooltip_default.info("This worksheet has no conditional format to delete", "");
  83245. } else if (cdformat[itemIndex] == null) {
  83246. return tooltip_default.info("The conditional format of the index cannot be found", "");
  83247. }
  83248. let cdformatItem = cdformat.splice(itemIndex, 1);
  83249. let fileH = $.extend(true, [], store_default.luckysheetfile);
  83250. let historyRules = conditionformat_default.getHistoryRules(fileH);
  83251. file["luckysheet_conditionformat_save"] = cdformat;
  83252. let fileC = $.extend(true, [], store_default.luckysheetfile);
  83253. let currentRules = conditionformat_default.getCurrentRules(fileC);
  83254. conditionformat_default.ref(historyRules, currentRules);
  83255. if (server_default.allowUpdate) {
  83256. server_default.saveParam("all", file.index, ruleArr, {"k": "luckysheet_conditionformat_save"});
  83257. }
  83258. setTimeout(() => {
  83259. if (success && typeof success === "function") {
  83260. success();
  83261. }
  83262. }, 1);
  83263. return cdformatItem;
  83264. }
  83265. function clearRange(options = {}) {
  83266. let {
  83267. range: range2 = store_default.luckysheet_select_save,
  83268. order = getSheetIndex(store_default.currentSheetIndex),
  83269. success
  83270. } = __spreadValues({}, options);
  83271. range2 = JSON.parse(JSON.stringify(range2));
  83272. if (getObjType(range2) == "string") {
  83273. if (!formula_default.iscelldata(range2)) {
  83274. return tooltip_default.info("The range parameter is invalid.", "");
  83275. }
  83276. let cellrange = formula_default.getcellrange(range2);
  83277. range2 = [{
  83278. "row": cellrange.row,
  83279. "column": cellrange.column
  83280. }];
  83281. } else if (getObjType(range2) == "object") {
  83282. if (range2.row == null || range2.column == null) {
  83283. return tooltip_default.info("The range parameter is invalid.", "");
  83284. }
  83285. range2 = [{
  83286. "row": range2.row,
  83287. "column": range2.column
  83288. }];
  83289. }
  83290. if (getObjType(range2) != "array") {
  83291. return tooltip_default.info("The range parameter is invalid.", "");
  83292. }
  83293. let file = store_default.luckysheetfile[order];
  83294. if (file == null) {
  83295. return tooltip_default.info("The order parameter is invalid.", "");
  83296. }
  83297. let cfg = $.extend(true, {}, file.config);
  83298. let has_PartMC = false;
  83299. for (let s = 0; s < range2.length; s++) {
  83300. let r1 = range2[s].row[0], r2 = range2[s].row[1];
  83301. let c1 = range2[s].column[0], c2 = range2[s].column[1];
  83302. has_PartMC = hasPartMC(cfg, r1, r2, c1, c2);
  83303. if (has_PartMC) {
  83304. break;
  83305. }
  83306. }
  83307. if (has_PartMC) {
  83308. return tooltip_default.info("Cannot perform this operation on partially merged cells", "");
  83309. }
  83310. let d = $.extend(true, [], file.data);
  83311. if (d.length == 0) {
  83312. d = $.extend(true, [], sheetmanage_default.buildGridData(file));
  83313. }
  83314. for (let s = 0; s < range2.length; s++) {
  83315. let r1 = range2[s].row[0], r2 = range2[s].row[1];
  83316. let c1 = range2[s].column[0], c2 = range2[s].column[1];
  83317. for (let r3 = r1; r3 <= r2; r3++) {
  83318. for (let c3 = c1; c3 <= c2; c3++) {
  83319. let cell = d[r3][c3];
  83320. if (getObjType(cell) == "object") {
  83321. delete cell["m"];
  83322. delete cell["v"];
  83323. if (cell["f"] != null) {
  83324. delete cell["f"];
  83325. formula_default.delFunctionGroup(r3, c3, file.index);
  83326. delete cell["spl"];
  83327. }
  83328. if (cell["ct"] != null && cell["ct"].t == "inlineStr") {
  83329. delete cell["ct"];
  83330. }
  83331. } else {
  83332. d[r3][c3] = null;
  83333. }
  83334. }
  83335. }
  83336. }
  83337. if (file.index == store_default.currentSheetIndex) {
  83338. jfrefreshgrid(d, range2);
  83339. } else {
  83340. file.data = d;
  83341. }
  83342. if (success && typeof success === "function") {
  83343. success();
  83344. }
  83345. }
  83346. function deleteRange(move, options = {}) {
  83347. let moveList = ["left", "up"];
  83348. if (!moveList.includes(move)) {
  83349. return tooltip_default.info("The move parameter is invalid.", "");
  83350. }
  83351. let {
  83352. range: range2 = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1],
  83353. order = getSheetIndex(store_default.currentSheetIndex),
  83354. success
  83355. } = __spreadValues({}, options);
  83356. if (getObjType(range2) == "string") {
  83357. if (!formula_default.iscelldata(range2)) {
  83358. return tooltip_default.info("The range parameter is invalid.", "");
  83359. }
  83360. let cellrange = formula_default.getcellrange(range2);
  83361. range2 = {
  83362. "row": cellrange.row,
  83363. "column": cellrange.column
  83364. };
  83365. }
  83366. if (getObjType(range2) != "object" || range2.row == null || range2.column == null) {
  83367. return tooltip_default.info("The range parameter is invalid.", "");
  83368. }
  83369. let file = store_default.luckysheetfile[order];
  83370. if (file == null) {
  83371. return tooltip_default.info("The order parameter is invalid.", "");
  83372. }
  83373. let str = range2.row[0], edr = range2.row[1], stc = range2.column[0], edc = range2.column[1];
  83374. if (move == "left") {
  83375. luckysheetDeleteCell("moveLeft", str, edr, stc, edc, order);
  83376. } else if (move == "up") {
  83377. luckysheetDeleteCell("moveUp", str, edr, stc, edc, order);
  83378. }
  83379. if (success && typeof success === "function") {
  83380. success();
  83381. }
  83382. }
  83383. function matrixOperation(type, options = {}) {
  83384. let typeValues = [
  83385. "flipUpDown",
  83386. "flipLeftRight",
  83387. "flipClockwise",
  83388. "flipCounterClockwise",
  83389. "transpose",
  83390. "deleteZeroByRow",
  83391. "deleteZeroByColumn",
  83392. "removeDuplicateByRow",
  83393. "removeDuplicateByColumn",
  83394. "newMatrix"
  83395. ];
  83396. if (!type || typeValues.indexOf(type) < 0) {
  83397. return tooltip_default.info("The type parameter is invalid.", "");
  83398. }
  83399. let curRange = store_default.luckysheet_select_save[0];
  83400. let {
  83401. range: range2 = curRange,
  83402. success
  83403. } = __spreadValues({}, options);
  83404. if (range2 instanceof Array && range2.length > 1) {
  83405. tooltip_default.info(locale_default().drag.noMulti, "");
  83406. return;
  83407. }
  83408. if (range2 && typeof range2 === "string" && formula_default.iscelldata(range2)) {
  83409. range2 = formula_default.getcellrange(range2);
  83410. }
  83411. let getdata = getdatabyselection(range2);
  83412. let arr = [];
  83413. if (getdata.length === 0) {
  83414. return;
  83415. }
  83416. let getdatalen, collen, arr1;
  83417. switch (type) {
  83418. case "flipUpDown":
  83419. for (let r2 = getdata.length - 1; r2 >= 0; r2--) {
  83420. let a = [];
  83421. for (let c2 = 0; c2 < getdata[0].length; c2++) {
  83422. let value = "";
  83423. if (getdata[r2] != null && getdata[r2][c2] != null) {
  83424. value = getdata[r2][c2];
  83425. }
  83426. a.push(value);
  83427. }
  83428. arr.push(a);
  83429. }
  83430. break;
  83431. case "flipLeftRight":
  83432. for (let r2 = 0; r2 < getdata.length; r2++) {
  83433. let a = [];
  83434. for (let c2 = getdata[0].length - 1; c2 >= 0; c2--) {
  83435. let value = "";
  83436. if (getdata[r2] != null && getdata[r2][c2] != null) {
  83437. value = getdata[r2][c2];
  83438. }
  83439. a.push(value);
  83440. }
  83441. arr.push(a);
  83442. }
  83443. break;
  83444. case "flipClockwise":
  83445. for (let c2 = 0; c2 < getdata[0].length; c2++) {
  83446. let a = [];
  83447. for (let r2 = getdata.length - 1; r2 >= 0; r2--) {
  83448. let value = "";
  83449. if (getdata[r2] != null && getdata[r2][c2] != null) {
  83450. value = getdata[r2][c2];
  83451. }
  83452. a.push(value);
  83453. }
  83454. arr.push(a);
  83455. }
  83456. break;
  83457. case "flipCounterClockwise":
  83458. for (let c2 = getdata[0].length - 1; c2 >= 0; c2--) {
  83459. let a = [];
  83460. for (let r2 = 0; r2 < getdata.length; r2++) {
  83461. let value = "";
  83462. if (getdata[r2] != null && getdata[r2][c2] != null) {
  83463. value = getdata[r2][c2];
  83464. }
  83465. a.push(value);
  83466. }
  83467. arr.push(a);
  83468. }
  83469. break;
  83470. case "transpose":
  83471. for (let c2 = 0; c2 < getdata[0].length; c2++) {
  83472. let a = [];
  83473. for (let r2 = 0; r2 < getdata.length; r2++) {
  83474. let value = "";
  83475. if (getdata[r2] != null && getdata[r2][c2] != null) {
  83476. value = getdata[r2][c2];
  83477. }
  83478. a.push(value);
  83479. }
  83480. arr.push(a);
  83481. }
  83482. break;
  83483. case "deleteZeroByRow":
  83484. getdatalen = getdata[0].length;
  83485. for (let r2 = 0; r2 < getdata.length; r2++) {
  83486. let a = [], stdel = true, eddel = true;
  83487. for (let c2 = 0; c2 < getdatalen; c2++) {
  83488. let value = "";
  83489. if (getdata[r2] != null && getdata[r2][c2] != null) {
  83490. value = getdata[r2][c2];
  83491. if ((value.v == "0" || value.v == 0) && stdel) {
  83492. continue;
  83493. } else {
  83494. stdel = false;
  83495. }
  83496. }
  83497. a.push(value);
  83498. }
  83499. let a12 = [];
  83500. if (a.length == getdatalen) {
  83501. a12 = a;
  83502. } else {
  83503. for (let c2 = a.length - 1; c2 >= 0; c2--) {
  83504. let value = "";
  83505. if (a[c2] != null) {
  83506. value = a[c2];
  83507. if ((value.v == "0" || value.v == 0) && eddel) {
  83508. continue;
  83509. } else {
  83510. eddel = false;
  83511. }
  83512. }
  83513. a12.unshift(value);
  83514. }
  83515. let l = getdatalen - a12.length;
  83516. for (let c1 = 0; c1 < l; c1++) {
  83517. a12.push("");
  83518. }
  83519. }
  83520. arr.push(a12);
  83521. }
  83522. break;
  83523. case "deleteZeroByColumn":
  83524. getdatalen = getdata.length;
  83525. collen = getdata[0].length;
  83526. for (let c2 = 0; c2 < collen; c2++) {
  83527. let a = [], stdel = true, eddel = true;
  83528. for (let r2 = 0; r2 < getdatalen; r2++) {
  83529. let value = "";
  83530. if (getdata[r2] != null && getdata[r2][c2] != null) {
  83531. value = getdata[r2][c2];
  83532. if ((value.v == "0" || value.v == 0) && stdel) {
  83533. continue;
  83534. } else {
  83535. stdel = false;
  83536. }
  83537. }
  83538. a.push(value);
  83539. }
  83540. let a12 = [];
  83541. if (a.length == getdatalen) {
  83542. a12 = a;
  83543. } else {
  83544. for (let r2 = a.length - 1; r2 >= 0; r2--) {
  83545. let value = "";
  83546. if (a[r2] != null) {
  83547. value = a[r2];
  83548. if ((value.v == "0" || value.v == 0) && eddel) {
  83549. continue;
  83550. } else {
  83551. eddel = false;
  83552. }
  83553. }
  83554. a12.unshift(value);
  83555. }
  83556. let l = getdatalen - a12.length;
  83557. for (let r1 = 0; r1 < l; r1++) {
  83558. a12.push("");
  83559. }
  83560. }
  83561. arr.push(a12);
  83562. }
  83563. arr1 = [];
  83564. for (let c2 = 0; c2 < arr[0].length; c2++) {
  83565. let a = [];
  83566. for (let r2 = 0; r2 < arr.length; r2++) {
  83567. let value = "";
  83568. if (arr[r2] != null && arr[r2][c2] != null) {
  83569. value = arr[r2][c2];
  83570. }
  83571. a.push(value);
  83572. }
  83573. arr1.push(a);
  83574. }
  83575. break;
  83576. case "removeDuplicateByRow":
  83577. getdatalen = getdata[0].length;
  83578. for (let r2 = 0; r2 < getdata.length; r2++) {
  83579. let a = [], repeat = {};
  83580. for (let c2 = 0; c2 < getdatalen; c2++) {
  83581. let value = null;
  83582. if (getdata[r2] != null && getdata[r2][c2] != null) {
  83583. value = getdata[r2][c2];
  83584. if (value.v in repeat) {
  83585. repeat[value.v].push(value);
  83586. } else {
  83587. repeat[value.v] = [];
  83588. repeat[value.v].push(value);
  83589. }
  83590. }
  83591. }
  83592. for (let c2 = 0; c2 < getdatalen; c2++) {
  83593. let value = null;
  83594. if (getdata[r2] != null && getdata[r2][c2] != null) {
  83595. value = getdata[r2][c2];
  83596. if (repeat[value.v].length == 1) {
  83597. a.push(value);
  83598. }
  83599. }
  83600. }
  83601. let l = getdatalen - a.length;
  83602. for (let c1 = 0; c1 < l; c1++) {
  83603. a.push(null);
  83604. }
  83605. arr.push(a);
  83606. }
  83607. break;
  83608. case "removeDuplicateByColumn":
  83609. collen = getdata[0].length;
  83610. getdatalen = getdata.length;
  83611. for (let c2 = 0; c2 < collen; c2++) {
  83612. let a = [], repeat = {};
  83613. for (let r2 = 0; r2 < getdatalen; r2++) {
  83614. let value = null;
  83615. if (getdata[r2] != null && getdata[r2][c2] != null) {
  83616. value = getdata[r2][c2];
  83617. if (value.v in repeat) {
  83618. repeat[value.v].push(value);
  83619. } else {
  83620. repeat[value.v] = [];
  83621. repeat[value.v].push(value);
  83622. }
  83623. }
  83624. }
  83625. for (let r2 = 0; r2 < getdatalen; r2++) {
  83626. let value = null;
  83627. if (getdata[r2] != null && getdata[r2][c2] != null) {
  83628. value = getdata[r2][c2];
  83629. if (repeat[value.v].length == 1) {
  83630. a.push(value);
  83631. }
  83632. }
  83633. }
  83634. a1 = a;
  83635. let l = getdatalen - a1.length;
  83636. for (let r1 = 0; r1 < l; r1++) {
  83637. a1.push(null);
  83638. }
  83639. arr.push(a1);
  83640. }
  83641. arr1 = [];
  83642. for (let c2 = 0; c2 < arr[0].length; c2++) {
  83643. let a = [];
  83644. for (let r2 = 0; r2 < arr.length; r2++) {
  83645. let value = null;
  83646. if (arr[r2] != null && arr[r2][c2] != null) {
  83647. value = arr[r2][c2];
  83648. }
  83649. a.push(value);
  83650. }
  83651. arr1.push(a);
  83652. }
  83653. break;
  83654. case "newMatrix":
  83655. console.log("TODO");
  83656. break;
  83657. }
  83658. editor_default.controlHandler(arr, range2);
  83659. if (success && typeof success === "function") {
  83660. success();
  83661. }
  83662. }
  83663. function matrixCalculation(type, number, options = {}) {
  83664. let typeValues = [
  83665. "plus",
  83666. "minus",
  83667. "multiply",
  83668. "divided",
  83669. "power",
  83670. "root",
  83671. "log"
  83672. ];
  83673. if (!type || typeValues.indexOf(type) < 0) {
  83674. return tooltip_default.info("The type parameter is invalid.", "");
  83675. }
  83676. if (!isRealNum(number)) {
  83677. return tooltip_default.info("The number parameter is invalid.", "");
  83678. }
  83679. let curRange = store_default.luckysheet_select_save[0];
  83680. let {
  83681. range: range2 = curRange,
  83682. success
  83683. } = __spreadValues({}, options);
  83684. if (range2 instanceof Array && range2.length > 1) {
  83685. tooltip_default.info(locale_default().drag.noMulti, "");
  83686. return;
  83687. }
  83688. if (range2 && typeof range2 === "string" && formula_default.iscelldata(range2)) {
  83689. range2 = formula_default.getcellrange(range2);
  83690. }
  83691. let getdata = getdatabyselection(range2);
  83692. if (getdata.length == 0) {
  83693. return;
  83694. }
  83695. let arr = [];
  83696. for (let r2 = 0; r2 < getdata.length; r2++) {
  83697. let a = [];
  83698. for (let c2 = 0; c2 < getdata[0].length; c2++) {
  83699. let value = "";
  83700. if (getdata[r2] != null && getdata[r2][c2] != null) {
  83701. value = getdata[r2][c2];
  83702. if (parseInt(value) != null && getdata[r2][c2].ct != void 0 && getdata[r2][c2].ct.t == "n") {
  83703. if (type == "minus") {
  83704. value.v = value.v - number;
  83705. } else if (type == "multiply") {
  83706. value.v = value.v * number;
  83707. } else if (type == "divided") {
  83708. value.v = numFormat(value.v / number, 4);
  83709. } else if (type == "power") {
  83710. value.v = Math.pow(value.v, number);
  83711. } else if (type == "root") {
  83712. if (number == 2) {
  83713. value.v = numFormat(Math.sqrt(value.v), 4);
  83714. } else if (number == 3 && Math.cbrt) {
  83715. value.v = numFormat(Math.cbrt(value.v), 4);
  83716. } else {
  83717. value.v = numFormat(jfnqrt(value.v, number), 4);
  83718. }
  83719. } else if (type == "log") {
  83720. value.v = numFormat(Math.log(value.v) * 1e4 / Math.log(Math.abs(number)), 4);
  83721. } else {
  83722. value.v = value.v + number;
  83723. }
  83724. if (value.v == null) {
  83725. value.m = "";
  83726. } else {
  83727. value.m = value.v.toString();
  83728. }
  83729. }
  83730. }
  83731. a.push(value);
  83732. }
  83733. arr.push(a);
  83734. }
  83735. editor_default.controlHandler(arr, range2);
  83736. if (success && typeof success === "function") {
  83737. success();
  83738. }
  83739. }
  83740. function setSheetAdd(options = {}) {
  83741. let lastOrder = store_default.luckysheetfile.length - 1;
  83742. let {
  83743. sheetObject = {},
  83744. order = lastOrder,
  83745. success
  83746. } = __spreadValues({}, options);
  83747. if (!isRealNum(order)) {
  83748. return tooltip_default.info("Parameter is not a table index", "");
  83749. }
  83750. order = Number(order);
  83751. let index2 = sheetmanage_default.generateRandomSheetIndex();
  83752. if (sheetObject.calcChain && sheetObject.calcChain.length > 0) {
  83753. sheetObject.calcChain.forEach((item2) => {
  83754. item2.index = index2;
  83755. });
  83756. }
  83757. let sheetname = sheetmanage_default.generateRandomSheetName(store_default.luckysheetfile, false);
  83758. if (!!sheetObject.name) {
  83759. let sameName = false;
  83760. for (let i2 = 0; i2 < store_default.luckysheetfile.length; i2++) {
  83761. if (store_default.luckysheetfile[i2].name == sheetObject.name) {
  83762. sameName = true;
  83763. break;
  83764. }
  83765. }
  83766. if (!sameName) {
  83767. sheetname = sheetObject.name;
  83768. }
  83769. }
  83770. $("#luckysheet-sheet-container-c").append(replaceHtml(sheetHTML, {
  83771. "index": index2,
  83772. "active": "",
  83773. "name": sheetname,
  83774. "style": "",
  83775. "colorset": ""
  83776. }));
  83777. let sheetconfig = {
  83778. "name": "",
  83779. "color": "",
  83780. "status": "0",
  83781. "order": "",
  83782. "index": "",
  83783. "celldata": [],
  83784. "row": store_default.defaultrowNum,
  83785. "column": store_default.defaultcolumnNum,
  83786. "config": {},
  83787. "pivotTable": null,
  83788. "isPivotTable": false
  83789. };
  83790. sheetconfig = $.extend(true, sheetconfig, sheetObject);
  83791. sheetconfig.index = index2;
  83792. sheetconfig.name = sheetname;
  83793. sheetconfig.order = order;
  83794. if (order <= 0) {
  83795. let beforeIndex = store_default.luckysheetfile[0].index;
  83796. let beforeObj = $("#luckysheet-sheets-item" + beforeIndex);
  83797. $("#luckysheet-sheets-item" + index2).insertBefore(beforeObj);
  83798. store_default.luckysheetfile.splice(0, 0, sheetconfig);
  83799. } else {
  83800. if (order > store_default.luckysheetfile.length) {
  83801. order = store_default.luckysheetfile.length;
  83802. }
  83803. let afterIndex = store_default.luckysheetfile[order - 1].index;
  83804. let afterObj = $("#luckysheet-sheets-item" + afterIndex);
  83805. $("#luckysheet-sheets-item" + index2).insertAfter(afterObj);
  83806. store_default.luckysheetfile.splice(order, 0, sheetconfig);
  83807. }
  83808. let orders = {};
  83809. store_default.luckysheetfile.forEach((item2, i2, arr) => {
  83810. arr[i2].order = i2;
  83811. orders[item2.index.toString()] = i2;
  83812. });
  83813. $("#luckysheet-sheet-area div.luckysheet-sheets-item").removeClass("luckysheet-sheets-item-active");
  83814. $("#luckysheet-sheets-item" + index2).addClass("luckysheet-sheets-item-active");
  83815. $("#luckysheet-cell-main").append('<div id="luckysheet-datavisual-selection-set-' + index2 + '" class="luckysheet-datavisual-selection-set"></div>');
  83816. cleargridelement(true);
  83817. server_default.saveParam("sha", null, $.extend(true, {}, sheetconfig));
  83818. server_default.saveParam("shr", null, orders);
  83819. if (store_default.clearjfundo) {
  83820. store_default.jfundo.length = 0;
  83821. let redo2 = {};
  83822. redo2["type"] = "addSheet";
  83823. redo2["sheetconfig"] = $.extend(true, {}, sheetconfig);
  83824. redo2["index"] = index2;
  83825. redo2["currentSheetIndex"] = store_default.currentSheetIndex;
  83826. store_default.jfredo.push(redo2);
  83827. }
  83828. sheetmanage_default.changeSheetExec(index2, false, true);
  83829. if (success && typeof success === "function") {
  83830. success();
  83831. }
  83832. return sheetconfig;
  83833. }
  83834. function setSheetDelete(options = {}) {
  83835. let {
  83836. order = getSheetIndex(store_default.currentSheetIndex),
  83837. success
  83838. } = __spreadValues({}, options);
  83839. let file = store_default.luckysheetfile[order];
  83840. if (file == null) {
  83841. return tooltip_default.info("The order parameter is invalid.", "");
  83842. }
  83843. if (store_default.luckysheetfile.length === 1) {
  83844. return tooltip_default.info(locale_default().sheetconfig.noMoreSheet, "");
  83845. }
  83846. sheetmanage_default.deleteSheet(file.index);
  83847. setTimeout(() => {
  83848. if (success && typeof success === "function") {
  83849. success();
  83850. }
  83851. }, 1);
  83852. return file;
  83853. }
  83854. function setSheetCopy(options = {}) {
  83855. let {
  83856. targetOrder,
  83857. order = getSheetIndex(store_default.currentSheetIndex),
  83858. success
  83859. } = __spreadValues({}, options);
  83860. let file = store_default.luckysheetfile[order];
  83861. if (file == null) {
  83862. return tooltip_default.info("The order parameter is invalid.", "");
  83863. }
  83864. if (targetOrder == null) {
  83865. targetOrder = order + 1;
  83866. }
  83867. if (!isRealNum(targetOrder)) {
  83868. return tooltip_default.info("The targetOrder parameter is invalid.", "");
  83869. }
  83870. let copyindex = file.index;
  83871. let index2 = sheetmanage_default.generateRandomSheetIndex();
  83872. let copyjson = $.extend(true, {}, file);
  83873. copyjson.order = store_default.luckysheetfile.length;
  83874. copyjson.index = index2;
  83875. copyjson.name = sheetmanage_default.generateCopySheetName(store_default.luckysheetfile, copyjson.name);
  83876. let colorset = "";
  83877. if (copyjson.color != null) {
  83878. colorset = '<div class="luckysheet-sheets-item-color" style=" position: absolute; width: 100%; height: 3px; bottom: 0px; left: 0px; background-color: ' + copyjson.color + ';"></div>';
  83879. }
  83880. let afterObj = $("#luckysheet-sheets-item" + copyindex);
  83881. if (isRealNum(targetOrder)) {
  83882. afterObj = $("#luckysheet-sheets-item" + store_default.luckysheetfile[targetOrder - 1].index);
  83883. }
  83884. $("#luckysheet-sheet-container-c").append(replaceHtml(sheetHTML, {
  83885. "index": copyjson.index,
  83886. "active": "",
  83887. "name": copyjson.name,
  83888. "order": copyjson.order,
  83889. "style": "",
  83890. "colorset": colorset
  83891. }));
  83892. $("#luckysheet-sheets-item" + copyjson.index).insertAfter(afterObj);
  83893. store_default.luckysheetfile.splice(targetOrder, 0, copyjson);
  83894. $("#luckysheet-sheet-area div.luckysheet-sheets-item").removeClass("luckysheet-sheets-item-active");
  83895. $("#luckysheet-sheets-item" + index2).addClass("luckysheet-sheets-item-active");
  83896. $("#luckysheet-cell-main").append('<div id="luckysheet-datavisual-selection-set-' + index2 + '" class="luckysheet-datavisual-selection-set"></div>');
  83897. cleargridelement(true);
  83898. server_default.saveParam("shc", index2, {"copyindex": copyindex, "name": copyjson.name});
  83899. sheetmanage_default.changeSheetExec(index2);
  83900. sheetmanage_default.reOrderAllSheet();
  83901. if (store_default.clearjfundo) {
  83902. store_default.jfredo.push({
  83903. "type": "copySheet",
  83904. "copyindex": copyindex,
  83905. "index": copyjson.index,
  83906. "sheetIndex": copyjson.index
  83907. });
  83908. } else if (store_default.jfredo.length > 0) {
  83909. let jfredostr = store_default.jfredo[store_default.jfredo.length - 1];
  83910. if (jfredostr.type == "copySheet") {
  83911. jfredostr.index = copyjson.index;
  83912. jfredostr.sheetIndex = copyjson.index;
  83913. }
  83914. }
  83915. setTimeout(() => {
  83916. if (success && typeof success === "function") {
  83917. success();
  83918. }
  83919. }, 1);
  83920. return copyjson;
  83921. }
  83922. function setSheetHide(options = {}) {
  83923. let {
  83924. order = getSheetIndex(store_default.currentSheetIndex),
  83925. success
  83926. } = __spreadValues({}, options);
  83927. let file = store_default.luckysheetfile[order];
  83928. if (file == null) {
  83929. return tooltip_default.info("The order parameter is invalid.", "");
  83930. }
  83931. sheetmanage_default.setSheetHide(file.index);
  83932. setTimeout(() => {
  83933. if (success && typeof success === "function") {
  83934. success();
  83935. }
  83936. }, 1);
  83937. return file;
  83938. }
  83939. function setSheetShow(options = {}) {
  83940. let {
  83941. order = getSheetIndex(store_default.currentSheetIndex),
  83942. success
  83943. } = __spreadValues({}, options);
  83944. let file = store_default.luckysheetfile[order];
  83945. if (file == null) {
  83946. return tooltip_default.info("The order parameter is invalid.", "");
  83947. }
  83948. sheetmanage_default.setSheetShow(file.index);
  83949. setTimeout(() => {
  83950. if (success && typeof success === "function") {
  83951. success();
  83952. }
  83953. }, 1);
  83954. return file;
  83955. }
  83956. function setSheetActive(order, options = {}) {
  83957. if (order == null || !isRealNum(order) || store_default.luckysheetfile[order] == null) {
  83958. return tooltip_default.info("The order parameter is invalid.", "");
  83959. }
  83960. let file = store_default.luckysheetfile[order];
  83961. let {
  83962. success
  83963. } = __spreadValues({}, options);
  83964. $("#luckysheet-sheet-area div.luckysheet-sheets-item").removeClass("luckysheet-sheets-item-active");
  83965. $("#luckysheet-sheets-item" + file.index).addClass("luckysheet-sheets-item-active");
  83966. sheetmanage_default.changeSheet(file.index);
  83967. setTimeout(() => {
  83968. if (success && typeof success === "function") {
  83969. success();
  83970. }
  83971. }, 1);
  83972. server_default.multipleRangeShow();
  83973. return file;
  83974. }
  83975. function setSheetName(name2, options = {}) {
  83976. if (getObjType(name2) != "string" || name2.toString().length == 0) {
  83977. return tooltip_default.info("The name parameter is invalid.", "");
  83978. }
  83979. let {
  83980. order = getSheetIndex(store_default.currentSheetIndex),
  83981. success
  83982. } = __spreadValues({}, options);
  83983. let file = store_default.luckysheetfile[order];
  83984. if (file == null) {
  83985. return tooltip_default.info("The order parameter is invalid.", "");
  83986. }
  83987. let oldtxt = file.name;
  83988. file.name = name2;
  83989. $("#luckysheet-sheets-item" + file.index + " .luckysheet-sheets-item-name").text(name2);
  83990. server_default.saveParam("all", file.index, name2, {"k": "name"});
  83991. if (store_default.clearjfundo) {
  83992. let redo2 = {};
  83993. redo2["type"] = "sheetName";
  83994. redo2["sheetIndex"] = file.index;
  83995. redo2["oldtxt"] = oldtxt;
  83996. redo2["txt"] = name2;
  83997. store_default.jfundo.length = 0;
  83998. store_default.jfredo.push(redo2);
  83999. }
  84000. if (success && typeof success === "function") {
  84001. success();
  84002. }
  84003. }
  84004. function setSheetColor(color, options = {}) {
  84005. if (getObjType(color) != "string" || color.toString().length == 0) {
  84006. return tooltip_default.info("The color parameter is invalid.", "");
  84007. }
  84008. let {
  84009. order = getSheetIndex(store_default.currentSheetIndex),
  84010. success
  84011. } = __spreadValues({}, options);
  84012. let file = store_default.luckysheetfile[order];
  84013. if (file == null) {
  84014. return tooltip_default.info("The order parameter is invalid.", "");
  84015. }
  84016. let oldcolor = file.color;
  84017. file.color = color;
  84018. $("#luckysheet-sheets-item" + file.index).find(".luckysheet-sheets-item-color").remove();
  84019. $("#luckysheet-sheets-item" + file.index).append('<div class="luckysheet-sheets-item-color" style=" position: absolute; width: 100%; height: 3px; bottom: 0px; left: 0px; background-color: ' + color + ';"></div>');
  84020. server_default.saveParam("all", file.index, color, {"k": "color"});
  84021. if (store_default.clearjfundo) {
  84022. let redo2 = {};
  84023. redo2["type"] = "sheetColor";
  84024. redo2["sheetIndex"] = file.index;
  84025. redo2["oldcolor"] = oldcolor;
  84026. redo2["color"] = color;
  84027. store_default.jfundo.length = 0;
  84028. store_default.jfredo.push(redo2);
  84029. }
  84030. if (success && typeof success === "function") {
  84031. success();
  84032. }
  84033. }
  84034. function setSheetMove(type, options = {}) {
  84035. if (type != "left" && type != "right" && !isRealNum(type)) {
  84036. return tooltip_default.info("Type parameter not available", "");
  84037. }
  84038. if (isRealNum(type)) {
  84039. type = parseInt(type);
  84040. }
  84041. let curOrder = getSheetIndex(store_default.currentSheetIndex);
  84042. let {
  84043. order = curOrder,
  84044. success
  84045. } = __spreadValues({}, options);
  84046. let file = store_default.luckysheetfile[order];
  84047. if (file == null) {
  84048. return tooltip_default.info("ncorrect worksheet index", "");
  84049. }
  84050. let sheetIndex = file.index;
  84051. if (type == "left") {
  84052. if (order == 0) {
  84053. return;
  84054. }
  84055. let prevIndex = store_default.luckysheetfile[order - 1].index;
  84056. $("#luckysheet-sheets-item" + sheetIndex).insertBefore($("#luckysheet-sheets-item" + prevIndex));
  84057. store_default.luckysheetfile.splice(order, 1);
  84058. store_default.luckysheetfile.splice(order - 1, 0, file);
  84059. } else if (type == "right") {
  84060. if (order == store_default.luckysheetfile.length - 1) {
  84061. return;
  84062. }
  84063. let nextIndex = store_default.luckysheetfile[order + 1].index;
  84064. $("#luckysheet-sheets-item" + sheetIndex).insertAfter($("#luckysheet-sheets-item" + nextIndex));
  84065. store_default.luckysheetfile.splice(order, 1);
  84066. store_default.luckysheetfile.splice(order + 1, 0, file);
  84067. } else {
  84068. if (type < 0) {
  84069. type = 0;
  84070. }
  84071. if (type > store_default.luckysheetfile.length - 1) {
  84072. type = store_default.luckysheetfile.length - 1;
  84073. }
  84074. if (type == order) {
  84075. return;
  84076. }
  84077. if (type < order) {
  84078. let prevIndex = store_default.luckysheetfile[type].index;
  84079. $("#luckysheet-sheets-item" + sheetIndex).insertBefore($("#luckysheet-sheets-item" + prevIndex));
  84080. } else {
  84081. let nextIndex = store_default.luckysheetfile[type].index;
  84082. $("#luckysheet-sheets-item" + sheetIndex).insertAfter($("#luckysheet-sheets-item" + nextIndex));
  84083. }
  84084. store_default.luckysheetfile.splice(order, 1);
  84085. store_default.luckysheetfile.splice(type, 0, file);
  84086. }
  84087. let orders = {};
  84088. store_default.luckysheetfile.forEach((item2, i2, arr) => {
  84089. arr[i2].order = i2;
  84090. orders[item2.index.toString()] = i2;
  84091. });
  84092. server_default.saveParam("shr", null, orders);
  84093. if (success && typeof success === "function") {
  84094. success();
  84095. }
  84096. }
  84097. function setSheetOrder(orderList, options = {}) {
  84098. if (orderList == null || orderList.length == 0) {
  84099. return tooltip_default.info("Type orderList not available", "");
  84100. }
  84101. let orderListMap = {};
  84102. orderList.forEach((item2) => {
  84103. orderListMap[item2.index.toString()] = item2.order;
  84104. });
  84105. store_default.luckysheetfile.sort((x, y) => {
  84106. let order_x = orderListMap[x.index.toString()];
  84107. let order_y = orderListMap[y.index.toString()];
  84108. if (order_x != null && order_y != null) {
  84109. return order_x - order_y;
  84110. } else if (order_x != null) {
  84111. return -1;
  84112. } else if (order_y != null) {
  84113. return 1;
  84114. } else {
  84115. return 1;
  84116. }
  84117. });
  84118. let orders = {};
  84119. store_default.luckysheetfile.forEach((item2, i2, arr) => {
  84120. arr[i2].order = i2;
  84121. orders[item2.index.toString()] = i2;
  84122. if (i2 > 0) {
  84123. let preIndex = arr[i2 - 1].index;
  84124. $("#luckysheet-sheets-item" + item2.index).insertAfter($("#luckysheet-sheets-item" + preIndex));
  84125. }
  84126. });
  84127. server_default.saveParam("shr", null, orders);
  84128. let {
  84129. success
  84130. } = __spreadValues({}, options);
  84131. if (success && typeof success === "function") {
  84132. success();
  84133. }
  84134. }
  84135. function setSheetZoom(zoom, options = {}) {
  84136. if (!isRealNum(zoom) || zoom < 0.1 || zoom > 4) {
  84137. return tooltip_default.info("The zoom parameter is invalid.", "");
  84138. }
  84139. let {
  84140. order = getSheetIndex(store_default.currentSheetIndex),
  84141. success
  84142. } = __spreadValues({}, options);
  84143. let file = store_default.luckysheetfile[order];
  84144. if (file == null) {
  84145. return tooltip_default.info("The order parameter is invalid.", "");
  84146. }
  84147. file["zoomRatio"] = zoom;
  84148. server_default.saveParam("all", file.index, zoom, {"k": "zoomRatio"});
  84149. if (file.index == store_default.currentSheetIndex) {
  84150. store_default.zoomRatio = zoom;
  84151. let currentSheet = sheetmanage_default.getSheetByIndex();
  84152. imageCtrl_default.images = currentSheet.images;
  84153. imageCtrl_default.allImagesShow();
  84154. imageCtrl_default.init();
  84155. zoomNumberDomBind();
  84156. zoomRefreshView();
  84157. }
  84158. if (success && typeof success === "function") {
  84159. success();
  84160. }
  84161. }
  84162. function showGridLines(options = {}) {
  84163. let {
  84164. order = getSheetIndex(store_default.currentSheetIndex),
  84165. success
  84166. } = __spreadValues({}, options);
  84167. let file = store_default.luckysheetfile[order];
  84168. if (file == null) {
  84169. return tooltip_default.info("The order parameter is invalid.", "");
  84170. }
  84171. file.showGridLines = true;
  84172. if (file.index == store_default.currentSheetIndex) {
  84173. store_default.showGridLines = true;
  84174. setTimeout(function() {
  84175. luckysheetrefreshgrid();
  84176. }, 1);
  84177. }
  84178. setTimeout(() => {
  84179. if (success && typeof success === "function") {
  84180. success();
  84181. }
  84182. }, 1);
  84183. return file;
  84184. }
  84185. function hideGridLines(options = {}) {
  84186. let {
  84187. order = getSheetIndex(store_default.currentSheetIndex),
  84188. success
  84189. } = __spreadValues({}, options);
  84190. let file = store_default.luckysheetfile[order];
  84191. if (file == null) {
  84192. return tooltip_default.info("The order parameter is invalid.", "");
  84193. }
  84194. file.showGridLines = false;
  84195. if (file.index == store_default.currentSheetIndex) {
  84196. store_default.showGridLines = false;
  84197. setTimeout(function() {
  84198. luckysheetrefreshgrid();
  84199. }, 1);
  84200. }
  84201. setTimeout(() => {
  84202. if (success && typeof success === "function") {
  84203. success();
  84204. }
  84205. }, 1);
  84206. return file;
  84207. }
  84208. function refresh(options = {}) {
  84209. jfrefreshgrid();
  84210. let {
  84211. success
  84212. } = __spreadValues({}, options);
  84213. if (success && typeof success === "function") {
  84214. success();
  84215. }
  84216. }
  84217. function scroll(options = {}) {
  84218. let {
  84219. scrollLeft,
  84220. scrollTop,
  84221. targetRow,
  84222. targetColumn,
  84223. success
  84224. } = __spreadValues({}, options);
  84225. if (scrollLeft != null) {
  84226. if (!isRealNum(scrollLeft)) {
  84227. return tooltip_default.info("The scrollLeft parameter is invalid.", "");
  84228. }
  84229. $("#luckysheet-scrollbar-x").scrollLeft(scrollLeft);
  84230. } else if (targetColumn != null) {
  84231. if (!isRealNum(targetColumn)) {
  84232. return tooltip_default.info("The targetColumn parameter is invalid.", "");
  84233. }
  84234. let col = store_default.visibledatacolumn[targetColumn], col_pre = targetColumn <= 0 ? 0 : store_default.visibledatacolumn[targetColumn - 1];
  84235. $("#luckysheet-scrollbar-x").scrollLeft(col_pre);
  84236. }
  84237. if (scrollTop != null) {
  84238. if (!isRealNum(scrollTop)) {
  84239. return tooltip_default.info("The scrollTop parameter is invalid.", "");
  84240. }
  84241. $("#luckysheet-scrollbar-y").scrollTop(scrollTop);
  84242. } else if (targetRow != null) {
  84243. if (!isRealNum(targetRow)) {
  84244. return tooltip_default.info("The targetRow parameter is invalid.", "");
  84245. }
  84246. let row = store_default.visibledatarow[targetRow], row_pre = targetRow <= 0 ? 0 : store_default.visibledatarow[targetRow - 1];
  84247. $("#luckysheet-scrollbar-y").scrollTop(row_pre);
  84248. }
  84249. if (success && typeof success === "function") {
  84250. success();
  84251. }
  84252. }
  84253. function resize(options = {}) {
  84254. luckysheetsizeauto();
  84255. let {
  84256. success
  84257. } = __spreadValues({}, options);
  84258. if (success && typeof success === "function") {
  84259. success();
  84260. }
  84261. }
  84262. function getScreenshot(options = {}) {
  84263. let {
  84264. range: range2 = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1]
  84265. } = __spreadValues({}, options);
  84266. if (getObjType(range2) == "string") {
  84267. if (!formula_default.iscelldata(range2)) {
  84268. return tooltip_default.info("The range parameter is invalid.", "");
  84269. }
  84270. let cellrange = formula_default.getcellrange(range2);
  84271. range2 = {
  84272. "row": cellrange.row,
  84273. "column": cellrange.column
  84274. };
  84275. }
  84276. if (getObjType(range2) != "object" || range2.row == null || range2.column == null) {
  84277. return tooltip_default.info("The range parameter is invalid.", "");
  84278. }
  84279. let str = range2.row[0], edr = range2.row[1], stc = range2.column[0], edc = range2.column[1];
  84280. let has_PartMC = hasPartMC(store_default.config, str, edr, stc, edc);
  84281. if (has_PartMC) {
  84282. return tooltip_default.info("Cannot perform this operation on partially merged cells", "");
  84283. }
  84284. let visibledatarow = store_default.visibledatarow;
  84285. let visibledatacolumn = store_default.visibledatacolumn;
  84286. let scrollHeight, rh_height;
  84287. if (str - 1 < 0) {
  84288. scrollHeight = 0;
  84289. rh_height = visibledatarow[edr];
  84290. } else {
  84291. scrollHeight = visibledatarow[str - 1];
  84292. rh_height = visibledatarow[edr] - visibledatarow[str - 1];
  84293. }
  84294. let scrollWidth, ch_width;
  84295. if (stc - 1 < 0) {
  84296. scrollWidth = 0;
  84297. ch_width = visibledatacolumn[edc];
  84298. } else {
  84299. scrollWidth = visibledatacolumn[stc - 1];
  84300. ch_width = visibledatacolumn[edc] - visibledatacolumn[stc - 1];
  84301. }
  84302. let newCanvas = $("<canvas>").attr({
  84303. width: Math.ceil(ch_width * store_default.devicePixelRatio),
  84304. height: Math.ceil(rh_height * store_default.devicePixelRatio)
  84305. }).css({width: ch_width, height: rh_height});
  84306. luckysheetDrawMain(scrollWidth, scrollHeight, ch_width, rh_height, 1, 1, null, null, newCanvas);
  84307. let ctx_newCanvas = newCanvas.get(0).getContext("2d");
  84308. ctx_newCanvas.beginPath();
  84309. ctx_newCanvas.moveTo(0, 0);
  84310. ctx_newCanvas.lineTo(0, store_default.devicePixelRatio * rh_height);
  84311. ctx_newCanvas.lineWidth = store_default.devicePixelRatio * 2;
  84312. ctx_newCanvas.strokeStyle = luckysheetdefaultstyle.strokeStyle;
  84313. ctx_newCanvas.stroke();
  84314. ctx_newCanvas.closePath();
  84315. ctx_newCanvas.beginPath();
  84316. ctx_newCanvas.moveTo(0, 0);
  84317. ctx_newCanvas.lineTo(store_default.devicePixelRatio * ch_width, 0);
  84318. ctx_newCanvas.lineWidth = store_default.devicePixelRatio * 2;
  84319. ctx_newCanvas.strokeStyle = luckysheetdefaultstyle.strokeStyle;
  84320. ctx_newCanvas.stroke();
  84321. ctx_newCanvas.closePath();
  84322. let url = newCanvas.get(0).toDataURL("image/png");
  84323. return url;
  84324. }
  84325. function setWorkbookName(name2, options = {}) {
  84326. if (name2 == null || name2.toString().length == 0) {
  84327. return tooltip_default.info("The name parameter is invalid.", "");
  84328. }
  84329. $("#luckysheet_info_detail_input").val(name2);
  84330. let {
  84331. success
  84332. } = __spreadValues({}, options);
  84333. if (success && typeof success === "function") {
  84334. success();
  84335. }
  84336. }
  84337. function getWorkbookName(options = {}) {
  84338. let name2 = "";
  84339. let element = $("#luckysheet_info_detail_input");
  84340. if (element.length == 0) {
  84341. tooltip_default.info("Failed to get workbook name, label loading failed!");
  84342. return name2;
  84343. }
  84344. name2 = $.trim(element.val());
  84345. let {
  84346. success
  84347. } = __spreadValues({}, options);
  84348. setTimeout(() => {
  84349. if (success && typeof success === "function") {
  84350. success();
  84351. }
  84352. }, 1);
  84353. return name2;
  84354. }
  84355. function undo(options = {}) {
  84356. let ctr = $.extend(true, {}, store_default.jfredo[store_default.jfredo.length - 1]);
  84357. controlHistory_default.redo(new Event("custom"));
  84358. luckysheetactiveCell();
  84359. let {
  84360. success
  84361. } = __spreadValues({}, options);
  84362. setTimeout(() => {
  84363. if (success && typeof success === "function") {
  84364. success();
  84365. }
  84366. }, 1);
  84367. return ctr;
  84368. }
  84369. function redo(options = {}) {
  84370. let ctr = $.extend(true, {}, store_default.jfundo[store_default.jfundo.length - 1]);
  84371. controlHistory_default.undo(new Event("custom"));
  84372. luckysheetactiveCell();
  84373. let {
  84374. success
  84375. } = __spreadValues({}, options);
  84376. setTimeout(() => {
  84377. if (success && typeof success === "function") {
  84378. success();
  84379. }
  84380. }, 1);
  84381. return ctr;
  84382. }
  84383. function getAllSheets() {
  84384. let data = $.extend(true, [], store_default.luckysheetfile);
  84385. data.forEach((item2, index2, arr) => {
  84386. if (item2.data != null && item2.data.length > 0) {
  84387. item2.celldata = sheetmanage_default.getGridData(item2.data);
  84388. }
  84389. delete item2.load;
  84390. delete item2.freezen;
  84391. });
  84392. return data;
  84393. }
  84394. function getSheet(options = {}) {
  84395. let {
  84396. index: index2,
  84397. order,
  84398. name: name2
  84399. } = __spreadValues({}, options);
  84400. if (index2 != null) {
  84401. return sheetmanage_default.getSheetByIndex(index2);
  84402. } else if (order != null) {
  84403. return store_default.luckysheetfile[order];
  84404. } else if (name2 != null) {
  84405. return sheetmanage_default.getSheetByName(name2);
  84406. }
  84407. return sheetmanage_default.getSheetByIndex();
  84408. }
  84409. function getSheetData(options = {}) {
  84410. let {
  84411. order = getSheetIndex(store_default.currentSheetIndex)
  84412. } = __spreadValues({}, options);
  84413. let file = store_default.luckysheetfile[order];
  84414. if (file == null) {
  84415. return tooltip_default.info("The order parameter is invalid.", "");
  84416. }
  84417. let data = $.extend(true, [], file.data);
  84418. if (data == null || data.length == 0) {
  84419. data = $.extend(true, [], sheetmanage_default.buildGridData(file));
  84420. }
  84421. return data;
  84422. }
  84423. function getConfig(options = {}) {
  84424. let {
  84425. order = getSheetIndex(store_default.currentSheetIndex)
  84426. } = __spreadValues({}, options);
  84427. let file = store_default.luckysheetfile[order];
  84428. if (file == null) {
  84429. return tooltip_default.info("The order parameter is invalid.", "");
  84430. }
  84431. let config = $.extend(true, {}, file.config);
  84432. return config;
  84433. }
  84434. function setConfig(cfg, options = {}) {
  84435. if (getObjType(cfg) != "object") {
  84436. return tooltip_default.info("The cfg parameter is invalid.", "");
  84437. }
  84438. let {
  84439. order = getSheetIndex(store_default.currentSheetIndex),
  84440. success
  84441. } = __spreadValues({}, options);
  84442. let file = store_default.luckysheetfile[order];
  84443. if (file == null) {
  84444. return tooltip_default.info("The order parameter is invalid.", "");
  84445. }
  84446. file.config = cfg;
  84447. if (file.index == store_default.currentSheetIndex) {
  84448. store_default.config = cfg;
  84449. if ("rowhidden" in cfg || "colhidden" in cfg || "rowlen" in cfg || "columnlen" in cfg) {
  84450. jfrefreshgrid_rhcw(store_default.flowdata.length, store_default.flowdata[0].length);
  84451. }
  84452. setTimeout(function() {
  84453. luckysheetrefreshgrid();
  84454. }, 1);
  84455. }
  84456. if (success && typeof success === "function") {
  84457. success();
  84458. }
  84459. }
  84460. function getLuckysheetfile() {
  84461. return getluckysheetfile();
  84462. }
  84463. function setDataVerification(optionItem, options = {}) {
  84464. if (getObjType(optionItem) != "object") {
  84465. return tooltip_default.info("The optionItem parameter is invalid.", "");
  84466. }
  84467. let {
  84468. type,
  84469. type2 = null,
  84470. value1 = "",
  84471. value2 = "",
  84472. remote = false,
  84473. prohibitInput = false,
  84474. hintShow = false,
  84475. hintText = "",
  84476. checked = false
  84477. } = __spreadValues({}, optionItem);
  84478. let typeValues = ["dropdown", "checkbox", "number", "number_integer", "number_decimal", "text_content", "text_length", "date", "validity"];
  84479. let type2Values_1 = ["bw", "nb", "eq", "ne", "gt", "lt", "gte", "lte"];
  84480. let type2Values_2 = ["include", "exclude", "equal"];
  84481. let type2Values_3 = ["bw", "nb", "eq", "ne", "bf", "nbf", "af", "naf"];
  84482. let type2Values_4 = ["card", "phone"];
  84483. if (!typeValues.includes(type)) {
  84484. return tooltip_default.info("The optionItem.type parameter is invalid.", "");
  84485. }
  84486. let dvText = locale_default().dataVerification;
  84487. if (type == "dropdown") {
  84488. if (value1.length == 0) {
  84489. tooltip_default.info('<i class="fa fa-exclamation-triangle"></i>', dvText.tooltipInfo1);
  84490. return;
  84491. }
  84492. } else if (type == "checkbox") {
  84493. if (value1.length == 0 || value2.length == 0) {
  84494. tooltip_default.info('<i class="fa fa-exclamation-triangle"></i>', dvText.tooltipInfo2);
  84495. return;
  84496. }
  84497. } else if (type == "number" || type == "number_integer" || type == "number_decimal") {
  84498. if (!type2Values_1.includes(type2)) {
  84499. return tooltip_default.info("The optionItem.type2 parameter is invalid.", "");
  84500. }
  84501. if (!isRealNum(value1)) {
  84502. tooltip_default.info('<i class="fa fa-exclamation-triangle"></i>', dvText.tooltipInfo3);
  84503. return;
  84504. }
  84505. if (type2 == "bw" || type2 == "nb") {
  84506. if (!isRealNum(value2)) {
  84507. tooltip_default.info('<i class="fa fa-exclamation-triangle"></i>', dvText.tooltipInfo3);
  84508. return;
  84509. }
  84510. if (Number(value2) < Number(value1)) {
  84511. tooltip_default.info('<i class="fa fa-exclamation-triangle"></i>', dvText.tooltipInfo4);
  84512. return;
  84513. }
  84514. }
  84515. } else if (type == "text_content") {
  84516. if (!type2Values_2.includes(type2)) {
  84517. return tooltip_default.info("The optionItem.type2 parameter is invalid.", "");
  84518. }
  84519. if (value1.length == 0) {
  84520. tooltip_default.info('<i class="fa fa-exclamation-triangle"></i>', dvText.tooltipInfo5);
  84521. return;
  84522. }
  84523. } else if (type == "text_length") {
  84524. if (!type2Values_1.includes(type2)) {
  84525. return tooltip_default.info("The optionItem.type2 parameter is invalid.", "");
  84526. }
  84527. if (!isRealNum(value1)) {
  84528. tooltip_default.info('<i class="fa fa-exclamation-triangle"></i>', dvText.tooltipInfo3);
  84529. return;
  84530. }
  84531. if (type2 == "bw" || type2 == "nb") {
  84532. if (!isRealNum(value2)) {
  84533. tooltip_default.info('<i class="fa fa-exclamation-triangle"></i>', dvText.tooltipInfo3);
  84534. return;
  84535. }
  84536. if (Number(value2) < Number(value1)) {
  84537. tooltip_default.info('<i class="fa fa-exclamation-triangle"></i>', dvText.tooltipInfo4);
  84538. return;
  84539. }
  84540. }
  84541. } else if (type == "date") {
  84542. if (!type2Values_3.includes(type2)) {
  84543. return tooltip_default.info("The optionItem.type2 parameter is invalid.", "");
  84544. }
  84545. if (!isdatetime(value1)) {
  84546. tooltip_default.info('<i class="fa fa-exclamation-triangle"></i>', dvText.tooltipInfo6);
  84547. return;
  84548. }
  84549. if (type2 == "bw" || type2 == "nb") {
  84550. if (!isdatetime(value2)) {
  84551. tooltip_default.info('<i class="fa fa-exclamation-triangle"></i>', dvText.tooltipInfo6);
  84552. return;
  84553. }
  84554. if (diff(value1, value2) > 0) {
  84555. tooltip_default.info('<i class="fa fa-exclamation-triangle"></i>', dvText.tooltipInfo7);
  84556. return;
  84557. }
  84558. }
  84559. } else if (type == "validity") {
  84560. if (!type2Values_4.includes(type2)) {
  84561. return tooltip_default.info("The optionItem.type2 parameter is invalid.", "");
  84562. }
  84563. }
  84564. if (getObjType(remote) != "boolean") {
  84565. return tooltip_default.info("The optionItem.remote parameter is invalid.", "");
  84566. }
  84567. if (getObjType(prohibitInput) != "boolean") {
  84568. return tooltip_default.info("The optionItem.prohibitInput parameter is invalid.", "");
  84569. }
  84570. if (getObjType(hintShow) != "boolean") {
  84571. return tooltip_default.info("The optionItem.hintShow parameter is invalid.", "");
  84572. }
  84573. let {
  84574. range: range2 = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1],
  84575. order = getSheetIndex(store_default.currentSheetIndex),
  84576. success
  84577. } = __spreadValues({}, options);
  84578. if (getObjType(range2) == "string") {
  84579. if (!formula_default.iscelldata(range2)) {
  84580. return tooltip_default.info("The range parameter is invalid.", "");
  84581. }
  84582. let cellrange = formula_default.getcellrange(range2);
  84583. range2 = {
  84584. "row": cellrange.row,
  84585. "column": cellrange.column
  84586. };
  84587. }
  84588. if (getObjType(range2) != "object" || range2.row == null || range2.column == null) {
  84589. return tooltip_default.info("The range parameter is invalid.", "");
  84590. }
  84591. let file = store_default.luckysheetfile[order];
  84592. if (file == null) {
  84593. return tooltip_default.info("The order parameter is invalid.", "");
  84594. }
  84595. let item2 = {
  84596. type,
  84597. type2,
  84598. value1,
  84599. value2,
  84600. checked,
  84601. remote,
  84602. prohibitInput,
  84603. hintShow,
  84604. hintText
  84605. };
  84606. let currentDataVerification = $.extend(true, {}, file.dataVerification);
  84607. let data = $.extend(true, [], file.data);
  84608. if (data.length == 0) {
  84609. data = sheetmanage_default.buildGridData(file);
  84610. }
  84611. let str = range2.row[0], edr = range2.row[1], stc = range2.column[0], edc = range2.column[1];
  84612. for (let r2 = str; r2 <= edr; r2++) {
  84613. for (let c2 = stc; c2 <= edc; c2++) {
  84614. currentDataVerification[r2 + "_" + c2] = item2;
  84615. if (type == "checkbox") {
  84616. item2.checked ? setcellvalue(r2, c2, data, item2.value1) : setcellvalue(r2, c2, data, item2.value2);
  84617. }
  84618. }
  84619. }
  84620. if (file.index == store_default.currentSheetIndex) {
  84621. let historyDataVerification = $.extend(true, {}, file.dataVerification);
  84622. if (type == "checkbox") {
  84623. dataVerificationCtrl_default.refOfCheckbox(historyDataVerification, currentDataVerification, store_default.currentSheetIndex, data, range2);
  84624. } else {
  84625. dataVerificationCtrl_default.ref(historyDataVerification, currentDataVerification, store_default.currentSheetIndex);
  84626. }
  84627. } else {
  84628. file.dataVerification = currentDataVerification;
  84629. file.data = data;
  84630. }
  84631. if (success && typeof success === "function") {
  84632. success();
  84633. }
  84634. }
  84635. function deleteDataVerification(options = {}) {
  84636. let {
  84637. range: range2 = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1],
  84638. order = getSheetIndex(store_default.currentSheetIndex),
  84639. success
  84640. } = __spreadValues({}, options);
  84641. if (getObjType(range2) == "string") {
  84642. if (!formula_default.iscelldata(range2)) {
  84643. return tooltip_default.info("The range parameter is invalid.", "");
  84644. }
  84645. let cellrange = formula_default.getcellrange(range2);
  84646. range2 = {
  84647. "row": cellrange.row,
  84648. "column": cellrange.column
  84649. };
  84650. }
  84651. if (getObjType(range2) != "object" || range2.row == null || range2.column == null) {
  84652. return tooltip_default.info("The range parameter is invalid.", "");
  84653. }
  84654. let file = store_default.luckysheetfile[order];
  84655. if (file == null) {
  84656. return tooltip_default.info("The order parameter is invalid.", "");
  84657. }
  84658. let currentDataVerification = $.extend(true, {}, file.dataVerification);
  84659. let str = range2.row[0], edr = range2.row[1], stc = range2.column[0], edc = range2.column[1];
  84660. for (let r2 = str; r2 <= edr; r2++) {
  84661. for (let c2 = stc; c2 <= edc; c2++) {
  84662. delete currentDataVerification[r2 + "_" + c2];
  84663. }
  84664. }
  84665. if (file.index == store_default.currentSheetIndex) {
  84666. let historyDataVerification = $.extend(true, {}, file.dataVerification);
  84667. dataVerificationCtrl_default.ref(historyDataVerification, currentDataVerification, store_default.currentSheetIndex);
  84668. } else {
  84669. file.dataVerification = currentDataVerification;
  84670. }
  84671. if (success && typeof success === "function") {
  84672. success();
  84673. }
  84674. }
  84675. function insertImage(src, options = {}) {
  84676. let {
  84677. order = getSheetIndex(store_default.currentSheetIndex),
  84678. rowIndex,
  84679. colIndex,
  84680. success
  84681. } = __spreadValues({}, options);
  84682. let file = store_default.luckysheetfile[order];
  84683. if (file == null) {
  84684. return tooltip_default.info("The order parameter is invalid.", "");
  84685. }
  84686. if (file.index == store_default.currentSheetIndex) {
  84687. let last = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1];
  84688. if (rowIndex == null) {
  84689. rowIndex = last.row_focus || 0;
  84690. }
  84691. if (rowIndex < 0) {
  84692. rowIndex = 0;
  84693. }
  84694. if (rowIndex > store_default.visibledatarow.length) {
  84695. rowIndex = store_default.visibledatarow.length;
  84696. }
  84697. if (colIndex == null) {
  84698. colIndex = last.column_focus || 0;
  84699. }
  84700. if (colIndex < 0) {
  84701. colIndex = 0;
  84702. }
  84703. if (colIndex > store_default.visibledatacolumn.length) {
  84704. colIndex = store_default.visibledatacolumn.length;
  84705. }
  84706. let left = colIndex == 0 ? 0 : store_default.visibledatacolumn[colIndex - 1];
  84707. let top = rowIndex == 0 ? 0 : store_default.visibledatarow[rowIndex - 1];
  84708. let image = new Image();
  84709. image.onload = function() {
  84710. let width = image.width, height = image.height;
  84711. let img = {
  84712. src,
  84713. left,
  84714. top,
  84715. originWidth: width,
  84716. originHeight: height
  84717. };
  84718. imageCtrl_default.addImgItem(img);
  84719. if (success && typeof success === "function") {
  84720. success();
  84721. }
  84722. };
  84723. image.src = src;
  84724. } else {
  84725. let images = file.images || {};
  84726. let config = file.config;
  84727. let zoomRatio = file.zoomRatio || 1;
  84728. let rowheight = file.row;
  84729. let visibledatarow = file.visibledatarow || [];
  84730. if (visibledatarow.length === 0) {
  84731. let rh_height = 0;
  84732. for (let r2 = 0; r2 < rowheight; r2++) {
  84733. let rowlen = store_default.defaultrowlen;
  84734. if (config["rowlen"] != null && config["rowlen"][r2] != null) {
  84735. rowlen = config["rowlen"][r2];
  84736. }
  84737. if (config["rowhidden"] != null && config["rowhidden"][r2] != null) {
  84738. visibledatarow.push(rh_height);
  84739. continue;
  84740. }
  84741. rh_height += Math.round((rowlen + 1) * zoomRatio);
  84742. visibledatarow.push(rh_height);
  84743. }
  84744. }
  84745. let colwidth = file.column;
  84746. let visibledatacolumn = file.visibledatacolumn || [];
  84747. if (visibledatacolumn.length === 0) {
  84748. let ch_width = 0;
  84749. for (let c2 = 0; c2 < colwidth; c2++) {
  84750. let firstcolumnlen = store_default.defaultcollen;
  84751. if (config["columnlen"] != null && config["columnlen"][c2] != null) {
  84752. firstcolumnlen = config["columnlen"][c2];
  84753. }
  84754. if (config["colhidden"] != null && config["colhidden"][c2] != null) {
  84755. visibledatacolumn.push(ch_width);
  84756. continue;
  84757. }
  84758. ch_width += Math.round((firstcolumnlen + 1) * zoomRatio);
  84759. visibledatacolumn.push(ch_width);
  84760. }
  84761. }
  84762. if (rowIndex == null) {
  84763. rowIndex = 0;
  84764. }
  84765. if (rowIndex < 0) {
  84766. rowIndex = 0;
  84767. }
  84768. if (rowIndex > visibledatarow.length) {
  84769. rowIndex = visibledatarow.length;
  84770. }
  84771. if (colIndex == null) {
  84772. colIndex = 0;
  84773. }
  84774. if (colIndex < 0) {
  84775. colIndex = 0;
  84776. }
  84777. if (colIndex > visibledatacolumn.length) {
  84778. colIndex = visibledatacolumn.length;
  84779. }
  84780. let left = colIndex == 0 ? 0 : visibledatacolumn[colIndex - 1];
  84781. let top = rowIndex == 0 ? 0 : visibledatarow[rowIndex - 1];
  84782. let image = new Image();
  84783. image.onload = function() {
  84784. let img = {
  84785. src,
  84786. left,
  84787. top,
  84788. originWidth: image.width,
  84789. originHeight: image.height
  84790. };
  84791. let width, height;
  84792. let max = 400;
  84793. if (img.originHeight < img.originWidth) {
  84794. height = Math.round(img.originHeight * (max / img.originWidth));
  84795. width = max;
  84796. } else {
  84797. width = Math.round(img.originWidth * (max / img.originHeight));
  84798. height = max;
  84799. }
  84800. let imgItem = $.extend(true, {}, imageCtrl_default.imgItem);
  84801. imgItem.src = img.src;
  84802. imgItem.originWidth = img.originWidth;
  84803. imgItem.originHeight = img.originHeight;
  84804. imgItem.default.width = width;
  84805. imgItem.default.height = height;
  84806. imgItem.default.left = img.left;
  84807. imgItem.default.top = img.top;
  84808. imgItem.crop.width = width;
  84809. imgItem.crop.height = height;
  84810. let id = imageCtrl_default.generateRandomId();
  84811. images[id] = imgItem;
  84812. file.images = images;
  84813. if (success && typeof success === "function") {
  84814. success();
  84815. }
  84816. };
  84817. image.src = src;
  84818. }
  84819. }
  84820. function deleteImage(options = {}) {
  84821. let {
  84822. order = getSheetIndex(store_default.currentSheetIndex),
  84823. idList = "all",
  84824. success
  84825. } = __spreadValues({}, options);
  84826. let file = store_default.luckysheetfile[order];
  84827. if (file == null) {
  84828. return tooltip_default.info("The order parameter is invalid.", "");
  84829. }
  84830. let images = file.images;
  84831. if (images == null) {
  84832. return tooltip_default.info("The worksheet has no pictures to delete.", "");
  84833. }
  84834. if (idList != "all" && getObjType(idList) != "array") {
  84835. return tooltip_default.info("The idList parameter is invalid.", "");
  84836. }
  84837. if (getObjType(idList) == "array") {
  84838. idList.forEach((item2) => {
  84839. delete images[item2];
  84840. });
  84841. } else {
  84842. images = null;
  84843. }
  84844. file.images = images;
  84845. if (file.index == store_default.currentSheetIndex) {
  84846. if (imageCtrl_default.currentImgId != null && (idList == "all" || idList.includes(imageCtrl_default.currentImgId))) {
  84847. $("#luckysheet-modal-dialog-activeImage").hide();
  84848. $("#luckysheet-modal-dialog-cropping").hide();
  84849. $("#luckysheet-modal-dialog-slider-imageCtrl").hide();
  84850. }
  84851. imageCtrl_default.images = images;
  84852. imageCtrl_default.allImagesShow();
  84853. imageCtrl_default.init();
  84854. }
  84855. if (success && typeof success === "function") {
  84856. success();
  84857. }
  84858. }
  84859. function getImageOption(options = {}) {
  84860. let {
  84861. order = getSheetIndex(store_default.currentSheetIndex),
  84862. success
  84863. } = __spreadValues({}, options);
  84864. let file = store_default.luckysheetfile[order];
  84865. if (file == null) {
  84866. return tooltip_default.info("The order parameter is invalid.", "");
  84867. }
  84868. setTimeout(function() {
  84869. if (success && typeof success === "function") {
  84870. success();
  84871. }
  84872. }, 1);
  84873. return file.images;
  84874. }
  84875. function transToCellData(data, options = {}) {
  84876. let {
  84877. success
  84878. } = __spreadValues({}, options);
  84879. setTimeout(() => {
  84880. if (success && typeof success === "function") {
  84881. success();
  84882. }
  84883. }, 0);
  84884. return sheetmanage_default.getGridData(data);
  84885. }
  84886. function transToData(celldata, options = {}) {
  84887. let {
  84888. success
  84889. } = __spreadValues({}, options);
  84890. setTimeout(() => {
  84891. if (success && typeof success === "function") {
  84892. success();
  84893. }
  84894. }, 0);
  84895. return sheetmanage_default.buildGridData({
  84896. celldata
  84897. });
  84898. }
  84899. function toJson() {
  84900. const toJsonOptions = store_default.toJsonOptions;
  84901. toJsonOptions.title = $("#luckysheet_info_detail_input").val();
  84902. toJsonOptions.data = getAllSheets();
  84903. getluckysheetfile().forEach((file, index2) => {
  84904. if (file.data == void 0) {
  84905. return;
  84906. }
  84907. toJsonOptions.data[index2].row = getObjType(file.data) === "array" ? file.data.length : 0;
  84908. toJsonOptions.data[index2].column = getObjType(file.data[0]) === "array" ? file.data[0].length : 0;
  84909. });
  84910. return toJsonOptions;
  84911. }
  84912. function changLang(lang = "zh") {
  84913. if (!["zh", "en", "es"].includes(lang)) {
  84914. return tooltip_default.info("The lang parameter is invalid.", "");
  84915. }
  84916. let options = toJson();
  84917. options.lang = lang;
  84918. luckysheet.create(options);
  84919. }
  84920. function closeWebsocket() {
  84921. if (server_default.websocket == null) {
  84922. return;
  84923. }
  84924. server_default.websocket.close(1e3);
  84925. }
  84926. function getRangeByTxt(txt) {
  84927. if (txt == null) {
  84928. return {
  84929. column: store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1].column,
  84930. row: store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1].row
  84931. };
  84932. }
  84933. const range2 = conditionformat_default.getRangeByTxt(txt);
  84934. return {
  84935. column: range2[0].column,
  84936. row: range2[0].row
  84937. };
  84938. }
  84939. function getTxtByRange(range2 = store_default.luckysheet_select_save) {
  84940. if (getObjType(range2) === "object") {
  84941. range2 = [range2];
  84942. }
  84943. return conditionformat_default.getTxtByRange(range2);
  84944. }
  84945. function pagerInit(config) {
  84946. const {prevPage, nextPage, total} = locale_default().button;
  84947. $("#luckysheet-bottom-pager").remove();
  84948. $("#luckysheet-sheet-content").after('<div id="luckysheet-bottom-pager" style="font-size: 14px; margin-left: 10px; display: inline-block;"></div>');
  84949. $("#luckysheet-bottom-pager").sPage({
  84950. page: config.pageIndex,
  84951. total: config.total,
  84952. selectOption: config.selectOption,
  84953. pageSize: config.pageSize,
  84954. showTotal: config.showTotal,
  84955. showSkip: config.showSkip,
  84956. showPN: config.showPN,
  84957. prevPage: config.prevPage || prevPage,
  84958. nextPage: config.nextPage || nextPage,
  84959. totalTxt: config.totalTxt || total + config.total,
  84960. backFun: function(page) {
  84961. page.pageIndex = page.page;
  84962. if (!method_default.createHookFunction("onTogglePager", page)) {
  84963. return;
  84964. }
  84965. }
  84966. });
  84967. }
  84968. function refreshFormula(success) {
  84969. formula_default.execFunctionGroupForce(true);
  84970. luckysheetrefreshgrid();
  84971. setTimeout(() => {
  84972. if (success && typeof success === "function") {
  84973. success();
  84974. }
  84975. });
  84976. }
  84977. function updataSheet(options = {}) {
  84978. let {data, success} = options;
  84979. let files = store_default.luckysheetfile;
  84980. for (let i2 = 0; i2 < data.length; i2++) {
  84981. for (let j = 0; j < files.length; j++) {
  84982. if (files[j].index === data[i2].index) {
  84983. files[j] = data[i2];
  84984. }
  84985. }
  84986. }
  84987. let file = files[sheetmanage_default.getSheetIndex(store_default.currentSheetIndex)], sheetData = sheetmanage_default.buildGridData(file);
  84988. file.data = sheetData;
  84989. if (!!file.isPivotTable) {
  84990. store_default.luckysheetcurrentisPivotTable = true;
  84991. if (!isPivotInitial) {
  84992. pivotTable_default.changePivotTable(index);
  84993. }
  84994. } else {
  84995. store_default.luckysheetcurrentisPivotTable = false;
  84996. $("#luckysheet-modal-dialog-slider-pivot").hide();
  84997. luckysheetsizeauto(false);
  84998. }
  84999. sheetmanage_default.mergeCalculation(file["index"]);
  85000. sheetmanage_default.setSheetParam();
  85001. setTimeout(function() {
  85002. sheetmanage_default.showSheet();
  85003. sheetmanage_default.restoreCache();
  85004. formula_default.execFunctionGroupForce(luckysheetConfigsetting_default.forceCalculation);
  85005. sheetmanage_default.restoreSheetAll(store_default.currentSheetIndex);
  85006. luckysheetrefreshgrid();
  85007. if (success && typeof success === "function") {
  85008. success();
  85009. }
  85010. }, 1);
  85011. server_default.saveParam("shs", null, store_default.currentSheetIndex);
  85012. }
  85013. function refreshMenuButtonFocus(data, r2, c2, success) {
  85014. data = data || store_default.flowdata;
  85015. if (r2 == null && c2 == null) {
  85016. let last = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1];
  85017. r2 = last.row_focus || last.row[0];
  85018. c2 = last.column_focus || last.column[0];
  85019. }
  85020. menuButton_default.menuButtonFocus(data, r2, c2);
  85021. setTimeout(() => {
  85022. if (success && typeof success === "function") {
  85023. success();
  85024. }
  85025. });
  85026. }
  85027. function checkTheStatusOfTheSelectedCells(type, status) {
  85028. let cells = getRangeWithFlatten();
  85029. let flag = cells.every(({r: r2, c: c2}) => {
  85030. let cell = store_default.flowdata[r2][c2];
  85031. if (cell == null) {
  85032. return false;
  85033. }
  85034. return cell[type] == status;
  85035. });
  85036. return flag;
  85037. }
  85038. var import_dayjs7;
  85039. var init_api = __esm({
  85040. "src/global/api.js"() {
  85041. init_store();
  85042. init_util();
  85043. init_get();
  85044. init_locale();
  85045. init_method();
  85046. init_formula();
  85047. init_func_methods();
  85048. init_tooltip();
  85049. init_json();
  85050. init_editor();
  85051. init_formula();
  85052. init_cleargridelement();
  85053. init_format();
  85054. init_setdata();
  85055. init_sort();
  85056. init_getRowlen();
  85057. init_getdata();
  85058. init_refresh();
  85059. init_extend();
  85060. init_validate();
  85061. init_datecontroll();
  85062. init_border();
  85063. init_draw();
  85064. init_pivotTable();
  85065. init_server();
  85066. init_menuButton();
  85067. init_selection();
  85068. init_luckysheetConfigsetting();
  85069. init_freezen();
  85070. init_resize();
  85071. init_sheetmanage();
  85072. init_conditionformat();
  85073. init_sheetSearch();
  85074. init_select();
  85075. init_constant();
  85076. init_filter();
  85077. init_controlHistory();
  85078. init_zoom();
  85079. init_dataVerificationCtrl();
  85080. init_imageCtrl();
  85081. import_dayjs7 = __toModule(require_dayjs_min());
  85082. init_get();
  85083. init_updateCell();
  85084. }
  85085. });
  85086. // src/controllers/select.js
  85087. function seletedHighlistByindex(id, r1, r2, c1, c2) {
  85088. let row = store_default.visibledatarow[r2], row_pre = r1 - 1 == -1 ? 0 : store_default.visibledatarow[r1 - 1];
  85089. let col = store_default.visibledatacolumn[c2], col_pre = c1 - 1 == -1 ? 0 : store_default.visibledatacolumn[c1 - 1];
  85090. $("#" + id).css({
  85091. "left": col_pre,
  85092. "width": col - col_pre - 1,
  85093. "top": row_pre,
  85094. "height": row - row_pre - 1
  85095. });
  85096. }
  85097. function selectHightlightShow(isRestore = false) {
  85098. $("#luckysheet-cell-selected-boxs").show();
  85099. $("#luckysheet-cell-selected-boxs #luckysheet-cell-selected").siblings(".luckysheet-cell-selected").remove();
  85100. if (store_default.luckysheet_select_save.length > 0) {
  85101. for (let i2 = 0; i2 < store_default.luckysheet_select_save.length; i2++) {
  85102. let r1 = store_default.luckysheet_select_save[i2].row[0], r2 = store_default.luckysheet_select_save[i2].row[1];
  85103. let c1 = store_default.luckysheet_select_save[i2].column[0], c2 = store_default.luckysheet_select_save[i2].column[1];
  85104. let rf, cf;
  85105. if (store_default.luckysheet_select_save[i2].row_focus == null) {
  85106. rf = r1;
  85107. } else {
  85108. rf = store_default.luckysheet_select_save[i2].row_focus;
  85109. }
  85110. if (store_default.luckysheet_select_save[i2].column_focus == null) {
  85111. cf = c1;
  85112. } else {
  85113. cf = store_default.luckysheet_select_save[i2].column_focus;
  85114. }
  85115. let row = store_default.visibledatarow[r2], row_pre = r1 - 1 == -1 ? 0 : store_default.visibledatarow[r1 - 1];
  85116. let col = store_default.visibledatacolumn[c2], col_pre = c1 - 1 == -1 ? 0 : store_default.visibledatacolumn[c1 - 1];
  85117. let row_f = store_default.visibledatarow[rf], row_pre_f = rf - 1 == -1 ? 0 : store_default.visibledatarow[rf - 1];
  85118. let col_f = store_default.visibledatacolumn[cf], col_pre_f = cf - 1 == -1 ? 0 : store_default.visibledatacolumn[cf - 1];
  85119. let margeset = menuButton_default.mergeborer(store_default.flowdata, rf, cf);
  85120. if (!!margeset) {
  85121. row_f = margeset.row[1];
  85122. row_pre_f = margeset.row[0];
  85123. col_f = margeset.column[1];
  85124. col_pre_f = margeset.column[0];
  85125. }
  85126. store_default.luckysheet_select_save[i2]["row"] = [r1, r2];
  85127. store_default.luckysheet_select_save[i2]["column"] = [c1, c2];
  85128. store_default.luckysheet_select_save[i2]["row_focus"] = rf;
  85129. store_default.luckysheet_select_save[i2]["column_focus"] = cf;
  85130. store_default.luckysheet_select_save[i2]["left"] = col_pre_f;
  85131. store_default.luckysheet_select_save[i2]["width"] = col_f - col_pre_f - 1;
  85132. store_default.luckysheet_select_save[i2]["top"] = row_pre_f;
  85133. store_default.luckysheet_select_save[i2]["height"] = row_f - row_pre_f - 1;
  85134. store_default.luckysheet_select_save[i2]["left_move"] = col_pre;
  85135. store_default.luckysheet_select_save[i2]["width_move"] = col - col_pre - 1;
  85136. store_default.luckysheet_select_save[i2]["top_move"] = row_pre;
  85137. store_default.luckysheet_select_save[i2]["height_move"] = row - row_pre - 1;
  85138. if (i2 == 0) {
  85139. if (store_default.luckysheet_select_save.length == 1) {
  85140. if (browser_default.mobilecheck()) {
  85141. $("#luckysheet-cell-selected-boxs #luckysheet-cell-selected").css({
  85142. "left": store_default.luckysheet_select_save[i2]["left_move"],
  85143. "width": store_default.luckysheet_select_save[i2]["width_move"],
  85144. "top": store_default.luckysheet_select_save[i2]["top_move"],
  85145. "height": store_default.luckysheet_select_save[i2]["height_move"],
  85146. "display": "block",
  85147. "border": "1px solid #0188fb"
  85148. }).find(".luckysheet-cs-draghandle").css("display", "block").end().find(".luckysheet-cs-fillhandle").css("display", "none").end().find(".luckysheet-cs-touchhandle").css("display", "block");
  85149. } else {
  85150. $("#luckysheet-cell-selected-boxs #luckysheet-cell-selected").css({
  85151. "left": store_default.luckysheet_select_save[i2]["left_move"],
  85152. "width": store_default.luckysheet_select_save[i2]["width_move"],
  85153. "top": store_default.luckysheet_select_save[i2]["top_move"],
  85154. "height": store_default.luckysheet_select_save[i2]["height_move"],
  85155. "display": "block",
  85156. "border": "1px solid #0188fb"
  85157. }).find(".luckysheet-cs-draghandle").css("display", "block").end().find(".luckysheet-cs-fillhandle").css("display", "block").end().find(".luckysheet-cs-touchhandle").css("display", "none");
  85158. }
  85159. } else {
  85160. $("#luckysheet-cell-selected-boxs #luckysheet-cell-selected").css({
  85161. "left": store_default.luckysheet_select_save[i2]["left_move"],
  85162. "width": store_default.luckysheet_select_save[i2]["width_move"],
  85163. "top": store_default.luckysheet_select_save[i2]["top_move"],
  85164. "height": store_default.luckysheet_select_save[i2]["height_move"],
  85165. "display": "block",
  85166. "border": "1px solid rgba(1, 136, 251, 0.15)"
  85167. }).find(".luckysheet-cs-draghandle").css("display", "none").end().find(".luckysheet-cs-fillhandle").css("display", "none");
  85168. }
  85169. } else {
  85170. $("#luckysheet-cell-selected-boxs").append('<div class="luckysheet-cell-selected" style="left: ' + store_default.luckysheet_select_save[i2]["left_move"] + "px; width: " + store_default.luckysheet_select_save[i2]["width_move"] + "px; top: " + store_default.luckysheet_select_save[i2]["top_move"] + "px; height: " + store_default.luckysheet_select_save[i2]["height_move"] + 'px; border: 1px solid rgba(1, 136, 251, 0.15); display: block;"></div>');
  85171. }
  85172. if (i2 == store_default.luckysheet_select_save.length - 1) {
  85173. $("#luckysheet-cell-selected-focus").css({
  85174. "left": store_default.luckysheet_select_save[i2]["left"],
  85175. "width": store_default.luckysheet_select_save[i2]["width"],
  85176. "top": store_default.luckysheet_select_save[i2]["top"],
  85177. "height": store_default.luckysheet_select_save[i2]["height"],
  85178. "display": "block"
  85179. });
  85180. luckysheet_count_show(store_default.luckysheet_select_save[i2]["left_move"], store_default.luckysheet_select_save[i2]["top_move"], store_default.luckysheet_select_save[i2]["width_move"], store_default.luckysheet_select_save[i2]["height_move"], [r1, r2], [c1, c2]);
  85181. formula_default.fucntionboxshow(rf, cf);
  85182. dataVerificationCtrl_default.cellFocus(rf, cf);
  85183. }
  85184. }
  85185. selectTitlesShow(store_default.luckysheet_select_save, isRestore);
  85186. selectHelpboxFill();
  85187. if (store_default.luckysheet_select_save.length == 1 && store_default.luckysheet_select_save[0].row[0] == store_default.luckysheet_select_save[0].row[1] && store_default.luckysheet_select_save[0].column[0] == store_default.luckysheet_select_save[0].column[1]) {
  85188. dynamicArrayHightShow(store_default.luckysheet_select_save[0].row[0], store_default.luckysheet_select_save[0].column[0]);
  85189. }
  85190. refreshMenuButtonFocus();
  85191. }
  85192. store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)].luckysheet_select_save = store_default.luckysheet_select_save;
  85193. const luckysheet_select_save_previous = JSON.stringify(store_default.luckysheet_select_save);
  85194. if (store_default.luckysheet_select_save_previous == null | store_default.luckysheet_select_save_previous !== luckysheet_select_save_previous) {
  85195. method_default.createHookFunction("rangeSelect", store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)], store_default.luckysheet_select_save);
  85196. }
  85197. store_default.luckysheet_select_save_previous = luckysheet_select_save_previous;
  85198. }
  85199. function selectTitlesShow(rangeArr, isRestore = false) {
  85200. let s = $.extend(true, [], rangeArr);
  85201. let rowTitleMap = {}, columnTitleMap = {};
  85202. for (let i2 = 0; i2 < s.length; i2++) {
  85203. let r1 = s[i2]["row"][0], r2 = s[i2]["row"][1], c1 = s[i2]["column"][0], c2 = s[i2]["column"][1];
  85204. rowTitleMap = selectTitlesMap(rowTitleMap, r1, r2);
  85205. columnTitleMap = selectTitlesMap(columnTitleMap, c1, c2);
  85206. }
  85207. $("#luckysheet-rows-h-selected").empty();
  85208. let rowTitleRange = selectTitlesRange(rowTitleMap);
  85209. for (let i2 = 0; i2 < rowTitleRange.length; i2++) {
  85210. let r1 = rowTitleRange[i2][0], r2 = rowTitleRange[i2][rowTitleRange[i2].length - 1];
  85211. let row = rowLocationByIndex(r2)[1], row_pre = rowLocationByIndex(r1)[0];
  85212. $("#luckysheet-rows-h-selected").append('<div class="luckysheet-rows-h-selected" style="top: ' + row_pre + "px; height: " + (row - row_pre - 1) + 'px; display: block; background-color: rgba(76, 76, 76, 0.1);"></div>');
  85213. }
  85214. $("#luckysheet-cols-h-selected").empty();
  85215. let columnTitleRange = selectTitlesRange(columnTitleMap);
  85216. for (let j = 0; j < columnTitleRange.length; j++) {
  85217. let c1 = columnTitleRange[j][0], c2 = columnTitleRange[j][columnTitleRange[j].length - 1];
  85218. let col = colLocationByIndex(c2)[1], col_pre = colLocationByIndex(c1)[0];
  85219. $("#luckysheet-cols-h-selected").append('<div class="luckysheet-cols-h-selected" style="left: ' + col_pre + "px; width: " + (col - col_pre - 1) + 'px; display: block; background-color: rgba(76, 76, 76, 0.1);"></div>');
  85220. }
  85221. }
  85222. function selectTitlesMap(rangeMap, range1, range2) {
  85223. let map = $.extend(true, {}, rangeMap);
  85224. for (let i2 = range1; i2 <= range2; i2++) {
  85225. if (i2 in map) {
  85226. continue;
  85227. }
  85228. map[i2] = 0;
  85229. }
  85230. return map;
  85231. }
  85232. function selectTitlesRange(map) {
  85233. let mapArr = [];
  85234. for (let i2 in map) {
  85235. mapArr.push(i2);
  85236. }
  85237. mapArr.sort(function(a, b) {
  85238. return a - b;
  85239. });
  85240. let rangeArr = [];
  85241. let item2 = [];
  85242. if (mapArr.length > 1) {
  85243. for (let j = 1; j < mapArr.length; j++) {
  85244. if (mapArr[j] - mapArr[j - 1] == 1) {
  85245. item2.push(mapArr[j - 1]);
  85246. if (j == mapArr.length - 1) {
  85247. item2.push(mapArr[j]);
  85248. rangeArr.push(item2);
  85249. }
  85250. } else {
  85251. if (j == 1) {
  85252. if (j == mapArr.length - 1) {
  85253. item2.push(mapArr[j - 1]);
  85254. rangeArr.push(item2);
  85255. rangeArr.push([mapArr[j]]);
  85256. } else {
  85257. rangeArr.push(mapArr[0]);
  85258. }
  85259. } else if (j == mapArr.length - 1) {
  85260. item2.push(mapArr[j - 1]);
  85261. rangeArr.push(item2);
  85262. rangeArr.push([mapArr[j]]);
  85263. } else {
  85264. item2.push(mapArr[j - 1]);
  85265. rangeArr.push(item2);
  85266. item2 = [];
  85267. }
  85268. }
  85269. }
  85270. } else {
  85271. rangeArr.push([mapArr[0]]);
  85272. }
  85273. return rangeArr;
  85274. }
  85275. function selectIsOverlap(range2) {
  85276. if (range2 == null) {
  85277. range2 = store_default.luckysheet_select_save;
  85278. }
  85279. range2 = JSON.parse(JSON.stringify(range2));
  85280. let overlap = false;
  85281. let map = {};
  85282. for (let s = 0; s < range2.length; s++) {
  85283. let str_r = range2[s].row[0], end_r = range2[s].row[1];
  85284. let str_c = range2[s].column[0], end_c = range2[s].column[1];
  85285. for (let r2 = str_r; r2 <= end_r; r2++) {
  85286. for (let c2 = str_c; c2 <= end_c; c2++) {
  85287. if (r2 + "_" + c2 in map) {
  85288. overlap = true;
  85289. break;
  85290. } else {
  85291. map[r2 + "_" + c2] = 0;
  85292. }
  85293. }
  85294. }
  85295. }
  85296. return overlap;
  85297. }
  85298. function collaborativeEditBox() {
  85299. let all_width = store_default.visibledatacolumn;
  85300. let all_height = store_default.visibledatarow;
  85301. store_default.cooperativeEdit.changeCollaborationSize.forEach((value) => {
  85302. if (value.i == store_default.currentSheetIndex) {
  85303. let count_col = value.v.column;
  85304. let change_width = all_width[count_col[0]] - 1;
  85305. if (value.v.column[0] !== 0) {
  85306. change_width = all_width[count_col[1]] - all_width[count_col[0] - 1] - (count_col[1] - count_col[0] + 1);
  85307. }
  85308. let count_row = value.v.row;
  85309. let change_height = all_height[count_row[0]] - 1;
  85310. if (value.v.row[0] !== 0) {
  85311. change_height = all_height[count_row[1]] - all_height[count_row[0] - 1] - (count_row[1] - count_row[0] + 1);
  85312. }
  85313. let range2 = store_default.cooperativeEdit.merge_range;
  85314. let change_left = all_width[value.v.column[0] - 1] - 1;
  85315. let change_top = all_height[value.v.row[0] - 1] - 1;
  85316. if (store_default.config.columnlen !== null) {
  85317. for (let k in store_default.config.columnlen) {
  85318. if (value.v.column[0] <= k && k <= value.v.column[1]) {
  85319. store_default.luckysheet_cols_change_size_start[1] = k - 0;
  85320. break;
  85321. }
  85322. }
  85323. }
  85324. if (store_default.config.rowlen !== null) {
  85325. for (let k in store_default.config.rowlen) {
  85326. if (value.v.row[0] <= k && k <= value.v.row[1]) {
  85327. store_default.luckysheet_rows_change_size_start[1] = k - 0;
  85328. break;
  85329. }
  85330. }
  85331. }
  85332. let flag_width = value.v.column[0] <= store_default.luckysheet_cols_change_size_start[1] && store_default.luckysheet_cols_change_size_start[1] <= value.v.column[1];
  85333. if (flag_width) {
  85334. if (store_default.luckysheet_cols_change_size_start[1] == 0) {
  85335. change_width = all_width[0] - 1;
  85336. } else {
  85337. let counts = value.v.column;
  85338. change_width = all_width[counts[1]] - all_width[counts[0] - 1] - (counts[1] - counts[0] + 1);
  85339. }
  85340. }
  85341. let flag_height = value.v.row[0] <= store_default.luckysheet_rows_change_size_start[1] && store_default.luckysheet_rows_change_size_start[1] <= value.v.row[1];
  85342. if (flag_height) {
  85343. if (store_default.luckysheet_rows_change_size_start[1] == 0) {
  85344. change_height = all_height[0] - 1;
  85345. } else {
  85346. let counts = value.v.row;
  85347. change_height = all_height[counts[1]] - all_height[counts[0] - 1] - (counts[1] - counts[0] + 1);
  85348. }
  85349. }
  85350. if (Object.keys(range2).length > 0) {
  85351. let flag_sure_merge = false;
  85352. if (range2.v.length > 1) {
  85353. flag_sure_merge = range2.v[1][0] == null || Object.keys(range2.v[1][0]).length > 0;
  85354. }
  85355. if (range2.v[0].length > 1) {
  85356. flag_sure_merge = range2.v[0][1] == null || Object.keys(range2.v[0][1]).length > 0;
  85357. }
  85358. if (flag_sure_merge) {
  85359. let flag_merge_width = range2.column[0] <= value.v.column[0] && range2.column[1] >= value.v.column[1];
  85360. change_left = all_width[range2.column[0] - 1] - 1;
  85361. change_top = all_height[range2.row[0] - 1] - 1;
  85362. change_width = all_width[range2.column[1]] - 1;
  85363. change_height = all_height[range2.row[1]] - 1;
  85364. if (flag_merge_width) {
  85365. if (range2.column[0] !== 0) {
  85366. let counts = range2.column;
  85367. change_width = all_width[counts[1]] - all_width[counts[0] - 1] - (counts[1] - counts[0] + 1);
  85368. } else {
  85369. change_left = 0;
  85370. }
  85371. value.v.column = range2.column;
  85372. }
  85373. let flag_merge_height = range2.row[0] <= value.v.row[0] && range2.row[1] >= value.v.row[1];
  85374. if (flag_merge_height) {
  85375. if (range2.row[0] !== 0) {
  85376. let counts = range2.row;
  85377. change_height = all_height[counts[1]] - all_height[counts[0] - 1] - (counts[1] - counts[0] + 1);
  85378. } else {
  85379. change_top = 0;
  85380. }
  85381. value.v.row = range2.row;
  85382. }
  85383. } else {
  85384. change_width = all_width[count_col[0]] - all_width[count_col[0] - 1] - 1;
  85385. if (count_col[0] === 0) {
  85386. change_width = all_width[count_col[0]] - 1;
  85387. }
  85388. change_height = all_height[count_row[0]] - all_height[count_row[0] - 1] - 1;
  85389. if (count_row[0] === 0) {
  85390. change_height = all_height[count_row[0]] - 1;
  85391. }
  85392. }
  85393. }
  85394. $("#luckysheet-multipleRange-show-" + value.id).css({"height": change_height, "width": change_width, "top": change_top + "px", "left": change_left + "px"});
  85395. let change_bottom = $("#luckysheet-multipleRange-show-" + value.id)[0].offsetHeight - 1;
  85396. $("#luckysheet-multipleRange-show-" + value.id + ">.username").css({"bottom": change_bottom + "px"});
  85397. }
  85398. });
  85399. }
  85400. function selectionCopyShow(range2) {
  85401. $("#luckysheet-selection-copy").empty();
  85402. if (range2 == null) {
  85403. range2 = store_default.luckysheet_selection_range;
  85404. }
  85405. range2 = JSON.parse(JSON.stringify(range2));
  85406. if (range2.length > 0) {
  85407. for (let s = 0; s < range2.length; s++) {
  85408. let r1 = range2[s].row[0], r2 = range2[s].row[1];
  85409. let c1 = range2[s].column[0], c2 = range2[s].column[1];
  85410. let row = store_default.visibledatarow[r2], row_pre = r1 - 1 == -1 ? 0 : store_default.visibledatarow[r1 - 1];
  85411. let col = store_default.visibledatacolumn[c2], col_pre = c1 - 1 == -1 ? 0 : store_default.visibledatacolumn[c1 - 1];
  85412. let copyDomHtml = '<div class="luckysheet-selection-copy" style="display: block; left: ' + col_pre + "px; width: " + (col - col_pre - 1) + "px; top: " + row_pre + "px; height: " + (row - row_pre - 1) + 'px;"><div class="luckysheet-selection-copy-top luckysheet-copy"></div><div class="luckysheet-selection-copy-right luckysheet-copy"></div><div class="luckysheet-selection-copy-bottom luckysheet-copy"></div><div class="luckysheet-selection-copy-left luckysheet-copy"></div><div class="luckysheet-selection-copy-hc"></div></div>';
  85413. $("#luckysheet-selection-copy").append(copyDomHtml);
  85414. }
  85415. }
  85416. }
  85417. function luckysheet_count_show(left, top, width, height, rowseleted, columnseleted) {
  85418. let rowl = rowseleted[1] - rowseleted[0] + 1, coll = columnseleted[1] - columnseleted[0] + 1;
  85419. let drawWidth = store_default.luckysheetTableContentHW[0], drawHeight = store_default.luckysheetTableContentHW[1];
  85420. let scrollWidth = $("#luckysheet-cell-main").scrollLeft(), scrollHeight = $("#luckysheet-cell-main").scrollTop();
  85421. const _locale = locale_default();
  85422. const locale_info = _locale.info;
  85423. if (rowl >= 4) {
  85424. let leftv = left - 25;
  85425. if (leftv < 0) {
  85426. leftv = left + 5;
  85427. }
  85428. if (leftv < scrollWidth) {
  85429. leftv = scrollWidth + 10;
  85430. }
  85431. let topv = top + height / 2;
  85432. if (height > drawHeight) {
  85433. topv = scrollHeight + drawHeight / 2;
  85434. }
  85435. $("#luckysheet-row-count-show").css({"left": leftv, "top": topv, "display": "block", "width": "11px"}).html("<div>" + rowl.toString().split("").join("</div><div>") + "</div><div>" + locale_info.row + "</div>");
  85436. } else {
  85437. $("#luckysheet-row-count-show").hide();
  85438. }
  85439. if (coll >= 4) {
  85440. let topv = top - 25;
  85441. if (topv < 0) {
  85442. topv = top + 5;
  85443. }
  85444. if (topv < scrollHeight) {
  85445. topv = scrollHeight + 10;
  85446. }
  85447. let leftv = left + width / 2;
  85448. if (width > drawWidth) {
  85449. leftv = scrollWidth + drawWidth / 2;
  85450. }
  85451. $("#luckysheet-column-count-show").css({"left": leftv, "top": topv, "display": "block"}).text(coll + locale_info.column);
  85452. } else {
  85453. $("#luckysheet-column-count-show").hide();
  85454. }
  85455. }
  85456. function selectHelpboxFill() {
  85457. let range2 = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1];
  85458. let rf = range2["row_focus"], cf = range2["column_focus"];
  85459. if (store_default.config["merge"] != null && rf + "_" + cf in store_default.config["merge"]) {
  85460. $("#luckysheet-helpbox-cell").text(getRangetxt(store_default.currentSheetIndex, {
  85461. column: [cf, cf],
  85462. row: [rf, rf]
  85463. }));
  85464. } else {
  85465. $("#luckysheet-helpbox-cell").text(getRangetxt(store_default.currentSheetIndex, range2));
  85466. }
  85467. }
  85468. var init_select = __esm({
  85469. "src/controllers/select.js"() {
  85470. init_menuButton();
  85471. init_formula();
  85472. init_dynamicArray();
  85473. init_location();
  85474. init_browser();
  85475. init_dataVerificationCtrl();
  85476. init_get();
  85477. init_store();
  85478. init_method();
  85479. init_locale();
  85480. init_api();
  85481. }
  85482. });
  85483. // src/controllers/moreFormat.js
  85484. var luckysheetMoreFormat, moreFormat_default;
  85485. var init_moreFormat = __esm({
  85486. "src/controllers/moreFormat.js"() {
  85487. init_util();
  85488. init_constant();
  85489. init_menuButton();
  85490. init_editor();
  85491. init_tooltip();
  85492. init_validate();
  85493. init_store();
  85494. init_locale();
  85495. luckysheetMoreFormat = {
  85496. moneyFmtList: [
  85497. {
  85498. "name": "\u4EBA\u6C11\u5E01",
  85499. "pos": "before",
  85500. "value": "\xA5"
  85501. },
  85502. {
  85503. "name": "\u7F8E\u5143",
  85504. "pos": "before",
  85505. "value": "$"
  85506. },
  85507. {
  85508. "name": "\u6B27\u5143",
  85509. "pos": "before",
  85510. "value": "\u20AC"
  85511. },
  85512. {
  85513. "name": "\u82F1\u9551",
  85514. "pos": "before",
  85515. "value": "\uFFE1"
  85516. },
  85517. {
  85518. "name": "\u6E2F\u5143",
  85519. "pos": "before",
  85520. "value": "$"
  85521. },
  85522. {
  85523. "name": "\u65E5\u5143",
  85524. "pos": "before",
  85525. "value": "\uFFE5"
  85526. },
  85527. {
  85528. "name": "\u963F\u5C14\u5DF4\u5C3C\u4E9A\u5217\u514B",
  85529. "pos": "before",
  85530. "value": "Lek"
  85531. },
  85532. {
  85533. "name": "\u963F\u5C14\u53CA\u5229\u4E9A\u7B2C\u7EB3\u5C14",
  85534. "pos": "before",
  85535. "value": "din"
  85536. },
  85537. {
  85538. "name": "\u963F\u5BCC\u6C57\u5C3C",
  85539. "pos": "after",
  85540. "value": "Af"
  85541. },
  85542. {
  85543. "name": "\u963F\u6839\u5EF7\u6BD4\u7D22",
  85544. "pos": "before",
  85545. "value": "$"
  85546. },
  85547. {
  85548. "name": "\u963F\u62C9\u4F2F\u8054\u5408\u914B\u957F\u56FD\u8FEA\u62C9\u59C6",
  85549. "pos": "before",
  85550. "value": "dh"
  85551. },
  85552. {
  85553. "name": "\u963F\u9C81\u5DF4\u5F17\u7F57\u6797",
  85554. "pos": "before",
  85555. "value": "Afl"
  85556. },
  85557. {
  85558. "name": "\u963F\u66FC\u91CC\u4E9A\u5C14",
  85559. "pos": "before",
  85560. "value": "Rial"
  85561. },
  85562. {
  85563. "name": "\u963F\u585E\u62DC\u7586\u9A6C\u7EB3\u7279",
  85564. "pos": "before",
  85565. "value": "?"
  85566. },
  85567. {
  85568. "name": "\u57C3\u53CA\u9551",
  85569. "pos": "before",
  85570. "value": "\uFFE1"
  85571. },
  85572. {
  85573. "name": "\u57C3\u585E\u4FC4\u6BD4\u4E9A\u6BD4\u5C14",
  85574. "pos": "before",
  85575. "value": "Birr"
  85576. },
  85577. {
  85578. "name": "\u5B89\u54E5\u62C9\u5BBD\u624E",
  85579. "pos": "before",
  85580. "value": "Kz"
  85581. },
  85582. {
  85583. "name": "\u6FB3\u5927\u5229\u4E9A\u5143",
  85584. "pos": "before",
  85585. "value": "$"
  85586. },
  85587. {
  85588. "name": "\u6FB3\u95E8\u5143",
  85589. "pos": "before",
  85590. "value": "MOP"
  85591. },
  85592. {
  85593. "name": "\u5DF4\u5DF4\u591A\u65AF\u5143",
  85594. "pos": "before",
  85595. "value": "$"
  85596. },
  85597. {
  85598. "name": "\u5DF4\u5E03\u4E9A\u65B0\u51E0\u5185\u4E9A\u57FA\u90A3",
  85599. "pos": "before",
  85600. "value": "PGK"
  85601. },
  85602. {
  85603. "name": "\u5DF4\u54C8\u9A6C\u5143",
  85604. "pos": "before",
  85605. "value": "$"
  85606. },
  85607. {
  85608. "name": "\u5DF4\u57FA\u65AF\u5766\u5362\u6BD4",
  85609. "pos": "before",
  85610. "value": "Rs"
  85611. },
  85612. {
  85613. "name": "\u5DF4\u62C9\u572D\u74DC\u62C9\u5C3C",
  85614. "pos": "after",
  85615. "value": "Gs"
  85616. },
  85617. {
  85618. "name": "\u5DF4\u6797\u7B2C\u7EB3\u5C14",
  85619. "pos": "before",
  85620. "value": "din"
  85621. },
  85622. {
  85623. "name": "\u5DF4\u62FF\u9A6C\u5DF4\u6CE2\u4E9A",
  85624. "pos": "before",
  85625. "value": "B/"
  85626. },
  85627. {
  85628. "name": "\u5DF4\u897F\u91CC\u4E9A\u4F0A",
  85629. "pos": "before",
  85630. "value": "R$"
  85631. },
  85632. {
  85633. "name": "\u767D\u4FC4\u7F57\u65AF\u5362\u5E03",
  85634. "pos": "after",
  85635. "value": "\u0440"
  85636. },
  85637. {
  85638. "name": "\u767E\u6155\u5927\u5143",
  85639. "pos": "before",
  85640. "value": "$"
  85641. },
  85642. {
  85643. "name": "\u4FDD\u52A0\u5229\u4E9A\u5217\u5F17",
  85644. "pos": "before",
  85645. "value": "lev"
  85646. },
  85647. {
  85648. "name": "\u51B0\u5C9B\u514B\u6717",
  85649. "pos": "before",
  85650. "value": "kr"
  85651. },
  85652. {
  85653. "name": "\u6CE2\u9ED1\u53EF\u5151\u6362\u9A6C\u514B",
  85654. "pos": "before",
  85655. "value": "KM"
  85656. },
  85657. {
  85658. "name": "\u6CE2\u5170\u5179\u7F57\u63D0",
  85659. "pos": "after",
  85660. "value": "z?"
  85661. },
  85662. {
  85663. "name": "\u73BB\u5229\u7EF4\u4E9A\u8BFA",
  85664. "pos": "before",
  85665. "value": "Bs"
  85666. },
  85667. {
  85668. "name": "\u4F2F\u5229\u5179\u5143",
  85669. "pos": "before",
  85670. "value": "$"
  85671. },
  85672. {
  85673. "name": "\u535A\u8328\u74E6\u7EB3\u666E\u62C9",
  85674. "pos": "before",
  85675. "value": "P"
  85676. },
  85677. {
  85678. "name": "\u4E0D\u4E39\u52AA\u624E\u59C6",
  85679. "pos": "before",
  85680. "value": "Nu"
  85681. },
  85682. {
  85683. "name": "\u5E03\u9686\u8FEA\u6CD5\u90CE",
  85684. "pos": "before",
  85685. "value": "FBu"
  85686. },
  85687. {
  85688. "name": "\u671D\u9C9C\u5706",
  85689. "pos": "before",
  85690. "value": "?KP"
  85691. },
  85692. {
  85693. "name": "\u4E39\u9EA6\u514B\u6717",
  85694. "pos": "after",
  85695. "value": "kr"
  85696. },
  85697. {
  85698. "name": "\u4E1C\u52A0\u52D2\u6BD4\u5143",
  85699. "pos": "before",
  85700. "value": "$"
  85701. },
  85702. {
  85703. "name": "\u591A\u7C73\u5C3C\u52A0\u6BD4\u7D22",
  85704. "pos": "before",
  85705. "value": "RD$"
  85706. },
  85707. {
  85708. "name": "\u4FC4\u56FD\u5362\u5E03",
  85709. "pos": "after",
  85710. "value": "?"
  85711. },
  85712. {
  85713. "name": "\u5384\u7ACB\u7279\u91CC\u4E9A\u7EB3\u514B\u6CD5",
  85714. "pos": "before",
  85715. "value": "Nfk"
  85716. },
  85717. {
  85718. "name": "\u975E\u6D32\u91D1\u878D\u5171\u540C\u4F53\u6CD5\u90CE",
  85719. "pos": "before",
  85720. "value": "CFA"
  85721. },
  85722. {
  85723. "name": "\u83F2\u5F8B\u5BBE\u6BD4\u7D22",
  85724. "pos": "before",
  85725. "value": "?"
  85726. },
  85727. {
  85728. "name": "\u6590\u6D4E\u5143",
  85729. "pos": "before",
  85730. "value": "$"
  85731. },
  85732. {
  85733. "name": "\u4F5B\u5F97\u89D2\u57C3\u65AF\u5E93\u591A",
  85734. "pos": "before",
  85735. "value": "CVE"
  85736. },
  85737. {
  85738. "name": "\u798F\u514B\u5170\u7FA4\u5C9B\u9551",
  85739. "pos": "before",
  85740. "value": "\uFFE1"
  85741. },
  85742. {
  85743. "name": "\u5188\u6BD4\u4E9A\u8FBE\u62C9\u897F",
  85744. "pos": "before",
  85745. "value": "GMD"
  85746. },
  85747. {
  85748. "name": "\u521A\u679C\u6CD5\u90CE",
  85749. "pos": "before",
  85750. "value": "FrCD"
  85751. },
  85752. {
  85753. "name": "\u54E5\u4F26\u6BD4\u4E9A\u6BD4\u7D22",
  85754. "pos": "before",
  85755. "value": "$"
  85756. },
  85757. {
  85758. "name": "\u54E5\u65AF\u8FBE\u9ECE\u52A0\u79D1\u6717",
  85759. "pos": "before",
  85760. "value": "?"
  85761. },
  85762. {
  85763. "name": "\u53E4\u5DF4\u6BD4\u7D22",
  85764. "pos": "before",
  85765. "value": "$"
  85766. },
  85767. {
  85768. "name": "\u53E4\u5DF4\u53EF\u5151\u6362\u6BD4\u7D22",
  85769. "pos": "before",
  85770. "value": "$"
  85771. },
  85772. {
  85773. "name": "\u572D\u4E9A\u90A3\u5143",
  85774. "pos": "before",
  85775. "value": "$"
  85776. },
  85777. {
  85778. "name": "\u54C8\u8428\u514B\u65AF\u5766\u575A\u6208",
  85779. "pos": "before",
  85780. "value": "?"
  85781. },
  85782. {
  85783. "name": "\u6D77\u5730\u53E4\u5FB7",
  85784. "pos": "before",
  85785. "value": "HTG"
  85786. },
  85787. {
  85788. "name": "\u97E9\u5143",
  85789. "pos": "before",
  85790. "value": "?"
  85791. },
  85792. {
  85793. "name": "\u8377\u5C5E\u5B89\u7684\u5217\u65AF\u76FE",
  85794. "pos": "before",
  85795. "value": "NAf."
  85796. },
  85797. {
  85798. "name": "\u6D2A\u90FD\u62C9\u65AF\u62C9\u4F26\u76AE\u62C9",
  85799. "pos": "before",
  85800. "value": "L"
  85801. },
  85802. {
  85803. "name": "\u5409\u5E03\u63D0\u6CD5\u90CE",
  85804. "pos": "before",
  85805. "value": "Fdj"
  85806. },
  85807. {
  85808. "name": "\u5409\u5C14\u5409\u65AF\u65AF\u5766\u7D22\u59C6",
  85809. "pos": "before",
  85810. "value": "KGS"
  85811. },
  85812. {
  85813. "name": "\u51E0\u5185\u4E9A\u6CD5\u90CE",
  85814. "pos": "before",
  85815. "value": "FG"
  85816. },
  85817. {
  85818. "name": "\u52A0\u62FF\u5927\u5143",
  85819. "pos": "before",
  85820. "value": "$"
  85821. },
  85822. {
  85823. "name": "\u52A0\u7EB3\u585E\u5730",
  85824. "pos": "before",
  85825. "value": "GHS"
  85826. },
  85827. {
  85828. "name": "\u67EC\u57D4\u5BE8\u745E\u5C14",
  85829. "pos": "before",
  85830. "value": "Riel"
  85831. },
  85832. {
  85833. "name": "\u6377\u514B\u514B\u6717",
  85834. "pos": "after",
  85835. "value": "K?"
  85836. },
  85837. {
  85838. "name": "\u6D25\u5DF4\u5E03\u97E6\u5143",
  85839. "pos": "before",
  85840. "value": "$"
  85841. },
  85842. {
  85843. "name": "\u5361\u5854\u5C14\u91CC\u4E9A\u5C14",
  85844. "pos": "before",
  85845. "value": "Rial"
  85846. },
  85847. {
  85848. "name": "\u5F00\u66FC\u7FA4\u5C9B\u5143",
  85849. "pos": "before",
  85850. "value": "$"
  85851. },
  85852. {
  85853. "name": "\u79D1\u6469\u7F57\u6CD5\u90CE",
  85854. "pos": "before",
  85855. "value": "CF"
  85856. },
  85857. {
  85858. "name": "\u79D1\u5A01\u7279\u7B2C\u7EB3\u5C14",
  85859. "pos": "before",
  85860. "value": "din"
  85861. },
  85862. {
  85863. "name": "\u514B\u7F57\u5730\u4E9A\u5E93\u7EB3",
  85864. "pos": "before",
  85865. "value": "kn"
  85866. },
  85867. {
  85868. "name": "\u80AF\u5C3C\u4E9A\u5148\u4EE4",
  85869. "pos": "before",
  85870. "value": "Ksh"
  85871. },
  85872. {
  85873. "name": "\u83B1\u7D22\u6258\u6D1B\u8482",
  85874. "pos": "before",
  85875. "value": "LSL"
  85876. },
  85877. {
  85878. "name": "\u8001\u631D\u57FA\u666E",
  85879. "pos": "before",
  85880. "value": "?"
  85881. },
  85882. {
  85883. "name": "\u9ECE\u5DF4\u5AE9\u9551",
  85884. "pos": "before",
  85885. "value": "L\uFFE1"
  85886. },
  85887. {
  85888. "name": "\u7ACB\u9676\u5B9B\u7ACB\u7279",
  85889. "pos": "before",
  85890. "value": "Lt"
  85891. },
  85892. {
  85893. "name": "\u5229\u6BD4\u4E9A\u7B2C\u7EB3\u5C14",
  85894. "pos": "before",
  85895. "value": "din"
  85896. },
  85897. {
  85898. "name": "\u5229\u6BD4\u4E9A\u5143",
  85899. "pos": "before",
  85900. "value": "$"
  85901. },
  85902. {
  85903. "name": "\u5362\u65FA\u8FBE\u6CD5\u90CE",
  85904. "pos": "before",
  85905. "value": "RF"
  85906. },
  85907. {
  85908. "name": "\u7F57\u9A6C\u5C3C\u4E9A\u5217\u4F0A",
  85909. "pos": "before",
  85910. "value": "RON"
  85911. },
  85912. {
  85913. "name": "\u9A6C\u8FBE\u52A0\u65AF\u52A0\u963F\u91CC\u4E9A\u91CC",
  85914. "pos": "before",
  85915. "value": "Ar"
  85916. },
  85917. {
  85918. "name": "\u9A6C\u5C14\u4EE3\u592B\u62C9\u83F2\u4E9A",
  85919. "pos": "before",
  85920. "value": "Rf"
  85921. },
  85922. {
  85923. "name": "\u9A6C\u62C9\u7EF4\u514B\u74E6\u67E5",
  85924. "pos": "before",
  85925. "value": "MWK"
  85926. },
  85927. {
  85928. "name": "\u9A6C\u6765\u897F\u4E9A\u6797\u5409\u7279",
  85929. "pos": "before",
  85930. "value": "RM"
  85931. },
  85932. {
  85933. "name": "\u9A6C\u5176\u987F\u6234\u7B2C\u7EB3\u5C14",
  85934. "pos": "before",
  85935. "value": "din"
  85936. },
  85937. {
  85938. "name": "\u6BDB\u91CC\u6C42\u65AF\u5362\u6BD4",
  85939. "pos": "before",
  85940. "value": "MURs"
  85941. },
  85942. {
  85943. "name": "\u6BDB\u91CC\u5854\u5C3C\u4E9A\u4E4C\u5409\u4E9A",
  85944. "pos": "before",
  85945. "value": "MRO"
  85946. },
  85947. {
  85948. "name": "\u8499\u53E4\u56FE\u683C\u91CC\u514B",
  85949. "pos": "before",
  85950. "value": "?"
  85951. },
  85952. {
  85953. "name": "\u5B5F\u52A0\u62C9\u5854\u5361",
  85954. "pos": "before",
  85955. "value": "?"
  85956. },
  85957. {
  85958. "name": "\u79D8\u9C81\u65B0\u7D22\u5C14",
  85959. "pos": "before",
  85960. "value": "S/"
  85961. },
  85962. {
  85963. "name": "\u7F05\u7538\u5F00\u4E9A\u7279",
  85964. "pos": "before",
  85965. "value": "K"
  85966. },
  85967. {
  85968. "name": "\u6469\u5C14\u591A\u74E6\u5217\u4F0A",
  85969. "pos": "before",
  85970. "value": "MDL"
  85971. },
  85972. {
  85973. "name": "\u6469\u6D1B\u54E5\u8FEA\u62C9\u59C6",
  85974. "pos": "before",
  85975. "value": "dh"
  85976. },
  85977. {
  85978. "name": "\u83AB\u6851\u6BD4\u514B\u6885\u8482\u5361\u5C14",
  85979. "pos": "before",
  85980. "value": "MTn"
  85981. },
  85982. {
  85983. "name": "\u58A8\u897F\u54E5\u6BD4\u7D22",
  85984. "pos": "before",
  85985. "value": "$"
  85986. },
  85987. {
  85988. "name": "\u7EB3\u7C73\u6BD4\u4E9A\u5143",
  85989. "pos": "before",
  85990. "value": "$"
  85991. },
  85992. {
  85993. "name": "\u5357\u975E\u5170\u7279",
  85994. "pos": "before",
  85995. "value": "R"
  85996. },
  85997. {
  85998. "name": "\u5357\u82CF\u4E39\u9551",
  85999. "pos": "before",
  86000. "value": "\uFFE1"
  86001. },
  86002. {
  86003. "name": "\u5C3C\u52A0\u62C9\u74DC\u79D1\u591A\u5DF4",
  86004. "pos": "before",
  86005. "value": "C$"
  86006. },
  86007. {
  86008. "name": "\u5C3C\u6CCA\u5C14\u5362\u6BD4",
  86009. "pos": "before",
  86010. "value": "Rs"
  86011. },
  86012. {
  86013. "name": "\u5C3C\u65E5\u5229\u4E9A\u5948\u62C9",
  86014. "pos": "before",
  86015. "value": "?"
  86016. },
  86017. {
  86018. "name": "\u632A\u5A01\u514B\u6717",
  86019. "pos": "after",
  86020. "value": "kr"
  86021. },
  86022. {
  86023. "name": "\u4E54\u6CBB\u4E9A\u62C9\u745E",
  86024. "pos": "before",
  86025. "value": "GEL"
  86026. },
  86027. {
  86028. "name": "\u4EBA\u6C11\u5E01\uFF08\u79BB\u5CB8\uFF09",
  86029. "pos": "before",
  86030. "value": "\uFFE5"
  86031. },
  86032. {
  86033. "name": "\u745E\u5178\u514B\u6717",
  86034. "pos": "after",
  86035. "value": "kr"
  86036. },
  86037. {
  86038. "name": "\u745E\u58EB\u6CD5\u90CE",
  86039. "pos": "before",
  86040. "value": "CHF"
  86041. },
  86042. {
  86043. "name": "\u585E\u5C14\u7EF4\u4E9A\u7B2C\u7EB3\u5C14",
  86044. "pos": "before",
  86045. "value": "din"
  86046. },
  86047. {
  86048. "name": "\u585E\u62C9\u5229\u6602\u5229\u6602",
  86049. "pos": "before",
  86050. "value": "SLL"
  86051. },
  86052. {
  86053. "name": "\u585E\u820C\u5C14\u5362\u6BD4",
  86054. "pos": "before",
  86055. "value": "SCR"
  86056. },
  86057. {
  86058. "name": "\u6C99\u7279\u91CC\u4E9A\u5C14",
  86059. "pos": "before",
  86060. "value": "Rial"
  86061. },
  86062. {
  86063. "name": "\u5723\u591A\u7F8E\u591A\u5E03\u62C9",
  86064. "pos": "before",
  86065. "value": "Db"
  86066. },
  86067. {
  86068. "name": "\u5723\u8D6B\u52D2\u62FF\u7FA4\u5C9B\u78C5",
  86069. "pos": "before",
  86070. "value": "\uFFE1"
  86071. },
  86072. {
  86073. "name": "\u65AF\u91CC\u5170\u5361\u5362\u6BD4",
  86074. "pos": "before",
  86075. "value": "Rs"
  86076. },
  86077. {
  86078. "name": "\u65AF\u5A01\u58EB\u5170\u91CC\u5170\u5409\u5C3C",
  86079. "pos": "before",
  86080. "value": "SZL"
  86081. },
  86082. {
  86083. "name": "\u82CF\u4E39\u9551",
  86084. "pos": "before",
  86085. "value": "SDG"
  86086. },
  86087. {
  86088. "name": "\u82CF\u91CC\u5357\u5143",
  86089. "pos": "before",
  86090. "value": "$"
  86091. },
  86092. {
  86093. "name": "\u6240\u7F57\u95E8\u7FA4\u5C9B\u5143",
  86094. "pos": "before",
  86095. "value": "$"
  86096. },
  86097. {
  86098. "name": "\u7D22\u9A6C\u91CC\u5148\u4EE4",
  86099. "pos": "before",
  86100. "value": "SOS"
  86101. },
  86102. {
  86103. "name": "\u5854\u5409\u514B\u65AF\u5766\u7D22\u83AB\u5C3C",
  86104. "pos": "before",
  86105. "value": "Som"
  86106. },
  86107. {
  86108. "name": "\u592A\u5E73\u6D0B\u6CD5\u90CE",
  86109. "pos": "after",
  86110. "value": "FCFP"
  86111. },
  86112. {
  86113. "name": "\u6CF0\u56FD\u94E2",
  86114. "pos": "before",
  86115. "value": "?"
  86116. },
  86117. {
  86118. "name": "\u5766\u6851\u5C3C\u4E9A\u5148\u4EE4",
  86119. "pos": "before",
  86120. "value": "TSh"
  86121. },
  86122. {
  86123. "name": "\u6C64\u52A0\u6F58\u52A0",
  86124. "pos": "before",
  86125. "value": "T$"
  86126. },
  86127. {
  86128. "name": "\u7279\u7ACB\u5C3C\u8FBE\u548C\u591A\u5DF4\u54E5\u5143",
  86129. "pos": "before",
  86130. "value": "$"
  86131. },
  86132. {
  86133. "name": "\u7A81\u5C3C\u65AF\u7B2C\u7EB3\u5C14",
  86134. "pos": "before",
  86135. "value": "din"
  86136. },
  86137. {
  86138. "name": "\u571F\u8033\u5176\u91CC\u62C9",
  86139. "pos": "before",
  86140. "value": "?"
  86141. },
  86142. {
  86143. "name": "\u74E6\u52AA\u963F\u56FE\u74E6\u56FE",
  86144. "pos": "before",
  86145. "value": "VUV"
  86146. },
  86147. {
  86148. "name": "\u5371\u5730\u9A6C\u62C9\u683C\u67E5\u5C14",
  86149. "pos": "before",
  86150. "value": "Q"
  86151. },
  86152. {
  86153. "name": "\u59D4\u5185\u745E\u62C9\u535A\u5229\u74E6",
  86154. "pos": "before",
  86155. "value": "Bs"
  86156. },
  86157. {
  86158. "name": "\u6587\u83B1\u5143",
  86159. "pos": "before",
  86160. "value": "$"
  86161. },
  86162. {
  86163. "name": "\u4E4C\u5E72\u8FBE\u5148\u4EE4",
  86164. "pos": "before",
  86165. "value": "UGX"
  86166. },
  86167. {
  86168. "name": "\u4E4C\u514B\u5170\u683C\u91CC\u592B\u5C3C\u4E9A",
  86169. "pos": "before",
  86170. "value": "\u0433\u0440\u043D."
  86171. },
  86172. {
  86173. "name": "\u4E4C\u62C9\u572D\u6BD4\u7D22",
  86174. "pos": "before",
  86175. "value": "$"
  86176. },
  86177. {
  86178. "name": "\u4E4C\u5179\u522B\u514B\u65AF\u5766\u82CF\u59C6",
  86179. "pos": "before",
  86180. "value": "so?m"
  86181. },
  86182. {
  86183. "name": "\u897F\u8428\u6469\u4E9A\u5854\u62C9",
  86184. "pos": "before",
  86185. "value": "WST"
  86186. },
  86187. {
  86188. "name": "\u65B0\u52A0\u5761\u5143",
  86189. "pos": "before",
  86190. "value": "$"
  86191. },
  86192. {
  86193. "name": "\u65B0\u53F0\u5E01",
  86194. "pos": "before",
  86195. "value": "NT$"
  86196. },
  86197. {
  86198. "name": "\u65B0\u897F\u5170\u5143",
  86199. "pos": "before",
  86200. "value": "$"
  86201. },
  86202. {
  86203. "name": "\u5308\u7259\u5229\u798F\u6797",
  86204. "pos": "before",
  86205. "value": "Ft"
  86206. },
  86207. {
  86208. "name": "\u53D9\u5229\u4E9A\u9551",
  86209. "pos": "before",
  86210. "value": "\uFFE1"
  86211. },
  86212. {
  86213. "name": "\u7259\u4E70\u52A0\u5143",
  86214. "pos": "before",
  86215. "value": "$"
  86216. },
  86217. {
  86218. "name": "\u4E9A\u7F8E\u5C3C\u4E9A\u5FB7\u62C9\u59C6",
  86219. "pos": "before",
  86220. "value": "Dram"
  86221. },
  86222. {
  86223. "name": "\u4E5F\u95E8\u91CC\u4E9A\u5C14",
  86224. "pos": "before",
  86225. "value": "Rial"
  86226. },
  86227. {
  86228. "name": "\u4F0A\u62C9\u514B\u7B2C\u7EB3\u5C14",
  86229. "pos": "before",
  86230. "value": "din"
  86231. },
  86232. {
  86233. "name": "\u4F0A\u6717\u91CC\u4E9A\u5C14",
  86234. "pos": "before",
  86235. "value": "Rial"
  86236. },
  86237. {
  86238. "name": "\u4EE5\u8272\u5217\u65B0\u8C22\u514B\u5C14",
  86239. "pos": "before",
  86240. "value": "?"
  86241. },
  86242. {
  86243. "name": "\u5370\u5EA6\u5362\u6BD4",
  86244. "pos": "before",
  86245. "value": "?"
  86246. },
  86247. {
  86248. "name": "\u5370\u5EA6\u5C3C\u897F\u4E9A\u5362\u6BD4",
  86249. "pos": "before",
  86250. "value": "Rp"
  86251. },
  86252. {
  86253. "name": "\u7EA6\u65E6\u7B2C\u7EB3\u5C14",
  86254. "pos": "before",
  86255. "value": "din"
  86256. },
  86257. {
  86258. "name": "\u8D8A\u5357\u76FE",
  86259. "pos": "after",
  86260. "value": "?"
  86261. },
  86262. {
  86263. "name": "\u8D5E\u6BD4\u4E9A\u514B\u74E6\u67E5",
  86264. "pos": "before",
  86265. "value": "ZMW"
  86266. },
  86267. {
  86268. "name": "\u76F4\u5E03\u7F57\u9640\u9551",
  86269. "pos": "before",
  86270. "value": "\uFFE1"
  86271. },
  86272. {
  86273. "name": "\u667A\u5229\u6BD4\u7D22",
  86274. "pos": "before",
  86275. "value": "$"
  86276. },
  86277. {
  86278. "name": "\u4E2D\u975E\u91D1\u878D\u5408\u4F5C\u6CD5\u90CE",
  86279. "pos": "before",
  86280. "value": "FCFA"
  86281. }
  86282. ],
  86283. dateFmtList: [
  86284. {
  86285. "name": "1930-08-05",
  86286. "value": "yyyy-MM-dd"
  86287. },
  86288. {
  86289. "name": "1930/8/5",
  86290. "value": "yyyy/MM/dd"
  86291. },
  86292. {
  86293. "name": "1930\u5E748\u67085\u65E5",
  86294. "value": 'yyyy"\u5E74"M"\u6708"d"\u65E5"'
  86295. },
  86296. {
  86297. "name": "08-05",
  86298. "value": "MM-dd"
  86299. },
  86300. {
  86301. "name": "8-5",
  86302. "value": "M-d"
  86303. },
  86304. {
  86305. "name": "8\u67085\u65E5",
  86306. "value": 'M"\u6708"d"\u65E5"'
  86307. },
  86308. {
  86309. "name": "13:30:30",
  86310. "value": "h:mm:ss"
  86311. },
  86312. {
  86313. "name": "13:30",
  86314. "value": "h:mm"
  86315. },
  86316. {
  86317. "name": "\u4E0B\u534801:30",
  86318. "value": "\u4E0A\u5348/\u4E0B\u5348 hh:mm"
  86319. },
  86320. {
  86321. "name": "\u4E0B\u53481:30",
  86322. "value": "\u4E0A\u5348/\u4E0B\u5348 h:mm"
  86323. },
  86324. {
  86325. "name": "\u4E0B\u53481:30:30",
  86326. "value": "\u4E0A\u5348/\u4E0B\u5348 h:mm:ss"
  86327. },
  86328. {
  86329. "name": "08-05 \u4E0B\u534801:30",
  86330. "value": "MM-dd \u4E0A\u5348/\u4E0B\u5348 hh:mm"
  86331. }
  86332. ],
  86333. numFmtList: [
  86334. {
  86335. "name": "1235",
  86336. "value": "0"
  86337. },
  86338. {
  86339. "name": "1234.56",
  86340. "value": "0.00"
  86341. },
  86342. {
  86343. "name": "1,235",
  86344. "value": "#,##0"
  86345. },
  86346. {
  86347. "name": "1,234.56",
  86348. "value": "#,##0.00"
  86349. },
  86350. {
  86351. "name": "1,235",
  86352. "value": "#,##0_);(#,##0)"
  86353. },
  86354. {
  86355. "name": "1,235",
  86356. "value": "#,##0_);[Red](#,##0)"
  86357. },
  86358. {
  86359. "name": "1,234.56",
  86360. "value": "#,##0.00_);(#,##0.00)"
  86361. },
  86362. {
  86363. "name": "1,234.56",
  86364. "value": "#,##0.00_);[Red](#,##0.00)"
  86365. },
  86366. {
  86367. "name": "$1,235",
  86368. "value": "$#,##0_);($#,##0)"
  86369. },
  86370. {
  86371. "name": "$1,235",
  86372. "value": "$#,##0_);[Red]($#,##0)"
  86373. },
  86374. {
  86375. "name": "$1,234.56",
  86376. "value": "$#,##0.00_);($#,##0.00)"
  86377. },
  86378. {
  86379. "name": "$1,234.56",
  86380. "value": "$#,##0.00_);[Red]($#,##0.00)"
  86381. },
  86382. {
  86383. "name": "1234.56",
  86384. "value": "@"
  86385. },
  86386. {
  86387. "name": "123456%",
  86388. "value": "0%"
  86389. },
  86390. {
  86391. "name": "123456.00%",
  86392. "value": "0.00%"
  86393. },
  86394. {
  86395. "name": "1.23E+03",
  86396. "value": "0.00E+00"
  86397. },
  86398. {
  86399. "name": "1.2E+3",
  86400. "value": "##0.0E+0"
  86401. },
  86402. {
  86403. "name": "1234 5/9",
  86404. "value": "# ?/?"
  86405. },
  86406. {
  86407. "name": "1234 14/25",
  86408. "value": "# ??/??"
  86409. },
  86410. {
  86411. "name": "$ 1,235",
  86412. "value": '_($* #,##0_);_(...($* "-"_);_(@_)'
  86413. },
  86414. {
  86415. "name": "1,235",
  86416. "value": '_(* #,##0_);_(*..._(* "-"_);_(@_)'
  86417. },
  86418. {
  86419. "name": "$ 1,234.56",
  86420. "value": '_($* #,##0.00_);_(...($* "-"_);_(@_)'
  86421. },
  86422. {
  86423. "name": "1,234.56",
  86424. "value": '_(* #,##0.00_);...* "-"??_);_(@_)'
  86425. }
  86426. ],
  86427. createDialog: function(type) {
  86428. let _this = this;
  86429. const currencyDetail = locale_default().currencyDetail;
  86430. const locale_format = locale_default().format;
  86431. const locale_button = locale_default().button;
  86432. this.moneyFmtList = [
  86433. {"name": currencyDetail.RMB, "pos": "before", "value": "\xA5"},
  86434. {"name": currencyDetail.USdollar, "pos": "before", "value": "$"},
  86435. {"name": currencyDetail.EUR, "pos": "before", "value": "\u20AC"},
  86436. {"name": currencyDetail.GBP, "pos": "before", "value": "\uFFE1"},
  86437. {"name": currencyDetail.HK, "pos": "before", "value": "$"},
  86438. {"name": currencyDetail.JPY, "pos": "before", "value": "\uFFE5"},
  86439. {"name": currencyDetail.AlbanianLek, "pos": "before", "value": "Lek"},
  86440. {"name": currencyDetail.AlgerianDinar, "pos": "before", "value": "din"},
  86441. {"name": currencyDetail.Afghani, "pos": "after", "value": "Af"},
  86442. {"name": currencyDetail.ArgentinePeso, "pos": "before", "value": "$"},
  86443. {"name": currencyDetail.UnitedArabEmiratesDirham, "pos": "before", "value": "dh"},
  86444. {"name": currencyDetail.ArubanFlorin, "pos": "before", "value": "Afl"},
  86445. {"name": currencyDetail.OmaniRial, "pos": "before", "value": "Rial"},
  86446. {"name": currencyDetail.Azerbaijanimanat, "pos": "before", "value": "?"},
  86447. {"name": currencyDetail.EgyptianPound, "pos": "before", "value": "\uFFE1"},
  86448. {"name": currencyDetail.EthiopianBirr, "pos": "before", "value": "Birr"},
  86449. {"name": currencyDetail.AngolaKwanza, "pos": "before", "value": "Kz"},
  86450. {"name": currencyDetail.AustralianDollar, "pos": "before", "value": "$"},
  86451. {"name": currencyDetail.Patacas, "pos": "before", "value": "MOP"},
  86452. {"name": currencyDetail.BarbadosDollar, "pos": "before", "value": "$"},
  86453. {"name": currencyDetail.PapuaNewGuineaKina, "pos": "before", "value": "PGK"},
  86454. {"name": currencyDetail.BahamianDollar, "pos": "before", "value": "$"},
  86455. {"name": currencyDetail.PakistanRupee, "pos": "before", "value": "Rs"},
  86456. {"name": currencyDetail.ParaguayanGuarani, "pos": "after", "value": "Gs"},
  86457. {"name": currencyDetail.BahrainiDinar, "pos": "before", "value": "din"},
  86458. {"name": currencyDetail.PanamanianBalboa, "pos": "before", "value": "B/"},
  86459. {"name": currencyDetail.Brazilianreal, "pos": "before", "value": "R$"},
  86460. {"name": currencyDetail.Belarusianruble, "pos": "after", "value": "\u0440"},
  86461. {"name": currencyDetail.BermudianDollar, "pos": "before", "value": "$"},
  86462. {"name": currencyDetail.BulgarianLev, "pos": "before", "value": "lev"},
  86463. {"name": currencyDetail.IcelandKrona, "pos": "before", "value": "kr"},
  86464. {"name": currencyDetail.BosniaHerzegovinaConvertibleMark, "pos": "before", "value": "KM"},
  86465. {"name": currencyDetail.PolishZloty, "pos": "after", "value": "z?"},
  86466. {"name": currencyDetail.Boliviano, "pos": "before", "value": "Bs"},
  86467. {"name": currencyDetail.BelizeDollar, "pos": "before", "value": "$"},
  86468. {"name": currencyDetail.BotswanaPula, "pos": "before", "value": "P"},
  86469. {"name": currencyDetail.NotDannuzhamu, "pos": "before", "value": "Nu"},
  86470. {"name": currencyDetail.BurundiFranc, "pos": "before", "value": "FBu"},
  86471. {"name": currencyDetail.NorthKoreanWon, "pos": "before", "value": "?KP"},
  86472. {"name": currencyDetail.DanishKrone, "pos": "after", "value": "kr"},
  86473. {"name": currencyDetail.EastCaribbeanDollar, "pos": "before", "value": "$"},
  86474. {"name": currencyDetail.DominicaPeso, "pos": "before", "value": "RD$"},
  86475. {"name": currencyDetail.RussianRuble, "pos": "after", "value": "?"},
  86476. {"name": currencyDetail.EritreanNakfa, "pos": "before", "value": "Nfk"},
  86477. {"name": currencyDetail.CFAfranc, "pos": "before", "value": "CFA"},
  86478. {"name": currencyDetail.PhilippinePeso, "pos": "before", "value": "?"},
  86479. {"name": currencyDetail.FijiDollar, "pos": "before", "value": "$"},
  86480. {"name": currencyDetail.CapeVerdeEscudo, "pos": "before", "value": "CVE"},
  86481. {"name": currencyDetail.FalklandIslandsPound, "pos": "before", "value": "\uFFE1"},
  86482. {"name": currencyDetail.GambianDalasi, "pos": "before", "value": "GMD"},
  86483. {"name": currencyDetail.Congolesefranc, "pos": "before", "value": "FrCD"},
  86484. {"name": currencyDetail.ColombianPeso, "pos": "before", "value": "$"},
  86485. {"name": currencyDetail.CostaRicanColon, "pos": "before", "value": "?"},
  86486. {"name": currencyDetail.CubanPeso, "pos": "before", "value": "$"},
  86487. {"name": currencyDetail.Cubanconvertiblepeso, "pos": "before", "value": "$"},
  86488. {"name": currencyDetail.GuyanaDollar, "pos": "before", "value": "$"},
  86489. {"name": currencyDetail.KazakhstanTenge, "pos": "before", "value": "?"},
  86490. {"name": currencyDetail.Haitiangourde, "pos": "before", "value": "HTG"},
  86491. {"name": currencyDetail.won, "pos": "before", "value": "?"},
  86492. {"name": currencyDetail.NetherlandsAntillesGuilder, "pos": "before", "value": "NAf."},
  86493. {"name": currencyDetail.Honduraslempiras, "pos": "before", "value": "L"},
  86494. {"name": currencyDetail.DjiboutiFranc, "pos": "before", "value": "Fdj"},
  86495. {"name": currencyDetail.KyrgyzstanSom, "pos": "before", "value": "KGS"},
  86496. {"name": currencyDetail.GuineaFranc, "pos": "before", "value": "FG"},
  86497. {"name": currencyDetail.CanadianDollar, "pos": "before", "value": "$"},
  86498. {"name": currencyDetail.GhanaianCedi, "pos": "before", "value": "GHS"},
  86499. {"name": currencyDetail.Cambodianriel, "pos": "before", "value": "Riel"},
  86500. {"name": currencyDetail.CzechKoruna, "pos": "after", "value": "K?"},
  86501. {"name": currencyDetail.ZimbabweDollar, "pos": "before", "value": "$"},
  86502. {"name": currencyDetail.QatariRiyal, "pos": "before", "value": "Rial"},
  86503. {"name": currencyDetail.CaymanIslandsDollar, "pos": "before", "value": "$"},
  86504. {"name": currencyDetail.Comorianfranc, "pos": "before", "value": "CF"},
  86505. {"name": currencyDetail.KuwaitiDinar, "pos": "before", "value": "din"},
  86506. {"name": currencyDetail.CroatianKuna, "pos": "before", "value": "kn"},
  86507. {"name": currencyDetail.KenyanShilling, "pos": "before", "value": "Ksh"},
  86508. {"name": currencyDetail.LesothoLoti, "pos": "before", "value": "LSL"},
  86509. {"name": currencyDetail.LaoKip, "pos": "before", "value": "?"},
  86510. {"name": currencyDetail.LebanesePound, "pos": "before", "value": "L\uFFE1"},
  86511. {"name": currencyDetail.Lithuanianlitas, "pos": "before", "value": "Lt"},
  86512. {"name": currencyDetail.LibyanDinar, "pos": "before", "value": "din"},
  86513. {"name": currencyDetail.LiberianDollar, "pos": "before", "value": "$"},
  86514. {"name": currencyDetail.RwandaFranc, "pos": "before", "value": "RF"},
  86515. {"name": currencyDetail.RomanianLeu, "pos": "before", "value": "RON"},
  86516. {"name": currencyDetail.MalagasyAriary, "pos": "before", "value": "Ar"},
  86517. {"name": currencyDetail.MaldivianRufiyaa, "pos": "before", "value": "Rf"},
  86518. {"name": currencyDetail.MalawiKwacha, "pos": "before", "value": "MWK"},
  86519. {"name": currencyDetail.MalaysianRinggit, "pos": "before", "value": "RM"},
  86520. {"name": currencyDetail.MacedoniawearingDinar, "pos": "before", "value": "din"},
  86521. {"name": currencyDetail.MauritiusRupee, "pos": "before", "value": "MURs"},
  86522. {"name": currencyDetail.MauritanianOuguiya, "pos": "before", "value": "MRO"},
  86523. {"name": currencyDetail.MongolianTugrik, "pos": "before", "value": "?"},
  86524. {"name": currencyDetail.BangladeshiTaka, "pos": "before", "value": "?"},
  86525. {"name": currencyDetail.PeruvianNuevoSol, "pos": "before", "value": "S/"},
  86526. {"name": currencyDetail.MyanmarKyat, "pos": "before", "value": "K"},
  86527. {"name": currencyDetail.MoldovanLeu, "pos": "before", "value": "MDL"},
  86528. {"name": currencyDetail.MoroccanDirham, "pos": "before", "value": "dh"},
  86529. {"name": currencyDetail.MozambiqueMetical, "pos": "before", "value": "MTn"},
  86530. {"name": currencyDetail.MexicanPeso, "pos": "before", "value": "$"},
  86531. {"name": currencyDetail.NamibianDollar, "pos": "before", "value": "$"},
  86532. {"name": currencyDetail.SouthAfricanRand, "pos": "before", "value": "R"},
  86533. {"name": currencyDetail.SouthSudanesePound, "pos": "before", "value": "\uFFE1"},
  86534. {"name": currencyDetail.NicaraguaCordoba, "pos": "before", "value": "C$"},
  86535. {"name": currencyDetail.NepaleseRupee, "pos": "before", "value": "Rs"},
  86536. {"name": currencyDetail.NigerianNaira, "pos": "before", "value": "?"},
  86537. {"name": currencyDetail.NorwegianKrone, "pos": "after", "value": "kr"},
  86538. {"name": currencyDetail.GeorgianLari, "pos": "before", "value": "GEL"},
  86539. {"name": currencyDetail.RenminbiOffshore, "pos": "before", "value": "\uFFE5"},
  86540. {"name": currencyDetail.SwedishKrona, "pos": "after", "value": "kr"},
  86541. {"name": currencyDetail.SwissFranc, "pos": "before", "value": "CHF"},
  86542. {"name": currencyDetail.SerbianDinar, "pos": "before", "value": "din"},
  86543. {"name": currencyDetail.SierraLeone, "pos": "before", "value": "SLL"},
  86544. {"name": currencyDetail.SeychellesRupee, "pos": "before", "value": "SCR"},
  86545. {"name": currencyDetail.SaudiRiyal, "pos": "before", "value": "Rial"},
  86546. {"name": currencyDetail.SaoTomeDobra, "pos": "before", "value": "Db"},
  86547. {"name": currencyDetail.SaintHelenapound, "pos": "before", "value": "\uFFE1"},
  86548. {"name": currencyDetail.SriLankaRupee, "pos": "before", "value": "Rs"},
  86549. {"name": currencyDetail.SwazilandLilangeni, "pos": "before", "value": "SZL"},
  86550. {"name": currencyDetail.SudanesePound, "pos": "before", "value": "SDG"},
  86551. {"name": currencyDetail.Surinamesedollar, "pos": "before", "value": "$"},
  86552. {"name": currencyDetail.SolomonIslandsDollar, "pos": "before", "value": "$"},
  86553. {"name": currencyDetail.SomaliShilling, "pos": "before", "value": "SOS"},
  86554. {"name": currencyDetail.TajikistanSomoni, "pos": "before", "value": "Som"},
  86555. {"name": currencyDetail.PacificFranc, "pos": "after", "value": "FCFP"},
  86556. {"name": currencyDetail.ThaiBaht, "pos": "before", "value": "?"},
  86557. {"name": currencyDetail.TanzanianShilling, "pos": "before", "value": "TSh"},
  86558. {"name": currencyDetail.TonganPaanga, "pos": "before", "value": "T$"},
  86559. {"name": currencyDetail.TrinidadandTobagoDollar, "pos": "before", "value": "$"},
  86560. {"name": currencyDetail.TunisianDinar, "pos": "before", "value": "din"},
  86561. {"name": currencyDetail.TurkishLira, "pos": "before", "value": "?"},
  86562. {"name": currencyDetail.VanuatuVatu, "pos": "before", "value": "VUV"},
  86563. {"name": currencyDetail.GuatemalanQuetzal, "pos": "before", "value": "Q"},
  86564. {"name": currencyDetail.CommissionBolivar, "pos": "before", "value": "Bs"},
  86565. {"name": currencyDetail.BruneiDollar, "pos": "before", "value": "$"},
  86566. {"name": currencyDetail.UgandanShilling, "pos": "before", "value": "UGX"},
  86567. {"name": currencyDetail.UkrainianHryvnia, "pos": "before", "value": "\u0433\u0440\u043D."},
  86568. {"name": currencyDetail.UruguayanPeso, "pos": "before", "value": "$"},
  86569. {"name": currencyDetail.Uzbekistansom, "pos": "before", "value": "so?m"},
  86570. {"name": currencyDetail.WesternSamoaTala, "pos": "before", "value": "WST"},
  86571. {"name": currencyDetail.SingaporeDollar, "pos": "before", "value": "$"},
  86572. {"name": currencyDetail.NT, "pos": "before", "value": "NT$"},
  86573. {"name": currencyDetail.NewZealandDollar, "pos": "before", "value": "$"},
  86574. {"name": currencyDetail.HungarianForint, "pos": "before", "value": "Ft"},
  86575. {"name": currencyDetail.SyrianPound, "pos": "before", "value": "\uFFE1"},
  86576. {"name": currencyDetail.JamaicanDollar, "pos": "before", "value": "$"},
  86577. {"name": currencyDetail.ArmenianDram, "pos": "before", "value": "Dram"},
  86578. {"name": currencyDetail.YemeniRial, "pos": "before", "value": "Rial"},
  86579. {"name": currencyDetail.IraqiDinar, "pos": "before", "value": "din"},
  86580. {"name": currencyDetail.IranianRial, "pos": "before", "value": "Rial"},
  86581. {"name": currencyDetail.NewIsraeliShekel, "pos": "before", "value": "?"},
  86582. {"name": currencyDetail.IndianRupee, "pos": "before", "value": "?"},
  86583. {"name": currencyDetail.IndonesianRupiah, "pos": "before", "value": "Rp"},
  86584. {"name": currencyDetail.JordanianDinar, "pos": "before", "value": "din"},
  86585. {"name": currencyDetail.VND, "pos": "after", "value": "?"},
  86586. {"name": currencyDetail.ZambianKwacha, "pos": "before", "value": "ZMW"},
  86587. {"name": currencyDetail.GibraltarPound, "pos": "before", "value": "\uFFE1"},
  86588. {"name": currencyDetail.ChileanPeso, "pos": "before", "value": "$"},
  86589. {"name": currencyDetail.CFAFrancBEAC, "pos": "before", "value": "FCFA"}
  86590. ];
  86591. this.dateFmtList = locale_default().dateFmtList;
  86592. this.numFmtList = [
  86593. {
  86594. "name": "1235",
  86595. "value": "0"
  86596. },
  86597. {
  86598. "name": "1234.56",
  86599. "value": "0.00"
  86600. },
  86601. {
  86602. "name": "1,235",
  86603. "value": "#,##0"
  86604. },
  86605. {
  86606. "name": "1,234.56",
  86607. "value": "#,##0.00"
  86608. },
  86609. {
  86610. "name": "1,235",
  86611. "value": "#,##0_);(#,##0)"
  86612. },
  86613. {
  86614. "name": "1,235",
  86615. "value": "#,##0_);[Red](#,##0)"
  86616. },
  86617. {
  86618. "name": "1,234.56",
  86619. "value": "#,##0.00_);(#,##0.00)"
  86620. },
  86621. {
  86622. "name": "1,234.56",
  86623. "value": "#,##0.00_);[Red](#,##0.00)"
  86624. },
  86625. {
  86626. "name": "$1,235",
  86627. "value": "$#,##0_);($#,##0)"
  86628. },
  86629. {
  86630. "name": "$1,235",
  86631. "value": "$#,##0_);[Red]($#,##0)"
  86632. },
  86633. {
  86634. "name": "$1,234.56",
  86635. "value": "$#,##0.00_);($#,##0.00)"
  86636. },
  86637. {
  86638. "name": "$1,234.56",
  86639. "value": "$#,##0.00_);[Red]($#,##0.00)"
  86640. },
  86641. {
  86642. "name": "1234.56",
  86643. "value": "@"
  86644. },
  86645. {
  86646. "name": "123456%",
  86647. "value": "0%"
  86648. },
  86649. {
  86650. "name": "123456.00%",
  86651. "value": "0.00%"
  86652. },
  86653. {
  86654. "name": "1.23E+03",
  86655. "value": "0.00E+00"
  86656. },
  86657. {
  86658. "name": "1.2E+3",
  86659. "value": "##0.0E+0"
  86660. },
  86661. {
  86662. "name": "1234 5/9",
  86663. "value": "# ?/?"
  86664. },
  86665. {
  86666. "name": "1234 14/25",
  86667. "value": "# ??/??"
  86668. },
  86669. {
  86670. "name": "$ 1,235",
  86671. "value": '_($* #,##0_);_(...($* "-"_);_(@_)'
  86672. },
  86673. {
  86674. "name": "1,235",
  86675. "value": '_(* #,##0_);_(*..._(* "-"_);_(@_)'
  86676. },
  86677. {
  86678. "name": "$ 1,234.56",
  86679. "value": '_($* #,##0.00_);_(...($* "-"_);_(@_)'
  86680. },
  86681. {
  86682. "name": "1,234.56",
  86683. "value": '_(* #,##0.00_);...* "-"??_);_(@_)'
  86684. }
  86685. ];
  86686. $("#luckysheet-modal-dialog-mask").show();
  86687. $("#luckysheet-moreFormat-dialog").remove();
  86688. let title = "", content = "";
  86689. if (type == "morecurrency") {
  86690. title = locale_format.titleCurrency;
  86691. let listHtml = "";
  86692. for (let i2 = 0; i2 < _this.moneyFmtList.length; i2++) {
  86693. let name2 = _this.moneyFmtList[i2]["name"];
  86694. let pos = _this.moneyFmtList[i2]["pos"];
  86695. let value = _this.moneyFmtList[i2]["value"];
  86696. listHtml += '<div class="listItem"><div class="name">' + name2 + '</div><div class="value">' + value + '</div><input type="hidden" value="' + pos + '"/></div>';
  86697. }
  86698. content = '<div class="box" id="morecurrency"><div class="decimal"><label>' + locale_format.decimalPlaces + '\uFF1A</label><input type="number" class="formulaInputFocus" value="2" min="0" max="9"/></div><div class="listbox">' + listHtml + "</div></div>";
  86699. } else if (type == "moredatetime") {
  86700. title = locale_format.titleDateTime;
  86701. let listHtml = "";
  86702. for (let i2 = 0; i2 < _this.dateFmtList.length; i2++) {
  86703. let name2 = _this.dateFmtList[i2]["name"];
  86704. let value = _this.dateFmtList[i2]["value"];
  86705. listHtml += '<div class="listItem"><div class="name">' + name2 + '</div><div class="value">' + value + "</div></div>";
  86706. }
  86707. content = '<div class="box" id="moredatetime"><div class="listbox">' + listHtml + "</div></div>";
  86708. } else if (type == "moredigit") {
  86709. title = locale_format.titleNumber;
  86710. let listHtml = "";
  86711. for (let i2 = 0; i2 < _this.numFmtList.length; i2++) {
  86712. let name2 = _this.numFmtList[i2]["name"];
  86713. let value = _this.numFmtList[i2]["value"];
  86714. listHtml += '<div class="listItem"><div class="name">' + name2 + '</div><div class="value">' + value + "</div></div>";
  86715. }
  86716. content = '<div class="box" id="moredigit"><div class="listbox">' + listHtml + "</div></div>";
  86717. }
  86718. $("body").append(replaceHtml(modelHTML, {
  86719. "id": "luckysheet-moreFormat-dialog",
  86720. "addclass": "luckysheet-moreFormat-dialog",
  86721. "title": title,
  86722. "content": content,
  86723. "botton": '<button id="luckysheet-moreFormat-dialog-confirm" class="btn btn-primary">' + locale_button.confirm + '</button><button class="btn btn-default luckysheet-model-close-btn">' + locale_button.cancel + "</button>",
  86724. "style": "z-index:100003"
  86725. }));
  86726. let $t = $("#luckysheet-moreFormat-dialog").find(".luckysheet-modal-dialog-content").css("min-width", 400).end(), myh = $t.outerHeight(), myw = $t.outerWidth();
  86727. let winw = $(window).width(), winh = $(window).height();
  86728. let scrollLeft = $(document).scrollLeft(), scrollTop = $(document).scrollTop();
  86729. $("#luckysheet-moreFormat-dialog").css({"left": (winw + scrollLeft - myw) / 2, "top": (winh + scrollTop - myh) / 3}).show();
  86730. $("#luckysheet-moreFormat-dialog .listbox .listItem").eq(0).addClass("on");
  86731. },
  86732. init: function() {
  86733. let _this = this;
  86734. $(document).on("click", "#luckysheet-moreFormat-dialog .listbox .listItem", function() {
  86735. $(this).addClass("on").siblings().removeClass("on");
  86736. });
  86737. $(document).off("click.moreFormatConfirm").on("click.moreFormatConfirm", "#luckysheet-moreFormat-dialog #luckysheet-moreFormat-dialog-confirm", function() {
  86738. $("#luckysheet-moreFormat-dialog").hide();
  86739. $("#luckysheet-modal-dialog-mask").hide();
  86740. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  86741. let value = $("#luckysheet-moreFormat-dialog .listbox .listItem.on .value").text();
  86742. let id = $(this).parents("#luckysheet-moreFormat-dialog").find(".box").attr("id");
  86743. if (id == "morecurrency") {
  86744. if (value.indexOf("?") != -1) {
  86745. return;
  86746. }
  86747. let decimal = parseInt($("#luckysheet-moreFormat-dialog .decimal input").val().trim());
  86748. if (decimal.toString() == "NaN" || decimal < 0 || decimal > 9) {
  86749. if (isEditMode()) {
  86750. alert("\u5C0F\u6570\u4F4D\u6570\u5FC5\u987B\u57280-9\u4E4B\u95F4\uFF01");
  86751. } else {
  86752. tooltip_default.info("\u5C0F\u6570\u4F4D\u6570\u5FC5\u987B\u57280-9\u4E4B\u95F4\uFF01", "");
  86753. }
  86754. return;
  86755. }
  86756. let str = "";
  86757. if (decimal > 0) {
  86758. for (let i2 = 1; i2 <= decimal; i2++) {
  86759. str += "0";
  86760. }
  86761. str = "0." + str;
  86762. } else {
  86763. str = "#";
  86764. }
  86765. let pos = $("#luckysheet-moreFormat-dialog .listbox .listItem.on input:hidden").val();
  86766. if (pos == "before") {
  86767. str = '"' + value + '" ' + str;
  86768. } else if (pos == "after") {
  86769. str = str + ' "' + value + '"';
  86770. }
  86771. menuButton_default.updateFormat(d, "ct", str);
  86772. } else if (id == "moredatetime") {
  86773. menuButton_default.updateFormat(d, "ct", value);
  86774. } else if (id == "moredigit") {
  86775. menuButton_default.updateFormat(d, "ct", value);
  86776. }
  86777. });
  86778. }
  86779. };
  86780. moreFormat_default = luckysheetMoreFormat;
  86781. }
  86782. });
  86783. // node_modules/escape-html/index.js
  86784. var require_escape_html = __commonJS({
  86785. "node_modules/escape-html/index.js"(exports, module) {
  86786. "use strict";
  86787. var matchHtmlRegExp = /["'&<>]/;
  86788. module.exports = escapeHtml2;
  86789. function escapeHtml2(string) {
  86790. var str = "" + string;
  86791. var match = matchHtmlRegExp.exec(str);
  86792. if (!match) {
  86793. return str;
  86794. }
  86795. var escape;
  86796. var html = "";
  86797. var index2 = 0;
  86798. var lastIndex = 0;
  86799. for (index2 = match.index; index2 < str.length; index2++) {
  86800. switch (str.charCodeAt(index2)) {
  86801. case 34:
  86802. escape = "&quot;";
  86803. break;
  86804. case 38:
  86805. escape = "&amp;";
  86806. break;
  86807. case 39:
  86808. escape = "&#39;";
  86809. break;
  86810. case 60:
  86811. escape = "&lt;";
  86812. break;
  86813. case 62:
  86814. escape = "&gt;";
  86815. break;
  86816. default:
  86817. continue;
  86818. }
  86819. if (lastIndex !== index2) {
  86820. html += str.substring(lastIndex, index2);
  86821. }
  86822. lastIndex = index2 + 1;
  86823. html += escape;
  86824. }
  86825. return lastIndex !== index2 ? html + str.substring(lastIndex, index2) : html;
  86826. }
  86827. }
  86828. });
  86829. // src/controllers/searchReplace.js
  86830. var import_escape_html, luckysheetSearchReplace, searchReplace_default;
  86831. var init_searchReplace = __esm({
  86832. "src/controllers/searchReplace.js"() {
  86833. init_util();
  86834. init_get();
  86835. init_constant();
  86836. init_select();
  86837. init_sheetmanage();
  86838. init_validate();
  86839. init_format();
  86840. init_setdata();
  86841. init_refresh();
  86842. init_editor();
  86843. init_tooltip();
  86844. init_func_methods();
  86845. init_store();
  86846. init_locale();
  86847. init_protection();
  86848. import_escape_html = __toModule(require_escape_html());
  86849. luckysheetSearchReplace = {
  86850. createDialog: function(source) {
  86851. $("#luckysheet-modal-dialog-mask").hide();
  86852. $("#luckysheet-search-replace").remove();
  86853. const _locale = locale_default();
  86854. const locale_findAndReplace = _locale.findAndReplace;
  86855. const locale_button = _locale.button;
  86856. let content = '<div class="tabBox"><span id="searchTab">' + locale_findAndReplace.find + '</span><span id="replaceTab">' + locale_findAndReplace.replace + '</span></div><div class="ctBox"><div class="inputBox"><div class="textboxs" id="searchInput">' + locale_findAndReplace.findTextbox + '\uFF1A<input class="formulaInputFocus" spellcheck="false" value=""/></div><div class="textboxs" id="replaceInput">' + locale_findAndReplace.replaceTextbox + '\uFF1A<input class="formulaInputFocus" spellcheck="false" value=""/></div><div class="checkboxs"><div id="regCheck"><input type="checkbox"/><span>' + locale_findAndReplace.regexTextbox + '</span></div><div id="wordCheck"><input type="checkbox"/><span>' + locale_findAndReplace.wholeTextbox + '</span></div><div id="caseCheck"><input type="checkbox"/><span>' + locale_findAndReplace.distinguishTextbox + '</span></div></div></div><div class="btnBox"><button id="replaceAllBtn" class="btn btn-default">' + locale_findAndReplace.allReplaceBtn + '</button><button id="replaceBtn" class="btn btn-default">' + locale_findAndReplace.replaceBtn + '</button><button id="searchAllBtn" class="btn btn-default">' + locale_findAndReplace.allFindBtn + '</button><button id="searchNextBtn" class="btn btn-default">' + locale_findAndReplace.findBtn + "</button></div></div>";
  86857. $("body").append(replaceHtml(modelHTML, {
  86858. "id": "luckysheet-search-replace",
  86859. "addclass": "luckysheet-search-replace",
  86860. "title": "",
  86861. "content": content,
  86862. "botton": '<button class="btn btn-default luckysheet-model-close-btn">' + locale_button.close + "</button>",
  86863. "style": "z-index:100003",
  86864. "close": locale_button.close
  86865. }));
  86866. let $t = $("#luckysheet-search-replace").find(".luckysheet-modal-dialog-content").css("min-width", 500).end(), myh = $t.outerHeight(), myw = $t.outerWidth();
  86867. let winw = $(window).width(), winh = $(window).height();
  86868. let scrollLeft = $(document).scrollLeft(), scrollTop = $(document).scrollTop();
  86869. $("#luckysheet-search-replace").css({"left": (winw + scrollLeft - myw) / 2, "top": (winh + scrollTop - myh) / 3}).show();
  86870. if (source == "0") {
  86871. $("#luckysheet-search-replace #searchTab").addClass("on").siblings().removeClass("on");
  86872. $("#luckysheet-search-replace #replaceInput").hide();
  86873. $("#luckysheet-search-replace #replaceAllBtn").hide();
  86874. $("#luckysheet-search-replace #replaceBtn").hide();
  86875. } else if (source == "1") {
  86876. $("#luckysheet-search-replace #replaceTab").addClass("on").siblings().removeClass("on");
  86877. $("#luckysheet-search-replace #replaceInput").show();
  86878. $("#luckysheet-search-replace #replaceAllBtn").show();
  86879. $("#luckysheet-search-replace #replaceBtn").show();
  86880. }
  86881. },
  86882. init: function() {
  86883. let _this = this;
  86884. $(document).off("click.SRtabBoxspan").on("click.SRtabBoxspan", "#luckysheet-search-replace .tabBox span", function() {
  86885. $(this).addClass("on").siblings().removeClass("on");
  86886. let $id = $(this).attr("id");
  86887. if ($id == "searchTab") {
  86888. $("#luckysheet-search-replace #replaceInput").hide();
  86889. $("#luckysheet-search-replace #replaceAllBtn").hide();
  86890. $("#luckysheet-search-replace #replaceBtn").hide();
  86891. $("#luckysheet-search-replace #searchInput input").focus();
  86892. } else if ($id == "replaceTab") {
  86893. $("#luckysheet-search-replace #replaceInput").show();
  86894. $("#luckysheet-search-replace #replaceAllBtn").show();
  86895. $("#luckysheet-search-replace #replaceBtn").show();
  86896. $("#luckysheet-search-replace #replaceInput input").focus();
  86897. }
  86898. });
  86899. $(document).off("keyup.SRsearchInput").on("keyup.SRsearchInput", "#luckysheet-search-replace #searchInput input", function(event2) {
  86900. let kcode = event2.keyCode;
  86901. if (kcode == keycode.ENTER) {
  86902. _this.searchNext();
  86903. }
  86904. });
  86905. $(document).off("click.SRsearchNextBtn").on("click.SRsearchNextBtn", "#luckysheet-search-replace #searchNextBtn", function() {
  86906. _this.searchNext();
  86907. });
  86908. $(document).off("click.SRsearchAllBtn").on("click.SRsearchAllBtn", "#luckysheet-search-replace #searchAllBtn", function() {
  86909. _this.searchAll();
  86910. });
  86911. $(document).off("click.SRsearchAllboxItem").on("click.SRsearchAllboxItem", "#luckysheet-search-replace #searchAllbox .boxItem", function() {
  86912. $(this).addClass("on").siblings().removeClass("on");
  86913. let r2 = $(this).attr("data-row");
  86914. let c2 = $(this).attr("data-col");
  86915. let sheetIndex = $(this).attr("data-sheetIndex");
  86916. if (sheetIndex != store_default.currentSheetIndex) {
  86917. sheetmanage_default.changeSheetExec(sheetIndex);
  86918. }
  86919. store_default.luckysheet_select_save = [
  86920. {"row": [r2, r2], "column": [c2, c2]}
  86921. ];
  86922. selectHightlightShow();
  86923. let scrollLeft = $("#luckysheet-cell-main").scrollLeft(), scrollTop = $("#luckysheet-cell-main").scrollTop();
  86924. let winH = $("#luckysheet-cell-main").height(), winW = $("#luckysheet-cell-main").width();
  86925. let row = store_default.visibledatarow[r2], row_pre = r2 - 1 == -1 ? 0 : store_default.visibledatarow[r2 - 1];
  86926. let col = store_default.visibledatacolumn[c2], col_pre = c2 - 1 == -1 ? 0 : store_default.visibledatacolumn[c2 - 1];
  86927. if (col - scrollLeft - winW + 20 > 0) {
  86928. $("#luckysheet-scrollbar-x").scrollLeft(col - winW + 20);
  86929. } else if (col_pre - scrollLeft - 20 < 0) {
  86930. $("#luckysheet-scrollbar-x").scrollLeft(col_pre - 20);
  86931. }
  86932. if (row - scrollTop - winH + 20 > 0) {
  86933. $("#luckysheet-scrollbar-y").scrollTop(row - winH + 20);
  86934. } else if (row_pre - scrollTop - 20 < 0) {
  86935. $("#luckysheet-scrollbar-y").scrollTop(row_pre - 20);
  86936. }
  86937. });
  86938. $(document).off("click.SRreplaceBtn").on("click.SRreplaceBtn", "#luckysheet-search-replace #replaceBtn", function() {
  86939. _this.replace();
  86940. });
  86941. $(document).off("click.SRreplaceAllBtn").on("click.SRreplaceAllBtn", "#luckysheet-search-replace #replaceAllBtn", function() {
  86942. _this.replaceAll();
  86943. });
  86944. },
  86945. searchNext: function() {
  86946. let _this = this;
  86947. let searchText = $("#luckysheet-search-replace #searchInput input").val();
  86948. if (searchText == "" || searchText == null) {
  86949. return;
  86950. }
  86951. const _locale = locale_default();
  86952. const locale_findAndReplace = _locale.findAndReplace;
  86953. let range2;
  86954. if (store_default.luckysheet_select_save.length == 0 || store_default.luckysheet_select_save.length == 1 && store_default.luckysheet_select_save[0].row[0] == store_default.luckysheet_select_save[0].row[1] && store_default.luckysheet_select_save[0].column[0] == store_default.luckysheet_select_save[0].column[1]) {
  86955. range2 = [{
  86956. "row": [0, store_default.flowdata.length - 1],
  86957. "column": [0, store_default.flowdata[0].length - 1]
  86958. }];
  86959. } else {
  86960. range2 = $.extend(true, [], store_default.luckysheet_select_save);
  86961. }
  86962. let searchIndexArr = _this.getSearchIndexArr(searchText, range2);
  86963. if (searchIndexArr.length == 0) {
  86964. if (isEditMode()) {
  86965. alert(locale_findAndReplace.noFindTip);
  86966. } else {
  86967. tooltip_default.info(locale_findAndReplace.noFindTip, "");
  86968. }
  86969. return;
  86970. }
  86971. let count = 0;
  86972. if (store_default.luckysheet_select_save.length == 0 || store_default.luckysheet_select_save.length == 1 && store_default.luckysheet_select_save[0].row[0] == store_default.luckysheet_select_save[0].row[1] && store_default.luckysheet_select_save[0].column[0] == store_default.luckysheet_select_save[0].column[1]) {
  86973. if (store_default.luckysheet_select_save.length == 0) {
  86974. count = 0;
  86975. } else {
  86976. for (let i2 = 0; i2 < searchIndexArr.length; i2++) {
  86977. if (searchIndexArr[i2].r == store_default.luckysheet_select_save[0].row[0] && searchIndexArr[i2].c == store_default.luckysheet_select_save[0].column[0]) {
  86978. if (i2 == searchIndexArr.length - 1) {
  86979. count = 0;
  86980. } else {
  86981. count = i2 + 1;
  86982. }
  86983. break;
  86984. }
  86985. }
  86986. }
  86987. store_default.luckysheet_select_save = [{
  86988. "row": [searchIndexArr[count].r, searchIndexArr[count].r],
  86989. "column": [searchIndexArr[count].c, searchIndexArr[count].c]
  86990. }];
  86991. } else {
  86992. let rf = range2[range2.length - 1].row_focus;
  86993. let cf = range2[range2.length - 1].column_focus;
  86994. for (let i2 = 0; i2 < searchIndexArr.length; i2++) {
  86995. if (searchIndexArr[i2].r == rf && searchIndexArr[i2].c == cf) {
  86996. if (i2 == searchIndexArr.length - 1) {
  86997. count = 0;
  86998. } else {
  86999. count = i2 + 1;
  87000. }
  87001. break;
  87002. }
  87003. }
  87004. for (let s = 0; s < range2.length; s++) {
  87005. let r1 = range2[s].row[0], r2 = range2[s].row[1];
  87006. let c1 = range2[s].column[0], c2 = range2[s].column[1];
  87007. if (searchIndexArr[count].r >= r1 && searchIndexArr[count].r <= r2 && searchIndexArr[count].c >= c1 && searchIndexArr[count].c <= c2) {
  87008. let obj = range2[s];
  87009. obj["row_focus"] = searchIndexArr[count].r;
  87010. obj["column_focus"] = searchIndexArr[count].c;
  87011. range2.splice(s, 1);
  87012. range2.push(obj);
  87013. break;
  87014. }
  87015. }
  87016. store_default.luckysheet_select_save = range2;
  87017. }
  87018. selectHightlightShow();
  87019. let scrollLeft = $("#luckysheet-cell-main").scrollLeft(), scrollTop = $("#luckysheet-cell-main").scrollTop();
  87020. let winH = $("#luckysheet-cell-main").height(), winW = $("#luckysheet-cell-main").width();
  87021. let row = store_default.visibledatarow[searchIndexArr[count].r], row_pre = searchIndexArr[count].r - 1 == -1 ? 0 : store_default.visibledatarow[searchIndexArr[count].r - 1];
  87022. let col = store_default.visibledatacolumn[searchIndexArr[count].c], col_pre = searchIndexArr[count].c - 1 == -1 ? 0 : store_default.visibledatacolumn[searchIndexArr[count].c - 1];
  87023. if (col - scrollLeft - winW + 20 > 0) {
  87024. $("#luckysheet-scrollbar-x").scrollLeft(col - winW + 20);
  87025. } else if (col_pre - scrollLeft - 20 < 0) {
  87026. $("#luckysheet-scrollbar-x").scrollLeft(col_pre - 20);
  87027. }
  87028. if (row - scrollTop - winH + 20 > 0) {
  87029. $("#luckysheet-scrollbar-y").scrollTop(row - winH + 20);
  87030. } else if (row_pre - scrollTop - 20 < 0) {
  87031. $("#luckysheet-scrollbar-y").scrollTop(row_pre - 20);
  87032. }
  87033. if ($("#searchAllbox").is(":visible")) {
  87034. $("#luckysheet-search-replace #searchAllbox .boxItem").removeClass("on");
  87035. }
  87036. },
  87037. searchAll: function() {
  87038. let _this = this;
  87039. const _locale = locale_default();
  87040. const locale_findAndReplace = _locale.findAndReplace;
  87041. $("#luckysheet-search-replace #searchAllbox").remove();
  87042. let searchText = $("#luckysheet-search-replace #searchInput input").val();
  87043. if (searchText == "" || searchText == null) {
  87044. return;
  87045. }
  87046. let range2;
  87047. if (store_default.luckysheet_select_save.length == 0 || store_default.luckysheet_select_save.length == 1 && store_default.luckysheet_select_save[0].row[0] == store_default.luckysheet_select_save[0].row[1] && store_default.luckysheet_select_save[0].column[0] == store_default.luckysheet_select_save[0].column[1]) {
  87048. range2 = [{
  87049. "row": [0, store_default.flowdata.length - 1],
  87050. "column": [0, store_default.flowdata[0].length - 1]
  87051. }];
  87052. } else {
  87053. range2 = $.extend(true, [], store_default.luckysheet_select_save);
  87054. }
  87055. let searchIndexArr = _this.getSearchIndexArr(searchText, range2);
  87056. if (searchIndexArr.length == 0) {
  87057. if (isEditMode()) {
  87058. alert(locale_findAndReplace.noFindTip);
  87059. } else {
  87060. tooltip_default.info(locale_findAndReplace.noFindTip, "");
  87061. }
  87062. return;
  87063. }
  87064. let searchAllHtml = "";
  87065. for (let i2 = 0; i2 < searchIndexArr.length; i2++) {
  87066. let value_ShowEs = valueShowEs(searchIndexArr[i2].r, searchIndexArr[i2].c, store_default.flowdata).toString();
  87067. if (value_ShowEs.indexOf("</") > -1 && value_ShowEs.indexOf(">") > -1) {
  87068. searchAllHtml += '<div class="boxItem" data-row="' + searchIndexArr[i2].r + '" data-col="' + searchIndexArr[i2].c + '" data-sheetIndex="' + store_default.currentSheetIndex + '"><span>' + (0, import_escape_html.default)(store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)].name) + "</span><span>" + chatatABC(searchIndexArr[i2].c) + (searchIndexArr[i2].r + 1) + "</span><span>" + (0, import_escape_html.default)(value_ShowEs) + "</span></div>";
  87069. } else {
  87070. searchAllHtml += '<div class="boxItem" data-row="' + searchIndexArr[i2].r + '" data-col="' + searchIndexArr[i2].c + '" data-sheetIndex="' + store_default.currentSheetIndex + '"><span>' + store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)].name + "</span><span>" + chatatABC(searchIndexArr[i2].c) + (searchIndexArr[i2].r + 1) + '</span><span title="' + (0, import_escape_html.default)(value_ShowEs) + '">' + (0, import_escape_html.default)(value_ShowEs) + "</span></div>";
  87071. }
  87072. }
  87073. $(`<div id="searchAllbox"><div class="boxTitle"><span>${locale_findAndReplace.searchTargetSheet}</span><span>${locale_findAndReplace.searchTargetCell}</span><span>${locale_findAndReplace.searchTargetValue}</span></div><div class="boxMain">${searchAllHtml}</div></div>`).appendTo($("#luckysheet-search-replace"));
  87074. $("#luckysheet-search-replace #searchAllbox .boxItem").eq(0).addClass("on").siblings().removeClass("on");
  87075. store_default.luckysheet_select_save = [{
  87076. "row": [searchIndexArr[0].r, searchIndexArr[0].r],
  87077. "column": [searchIndexArr[0].c, searchIndexArr[0].c]
  87078. }];
  87079. selectHightlightShow();
  87080. },
  87081. getSearchIndexArr: function(searchText, range2) {
  87082. const arr = [];
  87083. const obj = {};
  87084. const $container = $("#luckysheet-search-replace");
  87085. const isChecked = (inputId) => $container.find(`#${inputId} input[type='checkbox']`).is(":checked");
  87086. const regCheck = isChecked("regCheck");
  87087. const wordCheck = isChecked("wordCheck");
  87088. const caseCheck = isChecked("caseCheck");
  87089. let regExpFlags = "g";
  87090. if (!caseCheck) {
  87091. searchText = searchText.toLowerCase();
  87092. regExpFlags += "i";
  87093. }
  87094. const addResult = (r2, c2) => {
  87095. if (!(r2 + "_" + c2 in obj)) {
  87096. obj[r2 + "_" + c2] = 0;
  87097. arr.push({"r": r2, "c": c2});
  87098. }
  87099. };
  87100. for (let s = 0; s < range2.length; s++) {
  87101. const r1 = range2[s].row[0], r2 = range2[s].row[1];
  87102. const c1 = range2[s].column[0], c2 = range2[s].column[1];
  87103. for (let r3 = r1; r3 <= r2; r3++) {
  87104. for (let c3 = c1; c3 <= c2; c3++) {
  87105. const cell = store_default.flowdata[r3][c3];
  87106. if (cell != null) {
  87107. let value = valueShowEs(r3, c3, store_default.flowdata);
  87108. if (value == 0) {
  87109. value = value.toString();
  87110. }
  87111. if (value != null && value != "") {
  87112. let wasFound = false;
  87113. value = value.toString();
  87114. value = caseCheck ? value : value.toLowerCase();
  87115. if (wordCheck) {
  87116. wasFound = searchText == value;
  87117. } else if (regCheck) {
  87118. let reg = new RegExp(func_methods_default.getRegExpStr(searchText), regExpFlags);
  87119. wasFound = reg.test(value);
  87120. } else {
  87121. wasFound = ~value.indexOf(searchText);
  87122. }
  87123. wasFound && addResult(r3, c3);
  87124. }
  87125. }
  87126. }
  87127. }
  87128. }
  87129. return arr;
  87130. },
  87131. replace: function() {
  87132. let _this = this;
  87133. const _locale = locale_default();
  87134. const locale_findAndReplace = _locale.findAndReplace;
  87135. if (!store_default.allowEdit) {
  87136. tooltip_default.info(locale_findAndReplace.modeTip, "");
  87137. return;
  87138. }
  87139. let searchText = $("#luckysheet-search-replace #searchInput input").val();
  87140. if (searchText == "" || searchText == null) {
  87141. if (isEditMode()) {
  87142. alert(locale_findAndReplace.searchInputTip);
  87143. } else {
  87144. tooltip_default.info(locale_findAndReplace.searchInputTip, "");
  87145. }
  87146. return;
  87147. }
  87148. let range2;
  87149. if (store_default.luckysheet_select_save.length == 0 || store_default.luckysheet_select_save.length == 1 && store_default.luckysheet_select_save[0].row[0] == store_default.luckysheet_select_save[0].row[1] && store_default.luckysheet_select_save[0].column[0] == store_default.luckysheet_select_save[0].column[1]) {
  87150. range2 = [{
  87151. "row": [0, store_default.flowdata.length - 1],
  87152. "column": [0, store_default.flowdata[0].length - 1]
  87153. }];
  87154. } else {
  87155. range2 = $.extend(true, [], store_default.luckysheet_select_save);
  87156. }
  87157. let searchIndexArr = _this.getSearchIndexArr(searchText, range2);
  87158. if (searchIndexArr.length == 0) {
  87159. if (isEditMode()) {
  87160. alert(locale_findAndReplace.noReplceTip);
  87161. } else {
  87162. tooltip_default.info(locale_findAndReplace.noReplceTip, "");
  87163. }
  87164. return;
  87165. }
  87166. let count = null;
  87167. let last = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1];
  87168. let rf = last.row_focus;
  87169. let cf = last.column_focus;
  87170. for (let i2 = 0; i2 < searchIndexArr.length; i2++) {
  87171. if (searchIndexArr[i2].r == rf && searchIndexArr[i2].c == cf) {
  87172. count = i2;
  87173. break;
  87174. }
  87175. }
  87176. if (count == null) {
  87177. if (searchIndexArr.length == 0) {
  87178. if (isEditMode()) {
  87179. alert(locale_findAndReplace.noMatchTip);
  87180. } else {
  87181. tooltip_default.info(locale_findAndReplace.noMatchTip, "");
  87182. }
  87183. return;
  87184. } else {
  87185. count = 0;
  87186. }
  87187. }
  87188. let regCheck = false;
  87189. if ($("#luckysheet-search-replace #regCheck input[type='checkbox']").is(":checked")) {
  87190. regCheck = true;
  87191. }
  87192. let wordCheck = false;
  87193. if ($("#luckysheet-search-replace #wordCheck input[type='checkbox']").is(":checked")) {
  87194. wordCheck = true;
  87195. }
  87196. let caseCheck = false;
  87197. if ($("#luckysheet-search-replace #caseCheck input[type='checkbox']").is(":checked")) {
  87198. caseCheck = true;
  87199. }
  87200. let replaceText = $("#luckysheet-search-replace #replaceInput input").val();
  87201. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  87202. let r2, c2;
  87203. if (wordCheck) {
  87204. r2 = searchIndexArr[count].r;
  87205. c2 = searchIndexArr[count].c;
  87206. let v = replaceText;
  87207. if (!checkProtectionLocked(r2, c2, store_default.currentSheetIndex)) {
  87208. return;
  87209. }
  87210. setcellvalue(r2, c2, d, v);
  87211. } else {
  87212. let reg;
  87213. if (caseCheck) {
  87214. reg = new RegExp(func_methods_default.getRegExpStr(searchText), "g");
  87215. } else {
  87216. reg = new RegExp(func_methods_default.getRegExpStr(searchText), "ig");
  87217. }
  87218. r2 = searchIndexArr[count].r;
  87219. c2 = searchIndexArr[count].c;
  87220. if (!checkProtectionLocked(r2, c2, store_default.currentSheetIndex)) {
  87221. return;
  87222. }
  87223. let v = valueShowEs(r2, c2, d).toString().replace(reg, replaceText);
  87224. setcellvalue(r2, c2, d, v);
  87225. }
  87226. store_default.luckysheet_select_save = [{"row": [r2, r2], "column": [c2, c2]}];
  87227. if ($("#luckysheet-search-replace #searchAllbox").is(":visible")) {
  87228. $("#luckysheet-search-replace #searchAllbox").hide();
  87229. }
  87230. jfrefreshgrid(d, store_default.luckysheet_select_save);
  87231. selectHightlightShow();
  87232. let scrollLeft = $("#luckysheet-cell-main").scrollLeft(), scrollTop = $("#luckysheet-cell-main").scrollTop();
  87233. let winH = $("#luckysheet-cell-main").height(), winW = $("#luckysheet-cell-main").width();
  87234. let row = store_default.visibledatarow[r2], row_pre = r2 - 1 == -1 ? 0 : store_default.visibledatarow[r2 - 1];
  87235. let col = store_default.visibledatacolumn[c2], col_pre = c2 - 1 == -1 ? 0 : store_default.visibledatacolumn[c2 - 1];
  87236. if (col - scrollLeft - winW + 20 > 0) {
  87237. $("#luckysheet-scrollbar-x").scrollLeft(col - winW + 20);
  87238. } else if (col_pre - scrollLeft - 20 < 0) {
  87239. $("#luckysheet-scrollbar-x").scrollLeft(col_pre - 20);
  87240. }
  87241. if (row - scrollTop - winH + 20 > 0) {
  87242. $("#luckysheet-scrollbar-y").scrollTop(row - winH + 20);
  87243. } else if (row_pre - scrollTop - 20 < 0) {
  87244. $("#luckysheet-scrollbar-y").scrollTop(row_pre - 20);
  87245. }
  87246. },
  87247. replaceAll: function() {
  87248. let _this = this;
  87249. const _locale = locale_default();
  87250. const locale_findAndReplace = _locale.findAndReplace;
  87251. if (!store_default.allowEdit) {
  87252. tooltip_default.info(locale_findAndReplace.modeTip, "");
  87253. return;
  87254. }
  87255. let searchText = $("#luckysheet-search-replace #searchInput input").val();
  87256. if (searchText == "" || searchText == null) {
  87257. if (isEditMode()) {
  87258. alert(locale_findAndReplace.searchInputTip);
  87259. } else {
  87260. tooltip_default.info(locale_findAndReplace.searchInputTip, "");
  87261. }
  87262. return;
  87263. }
  87264. let range2;
  87265. if (store_default.luckysheet_select_save.length == 0 || store_default.luckysheet_select_save.length == 1 && store_default.luckysheet_select_save[0].row[0] == store_default.luckysheet_select_save[0].row[1] && store_default.luckysheet_select_save[0].column[0] == store_default.luckysheet_select_save[0].column[1]) {
  87266. range2 = [{
  87267. "row": [0, store_default.flowdata.length - 1],
  87268. "column": [0, store_default.flowdata[0].length - 1]
  87269. }];
  87270. } else {
  87271. range2 = $.extend(true, [], store_default.luckysheet_select_save);
  87272. }
  87273. let searchIndexArr = _this.getSearchIndexArr(searchText, range2);
  87274. if (searchIndexArr.length == 0) {
  87275. if (isEditMode()) {
  87276. alert(locale_findAndReplace.noReplceTip);
  87277. } else {
  87278. tooltip_default.info(locale_findAndReplace.noReplceTip, "");
  87279. }
  87280. return;
  87281. }
  87282. let regCheck = false;
  87283. if ($("#luckysheet-search-replace #regCheck input[type='checkbox']").is(":checked")) {
  87284. regCheck = true;
  87285. }
  87286. let wordCheck = false;
  87287. if ($("#luckysheet-search-replace #wordCheck input[type='checkbox']").is(":checked")) {
  87288. wordCheck = true;
  87289. }
  87290. let caseCheck = false;
  87291. if ($("#luckysheet-search-replace #caseCheck input[type='checkbox']").is(":checked")) {
  87292. caseCheck = true;
  87293. }
  87294. let replaceText = $("#luckysheet-search-replace #replaceInput input").val();
  87295. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  87296. let replaceCount = 0;
  87297. if (wordCheck) {
  87298. for (let i2 = 0; i2 < searchIndexArr.length; i2++) {
  87299. let r2 = searchIndexArr[i2].r;
  87300. let c2 = searchIndexArr[i2].c;
  87301. if (!checkProtectionLocked(r2, c2, store_default.currentSheetIndex, false)) {
  87302. continue;
  87303. }
  87304. let v = replaceText;
  87305. setcellvalue(r2, c2, d, v);
  87306. range2.push({"row": [r2, r2], "column": [c2, c2]});
  87307. replaceCount++;
  87308. }
  87309. } else {
  87310. let reg;
  87311. if (caseCheck) {
  87312. reg = new RegExp(func_methods_default.getRegExpStr(searchText), "g");
  87313. } else {
  87314. reg = new RegExp(func_methods_default.getRegExpStr(searchText), "ig");
  87315. }
  87316. for (let i2 = 0; i2 < searchIndexArr.length; i2++) {
  87317. let r2 = searchIndexArr[i2].r;
  87318. let c2 = searchIndexArr[i2].c;
  87319. if (!checkProtectionLocked(r2, c2, store_default.currentSheetIndex, false)) {
  87320. continue;
  87321. }
  87322. let v = valueShowEs(r2, c2, d).toString().replace(reg, replaceText);
  87323. setcellvalue(r2, c2, d, v);
  87324. range2.push({"row": [r2, r2], "column": [c2, c2]});
  87325. replaceCount++;
  87326. }
  87327. }
  87328. if ($("#luckysheet-search-replace #searchAllbox").is(":visible")) {
  87329. $("#luckysheet-search-replace #searchAllbox").hide();
  87330. }
  87331. jfrefreshgrid(d, range2);
  87332. store_default.luckysheet_select_save = $.extend(true, [], range2);
  87333. selectHightlightShow();
  87334. let succeedInfo = replaceHtml(locale_findAndReplace.successTip, {
  87335. "xlength": replaceCount
  87336. });
  87337. if (isEditMode()) {
  87338. alert(succeedInfo);
  87339. } else {
  87340. tooltip_default.info(succeedInfo, "");
  87341. }
  87342. }
  87343. };
  87344. searchReplace_default = luckysheetSearchReplace;
  87345. }
  87346. });
  87347. // src/controllers/locationCell.js
  87348. var luckysheetLocationCell, locationCell_default;
  87349. var init_locationCell = __esm({
  87350. "src/controllers/locationCell.js"() {
  87351. init_util();
  87352. init_get();
  87353. init_validate();
  87354. init_validate();
  87355. init_tooltip();
  87356. init_constant();
  87357. init_select();
  87358. init_conditionformat();
  87359. init_store();
  87360. init_locale();
  87361. luckysheetLocationCell = {
  87362. createDialog: function() {
  87363. $("#luckysheet-modal-dialog-mask").show();
  87364. $("#luckysheet-locationCell-dialog").remove();
  87365. const _locale = locale_default();
  87366. const locale_location = _locale.findAndReplace;
  87367. const locale_button = _locale.button;
  87368. let content = '<div class="listbox"><div class="listItem"><input type="radio" name="locationType" checked="checked" id="locationConstant"><label for="locationConstant">' + locale_location.locationConstant + '</label><div class="subbox"><div class="subItem"><input type="checkbox" checked="checked" class="date" id="locationConstantDate"><label for="locationConstantDate">' + locale_location.locationDate + '</label></div><div class="subItem"><input type="checkbox" checked="checked" class="number" id="locationConstantNumber"><label for="locationConstantNumber">' + locale_location.locationDigital + '</label></div><div class="subItem"><input type="checkbox" checked="checked" class="string" id="locationConstantString"><label for="locationConstantString">' + locale_location.locationString + '</label></div><div class="subItem"><input type="checkbox" checked="checked" class="boolean" id="locationConstantBoolean"><label for="locationConstantBoolean">' + locale_location.locationBool + '</label></div><div class="subItem"><input type="checkbox" checked="checked" class="error" id="locationConstantError"><label for="locationConstantError">' + locale_location.locationBool + '</label></div></div></div><div class="listItem"><input type="radio" name="locationType" id="locationFormula"><label for="locationFormula">' + locale_location.locationFormula + '</label><div class="subbox"><div class="subItem"><input type="checkbox" checked="checked" class="date" id="locationFormulaDate" disabled="true"><label for="locationFormulaDate" style="color: #666">' + locale_location.locationDate + '</label></div><div class="subItem"><input type="checkbox" checked="checked" class="number" id="locationFormulaNumber" disabled="true"><label for="locationFormulaNumber" style="color: #666">' + locale_location.locationDigital + '</label></div><div class="subItem"><input type="checkbox" checked="checked" class="string" id="locationFormulaString" disabled="true"><label for="locationFormulaString" style="color: #666">' + locale_location.locationString + '</label></div><div class="subItem"><input type="checkbox" checked="checked" class="boolean" id="locationFormulaBoolean" disabled="true"><label for="locationFormulaBoolean" style="color: #666">' + locale_location.locationBool + '</label></div><div class="subItem"><input type="checkbox" checked="checked" class="error" id="locationFormulaError" disabled="true"><label for="locationFormulaError" style="color: #666">' + locale_location.locationError + '</label></div></div></div><div class="listItem"><input type="radio" name="locationType" id="locationNull"><label for="locationNull">' + locale_location.locationNull + '</label></div><div class="listItem"><input type="radio" name="locationType" id="locationCF"><label for="locationCF">' + locale_location.locationCondition + '</label></div><div class="listItem"><input type="radio" name="locationType" id="locationStepRow"><label for="locationStepRow">' + locale_location.locationRowSpan + '</label></div><div class="listItem"><input type="radio" name="locationType" id="locationStepColumn"><label for="locationStepColumn">' + locale_location.locationColumnSpan + "</label></div></div>";
  87369. $("body").append(replaceHtml(modelHTML, {
  87370. "id": "luckysheet-locationCell-dialog",
  87371. "addclass": "luckysheet-locationCell-dialog",
  87372. "title": locale_location.location,
  87373. "content": content,
  87374. "botton": '<button id="luckysheet-locationCell-dialog-confirm" class="btn btn-primary">' + locale_button.confirm + '</button><button class="btn btn-default luckysheet-model-close-btn">' + locale_button.cancel + "</button>",
  87375. "style": "z-index:100003"
  87376. }));
  87377. let $t = $("#luckysheet-locationCell-dialog").find(".luckysheet-modal-dialog-content").css("min-width", 400).end(), myh = $t.outerHeight(), myw = $t.outerWidth();
  87378. let winw = $(window).width(), winh = $(window).height();
  87379. let scrollLeft = $(document).scrollLeft(), scrollTop = $(document).scrollTop();
  87380. $("#luckysheet-locationCell-dialog").css({"left": (winw + scrollLeft - myw) / 2, "top": (winh + scrollTop - myh) / 3}).show();
  87381. },
  87382. init: function() {
  87383. let _this = this;
  87384. const locale_location = locale_default().findAndReplace;
  87385. $(document).on("click", "#luckysheet-locationCell-dialog .listItem input:radio", function(e) {
  87386. $("#luckysheet-locationCell-dialog .listItem input:checkbox").prop("disabled", true);
  87387. $("#luckysheet-locationCell-dialog .listItem .subbox label").css("color", "#666");
  87388. $(this).siblings(".subbox").find("input:checkbox").removeAttr("disabled");
  87389. $(this).siblings(".subbox").find("label").css("color", "#000");
  87390. });
  87391. $(document).off("click.locationCellConfirm").on("click.locationCellConfirm", "#luckysheet-locationCell-dialog #luckysheet-locationCell-dialog-confirm", function() {
  87392. $("#luckysheet-modal-dialog-mask").hide();
  87393. $("#luckysheet-locationCell-dialog").hide();
  87394. let $radio = $("#luckysheet-locationCell-dialog .listItem input:radio:checked");
  87395. let id = $radio.attr("id");
  87396. if (id == "locationConstant" || id == "locationFormula") {
  87397. let $checkbox = $radio.siblings(".subbox").find("input:checkbox:checked");
  87398. let value;
  87399. if ($checkbox.length == 0) {
  87400. return;
  87401. } else if ($checkbox.length == 5) {
  87402. value = "all";
  87403. } else {
  87404. let arr = [];
  87405. for (let i2 = 0; i2 < $checkbox.length; i2++) {
  87406. if ($($checkbox[i2]).hasClass("date")) {
  87407. arr.push("d");
  87408. } else if ($($checkbox[i2]).hasClass("number")) {
  87409. arr.push("n");
  87410. } else if ($($checkbox[i2]).hasClass("string")) {
  87411. arr.push("s,g");
  87412. } else if ($($checkbox[i2]).hasClass("boolean")) {
  87413. arr.push("b");
  87414. } else if ($($checkbox[i2]).hasClass("error")) {
  87415. arr.push("e");
  87416. }
  87417. }
  87418. value = arr.join(",");
  87419. }
  87420. let range2;
  87421. if (store_default.luckysheet_select_save.length == 0 || store_default.luckysheet_select_save.length == 1 && store_default.luckysheet_select_save[0].row[0] == store_default.luckysheet_select_save[0].row[1] && store_default.luckysheet_select_save[0].column[0] == store_default.luckysheet_select_save[0].column[1]) {
  87422. range2 = [{"row": [0, store_default.flowdata.length - 1], "column": [0, store_default.flowdata[0].length - 1]}];
  87423. } else {
  87424. range2 = $.extend(true, [], store_default.luckysheet_select_save);
  87425. }
  87426. _this.apply(range2, id, value);
  87427. } else if (id == "locationStepRow") {
  87428. if (store_default.luckysheet_select_save.length == 0 || store_default.luckysheet_select_save.length == 1 && store_default.luckysheet_select_save[0].row[0] == store_default.luckysheet_select_save[0].row[1]) {
  87429. if (isEditMode()) {
  87430. alert(locale_location.locationTiplessTwoRow);
  87431. } else {
  87432. tooltip_default.info("", locale_location.locationTiplessTwoRow);
  87433. }
  87434. return;
  87435. }
  87436. let range2 = $.extend(true, [], store_default.luckysheet_select_save);
  87437. _this.apply(range2, "locationStepRow");
  87438. } else if (id == "locationStepColumn") {
  87439. if (store_default.luckysheet_select_save.length == 0 || store_default.luckysheet_select_save.length == 1 && store_default.luckysheet_select_save[0].column[0] == store_default.luckysheet_select_save[0].column[1]) {
  87440. if (isEditMode()) {
  87441. alert(locale_location.locationTiplessTwoColumn);
  87442. } else {
  87443. tooltip_default.info("", locale_location.locationTiplessTwoColumn);
  87444. }
  87445. return;
  87446. }
  87447. let range2 = $.extend(true, [], store_default.luckysheet_select_save);
  87448. _this.apply(range2, "locationStepColumn");
  87449. } else {
  87450. let range2;
  87451. if (store_default.luckysheet_select_save.length == 0 || store_default.luckysheet_select_save.length == 1 && store_default.luckysheet_select_save[0].row[0] == store_default.luckysheet_select_save[0].row[1] && store_default.luckysheet_select_save[0].column[0] == store_default.luckysheet_select_save[0].column[1]) {
  87452. range2 = [{"row": [0, store_default.flowdata.length - 1], "column": [0, store_default.flowdata[0].length - 1]}];
  87453. } else {
  87454. range2 = $.extend(true, [], store_default.luckysheet_select_save);
  87455. }
  87456. _this.apply(range2, id);
  87457. }
  87458. });
  87459. },
  87460. apply: function(range2, type, value) {
  87461. const locale_location = locale_default().findAndReplace;
  87462. let rangeArr = [];
  87463. if (type == "locationFormula" || type == "locationConstant" || type == "locationNull") {
  87464. let minR = null, maxR = null, minC = null, maxC = null, cellSave = {};
  87465. for (let s = 0; s < range2.length; s++) {
  87466. let st_r = range2[s].row[0], ed_r = range2[s].row[1], st_c = range2[s].column[0], ed_c = range2[s].column[1];
  87467. if (minR == null || minR < st_r) {
  87468. minR = st_r;
  87469. }
  87470. if (maxR == null || maxR > ed_r) {
  87471. maxR = ed_r;
  87472. }
  87473. if (minC == null || minC < st_c) {
  87474. minC = st_c;
  87475. }
  87476. if (maxC == null || maxC > ed_c) {
  87477. maxC = ed_c;
  87478. }
  87479. for (let r2 = st_r; r2 <= ed_r; r2++) {
  87480. for (let c2 = st_c; c2 <= ed_c; c2++) {
  87481. let cell = store_default.flowdata[r2][c2];
  87482. if (cell != null && cell.mc != null) {
  87483. cell = store_default.flowdata[cell.mc.r][cell.mc.c];
  87484. }
  87485. if (type == "locationFormula" && cell != null && !isRealNull(cell.v) && cell.f != null && (value == "all" || cell.ct != null && value.indexOf(cell.ct.t) > -1)) {
  87486. cellSave[r2 + "_" + c2] = 0;
  87487. } else if (type == "locationConstant" && cell != null && !isRealNull(cell.v) && (value == "all" || cell.ct != null && value.indexOf(cell.ct.t) > -1)) {
  87488. cellSave[r2 + "_" + c2] = 0;
  87489. } else if (type == "locationNull" && (cell == null || isRealNull(cell.v))) {
  87490. cellSave[r2 + "_" + c2] = 0;
  87491. }
  87492. }
  87493. }
  87494. }
  87495. rangeArr = this.getRangeArr(minR, maxR, minC, maxC, cellSave, rangeArr);
  87496. } else if (type == "locationCF") {
  87497. let index2 = getSheetIndex(store_default.currentSheetIndex);
  87498. let ruleArr2 = store_default.luckysheetfile[index2]["luckysheet_conditionformat_save"];
  87499. let data = store_default.luckysheetfile[index2]["data"];
  87500. if (ruleArr2 == null || ruleArr2.length == 0) {
  87501. if (isEditMode()) {
  87502. alert(locale_location.locationTipNotFindCell);
  87503. } else {
  87504. tooltip_default.info("", locale_location.locationTipNotFindCell);
  87505. }
  87506. return;
  87507. }
  87508. computeMap = conditionformat_default.compute(ruleArr2, data);
  87509. if (Object.keys(computeMap).length == 0) {
  87510. if (isEditMode()) {
  87511. alert(locale_location.locationTipNotFindCell);
  87512. } else {
  87513. tooltip_default.info("", locale_location.locationTipNotFindCell);
  87514. }
  87515. return;
  87516. }
  87517. let minR = null, maxR = null, minC = null, maxC = null, cellSave = {};
  87518. for (let s = 0; s < range2.length; s++) {
  87519. let st_r = range2[s].row[0], ed_r = range2[s].row[1], st_c = range2[s].column[0], ed_c = range2[s].column[1];
  87520. if (minR == null || minR < st_r) {
  87521. minR = st_r;
  87522. }
  87523. if (maxR == null || maxR > ed_r) {
  87524. maxR = ed_r;
  87525. }
  87526. if (minC == null || minC < st_c) {
  87527. minC = st_c;
  87528. }
  87529. if (maxC == null || maxC > ed_c) {
  87530. maxC = ed_c;
  87531. }
  87532. for (let r2 = st_r; r2 <= ed_r; r2++) {
  87533. for (let c2 = st_c; c2 <= ed_c; c2++) {
  87534. if (r2 + "_" + c2 in computeMap) {
  87535. cellSave[r2 + "_" + c2] = 0;
  87536. }
  87537. }
  87538. }
  87539. }
  87540. rangeArr = this.getRangeArr(minR, maxR, minC, maxC, cellSave, rangeArr);
  87541. } else if (type == "locationStepRow") {
  87542. for (let s = 0; s < range2.length; s++) {
  87543. if (range2[s].row[0] == range2[s].row[1]) {
  87544. continue;
  87545. }
  87546. let st_r = range2[s].row[0], ed_r = range2[s].row[1];
  87547. let st_c = range2[s].column[0], ed_c = range2[s].column[1];
  87548. for (let r2 = st_r; r2 <= ed_r; r2++) {
  87549. if ((r2 - st_r) % 2 == 0) {
  87550. rangeArr.push({"row": [r2, r2], "column": [st_c, ed_c]});
  87551. }
  87552. }
  87553. }
  87554. } else if (type == "locationStepColumn") {
  87555. for (let s = 0; s < range2.length; s++) {
  87556. if (range2[s].column[0] == range2[s].column[1]) {
  87557. continue;
  87558. }
  87559. let st_r = range2[s].row[0], ed_r = range2[s].row[1];
  87560. let st_c = range2[s].column[0], ed_c = range2[s].column[1];
  87561. for (let c2 = st_c; c2 <= ed_c; c2++) {
  87562. if ((c2 - st_c) % 2 == 0) {
  87563. rangeArr.push({"row": [st_r, ed_r], "column": [c2, c2]});
  87564. }
  87565. }
  87566. }
  87567. }
  87568. if (rangeArr.length == 0) {
  87569. if (isEditMode()) {
  87570. alert(locale_location.locationTipNotFindCell);
  87571. } else {
  87572. tooltip_default.info("", locale_location.locationTipNotFindCell);
  87573. }
  87574. } else {
  87575. store_default.luckysheet_select_save = rangeArr;
  87576. selectHightlightShow();
  87577. let scrollLeft = $("#luckysheet-cell-main").scrollLeft(), scrollTop = $("#luckysheet-cell-main").scrollTop();
  87578. let winH = $("#luckysheet-cell-main").height(), winW = $("#luckysheet-cell-main").width();
  87579. let r1 = store_default.luckysheet_select_save[0]["row"][0], r2 = store_default.luckysheet_select_save[0]["row"][1], c1 = store_default.luckysheet_select_save[0]["column"][0], c2 = store_default.luckysheet_select_save[0]["column"][1];
  87580. let row = store_default.visibledatarow[r2], row_pre = r1 - 1 == -1 ? 0 : store_default.visibledatarow[r1 - 1];
  87581. let col = store_default.visibledatacolumn[c2], col_pre = c1 - 1 == -1 ? 0 : store_default.visibledatacolumn[c1 - 1];
  87582. if (col - scrollLeft - winW + 20 > 0) {
  87583. $("#luckysheet-scrollbar-x").scrollLeft(col - winW + 20);
  87584. } else if (col_pre - scrollLeft - 20 < 0) {
  87585. $("#luckysheet-scrollbar-x").scrollLeft(col_pre - 20);
  87586. }
  87587. if (row - scrollTop - winH + 20 > 0) {
  87588. $("#luckysheet-scrollbar-y").scrollTop(row - winH + 20);
  87589. } else if (row_pre - scrollTop - 20 < 0) {
  87590. $("#luckysheet-scrollbar-y").scrollTop(row_pre - 20);
  87591. }
  87592. }
  87593. },
  87594. getRangeArr(minR, maxR, minC, maxC, cellSave, rangeArr) {
  87595. if (Object.keys(cellSave).length == 0) {
  87596. return rangeArr;
  87597. }
  87598. let _this = this;
  87599. let stack_str = null, stack_edr = null, stack_stc = null, stack_edc = null;
  87600. for (let r2 = minR; r2 <= maxR; r2++) {
  87601. for (let c2 = minC; c2 <= maxC; c2++) {
  87602. let cell = store_default.flowdata[r2][c2];
  87603. if (r2 + "_" + c2 in cellSave) {
  87604. if (cell != null && cell.mc != null) {
  87605. if (stack_stc == null) {
  87606. let range2 = {
  87607. "row": [cell.mc.r, cell.mc.r + cell.mc.rs - 1],
  87608. "column": [cell.mc.c, cell.mc.c + cell.mc.cs - 1]
  87609. };
  87610. rangeArr.push(range2);
  87611. cellSave = _this.deleteCellInSave(cellSave, range2);
  87612. return _this.getRangeArr(minR, maxR, minC, maxC, cellSave, rangeArr);
  87613. } else if (c2 < stack_edc) {
  87614. let range2 = {
  87615. "row": [stack_str, stack_edr],
  87616. "column": [stack_stc, stack_edc]
  87617. };
  87618. rangeArr.push(range2);
  87619. cellSave = _this.deleteCellInSave(cellSave, range2);
  87620. return _this.getRangeArr(minR, maxR, minC, maxC, cellSave, rangeArr);
  87621. } else {
  87622. break;
  87623. }
  87624. } else if (stack_stc == null) {
  87625. stack_stc = c2;
  87626. stack_edc = c2;
  87627. stack_str = r2;
  87628. stack_edr = r2;
  87629. } else if (c2 > stack_edc) {
  87630. stack_edc = c2;
  87631. }
  87632. } else if (stack_stc != null) {
  87633. if (cell != null && cell.mc != null) {
  87634. break;
  87635. } else if (c2 < stack_stc) {
  87636. } else if (c2 <= stack_edc) {
  87637. let range2 = {
  87638. "row": [stack_str, stack_edr],
  87639. "column": [stack_stc, stack_edc]
  87640. };
  87641. rangeArr.push(range2);
  87642. cellSave = _this.deleteCellInSave(cellSave, range2);
  87643. return _this.getRangeArr(minR, maxR, minC, maxC, cellSave, rangeArr);
  87644. } else {
  87645. stack_edr = r2;
  87646. }
  87647. }
  87648. }
  87649. }
  87650. if (stack_stc != null) {
  87651. let range2 = {
  87652. "row": [stack_str, stack_edr],
  87653. "column": [stack_stc, stack_edc]
  87654. };
  87655. rangeArr.push(range2);
  87656. cellSave = _this.deleteCellInSave(cellSave, range2);
  87657. return _this.getRangeArr(minR, maxR, minC, maxC, cellSave, rangeArr);
  87658. }
  87659. },
  87660. deleteCellInSave(cellSave, range2) {
  87661. for (let r2 = range2.row[0]; r2 <= range2.row[1]; r2++) {
  87662. for (let c2 = range2.column[0]; c2 <= range2.column[1]; c2++) {
  87663. delete cellSave[r2 + "_" + c2];
  87664. }
  87665. }
  87666. return cellSave;
  87667. }
  87668. };
  87669. locationCell_default = luckysheetLocationCell;
  87670. }
  87671. });
  87672. // src/controllers/ifFormulaGenerator.js
  87673. var ifFormulaGenerator, ifFormulaGenerator_default;
  87674. var init_ifFormulaGenerator = __esm({
  87675. "src/controllers/ifFormulaGenerator.js"() {
  87676. init_formula();
  87677. init_editor();
  87678. init_updateCell();
  87679. init_constant();
  87680. init_util();
  87681. init_store();
  87682. init_locale();
  87683. ifFormulaGenerator = {
  87684. singleRangeFocus: false,
  87685. init: function() {
  87686. let _this = this;
  87687. const _locale = locale_default();
  87688. const locale_formula = _locale.formula;
  87689. const locale_button = _locale.button;
  87690. $(document).off("focus.IFcompareValue").on("focus.IFcompareValue", "#luckysheet-ifFormulaGenerator-dialog #compareValue", function() {
  87691. $("#luckysheet-modal-dialog-mask").hide();
  87692. _this.singleRangeFocus = true;
  87693. });
  87694. $(document).off("click.IFsingRange").on("click.IFsingRange", "#luckysheet-ifFormulaGenerator-dialog .singRange", function() {
  87695. let value = $("#luckysheet-ifFormulaGenerator-dialog #compareValue").val().trim();
  87696. if (formula_default.iscelldata(value)) {
  87697. _this.singleRangeDialog(value);
  87698. } else {
  87699. _this.singleRangeDialog();
  87700. }
  87701. });
  87702. $(document).off("click.IFsingRangeConfirm").on("click.IFsingRangeConfirm", "#luckysheet-ifFormulaGenerator-singleRange-confirm", function() {
  87703. $("#luckysheet-formula-functionrange-select").hide();
  87704. $("#luckysheet-ifFormulaGenerator-singleRange-dialog").hide();
  87705. $("#luckysheet-modal-dialog-mask").show();
  87706. $("#luckysheet-ifFormulaGenerator-dialog").show();
  87707. let value = $(this).parents("#luckysheet-ifFormulaGenerator-singleRange-dialog").find("input").val().trim();
  87708. $("#luckysheet-ifFormulaGenerator-dialog #compareValue").val(value);
  87709. _this.singleRangeFocus = false;
  87710. });
  87711. $(document).off("click.IFsingRangeCancel").on("click.IFsingRangeCancel", "#luckysheet-ifFormulaGenerator-singleRange-cancel", function() {
  87712. $("#luckysheet-formula-functionrange-select").hide();
  87713. $("#luckysheet-ifFormulaGenerator-singleRange-dialog").hide();
  87714. $("#luckysheet-modal-dialog-mask").show();
  87715. $("#luckysheet-ifFormulaGenerator-dialog").show();
  87716. _this.singleRangeFocus = false;
  87717. });
  87718. $(document).off("click.IFsingRangeClose").on("click.IFsingRangeClose", "#luckysheet-ifFormulaGenerator-singleRange-dialog .luckysheet-modal-dialog-title-close", function() {
  87719. $("#luckysheet-formula-functionrange-select").hide();
  87720. $("#luckysheet-modal-dialog-mask").show();
  87721. $("#luckysheet-ifFormulaGenerator-dialog").show();
  87722. _this.singleRangeFocus = false;
  87723. });
  87724. $(document).off("click.IFmultiRange").on("click.IFmultiRange", "#luckysheet-ifFormulaGenerator-dialog .multiRange", function() {
  87725. _this.multiRangeDialog();
  87726. _this.singleRangeFocus = false;
  87727. });
  87728. $(document).off("click.IFmultiRangeConfirm").on("click.IFmultiRangeConfirm", "#luckysheet-ifFormulaGenerator-multiRange-confirm", function() {
  87729. $("#luckysheet-formula-functionrange-select").hide();
  87730. $("#luckysheet-row-count-show").hide();
  87731. $("#luckysheet-column-count-show").hide();
  87732. $("#luckysheet-ifFormulaGenerator-multiRange-dialog").hide();
  87733. $("#luckysheet-modal-dialog-mask").show();
  87734. $("#luckysheet-ifFormulaGenerator-dialog").show();
  87735. let value = $(this).parents("#luckysheet-ifFormulaGenerator-multiRange-dialog").find("input").val().trim();
  87736. let cellrange = formula_default.getcellrange(value);
  87737. let str_r = cellrange["row"][0], end_r = cellrange["row"][1], str_c = cellrange["column"][0], end_c = cellrange["column"][1];
  87738. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  87739. let arr = [];
  87740. for (let r2 = str_r; r2 <= end_r; r2++) {
  87741. for (let c2 = str_c; c2 <= end_c; c2++) {
  87742. if (d[r2] != null && d[r2][c2] != null && d[r2][c2]["ct"] != null && d[r2][c2]["ct"]["t"] == "n") {
  87743. arr.push(d[r2][c2]["v"]);
  87744. }
  87745. }
  87746. }
  87747. for (let j = 0; j < arr.length; j++) {
  87748. for (let k = 0; k < arr.length - 1 - j; k++) {
  87749. if (arr[k] < arr[k + 1]) {
  87750. let temp = arr[k];
  87751. arr[k] = arr[k + 1];
  87752. arr[k + 1] = temp;
  87753. }
  87754. }
  87755. }
  87756. let largeNum = arr[0];
  87757. let smallNum = arr[arr.length - 1];
  87758. $("#luckysheet-ifFormulaGenerator-dialog #smallRange").val(smallNum);
  87759. $("#luckysheet-ifFormulaGenerator-dialog #largeRange").val(largeNum);
  87760. });
  87761. $(document).off("click.IFmultiRangeCancel").on("click.IFmultiRangeCancel", "#luckysheet-ifFormulaGenerator-multiRange-cancel", function() {
  87762. $("#luckysheet-formula-functionrange-select").hide();
  87763. $("#luckysheet-row-count-show").hide();
  87764. $("#luckysheet-column-count-show").hide();
  87765. $("#luckysheet-ifFormulaGenerator-multiRange-dialog").hide();
  87766. $("#luckysheet-modal-dialog-mask").show();
  87767. $("#luckysheet-ifFormulaGenerator-dialog").show();
  87768. });
  87769. $(document).off("click.IFmultiRangeClose").on("click.IFmultiRangeClose", "#luckysheet-ifFormulaGenerator-multiRange-dialog .luckysheet-modal-dialog-title-close", function() {
  87770. $("#luckysheet-formula-functionrange-select").hide();
  87771. $("#luckysheet-row-count-show").hide();
  87772. $("#luckysheet-column-count-show").hide();
  87773. $("#luckysheet-modal-dialog-mask").show();
  87774. $("#luckysheet-ifFormulaGenerator-dialog").show();
  87775. });
  87776. $(document).on("change", "#DivisionMethod", function() {
  87777. let value = $(this).find("option:selected").val();
  87778. if (value == "2") {
  87779. $("#DivisionMethodVal").hide();
  87780. } else {
  87781. $("#DivisionMethodVal").show();
  87782. }
  87783. $("#luckysheet-ifFormulaGenerator-dialog .ifList").empty();
  87784. });
  87785. $(document).off("click.IFcreateBtn").on("click.IFcreateBtn", "#luckysheet-ifFormulaGenerator-dialog #createBtn", function() {
  87786. let compareValue = $(this).parents("#luckysheet-ifFormulaGenerator-dialog").find("#compareValue").val().trim();
  87787. if (compareValue == "") {
  87788. _this.info(locale_formula.ifGenTipNotNullValue);
  87789. return;
  87790. }
  87791. let method2 = $(this).parents("#luckysheet-ifFormulaGenerator-dialog").find("#DivisionMethod option:selected").val();
  87792. if (method2 == "2") {
  87793. let itemHtml = '<div class="item"><input type="number" class="smallNum formulaInputFocus"/><select class="operator"><option value="0"> <= </option><option value="1"> < </option></select><span class="compareValue">' + compareValue + '</span><select class="operator2"><option value="0"> <= </option><option value="1" selected="selected"> < </option></select><input type="number" class="largeNum formulaInputFocus"/><span>' + locale_formula.ifGenTipLableTitile + '\uFF1A</span><input type="text" class="markText formulaInputFocus" value=""><i class="fa fa-remove" aria-hidden="true"></i></div>';
  87794. $("#luckysheet-ifFormulaGenerator-dialog .ifList").append(itemHtml);
  87795. } else {
  87796. let smallRange = $(this).parents("#luckysheet-ifFormulaGenerator-dialog").find("#smallRange").val().trim();
  87797. let largeRange = $(this).parents("#luckysheet-ifFormulaGenerator-dialog").find("#largeRange").val().trim();
  87798. let DivisionMethodVal = $(this).parents("#luckysheet-ifFormulaGenerator-dialog").find("#DivisionMethodVal").val().trim();
  87799. if (smallRange == "" || largeRange == "") {
  87800. _this.info(locale_formula.ifGenTipRangeNotforNull);
  87801. return;
  87802. } else if (DivisionMethodVal == "") {
  87803. _this.info(locale_formula.ifGenTipCutValueNotforNull);
  87804. return;
  87805. }
  87806. _this.getIfList(compareValue, smallRange, largeRange, method2, DivisionMethodVal);
  87807. }
  87808. });
  87809. $(document).on("click", "#luckysheet-ifFormulaGenerator-dialog .item .fa-remove", function() {
  87810. $(this).parents(".item").remove();
  87811. });
  87812. $(document).off("click.IFconfirmBtn").on("click.IFconfirmBtn", "#luckysheet-ifFormulaGenerator-dialog-confirm", function() {
  87813. let $item = $(this).parents("#luckysheet-ifFormulaGenerator-dialog").find(".ifList .item");
  87814. let str = "";
  87815. $($item.toArray().reverse()).each(function(i2, e) {
  87816. let smallNum = $(e).find(".smallNum").val().trim();
  87817. let largeNum = $(e).find(".largeNum").val().trim();
  87818. let operator = $(e).find(".operator option:selected").val();
  87819. let operator2 = $(e).find(".operator2 option:selected").val();
  87820. let compareValue = $(e).find(".compareValue").text();
  87821. let markText = $(e).find(".markText").val().trim();
  87822. if (markText == "") {
  87823. markText = locale_formula.ifGenTipLableTitile + (i2 + 1);
  87824. }
  87825. if (smallNum == "" && largeNum == "") {
  87826. return true;
  87827. }
  87828. let s;
  87829. if (operator == "0") {
  87830. s = compareValue + ">=" + smallNum;
  87831. } else {
  87832. s = compareValue + ">" + smallNum;
  87833. }
  87834. let l;
  87835. if (operator2 == "0") {
  87836. l = compareValue + "<=" + largeNum;
  87837. } else {
  87838. l = compareValue + "<" + largeNum;
  87839. }
  87840. let a;
  87841. if (i2 == 0 && largeNum == "") {
  87842. a = s;
  87843. } else if (i2 == $item.length - 1 && smallNum == "") {
  87844. a = l;
  87845. } else {
  87846. a = "and(" + s + "," + l + ")";
  87847. }
  87848. if (i2 == 0) {
  87849. str = "if(" + a + ',"' + markText + '")';
  87850. } else {
  87851. str = "if(" + a + ',"' + markText + '",' + str + ")";
  87852. }
  87853. });
  87854. if (str.length == 0) {
  87855. _this.info(locale_formula.ifGenTipNotGenCondition);
  87856. return;
  87857. }
  87858. $("#luckysheet-modal-dialog-mask").hide();
  87859. $("#luckysheet-ifFormulaGenerator-dialog").hide();
  87860. let last = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1];
  87861. let row_index = last["row_focus"], col_index = last["column_focus"];
  87862. luckysheetupdateCell(row_index, col_index, store_default.flowdata);
  87863. $("#luckysheet-rich-text-editor").html("=" + str);
  87864. $("#luckysheet-functionbox-cell").html($("#luckysheet-rich-text-editor").html());
  87865. $("#luckysheet-wa-functionbox-confirm").click();
  87866. });
  87867. $(document).on("click", "#luckysheet-ifFormulaGenerator-info .luckysheet-model-close-btn", function() {
  87868. $("#luckysheet-modal-dialog-mask").show();
  87869. });
  87870. $(document).on("click", "#luckysheet-ifFormulaGenerator-info .luckysheet-modal-dialog-title-close", function() {
  87871. $("#luckysheet-modal-dialog-mask").show();
  87872. });
  87873. },
  87874. ifFormulaDialog: function(fp) {
  87875. let _this = this;
  87876. const _locale = locale_default();
  87877. const locale_formula = _locale.formula;
  87878. const locale_button = _locale.button;
  87879. $("#luckysheet-modal-dialog-mask").show();
  87880. $("#luckysheet-ifFormulaGenerator-dialog").remove();
  87881. let compareValue = "";
  87882. let ifListHtml = "";
  87883. if (!!fp) {
  87884. let arr = fp.split("if(");
  87885. for (let i2 = 1; i2 < arr.length; i2++) {
  87886. let txt = arr[i2].replace("and(", "").replace(/\)/g, "").replace(/\"/g, "");
  87887. let arr2 = txt.split(",");
  87888. arr2 = _this.clearArr(arr2);
  87889. compareValue = _this.splitTxt(arr2[0])[0];
  87890. let smallNum, largeNum, markText;
  87891. if (arr2.length == 3) {
  87892. smallNum = _this.splitTxt(arr2[0])[1];
  87893. largeNum = _this.splitTxt(arr2[1])[2];
  87894. markText = arr2[2];
  87895. } else {
  87896. smallNum = _this.splitTxt(arr2[0])[1];
  87897. largeNum = _this.splitTxt(arr2[0])[2];
  87898. markText = arr2[1];
  87899. }
  87900. let itemHtml = '<div class="item"><input type="number" class="smallNum formulaInputFocus" value="' + smallNum + '"/><select class="operator"><option value="0"> <= </option><option value="1"> < </option></select><span class="compareValue">' + compareValue + '</span><select class="operator2"><option value="0"> <= </option><option value="1" selected="selected"> < </option></select><input type="number" class="largeNum formulaInputFocus" value="' + largeNum + '"/><span>' + locale_formula.ifGenTipLableTitile + '\uFF1A</span><input type="text" class="markText formulaInputFocus" value="' + markText + '"><i class="fa fa-remove" aria-hidden="true"></i></div>';
  87901. ifListHtml += itemHtml;
  87902. }
  87903. }
  87904. let content = '<div class="ifAttr"><div class="attrBox"><label for="compareValue"> ' + locale_formula.ifGenCompareValueTitle + ' </label><div class="inpBox"><input id="compareValue" class="formulaInputFocus" value="' + compareValue + '"/><i class="singRange fa fa-table" aria-hidden="true" title="' + locale_formula.ifGenSelectCellTitle + '"></i></div></div><div class="attrBox"><label for="smallRange"> ' + locale_formula.ifGenRangeTitle + ' </label><input type="number" id="smallRange" class="formulaInputFocus"/><span class="text"> ' + locale_formula.ifGenRangeTo + ' </span><input type="number" id="largeRange" class="formulaInputFocus"/><div id="rangeAssess"><span> ' + locale_formula.ifGenRangeEvaluate + ' </span><i class="multiRange fa fa-table" aria-hidden="true" title="' + locale_formula.ifGenSelectRangeTitle + '"></i></div></div><div class="attrBox"><label for="DivisionMethod"> ' + locale_formula.ifGenCutWay + ' </label><select id="DivisionMethod"><option value="0"> ' + locale_formula.ifGenCutSame + ' </option><option value="1"> ' + locale_formula.ifGenCutNpiece + ' </option><option value="2"> ' + locale_formula.ifGenCutCustom + ' </option></select><input id="DivisionMethodVal" class="formulaInputFocus"/><div id="createBtn"> ' + locale_formula.ifGenCutSame + ' </div></div></div><div class="ifList">' + ifListHtml + "</div>";
  87905. $("body").append(replaceHtml(modelHTML, {
  87906. "id": "luckysheet-ifFormulaGenerator-dialog",
  87907. "addclass": "luckysheet-ifFormulaGenerator-dialog",
  87908. "title": locale_formula.ifGenerate,
  87909. "content": content,
  87910. "botton": '<button id="luckysheet-ifFormulaGenerator-dialog-confirm" class="btn btn-primary">' + locale_button.confirm + '</button><button class="btn btn-default luckysheet-model-close-btn">' + locale_button.cancel + "</button>",
  87911. "style": "z-index:100003"
  87912. }));
  87913. let $t = $("#luckysheet-ifFormulaGenerator-dialog").find(".luckysheet-modal-dialog-content").css("min-width", 590).end(), myh = $t.outerHeight(), myw = $t.outerWidth();
  87914. let winw = $(window).width(), winh = $(window).height();
  87915. let scrollLeft = $(document).scrollLeft(), scrollTop = $(document).scrollTop();
  87916. $("#luckysheet-ifFormulaGenerator-dialog").css({"left": (winw + scrollLeft - myw) / 2, "top": (winh + scrollTop - myh) / 3}).show();
  87917. },
  87918. clearArr: function(arr) {
  87919. for (let i2 = 0; i2 < arr.length; i2++) {
  87920. if (arr[i2] == "" || arr[i2] == null || arr[i2] == void 0) {
  87921. arr.splice(i2, 1);
  87922. }
  87923. }
  87924. return arr;
  87925. },
  87926. splitTxt: function(txt) {
  87927. let compareValue, smallNum, largeNum;
  87928. if (txt.indexOf(">=") != -1) {
  87929. compareValue = txt.split(">=")[0];
  87930. smallNum = txt.split(">=")[1];
  87931. return [compareValue, smallNum, largeNum];
  87932. } else if (txt.indexOf(">") != -1) {
  87933. compareValue = txt.split(">")[0];
  87934. smallNum = txt.split(">")[1];
  87935. return [compareValue, smallNum, largeNum];
  87936. } else if (txt.indexOf("<=") != -1) {
  87937. compareValue = txt.split("<=")[0];
  87938. largeNum = txt.split("<=")[1];
  87939. return [compareValue, smallNum, largeNum];
  87940. } else if (txt.indexOf("<") != -1) {
  87941. compareValue = txt.split("<")[0];
  87942. largeNum = txt.split("<")[1];
  87943. return [compareValue, smallNum, largeNum];
  87944. }
  87945. },
  87946. singleRangeDialog: function(value) {
  87947. $("#luckysheet-modal-dialog-mask").hide();
  87948. $("#luckysheet-ifFormulaGenerator-dialog").hide();
  87949. $("#luckysheet-ifFormulaGenerator-singleRange-dialog").remove();
  87950. const _locale = locale_default();
  87951. const locale_formula = _locale.formula;
  87952. const locale_button = _locale.button;
  87953. if (value == null) {
  87954. value = "";
  87955. }
  87956. $("body").append(replaceHtml(modelHTML, {
  87957. "id": "luckysheet-ifFormulaGenerator-singleRange-dialog",
  87958. "addclass": "luckysheet-ifFormulaGenerator-singleRange-dialog",
  87959. "title": locale_formula.ifGenTipSelectCell,
  87960. "content": '<input readonly="readonly" placeholder="' + locale_formula.ifGenTipSelectCellPlace + '" value="' + value + '">',
  87961. "botton": '<button id="luckysheet-ifFormulaGenerator-singleRange-confirm" class="btn btn-primary">' + locale_button.confirm + '</button><button id="luckysheet-ifFormulaGenerator-singleRange-cancel" class="btn btn-default">' + locale_button.cancel + "</button>",
  87962. "style": "z-index:100003"
  87963. }));
  87964. let $t = $("#luckysheet-ifFormulaGenerator-singleRange-dialog").find(".luckysheet-modal-dialog-content").css("min-width", 400).end(), myh = $t.outerHeight(), myw = $t.outerWidth();
  87965. let winw = $(window).width(), winh = $(window).height();
  87966. let scrollLeft = $(document).scrollLeft(), scrollTop = $(document).scrollTop();
  87967. $("#luckysheet-ifFormulaGenerator-singleRange-dialog").css({"left": (winw + scrollLeft - myw) / 2, "top": (winh + scrollTop - myh) / 3}).show();
  87968. },
  87969. multiRangeDialog: function() {
  87970. $("#luckysheet-modal-dialog-mask").hide();
  87971. $("#luckysheet-ifFormulaGenerator-dialog").hide();
  87972. $("#luckysheet-ifFormulaGenerator-multiRange-dialog").remove();
  87973. const _locale = locale_default();
  87974. const locale_formula = _locale.formula;
  87975. const locale_button = _locale.button;
  87976. $("body").append(replaceHtml(modelHTML, {
  87977. "id": "luckysheet-ifFormulaGenerator-multiRange-dialog",
  87978. "addclass": "luckysheet-ifFormulaGenerator-multiRange-dialog",
  87979. "title": locale_formula.ifGenTipSelectRange,
  87980. "content": '<input readonly="readonly" placeholder="' + locale_formula.ifGenTipSelectRangePlace + '" value="">',
  87981. "botton": '<button id="luckysheet-ifFormulaGenerator-multiRange-confirm" class="btn btn-primary">' + locale_button.confirm + '</button><button id="luckysheet-ifFormulaGenerator-multiRange-cancel" class="btn btn-default">' + locale_button.cancel + "</button>",
  87982. "style": "z-index:100003"
  87983. }));
  87984. let $t = $("#luckysheet-ifFormulaGenerator-multiRange-dialog").find(".luckysheet-modal-dialog-content").css("min-width", 400).end(), myh = $t.outerHeight(), myw = $t.outerWidth();
  87985. let winw = $(window).width(), winh = $(window).height();
  87986. let scrollLeft = $(document).scrollLeft(), scrollTop = $(document).scrollTop();
  87987. $("#luckysheet-ifFormulaGenerator-multiRange-dialog").css({"left": (winw + scrollLeft - myw) / 2, "top": (winh + scrollTop - myh) / 3}).show();
  87988. },
  87989. getIfList: function(compareValue, smallRange, largeRange, method2, methodVal) {
  87990. const locale_formula = locale_default().formula;
  87991. $("#luckysheet-ifFormulaGenerator-dialog .ifList").empty();
  87992. smallRange = parseInt(smallRange);
  87993. largeRange = parseInt(largeRange);
  87994. methodVal = parseInt(methodVal);
  87995. let arr = [];
  87996. if (method2 == "0") {
  87997. let len = Math.ceil((largeRange - smallRange) / methodVal);
  87998. for (let i2 = 0; i2 <= len; i2++) {
  87999. let num = smallRange + methodVal * i2;
  88000. if (i2 == 0 || num >= largeRange) {
  88001. arr.push("");
  88002. } else {
  88003. arr.push(num);
  88004. }
  88005. }
  88006. } else if (method2 == "1") {
  88007. let addnum = Math.ceil((largeRange - smallRange) / methodVal);
  88008. for (let i2 = 0; i2 <= methodVal; i2++) {
  88009. let num = smallRange + addnum * i2;
  88010. if (i2 == 0 || num >= largeRange) {
  88011. arr.push("");
  88012. } else {
  88013. arr.push(num);
  88014. }
  88015. }
  88016. }
  88017. for (let j = 0; j < arr.length - 1; j++) {
  88018. let markText;
  88019. if (j == 0) {
  88020. markText = "\u5C0F\u4E8E" + arr[j + 1];
  88021. } else if (j == arr.length - 2) {
  88022. markText = "\u5927\u4E8E\u7B49\u4E8E" + arr[j];
  88023. } else {
  88024. markText = arr[j] + "\u5230" + arr[j + 1];
  88025. }
  88026. let itemHtml = '<div class="item"><input type="number" class="smallNum formulaInputFocus" value="' + arr[j] + '"/><select class="operator"><option value="0"> <= </option><option value="1"> < </option></select><span class="compareValue">' + compareValue + '</span><select class="operator2"><option value="0"> <= </option><option value="1" selected="selected"> < </option></select><input type="number" class="largeNum formulaInputFocus" value="' + arr[j + 1] + '"/><span>' + locale_formula.ifGenTipLableTitile + '\uFF1A</span><input type="text" class="markText formulaInputFocus" value="' + markText + '"><i class="fa fa-remove" aria-hidden="true"></i></div>';
  88027. $("#luckysheet-ifFormulaGenerator-dialog .ifList").append(itemHtml);
  88028. }
  88029. },
  88030. info: function(title) {
  88031. $("#luckysheet-modal-dialog-mask").show();
  88032. $("#luckysheet-ifFormulaGenerator-info").remove();
  88033. const _locale = locale_default();
  88034. const locale_button = _locale.button;
  88035. $("body").append(replaceHtml(modelHTML, {
  88036. "id": "luckysheet-ifFormulaGenerator-info",
  88037. "addclass": "",
  88038. "title": title,
  88039. "content": "",
  88040. "botton": '<button class="btn btn-default luckysheet-model-close-btn">&nbsp;&nbsp;' + locale_button.close + "&nbsp;&nbsp;</button>",
  88041. "style": "z-index:100003"
  88042. }));
  88043. let $t = $("#luckysheet-ifFormulaGenerator-info").find(".luckysheet-modal-dialog-content").css("min-width", 300).end(), myh = $t.outerHeight(), myw = $t.outerWidth();
  88044. let winw = $(window).width(), winh = $(window).height();
  88045. let scrollLeft = $(document).scrollLeft(), scrollTop = $(document).scrollTop();
  88046. $("#luckysheet-ifFormulaGenerator-info").css({"left": (winw + scrollLeft - myw) / 2, "top": (winh + scrollTop - myh) / 3}).show();
  88047. }
  88048. };
  88049. ifFormulaGenerator_default = ifFormulaGenerator;
  88050. }
  88051. });
  88052. // src/controllers/insertFormula.js
  88053. var insertFormula, insertFormula_default;
  88054. var init_insertFormula = __esm({
  88055. "src/controllers/insertFormula.js"() {
  88056. init_func();
  88057. init_formula();
  88058. init_validate();
  88059. init_constant();
  88060. init_select();
  88061. init_util();
  88062. init_store();
  88063. init_locale();
  88064. insertFormula = {
  88065. init: function() {
  88066. let _this = this;
  88067. let _locale = locale_default();
  88068. let locale_formulaMore = _locale.formulaMore;
  88069. let locale_button = _locale.button;
  88070. $(document).off("keyup.fxSFLI").on("keyup.fxSFLI", "#searchFormulaListInput", function() {
  88071. $("#formulaTypeList").empty();
  88072. let txt = $(this).val().toUpperCase();
  88073. let functionlist2 = store_default.functionlist;
  88074. if (txt == "") {
  88075. _this.formulaListByType($("#formulaTypeSelect option:selected").val());
  88076. } else {
  88077. for (let i2 = 0; i2 < functionlist2.length; i2++) {
  88078. if (/^[a-zA-Z]+$/.test(txt)) {
  88079. if (functionlist2[i2].n.indexOf(txt) != "-1") {
  88080. $('<div class="listBox" name="' + functionlist2[i2].n + '"><span>' + functionlist2[i2].n + "</span><span>" + functionlist2[i2].a + "</span></div>").appendTo($("#formulaTypeList"));
  88081. }
  88082. } else if (functionlist2[i2].a.indexOf(txt) != "-1") {
  88083. $('<div class="listBox" name="' + functionlist2[i2].n + '"><span>' + functionlist2[i2].n + "</span><span>" + functionlist2[i2].a + "</span></div>").appendTo($("#formulaTypeList"));
  88084. }
  88085. }
  88086. }
  88087. $("#formulaTypeList .listBox:first-child").addClass("on");
  88088. });
  88089. $(document).off("change.fxFormulaTS").on("change.fxFormulaTS", "#formulaTypeSelect", function() {
  88090. let type = $("#formulaTypeSelect option:selected").val();
  88091. _this.formulaListByType(type);
  88092. });
  88093. $(document).off("click.fxListbox").on("click.fxListbox", "#formulaTypeList .listBox", function() {
  88094. $(this).addClass("on").siblings().removeClass("on");
  88095. });
  88096. $(document).off("click.fxFormulaCf").on("click.fxFormulaCf", "#luckysheet-search-formula-confirm", function() {
  88097. let formula = $("#luckysheet-search-formula .listBox.on").attr("name");
  88098. let formulaTxt = '<span dir="auto" class="luckysheet-formula-text-color">=</span><span dir="auto" class="luckysheet-formula-text-color">' + formula.toUpperCase() + '</span><span dir="auto" class="luckysheet-formula-text-color">(</span><span dir="auto" class="luckysheet-formula-text-color">)</span>';
  88099. $("#luckysheet-rich-text-editor").html(formulaTxt);
  88100. $("#luckysheet-functionbox-cell").html($("#luckysheet-rich-text-editor").html());
  88101. _this.formulaParmDialog(formula);
  88102. });
  88103. $(document).off("focus.fxParamInput").on("focus.fxParamInput", "#luckysheet-search-formula-parm .parmBox input", function() {
  88104. let parmIndex = $(this).parents(".parmBox").index();
  88105. formula_default.data_parm_index = parmIndex;
  88106. let formulatxt = $(this).parents("#luckysheet-search-formula-parm").find(".luckysheet-modal-dialog-title-text").text();
  88107. let parmLen = store_default.luckysheet_function[formulatxt].p.length;
  88108. let parmDetail, parmRepeat;
  88109. if (parmIndex >= parmLen) {
  88110. parmDetail = store_default.luckysheet_function[formulatxt].p[parmLen - 1].detail;
  88111. parmRepeat = store_default.luckysheet_function[formulatxt].p[parmLen - 1].repeat;
  88112. } else {
  88113. parmDetail = store_default.luckysheet_function[formulatxt].p[parmIndex].detail;
  88114. parmRepeat = store_default.luckysheet_function[formulatxt].p[parmIndex].repeat;
  88115. }
  88116. _this.parmTxtShow($(this).val());
  88117. _this.functionStrCompute();
  88118. $("#luckysheet-search-formula-parm .parmDetailsBox").empty();
  88119. let parmName = $(this).parents(".parmBox").find(".name").text();
  88120. $("<span>" + parmName + ":</span><span>" + parmDetail + "</span>").appendTo($("#luckysheet-search-formula-parm .parmDetailsBox"));
  88121. if (parmRepeat == "y") {
  88122. let parmCount = $("#luckysheet-search-formula-parm .parmBox").length;
  88123. if (parmCount < 5 && parmIndex == parmCount - 1) {
  88124. $('<div class="parmBox"><div class="name">' + locale_formulaMore.valueTitle + "" + (parmCount + 1) + '</div><div class="txt"><input class="formulaInputFocus" /><i class="fa fa-table" aria-hidden="true" title="' + locale_formulaMore.tipSelectDataRange + '"></i></div><div class="val">=</div></div>').appendTo($("#luckysheet-search-formula-parm .parmListBox"));
  88125. }
  88126. }
  88127. });
  88128. $(document).off("blur.fxParamInput").on("blur.fxParamInput", "#luckysheet-search-formula-parm .parmBox input", function() {
  88129. let txt = $(this).val();
  88130. if (formula_default.getfunctionParam(txt).fn == null && !formula_default.iscelldata(txt)) {
  88131. if (!isRealNum(txt) && txt != "" && txt.length <= 2 && txt.indexOf('"') != 0 && txt.lastIndexOf('"') != 0) {
  88132. txt = '"' + txt + '"';
  88133. $(this).val(txt);
  88134. _this.parmTxtShow(txt);
  88135. _this.functionStrCompute();
  88136. }
  88137. }
  88138. });
  88139. $(document).off("keyup.fxParamInput").on("keyup.fxParamInput", "#luckysheet-search-formula-parm .parmBox input", function() {
  88140. _this.parmTxtShow($(this).val());
  88141. _this.functionStrCompute();
  88142. });
  88143. $(document).off("click.fxParamI").on("click.fxParamI", "#luckysheet-search-formula-parm .parmBox i", function() {
  88144. formula_default.data_parm_index = $(this).parents(".parmBox").index();
  88145. $("#luckysheet-search-formula-parm").hide();
  88146. $("#luckysheet-modal-dialog-mask").hide();
  88147. $("#luckysheet-search-formula-parm-select").remove();
  88148. if ($(this).parents(".parmBox").find(".txt input").val() == "") {
  88149. $("body").append(replaceHtml(modelHTML, {
  88150. "id": "luckysheet-search-formula-parm-select",
  88151. "addclass": "luckysheet-search-formula-parm-select",
  88152. "title": locale_formulaMore.tipSelectDataRange,
  88153. "content": "<input id='luckysheet-search-formula-parm-select-input' class='luckysheet-datavisual-range-container' style='font-size: 14px;padding:5px;max-width:none;' spellcheck='false' aria-label='" + locale_formulaMore.tipDataRangeTile + "' readonly='true' placeholder='" + locale_formulaMore.tipDataRangeTile + "'>",
  88154. "botton": '<button id="luckysheet-search-formula-parm-select-confirm" class="btn btn-primary">' + locale_button.confirm + "</button>",
  88155. "style": "z-index:100003"
  88156. }));
  88157. } else {
  88158. $("body").append(replaceHtml(modelHTML, {
  88159. "id": "luckysheet-search-formula-parm-select",
  88160. "addclass": "luckysheet-search-formula-parm-select",
  88161. "title": locale_formulaMore.tipSelectDataRange,
  88162. "content": "<input id='luckysheet-search-formula-parm-select-input' class='luckysheet-datavisual-range-container' style='font-size: 14px;padding:5px;max-width:none;' spellcheck='false' aria-label='" + locale_formulaMore.tipDataRangeTile + "' readonly='true' value='" + $(this).parents(".parmBox").find(".txt input").val() + "'>",
  88163. "botton": '<button id="luckysheet-search-formula-parm-select-confirm" class="btn btn-primary">' + locale_button.confirm + "</button>",
  88164. "style": "z-index:100003"
  88165. }));
  88166. }
  88167. let $t = $("#luckysheet-search-formula-parm-select").find(".luckysheet-modal-dialog-content").css("min-width", 300).end(), myh = $t.outerHeight(), myw = $t.outerWidth();
  88168. let winw = $(window).width(), winh = $(window).height();
  88169. let scrollLeft = $(document).scrollLeft(), scrollTop = $(document).scrollTop();
  88170. $("#luckysheet-search-formula-parm-select").css({"left": (winw + scrollLeft - myw) / 2, "top": (winh + scrollTop - myh) / 3}).show();
  88171. _this.parmTxtShow($(this).parents(".parmBox").find(".txt input").val());
  88172. });
  88173. $(document).off("click.fxParamCf").on("click.fxParamCf", "#luckysheet-search-formula-parm-confirm", function() {
  88174. $("#luckysheet-wa-functionbox-confirm").click();
  88175. });
  88176. $(document).off("click.fxParamSelectCf").on("click.fxParamSelectCf", "#luckysheet-search-formula-parm-select-confirm", function() {
  88177. let parmIndex = $("#luckysheet-search-formula-parm-select-input").attr("data_parm_index");
  88178. $("#luckysheet-search-formula-parm-select").hide();
  88179. $("#luckysheet-search-formula-parm").show();
  88180. $("#luckysheet-search-formula-parm .parmBox").eq(parmIndex).find(".txt input").focus();
  88181. });
  88182. },
  88183. formulaListDialog: function() {
  88184. let _this = this;
  88185. let _locale = locale_default();
  88186. let locale_formulaMore = _locale.formulaMore;
  88187. let locale_button = _locale.button;
  88188. $("#luckysheet-modal-dialog-mask").show();
  88189. $("#luckysheet-search-formula").remove();
  88190. $("body").append(replaceHtml(modelHTML, {
  88191. "id": "luckysheet-search-formula",
  88192. "addclass": "luckysheet-search-formula",
  88193. "title": "",
  88194. "content": "<div class='inpbox'><label for='searchFormulaListInput'>" + locale_formulaMore.findFunctionTitle + "\uFF1A</label><input class='formulaInputFocus' id='searchFormulaListInput' placeholder='" + locale_formulaMore.tipInputFunctionName + "' spellcheck='false'/></div><div class='selbox'><label>" + locale_formulaMore.selectCategory + "\uFF1A</label><select id='formulaTypeSelect'><option value='0'>" + locale_formulaMore.Math + "</option><option value='1'>" + locale_formulaMore.Statistical + "</option><option value='2'>" + locale_formulaMore.Lookup + "</option><option value='3'>" + locale_formulaMore.luckysheet + "</option><option value='4'>" + locale_formulaMore.dataMining + "</option><option value='5'>" + locale_formulaMore.Database + "</option><option value='6'>" + locale_formulaMore.Date + "</option><option value='7'>" + locale_formulaMore.Filter + "</option><option value='8'>" + locale_formulaMore.Financial + "</option><option value='9'>" + locale_formulaMore.Engineering + "</option><option value='10'>" + locale_formulaMore.Logical + "</option><option value='11'>" + locale_formulaMore.Operator + "</option><option value='12'>" + locale_formulaMore.Text + "</option><option value='13'>" + locale_formulaMore.Parser + "</option><option value='14'>" + locale_formulaMore.Array + "</option><option value='-1'>" + locale_formulaMore.other + "</option></select></div><div class='listbox'><label>" + locale_formulaMore.selectFunctionTitle + "\uFF1A</label><div id='formulaTypeList'></div></div>",
  88195. "botton": '<button id="luckysheet-search-formula-confirm" class="btn btn-primary">' + locale_button.confirm + '</button><button class="btn btn-default luckysheet-model-close-btn">' + locale_button.cancel + "</button>",
  88196. "style": "z-index:100003"
  88197. }));
  88198. let $t = $("#luckysheet-search-formula").find(".luckysheet-modal-dialog-content").css("min-width", 300).end(), myh = $t.outerHeight(), myw = $t.outerWidth();
  88199. let winw = $(window).width(), winh = $(window).height();
  88200. let scrollLeft = $(document).scrollLeft(), scrollTop = $(document).scrollTop();
  88201. $("#luckysheet-search-formula").css({"left": (winw + scrollLeft - myw) / 2, "top": (winh + scrollTop - myh) / 3, "user-select": "none"}).show();
  88202. _this.formulaListByType("0");
  88203. $("#searchFormulaListInput").focus();
  88204. },
  88205. formulaListByType: function(type) {
  88206. $("#formulaTypeList").empty();
  88207. let functionlist2 = store_default.functionlist;
  88208. for (let i2 = 0; i2 < functionlist2.length; i2++) {
  88209. if (type == "-1" && functionlist2[i2].t > 14 || functionlist2[i2].t == type) {
  88210. $('<div class="listBox" name="' + functionlist2[i2].n + '"><span>' + functionlist2[i2].n + "</span><span>" + functionlist2[i2].a + "</span></div>").appendTo($("#formulaTypeList"));
  88211. }
  88212. }
  88213. $("#formulaTypeList .listBox:first-child").addClass("on");
  88214. },
  88215. formulaParmDialog: function(formulaTxt, parm) {
  88216. let parm_title = "", parm_content = "", parm_list_content = "";
  88217. let _locale = locale_default();
  88218. let locale_formulaMore = _locale.formulaMore;
  88219. let locale_button = _locale.button;
  88220. let functionlist2 = store_default.functionlist;
  88221. for (let i2 = 0; i2 < functionlist2.length; i2++) {
  88222. if (functionlist2[i2].n == formulaTxt.toUpperCase()) {
  88223. parm_title = functionlist2[i2].n;
  88224. for (let j = 0; j < functionlist2[i2].p.length; j++) {
  88225. if (parm == null) {
  88226. parm_list_content += '<div class="parmBox"><div class="name">' + functionlist2[i2].p[j].name + '</div><div class="txt"><input class="formulaInputFocus" spellcheck="false"/><i class="fa fa-table" aria-hidden="true" title="' + locale_formulaMore.tipSelectDataRange + '"></i></div><div class="val">=</div></div>';
  88227. } else {
  88228. if (parm[j] == null) {
  88229. parm[j] = "";
  88230. }
  88231. parm_list_content += '<div class="parmBox"><div class="name">' + functionlist2[i2].p[j].name + '</div><div class="txt"><input class="formulaInputFocus" value="' + parm[j] + '" spellcheck="false"/><i class="fa fa-table" aria-hidden="true" title="' + locale_formulaMore.tipSelectDataRange + '"></i></div><div class="val">=</div></div>';
  88232. }
  88233. }
  88234. parm_content = '<div><div class="parmListBox">' + parm_list_content + '</div><div class="formulaDetails">' + functionlist2[i2].d + '</div><div class="parmDetailsBox"></div><div class="result">' + locale_formulaMore.calculationResult + " = <span></span></div></div>";
  88235. }
  88236. }
  88237. $("#luckysheet-search-formula").hide();
  88238. $("#luckysheet-modal-dialog-mask").hide();
  88239. $("#luckysheet-search-formula-parm").remove();
  88240. $("body").append(replaceHtml(modelHTML, {
  88241. "id": "luckysheet-search-formula-parm",
  88242. "addclass": "luckysheet-search-formula-parm",
  88243. "title": parm_title,
  88244. "content": parm_content,
  88245. "botton": '<button id="luckysheet-search-formula-parm-confirm" class="btn btn-primary">' + locale_button.confirm + '</button><button class="btn btn-default luckysheet-model-close-btn">' + locale_button.cancel + "</button>",
  88246. "style": "z-index:100003"
  88247. }));
  88248. let $t = $("#luckysheet-search-formula-parm").find(".luckysheet-modal-dialog-content").css("min-width", 300).end(), myh = $t.outerHeight(), myw = $t.outerWidth();
  88249. let winw = $(window).width(), winh = $(window).height();
  88250. let scrollLeft = $(document).scrollLeft(), scrollTop = $(document).scrollTop();
  88251. $("#luckysheet-search-formula-parm").css({"left": (winw + scrollLeft - myw) / 2, "top": (winh + scrollTop - myh) / 3}).show();
  88252. $("#luckysheet-search-formula-parm .parmBox:eq(0) input").focus();
  88253. $("#luckysheet-search-formula-parm .parmBox").each(function(index2, e) {
  88254. let parmtxt = $(e).find(".txt input").val();
  88255. if (formula_default.getfunctionParam(parmtxt).fn == null) {
  88256. if (formula_default.iscelldata(parmtxt)) {
  88257. let txtdata = luckysheet_getcelldata(parmtxt).data;
  88258. if (getObjType(txtdata) == "array") {
  88259. let txtArr = [];
  88260. for (let i2 = 0; i2 < txtdata.length; i2++) {
  88261. for (let j = 0; j < txtdata[i2].length; j++) {
  88262. let cell = txtdata[i2][j];
  88263. if (cell == null || isRealNull(cell.v)) {
  88264. txtArr.push(null);
  88265. } else {
  88266. txtArr.push(cell.v);
  88267. }
  88268. }
  88269. }
  88270. $("#luckysheet-search-formula-parm .parmBox").eq(index2).find(".val").text(" = {" + txtArr.join(",") + "}");
  88271. } else {
  88272. $("#luckysheet-search-formula-parm .parmBox").eq(index2).find(".val").text(" = {" + txtdata.v + "}");
  88273. }
  88274. } else {
  88275. $("#luckysheet-search-formula-parm .parmBox").eq(index2).find(".val").text(" = {" + parmtxt + "}");
  88276. }
  88277. } else {
  88278. $("#luckysheet-search-formula-parm .parmBox").eq(index2).find(".val").text(" = {" + new Function("return " + $.trim(formula_default.functionParserExe("=" + parmtxt)))() + "}");
  88279. }
  88280. });
  88281. $("#luckysheet-formula-functionrange .luckysheet-formula-functionrange-highlight").remove();
  88282. formula_default.data_parm_index = 0;
  88283. formula_default.rangestart = true;
  88284. },
  88285. parmTxtShow: function(parmtxt) {
  88286. if (formula_default.getfunctionParam(parmtxt).fn == null) {
  88287. if (formula_default.iscelldata(parmtxt)) {
  88288. let cellrange = formula_default.getcellrange(parmtxt);
  88289. let r1 = cellrange.row[0], r2 = cellrange.row[1], c1 = cellrange.column[0], c2 = cellrange.column[1];
  88290. let row = store_default.visibledatarow[r2], row_pre = r1 - 1 == -1 ? 0 : store_default.visibledatarow[r1 - 1];
  88291. let col = store_default.visibledatacolumn[c2], col_pre = c1 - 1 == -1 ? 0 : store_default.visibledatacolumn[c1 - 1];
  88292. $("#luckysheet-formula-functionrange-select").css({
  88293. "left": col_pre,
  88294. "width": col - col_pre - 1,
  88295. "top": row_pre,
  88296. "height": row - row_pre - 1
  88297. }).show();
  88298. $("#luckysheet-formula-help-c").hide();
  88299. luckysheet_count_show(col_pre, row_pre, col - col_pre - 1, row - row_pre - 1, cellrange.row, cellrange.column);
  88300. let txtdata = luckysheet_getcelldata(parmtxt).data;
  88301. if (getObjType(txtdata) == "array") {
  88302. let txtArr = [];
  88303. for (let i2 = 0; i2 < txtdata.length; i2++) {
  88304. for (let j = 0; j < txtdata[i2].length; j++) {
  88305. let cell = txtdata[i2][j];
  88306. if (cell == null || isRealNull(cell.v)) {
  88307. txtArr.push(null);
  88308. } else {
  88309. txtArr.push(cell.v);
  88310. }
  88311. }
  88312. }
  88313. $("#luckysheet-search-formula-parm .parmBox").eq(formula_default.data_parm_index).find(".val").text(" = {" + txtArr.join(",") + "}");
  88314. } else {
  88315. $("#luckysheet-search-formula-parm .parmBox").eq(formula_default.data_parm_index).find(".val").text(" = {" + txtdata.v + "}");
  88316. }
  88317. } else {
  88318. $("#luckysheet-search-formula-parm .parmBox").eq(formula_default.data_parm_index).find(".val").text(" = {" + parmtxt + "}");
  88319. $("#luckysheet-formula-functionrange-select").hide();
  88320. }
  88321. } else {
  88322. let txt;
  88323. for (let k = 0; k < formula_default.getfunctionParam(parmtxt).param.length; k++) {
  88324. if (formula_default.iscelldata(formula_default.getfunctionParam(parmtxt).param[k])) {
  88325. txt = formula_default.getfunctionParam(parmtxt).param[k];
  88326. break;
  88327. }
  88328. }
  88329. let cellrange = formula_default.getcellrange(txt);
  88330. let r1 = cellrange.row[0], r2 = cellrange.row[1], c1 = cellrange.column[0], c2 = cellrange.column[1];
  88331. let row = store_default.visibledatarow[r2], row_pre = r1 - 1 == -1 ? 0 : store_default.visibledatarow[r1 - 1];
  88332. let col = store_default.visibledatacolumn[c2], col_pre = c1 - 1 == -1 ? 0 : store_default.visibledatacolumn[c1 - 1];
  88333. $("#luckysheet-formula-functionrange-select").css({
  88334. "left": col_pre,
  88335. "width": col - col_pre - 1,
  88336. "top": row_pre,
  88337. "height": row - row_pre - 1
  88338. }).show();
  88339. $("#luckysheet-formula-help-c").hide();
  88340. luckysheet_count_show(col_pre, row_pre, col - col_pre - 1, row - row_pre - 1, cellrange.row, cellrange.column);
  88341. $("#luckysheet-search-formula-parm .parmBox").eq(formula_default.data_parm_index).find(".val").text(" = {" + new Function("return " + $.trim(formula_default.functionParserExe("=" + parmtxt)))() + "}");
  88342. }
  88343. },
  88344. functionStrCompute: function() {
  88345. let isVal = true;
  88346. let parmValArr = [];
  88347. let lvi = -1;
  88348. let formulatxt = $("#luckysheet-search-formula-parm").find(".luckysheet-modal-dialog-title-text").text();
  88349. let p = store_default.luckysheet_function[formulatxt].p;
  88350. $("#luckysheet-search-formula-parm .parmBox").each(function(i2, e) {
  88351. let parmtxt = $(e).find(".txt input").val();
  88352. let parmRequire;
  88353. if (i2 < p.length) {
  88354. parmRequire = p[i2].require;
  88355. } else {
  88356. parmRequire = p[p.length - 1].require;
  88357. }
  88358. if (parmtxt == "" && parmRequire == "m") {
  88359. isVal = false;
  88360. }
  88361. if (parmtxt != "") {
  88362. lvi = i2;
  88363. }
  88364. });
  88365. let functionHtmlTxt;
  88366. if (lvi == -1) {
  88367. functionHtmlTxt = "=" + $("#luckysheet-search-formula-parm .luckysheet-modal-dialog-title-text").text() + "()";
  88368. } else if (lvi == 0) {
  88369. functionHtmlTxt = "=" + $("#luckysheet-search-formula-parm .luckysheet-modal-dialog-title-text").text() + "(" + $("#luckysheet-search-formula-parm .parmBox").eq(0).find(".txt input").val() + ")";
  88370. } else {
  88371. for (let j = 0; j <= lvi; j++) {
  88372. parmValArr.push($("#luckysheet-search-formula-parm .parmBox").eq(j).find(".txt input").val());
  88373. }
  88374. functionHtmlTxt = "=" + $("#luckysheet-search-formula-parm .luckysheet-modal-dialog-title-text").text() + "(" + parmValArr.join(",") + ")";
  88375. }
  88376. let function_str = formula_default.functionHTMLGenerate(functionHtmlTxt);
  88377. $("#luckysheet-rich-text-editor").html(function_str);
  88378. $("#luckysheet-functionbox-cell").html($("#luckysheet-rich-text-editor").html());
  88379. if (isVal) {
  88380. let fp = $.trim(formula_default.functionParserExe($("#luckysheet-rich-text-editor").text()));
  88381. let result = null;
  88382. try {
  88383. result = new Function("return " + fp)();
  88384. } catch (e) {
  88385. result = formula_default.error.n;
  88386. }
  88387. $("#luckysheet-search-formula-parm .result span").text(result);
  88388. }
  88389. }
  88390. };
  88391. insertFormula_default = insertFormula;
  88392. }
  88393. });
  88394. // src/controllers/menuButton.js
  88395. var menuButton, menuButton_default;
  88396. var init_menuButton = __esm({
  88397. "src/controllers/menuButton.js"() {
  88398. init_select();
  88399. init_constant();
  88400. init_luckysheetConfigsetting();
  88401. init_moreFormat();
  88402. init_alternateformat();
  88403. init_conditionformat();
  88404. init_server();
  88405. init_sheetSearch();
  88406. init_freezen();
  88407. init_resize();
  88408. init_filter();
  88409. init_searchReplace();
  88410. init_locationCell();
  88411. init_ifFormulaGenerator();
  88412. init_updateCell();
  88413. init_insertFormula();
  88414. init_sheetmanage();
  88415. init_postil();
  88416. init_validate();
  88417. init_tooltip();
  88418. init_editor();
  88419. init_format();
  88420. init_refresh();
  88421. init_sort();
  88422. init_formula();
  88423. init_location();
  88424. init_datecontroll();
  88425. init_getRowlen();
  88426. init_setdata();
  88427. init_getdata();
  88428. init_count();
  88429. init_cursorPos();
  88430. init_get();
  88431. init_set();
  88432. init_inlineString();
  88433. init_util();
  88434. init_protection();
  88435. init_store();
  88436. init_locale();
  88437. init_api();
  88438. menuButton = {
  88439. "menu": '<div class="luckysheet-cols-menu luckysheet-rightgclick-menu luckysheet-menuButton ${subclass} luckysheet-mousedown-cancel" id="luckysheet-icon-${id}-menuButton">${item}</div>',
  88440. "item": '<div itemvalue="${value}" itemname="${name}" class="luckysheet-cols-menuitem ${sub} luckysheet-mousedown-cancel"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel" style="padding: 3px 0px 3px 1px;"><span style="margin-right:3px;width:13px;display:inline-block;" class="icon luckysheet-mousedown-cancel"></span> ${name} <span class="luckysheet-submenu-arrow luckysheet-mousedown-cancel ${iconClass}" style="user-select: none;">${example}</span></div></div>',
  88441. "split": '<div class="luckysheet-menuseparator luckysheet-mousedown-cancel" role="separator"></div>',
  88442. "color": '<div class="luckysheet-cols-menu luckysheet-rightgclick-menu luckysheet-rightgclick-menu-sub luckysheet-mousedown-cancel luckysheet-menuButton ${sub}" id="${id}"><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel luckysheet-color-reset"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${resetColor}</div></div> <div class="luckysheet-mousedown-cancel"> <div class="luckysheet-mousedown-cancel"> <input type="text" class="luckysheet-color-selected" /> </div> </div> <div class="luckysheet-menuseparator luckysheet-mousedown-cancel" role="separator"></div> ${coloritem}</div>',
  88443. "coloritem": '<div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel ${class}"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${name}</div></div>',
  88444. "subcolor": '<div id="luckysheet-icon-${id}-menuButton" class="luckysheet-cols-menu luckysheet-rightgclick-menu luckysheet-rightgclick-menu-sub luckysheet-menuButton-sub luckysheet-mousedown-cancel"> <div class="luckysheet-mousedown-cancel"> <div class="luckysheet-mousedown-cancel"> <input type="text" class="luckysheet-color-selected" /> </div> </div></div>',
  88445. "rightclickmenu": null,
  88446. "submenuhide": {},
  88447. focus: function($obj, value) {
  88448. if ($obj.attr("id") == "luckysheet-icon-font-family-menuButton") {
  88449. if (isdatatypemulti(value)["num"]) {
  88450. let _locale = locale_default();
  88451. const locale_fontarray = _locale.fontarray;
  88452. value = locale_fontarray[parseInt(value)];
  88453. if (value == null) {
  88454. value = this.defualtFont[itemvalue];
  88455. }
  88456. }
  88457. }
  88458. $obj.find(".luckysheet-cols-menuitem").find("span.icon").html("");
  88459. if (value == null) {
  88460. $obj.find(".luckysheet-cols-menuitem").eq(0).find("span.icon").html('<i class="fa fa-check luckysheet-mousedown-cancel"></i>');
  88461. } else {
  88462. $obj.find(".luckysheet-cols-menuitem[itemvalue='" + value + "']").find("span.icon").html('<i class="fa fa-check luckysheet-mousedown-cancel"></i>');
  88463. }
  88464. },
  88465. createButtonMenu: function(itemdata) {
  88466. let itemset = "";
  88467. let _this = this;
  88468. for (let i2 = 0; i2 < itemdata.length; i2++) {
  88469. let item2 = itemdata[i2];
  88470. if (item2.value == "split") {
  88471. itemset += _this.split;
  88472. } else {
  88473. if (item2.example == "more") {
  88474. itemset += replaceHtml(_this.item, {"value": item2.value, "name": item2.text, "example": "", "sub": "luckysheet-cols-submenu", "iconClass": "iconfont luckysheet-iconfont-youjiantou"});
  88475. } else {
  88476. itemset += replaceHtml(_this.item, {"value": item2.value, "name": item2.text, "example": item2.example, "sub": "", "iconClass": ""});
  88477. }
  88478. }
  88479. }
  88480. return itemset;
  88481. },
  88482. cancelPaintModel: function() {
  88483. let _this = this;
  88484. $("#luckysheet-sheettable_0").removeClass("luckysheetPaintCursor");
  88485. if (store_default.luckysheet_copy_save["dataSheetIndex"] == store_default.currentSheetIndex) {
  88486. store_default.luckysheet_selection_range = [];
  88487. selectionCopyShow();
  88488. } else {
  88489. store_default.luckysheetfile[getSheetIndex(store_default.luckysheet_copy_save["dataSheetIndex"])].luckysheet_selection_range = [];
  88490. }
  88491. store_default.luckysheet_copy_save = {};
  88492. _this.luckysheetPaintModelOn = false;
  88493. $("#luckysheetpopover").fadeOut(200, function() {
  88494. $("#luckysheetpopover").remove();
  88495. });
  88496. },
  88497. luckysheetPaintModelOn: false,
  88498. luckysheetPaintSingle: false,
  88499. initialMenuButton: function() {
  88500. let _this = this;
  88501. $("#luckysheet-icon-paintformat").click(function(e) {
  88502. if (!checkIsAllowEdit()) {
  88503. tooltip_default.info("", locale_default().pivotTable.errorNotAllowEdit);
  88504. return;
  88505. }
  88506. e.stopPropagation();
  88507. let _locale = locale_default();
  88508. let locale_paint = _locale.paint;
  88509. if (store_default.luckysheet_select_save == null || store_default.luckysheet_select_save.length == 0) {
  88510. if (isEditMode()) {
  88511. alert(locale_paint.tipSelectRange);
  88512. } else {
  88513. tooltip_default.info("", locale_paint.tipSelectRange);
  88514. }
  88515. return;
  88516. } else if (store_default.luckysheet_select_save.length > 1) {
  88517. if (isEditMode()) {
  88518. alert(locale_paint.tipNotMulti);
  88519. } else {
  88520. tooltip_default.info("", locale_paint.tipNotMulti);
  88521. }
  88522. return;
  88523. }
  88524. let has_PartMC = false;
  88525. let r1 = store_default.luckysheet_select_save[0].row[0], r2 = store_default.luckysheet_select_save[0].row[1];
  88526. let c1 = store_default.luckysheet_select_save[0].column[0], c2 = store_default.luckysheet_select_save[0].column[1];
  88527. has_PartMC = hasPartMC(store_default.config, r1, r2, c1, c2);
  88528. if (has_PartMC) {
  88529. tooltip_default.info(_locale.merge.partiallyError, "");
  88530. return;
  88531. }
  88532. tooltip_default.popover("<i class='fa fa-paint-brush'></i> " + locale_paint.start + "", "topCenter", true, null, locale_paint.end, function() {
  88533. _this.cancelPaintModel();
  88534. });
  88535. $("#luckysheet-sheettable_0").addClass("luckysheetPaintCursor");
  88536. store_default.luckysheet_selection_range = [{"row": store_default.luckysheet_select_save[0].row, "column": store_default.luckysheet_select_save[0].column}];
  88537. selectionCopyShow();
  88538. let RowlChange = false, HasMC = false;
  88539. for (let r3 = store_default.luckysheet_select_save[0].row[0]; r3 <= store_default.luckysheet_select_save[0].row[1]; r3++) {
  88540. if (store_default.config["rowhidden"] != null && store_default.config["rowhidden"][r3] != null) {
  88541. continue;
  88542. }
  88543. if (store_default.config["rowlen"] != null && r3 in store_default.config["rowlen"]) {
  88544. RowlChange = true;
  88545. }
  88546. for (let c3 = store_default.luckysheet_select_save[0].column[0]; c3 <= store_default.luckysheet_select_save[0].column[1]; c3++) {
  88547. let cell = store_default.flowdata[r3][c3];
  88548. if (getObjType(cell) == "object" && "mc" in cell && cell.mc.rs != null) {
  88549. HasMC = true;
  88550. }
  88551. }
  88552. }
  88553. store_default.luckysheet_copy_save = {"dataSheetIndex": store_default.currentSheetIndex, "copyRange": [{"row": store_default.luckysheet_select_save[0].row, "column": store_default.luckysheet_select_save[0].column}], "RowlChange": RowlChange, "HasMC": HasMC};
  88554. _this.luckysheetPaintModelOn = true;
  88555. _this.luckysheetPaintSingle = true;
  88556. });
  88557. $("#luckysheet-icon-paintformat").dblclick(function() {
  88558. if (!checkIsAllowEdit()) {
  88559. tooltip_default.info("", locale_default().pivotTable.errorNotAllowEdit);
  88560. return;
  88561. }
  88562. let _locale = locale_default();
  88563. let locale_paint = _locale.paint;
  88564. if (store_default.luckysheet_select_save == null || store_default.luckysheet_select_save.length == 0) {
  88565. if (isEditMode()) {
  88566. alert(locale_paint.tipSelectRange);
  88567. } else {
  88568. tooltip_default.info("", locale_paint.tipSelectRange);
  88569. }
  88570. return;
  88571. } else if (store_default.luckysheet_select_save.length > 1) {
  88572. if (isEditMode()) {
  88573. alert(locale_paint.tipNotMulti);
  88574. } else {
  88575. tooltip_default.info("", locale_paint.tipNotMulti);
  88576. }
  88577. return;
  88578. }
  88579. tooltip_default.popover("<i class='fa fa-paint-brush'></i> " + locale_paint.start, "topCenter", true, null, locale_paint.end, function() {
  88580. _this.cancelPaintModel();
  88581. });
  88582. $("#luckysheet-sheettable_0").addClass("luckysheetPaintCursor");
  88583. store_default.luckysheet_selection_range = [{"row": store_default.luckysheet_select_save[0].row, "column": store_default.luckysheet_select_save[0].column}];
  88584. selectionCopyShow();
  88585. let RowlChange = false, HasMC = false;
  88586. for (let r2 = store_default.luckysheet_select_save[0].row[0]; r2 <= store_default.luckysheet_select_save[0].row[1]; r2++) {
  88587. if (store_default.config["rowhidden"] != null && store_default.config["rowhidden"][r2] != null) {
  88588. continue;
  88589. }
  88590. if (store_default.config["rowlen"] != null && r2 in store_default.config["rowlen"]) {
  88591. RowlChange = true;
  88592. }
  88593. for (let c2 = store_default.luckysheet_select_save[0].column[0]; c2 <= store_default.luckysheet_select_save[0].column[1]; c2++) {
  88594. let cell = store_default.flowdata[r2][c2];
  88595. if (getObjType(cell) == "object" && "mc" in cell && cell.mc.rs != null) {
  88596. HasMC = true;
  88597. }
  88598. }
  88599. }
  88600. store_default.luckysheet_copy_save = {"dataSheetIndex": store_default.currentSheetIndex, "copyRange": [{"row": store_default.luckysheet_select_save[0].row, "column": store_default.luckysheet_select_save[0].column}], "RowlChange": RowlChange, "HasMC": HasMC};
  88601. _this.luckysheetPaintModelOn = true;
  88602. _this.luckysheetPaintSingle = false;
  88603. });
  88604. $("#luckysheet-icon-currency").click(function() {
  88605. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  88606. _this.updateFormat(d, "ct", "\xA5 #.00");
  88607. });
  88608. $("#luckysheet-icon-percent").click(function() {
  88609. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  88610. _this.updateFormat(d, "ct", "0.00%");
  88611. });
  88612. $("#luckysheet-icon-fmt-decimal-decrease").click(function() {
  88613. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  88614. let row_index = store_default.luckysheet_select_save[0]["row_focus"], col_index = store_default.luckysheet_select_save[0]["column_focus"];
  88615. let foucsStatus = _this.checkstatus(d, row_index, col_index, "ct");
  88616. let cell = d[row_index][col_index];
  88617. if (foucsStatus == null || foucsStatus.t != "n") {
  88618. return;
  88619. }
  88620. if (foucsStatus.fa == "General") {
  88621. let mask = genarate(cell.v);
  88622. foucsStatus = mask[1];
  88623. }
  88624. let reg = /^(w|W)((0?)|(0\.0+))$/;
  88625. if (reg.test(foucsStatus.fa)) {
  88626. if (foucsStatus.fa.indexOf(".") > -1) {
  88627. if (foucsStatus.fa.substr(-2) == ".0") {
  88628. _this.updateFormat(d, "ct", foucsStatus.fa.split(".")[0]);
  88629. } else {
  88630. _this.updateFormat(d, "ct", foucsStatus.fa.substr(0, foucsStatus.fa.length - 1));
  88631. }
  88632. } else {
  88633. _this.updateFormat(d, "ct", foucsStatus.fa);
  88634. }
  88635. return;
  88636. }
  88637. let prefix = "", main = "", fa = [];
  88638. if (foucsStatus.fa.indexOf(".") > -1) {
  88639. fa = foucsStatus.fa.split(".");
  88640. prefix = fa[0];
  88641. main = fa[1];
  88642. } else {
  88643. return;
  88644. }
  88645. fa = main.split("");
  88646. let tail = "";
  88647. for (let i2 = fa.length - 1; i2 >= 0; i2--) {
  88648. let c2 = fa[i2];
  88649. if (c2 != "#" && c2 != "0" && c2 != "," && isNaN(parseInt(c2))) {
  88650. tail = c2 + tail;
  88651. } else {
  88652. break;
  88653. }
  88654. }
  88655. let fmt = "";
  88656. if (foucsStatus.fa.indexOf(".") > -1) {
  88657. let suffix = main;
  88658. if (tail.length > 0) {
  88659. suffix = main.replace(tail, "");
  88660. }
  88661. let pos = suffix.replace(/#/g, "0");
  88662. pos = pos.substr(0, pos.length - 1);
  88663. if (pos == "") {
  88664. fmt = prefix + tail;
  88665. } else {
  88666. fmt = prefix + "." + pos + tail;
  88667. }
  88668. }
  88669. _this.updateFormat(d, "ct", fmt);
  88670. });
  88671. $("#luckysheet-icon-fmt-decimal-increase").click(function() {
  88672. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  88673. let row_index = store_default.luckysheet_select_save[0]["row_focus"], col_index = store_default.luckysheet_select_save[0]["column_focus"];
  88674. let foucsStatus = _this.checkstatus(d, row_index, col_index, "ct");
  88675. let cell = d[row_index][col_index];
  88676. if (foucsStatus == null || foucsStatus.t != "n") {
  88677. return;
  88678. }
  88679. if (foucsStatus.fa == "General") {
  88680. let mask = genarate(cell.v);
  88681. foucsStatus = mask[1];
  88682. }
  88683. if (foucsStatus.fa == "General") {
  88684. _this.updateFormat(d, "ct", "#.0");
  88685. return;
  88686. }
  88687. let reg = /^(w|W)((0?)|(0\.0+))$/;
  88688. if (reg.test(foucsStatus.fa)) {
  88689. if (foucsStatus.fa.indexOf(".") > -1) {
  88690. _this.updateFormat(d, "ct", foucsStatus.fa + "0");
  88691. } else {
  88692. if (foucsStatus.fa.substr(-1) == "0") {
  88693. _this.updateFormat(d, "ct", foucsStatus.fa + ".0");
  88694. } else {
  88695. _this.updateFormat(d, "ct", foucsStatus.fa + "0.0");
  88696. }
  88697. }
  88698. return;
  88699. }
  88700. let prefix = "", main = "", fa = [];
  88701. if (foucsStatus.fa.indexOf(".") > -1) {
  88702. fa = foucsStatus.fa.split(".");
  88703. prefix = fa[0];
  88704. main = fa[1];
  88705. } else {
  88706. main = foucsStatus.fa;
  88707. }
  88708. fa = main.split("");
  88709. let tail = "";
  88710. for (let i2 = fa.length - 1; i2 >= 0; i2--) {
  88711. let c2 = fa[i2];
  88712. if (c2 != "#" && c2 != "0" && c2 != "," && isNaN(parseInt(c2))) {
  88713. tail = c2 + tail;
  88714. } else {
  88715. break;
  88716. }
  88717. }
  88718. let fmt = "";
  88719. if (foucsStatus.fa.indexOf(".") > -1) {
  88720. let suffix = main;
  88721. if (tail.length > 0) {
  88722. suffix = main.replace(tail, "");
  88723. }
  88724. let pos = suffix.replace(/#/g, "0");
  88725. pos += "0";
  88726. fmt = prefix + "." + pos + tail;
  88727. } else {
  88728. if (tail.length > 0) {
  88729. fmt = main.replace(tail, "") + ".0" + tail;
  88730. } else {
  88731. fmt = main + ".0" + tail;
  88732. }
  88733. }
  88734. _this.updateFormat(d, "ct", fmt);
  88735. });
  88736. $("#luckysheet-icon-fmt-other").click(function() {
  88737. const _locale = locale_default();
  88738. const locale_format = _locale.format;
  88739. const locale_defaultFmt = _locale.defaultFmt;
  88740. let menuButtonId = $(this).attr("id") + "-menuButton";
  88741. let $menuButton = $("#" + menuButtonId);
  88742. if ($menuButton.length == 0) {
  88743. let itemdata = locale_defaultFmt;
  88744. let itemset = _this.createButtonMenu(itemdata);
  88745. let menu = replaceHtml(_this.menu, {"id": "fmt-other", "item": itemset, "subclass": "", "sub": ""});
  88746. let subitemdata = [
  88747. {"text": locale_format.moreCurrency + "...", "value": "morecurrency", "example": ""},
  88748. {"text": locale_format.moreDateTime + "...", "value": "moredatetime", "example": ""},
  88749. {"text": locale_format.moreNumber + "...", "value": "moredigit", "example": ""}
  88750. ];
  88751. let subitemset = _this.createButtonMenu(subitemdata);
  88752. let submenu = replaceHtml(_this.menu, {"id": "fmtOtherSelf", "item": subitemset, "subclass": "luckysheet-menuButton-sub"});
  88753. $("body").append(menu + submenu);
  88754. $menuButton = $("#" + menuButtonId).width(250);
  88755. _this.focus($menuButton);
  88756. $menuButton.find(".luckysheet-cols-menuitem").click(function() {
  88757. $menuButton.hide();
  88758. luckysheetContainerFocus();
  88759. let $t = $(this), itemvalue2 = $t.attr("itemvalue"), itemname = $t.attr("itemname");
  88760. $("#luckysheet-icon-fmt-other").find(".luckysheet-toolbar-menu-button-caption").html(" " + itemname + " ");
  88761. if (itemvalue2 == "fmtOtherSelf") {
  88762. return;
  88763. }
  88764. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  88765. _this.focus($menuButton, itemvalue2);
  88766. _this.updateFormat(d, "ct", itemvalue2);
  88767. });
  88768. $("#luckysheet-icon-fmtOtherSelf-menuButton").find(".luckysheet-cols-menuitem").click(function() {
  88769. $menuButton.hide();
  88770. $("#luckysheet-icon-fmtOtherSelf-menuButton").hide();
  88771. luckysheetContainerFocus();
  88772. let itemvalue2 = $(this).attr("itemvalue");
  88773. moreFormat_default.createDialog(itemvalue2);
  88774. moreFormat_default.init();
  88775. });
  88776. } else {
  88777. const text = $(this).find(".luckysheet-toolbar-menu-button-caption").text().trim();
  88778. const format = locale_defaultFmt.find((f) => f.text === text);
  88779. if (format) {
  88780. _this.focus($menuButton, format.value);
  88781. }
  88782. }
  88783. let userlen = $(this).outerWidth();
  88784. let tlen = $menuButton.outerWidth();
  88785. let menuleft = $(this).offset().left;
  88786. if (tlen > userlen && tlen + menuleft > $("#" + store_default.container).width()) {
  88787. menuleft = menuleft - tlen + userlen;
  88788. }
  88789. mouseclickposition($menuButton, menuleft, $(this).offset().top + 25, "lefttop");
  88790. });
  88791. $("#luckysheet-icon-font-family").mousedown(function(e) {
  88792. hideMenuByCancel(e);
  88793. e.stopPropagation();
  88794. }).click(function() {
  88795. let menuButtonId = $(this).attr("id") + "-menuButton";
  88796. let $menuButton = $("#" + menuButtonId);
  88797. if ($menuButton.length == 0) {
  88798. let itemset = _this.createButtonMenu(_this.fontSelectList);
  88799. let menu = replaceHtml(_this.menu, {"id": "font-family", "item": itemset, "subclass": "", "sub": ""});
  88800. $("body").append(menu);
  88801. $menuButton = $("#" + menuButtonId).width(200);
  88802. _this.focus($menuButton);
  88803. $menuButton.on("click", ".luckysheet-cols-menuitem", function() {
  88804. $menuButton.hide();
  88805. luckysheetContainerFocus();
  88806. let $t = $(this), itemvalue2 = $t.attr("itemvalue"), itemname = $t.attr("itemname");
  88807. _this.focus($menuButton, itemvalue2);
  88808. $("#luckysheet-icon-font-family").find(".luckysheet-toolbar-menu-button-caption").html(" " + itemname + " ");
  88809. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  88810. _this.updateFormat(d, "ff", itemvalue2);
  88811. });
  88812. }
  88813. let userlen = $(this).outerWidth();
  88814. let tlen = $menuButton.outerWidth();
  88815. let menuleft = $(this).offset().left;
  88816. if (tlen > userlen && tlen + menuleft > $("#" + store_default.container).width()) {
  88817. menuleft = menuleft - tlen + userlen;
  88818. }
  88819. mouseclickposition($menuButton, menuleft, $(this).offset().top + 25, "lefttop");
  88820. });
  88821. $("#luckysheet-icon-text-color").mousedown(function(e) {
  88822. hideMenuByCancel(e);
  88823. e.stopPropagation();
  88824. }).click(function() {
  88825. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  88826. let color = $(this).attr("color");
  88827. if (color == null) {
  88828. color = "#000000";
  88829. }
  88830. _this.updateFormat(d, "fc", color);
  88831. });
  88832. $("#luckysheet-icon-text-color-menu").mousedown(function(e) {
  88833. hideMenuByCancel(e);
  88834. e.stopPropagation();
  88835. }).click(function() {
  88836. let menuButtonId = $(this).attr("id") + "-menuButton";
  88837. let $menuButton = $("#" + menuButtonId);
  88838. if ($menuButton.length == 0) {
  88839. const _locale = locale_default();
  88840. const locale_toolbar = _locale.toolbar;
  88841. const locale_button = _locale.button;
  88842. const locale_alternatingColors = _locale.alternatingColors;
  88843. let itemdata = [
  88844. {"name": locale_toolbar.alternatingColors + "...", "id": "luckysheet-color-alternate", "example": ""}
  88845. ];
  88846. let itemset = _this.createButtonMenu(itemdata);
  88847. let subid = "text-color-self";
  88848. let coloritem = replaceHtml(_this.coloritem, {"class": "luckysheet-icon-alternateformat", "name": locale_toolbar.alternatingColors + "..."});
  88849. let menu = replaceHtml(_this.color, {"id": menuButtonId, "coloritem": coloritem, "colorself": subid, "sub": "", "resetColor": locale_toolbar.resetColor});
  88850. $("body").append(menu);
  88851. $menuButton = $("#" + menuButtonId);
  88852. $("#" + menuButtonId).find(".luckysheet-color-selected").spectrum({
  88853. showPalette: true,
  88854. showPaletteOnly: true,
  88855. preferredFormat: "hex",
  88856. clickoutFiresChange: false,
  88857. showInitial: true,
  88858. showInput: true,
  88859. flat: true,
  88860. hideAfterPaletteSelect: true,
  88861. showSelectionPalette: true,
  88862. maxPaletteSize: 8,
  88863. maxSelectionSize: 8,
  88864. cancelText: locale_button.cancel,
  88865. chooseText: locale_button.confirm,
  88866. togglePaletteMoreText: locale_toolbar.customColor,
  88867. togglePaletteLessText: locale_toolbar.collapse,
  88868. togglePaletteOnly: true,
  88869. clearText: locale_toolbar.clearText,
  88870. color: luckysheetConfigsetting_default.defaultTextColor,
  88871. noColorSelectedText: locale_toolbar.noColorSelectedText,
  88872. localStorageKey: "spectrum.textcolor" + server_default.gridKey,
  88873. palette: [
  88874. ["#000", "#444", "#666", "#999", "#ccc", "#eee", "#f3f3f3", "#fff"],
  88875. ["#f00", "#f90", "#ff0", "#0f0", "#0ff", "#00f", "#90f", "#f0f"],
  88876. ["#f4cccc", "#fce5cd", "#fff2cc", "#d9ead3", "#d0e0e3", "#cfe2f3", "#d9d2e9", "#ead1dc"],
  88877. ["#ea9999", "#f9cb9c", "#ffe599", "#b6d7a8", "#a2c4c9", "#9fc5e8", "#b4a7d6", "#d5a6bd"],
  88878. ["#e06666", "#f6b26b", "#ffd966", "#93c47d", "#76a5af", "#6fa8dc", "#8e7cc3", "#c27ba0"],
  88879. ["#c00", "#e69138", "#f1c232", "#6aa84f", "#45818e", "#3d85c6", "#674ea7", "#a64d79"],
  88880. ["#900", "#b45f06", "#bf9000", "#38761d", "#134f5c", "#0b5394", "#351c75", "#741b47"],
  88881. ["#600", "#783f04", "#7f6000", "#274e13", "#0c343d", "#073763", "#20124d", "#4c1130"]
  88882. ],
  88883. change: function(color) {
  88884. let $input = $(this);
  88885. if (color != null) {
  88886. color = color.toHexString();
  88887. } else {
  88888. color = "#000";
  88889. }
  88890. let oldcolor = null;
  88891. $("#luckysheet-icon-text-color .text-color-bar").css("background-color", color);
  88892. $("#luckysheet-icon-text-color").attr("color", color);
  88893. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  88894. _this.updateFormat(d, "fc", color);
  88895. $menuButton.hide();
  88896. luckysheetContainerFocus();
  88897. }
  88898. });
  88899. $menuButton.find(".luckysheet-color-reset").click(function() {
  88900. $menuButton.hide();
  88901. luckysheetContainerFocus();
  88902. let $input = $("#" + menuButtonId).find(".luckysheet-color-selected");
  88903. $input.val("#000000");
  88904. $("#luckysheet-icon-text-color").attr("color", null);
  88905. $input.spectrum("set", "#000000");
  88906. $("#luckysheet-icon-text-color .luckysheet-color-menu-button-indicator").css("border-bottom-color", "#000000");
  88907. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  88908. _this.updateFormat(d, "fc", null);
  88909. });
  88910. $menuButton.find(".luckysheet-icon-alternateformat").click(function() {
  88911. $menuButton.hide();
  88912. luckysheetContainerFocus();
  88913. if (store_default.luckysheet_select_save.length > 1) {
  88914. if (isEditMode()) {
  88915. alert(locale_alternatingColors.errorInfo);
  88916. } else {
  88917. tooltip_default.info(locale_alternatingColors.errorInfo, "");
  88918. }
  88919. return;
  88920. }
  88921. let range2 = $.extend(true, {}, store_default.luckysheet_select_save[0]);
  88922. let isExists = alternateformat_default.rangeIsExists(range2)[0];
  88923. if (!isExists) {
  88924. alternateformat_default.modelfocusIndex = 0;
  88925. alternateformat_default.new(range2);
  88926. }
  88927. alternateformat_default.init();
  88928. alternateformat_default.perfect();
  88929. });
  88930. }
  88931. let userlen = $(this).outerWidth();
  88932. let tlen = $menuButton.outerWidth();
  88933. let menuleft = $(this).offset().left;
  88934. if (tlen > userlen && tlen + menuleft > $("#" + store_default.container).width()) {
  88935. menuleft = menuleft - tlen + userlen;
  88936. }
  88937. let offsetTop = $(this).offset().top + 26;
  88938. setTimeout(function() {
  88939. let $input = $("#" + menuButtonId).find(".luckysheet-color-selected");
  88940. $input.spectrum("set", $input.val());
  88941. mouseclickposition($menuButton, menuleft - 28, offsetTop, "lefttop");
  88942. }, 1);
  88943. });
  88944. $("#luckysheet-icon-cell-color").click(function() {
  88945. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  88946. let color = $(this).attr("color");
  88947. if (color == null) {
  88948. color = "#ffffff";
  88949. }
  88950. _this.updateFormat(d, "bg", color);
  88951. });
  88952. $("#luckysheet-icon-cell-color-menu").click(function() {
  88953. let menuButtonId = $(this).attr("id") + "-menuButton";
  88954. let $menuButton = $("#" + menuButtonId);
  88955. if ($menuButton.length == 0) {
  88956. let subid = "cell-color-self";
  88957. const _locale = locale_default();
  88958. const locale_toolbar = _locale.toolbar;
  88959. const locale_button = _locale.button;
  88960. const locale_alternatingColors = _locale.alternatingColors;
  88961. let coloritem = replaceHtml(_this.coloritem, {"class": "luckysheet-icon-alternateformat", "name": locale_toolbar.alternatingColors + "..."});
  88962. let menu = replaceHtml(_this.color, {"id": menuButtonId, "coloritem": coloritem, "colorself": subid, "sub": "", "resetColor": locale_toolbar.resetColor});
  88963. $("body").append(menu);
  88964. $menuButton = $("#" + menuButtonId);
  88965. $("#" + menuButtonId).find(".luckysheet-color-selected").spectrum({
  88966. showPalette: true,
  88967. showPaletteOnly: true,
  88968. preferredFormat: "hex",
  88969. clickoutFiresChange: false,
  88970. showInitial: true,
  88971. showInput: true,
  88972. flat: true,
  88973. hideAfterPaletteSelect: true,
  88974. showSelectionPalette: true,
  88975. maxPaletteSize: 8,
  88976. maxSelectionSize: 8,
  88977. color: luckysheetConfigsetting_default.defaultCellColor,
  88978. cancelText: locale_button.cancel,
  88979. chooseText: locale_button.confirm,
  88980. togglePaletteMoreText: locale_toolbar.customColor,
  88981. togglePaletteLessText: locale_toolbar.collapse,
  88982. togglePaletteOnly: true,
  88983. clearText: locale_toolbar.clearText,
  88984. noColorSelectedText: locale_toolbar.noColorSelectedText,
  88985. localStorageKey: "spectrum.bgcolor" + server_default.gridKey,
  88986. palette: [
  88987. ["#000", "#444", "#666", "#999", "#ccc", "#eee", "#f3f3f3", "#fff"],
  88988. ["#f00", "#f90", "#ff0", "#0f0", "#0ff", "#00f", "#90f", "#f0f"],
  88989. ["#f4cccc", "#fce5cd", "#fff2cc", "#d9ead3", "#d0e0e3", "#cfe2f3", "#d9d2e9", "#ead1dc"],
  88990. ["#ea9999", "#f9cb9c", "#ffe599", "#b6d7a8", "#a2c4c9", "#9fc5e8", "#b4a7d6", "#d5a6bd"],
  88991. ["#e06666", "#f6b26b", "#ffd966", "#93c47d", "#76a5af", "#6fa8dc", "#8e7cc3", "#c27ba0"],
  88992. ["#c00", "#e69138", "#f1c232", "#6aa84f", "#45818e", "#3d85c6", "#674ea7", "#a64d79"],
  88993. ["#900", "#b45f06", "#bf9000", "#38761d", "#134f5c", "#0b5394", "#351c75", "#741b47"],
  88994. ["#600", "#783f04", "#7f6000", "#274e13", "#0c343d", "#073763", "#20124d", "#4c1130"]
  88995. ],
  88996. change: function(color) {
  88997. let $input = $(this);
  88998. if (color != null) {
  88999. color = color.toHexString();
  89000. } else {
  89001. color = "#fff";
  89002. }
  89003. let oldcolor = null;
  89004. $("#luckysheet-icon-cell-color .text-color-bar").css("background-color", color);
  89005. $("#luckysheet-icon-cell-color").attr("color", color);
  89006. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  89007. _this.updateFormat(d, "bg", color);
  89008. $menuButton.hide();
  89009. luckysheetContainerFocus();
  89010. }
  89011. });
  89012. $menuButton.find(".luckysheet-color-reset").click(function() {
  89013. $menuButton.hide();
  89014. luckysheetContainerFocus();
  89015. let $input = $("#" + menuButtonId).find(".luckysheet-color-selected");
  89016. $input.val("#ffffff");
  89017. $("#luckysheet-icon-cell-color").attr("color", null);
  89018. $input.spectrum("set", "#ffffff");
  89019. $("#luckysheet-icon-cell-color .luckysheet-color-menu-button-indicator").css("border-bottom-color", "#ffffff");
  89020. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  89021. _this.updateFormat(d, "bg", null);
  89022. });
  89023. $menuButton.find(".luckysheet-icon-alternateformat").click(function() {
  89024. if (!checkIsAllowEdit()) {
  89025. tooltip_default.info("", locale_default().pivotTable.errorNotAllowEdit);
  89026. return;
  89027. }
  89028. $menuButton.hide();
  89029. luckysheetContainerFocus();
  89030. if (store_default.luckysheet_select_save.length > 1) {
  89031. if (isEditMode()) {
  89032. alert(locale_alternatingColors.errorInfo);
  89033. } else {
  89034. tooltip_default.info(locale_alternatingColors.errorInfo, "");
  89035. }
  89036. return;
  89037. }
  89038. let range2 = $.extend(true, {}, store_default.luckysheet_select_save[0]);
  89039. let isExists = alternateformat_default.rangeIsExists(range2)[0];
  89040. if (!isExists) {
  89041. alternateformat_default.modelfocusIndex = 0;
  89042. alternateformat_default.new(range2);
  89043. }
  89044. alternateformat_default.init();
  89045. alternateformat_default.perfect();
  89046. });
  89047. $("#" + menuButtonId).find(".luckysheet-color-selected").val("#fff");
  89048. }
  89049. let userlen = $(this).outerWidth();
  89050. let tlen = $menuButton.outerWidth();
  89051. let menuleft = $(this).offset().left;
  89052. if (tlen > userlen && tlen + menuleft > $("#" + store_default.container).width()) {
  89053. menuleft = menuleft - tlen + userlen;
  89054. }
  89055. let offsetTop = $(this).offset().top + 26;
  89056. setTimeout(function() {
  89057. let $input = $("#" + menuButtonId).find(".luckysheet-color-selected");
  89058. $input.spectrum("set", $input.val());
  89059. mouseclickposition($menuButton, menuleft - 28, offsetTop, "lefttop");
  89060. }, 1);
  89061. });
  89062. let luckysheet_fs_setTimeout = null;
  89063. $("#luckysheet-icon-font-size").mousedown(function(e) {
  89064. if (parseInt($("#luckysheet-input-box").css("top")) > 0) {
  89065. let w = window.getSelection();
  89066. if (w.type != "None") {
  89067. let range2 = w.getRangeAt(0);
  89068. if (!range2.collapsed) {
  89069. store_default.inlineStringEditRange = range2.cloneRange();
  89070. }
  89071. }
  89072. }
  89073. hideMenuByCancel(e);
  89074. e.stopPropagation();
  89075. }).click(function() {
  89076. let menuButtonId = $(this).attr("id") + "-menuButton";
  89077. let $menuButton = $("#" + menuButtonId);
  89078. if ($menuButton.length == 0) {
  89079. let itemdata = [
  89080. {"text": "9", "value": "9", "example": ""},
  89081. {"text": "10", "value": "10", "example": ""},
  89082. {"text": "11", "value": "11", "example": ""},
  89083. {"text": "12", "value": "12", "example": ""},
  89084. {"text": "14", "value": "14", "example": ""},
  89085. {"text": "16", "value": "16", "example": ""},
  89086. {"text": "18", "value": "18", "example": ""},
  89087. {"text": "20", "value": "20", "example": ""},
  89088. {"text": "22", "value": "22", "example": ""},
  89089. {"text": "24", "value": "24", "example": ""},
  89090. {"text": "26", "value": "26", "example": ""},
  89091. {"text": "28", "value": "28", "example": ""},
  89092. {"text": "36", "value": "36", "example": ""},
  89093. {"text": "48", "value": "48", "example": ""},
  89094. {"text": "72", "value": "72", "example": ""}
  89095. ];
  89096. let itemset = _this.createButtonMenu(itemdata);
  89097. let menu = replaceHtml(_this.menu, {"id": "font-size", "item": itemset, "subclass": "", "sub": ""});
  89098. $("body").append(menu);
  89099. $menuButton = $("#" + menuButtonId).width(150);
  89100. _this.focus($menuButton, 10);
  89101. $menuButton.find(".luckysheet-cols-menuitem").click(function() {
  89102. $menuButton.hide();
  89103. luckysheetContainerFocus();
  89104. let $t = $(this), itemvalue2 = $t.attr("itemvalue"), $input = $("#luckysheet-icon-font-size input");
  89105. $("#luckysheet-icon-font-size").attr("itemvalue", itemvalue2);
  89106. _this.focus($menuButton, itemvalue2);
  89107. $input.val(itemvalue2);
  89108. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  89109. _this.updateFormat(d, "fs", itemvalue2);
  89110. clearTimeout(luckysheet_fs_setTimeout);
  89111. });
  89112. }
  89113. let userlen = $(this).outerWidth();
  89114. let tlen = $menuButton.outerWidth();
  89115. let defualtvalue = $("#luckysheet-icon-font-size").attr("itemvalue");
  89116. if (defualtvalue == null) {
  89117. defualtvalue = 10;
  89118. }
  89119. _this.focus($menuButton, defualtvalue);
  89120. let menuleft = $(this).offset().left;
  89121. if (tlen > userlen && tlen + menuleft > $("#" + store_default.container).width()) {
  89122. menuleft = menuleft - tlen + userlen;
  89123. }
  89124. mouseclickposition($menuButton, menuleft, $(this).offset().top + 25, "lefttop");
  89125. }).find("input.luckysheet-toolbar-textinput").keydown(function(e) {
  89126. hideMenuByCancel(e);
  89127. e.stopPropagation();
  89128. }).keyup(function(e) {
  89129. if (e.keyCode != 13) {
  89130. return;
  89131. }
  89132. let $this = $(this);
  89133. let itemvalue2 = parseInt($this.val());
  89134. let $menuButton = $("#luckysheet-icon-font-size-menuButton");
  89135. _this.focus($menuButton, itemvalue2);
  89136. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  89137. _this.updateFormat(d, "fs", itemvalue2);
  89138. luckysheet_fs_setTimeout = setTimeout(function() {
  89139. $menuButton.hide();
  89140. $this.blur();
  89141. }, 200);
  89142. });
  89143. $("#luckysheet-icon-border-all").click(function() {
  89144. if (!checkIsAllowEdit()) {
  89145. tooltip_default.info("", locale_default().pivotTable.errorNotAllowEdit);
  89146. return;
  89147. }
  89148. if (!checkProtectionFormatCells(store_default.currentSheetIndex)) {
  89149. return;
  89150. }
  89151. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  89152. let type = $(this).attr("type");
  89153. if (type == null) {
  89154. type = "border-all";
  89155. }
  89156. let subcolormenuid = "luckysheet-icon-borderColor-menuButton";
  89157. let color = $("#" + subcolormenuid).find(".luckysheet-color-selected").val();
  89158. let style = $("#luckysheetborderSizepreview").attr("itemvalue");
  89159. if (color == null || color == "") {
  89160. color = "#000";
  89161. }
  89162. if (style == null || style == "") {
  89163. style = "1";
  89164. }
  89165. let cfg = $.extend(true, {}, store_default.config);
  89166. if (cfg["borderInfo"] == null) {
  89167. cfg["borderInfo"] = [];
  89168. }
  89169. let borderInfo = {
  89170. "rangeType": "range",
  89171. "borderType": type,
  89172. "color": color,
  89173. "style": style,
  89174. "range": $.extend(true, [], store_default.luckysheet_select_save)
  89175. };
  89176. cfg["borderInfo"].push(borderInfo);
  89177. if (store_default.clearjfundo) {
  89178. store_default.jfundo.length = 0;
  89179. let redo2 = [];
  89180. redo2["type"] = "borderChange";
  89181. redo2["config"] = $.extend(true, {}, store_default.config);
  89182. redo2["curconfig"] = $.extend(true, {}, cfg);
  89183. redo2["sheetIndex"] = store_default.currentSheetIndex;
  89184. store_default.jfredo.push(redo2);
  89185. }
  89186. server_default.saveParam("cg", store_default.currentSheetIndex, cfg["borderInfo"], {"k": "borderInfo"});
  89187. store_default.config = cfg;
  89188. store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)].config = store_default.config;
  89189. setTimeout(function() {
  89190. luckysheetrefreshgrid();
  89191. }, 1);
  89192. });
  89193. $("#luckysheet-icon-border-menu").click(function() {
  89194. let menuButtonId = $(this).attr("id") + "-menuButton";
  89195. let $menuButton = $("#" + menuButtonId);
  89196. if ($menuButton.length == 0) {
  89197. let canvasH = 10, canvasW = 120;
  89198. const _locale = locale_default();
  89199. const locale_border = _locale.border;
  89200. const locale_toolbar = _locale.toolbar;
  89201. const locale_button = _locale.button;
  89202. let itemdata = [
  89203. {"text": locale_border.borderTop, "value": "border-top", "example": '<div class="luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-top iconfont luckysheet-iconfont-shangbiankuang" style="user-select: none;"> </div> </div>'},
  89204. {"text": locale_border.borderBottom, "value": "border-bottom", "example": '<div class="luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-bottom iconfont luckysheet-iconfont-xiabiankuang" style="user-select: none;"> </div> </div>'},
  89205. {"text": locale_border.borderLeft, "value": "border-left", "example": '<div class="luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-left iconfont luckysheet-iconfont-zuobiankuang" style="user-select: none;"> </div> </div>'},
  89206. {"text": locale_border.borderRight, "value": "border-right", "example": '<div class="luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-right iconfont luckysheet-iconfont-youbiankuang" style="user-select: none;"> </div> </div>'},
  89207. {"text": "", "value": "split", "example": ""},
  89208. {"text": locale_border.borderNone, "value": "border-none", "example": '<div class="luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-none iconfont luckysheet-iconfont-wubiankuang" style="user-select: none;"> </div> </div>'},
  89209. {"text": locale_border.borderAll, "value": "border-all", "example": '<div class="luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-all iconfont luckysheet-iconfont-quanjiabiankuang" style="user-select: none;"> </div> </div>'},
  89210. {"text": locale_border.borderOutside, "value": "border-outside", "example": '<div class="luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-outside iconfont luckysheet-iconfont-sizhoujiabiankuang" style="user-select: none;"> </div> </div>'},
  89211. {"text": "", "value": "split", "example": ""},
  89212. {"text": locale_border.borderInside, "value": "border-inside", "example": '<div class="luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-inside iconfont luckysheet-iconfont-neikuangxian" style="user-select: none;"> </div> </div>'},
  89213. {"text": locale_border.borderHorizontal, "value": "border-horizontal", "example": '<div class="luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-horizontal iconfont luckysheet-iconfont-neikuanghengxian" style="user-select: none;"> </div> </div>'},
  89214. {"text": locale_border.borderVertical, "value": "border-vertical", "example": '<div class="luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-vertical iconfont luckysheet-iconfont-neikuangshuxian" style="user-select: none;"> </div> </div>'},
  89215. {"text": "", "value": "split", "example": ""},
  89216. {"text": "<span id='luckysheet-icon-borderColor-linecolor' class='luckysheet-mousedown-cancel' style='border-bottom:3px solid #000;'>" + locale_border.borderColor + "</span>", "value": "borderColor", "example": "more"},
  89217. {"text": "" + locale_border.borderSize + "<img id='luckysheetborderSizepreview' width=100 height=10 src='data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==' style='position:absolute;bottom:-5px;right:0px;width:100px;height:10px;'>", "value": "borderSize", "example": "more"}
  89218. ];
  89219. const iconfontObject = iconfontObjects.border;
  89220. let itemset = _this.createButtonMenu(itemdata);
  89221. let menu = replaceHtml(_this.menu, {"id": "border-menu", "item": itemset, "subclass": "", "sub": ""});
  89222. let subitemdata = [
  89223. {"text": locale_border.borderNone, "value": "0", "example": ""},
  89224. {"text": "<canvas type='Thin' class='border-Thin' width=" + canvasW + " height=" + canvasH + " style='width:" + canvasW + "px;height:" + canvasH + "px;position:static;'></canvas>", "value": "1", "example": ""},
  89225. {"text": "<canvas type='Hair' class='border-Hair' width=" + canvasW + " height=" + canvasH + " style='width:" + canvasW + "px;height:" + canvasH + "px;position:static;'></canvas>", "value": "2", "example": ""},
  89226. {"text": "<canvas type='Dotted' class='border-Dotted' width=" + canvasW + " height=" + canvasH + " style='width:" + canvasW + "px;height:" + canvasH + "px;position:static;'></canvas>", "value": "3", "example": ""},
  89227. {"text": "<canvas type='Dashed' class='border-Dashed' width=" + canvasW + " height=" + canvasH + " style='width:" + canvasW + "px;height:" + canvasH + "px;position:static;'></canvas>", "value": "4", "example": ""},
  89228. {"text": "<canvas type='DashDot' class='border-DashDot' width=" + canvasW + " height=" + canvasH + " style='width:" + canvasW + "px;height:" + canvasH + "px;position:static;'></canvas>", "value": "5", "example": ""},
  89229. {"text": "<canvas type='DashDotDot' class='border-DashDotDot' width=" + canvasW + " height=" + canvasH + " style='width:" + canvasW + "px;height:" + canvasH + "px;position:static;'></canvas>", "value": "6", "example": ""},
  89230. {"text": "<canvas type='Medium' class='border-Medium' width=" + canvasW + " height=" + canvasH + " style='width:" + canvasW + "px;height:" + canvasH + "px;position:static;'></canvas>", "value": "8", "example": ""},
  89231. {"text": "<canvas type='MediumDashed' class='border-MediumDashed' width=" + canvasW + " height=" + canvasH + " style='width:" + canvasW + "px;height:" + canvasH + "px;position:static;'></canvas>", "value": "9", "example": ""},
  89232. {"text": "<canvas type='MediumDashDot' class='border-MediumDashDot' width=" + canvasW + " height=" + canvasH + " style='width:" + canvasW + "px;height:" + canvasH + "px;position:static;'></canvas>", "value": "10", "example": ""},
  89233. {"text": "<canvas type='MediumDashDotDot' class='border-MediumDashDotDot' width=" + canvasW + " height=" + canvasH + " style='width:" + canvasW + "px;height:" + canvasH + "px;position:static;'></canvas>", "value": "11", "example": ""},
  89234. {"text": "<canvas type='Thick' class='border-Thick' width=" + canvasW + " height=" + canvasH + " style='width:" + canvasW + "px;height:" + canvasH + "px;position:static;'></canvas>", "value": "13", "example": ""}
  89235. ];
  89236. let subitemset = _this.createButtonMenu(subitemdata);
  89237. let submenu = replaceHtml(_this.menu, {"id": "borderSize", "item": subitemset, "subclass": "luckysheet-menuButton-sub"});
  89238. let submenuid = "luckysheet-icon-borderSize-menuButton";
  89239. let subcolormenuid = "luckysheet-icon-borderColor-menuButton";
  89240. let colormenu = replaceHtml(_this.color, {"id": subcolormenuid, "coloritem": "", "colorself": "", "sub": "luckysheet-menuButton-sub", resetColor: locale_toolbar.resetColor});
  89241. $("body").append(menu + colormenu + submenu);
  89242. $menuButton = $("#" + menuButtonId).width(170);
  89243. _this.focus($menuButton, "border-all");
  89244. $("#" + submenuid + " canvas").each(function(i2) {
  89245. let type = $(this).attr("type");
  89246. let itemvalue2 = $(this).closest(".luckysheet-cols-menuitem").attr("itemvalue");
  89247. let canvasborder = $(this).addClass("luckysheet-mousedown-cancel").get(0).getContext("2d");
  89248. canvasborder.translate(0.5, 0.5);
  89249. _this.setLineDash(canvasborder, itemvalue2, "h", 0, 5, 100, 5);
  89250. canvasborder.strokeStyle = "#000000";
  89251. canvasborder.stroke();
  89252. canvasborder.closePath();
  89253. });
  89254. $("#" + submenuid + " .luckysheet-cols-menuitem").click(function() {
  89255. $("#" + submenuid).hide();
  89256. let $t = $(this), itemvalue2 = $t.attr("itemvalue");
  89257. if (itemvalue2 == 0) {
  89258. $("#luckysheetborderSizepreview").attr("src", "data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==").attr("itemvalue", null);
  89259. } else {
  89260. let bg = $t.find("canvas").get(0).toDataURL("image/png");
  89261. $("#luckysheetborderSizepreview").attr("src", bg).attr("itemvalue", itemvalue2);
  89262. }
  89263. _this.focus($("#" + submenuid), itemvalue2);
  89264. });
  89265. $menuButton.find(".luckysheet-cols-menuitem").click(function() {
  89266. if (!checkIsAllowEdit()) {
  89267. tooltip_default.info("", locale_default().pivotTable.errorNotAllowEdit);
  89268. return;
  89269. }
  89270. $menuButton.hide();
  89271. luckysheetContainerFocus();
  89272. let $t = $(this), itemvalue2 = $t.attr("itemvalue");
  89273. if (itemvalue2 == "borderColor" || itemvalue2 == "borderSize") {
  89274. return;
  89275. }
  89276. if (!checkProtectionFormatCells(store_default.currentSheetIndex)) {
  89277. return;
  89278. }
  89279. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  89280. let color = $("#" + subcolormenuid).find(".luckysheet-color-selected").val();
  89281. let style = $("#luckysheetborderSizepreview").attr("itemvalue");
  89282. if (color == null || color == "") {
  89283. color = "#000";
  89284. }
  89285. if (style == null || style == "") {
  89286. style = "1";
  89287. }
  89288. let cfg = $.extend(true, {}, store_default.config);
  89289. if (cfg["borderInfo"] == null) {
  89290. cfg["borderInfo"] = [];
  89291. }
  89292. let borderInfo = {
  89293. "rangeType": "range",
  89294. "borderType": itemvalue2,
  89295. "color": color,
  89296. "style": style,
  89297. "range": $.extend(true, [], store_default.luckysheet_select_save)
  89298. };
  89299. cfg["borderInfo"].push(borderInfo);
  89300. if (store_default.clearjfundo) {
  89301. store_default.jfundo.length = 0;
  89302. let redo2 = [];
  89303. redo2["type"] = "borderChange";
  89304. redo2["config"] = $.extend(true, {}, store_default.config);
  89305. redo2["curconfig"] = $.extend(true, {}, cfg);
  89306. redo2["sheetIndex"] = store_default.currentSheetIndex;
  89307. store_default.jfredo.push(redo2);
  89308. }
  89309. server_default.saveParam("cg", store_default.currentSheetIndex, cfg["borderInfo"], {"k": "borderInfo"});
  89310. store_default.config = cfg;
  89311. store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)].config = store_default.config;
  89312. setTimeout(function() {
  89313. luckysheetrefreshgrid();
  89314. }, 1);
  89315. $("#luckysheet-icon-border-all").attr("type", itemvalue2);
  89316. let $icon = $("#luckysheet-icon-border-all").find(".luckysheet-icon-img-container");
  89317. $icon.removeAttr("class").addClass("luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-" + itemvalue2 + iconfontObject[itemvalue2]);
  89318. _this.focus($menuButton, itemvalue2);
  89319. });
  89320. $("#" + subcolormenuid).find(".luckysheet-color-selected").spectrum({
  89321. showPalette: true,
  89322. showPaletteOnly: true,
  89323. preferredFormat: "hex",
  89324. clickoutFiresChange: false,
  89325. showInitial: true,
  89326. showInput: true,
  89327. flat: true,
  89328. hideAfterPaletteSelect: true,
  89329. showSelectionPalette: true,
  89330. maxPaletteSize: 8,
  89331. maxSelectionSize: 8,
  89332. color: "#000",
  89333. cancelText: locale_button.cancel,
  89334. chooseText: locale_button.confirm,
  89335. togglePaletteMoreText: locale_toolbar.customColor,
  89336. togglePaletteLessText: locale_toolbar.collapse,
  89337. togglePaletteOnly: true,
  89338. clearText: locale_toolbar.clearText,
  89339. noColorSelectedText: locale_toolbar.noColorSelectedText,
  89340. localStorageKey: "spectrum.bordercolor" + server_default.gridKey,
  89341. palette: [
  89342. ["#000", "#444", "#666", "#999", "#ccc", "#eee", "#f3f3f3", "#fff"],
  89343. ["#f00", "#f90", "#ff0", "#0f0", "#0ff", "#00f", "#90f", "#f0f"],
  89344. ["#f4cccc", "#fce5cd", "#fff2cc", "#d9ead3", "#d0e0e3", "#cfe2f3", "#d9d2e9", "#ead1dc"],
  89345. ["#ea9999", "#f9cb9c", "#ffe599", "#b6d7a8", "#a2c4c9", "#9fc5e8", "#b4a7d6", "#d5a6bd"],
  89346. ["#e06666", "#f6b26b", "#ffd966", "#93c47d", "#76a5af", "#6fa8dc", "#8e7cc3", "#c27ba0"],
  89347. ["#c00", "#e69138", "#f1c232", "#6aa84f", "#45818e", "#3d85c6", "#674ea7", "#a64d79"],
  89348. ["#900", "#b45f06", "#bf9000", "#38761d", "#134f5c", "#0b5394", "#351c75", "#741b47"],
  89349. ["#600", "#783f04", "#7f6000", "#274e13", "#0c343d", "#073763", "#20124d", "#4c1130"]
  89350. ],
  89351. change: function(color) {
  89352. let $input = $(this);
  89353. if (color != null) {
  89354. color = color.toHexString();
  89355. } else {
  89356. color = "#000";
  89357. }
  89358. let oldcolor = null;
  89359. $("#luckysheet-icon-borderColor-linecolor").css("border-bottom-color", color);
  89360. $("#" + subcolormenuid).find(".luckysheet-color-selected").val(color);
  89361. }
  89362. });
  89363. $("#" + subcolormenuid).find(".luckysheet-color-reset").click(function() {
  89364. let $input = $("#" + subcolormenuid).find(".luckysheet-color-selected");
  89365. $input.val("#000");
  89366. $("#luckysheet-icon-cell-color").attr("color", null);
  89367. $input.spectrum("set", "#000");
  89368. $("#luckysheet-icon-borderColor-linecolor").css("border-bottom-color", "#000");
  89369. });
  89370. }
  89371. let userlen = $(this).outerWidth();
  89372. let tlen = $menuButton.outerWidth();
  89373. let menuleft = $(this).offset().left;
  89374. if (tlen > userlen && tlen + menuleft > $("#" + store_default.container).width()) {
  89375. menuleft = menuleft - tlen + userlen;
  89376. }
  89377. mouseclickposition($menuButton, menuleft - 28, $(this).offset().top + 25, "lefttop");
  89378. });
  89379. $("#luckysheet-icon-merge-button").click(function() {
  89380. const _locale = locale_default();
  89381. const locale_merge = _locale.merge;
  89382. if (!checkProtectionNotEnable(store_default.currentSheetIndex)) {
  89383. return;
  89384. }
  89385. if (selectIsOverlap()) {
  89386. if (isEditMode()) {
  89387. alert(locale_merge.overlappingError);
  89388. } else {
  89389. tooltip_default.info(locale_merge.overlappingError, "");
  89390. }
  89391. return;
  89392. }
  89393. if (store_default.config["merge"] != null) {
  89394. let has_PartMC = false;
  89395. for (let s = 0; s < store_default.luckysheet_select_save.length; s++) {
  89396. let r1 = store_default.luckysheet_select_save[s].row[0], r2 = store_default.luckysheet_select_save[s].row[1];
  89397. let c1 = store_default.luckysheet_select_save[s].column[0], c2 = store_default.luckysheet_select_save[s].column[1];
  89398. has_PartMC = hasPartMC(store_default.config, r1, r2, c1, c2);
  89399. if (has_PartMC) {
  89400. break;
  89401. }
  89402. }
  89403. if (has_PartMC) {
  89404. if (isEditMode()) {
  89405. alert(locale_merge.partiallyError);
  89406. } else {
  89407. tooltip_default.info(locale_merge.partiallyError, "");
  89408. }
  89409. return;
  89410. }
  89411. }
  89412. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  89413. _this.updateFormat_mc(d, "mergeAll");
  89414. });
  89415. $("#luckysheet-icon-merge-menu").click(function() {
  89416. let menuButtonId = $(this).attr("id") + "-menuButton";
  89417. let $menuButton = $("#" + menuButtonId);
  89418. if ($menuButton.length == 0) {
  89419. const _locale = locale_default();
  89420. const locale_merge = _locale.merge;
  89421. let itemdata = [
  89422. {"text": locale_merge.mergeAll, "value": "mergeAll", "example": ""},
  89423. {"text": locale_merge.mergeV, "value": "mergeV", "example": ""},
  89424. {"text": locale_merge.mergeH, "value": "mergeH", "example": ""},
  89425. {"text": locale_merge.mergeCancel, "value": "mergeCancel", "example": ""}
  89426. ];
  89427. let itemset = _this.createButtonMenu(itemdata);
  89428. let menu = replaceHtml(_this.menu, {"id": "merge-menu", "item": itemset, "subclass": "", "sub": ""});
  89429. $("body").append(menu);
  89430. $menuButton = $("#" + menuButtonId);
  89431. _this.focus($menuButton);
  89432. $menuButton.find(".luckysheet-cols-menuitem").click(function() {
  89433. $menuButton.hide();
  89434. luckysheetContainerFocus();
  89435. if (selectIsOverlap()) {
  89436. if (isEditMode()) {
  89437. alert(locale_merge.overlappingError);
  89438. } else {
  89439. tooltip_default.info(locale_merge.overlappingError, "");
  89440. }
  89441. return;
  89442. }
  89443. if (store_default.config["merge"] != null) {
  89444. let has_PartMC = false;
  89445. for (let s = 0; s < store_default.luckysheet_select_save.length; s++) {
  89446. let r1 = store_default.luckysheet_select_save[s].row[0], r2 = store_default.luckysheet_select_save[s].row[1];
  89447. let c1 = store_default.luckysheet_select_save[s].column[0], c2 = store_default.luckysheet_select_save[s].column[1];
  89448. has_PartMC = hasPartMC(store_default.config, r1, r2, c1, c2);
  89449. if (has_PartMC) {
  89450. break;
  89451. }
  89452. }
  89453. if (has_PartMC) {
  89454. if (isEditMode()) {
  89455. alert(locale_merge.partiallyError);
  89456. } else {
  89457. tooltip_default.info(locale_merge.partiallyError, "");
  89458. }
  89459. return;
  89460. }
  89461. }
  89462. let $t = $(this), itemvalue2 = $t.attr("itemvalue");
  89463. _this.focus($menuButton, itemvalue2);
  89464. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  89465. _this.updateFormat_mc(d, itemvalue2);
  89466. });
  89467. }
  89468. let userlen = $(this).outerWidth();
  89469. let tlen = $menuButton.outerWidth();
  89470. let menuleft = $(this).offset().left;
  89471. if (tlen > userlen && tlen + menuleft > $("#" + store_default.container).width()) {
  89472. menuleft = menuleft - tlen + userlen;
  89473. }
  89474. mouseclickposition($menuButton, menuleft - 28, $(this).offset().top + 25, "lefttop");
  89475. });
  89476. $("#luckysheet-icon-align").click(function() {
  89477. let itemvalue2 = $("#luckysheet-icon-align").attr("type");
  89478. if (itemvalue2 == null) {
  89479. itemvalue2 = "left";
  89480. }
  89481. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  89482. _this.updateFormat(d, "ht", itemvalue2);
  89483. });
  89484. $("#luckysheet-icon-align-menu").click(function() {
  89485. let menuButtonId = $(this).attr("id") + "-menuButton";
  89486. let $menuButton = $("#" + menuButtonId);
  89487. if ($menuButton.length == 0) {
  89488. const _locale = locale_default();
  89489. const locale_align = _locale.align;
  89490. let itemdata = [
  89491. {"text": locale_align.left, "value": "left", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-align-left iconfont luckysheet-iconfont-wenbenzuoduiqi" style="user-select: none;"> </div> </div>'},
  89492. {"text": locale_align.center, "value": "center", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-align-center iconfont luckysheet-iconfont-wenbenjuzhongduiqi" style="user-select: none;"> </div> </div>'},
  89493. {"text": locale_align.right, "value": "right", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-align-right iconfont luckysheet-iconfont-wenbenyouduiqi" style="user-select: none;"> </div> </div>'}
  89494. ];
  89495. const iconfontObject = iconfontObjects.align;
  89496. let itemset = _this.createButtonMenu(itemdata);
  89497. let menu = replaceHtml(_this.menu, {"id": "align-menu", "item": itemset, "subclass": "", "sub": ""});
  89498. $("body").append(menu);
  89499. $menuButton = $("#" + menuButtonId).width(120);
  89500. _this.focus($menuButton);
  89501. $menuButton.find(".luckysheet-cols-menuitem").click(function() {
  89502. $menuButton.hide();
  89503. luckysheetContainerFocus();
  89504. let $t = $(this), itemvalue2 = $t.attr("itemvalue");
  89505. _this.focus($menuButton, itemvalue2);
  89506. let $icon = $("#luckysheet-icon-align").attr("type", itemvalue2).find(".luckysheet-icon-img-container");
  89507. $icon.removeAttr("class").addClass("luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-align-" + itemvalue2 + iconfontObject[itemvalue2]);
  89508. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  89509. _this.updateFormat(d, "ht", itemvalue2);
  89510. });
  89511. }
  89512. let userlen = $(this).outerWidth();
  89513. let tlen = $menuButton.outerWidth();
  89514. let menuleft = $(this).offset().left;
  89515. if (tlen > userlen && tlen + menuleft > $("#" + store_default.container).width()) {
  89516. menuleft = menuleft - tlen + userlen;
  89517. }
  89518. mouseclickposition($menuButton, menuleft - 28, $(this).offset().top + 25, "lefttop");
  89519. });
  89520. $("#luckysheet-icon-valign").click(function() {
  89521. let itemvalue2 = $("#luckysheet-icon-valign").attr("type");
  89522. if (itemvalue2 == null) {
  89523. itemvalue2 = "bottom";
  89524. }
  89525. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  89526. _this.updateFormat(d, "vt", itemvalue2);
  89527. });
  89528. $("#luckysheet-icon-valign-menu").click(function() {
  89529. let menuButtonId = $(this).attr("id") + "-menuButton";
  89530. let $menuButton = $("#" + menuButtonId);
  89531. const _locale = locale_default();
  89532. const locale_align = _locale.align;
  89533. if ($menuButton.length == 0) {
  89534. let itemdata = [
  89535. {"text": locale_align.top, "value": "top", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-valign-top iconfont luckysheet-iconfont-dingbuduiqi" style="user-select: none;"> </div> </div>'},
  89536. {"text": locale_align.middle, "value": "middle", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-valign-middle iconfont luckysheet-iconfont-shuipingduiqi" style="user-select: none;"> </div> </div>'},
  89537. {"text": locale_align.bottom, "value": "bottom", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-valign-bottom iconfont luckysheet-iconfont-dibuduiqi" style="user-select: none;"> </div> </div>'}
  89538. ];
  89539. const iconfontObject = iconfontObjects.align;
  89540. let itemset = _this.createButtonMenu(itemdata);
  89541. let menu = replaceHtml(_this.menu, {"id": "valign-menu", "item": itemset, "subclass": "", "sub": ""});
  89542. $("body").append(menu);
  89543. $menuButton = $("#" + menuButtonId).width(120);
  89544. _this.focus($menuButton, "bottom");
  89545. $menuButton.find(".luckysheet-cols-menuitem").click(function() {
  89546. $menuButton.hide();
  89547. luckysheetContainerFocus();
  89548. let $t = $(this), itemvalue2 = $t.attr("itemvalue");
  89549. _this.focus($menuButton, itemvalue2);
  89550. let $icon = $("#luckysheet-icon-valign").attr("type", itemvalue2).find(".luckysheet-icon-img-container");
  89551. $icon.removeAttr("class").addClass("luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-valign-" + itemvalue2 + iconfontObject[itemvalue2]);
  89552. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  89553. _this.updateFormat(d, "vt", itemvalue2);
  89554. });
  89555. }
  89556. let userlen = $(this).outerWidth();
  89557. let tlen = $menuButton.outerWidth();
  89558. let menuleft = $(this).offset().left;
  89559. if (tlen > userlen && tlen + menuleft > $("#" + store_default.container).width()) {
  89560. menuleft = menuleft - tlen + userlen;
  89561. }
  89562. mouseclickposition($menuButton, menuleft - 28, $(this).offset().top + 25, "lefttop");
  89563. });
  89564. $("#luckysheet-icon-textwrap-menu").click(function() {
  89565. let menuButtonId = $(this).attr("id") + "-menuButton";
  89566. let $menuButton = $("#" + menuButtonId);
  89567. if ($menuButton.length == 0) {
  89568. const _locale = locale_default();
  89569. const locale_textWrap = _locale.textWrap;
  89570. let itemdata = [
  89571. {"text": locale_textWrap.overflow, "value": "overflow", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-textwrap-overflow iconfont luckysheet-iconfont-yichu1" style="user-select: none;"> </div> </div>'},
  89572. {"text": locale_textWrap.wrap, "value": "wrap", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-textwrap-wrap iconfont luckysheet-iconfont-zidonghuanhang" style="user-select: none;"> </div> </div>'},
  89573. {"text": locale_textWrap.clip, "value": "clip", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-textwrap-clip iconfont luckysheet-iconfont-jieduan" style="user-select: none;"> </div> </div>'}
  89574. ];
  89575. const iconfontObject = iconfontObjects.textWrap;
  89576. let itemset = _this.createButtonMenu(itemdata);
  89577. let menu = replaceHtml(_this.menu, {"id": "textwrap-menu", "item": itemset, "subclass": "", "sub": ""});
  89578. $("body").append(menu);
  89579. $menuButton = $("#" + menuButtonId).width(120);
  89580. _this.focus($menuButton, "clip");
  89581. $menuButton.find(".luckysheet-cols-menuitem").click(function() {
  89582. $menuButton.hide();
  89583. luckysheetContainerFocus();
  89584. let $t = $(this), itemvalue2 = $t.attr("itemvalue");
  89585. _this.focus($menuButton, itemvalue2);
  89586. let $icon = $("#luckysheet-icon-textwrap").attr("type", itemvalue2).find(".luckysheet-icon-img-container");
  89587. $icon.removeAttr("class").addClass("luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-textwrap-" + itemvalue2 + iconfontObject[itemvalue2]);
  89588. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  89589. _this.updateFormat(d, "tb", itemvalue2);
  89590. });
  89591. }
  89592. let userlen = $(this).outerWidth();
  89593. let tlen = $menuButton.outerWidth();
  89594. let menuleft = $(this).offset().left;
  89595. if (tlen > userlen && tlen + menuleft > $("#" + store_default.container).width()) {
  89596. menuleft = menuleft - tlen + userlen;
  89597. }
  89598. mouseclickposition($menuButton, menuleft - 28, $(this).offset().top + 25, "lefttop");
  89599. });
  89600. $("#luckysheet-icon-rotation-menu").click(function() {
  89601. let menuButtonId = $(this).attr("id") + "-menuButton";
  89602. let $menuButton = $("#" + menuButtonId);
  89603. if ($menuButton.length == 0) {
  89604. const _locale = locale_default();
  89605. const locale_rotation = _locale.rotation;
  89606. let itemdata = [
  89607. {"text": locale_rotation.none, "value": "none", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-none iconfont luckysheet-iconfont-wuxuanzhuang" style="user-select: none;"> </div> </div>'},
  89608. {"text": locale_rotation.angleup, "value": "angleup", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-angleup iconfont luckysheet-iconfont-xiangshangqingxie" style="user-select: none;"> </div> </div>'},
  89609. {"text": locale_rotation.angledown, "value": "angledown", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-angledown iconfont luckysheet-iconfont-xiangxiaqingxie" style="user-select: none;"> </div> </div>'},
  89610. {"text": locale_rotation.vertical, "value": "vertical", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-vertical iconfont luckysheet-iconfont-shupaiwenzi" style="user-select: none;"> </div> </div>'},
  89611. {"text": locale_rotation.rotationUp, "value": "rotation-up", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-rotation-up iconfont luckysheet-iconfont-wenbenxiangshang" style="user-select: none;"> </div> </div>'},
  89612. {"text": locale_rotation.rotationDown, "value": "rotation-down", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-rotation-down iconfont luckysheet-iconfont-xiangxia90" style="user-select: none;"> </div> </div>'}
  89613. ];
  89614. const iconfontObject = iconfontObjects.rotation;
  89615. let itemset = _this.createButtonMenu(itemdata);
  89616. let menu = replaceHtml(_this.menu, {"id": "rotation-menu", "item": itemset, "subclass": "", "sub": ""});
  89617. $("body").append(menu);
  89618. $menuButton = $("#" + menuButtonId).width(160);
  89619. _this.focus($menuButton);
  89620. $menuButton.find(".luckysheet-cols-menuitem").click(function() {
  89621. $menuButton.hide();
  89622. luckysheetContainerFocus();
  89623. let $t = $(this), itemvalue2 = $t.attr("itemvalue");
  89624. _this.focus($menuButton, itemvalue2);
  89625. let $icon = $("#luckysheet-icon-rotation").attr("type", itemvalue2).find(".luckysheet-icon-img-container");
  89626. $icon.removeAttr("class").addClass("luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-" + itemvalue2 + iconfontObject[itemvalue2]);
  89627. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  89628. _this.updateFormat(d, "tr", itemvalue2);
  89629. });
  89630. }
  89631. let userlen = $(this).outerWidth();
  89632. let tlen = $menuButton.outerWidth();
  89633. let menuleft = $(this).offset().left;
  89634. if (tlen > userlen && tlen + menuleft > $("#" + store_default.container).width()) {
  89635. menuleft = menuleft - tlen + userlen;
  89636. }
  89637. mouseclickposition($menuButton, menuleft - 28, $(this).offset().top + 25, "lefttop");
  89638. });
  89639. $("#luckysheet-icon-freezen-menu").click(function() {
  89640. let menuButtonId = $(this).attr("id") + "-menuButton";
  89641. let $menuButton = $("#" + menuButtonId);
  89642. if ($menuButton.length == 0) {
  89643. const _locale = locale_default();
  89644. const locale_freezen = _locale.freezen;
  89645. let itemdata = [
  89646. {"text": locale_freezen.freezenRow, "value": "freezenRow", "example": ""},
  89647. {"text": locale_freezen.freezenColumn, "value": "freezenColumn", "example": ""},
  89648. {"text": locale_freezen.freezenRC, "value": "freezenRC", "example": ""},
  89649. {"text": "", "value": "split", "example": ""},
  89650. {"text": locale_freezen.freezenRowRange, "value": "freezenRowRange", "example": ""},
  89651. {"text": locale_freezen.freezenColumnRange, "value": "freezenColumnRange", "example": ""},
  89652. {"text": locale_freezen.freezenRCRange, "value": "freezenRCRange", "example": ""},
  89653. {"text": "", "value": "split", "example": ""},
  89654. {"text": locale_freezen.freezenCancel, "value": "freezenCancel", "example": ""}
  89655. ];
  89656. let itemset = _this.createButtonMenu(itemdata);
  89657. let menu = replaceHtml(_this.menu, {"id": "freezen-menu", "item": itemset, "subclass": "", "sub": ""});
  89658. $("body").append(menu);
  89659. $menuButton = $("#" + menuButtonId).width(170);
  89660. $menuButton.find(".luckysheet-cols-menuitem").click(function() {
  89661. $menuButton.hide();
  89662. luckysheetContainerFocus();
  89663. let $t = $(this), itemvalue2 = $t.attr("itemvalue");
  89664. _this.focus($menuButton, itemvalue2);
  89665. if (itemvalue2 === "freezenCancel") {
  89666. $menuButton.find(".fa.fa-check").remove();
  89667. }
  89668. freezen_default.saveFrozen(itemvalue2);
  89669. if (itemvalue2 == "freezenRow") {
  89670. frozenFirstRow();
  89671. } else if (itemvalue2 == "freezenColumn") {
  89672. frozenFirstColumn();
  89673. } else if (itemvalue2 == "freezenRC") {
  89674. if (freezen_default.freezenRealFirstRowColumn) {
  89675. let row_st = 0;
  89676. let top = store_default.visibledatarow[row_st] - 2 + store_default.columnHeaderHeight;
  89677. let freezenhorizontaldata = [store_default.visibledatarow[row_st], row_st + 1, 0, freezen_default.cutVolumn(store_default.visibledatarow, row_st + 1), top];
  89678. freezen_default.saveFreezen(freezenhorizontaldata, top, null, null);
  89679. freezen_default.createFreezenHorizontal(freezenhorizontaldata, top);
  89680. let col_st = 0;
  89681. let left = store_default.visibledatacolumn[col_st] - 2 + store_default.rowHeaderWidth;
  89682. let freezenverticaldata = [store_default.visibledatacolumn[col_st], col_st + 1, 0, freezen_default.cutVolumn(store_default.visibledatacolumn, col_st + 1), left];
  89683. freezen_default.saveFreezen(null, null, freezenverticaldata, left);
  89684. freezen_default.createFreezenVertical(freezenverticaldata, left);
  89685. } else {
  89686. let scrollTop = $("#luckysheet-cell-main").scrollTop();
  89687. let row_st = luckysheet_searcharray(store_default.visibledatarow, scrollTop);
  89688. if (row_st == -1) {
  89689. row_st = 0;
  89690. }
  89691. let top = store_default.visibledatarow[row_st] - 2 - scrollTop + store_default.columnHeaderHeight;
  89692. let freezenhorizontaldata = [store_default.visibledatarow[row_st], row_st + 1, scrollTop, freezen_default.cutVolumn(store_default.visibledatarow, row_st + 1), top];
  89693. freezen_default.saveFreezen(freezenhorizontaldata, top, null, null);
  89694. freezen_default.createFreezenHorizontal(freezenhorizontaldata, top);
  89695. let scrollLeft = $("#luckysheet-cell-main").scrollLeft();
  89696. let col_st = luckysheet_searcharray(store_default.visibledatacolumn, scrollLeft);
  89697. if (col_st == -1) {
  89698. col_st = 0;
  89699. }
  89700. let left = store_default.visibledatacolumn[col_st] - 2 - scrollLeft + store_default.rowHeaderWidth;
  89701. let freezenverticaldata = [store_default.visibledatacolumn[col_st], col_st + 1, scrollLeft, freezen_default.cutVolumn(store_default.visibledatacolumn, col_st + 1), left];
  89702. freezen_default.saveFreezen(null, null, freezenverticaldata, left);
  89703. freezen_default.createFreezenVertical(freezenverticaldata, left);
  89704. }
  89705. freezen_default.createAssistCanvas();
  89706. luckysheetrefreshgrid();
  89707. } else if (itemvalue2 == "freezenRowRange") {
  89708. if (store_default.luckysheet_select_save == null || store_default.luckysheet_select_save.length == 0) {
  89709. if (isEditMode()) {
  89710. alert(locale_freezen.noSeletionError);
  89711. } else {
  89712. tooltip_default.info(locale_freezen.noSeletionError, "");
  89713. }
  89714. return;
  89715. }
  89716. let rangeTop = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1].top;
  89717. if (freezen_default.freezenRealFirstRowColumn && rangeTop > $("#luckysheet-cell-main").height()) {
  89718. return tooltip_default.info(locale_freezen.rangeRCOverErrorTitle, locale_freezen.rangeRCOverError);
  89719. }
  89720. let scrollTop = $("#luckysheet-cell-main").scrollTop();
  89721. let row_st = luckysheet_searcharray(store_default.visibledatarow, scrollTop);
  89722. let last = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1];
  89723. let row_focus = last["row_focus"] == null ? last["row"][0] : last["row_focus"];
  89724. row_st = Math.max(row_st - 1, row_focus - 1, 0);
  89725. let top, freezenhorizontaldata;
  89726. if (freezen_default.freezenRealFirstRowColumn) {
  89727. top = store_default.visibledatarow[row_st] - 2 + store_default.columnHeaderHeight;
  89728. freezenhorizontaldata = [store_default.visibledatarow[row_st], row_st + 1, 0, freezen_default.cutVolumn(store_default.visibledatarow, row_st + 1), top];
  89729. } else {
  89730. top = store_default.visibledatarow[row_st] - 2 - scrollTop + store_default.columnHeaderHeight;
  89731. freezenhorizontaldata = [store_default.visibledatarow[row_st], row_st + 1, scrollTop, freezen_default.cutVolumn(store_default.visibledatarow, row_st + 1), top];
  89732. }
  89733. freezen_default.saveFreezen(freezenhorizontaldata, top, null, null);
  89734. if (freezen_default.freezenverticaldata != null) {
  89735. freezen_default.cancelFreezenVertical();
  89736. freezen_default.createAssistCanvas();
  89737. luckysheetrefreshgrid();
  89738. }
  89739. freezen_default.createFreezenHorizontal(freezenhorizontaldata, top);
  89740. freezen_default.createAssistCanvas();
  89741. luckysheetrefreshgrid();
  89742. } else if (itemvalue2 == "freezenColumnRange") {
  89743. if (store_default.luckysheet_select_save == null || store_default.luckysheet_select_save.length == 0) {
  89744. if (isEditMode()) {
  89745. alert(locale_freezen.noSeletionError);
  89746. } else {
  89747. tooltip_default.info(locale_freezen.noSeletionError, "");
  89748. }
  89749. return;
  89750. }
  89751. let rangeLeft = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1].left;
  89752. if (freezen_default.freezenRealFirstRowColumn && rangeLeft > $("#luckysheet-cell-main").width()) {
  89753. return tooltip_default.info(locale_freezen.rangeRCOverErrorTitle, locale_freezen.rangeRCOverError);
  89754. }
  89755. let scrollLeft = $("#luckysheet-cell-main").scrollLeft();
  89756. let col_st = luckysheet_searcharray(store_default.visibledatacolumn, scrollLeft);
  89757. let last = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1];
  89758. let column_focus = last["column_focus"] == null ? last["column"][0] : last["column_focus"];
  89759. col_st = Math.max(col_st - 1, column_focus - 1, 0);
  89760. let left, freezenverticaldata;
  89761. if (freezen_default.freezenRealFirstRowColumn) {
  89762. left = store_default.visibledatacolumn[col_st] - 2 + store_default.rowHeaderWidth;
  89763. freezenverticaldata = [store_default.visibledatacolumn[col_st], col_st + 1, 0, freezen_default.cutVolumn(store_default.visibledatacolumn, col_st + 1), left];
  89764. } else {
  89765. left = store_default.visibledatacolumn[col_st] - 2 - scrollLeft + store_default.rowHeaderWidth;
  89766. freezenverticaldata = [store_default.visibledatacolumn[col_st], col_st + 1, scrollLeft, freezen_default.cutVolumn(store_default.visibledatacolumn, col_st + 1), left];
  89767. }
  89768. freezen_default.saveFreezen(null, null, freezenverticaldata, left);
  89769. if (freezen_default.freezenhorizontaldata != null) {
  89770. freezen_default.cancelFreezenHorizontal();
  89771. freezen_default.createAssistCanvas();
  89772. luckysheetrefreshgrid();
  89773. }
  89774. freezen_default.createFreezenVertical(freezenverticaldata, left);
  89775. freezen_default.createAssistCanvas();
  89776. luckysheetrefreshgrid();
  89777. } else if (itemvalue2 == "freezenRCRange") {
  89778. if (store_default.luckysheet_select_save == null || store_default.luckysheet_select_save.length == 0) {
  89779. if (isEditMode()) {
  89780. alert(locale_freezen.noSeletionError);
  89781. } else {
  89782. tooltip_default.info(locale_freezen.noSeletionError, "");
  89783. }
  89784. return;
  89785. }
  89786. let rangeTop = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1].top;
  89787. let rangeLeft = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1].left;
  89788. if (freezen_default.freezenRealFirstRowColumn && (rangeTop > $("#luckysheet-cell-main").height() || rangeLeft > $("#luckysheet-cell-main").width())) {
  89789. return tooltip_default.info(locale_freezen.rangeRCOverErrorTitle, locale_freezen.rangeRCOverError);
  89790. }
  89791. let scrollTop = $("#luckysheet-cell-main").scrollTop();
  89792. let row_st = luckysheet_searcharray(store_default.visibledatarow, scrollTop);
  89793. let last = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1];
  89794. let row_focus = last["row_focus"] == null ? last["row"][0] : last["row_focus"];
  89795. row_st = Math.max(row_st - 1, row_focus - 1, 0);
  89796. let top, freezenhorizontaldata;
  89797. if (freezen_default.freezenRealFirstRowColumn) {
  89798. top = store_default.visibledatarow[row_st] - 2 + store_default.columnHeaderHeight;
  89799. freezenhorizontaldata = [store_default.visibledatarow[row_st], row_st + 1, 0, freezen_default.cutVolumn(store_default.visibledatarow, row_st + 1), top];
  89800. freezen_default.saveFreezen(freezenhorizontaldata, top, null, null);
  89801. } else {
  89802. top = store_default.visibledatarow[row_st] - 2 - scrollTop + store_default.columnHeaderHeight;
  89803. freezenhorizontaldata = [store_default.visibledatarow[row_st], row_st + 1, scrollTop, freezen_default.cutVolumn(store_default.visibledatarow, row_st + 1), top];
  89804. freezen_default.saveFreezen(freezenhorizontaldata, top, null, null);
  89805. }
  89806. freezen_default.createFreezenHorizontal(freezenhorizontaldata, top);
  89807. let scrollLeft = $("#luckysheet-cell-main").scrollLeft();
  89808. let col_st = luckysheet_searcharray(store_default.visibledatacolumn, scrollLeft);
  89809. let column_focus = last["column_focus"] == null ? last["column"][0] : last["column_focus"];
  89810. col_st = Math.max(col_st - 1, column_focus - 1, 0);
  89811. let left, freezenverticaldata;
  89812. if (freezen_default.freezenRealFirstRowColumn) {
  89813. left = store_default.visibledatacolumn[col_st] - 2 + store_default.rowHeaderWidth;
  89814. freezenverticaldata = [store_default.visibledatacolumn[col_st], col_st + 1, 0, freezen_default.cutVolumn(store_default.visibledatacolumn, col_st + 1), left];
  89815. } else {
  89816. left = store_default.visibledatacolumn[col_st] - 2 - scrollLeft + store_default.rowHeaderWidth;
  89817. freezenverticaldata = [store_default.visibledatacolumn[col_st], col_st + 1, scrollLeft, freezen_default.cutVolumn(store_default.visibledatacolumn, col_st + 1), left];
  89818. }
  89819. freezen_default.saveFreezen(null, null, freezenverticaldata, left);
  89820. freezen_default.createFreezenVertical(freezenverticaldata, left);
  89821. freezen_default.createAssistCanvas();
  89822. luckysheetrefreshgrid();
  89823. } else if (itemvalue2 == "freezenCancel") {
  89824. if (freezen_default.freezenverticaldata != null) {
  89825. freezen_default.cancelFreezenVertical();
  89826. freezen_default.createAssistCanvas();
  89827. luckysheetrefreshgrid();
  89828. }
  89829. if (freezen_default.freezenhorizontaldata != null) {
  89830. freezen_default.cancelFreezenHorizontal();
  89831. freezen_default.createAssistCanvas();
  89832. luckysheetrefreshgrid();
  89833. }
  89834. freezen_default.scrollAdapt();
  89835. }
  89836. setTimeout(function() {
  89837. luckysheetsizeauto();
  89838. }, 0);
  89839. });
  89840. }
  89841. let userlen = $(this).outerWidth();
  89842. let tlen = $menuButton.outerWidth();
  89843. let menuleft = $(this).offset().left;
  89844. if (tlen > userlen && tlen + menuleft > $("#" + store_default.container).width()) {
  89845. menuleft = menuleft - tlen + userlen;
  89846. }
  89847. mouseclickposition($menuButton, menuleft - 68, $(this).offset().top + 25, "lefttop");
  89848. });
  89849. $("#luckysheet-icon-autofilter").click(function() {
  89850. let menuButtonId = $(this).attr("id") + "-menuButton";
  89851. let $menuButton = $("#" + menuButtonId);
  89852. if ($menuButton.length == 0) {
  89853. const _locale = locale_default();
  89854. const locale_sort = _locale.sort;
  89855. const locale_filter = _locale.filter;
  89856. let itemdata = [
  89857. {"text": locale_sort.asc, "value": "asc", "example": '<i class="iconfont luckysheet-iconfont-shengxu" aria-hidden="true"></i>'},
  89858. {"text": locale_sort.desc, "value": "desc", "example": '<i class="iconfont luckysheet-iconfont-jiangxu" aria-hidden="true"></i>'},
  89859. {"text": locale_sort.custom + "...", "value": "diysort", "example": '<i class="iconfont luckysheet-iconfont-zidingyipaixu" aria-hidden="true"></i>'},
  89860. {"text": "", "value": "split", "example": ""},
  89861. {"text": locale_filter.filter, "value": "filter", "example": '<i class="iconfont luckysheet-iconfont-shaixuan2" aria-hidden="true"></i>'},
  89862. {"text": locale_filter.clearFilter, "value": "clearfilter", "example": '<i class="iconfont luckysheet-iconfont-qingchushaixuan" aria-hidden="true"></i>'}
  89863. ];
  89864. let itemset = _this.createButtonMenu(itemdata);
  89865. let menu = replaceHtml(_this.menu, {"id": "autofilter", "item": itemset, "subclass": "", "sub": ""});
  89866. $("body").append(menu);
  89867. $menuButton = $("#" + menuButtonId).width(150);
  89868. $menuButton.find(".luckysheet-cols-menuitem").click(function() {
  89869. $menuButton.hide();
  89870. luckysheetContainerFocus();
  89871. let $t = $(this), itemvalue2 = $t.attr("itemvalue");
  89872. if (itemvalue2 == "diysort") {
  89873. $("#luckysheetorderby").click();
  89874. } else if (itemvalue2 == "asc") {
  89875. sortSelection(true);
  89876. } else if (itemvalue2 == "desc") {
  89877. sortSelection(false);
  89878. } else if (itemvalue2 == "filter") {
  89879. if ($("#luckysheet-filter-options-sheet" + store_default.currentSheetIndex).length > 0) {
  89880. $("#luckysheet-filter-initial").click();
  89881. } else {
  89882. createFilter();
  89883. }
  89884. } else if (itemvalue2 == "clearfilter") {
  89885. $("#luckysheet-filter-initial").click();
  89886. }
  89887. });
  89888. }
  89889. let userlen = $(this).outerWidth();
  89890. let tlen = $menuButton.outerWidth();
  89891. let menuleft = $(this).offset().left;
  89892. if (tlen > userlen && tlen + menuleft > $("#" + store_default.container).width()) {
  89893. menuleft = menuleft - tlen + userlen;
  89894. }
  89895. mouseclickposition($menuButton, menuleft, $(this).offset().top + 25, "lefttop");
  89896. });
  89897. $("#luckysheet-icon-seachmore").click(function() {
  89898. let menuButtonId = $(this).attr("id") + "-menuButton";
  89899. let $menuButton = $("#" + menuButtonId);
  89900. const _locale = locale_default();
  89901. const locale_findAndReplace = _locale.findAndReplace;
  89902. if ($menuButton.length == 0) {
  89903. let itemdata = [
  89904. {"text": locale_findAndReplace.find + " ...", "value": "search", "example": '<i class="iconfont luckysheet-iconfont-sousuo" aria-hidden="true"></i>'},
  89905. {"text": locale_findAndReplace.replace + " ...", "value": "replace", "example": '<i class="iconfont luckysheet-iconfont-tihuan" aria-hidden="true"></i>'},
  89906. {"text": "", "value": "split", "example": ""},
  89907. {"text": locale_findAndReplace.location + " ...", "value": "location", "example": '<i class="iconfont luckysheet-iconfont-dingwei" aria-hidden="true"></i>'},
  89908. {"text": locale_findAndReplace.formula, "value": "locationFormula", "example": locale_findAndReplace.locationExample},
  89909. {"text": locale_findAndReplace.date, "value": "locationConstantDate", "example": locale_findAndReplace.locationExample},
  89910. {"text": locale_findAndReplace.number, "value": "locationConstantNumber", "example": locale_findAndReplace.locationExample},
  89911. {"text": locale_findAndReplace.string, "value": "locationConstantString", "example": locale_findAndReplace.locationExample},
  89912. {"text": locale_findAndReplace.error, "value": "locationConstantError", "example": locale_findAndReplace.locationExample},
  89913. {"text": locale_findAndReplace.condition, "value": "locationCF", "example": locale_findAndReplace.locationExample},
  89914. {"text": locale_findAndReplace.rowSpan, "value": "locationStepRow", "example": locale_findAndReplace.locationExample},
  89915. {"text": locale_findAndReplace.columnSpan, "value": "locationStepColumn", "example": locale_findAndReplace.locationExample}
  89916. ];
  89917. let itemset = _this.createButtonMenu(itemdata);
  89918. let menu = replaceHtml(_this.menu, {"id": "seachmore", "item": itemset, "subclass": "", "sub": ""});
  89919. $("body").append(menu);
  89920. $menuButton = $("#" + menuButtonId).width(180);
  89921. $menuButton.find(".luckysheet-cols-menuitem").click(function() {
  89922. $menuButton.hide();
  89923. luckysheetContainerFocus();
  89924. let $t = $(this), itemvalue2 = $t.attr("itemvalue");
  89925. if (itemvalue2 == "search" || itemvalue2 == "replace") {
  89926. if (itemvalue2 == "search") {
  89927. searchReplace_default.createDialog(0);
  89928. } else if (itemvalue2 == "replace") {
  89929. searchReplace_default.createDialog(1);
  89930. }
  89931. searchReplace_default.init();
  89932. $("#luckysheet-search-replace #searchInput input").focus();
  89933. } else if (itemvalue2 == "location") {
  89934. locationCell_default.createDialog();
  89935. locationCell_default.init();
  89936. } else if (itemvalue2 == "locationFormula" || itemvalue2 == "locationConstantDate" || itemvalue2 == "locationConstantNumber" || itemvalue2 == "locationConstantString" || itemvalue2 == "locationConstantError" || itemvalue2 == "locationCF") {
  89937. let last = store_default.luckysheet_select_save[0];
  89938. let range2;
  89939. if (store_default.luckysheet_select_save.length == 0 || store_default.luckysheet_select_save.length == 1 && last.row[0] == last.row[1] && last.column[0] == last.column[1]) {
  89940. range2 = [{"row": [0, store_default.flowdata.length - 1], "column": [0, store_default.flowdata[0].length - 1]}];
  89941. } else {
  89942. range2 = $.extend(true, [], store_default.luckysheet_select_save);
  89943. }
  89944. if (itemvalue2 == "locationFormula") {
  89945. locationCell_default.apply(range2, "locationFormula", "all");
  89946. } else if (itemvalue2 == "locationConstantDate") {
  89947. locationCell_default.apply(range2, "locationConstant", "d");
  89948. } else if (itemvalue2 == "locationConstantNumber") {
  89949. locationCell_default.apply(range2, "locationConstant", "n");
  89950. } else if (itemvalue2 == "locationConstantString") {
  89951. locationCell_default.apply(range2, "locationConstant", "s,g");
  89952. } else if (itemvalue2 == "locationConstantError") {
  89953. locationCell_default.apply(range2, "locationConstant", "e");
  89954. } else if (itemvalue2 == "locationCF") {
  89955. locationCell_default.apply(range2, "locationCF");
  89956. }
  89957. } else if (itemvalue2 == "locationStepRow") {
  89958. if (store_default.luckysheet_select_save.length == 0 || store_default.luckysheet_select_save.length == 1 && store_default.luckysheet_select_save[0].row[0] == store_default.luckysheet_select_save[0].row[1]) {
  89959. if (isEditMode()) {
  89960. alert(locale_findAndReplace.lessTwoRowTip);
  89961. } else {
  89962. tooltip_default.info("", locale_findAndReplace.lessTwoRowTip);
  89963. }
  89964. return;
  89965. }
  89966. let range2 = $.extend(true, [], store_default.luckysheet_select_save);
  89967. locationCell_default.apply(range2, "locationStepRow");
  89968. } else if (itemvalue2 == "locationStepColumn") {
  89969. if (store_default.luckysheet_select_save.length == 0 || store_default.luckysheet_select_save.length == 1 && store_default.luckysheet_select_save[0].column[0] == store_default.luckysheet_select_save[0].column[1]) {
  89970. if (isEditMode()) {
  89971. alert(locale_findAndReplace.lessTwoColumnTip);
  89972. } else {
  89973. tooltip_default.info("", locale_findAndReplace.lessTwoColumnTip);
  89974. }
  89975. return;
  89976. }
  89977. let range2 = $.extend(true, [], store_default.luckysheet_select_save);
  89978. locationCell_default.apply(range2, "locationStepColumn");
  89979. }
  89980. });
  89981. }
  89982. let userlen = $(this).outerWidth();
  89983. let tlen = $menuButton.outerWidth();
  89984. let menuleft = $(this).offset().left;
  89985. if (tlen > userlen && tlen + menuleft > $("#" + store_default.container).width()) {
  89986. menuleft = menuleft - tlen + userlen;
  89987. }
  89988. mouseclickposition($menuButton, menuleft, $(this).offset().top + 25, "lefttop");
  89989. });
  89990. $("#luckysheet-icon-function").click(function() {
  89991. _this.autoSelectionFormula("SUM");
  89992. });
  89993. $("#luckysheet-icon-function-menu").click(function() {
  89994. let menuButtonId = $(this).attr("id") + "-menuButton";
  89995. let $menuButton = $("#" + menuButtonId);
  89996. const _locale = locale_default();
  89997. const locale_formula = _locale.formula;
  89998. if ($menuButton.length == 0) {
  89999. let itemdata = [
  90000. {"text": locale_formula.sum, "value": "SUM", "example": "SUM"},
  90001. {"text": locale_formula.average, "value": "AVERAGE", "example": "AVERAGE"},
  90002. {"text": locale_formula.count, "value": "COUNT", "example": "COUNT"},
  90003. {"text": locale_formula.max, "value": "MAX", "example": "MAX"},
  90004. {"text": locale_formula.min, "value": "MIN", "example": "MIN"},
  90005. {"text": "", "value": "split", "example": ""},
  90006. {"text": locale_formula.ifGenerate, "value": "if", "example": "IF"},
  90007. {"text": locale_formula.find + " ...", "value": "formula", "example": ""}
  90008. ];
  90009. let itemset = _this.createButtonMenu(itemdata);
  90010. let menu = replaceHtml(_this.menu, {"id": "function-menu", "item": itemset, "subclass": "", "sub": ""});
  90011. $("body").append(menu);
  90012. $menuButton = $("#" + menuButtonId).width(180);
  90013. $menuButton.find(".luckysheet-cols-menuitem").click(function() {
  90014. $menuButton.hide();
  90015. luckysheetContainerFocus();
  90016. let $t = $(this), itemvalue2 = $t.attr("itemvalue");
  90017. if (itemvalue2 == "if") {
  90018. let last = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1];
  90019. let r2 = last["row_focus"] == null ? last["row"][0] : last["row_focus"];
  90020. let c2 = last["column_focus"] == null ? last["column"][0] : last["column_focus"];
  90021. if (!!store_default.flowdata[r2] && !!store_default.flowdata[r2][c2] && !!store_default.flowdata[r2][c2]["f"]) {
  90022. let fp = store_default.flowdata[r2][c2]["f"].toString();
  90023. if (fp.indexOf("=if(") != -1) {
  90024. ifFormulaGenerator_default.ifFormulaDialog(fp);
  90025. } else {
  90026. if (isEditMode()) {
  90027. alert(locale_formula.tipNotBelongToIf);
  90028. } else {
  90029. tooltip_default.info(locale_formula.tipNotBelongToIf, "");
  90030. }
  90031. return;
  90032. }
  90033. } else {
  90034. ifFormulaGenerator_default.ifFormulaDialog();
  90035. }
  90036. ifFormulaGenerator_default.init();
  90037. } else if (itemvalue2 == "formula") {
  90038. if (store_default.luckysheet_select_save.length == 0) {
  90039. if (isEditMode()) {
  90040. alert(locale_formula.tipSelectCell);
  90041. } else {
  90042. tooltip_default.info(locale_formula.tipSelectCell, "");
  90043. }
  90044. return;
  90045. }
  90046. let last = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1];
  90047. let row_index = last["row_focus"], col_index = last["column_focus"];
  90048. luckysheetupdateCell(row_index, col_index, store_default.flowdata);
  90049. let cell = store_default.flowdata[row_index][col_index];
  90050. if (cell != null && cell.f != null) {
  90051. let functionStr = formula_default.getfunctionParam(cell.f);
  90052. if (functionStr.fn != null) {
  90053. insertFormula_default.formulaParmDialog(functionStr.fn, functionStr.param);
  90054. } else {
  90055. insertFormula_default.formulaListDialog();
  90056. }
  90057. } else {
  90058. $("#luckysheet-rich-text-editor").html('<span dir="auto" class="luckysheet-formula-text-color">=</span>');
  90059. $("#luckysheet-functionbox-cell").html($("#luckysheet-rich-text-editor").html());
  90060. insertFormula_default.formulaListDialog();
  90061. }
  90062. insertFormula_default.init();
  90063. } else {
  90064. _this.autoSelectionFormula(itemvalue2);
  90065. }
  90066. });
  90067. }
  90068. let userlen = $(this).outerWidth();
  90069. let tlen = $menuButton.outerWidth();
  90070. let menuleft = $(this).offset().left;
  90071. if (tlen > userlen && tlen + menuleft > $("#" + store_default.container).width()) {
  90072. menuleft = menuleft - tlen + userlen;
  90073. }
  90074. mouseclickposition($menuButton, menuleft - 48, $(this).offset().top + 25, "lefttop");
  90075. });
  90076. $("#luckysheet-icon-bold").mousedown(function(e) {
  90077. hideMenuByCancel(e);
  90078. e.stopPropagation();
  90079. }).click(function(e) {
  90080. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  90081. let flag = checkTheStatusOfTheSelectedCells("bl", 1);
  90082. let foucsStatus = flag ? 0 : 1;
  90083. _this.updateFormat(d, "bl", foucsStatus);
  90084. });
  90085. $("#luckysheet-icon-italic").mousedown(function(e) {
  90086. hideMenuByCancel(e);
  90087. e.stopPropagation();
  90088. }).click(function() {
  90089. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  90090. let flag = checkTheStatusOfTheSelectedCells("it", 1);
  90091. let foucsStatus = flag ? 0 : 1;
  90092. _this.updateFormat(d, "it", foucsStatus);
  90093. });
  90094. $("#luckysheet-icon-strikethrough").mousedown(function(e) {
  90095. hideMenuByCancel(e);
  90096. e.stopPropagation();
  90097. }).click(function() {
  90098. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  90099. let flag = checkTheStatusOfTheSelectedCells("cl", 1);
  90100. let foucsStatus = flag ? 0 : 1;
  90101. _this.updateFormat(d, "cl", foucsStatus);
  90102. });
  90103. $("#luckysheet-icon-underline").mousedown(function(e) {
  90104. hideMenuByCancel(e);
  90105. e.stopPropagation();
  90106. }).click(function() {
  90107. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  90108. let flag = checkTheStatusOfTheSelectedCells("un", 1);
  90109. let foucsStatus = flag ? 0 : 1;
  90110. _this.updateFormat(d, "un", foucsStatus);
  90111. });
  90112. $("#luckysheet-icon-conditionformat").click(function() {
  90113. let menuButtonId = $(this).attr("id") + "-menuButton";
  90114. let $menuButton = $("#" + menuButtonId);
  90115. const conditionformat_text = locale_default().conditionformat;
  90116. if ($menuButton.length == 0) {
  90117. let itemdata = [
  90118. {"text": conditionformat_text.highlightCellRules, "value": "highlightCellRule", "example": "more"},
  90119. {"text": conditionformat_text.itemSelectionRules, "value": "projectSelectRule", "example": "more"},
  90120. {"text": conditionformat_text.dataBar, "value": "dataBar", "example": "more"},
  90121. {"text": conditionformat_text.colorGradation, "value": "colorGradation", "example": "more"},
  90122. {"text": conditionformat_text.icons, "value": "icons", "example": ""},
  90123. {"text": "", "value": "split", "example": ""},
  90124. {"text": conditionformat_text.newRule, "value": "newRule", "example": ""},
  90125. {"text": conditionformat_text.deleteRule, "value": "deleteRule", "example": "more"},
  90126. {"text": conditionformat_text.manageRules, "value": "administerRule", "example": ""}
  90127. ];
  90128. let itemset = _this.createButtonMenu(itemdata);
  90129. let menu = replaceHtml(_this.menu, {"id": "conditionformat", "item": itemset, "subclass": "", "sub": ""});
  90130. let subitemdata = [
  90131. {"text": conditionformat_text.greaterThan, "value": "greaterThan", "example": ">"},
  90132. {"text": conditionformat_text.lessThan, "value": "lessThan", "example": "<"},
  90133. {"text": conditionformat_text.between, "value": "betweenness", "example": "[]"},
  90134. {"text": conditionformat_text.equal, "value": "equal", "example": "="},
  90135. {"text": conditionformat_text.textContains, "value": "textContains", "example": "()"},
  90136. {"text": conditionformat_text.occurrence, "value": "occurrenceDate", "example": conditionformat_text.yesterday},
  90137. {"text": conditionformat_text.duplicateValue, "value": "duplicateValue", "example": "##"}
  90138. ];
  90139. let subitemset = _this.createButtonMenu(subitemdata);
  90140. let submenu = replaceHtml(_this.menu, {"id": "highlightCellRule", "item": subitemset, "subclass": "luckysheet-menuButton-sub"});
  90141. let subitemdata2 = [
  90142. {"text": conditionformat_text.top10, "value": "top10", "example": conditionformat_text.top10},
  90143. {"text": conditionformat_text.top10_percent, "value": "top10%", "example": conditionformat_text.top10_percent},
  90144. {"text": conditionformat_text.last10, "value": "last10", "example": conditionformat_text.last10},
  90145. {"text": conditionformat_text.last10_percent, "value": "last10%", "example": conditionformat_text.last10_percent},
  90146. {"text": conditionformat_text.aboveAverage, "value": "AboveAverage", "example": conditionformat_text.above},
  90147. {"text": conditionformat_text.belowAverage, "value": "SubAverage", "example": conditionformat_text.below}
  90148. ];
  90149. let subitemset2 = _this.createButtonMenu(subitemdata2);
  90150. let submenu2 = replaceHtml(_this.menu, {"id": "projectSelectRule", "item": subitemset2, "subclass": "luckysheet-menuButton-sub"});
  90151. let submenu3 = `<div id="luckysheet-icon-dataBar-menuButton" class="luckysheet-cols-menu luckysheet-rightgclick-menu luckysheet-menuButton luckysheet-menuButton-sub luckysheet-mousedown-cancel" style="width: 126px;padding: 5px;top: 118.5px;left: 1321.48px;display: none;">
  90152. <div itemvalue="0" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="width: 28px; height: 26px;padding: 5px;float: left;">
  90153. <div class="luckysheet-mousedown-cancel bgImgBox" style="background-position: 0 0;" title="${conditionformat_text.gradientDataBar_1}"></div>
  90154. </div>
  90155. <div itemvalue="1" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="width: 28px; height: 26px;padding: 5px;float: left;">
  90156. <div class="luckysheet-mousedown-cancel bgImgBox" style="background-position: -38px 0;" title="${conditionformat_text.gradientDataBar_2}"></div>
  90157. </div>
  90158. <div itemvalue="2" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="width: 28px; height: 26px;padding: 5px;float: left;">
  90159. <div class="luckysheet-mousedown-cancel bgImgBox" style="background-position: -76px 0;" title="${conditionformat_text.gradientDataBar_3}"></div>
  90160. </div>
  90161. <div itemvalue="3" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="width: 28px; height: 26px;padding: 5px;float: left;">
  90162. <div class="luckysheet-mousedown-cancel bgImgBox" style="background-position: 0 -36px;" title="${conditionformat_text.gradientDataBar_4}"></div>
  90163. </div>
  90164. <div itemvalue="4" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="width: 28px; height: 26px;padding: 5px;float: left;">
  90165. <div class="luckysheet-mousedown-cancel bgImgBox" style="background-position: -38px -36px;" title="${conditionformat_text.gradientDataBar_5}"></div>
  90166. </div>
  90167. <div itemvalue="5" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="width: 28px; height: 26px;padding: 5px;float: left;">
  90168. <div class="luckysheet-mousedown-cancel bgImgBox" style="background-position: -76px -36px;" title="${conditionformat_text.gradientDataBar_6}"></div>
  90169. </div>
  90170. <div itemvalue="6" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="width: 28px; height: 26px;padding: 5px;float: left;">
  90171. <div class="luckysheet-mousedown-cancel bgImgBox" style="background-position: 0 -72px;" title="${conditionformat_text.solidColorDataBar_1}"></div>
  90172. </div>
  90173. <div itemvalue="7" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="width: 28px; height: 26px;padding: 5px;float: left;">
  90174. <div class="luckysheet-mousedown-cancel bgImgBox" style="background-position: -38px -72px;" title="${conditionformat_text.solidColorDataBar_2}"></div>
  90175. </div>
  90176. <div itemvalue="8" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="width: 28px; height: 26px;padding: 5px;float: left;">
  90177. <div class="luckysheet-mousedown-cancel bgImgBox" style="background-position: -76px -72px;" title="${conditionformat_text.solidColorDataBar_3}"></div>
  90178. </div>
  90179. <div itemvalue="9" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="width: 28px; height: 26px;padding: 5px;float: left;">
  90180. <div class="luckysheet-mousedown-cancel bgImgBox" style="background-position: 0 -108px;" title="${conditionformat_text.solidColorDataBar_4}"></div>
  90181. </div>
  90182. <div itemvalue="10" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="width: 28px; height: 26px;padding: 5px;float: left;">
  90183. <div class="luckysheet-mousedown-cancel bgImgBox" style="background-position: -38px -108px;" title="${conditionformat_text.solidColorDataBar_5}"></div>
  90184. </div>
  90185. <div itemvalue="11" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="width: 28px; height: 26px;padding: 5px;float: left;">
  90186. <div class="luckysheet-mousedown-cancel bgImgBox" style="background-position: -76px -108px;" title="${conditionformat_text.solidColorDataBar_6}"></div>
  90187. </div>
  90188. </div>`;
  90189. let submenu4 = `<div id="luckysheet-icon-colorGradation-menuButton" class="luckysheet-cols-menu luckysheet-rightgclick-menu luckysheet-menuButton luckysheet-menuButton-sub luckysheet-mousedown-cancel" style="width: 126px;padding: 5px;top: 143.5px;left: 1321.48px;display: none;">
  90190. <div itemvalue="0" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="width: 28px; height: 26px;padding: 5px;float: left;">
  90191. <div class="luckysheet-mousedown-cancel bgImgBox" style="background-position: 0 0;" title="${conditionformat_text.colorGradation_1}"></div>
  90192. </div>
  90193. <div itemvalue="1" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="width: 28px; height: 26px;padding: 5px;float: left;">
  90194. <div class="luckysheet-mousedown-cancel bgImgBox" style="background-position: -38px 0;" title="${conditionformat_text.colorGradation_2}"></div>
  90195. </div>
  90196. <div itemvalue="2" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="width: 28px; height: 26px;padding: 5px;float: left;">
  90197. <div class="luckysheet-mousedown-cancel bgImgBox" style="background-position: -76px 0;" title="${conditionformat_text.colorGradation_3}"></div>
  90198. </div>
  90199. <div itemvalue="3" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="width: 28px; height: 26px;padding: 5px;float: left;">
  90200. <div class="luckysheet-mousedown-cancel bgImgBox" style="background-position: -114px 0;" title="${conditionformat_text.colorGradation_4}"></div>
  90201. </div>
  90202. <div itemvalue="4" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="width: 28px; height: 26px;padding: 5px;float: left;">
  90203. <div class="luckysheet-mousedown-cancel bgImgBox" style="background-position: 0 -36px;" title="${conditionformat_text.colorGradation_5}"></div>
  90204. </div>
  90205. <div itemvalue="5" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="width: 28px; height: 26px;padding: 5px;float: left;">
  90206. <div class="luckysheet-mousedown-cancel bgImgBox" style="background-position: -38px -36px;" title="${conditionformat_text.colorGradation_6}"></div>
  90207. </div>
  90208. <div itemvalue="6" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="width: 28px; height: 26px;padding: 5px;float: left;">
  90209. <div class="luckysheet-mousedown-cancel bgImgBox" style="background-position: -76px -36px;" title="${conditionformat_text.colorGradation_7}"></div>
  90210. </div>
  90211. <div itemvalue="7" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="width: 28px; height: 26px;padding: 5px;float: left;">
  90212. <div class="luckysheet-mousedown-cancel bgImgBox" style="background-position: -114px -36px;" title="${conditionformat_text.colorGradation_8}"></div>
  90213. </div>
  90214. <div itemvalue="8" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="width: 28px; height: 26px;padding: 5px;float: left;">
  90215. <div class="luckysheet-mousedown-cancel bgImgBox" style="background-position: 0 -72px;" title="${conditionformat_text.colorGradation_9}"></div>
  90216. </div>
  90217. <div itemvalue="9" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="width: 28px; height: 26px;padding: 5px;float: left;">
  90218. <div class="luckysheet-mousedown-cancel bgImgBox" style="background-position: -38px -72px;" title="${conditionformat_text.colorGradation_10}"></div>
  90219. </div>
  90220. <div itemvalue="10" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="width: 28px; height: 26px;padding: 5px;float: left;">
  90221. <div class="luckysheet-mousedown-cancel bgImgBox" style="background-position: -76px -72px;" title="${conditionformat_text.colorGradation_11}"></div>
  90222. </div>
  90223. <div itemvalue="11" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="width: 28px; height: 26px;padding: 5px;float: left;">
  90224. <div class="luckysheet-mousedown-cancel bgImgBox" style="background-position: -114px -72px;" title="${conditionformat_text.colorGradation_12}"></div>
  90225. </div>
  90226. </div>`;
  90227. let subitemdata6 = [
  90228. {"text": conditionformat_text.deleteSheetRule, "value": "delSheet", "example": ""}
  90229. ];
  90230. let subitemset6 = _this.createButtonMenu(subitemdata6);
  90231. let submenu6 = replaceHtml(_this.menu, {"id": "deleteRule", "item": subitemset6, "subclass": "luckysheet-menuButton-sub"});
  90232. $("body").append(menu + submenu + submenu2 + submenu3 + submenu4 + submenu6);
  90233. $menuButton = $("#" + menuButtonId).width(190);
  90234. $("#luckysheet-icon-highlightCellRule-menuButton").width(160);
  90235. $("#luckysheet-icon-projectSelectRule-menuButton").width(180);
  90236. $menuButton.find(".luckysheet-cols-menuitem").click(function() {
  90237. $menuButton.hide();
  90238. luckysheetContainerFocus();
  90239. let $t = $(this), itemvalue2 = $t.attr("itemvalue");
  90240. if (itemvalue2 == "icons") {
  90241. if (store_default.luckysheet_select_save.length == 0) {
  90242. if (isEditMode()) {
  90243. alert(conditionformat_text.pleaseSelectRange);
  90244. } else {
  90245. tooltip_default.info(conditionformat_text.pleaseSelectRange, "");
  90246. }
  90247. return;
  90248. }
  90249. conditionformat_default.CFiconsDialog();
  90250. conditionformat_default.init();
  90251. } else if (itemvalue2 == "newRule") {
  90252. if (store_default.luckysheet_select_save.length == 0) {
  90253. if (isEditMode()) {
  90254. alert(conditionformat_text.pleaseSelectRange);
  90255. } else {
  90256. tooltip_default.info(conditionformat_text.pleaseSelectRange, "");
  90257. }
  90258. return;
  90259. }
  90260. conditionformat_default.newConditionRuleDialog(0);
  90261. conditionformat_default.init();
  90262. } else if (itemvalue2 == "administerRule") {
  90263. let loadSheetUrl = server_default.loadSheetUrl;
  90264. let file = getluckysheetfile();
  90265. if (loadSheetUrl != "" && loadSheetUrl != null) {
  90266. let sheetindex = [];
  90267. for (let i2 = 0; i2 < file.length; i2++) {
  90268. sheetindex.push(file[i2].index);
  90269. }
  90270. $.post(loadSheetUrl, {"gridKey": server_default.gridKey, "index": sheetindex.join(",")}, function(d) {
  90271. let dataset = new Function("return " + d)();
  90272. setTimeout(function() {
  90273. store_default.loadingObj.close();
  90274. }, 500);
  90275. for (let item2 in dataset) {
  90276. if (item2 == store_default.currentSheetIndex) {
  90277. continue;
  90278. }
  90279. let otherfile = file[getSheetIndex(item2)];
  90280. otherfile.celldata = dataset[item2.toString()];
  90281. otherfile["data"] = sheetmanage_default.buildGridData(otherfile);
  90282. }
  90283. setluckysheetfile(file);
  90284. conditionformat_default.fileClone = $.extend(true, [], file);
  90285. conditionformat_default.administerRuleDialog();
  90286. conditionformat_default.init();
  90287. });
  90288. } else {
  90289. conditionformat_default.fileClone = $.extend(true, [], file);
  90290. conditionformat_default.administerRuleDialog();
  90291. conditionformat_default.init();
  90292. }
  90293. }
  90294. });
  90295. $(document).off("click.CFhighlightCellRule").on("click.CFhighlightCellRule", "#luckysheet-icon-highlightCellRule-menuButton .luckysheet-cols-menuitem", function() {
  90296. $menuButton.hide();
  90297. $("#luckysheet-icon-highlightCellRule-menuButton").hide();
  90298. luckysheetContainerFocus();
  90299. let $t = $(this), itemvalue2 = $t.attr("itemvalue");
  90300. if (store_default.luckysheet_select_save.length == 0) {
  90301. if (isEditMode()) {
  90302. alert(conditionformat_text.pleaseSelectRange);
  90303. } else {
  90304. tooltip_default.info(conditionformat_text.pleaseSelectRange, "");
  90305. }
  90306. return;
  90307. } else {
  90308. let textCellColorHtml = conditionformat_default.textCellColorHtml();
  90309. let title, content;
  90310. switch (itemvalue2) {
  90311. case "greaterThan":
  90312. title = conditionformat_text.conditionformat_greaterThan;
  90313. content = `<div class="box" data-itemvalue="greaterThan">
  90314. <div class="boxTitleOne">${conditionformat_text.conditionformat_greaterThan_title}\uFF1A</div>
  90315. <div class="inpbox range">
  90316. <input id="conditionVal" class="formulaInputFocus"/>
  90317. <i class="fa fa-table" aria-hidden="true" title="${conditionformat_text.selectCell}"></i>
  90318. </div>
  90319. <div style="margin: 5px 0;">${conditionformat_text.setAs}\uFF1A</div>
  90320. ${textCellColorHtml}
  90321. </div>`;
  90322. break;
  90323. case "lessThan":
  90324. title = conditionformat_text.conditionformat_lessThan;
  90325. content = `<div class="box" data-itemvalue="lessThan">
  90326. <div class="boxTitleOne">${conditionformat_text.conditionformat_lessThan_title}\uFF1A</div>
  90327. <div class="inpbox range">
  90328. <input id="conditionVal" class="formulaInputFocus"/>
  90329. <i class="fa fa-table" aria-hidden="true" title="${conditionformat_text.selectCell}"></i>
  90330. </div>
  90331. <div style="margin: 5px 0;">${conditionformat_text.setAs}\uFF1A</div>
  90332. ${textCellColorHtml}
  90333. </div>`;
  90334. break;
  90335. case "betweenness":
  90336. title = conditionformat_text.conditionformat_betweenness;
  90337. content = `<div class="box" data-itemvalue="betweenness">
  90338. <div class="boxTitleOne">${conditionformat_text.conditionformat_betweenness_title}\uFF1A</div>
  90339. <div style="height: 30px;line-height: 30px;">
  90340. <div class="inpbox2 range">
  90341. <input id="conditionVal" class="formulaInputFocus"/>
  90342. <i class="fa fa-table" aria-hidden="true" title="${conditionformat_text.selectCell}"></i>
  90343. </div>
  90344. <div style="float: left;height: 30px;line-height: 30px;margin: 0 5px;">${conditionformat_text.to}</div>
  90345. <div class="inpbox2 range">
  90346. <input id="conditionVal2" class="formulaInputFocus"/>
  90347. <i class="fa fa-table" aria-hidden="true" title="${conditionformat_text.selectCell}"></i>
  90348. </div>
  90349. </div>
  90350. <div style="margin: 5px 0;">${conditionformat_text.setAs}\uFF1A</div>
  90351. ${textCellColorHtml}
  90352. </div>`;
  90353. break;
  90354. case "equal":
  90355. title = conditionformat_text.conditionformat_equal;
  90356. content = `<div class="box" data-itemvalue="equal">
  90357. <div class="boxTitleOne">${conditionformat_text.conditionformat_equal_title}\uFF1A</div>
  90358. <div class="inpbox range">
  90359. <input id="conditionVal" class="formulaInputFocus"/>
  90360. <i class="fa fa-table" aria-hidden="true" title="${conditionformat_text.selectCell}"></i>
  90361. </div>
  90362. <div style="margin: 5px 0;">${conditionformat_text.setAs}\uFF1A</div>
  90363. ${textCellColorHtml}
  90364. </div>`;
  90365. break;
  90366. case "textContains":
  90367. title = conditionformat_text.conditionformat_textContains;
  90368. content = `<div class="box" data-itemvalue="textContains">
  90369. <div class="boxTitleOne">${conditionformat_text.conditionformat_textContains_title}\uFF1A</div>
  90370. <div class="inpbox range">
  90371. <input id="conditionVal" class="formulaInputFocus"/>
  90372. <i class="fa fa-table" aria-hidden="true" title="${conditionformat_text.selectCell}"></i>
  90373. </div>
  90374. <div style="margin: 5px 0;">${conditionformat_text.setAs}\uFF1A</div>
  90375. ${textCellColorHtml}
  90376. </div>`;
  90377. break;
  90378. case "occurrenceDate":
  90379. title = conditionformat_text.conditionformat_occurrenceDate;
  90380. content = `<div class="box" data-itemvalue="occurrenceDate">
  90381. <div class="boxTitleOne">${conditionformat_text.conditionformat_occurrenceDate_title}\uFF1A</div>
  90382. <div class="inpbox">
  90383. <input id="daterange-btn" class="formulaInputFocus" readonly="readonly" placeholder="${conditionformat_text.pleaseSelectADate}"/>
  90384. </div>
  90385. <div style="margin: 5px 0;">${conditionformat_text.setAs}\uFF1A</div>
  90386. ${textCellColorHtml}
  90387. </div>`;
  90388. break;
  90389. case "duplicateValue":
  90390. title = conditionformat_text.conditionformat_duplicateValue;
  90391. content = `<div class="box" data-itemvalue="duplicateValue">
  90392. <div class="boxTitleOne">${conditionformat_text.conditionformat_duplicateValue_title}\uFF1A</div>
  90393. <select id="conditionVal" class="selectbox">
  90394. <option value="0">${conditionformat_text.duplicateValue}</option>
  90395. <option value="1">${conditionformat_text.uniqueValue}</option>
  90396. </select>
  90397. <div style="margin:5px 0;">${conditionformat_text.setAs}\uFF1A</div>
  90398. ${textCellColorHtml}
  90399. </div>`;
  90400. break;
  90401. }
  90402. conditionformat_default.conditionformatDialog(title, content);
  90403. }
  90404. });
  90405. $(document).off("click.CFprojectSelectRule").on("click.CFprojectSelectRule", "#luckysheet-icon-projectSelectRule-menuButton .luckysheet-cols-menuitem", function() {
  90406. $menuButton.hide();
  90407. $("#luckysheet-icon-projectSelectRule-menuButton").hide();
  90408. luckysheetContainerFocus();
  90409. let $t = $(this), itemvalue2 = $t.attr("itemvalue");
  90410. if (store_default.luckysheet_select_save.length == 0) {
  90411. if (isEditMode()) {
  90412. alert(conditionformat_text.pleaseSelectRange);
  90413. } else {
  90414. tooltip_default.info(conditionformat_text.pleaseSelectRange, "");
  90415. }
  90416. return;
  90417. } else {
  90418. let textCellColorHtml = conditionformat_default.textCellColorHtml();
  90419. let title, content;
  90420. switch (itemvalue2) {
  90421. case "top10":
  90422. title = conditionformat_text.conditionformat_top10;
  90423. content = `<div class="box" data-itemvalue="top10">
  90424. <div class="boxTitleOne">${conditionformat_text.conditionformat_top10_title}\uFF1A</div>
  90425. <div style="height: 30px;line-height: 30px;">
  90426. <div style="float: left;height: 30px;line-height: 30px;margin: 0 5px;">${conditionformat_text.top}</div>
  90427. <div class="inpbox2">
  90428. <input id="conditionVal" class="formulaInputFocus" type="number" value="10"/>
  90429. </div>
  90430. <div style="float: left;height: 30px;line-height: 30px;margin: 0 5px;">${conditionformat_text.oneself}</div>
  90431. </div>
  90432. <div style="margin: 5px 0;">${conditionformat_text.setAs}\uFF1A</div>
  90433. ${textCellColorHtml}
  90434. </div>`;
  90435. break;
  90436. case "top10%":
  90437. title = conditionformat_text.conditionformat_top10_percent;
  90438. content = `<div class="box" data-itemvalue="top10%">
  90439. <div class="boxTitleOne">${conditionformat_text.conditionformat_top10_title}\uFF1A</div>
  90440. <div style="height: 30px;line-height: 30px;">
  90441. <div style="float: left;height: 30px;line-height: 30px;margin: 0 5px;">${conditionformat_text.top}</div>
  90442. <div class="inpbox2">
  90443. <input id="conditionVal" class="formulaInputFocus" type="number" value="10"/>
  90444. </div>
  90445. <div style="float: left;height: 30px;line-height: 30px;margin: 0 5px;">%</div>
  90446. </div>
  90447. <div style="margin: 5px 0;">${conditionformat_text.setAs}\uFF1A</div>
  90448. ${textCellColorHtml}
  90449. </div>`;
  90450. break;
  90451. case "last10":
  90452. title = conditionformat_text.conditionformat_last10;
  90453. content = `<div class="box" data-itemvalue="last10">
  90454. <div class="boxTitleOne">${conditionformat_text.conditionformat_last10_title}\uFF1A</div>
  90455. <div style="height: 30px;line-height: 30px;">
  90456. <div style="float: left;height: 30px;line-height: 30px;margin: 0 5px;">${conditionformat_text.last}</div>
  90457. <div class="inpbox2">
  90458. <input id="conditionVal" class="formulaInputFocus" type="number" value="10"/>
  90459. </div>
  90460. <div style="float: left;height: 30px;line-height: 30px;margin: 0 5px;">${conditionformat_text.oneself}</div>
  90461. </div>
  90462. <div style="margin: 5px 0;">${conditionformat_text.setAs}\uFF1A</div>
  90463. ${textCellColorHtml}
  90464. </div>`;
  90465. break;
  90466. case "last10%":
  90467. title = conditionformat_text.conditionformat_last10_percent;
  90468. content = `<div class="box" data-itemvalue="last10%">
  90469. <div class="boxTitleOne">${conditionformat_text.conditionformat_last10_title}\uFF1A</div>
  90470. <div style="height: 30px;line-height: 30px;">
  90471. <div style="float: left;height: 30px;line-height: 30px;margin: 0 5px;">${conditionformat_text.last}</div>
  90472. <div class="inpbox2">
  90473. <input id="conditionVal" class="formulaInputFocus" type="number" value="10"/>
  90474. </div>
  90475. <div style="float: left;height: 30px;line-height: 30px;margin: 0 5px;">%</div>
  90476. </div>
  90477. <div style="margin:5px 0;">\u8BBE\u7F6E\u4E3A\uFF1A</div>
  90478. ${textCellColorHtml}
  90479. </div>`;
  90480. break;
  90481. case "AboveAverage":
  90482. title = conditionformat_text.conditionformat_AboveAverage;
  90483. content = `<div class="box" data-itemvalue="AboveAverage">
  90484. <div class="boxTitleOne">${conditionformat_text.conditionformat_AboveAverage_title}\uFF1A</div>
  90485. <div style="margin: 5px 0;">${conditionformat_text.setAsByArea}\uFF1A</div>
  90486. ${textCellColorHtml}
  90487. </div>`;
  90488. break;
  90489. case "SubAverage":
  90490. title = conditionformat_text.conditionformat_SubAverage;
  90491. content = `<div class="box" data-itemvalue="SubAverage">
  90492. <div class="boxTitleOne">${conditionformat_text.conditionformat_SubAverage_title}\uFF1A</div>
  90493. <div style="margin: 5px 0;">${conditionformat_text.setAsByArea}\uFF1A</div>
  90494. ${textCellColorHtml}
  90495. </div>`;
  90496. break;
  90497. }
  90498. conditionformat_default.conditionformatDialog(title, content);
  90499. }
  90500. });
  90501. $(document).off("click.CFdataBar").on("click.CFdataBar", "#luckysheet-icon-dataBar-menuButton .luckysheet-cols-menuitem", function() {
  90502. $menuButton.hide();
  90503. $("#luckysheet-icon-dataBar-menuButton").hide();
  90504. luckysheetContainerFocus();
  90505. let $t = $(this), itemvalue2 = $t.attr("itemvalue");
  90506. if (store_default.luckysheet_select_save.length > 0) {
  90507. let cellrange = $.extend(true, [], store_default.luckysheet_select_save);
  90508. let format = conditionformat_default.dataBarList[itemvalue2]["format"];
  90509. conditionformat_default.updateItem("dataBar", cellrange, format);
  90510. }
  90511. });
  90512. $(document).off("click.CFcolorGradation").on("click.CFcolorGradation", "#luckysheet-icon-colorGradation-menuButton .luckysheet-cols-menuitem", function() {
  90513. $menuButton.hide();
  90514. $("#luckysheet-icon-colorGradation-menuButton").hide();
  90515. luckysheetContainerFocus();
  90516. let $t = $(this), itemvalue2 = $t.attr("itemvalue");
  90517. if (store_default.luckysheet_select_save.length > 0) {
  90518. let cellrange = $.extend(true, [], store_default.luckysheet_select_save);
  90519. let format = conditionformat_default.colorGradationList[itemvalue2]["format"];
  90520. conditionformat_default.updateItem("colorGradation", cellrange, format);
  90521. }
  90522. });
  90523. $(document).off("click.CFdeleteRule").on("click.CFdeleteRule", "#luckysheet-icon-deleteRule-menuButton .luckysheet-cols-menuitem", function() {
  90524. $menuButton.hide();
  90525. $("#luckysheet-icon-deleteRule-menuButton").hide();
  90526. luckysheetContainerFocus();
  90527. let $t = $(this), itemvalue2 = $t.attr("itemvalue");
  90528. if (itemvalue2 == "delSheet") {
  90529. conditionformat_default.updateItem("delSheet");
  90530. }
  90531. });
  90532. }
  90533. let userlen = $(this).outerWidth();
  90534. let tlen = $menuButton.outerWidth();
  90535. let menuleft = $(this).offset().left;
  90536. if (tlen > userlen && tlen + menuleft > $("#" + store_default.container).width()) {
  90537. menuleft = menuleft - tlen + userlen;
  90538. }
  90539. mouseclickposition($menuButton, menuleft, $(this).offset().top + 25, "lefttop");
  90540. });
  90541. $("#luckysheet-icon-postil").click(function() {
  90542. let menuButtonId = $(this).attr("id") + "-menuButton";
  90543. let $menuButton = $("#" + menuButtonId);
  90544. const locale_comment = locale_default().comment;
  90545. $menuButton.remove();
  90546. postil_default.removeActivePs();
  90547. let last = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1];
  90548. let row_index = last["row_focus"];
  90549. if (row_index == null) {
  90550. row_index = last["row"][0];
  90551. }
  90552. let col_index = last["column_focus"];
  90553. if (col_index == null) {
  90554. col_index = last["column"][0];
  90555. }
  90556. let itemdata;
  90557. if (store_default.flowdata[row_index][col_index] != null && store_default.flowdata[row_index][col_index].ps != null) {
  90558. itemdata = [
  90559. {"text": locale_comment.edit, "value": "editPs", "example": ""},
  90560. {"text": locale_comment.delete, "value": "delPs", "example": ""},
  90561. {"text": "", "value": "split", "example": ""},
  90562. {"text": locale_comment.showOne, "value": "showHidePs", "example": ""},
  90563. {"text": locale_comment.showAll, "value": "showHideAllPs", "example": ""}
  90564. ];
  90565. } else {
  90566. itemdata = [
  90567. {"text": locale_comment.insert, "value": "newPs", "example": ""},
  90568. {"text": "", "value": "split", "example": ""},
  90569. {"text": locale_comment.showAll, "value": "showHideAllPs", "example": ""}
  90570. ];
  90571. }
  90572. let itemset = _this.createButtonMenu(itemdata);
  90573. let menu = replaceHtml(_this.menu, {"id": "postil", "item": itemset, "subclass": "", "sub": ""});
  90574. $("body").append(menu);
  90575. $menuButton = $("#" + menuButtonId).width(150);
  90576. $menuButton.find(".luckysheet-cols-menuitem").click(function() {
  90577. $menuButton.hide();
  90578. luckysheetContainerFocus();
  90579. let $t = $(this), itemvalue2 = $t.attr("itemvalue");
  90580. if (itemvalue2 == "newPs") {
  90581. postil_default.newPs(row_index, col_index);
  90582. } else if (itemvalue2 == "editPs") {
  90583. postil_default.editPs(row_index, col_index);
  90584. } else if (itemvalue2 == "delPs") {
  90585. postil_default.delPs(row_index, col_index);
  90586. } else if (itemvalue2 == "showHidePs") {
  90587. postil_default.showHidePs(row_index, col_index);
  90588. } else if (itemvalue2 == "showHideAllPs") {
  90589. postil_default.showHideAllPs();
  90590. }
  90591. });
  90592. let userlen = $(this).outerWidth();
  90593. let tlen = $menuButton.outerWidth();
  90594. let menuleft = $(this).offset().left;
  90595. if (tlen > userlen && tlen + menuleft > $("#" + store_default.container).width()) {
  90596. menuleft = menuleft - tlen + userlen;
  90597. }
  90598. mouseclickposition($menuButton, menuleft, $(this).offset().top + 25, "lefttop");
  90599. });
  90600. $("#luckysheet-icon-protection").click(function() {
  90601. let sheetFile = sheetmanage_default.getSheetByIndex();
  90602. openProtectionModal(sheetFile);
  90603. });
  90604. $("#luckysheet-icon-print").click(function() {
  90605. let menuButtonId = $(this).attr("id") + "-menuButton";
  90606. let $menuButton = $("#" + menuButtonId);
  90607. const _locale = locale_default();
  90608. const locale_print = _locale.print;
  90609. if ($menuButton.length == 0) {
  90610. let itemdata = [
  90611. {"text": locale_print.menuItemPrint, "value": "print", "example": '<i class="iconfont luckysheet-iconfont-dayin" aria-hidden="true"></i>'},
  90612. {"text": "", "value": "split", "example": ""},
  90613. {"text": locale_print.menuItemAreas, "value": "areas", "example": '<i class="iconfont luckysheet-iconfont-tihuan" aria-hidden="true"></i>'},
  90614. {"text": locale_print.menuItemRows, "value": "rows", "example": '<i class="iconfont luckysheet-iconfont-zhuandao1" aria-hidden="true"></i>'},
  90615. {"text": locale_print.menuItemColumns, "value": "columns", "example": '<i class="iconfont luckysheet-iconfont-dingwei" aria-hidden="true"></i>'}
  90616. ];
  90617. let itemset = _this.createButtonMenu(itemdata);
  90618. let menu = replaceHtml(_this.menu, {"id": "print", "item": itemset, "subclass": "", "sub": ""});
  90619. $("body").append(menu);
  90620. $menuButton = $("#" + menuButtonId).width(180);
  90621. $menuButton.find(".luckysheet-cols-menuitem").click(function() {
  90622. $menuButton.hide();
  90623. luckysheetContainerFocus();
  90624. let $t = $(this), itemvalue2 = $t.attr("itemvalue");
  90625. if (itemvalue2 == "print") {
  90626. alert("print");
  90627. } else if (itemvalue2 == "areas" || itemvalue2 == "rows" || itemvalue2 == "columns") {
  90628. alert("areas");
  90629. }
  90630. });
  90631. }
  90632. let userlen = $(this).outerWidth();
  90633. let tlen = $menuButton.outerWidth();
  90634. let menuleft = $(this).offset().left;
  90635. if (tlen > userlen && tlen + menuleft > $("#" + store_default.container).width()) {
  90636. menuleft = menuleft - tlen + userlen;
  90637. }
  90638. mouseclickposition($menuButton, menuleft, $(this).offset().top + 25, "lefttop");
  90639. });
  90640. $("body").on("mouseover mouseleave", ".luckysheet-menuButton .luckysheet-cols-submenu", function(e) {
  90641. let $t = $(this), attrid = $t.attr("itemvalue"), $attr = $("#luckysheet-icon-" + attrid + "-menuButton");
  90642. if (e.type === "mouseover") {
  90643. let $con = $t.parent();
  90644. let winW = $(window).width(), winH = $(window).height();
  90645. let menuW = $con.width(), attrH = $attr.height() + 25, attrW = $attr.width() + 5;
  90646. let offset = $t.offset();
  90647. let top = offset.top, left = offset.left + menuW;
  90648. if (left + attrW > winW) {
  90649. left = offset.left - attrW;
  90650. }
  90651. if (top + attrH > winH) {
  90652. top = winH - attrH;
  90653. }
  90654. $attr.css({"top": top, "left": left}).show();
  90655. _this.rightclickmenu = $t;
  90656. } else {
  90657. clearTimeout(_this.submenuhide[$attr.attr("id")]);
  90658. _this.submenuhide[$attr.attr("id")] = setTimeout(function() {
  90659. $attr.hide();
  90660. }, 200);
  90661. }
  90662. }).on("mouseover mouseleave", ".luckysheet-menuButton-sub", function(e) {
  90663. if (e.type === "mouseover") {
  90664. _this.rightclickmenu.addClass("luckysheet-cols-menuitem-hover");
  90665. clearTimeout(_this.submenuhide[$(this).attr("id")]);
  90666. } else {
  90667. _this.rightclickmenu.removeClass("luckysheet-cols-menuitem-hover");
  90668. $(this).hide();
  90669. }
  90670. });
  90671. },
  90672. getQKBorder: function(width, type, color) {
  90673. let bordertype = "";
  90674. if (width.indexOf("pt") > -1) {
  90675. width = parseFloat(width);
  90676. if (width < 1) {
  90677. } else if (width < 1.5) {
  90678. bordertype = "Medium";
  90679. } else {
  90680. bordertype = "Thick";
  90681. }
  90682. } else {
  90683. width = parseFloat(width);
  90684. if (width < 2) {
  90685. } else if (width < 3) {
  90686. bordertype = "Medium";
  90687. } else {
  90688. bordertype = "Thick";
  90689. }
  90690. }
  90691. let style = 0;
  90692. type = type.toLowerCase();
  90693. if (type == "double") {
  90694. style = 2;
  90695. } else if (type == "dotted") {
  90696. if (bordertype == "Medium" || bordertype == "Thick") {
  90697. style = 3;
  90698. } else {
  90699. style = 10;
  90700. }
  90701. } else if (type == "dashed") {
  90702. if (bordertype == "Medium" || bordertype == "Thick") {
  90703. style = 4;
  90704. } else {
  90705. style = 9;
  90706. }
  90707. } else if (type == "solid") {
  90708. if (bordertype == "Medium") {
  90709. style = 8;
  90710. } else if (bordertype == "Thick") {
  90711. style = 13;
  90712. } else {
  90713. style = 1;
  90714. }
  90715. }
  90716. return [style, color];
  90717. },
  90718. updateFormatCell: function(d, attr, foucsStatus, row_st, row_ed, col_st, col_ed) {
  90719. if (d == null || attr == null) {
  90720. return;
  90721. }
  90722. if (attr == "ct") {
  90723. for (let r2 = row_st; r2 <= row_ed; r2++) {
  90724. if (store_default.config["rowhidden"] != null && store_default.config["rowhidden"][r2] != null) {
  90725. continue;
  90726. }
  90727. for (let c2 = col_st; c2 <= col_ed; c2++) {
  90728. let cell = d[r2][c2], value = null;
  90729. if (getObjType(cell) == "object") {
  90730. value = d[r2][c2]["v"];
  90731. } else {
  90732. value = d[r2][c2];
  90733. }
  90734. if (foucsStatus != "@" && isRealNum(value)) {
  90735. value = parseFloat(value);
  90736. }
  90737. let mask = update(foucsStatus, value);
  90738. let type = "n";
  90739. if (is_date(foucsStatus) || foucsStatus === 14 || foucsStatus === 15 || foucsStatus === 16 || foucsStatus === 17 || foucsStatus === 18 || foucsStatus === 19 || foucsStatus === 20 || foucsStatus === 21 || foucsStatus === 22 || foucsStatus === 45 || foucsStatus === 46 || foucsStatus === 47) {
  90740. type = "d";
  90741. } else if (foucsStatus == "@" || foucsStatus === 49) {
  90742. type = "s";
  90743. } else if (foucsStatus == "General" || foucsStatus === 0) {
  90744. type = isRealNum(value) ? "n" : "g";
  90745. }
  90746. if (getObjType(cell) == "object") {
  90747. d[r2][c2]["m"] = mask;
  90748. if (d[r2][c2]["ct"] == null) {
  90749. d[r2][c2]["ct"] = {};
  90750. }
  90751. d[r2][c2]["ct"]["fa"] = foucsStatus;
  90752. d[r2][c2]["ct"]["t"] = type;
  90753. } else {
  90754. d[r2][c2] = {"ct": {"fa": foucsStatus, "t": type}, "v": value, "m": mask};
  90755. }
  90756. }
  90757. }
  90758. } else {
  90759. if (attr == "ht") {
  90760. if (foucsStatus == "left") {
  90761. foucsStatus = "1";
  90762. } else if (foucsStatus == "center") {
  90763. foucsStatus = "0";
  90764. } else if (foucsStatus == "right") {
  90765. foucsStatus = "2";
  90766. }
  90767. } else if (attr == "vt") {
  90768. if (foucsStatus == "top") {
  90769. foucsStatus = "1";
  90770. } else if (foucsStatus == "middle") {
  90771. foucsStatus = "0";
  90772. } else if (foucsStatus == "bottom") {
  90773. foucsStatus = "2";
  90774. }
  90775. } else if (attr == "tb") {
  90776. if (foucsStatus == "overflow") {
  90777. foucsStatus = "1";
  90778. } else if (foucsStatus == "clip") {
  90779. foucsStatus = "0";
  90780. } else if (foucsStatus == "wrap") {
  90781. foucsStatus = "2";
  90782. }
  90783. } else if (attr == "tr") {
  90784. if (foucsStatus == "none") {
  90785. foucsStatus = "0";
  90786. } else if (foucsStatus == "angleup") {
  90787. foucsStatus = "1";
  90788. } else if (foucsStatus == "angledown") {
  90789. foucsStatus = "2";
  90790. } else if (foucsStatus == "vertical") {
  90791. foucsStatus = "3";
  90792. } else if (foucsStatus == "rotation-up") {
  90793. foucsStatus = "4";
  90794. } else if (foucsStatus == "rotation-down") {
  90795. foucsStatus = "5";
  90796. }
  90797. }
  90798. for (let r2 = row_st; r2 <= row_ed; r2++) {
  90799. if (store_default.config["rowhidden"] != null && store_default.config["rowhidden"][r2] != null) {
  90800. continue;
  90801. }
  90802. for (let c2 = col_st; c2 <= col_ed; c2++) {
  90803. let value = d[r2][c2];
  90804. if (getObjType(value) == "object") {
  90805. updateInlineStringFormatOutside(value, attr, foucsStatus);
  90806. d[r2][c2][attr] = foucsStatus;
  90807. } else {
  90808. d[r2][c2] = {v: value};
  90809. d[r2][c2][attr] = foucsStatus;
  90810. }
  90811. }
  90812. }
  90813. }
  90814. },
  90815. updateFormat: function(d, attr, foucsStatus) {
  90816. let _this = this;
  90817. if (!checkProtectionFormatCells(store_default.currentSheetIndex)) {
  90818. return;
  90819. }
  90820. if (!checkIsAllowEdit()) {
  90821. tooltip_default.info("", locale_default().pivotTable.errorNotAllowEdit);
  90822. return;
  90823. }
  90824. let canvasElement = document.createElement("canvas");
  90825. let canvas = canvasElement.getContext("2d");
  90826. if (attr in inlineStyleAffectAttribute) {
  90827. if (parseInt($("#luckysheet-input-box").css("top")) > 0) {
  90828. let value = $("#luckysheet-input-box").text();
  90829. if (value.substr(0, 1) != "=") {
  90830. let cell = d[store_default.luckysheetCellUpdate[0]][store_default.luckysheetCellUpdate[1]];
  90831. updateInlineStringFormat(cell, attr, foucsStatus, formula_default.rangeResizeTo);
  90832. }
  90833. }
  90834. }
  90835. let cfg = $.extend(true, {}, store_default.config);
  90836. if (cfg["rowlen"] == null) {
  90837. cfg["rowlen"] = {};
  90838. }
  90839. for (let s = 0; s < store_default.luckysheet_select_save.length; s++) {
  90840. let row_st = store_default.luckysheet_select_save[s]["row"][0], row_ed = store_default.luckysheet_select_save[s]["row"][1];
  90841. let col_st = store_default.luckysheet_select_save[s]["column"][0], col_ed = store_default.luckysheet_select_save[s]["column"][1];
  90842. this.updateFormatCell(d, attr, foucsStatus, row_st, row_ed, col_st, col_ed);
  90843. if (attr == "tb" || attr == "tr" || attr == "fs") {
  90844. cfg = rowlenByRange(d, row_st, row_ed, cfg);
  90845. }
  90846. }
  90847. let allParam = {};
  90848. if (attr == "tb" || attr == "tr" || attr == "fs") {
  90849. allParam = {
  90850. "cfg": cfg,
  90851. "RowlChange": true
  90852. };
  90853. }
  90854. jfrefreshgrid(d, store_default.luckysheet_select_save, allParam, false);
  90855. },
  90856. updateFormat_mc: function(d, foucsStatus) {
  90857. if (!checkIsAllowEdit()) {
  90858. tooltip_default.info("", locale_default().pivotTable.errorNotAllowEdit);
  90859. return;
  90860. }
  90861. let cfg = $.extend(true, {}, store_default.config);
  90862. if (cfg["merge"] == null) {
  90863. cfg["merge"] = {};
  90864. }
  90865. if (!checkProtectionNotEnable(store_default.currentSheetIndex)) {
  90866. return;
  90867. }
  90868. if (foucsStatus == "mergeCancel") {
  90869. for (let i2 = 0; i2 < store_default.luckysheet_select_save.length; i2++) {
  90870. let range2 = store_default.luckysheet_select_save[i2];
  90871. let r1 = range2["row"][0], r2 = range2["row"][1];
  90872. let c1 = range2["column"][0], c2 = range2["column"][1];
  90873. if (r1 == r2 && c1 == c2) {
  90874. continue;
  90875. }
  90876. let fv = {};
  90877. for (let r3 = r1; r3 <= r2; r3++) {
  90878. for (let c3 = c1; c3 <= c2; c3++) {
  90879. let cell = d[r3][c3];
  90880. if (cell != null && cell.mc != null) {
  90881. let mc_r = cell.mc.r, mc_c = cell.mc.c;
  90882. if ("rs" in cell.mc) {
  90883. delete cell.mc;
  90884. delete cfg["merge"][mc_r + "_" + mc_c];
  90885. fv[mc_r + "_" + mc_c] = $.extend(true, {}, cell);
  90886. } else {
  90887. let cell_clone = JSON.parse(JSON.stringify(fv[mc_r + "_" + mc_c]));
  90888. delete cell_clone.v;
  90889. delete cell_clone.m;
  90890. delete cell_clone.ct;
  90891. delete cell_clone.f;
  90892. delete cell_clone.spl;
  90893. d[r3][c3] = cell_clone;
  90894. }
  90895. }
  90896. }
  90897. }
  90898. }
  90899. } else {
  90900. let isHasMc = false;
  90901. for (let i2 = 0; i2 < store_default.luckysheet_select_save.length; i2++) {
  90902. let range2 = store_default.luckysheet_select_save[i2];
  90903. let r1 = range2["row"][0], r2 = range2["row"][1];
  90904. let c1 = range2["column"][0], c2 = range2["column"][1];
  90905. for (let r3 = r1; r3 <= r2; r3++) {
  90906. for (let c3 = c1; c3 <= c2; c3++) {
  90907. let cell = d[r3][c3];
  90908. if (getObjType(cell) == "object" && "mc" in cell) {
  90909. isHasMc = true;
  90910. break;
  90911. }
  90912. }
  90913. }
  90914. }
  90915. if (isHasMc) {
  90916. for (let i2 = 0; i2 < store_default.luckysheet_select_save.length; i2++) {
  90917. let range2 = store_default.luckysheet_select_save[i2];
  90918. let r1 = range2["row"][0], r2 = range2["row"][1];
  90919. let c1 = range2["column"][0], c2 = range2["column"][1];
  90920. if (r1 == r2 && c1 == c2) {
  90921. continue;
  90922. }
  90923. let fv = {};
  90924. for (let r3 = r1; r3 <= r2; r3++) {
  90925. for (let c3 = c1; c3 <= c2; c3++) {
  90926. let cell = d[r3][c3];
  90927. if (cell != null && cell.mc != null) {
  90928. let mc_r = cell.mc.r, mc_c = cell.mc.c;
  90929. if ("rs" in cell.mc) {
  90930. delete cell.mc;
  90931. delete cfg["merge"][mc_r + "_" + mc_c];
  90932. fv[mc_r + "_" + mc_c] = $.extend(true, {}, cell);
  90933. } else {
  90934. let cell_clone = JSON.parse(JSON.stringify(fv[mc_r + "_" + mc_c]));
  90935. delete cell_clone.v;
  90936. delete cell_clone.m;
  90937. delete cell_clone.ct;
  90938. delete cell_clone.f;
  90939. delete cell_clone.spl;
  90940. d[r3][c3] = cell_clone;
  90941. }
  90942. }
  90943. }
  90944. }
  90945. }
  90946. } else {
  90947. for (let i2 = 0; i2 < store_default.luckysheet_select_save.length; i2++) {
  90948. let range2 = store_default.luckysheet_select_save[i2];
  90949. let r1 = range2["row"][0], r2 = range2["row"][1];
  90950. let c1 = range2["column"][0], c2 = range2["column"][1];
  90951. if (r1 == r2 && c1 == c2) {
  90952. continue;
  90953. }
  90954. if (foucsStatus == "mergeAll") {
  90955. let fv = {}, isfirst = false;
  90956. for (let r3 = r1; r3 <= r2; r3++) {
  90957. for (let c3 = c1; c3 <= c2; c3++) {
  90958. let cell = d[r3][c3];
  90959. if (cell != null && (isInlineStringCT(cell.ct) || !isRealNull(cell.v) || cell.f != null) && !isfirst) {
  90960. fv = $.extend(true, {}, cell);
  90961. isfirst = true;
  90962. }
  90963. d[r3][c3] = {"mc": {"r": r1, "c": c1}};
  90964. }
  90965. }
  90966. d[r1][c1] = fv;
  90967. d[r1][c1].mc = {"r": r1, "c": c1, "rs": r2 - r1 + 1, "cs": c2 - c1 + 1};
  90968. cfg["merge"][r1 + "_" + c1] = {"r": r1, "c": c1, "rs": r2 - r1 + 1, "cs": c2 - c1 + 1};
  90969. } else if (foucsStatus == "mergeV") {
  90970. for (let c3 = c1; c3 <= c2; c3++) {
  90971. let fv = {}, isfirst = false;
  90972. for (let r3 = r1; r3 <= r2; r3++) {
  90973. let cell = d[r3][c3];
  90974. if (cell != null && (!isRealNull(cell.v) || cell.f != null) && !isfirst) {
  90975. fv = $.extend(true, {}, cell);
  90976. isfirst = true;
  90977. }
  90978. d[r3][c3] = {"mc": {"r": r1, "c": c3}};
  90979. }
  90980. d[r1][c3] = fv;
  90981. d[r1][c3].mc = {"r": r1, "c": c3, "rs": r2 - r1 + 1, "cs": 1};
  90982. cfg["merge"][r1 + "_" + c3] = {"r": r1, "c": c3, "rs": r2 - r1 + 1, "cs": 1};
  90983. }
  90984. } else if (foucsStatus == "mergeH") {
  90985. for (let r3 = r1; r3 <= r2; r3++) {
  90986. let fv = {}, isfirst = false;
  90987. for (let c3 = c1; c3 <= c2; c3++) {
  90988. let cell = d[r3][c3];
  90989. if (cell != null && (!isRealNull(cell.v) || cell.f != null) && !isfirst) {
  90990. fv = $.extend(true, {}, cell);
  90991. isfirst = true;
  90992. }
  90993. d[r3][c3] = {"mc": {"r": r3, "c": c1}};
  90994. }
  90995. d[r3][c1] = fv;
  90996. d[r3][c1].mc = {"r": r3, "c": c1, "rs": 1, "cs": c2 - c1 + 1};
  90997. cfg["merge"][r3 + "_" + c1] = {"r": r3, "c": c1, "rs": 1, "cs": c2 - c1 + 1};
  90998. }
  90999. }
  91000. }
  91001. }
  91002. }
  91003. if (store_default.clearjfundo) {
  91004. store_default.jfundo.length = 0;
  91005. store_default.jfredo.push({
  91006. "type": "mergeChange",
  91007. "sheetIndex": store_default.currentSheetIndex,
  91008. "data": store_default.flowdata,
  91009. "curData": d,
  91010. "range": $.extend(true, [], store_default.luckysheet_select_save),
  91011. "config": $.extend(true, {}, store_default.config),
  91012. "curConfig": cfg
  91013. });
  91014. }
  91015. store_default.clearjfundo = false;
  91016. jfrefreshgrid(d, store_default.luckysheet_select_save, {"cfg": cfg});
  91017. store_default.clearjfundo = true;
  91018. },
  91019. borderfix: function(d, r2, c2) {
  91020. let cell = d[r2][c2];
  91021. let bg = null;
  91022. if (cell == null) {
  91023. return [-1, 0, 0, -1];
  91024. } else if (d[r2][c2].bg == null || d[r2][c2].bg == "") {
  91025. return [-1, 0, 0, -1];
  91026. } else {
  91027. return [-2, -1, 1, 0];
  91028. }
  91029. },
  91030. changeMenuButtonDom: function(attr, foucsStatus, _locale) {
  91031. let _this = this;
  91032. if (_locale == null) {
  91033. _locale = locale_default();
  91034. }
  91035. const locale_fontarray = _locale.fontarray;
  91036. const locale_fontjson = _locale.fontjson;
  91037. if (attr == "bl") {
  91038. if (foucsStatus != "0") {
  91039. $("#luckysheet-icon-bold").addClass("luckysheet-toolbar-button-hover");
  91040. } else {
  91041. $("#luckysheet-icon-bold").removeClass("luckysheet-toolbar-button-hover");
  91042. }
  91043. } else if (attr == "it") {
  91044. if (foucsStatus != "0") {
  91045. $("#luckysheet-icon-italic").addClass("luckysheet-toolbar-button-hover");
  91046. } else {
  91047. $("#luckysheet-icon-italic").removeClass("luckysheet-toolbar-button-hover");
  91048. }
  91049. } else if (attr == "cl") {
  91050. if (foucsStatus != "0") {
  91051. $("#luckysheet-icon-strikethrough").addClass("luckysheet-toolbar-button-hover");
  91052. } else {
  91053. $("#luckysheet-icon-strikethrough").removeClass("luckysheet-toolbar-button-hover");
  91054. }
  91055. } else if (attr == "un") {
  91056. if (foucsStatus != "0") {
  91057. $("#luckysheet-icon-underline").addClass("luckysheet-toolbar-button-hover");
  91058. } else {
  91059. $("#luckysheet-icon-underline").removeClass("luckysheet-toolbar-button-hover");
  91060. }
  91061. } else if (attr == "ff") {
  91062. let menuButtonId = "luckysheet-icon-font-family-menuButton";
  91063. let $menuButton = $("#" + menuButtonId);
  91064. let itemname = locale_fontarray[0], itemvalue2 = 0;
  91065. if (foucsStatus != null) {
  91066. if (isdatatypemulti(foucsStatus)["num"]) {
  91067. itemvalue2 = parseInt(foucsStatus);
  91068. itemname = locale_fontarray[itemvalue2];
  91069. if (itemname == null) {
  91070. itemvalue2 = _this.defualtFont[itemvalue2];
  91071. itemname = itemvalue2;
  91072. if (itemvalue2 != null) {
  91073. _this.addFontTolist(itemvalue2);
  91074. }
  91075. }
  91076. } else {
  91077. foucsStatus = foucsStatus.replace(/"/g, "").replace(/'/g, "");
  91078. itemvalue2 = foucsStatus;
  91079. itemname = foucsStatus;
  91080. _this.addFontTolist(itemvalue2);
  91081. }
  91082. }
  91083. _this.focus($menuButton, itemvalue2);
  91084. $("#luckysheet-icon-font-family").find(".luckysheet-toolbar-menu-button-caption").html(" " + itemname + " ");
  91085. } else if (attr == "fs") {
  91086. let $menuButton = $("#luckysheet-icon-font-size-menuButton");
  91087. let itemvalue2 = foucsStatus, $input = $("#luckysheet-icon-font-size input");
  91088. _this.focus($menuButton, itemvalue2);
  91089. $("#luckysheet-icon-font-size").attr("itemvalue", itemvalue2);
  91090. $input.val(itemvalue2);
  91091. } else if (attr == "ht") {
  91092. let $menuButton = $("#luckysheet-icon-align-menu-menuButton");
  91093. let $t = $("luckysheet-icon-align"), itemvalue2 = "left";
  91094. if (foucsStatus == "0") {
  91095. itemvalue2 = "center";
  91096. } else if (foucsStatus == "2") {
  91097. itemvalue2 = "right";
  91098. }
  91099. _this.focus($menuButton, itemvalue2);
  91100. const iconfontObject = iconfontObjects.align;
  91101. let $icon = $("#luckysheet-icon-align").attr("type", itemvalue2).find(".luckysheet-icon-img-container");
  91102. $icon.removeAttr("class").addClass("luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-align-" + itemvalue2 + iconfontObject[itemvalue2]);
  91103. $menuButton.hide();
  91104. } else if (attr == "vt") {
  91105. let $menuButton = $("#luckysheet-icon-valign-menu-menuButton");
  91106. let $t = $("luckysheet-icon-valign"), itemvalue2 = "bottom";
  91107. if (foucsStatus == "1") {
  91108. itemvalue2 = "top";
  91109. } else if (foucsStatus == "0") {
  91110. itemvalue2 = "middle";
  91111. }
  91112. _this.focus($menuButton, itemvalue2);
  91113. const iconfontObject = iconfontObjects.align;
  91114. let $icon = $("#luckysheet-icon-valign").attr("type", itemvalue2).find(".luckysheet-icon-img-container");
  91115. $icon.removeAttr("class").addClass("luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-valign-" + itemvalue2 + iconfontObject[itemvalue2]);
  91116. $menuButton.hide();
  91117. } else if (attr == "tb") {
  91118. let $menuButton = $("#luckysheet-icon-textwrap-menu-menuButton");
  91119. let $t = $("luckysheet-icon-textwrap"), itemvalue2 = "clip";
  91120. if (foucsStatus == "1") {
  91121. itemvalue2 = "overflow";
  91122. } else if (foucsStatus == "2") {
  91123. itemvalue2 = "wrap";
  91124. }
  91125. _this.focus($menuButton, itemvalue2);
  91126. const iconfontObject = iconfontObjects.textWrap;
  91127. let $icon = $("#luckysheet-icon-textwrap").attr("type", itemvalue2).find(".luckysheet-icon-img-container");
  91128. $icon.removeAttr("class").addClass("luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-textwrap-" + itemvalue2 + iconfontObject[itemvalue2]);
  91129. $menuButton.hide();
  91130. } else if (attr == "tr") {
  91131. let $menuButton = $("#luckysheet-icon-rotation-menu-menuButton");
  91132. let $t = $("luckysheet-icon-rotation"), itemvalue2 = "none";
  91133. if (foucsStatus == "1") {
  91134. itemvalue2 = "angleup";
  91135. } else if (foucsStatus == "2") {
  91136. itemvalue2 = "angledown";
  91137. } else if (foucsStatus == "3") {
  91138. itemvalue2 = "vertical";
  91139. } else if (foucsStatus == "4") {
  91140. itemvalue2 = "rotation-up";
  91141. } else if (foucsStatus == "5") {
  91142. itemvalue2 = "rotation-down";
  91143. }
  91144. _this.focus($menuButton, itemvalue2);
  91145. const iconfontObject = iconfontObjects.rotation;
  91146. let $icon = $("#luckysheet-icon-rotation").attr("type", itemvalue2).find(".luckysheet-icon-img-container");
  91147. $icon.removeAttr("class").addClass("luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-" + itemvalue2 + iconfontObject[itemvalue2]);
  91148. $menuButton.hide();
  91149. } else if (attr == "ct") {
  91150. let $menuButton = $("#luckysheet-icon-fmt-other");
  91151. const _locale2 = locale_default();
  91152. const locale_defaultFmt = _locale2.defaultFmt;
  91153. if (!foucsStatus) {
  91154. $menuButton.find(".luckysheet-toolbar-menu-button-caption").html(" " + locale_defaultFmt[0].text + " ");
  91155. return;
  91156. }
  91157. const {fa} = foucsStatus;
  91158. const format = locale_defaultFmt.find((f) => f.value === fa);
  91159. if (format) {
  91160. $menuButton.find(".luckysheet-toolbar-menu-button-caption").html(" " + format.text + " ");
  91161. } else {
  91162. const otherFormat = locale_defaultFmt.find((f) => f.value === "fmtOtherSelf");
  91163. $menuButton.find(".luckysheet-toolbar-menu-button-caption").html(" " + otherFormat.text + " ");
  91164. }
  91165. }
  91166. },
  91167. inputMenuButtonFocus: function(focusTarget) {
  91168. var w = window.getSelection();
  91169. var range2 = w.getRangeAt(0);
  91170. let startContainer = range2.startContainer;
  91171. store_default.inlineStringEditRange = null;
  91172. const _locale = locale_default();
  91173. if (startContainer.parentNode.tagName == "SPAN") {
  91174. let cssText = startContainer.parentNode.style.cssText;
  91175. let stylelist = convertCssToStyleList(cssText);
  91176. for (let key in stylelist) {
  91177. this.changeMenuButtonDom(key, stylelist[key], _locale);
  91178. }
  91179. }
  91180. },
  91181. menuButtonFocus: function(d, r2, c2) {
  91182. let _this = this;
  91183. let foucsList = ["bl", "it", "cl", "ff", "ht", "vt", "fs", "tb", "tr", "ct", "un"];
  91184. const _locale = locale_default();
  91185. for (let i2 = 0; i2 < foucsList.length; i2++) {
  91186. let attr = foucsList[i2];
  91187. let foucsStatus = _this.checkstatus(d, r2, c2, attr);
  91188. this.changeMenuButtonDom(attr, foucsStatus, _locale);
  91189. }
  91190. },
  91191. checkstatus: function(d, r2, c2, a) {
  91192. if (d == null || d[r2] == null) {
  91193. console.warn("It's incorrect data", r2, c2);
  91194. return null;
  91195. }
  91196. let foucsStatus = d[r2][c2];
  91197. return checkstatusByCell(foucsStatus, a);
  91198. },
  91199. setLineDash: function(canvasborder, type, hv, m_st, m_ed, line_st, line_ed) {
  91200. let borderType = {
  91201. "0": "none",
  91202. "1": "Thin",
  91203. "2": "Hair",
  91204. "3": "Dotted",
  91205. "4": "Dashed",
  91206. "5": "DashDot",
  91207. "6": "DashDotDot",
  91208. "7": "Double",
  91209. "8": "Medium",
  91210. "9": "MediumDashed",
  91211. "10": "MediumDashDot",
  91212. "11": "MediumDashDotDot",
  91213. "12": "SlantedDashDot",
  91214. "13": "Thick"
  91215. };
  91216. type = borderType[type.toString()];
  91217. try {
  91218. if (type == "Hair") {
  91219. canvasborder.setLineDash([1, 2]);
  91220. } else if (type.indexOf("DashDotDot") > -1) {
  91221. canvasborder.setLineDash([2, 2, 5, 2, 2]);
  91222. } else if (type.indexOf("DashDot") > -1) {
  91223. canvasborder.setLineDash([2, 5, 2]);
  91224. } else if (type.indexOf("Dotted") > -1) {
  91225. canvasborder.setLineDash([2]);
  91226. } else if (type.indexOf("Dashed") > -1) {
  91227. canvasborder.setLineDash([3]);
  91228. } else {
  91229. canvasborder.setLineDash([0]);
  91230. }
  91231. } catch (e) {
  91232. console.log(e);
  91233. }
  91234. canvasborder.beginPath();
  91235. if (type.indexOf("Medium") > -1) {
  91236. if (hv == "h") {
  91237. canvasborder.moveTo(m_st, m_ed - 0.5);
  91238. canvasborder.lineTo(line_st, line_ed - 0.5);
  91239. } else {
  91240. canvasborder.moveTo(m_st - 0.5, m_ed);
  91241. canvasborder.lineTo(line_st - 0.5, line_ed);
  91242. }
  91243. canvasborder.lineWidth = 2;
  91244. } else if (type == "Thick") {
  91245. canvasborder.moveTo(m_st, m_ed);
  91246. canvasborder.lineTo(line_st, line_ed);
  91247. canvasborder.lineWidth = 3;
  91248. } else {
  91249. canvasborder.moveTo(m_st, m_ed);
  91250. canvasborder.lineTo(line_st, line_ed);
  91251. canvasborder.lineWidth = 1;
  91252. }
  91253. },
  91254. moveMergeData: function(d, offset_r, offset_c) {
  91255. if (isRealNull(d)) {
  91256. return d;
  91257. }
  91258. let deleMC = [], insertMC = [], hasMC = false;
  91259. for (let r2 = 0; r2 < d.length; r2++) {
  91260. for (let c2 = 0; c2 < d[0].length; c2++) {
  91261. let cell = d[r2][c2];
  91262. if (getObjType(cell) == "object" && "mc" in cell) {
  91263. if (cell.mc.rs != null) {
  91264. deleMC.push({
  91265. rs: cell.mc.rs,
  91266. cs: cell.mc.cs,
  91267. r: cell.mc.r,
  91268. c: cell.mc.c
  91269. });
  91270. insertMC.push({
  91271. rs: cell.mc.rs,
  91272. cs: cell.mc.cs,
  91273. r: cell.mc.r + offset_r,
  91274. c: cell.mc.c + offset_c
  91275. });
  91276. hasMC = true;
  91277. }
  91278. d[r2][c2].mc.r += offset_r;
  91279. d[r2][c2].mc.c += offset_c;
  91280. }
  91281. }
  91282. }
  91283. return {"deleMC": deleMC, "insertMC": insertMC, "hasMC": hasMC};
  91284. },
  91285. getRangeInMerge: function(st_r, rlen, st_c, clen, sheetIndex) {
  91286. let _this = this;
  91287. let mergelist = [];
  91288. let cfg = null;
  91289. if (sheetIndex != null) {
  91290. cfg = $.extend(true, {}, _this.getSheetConfig());
  91291. } else {
  91292. cfg = $.extend(true, {}, store_default.config);
  91293. }
  91294. if (cfg != null && cfg["merge"] != null) {
  91295. for (let key in cfg["merge"]) {
  91296. let mc = cfg["merge"][key];
  91297. if (!(st_r + rlen - 1 < mc.r || st_r > mc.r + mc.rs - 1) && !(st_c + clen - 1 < mc.c || st_c > mc.c + mc.cs - 1)) {
  91298. mergelist.push(mc);
  91299. }
  91300. }
  91301. }
  91302. return mergelist;
  91303. },
  91304. mergeborer: function(d, row_index, col_index) {
  91305. if (d == null || d[row_index] == null) {
  91306. console.warn("Merge info is null", row_index, col_index);
  91307. return null;
  91308. }
  91309. let value = d[row_index][col_index];
  91310. if (getObjType(value) == "object" && "mc" in value) {
  91311. let margeMaindata = value["mc"];
  91312. if (margeMaindata == null) {
  91313. console.warn("Merge info is null", row_index, col_index);
  91314. return null;
  91315. }
  91316. col_index = margeMaindata.c;
  91317. row_index = margeMaindata.r;
  91318. if (d[row_index][col_index] == null) {
  91319. console.warn("Main merge Cell info is null", row_index, col_index);
  91320. return null;
  91321. }
  91322. let col_rs = d[row_index][col_index].mc.cs;
  91323. let row_rs = d[row_index][col_index].mc.rs;
  91324. let margeMain = d[row_index][col_index].mc;
  91325. let start_r, end_r, row, row_pre;
  91326. for (let r2 = row_index; r2 < margeMain.rs + row_index; r2++) {
  91327. if (r2 == 0) {
  91328. start_r = -1;
  91329. } else {
  91330. start_r = store_default.visibledatarow[r2 - 1] - 1;
  91331. }
  91332. end_r = store_default.visibledatarow[r2];
  91333. if (row_pre == null) {
  91334. row_pre = start_r;
  91335. row = end_r;
  91336. } else {
  91337. row += end_r - start_r - 1;
  91338. }
  91339. }
  91340. let start_c, end_c, col, col_pre;
  91341. for (let c2 = col_index; c2 < margeMain.cs + col_index; c2++) {
  91342. if (c2 == 0) {
  91343. start_c = 0;
  91344. } else {
  91345. start_c = store_default.visibledatacolumn[c2 - 1];
  91346. }
  91347. end_c = store_default.visibledatacolumn[c2];
  91348. if (col_pre == null) {
  91349. col_pre = start_c;
  91350. col = end_c;
  91351. } else {
  91352. col += end_c - start_c;
  91353. }
  91354. }
  91355. return {
  91356. "row": [row_pre, row, row_index, row_index + row_rs - 1],
  91357. "column": [col_pre, col, col_index, col_index + col_rs - 1]
  91358. };
  91359. } else {
  91360. return null;
  91361. }
  91362. },
  91363. mergeMoveData: {},
  91364. mergeMoveMain: function(columnseleted, rowseleted, s, top, height, left, width) {
  91365. let _this = this;
  91366. let mergesetting = sheetmanage_default.getSheetMerge();
  91367. if (mergesetting == null) {
  91368. return;
  91369. }
  91370. let mcset = [];
  91371. for (let key in mergesetting) {
  91372. mcset.push(key);
  91373. }
  91374. if (rowseleted[0] > rowseleted[1]) {
  91375. rowseleted[1] = rowseleted[0];
  91376. }
  91377. if (columnseleted[0] > columnseleted[1]) {
  91378. columnseleted[1] = columnseleted[0];
  91379. }
  91380. let offloop = true;
  91381. _this.mergeMoveData = {};
  91382. while (offloop) {
  91383. offloop = false;
  91384. for (let i2 = 0; i2 < mcset.length; i2++) {
  91385. let key = mcset[i2];
  91386. let mc = mergesetting[key];
  91387. if (key in _this.mergeMoveData) {
  91388. continue;
  91389. }
  91390. let changeparam = _this.mergeMove(mc, columnseleted, rowseleted, s, top, height, left, width);
  91391. if (changeparam != null) {
  91392. _this.mergeMoveData[key] = mc;
  91393. columnseleted = changeparam[0];
  91394. rowseleted = changeparam[1];
  91395. top = changeparam[2];
  91396. height = changeparam[3];
  91397. left = changeparam[4];
  91398. width = changeparam[5];
  91399. offloop = true;
  91400. } else {
  91401. delete _this.mergeMoveData[key];
  91402. }
  91403. }
  91404. }
  91405. return [columnseleted, rowseleted, top, height, left, width];
  91406. },
  91407. mergeMove: function(mc, columnseleted, rowseleted, s, top, height, left, width) {
  91408. let _this = this;
  91409. let row_st = mc.r, row_ed = mc.r + mc.rs - 1;
  91410. let col_st = mc.c, col_ed = mc.c + mc.cs - 1;
  91411. let ismatch = false;
  91412. if (columnseleted[1] < columnseleted[0]) {
  91413. columnseleted[0] = columnseleted[1];
  91414. }
  91415. if (rowseleted[1] < rowseleted[0]) {
  91416. rowseleted[0] = rowseleted[1];
  91417. }
  91418. if (columnseleted[0] <= col_st && columnseleted[1] >= col_ed && rowseleted[0] <= row_st && rowseleted[1] >= row_ed || !(columnseleted[1] < col_st || columnseleted[0] > col_ed) && !(rowseleted[1] < row_st || rowseleted[0] > row_ed)) {
  91419. let margeset = _this.mergeborer(store_default.flowdata, mc.r, mc.c);
  91420. if (!!margeset) {
  91421. let row = margeset.row[1], row_pre = margeset.row[0], row_index = margeset.row[2], col = margeset.column[1], col_pre = margeset.column[0], col_index = margeset.column[2];
  91422. if (!(columnseleted[1] < col_st || columnseleted[0] > col_ed)) {
  91423. if (rowseleted[0] <= row_ed && rowseleted[0] >= row_st) {
  91424. height += top - row_pre;
  91425. top = row_pre;
  91426. rowseleted[0] = row_st;
  91427. }
  91428. if (rowseleted[1] >= row_st && rowseleted[1] <= row_ed) {
  91429. if (s.row_focus >= row_st && s.row_focus <= row_ed) {
  91430. height = row - top;
  91431. } else {
  91432. height = row - top;
  91433. }
  91434. rowseleted[1] = row_ed;
  91435. }
  91436. }
  91437. if (!(rowseleted[1] < row_st || rowseleted[0] > row_ed)) {
  91438. if (columnseleted[0] <= col_ed && columnseleted[0] >= col_st) {
  91439. width += left - col_pre;
  91440. left = col_pre;
  91441. columnseleted[0] = col_st;
  91442. }
  91443. if (columnseleted[1] >= col_st && columnseleted[1] <= col_ed) {
  91444. if (s.column_focus >= col_st && s.column_focus <= col_ed) {
  91445. width = col - left;
  91446. } else {
  91447. width = col - left;
  91448. }
  91449. columnseleted[1] = col_ed;
  91450. }
  91451. }
  91452. ismatch = true;
  91453. }
  91454. }
  91455. if (ismatch) {
  91456. return [columnseleted, rowseleted, top, height, left, width];
  91457. } else {
  91458. return null;
  91459. }
  91460. },
  91461. getCellRealSize: function(d, cell_r, cell_c) {
  91462. let _this = this;
  91463. let width = store_default.defaultcollen;
  91464. let height = store_default.defaultrowlen;
  91465. let celldata = d[cell_r][cell_c];
  91466. if (!!celldata && celldata["mc"] != null) {
  91467. let mc = celldata["mc"];
  91468. let margeset = _this.mergeborer(d, mc.r, mc.c);
  91469. if (!!margeset) {
  91470. let row = margeset.row[1];
  91471. let row_pre = margeset.row[0];
  91472. let row_index = margeset.row[2];
  91473. let row_index_ed = margeset.row[3];
  91474. let col = margeset.column[1];
  91475. let col_pre = margeset.column[0];
  91476. let col_index = margeset.column[2];
  91477. let col_index_ed = margeset.column[3];
  91478. width = col - col_pre - 1;
  91479. height = row - row_pre - 1;
  91480. }
  91481. } else {
  91482. let config = getluckysheetfile()[getSheetIndex(store_default.currentSheetIndex)]["config"];
  91483. if (config["columnlen"] != null && config["columnlen"][cell_c] != null) {
  91484. width = config["columnlen"][cell_c];
  91485. }
  91486. if (config["rowlen"] != null && config["rowlen"][cell_r] != null) {
  91487. height = config["rowlen"][cell_r];
  91488. }
  91489. }
  91490. return [width, height];
  91491. },
  91492. getTextHeightCache: {},
  91493. getTextSize: function(text, font) {
  91494. let fontarray = locale_default().fontarray;
  91495. let f = font || "10pt " + fontarray[0];
  91496. let _this = this;
  91497. if (f in _this.getTextHeightCache) {
  91498. return _this.getTextHeightCache[f];
  91499. }
  91500. if ($("#luckysheetTextSizeTest").length == 0) {
  91501. $('<span id="luckysheetTextSizeTest" style="float:left;white-space:nowrap;visibility:hidden;margin:0;padding:0;">' + text + "</span>").appendTo($("body"));
  91502. }
  91503. let o = $("#luckysheetTextSizeTest").text(text).css({"font": f}), w = o.innerWidth(), h = o.innerHeight();
  91504. _this.getTextHeightCache[f] = [w, h];
  91505. return [w, h];
  91506. },
  91507. activeFormulaInput: function(row_index, col_index, rowh, columnh, formula, isnull) {
  91508. let _this = this;
  91509. if (isnull == null) {
  91510. isnull = false;
  91511. }
  91512. luckysheetupdateCell(row_index, col_index, store_default.flowdata, true);
  91513. if (isnull) {
  91514. let formulaTxt2 = '<span dir="auto" class="luckysheet-formula-text-color">=</span><span dir="auto" class="luckysheet-formula-text-color">' + formula.toUpperCase() + '</span><span dir="auto" class="luckysheet-formula-text-color">(</span><span dir="auto" class="luckysheet-formula-text-color">)</span>';
  91515. $("#luckysheet-rich-text-editor").html(formulaTxt2);
  91516. let currSelection = window.getSelection();
  91517. let $span = $("#luckysheet-rich-text-editor").find("span");
  91518. formula_default.setCaretPosition($span.get($span.length - 2), 0, 1);
  91519. return;
  91520. }
  91521. let row_pre = rowLocationByIndex(rowh[0])[0], row = rowLocationByIndex(rowh[1])[1], col_pre = colLocationByIndex(columnh[0])[0], col = colLocationByIndex(columnh[1])[1];
  91522. let formulaTxt = '<span dir="auto" class="luckysheet-formula-text-color">=</span><span dir="auto" class="luckysheet-formula-text-color">' + formula.toUpperCase() + '</span><span dir="auto" class="luckysheet-formula-text-color">(</span><span class="luckysheet-formula-functionrange-cell" rangeindex="0" dir="auto" style="color:' + luckyColor[0] + ';">' + getRangetxt(store_default.currentSheetIndex, {"row": rowh, "column": columnh}, store_default.currentSheetIndex) + '</span><span dir="auto" class="luckysheet-formula-text-color">)</span>';
  91523. $("#luckysheet-rich-text-editor").html(formulaTxt);
  91524. formula_default.israngeseleciton();
  91525. formula_default.rangestart = true;
  91526. formula_default.rangedrag_column_start = false;
  91527. formula_default.rangedrag_row_start = false;
  91528. formula_default.rangechangeindex = 0;
  91529. formula_default.rangeSetValue({"row": rowh, "column": columnh});
  91530. formula_default.func_selectedrange = {
  91531. "left": col_pre,
  91532. "width": col - col_pre - 1,
  91533. "top": row_pre,
  91534. "height": row - row_pre - 1,
  91535. "left_move": col_pre,
  91536. "width_move": col - col_pre - 1,
  91537. "top_move": row_pre,
  91538. "height_move": row - row_pre - 1,
  91539. "row": [row_index, row_index],
  91540. "column": [col_index, col_index]
  91541. };
  91542. $("#luckysheet-formula-functionrange-select").css({"left": col_pre, "width": col - col_pre - 1, "top": row_pre, "height": row - row_pre - 1}).show();
  91543. $("#luckysheet-formula-help-c").hide();
  91544. },
  91545. backFormulaInput: function(d, r2, c2, rowh, columnh, formula) {
  91546. let _this = this;
  91547. let f = "=" + formula.toUpperCase() + "(" + getRangetxt(store_default.currentSheetIndex, {"row": rowh, "column": columnh}, store_default.currentSheetIndex) + ")";
  91548. let v = formula_default.execfunction(f, r2, c2);
  91549. let value = {"v": v[1], "f": v[2]};
  91550. setcellvalue(r2, c2, d, value);
  91551. formula_default.execFunctionExist.push({"r": r2, "c": c2, "i": store_default.currentSheetIndex});
  91552. server_default.historyParam(d, store_default.currentSheetIndex, {"row": [r2, r2], "column": [c2, c2]});
  91553. },
  91554. checkNoNullValue: function(cell) {
  91555. let v = cell;
  91556. if (getObjType(v) == "object") {
  91557. v = v.v;
  91558. }
  91559. if (!isRealNull(v) && isdatatypemulti(v).num && (cell.ct == null || cell.ct.t == null || cell.ct.t == "n" || cell.ct.t == "g")) {
  91560. return true;
  91561. } else {
  91562. return false;
  91563. }
  91564. },
  91565. checkNoNullValueAll: function(cell) {
  91566. let v = cell;
  91567. if (getObjType(v) == "object") {
  91568. v = v.v;
  91569. }
  91570. if (!isRealNull(v)) {
  91571. return true;
  91572. } else {
  91573. return false;
  91574. }
  91575. },
  91576. getNoNullValue: function(d, st_x, ed, type) {
  91577. let _this = this;
  91578. let hasValueSum = 0, hasValueStart = null;
  91579. let nullNum = 0, nullTime = 0;
  91580. for (let r2 = ed - 1; r2 >= 0; r2--) {
  91581. let cell;
  91582. if (type == "c") {
  91583. cell = d[st_x][r2];
  91584. } else {
  91585. cell = d[r2][st_x];
  91586. }
  91587. if (_this.checkNoNullValue(cell)) {
  91588. hasValueSum++;
  91589. hasValueStart = r2;
  91590. } else if (cell == null || cell.v == null || cell.v == "") {
  91591. nullNum++;
  91592. if (nullNum >= 40) {
  91593. if (nullTime <= 0) {
  91594. nullTime = 1;
  91595. } else {
  91596. break;
  91597. }
  91598. }
  91599. } else {
  91600. break;
  91601. }
  91602. }
  91603. return hasValueStart;
  91604. },
  91605. singleFormulaInput: function(d, _index, fix, st_m, ed_m, formula, type, noNum, noNull) {
  91606. let _this = this;
  91607. if (type == null) {
  91608. type = "r";
  91609. }
  91610. if (noNum == null) {
  91611. noNum = true;
  91612. }
  91613. if (noNull == null) {
  91614. noNull = true;
  91615. }
  91616. let isNull = true, isNum = false;
  91617. for (let c2 = st_m; c2 <= ed_m; c2++) {
  91618. let cell = null;
  91619. if (type == "c") {
  91620. cell = d[c2][fix];
  91621. } else {
  91622. cell = d[fix][c2];
  91623. }
  91624. if (_this.checkNoNullValue(cell)) {
  91625. isNull = false;
  91626. isNum = true;
  91627. } else if (_this.checkNoNullValueAll(cell)) {
  91628. isNull = false;
  91629. }
  91630. }
  91631. if (isNull && noNull) {
  91632. let st_r_r = _this.getNoNullValue(d, _index, fix, type);
  91633. if (st_r_r == null) {
  91634. if (type == "c") {
  91635. _this.activeFormulaInput(_index, fix, null, null, formula, true);
  91636. } else {
  91637. _this.activeFormulaInput(fix, _index, null, null, formula, true);
  91638. }
  91639. } else {
  91640. if (_index == st_m) {
  91641. for (let c2 = st_m; c2 <= ed_m; c2++) {
  91642. let st_r_r2 = _this.getNoNullValue(d, c2, fix, type);
  91643. if (st_r_r2 == null) {
  91644. break;
  91645. }
  91646. if (type == "c") {
  91647. _this.backFormulaInput(d, c2, fix, [c2, c2], [st_r_r2, fix - 1], formula);
  91648. } else {
  91649. _this.backFormulaInput(d, fix, c2, [st_r_r2, fix - 1], [c2, c2], formula);
  91650. }
  91651. }
  91652. } else {
  91653. for (let c2 = ed_m; c2 >= st_m; c2--) {
  91654. let st_r_r2 = _this.getNoNullValue(d, c2, fix, type);
  91655. if (st_r_r2 == null) {
  91656. break;
  91657. }
  91658. if (type == "c") {
  91659. _this.backFormulaInput(d, c2, fix, [c2, c2], [st_r_r2, fix - 1], formula);
  91660. } else {
  91661. _this.backFormulaInput(d, fix, c2, [st_r_r2, fix - 1], [c2, c2], formula);
  91662. }
  91663. }
  91664. }
  91665. }
  91666. } else if (isNum && noNum) {
  91667. let cell = null;
  91668. if (type == "c") {
  91669. cell = d[ed_m + 1][fix];
  91670. } else {
  91671. cell = d[fix][ed_m + 1];
  91672. }
  91673. if (cell != null && cell.v != null && cell.v.toString().length > 0) {
  91674. let c2 = ed_m + 1;
  91675. if (type == "c") {
  91676. cell = d[ed_m + 1][fix];
  91677. } else {
  91678. cell = d[fix][ed_m + 1];
  91679. }
  91680. while (cell != null && cell.v != null && cell.v.toString().length > 0) {
  91681. c2++;
  91682. let len = null;
  91683. if (type == "c") {
  91684. len = d.length;
  91685. } else {
  91686. len = d[0].length;
  91687. }
  91688. if (c2 >= len) {
  91689. return;
  91690. }
  91691. if (type == "c") {
  91692. cell = d[c2][fix];
  91693. } else {
  91694. cell = d[fix][c2];
  91695. }
  91696. }
  91697. if (type == "c") {
  91698. _this.backFormulaInput(d, c2, fix, [st_m, ed_m], [fix, fix], formula);
  91699. } else {
  91700. _this.backFormulaInput(d, fix, c2, [fix, fix], [st_m, ed_m], formula);
  91701. }
  91702. } else {
  91703. if (type == "c") {
  91704. _this.backFormulaInput(d, ed_m + 1, fix, [st_m, ed_m], [fix, fix], formula);
  91705. } else {
  91706. _this.backFormulaInput(d, fix, ed_m + 1, [fix, fix], [st_m, ed_m], formula);
  91707. }
  91708. }
  91709. } else {
  91710. return true;
  91711. }
  91712. },
  91713. autoSelectionFormula: function(formula) {
  91714. let _this = this;
  91715. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  91716. let nullfindnum = 40;
  91717. let isfalse = true;
  91718. formula_default.execFunctionExist = [];
  91719. let execFormulaInput_c = function(d2, st_r, ed_r, st_c, ed_c, formula2) {
  91720. let st_c_c = _this.getNoNullValue(d2, st_r, ed_c, "c");
  91721. if (st_c_c == null) {
  91722. _this.activeFormulaInput(st_r, st_c, null, null, formula2, true);
  91723. } else {
  91724. _this.activeFormulaInput(st_r, st_c, [st_r, ed_r], [st_c_c, ed_c - 1], formula2);
  91725. }
  91726. };
  91727. let execFormulaInput = function(d2, st_r, ed_r, st_c, ed_c, formula2) {
  91728. let st_r_c = _this.getNoNullValue(d2, st_c, ed_r, "r");
  91729. if (st_r_c == null) {
  91730. execFormulaInput_c(d2, st_r, ed_r, st_c, ed_c, formula2);
  91731. } else {
  91732. _this.activeFormulaInput(st_r, st_c, [st_r_c, ed_r - 1], [st_c, ed_c], formula2);
  91733. }
  91734. };
  91735. for (let s = 0; s < store_default.luckysheet_select_save.length; s++) {
  91736. let st_r = store_default.luckysheet_select_save[s].row[0], ed_r = store_default.luckysheet_select_save[s].row[1];
  91737. let st_c = store_default.luckysheet_select_save[s].column[0], ed_c = store_default.luckysheet_select_save[s].column[1];
  91738. let row_index = store_default.luckysheet_select_save[s].row_focus, col_index = store_default.luckysheet_select_save[s].column_focus;
  91739. if (st_r == ed_r && st_c == ed_c) {
  91740. if (ed_r - 1 < 0 && ed_c - 1 < 0) {
  91741. _this.activeFormulaInput(st_r, st_c, null, null, formula, true);
  91742. return;
  91743. }
  91744. if (ed_r - 1 >= 0 && _this.checkNoNullValue(d[ed_r - 1][st_c])) {
  91745. execFormulaInput(d, st_r, ed_r, st_c, ed_c, formula);
  91746. } else if (ed_c - 1 >= 0 && _this.checkNoNullValue(d[st_r][ed_c - 1])) {
  91747. execFormulaInput_c(d, st_r, ed_r, st_c, ed_c, formula);
  91748. } else {
  91749. execFormulaInput(d, st_r, ed_r, st_c, ed_c, formula);
  91750. }
  91751. } else if (st_r == ed_r) {
  91752. isfalse = _this.singleFormulaInput(d, col_index, st_r, st_c, ed_c, formula, "r");
  91753. } else if (st_c == ed_c) {
  91754. isfalse = _this.singleFormulaInput(d, row_index, st_c, st_r, ed_r, formula, "c");
  91755. } else {
  91756. let r_false = true;
  91757. for (let r2 = st_r; r2 <= ed_r; r2++) {
  91758. r_false = _this.singleFormulaInput(d, col_index, r2, st_c, ed_c, formula, "r", true, false) && r_false;
  91759. }
  91760. let c_false = true;
  91761. for (let c2 = st_c; c2 <= ed_c; c2++) {
  91762. c_false = _this.singleFormulaInput(d, row_index, c2, st_r, ed_r, formula, "c", true, false) && c_false;
  91763. }
  91764. isfalse = !!r_false && !!c_false;
  91765. }
  91766. isfalse = isfalse && isfalse;
  91767. }
  91768. if (!isfalse) {
  91769. formula_default.execFunctionExist.reverse();
  91770. formula_default.execFunctionGroup(null, null, null, null, d);
  91771. jfrefreshgrid(d, store_default.luckysheet_select_save);
  91772. clearTimeout(store_default.jfcountfuncTimeout);
  91773. store_default.jfcountfuncTimeout = setTimeout(function() {
  91774. countfunc();
  91775. }, 500);
  91776. }
  91777. },
  91778. getStyleByCell: function(d, r2, c2) {
  91779. let _this = this;
  91780. let style = "";
  91781. let af_compute = alternateformat_default.getComputeMap();
  91782. let checksAF = alternateformat_default.checksAF(r2, c2, af_compute);
  91783. let cf_compute = conditionformat_default.getComputeMap();
  91784. let checksCF = conditionformat_default.checksCF(r2, c2, cf_compute);
  91785. const locale_fontarray = locale_default().fontarray;
  91786. let cell = d[r2][c2];
  91787. let ct = cell.ct, isInline = false;
  91788. if (isInlineStringCell(cell)) {
  91789. isInline = true;
  91790. }
  91791. for (let key in cell) {
  91792. let value = _this.checkstatus(d, r2, c2, key);
  91793. if (checksAF != null || checksCF != null && checksCF["cellColor"] != null) {
  91794. if (checksCF != null && checksCF["cellColor"] != null) {
  91795. style += "background: " + checksCF["cellColor"] + ";";
  91796. } else if (checksAF != null) {
  91797. style += "background: " + checksAF[1] + ";";
  91798. }
  91799. }
  91800. if (getObjType(value) == "object") {
  91801. continue;
  91802. }
  91803. if (key == "bg" || checksAF != null || checksCF != null && checksCF["cellColor"] != null) {
  91804. if (checksCF != null && checksCF["cellColor"] != null) {
  91805. style += "background: " + checksCF["cellColor"] + ";";
  91806. } else if (checksAF != null) {
  91807. style += "background: " + checksAF[1] + ";";
  91808. } else {
  91809. style += "background: " + value + ";";
  91810. }
  91811. }
  91812. if (key == "ht" && value != "1") {
  91813. if (value == "0") {
  91814. style += "text-align: center;";
  91815. } else if (value == "2") {
  91816. style += "text-align: right;";
  91817. }
  91818. }
  91819. if (key == "vt") {
  91820. if (value == "0") {
  91821. style += "vertical-align: middle;";
  91822. } else if (value == "1") {
  91823. style += "vertical-align: top;";
  91824. } else if (value == "2") {
  91825. style += "vertical-align: bottom;";
  91826. }
  91827. }
  91828. if (key == "un" && value) {
  91829. style += "text-decoration:underline;";
  91830. }
  91831. }
  91832. if (!isInline) {
  91833. style += getFontStyleByCell(cell, checksAF, checksCF);
  91834. }
  91835. return style;
  91836. },
  91837. fontSelectList: [],
  91838. defualtFont: ["Times New Roman", "Arial", "Tahoma", "Verdana", "\u5FAE\u8F6F\u96C5\u9ED1", "\u5B8B\u4F53", "\u9ED1\u4F53", "\u6977\u4F53", "\u4EFF\u5B8B", "\u65B0\u5B8B\u4F53", "\u534E\u6587\u65B0\u9B4F", "\u534E\u6587\u884C\u6977", "\u534E\u6587\u96B6\u4E66"],
  91839. addFontTolist: function(fontName) {
  91840. fontName = fontName.replace(/"/g, "").replace(/'/g, "");
  91841. let isNone = true;
  91842. for (let a = 0; a < this.fontSelectList.length; a++) {
  91843. let fItem = this.fontSelectList[a];
  91844. if (fItem.value == fontName) {
  91845. isNone = false;
  91846. break;
  91847. }
  91848. }
  91849. let _locale = locale_default();
  91850. const locale_fontjson = _locale.fontjson;
  91851. if (fontName in locale_fontjson) {
  91852. isNone = false;
  91853. }
  91854. if (isNone) {
  91855. let ret = {};
  91856. ret.value = fontName;
  91857. ret.index = this.fontSelectList.length;
  91858. ret.type = "userDefined";
  91859. ret.text = "<span class='luckysheet-mousedown-cancel' style='font-size:11px;font-family:" + fontName + "'>" + fontName + "</span>";
  91860. ret.example = "";
  91861. this.fontSelectList.push(ret);
  91862. let $menuButton = $("#luckysheet-icon-font-family-menuButton");
  91863. let itemset = this.createButtonMenu(this.fontSelectList);
  91864. $menuButton.html(itemset);
  91865. }
  91866. },
  91867. fontInitial: function(fontList) {
  91868. let itemdata = [];
  91869. const locale_fontarray = locale_default().fontarray;
  91870. for (let a = 0; a < locale_fontarray.length; a++) {
  91871. let fItem = locale_fontarray[a];
  91872. let ret = {};
  91873. ret.value = fItem;
  91874. ret.index = a;
  91875. ret.type = "inner";
  91876. ret.text = "<span class='luckysheet-mousedown-cancel' style='font-size:11px;font-family:" + fItem + "'>" + fItem + "</span>";
  91877. ret.example = "";
  91878. itemdata.push(ret);
  91879. }
  91880. if (fontList != null) {
  91881. for (let a = 0; a < fontList.length; a++) {
  91882. let fItem = fontList[a];
  91883. let ret = {};
  91884. ret.value = fItem.fontName;
  91885. ret.index = a;
  91886. ret.type = "userDefined";
  91887. ret.text = "<span class='luckysheet-mousedown-cancel' style='font-size:11px;font-family:" + fItem.fontName + "'>" + fItem.fontName + "</span>";
  91888. ret.example = "";
  91889. itemdata.push(ret);
  91890. if (document.fonts && !document.fonts.check("12px " + fItem.fontName)) {
  91891. if (fItem.url) {
  91892. const fontface = new FontFace(fItem.fontName, `url(${fItem.url})`);
  91893. document.fonts.add(fontface);
  91894. fontface.load();
  91895. }
  91896. }
  91897. }
  91898. document.fonts && document.fonts.ready.then(function() {
  91899. });
  91900. }
  91901. this.fontSelectList = itemdata;
  91902. }
  91903. };
  91904. menuButton_default = menuButton;
  91905. }
  91906. });
  91907. // src/utils/util.js
  91908. function common_extend(jsonbject1, jsonbject2) {
  91909. let resultJsonObject = {};
  91910. for (let attr in jsonbject1) {
  91911. resultJsonObject[attr] = jsonbject1[attr];
  91912. }
  91913. for (let attr in jsonbject2) {
  91914. if (jsonbject2[attr] == void 0) {
  91915. continue;
  91916. }
  91917. resultJsonObject[attr] = jsonbject2[attr];
  91918. }
  91919. return resultJsonObject;
  91920. }
  91921. function replaceHtml(temp, dataarry) {
  91922. return temp.replace(/\$\{([\w]+)\}/g, function(s1, s2) {
  91923. let s = dataarry[s2];
  91924. if (typeof s != "undefined") {
  91925. return s;
  91926. } else {
  91927. return s1;
  91928. }
  91929. });
  91930. }
  91931. function getObjType(obj) {
  91932. let toString2 = Object.prototype.toString;
  91933. let map = {
  91934. "[object Boolean]": "boolean",
  91935. "[object Number]": "number",
  91936. "[object String]": "string",
  91937. "[object Function]": "function",
  91938. "[object Array]": "array",
  91939. "[object Date]": "date",
  91940. "[object RegExp]": "regExp",
  91941. "[object Undefined]": "undefined",
  91942. "[object Null]": "null",
  91943. "[object Object]": "object"
  91944. };
  91945. return map[toString2.call(obj)];
  91946. }
  91947. function getNowDateTime(format) {
  91948. let now = new Date();
  91949. let year = now.getFullYear();
  91950. let month = now.getMonth();
  91951. let date = now.getDate();
  91952. let day = now.getDay();
  91953. let hour = now.getHours();
  91954. let minu = now.getMinutes();
  91955. let sec = now.getSeconds();
  91956. month = month + 1;
  91957. if (month < 10)
  91958. month = "0" + month;
  91959. if (date < 10)
  91960. date = "0" + date;
  91961. if (hour < 10)
  91962. hour = "0" + hour;
  91963. if (minu < 10)
  91964. minu = "0" + minu;
  91965. if (sec < 10)
  91966. sec = "0" + sec;
  91967. let time = "";
  91968. if (format == 1) {
  91969. time = year + "-" + month + "-" + date;
  91970. } else if (format == 2) {
  91971. time = year + "-" + month + "-" + date + " " + hour + ":" + minu + ":" + sec;
  91972. }
  91973. return time;
  91974. }
  91975. function rgbTohex(color) {
  91976. let rgb;
  91977. if (color.indexOf("rgba") > -1) {
  91978. rgb = color.replace("rgba(", "").replace(")", "").split(",");
  91979. } else {
  91980. rgb = color.replace("rgb(", "").replace(")", "").split(",");
  91981. }
  91982. let r2 = parseInt(rgb[0]);
  91983. let g = parseInt(rgb[1]);
  91984. let b = parseInt(rgb[2]);
  91985. let hex = "#" + ((1 << 24) + (r2 << 16) + (g << 8) + b).toString(16).slice(1);
  91986. return hex;
  91987. }
  91988. function ABCatNum(a) {
  91989. if (a == null || a.length == 0) {
  91990. return NaN;
  91991. }
  91992. var str = a.toLowerCase().split("");
  91993. var num = 0;
  91994. var al = str.length;
  91995. var getCharNumber = function(charx) {
  91996. return charx.charCodeAt() - 96;
  91997. };
  91998. var numout = 0;
  91999. var charnum = 0;
  92000. for (var i2 = 0; i2 < al; i2++) {
  92001. charnum = getCharNumber(str[i2]);
  92002. numout += charnum * Math.pow(26, al - i2 - 1);
  92003. }
  92004. ;
  92005. if (numout == 0) {
  92006. return NaN;
  92007. }
  92008. return numout - 1;
  92009. }
  92010. function chatatABC(n) {
  92011. var orda = "a".charCodeAt(0);
  92012. var ordz = "z".charCodeAt(0);
  92013. var len = ordz - orda + 1;
  92014. var s = "";
  92015. while (n >= 0) {
  92016. s = String.fromCharCode(n % len + orda) + s;
  92017. n = Math.floor(n / len) - 1;
  92018. }
  92019. return s.toUpperCase();
  92020. }
  92021. function getByteLen(val, subLen) {
  92022. if (subLen === 0) {
  92023. return "";
  92024. }
  92025. if (val == null) {
  92026. return 0;
  92027. }
  92028. let len = 0;
  92029. for (let i2 = 0; i2 < val.length; i2++) {
  92030. let a = val.charAt(i2);
  92031. if (a.match(/[^\x00-\xff]/ig) != null) {
  92032. len += 2;
  92033. } else {
  92034. len += 1;
  92035. }
  92036. if (isRealNum(subLen) && len === ~~subLen) {
  92037. return val.substring(0, i2);
  92038. }
  92039. }
  92040. return len;
  92041. }
  92042. function ArrayUnique(dataArr) {
  92043. let result = [];
  92044. let obj = {};
  92045. if (dataArr.length > 0) {
  92046. for (let i2 = 0; i2 < dataArr.length; i2++) {
  92047. let item2 = dataArr[i2];
  92048. if (!obj[item2]) {
  92049. result.push(item2);
  92050. obj[item2] = 1;
  92051. }
  92052. }
  92053. }
  92054. return result;
  92055. }
  92056. function luckysheetfontformat(format) {
  92057. let fontarray = locale_default().fontarray;
  92058. if (getObjType(format) == "object") {
  92059. let font = "";
  92060. if (format.it == "0" || format.it == null) {
  92061. font += "normal ";
  92062. } else {
  92063. font += "italic ";
  92064. }
  92065. font += "normal ";
  92066. if (format.bl == "0" || format.bl == null) {
  92067. font += "normal ";
  92068. } else {
  92069. font += "bold ";
  92070. }
  92071. if (!format.fs) {
  92072. font += store_default.defaultFontSize + "pt ";
  92073. } else {
  92074. font += Math.ceil(format.fs) + "pt ";
  92075. }
  92076. if (!format.ff) {
  92077. font += fontarray[0] + ', "Helvetica Neue", Helvetica, Arial, "PingFang SC", "Hiragino Sans GB", "Heiti SC", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif';
  92078. } else {
  92079. let fontfamily = null;
  92080. let fontjson = locale_default().fontjson;
  92081. if (isdatatypemulti(format.ff)["num"]) {
  92082. fontfamily = fontarray[parseInt(format.ff)];
  92083. } else {
  92084. fontfamily = format.ff;
  92085. fontfamily = fontfamily.replace(/"/g, "").replace(/'/g, "");
  92086. if (fontfamily.indexOf(" ") > -1) {
  92087. fontfamily = '"' + fontfamily + '"';
  92088. }
  92089. if (fontfamily != null && document.fonts && !document.fonts.check("12px " + fontfamily)) {
  92090. menuButton_default.addFontTolist(fontfamily);
  92091. }
  92092. }
  92093. if (fontfamily == null) {
  92094. fontfamily = fontarray[0];
  92095. }
  92096. font += fontfamily + ', "Helvetica Neue", Helvetica, Arial, "PingFang SC", "Hiragino Sans GB", "Heiti SC", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif';
  92097. }
  92098. return font;
  92099. } else {
  92100. return luckysheetdefaultFont();
  92101. }
  92102. }
  92103. function showrightclickmenu($menu, x, y) {
  92104. let winH = $(window).height(), winW = $(window).width();
  92105. let menuW = $menu.width(), menuH = $menu.height();
  92106. let top = y, left = x;
  92107. if (x + menuW > winW) {
  92108. left = x - menuW;
  92109. }
  92110. if (y + menuH > winH) {
  92111. top = y - menuH;
  92112. }
  92113. if (top < 0) {
  92114. top = 0;
  92115. }
  92116. $menu.css({"top": top, "left": left}).show();
  92117. }
  92118. function luckysheetactiveCell() {
  92119. if (!!store_default.fullscreenmode) {
  92120. setTimeout(function() {
  92121. const input = document.getElementById("luckysheet-rich-text-editor");
  92122. input.focus({preventScroll: true});
  92123. $("#luckysheet-rich-text-editor").select();
  92124. }, 50);
  92125. }
  92126. }
  92127. function luckysheetContainerFocus() {
  92128. document.getElementById(store_default.container).focus({preventScroll: true});
  92129. }
  92130. function numFormat2(num, type) {
  92131. if (num == null || isNaN(parseFloat(num)) || hasChinaword(num) || num == -Infinity || num == Infinity) {
  92132. return null;
  92133. }
  92134. let floatlen = 6, ismustfloat = false;
  92135. if (type == null || type == "auto") {
  92136. if (num < 1) {
  92137. floatlen = 6;
  92138. } else {
  92139. floatlen = 1;
  92140. }
  92141. } else {
  92142. if (isdatatype(type) == "num") {
  92143. floatlen = parseInt(type);
  92144. ismustfloat = true;
  92145. } else {
  92146. floatlen = 6;
  92147. }
  92148. }
  92149. let format = "", value = null;
  92150. for (let i2 = 0; i2 < floatlen; i2++) {
  92151. format += "0";
  92152. }
  92153. if (!ismustfloat) {
  92154. format = "[" + format + "]";
  92155. }
  92156. if (num >= 1e21) {
  92157. value = parseFloat((0, import_numeral5.default)(num).value());
  92158. } else {
  92159. value = parseFloat((0, import_numeral5.default)(num).format("0." + format));
  92160. }
  92161. return value;
  92162. }
  92163. function numfloatlen(n) {
  92164. if (n != null && !isNaN(parseFloat(n)) && !hasChinaword(n)) {
  92165. let value = (0, import_numeral5.default)(n).value();
  92166. let lens = value.toString().split(".");
  92167. if (lens.length == 1) {
  92168. lens = 0;
  92169. } else {
  92170. lens = lens[1].length;
  92171. }
  92172. return lens;
  92173. } else {
  92174. return null;
  92175. }
  92176. }
  92177. function mouseclickposition($menu, x, y, p) {
  92178. let winH = $(window).height(), winW = $(window).width();
  92179. let menuW = $menu.width(), menuH = $menu.height();
  92180. let top = y, left = x;
  92181. if (p == null) {
  92182. p = "lefttop";
  92183. }
  92184. if (p == "lefttop") {
  92185. $menu.css({"top": y, "left": x}).show();
  92186. } else if (p == "righttop") {
  92187. $menu.css({"top": y, "left": x - menuW}).show();
  92188. } else if (p == "leftbottom") {
  92189. $menu.css({"bottom": winH - y - 12, "left": x}).show();
  92190. } else if (p == "rightbottom") {
  92191. $menu.css({"bottom": winH - y - 12, "left": x - menuW}).show();
  92192. }
  92193. }
  92194. function $$(selector, context) {
  92195. context = context || document;
  92196. var elements = context.querySelectorAll(selector);
  92197. return elements.length == 1 ? Array.prototype.slice.call(elements)[0] : Array.prototype.slice.call(elements);
  92198. }
  92199. function seriesLoadScripts(scripts, options, callback) {
  92200. if (typeof scripts !== "object") {
  92201. var scripts = [scripts];
  92202. }
  92203. var HEAD = document.getElementsByTagName("head")[0] || document.documentElement;
  92204. var s = [];
  92205. var last = scripts.length - 1;
  92206. var recursiveLoad = function(i2) {
  92207. s[i2] = document.createElement("script");
  92208. s[i2].setAttribute("type", "text/javascript");
  92209. s[i2].onload = s[i2].onreadystatechange = function() {
  92210. if (true) {
  92211. this.onload = this.onreadystatechange = null;
  92212. this.parentNode.removeChild(this);
  92213. if (i2 !== last) {
  92214. recursiveLoad(i2 + 1);
  92215. } else if (typeof callback === "function") {
  92216. callback();
  92217. }
  92218. ;
  92219. }
  92220. };
  92221. s[i2].setAttribute("src", scripts[i2]);
  92222. if (typeof options === "object") {
  92223. for (var attr in options) {
  92224. s[i2].setAttribute(attr, options[attr]);
  92225. }
  92226. }
  92227. HEAD.appendChild(s[i2]);
  92228. };
  92229. recursiveLoad(0);
  92230. }
  92231. function loadLink(url) {
  92232. var doc = document;
  92233. var link = doc.createElement("link");
  92234. link.setAttribute("rel", "stylesheet");
  92235. link.setAttribute("type", "text/css");
  92236. link.setAttribute("href", url);
  92237. var heads = doc.getElementsByTagName("head");
  92238. if (heads.length) {
  92239. heads[0].appendChild(link);
  92240. } else {
  92241. doc.documentElement.appendChild(link);
  92242. }
  92243. }
  92244. function loadLinks(urls) {
  92245. if (typeof urls !== "object") {
  92246. urls = [urls];
  92247. }
  92248. if (urls.length) {
  92249. urls.forEach((url) => {
  92250. loadLink(url);
  92251. });
  92252. }
  92253. }
  92254. function transformRangeToAbsolute(txt1) {
  92255. if (txt1 == null || txt1.length == 0) {
  92256. return null;
  92257. }
  92258. let txtArray = txt1.split(",");
  92259. let ret = "";
  92260. for (let i2 = 0; i2 < txtArray.length; i2++) {
  92261. let txt = txtArray[i2];
  92262. let txtSplit = txt.split("!"), sheetName = "", rangeTxt = "";
  92263. if (txtSplit.length > 1) {
  92264. sheetName = txtSplit[0];
  92265. rangeTxt = txtSplit[1];
  92266. } else {
  92267. rangeTxt = txtSplit[0];
  92268. }
  92269. let rangeTxtArray = rangeTxt.split(":");
  92270. let rangeRet = "";
  92271. for (let a = 0; a < rangeTxtArray.length; a++) {
  92272. let t = rangeTxtArray[a];
  92273. let row = t.replace(/[^0-9]/g, "");
  92274. let col = t.replace(/[^A-Za-z]/g, "");
  92275. let rangeTT = "";
  92276. if (col != "") {
  92277. rangeTT += "$" + col;
  92278. }
  92279. if (row != "") {
  92280. rangeTT += "$" + row;
  92281. }
  92282. rangeRet += rangeTT + ":";
  92283. }
  92284. rangeRet = rangeRet.substr(0, rangeRet.length - 1);
  92285. ret += sheetName + rangeRet + ",";
  92286. }
  92287. return ret.substr(0, ret.length - 1);
  92288. }
  92289. function openSelfModel(id, isshowMask = true) {
  92290. let $t = $("#" + id).find(".luckysheet-modal-dialog-content").css("min-width", 300).end(), myh = $t.outerHeight(), myw = $t.outerWidth();
  92291. let winw = $(window).width(), winh = $(window).height();
  92292. let scrollLeft = $(document).scrollLeft(), scrollTop = $(document).scrollTop();
  92293. $t.css({
  92294. "left": (winw + scrollLeft - myw) / 2,
  92295. "top": (winh + scrollTop - myh) / 3
  92296. }).show();
  92297. if (isshowMask) {
  92298. $("#luckysheet-modal-dialog-mask").show();
  92299. }
  92300. }
  92301. function defineObjectReactive(obj, key, value, callback) {
  92302. obj[key] = new Proxy(value, {
  92303. set(target, property, val, receiver) {
  92304. setTimeout(() => {
  92305. callback(target, property, val, receiver);
  92306. }, 0);
  92307. return Reflect.set(target, property, val, receiver);
  92308. }
  92309. });
  92310. }
  92311. function defineBasicReactive(obj, key, value, callback) {
  92312. Object.defineProperty(obj, key, {
  92313. enumerable: true,
  92314. configurable: false,
  92315. get() {
  92316. return value;
  92317. },
  92318. set(newValue) {
  92319. if (value === newValue)
  92320. return;
  92321. console.log(`\u53D1\u73B0 ${key} \u5C5E\u6027 ${value} -> ${newValue}`);
  92322. setTimeout(() => {
  92323. callback(value, newValue);
  92324. }, 0);
  92325. value = newValue;
  92326. }
  92327. });
  92328. }
  92329. function arrayRemoveItem(array, item2) {
  92330. array.some((curr, index2, arr) => {
  92331. if (curr === item2) {
  92332. arr.splice(index2, 1);
  92333. return curr === item2;
  92334. }
  92335. });
  92336. }
  92337. function camel2split(camel) {
  92338. return camel.replace(/([A-Z])/g, function(all2, group) {
  92339. return "-" + group.toLowerCase();
  92340. });
  92341. }
  92342. var import_numeral5, createProxy;
  92343. var init_util = __esm({
  92344. "src/utils/util.js"() {
  92345. init_constant();
  92346. init_menuButton();
  92347. init_datecontroll();
  92348. init_validate();
  92349. init_store();
  92350. init_locale();
  92351. import_numeral5 = __toModule(require_numeral());
  92352. createProxy = (data, k, callback) => {
  92353. if (!data.hasOwnProperty(k)) {
  92354. console.info("No %s in data", k);
  92355. return;
  92356. }
  92357. ;
  92358. if (getObjType(data) === "object") {
  92359. if (getObjType(data[k]) === "object" || getObjType(data[k]) === "array") {
  92360. defineObjectReactive(data, k, data[k], callback);
  92361. } else {
  92362. defineBasicReactive(data, k, data[k], callback);
  92363. }
  92364. }
  92365. };
  92366. }
  92367. });
  92368. // src/controllers/mobile.js
  92369. function mobileinit() {
  92370. store_default.cellMainSrollBarSize = 0;
  92371. let luckysheet_touchmove_status = false, luckysheet_touchmove_startPos = {}, luckysheet_touchhandle_status = false, _scrollTimer = null;
  92372. $(document).on("touchstart", "#luckysheet-grid-window-1", function(event2) {
  92373. clearInterval(_scrollTimer);
  92374. luckysheet_touchmove_status = true;
  92375. let touch = event2.originalEvent.targetTouches[0];
  92376. luckysheet_touchmove_startPos = {
  92377. x: touch.pageX,
  92378. y: touch.pageY,
  92379. vy: 0,
  92380. moveType: "y"
  92381. };
  92382. });
  92383. $(document).on("touchmove", "#luckysheet-grid-window-1", function(event2) {
  92384. if (event2.originalEvent.targetTouches.length > 1 || event2.scale && event2.scale !== 1) {
  92385. return;
  92386. }
  92387. let touch = event2.originalEvent.targetTouches[0];
  92388. if (luckysheet_touchmove_status) {
  92389. let slideX = touch.pageX - luckysheet_touchmove_startPos.x;
  92390. let slideY = touch.pageY - luckysheet_touchmove_startPos.y;
  92391. luckysheet_touchmove_startPos.x = touch.pageX;
  92392. luckysheet_touchmove_startPos.y = touch.pageY;
  92393. let scrollLeft = $("#luckysheet-scrollbar-x").scrollLeft();
  92394. let scrollTop = $("#luckysheet-scrollbar-y").scrollTop();
  92395. scrollLeft -= slideX;
  92396. scrollTop -= slideY;
  92397. if (scrollLeft < 0) {
  92398. scrollLeft = 0;
  92399. }
  92400. if (scrollTop < 0) {
  92401. scrollTop = 0;
  92402. }
  92403. $("#luckysheet-scrollbar-y").scrollTop(scrollTop);
  92404. luckysheet_touchmove_startPos.vy_y = slideY;
  92405. luckysheet_touchmove_startPos.scrollTop = scrollTop;
  92406. $("#luckysheet-scrollbar-x").scrollLeft(scrollLeft);
  92407. luckysheet_touchmove_startPos.vy_x = slideX;
  92408. luckysheet_touchmove_startPos.scrollLeft = scrollLeft;
  92409. } else if (luckysheet_touchhandle_status) {
  92410. let mouse = mouseposition(touch.pageX, touch.pageY);
  92411. let x = mouse[0] + $("#luckysheet-cell-main").scrollLeft();
  92412. let y = mouse[1] + $("#luckysheet-cell-main").scrollTop();
  92413. let row_location = rowLocation(y), row = row_location[1], row_pre = row_location[0], row_index = row_location[2];
  92414. let col_location = colLocation(x), col = col_location[1], col_pre = col_location[0], col_index = col_location[2];
  92415. let last = $.extend(true, {}, store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1]);
  92416. let top = 0, height = 0, rowseleted = [];
  92417. if (last.top > row_pre) {
  92418. top = row_pre;
  92419. height = last.top + last.height - row_pre;
  92420. if (last.row[1] > last.row_focus) {
  92421. last.row[1] = last.row_focus;
  92422. }
  92423. rowseleted = [row_index, last.row[1]];
  92424. } else if (last.top == row_pre) {
  92425. top = row_pre;
  92426. height = last.top + last.height - row_pre;
  92427. rowseleted = [row_index, last.row[0]];
  92428. } else {
  92429. top = last.top;
  92430. height = row - last.top - 1;
  92431. if (last.row[0] < last.row_focus) {
  92432. last.row[0] = last.row_focus;
  92433. }
  92434. rowseleted = [last.row[0], row_index];
  92435. }
  92436. let left = 0, width = 0, columnseleted = [];
  92437. if (last.left > col_pre) {
  92438. left = col_pre;
  92439. width = last.left + last.width - col_pre;
  92440. if (last.column[1] > last.column_focus) {
  92441. last.column[1] = last.column_focus;
  92442. }
  92443. columnseleted = [col_index, last.column[1]];
  92444. } else if (last.left == col_pre) {
  92445. left = col_pre;
  92446. width = last.left + last.width - col_pre;
  92447. columnseleted = [col_index, last.column[0]];
  92448. } else {
  92449. left = last.left;
  92450. width = col - last.left - 1;
  92451. if (last.column[0] < last.column_focus) {
  92452. last.column[0] = last.column_focus;
  92453. }
  92454. columnseleted = [last.column[0], col_index];
  92455. }
  92456. let changeparam = menuButton_default.mergeMoveMain(columnseleted, rowseleted, last, top, height, left, width);
  92457. if (changeparam != null) {
  92458. columnseleted = changeparam[0];
  92459. rowseleted = changeparam[1];
  92460. top = changeparam[2];
  92461. height = changeparam[3];
  92462. left = changeparam[4];
  92463. width = changeparam[5];
  92464. }
  92465. last["row"] = rowseleted;
  92466. last["column"] = columnseleted;
  92467. last["left_move"] = left;
  92468. last["width_move"] = width;
  92469. last["top_move"] = top;
  92470. last["height_move"] = height;
  92471. store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1] = last;
  92472. selectHightlightShow();
  92473. freezen_default.scrollFreezen();
  92474. }
  92475. event2.stopPropagation();
  92476. });
  92477. $(document).on("touchend", function(event2) {
  92478. if (luckysheet_touchmove_status) {
  92479. let vy_x = Math.abs(luckysheet_touchmove_startPos.vy_x), friction_x = ((vy_x >> 31) * 2 + 1) * 0.25;
  92480. let vy_y = Math.abs(luckysheet_touchmove_startPos.vy_y), friction_y = ((vy_y >> 31) * 2 + 1) * 0.25;
  92481. if (vy_x > 0 || vy_y > 0) {
  92482. _scrollTimer = setInterval(function() {
  92483. vy_x -= friction_x;
  92484. vy_y -= friction_y;
  92485. if (vy_x <= 0) {
  92486. vy_x = 0;
  92487. }
  92488. if (vy_y <= 0) {
  92489. vy_y = 0;
  92490. }
  92491. if (luckysheet_touchmove_startPos.vy_y > 0) {
  92492. luckysheet_touchmove_startPos.scrollTop -= vy_y;
  92493. } else {
  92494. luckysheet_touchmove_startPos.scrollTop += vy_y;
  92495. }
  92496. $("#luckysheet-scrollbar-y").scrollTop(luckysheet_touchmove_startPos.scrollTop);
  92497. if (luckysheet_touchmove_startPos.vy_x > 0) {
  92498. luckysheet_touchmove_startPos.scrollLeft -= vy_x;
  92499. } else {
  92500. luckysheet_touchmove_startPos.scrollLeft += vy_x;
  92501. }
  92502. $("#luckysheet-scrollbar-x").scrollLeft(luckysheet_touchmove_startPos.scrollLeft);
  92503. if (vy_x <= 0 && vy_y <= 0) {
  92504. clearInterval(_scrollTimer);
  92505. }
  92506. }, 20);
  92507. }
  92508. }
  92509. luckysheet_touchmove_status = false;
  92510. luckysheet_touchhandle_status = false;
  92511. });
  92512. $(document).on("touchstart", ".luckysheet-cs-touchhandle", function(event2) {
  92513. luckysheet_touchhandle_status = true;
  92514. luckysheet_touchmove_status = false;
  92515. event2.stopPropagation();
  92516. });
  92517. document.addEventListener("touchmove", function(event2) {
  92518. event2.preventDefault();
  92519. }, {
  92520. passive: false
  92521. });
  92522. }
  92523. var init_mobile = __esm({
  92524. "src/controllers/mobile.js"() {
  92525. init_location();
  92526. init_select();
  92527. init_menuButton();
  92528. init_freezen();
  92529. init_store();
  92530. }
  92531. });
  92532. // src/controllers/splitColumn.js
  92533. var luckysheetSplitColumn, splitColumn_default;
  92534. var init_splitColumn = __esm({
  92535. "src/controllers/splitColumn.js"() {
  92536. init_util();
  92537. init_constant();
  92538. init_select();
  92539. init_tooltip();
  92540. init_editor();
  92541. init_setdata();
  92542. init_getdata();
  92543. init_refresh();
  92544. init_store();
  92545. init_locale();
  92546. luckysheetSplitColumn = {
  92547. createDialog: function() {
  92548. let _this = this;
  92549. const _locale = locale_default();
  92550. const locale_splitText = _locale.splitText;
  92551. const locale_punctuation = _locale.punctuation;
  92552. const locale_button = _locale.button;
  92553. $("#luckysheet-modal-dialog-mask").show();
  92554. $("#luckysheet-splitColumn-dialog").remove();
  92555. let content = '<div class="box"><div class="boxTitle">' + locale_splitText.splitDelimiters + '</div><div class="boxMain"><div style="height: 22px;line-height: 22px;"><input id="splitColumn_type_01" type="checkbox"/><label for="splitColumn_type_01">' + locale_punctuation.tab + '</label></div><div style="height: 22px;line-height: 22px;"><input id="splitColumn_type_02" type="checkbox"/><label for="splitColumn_type_02">' + locale_punctuation.semicolon + '</label></div><div style="height: 22px;line-height: 22px;"><input id="splitColumn_type_03" type="checkbox"/><label for="splitColumn_type_03">' + locale_punctuation.comma + '</label></div><div style="height: 22px;line-height: 22px;"><input id="splitColumn_type_04" type="checkbox"/><label for="splitColumn_type_04">' + locale_punctuation.space + '</label></div><div style="height: 22px;line-height: 22px;"><input id="splitColumn_type_05" type="checkbox"/><label for="splitColumn_type_05">' + locale_splitText.splitOther + '</label><input type="text" class="formulaInputFocus" maxlength="1"/></div></div><div style="height: 22px;line-height: 22px;"><input id="splitColumn_type_06" type="checkbox"/><label for="splitColumn_type_06">' + locale_splitText.splitContinueSymbol + '</label></div><div class="boxTitle" style="margin-top: 10px;">' + locale_splitText.splitDataPreview + '</div><div class="boxMain" id="splitColumnData"></div></div>';
  92556. $("body").append(replaceHtml(modelHTML, {
  92557. "id": "luckysheet-splitColumn-dialog",
  92558. "addclass": "luckysheet-splitColumn-dialog",
  92559. "title": locale_splitText.splitTextTitle,
  92560. "content": content,
  92561. "botton": '<button id="luckysheet-splitColumn-dialog-confirm" class="btn btn-primary">' + locale_button.confirm + '</button><button class="btn btn-default luckysheet-model-close-btn">' + locale_button.cancel + "</button>",
  92562. "style": "z-index:100003"
  92563. }));
  92564. let $t = $("#luckysheet-splitColumn-dialog").find(".luckysheet-modal-dialog-content").css("min-width", 400).end(), myh = $t.outerHeight(), myw = $t.outerWidth();
  92565. let winw = $(window).width(), winh = $(window).height();
  92566. let scrollLeft = $(document).scrollLeft(), scrollTop = $(document).scrollTop();
  92567. $("#luckysheet-splitColumn-dialog").css({"left": (winw + scrollLeft - myw) / 2, "top": (winh + scrollTop - myh) / 3}).show();
  92568. let dataArr = _this.getDataArr();
  92569. _this.dataPreview(dataArr);
  92570. },
  92571. init: function() {
  92572. let _this = this;
  92573. const _locale = locale_default();
  92574. const locale_splitText = _locale.splitText;
  92575. $(document).off("change.SPCinpcheckbox").on("change.SPCcheckbox", "#luckysheet-splitColumn-dialog .box input[type='checkbox']", function() {
  92576. let regStr = _this.getRegStr();
  92577. let dataArr = _this.getDataArr(regStr);
  92578. _this.dataPreview(dataArr);
  92579. });
  92580. $(document).off("keyup.SPCinptext").on("keyup.SPCinptext", "#luckysheet-splitColumn-dialog .box input[type='text']", function() {
  92581. if ($(this).siblings("input[type='checkbox']").is(":checked")) {
  92582. let regStr = _this.getRegStr();
  92583. let dataArr = _this.getDataArr(regStr);
  92584. _this.dataPreview(dataArr);
  92585. }
  92586. });
  92587. $(document).off("click.SPCconfirm").on("click.SPCconfirm", "#luckysheet-splitColumn-dialog #luckysheet-splitColumn-dialog-confirm", function() {
  92588. $("#luckysheet-modal-dialog-mask").hide();
  92589. $("#luckysheet-splitColumn-dialog").hide();
  92590. let regStr = _this.getRegStr();
  92591. let dataArr = _this.getDataArr(regStr);
  92592. let r2 = store_default.luckysheet_select_save[0].row[0];
  92593. let c2 = store_default.luckysheet_select_save[0].column[0];
  92594. if (dataArr[0].length == 1) {
  92595. return;
  92596. }
  92597. let dataCover = false;
  92598. for (let i2 = 0; i2 < dataArr.length; i2++) {
  92599. for (let j = 1; j < dataArr[0].length; j++) {
  92600. let cell = store_default.flowdata[r2 + i2][c2 + j];
  92601. if (cell != null && cell.v != null) {
  92602. dataCover = true;
  92603. break;
  92604. }
  92605. }
  92606. }
  92607. if (dataCover) {
  92608. let func1 = function() {
  92609. _this.update(r2, c2, dataArr);
  92610. };
  92611. tooltip_default.confirm("", locale_splitText.splitConfirmToExe, func1);
  92612. } else {
  92613. _this.update(r2, c2, dataArr);
  92614. }
  92615. });
  92616. },
  92617. update: function(r2, c2, dataArr) {
  92618. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  92619. for (let i2 = 0; i2 < dataArr.length; i2++) {
  92620. for (let j = 0; j < dataArr[0].length; j++) {
  92621. let v = dataArr[i2][j];
  92622. setcellvalue(r2 + i2, c2 + j, d, v);
  92623. }
  92624. }
  92625. let st_r = store_default.luckysheet_select_save[0].row[0], st_c = store_default.luckysheet_select_save[0].column[0];
  92626. let range2 = [{"row": [st_r, st_r + dataArr.length - 1], "column": [st_c, st_c + dataArr[0].length - 1]}];
  92627. jfrefreshgrid(d, range2);
  92628. selectHightlightShow();
  92629. },
  92630. dataPreview: function(dataArr) {
  92631. $("#luckysheet-splitColumn-dialog #splitColumnData").empty();
  92632. let trHtml = "";
  92633. for (let i2 = 0; i2 < dataArr.length; i2++) {
  92634. let tdHtml = "";
  92635. for (let j = 0; j < dataArr[0].length; j++) {
  92636. tdHtml += "<td>" + dataArr[i2][j] + "</td>";
  92637. }
  92638. trHtml += "<tr>" + tdHtml + "</tr>";
  92639. }
  92640. let tableHtml = "<table>" + trHtml + "</table>";
  92641. $("#luckysheet-splitColumn-dialog #splitColumnData").append(tableHtml);
  92642. },
  92643. getRegStr: function() {
  92644. let regStr = "", mark = 0;
  92645. $("#luckysheet-splitColumn-dialog .box input[type='checkbox']:checked").each(function(i2, e) {
  92646. let $id = $(e).attr("id");
  92647. if ($id == "splitColumn_type_01") {
  92648. regStr += "\\t";
  92649. mark++;
  92650. } else if ($id == "splitColumn_type_02") {
  92651. if (mark > 0) {
  92652. regStr += "|";
  92653. }
  92654. regStr += ";";
  92655. mark++;
  92656. } else if ($id == "splitColumn_type_03") {
  92657. if (mark > 0) {
  92658. regStr += "|";
  92659. }
  92660. regStr += ",";
  92661. mark++;
  92662. } else if ($id == "splitColumn_type_04") {
  92663. if (mark > 0) {
  92664. regStr += "|";
  92665. }
  92666. regStr += "\\s";
  92667. mark++;
  92668. } else if ($id == "splitColumn_type_05") {
  92669. let txt = $(e).siblings("input[type='text']").val().trim();
  92670. if (txt != "") {
  92671. if (mark > 0) {
  92672. regStr += "|";
  92673. }
  92674. regStr += txt;
  92675. }
  92676. } else if ($id == "splitColumn_type_06") {
  92677. regStr = "[" + regStr + "]+";
  92678. }
  92679. });
  92680. return regStr;
  92681. },
  92682. getDataArr: function(regStr) {
  92683. let _this = this;
  92684. let arr = [];
  92685. let r1 = store_default.luckysheet_select_save[0].row[0];
  92686. let r2 = store_default.luckysheet_select_save[0].row[1];
  92687. let c2 = store_default.luckysheet_select_save[0].column[0];
  92688. if (regStr != null && regStr != "") {
  92689. let reg = new RegExp(regStr, "g");
  92690. let dataArr = [];
  92691. for (let r3 = r1; r3 <= r2; r3++) {
  92692. let rowArr = [];
  92693. let cell = store_default.flowdata[r3][c2];
  92694. let value;
  92695. if (cell != null && cell["m"] != null) {
  92696. value = cell["m"];
  92697. } else {
  92698. value = getcellvalue(r3, c2, store_default.flowdata);
  92699. }
  92700. if (value == null) {
  92701. value = "";
  92702. }
  92703. rowArr = value.toString().split(reg);
  92704. dataArr.push(rowArr);
  92705. }
  92706. let rlen = dataArr.length;
  92707. let clen = 0;
  92708. for (let i2 = 0; i2 < rlen; i2++) {
  92709. if (dataArr[i2].length > clen) {
  92710. clen = dataArr[i2].length;
  92711. }
  92712. }
  92713. arr = _this.getNullData(rlen, clen);
  92714. for (let i2 = 0; i2 < arr.length; i2++) {
  92715. for (let j = 0; j < arr[0].length; j++) {
  92716. if (dataArr[i2][j] != null) {
  92717. arr[i2][j] = dataArr[i2][j];
  92718. }
  92719. }
  92720. }
  92721. } else {
  92722. for (let r3 = r1; r3 <= r2; r3++) {
  92723. let rowArr = [];
  92724. let cell = store_default.flowdata[r3][c2];
  92725. let value;
  92726. if (cell != null && cell["m"] != null) {
  92727. value = cell["m"];
  92728. } else {
  92729. value = getcellvalue(r3, c2, store_default.flowdata);
  92730. }
  92731. if (value == null) {
  92732. value = "";
  92733. }
  92734. rowArr.push(value);
  92735. arr.push(rowArr);
  92736. }
  92737. }
  92738. return arr;
  92739. },
  92740. getNullData: function(rlen, clen) {
  92741. let arr = [];
  92742. for (let r2 = 0; r2 < rlen; r2++) {
  92743. let rowArr = [];
  92744. for (let c2 = 0; c2 < clen; c2++) {
  92745. rowArr.push("");
  92746. }
  92747. arr.push(rowArr);
  92748. }
  92749. return arr;
  92750. }
  92751. };
  92752. splitColumn_default = luckysheetSplitColumn;
  92753. }
  92754. });
  92755. // src/controllers/cellFormat.js
  92756. function initialCellFormatModelEvent() {
  92757. const _locale = locale_default();
  92758. const local_cellFormat = _locale.cellFormat;
  92759. $("#luckysheet-cellFormat-confirm").click(function() {
  92760. let locked = $("#luckysheet-protection-check-locked").is(":checked");
  92761. let hidden = $("#luckysheet-protection-check-hidden").is(":checked");
  92762. locked = locked == true ? 1 : 0;
  92763. hidden = hidden == true ? 1 : 0;
  92764. let d = recycleSeletion(function(cell, r2, c2, data) {
  92765. if (cell == null) {
  92766. setcellvalue(r2, c2, data, {
  92767. lo: locked,
  92768. hi: hidden
  92769. });
  92770. } else {
  92771. cell.lo = locked;
  92772. cell.hi = hidden;
  92773. }
  92774. }, function() {
  92775. alert(local_cellFormat.sheetDataIsNullAlert);
  92776. });
  92777. jfrefreshgrid(d, void 0, void 0, false);
  92778. $("#luckysheet-cellFormat-config").hide();
  92779. $("#luckysheet-modal-dialog-mask").hide();
  92780. });
  92781. }
  92782. function recycleSeletion(cycleFunction, dataIsNullFunction) {
  92783. if (store_default.luckysheet_select_save != null && store_default.luckysheet_select_save.length > 0) {
  92784. let sheetFile = sheetmanage_default.getSheetByIndex(), data = sheetFile.data;
  92785. if (data != null) {
  92786. for (let i2 = 0; i2 < store_default.luckysheet_select_save.length; i2++) {
  92787. let selection2 = store_default.luckysheet_select_save[i2];
  92788. let row = selection2.row, column = selection2.column;
  92789. for (let r2 = row[0]; r2 <= row[1]; r2++) {
  92790. for (let c2 = column[0]; c2 <= column[1]; c2++) {
  92791. let cell;
  92792. let margeset = menuButton_default.mergeborer(data, r2, c2);
  92793. if (!!margeset) {
  92794. let row_index = margeset.row[2];
  92795. let col_index = margeset.column[2];
  92796. cell = data[row_index][col_index];
  92797. } else {
  92798. cell = data[r2][c2];
  92799. }
  92800. cycleFunction(cell, r2, c2, data);
  92801. }
  92802. }
  92803. }
  92804. } else {
  92805. dataIsNullFunction();
  92806. }
  92807. return data;
  92808. }
  92809. }
  92810. function initialCellFormatModel() {
  92811. if (isInitialCellFormatModel) {
  92812. return;
  92813. }
  92814. isInitialCellFormatModel = true;
  92815. const _locale = locale_default();
  92816. const local_cellFormat = _locale.cellFormat;
  92817. const locale_button = _locale.button;
  92818. $("body").append(replaceHtml(modelHTML, {
  92819. "id": "luckysheet-cellFormat-config",
  92820. "addclass": "luckysheet-cellFormat-config",
  92821. "title": local_cellFormat.cellFormatTitle,
  92822. "content": `
  92823. <div class="luckysheet-cellFormat-menu-c">
  92824. <div class="luckysheet-cellFormat-menu luckysheet-cellFormat-menu-active" id="luckysheet-cellFormat-protection">
  92825. ${local_cellFormat.protection}
  92826. </div>
  92827. </div>
  92828. <div id="luckysheet-cellFormat-protection-content" class="luckysheet-cellFormat-content">
  92829. <div class="luckysheet-cellFormat-protection">
  92830. <p>
  92831. ${local_cellFormat.protectionTips}
  92832. </p>
  92833. <label for="luckysheet-protection-check-locked"><input id="luckysheet-protection-check-locked" name="luckysheet-protection-check-locked" type="checkbox">${local_cellFormat.locked}</label><span>\u90E8\u5206\u9009\u4E2D</span>
  92834. <br/>
  92835. <label for="luckysheet-protection-check-hidden"><input id="luckysheet-protection-check-hidden" name="luckysheet-protection-check-hidden" type="checkbox">${local_cellFormat.hidden}</label><span>\u5168\u90E8\u9009\u4E2D</span>
  92836. </div>
  92837. </div>
  92838. `,
  92839. "botton": `<button id="luckysheet-cellFormat-confirm" class="btn btn-primary">${locale_button.confirm}</button>
  92840. <button class="btn btn-default luckysheet-model-close-btn">${locale_button.cancel}</button>`,
  92841. "style": "z-index:100003"
  92842. }));
  92843. initialCellFormatModelEvent();
  92844. }
  92845. function openCellFormatModel() {
  92846. initialCellFormatModel();
  92847. const _locale = locale_default();
  92848. const local_cellFormat = _locale.cellFormat;
  92849. const locale_button = _locale.button;
  92850. $("#luckysheet-rightclick-menu").hide();
  92851. if (!checkProtectionNotEnable(store_default.currentSheetIndex)) {
  92852. return;
  92853. }
  92854. let locked = false, hidden = false;
  92855. let lockedCount = 0, hiddenCount = 0, count = 0;
  92856. if (store_default.luckysheet_select_save != null && store_default.luckysheet_select_save.length > 0) {
  92857. recycleSeletion(function(cell) {
  92858. if (cell == null || cell.lo == null || cell.lo == 1) {
  92859. locked = true;
  92860. lockedCount++;
  92861. }
  92862. if (cell != null && cell.hi == 1) {
  92863. hidden = true;
  92864. hiddenCount++;
  92865. }
  92866. count++;
  92867. }, function() {
  92868. locked = true;
  92869. });
  92870. } else {
  92871. alert(local_cellFormat.selectionIsNullAlert);
  92872. return;
  92873. }
  92874. let tipsLock = "", tipshidden = "";
  92875. if (locked) {
  92876. tipsLock = lockedCount == count ? local_cellFormat.tipsAll : local_cellFormat.tipsPart;
  92877. }
  92878. if (hidden) {
  92879. tipshidden = hiddenCount == count ? local_cellFormat.tipsAll : local_cellFormat.tipsPart;
  92880. }
  92881. $("#luckysheet-protection-check-locked").prop("checked", locked).parent().next().html(tipsLock);
  92882. $("#luckysheet-protection-check-hidden").prop("checked", hidden).parent().next().html(tipshidden);
  92883. openSelfModel("luckysheet-cellFormat-config");
  92884. }
  92885. var isInitialCellFormatModel;
  92886. var init_cellFormat = __esm({
  92887. "src/controllers/cellFormat.js"() {
  92888. init_store();
  92889. init_util();
  92890. init_constant();
  92891. init_sheetmanage();
  92892. init_menuButton();
  92893. init_protection();
  92894. init_refresh();
  92895. init_locale();
  92896. init_setdata();
  92897. isInitialCellFormatModel = false;
  92898. }
  92899. });
  92900. // src/global/scroll.js
  92901. function luckysheetscrollevent(isadjust) {
  92902. let $t = $("#luckysheet-cell-main");
  92903. let scrollLeft = $("#luckysheet-scrollbar-x").scrollLeft(), scrollTop = $("#luckysheet-scrollbar-y").scrollTop(), canvasHeight = $("#luckysheetTableContent").height();
  92904. if (freezen_default.freezenhorizontaldata != null) {
  92905. if (scrollTop < freezen_default.freezenhorizontaldata[2]) {
  92906. scrollTop = freezen_default.freezenhorizontaldata[2];
  92907. $("#luckysheet-scrollbar-y").scrollTop(scrollTop);
  92908. return;
  92909. }
  92910. }
  92911. if (freezen_default.freezenverticaldata != null) {
  92912. if (scrollLeft < freezen_default.freezenverticaldata[2]) {
  92913. scrollLeft = freezen_default.freezenverticaldata[2];
  92914. $("#luckysheet-scrollbar-x").scrollLeft(scrollLeft);
  92915. return;
  92916. }
  92917. }
  92918. $("#luckysheet-cols-h-c").scrollLeft(scrollLeft);
  92919. $("#luckysheet-rows-h").scrollTop(scrollTop);
  92920. $t.scrollLeft(scrollLeft).scrollTop(scrollTop);
  92921. $("#luckysheet-input-box-index").css({
  92922. "left": $("#luckysheet-input-box").css("left"),
  92923. "top": parseInt($("#luckysheet-input-box").css("top")) - 20 + "px",
  92924. "z-index": $("#luckysheet-input-box").css("z-index")
  92925. }).show();
  92926. luckysheetrefreshgrid(scrollLeft, scrollTop);
  92927. $("#luckysheet-bottom-controll-row").css("left", scrollLeft);
  92928. if (freezen_default.freezenhorizontaldata != null || freezen_default.freezenverticaldata != null) {
  92929. freezen_default.scrollAdapt();
  92930. }
  92931. if (!method_default.createHookFunction("scroll", {scrollLeft, scrollTop, canvasHeight})) {
  92932. return;
  92933. }
  92934. }
  92935. var init_scroll = __esm({
  92936. "src/global/scroll.js"() {
  92937. init_freezen();
  92938. init_sheetSearch();
  92939. init_refresh();
  92940. init_store();
  92941. init_method();
  92942. }
  92943. });
  92944. // src/controllers/handler.js
  92945. function luckysheetHandler() {
  92946. const os = browser_default.detectOS(), isMobile = browser_default.mobilecheck();
  92947. if (isMobile) {
  92948. mobileinit();
  92949. }
  92950. if (!Date.now)
  92951. Date.now = function() {
  92952. return new Date().getTime();
  92953. };
  92954. (function() {
  92955. "use strict";
  92956. var vendors = ["webkit", "moz"];
  92957. for (var i2 = 0; i2 < vendors.length && !window.requestAnimationFrame; ++i2) {
  92958. var vp = vendors[i2];
  92959. window.requestAnimationFrame = window[vp + "RequestAnimationFrame"];
  92960. window.cancelAnimationFrame = window[vp + "CancelAnimationFrame"] || window[vp + "CancelRequestAnimationFrame"];
  92961. }
  92962. if (/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent) || !window.requestAnimationFrame || !window.cancelAnimationFrame) {
  92963. var lastTime = 0;
  92964. window.requestAnimationFrame = function(callback) {
  92965. var now = Date.now();
  92966. var nextTime = Math.max(lastTime + 16, now);
  92967. return setTimeout(function() {
  92968. callback(lastTime = nextTime);
  92969. }, nextTime - now);
  92970. };
  92971. window.cancelAnimationFrame = clearTimeout;
  92972. }
  92973. })();
  92974. $("#luckysheet-sheet-container-c").mousewheel(function(event2, delta) {
  92975. let scrollNum = event2.deltaFactor < 40 ? 1 : event2.deltaFactor < 80 ? 2 : 3;
  92976. let scrollLeft = $(this).scrollLeft();
  92977. if (event2.deltaY != 0) {
  92978. if (event2.deltaY < 0) {
  92979. scrollLeft = scrollLeft + 10 * scrollNum;
  92980. } else {
  92981. scrollLeft = scrollLeft - 10 * scrollNum;
  92982. }
  92983. } else if (event2.deltaX != 0) {
  92984. if (event2.deltaX > 0) {
  92985. scrollLeft = scrollLeft + 10 * scrollNum;
  92986. } else {
  92987. scrollLeft = scrollLeft - 10 * scrollNum;
  92988. }
  92989. }
  92990. $(this).scrollLeft(scrollLeft);
  92991. event2.preventDefault();
  92992. });
  92993. $("#luckysheet-cell-main").scroll(function() {
  92994. }).mousewheel(function(event2, delta) {
  92995. event2.preventDefault();
  92996. });
  92997. const _locale = locale_default();
  92998. const locale_drag2 = _locale.drag;
  92999. const locale_info = _locale.info;
  93000. let prev, mousewheelArrayUniqueTimeout;
  93001. $("#luckysheet-grid-window-1").mousewheel(function(event2, delta) {
  93002. let scrollLeft = $("#luckysheet-scrollbar-x").scrollLeft(), scrollTop = $("#luckysheet-scrollbar-y").scrollTop();
  93003. let visibledatacolumn_c = store_default.visibledatacolumn, visibledatarow_c = store_default.visibledatarow;
  93004. if (freezen_default.freezenhorizontaldata != null) {
  93005. visibledatarow_c = freezen_default.freezenhorizontaldata[3];
  93006. }
  93007. if (freezen_default.freezenverticaldata != null) {
  93008. visibledatacolumn_c = freezen_default.freezenverticaldata[3];
  93009. }
  93010. clearTimeout(mousewheelArrayUniqueTimeout);
  93011. if (store_default.visibledatacolumn_unique != null) {
  93012. visibledatacolumn_c = store_default.visibledatacolumn_unique;
  93013. } else {
  93014. visibledatacolumn_c = ArrayUnique(visibledatacolumn_c);
  93015. store_default.visibledatacolumn_unique = visibledatacolumn_c;
  93016. }
  93017. if (store_default.visibledatarow_unique != null) {
  93018. visibledatarow_c = store_default.visibledatarow_unique;
  93019. } else {
  93020. visibledatarow_c = ArrayUnique(visibledatarow_c);
  93021. store_default.visibledatarow_unique = visibledatarow_c;
  93022. }
  93023. let col_st = luckysheet_searcharray(visibledatacolumn_c, scrollLeft);
  93024. let row_st = luckysheet_searcharray(visibledatarow_c, scrollTop);
  93025. if (freezen_default.freezenhorizontaldata != null) {
  93026. row_st = luckysheet_searcharray(visibledatarow_c, scrollTop + freezen_default.freezenhorizontaldata[0]);
  93027. }
  93028. let colscroll = 0;
  93029. let rowscroll = 0;
  93030. let scrollNum = event2.deltaFactor < 40 ? 1 : event2.deltaFactor < 80 ? 2 : 3;
  93031. if (event2.deltaY != 0) {
  93032. let row_ed, step = Math.round(scrollNum / store_default.zoomRatio);
  93033. step = step < 1 ? 1 : step;
  93034. if (event2.deltaY < 0) {
  93035. row_ed = row_st + step;
  93036. if (row_ed >= visibledatarow_c.length) {
  93037. row_ed = visibledatarow_c.length - 1;
  93038. }
  93039. } else {
  93040. row_ed = row_st - step;
  93041. if (row_ed < 0) {
  93042. row_ed = 0;
  93043. }
  93044. }
  93045. rowscroll = row_ed == 0 ? 0 : visibledatarow_c[row_ed - 1];
  93046. if (freezen_default.freezenhorizontaldata != null) {
  93047. rowscroll -= freezen_default.freezenhorizontaldata[0];
  93048. }
  93049. $("#luckysheet-scrollbar-y").scrollTop(rowscroll);
  93050. } else if (event2.deltaX != 0) {
  93051. let col_ed;
  93052. if (event2.deltaX > 0) {
  93053. scrollLeft = scrollLeft + 20 * store_default.zoomRatio;
  93054. } else {
  93055. scrollLeft = scrollLeft - 20 * store_default.zoomRatio;
  93056. }
  93057. $("#luckysheet-scrollbar-x").scrollLeft(scrollLeft);
  93058. }
  93059. mousewheelArrayUniqueTimeout = setTimeout(() => {
  93060. store_default.visibledatacolumn_unique = null;
  93061. store_default.visibledatarow_unique = null;
  93062. }, 500);
  93063. });
  93064. $("#luckysheet-scrollbar-x").scroll(function() {
  93065. luckysheetscrollevent();
  93066. }).mousewheel(function(event2, delta) {
  93067. event2.preventDefault();
  93068. });
  93069. $("#luckysheet-scrollbar-y").scroll(function() {
  93070. luckysheetscrollevent();
  93071. }).mousewheel(function(event2, delta) {
  93072. event2.preventDefault();
  93073. });
  93074. $(window).resize(function() {
  93075. let luckysheetDocument = document.getElementById(store_default.container);
  93076. if (luckysheetDocument) {
  93077. luckysheetsizeauto();
  93078. }
  93079. });
  93080. $("#luckysheet-rich-text-editor").mouseup(function(e) {
  93081. menuButton_default.inputMenuButtonFocus(e.target);
  93082. });
  93083. $("#luckysheet-cell-main, #luckysheetTableContent").mousedown(function(event2) {
  93084. if ($(event2.target).hasClass("luckysheet-mousedown-cancel")) {
  93085. return;
  93086. }
  93087. hideUsername();
  93088. $("#luckysheet-cell-selected").find(".luckysheet-cs-fillhandle").css("cursor", "default").end().find(".luckysheet-cs-draghandle").css("cursor", "default");
  93089. $("#luckysheet-cell-main, #luckysheetTableContent, #luckysheet-sheettable_0").css("cursor", "default");
  93090. postil_default.removeActivePs();
  93091. if ($("#luckysheet-modal-dialog-activeImage").is(":visible") || $("#luckysheet-modal-dialog-cropping").is(":visible")) {
  93092. imageCtrl_default.cancelActiveImgItem();
  93093. }
  93094. let mouse = mouseposition(event2.pageX, event2.pageY);
  93095. if (mouse[0] >= store_default.cellmainWidth - store_default.cellMainSrollBarSize || mouse[1] >= store_default.cellmainHeight - store_default.cellMainSrollBarSize) {
  93096. return;
  93097. }
  93098. let x = mouse[0] + $("#luckysheet-cell-main").scrollLeft();
  93099. let y = mouse[1] + $("#luckysheet-cell-main").scrollTop();
  93100. if (freezen_default.freezenverticaldata != null && mouse[0] < freezen_default.freezenverticaldata[0] - freezen_default.freezenverticaldata[2]) {
  93101. x = mouse[0] + freezen_default.freezenverticaldata[2];
  93102. }
  93103. if (freezen_default.freezenhorizontaldata != null && mouse[1] < freezen_default.freezenhorizontaldata[0] - freezen_default.freezenhorizontaldata[2]) {
  93104. y = mouse[1] + freezen_default.freezenhorizontaldata[2];
  93105. }
  93106. let sheetFile = sheetmanage_default.getSheetByIndex();
  93107. let luckysheetTableContent = $("#luckysheetTableContent").get(0).getContext("2d");
  93108. let row_location = rowLocation(y), row = row_location[1], row_pre = row_location[0], row_index = row_location[2];
  93109. let col_location = colLocation(x), col = col_location[1], col_pre = col_location[0], col_index = col_location[2];
  93110. let row_index_ed = row_index, col_index_ed = col_index;
  93111. let margeset = menuButton_default.mergeborer(store_default.flowdata, row_index, col_index);
  93112. if (!!margeset) {
  93113. row = margeset.row[1];
  93114. row_pre = margeset.row[0];
  93115. row_index = margeset.row[2];
  93116. row_index_ed = margeset.row[3];
  93117. col = margeset.column[1];
  93118. col_pre = margeset.column[0];
  93119. col_index = margeset.column[2];
  93120. col_index_ed = margeset.column[3];
  93121. }
  93122. if (!method_default.createHookFunction("cellMousedownBefore", store_default.flowdata[row_index][col_index], {
  93123. r: row_index,
  93124. c: col_index,
  93125. "start_r": row_pre,
  93126. "start_c": col_pre,
  93127. "end_r": row,
  93128. "end_c": col
  93129. }, sheetFile, luckysheetTableContent)) {
  93130. return;
  93131. }
  93132. dataVerificationCtrl_default.cellFocus(row_index, col_index, true);
  93133. if (col_pre < $("#luckysheet-cell-main").scrollLeft()) {
  93134. $("#luckysheet-scrollbar-x").scrollLeft(col_pre);
  93135. }
  93136. if (row_pre < $("#luckysheet-cell-main").scrollTop()) {
  93137. $("#luckysheet-scrollbar-y").scrollTop(row_pre);
  93138. }
  93139. if (event2.which == "3") {
  93140. $("#luckysheet-dataVerification-showHintBox").hide();
  93141. let isright = false;
  93142. for (let s = 0; s < store_default.luckysheet_select_save.length; s++) {
  93143. if (store_default.luckysheet_select_save[s]["row"] != null && (row_index >= store_default.luckysheet_select_save[s]["row"][0] && row_index <= store_default.luckysheet_select_save[s]["row"][1] && col_index >= store_default.luckysheet_select_save[s]["column"][0] && col_index <= store_default.luckysheet_select_save[s]["column"][1])) {
  93144. isright = true;
  93145. break;
  93146. }
  93147. }
  93148. if (isright) {
  93149. return;
  93150. }
  93151. }
  93152. if (store_default.flowdata[row_index] != null && store_default.flowdata[row_index][col_index] != null && store_default.flowdata[row_index][col_index].dd != null) {
  93153. if (luckysheetConfigsetting_default.fireMousedown != null && getObjType(luckysheetConfigsetting_default.fireMousedown) == "function") {
  93154. luckysheetConfigsetting_default.fireMousedown(store_default.flowdata[row_index][col_index].dd);
  93155. return;
  93156. }
  93157. }
  93158. if (hyperlinkCtrl_default.hyperlink && hyperlinkCtrl_default.hyperlink[row_index + "_" + col_index] && event2.which != "3") {
  93159. hyperlinkCtrl_default.cellFocus(row_index, col_index);
  93160. return;
  93161. }
  93162. store_default.luckysheet_scroll_status = true;
  93163. let $input = $("#luckysheet-input-box");
  93164. if (parseInt($input.css("top")) > 0) {
  93165. if (formula_default.rangestart || formula_default.rangedrag_column_start || formula_default.rangedrag_row_start || formula_default.israngeseleciton()) {
  93166. let rowseleted = [row_index, row_index_ed];
  93167. let columnseleted = [col_index, col_index_ed];
  93168. let left = col_pre;
  93169. let width = col - col_pre - 1;
  93170. let top = row_pre;
  93171. let height = row - row_pre - 1;
  93172. if (event2.shiftKey) {
  93173. let last = formula_default.func_selectedrange;
  93174. let top2 = 0, height2 = 0, rowseleted2 = [];
  93175. if (last.top > row_pre) {
  93176. top2 = row_pre;
  93177. height2 = last.top + last.height - row_pre;
  93178. if (last.row[1] > last.row_focus) {
  93179. last.row[1] = last.row_focus;
  93180. }
  93181. rowseleted2 = [row_index, last.row[1]];
  93182. } else if (last.top == row_pre) {
  93183. top2 = row_pre;
  93184. height2 = last.top + last.height - row_pre;
  93185. rowseleted2 = [row_index, last.row[0]];
  93186. } else {
  93187. top2 = last.top;
  93188. height2 = row - last.top - 1;
  93189. if (last.row[0] < last.row_focus) {
  93190. last.row[0] = last.row_focus;
  93191. }
  93192. rowseleted2 = [last.row[0], row_index];
  93193. }
  93194. let left2 = 0, width2 = 0, columnseleted2 = [];
  93195. if (last.left > col_pre) {
  93196. left2 = col_pre;
  93197. width2 = last.left + last.width - col_pre;
  93198. if (last.column[1] > last.column_focus) {
  93199. last.column[1] = last.column_focus;
  93200. }
  93201. columnseleted2 = [col_index, last.column[1]];
  93202. } else if (last.left == col_pre) {
  93203. left2 = col_pre;
  93204. width2 = last.left + last.width - col_pre;
  93205. columnseleted2 = [col_index, last.column[0]];
  93206. } else {
  93207. left2 = last.left;
  93208. width2 = col - last.left - 1;
  93209. if (last.column[0] < last.column_focus) {
  93210. last.column[0] = last.column_focus;
  93211. }
  93212. columnseleted2 = [last.column[0], col_index];
  93213. }
  93214. let changeparam = menuButton_default.mergeMoveMain(columnseleted2, rowseleted2, last, top2, height2, left2, width2);
  93215. if (changeparam != null) {
  93216. columnseleted2 = changeparam[0];
  93217. rowseleted2 = changeparam[1];
  93218. top2 = changeparam[2];
  93219. height2 = changeparam[3];
  93220. left2 = changeparam[4];
  93221. width2 = changeparam[5];
  93222. }
  93223. luckysheet_count_show(left2, top2, width2, height2, rowseleted2, columnseleted2);
  93224. last["row"] = rowseleted2;
  93225. last["column"] = columnseleted2;
  93226. last["left_move"] = left2;
  93227. last["width_move"] = width2;
  93228. last["top_move"] = top2;
  93229. last["height_move"] = height2;
  93230. formula_default.func_selectedrange = last;
  93231. } else if (event2.ctrlKey && $("#luckysheet-rich-text-editor").find("span").last().text() != ",") {
  93232. let vText = $("#luckysheet-rich-text-editor").text();
  93233. if (vText[vText.length - 1] === ")") {
  93234. vText = vText.substr(0, vText.length - 1);
  93235. }
  93236. if (vText.length > 0) {
  93237. let lastWord = vText.substr(vText.length - 1, 1);
  93238. if (lastWord != "," && lastWord != "=" && lastWord != "(") {
  93239. vText += ",";
  93240. }
  93241. }
  93242. if (vText.length > 0 && vText.substr(0, 1) == "=") {
  93243. vText = formula_default.functionHTMLGenerate(vText);
  93244. if (window.getSelection) {
  93245. let currSelection = window.getSelection();
  93246. formula_default.functionRangeIndex = [$(currSelection.anchorNode).parent().index(), currSelection.anchorOffset];
  93247. } else {
  93248. let textRange = document.selection.createRange();
  93249. formula_default.functionRangeIndex = textRange;
  93250. }
  93251. $("#luckysheet-rich-text-editor").html(vText + ")");
  93252. formula_default.canceFunctionrangeSelected();
  93253. formula_default.createRangeHightlight();
  93254. }
  93255. formula_default.rangestart = false;
  93256. formula_default.rangedrag_column_start = false;
  93257. formula_default.rangedrag_row_start = false;
  93258. $("#luckysheet-functionbox-cell").html(vText + ")");
  93259. formula_default.rangeHightlightselected($("#luckysheet-rich-text-editor"));
  93260. formula_default.israngeseleciton();
  93261. formula_default.func_selectedrange = {
  93262. "left": left,
  93263. "width": width,
  93264. "top": top,
  93265. "height": height,
  93266. "left_move": left,
  93267. "width_move": width,
  93268. "top_move": top,
  93269. "height_move": height,
  93270. "row": rowseleted,
  93271. "column": columnseleted,
  93272. "row_focus": row_index,
  93273. "column_focus": col_index
  93274. };
  93275. } else {
  93276. formula_default.func_selectedrange = {
  93277. "left": left,
  93278. "width": width,
  93279. "top": top,
  93280. "height": height,
  93281. "left_move": left,
  93282. "width_move": width,
  93283. "top_move": top,
  93284. "height_move": height,
  93285. "row": rowseleted,
  93286. "column": columnseleted,
  93287. "row_focus": row_index,
  93288. "column_focus": col_index
  93289. };
  93290. }
  93291. formula_default.rangeSetValue({"row": rowseleted, "column": columnseleted});
  93292. formula_default.rangestart = true;
  93293. formula_default.rangedrag_column_start = false;
  93294. formula_default.rangedrag_row_start = false;
  93295. $("#luckysheet-formula-functionrange-select").css({
  93296. "left": left,
  93297. "width": width,
  93298. "top": top,
  93299. "height": height
  93300. }).show();
  93301. $("#luckysheet-formula-help-c").hide();
  93302. luckysheet_count_show(left, top, width, height, rowseleted, columnseleted);
  93303. setTimeout(function() {
  93304. let currSelection = window.getSelection();
  93305. let anchorOffset = currSelection.anchorNode;
  93306. let $editor;
  93307. if ($("#luckysheet-search-formula-parm").is(":visible") || $("#luckysheet-search-formula-parm-select").is(":visible")) {
  93308. $editor = $("#luckysheet-rich-text-editor");
  93309. formula_default.rangechangeindex = formula_default.data_parm_index;
  93310. } else {
  93311. $editor = $(anchorOffset).closest("div");
  93312. }
  93313. let $span = $editor.find("span[rangeindex='" + formula_default.rangechangeindex + "']");
  93314. formula_default.setCaretPosition($span.get(0), 0, $span.html().length);
  93315. }, 1);
  93316. return;
  93317. } else {
  93318. formula_default.updatecell(store_default.luckysheetCellUpdate[0], store_default.luckysheetCellUpdate[1]);
  93319. store_default.luckysheet_select_status = true;
  93320. if ($("#luckysheet-info").is(":visible")) {
  93321. store_default.luckysheet_select_status = false;
  93322. }
  93323. }
  93324. } else {
  93325. if (checkProtectionSelectLockedOrUnLockedCells(row_index, col_index, store_default.currentSheetIndex)) {
  93326. store_default.luckysheet_select_status = true;
  93327. }
  93328. }
  93329. if ($("#luckysheet-multiRange-dialog").is(":visible")) {
  93330. conditionformat_default.selectStatus = true;
  93331. store_default.luckysheet_select_status = false;
  93332. if (event2.shiftKey) {
  93333. let last = conditionformat_default.selectRange[conditionformat_default.selectRange.length - 1];
  93334. let top = 0, height = 0, rowseleted = [];
  93335. if (last.top > row_pre) {
  93336. top = row_pre;
  93337. height = last.top + last.height - row_pre;
  93338. if (last.row[1] > last.row_focus) {
  93339. last.row[1] = last.row_focus;
  93340. }
  93341. rowseleted = [row_index, last.row[1]];
  93342. } else if (last.top == row_pre) {
  93343. top = row_pre;
  93344. height = last.top + last.height - row_pre;
  93345. rowseleted = [row_index, last.row[0]];
  93346. } else {
  93347. top = last.top;
  93348. height = row - last.top - 1;
  93349. if (last.row[0] < last.row_focus) {
  93350. last.row[0] = last.row_focus;
  93351. }
  93352. rowseleted = [last.row[0], row_index];
  93353. }
  93354. let left = 0, width = 0, columnseleted = [];
  93355. if (last.left > col_pre) {
  93356. left = col_pre;
  93357. width = last.left + last.width - col_pre;
  93358. if (last.column[1] > last.column_focus) {
  93359. last.column[1] = last.column_focus;
  93360. }
  93361. columnseleted = [col_index, last.column[1]];
  93362. } else if (last.left == col_pre) {
  93363. left = col_pre;
  93364. width = last.left + last.width - col_pre;
  93365. columnseleted = [col_index, last.column[0]];
  93366. } else {
  93367. left = last.left;
  93368. width = col - last.left - 1;
  93369. if (last.column[0] < last.column_focus) {
  93370. last.column[0] = last.column_focus;
  93371. }
  93372. columnseleted = [last.column[0], col_index];
  93373. }
  93374. let changeparam = menuButton_default.mergeMoveMain(columnseleted, rowseleted, last, top, height, left, width);
  93375. if (changeparam != null) {
  93376. columnseleted = changeparam[0];
  93377. rowseleted = changeparam[1];
  93378. top = changeparam[2];
  93379. height = changeparam[3];
  93380. left = changeparam[4];
  93381. width = changeparam[5];
  93382. }
  93383. last["row"] = rowseleted;
  93384. last["column"] = columnseleted;
  93385. last["left_move"] = left;
  93386. last["width_move"] = width;
  93387. last["top_move"] = top;
  93388. last["height_move"] = height;
  93389. conditionformat_default.selectRange[conditionformat_default.selectRange.length - 1] = last;
  93390. } else if (event2.ctrlKey) {
  93391. conditionformat_default.selectRange.push({
  93392. "left": col_pre,
  93393. "width": col - col_pre - 1,
  93394. "top": row_pre,
  93395. "height": row - row_pre - 1,
  93396. "left_move": col_pre,
  93397. "width_move": col - col_pre - 1,
  93398. "top_move": row_pre,
  93399. "height_move": row - row_pre - 1,
  93400. "row": [row_index, row_index_ed],
  93401. "column": [col_index, col_index_ed],
  93402. "row_focus": row_index,
  93403. "column_focus": col_index
  93404. });
  93405. } else {
  93406. conditionformat_default.selectRange = [];
  93407. conditionformat_default.selectRange.push({
  93408. "left": col_pre,
  93409. "width": col - col_pre - 1,
  93410. "top": row_pre,
  93411. "height": row - row_pre - 1,
  93412. "left_move": col_pre,
  93413. "width_move": col - col_pre - 1,
  93414. "top_move": row_pre,
  93415. "height_move": row - row_pre - 1,
  93416. "row": [row_index, row_index_ed],
  93417. "column": [col_index, col_index_ed],
  93418. "row_focus": row_index,
  93419. "column_focus": col_index
  93420. });
  93421. }
  93422. selectionCopyShow(conditionformat_default.selectRange);
  93423. let range2 = conditionformat_default.getTxtByRange(conditionformat_default.selectRange);
  93424. $("#luckysheet-multiRange-dialog input").val(range2);
  93425. return;
  93426. } else {
  93427. conditionformat_default.selectStatus = false;
  93428. conditionformat_default.selectRange = [];
  93429. }
  93430. if ($("#luckysheet-singleRange-dialog").is(":visible")) {
  93431. store_default.luckysheet_select_status = false;
  93432. selectionCopyShow([{"row": [row_index, row_index], "column": [col_index, col_index]}]);
  93433. let range2 = getRangetxt(store_default.currentSheetIndex, {"row": [row_index, row_index], "column": [col_index, col_index]}, store_default.currentSheetIndex);
  93434. $("#luckysheet-singleRange-dialog input").val(range2);
  93435. return;
  93436. }
  93437. if ($("#luckysheet-dataVerificationRange-dialog").is(":visible")) {
  93438. dataVerificationCtrl_default.selectStatus = true;
  93439. store_default.luckysheet_select_status = false;
  93440. if (event2.shiftKey) {
  93441. let last = dataVerificationCtrl_default.selectRange[dataVerificationCtrl_default.selectRange.length - 1];
  93442. let top = 0, height = 0, rowseleted = [];
  93443. if (last.top > row_pre) {
  93444. top = row_pre;
  93445. height = last.top + last.height - row_pre;
  93446. if (last.row[1] > last.row_focus) {
  93447. last.row[1] = last.row_focus;
  93448. }
  93449. rowseleted = [row_index, last.row[1]];
  93450. } else if (last.top == row_pre) {
  93451. top = row_pre;
  93452. height = last.top + last.height - row_pre;
  93453. rowseleted = [row_index, last.row[0]];
  93454. } else {
  93455. top = last.top;
  93456. height = row - last.top - 1;
  93457. if (last.row[0] < last.row_focus) {
  93458. last.row[0] = last.row_focus;
  93459. }
  93460. rowseleted = [last.row[0], row_index];
  93461. }
  93462. let left = 0, width = 0, columnseleted = [];
  93463. if (last.left > col_pre) {
  93464. left = col_pre;
  93465. width = last.left + last.width - col_pre;
  93466. if (last.column[1] > last.column_focus) {
  93467. last.column[1] = last.column_focus;
  93468. }
  93469. columnseleted = [col_index, last.column[1]];
  93470. } else if (last.left == col_pre) {
  93471. left = col_pre;
  93472. width = last.left + last.width - col_pre;
  93473. columnseleted = [col_index, last.column[0]];
  93474. } else {
  93475. left = last.left;
  93476. width = col - last.left - 1;
  93477. if (last.column[0] < last.column_focus) {
  93478. last.column[0] = last.column_focus;
  93479. }
  93480. columnseleted = [last.column[0], col_index];
  93481. }
  93482. let changeparam = menuButton_default.mergeMoveMain(columnseleted, rowseleted, last, top, height, left, width);
  93483. if (changeparam != null) {
  93484. columnseleted = changeparam[0];
  93485. rowseleted = changeparam[1];
  93486. top = changeparam[2];
  93487. height = changeparam[3];
  93488. left = changeparam[4];
  93489. width = changeparam[5];
  93490. }
  93491. last["row"] = rowseleted;
  93492. last["column"] = columnseleted;
  93493. last["left_move"] = left;
  93494. last["width_move"] = width;
  93495. last["top_move"] = top;
  93496. last["height_move"] = height;
  93497. dataVerificationCtrl_default.selectRange[dataVerificationCtrl_default.selectRange.length - 1] = last;
  93498. } else {
  93499. dataVerificationCtrl_default.selectRange = [];
  93500. dataVerificationCtrl_default.selectRange.push({
  93501. "left": col_pre,
  93502. "width": col - col_pre - 1,
  93503. "top": row_pre,
  93504. "height": row - row_pre - 1,
  93505. "left_move": col_pre,
  93506. "width_move": col - col_pre - 1,
  93507. "top_move": row_pre,
  93508. "height_move": row - row_pre - 1,
  93509. "row": [row_index, row_index_ed],
  93510. "column": [col_index, col_index_ed],
  93511. "row_focus": row_index,
  93512. "column_focus": col_index
  93513. });
  93514. }
  93515. selectionCopyShow(dataVerificationCtrl_default.selectRange);
  93516. let range2 = dataVerificationCtrl_default.getTxtByRange(dataVerificationCtrl_default.selectRange);
  93517. if (formula_default.rangetosheet != store_default.currentSheetIndex) {
  93518. range2 = store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)].name + "!" + range2;
  93519. }
  93520. $("#luckysheet-dataVerificationRange-dialog input").val(range2);
  93521. return;
  93522. } else {
  93523. dataVerificationCtrl_default.selectStatus = false;
  93524. dataVerificationCtrl_default.selectRange = [];
  93525. }
  93526. if (ifFormulaGenerator_default.singleRangeFocus) {
  93527. $("#luckysheet-ifFormulaGenerator-dialog .singRange").click();
  93528. }
  93529. if ($("#luckysheet-ifFormulaGenerator-singleRange-dialog").is(":visible")) {
  93530. store_default.luckysheet_select_status = false;
  93531. formula_default.rangestart = false;
  93532. $("#luckysheet-formula-functionrange-select").css({
  93533. "left": col_pre,
  93534. "width": col - col_pre - 1,
  93535. "top": row_pre,
  93536. "height": row - row_pre - 1
  93537. }).show();
  93538. $("#luckysheet-formula-help-c").hide();
  93539. let range2 = getRangetxt(store_default.currentSheetIndex, {"row": [row_index, row_index], "column": [col_index, col_index]}, store_default.currentSheetIndex);
  93540. $("#luckysheet-ifFormulaGenerator-singleRange-dialog input").val(range2);
  93541. return;
  93542. }
  93543. if ($("#luckysheet-ifFormulaGenerator-multiRange-dialog").is(":visible")) {
  93544. store_default.luckysheet_select_status = false;
  93545. formula_default.func_selectedrange = {
  93546. "left": col_pre,
  93547. "width": col - col_pre - 1,
  93548. "top": row_pre,
  93549. "height": row - row_pre - 1,
  93550. "left_move": col_pre,
  93551. "width_move": col - col_pre - 1,
  93552. "top_move": row_pre,
  93553. "height_move": row - row_pre - 1,
  93554. "row": [row_index, row_index],
  93555. "column": [col_index, col_index],
  93556. "row_focus": row_index,
  93557. "column_focus": col_index
  93558. };
  93559. formula_default.rangestart = true;
  93560. $("#luckysheet-formula-functionrange-select").css({
  93561. "left": col_pre,
  93562. "width": col - col_pre - 1,
  93563. "top": row_pre,
  93564. "height": row - row_pre - 1
  93565. }).show();
  93566. $("#luckysheet-formula-help-c").hide();
  93567. let range2 = getRangetxt(store_default.currentSheetIndex, {"row": [row_index, row_index], "column": [col_index, col_index]}, store_default.currentSheetIndex);
  93568. $("#luckysheet-ifFormulaGenerator-multiRange-dialog input").val(range2);
  93569. $("#luckysheet-row-count-show").hide();
  93570. $("#luckysheet-column-count-show").hide();
  93571. return;
  93572. }
  93573. if (store_default.luckysheet_select_status) {
  93574. if (event2.shiftKey) {
  93575. let last = $.extend(true, {}, store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1]);
  93576. let top = 0, height = 0, rowseleted = [];
  93577. if (last.top > row_pre) {
  93578. top = row_pre;
  93579. height = last.top + last.height - row_pre;
  93580. if (last.row[1] > last.row_focus) {
  93581. last.row[1] = last.row_focus;
  93582. }
  93583. rowseleted = [row_index, last.row[1]];
  93584. } else if (last.top == row_pre) {
  93585. top = row_pre;
  93586. height = last.top + last.height - row_pre;
  93587. rowseleted = [row_index, last.row[0]];
  93588. } else {
  93589. top = last.top;
  93590. height = row - last.top - 1;
  93591. if (last.row[0] < last.row_focus) {
  93592. last.row[0] = last.row_focus;
  93593. }
  93594. rowseleted = [last.row[0], row_index];
  93595. }
  93596. let left = 0, width = 0, columnseleted = [];
  93597. if (last.left > col_pre) {
  93598. left = col_pre;
  93599. width = last.left + last.width - col_pre;
  93600. if (last.column[1] > last.column_focus) {
  93601. last.column[1] = last.column_focus;
  93602. }
  93603. columnseleted = [col_index, last.column[1]];
  93604. } else if (last.left == col_pre) {
  93605. left = col_pre;
  93606. width = last.left + last.width - col_pre;
  93607. columnseleted = [col_index, last.column[0]];
  93608. } else {
  93609. left = last.left;
  93610. width = col - last.left - 1;
  93611. if (last.column[0] < last.column_focus) {
  93612. last.column[0] = last.column_focus;
  93613. }
  93614. columnseleted = [last.column[0], col_index];
  93615. }
  93616. let changeparam = menuButton_default.mergeMoveMain(columnseleted, rowseleted, last, top, height, left, width);
  93617. if (changeparam != null) {
  93618. columnseleted = changeparam[0];
  93619. rowseleted = changeparam[1];
  93620. top = changeparam[2];
  93621. height = changeparam[3];
  93622. left = changeparam[4];
  93623. width = changeparam[5];
  93624. }
  93625. last["row"] = rowseleted;
  93626. last["column"] = columnseleted;
  93627. last["left_move"] = left;
  93628. last["width_move"] = width;
  93629. last["top_move"] = top;
  93630. last["height_move"] = height;
  93631. store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1] = last;
  93632. if ($("#luckysheet-alternateformat-rangeDialog").is(":visible")) {
  93633. $("#luckysheet-alternateformat-rangeDialog input").val(getRangetxt(store_default.currentSheetIndex, store_default.luckysheet_select_save));
  93634. }
  93635. if (pivotTable_default.luckysheet_pivotTable_select_state) {
  93636. $("#luckysheet-pivotTable-range-selection-input").val(store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)].name + "!" + chatatABC(store_default.luckysheet_select_save[0]["column"][0]) + (store_default.luckysheet_select_save[0]["row"][0] + 1) + ":" + chatatABC(store_default.luckysheet_select_save[0]["column"][1]) + (store_default.luckysheet_select_save[0]["row"][1] + 1));
  93637. }
  93638. } else if (event2.ctrlKey) {
  93639. store_default.luckysheet_select_save.push({
  93640. "left": col_pre,
  93641. "width": col - col_pre - 1,
  93642. "top": row_pre,
  93643. "height": row - row_pre - 1,
  93644. "left_move": col_pre,
  93645. "width_move": col - col_pre - 1,
  93646. "top_move": row_pre,
  93647. "height_move": row - row_pre - 1,
  93648. "row": [row_index, row_index_ed],
  93649. "column": [col_index, col_index_ed],
  93650. "row_focus": row_index,
  93651. "column_focus": col_index
  93652. });
  93653. } else {
  93654. store_default.luckysheet_select_save.length = 0;
  93655. store_default.luckysheet_select_save.push({
  93656. "left": col_pre,
  93657. "width": col - col_pre - 1,
  93658. "top": row_pre,
  93659. "height": row - row_pre - 1,
  93660. "left_move": col_pre,
  93661. "width_move": col - col_pre - 1,
  93662. "top_move": row_pre,
  93663. "height_move": row - row_pre - 1,
  93664. "row": [row_index, row_index_ed],
  93665. "column": [col_index, col_index_ed],
  93666. "row_focus": row_index,
  93667. "column_focus": col_index
  93668. });
  93669. menuButton_default.menuButtonFocus(store_default.flowdata, row_index, col_index);
  93670. formula_default.fucntionboxshow(row_index, col_index);
  93671. }
  93672. selectHightlightShow();
  93673. if (freezen_default.freezenhorizontaldata != null || freezen_default.freezenverticaldata != null) {
  93674. freezen_default.scrollAdaptOfselect();
  93675. }
  93676. if (!browser_default.mobilecheck()) {
  93677. luckysheetactiveCell();
  93678. }
  93679. server_default.saveParam("mv", store_default.currentSheetIndex, store_default.luckysheet_select_save);
  93680. }
  93681. if (alternateformat_default.rangefocus) {
  93682. alternateformat_default.rangefocus = false;
  93683. $("#luckysheet-alternateformat-range .fa-table").click();
  93684. }
  93685. $("#luckysheet-row-count-show, #luckysheet-column-count-show").hide();
  93686. if (!isEditMode()) {
  93687. hideAllNeedRangeShow();
  93688. }
  93689. pivotTable_default.pivotclick(row_index, col_index, store_default.currentSheetIndex);
  93690. luckysheetContainerFocus();
  93691. method_default.createHookFunction("cellMousedown", store_default.flowdata[row_index][col_index], {
  93692. r: row_index,
  93693. c: col_index,
  93694. "start_r": row_pre,
  93695. "start_c": col_pre,
  93696. "end_r": row,
  93697. "end_c": col
  93698. }, sheetFile, luckysheetTableContent);
  93699. }).mouseup(function(event2) {
  93700. if (event2.which == "3") {
  93701. if (!store_default.allowEdit) {
  93702. return;
  93703. }
  93704. if (isEditMode()) {
  93705. return;
  93706. }
  93707. let x = event2.pageX;
  93708. let y = event2.pageY;
  93709. let data = store_default.flowdata;
  93710. let obj_s = store_default.luckysheet_select_save[0];
  93711. const cellRightClickConfig = luckysheetConfigsetting_default.cellRightClickConfig;
  93712. $("#luckysheet-cols-rows-data").show();
  93713. $("#luckysheet-cols-rows-handleincell").show();
  93714. $("#luckysheet-cols-rows-add, #luckysheet-cols-rows-shift").hide();
  93715. $$("#luckysheet-cols-rows-data .luckysheet-menuseparator").style.display = "block";
  93716. $$("#luckysheet-cols-rows-handleincell .luckysheet-menuseparator").style.display = "block";
  93717. if (obj_s["row"] != null && obj_s["row"][0] == 0 && obj_s["row"][1] == store_default.flowdata.length - 1) {
  93718. if (!cellRightClickConfig.copy && !cellRightClickConfig.copyAs && !cellRightClickConfig.paste && !cellRightClickConfig.insertColumn && !cellRightClickConfig.deleteColumn && !cellRightClickConfig.hideColumn && !cellRightClickConfig.columnWidth && !cellRightClickConfig.clear && !cellRightClickConfig.matrix && !cellRightClickConfig.sort && !cellRightClickConfig.filter && !cellRightClickConfig.chart && !cellRightClickConfig.image && !cellRightClickConfig.link && !cellRightClickConfig.data && !cellRightClickConfig.cellFormat) {
  93719. return;
  93720. }
  93721. store_default.luckysheetRightHeadClickIs = "column";
  93722. $("#luckysheet-rightclick-menu .luckysheet-cols-rows-shift-word").text(locale_default().rightclick.column);
  93723. $("#luckysheet-rightclick-menu .luckysheet-cols-rows-shift-size").text(locale_default().rightclick.width);
  93724. $("#luckysheet-rightclick-menu .luckysheet-cols-rows-shift-left").text(locale_default().rightclick.left);
  93725. $("#luckysheet-rightclick-menu .luckysheet-cols-rows-shift-right").text(locale_default().rightclick.right);
  93726. $("#luckysheet-cols-rows-add").show();
  93727. $("#luckysheet-cols-rows-shift").hide();
  93728. $("#luckysheet-cols-rows-handleincell").hide();
  93729. store_default.luckysheet_cols_menu_status = true;
  93730. $$("#luckysheet-cols-rows-add .luckysheet-menuseparator").style.display = "block";
  93731. $$("#luckysheet-top-left-add-selected").style.display = cellRightClickConfig.insertColumn ? "block" : "none";
  93732. $$("#luckysheet-bottom-right-add-selected").style.display = cellRightClickConfig.insertColumn ? "block" : "none";
  93733. $$("#luckysheet-del-selected").style.display = cellRightClickConfig.deleteColumn ? "block" : "none";
  93734. $$("#luckysheet-hide-selected").style.display = cellRightClickConfig.hideColumn ? "block" : "none";
  93735. $$("#luckysheet-show-selected").style.display = cellRightClickConfig.hideColumn ? "block" : "none";
  93736. $$("#luckysheet-column-row-width-selected").style.display = cellRightClickConfig.columnWidth ? "block" : "none";
  93737. if (!cellRightClickConfig.copy && !cellRightClickConfig.copyAs && !cellRightClickConfig.paste) {
  93738. $$("#luckysheet-cols-rows-add .luckysheet-menuseparator").style.display = "none";
  93739. if (!cellRightClickConfig.insertColumn && !cellRightClickConfig.deleteColumn && !cellRightClickConfig.hideColumn && !cellRightClickConfig.columnWidth) {
  93740. $$("#luckysheet-cols-rows-data .luckysheet-menuseparator").style.display = "none";
  93741. }
  93742. }
  93743. if (!cellRightClickConfig.insertColumn && !cellRightClickConfig.deleteColumn && !cellRightClickConfig.hideColumn && !cellRightClickConfig.columnWidth) {
  93744. $$("#luckysheet-cols-rows-add .luckysheet-menuseparator").style.display = "none";
  93745. }
  93746. let cfg = $.extend(true, {}, store_default.config);
  93747. if (cfg["columnlen"] == null) {
  93748. cfg["columnlen"] = {};
  93749. }
  93750. let first_collen = cfg["columnlen"][store_default.luckysheet_select_save[0].column[0]] == null ? store_default.defaultcollen : cfg["columnlen"][store_default.luckysheet_select_save[0].column[0]];
  93751. let isSame = true;
  93752. for (let i2 = 0; i2 < store_default.luckysheet_select_save.length; i2++) {
  93753. let s = store_default.luckysheet_select_save[i2];
  93754. let c1 = s.column[0], c2 = s.column[1];
  93755. for (let c3 = c1; c3 <= c2; c3++) {
  93756. let collen = cfg["columnlen"][c3] == null ? store_default.defaultcollen : cfg["columnlen"][c3];
  93757. if (collen != first_collen) {
  93758. isSame = false;
  93759. break;
  93760. }
  93761. }
  93762. }
  93763. if (isSame) {
  93764. $("#luckysheet-cols-rows-add").find("input[type='number'].rcsize").val(first_collen);
  93765. } else {
  93766. $("#luckysheet-cols-rows-add").find("input[type='number'].rcsize").val("");
  93767. }
  93768. } else if (obj_s["column"] != null && obj_s["column"][0] == 0 && obj_s["column"][1] == store_default.flowdata[0].length - 1) {
  93769. if (!cellRightClickConfig.copy && !cellRightClickConfig.copyAs && !cellRightClickConfig.paste && !cellRightClickConfig.insertRow && !cellRightClickConfig.deleteRow && !cellRightClickConfig.hideRow && !cellRightClickConfig.rowHeight && !cellRightClickConfig.clear && !cellRightClickConfig.matrix && !cellRightClickConfig.sort && !cellRightClickConfig.filter && !cellRightClickConfig.chart && !cellRightClickConfig.image && !cellRightClickConfig.link && !cellRightClickConfig.data && !cellRightClickConfig.cellFormat) {
  93770. return;
  93771. }
  93772. store_default.luckysheetRightHeadClickIs = "row";
  93773. $("#luckysheet-rightclick-menu .luckysheet-cols-rows-shift-word").text(locale_default().rightclick.row);
  93774. $("#luckysheet-rightclick-menu .luckysheet-cols-rows-shift-size").text(locale_default().rightclick.height);
  93775. $("#luckysheet-rightclick-menu .luckysheet-cols-rows-shift-left").text(locale_default().rightclick.top);
  93776. $("#luckysheet-rightclick-menu .luckysheet-cols-rows-shift-right").text(locale_default().rightclick.bottom);
  93777. $("#luckysheet-cols-rows-add").show();
  93778. $("#luckysheet-cols-rows-shift").hide();
  93779. $("#luckysheet-cols-rows-handleincell").hide();
  93780. store_default.luckysheet_cols_menu_status = true;
  93781. $$("#luckysheet-cols-rows-add .luckysheet-menuseparator").style.display = "block";
  93782. $$("#luckysheet-top-left-add-selected").style.display = cellRightClickConfig.insertRow ? "block" : "none";
  93783. $$("#luckysheet-bottom-right-add-selected").style.display = cellRightClickConfig.insertRow ? "block" : "none";
  93784. $$("#luckysheet-del-selected").style.display = cellRightClickConfig.deleteRow ? "block" : "none";
  93785. $$("#luckysheet-hide-selected").style.display = cellRightClickConfig.hideRow ? "block" : "none";
  93786. $$("#luckysheet-show-selected").style.display = cellRightClickConfig.hideRow ? "block" : "none";
  93787. $$("#luckysheet-column-row-width-selected").style.display = cellRightClickConfig.rowHeight ? "block" : "none";
  93788. if (!cellRightClickConfig.copy && !cellRightClickConfig.copyAs && !cellRightClickConfig.paste) {
  93789. $$("#luckysheet-cols-rows-add .luckysheet-menuseparator").style.display = "none";
  93790. if (!cellRightClickConfig.insertRow && !cellRightClickConfig.deleteRow && !cellRightClickConfig.hideRow && !cellRightClickConfig.rowHeight) {
  93791. $$("#luckysheet-cols-rows-data .luckysheet-menuseparator").style.display = "none";
  93792. }
  93793. }
  93794. if (!cellRightClickConfig.insertRow && !cellRightClickConfig.deleteRow && !cellRightClickConfig.hideRow && !cellRightClickConfig.rowHeight) {
  93795. $$("#luckysheet-cols-rows-add .luckysheet-menuseparator").style.display = "none";
  93796. }
  93797. let cfg = $.extend(true, {}, store_default.config);
  93798. if (cfg["rowlen"] == null) {
  93799. cfg["rowlen"] = {};
  93800. }
  93801. let first_rowlen = cfg["rowlen"][store_default.luckysheet_select_save[0].row[0]] == null ? store_default.defaultrowlen : cfg["rowlen"][store_default.luckysheet_select_save[0].row[0]];
  93802. let isSame = true;
  93803. for (let i2 = 0; i2 < store_default.luckysheet_select_save.length; i2++) {
  93804. let s = store_default.luckysheet_select_save[i2];
  93805. let r1 = s.row[0], r2 = s.row[1];
  93806. for (let r3 = r1; r3 <= r2; r3++) {
  93807. let rowlen = cfg["rowlen"][r3] == null ? store_default.defaultrowlen : cfg["rowlen"][r3];
  93808. if (rowlen != first_rowlen) {
  93809. isSame = false;
  93810. break;
  93811. }
  93812. }
  93813. }
  93814. if (isSame) {
  93815. $("#luckysheet-cols-rows-add").find("input[type='number'].rcsize").val(first_rowlen);
  93816. } else {
  93817. $("#luckysheet-cols-rows-add").find("input[type='number'].rcsize").val("");
  93818. }
  93819. } else {
  93820. if (!cellRightClickConfig.copy && !cellRightClickConfig.copyAs && !cellRightClickConfig.paste && !cellRightClickConfig.insertRow && !cellRightClickConfig.insertColumn && !cellRightClickConfig.deleteRow && !cellRightClickConfig.deleteColumn && !cellRightClickConfig.deleteCell && !cellRightClickConfig.clear && !cellRightClickConfig.matrix && !cellRightClickConfig.sort && !cellRightClickConfig.filter && !cellRightClickConfig.chart && !cellRightClickConfig.image && !cellRightClickConfig.link && !cellRightClickConfig.data && !cellRightClickConfig.cellFormat) {
  93821. return;
  93822. }
  93823. if (!cellRightClickConfig.copy && !cellRightClickConfig.copyAs && !cellRightClickConfig.paste) {
  93824. $$("#luckysheet-cols-rows-handleincell .luckysheet-menuseparator").style.display = "none";
  93825. if (!cellRightClickConfig.insertRow && !cellRightClickConfig.insertColumn && !cellRightClickConfig.deleteRow && !cellRightClickConfig.deleteColumn && !cellRightClickConfig.deleteCell) {
  93826. $$("#luckysheet-cols-rows-data .luckysheet-menuseparator").style.display = "none";
  93827. }
  93828. }
  93829. if (!cellRightClickConfig.insertRow && !cellRightClickConfig.insertColumn && !cellRightClickConfig.deleteRow && !cellRightClickConfig.deleteColumn && !cellRightClickConfig.deleteCell) {
  93830. $$("#luckysheet-cols-rows-handleincell .luckysheet-menuseparator").style.display = "none";
  93831. }
  93832. }
  93833. if (!cellRightClickConfig.clear && !cellRightClickConfig.matrix && !cellRightClickConfig.sort && !cellRightClickConfig.filter && !cellRightClickConfig.chart && !cellRightClickConfig.image && !cellRightClickConfig.link && !cellRightClickConfig.data && !cellRightClickConfig.cellFormat) {
  93834. $$("#luckysheet-cols-rows-data .luckysheet-menuseparator").style.display = "none";
  93835. }
  93836. showrightclickmenu($("#luckysheet-rightclick-menu"), x, y);
  93837. }
  93838. server_default.saveParam("mv", store_default.currentSheetIndex, store_default.luckysheet_select_save);
  93839. }).dblclick(function(event2) {
  93840. if ($(event2.target).hasClass("luckysheet-mousedown-cancel")) {
  93841. return;
  93842. }
  93843. if (!store_default.allowEdit) {
  93844. return;
  93845. }
  93846. if (parseInt($("#luckysheet-input-box").css("top")) > 0) {
  93847. return;
  93848. }
  93849. let mouse = mouseposition(event2.pageX, event2.pageY);
  93850. if (mouse[0] >= store_default.cellmainWidth - store_default.cellMainSrollBarSize || mouse[1] >= store_default.cellmainHeight - store_default.cellMainSrollBarSize) {
  93851. return;
  93852. }
  93853. let scrollLeft = $("#luckysheet-cell-main").scrollLeft(), scrollTop = $("#luckysheet-cell-main").scrollTop();
  93854. let x = mouse[0] + scrollLeft;
  93855. let y = mouse[1] + scrollTop;
  93856. if (freezen_default.freezenverticaldata != null && mouse[0] < freezen_default.freezenverticaldata[0] - freezen_default.freezenverticaldata[2]) {
  93857. x = mouse[0] + freezen_default.freezenverticaldata[2];
  93858. }
  93859. if (freezen_default.freezenhorizontaldata != null && mouse[1] < freezen_default.freezenhorizontaldata[0] - freezen_default.freezenhorizontaldata[2]) {
  93860. y = mouse[1] + freezen_default.freezenhorizontaldata[2];
  93861. }
  93862. let row_location = rowLocation(y), row_index = row_location[2];
  93863. let col_location = colLocation(x), col_index = col_location[2];
  93864. let margeset = menuButton_default.mergeborer(store_default.flowdata, row_index, col_index);
  93865. if (!!margeset) {
  93866. row_index = margeset.row[2];
  93867. col_index = margeset.column[2];
  93868. }
  93869. if (pivotTable_default.isPivotRange(row_index, col_index)) {
  93870. if ((pivotTable_default.filter == null || pivotTable_default.filter.length == 0) && (pivotTable_default.row == null || pivotTable_default.row.length == 0) && (pivotTable_default.column == null || pivotTable_default.column.length == 0) && (pivotTable_default.values == null || pivotTable_default.values.length == 0)) {
  93871. return;
  93872. }
  93873. if (pivotTable_default.values == null || pivotTable_default.values.length == 0) {
  93874. return;
  93875. }
  93876. if (row_index == 0 || col_index == 0) {
  93877. return;
  93878. }
  93879. if (pivotTable_default.column != null && pivotTable_default.column.length > 0) {
  93880. if (pivotTable_default.values.length >= 2 && pivotTable_default.showType == "column") {
  93881. if (row_index <= pivotTable_default.column.length || col_index >= pivotTable_default.pivotDatas[0].length - pivotTable_default.values.length) {
  93882. return;
  93883. }
  93884. } else {
  93885. if (row_index <= pivotTable_default.column.length - 1 || col_index >= pivotTable_default.pivotDatas[0].length - 1) {
  93886. return;
  93887. }
  93888. }
  93889. }
  93890. if (pivotTable_default.row != null && pivotTable_default.row.length > 0) {
  93891. if (pivotTable_default.values.length >= 2 && pivotTable_default.showType == "row") {
  93892. if (col_index <= pivotTable_default.row.length || row_index >= pivotTable_default.pivotDatas.length - pivotTable_default.values.length) {
  93893. return;
  93894. }
  93895. } else {
  93896. if (col_index <= pivotTable_default.row.length - 1 || row_index >= pivotTable_default.pivotDatas.length - 1) {
  93897. return;
  93898. }
  93899. }
  93900. }
  93901. sheetmanage_default.addNewSheet(event2);
  93902. pivotTable_default.drillDown(row_index, col_index);
  93903. return;
  93904. }
  93905. if ($("#luckysheet-search-formula-parm").is(":visible") || $("#luckysheet-search-formula-parm-select").is(":visible")) {
  93906. $("#luckysheet-cell-selected").hide();
  93907. } else if ($("#luckysheet-conditionformat-dialog").is(":visible") || $("#luckysheet-administerRule-dialog").is(":visible") || $("#luckysheet-newConditionRule-dialog").is(":visible") || $("#luckysheet-editorConditionRule-dialog").is(":visible") || $("#luckysheet-singleRange-dialog").is(":visible") || $("#luckysheet-multiRange-dialog").is(":visible")) {
  93908. return;
  93909. } else if ($("#luckysheet-modal-dialog-slider-alternateformat").is(":visible") || $("#luckysheet-alternateformat-rangeDialog").is(":visible")) {
  93910. return;
  93911. } else {
  93912. if (menuButton_default.luckysheetPaintModelOn) {
  93913. menuButton_default.cancelPaintModel();
  93914. }
  93915. let column_focus = store_default.luckysheet_select_save[0]["column_focus"];
  93916. let row_focus = store_default.luckysheet_select_save[0]["row_focus"];
  93917. if (column_focus !== col_index || row_focus !== row_index) {
  93918. row_index = row_focus;
  93919. col_index = column_focus;
  93920. }
  93921. ;
  93922. luckysheetupdateCell(row_index, col_index, store_default.flowdata);
  93923. selectHightlightShow();
  93924. }
  93925. });
  93926. document.getElementById("luckysheet-cell-main").addEventListener("drop", function(e) {
  93927. e.preventDefault();
  93928. e.stopPropagation();
  93929. let files = e.dataTransfer.files;
  93930. if (files.length == 1 && files[0].type.indexOf("image") > -1) {
  93931. if (!checkProtectionAuthorityNormal(store_default.currentSheetIndex, "editObjects")) {
  93932. return;
  93933. }
  93934. imageCtrl_default.insertImg(files[0]);
  93935. }
  93936. handleCellDragStopEvent(e);
  93937. }, false);
  93938. document.getElementById("luckysheet-cell-main").addEventListener("dragover", function(e) {
  93939. e.preventDefault();
  93940. e.stopPropagation();
  93941. }, false);
  93942. function handleCellDragStopEvent(event2) {
  93943. if (luckysheetConfigsetting_default && luckysheetConfigsetting_default.hook && luckysheetConfigsetting_default.hook.cellDragStop) {
  93944. let mouse = mouseposition(event2.pageX, event2.pageY);
  93945. let x = mouse[0] + $("#luckysheet-cell-main").scrollLeft();
  93946. let y = mouse[1] + $("#luckysheet-cell-main").scrollTop();
  93947. let row_location = rowLocation(y), row = row_location[1], row_pre = row_location[0], row_index = row_location[2];
  93948. let col_location = colLocation(x), col = col_location[1], col_pre = col_location[0], col_index = col_location[2];
  93949. let margeset = menuButton_default.mergeborer(store_default.flowdata, row_index, col_index);
  93950. if (!!margeset) {
  93951. row = margeset.row[1];
  93952. row_pre = margeset.row[0];
  93953. row_index = margeset.row[2];
  93954. col = margeset.column[1];
  93955. col_pre = margeset.column[0];
  93956. col_index = margeset.column[2];
  93957. }
  93958. let sheetFile = sheetmanage_default.getSheetByIndex();
  93959. let luckysheetTableContent = $("#luckysheetTableContent").get(0).getContext("2d");
  93960. method_default.createHookFunction("cellDragStop", store_default.flowdata[row_index][col_index], {
  93961. r: row_index,
  93962. c: col_index,
  93963. "start_r": row_pre,
  93964. "start_c": col_pre,
  93965. "end_r": row,
  93966. "end_c": col
  93967. }, sheetFile, luckysheetTableContent, event2);
  93968. }
  93969. }
  93970. $(document).on("mousemove.luckysheetEvent", function(event2) {
  93971. postil_default.overshow(event2);
  93972. hyperlinkCtrl_default.overshow(event2);
  93973. window.cancelAnimationFrame(store_default.jfautoscrollTimeout);
  93974. if (luckysheetConfigsetting_default && luckysheetConfigsetting_default.hook && luckysheetConfigsetting_default.hook.sheetMousemove) {
  93975. let mouse = mouseposition(event2.pageX, event2.pageY);
  93976. let x = mouse[0] + $("#luckysheet-cell-main").scrollLeft();
  93977. let y = mouse[1] + $("#luckysheet-cell-main").scrollTop();
  93978. let row_location = rowLocation(y), row = row_location[1], row_pre = row_location[0], row_index = row_location[2];
  93979. let col_location = colLocation(x), col = col_location[1], col_pre = col_location[0], col_index = col_location[2];
  93980. let margeset = menuButton_default.mergeborer(store_default.flowdata, row_index, col_index);
  93981. if (!!margeset) {
  93982. row = margeset.row[1];
  93983. row_pre = margeset.row[0];
  93984. row_index = margeset.row[2];
  93985. col = margeset.column[1];
  93986. col_pre = margeset.column[0];
  93987. col_index = margeset.column[2];
  93988. }
  93989. let sheetFile = sheetmanage_default.getSheetByIndex();
  93990. let moveState = {
  93991. functionResizeStatus: formula_default.functionResizeStatus,
  93992. horizontalmoveState: !!freezen_default.horizontalmovestate,
  93993. verticalmoveState: !!freezen_default.verticalmovestate,
  93994. pivotTableMoveState: !!pivotTable_default && pivotTable_default.movestate,
  93995. sheetMoveStatus: store_default.luckysheet_sheet_move_status,
  93996. scrollStatus: !!store_default.luckysheet_scroll_status,
  93997. selectStatus: !!store_default.luckysheet_select_status,
  93998. rowsSelectedStatus: !!store_default.luckysheet_rows_selected_status,
  93999. colsSelectedStatus: !!store_default.luckysheet_cols_selected_status,
  94000. cellSelectedMove: !!store_default.luckysheet_cell_selected_move,
  94001. cellSelectedExtend: !!store_default.luckysheet_cell_selected_extend,
  94002. colsChangeSize: !!store_default.luckysheet_cols_change_size,
  94003. rowsChangeSize: !!store_default.luckysheet_rows_change_size,
  94004. chartMove: !!store_default.chartparam.luckysheetCurrentChartMove,
  94005. chartResize: !!store_default.chartparam.luckysheetCurrentChartResize,
  94006. rangeResize: !!formula_default.rangeResize,
  94007. rangeMove: !!formula_default.rangeMove
  94008. };
  94009. let luckysheetTableContent = $("#luckysheetTableContent").get(0).getContext("2d");
  94010. if (store_default.flowdata && store_default.flowdata[row_index]) {
  94011. method_default.createHookFunction("sheetMousemove", store_default.flowdata[row_index][col_index], {
  94012. r: row_index,
  94013. c: col_index,
  94014. "start_r": row_pre,
  94015. "start_c": col_pre,
  94016. "end_r": row,
  94017. "end_c": col
  94018. }, sheetFile, moveState, luckysheetTableContent);
  94019. }
  94020. }
  94021. if (formula_default.functionResizeStatus) {
  94022. let y = event2.pageY;
  94023. let movepx = y - formula_default.functionResizeData.y;
  94024. let mpx = formula_default.functionResizeData.calculatebarHeight + movepx;
  94025. let winh = Math.round($(window).height() / 2);
  94026. if (mpx <= 28) {
  94027. if (mpx <= 20) {
  94028. return;
  94029. }
  94030. mpx = 28;
  94031. } else if (mpx >= winh) {
  94032. if (mpx >= winh + 8) {
  94033. return;
  94034. }
  94035. mpx = winh;
  94036. }
  94037. store_default.calculatebarHeight = mpx;
  94038. $("#luckysheet-wa-calculate").css("height", store_default.calculatebarHeight - 2);
  94039. $("#luckysheet-wa-calculate-size").css({"background": "#5e5e5e", "cursor": "ns-resize"});
  94040. clearTimeout(formula_default.functionResizeTimeout);
  94041. formula_default.functionResizeTimeout = setTimeout(function() {
  94042. luckysheetsizeauto();
  94043. }, 15);
  94044. } else if (!!freezen_default.horizontalmovestate) {
  94045. let mouse = mouseposition(event2.pageX, event2.pageY);
  94046. let scrollLeft = $("#luckysheet-cell-main").scrollLeft();
  94047. let scrollTop = $("#luckysheet-cell-main").scrollTop();
  94048. let x = mouse[0] + scrollLeft;
  94049. let y = mouse[1] + scrollTop;
  94050. let row_location = rowLocation(y), row = row_location[1], row_pre = row_location[0], row_index = row_location[2];
  94051. let top = mouse[1] + store_default.columnHeaderHeight;
  94052. if (top < store_default.columnHeaderHeight) {
  94053. top = store_default.columnHeaderHeight;
  94054. }
  94055. if (top > freezen_default.windowHeight - 4) {
  94056. top = freezen_default.windowHeight - 4;
  94057. }
  94058. $("#luckysheet-freezebar-horizontal").find(".luckysheet-freezebar-horizontal-handle").css({"top": top});
  94059. if (top + scrollTop - store_default.columnHeaderHeight >= row_pre + (row - row_pre) / 2) {
  94060. top = row - 2 - scrollTop + store_default.columnHeaderHeight;
  94061. freezen_default.freezenhorizontaldata = [row, row_index + 1, scrollTop, freezen_default.cutVolumn(store_default.visibledatarow, row_index + 1), top];
  94062. } else {
  94063. top = row_pre - 2 - scrollTop + store_default.columnHeaderHeight;
  94064. freezen_default.freezenhorizontaldata = [row_pre, row_index, scrollTop, freezen_default.cutVolumn(store_default.visibledatarow, row_index), top];
  94065. }
  94066. $("#luckysheet-freezebar-horizontal").find(".luckysheet-freezebar-horizontal-drop").css({"top": top});
  94067. freezen_default.saveFreezen(freezen_default.freezenhorizontaldata, top, null, null);
  94068. } else if (!!freezen_default.verticalmovestate) {
  94069. let mouse = mouseposition(event2.pageX, event2.pageY);
  94070. let scrollLeft = $("#luckysheet-cell-main").scrollLeft();
  94071. let scrollTop = $("#luckysheet-cell-main").scrollTop();
  94072. let x = mouse[0] + scrollLeft;
  94073. let y = mouse[1] + scrollTop;
  94074. let col_location = colLocation(x), col = col_location[1], col_pre = col_location[0], col_index = col_location[2];
  94075. let left = mouse[0] + store_default.rowHeaderWidth;
  94076. if (left < store_default.rowHeaderWidth) {
  94077. left = store_default.rowHeaderWidth;
  94078. }
  94079. if (left > freezen_default.windowWidth - 4) {
  94080. left = freezen_default.windowWidth - 4;
  94081. }
  94082. $("#luckysheet-freezebar-vertical").find(".luckysheet-freezebar-vertical-handle").css({"left": left});
  94083. if (left + scrollLeft - store_default.rowHeaderWidth >= col_pre + (col - col_pre) / 2) {
  94084. left = col - 2 - scrollLeft + store_default.rowHeaderWidth;
  94085. freezen_default.freezenverticaldata = [col, col_index + 1, scrollLeft, freezen_default.cutVolumn(store_default.visibledatacolumn, col_index + 1), left];
  94086. } else {
  94087. left = col_pre - 2 - scrollLeft + store_default.rowHeaderWidth;
  94088. freezen_default.freezenverticaldata = [col_pre, col_index, scrollLeft, freezen_default.cutVolumn(store_default.visibledatacolumn, col_index), left];
  94089. }
  94090. $("#luckysheet-freezebar-vertical").find(".luckysheet-freezebar-vertical-drop").css({"left": left});
  94091. freezen_default.saveFreezen(null, null, freezen_default.freezenverticaldata, left);
  94092. luckysheetsizeauto();
  94093. } else if (!!pivotTable_default && pivotTable_default.movestate) {
  94094. let x = event2.pageX, y = event2.pageY;
  94095. $("#luckysheet-modal-dialog-slider-pivot-move").css({
  94096. "left": x - pivotTable_default.movesave.width / 2,
  94097. "top": y - pivotTable_default.movesave.height
  94098. });
  94099. } else if (store_default.luckysheet_sheet_move_status) {
  94100. let scrollLeft = $("#luckysheet-sheet-container-c").scrollLeft();
  94101. let x = event2.pageX + scrollLeft;
  94102. if (Math.abs(event2.pageX - store_default.luckysheet_sheet_move_data.pageX) < 3) {
  94103. return;
  94104. }
  94105. let winW = $("#luckysheet-sheet-container").width();
  94106. let left = x - store_default.luckysheet_sheet_move_data.curleft - $("#luckysheet-sheet-container").offset().left;
  94107. store_default.luckysheet_sheet_move_data.activeobject.css({"left": left});
  94108. let row_index = luckysheet_searcharray(store_default.luckysheet_sheet_move_data.widthlist, left + store_default.luckysheet_sheet_move_data.curleft);
  94109. store_default.luckysheet_sheet_move_data.cursorobject.css({"cursor": "move"});
  94110. if (left - scrollLeft <= 6) {
  94111. $("#luckysheet-sheets-leftscroll").click();
  94112. }
  94113. if (left - scrollLeft >= winW - 40) {
  94114. $("#luckysheet-sheets-rightscroll").click();
  94115. }
  94116. if (row_index != store_default.luckysheet_sheet_move_data.curindex) {
  94117. if (row_index == -1 && left > 0) {
  94118. row_index = store_default.luckysheet_sheet_move_data.widthlist.length - 1;
  94119. $("#luckysheet-sheets-item-clone").insertAfter($("#luckysheet-sheet-area div.luckysheet-sheets-item:visible").eq(row_index));
  94120. } else if (row_index == -1 && left <= 0) {
  94121. $("#luckysheet-sheets-item-clone").insertBefore($("#luckysheet-sheet-area div.luckysheet-sheets-item:visible").eq(0));
  94122. } else {
  94123. $("#luckysheet-sheets-item-clone").insertAfter($("#luckysheet-sheet-area div.luckysheet-sheets-item:visible").eq(row_index));
  94124. }
  94125. store_default.luckysheet_sheet_move_data.widthlist = [];
  94126. $("#luckysheet-sheet-area div.luckysheet-sheets-item:visible").each(function(i2) {
  94127. if (i2 == 0) {
  94128. store_default.luckysheet_sheet_move_data.widthlist.push(parseInt($(this).outerWidth()));
  94129. } else {
  94130. store_default.luckysheet_sheet_move_data.widthlist.push(parseInt($(this).outerWidth()) + store_default.luckysheet_sheet_move_data.widthlist[i2 - 1]);
  94131. }
  94132. });
  94133. store_default.luckysheet_sheet_move_data.curindex = $("#luckysheet-sheet-area div.luckysheet-sheets-item:visible").index($("#luckysheet-sheets-item-clone"));
  94134. }
  94135. } else if (store_default.luckysheet_model_move_state) {
  94136. let scrollTop = $(document).scrollTop(), scrollLeft = $(document).scrollLeft();
  94137. let y = event2.pageY + scrollTop, x = event2.pageX + scrollLeft;
  94138. let winH = $(window).height(), winW = $(window).width();
  94139. let myh = store_default.luckysheet_model_move_obj.height(), myw = store_default.luckysheet_model_move_obj.width();
  94140. let top = y - store_default.luckysheet_model_xy[1], left = x - store_default.luckysheet_model_xy[0];
  94141. if (top < 0) {
  94142. top = 0;
  94143. }
  94144. if (top + myh + 62 > winH) {
  94145. top = winH - myh - 62;
  94146. }
  94147. if (left < 0) {
  94148. left = 0;
  94149. }
  94150. if (left + myw + 86 > winW) {
  94151. left = winW - myw - 86;
  94152. }
  94153. store_default.luckysheet_model_move_obj.css({"top": top, "left": left});
  94154. event2.preventDefault();
  94155. } else if (!!store_default.luckysheet_scroll_status || !!store_default.luckysheet_select_status || !!store_default.luckysheet_rows_selected_status || !!store_default.luckysheet_cols_selected_status || !!store_default.luckysheet_cell_selected_move || !!store_default.luckysheet_cell_selected_extend || !!store_default.luckysheet_cols_change_size || !!store_default.luckysheet_rows_change_size || !!store_default.chartparam.luckysheetCurrentChartMove || !!store_default.chartparam.luckysheetCurrentChartResize || !!formula_default.rangeResize || !!formula_default.rangeMove) {
  94156. let mouseRender = function() {
  94157. if (store_default.luckysheet_scroll_status && !store_default.luckysheet_cols_change_size && !store_default.luckysheet_rows_change_size) {
  94158. let mouse = mouseposition(event2.pageX, event2.pageY);
  94159. let left = $("#luckysheet-scrollbar-x").scrollLeft(), top = $("#luckysheet-scrollbar-y").scrollTop();
  94160. let x = mouse[0];
  94161. let y = mouse[1];
  94162. let winH = $("#luckysheet-cell-main").height() - 20 * store_default.zoomRatio, winW = $("#luckysheet-cell-main").width() - 60 * store_default.zoomRatio;
  94163. if (y < 0 || y > winH) {
  94164. let stop;
  94165. if (y < 0) {
  94166. stop = top + y / 2;
  94167. } else {
  94168. stop = top + (y - winH) / 2;
  94169. }
  94170. $("#luckysheet-scrollbar-y").scrollTop(stop);
  94171. }
  94172. if (x < 0 || x > winW) {
  94173. let sleft;
  94174. if (x < 0) {
  94175. sleft = left + x / 2;
  94176. } else {
  94177. sleft = left + (x - winW) / 2;
  94178. }
  94179. $("#luckysheet-scrollbar-x").scrollLeft(sleft);
  94180. }
  94181. }
  94182. if (store_default.luckysheet_select_status) {
  94183. let mouse = mouseposition(event2.pageX, event2.pageY);
  94184. let x = mouse[0] + $("#luckysheet-cell-main").scrollLeft();
  94185. let y = mouse[1] + $("#luckysheet-cell-main").scrollTop();
  94186. let row_location = rowLocation(y), row = row_location[1], row_pre = row_location[0], row_index = row_location[2];
  94187. let col_location = colLocation(x), col = col_location[1], col_pre = col_location[0], col_index = col_location[2];
  94188. if (!checkProtectionSelectLockedOrUnLockedCells(row_index, col_index, store_default.currentSheetIndex)) {
  94189. return;
  94190. }
  94191. let last = $.extend(true, {}, store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1]);
  94192. let top = 0, height = 0, rowseleted = [];
  94193. if (last.top > row_pre) {
  94194. top = row_pre;
  94195. height = last.top + last.height - row_pre;
  94196. if (last.row[1] > last.row_focus) {
  94197. last.row[1] = last.row_focus;
  94198. }
  94199. rowseleted = [row_index, last.row[1]];
  94200. } else if (last.top == row_pre) {
  94201. top = row_pre;
  94202. height = last.top + last.height - row_pre;
  94203. rowseleted = [row_index, last.row[0]];
  94204. } else {
  94205. top = last.top;
  94206. height = row - last.top - 1;
  94207. if (last.row[0] < last.row_focus) {
  94208. last.row[0] = last.row_focus;
  94209. }
  94210. rowseleted = [last.row[0], row_index];
  94211. }
  94212. let left = 0, width = 0, columnseleted = [];
  94213. if (last.left > col_pre) {
  94214. left = col_pre;
  94215. width = last.left + last.width - col_pre;
  94216. if (last.column[1] > last.column_focus) {
  94217. last.column[1] = last.column_focus;
  94218. }
  94219. columnseleted = [col_index, last.column[1]];
  94220. } else if (last.left == col_pre) {
  94221. left = col_pre;
  94222. width = last.left + last.width - col_pre;
  94223. columnseleted = [col_index, last.column[0]];
  94224. } else {
  94225. left = last.left;
  94226. width = col - last.left - 1;
  94227. if (last.column[0] < last.column_focus) {
  94228. last.column[0] = last.column_focus;
  94229. }
  94230. columnseleted = [last.column[0], col_index];
  94231. }
  94232. let changeparam = menuButton_default.mergeMoveMain(columnseleted, rowseleted, last, top, height, left, width);
  94233. if (changeparam != null) {
  94234. columnseleted = changeparam[0];
  94235. rowseleted = changeparam[1];
  94236. top = changeparam[2];
  94237. height = changeparam[3];
  94238. left = changeparam[4];
  94239. width = changeparam[5];
  94240. }
  94241. last["row"] = rowseleted;
  94242. last["column"] = columnseleted;
  94243. last["left_move"] = left;
  94244. last["width_move"] = width;
  94245. last["top_move"] = top;
  94246. last["height_move"] = height;
  94247. store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1] = last;
  94248. selectHightlightShow();
  94249. freezen_default.scrollFreezen();
  94250. if ($("#luckysheet-alternateformat-rangeDialog").is(":visible")) {
  94251. $("#luckysheet-alternateformat-rangeDialog input").val(getRangetxt(store_default.currentSheetIndex, store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1]));
  94252. }
  94253. if (pivotTable_default.luckysheet_pivotTable_select_state) {
  94254. $("#luckysheet-pivotTable-range-selection-input").val(store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)].name + "!" + chatatABC(store_default.luckysheet_select_save[0]["column"][0]) + (store_default.luckysheet_select_save[0]["row"][0] + 1) + ":" + chatatABC(store_default.luckysheet_select_save[0]["column"][1]) + (store_default.luckysheet_select_save[0]["row"][1] + 1));
  94255. }
  94256. } else if (conditionformat_default.selectStatus) {
  94257. let mouse = mouseposition(event2.pageX, event2.pageY);
  94258. let x = mouse[0] + $("#luckysheet-cell-main").scrollLeft();
  94259. let y = mouse[1] + $("#luckysheet-cell-main").scrollTop();
  94260. let row_location = rowLocation(y), row = row_location[1], row_pre = row_location[0], row_index = row_location[2];
  94261. let col_location = colLocation(x), col = col_location[1], col_pre = col_location[0], col_index = col_location[2];
  94262. let last = conditionformat_default.selectRange[conditionformat_default.selectRange.length - 1];
  94263. let top = 0, height = 0, rowseleted = [];
  94264. if (last.top > row_pre) {
  94265. top = row_pre;
  94266. height = last.top + last.height - row_pre;
  94267. if (last.row[1] > last.row_focus) {
  94268. last.row[1] = last.row_focus;
  94269. }
  94270. rowseleted = [row_index, last.row[1]];
  94271. } else if (last.top == row_pre) {
  94272. top = row_pre;
  94273. height = last.top + last.height - row_pre;
  94274. rowseleted = [row_index, last.row[0]];
  94275. } else {
  94276. top = last.top;
  94277. height = row - last.top - 1;
  94278. if (last.row[0] < last.row_focus) {
  94279. last.row[0] = last.row_focus;
  94280. }
  94281. rowseleted = [last.row[0], row_index];
  94282. }
  94283. let left = 0, width = 0, columnseleted = [];
  94284. if (last.left > col_pre) {
  94285. left = col_pre;
  94286. width = last.left + last.width - col_pre;
  94287. if (last.column[1] > last.column_focus) {
  94288. last.column[1] = last.column_focus;
  94289. }
  94290. columnseleted = [col_index, last.column[1]];
  94291. } else if (last.left == col_pre) {
  94292. left = col_pre;
  94293. width = last.left + last.width - col_pre;
  94294. columnseleted = [col_index, last.column[0]];
  94295. } else {
  94296. left = last.left;
  94297. width = col - last.left - 1;
  94298. if (last.column[0] < last.column_focus) {
  94299. last.column[0] = last.column_focus;
  94300. }
  94301. columnseleted = [last.column[0], col_index];
  94302. }
  94303. let changeparam = menuButton_default.mergeMoveMain(columnseleted, rowseleted, last, top, height, left, width);
  94304. if (changeparam != null) {
  94305. columnseleted = changeparam[0];
  94306. rowseleted = changeparam[1];
  94307. top = changeparam[2];
  94308. height = changeparam[3];
  94309. left = changeparam[4];
  94310. width = changeparam[5];
  94311. }
  94312. last["row"] = rowseleted;
  94313. last["column"] = columnseleted;
  94314. last["left_move"] = left;
  94315. last["width_move"] = width;
  94316. last["top_move"] = top;
  94317. last["height_move"] = height;
  94318. conditionformat_default.selectRange[conditionformat_default.selectRange.length - 1] = last;
  94319. selectionCopyShow(conditionformat_default.selectRange);
  94320. let range2 = conditionformat_default.getTxtByRange(conditionformat_default.selectRange);
  94321. $("#luckysheet-multiRange-dialog input").val(range2);
  94322. } else if (dataVerificationCtrl_default.selectStatus) {
  94323. let mouse = mouseposition(event2.pageX, event2.pageY);
  94324. let x = mouse[0] + $("#luckysheet-cell-main").scrollLeft();
  94325. let y = mouse[1] + $("#luckysheet-cell-main").scrollTop();
  94326. let row_location = rowLocation(y), row = row_location[1], row_pre = row_location[0], row_index = row_location[2];
  94327. let col_location = colLocation(x), col = col_location[1], col_pre = col_location[0], col_index = col_location[2];
  94328. let last = dataVerificationCtrl_default.selectRange[dataVerificationCtrl_default.selectRange.length - 1];
  94329. let top = 0, height = 0, rowseleted = [];
  94330. if (last.top > row_pre) {
  94331. top = row_pre;
  94332. height = last.top + last.height - row_pre;
  94333. if (last.row[1] > last.row_focus) {
  94334. last.row[1] = last.row_focus;
  94335. }
  94336. rowseleted = [row_index, last.row[1]];
  94337. } else if (last.top == row_pre) {
  94338. top = row_pre;
  94339. height = last.top + last.height - row_pre;
  94340. rowseleted = [row_index, last.row[0]];
  94341. } else {
  94342. top = last.top;
  94343. height = row - last.top - 1;
  94344. if (last.row[0] < last.row_focus) {
  94345. last.row[0] = last.row_focus;
  94346. }
  94347. rowseleted = [last.row[0], row_index];
  94348. }
  94349. let left = 0, width = 0, columnseleted = [];
  94350. if (last.left > col_pre) {
  94351. left = col_pre;
  94352. width = last.left + last.width - col_pre;
  94353. if (last.column[1] > last.column_focus) {
  94354. last.column[1] = last.column_focus;
  94355. }
  94356. columnseleted = [col_index, last.column[1]];
  94357. } else if (last.left == col_pre) {
  94358. left = col_pre;
  94359. width = last.left + last.width - col_pre;
  94360. columnseleted = [col_index, last.column[0]];
  94361. } else {
  94362. left = last.left;
  94363. width = col - last.left - 1;
  94364. if (last.column[0] < last.column_focus) {
  94365. last.column[0] = last.column_focus;
  94366. }
  94367. columnseleted = [last.column[0], col_index];
  94368. }
  94369. let changeparam = menuButton_default.mergeMoveMain(columnseleted, rowseleted, last, top, height, left, width);
  94370. if (changeparam != null) {
  94371. columnseleted = changeparam[0];
  94372. rowseleted = changeparam[1];
  94373. top = changeparam[2];
  94374. height = changeparam[3];
  94375. left = changeparam[4];
  94376. width = changeparam[5];
  94377. }
  94378. last["row"] = rowseleted;
  94379. last["column"] = columnseleted;
  94380. last["left_move"] = left;
  94381. last["width_move"] = width;
  94382. last["top_move"] = top;
  94383. last["height_move"] = height;
  94384. dataVerificationCtrl_default.selectRange[dataVerificationCtrl_default.selectRange.length - 1] = last;
  94385. selectionCopyShow(dataVerificationCtrl_default.selectRange);
  94386. let range2 = dataVerificationCtrl_default.getTxtByRange(dataVerificationCtrl_default.selectRange);
  94387. if (formula_default.rangetosheet != store_default.currentSheetIndex) {
  94388. range2 = store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)].name + "!" + range2;
  94389. }
  94390. $("#luckysheet-dataVerificationRange-dialog input").val(range2);
  94391. } else if (formula_default.rangestart) {
  94392. formula_default.rangedrag(event2);
  94393. } else if (formula_default.rangedrag_row_start) {
  94394. formula_default.rangedrag_row(event2);
  94395. } else if (formula_default.rangedrag_column_start) {
  94396. formula_default.rangedrag_column(event2);
  94397. } else if (store_default.luckysheet_rows_selected_status) {
  94398. let mouse = mouseposition(event2.pageX, event2.pageY);
  94399. let y = mouse[1] + $("#luckysheet-rows-h").scrollTop();
  94400. if (y < 0) {
  94401. return false;
  94402. }
  94403. let row_location = rowLocation(y), row = row_location[1], row_pre = row_location[0], row_index = row_location[2];
  94404. let col_index = store_default.visibledatacolumn.length - 1, col = store_default.visibledatacolumn[col_index], col_pre = 0;
  94405. let last = $.extend(true, {}, store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1]);
  94406. let top = 0, height = 0, rowseleted = [];
  94407. if (last.top > row_pre) {
  94408. top = row_pre;
  94409. height = last.top + last.height - row_pre;
  94410. if (last.row[1] > last.row_focus) {
  94411. last.row[1] = last.row_focus;
  94412. }
  94413. rowseleted = [row_index, last.row[1]];
  94414. } else if (last.top == row_pre) {
  94415. top = row_pre;
  94416. height = last.top + last.height - row_pre;
  94417. rowseleted = [row_index, last.row[0]];
  94418. } else {
  94419. top = last.top;
  94420. height = row - last.top - 1;
  94421. if (last.row[0] < last.row_focus) {
  94422. last.row[0] = last.row_focus;
  94423. }
  94424. rowseleted = [last.row[0], row_index];
  94425. }
  94426. last["row"] = rowseleted;
  94427. last["top_move"] = top;
  94428. last["height_move"] = height;
  94429. store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1] = last;
  94430. selectHightlightShow();
  94431. clearTimeout(store_default.countfuncTimeout);
  94432. store_default.countfuncTimeout = setTimeout(function() {
  94433. countfunc();
  94434. }, 500);
  94435. } else if (store_default.luckysheet_cols_selected_status) {
  94436. let mouse = mouseposition(event2.pageX, event2.pageY);
  94437. let x = mouse[0] + $("#luckysheet-cols-h-c").scrollLeft();
  94438. if (x < 0) {
  94439. return false;
  94440. }
  94441. let row_index = store_default.visibledatarow.length - 1, row = store_default.visibledatarow[row_index], row_pre = 0;
  94442. let col_location = colLocation(x), col = col_location[1], col_pre = col_location[0], col_index = col_location[2];
  94443. let last = $.extend(true, {}, store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1]);
  94444. let left = 0, width = 0, columnseleted = [];
  94445. if (last.left > col_pre) {
  94446. left = col_pre;
  94447. width = last.left + last.width - col_pre;
  94448. if (last.column[1] > last.column_focus) {
  94449. last.column[1] = last.column_focus;
  94450. }
  94451. columnseleted = [col_index, last.column[1]];
  94452. } else if (last.left == col_pre) {
  94453. left = col_pre;
  94454. width = last.left + last.width - col_pre;
  94455. columnseleted = [col_index, last.column[0]];
  94456. } else {
  94457. left = last.left;
  94458. width = col - last.left - 1;
  94459. if (last.column[0] < last.column_focus) {
  94460. last.column[0] = last.column_focus;
  94461. }
  94462. columnseleted = [last.column[0], col_index];
  94463. }
  94464. last["column"] = columnseleted;
  94465. last["left_move"] = left;
  94466. last["width_move"] = width;
  94467. store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1] = last;
  94468. selectHightlightShow();
  94469. clearTimeout(store_default.countfuncTimeout);
  94470. store_default.countfuncTimeout = setTimeout(function() {
  94471. countfunc();
  94472. }, 500);
  94473. } else if (store_default.luckysheet_cell_selected_move) {
  94474. let mouse = mouseposition(event2.pageX, event2.pageY);
  94475. let scrollLeft = $("#luckysheet-cell-main").scrollLeft();
  94476. let scrollTop = $("#luckysheet-cell-main").scrollTop();
  94477. let x = mouse[0] + scrollLeft;
  94478. let y = mouse[1] + scrollTop;
  94479. let winH = $(window).height() + scrollTop - store_default.sheetBarHeight - store_default.statisticBarHeight, winW = $(window).width() + scrollLeft;
  94480. let row_location = rowLocation(y), row = row_location[1], row_pre = row_location[0], row_index = row_location[2];
  94481. let col_location = colLocation(x), col = col_location[1], col_pre = col_location[0], col_index = col_location[2];
  94482. let row_index_original = store_default.luckysheet_cell_selected_move_index[0], col_index_original = store_default.luckysheet_cell_selected_move_index[1];
  94483. let row_s = store_default.luckysheet_select_save[0]["row"][0] - row_index_original + row_index, row_e = store_default.luckysheet_select_save[0]["row"][1] - row_index_original + row_index;
  94484. let col_s = store_default.luckysheet_select_save[0]["column"][0] - col_index_original + col_index, col_e = store_default.luckysheet_select_save[0]["column"][1] - col_index_original + col_index;
  94485. if (row_s < 0 || y < 0) {
  94486. row_s = 0;
  94487. row_e = store_default.luckysheet_select_save[0]["row"][1] - store_default.luckysheet_select_save[0]["row"][0];
  94488. }
  94489. if (col_s < 0 || x < 0) {
  94490. col_s = 0;
  94491. col_e = store_default.luckysheet_select_save[0]["column"][1] - store_default.luckysheet_select_save[0]["column"][0];
  94492. }
  94493. if (row_e >= store_default.visibledatarow[store_default.visibledatarow.length - 1] || y > winH) {
  94494. row_s = store_default.visibledatarow.length - 1 - store_default.luckysheet_select_save[0]["row"][1] + store_default.luckysheet_select_save[0]["row"][0];
  94495. row_e = store_default.visibledatarow.length - 1;
  94496. }
  94497. if (col_e >= store_default.visibledatacolumn[store_default.visibledatacolumn.length - 1] || x > winW) {
  94498. col_s = store_default.visibledatacolumn.length - 1 - store_default.luckysheet_select_save[0]["column"][1] + store_default.luckysheet_select_save[0]["column"][0];
  94499. col_e = store_default.visibledatacolumn.length - 1;
  94500. }
  94501. col_pre = col_s - 1 == -1 ? 0 : store_default.visibledatacolumn[col_s - 1];
  94502. col = store_default.visibledatacolumn[col_e];
  94503. row_pre = row_s - 1 == -1 ? 0 : store_default.visibledatarow[row_s - 1];
  94504. row = store_default.visibledatarow[row_e];
  94505. $("#luckysheet-cell-selected-move").css({
  94506. "left": col_pre,
  94507. "width": col - col_pre - 2,
  94508. "top": row_pre,
  94509. "height": row - row_pre - 2,
  94510. "display": "block"
  94511. });
  94512. } else if (store_default.luckysheet_cell_selected_extend) {
  94513. let mouse = mouseposition(event2.pageX, event2.pageY);
  94514. let scrollLeft = $("#luckysheet-cell-main").scrollLeft() - 5;
  94515. let scrollTop = $("#luckysheet-cell-main").scrollTop() - 5;
  94516. let x = mouse[0] + scrollLeft;
  94517. let y = mouse[1] + scrollTop;
  94518. let winH = $(window).height() + scrollTop - store_default.sheetBarHeight - store_default.statisticBarHeight, winW = $(window).width() + scrollLeft;
  94519. let row_location = rowLocation(y), row = row_location[1], row_pre = row_location[0], row_index = row_location[2];
  94520. let col_location = colLocation(x), col = col_location[1], col_pre = col_location[0], col_index = col_location[2];
  94521. let row_index_original = store_default.luckysheet_cell_selected_extend_index[0], col_index_original = store_default.luckysheet_cell_selected_extend_index[1];
  94522. let row_s = store_default.luckysheet_select_save[0]["row"][0], row_e = store_default.luckysheet_select_save[0]["row"][1];
  94523. let col_s = store_default.luckysheet_select_save[0]["column"][0], col_e = store_default.luckysheet_select_save[0]["column"][1];
  94524. if (row_s < 0 || y < 0) {
  94525. row_s = 0;
  94526. row_e = store_default.luckysheet_select_save[0]["row"][1] - store_default.luckysheet_select_save[0]["row"][0];
  94527. }
  94528. if (col_s < 0 || x < 0) {
  94529. col_s = 0;
  94530. col_e = store_default.luckysheet_select_save[0]["column"][1] - store_default.luckysheet_select_save[0]["column"][0];
  94531. }
  94532. if (row_e >= store_default.visibledatarow[store_default.visibledatarow.length - 1] || y > winH) {
  94533. row_s = store_default.visibledatarow.length - 1 - store_default.luckysheet_select_save[0]["row"][1] + store_default.luckysheet_select_save[0]["row"][0];
  94534. row_e = store_default.visibledatarow.length - 1;
  94535. }
  94536. if (col_e >= store_default.visibledatacolumn[store_default.visibledatacolumn.length - 1] || x > winW) {
  94537. col_s = store_default.visibledatacolumn.length - 1 - store_default.luckysheet_select_save[0]["column"][1] + store_default.luckysheet_select_save[0]["column"][0];
  94538. col_e = store_default.visibledatacolumn.length - 1;
  94539. }
  94540. let top = store_default.luckysheet_select_save[0].top_move, height = store_default.luckysheet_select_save[0].height_move;
  94541. let left = store_default.luckysheet_select_save[0].left_move, width = store_default.luckysheet_select_save[0].width_move;
  94542. if (Math.abs(row_index_original - row_index) > Math.abs(col_index_original - col_index)) {
  94543. if (!(row_index >= row_s && row_index <= row_e)) {
  94544. if (store_default.luckysheet_select_save[0].top_move >= row_pre) {
  94545. top = row_pre;
  94546. height = store_default.luckysheet_select_save[0].top_move + store_default.luckysheet_select_save[0].height_move - row_pre;
  94547. } else {
  94548. top = store_default.luckysheet_select_save[0].top_move;
  94549. height = row - store_default.luckysheet_select_save[0].top_move - 1;
  94550. }
  94551. }
  94552. } else {
  94553. if (!(col_index >= col_s && col_index <= col_e)) {
  94554. if (store_default.luckysheet_select_save[0].left_move >= col_pre) {
  94555. left = col_pre;
  94556. width = store_default.luckysheet_select_save[0].left_move + store_default.luckysheet_select_save[0].width_move - col_pre;
  94557. } else {
  94558. left = store_default.luckysheet_select_save[0].left_move;
  94559. width = col - store_default.luckysheet_select_save[0].left_move - 1;
  94560. }
  94561. }
  94562. }
  94563. $("#luckysheet-cell-selected-extend").css({
  94564. "left": left,
  94565. "width": width,
  94566. "top": top,
  94567. "height": height,
  94568. "display": "block"
  94569. });
  94570. } else if (store_default.luckysheet_cols_change_size) {
  94571. let mouse = mouseposition(event2.pageX, event2.pageY);
  94572. let scrollLeft = $("#luckysheet-cols-h-c").scrollLeft();
  94573. let x = mouse[0] + scrollLeft;
  94574. let winW = $(window).width();
  94575. let row_index = store_default.visibledatarow.length - 1, row = store_default.visibledatarow[row_index], row_pre = 0;
  94576. let col_location = colLocation(x), col = col_location[1], col_pre = col_location[0], col_index = col_location[2];
  94577. if (x + 3 - store_default.luckysheet_cols_change_size_start[0] > 30 && x < winW + scrollLeft - 100) {
  94578. $("#luckysheet-change-size-line").css({"left": x});
  94579. $("#luckysheet-cols-change-size").css({"left": x - 2});
  94580. }
  94581. } else if (store_default.luckysheet_rows_change_size) {
  94582. let mouse = mouseposition(event2.pageX, event2.pageY);
  94583. let scrollTop = $("#luckysheet-rows-h").scrollTop();
  94584. let y = mouse[1] + scrollTop;
  94585. let winH = $(window).height();
  94586. let row_location = rowLocation(y), row = row_location[1], row_pre = row_location[0], row_index = row_location[2];
  94587. if (y + 3 - store_default.luckysheet_rows_change_size_start[0] > 19 && y < winH + scrollTop - 200) {
  94588. $("#luckysheet-change-size-line").css({"top": y});
  94589. $("#luckysheet-rows-change-size").css({"top": y});
  94590. }
  94591. } else if (!!store_default.chartparam.luckysheetCurrentChartMove) {
  94592. const mouse = mouseposition(event2.pageX, event2.pageY);
  94593. const x = mouse[0] + $("#luckysheet-cell-main").scrollLeft();
  94594. const y = mouse[1] + $("#luckysheet-cell-main").scrollTop();
  94595. const myh = store_default.chartparam.luckysheetCurrentChartMoveObj.height(), myw = store_default.chartparam.luckysheetCurrentChartMoveObj.width();
  94596. let top = y - store_default.chartparam.luckysheetCurrentChartMoveXy[1], left = x - store_default.chartparam.luckysheetCurrentChartMoveXy[0];
  94597. if (top < 0) {
  94598. top = 0;
  94599. }
  94600. if (top + myh + 42 + 6 > store_default.chartparam.luckysheetCurrentChartMoveWinH) {
  94601. top = store_default.chartparam.luckysheetCurrentChartMoveWinH - myh - 42 - 6;
  94602. }
  94603. if (left < 0) {
  94604. left = 0;
  94605. }
  94606. if (left + myw + 22 + 36 > store_default.chartparam.luckysheetCurrentChartMoveWinW) {
  94607. left = store_default.chartparam.luckysheetCurrentChartMoveWinW - myw - 22 - 36;
  94608. }
  94609. store_default.chartparam.luckysheetCurrentChartMoveObj.css({"top": top, "left": left});
  94610. if (freezen_default.freezenhorizontaldata != null || freezen_default.freezenverticaldata != null) {
  94611. freezen_default.scrollAdapt();
  94612. const toffset = store_default.chartparam.luckysheetCurrentChartMoveObj.offset();
  94613. const tpsition = store_default.chartparam.luckysheetCurrentChartMoveObj.position();
  94614. store_default.chartparam.luckysheetCurrentChartMoveXy = [event2.pageX - toffset.left, event2.pageY - toffset.top, tpsition.left, tpsition.top, $("#luckysheet-scrollbar-x").scrollLeft(), $("#luckysheet-scrollbar-y").scrollTop()];
  94615. }
  94616. } else if (!!store_default.chartparam.luckysheetCurrentChartResize) {
  94617. const scrollTop = $("#luckysheet-cell-main").scrollTop(), scrollLeft = $("#luckysheet-cell-main").scrollLeft();
  94618. const mouse = mouseposition(event2.pageX, event2.pageY);
  94619. const x = mouse[0] + scrollLeft;
  94620. const y = mouse[1] + scrollTop;
  94621. if (x < 0 || y < 0) {
  94622. return false;
  94623. }
  94624. const myh = store_default.chartparam.luckysheetCurrentChartResizeObj.height(), myw = store_default.chartparam.luckysheetCurrentChartResizeObj.width();
  94625. const topchange = y - store_default.chartparam.luckysheetCurrentChartResizeXy[1], leftchange = x - store_default.chartparam.luckysheetCurrentChartResizeXy[0];
  94626. let top = store_default.chartparam.luckysheetCurrentChartResizeXy[5], height = store_default.chartparam.luckysheetCurrentChartResizeXy[3], left = store_default.chartparam.luckysheetCurrentChartResizeXy[4], width = store_default.chartparam.luckysheetCurrentChartResizeXy[2];
  94627. if (store_default.chartparam.luckysheetCurrentChartResize == "lm" || store_default.chartparam.luckysheetCurrentChartResize == "lt" || store_default.chartparam.luckysheetCurrentChartResize == "lb") {
  94628. left = x;
  94629. width = store_default.chartparam.luckysheetCurrentChartResizeXy[2] - leftchange;
  94630. if (left > store_default.chartparam.luckysheetCurrentChartResizeXy[2] + store_default.chartparam.luckysheetCurrentChartResizeXy[4] - 60) {
  94631. left = store_default.chartparam.luckysheetCurrentChartResizeXy[2] + store_default.chartparam.luckysheetCurrentChartResizeXy[4] - 60;
  94632. width = store_default.chartparam.luckysheetCurrentChartResizeXy[2] - (store_default.chartparam.luckysheetCurrentChartResizeXy[2] + store_default.chartparam.luckysheetCurrentChartResizeXy[4] - 60 - store_default.chartparam.luckysheetCurrentChartResizeXy[0]);
  94633. } else if (left <= 0) {
  94634. left = 0;
  94635. width = store_default.chartparam.luckysheetCurrentChartResizeXy[2] + store_default.chartparam.luckysheetCurrentChartResizeXy[0];
  94636. }
  94637. }
  94638. if (store_default.chartparam.luckysheetCurrentChartResize == "rm" || store_default.chartparam.luckysheetCurrentChartResize == "rt" || store_default.chartparam.luckysheetCurrentChartResize == "rb") {
  94639. width = store_default.chartparam.luckysheetCurrentChartResizeXy[2] + leftchange;
  94640. if (width < 60) {
  94641. width = 60;
  94642. } else if (width >= store_default.chartparam.luckysheetCurrentChartResizeWinW - store_default.chartparam.luckysheetCurrentChartResizeXy[4] - 22 - 36) {
  94643. width = store_default.chartparam.luckysheetCurrentChartResizeWinW - store_default.chartparam.luckysheetCurrentChartResizeXy[4] - 22 - 36;
  94644. }
  94645. }
  94646. if (store_default.chartparam.luckysheetCurrentChartResize == "mt" || store_default.chartparam.luckysheetCurrentChartResize == "lt" || store_default.chartparam.luckysheetCurrentChartResize == "rt") {
  94647. top = y;
  94648. height = store_default.chartparam.luckysheetCurrentChartResizeXy[3] - topchange;
  94649. if (top > store_default.chartparam.luckysheetCurrentChartResizeXy[3] + store_default.chartparam.luckysheetCurrentChartResizeXy[5] - 60) {
  94650. top = store_default.chartparam.luckysheetCurrentChartResizeXy[3] + store_default.chartparam.luckysheetCurrentChartResizeXy[5] - 60;
  94651. height = store_default.chartparam.luckysheetCurrentChartResizeXy[3] - (store_default.chartparam.luckysheetCurrentChartResizeXy[3] + store_default.chartparam.luckysheetCurrentChartResizeXy[5] - 60 - store_default.chartparam.luckysheetCurrentChartResizeXy[1]);
  94652. } else if (top <= 0) {
  94653. top = 0;
  94654. height = store_default.chartparam.luckysheetCurrentChartResizeXy[3] + store_default.chartparam.luckysheetCurrentChartResizeXy[1];
  94655. }
  94656. }
  94657. if (store_default.chartparam.luckysheetCurrentChartResize == "mb" || store_default.chartparam.luckysheetCurrentChartResize == "lb" || store_default.chartparam.luckysheetCurrentChartResize == "rb") {
  94658. height = store_default.chartparam.luckysheetCurrentChartResizeXy[3] + topchange;
  94659. if (height < 60) {
  94660. height = 60;
  94661. } else if (height >= store_default.chartparam.luckysheetCurrentChartResizeWinH - store_default.chartparam.luckysheetCurrentChartResizeXy[5] - 42 - 6) {
  94662. height = store_default.chartparam.luckysheetCurrentChartResizeWinH - store_default.chartparam.luckysheetCurrentChartResizeXy[5] - 42 - 6;
  94663. }
  94664. }
  94665. const resizedata = {"top": top, "left": left, "height": height, "width": width};
  94666. store_default.chartparam.luckysheetCurrentChartResizeObj.css(resizedata);
  94667. store_default.resizeChart(store_default.chartparam.luckysheetCurrentChart);
  94668. } else if (imageCtrl_default.move) {
  94669. let mouse = mouseposition(event2.pageX, event2.pageY);
  94670. let x = mouse[0] + $("#luckysheet-cell-main").scrollLeft();
  94671. let y = mouse[1] + $("#luckysheet-cell-main").scrollTop();
  94672. let imgItem = imageCtrl_default.images[imageCtrl_default.currentImgId];
  94673. if (imgItem.isFixedPos) {
  94674. x = event2.pageX;
  94675. y = event2.pageY;
  94676. }
  94677. let myh = $("#luckysheet-modal-dialog-activeImage").height(), myw = $("#luckysheet-modal-dialog-activeImage").width();
  94678. let top = y - imageCtrl_default.moveXY[1], left = x - imageCtrl_default.moveXY[0];
  94679. let minTop = 0, maxTop = imageCtrl_default.currentWinH - myh - 42 - 6, minLeft = 0, maxLeft = imageCtrl_default.currentWinW - myw - 22 - 36;
  94680. if (imgItem.isFixedPos) {
  94681. minTop = store_default.infobarHeight + store_default.toolbarHeight + store_default.calculatebarHeight + store_default.columnHeaderHeight;
  94682. maxTop = minTop + store_default.cellmainHeight - store_default.cellMainSrollBarSize - myh;
  94683. minLeft = store_default.rowHeaderWidth;
  94684. maxLeft = minLeft + store_default.cellmainWidth - store_default.cellMainSrollBarSize - myw;
  94685. }
  94686. if (top < minTop) {
  94687. top = minTop;
  94688. }
  94689. if (top > maxTop) {
  94690. top = maxTop;
  94691. }
  94692. if (left < minLeft) {
  94693. left = minLeft;
  94694. }
  94695. if (left > maxLeft) {
  94696. left = maxLeft;
  94697. }
  94698. $("#luckysheet-modal-dialog-activeImage").css({"left": left, "top": top});
  94699. } else if (!!imageCtrl_default.resize) {
  94700. let mouse = mouseposition(event2.pageX, event2.pageY);
  94701. let scrollLeft = $("#luckysheet-cell-main").scrollLeft();
  94702. let scrollTop = $("#luckysheet-cell-main").scrollTop();
  94703. let x = mouse[0] + scrollLeft;
  94704. let y = mouse[1] + scrollTop;
  94705. if (x < 0 || y < 0) {
  94706. return false;
  94707. }
  94708. let resizeXY = imageCtrl_default.resizeXY;
  94709. let topchange = y - resizeXY[1], leftchange = x - resizeXY[0];
  94710. let top = resizeXY[5], height = resizeXY[3], left = resizeXY[4], width = resizeXY[2];
  94711. let resize2 = imageCtrl_default.resize;
  94712. let imgItem = imageCtrl_default.images[imageCtrl_default.currentImgId];
  94713. if (imgItem.isFixedPos) {
  94714. let minTop = store_default.infobarHeight + store_default.toolbarHeight + store_default.calculatebarHeight + store_default.columnHeaderHeight;
  94715. let minLeft = store_default.rowHeaderWidth;
  94716. if (resize2 == "lt") {
  94717. left = resizeXY[4] - resizeXY[6] + leftchange;
  94718. if (left < minLeft) {
  94719. left = minLeft;
  94720. }
  94721. if (left > resizeXY[4] - resizeXY[6] + resizeXY[2] - 1) {
  94722. left = resizeXY[4] - resizeXY[6] + resizeXY[2] - 1;
  94723. }
  94724. width = resizeXY[4] - resizeXY[6] + resizeXY[2] - left;
  94725. height = Math.round(width * (resizeXY[3] / resizeXY[2]));
  94726. top = resizeXY[5] - resizeXY[7] + resizeXY[3] - height;
  94727. if (top < minTop) {
  94728. top = minTop;
  94729. height = resizeXY[5] - resizeXY[7] + resizeXY[3] - top;
  94730. width = Math.round(height * (resizeXY[2] / resizeXY[3]));
  94731. left = resizeXY[4] - resizeXY[6] + resizeXY[2] - width;
  94732. }
  94733. if (top > resizeXY[5] - resizeXY[7] + resizeXY[3] - 1) {
  94734. top = resizeXY[5] - resizeXY[7] + resizeXY[3] - 1;
  94735. height = resizeXY[5] - resizeXY[7] + resizeXY[3] - top;
  94736. width = Math.round(height * (resizeXY[2] / resizeXY[3]));
  94737. left = resizeXY[4] - resizeXY[6] + resizeXY[2] - width;
  94738. }
  94739. } else if (resize2 == "lm") {
  94740. left = resizeXY[4] - resizeXY[6] + leftchange;
  94741. if (left < minLeft) {
  94742. left = minLeft;
  94743. }
  94744. if (left > resizeXY[4] - resizeXY[6] + resizeXY[2] - 1) {
  94745. left = resizeXY[4] - resizeXY[6] + resizeXY[2] - 1;
  94746. }
  94747. width = resizeXY[4] - resizeXY[6] + resizeXY[2] - left;
  94748. top = resizeXY[5] - resizeXY[7];
  94749. height = resizeXY[3];
  94750. } else if (resize2 == "lb") {
  94751. left = resizeXY[4] - resizeXY[6] + leftchange;
  94752. if (left < minLeft) {
  94753. left = minLeft;
  94754. }
  94755. if (left > resizeXY[4] - resizeXY[6] + resizeXY[2] - 1) {
  94756. left = resizeXY[4] - resizeXY[6] + resizeXY[2] - 1;
  94757. }
  94758. width = resizeXY[4] - resizeXY[6] + resizeXY[2] - left;
  94759. height = Math.round(width * (resizeXY[3] / resizeXY[2]));
  94760. top = resizeXY[5] - resizeXY[7];
  94761. if (height < 1) {
  94762. height = 1;
  94763. width = Math.round(height * (resizeXY[2] / resizeXY[3]));
  94764. left = resizeXY[4] - resizeXY[6] + resizeXY[2] - width;
  94765. }
  94766. if (height > minTop + store_default.cellmainHeight - store_default.cellMainSrollBarSize - top) {
  94767. height = minTop + store_default.cellmainHeight - store_default.cellMainSrollBarSize - top;
  94768. width = Math.round(height * (resizeXY[2] / resizeXY[3]));
  94769. left = resizeXY[4] - resizeXY[6] + resizeXY[2] - width;
  94770. }
  94771. } else if (resize2 == "rt") {
  94772. left = resizeXY[4] - resizeXY[6];
  94773. width = resizeXY[2] + leftchange;
  94774. if (width < 1) {
  94775. width = 1;
  94776. }
  94777. if (width > minLeft + store_default.cellmainWidth - store_default.cellMainSrollBarSize - left) {
  94778. width = minLeft + store_default.cellmainWidth - store_default.cellMainSrollBarSize - left;
  94779. }
  94780. height = Math.round(width * (resizeXY[3] / resizeXY[2]));
  94781. top = resizeXY[5] - resizeXY[7] + resizeXY[3] - height;
  94782. if (top < minTop) {
  94783. top = minTop;
  94784. height = resizeXY[5] - resizeXY[7] + resizeXY[3] - top;
  94785. width = Math.round(height * (resizeXY[2] / resizeXY[3]));
  94786. }
  94787. if (top > resizeXY[5] - resizeXY[7] + resizeXY[3] - 1) {
  94788. top = resizeXY[5] - resizeXY[7] + resizeXY[3] - 1;
  94789. height = resizeXY[5] - resizeXY[7] + resizeXY[3] - top;
  94790. width = Math.round(height * (resizeXY[2] / resizeXY[3]));
  94791. }
  94792. } else if (resize2 == "rm") {
  94793. left = resizeXY[4] - resizeXY[6];
  94794. width = resizeXY[2] + leftchange;
  94795. if (width < 1) {
  94796. width = 1;
  94797. }
  94798. if (width > minLeft + store_default.cellmainWidth - store_default.cellMainSrollBarSize - left) {
  94799. width = minLeft + store_default.cellmainWidth - store_default.cellMainSrollBarSize - left;
  94800. }
  94801. top = resizeXY[5] - resizeXY[7];
  94802. height = resizeXY[3];
  94803. } else if (resize2 == "rb") {
  94804. left = resizeXY[4] - resizeXY[6];
  94805. width = resizeXY[2] + leftchange;
  94806. if (width < 1) {
  94807. width = 1;
  94808. }
  94809. if (width > minLeft + store_default.cellmainWidth - store_default.cellMainSrollBarSize - left) {
  94810. width = minLeft + store_default.cellmainWidth - store_default.cellMainSrollBarSize - left;
  94811. }
  94812. height = Math.round(width * (resizeXY[3] / resizeXY[2]));
  94813. top = resizeXY[5] - resizeXY[7];
  94814. if (height < 1) {
  94815. height = 1;
  94816. width = Math.round(height * (resizeXY[2] / resizeXY[3]));
  94817. }
  94818. if (height > minTop + store_default.cellmainHeight - store_default.cellMainSrollBarSize - top) {
  94819. height = minTop + store_default.cellmainHeight - store_default.cellMainSrollBarSize - top;
  94820. width = Math.round(height * (resizeXY[2] / resizeXY[3]));
  94821. }
  94822. } else if (resize2 == "mt") {
  94823. left = resizeXY[4] - resizeXY[6];
  94824. width = resizeXY[2];
  94825. top = resizeXY[5] - resizeXY[7] + topchange;
  94826. if (top < minTop) {
  94827. top = minTop;
  94828. }
  94829. if (top > resizeXY[5] - resizeXY[7] + resizeXY[3] - 1) {
  94830. top = resizeXY[5] - resizeXY[7] + resizeXY[3] - 1;
  94831. }
  94832. height = resizeXY[5] - resizeXY[7] + resizeXY[3] - top;
  94833. } else if (resize2 == "mb") {
  94834. left = resizeXY[4] - resizeXY[6];
  94835. width = resizeXY[2];
  94836. top = resizeXY[5] - resizeXY[7];
  94837. height = resizeXY[3] + topchange;
  94838. if (height < 1) {
  94839. height = 1;
  94840. }
  94841. if (height > minTop + store_default.cellmainHeight - store_default.cellMainSrollBarSize - top) {
  94842. height = minTop + store_default.cellmainHeight - store_default.cellMainSrollBarSize - top;
  94843. }
  94844. }
  94845. } else {
  94846. if (resize2 == "lt") {
  94847. left = x;
  94848. width = resizeXY[2] - leftchange;
  94849. if (left > resizeXY[2] + resizeXY[4] - 1) {
  94850. left = resizeXY[2] + resizeXY[4] - 1;
  94851. width = resizeXY[2] + resizeXY[0] - (resizeXY[2] + resizeXY[4] - 1);
  94852. } else if (left <= 0) {
  94853. left = 0;
  94854. width = resizeXY[2] + resizeXY[0];
  94855. }
  94856. height = Math.round(width * (resizeXY[3] / resizeXY[2]));
  94857. top = resizeXY[3] + resizeXY[1] - height;
  94858. if (top > resizeXY[3] + resizeXY[5] - 1) {
  94859. top = resizeXY[3] + resizeXY[5] - 1;
  94860. height = resizeXY[3] + resizeXY[1] - (resizeXY[3] + resizeXY[5] - 1);
  94861. width = Math.round(height * (resizeXY[2] / resizeXY[3]));
  94862. left = resizeXY[2] + resizeXY[0] - width;
  94863. } else if (top <= 0) {
  94864. top = 0;
  94865. height = resizeXY[3] + resizeXY[1];
  94866. width = Math.round(height * (resizeXY[2] / resizeXY[3]));
  94867. left = resizeXY[2] + resizeXY[0] - width;
  94868. }
  94869. } else if (resize2 == "lm") {
  94870. left = x;
  94871. width = resizeXY[2] - leftchange;
  94872. if (left > resizeXY[2] + resizeXY[4] - 1) {
  94873. left = resizeXY[2] + resizeXY[4] - 1;
  94874. width = resizeXY[2] + resizeXY[0] - (resizeXY[2] + resizeXY[4] - 1);
  94875. } else if (left <= 0) {
  94876. left = 0;
  94877. width = resizeXY[2] + resizeXY[0];
  94878. }
  94879. } else if (resize2 == "lb") {
  94880. left = x;
  94881. width = resizeXY[2] - leftchange;
  94882. if (left > resizeXY[2] + resizeXY[4] - 1) {
  94883. left = resizeXY[2] + resizeXY[4] - 1;
  94884. width = resizeXY[2] + resizeXY[0] - (resizeXY[2] + resizeXY[4] - 1);
  94885. } else if (left <= 0) {
  94886. left = 0;
  94887. width = resizeXY[2] + resizeXY[0];
  94888. }
  94889. height = Math.round(width * (resizeXY[3] / resizeXY[2]));
  94890. if (height < 1) {
  94891. height = 1;
  94892. width = Math.round(height * (resizeXY[2] / resizeXY[3]));
  94893. left = resizeXY[2] + resizeXY[0] - width;
  94894. } else if (height >= imageCtrl_default.currentWinH - resizeXY[5] - 42 - 6) {
  94895. height = imageCtrl_default.currentWinH - resizeXY[5] - 42 - 6;
  94896. width = Math.round(height * (resizeXY[2] / resizeXY[3]));
  94897. left = resizeXY[2] + resizeXY[0] - width;
  94898. }
  94899. } else if (resize2 == "rt") {
  94900. width = resizeXY[2] + leftchange;
  94901. if (width < 1) {
  94902. width = 1;
  94903. } else if (width >= imageCtrl_default.currentWinW - resizeXY[4] - 22 - 36) {
  94904. width = imageCtrl_default.currentWinW - resizeXY[4] - 22 - 36;
  94905. }
  94906. height = Math.round(width * (resizeXY[3] / resizeXY[2]));
  94907. top = resizeXY[3] + resizeXY[1] - height;
  94908. if (top > resizeXY[3] + resizeXY[5] - 1) {
  94909. top = resizeXY[3] + resizeXY[5] - 1;
  94910. height = resizeXY[3] + resizeXY[1] - (resizeXY[3] + resizeXY[5] - 1);
  94911. width = Math.round(height * (resizeXY[2] / resizeXY[3]));
  94912. } else if (top <= 0) {
  94913. top = 0;
  94914. height = resizeXY[3] + resizeXY[1];
  94915. width = Math.round(height * (resizeXY[2] / resizeXY[3]));
  94916. }
  94917. } else if (resize2 == "rm") {
  94918. width = resizeXY[2] + leftchange;
  94919. if (width < 1) {
  94920. width = 1;
  94921. } else if (width >= imageCtrl_default.currentWinW - resizeXY[4] - 22 - 36) {
  94922. width = imageCtrl_default.currentWinW - resizeXY[4] - 22 - 36;
  94923. }
  94924. } else if (resize2 == "rb") {
  94925. width = resizeXY[2] + leftchange;
  94926. if (width < 1) {
  94927. width = 1;
  94928. } else if (width >= imageCtrl_default.currentWinW - resizeXY[4] - 22 - 36) {
  94929. width = imageCtrl_default.currentWinW - resizeXY[4] - 22 - 36;
  94930. }
  94931. height = Math.round(width * (resizeXY[3] / resizeXY[2]));
  94932. if (height < 1) {
  94933. height = 1;
  94934. width = Math.round(height * (resizeXY[2] / resizeXY[3]));
  94935. } else if (height >= imageCtrl_default.currentWinH - resizeXY[5] - 42 - 6) {
  94936. height = imageCtrl_default.currentWinH - resizeXY[5] - 42 - 6;
  94937. width = Math.round(height * (resizeXY[2] / resizeXY[3]));
  94938. }
  94939. } else if (resize2 == "mt") {
  94940. top = y;
  94941. height = resizeXY[3] - topchange;
  94942. if (top > resizeXY[3] + resizeXY[5] - 1) {
  94943. top = resizeXY[3] + resizeXY[5] - 1;
  94944. height = resizeXY[3] + resizeXY[1] - (resizeXY[3] + resizeXY[5] - 1);
  94945. } else if (top <= 0) {
  94946. top = 0;
  94947. height = resizeXY[3] + resizeXY[1];
  94948. }
  94949. } else if (resize2 == "mb") {
  94950. height = resizeXY[3] + topchange;
  94951. if (height < 1) {
  94952. height = 1;
  94953. } else if (height >= imageCtrl_default.currentWinH - resizeXY[5] - 42 - 6) {
  94954. height = imageCtrl_default.currentWinH - resizeXY[5] - 42 - 6;
  94955. }
  94956. }
  94957. }
  94958. $("#luckysheet-modal-dialog-activeImage").css({
  94959. "width": width,
  94960. "height": height,
  94961. "left": left,
  94962. "top": top
  94963. });
  94964. let scaleX = width / imgItem.crop.width;
  94965. let scaleY = height / imgItem.crop.height;
  94966. let defaultWidth = Math.round(imgItem.default.width * scaleX);
  94967. let defaultHeight = Math.round(imgItem.default.height * scaleY);
  94968. let offsetLeft = Math.round(imgItem.crop.offsetLeft * scaleX);
  94969. let offsetTop = Math.round(imgItem.crop.offsetTop * scaleY);
  94970. $("#luckysheet-modal-dialog-activeImage .luckysheet-modal-dialog-content").css({
  94971. "background-size": defaultWidth + "px " + defaultHeight + "px",
  94972. "background-position": -offsetLeft + "px " + -offsetTop + "px"
  94973. });
  94974. } else if (!!imageCtrl_default.cropChange) {
  94975. let mouse = mouseposition(event2.pageX, event2.pageY);
  94976. let x = mouse[0] + $("#luckysheet-cell-main").scrollLeft();
  94977. let y = mouse[1] + $("#luckysheet-cell-main").scrollTop();
  94978. if (x < 0 || y < 0) {
  94979. return false;
  94980. }
  94981. let cropChangeXY = imageCtrl_default.cropChangeXY;
  94982. let topchange = y - cropChangeXY[1], leftchange = x - cropChangeXY[0];
  94983. let imgItem = imageCtrl_default.images[imageCtrl_default.currentImgId];
  94984. let cropChange = imageCtrl_default.cropChange;
  94985. let width, height, offsetLeft, offsetTop;
  94986. if (cropChange == "lt") {
  94987. offsetLeft = imgItem.crop.offsetLeft + leftchange;
  94988. if (offsetLeft < 0) {
  94989. offsetLeft = 0;
  94990. }
  94991. if (offsetLeft > imgItem.crop.width + imgItem.crop.offsetLeft - 1) {
  94992. offsetLeft = imgItem.crop.width + imgItem.crop.offsetLeft - 1;
  94993. }
  94994. width = imgItem.crop.width + imgItem.crop.offsetLeft - offsetLeft;
  94995. offsetTop = imgItem.crop.offsetTop + topchange;
  94996. if (offsetTop < 0) {
  94997. offsetTop = 0;
  94998. }
  94999. if (offsetTop > imgItem.crop.height + imgItem.crop.offsetTop - 1) {
  95000. offsetTop = imgItem.crop.height + imgItem.crop.offsetTop - 1;
  95001. }
  95002. height = imgItem.crop.height + imgItem.crop.offsetTop - offsetTop;
  95003. } else if (cropChange == "lm") {
  95004. offsetLeft = imgItem.crop.offsetLeft + leftchange;
  95005. if (offsetLeft < 0) {
  95006. offsetLeft = 0;
  95007. }
  95008. if (offsetLeft > imgItem.crop.width + imgItem.crop.offsetLeft - 1) {
  95009. offsetLeft = imgItem.crop.width + imgItem.crop.offsetLeft - 1;
  95010. }
  95011. width = imgItem.crop.width + imgItem.crop.offsetLeft - offsetLeft;
  95012. offsetTop = imgItem.crop.offsetTop;
  95013. height = imgItem.crop.height;
  95014. } else if (cropChange == "lb") {
  95015. offsetLeft = imgItem.crop.offsetLeft + leftchange;
  95016. if (offsetLeft < 0) {
  95017. offsetLeft = 0;
  95018. }
  95019. if (offsetLeft > imgItem.crop.width + imgItem.crop.offsetLeft - 1) {
  95020. offsetLeft = imgItem.crop.width + imgItem.crop.offsetLeft - 1;
  95021. }
  95022. width = imgItem.crop.width + imgItem.crop.offsetLeft - offsetLeft;
  95023. offsetTop = imgItem.crop.offsetTop;
  95024. height = imgItem.crop.height + topchange;
  95025. if (height < 1) {
  95026. height = 1;
  95027. }
  95028. if (height > imgItem.default.height - offsetTop) {
  95029. height = imgItem.default.height - offsetTop;
  95030. }
  95031. } else if (cropChange == "rt") {
  95032. offsetLeft = imgItem.crop.offsetLeft;
  95033. width = imgItem.crop.width + leftchange;
  95034. if (width < 1) {
  95035. width = 1;
  95036. }
  95037. if (width > imgItem.default.width - offsetLeft) {
  95038. width = imgItem.default.width - offsetLeft;
  95039. }
  95040. offsetTop = imgItem.crop.offsetTop + topchange;
  95041. if (offsetTop < 0) {
  95042. offsetTop = 0;
  95043. }
  95044. if (offsetTop > imgItem.crop.height + imgItem.crop.offsetTop - 1) {
  95045. offsetTop = imgItem.crop.height + imgItem.crop.offsetTop - 1;
  95046. }
  95047. height = imgItem.crop.height + imgItem.crop.offsetTop - offsetTop;
  95048. } else if (cropChange == "rm") {
  95049. offsetLeft = imgItem.crop.offsetLeft;
  95050. width = imgItem.crop.width + leftchange;
  95051. if (width < 1) {
  95052. width = 1;
  95053. }
  95054. if (width > imgItem.default.width - offsetLeft) {
  95055. width = imgItem.default.width - offsetLeft;
  95056. }
  95057. offsetTop = imgItem.crop.offsetTop;
  95058. height = imgItem.crop.height;
  95059. } else if (cropChange == "rb") {
  95060. offsetLeft = imgItem.crop.offsetLeft;
  95061. width = imgItem.crop.width + leftchange;
  95062. if (width < 1) {
  95063. width = 1;
  95064. }
  95065. if (width > imgItem.default.width - offsetLeft) {
  95066. width = imgItem.default.width - offsetLeft;
  95067. }
  95068. offsetTop = imgItem.crop.offsetTop;
  95069. height = imgItem.crop.height + topchange;
  95070. if (height < 1) {
  95071. height = 1;
  95072. }
  95073. if (height > imgItem.default.height - offsetTop) {
  95074. height = imgItem.default.height - offsetTop;
  95075. }
  95076. } else if (cropChange == "mt") {
  95077. offsetLeft = imgItem.crop.offsetLeft;
  95078. width = imgItem.crop.width;
  95079. offsetTop = imgItem.crop.offsetTop + topchange;
  95080. if (offsetTop < 0) {
  95081. offsetTop = 0;
  95082. }
  95083. if (offsetTop > imgItem.crop.height + imgItem.crop.offsetTop - 1) {
  95084. offsetTop = imgItem.crop.height + imgItem.crop.offsetTop - 1;
  95085. }
  95086. height = imgItem.crop.height + imgItem.crop.offsetTop - offsetTop;
  95087. } else if (cropChange == "mb") {
  95088. offsetLeft = imgItem.crop.offsetLeft;
  95089. width = imgItem.crop.width;
  95090. offsetTop = imgItem.crop.offsetTop;
  95091. height = imgItem.crop.height + topchange;
  95092. if (height < 1) {
  95093. height = 1;
  95094. }
  95095. if (height > imgItem.default.height - offsetTop) {
  95096. height = imgItem.default.height - offsetTop;
  95097. }
  95098. }
  95099. let left = imgItem.default.left + offsetLeft;
  95100. let top = imgItem.default.top + offsetTop;
  95101. if (imgItem.isFixedPos) {
  95102. left = imgItem.fixedLeft + offsetLeft;
  95103. top = imgItem.fixedTop + offsetTop;
  95104. }
  95105. $("#luckysheet-modal-dialog-cropping").show().css({
  95106. "width": width,
  95107. "height": height,
  95108. "left": left,
  95109. "top": top
  95110. });
  95111. let imageUrlHandle = store_default.toJsonOptions && store_default.toJsonOptions["imageUrlHandle"];
  95112. let imgSrc = typeof imageUrlHandle === "function" ? imageUrlHandle(imgItem.src) : imgItem.src;
  95113. $("#luckysheet-modal-dialog-cropping .cropping-mask").css({
  95114. "width": imgItem.default.width,
  95115. "height": imgItem.default.height,
  95116. "background-image": "url(" + imgSrc + ")",
  95117. "left": -offsetLeft,
  95118. "top": -offsetTop
  95119. });
  95120. $("#luckysheet-modal-dialog-cropping .cropping-content").css({
  95121. "background-image": "url(" + imgSrc + ")",
  95122. "background-size": imgItem.default.width + "px " + imgItem.default.height + "px",
  95123. "background-position": -offsetLeft + "px " + -offsetTop + "px"
  95124. });
  95125. imageCtrl_default.cropChangeObj = {
  95126. width,
  95127. height,
  95128. offsetLeft,
  95129. offsetTop
  95130. };
  95131. } else if (postil_default.move) {
  95132. let mouse = mouseposition(event2.pageX, event2.pageY);
  95133. let x = mouse[0] + $("#luckysheet-cell-main").scrollLeft();
  95134. let y = mouse[1] + $("#luckysheet-cell-main").scrollTop();
  95135. let myh = postil_default.currentObj.outerHeight(), myw = postil_default.currentObj.outerWidth();
  95136. let top = y - postil_default.moveXY[1], left = x - postil_default.moveXY[0];
  95137. if (top < 0) {
  95138. top = 0;
  95139. }
  95140. if (top + myh + 42 + 6 > postil_default.currentWinH) {
  95141. top = postil_default.currentWinH - myh - 42 - 6;
  95142. }
  95143. if (left < 0) {
  95144. left = 0;
  95145. }
  95146. if (left + myw + 22 + 36 > postil_default.currentWinW) {
  95147. left = postil_default.currentWinW - myw - 22 - 36;
  95148. }
  95149. postil_default.currentObj.css({"left": left, "top": top});
  95150. } else if (!!postil_default.resize) {
  95151. let mouse = mouseposition(event2.pageX, event2.pageY);
  95152. let x = mouse[0] + $("#luckysheet-cell-main").scrollLeft();
  95153. let y = mouse[1] + $("#luckysheet-cell-main").scrollTop();
  95154. if (x < 0 || y < 0) {
  95155. return false;
  95156. }
  95157. let resizeXY = postil_default.resizeXY;
  95158. let topchange = y - resizeXY[1], leftchange = x - resizeXY[0];
  95159. let top = resizeXY[5], height = resizeXY[3], left = resizeXY[4], width = resizeXY[2];
  95160. let resize2 = postil_default.resize;
  95161. if (resize2 == "lm" || resize2 == "lt" || resize2 == "lb") {
  95162. left = x;
  95163. width = resizeXY[2] - leftchange;
  95164. if (left > resizeXY[2] + resizeXY[4] - 60) {
  95165. left = resizeXY[2] + resizeXY[4] - 60;
  95166. width = resizeXY[2] - (resizeXY[2] + resizeXY[4] - 60 - resizeXY[0]);
  95167. } else if (left <= 0) {
  95168. left = 0;
  95169. width = resizeXY[2] + resizeXY[0];
  95170. }
  95171. }
  95172. if (resize2 == "rm" || resize2 == "rt" || resize2 == "rb") {
  95173. width = resizeXY[2] + leftchange;
  95174. if (width < 60) {
  95175. width = 60;
  95176. } else if (width >= postil_default.currentWinW - resizeXY[4] - 22 - 36) {
  95177. width = postil_default.currentWinW - resizeXY[4] - 22 - 36;
  95178. }
  95179. }
  95180. if (resize2 == "mt" || resize2 == "lt" || resize2 == "rt") {
  95181. top = y;
  95182. height = resizeXY[3] - topchange;
  95183. if (top > resizeXY[3] + resizeXY[5] - 60) {
  95184. top = resizeXY[3] + resizeXY[5] - 60;
  95185. height = resizeXY[3] - (resizeXY[3] + resizeXY[5] - 60 - resizeXY[1]);
  95186. } else if (top <= 0) {
  95187. top = 0;
  95188. height = resizeXY[3] + resizeXY[1];
  95189. }
  95190. }
  95191. if (resize2 == "mb" || resize2 == "lb" || resize2 == "rb") {
  95192. height = resizeXY[3] + topchange;
  95193. if (height < 60) {
  95194. height = 60;
  95195. } else if (height >= postil_default.currentWinH - resizeXY[5] - 42 - 6) {
  95196. height = postil_default.currentWinH - resizeXY[5] - 42 - 6;
  95197. }
  95198. }
  95199. postil_default.currentObj.css({"width": width, "height": height, "left": left, "top": top});
  95200. } else if (!!formula_default.rangeResize) {
  95201. formula_default.rangeResizeDraging(event2, formula_default.rangeResizeObj, formula_default.rangeResizexy, formula_default.rangeResize, formula_default.rangeResizeWinW, formula_default.rangeResizeWinH, store_default.ch_width, store_default.rh_height);
  95202. } else if (!!formula_default.rangeMove) {
  95203. formula_default.rangeMoveDraging(event2, formula_default.rangeMovexy, formula_default.rangeMoveObj.data("range"), formula_default.rangeMoveObj, store_default.sheetBarHeight, store_default.statisticBarHeight);
  95204. } else if (!!store_default.chart_selection.rangeResize) {
  95205. store_default.chart_selection.rangeResizeDraging(event2, store_default.sheetBarHeight, store_default.statisticBarHeight);
  95206. } else if (!!store_default.chart_selection.rangeMove) {
  95207. store_default.chart_selection.rangeMoveDraging(event2, store_default.sheetBarHeight, store_default.statisticBarHeight);
  95208. }
  95209. store_default.jfautoscrollTimeout = window.requestAnimationFrame(mouseRender);
  95210. };
  95211. if (store_default.luckysheet_select_status) {
  95212. clearTimeout(store_default.countfuncTimeout);
  95213. store_default.countfuncTimeout = setTimeout(function() {
  95214. countfunc();
  95215. }, 500);
  95216. }
  95217. store_default.jfautoscrollTimeout = window.requestAnimationFrame(mouseRender);
  95218. }
  95219. });
  95220. $(document).on("mouseup.luckysheetEvent", function(event2) {
  95221. if (luckysheetConfigsetting_default && luckysheetConfigsetting_default.hook && luckysheetConfigsetting_default.hook.sheetMouseup) {
  95222. let mouse = mouseposition(event2.pageX, event2.pageY);
  95223. let x2 = mouse[0] + $("#luckysheet-cell-main").scrollLeft();
  95224. let y2 = mouse[1] + $("#luckysheet-cell-main").scrollTop();
  95225. let row_location = rowLocation(y2), row = row_location[1], row_pre = row_location[0], row_index = row_location[2];
  95226. let col_location = colLocation(x2), col = col_location[1], col_pre = col_location[0], col_index = col_location[2];
  95227. let margeset = menuButton_default.mergeborer(store_default.flowdata, row_index, col_index);
  95228. if (!!margeset) {
  95229. row = margeset.row[1];
  95230. row_pre = margeset.row[0];
  95231. row_index = margeset.row[2];
  95232. col = margeset.column[1];
  95233. col_pre = margeset.column[0];
  95234. col_index = margeset.column[2];
  95235. }
  95236. let sheetFile = sheetmanage_default.getSheetByIndex();
  95237. let moveState = {
  95238. functionResizeStatus: formula_default.functionResizeStatus,
  95239. horizontalmoveState: !!freezen_default.horizontalmovestate,
  95240. verticalmoveState: !!freezen_default.verticalmovestate,
  95241. pivotTableMoveState: !!pivotTable_default && pivotTable_default.movestate,
  95242. sheetMoveStatus: store_default.luckysheet_sheet_move_status,
  95243. scrollStatus: !!store_default.luckysheet_scroll_status,
  95244. selectStatus: !!store_default.luckysheet_select_status,
  95245. rowsSelectedStatus: !!store_default.luckysheet_rows_selected_status,
  95246. colsSelectedStatus: !!store_default.luckysheet_cols_selected_status,
  95247. cellSelectedMove: !!store_default.luckysheet_cell_selected_move,
  95248. cellSelectedExtend: !!store_default.luckysheet_cell_selected_extend,
  95249. colsChangeSize: !!store_default.luckysheet_cols_change_size,
  95250. rowsChangeSize: !!store_default.luckysheet_rows_change_size,
  95251. chartMove: !!store_default.chartparam.luckysheetCurrentChartMove,
  95252. chartResize: !!store_default.chartparam.luckysheetCurrentChartResize,
  95253. rangeResize: !!formula_default.rangeResize,
  95254. rangeMove: !!formula_default.rangeMove
  95255. };
  95256. let luckysheetTableContent = $("#luckysheetTableContent").get(0).getContext("2d");
  95257. method_default.createHookFunction("sheetMouseup", store_default.flowdata[row_index][col_index], {
  95258. r: row_index,
  95259. c: col_index,
  95260. "start_r": row_pre,
  95261. "start_c": col_pre,
  95262. "end_r": row,
  95263. "end_c": col
  95264. }, sheetFile, moveState, luckysheetTableContent);
  95265. }
  95266. if (store_default.luckysheet_select_status) {
  95267. clearTimeout(store_default.countfuncTimeout);
  95268. store_default.countfuncTimeout = setTimeout(function() {
  95269. countfunc();
  95270. }, 0);
  95271. if (menuButton_default.luckysheetPaintModelOn) {
  95272. selection_default.pasteHandlerOfPaintModel(store_default.luckysheet_copy_save);
  95273. if (menuButton_default.luckysheetPaintSingle) {
  95274. menuButton_default.cancelPaintModel();
  95275. }
  95276. }
  95277. }
  95278. store_default.luckysheet_select_status = false;
  95279. window.cancelAnimationFrame(store_default.jfautoscrollTimeout);
  95280. store_default.luckysheet_scroll_status = false;
  95281. $("#luckysheet-cell-selected").find(".luckysheet-cs-fillhandle").css("cursor", "crosshair").end().find(".luckysheet-cs-draghandle").css("cursor", "move");
  95282. $("#luckysheet-cell-main, #luckysheetTableContent, #luckysheet-sheettable_0").css("cursor", "default");
  95283. store_default.luckysheet_rows_selected_status = false;
  95284. store_default.luckysheet_cols_selected_status = false;
  95285. store_default.luckysheet_model_move_state = false;
  95286. if (formula_default.functionResizeStatus) {
  95287. formula_default.functionResizeStatus = false;
  95288. $("#luckysheet-wa-calculate-size").removeAttr("style");
  95289. }
  95290. if (!!freezen_default.horizontalmovestate) {
  95291. freezen_default.horizontalmovestate = false;
  95292. $("#luckysheet-freezebar-horizontal").removeClass("luckysheet-freezebar-active");
  95293. $("#luckysheet-freezebar-horizontal").find(".luckysheet-freezebar-horizontal-handle").css("cursor", "-webkit-grab");
  95294. if (freezen_default.freezenhorizontaldata[4] <= store_default.columnHeaderHeight) {
  95295. freezen_default.cancelFreezenHorizontal();
  95296. }
  95297. freezen_default.createAssistCanvas();
  95298. luckysheetrefreshgrid();
  95299. }
  95300. if (!!freezen_default.verticalmovestate) {
  95301. freezen_default.verticalmovestate = false;
  95302. $("#luckysheet-freezebar-vertical").removeClass("luckysheet-freezebar-active");
  95303. $("#luckysheet-freezebar-vertical").find(".luckysheet-freezebar-vertical-handle").css("cursor", "-webkit-grab");
  95304. if (freezen_default.freezenverticaldata[4] <= store_default.rowHeaderWidth) {
  95305. freezen_default.cancelFreezenVertical();
  95306. }
  95307. freezen_default.createAssistCanvas();
  95308. luckysheetrefreshgrid();
  95309. }
  95310. if (!!pivotTable_default && pivotTable_default.movestate) {
  95311. $("#luckysheet-modal-dialog-slider-pivot-move").remove();
  95312. pivotTable_default.movestate = false;
  95313. $("#luckysheet-modal-dialog-pivotTable-list, #luckysheet-modal-dialog-config-filter, #luckysheet-modal-dialog-config-row, #luckysheet-modal-dialog-config-column, #luckysheet-modal-dialog-config-value").css("cursor", "default");
  95314. if (pivotTable_default.movesave.containerid != "luckysheet-modal-dialog-pivotTable-list") {
  95315. let $cur = $(event2.target).closest(".luckysheet-modal-dialog-slider-config-list");
  95316. if ($cur.length == 0) {
  95317. if (pivotTable_default.movesave.containerid == "luckysheet-modal-dialog-config-value") {
  95318. pivotTable_default.resetOrderby(pivotTable_default.movesave.obj);
  95319. }
  95320. pivotTable_default.movesave.obj.remove();
  95321. pivotTable_default.showvaluecolrow();
  95322. $("#luckysheet-modal-dialog-pivotTable-list").find(".luckysheet-modal-dialog-slider-list-item").each(function() {
  95323. $(this).find(".luckysheet-slider-list-item-selected").find("i").remove();
  95324. });
  95325. $("#luckysheet-modal-dialog-config-filter, #luckysheet-modal-dialog-config-row, #luckysheet-modal-dialog-config-column, #luckysheet-modal-dialog-config-value").find(".luckysheet-modal-dialog-slider-config-item").each(function() {
  95326. let index2 = $(this).data("index");
  95327. $("#luckysheet-modal-dialog-pivotTable-list").find(".luckysheet-modal-dialog-slider-list-item").each(function() {
  95328. let $seleted = $(this).find(".luckysheet-slider-list-item-selected");
  95329. if ($(this).data("index") == index2 && $seleted.find("i").length == 0) {
  95330. $seleted.append('<i class="fa fa-check luckysheet-mousedown-cancel"></i>');
  95331. }
  95332. });
  95333. });
  95334. pivotTable_default.refreshPivotTable();
  95335. }
  95336. }
  95337. }
  95338. if (store_default.luckysheet_sheet_move_status) {
  95339. store_default.luckysheet_sheet_move_status = false;
  95340. store_default.luckysheet_sheet_move_data.activeobject.insertBefore($("#luckysheet-sheets-item-clone"));
  95341. store_default.luckysheet_sheet_move_data.activeobject.removeAttr("style");
  95342. $("#luckysheet-sheets-item-clone").remove();
  95343. store_default.luckysheet_sheet_move_data.cursorobject.css({"cursor": "pointer"});
  95344. store_default.luckysheet_sheet_move_data = {};
  95345. sheetmanage_default.reOrderAllSheet();
  95346. }
  95347. clearTimeout(store_default.chartparam.luckysheetCurrentChartMoveTimeout);
  95348. if (!!store_default.chartparam.luckysheetCurrentChartMove) {
  95349. store_default.chartparam.luckysheetCurrentChartMove = false;
  95350. if (store_default.chartparam.luckysheetInsertChartTosheetChange) {
  95351. var myTop = store_default.chartparam.luckysheetCurrentChartMoveObj.css("top"), myLeft = store_default.chartparam.luckysheetCurrentChartMoveObj.css("left"), scrollLeft = $("#luckysheet-cell-main").scrollLeft(), scrollTop = $("#luckysheet-cell-main").scrollTop();
  95352. var x = store_default.chartparam.luckysheetCurrentChartMoveXy[2];
  95353. var y = store_default.chartparam.luckysheetCurrentChartMoveXy[3];
  95354. var scrollLeft1 = store_default.chartparam.luckysheetCurrentChartMoveXy[4];
  95355. var scrollTop1 = store_default.chartparam.luckysheetCurrentChartMoveXy[5];
  95356. var chart_id = store_default.chartparam.luckysheetCurrentChartMoveObj.find(".luckysheet-modal-dialog-content").attr("id");
  95357. store_default.jfredo.push({"type": "moveChart", "chart_id": chart_id, "sheetIndex": store_default.currentSheetIndex, "myTop": myTop, "myLeft": myLeft, "scrollTop": scrollTop, "scrollLeft": scrollLeft, "x": x, "y": y, "scrollTop1": scrollTop1, "scrollLeft1": scrollLeft1});
  95358. }
  95359. }
  95360. if (!!store_default.chartparam.luckysheetCurrentChartResize) {
  95361. store_default.chartparam.luckysheetCurrentChartResize = null;
  95362. if (store_default.chartparam.luckysheetInsertChartTosheetChange) {
  95363. var myHeight = store_default.chartparam.luckysheetCurrentChartResizeObj.height(), myWidth = store_default.chartparam.luckysheetCurrentChartResizeObj.width(), scrollLeft = $("#luckysheet-cell-main").scrollLeft(), scrollTop = $("#luckysheet-cell-main").scrollTop();
  95364. var myTop = store_default.chartparam.luckysheetCurrentChartMoveObj.css("top"), myLeft = store_default.chartparam.luckysheetCurrentChartMoveObj.css("left");
  95365. var chart_id = store_default.chartparam.luckysheetCurrentChartResizeObj.find(".luckysheet-modal-dialog-content").attr("id");
  95366. var myWidth1 = store_default.chartparam.luckysheetCurrentChartResizeXy[2];
  95367. var myHeight1 = store_default.chartparam.luckysheetCurrentChartResizeXy[3];
  95368. var x = store_default.chartparam.luckysheetCurrentChartResizeXy[4];
  95369. var y = store_default.chartparam.luckysheetCurrentChartResizeXy[5];
  95370. var scrollLeft1 = store_default.chartparam.luckysheetCurrentChartResizeXy[6];
  95371. var scrollTop1 = store_default.chartparam.luckysheetCurrentChartResizeXy[7];
  95372. store_default.jfredo.push({"type": "resizeChart", "chart_id": chart_id, "sheetIndex": store_default.currentSheetIndex, "myTop": myTop, "myLeft": myLeft, "myHeight": myHeight, "myWidth": myWidth, "scrollTop": scrollTop, "scrollLeft": scrollLeft, "x": x, "y": y, "myWidth1": myWidth1, "myHeight1": myHeight1, "scrollTop1": scrollTop1, "scrollLeft1": scrollLeft1});
  95373. }
  95374. }
  95375. if (!!formula_default.rangeResize) {
  95376. formula_default.rangeResizeDragged(event2, formula_default.rangeResizeObj, formula_default.rangeResize, formula_default.rangeResizexy, formula_default.rangeResizeWinW, formula_default.rangeResizeWinH);
  95377. }
  95378. if (imageCtrl_default.move) {
  95379. imageCtrl_default.moveImgItem();
  95380. }
  95381. if (imageCtrl_default.resize) {
  95382. imageCtrl_default.resizeImgItem();
  95383. }
  95384. if (imageCtrl_default.cropChange) {
  95385. imageCtrl_default.cropChangeImgItem();
  95386. }
  95387. if (postil_default.move) {
  95388. postil_default.move = false;
  95389. let ps_id = postil_default.currentObj.closest(".luckysheet-postil-show").attr("id");
  95390. let ps_r = ps_id.split("luckysheet-postil-show_")[1].split("_")[0];
  95391. let ps_c = ps_id.split("luckysheet-postil-show_")[1].split("_")[1];
  95392. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  95393. let rc = [];
  95394. d[ps_r][ps_c].ps.left = postil_default.currentObj.position().left;
  95395. d[ps_r][ps_c].ps.top = postil_default.currentObj.position().top;
  95396. d[ps_r][ps_c].ps.value = postil_default.currentObj.find(".formulaInputFocus").html().replaceAll("<div>", "\n").replaceAll(/<(.*)>.*?|<(.*) \/>/g, "").trim();
  95397. rc.push(ps_r + "_" + ps_c);
  95398. postil_default.ref(d, rc);
  95399. $("#" + ps_id).remove();
  95400. if (d[ps_r][ps_c].ps.isshow) {
  95401. postil_default.buildPs(ps_r, ps_c, d[ps_r][ps_c].ps);
  95402. $("#" + ps_id).addClass("luckysheet-postil-show-active");
  95403. $("#" + ps_id).find(".luckysheet-postil-dialog-resize").show();
  95404. } else {
  95405. postil_default.editPs(ps_r, ps_c);
  95406. }
  95407. }
  95408. if (!!postil_default.resize) {
  95409. postil_default.resize = null;
  95410. let ps_id = postil_default.currentObj.closest(".luckysheet-postil-show").attr("id");
  95411. let ps_r = ps_id.split("luckysheet-postil-show_")[1].split("_")[0];
  95412. let ps_c = ps_id.split("luckysheet-postil-show_")[1].split("_")[1];
  95413. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  95414. let rc = [];
  95415. d[ps_r][ps_c].ps.left = postil_default.currentObj.position().left;
  95416. d[ps_r][ps_c].ps.top = postil_default.currentObj.position().top;
  95417. d[ps_r][ps_c].ps.width = postil_default.currentObj.outerWidth();
  95418. d[ps_r][ps_c].ps.height = postil_default.currentObj.outerHeight();
  95419. d[ps_r][ps_c].ps.value = postil_default.currentObj.find(".formulaInputFocus").html().replaceAll("<div>", "\n").replaceAll(/<(.*)>.*?|<(.*) \/>/g, "").trim();
  95420. rc.push(ps_r + "_" + ps_c);
  95421. postil_default.ref(d, rc);
  95422. $("#" + ps_id).remove();
  95423. if (d[ps_r][ps_c].ps.isshow) {
  95424. postil_default.buildPs(ps_r, ps_c, d[ps_r][ps_c].ps);
  95425. $("#" + ps_id).addClass("luckysheet-postil-show-active");
  95426. $("#" + ps_id).find(".luckysheet-postil-dialog-resize").show();
  95427. } else {
  95428. postil_default.editPs(ps_r, ps_c);
  95429. }
  95430. }
  95431. if (store_default.luckysheet_rows_change_size) {
  95432. store_default.luckysheet_rows_change_size = false;
  95433. $("#luckysheet-change-size-line").hide();
  95434. $("#luckysheet-rows-change-size").css("opacity", 0);
  95435. $("#luckysheet-sheettable, #luckysheet-rows-h, #luckysheet-rows-h canvas").css("cursor", "default");
  95436. let mouse = mouseposition(event2.pageX, event2.pageY);
  95437. let scrollTop2 = $("#luckysheet-rows-h").scrollTop();
  95438. let y2 = mouse[1] + scrollTop2;
  95439. let winH = $(window).height();
  95440. let row_location = rowLocation(y2), row = row_location[1], row_pre = row_location[0], row_index = row_location[2];
  95441. let size = y2 + 3 - store_default.luckysheet_rows_change_size_start[0];
  95442. if (y2 + 3 - store_default.luckysheet_rows_change_size_start[0] < 19) {
  95443. size = 19;
  95444. }
  95445. if (y2 >= winH - 200 + scrollTop2) {
  95446. size = winH - 200 - store_default.luckysheet_rows_change_size_start[0] + scrollTop2;
  95447. }
  95448. let cfg = $.extend(true, {}, store_default.config);
  95449. if (cfg["rowlen"] == null) {
  95450. cfg["rowlen"] = {};
  95451. }
  95452. if (cfg["customHeight"] == null) {
  95453. cfg["customHeight"] = {};
  95454. }
  95455. cfg["customHeight"][store_default.luckysheet_rows_change_size_start[1]] = 1;
  95456. const changeRowIndex = store_default.luckysheet_rows_change_size_start[1];
  95457. let changeRowSelected = false;
  95458. if (store_default["luckysheet_select_save"].length > 0) {
  95459. store_default["luckysheet_select_save"].filter((select) => select.row_select).some((select) => {
  95460. if (changeRowIndex >= select.row[0] && changeRowIndex <= select.row[1]) {
  95461. changeRowSelected = true;
  95462. }
  95463. return changeRowSelected;
  95464. });
  95465. }
  95466. if (changeRowSelected) {
  95467. store_default["luckysheet_select_save"].filter((select) => select.row_select).forEach((select) => {
  95468. for (let r2 = select.row[0]; r2 <= select.row[1]; r2++) {
  95469. cfg["rowlen"][r2] = Math.ceil(size / store_default.zoomRatio);
  95470. }
  95471. });
  95472. } else {
  95473. cfg["rowlen"][store_default.luckysheet_rows_change_size_start[1]] = Math.ceil(size / store_default.zoomRatio);
  95474. }
  95475. let images = imageCtrl_default.moveChangeSize("row", store_default.luckysheet_rows_change_size_start[1], size);
  95476. if (store_default.clearjfundo) {
  95477. store_default.jfundo.length = 0;
  95478. store_default.jfredo.push({
  95479. "type": "resize",
  95480. "ctrlType": "resizeR",
  95481. "sheetIndex": store_default.currentSheetIndex,
  95482. "config": $.extend(true, {}, store_default.config),
  95483. "curconfig": $.extend(true, {}, cfg),
  95484. "images": $.extend(true, {}, imageCtrl_default.images),
  95485. "curImages": $.extend(true, {}, images)
  95486. });
  95487. }
  95488. store_default.config = cfg;
  95489. store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)].config = store_default.config;
  95490. server_default.saveParam("cg", store_default.currentSheetIndex, cfg["rowlen"], {"k": "rowlen"});
  95491. store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)].images = images;
  95492. server_default.saveParam("all", store_default.currentSheetIndex, images, {"k": "images"});
  95493. imageCtrl_default.images = images;
  95494. imageCtrl_default.allImagesShow();
  95495. jfrefreshgrid_rhcw(store_default.flowdata.length, null);
  95496. }
  95497. if (store_default.luckysheet_cols_change_size) {
  95498. store_default.luckysheet_cols_change_size = false;
  95499. $("#luckysheet-change-size-line").hide();
  95500. $("#luckysheet-cols-change-size").css("opacity", 0);
  95501. $("#luckysheet-sheettable, #luckysheet-cols-h-c, .luckysheet-cols-h-cells, .luckysheet-cols-h-cells canvas").css("cursor", "default");
  95502. let mouse = mouseposition(event2.pageX, event2.pageY);
  95503. let scrollLeft2 = $("#luckysheet-cols-h-c").scrollLeft();
  95504. let x2 = mouse[0] + scrollLeft2;
  95505. let winW = $(window).width();
  95506. let row_index = store_default.visibledatarow.length - 1, row = store_default.visibledatarow[row_index], row_pre = 0;
  95507. let col_location = colLocation(x2), col = col_location[1], col_pre = col_location[0], col_index = col_location[2];
  95508. let size = x2 + 3 - store_default.luckysheet_cols_change_size_start[0];
  95509. let firstcolumnlen = store_default.defaultcollen;
  95510. if (store_default.config["columnlen"] != null && store_default.config["columnlen"][store_default.luckysheet_cols_change_size_start[1]] != null) {
  95511. firstcolumnlen = store_default.config["columnlen"][store_default.luckysheet_cols_change_size_start[1]];
  95512. }
  95513. if (Math.abs(size - firstcolumnlen) < 3) {
  95514. return;
  95515. }
  95516. if (x2 + 3 - store_default.luckysheet_cols_change_size_start[0] < 30) {
  95517. size = 30;
  95518. }
  95519. if (x2 >= winW - 100 + scrollLeft2) {
  95520. size = winW - 100 - store_default.luckysheet_cols_change_size_start[0] + scrollLeft2;
  95521. }
  95522. let cfg = $.extend(true, {}, store_default.config);
  95523. if (cfg["columnlen"] == null) {
  95524. cfg["columnlen"] = {};
  95525. }
  95526. if (cfg["customWidth"] == null) {
  95527. cfg["customWidth"] = {};
  95528. }
  95529. cfg["customWidth"][store_default.luckysheet_cols_change_size_start[1]] = 1;
  95530. const changeColumnIndex = store_default.luckysheet_cols_change_size_start[1];
  95531. let changeColumnSelected = false;
  95532. if (store_default["luckysheet_select_save"].length > 0) {
  95533. store_default["luckysheet_select_save"].filter((select) => select.column_select).some((select) => {
  95534. if (changeColumnIndex >= select.column[0] && changeColumnIndex <= select.column[1]) {
  95535. changeColumnSelected = true;
  95536. }
  95537. return changeColumnSelected;
  95538. });
  95539. }
  95540. if (changeColumnSelected) {
  95541. store_default["luckysheet_select_save"].filter((select) => select.column_select).forEach((select) => {
  95542. for (let r2 = select.column[0]; r2 <= select.column[1]; r2++) {
  95543. cfg["columnlen"][r2] = Math.ceil(size / store_default.zoomRatio);
  95544. }
  95545. });
  95546. } else {
  95547. cfg["columnlen"][store_default.luckysheet_cols_change_size_start[1]] = Math.ceil(size / store_default.zoomRatio);
  95548. }
  95549. let images = imageCtrl_default.moveChangeSize("column", store_default.luckysheet_cols_change_size_start[1], size);
  95550. if (store_default.clearjfundo) {
  95551. store_default.jfundo.length = 0;
  95552. store_default.jfredo.push({
  95553. "type": "resize",
  95554. "ctrlType": "resizeC",
  95555. "sheetIndex": store_default.currentSheetIndex,
  95556. "config": $.extend(true, {}, store_default.config),
  95557. "curconfig": $.extend(true, {}, cfg),
  95558. "images": $.extend(true, {}, imageCtrl_default.images),
  95559. "curImages": $.extend(true, {}, images)
  95560. });
  95561. }
  95562. store_default.config = cfg;
  95563. store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)].config = store_default.config;
  95564. server_default.saveParam("cg", store_default.currentSheetIndex, cfg["columnlen"], {"k": "columnlen"});
  95565. store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)].images = images;
  95566. server_default.saveParam("all", store_default.currentSheetIndex, images, {"k": "images"});
  95567. imageCtrl_default.images = images;
  95568. imageCtrl_default.allImagesShow();
  95569. jfrefreshgrid_rhcw(null, store_default.flowdata[0].length);
  95570. setTimeout(function() {
  95571. luckysheetrefreshgrid();
  95572. }, 1);
  95573. }
  95574. if (formula_default.rangeMove) {
  95575. formula_default.rangeMoveDragged(formula_default.rangeMoveObj);
  95576. }
  95577. if (store_default.luckysheet_cell_selected_move) {
  95578. $("#luckysheet-cell-selected-move").hide();
  95579. store_default.luckysheet_cell_selected_move = false;
  95580. let mouse = mouseposition(event2.pageX, event2.pageY);
  95581. if (!checkProtectionLockedRangeList(store_default.luckysheet_select_save, store_default.currentSheetIndex)) {
  95582. return;
  95583. }
  95584. let scrollLeft2 = $("#luckysheet-cell-main").scrollLeft();
  95585. let scrollTop2 = $("#luckysheet-cell-main").scrollTop();
  95586. let x2 = mouse[0] + scrollLeft2;
  95587. let y2 = mouse[1] + scrollTop2;
  95588. let winH = $(window).height() + scrollTop2 - store_default.sheetBarHeight - store_default.statisticBarHeight, winW = $(window).width() + scrollLeft2;
  95589. let row_index = rowLocation(y2)[2];
  95590. let col_index = colLocation(x2)[2];
  95591. let row_index_original = store_default.luckysheet_cell_selected_move_index[0], col_index_original = store_default.luckysheet_cell_selected_move_index[1];
  95592. if (row_index == row_index_original && col_index == col_index_original) {
  95593. return;
  95594. }
  95595. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  95596. let last = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1];
  95597. let data = getdatabyselection(last);
  95598. let cfg = $.extend(true, {}, store_default.config);
  95599. if (cfg["merge"] == null) {
  95600. cfg["merge"] = {};
  95601. }
  95602. if (cfg["rowlen"] == null) {
  95603. cfg["rowlen"] = {};
  95604. }
  95605. if (hasPartMC(cfg, last["row"][0], last["row"][1], last["column"][0], last["column"][1])) {
  95606. if (isEditMode()) {
  95607. alert(locale_drag2.noMerge);
  95608. } else {
  95609. tooltip_default.info('<i class="fa fa-exclamation-triangle"></i>', locale_drag2.noMerge);
  95610. }
  95611. return;
  95612. }
  95613. let row_s = last["row"][0] - row_index_original + row_index, row_e = last["row"][1] - row_index_original + row_index;
  95614. let col_s = last["column"][0] - col_index_original + col_index, col_e = last["column"][1] - col_index_original + col_index;
  95615. if (!checkProtectionLockedRangeList([{row: [row_s, row_e], column: [col_s, col_e]}], store_default.currentSheetIndex)) {
  95616. return;
  95617. }
  95618. if (row_s < 0 || y2 < 0) {
  95619. row_s = 0;
  95620. row_e = last["row"][1] - last["row"][0];
  95621. }
  95622. if (col_s < 0 || x2 < 0) {
  95623. col_s = 0;
  95624. col_e = last["column"][1] - last["column"][0];
  95625. }
  95626. if (row_e >= store_default.visibledatarow[store_default.visibledatarow.length - 1] || y2 > winH) {
  95627. row_s = store_default.visibledatarow.length - 1 - last["row"][1] + last["row"][0];
  95628. row_e = store_default.visibledatarow.length - 1;
  95629. }
  95630. if (col_e >= store_default.visibledatacolumn[store_default.visibledatacolumn.length - 1] || x2 > winW) {
  95631. col_s = store_default.visibledatacolumn.length - 1 - last["column"][1] + last["column"][0];
  95632. col_e = store_default.visibledatacolumn.length - 1;
  95633. }
  95634. if (hasPartMC(cfg, row_s, row_e, col_s, col_e)) {
  95635. if (isEditMode()) {
  95636. alert(locale_drag2.noMerge);
  95637. } else {
  95638. tooltip_default.info('<i class="fa fa-exclamation-triangle"></i>', locale_drag2.noMerge);
  95639. }
  95640. return;
  95641. }
  95642. let borderInfoCompute = getBorderInfoCompute(store_default.currentSheetIndex);
  95643. let RowlChange = null;
  95644. for (let r2 = last["row"][0]; r2 <= last["row"][1]; r2++) {
  95645. if (r2 in cfg["rowlen"]) {
  95646. RowlChange = true;
  95647. }
  95648. for (let c2 = last["column"][0]; c2 <= last["column"][1]; c2++) {
  95649. let cell = d[r2][c2];
  95650. if (getObjType(cell) == "object" && "mc" in cell) {
  95651. if (cell["mc"].r + "_" + cell["mc"].c in cfg["merge"]) {
  95652. delete cfg["merge"][cell["mc"].r + "_" + cell["mc"].c];
  95653. }
  95654. }
  95655. d[r2][c2] = null;
  95656. }
  95657. }
  95658. if (cfg["borderInfo"] && cfg["borderInfo"].length > 0) {
  95659. let borderInfo = [];
  95660. for (let i2 = 0; i2 < cfg["borderInfo"].length; i2++) {
  95661. let bd_rangeType = cfg["borderInfo"][i2].rangeType;
  95662. if (bd_rangeType == "range") {
  95663. let bd_range = cfg["borderInfo"][i2].range;
  95664. let bd_emptyRange = [];
  95665. for (let j = 0; j < bd_range.length; j++) {
  95666. bd_emptyRange = bd_emptyRange.concat(conditionformat_default.CFSplitRange(bd_range[j], {"row": last["row"], "column": last["column"]}, {"row": [row_s, row_e], "column": [col_s, col_e]}, "restPart"));
  95667. }
  95668. cfg["borderInfo"][i2].range = bd_emptyRange;
  95669. borderInfo.push(cfg["borderInfo"][i2]);
  95670. } else if (bd_rangeType == "cell") {
  95671. let bd_r = cfg["borderInfo"][i2].value.row_index;
  95672. let bd_c = cfg["borderInfo"][i2].value.col_index;
  95673. if (!(bd_r >= last["row"][0] && bd_r <= last["row"][1] && bd_c >= last["column"][0] && bd_c <= last["column"][1])) {
  95674. borderInfo.push(cfg["borderInfo"][i2]);
  95675. }
  95676. }
  95677. }
  95678. cfg["borderInfo"] = borderInfo;
  95679. }
  95680. let offsetMC = {};
  95681. for (let r2 = 0; r2 < data.length; r2++) {
  95682. for (let c2 = 0; c2 < data[0].length; c2++) {
  95683. if (borderInfoCompute[r2 + last["row"][0] + "_" + (c2 + last["column"][0])]) {
  95684. let bd_obj = {
  95685. "rangeType": "cell",
  95686. "value": {
  95687. "row_index": r2 + row_s,
  95688. "col_index": c2 + col_s,
  95689. "l": borderInfoCompute[r2 + last["row"][0] + "_" + (c2 + last["column"][0])].l,
  95690. "r": borderInfoCompute[r2 + last["row"][0] + "_" + (c2 + last["column"][0])].r,
  95691. "t": borderInfoCompute[r2 + last["row"][0] + "_" + (c2 + last["column"][0])].t,
  95692. "b": borderInfoCompute[r2 + last["row"][0] + "_" + (c2 + last["column"][0])].b
  95693. }
  95694. };
  95695. if (cfg["borderInfo"] == null) {
  95696. cfg["borderInfo"] = [];
  95697. }
  95698. cfg["borderInfo"].push(bd_obj);
  95699. }
  95700. let value = "";
  95701. if (data[r2] != null && data[r2][c2] != null) {
  95702. value = data[r2][c2];
  95703. }
  95704. if (getObjType(value) == "object" && "mc" in value) {
  95705. let mc = $.extend(true, {}, value["mc"]);
  95706. if ("rs" in value["mc"]) {
  95707. offsetMC[mc.r + "_" + mc.c] = [r2 + row_s, c2 + col_s];
  95708. value["mc"].r = r2 + row_s;
  95709. value["mc"].c = c2 + col_s;
  95710. cfg["merge"][r2 + row_s + "_" + (c2 + col_s)] = value["mc"];
  95711. } else {
  95712. value["mc"].r = offsetMC[mc.r + "_" + mc.c][0];
  95713. value["mc"].c = offsetMC[mc.r + "_" + mc.c][1];
  95714. }
  95715. }
  95716. d[r2 + row_s][c2 + col_s] = value;
  95717. }
  95718. }
  95719. if (RowlChange) {
  95720. cfg = rowlenByRange(d, last["row"][0], last["row"][1], cfg);
  95721. cfg = rowlenByRange(d, row_s, row_e, cfg);
  95722. }
  95723. let cdformat = $.extend(true, [], store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)]["luckysheet_conditionformat_save"]);
  95724. if (cdformat != null && cdformat.length > 0) {
  95725. for (let i2 = 0; i2 < cdformat.length; i2++) {
  95726. let cdformat_cellrange = cdformat[i2].cellrange;
  95727. let emptyRange = [];
  95728. for (let j = 0; j < cdformat_cellrange.length; j++) {
  95729. let range3 = conditionformat_default.CFSplitRange(cdformat_cellrange[j], {"row": last["row"], "column": last["column"]}, {"row": [row_s, row_e], "column": [col_s, col_e]}, "allPart");
  95730. emptyRange = emptyRange.concat(range3);
  95731. }
  95732. cdformat[i2].cellrange = emptyRange;
  95733. }
  95734. }
  95735. let rf;
  95736. if (store_default.luckysheet_select_save[0].row_focus == store_default.luckysheet_select_save[0].row[0]) {
  95737. rf = row_s;
  95738. } else {
  95739. rf = row_e;
  95740. }
  95741. let cf;
  95742. if (store_default.luckysheet_select_save[0].column_focus == store_default.luckysheet_select_save[0].column[0]) {
  95743. cf = col_s;
  95744. } else {
  95745. cf = col_e;
  95746. }
  95747. let range2 = [];
  95748. range2.push({"row": last["row"], "column": last["column"]});
  95749. range2.push({"row": [row_s, row_e], "column": [col_s, col_e]});
  95750. last["row"] = [row_s, row_e];
  95751. last["column"] = [col_s, col_e];
  95752. last["row_focus"] = rf;
  95753. last["column_focus"] = cf;
  95754. let allParam = {
  95755. "cfg": cfg,
  95756. "RowlChange": RowlChange,
  95757. "cdformat": cdformat
  95758. };
  95759. jfrefreshgrid(d, range2, allParam);
  95760. selectHightlightShow();
  95761. $("#luckysheet-sheettable").css("cursor", "default");
  95762. clearTimeout(store_default.countfuncTimeout);
  95763. store_default.countfuncTimeout = setTimeout(function() {
  95764. countfunc();
  95765. }, 500);
  95766. }
  95767. if (store_default.chart_selection.rangeMove) {
  95768. store_default.chart_selection.rangeMoveDragged();
  95769. }
  95770. if (!!store_default.chart_selection.rangeResize) {
  95771. store_default.chart_selection.rangeResizeDragged();
  95772. }
  95773. if (store_default.luckysheet_cell_selected_extend) {
  95774. store_default.luckysheet_cell_selected_extend = false;
  95775. $("#luckysheet-cell-selected-extend").hide();
  95776. if (!checkProtectionLockedRangeList(store_default.luckysheet_select_save, store_default.currentSheetIndex)) {
  95777. return;
  95778. }
  95779. let mouse = mouseposition(event2.pageX, event2.pageY);
  95780. let scrollLeft2 = $("#luckysheet-cell-main").scrollLeft();
  95781. let scrollTop2 = $("#luckysheet-cell-main").scrollTop();
  95782. let x2 = mouse[0] + scrollLeft2 - 5;
  95783. let y2 = mouse[1] + scrollTop2 - 5;
  95784. let winH = $(window).height() + scrollTop2 - store_default.sheetBarHeight - store_default.statisticBarHeight, winW = $(window).width() + scrollLeft2;
  95785. let row_location = rowLocation(y2), row = row_location[1], row_pre = row_location[0], row_index = row_location[2];
  95786. let col_location = colLocation(x2), col = col_location[1], col_pre = col_location[0], col_index = col_location[2];
  95787. let row_index_original = store_default.luckysheet_cell_selected_extend_index[0], col_index_original = store_default.luckysheet_cell_selected_extend_index[1];
  95788. let last = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1];
  95789. let row_s = last["row"][0], row_e = last["row"][1];
  95790. let col_s = last["column"][0], col_e = last["column"][1];
  95791. if (row_s < 0 || y2 < 0) {
  95792. row_s = 0;
  95793. row_e = last["row"][1] - last["row"][0];
  95794. }
  95795. if (col_s < 0 || x2 < 0) {
  95796. col_s = 0;
  95797. col_e = last["column"][1] - last["column"][0];
  95798. }
  95799. if (row_e >= store_default.visibledatarow[store_default.visibledatarow.length - 1] || y2 > winH) {
  95800. row_s = store_default.visibledatarow.length - 1 - last["row"][1] + last["row"][0];
  95801. row_e = store_default.visibledatarow.length - 1;
  95802. }
  95803. if (col_e >= store_default.visibledatacolumn[store_default.visibledatacolumn.length - 1] || x2 > winW) {
  95804. col_s = store_default.visibledatacolumn.length - 1 - last["column"][1] + last["column"][0];
  95805. col_e = store_default.visibledatacolumn.length - 1;
  95806. }
  95807. dropCell_default.copyRange = {"row": $.extend(true, [], last["row"]), "column": $.extend(true, [], last["column"])};
  95808. let typeItemHide = dropCell_default.typeItemHide();
  95809. if (!typeItemHide[0] && !typeItemHide[1] && !typeItemHide[2] && !typeItemHide[3] && !typeItemHide[4] && !typeItemHide[5] && !typeItemHide[6]) {
  95810. dropCell_default.applyType = "0";
  95811. } else {
  95812. dropCell_default.applyType = "1";
  95813. }
  95814. if (Math.abs(row_index_original - row_index) > Math.abs(col_index_original - col_index)) {
  95815. if (!(row_index >= row_s && row_index <= row_e)) {
  95816. if (store_default.luckysheet_select_save[0].top_move >= row_pre) {
  95817. dropCell_default.applyRange = {"row": [row_index, last["row"][0] - 1], "column": last["column"]};
  95818. dropCell_default.direction = "up";
  95819. row_s -= last["row"][0] - row_index;
  95820. if (pivotTable_default.isPivotRange(row_s, col_e)) {
  95821. tooltip_default.info(locale_drag2.affectPivot, "");
  95822. return;
  95823. }
  95824. } else {
  95825. dropCell_default.applyRange = {"row": [last["row"][1] + 1, row_index], "column": last["column"]};
  95826. dropCell_default.direction = "down";
  95827. row_e += row_index - last["row"][1];
  95828. if (pivotTable_default.isPivotRange(row_e, col_e)) {
  95829. tooltip_default.info(locale_drag2.affectPivot, "");
  95830. return;
  95831. }
  95832. }
  95833. } else {
  95834. return;
  95835. }
  95836. } else {
  95837. if (!(col_index >= col_s && col_index <= col_e)) {
  95838. if (store_default.luckysheet_select_save[0].left_move >= col_pre) {
  95839. dropCell_default.applyRange = {"row": last["row"], "column": [col_index, last["column"][0] - 1]};
  95840. dropCell_default.direction = "left";
  95841. col_s -= last["column"][0] - col_index;
  95842. if (pivotTable_default.isPivotRange(row_e, col_s)) {
  95843. tooltip_default.info(locale_drag2.affectPivot, "");
  95844. return;
  95845. }
  95846. } else {
  95847. dropCell_default.applyRange = {"row": last["row"], "column": [last["column"][1] + 1, col_index]};
  95848. dropCell_default.direction = "right";
  95849. col_e += col_index - last["column"][1];
  95850. if (pivotTable_default.isPivotRange(row_e, col_e)) {
  95851. tooltip_default.info(locale_drag2.affectPivot, "");
  95852. return;
  95853. }
  95854. }
  95855. } else {
  95856. return;
  95857. }
  95858. }
  95859. if (store_default.config["merge"] != null) {
  95860. let hasMc = false;
  95861. for (let r2 = last["row"][0]; r2 <= last["row"][1]; r2++) {
  95862. for (let c2 = last["column"][0]; c2 <= last["column"][1]; c2++) {
  95863. let cell = store_default.flowdata[r2][c2];
  95864. if (cell != null && cell.mc != null) {
  95865. hasMc = true;
  95866. break;
  95867. }
  95868. }
  95869. }
  95870. if (hasMc) {
  95871. if (isEditMode()) {
  95872. alert(locale_drag2.noMerge);
  95873. } else {
  95874. tooltip_default.info(locale_drag2.noMerge, "");
  95875. }
  95876. return;
  95877. }
  95878. for (let r2 = row_s; r2 <= row_e; r2++) {
  95879. for (let c2 = col_s; c2 <= col_e; c2++) {
  95880. let cell = store_default.flowdata[r2][c2];
  95881. if (cell != null && cell.mc != null) {
  95882. hasMc = true;
  95883. break;
  95884. }
  95885. }
  95886. }
  95887. if (hasMc) {
  95888. if (isEditMode()) {
  95889. alert(locale_drag2.noMerge);
  95890. } else {
  95891. tooltip_default.info(locale_drag2.noMerge, "");
  95892. }
  95893. return;
  95894. }
  95895. }
  95896. last["row"] = [row_s, row_e];
  95897. last["column"] = [col_s, col_e];
  95898. dropCell_default.update();
  95899. dropCell_default.createIcon();
  95900. $("#luckysheet-cell-selected-move").hide();
  95901. $("#luckysheet-sheettable").css("cursor", "default");
  95902. clearTimeout(store_default.countfuncTimeout);
  95903. store_default.countfuncTimeout = setTimeout(function() {
  95904. countfunc();
  95905. }, 500);
  95906. }
  95907. });
  95908. $(".luckysheet-grid-container, #luckysheet-rightclick-menu").on("contextmenu", function(e) {
  95909. e.preventDefault();
  95910. });
  95911. $("#luckysheet-cell-main div.luckysheet-cs-draghandle").mousedown(function(event2) {
  95912. if (isEditMode() || store_default.allowEdit === false) {
  95913. return;
  95914. }
  95915. $("#luckysheet-cell-selected").find(".luckysheet-cs-fillhandle").css("cursor", "move").end().find(".luckysheet-cs-draghandle").css("cursor", "move");
  95916. $("#luckysheet-cell-main, #luckysheetTableContent, #luckysheet-sheettable_0").css("cursor", "move");
  95917. store_default.luckysheet_cell_selected_move = true;
  95918. store_default.luckysheet_scroll_status = true;
  95919. let mouse = mouseposition(event2.pageX, event2.pageY);
  95920. let x = mouse[0] + $("#luckysheet-cell-main").scrollLeft();
  95921. let y = mouse[1] + $("#luckysheet-cell-main").scrollTop();
  95922. let row_location = rowLocation(y), row_pre = row_location[0], row = row_location[1], row_index = row_location[2];
  95923. let col_location = colLocation(x), col_pre = col_location[0], col = col_location[1], col_index = col_location[2];
  95924. store_default.luckysheet_cell_selected_move_index = [row_index, col_index];
  95925. $("#luckysheet-cell-selected-move").css({
  95926. "left": col_pre,
  95927. "width": col - col_pre - 1,
  95928. "top": row_pre,
  95929. "height": row - row_pre - 1,
  95930. "display": "block"
  95931. });
  95932. event2.stopPropagation();
  95933. });
  95934. $("#luckysheet-cell-main div.luckysheet-cs-fillhandle").mousedown(function(event2) {
  95935. if (isEditMode() || store_default.allowEdit === false) {
  95936. return;
  95937. }
  95938. $("#luckysheet-cell-selected").find(".luckysheet-cs-fillhandle").css("cursor", "crosshair").end().find(".luckysheet-cs-draghandle").css("cursor", "crosshair");
  95939. $("#luckysheet-cell-main, #luckysheetTableContent, #luckysheet-sheettable_0").css("cursor", "crosshair");
  95940. store_default.luckysheet_cell_selected_extend_time = setTimeout(function() {
  95941. store_default.luckysheet_cell_selected_extend = true;
  95942. store_default.luckysheet_scroll_status = true;
  95943. let mouse = mouseposition(event2.pageX, event2.pageY);
  95944. let x = mouse[0] + $("#luckysheet-cell-main").scrollLeft() - 5;
  95945. let y = mouse[1] + $("#luckysheet-cell-main").scrollTop() - 5;
  95946. let row_location = rowLocation(y), row_pre = row_location[0], row = row_location[1], row_index = row_location[2];
  95947. let col_location = colLocation(x), col_pre = col_location[0], col = col_location[1], col_index = col_location[2];
  95948. store_default.luckysheet_cell_selected_extend_index = [row_index, col_index];
  95949. $("#luckysheet-cell-selected-extend").css({
  95950. "left": col_pre,
  95951. "width": col - col_pre - 1,
  95952. "top": row_pre,
  95953. "height": row - row_pre - 1,
  95954. "display": "block"
  95955. });
  95956. }, 100);
  95957. event2.stopPropagation();
  95958. }).click(function() {
  95959. clearTimeout(store_default.luckysheet_cell_selected_extend_time);
  95960. event.stopPropagation();
  95961. }).dblclick(function() {
  95962. let last = store_default.luckysheet_select_save[0];
  95963. let r0 = last.row[0], r1 = last.row[1], c0 = last.column[0], c1 = last.column[1];
  95964. if (pivotTable_default.isPivotRange(r0, c0)) {
  95965. return;
  95966. }
  95967. let dropCellState = false;
  95968. let step = 0;
  95969. for (let r2 = r1 + 1; r2 < store_default.flowdata.length; r2++) {
  95970. if (c0 - 1 >= 0 && c1 + 1 < store_default.flowdata[0].length) {
  95971. let cell1 = store_default.flowdata[r2][c0 - 1];
  95972. let cell2 = store_default.flowdata[r2][c1 + 1];
  95973. if (r2 == r1 + 1) {
  95974. if ((cell1 == null || isRealNull(cell1.v)) && (cell2 == null || isRealNull(cell2.v))) {
  95975. dropCellState = false;
  95976. break;
  95977. } else {
  95978. dropCellState = true;
  95979. step++;
  95980. }
  95981. } else {
  95982. if ((cell1 == null || isRealNull(cell1.v)) && (cell2 == null || isRealNull(cell2.v))) {
  95983. break;
  95984. }
  95985. step++;
  95986. }
  95987. } else if (c0 - 1 >= 0) {
  95988. let cell = store_default.flowdata[r2][c0 - 1];
  95989. if (r2 == r1 + 1) {
  95990. if (cell == null || isRealNull(cell.v)) {
  95991. dropCellState = false;
  95992. break;
  95993. } else {
  95994. dropCellState = true;
  95995. step++;
  95996. }
  95997. } else {
  95998. if (cell == null || isRealNull(cell.v)) {
  95999. break;
  96000. }
  96001. step++;
  96002. }
  96003. } else if (c1 + 1 < store_default.flowdata[0].length) {
  96004. let cell = store_default.flowdata[r2][c1 + 1];
  96005. if (r2 == r1 + 1) {
  96006. if (cell == null || isRealNull(cell.v)) {
  96007. dropCellState = false;
  96008. break;
  96009. } else {
  96010. dropCellState = true;
  96011. step++;
  96012. }
  96013. } else {
  96014. if (cell == null || isRealNull(cell.v)) {
  96015. break;
  96016. }
  96017. step++;
  96018. }
  96019. }
  96020. }
  96021. if (!dropCellState || step == 0) {
  96022. event.stopPropagation();
  96023. return;
  96024. }
  96025. dropCell_default.copyRange = {"row": [r0, r1], "column": [c0, c1]};
  96026. let typeItemHide = dropCell_default.typeItemHide();
  96027. if (!typeItemHide[0] && !typeItemHide[1] && !typeItemHide[2] && !typeItemHide[3] && !typeItemHide[4] && !typeItemHide[5] && !typeItemHide[6]) {
  96028. dropCell_default.applyType = "0";
  96029. } else {
  96030. dropCell_default.applyType = "1";
  96031. }
  96032. dropCell_default.applyRange = {"row": [r1 + 1, r1 + step], "column": [c0, c1]};
  96033. dropCell_default.direction = "down";
  96034. store_default.luckysheet_select_save = [{"row": [r0, r1 + step], "column": [c0, c1]}];
  96035. dropCell_default.update();
  96036. dropCell_default.createIcon();
  96037. $("#luckysheet-cell-selected-move").hide();
  96038. $("#luckysheet-sheettable").css("cursor", "default");
  96039. clearTimeout(store_default.countfuncTimeout);
  96040. store_default.countfuncTimeout = setTimeout(function() {
  96041. countfunc();
  96042. }, 500);
  96043. event.stopPropagation();
  96044. });
  96045. $("#luckysheet-bottom-add-row, #luckysheet-bottom-add-row-input, #luckysheet-bottom-return-top").on("mousedown dblclick mouseup", function(e) {
  96046. e.stopPropagation();
  96047. });
  96048. $("#luckysheet-bottom-add-row").on("click", function(e) {
  96049. $("#luckysheet-rightclick-menu").hide();
  96050. luckysheetContainerFocus();
  96051. let $t = $(this), value = $("#luckysheet-bottom-add-row-input").val();
  96052. if (value == "") {
  96053. value = luckysheetConfigsetting_default.addRowCount || 100;
  96054. }
  96055. if (isNaN(parseInt(value))) {
  96056. if (isEditMode()) {
  96057. alert(locale_info.tipInputNumber);
  96058. } else {
  96059. tooltip_default.info("error", locale_info.tipInputNumber);
  96060. }
  96061. return;
  96062. }
  96063. value = parseInt(value);
  96064. if (value < 1 || value > 100) {
  96065. if (isEditMode()) {
  96066. alert(locale_info.tipInputNumberLimit);
  96067. } else {
  96068. tooltip_default.info("error", locale_info.tipInputNumberLimit);
  96069. }
  96070. return;
  96071. }
  96072. luckysheetextendtable("row", store_default.flowdata.length - 1, value);
  96073. });
  96074. $("#luckysheet-bottom-return-top").on("click", function(e) {
  96075. $("#luckysheet-scrollbar-y").scrollTop(0);
  96076. });
  96077. $("#luckysheet-copy-btn, #luckysheet-cols-copy-btn, #luckysheet-paste-btn-title").click(function(event2) {
  96078. $(this).parent().hide();
  96079. if (store_default.config["merge"] != null) {
  96080. let has_PartMC = false;
  96081. for (let s = 0; s < store_default.luckysheet_select_save.length; s++) {
  96082. let r1 = store_default.luckysheet_select_save[s].row[0], r2 = store_default.luckysheet_select_save[s].row[1];
  96083. let c1 = store_default.luckysheet_select_save[s].column[0], c2 = store_default.luckysheet_select_save[s].column[1];
  96084. has_PartMC = hasPartMC(store_default.config, r1, r2, c1, c2);
  96085. if (has_PartMC) {
  96086. break;
  96087. }
  96088. }
  96089. if (has_PartMC) {
  96090. if (isEditMode()) {
  96091. alert(locale_drag2.noPartMerge);
  96092. } else {
  96093. tooltip_default.info(locale_drag2.noPartMerge, "");
  96094. }
  96095. return;
  96096. }
  96097. }
  96098. let cdformat = store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)].luckysheet_conditionformat_save;
  96099. if (store_default.luckysheet_select_save.length > 1 && cdformat != null && cdformat.length > 0) {
  96100. let hasCF = false;
  96101. let cf_compute = conditionformat_default.getComputeMap();
  96102. label:
  96103. for (let s = 0; s < store_default.luckysheet_select_save.length; s++) {
  96104. if (hasCF) {
  96105. break;
  96106. }
  96107. let r1 = store_default.luckysheet_select_save[s].row[0], r2 = store_default.luckysheet_select_save[s].row[1];
  96108. let c1 = store_default.luckysheet_select_save[s].column[0], c2 = store_default.luckysheet_select_save[s].column[1];
  96109. for (let r3 = r1; r3 <= r2; r3++) {
  96110. for (let c3 = c1; c3 <= c2; c3++) {
  96111. if (conditionformat_default.checksCF(r3, c3, cf_compute) != null) {
  96112. hasCF = true;
  96113. continue label;
  96114. }
  96115. }
  96116. }
  96117. }
  96118. if (hasCF) {
  96119. if (isEditMode()) {
  96120. alert(locale_drag2.noMulti);
  96121. } else {
  96122. tooltip_default.info(locale_drag2.noMulti, "");
  96123. }
  96124. return;
  96125. }
  96126. }
  96127. if (store_default.luckysheet_select_save.length > 1) {
  96128. let isSameRow = true, str_r = store_default.luckysheet_select_save[0].row[0], end_r = store_default.luckysheet_select_save[0].row[1];
  96129. let isSameCol = true, str_c = store_default.luckysheet_select_save[0].column[0], end_c = store_default.luckysheet_select_save[0].column[1];
  96130. for (let s = 1; s < store_default.luckysheet_select_save.length; s++) {
  96131. if (store_default.luckysheet_select_save[s].row[0] != str_r || store_default.luckysheet_select_save[s].row[1] != end_r) {
  96132. isSameRow = false;
  96133. }
  96134. if (store_default.luckysheet_select_save[s].column[0] != str_c || store_default.luckysheet_select_save[s].column[1] != end_c) {
  96135. isSameCol = false;
  96136. }
  96137. }
  96138. if (!isSameRow && !isSameCol || selectIsOverlap()) {
  96139. if (isEditMode()) {
  96140. alert(locale_drag2.noMulti);
  96141. } else {
  96142. tooltip_default.info(locale_drag2.noMulti, "");
  96143. }
  96144. return;
  96145. }
  96146. }
  96147. selection_default.copy(event2);
  96148. });
  96149. $("#luckysheet-copy-paste, #luckysheet-cols-paste-btn, #luckysheet-paste-btn-title").click(function(event2) {
  96150. selection_default.paste(event2, "btn");
  96151. $(this).parent().hide();
  96152. });
  96153. $("#luckysheet-chart-btn-title").click(function() {
  96154. createLuckyChart();
  96155. });
  96156. $("#luckysheetdatavisual").click(function() {
  96157. createLuckyChart();
  96158. $("#luckysheet-rightclick-menu").hide();
  96159. });
  96160. $("#luckysheet-pivot-btn-title").click(function(e) {
  96161. if (!checkProtectionAuthorityNormal(store_default.currentSheetIndex, "usePivotTablereports")) {
  96162. return;
  96163. }
  96164. pivotTable_default.createPivotTable(e);
  96165. });
  96166. $("#luckysheet-chart-btn-screenshot").click(function() {
  96167. const locale_screenshot = _locale.screenshot;
  96168. if (store_default.luckysheet_select_save.length == 0) {
  96169. if (isEditMode()) {
  96170. alert(locale_screenshot.screenshotTipNoSelection);
  96171. } else {
  96172. tooltip_default.info(locale_screenshot.screenshotTipTitle, locale_screenshot.screenshotTipNoSelection);
  96173. }
  96174. return;
  96175. }
  96176. if (store_default.luckysheet_select_save.length > 1) {
  96177. if (isEditMode()) {
  96178. alert(locale_screenshot.screenshotTipHasMulti);
  96179. } else {
  96180. tooltip_default.info(locale_screenshot.screenshotTipTitle, locale_screenshot.screenshotTipHasMulti);
  96181. }
  96182. return;
  96183. }
  96184. if (store_default.config["merge"] != null) {
  96185. let has_PartMC = false;
  96186. for (let s = 0; s < store_default.luckysheet_select_save.length; s++) {
  96187. let r1 = store_default.luckysheet_select_save[s].row[0], r2 = store_default.luckysheet_select_save[s].row[1];
  96188. let c1 = store_default.luckysheet_select_save[s].column[0], c2 = store_default.luckysheet_select_save[s].column[1];
  96189. has_PartMC = hasPartMC(store_default.config, r1, r2, c1, c2);
  96190. if (has_PartMC) {
  96191. break;
  96192. }
  96193. }
  96194. if (has_PartMC) {
  96195. if (isEditMode()) {
  96196. alert(locale_screenshot.screenshotTipHasMerge);
  96197. } else {
  96198. tooltip_default.info(locale_screenshot.screenshotTipTitle, locale_screenshot.screenshotTipHasMerge);
  96199. }
  96200. return;
  96201. }
  96202. }
  96203. let st_r = store_default.luckysheet_select_save[0].row[0], ed_r = store_default.luckysheet_select_save[0].row[1];
  96204. let st_c = store_default.luckysheet_select_save[0].column[0], ed_c = store_default.luckysheet_select_save[0].column[1];
  96205. let scrollHeight, rh_height;
  96206. if (st_r - 1 < 0) {
  96207. scrollHeight = 0;
  96208. rh_height = store_default.visibledatarow[ed_r];
  96209. } else {
  96210. scrollHeight = store_default.visibledatarow[st_r - 1];
  96211. rh_height = store_default.visibledatarow[ed_r] - store_default.visibledatarow[st_r - 1];
  96212. }
  96213. let scrollWidth, ch_width;
  96214. if (st_c - 1 < 0) {
  96215. scrollWidth = 0;
  96216. ch_width = store_default.visibledatacolumn[ed_c];
  96217. } else {
  96218. scrollWidth = store_default.visibledatacolumn[st_c - 1];
  96219. ch_width = store_default.visibledatacolumn[ed_c] - store_default.visibledatacolumn[st_c - 1];
  96220. }
  96221. let newCanvas = $("<canvas>").attr({
  96222. width: Math.ceil(ch_width * store_default.devicePixelRatio),
  96223. height: Math.ceil(rh_height * store_default.devicePixelRatio)
  96224. }).css({width: ch_width, height: rh_height});
  96225. luckysheetDrawMain(scrollWidth, scrollHeight, ch_width, rh_height, 1, 1, null, null, newCanvas);
  96226. let ctx_newCanvas = newCanvas.get(0).getContext("2d");
  96227. ctx_newCanvas.beginPath();
  96228. ctx_newCanvas.moveTo(0, 0);
  96229. ctx_newCanvas.lineTo(0, store_default.devicePixelRatio * rh_height);
  96230. ctx_newCanvas.lineWidth = store_default.devicePixelRatio * 2;
  96231. ctx_newCanvas.strokeStyle = luckysheetdefaultstyle.strokeStyle;
  96232. ctx_newCanvas.stroke();
  96233. ctx_newCanvas.closePath();
  96234. ctx_newCanvas.beginPath();
  96235. ctx_newCanvas.moveTo(0, 0);
  96236. ctx_newCanvas.lineTo(store_default.devicePixelRatio * ch_width, 0);
  96237. ctx_newCanvas.lineWidth = store_default.devicePixelRatio * 2;
  96238. ctx_newCanvas.strokeStyle = luckysheetdefaultstyle.strokeStyle;
  96239. ctx_newCanvas.stroke();
  96240. ctx_newCanvas.closePath();
  96241. let image = new Image();
  96242. let url = newCanvas.get(0).toDataURL("image/png");
  96243. image.src = url;
  96244. if (ch_width > rh_height) {
  96245. image.style.width = "100%";
  96246. } else {
  96247. image.style.height = "100%";
  96248. }
  96249. let maxHeight = $(window).height() - 200;
  96250. tooltip_default.screenshot(locale_screenshot.screenshotTipSuccess, '<div id="luckysheet-confirm-screenshot-save" style="height:' + maxHeight + 'px;overflow:auto;"></div>', url);
  96251. $("#luckysheet-confirm-screenshot-save").append(image);
  96252. newCanvas.remove();
  96253. });
  96254. $(document).on("click.luckysheetEvent", "a.download", function() {
  96255. let dataURI = $("#luckysheet-confirm-screenshot-save img").attr("src");
  96256. const locale_screenshot = _locale.screenshot;
  96257. let binStr = atob(dataURI.split(",")[1]), len = binStr.length, arr = new Uint8Array(len);
  96258. for (let i2 = 0; i2 < len; i2++) {
  96259. arr[i2] = binStr.charCodeAt(i2);
  96260. }
  96261. let blob = new Blob([arr]);
  96262. let element = document.createElement("a");
  96263. element.setAttribute("href", URL.createObjectURL(blob));
  96264. element.setAttribute("download", locale_screenshot.screenshotImageName + ".png");
  96265. element.style.display = "none";
  96266. document.body.appendChild(element);
  96267. element.click();
  96268. let clickHandler;
  96269. element.addEventListener("click", clickHandler = function() {
  96270. requestAnimationFrame(function() {
  96271. URL.revokeObjectURL(element.href);
  96272. });
  96273. element.removeAttribute("href");
  96274. element.removeEventListener("click", clickHandler);
  96275. });
  96276. document.body.removeChild(element);
  96277. });
  96278. $("#luckysheet-splitColumn-btn-title").click(function() {
  96279. if (!checkProtectionNotEnable(store_default.currentSheetIndex)) {
  96280. return;
  96281. }
  96282. if (store_default.luckysheet_select_save == null || store_default.luckysheet_select_save.length == 0) {
  96283. return;
  96284. }
  96285. const locale_splitText = _locale.splitText;
  96286. if (store_default.luckysheet_select_save.length > 1) {
  96287. tooltip_default.info(locale_splitText.tipNoMulti, "");
  96288. return;
  96289. }
  96290. if (store_default.luckysheet_select_save[0].column[0] != store_default.luckysheet_select_save[0].column[1]) {
  96291. tooltip_default.info(locale_splitText.tipNoMultiColumn, "");
  96292. return;
  96293. }
  96294. splitColumn_default.createDialog();
  96295. splitColumn_default.init();
  96296. });
  96297. $("#luckysheet-insertImg-btn-title").click(function() {
  96298. if (!checkIsAllowEdit()) {
  96299. tooltip_default.info("", locale_default().pivotTable.errorNotAllowEdit);
  96300. return;
  96301. }
  96302. if (!checkProtectionAuthorityNormal(store_default.currentSheetIndex, "editObjects")) {
  96303. return;
  96304. }
  96305. $("#luckysheet-imgUpload").click();
  96306. });
  96307. $("#luckysheetInsertImage").click(function() {
  96308. if (!checkProtectionAuthorityNormal(store_default.currentSheetIndex, "editObjects")) {
  96309. return;
  96310. }
  96311. $("#luckysheet-imgUpload").click();
  96312. $("#luckysheet-rightclick-menu").hide();
  96313. });
  96314. $("#luckysheet-imgUpload").click(function(e) {
  96315. e.stopPropagation();
  96316. });
  96317. $("#luckysheet-imgUpload").on("change", function(e) {
  96318. if (!checkProtectionAuthorityNormal(store_default.currentSheetIndex, "editObjects", false)) {
  96319. return;
  96320. }
  96321. let file = e.currentTarget.files[0];
  96322. imageCtrl_default.insertImg(file);
  96323. });
  96324. $("#luckysheet-insertLink-btn-title").click(function() {
  96325. if (!checkIsAllowEdit()) {
  96326. tooltip_default.info("", locale_default().pivotTable.errorNotAllowEdit);
  96327. return;
  96328. }
  96329. if (!checkProtectionNotEnable(store_default.currentSheetIndex)) {
  96330. return;
  96331. }
  96332. if (store_default.luckysheet_select_save == null || store_default.luckysheet_select_save.length == 0) {
  96333. return;
  96334. }
  96335. hyperlinkCtrl_default.createDialog();
  96336. hyperlinkCtrl_default.init();
  96337. });
  96338. $("#luckysheetInsertLink").click(function() {
  96339. $("#luckysheet-insertLink-btn-title").click();
  96340. $("#luckysheet-rightclick-menu").hide();
  96341. });
  96342. $("#luckysheet-dataVerification-btn-title").click(function() {
  96343. if (!checkProtectionNotEnable(store_default.currentSheetIndex)) {
  96344. return;
  96345. }
  96346. if (store_default.luckysheet_select_save == null || store_default.luckysheet_select_save.length == 0) {
  96347. return;
  96348. }
  96349. dataVerificationCtrl_default.createDialog();
  96350. dataVerificationCtrl_default.init();
  96351. });
  96352. $("#luckysheetDataVerification").click(function() {
  96353. $("#luckysheet-dataVerification-btn-title").click();
  96354. $("#luckysheet-rightclick-menu").hide();
  96355. });
  96356. $("#luckysheetCellFormatRightClickMenu").click(function() {
  96357. openCellFormatModel();
  96358. });
  96359. $("#luckysheet-freezen-btn-horizontal").click(function() {
  96360. if ($.trim($(this).text()) == locale_default().freezen.freezenCancel) {
  96361. freezen_default.saveFrozen("freezenCancel");
  96362. if (freezen_default.freezenverticaldata != null) {
  96363. freezen_default.cancelFreezenVertical();
  96364. freezen_default.createAssistCanvas();
  96365. luckysheetrefreshgrid();
  96366. }
  96367. if (freezen_default.freezenhorizontaldata != null) {
  96368. freezen_default.cancelFreezenHorizontal();
  96369. freezen_default.createAssistCanvas();
  96370. luckysheetrefreshgrid();
  96371. }
  96372. freezen_default.scrollAdapt();
  96373. $("#luckysheet-icon-freezen-menu-menuButton").find(".fa.fa-check").remove();
  96374. } else {
  96375. freezen_default.saveFrozen("freezenRow");
  96376. if (freezen_default.freezenverticaldata != null) {
  96377. freezen_default.cancelFreezenVertical();
  96378. freezen_default.createAssistCanvas();
  96379. luckysheetrefreshgrid();
  96380. }
  96381. if (freezen_default.freezenhorizontaldata == null) {
  96382. freezen_default.createFreezenHorizontal();
  96383. freezen_default.createAssistCanvas();
  96384. }
  96385. }
  96386. });
  96387. $("#luckysheet-freezen-btn-vertical").click(function() {
  96388. if (freezen_default.freezenverticaldata != null) {
  96389. freezen_default.saveFrozen("freezenCancel");
  96390. freezen_default.cancelFreezenVertical();
  96391. luckysheetrefreshgrid();
  96392. } else {
  96393. freezen_default.saveFrozen("freezenColumn");
  96394. freezen_default.createFreezenVertical();
  96395. }
  96396. freezen_default.createAssistCanvas();
  96397. });
  96398. $("#luckysheet-rightclick-menu input").on("keydown", function(e) {
  96399. e.stopPropagation();
  96400. });
  96401. $("#luckysheet-modal-dialog-mask").on("click dbclick mousedown mousemove mouseup", function(e) {
  96402. e.stopPropagation();
  96403. e.preventDefault();
  96404. });
  96405. let copychange = function() {
  96406. if (document.hidden || document.webkitHidden || document.msHidden) {
  96407. store_default.iscopyself = false;
  96408. }
  96409. };
  96410. $(document).on("visibilitychange.luckysheetEvent webkitvisibilitychange.luckysheetEvent msvisibilitychange.luckysheetEvent", copychange).on("mouseleave.luckysheetEvent", function() {
  96411. store_default.iscopyself = false;
  96412. }).on("mousedown.luckysheetEvent", function(event2) {
  96413. postil_default.removeActivePs();
  96414. hideMenuByCancel(event2);
  96415. if ($(event2.target).closest("#luckysheet-wa-editor").length > 0 && parseInt($("#luckysheet-input-box").css("top")) > 0) {
  96416. formula_default.updatecell(store_default.luckysheetCellUpdate[0], store_default.luckysheetCellUpdate[1]);
  96417. luckysheetMoveHighlightCell("down", 0, "rangeOfSelect");
  96418. }
  96419. });
  96420. $("#luckysheet-left-top").click(function(event2) {
  96421. if (!checkProtectionAllSelected(store_default.currentSheetIndex)) {
  96422. return;
  96423. }
  96424. $("#luckysheet-wa-functionbox-confirm").click();
  96425. store_default.luckysheet_select_status = false;
  96426. store_default.luckysheet_select_save = [{"row": [0, store_default.flowdata.length - 1], "column": [0, store_default.flowdata[0].length - 1], "row_focus": 0, "column_focus": 0, row_select: true, column_select: true}];
  96427. selectHightlightShow();
  96428. clearTimeout(store_default.countfuncTimeout);
  96429. store_default.countfuncTimeout = setTimeout(function() {
  96430. countfunc();
  96431. }, 500);
  96432. server_default.saveParam("mv", store_default.currentSheetIndex, store_default.luckysheet_select_save);
  96433. event2.stopPropagation();
  96434. });
  96435. $("#luckysheet-icon-undo").click(function(event2) {
  96436. if ($(this).hasClass("disabled")) {
  96437. return;
  96438. }
  96439. controlHistory_default.redo(event2);
  96440. });
  96441. $("#luckysheet-icon-redo").click(function(event2) {
  96442. if ($(this).hasClass("disabled")) {
  96443. return;
  96444. }
  96445. controlHistory_default.undo(event2);
  96446. });
  96447. $(document).on("mousedown.luckysheetEvent", "div.luckysheet-modal-dialog", function(e) {
  96448. if (!$(e.target).is(".luckysheet-modal-dialog")) {
  96449. return;
  96450. }
  96451. store_default.luckysheet_model_move_state = true;
  96452. store_default.luckysheet_model_move_obj = $(e.currentTarget);
  96453. let toffset = store_default.luckysheet_model_move_obj.offset();
  96454. store_default.luckysheet_model_xy = [e.pageX - toffset.left, e.pageY - toffset.top];
  96455. });
  96456. $(document).on("click.luckysheetEvent", ".luckysheet-modal-dialog-title-close, .luckysheet-model-close-btn", function(e) {
  96457. if ($("#textcolorselect").is(":visible") || $("#cellcolorselect").is(":visible")) {
  96458. $("#luckysheet-conditionformat-dialog").show();
  96459. }
  96460. $(e.currentTarget).parents(".luckysheet-modal-dialog").hide();
  96461. $("#luckysheet-modal-dialog-mask").hide();
  96462. if ($(this).parents(".luckysheet-modal-dialog").hasClass("luckysheet-search-formula")) {
  96463. formula_default.dontupdate();
  96464. luckysheetMoveHighlightCell("down", 0, "rangeOfSelect");
  96465. }
  96466. if ($(this).parents(".luckysheet-modal-dialog").hasClass("luckysheet-search-formula-parm")) {
  96467. formula_default.dontupdate();
  96468. luckysheetMoveHighlightCell("down", 0, "rangeOfSelect");
  96469. }
  96470. if ($(this).parents(".luckysheet-modal-dialog").hasClass("luckysheet-search-formula-parm-select")) {
  96471. formula_default.dontupdate();
  96472. luckysheetMoveHighlightCell("down", 0, "rangeOfSelect");
  96473. }
  96474. luckysheetContainerFocus();
  96475. });
  96476. $("#luckysheet_info_detail_title").click(function() {
  96477. window.open(luckysheetConfigsetting_default.myFolderUrl, "_self");
  96478. });
  96479. $("#luckysheet-chart-rangeShow").on("mousedown.chartRangeShowMove", ".luckysheet-chart-rangeShow-move", function(event2) {
  96480. store_default.chart_selection.rangeMove = true;
  96481. store_default.luckysheet_scroll_status = true;
  96482. store_default.chart_selection.rangeMoveObj = $(this).parent();
  96483. let chart_json = store_default.currentChart;
  96484. let $id = $(this).parent().attr("id");
  96485. if ($id == "luckysheet-chart-rangeShow-content") {
  96486. let row_s = chart_json.rangeArray[0].row[0] + chart_json.rangeSplitArray.content.row[0];
  96487. let col_s = chart_json.rangeArray[0].column[0] + chart_json.rangeSplitArray.content.column[0];
  96488. store_default.chart_selection.rangeMoveIndex = [row_s, col_s];
  96489. } else if ($id == "luckysheet-chart-rangeShow-rowtitle") {
  96490. let row_s = chart_json.rangeArray[0].row[0] + chart_json.rangeSplitArray.rowtitle.row[0];
  96491. let col_s = chart_json.rangeArray[0].column[0] + chart_json.rangeSplitArray.rowtitle.column[0];
  96492. store_default.chart_selection.rangeMoveIndex = [row_s, col_s];
  96493. } else if ($id == "luckysheet-chart-rangeShow-coltitle") {
  96494. let row_s = chart_json.rangeArray[0].row[0] + chart_json.rangeSplitArray.coltitle.row[0];
  96495. let col_s = chart_json.rangeArray[0].column[0] + chart_json.rangeSplitArray.coltitle.column[0];
  96496. store_default.chart_selection.rangeMoveIndex = [row_s, col_s];
  96497. }
  96498. let mouse = mouseposition(event2.pageX, event2.pageY);
  96499. let x = mouse[0] + $("#luckysheet-cell-main").scrollLeft();
  96500. let y = mouse[1] + $("#luckysheet-cell-main").scrollTop();
  96501. let type = $(this).data("type");
  96502. if (type == "top") {
  96503. y += 3;
  96504. } else if (type == "right") {
  96505. x -= 3;
  96506. } else if (type == "bottom") {
  96507. y -= 3;
  96508. } else if (type == "left") {
  96509. x += 3;
  96510. }
  96511. let row_index = rowLocation(y)[2];
  96512. let col_index = colLocation(x)[2];
  96513. store_default.chart_selection.rangeMovexy = [row_index, col_index];
  96514. event2.stopPropagation();
  96515. });
  96516. $("#luckysheet-chart-rangeShow").on("mousedown.chartRangeShowResize", ".luckysheet-chart-rangeShow-resize", function(event2) {
  96517. store_default.chart_selection.rangeResize = $(this).data("type");
  96518. store_default.luckysheet_scroll_status = true;
  96519. store_default.chart_selection.rangeResizeObj = $(this).parent();
  96520. let chart_json = store_default.currentChart;
  96521. let row_s;
  96522. let row_e;
  96523. let col_s;
  96524. let col_e;
  96525. let $id = $(this).parent().attr("id");
  96526. if ($id == "luckysheet-chart-rangeShow-content") {
  96527. if (chart_json.rangeRowCheck.exits) {
  96528. row_s = chart_json.rangeArray[0].row[0] + chart_json.rangeSplitArray.content.row[0];
  96529. row_e = chart_json.rangeArray[0].row[0] + chart_json.rangeSplitArray.content.row[1];
  96530. } else {
  96531. row_s = chart_json.rangeSplitArray.content.row[0];
  96532. row_e = chart_json.rangeSplitArray.content.row[0];
  96533. }
  96534. if (chart_json.rangeColCheck.exits) {
  96535. col_s = chart_json.rangeArray[0].column[0] + chart_json.rangeSplitArray.content.column[0];
  96536. col_e = chart_json.rangeArray[0].column[0] + chart_json.rangeSplitArray.content.column[1];
  96537. } else {
  96538. col_s = chart_json.rangeSplitArray.content.column[0];
  96539. col_e = chart_json.rangeSplitArray.content.column[1];
  96540. }
  96541. store_default.chart_selection.rangeResizeIndex = {"row": [row_s, row_e], "column": [col_s, col_e]};
  96542. } else if ($id == "luckysheet-chart-rangeShow-rowtitle") {
  96543. let row_s2 = chart_json.rangeArray[0].row[0] + chart_json.rangeSplitArray.rowtitle.row[0];
  96544. let row_e2 = chart_json.rangeArray[0].row[0] + chart_json.rangeSplitArray.rowtitle.row[1];
  96545. let col_s2 = chart_json.rangeArray[0].column[0] + chart_json.rangeSplitArray.rowtitle.column[0];
  96546. let col_e2 = chart_json.rangeArray[0].column[0] + chart_json.rangeSplitArray.rowtitle.column[1];
  96547. store_default.chart_selection.rangeResizeIndex = {"row": [row_s2, row_e2], "column": [col_s2, col_e2]};
  96548. } else if ($id == "luckysheet-chart-rangeShow-coltitle") {
  96549. let row_s2 = chart_json.rangeArray[0].row[0] + chart_json.rangeSplitArray.coltitle.row[0];
  96550. let row_e2 = chart_json.rangeArray[0].row[0] + chart_json.rangeSplitArray.coltitle.row[1];
  96551. let col_s2 = chart_json.rangeArray[0].column[0] + chart_json.rangeSplitArray.coltitle.column[0];
  96552. let col_e2 = chart_json.rangeArray[0].column[0] + chart_json.rangeSplitArray.coltitle.column[1];
  96553. store_default.chart_selection.rangeResizeIndex = {"row": [row_s2, row_e2], "column": [col_s2, col_e2]};
  96554. }
  96555. let mouse = mouseposition(event2.pageX, event2.pageY);
  96556. let x = mouse[0] + $("#luckysheet-cell-main").scrollLeft();
  96557. let y = mouse[1] + $("#luckysheet-cell-main").scrollTop();
  96558. if (store_default.chart_selection.rangeResize == "lt") {
  96559. x += 3;
  96560. y += 3;
  96561. } else if (store_default.chart_selection.rangeResize == "lb") {
  96562. x += 3;
  96563. y -= 3;
  96564. } else if (store_default.chart_selection.rangeResize == "rt") {
  96565. x -= 3;
  96566. y += 3;
  96567. } else if (store_default.chart_selection.rangeResize == "rb") {
  96568. x -= 3;
  96569. y -= 3;
  96570. }
  96571. let row_index = rowLocation(y)[2];
  96572. let col_index = colLocation(x)[2];
  96573. store_default.chart_selection.rangeResizexy = [row_index, col_index];
  96574. event2.stopPropagation();
  96575. });
  96576. $("#luckysheet-wa-calculate-size").mousedown(function(e) {
  96577. let y = e.pageY;
  96578. formula_default.functionResizeData.y = y;
  96579. formula_default.functionResizeStatus = true;
  96580. formula_default.functionResizeData.calculatebarHeight = store_default.calculatebarHeight;
  96581. if (formula_default.rangetosheet != null) {
  96582. formula_default.updatecell(store_default.luckysheetCellUpdate[0], store_default.luckysheetCellUpdate[1]);
  96583. }
  96584. });
  96585. menuButton_default.initialMenuButton();
  96586. let dpi_x = document.getElementById("testdpidiv").offsetWidth * store_default.devicePixelRatio;
  96587. let dpi_y = document.getElementById("testdpidiv").offsetHeight * store_default.devicePixelRatio;
  96588. $(document).on("paste.luckysheetEvent", function(e) {
  96589. if (isEditMode()) {
  96590. return;
  96591. }
  96592. if (selection_default.isPasteAction) {
  96593. $("#luckysheet-rich-text-editor").blur();
  96594. selection_default.isPasteAction = false;
  96595. let clipboardData = window.clipboardData;
  96596. if (!clipboardData) {
  96597. clipboardData = e.originalEvent.clipboardData;
  96598. }
  96599. let txtdata = clipboardData.getData("text/html") || clipboardData.getData("text/plain");
  96600. let isEqual = true;
  96601. if (txtdata.indexOf("luckysheet_copy_action_table") > -1 && store_default.luckysheet_copy_save["copyRange"] != null && store_default.luckysheet_copy_save["copyRange"].length > 0) {
  96602. let cpDataArr = [];
  96603. let reg = new RegExp("<tr.*?>(.*?)</tr>", "gs");
  96604. let reg2 = new RegExp("<td.*?>(.*?)</td>", "gs");
  96605. let regArr = txtdata.match(reg) || [];
  96606. for (let i2 = 0; i2 < regArr.length; i2++) {
  96607. let cpRowArr = [];
  96608. let reg2Arr = regArr[i2].match(reg2);
  96609. if (reg2Arr != null) {
  96610. for (let j = 0; j < reg2Arr.length; j++) {
  96611. let cpValue = reg2Arr[j].replace(/<td.*?>/gs, "").replace(/<\/td>/gs, "");
  96612. cpRowArr.push(cpValue);
  96613. }
  96614. }
  96615. cpDataArr.push(cpRowArr);
  96616. }
  96617. let copy_r1 = store_default.luckysheet_copy_save["copyRange"][0].row[0], copy_r2 = store_default.luckysheet_copy_save["copyRange"][0].row[1], copy_c1 = store_default.luckysheet_copy_save["copyRange"][0].column[0], copy_c2 = store_default.luckysheet_copy_save["copyRange"][0].column[1];
  96618. let copy_index = store_default.luckysheet_copy_save["dataSheetIndex"];
  96619. let d;
  96620. if (copy_index == store_default.currentSheetIndex) {
  96621. d = editor_default.deepCopyFlowData(store_default.flowdata);
  96622. } else {
  96623. d = store_default.luckysheetfile[getSheetIndex(copy_index)].data;
  96624. }
  96625. for (let r2 = copy_r1; r2 <= copy_r2; r2++) {
  96626. if (r2 - copy_r1 > cpDataArr.length - 1) {
  96627. break;
  96628. }
  96629. for (let c2 = copy_c1; c2 <= copy_c2; c2++) {
  96630. let cell = d[r2][c2];
  96631. let isInlineStr = false;
  96632. if (cell != null && cell.mc != null && cell.mc.rs == null) {
  96633. continue;
  96634. }
  96635. let v;
  96636. if (cell != null) {
  96637. if (cell.ct != null && cell.ct.fa.indexOf("w") > -1) {
  96638. v = d[r2][c2].v;
  96639. } else {
  96640. v = d[r2][c2].m;
  96641. }
  96642. } else {
  96643. v = "";
  96644. }
  96645. if (v == null && d[r2][c2] && d[r2][c2].ct && d[r2][c2].ct.t == "inlineStr") {
  96646. v = d[r2][c2].ct.s.map((val) => val.v).join("");
  96647. isInlineStr = true;
  96648. }
  96649. if (v == null) {
  96650. v = "";
  96651. }
  96652. if (isInlineStr) {
  96653. const cpData = $(cpDataArr[r2 - copy_r1][c2 - copy_c1]).text().replace(/\s|\n/g, " ");
  96654. const storeValue = v.replace(/\n/g, "").replace(/\s/g, " ");
  96655. if (cpData != storeValue) {
  96656. isEqual = false;
  96657. break;
  96658. }
  96659. } else {
  96660. if (cpDataArr[r2 - copy_r1][c2 - copy_c1] != v) {
  96661. isEqual = false;
  96662. break;
  96663. }
  96664. }
  96665. }
  96666. }
  96667. }
  96668. const locale_fontjson = locale_default().fontjson;
  96669. if (!method_default.createHookFunction("rangePasteBefore", store_default.luckysheet_select_save, txtdata)) {
  96670. return;
  96671. }
  96672. if (txtdata.indexOf("luckysheet_copy_action_table") > -1 && store_default.luckysheet_copy_save["copyRange"] != null && store_default.luckysheet_copy_save["copyRange"].length > 0 && isEqual) {
  96673. if (store_default.luckysheet_paste_iscut) {
  96674. store_default.luckysheet_paste_iscut = false;
  96675. selection_default.pasteHandlerOfCutPaste(store_default.luckysheet_copy_save);
  96676. selection_default.clearcopy(e);
  96677. } else {
  96678. selection_default.pasteHandlerOfCopyPaste(store_default.luckysheet_copy_save);
  96679. }
  96680. } else if (txtdata.indexOf("luckysheet_copy_action_image") > -1) {
  96681. imageCtrl_default.pasteImgItem();
  96682. } else {
  96683. let $content;
  96684. try {
  96685. $content = $("#luckysheet-copy-content").html(txtdata);
  96686. } catch (e2) {
  96687. }
  96688. if ($content && ($content.find("table").length !== 0 || $content.children("span[data-sheets-value]").length === 1)) {
  96689. if ($content.find("table").length === 0) {
  96690. const td = $content.children("span[data-sheets-value]")[0].outerHTML.replace(/^<span/, "<td").replace(/<\/span>$/, "</td>");
  96691. $content.html("<table><tbody><tr>" + td + "</tr></tbody></table>");
  96692. }
  96693. let data = new Array($content.find("table tr").length);
  96694. let colLen = 0;
  96695. const cellElements = "th, td";
  96696. $content.find("table tr").eq(0).find(cellElements).each(function() {
  96697. let colspan = parseInt($(this).attr("colspan"));
  96698. if (isNaN(colspan)) {
  96699. colspan = 1;
  96700. }
  96701. colLen += colspan;
  96702. });
  96703. for (let i2 = 0; i2 < data.length; i2++) {
  96704. data[i2] = new Array(colLen);
  96705. }
  96706. let r2 = 0;
  96707. let borderInfo = {};
  96708. $content.find("table tr").each(function() {
  96709. let $tr = $(this);
  96710. let c2 = 0;
  96711. $tr.find(cellElements).each(function() {
  96712. let $td = $(this);
  96713. let cell = {};
  96714. const originalFormula = $td.attr("data-sheets-formula");
  96715. const originalText = $td.text();
  96716. if (originalFormula && originalFormula.startsWith("=")) {
  96717. const address = store_default.luckysheet_select_save[0];
  96718. const rowIndex = address.row[0] + r2;
  96719. const columnIndex = address.column[0] + c2;
  96720. const translatedFormula = originalFormula.replace(/([^a-zA-Z0-9])R(\[?)(-?[0-9]+)\]?C(\[?)(-?[0-9]+)\]?/g, function(_, prefix, rowRefRelative, rowRef, columnRefRelative, columnRef) {
  96721. return [
  96722. prefix,
  96723. columnRefRelative ? chatatABC(columnIndex + +columnRef) : `$${chatatABC(+columnRef - 1)}`,
  96724. rowRefRelative ? rowIndex + +rowRef + 1 : `$${rowRef}`
  96725. ].join("");
  96726. }).replace(/\bTRUE\b/g, "true").replace(/\bFALSE\b/g, "false");
  96727. const v = formula_default.execfunction(translatedFormula, rowIndex, columnIndex);
  96728. cell.f = v[2];
  96729. cell.v = v[1];
  96730. cell.ct = genarate(originalText)[1];
  96731. if (cell.ct && cell.ct.fa) {
  96732. cell.m = update(cell.ct.fa, cell.v);
  96733. }
  96734. } else if (originalText.trim().length === 0) {
  96735. cell.v = null;
  96736. cell.m = "";
  96737. } else {
  96738. let mask = genarate(originalText);
  96739. cell.v = mask[2];
  96740. cell.ct = mask[1];
  96741. cell.m = mask[0];
  96742. }
  96743. let bg = $td.css("background-color");
  96744. if (bg == "rgba(0, 0, 0, 0)") {
  96745. bg = null;
  96746. }
  96747. cell.bg = bg;
  96748. let bl = $td.css("font-weight");
  96749. if (bl == 400 || bl == "normal") {
  96750. cell.bl = 0;
  96751. } else {
  96752. cell.bl = 1;
  96753. }
  96754. let un = $td.css("text-decoration");
  96755. if (un.indexOf("underline") != -1) {
  96756. cell.un = 1;
  96757. }
  96758. let it = $td.css("font-style");
  96759. if (it == "normal") {
  96760. cell.it = 0;
  96761. } else {
  96762. cell.it = 1;
  96763. }
  96764. let ff = $td.css("font-family");
  96765. let ffs = ff.split(",");
  96766. for (let i2 = 0; i2 < ffs.length; i2++) {
  96767. let fa = $.trim(ffs[i2].toLowerCase());
  96768. fa = locale_fontjson[fa];
  96769. if (fa == null) {
  96770. cell.ff = 0;
  96771. } else {
  96772. cell.ff = fa;
  96773. break;
  96774. }
  96775. }
  96776. let fs = Math.round(parseInt($td.css("font-size")) * 72 / 96);
  96777. cell.fs = fs;
  96778. let fc = $td.css("color");
  96779. cell.fc = fc;
  96780. let ht = $td.css("text-align");
  96781. if (ht == "center") {
  96782. cell.ht = 0;
  96783. } else if (ht == "right") {
  96784. cell.ht = 2;
  96785. } else {
  96786. cell.ht = 1;
  96787. }
  96788. let vt = $td.css("vertical-align");
  96789. if (vt == "middle") {
  96790. cell.vt = 0;
  96791. } else if (vt == "top" || vt == "text-top") {
  96792. cell.vt = 1;
  96793. } else {
  96794. cell.vt = 2;
  96795. }
  96796. while (c2 < colLen && data[r2][c2] != null) {
  96797. c2++;
  96798. }
  96799. if (c2 == colLen) {
  96800. return true;
  96801. }
  96802. if (data[r2][c2] == null) {
  96803. data[r2][c2] = cell;
  96804. let rowspan = parseInt($td.attr("rowspan"));
  96805. let colspan = parseInt($td.attr("colspan"));
  96806. if (isNaN(rowspan)) {
  96807. rowspan = 1;
  96808. }
  96809. if (isNaN(colspan)) {
  96810. colspan = 1;
  96811. }
  96812. let r_ab = store_default.luckysheet_select_save[0]["row"][0] + r2;
  96813. let c_ab = store_default.luckysheet_select_save[0]["column"][0] + c2;
  96814. for (let rp = 0; rp < rowspan; rp++) {
  96815. for (let cp = 0; cp < colspan; cp++) {
  96816. if (rp == 0) {
  96817. let bt = $td.css("border-top");
  96818. if (bt != null && bt.length > 0 && bt.substr(0, 3).toLowerCase() != "0px") {
  96819. let width = $td.css("border-top-width");
  96820. let type = $td.css("border-top-style");
  96821. let color = $td.css("border-top-color");
  96822. let borderconfig = menuButton_default.getQKBorder(width, type, color);
  96823. if (borderInfo[r2 + rp + "_" + (c2 + cp)] == null) {
  96824. borderInfo[r2 + rp + "_" + (c2 + cp)] = {};
  96825. }
  96826. borderInfo[r2 + rp + "_" + (c2 + cp)].t = {"style": borderconfig[0], "color": borderconfig[1]};
  96827. }
  96828. }
  96829. if (rp == rowspan - 1) {
  96830. let bb = $td.css("border-bottom");
  96831. if (bb != null && bb.length > 0 && bb.substr(0, 3).toLowerCase() != "0px") {
  96832. let width = $td.css("border-bottom-width");
  96833. let type = $td.css("border-bottom-style");
  96834. let color = $td.css("border-bottom-color");
  96835. let borderconfig = menuButton_default.getQKBorder(width, type, color);
  96836. if (borderInfo[r2 + rp + "_" + (c2 + cp)] == null) {
  96837. borderInfo[r2 + rp + "_" + (c2 + cp)] = {};
  96838. }
  96839. borderInfo[r2 + rp + "_" + (c2 + cp)].b = {"style": borderconfig[0], "color": borderconfig[1]};
  96840. }
  96841. }
  96842. if (cp == 0) {
  96843. let bl2 = $td.css("border-left");
  96844. if (bl2 != null && bl2.length > 0 && bl2.substr(0, 3).toLowerCase() != "0px") {
  96845. let width = $td.css("border-left-width");
  96846. let type = $td.css("border-left-style");
  96847. let color = $td.css("border-left-color");
  96848. let borderconfig = menuButton_default.getQKBorder(width, type, color);
  96849. if (borderInfo[r2 + rp + "_" + (c2 + cp)] == null) {
  96850. borderInfo[r2 + rp + "_" + (c2 + cp)] = {};
  96851. }
  96852. borderInfo[r2 + rp + "_" + (c2 + cp)].l = {"style": borderconfig[0], "color": borderconfig[1]};
  96853. }
  96854. }
  96855. if (cp == colspan - 1) {
  96856. let br = $td.css("border-right");
  96857. if (br != null && br.length > 0 && br.substr(0, 3).toLowerCase() != "0px") {
  96858. let width = $td.css("border-right-width");
  96859. let type = $td.css("border-right-style");
  96860. let color = $td.css("border-right-color");
  96861. let borderconfig = menuButton_default.getQKBorder(width, type, color);
  96862. if (borderInfo[r2 + rp + "_" + (c2 + cp)] == null) {
  96863. borderInfo[r2 + rp + "_" + (c2 + cp)] = {};
  96864. }
  96865. borderInfo[r2 + rp + "_" + (c2 + cp)].r = {"style": borderconfig[0], "color": borderconfig[1]};
  96866. }
  96867. }
  96868. if (rp == 0 && cp == 0) {
  96869. continue;
  96870. }
  96871. data[r2 + rp][c2 + cp] = {"mc": {"r": r_ab, "c": c_ab}};
  96872. }
  96873. }
  96874. if (rowspan > 1 || colspan > 1) {
  96875. let first = {"rs": rowspan, "cs": colspan, "r": r_ab, "c": c_ab};
  96876. data[r2][c2].mc = first;
  96877. }
  96878. }
  96879. c2++;
  96880. if (c2 == colLen) {
  96881. return true;
  96882. }
  96883. });
  96884. r2++;
  96885. });
  96886. store_default.luckysheet_selection_range = [];
  96887. selection_default.pasteHandler(data, borderInfo);
  96888. } else if (clipboardData.files.length == 1 && clipboardData.files[0].type.indexOf("image") > -1) {
  96889. imageCtrl_default.insertImg(clipboardData.files[0]);
  96890. return;
  96891. } else {
  96892. txtdata = clipboardData.getData("text/plain");
  96893. selection_default.pasteHandler(txtdata);
  96894. }
  96895. $("#luckysheet-copy-content").empty();
  96896. }
  96897. } else if ($(e.target).closest("#luckysheet-rich-text-editor").length > 0) {
  96898. e.preventDefault();
  96899. let clipboardData = window.clipboardData;
  96900. if (!clipboardData) {
  96901. clipboardData = e.originalEvent.clipboardData;
  96902. }
  96903. let text = clipboardData.getData("text/plain");
  96904. document.execCommand("insertText", false, text);
  96905. }
  96906. });
  96907. if (luckysheetConfigsetting_default.enablePage) {
  96908. $("#luckysheet-bottom-page-next").click(function() {
  96909. let queryExps = luckysheetConfigsetting_default.pageInfo.queryExps;
  96910. let reportId = luckysheetConfigsetting_default.pageInfo.reportId;
  96911. let fields = luckysheetConfigsetting_default.pageInfo.fields;
  96912. let mobile = luckysheetConfigsetting_default.pageInfo.mobile;
  96913. let frezon = luckysheetConfigsetting_default.pageInfo.frezon;
  96914. let currentPage = luckysheetConfigsetting_default.pageInfo.currentPage;
  96915. let totalPage = luckysheetConfigsetting_default.pageInfo.totalPage;
  96916. let pageUrl = luckysheetConfigsetting_default.pageInfo.pageUrl;
  96917. method_default.addDataAjax({
  96918. "queryExps": queryExps,
  96919. "reportId": reportId,
  96920. "fields": fields,
  96921. "mobile": mobile,
  96922. "frezon": frezon,
  96923. "pageIndex": currentPage,
  96924. "currentPage": currentPage
  96925. }, store_default.currentSheetIndex, pageUrl, function() {
  96926. luckysheetConfigsetting_default.pageInfo.currentPage++;
  96927. if (luckysheetConfigsetting_default.pageInfo.totalPage == luckysheetConfigsetting_default.pageInfo.currentPage) {
  96928. $("#luckysheet-bottom-page-next").hide();
  96929. let pageInfoFull = replaceHtml(locale_info.pageInfoFull, {
  96930. total: luckysheetConfigsetting_default.total,
  96931. totalPage: luckysheetConfigsetting_default.pageInfo.totalPage
  96932. });
  96933. $("#luckysheet-bottom-page-info").html(pageInfoFull);
  96934. } else {
  96935. let pageInfo = replaceHtml(locale_info.pageInfo, {
  96936. total: luckysheetConfigsetting_default.total,
  96937. totalPage: luckysheetConfigsetting_default.pageInfo.totalPage,
  96938. currentPage: luckysheetConfigsetting_default.pageInfo.currentPage
  96939. });
  96940. $("#luckysheet-bottom-page-info").html(pageInfo);
  96941. }
  96942. });
  96943. }).mousedown(function(e) {
  96944. e.stopPropagation();
  96945. });
  96946. }
  96947. $("#luckysheet-bottom-bottom-top").click(function() {
  96948. $("#luckysheet-scrollbar-y").scrollTop(0);
  96949. }).mousedown(function(e) {
  96950. e.stopPropagation();
  96951. });
  96952. $("#luckysheet-wa-editor,#luckysheet-icon-morebtn-div,.luckysheet-toolbar-button").click(function(e) {
  96953. if (this.id != "luckysheet-icon-paintformat" && menuButton_default.luckysheetPaintModelOn) {
  96954. menuButton_default.cancelPaintModel();
  96955. }
  96956. });
  96957. }
  96958. function hideUsername() {
  96959. let $showEle = $$(".luckysheet-multipleRange-show");
  96960. if ($showEle.length === void 0) {
  96961. $showEle = [$showEle];
  96962. }
  96963. $showEle.forEach((ele) => {
  96964. const id = ele.id.replace("luckysheet-multipleRange-show-", "");
  96965. if (store_default.cooperativeEdit.usernameTimeout["user" + id] === null) {
  96966. $$(".username", ele).style.display = "none";
  96967. }
  96968. });
  96969. }
  96970. var init_handler = __esm({
  96971. "src/controllers/handler.js"() {
  96972. init_mobile();
  96973. init_luckysheetConfigsetting();
  96974. init_freezen();
  96975. init_pivotTable();
  96976. init_dropCell();
  96977. init_postil();
  96978. init_imageCtrl();
  96979. init_hyperlinkCtrl();
  96980. init_dataVerificationCtrl();
  96981. init_menuButton();
  96982. init_conditionformat();
  96983. init_alternateformat();
  96984. init_ifFormulaGenerator();
  96985. init_sheetmanage();
  96986. init_server();
  96987. init_updateCell();
  96988. init_sheetSearch();
  96989. init_resize();
  96990. init_sheetMove();
  96991. init_select();
  96992. init_selection();
  96993. init_controlHistory();
  96994. init_splitColumn();
  96995. init_cursorPos();
  96996. init_constant();
  96997. init_protection();
  96998. init_cellFormat();
  96999. init_util();
  97000. init_get();
  97001. init_location();
  97002. init_getRowlen();
  97003. init_validate();
  97004. init_count();
  97005. init_browser();
  97006. init_formula();
  97007. init_extend();
  97008. init_scroll();
  97009. init_refresh();
  97010. init_getdata();
  97011. init_tooltip();
  97012. init_editor();
  97013. init_format();
  97014. init_method();
  97015. init_border();
  97016. init_draw();
  97017. init_locale();
  97018. init_store();
  97019. init_plugin();
  97020. }
  97021. });
  97022. // src/controllers/matrixOperation.js
  97023. function initialMatrixOperation() {
  97024. const locale_drag2 = locale_default().drag;
  97025. $("#luckysheet-copy-json-head").click(function(event2) {
  97026. $("body .luckysheet-cols-menu").hide();
  97027. luckysheetContainerFocus();
  97028. if (store_default.luckysheet_select_save.length > 1) {
  97029. if (isEditMode()) {
  97030. alert(locale_drag2.noMulti);
  97031. } else {
  97032. tooltip_default.info(locale_drag2.noMulti, "");
  97033. }
  97034. return;
  97035. }
  97036. if (store_default.config["merge"] != null) {
  97037. let has_PartMC = false;
  97038. for (let s = 0; s < store_default.luckysheet_select_save.length; s++) {
  97039. let r1 = store_default.luckysheet_select_save[s].row[0], r2 = store_default.luckysheet_select_save[s].row[1];
  97040. let c1 = store_default.luckysheet_select_save[s].column[0], c2 = store_default.luckysheet_select_save[s].column[1];
  97041. has_PartMC = hasPartMC(store_default.config, r1, r2, c1, c2);
  97042. if (has_PartMC) {
  97043. break;
  97044. }
  97045. }
  97046. if (has_PartMC) {
  97047. if (isEditMode()) {
  97048. alert(locale_drag2.noPartMerge);
  97049. } else {
  97050. tooltip_default.info(locale_drag2.noPartMerge, "");
  97051. }
  97052. return;
  97053. }
  97054. }
  97055. let getdata = getdatabyselection(store_default.luckysheet_select_save[0]);
  97056. let arr = [];
  97057. if (getdata.length == 0) {
  97058. return;
  97059. }
  97060. if (getdata.length == 1) {
  97061. let obj = {};
  97062. for (let i2 = 0; i2 < getdata[0].length; i2++) {
  97063. obj[getcellvalue(0, i2, getdata)] = "";
  97064. }
  97065. arr.push(obj);
  97066. } else {
  97067. for (let r2 = 1; r2 < getdata.length; r2++) {
  97068. let obj = {};
  97069. for (let c2 = 0; c2 < getdata[0].length; c2++) {
  97070. if (getcellvalue(0, c2, getdata) == void 0) {
  97071. obj[""] = getcellvalue(r2, c2, getdata);
  97072. } else {
  97073. obj[getcellvalue(0, c2, getdata)] = getcellvalue(r2, c2, getdata);
  97074. }
  97075. }
  97076. arr.push(obj);
  97077. }
  97078. }
  97079. selection_default.copybyformat(event2, JSON.stringify(arr));
  97080. });
  97081. $("#luckysheet-copy-json-nohead").click(function(event2) {
  97082. $("body .luckysheet-cols-menu").hide();
  97083. luckysheetContainerFocus();
  97084. if (store_default.luckysheet_select_save.length > 1) {
  97085. if (isEditMode()) {
  97086. alert(locale_drag2.noMulti);
  97087. } else {
  97088. tooltip_default.info(locale_drag2.noMulti, "");
  97089. }
  97090. return;
  97091. }
  97092. if (store_default.config["merge"] != null) {
  97093. let has_PartMC = false;
  97094. for (let s = 0; s < store_default.luckysheet_select_save.length; s++) {
  97095. let r1 = store_default.luckysheet_select_save[s].row[0], r2 = store_default.luckysheet_select_save[s].row[1];
  97096. let c1 = store_default.luckysheet_select_save[s].column[0], c2 = store_default.luckysheet_select_save[s].column[1];
  97097. has_PartMC = hasPartMC(store_default.config, r1, r2, c1, c2);
  97098. if (has_PartMC) {
  97099. break;
  97100. }
  97101. }
  97102. if (has_PartMC) {
  97103. if (isEditMode()) {
  97104. alert(locale_drag2.noPartMerge);
  97105. } else {
  97106. tooltip_default.info(locale_drag2.noPartMerge, "");
  97107. }
  97108. return;
  97109. }
  97110. }
  97111. let getdata = getdatabyselection(store_default.luckysheet_select_save[0]);
  97112. let arr = [];
  97113. if (getdata.length == 0) {
  97114. return;
  97115. }
  97116. let st = store_default.luckysheet_select_save[0]["column"][0];
  97117. for (let r2 = 0; r2 < getdata.length; r2++) {
  97118. let obj = {};
  97119. for (let c2 = 0; c2 < getdata[0].length; c2++) {
  97120. obj[chatatABC(c2 + st)] = getcellvalue(r2, c2, getdata);
  97121. }
  97122. arr.push(obj);
  97123. }
  97124. selection_default.copybyformat(event2, JSON.stringify(arr));
  97125. });
  97126. $("#luckysheet-copy-array1").click(function(event2) {
  97127. $("body .luckysheet-cols-menu").hide();
  97128. luckysheetContainerFocus();
  97129. if (store_default.luckysheet_select_save.length > 1) {
  97130. if (isEditMode()) {
  97131. alert(locale_drag2.noMulti);
  97132. } else {
  97133. tooltip_default.info(locale_drag2.noMulti, "");
  97134. }
  97135. return;
  97136. }
  97137. if (store_default.config["merge"] != null) {
  97138. let has_PartMC = false;
  97139. for (let s = 0; s < store_default.luckysheet_select_save.length; s++) {
  97140. let r1 = store_default.luckysheet_select_save[s].row[0], r2 = store_default.luckysheet_select_save[s].row[1];
  97141. let c1 = store_default.luckysheet_select_save[s].column[0], c2 = store_default.luckysheet_select_save[s].column[1];
  97142. has_PartMC = hasPartMC(store_default.config, r1, r2, c1, c2);
  97143. if (has_PartMC) {
  97144. break;
  97145. }
  97146. }
  97147. if (has_PartMC) {
  97148. if (isEditMode()) {
  97149. alert(locale_drag2.noPartMerge);
  97150. } else {
  97151. tooltip_default.info(locale_drag2.noPartMerge, "");
  97152. }
  97153. return;
  97154. }
  97155. }
  97156. let getdata = getdatabyselection(store_default.luckysheet_select_save[0]);
  97157. let arr = [];
  97158. if (getdata.length == 0) {
  97159. return;
  97160. }
  97161. for (let r2 = 0; r2 < getdata.length; r2++) {
  97162. for (let c2 = 0; c2 < getdata[0].length; c2++) {
  97163. arr.push(getcellvalue(r2, c2, getdata));
  97164. }
  97165. }
  97166. selection_default.copybyformat(event2, JSON.stringify(arr));
  97167. });
  97168. $("#luckysheet-copy-array2").click(function(event2) {
  97169. $("body .luckysheet-cols-menu").hide();
  97170. luckysheetContainerFocus();
  97171. if (store_default.luckysheet_select_save.length > 1) {
  97172. if (isEditMode()) {
  97173. alert(locale_drag2.noMulti);
  97174. } else {
  97175. tooltip_default.info(locale_drag2.noMulti, "");
  97176. }
  97177. return;
  97178. }
  97179. if (store_default.config["merge"] != null) {
  97180. let has_PartMC = false;
  97181. for (let s = 0; s < store_default.luckysheet_select_save.length; s++) {
  97182. let r1 = store_default.luckysheet_select_save[s].row[0], r2 = store_default.luckysheet_select_save[s].row[1];
  97183. let c1 = store_default.luckysheet_select_save[s].column[0], c2 = store_default.luckysheet_select_save[s].column[1];
  97184. has_PartMC = hasPartMC(store_default.config, r1, r2, c1, c2);
  97185. if (has_PartMC) {
  97186. break;
  97187. }
  97188. }
  97189. if (has_PartMC) {
  97190. if (isEditMode()) {
  97191. alert(locale_drag2.noPartMerge);
  97192. } else {
  97193. tooltip_default.info(locale_drag2.noPartMerge, "");
  97194. }
  97195. return;
  97196. }
  97197. }
  97198. let getdata = getdatabyselection(store_default.luckysheet_select_save[0]);
  97199. let arr = [];
  97200. if (getdata.length == 0) {
  97201. return;
  97202. }
  97203. for (let r2 = 0; r2 < getdata.length; r2++) {
  97204. let a = [];
  97205. for (let c2 = 0; c2 < getdata[0].length; c2++) {
  97206. a.push(getcellvalue(r2, c2, getdata));
  97207. }
  97208. arr.push(a);
  97209. }
  97210. selection_default.copybyformat(event2, JSON.stringify(arr));
  97211. });
  97212. $("#luckysheet-copy-arraymore-confirm").click(function(event2) {
  97213. if (event2.target.nodeName === "INPUT") {
  97214. return;
  97215. }
  97216. $("body .luckysheet-cols-menu").hide();
  97217. if (store_default.luckysheet_select_save.length > 1) {
  97218. if (isEditMode()) {
  97219. alert(locale_drag2.noMulti);
  97220. } else {
  97221. tooltip_default.info(locale_drag2.noMulti, "");
  97222. }
  97223. return;
  97224. }
  97225. if (store_default.config["merge"] != null) {
  97226. let has_PartMC = false;
  97227. for (let s = 0; s < store_default.luckysheet_select_save.length; s++) {
  97228. let r1 = store_default.luckysheet_select_save[s].row[0], r2 = store_default.luckysheet_select_save[s].row[1];
  97229. let c1 = store_default.luckysheet_select_save[s].column[0], c2 = store_default.luckysheet_select_save[s].column[1];
  97230. has_PartMC = hasPartMC(store_default.config, r1, r2, c1, c2);
  97231. if (has_PartMC) {
  97232. break;
  97233. }
  97234. }
  97235. if (has_PartMC) {
  97236. if (isEditMode()) {
  97237. alert(locale_drag2.noPartMerge);
  97238. } else {
  97239. tooltip_default.info(locale_drag2.noPartMerge, "");
  97240. }
  97241. return;
  97242. }
  97243. }
  97244. let getdata = getdatabyselection(store_default.luckysheet_select_save[0]);
  97245. let arr = [];
  97246. if (getdata.length == 0) {
  97247. return;
  97248. }
  97249. for (let r2 = 0; r2 < getdata.length; r2++) {
  97250. for (let c2 = 0; c2 < getdata[0].length; c2++) {
  97251. arr.push(getdata[r2][c2]);
  97252. }
  97253. }
  97254. let row = $("#luckysheet-copy-arraymore-row").val(), col = $("#luckysheet-copy-arraymore-col").val();
  97255. if (row == "" && col == "") {
  97256. selection_default.copybyformat(event2, JSON.stringify(arr));
  97257. $("body .luckysheet-cols-menu").hide();
  97258. return;
  97259. }
  97260. if (row == "") {
  97261. row = 1;
  97262. } else {
  97263. row = parseInt(row);
  97264. if (row == null) {
  97265. row = 1;
  97266. }
  97267. }
  97268. if (col == "") {
  97269. col = 1;
  97270. } else {
  97271. col = parseInt(col);
  97272. if (col == null) {
  97273. col = 1;
  97274. }
  97275. }
  97276. if (row.toString() == "NaN" || col.toString() == "NaN") {
  97277. if (isEditMode()) {
  97278. alert(locale_drag2.inputCorrect);
  97279. } else {
  97280. tooltip_default.info(locale_drag2.inputCorrect, "");
  97281. }
  97282. return;
  97283. }
  97284. if (row < 1 || col < 1) {
  97285. if (isEditMode()) {
  97286. alert(locale_drag2.notLessOne);
  97287. } else {
  97288. tooltip_default.info(locale_drag2.notLessOne, "");
  97289. }
  97290. return;
  97291. }
  97292. let arrlen = arr.length, i2 = 0, ret = [];
  97293. for (let r2 = 0; r2 < row; r2++) {
  97294. let a = [];
  97295. for (let c2 = 0; c2 < col; c2++) {
  97296. a.push(arr[i2++]);
  97297. if (i2 >= arrlen) {
  97298. selection_default.copybyformat(event2, JSON.stringify(ret));
  97299. $("body .luckysheet-cols-menu").hide();
  97300. return;
  97301. }
  97302. }
  97303. ret.push(a);
  97304. }
  97305. selection_default.copybyformat(event2, JSON.stringify(ret));
  97306. });
  97307. $("#luckysheet-copy-diagonal").click(function(event2) {
  97308. $("body .luckysheet-cols-menu").hide();
  97309. luckysheetContainerFocus();
  97310. if (store_default.luckysheet_select_save.length > 1) {
  97311. if (isEditMode()) {
  97312. alert(locale_drag2.noMulti);
  97313. } else {
  97314. tooltip_default.info(locale_drag2.noMulti, "");
  97315. }
  97316. return;
  97317. }
  97318. if (store_default.config["merge"] != null) {
  97319. let has_PartMC = false;
  97320. for (let s = 0; s < store_default.luckysheet_select_save.length; s++) {
  97321. let r1 = store_default.luckysheet_select_save[s].row[0], r2 = store_default.luckysheet_select_save[s].row[1];
  97322. let c1 = store_default.luckysheet_select_save[s].column[0], c2 = store_default.luckysheet_select_save[s].column[1];
  97323. has_PartMC = hasPartMC(store_default.config, r1, r2, c1, c2);
  97324. if (has_PartMC) {
  97325. break;
  97326. }
  97327. }
  97328. if (has_PartMC) {
  97329. if (isEditMode()) {
  97330. alert(locale_drag2.noPartMerge);
  97331. } else {
  97332. tooltip_default.info(locale_drag2.noPartMerge, "");
  97333. }
  97334. return;
  97335. }
  97336. }
  97337. let getdata = getdatabyselection(store_default.luckysheet_select_save[0]);
  97338. let arr = [];
  97339. if (getdata.length == 0) {
  97340. return;
  97341. }
  97342. let clen = getdata[0].length;
  97343. for (let r2 = 0; r2 < getdata.length; r2++) {
  97344. if (r2 >= clen) {
  97345. break;
  97346. }
  97347. arr.push(getdata[r2][r2]);
  97348. }
  97349. selection_default.copybyformat(event2, JSON.stringify(arr));
  97350. });
  97351. $("#luckysheet-copy-antidiagonal").click(function(event2) {
  97352. $("body .luckysheet-cols-menu").hide();
  97353. luckysheetContainerFocus();
  97354. if (store_default.luckysheet_select_save.length > 1) {
  97355. if (isEditMode()) {
  97356. alert(locale_drag2.noMulti);
  97357. } else {
  97358. tooltip_default.info(locale_drag2.noMulti, "");
  97359. }
  97360. return;
  97361. }
  97362. if (store_default.config["merge"] != null) {
  97363. let has_PartMC = false;
  97364. for (let s = 0; s < store_default.luckysheet_select_save.length; s++) {
  97365. let r1 = store_default.luckysheet_select_save[s].row[0], r2 = store_default.luckysheet_select_save[s].row[1];
  97366. let c1 = store_default.luckysheet_select_save[s].column[0], c2 = store_default.luckysheet_select_save[s].column[1];
  97367. has_PartMC = hasPartMC(store_default.config, r1, r2, c1, c2);
  97368. if (has_PartMC) {
  97369. break;
  97370. }
  97371. }
  97372. if (has_PartMC) {
  97373. if (isEditMode()) {
  97374. alert(locale_drag2.noPartMerge);
  97375. } else {
  97376. tooltip_default.info(locale_drag2.noPartMerge, "");
  97377. }
  97378. return;
  97379. }
  97380. }
  97381. let getdata = getdatabyselection(store_default.luckysheet_select_save[0]);
  97382. let arr = [];
  97383. if (getdata.length == 0) {
  97384. return;
  97385. }
  97386. let clen = getdata[0].length;
  97387. for (let r2 = 0; r2 < getdata.length; r2++) {
  97388. if (r2 >= clen) {
  97389. break;
  97390. }
  97391. arr.push(getdata[r2][clen - r2 - 1]);
  97392. }
  97393. selection_default.copybyformat(event2, JSON.stringify(arr));
  97394. });
  97395. $("#luckysheet-copy-diagonaloffset").click(function(event2) {
  97396. if (event2.target.nodeName === "INPUT") {
  97397. return;
  97398. }
  97399. $("body .luckysheet-cols-menu").hide();
  97400. luckysheetContainerFocus();
  97401. if (store_default.luckysheet_select_save.length > 1) {
  97402. if (isEditMode()) {
  97403. alert(locale_drag2.noMulti);
  97404. } else {
  97405. tooltip_default.info(locale_drag2.noMulti, "");
  97406. }
  97407. return;
  97408. }
  97409. if (store_default.config["merge"] != null) {
  97410. let has_PartMC = false;
  97411. for (let s = 0; s < store_default.luckysheet_select_save.length; s++) {
  97412. let r1 = store_default.luckysheet_select_save[s].row[0], r2 = store_default.luckysheet_select_save[s].row[1];
  97413. let c1 = store_default.luckysheet_select_save[s].column[0], c2 = store_default.luckysheet_select_save[s].column[1];
  97414. has_PartMC = hasPartMC(store_default.config, r1, r2, c1, c2);
  97415. if (has_PartMC) {
  97416. break;
  97417. }
  97418. }
  97419. if (has_PartMC) {
  97420. if (isEditMode()) {
  97421. alert(locale_drag2.noPartMerge);
  97422. } else {
  97423. tooltip_default.info(locale_drag2.noPartMerge, "");
  97424. }
  97425. return;
  97426. }
  97427. }
  97428. let getdata = getdatabyselection(store_default.luckysheet_select_save[0]);
  97429. let arr = [];
  97430. if (getdata.length == 0) {
  97431. return;
  97432. }
  97433. let clen = getdata[0].length, offset = parseInt($("#luckysheet-copy-diagonaloffset-value").val());
  97434. if (offset.toString() == "NaN") {
  97435. if (isEditMode()) {
  97436. alert(locale_drag2.inputCorrect);
  97437. } else {
  97438. tooltip_default.info(locale_drag2.inputCorrect, "");
  97439. }
  97440. return;
  97441. }
  97442. if (offset < 0) {
  97443. if (isEditMode()) {
  97444. alert(locale_drag2.offsetColumnLessZero);
  97445. } else {
  97446. tooltip_default.info(locale_drag2.offsetColumnLessZero, "");
  97447. }
  97448. return;
  97449. }
  97450. if (offset == null) {
  97451. offset = 1;
  97452. }
  97453. for (let r2 = 0; r2 < getdata.length; r2++) {
  97454. if (r2 + offset >= clen) {
  97455. break;
  97456. }
  97457. arr.push(getdata[r2][r2 + offset]);
  97458. }
  97459. selection_default.copybyformat(event2, JSON.stringify(arr));
  97460. });
  97461. $("#luckysheet-copy-boolvalue").click(function(event2) {
  97462. $("body .luckysheet-cols-menu").hide();
  97463. luckysheetContainerFocus();
  97464. if (store_default.luckysheet_select_save.length > 1) {
  97465. if (isEditMode()) {
  97466. alert(locale_drag2.noMulti);
  97467. } else {
  97468. tooltip_default.info(locale_drag2.noMulti, "");
  97469. }
  97470. return;
  97471. }
  97472. if (store_default.config["merge"] != null) {
  97473. let has_PartMC = false;
  97474. for (let s = 0; s < store_default.luckysheet_select_save.length; s++) {
  97475. let r1 = store_default.luckysheet_select_save[s].row[0], r2 = store_default.luckysheet_select_save[s].row[1];
  97476. let c1 = store_default.luckysheet_select_save[s].column[0], c2 = store_default.luckysheet_select_save[s].column[1];
  97477. has_PartMC = hasPartMC(store_default.config, r1, r2, c1, c2);
  97478. if (has_PartMC) {
  97479. break;
  97480. }
  97481. }
  97482. if (has_PartMC) {
  97483. if (isEditMode()) {
  97484. alert(locale_drag2.noPartMerge);
  97485. } else {
  97486. tooltip_default.info(locale_drag2.noPartMerge, "");
  97487. }
  97488. return;
  97489. }
  97490. }
  97491. let getdata = getdatabyselection(store_default.luckysheet_select_save[0]);
  97492. let arr = [];
  97493. if (getdata.length == 0) {
  97494. return;
  97495. }
  97496. for (let r2 = 0; r2 < getdata.length; r2++) {
  97497. let a = [];
  97498. for (let c2 = 0; c2 < getdata[0].length; c2++) {
  97499. let bool = false;
  97500. let v;
  97501. if (getObjType(getdata[r2][c2]) == "object") {
  97502. v = getdata[r2][c2].v;
  97503. } else {
  97504. v = getdata[r2][c2];
  97505. }
  97506. if (v == null || v == "") {
  97507. bool = false;
  97508. } else {
  97509. v = parseInt(v);
  97510. if (v == null || v > 0) {
  97511. bool = true;
  97512. } else {
  97513. bool = false;
  97514. }
  97515. }
  97516. a.push(bool);
  97517. }
  97518. arr.push(a);
  97519. }
  97520. selection_default.copybyformat(event2, JSON.stringify(arr));
  97521. });
  97522. $("#luckysheet-matrix-turn-up").click(function(event2) {
  97523. $("body .luckysheet-cols-menu").hide();
  97524. luckysheetContainerFocus();
  97525. if (store_default.luckysheet_select_save.length > 1) {
  97526. if (isEditMode()) {
  97527. alert(locale_drag2.noMulti);
  97528. } else {
  97529. tooltip_default.info(locale_drag2.noMulti, "");
  97530. }
  97531. return;
  97532. }
  97533. let getdata = getdatabyselection(store_default.luckysheet_select_save[0]);
  97534. if (getdata.length == 0) {
  97535. return;
  97536. }
  97537. let arr = [];
  97538. for (let r2 = getdata.length - 1; r2 >= 0; r2--) {
  97539. let a = [];
  97540. for (let c2 = 0; c2 < getdata[0].length; c2++) {
  97541. let value = "";
  97542. if (getdata[r2] != null && getdata[r2][c2] != null) {
  97543. value = getdata[r2][c2];
  97544. }
  97545. a.push(value);
  97546. }
  97547. arr.push(a);
  97548. }
  97549. editor_default.controlHandler(arr);
  97550. });
  97551. $("#luckysheet-matrix-turn-left").click(function(event2) {
  97552. $("body .luckysheet-cols-menu").hide();
  97553. luckysheetContainerFocus();
  97554. if (store_default.luckysheet_select_save.length > 1) {
  97555. if (isEditMode()) {
  97556. alert(locale_drag2.noMulti);
  97557. } else {
  97558. tooltip_default.info(locale_drag2.noMulti, "");
  97559. }
  97560. return;
  97561. }
  97562. let getdata = getdatabyselection(store_default.luckysheet_select_save[0]);
  97563. if (getdata.length == 0) {
  97564. return;
  97565. }
  97566. let arr = [];
  97567. for (let r2 = 0; r2 < getdata.length; r2++) {
  97568. let a = [];
  97569. for (let c2 = getdata[0].length - 1; c2 >= 0; c2--) {
  97570. let value = "";
  97571. if (getdata[r2] != null && getdata[r2][c2] != null) {
  97572. value = getdata[r2][c2];
  97573. }
  97574. a.push(value);
  97575. }
  97576. arr.push(a);
  97577. }
  97578. editor_default.controlHandler(arr);
  97579. });
  97580. $("#luckysheet-matrix-turn-cw").click(function(event2) {
  97581. $("body .luckysheet-cols-menu").hide();
  97582. luckysheetContainerFocus();
  97583. if (store_default.luckysheet_select_save.length > 1) {
  97584. if (isEditMode()) {
  97585. alert(locale_drag2.noMulti);
  97586. } else {
  97587. tooltip_default.info(locale_drag2.noMulti, "");
  97588. }
  97589. return;
  97590. }
  97591. let getdata = getdatabyselection(store_default.luckysheet_select_save[0]);
  97592. if (getdata.length == 0) {
  97593. return;
  97594. }
  97595. let arr = [];
  97596. for (let c2 = 0; c2 < getdata[0].length; c2++) {
  97597. let a = [];
  97598. for (let r2 = getdata.length - 1; r2 >= 0; r2--) {
  97599. let value = "";
  97600. if (getdata[r2] != null && getdata[r2][c2] != null) {
  97601. value = getdata[r2][c2];
  97602. }
  97603. a.push(value);
  97604. }
  97605. arr.push(a);
  97606. }
  97607. editor_default.controlHandlerD(arr);
  97608. });
  97609. $("#luckysheet-matrix-turn-anticw").click(function(event2) {
  97610. $("body .luckysheet-cols-menu").hide();
  97611. luckysheetContainerFocus();
  97612. if (store_default.luckysheet_select_save.length > 1) {
  97613. if (isEditMode()) {
  97614. alert(locale_drag2.noMulti);
  97615. } else {
  97616. tooltip_default.info(locale_drag2.noMulti, "");
  97617. }
  97618. return;
  97619. }
  97620. let getdata = getdatabyselection(store_default.luckysheet_select_save[0]);
  97621. if (getdata.length == 0) {
  97622. return;
  97623. }
  97624. let arr = [];
  97625. for (let c2 = getdata[0].length - 1; c2 >= 0; c2--) {
  97626. let a = [];
  97627. for (let r2 = 0; r2 < getdata.length; r2++) {
  97628. let value = "";
  97629. if (getdata[r2] != null && getdata[r2][c2] != null) {
  97630. value = getdata[r2][c2];
  97631. }
  97632. a.push(value);
  97633. }
  97634. arr.push(a);
  97635. }
  97636. editor_default.controlHandlerD(arr);
  97637. });
  97638. $("#luckysheet-matrix-turn-trans").click(function(event2) {
  97639. $("body .luckysheet-cols-menu").hide();
  97640. luckysheetContainerFocus();
  97641. if (store_default.luckysheet_select_save.length > 1) {
  97642. if (isEditMode()) {
  97643. alert(locale_drag2.noMulti);
  97644. } else {
  97645. tooltip_default.info(locale_drag2.noMulti, "");
  97646. }
  97647. return;
  97648. }
  97649. let getdata = getdatabyselection(store_default.luckysheet_select_save[0]);
  97650. if (getdata.length == 0) {
  97651. return;
  97652. }
  97653. let arr = [];
  97654. for (let c2 = 0; c2 < getdata[0].length; c2++) {
  97655. let a = [];
  97656. for (let r2 = 0; r2 < getdata.length; r2++) {
  97657. let value = "";
  97658. if (getdata[r2] != null && getdata[r2][c2] != null) {
  97659. value = getdata[r2][c2];
  97660. }
  97661. a.push(value);
  97662. }
  97663. arr.push(a);
  97664. }
  97665. editor_default.controlHandlerD(arr);
  97666. });
  97667. let jfnqrt2 = function(x, p) {
  97668. if (x == 0)
  97669. return 0;
  97670. let x0, x1;
  97671. x0 = x;
  97672. x1 = (p - 1) * x0 / p + x / (Math.pow(x0, p - 1) * p);
  97673. while (Math.abs(x1 - x0) > 1e-6) {
  97674. x0 = x1;
  97675. x1 = (p - 1) * x0 / p + x / (Math.pow(x0, p - 1) * p);
  97676. }
  97677. return x1;
  97678. };
  97679. $("#luckysheet-matrix-cal-confirm").click(function(event2) {
  97680. if (event2.target.nodeName === "INPUT" || event2.target.nodeName === "SELECT") {
  97681. return;
  97682. }
  97683. $("body .luckysheet-cols-menu").hide();
  97684. luckysheetContainerFocus();
  97685. if (store_default.luckysheet_select_save.length > 1) {
  97686. if (isEditMode()) {
  97687. alert(locale_drag2.noMulti);
  97688. } else {
  97689. tooltip_default.info(locale_drag2.noMulti, "");
  97690. }
  97691. return;
  97692. }
  97693. let getdata = getdatabyselection(store_default.luckysheet_select_save[0]);
  97694. if (getdata.length == 0) {
  97695. return;
  97696. }
  97697. let caltype = $("#luckysheet-matrix-cal-type").val(), calvalue = parseInt($("#luckysheet-matrix-cal-value").val());
  97698. if (calvalue.toString() == "NaN") {
  97699. if (isEditMode()) {
  97700. alert(locale_drag2.inputCorrect);
  97701. } else {
  97702. tooltip_default.info(locale_drag2.inputCorrect, "");
  97703. }
  97704. return;
  97705. }
  97706. if (calvalue == null) {
  97707. calvalue = 2;
  97708. }
  97709. let arr = [];
  97710. for (let r2 = 0; r2 < getdata.length; r2++) {
  97711. let a = [];
  97712. for (let c2 = 0; c2 < getdata[0].length; c2++) {
  97713. let value = "";
  97714. if (getdata[r2] != null && getdata[r2][c2] != null) {
  97715. value = getdata[r2][c2];
  97716. if (parseInt(value) != null && getdata[r2][c2].ct != void 0 && getdata[r2][c2].ct.t == "n") {
  97717. if (caltype == "minus") {
  97718. value.v = value.v - calvalue;
  97719. } else if (caltype == "multiply") {
  97720. value.v = value.v * calvalue;
  97721. } else if (caltype == "divided") {
  97722. value.v = numFormat2(value.v / calvalue, 4);
  97723. } else if (caltype == "power") {
  97724. value.v = Math.pow(value.v, calvalue);
  97725. } else if (caltype == "root") {
  97726. if (calvalue == 2) {
  97727. value.v = numFormat2(Math.sqrt(value.v), 4);
  97728. } else if (calvalue == 3 && Math.cbrt) {
  97729. value.v = numFormat2(Math.cbrt(value.v), 4);
  97730. } else {
  97731. value.v = numFormat2(jfnqrt2(value.v, calvalue), 4);
  97732. }
  97733. } else if (caltype == "log") {
  97734. value.v = numFormat2(Math.log(value.v) * 1e4 / Math.log(Math.abs(calvalue)), 4);
  97735. } else {
  97736. value.v = value.v + calvalue;
  97737. }
  97738. if (value.v == null) {
  97739. value.m = "";
  97740. } else {
  97741. value.m = value.v.toString();
  97742. }
  97743. }
  97744. }
  97745. a.push(value);
  97746. }
  97747. arr.push(a);
  97748. }
  97749. editor_default.controlHandler(arr);
  97750. });
  97751. $("#luckysheet-matrix-delezero-row").click(function(event2) {
  97752. $("body .luckysheet-cols-menu").hide();
  97753. luckysheetContainerFocus();
  97754. if (store_default.luckysheet_select_save.length > 1) {
  97755. if (isEditMode()) {
  97756. alert(locale_drag2.noMulti);
  97757. } else {
  97758. tooltip_default.info(locale_drag2.noMulti, "");
  97759. }
  97760. return;
  97761. }
  97762. let getdata = getdatabyselection(store_default.luckysheet_select_save[0]);
  97763. if (getdata.length == 0) {
  97764. return;
  97765. }
  97766. let arr = [];
  97767. let getdatalen = getdata[0].length;
  97768. for (let r2 = 0; r2 < getdata.length; r2++) {
  97769. let a = [], stdel = true, eddel = true;
  97770. for (let c2 = 0; c2 < getdatalen; c2++) {
  97771. let value = "";
  97772. if (getdata[r2] != null && getdata[r2][c2] != null) {
  97773. value = getdata[r2][c2];
  97774. if ((value.v == "0" || value.v == 0) && stdel) {
  97775. continue;
  97776. } else {
  97777. stdel = false;
  97778. }
  97779. }
  97780. a.push(value);
  97781. }
  97782. let a12 = [];
  97783. if (a.length == getdatalen) {
  97784. a12 = a;
  97785. } else {
  97786. for (let c2 = a.length - 1; c2 >= 0; c2--) {
  97787. let value = "";
  97788. if (a[c2] != null) {
  97789. value = a[c2];
  97790. if ((value.v == "0" || value.v == 0) && eddel) {
  97791. continue;
  97792. } else {
  97793. eddel = false;
  97794. }
  97795. }
  97796. a12.unshift(value);
  97797. }
  97798. let l = getdatalen - a12.length;
  97799. for (let c1 = 0; c1 < l; c1++) {
  97800. a12.push("");
  97801. }
  97802. }
  97803. arr.push(a12);
  97804. }
  97805. editor_default.controlHandler(arr);
  97806. });
  97807. $("#luckysheet-matrix-delezero-column").click(function(event2) {
  97808. $("body .luckysheet-cols-menu").hide();
  97809. luckysheetContainerFocus();
  97810. if (store_default.luckysheet_select_save.length > 1) {
  97811. if (isEditMode()) {
  97812. alert(locale_drag2.noMulti);
  97813. } else {
  97814. tooltip_default.info(locale_drag2.noMulti, "");
  97815. }
  97816. return;
  97817. }
  97818. let getdata = getdatabyselection(store_default.luckysheet_select_save[0]);
  97819. if (getdata.length == 0) {
  97820. return;
  97821. }
  97822. let arr = [];
  97823. let getdatalen = getdata.length, collen = getdata[0].length;
  97824. for (let c2 = 0; c2 < collen; c2++) {
  97825. let a = [], stdel = true, eddel = true;
  97826. for (let r2 = 0; r2 < getdatalen; r2++) {
  97827. let value = "";
  97828. if (getdata[r2] != null && getdata[r2][c2] != null) {
  97829. value = getdata[r2][c2];
  97830. if ((value.v == "0" || value.v == 0) && stdel) {
  97831. continue;
  97832. } else {
  97833. stdel = false;
  97834. }
  97835. }
  97836. a.push(value);
  97837. }
  97838. let a12 = [];
  97839. if (a.length == getdatalen) {
  97840. a12 = a;
  97841. } else {
  97842. for (let r2 = a.length - 1; r2 >= 0; r2--) {
  97843. let value = "";
  97844. if (a[r2] != null) {
  97845. value = a[r2];
  97846. if ((value.v == "0" || value.v == 0) && eddel) {
  97847. continue;
  97848. } else {
  97849. eddel = false;
  97850. }
  97851. }
  97852. a12.unshift(value);
  97853. }
  97854. let l = getdatalen - a12.length;
  97855. for (let r1 = 0; r1 < l; r1++) {
  97856. a12.push("");
  97857. }
  97858. }
  97859. arr.push(a12);
  97860. }
  97861. let arr1 = [];
  97862. for (let c2 = 0; c2 < arr[0].length; c2++) {
  97863. let a = [];
  97864. for (let r2 = 0; r2 < arr.length; r2++) {
  97865. let value = "";
  97866. if (arr[r2] != null && arr[r2][c2] != null) {
  97867. value = arr[r2][c2];
  97868. }
  97869. a.push(value);
  97870. }
  97871. arr1.push(a);
  97872. }
  97873. editor_default.controlHandler(arr1);
  97874. });
  97875. $("#luckysheet-matrix-delerpt-row").click(function(event2) {
  97876. $("body .luckysheet-cols-menu").hide();
  97877. luckysheetContainerFocus();
  97878. if (store_default.luckysheet_select_save.length > 1) {
  97879. if (isEditMode()) {
  97880. alert(locale_drag2.noMulti);
  97881. } else {
  97882. tooltip_default.info(locale_drag2.noMulti, "");
  97883. }
  97884. return;
  97885. }
  97886. let getdata = getdatabyselection(store_default.luckysheet_select_save[0]);
  97887. if (getdata.length == 0) {
  97888. return;
  97889. }
  97890. let arr = [];
  97891. let getdatalen = getdata[0].length;
  97892. for (let r2 = 0; r2 < getdata.length; r2++) {
  97893. let a = [], repeat = {};
  97894. for (let c2 = 0; c2 < getdatalen; c2++) {
  97895. let value = null;
  97896. if (getdata[r2] != null && getdata[r2][c2] != null) {
  97897. value = getdata[r2][c2];
  97898. if (value.v in repeat) {
  97899. repeat[value.v].push(value);
  97900. } else {
  97901. repeat[value.v] = [];
  97902. repeat[value.v].push(value);
  97903. }
  97904. }
  97905. }
  97906. for (let c2 = 0; c2 < getdatalen; c2++) {
  97907. let value = null;
  97908. if (getdata[r2] != null && getdata[r2][c2] != null) {
  97909. value = getdata[r2][c2];
  97910. if (repeat[value.v].length == 1) {
  97911. a.push(value);
  97912. }
  97913. }
  97914. }
  97915. let l = getdatalen - a.length;
  97916. for (let c1 = 0; c1 < l; c1++) {
  97917. a.push(null);
  97918. }
  97919. arr.push(a);
  97920. }
  97921. editor_default.controlHandler(arr);
  97922. });
  97923. $("#luckysheet-matrix-delerpt-column").click(function(event2) {
  97924. $("body .luckysheet-cols-menu").hide();
  97925. luckysheetContainerFocus();
  97926. if (store_default.luckysheet_select_save.length > 1) {
  97927. if (isEditMode()) {
  97928. alert(locale_drag2.noMulti);
  97929. } else {
  97930. tooltip_default.info(locale_drag2.noMulti, "");
  97931. }
  97932. return;
  97933. }
  97934. let getdata = getdatabyselection(store_default.luckysheet_select_save[0]);
  97935. if (getdata.length == 0) {
  97936. return;
  97937. }
  97938. let arr = [];
  97939. let getdatalen = getdata.length, collen = getdata[0].length;
  97940. for (let c2 = 0; c2 < collen; c2++) {
  97941. let a = [], repeat = {};
  97942. for (let r2 = 0; r2 < getdatalen; r2++) {
  97943. let value = null;
  97944. if (getdata[r2] != null && getdata[r2][c2] != null) {
  97945. value = getdata[r2][c2];
  97946. if (value.v in repeat) {
  97947. repeat[value.v].push(value);
  97948. } else {
  97949. repeat[value.v] = [];
  97950. repeat[value.v].push(value);
  97951. }
  97952. }
  97953. }
  97954. for (let r2 = 0; r2 < getdatalen; r2++) {
  97955. let value = null;
  97956. if (getdata[r2] != null && getdata[r2][c2] != null) {
  97957. value = getdata[r2][c2];
  97958. if (repeat[value.v].length == 1) {
  97959. a.push(value);
  97960. }
  97961. }
  97962. }
  97963. a1 = a;
  97964. let l = getdatalen - a1.length;
  97965. for (let r1 = 0; r1 < l; r1++) {
  97966. a1.push(null);
  97967. }
  97968. arr.push(a1);
  97969. }
  97970. let arr1 = [];
  97971. for (let c2 = 0; c2 < arr[0].length; c2++) {
  97972. let a = [];
  97973. for (let r2 = 0; r2 < arr.length; r2++) {
  97974. let value = null;
  97975. if (arr[r2] != null && arr[r2][c2] != null) {
  97976. value = arr[r2][c2];
  97977. }
  97978. a.push(value);
  97979. }
  97980. arr1.push(a);
  97981. }
  97982. editor_default.controlHandler(arr1);
  97983. });
  97984. }
  97985. var init_matrixOperation = __esm({
  97986. "src/controllers/matrixOperation.js"() {
  97987. init_selection();
  97988. init_util();
  97989. init_validate();
  97990. init_getdata();
  97991. init_tooltip();
  97992. init_editor();
  97993. init_locale();
  97994. init_store();
  97995. }
  97996. });
  97997. // src/controllers/sheetBar.js
  97998. function showsheetconfigmenu() {
  97999. if (!isInitialSheetConfig) {
  98000. isInitialSheetConfig = true;
  98001. const _locale = locale_default();
  98002. let locale_toolbar = _locale.toolbar;
  98003. $("#luckysheetsheetconfigcolorur").spectrum({
  98004. showPalette: true,
  98005. preferredFormat: "hex",
  98006. clickoutFiresChange: false,
  98007. showInitial: true,
  98008. showInput: true,
  98009. flat: true,
  98010. hideAfterPaletteSelect: false,
  98011. showSelectionPalette: true,
  98012. maxPaletteSize: 10,
  98013. cancelText: _locale.sheetconfig.cancelText,
  98014. chooseText: _locale.sheetconfig.chooseText,
  98015. togglePaletteMoreText: locale_toolbar.toolMore,
  98016. togglePaletteLessText: locale_toolbar.toolLess,
  98017. clearText: locale_toolbar.clearText,
  98018. noColorSelectedText: locale_toolbar.noColorSelectedText,
  98019. palette: [["rgb(0, 0, 0)", "rgb(67, 67, 67)", "rgb(102, 102, 102)", "rgb(204, 204, 204)", "rgb(217, 217, 217)", "rgb(255, 255, 255)"], ["rgb(152, 0, 0)", "rgb(255, 0, 0)", "rgb(255, 153, 0)", "rgb(255, 255, 0)", "rgb(0, 255, 0)", "rgb(0, 255, 255)", "rgb(74, 134, 232)", "rgb(0, 0, 255)", "rgb(153, 0, 255)", "rgb(255, 0, 255)"], ["rgb(230, 184, 175)", "rgb(244, 204, 204)", "rgb(252, 229, 205)", "rgb(255, 242, 204)", "rgb(217, 234, 211)", "rgb(208, 224, 227)", "rgb(201, 218, 248)", "rgb(207, 226, 243)", "rgb(217, 210, 233)", "rgb(234, 209, 220)"], ["rgb(221, 126, 107)", "rgb(234, 153, 153)", "rgb(249, 203, 156)", "rgb(255, 229, 153)", "rgb(182, 215, 168)", "rgb(162, 196, 201)", "rgb(164, 194, 244)", "rgb(159, 197, 232)", "rgb(180, 167, 214)", "rgb(213, 166, 189)"], ["rgb(204, 65, 37)", "rgb(224, 102, 102)", "rgb(246, 178, 107)", "rgb(255, 217, 102)", "rgb(147, 196, 125)", "rgb(118, 165, 175)", "rgb(109, 158, 235)", "rgb(111, 168, 220)", "rgb(142, 124, 195)", "rgb(194, 123, 160)"], ["rgb(166, 28, 0)", "rgb(204, 0, 0)", "rgb(230, 145, 56)", "rgb(241, 194, 50)", "rgb(106, 168, 79)", "rgb(69, 129, 142)", "rgb(60, 120, 216)", "rgb(61, 133, 198)", "rgb(103, 78, 167)", "rgb(166, 77, 121)"], ["rgb(91, 15, 0)", "rgb(102, 0, 0)", "rgb(120, 63, 4)", "rgb(127, 96, 0)", "rgb(39, 78, 19)", "rgb(12, 52, 61)", "rgb(28, 69, 135)", "rgb(7, 55, 99)", "rgb(32, 18, 77)", "rgb(76, 17, 48)"], ["#c1232b", "#27727b", "#fcce10", "#e87c25", "#b5c334", "#fe8463", "#9bca63", "#fad860", "#f3a43b", "#60c0dd", "#d7504b", "#c6e579", "#f4e001", "#f0805a", "#26c0c0", "#c12e34", "#e6b600", "#0098d9", "#2b821d", "#005eaa", "#339ca8", "#cda819", "#32a487", "#3fb1e3", "#6be6c1", "#626c91", "#a0a7e6", "#c4ebad", "#96dee8"]],
  98020. change: function(color) {
  98021. let $input = $(this);
  98022. if (color != null) {
  98023. color = color.toHexString();
  98024. } else {
  98025. color = "rgb(0, 0, 0)";
  98026. }
  98027. let oldcolor = null;
  98028. if (luckysheetcurrentSheetitem.find(".luckysheet-sheets-item-color").length > 0) {
  98029. oldcolor = luckysheetcurrentSheetitem.find(".luckysheet-sheets-item-color").css("background-color");
  98030. }
  98031. luckysheetcurrentSheetitem.find(".luckysheet-sheets-item-color").remove();
  98032. luckysheetcurrentSheetitem.append('<div class="luckysheet-sheets-item-color" style=" position: absolute; width: 100%; height: 3px; bottom: 0px; left: 0px; background-color: ' + color + ';"></div>');
  98033. let index3 = getSheetIndex(store_default.currentSheetIndex);
  98034. store_default.luckysheetfile[index3].color = color;
  98035. server_default.saveParam("all", store_default.currentSheetIndex, color, {"k": "color"});
  98036. if (store_default.clearjfundo) {
  98037. let redo2 = {};
  98038. redo2["type"] = "sheetColor";
  98039. redo2["sheetIndex"] = store_default.currentSheetIndex;
  98040. redo2["oldcolor"] = oldcolor;
  98041. redo2["color"] = color;
  98042. store_default.jfundo.length = 0;
  98043. store_default.jfredo.push(redo2);
  98044. }
  98045. }
  98046. });
  98047. $("#luckysheetsheetconfigcolorreset").click(function() {
  98048. let oldcolor = null;
  98049. if (luckysheetcurrentSheetitem.find(".luckysheet-sheets-item-color").length > 0) {
  98050. oldcolor = luckysheetcurrentSheetitem.find(".luckysheet-sheets-item-color").css("background-color");
  98051. }
  98052. luckysheetcurrentSheetitem.find(".luckysheet-sheets-item-color").remove();
  98053. let index3 = getSheetIndex(store_default.currentSheetIndex);
  98054. store_default.luckysheetfile[index3].color = null;
  98055. server_default.saveParam("all", store_default.currentSheetIndex, null, {"k": "color"});
  98056. if (store_default.clearjfundo) {
  98057. let redo2 = {};
  98058. redo2["type"] = "sheetColor";
  98059. redo2["sheetIndex"] = store_default.currentSheetIndex;
  98060. redo2["oldcolor"] = oldcolor;
  98061. redo2["color"] = null;
  98062. store_default.jfundo.length = 0;
  98063. store_default.jfredo.push(redo2);
  98064. }
  98065. });
  98066. }
  98067. let index2 = getSheetIndex(store_default.currentSheetIndex);
  98068. if (store_default.luckysheetfile[index2].color != null && store_default.luckysheetfile[index2].color.length > 0) {
  98069. $("#luckysheetsheetconfigcolorur").spectrum("set", store_default.luckysheetfile[index2].color);
  98070. }
  98071. $("#luckysheetsheetconfigcolorur").parent().find("span, div, button, input, a").addClass("luckysheet-mousedown-cancel");
  98072. const config = luckysheetConfigsetting_default.sheetRightClickConfig;
  98073. if (Object.values(config).every((ele) => !ele)) {
  98074. return;
  98075. }
  98076. setTimeout(function() {
  98077. mouseclickposition($("#luckysheet-rightclick-sheet-menu"), luckysheetcurrentSheetitem.offset().left + luckysheetcurrentSheetitem.width(), luckysheetcurrentSheetitem.offset().top - 18, "leftbottom");
  98078. }, 1);
  98079. }
  98080. function initialSheetBar() {
  98081. const _locale = locale_default();
  98082. const locale_sheetconfig = _locale.sheetconfig;
  98083. isInitialSheetConfig = false;
  98084. $("#luckysheet-sheet-area").on("mousedown", "div.luckysheet-sheets-item", function(e) {
  98085. if (isEditMode()) {
  98086. return;
  98087. }
  98088. let $t = $(this), $cur = $(e.target), $item = $cur.closest(".luckysheet-sheets-item");
  98089. if (e.which == "3") {
  98090. setTimeout(() => {
  98091. luckysheetsheetrightclick($t, $cur, e);
  98092. luckysheetcurrentSheetitem = $item;
  98093. showsheetconfigmenu();
  98094. return;
  98095. }, 0);
  98096. }
  98097. if ($item.hasClass("luckysheet-sheets-item-active") && $item.find(".luckysheet-sheets-item-name").attr("contenteditable") == "false") {
  98098. jfdbclicklagTimeout = setTimeout(function() {
  98099. store_default.luckysheet_sheet_move_status = true;
  98100. store_default.luckysheet_sheet_move_data = {};
  98101. store_default.luckysheet_sheet_move_data.widthlist = [];
  98102. $("#luckysheet-sheet-area div.luckysheet-sheets-item:visible").each(function(i2) {
  98103. if (i2 == 0) {
  98104. store_default.luckysheet_sheet_move_data.widthlist.push(parseInt($(this).outerWidth()));
  98105. } else {
  98106. store_default.luckysheet_sheet_move_data.widthlist.push(parseInt($(this).outerWidth()) + store_default.luckysheet_sheet_move_data.widthlist[i2 - 1]);
  98107. }
  98108. });
  98109. store_default.luckysheet_sheet_move_data.curindex = $("#luckysheet-sheet-area div.luckysheet-sheets-item").index($item);
  98110. let x = e.pageX;
  98111. store_default.luckysheet_sheet_move_data.curleft = x - $item.offset().left;
  98112. store_default.luckysheet_sheet_move_data.pageX = x;
  98113. store_default.luckysheet_sheet_move_data.activeobject = $item;
  98114. store_default.luckysheet_sheet_move_data.cursorobject = $cur;
  98115. let $itemclone = $item.clone().css("visibility", "hidden").attr("id", "luckysheet-sheets-item-clone");
  98116. $item.after($itemclone);
  98117. $item.css({"position": "absolute", "opacity": 0.8, "cursor": "move", "transition": "initial", "z-index": 10});
  98118. }, 200);
  98119. }
  98120. }).on("click", "div.luckysheet-sheets-item", function(e) {
  98121. if (isEditMode()) {
  98122. return;
  98123. }
  98124. let $t = $(this), $cur = $(e.target);
  98125. luckysheetsheetrightclick($t, $cur, e);
  98126. server_default.keepHighLightBox();
  98127. });
  98128. let luckysheetsheetnameeditor = function($t) {
  98129. if (store_default.allowEdit === false) {
  98130. return;
  98131. }
  98132. $t.attr("contenteditable", "true").addClass("luckysheet-mousedown-cancel").data("oldtxt", $t.text());
  98133. setTimeout(function() {
  98134. selectTextDom($t.get(0));
  98135. }, 1);
  98136. };
  98137. $("#luckysheet-sheet-area").on("dblclick", "span.luckysheet-sheets-item-name", function(e) {
  98138. luckysheetsheetnameeditor($(this));
  98139. });
  98140. let compositionFlag = true;
  98141. $("#luckysheet-sheet-area").on("compositionstart", "span.luckysheet-sheets-item-name", () => compositionFlag = false);
  98142. $("#luckysheet-sheet-area").on("compositionend", "span.luckysheet-sheets-item-name", () => compositionFlag = true);
  98143. $("#luckysheet-sheet-area").on("input", "span.luckysheet-sheets-item-name", function() {
  98144. if (store_default.allowEdit === false) {
  98145. return;
  98146. }
  98147. if (store_default.limitSheetNameLength === false) {
  98148. return;
  98149. }
  98150. let maxLength = store_default.defaultSheetNameMaxLength;
  98151. if (maxLength === 0) {
  98152. return;
  98153. }
  98154. setTimeout(() => {
  98155. if (compositionFlag) {
  98156. if ($(this).text().length >= maxLength) {
  98157. setTimeout(() => {
  98158. $(this).text($(this).text().substring(0, maxLength));
  98159. let range2 = window.getSelection();
  98160. range2.selectAllChildren(this);
  98161. range2.collapseToEnd();
  98162. }, 0);
  98163. }
  98164. }
  98165. }, 0);
  98166. });
  98167. $("#luckysheet-sheet-area").on("blur", "span.luckysheet-sheets-item-name", function(e) {
  98168. if (store_default.allowEdit === false) {
  98169. return;
  98170. }
  98171. let $t = $(this);
  98172. let txt = $t.text(), oldtxt = $t.data("oldtxt");
  98173. if ($(this).text().length === 0) {
  98174. tooltip_default.info("", locale_sheetconfig.sheetNamecannotIsEmptyError);
  98175. $t.text(oldtxt).attr("contenteditable", "false");
  98176. return;
  98177. }
  98178. if (txt.length > 31 || txt.charAt(0) == "'" || txt.charAt(txt.length - 1) == "'" || /[:\:\\\/?\?\*\[\]]+/.test(txt)) {
  98179. tooltip_default.info("", locale_sheetconfig.sheetNameSpecCharError);
  98180. $t.text(oldtxt).attr("contenteditable", "false");
  98181. return;
  98182. }
  98183. let index2 = getSheetIndex(store_default.currentSheetIndex);
  98184. for (let i2 = 0; i2 < store_default.luckysheetfile.length; i2++) {
  98185. if (index2 != i2 && store_default.luckysheetfile[i2].name == txt) {
  98186. if (isEditMode()) {
  98187. alert(locale_sheetconfig.tipNameRepeat);
  98188. } else {
  98189. tooltip_default.info("", locale_sheetconfig.tipNameRepeat);
  98190. }
  98191. $t.text(oldtxt).attr("contenteditable", "false");
  98192. return;
  98193. }
  98194. }
  98195. sheetmanage_default.sheetArrowShowAndHide();
  98196. store_default.luckysheetfile[index2].name = txt;
  98197. server_default.saveParam("all", store_default.currentSheetIndex, txt, {"k": "name"});
  98198. $t.attr("contenteditable", "false").removeClass("luckysheet-mousedown-cancel");
  98199. if (store_default.clearjfundo) {
  98200. let redo2 = {};
  98201. redo2["type"] = "sheetName";
  98202. redo2["sheetIndex"] = store_default.currentSheetIndex;
  98203. redo2["oldtxt"] = oldtxt;
  98204. redo2["txt"] = txt;
  98205. store_default.jfundo.length = 0;
  98206. store_default.jfredo.push(redo2);
  98207. }
  98208. method_default.createHookFunction("sheetEditNameAfter", {
  98209. i: store_default.luckysheetfile[index2].index,
  98210. oldName: oldtxt,
  98211. newName: txt
  98212. });
  98213. });
  98214. $("#luckysheet-sheet-area").on("keydown", "span.luckysheet-sheets-item-name", function(e) {
  98215. if (store_default.allowEdit === false) {
  98216. return;
  98217. }
  98218. let kcode = e.keyCode;
  98219. let $t = $(this);
  98220. if (kcode == keycode.ENTER) {
  98221. let index2 = getSheetIndex(store_default.currentSheetIndex);
  98222. oldSheetFileName = store_default.luckysheetfile[index2].name || oldSheetFileName;
  98223. store_default.luckysheetfile[index2].name = $t.text();
  98224. $t.attr("contenteditable", "false");
  98225. }
  98226. });
  98227. $("#luckysheetsheetconfigrename").click(function() {
  98228. var $name = luckysheetcurrentSheetitem.find("span.luckysheet-sheets-item-name");
  98229. if (!method_default.createHookFunction("sheetEditNameBefore", {i: luckysheetcurrentSheetitem.data("index"), name: $name.text()})) {
  98230. return;
  98231. }
  98232. luckysheetsheetnameeditor(luckysheetcurrentSheetitem.find("span.luckysheet-sheets-item-name"));
  98233. $("#luckysheet-input-box").removeAttr("style");
  98234. $("#luckysheet-sheet-list, #luckysheet-rightclick-sheet-menu").hide();
  98235. });
  98236. $("#luckysheetsheetconfigshow").click(function() {
  98237. $("#luckysheet-sheets-m").click();
  98238. $("#luckysheet-input-box").removeAttr("style");
  98239. $("#luckysheet-rightclick-sheet-menu").hide();
  98240. });
  98241. $("#luckysheetsheetconfigmoveleft").click(function() {
  98242. if (luckysheetcurrentSheetitem.prevAll(":visible").length > 0) {
  98243. luckysheetcurrentSheetitem.insertBefore(luckysheetcurrentSheetitem.prevAll(":visible").eq(0));
  98244. sheetmanage_default.reOrderAllSheet();
  98245. }
  98246. $("#luckysheet-input-box").removeAttr("style");
  98247. $("#luckysheet-sheet-list, #luckysheet-rightclick-sheet-menu").hide();
  98248. });
  98249. $("#luckysheetsheetconfigmoveright").click(function() {
  98250. if (luckysheetcurrentSheetitem.nextAll(":visible").length > 0) {
  98251. luckysheetcurrentSheetitem.insertAfter(luckysheetcurrentSheetitem.nextAll(":visible").eq(0));
  98252. sheetmanage_default.reOrderAllSheet();
  98253. }
  98254. $("#luckysheet-input-box").removeAttr("style");
  98255. $("#luckysheet-sheet-list, #luckysheet-rightclick-sheet-menu").hide();
  98256. });
  98257. $("#luckysheetsheetconfigdelete").click(function(e) {
  98258. $("#luckysheet-sheet-list, #luckysheet-rightclick-sheet-menu").hide();
  98259. if ($("#luckysheet-sheet-container-c .luckysheet-sheets-item:visible").length <= 1) {
  98260. if (isEditMode()) {
  98261. alert(locale_sheetconfig.noMoreSheet);
  98262. } else {
  98263. tooltip_default.info(locale_sheetconfig.noMoreSheet, "");
  98264. }
  98265. return;
  98266. }
  98267. let index2 = getSheetIndex(store_default.currentSheetIndex);
  98268. tooltip_default.confirm(locale_sheetconfig.confirmDelete + "\u3010" + store_default.luckysheetfile[index2].name + "\u3011\uFF1F", "<span style='color:#9e9e9e;font-size:12px;'>" + locale_sheetconfig.redoDelete + "</span>", function() {
  98269. sheetmanage_default.deleteSheet(luckysheetcurrentSheetitem.data("index"));
  98270. }, null);
  98271. $("#luckysheet-input-box").removeAttr("style");
  98272. });
  98273. $("#luckysheetsheetconfigcopy").click(function(e) {
  98274. sheetmanage_default.copySheet(luckysheetcurrentSheetitem.data("index"), e);
  98275. $("#luckysheet-input-box").removeAttr("style");
  98276. $("#luckysheet-sheet-list, #luckysheet-rightclick-sheet-menu").hide();
  98277. });
  98278. $("#luckysheetsheetconfighide").click(function() {
  98279. if ($("#luckysheet-sheet-area div.luckysheet-sheets-item:visible").length == 1) {
  98280. if (isEditMode()) {
  98281. alert(locale_sheetconfig.noHide);
  98282. } else {
  98283. tooltip_default.info("", locale_sheetconfig.noHide);
  98284. }
  98285. return;
  98286. }
  98287. sheetmanage_default.setSheetHide(luckysheetcurrentSheetitem.data("index"));
  98288. $("#luckysheet-input-box").removeAttr("style");
  98289. $("#luckysheet-sheet-list, #luckysheet-rightclick-sheet-menu").hide();
  98290. });
  98291. $("#luckysheet-sheets-add").click(function(e) {
  98292. if (parseInt($("#luckysheet-input-box").css("top")) > 0) {
  98293. formula_default.updatecell(store_default.luckysheetCellUpdate[0], store_default.luckysheetCellUpdate[1]);
  98294. }
  98295. sheetmanage_default.addNewSheet(e);
  98296. sheetmanage_default.locationSheet();
  98297. $("#luckysheet-input-box").removeAttr("style");
  98298. });
  98299. let sheetscrollani = null, sheetscrollstart = 0, sheetscrollend = 0, sheetscrollstep = 150;
  98300. $("#luckysheet-sheets-leftscroll").click(function() {
  98301. let $c = $("#luckysheet-sheet-container-c");
  98302. sheetscrollstart = $c.scrollLeft();
  98303. sheetscrollend = $c.scrollLeft() - sheetscrollstep;
  98304. if (sheetscrollend <= 0) {
  98305. $("#luckysheet-sheet-container .docs-sheet-fade-left").hide();
  98306. }
  98307. $("#luckysheet-sheet-container .docs-sheet-fade-right").show();
  98308. clearInterval(sheetscrollani);
  98309. sheetscrollani = setInterval(function() {
  98310. sheetscrollstart -= 4;
  98311. $c.scrollLeft(sheetscrollstart);
  98312. if (sheetscrollstart <= sheetscrollend) {
  98313. clearInterval(sheetscrollani);
  98314. }
  98315. }, 1);
  98316. });
  98317. $("#luckysheet-sheets-rightscroll").click(function() {
  98318. let $c = $("#luckysheet-sheet-container-c");
  98319. sheetscrollstart = $c.scrollLeft();
  98320. sheetscrollend = $c.scrollLeft() + sheetscrollstep;
  98321. if (sheetscrollstart > 0) {
  98322. $("#luckysheet-sheet-container .docs-sheet-fade-right").hide();
  98323. }
  98324. $("#luckysheet-sheet-container .docs-sheet-fade-left").show();
  98325. clearInterval(sheetscrollani);
  98326. sheetscrollani = setInterval(function() {
  98327. sheetscrollstart += 4;
  98328. $c.scrollLeft(sheetscrollstart);
  98329. if (sheetscrollstart >= sheetscrollend) {
  98330. clearInterval(sheetscrollani);
  98331. }
  98332. }, 1);
  98333. });
  98334. let initialOpenSheet = true;
  98335. $("#luckysheet-sheets-m").click(function(e) {
  98336. if (parseInt($("#luckysheet-input-box").css("top")) > 0) {
  98337. formula_default.updatecell(store_default.luckysheetCellUpdate[0], store_default.luckysheetCellUpdate[1]);
  98338. }
  98339. $("#luckysheet-sheet-list").html("");
  98340. let item2 = "";
  98341. for (let i2 = 0; i2 < store_default.luckysheetfile.length; i2++) {
  98342. let f = store_default.luckysheetfile[i2], icon = "", style = "";
  98343. if (f["status"] == 1) {
  98344. icon = '<i class="fa fa-check" aria-hidden="true"></i>';
  98345. }
  98346. if (f["hide"] == 1) {
  98347. icon = '<i class="fa fa-low-vision" aria-hidden="true"></i>';
  98348. style += "color:#BBBBBB;";
  98349. }
  98350. if (f["color"] != null && f["color"].length > 0) {
  98351. style += "border-right:4px solid " + f["color"] + ";";
  98352. }
  98353. item2 += replaceHtml(sheetselectlistitemHTML, {"index": f["index"], "name": f["name"], "icon": icon, "style": style});
  98354. }
  98355. if (initialOpenSheet) {
  98356. $("#" + store_default.container).append(replaceHtml(sheetselectlistHTML, {"item": item2}));
  98357. $("#luckysheet-sheet-list").on("click", ".luckysheet-cols-menuitem", function(e2) {
  98358. if (isEditMode()) {
  98359. alert(locale_sheetconfig.chartEditNoOpt);
  98360. return;
  98361. }
  98362. let $item = $(this), index2 = $item.data("index");
  98363. if ($item.data("index") != store_default.currentSheetIndex) {
  98364. sheetmanage_default.setSheetShow(index2);
  98365. sheetmanage_default.locationSheet();
  98366. }
  98367. server_default.keepHighLightBox();
  98368. });
  98369. initialOpenSheet = false;
  98370. } else {
  98371. $("#luckysheet-sheet-list").html(item2);
  98372. }
  98373. let $t = $("#luckysheet-sheet-list");
  98374. let left = $(this).offset().left - $("#" + store_default.container).offset().left;
  98375. let bottom = $(this).height() + $("#luckysheet-sta-content").height() + 12;
  98376. $t.css({left: left + "px", bottom: bottom + "px"}).show();
  98377. $("#luckysheet-input-box").removeAttr("style");
  98378. });
  98379. if (luckysheetConfigsetting_default.pager) {
  98380. pagerInit(luckysheetConfigsetting_default.pager);
  98381. }
  98382. }
  98383. var isInitialSheetConfig, luckysheetcurrentSheetitem, jfdbclicklagTimeout, oldSheetFileName, luckysheetsheetrightclick;
  98384. var init_sheetBar = __esm({
  98385. "src/controllers/sheetBar.js"() {
  98386. init_sheetmanage();
  98387. init_server();
  98388. init_constant();
  98389. init_util();
  98390. init_get();
  98391. init_validate();
  98392. init_formula();
  98393. init_cleargridelement();
  98394. init_tooltip();
  98395. init_cursorPos();
  98396. init_locale();
  98397. init_store();
  98398. init_luckysheetConfigsetting();
  98399. init_api();
  98400. init_method();
  98401. isInitialSheetConfig = false;
  98402. luckysheetcurrentSheetitem = null;
  98403. jfdbclicklagTimeout = null;
  98404. oldSheetFileName = "";
  98405. luckysheetsheetrightclick = function($t, $cur, e) {
  98406. clearTimeout(jfdbclicklagTimeout);
  98407. if ($cur.hasClass("luckysheet-sheets-item-name") && $cur.attr("contenteditable") == "true") {
  98408. return;
  98409. }
  98410. if (formula_default.rangestart || formula_default.rangedrag_column_start || formula_default.rangedrag_row_start || formula_default.israngeseleciton()) {
  98411. setTimeout(function() {
  98412. formula_default.setCaretPosition(formula_default.rangeSetValueTo.get(0), 0, formula_default.rangeSetValueTo.text().length);
  98413. formula_default.createRangeHightlight();
  98414. $("#luckysheet-input-box-index").find(".luckysheet-input-box-index-sheettxt").remove().end().prepend("<span class='luckysheet-input-box-index-sheettxt'>" + sheetmanage_default.getSheetName(formula_default.rangetosheet) + "!</span>").show();
  98415. $("#luckysheet-input-box-index").css({"left": $("#luckysheet-input-box").css("left"), "top": parseInt($("#luckysheet-input-box").css("top")) - 20 + "px", "z-index": $("#luckysheet-input-box").css("z-index")});
  98416. }, 1);
  98417. } else {
  98418. if (parseInt($("#luckysheet-input-box").css("top")) > 0) {
  98419. formula_default.updatecell(store_default.luckysheetCellUpdate[0], store_default.luckysheetCellUpdate[1]);
  98420. }
  98421. $("#luckysheet-input-box").removeAttr("style");
  98422. $("#luckysheet-formula-functionrange .luckysheet-formula-functionrange-highlight").remove();
  98423. }
  98424. $("#luckysheet-sheet-area div.luckysheet-sheets-item").removeClass("luckysheet-sheets-item-active");
  98425. $t.addClass("luckysheet-sheets-item-active");
  98426. cleargridelement(e);
  98427. sheetmanage_default.changeSheet($t.data("index"));
  98428. $("#luckysheet-sheet-list, #luckysheet-rightclick-sheet-menu").hide();
  98429. if ($cur.hasClass("luckysheet-sheets-item-menu") || $cur.hasClass("fa-sort-desc") || e.which == "3") {
  98430. luckysheetcurrentSheetitem = $cur.closest(".luckysheet-sheets-item");
  98431. showsheetconfigmenu();
  98432. }
  98433. };
  98434. }
  98435. });
  98436. // src/controllers/formulaBar.js
  98437. function formulaBarInitial() {
  98438. const _locale = locale_default();
  98439. const locale_formula = _locale.formula;
  98440. $("#luckysheet-functionbox-cell").focus(function() {
  98441. if (isEditMode()) {
  98442. return;
  98443. }
  98444. if (store_default.luckysheet_select_save.length > 0) {
  98445. let last = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1];
  98446. let row_index = last["row_focus"], col_index = last["column_focus"];
  98447. luckysheetupdateCell(row_index, col_index, store_default.flowdata, null, true);
  98448. formula_default.rangeResizeTo = $("#luckysheet-functionbox-cell");
  98449. }
  98450. }).keydown(function(event2) {
  98451. if (isEditMode()) {
  98452. return;
  98453. }
  98454. let ctrlKey = event2.ctrlKey;
  98455. let altKey = event2.altKey;
  98456. let shiftKey = event2.shiftKey;
  98457. let kcode = event2.keyCode;
  98458. let $inputbox = $("#luckysheet-input-box");
  98459. if (kcode == keycode.ENTER && parseInt($inputbox.css("top")) > 0) {
  98460. if ($("#luckysheet-formula-search-c").is(":visible") && formula_default.searchFunctionCell != null) {
  98461. formula_default.searchFunctionEnter($("#luckysheet-formula-search-c").find(".luckysheet-formula-search-item-active"));
  98462. } else {
  98463. formula_default.updatecell(store_default.luckysheetCellUpdate[0], store_default.luckysheetCellUpdate[1]);
  98464. store_default.luckysheet_select_save = [{"row": [store_default.luckysheetCellUpdate[0], store_default.luckysheetCellUpdate[0]], "column": [store_default.luckysheetCellUpdate[1], store_default.luckysheetCellUpdate[1]], "row_focus": store_default.luckysheetCellUpdate[0], "column_focus": store_default.luckysheetCellUpdate[1]}];
  98465. luckysheetMoveHighlightCell("down", 1, "rangeOfSelect");
  98466. $("#luckysheet-rich-text-editor").focus();
  98467. }
  98468. event2.preventDefault();
  98469. } else if (kcode == keycode.ESC && parseInt($inputbox.css("top")) > 0) {
  98470. formula_default.dontupdate();
  98471. luckysheetMoveHighlightCell("down", 0, "rangeOfSelect");
  98472. $("#luckysheet-rich-text-editor").focus();
  98473. event2.preventDefault();
  98474. } else if (kcode == keycode.F4 && parseInt($inputbox.css("top")) > 0) {
  98475. formula_default.setfreezonFuc(event2);
  98476. event2.preventDefault();
  98477. } else if (kcode == keycode.UP && parseInt($inputbox.css("top")) > 0) {
  98478. if ($("#luckysheet-formula-search-c").is(":visible")) {
  98479. let $up = $("#luckysheet-formula-search-c").find(".luckysheet-formula-search-item-active").prev();
  98480. if ($up.length == 0) {
  98481. $up = $("#luckysheet-formula-search-c").find(".luckysheet-formula-search-item").last();
  98482. }
  98483. $("#luckysheet-formula-search-c").find(".luckysheet-formula-search-item").removeClass("luckysheet-formula-search-item-active");
  98484. $up.addClass("luckysheet-formula-search-item-active");
  98485. event2.preventDefault();
  98486. }
  98487. } else if (kcode == keycode.DOWN && parseInt($inputbox.css("top")) > 0) {
  98488. if ($("#luckysheet-formula-search-c").is(":visible")) {
  98489. let $up = $("#luckysheet-formula-search-c").find(".luckysheet-formula-search-item-active").next();
  98490. if ($up.length == 0) {
  98491. $up = $("#luckysheet-formula-search-c").find(".luckysheet-formula-search-item").first();
  98492. }
  98493. $("#luckysheet-formula-search-c").find(".luckysheet-formula-search-item").removeClass("luckysheet-formula-search-item-active");
  98494. $up.addClass("luckysheet-formula-search-item-active");
  98495. event2.preventDefault();
  98496. }
  98497. } else if (kcode == keycode.LEFT && parseInt($inputbox.css("top")) > 0) {
  98498. formula_default.rangeHightlightselected($("#luckysheet-functionbox-cell"));
  98499. } else if (kcode == keycode.RIGHT && parseInt($inputbox.css("top")) > 0) {
  98500. formula_default.rangeHightlightselected($("#luckysheet-functionbox-cell"));
  98501. } else if (!(kcode >= 112 && kcode <= 123 || kcode <= 46 || kcode == 144 || kcode == 108 || event2.ctrlKey || event2.altKey || event2.shiftKey && (kcode == 37 || kcode == 38 || kcode == 39 || kcode == 40)) || kcode == 8 || kcode == 32 || kcode == 46 || event2.ctrlKey && kcode == 86) {
  98502. formula_default.functionInputHanddler($("#luckysheet-rich-text-editor"), $("#luckysheet-functionbox-cell"), kcode);
  98503. }
  98504. }).click(function() {
  98505. if (isEditMode()) {
  98506. return;
  98507. }
  98508. formula_default.rangeHightlightselected($("#luckysheet-functionbox-cell"));
  98509. });
  98510. $("#luckysheet-wa-functionbox-cancel").click(function() {
  98511. if (!$(this).hasClass("luckysheet-wa-calculate-active")) {
  98512. return;
  98513. }
  98514. if ($("#luckysheet-search-formula-parm").is(":visible")) {
  98515. $("#luckysheet-search-formula-parm").hide();
  98516. }
  98517. if ($("#luckysheet-search-formula-parm-select").is(":visible")) {
  98518. $("#luckysheet-search-formula-parm-select").hide();
  98519. }
  98520. formula_default.dontupdate();
  98521. luckysheetMoveHighlightCell("down", 0, "rangeOfSelect");
  98522. });
  98523. $("#luckysheet-wa-functionbox-confirm").click(function() {
  98524. if (!$(this).hasClass("luckysheet-wa-calculate-active")) {
  98525. return;
  98526. }
  98527. if ($("#luckysheet-search-formula-parm").is(":visible")) {
  98528. $("#luckysheet-search-formula-parm").hide();
  98529. }
  98530. if ($("#luckysheet-search-formula-parm-select").is(":visible")) {
  98531. $("#luckysheet-search-formula-parm-select").hide();
  98532. }
  98533. formula_default.updatecell(store_default.luckysheetCellUpdate[0], store_default.luckysheetCellUpdate[1]);
  98534. luckysheetMoveHighlightCell("down", 0, "rangeOfSelect");
  98535. });
  98536. $("#luckysheet-wa-functionbox-fx").click(function() {
  98537. if (store_default.luckysheet_select_save.length == 0) {
  98538. if (isEditMode()) {
  98539. alert(locale_formula.tipSelectCell);
  98540. } else {
  98541. tooltip_default.info(locale_formula.tipSelectCell, "");
  98542. }
  98543. return;
  98544. }
  98545. let last = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1];
  98546. let row_index = last["row_focus"], col_index = last["column_focus"];
  98547. luckysheetupdateCell(row_index, col_index, store_default.flowdata);
  98548. let cell = store_default.flowdata[row_index][col_index];
  98549. if (cell != null && cell.f != null) {
  98550. let functionStr = formula_default.getfunctionParam(cell.f);
  98551. if (functionStr.fn != null) {
  98552. insertFormula_default.formulaParmDialog(functionStr.fn, functionStr.param);
  98553. } else {
  98554. insertFormula_default.formulaListDialog();
  98555. }
  98556. } else {
  98557. $("#luckysheet-rich-text-editor").html('<span dir="auto" class="luckysheet-formula-text-color">=</span>');
  98558. $("#luckysheet-functionbox-cell").html($("#luckysheet-rich-text-editor").html());
  98559. insertFormula_default.formulaListDialog();
  98560. }
  98561. insertFormula_default.init();
  98562. });
  98563. $("#luckysheet-formula-functionrange").on("mousedown", ".luckysheet-copy", function(event2) {
  98564. formula_default.rangeMove = true;
  98565. store_default.luckysheet_scroll_status = true;
  98566. formula_default.rangeMoveObj = $(this).parent();
  98567. formula_default.rangeMoveIndex = $(this).parent().attr("rangeindex");
  98568. let mouse = mouseposition(event2.pageX, event2.pageY);
  98569. let x = mouse[0] + $("#luckysheet-cell-main").scrollLeft();
  98570. let y = mouse[1] + $("#luckysheet-cell-main").scrollTop();
  98571. $("#luckysheet-formula-functionrange-highlight-" + formula_default.rangeMoveIndex).find(".luckysheet-selection-copy-hc").css("opacity", 0.13);
  98572. let type = $(this).data("type");
  98573. if (type == "top") {
  98574. y += 3;
  98575. } else if (type == "right") {
  98576. x -= 3;
  98577. } else if (type == "bottom") {
  98578. y -= 3;
  98579. } else if (type == "left") {
  98580. x += 3;
  98581. }
  98582. let row_index = rowLocation(y)[2];
  98583. let col_index = colLocation(x)[2];
  98584. formula_default.rangeMovexy = [row_index, col_index];
  98585. $("#luckysheet-sheettable").css("cursor", "move");
  98586. event2.stopPropagation();
  98587. });
  98588. $("#luckysheet-formula-functionrange").on("mousedown", ".luckysheet-highlight", function(event2) {
  98589. formula_default.rangeResize = $(this).data("type");
  98590. formula_default.rangeResizeIndex = $(this).parent().attr("rangeindex");
  98591. let mouse = mouseposition(event2.pageX, event2.pageY), scrollLeft = $("#luckysheet-cell-main").scrollLeft(), scrollTop = $("#luckysheet-cell-main").scrollTop();
  98592. let x = mouse[0] + scrollLeft;
  98593. let y = mouse[1] + scrollTop;
  98594. formula_default.rangeResizeObj = $(this).parent();
  98595. $("#luckysheet-formula-functionrange-highlight-" + formula_default.rangeResizeIndex).find(".luckysheet-selection-copy-hc").css("opacity", 0.13);
  98596. if (formula_default.rangeResize == "lt") {
  98597. x += 3;
  98598. y += 3;
  98599. } else if (formula_default.rangeResize == "lb") {
  98600. x += 3;
  98601. y -= 3;
  98602. } else if (formula_default.rangeResize == "rt") {
  98603. x -= 3;
  98604. y += 3;
  98605. } else if (formula_default.rangeResize == "rb") {
  98606. x -= 3;
  98607. y -= 3;
  98608. }
  98609. let row_location = rowLocation(y), row = row_location[1], row_pre = row_location[0], row_index = row_location[2];
  98610. let col_location = colLocation(x), col = col_location[1], col_pre = col_location[0], col_index = col_location[2];
  98611. let position = formula_default.rangeResizeObj.position();
  98612. formula_default.rangeResizexy = [
  98613. col_pre,
  98614. row_pre,
  98615. formula_default.rangeResizeObj.width(),
  98616. formula_default.rangeResizeObj.height(),
  98617. position.left + scrollLeft,
  98618. position.top + scrollTop,
  98619. col,
  98620. row
  98621. ];
  98622. formula_default.rangeResizeWinH = $("#luckysheet-cell-main")[0].scrollHeight;
  98623. formula_default.rangeResizeWinW = $("#luckysheet-cell-main")[0].scrollWidth;
  98624. store_default.luckysheet_scroll_status = true;
  98625. event2.stopPropagation();
  98626. });
  98627. }
  98628. var init_formulaBar = __esm({
  98629. "src/controllers/formulaBar.js"() {
  98630. init_menuButton();
  98631. init_updateCell();
  98632. init_constant();
  98633. init_sheetMove();
  98634. init_insertFormula();
  98635. init_location();
  98636. init_validate();
  98637. init_formula();
  98638. init_tooltip();
  98639. init_locale();
  98640. init_store();
  98641. }
  98642. });
  98643. // src/controllers/rowColumnOperation.js
  98644. function rowColumnOperationInitial() {
  98645. $("#luckysheet-rows-h").mousedown(function(event2) {
  98646. if (!checkProtectionAllSelected(store_default.currentSheetIndex)) {
  98647. return;
  98648. }
  98649. postil_default.removeActivePs();
  98650. if ($("#luckysheet-modal-dialog-activeImage").is(":visible") || $("#luckysheet-modal-dialog-cropping").is(":visible")) {
  98651. imageCtrl_default.cancelActiveImgItem();
  98652. }
  98653. let mouse = mouseposition(event2.pageX, event2.pageY);
  98654. let y = mouse[1] + $("#luckysheet-rows-h").scrollTop();
  98655. let row_location = rowLocation(y), row = row_location[1], row_pre = row_location[0], row_index = row_location[2];
  98656. let col_index = store_default.visibledatacolumn.length - 1, col = store_default.visibledatacolumn[col_index], col_pre = 0;
  98657. $("#luckysheet-rightclick-menu").hide();
  98658. $("#luckysheet-sheet-list, #luckysheet-rightclick-sheet-menu").hide();
  98659. if (event2.which == "3") {
  98660. let isright = false;
  98661. for (let s = 0; s < store_default.luckysheet_select_save.length; s++) {
  98662. let obj_s = store_default.luckysheet_select_save[s];
  98663. if (obj_s["row"] != null && (row_index >= obj_s["row"][0] && row_index <= obj_s["row"][1]) && (obj_s["column"][0] == 0 && obj_s["column"][1] == store_default.flowdata[0].length - 1)) {
  98664. isright = true;
  98665. break;
  98666. }
  98667. }
  98668. if (isright) {
  98669. return;
  98670. }
  98671. }
  98672. let top = row_pre, height = row - row_pre - 1;
  98673. let rowseleted = [row_index, row_index];
  98674. store_default.luckysheet_scroll_status = true;
  98675. let $input = $("#luckysheet-input-box");
  98676. if (parseInt($input.css("top")) > 0) {
  98677. if (formula_default.rangestart || formula_default.rangedrag_column_start || formula_default.rangedrag_row_start || formula_default.israngeseleciton() || $("#luckysheet-ifFormulaGenerator-multiRange-dialog").is(":visible")) {
  98678. let changeparam = menuButton_default.mergeMoveMain([0, col_index], rowseleted, {"row_focus": row_index, "column_focus": 0}, top, height, col_pre, col);
  98679. if (changeparam != null) {
  98680. rowseleted = changeparam[1];
  98681. top = changeparam[2];
  98682. height = changeparam[3];
  98683. }
  98684. if (event2.shiftKey) {
  98685. let last = formula_default.func_selectedrange;
  98686. let top2 = 0, height2 = 0, rowseleted2 = [];
  98687. if (last.top > row_pre) {
  98688. top2 = row_pre;
  98689. height2 = last.top + last.height - row_pre;
  98690. if (last.row[1] > last.row_focus) {
  98691. last.row[1] = last.row_focus;
  98692. }
  98693. rowseleted2 = [row_index, last.row[1]];
  98694. } else if (last.top == row_pre) {
  98695. top2 = row_pre;
  98696. height2 = last.top + last.height - row_pre;
  98697. rowseleted2 = [row_index, last.row[0]];
  98698. } else {
  98699. top2 = last.top;
  98700. height2 = row - last.top - 1;
  98701. if (last.row[0] < last.row_focus) {
  98702. last.row[0] = last.row_focus;
  98703. }
  98704. rowseleted2 = [last.row[0], row_index];
  98705. }
  98706. let changeparam2 = menuButton_default.mergeMoveMain([0, col_index], rowseleted2, {"row_focus": row_index, "column_focus": 0}, top2, height2, col_pre, col);
  98707. if (changeparam2 != null) {
  98708. rowseleted2 = changeparam2[1];
  98709. top2 = changeparam2[2];
  98710. height2 = changeparam2[3];
  98711. }
  98712. last["row"] = rowseleted2;
  98713. last["top_move"] = top2;
  98714. last["height_move"] = height2;
  98715. formula_default.func_selectedrange = last;
  98716. } else if (event2.ctrlKey && $("#luckysheet-rich-text-editor").find("span").last().text() != ",") {
  98717. let vText = $("#luckysheet-rich-text-editor").text() + ",";
  98718. if (vText.length > 0 && vText.substr(0, 1) == "=") {
  98719. vText = formula_default.functionHTMLGenerate(vText);
  98720. if (window.getSelection) {
  98721. let currSelection = window.getSelection();
  98722. formula_default.functionRangeIndex = [$(currSelection.anchorNode).parent().index(), currSelection.anchorOffset];
  98723. } else {
  98724. let textRange = document.selection.createRange();
  98725. formula_default.functionRangeIndex = textRange;
  98726. }
  98727. $("#luckysheet-rich-text-editor").html(vText);
  98728. formula_default.canceFunctionrangeSelected();
  98729. formula_default.createRangeHightlight();
  98730. }
  98731. formula_default.rangestart = false;
  98732. formula_default.rangedrag_column_start = false;
  98733. formula_default.rangedrag_row_start = false;
  98734. $("#luckysheet-functionbox-cell").html(vText);
  98735. formula_default.rangeHightlightselected($("#luckysheet-rich-text-editor"));
  98736. formula_default.israngeseleciton();
  98737. formula_default.func_selectedrange = {
  98738. "left": colLocationByIndex(0)[0],
  98739. "width": colLocationByIndex(0)[1] - colLocationByIndex(0)[0] - 1,
  98740. "top": top,
  98741. "height": height,
  98742. "left_move": col_pre,
  98743. "width_move": col - col_pre - 1,
  98744. "top_move": top,
  98745. "height_move": height,
  98746. "row": rowseleted,
  98747. "column": [0, col_index],
  98748. "row_focus": row_index,
  98749. "column_focus": 0
  98750. };
  98751. } else {
  98752. formula_default.func_selectedrange = {
  98753. "left": colLocationByIndex(0)[0],
  98754. "width": colLocationByIndex(0)[1] - colLocationByIndex(0)[0] - 1,
  98755. "top": top,
  98756. "height": height,
  98757. "left_move": col_pre,
  98758. "width_move": col - col_pre - 1,
  98759. "top_move": top,
  98760. "height_move": height,
  98761. "row": rowseleted,
  98762. "column": [0, col_index],
  98763. "row_focus": row_index,
  98764. "column_focus": 0
  98765. };
  98766. }
  98767. if (formula_default.rangestart || formula_default.rangedrag_column_start || formula_default.rangedrag_row_start || formula_default.israngeseleciton()) {
  98768. formula_default.rangeSetValue({"row": rowseleted, "column": [null, null]});
  98769. } else if ($("#luckysheet-ifFormulaGenerator-multiRange-dialog").is(":visible")) {
  98770. let range2 = getRangetxt(store_default.currentSheetIndex, {"row": rowseleted, "column": [0, col_index]}, store_default.currentSheetIndex);
  98771. $("#luckysheet-ifFormulaGenerator-multiRange-dialog input").val(range2);
  98772. }
  98773. formula_default.rangedrag_row_start = true;
  98774. formula_default.rangestart = false;
  98775. formula_default.rangedrag_column_start = false;
  98776. $("#luckysheet-formula-functionrange-select").css({
  98777. "left": col_pre,
  98778. "width": col - col_pre - 1,
  98779. "top": top,
  98780. "height": height
  98781. }).show();
  98782. $("#luckysheet-formula-help-c").hide();
  98783. luckysheet_count_show(col_pre, top, col - col_pre - 1, height, rowseleted, [0, col_index]);
  98784. setTimeout(function() {
  98785. let currSelection = window.getSelection();
  98786. let anchorOffset = currSelection.anchorNode;
  98787. let $editor;
  98788. if ($("#luckysheet-search-formula-parm").is(":visible") || $("#luckysheet-search-formula-parm-select").is(":visible")) {
  98789. $editor = $("#luckysheet-rich-text-editor");
  98790. formula_default.rangechangeindex = formula_default.data_parm_index;
  98791. } else {
  98792. $editor = $(anchorOffset).closest("div");
  98793. }
  98794. let $span = $editor.find("span[rangeindex='" + formula_default.rangechangeindex + "']");
  98795. formula_default.setCaretPosition($span.get(0), 0, $span.html().length);
  98796. }, 1);
  98797. return;
  98798. } else {
  98799. formula_default.updatecell(store_default.luckysheetCellUpdate[0], store_default.luckysheetCellUpdate[1]);
  98800. store_default.luckysheet_rows_selected_status = true;
  98801. }
  98802. } else {
  98803. store_default.luckysheet_rows_selected_status = true;
  98804. }
  98805. if (store_default.luckysheet_rows_selected_status) {
  98806. if (event2.shiftKey) {
  98807. let last = $.extend(true, {}, store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1]);
  98808. let top2 = 0, height2 = 0, rowseleted2 = [];
  98809. if (last.top > row_pre) {
  98810. top2 = row_pre;
  98811. height2 = last.top + last.height - row_pre;
  98812. if (last.row[1] > last.row_focus) {
  98813. last.row[1] = last.row_focus;
  98814. }
  98815. rowseleted2 = [row_index, last.row[1]];
  98816. } else if (last.top == row_pre) {
  98817. top2 = row_pre;
  98818. height2 = last.top + last.height - row_pre;
  98819. rowseleted2 = [row_index, last.row[0]];
  98820. } else {
  98821. top2 = last.top;
  98822. height2 = row - last.top - 1;
  98823. if (last.row[0] < last.row_focus) {
  98824. last.row[0] = last.row_focus;
  98825. }
  98826. rowseleted2 = [last.row[0], row_index];
  98827. }
  98828. last["row"] = rowseleted2;
  98829. last["top_move"] = top2;
  98830. last["height_move"] = height2;
  98831. store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1] = last;
  98832. } else if (event2.ctrlKey) {
  98833. store_default.luckysheet_select_save.push({
  98834. "left": colLocationByIndex(0)[0],
  98835. "width": colLocationByIndex(0)[1] - colLocationByIndex(0)[0] - 1,
  98836. "top": top,
  98837. "height": height,
  98838. "left_move": col_pre,
  98839. "width_move": col - col_pre - 1,
  98840. "top_move": top,
  98841. "height_move": height,
  98842. "row": rowseleted,
  98843. "column": [0, col_index],
  98844. "row_focus": row_index,
  98845. "column_focus": 0,
  98846. "row_select": true
  98847. });
  98848. } else {
  98849. store_default.luckysheet_select_save.length = 0;
  98850. store_default.luckysheet_select_save.push({
  98851. "left": colLocationByIndex(0)[0],
  98852. "width": colLocationByIndex(0)[1] - colLocationByIndex(0)[0] - 1,
  98853. "top": top,
  98854. "height": height,
  98855. "left_move": col_pre,
  98856. "width_move": col - col_pre - 1,
  98857. "top_move": top,
  98858. "height_move": height,
  98859. "row": rowseleted,
  98860. "column": [0, col_index],
  98861. "row_focus": row_index,
  98862. "column_focus": 0,
  98863. "row_select": true
  98864. });
  98865. }
  98866. selectHightlightShow();
  98867. server_default.saveParam("mv", store_default.currentSheetIndex, store_default.luckysheet_select_save);
  98868. }
  98869. selectHelpboxFill();
  98870. setTimeout(function() {
  98871. clearTimeout(store_default.countfuncTimeout);
  98872. countfunc();
  98873. }, 101);
  98874. }).mousemove(function(event2) {
  98875. if (store_default.luckysheet_rows_selected_status || store_default.luckysheet_rows_change_size || store_default.luckysheet_select_status) {
  98876. $("#luckysheet-rows-h-hover").hide();
  98877. return;
  98878. }
  98879. let mouse = mouseposition(event2.pageX, event2.pageY);
  98880. let y = mouse[1] + $("#luckysheet-rows-h").scrollTop();
  98881. let row_location = rowLocation(y), row = row_location[1], row_pre = row_location[0], row_index = row_location[2];
  98882. $("#luckysheet-rows-h-hover").css({"top": row_pre, "height": row - row_pre - 1, "display": "block"});
  98883. if (y < row - 1 && y >= row - 5) {
  98884. $("#luckysheet-rows-change-size").css({"top": row - 3, "opacity": 0});
  98885. } else {
  98886. $("#luckysheet-rows-change-size").css("opacity", 0);
  98887. }
  98888. }).mouseleave(function(event2) {
  98889. $("#luckysheet-rows-h-hover").hide();
  98890. $("#luckysheet-rows-change-size").css("opacity", 0);
  98891. }).mouseup(function(event2) {
  98892. if (event2.which == 3) {
  98893. if (!checkIsAllowEdit()) {
  98894. return;
  98895. }
  98896. if (isEditMode()) {
  98897. return;
  98898. }
  98899. $("#luckysheet-cols-rows-shift").hide();
  98900. store_default.luckysheetRightHeadClickIs = "row";
  98901. $("#luckysheet-rightclick-menu .luckysheet-cols-rows-shift-word").text(locale_default().rightclick.row);
  98902. $("#luckysheet-rightclick-menu .luckysheet-cols-rows-shift-size").text(locale_default().rightclick.height);
  98903. $("#luckysheet-rightclick-menu .luckysheet-cols-rows-shift-left").text(locale_default().rightclick.top);
  98904. $("#luckysheet-rightclick-menu .luckysheet-cols-rows-shift-right").text(locale_default().rightclick.bottom);
  98905. $("#luckysheet-cols-rows-add").show();
  98906. $("#luckysheet-cols-rows-data").show();
  98907. $("#luckysheet-cols-rows-shift").hide();
  98908. $("#luckysheet-cols-rows-handleincell").hide();
  98909. $$("#luckysheet-cols-rows-add .luckysheet-menuseparator").style.display = "block";
  98910. $$("#luckysheet-cols-rows-data .luckysheet-menuseparator").style.display = "block";
  98911. const cellRightClickConfig = luckysheetConfigsetting_default.cellRightClickConfig;
  98912. if (!cellRightClickConfig.copy && !cellRightClickConfig.copyAs && !cellRightClickConfig.paste && !cellRightClickConfig.insertRow && !cellRightClickConfig.deleteRow && !cellRightClickConfig.hideRow && !cellRightClickConfig.rowHeight && !cellRightClickConfig.clear && !cellRightClickConfig.matrix && !cellRightClickConfig.sort && !cellRightClickConfig.filter && !cellRightClickConfig.chart && !cellRightClickConfig.image && !cellRightClickConfig.link && !cellRightClickConfig.data && !cellRightClickConfig.cellFormat) {
  98913. return;
  98914. }
  98915. $$("#luckysheet-top-left-add-selected").style.display = cellRightClickConfig.insertRow ? "block" : "none";
  98916. $$("#luckysheet-bottom-right-add-selected").style.display = cellRightClickConfig.insertRow ? "block" : "none";
  98917. $$("#luckysheet-del-selected").style.display = cellRightClickConfig.deleteRow ? "block" : "none";
  98918. $$("#luckysheet-hide-selected").style.display = cellRightClickConfig.hideRow ? "block" : "none";
  98919. $$("#luckysheet-show-selected").style.display = cellRightClickConfig.hideRow ? "block" : "none";
  98920. $$("#luckysheet-column-row-width-selected").style.display = cellRightClickConfig.rowHeight ? "block" : "none";
  98921. if (!cellRightClickConfig.copy && !cellRightClickConfig.copyAs && !cellRightClickConfig.paste) {
  98922. $$("#luckysheet-cols-rows-add .luckysheet-menuseparator").style.display = "none";
  98923. if (!cellRightClickConfig.insertRow && !cellRightClickConfig.deleteRow && !cellRightClickConfig.hideRow && !cellRightClickConfig.rowHeight) {
  98924. $$("#luckysheet-cols-rows-data .luckysheet-menuseparator").style.display = "none";
  98925. }
  98926. }
  98927. if (!cellRightClickConfig.insertRow && !cellRightClickConfig.deleteRow && !cellRightClickConfig.hideRow && !cellRightClickConfig.rowHeight) {
  98928. $$("#luckysheet-cols-rows-add .luckysheet-menuseparator").style.display = "none";
  98929. }
  98930. if (!cellRightClickConfig.clear && !cellRightClickConfig.matrix && !cellRightClickConfig.sort && !cellRightClickConfig.filter && !cellRightClickConfig.chart && !cellRightClickConfig.image && !cellRightClickConfig.link && !cellRightClickConfig.data && !cellRightClickConfig.cellFormat) {
  98931. $$("#luckysheet-cols-rows-data .luckysheet-menuseparator").style.display = "none";
  98932. }
  98933. showrightclickmenu($("#luckysheet-rightclick-menu"), $(this).offset().left + 46, event2.pageY);
  98934. store_default.luckysheet_cols_menu_status = true;
  98935. let cfg = $.extend(true, {}, store_default.config);
  98936. if (cfg["rowlen"] == null) {
  98937. cfg["rowlen"] = {};
  98938. }
  98939. let first_rowlen = cfg["rowlen"][store_default.luckysheet_select_save[0].row[0]] == null ? store_default.defaultrowlen : cfg["rowlen"][store_default.luckysheet_select_save[0].row[0]];
  98940. let isSame = true;
  98941. for (let i2 = 0; i2 < store_default.luckysheet_select_save.length; i2++) {
  98942. let s = store_default.luckysheet_select_save[i2];
  98943. let r1 = s.row[0], r2 = s.row[1];
  98944. for (let r3 = r1; r3 <= r2; r3++) {
  98945. let rowlen = cfg["rowlen"][r3] == null ? store_default.defaultrowlen : cfg["rowlen"][r3];
  98946. if (rowlen != first_rowlen) {
  98947. isSame = false;
  98948. break;
  98949. }
  98950. }
  98951. }
  98952. if (isSame) {
  98953. $("#luckysheet-cols-rows-add").find("input[type='number'].rcsize").val(first_rowlen);
  98954. } else {
  98955. $("#luckysheet-cols-rows-add").find("input[type='number'].rcsize").val("");
  98956. }
  98957. }
  98958. });
  98959. $("#luckysheet-cols-h-c").mousedown(function(event2) {
  98960. if (!checkProtectionAllSelected(store_default.currentSheetIndex)) {
  98961. return;
  98962. }
  98963. postil_default.removeActivePs();
  98964. if ($("#luckysheet-modal-dialog-activeImage").is(":visible") || $("#luckysheet-modal-dialog-cropping").is(":visible")) {
  98965. imageCtrl_default.cancelActiveImgItem();
  98966. }
  98967. let mouse = mouseposition(event2.pageX, event2.pageY);
  98968. let x = mouse[0] + $(this).scrollLeft();
  98969. let row_index = store_default.visibledatarow.length - 1, row = store_default.visibledatarow[row_index], row_pre = 0;
  98970. let col_location = colLocation(x), col = col_location[1], col_pre = col_location[0], col_index = col_location[2];
  98971. store_default.orderbyindex = col_index;
  98972. $("#luckysheet-rightclick-menu").hide();
  98973. $("#luckysheet-sheet-list, #luckysheet-rightclick-sheet-menu").hide();
  98974. $("#luckysheet-filter-menu, #luckysheet-filter-submenu").hide();
  98975. if (event2.which == "3") {
  98976. let isright = false;
  98977. for (let s = 0; s < store_default.luckysheet_select_save.length; s++) {
  98978. let obj_s = store_default.luckysheet_select_save[s];
  98979. if (obj_s["column"] != null && (col_index >= obj_s["column"][0] && col_index <= obj_s["column"][1]) && (obj_s["row"][0] == 0 && obj_s["row"][1] == store_default.flowdata.length - 1)) {
  98980. isright = true;
  98981. break;
  98982. }
  98983. }
  98984. if (isright) {
  98985. return;
  98986. }
  98987. }
  98988. let left = col_pre, width = col - col_pre - 1;
  98989. let columnseleted = [col_index, col_index];
  98990. store_default.luckysheet_scroll_status = true;
  98991. let $input = $("#luckysheet-input-box");
  98992. if (parseInt($input.css("top")) > 0) {
  98993. if (formula_default.rangestart || formula_default.rangedrag_column_start || formula_default.rangedrag_row_start || formula_default.israngeseleciton() || $("#luckysheet-ifFormulaGenerator-multiRange-dialog").is(":visible")) {
  98994. let changeparam = menuButton_default.mergeMoveMain(columnseleted, [0, row_index], {"row_focus": 0, "column_focus": col_index}, row_pre, row, left, width);
  98995. if (changeparam != null) {
  98996. columnseleted = changeparam[0];
  98997. left = changeparam[4];
  98998. width = changeparam[5];
  98999. }
  99000. if (event2.shiftKey) {
  99001. let last = formula_default.func_selectedrange;
  99002. let left2 = 0, width2 = 0, columnseleted2 = [];
  99003. if (last.left > col_pre) {
  99004. left2 = col_pre;
  99005. width2 = last.left + last.width - col_pre;
  99006. if (last.column[1] > last.column_focus) {
  99007. last.column[1] = last.column_focus;
  99008. }
  99009. columnseleted2 = [col_index, last.column[1]];
  99010. } else if (last.left == col_pre) {
  99011. left2 = col_pre;
  99012. width2 = last.left + last.width - col_pre;
  99013. columnseleted2 = [col_index, last.column[0]];
  99014. } else {
  99015. left2 = last.left;
  99016. width2 = col - last.left - 1;
  99017. if (last.column[0] < last.column_focus) {
  99018. last.column[0] = last.column_focus;
  99019. }
  99020. columnseleted2 = [last.column[0], col_index];
  99021. }
  99022. let changeparam2 = menuButton_default.mergeMoveMain(columnseleted2, [0, row_index], {"row_focus": 0, "column_focus": col_index}, row_pre, row, left2, width2);
  99023. if (changeparam2 != null) {
  99024. columnseleted2 = changeparam2[0];
  99025. left2 = changeparam2[4];
  99026. width2 = changeparam2[5];
  99027. }
  99028. last["column"] = columnseleted2;
  99029. last["left_move"] = left2;
  99030. last["width_move"] = width2;
  99031. formula_default.func_selectedrange = last;
  99032. } else if (event2.ctrlKey && $("#luckysheet-rich-text-editor").find("span").last().text() != ",") {
  99033. let vText = $("#luckysheet-rich-text-editor").text() + ",";
  99034. if (vText.length > 0 && vText.substr(0, 1) == "=") {
  99035. vText = formula_default.functionHTMLGenerate(vText);
  99036. if (window.getSelection) {
  99037. let currSelection = window.getSelection();
  99038. formula_default.functionRangeIndex = [$(currSelection.anchorNode).parent().index(), currSelection.anchorOffset];
  99039. } else {
  99040. let textRange = document.selection.createRange();
  99041. formula_default.functionRangeIndex = textRange;
  99042. }
  99043. $("#luckysheet-rich-text-editor").html(vText);
  99044. formula_default.canceFunctionrangeSelected();
  99045. formula_default.createRangeHightlight();
  99046. }
  99047. formula_default.rangestart = false;
  99048. formula_default.rangedrag_column_start = false;
  99049. formula_default.rangedrag_row_start = false;
  99050. $("#luckysheet-functionbox-cell").html(vText);
  99051. formula_default.rangeHightlightselected($("#luckysheet-rich-text-editor"));
  99052. formula_default.israngeseleciton();
  99053. formula_default.func_selectedrange = {
  99054. "left": left,
  99055. "width": width,
  99056. "top": rowLocationByIndex(0)[0],
  99057. "height": rowLocationByIndex(0)[1] - rowLocationByIndex(0)[0] - 1,
  99058. "left_move": left,
  99059. "width_move": width,
  99060. "top_move": row_pre,
  99061. "height_move": row - row_pre - 1,
  99062. "row": [0, row_index],
  99063. "column": columnseleted,
  99064. "row_focus": 0,
  99065. "column_focus": col_index
  99066. };
  99067. } else {
  99068. formula_default.func_selectedrange = {
  99069. "left": left,
  99070. "width": width,
  99071. "top": rowLocationByIndex(0)[0],
  99072. "height": rowLocationByIndex(0)[1] - rowLocationByIndex(0)[0] - 1,
  99073. "left_move": left,
  99074. "width_move": width,
  99075. "top_move": row_pre,
  99076. "height_move": row - row_pre - 1,
  99077. "row": [0, row_index],
  99078. "column": columnseleted,
  99079. "row_focus": 0,
  99080. "column_focus": col_index
  99081. };
  99082. }
  99083. if (formula_default.rangestart || formula_default.rangedrag_column_start || formula_default.rangedrag_row_start || formula_default.israngeseleciton()) {
  99084. formula_default.rangeSetValue({"row": [null, null], "column": columnseleted});
  99085. } else if ($("#luckysheet-ifFormulaGenerator-multiRange-dialog").is(":visible")) {
  99086. let range2 = getRangetxt(store_default.currentSheetIndex, {"row": [0, row_index], "column": columnseleted}, store_default.currentSheetIndex);
  99087. $("#luckysheet-ifFormulaGenerator-multiRange-dialog input").val(range2);
  99088. }
  99089. formula_default.rangedrag_column_start = true;
  99090. formula_default.rangestart = false;
  99091. formula_default.rangedrag_row_start = false;
  99092. $("#luckysheet-formula-functionrange-select").css({
  99093. "left": left,
  99094. "width": width,
  99095. "top": row_pre,
  99096. "height": row - row_pre - 1
  99097. }).show();
  99098. $("#luckysheet-formula-help-c").hide();
  99099. luckysheet_count_show(left, row_pre, width, row - row_pre - 1, [0, row_index], columnseleted);
  99100. return;
  99101. } else {
  99102. formula_default.updatecell(store_default.luckysheetCellUpdate[0], store_default.luckysheetCellUpdate[1]);
  99103. store_default.luckysheet_cols_selected_status = true;
  99104. }
  99105. } else {
  99106. store_default.luckysheet_cols_selected_status = true;
  99107. }
  99108. if (store_default.luckysheet_cols_selected_status) {
  99109. if (event2.shiftKey) {
  99110. let last = $.extend(true, {}, store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1]);
  99111. let left2 = 0, width2 = 0, columnseleted2 = [];
  99112. if (last.left > col_pre) {
  99113. left2 = col_pre;
  99114. width2 = last.left + last.width - col_pre;
  99115. if (last.column[1] > last.column_focus) {
  99116. last.column[1] = last.column_focus;
  99117. }
  99118. columnseleted2 = [col_index, last.column[1]];
  99119. } else if (last.left == col_pre) {
  99120. left2 = col_pre;
  99121. width2 = last.left + last.width - col_pre;
  99122. columnseleted2 = [col_index, last.column[0]];
  99123. } else {
  99124. left2 = last.left;
  99125. width2 = col - last.left - 1;
  99126. if (last.column[0] < last.column_focus) {
  99127. last.column[0] = last.column_focus;
  99128. }
  99129. columnseleted2 = [last.column[0], col_index];
  99130. }
  99131. last["column"] = columnseleted2;
  99132. last["left_move"] = left2;
  99133. last["width_move"] = width2;
  99134. store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1] = last;
  99135. } else if (event2.ctrlKey) {
  99136. store_default.luckysheet_select_save.push({
  99137. "left": left,
  99138. "width": width,
  99139. "top": rowLocationByIndex(0)[0],
  99140. "height": rowLocationByIndex(0)[1] - rowLocationByIndex(0)[0] - 1,
  99141. "left_move": left,
  99142. "width_move": width,
  99143. "top_move": row_pre,
  99144. "height_move": row - row_pre - 1,
  99145. "row": [0, row_index],
  99146. "column": columnseleted,
  99147. "row_focus": 0,
  99148. "column_focus": col_index,
  99149. "column_select": true
  99150. });
  99151. } else {
  99152. store_default.luckysheet_select_save.length = 0;
  99153. store_default.luckysheet_select_save.push({
  99154. "left": left,
  99155. "width": width,
  99156. "top": rowLocationByIndex(0)[0],
  99157. "height": rowLocationByIndex(0)[1] - rowLocationByIndex(0)[0] - 1,
  99158. "left_move": left,
  99159. "width_move": width,
  99160. "top_move": row_pre,
  99161. "height_move": row - row_pre - 1,
  99162. "row": [0, row_index],
  99163. "column": columnseleted,
  99164. "row_focus": 0,
  99165. "column_focus": col_index,
  99166. "column_select": true
  99167. });
  99168. }
  99169. selectHightlightShow();
  99170. server_default.saveParam("mv", store_default.currentSheetIndex, store_default.luckysheet_select_save);
  99171. }
  99172. selectHelpboxFill();
  99173. setTimeout(function() {
  99174. clearTimeout(store_default.countfuncTimeout);
  99175. countfunc();
  99176. }, 101);
  99177. if (store_default.luckysheet_cols_menu_status) {
  99178. $("#luckysheet-rightclick-menu").hide();
  99179. $("#luckysheet-cols-h-hover").hide();
  99180. $("#luckysheet-cols-menu-btn").hide();
  99181. store_default.luckysheet_cols_menu_status = false;
  99182. }
  99183. event2.stopPropagation();
  99184. }).mousemove(function(event2) {
  99185. if (store_default.luckysheet_cols_selected_status || store_default.luckysheet_select_status) {
  99186. $("#luckysheet-cols-h-hover").hide();
  99187. $("#luckysheet-cols-menu-btn").hide();
  99188. return;
  99189. }
  99190. if (store_default.luckysheet_cols_menu_status || store_default.luckysheet_cols_change_size) {
  99191. return;
  99192. }
  99193. let mouse = mouseposition(event2.pageX, event2.pageY);
  99194. let x = mouse[0] + $("#luckysheet-cols-h-c").scrollLeft();
  99195. let col_location = colLocation(x), col = col_location[1], col_pre = col_location[0], col_index = col_location[2];
  99196. $("#luckysheet-cols-h-hover").css({"left": col_pre, "width": col - col_pre - 1, "display": "block"});
  99197. $("#luckysheet-cols-menu-btn").css({"left": col - 19, "display": "block"});
  99198. $("#luckysheet-cols-change-size").css({"left": col - 5});
  99199. if (x < col && x >= col - 5) {
  99200. $("#luckysheet-cols-change-size").css({"opacity": 0});
  99201. $("#luckysheet-cols-menu-btn").hide();
  99202. } else {
  99203. $("#luckysheet-change-size-line").hide();
  99204. $("#luckysheet-cols-change-size").css("opacity", 0);
  99205. }
  99206. }).mouseleave(function(event2) {
  99207. if (store_default.luckysheet_cols_menu_status || store_default.luckysheet_cols_change_size) {
  99208. return;
  99209. }
  99210. $("#luckysheet-cols-h-hover").hide();
  99211. $("#luckysheet-cols-menu-btn").hide();
  99212. $("#luckysheet-cols-change-size").css("opacity", 0);
  99213. }).mouseup(function(event2) {
  99214. if (event2.which == 3) {
  99215. if (!checkIsAllowEdit()) {
  99216. return;
  99217. }
  99218. if (isEditMode()) {
  99219. return;
  99220. }
  99221. store_default.luckysheetRightHeadClickIs = "column";
  99222. $("#luckysheet-rightclick-menu .luckysheet-cols-rows-shift-word").text(locale_default().rightclick.column);
  99223. $("#luckysheet-rightclick-menu .luckysheet-cols-rows-shift-size").text(locale_default().rightclick.width);
  99224. $("#luckysheet-rightclick-menu .luckysheet-cols-rows-shift-left").text(locale_default().rightclick.left);
  99225. $("#luckysheet-rightclick-menu .luckysheet-cols-rows-shift-right").text(locale_default().rightclick.right);
  99226. $("#luckysheet-cols-rows-add").show();
  99227. $("#luckysheet-cols-rows-data").show();
  99228. $("#luckysheet-cols-rows-shift").hide();
  99229. $("#luckysheet-cols-rows-handleincell").hide();
  99230. $$("#luckysheet-cols-rows-add .luckysheet-menuseparator").style.display = "block";
  99231. $$("#luckysheet-cols-rows-data .luckysheet-menuseparator").style.display = "block";
  99232. const cellRightClickConfig = luckysheetConfigsetting_default.cellRightClickConfig;
  99233. if (!cellRightClickConfig.copy && !cellRightClickConfig.copyAs && !cellRightClickConfig.paste && !cellRightClickConfig.insertColumn && !cellRightClickConfig.deleteColumn && !cellRightClickConfig.hideColumn && !cellRightClickConfig.columnWidth && !cellRightClickConfig.clear && !cellRightClickConfig.matrix && !cellRightClickConfig.sort && !cellRightClickConfig.filter && !cellRightClickConfig.chart && !cellRightClickConfig.image && !cellRightClickConfig.link && !cellRightClickConfig.data && !cellRightClickConfig.cellFormat) {
  99234. return;
  99235. }
  99236. $$("#luckysheet-top-left-add-selected").style.display = cellRightClickConfig.insertColumn ? "block" : "none";
  99237. $$("#luckysheet-bottom-right-add-selected").style.display = cellRightClickConfig.insertColumn ? "block" : "none";
  99238. $$("#luckysheet-del-selected").style.display = cellRightClickConfig.deleteColumn ? "block" : "none";
  99239. $$("#luckysheet-hide-selected").style.display = cellRightClickConfig.hideColumn ? "block" : "none";
  99240. $$("#luckysheet-show-selected").style.display = cellRightClickConfig.hideColumn ? "block" : "none";
  99241. $$("#luckysheet-column-row-width-selected").style.display = cellRightClickConfig.columnWidth ? "block" : "none";
  99242. if (!cellRightClickConfig.copy && !cellRightClickConfig.copyAs && !cellRightClickConfig.paste) {
  99243. $$("#luckysheet-cols-rows-add .luckysheet-menuseparator").style.display = "none";
  99244. if (!cellRightClickConfig.insertColumn && !cellRightClickConfig.deleteColumn && !cellRightClickConfig.hideColumn && !cellRightClickConfig.columnWidth) {
  99245. $$("#luckysheet-cols-rows-data .luckysheet-menuseparator").style.display = "none";
  99246. }
  99247. }
  99248. if (!cellRightClickConfig.insertColumn && !cellRightClickConfig.deleteColumn && !cellRightClickConfig.hideColumn && !cellRightClickConfig.columnWidth) {
  99249. $$("#luckysheet-cols-rows-add .luckysheet-menuseparator").style.display = "none";
  99250. }
  99251. if (!cellRightClickConfig.clear && !cellRightClickConfig.matrix && !cellRightClickConfig.sort && !cellRightClickConfig.filter && !cellRightClickConfig.chart && !cellRightClickConfig.image && !cellRightClickConfig.link && !cellRightClickConfig.data && !cellRightClickConfig.cellFormat) {
  99252. $$("#luckysheet-cols-rows-data .luckysheet-menuseparator").style.display = "none";
  99253. }
  99254. showrightclickmenu($("#luckysheet-rightclick-menu"), event2.pageX, $(this).offset().top + 18);
  99255. store_default.luckysheet_cols_menu_status = true;
  99256. let cfg = $.extend(true, {}, store_default.config);
  99257. if (cfg["columnlen"] == null) {
  99258. cfg["columnlen"] = {};
  99259. }
  99260. let first_collen = cfg["columnlen"][store_default.luckysheet_select_save[0].column[0]] == null ? store_default.defaultcollen : cfg["columnlen"][store_default.luckysheet_select_save[0].column[0]];
  99261. let isSame = true;
  99262. for (let i2 = 0; i2 < store_default.luckysheet_select_save.length; i2++) {
  99263. let s = store_default.luckysheet_select_save[i2];
  99264. let c1 = s.column[0], c2 = s.column[1];
  99265. for (let c3 = c1; c3 <= c2; c3++) {
  99266. let collen = cfg["columnlen"][c3] == null ? store_default.defaultcollen : cfg["columnlen"][c3];
  99267. if (collen != first_collen) {
  99268. isSame = false;
  99269. break;
  99270. }
  99271. }
  99272. }
  99273. if (isSame) {
  99274. $("#luckysheet-cols-rows-add").find("input[type='number'].rcsize").val(first_collen);
  99275. } else {
  99276. $("#luckysheet-cols-rows-add").find("input[type='number'].rcsize").val("");
  99277. }
  99278. }
  99279. });
  99280. $("#luckysheet-rows-change-size").mousedown(function(event2) {
  99281. if (!checkIsAllowEdit()) {
  99282. return;
  99283. }
  99284. postil_default.removeActivePs();
  99285. if ($("#luckysheet-modal-dialog-activeImage").is(":visible") || $("#luckysheet-modal-dialog-cropping").is(":visible")) {
  99286. imageCtrl_default.cancelActiveImgItem();
  99287. }
  99288. $("#luckysheet-input-box").hide();
  99289. $("#luckysheet-rows-change-size").css({"opacity": 1});
  99290. let mouse = mouseposition(event2.pageX, event2.pageY);
  99291. let y = mouse[1] + $("#luckysheet-rows-h").scrollTop();
  99292. let scrollLeft = $("#luckysheet-cell-main").scrollLeft();
  99293. let winW = $("#luckysheet-cell-main").width();
  99294. let row_location = rowLocation(y), row = row_location[1], row_pre = row_location[0], row_index = row_location[2];
  99295. store_default.luckysheet_rows_change_size = true;
  99296. store_default.luckysheet_scroll_status = true;
  99297. $("#luckysheet-change-size-line").css({
  99298. "height": "1px",
  99299. "border-width": "0 0px 1px 0",
  99300. "top": row - 3,
  99301. "left": 0,
  99302. "width": scrollLeft + winW,
  99303. "display": "block",
  99304. "cursor": "ns-resize"
  99305. });
  99306. $("#luckysheet-sheettable, #luckysheet-rows-h, #luckysheet-rows-h canvas").css("cursor", "ns-resize");
  99307. store_default.luckysheet_rows_change_size_start = [row_pre, row_index];
  99308. $("#luckysheet-rightclick-menu").hide();
  99309. $("#luckysheet-rows-h-hover").hide();
  99310. $("#luckysheet-cols-menu-btn").hide();
  99311. event2.stopPropagation();
  99312. });
  99313. $("#luckysheet-cols-change-size").mousedown(function(event2) {
  99314. if (!checkIsAllowEdit()) {
  99315. return;
  99316. }
  99317. postil_default.removeActivePs();
  99318. if ($("#luckysheet-modal-dialog-activeImage").is(":visible") || $("#luckysheet-modal-dialog-cropping").is(":visible")) {
  99319. imageCtrl_default.cancelActiveImgItem();
  99320. }
  99321. $("#luckysheet-input-box").hide();
  99322. $("#luckysheet-cols-change-size").css({"opacity": 1});
  99323. let mouse = mouseposition(event2.pageX, event2.pageY);
  99324. let scrollLeft = $("#luckysheet-cols-h-c").scrollLeft();
  99325. let scrollTop = $("#luckysheet-cell-main").scrollTop();
  99326. let winH = $("#luckysheet-cell-main").height();
  99327. let x = mouse[0] + scrollLeft;
  99328. let row_index = store_default.visibledatarow.length - 1, row = store_default.visibledatarow[row_index], row_pre = 0;
  99329. let col_location = colLocation(x), col = col_location[1], col_pre = col_location[0], col_index = col_location[2];
  99330. store_default.luckysheet_cols_change_size = true;
  99331. store_default.luckysheet_scroll_status = true;
  99332. $("#luckysheet-change-size-line").css({
  99333. "height": winH + scrollTop,
  99334. "border-width": "0 1px 0 0",
  99335. "top": 0,
  99336. "left": col - 3,
  99337. "width": "1px",
  99338. "display": "block",
  99339. "cursor": "ew-resize"
  99340. });
  99341. $("#luckysheet-sheettable, #luckysheet-cols-h-c, .luckysheet-cols-h-cells, .luckysheet-cols-h-cells canvas").css("cursor", "ew-resize");
  99342. store_default.luckysheet_cols_change_size_start = [col_pre, col_index];
  99343. $("#luckysheet-rightclick-menu").hide();
  99344. $("#luckysheet-cols-h-hover").hide();
  99345. $("#luckysheet-cols-menu-btn").hide();
  99346. store_default.luckysheet_cols_dbclick_times = 0;
  99347. event2.stopPropagation();
  99348. }).dblclick(function() {
  99349. luckysheetcolsdbclick();
  99350. });
  99351. $("#luckysheet-cols-menu-btn").click(function(event2) {
  99352. if (!checkIsAllowEdit()) {
  99353. tooltip_default.info("", locale_default().pivotTable.errorNotAllowEdit);
  99354. return;
  99355. }
  99356. let $menu = $("#luckysheet-rightclick-menu");
  99357. let offset = $(this).offset();
  99358. $("#luckysheet-cols-rows-shift").show();
  99359. store_default.luckysheetRightHeadClickIs = "column";
  99360. $("#luckysheet-rightclick-menu .luckysheet-cols-rows-shift-word").text(locale_default().rightclick.column);
  99361. $("#luckysheet-rightclick-menu .luckysheet-cols-rows-shift-left").text(locale_default().rightclick.left);
  99362. $("#luckysheet-rightclick-menu .luckysheet-cols-rows-shift-right").text(locale_default().rightclick.right);
  99363. $("#luckysheet-cols-rows-add").show();
  99364. $("#luckysheet-cols-rows-data").hide();
  99365. $("#luckysheet-cols-rows-shift").show();
  99366. $("#luckysheet-cols-rows-handleincell").hide();
  99367. $$("#luckysheet-cols-rows-add .luckysheet-menuseparator").style.display = "block";
  99368. $$("#luckysheet-cols-rows-shift .luckysheet-menuseparator").style.display = "block";
  99369. const cellRightClickConfig = luckysheetConfigsetting_default.cellRightClickConfig;
  99370. if (!cellRightClickConfig.copy && !cellRightClickConfig.copyAs && !cellRightClickConfig.paste && !cellRightClickConfig.insertColumn && !cellRightClickConfig.deleteColumn && !cellRightClickConfig.hideColumn && !cellRightClickConfig.columnWidth && !cellRightClickConfig.sort) {
  99371. return;
  99372. }
  99373. $$("#luckysheet-top-left-add-selected").style.display = cellRightClickConfig.insertColumn ? "block" : "none";
  99374. $$("#luckysheet-bottom-right-add-selected").style.display = cellRightClickConfig.insertColumn ? "block" : "none";
  99375. $$("#luckysheet-del-selected").style.display = cellRightClickConfig.deleteColumn ? "block" : "none";
  99376. $$("#luckysheet-hide-selected").style.display = cellRightClickConfig.hideColumn ? "block" : "none";
  99377. $$("#luckysheet-show-selected").style.display = cellRightClickConfig.hideColumn ? "block" : "none";
  99378. $$("#luckysheet-column-row-width-selected").style.display = cellRightClickConfig.columnWidth ? "block" : "none";
  99379. if (!cellRightClickConfig.copy && !cellRightClickConfig.copyAs && !cellRightClickConfig.paste) {
  99380. $$("#luckysheet-cols-rows-add .luckysheet-menuseparator").style.display = "none";
  99381. if (!cellRightClickConfig.insertColumn && !cellRightClickConfig.deleteColumn && !cellRightClickConfig.hideColumn && !cellRightClickConfig.columnWidth) {
  99382. $$("#luckysheet-cols-rows-shift .luckysheet-menuseparator").style.display = "none";
  99383. }
  99384. }
  99385. if (!cellRightClickConfig.insertColumn && !cellRightClickConfig.deleteColumn && !cellRightClickConfig.hideColumn && !cellRightClickConfig.columnWidth) {
  99386. $$("#luckysheet-cols-rows-add .luckysheet-menuseparator").style.display = "none";
  99387. }
  99388. if (!cellRightClickConfig.sort) {
  99389. $$("#luckysheet-cols-rows-shift .luckysheet-menuseparator").style.display = "none";
  99390. }
  99391. showrightclickmenu($menu, offset.left, offset.top + 18);
  99392. store_default.luckysheet_cols_menu_status = true;
  99393. });
  99394. $("#luckysheet-top-left-add-selected").click(function(event2) {
  99395. if (event2.target.nodeName === "INPUT") {
  99396. return;
  99397. }
  99398. $("#luckysheet-rightclick-menu").hide();
  99399. luckysheetContainerFocus();
  99400. const _locale = locale_default();
  99401. const locale_drag2 = _locale.drag;
  99402. const locale_info = _locale.info;
  99403. if (store_default.luckysheet_select_save.length > 1) {
  99404. if (isEditMode()) {
  99405. alert(locale_drag2.noMulti);
  99406. } else {
  99407. tooltip_default.info(locale_drag2.noMulti, "");
  99408. }
  99409. return;
  99410. }
  99411. let $t = $(this), value = $t.find("input").val();
  99412. if (!isRealNum(value)) {
  99413. if (isEditMode()) {
  99414. alert(locale_info.tipInputNumber);
  99415. } else {
  99416. tooltip_default.info(locale_info.tipInputNumber, "");
  99417. }
  99418. return;
  99419. }
  99420. value = parseInt(value);
  99421. if (value < 1 || value > 100) {
  99422. if (isEditMode()) {
  99423. alert(locale_info.tipInputNumberLimit);
  99424. } else {
  99425. tooltip_default.info(locale_info.tipInputNumberLimit, "");
  99426. }
  99427. return;
  99428. }
  99429. let st_index = store_default.luckysheet_select_save[0][store_default.luckysheetRightHeadClickIs][0];
  99430. if (!method_default.createHookFunction("rowInsertBefore", st_index, value, "lefttop")) {
  99431. return;
  99432. }
  99433. luckysheetextendtable(store_default.luckysheetRightHeadClickIs, st_index, value, "lefttop");
  99434. });
  99435. $("#luckysheetColsRowsHandleAdd_row").click(function(event2) {
  99436. $("#luckysheet-rightclick-menu").hide();
  99437. luckysheetContainerFocus();
  99438. if (store_default.allowEdit === false) {
  99439. return;
  99440. }
  99441. let st_index = store_default.luckysheet_select_save[0].row[0];
  99442. if (!method_default.createHookFunction("rowInsertBefore", st_index, 1, "lefttop")) {
  99443. return;
  99444. }
  99445. luckysheetextendtable("row", st_index, 1, "lefttop");
  99446. });
  99447. $("#luckysheetColsRowsHandleAdd_column").click(function(event2) {
  99448. $("#luckysheet-rightclick-menu").hide();
  99449. luckysheetContainerFocus();
  99450. if (store_default.allowEdit === false) {
  99451. return;
  99452. }
  99453. let st_index = store_default.luckysheet_select_save[0].column[0];
  99454. luckysheetextendtable("column", st_index, 1, "lefttop");
  99455. });
  99456. $(".luckysheetColsRowsHandleAdd_custom").click(function(clickEvent) {
  99457. $("#luckysheet-rightclick-menu").hide();
  99458. const cellRightClickConfig = luckysheetConfigsetting_default.cellRightClickConfig;
  99459. const rowIndex = store_default.luckysheet_select_save[0].row[0];
  99460. const columnIndex = store_default.luckysheet_select_save[0].column[0];
  99461. if (cellRightClickConfig.customs[Number(clickEvent.currentTarget.dataset.index)]) {
  99462. try {
  99463. cellRightClickConfig.customs[Number(clickEvent.currentTarget.dataset.index)].onClick(clickEvent, event, {rowIndex, columnIndex});
  99464. } catch (e) {
  99465. console.error("custom click error", e);
  99466. }
  99467. }
  99468. });
  99469. $("#luckysheet-bottom-right-add-selected").click(function(event2) {
  99470. if (event2.target.nodeName === "INPUT") {
  99471. return;
  99472. }
  99473. $("#luckysheet-rightclick-menu").hide();
  99474. luckysheetContainerFocus();
  99475. const _locale = locale_default();
  99476. const locale_drag2 = _locale.drag;
  99477. const locale_info = _locale.info;
  99478. if (store_default.luckysheet_select_save.length > 1) {
  99479. if (isEditMode()) {
  99480. alert(locale_drag2.noMulti);
  99481. } else {
  99482. tooltip_default.info(locale_drag2.noMulti, "");
  99483. }
  99484. return;
  99485. }
  99486. let $t = $(this), value = $t.find("input").val();
  99487. if (!isRealNum(value)) {
  99488. if (isEditMode()) {
  99489. alert(locale_info.tipInputNumber);
  99490. } else {
  99491. tooltip_default.info(locale_info.tipInputNumber, "");
  99492. }
  99493. return;
  99494. }
  99495. value = parseInt(value);
  99496. if (value < 1 || value > 100) {
  99497. if (isEditMode()) {
  99498. alert(locale_info.tipInputNumberLimit);
  99499. } else {
  99500. tooltip_default.info(locale_info.tipInputNumberLimit, "");
  99501. }
  99502. return;
  99503. }
  99504. let st_index = store_default.luckysheet_select_save[0][store_default.luckysheetRightHeadClickIs][1];
  99505. if (!method_default.createHookFunction("rowInsertBefore", st_index, value, "rightbottom")) {
  99506. return;
  99507. }
  99508. luckysheetextendtable(store_default.luckysheetRightHeadClickIs, st_index, value, "rightbottom");
  99509. });
  99510. $("#luckysheet-del-selected, #luckysheet-del-selected_t").click(function(event2) {
  99511. $("#luckysheet-rightclick-menu").hide();
  99512. luckysheetContainerFocus();
  99513. const locale_drag2 = locale_default().drag;
  99514. if (store_default.luckysheet_select_save.length > 1) {
  99515. if (store_default.luckysheetRightHeadClickIs == "row") {
  99516. if (isEditMode()) {
  99517. alert(locale_drag2.noMulti);
  99518. } else {
  99519. tooltip_default.info(locale_drag2.noMulti, "");
  99520. }
  99521. } else if (store_default.luckysheetRightHeadClickIs == "column") {
  99522. if (isEditMode()) {
  99523. alert(locale_drag2.noMulti);
  99524. } else {
  99525. tooltip_default.info(locale_drag2.noMulti, "");
  99526. }
  99527. }
  99528. return;
  99529. }
  99530. let st_index = store_default.luckysheet_select_save[0][store_default.luckysheetRightHeadClickIs][0], ed_index = store_default.luckysheet_select_save[0][store_default.luckysheetRightHeadClickIs][1];
  99531. if (!method_default.createHookFunction("rowDeleteBefore", st_index, ed_index)) {
  99532. return;
  99533. }
  99534. luckysheetdeletetable(store_default.luckysheetRightHeadClickIs, st_index, ed_index);
  99535. });
  99536. $("#luckysheet-delRows").click(function(event2) {
  99537. $("#luckysheet-rightclick-menu").hide();
  99538. luckysheetContainerFocus();
  99539. const locale_drag2 = locale_default().drag;
  99540. if (store_default.luckysheet_select_save.length > 1) {
  99541. if (store_default.luckysheetRightHeadClickIs == "row") {
  99542. if (isEditMode()) {
  99543. alert(locale_drag2.noMulti);
  99544. } else {
  99545. tooltip_default.info(locale_drag2.noMulti, "");
  99546. }
  99547. } else if (store_default.luckysheetRightHeadClickIs == "column") {
  99548. if (isEditMode()) {
  99549. alert(locale_drag2.noMulti);
  99550. } else {
  99551. tooltip_default.info(locale_drag2.noMulti, "");
  99552. }
  99553. }
  99554. return;
  99555. }
  99556. let st_index = store_default.luckysheet_select_save[0].row[0], ed_index = store_default.luckysheet_select_save[0].row[1];
  99557. if (!method_default.createHookFunction("rowDeleteBefore", st_index, ed_index)) {
  99558. return;
  99559. }
  99560. luckysheetdeletetable("row", st_index, ed_index);
  99561. });
  99562. $("#luckysheet-delCols").click(function(event2) {
  99563. $("#luckysheet-rightclick-menu").hide();
  99564. luckysheetContainerFocus();
  99565. const locale_drag2 = locale_default().drag;
  99566. if (store_default.luckysheet_select_save.length > 1) {
  99567. if (store_default.luckysheetRightHeadClickIs == "row") {
  99568. if (isEditMode()) {
  99569. alert(locale_drag2.noMulti);
  99570. } else {
  99571. tooltip_default.info(locale_drag2.noMulti, "");
  99572. }
  99573. } else if (store_default.luckysheetRightHeadClickIs == "column") {
  99574. if (isEditMode()) {
  99575. alert(locale_drag2.noMulti);
  99576. } else {
  99577. tooltip_default.info(locale_drag2.noMulti, "");
  99578. }
  99579. }
  99580. return;
  99581. }
  99582. let st_index = store_default.luckysheet_select_save[0].column[0], ed_index = store_default.luckysheet_select_save[0].column[1];
  99583. luckysheetdeletetable("column", st_index, ed_index);
  99584. });
  99585. $("#luckysheet-hide-selected").click(function(event2) {
  99586. $("#luckysheet-rightclick-menu").hide();
  99587. luckysheetContainerFocus();
  99588. const locale_drag2 = locale_default().drag;
  99589. if (store_default.luckysheet_select_save.length > 1) {
  99590. if (store_default.luckysheetRightHeadClickIs == "row") {
  99591. if (isEditMode()) {
  99592. alert(locale_drag2.noMulti);
  99593. } else {
  99594. tooltip_default.info(locale_drag2.noMulti, "");
  99595. }
  99596. } else if (store_default.luckysheetRightHeadClickIs == "column") {
  99597. if (isEditMode()) {
  99598. alert(locale_drag2.noMulti);
  99599. } else {
  99600. tooltip_default.info(locale_drag2.noMulti, "");
  99601. }
  99602. }
  99603. return;
  99604. }
  99605. if (store_default.luckysheetRightHeadClickIs == "row") {
  99606. if (!checkProtectionAuthorityNormal(store_default.currentSheetIndex, "formatRows")) {
  99607. return;
  99608. }
  99609. let cfg = $.extend(true, {}, store_default.config);
  99610. if (cfg["rowhidden"] == null) {
  99611. cfg["rowhidden"] = {};
  99612. }
  99613. for (let s = 0; s < store_default.luckysheet_select_save.length; s++) {
  99614. let r1 = store_default.luckysheet_select_save[s].row[0], r2 = store_default.luckysheet_select_save[s].row[1];
  99615. for (let r3 = r1; r3 <= r2; r3++) {
  99616. cfg["rowhidden"][r3] = 0;
  99617. }
  99618. }
  99619. if (store_default.clearjfundo) {
  99620. let redo2 = {};
  99621. redo2["type"] = "showHidRows";
  99622. redo2["sheetIndex"] = store_default.currentSheetIndex;
  99623. redo2["config"] = $.extend(true, {}, store_default.config);
  99624. redo2["curconfig"] = cfg;
  99625. store_default.jfundo.length = 0;
  99626. store_default.jfredo.push(redo2);
  99627. }
  99628. store_default.config = cfg;
  99629. store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)].config = store_default.config;
  99630. server_default.saveParam("cg", store_default.currentSheetIndex, cfg["rowhidden"], {"k": "rowhidden"});
  99631. jfrefreshgrid_rhcw(store_default.flowdata.length, store_default.flowdata[0].length);
  99632. } else if (store_default.luckysheetRightHeadClickIs == "column") {
  99633. if (!checkProtectionAuthorityNormal(store_default.currentSheetIndex, "formatColumns")) {
  99634. return;
  99635. }
  99636. let cfg = $.extend(true, {}, store_default.config);
  99637. if (cfg["colhidden"] == null) {
  99638. cfg["colhidden"] = {};
  99639. }
  99640. for (let s = 0; s < store_default.luckysheet_select_save.length; s++) {
  99641. let c1 = store_default.luckysheet_select_save[s].column[0], c2 = store_default.luckysheet_select_save[s].column[1];
  99642. for (let c3 = c1; c3 <= c2; c3++) {
  99643. cfg["colhidden"][c3] = 0;
  99644. }
  99645. }
  99646. if (store_default.clearjfundo) {
  99647. let redo2 = {};
  99648. redo2["type"] = "showHidCols";
  99649. redo2["sheetIndex"] = store_default.currentSheetIndex;
  99650. redo2["config"] = $.extend(true, {}, store_default.config);
  99651. redo2["curconfig"] = cfg;
  99652. store_default.jfundo.length = 0;
  99653. store_default.jfredo.push(redo2);
  99654. }
  99655. store_default.config = cfg;
  99656. store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)].config = store_default.config;
  99657. server_default.saveParam("cg", store_default.currentSheetIndex, cfg["colhidden"], {"k": "colhidden"});
  99658. jfrefreshgrid_rhcw(store_default.flowdata.length, store_default.flowdata[0].length);
  99659. }
  99660. });
  99661. $("#luckysheet-show-selected").click(function(event2) {
  99662. $("#luckysheet-rightclick-menu").hide();
  99663. luckysheetContainerFocus();
  99664. const locale_drag2 = locale_default().drag;
  99665. if (store_default.luckysheet_select_save.length > 1) {
  99666. if (store_default.luckysheetRightHeadClickIs == "row") {
  99667. if (isEditMode()) {
  99668. alert(locale_drag2.noMulti);
  99669. } else {
  99670. tooltip_default.info(locale_drag2.noMulti, "");
  99671. }
  99672. } else if (store_default.luckysheetRightHeadClickIs == "column") {
  99673. if (isEditMode()) {
  99674. alert(locale_drag2.noMulti);
  99675. } else {
  99676. tooltip_default.info(locale_drag2.noMulti, "");
  99677. }
  99678. }
  99679. return;
  99680. }
  99681. if (store_default.luckysheetRightHeadClickIs == "row") {
  99682. if (!checkProtectionAuthorityNormal(store_default.currentSheetIndex, "formatRows")) {
  99683. return;
  99684. }
  99685. let cfg = $.extend(true, {}, store_default.config);
  99686. if (cfg["rowhidden"] == null) {
  99687. return;
  99688. }
  99689. for (let s = 0; s < store_default.luckysheet_select_save.length; s++) {
  99690. let r1 = store_default.luckysheet_select_save[s].row[0], r2 = store_default.luckysheet_select_save[s].row[1];
  99691. for (let r3 = r1; r3 <= r2; r3++) {
  99692. delete cfg["rowhidden"][r3];
  99693. }
  99694. }
  99695. if (store_default.clearjfundo) {
  99696. let redo2 = {};
  99697. redo2["type"] = "showHidRows";
  99698. redo2["sheetIndex"] = store_default.currentSheetIndex;
  99699. redo2["config"] = $.extend(true, {}, store_default.config);
  99700. redo2["curconfig"] = cfg;
  99701. store_default.jfundo.length = 0;
  99702. store_default.jfredo.push(redo2);
  99703. }
  99704. store_default.config = cfg;
  99705. store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)].config = store_default.config;
  99706. server_default.saveParam("cg", store_default.currentSheetIndex, cfg["rowhidden"], {"k": "rowhidden"});
  99707. jfrefreshgrid_rhcw(store_default.flowdata.length, store_default.flowdata[0].length);
  99708. } else if (store_default.luckysheetRightHeadClickIs == "column") {
  99709. if (!checkProtectionAuthorityNormal(store_default.currentSheetIndex, "formatColumns")) {
  99710. return;
  99711. }
  99712. let cfg = $.extend(true, {}, store_default.config);
  99713. if (cfg["colhidden"] == null) {
  99714. return;
  99715. }
  99716. for (let s = 0; s < store_default.luckysheet_select_save.length; s++) {
  99717. let c1 = store_default.luckysheet_select_save[s].column[0], c2 = store_default.luckysheet_select_save[s].column[1];
  99718. for (let c3 = c1; c3 <= c2; c3++) {
  99719. delete cfg["colhidden"][c3];
  99720. }
  99721. }
  99722. if (store_default.clearjfundo) {
  99723. let redo2 = {};
  99724. redo2["type"] = "showHidCols";
  99725. redo2["sheetIndex"] = store_default.currentSheetIndex;
  99726. redo2["config"] = $.extend(true, {}, store_default.config);
  99727. redo2["curconfig"] = cfg;
  99728. store_default.jfundo.length = 0;
  99729. store_default.jfredo.push(redo2);
  99730. }
  99731. store_default.config = cfg;
  99732. store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)].config = store_default.config;
  99733. server_default.saveParam("cg", store_default.currentSheetIndex, cfg["colhidden"], {"k": "colhidden"});
  99734. jfrefreshgrid_rhcw(store_default.flowdata.length, store_default.flowdata[0].length);
  99735. }
  99736. });
  99737. $("#luckysheet-delCellsMoveLeft").click(function(event2) {
  99738. $("body .luckysheet-cols-menu").hide();
  99739. luckysheetContainerFocus();
  99740. const locale_drag2 = locale_default().drag;
  99741. if (store_default.luckysheet_select_save.length > 1) {
  99742. if (isEditMode()) {
  99743. alert(locale_drag2.noMulti);
  99744. } else {
  99745. tooltip_default.info(locale_drag2.noMulti, "");
  99746. }
  99747. return;
  99748. }
  99749. let str = store_default.luckysheet_select_save[0].row[0], edr = store_default.luckysheet_select_save[0].row[1], stc = store_default.luckysheet_select_save[0].column[0], edc = store_default.luckysheet_select_save[0].column[1];
  99750. luckysheetDeleteCell("moveLeft", str, edr, stc, edc);
  99751. });
  99752. $("#luckysheet-delCellsMoveUp").click(function(event2) {
  99753. $("body .luckysheet-cols-menu").hide();
  99754. luckysheetContainerFocus();
  99755. const locale_drag2 = locale_default().drag;
  99756. if (store_default.luckysheet_select_save.length > 1) {
  99757. if (isEditMode()) {
  99758. alert(locale_drag2.noMulti);
  99759. } else {
  99760. tooltip_default.info(locale_drag2.noMulti, "");
  99761. }
  99762. return;
  99763. }
  99764. let str = store_default.luckysheet_select_save[0].row[0], edr = store_default.luckysheet_select_save[0].row[1], stc = store_default.luckysheet_select_save[0].column[0], edc = store_default.luckysheet_select_save[0].column[1];
  99765. luckysheetDeleteCell("moveUp", str, edr, stc, edc);
  99766. });
  99767. $("#luckysheet-delete-text").click(function() {
  99768. if (!checkProtectionLockedRangeList(store_default.luckysheet_select_save, store_default.currentSheetIndex)) {
  99769. return;
  99770. }
  99771. $("#luckysheet-rightclick-menu").hide();
  99772. luckysheetContainerFocus();
  99773. if (store_default.allowEdit === false) {
  99774. return;
  99775. }
  99776. if (store_default.luckysheet_select_save.length > 0) {
  99777. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  99778. let has_PartMC = false;
  99779. for (let s = 0; s < store_default.luckysheet_select_save.length; s++) {
  99780. let r1 = store_default.luckysheet_select_save[s].row[0], r2 = store_default.luckysheet_select_save[s].row[1];
  99781. let c1 = store_default.luckysheet_select_save[s].column[0], c2 = store_default.luckysheet_select_save[s].column[1];
  99782. if (hasPartMC(store_default.config, r1, r2, c1, c2)) {
  99783. has_PartMC = true;
  99784. break;
  99785. }
  99786. }
  99787. if (has_PartMC) {
  99788. const locale_drag2 = locale_default().drag;
  99789. if (isEditMode()) {
  99790. alert(locale_drag2.noPartMerge);
  99791. } else {
  99792. tooltip_default.info(locale_drag2.noPartMerge, "");
  99793. }
  99794. return;
  99795. }
  99796. const file = store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)];
  99797. const hyperlink = file.hyperlink && $.extend(true, {}, file.hyperlink);
  99798. let hyperlinkUpdated;
  99799. for (let s = 0; s < store_default.luckysheet_select_save.length; s++) {
  99800. let r1 = store_default.luckysheet_select_save[s].row[0], r2 = store_default.luckysheet_select_save[s].row[1];
  99801. let c1 = store_default.luckysheet_select_save[s].column[0], c2 = store_default.luckysheet_select_save[s].column[1];
  99802. for (let r3 = r1; r3 <= r2; r3++) {
  99803. for (let c3 = c1; c3 <= c2; c3++) {
  99804. if (pivotTable_default.isPivotRange(r3, c3)) {
  99805. continue;
  99806. }
  99807. if (getObjType(d[r3][c3]) == "object") {
  99808. delete d[r3][c3]["m"];
  99809. delete d[r3][c3]["v"];
  99810. if (d[r3][c3]["f"] != null) {
  99811. delete d[r3][c3]["f"];
  99812. formula_default.delFunctionGroup(r3, c3, store_default.currentSheetIndex);
  99813. delete d[r3][c3]["spl"];
  99814. }
  99815. if (d[r3][c3]["ct"] != null && d[r3][c3]["ct"].t == "inlineStr") {
  99816. delete d[r3][c3]["ct"];
  99817. }
  99818. } else {
  99819. d[r3][c3] = null;
  99820. }
  99821. if (hyperlink == null ? void 0 : hyperlink[`${r3}_${c3}`]) {
  99822. delete hyperlink[`${r3}_${c3}`];
  99823. hyperlinkUpdated = true;
  99824. }
  99825. }
  99826. }
  99827. }
  99828. jfrefreshgrid(d, store_default.luckysheet_select_save, hyperlinkUpdated && {hyperlink});
  99829. $("#luckysheet-rich-text-editor").html("");
  99830. }
  99831. });
  99832. $("#luckysheet-column-row-width-selected").click(function(event2) {
  99833. if (event2.target.nodeName === "INPUT") {
  99834. return;
  99835. }
  99836. $("#luckysheet-rightclick-menu").hide();
  99837. luckysheetContainerFocus();
  99838. let size = parseInt($(this).closest(".luckysheet-cols-menuitem").find("input[type='number']").val().trim());
  99839. const locale_info = locale_default().info;
  99840. if (isNaN(size)) {
  99841. tooltip_default.info("\u53EA\u5141\u8BB8\u4F7F\u7528\u6570\u5B57\u6765\u8BBE\u7F6E\u884C\u5217\u7684\u5BBD\u9AD8!", "");
  99842. return;
  99843. }
  99844. let cfg = $.extend(true, {}, store_default.config);
  99845. let type;
  99846. let images = null;
  99847. if (store_default.luckysheetRightHeadClickIs == "row") {
  99848. if (!checkProtectionAuthorityNormal(store_default.currentSheetIndex, "formatRows")) {
  99849. return;
  99850. }
  99851. if (size < 0 || size > 545) {
  99852. if (isEditMode()) {
  99853. alert(locale_info.tipRowHeightLimit);
  99854. } else {
  99855. tooltip_default.info(locale_info.tipRowHeightLimit, "");
  99856. }
  99857. return;
  99858. }
  99859. type = "resizeR";
  99860. if (cfg["rowlen"] == null) {
  99861. cfg["rowlen"] = {};
  99862. }
  99863. for (let s = 0; s < store_default.luckysheet_select_save.length; s++) {
  99864. let r1 = store_default.luckysheet_select_save[s].row[0];
  99865. let r2 = store_default.luckysheet_select_save[s].row[1];
  99866. for (let r3 = r1; r3 <= r2; r3++) {
  99867. cfg["rowlen"][r3] = size;
  99868. images = imageCtrl_default.moveChangeSize("row", r3, size);
  99869. }
  99870. }
  99871. } else if (store_default.luckysheetRightHeadClickIs == "column") {
  99872. if (!checkProtectionAuthorityNormal(store_default.currentSheetIndex, "formatColumns")) {
  99873. return;
  99874. }
  99875. if (size < 0 || size > 2038) {
  99876. if (isEditMode()) {
  99877. alert(locale_info.tipColumnWidthLimit);
  99878. } else {
  99879. tooltip_default.info(locale_info.tipColumnWidthLimit, "");
  99880. }
  99881. return;
  99882. }
  99883. type = "resizeC";
  99884. if (cfg["columnlen"] == null) {
  99885. cfg["columnlen"] = {};
  99886. }
  99887. for (let s = 0; s < store_default.luckysheet_select_save.length; s++) {
  99888. let c1 = store_default.luckysheet_select_save[s].column[0];
  99889. let c2 = store_default.luckysheet_select_save[s].column[1];
  99890. for (let c3 = c1; c3 <= c2; c3++) {
  99891. cfg["columnlen"][c3] = size;
  99892. images = imageCtrl_default.moveChangeSize("column", c3, size);
  99893. }
  99894. }
  99895. }
  99896. if (store_default.clearjfundo) {
  99897. store_default.jfundo.length = 0;
  99898. store_default.jfredo.push({
  99899. "type": "resize",
  99900. "ctrlType": type,
  99901. "sheetIndex": store_default.currentSheetIndex,
  99902. "config": $.extend(true, {}, store_default.config),
  99903. "curconfig": $.extend(true, {}, cfg),
  99904. "images": $.extend(true, {}, imageCtrl_default.images),
  99905. "curImages": $.extend(true, {}, images)
  99906. });
  99907. }
  99908. store_default.config = cfg;
  99909. store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)].config = store_default.config;
  99910. store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)].images = images;
  99911. server_default.saveParam("all", store_default.currentSheetIndex, images, {"k": "images"});
  99912. imageCtrl_default.images = images;
  99913. imageCtrl_default.allImagesShow();
  99914. if (store_default.luckysheetRightHeadClickIs == "row") {
  99915. server_default.saveParam("cg", store_default.currentSheetIndex, cfg["rowlen"], {"k": "rowlen"});
  99916. jfrefreshgrid_rhcw(store_default.flowdata.length, null);
  99917. } else if (store_default.luckysheetRightHeadClickIs == "column") {
  99918. server_default.saveParam("cg", store_default.currentSheetIndex, cfg["columnlen"], {"k": "columnlen"});
  99919. jfrefreshgrid_rhcw(null, store_default.flowdata[0].length);
  99920. }
  99921. });
  99922. }
  99923. function luckysheetcolsdbclick() {
  99924. store_default.luckysheet_cols_change_size = false;
  99925. $("#luckysheet-change-size-line").hide();
  99926. $("#luckysheet-cols-change-size").css("opacity", 0);
  99927. $("#luckysheet-sheettable, #luckysheet-cols-h-c, .luckysheet-cols-h-cells, .luckysheet-cols-h-cells canvas").css("cursor", "default");
  99928. let mouse = mouseposition(event.pageX, event.pageY);
  99929. let scrollLeft = $("#luckysheet-cols-h-c").scrollLeft();
  99930. let x = mouse[0] + scrollLeft;
  99931. let colIndex = colLocation(x)[2];
  99932. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  99933. let canvas = $("#luckysheetTableContent").get(0).getContext("2d");
  99934. let cfg = $.extend(true, {}, store_default.config);
  99935. if (cfg["columnlen"] == null) {
  99936. cfg["columnlen"] = {};
  99937. }
  99938. let matchColumn = {};
  99939. let scrollTop = $("#luckysheet-cell-main").scrollTop(), drawHeight = store_default.luckysheetTableContentHW[1];
  99940. let dataset_row_st = luckysheet_searcharray(store_default.visibledatarow, scrollTop);
  99941. let dataset_row_ed = luckysheet_searcharray(store_default.visibledatarow, scrollTop + drawHeight);
  99942. dataset_row_ed += dataset_row_ed - dataset_row_st;
  99943. if (dataset_row_ed >= d.length) {
  99944. dataset_row_ed = d.length - 1;
  99945. }
  99946. for (let s = 0; s < store_default.luckysheet_select_save.length; s++) {
  99947. let c1 = store_default.luckysheet_select_save[s].column[0], c2 = store_default.luckysheet_select_save[s].column[1];
  99948. if (colIndex < c1 || colIndex > c2) {
  99949. if (colIndex in matchColumn) {
  99950. continue;
  99951. }
  99952. let currentColLen = store_default.defaultcollen;
  99953. for (let r2 = dataset_row_st; r2 <= dataset_row_ed; r2++) {
  99954. let cell = d[r2][colIndex];
  99955. if (cell == null || isRealNull(cell.v) && !isInlineStringCell(cell)) {
  99956. continue;
  99957. }
  99958. let cellWidth = colLocationByIndex(colIndex)[1] - colLocationByIndex(colIndex)[0] - 2;
  99959. let textInfo = getCellTextInfo(cell, canvas, {
  99960. r: r2,
  99961. c: colIndex,
  99962. cellWidth
  99963. });
  99964. let computeRowlen = 0;
  99965. if (textInfo != null) {
  99966. computeRowlen = textInfo.textWidthAll;
  99967. }
  99968. if (computeRowlen + 6 > currentColLen) {
  99969. currentColLen = computeRowlen + 6;
  99970. }
  99971. }
  99972. if (currentColLen != store_default.defaultcollen) {
  99973. cfg["columnlen"][colIndex] = currentColLen;
  99974. if (cfg["customWidth"]) {
  99975. delete cfg["customWidth"][colIndex];
  99976. }
  99977. }
  99978. matchColumn[colIndex] = 1;
  99979. } else {
  99980. for (let c3 = c1; c3 <= c2; c3++) {
  99981. if (c3 in matchColumn) {
  99982. continue;
  99983. }
  99984. let currentColLen = store_default.defaultcollen;
  99985. for (let r2 = dataset_row_st; r2 <= dataset_row_ed; r2++) {
  99986. let cell = d[r2][c3];
  99987. if (cell == null || isRealNull(cell.v) && !isInlineStringCell(cell)) {
  99988. continue;
  99989. }
  99990. let cellWidth = colLocationByIndex(c3)[1] - colLocationByIndex(c3)[0] - 2;
  99991. let textInfo = getCellTextInfo(cell, canvas, {
  99992. r: r2,
  99993. c: c3,
  99994. cellWidth
  99995. });
  99996. let computeRowlen = 0;
  99997. if (textInfo != null) {
  99998. computeRowlen = textInfo.textWidthAll;
  99999. }
  100000. if (computeRowlen + 6 > currentColLen) {
  100001. currentColLen = computeRowlen + 6;
  100002. }
  100003. }
  100004. if (currentColLen != store_default.defaultcollen) {
  100005. cfg["columnlen"][c3] = currentColLen;
  100006. if (cfg["customWidth"]) {
  100007. delete cfg["customWidth"][c3];
  100008. }
  100009. }
  100010. matchColumn[c3] = 1;
  100011. }
  100012. }
  100013. }
  100014. jfrefreshgridall(store_default.flowdata[0].length, store_default.flowdata.length, store_default.flowdata, cfg, store_default.luckysheet_select_save, "resizeC", "columnlen");
  100015. }
  100016. var init_rowColumnOperation = __esm({
  100017. "src/controllers/rowColumnOperation.js"() {
  100018. init_pivotTable();
  100019. init_postil();
  100020. init_imageCtrl();
  100021. init_menuButton();
  100022. init_server();
  100023. init_method();
  100024. init_select();
  100025. init_util();
  100026. init_get();
  100027. init_location();
  100028. init_validate();
  100029. init_count();
  100030. init_formula();
  100031. init_extend();
  100032. init_refresh();
  100033. init_getdata();
  100034. init_tooltip();
  100035. init_editor();
  100036. init_locale();
  100037. init_getRowlen();
  100038. init_sheetSearch();
  100039. init_inlineString();
  100040. init_protection();
  100041. init_store();
  100042. init_luckysheetConfigsetting();
  100043. }
  100044. });
  100045. // src/controllers/keyboard.js
  100046. function formulaMoveEvent(dir, ctrlKey, shiftKey, event2) {
  100047. if ($("#luckysheet-formula-search-c").is(":visible") && (dir == "up" || dir == "down")) {
  100048. let $obj;
  100049. if (dir == "down") {
  100050. $obj = $("#luckysheet-formula-search-c").find(".luckysheet-formula-search-item-active").next();
  100051. if ($obj.length == 0) {
  100052. $obj = $("#luckysheet-formula-search-c").find(".luckysheet-formula-search-item").first();
  100053. }
  100054. } else if (dir == "up") {
  100055. $obj = $("#luckysheet-formula-search-c").find(".luckysheet-formula-search-item-active").prev();
  100056. if ($obj.length == 0) {
  100057. $obj = $("#luckysheet-formula-search-c").find(".luckysheet-formula-search-item").last();
  100058. }
  100059. }
  100060. $("#luckysheet-formula-search-c").find(".luckysheet-formula-search-item").removeClass("luckysheet-formula-search-item-active");
  100061. $obj.addClass("luckysheet-formula-search-item-active");
  100062. event2.preventDefault();
  100063. } else {
  100064. if ($("#luckysheet-formula-functionrange-select").is(":visible")) {
  100065. if (ctrlKey && shiftKey) {
  100066. luckysheetMoveHighlightRange2(dir, "rangeOfFormula");
  100067. } else if (ctrlKey) {
  100068. luckysheetMoveHighlightCell2(dir, "rangeOfFormula");
  100069. } else if (shiftKey) {
  100070. let dir_n = dir, step = 1;
  100071. if (dir == "up") {
  100072. dir_n = "down";
  100073. step = -1;
  100074. }
  100075. if (dir == "left") {
  100076. dir_n = "right";
  100077. step = -1;
  100078. }
  100079. luckysheetMoveHighlightRange(dir_n, step, "rangeOfFormula");
  100080. } else {
  100081. let dir_n = dir, step = 1;
  100082. if (dir == "up") {
  100083. dir_n = "down";
  100084. step = -1;
  100085. }
  100086. if (dir == "left") {
  100087. dir_n = "right";
  100088. step = -1;
  100089. }
  100090. luckysheetMoveHighlightCell(dir_n, step, "rangeOfFormula");
  100091. }
  100092. event2.preventDefault();
  100093. } else if (formula_default.israngeseleciton()) {
  100094. let anchor = $(window.getSelection().anchorNode);
  100095. if (anchor.parent().next().text() == null || anchor.parent().next().text() == "") {
  100096. let vText = $("#luckysheet-input-box #luckysheet-input-box-index").text();
  100097. let range2 = formula_default.getcellrange(vText);
  100098. if (range2 == null) {
  100099. range2 = formula_default.getcellrange($("#luckysheet-input-box-index").text());
  100100. }
  100101. let r1 = range2["row"][0], r2 = range2["row"][1];
  100102. let c1 = range2["column"][0], c2 = range2["column"][1];
  100103. let row = store_default.visibledatarow[r2], row_pre = r1 - 1 == -1 ? 0 : store_default.visibledatarow[r1 - 1];
  100104. let col = store_default.visibledatacolumn[c2], col_pre = c1 - 1 == -1 ? 0 : store_default.visibledatacolumn[c1 - 1];
  100105. formula_default.func_selectedrange = {
  100106. "left": col_pre,
  100107. "width": col - col_pre - 1,
  100108. "top": row_pre,
  100109. "height": row - row_pre - 1,
  100110. "left_move": col_pre,
  100111. "width_move": col - col_pre - 1,
  100112. "top_move": row_pre,
  100113. "height_move": row - row_pre - 1,
  100114. "row": [r1, r2],
  100115. "column": [c1, c2],
  100116. "row_focus": r1,
  100117. "column_focus": c1
  100118. };
  100119. formula_default.rangeSetValue({"row": [r1, r2], "column": [c1, c2]});
  100120. formula_default.rangestart = true;
  100121. formula_default.rangedrag_column_start = false;
  100122. formula_default.rangedrag_row_start = false;
  100123. if (ctrlKey && shiftKey) {
  100124. luckysheetMoveHighlightRange2(dir, "rangeOfFormula");
  100125. } else if (ctrlKey) {
  100126. luckysheetMoveHighlightCell2(dir, "rangeOfFormula");
  100127. } else if (shiftKey) {
  100128. let dir_n = dir, step = 1;
  100129. if (dir == "up") {
  100130. dir_n = "down";
  100131. step = -1;
  100132. }
  100133. if (dir == "left") {
  100134. dir_n = "right";
  100135. step = -1;
  100136. }
  100137. luckysheetMoveHighlightRange(dir_n, step, "rangeOfFormula");
  100138. } else {
  100139. let dir_n = dir, step = 1;
  100140. if (dir == "up") {
  100141. dir_n = "down";
  100142. step = -1;
  100143. }
  100144. if (dir == "left") {
  100145. dir_n = "right";
  100146. step = -1;
  100147. }
  100148. luckysheetMoveHighlightCell(dir_n, step, "rangeOfFormula");
  100149. }
  100150. event2.preventDefault();
  100151. }
  100152. } else if (!ctrlKey && !shiftKey) {
  100153. let anchor = $(window.getSelection().anchorNode);
  100154. let anchorOffset = window.getSelection().anchorOffset;
  100155. if (dir == "up") {
  100156. if (anchor.parent().is("span") && anchor.parent().next().length == 0 && anchorOffset > 0) {
  100157. formula_default.updatecell(store_default.luckysheetCellUpdate[0], store_default.luckysheetCellUpdate[1]);
  100158. luckysheetMoveHighlightCell("down", -1, "rangeOfSelect");
  100159. event2.preventDefault();
  100160. } else if (anchor.is("#luckysheet-rich-text-editor") && anchor.context.childElementCount == anchorOffset) {
  100161. formula_default.updatecell(store_default.luckysheetCellUpdate[0], store_default.luckysheetCellUpdate[1]);
  100162. luckysheetMoveHighlightCell("down", -1, "rangeOfSelect");
  100163. event2.preventDefault();
  100164. } else if (anchor.parent().is("#luckysheet-rich-text-editor") && anchor.context.length == anchorOffset) {
  100165. formula_default.updatecell(store_default.luckysheetCellUpdate[0], store_default.luckysheetCellUpdate[1]);
  100166. luckysheetMoveHighlightCell("down", -1, "rangeOfSelect");
  100167. event2.preventDefault();
  100168. }
  100169. } else if (dir == "down") {
  100170. if (anchor.parent().is("span") && anchor.parent().next().length == 0 && anchorOffset > 0) {
  100171. formula_default.updatecell(store_default.luckysheetCellUpdate[0], store_default.luckysheetCellUpdate[1]);
  100172. luckysheetMoveHighlightCell("down", 1, "rangeOfSelect");
  100173. event2.preventDefault();
  100174. } else if (anchor.is("#luckysheet-rich-text-editor") && anchor.context.childElementCount == anchorOffset) {
  100175. formula_default.updatecell(store_default.luckysheetCellUpdate[0], store_default.luckysheetCellUpdate[1]);
  100176. luckysheetMoveHighlightCell("down", 1, "rangeOfSelect");
  100177. event2.preventDefault();
  100178. } else if (anchor.parent().is("#luckysheet-rich-text-editor") && anchor.context.length == anchorOffset) {
  100179. formula_default.updatecell(store_default.luckysheetCellUpdate[0], store_default.luckysheetCellUpdate[1]);
  100180. luckysheetMoveHighlightCell("down", 1, "rangeOfSelect");
  100181. event2.preventDefault();
  100182. }
  100183. } else if (dir == "left") {
  100184. if (anchor.parent().is("span") && anchor.parent().prev().length == 0 && anchorOffset == 0) {
  100185. formula_default.updatecell(store_default.luckysheetCellUpdate[0], store_default.luckysheetCellUpdate[1]);
  100186. luckysheetMoveHighlightCell("right", -1, "rangeOfSelect");
  100187. event2.preventDefault();
  100188. } else if (anchor.is("#luckysheet-rich-text-editor") && anchorOffset == 1) {
  100189. formula_default.updatecell(store_default.luckysheetCellUpdate[0], store_default.luckysheetCellUpdate[1]);
  100190. luckysheetMoveHighlightCell("right", -1, "rangeOfSelect");
  100191. event2.preventDefault();
  100192. } else if (anchor.parent().is("#luckysheet-rich-text-editor") && anchorOffset == 0) {
  100193. formula_default.updatecell(store_default.luckysheetCellUpdate[0], store_default.luckysheetCellUpdate[1]);
  100194. luckysheetMoveHighlightCell("right", -1, "rangeOfSelect");
  100195. event2.preventDefault();
  100196. } else {
  100197. formula_default.rangeHightlightselected($("#luckysheet-rich-text-editor"));
  100198. }
  100199. } else if (dir == "right") {
  100200. if (anchor.parent().is("span") && anchor.parent().next().length == 0 && anchorOffset > 0) {
  100201. formula_default.updatecell(store_default.luckysheetCellUpdate[0], store_default.luckysheetCellUpdate[1]);
  100202. luckysheetMoveHighlightCell("right", 1, "rangeOfSelect");
  100203. event2.preventDefault();
  100204. } else if (anchor.is("#luckysheet-rich-text-editor") && anchor.context.childElementCount == anchorOffset) {
  100205. formula_default.updatecell(store_default.luckysheetCellUpdate[0], store_default.luckysheetCellUpdate[1]);
  100206. luckysheetMoveHighlightCell("right", 1, "rangeOfSelect");
  100207. event2.preventDefault();
  100208. } else if (anchor.parent().is("#luckysheet-rich-text-editor") && anchor.context.length == anchorOffset) {
  100209. formula_default.updatecell(store_default.luckysheetCellUpdate[0], store_default.luckysheetCellUpdate[1]);
  100210. luckysheetMoveHighlightCell("right", 1, "rangeOfSelect");
  100211. event2.preventDefault();
  100212. } else {
  100213. formula_default.rangeHightlightselected($("#luckysheet-rich-text-editor"));
  100214. }
  100215. }
  100216. }
  100217. }
  100218. }
  100219. function keyboardInitial() {
  100220. const _locale = locale_default();
  100221. const locale_drag2 = _locale.drag;
  100222. $("#luckysheet-input-box").click(function() {
  100223. formula_default.rangeHightlightselected($("#luckysheet-rich-text-editor"));
  100224. }).add("#" + store_default.container).on("keydown", function(event2) {
  100225. let ctrlKey = event2.ctrlKey;
  100226. let altKey = event2.altKey;
  100227. let shiftKey = event2.shiftKey;
  100228. let kcode = event2.keyCode;
  100229. if ($("#luckysheet-modal-dialog-mask").is(":visible") || $(event2.target).hasClass("luckysheet-mousedown-cancel") || $(event2.target).hasClass("sp-input") || parseInt($("#luckysheet-input-box").css("top")) > 0 && $(event2.target).closest(".luckysheet-input-box").length > 0 && kcode != keycode.ENTER && kcode != keycode.TAB && kcode != keycode.UP && kcode != keycode.DOWN && kcode != keycode.LEFT && kcode != keycode.RIGHT) {
  100230. let anchor = $(window.getSelection().anchorNode);
  100231. if (anchor.parent().is("#luckysheet-helpbox-cell") || anchor.is("#luckysheet-helpbox-cell")) {
  100232. if (kcode == keycode.ENTER) {
  100233. let helpboxValue = $("#luckysheet-helpbox-cell").text();
  100234. if (formula_default.iscelldata(helpboxValue)) {
  100235. let cellrange = formula_default.getcellrange(helpboxValue);
  100236. store_default.luckysheet_select_save = [{"row": cellrange["row"], "column": cellrange["column"], "row_focus": cellrange["row"][0], "column_focus": cellrange["column"][0]}];
  100237. selectHightlightShow();
  100238. $("#luckysheet-helpbox-cell").blur();
  100239. let scrollLeft = $("#luckysheet-cell-main").scrollLeft(), scrollTop = $("#luckysheet-cell-main").scrollTop();
  100240. let winH = $("#luckysheet-cell-main").height(), winW = $("#luckysheet-cell-main").width();
  100241. let row = store_default.visibledatarow[cellrange["row"][1]], row_pre = cellrange["row"][0] - 1 == -1 ? 0 : store_default.visibledatarow[cellrange["row"][0] - 1];
  100242. let col = store_default.visibledatacolumn[cellrange["column"][1]], col_pre = cellrange["column"][0] - 1 == -1 ? 0 : store_default.visibledatacolumn[cellrange["column"][0] - 1];
  100243. if (col - scrollLeft - winW + 20 > 0) {
  100244. $("#luckysheet-scrollbar-x").scrollLeft(col - winW + 20);
  100245. } else if (col_pre - scrollLeft - 20 < 0) {
  100246. $("#luckysheet-scrollbar-x").scrollLeft(col_pre - 20);
  100247. }
  100248. if (row - scrollTop - winH + 20 > 0) {
  100249. $("#luckysheet-scrollbar-y").scrollTop(row - winH + 20);
  100250. } else if (row_pre - scrollTop - 20 < 0) {
  100251. $("#luckysheet-scrollbar-y").scrollTop(row_pre - 20);
  100252. }
  100253. }
  100254. }
  100255. }
  100256. return;
  100257. }
  100258. if ($("#luckysheet-modal-dialog-mask").is(":visible") || $(event2.target).hasClass("luckysheet-mousedown-cancel") || $(event2.target).hasClass("formulaInputFocus")) {
  100259. return;
  100260. }
  100261. let $inputbox = $("#luckysheet-input-box");
  100262. if ((altKey || event2.metaKey) && kcode == keycode.ENTER && parseInt($inputbox.css("top")) > 0) {
  100263. let last = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1];
  100264. let row_index = last["row_focus"], col_index = last["column_focus"];
  100265. enterKeyControll(store_default.flowdata[row_index][col_index]);
  100266. event2.preventDefault();
  100267. } else if (kcode == keycode.ENTER && parseInt($inputbox.css("top")) > 0) {
  100268. if ($("#luckysheet-formula-search-c").is(":visible") && formula_default.searchFunctionCell != null) {
  100269. formula_default.searchFunctionEnter($("#luckysheet-formula-search-c").find(".luckysheet-formula-search-item-active"));
  100270. } else {
  100271. formula_default.updatecell(store_default.luckysheetCellUpdate[0], store_default.luckysheetCellUpdate[1]);
  100272. store_default.luckysheet_select_save = [{
  100273. "row": [store_default.luckysheetCellUpdate[0], store_default.luckysheetCellUpdate[0]],
  100274. "column": [store_default.luckysheetCellUpdate[1], store_default.luckysheetCellUpdate[1]],
  100275. "row_focus": store_default.luckysheetCellUpdate[0],
  100276. "column_focus": store_default.luckysheetCellUpdate[1]
  100277. }];
  100278. luckysheetMoveHighlightCell("down", 1, "rangeOfSelect");
  100279. }
  100280. if ($("#luckysheet-search-formula-parm").is(":visible")) {
  100281. $("#luckysheet-search-formula-parm").hide();
  100282. }
  100283. if ($("#luckysheet-search-formula-parm-select").is(":visible")) {
  100284. $("#luckysheet-search-formula-parm-select").hide();
  100285. }
  100286. event2.preventDefault();
  100287. } else if (kcode == keycode.TAB) {
  100288. if (parseInt($inputbox.css("top")) > 0) {
  100289. return;
  100290. }
  100291. luckysheetMoveHighlightCell("right", 1, "rangeOfSelect");
  100292. event2.preventDefault();
  100293. } else if (kcode == keycode.F2) {
  100294. if (parseInt($inputbox.css("top")) > 0) {
  100295. return;
  100296. }
  100297. let last = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1];
  100298. let row_index = last["row_focus"], col_index = last["column_focus"];
  100299. luckysheetupdateCell(row_index, col_index, store_default.flowdata);
  100300. event2.preventDefault();
  100301. } else if (kcode == keycode.F4 && parseInt($inputbox.css("top")) > 0) {
  100302. formula_default.setfreezonFuc(event2);
  100303. event2.preventDefault();
  100304. } else if (kcode == keycode.ESC && parseInt($inputbox.css("top")) > 0) {
  100305. formula_default.dontupdate();
  100306. luckysheetMoveHighlightCell("down", 0, "rangeOfSelect");
  100307. event2.preventDefault();
  100308. } else if (kcode == keycode.ENTER) {
  100309. if ($(event2.target).hasClass("formulaInputFocus") || $("#luckysheet-conditionformat-dialog").is(":visible")) {
  100310. return;
  100311. } else if (String.fromCharCode(kcode) != null && $("#luckysheet-cell-selected").is(":visible")) {
  100312. let last = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1];
  100313. let row_index = last["row_focus"], col_index = last["column_focus"];
  100314. luckysheetupdateCell(row_index, col_index, store_default.flowdata);
  100315. event2.preventDefault();
  100316. }
  100317. } else {
  100318. if (ctrlKey || event2.metaKey) {
  100319. if (shiftKey) {
  100320. if (!luckysheet_shiftkeydown) {
  100321. store_default.luckysheet_shiftpositon = $.extend(true, {}, store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1]);
  100322. store_default.luckysheet_shiftkeydown = true;
  100323. }
  100324. if (kcode == keycode.UP) {
  100325. if (parseInt($inputbox.css("top")) > 0 || $("#luckysheet-singleRange-dialog").is(":visible") || $("#luckysheet-multiRange-dialog").is(":visible")) {
  100326. return;
  100327. }
  100328. luckysheetMoveHighlightRange2("up", "rangeOfSelect");
  100329. } else if (kcode == keycode.DOWN) {
  100330. if (parseInt($inputbox.css("top")) > 0 || $("#luckysheet-singleRange-dialog").is(":visible") || $("#luckysheet-multiRange-dialog").is(":visible")) {
  100331. return;
  100332. }
  100333. luckysheetMoveHighlightRange2("down", "rangeOfSelect");
  100334. } else if (kcode == keycode.LEFT) {
  100335. if (parseInt($inputbox.css("top")) > 0 || $("#luckysheet-singleRange-dialog").is(":visible") || $("#luckysheet-multiRange-dialog").is(":visible")) {
  100336. return;
  100337. }
  100338. luckysheetMoveHighlightRange2("left", "rangeOfSelect");
  100339. } else if (kcode == keycode.RIGHT) {
  100340. if (parseInt($inputbox.css("top")) > 0 || $("#luckysheet-singleRange-dialog").is(":visible") || $("#luckysheet-multiRange-dialog").is(":visible")) {
  100341. return;
  100342. }
  100343. luckysheetMoveHighlightRange2("right", "rangeOfSelect");
  100344. } else if (kcode == 186 || kcode == 222) {
  100345. let last = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1];
  100346. let row_index = last["row_focus"], col_index = last["column_focus"];
  100347. luckysheetupdateCell(row_index, col_index, store_default.flowdata, true);
  100348. let value = getNowDateTime(2);
  100349. $("#luckysheet-rich-text-editor").html(value);
  100350. luckysheetRangeLast($("#luckysheet-rich-text-editor")[0]);
  100351. formula_default.functionInputHanddler($("#luckysheet-functionbox-cell"), $("#luckysheet-rich-text-editor"), kcode);
  100352. }
  100353. } else if (kcode == 66) {
  100354. $("#luckysheet-icon-bold").click();
  100355. } else if (kcode == 67) {
  100356. if (imageCtrl_default.currentImgId != null) {
  100357. imageCtrl_default.copyImgItem(event2);
  100358. return;
  100359. }
  100360. if (menuButton_default.luckysheetPaintModelOn) {
  100361. menuButton_default.cancelPaintModel();
  100362. }
  100363. if (store_default.luckysheet_select_save.length == 0) {
  100364. return;
  100365. }
  100366. if (store_default.config["merge"] != null) {
  100367. let has_PartMC = false;
  100368. for (let s = 0; s < store_default.luckysheet_select_save.length; s++) {
  100369. let r1 = store_default.luckysheet_select_save[s].row[0], r2 = store_default.luckysheet_select_save[s].row[1];
  100370. let c1 = store_default.luckysheet_select_save[s].column[0], c2 = store_default.luckysheet_select_save[s].column[1];
  100371. has_PartMC = hasPartMC(store_default.config, r1, r2, c1, c2);
  100372. if (has_PartMC) {
  100373. break;
  100374. }
  100375. }
  100376. if (has_PartMC) {
  100377. if (isEditMode()) {
  100378. alert(locale_drag2.noMerge);
  100379. } else {
  100380. tooltip_default.info(locale_drag2.noMerge, "");
  100381. }
  100382. return;
  100383. }
  100384. }
  100385. let cdformat = store_default.luckysheetfile[getSheetIndex(store_default.currentSheetIndex)].luckysheet_conditionformat_save;
  100386. if (store_default.luckysheet_select_save.length > 1 && cdformat != null && cdformat.length > 0) {
  100387. let hasCF = false;
  100388. let cf_compute = conditionformat_default.getComputeMap();
  100389. label:
  100390. for (let s = 0; s < store_default.luckysheet_select_save.length; s++) {
  100391. if (hasCF) {
  100392. break;
  100393. }
  100394. let r1 = store_default.luckysheet_select_save[s].row[0], r2 = store_default.luckysheet_select_save[s].row[1];
  100395. let c1 = store_default.luckysheet_select_save[s].column[0], c2 = store_default.luckysheet_select_save[s].column[1];
  100396. for (let r3 = r1; r3 <= r2; r3++) {
  100397. for (let c3 = c1; c3 <= c2; c3++) {
  100398. if (conditionformat_default.checksCF(r3, c3, cf_compute) != null) {
  100399. hasCF = true;
  100400. continue label;
  100401. }
  100402. }
  100403. }
  100404. }
  100405. if (hasCF) {
  100406. if (isEditMode()) {
  100407. alert(locale_drag2.noMulti);
  100408. } else {
  100409. tooltip_default.info(locale_drag2.noMulti, "");
  100410. }
  100411. return;
  100412. }
  100413. }
  100414. if (store_default.luckysheet_select_save.length > 1) {
  100415. let isSameRow = true, str_r = store_default.luckysheet_select_save[0].row[0], end_r = store_default.luckysheet_select_save[0].row[1];
  100416. let isSameCol = true, str_c = store_default.luckysheet_select_save[0].column[0], end_c = store_default.luckysheet_select_save[0].column[1];
  100417. for (let s = 1; s < store_default.luckysheet_select_save.length; s++) {
  100418. if (store_default.luckysheet_select_save[s].row[0] != str_r || store_default.luckysheet_select_save[s].row[1] != end_r) {
  100419. isSameRow = false;
  100420. }
  100421. if (store_default.luckysheet_select_save[s].column[0] != str_c || store_default.luckysheet_select_save[s].column[1] != end_c) {
  100422. isSameCol = false;
  100423. }
  100424. }
  100425. if (!isSameRow && !isSameCol || selectIsOverlap()) {
  100426. if (isEditMode()) {
  100427. alert(locale_drag2.noMulti);
  100428. } else {
  100429. tooltip_default.info(locale_drag2.noMulti, "");
  100430. }
  100431. return;
  100432. }
  100433. }
  100434. selection_default.copy(event2);
  100435. store_default.luckysheet_paste_iscut = false;
  100436. luckysheetactiveCell();
  100437. event2.stopPropagation();
  100438. return;
  100439. } else if (kcode == 70) {
  100440. searchReplace_default.createDialog(0);
  100441. searchReplace_default.init();
  100442. $("#luckysheet-search-replace #searchInput input").focus();
  100443. } else if (kcode == 72) {
  100444. searchReplace_default.createDialog(1);
  100445. searchReplace_default.init();
  100446. $("#luckysheet-search-replace #searchInput input").focus();
  100447. } else if (kcode == 73) {
  100448. $("#luckysheet-icon-italic").click();
  100449. } else if (kcode == 86) {
  100450. if (isEditMode() || store_default.allowEdit === false) {
  100451. return;
  100452. }
  100453. if ($(event2.target).hasClass("formulaInputFocus")) {
  100454. return;
  100455. }
  100456. if (store_default.luckysheet_select_save.length > 1) {
  100457. if (isEditMode()) {
  100458. alert(locale_drag2.noPaste);
  100459. } else {
  100460. tooltip_default.info(locale_drag2.noPaste, "");
  100461. }
  100462. return;
  100463. }
  100464. selection_default.isPasteAction = true;
  100465. luckysheetactiveCell();
  100466. event2.stopPropagation();
  100467. return;
  100468. } else if (kcode == 88) {
  100469. if (menuButton_default.luckysheetPaintModelOn) {
  100470. menuButton_default.cancelPaintModel();
  100471. }
  100472. if (store_default.luckysheet_select_save.length == 0) {
  100473. return;
  100474. }
  100475. if (store_default.config["merge"] != null) {
  100476. let has_PartMC = false;
  100477. for (let s = 0; s < store_default.luckysheet_select_save.length; s++) {
  100478. let r1 = store_default.luckysheet_select_save[s].row[0], r2 = store_default.luckysheet_select_save[s].row[1];
  100479. let c1 = store_default.luckysheet_select_save[s].column[0], c2 = store_default.luckysheet_select_save[s].column[1];
  100480. has_PartMC = hasPartMC(store_default.config, r1, r2, c1, c2);
  100481. if (has_PartMC) {
  100482. break;
  100483. }
  100484. }
  100485. if (has_PartMC) {
  100486. if (luckysheetConfigsetting_default.editMode) {
  100487. alert(_locale_drag.noMerge);
  100488. } else {
  100489. tooltip_default.info(_locale_drag.noMerge, "");
  100490. }
  100491. return;
  100492. }
  100493. }
  100494. if (store_default.luckysheet_select_save.length > 1) {
  100495. if (isEditMode()) {
  100496. alert(locale_drag2.noMulti);
  100497. } else {
  100498. tooltip_default.info(locale_drag2.noMulti, "");
  100499. }
  100500. return;
  100501. }
  100502. selection_default.copy(event2);
  100503. store_default.luckysheet_paste_iscut = true;
  100504. luckysheetactiveCell();
  100505. event2.stopPropagation();
  100506. return;
  100507. } else if (kcode == 90) {
  100508. controlHistory_default.redo(event2);
  100509. luckysheetactiveCell();
  100510. event2.stopPropagation();
  100511. return;
  100512. } else if (kcode == 89) {
  100513. controlHistory_default.undo(event2);
  100514. luckysheetactiveCell();
  100515. event2.stopPropagation();
  100516. return;
  100517. } else if (kcode == keycode.UP) {
  100518. if (parseInt($inputbox.css("top")) > 0 || $("#luckysheet-singleRange-dialog").is(":visible") || $("#luckysheet-multiRange-dialog").is(":visible")) {
  100519. return;
  100520. }
  100521. luckysheetMoveHighlightCell2("up", "rangeOfSelect");
  100522. } else if (kcode == keycode.DOWN) {
  100523. if (parseInt($inputbox.css("top")) > 0 || $("#luckysheet-singleRange-dialog").is(":visible") || $("#luckysheet-multiRange-dialog").is(":visible")) {
  100524. return;
  100525. }
  100526. luckysheetMoveHighlightCell2("down", "rangeOfSelect");
  100527. } else if (kcode == keycode.LEFT) {
  100528. if (parseInt($inputbox.css("top")) > 0 || $("#luckysheet-singleRange-dialog").is(":visible") || $("#luckysheet-multiRange-dialog").is(":visible")) {
  100529. return;
  100530. }
  100531. luckysheetMoveHighlightCell2("left", "rangeOfSelect");
  100532. } else if (kcode == keycode.RIGHT) {
  100533. if (parseInt($inputbox.css("top")) > 0 || $("#luckysheet-singleRange-dialog").is(":visible") || $("#luckysheet-multiRange-dialog").is(":visible")) {
  100534. return;
  100535. }
  100536. luckysheetMoveHighlightCell2("right", "rangeOfSelect");
  100537. } else if (kcode == 186) {
  100538. let last = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1];
  100539. let row_index = last["row_focus"], col_index = last["column_focus"];
  100540. luckysheetupdateCell(row_index, col_index, store_default.flowdata, true);
  100541. let value = getNowDateTime(1);
  100542. $("#luckysheet-rich-text-editor").html(value);
  100543. luckysheetRangeLast($("#luckysheet-rich-text-editor")[0]);
  100544. formula_default.functionInputHanddler($("#luckysheet-functionbox-cell"), $("#luckysheet-rich-text-editor"), kcode);
  100545. } else if (kcode == 222) {
  100546. let last = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1];
  100547. let row_index = last["row_focus"], col_index = last["column_focus"];
  100548. luckysheetupdateCell(row_index, col_index, store_default.flowdata, true);
  100549. let value = getNowDateTime(2);
  100550. $("#luckysheet-rich-text-editor").html(value);
  100551. luckysheetRangeLast($("#luckysheet-rich-text-editor")[0]);
  100552. formula_default.functionInputHanddler($("#luckysheet-functionbox-cell"), $("#luckysheet-rich-text-editor"), kcode);
  100553. } else if (String.fromCharCode(kcode).toLocaleUpperCase() == "A") {
  100554. $("#luckysheet-left-top").click();
  100555. }
  100556. event2.preventDefault();
  100557. return;
  100558. } else if (shiftKey && (kcode == keycode.UP || kcode == keycode.DOWN || kcode == keycode.LEFT || kcode == keycode.RIGHT || altKey && (kcode == 53 || kcode == 101))) {
  100559. if (parseInt($inputbox.css("top")) > 0 || $(event2.target).hasClass("formulaInputFocus")) {
  100560. return;
  100561. }
  100562. if (!luckysheet_shiftkeydown) {
  100563. store_default.luckysheet_shiftpositon = $.extend(true, {}, store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1]);
  100564. store_default.luckysheet_shiftkeydown = true;
  100565. }
  100566. if (kcode == keycode.UP) {
  100567. if ($("#luckysheet-singleRange-dialog").is(":visible") || $("#luckysheet-multiRange-dialog").is(":visible")) {
  100568. return;
  100569. }
  100570. luckysheetMoveHighlightRange("down", -1, "rangeOfSelect");
  100571. } else if (kcode == keycode.DOWN) {
  100572. if ($("#luckysheet-singleRange-dialog").is(":visible") || $("#luckysheet-multiRange-dialog").is(":visible")) {
  100573. return;
  100574. }
  100575. luckysheetMoveHighlightRange("down", 1, "rangeOfSelect");
  100576. } else if (kcode == keycode.LEFT) {
  100577. if ($("#luckysheet-singleRange-dialog").is(":visible") || $("#luckysheet-multiRange-dialog").is(":visible")) {
  100578. return;
  100579. }
  100580. luckysheetMoveHighlightRange("right", -1, "rangeOfSelect");
  100581. } else if (kcode == keycode.RIGHT) {
  100582. if ($("#luckysheet-singleRange-dialog").is(":visible") || $("#luckysheet-multiRange-dialog").is(":visible")) {
  100583. return;
  100584. }
  100585. luckysheetMoveHighlightRange("right", 1, "rangeOfSelect");
  100586. } else if (altKey && (kcode == 53 || kcode == 101)) {
  100587. $("#luckysheet-icon-strikethrough").click();
  100588. }
  100589. event2.preventDefault();
  100590. } else if (kcode == keycode.ESC) {
  100591. if (menuButton_default.luckysheetPaintModelOn) {
  100592. menuButton_default.cancelPaintModel();
  100593. } else {
  100594. cleargridelement(event2);
  100595. event2.preventDefault();
  100596. }
  100597. selectHightlightShow();
  100598. } else if (kcode == keycode.DELETE || kcode == keycode.BACKSPACE) {
  100599. if (imageCtrl_default.currentImgId != null) {
  100600. imageCtrl_default.removeImgItem();
  100601. } else {
  100602. $("#luckysheet-delete-text").click();
  100603. }
  100604. event2.preventDefault();
  100605. } else if (kcode == 8 && imageCtrl_default.currentImgId != null) {
  100606. imageCtrl_default.removeImgItem();
  100607. event2.preventDefault();
  100608. } else if (kcode == keycode.UP) {
  100609. if (parseInt($inputbox.css("top")) > 0 || store_default.luckysheet_cell_selected_move || store_default.luckysheet_cell_selected_extend || $(event2.target).hasClass("formulaInputFocus") || $("#luckysheet-singleRange-dialog").is(":visible") || $("#luckysheet-multiRange-dialog").is(":visible")) {
  100610. return;
  100611. }
  100612. luckysheetMoveHighlightCell("down", -1, "rangeOfSelect");
  100613. event2.preventDefault();
  100614. } else if (kcode == keycode.DOWN) {
  100615. if (parseInt($inputbox.css("top")) > 0 || store_default.luckysheet_cell_selected_move || store_default.luckysheet_cell_selected_extend || $(event2.target).hasClass("formulaInputFocus") || $("#luckysheet-singleRange-dialog").is(":visible") || $("#luckysheet-multiRange-dialog").is(":visible")) {
  100616. return;
  100617. }
  100618. luckysheetMoveHighlightCell("down", 1, "rangeOfSelect");
  100619. event2.preventDefault();
  100620. } else if (kcode == keycode.LEFT) {
  100621. if (parseInt($inputbox.css("top")) > 0 || store_default.luckysheet_cell_selected_move || store_default.luckysheet_cell_selected_extend || $(event2.target).hasClass("formulaInputFocus") || $("#luckysheet-singleRange-dialog").is(":visible") || $("#luckysheet-multiRange-dialog").is(":visible")) {
  100622. return;
  100623. }
  100624. luckysheetMoveHighlightCell("right", -1, "rangeOfSelect");
  100625. event2.preventDefault();
  100626. } else if (kcode == keycode.RIGHT) {
  100627. if (parseInt($inputbox.css("top")) > 0 || store_default.luckysheet_cell_selected_move || store_default.luckysheet_cell_selected_extend || $(event2.target).hasClass("formulaInputFocus") || $("#luckysheet-singleRange-dialog").is(":visible") || $("#luckysheet-multiRange-dialog").is(":visible")) {
  100628. return;
  100629. }
  100630. luckysheetMoveHighlightCell("right", 1, "rangeOfSelect");
  100631. event2.preventDefault();
  100632. } else if (!(kcode >= 112 && kcode <= 123 || kcode <= 46 || kcode == 144 || kcode == 108 || event2.ctrlKey || event2.altKey || event2.shiftKey && (kcode == 37 || kcode == 38 || kcode == 39 || kcode == 40)) || kcode == 8 || kcode == 32 || kcode == 46 || kcode == 0 || event2.ctrlKey && kcode == 86) {
  100633. if (String.fromCharCode(kcode) != null && $("#luckysheet-cell-selected").is(":visible") && (kcode != keycode.CAPSLOCK && kcode != keycode.WIN && kcode != 18)) {
  100634. let last = store_default.luckysheet_select_save[store_default.luckysheet_select_save.length - 1];
  100635. let row_index = last["row_focus"], col_index = last["column_focus"];
  100636. luckysheetupdateCell(row_index, col_index, store_default.flowdata, true);
  100637. if (kcode == 8) {
  100638. $("#luckysheet-rich-text-editor").html("<br/>");
  100639. }
  100640. formula_default.functionInputHanddler($("#luckysheet-functionbox-cell"), $("#luckysheet-rich-text-editor"), kcode);
  100641. }
  100642. }
  100643. }
  100644. luckysheetactiveCell();
  100645. event2.stopPropagation();
  100646. });
  100647. $("#" + store_default.container).add("#luckysheet-input-box").keydown(function(event2) {
  100648. if ($("#luckysheet-modal-dialog-mask").is(":visible") || $(event2.target).hasClass("luckysheet-mousedown-cancel") || $(event2.target).hasClass("formulaInputFocus")) {
  100649. return;
  100650. }
  100651. let ctrlKey = event2.ctrlKey;
  100652. let altKey = event2.altKey;
  100653. let shiftKey = event2.shiftKey;
  100654. let kcode = event2.keyCode;
  100655. let $inputbox = $("#luckysheet-input-box");
  100656. if (kcode == keycode.ESC && parseInt($("#luckysheet-input-box").css("top")) > 0) {
  100657. formula_default.dontupdate();
  100658. luckysheetMoveHighlightCell("down", 0, "rangeOfSelect");
  100659. event2.preventDefault();
  100660. } else if (kcode == keycode.ENTER && parseInt($inputbox.css("top")) > 0) {
  100661. if ($("#luckysheet-formula-search-c").is(":visible") && formula_default.searchFunctionCell != null) {
  100662. formula_default.searchFunctionEnter($("#luckysheet-formula-search-c").find(".luckysheet-formula-search-item-active"));
  100663. event2.preventDefault();
  100664. }
  100665. } else if (kcode == keycode.TAB && parseInt($inputbox.css("top")) > 0) {
  100666. if ($("#luckysheet-formula-search-c").is(":visible") && formula_default.searchFunctionCell != null) {
  100667. formula_default.searchFunctionEnter($("#luckysheet-formula-search-c").find(".luckysheet-formula-search-item-active"));
  100668. } else {
  100669. formula_default.updatecell(store_default.luckysheetCellUpdate[0], store_default.luckysheetCellUpdate[1]);
  100670. luckysheetMoveHighlightCell("right", 1, "rangeOfSelect");
  100671. }
  100672. event2.preventDefault();
  100673. } else if (kcode == keycode.F4 && parseInt($inputbox.css("top")) > 0) {
  100674. formula_default.setfreezonFuc(event2);
  100675. event2.preventDefault();
  100676. } else if (kcode == keycode.UP && parseInt($inputbox.css("top")) > 0) {
  100677. formulaMoveEvent("up", ctrlKey, shiftKey, event2);
  100678. } else if (kcode == keycode.DOWN && parseInt($inputbox.css("top")) > 0) {
  100679. formulaMoveEvent("down", ctrlKey, shiftKey, event2);
  100680. } else if (kcode == keycode.LEFT && parseInt($inputbox.css("top")) > 0) {
  100681. formulaMoveEvent("left", ctrlKey, shiftKey, event2);
  100682. } else if (kcode == keycode.RIGHT && parseInt($inputbox.css("top")) > 0) {
  100683. formulaMoveEvent("right", ctrlKey, shiftKey, event2);
  100684. } else if (!(kcode >= 112 && kcode <= 123 || kcode <= 46 || kcode == 144 || kcode == 108 || event2.ctrlKey || event2.altKey || event2.shiftKey && (kcode == 37 || kcode == 38 || kcode == 39 || kcode == 40 || kcode == keycode.WIN || kcode == keycode.WIN_R || kcode == keycode.MENU)) || kcode == 8 || kcode == 32 || kcode == 46 || event2.ctrlKey && kcode == 86) {
  100685. formula_default.functionInputHanddler($("#luckysheet-functionbox-cell"), $("#luckysheet-rich-text-editor"), kcode);
  100686. setCenterInputPosition(store_default.luckysheetCellUpdate[0], store_default.luckysheetCellUpdate[1], store_default.flowdata);
  100687. }
  100688. }).keyup(function(e) {
  100689. let kcode = e.keyCode;
  100690. if (!e.shiftKey && kcode == 16) {
  100691. store_default.luckysheet_shiftkeydown = false;
  100692. store_default.luckysheet_shiftpositon = null;
  100693. }
  100694. if (parseInt($("#luckysheet-input-box").css("top")) > 0 && (kcode == 13 || kcode == 16 || kcode == 32)) {
  100695. }
  100696. e.preventDefault();
  100697. });
  100698. $("#luckysheet_info_detail_input").val(server_default.title).css("width", getByteLen(server_default.title) * 10).keydown(function() {
  100699. let ctrlKey = event.ctrlKey;
  100700. let altKey = event.altKey;
  100701. let shiftKey = event.shiftKey;
  100702. let kcode = event.keyCode;
  100703. let $t = $(this);
  100704. if (kcode == keycode.ENTER) {
  100705. $t.blur().change();
  100706. }
  100707. }).bind("input propertychange", function() {
  100708. let $t = $(this);
  100709. let inputlen = getByteLen($t.val()) * 10;
  100710. let updatelen = $("#luckysheet_info_detail_update").outerWidth();
  100711. let savelen = $("#luckysheet_info_detail_save").outerWidth();
  100712. let userlen = $("#luckysheet_info_detail_user").parent().outerWidth() + 60;
  100713. let containerlen = $("#" + store_default.container).outerWidth();
  100714. let otherlen = 100;
  100715. let minuslen = containerlen - savelen - updatelen - userlen - otherlen;
  100716. if (inputlen > minuslen) {
  100717. $("#luckysheet_info_detail_input").css("width", minuslen);
  100718. } else {
  100719. $("#luckysheet_info_detail_input").css("width", inputlen);
  100720. }
  100721. }).change(function() {
  100722. server_default.saveParam("na", null, $(this).val());
  100723. });
  100724. $("#" + store_default.container).add("input.luckysheet-mousedown-cancel").keydown(function(event2) {
  100725. const element = event2.target.closest(".luckysheet-cols-menuitem");
  100726. if (typeof element != "undefined" && element != null && event2.keyCode === 13) {
  100727. $(element).trigger("click");
  100728. }
  100729. });
  100730. }
  100731. var luckysheet_shiftkeydown;
  100732. var init_keyboard = __esm({
  100733. "src/controllers/keyboard.js"() {
  100734. init_luckysheetConfigsetting();
  100735. init_menuButton();
  100736. init_conditionformat();
  100737. init_server();
  100738. init_updateCell();
  100739. init_constant();
  100740. init_sheetMove();
  100741. init_select();
  100742. init_selection();
  100743. init_searchReplace();
  100744. init_controlHistory();
  100745. init_imageCtrl();
  100746. init_util();
  100747. init_get();
  100748. init_validate();
  100749. init_cursorPos();
  100750. init_formula();
  100751. init_cleargridelement();
  100752. init_tooltip();
  100753. init_locale();
  100754. init_inlineString();
  100755. init_store();
  100756. luckysheet_shiftkeydown = false;
  100757. }
  100758. });
  100759. // src/controllers/orderBy.js
  100760. function orderByInitial() {
  100761. const _locale = locale_default();
  100762. $("#luckysheetorderbyasc, #luckysheetorderbyasc_t").mousedown(function(event2) {
  100763. cleargridelement(event2);
  100764. sortColumnSeletion(store_default.orderbyindex, true);
  100765. selectHightlightShow();
  100766. });
  100767. $("#luckysheetorderbydesc, #luckysheetorderbydesc_t").click(function(event2) {
  100768. cleargridelement(event2);
  100769. sortColumnSeletion(store_default.orderbyindex, false);
  100770. selectHightlightShow();
  100771. });
  100772. let luckysheet_sort_initial = true;
  100773. $("#luckysheetorderby").click(function() {
  100774. if (!checkProtectionAuthorityNormal(store_default.currentSheetIndex, "sort")) {
  100775. return;
  100776. }
  100777. $("body .luckysheet-cols-menu").hide();
  100778. const locale_sort = _locale.sort;
  100779. if (store_default.luckysheet_select_save.length > 1) {
  100780. if (isEditMode()) {
  100781. alert(locale_sort.noRangeError);
  100782. } else {
  100783. tooltip_default.info(locale_sort.noRangeError, "");
  100784. }
  100785. return;
  100786. }
  100787. let last = store_default.luckysheet_select_save[0];
  100788. let r1 = last["row"][0], r2 = last["row"][1];
  100789. let c1 = last["column"][0], c2 = last["column"][1];
  100790. if (luckysheet_sort_initial) {
  100791. luckysheet_sort_initial = false;
  100792. let content = `<div style="overflow: hidden;" class="luckysheet-sort-modal"><div><label><input type="checkbox" id="luckysheet-sort-haveheader"/><span>${locale_sort.hasTitle}</span></label></div><div style="overflow-y:auto;" id="luckysheet-sort-dialog-tablec"><table data-itemcount="0" cellspacing="0"> <tr><td>${locale_sort.hasTitle} <select name="sort_0"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> </select> </td> <td> <div><label><input value="asc" type="radio" checked="checked" name="sort_0"><span>${locale_sort.asc}A-Z</span></label></div> <div><label><input value="desc" type="radio" name="sort_0"><span>${locale_sort.desc}Z-A</span></label></div></td></tr></table></div><div style="background: #e5e5e5;border-top: 1px solid #f5f5f5; height: 1px; width: 100%;margin:2px 0px;margin-bottom:10px;"></div> <div> <span style="font-weight: bold; text-decoration: underline;text-align:center;color: blue;cursor: pointer;" class="luckysheet-sort-dialog-additem">+ ${locale_sort.addOthers}</span> </div> </div>`;
  100793. $("body").append(replaceHtml(modelHTML, {"id": "luckysheet-sort-dialog", "addclass": "", "title": _locale.sort.sortTitle, "content": content, "botton": `<button id="luckysheet-sort-modal-confirm" class="btn btn-primary">${locale_sort.confirm}</button><button class="btn btn-default luckysheet-model-close-btn">${locale_sort.close}</button>`}));
  100794. $("#luckysheet-sort-dialog .luckysheet-sort-dialog-additem").click(function() {
  100795. let last2 = store_default.luckysheet_select_save[0];
  100796. let r12 = last2["row"][0], r22 = last2["row"][1];
  100797. let c12 = last2["column"][0], c22 = last2["column"][1];
  100798. let option2 = "", i2 = $("#luckysheet-sort-dialog table").data("itemcount") + 1;
  100799. let t = $("#luckysheet-sort-haveheader").is(":checked");
  100800. for (let c3 = c12; c3 <= c22; c3++) {
  100801. if (t) {
  100802. let v = getcellvalue(r12, c3, store_default.flowdata, "m");
  100803. if (v == null) {
  100804. v = locale_sort.columnOperation + (c3 - c12 + 1);
  100805. }
  100806. option2 += '<option value="' + c3 + '">' + v + "</option>";
  100807. } else {
  100808. option2 += '<option value="' + c3 + '">' + chatatABC(c3) + "</option>";
  100809. }
  100810. }
  100811. $("#luckysheet-sort-dialog table").append(`
  100812. <tr class="luckysheet-sort-dialog-tr">
  100813. <td><span class="luckysheet-sort-item-close" onclick="$(this).parent().parent().remove();"><i class="fa fa-times"
  100814. aria-hidden="true"></i></span>${locale_sort.secondaryTitle} <select
  100815. name="sort_${i2}">${option2}</select> </td>
  100816. <td>
  100817. <div><label><input value="asc" type="radio" checked="checked"
  100818. name="sort_${i2}"><span>${locale_sort.asc}A-Z</span></label></div>
  100819. <div><label><input value="desc" type="radio" name="sort_${i2}"><span>${locale_sort.desc}Z-A</span></label>
  100820. </div>
  100821. </td>
  100822. </tr>
  100823. `);
  100824. $("#luckysheet-sort-dialog table").data("itemcount", i2);
  100825. });
  100826. $("#luckysheet-sort-haveheader").change(function() {
  100827. let last2 = store_default.luckysheet_select_save[0];
  100828. let r12 = last2["row"][0], r22 = last2["row"][1];
  100829. let c12 = last2["column"][0], c22 = last2["column"][1];
  100830. let t = $(this).is(":checked");
  100831. let option2 = "";
  100832. for (let c3 = c12; c3 <= c22; c3++) {
  100833. if (t) {
  100834. let v = getcellvalue(r12, c3, store_default.flowdata, "m");
  100835. if (v == null) {
  100836. v = locale_sort.columnOperation + (c3 - c12 + 1);
  100837. }
  100838. option2 += '<option value="' + c3 + '">' + v + "</option>";
  100839. } else {
  100840. option2 += '<option value="' + c3 + '">' + chatatABC(c3) + "</option>";
  100841. }
  100842. }
  100843. $("#luckysheet-sort-dialog tr select").each(function() {
  100844. $(this).html(option2);
  100845. });
  100846. });
  100847. $("#luckysheet-sort-modal-confirm").click(function() {
  100848. if (store_default.luckysheet_select_save.length > 1) {
  100849. if (isEditMode()) {
  100850. alert(locale_sort.noRangeError);
  100851. } else {
  100852. tooltip_default.info(locale_sort.noRangeError, "");
  100853. }
  100854. return;
  100855. }
  100856. let d = editor_default.deepCopyFlowData(store_default.flowdata);
  100857. let last2 = store_default.luckysheet_select_save[0];
  100858. let r12 = last2["row"][0], r22 = last2["row"][1];
  100859. let c12 = last2["column"][0], c22 = last2["column"][1];
  100860. let t = $("#luckysheet-sort-haveheader").is(":checked");
  100861. let str;
  100862. if (t) {
  100863. str = r12 + 1;
  100864. } else {
  100865. str = r12;
  100866. }
  100867. let hasMc = false;
  100868. let data = [];
  100869. for (let r3 = str; r3 <= r22; r3++) {
  100870. let data_row = [];
  100871. for (let c3 = c12; c3 <= c22; c3++) {
  100872. if (d[r3][c3] != null && d[r3][c3].mc != null) {
  100873. hasMc = true;
  100874. break;
  100875. }
  100876. data_row.push(d[r3][c3]);
  100877. }
  100878. data.push(data_row);
  100879. }
  100880. if (hasMc) {
  100881. if (isEditMode()) {
  100882. alert(locale_sort.mergeError);
  100883. } else {
  100884. tooltip_default.info(locale_sort.mergeError, "");
  100885. }
  100886. return;
  100887. }
  100888. $($("#luckysheet-sort-dialog table tr").toArray().reverse()).each(function() {
  100889. let i2 = $(this).find("select").val(), asc = $(this).find("input:radio:checked").val();
  100890. i2 -= c12;
  100891. if (asc == "asc") {
  100892. asc = true;
  100893. } else {
  100894. asc = false;
  100895. }
  100896. data = orderbydata([].concat(data), i2, asc);
  100897. });
  100898. for (let r3 = str; r3 <= r22; r3++) {
  100899. for (let c3 = c12; c3 <= c22; c3++) {
  100900. d[r3][c3] = data[r3 - str][c3 - c12];
  100901. }
  100902. }
  100903. let allParam = {};
  100904. if (store_default.config["rowlen"] != null) {
  100905. let cfg = $.extend(true, {}, store_default.config);
  100906. cfg = rowlenByRange(d, str, r22, cfg);
  100907. allParam = {
  100908. "cfg": cfg,
  100909. "RowlChange": true
  100910. };
  100911. }
  100912. jfrefreshgrid(d, [{"row": [str, r22], "column": [c12, c22]}], allParam);
  100913. $("#luckysheet-sort-dialog").hide();
  100914. $("#luckysheet-modal-dialog-mask").hide();
  100915. });
  100916. }
  100917. let option = "";
  100918. for (let c3 = c1; c3 <= c2; c3++) {
  100919. option += '<option value="' + c3 + '">' + chatatABC(c3) + "</option>";
  100920. }
  100921. $("#luckysheet-sort-dialog select").html(option);
  100922. $("#luckysheet-sort-dialog .luckysheet-sort-dialog-tr").remove();
  100923. $("#luckysheet-sort-haveheader").prop("checked", false);
  100924. $("#luckysheet-sort-dialog input:radio:first").prop("checked", "checked");
  100925. $("#luckysheet-sort-dialog .luckysheet-modal-dialog-title-text").html(locale_sort.sortRangeTitle + "<span>" + chatatABC(c1) + (r1 + 1) + "</span>" + locale_sort.sortRangeTitleTo + "<span>" + chatatABC(c2) + (r2 + 1) + "</span>");
  100926. let $t = $("#luckysheet-sort-dialog"), myh = $t.outerHeight(), myw = $t.outerWidth();
  100927. let winw = $(window).width(), winh = $(window).height();
  100928. let scrollLeft = $(document).scrollLeft(), scrollTop = $(document).scrollTop();
  100929. $("#luckysheet-sort-dialog-tablec").css("max-height", (winh - myh) / 2);
  100930. $("#luckysheet-sort-dialog").css({"left": (winw + scrollLeft - myw) / 2, "top": (winh + scrollTop - myh) / 2}).show();
  100931. $("#luckysheet-modal-dialog-mask").show();
  100932. if (r1 < r2) {
  100933. setTimeout(function() {
  100934. let flowrowdata1 = store_default.flowdata[r1], flowrowdata2 = store_default.flowdata[r1 + 1], hastitle = false;
  100935. for (let i2 = c1; i2 <= c2; i2++) {
  100936. let isdatatype_r1 = isdatatype(flowrowdata1[i2]), isdatatype_r2 = isdatatype(flowrowdata2[i2]);
  100937. if (isdatatype_r1 != isdatatype_r2) {
  100938. hastitle = true;
  100939. }
  100940. }
  100941. if (hastitle) {
  100942. $("#luckysheet-sort-haveheader").prop("checked", true).change();
  100943. }
  100944. }, 10);
  100945. }
  100946. });
  100947. }
  100948. var init_orderBy = __esm({
  100949. "src/controllers/orderBy.js"() {
  100950. init_constant();
  100951. init_select();
  100952. init_protection();
  100953. init_util();
  100954. init_getRowlen();
  100955. init_validate();
  100956. init_cleargridelement();
  100957. init_refresh();
  100958. init_getdata();
  100959. init_sort();
  100960. init_tooltip();
  100961. init_editor();
  100962. init_datecontroll();
  100963. init_store();
  100964. init_locale();
  100965. }
  100966. });
  100967. // src/expendPlugins/print/plugin.js
  100968. function print(data, isDemo2) {
  100969. loadLinks(dependLinks2);
  100970. seriesLoadScripts(dependScripts2, null, function() {
  100971. });
  100972. }
  100973. var dependScripts2, dependLinks2;
  100974. var init_plugin2 = __esm({
  100975. "src/expendPlugins/print/plugin.js"() {
  100976. init_util();
  100977. dependScripts2 = [
  100978. "http://localhost:8080/luckysheetPluginPrint.umd.js"
  100979. ];
  100980. dependLinks2 = [
  100981. "http://localhost:8080/luckysheetPluginPrint.css"
  100982. ];
  100983. }
  100984. });
  100985. // src/controllers/expendPlugins.js
  100986. function initPlugins(plugins, data) {
  100987. if (plugins.length) {
  100988. plugins.forEach((plugin) => {
  100989. pluginsObj[plugin](data, isDemo);
  100990. });
  100991. }
  100992. }
  100993. var pluginsObj, isDemo;
  100994. var init_expendPlugins = __esm({
  100995. "src/controllers/expendPlugins.js"() {
  100996. init_plugin();
  100997. init_plugin2();
  100998. pluginsObj = {
  100999. "chart": chart,
  101000. "print": print
  101001. };
  101002. isDemo = true;
  101003. }
  101004. });
  101005. // src/function/functionImplementation.js
  101006. var import_dayjs8, import_numeral6, functionImplementation, functionImplementation_default;
  101007. var init_functionImplementation = __esm({
  101008. "src/function/functionImplementation.js"() {
  101009. init_luckysheetConfigsetting();
  101010. init_func();
  101011. init_matrix_methods();
  101012. init_get();
  101013. init_menuButton();
  101014. init_sparkline();
  101015. init_formula();
  101016. init_func_methods();
  101017. init_editor();
  101018. init_datecontroll();
  101019. init_validate();
  101020. init_refresh();
  101021. init_format();
  101022. init_sort();
  101023. init_getdata();
  101024. init_util();
  101025. init_store();
  101026. import_dayjs8 = __toModule(require_dayjs_min());
  101027. import_numeral6 = __toModule(require_numeral());
  101028. functionImplementation = {
  101029. "SUM": function() {
  101030. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  101031. return formula_default.error.na;
  101032. }
  101033. for (var i2 = 0; i2 < arguments.length; i2++) {
  101034. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  101035. if (!p[0]) {
  101036. return formula_default.error.v;
  101037. }
  101038. }
  101039. try {
  101040. var dataArr = [];
  101041. for (var i2 = 0; i2 < arguments.length; i2++) {
  101042. var data = arguments[i2];
  101043. if (getObjType(data) == "array") {
  101044. if (getObjType(data[0]) == "array" && !func_methods_default.isDyadicArr(data)) {
  101045. return formula_default.error.v;
  101046. }
  101047. dataArr = dataArr.concat(func_methods_default.getDataArr(data, true));
  101048. } else if (getObjType(data) == "object" && data.startCell != null) {
  101049. dataArr = dataArr.concat(func_methods_default.getCellDataArr(data, "number", true));
  101050. } else {
  101051. if (!isRealNum(data)) {
  101052. if (getObjType(data) == "boolean") {
  101053. if (data.toString().toLowerCase() == "true") {
  101054. dataArr.push(1);
  101055. } else if (data.toString().toLowerCase() == "false") {
  101056. dataArr.push(0);
  101057. }
  101058. } else {
  101059. return formula_default.error.v;
  101060. }
  101061. } else {
  101062. dataArr.push(data);
  101063. }
  101064. }
  101065. }
  101066. var sum = 0;
  101067. if (dataArr.length > 0) {
  101068. for (var i2 = 0; i2 < dataArr.length; i2++) {
  101069. if (valueIsError(dataArr[i2])) {
  101070. return dataArr[i2];
  101071. }
  101072. if (!isRealNum(dataArr[i2])) {
  101073. continue;
  101074. }
  101075. sum = luckysheet_calcADPMM(sum, "+", dataArr[i2]);
  101076. }
  101077. }
  101078. return sum;
  101079. } catch (e) {
  101080. var err = e;
  101081. err = formula_default.errorInfo(err);
  101082. return [formula_default.error.v, err];
  101083. }
  101084. },
  101085. "AVERAGE": function() {
  101086. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  101087. return formula_default.error.na;
  101088. }
  101089. for (var i2 = 0; i2 < arguments.length; i2++) {
  101090. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  101091. if (!p[0]) {
  101092. return formula_default.error.v;
  101093. }
  101094. }
  101095. try {
  101096. var dataArr = [];
  101097. for (var i2 = 0; i2 < arguments.length; i2++) {
  101098. var data = arguments[i2];
  101099. if (getObjType(data) == "array") {
  101100. if (getObjType(data[0]) == "array") {
  101101. if (!func_methods_default.isDyadicArr(data)) {
  101102. return formula_default.error.v;
  101103. }
  101104. dataArr = dataArr.concat(func_methods_default.getDataArr(data, true));
  101105. } else {
  101106. dataArr = dataArr.concat(data);
  101107. }
  101108. } else if (getObjType(data) == "object" && data.startCell != null) {
  101109. dataArr = dataArr.concat(func_methods_default.getCellDataArr(data, "text", true));
  101110. } else {
  101111. dataArr.push(data);
  101112. }
  101113. }
  101114. var sum = 0, count = 0;
  101115. for (var i2 = 0; i2 < dataArr.length; i2++) {
  101116. if (valueIsError(dataArr[i2])) {
  101117. return dataArr[i2];
  101118. } else if (!isRealNum(dataArr[i2])) {
  101119. return formula_default.error.v;
  101120. }
  101121. sum = luckysheet_calcADPMM(sum, "+", dataArr[i2]);
  101122. count++;
  101123. }
  101124. if (count == 0) {
  101125. return formula_default.error.d;
  101126. }
  101127. return luckysheet_calcADPMM(sum, "/", count);
  101128. } catch (e) {
  101129. var err = e;
  101130. err = formula_default.errorInfo(err);
  101131. return [formula_default.error.v, err];
  101132. }
  101133. },
  101134. "COUNT": function() {
  101135. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  101136. return formula_default.error.na;
  101137. }
  101138. for (var i2 = 0; i2 < arguments.length; i2++) {
  101139. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  101140. if (!p[0]) {
  101141. return formula_default.error.v;
  101142. }
  101143. }
  101144. try {
  101145. var dataArr = [];
  101146. for (var i2 = 0; i2 < arguments.length; i2++) {
  101147. var data = arguments[i2];
  101148. if (getObjType(data) == "array") {
  101149. if (getObjType(data[0]) == "array") {
  101150. if (!func_methods_default.isDyadicArr(data)) {
  101151. return formula_default.error.v;
  101152. }
  101153. dataArr = dataArr.concat(func_methods_default.getDataArr(data, true));
  101154. } else {
  101155. dataArr = dataArr.concat(data);
  101156. }
  101157. } else if (getObjType(data) == "object" && data.startCell != null) {
  101158. dataArr = dataArr.concat(func_methods_default.getCellDataArr(data, "text", true));
  101159. } else {
  101160. if (getObjType(data) == "boolean") {
  101161. if (data.toString().toLowerCase() == "true") {
  101162. dataArr.push(1);
  101163. } else if (data.toString().toLowerCase() == "false") {
  101164. dataArr.push(0);
  101165. }
  101166. } else {
  101167. dataArr.push(data);
  101168. }
  101169. }
  101170. }
  101171. var count = 0;
  101172. for (var i2 = 0; i2 < dataArr.length; i2++) {
  101173. if (isRealNum(dataArr[i2])) {
  101174. count++;
  101175. }
  101176. }
  101177. return count;
  101178. } catch (e) {
  101179. var err = e;
  101180. err = formula_default.errorInfo(err);
  101181. return [formula_default.error.v, err];
  101182. }
  101183. },
  101184. "COUNTA": function() {
  101185. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  101186. return formula_default.error.na;
  101187. }
  101188. for (var i2 = 0; i2 < arguments.length; i2++) {
  101189. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  101190. if (!p[0]) {
  101191. return formula_default.error.v;
  101192. }
  101193. }
  101194. try {
  101195. var dataArr = [];
  101196. for (var i2 = 0; i2 < arguments.length; i2++) {
  101197. var data = arguments[i2];
  101198. if (getObjType(data) == "array") {
  101199. if (getObjType(data[0]) == "array") {
  101200. if (!func_methods_default.isDyadicArr(data)) {
  101201. return formula_default.error.v;
  101202. }
  101203. dataArr = dataArr.concat(func_methods_default.getDataArr(data));
  101204. } else {
  101205. dataArr = dataArr.concat(data);
  101206. }
  101207. } else if (getObjType(data) == "object" && data.startCell != null) {
  101208. dataArr = dataArr.concat(func_methods_default.getCellDataArr(data, "text", true));
  101209. } else {
  101210. dataArr.push(data);
  101211. }
  101212. }
  101213. return dataArr.length;
  101214. } catch (err) {
  101215. err = formula_default.errorInfo(err);
  101216. return [formula_default.error.v, err];
  101217. }
  101218. },
  101219. "MAX": function() {
  101220. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  101221. return formula_default.error.na;
  101222. }
  101223. for (var i2 = 0; i2 < arguments.length; i2++) {
  101224. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  101225. if (!p[0]) {
  101226. return formula_default.error.v;
  101227. }
  101228. }
  101229. try {
  101230. var dataArr = [];
  101231. for (var i2 = 0; i2 < arguments.length; i2++) {
  101232. var data = arguments[i2];
  101233. if (getObjType(data) == "array") {
  101234. if (getObjType(data[0]) == "array") {
  101235. if (!func_methods_default.isDyadicArr(data)) {
  101236. return formula_default.error.v;
  101237. }
  101238. dataArr = dataArr.concat(func_methods_default.getDataArr(data, true));
  101239. } else {
  101240. dataArr = dataArr.concat(data);
  101241. }
  101242. } else if (getObjType(data) == "object" && data.startCell != null) {
  101243. dataArr = dataArr.concat(func_methods_default.getCellDataArr(data, "number", true));
  101244. } else {
  101245. dataArr.push(data);
  101246. }
  101247. }
  101248. var max = null;
  101249. for (var i2 = 0; i2 < dataArr.length; i2++) {
  101250. if (valueIsError(dataArr[i2])) {
  101251. return dataArr[i2];
  101252. }
  101253. if (!isRealNum(dataArr[i2])) {
  101254. continue;
  101255. }
  101256. if (max == null || parseFloat(dataArr[i2]) > max) {
  101257. max = parseFloat(dataArr[i2]);
  101258. }
  101259. }
  101260. return max == null ? 0 : max;
  101261. } catch (e) {
  101262. var err = e;
  101263. err = formula_default.errorInfo(err);
  101264. return [formula_default.error.v, err];
  101265. }
  101266. },
  101267. "MIN": function() {
  101268. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  101269. return formula_default.error.na;
  101270. }
  101271. for (var i2 = 0; i2 < arguments.length; i2++) {
  101272. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  101273. if (!p[0]) {
  101274. return formula_default.error.v;
  101275. }
  101276. }
  101277. try {
  101278. var dataArr = [];
  101279. for (var i2 = 0; i2 < arguments.length; i2++) {
  101280. var data = arguments[i2];
  101281. if (getObjType(data) == "array") {
  101282. if (getObjType(data[0]) == "array") {
  101283. if (!func_methods_default.isDyadicArr(data)) {
  101284. return formula_default.error.v;
  101285. }
  101286. dataArr = dataArr.concat(func_methods_default.getDataArr(data, true));
  101287. } else {
  101288. dataArr = dataArr.concat(data);
  101289. }
  101290. } else if (getObjType(data) == "object" && data.startCell != null) {
  101291. dataArr = dataArr.concat(func_methods_default.getCellDataArr(data, "number", true));
  101292. } else {
  101293. dataArr.push(data);
  101294. }
  101295. }
  101296. var min = null;
  101297. for (var i2 = 0; i2 < dataArr.length; i2++) {
  101298. if (valueIsError(dataArr[i2])) {
  101299. return dataArr[i2];
  101300. }
  101301. if (!isRealNum(dataArr[i2])) {
  101302. continue;
  101303. }
  101304. if (min == null || parseFloat(dataArr[i2]) < min) {
  101305. min = parseFloat(dataArr[i2]);
  101306. }
  101307. }
  101308. return min == null ? 0 : min;
  101309. } catch (e) {
  101310. var err = e;
  101311. err = formula_default.errorInfo(err);
  101312. return [formula_default.error.v, err];
  101313. }
  101314. },
  101315. "AGE_BY_IDCARD": function() {
  101316. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  101317. return formula_default.error.na;
  101318. }
  101319. for (var i2 = 0; i2 < arguments.length; i2++) {
  101320. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  101321. if (!p[0]) {
  101322. return formula_default.error.v;
  101323. }
  101324. }
  101325. try {
  101326. var UUserCard = func_methods_default.getFirstValue(arguments[0]);
  101327. if (valueIsError(UUserCard)) {
  101328. return UUserCard;
  101329. }
  101330. if (!window.luckysheet_function.ISIDCARD.f(UUserCard)) {
  101331. return formula_default.error.v;
  101332. }
  101333. var birthday = window.luckysheet_function.BIRTHDAY_BY_IDCARD.f(UUserCard);
  101334. if (valueIsError(birthday)) {
  101335. return birthday;
  101336. }
  101337. birthday = (0, import_dayjs8.default)(birthday);
  101338. var cuurentdate = (0, import_dayjs8.default)();
  101339. if (arguments.length == 2) {
  101340. cuurentdate = func_methods_default.getFirstValue(arguments[1]);
  101341. if (valueIsError(cuurentdate)) {
  101342. return cuurentdate;
  101343. }
  101344. cuurentdate = (0, import_dayjs8.default)(cuurentdate);
  101345. }
  101346. var age = cuurentdate.diff(birthday, "years");
  101347. if (age < 0 || age.toString() == "NaN") {
  101348. return formula_default.error.v;
  101349. }
  101350. return age;
  101351. } catch (e) {
  101352. var err = e;
  101353. err = formula_default.errorInfo(err);
  101354. return [formula_default.error.v, err];
  101355. }
  101356. },
  101357. "SEX_BY_IDCARD": function() {
  101358. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  101359. return formula_default.error.na;
  101360. }
  101361. for (var i2 = 0; i2 < arguments.length; i2++) {
  101362. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  101363. if (!p[0]) {
  101364. return formula_default.error.v;
  101365. }
  101366. }
  101367. try {
  101368. var UUserCard = func_methods_default.getFirstValue(arguments[0]).toString();
  101369. if (valueIsError(UUserCard)) {
  101370. return UUserCard;
  101371. }
  101372. if (!window.luckysheet_function.ISIDCARD.f(UUserCard)) {
  101373. return formula_default.error.v;
  101374. }
  101375. if (parseInt(UUserCard.substr(16, 1)) % 2 == 1) {
  101376. return "\u7537";
  101377. } else {
  101378. return "\u5973";
  101379. }
  101380. } catch (e) {
  101381. var err = e;
  101382. err = formula_default.errorInfo(err);
  101383. return [formula_default.error.v, err];
  101384. }
  101385. },
  101386. "BIRTHDAY_BY_IDCARD": function() {
  101387. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  101388. return formula_default.error.na;
  101389. }
  101390. for (var i2 = 0; i2 < arguments.length; i2++) {
  101391. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  101392. if (!p[0]) {
  101393. return formula_default.error.v;
  101394. }
  101395. }
  101396. try {
  101397. var UUserCard = func_methods_default.getFirstValue(arguments[0]).toString();
  101398. if (valueIsError(UUserCard)) {
  101399. return UUserCard;
  101400. }
  101401. if (!window.luckysheet_function.ISIDCARD.f(UUserCard)) {
  101402. return formula_default.error.v;
  101403. }
  101404. var birthday = "";
  101405. if (UUserCard.length == 15) {
  101406. var year = "19" + UUserCard.substring(6, 8) + "/" + UUserCard.substring(8, 10) + "/" + UUserCard.substring(10, 12);
  101407. birthday = year;
  101408. } else if (UUserCard.length == 18) {
  101409. var year = UUserCard.substring(6, 10) + "/" + UUserCard.substring(10, 12) + "/" + UUserCard.substring(12, 14);
  101410. birthday = year;
  101411. }
  101412. var datetype = 0;
  101413. if (arguments[1] != null) {
  101414. datetype = func_methods_default.getFirstValue(arguments[1]);
  101415. if (valueIsError(datetype)) {
  101416. return datetype;
  101417. }
  101418. }
  101419. if (!isRealNum(datetype)) {
  101420. return formula_default.error.v;
  101421. }
  101422. datetype = parseInt(datetype);
  101423. if (datetype < 0 || datetype > 2) {
  101424. return formula_default.error.v;
  101425. }
  101426. if (parseInt(datetype) == 0) {
  101427. return birthday;
  101428. } else if (parseInt(datetype) == 1) {
  101429. return (0, import_dayjs8.default)(birthday).format("YYYY-MM-DD");
  101430. } else if (parseInt(datetype) == 2) {
  101431. return (0, import_dayjs8.default)(birthday).format("YYYY\u5E74M\u6708D\u65E5");
  101432. }
  101433. } catch (e) {
  101434. var err = e;
  101435. err = formula_default.errorInfo(err);
  101436. return [formula_default.error.v, err];
  101437. }
  101438. },
  101439. "PROVINCE_BY_IDCARD": function() {
  101440. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  101441. return formula_default.error.na;
  101442. }
  101443. for (var i2 = 0; i2 < arguments.length; i2++) {
  101444. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  101445. if (!p[0]) {
  101446. return formula_default.error.v;
  101447. }
  101448. }
  101449. try {
  101450. var UUserCard = func_methods_default.getFirstValue(arguments[0]).toString();
  101451. if (valueIsError(UUserCard)) {
  101452. return UUserCard;
  101453. }
  101454. if (!window.luckysheet_function.ISIDCARD.f(UUserCard)) {
  101455. return formula_default.error.v;
  101456. }
  101457. var native = "\u672A\u77E5";
  101458. var provinceArray = formula_default.classlist.province;
  101459. if (UUserCard.substring(0, 2) in provinceArray) {
  101460. native = provinceArray[UUserCard.substring(0, 2)];
  101461. }
  101462. return native;
  101463. } catch (e) {
  101464. var err = e;
  101465. err = formula_default.errorInfo(err);
  101466. return [formula_default.error.v, err];
  101467. }
  101468. },
  101469. "CITY_BY_IDCARD": function() {
  101470. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  101471. return formula_default.error.na;
  101472. }
  101473. for (var i2 = 0; i2 < arguments.length; i2++) {
  101474. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  101475. if (!p[0]) {
  101476. return formula_default.error.v;
  101477. }
  101478. }
  101479. try {
  101480. var UUserCard = func_methods_default.getFirstValue(arguments[0]).toString();
  101481. if (valueIsError(UUserCard)) {
  101482. return UUserCard;
  101483. }
  101484. if (!window.luckysheet_function.ISIDCARD.f(UUserCard)) {
  101485. return formula_default.error.v;
  101486. }
  101487. var dataNum = cityData.length, native = "\u672A\u77E5";
  101488. for (var i2 = 0; i2 < dataNum; i2++) {
  101489. if (UUserCard.substring(0, 6) == cityData[i2].code) {
  101490. native = cityData[i2].title;
  101491. break;
  101492. }
  101493. }
  101494. return native;
  101495. } catch (e) {
  101496. var err = e;
  101497. err = formula_default.errorInfo(err);
  101498. return [formula_default.error.v, err];
  101499. }
  101500. },
  101501. "STAR_BY_IDCARD": function() {
  101502. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  101503. return formula_default.error.na;
  101504. }
  101505. for (var i2 = 0; i2 < arguments.length; i2++) {
  101506. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  101507. if (!p[0]) {
  101508. return formula_default.error.v;
  101509. }
  101510. }
  101511. try {
  101512. var UUserCard = func_methods_default.getFirstValue(arguments[0]);
  101513. if (valueIsError(UUserCard)) {
  101514. return UUserCard;
  101515. }
  101516. if (!window.luckysheet_function.ISIDCARD.f(UUserCard)) {
  101517. return formula_default.error.v;
  101518. }
  101519. var birthday = window.luckysheet_function.BIRTHDAY_BY_IDCARD.f(UUserCard);
  101520. if (valueIsError(birthday)) {
  101521. return birthday;
  101522. }
  101523. birthday = new Date(birthday);
  101524. var month = birthday.getMonth(), day = birthday.getDate();
  101525. var d = new Date(1999, month, day, 0, 0, 0);
  101526. var arr = [];
  101527. arr.push(["\u9B54\u7FAF\u5EA7", new Date(1999, 0, 1, 0, 0, 0)]);
  101528. arr.push(["\u6C34\u74F6\u5EA7", new Date(1999, 0, 20, 0, 0, 0)]);
  101529. arr.push(["\u53CC\u9C7C\u5EA7", new Date(1999, 1, 19, 0, 0, 0)]);
  101530. arr.push(["\u767D\u7F8A\u5EA7", new Date(1999, 2, 21, 0, 0, 0)]);
  101531. arr.push(["\u91D1\u725B\u5EA7", new Date(1999, 3, 21, 0, 0, 0)]);
  101532. arr.push(["\u53CC\u5B50\u5EA7", new Date(1999, 4, 21, 0, 0, 0)]);
  101533. arr.push(["\u5DE8\u87F9\u5EA7", new Date(1999, 5, 22, 0, 0, 0)]);
  101534. arr.push(["\u72EE\u5B50\u5EA7", new Date(1999, 6, 23, 0, 0, 0)]);
  101535. arr.push(["\u5904\u5973\u5EA7", new Date(1999, 7, 23, 0, 0, 0)]);
  101536. arr.push(["\u5929\u79E4\u5EA7", new Date(1999, 8, 23, 0, 0, 0)]);
  101537. arr.push(["\u5929\u874E\u5EA7", new Date(1999, 9, 23, 0, 0, 0)]);
  101538. arr.push(["\u5C04\u624B\u5EA7", new Date(1999, 10, 22, 0, 0, 0)]);
  101539. arr.push(["\u9B54\u7FAF\u5EA7", new Date(1999, 11, 22, 0, 0, 0)]);
  101540. for (var i2 = arr.length - 1; i2 >= 0; i2--) {
  101541. if (d >= arr[i2][1]) {
  101542. return arr[i2][0];
  101543. }
  101544. }
  101545. return "\u672A\u627E\u5230\u5339\u914D\u661F\u5EA7\u4FE1\u606F";
  101546. } catch (e) {
  101547. var err = e;
  101548. err = formula_default.errorInfo(err);
  101549. return [formula_default.error.v, err];
  101550. }
  101551. },
  101552. "ANIMAL_BY_IDCARD": function() {
  101553. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  101554. return formula_default.error.na;
  101555. }
  101556. for (var i2 = 0; i2 < arguments.length; i2++) {
  101557. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  101558. if (!p[0]) {
  101559. return formula_default.error.v;
  101560. }
  101561. }
  101562. try {
  101563. var UUserCard = func_methods_default.getFirstValue(arguments[0]);
  101564. if (valueIsError(UUserCard)) {
  101565. return UUserCard;
  101566. }
  101567. if (!window.luckysheet_function.ISIDCARD.f(UUserCard)) {
  101568. return formula_default.error.v;
  101569. }
  101570. var birthday = window.luckysheet_function.BIRTHDAY_BY_IDCARD.f(UUserCard);
  101571. if (valueIsError(birthday)) {
  101572. return birthday;
  101573. }
  101574. birthday = new Date(birthday);
  101575. var list = new Array("\u732A", "\u9F20", "\u725B", "\u864E", "\u5154", "\u9F99", "\u86C7", "\u9A6C", "\u7F8A", "\u7334", "\u9E21", "\u72D7");
  101576. var index2 = (parseInt(birthday.getFullYear()) + 9) % 12;
  101577. if (index2 != null && !isNaN(index2)) {
  101578. return list[index2];
  101579. } else {
  101580. return "\u672A\u627E\u5230\u5339\u914D\u751F\u8096\u4FE1\u606F";
  101581. }
  101582. } catch (e) {
  101583. var err = e;
  101584. err = formula_default.errorInfo(err);
  101585. return [formula_default.error.v, err];
  101586. }
  101587. },
  101588. "ISIDCARD": function() {
  101589. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  101590. return formula_default.error.na;
  101591. }
  101592. for (var i2 = 0; i2 < arguments.length; i2++) {
  101593. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  101594. if (!p[0]) {
  101595. return formula_default.error.v;
  101596. }
  101597. }
  101598. try {
  101599. var idcard = func_methods_default.getFirstValue(arguments[0]);
  101600. if (valueIsError(idcard)) {
  101601. return idcard;
  101602. }
  101603. var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
  101604. if (reg.test(idcard)) {
  101605. return true;
  101606. } else {
  101607. return false;
  101608. }
  101609. } catch (e) {
  101610. var err = e;
  101611. err = formula_default.errorInfo(err);
  101612. return [formula_default.error.v, err];
  101613. }
  101614. },
  101615. "DM_TEXT_CUTWORD": function() {
  101616. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  101617. return formula_default.error.na;
  101618. }
  101619. for (var i2 = 0; i2 < arguments.length; i2++) {
  101620. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  101621. if (!p[0]) {
  101622. return formula_default.error.v;
  101623. }
  101624. }
  101625. try {
  101626. var cell_r = window.luckysheetCurrentRow;
  101627. var cell_c = window.luckysheetCurrentColumn;
  101628. var cell_fp = window.luckysheetCurrentFunction;
  101629. var text = func_methods_default.getFirstValue(arguments[0], "text");
  101630. if (valueIsError(text)) {
  101631. return text;
  101632. }
  101633. var datetype = 0;
  101634. if (arguments[1] != null) {
  101635. datetype = func_methods_default.getFirstValue(arguments[1]);
  101636. if (valueIsError(datetype)) {
  101637. return datetype;
  101638. }
  101639. }
  101640. if (!isRealNum(datetype)) {
  101641. return formula_default.error.v;
  101642. }
  101643. datetype = parseInt(datetype);
  101644. if (datetype != 0 && datetype != 1 && datetype != 2) {
  101645. return formula_default.error.v;
  101646. }
  101647. $.post("/dataqk/tu/api/cutword", {
  101648. "text": text,
  101649. "type": datetype
  101650. }, function(data) {
  101651. var d = [].concat(store_default.flowdata);
  101652. formula_default.execFunctionGroup(cell_r, cell_c, data);
  101653. d[cell_r][cell_c] = {
  101654. "v": data,
  101655. "f": cell_fp
  101656. };
  101657. jfrefreshgrid(d, [{"row": [cell_r, cell_r], "column": [cell_c, cell_c]}]);
  101658. });
  101659. return "loading...";
  101660. } catch (e) {
  101661. var err = e;
  101662. err = formula_default.errorInfo(err);
  101663. return [formula_default.error.v, err];
  101664. }
  101665. },
  101666. "DM_TEXT_TFIDF": function() {
  101667. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  101668. return formula_default.error.na;
  101669. }
  101670. for (var i2 = 0; i2 < arguments.length; i2++) {
  101671. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  101672. if (!p[0]) {
  101673. return formula_default.error.v;
  101674. }
  101675. }
  101676. try {
  101677. var cell_r = window.luckysheetCurrentRow;
  101678. var cell_c = window.luckysheetCurrentColumn;
  101679. var cell_fp = window.luckysheetCurrentFunction;
  101680. var text = func_methods_default.getFirstValue(arguments[0], "text");
  101681. if (valueIsError(text)) {
  101682. return text;
  101683. }
  101684. var count = 20;
  101685. if (arguments[1] != null) {
  101686. count = func_methods_default.getFirstValue(arguments[1]);
  101687. if (valueIsError(count)) {
  101688. return count;
  101689. }
  101690. }
  101691. if (!isRealNum(count)) {
  101692. return formula_default.error.v;
  101693. }
  101694. count = parseInt(count);
  101695. var set = 0;
  101696. if (arguments[2] != null) {
  101697. set = func_methods_default.getFirstValue(arguments[2]);
  101698. if (valueIsError(set)) {
  101699. return set;
  101700. }
  101701. }
  101702. if (!isRealNum(set)) {
  101703. return formula_default.error.v;
  101704. }
  101705. set = parseInt(set);
  101706. if (count < 0) {
  101707. return formula_default.error.v;
  101708. }
  101709. if (set != 0 && set != 1 && set != 2) {
  101710. return formula_default.error.v;
  101711. }
  101712. $.post("/dataqk/tu/api/tfidf", {
  101713. "text": text,
  101714. "count": count,
  101715. "set": set
  101716. }, function(data) {
  101717. var d = editor_default.deepCopyFlowData(store_default.flowdata);
  101718. formula_default.execFunctionGroup(cell_r, cell_c, data);
  101719. d[cell_r][cell_c] = {
  101720. "v": data,
  101721. "f": cell_fp
  101722. };
  101723. jfrefreshgrid(d, [{"row": [cell_r, cell_r], "column": [cell_c, cell_c]}]);
  101724. });
  101725. return "loading...";
  101726. } catch (e) {
  101727. var err = e;
  101728. err = formula_default.errorInfo(err);
  101729. return [formula_default.error.v, err];
  101730. }
  101731. },
  101732. "DM_TEXT_TEXTRANK": function() {
  101733. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  101734. return formula_default.error.na;
  101735. }
  101736. for (var i2 = 0; i2 < arguments.length; i2++) {
  101737. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  101738. if (!p[0]) {
  101739. return formula_default.error.v;
  101740. }
  101741. }
  101742. try {
  101743. var cell_r = window.luckysheetCurrentRow;
  101744. var cell_c = window.luckysheetCurrentColumn;
  101745. var cell_fp = window.luckysheetCurrentFunction;
  101746. var text = func_methods_default.getFirstValue(arguments[0], "text");
  101747. if (valueIsError(text)) {
  101748. return text;
  101749. }
  101750. var count = 20;
  101751. if (arguments[1] != null) {
  101752. count = func_methods_default.getFirstValue(arguments[1]);
  101753. if (valueIsError(count)) {
  101754. return count;
  101755. }
  101756. }
  101757. if (!isRealNum(count)) {
  101758. return formula_default.error.v;
  101759. }
  101760. count = parseInt(count);
  101761. var set = 0;
  101762. if (arguments[2] != null) {
  101763. set = func_methods_default.getFirstValue(arguments[2]);
  101764. if (valueIsError(set)) {
  101765. return set;
  101766. }
  101767. }
  101768. if (!isRealNum(set)) {
  101769. return formula_default.error.v;
  101770. }
  101771. set = parseInt(set);
  101772. if (count < 0) {
  101773. return formula_default.error.v;
  101774. }
  101775. if (set != 0 && set != 1 && set != 2) {
  101776. return formula_default.error.v;
  101777. }
  101778. $.post("/dataqk/tu/api/tfidf", {
  101779. "text": text,
  101780. "count": count,
  101781. "set": set
  101782. }, function(data) {
  101783. var d = editor_default.deepCopyFlowData(store_default.flowdata);
  101784. formula_default.execFunctionGroup(cell_r, cell_c, data);
  101785. d[cell_r][cell_c] = {
  101786. "v": data,
  101787. "f": cell_fp
  101788. };
  101789. jfrefreshgrid(d, [{"row": [cell_r, cell_r], "column": [cell_c, cell_c]}]);
  101790. });
  101791. return "loading...";
  101792. } catch (e) {
  101793. var err = e;
  101794. err = formula_default.errorInfo(err);
  101795. return [formula_default.error.v, err];
  101796. }
  101797. },
  101798. "DATA_CN_STOCK_CLOSE": function() {
  101799. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  101800. return formula_default.error.na;
  101801. }
  101802. for (var i2 = 0; i2 < arguments.length; i2++) {
  101803. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  101804. if (!p[0]) {
  101805. return formula_default.error.v;
  101806. }
  101807. }
  101808. try {
  101809. var cell_r = window.luckysheetCurrentRow;
  101810. var cell_c = window.luckysheetCurrentColumn;
  101811. var cell_fp = window.luckysheetCurrentFunction;
  101812. var stockcode = func_methods_default.getFirstValue(arguments[0]);
  101813. if (valueIsError(stockcode)) {
  101814. return stockcode;
  101815. }
  101816. var date = null;
  101817. if (arguments[1] != null) {
  101818. var data_date = arguments[1];
  101819. if (getObjType(data_date) == "array") {
  101820. return formula_default.error.v;
  101821. } else if (getObjType(data_date) == "object" && data_date.startCell != null) {
  101822. if (data_date.data != null && getObjType(data_date.data) != "array" && data_date.data.ct != null && data_date.data.ct.t == "d") {
  101823. date = update("yyyy-mm-dd", data_date.data.v);
  101824. } else {
  101825. return formula_default.error.v;
  101826. }
  101827. } else {
  101828. date = data_date;
  101829. }
  101830. if (!isdatetime(date)) {
  101831. return [formula_default.error.v, "\u65E5\u671F\u9519\u8BEF"];
  101832. }
  101833. date = (0, import_dayjs8.default)(date).format("YYYY-MM-DD");
  101834. }
  101835. var price = 0;
  101836. if (arguments[2] != null) {
  101837. price = func_methods_default.getFirstValue(arguments[2]);
  101838. if (valueIsError(price)) {
  101839. return price;
  101840. }
  101841. }
  101842. if (!isRealNum(price)) {
  101843. return formula_default.error.v;
  101844. }
  101845. price = parseInt(price);
  101846. if (price != 0 && price != 1 && price != 2) {
  101847. return formula_default.error.v;
  101848. }
  101849. $.post("/dataqk/tu/api/getstockinfo", {
  101850. "stockCode": stockcode,
  101851. "date": date,
  101852. "price": price,
  101853. type: "0"
  101854. }, function(data) {
  101855. var d = editor_default.deepCopyFlowData(store_default.flowdata);
  101856. var v = numFormat2(data);
  101857. if (v == null) {
  101858. v = data;
  101859. }
  101860. formula_default.execFunctionGroup(cell_r, cell_c, v);
  101861. d[cell_r][cell_c] = {
  101862. "v": v,
  101863. "f": cell_fp
  101864. };
  101865. jfrefreshgrid(d, [{"row": [cell_r, cell_r], "column": [cell_c, cell_c]}]);
  101866. });
  101867. return "loading...";
  101868. } catch (e) {
  101869. var err = e;
  101870. err = formula_default.errorInfo(err);
  101871. return [formula_default.error.v, err];
  101872. }
  101873. },
  101874. "DATA_CN_STOCK_OPEN": function() {
  101875. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  101876. return formula_default.error.na;
  101877. }
  101878. for (var i2 = 0; i2 < arguments.length; i2++) {
  101879. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  101880. if (!p[0]) {
  101881. return formula_default.error.v;
  101882. }
  101883. }
  101884. try {
  101885. var cell_r = window.luckysheetCurrentRow;
  101886. var cell_c = window.luckysheetCurrentColumn;
  101887. var cell_fp = window.luckysheetCurrentFunction;
  101888. var stockcode = func_methods_default.getFirstValue(arguments[0]);
  101889. if (valueIsError(stockcode)) {
  101890. return stockcode;
  101891. }
  101892. var date = null;
  101893. if (arguments[1] != null) {
  101894. var data_date = arguments[1];
  101895. if (getObjType(data_date) == "array") {
  101896. return formula_default.error.v;
  101897. } else if (getObjType(data_date) == "object" && data_date.startCell != null) {
  101898. if (data_date.data != null && getObjType(data_date.data) != "array" && data_date.data.ct != null && data_date.data.ct.t == "d") {
  101899. date = update("yyyy-mm-dd", data_date.data.v);
  101900. } else {
  101901. return formula_default.error.v;
  101902. }
  101903. } else {
  101904. date = data_date;
  101905. }
  101906. if (!isdatetime(date)) {
  101907. return [formula_default.error.v, "\u65E5\u671F\u9519\u8BEF"];
  101908. }
  101909. date = (0, import_dayjs8.default)(date).format("YYYY-MM-DD");
  101910. }
  101911. var price = 0;
  101912. if (arguments[2] != null) {
  101913. price = func_methods_default.getFirstValue(arguments[2]);
  101914. if (valueIsError(price)) {
  101915. return price;
  101916. }
  101917. }
  101918. if (!isRealNum(price)) {
  101919. return formula_default.error.v;
  101920. }
  101921. price = parseInt(price);
  101922. if (price != 0 && price != 1 && price != 2) {
  101923. return formula_default.error.v;
  101924. }
  101925. $.post("/dataqk/tu/api/getstockinfo", {
  101926. "stockCode": stockcode,
  101927. "date": date,
  101928. "price": price,
  101929. type: "1"
  101930. }, function(data) {
  101931. var d = editor_default.deepCopyFlowData(store_default.flowdata);
  101932. formula_default.execFunctionGroup(cell_r, cell_c, data);
  101933. d[cell_r][cell_c] = {
  101934. "v": data,
  101935. "f": cell_fp
  101936. };
  101937. jfrefreshgrid(d, [{"row": [cell_r, cell_r], "column": [cell_c, cell_c]}]);
  101938. });
  101939. return "loading...";
  101940. } catch (e) {
  101941. var err = e;
  101942. err = formula_default.errorInfo(err);
  101943. return [formula_default.error.v, err];
  101944. }
  101945. },
  101946. "DATA_CN_STOCK_MAX": function() {
  101947. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  101948. return formula_default.error.na;
  101949. }
  101950. for (var i2 = 0; i2 < arguments.length; i2++) {
  101951. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  101952. if (!p[0]) {
  101953. return formula_default.error.v;
  101954. }
  101955. }
  101956. try {
  101957. var cell_r = window.luckysheetCurrentRow;
  101958. var cell_c = window.luckysheetCurrentColumn;
  101959. var cell_fp = window.luckysheetCurrentFunction;
  101960. var stockcode = func_methods_default.getFirstValue(arguments[0]);
  101961. if (valueIsError(stockcode)) {
  101962. return stockcode;
  101963. }
  101964. var date = null;
  101965. if (arguments[1] != null) {
  101966. var data_date = arguments[1];
  101967. if (getObjType(data_date) == "array") {
  101968. return formula_default.error.v;
  101969. } else if (getObjType(data_date) == "object" && data_date.startCell != null) {
  101970. if (data_date.data != null && getObjType(data_date.data) != "array" && data_date.data.ct != null && data_date.data.ct.t == "d") {
  101971. date = update("yyyy-mm-dd", data_date.data.v);
  101972. } else {
  101973. return formula_default.error.v;
  101974. }
  101975. } else {
  101976. date = data_date;
  101977. }
  101978. if (!isdatetime(date)) {
  101979. return [formula_default.error.v, "\u65E5\u671F\u9519\u8BEF"];
  101980. }
  101981. date = (0, import_dayjs8.default)(date).format("YYYY-MM-DD");
  101982. }
  101983. var price = 0;
  101984. if (arguments[2] != null) {
  101985. price = func_methods_default.getFirstValue(arguments[2]);
  101986. if (valueIsError(price)) {
  101987. return price;
  101988. }
  101989. }
  101990. if (!isRealNum(price)) {
  101991. return formula_default.error.v;
  101992. }
  101993. price = parseInt(price);
  101994. if (price != 0 && price != 1 && price != 2) {
  101995. return formula_default.error.v;
  101996. }
  101997. $.post("/dataqk/tu/api/getstockinfo", {
  101998. "stockCode": stockcode,
  101999. "date": date,
  102000. "price": price,
  102001. type: "2"
  102002. }, function(data) {
  102003. var d = editor_default.deepCopyFlowData(store_default.flowdata);
  102004. formula_default.execFunctionGroup(cell_r, cell_c, data);
  102005. d[cell_r][cell_c] = {
  102006. "v": data,
  102007. "f": cell_fp
  102008. };
  102009. jfrefreshgrid(d, [{"row": [cell_r, cell_r], "column": [cell_c, cell_c]}]);
  102010. });
  102011. return "loading...";
  102012. } catch (e) {
  102013. var err = e;
  102014. err = formula_default.errorInfo(err);
  102015. return [formula_default.error.v, err];
  102016. }
  102017. },
  102018. "DATA_CN_STOCK_MIN": function() {
  102019. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  102020. return formula_default.error.na;
  102021. }
  102022. for (var i2 = 0; i2 < arguments.length; i2++) {
  102023. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  102024. if (!p[0]) {
  102025. return formula_default.error.v;
  102026. }
  102027. }
  102028. try {
  102029. var cell_r = window.luckysheetCurrentRow;
  102030. var cell_c = window.luckysheetCurrentColumn;
  102031. var cell_fp = window.luckysheetCurrentFunction;
  102032. var stockcode = func_methods_default.getFirstValue(arguments[0]);
  102033. if (valueIsError(stockcode)) {
  102034. return stockcode;
  102035. }
  102036. var date = null;
  102037. if (arguments[1] != null) {
  102038. var data_date = arguments[1];
  102039. if (getObjType(data_date) == "array") {
  102040. return formula_default.error.v;
  102041. } else if (getObjType(data_date) == "object" && data_date.startCell != null) {
  102042. if (data_date.data != null && getObjType(data_date.data) != "array" && data_date.data.ct != null && data_date.data.ct.t == "d") {
  102043. date = update("yyyy-mm-dd", data_date.data.v);
  102044. } else {
  102045. return formula_default.error.v;
  102046. }
  102047. } else {
  102048. date = data_date;
  102049. }
  102050. if (!isdatetime(date)) {
  102051. return [formula_default.error.v, "\u65E5\u671F\u9519\u8BEF"];
  102052. }
  102053. date = (0, import_dayjs8.default)(date).format("YYYY-MM-DD");
  102054. }
  102055. var price = 0;
  102056. if (arguments[2] != null) {
  102057. price = func_methods_default.getFirstValue(arguments[2]);
  102058. if (valueIsError(price)) {
  102059. return price;
  102060. }
  102061. }
  102062. if (!isRealNum(price)) {
  102063. return formula_default.error.v;
  102064. }
  102065. price = parseInt(price);
  102066. if (price != 0 && price != 1 && price != 2) {
  102067. return formula_default.error.v;
  102068. }
  102069. $.post("/dataqk/tu/api/getstockinfo", {
  102070. "stockCode": stockcode,
  102071. "date": date,
  102072. "price": price,
  102073. type: "3"
  102074. }, function(data) {
  102075. var d = editor_default.deepCopyFlowData(store_default.flowdata);
  102076. formula_default.execFunctionGroup(cell_r, cell_c, data);
  102077. d[cell_r][cell_c] = {
  102078. "v": data,
  102079. "f": cell_fp
  102080. };
  102081. jfrefreshgrid(d, [{"row": [cell_r, cell_r], "column": [cell_c, cell_c]}]);
  102082. });
  102083. return "loading...";
  102084. } catch (e) {
  102085. var err = e;
  102086. err = formula_default.errorInfo(err);
  102087. return [formula_default.error.v, err];
  102088. }
  102089. },
  102090. "DATA_CN_STOCK_VOLUMN": function() {
  102091. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  102092. return formula_default.error.na;
  102093. }
  102094. for (var i2 = 0; i2 < arguments.length; i2++) {
  102095. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  102096. if (!p[0]) {
  102097. return formula_default.error.v;
  102098. }
  102099. }
  102100. try {
  102101. var cell_r = window.luckysheetCurrentRow;
  102102. var cell_c = window.luckysheetCurrentColumn;
  102103. var cell_fp = window.luckysheetCurrentFunction;
  102104. var stockcode = func_methods_default.getFirstValue(arguments[0]);
  102105. if (valueIsError(stockcode)) {
  102106. return stockcode;
  102107. }
  102108. var date = null;
  102109. if (arguments[1] != null) {
  102110. var data_date = arguments[1];
  102111. if (getObjType(data_date) == "array") {
  102112. return formula_default.error.v;
  102113. } else if (getObjType(data_date) == "object" && data_date.startCell != null) {
  102114. if (data_date.data != null && getObjType(data_date.data) != "array" && data_date.data.ct != null && data_date.data.ct.t == "d") {
  102115. date = update("yyyy-mm-dd", data_date.data.v);
  102116. } else {
  102117. return formula_default.error.v;
  102118. }
  102119. } else {
  102120. date = data_date;
  102121. }
  102122. if (!isdatetime(date)) {
  102123. return [formula_default.error.v, "\u65E5\u671F\u9519\u8BEF"];
  102124. }
  102125. date = (0, import_dayjs8.default)(date).format("YYYY-MM-DD");
  102126. }
  102127. var price = 0;
  102128. if (arguments[2] != null) {
  102129. price = func_methods_default.getFirstValue(arguments[2]);
  102130. if (valueIsError(price)) {
  102131. return price;
  102132. }
  102133. }
  102134. if (!isRealNum(price)) {
  102135. return formula_default.error.v;
  102136. }
  102137. price = parseInt(price);
  102138. if (price != 0 && price != 1 && price != 2) {
  102139. return formula_default.error.v;
  102140. }
  102141. $.post("/dataqk/tu/api/getstockinfo", {
  102142. "stockCode": stockcode,
  102143. "date": date,
  102144. "price": price,
  102145. type: "4"
  102146. }, function(data) {
  102147. var d = editor_default.deepCopyFlowData(store_default.flowdata);
  102148. formula_default.execFunctionGroup(cell_r, cell_c, data);
  102149. d[cell_r][cell_c] = {
  102150. "v": data,
  102151. "f": cell_fp
  102152. };
  102153. jfrefreshgrid(d, [{"row": [cell_r, cell_r], "column": [cell_c, cell_c]}]);
  102154. });
  102155. return "loading...";
  102156. } catch (e) {
  102157. var err = e;
  102158. err = formula_default.errorInfo(err);
  102159. return [formula_default.error.v, err];
  102160. }
  102161. },
  102162. "DATA_CN_STOCK_AMOUNT": function() {
  102163. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  102164. return formula_default.error.na;
  102165. }
  102166. for (var i2 = 0; i2 < arguments.length; i2++) {
  102167. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  102168. if (!p[0]) {
  102169. return formula_default.error.v;
  102170. }
  102171. }
  102172. try {
  102173. var cell_r = window.luckysheetCurrentRow;
  102174. var cell_c = window.luckysheetCurrentColumn;
  102175. var cell_fp = window.luckysheetCurrentFunction;
  102176. var stockcode = func_methods_default.getFirstValue(arguments[0]);
  102177. if (valueIsError(stockcode)) {
  102178. return stockcode;
  102179. }
  102180. var date = null;
  102181. if (arguments[1] != null) {
  102182. var data_date = arguments[1];
  102183. if (getObjType(data_date) == "array") {
  102184. return formula_default.error.v;
  102185. } else if (getObjType(data_date) == "object" && data_date.startCell != null) {
  102186. if (data_date.data != null && getObjType(data_date.data) != "array" && data_date.data.ct != null && data_date.data.ct.t == "d") {
  102187. date = update("yyyy-mm-dd", data_date.data.v);
  102188. } else {
  102189. return formula_default.error.v;
  102190. }
  102191. } else {
  102192. date = data_date;
  102193. }
  102194. if (!isdatetime(date)) {
  102195. return [formula_default.error.v, "\u65E5\u671F\u9519\u8BEF"];
  102196. }
  102197. date = (0, import_dayjs8.default)(date).format("YYYY-MM-DD");
  102198. }
  102199. var price = 0;
  102200. if (arguments[2] != null) {
  102201. price = func_methods_default.getFirstValue(arguments[2]);
  102202. if (valueIsError(price)) {
  102203. return price;
  102204. }
  102205. }
  102206. if (!isRealNum(price)) {
  102207. return formula_default.error.v;
  102208. }
  102209. price = parseInt(price);
  102210. if (price != 0 && price != 1 && price != 2) {
  102211. return formula_default.error.v;
  102212. }
  102213. $.post("/dataqk/tu/api/getstockinfo", {
  102214. "stockCode": stockcode,
  102215. "date": date,
  102216. "price": price,
  102217. type: "5"
  102218. }, function(data) {
  102219. var d = editor_default.deepCopyFlowData(store_default.flowdata);
  102220. formula_default.execFunctionGroup(cell_r, cell_c, data);
  102221. d[cell_r][cell_c] = {
  102222. "v": data,
  102223. "f": cell_fp
  102224. };
  102225. jfrefreshgrid(d, [{"row": [cell_r, cell_r], "column": [cell_c, cell_c]}]);
  102226. });
  102227. return "loading...";
  102228. } catch (e) {
  102229. var err = e;
  102230. err = formula_default.errorInfo(err);
  102231. return [formula_default.error.v, err];
  102232. }
  102233. },
  102234. "ISDATE": function() {
  102235. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  102236. return formula_default.error.na;
  102237. }
  102238. for (var i2 = 0; i2 < arguments.length; i2++) {
  102239. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  102240. if (!p[0]) {
  102241. return formula_default.error.v;
  102242. }
  102243. }
  102244. try {
  102245. var date = func_methods_default.getFirstValue(arguments[0], "text");
  102246. if (valueIsError(date)) {
  102247. return date;
  102248. }
  102249. return isdatetime(date);
  102250. } catch (e) {
  102251. var err = e;
  102252. err = formula_default.errorInfo(err);
  102253. return [formula_default.error.v, err];
  102254. }
  102255. },
  102256. "SUMIF": function() {
  102257. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  102258. return formula_default.error.na;
  102259. }
  102260. for (var i2 = 0; i2 < arguments.length; i2++) {
  102261. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  102262. if (!p[0]) {
  102263. return formula_default.error.v;
  102264. }
  102265. }
  102266. try {
  102267. var sum = 0;
  102268. var rangeData = arguments[0].data;
  102269. var rangeRow = arguments[0].rowl;
  102270. var rangeCol = arguments[0].coll;
  102271. var criteria = luckysheet_parseData(arguments[1]);
  102272. rangeData = formula_default.getRangeArray(rangeData)[0];
  102273. if (arguments[2]) {
  102274. var sumRangeData = [];
  102275. var sumRangeStart = arguments[2].startCell;
  102276. var sumRangeRow = arguments[2].rowl;
  102277. var sumRangeCol = arguments[2].coll;
  102278. var sumRangeSheet = arguments[2].sheetName;
  102279. if (rangeRow == sumRangeRow && rangeCol == sumRangeCol) {
  102280. sumRangeData = arguments[2].data;
  102281. } else {
  102282. var row = [], col = [];
  102283. var sumRangeEnd = "";
  102284. var realSumRange = "";
  102285. row[0] = parseInt(sumRangeStart.replace(/[^0-9]/g, "")) - 1;
  102286. col[0] = ABCatNum(sumRangeStart.replace(/[^A-Za-z]/g, ""));
  102287. row[1] = row[0] + rangeRow - 1;
  102288. col[1] = col[0] + rangeCol - 1;
  102289. var real_ABC = chatatABC(col[1]);
  102290. var real_Num = row[1] + 1;
  102291. sumRangeEnd = real_ABC + real_Num;
  102292. realSumRange = sumRangeSheet + "!" + sumRangeStart + ":" + sumRangeEnd;
  102293. sumRangeData = luckysheet_getcelldata(realSumRange).data;
  102294. }
  102295. sumRangeData = formula_default.getRangeArray(sumRangeData)[0];
  102296. for (var i2 = 0; i2 < rangeData.length; i2++) {
  102297. var v = rangeData[i2];
  102298. if (!!v && formula_default.acompareb(v, criteria)) {
  102299. if (!isRealNum(sumRangeData[i2])) {
  102300. continue;
  102301. }
  102302. sum = luckysheet_calcADPMM(sum, "+", sumRangeData[i2]);
  102303. }
  102304. }
  102305. } else {
  102306. for (var i2 = 0; i2 < rangeData.length; i2++) {
  102307. var v = rangeData[i2];
  102308. if (!!v && formula_default.acompareb(v, criteria)) {
  102309. if (!isRealNum(v)) {
  102310. continue;
  102311. }
  102312. sum = luckysheet_calcADPMM(sum, "", v);
  102313. }
  102314. }
  102315. }
  102316. return sum;
  102317. } catch (e) {
  102318. var err = e;
  102319. err = formula_default.errorInfo(err);
  102320. return [formula_default.error.v, err];
  102321. }
  102322. },
  102323. "TAN": function() {
  102324. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  102325. return formula_default.error.na;
  102326. }
  102327. for (var i2 = 0; i2 < arguments.length; i2++) {
  102328. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  102329. if (!p[0]) {
  102330. return formula_default.error.v;
  102331. }
  102332. }
  102333. try {
  102334. var number = func_methods_default.getFirstValue(arguments[0]);
  102335. if (valueIsError(number)) {
  102336. return number;
  102337. }
  102338. if (!isRealNum(number)) {
  102339. return formula_default.error.v;
  102340. }
  102341. number = parseFloat(number);
  102342. return Math.tan(number);
  102343. } catch (e) {
  102344. var err = e;
  102345. err = formula_default.errorInfo(err);
  102346. return [formula_default.error.v, err];
  102347. }
  102348. },
  102349. "TANH": function() {
  102350. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  102351. return formula_default.error.na;
  102352. }
  102353. for (var i2 = 0; i2 < arguments.length; i2++) {
  102354. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  102355. if (!p[0]) {
  102356. return formula_default.error.v;
  102357. }
  102358. }
  102359. try {
  102360. var number = func_methods_default.getFirstValue(arguments[0]);
  102361. if (valueIsError(number)) {
  102362. return number;
  102363. }
  102364. if (!isRealNum(number)) {
  102365. return formula_default.error.v;
  102366. }
  102367. number = parseFloat(number);
  102368. var e2 = Math.exp(2 * number);
  102369. return (e2 - 1) / (e2 + 1);
  102370. } catch (e) {
  102371. var err = e;
  102372. err = formula_default.errorInfo(err);
  102373. return [formula_default.error.v, err];
  102374. }
  102375. },
  102376. "CEILING": function() {
  102377. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  102378. return formula_default.error.na;
  102379. }
  102380. for (var i2 = 0; i2 < arguments.length; i2++) {
  102381. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  102382. if (!p[0]) {
  102383. return formula_default.error.v;
  102384. }
  102385. }
  102386. try {
  102387. var number = func_methods_default.getFirstValue(arguments[0]);
  102388. if (valueIsError(number)) {
  102389. return number;
  102390. }
  102391. if (!isRealNum(number)) {
  102392. return formula_default.error.v;
  102393. }
  102394. number = parseFloat(number);
  102395. var significance = func_methods_default.getFirstValue(arguments[1]);
  102396. if (valueIsError(significance)) {
  102397. return significance;
  102398. }
  102399. if (!isRealNum(significance)) {
  102400. return formula_default.error.v;
  102401. }
  102402. significance = parseFloat(significance);
  102403. if (significance == 0) {
  102404. return 0;
  102405. }
  102406. if (number > 0 && significance < 0) {
  102407. return formula_default.error.nm;
  102408. }
  102409. return Math.ceil(number / significance) * significance;
  102410. } catch (e) {
  102411. var err = e;
  102412. err = formula_default.errorInfo(err);
  102413. return [formula_default.error.v, err];
  102414. }
  102415. },
  102416. "ATAN": function() {
  102417. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  102418. return formula_default.error.na;
  102419. }
  102420. for (var i2 = 0; i2 < arguments.length; i2++) {
  102421. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  102422. if (!p[0]) {
  102423. return formula_default.error.v;
  102424. }
  102425. }
  102426. try {
  102427. var number = func_methods_default.getFirstValue(arguments[0]);
  102428. if (valueIsError(number)) {
  102429. return number;
  102430. }
  102431. if (!isRealNum(number)) {
  102432. return formula_default.error.v;
  102433. }
  102434. number = parseFloat(number);
  102435. return Math.atan(number);
  102436. } catch (e) {
  102437. var err = e;
  102438. err = formula_default.errorInfo(err);
  102439. return [formula_default.error.v, err];
  102440. }
  102441. },
  102442. "ASINH": function() {
  102443. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  102444. return formula_default.error.na;
  102445. }
  102446. for (var i2 = 0; i2 < arguments.length; i2++) {
  102447. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  102448. if (!p[0]) {
  102449. return formula_default.error.v;
  102450. }
  102451. }
  102452. try {
  102453. var number = func_methods_default.getFirstValue(arguments[0]);
  102454. if (valueIsError(number)) {
  102455. return number;
  102456. }
  102457. if (!isRealNum(number)) {
  102458. return formula_default.error.v;
  102459. }
  102460. number = parseFloat(number);
  102461. return Math.log(number + Math.sqrt(number * number + 1));
  102462. } catch (e) {
  102463. var err = e;
  102464. err = formula_default.errorInfo(err);
  102465. return [formula_default.error.v, err];
  102466. }
  102467. },
  102468. "ABS": function() {
  102469. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  102470. return formula_default.error.na;
  102471. }
  102472. for (var i2 = 0; i2 < arguments.length; i2++) {
  102473. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  102474. if (!p[0]) {
  102475. return formula_default.error.v;
  102476. }
  102477. }
  102478. try {
  102479. var number = func_methods_default.getFirstValue(arguments[0]);
  102480. if (valueIsError(number)) {
  102481. return number;
  102482. }
  102483. if (!isRealNum(number)) {
  102484. return formula_default.error.v;
  102485. }
  102486. number = parseFloat(number);
  102487. return Math.abs(number);
  102488. } catch (e) {
  102489. var err = e;
  102490. err = formula_default.errorInfo(err);
  102491. return [formula_default.error.v, err];
  102492. }
  102493. },
  102494. "ACOS": function() {
  102495. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  102496. return formula_default.error.na;
  102497. }
  102498. for (var i2 = 0; i2 < arguments.length; i2++) {
  102499. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  102500. if (!p[0]) {
  102501. return formula_default.error.v;
  102502. }
  102503. }
  102504. try {
  102505. var number = func_methods_default.getFirstValue(arguments[0]);
  102506. if (valueIsError(number)) {
  102507. return number;
  102508. }
  102509. if (!isRealNum(number)) {
  102510. return formula_default.error.v;
  102511. }
  102512. number = parseFloat(number);
  102513. if (number < -1 || number > 1) {
  102514. return formula_default.error.nm;
  102515. }
  102516. return Math.acos(number);
  102517. } catch (e) {
  102518. var err = e;
  102519. err = formula_default.errorInfo(err);
  102520. return [formula_default.error.v, err];
  102521. }
  102522. },
  102523. "ACOSH": function() {
  102524. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  102525. return formula_default.error.na;
  102526. }
  102527. for (var i2 = 0; i2 < arguments.length; i2++) {
  102528. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  102529. if (!p[0]) {
  102530. return formula_default.error.v;
  102531. }
  102532. }
  102533. try {
  102534. var number = func_methods_default.getFirstValue(arguments[0]);
  102535. if (valueIsError(number)) {
  102536. return number;
  102537. }
  102538. if (!isRealNum(number)) {
  102539. return formula_default.error.v;
  102540. }
  102541. number = parseFloat(number);
  102542. if (number < 1) {
  102543. return formula_default.error.nm;
  102544. }
  102545. return Math.log(number + Math.sqrt(number * number - 1));
  102546. } catch (e) {
  102547. var err = e;
  102548. err = formula_default.errorInfo(err);
  102549. return [formula_default.error.v, err];
  102550. }
  102551. },
  102552. "MULTINOMIAL": function() {
  102553. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  102554. return formula_default.error.na;
  102555. }
  102556. for (var i2 = 0; i2 < arguments.length; i2++) {
  102557. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  102558. if (!p[0]) {
  102559. return formula_default.error.v;
  102560. }
  102561. }
  102562. try {
  102563. var dataArr = [];
  102564. for (var i2 = 0; i2 < arguments.length; i2++) {
  102565. var data = arguments[i2];
  102566. if (getObjType(data) == "array") {
  102567. if (getObjType(data[0]) == "array" && !func_methods_default.isDyadicArr(data)) {
  102568. return formula_default.error.v;
  102569. }
  102570. dataArr = dataArr.concat(func_methods_default.getDataArr(data, true));
  102571. } else if (getObjType(data) == "object" && data.startCell != null) {
  102572. dataArr = dataArr.concat(func_methods_default.getCellDataArr(data, "number", true));
  102573. } else {
  102574. dataArr.push(data);
  102575. }
  102576. }
  102577. var sum = 0, divisor = 1;
  102578. for (var i2 = 0; i2 < dataArr.length; i2++) {
  102579. var number = dataArr[i2];
  102580. if (!isRealNum(number)) {
  102581. return formula_default.error.v;
  102582. }
  102583. number = parseFloat(number);
  102584. if (number < 0) {
  102585. return formula_default.error.nm;
  102586. }
  102587. sum += number;
  102588. divisor *= func_methods_default.factorial(number);
  102589. }
  102590. return func_methods_default.factorial(sum) / divisor;
  102591. } catch (e) {
  102592. var err = e;
  102593. err = formula_default.errorInfo(err);
  102594. return [formula_default.error.v, err];
  102595. }
  102596. },
  102597. "ATANH": function() {
  102598. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  102599. return formula_default.error.na;
  102600. }
  102601. for (var i2 = 0; i2 < arguments.length; i2++) {
  102602. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  102603. if (!p[0]) {
  102604. return formula_default.error.v;
  102605. }
  102606. }
  102607. try {
  102608. var number = func_methods_default.getFirstValue(arguments[0]);
  102609. if (valueIsError(number)) {
  102610. return number;
  102611. }
  102612. if (!isRealNum(number)) {
  102613. return formula_default.error.v;
  102614. }
  102615. number = parseFloat(number);
  102616. if (number <= -1 || number >= 1) {
  102617. return formula_default.error.nm;
  102618. }
  102619. return Math.log((1 + number) / (1 - number)) / 2;
  102620. } catch (e) {
  102621. var err = e;
  102622. err = formula_default.errorInfo(err);
  102623. return [formula_default.error.v, err];
  102624. }
  102625. },
  102626. "ATAN2": function() {
  102627. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  102628. return formula_default.error.na;
  102629. }
  102630. for (var i2 = 0; i2 < arguments.length; i2++) {
  102631. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  102632. if (!p[0]) {
  102633. return formula_default.error.v;
  102634. }
  102635. }
  102636. try {
  102637. var number_x = func_methods_default.getFirstValue(arguments[0]);
  102638. if (valueIsError(number_x)) {
  102639. return number_x;
  102640. }
  102641. if (!isRealNum(number_x)) {
  102642. return formula_default.error.v;
  102643. }
  102644. number_x = parseFloat(number_x);
  102645. var number_y = func_methods_default.getFirstValue(arguments[1]);
  102646. if (valueIsError(number_y)) {
  102647. return number_y;
  102648. }
  102649. if (!isRealNum(number_y)) {
  102650. return formula_default.error.v;
  102651. }
  102652. number_y = parseFloat(number_y);
  102653. if (number_x == 0 && number_y == 0) {
  102654. return formula_default.error.d;
  102655. }
  102656. return Math.atan2(number_y, number_x);
  102657. } catch (e) {
  102658. var err = e;
  102659. err = formula_default.errorInfo(err);
  102660. return [formula_default.error.v, err];
  102661. }
  102662. },
  102663. "COUNTBLANK": function() {
  102664. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  102665. return formula_default.error.na;
  102666. }
  102667. for (var i2 = 0; i2 < arguments.length; i2++) {
  102668. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  102669. if (!p[0]) {
  102670. return formula_default.error.v;
  102671. }
  102672. }
  102673. try {
  102674. var data = arguments[0];
  102675. var sum = 0;
  102676. if (getObjType(data) == "object" && data.startCell != null) {
  102677. if (data.data == null) {
  102678. return 1;
  102679. }
  102680. if (getObjType(data.data) == "array") {
  102681. for (var r2 = 0; r2 < data.data.length; r2++) {
  102682. for (var c2 = 0; c2 < data.data[r2].length; c2++) {
  102683. if (data.data[r2][c2] == null || isRealNull(data.data[r2][c2].v)) {
  102684. sum++;
  102685. }
  102686. }
  102687. }
  102688. } else {
  102689. if (isRealNull(data.data.v)) {
  102690. sum++;
  102691. }
  102692. }
  102693. }
  102694. return sum;
  102695. } catch (e) {
  102696. var err = e;
  102697. err = formula_default.errorInfo(err);
  102698. return [formula_default.error.v, err];
  102699. }
  102700. },
  102701. "COSH": function() {
  102702. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  102703. return formula_default.error.na;
  102704. }
  102705. for (var i2 = 0; i2 < arguments.length; i2++) {
  102706. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  102707. if (!p[0]) {
  102708. return formula_default.error.v;
  102709. }
  102710. }
  102711. try {
  102712. var number = func_methods_default.getFirstValue(arguments[0]);
  102713. if (valueIsError(number)) {
  102714. return number;
  102715. }
  102716. if (!isRealNum(number)) {
  102717. return formula_default.error.v;
  102718. }
  102719. number = parseFloat(number);
  102720. return (Math.exp(number) + Math.exp(-number)) / 2;
  102721. } catch (e) {
  102722. var err = e;
  102723. err = formula_default.errorInfo(err);
  102724. return [formula_default.error.v, err];
  102725. }
  102726. },
  102727. "INT": function() {
  102728. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  102729. return formula_default.error.na;
  102730. }
  102731. for (var i2 = 0; i2 < arguments.length; i2++) {
  102732. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  102733. if (!p[0]) {
  102734. return formula_default.error.v;
  102735. }
  102736. }
  102737. try {
  102738. var data = arguments[0];
  102739. if (getObjType(data) == "array") {
  102740. if (getObjType(data[0]) == "array") {
  102741. if (!func_methods_default.isDyadicArr(data)) {
  102742. return formula_default.error.v;
  102743. }
  102744. if (!isRealNum(data[0][0])) {
  102745. return formula_default.error.v;
  102746. }
  102747. return Math.floor(parseFloat(data[0][0]));
  102748. } else {
  102749. if (!isRealNum(data[0])) {
  102750. return formula_default.error.v;
  102751. }
  102752. return Math.floor(parseFloat(data[0]));
  102753. }
  102754. } else if (getObjType(data) == "object" && data.startCell != null) {
  102755. if (data.coll > 1) {
  102756. return formula_default.error.v;
  102757. }
  102758. if (data.rowl > 1) {
  102759. var cellrange = formula_default.getcellrange(data.startCell);
  102760. var str = cellrange.row[0];
  102761. if (window.luckysheetCurrentRow < str || window.luckysheetCurrentRow > str + data.rowl - 1) {
  102762. return formula_default.error.v;
  102763. }
  102764. var cell = data.data[window.luckysheetCurrentRow - str][0];
  102765. } else {
  102766. var cell = data.data;
  102767. }
  102768. if (cell == null || isRealNull(cell.v)) {
  102769. return 0;
  102770. }
  102771. if (!isRealNum(cell.v)) {
  102772. return formula_default.error.v;
  102773. }
  102774. return Math.floor(parseFloat(cell.v));
  102775. } else {
  102776. if (getObjType(data) == "boolean") {
  102777. if (data.toString().toLowerCase() == "true") {
  102778. return 1;
  102779. }
  102780. if (data.toString().toLowerCase() == "false") {
  102781. return 0;
  102782. }
  102783. }
  102784. if (!isRealNum(data)) {
  102785. return formula_default.error.v;
  102786. }
  102787. return Math.floor(parseFloat(data));
  102788. }
  102789. } catch (e) {
  102790. var err = e;
  102791. err = formula_default.errorInfo(err);
  102792. return [formula_default.error.v, err];
  102793. }
  102794. },
  102795. "ISEVEN": function() {
  102796. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  102797. return formula_default.error.na;
  102798. }
  102799. for (var i2 = 0; i2 < arguments.length; i2++) {
  102800. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  102801. if (!p[0]) {
  102802. return formula_default.error.v;
  102803. }
  102804. }
  102805. try {
  102806. var number = func_methods_default.getFirstValue(arguments[0]);
  102807. if (valueIsError(number)) {
  102808. return number;
  102809. }
  102810. if (!isRealNum(number)) {
  102811. return formula_default.error.v;
  102812. }
  102813. number = parseInt(number);
  102814. return Math.abs(number) & 1 ? false : true;
  102815. } catch (e) {
  102816. var err = e;
  102817. err = formula_default.errorInfo(err);
  102818. return [formula_default.error.v, err];
  102819. }
  102820. },
  102821. "ISODD": function() {
  102822. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  102823. return formula_default.error.na;
  102824. }
  102825. for (var i2 = 0; i2 < arguments.length; i2++) {
  102826. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  102827. if (!p[0]) {
  102828. return formula_default.error.v;
  102829. }
  102830. }
  102831. try {
  102832. var number = func_methods_default.getFirstValue(arguments[0]);
  102833. if (valueIsError(number)) {
  102834. return number;
  102835. }
  102836. if (!isRealNum(number)) {
  102837. return formula_default.error.v;
  102838. }
  102839. number = parseInt(number);
  102840. return Math.abs(number) & 1 ? true : false;
  102841. } catch (e) {
  102842. var err = e;
  102843. err = formula_default.errorInfo(err);
  102844. return [formula_default.error.v, err];
  102845. }
  102846. },
  102847. "LCM": function() {
  102848. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  102849. return formula_default.error.na;
  102850. }
  102851. for (var i2 = 0; i2 < arguments.length; i2++) {
  102852. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  102853. if (!p[0]) {
  102854. return formula_default.error.v;
  102855. }
  102856. }
  102857. try {
  102858. var o = [];
  102859. for (var i2 = 0; i2 < arguments.length; i2++) {
  102860. var data = arguments[i2];
  102861. if (getObjType(data) == "array") {
  102862. if (getObjType(data[0]) == "array") {
  102863. if (!func_methods_default.isDyadicArr(data)) {
  102864. return formula_default.error.v;
  102865. }
  102866. o = o.concat(func_methods_default.getDataArr(data));
  102867. } else {
  102868. o = o.concat(data);
  102869. }
  102870. } else if (getObjType(data) == "object" && data.startCell != null) {
  102871. o = o.concat(func_methods_default.getCellDataArr(data, "number", true));
  102872. } else {
  102873. o.push(data);
  102874. }
  102875. }
  102876. for (var y = 0; y < o.length; y++) {
  102877. var number = o[y];
  102878. if (!isRealNum(number)) {
  102879. return formula_default.error.v;
  102880. }
  102881. number = parseInt(number);
  102882. if (number < 0) {
  102883. return formula_default.error.nm;
  102884. }
  102885. o[y] = number;
  102886. }
  102887. for (var i2, j, n, d, r2 = 1; (n = o.pop()) !== void 0; ) {
  102888. if (n == 0) {
  102889. r2 = 0;
  102890. }
  102891. while (n > 1) {
  102892. if (n % 2) {
  102893. for (i2 = 3, j = Math.floor(Math.sqrt(n)); i2 <= j && n % i2; i2 += 2) {
  102894. }
  102895. d = i2 <= j ? i2 : n;
  102896. } else {
  102897. d = 2;
  102898. }
  102899. for (n /= d, r2 *= d, i2 = o.length; i2; o[--i2] % d === 0 && (o[i2] /= d) === 1 && o.splice(i2, 1)) {
  102900. }
  102901. }
  102902. }
  102903. if (r2 >= Math.pow(2, 53)) {
  102904. return formula_default.error.nm;
  102905. }
  102906. return r2;
  102907. } catch (e) {
  102908. var err = e;
  102909. err = formula_default.errorInfo(err);
  102910. return [formula_default.error.v, err];
  102911. }
  102912. },
  102913. "LN": function() {
  102914. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  102915. return formula_default.error.na;
  102916. }
  102917. for (var i2 = 0; i2 < arguments.length; i2++) {
  102918. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  102919. if (!p[0]) {
  102920. return formula_default.error.v;
  102921. }
  102922. }
  102923. try {
  102924. var number = func_methods_default.getFirstValue(arguments[0]);
  102925. if (valueIsError(number)) {
  102926. return number;
  102927. }
  102928. if (!isRealNum(number)) {
  102929. return formula_default.error.v;
  102930. }
  102931. number = parseFloat(number);
  102932. if (number <= 0) {
  102933. return formula_default.error.nm;
  102934. }
  102935. return Math.log(number);
  102936. } catch (e) {
  102937. var err = e;
  102938. err = formula_default.errorInfo(err);
  102939. return [formula_default.error.v, err];
  102940. }
  102941. },
  102942. "LOG": function() {
  102943. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  102944. return formula_default.error.na;
  102945. }
  102946. for (var i2 = 0; i2 < arguments.length; i2++) {
  102947. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  102948. if (!p[0]) {
  102949. return formula_default.error.v;
  102950. }
  102951. }
  102952. try {
  102953. var number = func_methods_default.getFirstValue(arguments[0]);
  102954. if (valueIsError(number)) {
  102955. return number;
  102956. }
  102957. if (!isRealNum(number)) {
  102958. return formula_default.error.v;
  102959. }
  102960. number = parseFloat(number);
  102961. if (number <= 0) {
  102962. return formula_default.error.nm;
  102963. }
  102964. if (arguments.length == 2) {
  102965. var base = func_methods_default.getFirstValue(arguments[1]);
  102966. if (valueIsError(base)) {
  102967. return base;
  102968. }
  102969. if (!isRealNum(base)) {
  102970. return formula_default.error.v;
  102971. }
  102972. base = parseFloat(base);
  102973. if (base <= 0) {
  102974. return formula_default.error.nm;
  102975. }
  102976. } else {
  102977. var base = 10;
  102978. }
  102979. return Math.log(number) / Math.log(base);
  102980. } catch (e) {
  102981. var err = e;
  102982. err = formula_default.errorInfo(err);
  102983. return [formula_default.error.v, err];
  102984. }
  102985. },
  102986. "LOG10": function() {
  102987. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  102988. return formula_default.error.na;
  102989. }
  102990. for (var i2 = 0; i2 < arguments.length; i2++) {
  102991. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  102992. if (!p[0]) {
  102993. return formula_default.error.v;
  102994. }
  102995. }
  102996. try {
  102997. var number = func_methods_default.getFirstValue(arguments[0]);
  102998. if (valueIsError(number)) {
  102999. return number;
  103000. }
  103001. if (!isRealNum(number)) {
  103002. return formula_default.error.v;
  103003. }
  103004. number = parseFloat(number);
  103005. if (number <= 0) {
  103006. return formula_default.error.nm;
  103007. }
  103008. return Math.log(number) / Math.log(10);
  103009. } catch (e) {
  103010. var err = e;
  103011. err = formula_default.errorInfo(err);
  103012. return [formula_default.error.v, err];
  103013. }
  103014. },
  103015. "MOD": function() {
  103016. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  103017. return formula_default.error.na;
  103018. }
  103019. for (var i2 = 0; i2 < arguments.length; i2++) {
  103020. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  103021. if (!p[0]) {
  103022. return formula_default.error.v;
  103023. }
  103024. }
  103025. try {
  103026. var number = func_methods_default.getFirstValue(arguments[0]);
  103027. if (valueIsError(number)) {
  103028. return number;
  103029. }
  103030. if (!isRealNum(number)) {
  103031. return formula_default.error.v;
  103032. }
  103033. number = parseFloat(number);
  103034. var divisor = func_methods_default.getFirstValue(arguments[1]);
  103035. if (valueIsError(divisor)) {
  103036. return divisor;
  103037. }
  103038. if (!isRealNum(divisor)) {
  103039. return formula_default.error.v;
  103040. }
  103041. divisor = parseFloat(divisor);
  103042. if (divisor == 0) {
  103043. return formula_default.error.d;
  103044. }
  103045. var modulus = Math.abs(number % divisor);
  103046. return divisor > 0 ? modulus : -modulus;
  103047. } catch (e) {
  103048. var err = e;
  103049. err = formula_default.errorInfo(err);
  103050. return [formula_default.error.v, err];
  103051. }
  103052. },
  103053. "MROUND": function() {
  103054. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  103055. return formula_default.error.na;
  103056. }
  103057. for (var i2 = 0; i2 < arguments.length; i2++) {
  103058. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  103059. if (!p[0]) {
  103060. return formula_default.error.v;
  103061. }
  103062. }
  103063. try {
  103064. var number = func_methods_default.getFirstValue(arguments[0]);
  103065. if (valueIsError(number)) {
  103066. return number;
  103067. }
  103068. if (!isRealNum(number)) {
  103069. return formula_default.error.v;
  103070. }
  103071. number = parseFloat(number);
  103072. var multiple = func_methods_default.getFirstValue(arguments[1]);
  103073. if (valueIsError(multiple)) {
  103074. return multiple;
  103075. }
  103076. if (!isRealNum(multiple)) {
  103077. return formula_default.error.v;
  103078. }
  103079. multiple = parseFloat(multiple);
  103080. if (number * multiple < 0) {
  103081. return formula_default.error.nm;
  103082. }
  103083. return Math.round(number / multiple) * multiple;
  103084. } catch (e) {
  103085. var err = e;
  103086. err = formula_default.errorInfo(err);
  103087. return [formula_default.error.v, err];
  103088. }
  103089. },
  103090. "ODD": function() {
  103091. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  103092. return formula_default.error.na;
  103093. }
  103094. for (var i2 = 0; i2 < arguments.length; i2++) {
  103095. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  103096. if (!p[0]) {
  103097. return formula_default.error.v;
  103098. }
  103099. }
  103100. try {
  103101. var number = func_methods_default.getFirstValue(arguments[0]);
  103102. if (valueIsError(number)) {
  103103. return number;
  103104. }
  103105. if (!isRealNum(number)) {
  103106. return formula_default.error.v;
  103107. }
  103108. number = parseFloat(number);
  103109. var temp = Math.ceil(Math.abs(number));
  103110. temp = temp & 1 ? temp : temp + 1;
  103111. return number >= 0 ? temp : -temp;
  103112. } catch (e) {
  103113. var err = e;
  103114. err = formula_default.errorInfo(err);
  103115. return [formula_default.error.v, err];
  103116. }
  103117. },
  103118. "SUMSQ": function() {
  103119. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  103120. return formula_default.error.na;
  103121. }
  103122. for (var i2 = 0; i2 < arguments.length; i2++) {
  103123. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  103124. if (!p[0]) {
  103125. return formula_default.error.v;
  103126. }
  103127. }
  103128. try {
  103129. var dataArr = [];
  103130. for (var i2 = 0; i2 < arguments.length; i2++) {
  103131. var data = arguments[i2];
  103132. if (getObjType(data) == "array") {
  103133. if (getObjType(data[0]) == "array" && !func_methods_default.isDyadicArr(data)) {
  103134. return formula_default.error.v;
  103135. }
  103136. dataArr = dataArr.concat(func_methods_default.getDataArr(data, true));
  103137. } else if (getObjType(data) == "object" && data.startCell != null) {
  103138. dataArr = dataArr.concat(func_methods_default.getCellDataArr(data, "number", true));
  103139. } else {
  103140. dataArr.push(data);
  103141. }
  103142. }
  103143. var sum = 0;
  103144. if (dataArr.length > 0) {
  103145. for (var i2 = 0; i2 < dataArr.length; i2++) {
  103146. var number = dataArr[i2];
  103147. if (!isRealNum(number)) {
  103148. return formula_default.error.v;
  103149. }
  103150. number = parseFloat(number);
  103151. sum += number * number;
  103152. }
  103153. }
  103154. return sum;
  103155. } catch (e) {
  103156. var err = e;
  103157. err = formula_default.errorInfo(err);
  103158. return [formula_default.error.v, err];
  103159. }
  103160. },
  103161. "COMBIN": function() {
  103162. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  103163. return formula_default.error.na;
  103164. }
  103165. for (var i2 = 0; i2 < arguments.length; i2++) {
  103166. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  103167. if (!p[0]) {
  103168. return formula_default.error.v;
  103169. }
  103170. }
  103171. try {
  103172. var number = func_methods_default.getFirstValue(arguments[0]);
  103173. if (valueIsError(number)) {
  103174. return number;
  103175. }
  103176. if (!isRealNum(number)) {
  103177. return formula_default.error.v;
  103178. }
  103179. number = parseInt(number);
  103180. var number_chosen = func_methods_default.getFirstValue(arguments[1]);
  103181. if (valueIsError(number_chosen)) {
  103182. return number_chosen;
  103183. }
  103184. if (!isRealNum(number_chosen)) {
  103185. return formula_default.error.v;
  103186. }
  103187. number_chosen = parseInt(number_chosen);
  103188. if (number < 0 || number_chosen < 0 || number < number_chosen) {
  103189. return formula_default.error.nm;
  103190. }
  103191. return func_methods_default.factorial(number) / (func_methods_default.factorial(number_chosen) * func_methods_default.factorial(number - number_chosen));
  103192. } catch (e) {
  103193. var err = e;
  103194. err = formula_default.errorInfo(err);
  103195. return [formula_default.error.v, err];
  103196. }
  103197. },
  103198. "SUBTOTAL": function() {
  103199. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  103200. return formula_default.error.na;
  103201. }
  103202. for (var i2 = 0; i2 < arguments.length; i2++) {
  103203. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  103204. if (!p[0]) {
  103205. return formula_default.error.v;
  103206. }
  103207. }
  103208. try {
  103209. let compute = function(function_num2) {
  103210. switch (function_num2) {
  103211. case 1:
  103212. case 101:
  103213. return window.luckysheet_function.AVERAGE.f.apply(window.luckysheet_function.AVERAGE, arr);
  103214. break;
  103215. case 2:
  103216. case 102:
  103217. return window.luckysheet_function.COUNT.f.apply(window.luckysheet_function.COUNT, arr);
  103218. break;
  103219. case 3:
  103220. case 103:
  103221. return window.luckysheet_function.COUNTA.f.apply(window.luckysheet_function.COUNTA, arr);
  103222. break;
  103223. case 4:
  103224. case 104:
  103225. return window.luckysheet_function.MAX.f.apply(window.luckysheet_function.MAX, arr);
  103226. break;
  103227. case 5:
  103228. case 105:
  103229. return window.luckysheet_function.MIN.f.apply(window.luckysheet_function.MIN, arr);
  103230. break;
  103231. case 6:
  103232. case 106:
  103233. return window.luckysheet_function.PRODUCT.f.apply(window.luckysheet_function.PRODUCT, arr);
  103234. break;
  103235. case 7:
  103236. case 107:
  103237. return window.luckysheet_function.STDEVA.f.apply(window.luckysheet_function.STDEVA, arr);
  103238. break;
  103239. case 8:
  103240. case 108:
  103241. return window.luckysheet_function.STDEVP.f.apply(window.luckysheet_function.STDEVP, arr);
  103242. break;
  103243. case 9:
  103244. case 109:
  103245. return window.luckysheet_function.SUM.f.apply(window.luckysheet_function.SUM, arr);
  103246. break;
  103247. case 10:
  103248. case 110:
  103249. return window.luckysheet_function.VAR_S.f.apply(window.luckysheet_function.VAR_S, arr);
  103250. break;
  103251. case 11:
  103252. case 111:
  103253. return window.luckysheet_function.VAR_P.f.apply(window.luckysheet_function.VAR_P, arr);
  103254. break;
  103255. }
  103256. };
  103257. var data_function_num = arguments[0];
  103258. var function_num;
  103259. if (getObjType(data_function_num) == "array") {
  103260. if (getObjType(data_function_num[0]) == "array") {
  103261. if (!func_methods_default.isDyadicArr(data_function_num)) {
  103262. return formula_default.error.v;
  103263. }
  103264. function_num = [];
  103265. for (var i2 = 0; i2 < data_function_num.length; i2++) {
  103266. var rowArr = [];
  103267. for (var j = 0; j < data_function_num[i2].length; j++) {
  103268. rowArr.push(data_function_num[i2][j]);
  103269. }
  103270. function_num.push(rowArr);
  103271. }
  103272. } else {
  103273. function_num = [];
  103274. for (var i2 = 0; i2 < data_function_num.length; i2++) {
  103275. function_num.push(data_function_num[i2]);
  103276. }
  103277. }
  103278. } else if (getObjType(data_function_num) == "object" && data_function_num.startCell != null) {
  103279. function_num = func_methods_default.getFirstValue(data_function_num);
  103280. } else {
  103281. function_num = data_function_num;
  103282. }
  103283. var arr = Array.prototype.slice.apply(arguments);
  103284. arr.shift();
  103285. if (getObjType(function_num) == "array") {
  103286. var result = [];
  103287. if (getObjType(function_num[0]) == "array") {
  103288. for (var i2 = 0; i2 < function_num.length; i2++) {
  103289. var rowArr = [];
  103290. for (var j = 0; j < function_num[i2].length; j++) {
  103291. var value = function_num[i2][j];
  103292. if (valueIsError(value)) {
  103293. rowArr.push(value);
  103294. } else if (!isRealNum(value)) {
  103295. rowArr.push(formula_default.error.v);
  103296. } else {
  103297. value = parseInt(value);
  103298. if (value < 1 || value > 111 || value > 11 && value < 101) {
  103299. rowArr.push(formula_default.error.v);
  103300. } else {
  103301. rowArr.push(compute(value));
  103302. }
  103303. }
  103304. }
  103305. result.push(rowArr);
  103306. }
  103307. } else {
  103308. for (var i2 = 0; i2 < function_num.length; i2++) {
  103309. var value = function_num[i2];
  103310. if (valueIsError(value)) {
  103311. result.push(value);
  103312. } else if (!isRealNum(value)) {
  103313. result.push(formula_default.error.v);
  103314. } else {
  103315. value = parseInt(value);
  103316. if (value < 1 || value > 111 || value > 11 && value < 101) {
  103317. result.push(formula_default.error.v);
  103318. } else {
  103319. result.push(compute(value));
  103320. }
  103321. }
  103322. }
  103323. }
  103324. return result;
  103325. } else {
  103326. if (valueIsError(function_num)) {
  103327. return function_num;
  103328. }
  103329. if (!isRealNum(function_num)) {
  103330. return formula_default.error.v;
  103331. }
  103332. function_num = parseInt(function_num);
  103333. if (function_num < 1 || function_num > 111 || function_num > 11 && function_num < 101) {
  103334. return formula_default.error.v;
  103335. }
  103336. return compute(function_num);
  103337. }
  103338. } catch (e) {
  103339. var err = e;
  103340. err = formula_default.errorInfo(err);
  103341. return [formula_default.error.v, err];
  103342. }
  103343. },
  103344. "ASIN": function() {
  103345. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  103346. return formula_default.error.na;
  103347. }
  103348. for (var i2 = 0; i2 < arguments.length; i2++) {
  103349. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  103350. if (!p[0]) {
  103351. return formula_default.error.v;
  103352. }
  103353. }
  103354. try {
  103355. var number = func_methods_default.getFirstValue(arguments[0]);
  103356. if (valueIsError(number)) {
  103357. return number;
  103358. }
  103359. if (!isRealNum(number)) {
  103360. return formula_default.error.v;
  103361. }
  103362. number = parseFloat(number);
  103363. if (number < -1 || number > 1) {
  103364. return formula_default.error.nm;
  103365. }
  103366. return Math.asin(number);
  103367. } catch (e) {
  103368. var err = e;
  103369. err = formula_default.errorInfo(err);
  103370. return [formula_default.error.v, err];
  103371. }
  103372. },
  103373. "COUNTIF": function() {
  103374. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  103375. return formula_default.error.na;
  103376. }
  103377. for (var i2 = 0; i2 < arguments.length; i2++) {
  103378. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  103379. if (!p[0]) {
  103380. return formula_default.error.v;
  103381. }
  103382. }
  103383. try {
  103384. let getCriteriaResult = function(range3, criter) {
  103385. if (!/[<>=!*?]/.test(criter)) {
  103386. criter = '=="' + criter + '"';
  103387. }
  103388. criter = criter.replace("<>", "!=");
  103389. var matches = 0;
  103390. if (getObjType(range3) == "array") {
  103391. for (var i3 = 0; i3 < range3.length; i3++) {
  103392. for (var j2 = 0; j2 < range3[i3].length; j2++) {
  103393. if (range3[i3][j2] != null && !isRealNull(range3[i3][j2].v)) {
  103394. var value = range3[i3][j2].v;
  103395. if (criter.indexOf("*") > -1 || criter.indexOf("?") > -1) {
  103396. if (formula_default.isWildcard(value, criter)) {
  103397. matches++;
  103398. }
  103399. } else {
  103400. if (typeof value !== "string") {
  103401. if (new Function("return " + value + criter)()) {
  103402. matches++;
  103403. }
  103404. } else {
  103405. if (new Function('return "' + value + '"' + criter)()) {
  103406. matches++;
  103407. }
  103408. }
  103409. }
  103410. }
  103411. }
  103412. }
  103413. } else {
  103414. if (range3 != null && !isRealNull(range3.v)) {
  103415. var value = range3.v;
  103416. if (criter.indexOf("*") > -1 || criter.indexOf("?") > -1) {
  103417. if (formula_default.isWildcard(value, criter)) {
  103418. matches++;
  103419. }
  103420. } else {
  103421. if (typeof value !== "string") {
  103422. if (new Function("return " + value + criter)()) {
  103423. matches++;
  103424. }
  103425. } else {
  103426. if (new Function('return "' + value + '"' + criter)()) {
  103427. matches++;
  103428. }
  103429. }
  103430. }
  103431. }
  103432. }
  103433. return matches;
  103434. };
  103435. var data_range = arguments[0];
  103436. var range2;
  103437. if (getObjType(data_range) == "object" && data_range.startCell != null) {
  103438. range2 = data_range.data;
  103439. } else {
  103440. return formula_default.error.v;
  103441. }
  103442. var data_criteria = arguments[1];
  103443. var criteria;
  103444. if (getObjType(data_criteria) == "array") {
  103445. criteria = [];
  103446. if (getObjType(data_criteria[0]) == "array") {
  103447. if (!func_methods_default.isDyadicArr(data_criteria)) {
  103448. return formula_default.error.v;
  103449. }
  103450. for (var i2 = 0; i2 < data_criteria.length; i2++) {
  103451. var rowArr = [];
  103452. for (var j = 0; j < data_criteria[i2].length; j++) {
  103453. rowArr.push(data_criteria[i2][j]);
  103454. }
  103455. criteria.push(rowArr);
  103456. }
  103457. } else {
  103458. for (var i2 = 0; i2 < data_criteria.length; i2++) {
  103459. criteria.push(data_criteria[i2]);
  103460. }
  103461. }
  103462. } else if (getObjType(data_criteria) == "object" && data_criteria.startCell != null) {
  103463. if (data_criteria.rowl > 1 || data_criteria.coll > 1) {
  103464. return 0;
  103465. }
  103466. criteria = data_criteria.data.v;
  103467. } else {
  103468. criteria = data_criteria;
  103469. }
  103470. if (getObjType(criteria) == "array") {
  103471. var result = [];
  103472. if (getObjType(criteria[0]) == "array") {
  103473. for (var i2 = 0; i2 < criteria.length; i2++) {
  103474. var rowArr = [];
  103475. for (var j = 0; j < criteria[i2].length; j++) {
  103476. rowArr.push(getCriteriaResult(range2, criteria[i2][j]));
  103477. }
  103478. result.push(rowArr);
  103479. }
  103480. } else {
  103481. for (var i2 = 0; i2 < criteria.length; i2++) {
  103482. result.push(getCriteriaResult(range2, criteria[i2]));
  103483. }
  103484. }
  103485. return result;
  103486. } else {
  103487. return getCriteriaResult(range2, criteria);
  103488. }
  103489. } catch (e) {
  103490. var err = e;
  103491. err = formula_default.errorInfo(err);
  103492. return [formula_default.error.v, err];
  103493. }
  103494. },
  103495. "RADIANS": function() {
  103496. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  103497. return formula_default.error.na;
  103498. }
  103499. for (var i2 = 0; i2 < arguments.length; i2++) {
  103500. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  103501. if (!p[0]) {
  103502. return formula_default.error.v;
  103503. }
  103504. }
  103505. try {
  103506. var number = func_methods_default.getFirstValue(arguments[0]);
  103507. if (valueIsError(number)) {
  103508. return number;
  103509. }
  103510. if (!isRealNum(number)) {
  103511. return formula_default.error.v;
  103512. }
  103513. number = parseFloat(number);
  103514. return number * Math.PI / 180;
  103515. } catch (e) {
  103516. var err = e;
  103517. err = formula_default.errorInfo(err);
  103518. return [formula_default.error.v, err];
  103519. }
  103520. },
  103521. "RAND": function() {
  103522. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  103523. return formula_default.error.na;
  103524. }
  103525. try {
  103526. return Math.floor(Math.random() * 1e9) / 1e9;
  103527. } catch (e) {
  103528. var err = e;
  103529. err = formula_default.errorInfo(err);
  103530. return [formula_default.error.v, err];
  103531. }
  103532. },
  103533. "COUNTUNIQUE": function() {
  103534. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  103535. return formula_default.error.na;
  103536. }
  103537. for (var i2 = 0; i2 < arguments.length; i2++) {
  103538. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  103539. if (!p[0]) {
  103540. return formula_default.error.v;
  103541. }
  103542. }
  103543. try {
  103544. var dataArr = [];
  103545. for (var i2 = 0; i2 < arguments.length; i2++) {
  103546. var data = arguments[i2];
  103547. if (getObjType(data) == "array") {
  103548. if (getObjType(data[0]) == "array" && !func_methods_default.isDyadicArr(data)) {
  103549. return formula_default.error.v;
  103550. }
  103551. dataArr = dataArr.concat(func_methods_default.getDataArr(data, true));
  103552. } else if (getObjType(data) == "object" && data.startCell != null) {
  103553. dataArr = dataArr.concat(func_methods_default.getCellDataArr(data, "text", true));
  103554. } else {
  103555. dataArr.push(data);
  103556. }
  103557. }
  103558. return window.luckysheet_function.UNIQUE.f(dataArr);
  103559. } catch (e) {
  103560. var err = e;
  103561. err = formula_default.errorInfo(err);
  103562. return [formula_default.error.v, err];
  103563. }
  103564. },
  103565. "DEGREES": function() {
  103566. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  103567. return formula_default.error.na;
  103568. }
  103569. for (var i2 = 0; i2 < arguments.length; i2++) {
  103570. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  103571. if (!p[0]) {
  103572. return formula_default.error.v;
  103573. }
  103574. }
  103575. try {
  103576. var number = func_methods_default.getFirstValue(arguments[0]);
  103577. if (valueIsError(number)) {
  103578. return number;
  103579. }
  103580. if (!isRealNum(number)) {
  103581. return formula_default.error.v;
  103582. }
  103583. number = parseFloat(number);
  103584. return number * 180 / Math.PI;
  103585. } catch (e) {
  103586. var err = e;
  103587. err = formula_default.errorInfo(err);
  103588. return [formula_default.error.v, err];
  103589. }
  103590. },
  103591. "ERFC": function() {
  103592. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  103593. return formula_default.error.na;
  103594. }
  103595. for (var i2 = 0; i2 < arguments.length; i2++) {
  103596. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  103597. if (!p[0]) {
  103598. return formula_default.error.v;
  103599. }
  103600. }
  103601. try {
  103602. var number = func_methods_default.getFirstValue(arguments[0]);
  103603. if (valueIsError(number)) {
  103604. return number;
  103605. }
  103606. if (!isRealNum(number)) {
  103607. return formula_default.error.v;
  103608. }
  103609. number = parseFloat(number);
  103610. return jStat.erfc(number);
  103611. } catch (e) {
  103612. var err = e;
  103613. err = formula_default.errorInfo(err);
  103614. return [formula_default.error.v, err];
  103615. }
  103616. },
  103617. "EVEN": function() {
  103618. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  103619. return formula_default.error.na;
  103620. }
  103621. for (var i2 = 0; i2 < arguments.length; i2++) {
  103622. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  103623. if (!p[0]) {
  103624. return formula_default.error.v;
  103625. }
  103626. }
  103627. try {
  103628. var number = func_methods_default.getFirstValue(arguments[0]);
  103629. if (valueIsError(number)) {
  103630. return number;
  103631. }
  103632. if (!isRealNum(number)) {
  103633. return formula_default.error.v;
  103634. }
  103635. number = parseFloat(number);
  103636. var temp = Math.ceil(Math.abs(number));
  103637. temp = temp & 1 ? temp + 1 : temp;
  103638. return number > 0 ? temp : -temp;
  103639. } catch (e) {
  103640. var err = e;
  103641. err = formula_default.errorInfo(err);
  103642. return [formula_default.error.v, err];
  103643. }
  103644. },
  103645. "EXP": function() {
  103646. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  103647. return formula_default.error.na;
  103648. }
  103649. for (var i2 = 0; i2 < arguments.length; i2++) {
  103650. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  103651. if (!p[0]) {
  103652. return formula_default.error.v;
  103653. }
  103654. }
  103655. try {
  103656. var number = func_methods_default.getFirstValue(arguments[0]);
  103657. if (valueIsError(number)) {
  103658. return number;
  103659. }
  103660. if (!isRealNum(number)) {
  103661. return formula_default.error.v;
  103662. }
  103663. number = parseFloat(number);
  103664. return Math.exp(number);
  103665. } catch (e) {
  103666. var err = e;
  103667. err = formula_default.errorInfo(err);
  103668. return [formula_default.error.v, err];
  103669. }
  103670. },
  103671. "FACT": function() {
  103672. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  103673. return formula_default.error.na;
  103674. }
  103675. for (var i2 = 0; i2 < arguments.length; i2++) {
  103676. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  103677. if (!p[0]) {
  103678. return formula_default.error.v;
  103679. }
  103680. }
  103681. try {
  103682. var number = func_methods_default.getFirstValue(arguments[0]);
  103683. if (valueIsError(number)) {
  103684. return number;
  103685. }
  103686. if (!isRealNum(number)) {
  103687. if (getObjType(number) == "boolean") {
  103688. if (number.toString().toLowerCase() == "true") {
  103689. number = 1;
  103690. } else if (number.toString().toLowerCase() == "false") {
  103691. number = 0;
  103692. }
  103693. } else {
  103694. return formula_default.error.v;
  103695. }
  103696. }
  103697. number = parseInt(number);
  103698. if (number < 0) {
  103699. return formula_default.error.nm;
  103700. }
  103701. return func_methods_default.factorial(number);
  103702. } catch (e) {
  103703. var err = e;
  103704. err = formula_default.errorInfo(err);
  103705. return [formula_default.error.v, err];
  103706. }
  103707. },
  103708. "FACTDOUBLE": function() {
  103709. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  103710. return formula_default.error.na;
  103711. }
  103712. for (var i2 = 0; i2 < arguments.length; i2++) {
  103713. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  103714. if (!p[0]) {
  103715. return formula_default.error.v;
  103716. }
  103717. }
  103718. try {
  103719. var number = func_methods_default.getFirstValue(arguments[0]);
  103720. if (valueIsError(number)) {
  103721. return number;
  103722. }
  103723. if (!isRealNum(number)) {
  103724. if (getObjType(number) == "boolean") {
  103725. if (number.toString().toLowerCase() == "true") {
  103726. number = 1;
  103727. } else if (number.toString().toLowerCase() == "false") {
  103728. number = 0;
  103729. }
  103730. } else {
  103731. return formula_default.error.v;
  103732. }
  103733. }
  103734. number = parseInt(number);
  103735. if (number < 0) {
  103736. return formula_default.error.nm;
  103737. }
  103738. return func_methods_default.factorialDouble(number);
  103739. } catch (e) {
  103740. var err = e;
  103741. err = formula_default.errorInfo(err);
  103742. return [formula_default.error.v, err];
  103743. }
  103744. },
  103745. "PI": function() {
  103746. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  103747. return formula_default.error.na;
  103748. }
  103749. try {
  103750. return Math.PI;
  103751. } catch (e) {
  103752. var err = e;
  103753. err = formula_default.errorInfo(err);
  103754. return [formula_default.error.v, err];
  103755. }
  103756. },
  103757. "FLOOR": function() {
  103758. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  103759. return formula_default.error.na;
  103760. }
  103761. for (var i2 = 0; i2 < arguments.length; i2++) {
  103762. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  103763. if (!p[0]) {
  103764. return formula_default.error.v;
  103765. }
  103766. }
  103767. try {
  103768. var number = func_methods_default.getFirstValue(arguments[0]);
  103769. if (valueIsError(number)) {
  103770. return number;
  103771. }
  103772. if (!isRealNum(number)) {
  103773. return formula_default.error.v;
  103774. }
  103775. number = parseFloat(number);
  103776. var significance = func_methods_default.getFirstValue(arguments[1]);
  103777. if (valueIsError(significance)) {
  103778. return significance;
  103779. }
  103780. if (!isRealNum(significance)) {
  103781. return formula_default.error.v;
  103782. }
  103783. significance = parseFloat(significance);
  103784. if (significance == 0) {
  103785. return formula_default.error.d;
  103786. }
  103787. if (number > 0 && significance < 0) {
  103788. return formula_default.error.nm;
  103789. }
  103790. var precision = -Math.floor(Math.log(Math.abs(significance)) / Math.log(10));
  103791. if (number >= 0) {
  103792. return Math.floor(number / significance) * significance * Math.pow(10, precision) / Math.pow(10, precision);
  103793. } else {
  103794. return -(Math.ceil(Math.abs(number) / significance) * significance * Math.pow(10, precision)) / Math.pow(10, precision);
  103795. }
  103796. } catch (e) {
  103797. var err = e;
  103798. err = formula_default.errorInfo(err);
  103799. return [formula_default.error.v, err];
  103800. }
  103801. },
  103802. "GCD": function() {
  103803. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  103804. return formula_default.error.na;
  103805. }
  103806. for (var i2 = 0; i2 < arguments.length; i2++) {
  103807. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  103808. if (!p[0]) {
  103809. return formula_default.error.v;
  103810. }
  103811. }
  103812. try {
  103813. var dataArr = [];
  103814. for (var i2 = 0; i2 < arguments.length; i2++) {
  103815. var data = arguments[i2];
  103816. if (getObjType(data) == "array") {
  103817. if (getObjType(data[0]) == "array" && !func_methods_default.isDyadicArr(data)) {
  103818. return formula_default.error.v;
  103819. }
  103820. dataArr = dataArr.concat(func_methods_default.getDataArr(data, false));
  103821. } else if (getObjType(data) == "object" && data.startCell != null) {
  103822. dataArr = dataArr.concat(func_methods_default.getCellDataArr(data, "number", false));
  103823. } else {
  103824. dataArr.push(data);
  103825. }
  103826. }
  103827. if (!isRealNum(dataArr[0])) {
  103828. return formula_default.error.v;
  103829. }
  103830. var x = parseInt(dataArr[0]);
  103831. if (x < 0 || x >= Math.pow(2, 53)) {
  103832. return formula_default.error.nm;
  103833. }
  103834. for (var i2 = 1; i2 < dataArr.length; i2++) {
  103835. var y = dataArr[i2];
  103836. if (!isRealNum(y)) {
  103837. return formula_default.error.v;
  103838. }
  103839. y = parseInt(y);
  103840. if (y < 0 || y >= Math.pow(2, 53)) {
  103841. return formula_default.error.nm;
  103842. }
  103843. while (x && y) {
  103844. if (x > y) {
  103845. x %= y;
  103846. } else {
  103847. y %= x;
  103848. }
  103849. }
  103850. x += y;
  103851. }
  103852. return x;
  103853. } catch (e) {
  103854. var err = e;
  103855. err = formula_default.errorInfo(err);
  103856. return [formula_default.error.v, err];
  103857. }
  103858. },
  103859. "RANDBETWEEN": function() {
  103860. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  103861. return formula_default.error.na;
  103862. }
  103863. for (var i2 = 0; i2 < arguments.length; i2++) {
  103864. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  103865. if (!p[0]) {
  103866. return formula_default.error.v;
  103867. }
  103868. }
  103869. try {
  103870. var bottom = func_methods_default.getFirstValue(arguments[0]);
  103871. if (valueIsError(bottom)) {
  103872. return bottom;
  103873. }
  103874. if (!isRealNum(bottom)) {
  103875. return formula_default.error.v;
  103876. }
  103877. bottom = parseInt(bottom);
  103878. var top = func_methods_default.getFirstValue(arguments[1]);
  103879. if (valueIsError(top)) {
  103880. return top;
  103881. }
  103882. if (!isRealNum(top)) {
  103883. return formula_default.error.v;
  103884. }
  103885. top = parseInt(top);
  103886. if (bottom > top) {
  103887. return formula_default.error.nm;
  103888. }
  103889. return bottom + Math.ceil((top - bottom + 1) * Math.random()) - 1;
  103890. } catch (e) {
  103891. var err = e;
  103892. err = formula_default.errorInfo(err);
  103893. return [formula_default.error.v, err];
  103894. }
  103895. },
  103896. "ROUND": function() {
  103897. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  103898. return formula_default.error.na;
  103899. }
  103900. for (var i2 = 0; i2 < arguments.length; i2++) {
  103901. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  103902. if (!p[0]) {
  103903. return formula_default.error.v;
  103904. }
  103905. }
  103906. try {
  103907. var number = func_methods_default.getFirstValue(arguments[0]);
  103908. if (valueIsError(number)) {
  103909. return number;
  103910. }
  103911. if (!isRealNum(number)) {
  103912. return formula_default.error.v;
  103913. }
  103914. number = parseFloat(number);
  103915. var digits = func_methods_default.getFirstValue(arguments[1]);
  103916. if (valueIsError(digits)) {
  103917. return digits;
  103918. }
  103919. if (!isRealNum(digits)) {
  103920. return formula_default.error.v;
  103921. }
  103922. digits = parseInt(digits);
  103923. var sign = number > 0 ? 1 : -1;
  103924. return sign * Math.round(Math.abs(number) * Math.pow(10, digits)) / Math.pow(10, digits);
  103925. } catch (e) {
  103926. var err = e;
  103927. err = formula_default.errorInfo(err);
  103928. return [formula_default.error.v, err];
  103929. }
  103930. },
  103931. "ROUNDDOWN": function() {
  103932. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  103933. return formula_default.error.na;
  103934. }
  103935. for (var i2 = 0; i2 < arguments.length; i2++) {
  103936. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  103937. if (!p[0]) {
  103938. return formula_default.error.v;
  103939. }
  103940. }
  103941. try {
  103942. var number = func_methods_default.getFirstValue(arguments[0]);
  103943. if (valueIsError(number)) {
  103944. return number;
  103945. }
  103946. if (!isRealNum(number)) {
  103947. return formula_default.error.v;
  103948. }
  103949. number = parseFloat(number);
  103950. var digits = func_methods_default.getFirstValue(arguments[1]);
  103951. if (valueIsError(digits)) {
  103952. return digits;
  103953. }
  103954. if (!isRealNum(digits)) {
  103955. return formula_default.error.v;
  103956. }
  103957. digits = parseInt(digits);
  103958. var sign = number > 0 ? 1 : -1;
  103959. return sign * Math.floor(Math.abs(number) * Math.pow(10, digits)) / Math.pow(10, digits);
  103960. } catch (e) {
  103961. var err = e;
  103962. err = formula_default.errorInfo(err);
  103963. return [formula_default.error.v, err];
  103964. }
  103965. },
  103966. "ROUNDUP": function() {
  103967. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  103968. return formula_default.error.na;
  103969. }
  103970. for (var i2 = 0; i2 < arguments.length; i2++) {
  103971. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  103972. if (!p[0]) {
  103973. return formula_default.error.v;
  103974. }
  103975. }
  103976. try {
  103977. var number = func_methods_default.getFirstValue(arguments[0]);
  103978. if (valueIsError(number)) {
  103979. return number;
  103980. }
  103981. if (!isRealNum(number)) {
  103982. return formula_default.error.v;
  103983. }
  103984. number = parseFloat(number);
  103985. var digits = func_methods_default.getFirstValue(arguments[1]);
  103986. if (valueIsError(digits)) {
  103987. return digits;
  103988. }
  103989. if (!isRealNum(digits)) {
  103990. return formula_default.error.v;
  103991. }
  103992. digits = parseInt(digits);
  103993. var sign = number > 0 ? 1 : -1;
  103994. return sign * Math.ceil(Math.abs(number) * Math.pow(10, digits)) / Math.pow(10, digits);
  103995. } catch (e) {
  103996. var err = e;
  103997. err = formula_default.errorInfo(err);
  103998. return [formula_default.error.v, err];
  103999. }
  104000. },
  104001. "SERIESSUM": function() {
  104002. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  104003. return formula_default.error.na;
  104004. }
  104005. for (var i2 = 0; i2 < arguments.length; i2++) {
  104006. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  104007. if (!p[0]) {
  104008. return formula_default.error.v;
  104009. }
  104010. }
  104011. try {
  104012. var x = func_methods_default.getFirstValue(arguments[0]);
  104013. if (valueIsError(x)) {
  104014. return x;
  104015. }
  104016. if (!isRealNum(x)) {
  104017. return formula_default.error.v;
  104018. }
  104019. x = parseFloat(x);
  104020. var n = func_methods_default.getFirstValue(arguments[1]);
  104021. if (valueIsError(n)) {
  104022. return n;
  104023. }
  104024. if (!isRealNum(n)) {
  104025. return formula_default.error.v;
  104026. }
  104027. n = parseFloat(n);
  104028. var m = func_methods_default.getFirstValue(arguments[2]);
  104029. if (valueIsError(m)) {
  104030. return m;
  104031. }
  104032. if (!isRealNum(m)) {
  104033. return formula_default.error.v;
  104034. }
  104035. m = parseFloat(m);
  104036. var data_coefficients = arguments[3];
  104037. var coefficients = [];
  104038. if (getObjType(data_coefficients) == "array") {
  104039. if (getObjType(data_coefficients[0]) == "array" && !func_methods_default.isDyadicArr(data_coefficients)) {
  104040. return formula_default.error.v;
  104041. }
  104042. coefficients = coefficients.concat(func_methods_default.getDataArr(data_coefficients, false));
  104043. } else if (getObjType(data_coefficients) == "object" && data_coefficients.startCell != null) {
  104044. coefficients = coefficients.concat(func_methods_default.getCellDataArr(data_coefficients, "number", false));
  104045. } else {
  104046. coefficients.push(data_coefficients);
  104047. }
  104048. if (!isRealNum(coefficients[0])) {
  104049. return formula_default.error.v;
  104050. }
  104051. var result = parseFloat(coefficients[0]) * Math.pow(x, n);
  104052. for (var i2 = 1; i2 < coefficients.length; i2++) {
  104053. var number = coefficients[i2];
  104054. if (!isRealNum(number)) {
  104055. return formula_default.error.v;
  104056. }
  104057. number = parseFloat(number);
  104058. result += number * Math.pow(x, n + i2 * m);
  104059. }
  104060. return result;
  104061. } catch (e) {
  104062. var err = e;
  104063. err = formula_default.errorInfo(err);
  104064. return [formula_default.error.v, err];
  104065. }
  104066. },
  104067. "SIGN": function() {
  104068. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  104069. return formula_default.error.na;
  104070. }
  104071. for (var i2 = 0; i2 < arguments.length; i2++) {
  104072. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  104073. if (!p[0]) {
  104074. return formula_default.error.v;
  104075. }
  104076. }
  104077. try {
  104078. var number = func_methods_default.getFirstValue(arguments[0]);
  104079. if (valueIsError(number)) {
  104080. return number;
  104081. }
  104082. if (!isRealNum(number)) {
  104083. return formula_default.error.v;
  104084. }
  104085. number = parseFloat(number);
  104086. if (number > 0) {
  104087. return 1;
  104088. } else if (number == 0) {
  104089. return 0;
  104090. } else if (number < 0) {
  104091. return -1;
  104092. }
  104093. } catch (e) {
  104094. var err = e;
  104095. err = formula_default.errorInfo(err);
  104096. return [formula_default.error.v, err];
  104097. }
  104098. },
  104099. "SIN": function() {
  104100. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  104101. return formula_default.error.na;
  104102. }
  104103. for (var i2 = 0; i2 < arguments.length; i2++) {
  104104. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  104105. if (!p[0]) {
  104106. return formula_default.error.v;
  104107. }
  104108. }
  104109. try {
  104110. var number = func_methods_default.getFirstValue(arguments[0]);
  104111. if (valueIsError(number)) {
  104112. return number;
  104113. }
  104114. if (!isRealNum(number)) {
  104115. return formula_default.error.v;
  104116. }
  104117. number = parseFloat(number);
  104118. return Math.sin(number);
  104119. } catch (e) {
  104120. var err = e;
  104121. err = formula_default.errorInfo(err);
  104122. return [formula_default.error.v, err];
  104123. }
  104124. },
  104125. "SINH": function() {
  104126. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  104127. return formula_default.error.na;
  104128. }
  104129. for (var i2 = 0; i2 < arguments.length; i2++) {
  104130. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  104131. if (!p[0]) {
  104132. return formula_default.error.v;
  104133. }
  104134. }
  104135. try {
  104136. var number = func_methods_default.getFirstValue(arguments[0]);
  104137. if (valueIsError(number)) {
  104138. return number;
  104139. }
  104140. if (!isRealNum(number)) {
  104141. return formula_default.error.v;
  104142. }
  104143. number = parseFloat(number);
  104144. return (Math.exp(number) - Math.exp(-number)) / 2;
  104145. } catch (e) {
  104146. var err = e;
  104147. err = formula_default.errorInfo(err);
  104148. return [formula_default.error.v, err];
  104149. }
  104150. },
  104151. "SQRT": function() {
  104152. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  104153. return formula_default.error.na;
  104154. }
  104155. for (var i2 = 0; i2 < arguments.length; i2++) {
  104156. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  104157. if (!p[0]) {
  104158. return formula_default.error.v;
  104159. }
  104160. }
  104161. try {
  104162. var number = func_methods_default.getFirstValue(arguments[0]);
  104163. if (valueIsError(number)) {
  104164. return number;
  104165. }
  104166. if (!isRealNum(number)) {
  104167. return formula_default.error.v;
  104168. }
  104169. number = parseFloat(number);
  104170. if (number < 0) {
  104171. return formula_default.error.nm;
  104172. }
  104173. return Math.sqrt(number);
  104174. } catch (e) {
  104175. var err = e;
  104176. err = formula_default.errorInfo(err);
  104177. return [formula_default.error.v, err];
  104178. }
  104179. },
  104180. "SQRTPI": function() {
  104181. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  104182. return formula_default.error.na;
  104183. }
  104184. for (var i2 = 0; i2 < arguments.length; i2++) {
  104185. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  104186. if (!p[0]) {
  104187. return formula_default.error.v;
  104188. }
  104189. }
  104190. try {
  104191. var number = func_methods_default.getFirstValue(arguments[0]);
  104192. if (valueIsError(number)) {
  104193. return number;
  104194. }
  104195. if (!isRealNum(number)) {
  104196. return formula_default.error.v;
  104197. }
  104198. number = parseFloat(number);
  104199. if (number < 0) {
  104200. return formula_default.error.nm;
  104201. }
  104202. return Math.sqrt(number * Math.PI);
  104203. } catch (e) {
  104204. var err = e;
  104205. err = formula_default.errorInfo(err);
  104206. return [formula_default.error.v, err];
  104207. }
  104208. },
  104209. "GAMMALN": function() {
  104210. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  104211. return formula_default.error.na;
  104212. }
  104213. for (var i2 = 0; i2 < arguments.length; i2++) {
  104214. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  104215. if (!p[0]) {
  104216. return formula_default.error.v;
  104217. }
  104218. }
  104219. try {
  104220. var number = func_methods_default.getFirstValue(arguments[0]);
  104221. if (valueIsError(number)) {
  104222. return number;
  104223. }
  104224. if (!isRealNum(number)) {
  104225. return formula_default.error.v;
  104226. }
  104227. number = parseFloat(number);
  104228. if (number <= 0) {
  104229. return formula_default.error.nm;
  104230. }
  104231. return jStat.gammaln(number);
  104232. } catch (e) {
  104233. var err = e;
  104234. err = formula_default.errorInfo(err);
  104235. return [formula_default.error.v, err];
  104236. }
  104237. },
  104238. "COS": function() {
  104239. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  104240. return formula_default.error.na;
  104241. }
  104242. for (var i2 = 0; i2 < arguments.length; i2++) {
  104243. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  104244. if (!p[0]) {
  104245. return formula_default.error.v;
  104246. }
  104247. }
  104248. try {
  104249. var number = func_methods_default.getFirstValue(arguments[0]);
  104250. if (valueIsError(number)) {
  104251. return number;
  104252. }
  104253. if (!isRealNum(number)) {
  104254. return formula_default.error.v;
  104255. }
  104256. number = parseFloat(number);
  104257. return Math.cos(number);
  104258. } catch (e) {
  104259. var err = e;
  104260. err = formula_default.errorInfo(err);
  104261. return [formula_default.error.v, err];
  104262. }
  104263. },
  104264. "TRUNC": function() {
  104265. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  104266. return formula_default.error.na;
  104267. }
  104268. for (var i2 = 0; i2 < arguments.length; i2++) {
  104269. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  104270. if (!p[0]) {
  104271. return formula_default.error.v;
  104272. }
  104273. }
  104274. try {
  104275. var number = func_methods_default.getFirstValue(arguments[0]);
  104276. if (valueIsError(number)) {
  104277. return number;
  104278. }
  104279. if (!isRealNum(number)) {
  104280. return formula_default.error.v;
  104281. }
  104282. number = parseFloat(number);
  104283. if (arguments.length == 2) {
  104284. var digits = func_methods_default.getFirstValue(arguments[1]);
  104285. if (valueIsError(digits)) {
  104286. return digits;
  104287. }
  104288. if (!isRealNum(digits)) {
  104289. return formula_default.error.v;
  104290. }
  104291. digits = parseInt(digits);
  104292. } else {
  104293. var digits = 0;
  104294. }
  104295. var sign = number > 0 ? 1 : -1;
  104296. return sign * Math.floor(Math.abs(number) * Math.pow(10, digits)) / Math.pow(10, digits);
  104297. } catch (e) {
  104298. var err = e;
  104299. err = formula_default.errorInfo(err);
  104300. return [formula_default.error.v, err];
  104301. }
  104302. },
  104303. "QUOTIENT": function() {
  104304. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  104305. return formula_default.error.na;
  104306. }
  104307. for (var i2 = 0; i2 < arguments.length; i2++) {
  104308. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  104309. if (!p[0]) {
  104310. return formula_default.error.v;
  104311. }
  104312. }
  104313. try {
  104314. var numerator = func_methods_default.getFirstValue(arguments[0]);
  104315. if (valueIsError(numerator)) {
  104316. return numerator;
  104317. }
  104318. if (!isRealNum(numerator)) {
  104319. return formula_default.error.v;
  104320. }
  104321. numerator = parseFloat(numerator);
  104322. var denominator = func_methods_default.getFirstValue(arguments[1]);
  104323. if (valueIsError(denominator)) {
  104324. return denominator;
  104325. }
  104326. if (!isRealNum(denominator)) {
  104327. return formula_default.error.v;
  104328. }
  104329. denominator = parseFloat(denominator);
  104330. if (denominator == 0) {
  104331. return formula_default.error.d;
  104332. }
  104333. return parseInt(numerator / denominator, 10);
  104334. } catch (e) {
  104335. var err = e;
  104336. err = formula_default.errorInfo(err);
  104337. return [formula_default.error.v, err];
  104338. }
  104339. },
  104340. "POWER": function() {
  104341. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  104342. return formula_default.error.na;
  104343. }
  104344. for (var i2 = 0; i2 < arguments.length; i2++) {
  104345. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  104346. if (!p[0]) {
  104347. return formula_default.error.v;
  104348. }
  104349. }
  104350. try {
  104351. var number = func_methods_default.getFirstValue(arguments[0]);
  104352. if (valueIsError(number)) {
  104353. return number;
  104354. }
  104355. if (!isRealNum(number)) {
  104356. return formula_default.error.v;
  104357. }
  104358. number = parseFloat(number);
  104359. var power = func_methods_default.getFirstValue(arguments[1]);
  104360. if (valueIsError(power)) {
  104361. return power;
  104362. }
  104363. if (!isRealNum(power)) {
  104364. return formula_default.error.v;
  104365. }
  104366. power = parseFloat(power);
  104367. if (number == 0 && power == 0) {
  104368. return formula_default.error.nm;
  104369. }
  104370. if (number < 0 && power.toString().indexOf(".") > -1) {
  104371. return formula_default.error.nm;
  104372. }
  104373. return Math.pow(number, power);
  104374. } catch (e) {
  104375. var err = e;
  104376. err = formula_default.errorInfo(err);
  104377. return [formula_default.error.v, err];
  104378. }
  104379. },
  104380. "SUMIFS": function() {
  104381. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  104382. return formula_default.error.na;
  104383. }
  104384. for (var i2 = 0; i2 < arguments.length; i2++) {
  104385. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  104386. if (!p[0]) {
  104387. return formula_default.error.v;
  104388. }
  104389. }
  104390. try {
  104391. var sum = 0;
  104392. var args = arguments;
  104393. luckysheet_getValue(args);
  104394. var rangeData = formula_default.getRangeArray(args[0])[0];
  104395. var results = new Array(rangeData.length);
  104396. for (var i2 = 0; i2 < results.length; i2++) {
  104397. results[i2] = true;
  104398. }
  104399. for (var i2 = 1; i2 < args.length; i2 += 2) {
  104400. var range2 = formula_default.getRangeArray(args[i2])[0];
  104401. var criteria = args[i2 + 1];
  104402. for (var j = 0; j < range2.length; j++) {
  104403. var v = range2[j];
  104404. results[j] = results[j] && !!v && formula_default.acompareb(v, criteria);
  104405. }
  104406. }
  104407. for (var i2 = 0; i2 < rangeData.length; i2++) {
  104408. if (results[i2]) {
  104409. sum = luckysheet_calcADPMM(sum, "+", rangeData[i2]);
  104410. }
  104411. }
  104412. return sum;
  104413. } catch (e) {
  104414. var err = e;
  104415. err = formula_default.errorInfo(err);
  104416. return [formula_default.error.v, err];
  104417. }
  104418. },
  104419. "COUNTIFS": function() {
  104420. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  104421. return formula_default.error.na;
  104422. }
  104423. for (var i2 = 0; i2 < arguments.length; i2++) {
  104424. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  104425. if (!p[0]) {
  104426. return formula_default.error.v;
  104427. }
  104428. }
  104429. try {
  104430. var args = arguments;
  104431. luckysheet_getValue(args);
  104432. var results = new Array(formula_default.getRangeArray(args[0])[0].length);
  104433. for (var i2 = 0; i2 < results.length; i2++) {
  104434. results[i2] = true;
  104435. }
  104436. for (var i2 = 0; i2 < args.length; i2 += 2) {
  104437. var range2 = formula_default.getRangeArray(args[i2])[0];
  104438. var criteria = args[i2 + 1];
  104439. for (var j = 0; j < range2.length; j++) {
  104440. var v = range2[j];
  104441. results[j] = results[j] && !!v && formula_default.acompareb(v, criteria);
  104442. }
  104443. }
  104444. var result = 0;
  104445. for (var i2 = 0; i2 < results.length; i2++) {
  104446. if (results[i2]) {
  104447. result++;
  104448. }
  104449. }
  104450. return result;
  104451. } catch (e) {
  104452. var err = e;
  104453. err = formula_default.errorInfo(err);
  104454. return [formula_default.error.v, err];
  104455. }
  104456. },
  104457. "PRODUCT": function() {
  104458. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  104459. return formula_default.error.na;
  104460. }
  104461. for (var i2 = 0; i2 < arguments.length; i2++) {
  104462. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  104463. if (!p[0]) {
  104464. return formula_default.error.v;
  104465. }
  104466. }
  104467. try {
  104468. var dataArr = [];
  104469. for (var i2 = 0; i2 < arguments.length; i2++) {
  104470. var data = arguments[i2];
  104471. if (getObjType(data) == "array") {
  104472. if (getObjType(data[0]) == "array" && !func_methods_default.isDyadicArr(data)) {
  104473. return formula_default.error.v;
  104474. }
  104475. dataArr = dataArr.concat(func_methods_default.getDataArr(data, true));
  104476. } else if (getObjType(data) == "object" && data.startCell != null) {
  104477. dataArr = dataArr.concat(func_methods_default.getCellDataArr(data, "number", true));
  104478. } else {
  104479. dataArr.push(data);
  104480. }
  104481. }
  104482. var result = 1;
  104483. for (var i2 = 0; i2 < dataArr.length; i2++) {
  104484. var number = dataArr[i2];
  104485. if (!isRealNum(number)) {
  104486. return formula_default.error.v;
  104487. }
  104488. number = parseFloat(number);
  104489. result *= number;
  104490. }
  104491. return result;
  104492. } catch (e) {
  104493. var err = e;
  104494. err = formula_default.errorInfo(err);
  104495. return [formula_default.error.v, err];
  104496. }
  104497. },
  104498. "HARMEAN": function() {
  104499. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  104500. return formula_default.error.na;
  104501. }
  104502. for (var i2 = 0; i2 < arguments.length; i2++) {
  104503. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  104504. if (!p[0]) {
  104505. return formula_default.error.v;
  104506. }
  104507. }
  104508. try {
  104509. var dataArr = [];
  104510. for (var i2 = 0; i2 < arguments.length; i2++) {
  104511. var data = arguments[i2];
  104512. if (getObjType(data) == "array") {
  104513. if (getObjType(data[0]) == "array" && !func_methods_default.isDyadicArr(data)) {
  104514. return formula_default.error.v;
  104515. }
  104516. dataArr = dataArr.concat(func_methods_default.getDataArr(data, true));
  104517. } else if (getObjType(data) == "object" && data.startCell != null) {
  104518. dataArr = dataArr.concat(func_methods_default.getCellDataArr(data, "number", true));
  104519. } else {
  104520. dataArr.push(data);
  104521. }
  104522. }
  104523. var den = 0, len = 0;
  104524. for (var i2 = 0; i2 < dataArr.length; i2++) {
  104525. var number = dataArr[i2];
  104526. if (!isRealNum(number)) {
  104527. return formula_default.error.v;
  104528. }
  104529. number = parseFloat(number);
  104530. if (number <= 0) {
  104531. return formula_default.error.nm;
  104532. }
  104533. den += 1 / number;
  104534. len++;
  104535. }
  104536. return len / den;
  104537. } catch (e) {
  104538. var err = e;
  104539. err = formula_default.errorInfo(err);
  104540. return [formula_default.error.v, err];
  104541. }
  104542. },
  104543. "HYPGEOMDIST": function() {
  104544. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  104545. return formula_default.error.na;
  104546. }
  104547. for (var i2 = 0; i2 < arguments.length; i2++) {
  104548. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  104549. if (!p[0]) {
  104550. return formula_default.error.v;
  104551. }
  104552. }
  104553. try {
  104554. let pdf = function(x, n, M, N) {
  104555. var a = func_methods_default.factorial(M) / (func_methods_default.factorial(x) * func_methods_default.factorial(M - x));
  104556. var b = func_methods_default.factorial(N - M) / (func_methods_default.factorial(n - x) * func_methods_default.factorial(N - M - n + x));
  104557. var c2 = func_methods_default.factorial(N) / (func_methods_default.factorial(n) * func_methods_default.factorial(N - n));
  104558. return a * b / c2;
  104559. }, cdf = function(x, n, M, N) {
  104560. var sum = 0;
  104561. for (var i3 = 0; i3 <= x; i3++) {
  104562. sum += pdf(i3, n, M, N);
  104563. }
  104564. return sum;
  104565. };
  104566. var sample_s = func_methods_default.getFirstValue(arguments[0]);
  104567. if (valueIsError(sample_s)) {
  104568. return sample_s;
  104569. }
  104570. if (!isRealNum(sample_s)) {
  104571. return formula_default.error.v;
  104572. }
  104573. sample_s = parseInt(sample_s);
  104574. var number_sample = func_methods_default.getFirstValue(arguments[1]);
  104575. if (valueIsError(number_sample)) {
  104576. return number_sample;
  104577. }
  104578. if (!isRealNum(number_sample)) {
  104579. return formula_default.error.v;
  104580. }
  104581. number_sample = parseInt(number_sample);
  104582. var population_s = func_methods_default.getFirstValue(arguments[2]);
  104583. if (valueIsError(population_s)) {
  104584. return population_s;
  104585. }
  104586. if (!isRealNum(population_s)) {
  104587. return formula_default.error.v;
  104588. }
  104589. population_s = parseInt(population_s);
  104590. var number_pop = func_methods_default.getFirstValue(arguments[3]);
  104591. if (valueIsError(number_pop)) {
  104592. return number_pop;
  104593. }
  104594. if (!isRealNum(number_pop)) {
  104595. return formula_default.error.v;
  104596. }
  104597. number_pop = parseInt(number_pop);
  104598. var cumulative = func_methods_default.getCellBoolen(arguments[4]);
  104599. if (valueIsError(cumulative)) {
  104600. return cumulative;
  104601. }
  104602. if (sample_s < 0 || sample_s > Math.min(number_sample, population_s) || sample_s < Math.max(0, number_sample - number_pop + population_s)) {
  104603. return formula_default.error.nm;
  104604. }
  104605. if (number_sample <= 0 || number_sample > number_pop) {
  104606. return formula_default.error.nm;
  104607. }
  104608. if (population_s <= 0 || population_s > number_pop) {
  104609. return formula_default.error.nm;
  104610. }
  104611. if (number_pop <= 0) {
  104612. return formula_default.error.nm;
  104613. }
  104614. return cumulative ? cdf(sample_s, number_sample, population_s, number_pop) : pdf(sample_s, number_sample, population_s, number_pop);
  104615. } catch (e) {
  104616. var err = e;
  104617. err = formula_default.errorInfo(err);
  104618. return [formula_default.error.v, err];
  104619. }
  104620. },
  104621. "INTERCEPT": function() {
  104622. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  104623. return formula_default.error.na;
  104624. }
  104625. for (var i2 = 0; i2 < arguments.length; i2++) {
  104626. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  104627. if (!p[0]) {
  104628. return formula_default.error.v;
  104629. }
  104630. }
  104631. try {
  104632. var x = 0;
  104633. var data_known_y = arguments[0];
  104634. var known_y = [];
  104635. if (getObjType(data_known_y) == "array") {
  104636. if (getObjType(data_known_y[0]) == "array" && !func_methods_default.isDyadicArr(data_known_y)) {
  104637. return formula_default.error.v;
  104638. }
  104639. known_y = known_y.concat(func_methods_default.getDataArr(data_known_y, false));
  104640. } else if (getObjType(data_known_y) == "object" && data_known_y.startCell != null) {
  104641. known_y = known_y.concat(func_methods_default.getCellDataArr(data_known_y, "text", false));
  104642. } else {
  104643. known_y.push(data_known_y);
  104644. }
  104645. var data_known_x = arguments[1];
  104646. var known_x = [];
  104647. if (getObjType(data_known_x) == "array") {
  104648. if (getObjType(data_known_x[0]) == "array" && !func_methods_default.isDyadicArr(data_known_x)) {
  104649. return formula_default.error.v;
  104650. }
  104651. known_x = known_x.concat(func_methods_default.getDataArr(data_known_x, false));
  104652. } else if (getObjType(data_known_x) == "object" && data_known_x.startCell != null) {
  104653. known_x = known_x.concat(func_methods_default.getCellDataArr(data_known_x, "text", false));
  104654. } else {
  104655. known_x.push(data_known_x);
  104656. }
  104657. if (known_y.length != known_x.length) {
  104658. return formula_default.error.na;
  104659. }
  104660. var data_y = [], data_x = [];
  104661. for (var i2 = 0; i2 < known_y.length; i2++) {
  104662. var num_y = known_y[i2];
  104663. var num_x = known_x[i2];
  104664. if (isRealNum(num_y) && isRealNum(num_x)) {
  104665. data_y.push(parseFloat(num_y));
  104666. data_x.push(parseFloat(num_x));
  104667. }
  104668. }
  104669. if (func_methods_default.variance_s(data_x) == 0) {
  104670. return formula_default.error.d;
  104671. }
  104672. var xmean = jStat.mean(data_x);
  104673. var ymean = jStat.mean(data_y);
  104674. var n = data_x.length;
  104675. var num = 0;
  104676. var den = 0;
  104677. for (var i2 = 0; i2 < n; i2++) {
  104678. num += (data_x[i2] - xmean) * (data_y[i2] - ymean);
  104679. den += Math.pow(data_x[i2] - xmean, 2);
  104680. }
  104681. var b = num / den;
  104682. var a = ymean - b * xmean;
  104683. return a + b * x;
  104684. } catch (e) {
  104685. var err = e;
  104686. err = formula_default.errorInfo(err);
  104687. return [formula_default.error.v, err];
  104688. }
  104689. },
  104690. "KURT": function() {
  104691. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  104692. return formula_default.error.na;
  104693. }
  104694. for (var i2 = 0; i2 < arguments.length; i2++) {
  104695. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  104696. if (!p[0]) {
  104697. return formula_default.error.v;
  104698. }
  104699. }
  104700. try {
  104701. var dataArr = [];
  104702. for (var i2 = 0; i2 < arguments.length; i2++) {
  104703. var data = arguments[i2];
  104704. if (getObjType(data) == "array") {
  104705. if (getObjType(data[0]) == "array" && !func_methods_default.isDyadicArr(data)) {
  104706. return formula_default.error.v;
  104707. }
  104708. dataArr = dataArr.concat(func_methods_default.getDataArr(data, true));
  104709. } else if (getObjType(data) == "object" && data.startCell != null) {
  104710. dataArr = dataArr.concat(func_methods_default.getCellDataArr(data, "text", true));
  104711. } else {
  104712. dataArr.push(data);
  104713. }
  104714. }
  104715. var dataArr_n = [];
  104716. for (var j = 0; j < dataArr.length; j++) {
  104717. var number = dataArr[j];
  104718. if (!isRealNum(number)) {
  104719. return formula_default.error.v;
  104720. }
  104721. number = parseFloat(number);
  104722. dataArr_n.push(number);
  104723. }
  104724. if (dataArr_n.length < 4 || func_methods_default.standardDeviation_s(dataArr_n) == 0) {
  104725. return formula_default.error.d;
  104726. }
  104727. var mean = jStat.mean(dataArr_n);
  104728. var n = dataArr_n.length;
  104729. var sigma = 0;
  104730. for (var i2 = 0; i2 < n; i2++) {
  104731. sigma += Math.pow(dataArr_n[i2] - mean, 4);
  104732. }
  104733. sigma = sigma / Math.pow(jStat.stdev(dataArr_n, true), 4);
  104734. return n * (n + 1) / ((n - 1) * (n - 2) * (n - 3)) * sigma - 3 * (n - 1) * (n - 1) / ((n - 2) * (n - 3));
  104735. } catch (e) {
  104736. var err = e;
  104737. err = formula_default.errorInfo(err);
  104738. return [formula_default.error.v, err];
  104739. }
  104740. },
  104741. "LARGE": function() {
  104742. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  104743. return formula_default.error.na;
  104744. }
  104745. for (var i2 = 0; i2 < arguments.length; i2++) {
  104746. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  104747. if (!p[0]) {
  104748. return formula_default.error.v;
  104749. }
  104750. }
  104751. try {
  104752. var dataArr = [];
  104753. if (getObjType(arguments[0]) == "array") {
  104754. if (getObjType(arguments[0][0]) == "array" && !func_methods_default.isDyadicArr(arguments[0])) {
  104755. return formula_default.error.v;
  104756. }
  104757. dataArr = dataArr.concat(func_methods_default.getDataArr(arguments[0], true));
  104758. } else if (getObjType(arguments[0]) == "object" && arguments[0].startCell != null) {
  104759. dataArr = dataArr.concat(func_methods_default.getCellDataArr(arguments[0], "text", true));
  104760. } else {
  104761. dataArr.push(arguments[0]);
  104762. }
  104763. var dataArr_n = [];
  104764. for (var j = 0; j < dataArr.length; j++) {
  104765. var number = dataArr[j];
  104766. if (!isRealNum(number)) {
  104767. return formula_default.error.v;
  104768. }
  104769. number = parseFloat(number);
  104770. dataArr_n.push(number);
  104771. }
  104772. var n;
  104773. if (getObjType(arguments[1]) == "array") {
  104774. if (getObjType(arguments[1][0]) == "array" && !func_methods_default.isDyadicArr(arguments[1])) {
  104775. return formula_default.error.v;
  104776. }
  104777. n = func_methods_default.getDataArr(arguments[1]);
  104778. } else if (getObjType(arguments[1]) == "object" && arguments[1].startCell != null) {
  104779. if (arguments[1].rowl > 1 || arguments[1].coll > 1) {
  104780. return formula_default.error.v;
  104781. }
  104782. var cell = arguments[1].data;
  104783. if (cell == null || isRealNull(cell.v)) {
  104784. var n = 0;
  104785. } else {
  104786. var n = cell.v;
  104787. }
  104788. } else {
  104789. n = arguments[1];
  104790. }
  104791. if (getObjType(n) == "array") {
  104792. if (dataArr_n.length == 0) {
  104793. return formula_default.error.nm;
  104794. }
  104795. var result = [];
  104796. for (var i2 = 0; i2 < n.length; i2++) {
  104797. if (!isRealNum(n[i2])) {
  104798. result.push(formula_default.error.v);
  104799. continue;
  104800. }
  104801. n[i2] = Math.ceil(parseFloat(n[i2]));
  104802. if (n[i2] <= 0 || n[i2] > dataArr_n.length) {
  104803. result.push(formula_default.error.nm);
  104804. continue;
  104805. }
  104806. result.push(dataArr.sort(function(a, b) {
  104807. return b - a;
  104808. })[n[i2] - 1]);
  104809. }
  104810. return result;
  104811. } else {
  104812. if (!isRealNum(n)) {
  104813. return formula_default.error.v;
  104814. }
  104815. n = Math.ceil(parseFloat(n));
  104816. if (dataArr_n.length == 0) {
  104817. return formula_default.error.nm;
  104818. }
  104819. if (n <= 0 || n > dataArr_n.length) {
  104820. return formula_default.error.nm;
  104821. }
  104822. return dataArr.sort(function(a, b) {
  104823. return b - a;
  104824. })[n - 1];
  104825. }
  104826. } catch (e) {
  104827. var err = e;
  104828. err = formula_default.errorInfo(err);
  104829. return [formula_default.error.v, err];
  104830. }
  104831. },
  104832. "STDEVA": function() {
  104833. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  104834. return formula_default.error.na;
  104835. }
  104836. for (var i2 = 0; i2 < arguments.length; i2++) {
  104837. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  104838. if (!p[0]) {
  104839. return formula_default.error.v;
  104840. }
  104841. }
  104842. try {
  104843. var dataArr = [];
  104844. for (var i2 = 0; i2 < arguments.length; i2++) {
  104845. var data = arguments[i2];
  104846. if (getObjType(data) == "array") {
  104847. if (getObjType(data[0]) == "array" && !func_methods_default.isDyadicArr(data)) {
  104848. return formula_default.error.v;
  104849. }
  104850. dataArr = dataArr.concat(func_methods_default.getDataArr(data, false));
  104851. } else if (getObjType(data) == "object" && data.startCell != null) {
  104852. dataArr = dataArr.concat(func_methods_default.getCellDataArr(data, "text", false));
  104853. } else {
  104854. dataArr.push(data);
  104855. }
  104856. }
  104857. var dataArr_n = [];
  104858. for (var j = 0; j < dataArr.length; j++) {
  104859. var number = dataArr[j];
  104860. if (!isRealNum(number)) {
  104861. if (number.toString().toLowerCase() == "true") {
  104862. number = 1;
  104863. } else {
  104864. number = 0;
  104865. }
  104866. } else {
  104867. number = parseFloat(number);
  104868. }
  104869. dataArr_n.push(number);
  104870. }
  104871. if (dataArr_n.length == 0) {
  104872. return 0;
  104873. }
  104874. if (dataArr_n.length == 1) {
  104875. return formula_default.error.d;
  104876. }
  104877. return func_methods_default.standardDeviation_s(dataArr_n);
  104878. } catch (e) {
  104879. var err = e;
  104880. err = formula_default.errorInfo(err);
  104881. return [formula_default.error.v, err];
  104882. }
  104883. },
  104884. "STDEVP": function() {
  104885. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  104886. return formula_default.error.na;
  104887. }
  104888. for (var i2 = 0; i2 < arguments.length; i2++) {
  104889. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  104890. if (!p[0]) {
  104891. return formula_default.error.v;
  104892. }
  104893. }
  104894. try {
  104895. var dataArr = [];
  104896. for (var i2 = 0; i2 < arguments.length; i2++) {
  104897. var data = arguments[i2];
  104898. if (getObjType(data) == "array") {
  104899. if (getObjType(data[0]) == "array" && !func_methods_default.isDyadicArr(data)) {
  104900. return formula_default.error.v;
  104901. }
  104902. dataArr = dataArr.concat(func_methods_default.getDataArr(data, true));
  104903. } else if (getObjType(data) == "object" && data.startCell != null) {
  104904. dataArr = dataArr.concat(func_methods_default.getCellDataArr(data, "text", true));
  104905. } else {
  104906. dataArr.push(data);
  104907. }
  104908. }
  104909. var dataArr_n = [];
  104910. for (var j = 0; j < dataArr.length; j++) {
  104911. var number = dataArr[j];
  104912. if (!isRealNum(number)) {
  104913. return formula_default.error.v;
  104914. }
  104915. number = parseFloat(number);
  104916. dataArr_n.push(number);
  104917. }
  104918. if (dataArr_n.length == 0) {
  104919. return 0;
  104920. }
  104921. if (dataArr_n.length == 1) {
  104922. return formula_default.error.d;
  104923. }
  104924. return func_methods_default.standardDeviation(dataArr_n);
  104925. } catch (e) {
  104926. var err = e;
  104927. err = formula_default.errorInfo(err);
  104928. return [formula_default.error.v, err];
  104929. }
  104930. },
  104931. "GEOMEAN": function() {
  104932. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  104933. return formula_default.error.na;
  104934. }
  104935. for (var i2 = 0; i2 < arguments.length; i2++) {
  104936. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  104937. if (!p[0]) {
  104938. return formula_default.error.v;
  104939. }
  104940. }
  104941. try {
  104942. var dataArr = [];
  104943. for (var i2 = 0; i2 < arguments.length; i2++) {
  104944. var data = arguments[i2];
  104945. if (getObjType(data) == "array") {
  104946. if (getObjType(data[0]) == "array" && !func_methods_default.isDyadicArr(data)) {
  104947. return formula_default.error.v;
  104948. }
  104949. dataArr = dataArr.concat(func_methods_default.getDataArr(data, true));
  104950. } else if (getObjType(data) == "object" && data.startCell != null) {
  104951. dataArr = dataArr.concat(func_methods_default.getCellDataArr(data, "text", true));
  104952. } else {
  104953. if (getObjType(data) == "boolean") {
  104954. if (data.toString().toLowerCase() == "true") {
  104955. dataArr.push(1);
  104956. } else if (data.toString().toLowerCase() == "false") {
  104957. dataArr.push(0);
  104958. }
  104959. } else if (isRealNum(data)) {
  104960. dataArr.push(data);
  104961. } else {
  104962. return formula_default.error.v;
  104963. }
  104964. }
  104965. }
  104966. var dataArr_n = [];
  104967. for (var j = 0; j < dataArr.length; j++) {
  104968. var number = dataArr[j];
  104969. if (!isRealNum(number)) {
  104970. continue;
  104971. }
  104972. number = parseFloat(number);
  104973. if (number <= 0) {
  104974. return formula_default.error.nm;
  104975. }
  104976. dataArr_n.push(number);
  104977. }
  104978. if (dataArr_n.length == 0) {
  104979. return formula_default.error.nm;
  104980. }
  104981. return jStat.geomean(dataArr_n);
  104982. } catch (e) {
  104983. var err = e;
  104984. err = formula_default.errorInfo(err);
  104985. return [formula_default.error.v, err];
  104986. }
  104987. },
  104988. "RANK_EQ": function() {
  104989. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  104990. return formula_default.error.na;
  104991. }
  104992. for (var i2 = 0; i2 < arguments.length; i2++) {
  104993. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  104994. if (!p[0]) {
  104995. return formula_default.error.v;
  104996. }
  104997. }
  104998. try {
  104999. var number = func_methods_default.getFirstValue(arguments[0]);
  105000. if (valueIsError(number)) {
  105001. return number;
  105002. }
  105003. if (!isRealNum(number)) {
  105004. return formula_default.error.v;
  105005. }
  105006. number = parseFloat(number);
  105007. var data_ref = arguments[1];
  105008. var ref = [];
  105009. if (getObjType(data_ref) == "array") {
  105010. if (getObjType(data_ref[0]) == "array" && !func_methods_default.isDyadicArr(data_ref)) {
  105011. return formula_default.error.v;
  105012. }
  105013. ref = ref.concat(func_methods_default.getDataArr(data_ref, true));
  105014. } else if (getObjType(data_ref) == "object" && data_ref.startCell != null) {
  105015. ref = ref.concat(func_methods_default.getCellDataArr(data_ref, "number", true));
  105016. } else {
  105017. ref.push(data_ref);
  105018. }
  105019. var ref_n = [];
  105020. for (var j = 0; j < ref.length; j++) {
  105021. var num = ref[j];
  105022. if (!isRealNum(num)) {
  105023. return formula_default.error.v;
  105024. }
  105025. num = parseFloat(num);
  105026. ref_n.push(num);
  105027. }
  105028. if (arguments.length == 3) {
  105029. var order = func_methods_default.getCellBoolen(arguments[2]);
  105030. if (valueIsError(order)) {
  105031. return order;
  105032. }
  105033. } else {
  105034. var order = false;
  105035. }
  105036. var sort = order ? function(a, b) {
  105037. return a - b;
  105038. } : function(a, b) {
  105039. return b - a;
  105040. };
  105041. ref_n = ref_n.sort(sort);
  105042. var index2 = ref_n.indexOf(number);
  105043. if (index2 == -1) {
  105044. return formula_default.error.na;
  105045. } else {
  105046. return index2 + 1;
  105047. }
  105048. } catch (e) {
  105049. var err = e;
  105050. err = formula_default.errorInfo(err);
  105051. return [formula_default.error.v, err];
  105052. }
  105053. },
  105054. "RANK_AVG": function() {
  105055. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  105056. return formula_default.error.na;
  105057. }
  105058. for (var i2 = 0; i2 < arguments.length; i2++) {
  105059. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  105060. if (!p[0]) {
  105061. return formula_default.error.v;
  105062. }
  105063. }
  105064. try {
  105065. var number = func_methods_default.getFirstValue(arguments[0]);
  105066. if (valueIsError(number)) {
  105067. return number;
  105068. }
  105069. if (!isRealNum(number)) {
  105070. return formula_default.error.v;
  105071. }
  105072. number = parseFloat(number);
  105073. var data_ref = arguments[1];
  105074. var ref = [];
  105075. if (getObjType(data_ref) == "array") {
  105076. if (getObjType(data_ref[0]) == "array" && !func_methods_default.isDyadicArr(data_ref)) {
  105077. return formula_default.error.v;
  105078. }
  105079. ref = ref.concat(func_methods_default.getDataArr(data_ref, true));
  105080. } else if (getObjType(data_ref) == "object" && data_ref.startCell != null) {
  105081. ref = ref.concat(func_methods_default.getCellDataArr(data_ref, "number", true));
  105082. } else {
  105083. ref.push(data_ref);
  105084. }
  105085. var ref_n = [];
  105086. for (var j = 0; j < ref.length; j++) {
  105087. var num = ref[j];
  105088. if (!isRealNum(num)) {
  105089. return formula_default.error.v;
  105090. }
  105091. num = parseFloat(num);
  105092. ref_n.push(num);
  105093. }
  105094. if (arguments.length == 3) {
  105095. var order = func_methods_default.getFirstValue(arguments[2]);
  105096. if (valueIsError(order)) {
  105097. return order;
  105098. }
  105099. if (getObjType(order) == "boolean") {
  105100. } else if (getObjType(order) == "string" && (order.toLowerCase() == "true" || order.toLowerCase() == "false")) {
  105101. if (order.toLowerCase() == "true") {
  105102. order = true;
  105103. }
  105104. if (order.toLowerCase() == "false") {
  105105. order = false;
  105106. }
  105107. } else if (isRealNum(order)) {
  105108. order = parseFloat(order);
  105109. order = order == 0 ? false : true;
  105110. } else {
  105111. return formula_default.error.v;
  105112. }
  105113. } else {
  105114. var order = false;
  105115. }
  105116. var sort = order ? function(a, b) {
  105117. return a - b;
  105118. } : function(a, b) {
  105119. return b - a;
  105120. };
  105121. ref_n = ref_n.sort(sort);
  105122. var count = 0;
  105123. for (var i2 = 0; i2 < ref_n.length; i2++) {
  105124. if (ref_n[i2] == number) {
  105125. count++;
  105126. }
  105127. }
  105128. return count > 1 ? (2 * ref_n.indexOf(number) + count + 1) / 2 : ref_n.indexOf(number) + 1;
  105129. } catch (e) {
  105130. var err = e;
  105131. err = formula_default.errorInfo(err);
  105132. return [formula_default.error.v, err];
  105133. }
  105134. },
  105135. "PERCENTRANK_EXC": function() {
  105136. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  105137. return formula_default.error.na;
  105138. }
  105139. for (var i2 = 0; i2 < arguments.length; i2++) {
  105140. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  105141. if (!p[0]) {
  105142. return formula_default.error.v;
  105143. }
  105144. }
  105145. try {
  105146. var data_ref = arguments[0];
  105147. var ref = [];
  105148. if (getObjType(data_ref) == "array") {
  105149. if (getObjType(data_ref[0]) == "array" && !func_methods_default.isDyadicArr(data_ref)) {
  105150. return formula_default.error.v;
  105151. }
  105152. ref = ref.concat(func_methods_default.getDataArr(data_ref, true));
  105153. } else if (getObjType(data_ref) == "object" && data_ref.startCell != null) {
  105154. ref = ref.concat(func_methods_default.getCellDataArr(data_ref, "number", true));
  105155. } else {
  105156. ref.push(data_ref);
  105157. }
  105158. var ref_n = [];
  105159. for (var j = 0; j < ref.length; j++) {
  105160. var number = ref[j];
  105161. if (!isRealNum(number)) {
  105162. return formula_default.error.v;
  105163. }
  105164. number = parseFloat(number);
  105165. ref_n.push(number);
  105166. }
  105167. var x = func_methods_default.getFirstValue(arguments[1]);
  105168. if (valueIsError(x)) {
  105169. return x;
  105170. }
  105171. if (!isRealNum(x)) {
  105172. return formula_default.error.v;
  105173. }
  105174. x = parseFloat(x);
  105175. if (arguments.length == 3) {
  105176. var significance = func_methods_default.getFirstValue(arguments[2]);
  105177. if (valueIsError(significance)) {
  105178. return significance;
  105179. }
  105180. if (!isRealNum(significance)) {
  105181. return formula_default.error.v;
  105182. }
  105183. significance = parseInt(significance);
  105184. } else {
  105185. var significance = 3;
  105186. }
  105187. if (ref_n.length == 0) {
  105188. return formula_default.error.nm;
  105189. }
  105190. if (significance < 1) {
  105191. return formula_default.error.nm;
  105192. }
  105193. if (ref_n.length == 1 && ref_n[0] == x) {
  105194. return 1;
  105195. }
  105196. ref_n = ref_n.sort(function(a, b) {
  105197. return a - b;
  105198. });
  105199. var uniques = window.luckysheet_function.UNIQUE.f(ref_n)[0];
  105200. var n = ref_n.length;
  105201. var m = uniques.length;
  105202. var power = Math.pow(10, significance);
  105203. var result = 0;
  105204. var match = false;
  105205. var i2 = 0;
  105206. while (!match && i2 < m) {
  105207. if (x === uniques[i2]) {
  105208. result = (ref_n.indexOf(uniques[i2]) + 1) / (n + 1);
  105209. match = true;
  105210. } else if (x >= uniques[i2] && (x < uniques[i2 + 1] || i2 === m - 1)) {
  105211. result = (ref_n.lastIndexOf(uniques[i2]) + 1 + (x - uniques[i2]) / (uniques[i2 + 1] - uniques[i2])) / (n + 1);
  105212. match = true;
  105213. }
  105214. i2++;
  105215. }
  105216. if (isNaN(result)) {
  105217. return formula_default.error.na;
  105218. } else {
  105219. return Math.floor(result * power) / power;
  105220. }
  105221. } catch (e) {
  105222. var err = e;
  105223. err = formula_default.errorInfo(err);
  105224. return [formula_default.error.v, err];
  105225. }
  105226. },
  105227. "PERCENTRANK_INC": function() {
  105228. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  105229. return formula_default.error.na;
  105230. }
  105231. for (var i2 = 0; i2 < arguments.length; i2++) {
  105232. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  105233. if (!p[0]) {
  105234. return formula_default.error.v;
  105235. }
  105236. }
  105237. try {
  105238. var data_ref = arguments[0];
  105239. var ref = [];
  105240. if (getObjType(data_ref) == "array") {
  105241. if (getObjType(data_ref[0]) == "array" && !func_methods_default.isDyadicArr(data_ref)) {
  105242. return formula_default.error.v;
  105243. }
  105244. ref = ref.concat(func_methods_default.getDataArr(data_ref, true));
  105245. } else if (getObjType(data_ref) == "object" && data_ref.startCell != null) {
  105246. ref = ref.concat(func_methods_default.getCellDataArr(data_ref, "number", true));
  105247. } else {
  105248. ref.push(data_ref);
  105249. }
  105250. var ref_n = [];
  105251. for (var j = 0; j < ref.length; j++) {
  105252. var number = ref[j];
  105253. if (!isRealNum(number)) {
  105254. return formula_default.error.v;
  105255. }
  105256. number = parseFloat(number);
  105257. ref_n.push(number);
  105258. }
  105259. var x = func_methods_default.getFirstValue(arguments[1]);
  105260. if (valueIsError(x)) {
  105261. return x;
  105262. }
  105263. if (!isRealNum(x)) {
  105264. return formula_default.error.v;
  105265. }
  105266. x = parseFloat(x);
  105267. if (arguments.length == 3) {
  105268. var significance = func_methods_default.getFirstValue(arguments[2]);
  105269. if (valueIsError(significance)) {
  105270. return significance;
  105271. }
  105272. if (!isRealNum(significance)) {
  105273. return formula_default.error.v;
  105274. }
  105275. significance = parseInt(significance);
  105276. } else {
  105277. var significance = 3;
  105278. }
  105279. if (ref_n.length == 0) {
  105280. return formula_default.error.nm;
  105281. }
  105282. if (significance < 1) {
  105283. return formula_default.error.nm;
  105284. }
  105285. if (ref_n.length == 1 && ref_n[0] == x) {
  105286. return 1;
  105287. }
  105288. ref_n = ref_n.sort(function(a, b) {
  105289. return a - b;
  105290. });
  105291. var uniques = window.luckysheet_function.UNIQUE.f(ref_n)[0];
  105292. var n = ref_n.length;
  105293. var m = uniques.length;
  105294. var power = Math.pow(10, significance);
  105295. var result = 0;
  105296. var match = false;
  105297. var i2 = 0;
  105298. while (!match && i2 < m) {
  105299. if (x === uniques[i2]) {
  105300. result = ref_n.indexOf(uniques[i2]) / (n - 1);
  105301. match = true;
  105302. } else if (x >= uniques[i2] && (x < uniques[i2 + 1] || i2 === m - 1)) {
  105303. result = (ref_n.lastIndexOf(uniques[i2]) + (x - uniques[i2]) / (uniques[i2 + 1] - uniques[i2])) / (n - 1);
  105304. match = true;
  105305. }
  105306. i2++;
  105307. }
  105308. if (isNaN(result)) {
  105309. return formula_default.error.na;
  105310. } else {
  105311. return Math.floor(result * power) / power;
  105312. }
  105313. } catch (e) {
  105314. var err = e;
  105315. err = formula_default.errorInfo(err);
  105316. return [formula_default.error.v, err];
  105317. }
  105318. },
  105319. "FORECAST": function() {
  105320. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  105321. return formula_default.error.na;
  105322. }
  105323. for (var i2 = 0; i2 < arguments.length; i2++) {
  105324. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  105325. if (!p[0]) {
  105326. return formula_default.error.v;
  105327. }
  105328. }
  105329. try {
  105330. var x = func_methods_default.getFirstValue(arguments[0]);
  105331. if (valueIsError(x)) {
  105332. return x;
  105333. }
  105334. if (!isRealNum(x)) {
  105335. return formula_default.error.v;
  105336. }
  105337. x = parseFloat(x);
  105338. var data_known_y = arguments[1];
  105339. var known_y = [];
  105340. if (getObjType(data_known_y) == "array") {
  105341. if (getObjType(data_known_y[0]) == "array" && !func_methods_default.isDyadicArr(data_known_y)) {
  105342. return formula_default.error.v;
  105343. }
  105344. known_y = known_y.concat(func_methods_default.getDataArr(data_known_y, false));
  105345. } else if (getObjType(data_known_y) == "object" && data_known_y.startCell != null) {
  105346. known_y = known_y.concat(func_methods_default.getCellDataArr(data_known_y, "text", false));
  105347. } else {
  105348. known_y.push(data_known_y);
  105349. }
  105350. var data_known_x = arguments[2];
  105351. var known_x = [];
  105352. if (getObjType(data_known_x) == "array") {
  105353. if (getObjType(data_known_x[0]) == "array" && !func_methods_default.isDyadicArr(data_known_x)) {
  105354. return formula_default.error.v;
  105355. }
  105356. known_x = known_x.concat(func_methods_default.getDataArr(data_known_x, false));
  105357. } else if (getObjType(data_known_x) == "object" && data_known_x.startCell != null) {
  105358. known_x = known_x.concat(func_methods_default.getCellDataArr(data_known_x, "text", false));
  105359. } else {
  105360. known_x.push(data_known_x);
  105361. }
  105362. if (known_y.length != known_x.length) {
  105363. return formula_default.error.na;
  105364. }
  105365. var data_y = [], data_x = [];
  105366. for (var i2 = 0; i2 < known_y.length; i2++) {
  105367. var num_y = known_y[i2];
  105368. var num_x = known_x[i2];
  105369. if (isRealNum(num_y) && isRealNum(num_x)) {
  105370. data_y.push(parseFloat(num_y));
  105371. data_x.push(parseFloat(num_x));
  105372. }
  105373. }
  105374. if (func_methods_default.variance_s(data_x) == 0) {
  105375. return formula_default.error.d;
  105376. }
  105377. var xmean = jStat.mean(data_x);
  105378. var ymean = jStat.mean(data_y);
  105379. var n = data_x.length;
  105380. var num = 0;
  105381. var den = 0;
  105382. for (var i2 = 0; i2 < n; i2++) {
  105383. num += (data_x[i2] - xmean) * (data_y[i2] - ymean);
  105384. den += Math.pow(data_x[i2] - xmean, 2);
  105385. }
  105386. var b = num / den;
  105387. var a = ymean - b * xmean;
  105388. return a + b * x;
  105389. } catch (e) {
  105390. var err = e;
  105391. err = formula_default.errorInfo(err);
  105392. return [formula_default.error.v, err];
  105393. }
  105394. },
  105395. "FISHERINV": function() {
  105396. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  105397. return formula_default.error.na;
  105398. }
  105399. for (var i2 = 0; i2 < arguments.length; i2++) {
  105400. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  105401. if (!p[0]) {
  105402. return formula_default.error.v;
  105403. }
  105404. }
  105405. try {
  105406. var y = func_methods_default.getFirstValue(arguments[0]);
  105407. if (valueIsError(y)) {
  105408. return y;
  105409. }
  105410. if (!isRealNum(y)) {
  105411. return formula_default.error.v;
  105412. }
  105413. y = parseFloat(y);
  105414. var e2y = Math.exp(2 * y);
  105415. return (e2y - 1) / (e2y + 1);
  105416. } catch (e) {
  105417. var err = e;
  105418. err = formula_default.errorInfo(err);
  105419. return [formula_default.error.v, err];
  105420. }
  105421. },
  105422. "FISHER": function() {
  105423. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  105424. return formula_default.error.na;
  105425. }
  105426. for (var i2 = 0; i2 < arguments.length; i2++) {
  105427. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  105428. if (!p[0]) {
  105429. return formula_default.error.v;
  105430. }
  105431. }
  105432. try {
  105433. var x = func_methods_default.getFirstValue(arguments[0]);
  105434. if (valueIsError(x)) {
  105435. return x;
  105436. }
  105437. if (!isRealNum(x)) {
  105438. return formula_default.error.v;
  105439. }
  105440. x = parseFloat(x);
  105441. if (x <= -1 || x >= 1) {
  105442. return formula_default.error.nm;
  105443. }
  105444. return Math.log((1 + x) / (1 - x)) / 2;
  105445. } catch (e) {
  105446. var err = e;
  105447. err = formula_default.errorInfo(err);
  105448. return [formula_default.error.v, err];
  105449. }
  105450. },
  105451. "MODE_SNGL": function() {
  105452. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  105453. return formula_default.error.na;
  105454. }
  105455. for (var i2 = 0; i2 < arguments.length; i2++) {
  105456. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  105457. if (!p[0]) {
  105458. return formula_default.error.v;
  105459. }
  105460. }
  105461. try {
  105462. var dataArr = [];
  105463. for (var i2 = 0; i2 < arguments.length; i2++) {
  105464. var data = arguments[i2];
  105465. if (getObjType(data) == "array") {
  105466. if (getObjType(data[0]) == "array" && !func_methods_default.isDyadicArr(data)) {
  105467. return formula_default.error.v;
  105468. }
  105469. dataArr = dataArr.concat(func_methods_default.getDataArr(data, true));
  105470. } else if (getObjType(data) == "object" && data.startCell != null) {
  105471. dataArr = dataArr.concat(func_methods_default.getCellDataArr(data, "number", true));
  105472. } else {
  105473. if (!isRealNum(data)) {
  105474. return formula_default.error.v;
  105475. }
  105476. dataArr.push(data);
  105477. }
  105478. }
  105479. var dataArr_n = [];
  105480. for (var i2 = 0; i2 < dataArr.length; i2++) {
  105481. var number = dataArr[i2];
  105482. if (isRealNum(number)) {
  105483. dataArr_n.push(parseFloat(number));
  105484. }
  105485. }
  105486. var count = {};
  105487. var maxItems = [];
  105488. var max = 0;
  105489. var currentItem;
  105490. for (var i2 = 0; i2 < dataArr_n.length; i2++) {
  105491. currentItem = dataArr_n[i2];
  105492. count[currentItem] = count[currentItem] ? count[currentItem] + 1 : 1;
  105493. if (count[currentItem] > max) {
  105494. max = count[currentItem];
  105495. maxItems = [];
  105496. }
  105497. if (count[currentItem] == max) {
  105498. maxItems[maxItems.length] = currentItem;
  105499. }
  105500. }
  105501. if (max <= 1) {
  105502. return formula_default.error.na;
  105503. }
  105504. var resultIndex = dataArr_n.indexOf(maxItems[0]);
  105505. for (var j = 0; j < maxItems.length; j++) {
  105506. var index2 = dataArr_n.indexOf(maxItems[j]);
  105507. if (index2 < resultIndex) {
  105508. resultIndex = index2;
  105509. }
  105510. }
  105511. return dataArr_n[resultIndex];
  105512. } catch (e) {
  105513. var err = e;
  105514. err = formula_default.errorInfo(err);
  105515. return [formula_default.error.v, err];
  105516. }
  105517. },
  105518. "WEIBULL_DIST": function() {
  105519. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  105520. return formula_default.error.na;
  105521. }
  105522. for (var i2 = 0; i2 < arguments.length; i2++) {
  105523. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  105524. if (!p[0]) {
  105525. return formula_default.error.v;
  105526. }
  105527. }
  105528. try {
  105529. var x = func_methods_default.getFirstValue(arguments[0]);
  105530. if (valueIsError(x)) {
  105531. return x;
  105532. }
  105533. if (!isRealNum(x)) {
  105534. return formula_default.error.v;
  105535. }
  105536. x = parseFloat(x);
  105537. var alpha = func_methods_default.getFirstValue(arguments[1]);
  105538. if (valueIsError(alpha)) {
  105539. return alpha;
  105540. }
  105541. if (!isRealNum(alpha)) {
  105542. return formula_default.error.v;
  105543. }
  105544. alpha = parseFloat(alpha);
  105545. var beta = func_methods_default.getFirstValue(arguments[2]);
  105546. if (valueIsError(beta)) {
  105547. return beta;
  105548. }
  105549. if (!isRealNum(beta)) {
  105550. return formula_default.error.v;
  105551. }
  105552. beta = parseFloat(beta);
  105553. var cumulative = func_methods_default.getCellBoolen(arguments[3]);
  105554. if (valueIsError(cumulative)) {
  105555. return cumulative;
  105556. }
  105557. if (x < 0 || alpha <= 0 || beta <= 0) {
  105558. return formula_default.error.nm;
  105559. }
  105560. return cumulative ? 1 - Math.exp(-Math.pow(x / beta, alpha)) : Math.pow(x, alpha - 1) * Math.exp(-Math.pow(x / beta, alpha)) * alpha / Math.pow(beta, alpha);
  105561. } catch (e) {
  105562. var err = e;
  105563. err = formula_default.errorInfo(err);
  105564. return [formula_default.error.v, err];
  105565. }
  105566. },
  105567. "AVEDEV": function() {
  105568. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  105569. return formula_default.error.na;
  105570. }
  105571. for (var i2 = 0; i2 < arguments.length; i2++) {
  105572. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  105573. if (!p[0]) {
  105574. return formula_default.error.v;
  105575. }
  105576. }
  105577. try {
  105578. var dataArr = [];
  105579. for (var i2 = 0; i2 < arguments.length; i2++) {
  105580. var data = arguments[i2];
  105581. if (getObjType(data) == "array") {
  105582. if (getObjType(data[0]) == "array" && !func_methods_default.isDyadicArr(data)) {
  105583. return formula_default.error.v;
  105584. }
  105585. dataArr = dataArr.concat(func_methods_default.getDataArr(data, true));
  105586. } else if (getObjType(data) == "object" && data.startCell != null) {
  105587. dataArr = dataArr.concat(func_methods_default.getCellDataArr(data, "number", true));
  105588. } else {
  105589. if (!isRealNum(data)) {
  105590. return formula_default.error.v;
  105591. }
  105592. dataArr.push(data);
  105593. }
  105594. }
  105595. var dataArr_n = [];
  105596. for (var i2 = 0; i2 < dataArr.length; i2++) {
  105597. var number = dataArr[i2];
  105598. if (isRealNum(number)) {
  105599. dataArr_n.push(parseFloat(number));
  105600. }
  105601. }
  105602. if (dataArr_n.length == 0) {
  105603. return formula_default.error.nm;
  105604. }
  105605. return jStat.sum(jStat(dataArr_n).subtract(jStat.mean(dataArr_n)).abs()[0]) / dataArr_n.length;
  105606. } catch (e) {
  105607. var err = e;
  105608. err = formula_default.errorInfo(err);
  105609. return [formula_default.error.v, err];
  105610. }
  105611. },
  105612. "AVERAGEA": function() {
  105613. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  105614. return formula_default.error.na;
  105615. }
  105616. for (var i2 = 0; i2 < arguments.length; i2++) {
  105617. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  105618. if (!p[0]) {
  105619. return formula_default.error.v;
  105620. }
  105621. }
  105622. try {
  105623. var dataArr = [];
  105624. for (var i2 = 0; i2 < arguments.length; i2++) {
  105625. var data = arguments[i2];
  105626. if (getObjType(data) == "array") {
  105627. if (getObjType(data[0]) == "array" && !func_methods_default.isDyadicArr(data)) {
  105628. return formula_default.error.v;
  105629. }
  105630. dataArr = dataArr.concat(func_methods_default.getDataArr(data, false));
  105631. } else if (getObjType(data) == "object" && data.startCell != null) {
  105632. dataArr = dataArr.concat(func_methods_default.getCellDataArr(data, "number", true));
  105633. } else {
  105634. if (number.toString.toLowerCase() == "true") {
  105635. dataArr.push(1);
  105636. } else if (number.toString.toLowerCase() == "false") {
  105637. dataArr.push(0);
  105638. } else if (isRealNum(data)) {
  105639. dataArr.push(data);
  105640. } else {
  105641. return formula_default.error.v;
  105642. }
  105643. }
  105644. }
  105645. var sum = 0, count = 0;
  105646. for (var i2 = 0; i2 < dataArr.length; i2++) {
  105647. var number = dataArr[i2];
  105648. if (isRealNum(number)) {
  105649. sum += parseFloat(number);
  105650. } else {
  105651. if (number.toString().toLowerCase() == "true") {
  105652. sum += 1;
  105653. } else {
  105654. sum += 0;
  105655. }
  105656. }
  105657. count++;
  105658. }
  105659. if (count == 0) {
  105660. return formula_default.error.d;
  105661. }
  105662. return sum / count;
  105663. } catch (e) {
  105664. var err = e;
  105665. err = formula_default.errorInfo(err);
  105666. return [formula_default.error.v, err];
  105667. }
  105668. },
  105669. "BINOM_DIST": function() {
  105670. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  105671. return formula_default.error.na;
  105672. }
  105673. for (var i2 = 0; i2 < arguments.length; i2++) {
  105674. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  105675. if (!p[0]) {
  105676. return formula_default.error.v;
  105677. }
  105678. }
  105679. try {
  105680. var number_s = func_methods_default.getFirstValue(arguments[0]);
  105681. if (valueIsError(number_s)) {
  105682. return number_s;
  105683. }
  105684. if (!isRealNum(number_s)) {
  105685. return formula_default.error.v;
  105686. }
  105687. number_s = parseInt(number_s);
  105688. var trials = func_methods_default.getFirstValue(arguments[1]);
  105689. if (valueIsError(trials)) {
  105690. return trials;
  105691. }
  105692. if (!isRealNum(trials)) {
  105693. return formula_default.error.v;
  105694. }
  105695. trials = parseInt(trials);
  105696. var probability_s = func_methods_default.getFirstValue(arguments[2]);
  105697. if (valueIsError(probability_s)) {
  105698. return probability_s;
  105699. }
  105700. if (!isRealNum(probability_s)) {
  105701. return formula_default.error.v;
  105702. }
  105703. probability_s = parseFloat(probability_s);
  105704. var cumulative = func_methods_default.getCellBoolen(arguments[3]);
  105705. if (valueIsError(cumulative)) {
  105706. return cumulative;
  105707. }
  105708. if (number_s < 0 || number_s > trials) {
  105709. return formula_default.error.nm;
  105710. }
  105711. if (probability_s < 0 || probability_s > 1) {
  105712. return formula_default.error.nm;
  105713. }
  105714. return cumulative ? jStat.binomial.cdf(number_s, trials, probability_s) : jStat.binomial.pdf(number_s, trials, probability_s);
  105715. } catch (e) {
  105716. var err = e;
  105717. err = formula_default.errorInfo(err);
  105718. return [formula_default.error.v, err];
  105719. }
  105720. },
  105721. "BINOM_INV": function() {
  105722. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  105723. return formula_default.error.na;
  105724. }
  105725. for (var i2 = 0; i2 < arguments.length; i2++) {
  105726. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  105727. if (!p[0]) {
  105728. return formula_default.error.v;
  105729. }
  105730. }
  105731. try {
  105732. var trials = func_methods_default.getFirstValue(arguments[0]);
  105733. if (valueIsError(trials)) {
  105734. return trials;
  105735. }
  105736. if (!isRealNum(trials)) {
  105737. return formula_default.error.v;
  105738. }
  105739. trials = parseInt(trials);
  105740. var probability_s = func_methods_default.getFirstValue(arguments[1]);
  105741. if (valueIsError(probability_s)) {
  105742. return probability_s;
  105743. }
  105744. if (!isRealNum(probability_s)) {
  105745. return formula_default.error.v;
  105746. }
  105747. probability_s = parseFloat(probability_s);
  105748. var alpha = func_methods_default.getFirstValue(arguments[2]);
  105749. if (valueIsError(alpha)) {
  105750. return alpha;
  105751. }
  105752. if (!isRealNum(alpha)) {
  105753. return formula_default.error.v;
  105754. }
  105755. alpha = parseFloat(alpha);
  105756. if (trials < 0) {
  105757. return formula_default.error.nm;
  105758. }
  105759. if (probability_s < 0 || probability_s > 1) {
  105760. return formula_default.error.nm;
  105761. }
  105762. if (alpha < 0 || alpha > 1) {
  105763. return formula_default.error.nm;
  105764. }
  105765. var x = 0;
  105766. while (x <= trials) {
  105767. if (jStat.binomial.cdf(x, trials, probability_s) >= alpha) {
  105768. return x;
  105769. }
  105770. x++;
  105771. }
  105772. } catch (e) {
  105773. var err = e;
  105774. err = formula_default.errorInfo(err);
  105775. return [formula_default.error.v, err];
  105776. }
  105777. },
  105778. "CONFIDENCE_NORM": function() {
  105779. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  105780. return formula_default.error.na;
  105781. }
  105782. for (var i2 = 0; i2 < arguments.length; i2++) {
  105783. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  105784. if (!p[0]) {
  105785. return formula_default.error.v;
  105786. }
  105787. }
  105788. try {
  105789. var alpha = func_methods_default.getFirstValue(arguments[0]);
  105790. if (valueIsError(alpha)) {
  105791. return alpha;
  105792. }
  105793. if (!isRealNum(alpha)) {
  105794. return formula_default.error.v;
  105795. }
  105796. alpha = parseFloat(alpha);
  105797. var standard_dev = func_methods_default.getFirstValue(arguments[1]);
  105798. if (valueIsError(standard_dev)) {
  105799. return standard_dev;
  105800. }
  105801. if (!isRealNum(standard_dev)) {
  105802. return formula_default.error.v;
  105803. }
  105804. standard_dev = parseFloat(standard_dev);
  105805. var size = func_methods_default.getFirstValue(arguments[2]);
  105806. if (valueIsError(size)) {
  105807. return size;
  105808. }
  105809. if (!isRealNum(size)) {
  105810. return formula_default.error.v;
  105811. }
  105812. size = parseInt(size);
  105813. if (alpha <= 0 || alpha >= 1) {
  105814. return formula_default.error.nm;
  105815. }
  105816. if (standard_dev <= 0) {
  105817. return formula_default.error.nm;
  105818. }
  105819. if (size < 1) {
  105820. return formula_default.error.nm;
  105821. }
  105822. return jStat.normalci(1, alpha, standard_dev, size)[1] - 1;
  105823. } catch (e) {
  105824. var err = e;
  105825. err = formula_default.errorInfo(err);
  105826. return [formula_default.error.v, err];
  105827. }
  105828. },
  105829. "CORREL": function() {
  105830. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  105831. return formula_default.error.na;
  105832. }
  105833. for (var i2 = 0; i2 < arguments.length; i2++) {
  105834. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  105835. if (!p[0]) {
  105836. return formula_default.error.v;
  105837. }
  105838. }
  105839. try {
  105840. var data_known_y = arguments[0];
  105841. var known_y = [];
  105842. if (getObjType(data_known_y) == "array") {
  105843. if (getObjType(data_known_y[0]) == "array" && !func_methods_default.isDyadicArr(data_known_y)) {
  105844. return formula_default.error.v;
  105845. }
  105846. known_y = known_y.concat(func_methods_default.getDataArr(data_known_y, false));
  105847. } else if (getObjType(data_known_y) == "object" && data_known_y.startCell != null) {
  105848. known_y = known_y.concat(func_methods_default.getCellDataArr(data_known_y, "text", false));
  105849. } else {
  105850. known_y.push(data_known_y);
  105851. }
  105852. var data_known_x = arguments[1];
  105853. var known_x = [];
  105854. if (getObjType(data_known_x) == "array") {
  105855. if (getObjType(data_known_x[0]) == "array" && !func_methods_default.isDyadicArr(data_known_x)) {
  105856. return formula_default.error.v;
  105857. }
  105858. known_x = known_x.concat(func_methods_default.getDataArr(data_known_x, false));
  105859. } else if (getObjType(data_known_x) == "object" && data_known_x.startCell != null) {
  105860. known_x = known_x.concat(func_methods_default.getCellDataArr(data_known_x, "text", false));
  105861. } else {
  105862. known_x.push(data_known_x);
  105863. }
  105864. if (known_y.length != known_x.length) {
  105865. return formula_default.error.na;
  105866. }
  105867. var data_y = [], data_x = [];
  105868. for (var i2 = 0; i2 < known_y.length; i2++) {
  105869. var num_y = known_y[i2];
  105870. var num_x = known_x[i2];
  105871. if (isRealNum(num_y) && isRealNum(num_x)) {
  105872. data_y.push(parseFloat(num_y));
  105873. data_x.push(parseFloat(num_x));
  105874. }
  105875. }
  105876. if (data_y.length == 0 || data_x.length == 0 || func_methods_default.standardDeviation(data_y) == 0 || func_methods_default.standardDeviation(data_x) == 0) {
  105877. return formula_default.error.d;
  105878. }
  105879. return jStat.corrcoeff(data_y, data_x);
  105880. } catch (e) {
  105881. var err = e;
  105882. err = formula_default.errorInfo(err);
  105883. return [formula_default.error.v, err];
  105884. }
  105885. },
  105886. "COVARIANCE_P": function() {
  105887. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  105888. return formula_default.error.na;
  105889. }
  105890. for (var i2 = 0; i2 < arguments.length; i2++) {
  105891. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  105892. if (!p[0]) {
  105893. return formula_default.error.v;
  105894. }
  105895. }
  105896. try {
  105897. var data_known_x = arguments[0];
  105898. var known_x = [];
  105899. if (getObjType(data_known_x) == "array") {
  105900. if (getObjType(data_known_x[0]) == "array" && !func_methods_default.isDyadicArr(data_known_x)) {
  105901. return formula_default.error.v;
  105902. }
  105903. known_x = known_x.concat(func_methods_default.getDataArr(data_known_x, false));
  105904. } else if (getObjType(data_known_x) == "object" && data_known_x.startCell != null) {
  105905. known_x = known_x.concat(func_methods_default.getCellDataArr(data_known_x, "text", false));
  105906. } else {
  105907. known_x.push(data_known_x);
  105908. }
  105909. var data_known_y = arguments[1];
  105910. var known_y = [];
  105911. if (getObjType(data_known_y) == "array") {
  105912. if (getObjType(data_known_y[0]) == "array" && !func_methods_default.isDyadicArr(data_known_y)) {
  105913. return formula_default.error.v;
  105914. }
  105915. known_y = known_y.concat(func_methods_default.getDataArr(data_known_y, false));
  105916. } else if (getObjType(data_known_y) == "object" && data_known_y.startCell != null) {
  105917. known_y = known_y.concat(func_methods_default.getCellDataArr(data_known_y, "text", false));
  105918. } else {
  105919. known_y.push(data_known_y);
  105920. }
  105921. if (known_x.length != known_y.length) {
  105922. return formula_default.error.na;
  105923. }
  105924. var data_x = [], data_y = [];
  105925. for (var i2 = 0; i2 < known_x.length; i2++) {
  105926. var num_x = known_x[i2];
  105927. var num_y = known_y[i2];
  105928. if (isRealNum(num_x) && isRealNum(num_y)) {
  105929. data_x.push(parseFloat(num_x));
  105930. data_y.push(parseFloat(num_y));
  105931. }
  105932. }
  105933. if (data_x.length == 0 || data_y.length == 0) {
  105934. return formula_default.error.d;
  105935. }
  105936. var mean1 = jStat.mean(data_x);
  105937. var mean2 = jStat.mean(data_y);
  105938. var result = 0;
  105939. for (var i2 = 0; i2 < data_x.length; i2++) {
  105940. result += (data_x[i2] - mean1) * (data_y[i2] - mean2);
  105941. }
  105942. result = result / data_x.length;
  105943. return result;
  105944. } catch (e) {
  105945. var err = e;
  105946. err = formula_default.errorInfo(err);
  105947. return [formula_default.error.v, err];
  105948. }
  105949. },
  105950. "COVARIANCE_S": function() {
  105951. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  105952. return formula_default.error.na;
  105953. }
  105954. for (var i2 = 0; i2 < arguments.length; i2++) {
  105955. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  105956. if (!p[0]) {
  105957. return formula_default.error.v;
  105958. }
  105959. }
  105960. try {
  105961. var data_known_x = arguments[0];
  105962. var known_x = [];
  105963. if (getObjType(data_known_x) == "array") {
  105964. if (getObjType(data_known_x[0]) == "array" && !func_methods_default.isDyadicArr(data_known_x)) {
  105965. return formula_default.error.v;
  105966. }
  105967. known_x = known_x.concat(func_methods_default.getDataArr(data_known_x, false));
  105968. } else if (getObjType(data_known_x) == "object" && data_known_x.startCell != null) {
  105969. known_x = known_x.concat(func_methods_default.getCellDataArr(data_known_x, "text", false));
  105970. } else {
  105971. known_x.push(data_known_x);
  105972. }
  105973. var data_known_y = arguments[1];
  105974. var known_y = [];
  105975. if (getObjType(data_known_y) == "array") {
  105976. if (getObjType(data_known_y[0]) == "array" && !func_methods_default.isDyadicArr(data_known_y)) {
  105977. return formula_default.error.v;
  105978. }
  105979. known_y = known_y.concat(func_methods_default.getDataArr(data_known_y, false));
  105980. } else if (getObjType(data_known_y) == "object" && data_known_y.startCell != null) {
  105981. known_y = known_y.concat(func_methods_default.getCellDataArr(data_known_y, "text", false));
  105982. } else {
  105983. known_y.push(data_known_y);
  105984. }
  105985. if (known_x.length != known_y.length) {
  105986. return formula_default.error.na;
  105987. }
  105988. var data_x = [], data_y = [];
  105989. for (var i2 = 0; i2 < known_x.length; i2++) {
  105990. var num_x = known_x[i2];
  105991. var num_y = known_y[i2];
  105992. if (isRealNum(num_x) && isRealNum(num_y)) {
  105993. data_x.push(parseFloat(num_x));
  105994. data_y.push(parseFloat(num_y));
  105995. }
  105996. }
  105997. if (data_x.length == 0 || data_y.length == 0) {
  105998. return formula_default.error.d;
  105999. }
  106000. return jStat.covariance(data_x, data_y);
  106001. } catch (e) {
  106002. var err = e;
  106003. err = formula_default.errorInfo(err);
  106004. return [formula_default.error.v, err];
  106005. }
  106006. },
  106007. "DEVSQ": function() {
  106008. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  106009. return formula_default.error.na;
  106010. }
  106011. for (var i2 = 0; i2 < arguments.length; i2++) {
  106012. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  106013. if (!p[0]) {
  106014. return formula_default.error.v;
  106015. }
  106016. }
  106017. try {
  106018. var dataArr = [];
  106019. for (var i2 = 0; i2 < arguments.length; i2++) {
  106020. var data = arguments[i2];
  106021. if (getObjType(data) == "array") {
  106022. if (getObjType(data[0]) == "array" && !func_methods_default.isDyadicArr(data)) {
  106023. return formula_default.error.v;
  106024. }
  106025. dataArr = dataArr.concat(func_methods_default.getDataArr(data, true));
  106026. } else if (getObjType(data) == "object" && data.startCell != null) {
  106027. dataArr = dataArr.concat(func_methods_default.getCellDataArr(data, "number", true));
  106028. } else {
  106029. if (!isRealNum(data)) {
  106030. if (getObjType(data) == "boolean") {
  106031. if (data.toString().toLowerCase() == "true") {
  106032. dataArr.push(1);
  106033. } else if (data.toString().toLowerCase() == "false") {
  106034. dataArr.push(0);
  106035. }
  106036. } else {
  106037. return formula_default.error.v;
  106038. }
  106039. } else {
  106040. dataArr.push(data);
  106041. }
  106042. }
  106043. }
  106044. var dataArr_n = [];
  106045. for (var i2 = 0; i2 < dataArr.length; i2++) {
  106046. var number = dataArr[i2];
  106047. if (isRealNum(number)) {
  106048. dataArr_n.push(parseFloat(number));
  106049. }
  106050. }
  106051. var mean = jStat.mean(dataArr_n);
  106052. var result = 0;
  106053. for (var i2 = 0; i2 < dataArr_n.length; i2++) {
  106054. result += Math.pow(dataArr_n[i2] - mean, 2);
  106055. }
  106056. return result;
  106057. } catch (e) {
  106058. var err = e;
  106059. err = formula_default.errorInfo(err);
  106060. return [formula_default.error.v, err];
  106061. }
  106062. },
  106063. "EXPON_DIST": function() {
  106064. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  106065. return formula_default.error.na;
  106066. }
  106067. for (var i2 = 0; i2 < arguments.length; i2++) {
  106068. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  106069. if (!p[0]) {
  106070. return formula_default.error.v;
  106071. }
  106072. }
  106073. try {
  106074. var x = func_methods_default.getFirstValue(arguments[0]);
  106075. if (valueIsError(x)) {
  106076. return x;
  106077. }
  106078. if (!isRealNum(x)) {
  106079. return formula_default.error.v;
  106080. }
  106081. x = parseFloat(x);
  106082. var lambda = func_methods_default.getFirstValue(arguments[1]);
  106083. if (valueIsError(lambda)) {
  106084. return lambda;
  106085. }
  106086. if (!isRealNum(lambda)) {
  106087. return formula_default.error.v;
  106088. }
  106089. lambda = parseFloat(lambda);
  106090. var cumulative = func_methods_default.getCellBoolen(arguments[2]);
  106091. if (valueIsError(cumulative)) {
  106092. return cumulative;
  106093. }
  106094. if (x < 0) {
  106095. return formula_default.error.nm;
  106096. }
  106097. if (lambda < 0) {
  106098. return formula_default.error.nm;
  106099. }
  106100. return cumulative ? jStat.exponential.cdf(x, lambda) : jStat.exponential.pdf(x, lambda);
  106101. } catch (e) {
  106102. var err = e;
  106103. err = formula_default.errorInfo(err);
  106104. return [formula_default.error.v, err];
  106105. }
  106106. },
  106107. "AVERAGEIF": function() {
  106108. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  106109. return formula_default.error.na;
  106110. }
  106111. for (var i2 = 0; i2 < arguments.length; i2++) {
  106112. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  106113. if (!p[0]) {
  106114. return formula_default.error.v;
  106115. }
  106116. }
  106117. try {
  106118. var sum = 0;
  106119. var count = 0;
  106120. var rangeData = arguments[0].data;
  106121. var rangeRow = arguments[0].rowl;
  106122. var rangeCol = arguments[0].coll;
  106123. var criteria = luckysheet_parseData(arguments[1]);
  106124. var sumRangeData = [];
  106125. if (arguments[2]) {
  106126. var sumRangeStart = arguments[2].startCell;
  106127. var sumRangeRow = arguments[2].rowl;
  106128. var sumRangeCol = arguments[2].coll;
  106129. var sumRangeSheet = arguments[2].sheetName;
  106130. if (rangeRow == sumRangeRow && rangeCol == sumRangeCol) {
  106131. sumRangeData = arguments[2].data;
  106132. } else {
  106133. var row = [], col = [];
  106134. var sumRangeEnd = "";
  106135. var realSumRange = "";
  106136. row[0] = parseInt(sumRangeStart.replace(/[^0-9]/g, "")) - 1;
  106137. col[0] = ABCatNum(sumRangeStart.replace(/[^A-Za-z]/g, ""));
  106138. row[1] = row[0] + rangeRow - 1;
  106139. col[1] = col[0] + rangeCol - 1;
  106140. var real_ABC = chatatABC(col[1]);
  106141. var real_Num = row[1] + 1;
  106142. sumRangeEnd = real_ABC + real_Num;
  106143. realSumRange = sumRangeSheet + "!" + sumRangeStart + ":" + sumRangeEnd;
  106144. sumRangeData = luckysheet_getcelldata(realSumRange).data;
  106145. }
  106146. sumRangeData = formula_default.getRangeArray(sumRangeData)[0];
  106147. }
  106148. rangeData = formula_default.getRangeArray(rangeData)[0];
  106149. for (var i2 = 0; i2 < rangeData.length; i2++) {
  106150. var v = rangeData[i2];
  106151. if (!!v && formula_default.acompareb(v, criteria)) {
  106152. var vnow = sumRangeData[i2] || v;
  106153. if (!isRealNum(vnow)) {
  106154. continue;
  106155. }
  106156. sum += parseFloat(vnow);
  106157. count++;
  106158. }
  106159. }
  106160. if (sum == 0 || count == 0) {
  106161. return formula_default.error.d;
  106162. } else {
  106163. return numFormat2(sum / count);
  106164. }
  106165. } catch (e) {
  106166. var err = e;
  106167. err = formula_default.errorInfo(err);
  106168. return [formula_default.error.v, err];
  106169. }
  106170. },
  106171. "AVERAGEIFS": function() {
  106172. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  106173. return formula_default.error.na;
  106174. }
  106175. for (var i2 = 0; i2 < arguments.length; i2++) {
  106176. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  106177. if (!p[0]) {
  106178. return formula_default.error.v;
  106179. }
  106180. }
  106181. try {
  106182. var sum = 0;
  106183. var count = 0;
  106184. var args = arguments;
  106185. luckysheet_getValue(args);
  106186. var rangeData = formula_default.getRangeArray(args[0])[0];
  106187. var results = new Array(rangeData.length);
  106188. for (var i2 = 0; i2 < results.length; i2++) {
  106189. results[i2] = true;
  106190. }
  106191. for (var i2 = 1; i2 < args.length; i2 += 2) {
  106192. var range2 = formula_default.getRangeArray(args[i2])[0];
  106193. var criteria = args[i2 + 1];
  106194. for (var j = 0; j < range2.length; j++) {
  106195. var v = range2[j];
  106196. results[j] = results[j] && !!v && formula_default.acompareb(v, criteria);
  106197. }
  106198. }
  106199. for (var i2 = 0; i2 < rangeData.length; i2++) {
  106200. if (results[i2] && isRealNum(rangeData[i2])) {
  106201. sum += parseFloat(rangeData[i2]);
  106202. count++;
  106203. }
  106204. }
  106205. if (sum == 0 || count == 0) {
  106206. return formula_default.error.d;
  106207. } else {
  106208. return numFormat2(sum / count);
  106209. }
  106210. } catch (e) {
  106211. var err = e;
  106212. err = formula_default.errorInfo(err);
  106213. return [formula_default.error.v, err];
  106214. }
  106215. },
  106216. "PERMUT": function() {
  106217. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  106218. return formula_default.error.na;
  106219. }
  106220. for (var i2 = 0; i2 < arguments.length; i2++) {
  106221. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  106222. if (!p[0]) {
  106223. return formula_default.error.v;
  106224. }
  106225. }
  106226. try {
  106227. var number = func_methods_default.getFirstValue(arguments[0]);
  106228. if (valueIsError(number)) {
  106229. return number;
  106230. }
  106231. if (!isRealNum(number)) {
  106232. return formula_default.error.v;
  106233. }
  106234. number = parseInt(number);
  106235. var number_chosen = func_methods_default.getFirstValue(arguments[1]);
  106236. if (valueIsError(number_chosen)) {
  106237. return number_chosen;
  106238. }
  106239. if (!isRealNum(number_chosen)) {
  106240. return formula_default.error.v;
  106241. }
  106242. number_chosen = parseInt(number_chosen);
  106243. if (number <= 0 || number_chosen < 0) {
  106244. return formula_default.error.nm;
  106245. }
  106246. if (number < number_chosen) {
  106247. return formula_default.error.nm;
  106248. }
  106249. return func_methods_default.factorial(number) / func_methods_default.factorial(number - number_chosen);
  106250. } catch (e) {
  106251. var err = e;
  106252. err = formula_default.errorInfo(err);
  106253. return [formula_default.error.v, err];
  106254. }
  106255. },
  106256. "TRIMMEAN": function() {
  106257. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  106258. return formula_default.error.na;
  106259. }
  106260. for (var i2 = 0; i2 < arguments.length; i2++) {
  106261. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  106262. if (!p[0]) {
  106263. return formula_default.error.v;
  106264. }
  106265. }
  106266. try {
  106267. let rest2 = function(array, idx) {
  106268. idx = idx || 1;
  106269. if (!array || typeof array.slice !== "function") {
  106270. return array;
  106271. }
  106272. return array.slice(idx);
  106273. }, initial = function(array, idx) {
  106274. idx = idx || 1;
  106275. if (!array || typeof array.slice !== "function") {
  106276. return array;
  106277. }
  106278. return array.slice(0, array.length - idx);
  106279. };
  106280. var data_dataArr = arguments[0];
  106281. var dataArr = [];
  106282. if (getObjType(data_dataArr) == "array") {
  106283. if (getObjType(data_dataArr[0]) == "array" && !func_methods_default.isDyadicArr(data_dataArr)) {
  106284. return formula_default.error.v;
  106285. }
  106286. dataArr = dataArr.concat(func_methods_default.getDataArr(data_dataArr, false));
  106287. } else if (getObjType(data_dataArr) == "object" && data_dataArr.startCell != null) {
  106288. dataArr = dataArr.concat(func_methods_default.getCellDataArr(data_dataArr, "number", false));
  106289. } else {
  106290. dataArr.push(data_dataArr);
  106291. }
  106292. var dataArr_n = [];
  106293. for (var i2 = 0; i2 < dataArr.length; i2++) {
  106294. var number = dataArr[i2];
  106295. if (isRealNum(number)) {
  106296. dataArr_n.push(parseFloat(number));
  106297. }
  106298. }
  106299. var percent = func_methods_default.getFirstValue(arguments[1]);
  106300. if (valueIsError(percent)) {
  106301. return percent;
  106302. }
  106303. if (!isRealNum(percent)) {
  106304. return formula_default.error.v;
  106305. }
  106306. percent = parseFloat(percent);
  106307. if (dataArr_n.length == 0) {
  106308. return formula_default.error.nm;
  106309. }
  106310. if (percent < 0 || percent > 1) {
  106311. return formula_default.error.nm;
  106312. }
  106313. ;
  106314. ;
  106315. dataArr_n.sort(function(a, b) {
  106316. return a - b;
  106317. });
  106318. var trim = window.luckysheet_function.FLOOR.f(dataArr_n.length * percent, 2) / 2;
  106319. var result = rest2(dataArr_n, trim);
  106320. result = initial(result, trim);
  106321. result = jStat.mean(result);
  106322. return result;
  106323. } catch (e) {
  106324. var err = e;
  106325. err = formula_default.errorInfo(err);
  106326. return [formula_default.error.v, err];
  106327. }
  106328. },
  106329. "PERCENTILE_EXC": function() {
  106330. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  106331. return formula_default.error.na;
  106332. }
  106333. for (var i2 = 0; i2 < arguments.length; i2++) {
  106334. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  106335. if (!p[0]) {
  106336. return formula_default.error.v;
  106337. }
  106338. }
  106339. try {
  106340. var data_dataArr = arguments[0];
  106341. var dataArr = [];
  106342. if (getObjType(data_dataArr) == "array") {
  106343. if (getObjType(data_dataArr[0]) == "array" && !func_methods_default.isDyadicArr(data_dataArr)) {
  106344. return formula_default.error.v;
  106345. }
  106346. dataArr = dataArr.concat(func_methods_default.getDataArr(data_dataArr, false));
  106347. } else if (getObjType(data_dataArr) == "object" && data_dataArr.startCell != null) {
  106348. dataArr = dataArr.concat(func_methods_default.getCellDataArr(data_dataArr, "number", false));
  106349. } else {
  106350. dataArr.push(data_dataArr);
  106351. }
  106352. var dataArr_n = [];
  106353. for (var i2 = 0; i2 < dataArr.length; i2++) {
  106354. var number = dataArr[i2];
  106355. if (isRealNum(number)) {
  106356. dataArr_n.push(parseFloat(number));
  106357. }
  106358. }
  106359. var k = func_methods_default.getFirstValue(arguments[1]);
  106360. if (valueIsError(k)) {
  106361. return k;
  106362. }
  106363. if (!isRealNum(k)) {
  106364. return formula_default.error.v;
  106365. }
  106366. k = parseFloat(k);
  106367. if (dataArr_n.length == 0) {
  106368. return formula_default.error.nm;
  106369. }
  106370. if (k <= 0 || k >= 1) {
  106371. return formula_default.error.nm;
  106372. }
  106373. dataArr_n = dataArr_n.sort(function(a, b) {
  106374. return a - b;
  106375. });
  106376. var n = dataArr_n.length;
  106377. if (k < 1 / (n + 1) || k > 1 - 1 / (n + 1)) {
  106378. return formula_default.error.nm;
  106379. }
  106380. var l = k * (n + 1) - 1;
  106381. var fl = Math.floor(l);
  106382. return l === fl ? dataArr_n[l] : dataArr_n[fl] + (l - fl) * (dataArr_n[fl + 1] - dataArr_n[fl]);
  106383. } catch (e) {
  106384. var err = e;
  106385. err = formula_default.errorInfo(err);
  106386. return [formula_default.error.v, err];
  106387. }
  106388. },
  106389. "PERCENTILE_INC": function() {
  106390. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  106391. return formula_default.error.na;
  106392. }
  106393. for (var i2 = 0; i2 < arguments.length; i2++) {
  106394. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  106395. if (!p[0]) {
  106396. return formula_default.error.v;
  106397. }
  106398. }
  106399. try {
  106400. var data_dataArr = arguments[0];
  106401. var dataArr = [];
  106402. if (getObjType(data_dataArr) == "array") {
  106403. if (getObjType(data_dataArr[0]) == "array" && !func_methods_default.isDyadicArr(data_dataArr)) {
  106404. return formula_default.error.v;
  106405. }
  106406. dataArr = dataArr.concat(func_methods_default.getDataArr(data_dataArr, false));
  106407. } else if (getObjType(data_dataArr) == "object" && data_dataArr.startCell != null) {
  106408. dataArr = dataArr.concat(func_methods_default.getCellDataArr(data_dataArr, "number", false));
  106409. } else {
  106410. dataArr.push(data_dataArr);
  106411. }
  106412. var dataArr_n = [];
  106413. for (var i2 = 0; i2 < dataArr.length; i2++) {
  106414. var number = dataArr[i2];
  106415. if (isRealNum(number)) {
  106416. dataArr_n.push(parseFloat(number));
  106417. }
  106418. }
  106419. var k = func_methods_default.getFirstValue(arguments[1]);
  106420. if (valueIsError(k)) {
  106421. return k;
  106422. }
  106423. if (!isRealNum(k)) {
  106424. return formula_default.error.v;
  106425. }
  106426. k = parseFloat(k);
  106427. if (dataArr_n.length == 0) {
  106428. return formula_default.error.nm;
  106429. }
  106430. if (k < 0 || k > 1) {
  106431. return formula_default.error.nm;
  106432. }
  106433. dataArr_n = dataArr_n.sort(function(a, b) {
  106434. return a - b;
  106435. });
  106436. var n = dataArr_n.length;
  106437. var l = k * (n - 1);
  106438. var fl = Math.floor(l);
  106439. return l === fl ? dataArr_n[l] : dataArr_n[fl] + (l - fl) * (dataArr_n[fl + 1] - dataArr_n[fl]);
  106440. } catch (e) {
  106441. var err = e;
  106442. err = formula_default.errorInfo(err);
  106443. return [formula_default.error.v, err];
  106444. }
  106445. },
  106446. "PEARSON": function() {
  106447. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  106448. return formula_default.error.na;
  106449. }
  106450. for (var i2 = 0; i2 < arguments.length; i2++) {
  106451. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  106452. if (!p[0]) {
  106453. return formula_default.error.v;
  106454. }
  106455. }
  106456. try {
  106457. var data_known_x = arguments[0];
  106458. var known_x = [];
  106459. if (getObjType(data_known_x) == "array") {
  106460. if (getObjType(data_known_x[0]) == "array" && !func_methods_default.isDyadicArr(data_known_x)) {
  106461. return formula_default.error.v;
  106462. }
  106463. known_x = known_x.concat(func_methods_default.getDataArr(data_known_x, false));
  106464. } else if (getObjType(data_known_x) == "object" && data_known_x.startCell != null) {
  106465. known_x = known_x.concat(func_methods_default.getCellDataArr(data_known_x, "text", false));
  106466. } else {
  106467. known_x.push(data_known_x);
  106468. }
  106469. var data_known_y = arguments[1];
  106470. var known_y = [];
  106471. if (getObjType(data_known_y) == "array") {
  106472. if (getObjType(data_known_y[0]) == "array" && !func_methods_default.isDyadicArr(data_known_y)) {
  106473. return formula_default.error.v;
  106474. }
  106475. known_y = known_y.concat(func_methods_default.getDataArr(data_known_y, false));
  106476. } else if (getObjType(data_known_y) == "object" && data_known_y.startCell != null) {
  106477. known_y = known_y.concat(func_methods_default.getCellDataArr(data_known_y, "text", false));
  106478. } else {
  106479. known_y.push(data_known_y);
  106480. }
  106481. if (known_x.length != known_y.length) {
  106482. return formula_default.error.na;
  106483. }
  106484. var data_x = [], data_y = [];
  106485. for (var i2 = 0; i2 < known_x.length; i2++) {
  106486. var num_x = known_x[i2];
  106487. var num_y = known_y[i2];
  106488. if (isRealNum(num_x) && isRealNum(num_y)) {
  106489. data_x.push(parseFloat(num_x));
  106490. data_y.push(parseFloat(num_y));
  106491. }
  106492. }
  106493. if (data_y.length == 0 || data_x.length == 0) {
  106494. return formula_default.error.d;
  106495. }
  106496. var xmean = jStat.mean(data_x);
  106497. var ymean = jStat.mean(data_y);
  106498. var n = data_x.length;
  106499. var num = 0;
  106500. var den1 = 0;
  106501. var den2 = 0;
  106502. for (var i2 = 0; i2 < n; i2++) {
  106503. num += (data_x[i2] - xmean) * (data_y[i2] - ymean);
  106504. den1 += Math.pow(data_x[i2] - xmean, 2);
  106505. den2 += Math.pow(data_y[i2] - ymean, 2);
  106506. }
  106507. return num / Math.sqrt(den1 * den2);
  106508. } catch (e) {
  106509. var err = e;
  106510. err = formula_default.errorInfo(err);
  106511. return [formula_default.error.v, err];
  106512. }
  106513. },
  106514. "NORM_S_INV": function() {
  106515. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  106516. return formula_default.error.na;
  106517. }
  106518. for (var i2 = 0; i2 < arguments.length; i2++) {
  106519. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  106520. if (!p[0]) {
  106521. return formula_default.error.v;
  106522. }
  106523. }
  106524. try {
  106525. var probability = func_methods_default.getFirstValue(arguments[0]);
  106526. if (valueIsError(probability)) {
  106527. return probability;
  106528. }
  106529. if (!isRealNum(probability)) {
  106530. return formula_default.error.v;
  106531. }
  106532. probability = parseFloat(probability);
  106533. if (probability <= 0 || probability >= 1) {
  106534. return formula_default.error.nm;
  106535. }
  106536. return jStat.normal.inv(probability, 0, 1);
  106537. } catch (e) {
  106538. var err = e;
  106539. err = formula_default.errorInfo(err);
  106540. return [formula_default.error.v, err];
  106541. }
  106542. },
  106543. "NORM_S_DIST": function() {
  106544. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  106545. return formula_default.error.na;
  106546. }
  106547. for (var i2 = 0; i2 < arguments.length; i2++) {
  106548. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  106549. if (!p[0]) {
  106550. return formula_default.error.v;
  106551. }
  106552. }
  106553. try {
  106554. var z = func_methods_default.getFirstValue(arguments[0]);
  106555. if (valueIsError(z)) {
  106556. return z;
  106557. }
  106558. if (!isRealNum(z)) {
  106559. return formula_default.error.v;
  106560. }
  106561. z = parseFloat(z);
  106562. var cumulative = func_methods_default.getCellBoolen(arguments[1]);
  106563. if (valueIsError(cumulative)) {
  106564. return cumulative;
  106565. }
  106566. return cumulative ? jStat.normal.cdf(z, 0, 1) : jStat.normal.pdf(z, 0, 1);
  106567. } catch (e) {
  106568. var err = e;
  106569. err = formula_default.errorInfo(err);
  106570. return [formula_default.error.v, err];
  106571. }
  106572. },
  106573. "NORM_INV": function() {
  106574. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  106575. return formula_default.error.na;
  106576. }
  106577. for (var i2 = 0; i2 < arguments.length; i2++) {
  106578. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  106579. if (!p[0]) {
  106580. return formula_default.error.v;
  106581. }
  106582. }
  106583. try {
  106584. var probability = func_methods_default.getFirstValue(arguments[0]);
  106585. if (valueIsError(probability)) {
  106586. return probability;
  106587. }
  106588. if (!isRealNum(probability)) {
  106589. if (getObjType(probability) == "boolean") {
  106590. if (probability.toString().toLowerCase() == "true") {
  106591. probability = 1;
  106592. } else if (probability.toString().toLowerCase() == "false") {
  106593. probability = 0;
  106594. }
  106595. } else {
  106596. return formula_default.error.v;
  106597. }
  106598. }
  106599. probability = parseFloat(probability);
  106600. var mean = func_methods_default.getFirstValue(arguments[1]);
  106601. if (valueIsError(mean)) {
  106602. return mean;
  106603. }
  106604. if (!isRealNum(mean)) {
  106605. if (getObjType(mean) == "boolean") {
  106606. if (mean.toString().toLowerCase() == "true") {
  106607. mean = 1;
  106608. } else if (mean.toString().toLowerCase() == "false") {
  106609. mean = 0;
  106610. }
  106611. } else {
  106612. return formula_default.error.v;
  106613. }
  106614. }
  106615. mean = parseFloat(mean);
  106616. var standard_dev = func_methods_default.getFirstValue(arguments[2]);
  106617. if (valueIsError(standard_dev)) {
  106618. return standard_dev;
  106619. }
  106620. if (!isRealNum(standard_dev)) {
  106621. if (getObjType(standard_dev) == "boolean") {
  106622. if (standard_dev.toString().toLowerCase() == "true") {
  106623. standard_dev = 1;
  106624. } else if (standard_dev.toString().toLowerCase() == "false") {
  106625. standard_dev = 0;
  106626. }
  106627. } else {
  106628. return formula_default.error.v;
  106629. }
  106630. }
  106631. standard_dev = parseFloat(standard_dev);
  106632. if (probability <= 0 || probability >= 1) {
  106633. return formula_default.error.nm;
  106634. }
  106635. if (standard_dev <= 0) {
  106636. return formula_default.error.nm;
  106637. }
  106638. return jStat.normal.inv(probability, mean, standard_dev);
  106639. } catch (e) {
  106640. var err = e;
  106641. err = formula_default.errorInfo(err);
  106642. return [formula_default.error.v, err];
  106643. }
  106644. },
  106645. "NORM_DIST": function() {
  106646. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  106647. return formula_default.error.na;
  106648. }
  106649. for (var i2 = 0; i2 < arguments.length; i2++) {
  106650. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  106651. if (!p[0]) {
  106652. return formula_default.error.v;
  106653. }
  106654. }
  106655. try {
  106656. var x = func_methods_default.getFirstValue(arguments[0]);
  106657. if (valueIsError(x)) {
  106658. return x;
  106659. }
  106660. if (!isRealNum(x)) {
  106661. if (getObjType(x) == "boolean") {
  106662. if (x.toString().toLowerCase() == "true") {
  106663. x = 1;
  106664. } else if (x.toString().toLowerCase() == "false") {
  106665. x = 0;
  106666. }
  106667. } else {
  106668. return formula_default.error.v;
  106669. }
  106670. }
  106671. x = parseFloat(x);
  106672. var mean = func_methods_default.getFirstValue(arguments[1]);
  106673. if (valueIsError(mean)) {
  106674. return mean;
  106675. }
  106676. if (!isRealNum(mean)) {
  106677. return formula_default.error.v;
  106678. }
  106679. mean = parseFloat(mean);
  106680. var standard_dev = func_methods_default.getFirstValue(arguments[2]);
  106681. if (valueIsError(standard_dev)) {
  106682. return standard_dev;
  106683. }
  106684. if (!isRealNum(standard_dev)) {
  106685. return formula_default.error.v;
  106686. }
  106687. standard_dev = parseFloat(standard_dev);
  106688. var cumulative = func_methods_default.getCellBoolen(arguments[3]);
  106689. if (valueIsError(cumulative)) {
  106690. return cumulative;
  106691. }
  106692. if (standard_dev <= 0) {
  106693. return formula_default.error.nm;
  106694. }
  106695. return cumulative ? jStat.normal.cdf(x, mean, standard_dev) : jStat.normal.pdf(x, mean, standard_dev);
  106696. } catch (e) {
  106697. var err = e;
  106698. err = formula_default.errorInfo(err);
  106699. return [formula_default.error.v, err];
  106700. }
  106701. },
  106702. "NEGBINOM_DIST": function() {
  106703. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  106704. return formula_default.error.na;
  106705. }
  106706. for (var i2 = 0; i2 < arguments.length; i2++) {
  106707. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  106708. if (!p[0]) {
  106709. return formula_default.error.v;
  106710. }
  106711. }
  106712. try {
  106713. var number_f = func_methods_default.getFirstValue(arguments[0]);
  106714. if (valueIsError(number_f)) {
  106715. return number_f;
  106716. }
  106717. if (!isRealNum(number_f)) {
  106718. return formula_default.error.v;
  106719. }
  106720. number_f = parseInt(number_f);
  106721. var number_s = func_methods_default.getFirstValue(arguments[1]);
  106722. if (valueIsError(number_s)) {
  106723. return number_s;
  106724. }
  106725. if (!isRealNum(number_s)) {
  106726. return formula_default.error.v;
  106727. }
  106728. number_s = parseInt(number_s);
  106729. var probability_s = func_methods_default.getFirstValue(arguments[2]);
  106730. if (valueIsError(probability_s)) {
  106731. return probability_s;
  106732. }
  106733. if (!isRealNum(probability_s)) {
  106734. return formula_default.error.v;
  106735. }
  106736. probability_s = parseFloat(probability_s);
  106737. var cumulative = func_methods_default.getCellBoolen(arguments[3]);
  106738. if (valueIsError(cumulative)) {
  106739. return cumulative;
  106740. }
  106741. if (probability_s < 0 || probability_s > 1) {
  106742. return formula_default.error.nm;
  106743. }
  106744. if (number_f < 0 || number_s < 1) {
  106745. return formula_default.error.nm;
  106746. }
  106747. return cumulative ? jStat.negbin.cdf(number_f, number_s, probability_s) : jStat.negbin.pdf(number_f, number_s, probability_s);
  106748. } catch (e) {
  106749. var err = e;
  106750. err = formula_default.errorInfo(err);
  106751. return [formula_default.error.v, err];
  106752. }
  106753. },
  106754. "MINA": function() {
  106755. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  106756. return formula_default.error.na;
  106757. }
  106758. for (var i2 = 0; i2 < arguments.length; i2++) {
  106759. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  106760. if (!p[0]) {
  106761. return formula_default.error.v;
  106762. }
  106763. }
  106764. try {
  106765. var dataArr = [];
  106766. for (var i2 = 0; i2 < arguments.length; i2++) {
  106767. var data = arguments[i2];
  106768. if (getObjType(data) == "array") {
  106769. if (getObjType(data[0]) == "array" && !func_methods_default.isDyadicArr(data)) {
  106770. return formula_default.error.v;
  106771. }
  106772. dataArr = dataArr.concat(func_methods_default.getDataArr(data, false));
  106773. } else if (getObjType(data) == "object" && data.startCell != null) {
  106774. dataArr = dataArr.concat(func_methods_default.getCellDataArr(data, "number", true));
  106775. } else {
  106776. if (number.toString.toLowerCase() == "true") {
  106777. dataArr.push(1);
  106778. } else if (number.toString.toLowerCase() == "false") {
  106779. dataArr.push(0);
  106780. } else if (isRealNum(data)) {
  106781. dataArr.push(data);
  106782. } else {
  106783. return formula_default.error.v;
  106784. }
  106785. }
  106786. }
  106787. var dataArr_n = [];
  106788. for (var i2 = 0; i2 < dataArr.length; i2++) {
  106789. var number = dataArr[i2];
  106790. if (isRealNum(number)) {
  106791. dataArr_n.push(parseFloat(number));
  106792. } else {
  106793. if (number.toString().toLowerCase() == "true") {
  106794. dataArr_n.push(1);
  106795. } else {
  106796. dataArr_n.push(0);
  106797. }
  106798. }
  106799. }
  106800. return dataArr_n.length === 0 ? 0 : Math.min.apply(Math, dataArr_n);
  106801. } catch (e) {
  106802. var err = e;
  106803. err = formula_default.errorInfo(err);
  106804. return [formula_default.error.v, err];
  106805. }
  106806. },
  106807. "MEDIAN": function() {
  106808. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  106809. return formula_default.error.na;
  106810. }
  106811. for (var i2 = 0; i2 < arguments.length; i2++) {
  106812. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  106813. if (!p[0]) {
  106814. return formula_default.error.v;
  106815. }
  106816. }
  106817. try {
  106818. var dataArr = [];
  106819. for (var i2 = 0; i2 < arguments.length; i2++) {
  106820. var data = arguments[i2];
  106821. if (getObjType(data) == "array") {
  106822. if (getObjType(data[0]) == "array" && !func_methods_default.isDyadicArr(data)) {
  106823. return formula_default.error.v;
  106824. }
  106825. dataArr = dataArr.concat(func_methods_default.getDataArr(data, true));
  106826. } else if (getObjType(data) == "object" && data.startCell != null) {
  106827. dataArr = dataArr.concat(func_methods_default.getCellDataArr(data, "number", true));
  106828. } else {
  106829. if (!isRealNum(data)) {
  106830. return formula_default.error.v;
  106831. }
  106832. dataArr.push(data);
  106833. }
  106834. }
  106835. var dataArr_n = [];
  106836. for (var i2 = 0; i2 < dataArr.length; i2++) {
  106837. var number = dataArr[i2];
  106838. if (isRealNum(number)) {
  106839. dataArr_n.push(parseFloat(number));
  106840. }
  106841. }
  106842. return jStat.median(dataArr_n);
  106843. } catch (e) {
  106844. var err = e;
  106845. err = formula_default.errorInfo(err);
  106846. return [formula_default.error.v, err];
  106847. }
  106848. },
  106849. "MAXA": function() {
  106850. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  106851. return formula_default.error.na;
  106852. }
  106853. for (var i2 = 0; i2 < arguments.length; i2++) {
  106854. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  106855. if (!p[0]) {
  106856. return formula_default.error.v;
  106857. }
  106858. }
  106859. try {
  106860. var dataArr = [];
  106861. for (var i2 = 0; i2 < arguments.length; i2++) {
  106862. var data = arguments[i2];
  106863. if (getObjType(data) == "array") {
  106864. if (getObjType(data[0]) == "array" && !func_methods_default.isDyadicArr(data)) {
  106865. return formula_default.error.v;
  106866. }
  106867. dataArr = dataArr.concat(func_methods_default.getDataArr(data, false));
  106868. } else if (getObjType(data) == "object" && data.startCell != null) {
  106869. dataArr = dataArr.concat(func_methods_default.getCellDataArr(data, "number", true));
  106870. } else {
  106871. if (number.toString.toLowerCase() == "true") {
  106872. dataArr.push(1);
  106873. } else if (number.toString.toLowerCase() == "false") {
  106874. dataArr.push(0);
  106875. } else if (isRealNum(data)) {
  106876. dataArr.push(data);
  106877. } else {
  106878. return formula_default.error.v;
  106879. }
  106880. }
  106881. }
  106882. var dataArr_n = [];
  106883. for (var i2 = 0; i2 < dataArr.length; i2++) {
  106884. var number = dataArr[i2];
  106885. if (isRealNum(number)) {
  106886. dataArr_n.push(parseFloat(number));
  106887. } else {
  106888. if (number.toString().toLowerCase() == "true") {
  106889. dataArr_n.push(1);
  106890. } else {
  106891. dataArr_n.push(0);
  106892. }
  106893. }
  106894. }
  106895. return dataArr_n.length === 0 ? 0 : Math.max.apply(Math, dataArr_n);
  106896. } catch (e) {
  106897. var err = e;
  106898. err = formula_default.errorInfo(err);
  106899. return [formula_default.error.v, err];
  106900. }
  106901. },
  106902. "LOGNORM_INV": function() {
  106903. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  106904. return formula_default.error.na;
  106905. }
  106906. for (var i2 = 0; i2 < arguments.length; i2++) {
  106907. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  106908. if (!p[0]) {
  106909. return formula_default.error.v;
  106910. }
  106911. }
  106912. try {
  106913. var probability = func_methods_default.getFirstValue(arguments[0]);
  106914. if (valueIsError(probability)) {
  106915. return probability;
  106916. }
  106917. if (!isRealNum(probability)) {
  106918. return formula_default.error.v;
  106919. }
  106920. probability = parseFloat(probability);
  106921. var mean = func_methods_default.getFirstValue(arguments[1]);
  106922. if (valueIsError(mean)) {
  106923. return mean;
  106924. }
  106925. if (!isRealNum(mean)) {
  106926. return formula_default.error.v;
  106927. }
  106928. mean = parseFloat(mean);
  106929. var standard_dev = func_methods_default.getFirstValue(arguments[2]);
  106930. if (valueIsError(standard_dev)) {
  106931. return standard_dev;
  106932. }
  106933. if (!isRealNum(standard_dev)) {
  106934. return formula_default.error.v;
  106935. }
  106936. standard_dev = parseFloat(standard_dev);
  106937. if (probability <= 0 || probability >= 1) {
  106938. return formula_default.error.nm;
  106939. }
  106940. if (standard_dev <= 0) {
  106941. return formula_default.error.nm;
  106942. }
  106943. return jStat.lognormal.inv(probability, mean, standard_dev);
  106944. } catch (e) {
  106945. var err = e;
  106946. err = formula_default.errorInfo(err);
  106947. return [formula_default.error.v, err];
  106948. }
  106949. },
  106950. "LOGNORM_DIST": function() {
  106951. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  106952. return formula_default.error.na;
  106953. }
  106954. for (var i2 = 0; i2 < arguments.length; i2++) {
  106955. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  106956. if (!p[0]) {
  106957. return formula_default.error.v;
  106958. }
  106959. }
  106960. try {
  106961. var x = func_methods_default.getFirstValue(arguments[0]);
  106962. if (valueIsError(x)) {
  106963. return x;
  106964. }
  106965. if (!isRealNum(x)) {
  106966. return formula_default.error.v;
  106967. }
  106968. x = parseFloat(x);
  106969. var mean = func_methods_default.getFirstValue(arguments[1]);
  106970. if (valueIsError(mean)) {
  106971. return mean;
  106972. }
  106973. if (!isRealNum(mean)) {
  106974. return formula_default.error.v;
  106975. }
  106976. mean = parseFloat(mean);
  106977. var standard_dev = func_methods_default.getFirstValue(arguments[2]);
  106978. if (valueIsError(standard_dev)) {
  106979. return standard_dev;
  106980. }
  106981. if (!isRealNum(standard_dev)) {
  106982. return formula_default.error.v;
  106983. }
  106984. standard_dev = parseFloat(standard_dev);
  106985. var cumulative = func_methods_default.getCellBoolen(arguments[3]);
  106986. if (valueIsError(cumulative)) {
  106987. return cumulative;
  106988. }
  106989. if (x <= 0 || standard_dev <= 0) {
  106990. return formula_default.error.nm;
  106991. }
  106992. return cumulative ? jStat.lognormal.cdf(x, mean, standard_dev) : jStat.lognormal.pdf(x, mean, standard_dev);
  106993. } catch (e) {
  106994. var err = e;
  106995. err = formula_default.errorInfo(err);
  106996. return [formula_default.error.v, err];
  106997. }
  106998. },
  106999. "Z_TEST": function() {
  107000. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  107001. return formula_default.error.na;
  107002. }
  107003. for (var i2 = 0; i2 < arguments.length; i2++) {
  107004. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  107005. if (!p[0]) {
  107006. return formula_default.error.v;
  107007. }
  107008. }
  107009. try {
  107010. var dataArr = [];
  107011. if (getObjType(arguments[0]) == "array") {
  107012. if (getObjType(arguments[0][0]) == "array" && !func_methods_default.isDyadicArr(arguments[0])) {
  107013. return formula_default.error.v;
  107014. }
  107015. dataArr = dataArr.concat(func_methods_default.getDataArr(arguments[0], true));
  107016. } else if (getObjType(arguments[0]) == "object" && arguments[0].startCell != null) {
  107017. dataArr = dataArr.concat(func_methods_default.getCellDataArr(arguments[0], "text", true));
  107018. } else {
  107019. dataArr.push(arguments[0]);
  107020. }
  107021. var dataArr_n = [];
  107022. for (var j = 0; j < dataArr.length; j++) {
  107023. var number = dataArr[j];
  107024. if (isRealNum(number)) {
  107025. dataArr_n.push(parseFloat(number));
  107026. }
  107027. }
  107028. var x = func_methods_default.getFirstValue(arguments[1]);
  107029. if (valueIsError(x)) {
  107030. return x;
  107031. }
  107032. if (!isRealNum(x)) {
  107033. return formula_default.error.v;
  107034. }
  107035. x = parseFloat(x);
  107036. if (dataArr_n.length == 0) {
  107037. return formula_default.error.na;
  107038. }
  107039. var sigma = func_methods_default.standardDeviation_s(dataArr_n);
  107040. if (arguments.length == 3) {
  107041. sigma = func_methods_default.getFirstValue(arguments[2]);
  107042. if (valueIsError(sigma)) {
  107043. return sigma;
  107044. }
  107045. if (!isRealNum(sigma)) {
  107046. return formula_default.error.v;
  107047. }
  107048. sigma = parseFloat(sigma);
  107049. }
  107050. var n = dataArr_n.length;
  107051. var mean = window.luckysheet_function.AVERAGE.f.apply(window.luckysheet_function.AVERAGE, dataArr_n);
  107052. return 1 - window.luckysheet_function.NORM_S_DIST.f((mean - x) / (sigma / Math.sqrt(n)), "true");
  107053. } catch (e) {
  107054. var err = e;
  107055. err = formula_default.errorInfo(err);
  107056. return [formula_default.error.v, err];
  107057. }
  107058. },
  107059. "PROB": function() {
  107060. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  107061. return formula_default.error.na;
  107062. }
  107063. for (var i2 = 0; i2 < arguments.length; i2++) {
  107064. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  107065. if (!p[0]) {
  107066. return formula_default.error.v;
  107067. }
  107068. }
  107069. try {
  107070. var data_x_range = [];
  107071. if (getObjType(arguments[0]) == "array") {
  107072. if (getObjType(arguments[0][0]) == "array" && !func_methods_default.isDyadicArr(arguments[0])) {
  107073. return formula_default.error.v;
  107074. }
  107075. data_x_range = data_x_range.concat(func_methods_default.getDataArr(arguments[0], false));
  107076. } else if (getObjType(arguments[0]) == "object" && arguments[0].startCell != null) {
  107077. data_x_range = data_x_range.concat(func_methods_default.getCellDataArr(arguments[0], "text", false));
  107078. } else {
  107079. data_x_range.push(arguments[0]);
  107080. }
  107081. var data_prob_range = [];
  107082. if (getObjType(arguments[1]) == "array") {
  107083. if (getObjType(arguments[1][0]) == "array" && !func_methods_default.isDyadicArr(arguments[1])) {
  107084. return formula_default.error.v;
  107085. }
  107086. data_prob_range = data_prob_range.concat(func_methods_default.getDataArr(arguments[1], false));
  107087. } else if (getObjType(arguments[1]) == "object" && arguments[1].startCell != null) {
  107088. data_prob_range = data_prob_range.concat(func_methods_default.getCellDataArr(arguments[1], "text", false));
  107089. } else {
  107090. data_prob_range.push(arguments[1]);
  107091. }
  107092. if (data_x_range.length != data_prob_range.length) {
  107093. return formula_default.error.na;
  107094. }
  107095. var x_range = [], prob_range = [], prob_range_sum = 0;
  107096. for (var i2 = 0; i2 < data_x_range.length; i2++) {
  107097. var num_x_range = data_x_range[i2];
  107098. var num_prob_range = data_prob_range[i2];
  107099. if (isRealNum(num_x_range) && isRealNum(num_prob_range)) {
  107100. x_range.push(parseFloat(num_x_range));
  107101. prob_range.push(parseFloat(num_prob_range));
  107102. prob_range_sum += parseFloat(num_prob_range);
  107103. if (parseFloat(num_prob_range) <= 0 || parseFloat(num_prob_range) > 1) {
  107104. return formula_default.error.nm;
  107105. }
  107106. }
  107107. }
  107108. if (prob_range_sum != 1) {
  107109. return formula_default.error.nm;
  107110. }
  107111. var lower_limit = func_methods_default.getFirstValue(arguments[2]);
  107112. if (valueIsError(lower_limit)) {
  107113. return lower_limit;
  107114. }
  107115. if (!isRealNum(lower_limit)) {
  107116. return formula_default.error.v;
  107117. }
  107118. lower_limit = parseFloat(lower_limit);
  107119. var upper_limit = lower_limit;
  107120. if (arguments.length == 4) {
  107121. upper_limit = func_methods_default.getFirstValue(arguments[3]);
  107122. if (valueIsError(upper_limit)) {
  107123. return upper_limit;
  107124. }
  107125. if (!isRealNum(upper_limit)) {
  107126. return formula_default.error.v;
  107127. }
  107128. upper_limit = parseFloat(upper_limit);
  107129. }
  107130. var result = 0;
  107131. for (var i2 = 0; i2 < x_range.length; i2++) {
  107132. if (x_range[i2] >= lower_limit && x_range[i2] <= upper_limit) {
  107133. result += prob_range[i2];
  107134. }
  107135. }
  107136. return result;
  107137. } catch (e) {
  107138. var err = e;
  107139. err = formula_default.errorInfo(err);
  107140. return [formula_default.error.v, err];
  107141. }
  107142. },
  107143. "QUARTILE_EXC": function() {
  107144. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  107145. return formula_default.error.na;
  107146. }
  107147. for (var i2 = 0; i2 < arguments.length; i2++) {
  107148. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  107149. if (!p[0]) {
  107150. return formula_default.error.v;
  107151. }
  107152. }
  107153. try {
  107154. var data_array = [];
  107155. if (getObjType(arguments[0]) == "array") {
  107156. if (getObjType(arguments[0][0]) == "array" && !func_methods_default.isDyadicArr(arguments[0])) {
  107157. return formula_default.error.v;
  107158. }
  107159. data_array = data_array.concat(func_methods_default.getDataArr(arguments[0], true));
  107160. } else if (getObjType(arguments[0]) == "object" && arguments[0].startCell != null) {
  107161. data_array = data_array.concat(func_methods_default.getCellDataArr(arguments[0], "text", true));
  107162. } else {
  107163. if (!isRealNum(arguments[0])) {
  107164. return formula_default.error.v;
  107165. }
  107166. data_array.push(arguments[0]);
  107167. }
  107168. var array = [];
  107169. for (var i2 = 0; i2 < data_array.length; i2++) {
  107170. var number = data_array[i2];
  107171. if (isRealNum(number)) {
  107172. array.push(parseFloat(number));
  107173. }
  107174. }
  107175. var quart = func_methods_default.getFirstValue(arguments[1]);
  107176. if (valueIsError(quart)) {
  107177. return quart;
  107178. }
  107179. if (!isRealNum(quart)) {
  107180. return formula_default.error.v;
  107181. }
  107182. quart = parseInt(quart);
  107183. if (array.length == 0) {
  107184. return formula_default.error.nm;
  107185. }
  107186. if (quart <= 0 || quart >= 4) {
  107187. return formula_default.error.nm;
  107188. }
  107189. switch (quart) {
  107190. case 1:
  107191. return window.luckysheet_function.PERCENTILE_EXC.f(array, 0.25);
  107192. case 2:
  107193. return window.luckysheet_function.PERCENTILE_EXC.f(array, 0.5);
  107194. case 3:
  107195. return window.luckysheet_function.PERCENTILE_EXC.f(array, 0.75);
  107196. }
  107197. } catch (e) {
  107198. var err = e;
  107199. err = formula_default.errorInfo(err);
  107200. return [formula_default.error.v, err];
  107201. }
  107202. },
  107203. "QUARTILE_INC": function() {
  107204. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  107205. return formula_default.error.na;
  107206. }
  107207. for (var i2 = 0; i2 < arguments.length; i2++) {
  107208. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  107209. if (!p[0]) {
  107210. return formula_default.error.v;
  107211. }
  107212. }
  107213. try {
  107214. var data_array = [];
  107215. if (getObjType(arguments[0]) == "array") {
  107216. if (getObjType(arguments[0][0]) == "array" && !func_methods_default.isDyadicArr(arguments[0])) {
  107217. return formula_default.error.v;
  107218. }
  107219. data_array = data_array.concat(func_methods_default.getDataArr(arguments[0], true));
  107220. } else if (getObjType(arguments[0]) == "object" && arguments[0].startCell != null) {
  107221. data_array = data_array.concat(func_methods_default.getCellDataArr(arguments[0], "text", true));
  107222. } else {
  107223. if (!isRealNum(arguments[0])) {
  107224. return formula_default.error.v;
  107225. }
  107226. data_array.push(arguments[0]);
  107227. }
  107228. var array = [];
  107229. for (var i2 = 0; i2 < data_array.length; i2++) {
  107230. var number = data_array[i2];
  107231. if (isRealNum(number)) {
  107232. array.push(parseFloat(number));
  107233. }
  107234. }
  107235. var quart = func_methods_default.getFirstValue(arguments[1]);
  107236. if (valueIsError(quart)) {
  107237. return quart;
  107238. }
  107239. if (!isRealNum(quart)) {
  107240. return formula_default.error.v;
  107241. }
  107242. quart = parseInt(quart);
  107243. if (array.length == 0) {
  107244. return formula_default.error.nm;
  107245. }
  107246. if (quart < 0 || quart > 4) {
  107247. return formula_default.error.nm;
  107248. }
  107249. switch (quart) {
  107250. case 0:
  107251. return Math.min.apply(Math, array);
  107252. case 1:
  107253. return window.luckysheet_function.PERCENTILE_INC.f(array, 0.25);
  107254. case 2:
  107255. return window.luckysheet_function.PERCENTILE_INC.f(array, 0.5);
  107256. case 3:
  107257. return window.luckysheet_function.PERCENTILE_INC.f(array, 0.75);
  107258. case 4:
  107259. return Math.max.apply(Math, array);
  107260. }
  107261. } catch (e) {
  107262. var err = e;
  107263. err = formula_default.errorInfo(err);
  107264. return [formula_default.error.v, err];
  107265. }
  107266. },
  107267. "POISSON_DIST": function() {
  107268. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  107269. return formula_default.error.na;
  107270. }
  107271. for (var i2 = 0; i2 < arguments.length; i2++) {
  107272. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  107273. if (!p[0]) {
  107274. return formula_default.error.v;
  107275. }
  107276. }
  107277. try {
  107278. var x = func_methods_default.getFirstValue(arguments[0]);
  107279. if (valueIsError(x)) {
  107280. return x;
  107281. }
  107282. if (!isRealNum(x)) {
  107283. return formula_default.error.v;
  107284. }
  107285. x = parseInt(x);
  107286. var mean = func_methods_default.getFirstValue(arguments[1]);
  107287. if (valueIsError(mean)) {
  107288. return mean;
  107289. }
  107290. if (!isRealNum(mean)) {
  107291. return formula_default.error.v;
  107292. }
  107293. mean = parseFloat(mean);
  107294. var cumulative = func_methods_default.getCellBoolen(arguments[2]);
  107295. if (valueIsError(cumulative)) {
  107296. return cumulative;
  107297. }
  107298. if (x < 0 || mean < 0) {
  107299. return formula_default.error.nm;
  107300. }
  107301. return cumulative ? jStat.poisson.cdf(x, mean) : jStat.poisson.pdf(x, mean);
  107302. } catch (e) {
  107303. var err = e;
  107304. err = formula_default.errorInfo(err);
  107305. return [formula_default.error.v, err];
  107306. }
  107307. },
  107308. "RSQ": function() {
  107309. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  107310. return formula_default.error.na;
  107311. }
  107312. for (var i2 = 0; i2 < arguments.length; i2++) {
  107313. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  107314. if (!p[0]) {
  107315. return formula_default.error.v;
  107316. }
  107317. }
  107318. try {
  107319. var data_known_y = arguments[0];
  107320. var known_y = [];
  107321. if (getObjType(data_known_y) == "array") {
  107322. if (getObjType(data_known_y[0]) == "array" && !func_methods_default.isDyadicArr(data_known_y)) {
  107323. return formula_default.error.v;
  107324. }
  107325. known_y = known_y.concat(func_methods_default.getDataArr(data_known_y, false));
  107326. } else if (getObjType(data_known_y) == "object" && data_known_y.startCell != null) {
  107327. known_y = known_y.concat(func_methods_default.getCellDataArr(data_known_y, "text", false));
  107328. } else {
  107329. if (!isRealNum(data_known_y)) {
  107330. return formula_default.error.v;
  107331. }
  107332. known_y.push(data_known_y);
  107333. }
  107334. var data_known_x = arguments[1];
  107335. var known_x = [];
  107336. if (getObjType(data_known_x) == "array") {
  107337. if (getObjType(data_known_x[0]) == "array" && !func_methods_default.isDyadicArr(data_known_x)) {
  107338. return formula_default.error.v;
  107339. }
  107340. known_x = known_x.concat(func_methods_default.getDataArr(data_known_x, false));
  107341. } else if (getObjType(data_known_x) == "object" && data_known_x.startCell != null) {
  107342. known_x = known_x.concat(func_methods_default.getCellDataArr(data_known_x, "text", false));
  107343. } else {
  107344. if (!isRealNum(data_known_x)) {
  107345. return formula_default.error.v;
  107346. }
  107347. known_x.push(data_known_x);
  107348. }
  107349. if (known_y.length != known_x.length) {
  107350. return formula_default.error.na;
  107351. }
  107352. var data_y = [], data_x = [];
  107353. for (var i2 = 0; i2 < known_y.length; i2++) {
  107354. var num_y = known_y[i2];
  107355. var num_x = known_x[i2];
  107356. if (isRealNum(num_y) && isRealNum(num_x)) {
  107357. data_y.push(parseFloat(num_y));
  107358. data_x.push(parseFloat(num_x));
  107359. }
  107360. }
  107361. if (data_y.length == 0 || data_x.length == 0) {
  107362. return formula_default.error.d;
  107363. }
  107364. return Math.pow(window.luckysheet_function.PEARSON.f(data_y, data_x), 2);
  107365. } catch (e) {
  107366. var err = e;
  107367. err = formula_default.errorInfo(err);
  107368. return [formula_default.error.v, err];
  107369. }
  107370. },
  107371. "T_DIST": function() {
  107372. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  107373. return formula_default.error.na;
  107374. }
  107375. for (var i2 = 0; i2 < arguments.length; i2++) {
  107376. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  107377. if (!p[0]) {
  107378. return formula_default.error.v;
  107379. }
  107380. }
  107381. try {
  107382. var x = func_methods_default.getFirstValue(arguments[0]);
  107383. if (valueIsError(x)) {
  107384. return x;
  107385. }
  107386. if (!isRealNum(x)) {
  107387. return formula_default.error.v;
  107388. }
  107389. x = parseFloat(x);
  107390. var degrees_freedom = func_methods_default.getFirstValue(arguments[1]);
  107391. if (valueIsError(degrees_freedom)) {
  107392. return degrees_freedom;
  107393. }
  107394. if (!isRealNum(degrees_freedom)) {
  107395. return formula_default.error.v;
  107396. }
  107397. degrees_freedom = parseInt(degrees_freedom);
  107398. var cumulative = func_methods_default.getCellBoolen(arguments[2]);
  107399. if (valueIsError(cumulative)) {
  107400. return cumulative;
  107401. }
  107402. if (degrees_freedom < 1) {
  107403. return formula_default.error.nm;
  107404. }
  107405. return cumulative ? jStat.studentt.cdf(x, degrees_freedom) : jStat.studentt.pdf(x, degrees_freedom);
  107406. } catch (e) {
  107407. var err = e;
  107408. err = formula_default.errorInfo(err);
  107409. return [formula_default.error.v, err];
  107410. }
  107411. },
  107412. "T_DIST_2T": function() {
  107413. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  107414. return formula_default.error.na;
  107415. }
  107416. for (var i2 = 0; i2 < arguments.length; i2++) {
  107417. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  107418. if (!p[0]) {
  107419. return formula_default.error.v;
  107420. }
  107421. }
  107422. try {
  107423. var x = func_methods_default.getFirstValue(arguments[0]);
  107424. if (valueIsError(x)) {
  107425. return x;
  107426. }
  107427. if (!isRealNum(x)) {
  107428. return formula_default.error.v;
  107429. }
  107430. x = parseFloat(x);
  107431. var degrees_freedom = func_methods_default.getFirstValue(arguments[1]);
  107432. if (valueIsError(degrees_freedom)) {
  107433. return degrees_freedom;
  107434. }
  107435. if (!isRealNum(degrees_freedom)) {
  107436. return formula_default.error.v;
  107437. }
  107438. degrees_freedom = parseInt(degrees_freedom);
  107439. if (x < 0 || degrees_freedom < 1) {
  107440. return formula_default.error.nm;
  107441. }
  107442. return (1 - jStat.studentt.cdf(x, degrees_freedom)) * 2;
  107443. } catch (e) {
  107444. var err = e;
  107445. err = formula_default.errorInfo(err);
  107446. return [formula_default.error.v, err];
  107447. }
  107448. },
  107449. "T_DIST_RT": function() {
  107450. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  107451. return formula_default.error.na;
  107452. }
  107453. for (var i2 = 0; i2 < arguments.length; i2++) {
  107454. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  107455. if (!p[0]) {
  107456. return formula_default.error.v;
  107457. }
  107458. }
  107459. try {
  107460. var x = func_methods_default.getFirstValue(arguments[0]);
  107461. if (valueIsError(x)) {
  107462. return x;
  107463. }
  107464. if (!isRealNum(x)) {
  107465. return formula_default.error.v;
  107466. }
  107467. x = parseFloat(x);
  107468. var degrees_freedom = func_methods_default.getFirstValue(arguments[1]);
  107469. if (valueIsError(degrees_freedom)) {
  107470. return degrees_freedom;
  107471. }
  107472. if (!isRealNum(degrees_freedom)) {
  107473. return formula_default.error.v;
  107474. }
  107475. degrees_freedom = parseInt(degrees_freedom);
  107476. if (degrees_freedom < 1) {
  107477. return formula_default.error.nm;
  107478. }
  107479. return 1 - jStat.studentt.cdf(x, degrees_freedom);
  107480. } catch (e) {
  107481. var err = e;
  107482. err = formula_default.errorInfo(err);
  107483. return [formula_default.error.v, err];
  107484. }
  107485. },
  107486. "T_INV": function() {
  107487. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  107488. return formula_default.error.na;
  107489. }
  107490. for (var i2 = 0; i2 < arguments.length; i2++) {
  107491. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  107492. if (!p[0]) {
  107493. return formula_default.error.v;
  107494. }
  107495. }
  107496. try {
  107497. var probability = func_methods_default.getFirstValue(arguments[0]);
  107498. if (valueIsError(probability)) {
  107499. return probability;
  107500. }
  107501. if (!isRealNum(probability)) {
  107502. return formula_default.error.v;
  107503. }
  107504. probability = parseFloat(probability);
  107505. var deg_freedom = func_methods_default.getFirstValue(arguments[1]);
  107506. if (valueIsError(deg_freedom)) {
  107507. return deg_freedom;
  107508. }
  107509. if (!isRealNum(deg_freedom)) {
  107510. return formula_default.error.v;
  107511. }
  107512. deg_freedom = parseInt(deg_freedom);
  107513. if (probability <= 0 || probability > 1) {
  107514. return formula_default.error.nm;
  107515. }
  107516. if (deg_freedom < 1) {
  107517. return formula_default.error.nm;
  107518. }
  107519. return jStat.studentt.inv(probability, deg_freedom);
  107520. } catch (e) {
  107521. var err = e;
  107522. err = formula_default.errorInfo(err);
  107523. return [formula_default.error.v, err];
  107524. }
  107525. },
  107526. "T_INV_2T": function() {
  107527. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  107528. return formula_default.error.na;
  107529. }
  107530. for (var i2 = 0; i2 < arguments.length; i2++) {
  107531. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  107532. if (!p[0]) {
  107533. return formula_default.error.v;
  107534. }
  107535. }
  107536. try {
  107537. var probability = func_methods_default.getFirstValue(arguments[0]);
  107538. if (valueIsError(probability)) {
  107539. return probability;
  107540. }
  107541. if (!isRealNum(probability)) {
  107542. return formula_default.error.v;
  107543. }
  107544. probability = parseFloat(probability);
  107545. var deg_freedom = func_methods_default.getFirstValue(arguments[1]);
  107546. if (valueIsError(deg_freedom)) {
  107547. return deg_freedom;
  107548. }
  107549. if (!isRealNum(deg_freedom)) {
  107550. return formula_default.error.v;
  107551. }
  107552. deg_freedom = parseInt(deg_freedom);
  107553. if (probability <= 0 || probability > 1) {
  107554. return formula_default.error.nm;
  107555. }
  107556. if (deg_freedom < 1) {
  107557. return formula_default.error.nm;
  107558. }
  107559. return Math.abs(jStat.studentt.inv(probability / 2, deg_freedom));
  107560. } catch (e) {
  107561. var err = e;
  107562. err = formula_default.errorInfo(err);
  107563. return [formula_default.error.v, err];
  107564. }
  107565. },
  107566. "T_TEST": function() {
  107567. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  107568. return formula_default.error.na;
  107569. }
  107570. for (var i2 = 0; i2 < arguments.length; i2++) {
  107571. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  107572. if (!p[0]) {
  107573. return formula_default.error.v;
  107574. }
  107575. }
  107576. try {
  107577. var known_x = [];
  107578. if (getObjType(arguments[0]) == "array") {
  107579. if (getObjType(arguments[0][0]) == "array" && !func_methods_default.isDyadicArr(arguments[0])) {
  107580. return formula_default.error.v;
  107581. }
  107582. known_x = known_x.concat(func_methods_default.getDataArr(arguments[0], false));
  107583. } else if (getObjType(arguments[0]) == "object" && arguments[0].startCell != null) {
  107584. known_x = known_x.concat(func_methods_default.getCellDataArr(arguments[0], "text", false));
  107585. } else {
  107586. if (!isRealNum(arguments[0])) {
  107587. return formula_default.error.v;
  107588. }
  107589. known_x.push(arguments[0]);
  107590. }
  107591. var data_x = known_x;
  107592. var known_y = [];
  107593. if (getObjType(arguments[1]) == "array") {
  107594. if (getObjType(arguments[1][0]) == "array" && !func_methods_default.isDyadicArr(arguments[1])) {
  107595. return formula_default.error.v;
  107596. }
  107597. known_y = known_y.concat(func_methods_default.getDataArr(arguments[1], false));
  107598. } else if (getObjType(arguments[1]) == "object" && arguments[1].startCell != null) {
  107599. known_y = known_y.concat(func_methods_default.getCellDataArr(arguments[1], "text", false));
  107600. } else {
  107601. if (!isRealNum(arguments[1])) {
  107602. return formula_default.error.v;
  107603. }
  107604. known_y.push(arguments[1]);
  107605. }
  107606. var data_y = known_y;
  107607. var tails = func_methods_default.getFirstValue(arguments[2]);
  107608. if (valueIsError(tails)) {
  107609. return tails;
  107610. }
  107611. if (!isRealNum(tails)) {
  107612. return formula_default.error.v;
  107613. }
  107614. tails = parseInt(tails);
  107615. var type = func_methods_default.getFirstValue(arguments[3]);
  107616. if (valueIsError(type)) {
  107617. return type;
  107618. }
  107619. if (!isRealNum(type)) {
  107620. return formula_default.error.v;
  107621. }
  107622. type = parseInt(type);
  107623. if ([1, 2].indexOf(tails) == -1) {
  107624. return formula_default.error.nm;
  107625. }
  107626. if ([1, 2, 3].indexOf(type) == -1) {
  107627. return formula_default.error.nm;
  107628. }
  107629. var t = null, df = null;
  107630. if (type == 1) {
  107631. var diff_arr = [];
  107632. for (i2 = 0; i2 < data_x.length; i2++) {
  107633. diff_arr.push(data_x[i2] - data_y[i2]);
  107634. }
  107635. var diff_mean = Math.abs(jStat.mean(diff_arr));
  107636. var diff_sd = func_methods_default.standardDeviation_s(diff_arr);
  107637. t = diff_mean / (diff_sd / Math.sqrt(data_x.length));
  107638. df = data_x.length - 1;
  107639. } else {
  107640. var mean_x = jStat.mean(data_x);
  107641. var mean_y = jStat.mean(data_y);
  107642. var s_x = func_methods_default.variance_s(data_x);
  107643. var s_y = func_methods_default.variance_s(data_y);
  107644. t = Math.abs(mean_x - mean_y) / Math.sqrt(s_x / data_x.length + s_y / data_y.length);
  107645. switch (type) {
  107646. case 2:
  107647. df = data_x.length + data_y.length - 2;
  107648. break;
  107649. case 3:
  107650. df = Math.pow(s_x / data_x.length + s_y / data_y.length, 2) / (Math.pow(s_x / data_x.length, 2) / (data_x.length - 1) + Math.pow(s_y / data_y.length, 2) / (data_y.length - 1));
  107651. break;
  107652. }
  107653. }
  107654. if (tails == 1) {
  107655. var result = window.luckysheet_function.T_DIST_RT.f(t, df);
  107656. } else if (tails == 2) {
  107657. var result = window.luckysheet_function.T_DIST_2T.f(t, df);
  107658. }
  107659. return result;
  107660. } catch (e) {
  107661. var err = e;
  107662. err = formula_default.errorInfo(err);
  107663. return [formula_default.error.v, err];
  107664. }
  107665. },
  107666. "F_DIST": function() {
  107667. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  107668. return formula_default.error.na;
  107669. }
  107670. for (var i2 = 0; i2 < arguments.length; i2++) {
  107671. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  107672. if (!p[0]) {
  107673. return formula_default.error.v;
  107674. }
  107675. }
  107676. try {
  107677. var x = func_methods_default.getFirstValue(arguments[0]);
  107678. if (valueIsError(x)) {
  107679. return x;
  107680. }
  107681. if (!isRealNum(x)) {
  107682. return formula_default.error.v;
  107683. }
  107684. x = parseFloat(x);
  107685. var degrees_freedom1 = func_methods_default.getFirstValue(arguments[1]);
  107686. if (valueIsError(degrees_freedom1)) {
  107687. return degrees_freedom1;
  107688. }
  107689. if (!isRealNum(degrees_freedom1)) {
  107690. return formula_default.error.v;
  107691. }
  107692. degrees_freedom1 = parseInt(degrees_freedom1);
  107693. var degrees_freedom2 = func_methods_default.getFirstValue(arguments[2]);
  107694. if (valueIsError(degrees_freedom2)) {
  107695. return degrees_freedom2;
  107696. }
  107697. if (!isRealNum(degrees_freedom2)) {
  107698. return formula_default.error.v;
  107699. }
  107700. degrees_freedom2 = parseInt(degrees_freedom2);
  107701. var cumulative = func_methods_default.getCellBoolen(arguments[3]);
  107702. if (valueIsError(cumulative)) {
  107703. return cumulative;
  107704. }
  107705. if (x < 0) {
  107706. return formula_default.error.nm;
  107707. }
  107708. if (degrees_freedom1 < 1) {
  107709. return formula_default.error.nm;
  107710. }
  107711. if (degrees_freedom2 < 1) {
  107712. return formula_default.error.nm;
  107713. }
  107714. return cumulative ? jStat.centralF.cdf(x, degrees_freedom1, degrees_freedom2) : jStat.centralF.pdf(x, degrees_freedom1, degrees_freedom2);
  107715. } catch (e) {
  107716. var err = e;
  107717. err = formula_default.errorInfo(err);
  107718. return [formula_default.error.v, err];
  107719. }
  107720. },
  107721. "F_DIST_RT": function() {
  107722. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  107723. return formula_default.error.na;
  107724. }
  107725. for (var i2 = 0; i2 < arguments.length; i2++) {
  107726. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  107727. if (!p[0]) {
  107728. return formula_default.error.v;
  107729. }
  107730. }
  107731. try {
  107732. var x = func_methods_default.getFirstValue(arguments[0]);
  107733. if (valueIsError(x)) {
  107734. return x;
  107735. }
  107736. if (!isRealNum(x)) {
  107737. return formula_default.error.v;
  107738. }
  107739. x = parseFloat(x);
  107740. var degrees_freedom1 = func_methods_default.getFirstValue(arguments[1]);
  107741. if (valueIsError(degrees_freedom1)) {
  107742. return degrees_freedom1;
  107743. }
  107744. if (!isRealNum(degrees_freedom1)) {
  107745. return formula_default.error.v;
  107746. }
  107747. degrees_freedom1 = parseInt(degrees_freedom1);
  107748. var degrees_freedom2 = func_methods_default.getFirstValue(arguments[2]);
  107749. if (valueIsError(degrees_freedom2)) {
  107750. return degrees_freedom2;
  107751. }
  107752. if (!isRealNum(degrees_freedom2)) {
  107753. return formula_default.error.v;
  107754. }
  107755. degrees_freedom2 = parseInt(degrees_freedom2);
  107756. if (x < 0) {
  107757. return formula_default.error.nm;
  107758. }
  107759. if (degrees_freedom1 < 1) {
  107760. return formula_default.error.nm;
  107761. }
  107762. if (degrees_freedom2 < 1) {
  107763. return formula_default.error.nm;
  107764. }
  107765. return 1 - jStat.centralF.cdf(x, degrees_freedom1, degrees_freedom2);
  107766. } catch (e) {
  107767. var err = e;
  107768. err = formula_default.errorInfo(err);
  107769. return [formula_default.error.v, err];
  107770. }
  107771. },
  107772. "VAR_P": function() {
  107773. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  107774. return formula_default.error.na;
  107775. }
  107776. for (var i2 = 0; i2 < arguments.length; i2++) {
  107777. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  107778. if (!p[0]) {
  107779. return formula_default.error.v;
  107780. }
  107781. }
  107782. try {
  107783. var dataArr = [];
  107784. for (var i2 = 0; i2 < arguments.length; i2++) {
  107785. var data = arguments[i2];
  107786. if (getObjType(data) == "array") {
  107787. if (getObjType(data[0]) == "array" && !func_methods_default.isDyadicArr(data)) {
  107788. return formula_default.error.v;
  107789. }
  107790. dataArr = dataArr.concat(func_methods_default.getDataArr(data, true));
  107791. } else if (getObjType(data) == "object" && data.startCell != null) {
  107792. dataArr = dataArr.concat(func_methods_default.getCellDataArr(data, "number", true));
  107793. } else {
  107794. if (!isRealNum(data)) {
  107795. return formula_default.error.v;
  107796. }
  107797. dataArr.push(data);
  107798. }
  107799. }
  107800. var dataArr_n = [];
  107801. for (var i2 = 0; i2 < dataArr.length; i2++) {
  107802. var number = dataArr[i2];
  107803. if (isRealNum(number)) {
  107804. dataArr_n.push(parseFloat(number));
  107805. }
  107806. }
  107807. if (dataArr_n.length == 0) {
  107808. return formula_default.error.d;
  107809. }
  107810. var n = dataArr_n.length;
  107811. var sigma = 0;
  107812. var mean = window.luckysheet_function.AVERAGE.f.apply(window.luckysheet_function.AVERAGE, dataArr_n);
  107813. for (var i2 = 0; i2 < n; i2++) {
  107814. sigma += Math.pow(dataArr_n[i2] - mean, 2);
  107815. }
  107816. return sigma / n;
  107817. } catch (e) {
  107818. var err = e;
  107819. err = formula_default.errorInfo(err);
  107820. return [formula_default.error.v, err];
  107821. }
  107822. },
  107823. "VAR_S": function() {
  107824. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  107825. return formula_default.error.na;
  107826. }
  107827. for (var i2 = 0; i2 < arguments.length; i2++) {
  107828. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  107829. if (!p[0]) {
  107830. return formula_default.error.v;
  107831. }
  107832. }
  107833. try {
  107834. var dataArr = [];
  107835. for (var i2 = 0; i2 < arguments.length; i2++) {
  107836. var data = arguments[i2];
  107837. if (getObjType(data) == "array") {
  107838. if (getObjType(data[0]) == "array" && !func_methods_default.isDyadicArr(data)) {
  107839. return formula_default.error.v;
  107840. }
  107841. dataArr = dataArr.concat(func_methods_default.getDataArr(data, true));
  107842. } else if (getObjType(data) == "object" && data.startCell != null) {
  107843. dataArr = dataArr.concat(func_methods_default.getCellDataArr(data, "number", true));
  107844. } else {
  107845. if (!isRealNum(data)) {
  107846. return formula_default.error.v;
  107847. }
  107848. dataArr.push(data);
  107849. }
  107850. }
  107851. var dataArr_n = [];
  107852. for (var i2 = 0; i2 < dataArr.length; i2++) {
  107853. var number = dataArr[i2];
  107854. if (isRealNum(number)) {
  107855. dataArr_n.push(parseFloat(number));
  107856. }
  107857. }
  107858. if (dataArr_n.length == 0) {
  107859. return formula_default.error.d;
  107860. }
  107861. var n = dataArr_n.length;
  107862. var sigma = 0;
  107863. var mean = window.luckysheet_function.AVERAGE.f.apply(window.luckysheet_function.AVERAGE, dataArr_n);
  107864. for (var i2 = 0; i2 < n; i2++) {
  107865. sigma += Math.pow(dataArr_n[i2] - mean, 2);
  107866. }
  107867. return sigma / (n - 1);
  107868. } catch (e) {
  107869. var err = e;
  107870. err = formula_default.errorInfo(err);
  107871. return [formula_default.error.v, err];
  107872. }
  107873. },
  107874. "VARA": function() {
  107875. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  107876. return formula_default.error.na;
  107877. }
  107878. for (var i2 = 0; i2 < arguments.length; i2++) {
  107879. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  107880. if (!p[0]) {
  107881. return formula_default.error.v;
  107882. }
  107883. }
  107884. try {
  107885. var dataArr = [];
  107886. for (var i2 = 0; i2 < arguments.length; i2++) {
  107887. var data = arguments[i2];
  107888. if (getObjType(data) == "array") {
  107889. if (getObjType(data[0]) == "array" && !func_methods_default.isDyadicArr(data)) {
  107890. return formula_default.error.v;
  107891. }
  107892. dataArr = dataArr.concat(func_methods_default.getDataArr(data, false));
  107893. } else if (getObjType(data) == "object" && data.startCell != null) {
  107894. dataArr = dataArr.concat(func_methods_default.getCellDataArr(data, "number", true));
  107895. } else {
  107896. if (number.toString.toLowerCase() == "true") {
  107897. dataArr.push(1);
  107898. } else if (number.toString.toLowerCase() == "false") {
  107899. dataArr.push(0);
  107900. } else if (isRealNum(data)) {
  107901. dataArr.push(data);
  107902. } else {
  107903. return formula_default.error.v;
  107904. }
  107905. }
  107906. }
  107907. var dataArr_n = [];
  107908. for (var i2 = 0; i2 < dataArr.length; i2++) {
  107909. var number = dataArr[i2];
  107910. if (isRealNum(number)) {
  107911. dataArr_n.push(parseFloat(number));
  107912. } else {
  107913. if (number.toString().toLowerCase() == "true") {
  107914. dataArr_n.push(1);
  107915. } else {
  107916. dataArr_n.push(0);
  107917. }
  107918. }
  107919. }
  107920. var n = dataArr_n.length;
  107921. var sigma = 0;
  107922. var mean = window.luckysheet_function.AVERAGE.f.apply(window.luckysheet_function.AVERAGE, dataArr_n);
  107923. for (var i2 = 0; i2 < n; i2++) {
  107924. sigma += Math.pow(dataArr_n[i2] - mean, 2);
  107925. }
  107926. return sigma / (n - 1);
  107927. } catch (e) {
  107928. var err = e;
  107929. err = formula_default.errorInfo(err);
  107930. return [formula_default.error.v, err];
  107931. }
  107932. },
  107933. "VARPA": function() {
  107934. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  107935. return formula_default.error.na;
  107936. }
  107937. for (var i2 = 0; i2 < arguments.length; i2++) {
  107938. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  107939. if (!p[0]) {
  107940. return formula_default.error.v;
  107941. }
  107942. }
  107943. try {
  107944. var dataArr = [];
  107945. for (var i2 = 0; i2 < arguments.length; i2++) {
  107946. var data = arguments[i2];
  107947. if (getObjType(data) == "array") {
  107948. if (getObjType(data[0]) == "array" && !func_methods_default.isDyadicArr(data)) {
  107949. return formula_default.error.v;
  107950. }
  107951. dataArr = dataArr.concat(func_methods_default.getDataArr(data, false));
  107952. } else if (getObjType(data) == "object" && data.startCell != null) {
  107953. dataArr = dataArr.concat(func_methods_default.getCellDataArr(data, "number", true));
  107954. } else {
  107955. if (number.toString.toLowerCase() == "true") {
  107956. dataArr.push(1);
  107957. } else if (number.toString.toLowerCase() == "false") {
  107958. dataArr.push(0);
  107959. } else if (isRealNum(data)) {
  107960. dataArr.push(data);
  107961. } else {
  107962. return formula_default.error.v;
  107963. }
  107964. }
  107965. }
  107966. var dataArr_n = [];
  107967. for (var i2 = 0; i2 < dataArr.length; i2++) {
  107968. var number = dataArr[i2];
  107969. if (isRealNum(number)) {
  107970. dataArr_n.push(parseFloat(number));
  107971. } else {
  107972. if (number.toString().toLowerCase() == "true") {
  107973. dataArr_n.push(1);
  107974. } else {
  107975. dataArr_n.push(0);
  107976. }
  107977. }
  107978. }
  107979. var n = dataArr_n.length;
  107980. var sigma = 0;
  107981. var mean = window.luckysheet_function.AVERAGE.f.apply(window.luckysheet_function.AVERAGE, dataArr_n);
  107982. for (var i2 = 0; i2 < n; i2++) {
  107983. sigma += Math.pow(dataArr_n[i2] - mean, 2);
  107984. }
  107985. return sigma / n;
  107986. } catch (e) {
  107987. var err = e;
  107988. err = formula_default.errorInfo(err);
  107989. return [formula_default.error.v, err];
  107990. }
  107991. },
  107992. "STEYX": function() {
  107993. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  107994. return formula_default.error.na;
  107995. }
  107996. for (var i2 = 0; i2 < arguments.length; i2++) {
  107997. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  107998. if (!p[0]) {
  107999. return formula_default.error.v;
  108000. }
  108001. }
  108002. try {
  108003. var known_y = [];
  108004. if (getObjType(arguments[0]) == "array") {
  108005. if (getObjType(arguments[0][0]) == "array" && !func_methods_default.isDyadicArr(arguments[0])) {
  108006. return formula_default.error.v;
  108007. }
  108008. known_y = known_y.concat(func_methods_default.getDataArr(arguments[0], false));
  108009. } else if (getObjType(arguments[0]) == "object" && arguments[0].startCell != null) {
  108010. known_y = known_y.concat(func_methods_default.getCellDataArr(arguments[0], "text", false));
  108011. } else {
  108012. if (!isRealNum(arguments[0])) {
  108013. return formula_default.error.v;
  108014. }
  108015. known_y.push(arguments[0]);
  108016. }
  108017. var known_x = [];
  108018. if (getObjType(arguments[1]) == "array") {
  108019. if (getObjType(arguments[1][0]) == "array" && !func_methods_default.isDyadicArr(arguments[1])) {
  108020. return formula_default.error.v;
  108021. }
  108022. known_x = known_x.concat(func_methods_default.getDataArr(arguments[1], false));
  108023. } else if (getObjType(arguments[1]) == "object" && arguments[1].startCell != null) {
  108024. known_x = known_x.concat(func_methods_default.getCellDataArr(arguments[1], "text", false));
  108025. } else {
  108026. if (!isRealNum(arguments[1])) {
  108027. return formula_default.error.v;
  108028. }
  108029. known_x.push(arguments[1]);
  108030. }
  108031. if (known_y.length != known_x.length) {
  108032. return formula_default.error.na;
  108033. }
  108034. var data_y = [], data_x = [];
  108035. for (var i2 = 0; i2 < known_y.length; i2++) {
  108036. var num_y = known_y[i2];
  108037. var num_x = known_x[i2];
  108038. if (isRealNum(num_y) && isRealNum(num_x)) {
  108039. data_y.push(parseFloat(num_y));
  108040. data_x.push(parseFloat(num_x));
  108041. }
  108042. }
  108043. if (data_y.length < 3 || data_x.length < 3) {
  108044. return formula_default.error.d;
  108045. }
  108046. var xmean = jStat.mean(data_x);
  108047. var ymean = jStat.mean(data_y);
  108048. var n = data_x.length;
  108049. var lft = 0;
  108050. var num = 0;
  108051. var den = 0;
  108052. for (var i2 = 0; i2 < n; i2++) {
  108053. lft += Math.pow(data_y[i2] - ymean, 2);
  108054. num += (data_x[i2] - xmean) * (data_y[i2] - ymean);
  108055. den += Math.pow(data_x[i2] - xmean, 2);
  108056. }
  108057. return Math.sqrt((lft - num * num / den) / (n - 2));
  108058. } catch (e) {
  108059. var err = e;
  108060. err = formula_default.errorInfo(err);
  108061. return [formula_default.error.v, err];
  108062. }
  108063. },
  108064. "STANDARDIZE": function() {
  108065. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  108066. return formula_default.error.na;
  108067. }
  108068. for (var i2 = 0; i2 < arguments.length; i2++) {
  108069. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  108070. if (!p[0]) {
  108071. return formula_default.error.v;
  108072. }
  108073. }
  108074. try {
  108075. var x = func_methods_default.getFirstValue(arguments[0]);
  108076. if (valueIsError(x)) {
  108077. return x;
  108078. }
  108079. if (!isRealNum(x)) {
  108080. return formula_default.error.v;
  108081. }
  108082. x = parseFloat(x);
  108083. var mean = func_methods_default.getFirstValue(arguments[1]);
  108084. if (valueIsError(mean)) {
  108085. return mean;
  108086. }
  108087. if (!isRealNum(mean)) {
  108088. return formula_default.error.v;
  108089. }
  108090. mean = parseFloat(mean);
  108091. var standard_dev = func_methods_default.getFirstValue(arguments[2]);
  108092. if (valueIsError(standard_dev)) {
  108093. return standard_dev;
  108094. }
  108095. if (!isRealNum(standard_dev)) {
  108096. return formula_default.error.v;
  108097. }
  108098. standard_dev = parseFloat(standard_dev);
  108099. if (standard_dev <= 0) {
  108100. return formula_default.error.nm;
  108101. }
  108102. return (x - mean) / standard_dev;
  108103. } catch (e) {
  108104. var err = e;
  108105. err = formula_default.errorInfo(err);
  108106. return [formula_default.error.v, err];
  108107. }
  108108. },
  108109. "SMALL": function() {
  108110. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  108111. return formula_default.error.na;
  108112. }
  108113. for (var i2 = 0; i2 < arguments.length; i2++) {
  108114. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  108115. if (!p[0]) {
  108116. return formula_default.error.v;
  108117. }
  108118. }
  108119. try {
  108120. var dataArr = [];
  108121. if (getObjType(arguments[0]) == "array") {
  108122. if (getObjType(arguments[0][0]) == "array" && !func_methods_default.isDyadicArr(arguments[0])) {
  108123. return formula_default.error.v;
  108124. }
  108125. dataArr = dataArr.concat(func_methods_default.getDataArr(arguments[0], true));
  108126. } else if (getObjType(arguments[0]) == "object" && arguments[0].startCell != null) {
  108127. dataArr = dataArr.concat(func_methods_default.getCellDataArr(arguments[0], "number", true));
  108128. } else {
  108129. if (!isRealNum(arguments[0])) {
  108130. return formula_default.error.v;
  108131. }
  108132. dataArr.push(arguments[0]);
  108133. }
  108134. var dataArr_n = [];
  108135. for (var i2 = 0; i2 < dataArr.length; i2++) {
  108136. var number = dataArr[i2];
  108137. if (isRealNum(number)) {
  108138. dataArr_n.push(parseFloat(number));
  108139. }
  108140. }
  108141. var k = func_methods_default.getFirstValue(arguments[1]);
  108142. if (valueIsError(k)) {
  108143. return k;
  108144. }
  108145. if (!isRealNum(k)) {
  108146. return formula_default.error.v;
  108147. }
  108148. k = parseInt(k);
  108149. if (dataArr_n.length == 0) {
  108150. return formula_default.error.nm;
  108151. }
  108152. if (k <= 0 || k > dataArr_n.length) {
  108153. return formula_default.error.nm;
  108154. }
  108155. return dataArr_n.sort(function(a, b) {
  108156. return a - b;
  108157. })[k - 1];
  108158. } catch (e) {
  108159. var err = e;
  108160. err = formula_default.errorInfo(err);
  108161. return [formula_default.error.v, err];
  108162. }
  108163. },
  108164. "SLOPE": function() {
  108165. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  108166. return formula_default.error.na;
  108167. }
  108168. for (var i2 = 0; i2 < arguments.length; i2++) {
  108169. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  108170. if (!p[0]) {
  108171. return formula_default.error.v;
  108172. }
  108173. }
  108174. try {
  108175. var known_y = [];
  108176. if (getObjType(arguments[0]) == "array") {
  108177. if (getObjType(arguments[0][0]) == "array" && !func_methods_default.isDyadicArr(arguments[0])) {
  108178. return formula_default.error.v;
  108179. }
  108180. known_y = known_y.concat(func_methods_default.getDataArr(arguments[0], false));
  108181. } else if (getObjType(arguments[0]) == "object" && arguments[0].startCell != null) {
  108182. known_y = known_y.concat(func_methods_default.getCellDataArr(arguments[0], "text", false));
  108183. } else {
  108184. if (!isRealNum(arguments[0])) {
  108185. return formula_default.error.v;
  108186. }
  108187. known_y.push(arguments[0]);
  108188. }
  108189. var known_x = [];
  108190. if (getObjType(arguments[1]) == "array") {
  108191. if (getObjType(arguments[1][0]) == "array" && !func_methods_default.isDyadicArr(arguments[1])) {
  108192. return formula_default.error.v;
  108193. }
  108194. known_x = known_x.concat(func_methods_default.getDataArr(arguments[1], false));
  108195. } else if (getObjType(arguments[1]) == "object" && arguments[1].startCell != null) {
  108196. known_x = known_x.concat(func_methods_default.getCellDataArr(arguments[1], "text", false));
  108197. } else {
  108198. if (!isRealNum(arguments[1])) {
  108199. return formula_default.error.v;
  108200. }
  108201. known_x.push(arguments[1]);
  108202. }
  108203. if (known_y.length != known_x.length) {
  108204. return formula_default.error.na;
  108205. }
  108206. var data_y = [], data_x = [];
  108207. for (var i2 = 0; i2 < known_y.length; i2++) {
  108208. var num_y = known_y[i2];
  108209. var num_x = known_x[i2];
  108210. if (isRealNum(num_y) && isRealNum(num_x)) {
  108211. data_y.push(parseFloat(num_y));
  108212. data_x.push(parseFloat(num_x));
  108213. }
  108214. }
  108215. if (data_y.length < 3 || data_x.length < 3) {
  108216. return formula_default.error.d;
  108217. }
  108218. var xmean = jStat.mean(data_x);
  108219. var ymean = jStat.mean(data_y);
  108220. var n = data_x.length;
  108221. var num = 0;
  108222. var den = 0;
  108223. for (var i2 = 0; i2 < n; i2++) {
  108224. num += (data_x[i2] - xmean) * (data_y[i2] - ymean);
  108225. den += Math.pow(data_x[i2] - xmean, 2);
  108226. }
  108227. return num / den;
  108228. } catch (e) {
  108229. var err = e;
  108230. err = formula_default.errorInfo(err);
  108231. return [formula_default.error.v, err];
  108232. }
  108233. },
  108234. "SKEW": function() {
  108235. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  108236. return formula_default.error.na;
  108237. }
  108238. for (var i2 = 0; i2 < arguments.length; i2++) {
  108239. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  108240. if (!p[0]) {
  108241. return formula_default.error.v;
  108242. }
  108243. }
  108244. try {
  108245. var dataArr = [];
  108246. for (var i2 = 0; i2 < arguments.length; i2++) {
  108247. var data = arguments[i2];
  108248. if (getObjType(data) == "array") {
  108249. if (getObjType(data[0]) == "array" && !func_methods_default.isDyadicArr(data)) {
  108250. return formula_default.error.v;
  108251. }
  108252. dataArr = dataArr.concat(func_methods_default.getDataArr(data, true));
  108253. } else if (getObjType(data) == "object" && data.startCell != null) {
  108254. dataArr = dataArr.concat(func_methods_default.getCellDataArr(data, "number", true));
  108255. } else {
  108256. if (!isRealNum(data)) {
  108257. return formula_default.error.v;
  108258. }
  108259. dataArr.push(data);
  108260. }
  108261. }
  108262. var dataArr_n = [];
  108263. for (var i2 = 0; i2 < dataArr.length; i2++) {
  108264. var number = dataArr[i2];
  108265. if (isRealNum(number)) {
  108266. dataArr_n.push(parseFloat(number));
  108267. }
  108268. }
  108269. if (dataArr_n.length < 3 || func_methods_default.standardDeviation_s(dataArr_n) == 0) {
  108270. return formula_default.error.d;
  108271. }
  108272. var mean = jStat.mean(dataArr_n);
  108273. var n = dataArr_n.length;
  108274. var sigma = 0;
  108275. for (var i2 = 0; i2 < n; i2++) {
  108276. sigma += Math.pow(dataArr_n[i2] - mean, 3);
  108277. }
  108278. return n * sigma / ((n - 1) * (n - 2) * Math.pow(jStat.stdev(dataArr_n, true), 3));
  108279. } catch (e) {
  108280. var err = e;
  108281. err = formula_default.errorInfo(err);
  108282. return [formula_default.error.v, err];
  108283. }
  108284. },
  108285. "SKEW_P": function() {
  108286. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  108287. return formula_default.error.na;
  108288. }
  108289. for (var i2 = 0; i2 < arguments.length; i2++) {
  108290. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  108291. if (!p[0]) {
  108292. return formula_default.error.v;
  108293. }
  108294. }
  108295. try {
  108296. var dataArr = [];
  108297. for (var i2 = 0; i2 < arguments.length; i2++) {
  108298. var data = arguments[i2];
  108299. if (getObjType(data) == "array") {
  108300. if (getObjType(data[0]) == "array" && !func_methods_default.isDyadicArr(data)) {
  108301. return formula_default.error.v;
  108302. }
  108303. dataArr = dataArr.concat(func_methods_default.getDataArr(data, true));
  108304. } else if (getObjType(data) == "object" && data.startCell != null) {
  108305. dataArr = dataArr.concat(func_methods_default.getCellDataArr(data, "number", true));
  108306. } else {
  108307. if (!isRealNum(data)) {
  108308. return formula_default.error.v;
  108309. }
  108310. dataArr.push(data);
  108311. }
  108312. }
  108313. var dataArr_n = [];
  108314. for (var i2 = 0; i2 < dataArr.length; i2++) {
  108315. var number = dataArr[i2];
  108316. if (isRealNum(number)) {
  108317. dataArr_n.push(parseFloat(number));
  108318. }
  108319. }
  108320. if (dataArr_n.length < 3 || func_methods_default.standardDeviation_s(dataArr_n) == 0) {
  108321. return formula_default.error.d;
  108322. }
  108323. var mean = jStat.mean(dataArr_n);
  108324. var n = dataArr_n.length;
  108325. var m2 = 0;
  108326. var m3 = 0;
  108327. for (var i2 = 0; i2 < n; i2++) {
  108328. m3 += Math.pow(dataArr_n[i2] - mean, 3);
  108329. m2 += Math.pow(dataArr_n[i2] - mean, 2);
  108330. }
  108331. m3 = m3 / n;
  108332. m2 = m2 / n;
  108333. return m3 / Math.pow(m2, 3 / 2);
  108334. } catch (e) {
  108335. var err = e;
  108336. err = formula_default.errorInfo(err);
  108337. return [formula_default.error.v, err];
  108338. }
  108339. },
  108340. "ADDRESS": function() {
  108341. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  108342. return formula_default.error.na;
  108343. }
  108344. for (var i2 = 0; i2 < arguments.length; i2++) {
  108345. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  108346. if (!p[0]) {
  108347. return formula_default.error.v;
  108348. }
  108349. }
  108350. try {
  108351. var row_num = func_methods_default.getFirstValue(arguments[0]);
  108352. if (valueIsError(row_num)) {
  108353. return row_num;
  108354. }
  108355. if (!isRealNum(row_num)) {
  108356. return formula_default.error.v;
  108357. }
  108358. row_num = parseInt(row_num);
  108359. var column_num = func_methods_default.getFirstValue(arguments[1]);
  108360. if (valueIsError(column_num)) {
  108361. return column_num;
  108362. }
  108363. if (!isRealNum(column_num)) {
  108364. return formula_default.error.v;
  108365. }
  108366. column_num = parseInt(column_num);
  108367. var abs_num = 1;
  108368. if (arguments.length >= 3) {
  108369. abs_num = func_methods_default.getFirstValue(arguments[2]);
  108370. if (valueIsError(abs_num)) {
  108371. return abs_num;
  108372. }
  108373. if (!isRealNum(abs_num)) {
  108374. return formula_default.error.v;
  108375. }
  108376. abs_num = parseInt(abs_num);
  108377. }
  108378. var A1 = true;
  108379. if (arguments.length >= 4) {
  108380. A1 = func_methods_default.getCellBoolen(arguments[3]);
  108381. if (valueIsError(A1)) {
  108382. return A1;
  108383. }
  108384. }
  108385. if (row_num <= 0 || column_num <= 0) {
  108386. return formula_default.error.v;
  108387. }
  108388. if ([1, 2, 3, 4].indexOf(abs_num) == -1) {
  108389. return formula_default.error.v;
  108390. }
  108391. var str;
  108392. if (A1) {
  108393. column_num = chatatABC(column_num - 1);
  108394. switch (abs_num) {
  108395. case 1:
  108396. str = "$" + column_num + "$" + row_num;
  108397. break;
  108398. case 2:
  108399. str = column_num + "$" + row_num;
  108400. break;
  108401. case 3:
  108402. str = "$" + column_num + row_num;
  108403. break;
  108404. case 4:
  108405. str = column_num + row_num;
  108406. break;
  108407. }
  108408. } else {
  108409. switch (abs_num) {
  108410. case 1:
  108411. str = "R" + row_num + "C" + column_num;
  108412. break;
  108413. case 2:
  108414. str = "R" + row_num + "C[" + column_num + "]";
  108415. break;
  108416. case 3:
  108417. str = "R[" + row_num + "]C" + column_num;
  108418. break;
  108419. case 4:
  108420. str = "R[" + row_num + "]C[" + column_num + "]";
  108421. break;
  108422. }
  108423. }
  108424. if (arguments.length == 5) {
  108425. var sheet_text = func_methods_default.getFirstValue(arguments[4]);
  108426. if (valueIsError(sheet_text)) {
  108427. return sheet_text;
  108428. }
  108429. return sheet_text + "!" + str;
  108430. } else {
  108431. return str;
  108432. }
  108433. } catch (e) {
  108434. var err = e;
  108435. err = formula_default.errorInfo(err);
  108436. return [formula_default.error.v, err];
  108437. }
  108438. },
  108439. "INDIRECT": function() {
  108440. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  108441. return formula_default.error.na;
  108442. }
  108443. for (var i2 = 0; i2 < arguments.length; i2++) {
  108444. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  108445. if (!p[0]) {
  108446. return formula_default.error.v;
  108447. }
  108448. }
  108449. try {
  108450. var ref_text = func_methods_default.getFirstValue(arguments[0], "text");
  108451. if (valueIsError(ref_text)) {
  108452. return ref_text;
  108453. }
  108454. var A1 = true;
  108455. if (arguments.length == 2) {
  108456. A1 = func_methods_default.getCellBoolen(arguments[1]);
  108457. if (valueIsError(A1)) {
  108458. return A1;
  108459. }
  108460. }
  108461. let luckysheetfile = getluckysheetfile();
  108462. let index2 = getSheetIndex(store_default.calculateSheetIndex);
  108463. let currentSheet = luckysheetfile[index2];
  108464. let sheetdata = currentSheet.data;
  108465. if (A1) {
  108466. } else {
  108467. }
  108468. if (formula_default.iscelldata(ref_text)) {
  108469. let cellrange = formula_default.getcellrange(ref_text);
  108470. let row = cellrange.row[0], col = cellrange.column[0];
  108471. if (row < 0 || row >= sheetdata.length || col < 0 || col >= sheetdata[0].length) {
  108472. return formula_default.error.r;
  108473. }
  108474. if (sheetdata[row][col] == null || isRealNull(sheetdata[row][col].v)) {
  108475. return 0;
  108476. }
  108477. let value = sheetdata[row][col].v;
  108478. if (formula_default.execFunctionGlobalData != null) {
  108479. let ef = formula_default.execFunctionGlobalData[row + "_" + col + "_" + store_default.calculateSheetIndex];
  108480. if (ef != null) {
  108481. value = ef.v;
  108482. }
  108483. }
  108484. let retAll = {
  108485. "sheetName": currentSheet.name,
  108486. "startCell": ref_text,
  108487. "rowl": row,
  108488. "coll": col,
  108489. "data": value
  108490. };
  108491. return retAll;
  108492. } else {
  108493. return formula_default.error.r;
  108494. }
  108495. } catch (e) {
  108496. var err = e;
  108497. err = formula_default.errorInfo(err);
  108498. return [formula_default.error.v, err];
  108499. }
  108500. },
  108501. "ROW": function() {
  108502. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  108503. return formula_default.error.na;
  108504. }
  108505. for (var i2 = 0; i2 < arguments.length; i2++) {
  108506. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  108507. if (!p[0]) {
  108508. return formula_default.error.v;
  108509. }
  108510. }
  108511. try {
  108512. if (arguments.length == 1) {
  108513. var reference;
  108514. if (getObjType(arguments[0]) == "array") {
  108515. return formula_default.error.v;
  108516. } else if (getObjType(arguments[0]) == "object" && arguments[0].startCell != null) {
  108517. reference = arguments[0].startCell;
  108518. } else {
  108519. reference = arguments[0];
  108520. }
  108521. if (formula_default.iscelldata(reference)) {
  108522. var cellrange = formula_default.getcellrange(reference);
  108523. return cellrange["row"][0] + 1;
  108524. } else {
  108525. return formula_default.error.v;
  108526. }
  108527. } else {
  108528. return window.luckysheetCurrentRow + 1;
  108529. }
  108530. } catch (e) {
  108531. var err = e;
  108532. err = formula_default.errorInfo(err);
  108533. return [formula_default.error.v, err];
  108534. }
  108535. },
  108536. "ROWS": function() {
  108537. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  108538. return formula_default.error.na;
  108539. }
  108540. for (var i2 = 0; i2 < arguments.length; i2++) {
  108541. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  108542. if (!p[0]) {
  108543. return formula_default.error.v;
  108544. }
  108545. }
  108546. try {
  108547. if (getObjType(arguments[0]) == "array") {
  108548. if (getObjType(arguments[0][0]) == "array") {
  108549. return arguments[0].length;
  108550. } else {
  108551. return 1;
  108552. }
  108553. } else if (getObjType(arguments[0]) == "object" && arguments[0].startCell != null) {
  108554. return arguments[0].rowl;
  108555. } else {
  108556. return 1;
  108557. }
  108558. } catch (e) {
  108559. var err = e;
  108560. err = formula_default.errorInfo(err);
  108561. return [formula_default.error.v, err];
  108562. }
  108563. },
  108564. "COLUMN": function() {
  108565. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  108566. return formula_default.error.na;
  108567. }
  108568. for (var i2 = 0; i2 < arguments.length; i2++) {
  108569. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  108570. if (!p[0]) {
  108571. return formula_default.error.v;
  108572. }
  108573. }
  108574. try {
  108575. if (arguments.length == 1) {
  108576. var reference;
  108577. if (getObjType(arguments[0]) == "array") {
  108578. return formula_default.error.v;
  108579. } else if (getObjType(arguments[0]) == "object" && arguments[0].startCell != null) {
  108580. reference = arguments[0].startCell;
  108581. } else {
  108582. reference = arguments[0];
  108583. }
  108584. if (formula_default.iscelldata(reference)) {
  108585. var cellrange = formula_default.getcellrange(reference);
  108586. return cellrange["column"][0] + 1;
  108587. } else {
  108588. return formula_default.error.v;
  108589. }
  108590. } else {
  108591. return window.luckysheetCurrentColumn + 1;
  108592. }
  108593. } catch (e) {
  108594. var err = e;
  108595. err = formula_default.errorInfo(err);
  108596. return [formula_default.error.v, err];
  108597. }
  108598. },
  108599. "COLUMNS": function() {
  108600. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  108601. return formula_default.error.na;
  108602. }
  108603. for (var i2 = 0; i2 < arguments.length; i2++) {
  108604. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  108605. if (!p[0]) {
  108606. return formula_default.error.v;
  108607. }
  108608. }
  108609. try {
  108610. if (getObjType(arguments[0]) == "array") {
  108611. if (getObjType(arguments[0][0]) == "array") {
  108612. return arguments[0][0].length;
  108613. } else {
  108614. return arguments[0].length;
  108615. }
  108616. } else if (getObjType(arguments[0]) == "object" && arguments[0].startCell != null) {
  108617. return arguments[0].coll;
  108618. } else {
  108619. return 1;
  108620. }
  108621. } catch (e) {
  108622. var err = e;
  108623. err = formula_default.errorInfo(err);
  108624. return [formula_default.error.v, err];
  108625. }
  108626. },
  108627. "OFFSET": function() {
  108628. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  108629. return formula_default.error.na;
  108630. }
  108631. for (var i2 = 0; i2 < arguments.length; i2++) {
  108632. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  108633. if (!p[0]) {
  108634. return formula_default.error.v;
  108635. }
  108636. }
  108637. try {
  108638. if (!(getObjType(arguments[0]) == "object" && arguments[0].startCell != null)) {
  108639. return formula_default.error.v;
  108640. }
  108641. var reference = arguments[0].startCell;
  108642. let sheetName = arguments[0].sheetName;
  108643. var rows = func_methods_default.getFirstValue(arguments[1]);
  108644. if (valueIsError(rows)) {
  108645. return rows;
  108646. }
  108647. if (!isRealNum(rows)) {
  108648. return formula_default.error.v;
  108649. }
  108650. rows = parseInt(rows);
  108651. var cols = func_methods_default.getFirstValue(arguments[2]);
  108652. if (valueIsError(cols)) {
  108653. return cols;
  108654. }
  108655. if (!isRealNum(cols)) {
  108656. return formula_default.error.v;
  108657. }
  108658. cols = parseInt(cols);
  108659. var height = arguments[0].rowl;
  108660. if (arguments.length >= 4) {
  108661. height = func_methods_default.getFirstValue(arguments[3]);
  108662. if (valueIsError(height)) {
  108663. return height;
  108664. }
  108665. if (!isRealNum(height)) {
  108666. return formula_default.error.v;
  108667. }
  108668. height = parseInt(height);
  108669. }
  108670. var width = arguments[0].coll;
  108671. if (arguments.length == 5) {
  108672. width = func_methods_default.getFirstValue(arguments[4]);
  108673. if (valueIsError(width)) {
  108674. return width;
  108675. }
  108676. if (!isRealNum(width)) {
  108677. return formula_default.error.v;
  108678. }
  108679. width = parseInt(width);
  108680. }
  108681. if (height < 1 || width < 1) {
  108682. return formula_default.error.r;
  108683. }
  108684. var cellrange = formula_default.getcellrange(reference);
  108685. var cellRow0 = cellrange["row"][0];
  108686. var cellCol0 = cellrange["column"][0];
  108687. cellRow0 += rows;
  108688. cellCol0 += cols;
  108689. var cellRow1 = cellRow0 + height - 1;
  108690. var cellCol1 = cellCol0 + width - 1;
  108691. let luckysheetfile = getluckysheetfile();
  108692. let index2 = getSheetIndex(store_default.calculateSheetIndex);
  108693. let sheetdata = luckysheetfile[index2].data;
  108694. if (cellRow0 < 0 || cellRow1 >= sheetdata.length || cellCol0 < 0 || cellCol1 >= sheetdata[0].length) {
  108695. return formula_default.error.r;
  108696. }
  108697. var result = [];
  108698. for (var r2 = cellRow0; r2 <= cellRow1; r2++) {
  108699. var rowArr = [];
  108700. for (var c2 = cellCol0; c2 <= cellCol1; c2++) {
  108701. if (formula_default.execFunctionGlobalData != null && formula_default.execFunctionGlobalData[r2 + "_" + c2 + "_" + store_default.calculateSheetIndex] != null) {
  108702. let ef = formula_default.execFunctionGlobalData[r2 + "_" + c2 + "_" + store_default.calculateSheetIndex];
  108703. if (ef != null) {
  108704. rowArr.push(ef.v);
  108705. } else {
  108706. rowArr.push(0);
  108707. }
  108708. } else if (sheetdata[r2][c2] != null && !isRealNull(sheetdata[r2][c2].v)) {
  108709. rowArr.push(sheetdata[r2][c2].v);
  108710. } else {
  108711. rowArr.push(0);
  108712. }
  108713. }
  108714. result.push(rowArr);
  108715. }
  108716. let retAll = {
  108717. "sheetName": sheetName,
  108718. "startCell": getRangetxt(store_default.calculateSheetIndex, {
  108719. row: [cellRow0, cellRow1],
  108720. column: [cellCol0, cellCol1]
  108721. }),
  108722. "rowl": cellRow0,
  108723. "coll": cellCol0,
  108724. "data": result
  108725. };
  108726. return retAll;
  108727. } catch (e) {
  108728. var err = e;
  108729. err = formula_default.errorInfo(err);
  108730. return [formula_default.error.v, err];
  108731. }
  108732. },
  108733. "MATCH": function() {
  108734. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  108735. return formula_default.error.na;
  108736. }
  108737. for (var i2 = 0; i2 < arguments.length; i2++) {
  108738. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  108739. if (!p[0]) {
  108740. return formula_default.error.v;
  108741. }
  108742. }
  108743. try {
  108744. var lookup_value = func_methods_default.getFirstValue(arguments[0]);
  108745. if (valueIsError(lookup_value)) {
  108746. return lookup_value;
  108747. }
  108748. var data_lookup_array = arguments[1];
  108749. var lookup_array = [];
  108750. if (getObjType(data_lookup_array) == "array") {
  108751. if (getObjType(data_lookup_array[0]) == "array") {
  108752. if (!func_methods_default.isDyadicArr(data_lookup_array)) {
  108753. return formula_default.error.v;
  108754. }
  108755. return formula_default.error.na;
  108756. } else {
  108757. for (var i2 = 0; i2 < data_lookup_array.length; i2++) {
  108758. lookup_array.push(data_lookup_array[i2]);
  108759. }
  108760. }
  108761. } else if (getObjType(data_lookup_array) == "object" && data_lookup_array.startCell != null) {
  108762. if (data_lookup_array.rowl > 1 && data_lookup_array.coll > 1) {
  108763. return formula_default.error.na;
  108764. }
  108765. if (data_lookup_array.data != null) {
  108766. if (getObjType(data_lookup_array.data) == "array") {
  108767. for (var i2 = 0; i2 < data_lookup_array.data.length; i2++) {
  108768. for (var j = 0; j < data_lookup_array.data[i2].length; j++) {
  108769. if (data_lookup_array.data[i2][j] != null && !isRealNull(data_lookup_array.data[i2][j].v)) {
  108770. lookup_array.push(data_lookup_array.data[i2][j].v);
  108771. }
  108772. }
  108773. }
  108774. } else {
  108775. lookup_array.push(data_lookup_array.data.v);
  108776. }
  108777. }
  108778. }
  108779. var match_type = 1;
  108780. if (arguments.length == 3) {
  108781. match_type = func_methods_default.getFirstValue(arguments[2]);
  108782. if (valueIsError(match_type)) {
  108783. return match_type;
  108784. }
  108785. if (!isRealNum(match_type)) {
  108786. return formula_default.error.v;
  108787. }
  108788. match_type = Math.ceil(parseFloat(match_type));
  108789. }
  108790. if ([-1, 0, 1].indexOf(match_type) == -1) {
  108791. return formula_default.error.na;
  108792. }
  108793. var index2;
  108794. var indexValue;
  108795. for (var idx = 0; idx < lookup_array.length; idx++) {
  108796. if (match_type === 1) {
  108797. if (lookup_array[idx] === lookup_value) {
  108798. return idx + 1;
  108799. } else if (lookup_array[idx] < lookup_value) {
  108800. if (!indexValue) {
  108801. index2 = idx + 1;
  108802. indexValue = lookup_array[idx];
  108803. } else if (lookup_array[idx] > indexValue) {
  108804. index2 = idx + 1;
  108805. indexValue = lookup_array[idx];
  108806. }
  108807. }
  108808. } else if (match_type === 0) {
  108809. if (typeof lookup_value === "string") {
  108810. lookup_value = lookup_value.replace(/\?/g, ".");
  108811. if (lookup_array[idx].toLowerCase().match(lookup_value.toLowerCase())) {
  108812. return idx + 1;
  108813. }
  108814. } else {
  108815. if (lookup_array[idx] === lookup_value) {
  108816. return idx + 1;
  108817. }
  108818. }
  108819. } else if (match_type === -1) {
  108820. if (lookup_array[idx] === lookup_value) {
  108821. return idx + 1;
  108822. } else if (lookup_array[idx] > lookup_value) {
  108823. if (!indexValue) {
  108824. index2 = idx + 1;
  108825. indexValue = lookup_array[idx];
  108826. } else if (lookup_array[idx] < indexValue) {
  108827. index2 = idx + 1;
  108828. indexValue = lookup_array[idx];
  108829. }
  108830. }
  108831. }
  108832. }
  108833. return index2 ? index2 : formula_default.error.na;
  108834. } catch (e) {
  108835. var err = e;
  108836. err = formula_default.errorInfo(err);
  108837. return [formula_default.error.v, err];
  108838. }
  108839. },
  108840. "VLOOKUP": function() {
  108841. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  108842. return formula_default.error.na;
  108843. }
  108844. for (var i2 = 0; i2 < arguments.length; i2++) {
  108845. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  108846. if (!p[0]) {
  108847. return formula_default.error.v;
  108848. }
  108849. }
  108850. try {
  108851. var lookup_value = func_methods_default.getFirstValue(arguments[0], "text");
  108852. if (valueIsError(lookup_value)) {
  108853. return lookup_value;
  108854. }
  108855. if (lookup_value.toString().replace(/\s/g, "") == "") {
  108856. return formula_default.error.na;
  108857. }
  108858. var data_table_array = arguments[1];
  108859. var table_array = [];
  108860. if (getObjType(data_table_array) == "array") {
  108861. if (getObjType(data_table_array[0]) == "array") {
  108862. if (!func_methods_default.isDyadicArr(data_table_array)) {
  108863. return formula_default.error.v;
  108864. }
  108865. for (var i2 = 0; i2 < data_table_array.length; i2++) {
  108866. var rowArr = [];
  108867. for (var j = 0; j < data_table_array[i2].length; j++) {
  108868. rowArr.push(data_table_array[i2][j]);
  108869. }
  108870. table_array.push(rowArr);
  108871. }
  108872. } else {
  108873. var rowArr = [];
  108874. for (var i2 = 0; i2 < data_table_array.length; i2++) {
  108875. rowArr.push(data_table_array[i2]);
  108876. }
  108877. table_array.push(rowArr);
  108878. }
  108879. } else if (getObjType(data_table_array) == "object" && data_table_array.startCell != null) {
  108880. table_array = func_methods_default.getCellDataDyadicArr(data_table_array, "text");
  108881. } else {
  108882. return formula_default.error.v;
  108883. }
  108884. var col_index_num = func_methods_default.getFirstValue(arguments[2]);
  108885. if (valueIsError(col_index_num)) {
  108886. return col_index_num;
  108887. }
  108888. if (!isRealNum(col_index_num)) {
  108889. return formula_default.error.v;
  108890. }
  108891. col_index_num = parseInt(col_index_num);
  108892. var range_lookup = true;
  108893. if (arguments.length == 4) {
  108894. range_lookup = func_methods_default.getCellBoolen(arguments[3]);
  108895. if (valueIsError(range_lookup)) {
  108896. return range_lookup;
  108897. }
  108898. }
  108899. if (col_index_num < 1) {
  108900. return formula_default.error.v;
  108901. } else if (col_index_num > table_array[0].length) {
  108902. return formula_default.error.r;
  108903. }
  108904. if (range_lookup) {
  108905. table_array = orderbydata(table_array, 0, true);
  108906. for (var r2 = 0; r2 < table_array.length; r2++) {
  108907. var v = table_array[r2][0];
  108908. var result;
  108909. if (isdatetime(lookup_value) && isdatetime(v)) {
  108910. result = diff(lookup_value, v);
  108911. } else if (isRealNum(lookup_value) && isRealNum(v)) {
  108912. result = (0, import_numeral6.default)(lookup_value).value() - (0, import_numeral6.default)(v).value();
  108913. } else if (!isRealNum(lookup_value) && !isRealNum(v)) {
  108914. result = lookup_value.localeCompare(v, "zh");
  108915. } else if (!isRealNum(lookup_value)) {
  108916. result = 1;
  108917. } else if (!isRealNum(v)) {
  108918. result = -1;
  108919. }
  108920. if (result < 0) {
  108921. if (r2 == 0) {
  108922. return formula_default.error.na;
  108923. } else {
  108924. return table_array[r2 - 1][col_index_num - 1];
  108925. }
  108926. } else {
  108927. if (r2 == table_array.length - 1) {
  108928. return table_array[r2][col_index_num - 1];
  108929. }
  108930. }
  108931. }
  108932. } else {
  108933. var index2 = null;
  108934. for (var r2 = 0; r2 < table_array.length; r2++) {
  108935. if (lookup_value.toString() == table_array[r2][0].toString()) {
  108936. index2 = r2;
  108937. break;
  108938. }
  108939. }
  108940. if (index2 == null) {
  108941. return formula_default.error.na;
  108942. }
  108943. return table_array[index2][col_index_num - 1];
  108944. }
  108945. } catch (e) {
  108946. var err = e;
  108947. err = formula_default.errorInfo(err);
  108948. return [formula_default.error.v, err];
  108949. }
  108950. },
  108951. "HLOOKUP": function() {
  108952. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  108953. return formula_default.error.na;
  108954. }
  108955. for (var i2 = 0; i2 < arguments.length; i2++) {
  108956. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  108957. if (!p[0]) {
  108958. return formula_default.error.v;
  108959. }
  108960. }
  108961. try {
  108962. var cell_r = window.luckysheetCurrentRow;
  108963. var cell_c = window.luckysheetCurrentColumn;
  108964. var searchkey = arguments[0];
  108965. if (typeof searchkey == "object") {
  108966. searchkey = arguments[0].data;
  108967. if (getObjType(searchkey) == "array") {
  108968. searchkey = searchkey[r];
  108969. if (getObjType(searchkey) == "array") {
  108970. searchkey = searchkey[c2];
  108971. }
  108972. } else {
  108973. searchkey = searchkey.v;
  108974. }
  108975. }
  108976. var range2 = arguments[1].data;
  108977. var index2 = arguments[2];
  108978. var isaccurate = false;
  108979. if (arguments.length > 3) {
  108980. isaccurate = !!arguments[3];
  108981. }
  108982. if (index2 > range2.rowl) {
  108983. return [formula_default.error.v, "\u7D22\u5F15\u8D85\u8FC7\u4E86\u8303\u56F4\u7684\u957F\u5EA6\uFF0C" + range2[0].length];
  108984. }
  108985. if (index2 < 1) {
  108986. return [formula_default.error.v, "\u7D22\u5F15\u5FC5\u987B\u5927\u4E8E1"];
  108987. }
  108988. var result = formula_default.error.na;
  108989. for (var c2 = 0; c2 < range2[0].length; c2++) {
  108990. var matchv = getcellvalue(0, c2, range2);
  108991. var showv = getcellvalue(index2 - 1, c2, range2);
  108992. if (isaccurate) {
  108993. if (matchv.indexOf(searchkey) > -1) {
  108994. result = showv;
  108995. }
  108996. } else {
  108997. if (formula_default.acompareb(matchv, searchkey)) {
  108998. result = showv;
  108999. return result;
  109000. }
  109001. }
  109002. }
  109003. return result;
  109004. } catch (e) {
  109005. var err = e;
  109006. err = formula_default.errorInfo(err);
  109007. return [formula_default.error.v, err];
  109008. }
  109009. },
  109010. "LOOKUP": function() {
  109011. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  109012. return formula_default.error.na;
  109013. }
  109014. for (var i2 = 0; i2 < arguments.length; i2++) {
  109015. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  109016. if (!p[0]) {
  109017. return formula_default.error.v;
  109018. }
  109019. }
  109020. try {
  109021. let sortNum = function(a, b) {
  109022. return b - a;
  109023. };
  109024. var cell_r = window.luckysheetCurrentRow;
  109025. var cell_c = window.luckysheetCurrentColumn;
  109026. var searchkey = arguments[0];
  109027. if (typeof searchkey == "object") {
  109028. searchkey = arguments[0].data;
  109029. if (getObjType(searchkey) == "array") {
  109030. searchkey = searchkey[r];
  109031. if (getObjType(searchkey) == "array") {
  109032. searchkey = searchkey[c];
  109033. }
  109034. } else {
  109035. searchkey = searchkey.v;
  109036. }
  109037. }
  109038. var range2 = arguments[1].data;
  109039. var range22;
  109040. var result = formula_default.error.na;
  109041. range2 = formula_default.getRangeArray(range2)[0];
  109042. if (arguments[2]) {
  109043. range22 = arguments[2].data;
  109044. range22 = formula_default.getRangeArray(range22)[0];
  109045. }
  109046. if (typeof searchkey == "string") {
  109047. for (var i2 = 0; i2 < range2.length; i2++) {
  109048. var matchv = range2[i2];
  109049. var showv;
  109050. if (arguments[2]) {
  109051. showv = range22[i2];
  109052. if (matchv == searchkey) {
  109053. result = showv;
  109054. }
  109055. } else {
  109056. if (formula_default.acompareb(matchv, searchkey)) {
  109057. result = matchv;
  109058. }
  109059. }
  109060. }
  109061. } else if (isdatatype(searchkey) == "num") {
  109062. var rangeNow = [];
  109063. for (var i2 = 0; i2 < range2.length; i2++) {
  109064. var matchv = range2[i2];
  109065. var showv;
  109066. if (arguments[2]) {
  109067. showv = range22[i2];
  109068. if (matchv == searchkey) {
  109069. result = showv;
  109070. return result;
  109071. } else if (matchv != searchkey && isdatatype(matchv) == "num") {
  109072. rangeNow.push(matchv);
  109073. }
  109074. } else {
  109075. if (matchv == searchkey) {
  109076. result = matchv;
  109077. return result;
  109078. } else if (matchv != searchkey && isdatatype(matchv) == "num") {
  109079. rangeNow.push(matchv);
  109080. }
  109081. }
  109082. }
  109083. if (rangeNow.length != 0) {
  109084. rangeNow.push(searchkey);
  109085. rangeNow.sort(sortNum);
  109086. var index2 = rangeNow.indexOf(searchkey);
  109087. if (index2 == rangeNow.length - 1) {
  109088. return [formula_default.error.na, "\u627E\u4E0D\u5230\u5BF9\u5E94\u53C2\u6570"];
  109089. } else {
  109090. var mat = rangeNow[index2 + 1];
  109091. if (arguments[2]) {
  109092. var i2 = range2.indexOf(mat);
  109093. result = range22[i2];
  109094. } else {
  109095. result = mat;
  109096. }
  109097. }
  109098. }
  109099. }
  109100. return result;
  109101. } catch (e) {
  109102. var err = e;
  109103. err = formula_default.errorInfo(err);
  109104. return [formula_default.error.v, err];
  109105. }
  109106. },
  109107. "INDEX": function() {
  109108. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  109109. return formula_default.error.na;
  109110. }
  109111. for (var i2 = 0; i2 < arguments.length; i2++) {
  109112. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  109113. if (!p[0]) {
  109114. return formula_default.error.v;
  109115. }
  109116. }
  109117. try {
  109118. var data_array = arguments[0];
  109119. var array = [];
  109120. let isReference = false;
  109121. if (getObjType(data_array) == "array") {
  109122. if (getObjType(data_array[0]) == "array" && !func_methods_default.isDyadicArr(data_array)) {
  109123. return formula_default.error.v;
  109124. }
  109125. array = func_methods_default.getDataDyadicArr(data_array);
  109126. } else if (getObjType(data_array) == "object" && data_array.startCell != null) {
  109127. array = func_methods_default.getCellDataDyadicArr(data_array, "number");
  109128. isReference = true;
  109129. }
  109130. var rowlen = array.length, collen = array[0].length;
  109131. var row_num = func_methods_default.getFirstValue(arguments[1]);
  109132. if (valueIsError(row_num)) {
  109133. return row_num;
  109134. }
  109135. if (!isRealNum(row_num)) {
  109136. return formula_default.error.v;
  109137. }
  109138. row_num = parseInt(row_num);
  109139. var column_num = func_methods_default.getFirstValue(arguments[2]);
  109140. if (valueIsError(column_num)) {
  109141. return column_num;
  109142. }
  109143. if (row_num < 0 || isRealNum(column_num) && column_num < 0) {
  109144. return formula_default.error.v;
  109145. }
  109146. if (row_num > rowlen || isRealNum(column_num) && column_num > collen) {
  109147. return formula_default.error.r;
  109148. }
  109149. if (isReference) {
  109150. var cellrange = formula_default.getcellrange(data_array.startCell);
  109151. var cellRow0 = cellrange["row"][0];
  109152. var cellCol0 = cellrange["column"][0];
  109153. let data = array;
  109154. if (row_num == 0 || column_num == 0) {
  109155. if (row_num == 0) {
  109156. data = array[0];
  109157. row_num = 1;
  109158. } else {
  109159. data = array[row_num - 1];
  109160. }
  109161. if (isRealNum(column_num)) {
  109162. if (column_num == 0) {
  109163. data = data[0];
  109164. column_num = 1;
  109165. } else {
  109166. data = data[column_num - 1];
  109167. }
  109168. } else {
  109169. column_num = 1;
  109170. }
  109171. } else {
  109172. if (!isRealNum(row_num)) {
  109173. row_num = 1;
  109174. }
  109175. if (!isRealNum(column_num)) {
  109176. column_num = 1;
  109177. }
  109178. data = array[row_num - 1][column_num - 1];
  109179. }
  109180. let row_index = cellRow0 + row_num - 1, column_index = cellCol0 + column_num - 1;
  109181. let retAll = {
  109182. "sheetName": data_array.sheetName,
  109183. "startCell": getRangetxt(store_default.calculateSheetIndex, {
  109184. row: [row_index, row_index],
  109185. column: [column_index, column_index]
  109186. }),
  109187. "rowl": row_index,
  109188. "coll": column_index,
  109189. "data": data
  109190. };
  109191. return retAll;
  109192. } else {
  109193. if (!isRealNum(column_num)) {
  109194. return formula_default.error.v;
  109195. }
  109196. column_num = parseInt(column_num);
  109197. if (row_num <= 0 || column_num <= 0) {
  109198. return formula_default.error.v;
  109199. }
  109200. return array[row_num - 1][column_num - 1];
  109201. }
  109202. } catch (e) {
  109203. var err = e;
  109204. err = formula_default.errorInfo(err);
  109205. return [formula_default.error.v, err];
  109206. }
  109207. },
  109208. "GETPIVOTDATA": function() {
  109209. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  109210. return formula_default.error.na;
  109211. }
  109212. for (var i2 = 0; i2 < arguments.length; i2++) {
  109213. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  109214. if (!p[0]) {
  109215. return formula_default.error.v;
  109216. }
  109217. }
  109218. try {
  109219. return formula_default.error.v;
  109220. } catch (e) {
  109221. var err = e;
  109222. err = formula_default.errorInfo(err);
  109223. return [formula_default.error.v, err];
  109224. }
  109225. },
  109226. "CHOOSE": function() {
  109227. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  109228. return formula_default.error.na;
  109229. }
  109230. for (var i2 = 0; i2 < arguments.length; i2++) {
  109231. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  109232. if (!p[0]) {
  109233. return formula_default.error.v;
  109234. }
  109235. }
  109236. try {
  109237. var index_num = func_methods_default.getFirstValue(arguments[0]);
  109238. if (valueIsError(index_num)) {
  109239. return index_num;
  109240. }
  109241. if (!isRealNum(index_num)) {
  109242. return formula_default.error.v;
  109243. }
  109244. index_num = parseInt(index_num);
  109245. if (index_num < 1 || index_num > arguments.length - 1) {
  109246. return formula_default.error.v;
  109247. }
  109248. var data_result = arguments[index_num];
  109249. if (getObjType(data_result) == "array") {
  109250. if (getObjType(data_result[0]) == "array" && !func_methods_default.isDyadicArr(data_result)) {
  109251. return formula_default.error.v;
  109252. }
  109253. return data_result;
  109254. } else if (getObjType(data_result) == "object" && data_result.startCell != null) {
  109255. if (data_result.data == null) {
  109256. return 0;
  109257. }
  109258. if (getObjType(data_result.data) == "array") {
  109259. var result = func_methods_default.getCellDataDyadicArr(data_result.data, "number");
  109260. return result;
  109261. } else {
  109262. if (isRealNull(data_result.data.v)) {
  109263. return 0;
  109264. }
  109265. return data_result.data.v;
  109266. }
  109267. } else {
  109268. return data_result;
  109269. }
  109270. } catch (e) {
  109271. var err = e;
  109272. err = formula_default.errorInfo(err);
  109273. return [formula_default.error.v, err];
  109274. }
  109275. },
  109276. "HYPERLINK": function() {
  109277. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  109278. return formula_default.error.na;
  109279. }
  109280. for (var i2 = 0; i2 < arguments.length; i2++) {
  109281. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  109282. if (!p[0]) {
  109283. return formula_default.error.v;
  109284. }
  109285. }
  109286. try {
  109287. return formula_default.error.v;
  109288. } catch (e) {
  109289. var err = e;
  109290. err = formula_default.errorInfo(err);
  109291. return [formula_default.error.v, err];
  109292. }
  109293. },
  109294. "TIME": function() {
  109295. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  109296. return formula_default.error.na;
  109297. }
  109298. for (var i2 = 0; i2 < arguments.length; i2++) {
  109299. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  109300. if (!p[0]) {
  109301. return formula_default.error.v;
  109302. }
  109303. }
  109304. try {
  109305. var hour = func_methods_default.getFirstValue(arguments[0]);
  109306. if (valueIsError(hour)) {
  109307. return hour;
  109308. }
  109309. if (!isRealNum(hour)) {
  109310. return formula_default.error.v;
  109311. }
  109312. hour = parseInt(hour);
  109313. var minute = func_methods_default.getFirstValue(arguments[1]);
  109314. if (valueIsError(minute)) {
  109315. return minute;
  109316. }
  109317. if (!isRealNum(minute)) {
  109318. return formula_default.error.v;
  109319. }
  109320. minute = parseInt(minute);
  109321. var second = func_methods_default.getFirstValue(arguments[2]);
  109322. if (valueIsError(second)) {
  109323. return second;
  109324. }
  109325. if (!isRealNum(second)) {
  109326. return formula_default.error.v;
  109327. }
  109328. second = parseInt(second);
  109329. if (hour < 0 || hour > 32767) {
  109330. return formula_default.error.nm;
  109331. } else if (hour > 24) {
  109332. hour = hour % 24;
  109333. }
  109334. if (minute < 0 || minute > 32767) {
  109335. return formula_default.error.nm;
  109336. }
  109337. if (second < 0 || second > 32767) {
  109338. return formula_default.error.nm;
  109339. }
  109340. var time = (0, import_dayjs8.default)().set({"hour": hour, "minute": minute, "second": second});
  109341. return (0, import_dayjs8.default)(time).format("h:mm:ss a");
  109342. } catch (e) {
  109343. var err = e;
  109344. err = formula_default.errorInfo(err);
  109345. return [formula_default.error.v, err];
  109346. }
  109347. },
  109348. "TIMEVALUE": function() {
  109349. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  109350. return formula_default.error.na;
  109351. }
  109352. for (var i2 = 0; i2 < arguments.length; i2++) {
  109353. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  109354. if (!p[0]) {
  109355. return formula_default.error.v;
  109356. }
  109357. }
  109358. try {
  109359. var time_text = func_methods_default.getCellDate(arguments[0]);
  109360. if (valueIsError(time_text)) {
  109361. return time_text;
  109362. }
  109363. if (!(0, import_dayjs8.default)(time_text).isValid()) {
  109364. return formula_default.error.v;
  109365. }
  109366. return (3600 * (0, import_dayjs8.default)(time_text).get("hour") + 60 * (0, import_dayjs8.default)(time_text).get("minute") + (0, import_dayjs8.default)(time_text).get("second")) / 86400;
  109367. } catch (e) {
  109368. var err = e;
  109369. err = formula_default.errorInfo(err);
  109370. return [formula_default.error.v, err];
  109371. }
  109372. },
  109373. "EOMONTH": function() {
  109374. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  109375. return formula_default.error.na;
  109376. }
  109377. for (var i2 = 0; i2 < arguments.length; i2++) {
  109378. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  109379. if (!p[0]) {
  109380. return formula_default.error.v;
  109381. }
  109382. }
  109383. try {
  109384. var start_date = func_methods_default.getCellDate(arguments[0]);
  109385. if (valueIsError(start_date)) {
  109386. return start_date;
  109387. }
  109388. var months = func_methods_default.getFirstValue(arguments[1]);
  109389. if (valueIsError(months)) {
  109390. return months;
  109391. }
  109392. if (!isRealNum(months)) {
  109393. return formula_default.error.v;
  109394. }
  109395. months = parseInt(months);
  109396. if (!(0, import_dayjs8.default)(start_date).isValid()) {
  109397. return formula_default.error.v;
  109398. }
  109399. var date = (0, import_dayjs8.default)(start_date).add(months + 1, "months").set("date", 1).subtract(1, "days");
  109400. var mask = genarate((0, import_dayjs8.default)(date).format("YYYY-MM-DD H:mm:ss"));
  109401. var result = mask[2];
  109402. return result;
  109403. } catch (e) {
  109404. var err = e;
  109405. err = formula_default.errorInfo(err);
  109406. return [formula_default.error.v, err];
  109407. }
  109408. },
  109409. "EDATE": function() {
  109410. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  109411. return formula_default.error.na;
  109412. }
  109413. for (var i2 = 0; i2 < arguments.length; i2++) {
  109414. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  109415. if (!p[0]) {
  109416. return formula_default.error.v;
  109417. }
  109418. }
  109419. try {
  109420. var start_date = func_methods_default.getCellDate(arguments[0]);
  109421. if (valueIsError(start_date)) {
  109422. return start_date;
  109423. }
  109424. var months = func_methods_default.getFirstValue(arguments[1]);
  109425. if (valueIsError(months)) {
  109426. return months;
  109427. }
  109428. if (!isRealNum(months)) {
  109429. return formula_default.error.v;
  109430. }
  109431. months = parseInt(months);
  109432. if (!(0, import_dayjs8.default)(start_date).isValid()) {
  109433. return formula_default.error.v;
  109434. }
  109435. var date = (0, import_dayjs8.default)(start_date).add(months, "months");
  109436. var mask = genarate((0, import_dayjs8.default)(date).format("YYYY-MM-DD h:mm:ss"));
  109437. var result = mask[2];
  109438. return result;
  109439. } catch (e) {
  109440. var err = e;
  109441. err = formula_default.errorInfo(err);
  109442. return [formula_default.error.v, err];
  109443. }
  109444. },
  109445. "SECOND": function() {
  109446. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  109447. return formula_default.error.na;
  109448. }
  109449. for (var i2 = 0; i2 < arguments.length; i2++) {
  109450. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  109451. if (!p[0]) {
  109452. return formula_default.error.v;
  109453. }
  109454. }
  109455. try {
  109456. var time_text = func_methods_default.getCellDate(arguments[0]);
  109457. if (valueIsError(time_text)) {
  109458. return time_text;
  109459. }
  109460. if (!(0, import_dayjs8.default)(time_text).isValid()) {
  109461. return formula_default.error.v;
  109462. }
  109463. var result = (0, import_dayjs8.default)(time_text).seconds();
  109464. return result;
  109465. } catch (e) {
  109466. var err = e;
  109467. err = formula_default.errorInfo(err);
  109468. return [formula_default.error.v, err];
  109469. }
  109470. },
  109471. "MINUTE": function() {
  109472. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  109473. return formula_default.error.na;
  109474. }
  109475. for (var i2 = 0; i2 < arguments.length; i2++) {
  109476. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  109477. if (!p[0]) {
  109478. return formula_default.error.v;
  109479. }
  109480. }
  109481. try {
  109482. var time_text = func_methods_default.getCellDate(arguments[0]);
  109483. if (valueIsError(time_text)) {
  109484. return time_text;
  109485. }
  109486. if (!(0, import_dayjs8.default)(time_text).isValid()) {
  109487. return formula_default.error.v;
  109488. }
  109489. var result = (0, import_dayjs8.default)(time_text).minutes();
  109490. return result;
  109491. } catch (e) {
  109492. var err = e;
  109493. err = formula_default.errorInfo(err);
  109494. return [formula_default.error.v, err];
  109495. }
  109496. },
  109497. "HOUR": function() {
  109498. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  109499. return formula_default.error.na;
  109500. }
  109501. for (var i2 = 0; i2 < arguments.length; i2++) {
  109502. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  109503. if (!p[0]) {
  109504. return formula_default.error.v;
  109505. }
  109506. }
  109507. try {
  109508. var time_text = func_methods_default.getCellDate(arguments[0]);
  109509. if (valueIsError(time_text)) {
  109510. return time_text;
  109511. }
  109512. if (!(0, import_dayjs8.default)(time_text).isValid()) {
  109513. return formula_default.error.v;
  109514. }
  109515. var result = (0, import_dayjs8.default)(time_text).hours();
  109516. return result;
  109517. } catch (e) {
  109518. var err = e;
  109519. err = formula_default.errorInfo(err);
  109520. return [formula_default.error.v, err];
  109521. }
  109522. },
  109523. "NOW": function() {
  109524. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  109525. return formula_default.error.na;
  109526. }
  109527. for (var i2 = 0; i2 < arguments.length; i2++) {
  109528. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  109529. if (!p[0]) {
  109530. return formula_default.error.v;
  109531. }
  109532. }
  109533. try {
  109534. return (0, import_dayjs8.default)().format("YYYY-M-D HH:mm");
  109535. } catch (e) {
  109536. var err = e;
  109537. err = formula_default.errorInfo(err);
  109538. return [formula_default.error.v, err];
  109539. }
  109540. },
  109541. "NETWORKDAYS": function() {
  109542. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  109543. return formula_default.error.na;
  109544. }
  109545. for (var i2 = 0; i2 < arguments.length; i2++) {
  109546. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  109547. if (!p[0]) {
  109548. return formula_default.error.v;
  109549. }
  109550. }
  109551. try {
  109552. if (arguments.length == 3) {
  109553. var result = window.luckysheet_function.NETWORKDAYS_INTL.f(arguments[0], arguments[1], 1, arguments[2]);
  109554. } else {
  109555. var result = window.luckysheet_function.NETWORKDAYS_INTL.f(arguments[0], arguments[1], 1);
  109556. }
  109557. return result;
  109558. } catch (e) {
  109559. var err = e;
  109560. err = formula_default.errorInfo(err);
  109561. return [formula_default.error.v, err];
  109562. }
  109563. },
  109564. "NETWORKDAYS_INTL": function() {
  109565. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  109566. return formula_default.error.na;
  109567. }
  109568. for (var i2 = 0; i2 < arguments.length; i2++) {
  109569. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  109570. if (!p[0]) {
  109571. return formula_default.error.v;
  109572. }
  109573. }
  109574. try {
  109575. var WEEKEND_TYPES = [
  109576. [],
  109577. [6, 0],
  109578. [0, 1],
  109579. [1, 2],
  109580. [2, 3],
  109581. [3, 4],
  109582. [4, 5],
  109583. [5, 6],
  109584. void 0,
  109585. void 0,
  109586. void 0,
  109587. [0, 0],
  109588. [1, 1],
  109589. [2, 2],
  109590. [3, 3],
  109591. [4, 4],
  109592. [5, 5],
  109593. [6, 6]
  109594. ];
  109595. var start_date = func_methods_default.getCellDate(arguments[0]);
  109596. if (valueIsError(start_date)) {
  109597. return start_date;
  109598. }
  109599. if (!(0, import_dayjs8.default)(start_date).isValid()) {
  109600. return formula_default.error.v;
  109601. }
  109602. var end_date = func_methods_default.getCellDate(arguments[1]);
  109603. if (valueIsError(end_date)) {
  109604. return end_date;
  109605. }
  109606. if (!(0, import_dayjs8.default)(end_date).isValid()) {
  109607. return formula_default.error.v;
  109608. }
  109609. var weekend = WEEKEND_TYPES[1];
  109610. if (arguments.length >= 3) {
  109611. weekend = arguments[2];
  109612. if (typeof weekend == "string" && weekend.length == "7" && /^[0-1]{7}$/g.test(weekend)) {
  109613. } else {
  109614. weekend = func_methods_default.getFirstValue(arguments[2]);
  109615. if (valueIsError(weekend)) {
  109616. return weekend;
  109617. }
  109618. if (!isRealNum(weekend)) {
  109619. return formula_default.error.v;
  109620. }
  109621. weekend = parseInt(weekend);
  109622. if (weekend < 1 || weekend > 7 && weekend < 11 || weekend > 17) {
  109623. return formula_default.error.nm;
  109624. }
  109625. weekend = WEEKEND_TYPES[weekend];
  109626. }
  109627. }
  109628. var holidays = [];
  109629. if (arguments.length == 4) {
  109630. holidays = func_methods_default.getCellrangeDate(arguments[3]);
  109631. if (valueIsError(holidays)) {
  109632. return holidays;
  109633. }
  109634. }
  109635. for (var i2 = 0; i2 < holidays.length; i2++) {
  109636. if (!(0, import_dayjs8.default)(holidays[i2]).isValid()) {
  109637. return formula_default.error.v;
  109638. }
  109639. }
  109640. var days = (0, import_dayjs8.default)(end_date).diff((0, import_dayjs8.default)(start_date), "days") + 1;
  109641. var total = days;
  109642. var day = (0, import_dayjs8.default)(start_date);
  109643. for (i2 = 0; i2 < days; i2++) {
  109644. var d = (0, import_dayjs8.default)(day).weekday();
  109645. var dec = false;
  109646. if (getObjType(weekend) == "array") {
  109647. if (d === weekend[0] || d === weekend[1]) {
  109648. dec = true;
  109649. }
  109650. } else {
  109651. if (d == 0) {
  109652. d = 7;
  109653. }
  109654. if (weekend.charAt(d - 1) == "0") {
  109655. dec = true;
  109656. }
  109657. }
  109658. for (var j = 0; j < holidays.length; j++) {
  109659. if ((0, import_dayjs8.default)(day).diff((0, import_dayjs8.default)(holidays[j]), "days") === 0) {
  109660. dec = true;
  109661. break;
  109662. }
  109663. }
  109664. if (dec) {
  109665. total--;
  109666. }
  109667. day = (0, import_dayjs8.default)(day).add(1, "days");
  109668. }
  109669. return total;
  109670. } catch (e) {
  109671. var err = e;
  109672. err = formula_default.errorInfo(err);
  109673. return [formula_default.error.v, err];
  109674. }
  109675. },
  109676. "ISOWEEKNUM": function() {
  109677. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  109678. return formula_default.error.na;
  109679. }
  109680. for (var i2 = 0; i2 < arguments.length; i2++) {
  109681. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  109682. if (!p[0]) {
  109683. return formula_default.error.v;
  109684. }
  109685. }
  109686. try {
  109687. var date = func_methods_default.getCellDate(arguments[0]);
  109688. if (valueIsError(date)) {
  109689. return date;
  109690. }
  109691. if (!(0, import_dayjs8.default)(date).isValid()) {
  109692. return formula_default.error.v;
  109693. }
  109694. return (0, import_dayjs8.default)(date).isoWeeks();
  109695. } catch (e) {
  109696. var err = e;
  109697. err = formula_default.errorInfo(err);
  109698. return [formula_default.error.v, err];
  109699. }
  109700. },
  109701. "WEEKNUM": function() {
  109702. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  109703. return formula_default.error.na;
  109704. }
  109705. for (var i2 = 0; i2 < arguments.length; i2++) {
  109706. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  109707. if (!p[0]) {
  109708. return formula_default.error.v;
  109709. }
  109710. }
  109711. try {
  109712. var WEEK_STARTS = [
  109713. void 0,
  109714. 7,
  109715. 1,
  109716. void 0,
  109717. void 0,
  109718. void 0,
  109719. void 0,
  109720. void 0,
  109721. void 0,
  109722. void 0,
  109723. void 0,
  109724. 1,
  109725. 2,
  109726. 3,
  109727. 4,
  109728. 5,
  109729. 6,
  109730. 7
  109731. ];
  109732. var serial_number = func_methods_default.getCellDate(arguments[0]);
  109733. if (valueIsError(serial_number)) {
  109734. return serial_number;
  109735. }
  109736. if (!(0, import_dayjs8.default)(serial_number).isValid()) {
  109737. return formula_default.error.v;
  109738. }
  109739. var return_type = 1;
  109740. if (arguments.length == 2) {
  109741. return_type = func_methods_default.getFirstValue(arguments[1]);
  109742. if (valueIsError(return_type)) {
  109743. return return_type;
  109744. }
  109745. if (!isRealNum(return_type)) {
  109746. return formula_default.error.v;
  109747. }
  109748. return_type = parseInt(return_type);
  109749. }
  109750. if (return_type == 21) {
  109751. return window.luckysheet_function.ISOWEEKNUM.f(arguments[0]);
  109752. }
  109753. if ([1, 2, 11, 12, 13, 14, 15, 16, 17].indexOf(return_type) == -1) {
  109754. return formula_default.error.nm;
  109755. }
  109756. var week_start = WEEK_STARTS[return_type];
  109757. var inc = (0, import_dayjs8.default)(serial_number).isoWeekday() >= week_start ? 1 : 0;
  109758. var result = (0, import_dayjs8.default)(serial_number).isoWeeks() + inc;
  109759. return result;
  109760. } catch (e) {
  109761. var err = e;
  109762. err = formula_default.errorInfo(err);
  109763. return [formula_default.error.v, err];
  109764. }
  109765. },
  109766. "WEEKDAY": function() {
  109767. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  109768. return formula_default.error.na;
  109769. }
  109770. for (var i2 = 0; i2 < arguments.length; i2++) {
  109771. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  109772. if (!p[0]) {
  109773. return formula_default.error.v;
  109774. }
  109775. }
  109776. try {
  109777. var WEEK_TYPES = [
  109778. [],
  109779. [1, 2, 3, 4, 5, 6, 7],
  109780. [7, 1, 2, 3, 4, 5, 6],
  109781. [6, 0, 1, 2, 3, 4, 5],
  109782. [],
  109783. [],
  109784. [],
  109785. [],
  109786. [],
  109787. [],
  109788. [],
  109789. [7, 1, 2, 3, 4, 5, 6],
  109790. [6, 7, 1, 2, 3, 4, 5],
  109791. [5, 6, 7, 1, 2, 3, 4],
  109792. [4, 5, 6, 7, 1, 2, 3],
  109793. [3, 4, 5, 6, 7, 1, 2],
  109794. [2, 3, 4, 5, 6, 7, 1],
  109795. [1, 2, 3, 4, 5, 6, 7]
  109796. ];
  109797. var serial_number = func_methods_default.getCellDate(arguments[0]);
  109798. if (valueIsError(serial_number)) {
  109799. return serial_number;
  109800. }
  109801. if (!(0, import_dayjs8.default)(serial_number).isValid()) {
  109802. return formula_default.error.v;
  109803. }
  109804. var return_type = 1;
  109805. if (arguments.length == 2) {
  109806. return_type = func_methods_default.getFirstValue(arguments[1]);
  109807. if (valueIsError(return_type)) {
  109808. return return_type;
  109809. }
  109810. if (!isRealNum(return_type)) {
  109811. return formula_default.error.v;
  109812. }
  109813. return_type = parseInt(return_type);
  109814. }
  109815. if ([1, 2, 3, 11, 12, 13, 14, 15, 16, 17].indexOf(return_type) == -1) {
  109816. return formula_default.error.nm;
  109817. }
  109818. var result = WEEK_TYPES[return_type][(0, import_dayjs8.default)(serial_number).day()];
  109819. return result;
  109820. } catch (e) {
  109821. var err = e;
  109822. err = formula_default.errorInfo(err);
  109823. return [formula_default.error.v, err];
  109824. }
  109825. },
  109826. "DAY": function() {
  109827. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  109828. return formula_default.error.na;
  109829. }
  109830. for (var i2 = 0; i2 < arguments.length; i2++) {
  109831. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  109832. if (!p[0]) {
  109833. return formula_default.error.v;
  109834. }
  109835. }
  109836. try {
  109837. var serial_number = func_methods_default.getCellDate(arguments[0]);
  109838. if (valueIsError(serial_number)) {
  109839. return serial_number;
  109840. }
  109841. if (!(0, import_dayjs8.default)(serial_number).isValid()) {
  109842. return formula_default.error.v;
  109843. }
  109844. return (0, import_dayjs8.default)(serial_number).date();
  109845. } catch (e) {
  109846. var err = e;
  109847. err = formula_default.errorInfo(err);
  109848. return [formula_default.error.v, err];
  109849. }
  109850. },
  109851. "DAYS": function() {
  109852. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  109853. return formula_default.error.na;
  109854. }
  109855. for (var i2 = 0; i2 < arguments.length; i2++) {
  109856. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  109857. if (!p[0]) {
  109858. return formula_default.error.v;
  109859. }
  109860. }
  109861. try {
  109862. var end_date = func_methods_default.getCellDate(arguments[0]);
  109863. if (valueIsError(end_date)) {
  109864. return end_date;
  109865. }
  109866. if (!(0, import_dayjs8.default)(end_date).isValid()) {
  109867. return formula_default.error.v;
  109868. }
  109869. var start_date = func_methods_default.getCellDate(arguments[1]);
  109870. if (valueIsError(start_date)) {
  109871. return start_date;
  109872. }
  109873. if (!(0, import_dayjs8.default)(start_date).isValid()) {
  109874. return formula_default.error.v;
  109875. }
  109876. var result = (0, import_dayjs8.default)(end_date).diff((0, import_dayjs8.default)(start_date), "days");
  109877. return result;
  109878. } catch (e) {
  109879. var err = e;
  109880. err = formula_default.errorInfo(err);
  109881. return [formula_default.error.v, err];
  109882. }
  109883. },
  109884. "DAYS360": function() {
  109885. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  109886. return formula_default.error.na;
  109887. }
  109888. for (var i2 = 0; i2 < arguments.length; i2++) {
  109889. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  109890. if (!p[0]) {
  109891. return formula_default.error.v;
  109892. }
  109893. }
  109894. try {
  109895. var start_date = func_methods_default.getCellDate(arguments[0]);
  109896. if (valueIsError(start_date)) {
  109897. return start_date;
  109898. }
  109899. if (!(0, import_dayjs8.default)(start_date).isValid()) {
  109900. return formula_default.error.v;
  109901. }
  109902. var end_date = func_methods_default.getCellDate(arguments[1]);
  109903. if (valueIsError(end_date)) {
  109904. return end_date;
  109905. }
  109906. if (!(0, import_dayjs8.default)(end_date).isValid()) {
  109907. return formula_default.error.v;
  109908. }
  109909. var method2 = false;
  109910. if (arguments.length == 3) {
  109911. method2 = func_methods_default.getCellBoolen(arguments[2]);
  109912. if (valueIsError(method2)) {
  109913. return method2;
  109914. }
  109915. }
  109916. var sm = (0, import_dayjs8.default)(start_date).month();
  109917. var em = (0, import_dayjs8.default)(end_date).month();
  109918. var sd, ed;
  109919. if (method2) {
  109920. sd = (0, import_dayjs8.default)(start_date).date() === 31 ? 30 : (0, import_dayjs8.default)(start_date).date();
  109921. ed = (0, import_dayjs8.default)(end_date).date() === 31 ? 30 : (0, import_dayjs8.default)(end_date).date();
  109922. } else {
  109923. var smd = (0, import_dayjs8.default)().set({"year": (0, import_dayjs8.default)(start_date).year(), "month": sm + 1, "date": 0}).date();
  109924. var emd = (0, import_dayjs8.default)().set({"year": (0, import_dayjs8.default)(end_date).year(), "month": em + 1, "date": 0}).date();
  109925. sd = (0, import_dayjs8.default)(start_date).date() === smd ? 30 : (0, import_dayjs8.default)(start_date).date();
  109926. if ((0, import_dayjs8.default)(end_date).date() === emd) {
  109927. if (sd < 30) {
  109928. em++;
  109929. ed = 1;
  109930. } else {
  109931. ed = 30;
  109932. }
  109933. } else {
  109934. ed = (0, import_dayjs8.default)(end_date).date();
  109935. }
  109936. }
  109937. var result = 360 * (0, import_dayjs8.default)(end_date).diff((0, import_dayjs8.default)(start_date), "years") + 30 * (em - sm) + (ed - sd);
  109938. return result;
  109939. } catch (e) {
  109940. var err = e;
  109941. err = formula_default.errorInfo(err);
  109942. return [formula_default.error.v, err];
  109943. }
  109944. },
  109945. "DATE": function() {
  109946. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  109947. return formula_default.error.na;
  109948. }
  109949. for (var i2 = 0; i2 < arguments.length; i2++) {
  109950. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  109951. if (!p[0]) {
  109952. return formula_default.error.v;
  109953. }
  109954. }
  109955. try {
  109956. var year = func_methods_default.getFirstValue(arguments[0]);
  109957. if (valueIsError(year)) {
  109958. return year;
  109959. }
  109960. if (!isRealNum(year)) {
  109961. return formula_default.error.v;
  109962. }
  109963. year = parseInt(year);
  109964. var month = func_methods_default.getFirstValue(arguments[1]);
  109965. if (valueIsError(month)) {
  109966. return month;
  109967. }
  109968. if (!isRealNum(month)) {
  109969. return formula_default.error.v;
  109970. }
  109971. month = parseInt(month);
  109972. var day = func_methods_default.getFirstValue(arguments[2]);
  109973. if (valueIsError(day)) {
  109974. return day;
  109975. }
  109976. if (!isRealNum(day)) {
  109977. return formula_default.error.v;
  109978. }
  109979. day = parseInt(day);
  109980. if (year < 0 || year >= 1e4) {
  109981. return formula_default.error.nm;
  109982. } else if (year >= 0 && year <= 1899) {
  109983. year = year + 1900;
  109984. }
  109985. var date = (0, import_dayjs8.default)().set({"year": year, "month": month - 1, "date": day});
  109986. if ((0, import_dayjs8.default)(date).year() < 1900) {
  109987. return formula_default.error.nm;
  109988. }
  109989. return (0, import_dayjs8.default)(date).format("YYYY-MM-DD");
  109990. } catch (e) {
  109991. var err = e;
  109992. err = formula_default.errorInfo(err);
  109993. return [formula_default.error.v, err];
  109994. }
  109995. },
  109996. "DATEVALUE": function() {
  109997. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  109998. return formula_default.error.na;
  109999. }
  110000. for (var i2 = 0; i2 < arguments.length; i2++) {
  110001. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  110002. if (!p[0]) {
  110003. return formula_default.error.v;
  110004. }
  110005. }
  110006. try {
  110007. var date_text = func_methods_default.getCellDate(arguments[0]);
  110008. if (valueIsError(date_text)) {
  110009. return date_text;
  110010. }
  110011. if (!(0, import_dayjs8.default)(date_text).isValid()) {
  110012. return formula_default.error.v;
  110013. }
  110014. date_text = (0, import_dayjs8.default)(date_text).format("YYYY-MM-DD");
  110015. var result = genarate(date_text)[2];
  110016. return result;
  110017. } catch (e) {
  110018. var err = e;
  110019. err = formula_default.errorInfo(err);
  110020. return [formula_default.error.v, err];
  110021. }
  110022. },
  110023. "DATEDIF": function() {
  110024. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  110025. return formula_default.error.na;
  110026. }
  110027. for (var i2 = 0; i2 < arguments.length; i2++) {
  110028. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  110029. if (!p[0]) {
  110030. return formula_default.error.v;
  110031. }
  110032. }
  110033. try {
  110034. for (var i2 = 0; i2 < arguments.length - 1; i2++) {
  110035. arguments[i2] = func_methods_default.getCellDate(arguments[i2]);
  110036. if (!isdatetime(arguments[i2])) {
  110037. return formula_default.error.v;
  110038. }
  110039. }
  110040. var startDate = (0, import_dayjs8.default)(arguments[0]);
  110041. var endDate = (0, import_dayjs8.default)(arguments[1]);
  110042. var unit = arguments[2];
  110043. var result = formula_default.error.v;
  110044. if (window.luckysheet_function.DAYS.f(endDate, startDate) < 0) {
  110045. return formula_default.error.v;
  110046. }
  110047. switch (unit) {
  110048. case "Y":
  110049. case "y":
  110050. result = endDate.diff(startDate, "years", false);
  110051. break;
  110052. case "M":
  110053. case "m":
  110054. result = endDate.diff(startDate, "months", false);
  110055. break;
  110056. case "D":
  110057. case "d":
  110058. result = endDate.diff(startDate, "days", false);
  110059. break;
  110060. case "MD":
  110061. case "md":
  110062. result = endDate.format("DD") - startDate.format("DD");
  110063. break;
  110064. case "YM":
  110065. case "ym":
  110066. var startM = parseInt(startDate.format("M"));
  110067. var endM = parseInt(endDate.format("M"));
  110068. result = startM <= endM ? endM - startM : endM + 12 - startM;
  110069. break;
  110070. case "YD":
  110071. case "yd":
  110072. const format = `${endDate.$y}-MM-DD`;
  110073. var startM = genarate(startDate.format(format))[2];
  110074. var endM = genarate(endDate.format(format))[2];
  110075. result = startM <= endM ? endM - startM : endM + 365 - startM;
  110076. break;
  110077. default:
  110078. result = formula_default.error.v;
  110079. }
  110080. return result;
  110081. } catch (e) {
  110082. var err = e;
  110083. err = formula_default.errorInfo(err);
  110084. return [formula_default.error.v, err];
  110085. }
  110086. },
  110087. "WORKDAY": function() {
  110088. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  110089. return formula_default.error.na;
  110090. }
  110091. for (var i2 = 0; i2 < arguments.length; i2++) {
  110092. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  110093. if (!p[0]) {
  110094. return formula_default.error.v;
  110095. }
  110096. }
  110097. try {
  110098. if (arguments.length == 3) {
  110099. var result = window.luckysheet_function.WORKDAY_INTL.f(arguments[0], arguments[1], 1, arguments[2]);
  110100. } else {
  110101. var result = window.luckysheet_function.WORKDAY_INTL.f(arguments[0], arguments[1], 1);
  110102. }
  110103. return result;
  110104. } catch (e) {
  110105. var err = e;
  110106. err = formula_default.errorInfo(err);
  110107. return [formula_default.error.v, err];
  110108. }
  110109. },
  110110. "WORKDAY_INTL": function() {
  110111. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  110112. return formula_default.error.na;
  110113. }
  110114. for (var i2 = 0; i2 < arguments.length; i2++) {
  110115. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  110116. if (!p[0]) {
  110117. return formula_default.error.v;
  110118. }
  110119. }
  110120. try {
  110121. var WEEKEND_TYPES = [
  110122. [],
  110123. [6, 0],
  110124. [0, 1],
  110125. [1, 2],
  110126. [2, 3],
  110127. [3, 4],
  110128. [4, 5],
  110129. [5, 6],
  110130. void 0,
  110131. void 0,
  110132. void 0,
  110133. [0, 0],
  110134. [1, 1],
  110135. [2, 2],
  110136. [3, 3],
  110137. [4, 4],
  110138. [5, 5],
  110139. [6, 6]
  110140. ];
  110141. var start_date = func_methods_default.getCellDate(arguments[0]);
  110142. if (valueIsError(start_date)) {
  110143. return start_date;
  110144. }
  110145. if (!(0, import_dayjs8.default)(start_date).isValid()) {
  110146. return formula_default.error.v;
  110147. }
  110148. var days = func_methods_default.getFirstValue(arguments[1]);
  110149. if (valueIsError(days)) {
  110150. return days;
  110151. }
  110152. if (!isRealNum(days)) {
  110153. return formula_default.error.v;
  110154. }
  110155. days = parseInt(days);
  110156. var weekend = WEEKEND_TYPES[1];
  110157. if (arguments.length >= 3) {
  110158. weekend = arguments[2];
  110159. if (typeof weekend == "string" && weekend.length == "7" && /^[0-1]{7}$/g.test(weekend)) {
  110160. } else {
  110161. weekend = func_methods_default.getFirstValue(arguments[2]);
  110162. if (valueIsError(weekend)) {
  110163. return weekend;
  110164. }
  110165. if (!isRealNum(weekend)) {
  110166. return formula_default.error.v;
  110167. }
  110168. weekend = parseInt(weekend);
  110169. if (weekend < 1 || weekend > 7 && weekend < 11 || weekend > 17) {
  110170. return formula_default.error.nm;
  110171. }
  110172. weekend = WEEKEND_TYPES[weekend];
  110173. }
  110174. }
  110175. var holidays = [];
  110176. if (arguments.length == 4) {
  110177. holidays = func_methods_default.getCellrangeDate(arguments[3]);
  110178. if (valueIsError(holidays)) {
  110179. return holidays;
  110180. }
  110181. }
  110182. for (var i2 = 0; i2 < holidays.length; i2++) {
  110183. if (!(0, import_dayjs8.default)(holidays[i2]).isValid()) {
  110184. return formula_default.error.v;
  110185. }
  110186. }
  110187. var d = 0;
  110188. while (d < days) {
  110189. start_date = (0, import_dayjs8.default)(start_date).add(1, "days");
  110190. var day = (0, import_dayjs8.default)(start_date).weekday();
  110191. if (getObjType(weekend)) {
  110192. if (day === weekend[0] || day === weekend[1]) {
  110193. continue;
  110194. }
  110195. } else {
  110196. if (day == 0) {
  110197. day = 7;
  110198. }
  110199. if (weekend.charAt(day - 1) == "0") {
  110200. continue;
  110201. }
  110202. }
  110203. for (var j = 0; j < holidays.length; j++) {
  110204. if ((0, import_dayjs8.default)(start_date).diff((0, import_dayjs8.default)(holidays[j]), "days") === 0) {
  110205. d--;
  110206. break;
  110207. }
  110208. }
  110209. d++;
  110210. }
  110211. return (0, import_dayjs8.default)(start_date).format("YYYY-MM-DD");
  110212. } catch (e) {
  110213. var err = e;
  110214. err = formula_default.errorInfo(err);
  110215. return [formula_default.error.v, err];
  110216. }
  110217. },
  110218. "YEAR": function() {
  110219. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  110220. return formula_default.error.na;
  110221. }
  110222. for (var i2 = 0; i2 < arguments.length; i2++) {
  110223. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  110224. if (!p[0]) {
  110225. return formula_default.error.v;
  110226. }
  110227. }
  110228. try {
  110229. var serial_number = func_methods_default.getCellDate(arguments[0]);
  110230. if (valueIsError(serial_number)) {
  110231. return serial_number;
  110232. }
  110233. if (!(0, import_dayjs8.default)(serial_number).isValid()) {
  110234. return formula_default.error.v;
  110235. }
  110236. return (0, import_dayjs8.default)(serial_number).year();
  110237. } catch (e) {
  110238. var err = e;
  110239. err = formula_default.errorInfo(err);
  110240. return [formula_default.error.v, err];
  110241. }
  110242. },
  110243. "YEARFRAC": function() {
  110244. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  110245. return formula_default.error.na;
  110246. }
  110247. for (var i2 = 0; i2 < arguments.length; i2++) {
  110248. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  110249. if (!p[0]) {
  110250. return formula_default.error.v;
  110251. }
  110252. }
  110253. try {
  110254. var start_date = func_methods_default.getCellDate(arguments[0]);
  110255. if (valueIsError(start_date)) {
  110256. return start_date;
  110257. }
  110258. if (!(0, import_dayjs8.default)(start_date).isValid()) {
  110259. return formula_default.error.v;
  110260. }
  110261. var end_date = func_methods_default.getCellDate(arguments[1]);
  110262. if (valueIsError(end_date)) {
  110263. return end_date;
  110264. }
  110265. if (!(0, import_dayjs8.default)(end_date).isValid()) {
  110266. return formula_default.error.v;
  110267. }
  110268. var basis = 0;
  110269. if (arguments.length == 3) {
  110270. basis = func_methods_default.getFirstValue(arguments[2]);
  110271. if (valueIsError(basis)) {
  110272. return basis;
  110273. }
  110274. if (!isRealNum(basis)) {
  110275. return formula_default.error.v;
  110276. }
  110277. basis = parseInt(basis);
  110278. }
  110279. if (basis < 0 || basis > 4) {
  110280. return formula_default.error.nm;
  110281. }
  110282. var sd = (0, import_dayjs8.default)(start_date).date();
  110283. var sm = (0, import_dayjs8.default)(start_date).month() + 1;
  110284. var sy = (0, import_dayjs8.default)(start_date).year();
  110285. var ed = (0, import_dayjs8.default)(end_date).date();
  110286. var em = (0, import_dayjs8.default)(end_date).month() + 1;
  110287. var ey = (0, import_dayjs8.default)(end_date).year();
  110288. var result;
  110289. switch (basis) {
  110290. case 0:
  110291. if (sd === 31 && ed === 31) {
  110292. sd = 30;
  110293. ed = 30;
  110294. } else if (sd === 31) {
  110295. sd = 30;
  110296. } else if (sd === 30 && ed === 31) {
  110297. ed = 30;
  110298. }
  110299. result = (ed + em * 30 + ey * 360 - (sd + sm * 30 + sy * 360)) / 360;
  110300. break;
  110301. case 1:
  110302. var ylength = 365;
  110303. if (sy === ey || sy + 1 === ey && (sm > em || sm === em && sd >= ed)) {
  110304. if (sy === ey && func_methods_default.isLeapYear(sy) || func_methods_default.feb29Between(start_date, end_date) || em === 1 && ed === 29) {
  110305. ylength = 366;
  110306. }
  110307. return (0, import_dayjs8.default)(end_date).diff((0, import_dayjs8.default)(start_date), "days") / ylength;
  110308. }
  110309. var years = ey - sy + 1;
  110310. var days = ((0, import_dayjs8.default)().set({"year": ey + 1, "month": 0, "date": 1}) - (0, import_dayjs8.default)().set({"year": sy, "month": 0, "date": 1})) / 1e3 / 60 / 60 / 24;
  110311. var average = days / years;
  110312. result = (0, import_dayjs8.default)(end_date).diff((0, import_dayjs8.default)(start_date), "days") / average;
  110313. break;
  110314. case 2:
  110315. result = (0, import_dayjs8.default)(end_date).diff((0, import_dayjs8.default)(start_date), "days") / 360;
  110316. break;
  110317. case 3:
  110318. result = (0, import_dayjs8.default)(end_date).diff((0, import_dayjs8.default)(start_date), "days") / 365;
  110319. break;
  110320. case 4:
  110321. result = (ed + em * 30 + ey * 360 - (sd + sm * 30 + sy * 360)) / 360;
  110322. break;
  110323. }
  110324. return result;
  110325. } catch (e) {
  110326. var err = e;
  110327. err = formula_default.errorInfo(err);
  110328. return [formula_default.error.v, err];
  110329. }
  110330. },
  110331. "TODAY": function() {
  110332. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  110333. return formula_default.error.na;
  110334. }
  110335. for (var i2 = 0; i2 < arguments.length; i2++) {
  110336. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  110337. if (!p[0]) {
  110338. return formula_default.error.v;
  110339. }
  110340. }
  110341. try {
  110342. return (0, import_dayjs8.default)().format("YYYY-MM-DD");
  110343. } catch (e) {
  110344. var err = e;
  110345. err = formula_default.errorInfo(err);
  110346. return [formula_default.error.v, err];
  110347. }
  110348. },
  110349. "MONTH": function() {
  110350. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  110351. return formula_default.error.na;
  110352. }
  110353. for (var i2 = 0; i2 < arguments.length; i2++) {
  110354. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  110355. if (!p[0]) {
  110356. return formula_default.error.v;
  110357. }
  110358. }
  110359. try {
  110360. var serial_number = func_methods_default.getCellDate(arguments[0]);
  110361. if (valueIsError(serial_number)) {
  110362. return serial_number;
  110363. }
  110364. if (!(0, import_dayjs8.default)(serial_number).isValid()) {
  110365. return formula_default.error.v;
  110366. }
  110367. return (0, import_dayjs8.default)(serial_number).month() + 1;
  110368. } catch (e) {
  110369. var err = e;
  110370. err = formula_default.errorInfo(err);
  110371. return [formula_default.error.v, err];
  110372. }
  110373. },
  110374. "EFFECT": function() {
  110375. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  110376. return formula_default.error.na;
  110377. }
  110378. for (var i2 = 0; i2 < arguments.length; i2++) {
  110379. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  110380. if (!p[0]) {
  110381. return formula_default.error.v;
  110382. }
  110383. }
  110384. try {
  110385. var nominal_rate = func_methods_default.getFirstValue(arguments[0]);
  110386. if (valueIsError(nominal_rate)) {
  110387. return nominal_rate;
  110388. }
  110389. if (!isRealNum(nominal_rate)) {
  110390. return formula_default.error.v;
  110391. }
  110392. nominal_rate = parseFloat(nominal_rate);
  110393. var npery = func_methods_default.getFirstValue(arguments[1]);
  110394. if (valueIsError(npery)) {
  110395. return npery;
  110396. }
  110397. if (!isRealNum(npery)) {
  110398. return formula_default.error.v;
  110399. }
  110400. npery = parseInt(npery);
  110401. if (nominal_rate <= 0 || npery < 1) {
  110402. return formula_default.error.nm;
  110403. }
  110404. return Math.pow(1 + nominal_rate / npery, npery) - 1;
  110405. } catch (e) {
  110406. var err = e;
  110407. err = formula_default.errorInfo(err);
  110408. return [formula_default.error.v, err];
  110409. }
  110410. },
  110411. "DOLLAR": function() {
  110412. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  110413. return formula_default.error.na;
  110414. }
  110415. for (var i2 = 0; i2 < arguments.length; i2++) {
  110416. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  110417. if (!p[0]) {
  110418. return formula_default.error.v;
  110419. }
  110420. }
  110421. try {
  110422. var number = func_methods_default.getFirstValue(arguments[0]);
  110423. if (valueIsError(number)) {
  110424. return number;
  110425. }
  110426. if (!isRealNum(number)) {
  110427. return formula_default.error.v;
  110428. }
  110429. number = parseFloat(number);
  110430. var decimals = 2;
  110431. if (arguments.length == 2) {
  110432. decimals = func_methods_default.getFirstValue(arguments[1]);
  110433. if (valueIsError(decimals)) {
  110434. return decimals;
  110435. }
  110436. if (!isRealNum(decimals)) {
  110437. return formula_default.error.v;
  110438. }
  110439. decimals = parseInt(decimals);
  110440. }
  110441. if (decimals > 9) {
  110442. decimals = 9;
  110443. }
  110444. var foucsStatus = "0.";
  110445. for (var i2 = 1; i2 <= decimals; i2++) {
  110446. foucsStatus += "0";
  110447. }
  110448. var sign = number > 0 ? 1 : -1;
  110449. return sign * Math.floor(Math.abs(number) * Math.pow(10, decimals)) / Math.pow(10, decimals);
  110450. } catch (e) {
  110451. var err = e;
  110452. err = formula_default.errorInfo(err);
  110453. return [formula_default.error.v, err];
  110454. }
  110455. },
  110456. "DOLLARDE": function() {
  110457. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  110458. return formula_default.error.na;
  110459. }
  110460. for (var i2 = 0; i2 < arguments.length; i2++) {
  110461. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  110462. if (!p[0]) {
  110463. return formula_default.error.v;
  110464. }
  110465. }
  110466. try {
  110467. var fractional_dollar = func_methods_default.getFirstValue(arguments[0]);
  110468. if (valueIsError(fractional_dollar)) {
  110469. return fractional_dollar;
  110470. }
  110471. if (!isRealNum(fractional_dollar)) {
  110472. return formula_default.error.v;
  110473. }
  110474. fractional_dollar = parseFloat(fractional_dollar);
  110475. var fraction = func_methods_default.getFirstValue(arguments[1]);
  110476. if (valueIsError(fraction)) {
  110477. return fraction;
  110478. }
  110479. if (!isRealNum(fraction)) {
  110480. return formula_default.error.v;
  110481. }
  110482. fraction = parseInt(fraction);
  110483. if (fraction < 0) {
  110484. return formula_default.error.nm;
  110485. } else if (fraction == 0) {
  110486. return formula_default.error.d;
  110487. }
  110488. var result = parseInt(fractional_dollar, 10);
  110489. result += fractional_dollar % 1 * Math.pow(10, Math.ceil(Math.log(fraction) / Math.LN10)) / fraction;
  110490. var power = Math.pow(10, Math.ceil(Math.log(fraction) / Math.LN2) + 1);
  110491. result = Math.round(result * power) / power;
  110492. return result;
  110493. } catch (e) {
  110494. var err = e;
  110495. err = formula_default.errorInfo(err);
  110496. return [formula_default.error.v, err];
  110497. }
  110498. },
  110499. "DOLLARFR": function() {
  110500. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  110501. return formula_default.error.na;
  110502. }
  110503. for (var i2 = 0; i2 < arguments.length; i2++) {
  110504. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  110505. if (!p[0]) {
  110506. return formula_default.error.v;
  110507. }
  110508. }
  110509. try {
  110510. var decimal_dollar = func_methods_default.getFirstValue(arguments[0]);
  110511. if (valueIsError(decimal_dollar)) {
  110512. return decimal_dollar;
  110513. }
  110514. if (!isRealNum(decimal_dollar)) {
  110515. return formula_default.error.v;
  110516. }
  110517. decimal_dollar = parseFloat(decimal_dollar);
  110518. var fraction = func_methods_default.getFirstValue(arguments[1]);
  110519. if (valueIsError(fraction)) {
  110520. return fraction;
  110521. }
  110522. if (!isRealNum(fraction)) {
  110523. return formula_default.error.v;
  110524. }
  110525. fraction = parseInt(fraction);
  110526. if (fraction < 0) {
  110527. return formula_default.error.nm;
  110528. } else if (fraction == 0) {
  110529. return formula_default.error.d;
  110530. }
  110531. var result = parseInt(decimal_dollar, 10);
  110532. result += decimal_dollar % 1 * Math.pow(10, -Math.ceil(Math.log(fraction) / Math.LN10)) * fraction;
  110533. return result;
  110534. } catch (e) {
  110535. var err = e;
  110536. err = formula_default.errorInfo(err);
  110537. return [formula_default.error.v, err];
  110538. }
  110539. },
  110540. "DB": function() {
  110541. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  110542. return formula_default.error.na;
  110543. }
  110544. for (var i2 = 0; i2 < arguments.length; i2++) {
  110545. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  110546. if (!p[0]) {
  110547. return formula_default.error.v;
  110548. }
  110549. }
  110550. try {
  110551. var cost = func_methods_default.getFirstValue(arguments[0]);
  110552. if (valueIsError(cost)) {
  110553. return cost;
  110554. }
  110555. if (!isRealNum(cost)) {
  110556. return formula_default.error.v;
  110557. }
  110558. cost = parseFloat(cost);
  110559. var salvage = func_methods_default.getFirstValue(arguments[1]);
  110560. if (valueIsError(salvage)) {
  110561. return salvage;
  110562. }
  110563. if (!isRealNum(salvage)) {
  110564. return formula_default.error.v;
  110565. }
  110566. salvage = parseFloat(salvage);
  110567. var life = func_methods_default.getFirstValue(arguments[2]);
  110568. if (valueIsError(life)) {
  110569. return life;
  110570. }
  110571. if (!isRealNum(life)) {
  110572. return formula_default.error.v;
  110573. }
  110574. life = parseFloat(life);
  110575. var period = func_methods_default.getFirstValue(arguments[3]);
  110576. if (valueIsError(period)) {
  110577. return period;
  110578. }
  110579. if (!isRealNum(period)) {
  110580. return formula_default.error.v;
  110581. }
  110582. period = parseInt(period);
  110583. var month = 12;
  110584. if (arguments.length == 5) {
  110585. month = func_methods_default.getFirstValue(arguments[4]);
  110586. if (valueIsError(month)) {
  110587. return month;
  110588. }
  110589. if (!isRealNum(month)) {
  110590. return formula_default.error.v;
  110591. }
  110592. month = parseInt(month);
  110593. }
  110594. if (cost < 0 || salvage < 0 || life < 0 || period < 0) {
  110595. return formula_default.error.nm;
  110596. }
  110597. if (month < 1 || month > 12) {
  110598. return formula_default.error.nm;
  110599. }
  110600. if (period > life) {
  110601. return formula_default.error.nm;
  110602. }
  110603. if (salvage >= cost) {
  110604. return 0;
  110605. }
  110606. var rate = (1 - Math.pow(salvage / cost, 1 / life)).toFixed(3);
  110607. var initial = cost * rate * month / 12;
  110608. var total = initial;
  110609. var current = 0;
  110610. var ceiling = period === life ? life - 1 : period;
  110611. for (var i2 = 2; i2 <= ceiling; i2++) {
  110612. current = (cost - total) * rate;
  110613. total += current;
  110614. }
  110615. if (period === 1) {
  110616. var result = initial;
  110617. } else if (period === life) {
  110618. var result = (cost - total) * rate;
  110619. } else {
  110620. var result = current;
  110621. }
  110622. return result;
  110623. } catch (e) {
  110624. var err = e;
  110625. err = formula_default.errorInfo(err);
  110626. return [formula_default.error.v, err];
  110627. }
  110628. },
  110629. "DDB": function() {
  110630. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  110631. return formula_default.error.na;
  110632. }
  110633. for (var i2 = 0; i2 < arguments.length; i2++) {
  110634. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  110635. if (!p[0]) {
  110636. return formula_default.error.v;
  110637. }
  110638. }
  110639. try {
  110640. var cost = func_methods_default.getFirstValue(arguments[0]);
  110641. if (valueIsError(cost)) {
  110642. return cost;
  110643. }
  110644. if (!isRealNum(cost)) {
  110645. return formula_default.error.v;
  110646. }
  110647. cost = parseFloat(cost);
  110648. var salvage = func_methods_default.getFirstValue(arguments[1]);
  110649. if (valueIsError(salvage)) {
  110650. return salvage;
  110651. }
  110652. if (!isRealNum(salvage)) {
  110653. return formula_default.error.v;
  110654. }
  110655. salvage = parseFloat(salvage);
  110656. var life = func_methods_default.getFirstValue(arguments[2]);
  110657. if (valueIsError(life)) {
  110658. return life;
  110659. }
  110660. if (!isRealNum(life)) {
  110661. return formula_default.error.v;
  110662. }
  110663. life = parseFloat(life);
  110664. var period = func_methods_default.getFirstValue(arguments[3]);
  110665. if (valueIsError(period)) {
  110666. return period;
  110667. }
  110668. if (!isRealNum(period)) {
  110669. return formula_default.error.v;
  110670. }
  110671. period = parseInt(period);
  110672. var factor = 2;
  110673. if (arguments.length == 5) {
  110674. factor = func_methods_default.getFirstValue(arguments[4]);
  110675. if (valueIsError(factor)) {
  110676. return factor;
  110677. }
  110678. if (!isRealNum(factor)) {
  110679. return formula_default.error.v;
  110680. }
  110681. factor = parseFloat(factor);
  110682. }
  110683. if (cost < 0 || salvage < 0 || life < 0 || period < 0 || factor <= 0) {
  110684. return formula_default.error.nm;
  110685. }
  110686. if (period > life) {
  110687. return formula_default.error.nm;
  110688. }
  110689. if (salvage >= cost) {
  110690. return 0;
  110691. }
  110692. var total = 0;
  110693. var current = 0;
  110694. for (var i2 = 1; i2 <= period; i2++) {
  110695. current = Math.min((cost - total) * (factor / life), cost - salvage - total);
  110696. total += current;
  110697. }
  110698. return current;
  110699. } catch (e) {
  110700. var err = e;
  110701. err = formula_default.errorInfo(err);
  110702. return [formula_default.error.v, err];
  110703. }
  110704. },
  110705. "RATE": function() {
  110706. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  110707. return formula_default.error.na;
  110708. }
  110709. for (var i2 = 0; i2 < arguments.length; i2++) {
  110710. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  110711. if (!p[0]) {
  110712. return formula_default.error.v;
  110713. }
  110714. }
  110715. try {
  110716. var nper = func_methods_default.getFirstValue(arguments[0]);
  110717. if (valueIsError(nper)) {
  110718. return nper;
  110719. }
  110720. if (!isRealNum(nper)) {
  110721. return formula_default.error.v;
  110722. }
  110723. nper = parseFloat(nper);
  110724. var pmt = func_methods_default.getFirstValue(arguments[1]);
  110725. if (valueIsError(pmt)) {
  110726. return pmt;
  110727. }
  110728. if (!isRealNum(pmt)) {
  110729. return formula_default.error.v;
  110730. }
  110731. pmt = parseFloat(pmt);
  110732. var pv = func_methods_default.getFirstValue(arguments[2]);
  110733. if (valueIsError(pv)) {
  110734. return pv;
  110735. }
  110736. if (!isRealNum(pv)) {
  110737. return formula_default.error.v;
  110738. }
  110739. pv = parseFloat(pv);
  110740. var fv = 0;
  110741. if (arguments.length >= 4) {
  110742. fv = func_methods_default.getFirstValue(arguments[3]);
  110743. if (valueIsError(fv)) {
  110744. return fv;
  110745. }
  110746. if (!isRealNum(fv)) {
  110747. return formula_default.error.v;
  110748. }
  110749. fv = parseFloat(fv);
  110750. }
  110751. var type = 0;
  110752. if (arguments.length >= 5) {
  110753. type = func_methods_default.getFirstValue(arguments[4]);
  110754. if (valueIsError(type)) {
  110755. return type;
  110756. }
  110757. if (!isRealNum(type)) {
  110758. return formula_default.error.v;
  110759. }
  110760. type = parseFloat(type);
  110761. }
  110762. var guess = 0.1;
  110763. if (arguments.length == 6) {
  110764. guess = func_methods_default.getFirstValue(arguments[5]);
  110765. if (valueIsError(guess)) {
  110766. return guess;
  110767. }
  110768. if (!isRealNum(guess)) {
  110769. return formula_default.error.v;
  110770. }
  110771. guess = parseFloat(guess);
  110772. }
  110773. if (type != 0 && type != 1) {
  110774. return formula_default.error.nm;
  110775. }
  110776. var epsMax = 1e-6;
  110777. var iterMax = 100;
  110778. var iter = 0;
  110779. var close = false;
  110780. var rate = guess;
  110781. while (iter < iterMax && !close) {
  110782. var t1 = Math.pow(rate + 1, nper);
  110783. var t2 = Math.pow(rate + 1, nper - 1);
  110784. var f1 = fv + t1 * pv + pmt * (t1 - 1) * (rate * type + 1) / rate;
  110785. var f2 = nper * t2 * pv - pmt * (t1 - 1) * (rate * type + 1) / Math.pow(rate, 2);
  110786. var f3 = nper * pmt * t2 * (rate * type + 1) / rate + pmt * (t1 - 1) * type / rate;
  110787. var newRate = rate - f1 / (f2 + f3);
  110788. if (Math.abs(newRate - rate) < epsMax)
  110789. close = true;
  110790. iter++;
  110791. rate = newRate;
  110792. }
  110793. if (!close)
  110794. return formula_default.error.nm;
  110795. return rate;
  110796. } catch (e) {
  110797. var err = e;
  110798. err = formula_default.errorInfo(err);
  110799. return [formula_default.error.v, err];
  110800. }
  110801. },
  110802. "CUMPRINC": function() {
  110803. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  110804. return formula_default.error.na;
  110805. }
  110806. for (var i2 = 0; i2 < arguments.length; i2++) {
  110807. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  110808. if (!p[0]) {
  110809. return formula_default.error.v;
  110810. }
  110811. }
  110812. try {
  110813. var rate = func_methods_default.getFirstValue(arguments[0]);
  110814. if (valueIsError(rate)) {
  110815. return rate;
  110816. }
  110817. if (!isRealNum(rate)) {
  110818. return formula_default.error.v;
  110819. }
  110820. rate = parseFloat(rate);
  110821. var nper = func_methods_default.getFirstValue(arguments[1]);
  110822. if (valueIsError(nper)) {
  110823. return nper;
  110824. }
  110825. if (!isRealNum(nper)) {
  110826. return formula_default.error.v;
  110827. }
  110828. nper = parseFloat(nper);
  110829. var pv = func_methods_default.getFirstValue(arguments[2]);
  110830. if (valueIsError(pv)) {
  110831. return pv;
  110832. }
  110833. if (!isRealNum(pv)) {
  110834. return formula_default.error.v;
  110835. }
  110836. pv = parseFloat(pv);
  110837. var start_period = func_methods_default.getFirstValue(arguments[3]);
  110838. if (valueIsError(start_period)) {
  110839. return start_period;
  110840. }
  110841. if (!isRealNum(start_period)) {
  110842. return formula_default.error.v;
  110843. }
  110844. start_period = parseInt(start_period);
  110845. var end_period = func_methods_default.getFirstValue(arguments[4]);
  110846. if (valueIsError(end_period)) {
  110847. return end_period;
  110848. }
  110849. if (!isRealNum(end_period)) {
  110850. return formula_default.error.v;
  110851. }
  110852. end_period = parseInt(end_period);
  110853. var type = func_methods_default.getFirstValue(arguments[5]);
  110854. if (valueIsError(type)) {
  110855. return type;
  110856. }
  110857. if (!isRealNum(type)) {
  110858. return formula_default.error.v;
  110859. }
  110860. type = parseFloat(type);
  110861. if (rate <= 0 || nper <= 0 || pv <= 0) {
  110862. return formula_default.error.nm;
  110863. }
  110864. if (start_period < 1 || end_period < 1 || start_period > end_period) {
  110865. return formula_default.error.nm;
  110866. }
  110867. if (type != 0 && type != 1) {
  110868. return formula_default.error.nm;
  110869. }
  110870. var payment = window.luckysheet_function.PMT.f(rate, nper, pv, 0, type);
  110871. var principal = 0;
  110872. if (start_period === 1) {
  110873. if (type === 0) {
  110874. principal = payment + pv * rate;
  110875. } else {
  110876. principal = payment;
  110877. }
  110878. start_period++;
  110879. }
  110880. for (var i2 = start_period; i2 <= end_period; i2++) {
  110881. if (type > 0) {
  110882. principal += payment - (window.luckysheet_function.FV.f(rate, i2 - 2, payment, pv, 1) - payment) * rate;
  110883. } else {
  110884. principal += payment - window.luckysheet_function.FV.f(rate, i2 - 1, payment, pv, 0) * rate;
  110885. }
  110886. }
  110887. return principal;
  110888. } catch (e) {
  110889. var err = e;
  110890. err = formula_default.errorInfo(err);
  110891. return [formula_default.error.v, err];
  110892. }
  110893. },
  110894. "COUPNUM": function() {
  110895. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  110896. return formula_default.error.na;
  110897. }
  110898. for (var i2 = 0; i2 < arguments.length; i2++) {
  110899. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  110900. if (!p[0]) {
  110901. return formula_default.error.v;
  110902. }
  110903. }
  110904. try {
  110905. var settlement = func_methods_default.getCellDate(arguments[0]);
  110906. if (valueIsError(settlement)) {
  110907. return settlement;
  110908. }
  110909. if (!(0, import_dayjs8.default)(settlement).isValid()) {
  110910. return formula_default.error.v;
  110911. }
  110912. var maturity = func_methods_default.getCellDate(arguments[1]);
  110913. if (valueIsError(maturity)) {
  110914. return maturity;
  110915. }
  110916. if (!(0, import_dayjs8.default)(maturity).isValid()) {
  110917. return formula_default.error.v;
  110918. }
  110919. var frequency = func_methods_default.getFirstValue(arguments[2]);
  110920. if (valueIsError(frequency)) {
  110921. return frequency;
  110922. }
  110923. if (!isRealNum(frequency)) {
  110924. return formula_default.error.v;
  110925. }
  110926. frequency = parseInt(frequency);
  110927. var basis = 0;
  110928. if (arguments.length == 4) {
  110929. var basis = func_methods_default.getFirstValue(arguments[3]);
  110930. if (valueIsError(basis)) {
  110931. return basis;
  110932. }
  110933. if (!isRealNum(basis)) {
  110934. return formula_default.error.v;
  110935. }
  110936. basis = parseInt(basis);
  110937. }
  110938. if (frequency != 1 && frequency != 2 && frequency != 4) {
  110939. return formula_default.error.nm;
  110940. }
  110941. if (basis < 0 || basis > 4) {
  110942. return formula_default.error.nm;
  110943. }
  110944. if ((0, import_dayjs8.default)(settlement) - (0, import_dayjs8.default)(maturity) >= 0) {
  110945. return formula_default.error.nm;
  110946. }
  110947. var sd = (0, import_dayjs8.default)(settlement).date();
  110948. var sm = (0, import_dayjs8.default)(settlement).month() + 1;
  110949. var sy = (0, import_dayjs8.default)(settlement).year();
  110950. var ed = (0, import_dayjs8.default)(maturity).date();
  110951. var em = (0, import_dayjs8.default)(maturity).month() + 1;
  110952. var ey = (0, import_dayjs8.default)(maturity).year();
  110953. var result;
  110954. switch (basis) {
  110955. case 0:
  110956. if (sd === 31 && ed === 31) {
  110957. sd = 30;
  110958. ed = 30;
  110959. } else if (sd === 31) {
  110960. sd = 30;
  110961. } else if (sd === 30 && ed === 31) {
  110962. ed = 30;
  110963. }
  110964. result = (ed + em * 30 + ey * 360 - (sd + sm * 30 + sy * 360)) / (360 / frequency);
  110965. break;
  110966. case 1:
  110967. var ylength = 365;
  110968. if (sy === ey || sy + 1 === ey && (sm > em || sm === em && sd >= ed)) {
  110969. if (sy === ey && func_methods_default.isLeapYear(sy) || func_methods_default.feb29Between(settlement, maturity) || em === 1 && ed === 29) {
  110970. ylength = 366;
  110971. }
  110972. return (0, import_dayjs8.default)(maturity).diff((0, import_dayjs8.default)(settlement), "days") / (ylength / frequency);
  110973. }
  110974. var years = ey - sy + 1;
  110975. var days = ((0, import_dayjs8.default)().set({"year": ey + 1, "month": 0, "date": 1}) - (0, import_dayjs8.default)().set({"year": sy, "month": 0, "date": 1})) / 1e3 / 60 / 60 / 24;
  110976. var average = days / years;
  110977. result = (0, import_dayjs8.default)(maturity).diff((0, import_dayjs8.default)(settlement), "days") / (average / frequency);
  110978. break;
  110979. case 2:
  110980. result = (0, import_dayjs8.default)(maturity).diff((0, import_dayjs8.default)(settlement), "days") / (360 / frequency);
  110981. break;
  110982. case 3:
  110983. result = (0, import_dayjs8.default)(maturity).diff((0, import_dayjs8.default)(settlement), "days") / (365 / frequency);
  110984. break;
  110985. case 4:
  110986. result = (ed + em * 30 + ey * 360 - (sd + sm * 30 + sy * 360)) / (360 / frequency);
  110987. break;
  110988. }
  110989. return Math.round(result);
  110990. } catch (e) {
  110991. var err = e;
  110992. err = formula_default.errorInfo(err);
  110993. return [formula_default.error.v, err];
  110994. }
  110995. },
  110996. "SYD": function() {
  110997. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  110998. return formula_default.error.na;
  110999. }
  111000. for (var i2 = 0; i2 < arguments.length; i2++) {
  111001. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  111002. if (!p[0]) {
  111003. return formula_default.error.v;
  111004. }
  111005. }
  111006. try {
  111007. var cost = func_methods_default.getFirstValue(arguments[0]);
  111008. if (valueIsError(cost)) {
  111009. return cost;
  111010. }
  111011. if (!isRealNum(cost)) {
  111012. return formula_default.error.v;
  111013. }
  111014. cost = parseFloat(cost);
  111015. var salvage = func_methods_default.getFirstValue(arguments[1]);
  111016. if (valueIsError(salvage)) {
  111017. return salvage;
  111018. }
  111019. if (!isRealNum(salvage)) {
  111020. return formula_default.error.v;
  111021. }
  111022. salvage = parseFloat(salvage);
  111023. var life = func_methods_default.getFirstValue(arguments[2]);
  111024. if (valueIsError(life)) {
  111025. return life;
  111026. }
  111027. if (!isRealNum(life)) {
  111028. return formula_default.error.v;
  111029. }
  111030. life = parseFloat(life);
  111031. var period = func_methods_default.getFirstValue(arguments[3]);
  111032. if (valueIsError(period)) {
  111033. return period;
  111034. }
  111035. if (!isRealNum(period)) {
  111036. return formula_default.error.v;
  111037. }
  111038. period = parseInt(period);
  111039. if (life == 0) {
  111040. return formula_default.error.nm;
  111041. }
  111042. if (period < 1 || period > life) {
  111043. return formula_default.error.nm;
  111044. }
  111045. return (cost - salvage) * (life - period + 1) * 2 / (life * (life + 1));
  111046. } catch (e) {
  111047. var err = e;
  111048. err = formula_default.errorInfo(err);
  111049. return [formula_default.error.v, err];
  111050. }
  111051. },
  111052. "TBILLEQ": function() {
  111053. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  111054. return formula_default.error.na;
  111055. }
  111056. for (var i2 = 0; i2 < arguments.length; i2++) {
  111057. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  111058. if (!p[0]) {
  111059. return formula_default.error.v;
  111060. }
  111061. }
  111062. try {
  111063. var settlement = func_methods_default.getCellDate(arguments[0]);
  111064. if (valueIsError(settlement)) {
  111065. return settlement;
  111066. }
  111067. if (!(0, import_dayjs8.default)(settlement).isValid()) {
  111068. return formula_default.error.v;
  111069. }
  111070. var maturity = func_methods_default.getCellDate(arguments[1]);
  111071. if (valueIsError(maturity)) {
  111072. return maturity;
  111073. }
  111074. if (!(0, import_dayjs8.default)(maturity).isValid()) {
  111075. return formula_default.error.v;
  111076. }
  111077. var discount = func_methods_default.getFirstValue(arguments[2]);
  111078. if (valueIsError(discount)) {
  111079. return discount;
  111080. }
  111081. if (!isRealNum(discount)) {
  111082. return formula_default.error.v;
  111083. }
  111084. discount = parseFloat(discount);
  111085. if (discount <= 0) {
  111086. return formula_default.error.nm;
  111087. }
  111088. if ((0, import_dayjs8.default)(settlement) - (0, import_dayjs8.default)(maturity) > 0) {
  111089. return formula_default.error.nm;
  111090. }
  111091. if ((0, import_dayjs8.default)(maturity) - (0, import_dayjs8.default)(settlement) > 365 * 24 * 60 * 60 * 1e3) {
  111092. return formula_default.error.nm;
  111093. }
  111094. return 365 * discount / (360 - discount * (0, import_dayjs8.default)(maturity).diff((0, import_dayjs8.default)(settlement), "days"));
  111095. } catch (e) {
  111096. var err = e;
  111097. err = formula_default.errorInfo(err);
  111098. return [formula_default.error.v, err];
  111099. }
  111100. },
  111101. "TBILLYIELD": function() {
  111102. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  111103. return formula_default.error.na;
  111104. }
  111105. for (var i2 = 0; i2 < arguments.length; i2++) {
  111106. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  111107. if (!p[0]) {
  111108. return formula_default.error.v;
  111109. }
  111110. }
  111111. try {
  111112. var settlement = func_methods_default.getCellDate(arguments[0]);
  111113. if (valueIsError(settlement)) {
  111114. return settlement;
  111115. }
  111116. if (!(0, import_dayjs8.default)(settlement).isValid()) {
  111117. return formula_default.error.v;
  111118. }
  111119. var maturity = func_methods_default.getCellDate(arguments[1]);
  111120. if (valueIsError(maturity)) {
  111121. return maturity;
  111122. }
  111123. if (!(0, import_dayjs8.default)(maturity).isValid()) {
  111124. return formula_default.error.v;
  111125. }
  111126. var pr = func_methods_default.getFirstValue(arguments[2]);
  111127. if (valueIsError(pr)) {
  111128. return pr;
  111129. }
  111130. if (!isRealNum(pr)) {
  111131. return formula_default.error.v;
  111132. }
  111133. pr = parseFloat(pr);
  111134. if (pr <= 0) {
  111135. return formula_default.error.nm;
  111136. }
  111137. if ((0, import_dayjs8.default)(settlement) - (0, import_dayjs8.default)(maturity) >= 0) {
  111138. return formula_default.error.nm;
  111139. }
  111140. if ((0, import_dayjs8.default)(maturity) - (0, import_dayjs8.default)(settlement) > 365 * 24 * 60 * 60 * 1e3) {
  111141. return formula_default.error.nm;
  111142. }
  111143. return (100 - pr) / pr * (360 / (0, import_dayjs8.default)(maturity).diff((0, import_dayjs8.default)(settlement), "days"));
  111144. } catch (e) {
  111145. var err = e;
  111146. err = formula_default.errorInfo(err);
  111147. return [formula_default.error.v, err];
  111148. }
  111149. },
  111150. "TBILLPRICE": function() {
  111151. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  111152. return formula_default.error.na;
  111153. }
  111154. for (var i2 = 0; i2 < arguments.length; i2++) {
  111155. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  111156. if (!p[0]) {
  111157. return formula_default.error.v;
  111158. }
  111159. }
  111160. try {
  111161. var settlement = func_methods_default.getCellDate(arguments[0]);
  111162. if (valueIsError(settlement)) {
  111163. return settlement;
  111164. }
  111165. if (!(0, import_dayjs8.default)(settlement).isValid()) {
  111166. return formula_default.error.v;
  111167. }
  111168. var maturity = func_methods_default.getCellDate(arguments[1]);
  111169. if (valueIsError(maturity)) {
  111170. return maturity;
  111171. }
  111172. if (!(0, import_dayjs8.default)(maturity).isValid()) {
  111173. return formula_default.error.v;
  111174. }
  111175. var discount = func_methods_default.getFirstValue(arguments[2]);
  111176. if (valueIsError(discount)) {
  111177. return discount;
  111178. }
  111179. if (!isRealNum(discount)) {
  111180. return formula_default.error.v;
  111181. }
  111182. discount = parseFloat(discount);
  111183. if (discount <= 0) {
  111184. return formula_default.error.nm;
  111185. }
  111186. if ((0, import_dayjs8.default)(settlement) - (0, import_dayjs8.default)(maturity) > 0) {
  111187. return formula_default.error.nm;
  111188. }
  111189. if ((0, import_dayjs8.default)(maturity) - (0, import_dayjs8.default)(settlement) > 365 * 24 * 60 * 60 * 1e3) {
  111190. return formula_default.error.nm;
  111191. }
  111192. return 100 * (1 - discount * (0, import_dayjs8.default)(maturity).diff((0, import_dayjs8.default)(settlement), "days") / 360);
  111193. } catch (e) {
  111194. var err = e;
  111195. err = formula_default.errorInfo(err);
  111196. return [formula_default.error.v, err];
  111197. }
  111198. },
  111199. "PV": function() {
  111200. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  111201. return formula_default.error.na;
  111202. }
  111203. for (var i2 = 0; i2 < arguments.length; i2++) {
  111204. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  111205. if (!p[0]) {
  111206. return formula_default.error.v;
  111207. }
  111208. }
  111209. try {
  111210. var rate = func_methods_default.getFirstValue(arguments[0]);
  111211. if (valueIsError(rate)) {
  111212. return rate;
  111213. }
  111214. if (!isRealNum(rate)) {
  111215. return formula_default.error.v;
  111216. }
  111217. rate = parseFloat(rate);
  111218. var nper = func_methods_default.getFirstValue(arguments[1]);
  111219. if (valueIsError(nper)) {
  111220. return nper;
  111221. }
  111222. if (!isRealNum(nper)) {
  111223. return formula_default.error.v;
  111224. }
  111225. nper = parseFloat(nper);
  111226. var pmt = func_methods_default.getFirstValue(arguments[2]);
  111227. if (valueIsError(pmt)) {
  111228. return pmt;
  111229. }
  111230. if (!isRealNum(pmt)) {
  111231. return formula_default.error.v;
  111232. }
  111233. pmt = parseFloat(pmt);
  111234. var fv = 0;
  111235. if (arguments.length >= 4) {
  111236. fv = func_methods_default.getFirstValue(arguments[3]);
  111237. if (valueIsError(fv)) {
  111238. return fv;
  111239. }
  111240. if (!isRealNum(fv)) {
  111241. return formula_default.error.v;
  111242. }
  111243. fv = parseFloat(fv);
  111244. }
  111245. var type = 0;
  111246. if (arguments.length >= 5) {
  111247. type = func_methods_default.getFirstValue(arguments[4]);
  111248. if (valueIsError(type)) {
  111249. return type;
  111250. }
  111251. if (!isRealNum(type)) {
  111252. return formula_default.error.v;
  111253. }
  111254. type = parseFloat(type);
  111255. }
  111256. if (type != 0 && type != 1) {
  111257. return formula_default.error.nm;
  111258. }
  111259. if (rate === 0) {
  111260. var result = -pmt * nper - fv;
  111261. } else {
  111262. var result = ((1 - Math.pow(1 + rate, nper)) / rate * pmt * (1 + rate * type) - fv) / Math.pow(1 + rate, nper);
  111263. }
  111264. return result;
  111265. } catch (e) {
  111266. var err = e;
  111267. err = formula_default.errorInfo(err);
  111268. return [formula_default.error.v, err];
  111269. }
  111270. },
  111271. "ACCRINT": function() {
  111272. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  111273. return formula_default.error.na;
  111274. }
  111275. for (var i2 = 0; i2 < arguments.length; i2++) {
  111276. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  111277. if (!p[0]) {
  111278. return formula_default.error.v;
  111279. }
  111280. }
  111281. try {
  111282. var issue = func_methods_default.getCellDate(arguments[0]);
  111283. if (valueIsError(issue)) {
  111284. return issue;
  111285. }
  111286. if (!(0, import_dayjs8.default)(issue).isValid()) {
  111287. return formula_default.error.v;
  111288. }
  111289. var first_interest = func_methods_default.getCellDate(arguments[1]);
  111290. if (valueIsError(first_interest)) {
  111291. return first_interest;
  111292. }
  111293. if (!(0, import_dayjs8.default)(first_interest).isValid()) {
  111294. return formula_default.error.v;
  111295. }
  111296. var settlement = func_methods_default.getCellDate(arguments[2]);
  111297. if (valueIsError(settlement)) {
  111298. return settlement;
  111299. }
  111300. if (!(0, import_dayjs8.default)(settlement).isValid()) {
  111301. return formula_default.error.v;
  111302. }
  111303. var rate = func_methods_default.getFirstValue(arguments[3]);
  111304. if (valueIsError(rate)) {
  111305. return rate;
  111306. }
  111307. if (!isRealNum(rate)) {
  111308. return formula_default.error.v;
  111309. }
  111310. rate = parseFloat(rate);
  111311. var par = func_methods_default.getFirstValue(arguments[4]);
  111312. if (valueIsError(par)) {
  111313. return par;
  111314. }
  111315. if (!isRealNum(par)) {
  111316. return formula_default.error.v;
  111317. }
  111318. par = parseFloat(par);
  111319. var frequency = func_methods_default.getFirstValue(arguments[5]);
  111320. if (valueIsError(frequency)) {
  111321. return frequency;
  111322. }
  111323. if (!isRealNum(frequency)) {
  111324. return formula_default.error.v;
  111325. }
  111326. frequency = parseInt(frequency);
  111327. var basis = 0;
  111328. if (arguments.length >= 7) {
  111329. basis = func_methods_default.getFirstValue(arguments[6]);
  111330. if (valueIsError(basis)) {
  111331. return basis;
  111332. }
  111333. if (!isRealNum(basis)) {
  111334. return formula_default.error.v;
  111335. }
  111336. basis = parseInt(basis);
  111337. }
  111338. var calc_method = true;
  111339. if (arguments.length == 8) {
  111340. calc_method = func_methods_default.getCellBoolen(arguments[7]);
  111341. if (valueIsError(calc_method)) {
  111342. return calc_method;
  111343. }
  111344. }
  111345. if (rate <= 0 || par <= 0) {
  111346. return formula_default.error.nm;
  111347. }
  111348. if (frequency != 1 && frequency != 2 && frequency != 4) {
  111349. return formula_default.error.nm;
  111350. }
  111351. if (basis < 0 || basis > 4) {
  111352. return formula_default.error.nm;
  111353. }
  111354. if ((0, import_dayjs8.default)(issue) - (0, import_dayjs8.default)(settlement) >= 0) {
  111355. return formula_default.error.nm;
  111356. }
  111357. var result;
  111358. if ((0, import_dayjs8.default)(settlement) - (0, import_dayjs8.default)(first_interest) >= 0 && !calc_method) {
  111359. var sd = (0, import_dayjs8.default)(first_interest).date();
  111360. var sm = (0, import_dayjs8.default)(first_interest).month() + 1;
  111361. var sy = (0, import_dayjs8.default)(first_interest).year();
  111362. var ed = (0, import_dayjs8.default)(settlement).date();
  111363. var em = (0, import_dayjs8.default)(settlement).month() + 1;
  111364. var ey = (0, import_dayjs8.default)(settlement).year();
  111365. switch (basis) {
  111366. case 0:
  111367. if (sd === 31 && ed === 31) {
  111368. sd = 30;
  111369. ed = 30;
  111370. } else if (sd === 31) {
  111371. sd = 30;
  111372. } else if (sd === 30 && ed === 31) {
  111373. ed = 30;
  111374. }
  111375. result = (ed + em * 30 + ey * 360 - (sd + sm * 30 + sy * 360)) / 360;
  111376. break;
  111377. case 1:
  111378. var ylength = 365;
  111379. if (sy === ey || sy + 1 === ey && (sm > em || sm === em && sd >= ed)) {
  111380. if (sy === ey && func_methods_default.isLeapYear(sy) || func_methods_default.feb29Between(first_interest, settlement) || em === 1 && ed === 29) {
  111381. ylength = 366;
  111382. }
  111383. return (0, import_dayjs8.default)(settlement).diff((0, import_dayjs8.default)(first_interest), "days") / ylength;
  111384. }
  111385. var years = ey - sy + 1;
  111386. var days = ((0, import_dayjs8.default)().set({"year": ey + 1, "month": 0, "date": 1}) - (0, import_dayjs8.default)().set({"year": sy, "month": 0, "date": 1})) / 1e3 / 60 / 60 / 24;
  111387. var average = days / years;
  111388. result = (0, import_dayjs8.default)(settlement).diff((0, import_dayjs8.default)(first_interest), "days") / average;
  111389. break;
  111390. case 2:
  111391. result = (0, import_dayjs8.default)(settlement).diff((0, import_dayjs8.default)(first_interest), "days") / 360;
  111392. break;
  111393. case 3:
  111394. result = (0, import_dayjs8.default)(settlement).diff((0, import_dayjs8.default)(first_interest), "days") / 365;
  111395. break;
  111396. case 4:
  111397. result = (ed + em * 30 + ey * 360 - (sd + sm * 30 + sy * 360)) / 360;
  111398. break;
  111399. }
  111400. } else {
  111401. var sd = (0, import_dayjs8.default)(issue).date();
  111402. var sm = (0, import_dayjs8.default)(issue).month() + 1;
  111403. var sy = (0, import_dayjs8.default)(issue).year();
  111404. var ed = (0, import_dayjs8.default)(settlement).date();
  111405. var em = (0, import_dayjs8.default)(settlement).month() + 1;
  111406. var ey = (0, import_dayjs8.default)(settlement).year();
  111407. switch (basis) {
  111408. case 0:
  111409. if (sd === 31 && ed === 31) {
  111410. sd = 30;
  111411. ed = 30;
  111412. } else if (sd === 31) {
  111413. sd = 30;
  111414. } else if (sd === 30 && ed === 31) {
  111415. ed = 30;
  111416. }
  111417. result = (ed + em * 30 + ey * 360 - (sd + sm * 30 + sy * 360)) / 360;
  111418. break;
  111419. case 1:
  111420. var ylength = 365;
  111421. if (sy === ey || sy + 1 === ey && (sm > em || sm === em && sd >= ed)) {
  111422. if (sy === ey && func_methods_default.isLeapYear(sy) || func_methods_default.feb29Between(issue, settlement) || em === 1 && ed === 29) {
  111423. ylength = 366;
  111424. }
  111425. return (0, import_dayjs8.default)(settlement).diff((0, import_dayjs8.default)(issue), "days") / ylength;
  111426. }
  111427. var years = ey - sy + 1;
  111428. var days = ((0, import_dayjs8.default)().set({"year": ey + 1, "month": 0, "date": 1}) - (0, import_dayjs8.default)().set({"year": sy, "month": 0, "date": 1})) / 1e3 / 60 / 60 / 24;
  111429. var average = days / years;
  111430. result = (0, import_dayjs8.default)(settlement).diff((0, import_dayjs8.default)(issue), "days") / average;
  111431. break;
  111432. case 2:
  111433. result = (0, import_dayjs8.default)(settlement).diff((0, import_dayjs8.default)(issue), "days") / 360;
  111434. break;
  111435. case 3:
  111436. result = (0, import_dayjs8.default)(settlement).diff((0, import_dayjs8.default)(issue), "days") / 365;
  111437. break;
  111438. case 4:
  111439. result = (ed + em * 30 + ey * 360 - (sd + sm * 30 + sy * 360)) / 360;
  111440. break;
  111441. }
  111442. }
  111443. return par * rate * result;
  111444. } catch (e) {
  111445. var err = e;
  111446. err = formula_default.errorInfo(err);
  111447. return [formula_default.error.v, err];
  111448. }
  111449. },
  111450. "ACCRINTM": function() {
  111451. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  111452. return formula_default.error.na;
  111453. }
  111454. for (var i2 = 0; i2 < arguments.length; i2++) {
  111455. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  111456. if (!p[0]) {
  111457. return formula_default.error.v;
  111458. }
  111459. }
  111460. try {
  111461. var issue = func_methods_default.getCellDate(arguments[0]);
  111462. if (valueIsError(issue)) {
  111463. return issue;
  111464. }
  111465. if (!(0, import_dayjs8.default)(issue).isValid()) {
  111466. return formula_default.error.v;
  111467. }
  111468. var settlement = func_methods_default.getCellDate(arguments[1]);
  111469. if (valueIsError(settlement)) {
  111470. return settlement;
  111471. }
  111472. if (!(0, import_dayjs8.default)(settlement).isValid()) {
  111473. return formula_default.error.v;
  111474. }
  111475. var rate = func_methods_default.getFirstValue(arguments[2]);
  111476. if (valueIsError(rate)) {
  111477. return rate;
  111478. }
  111479. if (!isRealNum(rate)) {
  111480. return formula_default.error.v;
  111481. }
  111482. rate = parseFloat(rate);
  111483. var par = func_methods_default.getFirstValue(arguments[3]);
  111484. if (valueIsError(par)) {
  111485. return par;
  111486. }
  111487. if (!isRealNum(par)) {
  111488. return formula_default.error.v;
  111489. }
  111490. par = parseFloat(par);
  111491. var basis = 0;
  111492. if (arguments.length == 5) {
  111493. basis = func_methods_default.getFirstValue(arguments[4]);
  111494. if (valueIsError(basis)) {
  111495. return basis;
  111496. }
  111497. if (!isRealNum(basis)) {
  111498. return formula_default.error.v;
  111499. }
  111500. basis = parseInt(basis);
  111501. }
  111502. if (rate <= 0 || par <= 0) {
  111503. return formula_default.error.nm;
  111504. }
  111505. if (basis < 0 || basis > 4) {
  111506. return formula_default.error.nm;
  111507. }
  111508. if ((0, import_dayjs8.default)(issue) - (0, import_dayjs8.default)(settlement) >= 0) {
  111509. return formula_default.error.nm;
  111510. }
  111511. var sd = (0, import_dayjs8.default)(issue).date();
  111512. var sm = (0, import_dayjs8.default)(issue).month() + 1;
  111513. var sy = (0, import_dayjs8.default)(issue).year();
  111514. var ed = (0, import_dayjs8.default)(settlement).date();
  111515. var em = (0, import_dayjs8.default)(settlement).month() + 1;
  111516. var ey = (0, import_dayjs8.default)(settlement).year();
  111517. var result;
  111518. switch (basis) {
  111519. case 0:
  111520. if (sd === 31 && ed === 31) {
  111521. sd = 30;
  111522. ed = 30;
  111523. } else if (sd === 31) {
  111524. sd = 30;
  111525. } else if (sd === 30 && ed === 31) {
  111526. ed = 30;
  111527. }
  111528. result = (ed + em * 30 + ey * 360 - (sd + sm * 30 + sy * 360)) / 360;
  111529. break;
  111530. case 1:
  111531. var ylength = 365;
  111532. if (sy === ey || sy + 1 === ey && (sm > em || sm === em && sd >= ed)) {
  111533. if (sy === ey && func_methods_default.isLeapYear(sy) || func_methods_default.feb29Between(issue, settlement) || em === 1 && ed === 29) {
  111534. ylength = 366;
  111535. }
  111536. return (0, import_dayjs8.default)(settlement).diff((0, import_dayjs8.default)(issue), "days") / ylength;
  111537. }
  111538. var years = ey - sy + 1;
  111539. var days = ((0, import_dayjs8.default)().set({"year": ey + 1, "month": 0, "date": 1}) - (0, import_dayjs8.default)().set({"year": sy, "month": 0, "date": 1})) / 1e3 / 60 / 60 / 24;
  111540. var average = days / years;
  111541. result = (0, import_dayjs8.default)(settlement).diff((0, import_dayjs8.default)(issue), "days") / average;
  111542. break;
  111543. case 2:
  111544. result = (0, import_dayjs8.default)(settlement).diff((0, import_dayjs8.default)(issue), "days") / 360;
  111545. break;
  111546. case 3:
  111547. result = (0, import_dayjs8.default)(settlement).diff((0, import_dayjs8.default)(issue), "days") / 365;
  111548. break;
  111549. case 4:
  111550. result = (ed + em * 30 + ey * 360 - (sd + sm * 30 + sy * 360)) / 360;
  111551. break;
  111552. }
  111553. return par * rate * result;
  111554. } catch (e) {
  111555. var err = e;
  111556. err = formula_default.errorInfo(err);
  111557. return [formula_default.error.v, err];
  111558. }
  111559. },
  111560. "COUPDAYBS": function() {
  111561. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  111562. return formula_default.error.na;
  111563. }
  111564. for (var i2 = 0; i2 < arguments.length; i2++) {
  111565. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  111566. if (!p[0]) {
  111567. return formula_default.error.v;
  111568. }
  111569. }
  111570. try {
  111571. var settlement = func_methods_default.getCellDate(arguments[0]);
  111572. if (valueIsError(settlement)) {
  111573. return settlement;
  111574. }
  111575. if (!(0, import_dayjs8.default)(settlement).isValid()) {
  111576. return formula_default.error.v;
  111577. }
  111578. var maturity = func_methods_default.getCellDate(arguments[1]);
  111579. if (valueIsError(maturity)) {
  111580. return maturity;
  111581. }
  111582. if (!(0, import_dayjs8.default)(maturity).isValid()) {
  111583. return formula_default.error.v;
  111584. }
  111585. var frequency = func_methods_default.getFirstValue(arguments[2]);
  111586. if (valueIsError(frequency)) {
  111587. return frequency;
  111588. }
  111589. if (!isRealNum(frequency)) {
  111590. return formula_default.error.v;
  111591. }
  111592. frequency = parseInt(frequency);
  111593. var basis = 0;
  111594. if (arguments.length == 4) {
  111595. basis = func_methods_default.getFirstValue(arguments[3]);
  111596. if (valueIsError(basis)) {
  111597. return basis;
  111598. }
  111599. if (!isRealNum(basis)) {
  111600. return formula_default.error.v;
  111601. }
  111602. basis = parseInt(basis);
  111603. }
  111604. if (frequency != 1 && frequency != 2 && frequency != 4) {
  111605. return formula_default.error.nm;
  111606. }
  111607. if (basis < 0 || basis > 4) {
  111608. return formula_default.error.nm;
  111609. }
  111610. if ((0, import_dayjs8.default)(settlement) - (0, import_dayjs8.default)(maturity) >= 0) {
  111611. return formula_default.error.nm;
  111612. }
  111613. var interest;
  111614. var maxCount = Math.ceil((0, import_dayjs8.default)(maturity).diff((0, import_dayjs8.default)(settlement), "months") / (12 / frequency)) + 1;
  111615. for (var i2 = 1; i2 <= maxCount; i2++) {
  111616. var di = (0, import_dayjs8.default)(maturity).subtract(12 / frequency * i2, "months");
  111617. if (di <= (0, import_dayjs8.default)(settlement)) {
  111618. interest = di;
  111619. break;
  111620. }
  111621. }
  111622. var result;
  111623. switch (basis) {
  111624. case 0:
  111625. var sd = (0, import_dayjs8.default)(interest).date();
  111626. var sm = (0, import_dayjs8.default)(interest).month() + 1;
  111627. var sy = (0, import_dayjs8.default)(interest).year();
  111628. var ed = (0, import_dayjs8.default)(settlement).date();
  111629. var em = (0, import_dayjs8.default)(settlement).month() + 1;
  111630. var ey = (0, import_dayjs8.default)(settlement).year();
  111631. if (sd === 31 && ed === 31) {
  111632. sd = 30;
  111633. ed = 30;
  111634. } else if (sd === 31) {
  111635. sd = 30;
  111636. } else if (sd === 30 && ed === 31) {
  111637. ed = 30;
  111638. }
  111639. result = ed + em * 30 + ey * 360 - (sd + sm * 30 + sy * 360);
  111640. break;
  111641. case 1:
  111642. case 2:
  111643. case 3:
  111644. result = (0, import_dayjs8.default)(settlement).diff((0, import_dayjs8.default)(interest), "days");
  111645. break;
  111646. case 4:
  111647. var sd = (0, import_dayjs8.default)(interest).date();
  111648. var sm = (0, import_dayjs8.default)(interest).month() + 1;
  111649. var sy = (0, import_dayjs8.default)(interest).year();
  111650. var ed = (0, import_dayjs8.default)(settlement).date();
  111651. var em = (0, import_dayjs8.default)(settlement).month() + 1;
  111652. var ey = (0, import_dayjs8.default)(settlement).year();
  111653. result = ed + em * 30 + ey * 360 - (sd + sm * 30 + sy * 360);
  111654. break;
  111655. }
  111656. return result;
  111657. } catch (e) {
  111658. var err = e;
  111659. err = formula_default.errorInfo(err);
  111660. return [formula_default.error.v, err];
  111661. }
  111662. },
  111663. "COUPDAYS": function() {
  111664. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  111665. return formula_default.error.na;
  111666. }
  111667. for (var i2 = 0; i2 < arguments.length; i2++) {
  111668. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  111669. if (!p[0]) {
  111670. return formula_default.error.v;
  111671. }
  111672. }
  111673. try {
  111674. var settlement = func_methods_default.getCellDate(arguments[0]);
  111675. if (valueIsError(settlement)) {
  111676. return settlement;
  111677. }
  111678. if (!(0, import_dayjs8.default)(settlement).isValid()) {
  111679. return formula_default.error.v;
  111680. }
  111681. var maturity = func_methods_default.getCellDate(arguments[1]);
  111682. if (valueIsError(maturity)) {
  111683. return maturity;
  111684. }
  111685. if (!(0, import_dayjs8.default)(maturity).isValid()) {
  111686. return formula_default.error.v;
  111687. }
  111688. var frequency = func_methods_default.getFirstValue(arguments[2]);
  111689. if (valueIsError(frequency)) {
  111690. return frequency;
  111691. }
  111692. if (!isRealNum(frequency)) {
  111693. return formula_default.error.v;
  111694. }
  111695. frequency = parseInt(frequency);
  111696. var basis = 0;
  111697. if (arguments.length == 4) {
  111698. basis = func_methods_default.getFirstValue(arguments[3]);
  111699. if (valueIsError(basis)) {
  111700. return basis;
  111701. }
  111702. if (!isRealNum(basis)) {
  111703. return formula_default.error.v;
  111704. }
  111705. basis = parseInt(basis);
  111706. }
  111707. if (frequency != 1 && frequency != 2 && frequency != 4) {
  111708. return formula_default.error.nm;
  111709. }
  111710. if (basis < 0 || basis > 4) {
  111711. return formula_default.error.nm;
  111712. }
  111713. if ((0, import_dayjs8.default)(settlement) - (0, import_dayjs8.default)(maturity) >= 0) {
  111714. return formula_default.error.nm;
  111715. }
  111716. var result;
  111717. switch (basis) {
  111718. case 0:
  111719. result = 360 / frequency;
  111720. break;
  111721. case 1:
  111722. var maxCount = Math.ceil((0, import_dayjs8.default)(maturity).diff((0, import_dayjs8.default)(settlement), "months") / (12 / frequency)) + 1;
  111723. for (var i2 = 1; i2 <= maxCount; i2++) {
  111724. var d1 = (0, import_dayjs8.default)(maturity).subtract(12 / frequency * i2, "months");
  111725. if (d1 <= (0, import_dayjs8.default)(settlement)) {
  111726. var d2 = (0, import_dayjs8.default)(maturity).subtract(12 / frequency * (i2 - 1), "months");
  111727. result = (0, import_dayjs8.default)(d2).diff((0, import_dayjs8.default)(d1), "days");
  111728. break;
  111729. }
  111730. }
  111731. break;
  111732. case 2:
  111733. result = 360 / frequency;
  111734. break;
  111735. case 3:
  111736. result = 365 / frequency;
  111737. break;
  111738. case 4:
  111739. result = 360 / frequency;
  111740. break;
  111741. }
  111742. return result;
  111743. } catch (e) {
  111744. var err = e;
  111745. err = formula_default.errorInfo(err);
  111746. return [formula_default.error.v, err];
  111747. }
  111748. },
  111749. "COUPDAYSNC": function() {
  111750. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  111751. return formula_default.error.na;
  111752. }
  111753. for (var i2 = 0; i2 < arguments.length; i2++) {
  111754. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  111755. if (!p[0]) {
  111756. return formula_default.error.v;
  111757. }
  111758. }
  111759. try {
  111760. var settlement = func_methods_default.getCellDate(arguments[0]);
  111761. if (valueIsError(settlement)) {
  111762. return settlement;
  111763. }
  111764. if (!(0, import_dayjs8.default)(settlement).isValid()) {
  111765. return formula_default.error.v;
  111766. }
  111767. var maturity = func_methods_default.getCellDate(arguments[1]);
  111768. if (valueIsError(maturity)) {
  111769. return maturity;
  111770. }
  111771. if (!(0, import_dayjs8.default)(maturity).isValid()) {
  111772. return formula_default.error.v;
  111773. }
  111774. var frequency = func_methods_default.getFirstValue(arguments[2]);
  111775. if (valueIsError(frequency)) {
  111776. return frequency;
  111777. }
  111778. if (!isRealNum(frequency)) {
  111779. return formula_default.error.v;
  111780. }
  111781. frequency = parseInt(frequency);
  111782. var basis = 0;
  111783. if (arguments.length == 4) {
  111784. basis = func_methods_default.getFirstValue(arguments[3]);
  111785. if (valueIsError(basis)) {
  111786. return basis;
  111787. }
  111788. if (!isRealNum(basis)) {
  111789. return formula_default.error.v;
  111790. }
  111791. basis = parseInt(basis);
  111792. }
  111793. if (frequency != 1 && frequency != 2 && frequency != 4) {
  111794. return formula_default.error.nm;
  111795. }
  111796. if (basis < 0 || basis > 4) {
  111797. return formula_default.error.nm;
  111798. }
  111799. if ((0, import_dayjs8.default)(settlement) - (0, import_dayjs8.default)(maturity) >= 0) {
  111800. return formula_default.error.nm;
  111801. }
  111802. var interest;
  111803. var maxCount = Math.ceil((0, import_dayjs8.default)(maturity).diff((0, import_dayjs8.default)(settlement), "months") / (12 / frequency)) + 1;
  111804. for (var i2 = 1; i2 <= maxCount; i2++) {
  111805. var di = (0, import_dayjs8.default)(maturity).subtract(12 / frequency * i2, "months");
  111806. if (di <= (0, import_dayjs8.default)(settlement)) {
  111807. interest = (0, import_dayjs8.default)(maturity).subtract(12 / frequency * (i2 - 1), "months");
  111808. break;
  111809. }
  111810. }
  111811. var result;
  111812. switch (basis) {
  111813. case 0:
  111814. var sd = (0, import_dayjs8.default)(settlement).date();
  111815. var sm = (0, import_dayjs8.default)(settlement).month() + 1;
  111816. var sy = (0, import_dayjs8.default)(settlement).year();
  111817. var ed = (0, import_dayjs8.default)(interest).date();
  111818. var em = (0, import_dayjs8.default)(interest).month() + 1;
  111819. var ey = (0, import_dayjs8.default)(interest).year();
  111820. if (sd === 31 && ed === 31) {
  111821. sd = 30;
  111822. ed = 30;
  111823. } else if (sd === 31) {
  111824. sd = 30;
  111825. } else if (sd === 30 && ed === 31) {
  111826. ed = 30;
  111827. }
  111828. result = ed + em * 30 + ey * 360 - (sd + sm * 30 + sy * 360);
  111829. break;
  111830. case 1:
  111831. case 2:
  111832. case 3:
  111833. result = (0, import_dayjs8.default)(interest).diff((0, import_dayjs8.default)(settlement), "days");
  111834. break;
  111835. case 4:
  111836. var sd = (0, import_dayjs8.default)(settlement).date();
  111837. var sm = (0, import_dayjs8.default)(settlement).month() + 1;
  111838. var sy = (0, import_dayjs8.default)(settlement).year();
  111839. var ed = (0, import_dayjs8.default)(interest).date();
  111840. var em = (0, import_dayjs8.default)(interest).month() + 1;
  111841. var ey = (0, import_dayjs8.default)(interest).year();
  111842. result = ed + em * 30 + ey * 360 - (sd + sm * 30 + sy * 360);
  111843. break;
  111844. }
  111845. return result;
  111846. } catch (e) {
  111847. var err = e;
  111848. err = formula_default.errorInfo(err);
  111849. return [formula_default.error.v, err];
  111850. }
  111851. },
  111852. "COUPNCD": function() {
  111853. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  111854. return formula_default.error.na;
  111855. }
  111856. for (var i2 = 0; i2 < arguments.length; i2++) {
  111857. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  111858. if (!p[0]) {
  111859. return formula_default.error.v;
  111860. }
  111861. }
  111862. try {
  111863. var settlement = func_methods_default.getCellDate(arguments[0]);
  111864. if (valueIsError(settlement)) {
  111865. return settlement;
  111866. }
  111867. if (!(0, import_dayjs8.default)(settlement).isValid()) {
  111868. return formula_default.error.v;
  111869. }
  111870. var maturity = func_methods_default.getCellDate(arguments[1]);
  111871. if (valueIsError(maturity)) {
  111872. return maturity;
  111873. }
  111874. if (!(0, import_dayjs8.default)(maturity).isValid()) {
  111875. return formula_default.error.v;
  111876. }
  111877. var frequency = func_methods_default.getFirstValue(arguments[2]);
  111878. if (valueIsError(frequency)) {
  111879. return frequency;
  111880. }
  111881. if (!isRealNum(frequency)) {
  111882. return formula_default.error.v;
  111883. }
  111884. frequency = parseInt(frequency);
  111885. var basis = 0;
  111886. if (arguments.length == 4) {
  111887. basis = func_methods_default.getFirstValue(arguments[3]);
  111888. if (valueIsError(basis)) {
  111889. return basis;
  111890. }
  111891. if (!isRealNum(basis)) {
  111892. return formula_default.error.v;
  111893. }
  111894. basis = parseInt(basis);
  111895. }
  111896. if (frequency != 1 && frequency != 2 && frequency != 4) {
  111897. return formula_default.error.nm;
  111898. }
  111899. if (basis < 0 || basis > 4) {
  111900. return formula_default.error.nm;
  111901. }
  111902. if ((0, import_dayjs8.default)(settlement) - (0, import_dayjs8.default)(maturity) >= 0) {
  111903. return formula_default.error.nm;
  111904. }
  111905. var interest;
  111906. var maxCount = Math.ceil((0, import_dayjs8.default)(maturity).diff((0, import_dayjs8.default)(settlement), "months") / (12 / frequency)) + 1;
  111907. for (var i2 = 1; i2 <= maxCount; i2++) {
  111908. var di = (0, import_dayjs8.default)(maturity).subtract(12 / frequency * i2, "months");
  111909. if (di <= (0, import_dayjs8.default)(settlement)) {
  111910. interest = (0, import_dayjs8.default)(maturity).subtract(12 / frequency * (i2 - 1), "months");
  111911. break;
  111912. }
  111913. }
  111914. return (0, import_dayjs8.default)(interest).format("YYYY-MM-DD");
  111915. } catch (e) {
  111916. var err = e;
  111917. err = formula_default.errorInfo(err);
  111918. return [formula_default.error.v, err];
  111919. }
  111920. },
  111921. "COUPPCD": function() {
  111922. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  111923. return formula_default.error.na;
  111924. }
  111925. for (var i2 = 0; i2 < arguments.length; i2++) {
  111926. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  111927. if (!p[0]) {
  111928. return formula_default.error.v;
  111929. }
  111930. }
  111931. try {
  111932. var settlement = func_methods_default.getCellDate(arguments[0]);
  111933. if (valueIsError(settlement)) {
  111934. return settlement;
  111935. }
  111936. if (!(0, import_dayjs8.default)(settlement).isValid()) {
  111937. return formula_default.error.v;
  111938. }
  111939. var maturity = func_methods_default.getCellDate(arguments[1]);
  111940. if (valueIsError(maturity)) {
  111941. return maturity;
  111942. }
  111943. if (!(0, import_dayjs8.default)(maturity).isValid()) {
  111944. return formula_default.error.v;
  111945. }
  111946. var frequency = func_methods_default.getFirstValue(arguments[2]);
  111947. if (valueIsError(frequency)) {
  111948. return frequency;
  111949. }
  111950. if (!isRealNum(frequency)) {
  111951. return formula_default.error.v;
  111952. }
  111953. frequency = parseInt(frequency);
  111954. var basis = 0;
  111955. if (arguments.length == 4) {
  111956. basis = func_methods_default.getFirstValue(arguments[3]);
  111957. if (valueIsError(basis)) {
  111958. return basis;
  111959. }
  111960. if (!isRealNum(basis)) {
  111961. return formula_default.error.v;
  111962. }
  111963. basis = parseInt(basis);
  111964. }
  111965. if (frequency != 1 && frequency != 2 && frequency != 4) {
  111966. return formula_default.error.nm;
  111967. }
  111968. if (basis < 0 || basis > 4) {
  111969. return formula_default.error.nm;
  111970. }
  111971. if ((0, import_dayjs8.default)(settlement) - (0, import_dayjs8.default)(maturity) >= 0) {
  111972. return formula_default.error.nm;
  111973. }
  111974. var interest;
  111975. var maxCount = Math.ceil((0, import_dayjs8.default)(maturity).diff((0, import_dayjs8.default)(settlement), "months") / (12 / frequency)) + 1;
  111976. for (var i2 = 1; i2 <= maxCount; i2++) {
  111977. var di = (0, import_dayjs8.default)(maturity).subtract(12 / frequency * i2, "months");
  111978. if (di <= (0, import_dayjs8.default)(settlement)) {
  111979. interest = di;
  111980. break;
  111981. }
  111982. }
  111983. return (0, import_dayjs8.default)(interest).format("YYYY-MM-DD");
  111984. } catch (e) {
  111985. var err = e;
  111986. err = formula_default.errorInfo(err);
  111987. return [formula_default.error.v, err];
  111988. }
  111989. },
  111990. "FV": function() {
  111991. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  111992. return formula_default.error.na;
  111993. }
  111994. for (var i2 = 0; i2 < arguments.length; i2++) {
  111995. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  111996. if (!p[0]) {
  111997. return formula_default.error.v;
  111998. }
  111999. }
  112000. try {
  112001. var rate = func_methods_default.getFirstValue(arguments[0]);
  112002. if (valueIsError(rate)) {
  112003. return rate;
  112004. }
  112005. if (!isRealNum(rate)) {
  112006. return formula_default.error.v;
  112007. }
  112008. rate = parseFloat(rate);
  112009. var nper = func_methods_default.getFirstValue(arguments[1]);
  112010. if (valueIsError(nper)) {
  112011. return nper;
  112012. }
  112013. if (!isRealNum(nper)) {
  112014. return formula_default.error.v;
  112015. }
  112016. nper = parseFloat(nper);
  112017. var pmt = func_methods_default.getFirstValue(arguments[2]);
  112018. if (valueIsError(pmt)) {
  112019. return pmt;
  112020. }
  112021. if (!isRealNum(pmt)) {
  112022. return formula_default.error.v;
  112023. }
  112024. pmt = parseFloat(pmt);
  112025. var pv = 0;
  112026. if (arguments.length >= 4) {
  112027. pv = func_methods_default.getFirstValue(arguments[3]);
  112028. if (valueIsError(pv)) {
  112029. return pv;
  112030. }
  112031. if (!isRealNum(pv)) {
  112032. return formula_default.error.v;
  112033. }
  112034. pv = parseFloat(pv);
  112035. }
  112036. var type = 0;
  112037. if (arguments.length >= 5) {
  112038. type = func_methods_default.getFirstValue(arguments[4]);
  112039. if (valueIsError(type)) {
  112040. return type;
  112041. }
  112042. if (!isRealNum(type)) {
  112043. return formula_default.error.v;
  112044. }
  112045. type = parseFloat(type);
  112046. }
  112047. if (type != 0 && type != 1) {
  112048. return formula_default.error.nm;
  112049. }
  112050. var result;
  112051. if (rate === 0) {
  112052. result = pv + pmt * nper;
  112053. } else {
  112054. var term = Math.pow(1 + rate, nper);
  112055. if (type === 1) {
  112056. result = pv * term + pmt * (1 + rate) * (term - 1) / rate;
  112057. } else {
  112058. result = pv * term + pmt * (term - 1) / rate;
  112059. }
  112060. }
  112061. return -result;
  112062. } catch (e) {
  112063. var err = e;
  112064. err = formula_default.errorInfo(err);
  112065. return [formula_default.error.v, err];
  112066. }
  112067. },
  112068. "FVSCHEDULE": function() {
  112069. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  112070. return formula_default.error.na;
  112071. }
  112072. for (var i2 = 0; i2 < arguments.length; i2++) {
  112073. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  112074. if (!p[0]) {
  112075. return formula_default.error.v;
  112076. }
  112077. }
  112078. try {
  112079. var principal = func_methods_default.getFirstValue(arguments[0]);
  112080. if (valueIsError(principal)) {
  112081. return principal;
  112082. }
  112083. if (!isRealNum(principal)) {
  112084. return formula_default.error.v;
  112085. }
  112086. principal = parseFloat(principal);
  112087. var data_schedule = arguments[1];
  112088. var schedule = [];
  112089. if (getObjType(data_schedule) == "array") {
  112090. if (getObjType(data_schedule[0]) == "array" && !func_methods_default.isDyadicArr(data_schedule)) {
  112091. return formula_default.error.v;
  112092. }
  112093. schedule = schedule.concat(func_methods_default.getDataArr(data_schedule, false));
  112094. } else if (getObjType(data_schedule) == "object" && data_schedule.startCell != null) {
  112095. schedule = schedule.concat(func_methods_default.getCellDataArr(data_schedule, "number", false));
  112096. } else {
  112097. schedule.push(data_schedule);
  112098. }
  112099. var schedule_n = [];
  112100. for (var i2 = 0; i2 < schedule.length; i2++) {
  112101. var number = schedule[i2];
  112102. if (!isRealNum(number)) {
  112103. return formula_default.error.v;
  112104. }
  112105. schedule_n.push(parseFloat(number));
  112106. }
  112107. var n = schedule_n.length;
  112108. var future = principal;
  112109. for (var i2 = 0; i2 < n; i2++) {
  112110. future *= 1 + schedule_n[i2];
  112111. }
  112112. return future;
  112113. } catch (e) {
  112114. var err = e;
  112115. err = formula_default.errorInfo(err);
  112116. return [formula_default.error.v, err];
  112117. }
  112118. },
  112119. "YIELD": function() {
  112120. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  112121. return formula_default.error.na;
  112122. }
  112123. for (var i2 = 0; i2 < arguments.length; i2++) {
  112124. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  112125. if (!p[0]) {
  112126. return formula_default.error.v;
  112127. }
  112128. }
  112129. try {
  112130. var settlement = func_methods_default.getCellDate(arguments[0]);
  112131. if (valueIsError(settlement)) {
  112132. return settlement;
  112133. }
  112134. if (!(0, import_dayjs8.default)(settlement).isValid()) {
  112135. return formula_default.error.v;
  112136. }
  112137. var maturity = func_methods_default.getCellDate(arguments[1]);
  112138. if (valueIsError(maturity)) {
  112139. return maturity;
  112140. }
  112141. if (!(0, import_dayjs8.default)(maturity).isValid()) {
  112142. return formula_default.error.v;
  112143. }
  112144. var rate = func_methods_default.getFirstValue(arguments[2]);
  112145. if (valueIsError(rate)) {
  112146. return rate;
  112147. }
  112148. if (!isRealNum(rate)) {
  112149. return formula_default.error.v;
  112150. }
  112151. rate = parseFloat(rate);
  112152. var pr = func_methods_default.getFirstValue(arguments[3]);
  112153. if (valueIsError(pr)) {
  112154. return pr;
  112155. }
  112156. if (!isRealNum(pr)) {
  112157. return formula_default.error.v;
  112158. }
  112159. pr = parseFloat(pr);
  112160. var redemption = func_methods_default.getFirstValue(arguments[4]);
  112161. if (valueIsError(redemption)) {
  112162. return redemption;
  112163. }
  112164. if (!isRealNum(redemption)) {
  112165. return formula_default.error.v;
  112166. }
  112167. redemption = parseFloat(redemption);
  112168. var frequency = func_methods_default.getFirstValue(arguments[5]);
  112169. if (valueIsError(frequency)) {
  112170. return frequency;
  112171. }
  112172. if (!isRealNum(frequency)) {
  112173. return formula_default.error.v;
  112174. }
  112175. frequency = parseInt(frequency);
  112176. var basis = 0;
  112177. if (arguments.length == 7) {
  112178. basis = func_methods_default.getFirstValue(arguments[6]);
  112179. if (valueIsError(basis)) {
  112180. return basis;
  112181. }
  112182. if (!isRealNum(basis)) {
  112183. return formula_default.error.v;
  112184. }
  112185. basis = parseInt(basis);
  112186. }
  112187. if (rate < 0) {
  112188. return formula_default.error.nm;
  112189. }
  112190. if (pr <= 0 || redemption <= 0) {
  112191. return formula_default.error.nm;
  112192. }
  112193. if (frequency != 1 && frequency != 2 && frequency != 4) {
  112194. return formula_default.error.nm;
  112195. }
  112196. if (basis < 0 || basis > 4) {
  112197. return formula_default.error.nm;
  112198. }
  112199. if ((0, import_dayjs8.default)(settlement) - (0, import_dayjs8.default)(maturity) >= 0) {
  112200. return formula_default.error.nm;
  112201. }
  112202. var num = window.luckysheet_function.COUPNUM.f(settlement, maturity, frequency, basis);
  112203. if (num > 1) {
  112204. var a = 1;
  112205. var b = 0;
  112206. var yld = a;
  112207. for (var i2 = 1; i2 <= 100; i2++) {
  112208. var price = window.luckysheet_function.PRICE.f(settlement, maturity, rate, yld, redemption, frequency, basis);
  112209. if (Math.abs(price - pr) < 1e-6) {
  112210. break;
  112211. }
  112212. if (price > pr) {
  112213. b = yld;
  112214. } else {
  112215. a = yld;
  112216. }
  112217. yld = (a + b) / 2;
  112218. }
  112219. var result = yld;
  112220. } else {
  112221. var DSR = window.luckysheet_function.COUPDAYSNC.f(settlement, maturity, frequency, basis);
  112222. var E = window.luckysheet_function.COUPDAYS.f(settlement, maturity, frequency, basis);
  112223. var A = window.luckysheet_function.COUPDAYBS.f(settlement, maturity, frequency, basis);
  112224. var T1 = redemption / 100 + rate / frequency;
  112225. var T2 = pr / 100 + A / E * (rate / frequency);
  112226. var T3 = frequency * E / DSR;
  112227. var result = (T1 - T2) / T2 * T3;
  112228. }
  112229. return result;
  112230. } catch (e) {
  112231. var err = e;
  112232. err = formula_default.errorInfo(err);
  112233. return [formula_default.error.v, err];
  112234. }
  112235. },
  112236. "YIELDDISC": function() {
  112237. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  112238. return formula_default.error.na;
  112239. }
  112240. for (var i2 = 0; i2 < arguments.length; i2++) {
  112241. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  112242. if (!p[0]) {
  112243. return formula_default.error.v;
  112244. }
  112245. }
  112246. try {
  112247. var settlement = func_methods_default.getCellDate(arguments[0]);
  112248. if (valueIsError(settlement)) {
  112249. return settlement;
  112250. }
  112251. if (!(0, import_dayjs8.default)(settlement).isValid()) {
  112252. return formula_default.error.v;
  112253. }
  112254. var maturity = func_methods_default.getCellDate(arguments[1]);
  112255. if (valueIsError(maturity)) {
  112256. return maturity;
  112257. }
  112258. if (!(0, import_dayjs8.default)(maturity).isValid()) {
  112259. return formula_default.error.v;
  112260. }
  112261. var pr = func_methods_default.getFirstValue(arguments[2]);
  112262. if (valueIsError(pr)) {
  112263. return pr;
  112264. }
  112265. if (!isRealNum(pr)) {
  112266. return formula_default.error.v;
  112267. }
  112268. pr = parseFloat(pr);
  112269. var redemption = func_methods_default.getFirstValue(arguments[3]);
  112270. if (valueIsError(redemption)) {
  112271. return redemption;
  112272. }
  112273. if (!isRealNum(redemption)) {
  112274. return formula_default.error.v;
  112275. }
  112276. redemption = parseFloat(redemption);
  112277. var basis = 0;
  112278. if (arguments.length == 5) {
  112279. basis = func_methods_default.getFirstValue(arguments[4]);
  112280. if (valueIsError(basis)) {
  112281. return basis;
  112282. }
  112283. if (!isRealNum(basis)) {
  112284. return formula_default.error.v;
  112285. }
  112286. basis = parseInt(basis);
  112287. }
  112288. if (pr <= 0 || redemption <= 0) {
  112289. return formula_default.error.nm;
  112290. }
  112291. if (basis < 0 || basis > 4) {
  112292. return formula_default.error.nm;
  112293. }
  112294. if ((0, import_dayjs8.default)(settlement) - (0, import_dayjs8.default)(maturity) >= 0) {
  112295. return formula_default.error.nm;
  112296. }
  112297. var yearfrac = window.luckysheet_function.YEARFRAC.f(settlement, maturity, basis);
  112298. return (redemption / pr - 1) / yearfrac;
  112299. } catch (e) {
  112300. var err = e;
  112301. err = formula_default.errorInfo(err);
  112302. return [formula_default.error.v, err];
  112303. }
  112304. },
  112305. "NOMINAL": function() {
  112306. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  112307. return formula_default.error.na;
  112308. }
  112309. for (var i2 = 0; i2 < arguments.length; i2++) {
  112310. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  112311. if (!p[0]) {
  112312. return formula_default.error.v;
  112313. }
  112314. }
  112315. try {
  112316. var effect_rate = func_methods_default.getFirstValue(arguments[0]);
  112317. if (valueIsError(effect_rate)) {
  112318. return effect_rate;
  112319. }
  112320. if (!isRealNum(effect_rate)) {
  112321. return formula_default.error.v;
  112322. }
  112323. effect_rate = parseFloat(effect_rate);
  112324. var npery = func_methods_default.getFirstValue(arguments[1]);
  112325. if (valueIsError(npery)) {
  112326. return npery;
  112327. }
  112328. if (!isRealNum(npery)) {
  112329. return formula_default.error.v;
  112330. }
  112331. npery = parseInt(npery);
  112332. if (effect_rate <= 0 || npery < 1) {
  112333. return formula_default.error.nm;
  112334. }
  112335. return (Math.pow(effect_rate + 1, 1 / npery) - 1) * npery;
  112336. } catch (e) {
  112337. var err = e;
  112338. err = formula_default.errorInfo(err);
  112339. return [formula_default.error.v, err];
  112340. }
  112341. },
  112342. "XIRR": function() {
  112343. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  112344. return formula_default.error.na;
  112345. }
  112346. for (var i2 = 0; i2 < arguments.length; i2++) {
  112347. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  112348. if (!p[0]) {
  112349. return formula_default.error.v;
  112350. }
  112351. }
  112352. try {
  112353. var data_values = arguments[0];
  112354. var values = [];
  112355. if (getObjType(data_values) == "array") {
  112356. if (getObjType(data_values[0]) == "array" && !func_methods_default.isDyadicArr(data_values)) {
  112357. return formula_default.error.v;
  112358. }
  112359. values = values.concat(func_methods_default.getDataArr(data_values, false));
  112360. } else if (getObjType(data_values) == "object" && data_values.startCell != null) {
  112361. values = values.concat(func_methods_default.getCellDataArr(data_values, "number", false));
  112362. } else {
  112363. values.push(data_values);
  112364. }
  112365. var values_n = [];
  112366. for (var i2 = 0; i2 < values.length; i2++) {
  112367. var number = values[i2];
  112368. if (!isRealNum(number)) {
  112369. return formula_default.error.v;
  112370. }
  112371. values_n.push(parseFloat(number));
  112372. }
  112373. var dates = func_methods_default.getCellrangeDate(arguments[1]);
  112374. if (valueIsError(dates)) {
  112375. return dates;
  112376. }
  112377. for (var i2 = 0; i2 < dates.length; i2++) {
  112378. if (!(0, import_dayjs8.default)(dates[i2]).isValid()) {
  112379. return formula_default.error.v;
  112380. }
  112381. }
  112382. var guess = 0.1;
  112383. if (arguments.length == 3) {
  112384. guess = func_methods_default.getFirstValue(arguments[2]);
  112385. if (valueIsError(guess)) {
  112386. return guess;
  112387. }
  112388. if (!isRealNum(guess)) {
  112389. return formula_default.error.v;
  112390. }
  112391. guess = parseFloat(guess);
  112392. }
  112393. var positive = false;
  112394. var negative = false;
  112395. for (var i2 = 0; i2 < values_n.length; i2++) {
  112396. if (values_n[i2] > 0) {
  112397. positive = true;
  112398. }
  112399. if (values_n[i2] < 0) {
  112400. negative = true;
  112401. }
  112402. if (positive && negative) {
  112403. break;
  112404. }
  112405. }
  112406. if (!positive || !negative) {
  112407. return formula_default.error.nm;
  112408. }
  112409. if (values_n.length != dates.length) {
  112410. return formula_default.error.nm;
  112411. }
  112412. var irrResult = function(values2, dates2, rate) {
  112413. var r2 = rate + 1;
  112414. var result = values2[0];
  112415. for (var i3 = 1; i3 < values2.length; i3++) {
  112416. result += values2[i3] / Math.pow(r2, window.luckysheet_function.DAYS.f(dates2[i3], dates2[0]) / 365);
  112417. }
  112418. return result;
  112419. };
  112420. var irrResultDeriv = function(values2, dates2, rate) {
  112421. var r2 = rate + 1;
  112422. var result = 0;
  112423. for (var i3 = 1; i3 < values2.length; i3++) {
  112424. var frac = window.luckysheet_function.DAYS.f(dates2[i3], dates2[0]) / 365;
  112425. result -= frac * values2[i3] / Math.pow(r2, frac + 1);
  112426. }
  112427. return result;
  112428. };
  112429. var resultRate = guess;
  112430. var epsMax = 1e-10;
  112431. var newRate, epsRate, resultValue;
  112432. var contLoop = true;
  112433. do {
  112434. resultValue = irrResult(values_n, dates, resultRate);
  112435. newRate = resultRate - resultValue / irrResultDeriv(values_n, dates, resultRate);
  112436. epsRate = Math.abs(newRate - resultRate);
  112437. resultRate = newRate;
  112438. contLoop = epsRate > epsMax && Math.abs(resultValue) > epsMax;
  112439. } while (contLoop);
  112440. return resultRate;
  112441. } catch (e) {
  112442. var err = e;
  112443. err = formula_default.errorInfo(err);
  112444. return [formula_default.error.v, err];
  112445. }
  112446. },
  112447. "MIRR": function() {
  112448. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  112449. return formula_default.error.na;
  112450. }
  112451. for (var i2 = 0; i2 < arguments.length; i2++) {
  112452. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  112453. if (!p[0]) {
  112454. return formula_default.error.v;
  112455. }
  112456. }
  112457. try {
  112458. var data_values = arguments[0];
  112459. var values = [];
  112460. if (getObjType(data_values) == "array") {
  112461. if (getObjType(data_values[0]) == "array" && !func_methods_default.isDyadicArr(data_values)) {
  112462. return formula_default.error.v;
  112463. }
  112464. values = values.concat(func_methods_default.getDataArr(data_values, false));
  112465. } else if (getObjType(data_values) == "object" && data_values.startCell != null) {
  112466. values = values.concat(func_methods_default.getCellDataArr(data_values, "number", false));
  112467. } else {
  112468. values.push(data_values);
  112469. }
  112470. var values_n = [];
  112471. for (var i2 = 0; i2 < values.length; i2++) {
  112472. var number = values[i2];
  112473. if (!isRealNum(number)) {
  112474. return formula_default.error.v;
  112475. }
  112476. values_n.push(parseFloat(number));
  112477. }
  112478. var finance_rate = func_methods_default.getFirstValue(arguments[1]);
  112479. if (valueIsError(finance_rate)) {
  112480. return finance_rate;
  112481. }
  112482. if (!isRealNum(finance_rate)) {
  112483. return formula_default.error.v;
  112484. }
  112485. finance_rate = parseFloat(finance_rate);
  112486. var reinvest_rate = func_methods_default.getFirstValue(arguments[2]);
  112487. if (valueIsError(reinvest_rate)) {
  112488. return reinvest_rate;
  112489. }
  112490. if (!isRealNum(reinvest_rate)) {
  112491. return formula_default.error.v;
  112492. }
  112493. reinvest_rate = parseFloat(reinvest_rate);
  112494. var n = values_n.length;
  112495. var payments = [];
  112496. var incomes = [];
  112497. for (var i2 = 0; i2 < n; i2++) {
  112498. if (values_n[i2] < 0) {
  112499. payments.push(values_n[i2]);
  112500. } else {
  112501. incomes.push(values_n[i2]);
  112502. }
  112503. }
  112504. if (payments.length == 0 || incomes.length == 0) {
  112505. return formula_default.error.d;
  112506. }
  112507. var num = -window.luckysheet_function.NPV.f(reinvest_rate, incomes) * Math.pow(1 + reinvest_rate, n - 1);
  112508. var den = window.luckysheet_function.NPV.f(finance_rate, payments) * (1 + finance_rate);
  112509. return Math.pow(num / den, 1 / (n - 1)) - 1;
  112510. } catch (e) {
  112511. var err = e;
  112512. err = formula_default.errorInfo(err);
  112513. return [formula_default.error.v, err];
  112514. }
  112515. },
  112516. "IRR": function() {
  112517. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  112518. return formula_default.error.na;
  112519. }
  112520. for (var i2 = 0; i2 < arguments.length; i2++) {
  112521. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  112522. if (!p[0]) {
  112523. return formula_default.error.v;
  112524. }
  112525. }
  112526. try {
  112527. var data_values = arguments[0];
  112528. var values = [];
  112529. if (getObjType(data_values) == "array") {
  112530. if (getObjType(data_values[0]) == "array" && !func_methods_default.isDyadicArr(data_values)) {
  112531. return formula_default.error.v;
  112532. }
  112533. values = values.concat(func_methods_default.getDataArr(data_values, false));
  112534. } else if (getObjType(data_values) == "object" && data_values.startCell != null) {
  112535. values = values.concat(func_methods_default.getCellDataArr(data_values, "number", true));
  112536. } else {
  112537. values.push(data_values);
  112538. }
  112539. var values_n = [];
  112540. for (var i2 = 0; i2 < values.length; i2++) {
  112541. var number = values[i2];
  112542. if (!isRealNum(number)) {
  112543. return formula_default.error.v;
  112544. }
  112545. values_n.push(parseFloat(number));
  112546. }
  112547. var guess = 0.1;
  112548. if (arguments.length == 2) {
  112549. guess = func_methods_default.getFirstValue(arguments[1]);
  112550. if (valueIsError(guess)) {
  112551. return guess;
  112552. }
  112553. if (!isRealNum(guess)) {
  112554. return formula_default.error.v;
  112555. }
  112556. guess = parseFloat(guess);
  112557. }
  112558. var dates = [];
  112559. var positive = false;
  112560. var negative = false;
  112561. for (var i2 = 0; i2 < values.length; i2++) {
  112562. dates[i2] = i2 === 0 ? 0 : dates[i2 - 1] + 365;
  112563. if (values[i2] > 0) {
  112564. positive = true;
  112565. }
  112566. if (values[i2] < 0) {
  112567. negative = true;
  112568. }
  112569. }
  112570. if (!positive || !negative) {
  112571. return formula_default.error.nm;
  112572. }
  112573. var irrResult = function(values2, dates2, rate) {
  112574. var r2 = rate + 1;
  112575. var result = values2[0];
  112576. for (var i3 = 1; i3 < values2.length; i3++) {
  112577. result += values2[i3] / Math.pow(r2, (dates2[i3] - dates2[0]) / 365);
  112578. }
  112579. return result;
  112580. };
  112581. var irrResultDeriv = function(values2, dates2, rate) {
  112582. var r2 = rate + 1;
  112583. var result = 0;
  112584. for (var i3 = 1; i3 < values2.length; i3++) {
  112585. var frac = (dates2[i3] - dates2[0]) / 365;
  112586. result -= frac * values2[i3] / Math.pow(r2, frac + 1);
  112587. }
  112588. return result;
  112589. };
  112590. var resultRate = guess;
  112591. var epsMax = 1e-10;
  112592. var newRate, epsRate, resultValue;
  112593. var contLoop = true;
  112594. do {
  112595. resultValue = irrResult(values_n, dates, resultRate);
  112596. newRate = resultRate - resultValue / irrResultDeriv(values_n, dates, resultRate);
  112597. epsRate = Math.abs(newRate - resultRate);
  112598. resultRate = newRate;
  112599. contLoop = epsRate > epsMax && Math.abs(resultValue) > epsMax;
  112600. } while (contLoop);
  112601. return resultRate;
  112602. } catch (e) {
  112603. var err = e;
  112604. err = formula_default.errorInfo(err);
  112605. return [formula_default.error.v, err];
  112606. }
  112607. },
  112608. "NPV": function() {
  112609. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  112610. return formula_default.error.na;
  112611. }
  112612. for (var i2 = 0; i2 < arguments.length; i2++) {
  112613. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  112614. if (!p[0]) {
  112615. return formula_default.error.v;
  112616. }
  112617. }
  112618. try {
  112619. var rate = func_methods_default.getFirstValue(arguments[0]);
  112620. if (valueIsError(rate)) {
  112621. return rate;
  112622. }
  112623. if (!isRealNum(rate)) {
  112624. return formula_default.error.v;
  112625. }
  112626. rate = parseFloat(rate);
  112627. var values = [];
  112628. for (var i2 = 1; i2 < arguments.length; i2++) {
  112629. var data = arguments[i2];
  112630. if (getObjType(data) == "array") {
  112631. if (getObjType(data[0]) == "array" && !func_methods_default.isDyadicArr(data)) {
  112632. return formula_default.error.v;
  112633. }
  112634. values = values.concat(func_methods_default.getDataArr(data, true));
  112635. } else if (getObjType(data) == "object" && data.startCell != null) {
  112636. values = values.concat(func_methods_default.getCellDataArr(data, "number", true));
  112637. } else {
  112638. values.push(data);
  112639. }
  112640. }
  112641. var values_n = [];
  112642. for (var i2 = 0; i2 < values.length; i2++) {
  112643. var number = values[i2];
  112644. if (isRealNum(number)) {
  112645. values_n.push(parseFloat(number));
  112646. }
  112647. }
  112648. var result = 0;
  112649. if (values_n.length > 0) {
  112650. for (var i2 = 0; i2 < values_n.length; i2++) {
  112651. result += values_n[i2] / Math.pow(1 + rate, i2 + 1);
  112652. }
  112653. }
  112654. return result;
  112655. } catch (e) {
  112656. var err = e;
  112657. err = formula_default.errorInfo(err);
  112658. return [formula_default.error.v, err];
  112659. }
  112660. },
  112661. "XNPV": function() {
  112662. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  112663. return formula_default.error.na;
  112664. }
  112665. for (var i2 = 0; i2 < arguments.length; i2++) {
  112666. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  112667. if (!p[0]) {
  112668. return formula_default.error.v;
  112669. }
  112670. }
  112671. try {
  112672. var rate = func_methods_default.getFirstValue(arguments[0]);
  112673. if (valueIsError(rate)) {
  112674. return rate;
  112675. }
  112676. if (!isRealNum(rate)) {
  112677. return formula_default.error.v;
  112678. }
  112679. rate = parseFloat(rate);
  112680. var data_values = arguments[1];
  112681. var values = [];
  112682. if (getObjType(data_values) == "array") {
  112683. if (getObjType(data_values[0]) == "array" && !func_methods_default.isDyadicArr(data_values)) {
  112684. return formula_default.error.v;
  112685. }
  112686. values = values.concat(func_methods_default.getDataArr(data_values, false));
  112687. } else if (getObjType(data_values) == "object" && data_values.startCell != null) {
  112688. values = values.concat(func_methods_default.getCellDataArr(data_values, "number", false));
  112689. } else {
  112690. values.push(data_values);
  112691. }
  112692. var values_n = [];
  112693. for (var i2 = 0; i2 < values.length; i2++) {
  112694. var number = values[i2];
  112695. if (!isRealNum(number)) {
  112696. return formula_default.error.v;
  112697. }
  112698. values_n.push(parseFloat(number));
  112699. }
  112700. var dates = func_methods_default.getCellrangeDate(arguments[2]);
  112701. if (valueIsError(dates)) {
  112702. return dates;
  112703. }
  112704. for (var i2 = 0; i2 < dates.length; i2++) {
  112705. if (!(0, import_dayjs8.default)(dates[i2]).isValid()) {
  112706. return formula_default.error.v;
  112707. }
  112708. }
  112709. if (values_n.length != dates.length) {
  112710. return formula_default.error.nm;
  112711. }
  112712. var result = 0;
  112713. for (var i2 = 0; i2 < values_n.length; i2++) {
  112714. result += values_n[i2] / Math.pow(1 + rate, window.luckysheet_function.DAYS.f(dates[i2], dates[0]) / 365);
  112715. }
  112716. return result;
  112717. } catch (e) {
  112718. var err = e;
  112719. err = formula_default.errorInfo(err);
  112720. return [formula_default.error.v, err];
  112721. }
  112722. },
  112723. "CUMIPMT": function() {
  112724. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  112725. return formula_default.error.na;
  112726. }
  112727. for (var i2 = 0; i2 < arguments.length; i2++) {
  112728. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  112729. if (!p[0]) {
  112730. return formula_default.error.v;
  112731. }
  112732. }
  112733. try {
  112734. var rate = func_methods_default.getFirstValue(arguments[0]);
  112735. if (valueIsError(rate)) {
  112736. return rate;
  112737. }
  112738. if (!isRealNum(rate)) {
  112739. return formula_default.error.v;
  112740. }
  112741. rate = parseFloat(rate);
  112742. var nper = func_methods_default.getFirstValue(arguments[1]);
  112743. if (valueIsError(nper)) {
  112744. return nper;
  112745. }
  112746. if (!isRealNum(nper)) {
  112747. return formula_default.error.v;
  112748. }
  112749. nper = parseFloat(nper);
  112750. var pv = func_methods_default.getFirstValue(arguments[2]);
  112751. if (valueIsError(pv)) {
  112752. return pv;
  112753. }
  112754. if (!isRealNum(pv)) {
  112755. return formula_default.error.v;
  112756. }
  112757. pv = parseFloat(pv);
  112758. var start_period = func_methods_default.getFirstValue(arguments[3]);
  112759. if (valueIsError(start_period)) {
  112760. return start_period;
  112761. }
  112762. if (!isRealNum(start_period)) {
  112763. return formula_default.error.v;
  112764. }
  112765. start_period = parseInt(start_period);
  112766. var end_period = func_methods_default.getFirstValue(arguments[4]);
  112767. if (valueIsError(end_period)) {
  112768. return end_period;
  112769. }
  112770. if (!isRealNum(end_period)) {
  112771. return formula_default.error.v;
  112772. }
  112773. end_period = parseInt(end_period);
  112774. var type = func_methods_default.getFirstValue(arguments[5]);
  112775. if (valueIsError(type)) {
  112776. return type;
  112777. }
  112778. if (!isRealNum(type)) {
  112779. return formula_default.error.v;
  112780. }
  112781. type = parseFloat(type);
  112782. if (rate <= 0 || nper <= 0 || pv <= 0) {
  112783. return formula_default.error.nm;
  112784. }
  112785. if (start_period < 1 || end_period < 1 || start_period > end_period) {
  112786. return formula_default.error.nm;
  112787. }
  112788. if (type != 0 && type != 1) {
  112789. return formula_default.error.nm;
  112790. }
  112791. var payment = window.luckysheet_function.PMT.f(rate, nper, pv, 0, type);
  112792. var interest = 0;
  112793. if (start_period === 1) {
  112794. if (type === 0) {
  112795. interest = -pv;
  112796. start_period++;
  112797. }
  112798. }
  112799. for (var i2 = start_period; i2 <= end_period; i2++) {
  112800. if (type === 1) {
  112801. interest += window.luckysheet_function.FV.f(rate, i2 - 2, payment, pv, 1) - payment;
  112802. } else {
  112803. interest += window.luckysheet_function.FV.f(rate, i2 - 1, payment, pv, 0);
  112804. }
  112805. }
  112806. interest *= rate;
  112807. return interest;
  112808. } catch (e) {
  112809. var err = e;
  112810. err = formula_default.errorInfo(err);
  112811. return [formula_default.error.v, err];
  112812. }
  112813. },
  112814. "PMT": function() {
  112815. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  112816. return formula_default.error.na;
  112817. }
  112818. for (var i2 = 0; i2 < arguments.length; i2++) {
  112819. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  112820. if (!p[0]) {
  112821. return formula_default.error.v;
  112822. }
  112823. }
  112824. try {
  112825. var rate = func_methods_default.getFirstValue(arguments[0]);
  112826. if (valueIsError(rate)) {
  112827. return rate;
  112828. }
  112829. if (!isRealNum(rate)) {
  112830. return formula_default.error.v;
  112831. }
  112832. rate = parseFloat(rate);
  112833. var nper = func_methods_default.getFirstValue(arguments[1]);
  112834. if (valueIsError(nper)) {
  112835. return nper;
  112836. }
  112837. if (!isRealNum(nper)) {
  112838. return formula_default.error.v;
  112839. }
  112840. nper = parseFloat(nper);
  112841. var pv = func_methods_default.getFirstValue(arguments[2]);
  112842. if (valueIsError(pv)) {
  112843. return pv;
  112844. }
  112845. if (!isRealNum(pv)) {
  112846. return formula_default.error.v;
  112847. }
  112848. pv = parseFloat(pv);
  112849. var fv = 0;
  112850. if (arguments.length >= 4) {
  112851. fv = func_methods_default.getFirstValue(arguments[3]);
  112852. if (valueIsError(fv)) {
  112853. return fv;
  112854. }
  112855. if (!isRealNum(fv)) {
  112856. return formula_default.error.v;
  112857. }
  112858. fv = parseFloat(fv);
  112859. }
  112860. var type = 0;
  112861. if (arguments.length == 5) {
  112862. type = func_methods_default.getFirstValue(arguments[4]);
  112863. if (valueIsError(type)) {
  112864. return type;
  112865. }
  112866. if (!isRealNum(type)) {
  112867. return formula_default.error.v;
  112868. }
  112869. type = parseFloat(type);
  112870. }
  112871. if (type != 0 && type != 1) {
  112872. return formula_default.error.nm;
  112873. }
  112874. var result;
  112875. if (rate === 0) {
  112876. result = (pv + fv) / nper;
  112877. } else {
  112878. var term = Math.pow(1 + rate, nper);
  112879. if (type === 1) {
  112880. result = (fv * rate / (term - 1) + pv * rate / (1 - 1 / term)) / (1 + rate);
  112881. } else {
  112882. result = fv * rate / (term - 1) + pv * rate / (1 - 1 / term);
  112883. }
  112884. }
  112885. return -result;
  112886. } catch (e) {
  112887. var err = e;
  112888. err = formula_default.errorInfo(err);
  112889. return [formula_default.error.v, err];
  112890. }
  112891. },
  112892. "IPMT": function() {
  112893. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  112894. return formula_default.error.na;
  112895. }
  112896. for (var i2 = 0; i2 < arguments.length; i2++) {
  112897. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  112898. if (!p[0]) {
  112899. return formula_default.error.v;
  112900. }
  112901. }
  112902. try {
  112903. var rate = func_methods_default.getFirstValue(arguments[0]);
  112904. if (valueIsError(rate)) {
  112905. return rate;
  112906. }
  112907. if (!isRealNum(rate)) {
  112908. return formula_default.error.v;
  112909. }
  112910. rate = parseFloat(rate);
  112911. var per = func_methods_default.getFirstValue(arguments[1]);
  112912. if (valueIsError(per)) {
  112913. return per;
  112914. }
  112915. if (!isRealNum(per)) {
  112916. return formula_default.error.v;
  112917. }
  112918. per = parseFloat(per);
  112919. var nper = func_methods_default.getFirstValue(arguments[2]);
  112920. if (valueIsError(nper)) {
  112921. return nper;
  112922. }
  112923. if (!isRealNum(nper)) {
  112924. return formula_default.error.v;
  112925. }
  112926. nper = parseFloat(nper);
  112927. var pv = func_methods_default.getFirstValue(arguments[3]);
  112928. if (valueIsError(pv)) {
  112929. return pv;
  112930. }
  112931. if (!isRealNum(pv)) {
  112932. return formula_default.error.v;
  112933. }
  112934. pv = parseFloat(pv);
  112935. var fv = 0;
  112936. if (arguments.length >= 5) {
  112937. fv = func_methods_default.getFirstValue(arguments[4]);
  112938. if (valueIsError(fv)) {
  112939. return fv;
  112940. }
  112941. if (!isRealNum(fv)) {
  112942. return formula_default.error.v;
  112943. }
  112944. fv = parseFloat(fv);
  112945. }
  112946. var type = 0;
  112947. if (arguments.length >= 6) {
  112948. type = func_methods_default.getFirstValue(arguments[5]);
  112949. if (valueIsError(type)) {
  112950. return type;
  112951. }
  112952. if (!isRealNum(type)) {
  112953. return formula_default.error.v;
  112954. }
  112955. type = parseFloat(type);
  112956. }
  112957. if (per < 1 || per > nper) {
  112958. return formula_default.error.nm;
  112959. }
  112960. if (type != 0 && type != 1) {
  112961. return formula_default.error.nm;
  112962. }
  112963. var payment = window.luckysheet_function.PMT.f(rate, nper, pv, fv, type);
  112964. var interest;
  112965. if (per === 1) {
  112966. if (type === 1) {
  112967. interest = 0;
  112968. } else {
  112969. interest = -pv;
  112970. }
  112971. } else {
  112972. if (type === 1) {
  112973. interest = window.luckysheet_function.FV.f(rate, per - 2, payment, pv, 1) - payment;
  112974. } else {
  112975. interest = window.luckysheet_function.FV.f(rate, per - 1, payment, pv, 0);
  112976. }
  112977. }
  112978. var result = interest * rate;
  112979. return result;
  112980. } catch (e) {
  112981. var err = e;
  112982. err = formula_default.errorInfo(err);
  112983. return [formula_default.error.v, err];
  112984. }
  112985. },
  112986. "PPMT": function() {
  112987. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  112988. return formula_default.error.na;
  112989. }
  112990. for (var i2 = 0; i2 < arguments.length; i2++) {
  112991. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  112992. if (!p[0]) {
  112993. return formula_default.error.v;
  112994. }
  112995. }
  112996. try {
  112997. var rate = func_methods_default.getFirstValue(arguments[0]);
  112998. if (valueIsError(rate)) {
  112999. return rate;
  113000. }
  113001. if (!isRealNum(rate)) {
  113002. return formula_default.error.v;
  113003. }
  113004. rate = parseFloat(rate);
  113005. var per = func_methods_default.getFirstValue(arguments[1]);
  113006. if (valueIsError(per)) {
  113007. return per;
  113008. }
  113009. if (!isRealNum(per)) {
  113010. return formula_default.error.v;
  113011. }
  113012. per = parseFloat(per);
  113013. var nper = func_methods_default.getFirstValue(arguments[2]);
  113014. if (valueIsError(nper)) {
  113015. return nper;
  113016. }
  113017. if (!isRealNum(nper)) {
  113018. return formula_default.error.v;
  113019. }
  113020. nper = parseFloat(nper);
  113021. var pv = func_methods_default.getFirstValue(arguments[3]);
  113022. if (valueIsError(pv)) {
  113023. return pv;
  113024. }
  113025. if (!isRealNum(pv)) {
  113026. return formula_default.error.v;
  113027. }
  113028. pv = parseFloat(pv);
  113029. var fv = 0;
  113030. if (arguments.length >= 5) {
  113031. fv = func_methods_default.getFirstValue(arguments[4]);
  113032. if (valueIsError(fv)) {
  113033. return fv;
  113034. }
  113035. if (!isRealNum(fv)) {
  113036. return formula_default.error.v;
  113037. }
  113038. fv = parseFloat(fv);
  113039. }
  113040. var type = 0;
  113041. if (arguments.length >= 6) {
  113042. type = func_methods_default.getFirstValue(arguments[5]);
  113043. if (valueIsError(type)) {
  113044. return type;
  113045. }
  113046. if (!isRealNum(type)) {
  113047. return formula_default.error.v;
  113048. }
  113049. type = parseFloat(type);
  113050. }
  113051. if (per < 1 || per > nper) {
  113052. return formula_default.error.nm;
  113053. }
  113054. if (type != 0 && type != 1) {
  113055. return formula_default.error.nm;
  113056. }
  113057. var payment = window.luckysheet_function.PMT.f(rate, nper, pv, fv, type);
  113058. var payment2 = window.luckysheet_function.IPMT.f(rate, per, nper, pv, fv, type);
  113059. return payment - payment2;
  113060. } catch (e) {
  113061. var err = e;
  113062. err = formula_default.errorInfo(err);
  113063. return [formula_default.error.v, err];
  113064. }
  113065. },
  113066. "INTRATE": function() {
  113067. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  113068. return formula_default.error.na;
  113069. }
  113070. for (var i2 = 0; i2 < arguments.length; i2++) {
  113071. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  113072. if (!p[0]) {
  113073. return formula_default.error.v;
  113074. }
  113075. }
  113076. try {
  113077. var settlement = func_methods_default.getCellDate(arguments[0]);
  113078. if (valueIsError(settlement)) {
  113079. return settlement;
  113080. }
  113081. if (!(0, import_dayjs8.default)(settlement).isValid()) {
  113082. return formula_default.error.v;
  113083. }
  113084. var maturity = func_methods_default.getCellDate(arguments[1]);
  113085. if (valueIsError(maturity)) {
  113086. return maturity;
  113087. }
  113088. if (!(0, import_dayjs8.default)(maturity).isValid()) {
  113089. return formula_default.error.v;
  113090. }
  113091. var investment = func_methods_default.getFirstValue(arguments[2]);
  113092. if (valueIsError(investment)) {
  113093. return investment;
  113094. }
  113095. if (!isRealNum(investment)) {
  113096. return formula_default.error.v;
  113097. }
  113098. investment = parseFloat(investment);
  113099. var redemption = func_methods_default.getFirstValue(arguments[3]);
  113100. if (valueIsError(redemption)) {
  113101. return redemption;
  113102. }
  113103. if (!isRealNum(redemption)) {
  113104. return formula_default.error.v;
  113105. }
  113106. redemption = parseFloat(redemption);
  113107. var basis = 0;
  113108. if (arguments.length == 5) {
  113109. basis = func_methods_default.getFirstValue(arguments[4]);
  113110. if (valueIsError(basis)) {
  113111. return basis;
  113112. }
  113113. if (!isRealNum(basis)) {
  113114. return formula_default.error.v;
  113115. }
  113116. basis = parseInt(basis);
  113117. }
  113118. if (investment <= 0 || redemption <= 0) {
  113119. return formula_default.error.nm;
  113120. }
  113121. if (basis < 0 || basis > 4) {
  113122. return formula_default.error.nm;
  113123. }
  113124. if ((0, import_dayjs8.default)(settlement) - (0, import_dayjs8.default)(maturity) >= 0) {
  113125. return formula_default.error.nm;
  113126. }
  113127. var sd = (0, import_dayjs8.default)(settlement).date();
  113128. var sm = (0, import_dayjs8.default)(settlement).month() + 1;
  113129. var sy = (0, import_dayjs8.default)(settlement).year();
  113130. var ed = (0, import_dayjs8.default)(maturity).date();
  113131. var em = (0, import_dayjs8.default)(maturity).month() + 1;
  113132. var ey = (0, import_dayjs8.default)(maturity).year();
  113133. var result;
  113134. switch (basis) {
  113135. case 0:
  113136. if (sd === 31 && ed === 31) {
  113137. sd = 30;
  113138. ed = 30;
  113139. } else if (sd === 31) {
  113140. sd = 30;
  113141. } else if (sd === 30 && ed === 31) {
  113142. ed = 30;
  113143. }
  113144. result = 360 / (ed + em * 30 + ey * 360 - (sd + sm * 30 + sy * 360));
  113145. break;
  113146. case 1:
  113147. var ylength = 365;
  113148. if (sy === ey || sy + 1 === ey && (sm > em || sm === em && sd >= ed)) {
  113149. if (sy === ey && func_methods_default.isLeapYear(sy) || func_methods_default.feb29Between(settlement, maturity) || em === 1 && ed === 29) {
  113150. ylength = 366;
  113151. }
  113152. result = ylength / (0, import_dayjs8.default)(maturity).diff((0, import_dayjs8.default)(settlement), "days");
  113153. result = (redemption - investment) / investment * result;
  113154. return result;
  113155. }
  113156. var years = ey - sy + 1;
  113157. var days = ((0, import_dayjs8.default)().set({"year": ey + 1, "month": 0, "date": 1}) - (0, import_dayjs8.default)().set({"year": sy, "month": 0, "date": 1})) / 1e3 / 60 / 60 / 24;
  113158. var average = days / years;
  113159. result = average / (0, import_dayjs8.default)(maturity).diff((0, import_dayjs8.default)(settlement), "days");
  113160. break;
  113161. case 2:
  113162. result = 360 / (0, import_dayjs8.default)(maturity).diff((0, import_dayjs8.default)(settlement), "days");
  113163. break;
  113164. case 3:
  113165. result = 365 / (0, import_dayjs8.default)(maturity).diff((0, import_dayjs8.default)(settlement), "days");
  113166. break;
  113167. case 4:
  113168. result = 360 / (ed + em * 30 + ey * 360 - (sd + sm * 30 + sy * 360));
  113169. break;
  113170. }
  113171. result = (redemption - investment) / investment * result;
  113172. return result;
  113173. } catch (e) {
  113174. var err = e;
  113175. err = formula_default.errorInfo(err);
  113176. return [formula_default.error.v, err];
  113177. }
  113178. },
  113179. "PRICE": function() {
  113180. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  113181. return formula_default.error.na;
  113182. }
  113183. for (var i2 = 0; i2 < arguments.length; i2++) {
  113184. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  113185. if (!p[0]) {
  113186. return formula_default.error.v;
  113187. }
  113188. }
  113189. try {
  113190. var settlement = func_methods_default.getCellDate(arguments[0]);
  113191. if (valueIsError(settlement)) {
  113192. return settlement;
  113193. }
  113194. if (!(0, import_dayjs8.default)(settlement).isValid()) {
  113195. return formula_default.error.v;
  113196. }
  113197. var maturity = func_methods_default.getCellDate(arguments[1]);
  113198. if (valueIsError(maturity)) {
  113199. return maturity;
  113200. }
  113201. if (!(0, import_dayjs8.default)(maturity).isValid()) {
  113202. return formula_default.error.v;
  113203. }
  113204. var rate = func_methods_default.getFirstValue(arguments[2]);
  113205. if (valueIsError(rate)) {
  113206. return rate;
  113207. }
  113208. if (!isRealNum(rate)) {
  113209. return formula_default.error.v;
  113210. }
  113211. rate = parseFloat(rate);
  113212. var yld = func_methods_default.getFirstValue(arguments[3]);
  113213. if (valueIsError(yld)) {
  113214. return yld;
  113215. }
  113216. if (!isRealNum(yld)) {
  113217. return formula_default.error.v;
  113218. }
  113219. yld = parseFloat(yld);
  113220. var redemption = func_methods_default.getFirstValue(arguments[4]);
  113221. if (valueIsError(redemption)) {
  113222. return redemption;
  113223. }
  113224. if (!isRealNum(redemption)) {
  113225. return formula_default.error.v;
  113226. }
  113227. redemption = parseFloat(redemption);
  113228. var frequency = func_methods_default.getFirstValue(arguments[5]);
  113229. if (valueIsError(frequency)) {
  113230. return frequency;
  113231. }
  113232. if (!isRealNum(frequency)) {
  113233. return formula_default.error.v;
  113234. }
  113235. frequency = parseInt(frequency);
  113236. var basis = 0;
  113237. if (arguments.length == 7) {
  113238. basis = func_methods_default.getFirstValue(arguments[6]);
  113239. if (valueIsError(basis)) {
  113240. return basis;
  113241. }
  113242. if (!isRealNum(basis)) {
  113243. return formula_default.error.v;
  113244. }
  113245. basis = parseInt(basis);
  113246. }
  113247. if (rate < 0 || yld < 0) {
  113248. return formula_default.error.nm;
  113249. }
  113250. if (redemption <= 0) {
  113251. return formula_default.error.nm;
  113252. }
  113253. if (frequency != 1 && frequency != 2 && frequency != 4) {
  113254. return formula_default.error.nm;
  113255. }
  113256. if (basis < 0 || basis > 4) {
  113257. return formula_default.error.nm;
  113258. }
  113259. if ((0, import_dayjs8.default)(settlement) - (0, import_dayjs8.default)(maturity) >= 0) {
  113260. return formula_default.error.nm;
  113261. }
  113262. var DSC = window.luckysheet_function.COUPDAYSNC.f(settlement, maturity, frequency, basis);
  113263. var E = window.luckysheet_function.COUPDAYS.f(settlement, maturity, frequency, basis);
  113264. var A = window.luckysheet_function.COUPDAYBS.f(settlement, maturity, frequency, basis);
  113265. var num = window.luckysheet_function.COUPNUM.f(settlement, maturity, frequency, basis);
  113266. if (num > 1) {
  113267. var T1 = redemption / Math.pow(1 + yld / frequency, num - 1 + DSC / E);
  113268. var T2 = 0;
  113269. for (var i2 = 1; i2 <= num; i2++) {
  113270. T2 += 100 * rate / frequency / Math.pow(1 + yld / frequency, i2 - 1 + DSC / E);
  113271. }
  113272. var T3 = 100 * (rate / frequency) * (A / E);
  113273. var result = T1 + T2 - T3;
  113274. } else {
  113275. var DSR = E - A;
  113276. var T1 = 100 * (rate / frequency) + redemption;
  113277. var T2 = yld / frequency * (DSR / E) + 1;
  113278. var T3 = 100 * (rate / frequency) * (A / E);
  113279. var result = T1 / T2 - T3;
  113280. }
  113281. return result;
  113282. } catch (e) {
  113283. var err = e;
  113284. err = formula_default.errorInfo(err);
  113285. return [formula_default.error.v, err];
  113286. }
  113287. },
  113288. "PRICEDISC": function() {
  113289. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  113290. return formula_default.error.na;
  113291. }
  113292. for (var i2 = 0; i2 < arguments.length; i2++) {
  113293. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  113294. if (!p[0]) {
  113295. return formula_default.error.v;
  113296. }
  113297. }
  113298. try {
  113299. var settlement = func_methods_default.getCellDate(arguments[0]);
  113300. if (valueIsError(settlement)) {
  113301. return settlement;
  113302. }
  113303. if (!(0, import_dayjs8.default)(settlement).isValid()) {
  113304. return formula_default.error.v;
  113305. }
  113306. var maturity = func_methods_default.getCellDate(arguments[1]);
  113307. if (valueIsError(maturity)) {
  113308. return maturity;
  113309. }
  113310. if (!(0, import_dayjs8.default)(maturity).isValid()) {
  113311. return formula_default.error.v;
  113312. }
  113313. var discount = func_methods_default.getFirstValue(arguments[2]);
  113314. if (valueIsError(discount)) {
  113315. return discount;
  113316. }
  113317. if (!isRealNum(discount)) {
  113318. return formula_default.error.v;
  113319. }
  113320. discount = parseFloat(discount);
  113321. var redemption = func_methods_default.getFirstValue(arguments[3]);
  113322. if (valueIsError(redemption)) {
  113323. return redemption;
  113324. }
  113325. if (!isRealNum(redemption)) {
  113326. return formula_default.error.v;
  113327. }
  113328. redemption = parseFloat(redemption);
  113329. var basis = 0;
  113330. if (arguments.length == 5) {
  113331. basis = func_methods_default.getFirstValue(arguments[4]);
  113332. if (valueIsError(basis)) {
  113333. return basis;
  113334. }
  113335. if (!isRealNum(basis)) {
  113336. return formula_default.error.v;
  113337. }
  113338. basis = parseInt(basis);
  113339. }
  113340. if (discount <= 0 || redemption <= 0) {
  113341. return formula_default.error.nm;
  113342. }
  113343. if (basis < 0 || basis > 4) {
  113344. return formula_default.error.nm;
  113345. }
  113346. if ((0, import_dayjs8.default)(settlement) - (0, import_dayjs8.default)(maturity) >= 0) {
  113347. return formula_default.error.nm;
  113348. }
  113349. var sd = (0, import_dayjs8.default)(settlement).date();
  113350. var sm = (0, import_dayjs8.default)(settlement).month() + 1;
  113351. var sy = (0, import_dayjs8.default)(settlement).year();
  113352. var ed = (0, import_dayjs8.default)(maturity).date();
  113353. var em = (0, import_dayjs8.default)(maturity).month() + 1;
  113354. var ey = (0, import_dayjs8.default)(maturity).year();
  113355. var result;
  113356. switch (basis) {
  113357. case 0:
  113358. if (sd === 31 && ed === 31) {
  113359. sd = 30;
  113360. ed = 30;
  113361. } else if (sd === 31) {
  113362. sd = 30;
  113363. } else if (sd === 30 && ed === 31) {
  113364. ed = 30;
  113365. }
  113366. result = (ed + em * 30 + ey * 360 - (sd + sm * 30 + sy * 360)) / 360;
  113367. break;
  113368. case 1:
  113369. var ylength = 365;
  113370. if (sy === ey || sy + 1 === ey && (sm > em || sm === em && sd >= ed)) {
  113371. if (sy === ey && func_methods_default.isLeapYear(sy) || func_methods_default.feb29Between(settlement, maturity) || em === 1 && ed === 29) {
  113372. ylength = 366;
  113373. }
  113374. result = (0, import_dayjs8.default)(maturity).diff((0, import_dayjs8.default)(settlement), "days") / ylength;
  113375. result = redemption - discount * redemption * result;
  113376. return result;
  113377. }
  113378. var years = ey - sy + 1;
  113379. var days = ((0, import_dayjs8.default)().set({"year": ey + 1, "month": 0, "date": 1}) - (0, import_dayjs8.default)().set({"year": sy, "month": 0, "date": 1})) / 1e3 / 60 / 60 / 24;
  113380. var average = days / years;
  113381. result = (0, import_dayjs8.default)(maturity).diff((0, import_dayjs8.default)(settlement), "days") / average;
  113382. break;
  113383. case 2:
  113384. result = (0, import_dayjs8.default)(maturity).diff((0, import_dayjs8.default)(settlement), "days") / 360;
  113385. break;
  113386. case 3:
  113387. result = (0, import_dayjs8.default)(maturity).diff((0, import_dayjs8.default)(settlement), "days") / 365;
  113388. break;
  113389. case 4:
  113390. result = (ed + em * 30 + ey * 360 - (sd + sm * 30 + sy * 360)) / 360;
  113391. break;
  113392. }
  113393. result = redemption - discount * redemption * result;
  113394. return result;
  113395. } catch (e) {
  113396. var err = e;
  113397. err = formula_default.errorInfo(err);
  113398. return [formula_default.error.v, err];
  113399. }
  113400. },
  113401. "PRICEMAT": function() {
  113402. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  113403. return formula_default.error.na;
  113404. }
  113405. for (var i2 = 0; i2 < arguments.length; i2++) {
  113406. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  113407. if (!p[0]) {
  113408. return formula_default.error.v;
  113409. }
  113410. }
  113411. try {
  113412. var settlement = func_methods_default.getCellDate(arguments[0]);
  113413. if (valueIsError(settlement)) {
  113414. return settlement;
  113415. }
  113416. if (!(0, import_dayjs8.default)(settlement).isValid()) {
  113417. return formula_default.error.v;
  113418. }
  113419. var maturity = func_methods_default.getCellDate(arguments[1]);
  113420. if (valueIsError(maturity)) {
  113421. return maturity;
  113422. }
  113423. if (!(0, import_dayjs8.default)(maturity).isValid()) {
  113424. return formula_default.error.v;
  113425. }
  113426. var issue = func_methods_default.getCellDate(arguments[2]);
  113427. if (valueIsError(issue)) {
  113428. return issue;
  113429. }
  113430. if (!(0, import_dayjs8.default)(issue).isValid()) {
  113431. return formula_default.error.v;
  113432. }
  113433. var rate = func_methods_default.getFirstValue(arguments[3]);
  113434. if (valueIsError(rate)) {
  113435. return rate;
  113436. }
  113437. if (!isRealNum(rate)) {
  113438. return formula_default.error.v;
  113439. }
  113440. rate = parseFloat(rate);
  113441. var yld = func_methods_default.getFirstValue(arguments[4]);
  113442. if (valueIsError(yld)) {
  113443. return yld;
  113444. }
  113445. if (!isRealNum(yld)) {
  113446. return formula_default.error.v;
  113447. }
  113448. yld = parseFloat(yld);
  113449. var basis = 0;
  113450. if (arguments.length == 6) {
  113451. basis = func_methods_default.getFirstValue(arguments[5]);
  113452. if (valueIsError(basis)) {
  113453. return basis;
  113454. }
  113455. if (!isRealNum(basis)) {
  113456. return formula_default.error.v;
  113457. }
  113458. basis = parseInt(basis);
  113459. }
  113460. if (rate < 0 || yld < 0) {
  113461. return formula_default.error.nm;
  113462. }
  113463. if (basis < 0 || basis > 4) {
  113464. return formula_default.error.nm;
  113465. }
  113466. if ((0, import_dayjs8.default)(settlement) - (0, import_dayjs8.default)(maturity) >= 0) {
  113467. return formula_default.error.nm;
  113468. }
  113469. var sd = (0, import_dayjs8.default)(settlement).date();
  113470. var sm = (0, import_dayjs8.default)(settlement).month() + 1;
  113471. var sy = (0, import_dayjs8.default)(settlement).year();
  113472. var ed = (0, import_dayjs8.default)(maturity).date();
  113473. var em = (0, import_dayjs8.default)(maturity).month() + 1;
  113474. var ey = (0, import_dayjs8.default)(maturity).year();
  113475. var td = (0, import_dayjs8.default)(issue).date();
  113476. var tm = (0, import_dayjs8.default)(issue).month() + 1;
  113477. var ty = (0, import_dayjs8.default)(issue).year();
  113478. var result;
  113479. switch (basis) {
  113480. case 0:
  113481. if (sd == 31) {
  113482. sd = 30;
  113483. }
  113484. if (ed == 31) {
  113485. ed = 30;
  113486. }
  113487. if (td == 31) {
  113488. td = 30;
  113489. }
  113490. var B = 360;
  113491. var DSM = ed + em * 30 + ey * 360 - (sd + sm * 30 + sy * 360);
  113492. var DIM = ed + em * 30 + ey * 360 - (td + tm * 30 + ty * 360);
  113493. var A = sd + sm * 30 + sy * 360 - (td + tm * 30 + ty * 360);
  113494. break;
  113495. case 1:
  113496. var ylength = 365;
  113497. if (sy === ey || sy + 1 === ey && (sm > em || sm === em && sd >= ed)) {
  113498. if (sy === ey && func_methods_default.isLeapYear(sy) || func_methods_default.feb29Between(settlement, maturity) || em === 1 && ed === 29) {
  113499. ylength = 366;
  113500. }
  113501. var B = ylength;
  113502. var DSM = (0, import_dayjs8.default)(maturity).diff((0, import_dayjs8.default)(settlement), "days");
  113503. var DIM = (0, import_dayjs8.default)(settlement).diff((0, import_dayjs8.default)(issue), "days");
  113504. var A = (0, import_dayjs8.default)(maturity).diff((0, import_dayjs8.default)(issue), "days");
  113505. result = (100 + DIM / B * rate * 100) / (1 + DSM / B * yld) - A / B * rate * 100;
  113506. return result;
  113507. }
  113508. var years = ey - sy + 1;
  113509. var days = ((0, import_dayjs8.default)().set({"year": ey + 1, "month": 0, "date": 1}) - (0, import_dayjs8.default)().set({"year": sy, "month": 0, "date": 1})) / 1e3 / 60 / 60 / 24;
  113510. var average = days / years;
  113511. var B = average;
  113512. var DSM = (0, import_dayjs8.default)(maturity).diff((0, import_dayjs8.default)(settlement), "days");
  113513. var DIM = (0, import_dayjs8.default)(settlement).diff((0, import_dayjs8.default)(issue), "days");
  113514. var A = (0, import_dayjs8.default)(maturity).diff((0, import_dayjs8.default)(issue), "days");
  113515. break;
  113516. case 2:
  113517. var B = 360;
  113518. var DSM = (0, import_dayjs8.default)(maturity).diff((0, import_dayjs8.default)(settlement), "days");
  113519. var DIM = (0, import_dayjs8.default)(settlement).diff((0, import_dayjs8.default)(issue), "days");
  113520. var A = (0, import_dayjs8.default)(maturity).diff((0, import_dayjs8.default)(issue), "days");
  113521. break;
  113522. case 3:
  113523. var B = 365;
  113524. var DSM = (0, import_dayjs8.default)(maturity).diff((0, import_dayjs8.default)(settlement), "days");
  113525. var DIM = (0, import_dayjs8.default)(settlement).diff((0, import_dayjs8.default)(issue), "days");
  113526. var A = (0, import_dayjs8.default)(maturity).diff((0, import_dayjs8.default)(issue), "days");
  113527. break;
  113528. case 4:
  113529. var B = 360;
  113530. var DSM = ed + em * 30 + ey * 360 - (sd + sm * 30 + sy * 360);
  113531. var DIM = ed + em * 30 + ey * 360 - (td + tm * 30 + ty * 360);
  113532. var A = sd + sm * 30 + sy * 360 - (td + tm * 30 + ty * 360);
  113533. break;
  113534. }
  113535. result = (100 + DIM / B * rate * 100) / (1 + DSM / B * yld) - A / B * rate * 100;
  113536. return result;
  113537. } catch (e) {
  113538. var err = e;
  113539. err = formula_default.errorInfo(err);
  113540. return [formula_default.error.v, err];
  113541. }
  113542. },
  113543. "RECEIVED": function() {
  113544. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  113545. return formula_default.error.na;
  113546. }
  113547. for (var i2 = 0; i2 < arguments.length; i2++) {
  113548. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  113549. if (!p[0]) {
  113550. return formula_default.error.v;
  113551. }
  113552. }
  113553. try {
  113554. var settlement = func_methods_default.getCellDate(arguments[0]);
  113555. if (valueIsError(settlement)) {
  113556. return settlement;
  113557. }
  113558. if (!(0, import_dayjs8.default)(settlement).isValid()) {
  113559. return formula_default.error.v;
  113560. }
  113561. var maturity = func_methods_default.getCellDate(arguments[1]);
  113562. if (valueIsError(maturity)) {
  113563. return maturity;
  113564. }
  113565. if (!(0, import_dayjs8.default)(maturity).isValid()) {
  113566. return formula_default.error.v;
  113567. }
  113568. var investment = func_methods_default.getFirstValue(arguments[2]);
  113569. if (valueIsError(investment)) {
  113570. return investment;
  113571. }
  113572. if (!isRealNum(investment)) {
  113573. return formula_default.error.v;
  113574. }
  113575. investment = parseFloat(investment);
  113576. var discount = func_methods_default.getFirstValue(arguments[3]);
  113577. if (valueIsError(discount)) {
  113578. return discount;
  113579. }
  113580. if (!isRealNum(discount)) {
  113581. return formula_default.error.v;
  113582. }
  113583. discount = parseFloat(discount);
  113584. var basis = 0;
  113585. if (arguments.length == 5) {
  113586. basis = func_methods_default.getFirstValue(arguments[4]);
  113587. if (valueIsError(basis)) {
  113588. return basis;
  113589. }
  113590. if (!isRealNum(basis)) {
  113591. return formula_default.error.v;
  113592. }
  113593. basis = parseFloat(basis);
  113594. }
  113595. if (investment <= 0 || discount <= 0) {
  113596. return formula_default.error.nm;
  113597. }
  113598. if (basis < 0 || basis > 4) {
  113599. return formula_default.error.nm;
  113600. }
  113601. if ((0, import_dayjs8.default)(settlement) - (0, import_dayjs8.default)(maturity) >= 0) {
  113602. return formula_default.error.nm;
  113603. }
  113604. var sd = (0, import_dayjs8.default)(settlement).date();
  113605. var sm = (0, import_dayjs8.default)(settlement).month() + 1;
  113606. var sy = (0, import_dayjs8.default)(settlement).year();
  113607. var ed = (0, import_dayjs8.default)(maturity).date();
  113608. var em = (0, import_dayjs8.default)(maturity).month() + 1;
  113609. var ey = (0, import_dayjs8.default)(maturity).year();
  113610. var result;
  113611. switch (basis) {
  113612. case 0:
  113613. if (sd == 31) {
  113614. sd = 30;
  113615. }
  113616. if (ed == 31) {
  113617. ed = 30;
  113618. }
  113619. var B = 360;
  113620. var DIM = ed + em * 30 + ey * 360 - (sd + sm * 30 + sy * 360);
  113621. break;
  113622. case 1:
  113623. var ylength = 365;
  113624. if (sy === ey || sy + 1 === ey && (sm > em || sm === em && sd >= ed)) {
  113625. if (sy === ey && func_methods_default.isLeapYear(sy) || func_methods_default.feb29Between(settlement, maturity) || em === 1 && ed === 29) {
  113626. ylength = 366;
  113627. }
  113628. var B = ylength;
  113629. var DIM = (0, import_dayjs8.default)(maturity).diff((0, import_dayjs8.default)(settlement), "days");
  113630. result = investment / (1 - discount * DIM / B);
  113631. return result;
  113632. }
  113633. var years = ey - sy + 1;
  113634. var days = ((0, import_dayjs8.default)().set({"year": ey + 1, "month": 0, "date": 1}) - (0, import_dayjs8.default)().set({"year": sy, "month": 0, "date": 1})) / 1e3 / 60 / 60 / 24;
  113635. var average = days / years;
  113636. var B = average;
  113637. var DIM = (0, import_dayjs8.default)(maturity).diff((0, import_dayjs8.default)(settlement), "days");
  113638. break;
  113639. case 2:
  113640. var B = 360;
  113641. var DIM = (0, import_dayjs8.default)(maturity).diff((0, import_dayjs8.default)(settlement), "days");
  113642. break;
  113643. case 3:
  113644. var B = 365;
  113645. var DIM = (0, import_dayjs8.default)(maturity).diff((0, import_dayjs8.default)(settlement), "days");
  113646. break;
  113647. case 4:
  113648. var B = 360;
  113649. var DIM = ed + em * 30 + ey * 360 - (sd + sm * 30 + sy * 360);
  113650. break;
  113651. }
  113652. result = investment / (1 - discount * DIM / B);
  113653. return result;
  113654. } catch (e) {
  113655. var err = e;
  113656. err = formula_default.errorInfo(err);
  113657. return [formula_default.error.v, err];
  113658. }
  113659. },
  113660. "DISC": function() {
  113661. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  113662. return formula_default.error.na;
  113663. }
  113664. for (var i2 = 0; i2 < arguments.length; i2++) {
  113665. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  113666. if (!p[0]) {
  113667. return formula_default.error.v;
  113668. }
  113669. }
  113670. try {
  113671. var settlement = func_methods_default.getCellDate(arguments[0]);
  113672. if (valueIsError(settlement)) {
  113673. return settlement;
  113674. }
  113675. if (!(0, import_dayjs8.default)(settlement).isValid()) {
  113676. return formula_default.error.v;
  113677. }
  113678. var maturity = func_methods_default.getCellDate(arguments[1]);
  113679. if (valueIsError(maturity)) {
  113680. return maturity;
  113681. }
  113682. if (!(0, import_dayjs8.default)(maturity).isValid()) {
  113683. return formula_default.error.v;
  113684. }
  113685. var pr = func_methods_default.getFirstValue(arguments[2]);
  113686. if (valueIsError(pr)) {
  113687. return pr;
  113688. }
  113689. if (!isRealNum(pr)) {
  113690. return formula_default.error.v;
  113691. }
  113692. pr = parseFloat(pr);
  113693. var redemption = func_methods_default.getFirstValue(arguments[3]);
  113694. if (valueIsError(redemption)) {
  113695. return redemption;
  113696. }
  113697. if (!isRealNum(redemption)) {
  113698. return formula_default.error.v;
  113699. }
  113700. redemption = parseFloat(redemption);
  113701. var basis = 0;
  113702. if (arguments.length == 5) {
  113703. basis = func_methods_default.getFirstValue(arguments[4]);
  113704. if (valueIsError(basis)) {
  113705. return basis;
  113706. }
  113707. if (!isRealNum(basis)) {
  113708. return formula_default.error.v;
  113709. }
  113710. basis = parseFloat(basis);
  113711. }
  113712. if (pr <= 0 || redemption <= 0) {
  113713. return formula_default.error.nm;
  113714. }
  113715. if (basis < 0 || basis > 4) {
  113716. return formula_default.error.nm;
  113717. }
  113718. if ((0, import_dayjs8.default)(settlement) - (0, import_dayjs8.default)(maturity) >= 0) {
  113719. return formula_default.error.nm;
  113720. }
  113721. var sd = (0, import_dayjs8.default)(settlement).date();
  113722. var sm = (0, import_dayjs8.default)(settlement).month() + 1;
  113723. var sy = (0, import_dayjs8.default)(settlement).year();
  113724. var ed = (0, import_dayjs8.default)(maturity).date();
  113725. var em = (0, import_dayjs8.default)(maturity).month() + 1;
  113726. var ey = (0, import_dayjs8.default)(maturity).year();
  113727. var result;
  113728. switch (basis) {
  113729. case 0:
  113730. if (sd == 31) {
  113731. sd = 30;
  113732. }
  113733. if (ed == 31) {
  113734. ed = 30;
  113735. }
  113736. var B = 360;
  113737. var DSM = ed + em * 30 + ey * 360 - (sd + sm * 30 + sy * 360);
  113738. break;
  113739. case 1:
  113740. var ylength = 365;
  113741. if (sy === ey || sy + 1 === ey && (sm > em || sm === em && sd >= ed)) {
  113742. if (sy === ey && func_methods_default.isLeapYear(sy) || func_methods_default.feb29Between(settlement, maturity) || em === 1 && ed === 29) {
  113743. ylength = 366;
  113744. }
  113745. var B = ylength;
  113746. var DSM = (0, import_dayjs8.default)(maturity).diff((0, import_dayjs8.default)(settlement), "days");
  113747. result = (redemption - pr) / redemption * (B / DSM);
  113748. return result;
  113749. }
  113750. var years = ey - sy + 1;
  113751. var days = ((0, import_dayjs8.default)().set({"year": ey + 1, "month": 0, "date": 1}) - (0, import_dayjs8.default)().set({"year": sy, "month": 0, "date": 1})) / 1e3 / 60 / 60 / 24;
  113752. var average = days / years;
  113753. var B = average;
  113754. var DSM = (0, import_dayjs8.default)(maturity).diff((0, import_dayjs8.default)(settlement), "days");
  113755. break;
  113756. case 2:
  113757. var B = 360;
  113758. var DSM = (0, import_dayjs8.default)(maturity).diff((0, import_dayjs8.default)(settlement), "days");
  113759. break;
  113760. case 3:
  113761. var B = 365;
  113762. var DSM = (0, import_dayjs8.default)(maturity).diff((0, import_dayjs8.default)(settlement), "days");
  113763. break;
  113764. case 4:
  113765. var B = 360;
  113766. var DSM = ed + em * 30 + ey * 360 - (sd + sm * 30 + sy * 360);
  113767. break;
  113768. }
  113769. result = (redemption - pr) / redemption * (B / DSM);
  113770. return result;
  113771. } catch (e) {
  113772. var err = e;
  113773. err = formula_default.errorInfo(err);
  113774. return [formula_default.error.v, err];
  113775. }
  113776. },
  113777. "NPER": function() {
  113778. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  113779. return formula_default.error.na;
  113780. }
  113781. for (var i2 = 0; i2 < arguments.length; i2++) {
  113782. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  113783. if (!p[0]) {
  113784. return formula_default.error.v;
  113785. }
  113786. }
  113787. try {
  113788. var rate = func_methods_default.getFirstValue(arguments[0]);
  113789. if (valueIsError(rate)) {
  113790. return rate;
  113791. }
  113792. if (!isRealNum(rate)) {
  113793. return formula_default.error.v;
  113794. }
  113795. rate = parseFloat(rate);
  113796. var pmt = func_methods_default.getFirstValue(arguments[1]);
  113797. if (valueIsError(pmt)) {
  113798. return pmt;
  113799. }
  113800. if (!isRealNum(pmt)) {
  113801. return formula_default.error.v;
  113802. }
  113803. pmt = parseFloat(pmt);
  113804. var pv = func_methods_default.getFirstValue(arguments[2]);
  113805. if (valueIsError(pv)) {
  113806. return pv;
  113807. }
  113808. if (!isRealNum(pv)) {
  113809. return formula_default.error.v;
  113810. }
  113811. pv = parseFloat(pv);
  113812. var fv = 0;
  113813. if (arguments.length >= 4) {
  113814. fv = func_methods_default.getFirstValue(arguments[3]);
  113815. if (valueIsError(fv)) {
  113816. return fv;
  113817. }
  113818. if (!isRealNum(fv)) {
  113819. return formula_default.error.v;
  113820. }
  113821. fv = parseFloat(fv);
  113822. }
  113823. var type = 0;
  113824. if (arguments.length >= 5) {
  113825. type = func_methods_default.getFirstValue(arguments[4]);
  113826. if (valueIsError(type)) {
  113827. return type;
  113828. }
  113829. if (!isRealNum(type)) {
  113830. return formula_default.error.v;
  113831. }
  113832. type = parseFloat(type);
  113833. }
  113834. if (type != 0 && type != 1) {
  113835. return formula_default.error.nm;
  113836. }
  113837. var num = pmt * (1 + rate * type) - fv * rate;
  113838. var den = pv * rate + pmt * (1 + rate * type);
  113839. return Math.log(num / den) / Math.log(1 + rate);
  113840. } catch (e) {
  113841. var err = e;
  113842. err = formula_default.errorInfo(err);
  113843. return [formula_default.error.v, err];
  113844. }
  113845. },
  113846. "SLN": function() {
  113847. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  113848. return formula_default.error.na;
  113849. }
  113850. for (var i2 = 0; i2 < arguments.length; i2++) {
  113851. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  113852. if (!p[0]) {
  113853. return formula_default.error.v;
  113854. }
  113855. }
  113856. try {
  113857. var cost = func_methods_default.getFirstValue(arguments[0]);
  113858. if (valueIsError(cost)) {
  113859. return cost;
  113860. }
  113861. if (!isRealNum(cost)) {
  113862. return formula_default.error.v;
  113863. }
  113864. cost = parseFloat(cost);
  113865. var salvage = func_methods_default.getFirstValue(arguments[1]);
  113866. if (valueIsError(salvage)) {
  113867. return salvage;
  113868. }
  113869. if (!isRealNum(salvage)) {
  113870. return formula_default.error.v;
  113871. }
  113872. salvage = parseFloat(salvage);
  113873. var life = func_methods_default.getFirstValue(arguments[2]);
  113874. if (valueIsError(life)) {
  113875. return life;
  113876. }
  113877. if (!isRealNum(life)) {
  113878. return formula_default.error.v;
  113879. }
  113880. life = parseFloat(life);
  113881. if (life == 0) {
  113882. return formula_default.error.d;
  113883. }
  113884. return (cost - salvage) / life;
  113885. } catch (e) {
  113886. var err = e;
  113887. err = formula_default.errorInfo(err);
  113888. return [formula_default.error.v, err];
  113889. }
  113890. },
  113891. "DURATION": function() {
  113892. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  113893. return formula_default.error.na;
  113894. }
  113895. for (var i2 = 0; i2 < arguments.length; i2++) {
  113896. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  113897. if (!p[0]) {
  113898. return formula_default.error.v;
  113899. }
  113900. }
  113901. try {
  113902. var settlement = func_methods_default.getCellDate(arguments[0]);
  113903. if (valueIsError(settlement)) {
  113904. return settlement;
  113905. }
  113906. if (!(0, import_dayjs8.default)(settlement).isValid()) {
  113907. return formula_default.error.v;
  113908. }
  113909. var maturity = func_methods_default.getCellDate(arguments[1]);
  113910. if (valueIsError(maturity)) {
  113911. return maturity;
  113912. }
  113913. if (!(0, import_dayjs8.default)(maturity).isValid()) {
  113914. return formula_default.error.v;
  113915. }
  113916. var coupon = func_methods_default.getFirstValue(arguments[2]);
  113917. if (valueIsError(coupon)) {
  113918. return coupon;
  113919. }
  113920. if (!isRealNum(coupon)) {
  113921. return formula_default.error.v;
  113922. }
  113923. coupon = parseFloat(coupon);
  113924. var yld = func_methods_default.getFirstValue(arguments[3]);
  113925. if (valueIsError(yld)) {
  113926. return yld;
  113927. }
  113928. if (!isRealNum(yld)) {
  113929. return formula_default.error.v;
  113930. }
  113931. yld = parseFloat(yld);
  113932. var frequency = func_methods_default.getFirstValue(arguments[4]);
  113933. if (valueIsError(frequency)) {
  113934. return frequency;
  113935. }
  113936. if (!isRealNum(frequency)) {
  113937. return formula_default.error.v;
  113938. }
  113939. frequency = parseInt(frequency);
  113940. var basis = 0;
  113941. if (arguments.length == 6) {
  113942. basis = func_methods_default.getFirstValue(arguments[5]);
  113943. if (valueIsError(basis)) {
  113944. return basis;
  113945. }
  113946. if (!isRealNum(basis)) {
  113947. return formula_default.error.v;
  113948. }
  113949. basis = parseInt(basis);
  113950. }
  113951. if (coupon < 0 || yld < 0) {
  113952. return formula_default.error.nm;
  113953. }
  113954. if (frequency != 1 && frequency != 2 && frequency != 4) {
  113955. return formula_default.error.nm;
  113956. }
  113957. if (basis < 0 || basis > 4) {
  113958. return formula_default.error.nm;
  113959. }
  113960. if ((0, import_dayjs8.default)(settlement) - (0, import_dayjs8.default)(maturity) >= 0) {
  113961. return formula_default.error.nm;
  113962. }
  113963. var nper = window.luckysheet_function.COUPNUM.f(settlement, maturity, frequency, basis);
  113964. var sum1 = 0;
  113965. var sum2 = 0;
  113966. for (var i2 = 1; i2 <= nper; i2++) {
  113967. sum1 += 100 * (coupon / frequency) * i2 / Math.pow(1 + yld / frequency, i2);
  113968. sum2 += 100 * (coupon / frequency) / Math.pow(1 + yld / frequency, i2);
  113969. }
  113970. var result = (sum1 + 100 * nper / Math.pow(1 + yld / frequency, nper)) / (sum2 + 100 / Math.pow(1 + yld / frequency, nper));
  113971. result = result / frequency;
  113972. return result;
  113973. } catch (e) {
  113974. var err = e;
  113975. err = formula_default.errorInfo(err);
  113976. return [formula_default.error.v, err];
  113977. }
  113978. },
  113979. "MDURATION": function() {
  113980. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  113981. return formula_default.error.na;
  113982. }
  113983. for (var i2 = 0; i2 < arguments.length; i2++) {
  113984. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  113985. if (!p[0]) {
  113986. return formula_default.error.v;
  113987. }
  113988. }
  113989. try {
  113990. var settlement = func_methods_default.getCellDate(arguments[0]);
  113991. if (valueIsError(settlement)) {
  113992. return settlement;
  113993. }
  113994. if (!(0, import_dayjs8.default)(settlement).isValid()) {
  113995. return formula_default.error.v;
  113996. }
  113997. var maturity = func_methods_default.getCellDate(arguments[1]);
  113998. if (valueIsError(maturity)) {
  113999. return maturity;
  114000. }
  114001. if (!(0, import_dayjs8.default)(maturity).isValid()) {
  114002. return formula_default.error.v;
  114003. }
  114004. var coupon = func_methods_default.getFirstValue(arguments[2]);
  114005. if (valueIsError(coupon)) {
  114006. return coupon;
  114007. }
  114008. if (!isRealNum(coupon)) {
  114009. return formula_default.error.v;
  114010. }
  114011. coupon = parseFloat(coupon);
  114012. var yld = func_methods_default.getFirstValue(arguments[3]);
  114013. if (valueIsError(yld)) {
  114014. return yld;
  114015. }
  114016. if (!isRealNum(yld)) {
  114017. return formula_default.error.v;
  114018. }
  114019. yld = parseFloat(yld);
  114020. var frequency = func_methods_default.getFirstValue(arguments[4]);
  114021. if (valueIsError(frequency)) {
  114022. return frequency;
  114023. }
  114024. if (!isRealNum(frequency)) {
  114025. return formula_default.error.v;
  114026. }
  114027. frequency = parseInt(frequency);
  114028. var basis = 0;
  114029. if (arguments.length == 6) {
  114030. basis = func_methods_default.getFirstValue(arguments[5]);
  114031. if (valueIsError(basis)) {
  114032. return basis;
  114033. }
  114034. if (!isRealNum(basis)) {
  114035. return formula_default.error.v;
  114036. }
  114037. basis = parseInt(basis);
  114038. }
  114039. if (coupon < 0 || yld < 0) {
  114040. return formula_default.error.nm;
  114041. }
  114042. if (frequency != 1 && frequency != 2 && frequency != 4) {
  114043. return formula_default.error.nm;
  114044. }
  114045. if (basis < 0 || basis > 4) {
  114046. return formula_default.error.nm;
  114047. }
  114048. if ((0, import_dayjs8.default)(settlement) - (0, import_dayjs8.default)(maturity) >= 0) {
  114049. return formula_default.error.nm;
  114050. }
  114051. var duration2 = window.luckysheet_function.DURATION.f(settlement, maturity, coupon, yld, frequency, basis);
  114052. return duration2 / (1 + yld / frequency);
  114053. } catch (e) {
  114054. var err = e;
  114055. err = formula_default.errorInfo(err);
  114056. return [formula_default.error.v, err];
  114057. }
  114058. },
  114059. "BIN2DEC": function() {
  114060. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  114061. return formula_default.error.na;
  114062. }
  114063. for (var i2 = 0; i2 < arguments.length; i2++) {
  114064. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  114065. if (!p[0]) {
  114066. return formula_default.error.v;
  114067. }
  114068. }
  114069. try {
  114070. var number = func_methods_default.getFirstValue(arguments[0]);
  114071. if (valueIsError(number)) {
  114072. return number;
  114073. }
  114074. if (!/^[01]{1,10}$/g.test(number)) {
  114075. return formula_default.error.nm;
  114076. }
  114077. var result = parseInt(number, 2);
  114078. var stringified = number.toString();
  114079. if (stringified.length === 10 && stringified.substring(0, 1) === "1") {
  114080. return parseInt(stringified.substring(1), 2) - 512;
  114081. } else {
  114082. return result;
  114083. }
  114084. } catch (e) {
  114085. var err = e;
  114086. err = formula_default.errorInfo(err);
  114087. return [formula_default.error.v, err];
  114088. }
  114089. },
  114090. "BIN2HEX": function() {
  114091. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  114092. return formula_default.error.na;
  114093. }
  114094. for (var i2 = 0; i2 < arguments.length; i2++) {
  114095. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  114096. if (!p[0]) {
  114097. return formula_default.error.v;
  114098. }
  114099. }
  114100. try {
  114101. var number = func_methods_default.getFirstValue(arguments[0]);
  114102. if (valueIsError(number)) {
  114103. return number;
  114104. }
  114105. var places = null;
  114106. if (arguments.length == 2) {
  114107. places = func_methods_default.getFirstValue(arguments[1]);
  114108. if (valueIsError(places)) {
  114109. return places;
  114110. }
  114111. if (!isRealNum(places)) {
  114112. return formula_default.error.v;
  114113. }
  114114. places = parseInt(places);
  114115. }
  114116. if (!/^[01]{1,10}$/g.test(number)) {
  114117. return formula_default.error.nm;
  114118. }
  114119. var result = parseInt(number, 2).toString(16).toUpperCase();
  114120. if (places == null) {
  114121. return result;
  114122. } else {
  114123. if (places < 0 || places < result.length) {
  114124. return formula_default.error.nm;
  114125. }
  114126. return new Array(places - result.length + 1).join("0") + result;
  114127. }
  114128. } catch (e) {
  114129. var err = e;
  114130. err = formula_default.errorInfo(err);
  114131. return [formula_default.error.v, err];
  114132. }
  114133. },
  114134. "BIN2OCT": function() {
  114135. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  114136. return formula_default.error.na;
  114137. }
  114138. for (var i2 = 0; i2 < arguments.length; i2++) {
  114139. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  114140. if (!p[0]) {
  114141. return formula_default.error.v;
  114142. }
  114143. }
  114144. try {
  114145. var number = func_methods_default.getFirstValue(arguments[0]);
  114146. if (valueIsError(number)) {
  114147. return number;
  114148. }
  114149. var places = null;
  114150. if (arguments.length == 2) {
  114151. places = func_methods_default.getFirstValue(arguments[1]);
  114152. if (valueIsError(places)) {
  114153. return places;
  114154. }
  114155. if (!isRealNum(places)) {
  114156. return formula_default.error.v;
  114157. }
  114158. places = parseInt(places);
  114159. }
  114160. if (!/^[01]{1,10}$/g.test(number)) {
  114161. return formula_default.error.nm;
  114162. }
  114163. var stringified = number.toString();
  114164. if (stringified.length === 10 && stringified.substring(0, 1) === "1") {
  114165. return (1073741312 + parseInt(stringified.substring(1), 2)).toString(8);
  114166. }
  114167. var result = parseInt(number, 2).toString(8);
  114168. if (places == null) {
  114169. return result;
  114170. } else {
  114171. if (places < 0 || places < result.length) {
  114172. return formula_default.error.nm;
  114173. }
  114174. return new Array(places - result.length + 1).join("0") + result;
  114175. }
  114176. } catch (e) {
  114177. var err = e;
  114178. err = formula_default.errorInfo(err);
  114179. return [formula_default.error.v, err];
  114180. }
  114181. },
  114182. "DEC2BIN": function() {
  114183. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  114184. return formula_default.error.na;
  114185. }
  114186. for (var i2 = 0; i2 < arguments.length; i2++) {
  114187. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  114188. if (!p[0]) {
  114189. return formula_default.error.v;
  114190. }
  114191. }
  114192. try {
  114193. var number = func_methods_default.getFirstValue(arguments[0]);
  114194. if (valueIsError(number)) {
  114195. return number;
  114196. }
  114197. if (!isRealNum(number)) {
  114198. return formula_default.error.v;
  114199. }
  114200. number = parseFloat(number);
  114201. var places = null;
  114202. if (arguments.length == 2) {
  114203. places = func_methods_default.getFirstValue(arguments[1]);
  114204. if (valueIsError(places)) {
  114205. return places;
  114206. }
  114207. if (!isRealNum(places)) {
  114208. return formula_default.error.v;
  114209. }
  114210. places = parseInt(places);
  114211. }
  114212. if (!/^-?[0-9]{1,3}$/.test(number) || number < -512 || number > 511) {
  114213. return formula_default.error.nm;
  114214. }
  114215. if (number < 0) {
  114216. return "1" + new Array(9 - (512 + number).toString(2).length).join("0") + (512 + number).toString(2);
  114217. }
  114218. var result = parseInt(number, 10).toString(2);
  114219. if (places == null) {
  114220. return result;
  114221. } else {
  114222. if (places < 0 || places < result.length) {
  114223. return formula_default.error.nm;
  114224. }
  114225. return new Array(places - result.length + 1).join("0") + result;
  114226. }
  114227. } catch (e) {
  114228. var err = e;
  114229. err = formula_default.errorInfo(err);
  114230. return [formula_default.error.v, err];
  114231. }
  114232. },
  114233. "DEC2HEX": function() {
  114234. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  114235. return formula_default.error.na;
  114236. }
  114237. for (var i2 = 0; i2 < arguments.length; i2++) {
  114238. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  114239. if (!p[0]) {
  114240. return formula_default.error.v;
  114241. }
  114242. }
  114243. try {
  114244. var number = func_methods_default.getFirstValue(arguments[0]);
  114245. if (valueIsError(number)) {
  114246. return number;
  114247. }
  114248. if (!isRealNum(number)) {
  114249. return formula_default.error.v;
  114250. }
  114251. number = parseFloat(number);
  114252. var places = null;
  114253. if (arguments.length == 2) {
  114254. places = func_methods_default.getFirstValue(arguments[1]);
  114255. if (valueIsError(places)) {
  114256. return places;
  114257. }
  114258. if (!isRealNum(places)) {
  114259. return formula_default.error.v;
  114260. }
  114261. places = parseInt(places);
  114262. }
  114263. if (!/^-?[0-9]{1,12}$/.test(number) || number < -549755813888 || number > 549755813887) {
  114264. return formula_default.error.nm;
  114265. }
  114266. if (number < 0) {
  114267. return (1099511627776 + number).toString(16).toUpperCase();
  114268. }
  114269. var result = parseInt(number, 10).toString(16).toUpperCase();
  114270. if (places == null) {
  114271. return result;
  114272. } else {
  114273. if (places < 0 || places < result.length) {
  114274. return formula_default.error.nm;
  114275. }
  114276. return new Array(places - result.length + 1).join("0") + result;
  114277. }
  114278. } catch (e) {
  114279. var err = e;
  114280. err = formula_default.errorInfo(err);
  114281. return [formula_default.error.v, err];
  114282. }
  114283. },
  114284. "DEC2OCT": function() {
  114285. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  114286. return formula_default.error.na;
  114287. }
  114288. for (var i2 = 0; i2 < arguments.length; i2++) {
  114289. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  114290. if (!p[0]) {
  114291. return formula_default.error.v;
  114292. }
  114293. }
  114294. try {
  114295. var number = func_methods_default.getFirstValue(arguments[0]);
  114296. if (valueIsError(number)) {
  114297. return number;
  114298. }
  114299. if (!isRealNum(number)) {
  114300. return formula_default.error.v;
  114301. }
  114302. number = parseFloat(number);
  114303. var places = null;
  114304. if (arguments.length == 2) {
  114305. places = func_methods_default.getFirstValue(arguments[1]);
  114306. if (valueIsError(places)) {
  114307. return places;
  114308. }
  114309. if (!isRealNum(places)) {
  114310. return formula_default.error.v;
  114311. }
  114312. places = parseInt(places);
  114313. }
  114314. if (!/^-?[0-9]{1,9}$/.test(number) || number < -536870912 || number > 536870911) {
  114315. return formula_default.error.nm;
  114316. }
  114317. if (number < 0) {
  114318. return (1073741824 + number).toString(8);
  114319. }
  114320. var result = parseInt(number, 10).toString(8);
  114321. if (places == null) {
  114322. return result;
  114323. } else {
  114324. if (places < 0 || places < result.length) {
  114325. return formula_default.error.nm;
  114326. }
  114327. return new Array(places - result.length + 1).join("0") + result;
  114328. }
  114329. } catch (e) {
  114330. var err = e;
  114331. err = formula_default.errorInfo(err);
  114332. return [formula_default.error.v, err];
  114333. }
  114334. },
  114335. "HEX2BIN": function() {
  114336. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  114337. return formula_default.error.na;
  114338. }
  114339. for (var i2 = 0; i2 < arguments.length; i2++) {
  114340. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  114341. if (!p[0]) {
  114342. return formula_default.error.v;
  114343. }
  114344. }
  114345. try {
  114346. var number = func_methods_default.getFirstValue(arguments[0]);
  114347. if (valueIsError(number)) {
  114348. return number;
  114349. }
  114350. var places = null;
  114351. if (arguments.length == 2) {
  114352. places = func_methods_default.getFirstValue(arguments[1]);
  114353. if (valueIsError(places)) {
  114354. return places;
  114355. }
  114356. if (!isRealNum(places)) {
  114357. return formula_default.error.v;
  114358. }
  114359. places = parseInt(places);
  114360. }
  114361. if (!/^[0-9A-Fa-f]{1,10}$/.test(number)) {
  114362. return formula_default.error.nm;
  114363. }
  114364. var negative = number.length === 10 && number.substring(0, 1).toLowerCase() === "f" ? true : false;
  114365. var decimal = negative ? parseInt(number, 16) - 1099511627776 : parseInt(number, 16);
  114366. if (decimal < -512 || decimal > 511) {
  114367. return formula_default.error.nm;
  114368. }
  114369. if (negative) {
  114370. return "1" + new Array(9 - (512 + decimal).toString(2).length).join("0") + (512 + decimal).toString(2);
  114371. }
  114372. var result = decimal.toString(2);
  114373. if (places == null) {
  114374. return result;
  114375. } else {
  114376. if (places < 0 || places < result.length) {
  114377. return formula_default.error.nm;
  114378. }
  114379. return new Array(places - result.length + 1).join("0") + result;
  114380. }
  114381. } catch (e) {
  114382. var err = e;
  114383. err = formula_default.errorInfo(err);
  114384. return [formula_default.error.v, err];
  114385. }
  114386. },
  114387. "HEX2DEC": function() {
  114388. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  114389. return formula_default.error.na;
  114390. }
  114391. for (var i2 = 0; i2 < arguments.length; i2++) {
  114392. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  114393. if (!p[0]) {
  114394. return formula_default.error.v;
  114395. }
  114396. }
  114397. try {
  114398. var number = func_methods_default.getFirstValue(arguments[0]);
  114399. if (valueIsError(number)) {
  114400. return number;
  114401. }
  114402. if (!/^[0-9A-Fa-f]{1,10}$/.test(number)) {
  114403. return formula_default.error.nm;
  114404. }
  114405. var decimal = parseInt(number, 16);
  114406. return decimal >= 549755813888 ? decimal - 1099511627776 : decimal;
  114407. } catch (e) {
  114408. var err = e;
  114409. err = formula_default.errorInfo(err);
  114410. return [formula_default.error.v, err];
  114411. }
  114412. },
  114413. "HEX2OCT": function() {
  114414. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  114415. return formula_default.error.na;
  114416. }
  114417. for (var i2 = 0; i2 < arguments.length; i2++) {
  114418. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  114419. if (!p[0]) {
  114420. return formula_default.error.v;
  114421. }
  114422. }
  114423. try {
  114424. var number = func_methods_default.getFirstValue(arguments[0]);
  114425. if (valueIsError(number)) {
  114426. return number;
  114427. }
  114428. var places = null;
  114429. if (arguments.length == 2) {
  114430. places = func_methods_default.getFirstValue(arguments[1]);
  114431. if (valueIsError(places)) {
  114432. return places;
  114433. }
  114434. if (!isRealNum(places)) {
  114435. return formula_default.error.v;
  114436. }
  114437. places = parseInt(places);
  114438. }
  114439. if (!/^[0-9A-Fa-f]{1,10}$/.test(number)) {
  114440. return formula_default.error.nm;
  114441. }
  114442. var decimal = parseInt(number, 16);
  114443. if (decimal > 536870911 && decimal < 1098974756864) {
  114444. return formula_default.error.nm;
  114445. }
  114446. if (decimal >= 1098974756864) {
  114447. return (decimal - 1098437885952).toString(8);
  114448. }
  114449. var result = decimal.toString(8);
  114450. if (places == null) {
  114451. return result;
  114452. } else {
  114453. if (places < 0 || places < result.length) {
  114454. return formula_default.error.nm;
  114455. }
  114456. return new Array(places - result.length + 1).join("0") + result;
  114457. }
  114458. } catch (e) {
  114459. var err = e;
  114460. err = formula_default.errorInfo(err);
  114461. return [formula_default.error.v, err];
  114462. }
  114463. },
  114464. "OCT2BIN": function() {
  114465. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  114466. return formula_default.error.na;
  114467. }
  114468. for (var i2 = 0; i2 < arguments.length; i2++) {
  114469. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  114470. if (!p[0]) {
  114471. return formula_default.error.v;
  114472. }
  114473. }
  114474. try {
  114475. var number = func_methods_default.getFirstValue(arguments[0]);
  114476. if (valueIsError(number)) {
  114477. return number;
  114478. }
  114479. var places = null;
  114480. if (arguments.length == 2) {
  114481. places = func_methods_default.getFirstValue(arguments[1]);
  114482. if (valueIsError(places)) {
  114483. return places;
  114484. }
  114485. if (!isRealNum(places)) {
  114486. return formula_default.error.v;
  114487. }
  114488. places = parseInt(places);
  114489. }
  114490. if (!/^[0-7]{1,10}$/.test(number)) {
  114491. return formula_default.error.nm;
  114492. }
  114493. number = number.toString();
  114494. var negative = number.length === 10 && number.substring(0, 1) === "7" ? true : false;
  114495. var decimal = negative ? parseInt(number, 8) - 1073741824 : parseInt(number, 8);
  114496. if (decimal < -512 || decimal > 511) {
  114497. return error.num;
  114498. }
  114499. if (negative) {
  114500. return "1" + new Array(9 - (512 + decimal).toString(2).length).join("0") + (512 + decimal).toString(2);
  114501. }
  114502. var result = decimal.toString(2);
  114503. if (places == null) {
  114504. return result;
  114505. } else {
  114506. if (places < 0 || places < result.length) {
  114507. return formula_default.error.nm;
  114508. }
  114509. return new Array(places - result.length + 1).join("0") + result;
  114510. }
  114511. } catch (e) {
  114512. var err = e;
  114513. err = formula_default.errorInfo(err);
  114514. return [formula_default.error.v, err];
  114515. }
  114516. },
  114517. "OCT2DEC": function() {
  114518. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  114519. return formula_default.error.na;
  114520. }
  114521. for (var i2 = 0; i2 < arguments.length; i2++) {
  114522. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  114523. if (!p[0]) {
  114524. return formula_default.error.v;
  114525. }
  114526. }
  114527. try {
  114528. var number = func_methods_default.getFirstValue(arguments[0]);
  114529. if (valueIsError(number)) {
  114530. return number;
  114531. }
  114532. if (!/^[0-7]{1,10}$/.test(number)) {
  114533. return formula_default.error.nm;
  114534. }
  114535. var decimal = parseInt(number, 8);
  114536. return decimal >= 536870912 ? decimal - 1073741824 : decimal;
  114537. } catch (e) {
  114538. var err = e;
  114539. err = formula_default.errorInfo(err);
  114540. return [formula_default.error.v, err];
  114541. }
  114542. },
  114543. "OCT2HEX": function() {
  114544. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  114545. return formula_default.error.na;
  114546. }
  114547. for (var i2 = 0; i2 < arguments.length; i2++) {
  114548. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  114549. if (!p[0]) {
  114550. return formula_default.error.v;
  114551. }
  114552. }
  114553. try {
  114554. var number = func_methods_default.getFirstValue(arguments[0]);
  114555. if (valueIsError(number)) {
  114556. return number;
  114557. }
  114558. var places = null;
  114559. if (arguments.length == 2) {
  114560. places = func_methods_default.getFirstValue(arguments[1]);
  114561. if (valueIsError(places)) {
  114562. return places;
  114563. }
  114564. if (!isRealNum(places)) {
  114565. return formula_default.error.v;
  114566. }
  114567. places = parseInt(places);
  114568. }
  114569. if (!/^[0-7]{1,10}$/.test(number)) {
  114570. return formula_default.error.nm;
  114571. }
  114572. var decimal = parseInt(number, 8);
  114573. if (decimal >= 536870912) {
  114574. return "FF" + (decimal + 3221225472).toString(16).toUpperCase();
  114575. }
  114576. var result = decimal.toString(16).toUpperCase();
  114577. if (places == null) {
  114578. return result;
  114579. } else {
  114580. if (places < 0 || places < result.length) {
  114581. return formula_default.error.nm;
  114582. }
  114583. return new Array(places - result.length + 1).join("0") + result;
  114584. }
  114585. } catch (e) {
  114586. var err = e;
  114587. err = formula_default.errorInfo(err);
  114588. return [formula_default.error.v, err];
  114589. }
  114590. },
  114591. "COMPLEX": function() {
  114592. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  114593. return formula_default.error.na;
  114594. }
  114595. for (var i2 = 0; i2 < arguments.length; i2++) {
  114596. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  114597. if (!p[0]) {
  114598. return formula_default.error.v;
  114599. }
  114600. }
  114601. try {
  114602. var real_num = func_methods_default.getFirstValue(arguments[0]);
  114603. if (valueIsError(real_num)) {
  114604. return real_num;
  114605. }
  114606. if (!isRealNum(real_num)) {
  114607. return formula_default.error.v;
  114608. }
  114609. real_num = parseFloat(real_num);
  114610. var i_num = func_methods_default.getFirstValue(arguments[1]);
  114611. if (valueIsError(i_num)) {
  114612. return i_num;
  114613. }
  114614. if (!isRealNum(i_num)) {
  114615. return formula_default.error.v;
  114616. }
  114617. i_num = parseFloat(i_num);
  114618. var suffix = "i";
  114619. if (arguments.length == 3) {
  114620. suffix = arguments[2].toString();
  114621. }
  114622. if (suffix != "i" && suffix != "j") {
  114623. return formula_default.error.v;
  114624. }
  114625. if (real_num === 0 && i_num === 0) {
  114626. return 0;
  114627. } else if (real_num === 0) {
  114628. return i_num === 1 ? suffix : i_num.toString() + suffix;
  114629. } else if (i_num === 0) {
  114630. return real_num.toString();
  114631. } else {
  114632. var sign = i_num > 0 ? "+" : "";
  114633. return real_num.toString() + sign + (i_num === 1 ? suffix : i_num.toString() + suffix);
  114634. }
  114635. } catch (e) {
  114636. var err = e;
  114637. err = formula_default.errorInfo(err);
  114638. return [formula_default.error.v, err];
  114639. }
  114640. },
  114641. "IMREAL": function() {
  114642. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  114643. return formula_default.error.na;
  114644. }
  114645. for (var i2 = 0; i2 < arguments.length; i2++) {
  114646. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  114647. if (!p[0]) {
  114648. return formula_default.error.v;
  114649. }
  114650. }
  114651. try {
  114652. var inumber = func_methods_default.getFirstValue(arguments[0]);
  114653. if (valueIsError(inumber)) {
  114654. return inumber;
  114655. }
  114656. inumber = inumber.toString();
  114657. if (inumber.toLowerCase() == "true" || inumber.toLowerCase() == "false") {
  114658. return formula_default.error.v;
  114659. }
  114660. if (inumber == "0") {
  114661. return 0;
  114662. }
  114663. if (["i", "+i", "1i", "+1i", "-i", "-1i", "j", "+j", "1j", "+1j", "-j", "-1j"].indexOf(inumber) >= 0) {
  114664. return 0;
  114665. }
  114666. var plus = inumber.indexOf("+");
  114667. var minus = inumber.indexOf("-");
  114668. if (plus === 0) {
  114669. plus = inumber.indexOf("+", 1);
  114670. }
  114671. if (minus === 0) {
  114672. minus = inumber.indexOf("-", 1);
  114673. }
  114674. var last = inumber.substring(inumber.length - 1, inumber.length);
  114675. var unit = last === "i" || last === "j";
  114676. if (plus >= 0 || minus >= 0) {
  114677. if (!unit) {
  114678. return formula_default.error.nm;
  114679. }
  114680. if (plus >= 0) {
  114681. return isNaN(inumber.substring(0, plus)) || isNaN(inumber.substring(plus + 1, inumber.length - 1)) ? formula_default.error.nm : Number(inumber.substring(0, plus));
  114682. } else {
  114683. return isNaN(inumber.substring(0, minus)) || isNaN(inumber.substring(minus + 1, inumber.length - 1)) ? formula_default.error.nm : Number(inumber.substring(0, minus));
  114684. }
  114685. } else {
  114686. if (unit) {
  114687. return isNaN(inumber.substring(0, inumber.length - 1)) ? formula_default.error.nm : 0;
  114688. } else {
  114689. return isNaN(inumber) ? formula_default.error.nm : inumber;
  114690. }
  114691. }
  114692. } catch (e) {
  114693. var err = e;
  114694. err = formula_default.errorInfo(err);
  114695. return [formula_default.error.v, err];
  114696. }
  114697. },
  114698. "IMAGINARY": function() {
  114699. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  114700. return formula_default.error.na;
  114701. }
  114702. for (var i2 = 0; i2 < arguments.length; i2++) {
  114703. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  114704. if (!p[0]) {
  114705. return formula_default.error.v;
  114706. }
  114707. }
  114708. try {
  114709. var inumber = func_methods_default.getFirstValue(arguments[0]);
  114710. if (valueIsError(inumber)) {
  114711. return inumber;
  114712. }
  114713. inumber = inumber.toString();
  114714. if (inumber.toLowerCase() == "true" || inumber.toLowerCase() == "false") {
  114715. return formula_default.error.v;
  114716. }
  114717. if (inumber == "0") {
  114718. return 0;
  114719. }
  114720. if (["i", "j"].indexOf(inumber) >= 0) {
  114721. return 1;
  114722. }
  114723. inumber = inumber.replace("+i", "+1i").replace("-i", "-1i").replace("+j", "+1j").replace("-j", "-1j");
  114724. var plus = inumber.indexOf("+");
  114725. var minus = inumber.indexOf("-");
  114726. if (plus === 0) {
  114727. plus = inumber.indexOf("+", 1);
  114728. }
  114729. if (minus === 0) {
  114730. minus = inumber.indexOf("-", 1);
  114731. }
  114732. var last = inumber.substring(inumber.length - 1, inumber.length);
  114733. var unit = last === "i" || last === "j";
  114734. if (plus >= 0 || minus >= 0) {
  114735. if (!unit) {
  114736. return formula_default.error.nm;
  114737. }
  114738. if (plus >= 0) {
  114739. return isNaN(inumber.substring(0, plus)) || isNaN(inumber.substring(plus + 1, inumber.length - 1)) ? formula_default.error.nm : Number(inumber.substring(plus + 1, inumber.length - 1));
  114740. } else {
  114741. return isNaN(inumber.substring(0, minus)) || isNaN(inumber.substring(minus + 1, inumber.length - 1)) ? formula_default.error.nm : -Number(inumber.substring(minus + 1, inumber.length - 1));
  114742. }
  114743. } else {
  114744. if (unit) {
  114745. return isNaN(inumber.substring(0, inumber.length - 1)) ? formula_default.error.nm : inumber.substring(0, inumber.length - 1);
  114746. } else {
  114747. return isNaN(inumber) ? formula_default.error.nm : 0;
  114748. }
  114749. }
  114750. } catch (e) {
  114751. var err = e;
  114752. err = formula_default.errorInfo(err);
  114753. return [formula_default.error.v, err];
  114754. }
  114755. },
  114756. "IMCONJUGATE": function() {
  114757. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  114758. return formula_default.error.na;
  114759. }
  114760. for (var i2 = 0; i2 < arguments.length; i2++) {
  114761. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  114762. if (!p[0]) {
  114763. return formula_default.error.v;
  114764. }
  114765. }
  114766. try {
  114767. var inumber = func_methods_default.getFirstValue(arguments[0]);
  114768. if (valueIsError(inumber)) {
  114769. return inumber;
  114770. }
  114771. inumber = inumber.toString();
  114772. var x = window.luckysheet_function.IMREAL.f(inumber);
  114773. if (valueIsError(x)) {
  114774. return x;
  114775. }
  114776. var y = window.luckysheet_function.IMAGINARY.f(inumber);
  114777. if (valueIsError(y)) {
  114778. return y;
  114779. }
  114780. var unit = inumber.substring(inumber.length - 1);
  114781. unit = unit === "i" || unit === "j" ? unit : "i";
  114782. return y !== 0 ? window.luckysheet_function.COMPLEX.f(x, -y, unit) : inumber;
  114783. } catch (e) {
  114784. var err = e;
  114785. err = formula_default.errorInfo(err);
  114786. return [formula_default.error.v, err];
  114787. }
  114788. },
  114789. "IMABS": function() {
  114790. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  114791. return formula_default.error.na;
  114792. }
  114793. for (var i2 = 0; i2 < arguments.length; i2++) {
  114794. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  114795. if (!p[0]) {
  114796. return formula_default.error.v;
  114797. }
  114798. }
  114799. try {
  114800. var x = window.luckysheet_function.IMREAL.f(arguments[0]);
  114801. if (valueIsError(x)) {
  114802. return x;
  114803. }
  114804. var y = window.luckysheet_function.IMAGINARY.f(arguments[0]);
  114805. if (valueIsError(y)) {
  114806. return y;
  114807. }
  114808. return Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));
  114809. } catch (e) {
  114810. var err = e;
  114811. err = formula_default.errorInfo(err);
  114812. return [formula_default.error.v, err];
  114813. }
  114814. },
  114815. "DELTA": function() {
  114816. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  114817. return formula_default.error.na;
  114818. }
  114819. for (var i2 = 0; i2 < arguments.length; i2++) {
  114820. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  114821. if (!p[0]) {
  114822. return formula_default.error.v;
  114823. }
  114824. }
  114825. try {
  114826. var number1 = func_methods_default.getFirstValue(arguments[0]);
  114827. if (valueIsError(number1)) {
  114828. return number1;
  114829. }
  114830. if (!isRealNum(number1)) {
  114831. return formula_default.error.v;
  114832. }
  114833. number1 = parseFloat(number1);
  114834. var number2 = 0;
  114835. if (arguments.length == 2) {
  114836. number2 = func_methods_default.getFirstValue(arguments[1]);
  114837. if (valueIsError(number2)) {
  114838. return number2;
  114839. }
  114840. if (!isRealNum(number2)) {
  114841. return formula_default.error.v;
  114842. }
  114843. number2 = parseFloat(number2);
  114844. }
  114845. return number1 === number2 ? 1 : 0;
  114846. } catch (e) {
  114847. var err = e;
  114848. err = formula_default.errorInfo(err);
  114849. return [formula_default.error.v, err];
  114850. }
  114851. },
  114852. "IMSUM": function() {
  114853. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  114854. return formula_default.error.na;
  114855. }
  114856. for (var i2 = 0; i2 < arguments.length; i2++) {
  114857. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  114858. if (!p[0]) {
  114859. return formula_default.error.v;
  114860. }
  114861. }
  114862. try {
  114863. var x = window.luckysheet_function.IMREAL.f(arguments[0]);
  114864. if (valueIsError(x)) {
  114865. return x;
  114866. }
  114867. var y = window.luckysheet_function.IMAGINARY.f(arguments[0]);
  114868. if (valueIsError(y)) {
  114869. return y;
  114870. }
  114871. var result = arguments[0];
  114872. for (var i2 = 1; i2 < arguments.length; i2++) {
  114873. var a = window.luckysheet_function.IMREAL.f(result);
  114874. if (valueIsError(a)) {
  114875. return a;
  114876. }
  114877. var b = window.luckysheet_function.IMAGINARY.f(result);
  114878. if (valueIsError(b)) {
  114879. return b;
  114880. }
  114881. var c2 = window.luckysheet_function.IMREAL.f(arguments[i2]);
  114882. if (valueIsError(c2)) {
  114883. return c2;
  114884. }
  114885. var d = window.luckysheet_function.IMAGINARY.f(arguments[i2]);
  114886. if (valueIsError(d)) {
  114887. return d;
  114888. }
  114889. result = window.luckysheet_function.COMPLEX.f(a + c2, b + d);
  114890. }
  114891. return result;
  114892. } catch (e) {
  114893. var err = e;
  114894. err = formula_default.errorInfo(err);
  114895. return [formula_default.error.v, err];
  114896. }
  114897. },
  114898. "IMSUB": function() {
  114899. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  114900. return formula_default.error.na;
  114901. }
  114902. for (var i2 = 0; i2 < arguments.length; i2++) {
  114903. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  114904. if (!p[0]) {
  114905. return formula_default.error.v;
  114906. }
  114907. }
  114908. try {
  114909. var inumber1 = func_methods_default.getFirstValue(arguments[0]);
  114910. if (valueIsError(inumber1)) {
  114911. return inumber1;
  114912. }
  114913. inumber1 = inumber1.toString();
  114914. if (inumber1.toLowerCase() == "true" || inumber1.toLowerCase() == "false") {
  114915. return formula_default.error.v;
  114916. }
  114917. var a = window.luckysheet_function.IMREAL.f(inumber1);
  114918. if (valueIsError(a)) {
  114919. return a;
  114920. }
  114921. var b = window.luckysheet_function.IMAGINARY.f(inumber1);
  114922. if (valueIsError(b)) {
  114923. return b;
  114924. }
  114925. var inumber2 = func_methods_default.getFirstValue(arguments[1]);
  114926. if (valueIsError(inumber2)) {
  114927. return inumber2;
  114928. }
  114929. inumber2 = inumber2.toString();
  114930. if (inumber2.toLowerCase() == "true" || inumber2.toLowerCase() == "false") {
  114931. return formula_default.error.v;
  114932. }
  114933. var c2 = window.luckysheet_function.IMREAL.f(inumber2);
  114934. if (valueIsError(c2)) {
  114935. return c2;
  114936. }
  114937. var d = window.luckysheet_function.IMAGINARY.f(inumber2);
  114938. if (valueIsError(d)) {
  114939. return d;
  114940. }
  114941. var unit1 = inumber1.substring(inumber1.length - 1);
  114942. var unit2 = inumber2.substring(inumber2.length - 1);
  114943. var unit = "i";
  114944. if (unit1 === "j") {
  114945. unit = "j";
  114946. } else if (unit2 === "j") {
  114947. unit = "j";
  114948. }
  114949. return window.luckysheet_function.COMPLEX.f(a - c2, b - d, unit);
  114950. } catch (e) {
  114951. var err = e;
  114952. err = formula_default.errorInfo(err);
  114953. return [formula_default.error.v, err];
  114954. }
  114955. },
  114956. "IMPRODUCT": function() {
  114957. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  114958. return formula_default.error.na;
  114959. }
  114960. for (var i2 = 0; i2 < arguments.length; i2++) {
  114961. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  114962. if (!p[0]) {
  114963. return formula_default.error.v;
  114964. }
  114965. }
  114966. try {
  114967. var x = window.luckysheet_function.IMREAL.f(arguments[0]);
  114968. if (valueIsError(x)) {
  114969. return x;
  114970. }
  114971. var y = window.luckysheet_function.IMAGINARY.f(arguments[0]);
  114972. if (valueIsError(y)) {
  114973. return y;
  114974. }
  114975. var result = arguments[0];
  114976. for (var i2 = 1; i2 < arguments.length; i2++) {
  114977. var a = window.luckysheet_function.IMREAL.f(result);
  114978. if (valueIsError(a)) {
  114979. return a;
  114980. }
  114981. var b = window.luckysheet_function.IMAGINARY.f(result);
  114982. if (valueIsError(b)) {
  114983. return b;
  114984. }
  114985. var c2 = window.luckysheet_function.IMREAL.f(arguments[i2]);
  114986. if (valueIsError(c2)) {
  114987. return c2;
  114988. }
  114989. var d = window.luckysheet_function.IMAGINARY.f(arguments[i2]);
  114990. if (valueIsError(d)) {
  114991. return d;
  114992. }
  114993. result = window.luckysheet_function.COMPLEX.f(a * c2 - b * d, a * d + b * c2);
  114994. }
  114995. return result;
  114996. } catch (e) {
  114997. var err = e;
  114998. err = formula_default.errorInfo(err);
  114999. return [formula_default.error.v, err];
  115000. }
  115001. },
  115002. "IMDIV": function() {
  115003. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  115004. return formula_default.error.na;
  115005. }
  115006. for (var i2 = 0; i2 < arguments.length; i2++) {
  115007. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  115008. if (!p[0]) {
  115009. return formula_default.error.v;
  115010. }
  115011. }
  115012. try {
  115013. var inumber1 = func_methods_default.getFirstValue(arguments[0]);
  115014. if (valueIsError(inumber1)) {
  115015. return inumber1;
  115016. }
  115017. inumber1 = inumber1.toString();
  115018. if (inumber1.toLowerCase() == "true" || inumber1.toLowerCase() == "false") {
  115019. return formula_default.error.v;
  115020. }
  115021. var a = window.luckysheet_function.IMREAL.f(inumber1);
  115022. if (valueIsError(a)) {
  115023. return a;
  115024. }
  115025. var b = window.luckysheet_function.IMAGINARY.f(inumber1);
  115026. if (valueIsError(b)) {
  115027. return b;
  115028. }
  115029. var inumber2 = func_methods_default.getFirstValue(arguments[1]);
  115030. if (valueIsError(inumber2)) {
  115031. return inumber2;
  115032. }
  115033. inumber2 = inumber2.toString();
  115034. if (inumber2.toLowerCase() == "true" || inumber2.toLowerCase() == "false") {
  115035. return formula_default.error.v;
  115036. }
  115037. var c2 = window.luckysheet_function.IMREAL.f(inumber2);
  115038. if (valueIsError(c2)) {
  115039. return c2;
  115040. }
  115041. var d = window.luckysheet_function.IMAGINARY.f(inumber2);
  115042. if (valueIsError(d)) {
  115043. return d;
  115044. }
  115045. var unit1 = inumber1.substring(inumber1.length - 1);
  115046. var unit2 = inumber2.substring(inumber2.length - 1);
  115047. var unit = "i";
  115048. if (unit1 === "j") {
  115049. unit = "j";
  115050. } else if (unit2 === "j") {
  115051. unit = "j";
  115052. }
  115053. if (c2 === 0 && d === 0) {
  115054. return formula_default.error.nm;
  115055. }
  115056. var den = c2 * c2 + d * d;
  115057. return window.luckysheet_function.COMPLEX.f((a * c2 + b * d) / den, (b * c2 - a * d) / den, unit);
  115058. } catch (e) {
  115059. var err = e;
  115060. err = formula_default.errorInfo(err);
  115061. return [formula_default.error.v, err];
  115062. }
  115063. },
  115064. "NOT": function() {
  115065. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  115066. return formula_default.error.na;
  115067. }
  115068. for (var i2 = 0; i2 < arguments.length; i2++) {
  115069. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  115070. if (!p[0]) {
  115071. return formula_default.error.v;
  115072. }
  115073. }
  115074. try {
  115075. var logical = func_methods_default.getCellBoolen(arguments[0]);
  115076. if (valueIsError(logical)) {
  115077. return logical;
  115078. }
  115079. return !logical;
  115080. } catch (e) {
  115081. var err = e;
  115082. err = formula_default.errorInfo(err);
  115083. return [formula_default.error.v, err];
  115084. }
  115085. },
  115086. "TRUE": function() {
  115087. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  115088. return formula_default.error.na;
  115089. }
  115090. for (var i2 = 0; i2 < arguments.length; i2++) {
  115091. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  115092. if (!p[0]) {
  115093. return formula_default.error.v;
  115094. }
  115095. }
  115096. try {
  115097. return true;
  115098. } catch (e) {
  115099. var err = e;
  115100. err = formula_default.errorInfo(err);
  115101. return [formula_default.error.v, err];
  115102. }
  115103. },
  115104. "FALSE": function() {
  115105. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  115106. return formula_default.error.na;
  115107. }
  115108. for (var i2 = 0; i2 < arguments.length; i2++) {
  115109. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  115110. if (!p[0]) {
  115111. return formula_default.error.v;
  115112. }
  115113. }
  115114. try {
  115115. return false;
  115116. } catch (e) {
  115117. var err = e;
  115118. err = formula_default.errorInfo(err);
  115119. return [formula_default.error.v, err];
  115120. }
  115121. },
  115122. "AND": function() {
  115123. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  115124. return formula_default.error.na;
  115125. }
  115126. for (var i2 = 0; i2 < arguments.length; i2++) {
  115127. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  115128. if (!p[0]) {
  115129. return formula_default.error.v;
  115130. }
  115131. }
  115132. try {
  115133. var result = true;
  115134. for (var i2 = 0; i2 < arguments.length; i2++) {
  115135. var logical = func_methods_default.getCellBoolen(arguments[i2]);
  115136. if (valueIsError(logical)) {
  115137. return logical;
  115138. }
  115139. if (!logical) {
  115140. result = false;
  115141. break;
  115142. }
  115143. }
  115144. return result;
  115145. } catch (e) {
  115146. var err = e;
  115147. err = formula_default.errorInfo(err);
  115148. return [formula_default.error.v, err];
  115149. }
  115150. },
  115151. "IFERROR": function() {
  115152. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  115153. return formula_default.error.na;
  115154. }
  115155. for (var i2 = 0; i2 < arguments.length; i2++) {
  115156. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  115157. if (!p[0]) {
  115158. return formula_default.error.v;
  115159. }
  115160. }
  115161. try {
  115162. var value_if_error = func_methods_default.getFirstValue(arguments[1], "text");
  115163. var value = func_methods_default.getFirstValue(arguments[0], "text");
  115164. if (valueIsError(value) || getObjType(value) === "string" && $.trim(value) === "") {
  115165. return value_if_error;
  115166. }
  115167. return value;
  115168. } catch (e) {
  115169. var err = e;
  115170. err = formula_default.errorInfo(err);
  115171. return [formula_default.error.v, err];
  115172. }
  115173. },
  115174. "IF": function() {
  115175. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  115176. return formula_default.error.na;
  115177. }
  115178. for (var i2 = 0; i2 < arguments.length; i2++) {
  115179. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  115180. if (!p[0]) {
  115181. return formula_default.error.v;
  115182. }
  115183. }
  115184. try {
  115185. var logical_test = func_methods_default.getCellBoolen(arguments[0]);
  115186. if (valueIsError(logical_test)) {
  115187. return logical_test;
  115188. }
  115189. var value_if_true = func_methods_default.getFirstValue(arguments[1], "text");
  115190. if (valueIsError(value_if_true) && value_if_false != error.d) {
  115191. return value_if_true;
  115192. }
  115193. var value_if_false = "";
  115194. if (arguments.length == 3) {
  115195. value_if_false = func_methods_default.getFirstValue(arguments[2], "text");
  115196. if (valueIsError(value_if_false) && value_if_false != error.d) {
  115197. return value_if_false;
  115198. }
  115199. }
  115200. if (logical_test) {
  115201. return value_if_true;
  115202. } else {
  115203. return value_if_false;
  115204. }
  115205. } catch (e) {
  115206. var err = e;
  115207. err = formula_default.errorInfo(err);
  115208. return [formula_default.error.v, err];
  115209. }
  115210. },
  115211. "OR": function() {
  115212. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  115213. return formula_default.error.na;
  115214. }
  115215. for (var i2 = 0; i2 < arguments.length; i2++) {
  115216. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  115217. if (!p[0]) {
  115218. return formula_default.error.v;
  115219. }
  115220. }
  115221. try {
  115222. var result = false;
  115223. for (var i2 = 0; i2 < arguments.length; i2++) {
  115224. var logical = func_methods_default.getCellBoolen(arguments[i2]);
  115225. if (valueIsError(logical)) {
  115226. return logical;
  115227. }
  115228. if (logical) {
  115229. result = true;
  115230. break;
  115231. }
  115232. }
  115233. return result;
  115234. } catch (e) {
  115235. var err = e;
  115236. err = formula_default.errorInfo(err);
  115237. return [formula_default.error.v, err];
  115238. }
  115239. },
  115240. "NE": function() {
  115241. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  115242. return formula_default.error.na;
  115243. }
  115244. for (var i2 = 0; i2 < arguments.length; i2++) {
  115245. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  115246. if (!p[0]) {
  115247. return formula_default.error.v;
  115248. }
  115249. }
  115250. try {
  115251. var value1 = func_methods_default.getFirstValue(arguments[0]);
  115252. if (valueIsError(value1)) {
  115253. return value1;
  115254. }
  115255. var value2 = func_methods_default.getFirstValue(arguments[1]);
  115256. if (valueIsError(value2)) {
  115257. return value2;
  115258. }
  115259. return value1 != value2;
  115260. } catch (e) {
  115261. var err = e;
  115262. err = formula_default.errorInfo(err);
  115263. return [formula_default.error.v, err];
  115264. }
  115265. },
  115266. "EQ": function() {
  115267. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  115268. return formula_default.error.na;
  115269. }
  115270. for (var i2 = 0; i2 < arguments.length; i2++) {
  115271. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  115272. if (!p[0]) {
  115273. return formula_default.error.v;
  115274. }
  115275. }
  115276. try {
  115277. var value1 = func_methods_default.getFirstValue(arguments[0]);
  115278. if (valueIsError(value1)) {
  115279. return value1;
  115280. }
  115281. var value2 = func_methods_default.getFirstValue(arguments[1]);
  115282. if (valueIsError(value2)) {
  115283. return value2;
  115284. }
  115285. return value1 == value2;
  115286. } catch (e) {
  115287. var err = e;
  115288. err = formula_default.errorInfo(err);
  115289. return [formula_default.error.v, err];
  115290. }
  115291. },
  115292. "GT": function() {
  115293. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  115294. return formula_default.error.na;
  115295. }
  115296. for (var i2 = 0; i2 < arguments.length; i2++) {
  115297. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  115298. if (!p[0]) {
  115299. return formula_default.error.v;
  115300. }
  115301. }
  115302. try {
  115303. var value1 = func_methods_default.getFirstValue(arguments[0]);
  115304. if (valueIsError(value1)) {
  115305. return value1;
  115306. }
  115307. if (!isRealNum(value1)) {
  115308. return formula_default.error.v;
  115309. }
  115310. value1 = parseFloat(value1);
  115311. var value2 = func_methods_default.getFirstValue(arguments[1]);
  115312. if (valueIsError(value2)) {
  115313. return value2;
  115314. }
  115315. if (!isRealNum(value2)) {
  115316. return formula_default.error.v;
  115317. }
  115318. value2 = parseFloat(value2);
  115319. return value1 > value2;
  115320. } catch (e) {
  115321. var err = e;
  115322. err = formula_default.errorInfo(err);
  115323. return [formula_default.error.v, err];
  115324. }
  115325. },
  115326. "GTE": function() {
  115327. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  115328. return formula_default.error.na;
  115329. }
  115330. for (var i2 = 0; i2 < arguments.length; i2++) {
  115331. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  115332. if (!p[0]) {
  115333. return formula_default.error.v;
  115334. }
  115335. }
  115336. try {
  115337. var value1 = func_methods_default.getFirstValue(arguments[0]);
  115338. if (valueIsError(value1)) {
  115339. return value1;
  115340. }
  115341. if (!isRealNum(value1)) {
  115342. return formula_default.error.v;
  115343. }
  115344. value1 = parseFloat(value1);
  115345. var value2 = func_methods_default.getFirstValue(arguments[1]);
  115346. if (valueIsError(value2)) {
  115347. return value2;
  115348. }
  115349. if (!isRealNum(value2)) {
  115350. return formula_default.error.v;
  115351. }
  115352. value2 = parseFloat(value2);
  115353. return value1 >= value2;
  115354. } catch (e) {
  115355. var err = e;
  115356. err = formula_default.errorInfo(err);
  115357. return [formula_default.error.v, err];
  115358. }
  115359. },
  115360. "LT": function() {
  115361. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  115362. return formula_default.error.na;
  115363. }
  115364. for (var i2 = 0; i2 < arguments.length; i2++) {
  115365. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  115366. if (!p[0]) {
  115367. return formula_default.error.v;
  115368. }
  115369. }
  115370. try {
  115371. var value1 = func_methods_default.getFirstValue(arguments[0]);
  115372. if (valueIsError(value1)) {
  115373. return value1;
  115374. }
  115375. if (!isRealNum(value1)) {
  115376. return formula_default.error.v;
  115377. }
  115378. value1 = parseFloat(value1);
  115379. var value2 = func_methods_default.getFirstValue(arguments[1]);
  115380. if (valueIsError(value2)) {
  115381. return value2;
  115382. }
  115383. if (!isRealNum(value2)) {
  115384. return formula_default.error.v;
  115385. }
  115386. value2 = parseFloat(value2);
  115387. return value1 < value2;
  115388. } catch (e) {
  115389. var err = e;
  115390. err = formula_default.errorInfo(err);
  115391. return [formula_default.error.v, err];
  115392. }
  115393. },
  115394. "LTE": function() {
  115395. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  115396. return formula_default.error.na;
  115397. }
  115398. for (var i2 = 0; i2 < arguments.length; i2++) {
  115399. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  115400. if (!p[0]) {
  115401. return formula_default.error.v;
  115402. }
  115403. }
  115404. try {
  115405. var value1 = func_methods_default.getFirstValue(arguments[0]);
  115406. if (valueIsError(value1)) {
  115407. return value1;
  115408. }
  115409. if (!isRealNum(value1)) {
  115410. return formula_default.error.v;
  115411. }
  115412. value1 = parseFloat(value1);
  115413. var value2 = func_methods_default.getFirstValue(arguments[1]);
  115414. if (valueIsError(value2)) {
  115415. return value2;
  115416. }
  115417. if (!isRealNum(value2)) {
  115418. return formula_default.error.v;
  115419. }
  115420. value2 = parseFloat(value2);
  115421. return value1 <= value2;
  115422. } catch (e) {
  115423. var err = e;
  115424. err = formula_default.errorInfo(err);
  115425. return [formula_default.error.v, err];
  115426. }
  115427. },
  115428. "ADD": function() {
  115429. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  115430. return formula_default.error.na;
  115431. }
  115432. for (var i2 = 0; i2 < arguments.length; i2++) {
  115433. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  115434. if (!p[0]) {
  115435. return formula_default.error.v;
  115436. }
  115437. }
  115438. try {
  115439. var value1 = func_methods_default.getFirstValue(arguments[0]);
  115440. if (valueIsError(value1)) {
  115441. return value1;
  115442. }
  115443. if (!isRealNum(value1)) {
  115444. return formula_default.error.v;
  115445. }
  115446. value1 = parseFloat(value1);
  115447. var value2 = func_methods_default.getFirstValue(arguments[1]);
  115448. if (valueIsError(value2)) {
  115449. return value2;
  115450. }
  115451. if (!isRealNum(value2)) {
  115452. return formula_default.error.v;
  115453. }
  115454. value2 = parseFloat(value2);
  115455. return value1 + value2;
  115456. } catch (e) {
  115457. var err = e;
  115458. err = formula_default.errorInfo(err);
  115459. return [formula_default.error.v, err];
  115460. }
  115461. },
  115462. "MINUS": function() {
  115463. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  115464. return formula_default.error.na;
  115465. }
  115466. for (var i2 = 0; i2 < arguments.length; i2++) {
  115467. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  115468. if (!p[0]) {
  115469. return formula_default.error.v;
  115470. }
  115471. }
  115472. try {
  115473. var value1 = func_methods_default.getFirstValue(arguments[0]);
  115474. if (valueIsError(value1)) {
  115475. return value1;
  115476. }
  115477. if (!isRealNum(value1)) {
  115478. return formula_default.error.v;
  115479. }
  115480. value1 = parseFloat(value1);
  115481. var value2 = func_methods_default.getFirstValue(arguments[1]);
  115482. if (valueIsError(value2)) {
  115483. return value2;
  115484. }
  115485. if (!isRealNum(value2)) {
  115486. return formula_default.error.v;
  115487. }
  115488. value2 = parseFloat(value2);
  115489. return value1 - value2;
  115490. } catch (e) {
  115491. var err = e;
  115492. err = formula_default.errorInfo(err);
  115493. return [formula_default.error.v, err];
  115494. }
  115495. },
  115496. "MULTIPLY": function() {
  115497. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  115498. return formula_default.error.na;
  115499. }
  115500. for (var i2 = 0; i2 < arguments.length; i2++) {
  115501. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  115502. if (!p[0]) {
  115503. return formula_default.error.v;
  115504. }
  115505. }
  115506. try {
  115507. var value1 = func_methods_default.getFirstValue(arguments[0]);
  115508. if (valueIsError(value1)) {
  115509. return value1;
  115510. }
  115511. if (!isRealNum(value1)) {
  115512. return formula_default.error.v;
  115513. }
  115514. value1 = parseFloat(value1);
  115515. var value2 = func_methods_default.getFirstValue(arguments[1]);
  115516. if (valueIsError(value2)) {
  115517. return value2;
  115518. }
  115519. if (!isRealNum(value2)) {
  115520. return formula_default.error.v;
  115521. }
  115522. value2 = parseFloat(value2);
  115523. return value1 * value2;
  115524. } catch (e) {
  115525. var err = e;
  115526. err = formula_default.errorInfo(err);
  115527. return [formula_default.error.v, err];
  115528. }
  115529. },
  115530. "DIVIDE": function() {
  115531. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  115532. return formula_default.error.na;
  115533. }
  115534. for (var i2 = 0; i2 < arguments.length; i2++) {
  115535. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  115536. if (!p[0]) {
  115537. return formula_default.error.v;
  115538. }
  115539. }
  115540. try {
  115541. var value1 = func_methods_default.getFirstValue(arguments[0]);
  115542. if (valueIsError(value1)) {
  115543. return value1;
  115544. }
  115545. if (!isRealNum(value1)) {
  115546. return formula_default.error.v;
  115547. }
  115548. value1 = parseFloat(value1);
  115549. var value2 = func_methods_default.getFirstValue(arguments[1]);
  115550. if (valueIsError(value2)) {
  115551. return value2;
  115552. }
  115553. if (!isRealNum(value2)) {
  115554. return formula_default.error.v;
  115555. }
  115556. value2 = parseFloat(value2);
  115557. if (value2 == 0) {
  115558. return formula_default.error.d;
  115559. }
  115560. return value1 / value2;
  115561. } catch (e) {
  115562. var err = e;
  115563. err = formula_default.errorInfo(err);
  115564. return [formula_default.error.v, err];
  115565. }
  115566. },
  115567. "CONCAT": function() {
  115568. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  115569. return formula_default.error.na;
  115570. }
  115571. for (var i2 = 0; i2 < arguments.length; i2++) {
  115572. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  115573. if (!p[0]) {
  115574. return formula_default.error.v;
  115575. }
  115576. }
  115577. try {
  115578. var value1 = func_methods_default.getFirstValue(arguments[0], "text");
  115579. if (valueIsError(value1)) {
  115580. return value1;
  115581. }
  115582. var value2 = func_methods_default.getFirstValue(arguments[1], "text");
  115583. if (valueIsError(value2)) {
  115584. return value2;
  115585. }
  115586. return value1 + "" + value2;
  115587. } catch (e) {
  115588. var err = e;
  115589. err = formula_default.errorInfo(err);
  115590. return [formula_default.error.v, err];
  115591. }
  115592. },
  115593. "UNARY_PERCENT": function() {
  115594. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  115595. return formula_default.error.na;
  115596. }
  115597. for (var i2 = 0; i2 < arguments.length; i2++) {
  115598. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  115599. if (!p[0]) {
  115600. return formula_default.error.v;
  115601. }
  115602. }
  115603. try {
  115604. var number = func_methods_default.getFirstValue(arguments[0]);
  115605. if (valueIsError(number)) {
  115606. return number;
  115607. }
  115608. if (!isRealNum(number)) {
  115609. return formula_default.error.v;
  115610. }
  115611. number = parseFloat(number);
  115612. var result = number / 100;
  115613. return Math.round(result * 100) / 100;
  115614. } catch (e) {
  115615. var err = e;
  115616. err = formula_default.errorInfo(err);
  115617. return [formula_default.error.v, err];
  115618. }
  115619. },
  115620. "CONCATENATE": function() {
  115621. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  115622. return formula_default.error.na;
  115623. }
  115624. for (var i2 = 0; i2 < arguments.length; i2++) {
  115625. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  115626. if (!p[0]) {
  115627. return formula_default.error.v;
  115628. }
  115629. }
  115630. try {
  115631. var result = "";
  115632. for (var i2 = 0; i2 < arguments.length; i2++) {
  115633. var text = func_methods_default.getFirstValue(arguments[i2], "text");
  115634. if (valueIsError(text)) {
  115635. return text;
  115636. }
  115637. result = result + "" + text;
  115638. }
  115639. return result;
  115640. } catch (e) {
  115641. var err = e;
  115642. err = formula_default.errorInfo(err);
  115643. return [formula_default.error.v, err];
  115644. }
  115645. },
  115646. "CODE": function() {
  115647. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  115648. return formula_default.error.na;
  115649. }
  115650. for (var i2 = 0; i2 < arguments.length; i2++) {
  115651. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  115652. if (!p[0]) {
  115653. return formula_default.error.v;
  115654. }
  115655. }
  115656. try {
  115657. var text = func_methods_default.getFirstValue(arguments[0], "text");
  115658. if (valueIsError(text)) {
  115659. return text;
  115660. }
  115661. if (text == "") {
  115662. return formula_default.error.v;
  115663. }
  115664. return text.charCodeAt(0);
  115665. } catch (e) {
  115666. var err = e;
  115667. err = formula_default.errorInfo(err);
  115668. return [formula_default.error.v, err];
  115669. }
  115670. },
  115671. "CHAR": function() {
  115672. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  115673. return formula_default.error.na;
  115674. }
  115675. for (var i2 = 0; i2 < arguments.length; i2++) {
  115676. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  115677. if (!p[0]) {
  115678. return formula_default.error.v;
  115679. }
  115680. }
  115681. try {
  115682. var number = func_methods_default.getFirstValue(arguments[0]);
  115683. if (valueIsError(number)) {
  115684. return number;
  115685. }
  115686. if (!isRealNum(number)) {
  115687. return formula_default.error.v;
  115688. }
  115689. number = parseInt(number);
  115690. if (number < 1 || number > 255) {
  115691. return formula_default.error.v;
  115692. }
  115693. return String.fromCharCode(number);
  115694. } catch (e) {
  115695. var err = e;
  115696. err = formula_default.errorInfo(err);
  115697. return [formula_default.error.v, err];
  115698. }
  115699. },
  115700. "ARABIC": function() {
  115701. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  115702. return formula_default.error.na;
  115703. }
  115704. for (var i2 = 0; i2 < arguments.length; i2++) {
  115705. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  115706. if (!p[0]) {
  115707. return formula_default.error.v;
  115708. }
  115709. }
  115710. try {
  115711. var text = func_methods_default.getFirstValue(arguments[0], "text");
  115712. if (valueIsError(text)) {
  115713. return text;
  115714. }
  115715. text = text.toString().toUpperCase();
  115716. if (!/^M*(?:D?C{0,3}|C[MD])(?:L?X{0,3}|X[CL])(?:V?I{0,3}|I[XV])$/.test(text)) {
  115717. return formula_default.error.v;
  115718. }
  115719. var r2 = 0;
  115720. text.replace(/[MDLV]|C[MD]?|X[CL]?|I[XV]?/g, function(i3) {
  115721. r2 += {
  115722. M: 1e3,
  115723. CM: 900,
  115724. D: 500,
  115725. CD: 400,
  115726. C: 100,
  115727. XC: 90,
  115728. L: 50,
  115729. XL: 40,
  115730. X: 10,
  115731. IX: 9,
  115732. V: 5,
  115733. IV: 4,
  115734. I: 1
  115735. }[i3];
  115736. });
  115737. return r2;
  115738. } catch (e) {
  115739. var err = e;
  115740. err = formula_default.errorInfo(err);
  115741. return [formula_default.error.v, err];
  115742. }
  115743. },
  115744. "ROMAN": function() {
  115745. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  115746. return formula_default.error.na;
  115747. }
  115748. for (var i2 = 0; i2 < arguments.length; i2++) {
  115749. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  115750. if (!p[0]) {
  115751. return formula_default.error.v;
  115752. }
  115753. }
  115754. try {
  115755. let convert = function(num) {
  115756. var a = [
  115757. ["", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"],
  115758. ["", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"],
  115759. ["", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"],
  115760. ["", "M", "MM", "MMM"]
  115761. ];
  115762. var i3 = a[3][Math.floor(num / 1e3)];
  115763. var j = a[2][Math.floor(num % 1e3 / 100)];
  115764. var k = a[1][Math.floor(num % 100 / 10)];
  115765. var l = a[0][num % 10];
  115766. return i3 + j + k + l;
  115767. };
  115768. var number = func_methods_default.getFirstValue(arguments[0]);
  115769. if (valueIsError(number)) {
  115770. return number;
  115771. }
  115772. if (!isRealNum(number)) {
  115773. return formula_default.error.v;
  115774. }
  115775. number = parseInt(number);
  115776. if (number == 0) {
  115777. return "";
  115778. } else if (number < 1 || number > 3999) {
  115779. return formula_default.error.v;
  115780. }
  115781. return convert(number);
  115782. } catch (e) {
  115783. var err = e;
  115784. err = formula_default.errorInfo(err);
  115785. return [formula_default.error.v, err];
  115786. }
  115787. },
  115788. "REGEXEXTRACT": function() {
  115789. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  115790. return formula_default.error.na;
  115791. }
  115792. for (var i2 = 0; i2 < arguments.length; i2++) {
  115793. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  115794. if (!p[0]) {
  115795. return formula_default.error.v;
  115796. }
  115797. }
  115798. try {
  115799. var text = func_methods_default.getFirstValue(arguments[0], "text");
  115800. if (valueIsError(text)) {
  115801. return text;
  115802. }
  115803. var regular_expression = func_methods_default.getFirstValue(arguments[1], "text");
  115804. if (valueIsError(regular_expression)) {
  115805. return regular_expression;
  115806. }
  115807. var match = text.match(new RegExp(regular_expression));
  115808. return match ? match[match.length > 1 ? match.length - 1 : 0] : null;
  115809. } catch (e) {
  115810. var err = e;
  115811. err = formula_default.errorInfo(err);
  115812. return [formula_default.error.v, err];
  115813. }
  115814. },
  115815. "REGEXMATCH": function() {
  115816. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  115817. return formula_default.error.na;
  115818. }
  115819. for (var i2 = 0; i2 < arguments.length; i2++) {
  115820. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  115821. if (!p[0]) {
  115822. return formula_default.error.v;
  115823. }
  115824. }
  115825. try {
  115826. var text = func_methods_default.getFirstValue(arguments[0], "text");
  115827. if (valueIsError(text)) {
  115828. return text;
  115829. }
  115830. var regular_expression = func_methods_default.getFirstValue(arguments[1], "text");
  115831. if (valueIsError(regular_expression)) {
  115832. return regular_expression;
  115833. }
  115834. var match = text.match(new RegExp(regular_expression));
  115835. return match ? true : false;
  115836. } catch (e) {
  115837. var err = e;
  115838. err = formula_default.errorInfo(err);
  115839. return [formula_default.error.v, err];
  115840. }
  115841. },
  115842. "REGEXREPLACE": function() {
  115843. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  115844. return formula_default.error.na;
  115845. }
  115846. for (var i2 = 0; i2 < arguments.length; i2++) {
  115847. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  115848. if (!p[0]) {
  115849. return formula_default.error.v;
  115850. }
  115851. }
  115852. try {
  115853. var text = func_methods_default.getFirstValue(arguments[0], "text");
  115854. if (valueIsError(text)) {
  115855. return text;
  115856. }
  115857. var regular_expression = func_methods_default.getFirstValue(arguments[1], "text");
  115858. if (valueIsError(regular_expression)) {
  115859. return regular_expression;
  115860. }
  115861. var replacement = func_methods_default.getFirstValue(arguments[2], "text");
  115862. if (valueIsError(replacement)) {
  115863. return replacement;
  115864. }
  115865. return text.replace(new RegExp(regular_expression), replacement);
  115866. } catch (e) {
  115867. var err = e;
  115868. err = formula_default.errorInfo(err);
  115869. return [formula_default.error.v, err];
  115870. }
  115871. },
  115872. "T": function() {
  115873. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  115874. return formula_default.error.na;
  115875. }
  115876. for (var i2 = 0; i2 < arguments.length; i2++) {
  115877. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  115878. if (!p[0]) {
  115879. return formula_default.error.v;
  115880. }
  115881. }
  115882. try {
  115883. var value = func_methods_default.getFirstValue(arguments[0], "text");
  115884. if (valueIsError(value)) {
  115885. return value;
  115886. }
  115887. return getObjType(value) == "string" ? value : "";
  115888. } catch (e) {
  115889. var err = e;
  115890. err = formula_default.errorInfo(err);
  115891. return [formula_default.error.v, err];
  115892. }
  115893. },
  115894. "FIXED": function() {
  115895. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  115896. return formula_default.error.na;
  115897. }
  115898. for (var i2 = 0; i2 < arguments.length; i2++) {
  115899. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  115900. if (!p[0]) {
  115901. return formula_default.error.v;
  115902. }
  115903. }
  115904. try {
  115905. var number = func_methods_default.getFirstValue(arguments[0]);
  115906. if (valueIsError(number)) {
  115907. return number;
  115908. }
  115909. if (!isRealNum(number)) {
  115910. return formula_default.error.v;
  115911. }
  115912. number = parseFloat(number);
  115913. var decimals = 2;
  115914. if (arguments.length >= 2) {
  115915. decimals = func_methods_default.getFirstValue(arguments[1]);
  115916. if (valueIsError(decimals)) {
  115917. return decimals;
  115918. }
  115919. if (!isRealNum(decimals)) {
  115920. return formula_default.error.v;
  115921. }
  115922. decimals = parseInt(decimals);
  115923. }
  115924. var no_commas = false;
  115925. if (arguments.length == 3) {
  115926. no_commas = func_methods_default.getCellBoolen(arguments[2]);
  115927. if (valueIsError(no_commas)) {
  115928. return no_commas;
  115929. }
  115930. }
  115931. if (decimals > 127) {
  115932. return formula_default.error.v;
  115933. }
  115934. var format = no_commas ? "0" : "#,##0";
  115935. if (decimals <= 0) {
  115936. number = Math.round(number * Math.pow(10, decimals)) / Math.pow(10, decimals);
  115937. } else if (decimals > 0) {
  115938. format += "." + new Array(decimals + 1).join("0");
  115939. }
  115940. return update(format, number);
  115941. } catch (e) {
  115942. var err = e;
  115943. err = formula_default.errorInfo(err);
  115944. return [formula_default.error.v, err];
  115945. }
  115946. },
  115947. "FIND": function() {
  115948. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  115949. return formula_default.error.na;
  115950. }
  115951. for (var i2 = 0; i2 < arguments.length; i2++) {
  115952. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  115953. if (!p[0]) {
  115954. return formula_default.error.v;
  115955. }
  115956. }
  115957. try {
  115958. var find_text = func_methods_default.getFirstValue(arguments[0], "text");
  115959. if (valueIsError(find_text)) {
  115960. return find_text;
  115961. }
  115962. find_text = find_text.toString();
  115963. var within_text = func_methods_default.getFirstValue(arguments[1], "text");
  115964. if (valueIsError(within_text)) {
  115965. return within_text;
  115966. }
  115967. within_text = within_text.toString();
  115968. var start_num = 1;
  115969. if (arguments.length == 3) {
  115970. start_num = func_methods_default.getFirstValue(arguments[2]);
  115971. if (valueIsError(start_num)) {
  115972. return start_num;
  115973. }
  115974. if (!isRealNum(start_num)) {
  115975. return formula_default.error.v;
  115976. }
  115977. start_num = parseFloat(start_num);
  115978. }
  115979. if (start_num < 0 || start_num > within_text.length) {
  115980. return formula_default.error.v;
  115981. }
  115982. if (find_text == "") {
  115983. return start_num;
  115984. }
  115985. if (within_text.indexOf(find_text) == -1) {
  115986. return formula_default.error.v;
  115987. }
  115988. var result = within_text.indexOf(find_text, start_num - 1) + 1;
  115989. return result;
  115990. } catch (e) {
  115991. var err = e;
  115992. err = formula_default.errorInfo(err);
  115993. return [formula_default.error.v, err];
  115994. }
  115995. },
  115996. "FINDB": function() {
  115997. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  115998. return formula_default.error.na;
  115999. }
  116000. for (var i2 = 0; i2 < arguments.length; i2++) {
  116001. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  116002. if (!p[0]) {
  116003. return formula_default.error.v;
  116004. }
  116005. }
  116006. try {
  116007. var find_text = func_methods_default.getFirstValue(arguments[0], "text");
  116008. if (valueIsError(find_text)) {
  116009. return find_text;
  116010. }
  116011. find_text = find_text.toString();
  116012. var within_text = func_methods_default.getFirstValue(arguments[1], "text");
  116013. if (valueIsError(within_text)) {
  116014. return within_text;
  116015. }
  116016. within_text = within_text.toString();
  116017. var start_num = 1;
  116018. if (arguments.length == 3) {
  116019. start_num = func_methods_default.getFirstValue(arguments[2]);
  116020. if (valueIsError(start_num)) {
  116021. return start_num;
  116022. }
  116023. if (!isRealNum(start_num)) {
  116024. return formula_default.error.v;
  116025. }
  116026. start_num = parseFloat(start_num);
  116027. }
  116028. if (start_num < 0 || start_num > within_text.length) {
  116029. return formula_default.error.v;
  116030. }
  116031. if (find_text == "") {
  116032. return start_num;
  116033. }
  116034. if (within_text.indexOf(find_text) == -1) {
  116035. return formula_default.error.v;
  116036. }
  116037. var strArr = within_text.split("");
  116038. var index2 = within_text.indexOf(find_text, start_num - 1);
  116039. var result = 0;
  116040. for (var i2 = 0; i2 < index2; i2++) {
  116041. if (/[^\x00-\xff]/g.test(strArr[i2])) {
  116042. result += 2;
  116043. } else {
  116044. result += 1;
  116045. }
  116046. }
  116047. return result;
  116048. } catch (e) {
  116049. var err = e;
  116050. err = formula_default.errorInfo(err);
  116051. return [formula_default.error.v, err];
  116052. }
  116053. },
  116054. "JOIN": function() {
  116055. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  116056. return formula_default.error.na;
  116057. }
  116058. for (var i2 = 0; i2 < arguments.length; i2++) {
  116059. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  116060. if (!p[0]) {
  116061. return formula_default.error.v;
  116062. }
  116063. }
  116064. try {
  116065. var separator = func_methods_default.getFirstValue(arguments[0], "text");
  116066. if (valueIsError(separator)) {
  116067. return separator;
  116068. }
  116069. var dataArr = [];
  116070. for (var i2 = 1; i2 < arguments.length; i2++) {
  116071. var data = arguments[i2];
  116072. if (getObjType(data) == "array") {
  116073. if (getObjType(data[0]) == "array" && !func_methods_default.isDyadicArr(data)) {
  116074. return formula_default.error.v;
  116075. }
  116076. dataArr = dataArr.concat(func_methods_default.getDataArr(data, false));
  116077. } else if (getObjType(data) == "object" && data.startCell != null) {
  116078. dataArr = dataArr.concat(func_methods_default.getCellDataArr(data, "text", false));
  116079. } else {
  116080. dataArr.push(data);
  116081. }
  116082. }
  116083. return dataArr.join(separator);
  116084. } catch (e) {
  116085. var err = e;
  116086. err = formula_default.errorInfo(err);
  116087. return [formula_default.error.v, err];
  116088. }
  116089. },
  116090. "LEFT": function() {
  116091. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  116092. return formula_default.error.na;
  116093. }
  116094. for (var i2 = 0; i2 < arguments.length; i2++) {
  116095. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  116096. if (!p[0]) {
  116097. return formula_default.error.v;
  116098. }
  116099. }
  116100. try {
  116101. var text = func_methods_default.getFirstValue(arguments[0], "text");
  116102. if (valueIsError(text)) {
  116103. return text;
  116104. }
  116105. text = text.toString();
  116106. var num_chars = 1;
  116107. if (arguments.length == 2) {
  116108. num_chars = func_methods_default.getFirstValue(arguments[1]);
  116109. if (valueIsError(num_chars)) {
  116110. return num_chars;
  116111. }
  116112. if (!isRealNum(num_chars)) {
  116113. return formula_default.error.v;
  116114. }
  116115. num_chars = parseInt(num_chars);
  116116. }
  116117. if (num_chars < 0) {
  116118. return formula_default.error.v;
  116119. }
  116120. if (num_chars >= text.length) {
  116121. return text;
  116122. } else if (num_chars == 0) {
  116123. return "";
  116124. } else {
  116125. return text.substr(0, num_chars);
  116126. }
  116127. } catch (e) {
  116128. var err = e;
  116129. err = formula_default.errorInfo(err);
  116130. return [formula_default.error.v, err];
  116131. }
  116132. },
  116133. "RIGHT": function() {
  116134. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  116135. return formula_default.error.na;
  116136. }
  116137. for (var i2 = 0; i2 < arguments.length; i2++) {
  116138. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  116139. if (!p[0]) {
  116140. return formula_default.error.v;
  116141. }
  116142. }
  116143. try {
  116144. var text = func_methods_default.getFirstValue(arguments[0], "text");
  116145. if (valueIsError(text)) {
  116146. return text;
  116147. }
  116148. text = text.toString();
  116149. var num_chars = 1;
  116150. if (arguments.length == 2) {
  116151. num_chars = func_methods_default.getFirstValue(arguments[1]);
  116152. if (valueIsError(num_chars)) {
  116153. return num_chars;
  116154. }
  116155. if (!isRealNum(num_chars)) {
  116156. return formula_default.error.v;
  116157. }
  116158. num_chars = parseInt(num_chars);
  116159. }
  116160. if (num_chars < 0) {
  116161. return formula_default.error.v;
  116162. }
  116163. if (num_chars >= text.length) {
  116164. return text;
  116165. } else if (num_chars == 0) {
  116166. return "";
  116167. } else {
  116168. return text.substr(-num_chars, num_chars);
  116169. }
  116170. } catch (e) {
  116171. var err = e;
  116172. err = formula_default.errorInfo(err);
  116173. return [formula_default.error.v, err];
  116174. }
  116175. },
  116176. "MID": function() {
  116177. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  116178. return formula_default.error.na;
  116179. }
  116180. for (var i2 = 0; i2 < arguments.length; i2++) {
  116181. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  116182. if (!p[0]) {
  116183. return formula_default.error.v;
  116184. }
  116185. }
  116186. try {
  116187. var text = func_methods_default.getFirstValue(arguments[0], "text");
  116188. if (valueIsError(text)) {
  116189. return text;
  116190. }
  116191. text = text.toString();
  116192. var start_num = func_methods_default.getFirstValue(arguments[1]);
  116193. if (valueIsError(start_num)) {
  116194. return start_num;
  116195. }
  116196. if (!isRealNum(start_num)) {
  116197. return formula_default.error.v;
  116198. }
  116199. start_num = parseInt(start_num);
  116200. var num_chars = func_methods_default.getFirstValue(arguments[2]);
  116201. if (valueIsError(num_chars)) {
  116202. return num_chars;
  116203. }
  116204. if (!isRealNum(num_chars)) {
  116205. return formula_default.error.v;
  116206. }
  116207. num_chars = parseInt(num_chars);
  116208. if (start_num < 1 || num_chars < 0) {
  116209. return formula_default.error.v;
  116210. }
  116211. if (start_num > text.length) {
  116212. return "";
  116213. }
  116214. if (start_num + num_chars > text.length) {
  116215. return text.substr(start_num - 1, text.length - start_num + 1);
  116216. }
  116217. return text.substr(start_num - 1, num_chars);
  116218. } catch (e) {
  116219. var err = e;
  116220. err = formula_default.errorInfo(err);
  116221. return [formula_default.error.v, err];
  116222. }
  116223. },
  116224. "LEN": function() {
  116225. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  116226. return formula_default.error.na;
  116227. }
  116228. for (var i2 = 0; i2 < arguments.length; i2++) {
  116229. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  116230. if (!p[0]) {
  116231. return formula_default.error.v;
  116232. }
  116233. }
  116234. try {
  116235. var text = func_methods_default.getFirstValue(arguments[0], "text");
  116236. if (valueIsError(text)) {
  116237. return text;
  116238. }
  116239. text = text.toString();
  116240. return text.length;
  116241. } catch (e) {
  116242. var err = e;
  116243. err = formula_default.errorInfo(err);
  116244. return [formula_default.error.v, err];
  116245. }
  116246. },
  116247. "LENB": function() {
  116248. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  116249. return formula_default.error.na;
  116250. }
  116251. for (var i2 = 0; i2 < arguments.length; i2++) {
  116252. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  116253. if (!p[0]) {
  116254. return formula_default.error.v;
  116255. }
  116256. }
  116257. try {
  116258. var text = func_methods_default.getFirstValue(arguments[0], "text");
  116259. if (valueIsError(text)) {
  116260. return text;
  116261. }
  116262. text = text.toString();
  116263. return text.replace(/[^\x00-\xff]/g, "aa").length;
  116264. } catch (e) {
  116265. var err = e;
  116266. err = formula_default.errorInfo(err);
  116267. return [formula_default.error.v, err];
  116268. }
  116269. },
  116270. "LOWER": function() {
  116271. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  116272. return formula_default.error.na;
  116273. }
  116274. for (var i2 = 0; i2 < arguments.length; i2++) {
  116275. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  116276. if (!p[0]) {
  116277. return formula_default.error.v;
  116278. }
  116279. }
  116280. try {
  116281. var text = func_methods_default.getFirstValue(arguments[0], "text");
  116282. if (valueIsError(text)) {
  116283. return text;
  116284. }
  116285. text = text.toString();
  116286. return text ? text.toLowerCase() : text;
  116287. } catch (e) {
  116288. var err = e;
  116289. err = formula_default.errorInfo(err);
  116290. return [formula_default.error.v, err];
  116291. }
  116292. },
  116293. "UPPER": function() {
  116294. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  116295. return formula_default.error.na;
  116296. }
  116297. for (var i2 = 0; i2 < arguments.length; i2++) {
  116298. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  116299. if (!p[0]) {
  116300. return formula_default.error.v;
  116301. }
  116302. }
  116303. try {
  116304. var text = func_methods_default.getFirstValue(arguments[0], "text");
  116305. if (valueIsError(text)) {
  116306. return text;
  116307. }
  116308. text = text.toString();
  116309. return text ? text.toUpperCase() : text;
  116310. } catch (e) {
  116311. var err = e;
  116312. err = formula_default.errorInfo(err);
  116313. return [formula_default.error.v, err];
  116314. }
  116315. },
  116316. "EXACT": function() {
  116317. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  116318. return formula_default.error.na;
  116319. }
  116320. for (var i2 = 0; i2 < arguments.length; i2++) {
  116321. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  116322. if (!p[0]) {
  116323. return formula_default.error.v;
  116324. }
  116325. }
  116326. try {
  116327. var text1 = func_methods_default.getFirstValue(arguments[0], "text");
  116328. if (valueIsError(text1)) {
  116329. return text1;
  116330. }
  116331. text1 = text1.toString();
  116332. var text2 = func_methods_default.getFirstValue(arguments[1], "text");
  116333. if (valueIsError(text2)) {
  116334. return text2;
  116335. }
  116336. text2 = text2.toString();
  116337. return text1 === text2;
  116338. } catch (e) {
  116339. var err = e;
  116340. err = formula_default.errorInfo(err);
  116341. return [formula_default.error.v, err];
  116342. }
  116343. },
  116344. "REPLACE": function() {
  116345. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  116346. return formula_default.error.na;
  116347. }
  116348. for (var i2 = 0; i2 < arguments.length; i2++) {
  116349. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  116350. if (!p[0]) {
  116351. return formula_default.error.v;
  116352. }
  116353. }
  116354. try {
  116355. var old_text = func_methods_default.getFirstValue(arguments[0], "text");
  116356. if (valueIsError(old_text)) {
  116357. return old_text;
  116358. }
  116359. old_text = old_text.toString();
  116360. var start_num = func_methods_default.getFirstValue(arguments[1]);
  116361. if (valueIsError(start_num)) {
  116362. return start_num;
  116363. }
  116364. if (!isRealNum(start_num)) {
  116365. return formula_default.error.v;
  116366. }
  116367. start_num = parseInt(start_num);
  116368. var num_chars = func_methods_default.getFirstValue(arguments[2]);
  116369. if (valueIsError(num_chars)) {
  116370. return num_chars;
  116371. }
  116372. if (!isRealNum(num_chars)) {
  116373. return formula_default.error.v;
  116374. }
  116375. num_chars = parseInt(num_chars);
  116376. var new_text = func_methods_default.getFirstValue(arguments[3], "text");
  116377. if (valueIsError(new_text)) {
  116378. return new_text;
  116379. }
  116380. new_text = new_text.toString();
  116381. return old_text.substr(0, start_num - 1) + new_text + old_text.substr(start_num - 1 + num_chars);
  116382. } catch (e) {
  116383. var err = e;
  116384. err = formula_default.errorInfo(err);
  116385. return [formula_default.error.v, err];
  116386. }
  116387. },
  116388. "REPT": function() {
  116389. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  116390. return formula_default.error.na;
  116391. }
  116392. for (var i2 = 0; i2 < arguments.length; i2++) {
  116393. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  116394. if (!p[0]) {
  116395. return formula_default.error.v;
  116396. }
  116397. }
  116398. try {
  116399. var text = func_methods_default.getFirstValue(arguments[0], "text");
  116400. if (valueIsError(text)) {
  116401. return text;
  116402. }
  116403. text = text.toString();
  116404. var number_times = func_methods_default.getFirstValue(arguments[1]);
  116405. if (valueIsError(number_times)) {
  116406. return number_times;
  116407. }
  116408. if (!isRealNum(number_times)) {
  116409. return formula_default.error.v;
  116410. }
  116411. number_times = parseInt(number_times);
  116412. if (number_times < 0) {
  116413. return formula_default.error.v;
  116414. }
  116415. if (number_times > 100) {
  116416. number_times = 100;
  116417. }
  116418. return new Array(number_times + 1).join(text);
  116419. } catch (e) {
  116420. var err = e;
  116421. err = formula_default.errorInfo(err);
  116422. return [formula_default.error.v, err];
  116423. }
  116424. },
  116425. "SEARCH": function() {
  116426. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  116427. return formula_default.error.na;
  116428. }
  116429. for (var i2 = 0; i2 < arguments.length; i2++) {
  116430. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  116431. if (!p[0]) {
  116432. return formula_default.error.v;
  116433. }
  116434. }
  116435. try {
  116436. var find_text = func_methods_default.getFirstValue(arguments[0], "text");
  116437. if (valueIsError(find_text)) {
  116438. return find_text;
  116439. }
  116440. find_text = find_text.toString();
  116441. var within_text = func_methods_default.getFirstValue(arguments[1], "text");
  116442. if (valueIsError(within_text)) {
  116443. return within_text;
  116444. }
  116445. within_text = within_text.toString();
  116446. var start_num = 1;
  116447. if (arguments.length == 3) {
  116448. start_num = func_methods_default.getFirstValue(arguments[2]);
  116449. if (valueIsError(start_num)) {
  116450. return start_num;
  116451. }
  116452. if (!isRealNum(start_num)) {
  116453. return formula_default.error.v;
  116454. }
  116455. start_num = parseInt(start_num);
  116456. }
  116457. if (start_num <= 0 || start_num > within_text.length) {
  116458. return formula_default.error.v;
  116459. }
  116460. var foundAt = within_text.toLowerCase().indexOf(find_text.toLowerCase(), start_num - 1) + 1;
  116461. return foundAt === 0 ? formula_default.error.v : foundAt;
  116462. } catch (e) {
  116463. var err = e;
  116464. err = formula_default.errorInfo(err);
  116465. return [formula_default.error.v, err];
  116466. }
  116467. },
  116468. "SUBSTITUTE": function() {
  116469. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  116470. return formula_default.error.na;
  116471. }
  116472. for (var i2 = 0; i2 < arguments.length; i2++) {
  116473. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  116474. if (!p[0]) {
  116475. return formula_default.error.v;
  116476. }
  116477. }
  116478. try {
  116479. var text = func_methods_default.getFirstValue(arguments[0], "text");
  116480. if (valueIsError(text)) {
  116481. return text;
  116482. }
  116483. text = text.toString();
  116484. var old_text = func_methods_default.getFirstValue(arguments[1], "text");
  116485. if (valueIsError(old_text)) {
  116486. return old_text;
  116487. }
  116488. old_text = old_text.toString();
  116489. var new_text = func_methods_default.getFirstValue(arguments[2], "text");
  116490. if (valueIsError(new_text)) {
  116491. return new_text;
  116492. }
  116493. new_text = new_text.toString();
  116494. var instance_num = null;
  116495. if (arguments.length == 4) {
  116496. instance_num = func_methods_default.getFirstValue(arguments[3]);
  116497. if (valueIsError(instance_num)) {
  116498. return instance_num;
  116499. }
  116500. if (!isRealNum(instance_num)) {
  116501. return formula_default.error.v;
  116502. }
  116503. instance_num = parseInt(instance_num);
  116504. }
  116505. var reg = new RegExp(old_text, "g");
  116506. var result;
  116507. if (instance_num == null) {
  116508. result = text.replace(reg, new_text);
  116509. } else {
  116510. if (instance_num <= 0) {
  116511. return formula_default.error.v;
  116512. }
  116513. var match = text.match(reg);
  116514. if (match == null || instance_num > match.length) {
  116515. return text;
  116516. } else {
  116517. var len = old_text.length;
  116518. var index2 = 0;
  116519. for (var i2 = 1; i2 <= instance_num; i2++) {
  116520. index2 = text.indexOf(old_text, index2) + 1;
  116521. }
  116522. result = text.substring(0, index2 - 1) + new_text + text.substring(index2 - 1 + len);
  116523. }
  116524. }
  116525. return result;
  116526. } catch (e) {
  116527. var err = e;
  116528. err = formula_default.errorInfo(err);
  116529. return [formula_default.error.v, err];
  116530. }
  116531. },
  116532. "CLEAN": function() {
  116533. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  116534. return formula_default.error.na;
  116535. }
  116536. for (var i2 = 0; i2 < arguments.length; i2++) {
  116537. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  116538. if (!p[0]) {
  116539. return formula_default.error.v;
  116540. }
  116541. }
  116542. try {
  116543. var text = func_methods_default.getFirstValue(arguments[0], "text");
  116544. if (valueIsError(text)) {
  116545. return text;
  116546. }
  116547. text = text.toString();
  116548. var textArr = [];
  116549. for (var i2 = 0; i2 < text.length; i2++) {
  116550. var code = text.charCodeAt(i2);
  116551. if (/[\u4e00-\u9fa5]/g.test(text.charAt(i2)) || code > 31 && code < 127) {
  116552. textArr.push(text.charAt(i2));
  116553. }
  116554. }
  116555. return textArr.join("");
  116556. } catch (e) {
  116557. var err = e;
  116558. err = formula_default.errorInfo(err);
  116559. return [formula_default.error.v, err];
  116560. }
  116561. },
  116562. "TEXT": function() {
  116563. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  116564. return formula_default.error.na;
  116565. }
  116566. for (var i2 = 0; i2 < arguments.length; i2++) {
  116567. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  116568. if (!p[0]) {
  116569. return formula_default.error.v;
  116570. }
  116571. }
  116572. try {
  116573. var value = func_methods_default.getFirstValue(arguments[0]);
  116574. if (valueIsError(value)) {
  116575. return value;
  116576. }
  116577. if (!isRealNum(value)) {
  116578. return formula_default.error.v;
  116579. }
  116580. value = parseFloat(value);
  116581. var format_text = func_methods_default.getFirstValue(arguments[1], "text");
  116582. if (valueIsError(format_text)) {
  116583. return format_text;
  116584. }
  116585. format_text = format_text.toString();
  116586. return update(format_text, value);
  116587. } catch (e) {
  116588. var err = e;
  116589. err = formula_default.errorInfo(err);
  116590. return [formula_default.error.v, err];
  116591. }
  116592. },
  116593. "TRIM": function() {
  116594. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  116595. return formula_default.error.na;
  116596. }
  116597. for (var i2 = 0; i2 < arguments.length; i2++) {
  116598. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  116599. if (!p[0]) {
  116600. return formula_default.error.v;
  116601. }
  116602. }
  116603. try {
  116604. var text = func_methods_default.getFirstValue(arguments[0], "text");
  116605. if (valueIsError(text)) {
  116606. return text;
  116607. }
  116608. text = text.toString();
  116609. return text.replace(/ +/g, " ").trim();
  116610. } catch (e) {
  116611. var err = e;
  116612. err = formula_default.errorInfo(err);
  116613. return [formula_default.error.v, err];
  116614. }
  116615. },
  116616. "VALUE": function() {
  116617. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  116618. return formula_default.error.na;
  116619. }
  116620. for (var i2 = 0; i2 < arguments.length; i2++) {
  116621. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  116622. if (!p[0]) {
  116623. return formula_default.error.v;
  116624. }
  116625. }
  116626. try {
  116627. var text = func_methods_default.getFirstValue(arguments[0], "text");
  116628. if (valueIsError(text)) {
  116629. return text;
  116630. }
  116631. text = text.toString();
  116632. return genarate(text)[2];
  116633. } catch (e) {
  116634. var err = e;
  116635. err = formula_default.errorInfo(err);
  116636. return [formula_default.error.v, err];
  116637. }
  116638. },
  116639. "PROPER": function() {
  116640. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  116641. return formula_default.error.na;
  116642. }
  116643. for (var i2 = 0; i2 < arguments.length; i2++) {
  116644. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  116645. if (!p[0]) {
  116646. return formula_default.error.v;
  116647. }
  116648. }
  116649. try {
  116650. var text = func_methods_default.getFirstValue(arguments[0], "text");
  116651. if (valueIsError(text)) {
  116652. return text;
  116653. }
  116654. text = text.toString().toLowerCase();
  116655. return text.replace(/[a-zA-Z]+/g, function(word) {
  116656. return word.substring(0, 1).toUpperCase() + word.substring(1);
  116657. });
  116658. } catch (e) {
  116659. var err = e;
  116660. err = formula_default.errorInfo(err);
  116661. return [formula_default.error.v, err];
  116662. }
  116663. },
  116664. "CONVERT": function() {
  116665. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  116666. return formula_default.error.na;
  116667. }
  116668. for (var i2 = 0; i2 < arguments.length; i2++) {
  116669. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  116670. if (!p[0]) {
  116671. return formula_default.error.v;
  116672. }
  116673. }
  116674. try {
  116675. var number = func_methods_default.getFirstValue(arguments[0]);
  116676. if (valueIsError(number)) {
  116677. return number;
  116678. }
  116679. if (!isRealNum(number)) {
  116680. return formula_default.error.v;
  116681. }
  116682. number = parseFloat(number);
  116683. var from_unit = func_methods_default.getFirstValue(arguments[1], "text");
  116684. if (valueIsError(from_unit)) {
  116685. return from_unit;
  116686. }
  116687. from_unit = from_unit.toString();
  116688. var to_unit = func_methods_default.getFirstValue(arguments[2], "text");
  116689. if (valueIsError(to_unit)) {
  116690. return to_unit;
  116691. }
  116692. to_unit = to_unit.toString();
  116693. var units = [
  116694. ["a.u. of action", "?", null, "action", false, false, 105457168181818e-48],
  116695. ["a.u. of charge", "e", null, "electric_charge", false, false, 160217653141414e-33],
  116696. ["a.u. of energy", "Eh", null, "energy", false, false, 435974417757576e-32],
  116697. ["a.u. of length", "a?", null, "length", false, false, 529177210818182e-25],
  116698. ["a.u. of mass", "m?", null, "mass", false, false, 910938261616162e-45],
  116699. ["a.u. of time", "?/Eh", null, "time", false, false, 241888432650516e-31],
  116700. ["admiralty knot", "admkn", null, "speed", false, true, 0.514773333],
  116701. ["ampere", "A", null, "electric_current", true, false, 1],
  116702. ["ampere per meter", "A/m", null, "magnetic_field_intensity", true, false, 1],
  116703. ["\xE5ngstr\xF6m", "\xC5", ["ang"], "length", false, true, 1e-10],
  116704. ["are", "ar", null, "area", false, true, 100],
  116705. ["astronomical unit", "ua", null, "length", false, false, 149597870691667e-25],
  116706. ["bar", "bar", null, "pressure", false, false, 1e5],
  116707. ["barn", "b", null, "area", false, false, 1e-28],
  116708. ["becquerel", "Bq", null, "radioactivity", true, false, 1],
  116709. ["bit", "bit", ["b"], "information", false, true, 1],
  116710. ["btu", "BTU", ["btu"], "energy", false, true, 1055.05585262],
  116711. ["byte", "byte", null, "information", false, true, 8],
  116712. ["candela", "cd", null, "luminous_intensity", true, false, 1],
  116713. ["candela per square metre", "cd/m?", null, "luminance", true, false, 1],
  116714. ["coulomb", "C", null, "electric_charge", true, false, 1],
  116715. ["cubic \xE5ngstr\xF6m", "ang3", ["ang^3"], "volume", false, true, 1e-30],
  116716. ["cubic foot", "ft3", ["ft^3"], "volume", false, true, 0.028316846592],
  116717. ["cubic inch", "in3", ["in^3"], "volume", false, true, 16387064e-12],
  116718. ["cubic light-year", "ly3", ["ly^3"], "volume", false, true, 846786664623715e-61],
  116719. ["cubic metre", "m?", null, "volume", true, true, 1],
  116720. ["cubic mile", "mi3", ["mi^3"], "volume", false, true, 416818182544058e-5],
  116721. ["cubic nautical mile", "Nmi3", ["Nmi^3"], "volume", false, true, 6352182208],
  116722. ["cubic Pica", "Pica3", ["Picapt3", "Pica^3", "Picapt^3"], "volume", false, true, 758660370370369e-22],
  116723. ["cubic yard", "yd3", ["yd^3"], "volume", false, true, 0.764554857984],
  116724. ["cup", "cup", null, "volume", false, true, 2365882365e-13],
  116725. ["dalton", "Da", ["u"], "mass", false, false, 166053886282828e-41],
  116726. ["day", "d", ["day"], "time", false, true, 86400],
  116727. ["degree", "\xB0", null, "angle", false, false, 0.0174532925199433],
  116728. ["degrees Rankine", "Rank", null, "temperature", false, true, 0.555555555555556],
  116729. ["dyne", "dyn", ["dy"], "force", false, true, 1e-5],
  116730. ["electronvolt", "eV", ["ev"], "energy", false, true, 1.60217656514141],
  116731. ["ell", "ell", null, "length", false, true, 1.143],
  116732. ["erg", "erg", ["e"], "energy", false, true, 1e-7],
  116733. ["farad", "F", null, "electric_capacitance", true, false, 1],
  116734. ["fluid ounce", "oz", null, "volume", false, true, 295735295625e-16],
  116735. ["foot", "ft", null, "length", false, true, 0.3048],
  116736. ["foot-pound", "flb", null, "energy", false, true, 1.3558179483314],
  116737. ["gal", "Gal", null, "acceleration", false, false, 0.01],
  116738. ["gallon", "gal", null, "volume", false, true, 0.003785411784],
  116739. ["gauss", "G", ["ga"], "magnetic_flux_density", false, true, 1],
  116740. ["grain", "grain", null, "mass", false, true, 647989e-10],
  116741. ["gram", "g", null, "mass", false, true, 1e-3],
  116742. ["gray", "Gy", null, "absorbed_dose", true, false, 1],
  116743. ["gross registered ton", "GRT", ["regton"], "volume", false, true, 2.8316846592],
  116744. ["hectare", "ha", null, "area", false, true, 1e4],
  116745. ["henry", "H", null, "inductance", true, false, 1],
  116746. ["hertz", "Hz", null, "frequency", true, false, 1],
  116747. ["horsepower", "HP", ["h"], "power", false, true, 745.69987158227],
  116748. ["horsepower-hour", "HPh", ["hh", "hph"], "energy", false, true, 2684519538e-3],
  116749. ["hour", "h", ["hr"], "time", false, true, 3600],
  116750. ["imperial gallon (U.K.)", "uk_gal", null, "volume", false, true, 454609e-8],
  116751. ["imperial hundredweight", "lcwt", ["uk_cwt", "hweight"], "mass", false, true, 50.802345],
  116752. ["imperial quart (U.K)", "uk_qt", null, "volume", false, true, 0.0011365225],
  116753. ["imperial ton", "brton", ["uk_ton", "LTON"], "mass", false, true, 1016.046909],
  116754. ["inch", "in", null, "length", false, true, 0.0254],
  116755. ["international acre", "uk_acre", null, "area", false, true, 4046.8564224],
  116756. ["IT calorie", "cal", null, "energy", false, true, 4.1868],
  116757. ["joule", "J", null, "energy", true, true, 1],
  116758. ["katal", "kat", null, "catalytic_activity", true, false, 1],
  116759. ["kelvin", "K", ["kel"], "temperature", true, true, 1],
  116760. ["kilogram", "kg", null, "mass", true, true, 1],
  116761. ["knot", "kn", null, "speed", false, true, 0.514444444444444],
  116762. ["light-year", "ly", null, "length", false, true, 9460730472580800],
  116763. ["litre", "L", ["l", "lt"], "volume", false, true, 1e-3],
  116764. ["lumen", "lm", null, "luminous_flux", true, false, 1],
  116765. ["lux", "lx", null, "illuminance", true, false, 1],
  116766. ["maxwell", "Mx", null, "magnetic_flux", false, false, 1e-18],
  116767. ["measurement ton", "MTON", null, "volume", false, true, 1.13267386368],
  116768. ["meter per hour", "m/h", ["m/hr"], "speed", false, true, 27777777777778e-17],
  116769. ["meter per second", "m/s", ["m/sec"], "speed", true, true, 1],
  116770. ["meter per second squared", "m?s??", null, "acceleration", true, false, 1],
  116771. ["parsec", "pc", ["parsec"], "length", false, true, 30856775814671900],
  116772. ["meter squared per second", "m?/s", null, "kinematic_viscosity", true, false, 1],
  116773. ["metre", "m", null, "length", true, true, 1],
  116774. ["miles per hour", "mph", null, "speed", false, true, 0.44704],
  116775. ["millimetre of mercury", "mmHg", null, "pressure", false, false, 133.322],
  116776. ["minute", "?", null, "angle", false, false, 290888208665722e-18],
  116777. ["minute", "min", ["mn"], "time", false, true, 60],
  116778. ["modern teaspoon", "tspm", null, "volume", false, true, 5e-6],
  116779. ["mole", "mol", null, "amount_of_substance", true, false, 1],
  116780. ["morgen", "Morgen", null, "area", false, true, 2500],
  116781. ["n.u. of action", "?", null, "action", false, false, 105457168181818e-48],
  116782. ["n.u. of mass", "m?", null, "mass", false, false, 910938261616162e-45],
  116783. ["n.u. of speed", "c?", null, "speed", false, false, 299792458],
  116784. ["n.u. of time", "?/(me?c??)", null, "time", false, false, 128808866778687e-35],
  116785. ["nautical mile", "M", ["Nmi"], "length", false, true, 1852],
  116786. ["newton", "N", null, "force", true, true, 1],
  116787. ["\u0153rsted", "Oe ", null, "magnetic_field_intensity", false, false, 79.5774715459477],
  116788. ["ohm", "\u03A9", null, "electric_resistance", true, false, 1],
  116789. ["ounce mass", "ozm", null, "mass", false, true, 0.028349523125],
  116790. ["pascal", "Pa", null, "pressure", true, false, 1],
  116791. ["pascal second", "Pa?s", null, "dynamic_viscosity", true, false, 1],
  116792. ["pferdest\xE4rke", "PS", null, "power", false, true, 735.49875],
  116793. ["phot", "ph", null, "illuminance", false, false, 1e-4],
  116794. ["pica (1/6 inch)", "pica", null, "length", false, true, 35277777777778e-17],
  116795. ["pica (1/72 inch)", "Pica", ["Picapt"], "length", false, true, 0.00423333333333333],
  116796. ["poise", "P", null, "dynamic_viscosity", false, false, 0.1],
  116797. ["pond", "pond", null, "force", false, true, 980665e-8],
  116798. ["pound force", "lbf", null, "force", false, true, 4.4482216152605],
  116799. ["pound mass", "lbm", null, "mass", false, true, 0.45359237],
  116800. ["quart", "qt", null, "volume", false, true, 946352946e-12],
  116801. ["radian", "rad", null, "angle", true, false, 1],
  116802. ["second", "?", null, "angle", false, false, 484813681109536e-20],
  116803. ["second", "s", ["sec"], "time", true, true, 1],
  116804. ["short hundredweight", "cwt", ["shweight"], "mass", false, true, 45.359237],
  116805. ["siemens", "S", null, "electrical_conductance", true, false, 1],
  116806. ["sievert", "Sv", null, "equivalent_dose", true, false, 1],
  116807. ["slug", "sg", null, "mass", false, true, 14.59390294],
  116808. ["square \xE5ngstr\xF6m", "ang2", ["ang^2"], "area", false, true, 1e-20],
  116809. ["square foot", "ft2", ["ft^2"], "area", false, true, 0.09290304],
  116810. ["square inch", "in2", ["in^2"], "area", false, true, 64516e-8],
  116811. ["square light-year", "ly2", ["ly^2"], "area", false, true, 895054210748189e17],
  116812. ["square meter", "m?", null, "area", true, true, 1],
  116813. ["square mile", "mi2", ["mi^2"], "area", false, true, 2589988110336e-6],
  116814. ["square nautical mile", "Nmi2", ["Nmi^2"], "area", false, true, 3429904],
  116815. ["square Pica", "Pica2", ["Picapt2", "Pica^2", "Picapt^2"], "area", false, true, 1792111111111e-17],
  116816. ["square yard", "yd2", ["yd^2"], "area", false, true, 0.83612736],
  116817. ["statute mile", "mi", null, "length", false, true, 1609.344],
  116818. ["steradian", "sr", null, "solid_angle", true, false, 1],
  116819. ["stilb", "sb", null, "luminance", false, false, 1e-4],
  116820. ["stokes", "St", null, "kinematic_viscosity", false, false, 1e-4],
  116821. ["stone", "stone", null, "mass", false, true, 6.35029318],
  116822. ["tablespoon", "tbs", null, "volume", false, true, 147868e-10],
  116823. ["teaspoon", "tsp", null, "volume", false, true, 492892e-11],
  116824. ["tesla", "T", null, "magnetic_flux_density", true, true, 1],
  116825. ["thermodynamic calorie", "c", null, "energy", false, true, 4.184],
  116826. ["ton", "ton", null, "mass", false, true, 907.18474],
  116827. ["tonne", "t", null, "mass", false, false, 1e3],
  116828. ["U.K. pint", "uk_pt", null, "volume", false, true, 56826125e-11],
  116829. ["U.S. bushel", "bushel", null, "volume", false, true, 0.03523907],
  116830. ["U.S. oil barrel", "barrel", null, "volume", false, true, 0.158987295],
  116831. ["U.S. pint", "pt", ["us_pt"], "volume", false, true, 473176473e-12],
  116832. ["U.S. survey mile", "survey_mi", null, "length", false, true, 1609.347219],
  116833. ["U.S. survey/statute acre", "us_acre", null, "area", false, true, 4046.87261],
  116834. ["volt", "V", null, "voltage", true, false, 1],
  116835. ["watt", "W", null, "power", true, true, 1],
  116836. ["watt-hour", "Wh", ["wh"], "energy", false, true, 3600],
  116837. ["weber", "Wb", null, "magnetic_flux", true, false, 1],
  116838. ["yard", "yd", null, "length", false, true, 0.9144],
  116839. ["year", "yr", null, "time", false, true, 31557600]
  116840. ];
  116841. var binary_prefixes = {
  116842. Yi: ["yobi", 80, 12089258196146292e8, "Yi", "yotta"],
  116843. Zi: ["zebi", 70, 11805916207174113e5, "Zi", "zetta"],
  116844. Ei: ["exbi", 60, 1152921504606847e3, "Ei", "exa"],
  116845. Pi: ["pebi", 50, 1125899906842624, "Pi", "peta"],
  116846. Ti: ["tebi", 40, 1099511627776, "Ti", "tera"],
  116847. Gi: ["gibi", 30, 1073741824, "Gi", "giga"],
  116848. Mi: ["mebi", 20, 1048576, "Mi", "mega"],
  116849. ki: ["kibi", 10, 1024, "ki", "kilo"]
  116850. };
  116851. var unit_prefixes = {
  116852. Y: ["yotta", 1e24, "Y"],
  116853. Z: ["zetta", 1e21, "Z"],
  116854. E: ["exa", 1e18, "E"],
  116855. P: ["peta", 1e15, "P"],
  116856. T: ["tera", 1e12, "T"],
  116857. G: ["giga", 1e9, "G"],
  116858. M: ["mega", 1e6, "M"],
  116859. k: ["kilo", 1e3, "k"],
  116860. h: ["hecto", 100, "h"],
  116861. e: ["dekao", 10, "e"],
  116862. d: ["deci", 0.1, "d"],
  116863. c: ["centi", 0.01, "c"],
  116864. m: ["milli", 1e-3, "m"],
  116865. u: ["micro", 1e-6, "u"],
  116866. n: ["nano", 1e-9, "n"],
  116867. p: ["pico", 1e-12, "p"],
  116868. f: ["femto", 1e-15, "f"],
  116869. a: ["atto", 1e-18, "a"],
  116870. z: ["zepto", 1e-21, "z"],
  116871. y: ["yocto", 1e-24, "y"]
  116872. };
  116873. var from = null;
  116874. var to = null;
  116875. var base_from_unit = from_unit;
  116876. var base_to_unit = to_unit;
  116877. var from_multiplier = 1;
  116878. var to_multiplier = 1;
  116879. var alt;
  116880. for (var i2 = 0; i2 < units.length; i2++) {
  116881. alt = units[i2][2] === null ? [] : units[i2][2];
  116882. if (units[i2][1] === base_from_unit || alt.indexOf(base_from_unit) >= 0) {
  116883. from = units[i2];
  116884. }
  116885. if (units[i2][1] === base_to_unit || alt.indexOf(base_to_unit) >= 0) {
  116886. to = units[i2];
  116887. }
  116888. }
  116889. if (from === null) {
  116890. var from_binary_prefix = binary_prefixes[from_unit.substring(0, 2)];
  116891. var from_unit_prefix = unit_prefixes[from_unit.substring(0, 1)];
  116892. if (from_unit.substring(0, 2) === "da") {
  116893. from_unit_prefix = ["dekao", 10, "da"];
  116894. }
  116895. if (from_binary_prefix) {
  116896. from_multiplier = from_binary_prefix[2];
  116897. base_from_unit = from_unit.substring(2);
  116898. } else if (from_unit_prefix) {
  116899. from_multiplier = from_unit_prefix[1];
  116900. base_from_unit = from_unit.substring(from_unit_prefix[2].length);
  116901. }
  116902. for (var j = 0; j < units.length; j++) {
  116903. alt = units[j][2] === null ? [] : units[j][2];
  116904. if (units[j][1] === base_from_unit || alt.indexOf(base_from_unit) >= 0) {
  116905. from = units[j];
  116906. }
  116907. }
  116908. }
  116909. if (to === null) {
  116910. var to_binary_prefix = binary_prefixes[to_unit.substring(0, 2)];
  116911. var to_unit_prefix = unit_prefixes[to_unit.substring(0, 1)];
  116912. if (to_unit.substring(0, 2) === "da") {
  116913. to_unit_prefix = ["dekao", 10, "da"];
  116914. }
  116915. if (to_binary_prefix) {
  116916. to_multiplier = to_binary_prefix[2];
  116917. base_to_unit = to_unit.substring(2);
  116918. } else if (to_unit_prefix) {
  116919. to_multiplier = to_unit_prefix[1];
  116920. base_to_unit = to_unit.substring(to_unit_prefix[2].length);
  116921. }
  116922. for (var k = 0; k < units.length; k++) {
  116923. alt = units[k][2] === null ? [] : units[k][2];
  116924. if (units[k][1] === base_to_unit || alt.indexOf(base_to_unit) >= 0) {
  116925. to = units[k];
  116926. }
  116927. }
  116928. }
  116929. if (from === null || to === null) {
  116930. return formula_default.error.na;
  116931. }
  116932. if (from[3] !== to[3]) {
  116933. return formula_default.error.na;
  116934. }
  116935. return number * from[6] * from_multiplier / (to[6] * to_multiplier);
  116936. } catch (e) {
  116937. var err = e;
  116938. err = formula_default.errorInfo(err);
  116939. return [formula_default.error.v, err];
  116940. }
  116941. },
  116942. "SUMX2MY2": function() {
  116943. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  116944. return formula_default.error.na;
  116945. }
  116946. for (var i2 = 0; i2 < arguments.length; i2++) {
  116947. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  116948. if (!p[0]) {
  116949. return formula_default.error.v;
  116950. }
  116951. }
  116952. try {
  116953. var data_array_x = arguments[0];
  116954. var array_x = [];
  116955. if (getObjType(data_array_x) == "array") {
  116956. if (getObjType(data_array_x[0]) == "array" && !func_methods_default.isDyadicArr(data_array_x)) {
  116957. return formula_default.error.v;
  116958. }
  116959. array_x = array_x.concat(func_methods_default.getDataArr(data_array_x, false));
  116960. } else if (getObjType(data_array_x) == "object" && data_array_x.startCell != null) {
  116961. array_x = array_x.concat(func_methods_default.getCellDataArr(data_array_x, "text", false));
  116962. } else {
  116963. array_x.push(data_array_x);
  116964. }
  116965. var data_array_y = arguments[1];
  116966. var array_y = [];
  116967. if (getObjType(data_array_y) == "array") {
  116968. if (getObjType(data_array_y[0]) == "array" && !func_methods_default.isDyadicArr(data_array_y)) {
  116969. return formula_default.error.v;
  116970. }
  116971. array_y = array_y.concat(func_methods_default.getDataArr(data_array_y, false));
  116972. } else if (getObjType(data_array_y) == "object" && data_array_y.startCell != null) {
  116973. array_y = array_y.concat(func_methods_default.getCellDataArr(data_array_y, "text", false));
  116974. } else {
  116975. array_y.push(data_array_y);
  116976. }
  116977. if (array_x.length != array_y.length) {
  116978. return formula_default.error.na;
  116979. }
  116980. var data_x = [], data_y = [];
  116981. for (var i2 = 0; i2 < array_x.length; i2++) {
  116982. var num_x = array_x[i2];
  116983. var num_y = array_y[i2];
  116984. if (isRealNum(num_x) && isRealNum(num_y)) {
  116985. data_x.push(parseFloat(num_x));
  116986. data_y.push(parseFloat(num_y));
  116987. }
  116988. }
  116989. var sum = 0;
  116990. for (var i2 = 0; i2 < data_x.length; i2++) {
  116991. sum += Math.pow(data_x[i2], 2) - Math.pow(data_y[i2], 2);
  116992. }
  116993. return sum;
  116994. } catch (e) {
  116995. var err = e;
  116996. err = formula_default.errorInfo(err);
  116997. return [formula_default.error.v, err];
  116998. }
  116999. },
  117000. "SUMX2PY2": function() {
  117001. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  117002. return formula_default.error.na;
  117003. }
  117004. for (var i2 = 0; i2 < arguments.length; i2++) {
  117005. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  117006. if (!p[0]) {
  117007. return formula_default.error.v;
  117008. }
  117009. }
  117010. try {
  117011. var data_array_x = arguments[0];
  117012. var array_x = [];
  117013. if (getObjType(data_array_x) == "array") {
  117014. if (getObjType(data_array_x[0]) == "array" && !func_methods_default.isDyadicArr(data_array_x)) {
  117015. return formula_default.error.v;
  117016. }
  117017. array_x = array_x.concat(func_methods_default.getDataArr(data_array_x, false));
  117018. } else if (getObjType(data_array_x) == "object" && data_array_x.startCell != null) {
  117019. array_x = array_x.concat(func_methods_default.getCellDataArr(data_array_x, "text", false));
  117020. } else {
  117021. array_x.push(data_array_x);
  117022. }
  117023. var data_array_y = arguments[1];
  117024. var array_y = [];
  117025. if (getObjType(data_array_y) == "array") {
  117026. if (getObjType(data_array_y[0]) == "array" && !func_methods_default.isDyadicArr(data_array_y)) {
  117027. return formula_default.error.v;
  117028. }
  117029. array_y = array_y.concat(func_methods_default.getDataArr(data_array_y, false));
  117030. } else if (getObjType(data_array_y) == "object" && data_array_y.startCell != null) {
  117031. array_y = array_y.concat(func_methods_default.getCellDataArr(data_array_y, "text", false));
  117032. } else {
  117033. array_y.push(data_array_y);
  117034. }
  117035. if (array_x.length != array_y.length) {
  117036. return formula_default.error.na;
  117037. }
  117038. var data_x = [], data_y = [];
  117039. for (var i2 = 0; i2 < array_x.length; i2++) {
  117040. var num_x = array_x[i2];
  117041. var num_y = array_y[i2];
  117042. if (isRealNum(num_x) && isRealNum(num_y)) {
  117043. data_x.push(parseFloat(num_x));
  117044. data_y.push(parseFloat(num_y));
  117045. }
  117046. }
  117047. var sum = 0;
  117048. for (var i2 = 0; i2 < data_x.length; i2++) {
  117049. sum += Math.pow(data_x[i2], 2) + Math.pow(data_y[i2], 2);
  117050. }
  117051. return sum;
  117052. } catch (e) {
  117053. var err = e;
  117054. err = formula_default.errorInfo(err);
  117055. return [formula_default.error.v, err];
  117056. }
  117057. },
  117058. "SUMXMY2": function() {
  117059. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  117060. return formula_default.error.na;
  117061. }
  117062. for (var i2 = 0; i2 < arguments.length; i2++) {
  117063. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  117064. if (!p[0]) {
  117065. return formula_default.error.v;
  117066. }
  117067. }
  117068. try {
  117069. var data_array_x = arguments[0];
  117070. var array_x = [];
  117071. if (getObjType(data_array_x) == "array") {
  117072. if (getObjType(data_array_x[0]) == "array" && !func_methods_default.isDyadicArr(data_array_x)) {
  117073. return formula_default.error.v;
  117074. }
  117075. array_x = array_x.concat(func_methods_default.getDataArr(data_array_x, false));
  117076. } else if (getObjType(data_array_x) == "object" && data_array_x.startCell != null) {
  117077. array_x = array_x.concat(func_methods_default.getCellDataArr(data_array_x, "text", false));
  117078. } else {
  117079. array_x.push(data_array_x);
  117080. }
  117081. var data_array_y = arguments[1];
  117082. var array_y = [];
  117083. if (getObjType(data_array_y) == "array") {
  117084. if (getObjType(data_array_y[0]) == "array" && !func_methods_default.isDyadicArr(data_array_y)) {
  117085. return formula_default.error.v;
  117086. }
  117087. array_y = array_y.concat(func_methods_default.getDataArr(data_array_y, false));
  117088. } else if (getObjType(data_array_y) == "object" && data_array_y.startCell != null) {
  117089. array_y = array_y.concat(func_methods_default.getCellDataArr(data_array_y, "text", false));
  117090. } else {
  117091. array_y.push(data_array_y);
  117092. }
  117093. if (array_x.length != array_y.length) {
  117094. return formula_default.error.na;
  117095. }
  117096. var data_x = [], data_y = [];
  117097. for (var i2 = 0; i2 < array_x.length; i2++) {
  117098. var num_x = array_x[i2];
  117099. var num_y = array_y[i2];
  117100. if (isRealNum(num_x) && isRealNum(num_y)) {
  117101. data_x.push(parseFloat(num_x));
  117102. data_y.push(parseFloat(num_y));
  117103. }
  117104. }
  117105. var sum = 0;
  117106. for (var i2 = 0; i2 < data_x.length; i2++) {
  117107. sum += Math.pow(data_x[i2] - data_y[i2], 2);
  117108. }
  117109. return sum;
  117110. } catch (e) {
  117111. var err = e;
  117112. err = formula_default.errorInfo(err);
  117113. return [formula_default.error.v, err];
  117114. }
  117115. },
  117116. "TRANSPOSE": function() {
  117117. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  117118. return formula_default.error.na;
  117119. }
  117120. for (var i2 = 0; i2 < arguments.length; i2++) {
  117121. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  117122. if (!p[0]) {
  117123. return formula_default.error.v;
  117124. }
  117125. }
  117126. try {
  117127. var data_array = arguments[0];
  117128. var array = [];
  117129. if (getObjType(data_array) == "array") {
  117130. if (getObjType(data_array[0]) == "array" && !func_methods_default.isDyadicArr(data_array)) {
  117131. return formula_default.error.v;
  117132. }
  117133. array = func_methods_default.getDataDyadicArr(data_array);
  117134. } else if (getObjType(data_array) == "object" && data_array.startCell != null) {
  117135. array = func_methods_default.getCellDataDyadicArr(data_array, "number");
  117136. }
  117137. array = array[0].map(function(col, a) {
  117138. return array.map(function(row) {
  117139. return row[a];
  117140. });
  117141. });
  117142. return array;
  117143. } catch (e) {
  117144. var err = e;
  117145. err = formula_default.errorInfo(err);
  117146. return [formula_default.error.v, err];
  117147. }
  117148. },
  117149. "TREND": function() {
  117150. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  117151. return formula_default.error.na;
  117152. }
  117153. for (var i2 = 0; i2 < arguments.length; i2++) {
  117154. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  117155. if (!p[0]) {
  117156. return formula_default.error.v;
  117157. }
  117158. }
  117159. try {
  117160. let leastSquare = function(arr_x, arr_y) {
  117161. var xSum = 0, ySum = 0, xySum = 0, x2Sum = 0;
  117162. for (var i3 = 0; i3 < arr_x.length; i3++) {
  117163. for (var j2 = 0; j2 < arr_x[i3].length; j2++) {
  117164. xSum += arr_x[i3][j2];
  117165. ySum += arr_y[i3][j2];
  117166. xySum += arr_x[i3][j2] * arr_y[i3][j2];
  117167. x2Sum += arr_x[i3][j2] * arr_x[i3][j2];
  117168. }
  117169. }
  117170. var n = arr_x.length * arr_x[0].length;
  117171. var xMean = xSum / n;
  117172. var yMean = ySum / n;
  117173. var xyMean = xySum / n;
  117174. var x2Mean = x2Sum / n;
  117175. var m2 = (xyMean - xMean * yMean) / (x2Mean - xMean * xMean);
  117176. var b2 = yMean - m2 * xMean;
  117177. return [m2, b2];
  117178. };
  117179. var data_known_y = arguments[0];
  117180. var known_y = [];
  117181. if (getObjType(data_known_y) == "array") {
  117182. if (getObjType(data_known_y[0]) == "array" && !func_methods_default.isDyadicArr(data_known_y)) {
  117183. return formula_default.error.v;
  117184. }
  117185. known_y = func_methods_default.getDataDyadicArr(data_known_y);
  117186. } else if (getObjType(data_known_y) == "object" && data_known_y.startCell != null) {
  117187. known_y = func_methods_default.getCellDataDyadicArr(data_known_y, "text");
  117188. } else {
  117189. if (!isRealNum(data_known_y)) {
  117190. return formula_default.error.v;
  117191. }
  117192. var rowArr = [];
  117193. rowArr.push(parseFloat(data_known_y));
  117194. known_y.push(rowArr);
  117195. }
  117196. var known_y_rowlen = known_y.length;
  117197. var known_y_collen = known_y[0].length;
  117198. for (var i2 = 0; i2 < known_y_rowlen; i2++) {
  117199. for (var j = 0; j < known_y_collen; j++) {
  117200. if (!isRealNum(known_y[i2][j])) {
  117201. return formula_default.error.v;
  117202. }
  117203. known_y[i2][j] = parseFloat(known_y[i2][j]);
  117204. }
  117205. }
  117206. var known_x = [];
  117207. for (var i2 = 1; i2 <= known_y_rowlen; i2++) {
  117208. for (var j = 1; j <= known_y_collen; j++) {
  117209. var number = (i2 - 1) * known_y_collen + j;
  117210. known_x.push(number);
  117211. }
  117212. }
  117213. if (arguments.length >= 2) {
  117214. var data_known_x = arguments[1];
  117215. known_x = [];
  117216. if (getObjType(data_known_x) == "array") {
  117217. if (getObjType(data_known_x[0]) == "array" && !func_methods_default.isDyadicArr(data_known_x)) {
  117218. return formula_default.error.v;
  117219. }
  117220. known_x = func_methods_default.getDataDyadicArr(data_known_x);
  117221. } else if (getObjType(data_known_x) == "object" && data_known_x.startCell != null) {
  117222. known_x = func_methods_default.getCellDataDyadicArr(data_known_x, "text");
  117223. } else {
  117224. if (!isRealNum(data_known_x)) {
  117225. return formula_default.error.v;
  117226. }
  117227. var rowArr = [];
  117228. rowArr.push(parseFloat(data_known_x));
  117229. known_x.push(rowArr);
  117230. }
  117231. for (var i2 = 0; i2 < known_x.length; i2++) {
  117232. for (var j = 0; j < known_x[0].length; j++) {
  117233. if (!isRealNum(known_x[i2][j])) {
  117234. return formula_default.error.v;
  117235. }
  117236. known_x[i2][j] = parseFloat(known_x[i2][j]);
  117237. }
  117238. }
  117239. }
  117240. var known_x_rowlen = known_x.length;
  117241. var known_x_collen = known_x[0].length;
  117242. var new_x = known_x;
  117243. if (arguments.length >= 3) {
  117244. var data_new_x = arguments[2];
  117245. new_x = [];
  117246. if (getObjType(data_new_x) == "array") {
  117247. if (getObjType(data_new_x[0]) == "array" && !func_methods_default.isDyadicArr(data_new_x)) {
  117248. return formula_default.error.v;
  117249. }
  117250. new_x = func_methods_default.getDataDyadicArr(data_new_x);
  117251. } else if (getObjType(data_new_x) == "object" && data_new_x.startCell != null) {
  117252. new_x = func_methods_default.getCellDataDyadicArr(data_new_x, "text");
  117253. } else {
  117254. if (!isRealNum(data_new_x)) {
  117255. return formula_default.error.v;
  117256. }
  117257. var rowArr = [];
  117258. rowArr.push(parseFloat(data_new_x));
  117259. new_x.push(rowArr);
  117260. }
  117261. for (var i2 = 0; i2 < new_x.length; i2++) {
  117262. for (var j = 0; j < new_x[0].length; j++) {
  117263. if (!isRealNum(new_x[i2][j])) {
  117264. return formula_default.error.v;
  117265. }
  117266. new_x[i2][j] = parseFloat(new_x[i2][j]);
  117267. }
  117268. }
  117269. }
  117270. var const_b = true;
  117271. if (arguments.length == 4) {
  117272. const_b = func_methods_default.getCellBoolen(arguments[3]);
  117273. if (valueIsError(const_b)) {
  117274. return const_b;
  117275. }
  117276. }
  117277. if (known_y_rowlen != known_x_rowlen || known_y_collen != known_x_collen) {
  117278. return formula_default.error.r;
  117279. }
  117280. var ls = leastSquare(known_x, known_y);
  117281. var m = ls[0];
  117282. if (const_b) {
  117283. var b = ls[1];
  117284. } else {
  117285. var b = 0;
  117286. }
  117287. var result = [];
  117288. for (var i2 = 0; i2 < new_x.length; i2++) {
  117289. for (var j = 0; j < new_x[i2].length; j++) {
  117290. var x = new_x[i2][j];
  117291. var y = m * x + b;
  117292. result.push(Math.round(y * 1e9) / 1e9);
  117293. }
  117294. }
  117295. return result;
  117296. } catch (e) {
  117297. var err = e;
  117298. err = formula_default.errorInfo(err);
  117299. return [formula_default.error.v, err];
  117300. }
  117301. },
  117302. "FREQUENCY": function() {
  117303. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  117304. return formula_default.error.na;
  117305. }
  117306. for (var i2 = 0; i2 < arguments.length; i2++) {
  117307. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  117308. if (!p[0]) {
  117309. return formula_default.error.v;
  117310. }
  117311. }
  117312. try {
  117313. var data_data_array = arguments[0];
  117314. var data_array = [];
  117315. if (getObjType(data_data_array) == "array") {
  117316. if (getObjType(data_data_array[0]) == "array" && !func_methods_default.isDyadicArr(data_data_array)) {
  117317. return formula_default.error.v;
  117318. }
  117319. data_array = data_array.concat(func_methods_default.getDataArr(data_data_array, true));
  117320. } else if (getObjType(data_data_array) == "object" && data_data_array.startCell != null) {
  117321. data_array = data_array.concat(func_methods_default.getCellDataArr(data_data_array, "number", true));
  117322. } else {
  117323. if (!isRealNum(data_data_array)) {
  117324. return formula_default.error.v;
  117325. }
  117326. data_array.push(data_data_array);
  117327. }
  117328. var data_array_n = [];
  117329. for (var i2 = 0; i2 < data_array.length; i2++) {
  117330. if (isRealNum(data_array[i2])) {
  117331. data_array_n.push(parseFloat(data_array[i2]));
  117332. }
  117333. }
  117334. var data_bins_array = arguments[1];
  117335. var bins_array = [];
  117336. if (getObjType(data_bins_array) == "array") {
  117337. if (getObjType(data_bins_array[0]) == "array" && !func_methods_default.isDyadicArr(data_bins_array)) {
  117338. return formula_default.error.v;
  117339. }
  117340. bins_array = bins_array.concat(func_methods_default.getDataArr(data_bins_array, true));
  117341. } else if (getObjType(data_bins_array) == "object" && data_bins_array.startCell != null) {
  117342. bins_array = bins_array.concat(func_methods_default.getCellDataArr(data_bins_array, "number", true));
  117343. } else {
  117344. if (!isRealNum(data_bins_array)) {
  117345. return formula_default.error.v;
  117346. }
  117347. bins_array.push(data_bins_array);
  117348. }
  117349. var bins_array_n = [];
  117350. for (var i2 = 0; i2 < bins_array.length; i2++) {
  117351. if (isRealNum(bins_array[i2])) {
  117352. bins_array_n.push(parseFloat(bins_array[i2]));
  117353. }
  117354. }
  117355. if (data_array_n.length == 0 && bins_array_n.length == 0) {
  117356. return [[0], [0]];
  117357. } else if (data_array_n.length == 0) {
  117358. var result = [[0]];
  117359. for (var i2 = 0; i2 < bins_array_n.length; i2++) {
  117360. result.push([0]);
  117361. }
  117362. return result;
  117363. } else if (bins_array_n.length == 0) {
  117364. return [[0], [data_array_n.length]];
  117365. } else {
  117366. bins_array_n.sort(function(a, b) {
  117367. return a - b;
  117368. });
  117369. var result = [];
  117370. for (var i2 = 0; i2 < bins_array_n.length; i2++) {
  117371. if (i2 == 0) {
  117372. var count = 0;
  117373. for (var j = 0; j < data_array_n.length; j++) {
  117374. if (data_array_n[j] <= bins_array_n[0]) {
  117375. count++;
  117376. }
  117377. }
  117378. result.push([count]);
  117379. } else if (i2 == bins_array_n.length - 1) {
  117380. var count1 = 0, count2 = 0;
  117381. for (var j = 0; j < data_array_n.length; j++) {
  117382. if (data_array_n[j] <= bins_array_n[i2] && data_array_n[j] > bins_array_n[i2 - 1]) {
  117383. count1++;
  117384. }
  117385. if (data_array_n[j] > bins_array_n[i2]) {
  117386. count2++;
  117387. }
  117388. }
  117389. result.push([count1]);
  117390. result.push([count2]);
  117391. } else {
  117392. var count = 0;
  117393. for (var j = 0; j < data_array_n.length; j++) {
  117394. if (data_array_n[j] <= bins_array_n[i2] && data_array_n[j] > bins_array_n[i2 - 1]) {
  117395. count++;
  117396. }
  117397. }
  117398. result.push([count]);
  117399. }
  117400. }
  117401. return result;
  117402. }
  117403. } catch (e) {
  117404. var err = e;
  117405. err = formula_default.errorInfo(err);
  117406. return [formula_default.error.v, err];
  117407. }
  117408. },
  117409. "GROWTH": function() {
  117410. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  117411. return formula_default.error.na;
  117412. }
  117413. for (var i2 = 0; i2 < arguments.length; i2++) {
  117414. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  117415. if (!p[0]) {
  117416. return formula_default.error.v;
  117417. }
  117418. }
  117419. try {
  117420. let leastSquare = function(arr_x, arr_y) {
  117421. var xSum = 0, ySum = 0, xySum = 0, x2Sum = 0;
  117422. for (var i3 = 0; i3 < arr_x.length; i3++) {
  117423. for (var j2 = 0; j2 < arr_x[i3].length; j2++) {
  117424. xSum += arr_x[i3][j2];
  117425. ySum += Math.log(arr_y[i3][j2]);
  117426. xySum += arr_x[i3][j2] * Math.log(arr_y[i3][j2]);
  117427. x2Sum += arr_x[i3][j2] * arr_x[i3][j2];
  117428. }
  117429. }
  117430. var n = arr_x.length * arr_x[0].length;
  117431. var xMean = xSum / n;
  117432. var yMean = ySum / n;
  117433. var xyMean = xySum / n;
  117434. var x2Mean = x2Sum / n;
  117435. var m2 = (xyMean - xMean * yMean) / (x2Mean - xMean * xMean);
  117436. var b2 = yMean - m2 * xMean;
  117437. return [Math.exp(m2), Math.exp(b2)];
  117438. };
  117439. var data_known_y = arguments[0];
  117440. var known_y = [];
  117441. if (getObjType(data_known_y) == "array") {
  117442. if (getObjType(data_known_y[0]) == "array" && !func_methods_default.isDyadicArr(data_known_y)) {
  117443. return formula_default.error.v;
  117444. }
  117445. known_y = func_methods_default.getDataDyadicArr(data_known_y);
  117446. } else if (getObjType(data_known_y) == "object" && data_known_y.startCell != null) {
  117447. known_y = func_methods_default.getCellDataDyadicArr(data_known_y, "text");
  117448. } else {
  117449. if (!isRealNum(data_known_y)) {
  117450. return formula_default.error.v;
  117451. }
  117452. var rowArr = [];
  117453. rowArr.push(parseFloat(data_known_y));
  117454. known_y.push(rowArr);
  117455. }
  117456. var known_y_rowlen = known_y.length;
  117457. var known_y_collen = known_y[0].length;
  117458. for (var i2 = 0; i2 < known_y_rowlen; i2++) {
  117459. for (var j = 0; j < known_y_collen; j++) {
  117460. if (!isRealNum(known_y[i2][j])) {
  117461. return formula_default.error.v;
  117462. }
  117463. known_y[i2][j] = parseFloat(known_y[i2][j]);
  117464. }
  117465. }
  117466. var known_x = [];
  117467. for (var i2 = 1; i2 <= known_y_rowlen; i2++) {
  117468. for (var j = 1; j <= known_y_collen; j++) {
  117469. var number = (i2 - 1) * known_y_collen + j;
  117470. known_x.push(number);
  117471. }
  117472. }
  117473. if (arguments.length >= 2) {
  117474. var data_known_x = arguments[1];
  117475. known_x = [];
  117476. if (getObjType(data_known_x) == "array") {
  117477. if (getObjType(data_known_x[0]) == "array" && !func_methods_default.isDyadicArr(data_known_x)) {
  117478. return formula_default.error.v;
  117479. }
  117480. known_x = func_methods_default.getDataDyadicArr(data_known_x);
  117481. } else if (getObjType(data_known_x) == "object" && data_known_x.startCell != null) {
  117482. known_x = func_methods_default.getCellDataDyadicArr(data_known_x, "text");
  117483. } else {
  117484. if (!isRealNum(data_known_x)) {
  117485. return formula_default.error.v;
  117486. }
  117487. var rowArr = [];
  117488. rowArr.push(parseFloat(data_known_x));
  117489. known_x.push(rowArr);
  117490. }
  117491. for (var i2 = 0; i2 < known_x.length; i2++) {
  117492. for (var j = 0; j < known_x[0].length; j++) {
  117493. if (!isRealNum(known_x[i2][j])) {
  117494. return formula_default.error.v;
  117495. }
  117496. known_x[i2][j] = parseFloat(known_x[i2][j]);
  117497. }
  117498. }
  117499. }
  117500. var known_x_rowlen = known_x.length;
  117501. var known_x_collen = known_x[0].length;
  117502. var new_x = known_x;
  117503. if (arguments.length >= 3) {
  117504. var data_new_x = arguments[2];
  117505. new_x = [];
  117506. if (getObjType(data_new_x) == "array") {
  117507. if (getObjType(data_new_x[0]) == "array" && !func_methods_default.isDyadicArr(data_new_x)) {
  117508. return formula_default.error.v;
  117509. }
  117510. new_x = func_methods_default.getDataDyadicArr(data_new_x);
  117511. } else if (getObjType(data_new_x) == "object" && data_new_x.startCell != null) {
  117512. new_x = func_methods_default.getCellDataDyadicArr(data_new_x, "text");
  117513. } else {
  117514. if (!isRealNum(data_new_x)) {
  117515. return formula_default.error.v;
  117516. }
  117517. var rowArr = [];
  117518. rowArr.push(parseFloat(data_new_x));
  117519. new_x.push(rowArr);
  117520. }
  117521. for (var i2 = 0; i2 < new_x.length; i2++) {
  117522. for (var j = 0; j < new_x[0].length; j++) {
  117523. if (!isRealNum(new_x[i2][j])) {
  117524. return formula_default.error.v;
  117525. }
  117526. new_x[i2][j] = parseFloat(new_x[i2][j]);
  117527. }
  117528. }
  117529. }
  117530. var const_b = true;
  117531. if (arguments.length == 4) {
  117532. const_b = func_methods_default.getCellBoolen(arguments[3]);
  117533. if (valueIsError(const_b)) {
  117534. return const_b;
  117535. }
  117536. }
  117537. if (known_y_rowlen != known_x_rowlen || known_y_collen != known_x_collen) {
  117538. return formula_default.error.r;
  117539. }
  117540. var ls = leastSquare(known_x, known_y);
  117541. var m = ls[0];
  117542. if (const_b) {
  117543. var b = ls[1];
  117544. } else {
  117545. var b = 1;
  117546. }
  117547. var result = [];
  117548. for (var i2 = 0; i2 < new_x.length; i2++) {
  117549. for (var j = 0; j < new_x[i2].length; j++) {
  117550. var x = new_x[i2][j];
  117551. var y = b * Math.pow(m, x);
  117552. result.push(Math.round(y * 1e9) / 1e9);
  117553. }
  117554. }
  117555. return result;
  117556. } catch (e) {
  117557. var err = e;
  117558. err = formula_default.errorInfo(err);
  117559. return [formula_default.error.v, err];
  117560. }
  117561. },
  117562. "LINEST": function() {
  117563. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  117564. return formula_default.error.na;
  117565. }
  117566. for (var i2 = 0; i2 < arguments.length; i2++) {
  117567. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  117568. if (!p[0]) {
  117569. return formula_default.error.v;
  117570. }
  117571. }
  117572. try {
  117573. return formula_default.error.v;
  117574. } catch (e) {
  117575. var err = e;
  117576. err = formula_default.errorInfo(err);
  117577. return [formula_default.error.v, err];
  117578. }
  117579. },
  117580. "LOGEST": function() {
  117581. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  117582. return formula_default.error.na;
  117583. }
  117584. for (var i2 = 0; i2 < arguments.length; i2++) {
  117585. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  117586. if (!p[0]) {
  117587. return formula_default.error.v;
  117588. }
  117589. }
  117590. try {
  117591. return formula_default.error.v;
  117592. } catch (e) {
  117593. var err = e;
  117594. err = formula_default.errorInfo(err);
  117595. return [formula_default.error.v, err];
  117596. }
  117597. },
  117598. "MDETERM": function() {
  117599. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  117600. return formula_default.error.na;
  117601. }
  117602. for (var i2 = 0; i2 < arguments.length; i2++) {
  117603. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  117604. if (!p[0]) {
  117605. return formula_default.error.v;
  117606. }
  117607. }
  117608. try {
  117609. let Ma = function(a, n) {
  117610. var A;
  117611. var b = new Array();
  117612. if (n == 1) {
  117613. A = a[0][0];
  117614. return A;
  117615. } else if (n == 2) {
  117616. A = a[0][0] * a[1][1] - a[0][1] * a[1][0];
  117617. return A;
  117618. } else if (n == 3) {
  117619. A = a[0][0] * a[1][1] * a[2][2] + a[1][0] * a[2][1] * a[0][2] + a[2][0] * a[0][1] * a[1][2] - a[2][0] * a[1][1] * a[0][2] - a[0][0] * a[2][1] * a[1][2] - a[1][0] * a[0][1] * a[2][2];
  117620. return A;
  117621. } else {
  117622. A = 0;
  117623. var c2 = new Array();
  117624. var e = new Array();
  117625. for (var i3 = 0; i3 < n; i3++) {
  117626. b[i3] = a[i3][0] * Math.pow(-1, i3 + 1 + 1);
  117627. }
  117628. for (var i3 = 0; i3 < n; i3++) {
  117629. e[i3] = new Array();
  117630. for (var j2 = 0; j2 < n - 1; j2++) {
  117631. e[i3][j2] = a[i3][j2 + 1];
  117632. }
  117633. }
  117634. for (var i3 = 0; i3 < n; i3++) {
  117635. for (var j2 = 0; j2 < n; j2++) {
  117636. c2[j2] = new Array();
  117637. for (var k = 0; k < n - 1; k++) {
  117638. if (i3 > j2) {
  117639. c2[j2][k] = e[j2][k];
  117640. } else if (i3 < j2) {
  117641. c2[j2 - 1][k] = e[j2][k];
  117642. }
  117643. }
  117644. }
  117645. A += b[i3] * arguments.callee(c2, n - 1);
  117646. }
  117647. return A;
  117648. }
  117649. };
  117650. var data_array = arguments[0];
  117651. var array = [];
  117652. if (getObjType(data_array) == "array") {
  117653. if (getObjType(data_array[0]) == "array" && !func_methods_default.isDyadicArr(data_array)) {
  117654. return formula_default.error.v;
  117655. }
  117656. array = func_methods_default.getDataDyadicArr(data_array);
  117657. } else if (getObjType(data_array) == "object" && data_array.startCell != null) {
  117658. array = func_methods_default.getCellDataDyadicArr(data_array, "text");
  117659. } else {
  117660. var rowArr = [];
  117661. rowArr.push(data_array);
  117662. array.push(rowArr);
  117663. }
  117664. for (var i2 = 0; i2 < array.length; i2++) {
  117665. for (var j = 0; j < array[i2].length; j++) {
  117666. if (!isRealNum(array[i2][j])) {
  117667. return formula_default.error.v;
  117668. }
  117669. array[i2][j] = parseFloat(array[i2][j]);
  117670. }
  117671. }
  117672. if (array.length != array[0].length) {
  117673. return formula_default.error.v;
  117674. }
  117675. return Ma(array, array.length);
  117676. } catch (e) {
  117677. var err = e;
  117678. err = formula_default.errorInfo(err);
  117679. return [formula_default.error.v, err];
  117680. }
  117681. },
  117682. "MINVERSE": function() {
  117683. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  117684. return formula_default.error.na;
  117685. }
  117686. for (var i2 = 0; i2 < arguments.length; i2++) {
  117687. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  117688. if (!p[0]) {
  117689. return formula_default.error.v;
  117690. }
  117691. }
  117692. try {
  117693. var data_array = arguments[0];
  117694. var array = [];
  117695. if (getObjType(data_array) == "array") {
  117696. if (getObjType(data_array[0]) == "array" && !func_methods_default.isDyadicArr(data_array)) {
  117697. return formula_default.error.v;
  117698. }
  117699. array = func_methods_default.getDataDyadicArr(data_array);
  117700. } else if (getObjType(data_array) == "object" && data_array.startCell != null) {
  117701. array = func_methods_default.getCellDataDyadicArr(data_array, "text");
  117702. } else {
  117703. var rowArr = [];
  117704. rowArr.push(data_array);
  117705. array.push(rowArr);
  117706. }
  117707. for (var i2 = 0; i2 < array.length; i2++) {
  117708. for (var j = 0; j < array[i2].length; j++) {
  117709. if (!isRealNum(array[i2][j])) {
  117710. return formula_default.error.v;
  117711. }
  117712. array[i2][j] = parseFloat(array[i2][j]);
  117713. }
  117714. }
  117715. if (array.length != array[0].length) {
  117716. return formula_default.error.v;
  117717. }
  117718. return inverse(array);
  117719. } catch (e) {
  117720. var err = e;
  117721. err = formula_default.errorInfo(err);
  117722. return [formula_default.error.v, err];
  117723. }
  117724. },
  117725. "MMULT": function() {
  117726. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  117727. return formula_default.error.na;
  117728. }
  117729. for (var i2 = 0; i2 < arguments.length; i2++) {
  117730. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  117731. if (!p[0]) {
  117732. return formula_default.error.v;
  117733. }
  117734. }
  117735. try {
  117736. var data_array1 = arguments[0];
  117737. var array1 = [];
  117738. if (getObjType(data_array1) == "array") {
  117739. if (getObjType(data_array1[0]) == "array" && !func_methods_default.isDyadicArr(data_array1)) {
  117740. return formula_default.error.v;
  117741. }
  117742. array1 = func_methods_default.getDataDyadicArr(data_array1);
  117743. } else if (getObjType(data_array1) == "object" && data_array1.startCell != null) {
  117744. array1 = func_methods_default.getCellDataDyadicArr(data_array1, "text");
  117745. } else {
  117746. var rowArr = [];
  117747. rowArr.push(data_array1);
  117748. array1.push(rowArr);
  117749. }
  117750. for (var i2 = 0; i2 < array1.length; i2++) {
  117751. for (var j = 0; j < array1[i2].length; j++) {
  117752. if (!isRealNum(array1[i2][j])) {
  117753. return formula_default.error.v;
  117754. }
  117755. array1[i2][j] = parseFloat(array1[i2][j]);
  117756. }
  117757. }
  117758. var data_array2 = arguments[1];
  117759. var array2 = [];
  117760. if (getObjType(data_array2) == "array") {
  117761. if (getObjType(data_array2[0]) == "array" && !func_methods_default.isDyadicArr(data_array2)) {
  117762. return formula_default.error.v;
  117763. }
  117764. array2 = func_methods_default.getDataDyadicArr(data_array2);
  117765. } else if (getObjType(data_array2) == "object" && data_array2.startCell != null) {
  117766. array2 = func_methods_default.getCellDataDyadicArr(data_array2, "text");
  117767. } else {
  117768. var rowArr = [];
  117769. rowArr.push(data_array2);
  117770. array2.push(rowArr);
  117771. }
  117772. for (var i2 = 0; i2 < array2.length; i2++) {
  117773. for (var j = 0; j < array2[i2].length; j++) {
  117774. if (!isRealNum(array2[i2][j])) {
  117775. return formula_default.error.v;
  117776. }
  117777. array2[i2][j] = parseFloat(array2[i2][j]);
  117778. }
  117779. }
  117780. if (array1[0].length != array2.length) {
  117781. return formula_default.error.v;
  117782. }
  117783. var rowlen = array1.length;
  117784. var collen = array2[0].length;
  117785. var result = [];
  117786. for (var m = 0; m < rowlen; m++) {
  117787. var rowArr = [];
  117788. for (var n = 0; n < collen; n++) {
  117789. var value = 0;
  117790. for (var p = 0; p < array1[0].length; p++) {
  117791. value += array1[m][p] * array2[p][n];
  117792. }
  117793. rowArr.push(value);
  117794. }
  117795. result.push(rowArr);
  117796. }
  117797. return result;
  117798. } catch (e) {
  117799. var err = e;
  117800. err = formula_default.errorInfo(err);
  117801. return [formula_default.error.v, err];
  117802. }
  117803. },
  117804. "SUMPRODUCT": function() {
  117805. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  117806. return formula_default.error.na;
  117807. }
  117808. for (var i2 = 0; i2 < arguments.length; i2++) {
  117809. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  117810. if (!p[0]) {
  117811. return formula_default.error.v;
  117812. }
  117813. }
  117814. try {
  117815. var data_array1 = arguments[0];
  117816. var array1 = [];
  117817. if (getObjType(data_array1) == "array") {
  117818. if (getObjType(data_array1[0]) == "array" && !func_methods_default.isDyadicArr(data_array1)) {
  117819. return formula_default.error.v;
  117820. }
  117821. array1 = func_methods_default.getDataDyadicArr(data_array1);
  117822. } else if (getObjType(data_array1) == "object" && data_array1.startCell != null) {
  117823. array1 = func_methods_default.getCellDataDyadicArr(data_array1, "text");
  117824. } else {
  117825. var rowArr = [];
  117826. rowArr.push(data_array1);
  117827. array1.push(rowArr);
  117828. }
  117829. for (var i2 = 0; i2 < array1.length; i2++) {
  117830. for (var j = 0; j < array1[i2].length; j++) {
  117831. if (!isRealNum(array1[i2][j])) {
  117832. array1[i2][j] = 0;
  117833. } else {
  117834. array1[i2][j] = parseFloat(array1[i2][j]);
  117835. }
  117836. }
  117837. }
  117838. var rowlen = array1.length;
  117839. var collen = array1[0].length;
  117840. if (arguments.length >= 2) {
  117841. for (var i2 = 1; i2 < arguments.length; i2++) {
  117842. var data = arguments[i2];
  117843. var arr = [];
  117844. if (getObjType(data) == "array") {
  117845. if (getObjType(data[0]) == "array" && !func_methods_default.isDyadicArr(data)) {
  117846. return formula_default.error.v;
  117847. }
  117848. arr = func_methods_default.getDataDyadicArr(data);
  117849. } else if (getObjType(data) == "object" && data.startCell != null) {
  117850. arr = func_methods_default.getCellDataDyadicArr(data, "text");
  117851. } else {
  117852. var rowArr = [];
  117853. rowArr.push(data);
  117854. arr.push(rowArr);
  117855. }
  117856. if (arr.length != rowlen || arr[0].length != collen) {
  117857. return formula_default.error.v;
  117858. }
  117859. for (var m = 0; m < rowlen; m++) {
  117860. for (var n = 0; n < collen; n++) {
  117861. if (!isRealNum(arr[m][n])) {
  117862. array1[m][n] = 0;
  117863. } else {
  117864. array1[m][n] = array1[m][n] * parseFloat(arr[m][n]);
  117865. }
  117866. }
  117867. }
  117868. }
  117869. }
  117870. var sum = 0;
  117871. for (var m = 0; m < rowlen; m++) {
  117872. for (var n = 0; n < collen; n++) {
  117873. sum += array1[m][n];
  117874. }
  117875. }
  117876. return sum;
  117877. } catch (e) {
  117878. var err = e;
  117879. err = formula_default.errorInfo(err);
  117880. return [formula_default.error.v, err];
  117881. }
  117882. },
  117883. "ISFORMULA": function() {
  117884. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  117885. return formula_default.error.na;
  117886. }
  117887. for (var i2 = 0; i2 < arguments.length; i2++) {
  117888. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  117889. if (!p[0]) {
  117890. return formula_default.error.v;
  117891. }
  117892. }
  117893. try {
  117894. var data_cell = arguments[0];
  117895. var cell;
  117896. if (getObjType(data_cell) == "object" && data_cell.startCell != null) {
  117897. if (data_cell.data == null) {
  117898. return false;
  117899. }
  117900. if (getObjType(data_cell.data) == "array") {
  117901. cell = data_cell.data[0][0];
  117902. } else {
  117903. cell = data_cell.data;
  117904. }
  117905. if (cell != null && cell.f != null) {
  117906. return true;
  117907. } else {
  117908. return false;
  117909. }
  117910. } else {
  117911. return formula_default.error.v;
  117912. }
  117913. } catch (e) {
  117914. var err = e;
  117915. err = formula_default.errorInfo(err);
  117916. return [formula_default.error.v, err];
  117917. }
  117918. },
  117919. "CELL": function() {
  117920. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  117921. return formula_default.error.na;
  117922. }
  117923. for (var i2 = 0; i2 < arguments.length; i2++) {
  117924. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  117925. if (!p[0]) {
  117926. return formula_default.error.v;
  117927. }
  117928. }
  117929. try {
  117930. var data_info_type = arguments[0];
  117931. var info_type;
  117932. if (getObjType(data_info_type) == "array") {
  117933. if (getObjType(data_info_type[0]) == "array") {
  117934. if (!func_methods_default.isDyadicArr(data_info_type)) {
  117935. return formula_default.error.v;
  117936. }
  117937. info_type = data_info_type[0][0];
  117938. } else {
  117939. info_type = data_info_type[0];
  117940. }
  117941. } else if (getObjType(data_info_type) == "object" && data_info_type.startCell != null) {
  117942. if (data_info_type.data == null) {
  117943. return formula_default.error.v;
  117944. } else {
  117945. if (getObjType(data_info_type.data) == "array") {
  117946. return formula_default.error.v;
  117947. }
  117948. info_type = data_info_type.data.v;
  117949. if (isRealNull(info_type)) {
  117950. return formula_default.error.v;
  117951. }
  117952. }
  117953. } else {
  117954. info_type = data_info_type;
  117955. }
  117956. var data_reference = arguments[1];
  117957. var reference;
  117958. if (getObjType(data_reference) == "object" && data_reference.startCell != null) {
  117959. reference = data_reference.startCell;
  117960. } else {
  117961. return formula_default.error.v;
  117962. }
  117963. if (["address", "col", "color", "contents", "filename", "format", "parentheses", "prefix", "protect", "row", "type", "width"].indexOf(info_type) == -1) {
  117964. return formula_default.error.v;
  117965. }
  117966. var file = getluckysheetfile()[getSheetIndex(store_default.currentSheetIndex)];
  117967. var cellrange = formula_default.getcellrange(reference);
  117968. var row_index = cellrange.row[0];
  117969. var col_index = cellrange.column[0];
  117970. let luckysheetfile = getluckysheetfile();
  117971. let index2 = getSheetIndex(store_default.calculateSheetIndex);
  117972. let sheetdata = luckysheetfile[index2].data;
  117973. let value;
  117974. if (formula_default.execFunctionGlobalData != null && formula_default.execFunctionGlobalData[row_index + "_" + col_index + "_" + store_default.calculateSheetIndex] != null) {
  117975. value = formula_default.execFunctionGlobalData[row_index + "_" + col_index + "_" + store_default.calculateSheetIndex].v;
  117976. } else if (sheetdata[row_index][col_index] != null && sheetdata[row_index][col_index].v != null && sheetdata[row_index][col_index].v != "") {
  117977. value = sheetdata[row_index][col_index];
  117978. if (value instanceof Object) {
  117979. value = value.v;
  117980. }
  117981. } else {
  117982. value = 0;
  117983. }
  117984. switch (info_type) {
  117985. case "address":
  117986. return reference;
  117987. break;
  117988. case "col":
  117989. return col_index + 1;
  117990. break;
  117991. case "color":
  117992. return 0;
  117993. break;
  117994. case "contents":
  117995. return value;
  117996. break;
  117997. case "filename":
  117998. return file.name;
  117999. break;
  118000. case "format":
  118001. if (sheetdata[row_index][col_index] == null || sheetdata[row_index][col_index].ct == null) {
  118002. return "G";
  118003. }
  118004. return sheetdata[row_index][col_index].ct.fa;
  118005. break;
  118006. case "parentheses":
  118007. if (sheetdata[row_index][col_index] == null || sheetdata[row_index][col_index].v == null || sheetdata[row_index][col_index].v == "") {
  118008. return 0;
  118009. }
  118010. if (sheetdata[row_index][col_index].v > 0) {
  118011. return 1;
  118012. } else {
  118013. return 0;
  118014. }
  118015. break;
  118016. case "prefix":
  118017. if (value == 0) {
  118018. return "";
  118019. }
  118020. if (sheetdata[row_index][col_index].ht == 0) {
  118021. return "^";
  118022. } else if (sheetdata[row_index][col_index].ht == 1) {
  118023. return "'";
  118024. } else if (sheetdata[row_index][col_index].ht == 2) {
  118025. return '"';
  118026. } else {
  118027. return "";
  118028. }
  118029. break;
  118030. case "protect":
  118031. return 0;
  118032. break;
  118033. case "row":
  118034. return row_index + 1;
  118035. break;
  118036. case "type":
  118037. if (value == 0) {
  118038. return "b";
  118039. }
  118040. return "l";
  118041. break;
  118042. case "width":
  118043. var cfg = file.config;
  118044. if (cfg["columnlen"] != null && col_index in cfg["columnlen"]) {
  118045. return cfg["columnlen"][col_index];
  118046. }
  118047. return store_default.defaultcollen;
  118048. break;
  118049. }
  118050. } catch (e) {
  118051. var err = e;
  118052. err = formula_default.errorInfo(err);
  118053. return [formula_default.error.v, err];
  118054. }
  118055. },
  118056. "NA": function() {
  118057. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  118058. return formula_default.error.na;
  118059. }
  118060. for (var i2 = 0; i2 < arguments.length; i2++) {
  118061. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  118062. if (!p[0]) {
  118063. return formula_default.error.v;
  118064. }
  118065. }
  118066. try {
  118067. return formula_default.error.na;
  118068. } catch (e) {
  118069. var err = e;
  118070. err = formula_default.errorInfo(err);
  118071. return [formula_default.error.v, err];
  118072. }
  118073. },
  118074. "ERROR_TYPE": function() {
  118075. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  118076. return formula_default.error.na;
  118077. }
  118078. for (var i2 = 0; i2 < arguments.length; i2++) {
  118079. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  118080. if (!p[0]) {
  118081. return formula_default.error.v;
  118082. }
  118083. }
  118084. try {
  118085. var data_error_val = arguments[0];
  118086. var error_val;
  118087. if (getObjType(data_error_val) == "array") {
  118088. if (getObjType(data_error_val[0]) == "array") {
  118089. if (!func_methods_default.isDyadicArr(data_error_val)) {
  118090. return formula_default.error.v;
  118091. }
  118092. error_val = data_error_val[0][0];
  118093. } else {
  118094. error_val = data_error_val[0];
  118095. }
  118096. } else if (getObjType(data_error_val) == "object" && data_error_val.startCell != null) {
  118097. if (data_error_val.data == null) {
  118098. return formula_default.error.na;
  118099. }
  118100. if (getObjType(data_error_val.data) == "array") {
  118101. error_val = data_error_val.data[0][0];
  118102. if (error_val == null || isRealNull(error_val.v)) {
  118103. return formula_default.error.na;
  118104. }
  118105. error_val = error_val.v;
  118106. } else {
  118107. if (isRealNull(data_error_val.data.v)) {
  118108. return formula_default.error.na;
  118109. }
  118110. error_val = data_error_val.data.v;
  118111. }
  118112. } else {
  118113. error_val = data_error_val;
  118114. }
  118115. var error_obj = {
  118116. "#NULL!": 1,
  118117. "#DIV/0!": 2,
  118118. "#VALUE!": 3,
  118119. "#REF!": 4,
  118120. "#NAME?": 5,
  118121. "#NUM!": 6,
  118122. "#N/A": 7,
  118123. "#GETTING_DATA": 8
  118124. };
  118125. if (error_val in error_obj) {
  118126. return error_obj[error_val];
  118127. } else {
  118128. return formula_default.error.na;
  118129. }
  118130. } catch (e) {
  118131. var err = e;
  118132. err = formula_default.errorInfo(err);
  118133. return [formula_default.error.v, err];
  118134. }
  118135. },
  118136. "ISBLANK": function() {
  118137. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  118138. return formula_default.error.na;
  118139. }
  118140. for (var i2 = 0; i2 < arguments.length; i2++) {
  118141. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  118142. if (!p[0]) {
  118143. return formula_default.error.v;
  118144. }
  118145. }
  118146. try {
  118147. var data_error_val = arguments[0];
  118148. var error_val;
  118149. if (getObjType(data_error_val) == "object" && data_error_val.startCell != null) {
  118150. if (data_error_val.data == null) {
  118151. return true;
  118152. } else {
  118153. return false;
  118154. }
  118155. } else {
  118156. return false;
  118157. }
  118158. } catch (e) {
  118159. var err = e;
  118160. err = formula_default.errorInfo(err);
  118161. return [formula_default.error.v, err];
  118162. }
  118163. },
  118164. "ISERR": function() {
  118165. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  118166. return formula_default.error.na;
  118167. }
  118168. for (var i2 = 0; i2 < arguments.length; i2++) {
  118169. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  118170. if (!p[0]) {
  118171. return formula_default.error.v;
  118172. }
  118173. }
  118174. try {
  118175. var data_value = arguments[0];
  118176. var value;
  118177. if (getObjType(data_value) == "array") {
  118178. if (getObjType(data_value[0]) == "array") {
  118179. if (!func_methods_default.isDyadicArr(data_value)) {
  118180. return formula_default.error.v;
  118181. }
  118182. value = data_value[0][0];
  118183. } else {
  118184. value = data_value[0];
  118185. }
  118186. } else if (getObjType(data_value) == "object" && data_value.startCell != null) {
  118187. if (getObjType(data_value.data) == "array") {
  118188. return true;
  118189. }
  118190. if (data_value.data == null || isRealNull(data_value.data.v)) {
  118191. return false;
  118192. }
  118193. value = data_value.data.v;
  118194. } else {
  118195. value = data_value;
  118196. }
  118197. if (["#VALUE!", "#REF!", "#DIV/0!", "#NUM!", "#NAME?", "#NULL!"].indexOf(value) > -1) {
  118198. return true;
  118199. } else {
  118200. return false;
  118201. }
  118202. } catch (e) {
  118203. var err = e;
  118204. err = formula_default.errorInfo(err);
  118205. return [formula_default.error.v, err];
  118206. }
  118207. },
  118208. "ISERROR": function() {
  118209. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  118210. return formula_default.error.na;
  118211. }
  118212. for (var i2 = 0; i2 < arguments.length; i2++) {
  118213. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  118214. if (!p[0]) {
  118215. return formula_default.error.v;
  118216. }
  118217. }
  118218. try {
  118219. var data_value = arguments[0];
  118220. var value;
  118221. if (getObjType(data_value) == "array") {
  118222. if (getObjType(data_value[0]) == "array") {
  118223. if (!func_methods_default.isDyadicArr(data_value)) {
  118224. return formula_default.error.v;
  118225. }
  118226. value = data_value[0][0];
  118227. } else {
  118228. value = data_value[0];
  118229. }
  118230. } else if (getObjType(data_value) == "object" && data_value.startCell != null) {
  118231. if (getObjType(data_value.data) == "array") {
  118232. return true;
  118233. }
  118234. if (data_value.data == null || isRealNull(data_value.data.v)) {
  118235. return false;
  118236. }
  118237. value = data_value.data.v;
  118238. } else {
  118239. value = data_value;
  118240. }
  118241. if (["#N/A", "#VALUE!", "#REF!", "#DIV/0!", "#NUM!", "#NAME?", "#NULL!"].indexOf(value) > -1) {
  118242. return true;
  118243. } else {
  118244. return false;
  118245. }
  118246. } catch (e) {
  118247. var err = e;
  118248. err = formula_default.errorInfo(err);
  118249. return [formula_default.error.v, err];
  118250. }
  118251. },
  118252. "ISLOGICAL": function() {
  118253. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  118254. return formula_default.error.na;
  118255. }
  118256. for (var i2 = 0; i2 < arguments.length; i2++) {
  118257. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  118258. if (!p[0]) {
  118259. return formula_default.error.v;
  118260. }
  118261. }
  118262. try {
  118263. var data_value = arguments[0];
  118264. var value;
  118265. if (getObjType(data_value) == "array") {
  118266. if (getObjType(data_value[0]) == "array") {
  118267. if (!func_methods_default.isDyadicArr(data_value)) {
  118268. return formula_default.error.v;
  118269. }
  118270. value = data_value[0][0];
  118271. } else {
  118272. value = data_value[0];
  118273. }
  118274. } else if (getObjType(data_value) == "object" && data_value.startCell != null) {
  118275. if (getObjType(data_value.data) == "array") {
  118276. return false;
  118277. }
  118278. if (data_value.data == null || isRealNull(data_value.data.v)) {
  118279. return false;
  118280. }
  118281. value = data_value.data.v;
  118282. } else {
  118283. value = data_value;
  118284. }
  118285. if (value.toString().toLowerCase() == "true" || value.toString().toLowerCase() == "false") {
  118286. return true;
  118287. } else {
  118288. return false;
  118289. }
  118290. } catch (e) {
  118291. var err = e;
  118292. err = formula_default.errorInfo(err);
  118293. return [formula_default.error.v, err];
  118294. }
  118295. },
  118296. "ISNA": function() {
  118297. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  118298. return formula_default.error.na;
  118299. }
  118300. for (var i2 = 0; i2 < arguments.length; i2++) {
  118301. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  118302. if (!p[0]) {
  118303. return formula_default.error.v;
  118304. }
  118305. }
  118306. try {
  118307. var data_value = arguments[0];
  118308. var value;
  118309. if (getObjType(data_value) == "array") {
  118310. if (getObjType(data_value[0]) == "array") {
  118311. if (!func_methods_default.isDyadicArr(data_value)) {
  118312. return formula_default.error.v;
  118313. }
  118314. value = data_value[0][0];
  118315. } else {
  118316. value = data_value[0];
  118317. }
  118318. } else if (getObjType(data_value) == "object" && data_value.startCell != null) {
  118319. if (getObjType(data_value.data) == "array") {
  118320. return false;
  118321. }
  118322. if (data_value.data == null || isRealNull(data_value.data.v)) {
  118323. return false;
  118324. }
  118325. value = data_value.data.v;
  118326. } else {
  118327. value = data_value;
  118328. }
  118329. if (value.toString() == "#N/A") {
  118330. return true;
  118331. } else {
  118332. return false;
  118333. }
  118334. } catch (e) {
  118335. var err = e;
  118336. err = formula_default.errorInfo(err);
  118337. return [formula_default.error.v, err];
  118338. }
  118339. },
  118340. "ISNONTEXT": function() {
  118341. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  118342. return formula_default.error.na;
  118343. }
  118344. for (var i2 = 0; i2 < arguments.length; i2++) {
  118345. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  118346. if (!p[0]) {
  118347. return formula_default.error.v;
  118348. }
  118349. }
  118350. try {
  118351. var data_value = arguments[0];
  118352. var value;
  118353. if (getObjType(data_value) == "array") {
  118354. if (getObjType(data_value[0]) == "array") {
  118355. if (!func_methods_default.isDyadicArr(data_value)) {
  118356. return formula_default.error.v;
  118357. }
  118358. value = data_value[0][0];
  118359. } else {
  118360. value = data_value[0];
  118361. }
  118362. } else if (getObjType(data_value) == "object" && data_value.startCell != null) {
  118363. if (getObjType(data_value.data) == "array") {
  118364. return true;
  118365. }
  118366. if (data_value.data == null || isRealNull(data_value.data.v)) {
  118367. return true;
  118368. }
  118369. value = data_value.data.v;
  118370. } else {
  118371. value = data_value;
  118372. }
  118373. if (["#N/A", "#VALUE!", "#REF!", "#DIV/0!", "#NUM!", "#NAME?", "#NULL!"].indexOf(value) > -1) {
  118374. return true;
  118375. } else if (value.toString().toLowerCase() == "true" || value.toString().toLowerCase() == "false") {
  118376. return true;
  118377. } else if (isRealNum(value)) {
  118378. return true;
  118379. } else {
  118380. return false;
  118381. }
  118382. } catch (e) {
  118383. var err = e;
  118384. err = formula_default.errorInfo(err);
  118385. return [formula_default.error.v, err];
  118386. }
  118387. },
  118388. "ISNUMBER": function() {
  118389. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  118390. return formula_default.error.na;
  118391. }
  118392. for (var i2 = 0; i2 < arguments.length; i2++) {
  118393. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  118394. if (!p[0]) {
  118395. return formula_default.error.v;
  118396. }
  118397. }
  118398. try {
  118399. var data_value = arguments[0];
  118400. var value;
  118401. if (getObjType(data_value) == "array") {
  118402. if (getObjType(data_value[0]) == "array") {
  118403. if (!func_methods_default.isDyadicArr(data_value)) {
  118404. return formula_default.error.v;
  118405. }
  118406. value = data_value[0][0];
  118407. } else {
  118408. value = data_value[0];
  118409. }
  118410. } else if (getObjType(data_value) == "object" && data_value.startCell != null) {
  118411. if (getObjType(data_value.data) == "array") {
  118412. return false;
  118413. }
  118414. if (data_value.data == null || isRealNull(data_value.data.v)) {
  118415. return false;
  118416. }
  118417. value = data_value.data.v;
  118418. } else {
  118419. value = data_value;
  118420. }
  118421. if (isRealNum(value)) {
  118422. return true;
  118423. } else {
  118424. return false;
  118425. }
  118426. } catch (e) {
  118427. var err = e;
  118428. err = formula_default.errorInfo(err);
  118429. return [formula_default.error.v, err];
  118430. }
  118431. },
  118432. "ISREF": function() {
  118433. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  118434. return formula_default.error.na;
  118435. }
  118436. for (var i2 = 0; i2 < arguments.length; i2++) {
  118437. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  118438. if (!p[0]) {
  118439. return formula_default.error.v;
  118440. }
  118441. }
  118442. try {
  118443. if (getObjType(arguments[0]) == "object" && arguments[0].startCell != null) {
  118444. return true;
  118445. } else {
  118446. return false;
  118447. }
  118448. } catch (e) {
  118449. var err = e;
  118450. err = formula_default.errorInfo(err);
  118451. return [formula_default.error.v, err];
  118452. }
  118453. },
  118454. "ISTEXT": function() {
  118455. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  118456. return formula_default.error.na;
  118457. }
  118458. for (var i2 = 0; i2 < arguments.length; i2++) {
  118459. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  118460. if (!p[0]) {
  118461. return formula_default.error.v;
  118462. }
  118463. }
  118464. try {
  118465. var data_value = arguments[0];
  118466. var value;
  118467. if (getObjType(data_value) == "array") {
  118468. if (getObjType(data_value[0]) == "array") {
  118469. if (!func_methods_default.isDyadicArr(data_value)) {
  118470. return formula_default.error.v;
  118471. }
  118472. value = data_value[0][0];
  118473. } else {
  118474. value = data_value[0];
  118475. }
  118476. } else if (getObjType(data_value) == "object" && data_value.startCell != null) {
  118477. if (getObjType(data_value.data) == "array") {
  118478. return false;
  118479. }
  118480. if (data_value.data == null || isRealNull(data_value.data.v)) {
  118481. return false;
  118482. }
  118483. value = data_value.data.v;
  118484. } else {
  118485. value = data_value;
  118486. }
  118487. if (["#N/A", "#VALUE!", "#REF!", "#DIV/0!", "#NUM!", "#NAME?", "#NULL!"].indexOf(value) > -1) {
  118488. return false;
  118489. } else if (value.toString().toLowerCase() == "true" || value.toString().toLowerCase() == "false") {
  118490. return false;
  118491. } else if (isRealNum(value)) {
  118492. return false;
  118493. } else {
  118494. return true;
  118495. }
  118496. } catch (e) {
  118497. var err = e;
  118498. err = formula_default.errorInfo(err);
  118499. return [formula_default.error.v, err];
  118500. }
  118501. },
  118502. "TYPE": function() {
  118503. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  118504. return formula_default.error.na;
  118505. }
  118506. for (var i2 = 0; i2 < arguments.length; i2++) {
  118507. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  118508. if (!p[0]) {
  118509. return formula_default.error.v;
  118510. }
  118511. }
  118512. try {
  118513. var data_value = arguments[0];
  118514. var value;
  118515. if (getObjType(data_value) == "array") {
  118516. return 64;
  118517. } else if (getObjType(data_value) == "object" && data_value.startCell != null) {
  118518. if (getObjType(data_value.data) == "array") {
  118519. return 16;
  118520. }
  118521. if (data_value.data == null || isRealNull(data_value.data.v)) {
  118522. return 1;
  118523. }
  118524. value = data_value.data.v;
  118525. } else {
  118526. value = data_value;
  118527. }
  118528. if (["#N/A", "#VALUE!", "#REF!", "#DIV/0!", "#NUM!", "#NAME?", "#NULL!"].indexOf(value) > -1) {
  118529. return 16;
  118530. } else if (value.toString().toLowerCase() == "true" || value.toString().toLowerCase() == "false") {
  118531. return 4;
  118532. } else if (isRealNum(value)) {
  118533. return 1;
  118534. } else {
  118535. return 2;
  118536. }
  118537. } catch (e) {
  118538. var err = e;
  118539. err = formula_default.errorInfo(err);
  118540. return [formula_default.error.v, err];
  118541. }
  118542. },
  118543. "N": function() {
  118544. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  118545. return formula_default.error.na;
  118546. }
  118547. for (var i2 = 0; i2 < arguments.length; i2++) {
  118548. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  118549. if (!p[0]) {
  118550. return formula_default.error.v;
  118551. }
  118552. }
  118553. try {
  118554. var data_value = arguments[0];
  118555. var value;
  118556. if (getObjType(data_value) == "array") {
  118557. if (getObjType(data_value[0]) == "array") {
  118558. if (!func_methods_default.isDyadicArr(data_value)) {
  118559. return formula_default.error.v;
  118560. }
  118561. value = data_value[0][0];
  118562. } else {
  118563. value = data_value[0];
  118564. }
  118565. } else if (getObjType(data_value) == "object" && data_value.startCell != null) {
  118566. if (getObjType(data_value.data) == "array") {
  118567. value = data_value.data[0][0];
  118568. if (value == null || isRealNull(value.v)) {
  118569. return 0;
  118570. }
  118571. value = value.v;
  118572. } else {
  118573. if (data_value.data == null || isRealNull(data_value.data.v)) {
  118574. return 0;
  118575. }
  118576. value = data_value.data.v;
  118577. }
  118578. } else {
  118579. value = data_value;
  118580. }
  118581. if (["#N/A", "#VALUE!", "#REF!", "#DIV/0!", "#NUM!", "#NAME?", "#NULL!"].indexOf(value) > -1) {
  118582. return value;
  118583. } else if (value.toString().toLowerCase() == "true" || value.toString().toLowerCase() == "false") {
  118584. if (value.toString().toLowerCase() == "true") {
  118585. return 1;
  118586. } else {
  118587. return 0;
  118588. }
  118589. } else if (isRealNum(value)) {
  118590. return parseFloat(value);
  118591. } else {
  118592. return 0;
  118593. }
  118594. } catch (e) {
  118595. var err = e;
  118596. err = formula_default.errorInfo(err);
  118597. return [formula_default.error.v, err];
  118598. }
  118599. },
  118600. "TO_DATE": function() {
  118601. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  118602. return formula_default.error.na;
  118603. }
  118604. for (var i2 = 0; i2 < arguments.length; i2++) {
  118605. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  118606. if (!p[0]) {
  118607. return formula_default.error.v;
  118608. }
  118609. }
  118610. try {
  118611. var value = func_methods_default.getFirstValue(arguments[0]);
  118612. if (valueIsError(value)) {
  118613. return value;
  118614. }
  118615. if (!isRealNum(value)) {
  118616. return formula_default.error.v;
  118617. }
  118618. value = parseFloat(value);
  118619. return update("yyyy-mm-dd", value);
  118620. } catch (e) {
  118621. var err = e;
  118622. err = formula_default.errorInfo(err);
  118623. return [formula_default.error.v, err];
  118624. }
  118625. },
  118626. "TO_PURE_NUMBER": function() {
  118627. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  118628. return formula_default.error.na;
  118629. }
  118630. for (var i2 = 0; i2 < arguments.length; i2++) {
  118631. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  118632. if (!p[0]) {
  118633. return formula_default.error.v;
  118634. }
  118635. }
  118636. try {
  118637. var value = func_methods_default.getFirstValue(arguments[0], "text");
  118638. if (valueIsError(value)) {
  118639. return value;
  118640. }
  118641. if ((0, import_dayjs8.default)(value).isValid()) {
  118642. return genarate(value)[2];
  118643. } else {
  118644. return (0, import_numeral6.default)(value).value() == null ? value : (0, import_numeral6.default)(value).value();
  118645. }
  118646. } catch (e) {
  118647. var err = e;
  118648. err = formula_default.errorInfo(err);
  118649. return [formula_default.error.v, err];
  118650. }
  118651. },
  118652. "TO_TEXT": function() {
  118653. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  118654. return formula_default.error.na;
  118655. }
  118656. for (var i2 = 0; i2 < arguments.length; i2++) {
  118657. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  118658. if (!p[0]) {
  118659. return formula_default.error.v;
  118660. }
  118661. }
  118662. try {
  118663. var value = func_methods_default.getFirstValue(arguments[0], "text");
  118664. if (valueIsError(value)) {
  118665. return value;
  118666. }
  118667. return update("@", value);
  118668. } catch (e) {
  118669. var err = e;
  118670. err = formula_default.errorInfo(err);
  118671. return [formula_default.error.v, err];
  118672. }
  118673. },
  118674. "TO_DOLLARS": function() {
  118675. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  118676. return formula_default.error.na;
  118677. }
  118678. for (var i2 = 0; i2 < arguments.length; i2++) {
  118679. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  118680. if (!p[0]) {
  118681. return formula_default.error.v;
  118682. }
  118683. }
  118684. try {
  118685. var value = func_methods_default.getFirstValue(arguments[0]);
  118686. if (valueIsError(value)) {
  118687. return value;
  118688. }
  118689. if (!isRealNum(value)) {
  118690. return formula_default.error.v;
  118691. }
  118692. value = parseFloat(value);
  118693. return update("$ 0.00", value);
  118694. } catch (e) {
  118695. var err = e;
  118696. err = formula_default.errorInfo(err);
  118697. return [formula_default.error.v, err];
  118698. }
  118699. },
  118700. "TO_PERCENT": function() {
  118701. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  118702. return formula_default.error.na;
  118703. }
  118704. for (var i2 = 0; i2 < arguments.length; i2++) {
  118705. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  118706. if (!p[0]) {
  118707. return formula_default.error.v;
  118708. }
  118709. }
  118710. try {
  118711. var value = func_methods_default.getFirstValue(arguments[0]);
  118712. if (valueIsError(value)) {
  118713. return value;
  118714. }
  118715. if (!isRealNum(value)) {
  118716. return formula_default.error.v;
  118717. }
  118718. value = parseFloat(value);
  118719. return update("0%", value);
  118720. } catch (e) {
  118721. var err = e;
  118722. err = formula_default.errorInfo(err);
  118723. return [formula_default.error.v, err];
  118724. }
  118725. },
  118726. "DGET": function() {
  118727. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  118728. return formula_default.error.na;
  118729. }
  118730. for (var i2 = 0; i2 < arguments.length; i2++) {
  118731. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  118732. if (!p[0]) {
  118733. return formula_default.error.v;
  118734. }
  118735. }
  118736. try {
  118737. var data_database = arguments[0];
  118738. var database = [];
  118739. if (getObjType(data_database) == "object" && data_database.startCell != null) {
  118740. if (data_database.data == null) {
  118741. return formula_default.error.v;
  118742. }
  118743. database = func_methods_default.getCellDataDyadicArr(data_database, "text");
  118744. } else {
  118745. return formula_default.error.v;
  118746. }
  118747. var field = func_methods_default.getFirstValue(arguments[1], "text");
  118748. if (valueIsError(field)) {
  118749. return field;
  118750. }
  118751. if (isRealNull(field)) {
  118752. return formula_default.error.v;
  118753. }
  118754. var data_criteria = arguments[2];
  118755. var criteria = [];
  118756. if (getObjType(data_criteria) == "object" && data_criteria.startCell != null) {
  118757. if (data_criteria.data == null) {
  118758. return formula_default.error.v;
  118759. }
  118760. criteria = func_methods_default.getCellDataDyadicArr(data_criteria, "text");
  118761. } else {
  118762. return formula_default.error.v;
  118763. }
  118764. if (!isRealNum(field) && getObjType(field) !== "string") {
  118765. return formula_default.error.v;
  118766. }
  118767. var resultIndexes = func_methods_default.findResultIndex(database, criteria);
  118768. var targetFields = [];
  118769. if (getObjType(field) === "string") {
  118770. var index2 = func_methods_default.findField(database, field);
  118771. targetFields = func_methods_default.rest(database[index2]);
  118772. } else {
  118773. targetFields = func_methods_default.rest(database[field]);
  118774. }
  118775. if (resultIndexes.length === 0) {
  118776. return formula_default.error.v;
  118777. }
  118778. if (resultIndexes.length > 1) {
  118779. return formula_default.error.nm;
  118780. }
  118781. return targetFields[resultIndexes[0]];
  118782. } catch (e) {
  118783. var err = e;
  118784. err = formula_default.errorInfo(err);
  118785. return [formula_default.error.v, err];
  118786. }
  118787. },
  118788. "DMAX": function() {
  118789. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  118790. return formula_default.error.na;
  118791. }
  118792. for (var i2 = 0; i2 < arguments.length; i2++) {
  118793. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  118794. if (!p[0]) {
  118795. return formula_default.error.v;
  118796. }
  118797. }
  118798. try {
  118799. var data_database = arguments[0];
  118800. var database = [];
  118801. if (getObjType(data_database) == "object" && data_database.startCell != null) {
  118802. if (data_database.data == null) {
  118803. return formula_default.error.v;
  118804. }
  118805. database = func_methods_default.getCellDataDyadicArr(data_database, "text");
  118806. } else {
  118807. return formula_default.error.v;
  118808. }
  118809. var field = func_methods_default.getFirstValue(arguments[1], "text");
  118810. if (valueIsError(field)) {
  118811. return field;
  118812. }
  118813. if (isRealNull(field)) {
  118814. return formula_default.error.v;
  118815. }
  118816. var data_criteria = arguments[2];
  118817. var criteria = [];
  118818. if (getObjType(data_criteria) == "object" && data_criteria.startCell != null) {
  118819. if (data_criteria.data == null) {
  118820. return formula_default.error.v;
  118821. }
  118822. criteria = func_methods_default.getCellDataDyadicArr(data_criteria, "text");
  118823. } else {
  118824. return formula_default.error.v;
  118825. }
  118826. if (!isRealNum(field) && getObjType(field) !== "string") {
  118827. return formula_default.error.v;
  118828. }
  118829. var resultIndexes = func_methods_default.findResultIndex(database, criteria);
  118830. var targetFields = [];
  118831. if (getObjType(field) === "string") {
  118832. var index2 = func_methods_default.findField(database, field);
  118833. targetFields = func_methods_default.rest(database[index2]);
  118834. } else {
  118835. targetFields = func_methods_default.rest(database[field]);
  118836. }
  118837. var maxValue = targetFields[resultIndexes[0]];
  118838. for (var i2 = 1; i2 < resultIndexes.length; i2++) {
  118839. if (maxValue < targetFields[resultIndexes[i2]]) {
  118840. maxValue = targetFields[resultIndexes[i2]];
  118841. }
  118842. }
  118843. return maxValue;
  118844. } catch (e) {
  118845. var err = e;
  118846. err = formula_default.errorInfo(err);
  118847. return [formula_default.error.v, err];
  118848. }
  118849. },
  118850. "DMIN": function() {
  118851. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  118852. return formula_default.error.na;
  118853. }
  118854. for (var i2 = 0; i2 < arguments.length; i2++) {
  118855. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  118856. if (!p[0]) {
  118857. return formula_default.error.v;
  118858. }
  118859. }
  118860. try {
  118861. var data_database = arguments[0];
  118862. var database = [];
  118863. if (getObjType(data_database) == "object" && data_database.startCell != null) {
  118864. if (data_database.data == null) {
  118865. return formula_default.error.v;
  118866. }
  118867. database = func_methods_default.getCellDataDyadicArr(data_database, "text");
  118868. } else {
  118869. return formula_default.error.v;
  118870. }
  118871. var field = func_methods_default.getFirstValue(arguments[1], "text");
  118872. if (valueIsError(field)) {
  118873. return field;
  118874. }
  118875. if (isRealNull(field)) {
  118876. return formula_default.error.v;
  118877. }
  118878. var data_criteria = arguments[2];
  118879. var criteria = [];
  118880. if (getObjType(data_criteria) == "object" && data_criteria.startCell != null) {
  118881. if (data_criteria.data == null) {
  118882. return formula_default.error.v;
  118883. }
  118884. criteria = func_methods_default.getCellDataDyadicArr(data_criteria, "text");
  118885. } else {
  118886. return formula_default.error.v;
  118887. }
  118888. if (!isRealNum(field) && getObjType(field) !== "string") {
  118889. return formula_default.error.v;
  118890. }
  118891. var resultIndexes = findResultIndex(database, criteria);
  118892. var targetFields = [];
  118893. if (getObjType(field) === "string") {
  118894. var index2 = findField(database, field);
  118895. targetFields = rest(database[index2]);
  118896. } else {
  118897. targetFields = rest(database[field]);
  118898. }
  118899. var minValue = targetFields[resultIndexes[0]];
  118900. for (var i2 = 1; i2 < resultIndexes.length; i2++) {
  118901. if (minValue > targetFields[resultIndexes[i2]]) {
  118902. minValue = targetFields[resultIndexes[i2]];
  118903. }
  118904. }
  118905. return minValue;
  118906. } catch (e) {
  118907. var err = e;
  118908. err = formula_default.errorInfo(err);
  118909. return [formula_default.error.v, err];
  118910. }
  118911. },
  118912. "DAVERAGE": function() {
  118913. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  118914. return formula_default.error.na;
  118915. }
  118916. for (var i2 = 0; i2 < arguments.length; i2++) {
  118917. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  118918. if (!p[0]) {
  118919. return formula_default.error.v;
  118920. }
  118921. }
  118922. try {
  118923. var data_database = arguments[0];
  118924. var database = [];
  118925. if (getObjType(data_database) == "object" && data_database.startCell != null) {
  118926. if (data_database.data == null) {
  118927. return formula_default.error.v;
  118928. }
  118929. database = func_methods_default.getCellDataDyadicArr(data_database, "text");
  118930. } else {
  118931. return formula_default.error.v;
  118932. }
  118933. var field = func_methods_default.getFirstValue(arguments[1], "text");
  118934. if (valueIsError(field)) {
  118935. return field;
  118936. }
  118937. if (isRealNull(field)) {
  118938. return formula_default.error.v;
  118939. }
  118940. var data_criteria = arguments[2];
  118941. var criteria = [];
  118942. if (getObjType(data_criteria) == "object" && data_criteria.startCell != null) {
  118943. if (data_criteria.data == null) {
  118944. return formula_default.error.v;
  118945. }
  118946. criteria = func_methods_default.getCellDataDyadicArr(data_criteria, "text");
  118947. } else {
  118948. return formula_default.error.v;
  118949. }
  118950. if (!isRealNum(field) && getObjType(field) !== "string") {
  118951. return formula_default.error.v;
  118952. }
  118953. var resultIndexes = func_methods_default.findResultIndex(database, criteria);
  118954. var targetFields = [];
  118955. if (getObjType(field) === "string") {
  118956. var index2 = func_methods_default.findField(database, field);
  118957. targetFields = func_methods_default.rest(database[index2]);
  118958. } else {
  118959. targetFields = func_methods_default.rest(database[field]);
  118960. }
  118961. var sum = 0;
  118962. for (var i2 = 0; i2 < resultIndexes.length; i2++) {
  118963. sum += targetFields[resultIndexes[i2]];
  118964. }
  118965. return resultIndexes.length === 0 ? formula_default.error.d : sum / resultIndexes.length;
  118966. } catch (e) {
  118967. var err = e;
  118968. err = formula_default.errorInfo(err);
  118969. return [formula_default.error.v, err];
  118970. }
  118971. },
  118972. "DCOUNT": function() {
  118973. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  118974. return formula_default.error.na;
  118975. }
  118976. for (var i2 = 0; i2 < arguments.length; i2++) {
  118977. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  118978. if (!p[0]) {
  118979. return formula_default.error.v;
  118980. }
  118981. }
  118982. try {
  118983. var data_database = arguments[0];
  118984. var database = [];
  118985. if (getObjType(data_database) == "object" && data_database.startCell != null) {
  118986. if (data_database.data == null) {
  118987. return formula_default.error.v;
  118988. }
  118989. database = func_methods_default.getCellDataDyadicArr(data_database, "text");
  118990. } else {
  118991. return formula_default.error.v;
  118992. }
  118993. var field = func_methods_default.getFirstValue(arguments[1], "text");
  118994. if (valueIsError(field)) {
  118995. return field;
  118996. }
  118997. if (isRealNull(field)) {
  118998. return formula_default.error.v;
  118999. }
  119000. var data_criteria = arguments[2];
  119001. var criteria = [];
  119002. if (getObjType(data_criteria) == "object" && data_criteria.startCell != null) {
  119003. if (data_criteria.data == null) {
  119004. return formula_default.error.v;
  119005. }
  119006. criteria = func_methods_default.getCellDataDyadicArr(data_criteria, "text");
  119007. } else {
  119008. return formula_default.error.v;
  119009. }
  119010. if (!isRealNum(field) && getObjType(field) !== "string") {
  119011. return formula_default.error.v;
  119012. }
  119013. var resultIndexes = func_methods_default.findResultIndex(database, criteria);
  119014. var targetFields = [];
  119015. if (getObjType(field) === "string") {
  119016. var index2 = func_methods_default.findField(database, field);
  119017. targetFields = func_methods_default.rest(database[index2]);
  119018. } else {
  119019. targetFields = func_methods_default.rest(database[field]);
  119020. }
  119021. var targetValues = [];
  119022. for (var i2 = 0; i2 < resultIndexes.length; i2++) {
  119023. targetValues[i2] = targetFields[resultIndexes[i2]];
  119024. }
  119025. return window.luckysheet_function.COUNT.f.apply(window.luckysheet_function.COUNT, targetValues);
  119026. } catch (e) {
  119027. var err = e;
  119028. err = formula_default.errorInfo(err);
  119029. return [formula_default.error.v, err];
  119030. }
  119031. },
  119032. "DCOUNTA": function() {
  119033. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  119034. return formula_default.error.na;
  119035. }
  119036. for (var i2 = 0; i2 < arguments.length; i2++) {
  119037. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  119038. if (!p[0]) {
  119039. return formula_default.error.v;
  119040. }
  119041. }
  119042. try {
  119043. var data_database = arguments[0];
  119044. var database = [];
  119045. if (getObjType(data_database) == "object" && data_database.startCell != null) {
  119046. if (data_database.data == null) {
  119047. return formula_default.error.v;
  119048. }
  119049. database = func_methods_default.getCellDataDyadicArr(data_database, "text");
  119050. } else {
  119051. return formula_default.error.v;
  119052. }
  119053. var field = func_methods_default.getFirstValue(arguments[1], "text");
  119054. if (valueIsError(field)) {
  119055. return field;
  119056. }
  119057. if (isRealNull(field)) {
  119058. return formula_default.error.v;
  119059. }
  119060. var data_criteria = arguments[2];
  119061. var criteria = [];
  119062. if (getObjType(data_criteria) == "object" && data_criteria.startCell != null) {
  119063. if (data_criteria.data == null) {
  119064. return formula_default.error.v;
  119065. }
  119066. criteria = func_methods_default.getCellDataDyadicArr(data_criteria, "text");
  119067. } else {
  119068. return formula_default.error.v;
  119069. }
  119070. if (!isRealNum(field) && getObjType(field) !== "string") {
  119071. return formula_default.error.v;
  119072. }
  119073. var resultIndexes = func_methods_default.findResultIndex(database, criteria);
  119074. var targetFields = [];
  119075. if (getObjType(field) === "string") {
  119076. var index2 = func_methods_default.findField(database, field);
  119077. targetFields = func_methods_default.rest(database[index2]);
  119078. } else {
  119079. targetFields = func_methods_default.rest(database[field]);
  119080. }
  119081. var targetValues = [];
  119082. for (var i2 = 0; i2 < resultIndexes.length; i2++) {
  119083. targetValues[i2] = targetFields[resultIndexes[i2]];
  119084. }
  119085. return window.luckysheet_function.COUNTA.f.apply(window.luckysheet_function.COUNTA, targetValues);
  119086. } catch (e) {
  119087. var err = e;
  119088. err = formula_default.errorInfo(err);
  119089. return [formula_default.error.v, err];
  119090. }
  119091. },
  119092. "DPRODUCT": function() {
  119093. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  119094. return formula_default.error.na;
  119095. }
  119096. for (var i2 = 0; i2 < arguments.length; i2++) {
  119097. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  119098. if (!p[0]) {
  119099. return formula_default.error.v;
  119100. }
  119101. }
  119102. try {
  119103. var data_database = arguments[0];
  119104. var database = [];
  119105. if (getObjType(data_database) == "object" && data_database.startCell != null) {
  119106. if (data_database.data == null) {
  119107. return formula_default.error.v;
  119108. }
  119109. database = func_methods_default.getCellDataDyadicArr(data_database, "text");
  119110. } else {
  119111. return formula_default.error.v;
  119112. }
  119113. var field = func_methods_default.getFirstValue(arguments[1], "text");
  119114. if (valueIsError(field)) {
  119115. return field;
  119116. }
  119117. if (isRealNull(field)) {
  119118. return formula_default.error.v;
  119119. }
  119120. var data_criteria = arguments[2];
  119121. var criteria = [];
  119122. if (getObjType(data_criteria) == "object" && data_criteria.startCell != null) {
  119123. if (data_criteria.data == null) {
  119124. return formula_default.error.v;
  119125. }
  119126. criteria = func_methods_default.getCellDataDyadicArr(data_criteria, "text");
  119127. } else {
  119128. return formula_default.error.v;
  119129. }
  119130. if (!isRealNum(field) && getObjType(field) !== "string") {
  119131. return formula_default.error.v;
  119132. }
  119133. var resultIndexes = func_methods_default.findResultIndex(database, criteria);
  119134. var targetFields = [];
  119135. if (getObjType(field) === "string") {
  119136. var index2 = func_methods_default.findField(database, field);
  119137. targetFields = func_methods_default.rest(database[index2]);
  119138. } else {
  119139. targetFields = func_methods_default.rest(database[field]);
  119140. }
  119141. var targetValues = [];
  119142. for (var i2 = 0; i2 < resultIndexes.length; i2++) {
  119143. targetValues[i2] = targetFields[resultIndexes[i2]];
  119144. }
  119145. targetValues = func_methods_default.compact(targetValues);
  119146. var result = 1;
  119147. for (i2 = 0; i2 < targetValues.length; i2++) {
  119148. result *= targetValues[i2];
  119149. }
  119150. return result;
  119151. } catch (e) {
  119152. var err = e;
  119153. err = formula_default.errorInfo(err);
  119154. return [formula_default.error.v, err];
  119155. }
  119156. },
  119157. "DSTDEV": function() {
  119158. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  119159. return formula_default.error.na;
  119160. }
  119161. for (var i2 = 0; i2 < arguments.length; i2++) {
  119162. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  119163. if (!p[0]) {
  119164. return formula_default.error.v;
  119165. }
  119166. }
  119167. try {
  119168. var data_database = arguments[0];
  119169. var database = [];
  119170. if (getObjType(data_database) == "object" && data_database.startCell != null) {
  119171. if (data_database.data == null) {
  119172. return formula_default.error.v;
  119173. }
  119174. database = func_methods_default.getCellDataDyadicArr(data_database, "text");
  119175. } else {
  119176. return formula_default.error.v;
  119177. }
  119178. var field = func_methods_default.getFirstValue(arguments[1], "text");
  119179. if (valueIsError(field)) {
  119180. return field;
  119181. }
  119182. if (isRealNull(field)) {
  119183. return formula_default.error.v;
  119184. }
  119185. var data_criteria = arguments[2];
  119186. var criteria = [];
  119187. if (getObjType(data_criteria) == "object" && data_criteria.startCell != null) {
  119188. if (data_criteria.data == null) {
  119189. return formula_default.error.v;
  119190. }
  119191. criteria = func_methods_default.getCellDataDyadicArr(data_criteria, "text");
  119192. } else {
  119193. return formula_default.error.v;
  119194. }
  119195. if (!isRealNum(field) && getObjType(field) !== "string") {
  119196. return formula_default.error.v;
  119197. }
  119198. var resultIndexes = func_methods_default.findResultIndex(database, criteria);
  119199. var targetFields = [];
  119200. if (getObjType(field) === "string") {
  119201. var index2 = func_methods_default.findField(database, field);
  119202. targetFields = func_methods_default.rest(database[index2]);
  119203. } else {
  119204. targetFields = func_methods_default.rest(database[field]);
  119205. }
  119206. var targetValues = [];
  119207. for (var i2 = 0; i2 < resultIndexes.length; i2++) {
  119208. targetValues[i2] = targetFields[resultIndexes[i2]];
  119209. }
  119210. targetValues = func_methods_default.compact(targetValues);
  119211. return window.luckysheet_function.STDEVA.f.apply(window.luckysheet_function.STDEVA, targetValues);
  119212. } catch (e) {
  119213. var err = e;
  119214. err = formula_default.errorInfo(err);
  119215. return [formula_default.error.v, err];
  119216. }
  119217. },
  119218. "DSTDEVP": function() {
  119219. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  119220. return formula_default.error.na;
  119221. }
  119222. for (var i2 = 0; i2 < arguments.length; i2++) {
  119223. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  119224. if (!p[0]) {
  119225. return formula_default.error.v;
  119226. }
  119227. }
  119228. try {
  119229. var data_database = arguments[0];
  119230. var database = [];
  119231. if (getObjType(data_database) == "object" && data_database.startCell != null) {
  119232. if (data_database.data == null) {
  119233. return formula_default.error.v;
  119234. }
  119235. database = func_methods_default.getCellDataDyadicArr(data_database, "text");
  119236. } else {
  119237. return formula_default.error.v;
  119238. }
  119239. var field = func_methods_default.getFirstValue(arguments[1], "text");
  119240. if (valueIsError(field)) {
  119241. return field;
  119242. }
  119243. if (isRealNull(field)) {
  119244. return formula_default.error.v;
  119245. }
  119246. var data_criteria = arguments[2];
  119247. var criteria = [];
  119248. if (getObjType(data_criteria) == "object" && data_criteria.startCell != null) {
  119249. if (data_criteria.data == null) {
  119250. return formula_default.error.v;
  119251. }
  119252. criteria = func_methods_default.getCellDataDyadicArr(data_criteria, "text");
  119253. } else {
  119254. return formula_default.error.v;
  119255. }
  119256. if (!isRealNum(field) && getObjType(field) !== "string") {
  119257. return formula_default.error.v;
  119258. }
  119259. var resultIndexes = func_methods_default.findResultIndex(database, criteria);
  119260. var targetFields = [];
  119261. if (getObjType(field) === "string") {
  119262. var index2 = func_methods_default.findField(database, field);
  119263. targetFields = func_methods_default.rest(database[index2]);
  119264. } else {
  119265. targetFields = func_methods_default.rest(database[field]);
  119266. }
  119267. var targetValues = [];
  119268. for (var i2 = 0; i2 < resultIndexes.length; i2++) {
  119269. targetValues[i2] = targetFields[resultIndexes[i2]];
  119270. }
  119271. targetValues = func_methods_default.compact(targetValues);
  119272. return window.luckysheet_function.STDEVP.f.apply(window.luckysheet_function.STDEVP, targetValues);
  119273. } catch (e) {
  119274. var err = e;
  119275. err = formula_default.errorInfo(err);
  119276. return [formula_default.error.v, err];
  119277. }
  119278. },
  119279. "DSUM": function() {
  119280. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  119281. return formula_default.error.na;
  119282. }
  119283. for (var i2 = 0; i2 < arguments.length; i2++) {
  119284. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  119285. if (!p[0]) {
  119286. return formula_default.error.v;
  119287. }
  119288. }
  119289. try {
  119290. var data_database = arguments[0];
  119291. var database = [];
  119292. if (getObjType(data_database) == "object" && data_database.startCell != null) {
  119293. if (data_database.data == null) {
  119294. return formula_default.error.v;
  119295. }
  119296. database = func_methods_default.getCellDataDyadicArr(data_database, "text");
  119297. } else {
  119298. return formula_default.error.v;
  119299. }
  119300. var field = func_methods_default.getFirstValue(arguments[1], "text");
  119301. if (valueIsError(field)) {
  119302. return field;
  119303. }
  119304. if (isRealNull(field)) {
  119305. return formula_default.error.v;
  119306. }
  119307. var data_criteria = arguments[2];
  119308. var criteria = [];
  119309. if (getObjType(data_criteria) == "object" && data_criteria.startCell != null) {
  119310. if (data_criteria.data == null) {
  119311. return formula_default.error.v;
  119312. }
  119313. criteria = func_methods_default.getCellDataDyadicArr(data_criteria, "text");
  119314. } else {
  119315. return formula_default.error.v;
  119316. }
  119317. if (!isRealNum(field) && getObjType(field) !== "string") {
  119318. return formula_default.error.v;
  119319. }
  119320. var resultIndexes = func_methods_default.findResultIndex(database, criteria);
  119321. var targetFields = [];
  119322. if (getObjType(field) === "string") {
  119323. var index2 = func_methods_default.findField(database, field);
  119324. targetFields = func_methods_default.rest(database[index2]);
  119325. } else {
  119326. targetFields = func_methods_default.rest(database[field]);
  119327. }
  119328. var targetValues = [];
  119329. for (var i2 = 0; i2 < resultIndexes.length; i2++) {
  119330. targetValues[i2] = targetFields[resultIndexes[i2]];
  119331. }
  119332. targetValues = func_methods_default.compact(targetValues);
  119333. var result = 0;
  119334. for (i2 = 0; i2 < targetValues.length; i2++) {
  119335. result += targetValues[i2];
  119336. }
  119337. return result;
  119338. } catch (e) {
  119339. var err = e;
  119340. err = formula_default.errorInfo(err);
  119341. return [formula_default.error.v, err];
  119342. }
  119343. },
  119344. "DVAR": function() {
  119345. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  119346. return formula_default.error.na;
  119347. }
  119348. for (var i2 = 0; i2 < arguments.length; i2++) {
  119349. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  119350. if (!p[0]) {
  119351. return formula_default.error.v;
  119352. }
  119353. }
  119354. try {
  119355. var data_database = arguments[0];
  119356. var database = [];
  119357. if (getObjType(data_database) == "object" && data_database.startCell != null) {
  119358. if (data_database.data == null) {
  119359. return formula_default.error.v;
  119360. }
  119361. database = func_methods_default.getCellDataDyadicArr(data_database, "text");
  119362. } else {
  119363. return formula_default.error.v;
  119364. }
  119365. var field = func_methods_default.getFirstValue(arguments[1], "text");
  119366. if (valueIsError(field)) {
  119367. return field;
  119368. }
  119369. if (isRealNull(field)) {
  119370. return formula_default.error.v;
  119371. }
  119372. var data_criteria = arguments[2];
  119373. var criteria = [];
  119374. if (getObjType(data_criteria) == "object" && data_criteria.startCell != null) {
  119375. if (data_criteria.data == null) {
  119376. return formula_default.error.v;
  119377. }
  119378. criteria = func_methods_default.getCellDataDyadicArr(data_criteria, "text");
  119379. } else {
  119380. return formula_default.error.v;
  119381. }
  119382. if (!isRealNum(field) && getObjType(field) !== "string") {
  119383. return formula_default.error.v;
  119384. }
  119385. var resultIndexes = func_methods_default.findResultIndex(database, criteria);
  119386. var targetFields = [];
  119387. if (getObjType(field) === "string") {
  119388. var index2 = func_methods_default.findField(database, field);
  119389. targetFields = func_methods_default.rest(database[index2]);
  119390. } else {
  119391. targetFields = func_methods_default.rest(database[field]);
  119392. }
  119393. var targetValues = [];
  119394. for (var i2 = 0; i2 < resultIndexes.length; i2++) {
  119395. targetValues[i2] = targetFields[resultIndexes[i2]];
  119396. }
  119397. targetValues = func_methods_default.compact(targetValues);
  119398. return window.luckysheet_function.VAR_S.f.apply(window.luckysheet_function.VAR_S, targetValues);
  119399. } catch (e) {
  119400. var err = e;
  119401. err = formula_default.errorInfo(err);
  119402. return [formula_default.error.v, err];
  119403. }
  119404. },
  119405. "DVARP": function() {
  119406. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  119407. return formula_default.error.na;
  119408. }
  119409. for (var i2 = 0; i2 < arguments.length; i2++) {
  119410. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  119411. if (!p[0]) {
  119412. return formula_default.error.v;
  119413. }
  119414. }
  119415. try {
  119416. var data_database = arguments[0];
  119417. var database = [];
  119418. if (getObjType(data_database) == "object" && data_database.startCell != null) {
  119419. if (data_database.data == null) {
  119420. return formula_default.error.v;
  119421. }
  119422. database = func_methods_default.getCellDataDyadicArr(data_database, "text");
  119423. } else {
  119424. return formula_default.error.v;
  119425. }
  119426. var field = func_methods_default.getFirstValue(arguments[1], "text");
  119427. if (valueIsError(field)) {
  119428. return field;
  119429. }
  119430. if (isRealNull(field)) {
  119431. return formula_default.error.v;
  119432. }
  119433. var data_criteria = arguments[2];
  119434. var criteria = [];
  119435. if (getObjType(data_criteria) == "object" && data_criteria.startCell != null) {
  119436. if (data_criteria.data == null) {
  119437. return formula_default.error.v;
  119438. }
  119439. criteria = func_methods_default.getCellDataDyadicArr(data_criteria, "text");
  119440. } else {
  119441. return formula_default.error.v;
  119442. }
  119443. if (!isRealNum(field) && getObjType(field) !== "string") {
  119444. return formula_default.error.v;
  119445. }
  119446. var resultIndexes = func_methods_default.findResultIndex(database, criteria);
  119447. var targetFields = [];
  119448. if (getObjType(field) === "string") {
  119449. var index2 = func_methods_default.findField(database, field);
  119450. targetFields = func_methods_default.rest(database[index2]);
  119451. } else {
  119452. targetFields = func_methods_default.rest(database[field]);
  119453. }
  119454. var targetValues = [];
  119455. for (var i2 = 0; i2 < resultIndexes.length; i2++) {
  119456. targetValues[i2] = targetFields[resultIndexes[i2]];
  119457. }
  119458. targetValues = func_methods_default.compact(targetValues);
  119459. return window.luckysheet_function.VAR_P.f.apply(window.luckysheet_function.VAR_P, targetValues);
  119460. } catch (e) {
  119461. var err = e;
  119462. err = formula_default.errorInfo(err);
  119463. return [formula_default.error.v, err];
  119464. }
  119465. },
  119466. "LINESPLINES": function() {
  119467. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  119468. return formula_default.error.na;
  119469. }
  119470. for (var i2 = 0; i2 < arguments.length; i2++) {
  119471. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  119472. if (!p[0]) {
  119473. return formula_default.error.v;
  119474. }
  119475. }
  119476. try {
  119477. var cell_r = window.luckysheetCurrentRow;
  119478. var cell_c = window.luckysheetCurrentColumn;
  119479. var cell_fp = window.luckysheetCurrentFunction;
  119480. var colorList = formula_default.colorList;
  119481. var rangeValue = arguments[0];
  119482. var lineColor = arguments[1];
  119483. var lineWidth = arguments[2];
  119484. var normalValue = arguments[3];
  119485. var normalColor = arguments[4];
  119486. var maxSpot = arguments[5];
  119487. var minSpot = arguments[6];
  119488. var spotRadius = arguments[7];
  119489. let luckysheetfile = getluckysheetfile();
  119490. let index2 = getSheetIndex(store_default.calculateSheetIndex);
  119491. let sheetdata = luckysheetfile[index2].data;
  119492. var dataformat = formula_default.readCellDataToOneArray(rangeValue);
  119493. var cellSize = menuButton_default.getCellRealSize(sheetdata, cell_r, cell_c);
  119494. var width = cellSize[0];
  119495. var height = cellSize[1];
  119496. var sparksetting = {};
  119497. if (lineWidth == null) {
  119498. lineWidth = 1;
  119499. }
  119500. sparksetting["lineWidth"] = lineWidth;
  119501. sparksetting["offsetY"] = lineWidth + 1;
  119502. sparksetting.height = height - (lineWidth + 1);
  119503. sparksetting.width = width;
  119504. var sparkColorSetting = function(attr, value) {
  119505. if (!!value) {
  119506. if (typeof value == "number") {
  119507. if (value > 19) {
  119508. value = value % 20;
  119509. }
  119510. value = colorList[value];
  119511. }
  119512. sparksetting[attr] = value;
  119513. }
  119514. };
  119515. if (lineColor == null) {
  119516. lineColor = "#2ec7c9";
  119517. }
  119518. sparkColorSetting("lineColor", lineColor);
  119519. sparksetting["fillColor"] = 0;
  119520. if (!!normalValue) {
  119521. if (typeof normalValue == "string") {
  119522. normalValue = normalValue.toLowerCase();
  119523. var nv = null;
  119524. if (normalValue == "min") {
  119525. nv = window.luckysheet_function.MIN.f({"data": dataformat});
  119526. } else if (normalValue == "max") {
  119527. nv = window.luckysheet_function.MAX.f({"data": dataformat});
  119528. } else if (normalValue == "avg" || normalValue == "mean") {
  119529. nv = window.luckysheet_function.AVERAGE.f({"data": dataformat});
  119530. } else if (normalValue == "median") {
  119531. nv = window.luckysheet_function.MEDIAN.f({"data": dataformat});
  119532. }
  119533. if (!!nv) {
  119534. sparksetting["normalRangeMin"] = nv;
  119535. sparksetting["normalRangeMax"] = nv;
  119536. }
  119537. } else {
  119538. sparksetting["normalRangeMin"] = normalValue;
  119539. sparksetting["normalRangeMax"] = normalValue;
  119540. }
  119541. }
  119542. if (normalColor == null) {
  119543. normalColor = "#000";
  119544. }
  119545. sparkColorSetting("normalRangeColor", normalColor);
  119546. sparkColorSetting("maxSpotColor", maxSpot);
  119547. sparkColorSetting("minSpotColor", minSpot);
  119548. if (spotRadius == null) {
  119549. spotRadius = "1.5";
  119550. }
  119551. sparksetting["spotRadius"] = spotRadius;
  119552. var temp1 = sparkline_default.init(dataformat, sparksetting);
  119553. return temp1;
  119554. } catch (e) {
  119555. var err = e;
  119556. err = formula_default.errorInfo(err);
  119557. return [formula_default.error.v, err];
  119558. }
  119559. },
  119560. "AREASPLINES": function() {
  119561. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  119562. return formula_default.error.na;
  119563. }
  119564. for (var i2 = 0; i2 < arguments.length; i2++) {
  119565. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  119566. if (!p[0]) {
  119567. return formula_default.error.v;
  119568. }
  119569. }
  119570. try {
  119571. var cell_r = window.luckysheetCurrentRow;
  119572. var cell_c = window.luckysheetCurrentColumn;
  119573. var cell_fp = window.luckysheetCurrentFunction;
  119574. var colorList = formula_default.colorList;
  119575. var rangeValue = arguments[0];
  119576. var lineColor = arguments[1];
  119577. var fillColor = arguments[2];
  119578. var lineWidth = arguments[3];
  119579. var normalValue = arguments[4];
  119580. var normalColor = arguments[5];
  119581. var dataformat = formula_default.readCellDataToOneArray(rangeValue);
  119582. let luckysheetfile = getluckysheetfile();
  119583. let index2 = getSheetIndex(store_default.calculateSheetIndex);
  119584. let sheetdata = luckysheetfile[index2].data;
  119585. var cellSize = menuButton_default.getCellRealSize(sheetdata, cell_r, cell_c);
  119586. var width = cellSize[0];
  119587. var height = cellSize[1];
  119588. var sparksetting = {};
  119589. if (lineWidth == null) {
  119590. lineWidth = 1;
  119591. }
  119592. sparksetting["lineWidth"] = lineWidth;
  119593. sparksetting["offsetY"] = lineWidth + 1;
  119594. sparksetting.height = height - (lineWidth + 1);
  119595. sparksetting.width = width;
  119596. var sparkColorSetting = function(attr, value) {
  119597. if (!!value) {
  119598. if (typeof value == "number") {
  119599. if (value > 19) {
  119600. value = value % 20;
  119601. }
  119602. value = colorList[value];
  119603. }
  119604. sparksetting[attr] = value;
  119605. }
  119606. };
  119607. if (lineColor == null) {
  119608. lineColor = "#2ec7c9";
  119609. }
  119610. sparkColorSetting("lineColor", lineColor);
  119611. sparkColorSetting("fillColor", fillColor);
  119612. if (lineWidth == null) {
  119613. lineWidth = "1";
  119614. }
  119615. sparksetting["lineWidth"] = lineWidth;
  119616. if (!!normalValue) {
  119617. if (typeof normalValue == "string") {
  119618. normalValue = normalValue.toLowerCase();
  119619. var nv = null;
  119620. if (normalValue == "min") {
  119621. nv = window.luckysheet_function.MIN.f({"data": dataformat});
  119622. } else if (normalValue == "max") {
  119623. nv = window.luckysheet_function.MAX.f({"data": dataformat});
  119624. } else if (normalValue == "avg" || normalValue == "mean") {
  119625. nv = window.luckysheet_function.AVERAGE.f({"data": dataformat});
  119626. } else if (normalValue == "median") {
  119627. nv = window.luckysheet_function.MEDIAN.f({"data": dataformat});
  119628. }
  119629. if (!!nv) {
  119630. sparksetting["normalRangeMin"] = nv;
  119631. sparksetting["normalRangeMax"] = nv;
  119632. }
  119633. } else {
  119634. sparksetting["normalRangeMin"] = normalValue;
  119635. sparksetting["normalRangeMax"] = normalValue;
  119636. }
  119637. }
  119638. if (normalColor == null) {
  119639. normalColor = "#000";
  119640. }
  119641. sparkColorSetting("normalRangeColor", normalColor);
  119642. var temp1 = sparkline_default.init(dataformat, sparksetting);
  119643. return temp1;
  119644. } catch (e) {
  119645. var err = e;
  119646. err = formula_default.errorInfo(err);
  119647. return [formula_default.error.v, err];
  119648. }
  119649. },
  119650. "COLUMNSPLINES": function() {
  119651. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  119652. return formula_default.error.na;
  119653. }
  119654. for (var i2 = 0; i2 < arguments.length; i2++) {
  119655. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  119656. if (!p[0]) {
  119657. return formula_default.error.v;
  119658. }
  119659. }
  119660. try {
  119661. var cell_r = window.luckysheetCurrentRow;
  119662. var cell_c = window.luckysheetCurrentColumn;
  119663. var cell_fp = window.luckysheetCurrentFunction;
  119664. var colorList = formula_default.colorList;
  119665. var rangeValue = arguments[0];
  119666. var dataformat = formula_default.readCellDataToOneArray(rangeValue);
  119667. let luckysheetfile = getluckysheetfile();
  119668. let index2 = getSheetIndex(store_default.calculateSheetIndex);
  119669. let sheetdata = luckysheetfile[index2].data;
  119670. var cellSize = menuButton_default.getCellRealSize(sheetdata, cell_r, cell_c);
  119671. var width = cellSize[0];
  119672. var height = cellSize[1];
  119673. var sparksetting = {};
  119674. sparksetting.height = height;
  119675. sparksetting.width = width;
  119676. var sparkColorSetting = function(attr, value) {
  119677. if (!!value) {
  119678. if (typeof value == "number") {
  119679. if (value > 19) {
  119680. value = value % 20;
  119681. }
  119682. value = colorList[value];
  119683. }
  119684. sparksetting[attr] = value;
  119685. }
  119686. };
  119687. var barSpacing = arguments[1];
  119688. var barColor = arguments[2];
  119689. var negBarColor = arguments[3];
  119690. var chartRangeMax = arguments[4];
  119691. sparksetting["type"] = "column";
  119692. if (barSpacing == null) {
  119693. barSpacing = "1";
  119694. }
  119695. sparksetting["barSpacing"] = barSpacing;
  119696. if (barColor == null) {
  119697. barColor = "#fc5c5c";
  119698. }
  119699. sparkColorSetting("barColor", barColor);
  119700. if (negBarColor == null) {
  119701. negBarColor = "#97b552";
  119702. }
  119703. sparkColorSetting("negBarColor", negBarColor);
  119704. if (chartRangeMax == null || chartRangeMax === false || typeof chartRangeMax != "number") {
  119705. sparksetting["chartRangeMax"] = void 0;
  119706. } else {
  119707. sparksetting["chartRangeMax"] = chartRangeMax;
  119708. }
  119709. var colorLists = formula_default.sparklinesColorMap(arguments);
  119710. if (!!colorLists) {
  119711. sparksetting["colorMap"] = colorLists;
  119712. }
  119713. var temp1 = sparkline_default.init(dataformat, sparksetting);
  119714. return temp1;
  119715. } catch (e) {
  119716. var err = e;
  119717. err = formula_default.errorInfo(err);
  119718. return [formula_default.error.v, err];
  119719. }
  119720. },
  119721. "STACKCOLUMNSPLINES": function() {
  119722. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  119723. return formula_default.error.na;
  119724. }
  119725. for (var i2 = 0; i2 < arguments.length; i2++) {
  119726. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  119727. if (!p[0]) {
  119728. return formula_default.error.v;
  119729. }
  119730. }
  119731. try {
  119732. var cell_r = window.luckysheetCurrentRow;
  119733. var cell_c = window.luckysheetCurrentColumn;
  119734. var cell_fp = window.luckysheetCurrentFunction;
  119735. var colorList = formula_default.colorList;
  119736. var rangeValue = arguments[0];
  119737. var dataformat = [];
  119738. var data = [];
  119739. if (rangeValue != null && rangeValue.data != null) {
  119740. data = rangeValue.data;
  119741. }
  119742. if (getObjType(data) == "array") {
  119743. data = formula_default.getPureValueByData(data);
  119744. } else if (getObjType(data) == "object") {
  119745. data = data.v;
  119746. return [data];
  119747. } else {
  119748. if (/\{.*?\}/.test(data)) {
  119749. data = data.replace(/\{/g, "[").replace(/\}/g, "]");
  119750. }
  119751. data = new Function("return " + data)();
  119752. }
  119753. var stackconfig = arguments[1];
  119754. var offsetY = data.length;
  119755. if (stackconfig == null || !!stackconfig) {
  119756. for (var c2 = 0; c2 < data[0].length; c2++) {
  119757. var colstr = "";
  119758. for (var r2 = 0; r2 < data.length; r2++) {
  119759. colstr += data[r2][c2] + ":";
  119760. }
  119761. colstr = colstr.substr(0, colstr.length - 1);
  119762. dataformat.push(colstr);
  119763. }
  119764. } else {
  119765. for (var r2 = 0; r2 < data.length; r2++) {
  119766. var rowstr = "";
  119767. for (var c2 = 0; c2 < data[0].length; c2++) {
  119768. rowstr += data[r2][c2] + ":";
  119769. }
  119770. rowstr = rowstr.substr(0, rowstr.length - 1);
  119771. dataformat.push(rowstr);
  119772. }
  119773. var offsetY = data[0].length;
  119774. }
  119775. let luckysheetfile = getluckysheetfile();
  119776. let index2 = getSheetIndex(store_default.calculateSheetIndex);
  119777. let sheetdata = luckysheetfile[index2].data;
  119778. var cellSize = menuButton_default.getCellRealSize(sheetdata, cell_r, cell_c);
  119779. var width = cellSize[0];
  119780. var height = cellSize[1];
  119781. var sparksetting = {};
  119782. sparksetting.height = height;
  119783. sparksetting.width = width;
  119784. var sparkColorSetting = function(attr, value) {
  119785. if (!!value) {
  119786. if (typeof value == "number") {
  119787. if (value > 19) {
  119788. value = value % 20;
  119789. }
  119790. value = colorList[value];
  119791. }
  119792. sparksetting[attr] = value;
  119793. }
  119794. };
  119795. var barSpacing = arguments[2];
  119796. var chartRangeMax = arguments[3];
  119797. sparksetting["type"] = "column";
  119798. if (barSpacing == null) {
  119799. barSpacing = "1";
  119800. }
  119801. sparksetting["barSpacing"] = barSpacing;
  119802. if (chartRangeMax == null || chartRangeMax === false || typeof chartRangeMax != "number") {
  119803. sparksetting["chartRangeMax"] = void 0;
  119804. } else {
  119805. sparksetting["chartRangeMax"] = chartRangeMax;
  119806. }
  119807. var colorLists = formula_default.sparklinesColorMap(arguments, 4);
  119808. if (!!colorLists) {
  119809. sparksetting["colorMap"] = colorLists;
  119810. }
  119811. var temp1 = sparkline_default.init(dataformat, sparksetting);
  119812. return temp1;
  119813. } catch (e) {
  119814. var err = e;
  119815. err = formula_default.errorInfo(err);
  119816. return [formula_default.error.v, err];
  119817. }
  119818. },
  119819. "BARSPLINES": function() {
  119820. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  119821. return formula_default.error.na;
  119822. }
  119823. for (var i2 = 0; i2 < arguments.length; i2++) {
  119824. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  119825. if (!p[0]) {
  119826. return formula_default.error.v;
  119827. }
  119828. }
  119829. try {
  119830. var cell_r = window.luckysheetCurrentRow;
  119831. var cell_c = window.luckysheetCurrentColumn;
  119832. var cell_fp = window.luckysheetCurrentFunction;
  119833. var colorList = formula_default.colorList;
  119834. var rangeValue = arguments[0];
  119835. var dataformat = formula_default.readCellDataToOneArray(rangeValue);
  119836. let luckysheetfile = getluckysheetfile();
  119837. let index2 = getSheetIndex(store_default.calculateSheetIndex);
  119838. let sheetdata = luckysheetfile[index2].data;
  119839. var cellSize = menuButton_default.getCellRealSize(sheetdata, cell_r, cell_c);
  119840. var width = cellSize[0];
  119841. var height = cellSize[1];
  119842. var sparksetting = {};
  119843. sparksetting.height = height;
  119844. sparksetting.width = width;
  119845. var sparkColorSetting = function(attr, value) {
  119846. if (!!value) {
  119847. if (typeof value == "number") {
  119848. if (value > 19) {
  119849. value = value % 20;
  119850. }
  119851. value = colorList[value];
  119852. }
  119853. sparksetting[attr] = value;
  119854. }
  119855. };
  119856. var barSpacing = arguments[1];
  119857. var barColor = arguments[2];
  119858. var negBarColor = arguments[3];
  119859. var chartRangeMax = arguments[4];
  119860. sparksetting["type"] = "bar";
  119861. if (barSpacing == null) {
  119862. barSpacing = "1";
  119863. }
  119864. sparksetting["barSpacing"] = barSpacing;
  119865. if (barColor == null) {
  119866. barColor = "#fc5c5c";
  119867. }
  119868. sparkColorSetting("barColor", barColor);
  119869. if (negBarColor == null) {
  119870. negBarColor = "#97b552";
  119871. }
  119872. sparkColorSetting("negBarColor", negBarColor);
  119873. if (chartRangeMax == null || chartRangeMax === false || typeof chartRangeMax != "number") {
  119874. sparksetting["chartRangeMax"] = void 0;
  119875. } else {
  119876. sparksetting["chartRangeMax"] = chartRangeMax;
  119877. }
  119878. var colorLists = formula_default.sparklinesColorMap(arguments);
  119879. if (!!colorLists) {
  119880. sparksetting["colorMap"] = colorLists;
  119881. }
  119882. var temp1 = sparkline_default.init(dataformat, sparksetting);
  119883. return temp1;
  119884. } catch (e) {
  119885. var err = e;
  119886. err = formula_default.errorInfo(err);
  119887. return [formula_default.error.v, err];
  119888. }
  119889. },
  119890. "STACKBARSPLINES": function() {
  119891. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  119892. return formula_default.error.na;
  119893. }
  119894. for (var i2 = 0; i2 < arguments.length; i2++) {
  119895. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  119896. if (!p[0]) {
  119897. return formula_default.error.v;
  119898. }
  119899. }
  119900. try {
  119901. var cell_r = window.luckysheetCurrentRow;
  119902. var cell_c = window.luckysheetCurrentColumn;
  119903. var cell_fp = window.luckysheetCurrentFunction;
  119904. var colorList = formula_default.colorList;
  119905. var rangeValue = arguments[0];
  119906. var dataformat = [];
  119907. var data = [];
  119908. if (rangeValue != null && rangeValue.data != null) {
  119909. data = rangeValue.data;
  119910. }
  119911. if (getObjType(data) == "array") {
  119912. data = formula_default.getPureValueByData(data);
  119913. } else if (getObjType(data) == "object") {
  119914. data = data.v;
  119915. return [data];
  119916. } else {
  119917. if (/\{.*?\}/.test(data)) {
  119918. data = data.replace(/\{/g, "[").replace(/\}/g, "]");
  119919. }
  119920. data = new Function("return " + data)();
  119921. }
  119922. var stackconfig = arguments[1];
  119923. var offsetY = data.length;
  119924. if (stackconfig == null || !!stackconfig) {
  119925. for (var c2 = 0; c2 < data[0].length; c2++) {
  119926. var colstr = "";
  119927. for (var r2 = 0; r2 < data.length; r2++) {
  119928. colstr += data[r2][c2] + ":";
  119929. }
  119930. colstr = colstr.substr(0, colstr.length - 1);
  119931. dataformat.push(colstr);
  119932. }
  119933. } else {
  119934. for (var r2 = 0; r2 < data.length; r2++) {
  119935. var rowstr = "";
  119936. for (var c2 = 0; c2 < data[0].length; c2++) {
  119937. rowstr += data[r2][c2] + ":";
  119938. }
  119939. rowstr = rowstr.substr(0, rowstr.length - 1);
  119940. dataformat.push(rowstr);
  119941. }
  119942. var offsetY = data[0].length;
  119943. }
  119944. let luckysheetfile = getluckysheetfile();
  119945. let index2 = getSheetIndex(store_default.calculateSheetIndex);
  119946. let sheetdata = luckysheetfile[index2].data;
  119947. var cellSize = menuButton_default.getCellRealSize(sheetdata, cell_r, cell_c);
  119948. var width = cellSize[0];
  119949. var height = cellSize[1];
  119950. var sparksetting = {};
  119951. sparksetting.height = height;
  119952. sparksetting.width = width;
  119953. var sparkColorSetting = function(attr, value) {
  119954. if (!!value) {
  119955. if (typeof value == "number") {
  119956. if (value > 19) {
  119957. value = value % 20;
  119958. }
  119959. value = colorList[value];
  119960. }
  119961. sparksetting[attr] = value;
  119962. }
  119963. };
  119964. var barSpacing = arguments[2];
  119965. var chartRangeMax = arguments[3];
  119966. sparksetting["type"] = "bar";
  119967. if (barSpacing == null) {
  119968. barSpacing = "1";
  119969. }
  119970. sparksetting["barSpacing"] = barSpacing;
  119971. if (chartRangeMax == null || chartRangeMax === false || typeof chartRangeMax != "number") {
  119972. sparksetting["chartRangeMax"] = void 0;
  119973. } else {
  119974. sparksetting["chartRangeMax"] = chartRangeMax;
  119975. }
  119976. var colorLists = formula_default.sparklinesColorMap(arguments, 4);
  119977. if (!!colorLists) {
  119978. sparksetting["colorMap"] = colorLists;
  119979. }
  119980. var temp1 = sparkline_default.init(dataformat, sparksetting);
  119981. return temp1;
  119982. } catch (e) {
  119983. var err = e;
  119984. err = formula_default.errorInfo(err);
  119985. return [formula_default.error.v, err];
  119986. }
  119987. },
  119988. "DISCRETESPLINES": function() {
  119989. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  119990. return formula_default.error.na;
  119991. }
  119992. for (var i2 = 0; i2 < arguments.length; i2++) {
  119993. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  119994. if (!p[0]) {
  119995. return formula_default.error.v;
  119996. }
  119997. }
  119998. try {
  119999. var cell_r = window.luckysheetCurrentRow;
  120000. var cell_c = window.luckysheetCurrentColumn;
  120001. var cell_fp = window.luckysheetCurrentFunction;
  120002. var colorList = formula_default.colorList;
  120003. var rangeValue = arguments[0];
  120004. var dataformat = formula_default.readCellDataToOneArray(rangeValue);
  120005. let luckysheetfile = getluckysheetfile();
  120006. let index2 = getSheetIndex(store_default.calculateSheetIndex);
  120007. let sheetdata = luckysheetfile[index2].data;
  120008. var cellSize = menuButton_default.getCellRealSize(sheetdata, cell_r, cell_c);
  120009. var width = cellSize[0];
  120010. var height = cellSize[1];
  120011. var sparksetting = {};
  120012. sparksetting.height = height;
  120013. sparksetting.width = width;
  120014. var sparkColorSetting = function(attr, value) {
  120015. if (!!value) {
  120016. if (typeof value == "number") {
  120017. if (value > 19) {
  120018. value = value % 20;
  120019. }
  120020. value = colorList[value];
  120021. }
  120022. sparksetting[attr] = value;
  120023. }
  120024. };
  120025. var thresholdValue = arguments[1];
  120026. var barColor = arguments[2];
  120027. var negBarColor = arguments[3];
  120028. sparksetting["type"] = "discrete";
  120029. if (thresholdValue == null) {
  120030. thresholdValue = 0;
  120031. }
  120032. sparksetting["thresholdValue"] = thresholdValue;
  120033. if (barColor == null) {
  120034. barColor = "#2ec7c9";
  120035. }
  120036. sparkColorSetting("lineColor", barColor);
  120037. if (negBarColor == null) {
  120038. negBarColor = "#fc5c5c";
  120039. }
  120040. sparkColorSetting("thresholdColor", negBarColor);
  120041. var temp1 = sparkline_default.init(dataformat, sparksetting);
  120042. return temp1;
  120043. } catch (e) {
  120044. var err = e;
  120045. err = formula_default.errorInfo(err);
  120046. return [formula_default.error.v, err];
  120047. }
  120048. },
  120049. "TRISTATESPLINES": function() {
  120050. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  120051. return formula_default.error.na;
  120052. }
  120053. for (var i2 = 0; i2 < arguments.length; i2++) {
  120054. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  120055. if (!p[0]) {
  120056. return formula_default.error.v;
  120057. }
  120058. }
  120059. try {
  120060. var cell_r = window.luckysheetCurrentRow;
  120061. var cell_c = window.luckysheetCurrentColumn;
  120062. var cell_fp = window.luckysheetCurrentFunction;
  120063. var colorList = formula_default.colorList;
  120064. var rangeValue = arguments[0];
  120065. var dataformat = formula_default.readCellDataToOneArray(rangeValue);
  120066. let luckysheetfile = getluckysheetfile();
  120067. let index2 = getSheetIndex(store_default.calculateSheetIndex);
  120068. let sheetdata = luckysheetfile[index2].data;
  120069. var cellSize = menuButton_default.getCellRealSize(sheetdata, cell_r, cell_c);
  120070. var width = cellSize[0];
  120071. var height = cellSize[1];
  120072. var sparksetting = {};
  120073. sparksetting.height = height;
  120074. sparksetting.width = width;
  120075. var sparkColorSetting = function(attr, value) {
  120076. if (!!value) {
  120077. if (typeof value == "number") {
  120078. if (value > 19) {
  120079. value = value % 20;
  120080. }
  120081. value = colorList[value];
  120082. }
  120083. sparksetting[attr] = value;
  120084. }
  120085. };
  120086. var barSpacing = arguments[1];
  120087. var barColor = arguments[2];
  120088. var negBarColor = arguments[3];
  120089. var zeroBarColor = arguments[4];
  120090. sparksetting["type"] = "tristate";
  120091. if (barSpacing == null) {
  120092. barSpacing = "1";
  120093. }
  120094. sparksetting["barSpacing"] = barSpacing;
  120095. if (barColor == null) {
  120096. barColor = "#fc5c5c";
  120097. }
  120098. sparkColorSetting("barColor", barColor);
  120099. if (negBarColor == null) {
  120100. negBarColor = "#97b552";
  120101. }
  120102. sparkColorSetting("negBarColor", negBarColor);
  120103. if (zeroBarColor == null) {
  120104. zeroBarColor = "#999";
  120105. }
  120106. sparkColorSetting("zeroBarColor", zeroBarColor);
  120107. var colorLists = formula_default.sparklinesColorMap(arguments);
  120108. if (!!colorLists) {
  120109. sparksetting["colorMap"] = colorLists;
  120110. }
  120111. var temp1 = sparkline_default.init(dataformat, sparksetting);
  120112. return temp1;
  120113. } catch (e) {
  120114. var err = e;
  120115. err = formula_default.errorInfo(err);
  120116. return [formula_default.error.v, err];
  120117. }
  120118. },
  120119. "PIESPLINES": function() {
  120120. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  120121. return formula_default.error.na;
  120122. }
  120123. for (var i2 = 0; i2 < arguments.length; i2++) {
  120124. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  120125. if (!p[0]) {
  120126. return formula_default.error.v;
  120127. }
  120128. }
  120129. try {
  120130. var cell_r = window.luckysheetCurrentRow;
  120131. var cell_c = window.luckysheetCurrentColumn;
  120132. var cell_fp = window.luckysheetCurrentFunction;
  120133. var colorList = formula_default.colorList;
  120134. var rangeValue = arguments[0];
  120135. var dataformat = formula_default.readCellDataToOneArray(rangeValue);
  120136. let luckysheetfile = getluckysheetfile();
  120137. let index2 = getSheetIndex(store_default.calculateSheetIndex);
  120138. let sheetdata = luckysheetfile[index2].data;
  120139. var cellSize = menuButton_default.getCellRealSize(sheetdata, cell_r, cell_c);
  120140. var width = cellSize[0];
  120141. var height = cellSize[1];
  120142. var sparksetting = {};
  120143. sparksetting.height = height;
  120144. sparksetting.width = width;
  120145. var sparkColorSetting = function(attr, value) {
  120146. if (!!value) {
  120147. if (typeof value == "number") {
  120148. if (value > 19) {
  120149. value = value % 20;
  120150. }
  120151. value = colorList[value];
  120152. }
  120153. sparksetting[attr] = value;
  120154. }
  120155. };
  120156. var offset = arguments[1];
  120157. var borderWidth = arguments[2];
  120158. var borderColor = arguments[3];
  120159. sparksetting["type"] = "pie";
  120160. if (offset == null) {
  120161. offset = 0;
  120162. }
  120163. sparksetting["offset"] = offset;
  120164. if (borderWidth == null) {
  120165. borderWidth = 0;
  120166. }
  120167. sparkColorSetting("borderWidth", borderWidth);
  120168. if (borderColor == null) {
  120169. borderColor = "#97b552";
  120170. }
  120171. sparkColorSetting("borderColor", borderColor);
  120172. var colorLists = formula_default.sparklinesColorMap(arguments, 4);
  120173. if (!!colorLists) {
  120174. sparksetting["colorMap"] = colorLists;
  120175. }
  120176. var temp1 = sparkline_default.init(dataformat, sparksetting);
  120177. return temp1;
  120178. } catch (e) {
  120179. var err = e;
  120180. err = formula_default.errorInfo(err);
  120181. return [formula_default.error.v, err];
  120182. }
  120183. },
  120184. "BOXSPLINES": function() {
  120185. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  120186. return formula_default.error.na;
  120187. }
  120188. for (var i2 = 0; i2 < arguments.length; i2++) {
  120189. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  120190. if (!p[0]) {
  120191. return formula_default.error.v;
  120192. }
  120193. }
  120194. try {
  120195. var cell_r = window.luckysheetCurrentRow;
  120196. var cell_c = window.luckysheetCurrentColumn;
  120197. var cell_fp = window.luckysheetCurrentFunction;
  120198. var colorList = formula_default.colorList;
  120199. var rangeValue = arguments[0];
  120200. var dataformat = formula_default.readCellDataToOneArray(rangeValue);
  120201. let luckysheetfile = getluckysheetfile();
  120202. let index2 = getSheetIndex(store_default.calculateSheetIndex);
  120203. let sheetdata = luckysheetfile[index2].data;
  120204. var cellSize = menuButton_default.getCellRealSize(sheetdata, cell_r, cell_c);
  120205. var width = cellSize[0];
  120206. var height = cellSize[1];
  120207. var sparksetting = {};
  120208. sparksetting.height = height;
  120209. sparksetting.width = width;
  120210. var sparkColorSetting = function(attr, value) {
  120211. if (!!value) {
  120212. if (typeof value == "number") {
  120213. if (value > 19) {
  120214. value = value % 20;
  120215. }
  120216. value = colorList[value];
  120217. }
  120218. sparksetting[attr] = value;
  120219. }
  120220. };
  120221. var outlierIQR = arguments[1];
  120222. var target = arguments[2];
  120223. var spotRadius = arguments[3];
  120224. sparksetting["type"] = "box";
  120225. if (outlierIQR == null) {
  120226. outlierIQR = 1.5;
  120227. }
  120228. sparksetting["outlierIQR"] = outlierIQR;
  120229. if (target == null) {
  120230. target = 0;
  120231. } else {
  120232. sparkColorSetting("target", target);
  120233. }
  120234. if (spotRadius == null) {
  120235. spotRadius = 1.5;
  120236. }
  120237. sparkColorSetting("spotRadius", spotRadius);
  120238. var temp1 = sparkline_default.init(dataformat, sparksetting);
  120239. return temp1;
  120240. } catch (e) {
  120241. var err = e;
  120242. err = formula_default.errorInfo(err);
  120243. return [formula_default.error.v, err];
  120244. }
  120245. },
  120246. "BULLETSPLINES": function() {
  120247. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  120248. return formula_default.error.na;
  120249. }
  120250. for (var i2 = 0; i2 < arguments.length; i2++) {
  120251. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  120252. if (!p[0]) {
  120253. return formula_default.error.v;
  120254. }
  120255. }
  120256. try {
  120257. var cell_r = window.luckysheetCurrentRow;
  120258. var cell_c = window.luckysheetCurrentColumn;
  120259. var cell_fp = window.luckysheetCurrentFunction;
  120260. var colorList = formula_default.colorList;
  120261. let luckysheetfile = getluckysheetfile();
  120262. let index2 = getSheetIndex(store_default.calculateSheetIndex);
  120263. let sheetdata = luckysheetfile[index2].data;
  120264. var cellSize = menuButton_default.getCellRealSize(sheetdata, cell_r, cell_c);
  120265. var width = cellSize[0];
  120266. var height = cellSize[1];
  120267. var sparksetting = {};
  120268. sparksetting.height = height;
  120269. sparksetting.width = width;
  120270. var sparkColorSetting = function(attr, value) {
  120271. if (!!value) {
  120272. if (typeof value == "number") {
  120273. if (value > 19) {
  120274. value = value % 20;
  120275. }
  120276. value = colorList[value];
  120277. }
  120278. sparksetting[attr] = value;
  120279. }
  120280. };
  120281. var dataformat = [];
  120282. luckysheet_getValue(arguments);
  120283. var data1 = formula_default.getValueByFuncData(arguments[0]);
  120284. var data2 = formula_default.getValueByFuncData(arguments[1]);
  120285. dataformat.push(data1);
  120286. dataformat.push(data2);
  120287. for (var i2 = 2; i2 < arguments.length; i2++) {
  120288. dataformat.push(formula_default.getValueByFuncData(arguments[i2]));
  120289. }
  120290. sparksetting["type"] = "bullet";
  120291. var temp1 = sparkline_default.init(dataformat, sparksetting);
  120292. return temp1;
  120293. } catch (e) {
  120294. var err = e;
  120295. err = formula_default.errorInfo(err);
  120296. return [formula_default.error.v, err];
  120297. }
  120298. },
  120299. "SORT": function() {
  120300. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  120301. return formula_default.error.na;
  120302. }
  120303. for (var i2 = 0; i2 < arguments.length; i2++) {
  120304. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  120305. if (!p[0]) {
  120306. return formula_default.error.v;
  120307. }
  120308. }
  120309. try {
  120310. var data_array = arguments[0];
  120311. var array = [], rowlen = 1, collen = 1;
  120312. if (getObjType(data_array) == "array") {
  120313. if (getObjType(data_array[0]) == "array") {
  120314. if (!func_methods_default.isDyadicArr(data_array)) {
  120315. return formula_default.error.v;
  120316. }
  120317. for (var i2 = 0; i2 < data_array.length; i2++) {
  120318. var rowArr = [];
  120319. for (var j = 0; j < data_array[i2].length; j++) {
  120320. var number = data_array[i2][j];
  120321. rowArr.push(number);
  120322. }
  120323. array.push(rowArr);
  120324. }
  120325. rowlen = array.length;
  120326. collen = array[0].length;
  120327. } else {
  120328. for (var i2 = 0; i2 < data_array.length; i2++) {
  120329. var number = data_array[i2];
  120330. array.push(number);
  120331. }
  120332. rowlen = array.length;
  120333. }
  120334. } else if (getObjType(data_array) == "object" && data_array.startCell != null) {
  120335. if (data_array.data != null) {
  120336. if (getObjType(data_array.data) == "array") {
  120337. for (var i2 = 0; i2 < data_array.data.length; i2++) {
  120338. var rowArr = [];
  120339. for (var j = 0; j < data_array.data[i2].length; j++) {
  120340. if (data_array.data[i2][j] != null) {
  120341. var number = data_array.data[i2][j].v;
  120342. if (isRealNull(number)) {
  120343. number = 0;
  120344. }
  120345. rowArr.push(number);
  120346. } else {
  120347. rowArr.push(0);
  120348. }
  120349. }
  120350. array.push(rowArr);
  120351. }
  120352. rowlen = array.length;
  120353. collen = array[0].length;
  120354. } else {
  120355. var number = data_array.data.v;
  120356. if (isRealNull(number)) {
  120357. number = 0;
  120358. }
  120359. array.push(number);
  120360. }
  120361. } else {
  120362. array.push(0);
  120363. }
  120364. } else {
  120365. var number = data_array;
  120366. array.push(number);
  120367. }
  120368. var sort_index = 1;
  120369. if (arguments.length >= 2) {
  120370. sort_index = func_methods_default.getFirstValue(arguments[1]);
  120371. if (valueIsError(sort_index)) {
  120372. return sort_index;
  120373. }
  120374. if (!isRealNum(sort_index)) {
  120375. return formula_default.error.v;
  120376. }
  120377. sort_index = parseInt(sort_index);
  120378. }
  120379. var sort_order = 1;
  120380. if (arguments.length >= 3) {
  120381. sort_order = func_methods_default.getFirstValue(arguments[2]);
  120382. if (valueIsError(sort_order)) {
  120383. return sort_order;
  120384. }
  120385. if (!isRealNum(sort_order)) {
  120386. return formula_default.error.v;
  120387. }
  120388. sort_order = Math.floor(parseFloat(sort_order));
  120389. }
  120390. var by_col = false;
  120391. if (arguments.length == 4) {
  120392. by_col = func_methods_default.getCellBoolen(arguments[3]);
  120393. if (valueIsError(by_col)) {
  120394. return by_col;
  120395. }
  120396. }
  120397. if (by_col) {
  120398. if (sort_index < 1 || sort_index > rowlen) {
  120399. return formula_default.error.v;
  120400. }
  120401. } else {
  120402. if (sort_index < 1 || sort_index > collen) {
  120403. return formula_default.error.v;
  120404. }
  120405. }
  120406. if (sort_order != 1 && sort_order != -1) {
  120407. return formula_default.error.v;
  120408. }
  120409. var asc = function(x, y) {
  120410. if (getObjType(x) == "array") {
  120411. x = x[sort_index - 1];
  120412. }
  120413. if (getObjType(y) == "array") {
  120414. y = y[sort_index - 1];
  120415. }
  120416. if (!isNaN(x) && !isNaN(y)) {
  120417. return x - y;
  120418. } else if (!isNaN(x)) {
  120419. return -1;
  120420. } else if (!isNaN(y)) {
  120421. return 1;
  120422. } else {
  120423. if (x > y) {
  120424. return 1;
  120425. } else if (x < y) {
  120426. return -1;
  120427. }
  120428. }
  120429. };
  120430. var desc = function(x, y) {
  120431. if (getObjType(x) == "array") {
  120432. x = x[sort_index - 1];
  120433. }
  120434. if (getObjType(y) == "array") {
  120435. y = y[sort_index - 1];
  120436. }
  120437. if (!isNaN(x) && !isNaN(y)) {
  120438. return y - x;
  120439. } else if (!isNaN(x)) {
  120440. return 1;
  120441. } else if (!isNaN(y)) {
  120442. return -1;
  120443. } else {
  120444. if (x > y) {
  120445. return -1;
  120446. } else if (x < y) {
  120447. return 1;
  120448. }
  120449. }
  120450. };
  120451. if (by_col) {
  120452. array = array[0].map(function(col, a) {
  120453. return array.map(function(row) {
  120454. return row[a];
  120455. });
  120456. });
  120457. if (sort_order == 1) {
  120458. array.sort(asc);
  120459. }
  120460. if (sort_order == -1) {
  120461. array.sort(desc);
  120462. }
  120463. array = array[0].map(function(col, b) {
  120464. return array.map(function(row) {
  120465. return row[b];
  120466. });
  120467. });
  120468. } else {
  120469. if (sort_order == 1) {
  120470. array.sort(asc);
  120471. }
  120472. if (sort_order == -1) {
  120473. array.sort(desc);
  120474. }
  120475. }
  120476. return array;
  120477. } catch (e) {
  120478. var err = e;
  120479. err = formula_default.errorInfo(err);
  120480. return [formula_default.error.v, err];
  120481. }
  120482. },
  120483. "FILTER": function() {
  120484. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  120485. return formula_default.error.na;
  120486. }
  120487. for (var i2 = 0; i2 < arguments.length; i2++) {
  120488. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  120489. if (!p[0]) {
  120490. return formula_default.error.v;
  120491. }
  120492. }
  120493. try {
  120494. var data_array = arguments[0];
  120495. var array = [];
  120496. if (getObjType(data_array) == "array") {
  120497. if (getObjType(data_array[0]) == "array" && !func_methods_default.isDyadicArr(data_array)) {
  120498. return formula_default.error.v;
  120499. }
  120500. array = func_methods_default.getDataDyadicArr(data_array);
  120501. } else if (getObjType(data_array) == "object" && data_array.startCell != null) {
  120502. array = func_methods_default.getCellDataDyadicArr(data_array, "number");
  120503. } else {
  120504. var rowArr = [];
  120505. rowArr.push(parseFloat(data_array));
  120506. array.push(rowArr);
  120507. }
  120508. var rowlen = array.length, collen = array[0].length;
  120509. var data_include = arguments[1];
  120510. var include = [];
  120511. var type = "row";
  120512. if (getObjType(data_include) == "array") {
  120513. if (getObjType(data_include[0]) == "array") {
  120514. if (!func_methods_default.isDyadicArr(data_include)) {
  120515. return formula_default.error.v;
  120516. }
  120517. if (data_include.length > 1 && data_include[0].length > 1) {
  120518. return formula_default.error.v;
  120519. }
  120520. if (data_include.length > 1) {
  120521. if (data_include.length != array.length) {
  120522. return formula_default.error.v;
  120523. }
  120524. type = "row";
  120525. for (var i2 = 0; i2 < data_include.length; i2++) {
  120526. var txt = data_include[i2][0];
  120527. if (getObjType(txt) == "boolean") {
  120528. } else if (getObjType(txt) == "string" && (txt.toLowerCase() == "true" || txt.toLowerCase() == "false")) {
  120529. if (txt.toLowerCase() == "true") {
  120530. txt = true;
  120531. } else if (txt.toLowerCase() == "false") {
  120532. txt = false;
  120533. }
  120534. } else if (isRealNum(txt)) {
  120535. txt = parseFloat(txt);
  120536. txt = txt == 0 ? false : true;
  120537. } else {
  120538. return formula_default.error.v;
  120539. }
  120540. include.push(txt);
  120541. }
  120542. }
  120543. if (data_include[0].length > 1) {
  120544. if (data_include[0].length != array[0].length) {
  120545. return formula_default.error.v;
  120546. }
  120547. type = "col";
  120548. for (var i2 = 0; i2 < data_include[0].length; i2++) {
  120549. var txt = data_include[0][i2];
  120550. if (getObjType(txt) == "boolean") {
  120551. } else if (getObjType(txt) == "string" && (txt.toLowerCase() == "true" || txt.toLowerCase() == "false")) {
  120552. if (txt.toLowerCase() == "true") {
  120553. txt = true;
  120554. } else if (txt.toLowerCase() == "false") {
  120555. txt = false;
  120556. }
  120557. } else if (isRealNum(txt)) {
  120558. txt = parseFloat(txt);
  120559. txt = txt == 0 ? false : true;
  120560. } else {
  120561. return formula_default.error.v;
  120562. }
  120563. include.push(txt);
  120564. }
  120565. }
  120566. } else {
  120567. if (data_include.length != array[0].length) {
  120568. return formula_default.error.v;
  120569. }
  120570. type = "col";
  120571. for (var i2 = 0; i2 < data_include.length; i2++) {
  120572. var txt = data_include[i2];
  120573. if (getObjType(txt) == "boolean") {
  120574. } else if (getObjType(txt) == "string" && (txt.toLowerCase() == "true" || txt.toLowerCase() == "false")) {
  120575. if (txt.toLowerCase() == "true") {
  120576. txt = true;
  120577. } else if (txt.toLowerCase() == "false") {
  120578. txt = false;
  120579. }
  120580. } else if (isRealNum(txt)) {
  120581. txt = parseFloat(txt);
  120582. txt = txt == 0 ? false : true;
  120583. } else {
  120584. return formula_default.error.v;
  120585. }
  120586. include.push(txt);
  120587. }
  120588. }
  120589. } else if (getObjType(data_include) == "object" && data_include.data != null && getObjType(data_include.data) == "array") {
  120590. if (data_include.data.length > 1 && data_include.data[0].length > 1) {
  120591. return formula_default.error.v;
  120592. }
  120593. if (data_include.data.length > 1) {
  120594. if (data_include.data.length != array.length) {
  120595. return formula_default.error.v;
  120596. }
  120597. type = "row";
  120598. for (var i2 = 0; i2 < data_include.data.length; i2++) {
  120599. var txt = data_include.data[i2][0].v;
  120600. if (isRealNull(txt)) {
  120601. txt = 0;
  120602. }
  120603. if (getObjType(txt) == "boolean") {
  120604. } else if (getObjType(txt) == "string" && (txt.toLowerCase() == "true" || txt.toLowerCase() == "false")) {
  120605. if (txt.toLowerCase() == "true") {
  120606. txt = true;
  120607. } else if (txt.toLowerCase() == "false") {
  120608. txt = false;
  120609. }
  120610. } else if (isRealNum(txt)) {
  120611. txt = parseFloat(txt);
  120612. txt = txt == 0 ? false : true;
  120613. } else {
  120614. return formula_default.error.v;
  120615. }
  120616. include.push(txt);
  120617. }
  120618. }
  120619. if (data_include.data[0].length > 1) {
  120620. if (data_include.data[0].length != array[0].length) {
  120621. return formula_default.error.v;
  120622. }
  120623. type = "col";
  120624. for (var i2 = 0; i2 < data_include.data[0].length; i2++) {
  120625. var txt = data_include.data[0][i2].v;
  120626. if (isRealNull(txt)) {
  120627. txt = 0;
  120628. }
  120629. if (getObjType(txt) == "boolean") {
  120630. } else if (getObjType(txt) == "string" && (txt.toLowerCase() == "true" || txt.toLowerCase() == "false")) {
  120631. if (txt.toLowerCase() == "true") {
  120632. txt = true;
  120633. } else if (txt.toLowerCase() == "false") {
  120634. txt = false;
  120635. }
  120636. } else if (isRealNum(txt)) {
  120637. txt = parseFloat(txt);
  120638. txt = txt == 0 ? false : true;
  120639. } else {
  120640. return formula_default.error.v;
  120641. }
  120642. include.push(txt);
  120643. }
  120644. }
  120645. } else {
  120646. return formula_default.error.v;
  120647. }
  120648. var if_empty = "";
  120649. if (arguments.length == 3) {
  120650. if_empty = func_methods_default.getFirstValue(arguments[2], "text");
  120651. if (valueIsError(if_empty)) {
  120652. return if_empty;
  120653. }
  120654. }
  120655. var result = [];
  120656. if (type == "row") {
  120657. for (var i2 = 0; i2 < array.length; i2++) {
  120658. if (include[i2]) {
  120659. result.push(array[i2]);
  120660. }
  120661. }
  120662. } else {
  120663. for (var i2 = 0; i2 < array.length; i2++) {
  120664. var rowArr = [];
  120665. for (var j = 0; j < array[0].length; j++) {
  120666. if (include[j]) {
  120667. rowArr.push(array[i2][j]);
  120668. }
  120669. }
  120670. if (rowArr.length > 0) {
  120671. result.push(rowArr);
  120672. }
  120673. }
  120674. }
  120675. if (result.length == 0) {
  120676. return if_empty;
  120677. }
  120678. return result;
  120679. } catch (e) {
  120680. var err = e;
  120681. err = formula_default.errorInfo(err);
  120682. return [formula_default.error.v, err];
  120683. }
  120684. },
  120685. "UNIQUE": function() {
  120686. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  120687. return formula_default.error.na;
  120688. }
  120689. for (var i2 = 0; i2 < arguments.length; i2++) {
  120690. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  120691. if (!p[0]) {
  120692. return formula_default.error.v;
  120693. }
  120694. }
  120695. try {
  120696. var data_array = arguments[0];
  120697. var array = [];
  120698. if (getObjType(data_array) == "array") {
  120699. if (getObjType(data_array[0]) == "array" && !func_methods_default.isDyadicArr(data_array)) {
  120700. return formula_default.error.v;
  120701. }
  120702. array = func_methods_default.getDataDyadicArr(data_array);
  120703. } else if (getObjType(data_array) == "object" && data_array.startCell != null) {
  120704. array = func_methods_default.getCellDataDyadicArr(data_array, "number");
  120705. } else {
  120706. var rowArr = [];
  120707. rowArr.push(parseFloat(data_array));
  120708. array.push(rowArr);
  120709. }
  120710. var by_col = false;
  120711. if (arguments.length >= 2) {
  120712. by_col = func_methods_default.getCellBoolen(arguments[1]);
  120713. if (valueIsError(by_col)) {
  120714. return by_col;
  120715. }
  120716. }
  120717. var occurs_once = false;
  120718. if (arguments.length == 3) {
  120719. occurs_once = func_methods_default.getCellBoolen(arguments[2]);
  120720. if (valueIsError(occurs_once)) {
  120721. return occurs_once;
  120722. }
  120723. }
  120724. if (by_col) {
  120725. array = array[0].map(function(col, a) {
  120726. return array.map(function(row) {
  120727. return row[a];
  120728. });
  120729. });
  120730. var strObj = {}, strArr = [];
  120731. var allUnique = [];
  120732. for (var i2 = 0; i2 < array.length; i2++) {
  120733. var str = "";
  120734. for (var j = 0; j < array[i2].length; j++) {
  120735. str += array[i2][j].toString() + "|||";
  120736. }
  120737. strArr.push(str);
  120738. if (!(str in strObj)) {
  120739. strObj[str] = 0;
  120740. allUnique.push(array[i2]);
  120741. }
  120742. }
  120743. if (occurs_once) {
  120744. var oneUnique = [];
  120745. for (var i2 = 0; i2 < strArr.length; i2++) {
  120746. if (strArr.indexOf(strArr[i2]) == strArr.lastIndexOf(strArr[i2])) {
  120747. oneUnique.push(array[i2]);
  120748. }
  120749. }
  120750. oneUnique = oneUnique[0].map(function(col, a) {
  120751. return oneUnique.map(function(row) {
  120752. return row[a];
  120753. });
  120754. });
  120755. return oneUnique;
  120756. } else {
  120757. allUnique = allUnique[0].map(function(col, a) {
  120758. return allUnique.map(function(row) {
  120759. return row[a];
  120760. });
  120761. });
  120762. return allUnique;
  120763. }
  120764. } else {
  120765. var strObj = {}, strArr = [];
  120766. var allUnique = [];
  120767. for (var i2 = 0; i2 < array.length; i2++) {
  120768. var str = "";
  120769. for (var j = 0; j < array[i2].length; j++) {
  120770. str += array[i2][j].toString() + "|||";
  120771. }
  120772. strArr.push(str);
  120773. if (!(str in strObj)) {
  120774. strObj[str] = 0;
  120775. allUnique.push(array[i2]);
  120776. }
  120777. }
  120778. if (occurs_once) {
  120779. var oneUnique = [];
  120780. for (var i2 = 0; i2 < strArr.length; i2++) {
  120781. if (strArr.indexOf(strArr[i2]) == strArr.lastIndexOf(strArr[i2])) {
  120782. oneUnique.push(array[i2]);
  120783. }
  120784. }
  120785. return oneUnique;
  120786. } else {
  120787. return allUnique;
  120788. }
  120789. }
  120790. } catch (e) {
  120791. var err = e;
  120792. err = formula_default.errorInfo(err);
  120793. return [formula_default.error.v, err];
  120794. }
  120795. },
  120796. "RANDARRAY": function() {
  120797. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  120798. return formula_default.error.na;
  120799. }
  120800. for (var i2 = 0; i2 < arguments.length; i2++) {
  120801. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  120802. if (!p[0]) {
  120803. return formula_default.error.v;
  120804. }
  120805. }
  120806. try {
  120807. var rows = 1;
  120808. if (arguments.length >= 1) {
  120809. rows = func_methods_default.getFirstValue(arguments[0]);
  120810. if (valueIsError(rows)) {
  120811. return rows;
  120812. }
  120813. if (!isRealNum(rows)) {
  120814. return formula_default.error.v;
  120815. }
  120816. rows = parseInt(rows);
  120817. }
  120818. var cols = 1;
  120819. if (arguments.length == 2) {
  120820. cols = func_methods_default.getFirstValue(arguments[1]);
  120821. if (valueIsError(cols)) {
  120822. return cols;
  120823. }
  120824. if (!isRealNum(cols)) {
  120825. return formula_default.error.v;
  120826. }
  120827. cols = parseInt(cols);
  120828. }
  120829. if (rows <= 0 || cols <= 0) {
  120830. return formula_default.error.v;
  120831. }
  120832. var result = [];
  120833. for (var i2 = 0; i2 < rows; i2++) {
  120834. var result_row = [];
  120835. for (var j = 0; j < cols; j++) {
  120836. result_row.push(Math.random().toFixed(9));
  120837. }
  120838. result.push(result_row);
  120839. }
  120840. return result;
  120841. } catch (e) {
  120842. var err = e;
  120843. err = formula_default.errorInfo(err);
  120844. return [formula_default.error.v, err];
  120845. }
  120846. },
  120847. "SEQUENCE": function() {
  120848. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  120849. return formula_default.error.na;
  120850. }
  120851. for (var i2 = 0; i2 < arguments.length; i2++) {
  120852. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  120853. if (!p[0]) {
  120854. return formula_default.error.v;
  120855. }
  120856. }
  120857. try {
  120858. var rows = func_methods_default.getFirstValue(arguments[0]);
  120859. if (valueIsError(rows)) {
  120860. return rows;
  120861. }
  120862. if (!isRealNum(rows)) {
  120863. return formula_default.error.v;
  120864. }
  120865. rows = parseInt(rows);
  120866. var cols = 1;
  120867. if (arguments.length >= 2) {
  120868. cols = func_methods_default.getFirstValue(arguments[1]);
  120869. if (valueIsError(cols)) {
  120870. return cols;
  120871. }
  120872. if (!isRealNum(cols)) {
  120873. return formula_default.error.v;
  120874. }
  120875. cols = parseInt(cols);
  120876. }
  120877. var start = 1;
  120878. if (arguments.length >= 3) {
  120879. start = func_methods_default.getFirstValue(arguments[2]);
  120880. if (valueIsError(start)) {
  120881. return start;
  120882. }
  120883. if (!isRealNum(start)) {
  120884. return formula_default.error.v;
  120885. }
  120886. start = parseFloat(start);
  120887. }
  120888. var step = 1;
  120889. if (arguments.length == 4) {
  120890. step = func_methods_default.getFirstValue(arguments[3]);
  120891. if (valueIsError(step)) {
  120892. return step;
  120893. }
  120894. if (!isRealNum(step)) {
  120895. return formula_default.error.v;
  120896. }
  120897. step = parseFloat(step);
  120898. }
  120899. if (rows <= 0 || cols <= 0) {
  120900. return formula_default.error.v;
  120901. }
  120902. var result = [];
  120903. for (var i2 = 0; i2 < rows; i2++) {
  120904. var result_row = [];
  120905. for (var j = 0; j < cols; j++) {
  120906. var number = start + step * (j + cols * i2);
  120907. result_row.push(number);
  120908. }
  120909. result.push(result_row);
  120910. }
  120911. return result;
  120912. } catch (e) {
  120913. var err = e;
  120914. err = formula_default.errorInfo(err);
  120915. return [formula_default.error.v, err];
  120916. }
  120917. },
  120918. "EVALUATE": function() {
  120919. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  120920. return formula_default.error.na;
  120921. }
  120922. for (var i2 = 0; i2 < arguments.length; i2++) {
  120923. var p = formula_default.errorParamCheck(this.p, arguments[i2], i2);
  120924. if (!p[0]) {
  120925. return formula_default.error.v;
  120926. }
  120927. }
  120928. try {
  120929. var cell_r = window.luckysheetCurrentRow;
  120930. var cell_c = window.luckysheetCurrentColumn;
  120931. var sheetindex_now = window.luckysheetCurrentIndex;
  120932. var strtext = func_methods_default.getFirstValue(arguments[0]).toString();
  120933. if (valueIsError(strtext)) {
  120934. return strtext;
  120935. }
  120936. if (strtext.trim().indexOf("=") != 0) {
  120937. strtext = "=" + strtext;
  120938. }
  120939. var result_this = formula_default.execstringformula(strtext, cell_r, cell_c, sheetindex_now);
  120940. return result_this[1];
  120941. } catch (e) {
  120942. var err = e;
  120943. err = formula_default.errorInfo(err);
  120944. return [formula_default.error.v, err];
  120945. }
  120946. },
  120947. "REMOTE": function() {
  120948. if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
  120949. return formula_default.error.na;
  120950. }
  120951. try {
  120952. const cellRow = window.luckysheetCurrentRow;
  120953. const cellColumn = window.luckysheetCurrentColumn;
  120954. const cellFunction = window.luckysheetCurrentFunction;
  120955. const remoteFunction = func_methods_default.getFirstValue(arguments[0]);
  120956. if (valueIsError(remoteFunction)) {
  120957. return remoteFunction;
  120958. }
  120959. luckysheetConfigsetting_default.remoteFunction(remoteFunction, (data) => {
  120960. const flowData = editor_default.deepCopyFlowData(store_default.flowdata);
  120961. formula_default.execFunctionGroup(cellRow, cellColumn, data);
  120962. flowData[cellRow][cellColumn] = {
  120963. "v": data,
  120964. "f": cellFunction
  120965. };
  120966. jfrefreshgrid(flowData, [{"row": [cellRow, cellRow], "column": [cellColumn, cellColumn]}]);
  120967. });
  120968. return "Loading...";
  120969. } catch (e) {
  120970. console.log(e);
  120971. var err = e;
  120972. err = formula_default.errorInfo(err);
  120973. return [formula_default.error.v, err];
  120974. }
  120975. }
  120976. };
  120977. functionImplementation_default = functionImplementation;
  120978. }
  120979. });
  120980. // src/function/functionListDescriptor.js
  120981. var functionListDescriptor_default;
  120982. var init_functionListDescriptor = __esm({
  120983. "src/function/functionListDescriptor.js"() {
  120984. functionListDescriptor_default = [
  120985. {
  120986. "n": "SUMIF",
  120987. "t": 0,
  120988. "m": [
  120989. 2,
  120990. 3
  120991. ],
  120992. "p": [
  120993. {
  120994. "example": "A1:A10",
  120995. "require": "m",
  120996. "repeat": "n",
  120997. "type": "range"
  120998. },
  120999. {
  121000. "example": '">20"',
  121001. "require": "m",
  121002. "repeat": "n",
  121003. "type": "rangeall"
  121004. },
  121005. {
  121006. "example": "B1:B10",
  121007. "require": "o",
  121008. "repeat": "n",
  121009. "type": "range"
  121010. }
  121011. ]
  121012. },
  121013. {
  121014. "n": "TAN",
  121015. "t": 0,
  121016. "m": [
  121017. 1,
  121018. 1
  121019. ],
  121020. "p": [
  121021. {
  121022. "example": "45*PI()/180",
  121023. "require": "m",
  121024. "repeat": "n",
  121025. "type": "rangenumber"
  121026. }
  121027. ]
  121028. },
  121029. {
  121030. "n": "TANH",
  121031. "t": 0,
  121032. "m": [
  121033. 1,
  121034. 1
  121035. ],
  121036. "p": [
  121037. {
  121038. "example": "A2",
  121039. "require": "m",
  121040. "repeat": "n",
  121041. "type": "rangenumber"
  121042. }
  121043. ]
  121044. },
  121045. {
  121046. "n": "CEILING",
  121047. "t": 0,
  121048. "m": [
  121049. 2,
  121050. 2
  121051. ],
  121052. "p": [
  121053. {
  121054. "example": "23.25",
  121055. "require": "m",
  121056. "repeat": "n",
  121057. "type": "rangenumber"
  121058. },
  121059. {
  121060. "example": "0.1",
  121061. "require": "m",
  121062. "repeat": "n",
  121063. "type": "rangenumber"
  121064. }
  121065. ]
  121066. },
  121067. {
  121068. "n": "ATAN",
  121069. "t": 0,
  121070. "m": [
  121071. 1,
  121072. 1
  121073. ],
  121074. "p": [
  121075. {
  121076. "example": "0",
  121077. "require": "m",
  121078. "repeat": "n",
  121079. "type": "rangenumber"
  121080. }
  121081. ]
  121082. },
  121083. {
  121084. "n": "ASINH",
  121085. "t": 0,
  121086. "m": [
  121087. 1,
  121088. 1
  121089. ],
  121090. "p": [
  121091. {
  121092. "example": "0.9",
  121093. "require": "m",
  121094. "repeat": "n",
  121095. "type": "rangenumber"
  121096. }
  121097. ]
  121098. },
  121099. {
  121100. "n": "ABS",
  121101. "t": 0,
  121102. "m": [
  121103. 1,
  121104. 1
  121105. ],
  121106. "p": [
  121107. {
  121108. "example": "-2",
  121109. "require": "m",
  121110. "repeat": "n",
  121111. "type": "rangenumber"
  121112. }
  121113. ]
  121114. },
  121115. {
  121116. "n": "ACOS",
  121117. "t": 0,
  121118. "m": [
  121119. 1,
  121120. 1
  121121. ],
  121122. "p": [
  121123. {
  121124. "example": "0",
  121125. "require": "m",
  121126. "repeat": "n",
  121127. "type": "rangenumber"
  121128. }
  121129. ]
  121130. },
  121131. {
  121132. "n": "ACOSH",
  121133. "t": 0,
  121134. "m": [
  121135. 1,
  121136. 1
  121137. ],
  121138. "p": [
  121139. {
  121140. "example": "2",
  121141. "require": "m",
  121142. "repeat": "n",
  121143. "type": "rangenumber"
  121144. }
  121145. ]
  121146. },
  121147. {
  121148. "n": "MULTINOMIAL",
  121149. "t": 0,
  121150. "m": [
  121151. 1,
  121152. 255
  121153. ],
  121154. "p": [
  121155. {
  121156. "example": "1",
  121157. "require": "m",
  121158. "repeat": "n",
  121159. "type": "rangeall"
  121160. },
  121161. {
  121162. "example": "2",
  121163. "require": "o",
  121164. "repeat": "y",
  121165. "type": "rangeall"
  121166. }
  121167. ]
  121168. },
  121169. {
  121170. "n": "ATANH",
  121171. "t": 0,
  121172. "m": [
  121173. 1,
  121174. 1
  121175. ],
  121176. "p": [
  121177. {
  121178. "example": "0.9",
  121179. "require": "m",
  121180. "repeat": "n",
  121181. "type": "rangenumber"
  121182. }
  121183. ]
  121184. },
  121185. {
  121186. "n": "ATAN2",
  121187. "t": 0,
  121188. "m": [
  121189. 2,
  121190. 2
  121191. ],
  121192. "p": [
  121193. {
  121194. "example": "4",
  121195. "require": "m",
  121196. "repeat": "n",
  121197. "type": "rangenumber"
  121198. },
  121199. {
  121200. "example": "3",
  121201. "require": "m",
  121202. "repeat": "n",
  121203. "type": "rangenumber"
  121204. }
  121205. ]
  121206. },
  121207. {
  121208. "n": "COUNTBLANK",
  121209. "t": 1,
  121210. "m": [
  121211. 1,
  121212. 1
  121213. ],
  121214. "p": [
  121215. {
  121216. "example": "A2:C100",
  121217. "require": "m",
  121218. "repeat": "n",
  121219. "type": "range"
  121220. }
  121221. ]
  121222. },
  121223. {
  121224. "n": "COSH",
  121225. "t": 0,
  121226. "m": [
  121227. 1,
  121228. 1
  121229. ],
  121230. "p": [
  121231. {
  121232. "example": "A2",
  121233. "require": "m",
  121234. "repeat": "n",
  121235. "type": "rangenumber"
  121236. }
  121237. ]
  121238. },
  121239. {
  121240. "n": "INT",
  121241. "t": 0,
  121242. "m": [
  121243. 1,
  121244. 1
  121245. ],
  121246. "p": [
  121247. {
  121248. "example": "99.44",
  121249. "require": "m",
  121250. "repeat": "n",
  121251. "type": "rangenumber"
  121252. }
  121253. ]
  121254. },
  121255. {
  121256. "n": "ISEVEN",
  121257. "t": 0,
  121258. "m": [
  121259. 1,
  121260. 1
  121261. ],
  121262. "p": [
  121263. {
  121264. "example": "4",
  121265. "require": "m",
  121266. "repeat": "n",
  121267. "type": "rangenumber"
  121268. }
  121269. ]
  121270. },
  121271. {
  121272. "n": "ISODD",
  121273. "t": 0,
  121274. "m": [
  121275. 1,
  121276. 1
  121277. ],
  121278. "p": [
  121279. {
  121280. "example": "4",
  121281. "require": "m",
  121282. "repeat": "n",
  121283. "type": "rangenumber"
  121284. }
  121285. ]
  121286. },
  121287. {
  121288. "n": "LCM",
  121289. "t": 0,
  121290. "m": [
  121291. 1,
  121292. 255
  121293. ],
  121294. "p": [
  121295. {
  121296. "example": "A2:A5",
  121297. "require": "m",
  121298. "repeat": "n",
  121299. "type": "rangeall"
  121300. },
  121301. {
  121302. "example": "3",
  121303. "require": "o",
  121304. "repeat": "y",
  121305. "type": "rangeall"
  121306. }
  121307. ]
  121308. },
  121309. {
  121310. "n": "LN",
  121311. "t": 0,
  121312. "m": [
  121313. 1,
  121314. 1
  121315. ],
  121316. "p": [
  121317. {
  121318. "example": "100",
  121319. "require": "m",
  121320. "repeat": "n",
  121321. "type": "rangenumber"
  121322. }
  121323. ]
  121324. },
  121325. {
  121326. "n": "LOG",
  121327. "t": 0,
  121328. "m": [
  121329. 1,
  121330. 2
  121331. ],
  121332. "p": [
  121333. {
  121334. "example": "128",
  121335. "require": "m",
  121336. "repeat": "n",
  121337. "type": "rangenumber"
  121338. },
  121339. {
  121340. "example": "2",
  121341. "require": "o",
  121342. "repeat": "n",
  121343. "type": "rangenumber"
  121344. }
  121345. ]
  121346. },
  121347. {
  121348. "n": "LOG10",
  121349. "t": 0,
  121350. "m": [
  121351. 1,
  121352. 1
  121353. ],
  121354. "p": [
  121355. {
  121356. "example": "100",
  121357. "require": "m",
  121358. "repeat": "n",
  121359. "type": "rangenumber"
  121360. }
  121361. ]
  121362. },
  121363. {
  121364. "n": "MOD",
  121365. "t": 0,
  121366. "m": [
  121367. 2,
  121368. 2
  121369. ],
  121370. "p": [
  121371. {
  121372. "example": "10",
  121373. "require": "m",
  121374. "repeat": "n",
  121375. "type": "rangenumber"
  121376. },
  121377. {
  121378. "example": "4",
  121379. "require": "m",
  121380. "repeat": "n",
  121381. "type": "rangenumber"
  121382. }
  121383. ]
  121384. },
  121385. {
  121386. "n": "MROUND",
  121387. "t": 0,
  121388. "m": [
  121389. 2,
  121390. 2
  121391. ],
  121392. "p": [
  121393. {
  121394. "example": "21",
  121395. "require": "m",
  121396. "repeat": "n",
  121397. "type": "rangenumber"
  121398. },
  121399. {
  121400. "example": "14",
  121401. "require": "m",
  121402. "repeat": "n",
  121403. "type": "rangenumber"
  121404. }
  121405. ]
  121406. },
  121407. {
  121408. "n": "ODD",
  121409. "t": 0,
  121410. "m": [
  121411. 1,
  121412. 1
  121413. ],
  121414. "p": [
  121415. {
  121416. "example": "2",
  121417. "require": "m",
  121418. "repeat": "n",
  121419. "type": "rangenumber"
  121420. }
  121421. ]
  121422. },
  121423. {
  121424. "n": "SUMSQ",
  121425. "t": 0,
  121426. "m": [
  121427. 1,
  121428. 255
  121429. ],
  121430. "p": [
  121431. {
  121432. "example": "A2:A100",
  121433. "require": "m",
  121434. "repeat": "n",
  121435. "type": "rangeall"
  121436. },
  121437. {
  121438. "example": "2",
  121439. "require": "o",
  121440. "repeat": "y",
  121441. "type": "rangeall"
  121442. }
  121443. ]
  121444. },
  121445. {
  121446. "n": "COMBIN",
  121447. "t": 0,
  121448. "m": [
  121449. 2,
  121450. 2
  121451. ],
  121452. "p": [
  121453. {
  121454. "example": "4",
  121455. "require": "m",
  121456. "repeat": "n",
  121457. "type": "rangenumber"
  121458. },
  121459. {
  121460. "example": "2",
  121461. "require": "m",
  121462. "repeat": "n",
  121463. "type": "rangenumber"
  121464. }
  121465. ]
  121466. },
  121467. {
  121468. "n": "SUM",
  121469. "t": 0,
  121470. "m": [
  121471. 1,
  121472. 255
  121473. ],
  121474. "p": [
  121475. {
  121476. "example": "A2:A100",
  121477. "require": "m",
  121478. "repeat": "n",
  121479. "type": "rangeall"
  121480. },
  121481. {
  121482. "example": "2",
  121483. "require": "o",
  121484. "repeat": "y",
  121485. "type": "rangeall"
  121486. }
  121487. ]
  121488. },
  121489. {
  121490. "n": "SUBTOTAL",
  121491. "t": 0,
  121492. "m": [
  121493. 2,
  121494. 256
  121495. ],
  121496. "p": [
  121497. {
  121498. "example": "1",
  121499. "require": "m",
  121500. "repeat": "n",
  121501. "type": "rangenumber"
  121502. },
  121503. {
  121504. "example": "A2:A5",
  121505. "require": "m",
  121506. "repeat": "n",
  121507. "type": "range"
  121508. },
  121509. {
  121510. "example": "B2:B8",
  121511. "require": "o",
  121512. "repeat": "y",
  121513. "type": "range"
  121514. }
  121515. ]
  121516. },
  121517. {
  121518. "n": "ASIN",
  121519. "t": 0,
  121520. "m": [
  121521. 1,
  121522. 1
  121523. ],
  121524. "p": [
  121525. {
  121526. "example": "0",
  121527. "require": "m",
  121528. "repeat": "n",
  121529. "type": "rangenumber"
  121530. }
  121531. ]
  121532. },
  121533. {
  121534. "n": "COUNTIF",
  121535. "t": 1,
  121536. "m": [
  121537. 2,
  121538. 2
  121539. ],
  121540. "p": [
  121541. {
  121542. "example": "A1:A10",
  121543. "require": "m",
  121544. "repeat": "n",
  121545. "type": "range"
  121546. },
  121547. {
  121548. "example": '">20"',
  121549. "require": "m",
  121550. "repeat": "n",
  121551. "type": "rangeall"
  121552. }
  121553. ]
  121554. },
  121555. {
  121556. "n": "RADIANS",
  121557. "t": 0,
  121558. "m": [
  121559. 1,
  121560. 1
  121561. ],
  121562. "p": [
  121563. {
  121564. "example": "180",
  121565. "require": "m",
  121566. "repeat": "n",
  121567. "type": "rangenumber"
  121568. }
  121569. ]
  121570. },
  121571. {
  121572. "n": "RAND",
  121573. "t": 0,
  121574. "m": [
  121575. 0,
  121576. 0
  121577. ],
  121578. "p": []
  121579. },
  121580. {
  121581. "n": "COUNTUNIQUE",
  121582. "t": 0,
  121583. "m": [
  121584. 1,
  121585. 255
  121586. ],
  121587. "p": [
  121588. {
  121589. "example": "A1:C100",
  121590. "require": "m",
  121591. "repeat": "n",
  121592. "type": "rangeall"
  121593. },
  121594. {
  121595. "example": "1",
  121596. "require": "o",
  121597. "repeat": "n",
  121598. "type": "rangeall"
  121599. }
  121600. ]
  121601. },
  121602. {
  121603. "n": "DEGREES",
  121604. "t": 0,
  121605. "m": [
  121606. 1,
  121607. 1
  121608. ],
  121609. "p": [
  121610. {
  121611. "example": "PI()",
  121612. "require": "m",
  121613. "repeat": "n",
  121614. "type": "rangenumber"
  121615. }
  121616. ]
  121617. },
  121618. {
  121619. "n": "ERFC",
  121620. "t": 9,
  121621. "m": [
  121622. 1,
  121623. 1
  121624. ],
  121625. "p": [
  121626. {
  121627. "example": "2",
  121628. "require": "m",
  121629. "repeat": "n",
  121630. "type": "rangenumber"
  121631. }
  121632. ]
  121633. },
  121634. {
  121635. "n": "EVEN",
  121636. "t": 0,
  121637. "m": [
  121638. 1,
  121639. 1
  121640. ],
  121641. "p": [
  121642. {
  121643. "example": "3",
  121644. "require": "m",
  121645. "repeat": "n",
  121646. "type": "rangenumber"
  121647. }
  121648. ]
  121649. },
  121650. {
  121651. "n": "EXP",
  121652. "t": 0,
  121653. "m": [
  121654. 1,
  121655. 1
  121656. ],
  121657. "p": [
  121658. {
  121659. "example": "2",
  121660. "require": "m",
  121661. "repeat": "n",
  121662. "type": "rangenumber"
  121663. }
  121664. ]
  121665. },
  121666. {
  121667. "n": "FACT",
  121668. "t": 0,
  121669. "m": [
  121670. 1,
  121671. 1
  121672. ],
  121673. "p": [
  121674. {
  121675. "example": "3",
  121676. "require": "m",
  121677. "repeat": "n",
  121678. "type": "rangenumber"
  121679. }
  121680. ]
  121681. },
  121682. {
  121683. "n": "FACTDOUBLE",
  121684. "t": 0,
  121685. "m": [
  121686. 1,
  121687. 1
  121688. ],
  121689. "p": [
  121690. {
  121691. "example": "6",
  121692. "require": "m",
  121693. "repeat": "n",
  121694. "type": "rangenumber"
  121695. }
  121696. ]
  121697. },
  121698. {
  121699. "n": "PI",
  121700. "t": 0,
  121701. "m": [
  121702. 0,
  121703. 0
  121704. ],
  121705. "p": []
  121706. },
  121707. {
  121708. "n": "FLOOR",
  121709. "t": 0,
  121710. "m": [
  121711. 2,
  121712. 2
  121713. ],
  121714. "p": [
  121715. {
  121716. "example": "23.25",
  121717. "require": "m",
  121718. "repeat": "n",
  121719. "type": "rangenumber"
  121720. },
  121721. {
  121722. "example": "0.1",
  121723. "require": "m",
  121724. "repeat": "n",
  121725. "type": "rangenumber"
  121726. }
  121727. ]
  121728. },
  121729. {
  121730. "n": "GCD",
  121731. "t": 0,
  121732. "m": [
  121733. 1,
  121734. 255
  121735. ],
  121736. "p": [
  121737. {
  121738. "example": "A2:A5",
  121739. "require": "m",
  121740. "repeat": "n",
  121741. "type": "rangeall"
  121742. },
  121743. {
  121744. "example": "96",
  121745. "require": "o",
  121746. "repeat": "y",
  121747. "type": "rangeall"
  121748. }
  121749. ]
  121750. },
  121751. {
  121752. "n": "RANDBETWEEN",
  121753. "t": 0,
  121754. "m": [
  121755. 2,
  121756. 2
  121757. ],
  121758. "p": [
  121759. {
  121760. "example": "1",
  121761. "require": "m",
  121762. "repeat": "n",
  121763. "type": "rangenumber"
  121764. },
  121765. {
  121766. "example": "10",
  121767. "require": "m",
  121768. "repeat": "n",
  121769. "type": "rangenumber"
  121770. }
  121771. ]
  121772. },
  121773. {
  121774. "n": "ROUND",
  121775. "t": 0,
  121776. "m": [
  121777. 2,
  121778. 2
  121779. ],
  121780. "p": [
  121781. {
  121782. "example": "99.44",
  121783. "require": "m",
  121784. "repeat": "n",
  121785. "type": "rangenumber"
  121786. },
  121787. {
  121788. "example": "1",
  121789. "require": "m",
  121790. "repeat": "n",
  121791. "type": "rangenumber"
  121792. }
  121793. ]
  121794. },
  121795. {
  121796. "n": "ROUNDDOWN",
  121797. "t": 0,
  121798. "m": [
  121799. 2,
  121800. 2
  121801. ],
  121802. "p": [
  121803. {
  121804. "example": "99.44",
  121805. "require": "m",
  121806. "repeat": "n",
  121807. "type": "rangenumber"
  121808. },
  121809. {
  121810. "example": "1",
  121811. "require": "m",
  121812. "repeat": "n",
  121813. "type": "rangenumber"
  121814. }
  121815. ]
  121816. },
  121817. {
  121818. "n": "ROUNDUP",
  121819. "t": 0,
  121820. "m": [
  121821. 2,
  121822. 2
  121823. ],
  121824. "p": [
  121825. {
  121826. "example": "99.44",
  121827. "require": "m",
  121828. "repeat": "n",
  121829. "type": "rangenumber"
  121830. },
  121831. {
  121832. "example": "1",
  121833. "require": "m",
  121834. "repeat": "n",
  121835. "type": "rangenumber"
  121836. }
  121837. ]
  121838. },
  121839. {
  121840. "n": "SERIESSUM",
  121841. "t": 0,
  121842. "m": [
  121843. 4,
  121844. 4
  121845. ],
  121846. "p": [
  121847. {
  121848. "example": "1",
  121849. "require": "m",
  121850. "repeat": "n",
  121851. "type": "rangenumber"
  121852. },
  121853. {
  121854. "example": "0",
  121855. "require": "m",
  121856. "repeat": "n",
  121857. "type": "rangenumber"
  121858. },
  121859. {
  121860. "example": "1",
  121861. "require": "m",
  121862. "repeat": "n",
  121863. "type": "rangenumber"
  121864. },
  121865. {
  121866. "example": "{FACT(0)",
  121867. "require": "m",
  121868. "repeat": "n",
  121869. "type": "rangenumber"
  121870. }
  121871. ]
  121872. },
  121873. {
  121874. "n": "SIGN",
  121875. "t": 0,
  121876. "m": [
  121877. 1,
  121878. 1
  121879. ],
  121880. "p": [
  121881. {
  121882. "example": "-42",
  121883. "require": "m",
  121884. "repeat": "n",
  121885. "type": "rangenumber"
  121886. }
  121887. ]
  121888. },
  121889. {
  121890. "n": "SIN",
  121891. "t": 0,
  121892. "m": [
  121893. 1,
  121894. 1
  121895. ],
  121896. "p": [
  121897. {
  121898. "example": "PI()",
  121899. "require": "m",
  121900. "repeat": "n",
  121901. "type": "rangenumber"
  121902. }
  121903. ]
  121904. },
  121905. {
  121906. "n": "SINH",
  121907. "t": 0,
  121908. "m": [
  121909. 1,
  121910. 1
  121911. ],
  121912. "p": [
  121913. {
  121914. "example": "A2",
  121915. "require": "m",
  121916. "repeat": "n",
  121917. "type": "rangenumber"
  121918. }
  121919. ]
  121920. },
  121921. {
  121922. "n": "SQRT",
  121923. "t": 0,
  121924. "m": [
  121925. 1,
  121926. 1
  121927. ],
  121928. "p": [
  121929. {
  121930. "example": "9",
  121931. "require": "m",
  121932. "repeat": "n",
  121933. "type": "rangenumber"
  121934. }
  121935. ]
  121936. },
  121937. {
  121938. "n": "SQRTPI",
  121939. "t": 0,
  121940. "m": [
  121941. 1,
  121942. 1
  121943. ],
  121944. "p": [
  121945. {
  121946. "example": "9",
  121947. "require": "m",
  121948. "repeat": "n",
  121949. "type": "rangenumber"
  121950. }
  121951. ]
  121952. },
  121953. {
  121954. "n": "GAMMALN",
  121955. "t": 1,
  121956. "m": [
  121957. 1,
  121958. 1
  121959. ],
  121960. "p": [
  121961. {
  121962. "example": "4",
  121963. "require": "m",
  121964. "repeat": "n",
  121965. "type": "rangenumber"
  121966. }
  121967. ]
  121968. },
  121969. {
  121970. "n": "COS",
  121971. "t": 0,
  121972. "m": [
  121973. 1,
  121974. 1
  121975. ],
  121976. "p": [
  121977. {
  121978. "example": "PI()",
  121979. "require": "m",
  121980. "repeat": "n",
  121981. "type": "rangenumber"
  121982. }
  121983. ]
  121984. },
  121985. {
  121986. "n": "TRUNC",
  121987. "t": 0,
  121988. "m": [
  121989. 1,
  121990. 2
  121991. ],
  121992. "p": [
  121993. {
  121994. "example": "3.141592654",
  121995. "require": "m",
  121996. "repeat": "n",
  121997. "type": "rangenumber"
  121998. },
  121999. {
  122000. "example": "2",
  122001. "require": "o",
  122002. "repeat": "n",
  122003. "type": "rangenumber"
  122004. }
  122005. ]
  122006. },
  122007. {
  122008. "n": "QUOTIENT",
  122009. "t": 0,
  122010. "m": [
  122011. 2,
  122012. 2
  122013. ],
  122014. "p": [
  122015. {
  122016. "example": "4",
  122017. "require": "m",
  122018. "repeat": "n",
  122019. "type": "rangenumber"
  122020. },
  122021. {
  122022. "example": "2",
  122023. "require": "m",
  122024. "repeat": "n",
  122025. "type": "rangenumber"
  122026. }
  122027. ]
  122028. },
  122029. {
  122030. "n": "POWER",
  122031. "t": 0,
  122032. "m": [
  122033. 2,
  122034. 2
  122035. ],
  122036. "p": [
  122037. {
  122038. "example": "4",
  122039. "require": "m",
  122040. "repeat": "n",
  122041. "type": "rangenumber"
  122042. },
  122043. {
  122044. "example": "0.5",
  122045. "require": "m",
  122046. "repeat": "n",
  122047. "type": "rangenumber"
  122048. }
  122049. ]
  122050. },
  122051. {
  122052. "n": "SUMIFS",
  122053. "t": 0,
  122054. "m": [
  122055. 3,
  122056. 257
  122057. ],
  122058. "p": [
  122059. {
  122060. "example": "A1:A10",
  122061. "require": "m",
  122062. "repeat": "n",
  122063. "type": "range"
  122064. },
  122065. {
  122066. "example": " B1:B10",
  122067. "require": "m",
  122068. "repeat": "n",
  122069. "type": "range"
  122070. },
  122071. {
  122072. "example": ' ">20"',
  122073. "require": "m",
  122074. "repeat": "n",
  122075. "type": "rangeall"
  122076. },
  122077. {
  122078. "example": " C1:C10",
  122079. "require": "o",
  122080. "repeat": "y",
  122081. "type": "rangeall"
  122082. }
  122083. ]
  122084. },
  122085. {
  122086. "n": "COUNTIFS",
  122087. "t": 1,
  122088. "m": [
  122089. 2,
  122090. 256
  122091. ],
  122092. "p": [
  122093. {
  122094. "example": "A1:A10",
  122095. "require": "m",
  122096. "repeat": "n",
  122097. "type": "range"
  122098. },
  122099. {
  122100. "example": ' ">20"',
  122101. "require": "m",
  122102. "repeat": "n",
  122103. "type": "rangeall"
  122104. },
  122105. {
  122106. "example": " B1:B10",
  122107. "require": "o",
  122108. "repeat": "y",
  122109. "type": "rangeall"
  122110. }
  122111. ]
  122112. },
  122113. {
  122114. "n": "PRODUCT",
  122115. "t": 0,
  122116. "m": [
  122117. 1,
  122118. 255
  122119. ],
  122120. "p": [
  122121. {
  122122. "example": "A2:A100",
  122123. "require": "m",
  122124. "repeat": "n",
  122125. "type": "rangenumber"
  122126. },
  122127. {
  122128. "example": "2",
  122129. "require": "o",
  122130. "repeat": "y",
  122131. "type": "rangenumber"
  122132. }
  122133. ]
  122134. },
  122135. {
  122136. "n": "HARMEAN",
  122137. "t": 1,
  122138. "m": [
  122139. 1,
  122140. 255
  122141. ],
  122142. "p": [
  122143. {
  122144. "example": "1",
  122145. "require": "m",
  122146. "repeat": "n",
  122147. "type": "rangenumber"
  122148. },
  122149. {
  122150. "example": "2",
  122151. "require": "o",
  122152. "repeat": "y",
  122153. "type": "rangenumber"
  122154. }
  122155. ]
  122156. },
  122157. {
  122158. "n": "HYPGEOMDIST",
  122159. "t": 1,
  122160. "m": [
  122161. 5,
  122162. 5
  122163. ],
  122164. "p": [
  122165. {
  122166. "example": "4",
  122167. "require": "m",
  122168. "repeat": "n",
  122169. "type": "rangenumber"
  122170. },
  122171. {
  122172. "example": "12",
  122173. "require": "m",
  122174. "repeat": "n",
  122175. "type": "rangenumber"
  122176. },
  122177. {
  122178. "example": "20",
  122179. "require": "m",
  122180. "repeat": "n",
  122181. "type": "rangenumber"
  122182. },
  122183. {
  122184. "example": "40",
  122185. "require": "m",
  122186. "repeat": "n",
  122187. "type": "rangenumber"
  122188. },
  122189. {
  122190. "example": "TRUE()",
  122191. "require": "m",
  122192. "repeat": "n",
  122193. "type": "rangeall"
  122194. }
  122195. ]
  122196. },
  122197. {
  122198. "n": "INTERCEPT",
  122199. "t": 1,
  122200. "m": [
  122201. 2,
  122202. 2
  122203. ],
  122204. "p": [
  122205. {
  122206. "example": "A2:A100",
  122207. "require": "m",
  122208. "repeat": "n",
  122209. "type": "rangenumber"
  122210. },
  122211. {
  122212. "example": "B2:B100",
  122213. "require": "m",
  122214. "repeat": "n",
  122215. "type": "rangenumber"
  122216. }
  122217. ]
  122218. },
  122219. {
  122220. "n": "KURT",
  122221. "t": 1,
  122222. "m": [
  122223. 1,
  122224. 255
  122225. ],
  122226. "p": [
  122227. {
  122228. "example": "1",
  122229. "require": "m",
  122230. "repeat": "n",
  122231. "type": "rangenumber"
  122232. },
  122233. {
  122234. "example": "2",
  122235. "require": "o",
  122236. "repeat": "y",
  122237. "type": "rangenumber"
  122238. }
  122239. ]
  122240. },
  122241. {
  122242. "n": "LARGE",
  122243. "t": 1,
  122244. "m": [
  122245. 2,
  122246. 2
  122247. ],
  122248. "p": [
  122249. {
  122250. "example": "A2:B100",
  122251. "require": "m",
  122252. "repeat": "n",
  122253. "type": "rangenumber"
  122254. },
  122255. {
  122256. "example": "4",
  122257. "require": "m",
  122258. "repeat": "n",
  122259. "type": "rangenumber"
  122260. }
  122261. ]
  122262. },
  122263. {
  122264. "n": "STDEVA",
  122265. "t": 1,
  122266. "m": [
  122267. 1,
  122268. 255
  122269. ],
  122270. "p": [
  122271. {
  122272. "example": "1",
  122273. "require": "m",
  122274. "repeat": "n",
  122275. "type": "rangenumber"
  122276. },
  122277. {
  122278. "example": "2",
  122279. "require": "o",
  122280. "repeat": "y",
  122281. "type": "rangenumber"
  122282. }
  122283. ]
  122284. },
  122285. {
  122286. "n": "STDEVP",
  122287. "t": 1,
  122288. "m": [
  122289. 1,
  122290. 255
  122291. ],
  122292. "p": [
  122293. {
  122294. "example": "1",
  122295. "require": "m",
  122296. "repeat": "n",
  122297. "type": "rangenumber"
  122298. },
  122299. {
  122300. "example": "2",
  122301. "require": "o",
  122302. "repeat": "y",
  122303. "type": "rangenumber"
  122304. }
  122305. ]
  122306. },
  122307. {
  122308. "n": "GEOMEAN",
  122309. "t": 1,
  122310. "m": [
  122311. 1,
  122312. 255
  122313. ],
  122314. "p": [
  122315. {
  122316. "example": "1",
  122317. "require": "m",
  122318. "repeat": "n",
  122319. "type": "rangeall"
  122320. },
  122321. {
  122322. "example": "2",
  122323. "require": "o",
  122324. "repeat": "y",
  122325. "type": "rangeall"
  122326. }
  122327. ]
  122328. },
  122329. {
  122330. "n": "RANK_EQ",
  122331. "t": 1,
  122332. "m": [
  122333. 2,
  122334. 3
  122335. ],
  122336. "p": [
  122337. {
  122338. "example": "A10",
  122339. "require": "m",
  122340. "repeat": "n",
  122341. "type": "rangenumber"
  122342. },
  122343. {
  122344. "example": "A1:A100",
  122345. "require": "m",
  122346. "repeat": "n",
  122347. "type": "range"
  122348. },
  122349. {
  122350. "example": "TRUE()",
  122351. "require": "o",
  122352. "repeat": "n",
  122353. "type": "rangeall"
  122354. }
  122355. ]
  122356. },
  122357. {
  122358. "n": "RANK_AVG",
  122359. "t": 1,
  122360. "m": [
  122361. 2,
  122362. 3
  122363. ],
  122364. "p": [
  122365. {
  122366. "example": "A10",
  122367. "require": "m",
  122368. "repeat": "n",
  122369. "type": "rangenumber"
  122370. },
  122371. {
  122372. "example": "A1:A100",
  122373. "require": "m",
  122374. "repeat": "n",
  122375. "type": "range"
  122376. },
  122377. {
  122378. "example": "TRUE()",
  122379. "require": "o",
  122380. "repeat": "n",
  122381. "type": "rangeall"
  122382. }
  122383. ]
  122384. },
  122385. {
  122386. "n": "PERCENTRANK_EXC",
  122387. "t": 1,
  122388. "m": [
  122389. 2,
  122390. 3
  122391. ],
  122392. "p": [
  122393. {
  122394. "example": "A1:A100",
  122395. "require": "m",
  122396. "repeat": "n",
  122397. "type": "rangenumber"
  122398. },
  122399. {
  122400. "example": "A2",
  122401. "require": "m",
  122402. "repeat": "n",
  122403. "type": "rangenumber"
  122404. },
  122405. {
  122406. "example": "4",
  122407. "require": "o",
  122408. "repeat": "n",
  122409. "type": "rangenumber"
  122410. }
  122411. ]
  122412. },
  122413. {
  122414. "n": "PERCENTRANK_INC",
  122415. "t": 1,
  122416. "m": [
  122417. 2,
  122418. 3
  122419. ],
  122420. "p": [
  122421. {
  122422. "example": "A1:A100",
  122423. "require": "m",
  122424. "repeat": "n",
  122425. "type": "rangenumber"
  122426. },
  122427. {
  122428. "example": " A2",
  122429. "require": "m",
  122430. "repeat": "n",
  122431. "type": "rangenumber"
  122432. },
  122433. {
  122434. "example": "4",
  122435. "require": "o",
  122436. "repeat": "n",
  122437. "type": "rangenumber"
  122438. }
  122439. ]
  122440. },
  122441. {
  122442. "n": "FORECAST",
  122443. "t": 1,
  122444. "m": [
  122445. 3,
  122446. 3
  122447. ],
  122448. "p": [
  122449. {
  122450. "example": "A1",
  122451. "require": "m",
  122452. "repeat": "n",
  122453. "type": "rangenumber"
  122454. },
  122455. {
  122456. "example": "A2:A100",
  122457. "require": "m",
  122458. "repeat": "n",
  122459. "type": "rangenumber"
  122460. },
  122461. {
  122462. "example": "B2:B100",
  122463. "require": "m",
  122464. "repeat": "n",
  122465. "type": "rangenumber"
  122466. }
  122467. ]
  122468. },
  122469. {
  122470. "n": "FISHERINV",
  122471. "t": 1,
  122472. "m": [
  122473. 1,
  122474. 1
  122475. ],
  122476. "p": [
  122477. {
  122478. "example": "0.962",
  122479. "require": "m",
  122480. "repeat": "n",
  122481. "type": "rangenumber"
  122482. }
  122483. ]
  122484. },
  122485. {
  122486. "n": "FISHER",
  122487. "t": 1,
  122488. "m": [
  122489. 1,
  122490. 1
  122491. ],
  122492. "p": [
  122493. {
  122494. "example": "0.962",
  122495. "require": "m",
  122496. "repeat": "n",
  122497. "type": "rangenumber"
  122498. }
  122499. ]
  122500. },
  122501. {
  122502. "n": "MODE_SNGL",
  122503. "t": 1,
  122504. "m": [
  122505. 1,
  122506. 255
  122507. ],
  122508. "p": [
  122509. {
  122510. "example": "A2:A100",
  122511. "require": "m",
  122512. "repeat": "n",
  122513. "type": "rangenumber"
  122514. },
  122515. {
  122516. "example": "B2:B100",
  122517. "require": "o",
  122518. "repeat": "y",
  122519. "type": "rangenumber"
  122520. }
  122521. ]
  122522. },
  122523. {
  122524. "n": "WEIBULL_DIST",
  122525. "t": 1,
  122526. "m": [
  122527. 4,
  122528. 4
  122529. ],
  122530. "p": [
  122531. {
  122532. "example": "2.4",
  122533. "require": "m",
  122534. "repeat": "n",
  122535. "type": "rangenumber"
  122536. },
  122537. {
  122538. "example": "2",
  122539. "require": "m",
  122540. "repeat": "n",
  122541. "type": "rangenumber"
  122542. },
  122543. {
  122544. "example": "3",
  122545. "require": "m",
  122546. "repeat": "n",
  122547. "type": "rangenumber"
  122548. },
  122549. {
  122550. "example": "TRUE()",
  122551. "require": "m",
  122552. "repeat": "n",
  122553. "type": "rangeall"
  122554. }
  122555. ]
  122556. },
  122557. {
  122558. "n": "COUNT",
  122559. "t": 1,
  122560. "m": [
  122561. 1,
  122562. 255
  122563. ],
  122564. "p": [
  122565. {
  122566. "example": "A2:A100",
  122567. "require": "m",
  122568. "repeat": "n",
  122569. "type": "rangeall"
  122570. },
  122571. {
  122572. "example": "B2:B100",
  122573. "require": "o",
  122574. "repeat": "y",
  122575. "type": "rangeall"
  122576. }
  122577. ]
  122578. },
  122579. {
  122580. "n": "COUNTA",
  122581. "t": 1,
  122582. "m": [
  122583. 1,
  122584. 255
  122585. ],
  122586. "p": [
  122587. {
  122588. "example": "A2:A100",
  122589. "require": "m",
  122590. "repeat": "n",
  122591. "type": "rangeall"
  122592. },
  122593. {
  122594. "example": "B2:B100",
  122595. "require": "o",
  122596. "repeat": "y",
  122597. "type": "rangeall"
  122598. }
  122599. ]
  122600. },
  122601. {
  122602. "n": "AVEDEV",
  122603. "t": 1,
  122604. "m": [
  122605. 1,
  122606. 255
  122607. ],
  122608. "p": [
  122609. {
  122610. "example": "1",
  122611. "require": "m",
  122612. "repeat": "n",
  122613. "type": "rangenumber"
  122614. },
  122615. {
  122616. "example": "2",
  122617. "require": "o",
  122618. "repeat": "y",
  122619. "type": "rangenumber"
  122620. }
  122621. ]
  122622. },
  122623. {
  122624. "n": "AVERAGE",
  122625. "t": 1,
  122626. "m": [
  122627. 1,
  122628. 255
  122629. ],
  122630. "p": [
  122631. {
  122632. "example": "A2:A100",
  122633. "require": "m",
  122634. "repeat": "n",
  122635. "type": "rangeall"
  122636. },
  122637. {
  122638. "example": "B2:B100",
  122639. "require": "o",
  122640. "repeat": "y",
  122641. "type": "rangeall"
  122642. }
  122643. ]
  122644. },
  122645. {
  122646. "n": "AVERAGEA",
  122647. "t": 1,
  122648. "m": [
  122649. 1,
  122650. 255
  122651. ],
  122652. "p": [
  122653. {
  122654. "example": "A2:A100",
  122655. "require": "m",
  122656. "repeat": "n",
  122657. "type": "rangeall"
  122658. },
  122659. {
  122660. "example": "B2:B100",
  122661. "require": "o",
  122662. "repeat": "y",
  122663. "type": "rangeall"
  122664. }
  122665. ]
  122666. },
  122667. {
  122668. "n": "BINOM_DIST",
  122669. "t": 1,
  122670. "m": [
  122671. 4,
  122672. 4
  122673. ],
  122674. "p": [
  122675. {
  122676. "example": "4",
  122677. "require": "m",
  122678. "repeat": "n",
  122679. "type": "rangenumber"
  122680. },
  122681. {
  122682. "example": "100",
  122683. "require": "m",
  122684. "repeat": "n",
  122685. "type": "rangenumber"
  122686. },
  122687. {
  122688. "example": "0.005",
  122689. "require": "m",
  122690. "repeat": "n",
  122691. "type": "rangenumber"
  122692. },
  122693. {
  122694. "example": "FALSE()",
  122695. "require": "m",
  122696. "repeat": "n",
  122697. "type": "rangeall"
  122698. }
  122699. ]
  122700. },
  122701. {
  122702. "n": "BINOM_INV",
  122703. "t": 1,
  122704. "m": [
  122705. 3,
  122706. 3
  122707. ],
  122708. "p": [
  122709. {
  122710. "example": "100",
  122711. "require": "m",
  122712. "repeat": "n",
  122713. "type": "rangenumber"
  122714. },
  122715. {
  122716. "example": "0.005",
  122717. "require": "m",
  122718. "repeat": "n",
  122719. "type": "rangenumber"
  122720. },
  122721. {
  122722. "example": "0.8",
  122723. "require": "m",
  122724. "repeat": "n",
  122725. "type": "rangenumber"
  122726. }
  122727. ]
  122728. },
  122729. {
  122730. "n": "CONFIDENCE_NORM",
  122731. "t": 1,
  122732. "m": [
  122733. 3,
  122734. 3
  122735. ],
  122736. "p": [
  122737. {
  122738. "example": "0.05",
  122739. "require": "m",
  122740. "repeat": "n",
  122741. "type": "rangenumber"
  122742. },
  122743. {
  122744. "example": "1.6",
  122745. "require": "m",
  122746. "repeat": "n",
  122747. "type": "rangenumber"
  122748. },
  122749. {
  122750. "example": "250",
  122751. "require": "m",
  122752. "repeat": "n",
  122753. "type": "rangenumber"
  122754. }
  122755. ]
  122756. },
  122757. {
  122758. "n": "CORREL",
  122759. "t": 1,
  122760. "m": [
  122761. 2,
  122762. 2
  122763. ],
  122764. "p": [
  122765. {
  122766. "example": "A2:A100",
  122767. "require": "m",
  122768. "repeat": "n",
  122769. "type": "rangenumber"
  122770. },
  122771. {
  122772. "example": "B2:B100",
  122773. "require": "m",
  122774. "repeat": "n",
  122775. "type": "rangenumber"
  122776. }
  122777. ]
  122778. },
  122779. {
  122780. "n": "COVARIANCE_P",
  122781. "t": 1,
  122782. "m": [
  122783. 2,
  122784. 2
  122785. ],
  122786. "p": [
  122787. {
  122788. "example": "B2:B100",
  122789. "require": "m",
  122790. "repeat": "n",
  122791. "type": "rangenumber"
  122792. },
  122793. {
  122794. "example": "A2:A100",
  122795. "require": "m",
  122796. "repeat": "n",
  122797. "type": "rangenumber"
  122798. }
  122799. ]
  122800. },
  122801. {
  122802. "n": "COVARIANCE_S",
  122803. "t": 1,
  122804. "m": [
  122805. 2,
  122806. 2
  122807. ],
  122808. "p": [
  122809. {
  122810. "example": "A2:A100",
  122811. "require": "m",
  122812. "repeat": "n",
  122813. "type": "rangenumber"
  122814. },
  122815. {
  122816. "example": "B2:B100",
  122817. "require": "m",
  122818. "repeat": "n",
  122819. "type": "rangenumber"
  122820. }
  122821. ]
  122822. },
  122823. {
  122824. "n": "DEVSQ",
  122825. "t": 1,
  122826. "m": [
  122827. 1,
  122828. 255
  122829. ],
  122830. "p": [
  122831. {
  122832. "example": "1",
  122833. "require": "m",
  122834. "repeat": "n",
  122835. "type": "rangenumber"
  122836. },
  122837. {
  122838. "example": "2",
  122839. "require": "o",
  122840. "repeat": "y",
  122841. "type": "rangenumber"
  122842. }
  122843. ]
  122844. },
  122845. {
  122846. "n": "EXPON_DIST",
  122847. "t": 1,
  122848. "m": [
  122849. 3,
  122850. 3
  122851. ],
  122852. "p": [
  122853. {
  122854. "example": "4",
  122855. "require": "m",
  122856. "repeat": "n",
  122857. "type": "rangenumber"
  122858. },
  122859. {
  122860. "example": "0.5",
  122861. "require": "m",
  122862. "repeat": "n",
  122863. "type": "rangenumber"
  122864. },
  122865. {
  122866. "example": "FALSE()",
  122867. "require": "m",
  122868. "repeat": "n",
  122869. "type": "rangeall"
  122870. }
  122871. ]
  122872. },
  122873. {
  122874. "n": "AVERAGEIF",
  122875. "t": 1,
  122876. "m": [
  122877. 2,
  122878. 3
  122879. ],
  122880. "p": [
  122881. {
  122882. "example": "A1:A10",
  122883. "require": "m",
  122884. "repeat": "n",
  122885. "type": "rangeall"
  122886. },
  122887. {
  122888. "example": '">20"',
  122889. "require": "m",
  122890. "repeat": "n",
  122891. "type": "rangeall"
  122892. },
  122893. {
  122894. "example": "B1:B10",
  122895. "require": "o",
  122896. "repeat": "n",
  122897. "type": "rangeall"
  122898. }
  122899. ]
  122900. },
  122901. {
  122902. "n": "AVERAGEIFS",
  122903. "t": 1,
  122904. "m": [
  122905. 2,
  122906. 255
  122907. ],
  122908. "p": [
  122909. {
  122910. "example": "A1:A10",
  122911. "require": "m",
  122912. "repeat": "n",
  122913. "type": "rangeall"
  122914. },
  122915. {
  122916. "example": " B1:B10",
  122917. "require": "m",
  122918. "repeat": "n",
  122919. "type": "rangeall"
  122920. },
  122921. {
  122922. "example": ' ">20"',
  122923. "require": "m",
  122924. "repeat": "n",
  122925. "type": "rangeall"
  122926. },
  122927. {
  122928. "example": " C1:C10",
  122929. "require": "m",
  122930. "repeat": "n",
  122931. "type": "rangeall"
  122932. }
  122933. ]
  122934. },
  122935. {
  122936. "n": "PERMUT",
  122937. "t": 1,
  122938. "m": [
  122939. 2,
  122940. 2
  122941. ],
  122942. "p": [
  122943. {
  122944. "example": "4",
  122945. "require": "m",
  122946. "repeat": "n",
  122947. "type": "rangenumber"
  122948. },
  122949. {
  122950. "example": "2",
  122951. "require": "m",
  122952. "repeat": "n",
  122953. "type": "rangenumber"
  122954. }
  122955. ]
  122956. },
  122957. {
  122958. "n": "TRIMMEAN",
  122959. "t": 1,
  122960. "m": [
  122961. 2,
  122962. 2
  122963. ],
  122964. "p": [
  122965. {
  122966. "example": "A2:A100",
  122967. "require": "m",
  122968. "repeat": "n",
  122969. "type": "range"
  122970. },
  122971. {
  122972. "example": "0.1",
  122973. "require": "m",
  122974. "repeat": "n",
  122975. "type": "rangenumber"
  122976. }
  122977. ]
  122978. },
  122979. {
  122980. "n": "PERCENTILE_EXC",
  122981. "t": 1,
  122982. "m": [
  122983. 2,
  122984. 2
  122985. ],
  122986. "p": [
  122987. {
  122988. "example": "A2:A100",
  122989. "require": "m",
  122990. "repeat": "n",
  122991. "type": "rangenumber"
  122992. },
  122993. {
  122994. "example": "0.25",
  122995. "require": "m",
  122996. "repeat": "n",
  122997. "type": "rangenumber"
  122998. }
  122999. ]
  123000. },
  123001. {
  123002. "n": "PERCENTILE_INC",
  123003. "t": 1,
  123004. "m": [
  123005. 2,
  123006. 2
  123007. ],
  123008. "p": [
  123009. {
  123010. "example": "A2:A100",
  123011. "require": "m",
  123012. "repeat": "n",
  123013. "type": "rangenumber"
  123014. },
  123015. {
  123016. "example": "0.25",
  123017. "require": "m",
  123018. "repeat": "n",
  123019. "type": "rangenumber"
  123020. }
  123021. ]
  123022. },
  123023. {
  123024. "n": "PEARSON",
  123025. "t": 1,
  123026. "m": [
  123027. 2,
  123028. 2
  123029. ],
  123030. "p": [
  123031. {
  123032. "example": "A2:A100",
  123033. "require": "m",
  123034. "repeat": "n",
  123035. "type": "rangenumber"
  123036. },
  123037. {
  123038. "example": "B2:B100",
  123039. "require": "m",
  123040. "repeat": "n",
  123041. "type": "rangenumber"
  123042. }
  123043. ]
  123044. },
  123045. {
  123046. "n": "NORM_S_INV",
  123047. "t": 1,
  123048. "m": [
  123049. 1,
  123050. 1
  123051. ],
  123052. "p": [
  123053. {
  123054. "example": "0.75",
  123055. "require": "m",
  123056. "repeat": "n",
  123057. "type": "rangenumber"
  123058. }
  123059. ]
  123060. },
  123061. {
  123062. "n": "NORM_S_DIST",
  123063. "t": 1,
  123064. "m": [
  123065. 2,
  123066. 2
  123067. ],
  123068. "p": [
  123069. {
  123070. "example": "2.4",
  123071. "require": "m",
  123072. "repeat": "n",
  123073. "type": "rangenumber"
  123074. },
  123075. {
  123076. "example": "FALSE()",
  123077. "require": "m",
  123078. "repeat": "n",
  123079. "type": "rangeall"
  123080. }
  123081. ]
  123082. },
  123083. {
  123084. "n": "NORM_INV",
  123085. "t": 1,
  123086. "m": [
  123087. 3,
  123088. 3
  123089. ],
  123090. "p": [
  123091. {
  123092. "example": "0.75",
  123093. "require": "m",
  123094. "repeat": "n",
  123095. "type": "rangenumber"
  123096. },
  123097. {
  123098. "example": "1",
  123099. "require": "m",
  123100. "repeat": "n",
  123101. "type": "rangenumber"
  123102. },
  123103. {
  123104. "example": "4",
  123105. "require": "m",
  123106. "repeat": "n",
  123107. "type": "rangenumber"
  123108. }
  123109. ]
  123110. },
  123111. {
  123112. "n": "NORM_DIST",
  123113. "t": 1,
  123114. "m": [
  123115. 4,
  123116. 4
  123117. ],
  123118. "p": [
  123119. {
  123120. "example": "2.4",
  123121. "require": "m",
  123122. "repeat": "n",
  123123. "type": "rangenumber"
  123124. },
  123125. {
  123126. "example": "1",
  123127. "require": "m",
  123128. "repeat": "n",
  123129. "type": "rangenumber"
  123130. },
  123131. {
  123132. "example": "4",
  123133. "require": "m",
  123134. "repeat": "n",
  123135. "type": "rangenumber"
  123136. },
  123137. {
  123138. "example": "FALSE()",
  123139. "require": "m",
  123140. "repeat": "n",
  123141. "type": "rangeall"
  123142. }
  123143. ]
  123144. },
  123145. {
  123146. "n": "NEGBINOM_DIST",
  123147. "t": 1,
  123148. "m": [
  123149. 4,
  123150. 4
  123151. ],
  123152. "p": [
  123153. {
  123154. "example": "4",
  123155. "require": "m",
  123156. "repeat": "n",
  123157. "type": "rangenumber"
  123158. },
  123159. {
  123160. "example": "2",
  123161. "require": "m",
  123162. "repeat": "n",
  123163. "type": "rangenumber"
  123164. },
  123165. {
  123166. "example": "0.1",
  123167. "require": "m",
  123168. "repeat": "n",
  123169. "type": "rangenumber"
  123170. },
  123171. {
  123172. "example": "FALSE()",
  123173. "require": "m",
  123174. "repeat": "n",
  123175. "type": "rangeall"
  123176. }
  123177. ]
  123178. },
  123179. {
  123180. "n": "MINA",
  123181. "t": 1,
  123182. "m": [
  123183. 1,
  123184. 255
  123185. ],
  123186. "p": [
  123187. {
  123188. "example": "A2:A100",
  123189. "require": "m",
  123190. "repeat": "n",
  123191. "type": "rangenumber"
  123192. },
  123193. {
  123194. "example": "B2:B100",
  123195. "require": "o",
  123196. "repeat": "y",
  123197. "type": "rangenumber"
  123198. }
  123199. ]
  123200. },
  123201. {
  123202. "n": "MIN",
  123203. "t": 1,
  123204. "m": [
  123205. 1,
  123206. 255
  123207. ],
  123208. "p": [
  123209. {
  123210. "example": "A2:A100",
  123211. "require": "m",
  123212. "repeat": "n",
  123213. "type": "rangenumber"
  123214. },
  123215. {
  123216. "example": "B2:B100",
  123217. "require": "o",
  123218. "repeat": "y",
  123219. "type": "rangenumber"
  123220. }
  123221. ]
  123222. },
  123223. {
  123224. "n": "MEDIAN",
  123225. "t": 1,
  123226. "m": [
  123227. 1,
  123228. 255
  123229. ],
  123230. "p": [
  123231. {
  123232. "example": "A2:A100",
  123233. "require": "m",
  123234. "repeat": "n",
  123235. "type": "rangenumber"
  123236. },
  123237. {
  123238. "example": "B2:B100",
  123239. "require": "o",
  123240. "repeat": "y",
  123241. "type": "rangenumber"
  123242. }
  123243. ]
  123244. },
  123245. {
  123246. "n": "MAXA",
  123247. "t": 1,
  123248. "m": [
  123249. 1,
  123250. 255
  123251. ],
  123252. "p": [
  123253. {
  123254. "example": "A2:A100",
  123255. "require": "m",
  123256. "repeat": "n",
  123257. "type": "rangenumber"
  123258. },
  123259. {
  123260. "example": "B2:B100",
  123261. "require": "o",
  123262. "repeat": "y",
  123263. "type": "rangenumber"
  123264. }
  123265. ]
  123266. },
  123267. {
  123268. "n": "MAX",
  123269. "t": 1,
  123270. "m": [
  123271. 1,
  123272. 255
  123273. ],
  123274. "p": [
  123275. {
  123276. "example": "A2:A100",
  123277. "require": "m",
  123278. "repeat": "n",
  123279. "type": "rangenumber"
  123280. },
  123281. {
  123282. "example": "B2:B100",
  123283. "require": "o",
  123284. "repeat": "y",
  123285. "type": "rangenumber"
  123286. }
  123287. ]
  123288. },
  123289. {
  123290. "n": "LOGNORM_INV",
  123291. "t": 1,
  123292. "m": [
  123293. 3,
  123294. 3
  123295. ],
  123296. "p": [
  123297. {
  123298. "example": "0.4",
  123299. "require": "m",
  123300. "repeat": "n",
  123301. "type": "rangenumber"
  123302. },
  123303. {
  123304. "example": "4",
  123305. "require": "m",
  123306. "repeat": "n",
  123307. "type": "rangenumber"
  123308. },
  123309. {
  123310. "example": "6",
  123311. "require": "m",
  123312. "repeat": "n",
  123313. "type": "rangenumber"
  123314. }
  123315. ]
  123316. },
  123317. {
  123318. "n": "LOGNORM_DIST",
  123319. "t": 1,
  123320. "m": [
  123321. 4,
  123322. 4
  123323. ],
  123324. "p": [
  123325. {
  123326. "example": "4",
  123327. "require": "m",
  123328. "repeat": "n",
  123329. "type": "rangenumber"
  123330. },
  123331. {
  123332. "example": "4",
  123333. "require": "m",
  123334. "repeat": "n",
  123335. "type": "rangenumber"
  123336. },
  123337. {
  123338. "example": "6",
  123339. "require": "m",
  123340. "repeat": "n",
  123341. "type": "rangenumber"
  123342. },
  123343. {
  123344. "example": "FALSE()",
  123345. "require": "m",
  123346. "repeat": "n",
  123347. "type": "rangeall"
  123348. }
  123349. ]
  123350. },
  123351. {
  123352. "n": "Z_TEST",
  123353. "t": 1,
  123354. "m": [
  123355. 2,
  123356. 3
  123357. ],
  123358. "p": [
  123359. {
  123360. "example": "A2:A100",
  123361. "require": "m",
  123362. "repeat": "n",
  123363. "type": "range"
  123364. },
  123365. {
  123366. "example": "B2",
  123367. "require": "m",
  123368. "repeat": "n",
  123369. "type": "rangenumber"
  123370. },
  123371. {
  123372. "example": "3",
  123373. "require": "o",
  123374. "repeat": "n",
  123375. "type": "rangenumber"
  123376. }
  123377. ]
  123378. },
  123379. {
  123380. "n": "PROB",
  123381. "t": 1,
  123382. "m": [
  123383. 3,
  123384. 4
  123385. ],
  123386. "p": [
  123387. {
  123388. "example": "A3:A6",
  123389. "require": "m",
  123390. "repeat": "n",
  123391. "type": "range"
  123392. },
  123393. {
  123394. "example": "2",
  123395. "require": "m",
  123396. "repeat": "n",
  123397. "type": "range"
  123398. },
  123399. {
  123400. "example": "3",
  123401. "require": "m",
  123402. "repeat": "n",
  123403. "type": "rangenumber"
  123404. },
  123405. {
  123406. "example": "4",
  123407. "require": "o",
  123408. "repeat": "n",
  123409. "type": "rangenumber"
  123410. }
  123411. ]
  123412. },
  123413. {
  123414. "n": "QUARTILE_EXC",
  123415. "t": 1,
  123416. "m": [
  123417. 2,
  123418. 2
  123419. ],
  123420. "p": [
  123421. {
  123422. "example": "A2:A100",
  123423. "require": "m",
  123424. "repeat": "n",
  123425. "type": "rangenumber"
  123426. },
  123427. {
  123428. "example": "3",
  123429. "require": "m",
  123430. "repeat": "n",
  123431. "type": "rangenumber"
  123432. }
  123433. ]
  123434. },
  123435. {
  123436. "n": "QUARTILE_INC",
  123437. "t": 1,
  123438. "m": [
  123439. 2,
  123440. 2
  123441. ],
  123442. "p": [
  123443. {
  123444. "example": "A2:A100",
  123445. "require": "m",
  123446. "repeat": "n",
  123447. "type": "rangenumber"
  123448. },
  123449. {
  123450. "example": "3",
  123451. "require": "m",
  123452. "repeat": "n",
  123453. "type": "rangenumber"
  123454. }
  123455. ]
  123456. },
  123457. {
  123458. "n": "POISSON_DIST",
  123459. "t": 1,
  123460. "m": [
  123461. 3,
  123462. 3
  123463. ],
  123464. "p": [
  123465. {
  123466. "example": "2",
  123467. "require": "m",
  123468. "repeat": "n",
  123469. "type": "rangenumber"
  123470. },
  123471. {
  123472. "example": "1",
  123473. "require": "m",
  123474. "repeat": "n",
  123475. "type": "rangenumber"
  123476. },
  123477. {
  123478. "example": "FALSE()",
  123479. "require": "m",
  123480. "repeat": "n",
  123481. "type": "rangeall"
  123482. }
  123483. ]
  123484. },
  123485. {
  123486. "n": "RSQ",
  123487. "t": 1,
  123488. "m": [
  123489. 2,
  123490. 2
  123491. ],
  123492. "p": [
  123493. {
  123494. "example": "A2:A100",
  123495. "require": "m",
  123496. "repeat": "n",
  123497. "type": "rangenumber"
  123498. },
  123499. {
  123500. "example": "B2:B100",
  123501. "require": "m",
  123502. "repeat": "n",
  123503. "type": "rangenumber"
  123504. }
  123505. ]
  123506. },
  123507. {
  123508. "n": "T_DIST",
  123509. "t": 1,
  123510. "m": [
  123511. 3,
  123512. 3
  123513. ],
  123514. "p": [
  123515. {
  123516. "example": "A2",
  123517. "require": "m",
  123518. "repeat": "n",
  123519. "type": "rangenumber"
  123520. },
  123521. {
  123522. "example": "30",
  123523. "require": "m",
  123524. "repeat": "n",
  123525. "type": "rangenumber"
  123526. },
  123527. {
  123528. "example": "TRUE()",
  123529. "require": "m",
  123530. "repeat": "n",
  123531. "type": "rangeall"
  123532. }
  123533. ]
  123534. },
  123535. {
  123536. "n": "T_DIST_2T",
  123537. "t": 1,
  123538. "m": [
  123539. 2,
  123540. 2
  123541. ],
  123542. "p": [
  123543. {
  123544. "example": "A2",
  123545. "require": "m",
  123546. "repeat": "n",
  123547. "type": "rangenumber"
  123548. },
  123549. {
  123550. "example": "30",
  123551. "require": "m",
  123552. "repeat": "n",
  123553. "type": "rangenumber"
  123554. }
  123555. ]
  123556. },
  123557. {
  123558. "n": "T_DIST_RT",
  123559. "t": 1,
  123560. "m": [
  123561. 2,
  123562. 2
  123563. ],
  123564. "p": [
  123565. {
  123566. "example": "A2",
  123567. "require": "m",
  123568. "repeat": "n",
  123569. "type": "rangenumber"
  123570. },
  123571. {
  123572. "example": "30",
  123573. "require": "m",
  123574. "repeat": "n",
  123575. "type": "rangenumber"
  123576. }
  123577. ]
  123578. },
  123579. {
  123580. "n": "T_INV",
  123581. "t": 1,
  123582. "m": [
  123583. 2,
  123584. 2
  123585. ],
  123586. "p": [
  123587. {
  123588. "example": "0.35",
  123589. "require": "m",
  123590. "repeat": "n",
  123591. "type": "rangenumber"
  123592. },
  123593. {
  123594. "example": "1",
  123595. "require": "m",
  123596. "repeat": "n",
  123597. "type": "rangenumber"
  123598. }
  123599. ]
  123600. },
  123601. {
  123602. "n": "T_INV_2T",
  123603. "t": 1,
  123604. "m": [
  123605. 2,
  123606. 2
  123607. ],
  123608. "p": [
  123609. {
  123610. "example": "0.35",
  123611. "require": "m",
  123612. "repeat": "n",
  123613. "type": "rangenumber"
  123614. },
  123615. {
  123616. "example": "1",
  123617. "require": "m",
  123618. "repeat": "n",
  123619. "type": "rangenumber"
  123620. }
  123621. ]
  123622. },
  123623. {
  123624. "n": "T_TEST",
  123625. "t": 1,
  123626. "m": [
  123627. 4,
  123628. 4
  123629. ],
  123630. "p": [
  123631. {
  123632. "example": "A1:A4",
  123633. "require": "m",
  123634. "repeat": "n",
  123635. "type": "rangenumber"
  123636. },
  123637. {
  123638. "example": "B1:B4",
  123639. "require": "m",
  123640. "repeat": "n",
  123641. "type": "rangenumber"
  123642. },
  123643. {
  123644. "example": "2",
  123645. "require": "m",
  123646. "repeat": "n",
  123647. "type": "rangenumber"
  123648. },
  123649. {
  123650. "example": "1",
  123651. "require": "m",
  123652. "repeat": "n",
  123653. "type": "rangenumber"
  123654. }
  123655. ]
  123656. },
  123657. {
  123658. "n": "F_DIST",
  123659. "t": 1,
  123660. "m": [
  123661. 4,
  123662. 4
  123663. ],
  123664. "p": [
  123665. {
  123666. "example": "15.35",
  123667. "require": "m",
  123668. "repeat": "n",
  123669. "type": "rangenumber"
  123670. },
  123671. {
  123672. "example": "7",
  123673. "require": "m",
  123674. "repeat": "n",
  123675. "type": "rangenumber"
  123676. },
  123677. {
  123678. "example": "6",
  123679. "require": "m",
  123680. "repeat": "n",
  123681. "type": "rangenumber"
  123682. },
  123683. {
  123684. "example": "TRUE()",
  123685. "require": "m",
  123686. "repeat": "n",
  123687. "type": "rangeall"
  123688. }
  123689. ]
  123690. },
  123691. {
  123692. "n": "F_DIST_RT",
  123693. "t": 1,
  123694. "m": [
  123695. 3,
  123696. 3
  123697. ],
  123698. "p": [
  123699. {
  123700. "example": "15.35",
  123701. "require": "m",
  123702. "repeat": "n",
  123703. "type": "rangenumber"
  123704. },
  123705. {
  123706. "example": "7",
  123707. "require": "m",
  123708. "repeat": "n",
  123709. "type": "rangenumber"
  123710. },
  123711. {
  123712. "example": "6",
  123713. "require": "m",
  123714. "repeat": "n",
  123715. "type": "rangenumber"
  123716. }
  123717. ]
  123718. },
  123719. {
  123720. "n": "VAR_P",
  123721. "t": 1,
  123722. "m": [
  123723. 1,
  123724. 255
  123725. ],
  123726. "p": [
  123727. {
  123728. "example": "1",
  123729. "require": "m",
  123730. "repeat": "n",
  123731. "type": "rangenumber"
  123732. },
  123733. {
  123734. "example": "2",
  123735. "require": "o",
  123736. "repeat": "y",
  123737. "type": "rangenumber"
  123738. }
  123739. ]
  123740. },
  123741. {
  123742. "n": "VAR_S",
  123743. "t": 1,
  123744. "m": [
  123745. 1,
  123746. 255
  123747. ],
  123748. "p": [
  123749. {
  123750. "example": "1",
  123751. "require": "m",
  123752. "repeat": "n",
  123753. "type": "rangenumber"
  123754. },
  123755. {
  123756. "example": "2",
  123757. "require": "o",
  123758. "repeat": "y",
  123759. "type": "rangenumber"
  123760. }
  123761. ]
  123762. },
  123763. {
  123764. "n": "VARA",
  123765. "t": 1,
  123766. "m": [
  123767. 1,
  123768. 255
  123769. ],
  123770. "p": [
  123771. {
  123772. "example": "1",
  123773. "require": "m",
  123774. "repeat": "n",
  123775. "type": "rangenumber"
  123776. },
  123777. {
  123778. "example": "2",
  123779. "require": "o",
  123780. "repeat": "y",
  123781. "type": "rangenumber"
  123782. }
  123783. ]
  123784. },
  123785. {
  123786. "n": "VARPA",
  123787. "t": 1,
  123788. "m": [
  123789. 1,
  123790. 255
  123791. ],
  123792. "p": [
  123793. {
  123794. "example": "1",
  123795. "require": "m",
  123796. "repeat": "n",
  123797. "type": "rangenumber"
  123798. },
  123799. {
  123800. "example": "2",
  123801. "require": "o",
  123802. "repeat": "y",
  123803. "type": "rangenumber"
  123804. }
  123805. ]
  123806. },
  123807. {
  123808. "n": "STEYX",
  123809. "t": 1,
  123810. "m": [
  123811. 2,
  123812. 2
  123813. ],
  123814. "p": [
  123815. {
  123816. "example": "A2:A100",
  123817. "require": "m",
  123818. "repeat": "n",
  123819. "type": "rangenumber"
  123820. },
  123821. {
  123822. "example": "B2:B100",
  123823. "require": "m",
  123824. "repeat": "n",
  123825. "type": "rangenumber"
  123826. }
  123827. ]
  123828. },
  123829. {
  123830. "n": "STANDARDIZE",
  123831. "t": 1,
  123832. "m": [
  123833. 3,
  123834. 3
  123835. ],
  123836. "p": [
  123837. {
  123838. "example": "96",
  123839. "require": "m",
  123840. "repeat": "n",
  123841. "type": "rangenumber"
  123842. },
  123843. {
  123844. "example": "80",
  123845. "require": "m",
  123846. "repeat": "n",
  123847. "type": "rangenumber"
  123848. },
  123849. {
  123850. "example": "6.7",
  123851. "require": "m",
  123852. "repeat": "n",
  123853. "type": "rangenumber"
  123854. }
  123855. ]
  123856. },
  123857. {
  123858. "n": "SMALL",
  123859. "t": 1,
  123860. "m": [
  123861. 2,
  123862. 2
  123863. ],
  123864. "p": [
  123865. {
  123866. "example": "A2:B100",
  123867. "require": "m",
  123868. "repeat": "n",
  123869. "type": "range"
  123870. },
  123871. {
  123872. "example": "4",
  123873. "require": "m",
  123874. "repeat": "n",
  123875. "type": "rangenumber"
  123876. }
  123877. ]
  123878. },
  123879. {
  123880. "n": "SLOPE",
  123881. "t": 1,
  123882. "m": [
  123883. 2,
  123884. 2
  123885. ],
  123886. "p": [
  123887. {
  123888. "example": "A2:A100",
  123889. "require": "m",
  123890. "repeat": "n",
  123891. "type": "rangenumber"
  123892. },
  123893. {
  123894. "example": "B2:B100",
  123895. "require": "m",
  123896. "repeat": "n",
  123897. "type": "rangenumber"
  123898. }
  123899. ]
  123900. },
  123901. {
  123902. "n": "SKEW",
  123903. "t": 1,
  123904. "m": [
  123905. 1,
  123906. 255
  123907. ],
  123908. "p": [
  123909. {
  123910. "example": "1",
  123911. "require": "m",
  123912. "repeat": "n",
  123913. "type": "rangeall"
  123914. },
  123915. {
  123916. "example": "2",
  123917. "require": "o",
  123918. "repeat": "y",
  123919. "type": "rangeall"
  123920. }
  123921. ]
  123922. },
  123923. {
  123924. "n": "SKEW_P",
  123925. "t": 1,
  123926. "m": [
  123927. 1,
  123928. 255
  123929. ],
  123930. "p": [
  123931. {
  123932. "example": "1",
  123933. "require": "m",
  123934. "repeat": "n",
  123935. "type": "rangeall"
  123936. },
  123937. {
  123938. "example": "2",
  123939. "require": "o",
  123940. "repeat": "y",
  123941. "type": "rangeall"
  123942. }
  123943. ]
  123944. },
  123945. {
  123946. "n": "VLOOKUP",
  123947. "t": 2,
  123948. "m": [
  123949. 3,
  123950. 4
  123951. ],
  123952. "p": [
  123953. {
  123954. "example": "10003",
  123955. "require": "m",
  123956. "repeat": "n",
  123957. "type": "rangeall"
  123958. },
  123959. {
  123960. "example": "A2:B26",
  123961. "require": "m",
  123962. "repeat": "n",
  123963. "type": "rangeall"
  123964. },
  123965. {
  123966. "example": "2",
  123967. "require": "m",
  123968. "repeat": "n",
  123969. "type": "rangenumber"
  123970. },
  123971. {
  123972. "example": "FALSE()",
  123973. "require": "o",
  123974. "repeat": "n",
  123975. "type": "rangeall"
  123976. }
  123977. ]
  123978. },
  123979. {
  123980. "n": "HLOOKUP",
  123981. "t": 2,
  123982. "m": [
  123983. 3,
  123984. 4
  123985. ],
  123986. "p": [
  123987. {
  123988. "example": "10003",
  123989. "require": "m",
  123990. "repeat": "n",
  123991. "type": "rangeall"
  123992. },
  123993. {
  123994. "example": "A2:Z6",
  123995. "require": "m",
  123996. "repeat": "n",
  123997. "type": "rangeall"
  123998. },
  123999. {
  124000. "example": "2",
  124001. "require": "m",
  124002. "repeat": "n",
  124003. "type": "rangenumber"
  124004. },
  124005. {
  124006. "example": "FALSE()",
  124007. "require": "o",
  124008. "repeat": "n",
  124009. "type": "rangeall"
  124010. }
  124011. ]
  124012. },
  124013. {
  124014. "n": "LOOKUP",
  124015. "t": 2,
  124016. "m": [
  124017. 2,
  124018. 3
  124019. ],
  124020. "p": [
  124021. {
  124022. "example": "10003",
  124023. "require": "m",
  124024. "repeat": "n",
  124025. "type": "rangeall"
  124026. },
  124027. {
  124028. "example": "A1:A100",
  124029. "require": "m",
  124030. "repeat": "n",
  124031. "type": "rangeall"
  124032. },
  124033. {
  124034. "example": "B1:B100",
  124035. "require": "o",
  124036. "repeat": "n",
  124037. "type": "rangeall"
  124038. }
  124039. ]
  124040. },
  124041. {
  124042. "n": "ADDRESS",
  124043. "t": 2,
  124044. "m": [
  124045. 2,
  124046. 5
  124047. ],
  124048. "p": [
  124049. {
  124050. "example": "1",
  124051. "require": "m",
  124052. "repeat": "n",
  124053. "type": "rangenumber"
  124054. },
  124055. {
  124056. "example": "2",
  124057. "require": "m",
  124058. "repeat": "n",
  124059. "type": "rangenumber"
  124060. },
  124061. {
  124062. "example": "4",
  124063. "require": "o",
  124064. "repeat": "n",
  124065. "type": "rangenumber"
  124066. },
  124067. {
  124068. "example": "FALSE()",
  124069. "require": "o",
  124070. "repeat": "n",
  124071. "type": "rangeall"
  124072. },
  124073. {
  124074. "example": '"Sheet2"',
  124075. "require": "o",
  124076. "repeat": "n",
  124077. "type": "rangeall"
  124078. }
  124079. ]
  124080. },
  124081. {
  124082. "n": "INDIRECT",
  124083. "t": 2,
  124084. "m": [
  124085. 1,
  124086. 2
  124087. ],
  124088. "p": [
  124089. {
  124090. "example": '"Sheet2!"&B10',
  124091. "require": "m",
  124092. "repeat": "n",
  124093. "type": "rangeall"
  124094. },
  124095. {
  124096. "example": "FALSE()",
  124097. "require": "o",
  124098. "repeat": "n",
  124099. "type": "rangeall"
  124100. }
  124101. ]
  124102. },
  124103. {
  124104. "n": "ROW",
  124105. "t": 2,
  124106. "m": [
  124107. 0,
  124108. 1
  124109. ],
  124110. "p": [
  124111. {
  124112. "example": "A9",
  124113. "require": "o",
  124114. "repeat": "n",
  124115. "type": "rangeall"
  124116. }
  124117. ]
  124118. },
  124119. {
  124120. "n": "ROWS",
  124121. "t": 2,
  124122. "m": [
  124123. 1,
  124124. 1
  124125. ],
  124126. "p": [
  124127. {
  124128. "example": "A9:A62",
  124129. "require": "m",
  124130. "repeat": "n",
  124131. "type": "rangenumber"
  124132. }
  124133. ]
  124134. },
  124135. {
  124136. "n": "COLUMN",
  124137. "t": 2,
  124138. "m": [
  124139. 0,
  124140. 1
  124141. ],
  124142. "p": [
  124143. {
  124144. "example": "A9",
  124145. "require": "o",
  124146. "repeat": "n",
  124147. "type": "rangeall"
  124148. }
  124149. ]
  124150. },
  124151. {
  124152. "n": "COLUMNS",
  124153. "t": 2,
  124154. "m": [
  124155. 1,
  124156. 1
  124157. ],
  124158. "p": [
  124159. {
  124160. "example": "A9:W62",
  124161. "require": "m",
  124162. "repeat": "n",
  124163. "type": "rangenumber"
  124164. }
  124165. ]
  124166. },
  124167. {
  124168. "n": "OFFSET",
  124169. "t": 2,
  124170. "m": [
  124171. 3,
  124172. 5
  124173. ],
  124174. "p": [
  124175. {
  124176. "example": "A2",
  124177. "require": "m",
  124178. "repeat": "n",
  124179. "type": "range"
  124180. },
  124181. {
  124182. "example": "3",
  124183. "require": "m",
  124184. "repeat": "n",
  124185. "type": "rangenumber"
  124186. },
  124187. {
  124188. "example": "4",
  124189. "require": "m",
  124190. "repeat": "n",
  124191. "type": "rangenumber"
  124192. },
  124193. {
  124194. "example": "2",
  124195. "require": "o",
  124196. "repeat": "n",
  124197. "type": "rangenumber"
  124198. },
  124199. {
  124200. "example": "2",
  124201. "require": "o",
  124202. "repeat": "n",
  124203. "type": "rangenumber"
  124204. }
  124205. ]
  124206. },
  124207. {
  124208. "n": "MATCH",
  124209. "t": 2,
  124210. "m": [
  124211. 2,
  124212. 3
  124213. ],
  124214. "p": [
  124215. {
  124216. "example": '"Sunday"',
  124217. "require": "m",
  124218. "repeat": "n",
  124219. "type": "rangeall"
  124220. },
  124221. {
  124222. "example": "A2:A9",
  124223. "require": "m",
  124224. "repeat": "n",
  124225. "type": "range"
  124226. },
  124227. {
  124228. "example": "0",
  124229. "require": "o",
  124230. "repeat": "n",
  124231. "type": "rangenumber"
  124232. }
  124233. ]
  124234. },
  124235. {
  124236. "n": "INDEX",
  124237. "t": 2,
  124238. "m": [
  124239. 2,
  124240. 3
  124241. ],
  124242. "p": [
  124243. {
  124244. "example": "A1:C20",
  124245. "require": "m",
  124246. "repeat": "n",
  124247. "type": "range"
  124248. },
  124249. {
  124250. "example": "5",
  124251. "require": "m",
  124252. "repeat": "n",
  124253. "type": "rangenumber"
  124254. },
  124255. {
  124256. "example": "1",
  124257. "require": "m",
  124258. "repeat": "n",
  124259. "type": "rangenumber"
  124260. }
  124261. ]
  124262. },
  124263. {
  124264. "n": "GETPIVOTDATA",
  124265. "t": 2,
  124266. "m": [
  124267. 2,
  124268. 254
  124269. ],
  124270. "p": [
  124271. {
  124272. "example": '"SUM of number of units"',
  124273. "require": "m",
  124274. "repeat": "n",
  124275. "type": "rangeall"
  124276. },
  124277. {
  124278. "example": "'Pivot table'!A1",
  124279. "require": "m",
  124280. "repeat": "n",
  124281. "type": "rangeall"
  124282. },
  124283. {
  124284. "example": '"division"',
  124285. "require": "o",
  124286. "repeat": "y",
  124287. "type": "rangeall"
  124288. },
  124289. {
  124290. "example": '"east"',
  124291. "require": "o",
  124292. "repeat": "y",
  124293. "type": "rangeall"
  124294. }
  124295. ]
  124296. },
  124297. {
  124298. "n": "CHOOSE",
  124299. "t": 2,
  124300. "m": [
  124301. 2,
  124302. 255
  124303. ],
  124304. "p": [
  124305. {
  124306. "example": "2",
  124307. "require": "m",
  124308. "repeat": "n",
  124309. "type": "rangenumber"
  124310. },
  124311. {
  124312. "example": '"A"',
  124313. "require": "m",
  124314. "repeat": "n",
  124315. "type": "rangeall"
  124316. },
  124317. {
  124318. "example": '"B"',
  124319. "require": "o",
  124320. "repeat": "y",
  124321. "type": "rangeall"
  124322. }
  124323. ]
  124324. },
  124325. {
  124326. "n": "HYPERLINK",
  124327. "t": 2,
  124328. "p": [
  124329. {
  124330. "example": '"http://www.luckysheet.com/"',
  124331. "require": "m",
  124332. "repeat": "n",
  124333. "type": "rangeall"
  124334. },
  124335. {
  124336. "example": '"luckysheet"',
  124337. "require": "m",
  124338. "repeat": "n",
  124339. "type": "rangeall"
  124340. }
  124341. ]
  124342. },
  124343. {
  124344. "n": "TIME",
  124345. "t": 6,
  124346. "m": [
  124347. 3,
  124348. 3
  124349. ],
  124350. "p": [
  124351. {
  124352. "example": "11",
  124353. "require": "m",
  124354. "repeat": "n",
  124355. "type": "rangenumber"
  124356. },
  124357. {
  124358. "example": "40",
  124359. "require": "m",
  124360. "repeat": "n",
  124361. "type": "rangenumber"
  124362. },
  124363. {
  124364. "example": "59",
  124365. "require": "m",
  124366. "repeat": "n",
  124367. "type": "rangenumber"
  124368. }
  124369. ]
  124370. },
  124371. {
  124372. "n": "TIMEVALUE",
  124373. "t": 6,
  124374. "m": [
  124375. 1,
  124376. 1
  124377. ],
  124378. "p": [
  124379. {
  124380. "example": '"2:15 PM"',
  124381. "require": "m",
  124382. "repeat": "n",
  124383. "type": "rangeall"
  124384. }
  124385. ]
  124386. },
  124387. {
  124388. "n": "EOMONTH",
  124389. "t": 6,
  124390. "m": [
  124391. 2,
  124392. 2
  124393. ],
  124394. "p": [
  124395. {
  124396. "example": "DATE(1969",
  124397. "require": "m",
  124398. "repeat": "n",
  124399. "type": "rangeall"
  124400. },
  124401. {
  124402. "example": "7",
  124403. "require": "m",
  124404. "repeat": "n",
  124405. "type": "rangenumber"
  124406. }
  124407. ]
  124408. },
  124409. {
  124410. "n": "EDATE",
  124411. "t": 6,
  124412. "m": [
  124413. 2,
  124414. 2
  124415. ],
  124416. "p": [
  124417. {
  124418. "example": "DATE(1969",
  124419. "require": "m",
  124420. "repeat": "n",
  124421. "type": "rangeall"
  124422. },
  124423. {
  124424. "example": "7",
  124425. "require": "m",
  124426. "repeat": "n",
  124427. "type": "rangenumber"
  124428. }
  124429. ]
  124430. },
  124431. {
  124432. "n": "SECOND",
  124433. "t": 6,
  124434. "m": [
  124435. 1,
  124436. 1
  124437. ],
  124438. "p": [
  124439. {
  124440. "example": "TIME(11",
  124441. "require": "m",
  124442. "repeat": "n",
  124443. "type": "rangeall"
  124444. }
  124445. ]
  124446. },
  124447. {
  124448. "n": "MINUTE",
  124449. "t": 6,
  124450. "m": [
  124451. 1,
  124452. 1
  124453. ],
  124454. "p": [
  124455. {
  124456. "example": "TIME(11",
  124457. "require": "m",
  124458. "repeat": "n",
  124459. "type": "rangeall"
  124460. }
  124461. ]
  124462. },
  124463. {
  124464. "n": "HOUR",
  124465. "t": 6,
  124466. "m": [
  124467. 1,
  124468. 1
  124469. ],
  124470. "p": [
  124471. {
  124472. "example": "TIME(11",
  124473. "require": "m",
  124474. "repeat": "n",
  124475. "type": "rangeall"
  124476. }
  124477. ]
  124478. },
  124479. {
  124480. "n": "NOW",
  124481. "t": 6,
  124482. "m": [
  124483. 0,
  124484. 0
  124485. ],
  124486. "p": []
  124487. },
  124488. {
  124489. "n": "NETWORKDAYS",
  124490. "t": 6,
  124491. "m": [
  124492. 2,
  124493. 3
  124494. ],
  124495. "p": [
  124496. {
  124497. "example": "DATE(1969",
  124498. "require": "m",
  124499. "repeat": "n",
  124500. "type": "rangeall"
  124501. },
  124502. {
  124503. "example": "7",
  124504. "require": "m",
  124505. "repeat": "n",
  124506. "type": "rangeall"
  124507. },
  124508. {
  124509. "example": "16)",
  124510. "require": "o",
  124511. "repeat": "n",
  124512. "type": "rangeall"
  124513. }
  124514. ]
  124515. },
  124516. {
  124517. "n": "NETWORKDAYS_INTL",
  124518. "t": 6,
  124519. "m": [
  124520. 2,
  124521. 4
  124522. ],
  124523. "p": [
  124524. {
  124525. "example": "DATE(1969",
  124526. "require": "m",
  124527. "repeat": "n",
  124528. "type": "rangeall"
  124529. },
  124530. {
  124531. "example": "7",
  124532. "require": "m",
  124533. "repeat": "n",
  124534. "type": "rangeall"
  124535. },
  124536. {
  124537. "example": "16)",
  124538. "require": "o",
  124539. "repeat": "n",
  124540. "type": "rangeall"
  124541. },
  124542. {
  124543. "example": "DATE(1969",
  124544. "require": "o",
  124545. "repeat": "n",
  124546. "type": "rangeall"
  124547. }
  124548. ]
  124549. },
  124550. {
  124551. "n": "ISOWEEKNUM",
  124552. "t": 6,
  124553. "m": [
  124554. 1,
  124555. 1
  124556. ],
  124557. "p": [
  124558. {
  124559. "example": "DATE(1969",
  124560. "require": "m",
  124561. "repeat": "n",
  124562. "type": "rangeall"
  124563. }
  124564. ]
  124565. },
  124566. {
  124567. "n": "WEEKNUM",
  124568. "t": 6,
  124569. "m": [
  124570. 1,
  124571. 2
  124572. ],
  124573. "p": [
  124574. {
  124575. "example": "DATE(1969",
  124576. "require": "m",
  124577. "repeat": "n",
  124578. "type": "rangeall"
  124579. },
  124580. {
  124581. "example": "7",
  124582. "require": "o",
  124583. "repeat": "n",
  124584. "type": "rangenumber"
  124585. }
  124586. ]
  124587. },
  124588. {
  124589. "n": "WEEKDAY",
  124590. "t": 6,
  124591. "m": [
  124592. 1,
  124593. 2
  124594. ],
  124595. "p": [
  124596. {
  124597. "example": "DATE(1969",
  124598. "require": "m",
  124599. "repeat": "n",
  124600. "type": "rangeall"
  124601. },
  124602. {
  124603. "example": "7",
  124604. "require": "o",
  124605. "repeat": "n",
  124606. "type": "rangenumber"
  124607. }
  124608. ]
  124609. },
  124610. {
  124611. "n": "DAY",
  124612. "t": 6,
  124613. "m": [
  124614. 1,
  124615. 1
  124616. ],
  124617. "p": [
  124618. {
  124619. "example": "DATE(1969",
  124620. "require": "m",
  124621. "repeat": "n",
  124622. "type": "rangeall"
  124623. }
  124624. ]
  124625. },
  124626. {
  124627. "n": "DAYS",
  124628. "t": 6,
  124629. "m": [
  124630. 2,
  124631. 2
  124632. ],
  124633. "p": [
  124634. {
  124635. "example": "2011-3-15",
  124636. "require": "m",
  124637. "repeat": "n",
  124638. "type": "rangeall"
  124639. },
  124640. {
  124641. "example": "2011-2-1",
  124642. "require": "m",
  124643. "repeat": "n",
  124644. "type": "rangeall"
  124645. }
  124646. ]
  124647. },
  124648. {
  124649. "n": "DAYS360",
  124650. "t": 6,
  124651. "m": [
  124652. 2,
  124653. 3
  124654. ],
  124655. "p": [
  124656. {
  124657. "example": "DATE(1969",
  124658. "require": "m",
  124659. "repeat": "n",
  124660. "type": "rangeall"
  124661. },
  124662. {
  124663. "example": "7",
  124664. "require": "m",
  124665. "repeat": "n",
  124666. "type": "rangeall"
  124667. },
  124668. {
  124669. "example": "FALSE()",
  124670. "require": "o",
  124671. "repeat": "n",
  124672. "type": "rangeall"
  124673. }
  124674. ]
  124675. },
  124676. {
  124677. "n": "DATE",
  124678. "t": 6,
  124679. "m": [
  124680. 3,
  124681. 3
  124682. ],
  124683. "p": [
  124684. {
  124685. "example": "1969",
  124686. "require": "m",
  124687. "repeat": "n",
  124688. "type": "rangenumber"
  124689. },
  124690. {
  124691. "example": "7",
  124692. "require": "m",
  124693. "repeat": "n",
  124694. "type": "rangenumber"
  124695. },
  124696. {
  124697. "example": "20",
  124698. "require": "m",
  124699. "repeat": "n",
  124700. "type": "rangenumber"
  124701. }
  124702. ]
  124703. },
  124704. {
  124705. "n": "DATEVALUE",
  124706. "t": 6,
  124707. "m": [
  124708. 1,
  124709. 1
  124710. ],
  124711. "p": [
  124712. {
  124713. "example": '"1969-7-20"',
  124714. "require": "m",
  124715. "repeat": "n",
  124716. "type": "rangeall"
  124717. }
  124718. ]
  124719. },
  124720. {
  124721. "n": "DATEDIF",
  124722. "t": 6,
  124723. "m": [
  124724. 3,
  124725. 3
  124726. ],
  124727. "p": [
  124728. {
  124729. "example": "DATE(1969",
  124730. "require": "m",
  124731. "repeat": "n",
  124732. "type": "rangeall"
  124733. },
  124734. {
  124735. "example": "7",
  124736. "require": "m",
  124737. "repeat": "n",
  124738. "type": "rangeall"
  124739. },
  124740. {
  124741. "example": "16)",
  124742. "require": "m",
  124743. "repeat": "n",
  124744. "type": "rangeall"
  124745. }
  124746. ]
  124747. },
  124748. {
  124749. "n": "WORKDAY",
  124750. "t": 6,
  124751. "m": [
  124752. 2,
  124753. 3
  124754. ],
  124755. "p": [
  124756. {
  124757. "example": "DATE(1969",
  124758. "require": "m",
  124759. "repeat": "n",
  124760. "type": "rangeall"
  124761. },
  124762. {
  124763. "example": "7",
  124764. "require": "m",
  124765. "repeat": "n",
  124766. "type": "rangenumber"
  124767. },
  124768. {
  124769. "example": "16)",
  124770. "require": "o",
  124771. "repeat": "n",
  124772. "type": "rangeall"
  124773. }
  124774. ]
  124775. },
  124776. {
  124777. "n": "WORKDAY_INTL",
  124778. "t": 6,
  124779. "m": [
  124780. 2,
  124781. 4
  124782. ],
  124783. "p": [
  124784. {
  124785. "example": "DATE(1969",
  124786. "require": "m",
  124787. "repeat": "n",
  124788. "type": "rangeall"
  124789. },
  124790. {
  124791. "example": "7",
  124792. "require": "m",
  124793. "repeat": "n",
  124794. "type": "rangenumber"
  124795. },
  124796. {
  124797. "example": "16)",
  124798. "require": "o",
  124799. "repeat": "n",
  124800. "type": "rangeall"
  124801. },
  124802. {
  124803. "example": "DATE(1969",
  124804. "require": "o",
  124805. "repeat": "n",
  124806. "type": "rangeall"
  124807. }
  124808. ]
  124809. },
  124810. {
  124811. "n": "YEAR",
  124812. "t": 6,
  124813. "m": [
  124814. 1,
  124815. 1
  124816. ],
  124817. "p": [
  124818. {
  124819. "example": "DATE(1969",
  124820. "require": "m",
  124821. "repeat": "n",
  124822. "type": "rangeall"
  124823. }
  124824. ]
  124825. },
  124826. {
  124827. "n": "YEARFRAC",
  124828. "t": 6,
  124829. "m": [
  124830. 2,
  124831. 3
  124832. ],
  124833. "p": [
  124834. {
  124835. "example": "DATE(1969",
  124836. "require": "m",
  124837. "repeat": "n",
  124838. "type": "rangeall"
  124839. },
  124840. {
  124841. "example": "7",
  124842. "require": "m",
  124843. "repeat": "n",
  124844. "type": "rangeall"
  124845. },
  124846. {
  124847. "example": "16)",
  124848. "require": "o",
  124849. "repeat": "n",
  124850. "type": "rangenumber"
  124851. }
  124852. ]
  124853. },
  124854. {
  124855. "n": "TODAY",
  124856. "t": 6,
  124857. "m": [
  124858. 0,
  124859. 0
  124860. ],
  124861. "p": []
  124862. },
  124863. {
  124864. "n": "MONTH",
  124865. "t": 6,
  124866. "m": [
  124867. 1,
  124868. 1
  124869. ],
  124870. "p": [
  124871. {
  124872. "example": "DATE(1969",
  124873. "require": "m",
  124874. "repeat": "n",
  124875. "type": "rangeall"
  124876. }
  124877. ]
  124878. },
  124879. {
  124880. "n": "EFFECT",
  124881. "t": 8,
  124882. "m": [
  124883. 2,
  124884. 2
  124885. ],
  124886. "p": [
  124887. {
  124888. "example": "0.99",
  124889. "require": "m",
  124890. "repeat": "n",
  124891. "type": "rangenumber"
  124892. },
  124893. {
  124894. "example": "12",
  124895. "require": "m",
  124896. "repeat": "n",
  124897. "type": "rangenumber"
  124898. }
  124899. ]
  124900. },
  124901. {
  124902. "n": "DOLLAR",
  124903. "t": 12,
  124904. "m": [
  124905. 1,
  124906. 2
  124907. ],
  124908. "p": [
  124909. {
  124910. "example": "1.2351",
  124911. "require": "m",
  124912. "repeat": "n",
  124913. "type": "rangenumber"
  124914. },
  124915. {
  124916. "example": "4",
  124917. "require": "m",
  124918. "repeat": "n",
  124919. "type": "rangenumber"
  124920. }
  124921. ]
  124922. },
  124923. {
  124924. "n": "DOLLARDE",
  124925. "t": 8,
  124926. "m": [
  124927. 2,
  124928. 2
  124929. ],
  124930. "p": [
  124931. {
  124932. "example": "100.10",
  124933. "require": "m",
  124934. "repeat": "n",
  124935. "type": "rangenumber"
  124936. },
  124937. {
  124938. "example": "32",
  124939. "require": "m",
  124940. "repeat": "n",
  124941. "type": "rangenumber"
  124942. }
  124943. ]
  124944. },
  124945. {
  124946. "n": "DOLLARFR",
  124947. "t": 8,
  124948. "m": [
  124949. 2,
  124950. 2
  124951. ],
  124952. "p": [
  124953. {
  124954. "example": "100.125",
  124955. "require": "m",
  124956. "repeat": "n",
  124957. "type": "rangenumber"
  124958. },
  124959. {
  124960. "example": "32",
  124961. "require": "m",
  124962. "repeat": "n",
  124963. "type": "rangenumber"
  124964. }
  124965. ]
  124966. },
  124967. {
  124968. "n": "DB",
  124969. "t": 8,
  124970. "m": [
  124971. 4,
  124972. 5
  124973. ],
  124974. "p": [
  124975. {
  124976. "example": "100",
  124977. "require": "m",
  124978. "repeat": "n",
  124979. "type": "rangenumber"
  124980. },
  124981. {
  124982. "example": "50",
  124983. "require": "m",
  124984. "repeat": "n",
  124985. "type": "rangenumber"
  124986. },
  124987. {
  124988. "example": "10",
  124989. "require": "m",
  124990. "repeat": "n",
  124991. "type": "rangenumber"
  124992. },
  124993. {
  124994. "example": "2",
  124995. "require": "m",
  124996. "repeat": "n",
  124997. "type": "rangenumber"
  124998. },
  124999. {
  125000. "example": "10",
  125001. "require": "m",
  125002. "repeat": "n",
  125003. "type": "rangenumber"
  125004. }
  125005. ]
  125006. },
  125007. {
  125008. "n": "DDB",
  125009. "t": 8,
  125010. "m": [
  125011. 4,
  125012. 5
  125013. ],
  125014. "p": [
  125015. {
  125016. "example": "100",
  125017. "require": "m",
  125018. "repeat": "n",
  125019. "type": "rangenumber"
  125020. },
  125021. {
  125022. "example": "50",
  125023. "require": "m",
  125024. "repeat": "n",
  125025. "type": "rangenumber"
  125026. },
  125027. {
  125028. "example": "10",
  125029. "require": "m",
  125030. "repeat": "n",
  125031. "type": "rangenumber"
  125032. },
  125033. {
  125034. "example": "2",
  125035. "require": "m",
  125036. "repeat": "n",
  125037. "type": "rangenumber"
  125038. },
  125039. {
  125040. "example": "2.25",
  125041. "require": "m",
  125042. "repeat": "n",
  125043. "type": "rangenumber"
  125044. }
  125045. ]
  125046. },
  125047. {
  125048. "n": "RATE",
  125049. "t": 8,
  125050. "m": [
  125051. 3,
  125052. 6
  125053. ],
  125054. "p": [
  125055. {
  125056. "example": "12",
  125057. "require": "m",
  125058. "repeat": "n",
  125059. "type": "rangenumber"
  125060. },
  125061. {
  125062. "example": "-100",
  125063. "require": "m",
  125064. "repeat": "n",
  125065. "type": "rangenumber"
  125066. },
  125067. {
  125068. "example": "400",
  125069. "require": "m",
  125070. "repeat": "n",
  125071. "type": "rangenumber"
  125072. },
  125073. {
  125074. "example": "0",
  125075. "require": "o",
  125076. "repeat": "n",
  125077. "type": "rangenumber"
  125078. },
  125079. {
  125080. "example": "0",
  125081. "require": "o",
  125082. "repeat": "n",
  125083. "type": "rangenumber"
  125084. },
  125085. {
  125086. "example": "0.1",
  125087. "require": "o",
  125088. "repeat": "n",
  125089. "type": "rangenumber"
  125090. }
  125091. ]
  125092. },
  125093. {
  125094. "n": "CUMPRINC",
  125095. "t": 8,
  125096. "m": [
  125097. 6,
  125098. 6
  125099. ],
  125100. "p": [
  125101. {
  125102. "example": "0.12",
  125103. "require": "m",
  125104. "repeat": "n",
  125105. "type": "rangenumber"
  125106. },
  125107. {
  125108. "example": "12",
  125109. "require": "m",
  125110. "repeat": "n",
  125111. "type": "rangenumber"
  125112. },
  125113. {
  125114. "example": "100",
  125115. "require": "m",
  125116. "repeat": "n",
  125117. "type": "rangenumber"
  125118. },
  125119. {
  125120. "example": "1",
  125121. "require": "m",
  125122. "repeat": "n",
  125123. "type": "rangenumber"
  125124. },
  125125. {
  125126. "example": "5",
  125127. "require": "m",
  125128. "repeat": "n",
  125129. "type": "rangenumber"
  125130. },
  125131. {
  125132. "example": "0",
  125133. "require": "m",
  125134. "repeat": "n",
  125135. "type": "rangenumber"
  125136. }
  125137. ]
  125138. },
  125139. {
  125140. "n": "COUPNUM",
  125141. "t": 8,
  125142. "m": [
  125143. 3,
  125144. 4
  125145. ],
  125146. "p": [
  125147. {
  125148. "example": "DATE(2010",
  125149. "require": "m",
  125150. "repeat": "n",
  125151. "type": "rangeall"
  125152. },
  125153. {
  125154. "example": "02",
  125155. "require": "m",
  125156. "repeat": "n",
  125157. "type": "rangeall"
  125158. },
  125159. {
  125160. "example": "1",
  125161. "require": "m",
  125162. "repeat": "n",
  125163. "type": "rangenumber"
  125164. },
  125165. {
  125166. "example": "0",
  125167. "require": "o",
  125168. "repeat": "n",
  125169. "type": "rangenumber"
  125170. }
  125171. ]
  125172. },
  125173. {
  125174. "n": "SYD",
  125175. "t": 8,
  125176. "m": [
  125177. 4,
  125178. 4
  125179. ],
  125180. "p": [
  125181. {
  125182. "example": "100",
  125183. "require": "m",
  125184. "repeat": "n",
  125185. "type": "rangenumber"
  125186. },
  125187. {
  125188. "example": "50",
  125189. "require": "m",
  125190. "repeat": "n",
  125191. "type": "rangenumber"
  125192. },
  125193. {
  125194. "example": "10",
  125195. "require": "m",
  125196. "repeat": "n",
  125197. "type": "rangenumber"
  125198. },
  125199. {
  125200. "example": "2",
  125201. "require": "m",
  125202. "repeat": "n",
  125203. "type": "rangenumber"
  125204. }
  125205. ]
  125206. },
  125207. {
  125208. "n": "TBILLEQ",
  125209. "t": 8,
  125210. "m": [
  125211. 3,
  125212. 3
  125213. ],
  125214. "p": [
  125215. {
  125216. "example": "DATE(2010",
  125217. "require": "m",
  125218. "repeat": "n",
  125219. "type": "rangeall"
  125220. },
  125221. {
  125222. "example": "1",
  125223. "require": "m",
  125224. "repeat": "n",
  125225. "type": "rangeall"
  125226. },
  125227. {
  125228. "example": "2)",
  125229. "require": "m",
  125230. "repeat": "n",
  125231. "type": "rangenumber"
  125232. }
  125233. ]
  125234. },
  125235. {
  125236. "n": "TBILLYIELD",
  125237. "t": 8,
  125238. "m": [
  125239. 3,
  125240. 3
  125241. ],
  125242. "p": [
  125243. {
  125244. "example": "DATE(2010",
  125245. "require": "m",
  125246. "repeat": "n",
  125247. "type": "rangeall"
  125248. },
  125249. {
  125250. "example": "DATE(2010",
  125251. "require": "m",
  125252. "repeat": "n",
  125253. "type": "rangeall"
  125254. },
  125255. {
  125256. "example": "95",
  125257. "require": "m",
  125258. "repeat": "n",
  125259. "type": "rangenumber"
  125260. }
  125261. ]
  125262. },
  125263. {
  125264. "n": "TBILLPRICE",
  125265. "t": 8,
  125266. "m": [
  125267. 3,
  125268. 3
  125269. ],
  125270. "p": [
  125271. {
  125272. "example": "DATE(2010",
  125273. "require": "m",
  125274. "repeat": "n",
  125275. "type": "rangeall"
  125276. },
  125277. {
  125278. "example": "DATE(2010",
  125279. "require": "m",
  125280. "repeat": "n",
  125281. "type": "rangeall"
  125282. },
  125283. {
  125284. "example": "0.09",
  125285. "require": "m",
  125286. "repeat": "n",
  125287. "type": "rangenumber"
  125288. }
  125289. ]
  125290. },
  125291. {
  125292. "n": "PV",
  125293. "t": 8,
  125294. "m": [
  125295. 3,
  125296. 5
  125297. ],
  125298. "p": [
  125299. {
  125300. "example": "2",
  125301. "require": "m",
  125302. "repeat": "n",
  125303. "type": "rangenumber"
  125304. },
  125305. {
  125306. "example": "12",
  125307. "require": "m",
  125308. "repeat": "n",
  125309. "type": "rangenumber"
  125310. },
  125311. {
  125312. "example": "100",
  125313. "require": "m",
  125314. "repeat": "n",
  125315. "type": "rangenumber"
  125316. },
  125317. {
  125318. "example": "D2",
  125319. "require": "o",
  125320. "repeat": "n",
  125321. "type": "rangenumber"
  125322. },
  125323. {
  125324. "example": "1",
  125325. "require": "o",
  125326. "repeat": "n",
  125327. "type": "rangenumber"
  125328. }
  125329. ]
  125330. },
  125331. {
  125332. "n": "ACCRINT",
  125333. "t": 8,
  125334. "m": [
  125335. 6,
  125336. 8
  125337. ],
  125338. "p": [
  125339. {
  125340. "example": "DATE(2010",
  125341. "require": "m",
  125342. "repeat": "n",
  125343. "type": "rangeall"
  125344. },
  125345. {
  125346. "example": "DATE(2010",
  125347. "require": "m",
  125348. "repeat": "n",
  125349. "type": "rangeall"
  125350. },
  125351. {
  125352. "example": "DATE(2010",
  125353. "require": "m",
  125354. "repeat": "n",
  125355. "type": "rangeall"
  125356. },
  125357. {
  125358. "example": "0.1",
  125359. "require": "m",
  125360. "repeat": "n",
  125361. "type": "rangenumber"
  125362. },
  125363. {
  125364. "example": "10000",
  125365. "require": "m",
  125366. "repeat": "n",
  125367. "type": "rangenumber"
  125368. },
  125369. {
  125370. "example": "1",
  125371. "require": "m",
  125372. "repeat": "n",
  125373. "type": "rangenumber"
  125374. },
  125375. {
  125376. "example": "0",
  125377. "require": "o",
  125378. "repeat": "n",
  125379. "type": "rangenumber"
  125380. },
  125381. {
  125382. "example": "TRUE()",
  125383. "require": "o",
  125384. "repeat": "n",
  125385. "type": "rangeall"
  125386. }
  125387. ]
  125388. },
  125389. {
  125390. "n": "ACCRINTM",
  125391. "t": 8,
  125392. "m": [
  125393. 4,
  125394. 5
  125395. ],
  125396. "p": [
  125397. {
  125398. "example": "DATE(1969",
  125399. "require": "m",
  125400. "repeat": "n",
  125401. "type": "rangeall"
  125402. },
  125403. {
  125404. "example": "DATE(1969",
  125405. "require": "m",
  125406. "repeat": "n",
  125407. "type": "rangeall"
  125408. },
  125409. {
  125410. "example": "0.1",
  125411. "require": "m",
  125412. "repeat": "n",
  125413. "type": "rangenumber"
  125414. },
  125415. {
  125416. "example": "1000",
  125417. "require": "m",
  125418. "repeat": "n",
  125419. "type": "rangenumber"
  125420. },
  125421. {
  125422. "example": "12",
  125423. "require": "m",
  125424. "repeat": "n",
  125425. "type": "rangenumber"
  125426. }
  125427. ]
  125428. },
  125429. {
  125430. "n": "COUPDAYBS",
  125431. "t": 8,
  125432. "m": [
  125433. 3,
  125434. 4
  125435. ],
  125436. "p": [
  125437. {
  125438. "example": "DATE(2010",
  125439. "require": "m",
  125440. "repeat": "n",
  125441. "type": "rangeall"
  125442. },
  125443. {
  125444. "example": "DATE(2010",
  125445. "require": "m",
  125446. "repeat": "n",
  125447. "type": "rangeall"
  125448. },
  125449. {
  125450. "example": "1",
  125451. "require": "m",
  125452. "repeat": "n",
  125453. "type": "rangenumber"
  125454. },
  125455. {
  125456. "example": "0",
  125457. "require": "o",
  125458. "repeat": "n",
  125459. "type": "rangenumber"
  125460. }
  125461. ]
  125462. },
  125463. {
  125464. "n": "COUPDAYS",
  125465. "t": 8,
  125466. "m": [
  125467. 3,
  125468. 4
  125469. ],
  125470. "p": [
  125471. {
  125472. "example": "DATE(2010",
  125473. "require": "m",
  125474. "repeat": "n",
  125475. "type": "rangeall"
  125476. },
  125477. {
  125478. "example": "DATE(2010",
  125479. "require": "m",
  125480. "repeat": "n",
  125481. "type": "rangeall"
  125482. },
  125483. {
  125484. "example": "1",
  125485. "require": "m",
  125486. "repeat": "n",
  125487. "type": "rangenumber"
  125488. },
  125489. {
  125490. "example": "0",
  125491. "require": "o",
  125492. "repeat": "n",
  125493. "type": "rangenumber"
  125494. }
  125495. ]
  125496. },
  125497. {
  125498. "n": "COUPDAYSNC",
  125499. "t": 8,
  125500. "m": [
  125501. 3,
  125502. 4
  125503. ],
  125504. "p": [
  125505. {
  125506. "example": "DATE(2010",
  125507. "require": "m",
  125508. "repeat": "n",
  125509. "type": "rangeall"
  125510. },
  125511. {
  125512. "example": "DATE(2010",
  125513. "require": "m",
  125514. "repeat": "n",
  125515. "type": "rangeall"
  125516. },
  125517. {
  125518. "example": "1",
  125519. "require": "m",
  125520. "repeat": "n",
  125521. "type": "rangenumber"
  125522. },
  125523. {
  125524. "example": "0",
  125525. "require": "o",
  125526. "repeat": "n",
  125527. "type": "rangenumber"
  125528. }
  125529. ]
  125530. },
  125531. {
  125532. "n": "COUPNCD",
  125533. "t": 8,
  125534. "m": [
  125535. 3,
  125536. 4
  125537. ],
  125538. "p": [
  125539. {
  125540. "example": "DATE(2010",
  125541. "require": "m",
  125542. "repeat": "n",
  125543. "type": "rangeall"
  125544. },
  125545. {
  125546. "example": "DATE(2010",
  125547. "require": "m",
  125548. "repeat": "n",
  125549. "type": "rangeall"
  125550. },
  125551. {
  125552. "example": "01)",
  125553. "require": "m",
  125554. "repeat": "n",
  125555. "type": "rangenumber"
  125556. },
  125557. {
  125558. "example": "DATE(2019",
  125559. "require": "o",
  125560. "repeat": "n",
  125561. "type": "rangenumber"
  125562. }
  125563. ]
  125564. },
  125565. {
  125566. "n": "COUPPCD",
  125567. "t": 8,
  125568. "m": [
  125569. 3,
  125570. 4
  125571. ],
  125572. "p": [
  125573. {
  125574. "example": "DATE(2010",
  125575. "require": "m",
  125576. "repeat": "n",
  125577. "type": "rangeall"
  125578. },
  125579. {
  125580. "example": "DATE(2010",
  125581. "require": "m",
  125582. "repeat": "n",
  125583. "type": "rangeall"
  125584. },
  125585. {
  125586. "example": "01)",
  125587. "require": "m",
  125588. "repeat": "n",
  125589. "type": "rangenumber"
  125590. },
  125591. {
  125592. "example": "DATE(2019",
  125593. "require": "o",
  125594. "repeat": "n",
  125595. "type": "rangenumber"
  125596. }
  125597. ]
  125598. },
  125599. {
  125600. "n": "FV",
  125601. "t": 8,
  125602. "m": [
  125603. 3,
  125604. 5
  125605. ],
  125606. "p": [
  125607. {
  125608. "example": "0.12",
  125609. "require": "m",
  125610. "repeat": "n",
  125611. "type": "rangenumber"
  125612. },
  125613. {
  125614. "example": "12",
  125615. "require": "m",
  125616. "repeat": "n",
  125617. "type": "rangenumber"
  125618. },
  125619. {
  125620. "example": "100",
  125621. "require": "m",
  125622. "repeat": "n",
  125623. "type": "rangenumber"
  125624. },
  125625. {
  125626. "example": "400",
  125627. "require": "m",
  125628. "repeat": "n",
  125629. "type": "rangenumber"
  125630. },
  125631. {
  125632. "example": "1",
  125633. "require": "m",
  125634. "repeat": "n",
  125635. "type": "rangenumber"
  125636. }
  125637. ]
  125638. },
  125639. {
  125640. "n": "FVSCHEDULE",
  125641. "t": 8,
  125642. "m": [
  125643. 2,
  125644. 2
  125645. ],
  125646. "p": [
  125647. {
  125648. "example": "10000",
  125649. "require": "m",
  125650. "repeat": "n",
  125651. "type": "rangenumber"
  125652. },
  125653. {
  125654. "example": "A2:A100",
  125655. "require": "m",
  125656. "repeat": "n",
  125657. "type": "range"
  125658. }
  125659. ]
  125660. },
  125661. {
  125662. "n": "YIELD",
  125663. "t": 8,
  125664. "m": [
  125665. 6,
  125666. 7
  125667. ],
  125668. "p": [
  125669. {
  125670. "example": "DATE(2010",
  125671. "require": "m",
  125672. "repeat": "n",
  125673. "type": "rangeall"
  125674. },
  125675. {
  125676. "example": "DATE(2010",
  125677. "require": "m",
  125678. "repeat": "n",
  125679. "type": "rangeall"
  125680. },
  125681. {
  125682. "example": "0.057",
  125683. "require": "m",
  125684. "repeat": "n",
  125685. "type": "rangenumber"
  125686. },
  125687. {
  125688. "example": "95",
  125689. "require": "m",
  125690. "repeat": "n",
  125691. "type": "rangenumber"
  125692. },
  125693. {
  125694. "example": "100",
  125695. "require": "m",
  125696. "repeat": "n",
  125697. "type": "rangenumber"
  125698. },
  125699. {
  125700. "example": "1",
  125701. "require": "m",
  125702. "repeat": "n",
  125703. "type": "rangenumber"
  125704. },
  125705. {
  125706. "example": "0",
  125707. "require": "m",
  125708. "repeat": "n",
  125709. "type": "rangenumber"
  125710. }
  125711. ]
  125712. },
  125713. {
  125714. "n": "YIELDDISC",
  125715. "t": 8,
  125716. "m": [
  125717. 4,
  125718. 5
  125719. ],
  125720. "p": [
  125721. {
  125722. "example": "DATE(2010",
  125723. "require": "m",
  125724. "repeat": "n",
  125725. "type": "rangeall"
  125726. },
  125727. {
  125728. "example": "DATE(2010",
  125729. "require": "m",
  125730. "repeat": "n",
  125731. "type": "rangeall"
  125732. },
  125733. {
  125734. "example": "95",
  125735. "require": "m",
  125736. "repeat": "n",
  125737. "type": "rangenumber"
  125738. },
  125739. {
  125740. "example": "100",
  125741. "require": "m",
  125742. "repeat": "n",
  125743. "type": "rangenumber"
  125744. },
  125745. {
  125746. "example": "0",
  125747. "require": "m",
  125748. "repeat": "n",
  125749. "type": "rangenumber"
  125750. }
  125751. ]
  125752. },
  125753. {
  125754. "n": "NOMINAL",
  125755. "t": 8,
  125756. "m": [
  125757. 2,
  125758. 2
  125759. ],
  125760. "p": [
  125761. {
  125762. "example": "0.85",
  125763. "require": "m",
  125764. "repeat": "n",
  125765. "type": "rangenumber"
  125766. },
  125767. {
  125768. "example": "12",
  125769. "require": "m",
  125770. "repeat": "n",
  125771. "type": "rangenumber"
  125772. }
  125773. ]
  125774. },
  125775. {
  125776. "n": "XIRR",
  125777. "t": 8,
  125778. "m": [
  125779. 2,
  125780. 3
  125781. ],
  125782. "p": [
  125783. {
  125784. "example": "B2:B25",
  125785. "require": "m",
  125786. "repeat": "n",
  125787. "type": "range"
  125788. },
  125789. {
  125790. "example": "C2:C25",
  125791. "require": "m",
  125792. "repeat": "n",
  125793. "type": "range"
  125794. },
  125795. {
  125796. "example": "250",
  125797. "require": "o",
  125798. "repeat": "n",
  125799. "type": "rangenumber"
  125800. }
  125801. ]
  125802. },
  125803. {
  125804. "n": "MIRR",
  125805. "t": 8,
  125806. "m": [
  125807. 3,
  125808. 3
  125809. ],
  125810. "p": [
  125811. {
  125812. "example": "A2:A25",
  125813. "require": "m",
  125814. "repeat": "n",
  125815. "type": "range"
  125816. },
  125817. {
  125818. "example": "0.1",
  125819. "require": "m",
  125820. "repeat": "n",
  125821. "type": "rangenumber"
  125822. },
  125823. {
  125824. "example": "0.12",
  125825. "require": "m",
  125826. "repeat": "n",
  125827. "type": "rangenumber"
  125828. }
  125829. ]
  125830. },
  125831. {
  125832. "n": "IRR",
  125833. "t": 8,
  125834. "m": [
  125835. 1,
  125836. 2
  125837. ],
  125838. "p": [
  125839. {
  125840. "example": "A2:A25",
  125841. "require": "m",
  125842. "repeat": "n",
  125843. "type": "range"
  125844. },
  125845. {
  125846. "example": "200",
  125847. "require": "o",
  125848. "repeat": "n",
  125849. "type": "rangenumber"
  125850. }
  125851. ]
  125852. },
  125853. {
  125854. "n": "NPV",
  125855. "t": 8,
  125856. "m": [
  125857. 2,
  125858. 255
  125859. ],
  125860. "p": [
  125861. {
  125862. "example": "0.1",
  125863. "require": "m",
  125864. "repeat": "n",
  125865. "type": "rangenumber"
  125866. },
  125867. {
  125868. "example": "200",
  125869. "require": "m",
  125870. "repeat": "n",
  125871. "type": "rangeall"
  125872. },
  125873. {
  125874. "example": "250",
  125875. "require": "o",
  125876. "repeat": "y",
  125877. "type": "rangeall"
  125878. }
  125879. ]
  125880. },
  125881. {
  125882. "n": "XNPV",
  125883. "t": 8,
  125884. "m": [
  125885. 3,
  125886. 3
  125887. ],
  125888. "p": [
  125889. {
  125890. "example": "A2",
  125891. "require": "m",
  125892. "repeat": "n",
  125893. "type": "rangenumber"
  125894. },
  125895. {
  125896. "example": "B2:B25",
  125897. "require": "m",
  125898. "repeat": "n",
  125899. "type": "range"
  125900. },
  125901. {
  125902. "example": "C2:C25",
  125903. "require": "m",
  125904. "repeat": "n",
  125905. "type": "range"
  125906. }
  125907. ]
  125908. },
  125909. {
  125910. "n": "CUMIPMT",
  125911. "t": 8,
  125912. "m": [
  125913. 6,
  125914. 6
  125915. ],
  125916. "p": [
  125917. {
  125918. "example": "0.12",
  125919. "require": "m",
  125920. "repeat": "n",
  125921. "type": "rangenumber"
  125922. },
  125923. {
  125924. "example": "12",
  125925. "require": "m",
  125926. "repeat": "n",
  125927. "type": "rangenumber"
  125928. },
  125929. {
  125930. "example": "100",
  125931. "require": "m",
  125932. "repeat": "n",
  125933. "type": "rangenumber"
  125934. },
  125935. {
  125936. "example": "1",
  125937. "require": "m",
  125938. "repeat": "n",
  125939. "type": "rangenumber"
  125940. },
  125941. {
  125942. "example": "5",
  125943. "require": "m",
  125944. "repeat": "n",
  125945. "type": "rangenumber"
  125946. },
  125947. {
  125948. "example": "0",
  125949. "require": "m",
  125950. "repeat": "n",
  125951. "type": "rangenumber"
  125952. }
  125953. ]
  125954. },
  125955. {
  125956. "n": "PMT",
  125957. "t": 8,
  125958. "m": [
  125959. 3,
  125960. 5
  125961. ],
  125962. "p": [
  125963. {
  125964. "example": "0.08",
  125965. "require": "m",
  125966. "repeat": "n",
  125967. "type": "rangenumber"
  125968. },
  125969. {
  125970. "example": "12",
  125971. "require": "m",
  125972. "repeat": "n",
  125973. "type": "rangenumber"
  125974. },
  125975. {
  125976. "example": " 100000",
  125977. "require": "m",
  125978. "repeat": "n",
  125979. "type": "rangenumber"
  125980. },
  125981. {
  125982. "example": "D2",
  125983. "require": "m",
  125984. "repeat": "n",
  125985. "type": "rangenumber"
  125986. },
  125987. {
  125988. "example": "1",
  125989. "require": "m",
  125990. "repeat": "n",
  125991. "type": "rangenumber"
  125992. }
  125993. ]
  125994. },
  125995. {
  125996. "n": "IPMT",
  125997. "t": 8,
  125998. "m": [
  125999. 4,
  126000. 6
  126001. ],
  126002. "p": [
  126003. {
  126004. "example": "0.1",
  126005. "require": "m",
  126006. "repeat": "n",
  126007. "type": "rangenumber"
  126008. },
  126009. {
  126010. "example": "1",
  126011. "require": "m",
  126012. "repeat": "n",
  126013. "type": "rangenumber"
  126014. },
  126015. {
  126016. "example": "12",
  126017. "require": "m",
  126018. "repeat": "n",
  126019. "type": "rangenumber"
  126020. },
  126021. {
  126022. "example": "80000",
  126023. "require": "m",
  126024. "repeat": "n",
  126025. "type": "rangenumber"
  126026. },
  126027. {
  126028. "example": "E2",
  126029. "require": "m",
  126030. "repeat": "n",
  126031. "type": "rangenumber"
  126032. },
  126033. {
  126034. "example": "1",
  126035. "require": "m",
  126036. "repeat": "n",
  126037. "type": "rangenumber"
  126038. }
  126039. ]
  126040. },
  126041. {
  126042. "n": "PPMT",
  126043. "t": 8,
  126044. "m": [
  126045. 4,
  126046. 6
  126047. ],
  126048. "p": [
  126049. {
  126050. "example": "0.1",
  126051. "require": "m",
  126052. "repeat": "n",
  126053. "type": "rangenumber"
  126054. },
  126055. {
  126056. "example": "1",
  126057. "require": "m",
  126058. "repeat": "n",
  126059. "type": "rangenumber"
  126060. },
  126061. {
  126062. "example": "3*12",
  126063. "require": "m",
  126064. "repeat": "n",
  126065. "type": "rangenumber"
  126066. },
  126067. {
  126068. "example": "100000",
  126069. "require": "m",
  126070. "repeat": "n",
  126071. "type": "rangenumber"
  126072. },
  126073. {
  126074. "example": "0",
  126075. "require": "o",
  126076. "repeat": "n",
  126077. "type": "rangenumber"
  126078. },
  126079. {
  126080. "example": "0",
  126081. "require": "o",
  126082. "repeat": "n",
  126083. "type": "rangenumber"
  126084. }
  126085. ]
  126086. },
  126087. {
  126088. "n": "INTRATE",
  126089. "t": 8,
  126090. "m": [
  126091. 4,
  126092. 5
  126093. ],
  126094. "p": [
  126095. {
  126096. "example": "DATE(2010",
  126097. "require": "m",
  126098. "repeat": "n",
  126099. "type": "rangeall"
  126100. },
  126101. {
  126102. "example": "DATE(2010",
  126103. "require": "m",
  126104. "repeat": "n",
  126105. "type": "rangeall"
  126106. },
  126107. {
  126108. "example": "100000",
  126109. "require": "m",
  126110. "repeat": "n",
  126111. "type": "rangenumber"
  126112. },
  126113. {
  126114. "example": "101200",
  126115. "require": "m",
  126116. "repeat": "n",
  126117. "type": "rangenumber"
  126118. },
  126119. {
  126120. "example": "12",
  126121. "require": "m",
  126122. "repeat": "n",
  126123. "type": "rangenumber"
  126124. }
  126125. ]
  126126. },
  126127. {
  126128. "n": "PRICE",
  126129. "t": 8,
  126130. "m": [
  126131. 6,
  126132. 7
  126133. ],
  126134. "p": [
  126135. {
  126136. "example": "DATE(2010",
  126137. "require": "m",
  126138. "repeat": "n",
  126139. "type": "rangeall"
  126140. },
  126141. {
  126142. "example": "DATE(2010",
  126143. "require": "m",
  126144. "repeat": "n",
  126145. "type": "rangeall"
  126146. },
  126147. {
  126148. "example": "0.057",
  126149. "require": "m",
  126150. "repeat": "n",
  126151. "type": "rangenumber"
  126152. },
  126153. {
  126154. "example": "0.065",
  126155. "require": "m",
  126156. "repeat": "n",
  126157. "type": "rangenumber"
  126158. },
  126159. {
  126160. "example": "100",
  126161. "require": "m",
  126162. "repeat": "n",
  126163. "type": "rangenumber"
  126164. },
  126165. {
  126166. "example": "1",
  126167. "require": "m",
  126168. "repeat": "n",
  126169. "type": "rangenumber"
  126170. },
  126171. {
  126172. "example": "0",
  126173. "require": "o",
  126174. "repeat": "n",
  126175. "type": "rangenumber"
  126176. }
  126177. ]
  126178. },
  126179. {
  126180. "n": "PRICEDISC",
  126181. "t": 8,
  126182. "m": [
  126183. 4,
  126184. 5
  126185. ],
  126186. "p": [
  126187. {
  126188. "example": "DATE(2010",
  126189. "require": "m",
  126190. "repeat": "n",
  126191. "type": "rangeall"
  126192. },
  126193. {
  126194. "example": "DATE(2010",
  126195. "require": "m",
  126196. "repeat": "n",
  126197. "type": "rangeall"
  126198. },
  126199. {
  126200. "example": "0.0525",
  126201. "require": "m",
  126202. "repeat": "n",
  126203. "type": "rangenumber"
  126204. },
  126205. {
  126206. "example": "100",
  126207. "require": "m",
  126208. "repeat": "n",
  126209. "type": "rangenumber"
  126210. },
  126211. {
  126212. "example": "0",
  126213. "require": "o",
  126214. "repeat": "n",
  126215. "type": "rangenumber"
  126216. }
  126217. ]
  126218. },
  126219. {
  126220. "n": "PRICEMAT",
  126221. "t": 8,
  126222. "m": [
  126223. 5,
  126224. 6
  126225. ],
  126226. "p": [
  126227. {
  126228. "example": "DATE(2010",
  126229. "require": "m",
  126230. "repeat": "n",
  126231. "type": "rangeall"
  126232. },
  126233. {
  126234. "example": "DATE(2010",
  126235. "require": "m",
  126236. "repeat": "n",
  126237. "type": "rangeall"
  126238. },
  126239. {
  126240. "example": "DATE(2010",
  126241. "require": "m",
  126242. "repeat": "n",
  126243. "type": "rangeall"
  126244. },
  126245. {
  126246. "example": "0.061",
  126247. "require": "m",
  126248. "repeat": "n",
  126249. "type": "rangenumber"
  126250. },
  126251. {
  126252. "example": "0.061",
  126253. "require": "m",
  126254. "repeat": "n",
  126255. "type": "rangenumber"
  126256. },
  126257. {
  126258. "example": "0",
  126259. "require": "o",
  126260. "repeat": "n",
  126261. "type": "rangenumber"
  126262. }
  126263. ]
  126264. },
  126265. {
  126266. "n": "RECEIVED",
  126267. "t": 8,
  126268. "m": [
  126269. 4,
  126270. 5
  126271. ],
  126272. "p": [
  126273. {
  126274. "example": "DATE(2010",
  126275. "require": "m",
  126276. "repeat": "n",
  126277. "type": "rangeall"
  126278. },
  126279. {
  126280. "example": "DATE(2010",
  126281. "require": "m",
  126282. "repeat": "n",
  126283. "type": "rangeall"
  126284. },
  126285. {
  126286. "example": "10000000",
  126287. "require": "m",
  126288. "repeat": "n",
  126289. "type": "rangenumber"
  126290. },
  126291. {
  126292. "example": "0.0575",
  126293. "require": "m",
  126294. "repeat": "n",
  126295. "type": "rangenumber"
  126296. },
  126297. {
  126298. "example": "12",
  126299. "require": "o",
  126300. "repeat": "n",
  126301. "type": "rangenumber"
  126302. }
  126303. ]
  126304. },
  126305. {
  126306. "n": "DISC",
  126307. "t": 8,
  126308. "m": [
  126309. 4,
  126310. 5
  126311. ],
  126312. "p": [
  126313. {
  126314. "example": "DATE(2010",
  126315. "require": "m",
  126316. "repeat": "n",
  126317. "type": "rangeall"
  126318. },
  126319. {
  126320. "example": "DATE(2010",
  126321. "require": "m",
  126322. "repeat": "n",
  126323. "type": "rangeall"
  126324. },
  126325. {
  126326. "example": "97.975",
  126327. "require": "m",
  126328. "repeat": "n",
  126329. "type": "rangenumber"
  126330. },
  126331. {
  126332. "example": "100",
  126333. "require": "m",
  126334. "repeat": "n",
  126335. "type": "rangenumber"
  126336. },
  126337. {
  126338. "example": "12",
  126339. "require": "o",
  126340. "repeat": "n",
  126341. "type": "rangenumber"
  126342. }
  126343. ]
  126344. },
  126345. {
  126346. "n": "NPER",
  126347. "t": 8,
  126348. "m": [
  126349. 3,
  126350. 5
  126351. ],
  126352. "p": [
  126353. {
  126354. "example": "0.12",
  126355. "require": "m",
  126356. "repeat": "n",
  126357. "type": "rangenumber"
  126358. },
  126359. {
  126360. "example": "500",
  126361. "require": "m",
  126362. "repeat": "n",
  126363. "type": "rangenumber"
  126364. },
  126365. {
  126366. "example": "40000",
  126367. "require": "m",
  126368. "repeat": "n",
  126369. "type": "rangenumber"
  126370. },
  126371. {
  126372. "example": "0",
  126373. "require": "o",
  126374. "repeat": "n",
  126375. "type": "rangenumber"
  126376. },
  126377. {
  126378. "example": "0",
  126379. "require": "o",
  126380. "repeat": "n",
  126381. "type": "rangenumber"
  126382. }
  126383. ]
  126384. },
  126385. {
  126386. "n": "SLN",
  126387. "t": 8,
  126388. "m": [
  126389. 3,
  126390. 3
  126391. ],
  126392. "p": [
  126393. {
  126394. "example": "300000",
  126395. "require": "m",
  126396. "repeat": "n",
  126397. "type": "rangenumber"
  126398. },
  126399. {
  126400. "example": "75000",
  126401. "require": "m",
  126402. "repeat": "n",
  126403. "type": "rangenumber"
  126404. },
  126405. {
  126406. "example": "10",
  126407. "require": "m",
  126408. "repeat": "n",
  126409. "type": "rangenumber"
  126410. }
  126411. ]
  126412. },
  126413. {
  126414. "n": "DURATION",
  126415. "t": 8,
  126416. "m": [
  126417. 5,
  126418. 6
  126419. ],
  126420. "p": [
  126421. {
  126422. "example": "DATE(2010",
  126423. "require": "m",
  126424. "repeat": "n",
  126425. "type": "rangeall"
  126426. },
  126427. {
  126428. "example": "DATE(2010",
  126429. "require": "m",
  126430. "repeat": "n",
  126431. "type": "rangeall"
  126432. },
  126433. {
  126434. "example": "0.08",
  126435. "require": "m",
  126436. "repeat": "n",
  126437. "type": "rangenumber"
  126438. },
  126439. {
  126440. "example": "0.09",
  126441. "require": "m",
  126442. "repeat": "n",
  126443. "type": "rangenumber"
  126444. },
  126445. {
  126446. "example": "1",
  126447. "require": "m",
  126448. "repeat": "n",
  126449. "type": "rangenumber"
  126450. },
  126451. {
  126452. "example": "0",
  126453. "require": "o",
  126454. "repeat": "n",
  126455. "type": "rangenumber"
  126456. }
  126457. ]
  126458. },
  126459. {
  126460. "n": "MDURATION",
  126461. "t": 8,
  126462. "m": [
  126463. 5,
  126464. 6
  126465. ],
  126466. "p": [
  126467. {
  126468. "example": "DATE(2010",
  126469. "require": "m",
  126470. "repeat": "n",
  126471. "type": "rangeall"
  126472. },
  126473. {
  126474. "example": "DATE(2010",
  126475. "require": "m",
  126476. "repeat": "n",
  126477. "type": "rangeall"
  126478. },
  126479. {
  126480. "example": "0.08",
  126481. "require": "m",
  126482. "repeat": "n",
  126483. "type": "rangenumber"
  126484. },
  126485. {
  126486. "example": "0.09",
  126487. "require": "m",
  126488. "repeat": "n",
  126489. "type": "rangenumber"
  126490. },
  126491. {
  126492. "example": "1",
  126493. "require": "m",
  126494. "repeat": "n",
  126495. "type": "rangenumber"
  126496. },
  126497. {
  126498. "example": "0",
  126499. "require": "o",
  126500. "repeat": "n",
  126501. "type": "rangenumber"
  126502. }
  126503. ]
  126504. },
  126505. {
  126506. "n": "BIN2DEC",
  126507. "t": 9,
  126508. "m": [
  126509. 1,
  126510. 1
  126511. ],
  126512. "p": [
  126513. {
  126514. "example": "101",
  126515. "require": "m",
  126516. "repeat": "n",
  126517. "type": "rangeall"
  126518. }
  126519. ]
  126520. },
  126521. {
  126522. "n": "BIN2HEX",
  126523. "t": 9,
  126524. "m": [
  126525. 1,
  126526. 2
  126527. ],
  126528. "p": [
  126529. {
  126530. "example": "101",
  126531. "require": "m",
  126532. "repeat": "n",
  126533. "type": "rangeall"
  126534. },
  126535. {
  126536. "example": "8",
  126537. "require": "o",
  126538. "repeat": "n",
  126539. "type": "rangenumber"
  126540. }
  126541. ]
  126542. },
  126543. {
  126544. "n": "BIN2OCT",
  126545. "t": 9,
  126546. "m": [
  126547. 1,
  126548. 2
  126549. ],
  126550. "p": [
  126551. {
  126552. "example": "101",
  126553. "require": "m",
  126554. "repeat": "n",
  126555. "type": "rangeall"
  126556. },
  126557. {
  126558. "example": "8",
  126559. "require": "o",
  126560. "repeat": "n",
  126561. "type": "rangenumber"
  126562. }
  126563. ]
  126564. },
  126565. {
  126566. "n": "DEC2BIN",
  126567. "t": 9,
  126568. "m": [
  126569. 1,
  126570. 2
  126571. ],
  126572. "p": [
  126573. {
  126574. "example": "100",
  126575. "require": "m",
  126576. "repeat": "n",
  126577. "type": "rangenumber"
  126578. },
  126579. {
  126580. "example": "8",
  126581. "require": "o",
  126582. "repeat": "n",
  126583. "type": "rangenumber"
  126584. }
  126585. ]
  126586. },
  126587. {
  126588. "n": "DEC2HEX",
  126589. "t": 9,
  126590. "m": [
  126591. 1,
  126592. 2
  126593. ],
  126594. "p": [
  126595. {
  126596. "example": "100",
  126597. "require": "m",
  126598. "repeat": "n",
  126599. "type": "rangenumber"
  126600. },
  126601. {
  126602. "example": "8",
  126603. "require": "o",
  126604. "repeat": "n",
  126605. "type": "rangenumber"
  126606. }
  126607. ]
  126608. },
  126609. {
  126610. "n": "DEC2OCT",
  126611. "t": 9,
  126612. "m": [
  126613. 1,
  126614. 2
  126615. ],
  126616. "p": [
  126617. {
  126618. "example": "100",
  126619. "require": "m",
  126620. "repeat": "n",
  126621. "type": "rangenumber"
  126622. },
  126623. {
  126624. "example": "8",
  126625. "require": "o",
  126626. "repeat": "n",
  126627. "type": "rangenumber"
  126628. }
  126629. ]
  126630. },
  126631. {
  126632. "n": "HEX2BIN",
  126633. "t": 9,
  126634. "m": [
  126635. 1,
  126636. 2
  126637. ],
  126638. "p": [
  126639. {
  126640. "example": '"f3"',
  126641. "require": "m",
  126642. "repeat": "n",
  126643. "type": "rangeall"
  126644. },
  126645. {
  126646. "example": "8",
  126647. "require": "o",
  126648. "repeat": "n",
  126649. "type": "rangenumber"
  126650. }
  126651. ]
  126652. },
  126653. {
  126654. "n": "HEX2DEC",
  126655. "t": 9,
  126656. "m": [
  126657. 1,
  126658. 1
  126659. ],
  126660. "p": [
  126661. {
  126662. "example": '"f3"',
  126663. "require": "m",
  126664. "repeat": "n",
  126665. "type": "rangeall"
  126666. }
  126667. ]
  126668. },
  126669. {
  126670. "n": "HEX2OCT",
  126671. "t": 9,
  126672. "m": [
  126673. 1,
  126674. 2
  126675. ],
  126676. "p": [
  126677. {
  126678. "example": '"f3"',
  126679. "require": "m",
  126680. "repeat": "n",
  126681. "type": "rangeall"
  126682. },
  126683. {
  126684. "example": "8",
  126685. "require": "o",
  126686. "repeat": "n",
  126687. "type": "rangenumber"
  126688. }
  126689. ]
  126690. },
  126691. {
  126692. "n": "OCT2BIN",
  126693. "t": 9,
  126694. "m": [
  126695. 1,
  126696. 2
  126697. ],
  126698. "p": [
  126699. {
  126700. "example": "37",
  126701. "require": "m",
  126702. "repeat": "n",
  126703. "type": "rangeall"
  126704. },
  126705. {
  126706. "example": "8",
  126707. "require": "o",
  126708. "repeat": "n",
  126709. "type": "rangenumber"
  126710. }
  126711. ]
  126712. },
  126713. {
  126714. "n": "OCT2DEC",
  126715. "t": 9,
  126716. "m": [
  126717. 1,
  126718. 1
  126719. ],
  126720. "p": [
  126721. {
  126722. "example": "37",
  126723. "require": "m",
  126724. "repeat": "n",
  126725. "type": "rangeall"
  126726. }
  126727. ]
  126728. },
  126729. {
  126730. "n": "OCT2HEX",
  126731. "t": 9,
  126732. "m": [
  126733. 1,
  126734. 2
  126735. ],
  126736. "p": [
  126737. {
  126738. "example": "37",
  126739. "require": "m",
  126740. "repeat": "n",
  126741. "type": "rangeall"
  126742. },
  126743. {
  126744. "example": "8",
  126745. "require": "o",
  126746. "repeat": "n",
  126747. "type": "rangenumber"
  126748. }
  126749. ]
  126750. },
  126751. {
  126752. "n": "COMPLEX",
  126753. "t": 9,
  126754. "m": [
  126755. 2,
  126756. 3
  126757. ],
  126758. "p": [
  126759. {
  126760. "example": "3",
  126761. "require": "m",
  126762. "repeat": "n",
  126763. "type": "rangenumber"
  126764. },
  126765. {
  126766. "example": "4",
  126767. "require": "m",
  126768. "repeat": "n",
  126769. "type": "rangenumber"
  126770. },
  126771. {
  126772. "example": '"j"',
  126773. "require": "o",
  126774. "repeat": "n",
  126775. "type": "rangestring"
  126776. }
  126777. ]
  126778. },
  126779. {
  126780. "n": "IMREAL",
  126781. "t": 9,
  126782. "m": [
  126783. 1,
  126784. 1
  126785. ],
  126786. "p": [
  126787. {
  126788. "example": '"4+5i"',
  126789. "require": "m",
  126790. "repeat": "n",
  126791. "type": "rangeall"
  126792. }
  126793. ]
  126794. },
  126795. {
  126796. "n": "IMAGINARY",
  126797. "t": 9,
  126798. "m": [
  126799. 1,
  126800. 1
  126801. ],
  126802. "p": [
  126803. {
  126804. "example": '"4+5i"',
  126805. "require": "m",
  126806. "repeat": "n",
  126807. "type": "rangeall"
  126808. }
  126809. ]
  126810. },
  126811. {
  126812. "n": "IMCONJUGATE",
  126813. "t": 9,
  126814. "m": [
  126815. 1,
  126816. 1
  126817. ],
  126818. "p": [
  126819. {
  126820. "example": '"3+4i"',
  126821. "require": "m",
  126822. "repeat": "n",
  126823. "type": "rangeall"
  126824. }
  126825. ]
  126826. },
  126827. {
  126828. "n": "IMABS",
  126829. "t": 9,
  126830. "m": [
  126831. 1,
  126832. 1
  126833. ],
  126834. "p": [
  126835. {
  126836. "example": '"3+4i"',
  126837. "require": "m",
  126838. "repeat": "n",
  126839. "type": "rangeall"
  126840. }
  126841. ]
  126842. },
  126843. {
  126844. "n": "DELTA",
  126845. "t": 9,
  126846. "m": [
  126847. 1,
  126848. 2
  126849. ],
  126850. "p": [
  126851. {
  126852. "example": "2",
  126853. "require": "m",
  126854. "repeat": "n",
  126855. "type": "rangenumber"
  126856. },
  126857. {
  126858. "example": "1",
  126859. "require": "o",
  126860. "repeat": "n",
  126861. "type": "rangenumber"
  126862. }
  126863. ]
  126864. },
  126865. {
  126866. "n": "IMSUM",
  126867. "t": 9,
  126868. "m": [
  126869. 1,
  126870. 255
  126871. ],
  126872. "p": [
  126873. {
  126874. "example": '"3+4i"',
  126875. "require": "m",
  126876. "repeat": "n",
  126877. "type": "rangeall"
  126878. },
  126879. {
  126880. "example": '"5-3i"',
  126881. "require": "o",
  126882. "repeat": "y",
  126883. "type": "rangeall"
  126884. }
  126885. ]
  126886. },
  126887. {
  126888. "n": "IMSUB",
  126889. "t": 9,
  126890. "m": [
  126891. 2,
  126892. 2
  126893. ],
  126894. "p": [
  126895. {
  126896. "example": '"6+5i"',
  126897. "require": "m",
  126898. "repeat": "n",
  126899. "type": "rangeall"
  126900. },
  126901. {
  126902. "example": '"2+3i"',
  126903. "require": "m",
  126904. "repeat": "n",
  126905. "type": "rangeall"
  126906. }
  126907. ]
  126908. },
  126909. {
  126910. "n": "IMPRODUCT",
  126911. "t": 9,
  126912. "m": [
  126913. 1,
  126914. 255
  126915. ],
  126916. "p": [
  126917. {
  126918. "example": '"3+4i"',
  126919. "require": "m",
  126920. "repeat": "n",
  126921. "type": "rangeall"
  126922. },
  126923. {
  126924. "example": '"5-3i"',
  126925. "require": "o",
  126926. "repeat": "y",
  126927. "type": "rangeall"
  126928. }
  126929. ]
  126930. },
  126931. {
  126932. "n": "IMDIV",
  126933. "t": 9,
  126934. "m": [
  126935. 2,
  126936. 2
  126937. ],
  126938. "p": [
  126939. {
  126940. "example": '"11+16i"',
  126941. "require": "m",
  126942. "repeat": "n",
  126943. "type": "rangeall"
  126944. },
  126945. {
  126946. "example": '"3+2i"',
  126947. "require": "m",
  126948. "repeat": "n",
  126949. "type": "rangeall"
  126950. }
  126951. ]
  126952. },
  126953. {
  126954. "n": "NOT",
  126955. "t": 10,
  126956. "m": [
  126957. 1,
  126958. 1
  126959. ],
  126960. "p": [
  126961. {
  126962. "example": "A2",
  126963. "require": "m",
  126964. "repeat": "n",
  126965. "type": "rangeall"
  126966. }
  126967. ]
  126968. },
  126969. {
  126970. "n": "TRUE",
  126971. "t": 10,
  126972. "m": [
  126973. 0,
  126974. 0
  126975. ],
  126976. "p": []
  126977. },
  126978. {
  126979. "n": "FALSE",
  126980. "t": 10,
  126981. "m": [
  126982. 0,
  126983. 0
  126984. ],
  126985. "p": []
  126986. },
  126987. {
  126988. "n": "AND",
  126989. "t": 10,
  126990. "m": [
  126991. 1,
  126992. 255
  126993. ],
  126994. "p": [
  126995. {
  126996. "example": 'A2 = "foo"',
  126997. "require": "m",
  126998. "repeat": "n",
  126999. "type": "rangeall"
  127000. },
  127001. {
  127002. "example": 'A3 = "bar"',
  127003. "require": "o",
  127004. "repeat": "y",
  127005. "type": "rangeall"
  127006. }
  127007. ]
  127008. },
  127009. {
  127010. "n": "IFERROR",
  127011. "t": 10,
  127012. "m": [
  127013. 2,
  127014. 2
  127015. ],
  127016. "p": [
  127017. {
  127018. "example": "A1",
  127019. "require": "m",
  127020. "repeat": "n",
  127021. "type": "rangeall"
  127022. },
  127023. {
  127024. "example": '"Error in cell A1"',
  127025. "require": "m",
  127026. "repeat": "n",
  127027. "type": "rangeall"
  127028. }
  127029. ]
  127030. },
  127031. {
  127032. "n": "IF",
  127033. "t": 10,
  127034. "m": [
  127035. 2,
  127036. 3
  127037. ],
  127038. "p": [
  127039. {
  127040. "example": 'A2 = "foo"',
  127041. "require": "m",
  127042. "repeat": "n",
  127043. "type": "rangeall"
  127044. },
  127045. {
  127046. "example": '"A2 is foo"',
  127047. "require": "m",
  127048. "repeat": "n",
  127049. "type": "rangeall"
  127050. },
  127051. {
  127052. "example": '"A2 was false"',
  127053. "require": "o",
  127054. "repeat": "n",
  127055. "type": "rangeall"
  127056. }
  127057. ]
  127058. },
  127059. {
  127060. "n": "OR",
  127061. "t": 10,
  127062. "m": [
  127063. 1,
  127064. 255
  127065. ],
  127066. "p": [
  127067. {
  127068. "example": 'A2 = "foo"',
  127069. "require": "m",
  127070. "repeat": "n",
  127071. "type": "rangeall"
  127072. },
  127073. {
  127074. "example": ' A3 = "bar"',
  127075. "require": "m",
  127076. "repeat": "n",
  127077. "type": "rangeall"
  127078. }
  127079. ]
  127080. },
  127081. {
  127082. "n": "NE",
  127083. "t": 11,
  127084. "m": [
  127085. 2,
  127086. 2
  127087. ],
  127088. "p": [
  127089. {
  127090. "example": "A2",
  127091. "require": "m",
  127092. "repeat": "n",
  127093. "type": "rangeall"
  127094. },
  127095. {
  127096. "example": "A3",
  127097. "require": "m",
  127098. "repeat": "n",
  127099. "type": "rangeall"
  127100. }
  127101. ]
  127102. },
  127103. {
  127104. "n": "EQ",
  127105. "t": 11,
  127106. "m": [
  127107. 2,
  127108. 2
  127109. ],
  127110. "p": [
  127111. {
  127112. "example": "A2",
  127113. "require": "m",
  127114. "repeat": "n",
  127115. "type": "rangeall"
  127116. },
  127117. {
  127118. "example": "A3",
  127119. "require": "m",
  127120. "repeat": "n",
  127121. "type": "rangeall"
  127122. }
  127123. ]
  127124. },
  127125. {
  127126. "n": "GT",
  127127. "t": 11,
  127128. "m": [
  127129. 2,
  127130. 2
  127131. ],
  127132. "p": [
  127133. {
  127134. "example": "A2",
  127135. "require": "m",
  127136. "repeat": "n",
  127137. "type": "rangeall"
  127138. },
  127139. {
  127140. "example": "A3",
  127141. "require": "m",
  127142. "repeat": "n",
  127143. "type": "rangeall"
  127144. }
  127145. ]
  127146. },
  127147. {
  127148. "n": "GTE",
  127149. "t": 11,
  127150. "m": [
  127151. 2,
  127152. 2
  127153. ],
  127154. "p": [
  127155. {
  127156. "example": "A2",
  127157. "require": "m",
  127158. "repeat": "n",
  127159. "type": "rangeall"
  127160. },
  127161. {
  127162. "example": "A3",
  127163. "require": "m",
  127164. "repeat": "n",
  127165. "type": "rangeall"
  127166. }
  127167. ]
  127168. },
  127169. {
  127170. "n": "LT",
  127171. "t": 11,
  127172. "m": [
  127173. 2,
  127174. 2
  127175. ],
  127176. "p": [
  127177. {
  127178. "example": "A2",
  127179. "require": "m",
  127180. "repeat": "n",
  127181. "type": "rangeall"
  127182. },
  127183. {
  127184. "example": "A3",
  127185. "require": "m",
  127186. "repeat": "n",
  127187. "type": "rangeall"
  127188. }
  127189. ]
  127190. },
  127191. {
  127192. "n": "LTE",
  127193. "t": 11,
  127194. "m": [
  127195. 2,
  127196. 2
  127197. ],
  127198. "p": [
  127199. {
  127200. "example": "A2",
  127201. "require": "m",
  127202. "repeat": "n",
  127203. "type": "rangeall"
  127204. },
  127205. {
  127206. "example": "A3",
  127207. "require": "m",
  127208. "repeat": "n",
  127209. "type": "rangeall"
  127210. }
  127211. ]
  127212. },
  127213. {
  127214. "n": "ADD",
  127215. "t": 11,
  127216. "m": [
  127217. 2,
  127218. 2
  127219. ],
  127220. "p": [
  127221. {
  127222. "example": "A2",
  127223. "require": "m",
  127224. "repeat": "n",
  127225. "type": "rangenumber"
  127226. },
  127227. {
  127228. "example": "A3",
  127229. "require": "m",
  127230. "repeat": "n",
  127231. "type": "rangenumber"
  127232. }
  127233. ]
  127234. },
  127235. {
  127236. "n": "MINUS",
  127237. "t": 11,
  127238. "m": [
  127239. 2,
  127240. 2
  127241. ],
  127242. "p": [
  127243. {
  127244. "example": "A2",
  127245. "require": "m",
  127246. "repeat": "n",
  127247. "type": "rangenumber"
  127248. },
  127249. {
  127250. "example": "A3",
  127251. "require": "m",
  127252. "repeat": "n",
  127253. "type": "rangenumber"
  127254. }
  127255. ]
  127256. },
  127257. {
  127258. "n": "MULTIPLY",
  127259. "t": 11,
  127260. "m": [
  127261. 2,
  127262. 2
  127263. ],
  127264. "p": [
  127265. {
  127266. "example": "A2",
  127267. "require": "m",
  127268. "repeat": "n",
  127269. "type": "rangenumber"
  127270. },
  127271. {
  127272. "example": "B2",
  127273. "require": "m",
  127274. "repeat": "n",
  127275. "type": "rangenumber"
  127276. }
  127277. ]
  127278. },
  127279. {
  127280. "n": "DIVIDE",
  127281. "t": 11,
  127282. "m": [
  127283. 2,
  127284. 2
  127285. ],
  127286. "p": [
  127287. {
  127288. "example": "4",
  127289. "require": "m",
  127290. "repeat": "n",
  127291. "type": "rangenumber"
  127292. },
  127293. {
  127294. "example": "2",
  127295. "require": "m",
  127296. "repeat": "n",
  127297. "type": "rangenumber"
  127298. }
  127299. ]
  127300. },
  127301. {
  127302. "n": "CONCAT",
  127303. "t": 11,
  127304. "m": [
  127305. 2,
  127306. 2
  127307. ],
  127308. "p": [
  127309. {
  127310. "example": '"de"',
  127311. "require": "m",
  127312. "repeat": "n",
  127313. "type": "rangeall"
  127314. },
  127315. {
  127316. "example": '"mystify"',
  127317. "require": "m",
  127318. "repeat": "n",
  127319. "type": "rangeall"
  127320. }
  127321. ]
  127322. },
  127323. {
  127324. "n": "UNARY_PERCENT",
  127325. "t": 11,
  127326. "m": [
  127327. 1,
  127328. 1
  127329. ],
  127330. "p": [
  127331. {
  127332. "example": "A2",
  127333. "require": "m",
  127334. "repeat": "n",
  127335. "type": "rangenumber"
  127336. }
  127337. ]
  127338. },
  127339. {
  127340. "n": "CONCATENATE",
  127341. "t": 12,
  127342. "m": [
  127343. 1,
  127344. 255
  127345. ],
  127346. "p": [
  127347. {
  127348. "example": '"Super"',
  127349. "require": "m",
  127350. "repeat": "n",
  127351. "type": "rangeall"
  127352. },
  127353. {
  127354. "example": '"calla"',
  127355. "require": "o",
  127356. "repeat": "y",
  127357. "type": "rangeall"
  127358. }
  127359. ]
  127360. },
  127361. {
  127362. "n": "CODE",
  127363. "t": 12,
  127364. "m": [
  127365. 1,
  127366. 1
  127367. ],
  127368. "p": [
  127369. {
  127370. "example": '"a"',
  127371. "require": "m",
  127372. "repeat": "n",
  127373. "type": "rangeall"
  127374. }
  127375. ]
  127376. },
  127377. {
  127378. "n": "CHAR",
  127379. "t": 12,
  127380. "m": [
  127381. 1,
  127382. 1
  127383. ],
  127384. "p": [
  127385. {
  127386. "example": "97",
  127387. "require": "m",
  127388. "repeat": "n",
  127389. "type": "rangenumber"
  127390. }
  127391. ]
  127392. },
  127393. {
  127394. "n": "ARABIC",
  127395. "t": 12,
  127396. "m": [
  127397. 1,
  127398. 1
  127399. ],
  127400. "p": [
  127401. {
  127402. "example": '"XIV"',
  127403. "require": "m",
  127404. "repeat": "n",
  127405. "type": "rangeall"
  127406. }
  127407. ]
  127408. },
  127409. {
  127410. "n": "ROMAN",
  127411. "t": 12,
  127412. "m": [
  127413. 1,
  127414. 1
  127415. ],
  127416. "p": [
  127417. {
  127418. "example": "499",
  127419. "require": "m",
  127420. "repeat": "n",
  127421. "type": "rangenumber"
  127422. }
  127423. ]
  127424. },
  127425. {
  127426. "n": "REGEXEXTRACT",
  127427. "t": 12,
  127428. "m": [
  127429. 2,
  127430. 2
  127431. ],
  127432. "p": [
  127433. {
  127434. "example": '"Needle in a haystack"',
  127435. "require": "m",
  127436. "repeat": "n",
  127437. "type": "rangeall"
  127438. },
  127439. {
  127440. "example": '".e{2}dle"',
  127441. "require": "m",
  127442. "repeat": "n",
  127443. "type": "rangeall"
  127444. }
  127445. ]
  127446. },
  127447. {
  127448. "n": "REGEXMATCH",
  127449. "t": 12,
  127450. "m": [
  127451. 2,
  127452. 2
  127453. ],
  127454. "p": [
  127455. {
  127456. "example": '"Spreadsheets"',
  127457. "require": "m",
  127458. "repeat": "n",
  127459. "type": "rangeall"
  127460. },
  127461. {
  127462. "example": '"S.r"',
  127463. "require": "m",
  127464. "repeat": "n",
  127465. "type": "rangeall"
  127466. }
  127467. ]
  127468. },
  127469. {
  127470. "n": "REGEXREPLACE",
  127471. "t": 12,
  127472. "m": [
  127473. 3,
  127474. 3
  127475. ],
  127476. "p": [
  127477. {
  127478. "example": '"Spreadsheets"',
  127479. "require": "m",
  127480. "repeat": "n",
  127481. "type": "rangeall"
  127482. },
  127483. {
  127484. "example": '"S.*d"',
  127485. "require": "m",
  127486. "repeat": "n",
  127487. "type": "rangeall"
  127488. },
  127489. {
  127490. "example": '"Bed"',
  127491. "require": "m",
  127492. "repeat": "n",
  127493. "type": "rangeall"
  127494. }
  127495. ]
  127496. },
  127497. {
  127498. "n": "T",
  127499. "t": 12,
  127500. "m": [
  127501. 1,
  127502. 1
  127503. ],
  127504. "p": [
  127505. {
  127506. "example": "A2",
  127507. "require": "m",
  127508. "repeat": "n",
  127509. "type": "rangeall"
  127510. }
  127511. ]
  127512. },
  127513. {
  127514. "n": "FIXED",
  127515. "t": 12,
  127516. "m": [
  127517. 1,
  127518. 3
  127519. ],
  127520. "p": [
  127521. {
  127522. "example": "3.141592653",
  127523. "require": "m",
  127524. "repeat": "n",
  127525. "type": "rangenumber"
  127526. },
  127527. {
  127528. "example": "2",
  127529. "require": "o",
  127530. "repeat": "n",
  127531. "type": "rangenumber"
  127532. },
  127533. {
  127534. "example": "FALSE()",
  127535. "require": "o",
  127536. "repeat": "n",
  127537. "type": "rangeall"
  127538. }
  127539. ]
  127540. },
  127541. {
  127542. "n": "FIND",
  127543. "t": 12,
  127544. "m": [
  127545. 2,
  127546. 3
  127547. ],
  127548. "p": [
  127549. {
  127550. "example": '"n"',
  127551. "require": "m",
  127552. "repeat": "n",
  127553. "type": "rangeall"
  127554. },
  127555. {
  127556. "example": "A2",
  127557. "require": "m",
  127558. "repeat": "n",
  127559. "type": "rangeall"
  127560. },
  127561. {
  127562. "example": "14",
  127563. "require": "o",
  127564. "repeat": "n",
  127565. "type": "rangenumber"
  127566. }
  127567. ]
  127568. },
  127569. {
  127570. "n": "FINDB",
  127571. "t": 12,
  127572. "m": [
  127573. 2,
  127574. 3
  127575. ],
  127576. "p": [
  127577. {
  127578. "example": '"new"',
  127579. "require": "m",
  127580. "repeat": "n",
  127581. "type": "rangeall"
  127582. },
  127583. {
  127584. "example": '"new year"',
  127585. "require": "m",
  127586. "repeat": "n",
  127587. "type": "rangeall"
  127588. },
  127589. {
  127590. "example": "2",
  127591. "require": "o",
  127592. "repeat": "n",
  127593. "type": "rangenumber"
  127594. }
  127595. ]
  127596. },
  127597. {
  127598. "n": "JOIN",
  127599. "t": 12,
  127600. "m": [
  127601. 2,
  127602. 255
  127603. ],
  127604. "p": [
  127605. {
  127606. "example": '" and-a "',
  127607. "require": "m",
  127608. "repeat": "n",
  127609. "type": "rangeall"
  127610. },
  127611. {
  127612. "example": "{1",
  127613. "require": "m",
  127614. "repeat": "n",
  127615. "type": "rangeall"
  127616. },
  127617. {
  127618. "example": "2",
  127619. "require": "o",
  127620. "repeat": "y",
  127621. "type": "rangeall"
  127622. }
  127623. ]
  127624. },
  127625. {
  127626. "n": "LEFT",
  127627. "t": 12,
  127628. "m": [
  127629. 1,
  127630. 2
  127631. ],
  127632. "p": [
  127633. {
  127634. "example": "A2",
  127635. "require": "m",
  127636. "repeat": "n",
  127637. "type": "rangeall"
  127638. },
  127639. {
  127640. "example": "2",
  127641. "require": "m",
  127642. "repeat": "n",
  127643. "type": "rangenumber"
  127644. }
  127645. ]
  127646. },
  127647. {
  127648. "n": "RIGHT",
  127649. "t": 12,
  127650. "m": [
  127651. 1,
  127652. 2
  127653. ],
  127654. "p": [
  127655. {
  127656. "example": "A2",
  127657. "require": "m",
  127658. "repeat": "n",
  127659. "type": "rangeall"
  127660. },
  127661. {
  127662. "example": "2",
  127663. "require": "m",
  127664. "repeat": "n",
  127665. "type": "rangenumber"
  127666. }
  127667. ]
  127668. },
  127669. {
  127670. "n": "MID",
  127671. "t": 12,
  127672. "m": [
  127673. 3,
  127674. 3
  127675. ],
  127676. "p": [
  127677. {
  127678. "example": '"get this"',
  127679. "require": "m",
  127680. "repeat": "n",
  127681. "type": "rangeall"
  127682. },
  127683. {
  127684. "example": "5",
  127685. "require": "m",
  127686. "repeat": "n",
  127687. "type": "rangenumber"
  127688. },
  127689. {
  127690. "example": "4",
  127691. "require": "m",
  127692. "repeat": "n",
  127693. "type": "rangenumber"
  127694. }
  127695. ]
  127696. },
  127697. {
  127698. "n": "LEN",
  127699. "t": 12,
  127700. "m": [
  127701. 1,
  127702. 1
  127703. ],
  127704. "p": [
  127705. {
  127706. "example": "A2",
  127707. "require": "m",
  127708. "repeat": "n",
  127709. "type": "rangeall"
  127710. }
  127711. ]
  127712. },
  127713. {
  127714. "n": "LENB",
  127715. "t": 12,
  127716. "m": [
  127717. 1,
  127718. 1
  127719. ],
  127720. "p": [
  127721. {
  127722. "example": "A2",
  127723. "require": "m",
  127724. "repeat": "n",
  127725. "type": "rangeall"
  127726. }
  127727. ]
  127728. },
  127729. {
  127730. "n": "LOWER",
  127731. "t": 12,
  127732. "m": [
  127733. 1,
  127734. 1
  127735. ],
  127736. "p": [
  127737. {
  127738. "example": '"LOREM IPSUM"',
  127739. "require": "m",
  127740. "repeat": "n",
  127741. "type": "rangeall"
  127742. }
  127743. ]
  127744. },
  127745. {
  127746. "n": "UPPER",
  127747. "t": 12,
  127748. "m": [
  127749. 1,
  127750. 1
  127751. ],
  127752. "p": [
  127753. {
  127754. "example": '"lorem ipsum"',
  127755. "require": "m",
  127756. "repeat": "n",
  127757. "type": "rangeall"
  127758. }
  127759. ]
  127760. },
  127761. {
  127762. "n": "EXACT",
  127763. "t": 12,
  127764. "m": [
  127765. 2,
  127766. 2
  127767. ],
  127768. "p": [
  127769. {
  127770. "example": "A1",
  127771. "require": "m",
  127772. "repeat": "n",
  127773. "type": "rangeall"
  127774. },
  127775. {
  127776. "example": "A2",
  127777. "require": "m",
  127778. "repeat": "n",
  127779. "type": "rangeall"
  127780. }
  127781. ]
  127782. },
  127783. {
  127784. "n": "REPLACE",
  127785. "t": 12,
  127786. "m": [
  127787. 4,
  127788. 4
  127789. ],
  127790. "p": [
  127791. {
  127792. "example": '"Spreadsheets"',
  127793. "require": "m",
  127794. "repeat": "n",
  127795. "type": "rangeall"
  127796. },
  127797. {
  127798. "example": "1",
  127799. "require": "m",
  127800. "repeat": "n",
  127801. "type": "rangenumber"
  127802. },
  127803. {
  127804. "example": "6",
  127805. "require": "m",
  127806. "repeat": "n",
  127807. "type": "rangenumber"
  127808. },
  127809. {
  127810. "example": '"Bed"',
  127811. "require": "m",
  127812. "repeat": "n",
  127813. "type": "rangeall"
  127814. }
  127815. ]
  127816. },
  127817. {
  127818. "n": "REPT",
  127819. "t": 12,
  127820. "m": [
  127821. 2,
  127822. 2
  127823. ],
  127824. "p": [
  127825. {
  127826. "example": '"ha"',
  127827. "require": "m",
  127828. "repeat": "n",
  127829. "type": "rangeall"
  127830. },
  127831. {
  127832. "example": "4",
  127833. "require": "m",
  127834. "repeat": "n",
  127835. "type": "rangenumber"
  127836. }
  127837. ]
  127838. },
  127839. {
  127840. "n": "SEARCH",
  127841. "t": 12,
  127842. "m": [
  127843. 2,
  127844. 3
  127845. ],
  127846. "p": [
  127847. {
  127848. "example": '"n"',
  127849. "require": "m",
  127850. "repeat": "n",
  127851. "type": "rangeall"
  127852. },
  127853. {
  127854. "example": "A2",
  127855. "require": "m",
  127856. "repeat": "n",
  127857. "type": "rangeall"
  127858. },
  127859. {
  127860. "example": "14",
  127861. "require": "m",
  127862. "repeat": "n",
  127863. "type": "rangenumber"
  127864. }
  127865. ]
  127866. },
  127867. {
  127868. "n": "SUBSTITUTE",
  127869. "t": 12,
  127870. "m": [
  127871. 3,
  127872. 4
  127873. ],
  127874. "p": [
  127875. {
  127876. "example": '"search for it"',
  127877. "require": "m",
  127878. "repeat": "n",
  127879. "type": "rangeall"
  127880. },
  127881. {
  127882. "example": '"search for"',
  127883. "require": "m",
  127884. "repeat": "n",
  127885. "type": "rangeall"
  127886. },
  127887. {
  127888. "example": '"Google"',
  127889. "require": "m",
  127890. "repeat": "n",
  127891. "type": "rangeall"
  127892. },
  127893. {
  127894. "example": "3",
  127895. "require": "m",
  127896. "repeat": "n",
  127897. "type": "rangenumber"
  127898. }
  127899. ]
  127900. },
  127901. {
  127902. "n": "CLEAN",
  127903. "t": 12,
  127904. "m": [
  127905. 1,
  127906. 1
  127907. ],
  127908. "p": [
  127909. {
  127910. "example": '"AF"&CHAR(31)',
  127911. "require": "m",
  127912. "repeat": "n",
  127913. "type": "rangeall"
  127914. }
  127915. ]
  127916. },
  127917. {
  127918. "n": "TEXT",
  127919. "t": 12,
  127920. "m": [
  127921. 2,
  127922. 2
  127923. ],
  127924. "p": [
  127925. {
  127926. "example": "1.23",
  127927. "require": "m",
  127928. "repeat": "n",
  127929. "type": "rangenumber"
  127930. },
  127931. {
  127932. "example": '"$0.00"',
  127933. "require": "m",
  127934. "repeat": "n",
  127935. "type": "rangeall"
  127936. }
  127937. ]
  127938. },
  127939. {
  127940. "n": "TRIM",
  127941. "t": 12,
  127942. "m": [
  127943. 1,
  127944. 1
  127945. ],
  127946. "p": [
  127947. {
  127948. "example": '" lorem ipsum"',
  127949. "require": "m",
  127950. "repeat": "n",
  127951. "type": "rangeall"
  127952. }
  127953. ]
  127954. },
  127955. {
  127956. "n": "VALUE",
  127957. "t": 12,
  127958. "m": [
  127959. 1,
  127960. 1
  127961. ],
  127962. "p": [
  127963. {
  127964. "example": '"123"',
  127965. "require": "m",
  127966. "repeat": "n",
  127967. "type": "rangeall"
  127968. }
  127969. ]
  127970. },
  127971. {
  127972. "n": "PROPER",
  127973. "t": 12,
  127974. "m": [
  127975. 1,
  127976. 1
  127977. ],
  127978. "p": [
  127979. {
  127980. "example": '"united states"',
  127981. "require": "m",
  127982. "repeat": "n",
  127983. "type": "rangeall"
  127984. }
  127985. ]
  127986. },
  127987. {
  127988. "n": "CONVERT",
  127989. "t": 13,
  127990. "m": [
  127991. 3,
  127992. 3
  127993. ],
  127994. "p": [
  127995. {
  127996. "example": "5.1",
  127997. "require": "m",
  127998. "repeat": "n",
  127999. "type": "rangenumber"
  128000. },
  128001. {
  128002. "example": '"g"',
  128003. "require": "m",
  128004. "repeat": "n",
  128005. "type": "rangeall"
  128006. },
  128007. {
  128008. "example": '"kg"',
  128009. "require": "m",
  128010. "repeat": "n",
  128011. "type": "rangeall"
  128012. }
  128013. ]
  128014. },
  128015. {
  128016. "n": "SUMX2MY2",
  128017. "t": 14,
  128018. "m": [
  128019. 2,
  128020. 2
  128021. ],
  128022. "p": [
  128023. {
  128024. "example": "A2:A100",
  128025. "require": "m",
  128026. "repeat": "n",
  128027. "type": "rangenumber"
  128028. },
  128029. {
  128030. "example": "B2:B100",
  128031. "require": "m",
  128032. "repeat": "n",
  128033. "type": "rangenumber"
  128034. }
  128035. ]
  128036. },
  128037. {
  128038. "n": "SUMX2PY2",
  128039. "t": 14,
  128040. "m": [
  128041. 2,
  128042. 2
  128043. ],
  128044. "p": [
  128045. {
  128046. "example": "A2:A100",
  128047. "require": "m",
  128048. "repeat": "n",
  128049. "type": "rangenumber"
  128050. },
  128051. {
  128052. "example": "B2:B100",
  128053. "require": "m",
  128054. "repeat": "n",
  128055. "type": "rangenumber"
  128056. }
  128057. ]
  128058. },
  128059. {
  128060. "n": "SUMXMY2",
  128061. "t": 14,
  128062. "m": [
  128063. 2,
  128064. 2
  128065. ],
  128066. "p": [
  128067. {
  128068. "example": "A2:A100",
  128069. "require": "m",
  128070. "repeat": "n",
  128071. "type": "rangenumber"
  128072. },
  128073. {
  128074. "example": "B2:B100",
  128075. "require": "m",
  128076. "repeat": "n",
  128077. "type": "rangenumber"
  128078. }
  128079. ]
  128080. },
  128081. {
  128082. "n": "TRANSPOSE",
  128083. "t": 14,
  128084. "m": [
  128085. 1,
  128086. 1
  128087. ],
  128088. "p": [
  128089. {
  128090. "example": "{1,2}",
  128091. "require": "m",
  128092. "repeat": "n",
  128093. "type": "range"
  128094. }
  128095. ]
  128096. },
  128097. {
  128098. "n": "TREND",
  128099. "t": 14,
  128100. "m": [
  128101. 1,
  128102. 4
  128103. ],
  128104. "p": [
  128105. {
  128106. "example": "B2:B10",
  128107. "require": "m",
  128108. "repeat": "n",
  128109. "type": "rangenumber"
  128110. },
  128111. {
  128112. "example": "A2:A10",
  128113. "require": "o",
  128114. "repeat": "n",
  128115. "type": "rangenumber"
  128116. },
  128117. {
  128118. "example": "A11:A13",
  128119. "require": "o",
  128120. "repeat": "n",
  128121. "type": "rangenumber"
  128122. },
  128123. {
  128124. "example": "TRUE()",
  128125. "require": "o",
  128126. "repeat": "n",
  128127. "type": "rangeall"
  128128. }
  128129. ]
  128130. },
  128131. {
  128132. "n": "FREQUENCY",
  128133. "t": 14,
  128134. "m": [
  128135. 2,
  128136. 2
  128137. ],
  128138. "p": [
  128139. {
  128140. "example": "A2:A40",
  128141. "require": "m",
  128142. "repeat": "n",
  128143. "type": "rangenumber"
  128144. },
  128145. {
  128146. "example": "B2:B5",
  128147. "require": "m",
  128148. "repeat": "n",
  128149. "type": "rangenumber"
  128150. }
  128151. ]
  128152. },
  128153. {
  128154. "n": "GROWTH",
  128155. "t": 14,
  128156. "m": [
  128157. 1,
  128158. 4
  128159. ],
  128160. "p": [
  128161. {
  128162. "example": "B2:B10",
  128163. "require": "m",
  128164. "repeat": "n",
  128165. "type": "rangenumber"
  128166. },
  128167. {
  128168. "example": "A2:A10",
  128169. "require": "o",
  128170. "repeat": "n",
  128171. "type": "rangenumber"
  128172. },
  128173. {
  128174. "example": "A11:A13",
  128175. "require": "o",
  128176. "repeat": "n",
  128177. "type": "rangenumber"
  128178. },
  128179. {
  128180. "example": "TRUE()",
  128181. "require": "o",
  128182. "repeat": "n",
  128183. "type": "rangeall"
  128184. }
  128185. ]
  128186. },
  128187. {
  128188. "n": "LINEST",
  128189. "t": 14,
  128190. "m": [
  128191. 1,
  128192. 4
  128193. ],
  128194. "p": [
  128195. {
  128196. "example": "B2:B10",
  128197. "require": "m",
  128198. "repeat": "n",
  128199. "type": "rangenumber"
  128200. },
  128201. {
  128202. "example": "A2:A10",
  128203. "require": "o",
  128204. "repeat": "n",
  128205. "type": "rangenumber"
  128206. },
  128207. {
  128208. "example": "TRUE()",
  128209. "require": "o",
  128210. "repeat": "n",
  128211. "type": "rangeall"
  128212. },
  128213. {
  128214. "example": "TRUE()",
  128215. "require": "o",
  128216. "repeat": "n",
  128217. "type": "rangeall"
  128218. }
  128219. ]
  128220. },
  128221. {
  128222. "n": "LOGEST",
  128223. "t": 14,
  128224. "m": [
  128225. 1,
  128226. 4
  128227. ],
  128228. "p": [
  128229. {
  128230. "example": "B2:B10",
  128231. "require": "m",
  128232. "repeat": "n",
  128233. "type": "rangenumber"
  128234. },
  128235. {
  128236. "example": "A2:A10",
  128237. "require": "o",
  128238. "repeat": "n",
  128239. "type": "rangenumber"
  128240. },
  128241. {
  128242. "example": "TRUE()",
  128243. "require": "o",
  128244. "repeat": "n",
  128245. "type": "rangeall"
  128246. },
  128247. {
  128248. "example": "TRUE()",
  128249. "require": "o",
  128250. "repeat": "n",
  128251. "type": "rangeall"
  128252. }
  128253. ]
  128254. },
  128255. {
  128256. "n": "MDETERM",
  128257. "t": 14,
  128258. "m": [
  128259. 1,
  128260. 1
  128261. ],
  128262. "p": [
  128263. {
  128264. "example": "A1:D4",
  128265. "require": "m",
  128266. "repeat": "n",
  128267. "type": "rangenumber"
  128268. }
  128269. ]
  128270. },
  128271. {
  128272. "n": "MINVERSE",
  128273. "t": 14,
  128274. "m": [
  128275. 1,
  128276. 1
  128277. ],
  128278. "p": [
  128279. {
  128280. "example": "A1:D4",
  128281. "require": "m",
  128282. "repeat": "n",
  128283. "type": "rangenumber"
  128284. }
  128285. ]
  128286. },
  128287. {
  128288. "n": "MMULT",
  128289. "t": 14,
  128290. "m": [
  128291. 2,
  128292. 2
  128293. ],
  128294. "p": [
  128295. {
  128296. "example": "A1:B3",
  128297. "require": "m",
  128298. "repeat": "n",
  128299. "type": "rangenumber"
  128300. },
  128301. {
  128302. "example": "C1:F2",
  128303. "require": "m",
  128304. "repeat": "n",
  128305. "type": "rangenumber"
  128306. }
  128307. ]
  128308. },
  128309. {
  128310. "n": "SUMPRODUCT",
  128311. "t": 14,
  128312. "m": [
  128313. 1,
  128314. 255
  128315. ],
  128316. "p": [
  128317. {
  128318. "example": "A2:C5",
  128319. "require": "m",
  128320. "repeat": "n",
  128321. "type": "rangenumber"
  128322. },
  128323. {
  128324. "example": "D2:F5",
  128325. "require": "o",
  128326. "repeat": "y",
  128327. "type": "rangenumber"
  128328. }
  128329. ]
  128330. },
  128331. {
  128332. "n": "ISFORMULA",
  128333. "t": 15,
  128334. "m": [
  128335. 1,
  128336. 1
  128337. ],
  128338. "p": [
  128339. {
  128340. "example": "A2",
  128341. "require": "m",
  128342. "repeat": "n",
  128343. "type": "range"
  128344. }
  128345. ]
  128346. },
  128347. {
  128348. "n": "CELL",
  128349. "t": 15,
  128350. "m": [
  128351. 2,
  128352. 2
  128353. ],
  128354. "p": [
  128355. {
  128356. "example": '"type"',
  128357. "require": "m",
  128358. "repeat": "n",
  128359. "type": "rangeall"
  128360. },
  128361. {
  128362. "example": "C2",
  128363. "require": "m",
  128364. "repeat": "n",
  128365. "type": "range"
  128366. }
  128367. ]
  128368. },
  128369. {
  128370. "n": "NA",
  128371. "t": 15,
  128372. "m": [
  128373. 0,
  128374. 0
  128375. ],
  128376. "p": []
  128377. },
  128378. {
  128379. "n": "ERROR_TYPE",
  128380. "t": 15,
  128381. "m": [
  128382. 1,
  128383. 1
  128384. ],
  128385. "p": [
  128386. {
  128387. "example": "A3",
  128388. "require": "m",
  128389. "repeat": "n",
  128390. "type": "rangeall"
  128391. }
  128392. ]
  128393. },
  128394. {
  128395. "n": "ISBLANK",
  128396. "t": 15,
  128397. "m": [
  128398. 1,
  128399. 1
  128400. ],
  128401. "p": [
  128402. {
  128403. "example": "A2",
  128404. "require": "m",
  128405. "repeat": "n",
  128406. "type": "range"
  128407. }
  128408. ]
  128409. },
  128410. {
  128411. "n": "ISERR",
  128412. "t": 15,
  128413. "m": [
  128414. 1,
  128415. 1
  128416. ],
  128417. "p": [
  128418. {
  128419. "example": "A2",
  128420. "require": "m",
  128421. "repeat": "n",
  128422. "type": "rangeall"
  128423. }
  128424. ]
  128425. },
  128426. {
  128427. "n": "ISERROR",
  128428. "t": 15,
  128429. "m": [
  128430. 1,
  128431. 1
  128432. ],
  128433. "p": [
  128434. {
  128435. "example": "A2",
  128436. "require": "m",
  128437. "repeat": "n",
  128438. "type": "rangeall"
  128439. }
  128440. ]
  128441. },
  128442. {
  128443. "n": "ISLOGICAL",
  128444. "t": 15,
  128445. "m": [
  128446. 1,
  128447. 1
  128448. ],
  128449. "p": [
  128450. {
  128451. "example": "A2",
  128452. "require": "m",
  128453. "repeat": "n",
  128454. "type": "rangeall"
  128455. }
  128456. ]
  128457. },
  128458. {
  128459. "n": "ISNA",
  128460. "t": 15,
  128461. "m": [
  128462. 1,
  128463. 1
  128464. ],
  128465. "p": [
  128466. {
  128467. "example": "A2",
  128468. "require": "m",
  128469. "repeat": "n",
  128470. "type": "rangeall"
  128471. }
  128472. ]
  128473. },
  128474. {
  128475. "n": "ISNONTEXT",
  128476. "t": 15,
  128477. "m": [
  128478. 1,
  128479. 1
  128480. ],
  128481. "p": [
  128482. {
  128483. "example": "A2",
  128484. "require": "m",
  128485. "repeat": "n",
  128486. "type": "rangeall"
  128487. }
  128488. ]
  128489. },
  128490. {
  128491. "n": "ISNUMBER",
  128492. "t": 15,
  128493. "m": [
  128494. 1,
  128495. 1
  128496. ],
  128497. "p": [
  128498. {
  128499. "example": "A2",
  128500. "require": "m",
  128501. "repeat": "n",
  128502. "type": "rangeall"
  128503. }
  128504. ]
  128505. },
  128506. {
  128507. "n": "ISREF",
  128508. "t": 15,
  128509. "m": [
  128510. 1,
  128511. 1
  128512. ],
  128513. "p": [
  128514. {
  128515. "example": "A2",
  128516. "require": "m",
  128517. "repeat": "n",
  128518. "type": "range"
  128519. }
  128520. ]
  128521. },
  128522. {
  128523. "n": "ISTEXT",
  128524. "t": 15,
  128525. "m": [
  128526. 1,
  128527. 1
  128528. ],
  128529. "p": [
  128530. {
  128531. "example": "A2",
  128532. "require": "m",
  128533. "repeat": "n",
  128534. "type": "rangeall"
  128535. }
  128536. ]
  128537. },
  128538. {
  128539. "n": "TYPE",
  128540. "t": 15,
  128541. "m": [
  128542. 1,
  128543. 1
  128544. ],
  128545. "p": [
  128546. {
  128547. "example": "C4",
  128548. "require": "m",
  128549. "repeat": "n",
  128550. "type": "rangeall"
  128551. }
  128552. ]
  128553. },
  128554. {
  128555. "n": "N",
  128556. "t": 15,
  128557. "m": [
  128558. 1,
  128559. 1
  128560. ],
  128561. "p": [
  128562. {
  128563. "example": "A2",
  128564. "require": "m",
  128565. "repeat": "n",
  128566. "type": "rangeall"
  128567. }
  128568. ]
  128569. },
  128570. {
  128571. "n": "TO_DATE",
  128572. "t": 16,
  128573. "m": [
  128574. 1,
  128575. 1
  128576. ],
  128577. "p": [
  128578. {
  128579. "example": "25405",
  128580. "require": "m",
  128581. "repeat": "n",
  128582. "type": "rangenumber"
  128583. }
  128584. ]
  128585. },
  128586. {
  128587. "n": "TO_PURE_NUMBER",
  128588. "t": 16,
  128589. "m": [
  128590. 1,
  128591. 1
  128592. ],
  128593. "p": [
  128594. {
  128595. "example": "50%",
  128596. "require": "m",
  128597. "repeat": "n",
  128598. "type": "rangeall"
  128599. }
  128600. ]
  128601. },
  128602. {
  128603. "n": "TO_TEXT",
  128604. "t": 16,
  128605. "m": [
  128606. 1,
  128607. 1
  128608. ],
  128609. "p": [
  128610. {
  128611. "example": "24",
  128612. "require": "m",
  128613. "repeat": "n",
  128614. "type": "rangeall"
  128615. }
  128616. ]
  128617. },
  128618. {
  128619. "n": "TO_DOLLARS",
  128620. "t": 16,
  128621. "m": [
  128622. 1,
  128623. 1
  128624. ],
  128625. "p": [
  128626. {
  128627. "example": "A2",
  128628. "require": "m",
  128629. "repeat": "n",
  128630. "type": "rangenumber"
  128631. }
  128632. ]
  128633. },
  128634. {
  128635. "n": "TO_PERCENT",
  128636. "t": 16,
  128637. "m": [
  128638. 1,
  128639. 1
  128640. ],
  128641. "p": [
  128642. {
  128643. "example": "A2",
  128644. "require": "m",
  128645. "repeat": "n",
  128646. "type": "rangenumber"
  128647. }
  128648. ]
  128649. },
  128650. {
  128651. "n": "DGET",
  128652. "t": 17,
  128653. "m": [
  128654. 3,
  128655. 3
  128656. ],
  128657. "p": [
  128658. {
  128659. "example": "A2:F20",
  128660. "require": "m",
  128661. "repeat": "n",
  128662. "type": "range"
  128663. },
  128664. {
  128665. "example": "G2",
  128666. "require": "m",
  128667. "repeat": "n",
  128668. "type": "rangeall"
  128669. },
  128670. {
  128671. "example": "A22:D23",
  128672. "require": "m",
  128673. "repeat": "n",
  128674. "type": "range"
  128675. }
  128676. ]
  128677. },
  128678. {
  128679. "n": "DMAX",
  128680. "t": 17,
  128681. "m": [
  128682. 3,
  128683. 3
  128684. ],
  128685. "p": [
  128686. {
  128687. "example": "A2:F20",
  128688. "require": "m",
  128689. "repeat": "n",
  128690. "type": "range"
  128691. },
  128692. {
  128693. "example": "G2",
  128694. "require": "m",
  128695. "repeat": "n",
  128696. "type": "rangeall"
  128697. },
  128698. {
  128699. "example": "A22:D23",
  128700. "require": "m",
  128701. "repeat": "n",
  128702. "type": "range"
  128703. }
  128704. ]
  128705. },
  128706. {
  128707. "n": "DMIN",
  128708. "t": 17,
  128709. "m": [
  128710. 3,
  128711. 3
  128712. ],
  128713. "p": [
  128714. {
  128715. "example": "A2:F20",
  128716. "require": "m",
  128717. "repeat": "n",
  128718. "type": "range"
  128719. },
  128720. {
  128721. "example": "G2",
  128722. "require": "m",
  128723. "repeat": "n",
  128724. "type": "rangeall"
  128725. },
  128726. {
  128727. "example": "A22:D23",
  128728. "require": "m",
  128729. "repeat": "n",
  128730. "type": "range"
  128731. }
  128732. ]
  128733. },
  128734. {
  128735. "n": "DAVERAGE",
  128736. "t": 17,
  128737. "m": [
  128738. 3,
  128739. 3
  128740. ],
  128741. "p": [
  128742. {
  128743. "example": "A2:F20",
  128744. "require": "m",
  128745. "repeat": "n",
  128746. "type": "range"
  128747. },
  128748. {
  128749. "example": "G2",
  128750. "require": "m",
  128751. "repeat": "n",
  128752. "type": "rangeall"
  128753. },
  128754. {
  128755. "example": "A22:D23",
  128756. "require": "m",
  128757. "repeat": "n",
  128758. "type": "range"
  128759. }
  128760. ]
  128761. },
  128762. {
  128763. "n": "DCOUNT",
  128764. "t": 17,
  128765. "m": [
  128766. 3,
  128767. 3
  128768. ],
  128769. "p": [
  128770. {
  128771. "example": "A2:F20",
  128772. "require": "m",
  128773. "repeat": "n",
  128774. "type": "range"
  128775. },
  128776. {
  128777. "example": "G2",
  128778. "require": "m",
  128779. "repeat": "n",
  128780. "type": "rangeall"
  128781. },
  128782. {
  128783. "example": "A22:D23",
  128784. "require": "m",
  128785. "repeat": "n",
  128786. "type": "range"
  128787. }
  128788. ]
  128789. },
  128790. {
  128791. "n": "DCOUNTA",
  128792. "t": 17,
  128793. "m": [
  128794. 3,
  128795. 3
  128796. ],
  128797. "p": [
  128798. {
  128799. "example": "A2:F20",
  128800. "require": "m",
  128801. "repeat": "n",
  128802. "type": "range"
  128803. },
  128804. {
  128805. "example": "G2",
  128806. "require": "m",
  128807. "repeat": "n",
  128808. "type": "rangeall"
  128809. },
  128810. {
  128811. "example": "A22:D23",
  128812. "require": "m",
  128813. "repeat": "n",
  128814. "type": "range"
  128815. }
  128816. ]
  128817. },
  128818. {
  128819. "n": "DPRODUCT",
  128820. "t": 17,
  128821. "m": [
  128822. 3,
  128823. 3
  128824. ],
  128825. "p": [
  128826. {
  128827. "example": "A2:F20",
  128828. "require": "m",
  128829. "repeat": "n",
  128830. "type": "range"
  128831. },
  128832. {
  128833. "example": "G2",
  128834. "require": "m",
  128835. "repeat": "n",
  128836. "type": "rangeall"
  128837. },
  128838. {
  128839. "example": "A22:D23",
  128840. "require": "m",
  128841. "repeat": "n",
  128842. "type": "range"
  128843. }
  128844. ]
  128845. },
  128846. {
  128847. "n": "DSTDEV",
  128848. "t": 17,
  128849. "m": [
  128850. 3,
  128851. 3
  128852. ],
  128853. "p": [
  128854. {
  128855. "example": "A2:F20",
  128856. "require": "m",
  128857. "repeat": "n",
  128858. "type": "range"
  128859. },
  128860. {
  128861. "example": "G2",
  128862. "require": "m",
  128863. "repeat": "n",
  128864. "type": "rangeall"
  128865. },
  128866. {
  128867. "example": "A22:D23",
  128868. "require": "m",
  128869. "repeat": "n",
  128870. "type": "range"
  128871. }
  128872. ]
  128873. },
  128874. {
  128875. "n": "DSTDEVP",
  128876. "t": 17,
  128877. "m": [
  128878. 3,
  128879. 3
  128880. ],
  128881. "p": [
  128882. {
  128883. "example": "A2:F20",
  128884. "require": "m",
  128885. "repeat": "n",
  128886. "type": "range"
  128887. },
  128888. {
  128889. "example": "G2",
  128890. "require": "m",
  128891. "repeat": "n",
  128892. "type": "rangeall"
  128893. },
  128894. {
  128895. "example": "A22:D23",
  128896. "require": "m",
  128897. "repeat": "n",
  128898. "type": "range"
  128899. }
  128900. ]
  128901. },
  128902. {
  128903. "n": "DSUM",
  128904. "t": 17,
  128905. "m": [
  128906. 3,
  128907. 3
  128908. ],
  128909. "p": [
  128910. {
  128911. "example": "A2:F20",
  128912. "require": "m",
  128913. "repeat": "n",
  128914. "type": "range"
  128915. },
  128916. {
  128917. "example": "G2",
  128918. "require": "m",
  128919. "repeat": "n",
  128920. "type": "rangeall"
  128921. },
  128922. {
  128923. "example": "A22:D23",
  128924. "require": "m",
  128925. "repeat": "n",
  128926. "type": "range"
  128927. }
  128928. ]
  128929. },
  128930. {
  128931. "n": "DVAR",
  128932. "t": 17,
  128933. "m": [
  128934. 3,
  128935. 3
  128936. ],
  128937. "p": [
  128938. {
  128939. "example": "A2:F20",
  128940. "require": "m",
  128941. "repeat": "n",
  128942. "type": "range"
  128943. },
  128944. {
  128945. "example": "G2",
  128946. "require": "m",
  128947. "repeat": "n",
  128948. "type": "rangeall"
  128949. },
  128950. {
  128951. "example": "A22:D23",
  128952. "require": "m",
  128953. "repeat": "n",
  128954. "type": "range"
  128955. }
  128956. ]
  128957. },
  128958. {
  128959. "n": "DVARP",
  128960. "t": 17,
  128961. "m": [
  128962. 3,
  128963. 3
  128964. ],
  128965. "p": [
  128966. {
  128967. "example": "A2:F20",
  128968. "require": "m",
  128969. "repeat": "n",
  128970. "type": "range"
  128971. },
  128972. {
  128973. "example": "G2",
  128974. "require": "m",
  128975. "repeat": "n",
  128976. "type": "rangeall"
  128977. },
  128978. {
  128979. "example": "A22:D23",
  128980. "require": "m",
  128981. "repeat": "n",
  128982. "type": "range"
  128983. }
  128984. ]
  128985. },
  128986. {
  128987. "n": "AGE_BY_IDCARD",
  128988. "t": "3",
  128989. "m": [
  128990. 1,
  128991. 2
  128992. ],
  128993. "p": [
  128994. {
  128995. "example": "A1",
  128996. "require": "m",
  128997. "repeat": "n",
  128998. "type": "rangeall"
  128999. },
  129000. {
  129001. "example": '"2017-10-01"',
  129002. "require": "o",
  129003. "repeat": "n",
  129004. "type": "rangedatetime"
  129005. }
  129006. ]
  129007. },
  129008. {
  129009. "n": "SEX_BY_IDCARD",
  129010. "t": "3",
  129011. "m": [
  129012. 1,
  129013. 1
  129014. ],
  129015. "p": [
  129016. {
  129017. "example": '"31033519900101XXXX"',
  129018. "require": "m",
  129019. "repeat": "n",
  129020. "type": "rangeall"
  129021. }
  129022. ]
  129023. },
  129024. {
  129025. "n": "BIRTHDAY_BY_IDCARD",
  129026. "t": "3",
  129027. "m": [
  129028. 1,
  129029. 2
  129030. ],
  129031. "p": [
  129032. {
  129033. "example": '"31033519900101XXXX"',
  129034. "require": "m",
  129035. "repeat": "n",
  129036. "type": "rangeall"
  129037. },
  129038. {
  129039. "example": "0",
  129040. "require": "o",
  129041. "repeat": "n",
  129042. "type": "rangeall"
  129043. }
  129044. ]
  129045. },
  129046. {
  129047. "n": "PROVINCE_BY_IDCARD",
  129048. "t": "3",
  129049. "m": [
  129050. 1,
  129051. 1
  129052. ],
  129053. "p": [
  129054. {
  129055. "example": '"31033519900101XXXX"',
  129056. "require": "m",
  129057. "repeat": "n",
  129058. "type": "rangeall"
  129059. }
  129060. ]
  129061. },
  129062. {
  129063. "n": "CITY_BY_IDCARD",
  129064. "t": "3",
  129065. "m": [
  129066. 1,
  129067. 1
  129068. ],
  129069. "p": [
  129070. {
  129071. "example": '"31033519900101XXXX"',
  129072. "require": "m",
  129073. "repeat": "n",
  129074. "type": "rangeall"
  129075. }
  129076. ]
  129077. },
  129078. {
  129079. "n": "STAR_BY_IDCARD",
  129080. "t": "3",
  129081. "m": [
  129082. 1,
  129083. 1
  129084. ],
  129085. "p": [
  129086. {
  129087. "example": '"31033519900101XXXX"',
  129088. "require": "m",
  129089. "repeat": "n",
  129090. "type": "rangeall"
  129091. }
  129092. ]
  129093. },
  129094. {
  129095. "n": "ANIMAL_BY_IDCARD",
  129096. "t": "3",
  129097. "m": [
  129098. 1,
  129099. 1
  129100. ],
  129101. "p": [
  129102. {
  129103. "example": '"31033519900101XXXX"',
  129104. "require": "m",
  129105. "repeat": "n",
  129106. "type": "rangeall"
  129107. }
  129108. ]
  129109. },
  129110. {
  129111. "n": "ISIDCARD",
  129112. "t": "3",
  129113. "m": [
  129114. 1,
  129115. 1
  129116. ],
  129117. "p": [
  129118. {
  129119. "example": '"31033519900101XXXX"',
  129120. "require": "m",
  129121. "repeat": "n",
  129122. "type": "rangeall"
  129123. }
  129124. ]
  129125. },
  129126. {
  129127. "n": "DM_TEXT_CUTWORD",
  129128. "t": "4",
  129129. "m": [
  129130. 1,
  129131. 2
  129132. ],
  129133. "p": [
  129134. {
  129135. "example": '"I came to Beijing Tsinghua University"',
  129136. "require": "m",
  129137. "repeat": "n",
  129138. "type": "rangeall"
  129139. },
  129140. {
  129141. "example": "0",
  129142. "require": "o",
  129143. "repeat": "n",
  129144. "type": "rangenumber"
  129145. }
  129146. ]
  129147. },
  129148. {
  129149. "n": "DM_TEXT_TFIDF",
  129150. "t": "4",
  129151. "m": [
  129152. 1,
  129153. 3
  129154. ],
  129155. "p": [
  129156. {
  129157. "example": '"I came to Beijing Tsinghua University"',
  129158. "require": "m",
  129159. "repeat": "n",
  129160. "type": "rangeall"
  129161. },
  129162. {
  129163. "example": "20",
  129164. "require": "o",
  129165. "repeat": "n",
  129166. "type": "rangenumber"
  129167. },
  129168. {
  129169. "example": "1",
  129170. "require": "o",
  129171. "repeat": "n",
  129172. "type": "rangenumber"
  129173. }
  129174. ]
  129175. },
  129176. {
  129177. "n": "DM_TEXT_TEXTRANK",
  129178. "t": "4",
  129179. "m": [
  129180. 1,
  129181. 3
  129182. ],
  129183. "p": [
  129184. {
  129185. "example": '"I came to Beijing Tsinghua University"',
  129186. "require": "m",
  129187. "repeat": "n",
  129188. "type": "rangeall"
  129189. },
  129190. {
  129191. "example": "20",
  129192. "require": "o",
  129193. "repeat": "n",
  129194. "type": "rangenumber"
  129195. },
  129196. {
  129197. "example": "1",
  129198. "require": "o",
  129199. "repeat": "n",
  129200. "type": "rangenumber"
  129201. }
  129202. ]
  129203. },
  129204. {
  129205. "n": "DATA_CN_STOCK_CLOSE",
  129206. "t": "5",
  129207. "m": [
  129208. 1,
  129209. 3
  129210. ],
  129211. "p": [
  129212. {
  129213. "example": '"000001"',
  129214. "require": "m",
  129215. "repeat": "n",
  129216. "type": "rangeall"
  129217. },
  129218. {
  129219. "example": "2015-01-08",
  129220. "require": "o",
  129221. "repeat": "n",
  129222. "type": "rangedate"
  129223. },
  129224. {
  129225. "example": "0",
  129226. "require": "o",
  129227. "repeat": "n",
  129228. "type": "rangenumber"
  129229. }
  129230. ]
  129231. },
  129232. {
  129233. "n": "DATA_CN_STOCK_OPEN",
  129234. "t": "5",
  129235. "m": [
  129236. 1,
  129237. 3
  129238. ],
  129239. "p": [
  129240. {
  129241. "example": '"000001"',
  129242. "require": "m",
  129243. "repeat": "n",
  129244. "type": "rangeall"
  129245. },
  129246. {
  129247. "example": "2015-01-08",
  129248. "require": "o",
  129249. "repeat": "n",
  129250. "type": "rangedate"
  129251. },
  129252. {
  129253. "example": "0",
  129254. "require": "o",
  129255. "repeat": "n",
  129256. "type": "rangenumber"
  129257. }
  129258. ]
  129259. },
  129260. {
  129261. "n": "DATA_CN_STOCK_MAX",
  129262. "t": "5",
  129263. "m": [
  129264. 1,
  129265. 3
  129266. ],
  129267. "p": [
  129268. {
  129269. "example": '"000001"',
  129270. "require": "m",
  129271. "repeat": "n",
  129272. "type": "rangeall"
  129273. },
  129274. {
  129275. "example": "2015-01-08",
  129276. "require": "o",
  129277. "repeat": "n",
  129278. "type": "rangedate"
  129279. },
  129280. {
  129281. "example": "0",
  129282. "require": "o",
  129283. "repeat": "n",
  129284. "type": "rangenumber"
  129285. }
  129286. ]
  129287. },
  129288. {
  129289. "n": "DATA_CN_STOCK_MIN",
  129290. "t": "5",
  129291. "m": [
  129292. 1,
  129293. 3
  129294. ],
  129295. "p": [
  129296. {
  129297. "example": '"000001"',
  129298. "require": "m",
  129299. "repeat": "n",
  129300. "type": "rangeall"
  129301. },
  129302. {
  129303. "example": "2015-01-08",
  129304. "require": "o",
  129305. "repeat": "n",
  129306. "type": "rangedate"
  129307. },
  129308. {
  129309. "example": "0",
  129310. "require": "o",
  129311. "repeat": "n",
  129312. "type": "rangenumber"
  129313. }
  129314. ]
  129315. },
  129316. {
  129317. "n": "DATA_CN_STOCK_VOLUMN",
  129318. "t": "5",
  129319. "m": [
  129320. 1,
  129321. 3
  129322. ],
  129323. "p": [
  129324. {
  129325. "example": '"000001"',
  129326. "require": "m",
  129327. "repeat": "n",
  129328. "type": "rangeall"
  129329. },
  129330. {
  129331. "example": "2015-01-08",
  129332. "require": "o",
  129333. "repeat": "n",
  129334. "type": "rangedate"
  129335. },
  129336. {
  129337. "example": "0",
  129338. "require": "o",
  129339. "repeat": "n",
  129340. "type": "rangenumber"
  129341. }
  129342. ]
  129343. },
  129344. {
  129345. "n": "DATA_CN_STOCK_AMOUNT",
  129346. "t": "5",
  129347. "m": [
  129348. 1,
  129349. 3
  129350. ],
  129351. "p": [
  129352. {
  129353. "example": '"000001"',
  129354. "require": "m",
  129355. "repeat": "n",
  129356. "type": "rangeall"
  129357. },
  129358. {
  129359. "example": "2015-01-08",
  129360. "require": "o",
  129361. "repeat": "n",
  129362. "type": "rangedate"
  129363. },
  129364. {
  129365. "example": "0",
  129366. "require": "o",
  129367. "repeat": "n",
  129368. "type": "rangenumber"
  129369. }
  129370. ]
  129371. },
  129372. {
  129373. "n": "ISDATE",
  129374. "t": "6",
  129375. "m": [
  129376. 1,
  129377. 1
  129378. ],
  129379. "p": [
  129380. {
  129381. "example": '"1990-01-01"',
  129382. "require": "m",
  129383. "repeat": "n",
  129384. "type": "rangeall"
  129385. }
  129386. ]
  129387. },
  129388. {
  129389. "n": "LINESPLINES",
  129390. "t": "3",
  129391. "m": [
  129392. 1,
  129393. 8
  129394. ],
  129395. "p": [
  129396. {
  129397. "example": "A1:A20",
  129398. "require": "m",
  129399. "repeat": "n",
  129400. "type": "rangeall"
  129401. },
  129402. {
  129403. "example": "#2ec7c9",
  129404. "require": "o",
  129405. "repeat": "n",
  129406. "type": "rangeall"
  129407. },
  129408. {
  129409. "example": "1",
  129410. "require": "o",
  129411. "repeat": "n",
  129412. "type": "rangeall"
  129413. },
  129414. {
  129415. "example": "avg",
  129416. "require": "o",
  129417. "repeat": "n",
  129418. "type": "rangeall"
  129419. },
  129420. {
  129421. "example": "#000",
  129422. "require": "o",
  129423. "repeat": "n",
  129424. "type": "rangeall"
  129425. },
  129426. {
  129427. "example": "#fc5c5c",
  129428. "require": "o",
  129429. "repeat": "n",
  129430. "type": "rangeall"
  129431. },
  129432. {
  129433. "example": "#fc5c5c",
  129434. "require": "o",
  129435. "repeat": "n",
  129436. "type": "rangeall"
  129437. },
  129438. {
  129439. "example": "1.5",
  129440. "require": "o",
  129441. "repeat": "n",
  129442. "type": "rangeall"
  129443. }
  129444. ]
  129445. },
  129446. {
  129447. "n": "AREASPLINES",
  129448. "t": "3",
  129449. "m": [
  129450. 1,
  129451. 5
  129452. ],
  129453. "p": [
  129454. {
  129455. "example": "A1:A20",
  129456. "require": "m",
  129457. "repeat": "n",
  129458. "type": "rangeall"
  129459. },
  129460. {
  129461. "example": "#2ec7c9",
  129462. "require": "o",
  129463. "repeat": "n",
  129464. "type": "rangeall"
  129465. },
  129466. {
  129467. "example": "#CCF3F4",
  129468. "require": "o",
  129469. "repeat": "n",
  129470. "type": "rangeall"
  129471. },
  129472. {
  129473. "example": "1",
  129474. "require": "o",
  129475. "repeat": "n",
  129476. "type": "rangeall"
  129477. },
  129478. {
  129479. "example": "avg",
  129480. "require": "o",
  129481. "repeat": "n",
  129482. "type": "rangeall"
  129483. },
  129484. {
  129485. "example": "#000",
  129486. "require": "o",
  129487. "repeat": "n",
  129488. "type": "rangeall"
  129489. }
  129490. ]
  129491. },
  129492. {
  129493. "n": "COLUMNSPLINES",
  129494. "t": "3",
  129495. "m": [
  129496. 1,
  129497. 6
  129498. ],
  129499. "p": [
  129500. {
  129501. "example": "A1:A20",
  129502. "require": "m",
  129503. "repeat": "n",
  129504. "type": "rangeall"
  129505. },
  129506. {
  129507. "example": "1",
  129508. "require": "o",
  129509. "repeat": "n",
  129510. "type": "rangeall"
  129511. },
  129512. {
  129513. "example": "#fc5c5c",
  129514. "require": "o",
  129515. "repeat": "n",
  129516. "type": "rangeall"
  129517. },
  129518. {
  129519. "example": "#97b552",
  129520. "require": "o",
  129521. "repeat": "n",
  129522. "type": "rangeall"
  129523. },
  129524. {
  129525. "example": "100",
  129526. "require": "o",
  129527. "repeat": "n",
  129528. "type": "rangeall"
  129529. },
  129530. {
  129531. "example": "#97b552",
  129532. "require": "o",
  129533. "repeat": "y",
  129534. "type": "rangeall"
  129535. }
  129536. ]
  129537. },
  129538. {
  129539. "n": "STACKCOLUMNSPLINES",
  129540. "t": "3",
  129541. "m": [
  129542. 1,
  129543. 5
  129544. ],
  129545. "p": [
  129546. {
  129547. "example": "A1:A20",
  129548. "require": "m",
  129549. "repeat": "n",
  129550. "type": "rangeall"
  129551. },
  129552. {
  129553. "example": "1",
  129554. "require": "o",
  129555. "repeat": "n",
  129556. "type": "rangeall"
  129557. },
  129558. {
  129559. "example": "1",
  129560. "require": "o",
  129561. "repeat": "n",
  129562. "type": "rangeall"
  129563. },
  129564. {
  129565. "example": "100",
  129566. "require": "o",
  129567. "repeat": "n",
  129568. "type": "rangeall"
  129569. },
  129570. {
  129571. "example": "#97b552",
  129572. "require": "o",
  129573. "repeat": "y",
  129574. "type": "rangeall"
  129575. }
  129576. ]
  129577. },
  129578. {
  129579. "n": "BARSPLINES",
  129580. "t": "3",
  129581. "m": [
  129582. 1,
  129583. 6
  129584. ],
  129585. "p": [
  129586. {
  129587. "example": "A1:A20",
  129588. "require": "m",
  129589. "repeat": "n",
  129590. "type": "rangeall"
  129591. },
  129592. {
  129593. "example": "1",
  129594. "require": "o",
  129595. "repeat": "n",
  129596. "type": "rangeall"
  129597. },
  129598. {
  129599. "example": "#fc5c5c",
  129600. "require": "o",
  129601. "repeat": "n",
  129602. "type": "rangeall"
  129603. },
  129604. {
  129605. "example": "#97b552",
  129606. "require": "o",
  129607. "repeat": "n",
  129608. "type": "rangeall"
  129609. },
  129610. {
  129611. "example": "100",
  129612. "require": "o",
  129613. "repeat": "n",
  129614. "type": "rangeall"
  129615. },
  129616. {
  129617. "example": "#97b552",
  129618. "require": "o",
  129619. "repeat": "y",
  129620. "type": "rangeall"
  129621. }
  129622. ]
  129623. },
  129624. {
  129625. "n": "STACKBARSPLINES",
  129626. "t": "3",
  129627. "m": [
  129628. 1,
  129629. 5
  129630. ],
  129631. "p": [
  129632. {
  129633. "example": "A1:A20",
  129634. "require": "m",
  129635. "repeat": "n",
  129636. "type": "rangeall"
  129637. },
  129638. {
  129639. "example": "1",
  129640. "require": "o",
  129641. "repeat": "n",
  129642. "type": "rangeall"
  129643. },
  129644. {
  129645. "example": "1",
  129646. "require": "o",
  129647. "repeat": "n",
  129648. "type": "rangeall"
  129649. },
  129650. {
  129651. "example": "100",
  129652. "require": "o",
  129653. "repeat": "n",
  129654. "type": "rangeall"
  129655. },
  129656. {
  129657. "example": "#97b552",
  129658. "require": "o",
  129659. "repeat": "y",
  129660. "type": "rangeall"
  129661. }
  129662. ]
  129663. },
  129664. {
  129665. "n": "DISCRETESPLINES",
  129666. "t": "3",
  129667. "m": [
  129668. 1,
  129669. 4
  129670. ],
  129671. "p": [
  129672. {
  129673. "example": "A1:A20",
  129674. "require": "m",
  129675. "repeat": "n",
  129676. "type": "rangeall"
  129677. },
  129678. {
  129679. "example": "1",
  129680. "require": "o",
  129681. "repeat": "n",
  129682. "type": "rangeall"
  129683. },
  129684. {
  129685. "example": "#2ec7c9",
  129686. "require": "o",
  129687. "repeat": "n",
  129688. "type": "rangeall"
  129689. },
  129690. {
  129691. "example": "#fc5c5c",
  129692. "require": "o",
  129693. "repeat": "n",
  129694. "type": "rangeall"
  129695. }
  129696. ]
  129697. },
  129698. {
  129699. "n": "TRISTATESPLINES",
  129700. "t": "3",
  129701. "m": [
  129702. 1,
  129703. 6
  129704. ],
  129705. "p": [
  129706. {
  129707. "example": "A1:A20",
  129708. "require": "m",
  129709. "repeat": "n",
  129710. "type": "rangeall"
  129711. },
  129712. {
  129713. "example": "1",
  129714. "require": "o",
  129715. "repeat": "n",
  129716. "type": "rangeall"
  129717. },
  129718. {
  129719. "example": "#fc5c5c",
  129720. "require": "o",
  129721. "repeat": "n",
  129722. "type": "rangeall"
  129723. },
  129724. {
  129725. "example": "#97b552",
  129726. "require": "o",
  129727. "repeat": "n",
  129728. "type": "rangeall"
  129729. },
  129730. {
  129731. "example": "#999",
  129732. "require": "o",
  129733. "repeat": "n",
  129734. "type": "rangeall"
  129735. },
  129736. {
  129737. "example": "#97b552",
  129738. "require": "o",
  129739. "repeat": "y",
  129740. "type": "rangeall"
  129741. }
  129742. ]
  129743. },
  129744. {
  129745. "n": "PIESPLINES",
  129746. "t": "3",
  129747. "m": [
  129748. 1,
  129749. 5
  129750. ],
  129751. "p": [
  129752. {
  129753. "example": "A1:A20",
  129754. "require": "m",
  129755. "repeat": "n",
  129756. "type": "rangeall"
  129757. },
  129758. {
  129759. "example": "0",
  129760. "require": "o",
  129761. "repeat": "n",
  129762. "type": "rangeall"
  129763. },
  129764. {
  129765. "example": "0",
  129766. "require": "o",
  129767. "repeat": "n",
  129768. "type": "rangeall"
  129769. },
  129770. {
  129771. "example": "#000",
  129772. "require": "o",
  129773. "repeat": "n",
  129774. "type": "rangeall"
  129775. },
  129776. {
  129777. "example": "#97b552",
  129778. "require": "o",
  129779. "repeat": "y",
  129780. "type": "rangeall"
  129781. }
  129782. ]
  129783. },
  129784. {
  129785. "n": "BOXSPLINES",
  129786. "t": "3",
  129787. "m": [
  129788. 1,
  129789. 4
  129790. ],
  129791. "p": [
  129792. {
  129793. "example": "A1:A20",
  129794. "require": "m",
  129795. "repeat": "n",
  129796. "type": "rangeall"
  129797. },
  129798. {
  129799. "example": "1.5",
  129800. "require": "o",
  129801. "repeat": "n",
  129802. "type": "rangeall"
  129803. },
  129804. {
  129805. "example": "10",
  129806. "require": "o",
  129807. "repeat": "n",
  129808. "type": "rangeall"
  129809. },
  129810. {
  129811. "example": "1.5",
  129812. "require": "o",
  129813. "repeat": "n",
  129814. "type": "rangeall"
  129815. }
  129816. ]
  129817. },
  129818. {
  129819. "n": "BULLETSPLINES",
  129820. "t": "3",
  129821. "m": [
  129822. 2,
  129823. 3
  129824. ],
  129825. "p": [
  129826. {
  129827. "example": "10",
  129828. "require": "m",
  129829. "repeat": "n",
  129830. "type": "rangeall"
  129831. },
  129832. {
  129833. "example": "8",
  129834. "require": "m",
  129835. "repeat": "n",
  129836. "type": "rangeall"
  129837. },
  129838. {
  129839. "example": "12",
  129840. "require": "o",
  129841. "repeat": "y",
  129842. "type": "rangeall"
  129843. }
  129844. ]
  129845. },
  129846. {
  129847. "n": "COMPOSESPLINES",
  129848. "t": "3",
  129849. "m": [
  129850. 1,
  129851. 1
  129852. ],
  129853. "p": [
  129854. {
  129855. "example": "PIESPLINES(A1:A20)",
  129856. "require": "m",
  129857. "repeat": "y",
  129858. "type": "rangeall"
  129859. }
  129860. ]
  129861. },
  129862. {
  129863. "n": "SORT",
  129864. "t": "14",
  129865. "m": [
  129866. 1,
  129867. 4
  129868. ],
  129869. "p": [
  129870. {
  129871. "example": "A2:A17",
  129872. "require": "m",
  129873. "repeat": "n",
  129874. "type": "rangenumber"
  129875. },
  129876. {
  129877. "example": "1",
  129878. "require": "o",
  129879. "repeat": "n",
  129880. "type": "rangenumber"
  129881. },
  129882. {
  129883. "example": "-1",
  129884. "require": "o",
  129885. "repeat": "n",
  129886. "type": "rangenumber"
  129887. },
  129888. {
  129889. "example": "TRUE()",
  129890. "require": "o",
  129891. "repeat": "n",
  129892. "type": "rangeall"
  129893. }
  129894. ]
  129895. },
  129896. {
  129897. "n": "FILTER",
  129898. "t": "14",
  129899. "m": [
  129900. 2,
  129901. 3
  129902. ],
  129903. "p": [
  129904. {
  129905. "example": "A5:D20",
  129906. "require": "m",
  129907. "repeat": "n",
  129908. "type": "range"
  129909. },
  129910. {
  129911. "example": "1",
  129912. "require": "m",
  129913. "repeat": "n",
  129914. "type": "range"
  129915. },
  129916. {
  129917. "example": '""',
  129918. "require": "o",
  129919. "repeat": "n",
  129920. "type": "rangeall"
  129921. }
  129922. ]
  129923. },
  129924. {
  129925. "n": "UNIQUE",
  129926. "t": "14",
  129927. "m": [
  129928. 1,
  129929. 3
  129930. ],
  129931. "p": [
  129932. {
  129933. "example": "A2:B26",
  129934. "require": "m",
  129935. "repeat": "n",
  129936. "type": "rangenumber"
  129937. },
  129938. {
  129939. "example": "TRUE()",
  129940. "require": "o",
  129941. "repeat": "n",
  129942. "type": "rangeall"
  129943. },
  129944. {
  129945. "example": "FALSE()",
  129946. "require": "o",
  129947. "repeat": "n",
  129948. "type": "rangeall"
  129949. }
  129950. ]
  129951. },
  129952. {
  129953. "n": "RANDARRAY",
  129954. "t": "14",
  129955. "m": [
  129956. 0,
  129957. 2
  129958. ],
  129959. "p": [
  129960. {
  129961. "example": "1",
  129962. "require": "o",
  129963. "repeat": "n",
  129964. "type": "rangenumber"
  129965. },
  129966. {
  129967. "example": "1",
  129968. "require": "o",
  129969. "repeat": "n",
  129970. "type": "rangenumber"
  129971. }
  129972. ]
  129973. },
  129974. {
  129975. "n": "SEQUENCE",
  129976. "t": "14",
  129977. "m": [
  129978. 1,
  129979. 4
  129980. ],
  129981. "p": [
  129982. {
  129983. "example": "1",
  129984. "require": "m",
  129985. "repeat": "n",
  129986. "type": "rangenumber"
  129987. },
  129988. {
  129989. "example": "1",
  129990. "require": "o",
  129991. "repeat": "n",
  129992. "type": "rangenumber"
  129993. },
  129994. {
  129995. "example": "1",
  129996. "require": "o",
  129997. "repeat": "n",
  129998. "type": "rangenumber"
  129999. },
  130000. {
  130001. "example": "1",
  130002. "require": "o",
  130003. "repeat": "n",
  130004. "type": "rangenumber"
  130005. }
  130006. ]
  130007. },
  130008. {
  130009. "n": "EVALUATE",
  130010. "t": "3",
  130011. "m": [
  130012. 1,
  130013. 1
  130014. ],
  130015. "p": [
  130016. {
  130017. "example": '"A1+5*2^2"',
  130018. "require": "m",
  130019. "repeat": "n",
  130020. "type": "rangeall"
  130021. }
  130022. ]
  130023. },
  130024. {
  130025. "n": "REMOTE",
  130026. "t": "5",
  130027. "m": [
  130028. 1,
  130029. 1
  130030. ],
  130031. "p": [
  130032. {
  130033. "example": "SUM(A1:A10000000)",
  130034. "require": "m",
  130035. "repeat": "n",
  130036. "type": "string"
  130037. }
  130038. ]
  130039. }
  130040. ];
  130041. }
  130042. });
  130043. // src/function/getLocalizedFunctionList.js
  130044. var getLocalizedFunctionList_default;
  130045. var init_getLocalizedFunctionList = __esm({
  130046. "src/function/getLocalizedFunctionList.js"() {
  130047. init_functionListDescriptor();
  130048. getLocalizedFunctionList_default = (localeFunctionList) => {
  130049. functionListDescriptor_default.forEach((f) => {
  130050. const localeFunction = localeFunctionList[f.n];
  130051. f.d = localeFunction.d;
  130052. f.a = localeFunction.a;
  130053. f.p.forEach((p, i2) => {
  130054. Object.assign(p, localeFunction.p[i2]);
  130055. });
  130056. });
  130057. return functionListDescriptor_default;
  130058. };
  130059. }
  130060. });
  130061. // src/function/functionlist.js
  130062. var functionlist, functionlist_default;
  130063. var init_functionlist = __esm({
  130064. "src/function/functionlist.js"() {
  130065. init_functionImplementation();
  130066. init_store();
  130067. init_locale();
  130068. init_getLocalizedFunctionList();
  130069. functionlist = function(customFunctions) {
  130070. let _locale = locale_default();
  130071. let functionListOrigin = [...getLocalizedFunctionList_default(_locale.functionlist)];
  130072. for (let i2 = 0; i2 < functionListOrigin.length; i2++) {
  130073. let func = functionListOrigin[i2];
  130074. func.f = functionImplementation_default[func.n];
  130075. }
  130076. if (customFunctions) {
  130077. functionListOrigin.push(...customFunctions);
  130078. }
  130079. store_default.functionlist = functionListOrigin;
  130080. const luckysheet_function2 = {};
  130081. for (let i2 = 0; i2 < functionListOrigin.length; i2++) {
  130082. let func = functionListOrigin[i2];
  130083. luckysheet_function2[func.n] = func;
  130084. }
  130085. window.luckysheet_function = luckysheet_function2;
  130086. store_default.luckysheet_function = luckysheet_function2;
  130087. };
  130088. functionlist_default = functionlist;
  130089. }
  130090. });
  130091. // src/controllers/print.js
  130092. function viewChange(curType, preType) {
  130093. let currentSheet = sheetmanage_default.getSheetByIndex();
  130094. if (currentSheet.config == null) {
  130095. currentSheet.config = {};
  130096. }
  130097. if (currentSheet.config.sheetViewZoom == null) {
  130098. currentSheet.config.sheetViewZoom = {};
  130099. }
  130100. let defaultZoom = 1, type = "zoomScaleNormal";
  130101. printLineAndNumberDelete(currentSheet);
  130102. if (curType == "viewNormal") {
  130103. type = "viewNormalZoomScale";
  130104. } else if (curType == "viewLayout") {
  130105. type = "viewLayoutZoomScale";
  130106. } else if (curType == "viewPage") {
  130107. type = "viewPageZoomScale";
  130108. defaultZoom = 0.6;
  130109. printLineAndNumberCreate(currentSheet);
  130110. }
  130111. let curZoom = currentSheet.config.sheetViewZoom[type];
  130112. if (curZoom == null) {
  130113. curZoom = defaultZoom;
  130114. }
  130115. currentSheet.config.curentsheetView = curType;
  130116. if (store_default.clearjfundo) {
  130117. store_default.jfredo.push({
  130118. "type": "viewChange",
  130119. "curType": curType,
  130120. "preType": preType,
  130121. "sheetIndex": store_default.currentSheetIndex
  130122. });
  130123. }
  130124. server_default.saveParam("cg", store_default.currentSheetIndex, curType, {"k": "curentsheetView"});
  130125. store_default.currentSheetView = curType;
  130126. zoomChange(curZoom);
  130127. }
  130128. function printLineAndNumberDelete(sheet) {
  130129. }
  130130. function printLineAndNumberCreate(sheet) {
  130131. }
  130132. function switchViewBtn($t) {
  130133. let $viewList = $t.parent(), preType = $viewList.find("luckysheet-print-viewBtn-active").attr("type");
  130134. if ($t.attr("type") == preType) {
  130135. return;
  130136. }
  130137. let curType = $t.attr("type");
  130138. if (curType != null) {
  130139. viewChange(curType, preType);
  130140. } else {
  130141. return;
  130142. }
  130143. $t.parent().find(".luckysheet-print-viewBtn").removeClass("luckysheet-print-viewBtn-active");
  130144. $t.addClass("luckysheet-print-viewBtn-active");
  130145. }
  130146. function printInitial() {
  130147. let container2 = luckysheetConfigsetting_default.container;
  130148. let _this = this;
  130149. $("#" + container2).find(".luckysheet-print-viewBtn").click(function() {
  130150. switchViewBtn($(this));
  130151. });
  130152. }
  130153. var init_print = __esm({
  130154. "src/controllers/print.js"() {
  130155. init_luckysheetConfigsetting();
  130156. init_zoom();
  130157. init_sheetmanage();
  130158. init_server();
  130159. init_location();
  130160. init_store();
  130161. }
  130162. });
  130163. // node_modules/flatpickr/dist/l10n/zh.js
  130164. var require_zh = __commonJS({
  130165. "node_modules/flatpickr/dist/l10n/zh.js"(exports, module) {
  130166. (function(global, factory) {
  130167. typeof exports === "object" && typeof module !== "undefined" ? factory(exports) : typeof define === "function" && define.amd ? define(["exports"], factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, factory(global.zh = {}));
  130168. })(exports, function(exports2) {
  130169. "use strict";
  130170. var fp = typeof window !== "undefined" && window.flatpickr !== void 0 ? window.flatpickr : {
  130171. l10ns: {}
  130172. };
  130173. var Mandarin2 = {
  130174. weekdays: {
  130175. shorthand: ["\u5468\u65E5", "\u5468\u4E00", "\u5468\u4E8C", "\u5468\u4E09", "\u5468\u56DB", "\u5468\u4E94", "\u5468\u516D"],
  130176. longhand: [
  130177. "\u661F\u671F\u65E5",
  130178. "\u661F\u671F\u4E00",
  130179. "\u661F\u671F\u4E8C",
  130180. "\u661F\u671F\u4E09",
  130181. "\u661F\u671F\u56DB",
  130182. "\u661F\u671F\u4E94",
  130183. "\u661F\u671F\u516D"
  130184. ]
  130185. },
  130186. months: {
  130187. shorthand: [
  130188. "\u4E00\u6708",
  130189. "\u4E8C\u6708",
  130190. "\u4E09\u6708",
  130191. "\u56DB\u6708",
  130192. "\u4E94\u6708",
  130193. "\u516D\u6708",
  130194. "\u4E03\u6708",
  130195. "\u516B\u6708",
  130196. "\u4E5D\u6708",
  130197. "\u5341\u6708",
  130198. "\u5341\u4E00\u6708",
  130199. "\u5341\u4E8C\u6708"
  130200. ],
  130201. longhand: [
  130202. "\u4E00\u6708",
  130203. "\u4E8C\u6708",
  130204. "\u4E09\u6708",
  130205. "\u56DB\u6708",
  130206. "\u4E94\u6708",
  130207. "\u516D\u6708",
  130208. "\u4E03\u6708",
  130209. "\u516B\u6708",
  130210. "\u4E5D\u6708",
  130211. "\u5341\u6708",
  130212. "\u5341\u4E00\u6708",
  130213. "\u5341\u4E8C\u6708"
  130214. ]
  130215. },
  130216. rangeSeparator: " \u81F3 ",
  130217. weekAbbreviation: "\u5468",
  130218. scrollTitle: "\u6EDA\u52A8\u5207\u6362",
  130219. toggleTitle: "\u70B9\u51FB\u5207\u6362 12/24 \u5C0F\u65F6\u65F6\u5236"
  130220. };
  130221. fp.l10ns.zh = Mandarin2;
  130222. var zh = fp.l10ns;
  130223. exports2.Mandarin = Mandarin2;
  130224. exports2.default = zh;
  130225. Object.defineProperty(exports2, "__esModule", {value: true});
  130226. });
  130227. }
  130228. });
  130229. // src/controllers/listener.js
  130230. function undoAccessible(len) {
  130231. clearTimeout(undoTimer);
  130232. undoTimer = setTimeout(() => {
  130233. $("#luckysheet-icon-undo")[len ? "removeClass" : "addClass"]("disabled");
  130234. }, 10);
  130235. }
  130236. function redoAccessible(len) {
  130237. clearTimeout(redoTimer);
  130238. redoTimer = setTimeout(() => {
  130239. $("#luckysheet-icon-redo")[len ? "removeClass" : "addClass"]("disabled");
  130240. }, 10);
  130241. }
  130242. var undoTimer, redoTimer, initListener;
  130243. var init_listener = __esm({
  130244. "src/controllers/listener.js"() {
  130245. init_util();
  130246. init_store();
  130247. init_method();
  130248. init_get();
  130249. init_api();
  130250. initListener = function() {
  130251. createProxy(store_default, "jfredo", (target, property, val, receiver) => {
  130252. if (property !== "length") {
  130253. method_default.createHookFunction("updated", val);
  130254. }
  130255. undoAccessible(store_default.jfredo.length);
  130256. });
  130257. createProxy(store_default, "jfundo", (target, property, val, receiver) => {
  130258. redoAccessible(store_default.jfundo.length);
  130259. });
  130260. createProxy(store_default, "asyncLoad", (target, property, val, receiver) => {
  130261. if (property === "length" && val === 0) {
  130262. method_default.createHookFunction("workbookCreateAfter", toJson());
  130263. }
  130264. });
  130265. };
  130266. }
  130267. });
  130268. // src/core.js
  130269. function initialWorkBook() {
  130270. luckysheetHandler();
  130271. initialFilterHandler();
  130272. initialMatrixOperation();
  130273. initialSheetBar();
  130274. formulaBarInitial();
  130275. rowColumnOperationInitial();
  130276. keyboardInitial();
  130277. orderByInitial();
  130278. zoomInitial();
  130279. printInitial();
  130280. initListener();
  130281. }
  130282. var import_zh2, luckysheet2;
  130283. var init_core = __esm({
  130284. "src/core.js"() {
  130285. init_config();
  130286. init_util();
  130287. init_store();
  130288. init_locale();
  130289. init_server();
  130290. init_luckysheetConfigsetting();
  130291. init_sheetmanage();
  130292. init_resize();
  130293. init_handler();
  130294. init_filter();
  130295. init_matrixOperation();
  130296. init_sheetBar();
  130297. init_formulaBar();
  130298. init_rowColumnOperation();
  130299. init_keyboard();
  130300. init_orderBy();
  130301. init_expendPlugins();
  130302. init_get();
  130303. init_set();
  130304. init_refresh();
  130305. init_functionlist();
  130306. init_constant();
  130307. init_getdata();
  130308. init_setdata();
  130309. init_select();
  130310. init_zoom();
  130311. init_print();
  130312. init_method();
  130313. init_api();
  130314. init_esm();
  130315. import_zh2 = __toModule(require_zh());
  130316. init_listener();
  130317. init_loading();
  130318. init_extend();
  130319. luckysheet2 = {};
  130320. luckysheet2 = common_extend(api_exports, luckysheet2);
  130321. luckysheet2.create = function(setting) {
  130322. method_default.destroy();
  130323. store_default.toJsonOptions = {};
  130324. for (let c2 in setting) {
  130325. if (c2 !== "data") {
  130326. store_default.toJsonOptions[c2] = setting[c2];
  130327. }
  130328. }
  130329. let extendsetting = common_extend(config_default, setting);
  130330. let loadurl = extendsetting.loadUrl, menu = extendsetting.menu, title = extendsetting.title;
  130331. let container2 = extendsetting.container;
  130332. store_default.container = container2;
  130333. store_default.luckysheetfile = extendsetting.data;
  130334. store_default.defaultcolumnNum = extendsetting.column;
  130335. store_default.defaultrowNum = extendsetting.row;
  130336. store_default.defaultFontSize = extendsetting.defaultFontSize;
  130337. store_default.fullscreenmode = extendsetting.fullscreenmode;
  130338. store_default.lang = extendsetting.lang;
  130339. store_default.allowEdit = extendsetting.allowEdit;
  130340. store_default.limitSheetNameLength = extendsetting.limitSheetNameLength;
  130341. store_default.defaultSheetNameMaxLength = extendsetting.defaultSheetNameMaxLength;
  130342. store_default.fontList = extendsetting.fontList;
  130343. server_default.gridKey = extendsetting.gridKey;
  130344. server_default.loadUrl = extendsetting.loadUrl;
  130345. server_default.updateUrl = extendsetting.updateUrl;
  130346. server_default.updateImageUrl = extendsetting.updateImageUrl;
  130347. server_default.title = extendsetting.title;
  130348. server_default.loadSheetUrl = extendsetting.loadSheetUrl;
  130349. server_default.allowUpdate = extendsetting.allowUpdate;
  130350. luckysheetConfigsetting_default.autoFormatw = extendsetting.autoFormatw;
  130351. luckysheetConfigsetting_default.accuracy = extendsetting.accuracy;
  130352. luckysheetConfigsetting_default.total = extendsetting.data[0].total;
  130353. luckysheetConfigsetting_default.loading = extendsetting.loading;
  130354. luckysheetConfigsetting_default.allowCopy = extendsetting.allowCopy;
  130355. luckysheetConfigsetting_default.showtoolbar = extendsetting.showtoolbar;
  130356. luckysheetConfigsetting_default.showtoolbarConfig = extendsetting.showtoolbarConfig;
  130357. luckysheetConfigsetting_default.showinfobar = extendsetting.showinfobar;
  130358. luckysheetConfigsetting_default.showsheetbar = extendsetting.showsheetbar;
  130359. luckysheetConfigsetting_default.showsheetbarConfig = extendsetting.showsheetbarConfig;
  130360. luckysheetConfigsetting_default.showstatisticBar = extendsetting.showstatisticBar;
  130361. luckysheetConfigsetting_default.showstatisticBarConfig = extendsetting.showstatisticBarConfig;
  130362. luckysheetConfigsetting_default.sheetFormulaBar = extendsetting.sheetFormulaBar;
  130363. luckysheetConfigsetting_default.cellRightClickConfig = extendsetting.cellRightClickConfig;
  130364. luckysheetConfigsetting_default.sheetRightClickConfig = extendsetting.sheetRightClickConfig;
  130365. luckysheetConfigsetting_default.pointEdit = extendsetting.pointEdit;
  130366. luckysheetConfigsetting_default.pointEditUpdate = extendsetting.pointEditUpdate;
  130367. luckysheetConfigsetting_default.pointEditZoom = extendsetting.pointEditZoom;
  130368. luckysheetConfigsetting_default.userInfo = extendsetting.userInfo;
  130369. luckysheetConfigsetting_default.userMenuItem = extendsetting.userMenuItem;
  130370. luckysheetConfigsetting_default.myFolderUrl = extendsetting.myFolderUrl;
  130371. luckysheetConfigsetting_default.functionButton = extendsetting.functionButton;
  130372. luckysheetConfigsetting_default.showConfigWindowResize = extendsetting.showConfigWindowResize;
  130373. luckysheetConfigsetting_default.enableAddRow = extendsetting.enableAddRow;
  130374. luckysheetConfigsetting_default.enableAddBackTop = extendsetting.enableAddBackTop;
  130375. luckysheetConfigsetting_default.addRowCount = extendsetting.addRowCount;
  130376. luckysheetConfigsetting_default.enablePage = extendsetting.enablePage;
  130377. luckysheetConfigsetting_default.pageInfo = extendsetting.pageInfo;
  130378. luckysheetConfigsetting_default.editMode = extendsetting.editMode;
  130379. luckysheetConfigsetting_default.beforeCreateDom = extendsetting.beforeCreateDom;
  130380. luckysheetConfigsetting_default.workbookCreateBefore = extendsetting.workbookCreateBefore;
  130381. luckysheetConfigsetting_default.workbookCreateAfter = extendsetting.workbookCreateAfter;
  130382. luckysheetConfigsetting_default.remoteFunction = extendsetting.remoteFunction;
  130383. luckysheetConfigsetting_default.customFunctions = extendsetting.customFunctions;
  130384. luckysheetConfigsetting_default.fireMousedown = extendsetting.fireMousedown;
  130385. luckysheetConfigsetting_default.forceCalculation = extendsetting.forceCalculation;
  130386. luckysheetConfigsetting_default.plugins = extendsetting.plugins;
  130387. luckysheetConfigsetting_default.rowHeaderWidth = extendsetting.rowHeaderWidth;
  130388. luckysheetConfigsetting_default.columnHeaderHeight = extendsetting.columnHeaderHeight;
  130389. luckysheetConfigsetting_default.defaultColWidth = extendsetting.defaultColWidth;
  130390. luckysheetConfigsetting_default.defaultRowHeight = extendsetting.defaultRowHeight;
  130391. luckysheetConfigsetting_default.title = extendsetting.title;
  130392. luckysheetConfigsetting_default.container = extendsetting.container;
  130393. luckysheetConfigsetting_default.hook = extendsetting.hook;
  130394. luckysheetConfigsetting_default.pager = extendsetting.pager;
  130395. luckysheetConfigsetting_default.initShowsheetbarConfig = false;
  130396. luckysheetConfigsetting_default.imageUpdateMethodConfig = extendsetting.imageUpdateMethodConfig;
  130397. if (store_default.lang === "zh")
  130398. esm_default.localize(import_zh2.default.zh);
  130399. store_default.asyncLoad.push(...luckysheetConfigsetting_default.plugins);
  130400. initPlugins(extendsetting.plugins, extendsetting.data);
  130401. functionlist_default(extendsetting.customFunctions);
  130402. let devicePixelRatio = extendsetting.devicePixelRatio;
  130403. if (devicePixelRatio == null) {
  130404. devicePixelRatio = 1;
  130405. }
  130406. store_default.devicePixelRatio = Math.ceil(devicePixelRatio);
  130407. const loadingObj = luckysheetlodingHTML("#" + container2);
  130408. store_default.loadingObj = loadingObj;
  130409. if (loadurl == "") {
  130410. sheetmanage_default.initialjfFile(menu, title);
  130411. initialWorkBook();
  130412. } else {
  130413. $.post(loadurl, {"gridKey": server_default.gridKey}, function(d) {
  130414. let data = new Function("return " + d)();
  130415. store_default.luckysheetfile = data;
  130416. sheetmanage_default.initialjfFile(menu, title);
  130417. initialWorkBook();
  130418. if (server_default.allowUpdate) {
  130419. server_default.openWebSocket();
  130420. }
  130421. });
  130422. }
  130423. };
  130424. luckysheet2.getluckysheetfile = getluckysheetfile;
  130425. luckysheet2.getluckysheet_select_save = getluckysheet_select_save;
  130426. luckysheet2.setluckysheet_select_save = setluckysheet_select_save;
  130427. luckysheet2.getconfig = getconfig;
  130428. luckysheet2.getGridData = sheetmanage_default.getGridData;
  130429. luckysheet2.buildGridData = sheetmanage_default.buildGridData;
  130430. luckysheet2.luckysheetrefreshgrid = luckysheetrefreshgrid;
  130431. luckysheet2.jfrefreshgrid = jfrefreshgrid;
  130432. luckysheet2.getcellvalue = getcellvalue;
  130433. luckysheet2.setcellvalue = setcellvalue;
  130434. luckysheet2.getdatabyselection = getdatabyselection;
  130435. luckysheet2.sheetmanage = sheetmanage_default;
  130436. luckysheet2.flowdata = function() {
  130437. return store_default.flowdata;
  130438. };
  130439. luckysheet2.selectHightlightShow = selectHightlightShow;
  130440. luckysheet2.destroy = method_default.destroy;
  130441. luckysheet2.showLoadingProgress = showloading;
  130442. luckysheet2.hideLoadingProgress = hideloading;
  130443. luckysheet2.luckysheetextendData = luckysheetextendData;
  130444. luckysheet2.locales = locales;
  130445. }
  130446. });
  130447. // src/utils/polyfill.js
  130448. function __firefox() {
  130449. HTMLElement.prototype.__defineGetter__("runtimeStyle", __element_style);
  130450. window.constructor.prototype.__defineGetter__("event", __window_event);
  130451. Event.prototype.__defineGetter__("srcElement", __event_srcElement);
  130452. }
  130453. function __element_style() {
  130454. return this.style;
  130455. }
  130456. function __window_event() {
  130457. return __window_event_constructor();
  130458. }
  130459. function __event_srcElement() {
  130460. return this.target;
  130461. }
  130462. function __window_event_constructor() {
  130463. if (document.all) {
  130464. return window.event;
  130465. }
  130466. var _caller = __window_event_constructor.caller;
  130467. while (_caller != null) {
  130468. var _argument = _caller.arguments[0];
  130469. if (_argument) {
  130470. var _temp = _argument.constructor;
  130471. if (_temp.toString().indexOf("Event") != -1) {
  130472. return _argument;
  130473. }
  130474. }
  130475. _caller = _caller.caller;
  130476. }
  130477. return null;
  130478. }
  130479. var polyfill_default;
  130480. var init_polyfill = __esm({
  130481. "src/utils/polyfill.js"() {
  130482. polyfill_default = __firefox;
  130483. }
  130484. });
  130485. // src/index.js
  130486. var require_src = __commonJS({
  130487. "src/index.js"(exports, module) {
  130488. init_math();
  130489. init_core();
  130490. init_polyfill();
  130491. if (window.addEventListener && navigator.userAgent.indexOf("Firefox") > 0) {
  130492. polyfill_default();
  130493. }
  130494. module.exports = luckysheet2;
  130495. }
  130496. });
  130497. return require_src();
  130498. })();
  130499. /*!
  130500. * escape-html
  130501. * Copyright(c) 2012-2013 TJ Holowaychuk
  130502. * Copyright(c) 2015 Andreas Lubbe
  130503. * Copyright(c) 2015 Tiancheng "Timothy" Gu
  130504. * MIT Licensed
  130505. */
  130506. /*! @preserve
  130507. * numeral.js
  130508. * version : 2.0.6
  130509. * author : Adam Draper
  130510. * license : MIT
  130511. * http://adamwdraper.github.com/Numeral-js/
  130512. */
  130513. //# sourceMappingURL=luckysheet.umd.js.map