ligerui.all.js 536 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364113651136611367113681136911370113711137211373113741137511376113771137811379113801138111382113831138411385113861138711388113891139011391113921139311394113951139611397113981139911400114011140211403114041140511406114071140811409114101141111412114131141411415114161141711418114191142011421114221142311424114251142611427114281142911430114311143211433114341143511436114371143811439114401144111442114431144411445114461144711448114491145011451114521145311454114551145611457114581145911460114611146211463114641146511466114671146811469114701147111472114731147411475114761147711478114791148011481114821148311484114851148611487114881148911490114911149211493114941149511496114971149811499115001150111502115031150411505115061150711508115091151011511115121151311514115151151611517115181151911520115211152211523115241152511526115271152811529115301153111532115331153411535115361153711538115391154011541115421154311544115451154611547115481154911550115511155211553115541155511556115571155811559115601156111562115631156411565115661156711568115691157011571115721157311574115751157611577115781157911580115811158211583115841158511586115871158811589115901159111592115931159411595115961159711598115991160011601116021160311604116051160611607116081160911610116111161211613116141161511616116171161811619116201162111622116231162411625116261162711628116291163011631116321163311634116351163611637116381163911640116411164211643116441164511646116471164811649116501165111652116531165411655116561165711658116591166011661116621166311664116651166611667116681166911670116711167211673116741167511676116771167811679116801168111682116831168411685116861168711688116891169011691116921169311694116951169611697116981169911700117011170211703117041170511706117071170811709117101171111712117131171411715117161171711718117191172011721117221172311724117251172611727117281172911730117311173211733117341173511736117371173811739117401174111742117431174411745117461174711748117491175011751117521175311754117551175611757117581175911760117611176211763117641176511766117671176811769117701177111772117731177411775117761177711778117791178011781117821178311784117851178611787117881178911790117911179211793117941179511796117971179811799118001180111802118031180411805118061180711808118091181011811118121181311814118151181611817118181181911820118211182211823118241182511826118271182811829118301183111832118331183411835118361183711838118391184011841118421184311844118451184611847118481184911850118511185211853118541185511856118571185811859118601186111862118631186411865118661186711868118691187011871118721187311874118751187611877118781187911880118811188211883118841188511886118871188811889118901189111892118931189411895118961189711898118991190011901119021190311904119051190611907119081190911910119111191211913119141191511916119171191811919119201192111922119231192411925119261192711928119291193011931119321193311934119351193611937119381193911940119411194211943119441194511946119471194811949119501195111952119531195411955119561195711958119591196011961119621196311964119651196611967119681196911970119711197211973119741197511976119771197811979119801198111982119831198411985119861198711988119891199011991119921199311994119951199611997119981199912000120011200212003120041200512006120071200812009120101201112012120131201412015120161201712018120191202012021120221202312024120251202612027120281202912030120311203212033120341203512036120371203812039120401204112042120431204412045120461204712048120491205012051120521205312054120551205612057120581205912060120611206212063120641206512066120671206812069120701207112072120731207412075120761207712078120791208012081120821208312084120851208612087120881208912090120911209212093120941209512096120971209812099121001210112102121031210412105121061210712108121091211012111121121211312114121151211612117121181211912120121211212212123121241212512126121271212812129121301213112132121331213412135121361213712138121391214012141121421214312144121451214612147121481214912150121511215212153121541215512156121571215812159121601216112162121631216412165121661216712168121691217012171121721217312174121751217612177121781217912180121811218212183121841218512186121871218812189121901219112192121931219412195121961219712198121991220012201122021220312204122051220612207122081220912210122111221212213122141221512216122171221812219122201222112222122231222412225122261222712228122291223012231122321223312234122351223612237122381223912240122411224212243122441224512246122471224812249122501225112252122531225412255122561225712258122591226012261122621226312264122651226612267122681226912270122711227212273122741227512276122771227812279122801228112282122831228412285122861228712288122891229012291122921229312294122951229612297122981229912300123011230212303123041230512306123071230812309123101231112312123131231412315123161231712318123191232012321123221232312324123251232612327123281232912330123311233212333123341233512336123371233812339123401234112342123431234412345123461234712348123491235012351123521235312354123551235612357123581235912360123611236212363123641236512366123671236812369123701237112372123731237412375123761237712378123791238012381123821238312384123851238612387123881238912390123911239212393123941239512396123971239812399124001240112402124031240412405124061240712408124091241012411124121241312414124151241612417124181241912420124211242212423124241242512426124271242812429124301243112432124331243412435124361243712438124391244012441124421244312444124451244612447124481244912450124511245212453124541245512456124571245812459124601246112462124631246412465124661246712468124691247012471124721247312474124751247612477124781247912480124811248212483124841248512486124871248812489124901249112492124931249412495124961249712498124991250012501125021250312504125051250612507125081250912510125111251212513125141251512516125171251812519125201252112522125231252412525125261252712528125291253012531125321253312534125351253612537125381253912540125411254212543125441254512546125471254812549125501255112552125531255412555125561255712558125591256012561125621256312564125651256612567125681256912570125711257212573125741257512576125771257812579125801258112582125831258412585125861258712588125891259012591125921259312594125951259612597125981259912600126011260212603126041260512606126071260812609126101261112612126131261412615126161261712618126191262012621126221262312624126251262612627126281262912630126311263212633126341263512636126371263812639126401264112642126431264412645126461264712648126491265012651126521265312654126551265612657126581265912660126611266212663126641266512666126671266812669126701267112672126731267412675126761267712678126791268012681126821268312684126851268612687126881268912690126911269212693126941269512696126971269812699127001270112702127031270412705127061270712708127091271012711127121271312714127151271612717127181271912720127211272212723127241272512726127271272812729127301273112732127331273412735127361273712738127391274012741127421274312744127451274612747127481274912750127511275212753127541275512756127571275812759127601276112762127631276412765127661276712768127691277012771127721277312774127751277612777127781277912780127811278212783127841278512786127871278812789127901279112792127931279412795127961279712798127991280012801128021280312804128051280612807128081280912810128111281212813128141281512816128171281812819128201282112822128231282412825128261282712828128291283012831128321283312834128351283612837128381283912840128411284212843128441284512846128471284812849128501285112852128531285412855128561285712858128591286012861128621286312864128651286612867128681286912870128711287212873128741287512876128771287812879128801288112882128831288412885128861288712888128891289012891128921289312894128951289612897128981289912900129011290212903129041290512906129071290812909129101291112912129131291412915129161291712918129191292012921129221292312924129251292612927129281292912930129311293212933129341293512936129371293812939129401294112942129431294412945129461294712948129491295012951129521295312954129551295612957129581295912960129611296212963129641296512966129671296812969129701297112972129731297412975129761297712978129791298012981129821298312984129851298612987129881298912990129911299212993129941299512996129971299812999130001300113002130031300413005130061300713008130091301013011130121301313014130151301613017130181301913020130211302213023130241302513026130271302813029130301303113032130331303413035130361303713038130391304013041130421304313044130451304613047130481304913050130511305213053130541305513056130571305813059130601306113062130631306413065130661306713068130691307013071130721307313074130751307613077130781307913080130811308213083130841308513086130871308813089130901309113092130931309413095130961309713098130991310013101131021310313104131051310613107131081310913110131111311213113131141311513116131171311813119131201312113122131231312413125131261312713128131291313013131131321313313134131351313613137131381313913140131411314213143131441314513146131471314813149131501315113152131531315413155131561315713158131591316013161131621316313164131651316613167131681316913170131711317213173131741317513176131771317813179131801318113182131831318413185131861318713188131891319013191131921319313194131951319613197131981319913200132011320213203132041320513206132071320813209132101321113212132131321413215132161321713218132191322013221132221322313224132251322613227132281322913230132311323213233132341323513236132371323813239132401324113242132431324413245132461324713248132491325013251132521325313254132551325613257132581325913260132611326213263132641326513266132671326813269132701327113272132731327413275132761327713278132791328013281132821328313284132851328613287132881328913290132911329213293132941329513296132971329813299133001330113302133031330413305133061330713308133091331013311133121331313314133151331613317133181331913320133211332213323133241332513326133271332813329133301333113332133331333413335133361333713338133391334013341133421334313344133451334613347133481334913350133511335213353133541335513356133571335813359133601336113362133631336413365133661336713368133691337013371133721337313374133751337613377133781337913380133811338213383133841338513386133871338813389133901339113392133931339413395133961339713398133991340013401134021340313404134051340613407134081340913410134111341213413134141341513416134171341813419134201342113422134231342413425134261342713428134291343013431134321343313434134351343613437134381343913440134411344213443134441344513446134471344813449134501345113452134531345413455134561345713458134591346013461134621346313464134651346613467134681346913470134711347213473134741347513476134771347813479134801348113482134831348413485134861348713488134891349013491134921349313494134951349613497134981349913500135011350213503135041350513506135071350813509135101351113512135131351413515135161351713518135191352013521135221352313524135251352613527135281352913530135311353213533135341353513536135371353813539135401354113542135431354413545135461354713548135491355013551135521355313554135551355613557135581355913560135611356213563135641356513566135671356813569135701357113572135731357413575135761357713578135791358013581135821358313584135851358613587135881358913590135911359213593135941359513596135971359813599136001360113602136031360413605136061360713608136091361013611136121361313614136151361613617136181361913620136211362213623136241362513626136271362813629136301363113632136331363413635136361363713638136391364013641136421364313644136451364613647136481364913650136511365213653136541365513656136571365813659136601366113662136631366413665136661366713668136691367013671136721367313674136751367613677136781367913680136811368213683136841368513686136871368813689136901369113692136931369413695136961369713698136991370013701137021370313704137051370613707137081370913710137111371213713137141371513716137171371813719137201372113722137231372413725137261372713728137291373013731137321373313734137351373613737137381373913740137411374213743137441374513746137471374813749137501375113752137531375413755137561375713758137591376013761137621376313764137651376613767137681376913770137711377213773137741377513776137771377813779137801378113782137831378413785137861378713788137891379013791137921379313794137951379613797137981379913800138011380213803138041380513806138071380813809138101381113812138131381413815138161381713818138191382013821138221382313824138251382613827138281382913830138311383213833138341383513836138371383813839138401384113842138431384413845138461384713848138491385013851138521385313854138551385613857138581385913860138611386213863138641386513866138671386813869138701387113872138731387413875138761387713878138791388013881138821388313884138851388613887138881388913890138911389213893138941389513896138971389813899139001390113902139031390413905139061390713908139091391013911139121391313914139151391613917139181391913920139211392213923139241392513926139271392813929139301393113932139331393413935139361393713938139391394013941139421394313944139451394613947139481394913950139511395213953139541395513956139571395813959139601396113962139631396413965139661396713968139691397013971139721397313974139751397613977139781397913980139811398213983139841398513986139871398813989139901399113992139931399413995139961399713998139991400014001140021400314004140051400614007140081400914010140111401214013140141401514016140171401814019140201402114022140231402414025140261402714028140291403014031140321403314034140351403614037140381403914040140411404214043140441404514046140471404814049140501405114052140531405414055140561405714058140591406014061140621406314064140651406614067140681406914070140711407214073140741407514076140771407814079140801408114082140831408414085140861408714088140891409014091140921409314094140951409614097140981409914100141011410214103141041410514106141071410814109141101411114112141131411414115141161411714118141191412014121141221412314124141251412614127141281412914130141311413214133141341413514136141371413814139141401414114142141431414414145141461414714148141491415014151141521415314154141551415614157141581415914160141611416214163141641416514166141671416814169141701417114172141731417414175141761417714178141791418014181141821418314184141851418614187141881418914190141911419214193141941419514196141971419814199142001420114202142031420414205142061420714208142091421014211142121421314214142151421614217142181421914220142211422214223142241422514226142271422814229142301423114232142331423414235142361423714238142391424014241142421424314244142451424614247142481424914250142511425214253142541425514256142571425814259142601426114262142631426414265142661426714268142691427014271142721427314274142751427614277142781427914280142811428214283142841428514286142871428814289142901429114292142931429414295142961429714298142991430014301143021430314304143051430614307143081430914310143111431214313143141431514316143171431814319143201432114322143231432414325143261432714328143291433014331143321433314334143351433614337143381433914340143411434214343143441434514346143471434814349143501435114352143531435414355143561435714358143591436014361143621436314364143651436614367143681436914370143711437214373143741437514376143771437814379143801438114382143831438414385143861438714388143891439014391143921439314394143951439614397143981439914400144011440214403144041440514406144071440814409144101441114412144131441414415144161441714418144191442014421144221442314424144251442614427144281442914430144311443214433144341443514436144371443814439144401444114442144431444414445144461444714448144491445014451144521445314454144551445614457144581445914460144611446214463144641446514466144671446814469144701447114472144731447414475144761447714478144791448014481144821448314484144851448614487144881448914490144911449214493144941449514496144971449814499145001450114502145031450414505145061450714508
  1. /**
  2. * jQuery ligerUI 1.1.9
  3. *
  4. * http://ligerui.com
  5. *
  6. * Author daomi 2012 [ gd_star@163.com ]
  7. *
  8. */
  9. (function ($)
  10. {
  11. //ligerui 继承方法
  12. Function.prototype.ligerExtend = function (parent, overrides)
  13. {
  14. if (typeof parent != 'function') return this;
  15. //保存对父类的引用
  16. this.base = parent.prototype;
  17. this.base.constructor = parent;
  18. //继承
  19. var f = function () { };
  20. f.prototype = parent.prototype;
  21. this.prototype = new f();
  22. this.prototype.constructor = this;
  23. //附加属性方法
  24. if (overrides) $.extend(this.prototype, overrides);
  25. };
  26. //延时加载
  27. Function.prototype.ligerDefer = function (o, defer, args)
  28. {
  29. var fn = this;
  30. return setTimeout(function () { fn.apply(o, args || []); }, defer);
  31. };
  32. // 核心对象
  33. window.liger = $.ligerui = {
  34. version: 'V1.1.9',
  35. managerCount: 0,
  36. //组件管理器池
  37. managers: {},
  38. managerIdPrev: 'ligerui',
  39. //错误提示
  40. error: {
  41. managerIsExist: '管理器id已经存在'
  42. },
  43. getId: function (prev)
  44. {
  45. prev = prev || this.managerIdPrev;
  46. var id = prev + (1000 + this.managerCount);
  47. this.managerCount++;
  48. return id;
  49. },
  50. add: function (manager)
  51. {
  52. if (arguments.length == 2)
  53. {
  54. var m = arguments[1];
  55. m.id = m.id || m.options.id || arguments[0].id;
  56. this.addManager(m);
  57. return;
  58. }
  59. if (!manager.id) manager.id = this.getId(manager.__idPrev());
  60. if (this.managers[manager.id])
  61. throw new Error(this.error.managerIsExist);
  62. this.managers[manager.id] = manager;
  63. },
  64. remove: function (arg)
  65. {
  66. if (typeof arg == "string" || typeof arg == "number")
  67. {
  68. delete $.ligerui.managers[arg];
  69. }
  70. else if (typeof arg == "object" && arg instanceof $.ligerui.core.Component)
  71. {
  72. delete $.ligerui.managers[arg.id];
  73. }
  74. },
  75. //获取ligerui对象
  76. //1,传入ligerui ID
  77. //2,传入Dom Object Array(jQuery)
  78. get: function (arg, idAttrName)
  79. {
  80. idAttrName = idAttrName || "ligeruiid";
  81. if (typeof arg == "string" || typeof arg == "number")
  82. {
  83. return $.ligerui.managers[arg];
  84. }
  85. else if (typeof arg == "object" && arg.length)
  86. {
  87. if (!arg[0][idAttrName] && !$(arg[0]).attr(idAttrName)) return null;
  88. return $.ligerui.managers[arg[0][idAttrName] || $(arg[0]).attr(idAttrName)];
  89. }
  90. return null;
  91. },
  92. //根据类型查找某一个对象
  93. find: function (type)
  94. {
  95. var arr = [];
  96. for (var id in this.managers)
  97. {
  98. var manager = this.managers[id];
  99. if (type instanceof Function)
  100. {
  101. if (manager instanceof type)
  102. {
  103. arr.push(manager);
  104. }
  105. }
  106. else if (type instanceof Array)
  107. {
  108. if ($.inArray(manager.__getType(), type) != -1)
  109. {
  110. arr.push(manager);
  111. }
  112. }
  113. else
  114. {
  115. if (manager.__getType() == type)
  116. {
  117. arr.push(manager);
  118. }
  119. }
  120. }
  121. return arr;
  122. },
  123. //$.fn.liger{Plugin} 和 $.fn.ligerGet{Plugin}Manager
  124. //会调用这个方法,并传入作用域(this)
  125. //@parm [plugin] 插件名
  126. //@parm [args] 参数(数组)
  127. //@parm [ext] 扩展参数,定义命名空间或者id属性名
  128. run: function (plugin, args, ext)
  129. {
  130. if (!plugin) return;
  131. ext = $.extend({
  132. defaultsNamespace: 'ligerDefaults',
  133. methodsNamespace: 'ligerMethods',
  134. controlNamespace: 'controls',
  135. idAttrName: 'ligeruiid',
  136. isStatic: false,
  137. hasElement: true, //是否拥有element主体(比如drag、resizable等辅助性插件就不拥有)
  138. propertyToElemnt: null //链接到element的属性名
  139. }, ext || {});
  140. plugin = plugin.replace(/^ligerGet/, '');
  141. plugin = plugin.replace(/^liger/, '');
  142. if (this == null || this == window || ext.isStatic)
  143. {
  144. if (!$.ligerui.plugins[plugin])
  145. {
  146. $.ligerui.plugins[plugin] = {
  147. fn: $['liger' + plugin],
  148. isStatic: true
  149. };
  150. }
  151. return new $.ligerui[ext.controlNamespace][plugin]($.extend({}, $[ext.defaultsNamespace][plugin] || {}, $[ext.defaultsNamespace][plugin + 'String'] || {}, args.length > 0 ? args[0] : {}));
  152. }
  153. if (!$.ligerui.plugins[plugin])
  154. {
  155. $.ligerui.plugins[plugin] = {
  156. fn: $.fn['liger' + plugin],
  157. isStatic: false
  158. };
  159. }
  160. if (/Manager$/.test(plugin)) return $.ligerui.get(this, ext.idAttrName);
  161. this.each(function ()
  162. {
  163. if (this[ext.idAttrName] || $(this).attr(ext.idAttrName))
  164. {
  165. var manager = $.ligerui.get(this[ext.idAttrName] || $(this).attr(ext.idAttrName));
  166. if (manager && args.length > 0) manager.set(args[0]);
  167. //已经执行过
  168. return;
  169. }
  170. if (args.length >= 1 && typeof args[0] == 'string') return;
  171. //只要第一个参数不是string类型,都执行组件的实例化工作
  172. var options = args.length > 0 ? args[0] : null;
  173. var p = $.extend({}, $[ext.defaultsNamespace][plugin] || {}
  174. , $[ext.defaultsNamespace][plugin + 'String'] || {}, options || {});
  175. if (ext.propertyToElemnt) p[ext.propertyToElemnt] = this;
  176. if (ext.hasElement)
  177. {
  178. new $.ligerui[ext.controlNamespace][plugin](this, p);
  179. }
  180. else
  181. {
  182. new $.ligerui[ext.controlNamespace][plugin](p);
  183. }
  184. });
  185. if (this.length == 0) return null;
  186. if (args.length == 0) return $.ligerui.get(this, ext.idAttrName);
  187. if (typeof args[0] == 'object') return $.ligerui.get(this, ext.idAttrName);
  188. if (typeof args[0] == 'string')
  189. {
  190. var manager = $.ligerui.get(this, ext.idAttrName);
  191. if (manager == null) return;
  192. if (args[0] == "option")
  193. {
  194. if (args.length == 2)
  195. return manager.get(args[1]); //manager get
  196. else if (args.length >= 3)
  197. return manager.set(args[1], args[2]); //manager set
  198. }
  199. else
  200. {
  201. var method = args[0];
  202. if (!manager[method]) return; //不存在这个方法
  203. var parms = Array.apply(null, args);
  204. parms.shift();
  205. return manager[method].apply(manager, parms); //manager method
  206. }
  207. }
  208. return null;
  209. },
  210. //扩展
  211. //1,默认参数
  212. //2,本地化扩展
  213. defaults: {},
  214. //3,方法接口扩展
  215. methods: {},
  216. //命名空间
  217. //核心控件,封装了一些常用方法
  218. core: {},
  219. //命名空间
  220. //组件的集合
  221. controls: {},
  222. //plugin 插件的集合
  223. plugins: {}
  224. };
  225. //扩展对象
  226. $.ligerDefaults = {};
  227. //扩展对象
  228. $.ligerMethos = {};
  229. //关联起来
  230. $.ligerui.defaults = $.ligerDefaults;
  231. $.ligerui.methods = $.ligerMethos;
  232. //获取ligerui对象
  233. //@parm [plugin] 插件名,可为空
  234. $.fn.liger = function (plugin)
  235. {
  236. if (plugin)
  237. {
  238. return $.ligerui.run.call(this, plugin, arguments);
  239. }
  240. else
  241. {
  242. return $.ligerui.get(this);
  243. }
  244. };
  245. //组件基类
  246. //1,完成定义参数处理方法和参数属性初始化的工作
  247. //2,完成定义事件处理方法和事件属性初始化的工作
  248. $.ligerui.core.Component = function (options)
  249. {
  250. //事件容器
  251. this.events = this.events || {};
  252. //配置参数
  253. this.options = options || {};
  254. //子组件集合索引
  255. this.children = {};
  256. };
  257. $.extend($.ligerui.core.Component.prototype, {
  258. __getType: function ()
  259. {
  260. return '$.ligerui.core.Component';
  261. },
  262. __idPrev: function ()
  263. {
  264. return 'ligerui';
  265. },
  266. //设置属性
  267. // arg 属性名 value 属性值
  268. // arg 属性/值 value 是否只设置事件
  269. set: function (arg, value)
  270. {
  271. if (!arg) return;
  272. if (typeof arg == 'object')
  273. {
  274. var tmp;
  275. if (this.options != arg)
  276. {
  277. $.extend(this.options, arg);
  278. tmp = arg;
  279. }
  280. else
  281. {
  282. tmp = $.extend({}, arg);
  283. }
  284. if (value == undefined || value == true)
  285. {
  286. for (var p in tmp)
  287. {
  288. if (p.indexOf('on') == 0)
  289. this.set(p, tmp[p]);
  290. }
  291. }
  292. if (value == undefined || value == false)
  293. {
  294. for (var p in tmp)
  295. {
  296. if (p.indexOf('on') != 0)
  297. this.set(p, tmp[p]);
  298. }
  299. }
  300. return;
  301. }
  302. var name = arg;
  303. //事件参数
  304. if (name.indexOf('on') == 0)
  305. {
  306. if (typeof value == 'function')
  307. this.bind(name.substr(2), value);
  308. return;
  309. }
  310. this.trigger('propertychange', arg, value);
  311. if (!this.options) this.options = {};
  312. this.options[name] = value;
  313. var pn = '_set' + name.substr(0, 1).toUpperCase() + name.substr(1);
  314. if (this[pn])
  315. {
  316. this[pn].call(this, value);
  317. }
  318. this.trigger('propertychanged', arg, value);
  319. },
  320. //获取属性
  321. get: function (name)
  322. {
  323. var pn = '_get' + name.substr(0, 1).toUpperCase() + name.substr(1);
  324. if (this[pn])
  325. {
  326. return this[pn].call(this, name);
  327. }
  328. return this.options[name];
  329. },
  330. hasBind: function (arg)
  331. {
  332. var name = arg.toLowerCase();
  333. var event = this.events[name];
  334. if (event && event.length) return true;
  335. return false;
  336. },
  337. //触发事件
  338. //data (可选) Array(可选)传递给事件处理函数的附加参数
  339. trigger: function (arg, data)
  340. {
  341. var name = arg.toLowerCase();
  342. var event = this.events[name];
  343. if (!event) return;
  344. data = data || [];
  345. if ((data instanceof Array) == false)
  346. {
  347. data = [data];
  348. }
  349. for (var i = 0; i < event.length; i++)
  350. {
  351. var ev = event[i];
  352. if (ev.handler.apply(ev.context, data) == false)
  353. return false;
  354. }
  355. },
  356. //绑定事件
  357. bind: function (arg, handler, context)
  358. {
  359. if (typeof arg == 'object')
  360. {
  361. for (var p in arg)
  362. {
  363. this.bind(p, arg[p]);
  364. }
  365. return;
  366. }
  367. if (typeof handler != 'function') return false;
  368. var name = arg.toLowerCase();
  369. var event = this.events[name] || [];
  370. context = context || this;
  371. event.push({ handler: handler, context: context });
  372. this.events[name] = event;
  373. },
  374. //取消绑定
  375. unbind: function (arg, handler)
  376. {
  377. if (!arg)
  378. {
  379. this.events = {};
  380. return;
  381. }
  382. var name = arg.toLowerCase();
  383. var event = this.events[name];
  384. if (!event || !event.length) return;
  385. if (!handler)
  386. {
  387. delete this.events[name];
  388. }
  389. else
  390. {
  391. for (var i = 0, l = event.length; i < l; i++)
  392. {
  393. if (event[i].handler == handler)
  394. {
  395. event.splice(i, 1);
  396. break;
  397. }
  398. }
  399. }
  400. },
  401. destroy: function ()
  402. {
  403. $.ligerui.remove(this);
  404. }
  405. });
  406. //界面组件基类,
  407. //1,完成界面初始化:设置组件id并存入组件管理器池,初始化参数
  408. //2,渲染的工作,细节交给子类实现
  409. //@parm [element] 组件对应的dom element对象
  410. //@parm [options] 组件的参数
  411. $.ligerui.core.UIComponent = function (element, options)
  412. {
  413. $.ligerui.core.UIComponent.base.constructor.call(this, options);
  414. var extendMethods = this._extendMethods();
  415. if (extendMethods) $.extend(this, extendMethods);
  416. this.element = element;
  417. this._init();
  418. this._preRender();
  419. this.trigger('render');
  420. this._render();
  421. this.trigger('rendered');
  422. this._rendered();
  423. };
  424. $.ligerui.core.UIComponent.ligerExtend($.ligerui.core.Component, {
  425. __getType: function ()
  426. {
  427. return '$.ligerui.core.UIComponent';
  428. },
  429. //扩展方法
  430. _extendMethods: function ()
  431. {
  432. },
  433. _init: function ()
  434. {
  435. this.type = this.__getType();
  436. if (!this.element)
  437. {
  438. this.id = this.options.id || $.ligerui.getId(this.__idPrev());
  439. }
  440. else
  441. {
  442. this.id = this.options.id || this.element.id || $.ligerui.getId(this.__idPrev());
  443. }
  444. //存入管理器池
  445. $.ligerui.add(this);
  446. if (!this.element) return;
  447. //读取attr方法,并加载到参数,比如['url']
  448. var attributes = this.attr();
  449. if (attributes && attributes instanceof Array)
  450. {
  451. for (var i = 0; i < attributes.length; i++)
  452. {
  453. var name = attributes[i];
  454. this.options[name] = $(this.element).attr(name);
  455. }
  456. }
  457. //读取ligerui这个属性,并加载到参数,比如 ligerui = "width:120,heigth:100"
  458. var p = this.options;
  459. if ($(this.element).attr("ligerui"))
  460. {
  461. try
  462. {
  463. var attroptions = $(this.element).attr("ligerui");
  464. if (attroptions.indexOf('{') != 0) attroptions = "{" + attroptions + "}";
  465. eval("attroptions = " + attroptions + ";");
  466. if (attroptions) $.extend(p, attroptions);
  467. }
  468. catch (e) { }
  469. }
  470. },
  471. //预渲染,可以用于继承扩展
  472. _preRender: function ()
  473. {
  474. },
  475. _render: function ()
  476. {
  477. },
  478. _rendered: function ()
  479. {
  480. if (this.element)
  481. {
  482. $(this.element).attr("ligeruiid", this.id);
  483. }
  484. },
  485. //返回要转换成ligerui参数的属性,比如['url']
  486. attr: function ()
  487. {
  488. return [];
  489. },
  490. destroy: function ()
  491. {
  492. if (this.element) $(this.element).remove();
  493. this.options = null;
  494. $.ligerui.remove(this);
  495. }
  496. });
  497. //表单控件基类
  498. $.ligerui.controls.Input = function (element, options)
  499. {
  500. $.ligerui.controls.Input.base.constructor.call(this, element, options);
  501. };
  502. $.ligerui.controls.Input.ligerExtend($.ligerui.core.UIComponent, {
  503. __getType: function ()
  504. {
  505. return '$.ligerui.controls.Input';
  506. },
  507. attr: function ()
  508. {
  509. return ['nullText'];
  510. },
  511. setValue: function (value)
  512. {
  513. return this.set('value', value);
  514. },
  515. getValue: function ()
  516. {
  517. return this.get('value');
  518. },
  519. setEnabled: function ()
  520. {
  521. return this.set('disabled', false);
  522. },
  523. setDisabled: function ()
  524. {
  525. return this.set('disabled', true);
  526. },
  527. updateStyle: function ()
  528. {
  529. }
  530. });
  531. //全局窗口对象
  532. $.ligerui.win = {
  533. //顶端显示
  534. top: false,
  535. //遮罩
  536. mask: function (win)
  537. {
  538. function setHeight()
  539. {
  540. if (!$.ligerui.win.windowMask) return;
  541. var h = $(window).height() + $(window).scrollTop();
  542. $.ligerui.win.windowMask.height(h);
  543. }
  544. if (!this.windowMask)
  545. {
  546. this.windowMask = $("<div class='l-window-mask' style='display: block;'></div>").appendTo('body');
  547. $(window).bind('resize.ligeruiwin', setHeight);
  548. $(window).bind('scroll', setHeight);
  549. }
  550. this.windowMask.show();
  551. setHeight();
  552. this.masking = true;
  553. },
  554. //取消遮罩
  555. unmask: function (win)
  556. {
  557. var jwins = $("body > .l-dialog:visible,body > .l-window:visible");
  558. for (var i = 0, l = jwins.length; i < l; i++)
  559. {
  560. var winid = jwins.eq(i).attr("ligeruiid");
  561. if (win && win.id == winid) continue;
  562. //获取ligerui对象
  563. var winmanager = $.ligerui.get(winid);
  564. if (!winmanager) continue;
  565. //是否模态窗口
  566. var modal = winmanager.get('modal');
  567. //如果存在其他模态窗口,那么不会取消遮罩
  568. if (modal) return;
  569. }
  570. if (this.windowMask)
  571. this.windowMask.hide();
  572. this.masking = false;
  573. },
  574. //显示任务栏
  575. createTaskbar: function ()
  576. {
  577. if (!this.taskbar)
  578. {
  579. this.taskbar = $('<div class="l-taskbar"><div class="l-taskbar-tasks"></div><div class="l-clear"></div></div>').appendTo('body');
  580. if (this.top) this.taskbar.addClass("l-taskbar-top");
  581. this.taskbar.tasks = $(".l-taskbar-tasks:first", this.taskbar);
  582. this.tasks = {};
  583. }
  584. this.taskbar.show();
  585. this.taskbar.animate({ bottom: 0 });
  586. return this.taskbar;
  587. },
  588. //关闭任务栏
  589. removeTaskbar: function ()
  590. {
  591. var self = this;
  592. self.taskbar.animate({ bottom: -32 }, function ()
  593. {
  594. self.taskbar.remove();
  595. self.taskbar = null;
  596. });
  597. },
  598. activeTask: function (win)
  599. {
  600. for (var winid in this.tasks)
  601. {
  602. var t = this.tasks[winid];
  603. if (winid == win.id)
  604. {
  605. t.addClass("l-taskbar-task-active");
  606. }
  607. else
  608. {
  609. t.removeClass("l-taskbar-task-active");
  610. }
  611. }
  612. },
  613. //获取任务
  614. getTask: function (win)
  615. {
  616. var self = this;
  617. if (!self.taskbar) return;
  618. if (self.tasks[win.id]) return self.tasks[win.id];
  619. return null;
  620. },
  621. //增加任务
  622. addTask: function (win)
  623. {
  624. var self = this;
  625. if (!self.taskbar) self.createTaskbar();
  626. if (self.tasks[win.id]) return self.tasks[win.id];
  627. var title = win.get('title');
  628. var task = self.tasks[win.id] = $('<div class="l-taskbar-task"><div class="l-taskbar-task-icon"></div><div class="l-taskbar-task-content">' + title + '</div></div>');
  629. self.taskbar.tasks.append(task);
  630. self.activeTask(win);
  631. task.bind('click', function ()
  632. {
  633. self.activeTask(win);
  634. if (win.actived)
  635. win.min();
  636. else
  637. win.active();
  638. }).hover(function ()
  639. {
  640. $(this).addClass("l-taskbar-task-over");
  641. }, function ()
  642. {
  643. $(this).removeClass("l-taskbar-task-over");
  644. });
  645. return task;
  646. },
  647. hasTask: function ()
  648. {
  649. for (var p in this.tasks)
  650. {
  651. if (this.tasks[p])
  652. return true;
  653. }
  654. return false;
  655. },
  656. //移除任务
  657. removeTask: function (win)
  658. {
  659. var self = this;
  660. if (!self.taskbar) return;
  661. if (self.tasks[win.id])
  662. {
  663. self.tasks[win.id].unbind();
  664. self.tasks[win.id].remove();
  665. delete self.tasks[win.id];
  666. }
  667. if (!self.hasTask())
  668. {
  669. self.removeTaskbar();
  670. }
  671. },
  672. //前端显示
  673. setFront: function (win)
  674. {
  675. var wins = $.ligerui.find($.ligerui.core.Win);
  676. for (var i in wins)
  677. {
  678. var w = wins[i];
  679. if (w == win)
  680. {
  681. $(w.element).css("z-index", "9200");
  682. this.activeTask(w);
  683. }
  684. else
  685. {
  686. $(w.element).css("z-index", "9100");
  687. }
  688. }
  689. }
  690. };
  691. //窗口基类 window、dialog
  692. $.ligerui.core.Win = function (element, options)
  693. {
  694. $.ligerui.core.Win.base.constructor.call(this, element, options);
  695. };
  696. $.ligerui.core.Win.ligerExtend($.ligerui.core.UIComponent, {
  697. __getType: function ()
  698. {
  699. return '$.ligerui.controls.Win';
  700. },
  701. mask: function ()
  702. {
  703. if (this.options.modal)
  704. $.ligerui.win.mask(this);
  705. },
  706. unmask: function ()
  707. {
  708. if (this.options.modal)
  709. $.ligerui.win.unmask(this);
  710. },
  711. min: function ()
  712. {
  713. },
  714. max: function ()
  715. {
  716. },
  717. active: function ()
  718. {
  719. }
  720. });
  721. $.ligerui.draggable = {
  722. dragging: false
  723. };
  724. $.ligerui.resizable = {
  725. reszing: false
  726. };
  727. $.ligerui.toJSON = typeof JSON === 'object' && JSON.stringify ? JSON.stringify : function (o)
  728. {
  729. var f = function (n)
  730. {
  731. return n < 10 ? '0' + n : n;
  732. },
  733. escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
  734. quote = function (value)
  735. {
  736. escapable.lastIndex = 0;
  737. return escapable.test(value) ?
  738. '"' + value.replace(escapable, function (a)
  739. {
  740. var c = meta[a];
  741. return typeof c === 'string' ? c :
  742. '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
  743. }) + '"' :
  744. '"' + value + '"';
  745. };
  746. if (o === null) return 'null';
  747. var type = typeof o;
  748. if (type === 'undefined') return undefined;
  749. if (type === 'string') return quote(o);
  750. if (type === 'number' || type === 'boolean') return '' + o;
  751. if (type === 'object')
  752. {
  753. if (typeof o.toJSON === 'function')
  754. {
  755. return $.ligerui.toJSON(o.toJSON());
  756. }
  757. if (o.constructor === Date)
  758. {
  759. return isFinite(this.valueOf()) ?
  760. this.getUTCFullYear() + '-' +
  761. f(this.getUTCMonth() + 1) + '-' +
  762. f(this.getUTCDate()) + 'T' +
  763. f(this.getUTCHours()) + ':' +
  764. f(this.getUTCMinutes()) + ':' +
  765. f(this.getUTCSeconds()) + 'Z' : null;
  766. }
  767. var pairs = [];
  768. if (o.constructor === Array)
  769. {
  770. for (var i = 0, l = o.length; i < l; i++)
  771. {
  772. pairs.push($.ligerui.toJSON(o[i]) || 'null');
  773. }
  774. return '[' + pairs.join(',') + ']';
  775. }
  776. var name, val;
  777. for (var k in o)
  778. {
  779. type = typeof k;
  780. if (type === 'number')
  781. {
  782. name = '"' + k + '"';
  783. } else if (type === 'string')
  784. {
  785. name = quote(k);
  786. } else
  787. {
  788. continue;
  789. }
  790. type = typeof o[k];
  791. if (type === 'function' || type === 'undefined')
  792. {
  793. continue;
  794. }
  795. val = $.ligerui.toJSON(o[k]);
  796. pairs.push(name + ':' + val);
  797. }
  798. return '{' + pairs.join(',') + '}';
  799. }
  800. };
  801. })(jQuery);/**
  802. * jQuery ligerUI 1.1.9
  803. *
  804. * http://ligerui.com
  805. *
  806. * Author daomi 2012 [ gd_star@163.com ]
  807. *
  808. */
  809. (function ($)
  810. {
  811. $.fn.ligerAccordion = function (options)
  812. {
  813. return $.ligerui.run.call(this, "ligerAccordion", arguments);
  814. };
  815. $.fn.ligerGetAccordionManager = function ()
  816. {
  817. return $.ligerui.get(this);
  818. };
  819. $.ligerDefaults.Accordion = {
  820. height: null,
  821. speed: "normal",
  822. changeHeightOnResize: false,
  823. heightDiff: 0 // 高度补差
  824. };
  825. $.ligerMethos.Accordion = {};
  826. $.ligerui.controls.Accordion = function (element, options)
  827. {
  828. $.ligerui.controls.Accordion.base.constructor.call(this, element, options);
  829. };
  830. $.ligerui.controls.Accordion.ligerExtend($.ligerui.core.UIComponent, {
  831. __getType: function ()
  832. {
  833. return 'Accordion';
  834. },
  835. __idPrev: function ()
  836. {
  837. return 'Accordion';
  838. },
  839. _extendMethods: function ()
  840. {
  841. return $.ligerMethos.Accordion;
  842. },
  843. _render: function ()
  844. {
  845. var g = this, p = this.options;
  846. g.accordion = $(g.element);
  847. if (!g.accordion.hasClass("l-accordion-panel")) g.accordion.addClass("l-accordion-panel");
  848. var selectedIndex = 0;
  849. if ($("> div[lselected=true]", g.accordion).length > 0)
  850. selectedIndex = $("> div", g.accordion).index($("> div[lselected=true]", g.accordion));
  851. $("> div", g.accordion).each(function (i, box)
  852. {
  853. var header = $('<div class="l-accordion-header"><div class="l-accordion-toggle"></div><div class="l-accordion-header-inner"></div></div>');
  854. if (i == selectedIndex)
  855. $(".l-accordion-toggle", header).addClass("l-accordion-toggle-open");
  856. if ($(box).attr("title"))
  857. {
  858. $(".l-accordion-header-inner", header).html($(box).attr("title"));
  859. $(box).attr("title", "");
  860. }
  861. $(box).before(header);
  862. if (!$(box).hasClass("l-accordion-content")) $(box).addClass("l-accordion-content");
  863. });
  864. //add Even
  865. $(".l-accordion-toggle", g.accordion).each(function ()
  866. {
  867. if (!$(this).hasClass("l-accordion-toggle-open") && !$(this).hasClass("l-accordion-toggle-close"))
  868. {
  869. $(this).addClass("l-accordion-toggle-close");
  870. }
  871. if ($(this).hasClass("l-accordion-toggle-close"))
  872. {
  873. $(this).parent().next(".l-accordion-content:visible").hide();
  874. }
  875. });
  876. $(".l-accordion-header", g.accordion).hover(function ()
  877. {
  878. $(this).addClass("l-accordion-header-over");
  879. }, function ()
  880. {
  881. $(this).removeClass("l-accordion-header-over");
  882. });
  883. $(".l-accordion-toggle", g.accordion).hover(function ()
  884. {
  885. if ($(this).hasClass("l-accordion-toggle-open"))
  886. $(this).addClass("l-accordion-toggle-open-over");
  887. else if ($(this).hasClass("l-accordion-toggle-close"))
  888. $(this).addClass("l-accordion-toggle-close-over");
  889. }, function ()
  890. {
  891. if ($(this).hasClass("l-accordion-toggle-open"))
  892. $(this).removeClass("l-accordion-toggle-open-over");
  893. else if ($(this).hasClass("l-accordion-toggle-close"))
  894. $(this).removeClass("l-accordion-toggle-close-over");
  895. });
  896. $(">.l-accordion-header", g.accordion).click(function ()
  897. {
  898. var togglebtn = $(".l-accordion-toggle:first", this);
  899. if (togglebtn.hasClass("l-accordion-toggle-close"))
  900. {
  901. togglebtn.removeClass("l-accordion-toggle-close")
  902. .removeClass("l-accordion-toggle-close-over l-accordion-toggle-open-over")
  903. togglebtn.addClass("l-accordion-toggle-open");
  904. $(this).next(".l-accordion-content")
  905. .show(p.speed)
  906. .siblings(".l-accordion-content:visible").hide(p.speed);
  907. $(this).siblings(".l-accordion-header").find(".l-accordion-toggle").removeClass("l-accordion-toggle-open").addClass("l-accordion-toggle-close");
  908. }
  909. else
  910. {
  911. togglebtn.removeClass("l-accordion-toggle-open")
  912. .removeClass("l-accordion-toggle-close-over l-accordion-toggle-open-over")
  913. .addClass("l-accordion-toggle-close");
  914. $(this).next(".l-accordion-content").hide(p.speed);
  915. }
  916. });
  917. //init
  918. g.headerHoldHeight = 0;
  919. $("> .l-accordion-header", g.accordion).each(function ()
  920. {
  921. g.headerHoldHeight += $(this).height();
  922. });
  923. if (p.height && typeof (p.height) == 'string' && p.height.indexOf('%') > 0)
  924. {
  925. g.onResize();
  926. if (p.changeHeightOnResize)
  927. {
  928. $(window).resize(function ()
  929. {
  930. g.onResize();
  931. });
  932. }
  933. }
  934. else
  935. {
  936. if (p.height)
  937. {
  938. g.height = p.heightDiff + p.height;
  939. g.accordion.height(g.height);
  940. g.setHeight(p.height);
  941. }
  942. else
  943. {
  944. g.header = g.accordion.height();
  945. }
  946. }
  947. g.set(p);
  948. },
  949. onResize: function ()
  950. {
  951. var g = this, p = this.options;
  952. if (!p.height || typeof (p.height) != 'string' || p.height.indexOf('%') == -1) return false;
  953. //set accordion height
  954. if (g.accordion.parent()[0].tagName.toLowerCase() == "body")
  955. {
  956. var windowHeight = $(window).height();
  957. windowHeight -= parseInt(g.layout.parent().css('paddingTop'));
  958. windowHeight -= parseInt(g.layout.parent().css('paddingBottom'));
  959. g.height = p.heightDiff + windowHeight * parseFloat(g.height) * 0.01;
  960. }
  961. else
  962. {
  963. g.height = p.heightDiff + (g.accordion.parent().height() * parseFloat(p.height) * 0.01);
  964. }
  965. g.accordion.height(g.height);
  966. g.setContentHeight(g.height - g.headerHoldHeight);
  967. },
  968. setHeight: function (height)
  969. {
  970. var g = this, p = this.options;
  971. g.accordion.height(height);
  972. height -= g.headerHoldHeight;
  973. $("> .l-accordion-content", g.accordion).height(height);
  974. }
  975. });
  976. })(jQuery);/**
  977. * jQuery ligerUI 1.1.9
  978. *
  979. * http://ligerui.com
  980. *
  981. * Author daomi 2012 [ gd_star@163.com ]
  982. *
  983. */
  984. (function ($)
  985. {
  986. $.fn.ligerButton = function (options)
  987. {
  988. return $.ligerui.run.call(this, "ligerButton", arguments);
  989. };
  990. $.fn.ligerGetButtonManager = function ()
  991. {
  992. return $.ligerui.run.call(this, "ligerGetButtonManager", arguments);
  993. };
  994. $.ligerDefaults.Button = { width: 100, text: 'Button', disabled: false };
  995. $.ligerMethos.Button = {};
  996. $.ligerui.controls.Button = function (element, options)
  997. {
  998. $.ligerui.controls.Button.base.constructor.call(this, element, options);
  999. };
  1000. $.ligerui.controls.Button.ligerExtend($.ligerui.controls.Input, {
  1001. __getType: function ()
  1002. {
  1003. return 'Button';
  1004. },
  1005. __idPrev: function ()
  1006. {
  1007. return 'Button';
  1008. },
  1009. _extendMethods: function ()
  1010. {
  1011. return $.ligerMethos.Button;
  1012. },
  1013. _render: function ()
  1014. {
  1015. var g = this, p = this.options;
  1016. g.button = $(g.element);
  1017. g.button.addClass("l-btn");
  1018. g.button.append('<div class="l-btn-l"></div><div class="l-btn-r"></div><span></span>');
  1019. p.click && g.button.click(function ()
  1020. {
  1021. if (!p.disabled)
  1022. p.click();
  1023. });
  1024. g.set(p);
  1025. },
  1026. _setEnabled: function (value)
  1027. {
  1028. if (value)
  1029. this.button.removeClass("l-btn-disabled");
  1030. },
  1031. _setDisabled: function (value)
  1032. {
  1033. if (value)
  1034. {
  1035. this.button.addClass("l-btn-disabled");
  1036. this.options.disabled = true;
  1037. }
  1038. },
  1039. _setWidth: function (value)
  1040. {
  1041. this.button.width(value);
  1042. },
  1043. _setText: function (value)
  1044. {
  1045. $("span", this.button).html(value);
  1046. },
  1047. setValue: function (value)
  1048. {
  1049. this.set('text', value);
  1050. },
  1051. getValue: function ()
  1052. {
  1053. return this.options.text;
  1054. },
  1055. setEnabled: function ()
  1056. {
  1057. this.set('disabled', false);
  1058. },
  1059. setDisabled: function ()
  1060. {
  1061. this.set('disabled', true);
  1062. }
  1063. });
  1064. })(jQuery);/**
  1065. * jQuery ligerUI 1.1.9
  1066. *
  1067. * http://ligerui.com
  1068. *
  1069. * Author daomi 2012 [ gd_star@163.com ]
  1070. *
  1071. */
  1072. (function ($)
  1073. {
  1074. $.fn.ligerCheckBox = function (options)
  1075. {
  1076. return $.ligerui.run.call(this, "ligerCheckBox", arguments);
  1077. };
  1078. $.fn.ligerGetCheckBoxManager = function ()
  1079. {
  1080. return $.ligerui.run.call(this, "ligerGetCheckBoxManager", arguments);
  1081. };
  1082. $.ligerDefaults.CheckBox = { disabled: false };
  1083. $.ligerMethos.CheckBox = {};
  1084. $.ligerui.controls.CheckBox = function (element, options)
  1085. {
  1086. $.ligerui.controls.CheckBox.base.constructor.call(this, element, options);
  1087. };
  1088. $.ligerui.controls.CheckBox.ligerExtend($.ligerui.controls.Input, {
  1089. __getType: function ()
  1090. {
  1091. return 'CheckBox';
  1092. },
  1093. __idPrev: function ()
  1094. {
  1095. return 'CheckBox';
  1096. },
  1097. _extendMethods: function ()
  1098. {
  1099. return $.ligerMethos.CheckBox;
  1100. },
  1101. _render: function ()
  1102. {
  1103. var g = this, p = this.options;
  1104. g.input = $(g.element);
  1105. g.link = $('<a class="l-checkbox"></a>');
  1106. g.wrapper = g.input.addClass('l-hidden').wrap('<div class="l-checkbox-wrapper"></div>').parent();
  1107. g.wrapper.prepend(g.link);
  1108. g.link.click(function ()
  1109. {
  1110. if (g.input.attr('disabled')) { return false; }
  1111. if (p.disabled) return false;
  1112. if (g.trigger('beforeClick', [g.element]) == false) return false;
  1113. if ($(this).hasClass("l-checkbox-checked"))
  1114. {
  1115. g._setValue(false);
  1116. }
  1117. else
  1118. {
  1119. g._setValue(true);
  1120. }
  1121. g.input.trigger("change");
  1122. });
  1123. g.wrapper.hover(function ()
  1124. {
  1125. if (!p.disabled)
  1126. $(this).addClass("l-over");
  1127. }, function ()
  1128. {
  1129. $(this).removeClass("l-over");
  1130. });
  1131. this.set(p);
  1132. this.updateStyle();
  1133. },
  1134. _setCss: function (value)
  1135. {
  1136. this.wrapper.css(value);
  1137. },
  1138. _setValue: function (value)
  1139. {
  1140. var g = this, p = this.options;
  1141. if (!value)
  1142. {
  1143. g.input[0].checked = false;
  1144. g.link.removeClass('l-checkbox-checked');
  1145. }
  1146. else
  1147. {
  1148. g.input[0].checked = true;
  1149. g.link.addClass('l-checkbox-checked');
  1150. }
  1151. },
  1152. _setDisabled: function (value)
  1153. {
  1154. if (value)
  1155. {
  1156. this.input.attr('disabled', true);
  1157. this.wrapper.addClass("l-disabled");
  1158. }
  1159. else
  1160. {
  1161. this.input.attr('disabled', false);
  1162. this.wrapper.removeClass("l-disabled");
  1163. }
  1164. },
  1165. _getValue: function ()
  1166. {
  1167. return this.element.checked;
  1168. },
  1169. updateStyle: function ()
  1170. {
  1171. if (this.input.attr('disabled'))
  1172. {
  1173. this.wrapper.addClass("l-disabled");
  1174. this.options.disabled = true;
  1175. }
  1176. if (this.input[0].checked)
  1177. {
  1178. this.link.addClass('l-checkbox-checked');
  1179. }
  1180. else
  1181. {
  1182. this.link.removeClass('l-checkbox-checked');
  1183. }
  1184. }
  1185. });
  1186. })(jQuery);/**
  1187. * jQuery ligerUI 1.1.9
  1188. *
  1189. * http://ligerui.com
  1190. *
  1191. * Author daomi 2012 [ gd_star@163.com ]
  1192. *
  1193. */
  1194. (function ($)
  1195. {
  1196. $.fn.ligerComboBox = function (options)
  1197. {
  1198. return $.ligerui.run.call(this, "ligerComboBox", arguments);
  1199. };
  1200. $.fn.ligerGetComboBoxManager = function ()
  1201. {
  1202. return $.ligerui.run.call(this, "ligerGetComboBoxManager", arguments);
  1203. };
  1204. $.ligerDefaults.ComboBox = {
  1205. resize: true, //是否调整大小
  1206. isMultiSelect: false, //是否多选
  1207. isShowCheckBox: false, //是否选择复选框
  1208. columns: false, //表格状态
  1209. selectBoxWidth: false, //宽度
  1210. selectBoxHeight: false, //高度
  1211. onBeforeSelect: false, //选择前事件
  1212. onSelected: null, //选择值事件
  1213. initValue: null,
  1214. initText: null,
  1215. valueField: 'id',
  1216. textField: 'text',
  1217. valueFieldID: null,
  1218. slide: true, //是否以动画的形式显示
  1219. split: ";",
  1220. data: null,
  1221. tree: null, //下拉框以树的形式显示,tree的参数跟LigerTree的参数一致
  1222. treeLeafOnly: true, //是否只选择叶子
  1223. grid: null, //表格
  1224. onStartResize: null,
  1225. onEndResize: null,
  1226. hideOnLoseFocus: true,
  1227. url: null, //数据源URL(需返回JSON)
  1228. onSuccess: null,
  1229. onError: null,
  1230. onBeforeOpen: null, //打开下拉框前事件,可以通过return false来阻止继续操作,利用这个参数可以用来调用其他函数,比如打开一个新窗口来选择值
  1231. render: null, //文本框显示html函数
  1232. absolute: true //选择框是否在附加到body,并绝对定位
  1233. };
  1234. //扩展方法
  1235. $.ligerMethos.ComboBox = $.ligerMethos.ComboBox || {};
  1236. $.ligerui.controls.ComboBox = function (element, options)
  1237. {
  1238. $.ligerui.controls.ComboBox.base.constructor.call(this, element, options);
  1239. };
  1240. $.ligerui.controls.ComboBox.ligerExtend($.ligerui.controls.Input, {
  1241. __getType: function ()
  1242. {
  1243. return 'ComboBox';
  1244. },
  1245. _extendMethods: function ()
  1246. {
  1247. return $.ligerMethos.ComboBox;
  1248. },
  1249. _init: function ()
  1250. {
  1251. $.ligerui.controls.ComboBox.base._init.call(this);
  1252. var p = this.options;
  1253. if (p.columns)
  1254. {
  1255. p.isShowCheckBox = true;
  1256. }
  1257. if (p.isMultiSelect)
  1258. {
  1259. p.isShowCheckBox = true;
  1260. }
  1261. },
  1262. _render: function ()
  1263. {
  1264. var g = this, p = this.options;
  1265. g.data = p.data;
  1266. g.inputText = null;
  1267. g.select = null;
  1268. g.textFieldID = "";
  1269. g.valueFieldID = "";
  1270. g.valueField = null; //隐藏域(保存值)
  1271. //文本框初始化
  1272. if (this.element.tagName.toLowerCase() == "input")
  1273. {
  1274. this.element.readOnly = true;
  1275. g.inputText = $(this.element);
  1276. g.textFieldID = this.element.id;
  1277. }
  1278. else if (this.element.tagName.toLowerCase() == "select")
  1279. {
  1280. $(this.element).hide();
  1281. g.select = $(this.element);
  1282. p.isMultiSelect = false;
  1283. p.isShowCheckBox = false;
  1284. g.textFieldID = this.element.id + "_txt";
  1285. g.inputText = $('<input type="text" readonly="true"/>');
  1286. g.inputText.attr("id", g.textFieldID).insertAfter($(this.element));
  1287. } else
  1288. {
  1289. //不支持其他类型
  1290. return;
  1291. }
  1292. if (g.inputText[0].name == undefined) g.inputText[0].name = g.textFieldID;
  1293. //隐藏域初始化
  1294. g.valueField = null;
  1295. if (p.valueFieldID)
  1296. {
  1297. g.valueField = $("#" + p.valueFieldID + ":input");
  1298. if (g.valueField.length == 0) g.valueField = $('<input type="hidden"/>');
  1299. g.valueField[0].id = g.valueField[0].name = p.valueFieldID;
  1300. }
  1301. else
  1302. {
  1303. g.valueField = $('<input type="hidden"/>');
  1304. g.valueField[0].id = g.valueField[0].name = g.textFieldID + "_val";
  1305. }
  1306. if (g.valueField[0].name == undefined) g.valueField[0].name = g.valueField[0].id;
  1307. //开关
  1308. g.link = $('<div class="l-trigger"><div class="l-trigger-icon"></div></div>');
  1309. //下拉框
  1310. g.selectBox = $('<div class="l-box-select"><div class="l-box-select-inner"><table cellpadding="0" cellspacing="0" border="0" class="l-box-select-table"></table></div></div>');
  1311. g.selectBox.table = $("table:first", g.selectBox);
  1312. //外层
  1313. g.wrapper = g.inputText.wrap('<div class="l-text l-text-combobox"></div>').parent();
  1314. g.wrapper.append('<div class="l-text-l"></div><div class="l-text-r"></div>');
  1315. g.wrapper.append(g.link);
  1316. //添加个包裹,
  1317. g.textwrapper = g.wrapper.wrap('<div class="l-text-wrapper"></div>').parent();
  1318. if (p.absolute)
  1319. g.selectBox.appendTo('body').addClass("l-box-select-absolute");
  1320. else
  1321. g.textwrapper.append(g.selectBox);
  1322. g.textwrapper.append(g.valueField);
  1323. g.inputText.addClass("l-text-field");
  1324. if (p.isShowCheckBox && !g.select)
  1325. {
  1326. $("table", g.selectBox).addClass("l-table-checkbox");
  1327. } else
  1328. {
  1329. p.isShowCheckBox = false;
  1330. $("table", g.selectBox).addClass("l-table-nocheckbox");
  1331. }
  1332. //开关 事件
  1333. g.link.hover(function ()
  1334. {
  1335. if (p.disabled) return;
  1336. this.className = "l-trigger-hover";
  1337. }, function ()
  1338. {
  1339. if (p.disabled) return;
  1340. this.className = "l-trigger";
  1341. }).mousedown(function ()
  1342. {
  1343. if (p.disabled) return;
  1344. this.className = "l-trigger-pressed";
  1345. }).mouseup(function ()
  1346. {
  1347. if (p.disabled) return;
  1348. this.className = "l-trigger-hover";
  1349. }).click(function ()
  1350. {
  1351. if (p.disabled) return;
  1352. if (g.trigger('beforeOpen') == false) return false;
  1353. g._toggleSelectBox(g.selectBox.is(":visible"));
  1354. });
  1355. g.inputText.click(function ()
  1356. {
  1357. if (p.disabled) return;
  1358. if (g.trigger('beforeOpen') == false) return false;
  1359. g._toggleSelectBox(g.selectBox.is(":visible"));
  1360. }).blur(function ()
  1361. {
  1362. if (p.disabled) return;
  1363. g.wrapper.removeClass("l-text-focus");
  1364. }).focus(function ()
  1365. {
  1366. if (p.disabled) return;
  1367. g.wrapper.addClass("l-text-focus");
  1368. });
  1369. g.wrapper.hover(function ()
  1370. {
  1371. if (p.disabled) return;
  1372. g.wrapper.addClass("l-text-over");
  1373. }, function ()
  1374. {
  1375. if (p.disabled) return;
  1376. g.wrapper.removeClass("l-text-over");
  1377. });
  1378. g.resizing = false;
  1379. g.selectBox.hover(null, function (e)
  1380. {
  1381. if (p.hideOnLoseFocus && g.selectBox.is(":visible") && !g.boxToggling && !g.resizing)
  1382. {
  1383. g._toggleSelectBox(true);
  1384. }
  1385. });
  1386. var itemsleng = $("tr", g.selectBox.table).length;
  1387. if (!p.selectBoxHeight && itemsleng < 8) p.selectBoxHeight = itemsleng * 30;
  1388. if (p.selectBoxHeight)
  1389. {
  1390. g.selectBox.height(p.selectBoxHeight);
  1391. }
  1392. //下拉框内容初始化
  1393. g.bulidContent();
  1394. g.set(p);
  1395. //下拉框宽度、高度初始化
  1396. if (p.selectBoxWidth)
  1397. {
  1398. g.selectBox.width(p.selectBoxWidth);
  1399. }
  1400. else
  1401. {
  1402. g.selectBox.css('width', g.wrapper.css('width'));
  1403. }
  1404. },
  1405. destroy: function ()
  1406. {
  1407. if (this.wrapper) this.wrapper.remove();
  1408. if (this.selectBox) this.selectBox.remove();
  1409. this.options = null;
  1410. $.ligerui.remove(this);
  1411. },
  1412. _setDisabled: function (value)
  1413. {
  1414. //禁用样式
  1415. if (value)
  1416. {
  1417. this.wrapper.addClass('l-text-disabled');
  1418. } else
  1419. {
  1420. this.wrapper.removeClass('l-text-disabled');
  1421. }
  1422. },
  1423. _setLable: function (label)
  1424. {
  1425. var g = this, p = this.options;
  1426. if (label)
  1427. {
  1428. if (g.labelwrapper)
  1429. {
  1430. g.labelwrapper.find(".l-text-label:first").html(label + ':&nbsp');
  1431. }
  1432. else
  1433. {
  1434. g.labelwrapper = g.textwrapper.wrap('<div class="l-labeltext"></div>').parent();
  1435. g.labelwrapper.prepend('<div class="l-text-label" style="float:left;display:inline;">' + label + ':&nbsp</div>');
  1436. g.textwrapper.css('float', 'left');
  1437. }
  1438. if (!p.labelWidth)
  1439. {
  1440. p.labelWidth = $('.l-text-label', g.labelwrapper).outerWidth();
  1441. }
  1442. else
  1443. {
  1444. $('.l-text-label', g.labelwrapper).outerWidth(p.labelWidth);
  1445. }
  1446. $('.l-text-label', g.labelwrapper).width(p.labelWidth);
  1447. $('.l-text-label', g.labelwrapper).height(g.wrapper.height());
  1448. g.labelwrapper.append('<br style="clear:both;" />');
  1449. if (p.labelAlign)
  1450. {
  1451. $('.l-text-label', g.labelwrapper).css('text-align', p.labelAlign);
  1452. }
  1453. g.textwrapper.css({ display: 'inline' });
  1454. g.labelwrapper.width(g.wrapper.outerWidth() + p.labelWidth + 2);
  1455. }
  1456. },
  1457. _setWidth: function (value)
  1458. {
  1459. var g = this;
  1460. if (value > 20)
  1461. {
  1462. g.wrapper.css({ width: value });
  1463. g.inputText.css({ width: value - 20 });
  1464. g.textwrapper.css({ width: value });
  1465. }
  1466. },
  1467. _setHeight: function (value)
  1468. {
  1469. var g = this;
  1470. if (value > 10)
  1471. {
  1472. g.wrapper.height(value);
  1473. g.inputText.height(value - 2);
  1474. g.link.height(value - 4);
  1475. g.textwrapper.css({ width: value });
  1476. }
  1477. },
  1478. _setResize: function (resize)
  1479. {
  1480. //调整大小支持
  1481. if (resize && $.fn.ligerResizable)
  1482. {
  1483. var g = this;
  1484. g.selectBox.ligerResizable({ handles: 'se,s,e', onStartResize: function ()
  1485. {
  1486. g.resizing = true;
  1487. g.trigger('startResize');
  1488. }
  1489. , onEndResize: function ()
  1490. {
  1491. g.resizing = false;
  1492. if (g.trigger('endResize') == false)
  1493. return false;
  1494. }
  1495. });
  1496. g.selectBox.append("<div class='l-btn-nw-drop'></div>");
  1497. }
  1498. },
  1499. //查找Text,适用多选和单选
  1500. findTextByValue: function (value)
  1501. {
  1502. var g = this, p = this.options;
  1503. if (value == undefined) return "";
  1504. var texts = "";
  1505. var contain = function (checkvalue)
  1506. {
  1507. var targetdata = value.toString().split(p.split);
  1508. for (var i = 0; i < targetdata.length; i++)
  1509. {
  1510. if (targetdata[i] == checkvalue) return true;
  1511. }
  1512. return false;
  1513. };
  1514. $(g.data).each(function (i, item)
  1515. {
  1516. var val = item[p.valueField];
  1517. var txt = item[p.textField];
  1518. if (contain(val))
  1519. {
  1520. texts += txt + p.split;
  1521. }
  1522. });
  1523. if (texts.length > 0) texts = texts.substr(0, texts.length - 1);
  1524. return texts;
  1525. },
  1526. //查找Value,适用多选和单选
  1527. findValueByText: function (text)
  1528. {
  1529. var g = this, p = this.options;
  1530. if (!text && text == "") return "";
  1531. var contain = function (checkvalue)
  1532. {
  1533. var targetdata = text.toString().split(p.split);
  1534. for (var i = 0; i < targetdata.length; i++)
  1535. {
  1536. if (targetdata[i] == checkvalue) return true;
  1537. }
  1538. return false;
  1539. };
  1540. var values = "";
  1541. $(g.data).each(function (i, item)
  1542. {
  1543. var val = item[p.valueField];
  1544. var txt = item[p.textField];
  1545. if (contain(txt))
  1546. {
  1547. values += val + p.split;
  1548. }
  1549. });
  1550. if (values.length > 0) values = values.substr(0, values.length - 1);
  1551. return values;
  1552. },
  1553. removeItem: function ()
  1554. {
  1555. },
  1556. insertItem: function ()
  1557. {
  1558. },
  1559. addItem: function ()
  1560. {
  1561. },
  1562. _setValue: function (value)
  1563. {
  1564. var g = this, p = this.options;
  1565. var text = g.findTextByValue(value);
  1566. if (p.tree)
  1567. {
  1568. g.selectValueByTree(value);
  1569. }
  1570. else if (!p.isMultiSelect)
  1571. {
  1572. g._changeValue(value, text);
  1573. $("tr[value=" + value + "] td", g.selectBox).addClass("l-selected");
  1574. $("tr[value!=" + value + "] td", g.selectBox).removeClass("l-selected");
  1575. }
  1576. else
  1577. {
  1578. g._changeValue(value, text);
  1579. var targetdata = value.toString().split(p.split);
  1580. $("table.l-table-checkbox :checkbox", g.selectBox).each(function () { this.checked = false; });
  1581. for (var i = 0; i < targetdata.length; i++)
  1582. {
  1583. $("table.l-table-checkbox tr[value=" + targetdata[i] + "] :checkbox", g.selectBox).each(function () { this.checked = true; });
  1584. }
  1585. }
  1586. },
  1587. selectValue: function (value)
  1588. {
  1589. this._setValue(value);
  1590. },
  1591. bulidContent: function ()
  1592. {
  1593. var g = this, p = this.options;
  1594. this.clearContent();
  1595. if (g.select)
  1596. {
  1597. g.setSelect();
  1598. }
  1599. else if (g.data)
  1600. {
  1601. g.setData(g.data);
  1602. }
  1603. else if (p.tree)
  1604. {
  1605. g.setTree(p.tree);
  1606. }
  1607. else if (p.grid)
  1608. {
  1609. g.setGrid(p.grid);
  1610. }
  1611. else if (p.url)
  1612. {
  1613. $.ajax({
  1614. type: 'post',
  1615. url: p.url,
  1616. cache: false,
  1617. dataType: 'json',
  1618. success: function (data)
  1619. {
  1620. g.data = data;
  1621. g.setData(g.data);
  1622. g.trigger('success', [g.data]);
  1623. },
  1624. error: function (XMLHttpRequest, textStatus)
  1625. {
  1626. g.trigger('error', [XMLHttpRequest, textStatus]);
  1627. }
  1628. });
  1629. }
  1630. },
  1631. clearContent: function ()
  1632. {
  1633. var g = this, p = this.options;
  1634. $("table", g.selectBox).html("");
  1635. //g.inputText.val("");
  1636. //g.valueField.val("");
  1637. },
  1638. setSelect: function ()
  1639. {
  1640. var g = this, p = this.options;
  1641. this.clearContent();
  1642. $('option', g.select).each(function (i)
  1643. {
  1644. var val = $(this).val();
  1645. var txt = $(this).html();
  1646. var tr = $("<tr><td index='" + i + "' value='" + val + "'>" + txt + "</td>");
  1647. $("table.l-table-nocheckbox", g.selectBox).append(tr);
  1648. $("td", tr).hover(function ()
  1649. {
  1650. $(this).addClass("l-over");
  1651. }, function ()
  1652. {
  1653. $(this).removeClass("l-over");
  1654. });
  1655. });
  1656. $('td:eq(' + g.select[0].selectedIndex + ')', g.selectBox).each(function ()
  1657. {
  1658. if ($(this).hasClass("l-selected"))
  1659. {
  1660. g.selectBox.hide();
  1661. return;
  1662. }
  1663. $(".l-selected", g.selectBox).removeClass("l-selected");
  1664. $(this).addClass("l-selected");
  1665. if (g.select[0].selectedIndex != $(this).attr('index') && g.select[0].onchange)
  1666. {
  1667. g.select[0].selectedIndex = $(this).attr('index'); g.select[0].onchange();
  1668. }
  1669. var newIndex = parseInt($(this).attr('index'));
  1670. g.select[0].selectedIndex = newIndex;
  1671. g.select.trigger("change");
  1672. g.selectBox.hide();
  1673. var value = $(this).attr("value");
  1674. var text = $(this).html();
  1675. if (p.render)
  1676. {
  1677. g.inputText.val(p.render(value, text));
  1678. }
  1679. else
  1680. {
  1681. g.inputText.val(text);
  1682. }
  1683. });
  1684. g._addClickEven();
  1685. },
  1686. setData: function (data)
  1687. {
  1688. var g = this, p = this.options;
  1689. this.clearContent();
  1690. if (!data || !data.length) return;
  1691. if (g.data != data) g.data = data;
  1692. if (p.columns)
  1693. {
  1694. g.selectBox.table.headrow = $("<tr class='l-table-headerow'><td width='18px'></td></tr>");
  1695. g.selectBox.table.append(g.selectBox.table.headrow);
  1696. g.selectBox.table.addClass("l-box-select-grid");
  1697. for (var j = 0; j < p.columns.length; j++)
  1698. {
  1699. var headrow = $("<td columnindex='" + j + "' columnname='" + p.columns[j].name + "'>" + p.columns[j].header + "</td>");
  1700. if (p.columns[j].width)
  1701. {
  1702. headrow.width(p.columns[j].width);
  1703. }
  1704. g.selectBox.table.headrow.append(headrow);
  1705. }
  1706. }
  1707. for (var i = 0; i < data.length; i++)
  1708. {
  1709. var val = data[i][p.valueField];
  1710. var txt = data[i][p.textField];
  1711. if (!p.columns)
  1712. {
  1713. $("table.l-table-checkbox", g.selectBox).append("<tr value='" + val + "'><td style='width:18px;' index='" + i + "' value='" + val + "' text='" + txt + "' ><input type='checkbox' /></td><td index='" + i + "' value='" + val + "' align='left'>" + txt + "</td>");
  1714. $("table.l-table-nocheckbox", g.selectBox).append("<tr value='" + val + "'><td index='" + i + "' value='" + val + "' align='left'>" + txt + "</td>");
  1715. } else
  1716. {
  1717. var tr = $("<tr value='" + val + "'><td style='width:18px;' index='" + i + "' value='" + val + "' text='" + txt + "' ><input type='checkbox' /></td></tr>");
  1718. $("td", g.selectBox.table.headrow).each(function ()
  1719. {
  1720. var columnname = $(this).attr("columnname");
  1721. if (columnname)
  1722. {
  1723. var td = $("<td>" + data[i][columnname] + "</td>");
  1724. tr.append(td);
  1725. }
  1726. });
  1727. g.selectBox.table.append(tr);
  1728. }
  1729. }
  1730. //自定义复选框支持
  1731. if (p.isShowCheckBox && $.fn.ligerCheckBox)
  1732. {
  1733. $("table input:checkbox", g.selectBox).ligerCheckBox();
  1734. }
  1735. $(".l-table-checkbox input:checkbox", g.selectBox).change(function ()
  1736. {
  1737. if (this.checked && g.hasBind('beforeSelect'))
  1738. {
  1739. var parentTD = null;
  1740. if ($(this).parent().get(0).tagName.toLowerCase() == "div")
  1741. {
  1742. parentTD = $(this).parent().parent();
  1743. } else
  1744. {
  1745. parentTD = $(this).parent();
  1746. }
  1747. if (parentTD != null && g.trigger('beforeSelect', [parentTD.attr("value"), parentTD.attr("text")]) == false)
  1748. {
  1749. g.selectBox.slideToggle("fast");
  1750. return false;
  1751. }
  1752. }
  1753. if (!p.isMultiSelect)
  1754. {
  1755. if (this.checked)
  1756. {
  1757. $("input:checked", g.selectBox).not(this).each(function ()
  1758. {
  1759. this.checked = false;
  1760. $(".l-checkbox-checked", $(this).parent()).removeClass("l-checkbox-checked");
  1761. });
  1762. g.selectBox.slideToggle("fast");
  1763. }
  1764. }
  1765. g._checkboxUpdateValue();
  1766. });
  1767. $("table.l-table-nocheckbox td", g.selectBox).hover(function ()
  1768. {
  1769. $(this).addClass("l-over");
  1770. }, function ()
  1771. {
  1772. $(this).removeClass("l-over");
  1773. });
  1774. g._addClickEven();
  1775. //选择项初始化
  1776. g._dataInit();
  1777. },
  1778. //树
  1779. setTree: function (tree)
  1780. {
  1781. var g = this, p = this.options;
  1782. this.clearContent();
  1783. g.selectBox.table.remove();
  1784. if (tree.checkbox != false)
  1785. {
  1786. tree.onCheck = function ()
  1787. {
  1788. var nodes = g.treeManager.getChecked();
  1789. var value = [];
  1790. var text = [];
  1791. $(nodes).each(function (i, node)
  1792. {
  1793. if (p.treeLeafOnly && node.data.children) return;
  1794. value.push(node.data[p.valueField]);
  1795. text.push(node.data[p.textField]);
  1796. });
  1797. g._changeValue(value.join(p.split), text.join(p.split));
  1798. };
  1799. }
  1800. else
  1801. {
  1802. tree.onSelect = function (node)
  1803. {
  1804. if (p.treeLeafOnly && node.data.children) return;
  1805. var value = node.data[p.valueField];
  1806. var text = node.data[p.textField];
  1807. g._changeValue(value, text);
  1808. };
  1809. tree.onCancelSelect = function (node)
  1810. {
  1811. g._changeValue("", "");
  1812. };
  1813. }
  1814. tree.onAfterAppend = function (domnode, nodedata)
  1815. {
  1816. if (!g.treeManager) return;
  1817. var value = null;
  1818. if (p.initValue) value = p.initValue;
  1819. else if (g.valueField.val() != "") value = g.valueField.val();
  1820. g.selectValueByTree(value);
  1821. };
  1822. g.tree = $("<ul></ul>");
  1823. $("div:first", g.selectBox).append(g.tree);
  1824. g.tree.ligerTree(tree);
  1825. g.treeManager = g.tree.ligerGetTreeManager();
  1826. },
  1827. selectValueByTree: function (value)
  1828. {
  1829. var g = this, p = this.options;
  1830. if (value != null)
  1831. {
  1832. var text = "";
  1833. var valuelist = value.toString().split(p.split);
  1834. $(valuelist).each(function (i, item)
  1835. {
  1836. g.treeManager.selectNode(item.toString());
  1837. text += g.treeManager.getTextByID(item);
  1838. if (i < valuelist.length - 1) text += p.split;
  1839. });
  1840. g._changeValue(value, text);
  1841. }
  1842. },
  1843. //表格
  1844. setGrid: function (grid)
  1845. {
  1846. var g = this, p = this.options;
  1847. this.clearContent();
  1848. g.selectBox.table.remove();
  1849. g.grid = $("div:first", g.selectBox);
  1850. grid.columnWidth = grid.columnWidth || 120;
  1851. grid.width = "100%";
  1852. grid.height = "100%";
  1853. grid.heightDiff = -2;
  1854. grid.InWindow = false;
  1855. g.gridManager = g.grid.ligerGrid(grid);
  1856. p.hideOnLoseFocus = false;
  1857. if (grid.checkbox != false)
  1858. {
  1859. var onCheckRow = function ()
  1860. {
  1861. var rowsdata = g.gridManager.getCheckedRows();
  1862. var value = [];
  1863. var text = [];
  1864. $(rowsdata).each(function (i, rowdata)
  1865. {
  1866. value.push(rowdata[p.valueField]);
  1867. text.push(rowdata[p.textField]);
  1868. });
  1869. g._changeValue(value.join(p.split), text.join(p.split));
  1870. };
  1871. g.gridManager.bind('CheckAllRow', onCheckRow);
  1872. g.gridManager.bind('CheckRow', onCheckRow);
  1873. }
  1874. else
  1875. {
  1876. g.gridManager.bind('SelectRow', function (rowdata, rowobj, index)
  1877. {
  1878. var value = rowdata[p.valueField];
  1879. var text = rowdata[p.textField];
  1880. g._changeValue(value, text);
  1881. });
  1882. g.gridManager.bind('UnSelectRow', function (rowdata, rowobj, index)
  1883. {
  1884. g._changeValue("", "");
  1885. });
  1886. }
  1887. g.bind('show', function ()
  1888. {
  1889. if (g.gridManager)
  1890. {
  1891. g.gridManager._updateFrozenWidth();
  1892. }
  1893. });
  1894. g.bind('endResize', function ()
  1895. {
  1896. if (g.gridManager)
  1897. {
  1898. g.gridManager._updateFrozenWidth();
  1899. g.gridManager.setHeight(g.selectBox.height() - 2);
  1900. }
  1901. });
  1902. },
  1903. _getValue: function ()
  1904. {
  1905. return $(this.valueField).val();
  1906. },
  1907. getValue: function ()
  1908. {
  1909. //获取值
  1910. return this._getValue();
  1911. },
  1912. updateStyle: function ()
  1913. {
  1914. var g = this, p = this.options;
  1915. g._dataInit();
  1916. },
  1917. _dataInit: function ()
  1918. {
  1919. var g = this, p = this.options;
  1920. var value = null;
  1921. if (p.initValue != null && p.initText != null)
  1922. {
  1923. g._changeValue(p.initValue, p.initText);
  1924. }
  1925. //根据值来初始化
  1926. if (p.initValue != null)
  1927. {
  1928. value = p.initValue;
  1929. if (p.tree)
  1930. {
  1931. if(value)
  1932. g.selectValueByTree(value);
  1933. }
  1934. else
  1935. {
  1936. var text = g.findTextByValue(value);
  1937. g._changeValue(value, text);
  1938. }
  1939. }
  1940. //根据文本来初始化
  1941. else if (p.initText != null)
  1942. {
  1943. value = g.findValueByText(p.initText);
  1944. g._changeValue(value, p.initText);
  1945. }
  1946. else if (g.valueField.val() != "")
  1947. {
  1948. value = g.valueField.val();
  1949. if (p.tree)
  1950. {
  1951. if(value)
  1952. g.selectValueByTree(value);
  1953. }
  1954. else
  1955. {
  1956. var text = g.findTextByValue(value);
  1957. g._changeValue(value, text);
  1958. }
  1959. }
  1960. if (!p.isShowCheckBox && value != null)
  1961. {
  1962. $("table tr", g.selectBox).find("td:first").each(function ()
  1963. {
  1964. if (value == $(this).attr("value"))
  1965. {
  1966. $(this).addClass("l-selected");
  1967. }
  1968. });
  1969. }
  1970. if (p.isShowCheckBox && value != null)
  1971. {
  1972. $(":checkbox", g.selectBox).each(function ()
  1973. {
  1974. var parentTD = null;
  1975. var checkbox = $(this);
  1976. if (checkbox.parent().get(0).tagName.toLowerCase() == "div")
  1977. {
  1978. parentTD = checkbox.parent().parent();
  1979. } else
  1980. {
  1981. parentTD = checkbox.parent();
  1982. }
  1983. if (parentTD == null) return;
  1984. var valuearr = value.toString().split(p.split);
  1985. $(valuearr).each(function (i, item)
  1986. {
  1987. if (item == parentTD.attr("value"))
  1988. {
  1989. $(".l-checkbox", parentTD).addClass("l-checkbox-checked");
  1990. checkbox[0].checked = true;
  1991. }
  1992. });
  1993. });
  1994. }
  1995. },
  1996. //设置值到 文本框和隐藏域
  1997. _changeValue: function (newValue, newText)
  1998. {
  1999. var g = this, p = this.options;
  2000. g.valueField.val(newValue);
  2001. if (p.render)
  2002. {
  2003. g.inputText.val(p.render(newValue, newText));
  2004. }
  2005. else
  2006. {
  2007. g.inputText.val(newText);
  2008. }
  2009. g.selectedValue = newValue;
  2010. g.selectedText = newText;
  2011. g.inputText.trigger("change").focus();
  2012. g.trigger('selected', [newValue, newText]);
  2013. },
  2014. //更新选中的值(复选框)
  2015. _checkboxUpdateValue: function ()
  2016. {
  2017. var g = this, p = this.options;
  2018. var valueStr = "";
  2019. var textStr = "";
  2020. $("input:checked", g.selectBox).each(function ()
  2021. {
  2022. var parentTD = null;
  2023. if ($(this).parent().get(0).tagName.toLowerCase() == "div")
  2024. {
  2025. parentTD = $(this).parent().parent();
  2026. } else
  2027. {
  2028. parentTD = $(this).parent();
  2029. }
  2030. if (!parentTD) return;
  2031. valueStr += parentTD.attr("value") + p.split;
  2032. textStr += parentTD.attr("text") + p.split;
  2033. });
  2034. if (valueStr.length > 0) valueStr = valueStr.substr(0, valueStr.length - 1);
  2035. if (textStr.length > 0) textStr = textStr.substr(0, textStr.length - 1);
  2036. g._changeValue(valueStr, textStr);
  2037. },
  2038. _addClickEven: function ()
  2039. {
  2040. var g = this, p = this.options;
  2041. //选项点击
  2042. $(".l-table-nocheckbox td", g.selectBox).click(function ()
  2043. {
  2044. var value = $(this).attr("value");
  2045. var index = parseInt($(this).attr('index'));
  2046. var text = $(this).html();
  2047. if (g.hasBind('beforeSelect') && g.trigger('beforeSelect', [value, text]) == false)
  2048. {
  2049. if (p.slide) g.selectBox.slideToggle("fast");
  2050. else g.selectBox.hide();
  2051. return false;
  2052. }
  2053. if ($(this).hasClass("l-selected"))
  2054. {
  2055. if (p.slide) g.selectBox.slideToggle("fast");
  2056. else g.selectBox.hide();
  2057. return;
  2058. }
  2059. $(".l-selected", g.selectBox).removeClass("l-selected");
  2060. $(this).addClass("l-selected");
  2061. if (g.select)
  2062. {
  2063. if (g.select[0].selectedIndex != index)
  2064. {
  2065. g.select[0].selectedIndex = index;
  2066. g.select.trigger("change");
  2067. }
  2068. }
  2069. if (p.slide)
  2070. {
  2071. g.boxToggling = true;
  2072. g.selectBox.hide("fast", function ()
  2073. {
  2074. g.boxToggling = false;
  2075. })
  2076. } else g.selectBox.hide();
  2077. g._changeValue(value, text);
  2078. });
  2079. },
  2080. updateSelectBoxPosition: function ()
  2081. {
  2082. var g = this, p = this.options;
  2083. if (p.absolute)
  2084. {
  2085. g.selectBox.css({ left: g.wrapper.offset().left, top: g.wrapper.offset().top + 1 + g.wrapper.outerHeight() });
  2086. }
  2087. else
  2088. {
  2089. var topheight = g.wrapper.offset().top - $(window).scrollTop();
  2090. var selfheight = g.selectBox.height() + textHeight + 4;
  2091. if (topheight + selfheight > $(window).height() && topheight > selfheight)
  2092. {
  2093. g.selectBox.css("marginTop", -1 * (g.selectBox.height() + textHeight + 5));
  2094. }
  2095. }
  2096. },
  2097. _toggleSelectBox: function (isHide)
  2098. {
  2099. var g = this, p = this.options;
  2100. var textHeight = g.wrapper.height();
  2101. g.boxToggling = true;
  2102. if (isHide)
  2103. {
  2104. if (p.slide)
  2105. {
  2106. g.selectBox.slideToggle('fast', function ()
  2107. {
  2108. g.boxToggling = false;
  2109. });
  2110. }
  2111. else
  2112. {
  2113. g.selectBox.hide();
  2114. g.boxToggling = false;
  2115. }
  2116. }
  2117. else
  2118. {
  2119. g.updateSelectBoxPosition();
  2120. if (p.slide)
  2121. {
  2122. g.selectBox.slideToggle('fast', function ()
  2123. {
  2124. g.boxToggling = false;
  2125. if (!p.isShowCheckBox && $('td.l-selected', g.selectBox).length > 0)
  2126. {
  2127. var offSet = ($('td.l-selected', g.selectBox).offset().top - g.selectBox.offset().top);
  2128. $(".l-box-select-inner", g.selectBox).animate({ scrollTop: offSet });
  2129. }
  2130. });
  2131. }
  2132. else
  2133. {
  2134. g.selectBox.show();
  2135. g.boxToggling = false;
  2136. if (!g.tree && !g.grid && !p.isShowCheckBox && $('td.l-selected', g.selectBox).length > 0)
  2137. {
  2138. var offSet = ($('td.l-selected', g.selectBox).offset().top - g.selectBox.offset().top);
  2139. $(".l-box-select-inner", g.selectBox).animate({ scrollTop: offSet });
  2140. }
  2141. }
  2142. }
  2143. g.isShowed = g.selectBox.is(":visible");
  2144. g.trigger('toggle', [isHide]);
  2145. g.trigger(isHide ? 'hide' : 'show');
  2146. }
  2147. });
  2148. $.ligerui.controls.ComboBox.prototype.setValue = $.ligerui.controls.ComboBox.prototype.selectValue;
  2149. //设置文本框和隐藏控件的值
  2150. $.ligerui.controls.ComboBox.prototype.setInputValue = $.ligerui.controls.ComboBox.prototype._changeValue;
  2151. })(jQuery);/**
  2152. * jQuery ligerUI 1.1.9
  2153. *
  2154. * http://ligerui.com
  2155. *
  2156. * Author daomi 2012 [ gd_star@163.com ]
  2157. *
  2158. */
  2159. (function ($)
  2160. {
  2161. $.fn.ligerDateEditor = function ()
  2162. {
  2163. return $.ligerui.run.call(this, "ligerDateEditor", arguments);
  2164. };
  2165. $.fn.ligerGetDateEditorManager = function ()
  2166. {
  2167. return $.ligerui.run.call(this, "ligerGetDateEditorManager", arguments);
  2168. };
  2169. $.ligerDefaults.DateEditor = {
  2170. format: "yyyy-MM-dd hh:mm",
  2171. showTime: false,
  2172. onChangeDate: false,
  2173. absolute: true //选择框是否在附加到body,并绝对定位
  2174. };
  2175. $.ligerDefaults.DateEditorString = {
  2176. dayMessage: ["日", "一", "二", "三", "四", "五", "六"],
  2177. monthMessage: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
  2178. todayMessage: "今天",
  2179. closeMessage: "关闭"
  2180. };
  2181. $.ligerMethos.DateEditor = {};
  2182. $.ligerui.controls.DateEditor = function (element, options)
  2183. {
  2184. $.ligerui.controls.DateEditor.base.constructor.call(this, element, options);
  2185. };
  2186. $.ligerui.controls.DateEditor.ligerExtend($.ligerui.controls.Input, {
  2187. __getType: function ()
  2188. {
  2189. return 'DateEditor';
  2190. },
  2191. __idPrev: function ()
  2192. {
  2193. return 'DateEditor';
  2194. },
  2195. _extendMethods: function ()
  2196. {
  2197. return $.ligerMethos.DateEditor;
  2198. },
  2199. _render: function ()
  2200. {
  2201. var g = this, p = this.options;
  2202. if (!p.showTime && p.format.indexOf(" hh:mm") > -1)
  2203. p.format = p.format.replace(" hh:mm", "");
  2204. if (this.element.tagName.toLowerCase() != "input" || this.element.type != "text")
  2205. return;
  2206. g.inputText = $(this.element);
  2207. if (!g.inputText.hasClass("l-text-field"))
  2208. g.inputText.addClass("l-text-field");
  2209. g.link = $('<div class="l-trigger"><div class="l-trigger-icon"></div></div>');
  2210. g.text = g.inputText.wrap('<div class="l-text l-text-date" ></div>').parent();
  2211. g.text.append('<div class="l-text-l"></div><div class="l-text-r"></div>');
  2212. g.text.append(g.link);
  2213. //添加个包裹,
  2214. g.textwrapper = g.text.wrap('<div class="l-text-wrapper"></div>').parent();
  2215. var dateeditorHTML = "";
  2216. dateeditorHTML += "<div class='l-box-dateeditor' style='display:none'>";
  2217. dateeditorHTML += " <div class='l-box-dateeditor-header'>";
  2218. dateeditorHTML += " <div class='l-box-dateeditor-header-btn l-box-dateeditor-header-prevyear'><span></span></div>";
  2219. dateeditorHTML += " <div class='l-box-dateeditor-header-btn l-box-dateeditor-header-prevmonth'><span></span></div>";
  2220. dateeditorHTML += " <div class='l-box-dateeditor-header-text'><a class='l-box-dateeditor-header-month'></a> , <a class='l-box-dateeditor-header-year'></a></div>";
  2221. dateeditorHTML += " <div class='l-box-dateeditor-header-btn l-box-dateeditor-header-nextmonth'><span></span></div>";
  2222. dateeditorHTML += " <div class='l-box-dateeditor-header-btn l-box-dateeditor-header-nextyear'><span></span></div>";
  2223. dateeditorHTML += " </div>";
  2224. dateeditorHTML += " <div class='l-box-dateeditor-body'>";
  2225. dateeditorHTML += " <table cellpadding='0' cellspacing='0' border='0' class='l-box-dateeditor-calendar'>";
  2226. dateeditorHTML += " <thead>";
  2227. dateeditorHTML += " <tr><td align='center'></td><td align='center'></td><td align='center'></td><td align='center'></td><td align='center'></td><td align='center'></td><td align='center'></td></tr>";
  2228. dateeditorHTML += " </thead>";
  2229. dateeditorHTML += " <tbody>";
  2230. dateeditorHTML += " <tr class='l-first'><td align='center'></td><td align='center'></td><td align='center'></td><td align='center'></td><td align='center'></td><td align='center'></td><td align='center'></td></tr><tr><td align='center'></td><td align='center'></td><td align='center'></td><td align='center'></td><td align='center'></td><td align='center'></td><td align='center'></td></tr><tr><td align='center'></td><td align='center'></td><td align='center'></td><td align='center'></td><td align='center'></td><td align='center'></td><td align='center'></td></tr><tr><td align='center'></td><td align='center'></td><td align='center'></td><td align='center'></td><td align='center'></td><td align='center'></td><td align='center'></td></tr><tr><td align='center'></td><td align='center'></td><td align='center'></td><td align='center'></td><td align='center'></td><td align='center'></td><td align='center'></td></tr><tr><td align='center'></td><td align='center'></td><td align='center'></td><td align='center'></td><td align='center'></td><td align='center'></td><td align='center'></td></tr>";
  2231. dateeditorHTML += " </tbody>";
  2232. dateeditorHTML += " </table>";
  2233. dateeditorHTML += " <ul class='l-box-dateeditor-monthselector'><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul>";
  2234. dateeditorHTML += " <ul class='l-box-dateeditor-yearselector'><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul>";
  2235. dateeditorHTML += " <ul class='l-box-dateeditor-hourselector'><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul>";
  2236. dateeditorHTML += " <ul class='l-box-dateeditor-minuteselector'><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul>";
  2237. dateeditorHTML += " </div>";
  2238. dateeditorHTML += " <div class='l-box-dateeditor-toolbar'>";
  2239. dateeditorHTML += " <div class='l-box-dateeditor-time'></div>";
  2240. dateeditorHTML += " <div class='l-button l-button-today'></div>";
  2241. dateeditorHTML += " <div class='l-button l-button-close'></div>";
  2242. dateeditorHTML += " <div class='l-clear'></div>";
  2243. dateeditorHTML += " </div>";
  2244. dateeditorHTML += "</div>";
  2245. g.dateeditor = $(dateeditorHTML);
  2246. if (p.absolute)
  2247. g.dateeditor.appendTo('body').addClass("l-box-dateeditor-absolute");
  2248. else
  2249. g.textwrapper.append(g.dateeditor);
  2250. g.header = $(".l-box-dateeditor-header", g.dateeditor);
  2251. g.body = $(".l-box-dateeditor-body", g.dateeditor);
  2252. g.toolbar = $(".l-box-dateeditor-toolbar", g.dateeditor);
  2253. g.body.thead = $("thead", g.body);
  2254. g.body.tbody = $("tbody", g.body);
  2255. g.body.monthselector = $(".l-box-dateeditor-monthselector", g.body);
  2256. g.body.yearselector = $(".l-box-dateeditor-yearselector", g.body);
  2257. g.body.hourselector = $(".l-box-dateeditor-hourselector", g.body);
  2258. g.body.minuteselector = $(".l-box-dateeditor-minuteselector", g.body);
  2259. g.toolbar.time = $(".l-box-dateeditor-time", g.toolbar);
  2260. g.toolbar.time.hour = $("<a></a>");
  2261. g.toolbar.time.minute = $("<a></a>");
  2262. g.buttons = {
  2263. btnPrevYear: $(".l-box-dateeditor-header-prevyear", g.header),
  2264. btnNextYear: $(".l-box-dateeditor-header-nextyear", g.header),
  2265. btnPrevMonth: $(".l-box-dateeditor-header-prevmonth", g.header),
  2266. btnNextMonth: $(".l-box-dateeditor-header-nextmonth", g.header),
  2267. btnYear: $(".l-box-dateeditor-header-year", g.header),
  2268. btnMonth: $(".l-box-dateeditor-header-month", g.header),
  2269. btnToday: $(".l-button-today", g.toolbar),
  2270. btnClose: $(".l-button-close", g.toolbar)
  2271. };
  2272. var nowDate = new Date();
  2273. g.now = {
  2274. year: nowDate.getFullYear(),
  2275. month: nowDate.getMonth() + 1, //注意这里
  2276. day: nowDate.getDay(),
  2277. date: nowDate.getDate(),
  2278. hour: nowDate.getHours(),
  2279. minute: nowDate.getMinutes()
  2280. };
  2281. //当前的时间
  2282. g.currentDate = {
  2283. year: nowDate.getFullYear(),
  2284. month: nowDate.getMonth() + 1,
  2285. day: nowDate.getDay(),
  2286. date: nowDate.getDate(),
  2287. hour: nowDate.getHours(),
  2288. minute: nowDate.getMinutes()
  2289. };
  2290. //选择的时间
  2291. g.selectedDate = null;
  2292. //使用的时间
  2293. g.usedDate = null;
  2294. //初始化数据
  2295. //设置周日至周六
  2296. $("td", g.body.thead).each(function (i, td)
  2297. {
  2298. $(td).html(p.dayMessage[i]);
  2299. });
  2300. //设置一月到十一二月
  2301. $("li", g.body.monthselector).each(function (i, li)
  2302. {
  2303. $(li).html(p.monthMessage[i]);
  2304. });
  2305. //设置按钮
  2306. g.buttons.btnToday.html(p.todayMessage);
  2307. g.buttons.btnClose.html(p.closeMessage);
  2308. //设置时间
  2309. if (p.showTime)
  2310. {
  2311. g.toolbar.time.show();
  2312. g.toolbar.time.append(g.toolbar.time.hour).append(":").append(g.toolbar.time.minute);
  2313. $("li", g.body.hourselector).each(function (i, item)
  2314. {
  2315. var str = i;
  2316. if (i < 10) str = "0" + i.toString();
  2317. $(this).html(str);
  2318. });
  2319. $("li", g.body.minuteselector).each(function (i, item)
  2320. {
  2321. var str = i;
  2322. if (i < 10) str = "0" + i.toString();
  2323. $(this).html(str);
  2324. });
  2325. }
  2326. //设置主体
  2327. g.bulidContent();
  2328. //初始化
  2329. if (g.inputText.val() != "")
  2330. g.onTextChange();
  2331. /**************
  2332. **bulid evens**
  2333. *************/
  2334. g.dateeditor.hover(null, function (e)
  2335. {
  2336. if (g.dateeditor.is(":visible") && !g.editorToggling)
  2337. {
  2338. g.toggleDateEditor(true);
  2339. }
  2340. });
  2341. //toggle even
  2342. g.link.hover(function ()
  2343. {
  2344. if (p.disabled) return;
  2345. this.className = "l-trigger-hover";
  2346. }, function ()
  2347. {
  2348. if (p.disabled) return;
  2349. this.className = "l-trigger";
  2350. }).mousedown(function ()
  2351. {
  2352. if (p.disabled) return;
  2353. this.className = "l-trigger-pressed";
  2354. }).mouseup(function ()
  2355. {
  2356. if (p.disabled) return;
  2357. this.className = "l-trigger-hover";
  2358. }).click(function ()
  2359. {
  2360. if (p.disabled) return;
  2361. g.bulidContent();
  2362. g.toggleDateEditor(g.dateeditor.is(":visible"));
  2363. });
  2364. //不可用属性时处理
  2365. if (p.disabled)
  2366. {
  2367. g.inputText.attr("readonly", "readonly");
  2368. g.text.addClass('l-text-disabled');
  2369. }
  2370. //初始值
  2371. if (p.initValue)
  2372. {
  2373. g.inputText.val(p.initValue);
  2374. }
  2375. g.buttons.btnClose.click(function ()
  2376. {
  2377. g.toggleDateEditor(true);
  2378. });
  2379. //日期 点击
  2380. $("td", g.body.tbody).hover(function ()
  2381. {
  2382. if ($(this).hasClass("l-box-dateeditor-today")) return;
  2383. $(this).addClass("l-box-dateeditor-over");
  2384. }, function ()
  2385. {
  2386. $(this).removeClass("l-box-dateeditor-over");
  2387. }).click(function ()
  2388. {
  2389. $(".l-box-dateeditor-selected", g.body.tbody).removeClass("l-box-dateeditor-selected");
  2390. if (!$(this).hasClass("l-box-dateeditor-today"))
  2391. $(this).addClass("l-box-dateeditor-selected");
  2392. g.currentDate.date = parseInt($(this).html());
  2393. g.currentDate.day = new Date(g.currentDate.year, g.currentDate.month - 1, 1).getDay();
  2394. if ($(this).hasClass("l-box-dateeditor-out"))
  2395. {
  2396. if ($("tr", g.body.tbody).index($(this).parent()) == 0)
  2397. {
  2398. if (--g.currentDate.month == 0)
  2399. {
  2400. g.currentDate.month = 12;
  2401. g.currentDate.year--;
  2402. }
  2403. } else
  2404. {
  2405. if (++g.currentDate.month == 13)
  2406. {
  2407. g.currentDate.month = 1;
  2408. g.currentDate.year++;
  2409. }
  2410. }
  2411. }
  2412. g.selectedDate = {
  2413. year: g.currentDate.year,
  2414. month: g.currentDate.month,
  2415. date: g.currentDate.date
  2416. };
  2417. g.showDate();
  2418. g.editorToggling = true;
  2419. g.dateeditor.slideToggle('fast', function ()
  2420. {
  2421. g.editorToggling = false;
  2422. });
  2423. });
  2424. $(".l-box-dateeditor-header-btn", g.header).hover(function ()
  2425. {
  2426. $(this).addClass("l-box-dateeditor-header-btn-over");
  2427. }, function ()
  2428. {
  2429. $(this).removeClass("l-box-dateeditor-header-btn-over");
  2430. });
  2431. //选择年份
  2432. g.buttons.btnYear.click(function ()
  2433. {
  2434. //build year list
  2435. if (!g.body.yearselector.is(":visible"))
  2436. {
  2437. $("li", g.body.yearselector).each(function (i, item)
  2438. {
  2439. var currentYear = g.currentDate.year + (i - 4);
  2440. if (currentYear == g.currentDate.year)
  2441. $(this).addClass("l-selected");
  2442. else
  2443. $(this).removeClass("l-selected");
  2444. $(this).html(currentYear);
  2445. });
  2446. }
  2447. g.body.yearselector.slideToggle();
  2448. });
  2449. g.body.yearselector.hover(function () { }, function ()
  2450. {
  2451. $(this).slideUp();
  2452. });
  2453. $("li", g.body.yearselector).click(function ()
  2454. {
  2455. g.currentDate.year = parseInt($(this).html());
  2456. g.body.yearselector.slideToggle();
  2457. g.bulidContent();
  2458. });
  2459. //select month
  2460. g.buttons.btnMonth.click(function ()
  2461. {
  2462. $("li", g.body.monthselector).each(function (i, item)
  2463. {
  2464. //add selected style
  2465. if (g.currentDate.month == i + 1)
  2466. $(this).addClass("l-selected");
  2467. else
  2468. $(this).removeClass("l-selected");
  2469. });
  2470. g.body.monthselector.slideToggle();
  2471. });
  2472. g.body.monthselector.hover(function () { }, function ()
  2473. {
  2474. $(this).slideUp("fast");
  2475. });
  2476. $("li", g.body.monthselector).click(function ()
  2477. {
  2478. var index = $("li", g.body.monthselector).index(this);
  2479. g.currentDate.month = index + 1;
  2480. g.body.monthselector.slideToggle();
  2481. g.bulidContent();
  2482. });
  2483. //选择小时
  2484. g.toolbar.time.hour.click(function ()
  2485. {
  2486. $("li", g.body.hourselector).each(function (i, item)
  2487. {
  2488. //add selected style
  2489. if (g.currentDate.hour == i)
  2490. $(this).addClass("l-selected");
  2491. else
  2492. $(this).removeClass("l-selected");
  2493. });
  2494. g.body.hourselector.slideToggle();
  2495. });
  2496. g.body.hourselector.hover(function () { }, function ()
  2497. {
  2498. $(this).slideUp("fast");
  2499. });
  2500. $("li", g.body.hourselector).click(function ()
  2501. {
  2502. var index = $("li", g.body.hourselector).index(this);
  2503. g.currentDate.hour = index;
  2504. g.body.hourselector.slideToggle();
  2505. g.bulidContent();
  2506. });
  2507. //选择分钟
  2508. g.toolbar.time.minute.click(function ()
  2509. {
  2510. $("li", g.body.minuteselector).each(function (i, item)
  2511. {
  2512. //add selected style
  2513. if (g.currentDate.minute == i)
  2514. $(this).addClass("l-selected");
  2515. else
  2516. $(this).removeClass("l-selected");
  2517. });
  2518. g.body.minuteselector.slideToggle("fast", function ()
  2519. {
  2520. var index = $("li", this).index($('li.l-selected', this));
  2521. if (index > 29)
  2522. {
  2523. var offSet = ($('li.l-selected', this).offset().top - $(this).offset().top);
  2524. $(this).animate({ scrollTop: offSet });
  2525. }
  2526. });
  2527. });
  2528. g.body.minuteselector.hover(function () { }, function ()
  2529. {
  2530. $(this).slideUp("fast");
  2531. });
  2532. $("li", g.body.minuteselector).click(function ()
  2533. {
  2534. var index = $("li", g.body.minuteselector).index(this);
  2535. g.currentDate.minute = index;
  2536. g.body.minuteselector.slideToggle("fast");
  2537. g.bulidContent();
  2538. });
  2539. //上个月
  2540. g.buttons.btnPrevMonth.click(function ()
  2541. {
  2542. if (--g.currentDate.month == 0)
  2543. {
  2544. g.currentDate.month = 12;
  2545. g.currentDate.year--;
  2546. }
  2547. g.bulidContent();
  2548. });
  2549. //下个月
  2550. g.buttons.btnNextMonth.click(function ()
  2551. {
  2552. if (++g.currentDate.month == 13)
  2553. {
  2554. g.currentDate.month = 1;
  2555. g.currentDate.year++;
  2556. }
  2557. g.bulidContent();
  2558. });
  2559. //上一年
  2560. g.buttons.btnPrevYear.click(function ()
  2561. {
  2562. g.currentDate.year--;
  2563. g.bulidContent();
  2564. });
  2565. //下一年
  2566. g.buttons.btnNextYear.click(function ()
  2567. {
  2568. g.currentDate.year++;
  2569. g.bulidContent();
  2570. });
  2571. //今天
  2572. g.buttons.btnToday.click(function ()
  2573. {
  2574. g.currentDate = {
  2575. year: g.now.year,
  2576. month: g.now.month,
  2577. day: g.now.day,
  2578. date: g.now.date
  2579. };
  2580. g.selectedDate = {
  2581. year: g.now.year,
  2582. month: g.now.month,
  2583. day: g.now.day,
  2584. date: g.now.date
  2585. };
  2586. g.showDate();
  2587. g.dateeditor.slideToggle("fast");
  2588. });
  2589. //文本框
  2590. g.inputText.change(function ()
  2591. {
  2592. g.onTextChange();
  2593. }).blur(function ()
  2594. {
  2595. g.text.removeClass("l-text-focus");
  2596. }).focus(function ()
  2597. {
  2598. g.text.addClass("l-text-focus");
  2599. });
  2600. g.text.hover(function ()
  2601. {
  2602. g.text.addClass("l-text-over");
  2603. }, function ()
  2604. {
  2605. g.text.removeClass("l-text-over");
  2606. });
  2607. //LEABEL 支持
  2608. if (p.label)
  2609. {
  2610. g.labelwrapper = g.textwrapper.wrap('<div class="l-labeltext"></div>').parent();
  2611. g.labelwrapper.prepend('<div class="l-text-label" style="float:left;display:inline;">' + p.label + ':&nbsp</div>');
  2612. g.textwrapper.css('float', 'left');
  2613. if (!p.labelWidth)
  2614. {
  2615. p.labelWidth = $('.l-text-label', g.labelwrapper).outerWidth();
  2616. } else
  2617. {
  2618. $('.l-text-label', g.labelwrapper).outerWidth(p.labelWidth);
  2619. }
  2620. $('.l-text-label', g.labelwrapper).width(p.labelWidth);
  2621. $('.l-text-label', g.labelwrapper).height(g.text.height());
  2622. g.labelwrapper.append('<br style="clear:both;" />');
  2623. if (p.labelAlign)
  2624. {
  2625. $('.l-text-label', g.labelwrapper).css('text-align', p.labelAlign);
  2626. }
  2627. g.textwrapper.css({ display: 'inline' });
  2628. g.labelwrapper.width(g.text.outerWidth() + p.labelWidth + 2);
  2629. }
  2630. g.set(p);
  2631. },
  2632. destroy: function ()
  2633. {
  2634. if (this.textwrapper) this.textwrapper.remove();
  2635. if (this.dateeditor) this.dateeditor.remove();
  2636. this.options = null;
  2637. $.ligerui.remove(this);
  2638. },
  2639. bulidContent: function ()
  2640. {
  2641. var g = this, p = this.options;
  2642. //当前月第一天星期
  2643. var thismonthFirstDay = new Date(g.currentDate.year, g.currentDate.month - 1, 1).getDay();
  2644. //当前月天数
  2645. var nextMonth = g.currentDate.month;
  2646. var nextYear = g.currentDate.year;
  2647. if (++nextMonth == 13)
  2648. {
  2649. nextMonth = 1;
  2650. nextYear++;
  2651. }
  2652. var monthDayNum = new Date(nextYear, nextMonth - 1, 0).getDate();
  2653. //当前上个月天数
  2654. var prevMonthDayNum = new Date(g.currentDate.year, g.currentDate.month - 1, 0).getDate();
  2655. g.buttons.btnMonth.html(p.monthMessage[g.currentDate.month - 1]);
  2656. g.buttons.btnYear.html(g.currentDate.year);
  2657. g.toolbar.time.hour.html(g.currentDate.hour);
  2658. g.toolbar.time.minute.html(g.currentDate.minute);
  2659. if (g.toolbar.time.hour.html().length == 1)
  2660. g.toolbar.time.hour.html("0" + g.toolbar.time.hour.html());
  2661. if (g.toolbar.time.minute.html().length == 1)
  2662. g.toolbar.time.minute.html("0" + g.toolbar.time.minute.html());
  2663. $("td", this.body.tbody).each(function () { this.className = "" });
  2664. $("tr", this.body.tbody).each(function (i, tr)
  2665. {
  2666. $("td", tr).each(function (j, td)
  2667. {
  2668. var id = i * 7 + (j - thismonthFirstDay);
  2669. var showDay = id + 1;
  2670. if (g.selectedDate && g.currentDate.year == g.selectedDate.year &&
  2671. g.currentDate.month == g.selectedDate.month &&
  2672. id + 1 == g.selectedDate.date)
  2673. {
  2674. if (j == 0 || j == 6)
  2675. {
  2676. $(td).addClass("l-box-dateeditor-holiday")
  2677. }
  2678. $(td).addClass("l-box-dateeditor-selected");
  2679. $(td).siblings().removeClass("l-box-dateeditor-selected");
  2680. }
  2681. else if (g.currentDate.year == g.now.year &&
  2682. g.currentDate.month == g.now.month &&
  2683. id + 1 == g.now.date)
  2684. {
  2685. if (j == 0 || j == 6)
  2686. {
  2687. $(td).addClass("l-box-dateeditor-holiday")
  2688. }
  2689. $(td).addClass("l-box-dateeditor-today");
  2690. }
  2691. else if (id < 0)
  2692. {
  2693. showDay = prevMonthDayNum + showDay;
  2694. $(td).addClass("l-box-dateeditor-out")
  2695. .removeClass("l-box-dateeditor-selected");
  2696. }
  2697. else if (id > monthDayNum - 1)
  2698. {
  2699. showDay = showDay - monthDayNum;
  2700. $(td).addClass("l-box-dateeditor-out")
  2701. .removeClass("l-box-dateeditor-selected");
  2702. }
  2703. else if (j == 0 || j == 6)
  2704. {
  2705. $(td).addClass("l-box-dateeditor-holiday")
  2706. .removeClass("l-box-dateeditor-selected");
  2707. }
  2708. else
  2709. {
  2710. td.className = "";
  2711. }
  2712. $(td).html(showDay);
  2713. });
  2714. });
  2715. },
  2716. updateSelectBoxPosition: function ()
  2717. {
  2718. var g = this, p = this.options;
  2719. if (p.absolute)
  2720. {
  2721. g.dateeditor.css({ left: g.text.offset().left, top: g.text.offset().top + 1 + g.text.outerHeight() });
  2722. }
  2723. else
  2724. {
  2725. if (g.text.offset().top + 4 > g.dateeditor.height() && g.text.offset().top + g.dateeditor.height() + textHeight + 4 - $(window).scrollTop() > $(window).height())
  2726. {
  2727. g.dateeditor.css("marginTop", -1 * (g.dateeditor.height() + textHeight + 5));
  2728. g.showOnTop = true;
  2729. }
  2730. else
  2731. {
  2732. g.showOnTop = false;
  2733. }
  2734. }
  2735. },
  2736. toggleDateEditor: function (isHide)
  2737. {
  2738. var g = this, p = this.options;
  2739. var textHeight = g.text.height();
  2740. g.editorToggling = true;
  2741. if (isHide)
  2742. {
  2743. g.dateeditor.hide('fast', function ()
  2744. {
  2745. g.editorToggling = false;
  2746. });
  2747. }
  2748. else
  2749. {
  2750. g.updateSelectBoxPosition();
  2751. g.dateeditor.slideDown('fast', function ()
  2752. {
  2753. g.editorToggling = false;
  2754. });
  2755. }
  2756. },
  2757. showDate: function ()
  2758. {
  2759. var g = this, p = this.options;
  2760. if (!this.selectedDate) return;
  2761. var dateStr = g.selectedDate.year + "/" + g.selectedDate.month + "/" + g.selectedDate.date;
  2762. this.currentDate.hour = parseInt(g.toolbar.time.hour.html(), 10);
  2763. this.currentDate.minute = parseInt(g.toolbar.time.minute.html(), 10);
  2764. if (p.showTime)
  2765. {
  2766. dateStr += " " + this.currentDate.hour + ":" + this.currentDate.minute;
  2767. }
  2768. this.inputText.val(dateStr);
  2769. this.inputText.trigger("change").focus();
  2770. },
  2771. isDateTime: function (dateStr)
  2772. {
  2773. var g = this, p = this.options;
  2774. var r = dateStr.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
  2775. if (r == null) return false;
  2776. var d = new Date(r[1], r[3] - 1, r[4]);
  2777. if (d == "NaN") return false;
  2778. return (d.getFullYear() == r[1] && (d.getMonth() + 1) == r[3] && d.getDate() == r[4]);
  2779. },
  2780. isLongDateTime: function (dateStr)
  2781. {
  2782. var g = this, p = this.options;
  2783. var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2})$/;
  2784. var r = dateStr.match(reg);
  2785. if (r == null) return false;
  2786. var d = new Date(r[1], r[3] - 1, r[4], r[5], r[6]);
  2787. if (d == "NaN") return false;
  2788. return (d.getFullYear() == r[1] && (d.getMonth() + 1) == r[3] && d.getDate() == r[4] && d.getHours() == r[5] && d.getMinutes() == r[6]);
  2789. },
  2790. getFormatDate: function (date)
  2791. {
  2792. var g = this, p = this.options;
  2793. if (date == "NaN") return null;
  2794. var format = p.format;
  2795. var o = {
  2796. "M+": date.getMonth() + 1,
  2797. "d+": date.getDate(),
  2798. "h+": date.getHours(),
  2799. "m+": date.getMinutes(),
  2800. "s+": date.getSeconds(),
  2801. "q+": Math.floor((date.getMonth() + 3) / 3),
  2802. "S": date.getMilliseconds()
  2803. }
  2804. if (/(y+)/.test(format))
  2805. {
  2806. format = format.replace(RegExp.$1, (date.getFullYear() + "")
  2807. .substr(4 - RegExp.$1.length));
  2808. }
  2809. for (var k in o)
  2810. {
  2811. if (new RegExp("(" + k + ")").test(format))
  2812. {
  2813. format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k]
  2814. : ("00" + o[k]).substr(("" + o[k]).length));
  2815. }
  2816. }
  2817. return format;
  2818. },
  2819. onTextChange: function ()
  2820. {
  2821. var g = this, p = this.options;
  2822. var val = g.inputText.val();
  2823. if (val == "")
  2824. {
  2825. g.selectedDate = null;
  2826. return true;
  2827. }
  2828. if (!p.showTime && !g.isDateTime(val))
  2829. {
  2830. //恢复
  2831. if (!g.usedDate)
  2832. {
  2833. g.inputText.val("");
  2834. } else
  2835. {
  2836. g.inputText.val(g.getFormatDate(g.usedDate));
  2837. }
  2838. }
  2839. else if (p.showTime && !g.isLongDateTime(val))
  2840. {
  2841. //恢复
  2842. if (!g.usedDate)
  2843. {
  2844. g.inputText.val("");
  2845. } else
  2846. {
  2847. g.inputText.val(g.getFormatDate(g.usedDate));
  2848. }
  2849. }
  2850. else
  2851. {
  2852. val = val.replace(/-/g, "/");
  2853. var formatVal = g.getFormatDate(new Date(val));
  2854. if (formatVal == null)
  2855. {
  2856. //恢复
  2857. if (!g.usedDate)
  2858. {
  2859. g.inputText.val("");
  2860. } else
  2861. {
  2862. g.inputText.val(g.getFormatDate(g.usedDate));
  2863. }
  2864. }
  2865. g.usedDate = new Date(val); //记录
  2866. g.selectedDate = {
  2867. year: g.usedDate.getFullYear(),
  2868. month: g.usedDate.getMonth() + 1, //注意这里
  2869. day: g.usedDate.getDay(),
  2870. date: g.usedDate.getDate(),
  2871. hour: g.usedDate.getHours(),
  2872. minute: g.usedDate.getMinutes()
  2873. };
  2874. g.currentDate = {
  2875. year: g.usedDate.getFullYear(),
  2876. month: g.usedDate.getMonth() + 1, //注意这里
  2877. day: g.usedDate.getDay(),
  2878. date: g.usedDate.getDate(),
  2879. hour: g.usedDate.getHours(),
  2880. minute: g.usedDate.getMinutes()
  2881. };
  2882. g.inputText.val(formatVal);
  2883. g.trigger('changeDate', [formatVal]);
  2884. if ($(g.dateeditor).is(":visible"))
  2885. g.bulidContent();
  2886. }
  2887. },
  2888. _setHeight: function (value)
  2889. {
  2890. var g = this;
  2891. if (value > 4)
  2892. {
  2893. g.text.css({ height: value });
  2894. g.inputText.css({ height: value });
  2895. g.textwrapper.css({ height: value });
  2896. }
  2897. },
  2898. _setWidth: function (value)
  2899. {
  2900. var g = this;
  2901. if (value > 20)
  2902. {
  2903. g.text.css({ width: value });
  2904. g.inputText.css({ width: value - 20 });
  2905. g.textwrapper.css({ width: value });
  2906. }
  2907. },
  2908. _setValue: function (value)
  2909. {
  2910. var g = this;
  2911. if (!value) g.inputText.val('');
  2912. if (typeof value == "string")
  2913. {
  2914. g.inputText.val(value);
  2915. }
  2916. else if (typeof value == "object")
  2917. {
  2918. if (value instanceof Date)
  2919. {
  2920. g.inputText.val(g.getFormatDate(value));
  2921. g.onTextChange();
  2922. }
  2923. }
  2924. },
  2925. _getValue: function ()
  2926. {
  2927. return this.usedDate;
  2928. },
  2929. setEnabled: function ()
  2930. {
  2931. var g = this, p = this.options;
  2932. this.inputText.removeAttr("readonly");
  2933. this.text.removeClass('l-text-disabled');
  2934. p.disabled = false;
  2935. },
  2936. setDisabled: function ()
  2937. {
  2938. var g = this, p = this.options;
  2939. this.inputText.attr("readonly", "readonly");
  2940. this.text.addClass('l-text-disabled');
  2941. p.disabled = true;
  2942. }
  2943. });
  2944. })(jQuery);/**
  2945. * jQuery ligerUI 1.1.9
  2946. *
  2947. * http://ligerui.com
  2948. *
  2949. * Author daomi 2012 [ gd_star@163.com ]
  2950. *
  2951. */
  2952. (function ($)
  2953. {
  2954. var l = $.ligerui;
  2955. //全局事件
  2956. $(".l-dialog-btn").live('mouseover', function ()
  2957. {
  2958. $(this).addClass("l-dialog-btn-over");
  2959. }).live('mouseout', function ()
  2960. {
  2961. $(this).removeClass("l-dialog-btn-over");
  2962. });
  2963. $(".l-dialog-tc .l-dialog-close").live('mouseover', function ()
  2964. {
  2965. $(this).addClass("l-dialog-close-over");
  2966. }).live('mouseout', function ()
  2967. {
  2968. $(this).removeClass("l-dialog-close-over");
  2969. });
  2970. $.ligerDialog = function ()
  2971. {
  2972. return l.run.call(null, "ligerDialog", arguments, { isStatic: true });
  2973. };
  2974. //dialog 图片文件夹的路径 预加载
  2975. $.ligerui.DialogImagePath = "../../lib/ligerUI/skins/Aqua/images/win/";
  2976. function prevImage(paths)
  2977. {
  2978. for (var i in paths)
  2979. {
  2980. $('<img />').attr('src', l.DialogImagePath + paths[i]);
  2981. }
  2982. }
  2983. //prevImage(['dialog.gif', 'dialog-winbtns.gif', 'dialog-bc.gif', 'dialog-tc.gif']);
  2984. $.ligerDefaults.Dialog = {
  2985. cls: null, //给dialog附加css class
  2986. id: null, //给dialog附加id
  2987. buttons: null, //按钮集合
  2988. isDrag: true, //是否拖动
  2989. width: 280, //宽度
  2990. height: null, //高度,默认自适应
  2991. content: '', //内容
  2992. target: null, //目标对象,指定它将以appendTo()的方式载入
  2993. url: null, //目标页url,默认以iframe的方式载入
  2994. load: false, //是否以load()的方式加载目标页的内容
  2995. onLoaded: null,
  2996. type: 'none', //类型 warn、success、error、question
  2997. left: null, //位置left
  2998. top: null, //位置top
  2999. modal: true, //是否模态对话框
  3000. name: null, //创建iframe时 作为iframe的name和id
  3001. isResize: false, // 是否调整大小
  3002. allowClose: true, //允许关闭
  3003. opener: null,
  3004. timeParmName: null, //是否给URL后面加上值为new Date().getTime()的参数,如果需要指定一个参数名即可
  3005. closeWhenEnter: null, //回车时是否关闭dialog
  3006. isHidden: true, //关闭对话框时是否只是隐藏,还是销毁对话框
  3007. show: true, //初始化时是否马上显示
  3008. title: '提示', //头部
  3009. showMax: false, //是否显示最大化按钮
  3010. showToggle: false, //是否显示收缩窗口按钮
  3011. showMin: false, //是否显示最小化按钮
  3012. slide: $.browser.msie ? false : true, //是否以动画的形式显示
  3013. fixedType: null, //在固定的位置显示, 可以设置的值有n, e, s, w, ne, se, sw, nw
  3014. showType: null //显示类型,可以设置为slide(固定显示时有效)
  3015. };
  3016. $.ligerDefaults.DialogString = {
  3017. titleMessage: '提示', //提示文本标题
  3018. ok: '确定',
  3019. yes: '是',
  3020. no: '否',
  3021. cancel: '取消',
  3022. waittingMessage: '正在等待中,请稍候...'
  3023. };
  3024. $.ligerMethos.Dialog = $.ligerMethos.Dialog || {};
  3025. l.controls.Dialog = function (options)
  3026. {
  3027. l.controls.Dialog.base.constructor.call(this, null, options);
  3028. };
  3029. l.controls.Dialog.ligerExtend(l.core.Win, {
  3030. __getType: function ()
  3031. {
  3032. return 'Dialog';
  3033. },
  3034. __idPrev: function ()
  3035. {
  3036. return 'Dialog';
  3037. },
  3038. _extendMethods: function ()
  3039. {
  3040. return $.ligerMethos.Dialog;
  3041. },
  3042. _render: function ()
  3043. {
  3044. var g = this, p = this.options;
  3045. g.set(p, true);
  3046. var dialog = $('<div class="l-dialog"><table class="l-dialog-table" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="l-dialog-tl"></td><td class="l-dialog-tc"><div class="l-dialog-tc-inner"><div class="l-dialog-icon"></div><div class="l-dialog-title"></div><div class="l-dialog-winbtns"><div class="l-dialog-winbtn l-dialog-close"></div></div></div></td><td class="l-dialog-tr"></td></tr><tr><td class="l-dialog-cl"></td><td class="l-dialog-cc"><div class="l-dialog-body"><div class="l-dialog-image"></div> <div class="l-dialog-content"></div><div class="l-dialog-buttons"><div class="l-dialog-buttons-inner"></div></td><td class="l-dialog-cr"></td></tr><tr><td class="l-dialog-bl"></td><td class="l-dialog-bc"></td><td class="l-dialog-br"></td></tr></tbody></table></div>');
  3047. $('body').append(dialog);
  3048. g.dialog = dialog;
  3049. g.element = dialog[0];
  3050. g.dialog.body = $(".l-dialog-body:first", g.dialog);
  3051. g.dialog.header = $(".l-dialog-tc-inner:first", g.dialog);
  3052. g.dialog.winbtns = $(".l-dialog-winbtns:first", g.dialog.header);
  3053. g.dialog.buttons = $(".l-dialog-buttons:first", g.dialog);
  3054. g.dialog.content = $(".l-dialog-content:first", g.dialog);
  3055. g.set(p, false);
  3056. if (p.allowClose == false) $(".l-dialog-close", g.dialog).remove();
  3057. if (p.target || p.url || p.type == "none")
  3058. {
  3059. p.type = null;
  3060. g.dialog.addClass("l-dialog-win");
  3061. }
  3062. if (p.cls) g.dialog.addClass(p.cls);
  3063. if (p.id) g.dialog.attr("id", p.id);
  3064. //设置锁定屏幕、拖动支持 和设置图片
  3065. g.mask();
  3066. if (p.isDrag)
  3067. g._applyDrag();
  3068. if (p.isResize)
  3069. g._applyResize();
  3070. if (p.type)
  3071. g._setImage();
  3072. else
  3073. {
  3074. $(".l-dialog-image", g.dialog).remove();
  3075. g.dialog.content.addClass("l-dialog-content-noimage");
  3076. }
  3077. if (!p.show)
  3078. {
  3079. g.unmask();
  3080. g.dialog.hide();
  3081. }
  3082. //设置主体内容
  3083. if (p.target)
  3084. {
  3085. g.dialog.content.prepend(p.target);
  3086. $(p.target).show();
  3087. }
  3088. else if (p.url)
  3089. {
  3090. if (p.timeParmName)
  3091. {
  3092. p.url += p.url.indexOf('?') == -1 ? "?" : "&";
  3093. p.url += p.timeParmName + "=" + new Date().getTime();
  3094. }
  3095. if (p.load)
  3096. {
  3097. g.dialog.body.load(p.url, function ()
  3098. {
  3099. g._saveStatus();
  3100. g.trigger('loaded');
  3101. });
  3102. }
  3103. else
  3104. {
  3105. g.jiframe = $("<iframe frameborder='0'></iframe>");
  3106. var framename = p.name ? p.name : "ligerwindow" + new Date().getTime();
  3107. g.jiframe.attr("name", framename);
  3108. g.jiframe.attr("id", framename);
  3109. g.dialog.content.prepend(g.jiframe);
  3110. g.dialog.content.addClass("l-dialog-content-nopadding");
  3111. setTimeout(function ()
  3112. {
  3113. g.jiframe.attr("src", p.url);
  3114. g.frame = window.frames[g.jiframe.attr("name")];
  3115. }, 0);
  3116. }
  3117. }
  3118. if (p.opener) g.dialog.opener = p.opener;
  3119. //设置按钮
  3120. if (p.buttons)
  3121. {
  3122. $(p.buttons).each(function (i, item)
  3123. {
  3124. var btn = $('<div class="l-dialog-btn"><div class="l-dialog-btn-l"></div><div class="l-dialog-btn-r"></div><div class="l-dialog-btn-inner"></div></div>');
  3125. $(".l-dialog-btn-inner", btn).html(item.text);
  3126. $(".l-dialog-buttons-inner", g.dialog.buttons).prepend(btn);
  3127. item.width && btn.width(item.width);
  3128. item.onclick && btn.click(function () { item.onclick(item, g, i) });
  3129. });
  3130. } else
  3131. {
  3132. g.dialog.buttons.remove();
  3133. }
  3134. $(".l-dialog-buttons-inner", g.dialog.buttons).append("<div class='l-clear'></div>");
  3135. $(".l-dialog-title", g.dialog)
  3136. .bind("selectstart", function () { return false; });
  3137. g.dialog.click(function ()
  3138. {
  3139. l.win.setFront(g);
  3140. });
  3141. //设置事件
  3142. $(".l-dialog-tc .l-dialog-close", g.dialog).click(function ()
  3143. {
  3144. if (p.isHidden)
  3145. g.hide();
  3146. else
  3147. g.close();
  3148. });
  3149. if (!p.fixedType)
  3150. {
  3151. //位置初始化
  3152. var left = 0;
  3153. var top = 0;
  3154. var width = p.width || g.dialog.width();
  3155. if (p.slide == true) p.slide = 'fast';
  3156. if (p.left != null) left = p.left;
  3157. else p.left = left = 0.5 * ($(window).width() - width);
  3158. if (p.top != null) top = p.top;
  3159. else p.top = top = 0.5 * ($(window).height() - g.dialog.height()) + $(window).scrollTop() - 10;
  3160. if (left < 0) p.left = left = 0;
  3161. if (top < 0) p.top = top = 0;
  3162. g.dialog.css({ left: left, top: top });
  3163. }
  3164. g.show();
  3165. $('body').bind('keydown.dialog', function (e)
  3166. {
  3167. var key = e.which;
  3168. if (key == 13)
  3169. {
  3170. g.enter();
  3171. }
  3172. else if (key == 27)
  3173. {
  3174. g.esc();
  3175. }
  3176. });
  3177. g._updateBtnsWidth();
  3178. g._saveStatus();
  3179. g._onReisze();
  3180. },
  3181. _borderX: 12,
  3182. _borderY: 32,
  3183. doMax: function (slide)
  3184. {
  3185. var g = this, p = this.options;
  3186. var width = $(window).width(), height = $(window).height(), left = 0, top = 0;
  3187. if (l.win.taskbar)
  3188. {
  3189. height -= l.win.taskbar.outerHeight();
  3190. if (l.win.top) top += l.win.taskbar.outerHeight();
  3191. }
  3192. if (slide)
  3193. {
  3194. g.dialog.body.animate({ width: width - g._borderX }, p.slide);
  3195. g.dialog.animate({ left: left, top: top }, p.slide);
  3196. g.dialog.content.animate({ height: height - g._borderY - g.dialog.buttons.outerHeight() }, p.slide, function ()
  3197. {
  3198. g._onReisze();
  3199. });
  3200. }
  3201. else
  3202. {
  3203. g.set({ width: width, height: height, left: left, top: top });
  3204. g._onReisze();
  3205. }
  3206. },
  3207. //最大化
  3208. max: function ()
  3209. {
  3210. var g = this, p = this.options;
  3211. if (g.winmax)
  3212. {
  3213. g.winmax.addClass("l-dialog-recover");
  3214. g.doMax(p.slide);
  3215. if (g.wintoggle)
  3216. {
  3217. if (g.wintoggle.hasClass("l-dialog-extend"))
  3218. g.wintoggle.addClass("l-dialog-toggle-disabled l-dialog-extend-disabled");
  3219. else
  3220. g.wintoggle.addClass("l-dialog-toggle-disabled l-dialog-collapse-disabled");
  3221. }
  3222. if (g.resizable) g.resizable.set({ disabled: true });
  3223. if (g.draggable) g.draggable.set({ disabled: true });
  3224. g.maximum = true;
  3225. $(window).bind('resize.dialogmax', function ()
  3226. {
  3227. g.doMax(false);
  3228. });
  3229. }
  3230. },
  3231. //恢复
  3232. recover: function ()
  3233. {
  3234. var g = this, p = this.options;
  3235. if (g.winmax)
  3236. {
  3237. g.winmax.removeClass("l-dialog-recover");
  3238. if (p.slide)
  3239. {
  3240. g.dialog.body.animate({ width: g._width - g._borderX }, p.slide);
  3241. g.dialog.animate({ left: g._left, top: g._top }, p.slide);
  3242. g.dialog.content.animate({ height: g._height - g._borderY - g.dialog.buttons.outerHeight() }, p.slide, function ()
  3243. {
  3244. g._onReisze();
  3245. });
  3246. }
  3247. else
  3248. {
  3249. g.set({ width: g._width, height: g._height, left: g._left, top: g._top });
  3250. g._onReisze();
  3251. }
  3252. if (g.wintoggle)
  3253. {
  3254. g.wintoggle.removeClass("l-dialog-toggle-disabled l-dialog-extend-disabled l-dialog-collapse-disabled");
  3255. }
  3256. $(window).unbind('resize.dialogmax');
  3257. }
  3258. if (this.resizable) this.resizable.set({ disabled: false });
  3259. if (g.draggable) g.draggable.set({ disabled: false });
  3260. g.maximum = false;
  3261. },
  3262. //最小化
  3263. min: function ()
  3264. {
  3265. var g = this, p = this.options;
  3266. var task = l.win.getTask(this);
  3267. if (p.slide)
  3268. {
  3269. g.dialog.body.animate({ width: 1 }, p.slide);
  3270. task.y = task.offset().top + task.height();
  3271. task.x = task.offset().left + task.width() / 2;
  3272. g.dialog.animate({ left: task.x, top: task.y }, p.slide, function ()
  3273. {
  3274. g.dialog.hide();
  3275. });
  3276. }
  3277. else
  3278. {
  3279. g.dialog.hide();
  3280. }
  3281. g.unmask();
  3282. g.minimize = true;
  3283. g.actived = false;
  3284. },
  3285. active: function ()
  3286. {
  3287. var g = this, p = this.options;
  3288. if (g.minimize)
  3289. {
  3290. var width = g._width, height = g._height, left = g._left, top = g._top;
  3291. if (g.maximum)
  3292. {
  3293. width = $(window).width();
  3294. height = $(window).height();
  3295. left = top = 0;
  3296. if (l.win.taskbar)
  3297. {
  3298. height -= l.win.taskbar.outerHeight();
  3299. if (l.win.top) top += l.win.taskbar.outerHeight();
  3300. }
  3301. }
  3302. if (p.slide)
  3303. {
  3304. g.dialog.body.animate({ width: width - g._borderX }, p.slide);
  3305. g.dialog.animate({ left: left, top: top }, p.slide);
  3306. }
  3307. else
  3308. {
  3309. g.set({ width: width, height: height, left: left, top: top });
  3310. }
  3311. }
  3312. g.actived = true;
  3313. g.minimize = false;
  3314. l.win.setFront(g);
  3315. g.show();
  3316. },
  3317. //展开 收缩
  3318. toggle: function ()
  3319. {
  3320. var g = this, p = this.options;
  3321. if (!g.wintoggle) return;
  3322. if (g.wintoggle.hasClass("l-dialog-extend"))
  3323. g.extend();
  3324. else
  3325. g.collapse();
  3326. },
  3327. //收缩
  3328. collapse: function ()
  3329. {
  3330. var g = this, p = this.options;
  3331. if (!g.wintoggle) return;
  3332. if (p.slide)
  3333. g.dialog.content.animate({ height: 1 }, p.slide);
  3334. else
  3335. g.dialog.content.height(1);
  3336. if (this.resizable) this.resizable.set({ disabled: true });
  3337. },
  3338. //展开
  3339. extend: function ()
  3340. {
  3341. var g = this, p = this.options;
  3342. if (!g.wintoggle) return;
  3343. var contentHeight = g._height - g._borderY - g.dialog.buttons.outerHeight();
  3344. if (p.slide)
  3345. g.dialog.content.animate({ height: contentHeight }, p.slide);
  3346. else
  3347. g.dialog.content.height(contentHeight);
  3348. if (this.resizable) this.resizable.set({ disabled: false });
  3349. },
  3350. _updateBtnsWidth: function ()
  3351. {
  3352. var g = this;
  3353. var btnscount = $(">div", g.dialog.winbtns).length;
  3354. g.dialog.winbtns.width(22 * btnscount);
  3355. },
  3356. _setLeft: function (value)
  3357. {
  3358. if (!this.dialog) return;
  3359. if (value != null)
  3360. this.dialog.css({ left: value });
  3361. },
  3362. _setTop: function (value)
  3363. {
  3364. if (!this.dialog) return;
  3365. if (value != null)
  3366. this.dialog.css({ top: value });
  3367. },
  3368. _setWidth: function (value)
  3369. {
  3370. if (!this.dialog) return;
  3371. if (value >= this._borderX)
  3372. {
  3373. this.dialog.body.width(value - this._borderX);
  3374. }
  3375. },
  3376. _setHeight: function (value)
  3377. {
  3378. var g = this, p = this.options;
  3379. if (!this.dialog) return;
  3380. if (value >= this._borderY)
  3381. {
  3382. var height = value - this._borderY - g.dialog.buttons.outerHeight();
  3383. g.dialog.content.height(height);
  3384. }
  3385. },
  3386. _setShowMax: function (value)
  3387. {
  3388. var g = this, p = this.options;
  3389. if (value)
  3390. {
  3391. if (!g.winmax)
  3392. {
  3393. g.winmax = $('<div class="l-dialog-winbtn l-dialog-max"></div>').appendTo(g.dialog.winbtns)
  3394. .hover(function ()
  3395. {
  3396. if ($(this).hasClass("l-dialog-recover"))
  3397. $(this).addClass("l-dialog-recover-over");
  3398. else
  3399. $(this).addClass("l-dialog-max-over");
  3400. }, function ()
  3401. {
  3402. $(this).removeClass("l-dialog-max-over l-dialog-recover-over");
  3403. }).click(function ()
  3404. {
  3405. if ($(this).hasClass("l-dialog-recover"))
  3406. g.recover();
  3407. else
  3408. g.max();
  3409. });
  3410. }
  3411. }
  3412. else if (g.winmax)
  3413. {
  3414. g.winmax.remove();
  3415. g.winmax = null;
  3416. }
  3417. g._updateBtnsWidth();
  3418. },
  3419. _setShowMin: function (value)
  3420. {
  3421. var g = this, p = this.options;
  3422. if (value)
  3423. {
  3424. if (!g.winmin)
  3425. {
  3426. g.winmin = $('<div class="l-dialog-winbtn l-dialog-min"></div>').appendTo(g.dialog.winbtns)
  3427. .hover(function ()
  3428. {
  3429. $(this).addClass("l-dialog-min-over");
  3430. }, function ()
  3431. {
  3432. $(this).removeClass("l-dialog-min-over");
  3433. }).click(function ()
  3434. {
  3435. g.min();
  3436. });
  3437. l.win.addTask(g);
  3438. }
  3439. }
  3440. else if (g.winmin)
  3441. {
  3442. g.winmin.remove();
  3443. g.winmin = null;
  3444. }
  3445. g._updateBtnsWidth();
  3446. },
  3447. _setShowToggle: function (value)
  3448. {
  3449. var g = this, p = this.options;
  3450. if (value)
  3451. {
  3452. if (!g.wintoggle)
  3453. {
  3454. g.wintoggle = $('<div class="l-dialog-winbtn l-dialog-collapse"></div>').appendTo(g.dialog.winbtns)
  3455. .hover(function ()
  3456. {
  3457. if ($(this).hasClass("l-dialog-toggle-disabled")) return;
  3458. if ($(this).hasClass("l-dialog-extend"))
  3459. $(this).addClass("l-dialog-extend-over");
  3460. else
  3461. $(this).addClass("l-dialog-collapse-over");
  3462. }, function ()
  3463. {
  3464. $(this).removeClass("l-dialog-extend-over l-dialog-collapse-over");
  3465. }).click(function ()
  3466. {
  3467. if ($(this).hasClass("l-dialog-toggle-disabled")) return;
  3468. if (g.wintoggle.hasClass("l-dialog-extend"))
  3469. {
  3470. if (g.trigger('extend') == false) return;
  3471. g.wintoggle.removeClass("l-dialog-extend");
  3472. g.extend();
  3473. g.trigger('extended');
  3474. }
  3475. else
  3476. {
  3477. if (g.trigger('collapse') == false) return;
  3478. g.wintoggle.addClass("l-dialog-extend");
  3479. g.collapse();
  3480. g.trigger('collapseed')
  3481. }
  3482. });
  3483. }
  3484. }
  3485. else if (g.wintoggle)
  3486. {
  3487. g.wintoggle.remove();
  3488. g.wintoggle = null;
  3489. }
  3490. },
  3491. //按下回车
  3492. enter: function ()
  3493. {
  3494. var g = this, p = this.options;
  3495. var isClose;
  3496. if (p.closeWhenEnter != undefined)
  3497. {
  3498. isClose = p.closeWhenEnter;
  3499. }
  3500. else if (p.type == "warn" || p.type == "error" || p.type == "success" || p.type == "question")
  3501. {
  3502. isClose = true;
  3503. }
  3504. if (isClose)
  3505. {
  3506. g.close();
  3507. }
  3508. },
  3509. esc: function ()
  3510. {
  3511. },
  3512. _removeDialog: function ()
  3513. {
  3514. var g = this, p = this.options;
  3515. if (p.showType && p.fixedType)
  3516. {
  3517. g.dialog.animate({ bottom: -1 * p.height }, function ()
  3518. {
  3519. g.dialog.remove();
  3520. });
  3521. } else
  3522. {
  3523. g.dialog.remove();
  3524. }
  3525. },
  3526. close: function ()
  3527. {
  3528. var g = this, p = this.options;
  3529. l.win.removeTask(this);
  3530. g.unmask();
  3531. g._removeDialog();
  3532. $('body').unbind('keydown.dialog');
  3533. },
  3534. _getVisible: function ()
  3535. {
  3536. return this.dialog.is(":visible");
  3537. },
  3538. _setUrl: function (url)
  3539. {
  3540. var g = this, p = this.options;
  3541. p.url = url;
  3542. if (p.load)
  3543. {
  3544. g.dialog.body.html("").load(p.url, function ()
  3545. {
  3546. g.trigger('loaded');
  3547. });
  3548. }
  3549. else if (g.jiframe)
  3550. {
  3551. g.jiframe.attr("src", p.url);
  3552. }
  3553. },
  3554. _setContent: function (content)
  3555. {
  3556. this.dialog.content.html(content);
  3557. },
  3558. _setTitle: function (value)
  3559. {
  3560. var g = this; var p = this.options;
  3561. if (value)
  3562. {
  3563. $(".l-dialog-title", g.dialog).html(value);
  3564. }
  3565. },
  3566. _hideDialog: function ()
  3567. {
  3568. var g = this, p = this.options;
  3569. if (p.showType && p.fixedType)
  3570. {
  3571. g.dialog.animate({ bottom: -1 * p.height }, function ()
  3572. {
  3573. g.dialog.hide();
  3574. });
  3575. } else
  3576. {
  3577. g.dialog.hide();
  3578. }
  3579. },
  3580. hidden: function ()
  3581. {
  3582. var g = this;
  3583. l.win.removeTask(g);
  3584. g.dialog.hide();
  3585. g.unmask();
  3586. },
  3587. show: function ()
  3588. {
  3589. var g = this, p = this.options;
  3590. g.mask();
  3591. if (p.fixedType)
  3592. {
  3593. if (p.showType)
  3594. {
  3595. g.dialog.css({ bottom: -1 * p.height }).addClass("l-dialog-fixed");
  3596. g.dialog.show().animate({ bottom: 0 });
  3597. }
  3598. else
  3599. {
  3600. g.dialog.show().css({ bottom: 0 });
  3601. }
  3602. }
  3603. else
  3604. {
  3605. g.dialog.show();
  3606. }
  3607. //前端显示
  3608. $.ligerui.win.setFront.ligerDefer($.ligerui.win, 100, [g]);
  3609. },
  3610. setUrl: function (url)
  3611. {
  3612. this._setUrl(url);
  3613. },
  3614. _saveStatus: function ()
  3615. {
  3616. var g = this;
  3617. g._width = g.dialog.body.width();
  3618. g._height = g.dialog.body.height();
  3619. var top = 0;
  3620. var left = 0;
  3621. if (!isNaN(parseInt(g.dialog.css('top'))))
  3622. top = parseInt(g.dialog.css('top'));
  3623. if (!isNaN(parseInt(g.dialog.css('left'))))
  3624. left = parseInt(g.dialog.css('left'));
  3625. g._top = top;
  3626. g._left = left;
  3627. },
  3628. _applyDrag: function ()
  3629. {
  3630. var g = this, p = this.options;
  3631. if ($.fn.ligerDrag)
  3632. g.draggable = g.dialog.ligerDrag({ handler: '.l-dialog-title', animate: false,
  3633. onStartDrag: function ()
  3634. {
  3635. l.win.setFront(g);
  3636. },
  3637. onStopDrag: function ()
  3638. {
  3639. if (p.target)
  3640. {
  3641. var triggers1 = l.find($.ligerui.controls.DateEditor);
  3642. var triggers2 = l.find($.ligerui.controls.ComboBox);
  3643. //更新所有下拉选择框的位置
  3644. $($.merge(triggers1, triggers2)).each(function ()
  3645. {
  3646. if (this.updateSelectBoxPosition)
  3647. this.updateSelectBoxPosition();
  3648. });
  3649. }
  3650. g._saveStatus();
  3651. }
  3652. });
  3653. },
  3654. _onReisze: function ()
  3655. {
  3656. var g = this, p = this.options;
  3657. if (p.target)
  3658. {
  3659. var manager = $(p.target).liger();
  3660. if (!manager) manager = $(p.target).find(":first").liger();
  3661. if (!manager) return;
  3662. var contentHeight = g.dialog.content.height();
  3663. var contentWidth = g.dialog.content.width();
  3664. manager.trigger('resize', [{ width: contentWidth, height: contentHeight}]);
  3665. }
  3666. },
  3667. _applyResize: function ()
  3668. {
  3669. var g = this, p = this.options;
  3670. if ($.fn.ligerResizable)
  3671. {
  3672. g.resizable = g.dialog.ligerResizable({
  3673. onStopResize: function (current, e)
  3674. {
  3675. var top = 0;
  3676. var left = 0;
  3677. if (!isNaN(parseInt(g.dialog.css('top'))))
  3678. top = parseInt(g.dialog.css('top'));
  3679. if (!isNaN(parseInt(g.dialog.css('left'))))
  3680. left = parseInt(g.dialog.css('left'));
  3681. if (current.diffLeft)
  3682. {
  3683. g.set({ left: left + current.diffLeft });
  3684. }
  3685. if (current.diffTop)
  3686. {
  3687. g.set({ top: top + current.diffTop });
  3688. }
  3689. if (current.newWidth)
  3690. {
  3691. g.set({ width: current.newWidth });
  3692. g.dialog.body.css({ width: current.newWidth - g._borderX });
  3693. }
  3694. if (current.newHeight)
  3695. {
  3696. g.set({ height: current.newHeight });
  3697. }
  3698. g._onReisze();
  3699. g._saveStatus();
  3700. return false;
  3701. }, animate: false
  3702. });
  3703. }
  3704. },
  3705. _setImage: function ()
  3706. {
  3707. var g = this, p = this.options;
  3708. if (p.type)
  3709. {
  3710. if (p.type == 'success' || p.type == 'donne' || p.type == 'ok')
  3711. {
  3712. $(".l-dialog-image", g.dialog).addClass("l-dialog-image-donne").show();
  3713. g.dialog.content.css({ paddingLeft: 64, paddingBottom: 30 });
  3714. }
  3715. else if (p.type == 'error')
  3716. {
  3717. $(".l-dialog-image", g.dialog).addClass("l-dialog-image-error").show();
  3718. g.dialog.content.css({ paddingLeft: 64, paddingBottom: 30 });
  3719. }
  3720. else if (p.type == 'warn')
  3721. {
  3722. $(".l-dialog-image", g.dialog).addClass("l-dialog-image-warn").show();
  3723. g.dialog.content.css({ paddingLeft: 64, paddingBottom: 30 });
  3724. }
  3725. else if (p.type == 'question')
  3726. {
  3727. $(".l-dialog-image", g.dialog).addClass("l-dialog-image-question").show();
  3728. g.dialog.content.css({ paddingLeft: 64, paddingBottom: 40 });
  3729. }
  3730. }
  3731. }
  3732. });
  3733. l.controls.Dialog.prototype.hide = l.controls.Dialog.prototype.hidden;
  3734. $.ligerDialog.open = function (p)
  3735. {
  3736. return $.ligerDialog(p);
  3737. };
  3738. $.ligerDialog.close = function ()
  3739. {
  3740. var dialogs = l.find(l.controls.Dialog.prototype.__getType());
  3741. for (var i in dialogs)
  3742. {
  3743. var d = dialogs[i];
  3744. d.destroy.ligerDefer(d, 5);
  3745. }
  3746. l.win.unmask();
  3747. };
  3748. $.ligerDialog.show = function (p)
  3749. {
  3750. var dialogs = l.find(l.controls.Dialog.prototype.__getType());
  3751. if (dialogs.length)
  3752. {
  3753. for (var i in dialogs)
  3754. {
  3755. dialogs[i].show();
  3756. return;
  3757. }
  3758. }
  3759. return $.ligerDialog(p);
  3760. };
  3761. $.ligerDialog.hide = function ()
  3762. {
  3763. var dialogs = l.find(l.controls.Dialog.prototype.__getType());
  3764. for (var i in dialogs)
  3765. {
  3766. var d = dialogs[i];
  3767. d.hide();
  3768. }
  3769. };
  3770. $.ligerDialog.tip = function (options)
  3771. {
  3772. options = $.extend({
  3773. showType: 'slide',
  3774. width: 240,
  3775. modal: false,
  3776. height: 100
  3777. }, options || {});
  3778. $.extend(options, {
  3779. fixedType: 'se',
  3780. type: 'none',
  3781. isDrag: false,
  3782. isResize: false,
  3783. showMax: false,
  3784. showToggle: false,
  3785. showMin: false
  3786. });
  3787. return $.ligerDialog.open(options);
  3788. };
  3789. $.ligerDialog.alert = function (content, title, type, callback)
  3790. {
  3791. content = content || "";
  3792. if (typeof (title) == "function")
  3793. {
  3794. callback = title;
  3795. type = null;
  3796. }
  3797. else if (typeof (type) == "function")
  3798. {
  3799. callback = type;
  3800. }
  3801. var btnclick = function (item, Dialog, index)
  3802. {
  3803. Dialog.close();
  3804. if (callback)
  3805. callback(item, Dialog, index);
  3806. };
  3807. p = {
  3808. content: content,
  3809. buttons: [{ text: $.ligerDefaults.DialogString.ok, onclick: btnclick}]
  3810. };
  3811. if (typeof (title) == "string" && title != "") p.title = title;
  3812. if (typeof (type) == "string" && type != "") p.type = type;
  3813. $.extend(p, {
  3814. showMax: false,
  3815. showToggle: false,
  3816. showMin: false
  3817. });
  3818. return $.ligerDialog(p);
  3819. };
  3820. $.ligerDialog.confirm = function (content, title, callback)
  3821. {
  3822. if (typeof (title) == "function")
  3823. {
  3824. callback = title;
  3825. type = null;
  3826. }
  3827. var btnclick = function (item, Dialog)
  3828. {
  3829. Dialog.close();
  3830. if (callback)
  3831. {
  3832. callback(item.type == 'ok');
  3833. }
  3834. };
  3835. p = {
  3836. type: 'question',
  3837. content: content,
  3838. buttons: [{ text: $.ligerDefaults.DialogString.yes, onclick: btnclick, type: 'ok' }, { text: $.ligerDefaults.DialogString.no, onclick: btnclick, type: 'no'}]
  3839. };
  3840. if (typeof (title) == "string" && title != "") p.title = title;
  3841. $.extend(p, {
  3842. showMax: false,
  3843. showToggle: false,
  3844. showMin: false
  3845. });
  3846. return $.ligerDialog(p);
  3847. };
  3848. $.ligerDialog.warning = function (content, title, callback)
  3849. {
  3850. if (typeof (title) == "function")
  3851. {
  3852. callback = title;
  3853. type = null;
  3854. }
  3855. var btnclick = function (item, Dialog)
  3856. {
  3857. Dialog.close();
  3858. if (callback)
  3859. {
  3860. callback(item.type);
  3861. }
  3862. };
  3863. p = {
  3864. type: 'question',
  3865. content: content,
  3866. buttons: [{ text: $.ligerDefaults.DialogString.yes, onclick: btnclick, type: 'yes' }, { text: $.ligerDefaults.DialogString.no, onclick: btnclick, type: 'no' }, { text: $.ligerDefaults.DialogString.cancel, onclick: btnclick, type: 'cancel'}]
  3867. };
  3868. if (typeof (title) == "string" && title != "") p.title = title;
  3869. $.extend(p, {
  3870. showMax: false,
  3871. showToggle: false,
  3872. showMin: false
  3873. });
  3874. return $.ligerDialog(p);
  3875. };
  3876. $.ligerDialog.waitting = function (title)
  3877. {
  3878. title = title || $.ligerDefaults.Dialog.waittingMessage;
  3879. return $.ligerDialog.open({ cls: 'l-dialog-waittingdialog', type: 'none', content: '<div style="padding:4px">' + title + '</div>', allowClose: false });
  3880. };
  3881. $.ligerDialog.closeWaitting = function ()
  3882. {
  3883. var dialogs = l.find(l.controls.Dialog);
  3884. for (var i in dialogs)
  3885. {
  3886. var d = dialogs[i];
  3887. if (d.dialog.hasClass("l-dialog-waittingdialog"))
  3888. d.close();
  3889. }
  3890. };
  3891. $.ligerDialog.success = function (content, title, onBtnClick)
  3892. {
  3893. return $.ligerDialog.alert(content, title, 'success', onBtnClick);
  3894. };
  3895. $.ligerDialog.error = function (content, title, onBtnClick)
  3896. {
  3897. return $.ligerDialog.alert(content, title, 'error', onBtnClick);
  3898. };
  3899. $.ligerDialog.warn = function (content, title, onBtnClick)
  3900. {
  3901. return $.ligerDialog.alert(content, title, 'warn', onBtnClick);
  3902. };
  3903. $.ligerDialog.question = function (content, title)
  3904. {
  3905. return $.ligerDialog.alert(content, title, 'question');
  3906. };
  3907. $.ligerDialog.prompt = function (title, value, multi, callback)
  3908. {
  3909. var target = $('<input type="text" class="l-dialog-inputtext"/>');
  3910. if (typeof (multi) == "function")
  3911. {
  3912. callback = multi;
  3913. }
  3914. if (typeof (value) == "function")
  3915. {
  3916. callback = value;
  3917. }
  3918. else if (typeof (value) == "boolean")
  3919. {
  3920. multi = value;
  3921. }
  3922. if (typeof (multi) == "boolean" && multi)
  3923. {
  3924. target = $('<textarea class="l-dialog-textarea"></textarea>');
  3925. }
  3926. if (typeof (value) == "string" || typeof (value) == "int")
  3927. {
  3928. target.val(value);
  3929. }
  3930. var btnclick = function (item, Dialog, index)
  3931. {
  3932. Dialog.close();
  3933. if (callback)
  3934. {
  3935. callback(item.type == 'yes', target.val());
  3936. }
  3937. }
  3938. p = {
  3939. title: title,
  3940. target: target,
  3941. width: 320,
  3942. buttons: [{ text: $.ligerDefaults.DialogString.ok, onclick: btnclick, type: 'yes' }, { text: $.ligerDefaults.DialogString.cancel, onclick: btnclick, type: 'cancel'}]
  3943. };
  3944. return $.ligerDialog(p);
  3945. };
  3946. })(jQuery);/**
  3947. * jQuery ligerUI 1.1.9
  3948. *
  3949. * http://ligerui.com
  3950. *
  3951. * Author daomi 2012 [ gd_star@163.com ]
  3952. *
  3953. */
  3954. (function ($)
  3955. {
  3956. var l = $.ligerui;
  3957. $.fn.ligerDrag = function (options)
  3958. {
  3959. return l.run.call(this, "ligerDrag", arguments,
  3960. {
  3961. idAttrName: 'ligeruidragid', hasElement: false, propertyToElemnt: 'target'
  3962. }
  3963. );
  3964. };
  3965. $.fn.ligerGetDragManager = function ()
  3966. {
  3967. return l.run.call(this, "ligerGetDragManager", arguments,
  3968. {
  3969. idAttrName: 'ligeruidragid', hasElement: false, propertyToElemnt: 'target'
  3970. });
  3971. };
  3972. $.ligerDefaults.Drag = {
  3973. onStartDrag: false,
  3974. onDrag: false,
  3975. onStopDrag: false,
  3976. handler: null,
  3977. //代理 拖动时的主体,可以是'clone'或者是函数,放回jQuery 对象
  3978. proxy: true,
  3979. revert: false,
  3980. animate: true,
  3981. onRevert: null,
  3982. onEndRevert: null,
  3983. //接收区域 jQuery对象或者jQuery选择字符
  3984. receive: null,
  3985. //进入区域
  3986. onDragEnter: null,
  3987. //在区域移动
  3988. onDragOver: null,
  3989. //离开区域
  3990. onDragLeave: null,
  3991. //在区域释放
  3992. onDrop: null,
  3993. disabled: false,
  3994. proxyX: null, //代理相对鼠标指针的位置,如果不设置则对应target的left
  3995. proxyY: null
  3996. };
  3997. l.controls.Drag = function (options)
  3998. {
  3999. l.controls.Drag.base.constructor.call(this, null, options);
  4000. };
  4001. l.controls.Drag.ligerExtend(l.core.UIComponent, {
  4002. __getType: function ()
  4003. {
  4004. return 'Drag';
  4005. },
  4006. __idPrev: function ()
  4007. {
  4008. return 'Drag';
  4009. },
  4010. _render: function ()
  4011. {
  4012. var g = this, p = this.options;
  4013. this.set(p);
  4014. g.cursor = "move";
  4015. g.handler.css('cursor', g.cursor);
  4016. g.handler.bind('mousedown.drag', function (e)
  4017. {
  4018. if (p.disabled) return;
  4019. if (e.button == 2) return;
  4020. g._start.call(g, e);
  4021. }).bind('mousemove.drag', function ()
  4022. {
  4023. if (p.disabled) return;
  4024. g.handler.css('cursor', g.cursor);
  4025. });
  4026. },
  4027. _rendered: function ()
  4028. {
  4029. this.options.target.ligeruidragid = this.id;
  4030. },
  4031. _start: function (e)
  4032. {
  4033. var g = this, p = this.options;
  4034. if (g.reverting) return;
  4035. if (p.disabled) return;
  4036. g.current = {
  4037. target: g.target,
  4038. left: g.target.offset().left,
  4039. top: g.target.offset().top,
  4040. startX: e.pageX || e.screenX,
  4041. startY: e.pageY || e.clientY
  4042. };
  4043. if (g.trigger('startDrag', [g.current, e]) == false) return false;
  4044. g.cursor = "move";
  4045. g._createProxy(p.proxy, e);
  4046. //代理没有创建成功
  4047. if (p.proxy && !g.proxy) return false;
  4048. (g.proxy || g.handler).css('cursor', g.cursor);
  4049. $(document).bind("selectstart.drag", function () { return false; });
  4050. $(document).bind('mousemove.drag', function ()
  4051. {
  4052. g._drag.apply(g, arguments);
  4053. });
  4054. l.draggable.dragging = true;
  4055. $(document).bind('mouseup.drag', function ()
  4056. {
  4057. l.draggable.dragging = false;
  4058. g._stop.apply(g, arguments);
  4059. });
  4060. },
  4061. _drag: function (e)
  4062. {
  4063. var g = this, p = this.options;
  4064. if (!g.current) return;
  4065. var pageX = e.pageX || e.screenX;
  4066. var pageY = e.pageY || e.screenY;
  4067. g.current.diffX = pageX - g.current.startX;
  4068. g.current.diffY = pageY - g.current.startY;
  4069. (g.proxy || g.handler).css('cursor', g.cursor);
  4070. if (g.receive)
  4071. {
  4072. g.receive.each(function (i, obj)
  4073. {
  4074. var receive = $(obj);
  4075. var xy = receive.offset();
  4076. if (pageX > xy.left && pageX < xy.left + receive.width()
  4077. && pageY > xy.top && pageY < xy.top + receive.height())
  4078. {
  4079. if (!g.receiveEntered[i])
  4080. {
  4081. g.receiveEntered[i] = true;
  4082. g.trigger('dragEnter', [obj, g.proxy || g.target, e]);
  4083. }
  4084. else
  4085. {
  4086. g.trigger('dragOver', [obj, g.proxy || g.target, e]);
  4087. }
  4088. }
  4089. else if (g.receiveEntered[i])
  4090. {
  4091. g.receiveEntered[i] = false;
  4092. g.trigger('dragLeave', [obj, g.proxy || g.target, e]);
  4093. }
  4094. });
  4095. }
  4096. if (g.hasBind('drag'))
  4097. {
  4098. if (g.trigger('drag', [g.current, e]) != false)
  4099. {
  4100. g._applyDrag();
  4101. }
  4102. else
  4103. {
  4104. g._removeProxy();
  4105. }
  4106. }
  4107. else
  4108. {
  4109. g._applyDrag();
  4110. }
  4111. },
  4112. _stop: function (e)
  4113. {
  4114. var g = this, p = this.options;
  4115. $(document).unbind('mousemove.drag');
  4116. $(document).unbind('mouseup.drag');
  4117. $(document).unbind("selectstart.drag");
  4118. if (g.receive)
  4119. {
  4120. g.receive.each(function (i, obj)
  4121. {
  4122. if (g.receiveEntered[i])
  4123. {
  4124. g.trigger('drop', [obj, g.proxy || g.target, e]);
  4125. }
  4126. });
  4127. }
  4128. if (g.proxy)
  4129. {
  4130. if (p.revert)
  4131. {
  4132. if (g.hasBind('revert'))
  4133. {
  4134. if (g.trigger('revert', [g.current, e]) != false)
  4135. g._revert(e);
  4136. else
  4137. g._removeProxy();
  4138. }
  4139. else
  4140. {
  4141. g._revert(e);
  4142. }
  4143. }
  4144. else
  4145. {
  4146. g._applyDrag(g.target);
  4147. g._removeProxy();
  4148. }
  4149. }
  4150. g.cursor = 'move';
  4151. g.trigger('stopDrag', [g.current, e]);
  4152. g.current = null;
  4153. g.handler.css('cursor', g.cursor);
  4154. },
  4155. _revert: function (e)
  4156. {
  4157. var g = this;
  4158. g.reverting = true;
  4159. g.proxy.animate({
  4160. left: g.current.left,
  4161. top: g.current.top
  4162. }, function ()
  4163. {
  4164. g.reverting = false;
  4165. g._removeProxy();
  4166. g.trigger('endRevert', [g.current, e]);
  4167. g.current = null;
  4168. });
  4169. },
  4170. _applyDrag: function (applyResultBody)
  4171. {
  4172. var g = this, p = this.options;
  4173. applyResultBody = applyResultBody || g.proxy || g.target;
  4174. var cur = {}, changed = false;
  4175. var noproxy = applyResultBody == g.target;
  4176. if (g.current.diffX)
  4177. {
  4178. if (noproxy || p.proxyX == null)
  4179. cur.left = g.current.left + g.current.diffX;
  4180. else
  4181. cur.left = g.current.startX + p.proxyX + g.current.diffX;
  4182. changed = true;
  4183. }
  4184. if (g.current.diffY)
  4185. {
  4186. if (noproxy || p.proxyY == null)
  4187. cur.top = g.current.top + g.current.diffY;
  4188. else
  4189. cur.top = g.current.startY + p.proxyY + g.current.diffY;
  4190. changed = true;
  4191. }
  4192. if (applyResultBody == g.target && g.proxy && p.animate)
  4193. {
  4194. g.reverting = true;
  4195. applyResultBody.animate(cur, function ()
  4196. {
  4197. g.reverting = false;
  4198. });
  4199. }
  4200. else
  4201. {
  4202. applyResultBody.css(cur);
  4203. }
  4204. },
  4205. _setReceive: function (receive)
  4206. {
  4207. this.receiveEntered = {};
  4208. if (!receive) return;
  4209. if (typeof receive == 'string')
  4210. this.receive = $(receive);
  4211. else
  4212. this.receive = receive;
  4213. },
  4214. _setHandler: function (handler)
  4215. {
  4216. var g = this, p = this.options;
  4217. if (!handler)
  4218. g.handler = $(p.target);
  4219. else
  4220. g.handler = (typeof handler == 'string' ? $(handler, p.target) : handler);
  4221. },
  4222. _setTarget: function (target)
  4223. {
  4224. this.target = $(target);
  4225. },
  4226. _setCursor: function (cursor)
  4227. {
  4228. this.cursor = cursor;
  4229. (this.proxy || this.handler).css('cursor', cursor);
  4230. },
  4231. _createProxy: function (proxy, e)
  4232. {
  4233. if (!proxy) return;
  4234. var g = this, p = this.options;
  4235. if (typeof proxy == 'function')
  4236. {
  4237. g.proxy = proxy.call(this.options.target, g, e);
  4238. }
  4239. else if (proxy == 'clone')
  4240. {
  4241. g.proxy = g.target.clone().css('position', 'absolute');
  4242. g.proxy.appendTo('body');
  4243. }
  4244. else
  4245. {
  4246. g.proxy = $("<div class='l-draggable'></div>");
  4247. g.proxy.width(g.target.width()).height(g.target.height())
  4248. g.proxy.attr("dragid", g.id).appendTo('body');
  4249. }
  4250. g.proxy.css({
  4251. left: p.proxyX == null ? g.current.left : g.current.startX + p.proxyX,
  4252. top: p.proxyY == null ? g.current.top : g.current.startY + p.proxyY
  4253. }).show();
  4254. },
  4255. _removeProxy: function ()
  4256. {
  4257. var g = this;
  4258. if (g.proxy)
  4259. {
  4260. g.proxy.remove();
  4261. g.proxy = null;
  4262. }
  4263. }
  4264. });
  4265. })(jQuery);/**
  4266. * jQuery ligerUI 1.1.9
  4267. *
  4268. * http://ligerui.com
  4269. *
  4270. * Author daomi 2012 [ gd_star@163.com ]
  4271. *
  4272. */
  4273. (function ($)
  4274. {
  4275. $.fn.ligerEasyTab = function ()
  4276. {
  4277. return $.ligerui.run.call(this, "ligerEasyTab", arguments);
  4278. };
  4279. $.fn.ligerGetEasyTabManager = function ()
  4280. {
  4281. return $.ligerui.run.call(this, "ligerGetEasyTabManager", arguments);
  4282. };
  4283. $.ligerDefaults.EasyTab = {};
  4284. $.ligerMethos.EasyTab = {};
  4285. $.ligerui.controls.EasyTab = function (element, options)
  4286. {
  4287. $.ligerui.controls.EasyTab.base.constructor.call(this, element, options);
  4288. };
  4289. $.ligerui.controls.EasyTab.ligerExtend($.ligerui.core.UIComponent, {
  4290. __getType: function ()
  4291. {
  4292. return 'EasyTab';
  4293. },
  4294. __idPrev: function ()
  4295. {
  4296. return 'EasyTab';
  4297. },
  4298. _extendMethods: function ()
  4299. {
  4300. return $.ligerMethos.EasyTab;
  4301. },
  4302. _render: function ()
  4303. {
  4304. var g = this, p = this.options;
  4305. g.tabs = $(this.element);
  4306. g.tabs.addClass("l-easytab");
  4307. var selectedIndex = 0;
  4308. if ($("> div[lselected=true]", g.tabs).length > 0)
  4309. selectedIndex = $("> div", g.tabs).index($("> div[lselected=true]", g.tabs));
  4310. g.tabs.ul = $('<ul class="l-easytab-header"></ul>');
  4311. $("> div", g.tabs).each(function (i, box)
  4312. {
  4313. var li = $('<li><span></span></li>');
  4314. if (i == selectedIndex)
  4315. $("span", li).addClass("l-selected");
  4316. if ($(box).attr("title"))
  4317. $("span", li).html($(box).attr("title"));
  4318. g.tabs.ul.append(li);
  4319. if (!$(box).hasClass("l-easytab-panelbox")) $(box).addClass("l-easytab-panelbox");
  4320. });
  4321. g.tabs.ul.prependTo(g.tabs);
  4322. //init
  4323. $(".l-easytab-panelbox:eq(" + selectedIndex + ")", g.tabs).show().siblings(".l-easytab-panelbox").hide();
  4324. //add even
  4325. $("> ul:first span", g.tabs).click(function ()
  4326. {
  4327. if ($(this).hasClass("l-selected")) return;
  4328. var i = $("> ul:first span", g.tabs).index(this);
  4329. $(this).addClass("l-selected").parent().siblings().find("span.l-selected").removeClass("l-selected");
  4330. $(".l-easytab-panelbox:eq(" + i + ")", g.tabs).show().siblings(".l-easytab-panelbox").hide();
  4331. }).not("l-selected").hover(function ()
  4332. {
  4333. $(this).addClass("l-over");
  4334. }, function ()
  4335. {
  4336. $(this).removeClass("l-over");
  4337. });
  4338. g.set(p);
  4339. }
  4340. });
  4341. })(jQuery);/**
  4342. * jQuery ligerUI 1.1.9
  4343. *
  4344. * http://ligerui.com
  4345. *
  4346. * Author daomi 2012 [ gd_star@163.com ]
  4347. *
  4348. */
  4349. (function ($)
  4350. {
  4351. $.fn.ligerFilter = function ()
  4352. {
  4353. return $.ligerui.run.call(this, "ligerFilter", arguments);
  4354. };
  4355. $.fn.ligerGetFilterManager = function ()
  4356. {
  4357. return $.ligerui.run.call(this, "ligerGetFilterManager", arguments);
  4358. };
  4359. $.ligerDefaults.Filter = {
  4360. //字段列表
  4361. fields: [],
  4362. //字段类型 - 运算符 的对应关系
  4363. operators: {},
  4364. //自定义输入框(如下拉框、日期)
  4365. editors: {}
  4366. };
  4367. $.ligerDefaults.FilterString = {
  4368. strings: {
  4369. "and": "并且",
  4370. "or": "或者",
  4371. "equal": "相等",
  4372. "notequal": "不相等",
  4373. "startwith": "以..开始",
  4374. "endwith": "以..结束",
  4375. "like": "相似",
  4376. "greater": "大于",
  4377. "greaterorequal": "大于或等于",
  4378. "less": "小于",
  4379. "lessorequal": "小于或等于",
  4380. "in": "包括在...",
  4381. "notin": "不包括...",
  4382. "addgroup": "增加分组",
  4383. "addrule": "增加条件",
  4384. "deletegroup": "删除分组"
  4385. }
  4386. };
  4387. $.ligerDefaults.Filter.operators['string'] =
  4388. $.ligerDefaults.Filter.operators['text'] =
  4389. ["equal", "notequal", "startwith", "endwith", "like", "greater", "greaterorequal", "less", "lessorequal", "in", "notin"];
  4390. $.ligerDefaults.Filter.operators['number'] =
  4391. $.ligerDefaults.Filter.operators['int'] =
  4392. $.ligerDefaults.Filter.operators['float'] =
  4393. $.ligerDefaults.Filter.operators['date'] =
  4394. ["equal", "notequal", "greater", "greaterorequal", "less", "lessorequal", "in", "notin"];
  4395. $.ligerDefaults.Filter.editors['string'] =
  4396. {
  4397. create: function (container, field)
  4398. {
  4399. var input = $("<input type='text'/>");
  4400. container.append(input);
  4401. input.ligerTextBox(field.editor.options || {});
  4402. return input;
  4403. },
  4404. setValue: function (input, value)
  4405. {
  4406. input.val(value);
  4407. },
  4408. getValue: function (input)
  4409. {
  4410. return input.liger('option', 'value');
  4411. },
  4412. destroy: function (input)
  4413. {
  4414. input.liger('destroy');
  4415. }
  4416. };
  4417. $.ligerDefaults.Filter.editors['date'] =
  4418. {
  4419. create: function (container, field)
  4420. {
  4421. var input = $("<input type='text'/>");
  4422. container.append(input);
  4423. input.ligerDateEditor(field.editor.options || {});
  4424. return input;
  4425. },
  4426. setValue: function (input, value)
  4427. {
  4428. input.liger('option', 'value', value);
  4429. },
  4430. getValue: function (input, field)
  4431. {
  4432. return input.liger('option', 'value');
  4433. },
  4434. destroy: function (input)
  4435. {
  4436. input.liger('destroy');
  4437. }
  4438. };
  4439. $.ligerDefaults.Filter.editors['number'] =
  4440. {
  4441. create: function (container, field)
  4442. {
  4443. var input = $("<input type='text'/>");
  4444. container.append(input);
  4445. var options = {
  4446. minValue: field.editor.minValue,
  4447. maxValue: field.editor.maxValue
  4448. };
  4449. input.ligerSpinner($.extend(options, field.editor.options || {}));
  4450. return input;
  4451. },
  4452. setValue: function (input, value)
  4453. {
  4454. input.val(value);
  4455. },
  4456. getValue: function (input, field)
  4457. {
  4458. var isInt = field.editor.type == "int";
  4459. if (isInt)
  4460. return parseInt(input.val(), 10);
  4461. else
  4462. return parseFloat(input.val());
  4463. },
  4464. destroy: function (input)
  4465. {
  4466. input.liger('destroy');
  4467. }
  4468. };
  4469. $.ligerDefaults.Filter.editors['combobox'] =
  4470. {
  4471. create: function (container, field)
  4472. {
  4473. var input = $("<input type='text'/>");
  4474. container.append(input);
  4475. var options = {
  4476. data: field.data,
  4477. slide: false,
  4478. valueField: field.editor.valueField || field.editor.valueColumnName,
  4479. textField: field.editor.textField || field.editor.displayColumnName
  4480. };
  4481. $.extend(options, field.editor.options || {});
  4482. input.ligerComboBox(options);
  4483. return input;
  4484. },
  4485. setValue: function (input, value)
  4486. {
  4487. input.liger('option', 'value', value);
  4488. },
  4489. getValue: function (input)
  4490. {
  4491. return input.liger('option', 'value');
  4492. },
  4493. destroy: function (input)
  4494. {
  4495. input.liger('destroy');
  4496. }
  4497. };
  4498. //过滤器组件
  4499. $.ligerui.controls.Filter = function (element, options)
  4500. {
  4501. $.ligerui.controls.Filter.base.constructor.call(this, element, options);
  4502. };
  4503. $.ligerui.controls.Filter.ligerExtend($.ligerui.core.UIComponent, {
  4504. __getType: function ()
  4505. {
  4506. return 'Filter'
  4507. },
  4508. __idPrev: function ()
  4509. {
  4510. return 'Filter';
  4511. },
  4512. _init: function ()
  4513. {
  4514. $.ligerui.controls.Filter.base._init.call(this);
  4515. },
  4516. _render: function ()
  4517. {
  4518. var g = this, p = this.options;
  4519. g.set(p);
  4520. //事件:增加分组
  4521. $("#" + g.id + " .addgroup").live('click', function ()
  4522. {
  4523. var jtable = $(this).parent().parent().parent().parent();
  4524. g.addGroup(jtable);
  4525. });
  4526. //事件:删除分组
  4527. $("#" + g.id + " .deletegroup").live('click', function ()
  4528. {
  4529. var jtable = $(this).parent().parent().parent().parent();
  4530. g.deleteGroup(jtable);
  4531. });
  4532. //事件:增加条件
  4533. $("#" + g.id + " .addrule").live('click', function ()
  4534. {
  4535. var jtable = $(this).parent().parent().parent().parent();
  4536. g.addRule(jtable);
  4537. });
  4538. //事件:删除条件
  4539. $("#" + g.id + " .deleterole").live('click', function ()
  4540. {
  4541. var rulerow = $(this).parent().parent();
  4542. g.deleteRule(rulerow);
  4543. });
  4544. },
  4545. //设置字段列表
  4546. _setFields: function (fields)
  4547. {
  4548. var g = this, p = this.options;
  4549. if (g.group) g.group.remove();
  4550. g.group = $(g._bulidGroupTableHtml()).appendTo(g.element);
  4551. },
  4552. //输入框列表
  4553. editors: {},
  4554. //输入框计算器
  4555. editorCounter: 0,
  4556. //增加分组
  4557. //@parm [jgroup] jQuery对象(主分组的table dom元素)
  4558. addGroup: function (jgroup)
  4559. {
  4560. var g = this, p = this.options;
  4561. jgroup = $(jgroup || g.group);
  4562. var lastrow = $(">tbody:first > tr:last", jgroup);
  4563. var groupHtmlArr = [];
  4564. groupHtmlArr.push('<tr class="l-filter-rowgroup"><td class="l-filter-cellgroup" colSpan="4">');
  4565. var altering = !jgroup.hasClass("l-filter-group-alt");
  4566. groupHtmlArr.push(g._bulidGroupTableHtml(altering, true));
  4567. groupHtmlArr.push('</td></tr>');
  4568. var row = $(groupHtmlArr.join(''));
  4569. lastrow.before(row);
  4570. return row.find("table:first");
  4571. },
  4572. //删除分组
  4573. deleteGroup: function (group)
  4574. {
  4575. var g = this, p = this.options;
  4576. $("td.l-filter-value", group).each(function ()
  4577. {
  4578. var rulerow = $(this).parent();
  4579. $("select.fieldsel", rulerow).unbind();
  4580. g.removeEditor(rulerow);
  4581. });
  4582. $(group).parent().parent().remove();
  4583. },
  4584. //删除编辑器
  4585. removeEditor: function (rulerow)
  4586. {
  4587. var g = this, p = this.options;
  4588. var type = $(rulerow).attr("editortype");
  4589. var id = $(rulerow).attr("editorid");
  4590. var editor = g.editors[id];
  4591. if (editor) p.editors[type].destroy(editor);
  4592. $("td.l-filter-value:first", rulerow).html("");
  4593. },
  4594. //设置规则
  4595. //@parm [group] 分组数据
  4596. //@parm [jgruop] 分组table dom jQuery对象
  4597. setData: function (group, jgroup)
  4598. {
  4599. var g = this, p = this.options;
  4600. jgroup = jgroup || g.group;
  4601. var lastrow = $(">tbody:first > tr:last", jgroup);
  4602. jgroup.find(">tbody:first > tr").not(lastrow).remove();
  4603. $("select:first", lastrow).val(group.op);
  4604. if (group.rules)
  4605. {
  4606. $(group.rules).each(function ()
  4607. {
  4608. var rulerow = g.addRule(jgroup);
  4609. rulerow.attr("fieldtype", this.type || "string");
  4610. $("select.opsel", rulerow).val(this.op);
  4611. $("select.fieldsel", rulerow).val(this.field).trigger('change');
  4612. var editorid = rulerow.attr("editorid");
  4613. if (editorid && g.editors[editorid])
  4614. {
  4615. var field = g.getField(this.field);
  4616. p.editors[field.editor.type].setValue(g.editors[editorid], this.value, field);
  4617. }
  4618. else
  4619. {
  4620. $(":text", rulerow).val(this.value);
  4621. }
  4622. });
  4623. }
  4624. if (group.groups)
  4625. {
  4626. $(group.groups).each(function ()
  4627. {
  4628. var subjgroup = g.addGroup(jgroup);
  4629. g.setData(this, subjgroup);
  4630. });
  4631. }
  4632. },
  4633. //增加一个条件
  4634. //@parm [jgroup] 分组的jQuery对象
  4635. addRule: function (jgroup)
  4636. {
  4637. var g = this, p = this.options;
  4638. jgroup = jgroup || g.group;
  4639. var lastrow = $(">tbody:first > tr:last", jgroup);
  4640. var rulerow = $(g._bulidRuleRowHtml());
  4641. lastrow.before(rulerow);
  4642. if (p.fields.length)
  4643. {
  4644. //如果第一个字段启用了自定义输入框
  4645. g.appendEditor(rulerow, p.fields[0]);
  4646. }
  4647. //事件:字段列表改变时
  4648. $("select.fieldsel", rulerow).bind('change', function ()
  4649. {
  4650. var jopsel = $(this).parent().next().find("select:first");
  4651. var fieldName = $(this).val();
  4652. var field = g.getField(fieldName);
  4653. //字段类型处理
  4654. var fieldType = field.type || "string";
  4655. var oldFieldtype = rulerow.attr("fieldtype");
  4656. if (fieldType != oldFieldtype)
  4657. {
  4658. jopsel.html(g._bulidOpSelectOptionsHtml(fieldType));
  4659. rulerow.attr("fieldtype", fieldType);
  4660. }
  4661. //当前的编辑器
  4662. var editorType = null;
  4663. //上一次的编辑器
  4664. var oldEditorType = rulerow.attr("editortype");
  4665. if (g.enabledEditor(field)) editorType = field.editor.type;
  4666. if (oldEditorType)
  4667. {
  4668. //如果存在旧的输入框
  4669. g.removeEditor(rulerow);
  4670. }
  4671. if (editorType)
  4672. {
  4673. //如果当前选择的字段定义了输入框
  4674. g.appendEditor(rulerow, field);
  4675. } else
  4676. {
  4677. rulerow.removeAttr("editortype").removeAttr("editorid");
  4678. $("td.l-filter-value:first", rulerow).html('<input type="text" class="valtxt" />');
  4679. }
  4680. });
  4681. return rulerow;
  4682. },
  4683. //删除一个条件
  4684. deleteRule: function (rulerow)
  4685. {
  4686. $("select.fieldsel", rulerow).unbind();
  4687. this.removeEditor(rulerow);
  4688. $(rulerow).remove();
  4689. },
  4690. //附加一个输入框
  4691. appendEditor: function (rulerow, field)
  4692. {
  4693. var g = this, p = this.options;
  4694. if (g.enabledEditor(field))
  4695. {
  4696. var cell = $("td.l-filter-value:first", rulerow).html("");
  4697. var editor = p.editors[field.editor.type];
  4698. g.editors[++g.editorCounter] = editor.create(cell, field);
  4699. rulerow.attr("editortype", field.editor.type).attr("editorid", g.editorCounter);
  4700. }
  4701. },
  4702. //获取分组数据
  4703. getData: function (group)
  4704. {
  4705. var g = this, p = this.options;
  4706. group = group || g.group;
  4707. var groupData = {};
  4708. $("> tbody > tr", group).each(function (i, row)
  4709. {
  4710. var rowlast = $(row).hasClass("l-filter-rowlast");
  4711. var rowgroup = $(row).hasClass("l-filter-rowgroup");
  4712. if (rowgroup)
  4713. {
  4714. var groupTable = $("> td:first > table:first", row);
  4715. if (groupTable.length)
  4716. {
  4717. if (!groupData.groups) groupData.groups = [];
  4718. groupData.groups.push(g.getData(groupTable));
  4719. }
  4720. }
  4721. else if (rowlast)
  4722. {
  4723. groupData.op = $(".groupopsel:first", row).val();
  4724. }
  4725. else
  4726. {
  4727. var fieldName = $("select.fieldsel:first", row).val();
  4728. var field = g.getField(fieldName);
  4729. var op = $(".opsel:first", row).val();
  4730. var value = g._getRuleValue(row, field);
  4731. var type = $(row).attr("fieldtype") || "string";
  4732. if (!groupData.rules) groupData.rules = [];
  4733. groupData.rules.push({
  4734. field: fieldName, op: op, value: value, type: type
  4735. });
  4736. }
  4737. });
  4738. return groupData;
  4739. },
  4740. _getRuleValue: function (rulerow, field)
  4741. {
  4742. var g = this, p = this.options;
  4743. var editorid = $(rulerow).attr("editorid");
  4744. var editortype = $(rulerow).attr("editortype");
  4745. var editor = g.editors[editorid];
  4746. if (editor)
  4747. return p.editors[editortype].getValue(editor, field);
  4748. return $(".valtxt:first", rulerow).val();
  4749. },
  4750. //判断某字段是否启用自定义的输入框
  4751. enabledEditor: function (field)
  4752. {
  4753. var g = this, p = this.options;
  4754. if (!field.editor || !field.editor.type) return false;
  4755. return (field.editor.type in p.editors);
  4756. },
  4757. //根据fieldName 获取 字段
  4758. getField: function (fieldname)
  4759. {
  4760. var g = this, p = this.options;
  4761. for (var i = 0, l = p.fields.length; i < l; i++)
  4762. {
  4763. var field = p.fields[i];
  4764. if (field.name == fieldname) return field;
  4765. }
  4766. return null;
  4767. },
  4768. //获取一个分组的html
  4769. _bulidGroupTableHtml: function (altering, allowDelete)
  4770. {
  4771. var g = this, p = this.options;
  4772. var tableHtmlArr = [];
  4773. tableHtmlArr.push('<table cellpadding="0" cellspacing="0" border="0" class="l-filter-group');
  4774. if (altering)
  4775. tableHtmlArr.push(' l-filter-group-alt');
  4776. tableHtmlArr.push('"><tbody>');
  4777. tableHtmlArr.push('<tr class="l-filter-rowlast"><td class="l-filter-rowlastcell" align="right" colSpan="4">');
  4778. //and or
  4779. tableHtmlArr.push('<select class="groupopsel">');
  4780. tableHtmlArr.push('<option value="and">' + p.strings['and'] + '</option>');
  4781. tableHtmlArr.push('<option value="or">' + p.strings['or'] + '</option>');
  4782. tableHtmlArr.push('</select>');
  4783. //add group
  4784. tableHtmlArr.push('<input type="button" value="' + p.strings['addgroup'] + '" class="addgroup">');
  4785. //add rule
  4786. tableHtmlArr.push('<input type="button" value="' + p.strings['addrule'] + '" class="addrule">');
  4787. if (allowDelete)
  4788. tableHtmlArr.push('<input type="button" value="' + p.strings['deletegroup'] + '" class="deletegroup">');
  4789. tableHtmlArr.push('</td></tr>');
  4790. tableHtmlArr.push('</tbody></table>');
  4791. return tableHtmlArr.join('');
  4792. },
  4793. //获取字段值规则的html
  4794. _bulidRuleRowHtml: function (fields)
  4795. {
  4796. var g = this, p = this.options;
  4797. fields = fields || p.fields;
  4798. var rowHtmlArr = [];
  4799. var fieldType = fields[0].type || "string";
  4800. rowHtmlArr.push('<tr fieldtype="' + fieldType + '"><td class="l-filter-column">');
  4801. rowHtmlArr.push('<select class="fieldsel">');
  4802. for (var i = 0, l = fields.length; i < l; i++)
  4803. {
  4804. var field = fields[i];
  4805. rowHtmlArr.push('<option value="' + field.name + '"');
  4806. if (i == 0) rowHtmlArr.push(" selected ");
  4807. rowHtmlArr.push('>');
  4808. rowHtmlArr.push(field.display);
  4809. rowHtmlArr.push('</option>');
  4810. }
  4811. rowHtmlArr.push("</select>");
  4812. rowHtmlArr.push('</td>');
  4813. rowHtmlArr.push('<td class="l-filter-op">');
  4814. rowHtmlArr.push('<select class="opsel">');
  4815. rowHtmlArr.push(g._bulidOpSelectOptionsHtml(fieldType));
  4816. rowHtmlArr.push('</select>');
  4817. rowHtmlArr.push('</td>');
  4818. rowHtmlArr.push('<td class="l-filter-value">');
  4819. rowHtmlArr.push('<input type="text" class="valtxt" />');
  4820. rowHtmlArr.push('</td>');
  4821. rowHtmlArr.push('<td>');
  4822. rowHtmlArr.push('<div class="l-icon-cross deleterole"></div>');
  4823. rowHtmlArr.push('</td>');
  4824. rowHtmlArr.push('</tr>');
  4825. return rowHtmlArr.join('');
  4826. },
  4827. //获取一个运算符选择框的html
  4828. _bulidOpSelectOptionsHtml: function (fieldType)
  4829. {
  4830. var g = this, p = this.options;
  4831. var ops = p.operators[fieldType];
  4832. var opHtmlArr = [];
  4833. for (var i = 0, l = ops.length; i < l; i++)
  4834. {
  4835. var op = ops[i];
  4836. opHtmlArr[opHtmlArr.length] = '<option value="' + op + '">';
  4837. opHtmlArr[opHtmlArr.length] = p.strings[op];
  4838. opHtmlArr[opHtmlArr.length] = '</option>';
  4839. }
  4840. return opHtmlArr.join('');
  4841. }
  4842. });
  4843. })(jQuery);/**
  4844. * jQuery ligerUI 1.1.9
  4845. *
  4846. * http://ligerui.com
  4847. *
  4848. * Author daomi 2012 [ gd_star@163.com ]
  4849. *
  4850. */
  4851. (function ($)
  4852. {
  4853. $.fn.ligerForm = function ()
  4854. {
  4855. return $.ligerui.run.call(this, "ligerForm", arguments);
  4856. };
  4857. $.ligerDefaults = $.ligerDefaults || {};
  4858. $.ligerDefaults.Form = {
  4859. //控件宽度
  4860. inputWidth: 180,
  4861. //标签宽度
  4862. labelWidth: 90,
  4863. //间隔宽度
  4864. space: 40,
  4865. rightToken: ':',
  4866. //标签对齐方式
  4867. labelAlign: 'left',
  4868. //控件对齐方式
  4869. align: 'left',
  4870. //字段
  4871. fields: [],
  4872. //创建的表单元素是否附加ID
  4873. appendID: true,
  4874. //生成表单元素ID的前缀
  4875. prefixID: "",
  4876. //json解析函数
  4877. toJSON: $.ligerui.toJSON
  4878. };
  4879. //@description 默认表单编辑器构造器扩展(如果创建的表单效果不满意 建议重载)
  4880. //@param {jinput} 表单元素jQuery对象 比如input、select、textarea
  4881. $.ligerDefaults.Form.editorBulider = function (jinput)
  4882. {
  4883. //这里this就是form的ligerui对象
  4884. var g = this, p = this.options;
  4885. var inputOptions = {};
  4886. if (p.inputWidth) inputOptions.width = p.inputWidth;
  4887. if (jinput.is("select"))
  4888. {
  4889. jinput.ligerComboBox(inputOptions);
  4890. }
  4891. else if (jinput.is(":text") || jinput.is(":password"))
  4892. {
  4893. var ltype = jinput.attr("ltype");
  4894. switch (ltype)
  4895. {
  4896. case "select":
  4897. case "combobox":
  4898. jinput.ligerComboBox(inputOptions);
  4899. break;
  4900. case "spinner":
  4901. jinput.ligerSpinner(inputOptions);
  4902. break;
  4903. case "date":
  4904. jinput.ligerDateEditor(inputOptions);
  4905. break;
  4906. case "float":
  4907. case "number":
  4908. inputOptions.number = true;
  4909. jinput.ligerTextBox(inputOptions);
  4910. break;
  4911. case "int":
  4912. case "digits":
  4913. inputOptions.digits = true;
  4914. default:
  4915. jinput.ligerTextBox(inputOptions);
  4916. break;
  4917. }
  4918. }
  4919. else if (jinput.is(":radio"))
  4920. {
  4921. jinput.ligerRadio(inputOptions);
  4922. }
  4923. else if (jinput.is(":checkbox"))
  4924. {
  4925. jinput.ligerCheckBox(inputOptions);
  4926. }
  4927. else if (jinput.is("textarea"))
  4928. {
  4929. jinput.addClass("l-textarea");
  4930. }
  4931. }
  4932. //表单组件
  4933. $.ligerui.controls.Form = function (element, options)
  4934. {
  4935. $.ligerui.controls.Form.base.constructor.call(this, element, options);
  4936. };
  4937. $.ligerui.controls.Form.ligerExtend($.ligerui.core.UIComponent, {
  4938. __getType: function ()
  4939. {
  4940. return 'Form'
  4941. },
  4942. __idPrev: function ()
  4943. {
  4944. return 'Form';
  4945. },
  4946. _init: function ()
  4947. {
  4948. $.ligerui.controls.Form.base._init.call(this);
  4949. },
  4950. _render: function ()
  4951. {
  4952. var g = this, p = this.options;
  4953. var jform = $(this.element);
  4954. //自动创建表单
  4955. if (p.fields && p.fields.length)
  4956. {
  4957. if (!jform.hasClass("l-form"))
  4958. jform.addClass("l-form");
  4959. var out = [];
  4960. var appendULStartTag = false;
  4961. $(p.fields).each(function (index, field)
  4962. {
  4963. var name = field.name || field.id;
  4964. if (!name) return;
  4965. if (field.type == "hidden")
  4966. {
  4967. out.push('<input type="hidden" id="' + name + '" name="' + name + '" />');
  4968. return;
  4969. }
  4970. var newLine = field.renderToNewLine || field.newline;
  4971. if (newLine == null) newLine = true;
  4972. if (field.merge) newLine = false;
  4973. if (field.group) newLine = true;
  4974. if (newLine)
  4975. {
  4976. if (appendULStartTag)
  4977. {
  4978. out.push('</ul>');
  4979. appendULStartTag = false;
  4980. }
  4981. if (field.group)
  4982. {
  4983. out.push('<div class="l-group');
  4984. if (field.groupicon)
  4985. out.push(' l-group-hasicon');
  4986. out.push('">');
  4987. if (field.groupicon)
  4988. out.push('<img src="' + field.groupicon + '" />');
  4989. out.push('<span>' + field.group + '</span></div>');
  4990. }
  4991. out.push('<ul>');
  4992. appendULStartTag = true;
  4993. }
  4994. //append label
  4995. out.push(g._buliderLabelContainer(field));
  4996. //append input
  4997. out.push(g._buliderControlContainer(field));
  4998. //append space
  4999. out.push(g._buliderSpaceContainer(field));
  5000. });
  5001. if (appendULStartTag)
  5002. {
  5003. out.push('</ul>');
  5004. appendULStartTag = false;
  5005. }
  5006. jform.append(out.join(''));
  5007. }
  5008. //生成ligerui表单样式
  5009. $("input,select,textarea", jform).each(function ()
  5010. {
  5011. p.editorBulider.call(g, $(this));
  5012. });
  5013. },
  5014. //标签部分
  5015. _buliderLabelContainer: function (field)
  5016. {
  5017. var g = this, p = this.options;
  5018. var label = field.label || field.display;
  5019. var labelWidth = field.labelWidth || field.labelwidth || p.labelWidth;
  5020. var labelAlign = field.labelAlign || p.labelAlign;
  5021. if (label) label += p.rightToken;
  5022. var out = [];
  5023. out.push('<li style="');
  5024. if (labelWidth)
  5025. {
  5026. out.push('width:' + labelWidth + 'px;');
  5027. }
  5028. if (labelAlign)
  5029. {
  5030. out.push('text-align:' + labelAlign + ';');
  5031. }
  5032. out.push('">');
  5033. if (label)
  5034. {
  5035. out.push(label);
  5036. }
  5037. out.push('</li>');
  5038. return out.join('');
  5039. },
  5040. //控件部分
  5041. _buliderControlContainer: function (field)
  5042. {
  5043. var g = this, p = this.options;
  5044. var width = field.width || p.inputWidth;
  5045. var align = field.align || field.textAlign || field.textalign || p.align;
  5046. var out = [];
  5047. out.push('<li style="');
  5048. if (width)
  5049. {
  5050. out.push('width:' + width + 'px;');
  5051. }
  5052. if (align)
  5053. {
  5054. out.push('text-align:' + align + ';');
  5055. }
  5056. out.push('">');
  5057. out.push(g._buliderControl(field));
  5058. out.push('</li>');
  5059. return out.join('');
  5060. },
  5061. //间隔部分
  5062. _buliderSpaceContainer: function (field)
  5063. {
  5064. var g = this, p = this.options;
  5065. var spaceWidth = field.space || field.spaceWidth || p.space;
  5066. var out = [];
  5067. out.push('<li style="');
  5068. if (spaceWidth)
  5069. {
  5070. out.push('width:' + spaceWidth + 'px;');
  5071. }
  5072. out.push('">');
  5073. out.push('</li>');
  5074. return out.join('');
  5075. },
  5076. _buliderControl: function (field)
  5077. {
  5078. var g = this, p = this.options;
  5079. var width = field.width || p.inputWidth;
  5080. var name = field.name || field.id;
  5081. var out = [];
  5082. if (field.comboboxName && field.type == "select")
  5083. {
  5084. out.push('<input type="hidden" id="' + p.prefixID + name + '" name="' + name + '" />');
  5085. }
  5086. if (field.textarea || field.type == "textarea")
  5087. {
  5088. out.push('<textarea ');
  5089. }
  5090. else if (field.type == "checkbox")
  5091. {
  5092. out.push('<input type="checkbox" ');
  5093. }
  5094. else if (field.type == "radio")
  5095. {
  5096. out.push('<input type="radio" ');
  5097. }
  5098. else if (field.type == "password")
  5099. {
  5100. out.push('<input type="password" ');
  5101. }
  5102. else
  5103. {
  5104. out.push('<input type="text" ');
  5105. }
  5106. if (field.cssClass)
  5107. {
  5108. out.push('class="' + field.cssClass + '" ');
  5109. }
  5110. if (field.type)
  5111. {
  5112. out.push('ltype="' + field.type + '" ');
  5113. }
  5114. if (field.attr)
  5115. {
  5116. for (var attrp in field.attr)
  5117. {
  5118. out.push(attrp + '="' + field.attr[attrp] + '" ');
  5119. }
  5120. }
  5121. if (field.comboboxName && field.type == "select")
  5122. {
  5123. out.push('name="' + field.comboboxName + '"');
  5124. if (p.appendID)
  5125. {
  5126. out.push(' id="' + p.prefixID + field.comboboxName + '" ');
  5127. }
  5128. }
  5129. else
  5130. {
  5131. out.push('name="' + name + '"');
  5132. if (p.appendID)
  5133. {
  5134. out.push(' id="' + name + '" ');
  5135. }
  5136. }
  5137. //参数
  5138. var fieldOptions = $.extend({
  5139. width: width - 2
  5140. }, field.options || {});
  5141. out.push(" ligerui='" + p.toJSON(fieldOptions) + "' ");
  5142. //验证参数
  5143. if (field.validate)
  5144. {
  5145. out.push(" validate='" + p.toJSON(field.validate) + "' ");
  5146. }
  5147. out.push(' />');
  5148. return out.join('');
  5149. }
  5150. });
  5151. })(jQuery);/**
  5152. * jQuery ligerUI 1.1.9
  5153. *
  5154. * http://ligerui.com
  5155. *
  5156. * Author daomi 2012 [ gd_star@163.com ]
  5157. *
  5158. */
  5159. (function ($)
  5160. {
  5161. var l = $.ligerui;
  5162. $.fn.ligerGrid = function (options)
  5163. {
  5164. return $.ligerui.run.call(this, "ligerGrid", arguments);
  5165. };
  5166. $.fn.ligerGetGridManager = function ()
  5167. {
  5168. return $.ligerui.run.call(this, "ligerGetGridManager", arguments);
  5169. };
  5170. $.ligerDefaults.Grid = {
  5171. title: null,
  5172. width: 'auto', //宽度值
  5173. height: 'auto', //宽度值
  5174. columnWidth: null, //默认列宽度
  5175. resizable: true, //table是否可伸缩
  5176. url: false, //ajax url
  5177. usePager: true, //是否分页
  5178. page: 1, //默认当前页
  5179. pageSize: 10, //每页默认的结果数
  5180. pageSizeOptions: [10, 20, 30, 40, 50], //可选择设定的每页结果数
  5181. parms: [], //提交到服务器的参数
  5182. columns: [], //数据源
  5183. minColToggle: 1, //最小显示的列
  5184. dataType: 'server', //数据源:本地(local)或(server),本地是将读取p.data。不需要配置,取决于设置了data或是url
  5185. dataAction: 'server', //提交数据的方式:本地(local)或(server),选择本地方式时将在客服端分页、排序。
  5186. showTableToggleBtn: false, //是否显示'显示隐藏Grid'按钮
  5187. switchPageSizeApplyComboBox: false, //切换每页记录数是否应用ligerComboBox
  5188. allowAdjustColWidth: true, //是否允许调整列宽
  5189. checkbox: false, //是否显示复选框
  5190. allowHideColumn: true, //是否显示'切换列层'按钮
  5191. enabledEdit: false, //是否允许编辑
  5192. isScroll: true, //是否滚动
  5193. onDragCol: null, //拖动列事件
  5194. onToggleCol: null, //切换列事件
  5195. onChangeSort: null, //改变排序事件
  5196. onSuccess: null, //成功获取服务器数据的事件
  5197. onDblClickRow: null, //双击行事件
  5198. onSelectRow: null, //选择行事件
  5199. onUnSelectRow: null, //取消选择行事件
  5200. onBeforeCheckRow: null, //选择前事件,可以通过return false阻止操作(复选框)
  5201. onCheckRow: null, //选择事件(复选框)
  5202. onBeforeCheckAllRow: null, //选择前事件,可以通过return false阻止操作(复选框 全选/全不选)
  5203. onCheckAllRow: null, //选择事件(复选框 全选/全不选)
  5204. onBeforeShowData: null, //显示数据前事件,可以通过reutrn false阻止操作
  5205. onAfterShowData: null, //显示完数据事件
  5206. onError: null, //错误事件
  5207. onSubmit: null, //提交前事件
  5208. dateFormat: 'yyyy-MM-dd', //默认时间显示格式
  5209. InWindow: true, //是否以窗口的高度为准 height设置为百分比时可用
  5210. statusName: '__status', //状态名
  5211. method: 'post', //提交方式
  5212. async: true,
  5213. fixedCellHeight: true, //是否固定单元格的高度
  5214. heightDiff: 0, //高度补差,当设置height:100%时,可能会有高度的误差,可以通过这个属性调整
  5215. cssClass: null, //类名
  5216. root: 'Rows', //数据源字段名
  5217. record: 'Total', //数据源记录数字段名
  5218. pageParmName: 'page', //页索引参数名,(提交给服务器)
  5219. pagesizeParmName: 'pagesize', //页记录数参数名,(提交给服务器)
  5220. sortnameParmName: 'sortname', //页排序列名(提交给服务器)
  5221. sortorderParmName: 'sortorder', //页排序方向(提交给服务器)
  5222. onReload: null, //刷新事件,可以通过return false来阻止操作
  5223. onToFirst: null, //第一页,可以通过return false来阻止操作
  5224. onToPrev: null, //上一页,可以通过return false来阻止操作
  5225. onToNext: null, //下一页,可以通过return false来阻止操作
  5226. onToLast: null, //最后一页,可以通过return false来阻止操作
  5227. allowUnSelectRow: false, //是否允许反选行
  5228. alternatingRow: true, //奇偶行效果
  5229. mouseoverRowCssClass: 'l-grid-row-over',
  5230. enabledSort: true, //是否允许排序
  5231. rowAttrRender: null, //行自定义属性渲染器(包括style,也可以定义)
  5232. groupColumnName: null, //分组 - 列名
  5233. groupColumnDisplay: '分组', //分组 - 列显示名字
  5234. groupRender: null, //分组 - 渲染器
  5235. totalRender: null, //统计行(全部数据)
  5236. delayLoad: false, //初始化时是否不加载
  5237. where: null, //数据过滤查询函数,(参数一 data item,参数二 data item index)
  5238. selectRowButtonOnly: false, //复选框模式时,是否只允许点击复选框才能选择行
  5239. onAfterAddRow: null, //增加行后事件
  5240. onBeforeEdit: null, //编辑前事件
  5241. onBeforeSubmitEdit: null, //验证编辑器结果是否通过
  5242. onAfterEdit: null, //结束编辑后事件
  5243. onLoading: null, //加载时函数
  5244. onLoaded: null, //加载完函数
  5245. onContextmenu: null, //右击事件
  5246. whenRClickToSelect: false, //右击行时是否选中
  5247. contentType: null, //Ajax contentType参数
  5248. checkboxColWidth: 27, //复选框列宽度
  5249. detailColWidth: 29, //明细列宽度
  5250. clickToEdit: true, //是否点击单元格的时候就编辑
  5251. detailToEdit: false, //是否点击明细的时候进入编辑
  5252. onEndEdit: null,
  5253. minColumnWidth: 80,
  5254. tree: null, //treeGrid模式
  5255. isChecked: null, //复选框 初始化函数
  5256. frozen: true, //是否固定列
  5257. frozenDetail: false, //明细按钮是否在固定列中
  5258. frozenCheckbox: true, //复选框按钮是否在固定列中
  5259. detailHeight: 260,
  5260. rownumbers: false, //是否显示行序号
  5261. frozenRownumbers: true, //行序号是否在固定列中
  5262. rownumbersColWidth: 26,
  5263. colDraggable: false, //是否允许表头拖拽
  5264. rowDraggable: false, //是否允许行拖拽
  5265. rowDraggingRender: null,
  5266. autoCheckChildren: true, //是否自动选中子节点
  5267. onRowDragDrop: null, //行拖拽事件
  5268. rowHeight: 22, //行默认的高度
  5269. headerRowHeight: 23, //表头行的高度
  5270. toolbar: null, //工具条,参数同 ligerToolbar的
  5271. headerImg: null //表格头部图标
  5272. };
  5273. $.ligerDefaults.GridString = {
  5274. errorMessage: '发生错误',
  5275. pageStatMessage: '显示从{from}到{to},总 {total} 条 。每页显示:{pagesize}',
  5276. pageTextMessage: 'Page',
  5277. loadingMessage: '加载中...',
  5278. findTextMessage: '查找',
  5279. noRecordMessage: '没有符合条件的记录存在',
  5280. isContinueByDataChanged: '数据已经改变,如果继续将丢失数据,是否继续?',
  5281. cancelMessage: '取消',
  5282. saveMessage: '保存',
  5283. applyMessage: '应用',
  5284. draggingMessage: '{count}行'
  5285. };
  5286. //接口方法扩展
  5287. $.ligerMethos.Grid = $.ligerMethos.Grid || {};
  5288. //排序器扩展
  5289. $.ligerDefaults.Grid.sorters = $.ligerDefaults.Grid.sorters || {};
  5290. //格式化器扩展
  5291. $.ligerDefaults.Grid.formatters = $.ligerDefaults.Grid.formatters || {};
  5292. //编辑器扩展
  5293. $.ligerDefaults.Grid.editors = $.ligerDefaults.Grid.editors || {};
  5294. $.ligerDefaults.Grid.sorters['date'] = function (val1, val2)
  5295. {
  5296. return val1 < val2 ? -1 : val1 > val2 ? 1 : 0;
  5297. };
  5298. $.ligerDefaults.Grid.sorters['int'] = function (val1, val2)
  5299. {
  5300. return parseInt(val1) < parseInt(val2) ? -1 : parseInt(val1) > parseInt(val2) ? 1 : 0;
  5301. };
  5302. $.ligerDefaults.Grid.sorters['float'] = function (val1, val2)
  5303. {
  5304. return parseFloat(val1) < parseFloat(val2) ? -1 : parseFloat(val1) > parseFloat(val2) ? 1 : 0;
  5305. };
  5306. $.ligerDefaults.Grid.sorters['string'] = function (val1, val2)
  5307. {
  5308. return val1.localeCompare(val2);
  5309. };
  5310. $.ligerDefaults.Grid.formatters['date'] = function (value, column)
  5311. {
  5312. function getFormatDate(date, dateformat)
  5313. {
  5314. var g = this, p = this.options;
  5315. if (isNaN(date)) return null;
  5316. var format = dateformat;
  5317. var o = {
  5318. "M+": date.getMonth() + 1,
  5319. "d+": date.getDate(),
  5320. "h+": date.getHours(),
  5321. "m+": date.getMinutes(),
  5322. "s+": date.getSeconds(),
  5323. "q+": Math.floor((date.getMonth() + 3) / 3),
  5324. "S": date.getMilliseconds()
  5325. }
  5326. if (/(y+)/.test(format))
  5327. {
  5328. format = format.replace(RegExp.$1, (date.getFullYear() + "")
  5329. .substr(4 - RegExp.$1.length));
  5330. }
  5331. for (var k in o)
  5332. {
  5333. if (new RegExp("(" + k + ")").test(format))
  5334. {
  5335. format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k]
  5336. : ("00" + o[k]).substr(("" + o[k]).length));
  5337. }
  5338. }
  5339. return format;
  5340. }
  5341. if (!value) return "";
  5342. // /Date(1328423451489)/
  5343. if (typeof (value) == "string" && /^\/Date/.test(value))
  5344. {
  5345. value = value.replace(/^\//, "new ").replace(/\/$/, "");
  5346. eval("value = " + value);
  5347. }
  5348. if (value instanceof Date)
  5349. {
  5350. var format = column.format || this.options.dateFormat || "yyyy-MM-dd";
  5351. return getFormatDate(value, format);
  5352. }
  5353. else
  5354. {
  5355. return value.toString();
  5356. }
  5357. }
  5358. $.ligerDefaults.Grid.editors['date'] =
  5359. {
  5360. create: function (container, editParm)
  5361. {
  5362. var column = editParm.column;
  5363. var input = $("<input type='text'/>");
  5364. container.append(input);
  5365. var options = {};
  5366. var ext = column.editor.p || column.editor.ext;
  5367. if (ext)
  5368. {
  5369. var tmp = typeof (ext) == 'function' ?
  5370. ext(editParm.record, editParm.rowindex, editParm.value, column) : ext;
  5371. $.extend(options, tmp);
  5372. }
  5373. input.ligerDateEditor(options);
  5374. return input;
  5375. },
  5376. getValue: function (input, editParm)
  5377. {
  5378. return input.liger('option', 'value');
  5379. },
  5380. setValue: function (input, value, editParm)
  5381. {
  5382. input.liger('option', 'value', value);
  5383. },
  5384. resize: function (input, width, height, editParm)
  5385. {
  5386. input.liger('option', 'width', width);
  5387. input.liger('option', 'height', height);
  5388. },
  5389. destroy: function (input, editParm)
  5390. {
  5391. input.liger('destroy');
  5392. }
  5393. };
  5394. $.ligerDefaults.Grid.editors['select'] =
  5395. $.ligerDefaults.Grid.editors['combobox'] =
  5396. {
  5397. create: function (container, editParm)
  5398. {
  5399. var column = editParm.column;
  5400. var input = $("<input type='text'/>");
  5401. container.append(input);
  5402. var options = {
  5403. data: column.editor.data,
  5404. slide: false,
  5405. valueField: column.editor.valueField || column.editor.valueColumnName,
  5406. textField: column.editor.textField || column.editor.displayColumnName
  5407. };
  5408. var ext = column.editor.p || column.editor.ext;
  5409. if (ext)
  5410. {
  5411. var tmp = typeof (ext) == 'function' ?
  5412. ext(editParm.record, editParm.rowindex, editParm.value, column) : ext;
  5413. $.extend(options, tmp);
  5414. }
  5415. input.ligerComboBox(options);
  5416. return input;
  5417. },
  5418. getValue: function (input, editParm)
  5419. {
  5420. return input.liger('option', 'value');
  5421. },
  5422. setValue: function (input, value, editParm)
  5423. {
  5424. input.liger('option', 'value', value);
  5425. },
  5426. resize: function (input, width, height, editParm)
  5427. {
  5428. input.liger('option', 'width', width);
  5429. input.liger('option', 'height', height);
  5430. },
  5431. destroy: function (input, editParm)
  5432. {
  5433. input.liger('destroy');
  5434. }
  5435. };
  5436. $.ligerDefaults.Grid.editors['int'] =
  5437. $.ligerDefaults.Grid.editors['float'] =
  5438. $.ligerDefaults.Grid.editors['spinner'] =
  5439. {
  5440. create: function (container, editParm)
  5441. {
  5442. var column = editParm.column;
  5443. var input = $("<input type='text'/>");
  5444. container.append(input);
  5445. input.css({ border: '#6E90BE' })
  5446. var options = {
  5447. type: column.editor.type == 'float' ? 'float' : 'int'
  5448. };
  5449. if (column.editor.minValue != undefined) options.minValue = column.editor.minValue;
  5450. if (column.editor.maxValue != undefined) options.maxValue = column.editor.maxValue;
  5451. input.ligerSpinner(options);
  5452. return input;
  5453. },
  5454. getValue: function (input, editParm)
  5455. {
  5456. var column = editParm.column;
  5457. var isInt = column.editor.type == "int";
  5458. if (isInt)
  5459. return parseInt(input.val(), 10);
  5460. else
  5461. return parseFloat(input.val());
  5462. },
  5463. setValue: function (input, value, editParm)
  5464. {
  5465. input.val(value);
  5466. },
  5467. resize: function (input, width, height, editParm)
  5468. {
  5469. input.liger('option', 'width', width);
  5470. input.liger('option', 'height', height);
  5471. },
  5472. destroy: function (input, editParm)
  5473. {
  5474. input.liger('destroy');
  5475. }
  5476. };
  5477. $.ligerDefaults.Grid.editors['string'] =
  5478. $.ligerDefaults.Grid.editors['text'] = {
  5479. create: function (container, editParm)
  5480. {
  5481. var input = $("<input type='text' class='l-text-editing'/>");
  5482. container.append(input);
  5483. input.ligerTextBox();
  5484. return input;
  5485. },
  5486. getValue: function (input, editParm)
  5487. {
  5488. return input.val();
  5489. },
  5490. setValue: function (input, value, editParm)
  5491. {
  5492. input.val(value);
  5493. },
  5494. resize: function (input, width, height, editParm)
  5495. {
  5496. input.liger('option', 'width', width);
  5497. input.liger('option', 'height', height);
  5498. },
  5499. destroy: function (input, editParm)
  5500. {
  5501. input.liger('destroy');
  5502. }
  5503. };
  5504. $.ligerDefaults.Grid.editors['chk'] = $.ligerDefaults.Grid.editors['checkbox'] = {
  5505. create: function (container, editParm)
  5506. {
  5507. var input = $("<input type='checkbox' />");
  5508. container.append(input);
  5509. input.ligerCheckBox();
  5510. return input;
  5511. },
  5512. getValue: function (input, editParm)
  5513. {
  5514. return input[0].checked ? 1 : 0;
  5515. },
  5516. setValue: function (input, value, editParm)
  5517. {
  5518. input.val(value ? true : false);
  5519. },
  5520. resize: function (input, width, height, editParm)
  5521. {
  5522. input.liger('option', 'width', width);
  5523. input.liger('option', 'height', height);
  5524. },
  5525. destroy: function (input, editParm)
  5526. {
  5527. input.liger('destroy');
  5528. }
  5529. };
  5530. $.ligerui.controls.Grid = function (element, options)
  5531. {
  5532. $.ligerui.controls.Grid.base.constructor.call(this, element, options);
  5533. };
  5534. $.ligerui.controls.Grid.ligerExtend($.ligerui.core.UIComponent, {
  5535. __getType: function ()
  5536. {
  5537. return '$.ligerui.controls.Grid';
  5538. },
  5539. __idPrev: function ()
  5540. {
  5541. return 'grid';
  5542. },
  5543. _extendMethods: function ()
  5544. {
  5545. return $.ligerMethos.Grid;
  5546. },
  5547. _init: function ()
  5548. {
  5549. $.ligerui.controls.Grid.base._init.call(this);
  5550. var g = this, p = this.options;
  5551. p.dataType = p.url ? "server" : "local";
  5552. if (p.dataType == "local")
  5553. {
  5554. p.data = p.data || [];
  5555. p.dataAction = "local";
  5556. }
  5557. if (p.isScroll == false)
  5558. {
  5559. p.height = 'auto';
  5560. }
  5561. if (!p.frozen)
  5562. {
  5563. p.frozenCheckbox = false;
  5564. p.frozenDetail = false;
  5565. p.frozenRownumbers = false;
  5566. }
  5567. if (p.detailToEdit)
  5568. {
  5569. p.enabledEdit = true;
  5570. p.clickToEdit = false;
  5571. p.detail = {
  5572. height: 'auto',
  5573. onShowDetail: function (record, container, callback)
  5574. {
  5575. $(container).addClass("l-grid-detailpanel-edit");
  5576. g.beginEdit(record, function (rowdata, column)
  5577. {
  5578. var editContainer = $("<div class='l-editbox'></div>");
  5579. editContainer.width(120).height(p.rowHeight + 1);
  5580. editContainer.appendTo(container);
  5581. return editContainer;
  5582. });
  5583. function removeRow()
  5584. {
  5585. $(container).parent().parent().remove();
  5586. g.collapseDetail(record);
  5587. }
  5588. $("<div class='l-clear'></div>").appendTo(container);
  5589. $("<div class='l-button'>" + p.saveMessage + "</div>").appendTo(container).click(function ()
  5590. {
  5591. g.endEdit(record);
  5592. removeRow();
  5593. });
  5594. $("<div class='l-button'>" + p.applyMessage + "</div>").appendTo(container).click(function ()
  5595. {
  5596. g.submitEdit(record);
  5597. });
  5598. $("<div class='l-button'>" + p.cancelMessage + "</div>").appendTo(container).click(function ()
  5599. {
  5600. g.cancelEdit(record);
  5601. removeRow();
  5602. });
  5603. }
  5604. };
  5605. }
  5606. if (p.tree)//启用分页模式
  5607. {
  5608. p.tree.childrenName = p.tree.childrenName || "children";
  5609. p.tree.isParent = p.tree.isParent || function (rowData)
  5610. {
  5611. var exist = p.tree.childrenName in rowData;
  5612. return exist;
  5613. };
  5614. p.tree.isExtend = p.tree.isExtend || function (rowData)
  5615. {
  5616. if ('isextend' in rowData && rowData['isextend'] == false)
  5617. return false;
  5618. return true;
  5619. };
  5620. }
  5621. },
  5622. _render: function ()
  5623. {
  5624. var g = this, p = this.options;
  5625. g.grid = $(g.element);
  5626. g.grid.addClass("l-panel");
  5627. var gridhtmlarr = [];
  5628. gridhtmlarr.push(" <div class='l-panel-header'><span class='l-panel-header-text'></span></div>");
  5629. gridhtmlarr.push(" <div class='l-grid-loading'></div>");
  5630. gridhtmlarr.push(" <div class='l-panel-topbar'></div>");
  5631. gridhtmlarr.push(" <div class='l-panel-bwarp'>");
  5632. gridhtmlarr.push(" <div class='l-panel-body'>");
  5633. gridhtmlarr.push(" <div class='l-grid'>");
  5634. gridhtmlarr.push(" <div class='l-grid-dragging-line'></div>");
  5635. gridhtmlarr.push(" <div class='l-grid-popup'><table cellpadding='0' cellspacing='0'><tbody></tbody></table></div>");
  5636. gridhtmlarr.push(" <div class='l-grid1'>");
  5637. gridhtmlarr.push(" <div class='l-grid-header l-grid-header1'>");
  5638. gridhtmlarr.push(" <div class='l-grid-header-inner'><table class='l-grid-header-table' cellpadding='0' cellspacing='0'><tbody></tbody></table></div>");
  5639. gridhtmlarr.push(" </div>");
  5640. gridhtmlarr.push(" <div class='l-grid-body l-grid-body1'>");
  5641. gridhtmlarr.push(" </div>");
  5642. gridhtmlarr.push(" </div>");
  5643. gridhtmlarr.push(" <div class='l-grid2'>");
  5644. gridhtmlarr.push(" <div class='l-grid-header l-grid-header2'>");
  5645. gridhtmlarr.push(" <div class='l-grid-header-inner'><table class='l-grid-header-table' cellpadding='0' cellspacing='0'><tbody></tbody></table></div>");
  5646. gridhtmlarr.push(" </div>");
  5647. gridhtmlarr.push(" <div class='l-grid-body l-grid-body2 l-scroll'>");
  5648. gridhtmlarr.push(" </div>");
  5649. gridhtmlarr.push(" </div>");
  5650. gridhtmlarr.push(" </div>");
  5651. gridhtmlarr.push(" </div>");
  5652. gridhtmlarr.push(" </div>");
  5653. gridhtmlarr.push(" <div class='l-panel-bar'>");
  5654. gridhtmlarr.push(" <div class='l-panel-bbar-inner'>");
  5655. gridhtmlarr.push(" <div class='l-bar-group l-bar-message'><span class='l-bar-text'></span></div>");
  5656. gridhtmlarr.push(" <div class='l-bar-group l-bar-selectpagesize'></div>");
  5657. gridhtmlarr.push(" <div class='l-bar-separator'></div>");
  5658. gridhtmlarr.push(" <div class='l-bar-group'>");
  5659. gridhtmlarr.push(" <div class='l-bar-button l-bar-btnfirst'><span></span></div>");
  5660. gridhtmlarr.push(" <div class='l-bar-button l-bar-btnprev'><span></span></div>");
  5661. gridhtmlarr.push(" </div>");
  5662. gridhtmlarr.push(" <div class='l-bar-separator'></div>");
  5663. gridhtmlarr.push(" <div class='l-bar-group'><span class='pcontrol'> <input type='text' size='4' value='1' style='width:20px' maxlength='3' /> / <span></span></span></div>");
  5664. gridhtmlarr.push(" <div class='l-bar-separator'></div>");
  5665. gridhtmlarr.push(" <div class='l-bar-group'>");
  5666. gridhtmlarr.push(" <div class='l-bar-button l-bar-btnnext'><span></span></div>");
  5667. gridhtmlarr.push(" <div class='l-bar-button l-bar-btnlast'><span></span></div>");
  5668. gridhtmlarr.push(" </div>");
  5669. gridhtmlarr.push(" <div class='l-bar-separator'></div>");
  5670. gridhtmlarr.push(" <div class='l-bar-group'>");
  5671. gridhtmlarr.push(" <div class='l-bar-button l-bar-btnload'><span></span></div>");
  5672. gridhtmlarr.push(" </div>");
  5673. gridhtmlarr.push(" <div class='l-bar-separator'></div>");
  5674. gridhtmlarr.push(" <div class='l-clear'></div>");
  5675. gridhtmlarr.push(" </div>");
  5676. gridhtmlarr.push(" </div>");
  5677. g.grid.html(gridhtmlarr.join(''));
  5678. //头部
  5679. g.header = $(".l-panel-header:first", g.grid);
  5680. //主体
  5681. g.body = $(".l-panel-body:first", g.grid);
  5682. //底部工具条
  5683. g.toolbar = $(".l-panel-bar:first", g.grid);
  5684. //显示/隐藏列
  5685. g.popup = $(".l-grid-popup:first", g.grid);
  5686. //加载中
  5687. g.gridloading = $(".l-grid-loading:first", g.grid);
  5688. //调整列宽层
  5689. g.draggingline = $(".l-grid-dragging-line", g.grid);
  5690. //顶部工具栏
  5691. g.topbar = $(".l-panel-topbar:first", g.grid);
  5692. g.gridview = $(".l-grid:first", g.grid);
  5693. g.gridview.attr("id", g.id + "grid");
  5694. g.gridview1 = $(".l-grid1:first", g.gridview);
  5695. g.gridview2 = $(".l-grid2:first", g.gridview);
  5696. //表头
  5697. g.gridheader = $(".l-grid-header:first", g.gridview2);
  5698. //表主体
  5699. g.gridbody = $(".l-grid-body:first", g.gridview2);
  5700. //frozen
  5701. g.f = {};
  5702. //表头
  5703. g.f.gridheader = $(".l-grid-header:first", g.gridview1);
  5704. //表主体
  5705. g.f.gridbody = $(".l-grid-body:first", g.gridview1);
  5706. g.currentData = null;
  5707. g.changedCells = {};
  5708. g.editors = {}; //多编辑器同时存在
  5709. g.editor = { editing: false }; //单编辑器,配置clickToEdit
  5710. if (p.height == "auto")
  5711. {
  5712. g.bind("SysGridHeightChanged", function ()
  5713. {
  5714. if (g.enabledFrozen())
  5715. g.gridview.height(Math.max(g.gridview1.height(), g.gridview2.height()));
  5716. });
  5717. }
  5718. var pc = $.extend({}, p);
  5719. this._bulid();
  5720. this._setColumns(p.columns);
  5721. delete pc['columns'];
  5722. delete pc['data'];
  5723. delete pc['url'];
  5724. g.set(pc);
  5725. if (!p.delayLoad)
  5726. {
  5727. if (p.url)
  5728. g.set({ url: p.url });
  5729. else if (p.data)
  5730. g.set({ data: p.data });
  5731. }
  5732. },
  5733. _setFrozen: function (frozen)
  5734. {
  5735. if (frozen)
  5736. this.grid.addClass("l-frozen");
  5737. else
  5738. this.grid.removeClass("l-frozen");
  5739. },
  5740. _setCssClass: function (value)
  5741. {
  5742. this.grid.addClass(value);
  5743. },
  5744. _setLoadingMessage: function (value)
  5745. {
  5746. this.gridloading.html(value);
  5747. },
  5748. _setHeight: function (h)
  5749. {
  5750. var g = this, p = this.options;
  5751. g.unbind("SysGridHeightChanged");
  5752. if (h == "auto")
  5753. {
  5754. g.bind("SysGridHeightChanged", function ()
  5755. {
  5756. if (g.enabledFrozen())
  5757. g.gridview.height(Math.max(g.gridview1.height(), g.gridview2.height()));
  5758. });
  5759. return;
  5760. }
  5761. if (typeof h == "string" && h.indexOf('%') > 0)
  5762. {
  5763. if (p.inWindow)
  5764. h = $(window).height() * parseFloat(h) * 0.01;
  5765. else
  5766. h = g.grid.parent().height() * parseFloat(h) * 0.01;
  5767. }
  5768. if (p.title) h -= 24;
  5769. if (p.usePager) h -= 32;
  5770. if (p.totalRender) h -= 25;
  5771. if (p.toolbar) h -= g.topbar.outerHeight();
  5772. var gridHeaderHeight = p.headerRowHeight * (g._columnMaxLevel - 1) + p.headerRowHeight - 1;
  5773. h -= gridHeaderHeight;
  5774. if (h > 0)
  5775. {
  5776. g.gridbody.height(h);
  5777. if (h > 18) g.f.gridbody.height(h - 18);
  5778. g.gridview.height(h + gridHeaderHeight);
  5779. }
  5780. },
  5781. _updateFrozenWidth: function ()
  5782. {
  5783. var g = this, p = this.options;
  5784. if (g.enabledFrozen())
  5785. {
  5786. g.gridview1.width(g.f.gridtablewidth);
  5787. var view2width = g.gridview.width() - g.f.gridtablewidth;
  5788. g.gridview2.css({ left: g.f.gridtablewidth });
  5789. if (view2width > 0) g.gridview2.css({ width: view2width });
  5790. }
  5791. },
  5792. _setWidth: function (value)
  5793. {
  5794. var g = this, p = this.options;
  5795. if (g.enabledFrozen()) g._onResize();
  5796. },
  5797. _setUrl: function (value)
  5798. {
  5799. this.options.url = value;
  5800. if (value)
  5801. {
  5802. this.options.dataType = "server";
  5803. this.loadData(true);
  5804. }
  5805. else
  5806. {
  5807. this.options.dataType = "local";
  5808. }
  5809. },
  5810. _setData: function (value)
  5811. {
  5812. this.loadData(this.options.data);
  5813. },
  5814. //刷新数据
  5815. loadData: function (loadDataParm)
  5816. {
  5817. var g = this, p = this.options;
  5818. g.loading = true;
  5819. var clause = null;
  5820. var loadServer = true;
  5821. if (typeof (loadDataParm) == "function")
  5822. {
  5823. clause = loadDataParm;
  5824. loadServer = false;
  5825. }
  5826. else if (typeof (loadDataParm) == "boolean")
  5827. {
  5828. loadServer = loadDataParm;
  5829. }
  5830. else if (typeof (loadDataParm) == "object" && loadDataParm)
  5831. {
  5832. loadServer = false;
  5833. p.dataType = "local";
  5834. p.data = loadDataParm;
  5835. }
  5836. //参数初始化
  5837. if (!p.newPage) p.newPage = 1;
  5838. if (p.dataAction == "server")
  5839. {
  5840. if (!p.sortOrder) p.sortOrder = "asc";
  5841. }
  5842. var param = [];
  5843. if (p.parms)
  5844. {
  5845. if (p.parms.length)
  5846. {
  5847. $(p.parms).each(function ()
  5848. {
  5849. param.push({ name: this.name, value: this.value });
  5850. });
  5851. }
  5852. else if (typeof p.parms == "object")
  5853. {
  5854. for (var name in p.parms)
  5855. {
  5856. param.push({ name: name, value: p.parms[name] });
  5857. }
  5858. }
  5859. }
  5860. if (p.dataAction == "server")
  5861. {
  5862. if (p.usePager)
  5863. {
  5864. param.push({ name: p.pageParmName, value: p.newPage });
  5865. param.push({ name: p.pagesizeParmName, value: p.pageSize });
  5866. }
  5867. if (p.sortName)
  5868. {
  5869. param.push({ name: p.sortnameParmName, value: p.sortName });
  5870. param.push({ name: p.sortorderParmName, value: p.sortOrder });
  5871. }
  5872. };
  5873. $(".l-bar-btnload span", g.toolbar).addClass("l-disabled");
  5874. if (p.dataType == "local")
  5875. {
  5876. g.filteredData = g.data = p.data;
  5877. if (clause)
  5878. g.filteredData[p.root] = g._searchData(g.filteredData[p.root], clause);
  5879. if (p.usePager)
  5880. g.currentData = g._getCurrentPageData(g.filteredData);
  5881. else
  5882. {
  5883. g.currentData = g.filteredData;
  5884. }
  5885. g._showData();
  5886. }
  5887. else if (p.dataAction == "local" && !loadServer)
  5888. {
  5889. if (g.data && g.data[p.root])
  5890. {
  5891. g.filteredData = g.data;
  5892. if (clause)
  5893. g.filteredData[p.root] = g._searchData(g.filteredData[p.root], clause);
  5894. g.currentData = g._getCurrentPageData(g.filteredData);
  5895. g._showData();
  5896. }
  5897. }
  5898. else
  5899. {
  5900. g.loadServerData(param, clause);
  5901. //g.loadServerData.ligerDefer(g, 10, [param, clause]);
  5902. }
  5903. g.loading = false;
  5904. },
  5905. loadServerData: function (param, clause)
  5906. {
  5907. var g = this, p = this.options;
  5908. var ajaxOptions = {
  5909. type: p.method,
  5910. url: p.url,
  5911. data: param,
  5912. async: p.async,
  5913. dataType: 'json',
  5914. beforeSend: function ()
  5915. {
  5916. if (g.hasBind('loading'))
  5917. {
  5918. g.trigger('loading');
  5919. }
  5920. else
  5921. {
  5922. g.toggleLoading(true);
  5923. }
  5924. },
  5925. success: function (data)
  5926. {
  5927. g.trigger('success', [data, g]);
  5928. if (!data || !data[p.root] || !data[p.root].length)
  5929. {
  5930. g.currentData = g.data = {};
  5931. g.currentData[p.root] = g.data[p.root] = [];
  5932. g.currentData[p.record] = g.data[p.record] = 0;
  5933. g._showData();
  5934. return;
  5935. }
  5936. g.data = data;
  5937. if (p.dataAction == "server")
  5938. {
  5939. g.currentData = g.data;
  5940. }
  5941. else
  5942. {
  5943. g.filteredData = g.data;
  5944. if (clause) g.filteredData[p.root] = g._searchData(g.filteredData[p.root], clause);
  5945. if (p.usePager)
  5946. g.currentData = g._getCurrentPageData(g.filteredData);
  5947. else
  5948. g.currentData = g.filteredData;
  5949. }
  5950. g._showData.ligerDefer(g, 10, [g.currentData]);
  5951. },
  5952. complete: function ()
  5953. {
  5954. g.trigger('complete', [g]);
  5955. if (g.hasBind('loaded'))
  5956. {
  5957. g.trigger('loaded', [g]);
  5958. }
  5959. else
  5960. {
  5961. g.toggleLoading.ligerDefer(g, 10, [false]);
  5962. }
  5963. },
  5964. error: function (XMLHttpRequest, textStatus, errorThrown)
  5965. {
  5966. g.currentData = g.data = {};
  5967. g.currentData[p.root] = g.data[p.root] = [];
  5968. g.currentData[p.record] = g.data[p.record] = 0;
  5969. g.toggleLoading.ligerDefer(g, 10, [false]);
  5970. $(".l-bar-btnload span", g.toolbar).removeClass("l-disabled");
  5971. g.trigger('error', [XMLHttpRequest, textStatus, errorThrown]);
  5972. }
  5973. };
  5974. if (p.contentType) ajaxOptions.contentType = p.contentType;
  5975. $.ajax(ajaxOptions);
  5976. },
  5977. toggleLoading: function (show)
  5978. {
  5979. this.gridloading[show ? 'show' : 'hide']();
  5980. },
  5981. _createEditor: function (editor, container, editParm, width, height)
  5982. {
  5983. var editorInput = editor.create(container, editParm);
  5984. if (editor.setValue) editor.setValue(editorInput, editParm.value, editParm);
  5985. if (editor.resize) editor.resize(editorInput, width, height, editParm);
  5986. return editorInput;
  5987. },
  5988. /*
  5989. @description 使一行进入编辑状态
  5990. @param {rowParm} rowindex或者rowdata
  5991. @param {containerBulider} 编辑器填充层构造器
  5992. */
  5993. beginEdit: function (rowParm, containerBulider)
  5994. {
  5995. var g = this, p = this.options;
  5996. if (!p.enabledEdit || p.clickToEdit) return;
  5997. var rowdata = g.getRow(rowParm);
  5998. if (rowdata._editing) return;
  5999. if (g.trigger('beginEdit', { record: rowdata, rowindex: rowdata['__index'] }) == false) return;
  6000. g.editors[rowdata['__id']] = {};
  6001. rowdata._editing = true;
  6002. g.reRender({ rowdata: rowdata });
  6003. containerBulider = containerBulider || function (rowdata, column)
  6004. {
  6005. var cellobj = g.getCellObj(rowdata, column);
  6006. var container = $(cellobj).html("");
  6007. g.setCellEditing(rowdata, column, true);
  6008. return container;
  6009. };
  6010. for (var i = 0, l = g.columns.length; i < l; i++)
  6011. {
  6012. var column = g.columns[i];
  6013. if (!column.name || !column.editor || !column.editor.type || !p.editors[column.editor.type]) continue;
  6014. var editor = p.editors[column.editor.type];
  6015. var editParm = { record: rowdata, value: rowdata[column.name], column: column, rowindex: rowdata['__index'], grid: g };
  6016. var container = containerBulider(rowdata, column);
  6017. var width = container.width(), height = container.height();
  6018. var editorInput = g._createEditor(editor, container, editParm, width, height);
  6019. g.editors[rowdata['__id']][column['__id']] = { editor: editor, input: editorInput, editParm: editParm, container: container };
  6020. }
  6021. g.trigger('afterBeginEdit', { record: rowdata, rowindex: rowdata['__index'] });
  6022. },
  6023. cancelEdit: function (rowParm)
  6024. {
  6025. var g = this;
  6026. if (rowParm == undefined)
  6027. {
  6028. for (var rowid in g.editors)
  6029. {
  6030. g.cancelEdit(rowid);
  6031. }
  6032. }
  6033. else
  6034. {
  6035. var rowdata = g.getRow(rowParm);
  6036. if (!g.editors[rowdata['__id']]) return;
  6037. if (g.trigger('cancelEdit', { record: rowdata, rowindex: rowdata['__index'] }) == false) return;
  6038. for (var columnid in g.editors[rowdata['__id']])
  6039. {
  6040. var o = g.editors[rowdata['__id']][columnid];
  6041. if (o.editor.destroy) o.editor.destroy(o.input, o.editParm);
  6042. }
  6043. delete g.editors[rowdata['__id']];
  6044. delete rowdata['_editing'];
  6045. g.reRender({ rowdata: rowdata });
  6046. }
  6047. },
  6048. addEditRow: function (rowdata)
  6049. {
  6050. this.submitEdit();
  6051. rowdata = this.add(rowdata);
  6052. this.beginEdit(rowdata);
  6053. },
  6054. submitEdit: function (rowParm)
  6055. {
  6056. var g = this, p = this.options;
  6057. if (rowParm == undefined)
  6058. {
  6059. for (var rowid in g.editors)
  6060. {
  6061. g.submitEdit(rowid);
  6062. }
  6063. }
  6064. else
  6065. {
  6066. var rowdata = g.getRow(rowParm);
  6067. var newdata = {};
  6068. if (!g.editors[rowdata['__id']]) return;
  6069. for (var columnid in g.editors[rowdata['__id']])
  6070. {
  6071. var o = g.editors[rowdata['__id']][columnid];
  6072. var column = o.editParm.column;
  6073. if (column.name)
  6074. newdata[column.name] = o.editor.getValue(o.input, o.editParm);
  6075. }
  6076. if (g.trigger('beforeSubmitEdit', { record: rowdata, rowindex: rowdata['__index'], newdata: newdata }) == false)
  6077. return false;
  6078. g.updateRow(rowdata, newdata);
  6079. g.trigger('afterSubmitEdit', { record: rowdata, rowindex: rowdata['__index'], newdata: newdata });
  6080. }
  6081. },
  6082. endEdit: function (rowParm)
  6083. {
  6084. var g = this, p = this.options;
  6085. if (g.editor.editing)
  6086. {
  6087. var o = g.editor;
  6088. g.trigger('sysEndEdit', [g.editor.editParm]);
  6089. g.trigger('endEdit', [g.editor.editParm]);
  6090. if (o.editor.destroy) o.editor.destroy(o.input, o.editParm);
  6091. g.editor.container.remove();
  6092. g.reRender({ rowdata: g.editor.editParm.record, column: g.editor.editParm.column });
  6093. g.trigger('afterEdit', [g.editor.editParm]);
  6094. g.editor = { editing: false };
  6095. }
  6096. else if (rowParm != undefined)
  6097. {
  6098. var rowdata = g.getRow(rowParm);
  6099. if (!g.editors[rowdata['__id']]) return;
  6100. if (g.submitEdit(rowParm) == false) return false;
  6101. for (var columnid in g.editors[rowdata['__id']])
  6102. {
  6103. var o = g.editors[rowdata['__id']][columnid];
  6104. if (o.editor.destroy) o.editor.destroy(o.input, o.editParm);
  6105. }
  6106. delete g.editors[rowdata['__id']];
  6107. delete rowdata['_editing'];
  6108. g.trigger('afterEdit', { record: rowdata, rowindex: rowdata['__index'] });
  6109. }
  6110. else
  6111. {
  6112. for (var rowid in g.editors)
  6113. {
  6114. g.endEdit(rowid);
  6115. }
  6116. }
  6117. },
  6118. setWidth: function (w)
  6119. {
  6120. return this._setWidth(w);
  6121. },
  6122. setHeight: function (h)
  6123. {
  6124. return this._setHeight(h);
  6125. },
  6126. //是否启用复选框列
  6127. enabledCheckbox: function ()
  6128. {
  6129. return this.options.checkbox ? true : false;
  6130. },
  6131. //是否固定列
  6132. enabledFrozen: function ()
  6133. {
  6134. var g = this, p = this.options;
  6135. if (!p.frozen) return false;
  6136. var cols = g.columns || [];
  6137. if (g.enabledDetail() && p.frozenDetail || g.enabledCheckbox() && p.frozenCheckbox
  6138. || p.frozenRownumbers && p.rownumbers) return true;
  6139. for (var i = 0, l = cols.length; i < l; i++)
  6140. {
  6141. if (cols[i].frozen)
  6142. {
  6143. return true;
  6144. }
  6145. }
  6146. this._setFrozen(false);
  6147. return false;
  6148. },
  6149. //是否启用明细编辑
  6150. enabledDetailEdit: function ()
  6151. {
  6152. if (!this.enabledDetail()) return false;
  6153. return this.options.detailToEdit ? true : false;
  6154. },
  6155. //是否启用明细列
  6156. enabledDetail: function ()
  6157. {
  6158. if (this.options.detail && this.options.detail.onShowDetail) return true;
  6159. return false;
  6160. },
  6161. //是否启用分组
  6162. enabledGroup: function ()
  6163. {
  6164. return this.options.groupColumnName ? true : false;
  6165. },
  6166. deleteSelectedRow: function ()
  6167. {
  6168. if (!this.selected) return;
  6169. for (var i in this.selected)
  6170. {
  6171. var o = this.selected[i];
  6172. if (o['__id'] in this.records)
  6173. this._deleteData.ligerDefer(this, 10, [o]);
  6174. }
  6175. this.reRender.ligerDefer(this, 20);
  6176. },
  6177. removeRange: function (rowArr)
  6178. {
  6179. var g = this, p = this.options;
  6180. $.each(rowArr, function ()
  6181. {
  6182. g._removeData(this);
  6183. });
  6184. g.reRender();
  6185. },
  6186. remove: function (rowParm)
  6187. {
  6188. var g = this, p = this.options;
  6189. var rowdata = g.getRow(rowParm);
  6190. g._removeData(rowParm);
  6191. g.reRender();
  6192. },
  6193. deleteRange: function (rowArr)
  6194. {
  6195. var g = this, p = this.options;
  6196. $.each(rowArr, function ()
  6197. {
  6198. g._deleteData(this);
  6199. });
  6200. g.reRender();
  6201. },
  6202. deleteRow: function (rowParm)
  6203. {
  6204. var g = this, p = this.options;
  6205. var rowdata = g.getRow(rowParm);
  6206. if (!rowdata) return;
  6207. g._deleteData(rowdata);
  6208. g.reRender();
  6209. g.isDataChanged = true;
  6210. },
  6211. _deleteData: function (rowParm)
  6212. {
  6213. var g = this, p = this.options;
  6214. var rowdata = g.getRow(rowParm);
  6215. rowdata[p.statusName] = 'delete';
  6216. if (p.tree)
  6217. {
  6218. var children = g.getChildren(rowdata, true);
  6219. if (children)
  6220. {
  6221. for (var i = 0, l = children.length; i < l; i++)
  6222. {
  6223. children[i][p.statusName] = 'delete';
  6224. }
  6225. }
  6226. }
  6227. g.deletedRows = g.deletedRows || [];
  6228. g.deletedRows.push(rowdata);
  6229. g._removeSelected(rowdata);
  6230. },
  6231. /*
  6232. @param {arg} column index、column name、column、单元格
  6233. @param {value} 值
  6234. @param {rowParm} rowindex或者rowdata
  6235. */
  6236. updateCell: function (arg, value, rowParm)
  6237. {
  6238. var g = this, p = this.options;
  6239. var column, cellObj, rowdata;
  6240. if (typeof (arg) == "string") //column name
  6241. {
  6242. for (var i = 0, l = g.columns.length; i < l; i++)
  6243. {
  6244. if (g.columns[i].name == arg)
  6245. {
  6246. g.updateCell(i, value, rowParm);
  6247. }
  6248. }
  6249. return;
  6250. }
  6251. if (typeof (arg) == "number")
  6252. {
  6253. column = g.columns[arg];
  6254. rowdata = g.getRow(rowParm);
  6255. cellObj = g.getCellObj(rowdata, column);
  6256. }
  6257. else if (typeof (arg) == "object" && arg['__id'])
  6258. {
  6259. column = arg;
  6260. rowdata = g.getRow(rowParm);
  6261. cellObj = g.getCellObj(rowdata, column);
  6262. }
  6263. else
  6264. {
  6265. cellObj = arg;
  6266. var ids = cellObj.id.split('|');
  6267. var columnid = ids[ids.length - 1];
  6268. column = g._columns[columnid];
  6269. var row = $(cellObj).parent();
  6270. rowdata = rowdata || g.getRow(row[0]);
  6271. }
  6272. if (value != null && column.name)
  6273. {
  6274. rowdata[column.name] = value;
  6275. if (rowdata[p.statusName] != 'add')
  6276. rowdata[p.statusName] = 'update';
  6277. g.isDataChanged = true;
  6278. }
  6279. g.reRender({ rowdata: rowdata, column: column });
  6280. },
  6281. addRows: function (rowdataArr, neardata, isBefore, parentRowData)
  6282. {
  6283. var g = this, p = this.options;
  6284. $(rowdataArr).each(function ()
  6285. {
  6286. g.addRow(this, neardata, isBefore, parentRowData);
  6287. });
  6288. },
  6289. _createRowid: function ()
  6290. {
  6291. return "r" + (1000 + this.recordNumber);
  6292. },
  6293. _isRowId: function (str)
  6294. {
  6295. return (str in this.records);
  6296. },
  6297. _addNewRecord: function (o, previd, pid)
  6298. {
  6299. var g = this, p = this.options;
  6300. g.recordNumber++;
  6301. o['__id'] = g._createRowid();
  6302. o['__previd'] = previd;
  6303. if (previd && previd != -1)
  6304. {
  6305. var prev = g.records[previd];
  6306. if (prev['__nextid'] && prev['__nextid'] != -1)
  6307. {
  6308. var prevOldNext = g.records[prev['__nextid']];
  6309. if (prevOldNext)
  6310. prevOldNext['__previd'] = o['__id'];
  6311. }
  6312. prev['__nextid'] = o['__id'];
  6313. o['__index'] = prev['__index'] + 1;
  6314. }
  6315. else
  6316. {
  6317. o['__index'] = 0;
  6318. }
  6319. if (p.tree)
  6320. {
  6321. if (pid && pid != -1)
  6322. {
  6323. var parent = g.records[pid];
  6324. o['__pid'] = pid;
  6325. o['__level'] = parent['__level'] + 1;
  6326. }
  6327. else
  6328. {
  6329. o['__pid'] = -1;
  6330. o['__level'] = 1;
  6331. }
  6332. o['__hasChildren'] = o[p.tree.childrenName] ? true : false;
  6333. }
  6334. if (o[p.statusName] != "add")
  6335. o[p.statusName] = "nochanged";
  6336. g.rows[o['__index']] = o;
  6337. g.records[o['__id']] = o;
  6338. return o;
  6339. },
  6340. //将原始的数据转换成适合 grid的行数据
  6341. _getRows: function (data)
  6342. {
  6343. var g = this, p = this.options;
  6344. var targetData = [];
  6345. function load(data)
  6346. {
  6347. if (!data || !data.length) return;
  6348. for (var i = 0, l = data.length; i < l; i++)
  6349. {
  6350. var o = data[i];
  6351. targetData.push(o);
  6352. if (o[p.tree.childrenName])
  6353. {
  6354. load(o[p.tree.childrenName]);
  6355. }
  6356. }
  6357. }
  6358. load(data);
  6359. return targetData;
  6360. },
  6361. _updateGridData: function ()
  6362. {
  6363. var g = this, p = this.options;
  6364. g.recordNumber = 0;
  6365. g.rows = [];
  6366. g.records = {};
  6367. var previd = -1;
  6368. function load(data, pid)
  6369. {
  6370. if (!data || !data.length) return;
  6371. for (var i = 0, l = data.length; i < l; i++)
  6372. {
  6373. var o = data[i];
  6374. g.formatRecord(o);
  6375. if (o[p.statusName] == "delete") continue;
  6376. g._addNewRecord(o, previd, pid);
  6377. previd = o['__id'];
  6378. if (o['__hasChildren'])
  6379. {
  6380. load(o[p.tree.childrenName], o['__id']);
  6381. }
  6382. }
  6383. }
  6384. load(g.currentData[p.root], -1);
  6385. return g.rows;
  6386. },
  6387. _moveData: function (from, to, isAfter)
  6388. {
  6389. var g = this, p = this.options;
  6390. var fromRow = g.getRow(from);
  6391. var toRow = g.getRow(to);
  6392. var fromIndex, toIndex;
  6393. var listdata = g._getParentChildren(fromRow);
  6394. fromIndex = $.inArray(fromRow, listdata);
  6395. listdata.splice(fromIndex, 1);
  6396. listdata = g._getParentChildren(toRow);
  6397. toIndex = $.inArray(toRow, listdata);
  6398. listdata.splice(toIndex + (isAfter ? 1 : 0), 0, fromRow);
  6399. },
  6400. move: function (from, to, isAfter)
  6401. {
  6402. this._moveData(from, to, isAfter);
  6403. this.reRender();
  6404. },
  6405. moveRange: function (rows, to, isAfter)
  6406. {
  6407. for (var i in rows)
  6408. {
  6409. this._moveData(rows[i], to, isAfter);
  6410. }
  6411. this.reRender();
  6412. },
  6413. up: function (rowParm)
  6414. {
  6415. var g = this, p = this.options;
  6416. var rowdata = g.getRow(rowParm);
  6417. var listdata = g._getParentChildren(rowdata);
  6418. var index = $.inArray(rowdata, listdata);
  6419. if (index == -1 || index == 0) return;
  6420. var selected = g.getSelected();
  6421. g.move(rowdata, listdata[index - 1], false);
  6422. g.select(selected);
  6423. },
  6424. down: function (rowParm)
  6425. {
  6426. var g = this, p = this.options;
  6427. var rowdata = g.getRow(rowParm);
  6428. var listdata = g._getParentChildren(rowdata);
  6429. var index = $.inArray(rowdata, listdata);
  6430. if (index == -1 || index == listdata.length - 1) return;
  6431. var selected = g.getSelected();
  6432. g.move(rowdata, listdata[index + 1], true);
  6433. g.select(selected);
  6434. },
  6435. addRow: function (rowdata, neardata, isBefore, parentRowData)
  6436. {
  6437. var g = this, p = this.options;
  6438. rowdata = rowdata || {};
  6439. g._addData(rowdata, parentRowData, neardata, isBefore);
  6440. g.reRender();
  6441. //标识状态
  6442. rowdata[p.statusName] = 'add';
  6443. if (p.tree)
  6444. {
  6445. var children = g.getChildren(rowdata, true);
  6446. if (children)
  6447. {
  6448. for (var i = 0, l = children.length; i < l; i++)
  6449. {
  6450. children[i][p.statusName] = 'add';
  6451. }
  6452. }
  6453. }
  6454. g.isDataChanged = true;
  6455. p.total = p.total ? (p.total + 1) : 1;
  6456. p.pageCount = Math.ceil(p.total / p.pageSize);
  6457. g._buildPager();
  6458. g.trigger('SysGridHeightChanged');
  6459. g.trigger('afterAddRow', [rowdata]);
  6460. return rowdata;
  6461. },
  6462. updateRow: function (rowDom, newRowData)
  6463. {
  6464. var g = this, p = this.options;
  6465. var rowdata = g.getRow(rowDom);
  6466. //标识状态
  6467. g.isDataChanged = true;
  6468. $.extend(rowdata, newRowData || {});
  6469. if (rowdata[p.statusName] != 'add')
  6470. rowdata[p.statusName] = 'update';
  6471. g.reRender.ligerDefer(g, 10, [{ rowdata: rowdata}]);
  6472. return rowdata;
  6473. },
  6474. setCellEditing: function (rowdata, column, editing)
  6475. {
  6476. var g = this, p = this.options;
  6477. var cell = g.getCellObj(rowdata, column);
  6478. var methodName = editing ? 'addClass' : 'removeClass';
  6479. $(cell)[methodName]("l-grid-row-cell-editing");
  6480. if (rowdata['__id'] != 0)
  6481. {
  6482. var prevrowobj = $(g.getRowObj(rowdata['__id'])).prev();
  6483. if (!prevrowobj.length) return;
  6484. var prevrow = g.getRow(prevrowobj[0]);
  6485. var cellprev = g.getCellObj(prevrow, column);
  6486. if (!cellprev) return;
  6487. $(cellprev)[methodName]("l-grid-row-cell-editing-topcell");
  6488. }
  6489. if (column['__previd'] != -1 && column['__previd'] != null)
  6490. {
  6491. var cellprev = $(g.getCellObj(rowdata, column)).prev();
  6492. $(cellprev)[methodName]("l-grid-row-cell-editing-leftcell");
  6493. }
  6494. },
  6495. reRender: function (e)
  6496. {
  6497. var g = this, p = this.options;
  6498. e = e || {};
  6499. var rowdata = e.rowdata, column = e.column;
  6500. if (column && (column.isdetail || column.ischeckbox)) return;
  6501. if (rowdata && rowdata[p.statusName] == "delete") return;
  6502. if (rowdata && column)
  6503. {
  6504. var cell = g.getCellObj(rowdata, column);
  6505. $(cell).html(g._getCellHtml(rowdata, column));
  6506. if (!column.issystem)
  6507. g.setCellEditing(rowdata, column, false);
  6508. }
  6509. else if (rowdata)
  6510. {
  6511. $(g.columns).each(function () { g.reRender({ rowdata: rowdata, column: this }); });
  6512. }
  6513. else if (column)
  6514. {
  6515. for (var rowid in g.records) { g.reRender({ rowdata: g.records[rowid], column: column }); }
  6516. for (var i = 0; i < g.totalNumber; i++)
  6517. {
  6518. var tobj = document.getElementById(g.id + "|total" + i + "|" + column['__id']);
  6519. $("div:first", tobj).html(g._getTotalCellContent(column, g.groups && g.groups[i] ? g.groups[i] : g.currentData[p.root]));
  6520. }
  6521. }
  6522. else
  6523. {
  6524. g._showData();
  6525. }
  6526. },
  6527. getData: function (status, removeStatus)
  6528. {
  6529. var g = this, p = this.options;
  6530. var data = [];
  6531. for (var rowid in g.records)
  6532. {
  6533. var o = $.extend(true, {}, g.records[rowid]);
  6534. if (o[p.statusName] == status || status == undefined)
  6535. {
  6536. data.push(g.formatRecord(o, removeStatus));
  6537. }
  6538. }
  6539. return data;
  6540. },
  6541. //格式化数据
  6542. formatRecord: function (o, removeStatus)
  6543. {
  6544. delete o['__id'];
  6545. delete o['__previd'];
  6546. delete o['__nextid'];
  6547. delete o['__index'];
  6548. if (this.options.tree)
  6549. {
  6550. delete o['__pid'];
  6551. delete o['__level'];
  6552. delete o['__hasChildren'];
  6553. }
  6554. if (removeStatus) delete o[this.options.statusName];
  6555. return o;
  6556. },
  6557. getUpdated: function ()
  6558. {
  6559. return this.getData('update', true);
  6560. },
  6561. getDeleted: function ()
  6562. {
  6563. return this.deletedRows;
  6564. },
  6565. getAdded: function ()
  6566. {
  6567. return this.getData('add', true);
  6568. },
  6569. getColumn: function (columnParm)
  6570. {
  6571. var g = this, p = this.options;
  6572. if (typeof columnParm == "string") // column id
  6573. {
  6574. if (g._isColumnId(columnParm))
  6575. return g._columns[columnParm];
  6576. else
  6577. return g.columns[parseInt(columnParm)];
  6578. }
  6579. else if (typeof (columnParm) == "number") //column index
  6580. {
  6581. return g.columns[columnParm];
  6582. }
  6583. else if (typeof columnParm == "object" && columnParm.nodeType == 1) //column header cell
  6584. {
  6585. var ids = columnParm.id.split('|');
  6586. var columnid = ids[ids.length - 1];
  6587. return g._columns[columnid];
  6588. }
  6589. return columnParm;
  6590. },
  6591. getColumnType: function (columnname)
  6592. {
  6593. var g = this, p = this.options;
  6594. for (i = 0; i < g.columns.length; i++)
  6595. {
  6596. if (g.columns[i].name == columnname)
  6597. {
  6598. if (g.columns[i].type) return g.columns[i].type;
  6599. return "string";
  6600. }
  6601. }
  6602. return null;
  6603. },
  6604. //是否包含汇总
  6605. isTotalSummary: function ()
  6606. {
  6607. var g = this, p = this.options;
  6608. for (var i = 0; i < g.columns.length; i++)
  6609. {
  6610. if (g.columns[i].totalSummary) return true;
  6611. }
  6612. return false;
  6613. },
  6614. //根据层次获取列集合
  6615. //如果columnLevel为空,获取叶节点集合
  6616. getColumns: function (columnLevel)
  6617. {
  6618. var g = this, p = this.options;
  6619. var columns = [];
  6620. for (var id in g._columns)
  6621. {
  6622. var col = g._columns[id];
  6623. if (columnLevel != undefined)
  6624. {
  6625. if (col['__level'] == columnLevel) columns.push(col);
  6626. }
  6627. else
  6628. {
  6629. if (col['__leaf']) columns.push(col);
  6630. }
  6631. }
  6632. return columns;
  6633. },
  6634. //改变排序
  6635. changeSort: function (columnName, sortOrder)
  6636. {
  6637. var g = this, p = this.options;
  6638. if (g.loading) return true;
  6639. if (p.dataAction == "local")
  6640. {
  6641. var columnType = g.getColumnType(columnName);
  6642. if (!g.sortedData)
  6643. g.sortedData = g.filteredData;
  6644. if (p.sortName == columnName)
  6645. {
  6646. g.sortedData[p.root].reverse();
  6647. } else
  6648. {
  6649. g.sortedData[p.root].sort(function (data1, data2)
  6650. {
  6651. return g._compareData(data1, data2, columnName, columnType);
  6652. });
  6653. }
  6654. if (p.usePager)
  6655. g.currentData = g._getCurrentPageData(g.sortedData);
  6656. else
  6657. g.currentData = g.sortedData;
  6658. g._showData();
  6659. }
  6660. p.sortName = columnName;
  6661. p.sortOrder = sortOrder;
  6662. if (p.dataAction == "server")
  6663. {
  6664. g.loadData(p.where);
  6665. }
  6666. },
  6667. //改变分页
  6668. changePage: function (ctype)
  6669. {
  6670. var g = this, p = this.options;
  6671. if (g.loading) return true;
  6672. if (p.dataAction != "local" && g.isDataChanged && !confirm(p.isContinueByDataChanged))
  6673. return false;
  6674. p.pageCount = parseInt($(".pcontrol span", g.toolbar).html());
  6675. switch (ctype)
  6676. {
  6677. case 'first': if (p.page == 1) return; p.newPage = 1; break;
  6678. case 'prev': if (p.page == 1) return; if (p.page > 1) p.newPage = parseInt(p.page) - 1; break;
  6679. case 'next': if (p.page >= p.pageCount) return; p.newPage = parseInt(p.page) + 1; break;
  6680. case 'last': if (p.page >= p.pageCount) return; p.newPage = p.pageCount; break;
  6681. case 'input':
  6682. var nv = parseInt($('.pcontrol input', g.toolbar).val());
  6683. if (isNaN(nv)) nv = 1;
  6684. if (nv < 1) nv = 1;
  6685. else if (nv > p.pageCount) nv = p.pageCount;
  6686. $('.pcontrol input', g.toolbar).val(nv);
  6687. p.newPage = nv;
  6688. break;
  6689. }
  6690. if (p.newPage == p.page) return false;
  6691. if (p.newPage == 1)
  6692. {
  6693. $(".l-bar-btnfirst span", g.toolbar).addClass("l-disabled");
  6694. $(".l-bar-btnprev span", g.toolbar).addClass("l-disabled");
  6695. }
  6696. else
  6697. {
  6698. $(".l-bar-btnfirst span", g.toolbar).removeClass("l-disabled");
  6699. $(".l-bar-btnprev span", g.toolbar).removeClass("l-disabled");
  6700. }
  6701. if (p.newPage == p.pageCount)
  6702. {
  6703. $(".l-bar-btnlast span", g.toolbar).addClass("l-disabled");
  6704. $(".l-bar-btnnext span", g.toolbar).addClass("l-disabled");
  6705. }
  6706. else
  6707. {
  6708. $(".l-bar-btnlast span", g.toolbar).removeClass("l-disabled");
  6709. $(".l-bar-btnnext span", g.toolbar).removeClass("l-disabled");
  6710. }
  6711. g.trigger('changePage', [p.newPage]);
  6712. if (p.dataAction == "server")
  6713. {
  6714. g.loadData(p.where);
  6715. }
  6716. else
  6717. {
  6718. g.currentData = g._getCurrentPageData(g.filteredData);
  6719. g._showData();
  6720. }
  6721. },
  6722. getSelectedRow: function ()
  6723. {
  6724. for (var i in this.selected)
  6725. {
  6726. var o = this.selected[i];
  6727. if (o['__id'] in this.records)
  6728. return o;
  6729. }
  6730. return null;
  6731. },
  6732. getSelectedRows: function ()
  6733. {
  6734. var arr = [];
  6735. for (var i in this.selected)
  6736. {
  6737. var o = this.selected[i];
  6738. if (o['__id'] in this.records)
  6739. arr.push(o);
  6740. }
  6741. return arr;
  6742. },
  6743. getSelectedRowObj: function ()
  6744. {
  6745. for (var i in this.selected)
  6746. {
  6747. var o = this.selected[i];
  6748. if (o['__id'] in this.records)
  6749. return this.getRowObj(o);
  6750. }
  6751. return null;
  6752. },
  6753. getSelectedRowObjs: function ()
  6754. {
  6755. var arr = [];
  6756. for (var i in this.selected)
  6757. {
  6758. var o = this.selected[i];
  6759. if (o['__id'] in this.records)
  6760. arr.push(this.getRowObj(o));
  6761. }
  6762. return arr;
  6763. },
  6764. getCellObj: function (rowParm, column)
  6765. {
  6766. var rowdata = this.getRow(rowParm);
  6767. column = this.getColumn(column);
  6768. return document.getElementById(this._getCellDomId(rowdata, column));
  6769. },
  6770. getRowObj: function (rowParm, frozen)
  6771. {
  6772. var g = this, p = this.options;
  6773. if (rowParm == null) return null;
  6774. if (typeof (rowParm) == "string")
  6775. {
  6776. if (g._isRowId(rowParm))
  6777. return document.getElementById(g.id + (frozen ? "|1|" : "|2|") + rowParm);
  6778. else
  6779. return document.getElementById(g.id + (frozen ? "|1|" : "|2|") + g.rows[parseInt(rowParm)]['__id']);
  6780. }
  6781. else if (typeof (rowParm) == "number")
  6782. {
  6783. return document.getElementById(g.id + (frozen ? "|1|" : "|2|") + g.rows[rowParm]['__id']);
  6784. }
  6785. else if (typeof (rowParm) == "object" && rowParm['__id']) //rowdata
  6786. {
  6787. return g.getRowObj(rowParm['__id'], frozen);
  6788. }
  6789. return rowParm;
  6790. },
  6791. getRow: function (rowParm)
  6792. {
  6793. var g = this, p = this.options;
  6794. if (rowParm == null) return null;
  6795. if (typeof (rowParm) == "string")
  6796. {
  6797. if (g._isRowId(rowParm))
  6798. return g.records[rowParm];
  6799. else
  6800. return g.rows[parseInt(rowParm)];
  6801. }
  6802. else if (typeof (rowParm) == "number")
  6803. {
  6804. return g.rows[parseInt(rowParm)];
  6805. }
  6806. else if (typeof (rowParm) == "object" && rowParm.nodeType == 1 && !rowParm['__id']) //dom对象
  6807. {
  6808. return g._getRowByDomId(rowParm.id);
  6809. }
  6810. return rowParm;
  6811. },
  6812. _setColumnVisible: function (column, hide)
  6813. {
  6814. var g = this, p = this.options;
  6815. if (!hide) //显示
  6816. {
  6817. column._hide = false;
  6818. document.getElementById(column['__domid']).style.display = "";
  6819. //判断分组列是否隐藏,如果隐藏了则显示出来
  6820. if (column['__pid'] != -1)
  6821. {
  6822. var pcol = g._columns[column['__pid']];
  6823. if (pcol._hide)
  6824. {
  6825. document.getElementById(pcol['__domid']).style.display = "";
  6826. this._setColumnVisible(pcol, hide);
  6827. }
  6828. }
  6829. }
  6830. else //隐藏
  6831. {
  6832. column._hide = true;
  6833. document.getElementById(column['__domid']).style.display = "none";
  6834. //判断同分组的列是否都隐藏,如果是则隐藏分组列
  6835. if (column['__pid'] != -1)
  6836. {
  6837. var hideall = true;
  6838. var pcol = this._columns[column['__pid']];
  6839. for (var i = 0; pcol && i < pcol.columns.length; i++)
  6840. {
  6841. if (!pcol.columns[i]._hide)
  6842. {
  6843. hideall = false;
  6844. break;
  6845. }
  6846. }
  6847. if (hideall)
  6848. {
  6849. pcol._hide = true;
  6850. document.getElementById(pcol['__domid']).style.display = "none";
  6851. this._setColumnVisible(pcol, hide);
  6852. }
  6853. }
  6854. }
  6855. },
  6856. //显示隐藏列
  6857. toggleCol: function (columnparm, visible, toggleByPopup)
  6858. {
  6859. var g = this, p = this.options;
  6860. var column;
  6861. if (typeof (columnparm) == "number")
  6862. {
  6863. column = g.columns[columnparm];
  6864. }
  6865. else if (typeof (columnparm) == "object" && columnparm['__id'])
  6866. {
  6867. column = columnparm;
  6868. }
  6869. else if (typeof (columnparm) == "string")
  6870. {
  6871. if (g._isColumnId(columnparm)) // column id
  6872. {
  6873. column = g._columns[columnparm];
  6874. }
  6875. else // column name
  6876. {
  6877. $(g.columns).each(function ()
  6878. {
  6879. if (this.name == columnparm)
  6880. g.toggleCol(this, visible, toggleByPopup);
  6881. });
  6882. return;
  6883. }
  6884. }
  6885. if (!column) return;
  6886. var columnindex = column['__leafindex'];
  6887. var headercell = document.getElementById(column['__domid']);
  6888. if (!headercell) return;
  6889. headercell = $(headercell);
  6890. var cells = [];
  6891. for (var i in g.rows)
  6892. {
  6893. var obj = g.getCellObj(g.rows[i], column);
  6894. if (obj) cells.push(obj);
  6895. }
  6896. for (var i = 0; i < g.totalNumber; i++)
  6897. {
  6898. var tobj = document.getElementById(g.id + "|total" + i + "|" + column['__id']);
  6899. if (tobj) cells.push(tobj);
  6900. }
  6901. var colwidth = column._width;
  6902. //显示列
  6903. if (visible && column._hide)
  6904. {
  6905. if (column.frozen)
  6906. g.f.gridtablewidth += (parseInt(colwidth) + 1);
  6907. else
  6908. g.gridtablewidth += (parseInt(colwidth) + 1);
  6909. g._setColumnVisible(column, false);
  6910. $(cells).show();
  6911. }
  6912. //隐藏列
  6913. else if (!visible && !column._hide)
  6914. {
  6915. if (column.frozen)
  6916. g.f.gridtablewidth -= (parseInt(colwidth) + 1);
  6917. else
  6918. g.gridtablewidth -= (parseInt(colwidth) + 1);
  6919. g._setColumnVisible(column, true);
  6920. $(cells).hide();
  6921. }
  6922. if (column.frozen)
  6923. {
  6924. $("div:first", g.f.gridheader).width(g.f.gridtablewidth);
  6925. $("div:first", g.f.gridbody).width(g.f.gridtablewidth);
  6926. }
  6927. else
  6928. {
  6929. $("div:first", g.gridheader).width(g.gridtablewidth + 40);
  6930. $("div:first", g.gridbody).width(g.gridtablewidth);
  6931. }
  6932. g._updateFrozenWidth();
  6933. if (!toggleByPopup)
  6934. {
  6935. $(':checkbox[columnindex=' + columnindex + "]", g.popup).each(function ()
  6936. {
  6937. this.checked = visible;
  6938. if ($.fn.ligerCheckBox)
  6939. {
  6940. var checkboxmanager = $(this).ligerGetCheckBoxManager();
  6941. if (checkboxmanager) checkboxmanager.updateStyle();
  6942. }
  6943. });
  6944. }
  6945. },
  6946. //设置列宽
  6947. setColumnWidth: function (columnparm, newwidth)
  6948. {
  6949. var g = this, p = this.options;
  6950. if (!newwidth) return;
  6951. newwidth = parseInt(newwidth, 10);
  6952. var column;
  6953. if (typeof (columnparm) == "number")
  6954. {
  6955. column = g.columns[columnparm];
  6956. }
  6957. else if (typeof (columnparm) == "object" && columnparm['__id'])
  6958. {
  6959. column = columnparm;
  6960. }
  6961. else if (typeof (columnparm) == "string")
  6962. {
  6963. if (g._isColumnId(columnparm)) // column id
  6964. {
  6965. column = g._columns[columnparm];
  6966. }
  6967. else // column name
  6968. {
  6969. $(g.columns).each(function ()
  6970. {
  6971. if (this.name == columnparm)
  6972. g.setColumnWidth(this, newwidth);
  6973. });
  6974. return;
  6975. }
  6976. }
  6977. if (!column) return;
  6978. var mincolumnwidth = p.minColumnWidth;
  6979. if (column.minWidth) mincolumnwidth = column.minWidth;
  6980. newwidth = newwidth < mincolumnwidth ? mincolumnwidth : newwidth;
  6981. var diff = newwidth - column._width;
  6982. if (g.trigger('beforeChangeColumnWidth', [column, newwidth]) == false) return;
  6983. column._width = newwidth;
  6984. if (column.frozen)
  6985. {
  6986. g.f.gridtablewidth += diff;
  6987. $("div:first", g.f.gridheader).width(g.f.gridtablewidth);
  6988. $("div:first", g.f.gridbody).width(g.f.gridtablewidth);
  6989. }
  6990. else
  6991. {
  6992. g.gridtablewidth += diff;
  6993. $("div:first", g.gridheader).width(g.gridtablewidth + 40);
  6994. $("div:first", g.gridbody).width(g.gridtablewidth);
  6995. }
  6996. $(document.getElementById(column['__domid'])).css('width', newwidth);
  6997. var cells = [];
  6998. for (var rowid in g.records)
  6999. {
  7000. var obj = g.getCellObj(g.records[rowid], column);
  7001. if (obj) cells.push(obj);
  7002. if (!g.enabledDetailEdit() && g.editors[rowid] && g.editors[rowid][column['__id']])
  7003. {
  7004. var o = g.editors[rowid][column['__id']];
  7005. if (o.editor.resize) o.editor.resize(o.input, newwidth, o.container.height(), o.editParm);
  7006. }
  7007. }
  7008. for (var i = 0; i < g.totalNumber; i++)
  7009. {
  7010. var tobj = document.getElementById(g.id + "|total" + i + "|" + column['__id']);
  7011. if (tobj) cells.push(tobj);
  7012. }
  7013. $(cells).css('width', newwidth).find("> div.l-grid-row-cell-inner:first").css('width', newwidth - 8);
  7014. g._updateFrozenWidth();
  7015. g.trigger('afterChangeColumnWidth', [column, newwidth]);
  7016. },
  7017. //改变列表头内容
  7018. changeHeaderText: function (columnparm, headerText)
  7019. {
  7020. var g = this, p = this.options;
  7021. var column;
  7022. if (typeof (columnparm) == "number")
  7023. {
  7024. column = g.columns[columnparm];
  7025. }
  7026. else if (typeof (columnparm) == "object" && columnparm['__id'])
  7027. {
  7028. column = columnparm;
  7029. }
  7030. else if (typeof (columnparm) == "string")
  7031. {
  7032. if (g._isColumnId(columnparm)) // column id
  7033. {
  7034. column = g._columns[columnparm];
  7035. }
  7036. else // column name
  7037. {
  7038. $(g.columns).each(function ()
  7039. {
  7040. if (this.name == columnparm)
  7041. g.changeHeaderText(this, headerText);
  7042. });
  7043. return;
  7044. }
  7045. }
  7046. if (!column) return;
  7047. var columnindex = column['__leafindex'];
  7048. var headercell = document.getElementById(column['__domid']);
  7049. $(".l-grid-hd-cell-text", headercell).html(headerText);
  7050. if (p.allowHideColumn)
  7051. {
  7052. $(':checkbox[columnindex=' + columnindex + "]", g.popup).parent().next().html(headerText);
  7053. }
  7054. },
  7055. //改变列的位置
  7056. changeCol: function (from, to, isAfter)
  7057. {
  7058. var g = this, p = this.options;
  7059. if (!from || !to) return;
  7060. var fromCol = g.getColumn(from);
  7061. var toCol = g.getColumn(to);
  7062. fromCol.frozen = toCol.frozen;
  7063. var fromColIndex, toColIndex;
  7064. var fromColumns = fromCol['__pid'] == -1 ? p.columns : g._columns[fromCol['__pid']].columns;
  7065. var toColumns = toCol['__pid'] == -1 ? p.columns : g._columns[toCol['__pid']].columns;
  7066. fromColIndex = $.inArray(fromCol, fromColumns);
  7067. toColIndex = $.inArray(toCol, toColumns);
  7068. var sameParent = fromColumns == toColumns;
  7069. var sameLevel = fromCol['__level'] == toCol['__level'];
  7070. toColumns.splice(toColIndex + (isAfter ? 1 : 0), 0, fromCol);
  7071. if (!sameParent)
  7072. {
  7073. fromColumns.splice(fromColIndex, 1);
  7074. }
  7075. else
  7076. {
  7077. if (isAfter) fromColumns.splice(fromColIndex, 1);
  7078. else fromColumns.splice(fromColIndex + 1, 1);
  7079. }
  7080. g._setColumns(p.columns);
  7081. g.reRender();
  7082. },
  7083. collapseDetail: function (rowParm)
  7084. {
  7085. var g = this, p = this.options;
  7086. var rowdata = g.getRow(rowParm);
  7087. if (!rowdata) return;
  7088. for (var i = 0, l = g.columns.length; i < l; i++)
  7089. {
  7090. if (g.columns[i].isdetail)
  7091. {
  7092. var row = g.getRowObj(rowdata);
  7093. var cell = g.getCellObj(rowdata, g.columns[i]);
  7094. $(row).next("tr.l-grid-detailpanel").hide();
  7095. $(".l-grid-row-cell-detailbtn:first", cell).removeClass("l-open");
  7096. g.trigger('SysGridHeightChanged');
  7097. return;
  7098. }
  7099. }
  7100. },
  7101. extendDetail: function (rowParm)
  7102. {
  7103. var g = this, p = this.options;
  7104. var rowdata = g.getRow(rowParm);
  7105. if (!rowdata) return;
  7106. for (var i = 0, l = g.columns; i < l; i++)
  7107. {
  7108. if (g.columns[i].isdetail)
  7109. {
  7110. var row = g.getRowObj(rowdata);
  7111. var cell = g.getCellObj(rowdata, g.columns[i]);
  7112. $(row).next("tr.l-grid-detailpanel").show();
  7113. $(".l-grid-row-cell-detailbtn:first", cell).addClass("l-open");
  7114. g.trigger('SysGridHeightChanged');
  7115. return;
  7116. }
  7117. }
  7118. },
  7119. getParent: function (rowParm)
  7120. {
  7121. var g = this, p = this.options;
  7122. if (!p.tree) return null;
  7123. var rowdata = g.getRow(rowParm);
  7124. if (!rowdata) return null;
  7125. if (rowdata['__pid'] in g.records) return g.records[rowdata['__pid']];
  7126. else return null;
  7127. },
  7128. getChildren: function (rowParm, deep)
  7129. {
  7130. var g = this, p = this.options;
  7131. if (!p.tree) return null;
  7132. var rowData = g.getRow(rowParm);
  7133. if (!rowData) return null;
  7134. var arr = [];
  7135. function loadChildren(data)
  7136. {
  7137. if (data[p.tree.childrenName])
  7138. {
  7139. for (var i = 0, l = data[p.tree.childrenName].length; i < l; i++)
  7140. {
  7141. var o = data[p.tree.childrenName][i];
  7142. if (o['__status'] == 'delete') continue;
  7143. arr.push(o);
  7144. if (deep)
  7145. loadChildren(o);
  7146. }
  7147. }
  7148. }
  7149. loadChildren(rowData);
  7150. return arr;
  7151. },
  7152. isLeaf: function (rowParm)
  7153. {
  7154. var g = this, p = this.options;
  7155. var rowdata = g.getRow(rowParm);
  7156. if (!rowdata) return;
  7157. return rowdata['__hasChildren'] ? false : true;
  7158. },
  7159. hasChildren: function (rowParm)
  7160. {
  7161. var g = this, p = this.options;
  7162. var rowdata = this.getRow(rowParm);
  7163. if (!rowdata) return;
  7164. return (rowdata[p.tree.childrenName] && rowdata[p.tree.childrenName].length) ? true : false;
  7165. },
  7166. existRecord: function (record)
  7167. {
  7168. for (var rowid in this.records)
  7169. {
  7170. if (this.records[rowid] == record) return true;
  7171. }
  7172. return false;
  7173. },
  7174. _removeSelected: function (rowdata)
  7175. {
  7176. var g = this, p = this.options;
  7177. if (p.tree)
  7178. {
  7179. var children = g.getChildren(rowdata, true);
  7180. if (children)
  7181. {
  7182. for (var i = 0, l = children.length; i < l; i++)
  7183. {
  7184. var index2 = $.inArray(children[i], g.selected);
  7185. if (index2 != -1) g.selected.splice(index2, 1);
  7186. }
  7187. }
  7188. }
  7189. var index = $.inArray(rowdata, g.selected);
  7190. if (index != -1) g.selected.splice(index, 1);
  7191. },
  7192. _getParentChildren: function (rowParm)
  7193. {
  7194. var g = this, p = this.options;
  7195. var rowdata = g.getRow(rowParm);
  7196. var listdata;
  7197. if (p.tree && g.existRecord(rowdata) && rowdata['__pid'] in g.records)
  7198. {
  7199. listdata = g.records[rowdata['__pid']][p.tree.childrenName];
  7200. }
  7201. else
  7202. {
  7203. listdata = g.currentData[p.root];
  7204. }
  7205. return listdata;
  7206. },
  7207. _removeData: function (rowdata)
  7208. {
  7209. var g = this, p = this.options;
  7210. var listdata = g._getParentChildren(rowdata);
  7211. var index = $.inArray(rowdata, listdata);
  7212. if (index != -1)
  7213. {
  7214. listdata.splice(index, 1);
  7215. }
  7216. g._removeSelected(rowdata);
  7217. },
  7218. _addData: function (rowdata, parentdata, neardata, isBefore)
  7219. {
  7220. var g = this, p = this.options;
  7221. var listdata = g.currentData[p.root];
  7222. if (neardata)
  7223. {
  7224. if (p.tree)
  7225. {
  7226. if (parentdata)
  7227. listdata = parentdata[p.tree.childrenName];
  7228. else if (neardata['__pid'] in g.records)
  7229. listdata = g.records[neardata['__pid']][p.tree.childrenName];
  7230. }
  7231. var index = $.inArray(neardata, listdata);
  7232. listdata.splice(index == -1 ? -1 : index + (isBefore ? 0 : 1), 0, rowdata);
  7233. }
  7234. else
  7235. {
  7236. if (p.tree && parentdata)
  7237. {
  7238. listdata = parentdata[p.tree.childrenName];
  7239. }
  7240. listdata.push(rowdata);
  7241. }
  7242. },
  7243. //移动数据(树)
  7244. //@parm [parentdata] 附加到哪一个节点下级
  7245. //@parm [neardata] 附加到哪一个节点的上方/下方
  7246. //@parm [isBefore] 是否附加到上方
  7247. _appendData: function (rowdata, parentdata, neardata, isBefore)
  7248. {
  7249. var g = this, p = this.options;
  7250. rowdata[p.statusName] = "update";
  7251. g._removeData(rowdata);
  7252. g._addData(rowdata, parentdata, neardata, isBefore);
  7253. },
  7254. appendRange: function (rows, parentdata, neardata, isBefore)
  7255. {
  7256. var g = this, p = this.options;
  7257. var toRender = false;
  7258. $.each(rows, function (i, item)
  7259. {
  7260. if (item['__id'] && g.existRecord(item))
  7261. {
  7262. if (g.isLeaf(parentdata)) g.upgrade(parentdata);
  7263. g._appendData(item, parentdata, neardata, isBefore);
  7264. toRender = true;
  7265. }
  7266. else
  7267. {
  7268. g.appendRow(item, parentdata, neardata, isBefore);
  7269. }
  7270. });
  7271. if (toRender) g.reRender();
  7272. },
  7273. appendRow: function (rowdata, parentdata, neardata, isBefore)
  7274. {
  7275. var g = this, p = this.options;
  7276. if ($.isArray(rowdata))
  7277. {
  7278. g.appendRange(rowdata, parentdata, neardata, isBefore);
  7279. return;
  7280. }
  7281. if (rowdata['__id'] && g.existRecord(rowdata))
  7282. {
  7283. g._appendData(rowdata, parentdata, neardata, isBefore);
  7284. g.reRender();
  7285. return;
  7286. }
  7287. if (parentdata && g.isLeaf(parentdata)) g.upgrade(parentdata);
  7288. g.addRow(rowdata, neardata, isBefore ? true : false, parentdata);
  7289. },
  7290. upgrade: function (rowParm)
  7291. {
  7292. var g = this, p = this.options;
  7293. var rowdata = g.getRow(rowParm);
  7294. if (!rowdata || !p.tree) return;
  7295. rowdata[p.tree.childrenName] = rowdata[p.tree.childrenName] || [];
  7296. rowdata['__hasChildren'] = true;
  7297. var rowobjs = [g.getRowObj(rowdata)];
  7298. if (g.enabledFrozen()) rowobjs.push(g.getRowObj(rowdata, true));
  7299. $("> td > div > .l-grid-tree-space:last", rowobjs).addClass("l-grid-tree-link l-grid-tree-link-open");
  7300. },
  7301. demotion: function (rowParm)
  7302. {
  7303. var g = this, p = this.options;
  7304. var rowdata = g.getRow(rowParm);
  7305. if (!rowdata || !p.tree) return;
  7306. var rowobjs = [g.getRowObj(rowdata)];
  7307. if (g.enabledFrozen()) rowobjs.push(g.getRowObj(rowdata, true));
  7308. $("> td > div > .l-grid-tree-space:last", rowobjs).removeClass("l-grid-tree-link l-grid-tree-link-open l-grid-tree-link-close");
  7309. if (g.hasChildren(rowdata))
  7310. {
  7311. var children = g.getChildren(rowdata);
  7312. for (var i = 0, l = children.length; i < l; i++)
  7313. {
  7314. g.deleteRow(children[i]);
  7315. }
  7316. }
  7317. rowdata['__hasChildren'] = false;
  7318. },
  7319. collapse: function (rowParm)
  7320. {
  7321. var g = this, p = this.options;
  7322. var targetRowObj = g.getRowObj(rowParm);
  7323. var linkbtn = $(".l-grid-tree-link", targetRowObj);
  7324. if (linkbtn.hasClass("l-grid-tree-link-close")) return;
  7325. g.toggle(rowParm);
  7326. },
  7327. expand: function (rowParm)
  7328. {
  7329. var g = this, p = this.options;
  7330. var targetRowObj = g.getRowObj(rowParm);
  7331. var linkbtn = $(".l-grid-tree-link", targetRowObj);
  7332. if (linkbtn.hasClass("l-grid-tree-link-open")) return;
  7333. g.toggle(rowParm);
  7334. },
  7335. toggle: function (rowParm)
  7336. {
  7337. if (!rowParm) return;
  7338. var g = this, p = this.options;
  7339. var rowdata = g.getRow(rowParm);
  7340. var targetRowObj = [g.getRowObj(rowdata)];
  7341. if (g.enabledFrozen()) targetRowObj.push(g.getRowObj(rowdata, true));
  7342. var level = rowdata['__level'], indexInCollapsedRows;
  7343. var linkbtn = $(".l-grid-tree-link:first", targetRowObj);
  7344. var opening = true;
  7345. g.collapsedRows = g.collapsedRows || [];
  7346. if (linkbtn.hasClass("l-grid-tree-link-close")) //收缩
  7347. {
  7348. linkbtn.removeClass("l-grid-tree-link-close").addClass("l-grid-tree-link-open");
  7349. indexInCollapsedRows = $.inArray(rowdata, g.collapsedRows);
  7350. if (indexInCollapsedRows != -1) g.collapsedRows.splice(indexInCollapsedRows, 1);
  7351. }
  7352. else //折叠
  7353. {
  7354. opening = false;
  7355. linkbtn.addClass("l-grid-tree-link-close").removeClass("l-grid-tree-link-open");
  7356. indexInCollapsedRows = $.inArray(rowdata, g.collapsedRows);
  7357. if (indexInCollapsedRows == -1) g.collapsedRows.push(rowdata);
  7358. }
  7359. var children = g.getChildren(rowdata, true);
  7360. for (var i = 0, l = children.length; i < l; i++)
  7361. {
  7362. var o = children[i];
  7363. var currentRow = $([g.getRowObj(o['__id'])]);
  7364. if (g.enabledFrozen()) currentRow = currentRow.add(g.getRowObj(o['__id'], true));
  7365. if (opening)
  7366. {
  7367. $(".l-grid-tree-link", currentRow).removeClass("l-grid-tree-link-close").addClass("l-grid-tree-link-open");
  7368. currentRow.show();
  7369. }
  7370. else
  7371. {
  7372. $(".l-grid-tree-link", currentRow).removeClass("l-grid-tree-link-open").addClass("l-grid-tree-link-close");
  7373. currentRow.hide();
  7374. }
  7375. }
  7376. },
  7377. _bulid: function ()
  7378. {
  7379. var g = this;
  7380. g._clearGrid();
  7381. //创建头部
  7382. g._initBuildHeader();
  7383. //宽度高度初始化
  7384. g._initHeight();
  7385. //创建底部工具条
  7386. g._initFootbar();
  7387. //创建分页
  7388. g._buildPager();
  7389. //创建事件
  7390. g._setEvent();
  7391. },
  7392. _setColumns: function (columns)
  7393. {
  7394. var g = this;
  7395. //初始化列
  7396. g._initColumns();
  7397. //创建表头
  7398. g._initBuildGridHeader();
  7399. //创建 显示/隐藏 列 列表
  7400. g._initBuildPopup();
  7401. },
  7402. _initBuildHeader: function ()
  7403. {
  7404. var g = this, p = this.options;
  7405. if (p.title)
  7406. {
  7407. $(".l-panel-header-text", g.header).html(p.title);
  7408. if (p.headerImg)
  7409. g.header.append("<img src='" + p.headerImg + "' />").addClass("l-panel-header-hasicon");
  7410. }
  7411. else
  7412. {
  7413. g.header.hide();
  7414. }
  7415. if (p.toolbar)
  7416. {
  7417. if ($.fn.ligerToolBar)
  7418. g.toolbarManager = g.topbar.ligerToolBar(p.toolbar);
  7419. }
  7420. else
  7421. {
  7422. g.topbar.remove();
  7423. }
  7424. },
  7425. _createColumnId: function (column)
  7426. {
  7427. if (column.id != null) return column.id.toString();
  7428. return "c" + (100 + this._columnCount);
  7429. },
  7430. _isColumnId: function (str)
  7431. {
  7432. return (str in this._columns);
  7433. },
  7434. _initColumns: function ()
  7435. {
  7436. var g = this, p = this.options;
  7437. g._columns = {}; //全部列的信息
  7438. g._columnCount = 0;
  7439. g._columnLeafCount = 0;
  7440. g._columnMaxLevel = 1;
  7441. if (!p.columns) return;
  7442. function removeProp(column, props)
  7443. {
  7444. for (var i in props)
  7445. {
  7446. if (props[i] in column)
  7447. delete column[props[i]];
  7448. }
  7449. }
  7450. //设置id、pid、level、leaf,返回叶节点数,如果是叶节点,返回1
  7451. function setColumn(column, level, pid, previd)
  7452. {
  7453. removeProp(column, ['__id', '__pid', '__previd', '__nextid', '__domid', '__leaf', '__leafindex', '__level', '__colSpan', '__rowSpan']);
  7454. if (level > g._columnMaxLevel) g._columnMaxLevel = level;
  7455. g._columnCount++;
  7456. column['__id'] = g._createColumnId(column);
  7457. column['__domid'] = g.id + "|hcell|" + column['__id'];
  7458. g._columns[column['__id']] = column;
  7459. if (!column.columns || !column.columns.length)
  7460. column['__leafindex'] = g._columnLeafCount++;
  7461. column['__level'] = level;
  7462. column['__pid'] = pid;
  7463. column['__previd'] = previd;
  7464. if (!column.columns || !column.columns.length)
  7465. {
  7466. column['__leaf'] = true;
  7467. return 1;
  7468. }
  7469. var leafcount = 0;
  7470. var newid = -1;
  7471. for (var i = 0, l = column.columns.length; i < l; i++)
  7472. {
  7473. var col = column.columns[i];
  7474. leafcount += setColumn(col, level + 1, column['__id'], newid);
  7475. newid = col['__id'];
  7476. }
  7477. column['__leafcount'] = leafcount;
  7478. return leafcount;
  7479. }
  7480. var lastid = -1;
  7481. //行序号
  7482. if (p.rownumbers)
  7483. {
  7484. var frozenRownumbers = g.enabledGroup() ? false : p.frozen && p.frozenRownumbers;
  7485. var col = { isrownumber: true, issystem: true, width: p.rownumbersColWidth, frozen: frozenRownumbers };
  7486. setColumn(col, 1, -1, lastid);
  7487. lastid = col['__id'];
  7488. }
  7489. //明细列
  7490. if (g.enabledDetail())
  7491. {
  7492. var frozenDetail = g.enabledGroup() ? false : p.frozen && p.frozenDetail;
  7493. var col = { isdetail: true, issystem: true, width: p.detailColWidth, frozen: frozenDetail };
  7494. setColumn(col, 1, -1, lastid);
  7495. lastid = col['__id'];
  7496. }
  7497. //复选框列
  7498. if (g.enabledCheckbox())
  7499. {
  7500. var frozenCheckbox = g.enabledGroup() ? false : p.frozen && p.frozenCheckbox;
  7501. var col = { ischeckbox: true, issystem: true, width: p.detailColWidth, frozen: frozenCheckbox };
  7502. setColumn(col, 1, -1, lastid);
  7503. lastid = col['__id'];
  7504. }
  7505. for (var i = 0, l = p.columns.length; i < l; i++)
  7506. {
  7507. var col = p.columns[i];
  7508. setColumn(col, 1, -1, lastid);
  7509. lastid = col['__id'];
  7510. }
  7511. //设置colSpan和rowSpan
  7512. for (var id in g._columns)
  7513. {
  7514. var col = g._columns[id];
  7515. if (col['__leafcount'] > 1)
  7516. {
  7517. col['__colSpan'] = col['__leafcount'];
  7518. }
  7519. if (col['__leaf'] && col['__level'] != g._columnMaxLevel)
  7520. {
  7521. col['__rowSpan'] = g._columnMaxLevel - col['__level'] + 1;
  7522. }
  7523. }
  7524. //叶级别列的信息
  7525. g.columns = g.getColumns();
  7526. $(g.columns).each(function (i, column)
  7527. {
  7528. column.columnname = column.name;
  7529. column.columnindex = i;
  7530. column.type = column.type || "string";
  7531. column.islast = i == g.columns.length - 1;
  7532. column.isSort = column.isSort == false ? false : true;
  7533. column.frozen = column.frozen ? true : false;
  7534. column._width = g._getColumnWidth(column);
  7535. column._hide = column.hide ? true : false;
  7536. });
  7537. },
  7538. _getColumnWidth: function (column)
  7539. {
  7540. var g = this, p = this.options;
  7541. if (column._width) return column._width;
  7542. var colwidth;
  7543. if (column.width)
  7544. {
  7545. colwidth = column.width;
  7546. }
  7547. else if (p.columnWidth)
  7548. {
  7549. colwidth = p.columnWidth;
  7550. }
  7551. if (!colwidth)
  7552. {
  7553. var lwidth = 4;
  7554. if (g.enabledCheckbox()) lwidth += p.checkboxColWidth;
  7555. if (g.enabledDetail()) lwidth += p.detailColWidth;
  7556. colwidth = parseInt((g.grid.width() - lwidth) / g.columns.length);
  7557. }
  7558. if (typeof (colwidth) == "string" && colwidth.indexOf('%') > 0)
  7559. {
  7560. column._width = colwidth = parseInt(parseInt(colwidth) * 0.01 * (g.grid.width() - g.columns.length));
  7561. }
  7562. if (column.minWidth && colwidth < column.minWidth) colwidth = column.minWidth;
  7563. if (column.maxWidth && colwidth > column.maxWidth) colwidth = column.maxWidth;
  7564. column._width = colwidth;
  7565. return colwidth;
  7566. },
  7567. _createHeaderCell: function (column)
  7568. {
  7569. var g = this, p = this.options;
  7570. var jcell = $("<td class='l-grid-hd-cell'><div class='l-grid-hd-cell-inner'><span class='l-grid-hd-cell-text'></span></div></td>");
  7571. jcell.attr("id", column['__domid']);
  7572. if (!column['__leaf'])
  7573. jcell.addClass("l-grid-hd-cell-mul");
  7574. if (column.columnindex == g.columns.length - 1)
  7575. {
  7576. jcell.addClass("l-grid-hd-cell-last");
  7577. }
  7578. if (column.isrownumber)
  7579. {
  7580. jcell.addClass("l-grid-hd-cell-rownumbers");
  7581. jcell.html("<div class='l-grid-hd-cell-inner'></div>");
  7582. }
  7583. if (column.ischeckbox)
  7584. {
  7585. jcell.addClass("l-grid-hd-cell-checkbox");
  7586. jcell.html("<div class='l-grid-hd-cell-inner'><div class='l-grid-hd-cell-text l-grid-hd-cell-btn-checkbox'></div></div>");
  7587. }
  7588. if (column.isdetail)
  7589. {
  7590. jcell.addClass("l-grid-hd-cell-detail");
  7591. jcell.html("<div class='l-grid-hd-cell-inner'><div class='l-grid-hd-cell-text l-grid-hd-cell-btn-detail'></div></div>");
  7592. }
  7593. if (column.heightAlign)
  7594. {
  7595. $(".l-grid-hd-cell-inner:first", jcell).css("textAlign", column.heightAlign);
  7596. }
  7597. if (column['__colSpan']) jcell.attr("colSpan", column['__colSpan']);
  7598. if (column['__rowSpan'])
  7599. {
  7600. jcell.attr("rowSpan", column['__rowSpan']);
  7601. jcell.height(p.headerRowHeight * column['__rowSpan']);
  7602. } else
  7603. {
  7604. jcell.height(p.headerRowHeight);
  7605. }
  7606. if (column['__leaf'])
  7607. {
  7608. jcell.width(column['_width']);
  7609. jcell.attr("columnindex", column['__leafindex']);
  7610. }
  7611. if (column._hide) jcell.hide();
  7612. if (column.name) jcell.attr({ columnname: column.name });
  7613. var headerText = "";
  7614. if (column.display && column.display != "")
  7615. headerText = column.display;
  7616. else if (column.headerRender)
  7617. headerText = column.headerRender(column);
  7618. else
  7619. headerText = "&nbsp;";
  7620. $(".l-grid-hd-cell-text:first", jcell).html(headerText);
  7621. if (!column.issystem && column['__leaf'] && column.resizable !== false && $.fn.ligerResizable)
  7622. {
  7623. g.colResizable[column['__id']] = jcell.ligerResizable({ handles: 'e',
  7624. onStartResize: function (e, ev)
  7625. {
  7626. this.proxy.hide();
  7627. g.draggingline.css({ height: g.body.height(), top: 0, left: ev.pageX - g.grid.offset().left + parseInt(g.body[0].scrollLeft) }).show();
  7628. },
  7629. onResize: function (e, ev)
  7630. {
  7631. g.colresizing = true;
  7632. g.draggingline.css({ left: ev.pageX - g.grid.offset().left + parseInt(g.body[0].scrollLeft) });
  7633. $('body').add(jcell).css('cursor', 'e-resize');
  7634. },
  7635. onStopResize: function (e)
  7636. {
  7637. g.colresizing = false;
  7638. $('body').add(jcell).css('cursor', 'default');
  7639. g.draggingline.hide();
  7640. g.setColumnWidth(column, column._width + e.diffX);
  7641. return false;
  7642. }
  7643. });
  7644. }
  7645. return jcell;
  7646. },
  7647. _initBuildGridHeader: function ()
  7648. {
  7649. var g = this, p = this.options;
  7650. g.gridtablewidth = 0;
  7651. g.f.gridtablewidth = 0;
  7652. if (g.colResizable)
  7653. {
  7654. for (var i in g.colResizable)
  7655. {
  7656. g.colResizable[i].destroy();
  7657. }
  7658. g.colResizable = null;
  7659. }
  7660. g.colResizable = {};
  7661. $("tbody:first", g.gridheader).html("");
  7662. $("tbody:first", g.f.gridheader).html("");
  7663. for (var level = 1; level <= g._columnMaxLevel; level++)
  7664. {
  7665. var columns = g.getColumns(level); //获取level层次的列集合
  7666. var islast = level == g._columnMaxLevel; //是否最末级
  7667. var tr = $("<tr class='l-grid-hd-row'></tr>");
  7668. var trf = $("<tr class='l-grid-hd-row'></tr>");
  7669. if (!islast) tr.add(trf).addClass("l-grid-hd-mul");
  7670. $("tbody:first", g.gridheader).append(tr);
  7671. $("tbody:first", g.f.gridheader).append(trf);
  7672. $(columns).each(function (i, column)
  7673. {
  7674. (column.frozen ? trf : tr).append(g._createHeaderCell(column));
  7675. if (column['__leaf'])
  7676. {
  7677. var colwidth = column['_width'];
  7678. if (!column.frozen)
  7679. g.gridtablewidth += (parseInt(colwidth) ? parseInt(colwidth) : 0) + 1;
  7680. else
  7681. g.f.gridtablewidth += (parseInt(colwidth) ? parseInt(colwidth) : 0) + 1;
  7682. }
  7683. });
  7684. }
  7685. if (g._columnMaxLevel > 0)
  7686. {
  7687. var h = p.headerRowHeight * g._columnMaxLevel;
  7688. g.gridheader.add(g.f.gridheader).height(h);
  7689. if (p.rownumbers && p.frozenRownumbers) g.f.gridheader.find("td:first").height(h);
  7690. }
  7691. g._updateFrozenWidth();
  7692. $("div:first", g.gridheader).width(g.gridtablewidth + 40);
  7693. },
  7694. _initBuildPopup: function ()
  7695. {
  7696. var g = this, p = this.options;
  7697. $(':checkbox', g.popup).unbind();
  7698. $('tbody tr', g.popup).remove();
  7699. $(g.columns).each(function (i, column)
  7700. {
  7701. if (column.issystem) return;
  7702. if (column.isAllowHide == false) return;
  7703. var chk = 'checked="checked"';
  7704. if (column._hide) chk = '';
  7705. var header = column.display;
  7706. $('tbody', g.popup).append('<tr><td class="l-column-left"><input type="checkbox" ' + chk + ' class="l-checkbox" columnindex="' + i + '"/></td><td class="l-column-right">' + header + '</td></tr>');
  7707. });
  7708. if ($.fn.ligerCheckBox)
  7709. {
  7710. $('input:checkbox', g.popup).ligerCheckBox(
  7711. {
  7712. onBeforeClick: function (obj)
  7713. {
  7714. if (!obj.checked) return true;
  7715. if ($('input:checked', g.popup).length <= p.minColToggle)
  7716. return false;
  7717. return true;
  7718. }
  7719. });
  7720. }
  7721. //表头 - 显示/隐藏'列控制'按钮事件
  7722. if (p.allowHideColumn)
  7723. {
  7724. $('tr', g.popup).hover(function ()
  7725. {
  7726. $(this).addClass('l-popup-row-over');
  7727. },
  7728. function ()
  7729. {
  7730. $(this).removeClass('l-popup-row-over');
  7731. });
  7732. var onPopupCheckboxChange = function ()
  7733. {
  7734. if ($('input:checked', g.popup).length + 1 <= p.minColToggle)
  7735. {
  7736. return false;
  7737. }
  7738. g.toggleCol(parseInt($(this).attr("columnindex")), this.checked, true);
  7739. };
  7740. if ($.fn.ligerCheckBox)
  7741. $(':checkbox', g.popup).bind('change', onPopupCheckboxChange);
  7742. else
  7743. $(':checkbox', g.popup).bind('click', onPopupCheckboxChange);
  7744. }
  7745. },
  7746. _initHeight: function ()
  7747. {
  7748. var g = this, p = this.options;
  7749. if (p.height == 'auto')
  7750. {
  7751. g.gridbody.height('auto');
  7752. g.f.gridbody.height('auto');
  7753. }
  7754. if (p.width)
  7755. {
  7756. g.grid.width(p.width);
  7757. }
  7758. g._onResize.call(g);
  7759. },
  7760. _initFootbar: function ()
  7761. {
  7762. var g = this, p = this.options;
  7763. if (p.usePager)
  7764. {
  7765. //创建底部工具条 - 选择每页显示记录数
  7766. var optStr = "";
  7767. var selectedIndex = -1;
  7768. $(p.pageSizeOptions).each(function (i, item)
  7769. {
  7770. var selectedStr = "";
  7771. if (p.pageSize == item) selectedIndex = i;
  7772. optStr += "<option value='" + item + "' " + selectedStr + " >" + item + "</option>";
  7773. });
  7774. $('.l-bar-selectpagesize', g.toolbar).append("<select name='rp'>" + optStr + "</select>");
  7775. if (selectedIndex != -1) $('.l-bar-selectpagesize select', g.toolbar)[0].selectedIndex = selectedIndex;
  7776. if (p.switchPageSizeApplyComboBox && $.fn.ligerComboBox)
  7777. {
  7778. $(".l-bar-selectpagesize select", g.toolbar).ligerComboBox(
  7779. {
  7780. onBeforeSelect: function ()
  7781. {
  7782. if (p.url && g.isDataChanged && !confirm(p.isContinueByDataChanged))
  7783. return false;
  7784. return true;
  7785. },
  7786. width: 45
  7787. });
  7788. }
  7789. }
  7790. else
  7791. {
  7792. g.toolbar.hide();
  7793. }
  7794. },
  7795. _searchData: function (data, clause)
  7796. {
  7797. var g = this, p = this.options;
  7798. var newData = new Array();
  7799. for (var i = 0; i < data.length; i++)
  7800. {
  7801. if (clause(data[i], i))
  7802. {
  7803. newData[newData.length] = data[i];
  7804. }
  7805. }
  7806. return newData;
  7807. },
  7808. _clearGrid: function ()
  7809. {
  7810. var g = this, p = this.options;
  7811. for (var i in g.rows)
  7812. {
  7813. var rowobj = $(g.getRowObj(g.rows[i]));
  7814. if (g.enabledFrozen())
  7815. rowobj = rowobj.add(g.getRowObj(g.rows[i], true));
  7816. rowobj.unbind();
  7817. }
  7818. //清空数据
  7819. g.gridbody.html("");
  7820. g.f.gridbody.html("");
  7821. g.recordNumber = 0;
  7822. g.records = {};
  7823. g.rows = [];
  7824. //清空选择的行
  7825. g.selected = [];
  7826. g.totalNumber = 0;
  7827. //编辑器计算器
  7828. g.editorcounter = 0;
  7829. },
  7830. _fillGridBody: function (data, frozen)
  7831. {
  7832. var g = this, p = this.options;
  7833. //加载数据
  7834. var gridhtmlarr = ['<div class="l-grid-body-inner"><table class="l-grid-body-table" cellpadding=0 cellspacing=0><tbody>'];
  7835. if (g.enabledGroup()) //启用分组模式
  7836. {
  7837. var groups = []; //分组列名数组
  7838. var groupsdata = []; //切成几块后的数据
  7839. g.groups = groupsdata;
  7840. for (var rowparm in data)
  7841. {
  7842. var item = data[rowparm];
  7843. var groupColumnValue = item[p.groupColumnName];
  7844. var valueIndex = $.inArray(groupColumnValue, groups);
  7845. if (valueIndex == -1)
  7846. {
  7847. groups.push(groupColumnValue);
  7848. valueIndex = groups.length - 1;
  7849. groupsdata.push([]);
  7850. }
  7851. groupsdata[valueIndex].push(item);
  7852. }
  7853. $(groupsdata).each(function (i, item)
  7854. {
  7855. if (groupsdata.length == 1)
  7856. gridhtmlarr.push('<tr class="l-grid-grouprow l-grid-grouprow-last l-grid-grouprow-first"');
  7857. if (i == groupsdata.length - 1)
  7858. gridhtmlarr.push('<tr class="l-grid-grouprow l-grid-grouprow-last"');
  7859. else if (i == 0)
  7860. gridhtmlarr.push('<tr class="l-grid-grouprow l-grid-grouprow-first"');
  7861. else
  7862. gridhtmlarr.push('<tr class="l-grid-grouprow"');
  7863. gridhtmlarr.push(' groupindex"=' + i + '" >');
  7864. gridhtmlarr.push('<td colSpan="' + g.columns.length + '" class="l-grid-grouprow-cell">');
  7865. gridhtmlarr.push('<span class="l-grid-group-togglebtn">&nbsp;&nbsp;&nbsp;&nbsp;</span>');
  7866. if (p.groupRender)
  7867. gridhtmlarr.push(p.groupRender(groups[i], item, p.groupColumnDisplay));
  7868. else
  7869. gridhtmlarr.push(p.groupColumnDisplay + ':' + groups[i]);
  7870. gridhtmlarr.push('</td>');
  7871. gridhtmlarr.push('</tr>');
  7872. gridhtmlarr.push(g._getHtmlFromData(item, frozen));
  7873. //汇总
  7874. if (g.isTotalSummary())
  7875. gridhtmlarr.push(g._getTotalSummaryHtml(item, "l-grid-totalsummary-group", frozen));
  7876. });
  7877. }
  7878. else
  7879. {
  7880. gridhtmlarr.push(g._getHtmlFromData(data, frozen));
  7881. }
  7882. gridhtmlarr.push('</tbody></table></div>');
  7883. (frozen ? g.f.gridbody : g.gridbody).html(gridhtmlarr.join(''));
  7884. //分组时不需要
  7885. if (!g.enabledGroup())
  7886. {
  7887. //创建汇总行
  7888. g._bulidTotalSummary(frozen);
  7889. }
  7890. $("> div:first", g.gridbody).width(g.gridtablewidth);
  7891. g._onResize();
  7892. },
  7893. _showData: function ()
  7894. {
  7895. var g = this, p = this.options;
  7896. var data = g.currentData[p.root];
  7897. if (p.usePager)
  7898. {
  7899. //更新总记录数
  7900. if (p.dataAction == "server" && g.data && g.data[p.record])
  7901. p.total = g.data[p.record];
  7902. else if (g.filteredData && g.filteredData[p.root])
  7903. p.total = g.filteredData[p.root].length;
  7904. else if (g.data && g.data[p.root])
  7905. p.total = g.data[p.root].length;
  7906. else if (data)
  7907. p.total = data.length;
  7908. p.page = p.newPage;
  7909. if (!p.total) p.total = 0;
  7910. if (!p.page) p.page = 1;
  7911. p.pageCount = Math.ceil(p.total / p.pageSize);
  7912. if (!p.pageCount) p.pageCount = 1;
  7913. //更新分页
  7914. g._buildPager();
  7915. }
  7916. //加载中
  7917. $('.l-bar-btnloading:first', g.toolbar).removeClass('l-bar-btnloading');
  7918. if (g.trigger('beforeShowData', [g.currentData]) == false) return;
  7919. g._clearGrid();
  7920. g.isDataChanged = false;
  7921. if (!data) return;
  7922. $(".l-bar-btnload:first span", g.toolbar).removeClass("l-disabled");
  7923. g._updateGridData();
  7924. if (g.enabledFrozen())
  7925. g._fillGridBody(g.rows, true);
  7926. g._fillGridBody(g.rows, false);
  7927. g.trigger('SysGridHeightChanged');
  7928. if (p.totalRender)
  7929. {
  7930. $(".l-panel-bar-total", g.element).remove();
  7931. $(".l-panel-bar", g.element).before('<div class="l-panel-bar-total">' + p.totalRender(g.data, g.filteredData) + '</div>');
  7932. }
  7933. if (p.mouseoverRowCssClass)
  7934. {
  7935. for (var i in g.rows)
  7936. {
  7937. var rowobj = $(g.getRowObj(g.rows[i]));
  7938. if (g.enabledFrozen())
  7939. rowobj = rowobj.add(g.getRowObj(g.rows[i], true));
  7940. rowobj.bind('mouseover.gridrow', function ()
  7941. {
  7942. g._onRowOver(this, true);
  7943. }).bind('mouseout.gridrow', function ()
  7944. {
  7945. g._onRowOver(this, false);
  7946. });
  7947. }
  7948. }
  7949. g.gridbody.trigger('scroll.grid');
  7950. g.trigger('afterShowData', [g.currentData]);
  7951. },
  7952. _getRowDomId: function (rowdata, frozen)
  7953. {
  7954. return this.id + "|" + (frozen ? "1" : "2") + "|" + rowdata['__id'];
  7955. },
  7956. _getCellDomId: function (rowdata, column)
  7957. {
  7958. return this._getRowDomId(rowdata, column.frozen) + "|" + column['__id'];
  7959. },
  7960. _getHtmlFromData: function (data, frozen)
  7961. {
  7962. if (!data) return "";
  7963. var g = this, p = this.options;
  7964. var gridhtmlarr = [];
  7965. for (var rowparm in data)
  7966. {
  7967. var item = data[rowparm];
  7968. var rowid = item['__id'];
  7969. if (!item) continue;
  7970. gridhtmlarr.push('<tr');
  7971. gridhtmlarr.push(' id="' + g._getRowDomId(item, frozen) + '"');
  7972. gridhtmlarr.push(' class="l-grid-row'); //class start
  7973. if (!frozen && g.enabledCheckbox() && p.isChecked && p.isChecked(item))
  7974. {
  7975. g.select(item);
  7976. gridhtmlarr.push(' l-selected');
  7977. }
  7978. else if (g.isSelected(item))
  7979. {
  7980. gridhtmlarr.push(' l-selected');
  7981. }
  7982. if (item['__index'] % 2 == 1 && p.alternatingRow)
  7983. gridhtmlarr.push(' l-grid-row-alt');
  7984. gridhtmlarr.push('" '); //class end
  7985. if (p.rowAttrRender) gridhtmlarr.push(p.rowAttrRender(item, rowid));
  7986. if (p.tree && g.collapsedRows && g.collapsedRows.length)
  7987. {
  7988. var isHide = function ()
  7989. {
  7990. var pitem = g.getParent(item);
  7991. while (pitem)
  7992. {
  7993. if ($.inArray(pitem, g.collapsedRows) != -1) return true;
  7994. pitem = g.getParent(pitem);
  7995. }
  7996. return false;
  7997. };
  7998. if (isHide()) gridhtmlarr.push(' style="display:none;" ');
  7999. }
  8000. gridhtmlarr.push('>');
  8001. $(g.columns).each(function (columnindex, column)
  8002. {
  8003. if (frozen != column.frozen) return;
  8004. gridhtmlarr.push('<td');
  8005. gridhtmlarr.push(' id="' + g._getCellDomId(item, this) + '"');
  8006. //如果是行序号(系统列)
  8007. if (this.isrownumber)
  8008. {
  8009. gridhtmlarr.push(' class="l-grid-row-cell l-grid-row-cell-rownumbers" style="width:' + this.width + 'px"><div class="l-grid-row-cell-inner"');
  8010. if (p.fixedCellHeight)
  8011. gridhtmlarr.push(' style = "height:' + p.rowHeight + 'px;" ');
  8012. gridhtmlarr.push('>' + (parseInt(item['__index']) + 1) + '</div></td>');
  8013. return;
  8014. }
  8015. //如果是复选框(系统列)
  8016. if (this.ischeckbox)
  8017. {
  8018. gridhtmlarr.push(' class="l-grid-row-cell l-grid-row-cell-checkbox" style="width:' + this.width + 'px"><div class="l-grid-row-cell-inner"');
  8019. if (p.fixedCellHeight)
  8020. gridhtmlarr.push(' style = "height:' + p.rowHeight + 'px;" ');
  8021. gridhtmlarr.push('><span class="l-grid-row-cell-btn-checkbox"></span></div></td>');
  8022. return;
  8023. }
  8024. //如果是明细列(系统列)
  8025. else if (this.isdetail)
  8026. {
  8027. gridhtmlarr.push(' class="l-grid-row-cell l-grid-row-cell-detail" style="width:' + this.width + 'px"><div class="l-grid-row-cell-inner"');
  8028. if (p.fixedCellHeight)
  8029. gridhtmlarr.push(' style = "height:' + p.rowHeight + 'px;" ');
  8030. gridhtmlarr.push('><span class="l-grid-row-cell-detailbtn"></span></div></td>');
  8031. return;
  8032. }
  8033. var colwidth = this._width;
  8034. gridhtmlarr.push(' class="l-grid-row-cell ');
  8035. if (g.changedCells[rowid + "_" + this['__id']]) gridhtmlarr.push("l-grid-row-cell-edited ");
  8036. if (this.islast)
  8037. gridhtmlarr.push('l-grid-row-cell-last ');
  8038. gridhtmlarr.push('"');
  8039. //if (this.columnname) gridhtmlarr.push('columnname="' + this.columnname + '"');
  8040. gridhtmlarr.push(' style = "');
  8041. gridhtmlarr.push('width:' + colwidth + 'px; ');
  8042. if (column._hide)
  8043. {
  8044. gridhtmlarr.push('display:none;');
  8045. }
  8046. gridhtmlarr.push(' ">');
  8047. gridhtmlarr.push(g._getCellHtml(item, column));
  8048. gridhtmlarr.push('</td>');
  8049. });
  8050. gridhtmlarr.push('</tr>');
  8051. }
  8052. return gridhtmlarr.join('');
  8053. },
  8054. _getCellHtml: function (rowdata, column)
  8055. {
  8056. var g = this, p = this.options;
  8057. if (column.isrownumber)
  8058. return '<div class="l-grid-row-cell-inner">' + (parseInt(rowdata['__index']) + 1) + '</div>';
  8059. var htmlarr = [];
  8060. htmlarr.push('<div class="l-grid-row-cell-inner"');
  8061. //htmlarr.push('<div');
  8062. htmlarr.push(' style = "width:' + parseInt(column._width - 8) + 'px;');
  8063. if (p.fixedCellHeight) htmlarr.push('height:' + p.rowHeight + 'px;min-height:' + p.rowHeight + 'px; ');
  8064. if (column.align) htmlarr.push('text-align:' + column.align + ';');
  8065. var content = g._getCellContent(rowdata, column);
  8066. htmlarr.push('">' + content + '</div>');
  8067. return htmlarr.join('');
  8068. },
  8069. _getCellContent: function (rowdata, column)
  8070. {
  8071. if (!rowdata || !column) return "";
  8072. if (column.isrownumber) return parseInt(rowdata['__index']) + 1;
  8073. var rowid = rowdata['__id'];
  8074. var rowindex = rowdata['__index'];
  8075. var value = column.name ? rowdata[column.name] : null;
  8076. var g = this, p = this.options;
  8077. var content = "";
  8078. if (column.render)
  8079. {
  8080. content = column.render.call(g, rowdata, rowindex, value, column);
  8081. }
  8082. else if (p.formatters[column.type])
  8083. {
  8084. content = p.formatters[column.type].call(g, value, column);
  8085. }
  8086. else if (value != null)
  8087. {
  8088. content = value.toString();
  8089. }
  8090. if (p.tree && (p.tree.columnName != null && p.tree.columnName == column.name || p.tree.columnId != null && p.tree.columnId == column.id))
  8091. {
  8092. content = g._getTreeCellHtml(content, rowdata);
  8093. }
  8094. return content || "";
  8095. },
  8096. _getTreeCellHtml: function (oldContent, rowdata)
  8097. {
  8098. var level = rowdata['__level'];
  8099. var g = this, p = this.options;
  8100. //var isExtend = p.tree.isExtend(rowdata);
  8101. var isExtend = $.inArray(rowdata, g.collapsedRows || []) == -1;
  8102. var isParent = p.tree.isParent(rowdata);
  8103. var content = "";
  8104. level = parseInt(level) || 1;
  8105. for (var i = 1; i < level; i++)
  8106. {
  8107. content += "<div class='l-grid-tree-space'></div>";
  8108. }
  8109. if (isExtend && isParent)
  8110. content += "<div class='l-grid-tree-space l-grid-tree-link l-grid-tree-link-open'></div>";
  8111. else if (isParent)
  8112. content += "<div class='l-grid-tree-space l-grid-tree-link l-grid-tree-link-close'></div>";
  8113. else
  8114. content += "<div class='l-grid-tree-space'></div>";
  8115. content += "<span class='l-grid-tree-content'>" + oldContent + "</span>";
  8116. return content;
  8117. },
  8118. _applyEditor: function (obj)
  8119. {
  8120. var g = this, p = this.options;
  8121. var rowcell = obj;
  8122. var ids = rowcell.id.split('|');
  8123. var columnid = ids[ids.length - 1];
  8124. var column = g._columns[columnid];
  8125. var row = $(rowcell).parent();
  8126. var rowdata = g.getRow(row[0]);
  8127. var rowid = rowdata['__id'];
  8128. var rowindex = rowdata['__index'];
  8129. if (!column || !column.editor) return;
  8130. var columnname = column.name;
  8131. var columnindex = column.columnindex;
  8132. if (column.editor.type && p.editors[column.editor.type])
  8133. {
  8134. var currentdata = rowdata[columnname];
  8135. var editParm = { record: rowdata, value: currentdata, column: column, rowindex: rowindex };
  8136. if (g.trigger('beforeEdit', [editParm]) == false) return false;
  8137. var editor = p.editors[column.editor.type];
  8138. var jcell = $(rowcell), offset = $(rowcell).offset();
  8139. jcell.html("");
  8140. g.setCellEditing(rowdata, column, true);
  8141. var width = $(rowcell).width(), height = $(rowcell).height();
  8142. var container = $("<div class='l-grid-editor'></div>").appendTo('body');
  8143. if ($.browser.mozilla)
  8144. container.css({ left: offset.left, top: offset.top }).show();
  8145. else
  8146. container.css({ left: offset.left + 1, top: offset.top + 1 }).show();
  8147. var editorInput = g._createEditor(editor, container, editParm, width, height);
  8148. g.editor = { editing: true, editor: editor, input: editorInput, editParm: editParm, container: container };
  8149. g.unbind('sysEndEdit');
  8150. g.bind('sysEndEdit', function ()
  8151. {
  8152. var newValue = editor.getValue(editorInput, editParm);
  8153. if (newValue != currentdata)
  8154. {
  8155. $(rowcell).addClass("l-grid-row-cell-edited");
  8156. g.changedCells[rowid + "_" + column['__id']] = true;
  8157. if (column.editor.onChange) column.editor.onChange(rowcell, newValue);
  8158. editParm.value = newValue;
  8159. if (g._checkEditAndUpdateCell(editParm))
  8160. {
  8161. if (column.editor.onChanged) column.editor.onChanged(rowcell, newValue);
  8162. }
  8163. }
  8164. });
  8165. }
  8166. },
  8167. _checkEditAndUpdateCell: function (editParm)
  8168. {
  8169. var g = this, p = this.options;
  8170. if (g.trigger('beforeSubmitEdit', [editParm]) == false) return false;
  8171. g.updateCell(editParm.column, editParm.value, editParm.record);
  8172. if (editParm.column.render || g.enabledTotal()) g.reRender({ column: editParm.column });
  8173. g.reRender({ rowdata: editParm.record });
  8174. return true;
  8175. },
  8176. _getCurrentPageData: function (source)
  8177. {
  8178. var g = this, p = this.options;
  8179. var data = {};
  8180. data[p.root] = [];
  8181. if (!source || !source[p.root] || !source[p.root].length)
  8182. {
  8183. data[p.record] = 0;
  8184. return data;
  8185. }
  8186. data[p.record] = source[p.root].length;
  8187. if (!p.newPage) p.newPage = 1;
  8188. for (i = (p.newPage - 1) * p.pageSize; i < source[p.root].length && i < p.newPage * p.pageSize; i++)
  8189. {
  8190. data[p.root].push(source[p.root][i]);
  8191. }
  8192. return data;
  8193. },
  8194. //比较某一列两个数据
  8195. _compareData: function (data1, data2, columnName, columnType)
  8196. {
  8197. var g = this, p = this.options;
  8198. var val1 = data1[columnName], val2 = data2[columnName];
  8199. if (val1 == null && val2 != null) return 1;
  8200. else if (val1 == null && val2 == null) return 0;
  8201. else if (val1 != null && val2 == null) return -1;
  8202. if (p.sorters[columnType])
  8203. return p.sorters[columnType].call(g, val1, val2);
  8204. else
  8205. return val1 < val2 ? -1 : val1 > val2 ? 1 : 0;
  8206. },
  8207. _getTotalCellContent: function (column, data)
  8208. {
  8209. var g = this, p = this.options;
  8210. var totalsummaryArr = [];
  8211. if (column.totalSummary)
  8212. {
  8213. var isExist = function (type)
  8214. {
  8215. for (var i = 0; i < types.length; i++)
  8216. if (types[i].toLowerCase() == type.toLowerCase()) return true;
  8217. return false;
  8218. };
  8219. var sum = 0, count = 0, avg = 0;
  8220. var max = parseFloat(data[0][column.name]);
  8221. var min = parseFloat(data[0][column.name]);
  8222. for (var i = 0; i < data.length; i++)
  8223. {
  8224. count += 1;
  8225. var value = parseFloat(data[i][column.name]);
  8226. if (!value) continue;
  8227. sum += value;
  8228. if (value > max) max = value;
  8229. if (value < min) min = value;
  8230. }
  8231. avg = sum * 1.0 / data.length;
  8232. if (column.totalSummary.render)
  8233. {
  8234. var renderhtml = column.totalSummary.render({
  8235. sum: sum,
  8236. count: count,
  8237. avg: avg,
  8238. min: min,
  8239. max: max
  8240. }, column, g.data);
  8241. totalsummaryArr.push(renderhtml);
  8242. }
  8243. else if (column.totalSummary.type)
  8244. {
  8245. var types = column.totalSummary.type.split(',');
  8246. if (isExist('sum'))
  8247. totalsummaryArr.push("<div>Sum=" + sum.toFixed(2) + "</div>");
  8248. if (isExist('count'))
  8249. totalsummaryArr.push("<div>Count=" + count + "</div>");
  8250. if (isExist('max'))
  8251. totalsummaryArr.push("<div>Max=" + max.toFixed(2) + "</div>");
  8252. if (isExist('min'))
  8253. totalsummaryArr.push("<div>Min=" + min.toFixed(2) + "</div>");
  8254. if (isExist('avg'))
  8255. totalsummaryArr.push("<div>Avg=" + avg.toFixed(2) + "</div>");
  8256. }
  8257. }
  8258. return totalsummaryArr.join('');
  8259. },
  8260. _getTotalSummaryHtml: function (data, classCssName, frozen)
  8261. {
  8262. var g = this, p = this.options;
  8263. var totalsummaryArr = [];
  8264. if (classCssName)
  8265. totalsummaryArr.push('<tr class="l-grid-totalsummary ' + classCssName + '">');
  8266. else
  8267. totalsummaryArr.push('<tr class="l-grid-totalsummary">');
  8268. $(g.columns).each(function (columnindex, column)
  8269. {
  8270. if (this.frozen != frozen) return;
  8271. //如果是行序号(系统列)
  8272. if (this.isrownumber)
  8273. {
  8274. totalsummaryArr.push('<td class="l-grid-totalsummary-cell l-grid-totalsummary-cell-rownumbers" style="width:' + this.width + 'px"><div>&nbsp;</div></td>');
  8275. return;
  8276. }
  8277. //如果是复选框(系统列)
  8278. if (this.ischeckbox)
  8279. {
  8280. totalsummaryArr.push('<td class="l-grid-totalsummary-cell l-grid-totalsummary-cell-checkbox" style="width:' + this.width + 'px"><div>&nbsp;</div></td>');
  8281. return;
  8282. }
  8283. //如果是明细列(系统列)
  8284. else if (this.isdetail)
  8285. {
  8286. totalsummaryArr.push('<td class="l-grid-totalsummary-cell l-grid-totalsummary-cell-detail" style="width:' + this.width + 'px"><div>&nbsp;</div></td>');
  8287. return;
  8288. }
  8289. totalsummaryArr.push('<td class="l-grid-totalsummary-cell');
  8290. if (this.islast)
  8291. totalsummaryArr.push(" l-grid-totalsummary-cell-last");
  8292. totalsummaryArr.push('" ');
  8293. totalsummaryArr.push('id="' + g.id + "|total" + g.totalNumber + "|" + column.__id + '" ');
  8294. totalsummaryArr.push('width="' + this._width + '" ');
  8295. columnname = this.columnname;
  8296. if (columnname)
  8297. {
  8298. totalsummaryArr.push('columnname="' + columnname + '" ');
  8299. }
  8300. totalsummaryArr.push('columnindex="' + columnindex + '" ');
  8301. totalsummaryArr.push('><div class="l-grid-totalsummary-cell-inner"');
  8302. if (column.align)
  8303. totalsummaryArr.push(' style="text-Align:' + column.align + ';"');
  8304. totalsummaryArr.push('>');
  8305. totalsummaryArr.push(g._getTotalCellContent(column, data));
  8306. totalsummaryArr.push('</div></td>');
  8307. });
  8308. totalsummaryArr.push('</tr>');
  8309. if (!frozen) g.totalNumber++;
  8310. return totalsummaryArr.join('');
  8311. },
  8312. _bulidTotalSummary: function (frozen)
  8313. {
  8314. var g = this, p = this.options;
  8315. if (!g.isTotalSummary()) return false;
  8316. if (!g.currentData || g.currentData[p.root].length == 0) return false;
  8317. var totalRow = $(g._getTotalSummaryHtml(g.currentData[p.root], null, frozen));
  8318. $("tbody:first", frozen ? g.f.gridbody : g.gridbody).append(totalRow);
  8319. },
  8320. _buildPager: function ()
  8321. {
  8322. var g = this, p = this.options;
  8323. $('.pcontrol input', g.toolbar).val(p.page);
  8324. if (!p.pageCount) p.pageCount = 1;
  8325. $('.pcontrol span', g.toolbar).html(p.pageCount);
  8326. var r1 = parseInt((p.page - 1) * p.pageSize) + 1.0;
  8327. var r2 = parseInt(r1) + parseInt(p.pageSize) - 1;
  8328. if (!p.total) p.total = 0;
  8329. if (p.total < r2) r2 = p.total;
  8330. if (!p.total) r1 = r2 = 0;
  8331. if (r1 < 0) r1 = 0;
  8332. if (r2 < 0) r2 = 0;
  8333. var stat = p.pageStatMessage;
  8334. stat = stat.replace(/{from}/, r1);
  8335. stat = stat.replace(/{to}/, r2);
  8336. stat = stat.replace(/{total}/, p.total);
  8337. stat = stat.replace(/{pagesize}/, p.pageSize);
  8338. $('.l-bar-text', g.toolbar).html(stat);
  8339. if (!p.total)
  8340. {
  8341. $(".l-bar-btnfirst span,.l-bar-btnprev span,.l-bar-btnnext span,.l-bar-btnlast span", g.toolbar)
  8342. .addClass("l-disabled");
  8343. }
  8344. if (p.page == 1)
  8345. {
  8346. $(".l-bar-btnfirst span", g.toolbar).addClass("l-disabled");
  8347. $(".l-bar-btnprev span", g.toolbar).addClass("l-disabled");
  8348. }
  8349. else if (p.page > p.pageCount && p.pageCount > 0)
  8350. {
  8351. $(".l-bar-btnfirst span", g.toolbar).removeClass("l-disabled");
  8352. $(".l-bar-btnprev span", g.toolbar).removeClass("l-disabled");
  8353. }
  8354. if (p.page == p.pageCount)
  8355. {
  8356. $(".l-bar-btnlast span", g.toolbar).addClass("l-disabled");
  8357. $(".l-bar-btnnext span", g.toolbar).addClass("l-disabled");
  8358. }
  8359. else if (p.page < p.pageCount && p.pageCount > 0)
  8360. {
  8361. $(".l-bar-btnlast span", g.toolbar).removeClass("l-disabled");
  8362. $(".l-bar-btnnext span", g.toolbar).removeClass("l-disabled");
  8363. }
  8364. },
  8365. _getRowIdByDomId: function (domid)
  8366. {
  8367. var ids = domid.split('|');
  8368. var rowid = ids[2];
  8369. return rowid;
  8370. },
  8371. _getRowByDomId: function (domid)
  8372. {
  8373. return this.records[this._getRowIdByDomId(domid)];
  8374. },
  8375. _getSrcElementByEvent: function (e)
  8376. {
  8377. var g = this;
  8378. var obj = (e.target || e.srcElement);
  8379. var jobjs = $(obj).parents().add(obj);
  8380. var fn = function (parm)
  8381. {
  8382. for (var i = 0, l = jobjs.length; i < l; i++)
  8383. {
  8384. if (typeof parm == "string")
  8385. {
  8386. if ($(jobjs[i]).hasClass(parm)) return jobjs[i];
  8387. }
  8388. else if (typeof parm == "object")
  8389. {
  8390. if (jobjs[i] == parm) return jobjs[i];
  8391. }
  8392. }
  8393. return null;
  8394. };
  8395. if (fn("l-grid-editor")) return { editing: true, editor: fn("l-grid-editor") };
  8396. if (jobjs.index(this.element) == -1) return { out: true };
  8397. var indetail = false;
  8398. if (jobjs.hasClass("l-grid-detailpanel") && g.detailrows)
  8399. {
  8400. for (var i = 0, l = g.detailrows.length; i < l; i++)
  8401. {
  8402. if (jobjs.index(g.detailrows[i]) != -1)
  8403. {
  8404. indetail = true;
  8405. break;
  8406. }
  8407. }
  8408. }
  8409. var r = {
  8410. grid: fn("l-panel"),
  8411. indetail: indetail,
  8412. frozen: fn(g.gridview1[0]) ? true : false,
  8413. header: fn("l-panel-header"), //标题
  8414. gridheader: fn("l-grid-header"), //表格头
  8415. gridbody: fn("l-grid-body"),
  8416. total: fn("l-panel-bar-total"), //总汇总
  8417. popup: fn("l-grid-popup"),
  8418. toolbar: fn("l-panel-bar")
  8419. };
  8420. if (r.gridheader)
  8421. {
  8422. r.hrow = fn("l-grid-hd-row");
  8423. r.hcell = fn("l-grid-hd-cell");
  8424. r.hcelltext = fn("l-grid-hd-cell-text");
  8425. r.checkboxall = fn("l-grid-hd-cell-checkbox");
  8426. if (r.hcell)
  8427. {
  8428. var columnid = r.hcell.id.split('|')[2];
  8429. r.column = g._columns[columnid];
  8430. }
  8431. }
  8432. if (r.gridbody)
  8433. {
  8434. r.row = fn("l-grid-row");
  8435. r.cell = fn("l-grid-row-cell");
  8436. r.checkbox = fn("l-grid-row-cell-btn-checkbox");
  8437. r.groupbtn = fn("l-grid-group-togglebtn");
  8438. r.grouprow = fn("l-grid-grouprow");
  8439. r.detailbtn = fn("l-grid-row-cell-detailbtn");
  8440. r.detailrow = fn("l-grid-detailpanel");
  8441. r.totalrow = fn("l-grid-totalsummary");
  8442. r.totalcell = fn("l-grid-totalsummary-cell");
  8443. r.rownumberscell = $(r.cell).hasClass("l-grid-row-cell-rownumbers") ? r.cell : null;
  8444. r.detailcell = $(r.cell).hasClass("l-grid-row-cell-detail") ? r.cell : null;
  8445. r.checkboxcell = $(r.cell).hasClass("l-grid-row-cell-checkbox") ? r.cell : null;
  8446. r.treelink = fn("l-grid-tree-link");
  8447. r.editor = fn("l-grid-editor");
  8448. if (r.row) r.data = this._getRowByDomId(r.row.id);
  8449. if (r.cell) r.editing = $(r.cell).hasClass("l-grid-row-cell-editing");
  8450. if (r.editor) r.editing = true;
  8451. if (r.editing) r.out = false;
  8452. }
  8453. if (r.toolbar)
  8454. {
  8455. r.first = fn("l-bar-btnfirst");
  8456. r.last = fn("l-bar-btnlast");
  8457. r.next = fn("l-bar-btnnext");
  8458. r.prev = fn("l-bar-btnprev");
  8459. r.load = fn("l-bar-btnload");
  8460. r.button = fn("l-bar-button");
  8461. }
  8462. return r;
  8463. },
  8464. _setEvent: function ()
  8465. {
  8466. var g = this, p = this.options;
  8467. g.grid.bind("mousedown.grid", function (e)
  8468. {
  8469. g._onMouseDown.call(g, e);
  8470. });
  8471. g.grid.bind("dblclick.grid", function (e)
  8472. {
  8473. g._onDblClick.call(g, e);
  8474. });
  8475. g.grid.bind("contextmenu.grid", function (e)
  8476. {
  8477. return g._onContextmenu.call(g, e);
  8478. });
  8479. $(document).bind("mouseup.grid", function (e)
  8480. {
  8481. g._onMouseUp.call(g, e);
  8482. });
  8483. $(document).bind("click.grid", function (e)
  8484. {
  8485. g._onClick.call(g, e);
  8486. });
  8487. $(window).bind("resize.grid", function (e)
  8488. {
  8489. g._onResize.call(g);
  8490. });
  8491. $(document).bind("keydown.grid", function (e)
  8492. {
  8493. if (e.ctrlKey) g.ctrlKey = true;
  8494. });
  8495. $(document).bind("keyup.grid", function (e)
  8496. {
  8497. delete g.ctrlKey;
  8498. });
  8499. //表体 - 滚动联动事件
  8500. g.gridbody.bind('scroll.grid', function ()
  8501. {
  8502. var scrollLeft = g.gridbody.scrollLeft();
  8503. var scrollTop = g.gridbody.scrollTop();
  8504. if (scrollLeft != null)
  8505. g.gridheader[0].scrollLeft = scrollLeft;
  8506. if (scrollTop != null)
  8507. g.f.gridbody[0].scrollTop = scrollTop;
  8508. g.endEdit();
  8509. g.trigger('SysGridHeightChanged');
  8510. });
  8511. //工具条 - 切换每页记录数事件
  8512. $('select', g.toolbar).change(function ()
  8513. {
  8514. if (g.isDataChanged && !confirm(p.isContinueByDataChanged))
  8515. return false;
  8516. p.newPage = 1;
  8517. p.pageSize = this.value;
  8518. g.loadData(p.where);
  8519. });
  8520. //工具条 - 切换当前页事件
  8521. $('span.pcontrol :text', g.toolbar).blur(function (e)
  8522. {
  8523. g.changePage('input');
  8524. });
  8525. $("div.l-bar-button", g.toolbar).hover(function ()
  8526. {
  8527. $(this).addClass("l-bar-button-over");
  8528. }, function ()
  8529. {
  8530. $(this).removeClass("l-bar-button-over");
  8531. });
  8532. //列拖拽支持
  8533. if ($.fn.ligerDrag && p.colDraggable)
  8534. {
  8535. g.colDroptip = $("<div class='l-drag-coldroptip' style='display:none'><div class='l-drop-move-up'></div><div class='l-drop-move-down'></div></div>").appendTo('body');
  8536. g.gridheader.add(g.f.gridheader).ligerDrag({ revert: true, animate: false,
  8537. proxyX: 0, proxyY: 0,
  8538. proxy: function (draggable, e)
  8539. {
  8540. var src = g._getSrcElementByEvent(e);
  8541. if (src.hcell && src.column)
  8542. {
  8543. var content = $(".l-grid-hd-cell-text:first", src.hcell).html();
  8544. var proxy = $("<div class='l-drag-proxy' style='display:none'><div class='l-drop-icon l-drop-no'></div></div>").appendTo('body');
  8545. proxy.append(content);
  8546. return proxy;
  8547. }
  8548. },
  8549. onRevert: function () { return false; },
  8550. onRendered: function ()
  8551. {
  8552. this.set('cursor', 'default');
  8553. g.children[this.id] = this;
  8554. },
  8555. onStartDrag: function (current, e)
  8556. {
  8557. if (e.button == 2) return false;
  8558. if (g.colresizing) return false;
  8559. this.set('cursor', 'default');
  8560. var src = g._getSrcElementByEvent(e);
  8561. if (!src.hcell || !src.column || src.column.issystem || src.hcelltext) return false;
  8562. if ($(src.hcell).css('cursor').indexOf('resize') != -1) return false;
  8563. this.draggingColumn = src.column;
  8564. g.coldragging = true;
  8565. var gridOffset = g.grid.offset();
  8566. this.validRange = {
  8567. top: gridOffset.top,
  8568. bottom: gridOffset.top + g.gridheader.height(),
  8569. left: gridOffset.left - 10,
  8570. right: gridOffset.left + g.grid.width() + 10
  8571. };
  8572. },
  8573. onDrag: function (current, e)
  8574. {
  8575. this.set('cursor', 'default');
  8576. var column = this.draggingColumn;
  8577. if (!column) return false;
  8578. if (g.colresizing) return false;
  8579. if (g.colDropIn == null)
  8580. g.colDropIn = -1;
  8581. var pageX = e.pageX;
  8582. var pageY = e.pageY;
  8583. var visit = false;
  8584. var gridOffset = g.grid.offset();
  8585. var validRange = this.validRange;
  8586. if (pageX < validRange.left || pageX > validRange.right
  8587. || pageY > validRange.bottom || pageY < validRange.top)
  8588. {
  8589. g.colDropIn = -1;
  8590. g.colDroptip.hide();
  8591. this.proxy.find(".l-drop-icon:first").removeClass("l-drop-yes").addClass("l-drop-no");
  8592. return;
  8593. }
  8594. for (var colid in g._columns)
  8595. {
  8596. var col = g._columns[colid];
  8597. if (column == col)
  8598. {
  8599. visit = true;
  8600. continue;
  8601. }
  8602. if (col.issystem) continue;
  8603. var sameLevel = col['__level'] == column['__level'];
  8604. var isAfter = !sameLevel ? false : visit ? true : false;
  8605. if (column.frozen != col.frozen) isAfter = col.frozen ? false : true;
  8606. if (g.colDropIn != -1 && g.colDropIn != colid) continue;
  8607. var cell = document.getElementById(col['__domid']);
  8608. var offset = $(cell).offset();
  8609. var range = {
  8610. top: offset.top,
  8611. bottom: offset.top + $(cell).height(),
  8612. left: offset.left - 10,
  8613. right: offset.left + 10
  8614. };
  8615. if (isAfter)
  8616. {
  8617. var cellwidth = $(cell).width();
  8618. range.left += cellwidth;
  8619. range.right += cellwidth;
  8620. }
  8621. if (pageX > range.left && pageX < range.right && pageY > range.top && pageY < range.bottom)
  8622. {
  8623. var height = p.headerRowHeight;
  8624. if (col['__rowSpan']) height *= col['__rowSpan'];
  8625. g.colDroptip.css({
  8626. left: range.left + 5,
  8627. top: range.top - 9,
  8628. height: height + 9 * 2
  8629. }).show();
  8630. g.colDropIn = colid;
  8631. g.colDropDir = isAfter ? "right" : "left";
  8632. this.proxy.find(".l-drop-icon:first").removeClass("l-drop-no").addClass("l-drop-yes");
  8633. break;
  8634. }
  8635. else if (g.colDropIn != -1)
  8636. {
  8637. g.colDropIn = -1;
  8638. g.colDroptip.hide();
  8639. this.proxy.find(".l-drop-icon:first").removeClass("l-drop-yes").addClass("l-drop-no");
  8640. }
  8641. }
  8642. },
  8643. onStopDrag: function (current, e)
  8644. {
  8645. var column = this.draggingColumn;
  8646. g.coldragging = false;
  8647. if (g.colDropIn != -1)
  8648. {
  8649. g.changeCol.ligerDefer(g, 0, [column, g.colDropIn, g.colDropDir == "right"]);
  8650. g.colDropIn = -1;
  8651. }
  8652. g.colDroptip.hide();
  8653. this.set('cursor', 'default');
  8654. }
  8655. });
  8656. }
  8657. //行拖拽支持
  8658. if ($.fn.ligerDrag && p.rowDraggable)
  8659. {
  8660. g.rowDroptip = $("<div class='l-drag-rowdroptip' style='display:none'></div>").appendTo('body');
  8661. g.gridbody.add(g.f.gridbody).ligerDrag({ revert: true, animate: false,
  8662. proxyX: 0, proxyY: 0,
  8663. proxy: function (draggable, e)
  8664. {
  8665. var src = g._getSrcElementByEvent(e);
  8666. if (src.row)
  8667. {
  8668. var content = p.draggingMessage.replace(/{count}/, draggable.draggingRows ? draggable.draggingRows.length : 1);
  8669. if (p.rowDraggingRender)
  8670. {
  8671. content = p.rowDraggingRender(draggable.draggingRows, draggable, g);
  8672. }
  8673. var proxy = $("<div class='l-drag-proxy' style='display:none'><div class='l-drop-icon l-drop-no'></div>" + content + "</div>").appendTo('body');
  8674. return proxy;
  8675. }
  8676. },
  8677. onRevert: function () { return false; },
  8678. onRendered: function ()
  8679. {
  8680. this.set('cursor', 'default');
  8681. g.children[this.id] = this;
  8682. },
  8683. onStartDrag: function (current, e)
  8684. {
  8685. if (e.button == 2) return false;
  8686. if (g.colresizing) return false;
  8687. if (!g.columns.length) return false;
  8688. this.set('cursor', 'default');
  8689. var src = g._getSrcElementByEvent(e);
  8690. if (!src.cell || !src.data || src.checkbox) return false;
  8691. var ids = src.cell.id.split('|');
  8692. var column = g._columns[ids[ids.length - 1]];
  8693. if (src.rownumberscell || src.detailcell || src.checkboxcell || column == g.columns[0])
  8694. {
  8695. if (g.enabledCheckbox())
  8696. {
  8697. this.draggingRows = g.getSelecteds();
  8698. if (!this.draggingRows || !this.draggingRows.length) return false;
  8699. }
  8700. else
  8701. {
  8702. this.draggingRows = [src.data];
  8703. }
  8704. this.draggingRow = src.data;
  8705. this.set('cursor', 'move');
  8706. g.rowdragging = true;
  8707. this.validRange = {
  8708. top: g.gridbody.offset().top,
  8709. bottom: g.gridbody.offset().top + g.gridbody.height(),
  8710. left: g.grid.offset().left - 10,
  8711. right: g.grid.offset().left + g.grid.width() + 10
  8712. };
  8713. }
  8714. else
  8715. {
  8716. return false;
  8717. }
  8718. },
  8719. onDrag: function (current, e)
  8720. {
  8721. var rowdata = this.draggingRow;
  8722. if (!rowdata) return false;
  8723. var rows = this.draggingRows ? this.draggingRows : [rowdata];
  8724. if (g.colresizing) return false;
  8725. if (g.rowDropIn == null) g.rowDropIn = -1;
  8726. var pageX = e.pageX;
  8727. var pageY = e.pageY;
  8728. var visit = false;
  8729. var validRange = this.validRange;
  8730. if (pageX < validRange.left || pageX > validRange.right
  8731. || pageY > validRange.bottom || pageY < validRange.top)
  8732. {
  8733. g.rowDropIn = -1;
  8734. g.rowDroptip.hide();
  8735. this.proxy.find(".l-drop-icon:first").removeClass("l-drop-yes l-drop-add").addClass("l-drop-no");
  8736. return;
  8737. }
  8738. for (var i in g.rows)
  8739. {
  8740. var rd = g.rows[i];
  8741. var rowid = rd['__id'];
  8742. if (rowdata == rd) visit = true;
  8743. if ($.inArray(rd, rows) != -1) continue;
  8744. var isAfter = visit ? true : false;
  8745. if (g.rowDropIn != -1 && g.rowDropIn != rowid) continue;
  8746. var rowobj = g.getRowObj(rowid);
  8747. var offset = $(rowobj).offset();
  8748. var range = {
  8749. top: offset.top - 4,
  8750. bottom: offset.top + $(rowobj).height() + 4,
  8751. left: g.grid.offset().left,
  8752. right: g.grid.offset().left + g.grid.width()
  8753. };
  8754. if (pageX > range.left && pageX < range.right && pageY > range.top && pageY < range.bottom)
  8755. {
  8756. var lineTop = offset.top;
  8757. if (isAfter) lineTop += $(rowobj).height();
  8758. g.rowDroptip.css({
  8759. left: range.left,
  8760. top: lineTop,
  8761. width: range.right - range.left
  8762. }).show();
  8763. g.rowDropIn = rowid;
  8764. g.rowDropDir = isAfter ? "bottom" : "top";
  8765. if (p.tree && pageY > range.top + 5 && pageY < range.bottom - 5)
  8766. {
  8767. this.proxy.find(".l-drop-icon:first").removeClass("l-drop-no l-drop-yes").addClass("l-drop-add");
  8768. g.rowDroptip.hide();
  8769. g.rowDropInParent = true;
  8770. }
  8771. else
  8772. {
  8773. this.proxy.find(".l-drop-icon:first").removeClass("l-drop-no l-drop-add").addClass("l-drop-yes");
  8774. g.rowDroptip.show();
  8775. g.rowDropInParent = false;
  8776. }
  8777. break;
  8778. }
  8779. else if (g.rowDropIn != -1)
  8780. {
  8781. g.rowDropIn = -1;
  8782. g.rowDropInParent = false;
  8783. g.rowDroptip.hide();
  8784. this.proxy.find(".l-drop-icon:first").removeClass("l-drop-yes l-drop-add").addClass("l-drop-no");
  8785. }
  8786. }
  8787. },
  8788. onStopDrag: function (current, e)
  8789. {
  8790. var rows = this.draggingRows;
  8791. g.rowdragging = false;
  8792. for (var i = 0; i < rows.length; i++)
  8793. {
  8794. var children = rows[i].children;
  8795. if (children)
  8796. {
  8797. rows = $.grep(rows, function (node, i)
  8798. {
  8799. var isIn = $.inArray(node, children) == -1;
  8800. return isIn;
  8801. });
  8802. }
  8803. }
  8804. if (g.rowDropIn != -1)
  8805. {
  8806. if (p.tree)
  8807. {
  8808. var neardata, prow;
  8809. if (g.rowDropInParent)
  8810. {
  8811. prow = g.getRow(g.rowDropIn);
  8812. }
  8813. else
  8814. {
  8815. neardata = g.getRow(g.rowDropIn);
  8816. prow = g.getParent(neardata);
  8817. }
  8818. g.appendRange(rows, prow, neardata, g.rowDropDir != "bottom");
  8819. g.trigger('rowDragDrop', {
  8820. rows: rows,
  8821. parent: prow,
  8822. near: neardata,
  8823. after: g.rowDropDir == "bottom"
  8824. });
  8825. }
  8826. else
  8827. {
  8828. g.moveRange(rows, g.rowDropIn, g.rowDropDir == "bottom");
  8829. g.trigger('rowDragDrop', {
  8830. rows: rows,
  8831. parent: prow,
  8832. near: g.getRow(g.rowDropIn),
  8833. after: g.rowDropDir == "bottom"
  8834. });
  8835. }
  8836. g.rowDropIn = -1;
  8837. }
  8838. g.rowDroptip.hide();
  8839. this.set('cursor', 'default');
  8840. }
  8841. });
  8842. }
  8843. },
  8844. _onRowOver: function (rowParm, over)
  8845. {
  8846. if (l.draggable.dragging) return;
  8847. var g = this, p = this.options;
  8848. var rowdata = g.getRow(rowParm);
  8849. var methodName = over ? "addClass" : "removeClass";
  8850. if (g.enabledFrozen())
  8851. $(g.getRowObj(rowdata, true))[methodName](p.mouseoverRowCssClass);
  8852. $(g.getRowObj(rowdata, false))[methodName](p.mouseoverRowCssClass);
  8853. },
  8854. _onMouseUp: function (e)
  8855. {
  8856. var g = this, p = this.options;
  8857. if (l.draggable.dragging)
  8858. {
  8859. var src = g._getSrcElementByEvent(e);
  8860. //drop in header cell
  8861. if (src.hcell && src.column)
  8862. {
  8863. g.trigger('dragdrop', [{ type: 'header', column: src.column, cell: src.hcell }, e]);
  8864. }
  8865. else if (src.row)
  8866. {
  8867. g.trigger('dragdrop', [{ type: 'row', record: src.data, row: src.row }, e]);
  8868. }
  8869. }
  8870. },
  8871. _onMouseDown: function (e)
  8872. {
  8873. var g = this, p = this.options;
  8874. },
  8875. _onContextmenu: function (e)
  8876. {
  8877. var g = this, p = this.options;
  8878. var src = g._getSrcElementByEvent(e);
  8879. if (src.row)
  8880. {
  8881. if (p.whenRClickToSelect)
  8882. g.select(src.data);
  8883. if (g.hasBind('contextmenu'))
  8884. {
  8885. return g.trigger('contextmenu', [{ data: src.data, rowindex: src.data['__index'], row: src.row }, e]);
  8886. }
  8887. }
  8888. else if (src.hcell)
  8889. {
  8890. if (!p.allowHideColumn) return true;
  8891. var columnindex = $(src.hcell).attr("columnindex");
  8892. if (columnindex == undefined) return true;
  8893. var left = (e.pageX - g.body.offset().left + parseInt(g.body[0].scrollLeft));
  8894. if (columnindex == g.columns.length - 1) left -= 50;
  8895. g.popup.css({ left: left, top: g.gridheader.height() + 1 });
  8896. g.popup.toggle();
  8897. return false;
  8898. }
  8899. },
  8900. _onDblClick: function (e)
  8901. {
  8902. var g = this, p = this.options;
  8903. var src = g._getSrcElementByEvent(e);
  8904. if (src.row)
  8905. {
  8906. g.trigger('dblClickRow', [src.data, src.data['__id'], src.row]);
  8907. }
  8908. },
  8909. _onClick: function (e)
  8910. {
  8911. var obj = (e.target || e.srcElement);
  8912. var g = this, p = this.options;
  8913. var src = g._getSrcElementByEvent(e);
  8914. if (src.out)
  8915. {
  8916. if (g.editor.editing && !$.ligerui.win.masking) g.endEdit();
  8917. if (p.allowHideColumn) g.popup.hide();
  8918. return;
  8919. }
  8920. if (src.indetail || src.editing)
  8921. {
  8922. return;
  8923. }
  8924. if (g.editor.editing)
  8925. {
  8926. g.endEdit();
  8927. }
  8928. if (p.allowHideColumn)
  8929. {
  8930. if (!src.popup)
  8931. {
  8932. g.popup.hide();
  8933. }
  8934. }
  8935. if (src.checkboxall) //复选框全选
  8936. {
  8937. var row = $(src.hrow);
  8938. var uncheck = row.hasClass("l-checked");
  8939. if (g.trigger('beforeCheckAllRow', [!uncheck, g.element]) == false) return false;
  8940. if (uncheck)
  8941. {
  8942. row.removeClass("l-checked");
  8943. }
  8944. else
  8945. {
  8946. row.addClass("l-checked");
  8947. }
  8948. g.selected = [];
  8949. for (var rowid in g.records)
  8950. {
  8951. if (uncheck)
  8952. g.unselect(g.records[rowid]);
  8953. else
  8954. g.select(g.records[rowid]);
  8955. }
  8956. g.trigger('checkAllRow', [!uncheck, g.element]);
  8957. }
  8958. else if (src.hcelltext) //排序
  8959. {
  8960. var hcell = $(src.hcelltext).parent().parent();
  8961. if (!p.enabledSort || !src.column) return;
  8962. if (src.column.isSort == false) return;
  8963. if (p.url && g.isDataChanged && !confirm(p.isContinueByDataChanged)) return;
  8964. var sort = $(".l-grid-hd-cell-sort:first", hcell);
  8965. var columnName = src.column.name;
  8966. if (!columnName) return;
  8967. if (sort.length > 0)
  8968. {
  8969. if (sort.hasClass("l-grid-hd-cell-sort-asc"))
  8970. {
  8971. sort.removeClass("l-grid-hd-cell-sort-asc").addClass("l-grid-hd-cell-sort-desc");
  8972. hcell.removeClass("l-grid-hd-cell-asc").addClass("l-grid-hd-cell-desc");
  8973. g.changeSort(columnName, 'desc');
  8974. }
  8975. else if (sort.hasClass("l-grid-hd-cell-sort-desc"))
  8976. {
  8977. sort.removeClass("l-grid-hd-cell-sort-desc").addClass("l-grid-hd-cell-sort-asc");
  8978. hcell.removeClass("l-grid-hd-cell-desc").addClass("l-grid-hd-cell-asc");
  8979. g.changeSort(columnName, 'asc');
  8980. }
  8981. }
  8982. else
  8983. {
  8984. hcell.removeClass("l-grid-hd-cell-desc").addClass("l-grid-hd-cell-asc");
  8985. $(src.hcelltext).after("<span class='l-grid-hd-cell-sort l-grid-hd-cell-sort-asc'>&nbsp;&nbsp;</span>");
  8986. g.changeSort(columnName, 'asc');
  8987. }
  8988. $(".l-grid-hd-cell-sort", g.gridheader).add($(".l-grid-hd-cell-sort", g.f.gridheader)).not($(".l-grid-hd-cell-sort:first", hcell)).remove();
  8989. }
  8990. //明细
  8991. else if (src.detailbtn && p.detail)
  8992. {
  8993. var item = src.data;
  8994. var row = $([g.getRowObj(item, false)]);
  8995. if (g.enabledFrozen()) row = row.add(g.getRowObj(item, true));
  8996. var rowid = item['__id'];
  8997. if ($(src.detailbtn).hasClass("l-open"))
  8998. {
  8999. if (p.detail.onCollapse)
  9000. p.detail.onCollapse(item, $(".l-grid-detailpanel-inner:first", nextrow)[0]);
  9001. row.next("tr.l-grid-detailpanel").hide();
  9002. $(src.detailbtn).removeClass("l-open");
  9003. }
  9004. else
  9005. {
  9006. var nextrow = row.next("tr.l-grid-detailpanel");
  9007. if (nextrow.length > 0)
  9008. {
  9009. nextrow.show();
  9010. if (p.detail.onExtend)
  9011. p.detail.onExtend(item, $(".l-grid-detailpanel-inner:first", nextrow)[0]);
  9012. $(src.detailbtn).addClass("l-open");
  9013. g.trigger('SysGridHeightChanged');
  9014. return;
  9015. }
  9016. $(src.detailbtn).addClass("l-open");
  9017. var frozenColNum = 0;
  9018. for (var i = 0; i < g.columns.length; i++)
  9019. if (g.columns[i].frozen) frozenColNum++;
  9020. var detailRow = $("<tr class='l-grid-detailpanel'><td><div class='l-grid-detailpanel-inner' style='display:none'></div></td></tr>");
  9021. var detailFrozenRow = $("<tr class='l-grid-detailpanel'><td><div class='l-grid-detailpanel-inner' style='display:none'></div></td></tr>");
  9022. detailRow.attr("id", g.id + "|detail|" + rowid);
  9023. g.detailrows = g.detailrows || [];
  9024. g.detailrows.push(detailRow[0]);
  9025. g.detailrows.push(detailFrozenRow[0]);
  9026. var detailRowInner = $("div:first", detailRow);
  9027. detailRowInner.parent().attr("colSpan", g.columns.length - frozenColNum);
  9028. row.eq(0).after(detailRow);
  9029. if (frozenColNum > 0)
  9030. {
  9031. detailFrozenRow.find("td:first").attr("colSpan", frozenColNum);
  9032. row.eq(1).after(detailFrozenRow);
  9033. }
  9034. if (p.detail.onShowDetail)
  9035. {
  9036. p.detail.onShowDetail(item, detailRowInner[0], function ()
  9037. {
  9038. g.trigger('SysGridHeightChanged');
  9039. });
  9040. $("div:first", detailFrozenRow).add(detailRowInner).show().height(p.detail.height || p.detailHeight);
  9041. }
  9042. else if (p.detail.render)
  9043. {
  9044. detailRowInner.append(p.detail.render());
  9045. detailRowInner.show();
  9046. }
  9047. g.trigger('SysGridHeightChanged');
  9048. }
  9049. }
  9050. else if (src.groupbtn)
  9051. {
  9052. var grouprow = $(src.grouprow);
  9053. var opening = true;
  9054. if ($(src.groupbtn).hasClass("l-grid-group-togglebtn-close"))
  9055. {
  9056. $(src.groupbtn).removeClass("l-grid-group-togglebtn-close");
  9057. if (grouprow.hasClass("l-grid-grouprow-last"))
  9058. {
  9059. $("td:first", grouprow).width('auto');
  9060. }
  9061. }
  9062. else
  9063. {
  9064. opening = false;
  9065. $(src.groupbtn).addClass("l-grid-group-togglebtn-close");
  9066. if (grouprow.hasClass("l-grid-grouprow-last"))
  9067. {
  9068. $("td:first", grouprow).width(g.gridtablewidth);
  9069. }
  9070. }
  9071. var currentRow = grouprow.next(".l-grid-row,.l-grid-totalsummary-group,.l-grid-detailpanel");
  9072. while (true)
  9073. {
  9074. if (currentRow.length == 0) break;
  9075. if (opening)
  9076. {
  9077. currentRow.show();
  9078. //如果是明细展开的行,并且之前的状态已经是关闭的,隐藏之
  9079. if (currentRow.hasClass("l-grid-detailpanel") && !currentRow.prev().find("td.l-grid-row-cell-detail:first span.l-grid-row-cell-detailbtn:first").hasClass("l-open"))
  9080. {
  9081. currentRow.hide();
  9082. }
  9083. }
  9084. else
  9085. {
  9086. currentRow.hide();
  9087. }
  9088. currentRow = currentRow.next(".l-grid-row,.l-grid-totalsummary-group,.l-grid-detailpanel");
  9089. }
  9090. g.trigger('SysGridHeightChanged');
  9091. }
  9092. //树 - 伸展/收缩节点
  9093. else if (src.treelink)
  9094. {
  9095. g.toggle(src.data);
  9096. }
  9097. else if (src.row && g.enabledCheckbox()) //复选框选择行
  9098. {
  9099. //复选框
  9100. var selectRowButtonOnly = p.selectRowButtonOnly ? true : false;
  9101. if (p.enabledEdit) selectRowButtonOnly = true;
  9102. if (src.checkbox || !selectRowButtonOnly)
  9103. {
  9104. var row = $(src.row);
  9105. var uncheck = row.hasClass("l-selected");
  9106. if (g.trigger('beforeCheckRow', [!uncheck, src.data, src.data['__id'], src.row]) == false)
  9107. return false;
  9108. var met = uncheck ? 'unselect' : 'select';
  9109. g[met](src.data);
  9110. if (p.tree && p.autoCheckChildren)
  9111. {
  9112. var children = g.getChildren(src.data, true);
  9113. for (var i = 0, l = children.length; i < l; i++)
  9114. {
  9115. g[met](children[i]);
  9116. }
  9117. }
  9118. g.trigger('checkRow', [!uncheck, src.data, src.data['__id'], src.row]);
  9119. }
  9120. if (!src.checkbox && src.cell && p.enabledEdit && p.clickToEdit)
  9121. {
  9122. g._applyEditor(src.cell);
  9123. }
  9124. }
  9125. else if (src.row && !g.enabledCheckbox())
  9126. {
  9127. if (src.cell && p.enabledEdit && p.clickToEdit)
  9128. {
  9129. g._applyEditor(src.cell);
  9130. }
  9131. //选择行
  9132. if ($(src.row).hasClass("l-selected"))
  9133. {
  9134. if (!p.allowUnSelectRow)
  9135. {
  9136. $(src.row).addClass("l-selected-again");
  9137. return;
  9138. }
  9139. g.unselect(src.data);
  9140. }
  9141. else
  9142. {
  9143. g.select(src.data);
  9144. }
  9145. }
  9146. else if (src.toolbar)
  9147. {
  9148. if (src.first)
  9149. {
  9150. if (g.trigger('toFirst', [g.element]) == false) return false;
  9151. g.changePage('first');
  9152. }
  9153. else if (src.prev)
  9154. {
  9155. if (g.trigger('toPrev', [g.element]) == false) return false;
  9156. g.changePage('prev');
  9157. }
  9158. else if (src.next)
  9159. {
  9160. if (g.trigger('toNext', [g.element]) == false) return false;
  9161. g.changePage('next');
  9162. }
  9163. else if (src.last)
  9164. {
  9165. if (g.trigger('toLast', [g.element]) == false) return false;
  9166. g.changePage('last');
  9167. }
  9168. else if (src.load)
  9169. {
  9170. if ($("span", src.load).hasClass("l-disabled")) return false;
  9171. if (g.trigger('reload', [g.element]) == false) return false;
  9172. if (p.url && g.isDataChanged && !confirm(p.isContinueByDataChanged))
  9173. return false;
  9174. g.loadData(p.where);
  9175. }
  9176. }
  9177. },
  9178. select: function (rowParm)
  9179. {
  9180. var g = this, p = this.options;
  9181. var rowdata = g.getRow(rowParm);
  9182. var rowid = rowdata['__id'];
  9183. var rowobj = g.getRowObj(rowid);
  9184. var rowobj1 = g.getRowObj(rowid, true);
  9185. if (!g.enabledCheckbox() && !g.ctrlKey) //单选
  9186. {
  9187. for (var i in g.selected)
  9188. {
  9189. var o = g.selected[i];
  9190. if (o['__id'] in g.records)
  9191. {
  9192. $(g.getRowObj(o)).removeClass("l-selected l-selected-again");
  9193. if (g.enabledFrozen())
  9194. $(g.getRowObj(o, true)).removeClass("l-selected l-selected-again");
  9195. }
  9196. }
  9197. g.selected = [];
  9198. }
  9199. if (rowobj) $(rowobj).addClass("l-selected");
  9200. if (rowobj1) $(rowobj1).addClass("l-selected");
  9201. g.selected[g.selected.length] = rowdata;
  9202. g.trigger('selectRow', [rowdata, rowid, rowobj]);
  9203. },
  9204. unselect: function (rowParm)
  9205. {
  9206. var g = this, p = this.options;
  9207. var rowdata = g.getRow(rowParm);
  9208. var rowid = rowdata['__id'];
  9209. var rowobj = g.getRowObj(rowid);
  9210. var rowobj1 = g.getRowObj(rowid, true);
  9211. $(rowobj).removeClass("l-selected l-selected-again");
  9212. if (g.enabledFrozen())
  9213. $(rowobj1).removeClass("l-selected l-selected-again");
  9214. g._removeSelected(rowdata);
  9215. g.trigger('unSelectRow', [rowdata, rowid, rowobj]);
  9216. },
  9217. isSelected: function (rowParm)
  9218. {
  9219. var g = this, p = this.options;
  9220. var rowdata = g.getRow(rowParm);
  9221. for (var i in g.selected)
  9222. {
  9223. if (g.selected[i] == rowdata) return true;
  9224. }
  9225. return false;
  9226. },
  9227. _onResize: function ()
  9228. {
  9229. var g = this, p = this.options;
  9230. if (p.height && p.height != 'auto')
  9231. {
  9232. var windowHeight = $(window).height();
  9233. //if(g.windowHeight != undefined && g.windowHeight == windowHeight) return;
  9234. var h = 0;
  9235. var parentHeight = null;
  9236. if (typeof (p.height) == "string" && p.height.indexOf('%') > 0)
  9237. {
  9238. var gridparent = g.grid.parent();
  9239. if (p.InWindow)
  9240. {
  9241. parentHeight = windowHeight;
  9242. parentHeight -= parseInt($('body').css('paddingTop'));
  9243. parentHeight -= parseInt($('body').css('paddingBottom'));
  9244. }
  9245. else
  9246. {
  9247. parentHeight = gridparent.height();
  9248. }
  9249. h = parentHeight * parseFloat(p.height) * 0.01;
  9250. if (p.InWindow || gridparent[0].tagName.toLowerCase() == "body")
  9251. h -= (g.grid.offset().top - parseInt($('body').css('paddingTop')));
  9252. }
  9253. else
  9254. {
  9255. h = parseInt(p.height);
  9256. }
  9257. h += p.heightDiff;
  9258. g.windowHeight = windowHeight;
  9259. g._setHeight(h);
  9260. }
  9261. if (g.enabledFrozen())
  9262. {
  9263. var gridView1Width = g.gridview1.width();
  9264. var gridViewWidth = g.gridview.width()
  9265. g.gridview2.css({
  9266. width: gridViewWidth - gridView1Width
  9267. });
  9268. }
  9269. g.trigger('SysGridHeightChanged');
  9270. }
  9271. });
  9272. $.ligerui.controls.Grid.prototype.enabledTotal = $.ligerui.controls.Grid.prototype.isTotalSummary;
  9273. $.ligerui.controls.Grid.prototype.add = $.ligerui.controls.Grid.prototype.addRow;
  9274. $.ligerui.controls.Grid.prototype.update = $.ligerui.controls.Grid.prototype.updateRow;
  9275. $.ligerui.controls.Grid.prototype.append = $.ligerui.controls.Grid.prototype.appendRow;
  9276. $.ligerui.controls.Grid.prototype.getSelected = $.ligerui.controls.Grid.prototype.getSelectedRow;
  9277. $.ligerui.controls.Grid.prototype.getSelecteds = $.ligerui.controls.Grid.prototype.getSelectedRows;
  9278. $.ligerui.controls.Grid.prototype.getCheckedRows = $.ligerui.controls.Grid.prototype.getSelectedRows;
  9279. $.ligerui.controls.Grid.prototype.getCheckedRowObjs = $.ligerui.controls.Grid.prototype.getSelectedRowObjs;
  9280. $.ligerui.controls.Grid.prototype.setOptions = $.ligerui.controls.Grid.prototype.set;
  9281. })(jQuery);/**
  9282. * jQuery ligerUI 1.1.9
  9283. *
  9284. * http://ligerui.com
  9285. *
  9286. * Author daomi 2012 [ gd_star@163.com ]
  9287. *
  9288. */
  9289. (function ($)
  9290. {
  9291. $.fn.ligerLayout = function (options)
  9292. {
  9293. return $.ligerui.run.call(this, "ligerLayout", arguments);
  9294. };
  9295. $.fn.ligerGetLayoutManager = function ()
  9296. {
  9297. return $.ligerui.run.call(this, "ligerGetLayoutManager", arguments);
  9298. };
  9299. $.ligerDefaults.Layout = {
  9300. topHeight: 50,
  9301. bottomHeight: 50,
  9302. leftWidth: 110,
  9303. centerWidth: 300,
  9304. rightWidth: 170,
  9305. InWindow: true, //是否以窗口的高度为准 height设置为百分比时可用
  9306. heightDiff: 0, //高度补差
  9307. height: '100%', //高度
  9308. onHeightChanged: null,
  9309. isLeftCollapse: false, //初始化时 左边是否隐藏
  9310. isRightCollapse: false, //初始化时 右边是否隐藏
  9311. allowLeftCollapse: true, //是否允许 左边可以隐藏
  9312. allowRightCollapse: true, //是否允许 右边可以隐藏
  9313. allowLeftResize: true, //是否允许 左边可以调整大小
  9314. allowRightResize: true, //是否允许 右边可以调整大小
  9315. allowTopResize: true, //是否允许 头部可以调整大小
  9316. allowBottomResize: true, //是否允许 底部可以调整大小
  9317. space: 3, //间隔
  9318. onEndResize: null, //调整大小结束事件
  9319. minLeftWidth: 80, //调整左侧宽度时的最小允许宽度
  9320. minRightWidth: 80 //调整右侧宽度时的最小允许宽度
  9321. };
  9322. $.ligerMethos.Layout = {};
  9323. $.ligerui.controls.Layout = function (element, options)
  9324. {
  9325. $.ligerui.controls.Layout.base.constructor.call(this, element, options);
  9326. };
  9327. $.ligerui.controls.Layout.ligerExtend($.ligerui.core.UIComponent, {
  9328. __getType: function ()
  9329. {
  9330. return 'Layout';
  9331. },
  9332. __idPrev: function ()
  9333. {
  9334. return 'Layout';
  9335. },
  9336. _extendMethods: function ()
  9337. {
  9338. return $.ligerMethos.Layout;
  9339. },
  9340. _render: function ()
  9341. {
  9342. var g = this, p = this.options;
  9343. g.layout = $(this.element);
  9344. g.layout.addClass("l-layout");
  9345. g.width = g.layout.width();
  9346. //top
  9347. if ($("> div[position=top]", g.layout).length > 0)
  9348. {
  9349. g.top = $("> div[position=top]", g.layout).wrap('<div class="l-layout-top" style="top:0px;"></div>').parent();
  9350. g.top.content = $("> div[position=top]", g.top);
  9351. if (!g.top.content.hasClass("l-layout-content"))
  9352. g.top.content.addClass("l-layout-content");
  9353. g.topHeight = p.topHeight;
  9354. if (g.topHeight)
  9355. {
  9356. g.top.height(g.topHeight);
  9357. }
  9358. }
  9359. //bottom
  9360. if ($("> div[position=bottom]", g.layout).length > 0)
  9361. {
  9362. g.bottom = $("> div[position=bottom]", g.layout).wrap('<div class="l-layout-bottom"></div>').parent();
  9363. g.bottom.content = $("> div[position=bottom]", g.bottom);
  9364. if (!g.bottom.content.hasClass("l-layout-content"))
  9365. g.bottom.content.addClass("l-layout-content");
  9366. g.bottomHeight = p.bottomHeight;
  9367. if (g.bottomHeight)
  9368. {
  9369. g.bottom.height(g.bottomHeight);
  9370. }
  9371. //set title
  9372. var bottomtitle = g.bottom.content.attr("title");
  9373. if (bottomtitle)
  9374. {
  9375. g.bottom.header = $('<div class="l-layout-header"></div>');
  9376. g.bottom.prepend(g.bottom.header);
  9377. g.bottom.header.html(bottomtitle);
  9378. g.bottom.content.attr("title", "");
  9379. }
  9380. }
  9381. //left
  9382. if ($("> div[position=left]", g.layout).length > 0)
  9383. {
  9384. g.left = $("> div[position=left]", g.layout).wrap('<div class="l-layout-left" style="left:0px;"></div>').parent();
  9385. g.left.header = $('<div class="l-layout-header"><div class="l-layout-header-toggle"></div><div class="l-layout-header-inner"></div></div>');
  9386. g.left.prepend(g.left.header);
  9387. g.left.header.toggle = $(".l-layout-header-toggle", g.left.header);
  9388. g.left.content = $("> div[position=left]", g.left);
  9389. if (!g.left.content.hasClass("l-layout-content"))
  9390. g.left.content.addClass("l-layout-content");
  9391. if (!p.allowLeftCollapse) $(".l-layout-header-toggle", g.left.header).remove();
  9392. //set title
  9393. var lefttitle = g.left.content.attr("title");
  9394. if (lefttitle)
  9395. {
  9396. g.left.content.attr("title", "");
  9397. $(".l-layout-header-inner", g.left.header).html(lefttitle);
  9398. }
  9399. //set width
  9400. g.leftWidth = p.leftWidth;
  9401. if (g.leftWidth)
  9402. g.left.width(g.leftWidth);
  9403. }
  9404. //center
  9405. if ($("> div[position=center]", g.layout).length > 0)
  9406. {
  9407. g.center = $("> div[position=center]", g.layout).wrap('<div class="l-layout-center" ></div>').parent();
  9408. g.center.content = $("> div[position=center]", g.center);
  9409. g.center.content.addClass("l-layout-content");
  9410. //set title
  9411. var centertitle = g.center.content.attr("title");
  9412. if (centertitle)
  9413. {
  9414. g.center.content.attr("title", "");
  9415. g.center.header = $('<div class="l-layout-header"></div>');
  9416. g.center.prepend(g.center.header);
  9417. g.center.header.html(centertitle);
  9418. }
  9419. //set width
  9420. g.centerWidth = p.centerWidth;
  9421. if (g.centerWidth)
  9422. g.center.width(g.centerWidth);
  9423. }
  9424. //right
  9425. if ($("> div[position=right]", g.layout).length > 0)
  9426. {
  9427. g.right = $("> div[position=right]", g.layout).wrap('<div class="l-layout-right"></div>').parent();
  9428. g.right.header = $('<div class="l-layout-header"><div class="l-layout-header-toggle"></div><div class="l-layout-header-inner"></div></div>');
  9429. g.right.prepend(g.right.header);
  9430. g.right.header.toggle = $(".l-layout-header-toggle", g.right.header);
  9431. if (!p.allowRightCollapse) $(".l-layout-header-toggle", g.right.header).remove();
  9432. g.right.content = $("> div[position=right]", g.right);
  9433. if (!g.right.content.hasClass("l-layout-content"))
  9434. g.right.content.addClass("l-layout-content");
  9435. //set title
  9436. var righttitle = g.right.content.attr("title");
  9437. if (righttitle)
  9438. {
  9439. g.right.content.attr("title", "");
  9440. $(".l-layout-header-inner", g.right.header).html(righttitle);
  9441. }
  9442. //set width
  9443. g.rightWidth = p.rightWidth;
  9444. if (g.rightWidth)
  9445. g.right.width(g.rightWidth);
  9446. }
  9447. //lock
  9448. g.layout.lock = $("<div class='l-layout-lock'></div>");
  9449. g.layout.append(g.layout.lock);
  9450. //DropHandle
  9451. g._addDropHandle();
  9452. //Collapse
  9453. g.isLeftCollapse = p.isLeftCollapse;
  9454. g.isRightCollapse = p.isRightCollapse;
  9455. g.leftCollapse = $('<div class="l-layout-collapse-left" style="display: none; "><div class="l-layout-collapse-left-toggle"></div></div>');
  9456. g.rightCollapse = $('<div class="l-layout-collapse-right" style="display: none; "><div class="l-layout-collapse-right-toggle"></div></div>');
  9457. g.layout.append(g.leftCollapse).append(g.rightCollapse);
  9458. g.leftCollapse.toggle = $("> .l-layout-collapse-left-toggle", g.leftCollapse);
  9459. g.rightCollapse.toggle = $("> .l-layout-collapse-right-toggle", g.rightCollapse);
  9460. g._setCollapse();
  9461. //init
  9462. g._bulid();
  9463. $(window).resize(function ()
  9464. {
  9465. g._onResize();
  9466. });
  9467. g.set(p);
  9468. },
  9469. setLeftCollapse: function (isCollapse)
  9470. {
  9471. var g = this, p = this.options;
  9472. if (!g.left) return false;
  9473. g.isLeftCollapse = isCollapse;
  9474. if (g.isLeftCollapse)
  9475. {
  9476. g.leftCollapse.show();
  9477. g.leftDropHandle && g.leftDropHandle.hide();
  9478. g.left.hide();
  9479. }
  9480. else
  9481. {
  9482. g.leftCollapse.hide();
  9483. g.leftDropHandle && g.leftDropHandle.show();
  9484. g.left.show();
  9485. }
  9486. g._onResize();
  9487. },
  9488. setRightCollapse: function (isCollapse)
  9489. {
  9490. var g = this, p = this.options;
  9491. if (!g.right) return false;
  9492. g.isRightCollapse = isCollapse;
  9493. g._onResize();
  9494. if (g.isRightCollapse)
  9495. {
  9496. g.rightCollapse.show();
  9497. g.rightDropHandle && g.rightDropHandle.hide();
  9498. g.right.hide();
  9499. }
  9500. else
  9501. {
  9502. g.rightCollapse.hide();
  9503. g.rightDropHandle && g.rightDropHandle.show();
  9504. g.right.show();
  9505. }
  9506. g._onResize();
  9507. },
  9508. _bulid: function ()
  9509. {
  9510. var g = this, p = this.options;
  9511. $("> .l-layout-left .l-layout-header,> .l-layout-right .l-layout-header", g.layout).hover(function ()
  9512. {
  9513. $(this).addClass("l-layout-header-over");
  9514. }, function ()
  9515. {
  9516. $(this).removeClass("l-layout-header-over");
  9517. });
  9518. $(".l-layout-header-toggle", g.layout).hover(function ()
  9519. {
  9520. $(this).addClass("l-layout-header-toggle-over");
  9521. }, function ()
  9522. {
  9523. $(this).removeClass("l-layout-header-toggle-over");
  9524. });
  9525. $(".l-layout-header-toggle", g.left).click(function ()
  9526. {
  9527. g.setLeftCollapse(true);
  9528. });
  9529. $(".l-layout-header-toggle", g.right).click(function ()
  9530. {
  9531. g.setRightCollapse(true);
  9532. });
  9533. //set top
  9534. g.middleTop = 0;
  9535. if (g.top)
  9536. {
  9537. g.middleTop += g.top.height();
  9538. g.middleTop += parseInt(g.top.css('borderTopWidth'));
  9539. g.middleTop += parseInt(g.top.css('borderBottomWidth'));
  9540. g.middleTop += p.space;
  9541. }
  9542. if (g.left)
  9543. {
  9544. g.left.css({ top: g.middleTop });
  9545. g.leftCollapse.css({ top: g.middleTop });
  9546. }
  9547. if (g.center) g.center.css({ top: g.middleTop });
  9548. if (g.right)
  9549. {
  9550. g.right.css({ top: g.middleTop });
  9551. g.rightCollapse.css({ top: g.middleTop });
  9552. }
  9553. //set left
  9554. if (g.left) g.left.css({ left: 0 });
  9555. g._onResize();
  9556. g._onResize();
  9557. },
  9558. _setCollapse: function ()
  9559. {
  9560. var g = this, p = this.options;
  9561. g.leftCollapse.hover(function ()
  9562. {
  9563. $(this).addClass("l-layout-collapse-left-over");
  9564. }, function ()
  9565. {
  9566. $(this).removeClass("l-layout-collapse-left-over");
  9567. });
  9568. g.leftCollapse.toggle.hover(function ()
  9569. {
  9570. $(this).addClass("l-layout-collapse-left-toggle-over");
  9571. }, function ()
  9572. {
  9573. $(this).removeClass("l-layout-collapse-left-toggle-over");
  9574. });
  9575. g.rightCollapse.hover(function ()
  9576. {
  9577. $(this).addClass("l-layout-collapse-right-over");
  9578. }, function ()
  9579. {
  9580. $(this).removeClass("l-layout-collapse-right-over");
  9581. });
  9582. g.rightCollapse.toggle.hover(function ()
  9583. {
  9584. $(this).addClass("l-layout-collapse-right-toggle-over");
  9585. }, function ()
  9586. {
  9587. $(this).removeClass("l-layout-collapse-right-toggle-over");
  9588. });
  9589. g.leftCollapse.toggle.click(function ()
  9590. {
  9591. g.setLeftCollapse(false);
  9592. });
  9593. g.rightCollapse.toggle.click(function ()
  9594. {
  9595. g.setRightCollapse(false);
  9596. });
  9597. if (g.left && g.isLeftCollapse)
  9598. {
  9599. g.leftCollapse.show();
  9600. g.leftDropHandle && g.leftDropHandle.hide();
  9601. g.left.hide();
  9602. }
  9603. if (g.right && g.isRightCollapse)
  9604. {
  9605. g.rightCollapse.show();
  9606. g.rightDropHandle && g.rightDropHandle.hide();
  9607. g.right.hide();
  9608. }
  9609. },
  9610. _addDropHandle: function ()
  9611. {
  9612. var g = this, p = this.options;
  9613. if (g.left && p.allowLeftResize)
  9614. {
  9615. g.leftDropHandle = $("<div class='l-layout-drophandle-left'></div>");
  9616. g.layout.append(g.leftDropHandle);
  9617. g.leftDropHandle && g.leftDropHandle.show();
  9618. g.leftDropHandle.mousedown(function (e)
  9619. {
  9620. g._start('leftresize', e);
  9621. });
  9622. }
  9623. if (g.right && p.allowRightResize)
  9624. {
  9625. g.rightDropHandle = $("<div class='l-layout-drophandle-right'></div>");
  9626. g.layout.append(g.rightDropHandle);
  9627. g.rightDropHandle && g.rightDropHandle.show();
  9628. g.rightDropHandle.mousedown(function (e)
  9629. {
  9630. g._start('rightresize', e);
  9631. });
  9632. }
  9633. if (g.top && p.allowTopResize)
  9634. {
  9635. g.topDropHandle = $("<div class='l-layout-drophandle-top'></div>");
  9636. g.layout.append(g.topDropHandle);
  9637. g.topDropHandle.show();
  9638. g.topDropHandle.mousedown(function (e)
  9639. {
  9640. g._start('topresize', e);
  9641. });
  9642. }
  9643. if (g.bottom && p.allowBottomResize)
  9644. {
  9645. g.bottomDropHandle = $("<div class='l-layout-drophandle-bottom'></div>");
  9646. g.layout.append(g.bottomDropHandle);
  9647. g.bottomDropHandle.show();
  9648. g.bottomDropHandle.mousedown(function (e)
  9649. {
  9650. g._start('bottomresize', e);
  9651. });
  9652. }
  9653. g.draggingxline = $("<div class='l-layout-dragging-xline'></div>");
  9654. g.draggingyline = $("<div class='l-layout-dragging-yline'></div>");
  9655. g.layout.append(g.draggingxline).append(g.draggingyline);
  9656. },
  9657. _setDropHandlePosition: function ()
  9658. {
  9659. var g = this, p = this.options;
  9660. if (g.leftDropHandle)
  9661. {
  9662. g.leftDropHandle.css({ left: g.left.width() + parseInt(g.left.css('left')), height: g.middleHeight, top: g.middleTop });
  9663. }
  9664. if (g.rightDropHandle)
  9665. {
  9666. g.rightDropHandle.css({ left: parseInt(g.right.css('left')) - p.space, height: g.middleHeight, top: g.middleTop });
  9667. }
  9668. if (g.topDropHandle)
  9669. {
  9670. g.topDropHandle.css({ top: g.top.height() + parseInt(g.top.css('top')), width: g.top.width() });
  9671. }
  9672. if (g.bottomDropHandle)
  9673. {
  9674. g.bottomDropHandle.css({ top: parseInt(g.bottom.css('top')) - p.space, width: g.bottom.width() });
  9675. }
  9676. },
  9677. _onResize: function ()
  9678. {
  9679. var g = this, p = this.options;
  9680. var oldheight = g.layout.height();
  9681. //set layout height
  9682. var h = 0;
  9683. var windowHeight = $(window).height();
  9684. var parentHeight = null;
  9685. if (typeof (p.height) == "string" && p.height.indexOf('%') > 0)
  9686. {
  9687. var layoutparent = g.layout.parent();
  9688. if (p.InWindow || layoutparent[0].tagName.toLowerCase() == "body")
  9689. {
  9690. parentHeight = windowHeight;
  9691. parentHeight -= parseInt($('body').css('paddingTop'));
  9692. parentHeight -= parseInt($('body').css('paddingBottom'));
  9693. }
  9694. else
  9695. {
  9696. parentHeight = layoutparent.height();
  9697. }
  9698. h = parentHeight * parseFloat(p.height) * 0.01;
  9699. if (p.InWindow || layoutparent[0].tagName.toLowerCase() == "body")
  9700. h -= (g.layout.offset().top - parseInt($('body').css('paddingTop')));
  9701. }
  9702. else
  9703. {
  9704. h = parseInt(p.height);
  9705. }
  9706. h += p.heightDiff;
  9707. g.layout.height(h);
  9708. g.layoutHeight = g.layout.height();
  9709. g.middleWidth = g.layout.width();
  9710. g.middleHeight = g.layout.height();
  9711. if (g.top)
  9712. {
  9713. g.middleHeight -= g.top.height();
  9714. g.middleHeight -= parseInt(g.top.css('borderTopWidth'));
  9715. g.middleHeight -= parseInt(g.top.css('borderBottomWidth'));
  9716. g.middleHeight -= p.space;
  9717. }
  9718. if (g.bottom)
  9719. {
  9720. g.middleHeight -= g.bottom.height();
  9721. g.middleHeight -= parseInt(g.bottom.css('borderTopWidth'));
  9722. g.middleHeight -= parseInt(g.bottom.css('borderBottomWidth'));
  9723. g.middleHeight -= p.space;
  9724. }
  9725. //specific
  9726. g.middleHeight -= 2;
  9727. if (g.hasBind('heightChanged') && g.layoutHeight != oldheight)
  9728. {
  9729. g.trigger('heightChanged', [{ layoutHeight: g.layoutHeight, diff: g.layoutHeight - oldheight, middleHeight: g.middleHeight}]);
  9730. }
  9731. if (g.center)
  9732. {
  9733. g.centerWidth = g.middleWidth;
  9734. if (g.left)
  9735. {
  9736. if (g.isLeftCollapse)
  9737. {
  9738. g.centerWidth -= g.leftCollapse.width();
  9739. g.centerWidth -= parseInt(g.leftCollapse.css('borderLeftWidth'));
  9740. g.centerWidth -= parseInt(g.leftCollapse.css('borderRightWidth'));
  9741. g.centerWidth -= parseInt(g.leftCollapse.css('left'));
  9742. g.centerWidth -= p.space;
  9743. }
  9744. else
  9745. {
  9746. g.centerWidth -= g.leftWidth;
  9747. g.centerWidth -= parseInt(g.left.css('borderLeftWidth'));
  9748. g.centerWidth -= parseInt(g.left.css('borderRightWidth'));
  9749. g.centerWidth -= parseInt(g.left.css('left'));
  9750. g.centerWidth -= p.space;
  9751. }
  9752. }
  9753. if (g.right)
  9754. {
  9755. if (g.isRightCollapse)
  9756. {
  9757. g.centerWidth -= g.rightCollapse.width();
  9758. g.centerWidth -= parseInt(g.rightCollapse.css('borderLeftWidth'));
  9759. g.centerWidth -= parseInt(g.rightCollapse.css('borderRightWidth'));
  9760. g.centerWidth -= parseInt(g.rightCollapse.css('right'));
  9761. g.centerWidth -= p.space;
  9762. }
  9763. else
  9764. {
  9765. g.centerWidth -= g.rightWidth;
  9766. g.centerWidth -= parseInt(g.right.css('borderLeftWidth'));
  9767. g.centerWidth -= parseInt(g.right.css('borderRightWidth'));
  9768. g.centerWidth -= p.space;
  9769. }
  9770. }
  9771. g.centerLeft = 0;
  9772. if (g.left)
  9773. {
  9774. if (g.isLeftCollapse)
  9775. {
  9776. g.centerLeft += g.leftCollapse.width();
  9777. g.centerLeft += parseInt(g.leftCollapse.css('borderLeftWidth'));
  9778. g.centerLeft += parseInt(g.leftCollapse.css('borderRightWidth'));
  9779. g.centerLeft += parseInt(g.leftCollapse.css('left'));
  9780. g.centerLeft += p.space;
  9781. }
  9782. else
  9783. {
  9784. g.centerLeft += g.left.width();
  9785. g.centerLeft += parseInt(g.left.css('borderLeftWidth'));
  9786. g.centerLeft += parseInt(g.left.css('borderRightWidth'));
  9787. g.centerLeft += p.space;
  9788. }
  9789. }
  9790. g.center.css({ left: g.centerLeft });
  9791. g.center.width(g.centerWidth);
  9792. g.center.height(g.middleHeight);
  9793. var contentHeight = g.middleHeight;
  9794. if (g.center.header) contentHeight -= g.center.header.height();
  9795. g.center.content.height(contentHeight);
  9796. }
  9797. if (g.left)
  9798. {
  9799. g.leftCollapse.height(g.middleHeight);
  9800. g.left.height(g.middleHeight);
  9801. }
  9802. if (g.right)
  9803. {
  9804. g.rightCollapse.height(g.middleHeight);
  9805. g.right.height(g.middleHeight);
  9806. //set left
  9807. g.rightLeft = 0;
  9808. if (g.left)
  9809. {
  9810. if (g.isLeftCollapse)
  9811. {
  9812. g.rightLeft += g.leftCollapse.width();
  9813. g.rightLeft += parseInt(g.leftCollapse.css('borderLeftWidth'));
  9814. g.rightLeft += parseInt(g.leftCollapse.css('borderRightWidth'));
  9815. g.rightLeft += p.space;
  9816. }
  9817. else
  9818. {
  9819. g.rightLeft += g.left.width();
  9820. g.rightLeft += parseInt(g.left.css('borderLeftWidth'));
  9821. g.rightLeft += parseInt(g.left.css('borderRightWidth'));
  9822. g.rightLeft += parseInt(g.left.css('left'));
  9823. g.rightLeft += p.space;
  9824. }
  9825. }
  9826. if (g.center)
  9827. {
  9828. g.rightLeft += g.center.width();
  9829. g.rightLeft += parseInt(g.center.css('borderLeftWidth'));
  9830. g.rightLeft += parseInt(g.center.css('borderRightWidth'));
  9831. g.rightLeft += p.space;
  9832. }
  9833. g.right.css({ left: g.rightLeft });
  9834. }
  9835. if (g.bottom)
  9836. {
  9837. g.bottomTop = g.layoutHeight - g.bottom.height() - 2;
  9838. g.bottom.css({ top: g.bottomTop });
  9839. }
  9840. g._setDropHandlePosition();
  9841. },
  9842. _start: function (dragtype, e)
  9843. {
  9844. var g = this, p = this.options;
  9845. g.dragtype = dragtype;
  9846. if (dragtype == 'leftresize' || dragtype == 'rightresize')
  9847. {
  9848. g.xresize = { startX: e.pageX };
  9849. g.draggingyline.css({ left: e.pageX - g.layout.offset().left, height: g.middleHeight, top: g.middleTop }).show();
  9850. $('body').css('cursor', 'col-resize');
  9851. }
  9852. else if (dragtype == 'topresize' || dragtype == 'bottomresize')
  9853. {
  9854. g.yresize = { startY: e.pageY };
  9855. g.draggingxline.css({ top: e.pageY - g.layout.offset().top, width: g.layout.width() }).show();
  9856. $('body').css('cursor', 'row-resize');
  9857. }
  9858. else
  9859. {
  9860. return;
  9861. }
  9862. g.layout.lock.width(g.layout.width());
  9863. g.layout.lock.height(g.layout.height());
  9864. g.layout.lock.show();
  9865. if ($.browser.msie || $.browser.safari) $('body').bind('selectstart', function () { return false; }); // 不能选择
  9866. $(document).bind('mouseup', function ()
  9867. {
  9868. g._stop.apply(g, arguments);
  9869. });
  9870. $(document).bind('mousemove', function ()
  9871. {
  9872. g._drag.apply(g, arguments);
  9873. });
  9874. },
  9875. _drag: function (e)
  9876. {
  9877. var g = this, p = this.options;
  9878. if (g.xresize)
  9879. {
  9880. g.xresize.diff = e.pageX - g.xresize.startX;
  9881. g.draggingyline.css({ left: e.pageX - g.layout.offset().left });
  9882. $('body').css('cursor', 'col-resize');
  9883. }
  9884. else if (g.yresize)
  9885. {
  9886. g.yresize.diff = e.pageY - g.yresize.startY;
  9887. g.draggingxline.css({ top: e.pageY - g.layout.offset().top });
  9888. $('body').css('cursor', 'row-resize');
  9889. }
  9890. },
  9891. _stop: function (e)
  9892. {
  9893. var g = this, p = this.options;
  9894. var diff;
  9895. if (g.xresize && g.xresize.diff != undefined)
  9896. {
  9897. diff = g.xresize.diff;
  9898. if (g.dragtype == 'leftresize')
  9899. {
  9900. if (p.minLeftWidth)
  9901. {
  9902. if (g.leftWidth + g.xresize.diff < p.minLeftWidth)
  9903. return;
  9904. }
  9905. g.leftWidth += g.xresize.diff;
  9906. g.left.width(g.leftWidth);
  9907. if (g.center)
  9908. g.center.width(g.center.width() - g.xresize.diff).css({ left: parseInt(g.center.css('left')) + g.xresize.diff });
  9909. else if (g.right)
  9910. g.right.width(g.left.width() - g.xresize.diff).css({ left: parseInt(g.right.css('left')) + g.xresize.diff });
  9911. }
  9912. else if (g.dragtype == 'rightresize')
  9913. {
  9914. if (p.minRightWidth)
  9915. {
  9916. if (g.rightWidth - g.xresize.diff < p.minRightWidth)
  9917. return;
  9918. }
  9919. g.rightWidth -= g.xresize.diff;
  9920. g.right.width(g.rightWidth).css({ left: parseInt(g.right.css('left')) + g.xresize.diff });
  9921. if (g.center)
  9922. g.center.width(g.center.width() + g.xresize.diff);
  9923. else if (g.left)
  9924. g.left.width(g.left.width() + g.xresize.diff);
  9925. }
  9926. }
  9927. else if (g.yresize && g.yresize.diff != undefined)
  9928. {
  9929. diff = g.yresize.diff;
  9930. if (g.dragtype == 'topresize')
  9931. {
  9932. g.top.height(g.top.height() + g.yresize.diff);
  9933. g.middleTop += g.yresize.diff;
  9934. g.middleHeight -= g.yresize.diff;
  9935. if (g.left)
  9936. {
  9937. g.left.css({ top: g.middleTop }).height(g.middleHeight);
  9938. g.leftCollapse.css({ top: g.middleTop }).height(g.middleHeight);
  9939. }
  9940. if (g.center) g.center.css({ top: g.middleTop }).height(g.middleHeight);
  9941. if (g.right)
  9942. {
  9943. g.right.css({ top: g.middleTop }).height(g.middleHeight);
  9944. g.rightCollapse.css({ top: g.middleTop }).height(g.middleHeight);
  9945. }
  9946. }
  9947. else if (g.dragtype == 'bottomresize')
  9948. {
  9949. g.bottom.height(g.bottom.height() - g.yresize.diff);
  9950. g.middleHeight += g.yresize.diff;
  9951. g.bottomTop += g.yresize.diff;
  9952. g.bottom.css({ top: g.bottomTop });
  9953. if (g.left)
  9954. {
  9955. g.left.height(g.middleHeight);
  9956. g.leftCollapse.height(g.middleHeight);
  9957. }
  9958. if (g.center) g.center.height(g.middleHeight);
  9959. if (g.right)
  9960. {
  9961. g.right.height(g.middleHeight);
  9962. g.rightCollapse.height(g.middleHeight);
  9963. }
  9964. }
  9965. }
  9966. g.trigger('endResize', [{
  9967. direction: g.dragtype ? g.dragtype.replace(/resize/, '') : '',
  9968. diff: diff
  9969. }, e]);
  9970. g._setDropHandlePosition();
  9971. g.draggingxline.hide();
  9972. g.draggingyline.hide();
  9973. g.xresize = g.yresize = g.dragtype = false;
  9974. g.layout.lock.hide();
  9975. if ($.browser.msie || $.browser.safari)
  9976. $('body').unbind('selectstart');
  9977. $(document).unbind('mousemove', g._drag);
  9978. $(document).unbind('mouseup', g._stop);
  9979. $('body').css('cursor', '');
  9980. }
  9981. });
  9982. })(jQuery);/**
  9983. * jQuery ligerUI 1.1.9
  9984. *
  9985. * http://ligerui.com
  9986. *
  9987. * Author daomi 2012 [ gd_star@163.com ]
  9988. *
  9989. */
  9990. (function ($)
  9991. {
  9992. $.ligerMenu = function (options)
  9993. {
  9994. return $.ligerui.run.call(null, "ligerMenu", arguments);
  9995. };
  9996. $.ligerDefaults.Menu = {
  9997. width: 120,
  9998. top: 0,
  9999. left: 0,
  10000. items: null,
  10001. shadow: true
  10002. };
  10003. $.ligerMethos.Menu = {};
  10004. $.ligerui.controls.Menu = function (options)
  10005. {
  10006. $.ligerui.controls.Menu.base.constructor.call(this, null, options);
  10007. };
  10008. $.ligerui.controls.Menu.ligerExtend($.ligerui.core.UIComponent, {
  10009. __getType: function ()
  10010. {
  10011. return 'Menu';
  10012. },
  10013. __idPrev: function ()
  10014. {
  10015. return 'Menu';
  10016. },
  10017. _extendMethods: function ()
  10018. {
  10019. return $.ligerMethos.Menu;
  10020. },
  10021. _render: function ()
  10022. {
  10023. var g = this, p = this.options;
  10024. g.menuItemCount = 0;
  10025. //全部菜单
  10026. g.menus = {};
  10027. //顶级菜单
  10028. g.menu = g.createMenu();
  10029. g.element = g.menu[0];
  10030. g.menu.css({ top: p.top, left: p.left, width: p.width });
  10031. p.items && $(p.items).each(function (i, item)
  10032. {
  10033. g.addItem(item);
  10034. });
  10035. $(document).bind('click.menu', function ()
  10036. {
  10037. for (var menuid in g.menus)
  10038. {
  10039. var menu = g.menus[menuid];
  10040. if (!menu) return;
  10041. menu.hide();
  10042. if (menu.shadow) menu.shadow.hide();
  10043. }
  10044. });
  10045. g.set(p);
  10046. },
  10047. show: function (options, menu)
  10048. {
  10049. var g = this, p = this.options;
  10050. if (menu == undefined) menu = g.menu;
  10051. if (options && options.left != undefined)
  10052. {
  10053. menu.css({ left: options.left });
  10054. }
  10055. if (options && options.top != undefined)
  10056. {
  10057. menu.css({ top: options.top });
  10058. }
  10059. menu.show();
  10060. g.updateShadow(menu);
  10061. },
  10062. updateShadow: function (menu)
  10063. {
  10064. var g = this, p = this.options;
  10065. if (!p.shadow) return;
  10066. menu.shadow.css({
  10067. left: menu.css('left'),
  10068. top: menu.css('top'),
  10069. width: menu.outerWidth(),
  10070. height: menu.outerHeight()
  10071. });
  10072. if (menu.is(":visible"))
  10073. menu.shadow.show();
  10074. else
  10075. menu.shadow.hide();
  10076. },
  10077. hide: function (menu)
  10078. {
  10079. var g = this, p = this.options;
  10080. if (menu == undefined) menu = g.menu;
  10081. g.hideAllSubMenu(menu);
  10082. menu.hide();
  10083. g.updateShadow(menu);
  10084. },
  10085. toggle: function ()
  10086. {
  10087. var g = this, p = this.options;
  10088. g.menu.toggle();
  10089. g.updateShadow(g.menu);
  10090. },
  10091. removeItem: function (itemid)
  10092. {
  10093. var g = this, p = this.options;
  10094. $("> .l-menu-item[menuitemid=" + itemid + "]", g.menu.items).remove();
  10095. },
  10096. setEnabled: function (itemid)
  10097. {
  10098. var g = this, p = this.options;
  10099. $("> .l-menu-item[menuitemid=" + itemid + "]", g.menu.items).removeClass("l-menu-item-disable");
  10100. },
  10101. setDisabled: function (itemid)
  10102. {
  10103. var g = this, p = this.options;
  10104. $("> .l-menu-item[menuitemid=" + itemid + "]", g.menu.items).addClass("l-menu-item-disable");
  10105. },
  10106. isEnable: function (itemid)
  10107. {
  10108. var g = this, p = this.options;
  10109. return !$("> .l-menu-item[menuitemid=" + itemid + "]", g.menu.items).hasClass("l-menu-item-disable");
  10110. },
  10111. getItemCount: function ()
  10112. {
  10113. var g = this, p = this.options;
  10114. return $("> .l-menu-item", g.menu.items).length;
  10115. },
  10116. addItem: function (item, menu)
  10117. {
  10118. var g = this, p = this.options;
  10119. if (!item) return;
  10120. if (menu == undefined) menu = g.menu;
  10121. if (item.line)
  10122. {
  10123. menu.items.append('<div class="l-menu-item-line"></div>');
  10124. return;
  10125. }
  10126. var ditem = $('<div class="l-menu-item"><div class="l-menu-item-text"></div> </div>');
  10127. var itemcount = $("> .l-menu-item", menu.items).length;
  10128. menu.items.append(ditem);
  10129. ditem.attr("ligeruimenutemid", ++g.menuItemCount);
  10130. item.id && ditem.attr("menuitemid", item.id);
  10131. item.text && $(">.l-menu-item-text:first", ditem).html(item.text);
  10132. item.icon && ditem.prepend('<div class="l-menu-item-icon l-icon-' + item.icon + '"></div>');
  10133. if (item.disable || item.disabled)
  10134. ditem.addClass("l-menu-item-disable");
  10135. if (item.children)
  10136. {
  10137. ditem.append('<div class="l-menu-item-arrow"></div>');
  10138. var newmenu = g.createMenu(ditem.attr("ligeruimenutemid"));
  10139. g.menus[ditem.attr("ligeruimenutemid")] = newmenu;
  10140. newmenu.width(p.width);
  10141. newmenu.hover(null, function ()
  10142. {
  10143. if (!newmenu.showedSubMenu)
  10144. g.hide(newmenu);
  10145. });
  10146. $(item.children).each(function ()
  10147. {
  10148. g.addItem(this, newmenu);
  10149. });
  10150. }
  10151. item.click && ditem.click(function ()
  10152. {
  10153. if ($(this).hasClass("l-menu-item-disable")) return;
  10154. item.click(item, itemcount);
  10155. });
  10156. item.dblclick && ditem.dblclick(function ()
  10157. {
  10158. if ($(this).hasClass("l-menu-item-disable")) return;
  10159. item.dblclick(item, itemcount);
  10160. });
  10161. var menuover = $("> .l-menu-over:first", menu);
  10162. ditem.hover(function ()
  10163. {
  10164. if ($(this).hasClass("l-menu-item-disable")) return;
  10165. var itemtop = $(this).offset().top;
  10166. var top = itemtop - menu.offset().top;
  10167. menuover.css({ top: top });
  10168. g.hideAllSubMenu(menu);
  10169. if (item.children)
  10170. {
  10171. var ligeruimenutemid = $(this).attr("ligeruimenutemid");
  10172. if (!ligeruimenutemid) return;
  10173. if (g.menus[ligeruimenutemid])
  10174. {
  10175. g.show({ top: itemtop, left: $(this).offset().left + $(this).width() - 5 }, g.menus[ligeruimenutemid]);
  10176. menu.showedSubMenu = true;
  10177. }
  10178. }
  10179. }, function ()
  10180. {
  10181. if ($(this).hasClass("l-menu-item-disable")) return;
  10182. var ligeruimenutemid = $(this).attr("ligeruimenutemid");
  10183. if (item.children)
  10184. {
  10185. var ligeruimenutemid = $(this).attr("ligeruimenutemid");
  10186. if (!ligeruimenutemid) return;
  10187. };
  10188. });
  10189. },
  10190. hideAllSubMenu: function (menu)
  10191. {
  10192. var g = this, p = this.options;
  10193. if (menu == undefined) menu = g.menu;
  10194. $("> .l-menu-item", menu.items).each(function ()
  10195. {
  10196. if ($("> .l-menu-item-arrow", this).length > 0)
  10197. {
  10198. var ligeruimenutemid = $(this).attr("ligeruimenutemid");
  10199. if (!ligeruimenutemid) return;
  10200. g.menus[ligeruimenutemid] && g.hide(g.menus[ligeruimenutemid]);
  10201. }
  10202. });
  10203. menu.showedSubMenu = false;
  10204. },
  10205. createMenu: function (parentMenuItemID)
  10206. {
  10207. var g = this, p = this.options;
  10208. var menu = $('<div class="l-menu" style="display:none"><div class="l-menu-yline"></div><div class="l-menu-over"><div class="l-menu-over-l"></div> <div class="l-menu-over-r"></div></div><div class="l-menu-inner"></div></div>');
  10209. parentMenuItemID && menu.attr("ligeruiparentmenuitemid", parentMenuItemID);
  10210. menu.items = $("> .l-menu-inner:first", menu);
  10211. menu.appendTo('body');
  10212. if (p.shadow)
  10213. {
  10214. menu.shadow = $('<div class="l-menu-shadow"></div>').insertAfter(menu);
  10215. g.updateShadow(menu);
  10216. }
  10217. menu.hover(null, function ()
  10218. {
  10219. if (!menu.showedSubMenu)
  10220. $("> .l-menu-over:first", menu).css({ top: -24 });
  10221. });
  10222. if (parentMenuItemID)
  10223. g.menus[parentMenuItemID] = menu;
  10224. else
  10225. g.menus[0] = menu;
  10226. return menu;
  10227. }
  10228. });
  10229. //旧写法保留
  10230. $.ligerui.controls.Menu.prototype.setEnable = $.ligerui.controls.Menu.prototype.setEnabled;
  10231. $.ligerui.controls.Menu.prototype.setDisable = $.ligerui.controls.Menu.prototype.setDisabled;
  10232. })(jQuery);/**
  10233. * jQuery ligerUI 1.1.9
  10234. *
  10235. * http://ligerui.com
  10236. *
  10237. * Author daomi 2012 [ gd_star@163.com ]
  10238. *
  10239. */
  10240. (function ($)
  10241. {
  10242. $.fn.ligerMenuBar = function (options)
  10243. {
  10244. return $.ligerui.run.call(this, "ligerMenuBar", arguments);
  10245. };
  10246. $.fn.ligerGetMenuBarManager = function ()
  10247. {
  10248. return $.ligerui.run.call(this, "ligerGetMenuBarManager", arguments);
  10249. };
  10250. $.ligerDefaults.MenuBar = {};
  10251. $.ligerMethos.MenuBar = {};
  10252. $.ligerui.controls.MenuBar = function (element, options)
  10253. {
  10254. $.ligerui.controls.MenuBar.base.constructor.call(this, element, options);
  10255. };
  10256. $.ligerui.controls.MenuBar.ligerExtend($.ligerui.core.UIComponent, {
  10257. __getType: function ()
  10258. {
  10259. return 'MenuBar';
  10260. },
  10261. __idPrev: function ()
  10262. {
  10263. return 'MenuBar';
  10264. },
  10265. _extendMethods: function ()
  10266. {
  10267. return $.ligerMethos.MenuBar;
  10268. },
  10269. _render: function ()
  10270. {
  10271. var g = this, p = this.options;
  10272. g.menubar = $(this.element);
  10273. if (!g.menubar.hasClass("l-menubar")) g.menubar.addClass("l-menubar");
  10274. if (p && p.items)
  10275. {
  10276. $(p.items).each(function (i, item)
  10277. {
  10278. g.addItem(item);
  10279. });
  10280. }
  10281. $(document).click(function ()
  10282. {
  10283. $(".l-panel-btn-selected", g.menubar).removeClass("l-panel-btn-selected");
  10284. });
  10285. g.set(p);
  10286. },
  10287. addItem: function (item)
  10288. {
  10289. var g = this, p = this.options;
  10290. var ditem = $('<div class="l-menubar-item l-panel-btn"><span></span><div class="l-panel-btn-l"></div><div class="l-panel-btn-r"></div><div class="l-menubar-item-down"></div></div>');
  10291. g.menubar.append(ditem);
  10292. item.id && ditem.attr("menubarid", item.id);
  10293. item.text && $("span:first", ditem).html(item.text);
  10294. item.disable && ditem.addClass("l-menubar-item-disable");
  10295. item.click && ditem.click(function () { item.click(item); });
  10296. if (item.menu)
  10297. {
  10298. var menu = $.ligerMenu(item.menu);
  10299. ditem.hover(function ()
  10300. {
  10301. g.actionMenu && g.actionMenu.hide();
  10302. var left = $(this).offset().left;
  10303. var top = $(this).offset().top + $(this).height();
  10304. menu.show({ top: top, left: left });
  10305. g.actionMenu = menu;
  10306. $(this).addClass("l-panel-btn-over l-panel-btn-selected").siblings(".l-menubar-item").removeClass("l-panel-btn-selected");
  10307. }, function ()
  10308. {
  10309. $(this).removeClass("l-panel-btn-over");
  10310. });
  10311. }
  10312. else
  10313. {
  10314. ditem.hover(function ()
  10315. {
  10316. $(this).addClass("l-panel-btn-over");
  10317. }, function ()
  10318. {
  10319. $(this).removeClass("l-panel-btn-over");
  10320. });
  10321. $(".l-menubar-item-down", ditem).remove();
  10322. }
  10323. }
  10324. });
  10325. })(jQuery);/**
  10326. * jQuery ligerUI 1.1.9
  10327. *
  10328. * http://ligerui.com
  10329. *
  10330. * Author daomi 2012 [ gd_star@163.com ]
  10331. *
  10332. */
  10333. (function ($)
  10334. {
  10335. $.ligerMessageBox = function (options)
  10336. {
  10337. return $.ligerui.run.call(null, "ligerMessageBox", arguments, { isStatic: true });
  10338. };
  10339. $.ligerDefaults.MessageBox = {
  10340. isDrag: true
  10341. };
  10342. $.ligerMethos.MessageBox = {};
  10343. $.ligerui.controls.MessageBox = function (options)
  10344. {
  10345. $.ligerui.controls.MessageBox.base.constructor.call(this, null, options);
  10346. };
  10347. $.ligerui.controls.MessageBox.ligerExtend($.ligerui.core.UIComponent, {
  10348. __getType: function ()
  10349. {
  10350. return 'MessageBox';
  10351. },
  10352. __idPrev: function ()
  10353. {
  10354. return 'MessageBox';
  10355. },
  10356. _extendMethods: function ()
  10357. {
  10358. return $.ligerMethos.MessageBox;
  10359. },
  10360. _render: function ()
  10361. {
  10362. var g = this, p = this.options;
  10363. var messageBoxHTML = "";
  10364. messageBoxHTML += '<div class="l-messagebox">';
  10365. messageBoxHTML += ' <div class="l-messagebox-lt"></div><div class="l-messagebox-rt"></div>';
  10366. messageBoxHTML += ' <div class="l-messagebox-l"></div><div class="l-messagebox-r"></div> ';
  10367. messageBoxHTML += ' <div class="l-messagebox-image"></div>';
  10368. messageBoxHTML += ' <div class="l-messagebox-title">';
  10369. messageBoxHTML += ' <div class="l-messagebox-title-inner"></div>';
  10370. messageBoxHTML += ' <div class="l-messagebox-close"></div>';
  10371. messageBoxHTML += ' </div>';
  10372. messageBoxHTML += ' <div class="l-messagebox-content">';
  10373. messageBoxHTML += ' </div>';
  10374. messageBoxHTML += ' <div class="l-messagebox-buttons"><div class="l-messagebox-buttons-inner">';
  10375. messageBoxHTML += ' </div></div>';
  10376. messageBoxHTML += ' </div>';
  10377. g.messageBox = $(messageBoxHTML);
  10378. $('body').append(g.messageBox);
  10379. g.messageBox.close = function ()
  10380. {
  10381. g._removeWindowMask();
  10382. g.messageBox.remove();
  10383. };
  10384. //设置参数属性
  10385. p.width && g.messageBox.width(p.width);
  10386. p.title && $(".l-messagebox-title-inner", g.messageBox).html(p.title);
  10387. p.content && $(".l-messagebox-content", g.messageBox).html(p.content);
  10388. if (p.buttons)
  10389. {
  10390. $(p.buttons).each(function (i, item)
  10391. {
  10392. var btn = $('<div class="l-messagebox-btn"><div class="l-messagebox-btn-l"></div><div class="l-messagebox-btn-r"></div><div class="l-messagebox-btn-inner"></div></div>');
  10393. $(".l-messagebox-btn-inner", btn).html(item.text);
  10394. $(".l-messagebox-buttons-inner", g.messageBox).append(btn);
  10395. item.width && btn.width(item.width);
  10396. item.onclick && btn.click(function () { item.onclick(item, i, g.messageBox) });
  10397. });
  10398. $(".l-messagebox-buttons-inner", g.messageBox).append("<div class='l-clear'></div>");
  10399. }
  10400. var boxWidth = g.messageBox.width();
  10401. var sumBtnWidth = 0;
  10402. $(".l-messagebox-buttons-inner .l-messagebox-btn", g.messageBox).each(function ()
  10403. {
  10404. sumBtnWidth += $(this).width();
  10405. });
  10406. $(".l-messagebox-buttons-inner", g.messageBox).css({ marginLeft: parseInt((boxWidth - sumBtnWidth) * 0.5) });
  10407. //设置背景、拖动支持 和设置图片
  10408. g._applyWindowMask();
  10409. g._applyDrag();
  10410. g._setImage();
  10411. //位置初始化
  10412. var left = 0;
  10413. var top = 0;
  10414. var width = p.width || g.messageBox.width();
  10415. if (p.left != null) left = p.left;
  10416. else p.left = left = 0.5 * ($(window).width() - width);
  10417. if (p.top != null) top = p.top;
  10418. else p.top = top = 0.5 * ($(window).height() - g.messageBox.height()) + $(window).scrollTop() - 10;
  10419. if (left < 0) p.left = left = 0;
  10420. if (top < 0) p.top = top = 0;
  10421. g.messageBox.css({ left: left, top: top });
  10422. //设置事件
  10423. $(".l-messagebox-btn", g.messageBox).hover(function ()
  10424. {
  10425. $(this).addClass("l-messagebox-btn-over");
  10426. }, function ()
  10427. {
  10428. $(this).removeClass("l-messagebox-btn-over");
  10429. });
  10430. $(".l-messagebox-close", g.messageBox).hover(function ()
  10431. {
  10432. $(this).addClass("l-messagebox-close-over");
  10433. }, function ()
  10434. {
  10435. $(this).removeClass("l-messagebox-close-over");
  10436. }).click(function ()
  10437. {
  10438. g.messageBox.close();
  10439. });
  10440. g.set(p);
  10441. },
  10442. close: function ()
  10443. {
  10444. var g = this, p = this.options;
  10445. this.g._removeWindowMask();
  10446. this.messageBox.remove();
  10447. },
  10448. _applyWindowMask: function ()
  10449. {
  10450. var g = this, p = this.options;
  10451. $(".l-window-mask").remove();
  10452. $("<div class='l-window-mask' style='display: block;'></div>").appendTo($("body"));
  10453. },
  10454. _removeWindowMask: function ()
  10455. {
  10456. var g = this, p = this.options;
  10457. $(".l-window-mask").remove();
  10458. },
  10459. _applyDrag: function ()
  10460. {
  10461. var g = this, p = this.options;
  10462. if (p.isDrag && $.fn.ligerDrag)
  10463. g.messageBox.ligerDrag({ handler: '.l-messagebox-title-inner', animate: false });
  10464. },
  10465. _setImage: function ()
  10466. {
  10467. var g = this, p = this.options;
  10468. if (p.type)
  10469. {
  10470. if (p.type == 'success' || p.type == 'donne')
  10471. {
  10472. $(".l-messagebox-image", g.messageBox).addClass("l-messagebox-image-donne").show();
  10473. $(".l-messagebox-content", g.messageBox).css({ paddingLeft: 64, paddingBottom: 30 });
  10474. }
  10475. else if (p.type == 'error')
  10476. {
  10477. $(".l-messagebox-image", g.messageBox).addClass("l-messagebox-image-error").show();
  10478. $(".l-messagebox-content", g.messageBox).css({ paddingLeft: 64, paddingBottom: 30 });
  10479. }
  10480. else if (p.type == 'warn')
  10481. {
  10482. $(".l-messagebox-image", g.messageBox).addClass("l-messagebox-image-warn").show();
  10483. $(".l-messagebox-content", g.messageBox).css({ paddingLeft: 64, paddingBottom: 30 });
  10484. }
  10485. else if (p.type == 'question')
  10486. {
  10487. $(".l-messagebox-image", g.messageBox).addClass("l-messagebox-image-question").show();
  10488. $(".l-messagebox-content", g.messageBox).css({ paddingLeft: 64, paddingBottom: 40 });
  10489. }
  10490. }
  10491. }
  10492. });
  10493. $.ligerMessageBox.show = function (p)
  10494. {
  10495. return $.ligerMessageBox(p);
  10496. };
  10497. $.ligerMessageBox.alert = function (title, content, type, onBtnClick)
  10498. {
  10499. title = title || "";
  10500. content = content || title;
  10501. var onclick = function (item, index, messageBox)
  10502. {
  10503. messageBox.close();
  10504. if (onBtnClick)
  10505. onBtnClick(item, index, messageBox);
  10506. };
  10507. p = {
  10508. title: title,
  10509. content: content,
  10510. buttons: [{ text: '确定', onclick: onclick}]
  10511. };
  10512. if (type) p.type = type;
  10513. return $.ligerMessageBox(p);
  10514. };
  10515. $.ligerMessageBox.confirm = function (title, content, callback)
  10516. {
  10517. var onclick = function (item, index, messageBox)
  10518. {
  10519. messageBox.close();
  10520. if (callback)
  10521. {
  10522. callback(index == 0);
  10523. }
  10524. };
  10525. p = {
  10526. type: 'question',
  10527. title: title,
  10528. content: content,
  10529. buttons: [{ text: '是', onclick: onclick }, { text: '否', onclick: onclick}]
  10530. };
  10531. return $.ligerMessageBox(p);
  10532. };
  10533. $.ligerMessageBox.success = function (title, content, onBtnClick)
  10534. {
  10535. return $.ligerMessageBox.alert(title, content, 'success', onBtnClick);
  10536. };
  10537. $.ligerMessageBox.error = function (title, content, onBtnClick)
  10538. {
  10539. return $.ligerMessageBox.alert(title, content, 'error', onBtnClick);
  10540. };
  10541. $.ligerMessageBox.warn = function (title, content, onBtnClick)
  10542. {
  10543. return $.ligerMessageBox.alert(title, content, 'warn', onBtnClick);
  10544. };
  10545. $.ligerMessageBox.question = function (title, content)
  10546. {
  10547. return $.ligerMessageBox.alert(title, content, 'question');
  10548. };
  10549. })(jQuery);/**
  10550. * jQuery ligerUI 1.1.9
  10551. *
  10552. * http://ligerui.com
  10553. *
  10554. * Author daomi 2012 [ gd_star@163.com ]
  10555. *
  10556. */
  10557. (function ($)
  10558. {
  10559. $.fn.ligerRadio = function ()
  10560. {
  10561. return $.ligerui.run.call(this, "ligerRadio", arguments);
  10562. };
  10563. $.fn.ligerGetRadioManager = function ()
  10564. {
  10565. return $.ligerui.run.call(this, "ligerGetRadioManager", arguments);
  10566. };
  10567. $.ligerDefaults.Radio = { disabled: false };
  10568. $.ligerMethos.Radio = {};
  10569. $.ligerui.controls.Radio = function (element, options)
  10570. {
  10571. $.ligerui.controls.Radio.base.constructor.call(this, element, options);
  10572. };
  10573. $.ligerui.controls.Radio.ligerExtend($.ligerui.controls.Input, {
  10574. __getType: function ()
  10575. {
  10576. return 'Radio';
  10577. },
  10578. __idPrev: function ()
  10579. {
  10580. return 'Radio';
  10581. },
  10582. _extendMethods: function ()
  10583. {
  10584. return $.ligerMethos.Radio;
  10585. },
  10586. _render: function ()
  10587. {
  10588. var g = this, p = this.options;
  10589. g.input = $(this.element);
  10590. g.link = $('<a href="javascript:void(0)" class="l-radio"></a>');
  10591. g.wrapper = g.input.addClass('l-hidden').wrap('<div class="l-radio-wrapper"></div>').parent();
  10592. g.wrapper.prepend(g.link);
  10593. g.input.change(function ()
  10594. {
  10595. if (this.checked)
  10596. {
  10597. g.link.addClass('l-radio-checked');
  10598. }
  10599. else
  10600. {
  10601. g.link.removeClass('l-radio-checked');
  10602. }
  10603. return true;
  10604. });
  10605. g.link.click(function ()
  10606. {
  10607. g._doclick();
  10608. });
  10609. g.wrapper.hover(function ()
  10610. {
  10611. if (!p.disabled)
  10612. $(this).addClass("l-over");
  10613. }, function ()
  10614. {
  10615. $(this).removeClass("l-over");
  10616. });
  10617. this.element.checked && g.link.addClass('l-radio-checked');
  10618. if (this.element.id)
  10619. {
  10620. $("label[for=" + this.element.id + "]").click(function ()
  10621. {
  10622. g._doclick();
  10623. });
  10624. }
  10625. g.set(p);
  10626. },
  10627. setValue: function (value)
  10628. {
  10629. var g = this, p = this.options;
  10630. if (!value)
  10631. {
  10632. g.input[0].checked = false;
  10633. g.link.removeClass('l-radio-checked');
  10634. }
  10635. else
  10636. {
  10637. g.input[0].checked = true;
  10638. g.link.addClass('l-radio-checked');
  10639. }
  10640. },
  10641. getValue: function ()
  10642. {
  10643. return this.input[0].checked;
  10644. },
  10645. setEnabled: function ()
  10646. {
  10647. this.input.attr('disabled', false);
  10648. this.wrapper.removeClass("l-disabled");
  10649. this.options.disabled = false;
  10650. },
  10651. setDisabled: function ()
  10652. {
  10653. this.input.attr('disabled', true);
  10654. this.wrapper.addClass("l-disabled");
  10655. this.options.disabled = true;
  10656. },
  10657. updateStyle: function ()
  10658. {
  10659. if (this.input.attr('disabled'))
  10660. {
  10661. this.wrapper.addClass("l-disabled");
  10662. this.options.disabled = true;
  10663. }
  10664. if (this.input[0].checked)
  10665. {
  10666. this.link.addClass('l-checkbox-checked');
  10667. }
  10668. else
  10669. {
  10670. this.link.removeClass('l-checkbox-checked');
  10671. }
  10672. },
  10673. _doclick: function ()
  10674. {
  10675. var g = this, p = this.options;
  10676. if (g.input.attr('disabled')) { return false; }
  10677. g.input.trigger('click').trigger('change');
  10678. var formEle;
  10679. if (g.input[0].form) formEle = g.input[0].form;
  10680. else formEle = document;
  10681. $("input:radio[name=" + g.input[0].name + "]", formEle).not(g.input).trigger("change");
  10682. return false;
  10683. }
  10684. });
  10685. })(jQuery);/**
  10686. * jQuery ligerUI 1.1.9
  10687. *
  10688. * http://ligerui.com
  10689. *
  10690. * Author daomi 2012 [ gd_star@163.com ]
  10691. *
  10692. */
  10693. (function ($)
  10694. {
  10695. $.fn.ligerResizable = function (options)
  10696. {
  10697. return $.ligerui.run.call(this, "ligerResizable", arguments,
  10698. {
  10699. idAttrName: 'ligeruiresizableid', hasElement: false, propertyToElemnt: 'target'
  10700. });
  10701. };
  10702. $.fn.ligerGetResizableManager = function ()
  10703. {
  10704. return $.ligerui.run.call(this, "ligerGetResizableManager", arguments,
  10705. {
  10706. idAttrName: 'ligeruiresizableid', hasElement: false, propertyToElemnt: 'target'
  10707. });
  10708. };
  10709. $.ligerDefaults.Resizable = {
  10710. handles: 'n, e, s, w, ne, se, sw, nw',
  10711. maxWidth: 2000,
  10712. maxHeight: 2000,
  10713. minWidth: 20,
  10714. minHeight: 20,
  10715. scope: 3,
  10716. animate: false,
  10717. onStartResize: function (e) { },
  10718. onResize: function (e) { },
  10719. onStopResize: function (e) { },
  10720. onEndResize: null
  10721. };
  10722. $.ligerui.controls.Resizable = function (options)
  10723. {
  10724. $.ligerui.controls.Resizable.base.constructor.call(this, null, options);
  10725. };
  10726. $.ligerui.controls.Resizable.ligerExtend($.ligerui.core.UIComponent, {
  10727. __getType: function ()
  10728. {
  10729. return 'Resizable';
  10730. },
  10731. __idPrev: function ()
  10732. {
  10733. return 'Resizable';
  10734. },
  10735. _render: function ()
  10736. {
  10737. var g = this, p = this.options;
  10738. g.target = $(p.target);
  10739. g.set(p);
  10740. g.target.mousemove(function (e)
  10741. {
  10742. if (p.disabled) return;
  10743. g.dir = g._getDir(e);
  10744. if (g.dir)
  10745. g.target.css('cursor', g.dir + '-resize');
  10746. else if (g.target.css('cursor').indexOf('-resize') > 0)
  10747. g.target.css('cursor', 'default');
  10748. if (p.target.ligeruidragid)
  10749. {
  10750. var drag = $.ligerui.get(p.target.ligeruidragid);
  10751. if (drag && g.dir)
  10752. {
  10753. drag.set('disabled', true);
  10754. } else if (drag)
  10755. {
  10756. drag.set('disabled', false);
  10757. }
  10758. }
  10759. }).mousedown(function (e)
  10760. {
  10761. if (p.disabled) return;
  10762. if (g.dir)
  10763. {
  10764. g._start(e);
  10765. }
  10766. });
  10767. },
  10768. _rendered: function ()
  10769. {
  10770. this.options.target.ligeruiresizableid = this.id;
  10771. },
  10772. _getDir: function (e)
  10773. {
  10774. var g = this, p = this.options;
  10775. var dir = '';
  10776. var xy = g.target.offset();
  10777. var width = g.target.width();
  10778. var height = g.target.height();
  10779. var scope = p.scope;
  10780. var pageX = e.pageX || e.screenX;
  10781. var pageY = e.pageY || e.screenY;
  10782. if (pageY >= xy.top && pageY < xy.top + scope)
  10783. {
  10784. dir += 'n';
  10785. }
  10786. else if (pageY <= xy.top + height && pageY > xy.top + height - scope)
  10787. {
  10788. dir += 's';
  10789. }
  10790. if (pageX >= xy.left && pageX < xy.left + scope)
  10791. {
  10792. dir += 'w';
  10793. }
  10794. else if (pageX <= xy.left + width && pageX > xy.left + width - scope)
  10795. {
  10796. dir += 'e';
  10797. }
  10798. if (p.handles == "all" || dir == "") return dir;
  10799. if ($.inArray(dir, g.handles) != -1) return dir;
  10800. return '';
  10801. },
  10802. _setHandles: function (handles)
  10803. {
  10804. if (!handles) return;
  10805. this.handles = handles.replace(/(\s*)/g, '').split(',');
  10806. },
  10807. _createProxy: function ()
  10808. {
  10809. var g = this;
  10810. g.proxy = $('<div class="l-resizable"></div>');
  10811. g.proxy.width(g.target.width()).height(g.target.height())
  10812. g.proxy.attr("resizableid", g.id).appendTo('body');
  10813. },
  10814. _removeProxy: function ()
  10815. {
  10816. var g = this;
  10817. if (g.proxy)
  10818. {
  10819. g.proxy.remove();
  10820. g.proxy = null;
  10821. }
  10822. },
  10823. _start: function (e)
  10824. {
  10825. var g = this, p = this.options;
  10826. g._createProxy();
  10827. g.proxy.css({
  10828. left: g.target.offset().left,
  10829. top: g.target.offset().top,
  10830. position: 'absolute'
  10831. });
  10832. g.current = {
  10833. dir: g.dir,
  10834. left: g.target.offset().left,
  10835. top: g.target.offset().top,
  10836. startX: e.pageX || e.screenX,
  10837. startY: e.pageY || e.clientY,
  10838. width: g.target.width(),
  10839. height: g.target.height()
  10840. };
  10841. $(document).bind("selectstart.resizable", function () { return false; });
  10842. $(document).bind('mouseup.resizable', function ()
  10843. {
  10844. g._stop.apply(g, arguments);
  10845. });
  10846. $(document).bind('mousemove.resizable', function ()
  10847. {
  10848. g._drag.apply(g, arguments);
  10849. });
  10850. g.proxy.show();
  10851. g.trigger('startResize', [g.current, e]);
  10852. },
  10853. changeBy: {
  10854. t: ['n', 'ne', 'nw'],
  10855. l: ['w', 'sw', 'nw'],
  10856. w: ['w', 'sw', 'nw', 'e', 'ne', 'se'],
  10857. h: ['n', 'ne', 'nw', 's', 'se', 'sw']
  10858. },
  10859. _drag: function (e)
  10860. {
  10861. var g = this, p = this.options;
  10862. if (!g.current) return;
  10863. if (!g.proxy) return;
  10864. g.proxy.css('cursor', g.current.dir == '' ? 'default' : g.current.dir + '-resize');
  10865. var pageX = e.pageX || e.screenX;
  10866. var pageY = e.pageY || e.screenY;
  10867. g.current.diffX = pageX - g.current.startX;
  10868. g.current.diffY = pageY - g.current.startY;
  10869. g._applyResize(g.proxy);
  10870. g.trigger('resize', [g.current, e]);
  10871. },
  10872. _stop: function (e)
  10873. {
  10874. var g = this, p = this.options;
  10875. if (g.hasBind('stopResize'))
  10876. {
  10877. if (g.trigger('stopResize', [g.current, e]) != false)
  10878. g._applyResize();
  10879. }
  10880. else
  10881. {
  10882. g._applyResize();
  10883. }
  10884. g._removeProxy();
  10885. g.trigger('endResize', [g.current, e]);
  10886. $(document).unbind("selectstart.resizable");
  10887. $(document).unbind('mousemove.resizable');
  10888. $(document).unbind('mouseup.resizable');
  10889. },
  10890. _applyResize: function (applyResultBody)
  10891. {
  10892. var g = this, p = this.options;
  10893. var cur = {
  10894. left: g.current.left,
  10895. top: g.current.top,
  10896. width: g.current.width,
  10897. height: g.current.height
  10898. };
  10899. var applyToTarget = false;
  10900. if (!applyResultBody)
  10901. {
  10902. applyResultBody = g.target;
  10903. applyToTarget = true;
  10904. if (!isNaN(parseInt(g.target.css('top'))))
  10905. cur.top = parseInt(g.target.css('top'));
  10906. else
  10907. cur.top = 0;
  10908. if (!isNaN(parseInt(g.target.css('left'))))
  10909. cur.left = parseInt(g.target.css('left'));
  10910. else
  10911. cur.left = 0;
  10912. }
  10913. if ($.inArray(g.current.dir, g.changeBy.l) > -1)
  10914. {
  10915. cur.left += g.current.diffX;
  10916. g.current.diffLeft = g.current.diffX;
  10917. }
  10918. else if (applyToTarget)
  10919. {
  10920. delete cur.left;
  10921. }
  10922. if ($.inArray(g.current.dir, g.changeBy.t) > -1)
  10923. {
  10924. cur.top += g.current.diffY;
  10925. g.current.diffTop = g.current.diffY;
  10926. }
  10927. else if (applyToTarget)
  10928. {
  10929. delete cur.top;
  10930. }
  10931. if ($.inArray(g.current.dir, g.changeBy.w) > -1)
  10932. {
  10933. cur.width += (g.current.dir.indexOf('w') == -1 ? 1 : -1) * g.current.diffX;
  10934. g.current.newWidth = cur.width;
  10935. }
  10936. else if (applyToTarget)
  10937. {
  10938. delete cur.width;
  10939. }
  10940. if ($.inArray(g.current.dir, g.changeBy.h) > -1)
  10941. {
  10942. cur.height += (g.current.dir.indexOf('n') == -1 ? 1 : -1) * g.current.diffY;
  10943. g.current.newHeight = cur.height;
  10944. }
  10945. else if (applyToTarget)
  10946. {
  10947. delete cur.height;
  10948. }
  10949. if (applyToTarget && p.animate)
  10950. applyResultBody.animate(cur);
  10951. else
  10952. applyResultBody.css(cur);
  10953. }
  10954. });
  10955. })(jQuery);/**
  10956. * jQuery ligerUI 1.1.9
  10957. *
  10958. * http://ligerui.com
  10959. *
  10960. * Author daomi 2012 [ gd_star@163.com ]
  10961. *
  10962. */
  10963. (function ($)
  10964. {
  10965. $.fn.ligerSpinner = function ()
  10966. {
  10967. return $.ligerui.run.call(this, "ligerSpinner", arguments);
  10968. };
  10969. $.fn.ligerGetSpinnerManager = function ()
  10970. {
  10971. return $.ligerui.run.call(this, "ligerGetSpinnerManager", arguments);
  10972. };
  10973. $.ligerDefaults.Spinner = {
  10974. type: 'float', //类型 float:浮点数 int:整数 time:时间
  10975. isNegative: true, //是否负数
  10976. decimalplace: 2, //小数位 type=float时起作用
  10977. step: 0.1, //每次增加的值
  10978. interval: 50, //间隔,毫秒
  10979. onChangeValue: false, //改变值事件
  10980. minValue: null, //最小值
  10981. maxValue: null, //最大值
  10982. disabled: false
  10983. };
  10984. $.ligerMethos.Spinner = {};
  10985. $.ligerui.controls.Spinner = function (element, options)
  10986. {
  10987. $.ligerui.controls.Spinner.base.constructor.call(this, element, options);
  10988. };
  10989. $.ligerui.controls.Spinner.ligerExtend($.ligerui.controls.Input, {
  10990. __getType: function ()
  10991. {
  10992. return 'Spinner';
  10993. },
  10994. __idPrev: function ()
  10995. {
  10996. return 'Spinner';
  10997. },
  10998. _extendMethods: function ()
  10999. {
  11000. return $.ligerMethos.Spinner;
  11001. },
  11002. _init: function ()
  11003. {
  11004. $.ligerui.controls.Spinner.base._init.call(this);
  11005. var p = this.options;
  11006. if (p.type == 'float')
  11007. {
  11008. p.step = 0.1;
  11009. p.interval = 50;
  11010. } else if (p.type == 'int')
  11011. {
  11012. p.step = 1;
  11013. p.interval = 100;
  11014. } else if (p.type == 'time')
  11015. {
  11016. p.step = 1;
  11017. p.interval = 100;
  11018. }
  11019. },
  11020. _render: function ()
  11021. {
  11022. var g = this, p = this.options;
  11023. g.interval = null;
  11024. g.inputText = null;
  11025. g.value = null;
  11026. g.textFieldID = "";
  11027. if (this.element.tagName.toLowerCase() == "input" && this.element.type && this.element.type == "text")
  11028. {
  11029. g.inputText = $(this.element);
  11030. if (this.element.id)
  11031. g.textFieldID = this.element.id;
  11032. }
  11033. else
  11034. {
  11035. g.inputText = $('<input type="text"/>');
  11036. g.inputText.appendTo($(this.element));
  11037. }
  11038. if (g.textFieldID == "" && p.textFieldID)
  11039. g.textFieldID = p.textFieldID;
  11040. g.link = $('<div class="l-trigger"><div class="l-spinner-up"><div class="l-spinner-icon"></div></div><div class="l-spinner-split"></div><div class="l-spinner-down"><div class="l-spinner-icon"></div></div></div>');
  11041. g.wrapper = g.inputText.wrap('<div class="l-text"></div>').parent();
  11042. g.wrapper.append('<div class="l-text-l"></div><div class="l-text-r"></div>');
  11043. g.wrapper.append(g.link).after(g.selectBox).after(g.valueField);
  11044. g.link.up = $(".l-spinner-up", g.link);
  11045. g.link.down = $(".l-spinner-down", g.link);
  11046. g.inputText.addClass("l-text-field");
  11047. if (p.disabled)
  11048. {
  11049. g.wrapper.addClass("l-text-disabled");
  11050. }
  11051. //初始化
  11052. if (!g._isVerify(g.inputText.val()))
  11053. {
  11054. g.value = g._getDefaultValue();
  11055. g.inputText.val(g.value);
  11056. }
  11057. //事件
  11058. g.link.up.hover(function ()
  11059. {
  11060. if (!p.disabled)
  11061. $(this).addClass("l-spinner-up-over");
  11062. }, function ()
  11063. {
  11064. clearInterval(g.interval);
  11065. $(document).unbind("selectstart.spinner");
  11066. $(this).removeClass("l-spinner-up-over");
  11067. }).mousedown(function ()
  11068. {
  11069. if (!p.disabled)
  11070. {
  11071. g._uping.call(g);
  11072. g.interval = setInterval(function ()
  11073. {
  11074. g._uping.call(g);
  11075. }, p.interval);
  11076. $(document).bind("selectstart.spinner", function () { return false; });
  11077. }
  11078. }).mouseup(function ()
  11079. {
  11080. clearInterval(g.interval);
  11081. g.inputText.trigger("change").focus();
  11082. $(document).unbind("selectstart.spinner");
  11083. });
  11084. g.link.down.hover(function ()
  11085. {
  11086. if (!p.disabled)
  11087. $(this).addClass("l-spinner-down-over");
  11088. }, function ()
  11089. {
  11090. clearInterval(g.interval);
  11091. $(document).unbind("selectstart.spinner");
  11092. $(this).removeClass("l-spinner-down-over");
  11093. }).mousedown(function ()
  11094. {
  11095. if (!p.disabled)
  11096. {
  11097. g.interval = setInterval(function ()
  11098. {
  11099. g._downing.call(g);
  11100. }, p.interval);
  11101. $(document).bind("selectstart.spinner", function () { return false; });
  11102. }
  11103. }).mouseup(function ()
  11104. {
  11105. clearInterval(g.interval);
  11106. g.inputText.trigger("change").focus();
  11107. $(document).unbind("selectstart.spinner");
  11108. });
  11109. g.inputText.change(function ()
  11110. {
  11111. var value = g.inputText.val();
  11112. g.value = g._getVerifyValue(value);
  11113. g.trigger('changeValue', [g.value]);
  11114. g.inputText.val(g.value);
  11115. }).blur(function ()
  11116. {
  11117. g.wrapper.removeClass("l-text-focus");
  11118. }).focus(function ()
  11119. {
  11120. g.wrapper.addClass("l-text-focus");
  11121. });
  11122. g.wrapper.hover(function ()
  11123. {
  11124. if (!p.disabled)
  11125. g.wrapper.addClass("l-text-over");
  11126. }, function ()
  11127. {
  11128. g.wrapper.removeClass("l-text-over");
  11129. });
  11130. g.set(p);
  11131. },
  11132. _setWidth: function (value)
  11133. {
  11134. var g = this;
  11135. if (value > 20)
  11136. {
  11137. g.wrapper.css({ width: value });
  11138. g.inputText.css({ width: value - 20 });
  11139. }
  11140. },
  11141. _setHeight: function (value)
  11142. {
  11143. var g = this;
  11144. if (value > 10)
  11145. {
  11146. g.wrapper.height(value);
  11147. g.inputText.height(value - 2);
  11148. g.link.height(value - 4);
  11149. }
  11150. },
  11151. _setDisabled: function (value)
  11152. {
  11153. if (value)
  11154. {
  11155. this.wrapper.addClass("l-text-disabled");
  11156. }
  11157. else
  11158. {
  11159. this.wrapper.removeClass("l-text-disabled");
  11160. }
  11161. },
  11162. setValue: function (value)
  11163. {
  11164. this.inputText.val(value);
  11165. },
  11166. getValue: function ()
  11167. {
  11168. return this.inputText.val();
  11169. },
  11170. _round: function (v, e)
  11171. {
  11172. var g = this, p = this.options;
  11173. var t = 1;
  11174. for (; e > 0; t *= 10, e--);
  11175. for (; e < 0; t /= 10, e++);
  11176. return Math.round(v * t) / t;
  11177. },
  11178. _isInt: function (str)
  11179. {
  11180. var g = this, p = this.options;
  11181. var strP = p.isNegative ? /^-?\d+$/ : /^\d+$/;
  11182. if (!strP.test(str)) return false;
  11183. if (parseFloat(str) != str) return false;
  11184. return true;
  11185. },
  11186. _isFloat: function (str)
  11187. {
  11188. var g = this, p = this.options;
  11189. var strP = p.isNegative ? /^-?\d+(\.\d+)?$/ : /^\d+(\.\d+)?$/;
  11190. if (!strP.test(str)) return false;
  11191. if (parseFloat(str) != str) return false;
  11192. return true;
  11193. },
  11194. _isTime: function (str)
  11195. {
  11196. var g = this, p = this.options;
  11197. var a = str.match(/^(\d{1,2}):(\d{1,2})$/);
  11198. if (a == null) return false;
  11199. if (a[1] > 24 || a[2] > 60) return false;
  11200. return true;
  11201. },
  11202. _isVerify: function (str)
  11203. {
  11204. var g = this, p = this.options;
  11205. if (p.type == 'float')
  11206. {
  11207. if (!g._isFloat(str)) return false;
  11208. var value = parseFloat(str);
  11209. if (p.minValue != undefined && p.minValue > value) return false;
  11210. if (p.maxValue != undefined && p.maxValue < value) return false;
  11211. return true;
  11212. } else if (p.type == 'int')
  11213. {
  11214. if (!g._isInt(str)) return false;
  11215. var value = parseInt(str);
  11216. if (p.minValue != undefined && p.minValue > value) return false;
  11217. if (p.maxValue != undefined && p.maxValue < value) return false;
  11218. return true;
  11219. } else if (p.type == 'time')
  11220. {
  11221. return g._isTime(str);
  11222. }
  11223. return false;
  11224. },
  11225. _getVerifyValue: function (value)
  11226. {
  11227. var g = this, p = this.options;
  11228. var newvalue = null;
  11229. if (p.type == 'float')
  11230. {
  11231. newvalue = g._round(value, p.decimalplace);
  11232. } else if (p.type == 'int')
  11233. {
  11234. newvalue = parseInt(value);
  11235. } else if (p.type == 'time')
  11236. {
  11237. newvalue = value;
  11238. }
  11239. if (!g._isVerify(newvalue))
  11240. {
  11241. return g.value;
  11242. } else
  11243. {
  11244. return newvalue;
  11245. }
  11246. },
  11247. _isOverValue: function (value)
  11248. {
  11249. var g = this, p = this.options;
  11250. if (p.minValue != null && p.minValue > value) return true;
  11251. if (p.maxValue != null && p.maxValue < value) return true;
  11252. return false;
  11253. },
  11254. _getDefaultValue: function ()
  11255. {
  11256. var g = this, p = this.options;
  11257. if (p.type == 'float' || p.type == 'int') { return 0; }
  11258. else if (p.type == 'time') { return "00:00"; }
  11259. },
  11260. _addValue: function (num)
  11261. {
  11262. var g = this, p = this.options;
  11263. var value = g.inputText.val();
  11264. value = parseFloat(value) + num;
  11265. if (g._isOverValue(value)) return;
  11266. g.inputText.val(value);
  11267. g.inputText.trigger("change");
  11268. },
  11269. _addTime: function (minute)
  11270. {
  11271. var g = this, p = this.options;
  11272. var value = g.inputText.val();
  11273. var a = value.match(/^(\d{1,2}):(\d{1,2})$/);
  11274. newminute = parseInt(a[2]) + minute;
  11275. if (newminute < 10) newminute = "0" + newminute;
  11276. value = a[1] + ":" + newminute;
  11277. if (g._isOverValue(value)) return;
  11278. g.inputText.val(value);
  11279. g.inputText.trigger("change");
  11280. },
  11281. _uping: function ()
  11282. {
  11283. var g = this, p = this.options;
  11284. if (p.type == 'float' || p.type == 'int')
  11285. {
  11286. g._addValue(p.step);
  11287. } else if (p.type == 'time')
  11288. {
  11289. g._addTime(p.step);
  11290. }
  11291. },
  11292. _downing: function ()
  11293. {
  11294. var g = this, p = this.options;
  11295. if (p.type == 'float' || p.type == 'int')
  11296. {
  11297. g._addValue(-1 * p.step);
  11298. } else if (p.type == 'time')
  11299. {
  11300. g._addTime(-1 * p.step);
  11301. }
  11302. },
  11303. _isDateTime: function (dateStr)
  11304. {
  11305. var g = this, p = this.options;
  11306. var r = dateStr.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
  11307. if (r == null) return false;
  11308. var d = new Date(r[1], r[3] - 1, r[4]);
  11309. if (d == "NaN") return false;
  11310. return (d.getFullYear() == r[1] && (d.getMonth() + 1) == r[3] && d.getDate() == r[4]);
  11311. },
  11312. _isLongDateTime: function (dateStr)
  11313. {
  11314. var g = this, p = this.options;
  11315. var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2})$/;
  11316. var r = dateStr.match(reg);
  11317. if (r == null) return false;
  11318. var d = new Date(r[1], r[3] - 1, r[4], r[5], r[6]);
  11319. if (d == "NaN") return false;
  11320. return (d.getFullYear() == r[1] && (d.getMonth() + 1) == r[3] && d.getDate() == r[4] && d.getHours() == r[5] && d.getMinutes() == r[6]);
  11321. }
  11322. });
  11323. })(jQuery);/**
  11324. * jQuery ligerUI 1.1.9
  11325. *
  11326. * http://ligerui.com
  11327. *
  11328. * Author daomi 2012 [ gd_star@163.com ]
  11329. *
  11330. */
  11331. (function ($)
  11332. {
  11333. $.fn.ligerTab = function (options)
  11334. {
  11335. return $.ligerui.run.call(this, "ligerTab", arguments);
  11336. };
  11337. $.fn.ligerGetTabManager = function ()
  11338. {
  11339. return $.ligerui.run.call(this, "ligerGetTabManager", arguments);
  11340. };
  11341. $.ligerDefaults.Tab = {
  11342. height: null,
  11343. heightDiff: 0, // 高度补差
  11344. changeHeightOnResize: false,
  11345. contextmenu: true,
  11346. dblClickToClose: false, //是否双击时关闭
  11347. dragToMove: false, //是否允许拖动时改变tab项的位置
  11348. onBeforeOverrideTabItem: null,
  11349. onAfterOverrideTabItem: null,
  11350. onBeforeRemoveTabItem: null,
  11351. onAfterRemoveTabItem: null,
  11352. onBeforeAddTabItem: null,
  11353. onAfterAddTabItem: null,
  11354. onBeforeSelectTabItem: null,
  11355. onAfterSelectTabItem: null
  11356. };
  11357. $.ligerDefaults.TabString = {
  11358. closeMessage: "关闭当前页",
  11359. closeOtherMessage: "关闭其他",
  11360. closeAllMessage: "关闭所有",
  11361. reloadMessage: "刷新"
  11362. };
  11363. $.ligerMethos.Tab = {};
  11364. $.ligerui.controls.Tab = function (element, options)
  11365. {
  11366. $.ligerui.controls.Tab.base.constructor.call(this, element, options);
  11367. };
  11368. $.ligerui.controls.Tab.ligerExtend($.ligerui.core.UIComponent, {
  11369. __getType: function ()
  11370. {
  11371. return 'Tab';
  11372. },
  11373. __idPrev: function ()
  11374. {
  11375. return 'Tab';
  11376. },
  11377. _extendMethods: function ()
  11378. {
  11379. return $.ligerMethos.Tab;
  11380. },
  11381. _render: function ()
  11382. {
  11383. var g = this, p = this.options;
  11384. if (p.height) g.makeFullHeight = true;
  11385. g.tab = $(this.element);
  11386. g.tab.addClass("l-tab");
  11387. if (p.contextmenu && $.ligerMenu)
  11388. {
  11389. g.tab.menu = $.ligerMenu({ width: 100, items: [
  11390. { text: p.closeMessage, id: 'close', click: function ()
  11391. {
  11392. g._menuItemClick.apply(g, arguments);
  11393. }
  11394. },
  11395. { text: p.closeOtherMessage, id: 'closeother', click: function ()
  11396. {
  11397. g._menuItemClick.apply(g, arguments);
  11398. }
  11399. },
  11400. { text: p.closeAllMessage, id: 'closeall', click: function ()
  11401. {
  11402. g._menuItemClick.apply(g, arguments);
  11403. }
  11404. },
  11405. { text: p.reloadMessage, id: 'reload', click: function ()
  11406. {
  11407. g._menuItemClick.apply(g, arguments);
  11408. }
  11409. }
  11410. ]
  11411. });
  11412. }
  11413. g.tab.content = $('<div class="l-tab-content"></div>');
  11414. $("> div", g.tab).appendTo(g.tab.content);
  11415. g.tab.content.appendTo(g.tab);
  11416. g.tab.links = $('<div class="l-tab-links"><ul style="left: 0px; "></ul></div>');
  11417. g.tab.links.prependTo(g.tab);
  11418. g.tab.links.ul = $("ul", g.tab.links);
  11419. var lselecteds = $("> div[lselected=true]", g.tab.content);
  11420. var haslselected = lselecteds.length > 0;
  11421. g.selectedTabId = lselecteds.attr("tabid");
  11422. $("> div", g.tab.content).each(function (i, box)
  11423. {
  11424. var li = $('<li class=""><a></a><div class="l-tab-links-item-left"></div><div class="l-tab-links-item-right"></div></li>');
  11425. var contentitem = $(this);
  11426. if (contentitem.attr("title"))
  11427. {
  11428. $("> a", li).html(contentitem.attr("title"));
  11429. contentitem.attr("title", "");
  11430. }
  11431. var tabid = contentitem.attr("tabid");
  11432. if (tabid == undefined)
  11433. {
  11434. tabid = g.getNewTabid();
  11435. contentitem.attr("tabid", tabid);
  11436. if (contentitem.attr("lselected"))
  11437. {
  11438. g.selectedTabId = tabid;
  11439. }
  11440. }
  11441. li.attr("tabid", tabid);
  11442. if (!haslselected && i == 0) g.selectedTabId = tabid;
  11443. var showClose = contentitem.attr("showClose");
  11444. if (showClose)
  11445. {
  11446. li.append("<div class='l-tab-links-item-close'></div>");
  11447. }
  11448. $("> ul", g.tab.links).append(li);
  11449. if (!contentitem.hasClass("l-tab-content-item")) contentitem.addClass("l-tab-content-item");
  11450. if (contentitem.find("iframe").length > 0)
  11451. {
  11452. var iframe = $("iframe:first", contentitem);
  11453. if (iframe[0].readyState != "complete")
  11454. {
  11455. if (contentitem.find(".l-tab-loading:first").length == 0)
  11456. contentitem.prepend("<div class='l-tab-loading' style='display:block;'></div>");
  11457. var iframeloading = $(".l-tab-loading:first", contentitem);
  11458. iframe.bind('load.tab', function ()
  11459. {
  11460. iframeloading.hide();
  11461. });
  11462. }
  11463. }
  11464. });
  11465. //init
  11466. g.selectTabItem(g.selectedTabId);
  11467. //set content height
  11468. if (p.height)
  11469. {
  11470. if (typeof (p.height) == 'string' && p.height.indexOf('%') > 0)
  11471. {
  11472. g.onResize();
  11473. if (p.changeHeightOnResize)
  11474. {
  11475. $(window).resize(function ()
  11476. {
  11477. g.onResize.call(g);
  11478. });
  11479. }
  11480. } else
  11481. {
  11482. g.setHeight(p.height);
  11483. }
  11484. }
  11485. if (g.makeFullHeight)
  11486. g.setContentHeight();
  11487. //add even
  11488. $("li", g.tab.links).each(function ()
  11489. {
  11490. g._addTabItemEvent($(this));
  11491. });
  11492. g.tab.bind('dblclick.tab', function (e)
  11493. {
  11494. if (!p.dblClickToClose) return;
  11495. g.dblclicking = true;
  11496. var obj = (e.target || e.srcElement);
  11497. var tagName = obj.tagName.toLowerCase();
  11498. if (tagName == "a")
  11499. {
  11500. var tabid = $(obj).parent().attr("tabid");
  11501. var allowClose = $(obj).parent().find("div.l-tab-links-item-close").length ? true : false;
  11502. if (allowClose)
  11503. {
  11504. g.removeTabItem(tabid);
  11505. }
  11506. }
  11507. g.dblclicking = false;
  11508. });
  11509. g.set(p);
  11510. },
  11511. _applyDrag: function (tabItemDom)
  11512. {
  11513. var g = this, p = this.options;
  11514. g.droptip = g.droptip || $("<div class='l-tab-drag-droptip' style='display:none'><div class='l-drop-move-up'></div><div class='l-drop-move-down'></div></div>").appendTo('body');
  11515. var drag = $(tabItemDom).ligerDrag(
  11516. {
  11517. revert: true, animate: false,
  11518. proxy: function ()
  11519. {
  11520. var name = $(this).find("a").html();
  11521. g.dragproxy = $("<div class='l-tab-drag-proxy' style='display:none'><div class='l-drop-icon l-drop-no'></div></div>").appendTo('body');
  11522. g.dragproxy.append(name);
  11523. return g.dragproxy;
  11524. },
  11525. onRendered: function ()
  11526. {
  11527. this.set('cursor', 'pointer');
  11528. },
  11529. onStartDrag: function (current, e)
  11530. {
  11531. if (!$(tabItemDom).hasClass("l-selected")) return false;
  11532. if (e.button == 2) return false;
  11533. var obj = e.srcElement || e.target;
  11534. if ($(obj).hasClass("l-tab-links-item-close")) return false;
  11535. },
  11536. onDrag: function (current, e)
  11537. {
  11538. if (g.dropIn == null)
  11539. g.dropIn = -1;
  11540. var tabItems = g.tab.links.ul.find('>li');
  11541. var targetIndex = tabItems.index(current.target);
  11542. tabItems.each(function (i, item)
  11543. {
  11544. if (targetIndex == i)
  11545. {
  11546. return;
  11547. }
  11548. var isAfter = i > targetIndex;
  11549. if (g.dropIn != -1 && g.dropIn != i) return;
  11550. var offset = $(this).offset();
  11551. var range = {
  11552. top: offset.top,
  11553. bottom: offset.top + $(this).height(),
  11554. left: offset.left - 10,
  11555. right: offset.left + 10
  11556. };
  11557. if (isAfter)
  11558. {
  11559. range.left += $(this).width();
  11560. range.right += $(this).width();
  11561. }
  11562. var pageX = e.pageX || e.screenX;
  11563. var pageY = e.pageY || e.screenY;
  11564. if (pageX > range.left && pageX < range.right && pageY > range.top && pageY < range.bottom)
  11565. {
  11566. g.droptip.css({
  11567. left: range.left + 5,
  11568. top: range.top - 9
  11569. }).show();
  11570. g.dropIn = i;
  11571. g.dragproxy.find(".l-drop-icon").removeClass("l-drop-no").addClass("l-drop-yes");
  11572. }
  11573. else
  11574. {
  11575. g.dropIn = -1;
  11576. g.droptip.hide();
  11577. g.dragproxy.find(".l-drop-icon").removeClass("l-drop-yes").addClass("l-drop-no");
  11578. }
  11579. });
  11580. },
  11581. onStopDrag: function (current, e)
  11582. {
  11583. if (g.dropIn > -1)
  11584. {
  11585. var to = g.tab.links.ul.find('>li:eq(' + g.dropIn + ')').attr("tabid");
  11586. var from = $(current.target).attr("tabid");
  11587. setTimeout(function ()
  11588. {
  11589. g.moveTabItem(from, to);
  11590. }, 0);
  11591. g.dropIn = -1;
  11592. g.dragproxy.remove();
  11593. }
  11594. g.droptip.hide();
  11595. this.set('cursor', 'default');
  11596. }
  11597. });
  11598. return drag;
  11599. },
  11600. _setDragToMove: function (value)
  11601. {
  11602. if (!$.fn.ligerDrag) return; //需要ligerDrag的支持
  11603. var g = this, p = this.options;
  11604. if (value)
  11605. {
  11606. if (g.drags) return;
  11607. g.drags = g.drags || [];
  11608. g.tab.links.ul.find('>li').each(function ()
  11609. {
  11610. g.drags.push(g._applyDrag(this));
  11611. });
  11612. }
  11613. },
  11614. moveTabItem: function (fromTabItemID, toTabItemID)
  11615. {
  11616. var g = this;
  11617. var from = g.tab.links.ul.find(">li[tabid=" + fromTabItemID + "]");
  11618. var to = g.tab.links.ul.find(">li[tabid=" + toTabItemID + "]");
  11619. var index1 = g.tab.links.ul.find(">li").index(from);
  11620. var index2 = g.tab.links.ul.find(">li").index(to);
  11621. if (index1 < index2)
  11622. {
  11623. to.after(from);
  11624. }
  11625. else
  11626. {
  11627. to.before(from);
  11628. }
  11629. },
  11630. //设置tab按钮(左和右),显示返回true,隐藏返回false
  11631. setTabButton: function ()
  11632. {
  11633. var g = this, p = this.options;
  11634. var sumwidth = 0;
  11635. $("li", g.tab.links.ul).each(function ()
  11636. {
  11637. sumwidth += $(this).width() + 2;
  11638. });
  11639. var mainwidth = g.tab.width();
  11640. if (sumwidth > mainwidth)
  11641. {
  11642. g.tab.links.append('<div class="l-tab-links-left"></div><div class="l-tab-links-right"></div>');
  11643. g.setTabButtonEven();
  11644. return true;
  11645. } else
  11646. {
  11647. g.tab.links.ul.animate({ left: 0 });
  11648. $(".l-tab-links-left,.l-tab-links-right", g.tab.links).remove();
  11649. return false;
  11650. }
  11651. },
  11652. //设置左右按钮的事件 标签超出最大宽度时,可左右拖动
  11653. setTabButtonEven: function ()
  11654. {
  11655. var g = this, p = this.options;
  11656. $(".l-tab-links-left", g.tab.links).hover(function ()
  11657. {
  11658. $(this).addClass("l-tab-links-left-over");
  11659. }, function ()
  11660. {
  11661. $(this).removeClass("l-tab-links-left-over");
  11662. }).click(function ()
  11663. {
  11664. g.moveToPrevTabItem();
  11665. });
  11666. $(".l-tab-links-right", g.tab.links).hover(function ()
  11667. {
  11668. $(this).addClass("l-tab-links-right-over");
  11669. }, function ()
  11670. {
  11671. $(this).removeClass("l-tab-links-right-over");
  11672. }).click(function ()
  11673. {
  11674. g.moveToNextTabItem();
  11675. });
  11676. },
  11677. //切换到上一个tab
  11678. moveToPrevTabItem: function ()
  11679. {
  11680. var g = this, p = this.options;
  11681. var btnWitdth = $(".l-tab-links-left", g.tab.links).width();
  11682. var leftList = new Array(); //记录每个tab的left,由左到右
  11683. $("li", g.tab.links).each(function (i, item)
  11684. {
  11685. var currentItemLeft = -1 * btnWitdth;
  11686. if (i > 0)
  11687. {
  11688. currentItemLeft = parseInt(leftList[i - 1]) + $(this).prev().width() + 2;
  11689. }
  11690. leftList.push(currentItemLeft);
  11691. });
  11692. var currentLeft = -1 * parseInt(g.tab.links.ul.css("left"));
  11693. for (var i = 0; i < leftList.length - 1; i++)
  11694. {
  11695. if (leftList[i] < currentLeft && leftList[i + 1] >= currentLeft)
  11696. {
  11697. g.tab.links.ul.animate({ left: -1 * parseInt(leftList[i]) });
  11698. return;
  11699. }
  11700. }
  11701. },
  11702. //切换到下一个tab
  11703. moveToNextTabItem: function ()
  11704. {
  11705. var g = this, p = this.options;
  11706. var btnWitdth = $(".l-tab-links-right", g.tab).width();
  11707. var sumwidth = 0;
  11708. var tabItems = $("li", g.tab.links.ul);
  11709. tabItems.each(function ()
  11710. {
  11711. sumwidth += $(this).width() + 2;
  11712. });
  11713. var mainwidth = g.tab.width();
  11714. var leftList = new Array(); //记录每个tab的left,由右到左
  11715. for (var i = tabItems.length - 1; i >= 0; i--)
  11716. {
  11717. var currentItemLeft = sumwidth - mainwidth + btnWitdth + 2;
  11718. if (i != tabItems.length - 1)
  11719. {
  11720. currentItemLeft = parseInt(leftList[tabItems.length - 2 - i]) - $(tabItems[i + 1]).width() - 2;
  11721. }
  11722. leftList.push(currentItemLeft);
  11723. }
  11724. var currentLeft = -1 * parseInt(g.tab.links.ul.css("left"));
  11725. for (var j = 1; j < leftList.length; j++)
  11726. {
  11727. if (leftList[j] <= currentLeft && leftList[j - 1] > currentLeft)
  11728. {
  11729. g.tab.links.ul.animate({ left: -1 * parseInt(leftList[j - 1]) });
  11730. return;
  11731. }
  11732. }
  11733. },
  11734. getTabItemCount: function ()
  11735. {
  11736. var g = this, p = this.options;
  11737. return $("li", g.tab.links.ul).length;
  11738. },
  11739. getSelectedTabItemID: function ()
  11740. {
  11741. var g = this, p = this.options;
  11742. return $("li.l-selected", g.tab.links.ul).attr("tabid");
  11743. },
  11744. removeSelectedTabItem: function ()
  11745. {
  11746. var g = this, p = this.options;
  11747. g.removeTabItem(g.getSelectedTabItemID());
  11748. },
  11749. //覆盖选择的tabitem
  11750. overrideSelectedTabItem: function (options)
  11751. {
  11752. var g = this, p = this.options;
  11753. g.overrideTabItem(g.getSelectedTabItemID(), options);
  11754. },
  11755. //覆盖
  11756. overrideTabItem: function (targettabid, options)
  11757. {
  11758. var g = this, p = this.options;
  11759. if (g.trigger('beforeOverrideTabItem', [targettabid]) == false)
  11760. return false;
  11761. var tabid = options.tabid;
  11762. if (tabid == undefined) tabid = g.getNewTabid();
  11763. var url = options.url;
  11764. var content = options.content;
  11765. var target = options.target;
  11766. var text = options.text;
  11767. var showClose = options.showClose;
  11768. var height = options.height;
  11769. //如果已经存在
  11770. if (g.isTabItemExist(tabid))
  11771. {
  11772. return;
  11773. }
  11774. var tabitem = $("li[tabid=" + targettabid + "]", g.tab.links.ul);
  11775. var contentitem = $(".l-tab-content-item[tabid=" + targettabid + "]", g.tab.content);
  11776. if (!tabitem || !contentitem) return;
  11777. tabitem.attr("tabid", tabid);
  11778. contentitem.attr("tabid", tabid);
  11779. if ($("iframe", contentitem).length == 0 && url)
  11780. {
  11781. contentitem.html("<iframe frameborder='0'></iframe>");
  11782. }
  11783. else if (content)
  11784. {
  11785. contentitem.html(content);
  11786. }
  11787. $("iframe", contentitem).attr("name", tabid);
  11788. if (showClose == undefined) showClose = true;
  11789. if (showClose == false) $(".l-tab-links-item-close", tabitem).remove();
  11790. else
  11791. {
  11792. if ($(".l-tab-links-item-close", tabitem).length == 0)
  11793. tabitem.append("<div class='l-tab-links-item-close'></div>");
  11794. }
  11795. if (text == undefined) text = tabid;
  11796. if (height) contentitem.height(height);
  11797. $("a", tabitem).text(text);
  11798. $("iframe", contentitem).attr("src", url);
  11799. g.trigger('afterOverrideTabItem', [targettabid]);
  11800. },
  11801. //选中tab项
  11802. selectTabItem: function (tabid)
  11803. {
  11804. var g = this, p = this.options;
  11805. if (g.trigger('beforeSelectTabItem', [tabid]) == false)
  11806. return false;
  11807. g.selectedTabId = tabid;
  11808. $("> .l-tab-content-item[tabid=" + tabid + "]", g.tab.content).show().siblings().hide();
  11809. $("li[tabid=" + tabid + "]", g.tab.links.ul).addClass("l-selected").siblings().removeClass("l-selected");
  11810. g.trigger('afterSelectTabItem', [tabid]);
  11811. },
  11812. //移动到最后一个tab
  11813. moveToLastTabItem: function ()
  11814. {
  11815. var g = this, p = this.options;
  11816. var sumwidth = 0;
  11817. $("li", g.tab.links.ul).each(function ()
  11818. {
  11819. sumwidth += $(this).width() + 2;
  11820. });
  11821. var mainwidth = g.tab.width();
  11822. if (sumwidth > mainwidth)
  11823. {
  11824. var btnWitdth = $(".l-tab-links-right", g.tab.links).width();
  11825. g.tab.links.ul.animate({ left: -1 * (sumwidth - mainwidth + btnWitdth + 2) });
  11826. }
  11827. },
  11828. //判断tab是否存在
  11829. isTabItemExist: function (tabid)
  11830. {
  11831. var g = this, p = this.options;
  11832. return $("li[tabid=" + tabid + "]", g.tab.links.ul).length > 0;
  11833. },
  11834. //增加一个tab
  11835. addTabItem: function (options)
  11836. {
  11837. var g = this, p = this.options;
  11838. if (g.trigger('beforeAddTabItem', [tabid]) == false)
  11839. return false;
  11840. var tabid = options.tabid;
  11841. if (tabid == undefined) tabid = g.getNewTabid();
  11842. var url = options.url;
  11843. var content = options.content;
  11844. var text = options.text;
  11845. var showClose = options.showClose;
  11846. var height = options.height;
  11847. //如果已经存在
  11848. if (g.isTabItemExist(tabid))
  11849. {
  11850. g.selectTabItem(tabid);
  11851. return;
  11852. }
  11853. var tabitem = $("<li><a></a><div class='l-tab-links-item-left'></div><div class='l-tab-links-item-right'></div><div class='l-tab-links-item-close'></div></li>");
  11854. var contentitem = $("<div class='l-tab-content-item'><div class='l-tab-loading' style='display:block;'></div><iframe frameborder='0'></iframe></div>");
  11855. var iframeloading = $("div:first", contentitem);
  11856. var iframe = $("iframe:first", contentitem);
  11857. if (g.makeFullHeight)
  11858. {
  11859. var newheight = g.tab.height() - g.tab.links.height();
  11860. contentitem.height(newheight);
  11861. }
  11862. tabitem.attr("tabid", tabid);
  11863. contentitem.attr("tabid", tabid);
  11864. if (url)
  11865. {
  11866. iframe.attr("name", tabid)
  11867. .attr("id", tabid)
  11868. .attr("src", url)
  11869. .bind('load.tab', function ()
  11870. {
  11871. iframeloading.hide();
  11872. if (options.callback)
  11873. options.callback();
  11874. });
  11875. }
  11876. else
  11877. {
  11878. iframe.remove();
  11879. iframeloading.remove();
  11880. }
  11881. if (content)
  11882. {
  11883. contentitem.html(content);
  11884. }
  11885. else if (options.target)
  11886. {
  11887. contentitem.append(options.target);
  11888. }
  11889. if (showClose == undefined) showClose = true;
  11890. if (showClose == false) $(".l-tab-links-item-close", tabitem).remove();
  11891. if (text == undefined) text = tabid;
  11892. if (height) contentitem.height(height);
  11893. $("a", tabitem).text(text);
  11894. g.tab.links.ul.append(tabitem);
  11895. g.tab.content.append(contentitem);
  11896. g.selectTabItem(tabid);
  11897. if (g.setTabButton())
  11898. {
  11899. g.moveToLastTabItem();
  11900. }
  11901. //增加事件
  11902. g._addTabItemEvent(tabitem);
  11903. if (p.dragToMove && $.fn.ligerDrag)
  11904. {
  11905. g.drags = g.drags || [];
  11906. tabitem.each(function ()
  11907. {
  11908. g.drags.push(g._applyDrag(this));
  11909. });
  11910. }
  11911. g.trigger('afterAddTabItem', [tabid]);
  11912. },
  11913. _addTabItemEvent: function (tabitem)
  11914. {
  11915. var g = this, p = this.options;
  11916. tabitem.click(function ()
  11917. {
  11918. var tabid = $(this).attr("tabid");
  11919. g.selectTabItem(tabid);
  11920. });
  11921. //右键事件支持
  11922. g.tab.menu && g._addTabItemContextMenuEven(tabitem);
  11923. $(".l-tab-links-item-close", tabitem).hover(function ()
  11924. {
  11925. $(this).addClass("l-tab-links-item-close-over");
  11926. }, function ()
  11927. {
  11928. $(this).removeClass("l-tab-links-item-close-over");
  11929. }).click(function ()
  11930. {
  11931. var tabid = $(this).parent().attr("tabid");
  11932. g.removeTabItem(tabid);
  11933. });
  11934. },
  11935. //移除tab项
  11936. removeTabItem: function (tabid)
  11937. {
  11938. var g = this, p = this.options;
  11939. if (g.trigger('beforeRemoveTabItem', [tabid]) == false)
  11940. return false;
  11941. var currentIsSelected = $("li[tabid=" + tabid + "]", g.tab.links.ul).hasClass("l-selected");
  11942. if (currentIsSelected)
  11943. {
  11944. $(".l-tab-content-item[tabid=" + tabid + "]", g.tab.content).prev().show();
  11945. $("li[tabid=" + tabid + "]", g.tab.links.ul).prev().addClass("l-selected").siblings().removeClass("l-selected");
  11946. }
  11947. $(".l-tab-content-item[tabid=" + tabid + "]", g.tab.content).remove();
  11948. $("li[tabid=" + tabid + "]", g.tab.links.ul).remove();
  11949. g.setTabButton();
  11950. g.trigger('afterRemoveTabItem', [tabid]);
  11951. },
  11952. addHeight: function (heightDiff)
  11953. {
  11954. var g = this, p = this.options;
  11955. var newHeight = g.tab.height() + heightDiff;
  11956. g.setHeight(newHeight);
  11957. },
  11958. setHeight: function (height)
  11959. {
  11960. var g = this, p = this.options;
  11961. g.tab.height(height);
  11962. g.setContentHeight();
  11963. },
  11964. setContentHeight: function ()
  11965. {
  11966. var g = this, p = this.options;
  11967. var newheight = g.tab.height() - g.tab.links.height();
  11968. g.tab.content.height(newheight);
  11969. $("> .l-tab-content-item", g.tab.content).height(newheight);
  11970. },
  11971. getNewTabid: function ()
  11972. {
  11973. var g = this, p = this.options;
  11974. g.getnewidcount = g.getnewidcount || 0;
  11975. return 'tabitem' + (++g.getnewidcount);
  11976. },
  11977. //notabid 过滤掉tabid的
  11978. //noclose 过滤掉没有关闭按钮的
  11979. getTabidList: function (notabid, noclose)
  11980. {
  11981. var g = this, p = this.options;
  11982. var tabidlist = [];
  11983. $("> li", g.tab.links.ul).each(function ()
  11984. {
  11985. if ($(this).attr("tabid")
  11986. && $(this).attr("tabid") != notabid
  11987. && (!noclose || $(".l-tab-links-item-close", this).length > 0))
  11988. {
  11989. tabidlist.push($(this).attr("tabid"));
  11990. }
  11991. });
  11992. return tabidlist;
  11993. },
  11994. removeOther: function (tabid, compel)
  11995. {
  11996. var g = this, p = this.options;
  11997. var tabidlist = g.getTabidList(tabid, true);
  11998. $(tabidlist).each(function ()
  11999. {
  12000. g.removeTabItem(this);
  12001. });
  12002. },
  12003. reload: function (tabid)
  12004. {
  12005. var g = this, p = this.options;
  12006. var contentitem = $(".l-tab-content-item[tabid=" + tabid + "]");
  12007. var iframeloading = $(".l-tab-loading:first", contentitem);
  12008. var iframe = $("iframe:first", contentitem);
  12009. var url = $(iframe).attr("src");
  12010. iframeloading.show();
  12011. iframe.attr("src", url).unbind('load.tab').bind('load.tab', function ()
  12012. {
  12013. iframeloading.hide();
  12014. });
  12015. },
  12016. removeAll: function (compel)
  12017. {
  12018. var g = this, p = this.options;
  12019. var tabidlist = g.getTabidList(null, true);
  12020. $(tabidlist).each(function ()
  12021. {
  12022. g.removeTabItem(this);
  12023. });
  12024. },
  12025. onResize: function ()
  12026. {
  12027. var g = this, p = this.options;
  12028. if (!p.height || typeof (p.height) != 'string' || p.height.indexOf('%') == -1) return false;
  12029. //set tab height
  12030. if (g.tab.parent()[0].tagName.toLowerCase() == "body")
  12031. {
  12032. var windowHeight = $(window).height();
  12033. windowHeight -= parseInt(g.tab.parent().css('paddingTop'));
  12034. windowHeight -= parseInt(g.tab.parent().css('paddingBottom'));
  12035. g.height = p.heightDiff + windowHeight * parseFloat(g.height) * 0.01;
  12036. }
  12037. else
  12038. {
  12039. g.height = p.heightDiff + (g.tab.parent().height() * parseFloat(p.height) * 0.01);
  12040. }
  12041. g.tab.height(g.height);
  12042. g.setContentHeight();
  12043. },
  12044. _menuItemClick: function (item)
  12045. {
  12046. var g = this, p = this.options;
  12047. if (!item.id || !g.actionTabid) return;
  12048. switch (item.id)
  12049. {
  12050. case "close":
  12051. g.removeTabItem(g.actionTabid);
  12052. g.actionTabid = null;
  12053. break;
  12054. case "closeother":
  12055. g.removeOther(g.actionTabid);
  12056. break;
  12057. case "closeall":
  12058. g.removeAll();
  12059. g.actionTabid = null;
  12060. break;
  12061. case "reload":
  12062. g.selectTabItem(g.actionTabid);
  12063. g.reload(g.actionTabid);
  12064. break;
  12065. }
  12066. },
  12067. _addTabItemContextMenuEven: function (tabitem)
  12068. {
  12069. var g = this, p = this.options;
  12070. tabitem.bind("contextmenu", function (e)
  12071. {
  12072. if (!g.tab.menu) return;
  12073. g.actionTabid = tabitem.attr("tabid");
  12074. g.tab.menu.show({ top: e.pageY, left: e.pageX });
  12075. if ($(".l-tab-links-item-close", this).length == 0)
  12076. {
  12077. g.tab.menu.setDisabled('close');
  12078. }
  12079. else
  12080. {
  12081. g.tab.menu.setEnabled('close');
  12082. }
  12083. return false;
  12084. });
  12085. }
  12086. });
  12087. })(jQuery);/**
  12088. * jQuery ligerUI 1.1.9
  12089. *
  12090. * http://ligerui.com
  12091. *
  12092. * Author daomi 2012 [ gd_star@163.com ]
  12093. *
  12094. */
  12095. (function ($)
  12096. {
  12097. $.fn.ligerTextBox = function ()
  12098. {
  12099. return $.ligerui.run.call(this, "ligerTextBox", arguments);
  12100. };
  12101. $.fn.ligerGetTextBoxManager = function ()
  12102. {
  12103. return $.ligerui.run.call(this, "ligerGetTextBoxManager", arguments);
  12104. };
  12105. $.ligerDefaults.TextBox = {
  12106. onChangeValue: null,
  12107. width: null,
  12108. disabled: false,
  12109. value: null, //初始化值
  12110. nullText: null, //不能为空时的提示
  12111. digits: false, //是否限定为数字输入框
  12112. number: false //是否限定为浮点数格式输入框
  12113. };
  12114. $.ligerui.controls.TextBox = function (element, options)
  12115. {
  12116. $.ligerui.controls.TextBox.base.constructor.call(this, element, options);
  12117. };
  12118. $.ligerui.controls.TextBox.ligerExtend($.ligerui.controls.Input, {
  12119. __getType: function ()
  12120. {
  12121. return 'TextBox'
  12122. },
  12123. __idPrev: function ()
  12124. {
  12125. return 'TextBox';
  12126. },
  12127. _init: function ()
  12128. {
  12129. $.ligerui.controls.TextBox.base._init.call(this);
  12130. var g = this, p = this.options;
  12131. if (!p.width)
  12132. {
  12133. p.width = $(g.element).width();
  12134. }
  12135. if ($(this.element).attr("readonly"))
  12136. {
  12137. p.disabled = true;
  12138. }
  12139. },
  12140. _render: function ()
  12141. {
  12142. var g = this, p = this.options;
  12143. g.inputText = $(this.element);
  12144. //外层
  12145. g.wrapper = g.inputText.wrap('<div class="l-text"></div>').parent();
  12146. g.wrapper.append('<div class="l-text-l"></div><div class="l-text-r"></div>');
  12147. if (!g.inputText.hasClass("l-text-field"))
  12148. g.inputText.addClass("l-text-field");
  12149. this._setEvent();
  12150. g.set(p);
  12151. g.checkValue();
  12152. },
  12153. _getValue: function ()
  12154. {
  12155. return this.inputText.val();
  12156. },
  12157. _setNullText: function ()
  12158. {
  12159. this.checkNotNull();
  12160. },
  12161. checkValue: function ()
  12162. {
  12163. var g = this, p = this.options;
  12164. var v = g.inputText.val();
  12165. if (p.number && !/^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(v) || p.digits && !/^\d+$/.test(v))
  12166. {
  12167. g.inputText.val(g.value || 0);
  12168. return;
  12169. }
  12170. g.value = v;
  12171. },
  12172. checkNotNull: function ()
  12173. {
  12174. var g = this, p = this.options;
  12175. if (p.nullText && !p.disabled)
  12176. {
  12177. if (!g.inputText.val())
  12178. {
  12179. g.inputText.addClass("l-text-field-null").val(p.nullText);
  12180. }
  12181. }
  12182. },
  12183. _setEvent: function ()
  12184. {
  12185. var g = this, p = this.options;
  12186. g.inputText.bind('blur.textBox', function ()
  12187. {
  12188. g.trigger('blur');
  12189. g.checkNotNull();
  12190. g.checkValue();
  12191. g.wrapper.removeClass("l-text-focus");
  12192. }).bind('focus.textBox', function ()
  12193. {
  12194. g.trigger('focus');
  12195. if (p.nullText)
  12196. {
  12197. if ($(this).hasClass("l-text-field-null"))
  12198. {
  12199. $(this).removeClass("l-text-field-null").val("");
  12200. }
  12201. }
  12202. g.wrapper.addClass("l-text-focus");
  12203. })
  12204. .change(function ()
  12205. {
  12206. g.trigger('changeValue', [this.value]);
  12207. });
  12208. g.wrapper.hover(function ()
  12209. {
  12210. g.trigger('mouseOver');
  12211. g.wrapper.addClass("l-text-over");
  12212. }, function ()
  12213. {
  12214. g.trigger('mouseOut');
  12215. g.wrapper.removeClass("l-text-over");
  12216. });
  12217. },
  12218. _setDisabled: function (value)
  12219. {
  12220. if (value)
  12221. {
  12222. this.inputText.attr("readonly", "readonly");
  12223. this.wrapper.addClass("l-text-disabled");
  12224. }
  12225. else
  12226. {
  12227. this.inputText.removeAttr("readonly");
  12228. this.wrapper.removeClass('l-text-disabled');
  12229. }
  12230. },
  12231. _setWidth: function (value)
  12232. {
  12233. if (value > 20)
  12234. {
  12235. this.wrapper.css({ width: value });
  12236. this.inputText.css({ width: value - 4 });
  12237. }
  12238. },
  12239. _setHeight: function (value)
  12240. {
  12241. if (value > 10)
  12242. {
  12243. this.wrapper.height(value);
  12244. this.inputText.height(value - 2);
  12245. }
  12246. },
  12247. _setValue: function (value)
  12248. {
  12249. if (value != null)
  12250. this.inputText.val(value);
  12251. },
  12252. _setLabel: function (value)
  12253. {
  12254. var g = this, p = this.options;
  12255. if (!g.labelwrapper)
  12256. {
  12257. g.labelwrapper = g.wrapper.wrap('<div class="l-labeltext"></div>').parent();
  12258. var lable = $('<div class="l-text-label" style="float:left;">' + value + ':&nbsp</div>');
  12259. g.labelwrapper.prepend(lable);
  12260. g.wrapper.css('float', 'left');
  12261. if (!p.labelWidth)
  12262. {
  12263. p.labelWidth = lable.width();
  12264. }
  12265. else
  12266. {
  12267. g._setLabelWidth(p.labelWidth);
  12268. }
  12269. lable.height(g.wrapper.height());
  12270. if (p.labelAlign)
  12271. {
  12272. g._setLabelAlign(p.labelAlign);
  12273. }
  12274. g.labelwrapper.append('<br style="clear:both;" />');
  12275. g.labelwrapper.width(p.labelWidth + p.width + 2);
  12276. }
  12277. else
  12278. {
  12279. g.labelwrapper.find(".l-text-label").html(value + ':&nbsp');
  12280. }
  12281. },
  12282. _setLabelWidth: function (value)
  12283. {
  12284. var g = this, p = this.options;
  12285. if (!g.labelwrapper) return;
  12286. g.labelwrapper.find(".l-text-label").width(value);
  12287. },
  12288. _setLabelAlign: function (value)
  12289. {
  12290. var g = this, p = this.options;
  12291. if (!g.labelwrapper) return;
  12292. g.labelwrapper.find(".l-text-label").css('text-align', value);
  12293. },
  12294. updateStyle: function ()
  12295. {
  12296. var g = this, p = this.options;
  12297. if (g.inputText.attr('disabled') || g.inputText.attr('readonly'))
  12298. {
  12299. g.wrapper.addClass("l-text-disabled");
  12300. g.options.disabled = true;
  12301. }
  12302. else
  12303. {
  12304. g.wrapper.removeClass("l-text-disabled");
  12305. g.options.disabled = false;
  12306. }
  12307. if (g.inputText.hasClass("l-text-field-null") && g.inputText.val() != p.nullText)
  12308. {
  12309. g.inputText.removeClass("l-text-field-null");
  12310. }
  12311. g.checkValue();
  12312. }
  12313. });
  12314. })(jQuery);/**
  12315. * jQuery ligerUI 1.1.9
  12316. *
  12317. * http://ligerui.com
  12318. *
  12319. * Author daomi 2012 [ gd_star@163.com ]
  12320. *
  12321. */
  12322. (function ($)
  12323. {
  12324. //气泡,可以在制定位置显示
  12325. $.ligerTip = function (p)
  12326. {
  12327. return $.ligerui.run.call(null, "ligerTip", arguments);
  12328. };
  12329. //在指定Dom Element右侧显示气泡
  12330. //target:将ligerui对象ID附加上
  12331. $.fn.ligerTip = function (options)
  12332. {
  12333. this.each(function ()
  12334. {
  12335. var p = $.extend({}, $.ligerDefaults.ElementTip, options || {});
  12336. p.target = p.target || this;
  12337. //如果是自动模式:鼠标经过时显示,移开时关闭
  12338. if (p.auto || options == undefined)
  12339. {
  12340. if (!p.content)
  12341. {
  12342. p.content = this.title;
  12343. if (p.removeTitle)
  12344. $(this).removeAttr("title");
  12345. }
  12346. p.content = p.content || this.title;
  12347. $(this).bind('mouseover.tip', function ()
  12348. {
  12349. p.x = $(this).offset().left + $(this).width() + (p.distanceX || 0);
  12350. p.y = $(this).offset().top + (p.distanceY || 0);
  12351. $.ligerTip(p);
  12352. }).bind('mouseout.tip', function ()
  12353. {
  12354. var tipmanager = $.ligerui.managers[this.ligeruitipid];
  12355. if (tipmanager)
  12356. {
  12357. tipmanager.remove();
  12358. }
  12359. });
  12360. }
  12361. else
  12362. {
  12363. if (p.target.ligeruitipid) return;
  12364. p.x = $(this).offset().left + $(this).width() + (p.distanceX || 0);
  12365. p.y = $(this).offset().top + (p.distanceY || 0);
  12366. p.x = p.x || 0;
  12367. p.y = p.y || 0;
  12368. $.ligerTip(p);
  12369. }
  12370. });
  12371. return $.ligerui.get(this, 'ligeruitipid');
  12372. };
  12373. //关闭指定在Dom Element(附加了ligerui对象ID,属性名"ligeruitipid")显示的气泡
  12374. $.fn.ligerHideTip = function (options)
  12375. {
  12376. return this.each(function ()
  12377. {
  12378. var p = options || {};
  12379. if (p.isLabel == undefined)
  12380. {
  12381. //如果是lable,将查找指定的input,并找到ligerui对象ID
  12382. p.isLabel = this.tagName.toLowerCase() == "label" && $(this).attr("for") != null;
  12383. }
  12384. var target = this;
  12385. if (p.isLabel)
  12386. {
  12387. var forele = $("#" + $(this).attr("for"));
  12388. if (forele.length == 0) return;
  12389. target = forele[0];
  12390. }
  12391. var tipmanager = $.ligerui.managers[target.ligeruitipid];
  12392. if (tipmanager)
  12393. {
  12394. tipmanager.remove();
  12395. }
  12396. }).unbind('mouseover.tip').unbind('mouseout.tip');
  12397. };
  12398. $.fn.ligerGetTipManager = function ()
  12399. {
  12400. return $.ligerui.get(this);
  12401. };
  12402. $.ligerDefaults = $.ligerDefaults || {};
  12403. //隐藏气泡
  12404. $.ligerDefaults.HideTip = {};
  12405. //气泡
  12406. $.ligerDefaults.Tip = {
  12407. content: null,
  12408. callback: null,
  12409. width: 150,
  12410. height: null,
  12411. x: 0,
  12412. y: 0,
  12413. appendIdTo: null, //保存ID到那一个对象(jQuery)(待移除)
  12414. target: null,
  12415. auto: null, //是否自动模式,如果是,那么:鼠标经过时显示,移开时关闭,并且当content为空时自动读取attr[title]
  12416. removeTitle: true //自动模式时,默认是否移除掉title
  12417. };
  12418. //在指定Dom Element右侧显示气泡,通过$.fn.ligerTip调用
  12419. $.ligerDefaults.ElementTip = {
  12420. distanceX: 1,
  12421. distanceY: -3,
  12422. auto: null,
  12423. removeTitle: true
  12424. };
  12425. $.ligerMethos.Tip = {};
  12426. $.ligerui.controls.Tip = function (options)
  12427. {
  12428. $.ligerui.controls.Tip.base.constructor.call(this, null, options);
  12429. };
  12430. $.ligerui.controls.Tip.ligerExtend($.ligerui.core.UIComponent, {
  12431. __getType: function ()
  12432. {
  12433. return 'Tip';
  12434. },
  12435. __idPrev: function ()
  12436. {
  12437. return 'Tip';
  12438. },
  12439. _extendMethods: function ()
  12440. {
  12441. return $.ligerMethos.Tip;
  12442. },
  12443. _render: function ()
  12444. {
  12445. var g = this, p = this.options;
  12446. var tip = $('<div class="l-verify-tip"><div class="l-verify-tip-corner"></div><div class="l-verify-tip-content"></div></div>');
  12447. g.tip = tip;
  12448. g.tip.attr("id", g.id);
  12449. if (p.content)
  12450. {
  12451. $("> .l-verify-tip-content:first", tip).html(p.content);
  12452. tip.appendTo('body');
  12453. }
  12454. else
  12455. {
  12456. return;
  12457. }
  12458. tip.css({ left: p.x, top: p.y }).show();
  12459. p.width && $("> .l-verify-tip-content:first", tip).width(p.width - 8);
  12460. p.height && $("> .l-verify-tip-content:first", tip).width(p.height);
  12461. eee = p.appendIdTo;
  12462. if (p.appendIdTo)
  12463. {
  12464. p.appendIdTo.attr("ligerTipId", g.id);
  12465. }
  12466. if (p.target)
  12467. {
  12468. $(p.target).attr("ligerTipId", g.id);
  12469. p.target.ligeruitipid = g.id;
  12470. }
  12471. p.callback && p.callback(tip);
  12472. g.set(p);
  12473. },
  12474. _setContent: function (content)
  12475. {
  12476. $("> .l-verify-tip-content:first", this.tip).html(content);
  12477. },
  12478. remove: function ()
  12479. {
  12480. if (this.options.appendIdTo)
  12481. {
  12482. this.options.appendIdTo.removeAttr("ligerTipId");
  12483. }
  12484. if (this.options.target)
  12485. {
  12486. $(this.options.target).removeAttr("ligerTipId");
  12487. this.options.target.ligeruitipid = null;
  12488. }
  12489. this.tip.remove();
  12490. }
  12491. });
  12492. })(jQuery);/**
  12493. * jQuery ligerUI 1.1.9
  12494. *
  12495. * http://ligerui.com
  12496. *
  12497. * Author daomi 2012 [ gd_star@163.com ]
  12498. *
  12499. */
  12500. (function ($)
  12501. {
  12502. $.fn.ligerToolBar = function (options)
  12503. {
  12504. return $.ligerui.run.call(this, "ligerToolBar", arguments);
  12505. };
  12506. $.fn.ligerGetToolBarManager = function ()
  12507. {
  12508. return $.ligerui.run.call(this, "ligerGetToolBarManager", arguments);
  12509. };
  12510. $.ligerDefaults.ToolBar = {};
  12511. $.ligerMethos.ToolBar = {};
  12512. $.ligerui.controls.ToolBar = function (element, options)
  12513. {
  12514. $.ligerui.controls.ToolBar.base.constructor.call(this, element, options);
  12515. };
  12516. $.ligerui.controls.ToolBar.ligerExtend($.ligerui.core.UIComponent, {
  12517. __getType: function ()
  12518. {
  12519. return 'ToolBar';
  12520. },
  12521. __idPrev: function ()
  12522. {
  12523. return 'ToolBar';
  12524. },
  12525. _extendMethods: function ()
  12526. {
  12527. return $.ligerMethos.ToolBar;
  12528. },
  12529. _render: function ()
  12530. {
  12531. var g = this, p = this.options;
  12532. g.toolBar = $(this.element);
  12533. g.toolBar.addClass("l-toolbar");
  12534. g.set(p);
  12535. },
  12536. _setItems: function (items)
  12537. {
  12538. var g = this;
  12539. $(items).each(function (i, item)
  12540. {
  12541. g.addItem(item);
  12542. });
  12543. },
  12544. addItem: function (item)
  12545. {
  12546. var g = this, p = this.options;
  12547. if (item.line)
  12548. {
  12549. g.toolBar.append('<div class="l-bar-separator"></div>');
  12550. return;
  12551. }
  12552. var ditem = $('<div class="l-toolbar-item l-panel-btn"><span></span><div class="l-panel-btn-l"></div><div class="l-panel-btn-r"></div></div>');
  12553. g.toolBar.append(ditem);
  12554. item.id && ditem.attr("toolbarid", item.id);
  12555. if (item.img)
  12556. {
  12557. ditem.append("<img src='" + item.img + "' />");
  12558. ditem.addClass("l-toolbar-item-hasicon");
  12559. }
  12560. else if (item.icon)
  12561. {
  12562. ditem.append("<div class='l-icon l-icon-" + item.icon + "'></div>");
  12563. ditem.addClass("l-toolbar-item-hasicon");
  12564. }
  12565. item.text && $("span:first", ditem).html(item.text);
  12566. item.disable && ditem.addClass("l-toolbar-item-disable");
  12567. item.click && ditem.click(function () { item.click(item); });
  12568. ditem.hover(function ()
  12569. {
  12570. $(this).addClass("l-panel-btn-over");
  12571. }, function ()
  12572. {
  12573. $(this).removeClass("l-panel-btn-over");
  12574. });
  12575. }
  12576. });
  12577. })(jQuery);/**
  12578. * jQuery ligerUI 1.1.9
  12579. *
  12580. * http://ligerui.com
  12581. *
  12582. * Author daomi 2012 [ gd_star@163.com ]
  12583. *
  12584. */
  12585. (function ($)
  12586. {
  12587. $.fn.ligerTree = function (options)
  12588. {
  12589. return $.ligerui.run.call(this, "ligerTree", arguments);
  12590. };
  12591. $.fn.ligerGetTreeManager = function ()
  12592. {
  12593. return $.ligerui.run.call(this, "ligerGetTreeManager", arguments);
  12594. };
  12595. $.ligerDefaults.Tree = {
  12596. url: null,
  12597. data: null,
  12598. checkbox: true,
  12599. autoCheckboxEven: true,
  12600. parentIcon: 'folder',
  12601. childIcon: 'leaf',
  12602. textFieldName: 'text',
  12603. attribute: ['id', 'url'],
  12604. treeLine: true, //是否显示line
  12605. nodeWidth: 90,
  12606. statusName: '__status',
  12607. isLeaf: null, //是否子节点的判断函数
  12608. single: false, //是否单选
  12609. onBeforeExpand: function () { },
  12610. onContextmenu: function () { },
  12611. onExpand: function () { },
  12612. onBeforeCollapse: function () { },
  12613. onCollapse: function () { },
  12614. onBeforeSelect: function () { },
  12615. onSelect: function () { },
  12616. onBeforeCancelSelect: function () { },
  12617. onCancelselect: function () { },
  12618. onCheck: function () { },
  12619. onSuccess: function () { },
  12620. onError: function () { },
  12621. onClick: function () { },
  12622. idFieldName: 'id',
  12623. parentIDFieldName: null,
  12624. topParentIDValue: 0,
  12625. onBeforeAppend: function () { }, //加载数据前事件,可以通过return false取消操作
  12626. onAppend: function () { }, //加载数据时事件,对数据进行预处理以后
  12627. onAfterAppend: function () { }, //加载数据完事件
  12628. slide: true, //是否以动画的形式显示
  12629. iconFieldName: 'icon',
  12630. nodeDraggable: false, //是否允许拖拽
  12631. nodeDraggingRender: null,
  12632. btnClickToToggleOnly: true //是否点击展开/收缩 按钮时才有效
  12633. };
  12634. $.ligerui.controls.Tree = function (element, options)
  12635. {
  12636. $.ligerui.controls.Tree.base.constructor.call(this, element, options);
  12637. };
  12638. $.ligerui.controls.Tree.ligerExtend($.ligerui.core.UIComponent, {
  12639. _init: function ()
  12640. {
  12641. $.ligerui.controls.Tree.base._init.call(this);
  12642. var g = this, p = this.options;
  12643. if (p.single) p.autoCheckboxEven = false;
  12644. },
  12645. _render: function ()
  12646. {
  12647. var g = this, p = this.options;
  12648. g.set(p, true);
  12649. g.tree = $(g.element);
  12650. g.tree.addClass('l-tree');
  12651. g.sysAttribute = ['isexpand', 'ischecked', 'href', 'style'];
  12652. g.loading = $("<div class='l-tree-loading'></div>");
  12653. g.tree.after(g.loading);
  12654. g.data = [];
  12655. g.maxOutlineLevel = 1;
  12656. g.treedataindex = 0;
  12657. g._applyTree();
  12658. g._setTreeEven();
  12659. g.set(p, false);
  12660. },
  12661. _setTreeLine: function (value)
  12662. {
  12663. if (value) this.tree.removeClass("l-tree-noline");
  12664. else this.tree.addClass("l-tree-noline");
  12665. },
  12666. _setUrl: function (url)
  12667. {
  12668. if (url) this.loadData(null, url);
  12669. },
  12670. _setData: function (data)
  12671. {
  12672. if (data) this.append(null, data);
  12673. },
  12674. setData: function (data)
  12675. {
  12676. this.set('data', data);
  12677. },
  12678. getData: function ()
  12679. {
  12680. return this.data;
  12681. },
  12682. //是否包含子节点
  12683. hasChildren: function (treenodedata)
  12684. {
  12685. if (this.options.isLeaf) return this.options.isLeaf(treenodedata);
  12686. return treenodedata.children ? true : false;
  12687. },
  12688. //获取父节点 数据
  12689. getParent: function (treenode, level)
  12690. {
  12691. var g = this;
  12692. treenode = g.getNodeDom(treenode);
  12693. var parentTreeNode = g.getParentTreeItem(treenode, level);
  12694. if (!parentTreeNode) return null;
  12695. var parentIndex = $(parentTreeNode).attr("treedataindex");
  12696. return g._getDataNodeByTreeDataIndex(parentIndex);
  12697. },
  12698. //获取父节点
  12699. getParentTreeItem: function (treenode, level)
  12700. {
  12701. var g = this;
  12702. treenode = g.getNodeDom(treenode);
  12703. var treeitem = $(treenode);
  12704. if (treeitem.parent().hasClass("l-tree"))
  12705. return null;
  12706. if (level == undefined)
  12707. {
  12708. if (treeitem.parent().parent("li").length == 0)
  12709. return null;
  12710. return treeitem.parent().parent("li")[0];
  12711. }
  12712. var currentLevel = parseInt(treeitem.attr("outlinelevel"));
  12713. var currenttreeitem = treeitem;
  12714. for (var i = currentLevel - 1; i >= level; i--)
  12715. {
  12716. currenttreeitem = currenttreeitem.parent().parent("li");
  12717. }
  12718. return currenttreeitem[0];
  12719. },
  12720. getChecked: function ()
  12721. {
  12722. var g = this, p = this.options;
  12723. if (!this.options.checkbox) return null;
  12724. var nodes = [];
  12725. $(".l-checkbox-checked", g.tree).parent().parent("li").each(function ()
  12726. {
  12727. var treedataindex = parseInt($(this).attr("treedataindex"));
  12728. nodes.push({ target: this, data: g._getDataNodeByTreeDataIndex(g.data, treedataindex) });
  12729. });
  12730. return nodes;
  12731. },
  12732. getSelected: function ()
  12733. {
  12734. var g = this, p = this.options;
  12735. var node = {};
  12736. node.target = $(".l-selected", g.tree).parent("li")[0];
  12737. if (node.target)
  12738. {
  12739. var treedataindex = parseInt($(node.target).attr("treedataindex"));
  12740. node.data = g._getDataNodeByTreeDataIndex(g.data, treedataindex);
  12741. return node;
  12742. }
  12743. return null;
  12744. },
  12745. //升级为父节点级别
  12746. upgrade: function (treeNode)
  12747. {
  12748. var g = this, p = this.options;
  12749. $(".l-note", treeNode).each(function ()
  12750. {
  12751. $(this).removeClass("l-note").addClass("l-expandable-open");
  12752. });
  12753. $(".l-note-last", treeNode).each(function ()
  12754. {
  12755. $(this).removeClass("l-note-last").addClass("l-expandable-open");
  12756. });
  12757. $("." + g._getChildNodeClassName(), treeNode).each(function ()
  12758. {
  12759. $(this)
  12760. .removeClass(g._getChildNodeClassName())
  12761. .addClass(g._getParentNodeClassName(true));
  12762. });
  12763. },
  12764. //降级为叶节点级别
  12765. demotion: function (treeNode)
  12766. {
  12767. var g = this, p = this.options;
  12768. if (!treeNode && treeNode[0].tagName.toLowerCase() != 'li') return;
  12769. var islast = $(treeNode).hasClass("l-last");
  12770. $(".l-expandable-open", treeNode).each(function ()
  12771. {
  12772. $(this).removeClass("l-expandable-open")
  12773. .addClass(islast ? "l-note-last" : "l-note");
  12774. });
  12775. $(".l-expandable-close", treeNode).each(function ()
  12776. {
  12777. $(this).removeClass("l-expandable-close")
  12778. .addClass(islast ? "l-note-last" : "l-note");
  12779. });
  12780. $("." + g._getParentNodeClassName(true), treeNode).each(function ()
  12781. {
  12782. $(this)
  12783. .removeClass(g._getParentNodeClassName(true))
  12784. .addClass(g._getChildNodeClassName());
  12785. });
  12786. },
  12787. collapseAll: function ()
  12788. {
  12789. var g = this, p = this.options;
  12790. $(".l-expandable-open", g.tree).click();
  12791. },
  12792. expandAll: function ()
  12793. {
  12794. var g = this, p = this.options;
  12795. $(".l-expandable-close", g.tree).click();
  12796. },
  12797. loadData: function (node, url, param)
  12798. {
  12799. var g = this, p = this.options;
  12800. g.loading.show();
  12801. var ajaxtype = param ? "post" : "get";
  12802. param = param || [];
  12803. //请求服务器
  12804. $.ajax({
  12805. type: ajaxtype,
  12806. url: url,
  12807. data: param,
  12808. dataType: 'json',
  12809. success: function (data)
  12810. {
  12811. if (!data) return;
  12812. g.loading.hide();
  12813. g.append(node, data);
  12814. g.trigger('success', [data]);
  12815. },
  12816. error: function (XMLHttpRequest, textStatus, errorThrown)
  12817. {
  12818. try
  12819. {
  12820. g.loading.hide();
  12821. g.trigger('error', [XMLHttpRequest, textStatus, errorThrown]);
  12822. }
  12823. catch (e)
  12824. {
  12825. }
  12826. }
  12827. });
  12828. },
  12829. //清空
  12830. clear: function ()
  12831. {
  12832. var g = this, p = this.options;
  12833. //g.tree.html("");
  12834. $("> li", g.tree).each(function () { g.remove(this); });
  12835. },
  12836. //@parm [treeNode] dom节点(li)、节点数据 或者节点 dataindex
  12837. getNodeDom: function (nodeParm)
  12838. {
  12839. var g = this, p = this.options;
  12840. if (nodeParm == null) return nodeParm;
  12841. if (typeof (nodeParm) == "string" || typeof (nodeParm) == "number")
  12842. {
  12843. return $("li[treedataindex=" + nodeParm + "]", g.tree).get(0);
  12844. }
  12845. else if (typeof (nodeParm) == "object" && 'treedataindex' in nodeParm) //nodedata
  12846. {
  12847. return g.getNodeDom(nodeParm['treedataindex']);
  12848. }
  12849. return nodeParm;
  12850. },
  12851. //@parm [treeNode] dom节点(li)、节点数据 或者节点 dataindex
  12852. remove: function (treeNode)
  12853. {
  12854. var g = this, p = this.options;
  12855. treeNode = g.getNodeDom(treeNode);
  12856. var treedataindex = parseInt($(treeNode).attr("treedataindex"));
  12857. var treenodedata = g._getDataNodeByTreeDataIndex(g.data, treedataindex);
  12858. if (treenodedata) g._setTreeDataStatus([treenodedata], 'delete');
  12859. var parentNode = g.getParentTreeItem(treeNode);
  12860. //复选框处理
  12861. if (p.checkbox)
  12862. {
  12863. g._setParentCheckboxStatus($(treeNode));
  12864. }
  12865. $(treeNode).remove();
  12866. g._updateStyle(parentNode ? $("ul:first", parentNode) : g.tree);
  12867. },
  12868. _updateStyle: function (ul)
  12869. {
  12870. var g = this, p = this.options;
  12871. var itmes = $(" > li", ul);
  12872. var treeitemlength = itmes.length;
  12873. if (!treeitemlength) return;
  12874. //遍历设置子节点的样式
  12875. itmes.each(function (i, item)
  12876. {
  12877. if (i == 0 && !$(this).hasClass("l-first"))
  12878. $(this).addClass("l-first");
  12879. if (i == treeitemlength - 1 && !$(this).hasClass("l-last"))
  12880. $(this).addClass("l-last");
  12881. if (i == 0 && i == treeitemlength - 1)
  12882. $(this).addClass("l-onlychild");
  12883. $("> div .l-note,> div .l-note-last", this)
  12884. .removeClass("l-note l-note-last")
  12885. .addClass(i == treeitemlength - 1 ? "l-note-last" : "l-note");
  12886. g._setTreeItem(this, { isLast: i == treeitemlength - 1 });
  12887. });
  12888. },
  12889. //@parm [domnode] dom节点(li)、节点数据 或者节点 dataindex
  12890. update: function (domnode, newnodedata)
  12891. {
  12892. var g = this, p = this.options;
  12893. domnode = g.getNodeDom(domnode);
  12894. var treedataindex = parseInt($(domnode).attr("treedataindex"));
  12895. nodedata = g._getDataNodeByTreeDataIndex(g.data, treedataindex);
  12896. for (var attr in newnodedata)
  12897. {
  12898. nodedata[attr] = newnodedata[attr];
  12899. if (attr == p.textFieldName)
  12900. {
  12901. $("> .l-body > span", domnode).text(newnodedata[attr]);
  12902. }
  12903. }
  12904. },
  12905. //增加节点集合
  12906. //@parm [newdata] 数据集合 Array
  12907. //@parm [parentNode] dom节点(li)、节点数据 或者节点 dataindex
  12908. //@parm [nearNode] 附加到节点的上方/下方(非必填)
  12909. //@parm [isAfter] 附加到节点的下方(非必填)
  12910. append: function (parentNode, newdata, nearNode, isAfter)
  12911. {
  12912. var g = this, p = this.options;
  12913. parentNode = g.getNodeDom(parentNode);
  12914. if (g.trigger('beforeAppend', [parentNode, newdata]) == false) return false;
  12915. if (!newdata || !newdata.length) return false;
  12916. if (p.idFieldName && p.parentIDFieldName)
  12917. newdata = g.arrayToTree(newdata, p.idFieldName, p.parentIDFieldName);
  12918. g._addTreeDataIndexToData(newdata);
  12919. g._setTreeDataStatus(newdata, 'add');
  12920. if (nearNode != null)
  12921. {
  12922. nearNode = g.getNodeDom(nearNode);
  12923. }
  12924. g.trigger('append', [parentNode, newdata])
  12925. g._appendData(parentNode, newdata);
  12926. if (parentNode == null)//增加到根节点
  12927. {
  12928. var gridhtmlarr = g._getTreeHTMLByData(newdata, 1, [], true);
  12929. gridhtmlarr[gridhtmlarr.length - 1] = gridhtmlarr[0] = "";
  12930. if (nearNode != null)
  12931. {
  12932. $(nearNode)[isAfter ? 'after' : 'before'](gridhtmlarr.join(''));
  12933. g._updateStyle(parentNode ? $("ul:first", parentNode) : g.tree);
  12934. }
  12935. else
  12936. {
  12937. //remove last node class
  12938. if ($("> li:last", g.tree).length > 0)
  12939. g._setTreeItem($("> li:last", g.tree)[0], { isLast: false });
  12940. g.tree.append(gridhtmlarr.join(''));
  12941. }
  12942. $(".l-body", g.tree).hover(function ()
  12943. {
  12944. $(this).addClass("l-over");
  12945. }, function ()
  12946. {
  12947. $(this).removeClass("l-over");
  12948. });
  12949. g._upadteTreeWidth();
  12950. g.trigger('afterAppend', [parentNode, newdata])
  12951. return;
  12952. }
  12953. var treeitem = $(parentNode);
  12954. var outlineLevel = parseInt(treeitem.attr("outlinelevel"));
  12955. var hasChildren = $("> ul", treeitem).length > 0;
  12956. if (!hasChildren)
  12957. {
  12958. treeitem.append("<ul class='l-children'></ul>");
  12959. //设置为父节点
  12960. g.upgrade(parentNode);
  12961. }
  12962. var isLast = [];
  12963. for (var i = 1; i <= outlineLevel - 1; i++)
  12964. {
  12965. var currentParentTreeItem = $(g.getParentTreeItem(parentNode, i));
  12966. isLast.push(currentParentTreeItem.hasClass("l-last"));
  12967. }
  12968. isLast.push(treeitem.hasClass("l-last"));
  12969. var gridhtmlarr = g._getTreeHTMLByData(newdata, outlineLevel + 1, isLast, true);
  12970. gridhtmlarr[gridhtmlarr.length - 1] = gridhtmlarr[0] = "";
  12971. if (nearNode != null)
  12972. {
  12973. $(nearNode)[isAfter ? 'after' : 'before'](gridhtmlarr.join(''));
  12974. g._updateStyle(parentNode ? $("ul:first", parentNode) : g.tree);
  12975. }
  12976. else
  12977. {
  12978. //remove last node class
  12979. if ($("> .l-children > li:last", treeitem).length > 0)
  12980. g._setTreeItem($("> .l-children > li:last", treeitem)[0], { isLast: false });
  12981. $(">.l-children", parentNode).append(gridhtmlarr.join(''));
  12982. }
  12983. g._upadteTreeWidth();
  12984. $(">.l-children .l-body", parentNode).hover(function ()
  12985. {
  12986. $(this).addClass("l-over");
  12987. }, function ()
  12988. {
  12989. $(this).removeClass("l-over");
  12990. });
  12991. g.trigger('afterAppend', [parentNode, newdata]);
  12992. },
  12993. //@parm [nodeParm] dom节点(li)、节点数据 或者节点 dataindex
  12994. cancelSelect: function (nodeParm)
  12995. {
  12996. var g = this, p = this.options;
  12997. var domNode = g.getNodeDom(nodeParm);
  12998. var treeitem = $(domNode);
  12999. var treedataindex = parseInt(treeitem.attr("treedataindex"));
  13000. var treenodedata = g._getDataNodeByTreeDataIndex(g.data, treedataindex);
  13001. var treeitembody = $(">div:first", treeitem);
  13002. if (p.checkbox)
  13003. $(".l-checkbox", treeitembody).removeClass("l-checkbox-checked").addClass("l-checkbox-unchecked");
  13004. else
  13005. treeitembody.removeClass("l-selected");
  13006. g.trigger('cancelSelect', [{ data: treenodedata, target: treeitem[0]}]);
  13007. },
  13008. //选择节点(参数:条件函数、Dom节点或ID值)
  13009. selectNode: function (selectNodeParm)
  13010. {
  13011. var g = this, p = this.options;
  13012. var clause = null;
  13013. if (typeof (selectNodeParm) == "function")
  13014. {
  13015. clause = selectNodeParm;
  13016. }
  13017. else if (typeof (selectNodeParm) == "object")
  13018. {
  13019. var treeitem = $(selectNodeParm);
  13020. var treedataindex = parseInt(treeitem.attr("treedataindex"));
  13021. var treenodedata = g._getDataNodeByTreeDataIndex(g.data, treedataindex);
  13022. var treeitembody = $(">div:first", treeitem);
  13023. if (p.checkbox)
  13024. $(".l-checkbox", treeitembody).removeClass("l-checkbox-unchecked").addClass("l-checkbox-checked");
  13025. else
  13026. treeitembody.addClass("l-selected");
  13027. g.trigger('select', [{ data: treenodedata, target: treeitem[0]}]);
  13028. return;
  13029. }
  13030. else
  13031. {
  13032. clause = function (data)
  13033. {
  13034. if (!data[p.idFieldName]) return false;
  13035. return data[p.idFieldName].toString() == selectNodeParm.toString();
  13036. };
  13037. }
  13038. $("li", g.tree).each(function ()
  13039. {
  13040. var treeitem = $(this);
  13041. var treedataindex = parseInt(treeitem.attr("treedataindex"));
  13042. var treenodedata = g._getDataNodeByTreeDataIndex(g.data, treedataindex);
  13043. if (clause(treenodedata, treedataindex))
  13044. {
  13045. g.selectNode(this);
  13046. }
  13047. else
  13048. {
  13049. g.cancelSelect(this);
  13050. }
  13051. });
  13052. },
  13053. getTextByID: function (id)
  13054. {
  13055. var g = this, p = this.options;
  13056. var data = g.getDataByID(id);
  13057. if (!data) return null;
  13058. return data[p.textFieldName];
  13059. },
  13060. getDataByID: function (id)
  13061. {
  13062. var g = this, p = this.options;
  13063. var data = null;
  13064. $("li", g.tree).each(function ()
  13065. {
  13066. if (data) return;
  13067. var treeitem = $(this);
  13068. var treedataindex = parseInt(treeitem.attr("treedataindex"));
  13069. var treenodedata = g._getDataNodeByTreeDataIndex(g.data, treedataindex);
  13070. if (treenodedata[p.idFieldName].toString() == id.toString())
  13071. {
  13072. data = treenodedata;
  13073. }
  13074. });
  13075. return data;
  13076. },
  13077. arrayToTree: function (data, id, pid) //将ID、ParentID这种数据格式转换为树格式
  13078. {
  13079. if (!data || !data.length) return [];
  13080. var targetData = []; //存储数据的容器(返回)
  13081. var records = {};
  13082. var itemLength = data.length; //数据集合的个数
  13083. for (var i = 0; i < itemLength; i++)
  13084. {
  13085. var o = data[i];
  13086. records[o[id]] = o;
  13087. }
  13088. for (var i = 0; i < itemLength; i++)
  13089. {
  13090. var currentData = data[i];
  13091. var parentData = records[currentData[pid]];
  13092. if (!parentData)
  13093. {
  13094. targetData.push(currentData);
  13095. continue;
  13096. }
  13097. parentData.children = parentData.children || [];
  13098. parentData.children.push(currentData);
  13099. }
  13100. return targetData;
  13101. },
  13102. //根据数据索引获取数据
  13103. _getDataNodeByTreeDataIndex: function (data, treedataindex)
  13104. {
  13105. var g = this, p = this.options;
  13106. for (var i = 0; i < data.length; i++)
  13107. {
  13108. if (data[i].treedataindex == treedataindex)
  13109. return data[i];
  13110. if (data[i].children)
  13111. {
  13112. var targetData = g._getDataNodeByTreeDataIndex(data[i].children, treedataindex);
  13113. if (targetData) return targetData;
  13114. }
  13115. }
  13116. return null;
  13117. },
  13118. //设置数据状态
  13119. _setTreeDataStatus: function (data, status)
  13120. {
  13121. var g = this, p = this.options;
  13122. $(data).each(function ()
  13123. {
  13124. this[p.statusName] = status;
  13125. if (this.children)
  13126. {
  13127. g._setTreeDataStatus(this.children, status);
  13128. }
  13129. });
  13130. },
  13131. //设置data 索引
  13132. _addTreeDataIndexToData: function (data)
  13133. {
  13134. var g = this, p = this.options;
  13135. $(data).each(function ()
  13136. {
  13137. if (this.treedataindex != undefined) return;
  13138. this.treedataindex = g.treedataindex++;
  13139. if (this.children)
  13140. {
  13141. g._addTreeDataIndexToData(this.children);
  13142. }
  13143. });
  13144. },
  13145. _addToNodes: function (data)
  13146. {
  13147. var g = this, p = this.options;
  13148. g.nodes = g.nodes || [];
  13149. if ($.inArray(data, g.nodes) == -1)
  13150. g.nodes.push(data);
  13151. if (data.children)
  13152. {
  13153. $(data.children).each(function (i, item)
  13154. {
  13155. g._addToNodes(item);
  13156. });
  13157. }
  13158. },
  13159. //添加项到g.data
  13160. _appendData: function (treeNode, data)
  13161. {
  13162. var g = this, p = this.options;
  13163. var treedataindex = parseInt($(treeNode).attr("treedataindex"));
  13164. var treenodedata = g._getDataNodeByTreeDataIndex(g.data, treedataindex);
  13165. if (g.treedataindex == undefined) g.treedataindex = 0;
  13166. if (treenodedata && treenodedata.children == undefined) treenodedata.children = [];
  13167. $(data).each(function (i, item)
  13168. {
  13169. if (treenodedata)
  13170. treenodedata.children[treenodedata.children.length] = item;
  13171. else
  13172. g.data[g.data.length] = item;
  13173. g._addToNodes(item);
  13174. });
  13175. },
  13176. _setTreeItem: function (treeNode, options)
  13177. {
  13178. var g = this, p = this.options;
  13179. if (!options) return;
  13180. treeNode = g.getNodeDom(treeNode);
  13181. var treeItem = $(treeNode);
  13182. var outlineLevel = parseInt(treeItem.attr("outlinelevel"));
  13183. if (options.isLast != undefined)
  13184. {
  13185. if (options.isLast == true)
  13186. {
  13187. treeItem.removeClass("l-last").addClass("l-last");
  13188. $("> div .l-note", treeItem).removeClass("l-note").addClass("l-note-last");
  13189. $(".l-children li", treeItem)
  13190. .find(".l-box:eq(" + (outlineLevel - 1) + ")")
  13191. .removeClass("l-line");
  13192. }
  13193. else if (options.isLast == false)
  13194. {
  13195. treeItem.removeClass("l-last");
  13196. $("> div .l-note-last", treeItem).removeClass("l-note-last").addClass("l-note");
  13197. $(".l-children li", treeItem)
  13198. .find(".l-box:eq(" + (outlineLevel - 1) + ")")
  13199. .removeClass("l-line")
  13200. .addClass("l-line");
  13201. }
  13202. }
  13203. },
  13204. _upadteTreeWidth: function ()
  13205. {
  13206. var g = this, p = this.options;
  13207. var treeWidth = g.maxOutlineLevel * 22;
  13208. if (p.checkbox) treeWidth += 22;
  13209. if (p.parentIcon || p.childIcon) treeWidth += 22;
  13210. treeWidth += p.nodeWidth;
  13211. g.tree.width(treeWidth);
  13212. },
  13213. _getChildNodeClassName: function ()
  13214. {
  13215. var g = this, p = this.options;
  13216. return 'l-tree-icon-' + p.childIcon;
  13217. },
  13218. _getParentNodeClassName: function (isOpen)
  13219. {
  13220. var g = this, p = this.options;
  13221. var nodeclassname = 'l-tree-icon-' + p.parentIcon;
  13222. if (isOpen) nodeclassname += '-open';
  13223. return nodeclassname;
  13224. },
  13225. //根据data生成最终完整的tree html
  13226. _getTreeHTMLByData: function (data, outlineLevel, isLast, isExpand)
  13227. {
  13228. var g = this, p = this.options;
  13229. if (g.maxOutlineLevel < outlineLevel)
  13230. g.maxOutlineLevel = outlineLevel;
  13231. isLast = isLast || [];
  13232. outlineLevel = outlineLevel || 1;
  13233. var treehtmlarr = [];
  13234. if (!isExpand) treehtmlarr.push('<ul class="l-children" style="display:none">');
  13235. else treehtmlarr.push("<ul class='l-children'>");
  13236. for (var i = 0; i < data.length; i++)
  13237. {
  13238. var isFirst = i == 0;
  13239. var isLastCurrent = i == data.length - 1;
  13240. var isExpandCurrent = true;
  13241. var o = data[i];
  13242. if (o.isexpand == false || o.isexpand == "false") isExpandCurrent = false;
  13243. treehtmlarr.push('<li ');
  13244. if (o.treedataindex != undefined)
  13245. treehtmlarr.push('treedataindex="' + o.treedataindex + '" ');
  13246. if (isExpandCurrent)
  13247. treehtmlarr.push('isexpand=' + o.isexpand + ' ');
  13248. treehtmlarr.push('outlinelevel=' + outlineLevel + ' ');
  13249. //增加属性支持
  13250. for (var j = 0; j < g.sysAttribute.length; j++)
  13251. {
  13252. if ($(this).attr(g.sysAttribute[j]))
  13253. data[dataindex][g.sysAttribute[j]] = $(this).attr(g.sysAttribute[j]);
  13254. }
  13255. for (var j = 0; j < p.attribute.length; j++)
  13256. {
  13257. if (o[p.attribute[j]])
  13258. treehtmlarr.push(p.attribute[j] + '="' + o[p.attribute[j]] + '" ');
  13259. }
  13260. //css class
  13261. treehtmlarr.push('class="');
  13262. isFirst && treehtmlarr.push('l-first ');
  13263. isLastCurrent && treehtmlarr.push('l-last ');
  13264. isFirst && isLastCurrent && treehtmlarr.push('l-onlychild ');
  13265. treehtmlarr.push('"');
  13266. treehtmlarr.push('>');
  13267. treehtmlarr.push('<div class="l-body">');
  13268. for (var k = 0; k <= outlineLevel - 2; k++)
  13269. {
  13270. if (isLast[k]) treehtmlarr.push('<div class="l-box"></div>');
  13271. else treehtmlarr.push('<div class="l-box l-line"></div>');
  13272. }
  13273. if (g.hasChildren(o))
  13274. {
  13275. if (isExpandCurrent) treehtmlarr.push('<div class="l-box l-expandable-open"></div>');
  13276. else treehtmlarr.push('<div class="l-box l-expandable-close"></div>');
  13277. if (p.checkbox)
  13278. {
  13279. if (o.ischecked)
  13280. treehtmlarr.push('<div class="l-box l-checkbox l-checkbox-checked"></div>');
  13281. else
  13282. treehtmlarr.push('<div class="l-box l-checkbox l-checkbox-unchecked"></div>');
  13283. }
  13284. if (p.parentIcon)
  13285. {
  13286. //node icon
  13287. treehtmlarr.push('<div class="l-box l-tree-icon ');
  13288. treehtmlarr.push(g._getParentNodeClassName(p.parentIcon ? true : false) + " ");
  13289. if (p.iconFieldName && o[p.iconFieldName])
  13290. treehtmlarr.push('l-tree-icon-none');
  13291. treehtmlarr.push('">');
  13292. if (p.iconFieldName && o[p.iconFieldName])
  13293. treehtmlarr.push('<img src="' + o[p.iconFieldName] + '" />');
  13294. treehtmlarr.push('</div>');
  13295. }
  13296. }
  13297. else
  13298. {
  13299. if (isLastCurrent) treehtmlarr.push('<div class="l-box l-note-last"></div>');
  13300. else treehtmlarr.push('<div class="l-box l-note"></div>');
  13301. if (p.checkbox)
  13302. {
  13303. if (o.ischecked)
  13304. treehtmlarr.push('<div class="l-box l-checkbox l-checkbox-checked"></div>');
  13305. else
  13306. treehtmlarr.push('<div class="l-box l-checkbox l-checkbox-unchecked"></div>');
  13307. }
  13308. if (p.childIcon)
  13309. {
  13310. //node icon
  13311. treehtmlarr.push('<div class="l-box l-tree-icon ');
  13312. treehtmlarr.push(g._getChildNodeClassName() + " ");
  13313. if (p.iconFieldName && o[p.iconFieldName])
  13314. treehtmlarr.push('l-tree-icon-none');
  13315. treehtmlarr.push('">');
  13316. if (p.iconFieldName && o[p.iconFieldName])
  13317. treehtmlarr.push('<img src="' + o[p.iconFieldName] + '" />');
  13318. treehtmlarr.push('</div>');
  13319. }
  13320. }
  13321. treehtmlarr.push('<span>' + o[p.textFieldName] + '</span></div>');
  13322. if (g.hasChildren(o))
  13323. {
  13324. var isLastNew = [];
  13325. for (var k = 0; k < isLast.length; k++)
  13326. {
  13327. isLastNew.push(isLast[k]);
  13328. }
  13329. isLastNew.push(isLastCurrent);
  13330. treehtmlarr.push(g._getTreeHTMLByData(o.children, outlineLevel + 1, isLastNew, isExpandCurrent).join(''));
  13331. }
  13332. treehtmlarr.push('</li>');
  13333. }
  13334. treehtmlarr.push("</ul>");
  13335. return treehtmlarr;
  13336. },
  13337. //根据简洁的html获取data
  13338. _getDataByTreeHTML: function (treeDom)
  13339. {
  13340. var g = this, p = this.options;
  13341. var data = [];
  13342. $("> li", treeDom).each(function (i, item)
  13343. {
  13344. var dataindex = data.length;
  13345. data[dataindex] =
  13346. {
  13347. treedataindex: g.treedataindex++
  13348. };
  13349. data[dataindex][p.textFieldName] = $("> span,> a", this).html();
  13350. for (var j = 0; j < g.sysAttribute.length; j++)
  13351. {
  13352. if ($(this).attr(g.sysAttribute[j]))
  13353. data[dataindex][g.sysAttribute[j]] = $(this).attr(g.sysAttribute[j]);
  13354. }
  13355. for (var j = 0; j < p.attribute.length; j++)
  13356. {
  13357. if ($(this).attr(p.attribute[j]))
  13358. data[dataindex][p.attribute[j]] = $(this).attr(p.attribute[j]);
  13359. }
  13360. if ($("> ul", this).length > 0)
  13361. {
  13362. data[dataindex].children = g._getDataByTreeHTML($("> ul", this));
  13363. }
  13364. });
  13365. return data;
  13366. },
  13367. _applyTree: function ()
  13368. {
  13369. var g = this, p = this.options;
  13370. g.data = g._getDataByTreeHTML(g.tree);
  13371. var gridhtmlarr = g._getTreeHTMLByData(g.data, 1, [], true);
  13372. gridhtmlarr[gridhtmlarr.length - 1] = gridhtmlarr[0] = "";
  13373. g.tree.html(gridhtmlarr.join(''));
  13374. g._upadteTreeWidth();
  13375. $(".l-body", g.tree).hover(function ()
  13376. {
  13377. $(this).addClass("l-over");
  13378. }, function ()
  13379. {
  13380. $(this).removeClass("l-over");
  13381. });
  13382. },
  13383. _applyTreeEven: function (treeNode)
  13384. {
  13385. var g = this, p = this.options;
  13386. $("> .l-body", treeNode).hover(function ()
  13387. {
  13388. $(this).addClass("l-over");
  13389. }, function ()
  13390. {
  13391. $(this).removeClass("l-over");
  13392. });
  13393. },
  13394. _getSrcElementByEvent: function (e)
  13395. {
  13396. var g = this;
  13397. var obj = (e.target || e.srcElement);
  13398. var tag = obj.tagName.toLowerCase();
  13399. var jobjs = $(obj).parents().add(obj);
  13400. var fn = function (parm)
  13401. {
  13402. for (var i = jobjs.length - 1; i >= 0; i--)
  13403. {
  13404. if ($(jobjs[i]).hasClass(parm)) return jobjs[i];
  13405. }
  13406. return null;
  13407. };
  13408. if (jobjs.index(this.element) == -1) return { out: true };
  13409. var r = {
  13410. tree: fn("l-tree"),
  13411. node: fn("l-body"),
  13412. checkbox: fn("l-checkbox"),
  13413. icon: fn("l-tree-icon"),
  13414. text: tag == "span"
  13415. };
  13416. if (r.node)
  13417. {
  13418. var treedataindex = parseInt($(r.node).parent().attr("treedataindex"));
  13419. r.data = g._getDataNodeByTreeDataIndex(g.data, treedataindex);
  13420. }
  13421. return r;
  13422. },
  13423. _setTreeEven: function ()
  13424. {
  13425. var g = this, p = this.options;
  13426. if (g.hasBind('contextmenu'))
  13427. {
  13428. g.tree.bind("contextmenu", function (e)
  13429. {
  13430. var obj = (e.target || e.srcElement);
  13431. var treeitem = null;
  13432. if (obj.tagName.toLowerCase() == "a" || obj.tagName.toLowerCase() == "span" || $(obj).hasClass("l-box"))
  13433. treeitem = $(obj).parent().parent();
  13434. else if ($(obj).hasClass("l-body"))
  13435. treeitem = $(obj).parent();
  13436. else if (obj.tagName.toLowerCase() == "li")
  13437. treeitem = $(obj);
  13438. if (!treeitem) return;
  13439. var treedataindex = parseInt(treeitem.attr("treedataindex"));
  13440. var treenodedata = g._getDataNodeByTreeDataIndex(g.data, treedataindex);
  13441. return g.trigger('contextmenu', [{ data: treenodedata, target: treeitem[0] }, e]);
  13442. });
  13443. }
  13444. g.tree.click(function (e)
  13445. {
  13446. var obj = (e.target || e.srcElement);
  13447. var treeitem = null;
  13448. if (obj.tagName.toLowerCase() == "a" || obj.tagName.toLowerCase() == "span" || $(obj).hasClass("l-box"))
  13449. treeitem = $(obj).parent().parent();
  13450. else if ($(obj).hasClass("l-body"))
  13451. treeitem = $(obj).parent();
  13452. else
  13453. treeitem = $(obj);
  13454. if (!treeitem) return;
  13455. var treedataindex = parseInt(treeitem.attr("treedataindex"));
  13456. var treenodedata = g._getDataNodeByTreeDataIndex(g.data, treedataindex);
  13457. var treeitembtn = $("div.l-body:first", treeitem).find("div.l-expandable-open:first,div.l-expandable-close:first");
  13458. var clickOnTreeItemBtn = $(obj).hasClass("l-expandable-open") || $(obj).hasClass("l-expandable-close");
  13459. if (!$(obj).hasClass("l-checkbox") && !clickOnTreeItemBtn)
  13460. {
  13461. if ($(">div:first", treeitem).hasClass("l-selected"))
  13462. {
  13463. if (g.trigger('beforeCancelSelect', [{ data: treenodedata, target: treeitem[0]}]) == false)
  13464. return false;
  13465. $(">div:first", treeitem).removeClass("l-selected");
  13466. g.trigger('cancelSelect', [{ data: treenodedata, target: treeitem[0]}]);
  13467. }
  13468. else
  13469. {
  13470. if (g.trigger('beforeSelect', [{ data: treenodedata, target: treeitem[0]}]) == false)
  13471. return false;
  13472. $(".l-body", g.tree).removeClass("l-selected");
  13473. $(">div:first", treeitem).addClass("l-selected");
  13474. g.trigger('select', [{ data: treenodedata, target: treeitem[0]}])
  13475. }
  13476. }
  13477. //chekcbox even
  13478. if ($(obj).hasClass("l-checkbox"))
  13479. {
  13480. if (p.autoCheckboxEven)
  13481. {
  13482. //状态:未选中
  13483. if ($(obj).hasClass("l-checkbox-unchecked"))
  13484. {
  13485. $(obj).removeClass("l-checkbox-unchecked").addClass("l-checkbox-checked");
  13486. $(".l-children .l-checkbox", treeitem)
  13487. .removeClass("l-checkbox-incomplete l-checkbox-unchecked")
  13488. .addClass("l-checkbox-checked");
  13489. g.trigger('check', [{ data: treenodedata, target: treeitem[0] }, true]);
  13490. }
  13491. //状态:选中
  13492. else if ($(obj).hasClass("l-checkbox-checked"))
  13493. {
  13494. $(obj).removeClass("l-checkbox-checked").addClass("l-checkbox-unchecked");
  13495. $(".l-children .l-checkbox", treeitem)
  13496. .removeClass("l-checkbox-incomplete l-checkbox-checked")
  13497. .addClass("l-checkbox-unchecked");
  13498. g.trigger('check', [{ data: treenodedata, target: treeitem[0] }, false]);
  13499. }
  13500. //状态:未完全选中
  13501. else if ($(obj).hasClass("l-checkbox-incomplete"))
  13502. {
  13503. $(obj).removeClass("l-checkbox-incomplete").addClass("l-checkbox-checked");
  13504. $(".l-children .l-checkbox", treeitem)
  13505. .removeClass("l-checkbox-incomplete l-checkbox-unchecked")
  13506. .addClass("l-checkbox-checked");
  13507. g.trigger('check', [{ data: treenodedata, target: treeitem[0] }, true]);
  13508. }
  13509. g._setParentCheckboxStatus(treeitem);
  13510. }
  13511. else
  13512. {
  13513. //状态:未选中
  13514. if ($(obj).hasClass("l-checkbox-unchecked"))
  13515. {
  13516. $(obj).removeClass("l-checkbox-unchecked").addClass("l-checkbox-checked");
  13517. //是否单选
  13518. if (p.single)
  13519. {
  13520. $(".l-checkbox", g.tree).not(obj).removeClass("l-checkbox-checked").addClass("l-checkbox-unchecked");
  13521. }
  13522. g.trigger('check', [{ data: treenodedata, target: treeitem[0] }, true]);
  13523. }
  13524. //状态:选中
  13525. else if ($(obj).hasClass("l-checkbox-checked"))
  13526. {
  13527. $(obj).removeClass("l-checkbox-checked").addClass("l-checkbox-unchecked");
  13528. g.trigger('check', [{ data: treenodedata, target: treeitem[0] }, false]);
  13529. }
  13530. }
  13531. }
  13532. //状态:已经张开
  13533. else if (treeitembtn.hasClass("l-expandable-open") && (!p.btnClickToToggleOnly || clickOnTreeItemBtn))
  13534. {
  13535. if (g.trigger('beforeCollapse', [{ data: treenodedata, target: treeitem[0]}]) == false)
  13536. return false;
  13537. treeitembtn.removeClass("l-expandable-open").addClass("l-expandable-close");
  13538. if (p.slide)
  13539. $("> .l-children", treeitem).slideToggle('fast');
  13540. else
  13541. $("> .l-children", treeitem).toggle();
  13542. $("> div ." + g._getParentNodeClassName(true), treeitem)
  13543. .removeClass(g._getParentNodeClassName(true))
  13544. .addClass(g._getParentNodeClassName());
  13545. g.trigger('collapse', [{ data: treenodedata, target: treeitem[0]}]);
  13546. }
  13547. //状态:没有张开
  13548. else if (treeitembtn.hasClass("l-expandable-close") && (!p.btnClickToToggleOnly || clickOnTreeItemBtn))
  13549. {
  13550. if (g.trigger('beforeExpand', [{ data: treenodedata, target: treeitem[0]}]) == false)
  13551. return false;
  13552. treeitembtn.removeClass("l-expandable-close").addClass("l-expandable-open");
  13553. var callback = function ()
  13554. {
  13555. g.trigger('expand', [{ data: treenodedata, target: treeitem[0]}]);
  13556. };
  13557. if (p.slide)
  13558. {
  13559. $("> .l-children", treeitem).slideToggle('fast', callback);
  13560. }
  13561. else
  13562. {
  13563. $("> .l-children", treeitem).toggle();
  13564. callback();
  13565. }
  13566. $("> div ." + g._getParentNodeClassName(), treeitem)
  13567. .removeClass(g._getParentNodeClassName())
  13568. .addClass(g._getParentNodeClassName(true));
  13569. }
  13570. g.trigger('click', [{ data: treenodedata, target: treeitem[0]}]);
  13571. });
  13572. //节点拖拽支持
  13573. if ($.fn.ligerDrag && p.nodeDraggable)
  13574. {
  13575. g.nodeDroptip = $("<div class='l-drag-nodedroptip' style='display:none'></div>").appendTo('body');
  13576. g.tree.ligerDrag({ revert: true, animate: false,
  13577. proxyX: 20, proxyY: 20,
  13578. proxy: function (draggable, e)
  13579. {
  13580. var src = g._getSrcElementByEvent(e);
  13581. if (src.node)
  13582. {
  13583. var content = "dragging";
  13584. if (p.nodeDraggingRender)
  13585. {
  13586. content = p.nodeDraggingRender(draggable.draggingNodes, draggable, g);
  13587. }
  13588. else
  13589. {
  13590. content = "";
  13591. var appended = false;
  13592. for (var i in draggable.draggingNodes)
  13593. {
  13594. var node = draggable.draggingNodes[i];
  13595. if (appended) content += ",";
  13596. content += node.text;
  13597. appended = true;
  13598. }
  13599. }
  13600. var proxy = $("<div class='l-drag-proxy' style='display:none'><div class='l-drop-icon l-drop-no'></div>" + content + "</div>").appendTo('body');
  13601. return proxy;
  13602. }
  13603. },
  13604. onRevert: function () { return false; },
  13605. onRendered: function ()
  13606. {
  13607. this.set('cursor', 'default');
  13608. g.children[this.id] = this;
  13609. },
  13610. onStartDrag: function (current, e)
  13611. {
  13612. if (e.button == 2) return false;
  13613. this.set('cursor', 'default');
  13614. var src = g._getSrcElementByEvent(e);
  13615. if (src.checkbox) return false;
  13616. if (p.checkbox)
  13617. {
  13618. var checked = g.getChecked();
  13619. this.draggingNodes = [];
  13620. for (var i in checked)
  13621. {
  13622. this.draggingNodes.push(checked[i].data);
  13623. }
  13624. if (!this.draggingNodes || !this.draggingNodes.length) return false;
  13625. }
  13626. else
  13627. {
  13628. this.draggingNodes = [src.data];
  13629. }
  13630. this.draggingNode = src.data;
  13631. this.set('cursor', 'move');
  13632. g.nodedragging = true;
  13633. this.validRange = {
  13634. top: g.tree.offset().top,
  13635. bottom: g.tree.offset().top + g.tree.height(),
  13636. left: g.tree.offset().left,
  13637. right: g.tree.offset().left + g.tree.width()
  13638. };
  13639. },
  13640. onDrag: function (current, e)
  13641. {
  13642. var nodedata = this.draggingNode;
  13643. if (!nodedata) return false;
  13644. var nodes = this.draggingNodes ? this.draggingNodes : [nodedata];
  13645. if (g.nodeDropIn == null) g.nodeDropIn = -1;
  13646. var pageX = e.pageX;
  13647. var pageY = e.pageY;
  13648. var visit = false;
  13649. var validRange = this.validRange;
  13650. if (pageX < validRange.left || pageX > validRange.right
  13651. || pageY > validRange.bottom || pageY < validRange.top)
  13652. {
  13653. g.nodeDropIn = -1;
  13654. g.nodeDroptip.hide();
  13655. this.proxy.find(".l-drop-icon:first").removeClass("l-drop-yes l-drop-add").addClass("l-drop-no");
  13656. return;
  13657. }
  13658. for (var i = 0, l = g.nodes.length; i < l; i++)
  13659. {
  13660. var nd = g.nodes[i];
  13661. var treedataindex = nd['treedataindex'];
  13662. if (nodedata['treedataindex'] == treedataindex) visit = true;
  13663. if ($.inArray(nd, nodes) != -1) continue;
  13664. var isAfter = visit ? true : false;
  13665. if (g.nodeDropIn != -1 && g.nodeDropIn != treedataindex) continue;
  13666. var jnode = $("li[treedataindex=" + treedataindex + "] div:first", g.tree);
  13667. var offset = jnode.offset();
  13668. var range = {
  13669. top: offset.top,
  13670. bottom: offset.top + jnode.height(),
  13671. left: g.tree.offset().left,
  13672. right: g.tree.offset().left + g.tree.width()
  13673. };
  13674. if (pageX > range.left && pageX < range.right && pageY > range.top && pageY < range.bottom)
  13675. {
  13676. var lineTop = offset.top;
  13677. if (isAfter) lineTop += jnode.height();
  13678. g.nodeDroptip.css({
  13679. left: range.left,
  13680. top: lineTop,
  13681. width: range.right - range.left
  13682. }).show();
  13683. g.nodeDropIn = treedataindex;
  13684. g.nodeDropDir = isAfter ? "bottom" : "top";
  13685. if (pageY > range.top + 7 && pageY < range.bottom - 7)
  13686. {
  13687. this.proxy.find(".l-drop-icon:first").removeClass("l-drop-no l-drop-yes").addClass("l-drop-add");
  13688. g.nodeDroptip.hide();
  13689. g.nodeDropInParent = true;
  13690. }
  13691. else
  13692. {
  13693. this.proxy.find(".l-drop-icon:first").removeClass("l-drop-no l-drop-add").addClass("l-drop-yes");
  13694. g.nodeDroptip.show();
  13695. g.nodeDropInParent = false;
  13696. }
  13697. break;
  13698. }
  13699. else if (g.nodeDropIn != -1)
  13700. {
  13701. g.nodeDropIn = -1;
  13702. g.nodeDropInParent = false;
  13703. g.nodeDroptip.hide();
  13704. this.proxy.find(".l-drop-icon:first").removeClass("l-drop-yes l-drop-add").addClass("l-drop-no");
  13705. }
  13706. }
  13707. },
  13708. onStopDrag: function (current, e)
  13709. {
  13710. var nodes = this.draggingNodes;
  13711. g.nodedragging = false;
  13712. if (g.nodeDropIn != -1)
  13713. {
  13714. for (var i = 0; i < nodes.length; i++)
  13715. {
  13716. var children = nodes[i].children;
  13717. if (children)
  13718. {
  13719. nodes = $.grep(nodes, function (node, i)
  13720. {
  13721. var isIn = $.inArray(node, children) == -1;
  13722. return isIn;
  13723. });
  13724. }
  13725. }
  13726. for (var i in nodes)
  13727. {
  13728. var node = nodes[i];
  13729. if (g.nodeDropInParent)
  13730. {
  13731. g.remove(node);
  13732. g.append(g.nodeDropIn, [node]);
  13733. }
  13734. else
  13735. {
  13736. g.remove(node);
  13737. g.append(g.getParent(g.nodeDropIn), [node], g.nodeDropIn, g.nodeDropDir == "bottom")
  13738. }
  13739. }
  13740. g.nodeDropIn = -1;
  13741. }
  13742. g.nodeDroptip.hide();
  13743. this.set('cursor', 'default');
  13744. }
  13745. });
  13746. }
  13747. },
  13748. //递归设置父节点的状态
  13749. _setParentCheckboxStatus: function (treeitem)
  13750. {
  13751. var g = this, p = this.options;
  13752. //当前同级别或低级别的节点是否都选中了
  13753. var isCheckedComplete = $(".l-checkbox-unchecked", treeitem.parent()).length == 0;
  13754. //当前同级别或低级别的节点是否都没有选中
  13755. var isCheckedNull = $(".l-checkbox-checked", treeitem.parent()).length == 0;
  13756. if (isCheckedComplete)
  13757. {
  13758. treeitem.parent().prev().find(".l-checkbox")
  13759. .removeClass("l-checkbox-unchecked l-checkbox-incomplete")
  13760. .addClass("l-checkbox-checked");
  13761. }
  13762. else if (isCheckedNull)
  13763. {
  13764. treeitem.parent().prev().find("> .l-checkbox")
  13765. .removeClass("l-checkbox-checked l-checkbox-incomplete")
  13766. .addClass("l-checkbox-unchecked");
  13767. }
  13768. else
  13769. {
  13770. treeitem.parent().prev().find("> .l-checkbox")
  13771. .removeClass("l-checkbox-unchecked l-checkbox-checked")
  13772. .addClass("l-checkbox-incomplete");
  13773. }
  13774. if (treeitem.parent().parent("li").length > 0)
  13775. g._setParentCheckboxStatus(treeitem.parent().parent("li"));
  13776. }
  13777. });
  13778. })(jQuery);/**
  13779. * jQuery ligerUI 1.1.9
  13780. *
  13781. * http://ligerui.com
  13782. *
  13783. * Author daomi 2012 [ gd_star@163.com ]
  13784. *
  13785. */
  13786. (function ($)
  13787. {
  13788. var l = $.ligerui;
  13789. l.windowCount = 0;
  13790. $.ligerWindow = function (options)
  13791. {
  13792. return l.run.call(null, "ligerWindow", arguments, { isStatic: true });
  13793. };
  13794. $.ligerWindow.show = function (p)
  13795. {
  13796. return $.ligerWindow(p);
  13797. };
  13798. $.ligerDefaults.Window = {
  13799. showClose: true,
  13800. showMax: true,
  13801. showToggle: true,
  13802. showMin: true,
  13803. title: 'window',
  13804. load: false,
  13805. onLoaded: null,
  13806. modal: false //是否模态窗口
  13807. };
  13808. $.ligerMethos.Window = {};
  13809. l.controls.Window = function (options)
  13810. {
  13811. l.controls.Window.base.constructor.call(this, null, options);
  13812. };
  13813. l.controls.Window.ligerExtend(l.core.Win, {
  13814. __getType: function ()
  13815. {
  13816. return 'Window';
  13817. },
  13818. __idPrev: function ()
  13819. {
  13820. return 'Window';
  13821. },
  13822. _extendMethods: function ()
  13823. {
  13824. return $.ligerMethos.Window;
  13825. },
  13826. _render: function ()
  13827. {
  13828. var g = this, p = this.options;
  13829. g.window = $('<div class="l-window"><div class="l-window-header"><div class="l-window-header-buttons"><div class="l-window-toggle"></div><div class="l-window-max"></div><div class="l-window-close"></div><div class="l-clear"></div></div><div class="l-window-header-inner"></div></div><div class="l-window-content"></div></div>');
  13830. g.element = g.window[0];
  13831. g.window.content = $(".l-window-content", g.window);
  13832. g.window.header = $(".l-window-header", g.window);
  13833. g.window.buttons = $(".l-window-header-buttons:first", g.window);
  13834. if (p.url)
  13835. {
  13836. if (p.load)
  13837. {
  13838. g.window.content.load(p.url, function ()
  13839. {
  13840. g.trigger('loaded');
  13841. });
  13842. g.window.content.addClass("l-window-content-scroll");
  13843. }
  13844. else
  13845. {
  13846. var iframe = $("<iframe frameborder='0' src='" + p.url + "'></iframe>");
  13847. var framename = "ligeruiwindow" + l.windowCount++;
  13848. if (p.name) framename = p.name;
  13849. iframe.attr("name", framename).attr("id", framename);
  13850. p.framename = framename;
  13851. iframe.appendTo(g.window.content);
  13852. g.iframe = iframe;
  13853. }
  13854. }
  13855. else if (p.content)
  13856. {
  13857. var content = $("<div>" + p.content + "</div>");
  13858. content.appendTo(g.window.content);
  13859. }
  13860. else if (p.target)
  13861. {
  13862. g.window.content.append(p.target);
  13863. p.target.show();
  13864. }
  13865. this.mask();
  13866. g.active();
  13867. $('body').append(g.window);
  13868. g.set({ width: p.width, height: p.height });
  13869. //位置初始化
  13870. var left = 0;
  13871. var top = 0;
  13872. if (p.left != null) left = p.left;
  13873. else p.left = left = 0.5 * ($(window).width() - g.window.width());
  13874. if (p.top != null) top = p.top;
  13875. else p.top = top = 0.5 * ($(window).height() - g.window.height()) + $(window).scrollTop() - 10;
  13876. if (left < 0) p.left = left = 0;
  13877. if (top < 0) p.top = top = 0;
  13878. g.set(p);
  13879. p.framename && $(">iframe", g.window.content).attr('name', p.framename);
  13880. if (!p.showToggle) $(".l-window-toggle", g.window).remove();
  13881. if (!p.showMax) $(".l-window-max", g.window).remove();
  13882. if (!p.showClose) $(".l-window-close", g.window).remove();
  13883. g._saveStatus();
  13884. //拖动支持
  13885. if ($.fn.ligerDrag)
  13886. {
  13887. g.draggable = g.window.drag = g.window.ligerDrag({ handler: '.l-window-header-inner', onStartDrag: function ()
  13888. {
  13889. g.active();
  13890. }, onStopDrag: function ()
  13891. {
  13892. g._saveStatus();
  13893. }, animate: false
  13894. });
  13895. }
  13896. //改变大小支持
  13897. if ($.fn.ligerResizable)
  13898. {
  13899. g.resizeable = g.window.resizable = g.window.ligerResizable({
  13900. onStartResize: function ()
  13901. {
  13902. g.active();
  13903. $(".l-window-max", g.window).removeClass("l-window-regain");
  13904. },
  13905. onStopResize: function (current, e)
  13906. {
  13907. var top = 0;
  13908. var left = 0;
  13909. if (!isNaN(parseInt(g.window.css('top'))))
  13910. top = parseInt(g.window.css('top'));
  13911. if (!isNaN(parseInt(g.window.css('left'))))
  13912. left = parseInt(g.window.css('left'));
  13913. if (current.diffTop)
  13914. g.window.css({ top: top + current.diffTop });
  13915. if (current.diffLeft)
  13916. g.window.css({ left: left + current.diffLeft });
  13917. if (current.newWidth)
  13918. g.window.width(current.newWidth);
  13919. if (current.newHeight)
  13920. g.window.content.height(current.newHeight - 28);
  13921. g._saveStatus();
  13922. return false;
  13923. }
  13924. });
  13925. g.window.append("<div class='l-btn-nw-drop'></div>");
  13926. }
  13927. //设置事件
  13928. $(".l-window-toggle", g.window).click(function ()
  13929. {
  13930. if ($(this).hasClass("l-window-toggle-close"))
  13931. {
  13932. g.collapsed = false;
  13933. $(this).removeClass("l-window-toggle-close");
  13934. } else
  13935. {
  13936. g.collapsed = true;
  13937. $(this).addClass("l-window-toggle-close");
  13938. }
  13939. g.window.content.slideToggle();
  13940. }).hover(function ()
  13941. {
  13942. if (g.window.drag)
  13943. g.window.drag.set('disabled', true);
  13944. }, function ()
  13945. {
  13946. if (g.window.drag)
  13947. g.window.drag.set('disabled', false);
  13948. });
  13949. $(".l-window-close", g.window).click(function ()
  13950. {
  13951. if (g.trigger('close') == false) return false;
  13952. g.window.hide();
  13953. l.win.removeTask(g);
  13954. }).hover(function ()
  13955. {
  13956. if (g.window.drag)
  13957. g.window.drag.set('disabled', true);
  13958. }, function ()
  13959. {
  13960. if (g.window.drag)
  13961. g.window.drag.set('disabled', false);
  13962. });
  13963. $(".l-window-max", g.window).click(function ()
  13964. {
  13965. if ($(this).hasClass("l-window-regain"))
  13966. {
  13967. if (g.trigger('regain') == false) return false;
  13968. g.window.width(g._width).css({ left: g._left, top: g._top });
  13969. g.window.content.height(g._height - 28);
  13970. $(this).removeClass("l-window-regain");
  13971. }
  13972. else
  13973. {
  13974. if (g.trigger('max') == false) return false;
  13975. g.window.width($(window).width() - 2).css({ left: 0, top: 0 });
  13976. g.window.content.height($(window).height() - 28).show();
  13977. $(this).addClass("l-window-regain");
  13978. }
  13979. });
  13980. },
  13981. _saveStatus: function ()
  13982. {
  13983. var g = this;
  13984. g._width = g.window.width();
  13985. g._height = g.window.height();
  13986. var top = 0;
  13987. var left = 0;
  13988. if (!isNaN(parseInt(g.window.css('top'))))
  13989. top = parseInt(g.window.css('top'));
  13990. if (!isNaN(parseInt(g.window.css('left'))))
  13991. left = parseInt(g.window.css('left'));
  13992. g._top = top;
  13993. g._left = left;
  13994. },
  13995. min: function ()
  13996. {
  13997. this.window.hide();
  13998. this.minimize = true;
  13999. this.actived = false;
  14000. },
  14001. _setShowMin: function (value)
  14002. {
  14003. var g = this, p = this.options;
  14004. if (value)
  14005. {
  14006. if (!g.winmin)
  14007. {
  14008. g.winmin = $('<div class="l-window-min"></div>').prependTo(g.window.buttons)
  14009. .click(function ()
  14010. {
  14011. g.min();
  14012. });
  14013. l.win.addTask(g);
  14014. }
  14015. }
  14016. else if (g.winmin)
  14017. {
  14018. g.winmin.remove();
  14019. g.winmin = null;
  14020. }
  14021. },
  14022. _setLeft: function (value)
  14023. {
  14024. if (value != null)
  14025. this.window.css({ left: value });
  14026. },
  14027. _setTop: function (value)
  14028. {
  14029. if (value != null)
  14030. this.window.css({ top: value });
  14031. },
  14032. _setWidth: function (value)
  14033. {
  14034. if (value > 0)
  14035. this.window.width(value);
  14036. },
  14037. _setHeight: function (value)
  14038. {
  14039. if (value > 28)
  14040. this.window.content.height(value - 28);
  14041. },
  14042. _setTitle: function (value)
  14043. {
  14044. if (value)
  14045. $(".l-window-header-inner", this.window.header).html(value);
  14046. },
  14047. _setUrl: function (url)
  14048. {
  14049. var g = this, p = this.options;
  14050. p.url = url;
  14051. if (p.load)
  14052. {
  14053. g.window.content.html("").load(p.url, function ()
  14054. {
  14055. if (g.trigger('loaded') == false) return false;
  14056. });
  14057. }
  14058. else if (g.jiframe)
  14059. {
  14060. g.jiframe.attr("src", p.url);
  14061. }
  14062. },
  14063. hide: function ()
  14064. {
  14065. var g = this, p = this.options;
  14066. this.unmask();
  14067. this.window.hide();
  14068. },
  14069. show: function ()
  14070. {
  14071. var g = this, p = this.options;
  14072. this.mask();
  14073. this.window.show();
  14074. },
  14075. remove: function ()
  14076. {
  14077. var g = this, p = this.options;
  14078. this.unmask();
  14079. this.window.remove();
  14080. },
  14081. active: function ()
  14082. {
  14083. var g = this, p = this.options;
  14084. if (g.minimize)
  14085. {
  14086. var width = g._width, height = g._height, left = g._left, top = g._top;
  14087. if (g.maximum)
  14088. {
  14089. width = $(window).width();
  14090. height = $(window).height();
  14091. left = top = 0;
  14092. if (l.win.taskbar)
  14093. {
  14094. height -= l.win.taskbar.outerHeight();
  14095. if (l.win.top) top += l.win.taskbar.outerHeight();
  14096. }
  14097. }
  14098. g.set({ width: width, height: height, left: left, top: top });
  14099. }
  14100. g.actived = true;
  14101. g.minimize = false;
  14102. l.win.setFront(g);
  14103. g.show();
  14104. l.win.setFront(this);
  14105. },
  14106. setUrl: function (url)
  14107. {
  14108. return _setUrl(url);
  14109. }
  14110. });
  14111. })(jQuery);