1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676106771067810679106801068110682106831068410685106861068710688106891069010691106921069310694106951069610697106981069910700107011070210703107041070510706107071070810709107101071110712107131071410715107161071710718107191072010721107221072310724107251072610727107281072910730107311073210733107341073510736107371073810739107401074110742107431074410745107461074710748107491075010751107521075310754107551075610757107581075910760107611076210763107641076510766107671076810769107701077110772107731077410775107761077710778107791078010781107821078310784107851078610787107881078910790107911079210793107941079510796107971079810799108001080110802108031080410805108061080710808108091081010811108121081310814108151081610817108181081910820108211082210823108241082510826108271082810829108301083110832108331083410835108361083710838108391084010841108421084310844108451084610847108481084910850108511085210853108541085510856108571085810859108601086110862108631086410865108661086710868108691087010871108721087310874108751087610877108781087910880108811088210883108841088510886108871088810889108901089110892108931089410895108961089710898108991090010901109021090310904109051090610907109081090910910109111091210913109141091510916109171091810919109201092110922109231092410925109261092710928109291093010931109321093310934109351093610937109381093910940109411094210943109441094510946109471094810949109501095110952109531095410955109561095710958109591096010961109621096310964109651096610967109681096910970109711097210973109741097510976109771097810979109801098110982109831098410985109861098710988109891099010991109921099310994109951099610997109981099911000110011100211003110041100511006110071100811009110101101111012110131101411015110161101711018110191102011021110221102311024110251102611027110281102911030110311103211033110341103511036110371103811039110401104111042110431104411045110461104711048110491105011051110521105311054110551105611057110581105911060110611106211063110641106511066110671106811069110701107111072110731107411075110761107711078110791108011081110821108311084110851108611087110881108911090110911109211093110941109511096110971109811099111001110111102111031110411105111061110711108111091111011111111121111311114111151111611117111181111911120111211112211123111241112511126111271112811129111301113111132111331113411135111361113711138111391114011141111421114311144111451114611147111481114911150111511115211153111541115511156111571115811159111601116111162111631116411165111661116711168111691117011171111721117311174111751117611177111781117911180111811118211183111841118511186111871118811189111901119111192111931119411195111961119711198111991120011201112021120311204112051120611207112081120911210112111121211213112141121511216112171121811219112201122111222112231122411225112261122711228112291123011231112321123311234112351123611237112381123911240112411124211243112441124511246112471124811249112501125111252112531125411255112561125711258112591126011261112621126311264112651126611267112681126911270112711127211273112741127511276112771127811279112801128111282112831128411285112861128711288112891129011291112921129311294112951129611297112981129911300113011130211303113041130511306113071130811309113101131111312113131131411315113161131711318113191132011321113221132311324113251132611327113281132911330113311133211333113341133511336113371133811339113401134111342113431134411345113461134711348113491135011351113521135311354113551135611357113581135911360113611136211363113641136511366113671136811369113701137111372113731137411375113761137711378113791138011381113821138311384113851138611387113881138911390113911139211393113941139511396113971139811399114001140111402114031140411405114061140711408114091141011411114121141311414114151141611417114181141911420114211142211423114241142511426114271142811429114301143111432114331143411435114361143711438114391144011441114421144311444114451144611447114481144911450114511145211453114541145511456114571145811459114601146111462114631146411465114661146711468114691147011471114721147311474114751147611477114781147911480114811148211483114841148511486114871148811489114901149111492114931149411495114961149711498114991150011501115021150311504115051150611507115081150911510115111151211513115141151511516115171151811519115201152111522115231152411525115261152711528115291153011531115321153311534115351153611537115381153911540115411154211543115441154511546115471154811549115501155111552115531155411555115561155711558115591156011561115621156311564115651156611567115681156911570115711157211573115741157511576115771157811579115801158111582115831158411585115861158711588115891159011591115921159311594115951159611597115981159911600116011160211603116041160511606116071160811609116101161111612116131161411615116161161711618116191162011621116221162311624116251162611627116281162911630116311163211633116341163511636116371163811639116401164111642116431164411645116461164711648116491165011651116521165311654116551165611657116581165911660116611166211663116641166511666116671166811669116701167111672116731167411675116761167711678116791168011681116821168311684116851168611687116881168911690116911169211693116941169511696116971169811699117001170111702117031170411705117061170711708117091171011711117121171311714117151171611717117181171911720117211172211723117241172511726117271172811729117301173111732117331173411735117361173711738117391174011741117421174311744117451174611747117481174911750117511175211753117541175511756117571175811759117601176111762117631176411765117661176711768117691177011771117721177311774117751177611777117781177911780117811178211783117841178511786117871178811789117901179111792117931179411795117961179711798117991180011801118021180311804118051180611807118081180911810118111181211813118141181511816118171181811819118201182111822118231182411825118261182711828118291183011831118321183311834118351183611837118381183911840118411184211843118441184511846118471184811849118501185111852118531185411855118561185711858118591186011861118621186311864118651186611867118681186911870118711187211873118741187511876118771187811879118801188111882118831188411885118861188711888118891189011891118921189311894118951189611897118981189911900119011190211903119041190511906119071190811909119101191111912119131191411915119161191711918119191192011921119221192311924119251192611927119281192911930119311193211933119341193511936119371193811939119401194111942119431194411945119461194711948119491195011951119521195311954119551195611957119581195911960119611196211963119641196511966119671196811969119701197111972119731197411975119761197711978119791198011981119821198311984119851198611987119881198911990119911199211993119941199511996119971199811999120001200112002120031200412005120061200712008120091201012011120121201312014120151201612017120181201912020120211202212023120241202512026120271202812029120301203112032120331203412035120361203712038120391204012041120421204312044120451204612047120481204912050120511205212053120541205512056120571205812059120601206112062120631206412065120661206712068120691207012071120721207312074120751207612077120781207912080120811208212083120841208512086120871208812089120901209112092120931209412095120961209712098120991210012101121021210312104121051210612107121081210912110121111211212113121141211512116121171211812119121201212112122121231212412125121261212712128121291213012131121321213312134121351213612137121381213912140121411214212143121441214512146121471214812149121501215112152121531215412155121561215712158121591216012161121621216312164121651216612167121681216912170121711217212173121741217512176121771217812179121801218112182121831218412185121861218712188121891219012191121921219312194121951219612197121981219912200122011220212203122041220512206122071220812209122101221112212122131221412215122161221712218122191222012221122221222312224122251222612227122281222912230122311223212233122341223512236122371223812239122401224112242122431224412245122461224712248122491225012251122521225312254122551225612257122581225912260122611226212263122641226512266122671226812269122701227112272122731227412275122761227712278122791228012281122821228312284122851228612287122881228912290122911229212293122941229512296122971229812299123001230112302123031230412305123061230712308123091231012311123121231312314123151231612317123181231912320123211232212323123241232512326123271232812329123301233112332123331233412335123361233712338123391234012341123421234312344123451234612347123481234912350123511235212353123541235512356123571235812359123601236112362123631236412365123661236712368123691237012371123721237312374123751237612377123781237912380123811238212383123841238512386123871238812389123901239112392123931239412395123961239712398123991240012401124021240312404124051240612407124081240912410124111241212413124141241512416124171241812419124201242112422124231242412425124261242712428124291243012431124321243312434124351243612437124381243912440124411244212443124441244512446124471244812449124501245112452124531245412455124561245712458124591246012461124621246312464124651246612467124681246912470124711247212473124741247512476124771247812479124801248112482124831248412485124861248712488124891249012491124921249312494124951249612497124981249912500125011250212503125041250512506125071250812509125101251112512125131251412515125161251712518125191252012521125221252312524125251252612527125281252912530125311253212533125341253512536125371253812539125401254112542125431254412545125461254712548125491255012551125521255312554125551255612557125581255912560125611256212563125641256512566125671256812569125701257112572125731257412575125761257712578125791258012581125821258312584125851258612587125881258912590125911259212593125941259512596125971259812599126001260112602126031260412605126061260712608126091261012611126121261312614126151261612617126181261912620126211262212623126241262512626126271262812629126301263112632126331263412635126361263712638126391264012641126421264312644126451264612647126481264912650126511265212653126541265512656126571265812659126601266112662126631266412665126661266712668126691267012671126721267312674126751267612677126781267912680126811268212683126841268512686126871268812689126901269112692126931269412695126961269712698126991270012701127021270312704127051270612707127081270912710127111271212713127141271512716127171271812719127201272112722127231272412725127261272712728127291273012731127321273312734127351273612737127381273912740127411274212743127441274512746127471274812749127501275112752127531275412755127561275712758127591276012761127621276312764127651276612767127681276912770127711277212773127741277512776127771277812779127801278112782127831278412785127861278712788127891279012791127921279312794127951279612797127981279912800128011280212803128041280512806128071280812809128101281112812128131281412815128161281712818128191282012821128221282312824128251282612827128281282912830128311283212833128341283512836128371283812839128401284112842128431284412845128461284712848128491285012851128521285312854128551285612857128581285912860128611286212863128641286512866128671286812869128701287112872128731287412875128761287712878128791288012881128821288312884128851288612887128881288912890128911289212893128941289512896128971289812899129001290112902129031290412905129061290712908129091291012911129121291312914129151291612917129181291912920129211292212923129241292512926129271292812929129301293112932129331293412935129361293712938129391294012941129421294312944129451294612947129481294912950129511295212953129541295512956129571295812959129601296112962129631296412965129661296712968129691297012971129721297312974129751297612977129781297912980129811298212983129841298512986129871298812989129901299112992129931299412995129961299712998129991300013001130021300313004130051300613007130081300913010130111301213013130141301513016130171301813019130201302113022130231302413025130261302713028130291303013031130321303313034130351303613037130381303913040130411304213043130441304513046130471304813049130501305113052130531305413055130561305713058130591306013061130621306313064130651306613067130681306913070130711307213073130741307513076130771307813079130801308113082130831308413085130861308713088130891309013091130921309313094130951309613097130981309913100131011310213103131041310513106131071310813109131101311113112131131311413115131161311713118131191312013121131221312313124131251312613127131281312913130131311313213133131341313513136131371313813139131401314113142131431314413145131461314713148131491315013151131521315313154131551315613157131581315913160131611316213163131641316513166131671316813169131701317113172131731317413175131761317713178131791318013181131821318313184131851318613187131881318913190131911319213193131941319513196131971319813199132001320113202132031320413205132061320713208132091321013211132121321313214132151321613217132181321913220132211322213223132241322513226132271322813229132301323113232132331323413235132361323713238132391324013241132421324313244132451324613247132481324913250132511325213253132541325513256132571325813259132601326113262132631326413265132661326713268132691327013271132721327313274132751327613277132781327913280132811328213283132841328513286132871328813289132901329113292132931329413295132961329713298132991330013301133021330313304133051330613307133081330913310133111331213313133141331513316133171331813319133201332113322133231332413325133261332713328133291333013331133321333313334133351333613337133381333913340133411334213343133441334513346133471334813349133501335113352133531335413355133561335713358133591336013361133621336313364133651336613367133681336913370133711337213373133741337513376133771337813379133801338113382133831338413385133861338713388133891339013391133921339313394133951339613397133981339913400134011340213403134041340513406134071340813409134101341113412134131341413415134161341713418134191342013421134221342313424134251342613427134281342913430134311343213433134341343513436134371343813439134401344113442134431344413445134461344713448134491345013451134521345313454134551345613457134581345913460134611346213463134641346513466134671346813469134701347113472134731347413475134761347713478134791348013481134821348313484134851348613487134881348913490134911349213493134941349513496134971349813499135001350113502135031350413505135061350713508135091351013511135121351313514135151351613517135181351913520135211352213523135241352513526135271352813529135301353113532135331353413535135361353713538135391354013541135421354313544135451354613547135481354913550135511355213553135541355513556135571355813559135601356113562135631356413565135661356713568135691357013571135721357313574135751357613577135781357913580135811358213583135841358513586135871358813589135901359113592135931359413595135961359713598135991360013601136021360313604136051360613607136081360913610136111361213613136141361513616136171361813619136201362113622136231362413625136261362713628136291363013631136321363313634136351363613637136381363913640136411364213643136441364513646136471364813649136501365113652136531365413655136561365713658136591366013661136621366313664136651366613667136681366913670136711367213673136741367513676136771367813679136801368113682136831368413685136861368713688136891369013691136921369313694136951369613697136981369913700137011370213703137041370513706137071370813709137101371113712137131371413715137161371713718137191372013721137221372313724137251372613727137281372913730137311373213733137341373513736137371373813739137401374113742137431374413745137461374713748137491375013751137521375313754137551375613757137581375913760137611376213763137641376513766137671376813769137701377113772137731377413775137761377713778137791378013781137821378313784137851378613787137881378913790137911379213793137941379513796137971379813799138001380113802138031380413805138061380713808138091381013811138121381313814138151381613817138181381913820138211382213823138241382513826138271382813829138301383113832138331383413835138361383713838138391384013841138421384313844138451384613847138481384913850138511385213853138541385513856138571385813859138601386113862138631386413865138661386713868138691387013871138721387313874138751387613877138781387913880138811388213883138841388513886138871388813889138901389113892138931389413895138961389713898138991390013901139021390313904139051390613907139081390913910139111391213913139141391513916139171391813919139201392113922139231392413925139261392713928139291393013931139321393313934139351393613937139381393913940139411394213943139441394513946139471394813949139501395113952139531395413955139561395713958139591396013961139621396313964139651396613967139681396913970139711397213973139741397513976139771397813979139801398113982139831398413985139861398713988139891399013991139921399313994139951399613997139981399914000140011400214003140041400514006140071400814009140101401114012140131401414015140161401714018140191402014021140221402314024140251402614027140281402914030140311403214033140341403514036140371403814039140401404114042140431404414045140461404714048140491405014051140521405314054140551405614057140581405914060140611406214063140641406514066140671406814069140701407114072140731407414075140761407714078140791408014081140821408314084140851408614087140881408914090140911409214093140941409514096140971409814099141001410114102141031410414105141061410714108141091411014111141121411314114141151411614117141181411914120141211412214123141241412514126141271412814129141301413114132141331413414135141361413714138141391414014141141421414314144141451414614147141481414914150141511415214153141541415514156141571415814159141601416114162141631416414165141661416714168141691417014171141721417314174141751417614177141781417914180141811418214183141841418514186141871418814189141901419114192141931419414195141961419714198141991420014201142021420314204142051420614207142081420914210142111421214213142141421514216142171421814219142201422114222142231422414225142261422714228142291423014231142321423314234142351423614237142381423914240142411424214243142441424514246142471424814249142501425114252142531425414255142561425714258142591426014261142621426314264142651426614267142681426914270142711427214273142741427514276142771427814279142801428114282142831428414285142861428714288142891429014291142921429314294142951429614297142981429914300143011430214303143041430514306143071430814309143101431114312143131431414315143161431714318143191432014321143221432314324143251432614327143281432914330143311433214333143341433514336143371433814339143401434114342143431434414345143461434714348143491435014351143521435314354143551435614357143581435914360143611436214363143641436514366143671436814369143701437114372143731437414375143761437714378143791438014381143821438314384143851438614387143881438914390143911439214393143941439514396143971439814399144001440114402144031440414405144061440714408144091441014411144121441314414144151441614417144181441914420144211442214423144241442514426144271442814429144301443114432144331443414435144361443714438144391444014441144421444314444144451444614447144481444914450144511445214453144541445514456144571445814459144601446114462144631446414465144661446714468144691447014471144721447314474144751447614477144781447914480144811448214483144841448514486144871448814489144901449114492144931449414495144961449714498144991450014501145021450314504145051450614507145081450914510145111451214513145141451514516 |
- /**
- * jQuery ligerUI 1.1.9
- *
- * http://ligerui.com
- *
- * Author daomi 2012 [ gd_star@163.com ]
- *
- */
- (function ($)
- {
- //ligerui 继承方法
- Function.prototype.ligerExtend = function (parent, overrides)
- {
- if (typeof parent != 'function') return this;
- //保存对父类的引用
- this.base = parent.prototype;
- this.base.constructor = parent;
- //继承
- var f = function () { };
- f.prototype = parent.prototype;
- this.prototype = new f();
- this.prototype.constructor = this;
- //附加属性方法
- if (overrides) $.extend(this.prototype, overrides);
- };
- //延时加载
- Function.prototype.ligerDefer = function (o, defer, args)
- {
- var fn = this;
- return setTimeout(function () { fn.apply(o, args || []); }, defer);
- };
- // 核心对象
- window.liger = $.ligerui = {
- version: 'V1.1.9',
- managerCount: 0,
- //组件管理器池
- managers: {},
- managerIdPrev: 'ligerui',
- //错误提示
- error: {
- managerIsExist: '管理器id已经存在'
- },
- getId: function (prev)
- {
- prev = prev || this.managerIdPrev;
- var id = prev + (1000 + this.managerCount);
- this.managerCount++;
- return id;
- },
- add: function (manager)
- {
- if (arguments.length == 2)
- {
- var m = arguments[1];
- m.id = m.id || m.options.id || arguments[0].id;
- this.addManager(m);
- return;
- }
- if (!manager.id) manager.id = this.getId(manager.__idPrev());
- if (this.managers[manager.id])
- throw new Error(this.error.managerIsExist);
- this.managers[manager.id] = manager;
- },
- remove: function (arg)
- {
- if (typeof arg == "string" || typeof arg == "number")
- {
- delete $.ligerui.managers[arg];
- }
- else if (typeof arg == "object" && arg instanceof $.ligerui.core.Component)
- {
- delete $.ligerui.managers[arg.id];
- }
- },
- //获取ligerui对象
- //1,传入ligerui ID
- //2,传入Dom Object Array(jQuery)
- get: function (arg, idAttrName)
- {
- idAttrName = idAttrName || "ligeruiid";
- if (typeof arg == "string" || typeof arg == "number")
- {
- return $.ligerui.managers[arg];
- }
- else if (typeof arg == "object" && arg.length)
- {
- if (!arg[0][idAttrName] && !$(arg[0]).attr(idAttrName)) return null;
- return $.ligerui.managers[arg[0][idAttrName] || $(arg[0]).attr(idAttrName)];
- }
- return null;
- },
- //根据类型查找某一个对象
- find: function (type)
- {
- var arr = [];
- for (var id in this.managers)
- {
- var manager = this.managers[id];
- if (type instanceof Function)
- {
- if (manager instanceof type)
- {
- arr.push(manager);
- }
- }
- else if (type instanceof Array)
- {
- if ($.inArray(manager.__getType(), type) != -1)
- {
- arr.push(manager);
- }
- }
- else
- {
- if (manager.__getType() == type)
- {
- arr.push(manager);
- }
- }
- }
- return arr;
- },
- //$.fn.liger{Plugin} 和 $.fn.ligerGet{Plugin}Manager
- //会调用这个方法,并传入作用域(this)
- //@parm [plugin] 插件名
- //@parm [args] 参数(数组)
- //@parm [ext] 扩展参数,定义命名空间或者id属性名
- run: function (plugin, args, ext)
- {
- if (!plugin) return;
- ext = $.extend({
- defaultsNamespace: 'ligerDefaults',
- methodsNamespace: 'ligerMethods',
- controlNamespace: 'controls',
- idAttrName: 'ligeruiid',
- isStatic: false,
- hasElement: true, //是否拥有element主体(比如drag、resizable等辅助性插件就不拥有)
- propertyToElemnt: null //链接到element的属性名
- }, ext || {});
- plugin = plugin.replace(/^ligerGet/, '');
- plugin = plugin.replace(/^liger/, '');
- if (this == null || this == window || ext.isStatic)
- {
- if (!$.ligerui.plugins[plugin])
- {
- $.ligerui.plugins[plugin] = {
- fn: $['liger' + plugin],
- isStatic: true
- };
- }
- return new $.ligerui[ext.controlNamespace][plugin]($.extend({}, $[ext.defaultsNamespace][plugin] || {}, $[ext.defaultsNamespace][plugin + 'String'] || {}, args.length > 0 ? args[0] : {}));
- }
- if (!$.ligerui.plugins[plugin])
- {
- $.ligerui.plugins[plugin] = {
- fn: $.fn['liger' + plugin],
- isStatic: false
- };
- }
- if (/Manager$/.test(plugin)) return $.ligerui.get(this, ext.idAttrName);
- this.each(function ()
- {
- if (this[ext.idAttrName] || $(this).attr(ext.idAttrName))
- {
- var manager = $.ligerui.get(this[ext.idAttrName] || $(this).attr(ext.idAttrName));
- if (manager && args.length > 0) manager.set(args[0]);
- //已经执行过
- return;
- }
- if (args.length >= 1 && typeof args[0] == 'string') return;
- //只要第一个参数不是string类型,都执行组件的实例化工作
- var options = args.length > 0 ? args[0] : null;
- var p = $.extend({}, $[ext.defaultsNamespace][plugin] || {}
- , $[ext.defaultsNamespace][plugin + 'String'] || {}, options || {});
- if (ext.propertyToElemnt) p[ext.propertyToElemnt] = this;
- if (ext.hasElement)
- {
- new $.ligerui[ext.controlNamespace][plugin](this, p);
- }
- else
- {
- new $.ligerui[ext.controlNamespace][plugin](p);
- }
- });
- if (this.length == 0) return null;
- if (args.length == 0) return $.ligerui.get(this, ext.idAttrName);
- if (typeof args[0] == 'object') return $.ligerui.get(this, ext.idAttrName);
- if (typeof args[0] == 'string')
- {
- var manager = $.ligerui.get(this, ext.idAttrName);
- if (manager == null) return;
- if (args[0] == "option")
- {
- if (args.length == 2)
- return manager.get(args[1]); //manager get
- else if (args.length >= 3)
- return manager.set(args[1], args[2]); //manager set
- }
- else
- {
- var method = args[0];
- if (!manager[method]) return; //不存在这个方法
- var parms = Array.apply(null, args);
- parms.shift();
- return manager[method].apply(manager, parms); //manager method
- }
- }
- return null;
- },
- //扩展
- //1,默认参数
- //2,本地化扩展
- defaults: {},
- //3,方法接口扩展
- methods: {},
- //命名空间
- //核心控件,封装了一些常用方法
- core: {},
- //命名空间
- //组件的集合
- controls: {},
- //plugin 插件的集合
- plugins: {}
- };
- //扩展对象
- $.ligerDefaults = {};
- //扩展对象
- $.ligerMethos = {};
- //关联起来
- $.ligerui.defaults = $.ligerDefaults;
- $.ligerui.methods = $.ligerMethos;
- //获取ligerui对象
- //@parm [plugin] 插件名,可为空
- $.fn.liger = function (plugin)
- {
- if (plugin)
- {
- return $.ligerui.run.call(this, plugin, arguments);
- }
- else
- {
- return $.ligerui.get(this);
- }
- };
- //组件基类
- //1,完成定义参数处理方法和参数属性初始化的工作
- //2,完成定义事件处理方法和事件属性初始化的工作
- $.ligerui.core.Component = function (options)
- {
- //事件容器
- this.events = this.events || {};
- //配置参数
- this.options = options || {};
- //子组件集合索引
- this.children = {};
- };
- $.extend($.ligerui.core.Component.prototype, {
- __getType: function ()
- {
- return '$.ligerui.core.Component';
- },
- __idPrev: function ()
- {
- return 'ligerui';
- },
- //设置属性
- // arg 属性名 value 属性值
- // arg 属性/值 value 是否只设置事件
- set: function (arg, value)
- {
- if (!arg) return;
- if (typeof arg == 'object')
- {
- var tmp;
- if (this.options != arg)
- {
- $.extend(this.options, arg);
- tmp = arg;
- }
- else
- {
- tmp = $.extend({}, arg);
- }
- if (value == undefined || value == true)
- {
- for (var p in tmp)
- {
- if (p.indexOf('on') == 0)
- this.set(p, tmp[p]);
- }
- }
- if (value == undefined || value == false)
- {
- for (var p in tmp)
- {
- if (p.indexOf('on') != 0)
- this.set(p, tmp[p]);
- }
- }
- return;
- }
- var name = arg;
- //事件参数
- if (name.indexOf('on') == 0)
- {
- if (typeof value == 'function')
- this.bind(name.substr(2), value);
- return;
- }
- this.trigger('propertychange', arg, value);
- if (!this.options) this.options = {};
- this.options[name] = value;
- var pn = '_set' + name.substr(0, 1).toUpperCase() + name.substr(1);
- if (this[pn])
- {
- this[pn].call(this, value);
- }
- this.trigger('propertychanged', arg, value);
- },
- //获取属性
- get: function (name)
- {
- var pn = '_get' + name.substr(0, 1).toUpperCase() + name.substr(1);
- if (this[pn])
- {
- return this[pn].call(this, name);
- }
- return this.options[name];
- },
- hasBind: function (arg)
- {
- var name = arg.toLowerCase();
- var event = this.events[name];
- if (event && event.length) return true;
- return false;
- },
- //触发事件
- //data (可选) Array(可选)传递给事件处理函数的附加参数
- trigger: function (arg, data)
- {
- var name = arg.toLowerCase();
- var event = this.events[name];
- if (!event) return;
- data = data || [];
- if ((data instanceof Array) == false)
- {
- data = [data];
- }
- for (var i = 0; i < event.length; i++)
- {
- var ev = event[i];
- if (ev.handler.apply(ev.context, data) == false)
- return false;
- }
- },
- //绑定事件
- bind: function (arg, handler, context)
- {
- if (typeof arg == 'object')
- {
- for (var p in arg)
- {
- this.bind(p, arg[p]);
- }
- return;
- }
- if (typeof handler != 'function') return false;
- var name = arg.toLowerCase();
- var event = this.events[name] || [];
- context = context || this;
- event.push({ handler: handler, context: context });
- this.events[name] = event;
- },
- //取消绑定
- unbind: function (arg, handler)
- {
- if (!arg)
- {
- this.events = {};
- return;
- }
- var name = arg.toLowerCase();
- var event = this.events[name];
- if (!event || !event.length) return;
- if (!handler)
- {
- delete this.events[name];
- }
- else
- {
- for (var i = 0, l = event.length; i < l; i++)
- {
- if (event[i].handler == handler)
- {
- event.splice(i, 1);
- break;
- }
- }
- }
- },
- destroy: function ()
- {
- $.ligerui.remove(this);
- }
- });
- //界面组件基类,
- //1,完成界面初始化:设置组件id并存入组件管理器池,初始化参数
- //2,渲染的工作,细节交给子类实现
- //@parm [element] 组件对应的dom element对象
- //@parm [options] 组件的参数
- $.ligerui.core.UIComponent = function (element, options)
- {
- $.ligerui.core.UIComponent.base.constructor.call(this, options);
- var extendMethods = this._extendMethods();
- if (extendMethods) $.extend(this, extendMethods);
- this.element = element;
- this._init();
- this._preRender();
- this.trigger('render');
- this._render();
- this.trigger('rendered');
- this._rendered();
- };
- $.ligerui.core.UIComponent.ligerExtend($.ligerui.core.Component, {
- __getType: function ()
- {
- return '$.ligerui.core.UIComponent';
- },
- //扩展方法
- _extendMethods: function ()
- {
- },
- _init: function ()
- {
- this.type = this.__getType();
- if (!this.element)
- {
- this.id = this.options.id || $.ligerui.getId(this.__idPrev());
- }
- else
- {
- this.id = this.options.id || this.element.id || $.ligerui.getId(this.__idPrev());
- }
- //存入管理器池
- $.ligerui.add(this);
- if (!this.element) return;
- //读取attr方法,并加载到参数,比如['url']
- var attributes = this.attr();
- if (attributes && attributes instanceof Array)
- {
- for (var i = 0; i < attributes.length; i++)
- {
- var name = attributes[i];
- this.options[name] = $(this.element).attr(name);
- }
- }
- //读取ligerui这个属性,并加载到参数,比如 ligerui = "width:120,heigth:100"
- var p = this.options;
- if ($(this.element).attr("ligerui"))
- {
- try
- {
- var attroptions = $(this.element).attr("ligerui");
- if (attroptions.indexOf('{') != 0) attroptions = "{" + attroptions + "}";
- eval("attroptions = " + attroptions + ";");
- if (attroptions) $.extend(p, attroptions);
- }
- catch (e) { }
- }
- },
- //预渲染,可以用于继承扩展
- _preRender: function ()
- {
- },
- _render: function ()
- {
- },
- _rendered: function ()
- {
- if (this.element)
- {
- $(this.element).attr("ligeruiid", this.id);
- }
- },
- //返回要转换成ligerui参数的属性,比如['url']
- attr: function ()
- {
- return [];
- },
- destroy: function ()
- {
- if (this.element) $(this.element).remove();
- this.options = null;
- $.ligerui.remove(this);
- }
- });
- //表单控件基类
- $.ligerui.controls.Input = function (element, options)
- {
- $.ligerui.controls.Input.base.constructor.call(this, element, options);
- };
- $.ligerui.controls.Input.ligerExtend($.ligerui.core.UIComponent, {
- __getType: function ()
- {
- return '$.ligerui.controls.Input';
- },
- attr: function ()
- {
- return ['nullText'];
- },
- setValue: function (value)
- {
- return this.set('value', value);
- },
- getValue: function ()
- {
- return this.get('value');
- },
- setEnabled: function ()
- {
- return this.set('disabled', false);
- },
- setDisabled: function ()
- {
- return this.set('disabled', true);
- },
- updateStyle: function ()
- {
- }
- });
- //全局窗口对象
- $.ligerui.win = {
- //顶端显示
- top: false,
- //遮罩
- mask: function (win)
- {
- function setHeight()
- {
- if (!$.ligerui.win.windowMask) return;
- var h = $(window).height() + $(window).scrollTop();
- $.ligerui.win.windowMask.height(h);
- }
- if (!this.windowMask)
- {
- this.windowMask = $("<div class='l-window-mask' style='display: block;'></div>").appendTo('body');
- $(window).bind('resize.ligeruiwin', setHeight);
- $(window).bind('scroll', setHeight);
- }
- this.windowMask.show();
- setHeight();
- this.masking = true;
- },
- //取消遮罩
- unmask: function (win)
- {
- var jwins = $("body > .l-dialog:visible,body > .l-window:visible");
- for (var i = 0, l = jwins.length; i < l; i++)
- {
- var winid = jwins.eq(i).attr("ligeruiid");
- if (win && win.id == winid) continue;
- //获取ligerui对象
- var winmanager = $.ligerui.get(winid);
- if (!winmanager) continue;
- //是否模态窗口
- var modal = winmanager.get('modal');
- //如果存在其他模态窗口,那么不会取消遮罩
- if (modal) return;
- }
- if (this.windowMask)
- this.windowMask.hide();
- this.masking = false;
- },
- //显示任务栏
- createTaskbar: function ()
- {
- if (!this.taskbar)
- {
- this.taskbar = $('<div class="l-taskbar"><div class="l-taskbar-tasks"></div><div class="l-clear"></div></div>').appendTo('body');
- if (this.top) this.taskbar.addClass("l-taskbar-top");
- this.taskbar.tasks = $(".l-taskbar-tasks:first", this.taskbar);
- this.tasks = {};
- }
- this.taskbar.show();
- this.taskbar.animate({ bottom: 0 });
- return this.taskbar;
- },
- //关闭任务栏
- removeTaskbar: function ()
- {
- var self = this;
- self.taskbar.animate({ bottom: -32 }, function ()
- {
- self.taskbar.remove();
- self.taskbar = null;
- });
- },
- activeTask: function (win)
- {
- for (var winid in this.tasks)
- {
- var t = this.tasks[winid];
- if (winid == win.id)
- {
- t.addClass("l-taskbar-task-active");
- }
- else
- {
- t.removeClass("l-taskbar-task-active");
- }
- }
- },
- //获取任务
- getTask: function (win)
- {
- var self = this;
- if (!self.taskbar) return;
- if (self.tasks[win.id]) return self.tasks[win.id];
- return null;
- },
- //增加任务
- addTask: function (win)
- {
- var self = this;
- if (!self.taskbar) self.createTaskbar();
- if (self.tasks[win.id]) return self.tasks[win.id];
- var title = win.get('title');
- 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>');
- self.taskbar.tasks.append(task);
- self.activeTask(win);
- task.bind('click', function ()
- {
- self.activeTask(win);
- if (win.actived)
- win.min();
- else
- win.active();
- }).hover(function ()
- {
- $(this).addClass("l-taskbar-task-over");
- }, function ()
- {
- $(this).removeClass("l-taskbar-task-over");
- });
- return task;
- },
- hasTask: function ()
- {
- for (var p in this.tasks)
- {
- if (this.tasks[p])
- return true;
- }
- return false;
- },
- //移除任务
- removeTask: function (win)
- {
- var self = this;
- if (!self.taskbar) return;
- if (self.tasks[win.id])
- {
- self.tasks[win.id].unbind();
- self.tasks[win.id].remove();
- delete self.tasks[win.id];
- }
- if (!self.hasTask())
- {
- self.removeTaskbar();
- }
- },
- //前端显示
- setFront: function (win)
- {
- var wins = $.ligerui.find($.ligerui.core.Win);
- for (var i in wins)
- {
- var w = wins[i];
- if (w == win)
- {
- $(w.element).css("z-index", "9200");
- this.activeTask(w);
- }
- else
- {
- $(w.element).css("z-index", "9100");
- }
- }
- }
- };
- //窗口基类 window、dialog
- $.ligerui.core.Win = function (element, options)
- {
- $.ligerui.core.Win.base.constructor.call(this, element, options);
- };
- $.ligerui.core.Win.ligerExtend($.ligerui.core.UIComponent, {
- __getType: function ()
- {
- return '$.ligerui.controls.Win';
- },
- mask: function ()
- {
- if (this.options.modal)
- $.ligerui.win.mask(this);
- },
- unmask: function ()
- {
- if (this.options.modal)
- $.ligerui.win.unmask(this);
- },
- min: function ()
- {
- },
- max: function ()
- {
- },
- active: function ()
- {
- }
- });
- $.ligerui.draggable = {
- dragging: false
- };
- $.ligerui.resizable = {
- reszing: false
- };
- $.ligerui.toJSON = typeof JSON === 'object' && JSON.stringify ? JSON.stringify : function (o)
- {
- var f = function (n)
- {
- return n < 10 ? '0' + n : n;
- },
- escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
- quote = function (value)
- {
- escapable.lastIndex = 0;
- return escapable.test(value) ?
- '"' + value.replace(escapable, function (a)
- {
- var c = meta[a];
- return typeof c === 'string' ? c :
- '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
- }) + '"' :
- '"' + value + '"';
- };
- if (o === null) return 'null';
- var type = typeof o;
- if (type === 'undefined') return undefined;
- if (type === 'string') return quote(o);
- if (type === 'number' || type === 'boolean') return '' + o;
- if (type === 'object')
- {
- if (typeof o.toJSON === 'function')
- {
- return $.ligerui.toJSON(o.toJSON());
- }
- if (o.constructor === Date)
- {
- return isFinite(this.valueOf()) ?
- this.getUTCFullYear() + '-' +
- f(this.getUTCMonth() + 1) + '-' +
- f(this.getUTCDate()) + 'T' +
- f(this.getUTCHours()) + ':' +
- f(this.getUTCMinutes()) + ':' +
- f(this.getUTCSeconds()) + 'Z' : null;
- }
- var pairs = [];
- if (o.constructor === Array)
- {
- for (var i = 0, l = o.length; i < l; i++)
- {
- pairs.push($.ligerui.toJSON(o[i]) || 'null');
- }
- return '[' + pairs.join(',') + ']';
- }
- var name, val;
- for (var k in o)
- {
- type = typeof k;
- if (type === 'number')
- {
- name = '"' + k + '"';
- } else if (type === 'string')
- {
- name = quote(k);
- } else
- {
- continue;
- }
- type = typeof o[k];
- if (type === 'function' || type === 'undefined')
- {
- continue;
- }
- val = $.ligerui.toJSON(o[k]);
- pairs.push(name + ':' + val);
- }
- return '{' + pairs.join(',') + '}';
- }
- };
- })(jQuery);/**
- * jQuery ligerUI 1.1.9
- *
- * http://ligerui.com
- *
- * Author daomi 2012 [ gd_star@163.com ]
- *
- */
- (function ($)
- {
- $.fn.ligerAccordion = function (options)
- {
- return $.ligerui.run.call(this, "ligerAccordion", arguments);
- };
- $.fn.ligerGetAccordionManager = function ()
- {
- return $.ligerui.get(this);
- };
- $.ligerDefaults.Accordion = {
- height: null,
- speed: "normal",
- changeHeightOnResize: false,
- heightDiff: 0 // 高度补差
- };
- $.ligerMethos.Accordion = {};
- $.ligerui.controls.Accordion = function (element, options)
- {
- $.ligerui.controls.Accordion.base.constructor.call(this, element, options);
- };
- $.ligerui.controls.Accordion.ligerExtend($.ligerui.core.UIComponent, {
- __getType: function ()
- {
- return 'Accordion';
- },
- __idPrev: function ()
- {
- return 'Accordion';
- },
- _extendMethods: function ()
- {
- return $.ligerMethos.Accordion;
- },
- _render: function ()
- {
- var g = this, p = this.options;
- g.accordion = $(g.element);
- if (!g.accordion.hasClass("l-accordion-panel")) g.accordion.addClass("l-accordion-panel");
- var selectedIndex = 0;
- if ($("> div[lselected=true]", g.accordion).length > 0)
- selectedIndex = $("> div", g.accordion).index($("> div[lselected=true]", g.accordion));
- $("> div", g.accordion).each(function (i, box)
- {
- var header = $('<div class="l-accordion-header"><div class="l-accordion-toggle"></div><div class="l-accordion-header-inner"></div></div>');
- if (i == selectedIndex)
- $(".l-accordion-toggle", header).addClass("l-accordion-toggle-open");
- if ($(box).attr("title"))
- {
- $(".l-accordion-header-inner", header).html($(box).attr("title"));
- $(box).attr("title", "");
- }
- $(box).before(header);
- if (!$(box).hasClass("l-accordion-content")) $(box).addClass("l-accordion-content");
- });
- //add Even
- $(".l-accordion-toggle", g.accordion).each(function ()
- {
- if (!$(this).hasClass("l-accordion-toggle-open") && !$(this).hasClass("l-accordion-toggle-close"))
- {
- $(this).addClass("l-accordion-toggle-close");
- }
- if ($(this).hasClass("l-accordion-toggle-close"))
- {
- $(this).parent().next(".l-accordion-content:visible").hide();
- }
- });
- $(".l-accordion-header", g.accordion).hover(function ()
- {
- $(this).addClass("l-accordion-header-over");
- }, function ()
- {
- $(this).removeClass("l-accordion-header-over");
- });
- $(".l-accordion-toggle", g.accordion).hover(function ()
- {
- if ($(this).hasClass("l-accordion-toggle-open"))
- $(this).addClass("l-accordion-toggle-open-over");
- else if ($(this).hasClass("l-accordion-toggle-close"))
- $(this).addClass("l-accordion-toggle-close-over");
- }, function ()
- {
- if ($(this).hasClass("l-accordion-toggle-open"))
- $(this).removeClass("l-accordion-toggle-open-over");
- else if ($(this).hasClass("l-accordion-toggle-close"))
- $(this).removeClass("l-accordion-toggle-close-over");
- });
- $(">.l-accordion-header", g.accordion).click(function ()
- {
- var togglebtn = $(".l-accordion-toggle:first", this);
- if (togglebtn.hasClass("l-accordion-toggle-close"))
- {
- togglebtn.removeClass("l-accordion-toggle-close")
- .removeClass("l-accordion-toggle-close-over l-accordion-toggle-open-over")
- togglebtn.addClass("l-accordion-toggle-open");
- $(this).next(".l-accordion-content")
- .show(p.speed)
- .siblings(".l-accordion-content:visible").hide(p.speed);
- $(this).siblings(".l-accordion-header").find(".l-accordion-toggle").removeClass("l-accordion-toggle-open").addClass("l-accordion-toggle-close");
- }
- else
- {
- togglebtn.removeClass("l-accordion-toggle-open")
- .removeClass("l-accordion-toggle-close-over l-accordion-toggle-open-over")
- .addClass("l-accordion-toggle-close");
- $(this).next(".l-accordion-content").hide(p.speed);
- }
- });
- //init
- g.headerHoldHeight = 0;
- $("> .l-accordion-header", g.accordion).each(function ()
- {
- g.headerHoldHeight += $(this).height();
- });
- if (p.height && typeof (p.height) == 'string' && p.height.indexOf('%') > 0)
- {
- g.onResize();
- if (p.changeHeightOnResize)
- {
- $(window).resize(function ()
- {
- g.onResize();
- });
- }
- }
- else
- {
- if (p.height)
- {
- g.height = p.heightDiff + p.height;
- g.accordion.height(g.height);
- g.setHeight(p.height);
- }
- else
- {
- g.header = g.accordion.height();
- }
- }
- g.set(p);
- },
- onResize: function ()
- {
- var g = this, p = this.options;
- if (!p.height || typeof (p.height) != 'string' || p.height.indexOf('%') == -1) return false;
- //set accordion height
- if (g.accordion.parent()[0].tagName.toLowerCase() == "body")
- {
- var windowHeight = $(window).height();
- windowHeight -= parseInt(g.layout.parent().css('paddingTop'));
- windowHeight -= parseInt(g.layout.parent().css('paddingBottom'));
- g.height = p.heightDiff + windowHeight * parseFloat(g.height) * 0.01;
- }
- else
- {
- g.height = p.heightDiff + (g.accordion.parent().height() * parseFloat(p.height) * 0.01);
- }
- g.accordion.height(g.height);
- g.setContentHeight(g.height - g.headerHoldHeight);
- },
- setHeight: function (height)
- {
- var g = this, p = this.options;
- g.accordion.height(height);
- height -= g.headerHoldHeight;
- $("> .l-accordion-content", g.accordion).height(height);
- }
- });
- })(jQuery);/**
- * jQuery ligerUI 1.1.9
- *
- * http://ligerui.com
- *
- * Author daomi 2012 [ gd_star@163.com ]
- *
- */
- (function ($)
- {
- $.fn.ligerButton = function (options)
- {
- return $.ligerui.run.call(this, "ligerButton", arguments);
- };
- $.fn.ligerGetButtonManager = function ()
- {
- return $.ligerui.run.call(this, "ligerGetButtonManager", arguments);
- };
- $.ligerDefaults.Button = { width: 100, text: 'Button', disabled: false };
- $.ligerMethos.Button = {};
- $.ligerui.controls.Button = function (element, options)
- {
- $.ligerui.controls.Button.base.constructor.call(this, element, options);
- };
- $.ligerui.controls.Button.ligerExtend($.ligerui.controls.Input, {
- __getType: function ()
- {
- return 'Button';
- },
- __idPrev: function ()
- {
- return 'Button';
- },
- _extendMethods: function ()
- {
- return $.ligerMethos.Button;
- },
- _render: function ()
- {
- var g = this, p = this.options;
- g.button = $(g.element);
- g.button.addClass("l-btn");
- g.button.append('<div class="l-btn-l"></div><div class="l-btn-r"></div><span></span>');
- p.click && g.button.click(function ()
- {
- if (!p.disabled)
- p.click();
- });
- g.set(p);
- },
- _setEnabled: function (value)
- {
- if (value)
- this.button.removeClass("l-btn-disabled");
- },
- _setDisabled: function (value)
- {
- if (value)
- {
- this.button.addClass("l-btn-disabled");
- this.options.disabled = true;
- }
- },
- _setWidth: function (value)
- {
- this.button.width(value);
- },
- _setText: function (value)
- {
- $("span", this.button).html(value);
- },
- setValue: function (value)
- {
- this.set('text', value);
- },
- getValue: function ()
- {
- return this.options.text;
- },
- setEnabled: function ()
- {
- this.set('disabled', false);
- },
- setDisabled: function ()
- {
- this.set('disabled', true);
- }
- });
- })(jQuery);/**
- * jQuery ligerUI 1.1.9
- *
- * http://ligerui.com
- *
- * Author daomi 2012 [ gd_star@163.com ]
- *
- */
- (function ($)
- {
- $.fn.ligerCheckBox = function (options)
- {
- return $.ligerui.run.call(this, "ligerCheckBox", arguments);
- };
- $.fn.ligerGetCheckBoxManager = function ()
- {
- return $.ligerui.run.call(this, "ligerGetCheckBoxManager", arguments);
- };
- $.ligerDefaults.CheckBox = { disabled: false };
- $.ligerMethos.CheckBox = {};
- $.ligerui.controls.CheckBox = function (element, options)
- {
- $.ligerui.controls.CheckBox.base.constructor.call(this, element, options);
- };
- $.ligerui.controls.CheckBox.ligerExtend($.ligerui.controls.Input, {
- __getType: function ()
- {
- return 'CheckBox';
- },
- __idPrev: function ()
- {
- return 'CheckBox';
- },
- _extendMethods: function ()
- {
- return $.ligerMethos.CheckBox;
- },
- _render: function ()
- {
- var g = this, p = this.options;
- g.input = $(g.element);
- g.link = $('<a class="l-checkbox"></a>');
- g.wrapper = g.input.addClass('l-hidden').wrap('<div class="l-checkbox-wrapper"></div>').parent();
- g.wrapper.prepend(g.link);
- g.link.click(function ()
- {
- if (g.input.attr('disabled')) { return false; }
- if (p.disabled) return false;
- if (g.trigger('beforeClick', [g.element]) == false) return false;
- if ($(this).hasClass("l-checkbox-checked"))
- {
- g._setValue(false);
- }
- else
- {
- g._setValue(true);
- }
- g.input.trigger("change");
- });
- g.wrapper.hover(function ()
- {
- if (!p.disabled)
- $(this).addClass("l-over");
- }, function ()
- {
- $(this).removeClass("l-over");
- });
- this.set(p);
- this.updateStyle();
- },
- _setCss: function (value)
- {
- this.wrapper.css(value);
- },
- _setValue: function (value)
- {
- var g = this, p = this.options;
- if (!value)
- {
- g.input[0].checked = false;
- g.link.removeClass('l-checkbox-checked');
- }
- else
- {
- g.input[0].checked = true;
- g.link.addClass('l-checkbox-checked');
- }
- },
- _setDisabled: function (value)
- {
- if (value)
- {
- this.input.attr('disabled', true);
- this.wrapper.addClass("l-disabled");
- }
- else
- {
- this.input.attr('disabled', false);
- this.wrapper.removeClass("l-disabled");
- }
- },
- _getValue: function ()
- {
- return this.element.checked;
- },
- updateStyle: function ()
- {
- if (this.input.attr('disabled'))
- {
- this.wrapper.addClass("l-disabled");
- this.options.disabled = true;
- }
- if (this.input[0].checked)
- {
- this.link.addClass('l-checkbox-checked');
- }
- else
- {
- this.link.removeClass('l-checkbox-checked');
- }
- }
- });
- })(jQuery);/**
- * jQuery ligerUI 1.1.9
- *
- * http://ligerui.com
- *
- * Author daomi 2012 [ gd_star@163.com ]
- *
- */
- (function ($)
- {
- $.fn.ligerComboBox = function (options)
- {
- return $.ligerui.run.call(this, "ligerComboBox", arguments);
- };
- $.fn.ligerGetComboBoxManager = function ()
- {
- return $.ligerui.run.call(this, "ligerGetComboBoxManager", arguments);
- };
- $.ligerDefaults.ComboBox = {
- resize: true, //是否调整大小
- isMultiSelect: false, //是否多选
- isShowCheckBox: false, //是否选择复选框
- columns: false, //表格状态
- selectBoxWidth: false, //宽度
- selectBoxHeight: false, //高度
- onBeforeSelect: false, //选择前事件
- onSelected: null, //选择值事件
- initValue: null,
- initText: null,
- valueField: 'id',
- textField: 'text',
- valueFieldID: null,
- slide: true, //是否以动画的形式显示
- split: ";",
- data: null,
- tree: null, //下拉框以树的形式显示,tree的参数跟LigerTree的参数一致
- treeLeafOnly: true, //是否只选择叶子
- grid: null, //表格
- onStartResize: null,
- onEndResize: null,
- hideOnLoseFocus: true,
- url: null, //数据源URL(需返回JSON)
- onSuccess: null,
- onError: null,
- onBeforeOpen: null, //打开下拉框前事件,可以通过return false来阻止继续操作,利用这个参数可以用来调用其他函数,比如打开一个新窗口来选择值
- render: null, //文本框显示html函数
- absolute: true //选择框是否在附加到body,并绝对定位
- };
- //扩展方法
- $.ligerMethos.ComboBox = $.ligerMethos.ComboBox || {};
- $.ligerui.controls.ComboBox = function (element, options)
- {
- $.ligerui.controls.ComboBox.base.constructor.call(this, element, options);
- };
- $.ligerui.controls.ComboBox.ligerExtend($.ligerui.controls.Input, {
- __getType: function ()
- {
- return 'ComboBox';
- },
- _extendMethods: function ()
- {
- return $.ligerMethos.ComboBox;
- },
- _init: function ()
- {
- $.ligerui.controls.ComboBox.base._init.call(this);
- var p = this.options;
- if (p.columns)
- {
- p.isShowCheckBox = true;
- }
- if (p.isMultiSelect)
- {
- p.isShowCheckBox = true;
- }
- },
- _render: function ()
- {
- var g = this, p = this.options;
- g.data = p.data;
- g.inputText = null;
- g.select = null;
- g.textFieldID = "";
- g.valueFieldID = "";
- g.valueField = null; //隐藏域(保存值)
- //文本框初始化
- if (this.element.tagName.toLowerCase() == "input")
- {
- this.element.readOnly = true;
- g.inputText = $(this.element);
- g.textFieldID = this.element.id;
- }
- else if (this.element.tagName.toLowerCase() == "select")
- {
- $(this.element).hide();
- g.select = $(this.element);
- p.isMultiSelect = false;
- p.isShowCheckBox = false;
- g.textFieldID = this.element.id + "_txt";
- g.inputText = $('<input type="text" readonly="true"/>');
- g.inputText.attr("id", g.textFieldID).insertAfter($(this.element));
- } else
- {
- //不支持其他类型
- return;
- }
- if (g.inputText[0].name == undefined) g.inputText[0].name = g.textFieldID;
- //隐藏域初始化
- g.valueField = null;
- if (p.valueFieldID)
- {
- g.valueField = $("#" + p.valueFieldID + ":input");
- if (g.valueField.length == 0) g.valueField = $('<input type="hidden"/>');
- g.valueField[0].id = g.valueField[0].name = p.valueFieldID;
- }
- else
- {
- g.valueField = $('<input type="hidden"/>');
- g.valueField[0].id = g.valueField[0].name = g.textFieldID + "_val";
- }
- if (g.valueField[0].name == undefined) g.valueField[0].name = g.valueField[0].id;
- //开关
- g.link = $('<div class="l-trigger"><div class="l-trigger-icon"></div></div>');
- //下拉框
- 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>');
- g.selectBox.table = $("table:first", g.selectBox);
- //外层
- g.wrapper = g.inputText.wrap('<div class="l-text l-text-combobox"></div>').parent();
- g.wrapper.append('<div class="l-text-l"></div><div class="l-text-r"></div>');
- g.wrapper.append(g.link);
- //添加个包裹,
- g.textwrapper = g.wrapper.wrap('<div class="l-text-wrapper"></div>').parent();
- if (p.absolute)
- g.selectBox.appendTo('body').addClass("l-box-select-absolute");
- else
- g.textwrapper.append(g.selectBox);
- g.textwrapper.append(g.valueField);
- g.inputText.addClass("l-text-field");
- if (p.isShowCheckBox && !g.select)
- {
- $("table", g.selectBox).addClass("l-table-checkbox");
- } else
- {
- p.isShowCheckBox = false;
- $("table", g.selectBox).addClass("l-table-nocheckbox");
- }
- //开关 事件
- g.link.hover(function ()
- {
- if (p.disabled) return;
- this.className = "l-trigger-hover";
- }, function ()
- {
- if (p.disabled) return;
- this.className = "l-trigger";
- }).mousedown(function ()
- {
- if (p.disabled) return;
- this.className = "l-trigger-pressed";
- }).mouseup(function ()
- {
- if (p.disabled) return;
- this.className = "l-trigger-hover";
- }).click(function ()
- {
- if (p.disabled) return;
- if (g.trigger('beforeOpen') == false) return false;
- g._toggleSelectBox(g.selectBox.is(":visible"));
- });
- g.inputText.click(function ()
- {
- if (p.disabled) return;
- if (g.trigger('beforeOpen') == false) return false;
- g._toggleSelectBox(g.selectBox.is(":visible"));
- }).blur(function ()
- {
- if (p.disabled) return;
- g.wrapper.removeClass("l-text-focus");
- }).focus(function ()
- {
- if (p.disabled) return;
- g.wrapper.addClass("l-text-focus");
- });
- g.wrapper.hover(function ()
- {
- if (p.disabled) return;
- g.wrapper.addClass("l-text-over");
- }, function ()
- {
- if (p.disabled) return;
- g.wrapper.removeClass("l-text-over");
- });
- g.resizing = false;
- g.selectBox.hover(null, function (e)
- {
- if (p.hideOnLoseFocus && g.selectBox.is(":visible") && !g.boxToggling && !g.resizing)
- {
- g._toggleSelectBox(true);
- }
- });
- var itemsleng = $("tr", g.selectBox.table).length;
- if (!p.selectBoxHeight && itemsleng < 8) p.selectBoxHeight = itemsleng * 30;
- if (p.selectBoxHeight)
- {
- g.selectBox.height(p.selectBoxHeight);
- }
- //下拉框内容初始化
- g.bulidContent();
- g.set(p);
- //下拉框宽度、高度初始化
- if (p.selectBoxWidth)
- {
- g.selectBox.width(p.selectBoxWidth);
- }
- else
- {
- g.selectBox.css('width', g.wrapper.css('width'));
- }
- },
- destroy: function ()
- {
- if (this.wrapper) this.wrapper.remove();
- if (this.selectBox) this.selectBox.remove();
- this.options = null;
- $.ligerui.remove(this);
- },
- _setDisabled: function (value)
- {
- //禁用样式
- if (value)
- {
- this.wrapper.addClass('l-text-disabled');
- } else
- {
- this.wrapper.removeClass('l-text-disabled');
- }
- },
- _setLable: function (label)
- {
- var g = this, p = this.options;
- if (label)
- {
- if (g.labelwrapper)
- {
- g.labelwrapper.find(".l-text-label:first").html(label + ': ');
- }
- else
- {
- g.labelwrapper = g.textwrapper.wrap('<div class="l-labeltext"></div>').parent();
- g.labelwrapper.prepend('<div class="l-text-label" style="float:left;display:inline;">' + label + ': </div>');
- g.textwrapper.css('float', 'left');
- }
- if (!p.labelWidth)
- {
- p.labelWidth = $('.l-text-label', g.labelwrapper).outerWidth();
- }
- else
- {
- $('.l-text-label', g.labelwrapper).outerWidth(p.labelWidth);
- }
- $('.l-text-label', g.labelwrapper).width(p.labelWidth);
- $('.l-text-label', g.labelwrapper).height(g.wrapper.height());
- g.labelwrapper.append('<br style="clear:both;" />');
- if (p.labelAlign)
- {
- $('.l-text-label', g.labelwrapper).css('text-align', p.labelAlign);
- }
- g.textwrapper.css({ display: 'inline' });
- g.labelwrapper.width(g.wrapper.outerWidth() + p.labelWidth + 2);
- }
- },
- _setWidth: function (value)
- {
- var g = this;
- if (value > 20)
- {
- g.wrapper.css({ width: value });
- g.inputText.css({ width: value });
- g.textwrapper.css({ width: value });
- }
- },
- _setHeight: function (value)
- {
- var g = this;
- if (value > 10)
- {
- g.wrapper.height(value);
- g.inputText.height(value - 2);
- g.link.height(value - 4);
- g.textwrapper.css({ width: value });
- }
- },
- _setResize: function (resize)
- {
- //调整大小支持
- if (resize && $.fn.ligerResizable)
- {
- var g = this;
- g.selectBox.ligerResizable({ handles: 'se,s,e', onStartResize: function ()
- {
- g.resizing = true;
- g.trigger('startResize');
- }
- , onEndResize: function ()
- {
- g.resizing = false;
- if (g.trigger('endResize') == false)
- return false;
- }
- });
- g.selectBox.append("<div class='l-btn-nw-drop'></div>");
- }
- },
- //查找Text,适用多选和单选
- findTextByValue: function (value)
- {
- var g = this, p = this.options;
- if (value == undefined) return "";
- var texts = "";
- var contain = function (checkvalue)
- {
- var targetdata = value.toString().split(p.split);
- for (var i = 0; i < targetdata.length; i++)
- {
- if (targetdata[i] == checkvalue) return true;
- }
- return false;
- };
- $(g.data).each(function (i, item)
- {
- var val = item[p.valueField];
- var txt = item[p.textField];
- if (contain(val))
- {
- texts += txt + p.split;
- }
- });
- if (texts.length > 0) texts = texts.substr(0, texts.length - 1);
- return texts;
- },
- //查找Value,适用多选和单选
- findValueByText: function (text)
- {
- var g = this, p = this.options;
- if (!text && text == "") return "";
- var contain = function (checkvalue)
- {
- var targetdata = text.toString().split(p.split);
- for (var i = 0; i < targetdata.length; i++)
- {
- if (targetdata[i] == checkvalue) return true;
- }
- return false;
- };
- var values = "";
- $(g.data).each(function (i, item)
- {
- var val = item[p.valueField];
- var txt = item[p.textField];
- if (contain(txt))
- {
- values += val + p.split;
- }
- });
- if (values.length > 0) values = values.substr(0, values.length - 1);
- return values;
- },
- removeItem: function ()
- {
- },
- insertItem: function ()
- {
- },
- addItem: function ()
- {
- },
- _setValue: function (value)
- {
- var g = this, p = this.options;
- var text = g.findTextByValue(value);
- if (p.tree)
- {
- g.selectValueByTree(value);
- }
- else if (!p.isMultiSelect)
- {
- g._changeValue(value, text);
- $("tr[value=" + value + "] td", g.selectBox).addClass("l-selected");
- $("tr[value!=" + value + "] td", g.selectBox).removeClass("l-selected");
- }
- else
- {
- g._changeValue(value, text);
- var targetdata = value.toString().split(p.split);
- $("table.l-table-checkbox :checkbox", g.selectBox).each(function () { this.checked = false; });
- for (var i = 0; i < targetdata.length; i++)
- {
- $("table.l-table-checkbox tr[value=" + targetdata[i] + "] :checkbox", g.selectBox).each(function () { this.checked = true; });
- }
- }
- },
- selectValue: function (value)
- {
- this._setValue(value);
- },
- bulidContent: function ()
- {
- var g = this, p = this.options;
- this.clearContent();
- if (g.select)
- {
- g.setSelect();
- }
- else if (g.data)
- {
- g.setData(g.data);
- }
- else if (p.tree)
- {
- g.setTree(p.tree);
- }
- else if (p.grid)
- {
- g.setGrid(p.grid);
- }
- else if (p.url)
- {
- $.ajax({
- type: 'post',
- url: p.url,
- cache: false,
- dataType: 'json',
- success: function (data)
- {
- g.data = data;
- g.setData(g.data);
- g.trigger('success', [g.data]);
- },
- error: function (XMLHttpRequest, textStatus)
- {
- g.trigger('error', [XMLHttpRequest, textStatus]);
- }
- });
- }
- },
- clearContent: function ()
- {
- var g = this, p = this.options;
- $("table", g.selectBox).html("");
- //g.inputText.val("");
- //g.valueField.val("");
- },
- setSelect: function ()
- {
- var g = this, p = this.options;
- this.clearContent();
- $('option', g.select).each(function (i)
- {
- var val = $(this).val();
- var txt = $(this).html();
- var tr = $("<tr><td index='" + i + "' value='" + val + "'>" + txt + "</td>");
- $("table.l-table-nocheckbox", g.selectBox).append(tr);
- $("td", tr).hover(function ()
- {
- $(this).addClass("l-over");
- }, function ()
- {
- $(this).removeClass("l-over");
- });
- });
- $('td:eq(' + g.select[0].selectedIndex + ')', g.selectBox).each(function ()
- {
- if ($(this).hasClass("l-selected"))
- {
- g.selectBox.hide();
- return;
- }
- $(".l-selected", g.selectBox).removeClass("l-selected");
- $(this).addClass("l-selected");
- if (g.select[0].selectedIndex != $(this).attr('index') && g.select[0].onchange)
- {
- g.select[0].selectedIndex = $(this).attr('index'); g.select[0].onchange();
- }
- var newIndex = parseInt($(this).attr('index'));
- g.select[0].selectedIndex = newIndex;
- g.select.trigger("change");
- g.selectBox.hide();
- var value = $(this).attr("value");
- var text = $(this).html();
- if (p.render)
- {
- g.inputText.val(p.render(value, text));
- }
- else
- {
- g.inputText.val(text);
- }
- });
- g._addClickEven();
- },
- setData: function (data)
- {
- var g = this, p = this.options;
- this.clearContent();
- if (!data || !data.length) return;
- if (g.data != data) g.data = data;
- if (p.columns)
- {
- g.selectBox.table.headrow = $("<tr class='l-table-headerow'><td width='18px'></td></tr>");
- g.selectBox.table.append(g.selectBox.table.headrow);
- g.selectBox.table.addClass("l-box-select-grid");
- for (var j = 0; j < p.columns.length; j++)
- {
- var headrow = $("<td columnindex='" + j + "' columnname='" + p.columns[j].name + "'>" + p.columns[j].header + "</td>");
- if (p.columns[j].width)
- {
- headrow.width(p.columns[j].width);
- }
- g.selectBox.table.headrow.append(headrow);
- }
- }
- for (var i = 0; i < data.length; i++)
- {
- var val = data[i][p.valueField];
- var txt = data[i][p.textField];
- if (!p.columns)
- {
- $("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>");
- $("table.l-table-nocheckbox", g.selectBox).append("<tr value='" + val + "'><td index='" + i + "' value='" + val + "' align='left'>" + txt + "</td>");
- } else
- {
- var tr = $("<tr value='" + val + "'><td style='width:18px;' index='" + i + "' value='" + val + "' text='" + txt + "' ><input type='checkbox' /></td></tr>");
- $("td", g.selectBox.table.headrow).each(function ()
- {
- var columnname = $(this).attr("columnname");
- if (columnname)
- {
- var td = $("<td>" + data[i][columnname] + "</td>");
- tr.append(td);
- }
- });
- g.selectBox.table.append(tr);
- }
- }
- //自定义复选框支持
- if (p.isShowCheckBox && $.fn.ligerCheckBox)
- {
- $("table input:checkbox", g.selectBox).ligerCheckBox();
- }
- $(".l-table-checkbox input:checkbox", g.selectBox).change(function ()
- {
- if (this.checked && g.hasBind('beforeSelect'))
- {
- var parentTD = null;
- if ($(this).parent().get(0).tagName.toLowerCase() == "div")
- {
- parentTD = $(this).parent().parent();
- } else
- {
- parentTD = $(this).parent();
- }
- if (parentTD != null && g.trigger('beforeSelect', [parentTD.attr("value"), parentTD.attr("text")]) == false)
- {
- g.selectBox.slideToggle("fast");
- return false;
- }
- }
- if (!p.isMultiSelect)
- {
- if (this.checked)
- {
- $("input:checked", g.selectBox).not(this).each(function ()
- {
- this.checked = false;
- $(".l-checkbox-checked", $(this).parent()).removeClass("l-checkbox-checked");
- });
- g.selectBox.slideToggle("fast");
- }
- }
- g._checkboxUpdateValue();
- });
- $("table.l-table-nocheckbox td", g.selectBox).hover(function ()
- {
- $(this).addClass("l-over");
- }, function ()
- {
- $(this).removeClass("l-over");
- });
- g._addClickEven();
- //选择项初始化
- g._dataInit();
- },
- //树
- setTree: function (tree)
- {
- var g = this, p = this.options;
- this.clearContent();
- g.selectBox.table.remove();
- if (tree.checkbox != false)
- {
- tree.onCheck = function ()
- {
- var nodes = g.treeManager.getChecked();
- var value = [];
- var text = [];
- $(nodes).each(function (i, node)
- {
- if (p.treeLeafOnly && node.data.children) return;
- value.push(node.data[p.valueField]);
- text.push(node.data[p.textField]);
- });
- g._changeValue(value.join(p.split), text.join(p.split));
- };
- }
- else
- {
- tree.onSelect = function (node)
- {
- if (p.treeLeafOnly && node.data.children) return;
- var value = node.data[p.valueField];
- var text = node.data[p.textField];
- g._changeValue(value, text);
- };
- tree.onCancelSelect = function (node)
- {
- g._changeValue("", "");
- };
- }
- tree.onAfterAppend = function (domnode, nodedata)
- {
- if (!g.treeManager) return;
- var value = null;
- if (p.initValue) value = p.initValue;
- else if (g.valueField.val() != "") value = g.valueField.val();
- g.selectValueByTree(value);
- };
- g.tree = $("<ul></ul>");
- $("div:first", g.selectBox).append(g.tree);
- g.tree.ligerTree(tree);
- g.treeManager = g.tree.ligerGetTreeManager();
- },
- selectValueByTree: function (value)
- {
- var g = this, p = this.options;
- if (value != null)
- {
- var text = "";
- var valuelist = value.toString().split(p.split);
- $(valuelist).each(function (i, item)
- {
- g.treeManager.selectNode(item.toString());
- text += g.treeManager.getTextByID(item);
- if (i < valuelist.length - 1) text += p.split;
- });
- g._changeValue(value, text);
- }
- },
- //表格
- setGrid: function (grid)
- {
- var g = this, p = this.options;
- this.clearContent();
- g.selectBox.table.remove();
- g.grid = $("div:first", g.selectBox);
- grid.columnWidth = grid.columnWidth || 120;
- grid.width = "100%";
- grid.height = "100%";
- grid.heightDiff = -2;
- grid.InWindow = false;
- g.gridManager = g.grid.ligerGrid(grid);
- p.hideOnLoseFocus = false;
- if (grid.checkbox != false)
- {
- var onCheckRow = function ()
- {
- var rowsdata = g.gridManager.getCheckedRows();
- var value = [];
- var text = [];
- $(rowsdata).each(function (i, rowdata)
- {
- value.push(rowdata[p.valueField]);
- text.push(rowdata[p.textField]);
- });
- g._changeValue(value.join(p.split), text.join(p.split));
- };
- g.gridManager.bind('CheckAllRow', onCheckRow);
- g.gridManager.bind('CheckRow', onCheckRow);
- }
- else
- {
- g.gridManager.bind('SelectRow', function (rowdata, rowobj, index)
- {
- var value = rowdata[p.valueField];
- var text = rowdata[p.textField];
- g._changeValue(value, text);
- });
- g.gridManager.bind('UnSelectRow', function (rowdata, rowobj, index)
- {
- g._changeValue("", "");
- });
- }
- g.bind('show', function ()
- {
- if (g.gridManager)
- {
- g.gridManager._updateFrozenWidth();
- }
- });
- g.bind('endResize', function ()
- {
- if (g.gridManager)
- {
- g.gridManager._updateFrozenWidth();
- g.gridManager.setHeight(g.selectBox.height() - 2);
- }
- });
- },
- _getValue: function ()
- {
- return $(this.valueField).val();
- },
- getValue: function ()
- {
- //获取值
- return this._getValue();
- },
- updateStyle: function ()
- {
- var g = this, p = this.options;
- g._dataInit();
- },
- _dataInit: function ()
- {
- var g = this, p = this.options;
- var value = null;
- if (p.initValue != null && p.initText != null)
- {
- g._changeValue(p.initValue, p.initText);
- }
- //根据值来初始化
- if (p.initValue != null)
- {
- value = p.initValue;
- if (p.tree)
- {
- if(value)
- g.selectValueByTree(value);
- }
- else
- {
- var text = g.findTextByValue(value);
- g._changeValue(value, text);
- }
- }
- //根据文本来初始化
- else if (p.initText != null)
- {
- value = g.findValueByText(p.initText);
- g._changeValue(value, p.initText);
- }
- else if (g.valueField.val() != "")
- {
- value = g.valueField.val();
- if (p.tree)
- {
- if(value)
- g.selectValueByTree(value);
- }
- else
- {
- var text = g.findTextByValue(value);
- g._changeValue(value, text);
- }
- }
- if (!p.isShowCheckBox && value != null)
- {
- $("table tr", g.selectBox).find("td:first").each(function ()
- {
- if (value == $(this).attr("value"))
- {
- $(this).addClass("l-selected");
- }
- });
- }
- if (p.isShowCheckBox && value != null)
- {
- $(":checkbox", g.selectBox).each(function ()
- {
- var parentTD = null;
- var checkbox = $(this);
- if (checkbox.parent().get(0).tagName.toLowerCase() == "div")
- {
- parentTD = checkbox.parent().parent();
- } else
- {
- parentTD = checkbox.parent();
- }
- if (parentTD == null) return;
- var valuearr = value.toString().split(p.split);
- $(valuearr).each(function (i, item)
- {
- if (item == parentTD.attr("value"))
- {
- $(".l-checkbox", parentTD).addClass("l-checkbox-checked");
- checkbox[0].checked = true;
- }
- });
- });
- }
- },
- //设置值到 文本框和隐藏域
- _changeValue: function (newValue, newText)
- {
- var g = this, p = this.options;
- g.valueField.val(newValue);
- if (p.render)
- {
- g.inputText.val(p.render(newValue, newText));
- }
- else
- {
- g.inputText.val(newText);
- }
- g.selectedValue = newValue;
- g.selectedText = newText;
- g.inputText.trigger("change").focus();
- g.trigger('selected', [newValue, newText]);
- },
- //更新选中的值(复选框)
- _checkboxUpdateValue: function ()
- {
- var g = this, p = this.options;
- var valueStr = "";
- var textStr = "";
- $("input:checked", g.selectBox).each(function ()
- {
- var parentTD = null;
- if ($(this).parent().get(0).tagName.toLowerCase() == "div")
- {
- parentTD = $(this).parent().parent();
- } else
- {
- parentTD = $(this).parent();
- }
- if (!parentTD) return;
- valueStr += parentTD.attr("value") + p.split;
- textStr += parentTD.attr("text") + p.split;
- });
- if (valueStr.length > 0) valueStr = valueStr.substr(0, valueStr.length - 1);
- if (textStr.length > 0) textStr = textStr.substr(0, textStr.length - 1);
- g._changeValue(valueStr, textStr);
- },
- _addClickEven: function ()
- {
- var g = this, p = this.options;
- //选项点击
- $(".l-table-nocheckbox td", g.selectBox).click(function ()
- {
- var value = $(this).attr("value");
- var index = parseInt($(this).attr('index'));
- var text = $(this).html();
- if (g.hasBind('beforeSelect') && g.trigger('beforeSelect', [value, text]) == false)
- {
- if (p.slide) g.selectBox.slideToggle("fast");
- else g.selectBox.hide();
- return false;
- }
- if ($(this).hasClass("l-selected"))
- {
- if (p.slide) g.selectBox.slideToggle("fast");
- else g.selectBox.hide();
- return;
- }
- $(".l-selected", g.selectBox).removeClass("l-selected");
- $(this).addClass("l-selected");
- if (g.select)
- {
- if (g.select[0].selectedIndex != index)
- {
- g.select[0].selectedIndex = index;
- g.select.trigger("change");
- }
- }
- if (p.slide)
- {
- g.boxToggling = true;
- g.selectBox.hide("fast", function ()
- {
- g.boxToggling = false;
- })
- } else g.selectBox.hide();
- g._changeValue(value, text);
- });
- },
- updateSelectBoxPosition: function ()
- {
- var g = this, p = this.options;
- if (p.absolute)
- {
- g.selectBox.css({ left: g.wrapper.offset().left, top: g.wrapper.offset().top + 1 + g.wrapper.outerHeight() });
- }
- else
- {
- var topheight = g.wrapper.offset().top - $(window).scrollTop();
- var selfheight = g.selectBox.height() + textHeight + 4;
- if (topheight + selfheight > $(window).height() && topheight > selfheight)
- {
- g.selectBox.css("marginTop", -1 * (g.selectBox.height() + textHeight + 5));
- }
- }
- },
- _toggleSelectBox: function (isHide)
- {
- var g = this, p = this.options;
- var textHeight = g.wrapper.height();
- g.boxToggling = true;
- if (isHide)
- {
- if (p.slide)
- {
- g.selectBox.slideToggle('fast', function ()
- {
- g.boxToggling = false;
- });
- }
- else
- {
- g.selectBox.hide();
- g.boxToggling = false;
- }
- }
- else
- {
- g.updateSelectBoxPosition();
- if (p.slide)
- {
- g.selectBox.slideToggle('fast', function ()
- {
- g.boxToggling = false;
- if (!p.isShowCheckBox && $('td.l-selected', g.selectBox).length > 0)
- {
- var offSet = ($('td.l-selected', g.selectBox).offset().top - g.selectBox.offset().top);
- $(".l-box-select-inner", g.selectBox).animate({ scrollTop: offSet });
- }
- });
- }
- else
- {
- g.selectBox.show();
- g.boxToggling = false;
- if (!g.tree && !g.grid && !p.isShowCheckBox && $('td.l-selected', g.selectBox).length > 0)
- {
- var offSet = ($('td.l-selected', g.selectBox).offset().top - g.selectBox.offset().top);
- $(".l-box-select-inner", g.selectBox).animate({ scrollTop: offSet });
- }
- }
- }
- g.isShowed = g.selectBox.is(":visible");
- g.trigger('toggle', [isHide]);
- g.trigger(isHide ? 'hide' : 'show');
- }
- });
- $.ligerui.controls.ComboBox.prototype.setValue = $.ligerui.controls.ComboBox.prototype.selectValue;
- //设置文本框和隐藏控件的值
- $.ligerui.controls.ComboBox.prototype.setInputValue = $.ligerui.controls.ComboBox.prototype._changeValue;
-
- })(jQuery);/**
- * jQuery ligerUI 1.1.9
- *
- * http://ligerui.com
- *
- * Author daomi 2012 [ gd_star@163.com ]
- *
- */
- (function ($)
- {
- $.fn.ligerDateEditor = function ()
- {
- return $.ligerui.run.call(this, "ligerDateEditor", arguments);
- };
- $.fn.ligerGetDateEditorManager = function ()
- {
- return $.ligerui.run.call(this, "ligerGetDateEditorManager", arguments);
- };
- $.ligerDefaults.DateEditor = {
- format: "yyyy-MM-dd hh:mm",
- showTime: false,
- onChangeDate: false,
- absolute: true //选择框是否在附加到body,并绝对定位
- };
- $.ligerDefaults.DateEditorString = {
- dayMessage: ["日", "一", "二", "三", "四", "五", "六"],
- monthMessage: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
- todayMessage: "今天",
- closeMessage: "关闭"
- };
- $.ligerMethos.DateEditor = {};
- $.ligerui.controls.DateEditor = function (element, options)
- {
- $.ligerui.controls.DateEditor.base.constructor.call(this, element, options);
- };
- $.ligerui.controls.DateEditor.ligerExtend($.ligerui.controls.Input, {
- __getType: function ()
- {
- return 'DateEditor';
- },
- __idPrev: function ()
- {
- return 'DateEditor';
- },
- _extendMethods: function ()
- {
- return $.ligerMethos.DateEditor;
- },
- _render: function ()
- {
- var g = this, p = this.options;
- if (!p.showTime && p.format.indexOf(" hh:mm") > -1)
- p.format = p.format.replace(" hh:mm", "");
- if (this.element.tagName.toLowerCase() != "input" || this.element.type != "text")
- return;
- g.inputText = $(this.element);
- if (!g.inputText.hasClass("l-text-field"))
- g.inputText.addClass("l-text-field");
- g.link = $('<div class="l-trigger"><div class="l-trigger-icon"></div></div>');
- g.text = g.inputText.wrap('<div class="l-text l-text-date"></div>').parent();
- g.text.append('<div class="l-text-l"></div><div class="l-text-r"></div>');
- g.text.append(g.link);
- //添加个包裹,
- g.textwrapper = g.text.wrap('<div class="l-text-wrapper"></div>').parent();
- var dateeditorHTML = "";
- dateeditorHTML += "<div class='l-box-dateeditor' style='display:none'>";
- dateeditorHTML += " <div class='l-box-dateeditor-header'>";
- dateeditorHTML += " <div class='l-box-dateeditor-header-btn l-box-dateeditor-header-prevyear'><span></span></div>";
- dateeditorHTML += " <div class='l-box-dateeditor-header-btn l-box-dateeditor-header-prevmonth'><span></span></div>";
- 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>";
- dateeditorHTML += " <div class='l-box-dateeditor-header-btn l-box-dateeditor-header-nextmonth'><span></span></div>";
- dateeditorHTML += " <div class='l-box-dateeditor-header-btn l-box-dateeditor-header-nextyear'><span></span></div>";
- dateeditorHTML += " </div>";
- dateeditorHTML += " <div class='l-box-dateeditor-body'>";
- dateeditorHTML += " <table cellpadding='0' cellspacing='0' border='0' class='l-box-dateeditor-calendar'>";
- dateeditorHTML += " <thead>";
- 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>";
- dateeditorHTML += " </thead>";
- dateeditorHTML += " <tbody>";
- 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>";
- dateeditorHTML += " </tbody>";
- dateeditorHTML += " </table>";
- 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>";
- 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>";
- 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>";
- 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>";
- dateeditorHTML += " </div>";
- dateeditorHTML += " <div class='l-box-dateeditor-toolbar'>";
- dateeditorHTML += " <div class='l-box-dateeditor-time'></div>";
- dateeditorHTML += " <div class='l-button l-button-today'></div>";
- dateeditorHTML += " <div class='l-button l-button-close'></div>";
- dateeditorHTML += " <div class='l-clear'></div>";
- dateeditorHTML += " </div>";
- dateeditorHTML += "</div>";
- g.dateeditor = $(dateeditorHTML);
- if (p.absolute)
- g.dateeditor.appendTo('body').addClass("l-box-dateeditor-absolute");
- else
- g.textwrapper.append(g.dateeditor);
- g.header = $(".l-box-dateeditor-header", g.dateeditor);
- g.body = $(".l-box-dateeditor-body", g.dateeditor);
- g.toolbar = $(".l-box-dateeditor-toolbar", g.dateeditor);
- g.body.thead = $("thead", g.body);
- g.body.tbody = $("tbody", g.body);
- g.body.monthselector = $(".l-box-dateeditor-monthselector", g.body);
- g.body.yearselector = $(".l-box-dateeditor-yearselector", g.body);
- g.body.hourselector = $(".l-box-dateeditor-hourselector", g.body);
- g.body.minuteselector = $(".l-box-dateeditor-minuteselector", g.body);
- g.toolbar.time = $(".l-box-dateeditor-time", g.toolbar);
- g.toolbar.time.hour = $("<a></a>");
- g.toolbar.time.minute = $("<a></a>");
- g.buttons = {
- btnPrevYear: $(".l-box-dateeditor-header-prevyear", g.header),
- btnNextYear: $(".l-box-dateeditor-header-nextyear", g.header),
- btnPrevMonth: $(".l-box-dateeditor-header-prevmonth", g.header),
- btnNextMonth: $(".l-box-dateeditor-header-nextmonth", g.header),
- btnYear: $(".l-box-dateeditor-header-year", g.header),
- btnMonth: $(".l-box-dateeditor-header-month", g.header),
- btnToday: $(".l-button-today", g.toolbar),
- btnClose: $(".l-button-close", g.toolbar)
- };
- var nowDate = new Date();
- g.now = {
- year: nowDate.getFullYear(),
- month: nowDate.getMonth() + 1, //注意这里
- day: nowDate.getDay(),
- date: nowDate.getDate(),
- hour: nowDate.getHours(),
- minute: nowDate.getMinutes()
- };
- //当前的时间
- g.currentDate = {
- year: nowDate.getFullYear(),
- month: nowDate.getMonth() + 1,
- day: nowDate.getDay(),
- date: nowDate.getDate(),
- hour: nowDate.getHours(),
- minute: nowDate.getMinutes()
- };
- //选择的时间
- g.selectedDate = null;
- //使用的时间
- g.usedDate = null;
- //初始化数据
- //设置周日至周六
- $("td", g.body.thead).each(function (i, td)
- {
- $(td).html(p.dayMessage[i]);
- });
- //设置一月到十一二月
- $("li", g.body.monthselector).each(function (i, li)
- {
- $(li).html(p.monthMessage[i]);
- });
- //设置按钮
- g.buttons.btnToday.html(p.todayMessage);
- g.buttons.btnClose.html(p.closeMessage);
- //设置时间
- if (p.showTime)
- {
- g.toolbar.time.show();
- g.toolbar.time.append(g.toolbar.time.hour).append(":").append(g.toolbar.time.minute);
- $("li", g.body.hourselector).each(function (i, item)
- {
- var str = i;
- if (i < 10) str = "0" + i.toString();
- $(this).html(str);
- });
- $("li", g.body.minuteselector).each(function (i, item)
- {
- var str = i;
- if (i < 10) str = "0" + i.toString();
- $(this).html(str);
- });
- }
- //设置主体
- g.bulidContent();
- //初始化
- if (g.inputText.val() != "")
- g.onTextChange();
- /**************
- **bulid evens**
- *************/
- g.dateeditor.hover(null, function (e)
- {
- if (g.dateeditor.is(":visible") && !g.editorToggling)
- {
- g.toggleDateEditor(true);
- }
- });
- //toggle even
- g.link.hover(function ()
- {
- if (p.disabled) return;
- this.className = "l-trigger-hover";
- }, function ()
- {
- if (p.disabled) return;
- this.className = "l-trigger";
- }).mousedown(function ()
- {
- if (p.disabled) return;
- this.className = "l-trigger-pressed";
- }).mouseup(function ()
- {
- if (p.disabled) return;
- this.className = "l-trigger-hover";
- }).click(function ()
- {
- if (p.disabled) return;
- g.bulidContent();
- g.toggleDateEditor(g.dateeditor.is(":visible"));
- });
- //不可用属性时处理
- if (p.disabled)
- {
- g.inputText.attr("readonly", "readonly");
- g.text.addClass('l-text-disabled');
- }
- //初始值
- if (p.initValue)
- {
- g.inputText.val(p.initValue);
- }
- g.buttons.btnClose.click(function ()
- {
- g.toggleDateEditor(true);
- });
- //日期 点击
- $("td", g.body.tbody).hover(function ()
- {
- if ($(this).hasClass("l-box-dateeditor-today")) return;
- $(this).addClass("l-box-dateeditor-over");
- }, function ()
- {
- $(this).removeClass("l-box-dateeditor-over");
- }).click(function ()
- {
- $(".l-box-dateeditor-selected", g.body.tbody).removeClass("l-box-dateeditor-selected");
- if (!$(this).hasClass("l-box-dateeditor-today"))
- $(this).addClass("l-box-dateeditor-selected");
- g.currentDate.date = parseInt($(this).html());
- g.currentDate.day = new Date(g.currentDate.year, g.currentDate.month - 1, 1).getDay();
- if ($(this).hasClass("l-box-dateeditor-out"))
- {
- if ($("tr", g.body.tbody).index($(this).parent()) == 0)
- {
- if (--g.currentDate.month == 0)
- {
- g.currentDate.month = 12;
- g.currentDate.year--;
- }
- } else
- {
- if (++g.currentDate.month == 13)
- {
- g.currentDate.month = 1;
- g.currentDate.year++;
- }
- }
- }
- g.selectedDate = {
- year: g.currentDate.year,
- month: g.currentDate.month,
- date: g.currentDate.date
- };
- g.showDate();
- g.editorToggling = true;
- g.dateeditor.slideToggle('fast', function ()
- {
- g.editorToggling = false;
- });
- });
- $(".l-box-dateeditor-header-btn", g.header).hover(function ()
- {
- $(this).addClass("l-box-dateeditor-header-btn-over");
- }, function ()
- {
- $(this).removeClass("l-box-dateeditor-header-btn-over");
- });
- //选择年份
- g.buttons.btnYear.click(function ()
- {
- //build year list
- if (!g.body.yearselector.is(":visible"))
- {
- $("li", g.body.yearselector).each(function (i, item)
- {
- var currentYear = g.currentDate.year + (i - 4);
- if (currentYear == g.currentDate.year)
- $(this).addClass("l-selected");
- else
- $(this).removeClass("l-selected");
- $(this).html(currentYear);
- });
- }
- g.body.yearselector.slideToggle();
- });
- g.body.yearselector.hover(function () { }, function ()
- {
- $(this).slideUp();
- });
- $("li", g.body.yearselector).click(function ()
- {
- g.currentDate.year = parseInt($(this).html());
- g.body.yearselector.slideToggle();
- g.bulidContent();
- });
- //select month
- g.buttons.btnMonth.click(function ()
- {
- $("li", g.body.monthselector).each(function (i, item)
- {
- //add selected style
- if (g.currentDate.month == i + 1)
- $(this).addClass("l-selected");
- else
- $(this).removeClass("l-selected");
- });
- g.body.monthselector.slideToggle();
- });
- g.body.monthselector.hover(function () { }, function ()
- {
- $(this).slideUp("fast");
- });
- $("li", g.body.monthselector).click(function ()
- {
- var index = $("li", g.body.monthselector).index(this);
- g.currentDate.month = index + 1;
- g.body.monthselector.slideToggle();
- g.bulidContent();
- });
- //选择小时
- g.toolbar.time.hour.click(function ()
- {
- $("li", g.body.hourselector).each(function (i, item)
- {
- //add selected style
- if (g.currentDate.hour == i)
- $(this).addClass("l-selected");
- else
- $(this).removeClass("l-selected");
- });
- g.body.hourselector.slideToggle();
- });
- g.body.hourselector.hover(function () { }, function ()
- {
- $(this).slideUp("fast");
- });
- $("li", g.body.hourselector).click(function ()
- {
- var index = $("li", g.body.hourselector).index(this);
- g.currentDate.hour = index;
- g.body.hourselector.slideToggle();
- g.bulidContent();
- });
- //选择分钟
- g.toolbar.time.minute.click(function ()
- {
- $("li", g.body.minuteselector).each(function (i, item)
- {
- //add selected style
- if (g.currentDate.minute == i)
- $(this).addClass("l-selected");
- else
- $(this).removeClass("l-selected");
- });
- g.body.minuteselector.slideToggle("fast", function ()
- {
- var index = $("li", this).index($('li.l-selected', this));
- if (index > 29)
- {
- var offSet = ($('li.l-selected', this).offset().top - $(this).offset().top);
- $(this).animate({ scrollTop: offSet });
- }
- });
- });
- g.body.minuteselector.hover(function () { }, function ()
- {
- $(this).slideUp("fast");
- });
- $("li", g.body.minuteselector).click(function ()
- {
- var index = $("li", g.body.minuteselector).index(this);
- g.currentDate.minute = index;
- g.body.minuteselector.slideToggle("fast");
- g.bulidContent();
- });
- //上个月
- g.buttons.btnPrevMonth.click(function ()
- {
- if (--g.currentDate.month == 0)
- {
- g.currentDate.month = 12;
- g.currentDate.year--;
- }
- g.bulidContent();
- });
- //下个月
- g.buttons.btnNextMonth.click(function ()
- {
- if (++g.currentDate.month == 13)
- {
- g.currentDate.month = 1;
- g.currentDate.year++;
- }
- g.bulidContent();
- });
- //上一年
- g.buttons.btnPrevYear.click(function ()
- {
- g.currentDate.year--;
- g.bulidContent();
- });
- //下一年
- g.buttons.btnNextYear.click(function ()
- {
- g.currentDate.year++;
- g.bulidContent();
- });
- //今天
- g.buttons.btnToday.click(function ()
- {
- g.currentDate = {
- year: g.now.year,
- month: g.now.month,
- day: g.now.day,
- date: g.now.date
- };
- g.selectedDate = {
- year: g.now.year,
- month: g.now.month,
- day: g.now.day,
- date: g.now.date
- };
- g.showDate();
- g.dateeditor.slideToggle("fast");
- });
- //文本框
- g.inputText.change(function ()
- {
- g.onTextChange();
- }).blur(function ()
- {
- g.text.removeClass("l-text-focus");
- }).focus(function ()
- {
- g.text.addClass("l-text-focus");
- });
- g.text.hover(function ()
- {
- g.text.addClass("l-text-over");
- }, function ()
- {
- g.text.removeClass("l-text-over");
- });
- //LEABEL 支持
- if (p.label)
- {
- g.labelwrapper = g.textwrapper.wrap('<div class="l-labeltext"></div>').parent();
- g.labelwrapper.prepend('<div class="l-text-label" style="float:left;display:inline;">' + p.label + ': </div>');
- g.textwrapper.css('float', 'left');
- if (!p.labelWidth)
- {
- p.labelWidth = $('.l-text-label', g.labelwrapper).outerWidth();
- } else
- {
- $('.l-text-label', g.labelwrapper).outerWidth(p.labelWidth);
- }
- $('.l-text-label', g.labelwrapper).width(p.labelWidth);
- $('.l-text-label', g.labelwrapper).height(g.text.height());
- g.labelwrapper.append('<br style="clear:both;" />');
- if (p.labelAlign)
- {
- $('.l-text-label', g.labelwrapper).css('text-align', p.labelAlign);
- }
- g.textwrapper.css({ display: 'inline' });
- g.labelwrapper.width(g.text.outerWidth() + p.labelWidth + 2);
- }
- g.set(p);
- },
- destroy: function ()
- {
- if (this.textwrapper) this.textwrapper.remove();
- if (this.dateeditor) this.dateeditor.remove();
- this.options = null;
- $.ligerui.remove(this);
- },
- bulidContent: function ()
- {
- var g = this, p = this.options;
- //当前月第一天星期
- var thismonthFirstDay = new Date(g.currentDate.year, g.currentDate.month - 1, 1).getDay();
- //当前月天数
- var nextMonth = g.currentDate.month;
- var nextYear = g.currentDate.year;
- if (++nextMonth == 13)
- {
- nextMonth = 1;
- nextYear++;
- }
- var monthDayNum = new Date(nextYear, nextMonth - 1, 0).getDate();
- //当前上个月天数
- var prevMonthDayNum = new Date(g.currentDate.year, g.currentDate.month - 1, 0).getDate();
- g.buttons.btnMonth.html(p.monthMessage[g.currentDate.month - 1]);
- g.buttons.btnYear.html(g.currentDate.year);
- g.toolbar.time.hour.html(g.currentDate.hour);
- g.toolbar.time.minute.html(g.currentDate.minute);
- if (g.toolbar.time.hour.html().length == 1)
- g.toolbar.time.hour.html("0" + g.toolbar.time.hour.html());
- if (g.toolbar.time.minute.html().length == 1)
- g.toolbar.time.minute.html("0" + g.toolbar.time.minute.html());
- $("td", this.body.tbody).each(function () { this.className = "" });
- $("tr", this.body.tbody).each(function (i, tr)
- {
- $("td", tr).each(function (j, td)
- {
- var id = i * 7 + (j - thismonthFirstDay);
- var showDay = id + 1;
- if (g.selectedDate && g.currentDate.year == g.selectedDate.year &&
- g.currentDate.month == g.selectedDate.month &&
- id + 1 == g.selectedDate.date)
- {
- if (j == 0 || j == 6)
- {
- $(td).addClass("l-box-dateeditor-holiday")
- }
- $(td).addClass("l-box-dateeditor-selected");
- $(td).siblings().removeClass("l-box-dateeditor-selected");
- }
- else if (g.currentDate.year == g.now.year &&
- g.currentDate.month == g.now.month &&
- id + 1 == g.now.date)
- {
- if (j == 0 || j == 6)
- {
- $(td).addClass("l-box-dateeditor-holiday")
- }
- $(td).addClass("l-box-dateeditor-today");
- }
- else if (id < 0)
- {
- showDay = prevMonthDayNum + showDay;
- $(td).addClass("l-box-dateeditor-out")
- .removeClass("l-box-dateeditor-selected");
- }
- else if (id > monthDayNum - 1)
- {
- showDay = showDay - monthDayNum;
- $(td).addClass("l-box-dateeditor-out")
- .removeClass("l-box-dateeditor-selected");
- }
- else if (j == 0 || j == 6)
- {
- $(td).addClass("l-box-dateeditor-holiday")
- .removeClass("l-box-dateeditor-selected");
- }
- else
- {
- td.className = "";
- }
- $(td).html(showDay);
- });
- });
- },
- updateSelectBoxPosition: function ()
- {
- var g = this, p = this.options;
- if (p.absolute)
- {
- g.dateeditor.css({ left: g.text.offset().left, top: g.text.offset().top + 1 + g.text.outerHeight() });
- }
- else
- {
- if (g.text.offset().top + 4 > g.dateeditor.height() && g.text.offset().top + g.dateeditor.height() + textHeight + 4 - $(window).scrollTop() > $(window).height())
- {
- g.dateeditor.css("marginTop", -1 * (g.dateeditor.height() + textHeight + 5));
- g.showOnTop = true;
- }
- else
- {
- g.showOnTop = false;
- }
- }
- },
- toggleDateEditor: function (isHide)
- {
- var g = this, p = this.options;
- var textHeight = g.text.height();
- g.editorToggling = true;
- if (isHide)
- {
- g.dateeditor.hide('fast', function ()
- {
- g.editorToggling = false;
- });
- }
- else
- {
- g.updateSelectBoxPosition();
- g.dateeditor.slideDown('fast', function ()
- {
- g.editorToggling = false;
- });
- }
- },
- showDate: function ()
- {
- var g = this, p = this.options;
- if (!this.selectedDate) return;
- var dateStr = g.selectedDate.year + "/" + g.selectedDate.month + "/" + g.selectedDate.date;
- this.currentDate.hour = parseInt(g.toolbar.time.hour.html(), 10);
- this.currentDate.minute = parseInt(g.toolbar.time.minute.html(), 10);
- if (p.showTime)
- {
- dateStr += " " + this.currentDate.hour + ":" + this.currentDate.minute;
- }
- this.inputText.val(dateStr);
- this.inputText.trigger("change").focus();
- },
- isDateTime: function (dateStr)
- {
- var g = this, p = this.options;
- var r = dateStr.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
- if (r == null) return false;
- var d = new Date(r[1], r[3] - 1, r[4]);
- if (d == "NaN") return false;
- return (d.getFullYear() == r[1] && (d.getMonth() + 1) == r[3] && d.getDate() == r[4]);
- },
- isLongDateTime: function (dateStr)
- {
- var g = this, p = this.options;
- var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2})$/;
- var r = dateStr.match(reg);
- if (r == null) return false;
- var d = new Date(r[1], r[3] - 1, r[4], r[5], r[6]);
- if (d == "NaN") return false;
- return (d.getFullYear() == r[1] && (d.getMonth() + 1) == r[3] && d.getDate() == r[4] && d.getHours() == r[5] && d.getMinutes() == r[6]);
- },
- getFormatDate: function (date)
- {
- var g = this, p = this.options;
- if (date == "NaN") return null;
- var format = p.format;
- var o = {
- "M+": date.getMonth() + 1,
- "d+": date.getDate(),
- "h+": date.getHours(),
- "m+": date.getMinutes(),
- "s+": date.getSeconds(),
- "q+": Math.floor((date.getMonth() + 3) / 3),
- "S": date.getMilliseconds()
- }
- if (/(y+)/.test(format))
- {
- format = format.replace(RegExp.$1, (date.getFullYear() + "")
- .substr(4 - RegExp.$1.length));
- }
- for (var k in o)
- {
- if (new RegExp("(" + k + ")").test(format))
- {
- format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k]
- : ("00" + o[k]).substr(("" + o[k]).length));
- }
- }
- return format;
- },
- onTextChange: function ()
- {
- var g = this, p = this.options;
- var val = g.inputText.val();
- if (val == "")
- {
- g.selectedDate = null;
- return true;
- }
- if (!p.showTime && !g.isDateTime(val))
- {
- //恢复
- if (!g.usedDate)
- {
- g.inputText.val("");
- } else
- {
- g.inputText.val(g.getFormatDate(g.usedDate));
- }
- }
- else if (p.showTime && !g.isLongDateTime(val))
- {
- //恢复
- if (!g.usedDate)
- {
- g.inputText.val("");
- } else
- {
- g.inputText.val(g.getFormatDate(g.usedDate));
- }
- }
- else
- {
- val = val.replace(/-/g, "/");
- var formatVal = g.getFormatDate(new Date(val));
- if (formatVal == null)
- {
- //恢复
- if (!g.usedDate)
- {
- g.inputText.val("");
- } else
- {
- g.inputText.val(g.getFormatDate(g.usedDate));
- }
- }
- g.usedDate = new Date(val); //记录
- g.selectedDate = {
- year: g.usedDate.getFullYear(),
- month: g.usedDate.getMonth() + 1, //注意这里
- day: g.usedDate.getDay(),
- date: g.usedDate.getDate(),
- hour: g.usedDate.getHours(),
- minute: g.usedDate.getMinutes()
- };
- g.currentDate = {
- year: g.usedDate.getFullYear(),
- month: g.usedDate.getMonth() + 1, //注意这里
- day: g.usedDate.getDay(),
- date: g.usedDate.getDate(),
- hour: g.usedDate.getHours(),
- minute: g.usedDate.getMinutes()
- };
- g.inputText.val(formatVal);
- g.trigger('changeDate', [formatVal]);
- if ($(g.dateeditor).is(":visible"))
- g.bulidContent();
- }
- },
- _setHeight: function (value)
- {
- var g = this;
- if (value > 4)
- {
- g.text.css({ height: value });
- g.inputText.css({ height: value });
- g.textwrapper.css({ height: value });
- }
- },
- _setWidth: function (value)
- {
- var g = this;
- if (value > 20)
- {
- g.text.css({ width: value });
- // g.inputText.css({ width: value - 20 });
- g.inputText.css({ width: value - 2 });
- g.textwrapper.css({ width: value });
- }
- },
- _setValue: function (value)
- {
- var g = this;
- if (!value) g.inputText.val('');
- if (typeof value == "string")
- {
- g.inputText.val(value);
- }
- else if (typeof value == "object")
- {
- if (value instanceof Date)
- {
- g.inputText.val(g.getFormatDate(value));
- g.onTextChange();
- }
- }
- },
- _getValue: function ()
- {
- return this.usedDate;
- },
- setEnabled: function ()
- {
- var g = this, p = this.options;
- this.inputText.removeAttr("readonly");
- this.text.removeClass('l-text-disabled');
- p.disabled = false;
- },
- setDisabled: function ()
- {
- var g = this, p = this.options;
- this.inputText.attr("readonly", "readonly");
- this.text.addClass('l-text-disabled');
- p.disabled = true;
- }
- });
- })(jQuery);/**
- * jQuery ligerUI 1.1.9
- *
- * http://ligerui.com
- *
- * Author daomi 2012 [ gd_star@163.com ]
- *
- */
- (function ($)
- {
- var l = $.ligerui;
- //全局事件
- $(".l-dialog-btn").live('mouseover', function ()
- {
- $(this).addClass("l-dialog-btn-over");
- }).live('mouseout', function ()
- {
- $(this).removeClass("l-dialog-btn-over");
- });
- $(".l-dialog-tc .l-dialog-close").live('mouseover', function ()
- {
- $(this).addClass("l-dialog-close-over");
- }).live('mouseout', function ()
- {
- $(this).removeClass("l-dialog-close-over");
- });
- $.ligerDialog = function ()
- {
- return l.run.call(null, "ligerDialog", arguments, { isStatic: true });
- };
- //dialog 图片文件夹的路径 预加载
- $.ligerui.DialogImagePath = "../../lib/ligerUI/skins/Aqua/images/win/";
- function prevImage(paths)
- {
- for (var i in paths)
- {
- $('<img />').attr('src', l.DialogImagePath + paths[i]);
- }
- }
- //prevImage(['dialog.gif', 'dialog-winbtns.gif', 'dialog-bc.gif', 'dialog-tc.gif']);
- $.ligerDefaults.Dialog = {
- cls: null, //给dialog附加css class
- id: null, //给dialog附加id
- buttons: null, //按钮集合
- isDrag: true, //是否拖动
- width: 280, //宽度
- height: null, //高度,默认自适应
- content: '', //内容
- target: null, //目标对象,指定它将以appendTo()的方式载入
- url: null, //目标页url,默认以iframe的方式载入
- load: false, //是否以load()的方式加载目标页的内容
- onLoaded: null,
- type: 'none', //类型 warn、success、error、question
- left: null, //位置left
- top: null, //位置top
- modal: true, //是否模态对话框
- name: null, //创建iframe时 作为iframe的name和id
- isResize: false, // 是否调整大小
- allowClose: true, //允许关闭
- opener: null,
- timeParmName: null, //是否给URL后面加上值为new Date().getTime()的参数,如果需要指定一个参数名即可
- closeWhenEnter: null, //回车时是否关闭dialog
- isHidden: true, //关闭对话框时是否只是隐藏,还是销毁对话框
- show: true, //初始化时是否马上显示
- title: '提示', //头部
- showMax: false, //是否显示最大化按钮
- showToggle: false, //是否显示收缩窗口按钮
- showMin: false, //是否显示最小化按钮
- slide: $.browser.msie ? false : true, //是否以动画的形式显示
- fixedType: null, //在固定的位置显示, 可以设置的值有n, e, s, w, ne, se, sw, nw
- showType: null //显示类型,可以设置为slide(固定显示时有效)
- };
- $.ligerDefaults.DialogString = {
- titleMessage: '提示', //提示文本标题
- ok: '确定',
- yes: '是',
- no: '否',
- cancel: '取消',
- waittingMessage: '正在等待中,请稍候...'
- };
- $.ligerMethos.Dialog = $.ligerMethos.Dialog || {};
- l.controls.Dialog = function (options)
- {
- l.controls.Dialog.base.constructor.call(this, null, options);
- };
- l.controls.Dialog.ligerExtend(l.core.Win, {
- __getType: function ()
- {
- return 'Dialog';
- },
- __idPrev: function ()
- {
- return 'Dialog';
- },
- _extendMethods: function ()
- {
- return $.ligerMethos.Dialog;
- },
- _render: function ()
- {
- var g = this, p = this.options;
- g.set(p, true);
- 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>');
- $('body').append(dialog);
- g.dialog = dialog;
- g.element = dialog[0];
- g.dialog.body = $(".l-dialog-body:first", g.dialog);
- g.dialog.header = $(".l-dialog-tc-inner:first", g.dialog);
- g.dialog.winbtns = $(".l-dialog-winbtns:first", g.dialog.header);
- g.dialog.buttons = $(".l-dialog-buttons:first", g.dialog);
- g.dialog.content = $(".l-dialog-content:first", g.dialog);
- g.set(p, false);
- if (p.allowClose == false) $(".l-dialog-close", g.dialog).remove();
- if (p.target || p.url || p.type == "none")
- {
- p.type = null;
- g.dialog.addClass("l-dialog-win");
- }
- if (p.cls) g.dialog.addClass(p.cls);
- if (p.id) g.dialog.attr("id", p.id);
- //设置锁定屏幕、拖动支持 和设置图片
- g.mask();
- if (p.isDrag)
- g._applyDrag();
- if (p.isResize)
- g._applyResize();
- if (p.type)
- g._setImage();
- else
- {
- $(".l-dialog-image", g.dialog).remove();
- g.dialog.content.addClass("l-dialog-content-noimage");
- }
- if (!p.show)
- {
- g.unmask();
- g.dialog.hide();
- }
- //设置主体内容
- if (p.target)
- {
- g.dialog.content.prepend(p.target);
- $(p.target).show();
- }
- else if (p.url)
- {
- if (p.timeParmName)
- {
- p.url += p.url.indexOf('?') == -1 ? "?" : "&";
- p.url += p.timeParmName + "=" + new Date().getTime();
- }
- if (p.load)
- {
- g.dialog.body.load(p.url, function ()
- {
- g._saveStatus();
- g.trigger('loaded');
- });
- }
- else
- {
- g.jiframe = $("<iframe frameborder='0'></iframe>");
- var framename = p.name ? p.name : "ligerwindow" + new Date().getTime();
- g.jiframe.attr("name", framename);
- g.jiframe.attr("id", framename);
- g.dialog.content.prepend(g.jiframe);
- g.dialog.content.addClass("l-dialog-content-nopadding");
- setTimeout(function ()
- {
- g.jiframe.attr("src", p.url);
- g.frame = window.frames[g.jiframe.attr("name")];
- }, 0);
- }
- }
- if (p.opener) g.dialog.opener = p.opener;
- //设置按钮
- if (p.buttons)
- {
- $(p.buttons).each(function (i, item)
- {
- 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>');
- $(".l-dialog-btn-inner", btn).html(item.text);
- $(".l-dialog-buttons-inner", g.dialog.buttons).prepend(btn);
- item.width && btn.width(item.width);
- item.onclick && btn.click(function () { item.onclick(item, g, i) });
- });
- } else
- {
- g.dialog.buttons.remove();
- }
- $(".l-dialog-buttons-inner", g.dialog.buttons).append("<div class='l-clear'></div>");
- $(".l-dialog-title", g.dialog)
- .bind("selectstart", function () { return false; });
- g.dialog.click(function ()
- {
- l.win.setFront(g);
- });
- //设置事件
- $(".l-dialog-tc .l-dialog-close", g.dialog).click(function ()
- {
- if (p.isHidden)
- g.hide();
- else
- g.close();
- });
- if (!p.fixedType)
- {
- //位置初始化
- var left = 0;
- var top = 0;
- var width = p.width || g.dialog.width();
- if (p.slide == true) p.slide = 'fast';
- if (p.left != null) left = p.left;
- else p.left = left = 0.5 * ($(window).width() - width);
- if (p.top != null) top = p.top;
- else p.top = top = 0.5 * ($(window).height() - g.dialog.height()) + $(window).scrollTop() - 10;
- if (left < 0) p.left = left = 0;
- if (top < 0) p.top = top = 0;
- g.dialog.css({ left: left, top: top });
- }
- g.show();
- $('body').bind('keydown.dialog', function (e)
- {
- var key = e.which;
- if (key == 13)
- {
- g.enter();
- }
- else if (key == 27)
- {
- g.esc();
- }
- });
- g._updateBtnsWidth();
- g._saveStatus();
- g._onReisze();
- },
- _borderX: 12,
- _borderY: 32,
- doMax: function (slide)
- {
- var g = this, p = this.options;
- var width = $(window).width(), height = $(window).height(), left = 0, top = 0;
- if (l.win.taskbar)
- {
- height -= l.win.taskbar.outerHeight();
- if (l.win.top) top += l.win.taskbar.outerHeight();
- }
- if (slide)
- {
- g.dialog.body.animate({ width: width - g._borderX }, p.slide);
- g.dialog.animate({ left: left, top: top }, p.slide);
- g.dialog.content.animate({ height: height - g._borderY - g.dialog.buttons.outerHeight() }, p.slide, function ()
- {
- g._onReisze();
- });
- }
- else
- {
- g.set({ width: width, height: height, left: left, top: top });
- g._onReisze();
- }
- },
- //最大化
- max: function ()
- {
- var g = this, p = this.options;
- if (g.winmax)
- {
- g.winmax.addClass("l-dialog-recover");
- g.doMax(p.slide);
- if (g.wintoggle)
- {
- if (g.wintoggle.hasClass("l-dialog-extend"))
- g.wintoggle.addClass("l-dialog-toggle-disabled l-dialog-extend-disabled");
- else
- g.wintoggle.addClass("l-dialog-toggle-disabled l-dialog-collapse-disabled");
- }
- if (g.resizable) g.resizable.set({ disabled: true });
- if (g.draggable) g.draggable.set({ disabled: true });
- g.maximum = true;
- $(window).bind('resize.dialogmax', function ()
- {
- g.doMax(false);
- });
- }
- },
- //恢复
- recover: function ()
- {
- var g = this, p = this.options;
- if (g.winmax)
- {
- g.winmax.removeClass("l-dialog-recover");
- if (p.slide)
- {
- g.dialog.body.animate({ width: g._width - g._borderX }, p.slide);
- g.dialog.animate({ left: g._left, top: g._top }, p.slide);
- g.dialog.content.animate({ height: g._height - g._borderY - g.dialog.buttons.outerHeight() }, p.slide, function ()
- {
- g._onReisze();
- });
- }
- else
- {
- g.set({ width: g._width, height: g._height, left: g._left, top: g._top });
- g._onReisze();
- }
- if (g.wintoggle)
- {
- g.wintoggle.removeClass("l-dialog-toggle-disabled l-dialog-extend-disabled l-dialog-collapse-disabled");
- }
- $(window).unbind('resize.dialogmax');
- }
- if (this.resizable) this.resizable.set({ disabled: false });
- if (g.draggable) g.draggable.set({ disabled: false });
- g.maximum = false;
- },
- //最小化
- min: function ()
- {
- var g = this, p = this.options;
- var task = l.win.getTask(this);
- if (p.slide)
- {
- g.dialog.body.animate({ width: 1 }, p.slide);
- task.y = task.offset().top + task.height();
- task.x = task.offset().left + task.width() / 2;
- g.dialog.animate({ left: task.x, top: task.y }, p.slide, function ()
- {
- g.dialog.hide();
- });
- }
- else
- {
- g.dialog.hide();
- }
- g.unmask();
- g.minimize = true;
- g.actived = false;
- },
- active: function ()
- {
- var g = this, p = this.options;
- if (g.minimize)
- {
- var width = g._width, height = g._height, left = g._left, top = g._top;
- if (g.maximum)
- {
- width = $(window).width();
- height = $(window).height();
- left = top = 0;
- if (l.win.taskbar)
- {
- height -= l.win.taskbar.outerHeight();
- if (l.win.top) top += l.win.taskbar.outerHeight();
- }
- }
- if (p.slide)
- {
- g.dialog.body.animate({ width: width - g._borderX }, p.slide);
- g.dialog.animate({ left: left, top: top }, p.slide);
- }
- else
- {
- g.set({ width: width, height: height, left: left, top: top });
- }
- }
- g.actived = true;
- g.minimize = false;
- l.win.setFront(g);
- g.show();
- },
- //展开 收缩
- toggle: function ()
- {
- var g = this, p = this.options;
- if (!g.wintoggle) return;
- if (g.wintoggle.hasClass("l-dialog-extend"))
- g.extend();
- else
- g.collapse();
- },
- //收缩
- collapse: function ()
- {
- var g = this, p = this.options;
- if (!g.wintoggle) return;
- if (p.slide)
- g.dialog.content.animate({ height: 1 }, p.slide);
- else
- g.dialog.content.height(1);
- if (this.resizable) this.resizable.set({ disabled: true });
- },
- //展开
- extend: function ()
- {
- var g = this, p = this.options;
- if (!g.wintoggle) return;
- var contentHeight = g._height - g._borderY - g.dialog.buttons.outerHeight();
- if (p.slide)
- g.dialog.content.animate({ height: contentHeight }, p.slide);
- else
- g.dialog.content.height(contentHeight);
- if (this.resizable) this.resizable.set({ disabled: false });
- },
- _updateBtnsWidth: function ()
- {
- var g = this;
- var btnscount = $(">div", g.dialog.winbtns).length;
- g.dialog.winbtns.width(22 * btnscount);
- },
- _setLeft: function (value)
- {
- if (!this.dialog) return;
- if (value != null)
- this.dialog.css({ left: value });
- },
- _setTop: function (value)
- {
- if (!this.dialog) return;
- if (value != null)
- this.dialog.css({ top: value });
- },
- _setWidth: function (value)
- {
- if (!this.dialog) return;
- if (value >= this._borderX)
- {
- this.dialog.body.width(value - this._borderX);
- }
- },
- _setHeight: function (value)
- {
- var g = this, p = this.options;
- if (!this.dialog) return;
- if (value >= this._borderY)
- {
- var height = value - this._borderY - g.dialog.buttons.outerHeight();
- g.dialog.content.height(height);
- }
- },
- _setShowMax: function (value)
- {
- var g = this, p = this.options;
- if (value)
- {
- if (!g.winmax)
- {
- g.winmax = $('<div class="l-dialog-winbtn l-dialog-max"></div>').appendTo(g.dialog.winbtns)
- .hover(function ()
- {
- if ($(this).hasClass("l-dialog-recover"))
- $(this).addClass("l-dialog-recover-over");
- else
- $(this).addClass("l-dialog-max-over");
- }, function ()
- {
- $(this).removeClass("l-dialog-max-over l-dialog-recover-over");
- }).click(function ()
- {
- if ($(this).hasClass("l-dialog-recover"))
- g.recover();
- else
- g.max();
- });
- }
- }
- else if (g.winmax)
- {
- g.winmax.remove();
- g.winmax = null;
- }
- g._updateBtnsWidth();
- },
- _setShowMin: function (value)
- {
- var g = this, p = this.options;
- if (value)
- {
- if (!g.winmin)
- {
- g.winmin = $('<div class="l-dialog-winbtn l-dialog-min"></div>').appendTo(g.dialog.winbtns)
- .hover(function ()
- {
- $(this).addClass("l-dialog-min-over");
- }, function ()
- {
- $(this).removeClass("l-dialog-min-over");
- }).click(function ()
- {
- g.min();
- });
- l.win.addTask(g);
- }
- }
- else if (g.winmin)
- {
- g.winmin.remove();
- g.winmin = null;
- }
- g._updateBtnsWidth();
- },
- _setShowToggle: function (value)
- {
- var g = this, p = this.options;
- if (value)
- {
- if (!g.wintoggle)
- {
- g.wintoggle = $('<div class="l-dialog-winbtn l-dialog-collapse"></div>').appendTo(g.dialog.winbtns)
- .hover(function ()
- {
- if ($(this).hasClass("l-dialog-toggle-disabled")) return;
- if ($(this).hasClass("l-dialog-extend"))
- $(this).addClass("l-dialog-extend-over");
- else
- $(this).addClass("l-dialog-collapse-over");
- }, function ()
- {
- $(this).removeClass("l-dialog-extend-over l-dialog-collapse-over");
- }).click(function ()
- {
- if ($(this).hasClass("l-dialog-toggle-disabled")) return;
- if (g.wintoggle.hasClass("l-dialog-extend"))
- {
- if (g.trigger('extend') == false) return;
- g.wintoggle.removeClass("l-dialog-extend");
- g.extend();
- g.trigger('extended');
- }
- else
- {
- if (g.trigger('collapse') == false) return;
- g.wintoggle.addClass("l-dialog-extend");
- g.collapse();
- g.trigger('collapseed')
- }
- });
- }
- }
- else if (g.wintoggle)
- {
- g.wintoggle.remove();
- g.wintoggle = null;
- }
- },
- //按下回车
- enter: function ()
- {
- var g = this, p = this.options;
- var isClose;
- if (p.closeWhenEnter != undefined)
- {
- isClose = p.closeWhenEnter;
- }
- else if (p.type == "warn" || p.type == "error" || p.type == "success" || p.type == "question")
- {
- isClose = true;
- }
- if (isClose)
- {
- g.close();
- }
- },
- esc: function ()
- {
- },
- _removeDialog: function ()
- {
- var g = this, p = this.options;
- if (p.showType && p.fixedType)
- {
- g.dialog.animate({ bottom: -1 * p.height }, function ()
- {
- g.dialog.remove();
- });
- } else
- {
- g.dialog.remove();
- }
- },
- close: function ()
- {
- var g = this, p = this.options;
- l.win.removeTask(this);
- g.unmask();
- g._removeDialog();
- $('body').unbind('keydown.dialog');
- },
- _getVisible: function ()
- {
- return this.dialog.is(":visible");
- },
- _setUrl: function (url)
- {
- var g = this, p = this.options;
- p.url = url;
- if (p.load)
- {
- g.dialog.body.html("").load(p.url, function ()
- {
- g.trigger('loaded');
- });
- }
- else if (g.jiframe)
- {
- g.jiframe.attr("src", p.url);
- }
- },
- _setContent: function (content)
- {
- this.dialog.content.html(content);
- },
- _setTitle: function (value)
- {
- var g = this; var p = this.options;
- if (value)
- {
- $(".l-dialog-title", g.dialog).html(value);
- }
- },
- _hideDialog: function ()
- {
- var g = this, p = this.options;
- if (p.showType && p.fixedType)
- {
- g.dialog.animate({ bottom: -1 * p.height }, function ()
- {
- g.dialog.hide();
- });
- } else
- {
- g.dialog.hide();
- }
- },
- hidden: function ()
- {
- var g = this;
- l.win.removeTask(g);
- g.dialog.hide();
- g.unmask();
- },
- show: function ()
- {
- var g = this, p = this.options;
- g.mask();
- if (p.fixedType)
- {
- if (p.showType)
- {
- g.dialog.css({ bottom: -1 * p.height }).addClass("l-dialog-fixed");
- g.dialog.show().animate({ bottom: 0 });
- }
- else
- {
- g.dialog.show().css({ bottom: 0 });
- }
- }
- else
- {
- g.dialog.show();
- }
- //前端显示
- $.ligerui.win.setFront.ligerDefer($.ligerui.win, 100, [g]);
- },
- setUrl: function (url)
- {
- this._setUrl(url);
- },
- _saveStatus: function ()
- {
- var g = this;
- g._width = g.dialog.body.width();
- g._height = g.dialog.body.height();
- var top = 0;
- var left = 0;
- if (!isNaN(parseInt(g.dialog.css('top'))))
- top = parseInt(g.dialog.css('top'));
- if (!isNaN(parseInt(g.dialog.css('left'))))
- left = parseInt(g.dialog.css('left'));
- g._top = top;
- g._left = left;
- },
- _applyDrag: function ()
- {
- var g = this, p = this.options;
- if ($.fn.ligerDrag)
- g.draggable = g.dialog.ligerDrag({ handler: '.l-dialog-title', animate: false,
- onStartDrag: function ()
- {
- l.win.setFront(g);
- },
- onStopDrag: function ()
- {
- if (p.target)
- {
- var triggers1 = l.find($.ligerui.controls.DateEditor);
- var triggers2 = l.find($.ligerui.controls.ComboBox);
- //更新所有下拉选择框的位置
- $($.merge(triggers1, triggers2)).each(function ()
- {
- if (this.updateSelectBoxPosition)
- this.updateSelectBoxPosition();
- });
- }
- g._saveStatus();
- }
- });
- },
- _onReisze: function ()
- {
- var g = this, p = this.options;
- if (p.target)
- {
- var manager = $(p.target).liger();
- if (!manager) manager = $(p.target).find(":first").liger();
- if (!manager) return;
- var contentHeight = g.dialog.content.height();
- var contentWidth = g.dialog.content.width();
- manager.trigger('resize', [{ width: contentWidth, height: contentHeight}]);
- }
- },
- _applyResize: function ()
- {
- var g = this, p = this.options;
- if ($.fn.ligerResizable)
- {
- g.resizable = g.dialog.ligerResizable({
- onStopResize: function (current, e)
- {
- var top = 0;
- var left = 0;
- if (!isNaN(parseInt(g.dialog.css('top'))))
- top = parseInt(g.dialog.css('top'));
- if (!isNaN(parseInt(g.dialog.css('left'))))
- left = parseInt(g.dialog.css('left'));
- if (current.diffLeft)
- {
- g.set({ left: left + current.diffLeft });
- }
- if (current.diffTop)
- {
- g.set({ top: top + current.diffTop });
- }
- if (current.newWidth)
- {
- g.set({ width: current.newWidth });
- g.dialog.body.css({ width: current.newWidth - g._borderX });
- }
- if (current.newHeight)
- {
- g.set({ height: current.newHeight });
- }
- g._onReisze();
- g._saveStatus();
- return false;
- }, animate: false
- });
- }
- },
- _setImage: function ()
- {
- var g = this, p = this.options;
- if (p.type)
- {
- if (p.type == 'success' || p.type == 'donne' || p.type == 'ok')
- {
- $(".l-dialog-image", g.dialog).addClass("l-dialog-image-donne").show();
- g.dialog.content.css({ paddingLeft: 64, paddingBottom: 30 });
- }
- else if (p.type == 'error')
- {
- $(".l-dialog-image", g.dialog).addClass("l-dialog-image-error").show();
- g.dialog.content.css({ paddingLeft: 64, paddingBottom: 30 });
- }
- else if (p.type == 'warn')
- {
- $(".l-dialog-image", g.dialog).addClass("l-dialog-image-warn").show();
- g.dialog.content.css({ paddingLeft: 64, paddingBottom: 30 });
- }
- else if (p.type == 'question')
- {
- $(".l-dialog-image", g.dialog).addClass("l-dialog-image-question").show();
- g.dialog.content.css({ paddingLeft: 64, paddingBottom: 40 });
- }
- }
- }
- });
- l.controls.Dialog.prototype.hide = l.controls.Dialog.prototype.hidden;
- $.ligerDialog.open = function (p)
- {
- return $.ligerDialog(p);
- };
- $.ligerDialog.close = function ()
- {
- var dialogs = l.find(l.controls.Dialog.prototype.__getType());
- for (var i in dialogs)
- {
- var d = dialogs[i];
- d.destroy.ligerDefer(d, 5);
- }
- l.win.unmask();
- };
- $.ligerDialog.show = function (p)
- {
- var dialogs = l.find(l.controls.Dialog.prototype.__getType());
- if (dialogs.length)
- {
- for (var i in dialogs)
- {
- dialogs[i].show();
- return;
- }
- }
- return $.ligerDialog(p);
- };
- $.ligerDialog.hide = function ()
- {
- var dialogs = l.find(l.controls.Dialog.prototype.__getType());
- for (var i in dialogs)
- {
- var d = dialogs[i];
- d.hide();
- }
- };
- $.ligerDialog.tip = function (options)
- {
- options = $.extend({
- showType: 'slide',
- width: 240,
- modal: false,
- height: 100
- }, options || {});
- $.extend(options, {
- fixedType: 'se',
- type: 'none',
- isDrag: false,
- isResize: false,
- showMax: false,
- showToggle: false,
- showMin: false
- });
- return $.ligerDialog.open(options);
- };
- $.ligerDialog.alert = function (content, title, type, callback)
- {
- content = content || "";
- if (typeof (title) == "function")
- {
- callback = title;
- type = null;
- }
- else if (typeof (type) == "function")
- {
- callback = type;
- }
- var btnclick = function (item, Dialog, index)
- {
- Dialog.close();
- if (callback)
- callback(item, Dialog, index);
- };
- p = {
- content: content,
- buttons: [{ text: $.ligerDefaults.DialogString.ok, onclick: btnclick}]
- };
- if (typeof (title) == "string" && title != "") p.title = title;
- if (typeof (type) == "string" && type != "") p.type = type;
- $.extend(p, {
- showMax: false,
- showToggle: false,
- showMin: false
- });
- return $.ligerDialog(p);
- };
- $.ligerDialog.confirm = function (content, title, callback)
- {
- if (typeof (title) == "function")
- {
- callback = title;
- type = null;
- }
- var btnclick = function (item, Dialog)
- {
- Dialog.close();
- if (callback)
- {
- callback(item.type == 'ok');
- }
- };
- p = {
- type: 'question',
- content: content,
- buttons: [{ text: $.ligerDefaults.DialogString.yes, onclick: btnclick, type: 'ok' }, { text: $.ligerDefaults.DialogString.no, onclick: btnclick, type: 'no'}]
- };
- if (typeof (title) == "string" && title != "") p.title = title;
- $.extend(p, {
- showMax: false,
- showToggle: false,
- showMin: false
- });
- return $.ligerDialog(p);
- };
- $.ligerDialog.warning = function (content, title, callback)
- {
- if (typeof (title) == "function")
- {
- callback = title;
- type = null;
- }
- var btnclick = function (item, Dialog)
- {
- Dialog.close();
- if (callback)
- {
- callback(item.type);
- }
- };
- p = {
- type: 'question',
- content: content,
- 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'}]
- };
- if (typeof (title) == "string" && title != "") p.title = title;
- $.extend(p, {
- showMax: false,
- showToggle: false,
- showMin: false
- });
- return $.ligerDialog(p);
- };
- $.ligerDialog.waitting = function (title)
- {
- title = title || $.ligerDefaults.Dialog.waittingMessage;
- return $.ligerDialog.open({ cls: 'l-dialog-waittingdialog', type: 'none', content: '<div style="padding:4px">' + title + '</div>', allowClose: false });
- };
- $.ligerDialog.closeWaitting = function ()
- {
- var dialogs = l.find(l.controls.Dialog);
- for (var i in dialogs)
- {
- var d = dialogs[i];
- if (d.dialog.hasClass("l-dialog-waittingdialog"))
- d.close();
- }
- };
- $.ligerDialog.success = function (content, title, onBtnClick)
- {
- return $.ligerDialog.alert(content, title, 'success', onBtnClick);
- };
- $.ligerDialog.error = function (content, title, onBtnClick)
- {
- return $.ligerDialog.alert(content, title, 'error', onBtnClick);
- };
- $.ligerDialog.warn = function (content, title, onBtnClick)
- {
- return $.ligerDialog.alert(content, title, 'warn', onBtnClick);
- };
- $.ligerDialog.question = function (content, title)
- {
- return $.ligerDialog.alert(content, title, 'question');
- };
- $.ligerDialog.prompt = function (title, value, multi, callback)
- {
- var target = $('<input type="text" class="l-dialog-inputtext"/>');
- if (typeof (multi) == "function")
- {
- callback = multi;
- }
- if (typeof (value) == "function")
- {
- callback = value;
- }
- else if (typeof (value) == "boolean")
- {
- multi = value;
- }
- if (typeof (multi) == "boolean" && multi)
- {
- target = $('<textarea class="l-dialog-textarea"></textarea>');
- }
- if (typeof (value) == "string" || typeof (value) == "int")
- {
- target.val(value);
- }
- var btnclick = function (item, Dialog, index)
- {
- Dialog.close();
- if (callback)
- {
- callback(item.type == 'yes', target.val());
- }
- }
- p = {
- title: title,
- target: target,
- width: 320,
- buttons: [{ text: $.ligerDefaults.DialogString.ok, onclick: btnclick, type: 'yes' }, { text: $.ligerDefaults.DialogString.cancel, onclick: btnclick, type: 'cancel'}]
- };
- return $.ligerDialog(p);
- };
- })(jQuery);/**
- * jQuery ligerUI 1.1.9
- *
- * http://ligerui.com
- *
- * Author daomi 2012 [ gd_star@163.com ]
- *
- */
- (function ($)
- {
- var l = $.ligerui;
- $.fn.ligerDrag = function (options)
- {
- return l.run.call(this, "ligerDrag", arguments,
- {
- idAttrName: 'ligeruidragid', hasElement: false, propertyToElemnt: 'target'
- }
- );
- };
- $.fn.ligerGetDragManager = function ()
- {
- return l.run.call(this, "ligerGetDragManager", arguments,
- {
- idAttrName: 'ligeruidragid', hasElement: false, propertyToElemnt: 'target'
- });
- };
- $.ligerDefaults.Drag = {
- onStartDrag: false,
- onDrag: false,
- onStopDrag: false,
- handler: null,
- //代理 拖动时的主体,可以是'clone'或者是函数,放回jQuery 对象
- proxy: true,
- revert: false,
- animate: true,
- onRevert: null,
- onEndRevert: null,
- //接收区域 jQuery对象或者jQuery选择字符
- receive: null,
- //进入区域
- onDragEnter: null,
- //在区域移动
- onDragOver: null,
- //离开区域
- onDragLeave: null,
- //在区域释放
- onDrop: null,
- disabled: false,
- proxyX: null, //代理相对鼠标指针的位置,如果不设置则对应target的left
- proxyY: null
- };
- l.controls.Drag = function (options)
- {
- l.controls.Drag.base.constructor.call(this, null, options);
- };
- l.controls.Drag.ligerExtend(l.core.UIComponent, {
- __getType: function ()
- {
- return 'Drag';
- },
- __idPrev: function ()
- {
- return 'Drag';
- },
- _render: function ()
- {
- var g = this, p = this.options;
- this.set(p);
- g.cursor = "move";
- g.handler.css('cursor', g.cursor);
- g.handler.bind('mousedown.drag', function (e)
- {
- if (p.disabled) return;
- if (e.button == 2) return;
- g._start.call(g, e);
- }).bind('mousemove.drag', function ()
- {
- if (p.disabled) return;
- g.handler.css('cursor', g.cursor);
- });
- },
- _rendered: function ()
- {
- this.options.target.ligeruidragid = this.id;
- },
- _start: function (e)
- {
- var g = this, p = this.options;
- if (g.reverting) return;
- if (p.disabled) return;
- g.current = {
- target: g.target,
- left: g.target.offset().left,
- top: g.target.offset().top,
- startX: e.pageX || e.screenX,
- startY: e.pageY || e.clientY
- };
- if (g.trigger('startDrag', [g.current, e]) == false) return false;
- g.cursor = "move";
- g._createProxy(p.proxy, e);
- //代理没有创建成功
- if (p.proxy && !g.proxy) return false;
- (g.proxy || g.handler).css('cursor', g.cursor);
- $(document).bind("selectstart.drag", function () { return false; });
- $(document).bind('mousemove.drag', function ()
- {
- g._drag.apply(g, arguments);
- });
- l.draggable.dragging = true;
- $(document).bind('mouseup.drag', function ()
- {
- l.draggable.dragging = false;
- g._stop.apply(g, arguments);
- });
- },
- _drag: function (e)
- {
- var g = this, p = this.options;
- if (!g.current) return;
- var pageX = e.pageX || e.screenX;
- var pageY = e.pageY || e.screenY;
- g.current.diffX = pageX - g.current.startX;
- g.current.diffY = pageY - g.current.startY;
- (g.proxy || g.handler).css('cursor', g.cursor);
- if (g.receive)
- {
- g.receive.each(function (i, obj)
- {
- var receive = $(obj);
- var xy = receive.offset();
- if (pageX > xy.left && pageX < xy.left + receive.width()
- && pageY > xy.top && pageY < xy.top + receive.height())
- {
- if (!g.receiveEntered[i])
- {
- g.receiveEntered[i] = true;
- g.trigger('dragEnter', [obj, g.proxy || g.target, e]);
- }
- else
- {
- g.trigger('dragOver', [obj, g.proxy || g.target, e]);
- }
- }
- else if (g.receiveEntered[i])
- {
- g.receiveEntered[i] = false;
- g.trigger('dragLeave', [obj, g.proxy || g.target, e]);
- }
- });
- }
- if (g.hasBind('drag'))
- {
- if (g.trigger('drag', [g.current, e]) != false)
- {
- g._applyDrag();
- }
- else
- {
- g._removeProxy();
- }
- }
- else
- {
- g._applyDrag();
- }
- },
- _stop: function (e)
- {
- var g = this, p = this.options;
- $(document).unbind('mousemove.drag');
- $(document).unbind('mouseup.drag');
- $(document).unbind("selectstart.drag");
- if (g.receive)
- {
- g.receive.each(function (i, obj)
- {
- if (g.receiveEntered[i])
- {
- g.trigger('drop', [obj, g.proxy || g.target, e]);
- }
- });
- }
- if (g.proxy)
- {
- if (p.revert)
- {
- if (g.hasBind('revert'))
- {
- if (g.trigger('revert', [g.current, e]) != false)
- g._revert(e);
- else
- g._removeProxy();
- }
- else
- {
- g._revert(e);
- }
- }
- else
- {
- g._applyDrag(g.target);
- g._removeProxy();
- }
- }
- g.cursor = 'move';
- g.trigger('stopDrag', [g.current, e]);
- g.current = null;
- g.handler.css('cursor', g.cursor);
- },
- _revert: function (e)
- {
- var g = this;
- g.reverting = true;
- g.proxy.animate({
- left: g.current.left,
- top: g.current.top
- }, function ()
- {
- g.reverting = false;
- g._removeProxy();
- g.trigger('endRevert', [g.current, e]);
- g.current = null;
- });
- },
- _applyDrag: function (applyResultBody)
- {
- var g = this, p = this.options;
- applyResultBody = applyResultBody || g.proxy || g.target;
- var cur = {}, changed = false;
- var noproxy = applyResultBody == g.target;
- if (g.current.diffX)
- {
- if (noproxy || p.proxyX == null)
- cur.left = g.current.left + g.current.diffX;
- else
- cur.left = g.current.startX + p.proxyX + g.current.diffX;
- changed = true;
- }
- if (g.current.diffY)
- {
- if (noproxy || p.proxyY == null)
- cur.top = g.current.top + g.current.diffY;
- else
- cur.top = g.current.startY + p.proxyY + g.current.diffY;
- changed = true;
- }
- if (applyResultBody == g.target && g.proxy && p.animate)
- {
- g.reverting = true;
- applyResultBody.animate(cur, function ()
- {
- g.reverting = false;
- });
- }
- else
- {
- applyResultBody.css(cur);
- }
- },
- _setReceive: function (receive)
- {
- this.receiveEntered = {};
- if (!receive) return;
- if (typeof receive == 'string')
- this.receive = $(receive);
- else
- this.receive = receive;
- },
- _setHandler: function (handler)
- {
- var g = this, p = this.options;
- if (!handler)
- g.handler = $(p.target);
- else
- g.handler = (typeof handler == 'string' ? $(handler, p.target) : handler);
- },
- _setTarget: function (target)
- {
- this.target = $(target);
- },
- _setCursor: function (cursor)
- {
- this.cursor = cursor;
- (this.proxy || this.handler).css('cursor', cursor);
- },
- _createProxy: function (proxy, e)
- {
- if (!proxy) return;
- var g = this, p = this.options;
- if (typeof proxy == 'function')
- {
- g.proxy = proxy.call(this.options.target, g, e);
- }
- else if (proxy == 'clone')
- {
- g.proxy = g.target.clone().css('position', 'absolute');
- g.proxy.appendTo('body');
- }
- else
- {
- g.proxy = $("<div class='l-draggable'></div>");
- g.proxy.width(g.target.width()).height(g.target.height())
- g.proxy.attr("dragid", g.id).appendTo('body');
- }
- g.proxy.css({
- left: p.proxyX == null ? g.current.left : g.current.startX + p.proxyX,
- top: p.proxyY == null ? g.current.top : g.current.startY + p.proxyY
- }).show();
- },
- _removeProxy: function ()
- {
- var g = this;
- if (g.proxy)
- {
- g.proxy.remove();
- g.proxy = null;
- }
- }
- });
- })(jQuery);/**
- * jQuery ligerUI 1.1.9
- *
- * http://ligerui.com
- *
- * Author daomi 2012 [ gd_star@163.com ]
- *
- */
- (function ($)
- {
- $.fn.ligerEasyTab = function ()
- {
- return $.ligerui.run.call(this, "ligerEasyTab", arguments);
- };
- $.fn.ligerGetEasyTabManager = function ()
- {
- return $.ligerui.run.call(this, "ligerGetEasyTabManager", arguments);
- };
- $.ligerDefaults.EasyTab = {};
- $.ligerMethos.EasyTab = {};
- $.ligerui.controls.EasyTab = function (element, options)
- {
- $.ligerui.controls.EasyTab.base.constructor.call(this, element, options);
- };
- $.ligerui.controls.EasyTab.ligerExtend($.ligerui.core.UIComponent, {
- __getType: function ()
- {
- return 'EasyTab';
- },
- __idPrev: function ()
- {
- return 'EasyTab';
- },
- _extendMethods: function ()
- {
- return $.ligerMethos.EasyTab;
- },
- _render: function ()
- {
- var g = this, p = this.options;
- g.tabs = $(this.element);
- g.tabs.addClass("l-easytab");
- var selectedIndex = 0;
- if ($("> div[lselected=true]", g.tabs).length > 0)
- selectedIndex = $("> div", g.tabs).index($("> div[lselected=true]", g.tabs));
- g.tabs.ul = $('<ul class="l-easytab-header"></ul>');
- $("> div", g.tabs).each(function (i, box)
- {
- var li = $('<li><span></span></li>');
- if (i == selectedIndex)
- $("span", li).addClass("l-selected");
- if ($(box).attr("title"))
- $("span", li).html($(box).attr("title"));
- g.tabs.ul.append(li);
- if (!$(box).hasClass("l-easytab-panelbox")) $(box).addClass("l-easytab-panelbox");
- });
- g.tabs.ul.prependTo(g.tabs);
- //init
- $(".l-easytab-panelbox:eq(" + selectedIndex + ")", g.tabs).show().siblings(".l-easytab-panelbox").hide();
- //add even
- $("> ul:first span", g.tabs).click(function ()
- {
- if ($(this).hasClass("l-selected")) return;
- var i = $("> ul:first span", g.tabs).index(this);
- $(this).addClass("l-selected").parent().siblings().find("span.l-selected").removeClass("l-selected");
- $(".l-easytab-panelbox:eq(" + i + ")", g.tabs).show().siblings(".l-easytab-panelbox").hide();
- }).not("l-selected").hover(function ()
- {
- $(this).addClass("l-over");
- }, function ()
- {
- $(this).removeClass("l-over");
- });
- g.set(p);
- }
- });
- })(jQuery);/**
- * jQuery ligerUI 1.1.9
- *
- * http://ligerui.com
- *
- * Author daomi 2012 [ gd_star@163.com ]
- *
- */
- (function ($)
- {
- $.fn.ligerFilter = function ()
- {
- return $.ligerui.run.call(this, "ligerFilter", arguments);
- };
- $.fn.ligerGetFilterManager = function ()
- {
- return $.ligerui.run.call(this, "ligerGetFilterManager", arguments);
- };
- $.ligerDefaults.Filter = {
- //字段列表
- fields: [],
- //字段类型 - 运算符 的对应关系
- operators: {},
- //自定义输入框(如下拉框、日期)
- editors: {}
- };
- $.ligerDefaults.FilterString = {
- strings: {
- "and": "并且",
- "or": "或者",
- "equal": "相等",
- "notequal": "不相等",
- "startwith": "以..开始",
- "endwith": "以..结束",
- "like": "相似",
- "greater": "大于",
- "greaterorequal": "大于或等于",
- "less": "小于",
- "lessorequal": "小于或等于",
- "in": "包括在...",
- "notin": "不包括...",
- "addgroup": "增加分组",
- "addrule": "增加条件",
- "deletegroup": "删除分组"
- }
- };
- $.ligerDefaults.Filter.operators['string'] =
- $.ligerDefaults.Filter.operators['text'] =
- ["equal", "notequal", "startwith", "endwith", "like", "greater", "greaterorequal", "less", "lessorequal", "in", "notin"];
- $.ligerDefaults.Filter.operators['number'] =
- $.ligerDefaults.Filter.operators['int'] =
- $.ligerDefaults.Filter.operators['float'] =
- $.ligerDefaults.Filter.operators['date'] =
- ["equal", "notequal", "greater", "greaterorequal", "less", "lessorequal", "in", "notin"];
- $.ligerDefaults.Filter.editors['string'] =
- {
- create: function (container, field)
- {
- var input = $("<input type='text'/>");
- container.append(input);
- input.ligerTextBox(field.editor.options || {});
- return input;
- },
- setValue: function (input, value)
- {
- input.val(value);
- },
- getValue: function (input)
- {
- return input.liger('option', 'value');
- },
- destroy: function (input)
- {
- input.liger('destroy');
- }
- };
- $.ligerDefaults.Filter.editors['date'] =
- {
- create: function (container, field)
- {
- var input = $("<input type='text'/>");
- container.append(input);
- input.ligerDateEditor(field.editor.options || {});
- return input;
- },
- setValue: function (input, value)
- {
- input.liger('option', 'value', value);
- },
- getValue: function (input, field)
- {
- return input.liger('option', 'value');
- },
- destroy: function (input)
- {
- input.liger('destroy');
- }
- };
- $.ligerDefaults.Filter.editors['number'] =
- {
- create: function (container, field)
- {
- var input = $("<input type='text'/>");
- container.append(input);
- var options = {
- minValue: field.editor.minValue,
- maxValue: field.editor.maxValue
- };
- input.ligerSpinner($.extend(options, field.editor.options || {}));
- return input;
- },
- setValue: function (input, value)
- {
- input.val(value);
- },
- getValue: function (input, field)
- {
- var isInt = field.editor.type == "int";
- if (isInt)
- return parseInt(input.val(), 10);
- else
- return parseFloat(input.val());
- },
- destroy: function (input)
- {
- input.liger('destroy');
- }
- };
- $.ligerDefaults.Filter.editors['combobox'] =
- {
- create: function (container, field)
- {
- var input = $("<input type='text'/>");
- container.append(input);
- var options = {
- data: field.data,
- slide: false,
- valueField: field.editor.valueField || field.editor.valueColumnName,
- textField: field.editor.textField || field.editor.displayColumnName
- };
- $.extend(options, field.editor.options || {});
- input.ligerComboBox(options);
- return input;
- },
- setValue: function (input, value)
- {
- input.liger('option', 'value', value);
- },
- getValue: function (input)
- {
- return input.liger('option', 'value');
- },
- destroy: function (input)
- {
- input.liger('destroy');
- }
- };
- //过滤器组件
- $.ligerui.controls.Filter = function (element, options)
- {
- $.ligerui.controls.Filter.base.constructor.call(this, element, options);
- };
- $.ligerui.controls.Filter.ligerExtend($.ligerui.core.UIComponent, {
- __getType: function ()
- {
- return 'Filter'
- },
- __idPrev: function ()
- {
- return 'Filter';
- },
- _init: function ()
- {
- $.ligerui.controls.Filter.base._init.call(this);
- },
- _render: function ()
- {
- var g = this, p = this.options;
- g.set(p);
- //事件:增加分组
- $("#" + g.id + " .addgroup").live('click', function ()
- {
- var jtable = $(this).parent().parent().parent().parent();
- g.addGroup(jtable);
- });
- //事件:删除分组
- $("#" + g.id + " .deletegroup").live('click', function ()
- {
- var jtable = $(this).parent().parent().parent().parent();
- g.deleteGroup(jtable);
- });
- //事件:增加条件
- $("#" + g.id + " .addrule").live('click', function ()
- {
- var jtable = $(this).parent().parent().parent().parent();
- g.addRule(jtable);
- });
- //事件:删除条件
- $("#" + g.id + " .deleterole").live('click', function ()
- {
- var rulerow = $(this).parent().parent();
- g.deleteRule(rulerow);
- });
- },
- //设置字段列表
- _setFields: function (fields)
- {
- var g = this, p = this.options;
- if (g.group) g.group.remove();
- g.group = $(g._bulidGroupTableHtml()).appendTo(g.element);
- },
- //输入框列表
- editors: {},
- //输入框计算器
- editorCounter: 0,
- //增加分组
- //@parm [jgroup] jQuery对象(主分组的table dom元素)
- addGroup: function (jgroup)
- {
- var g = this, p = this.options;
- jgroup = $(jgroup || g.group);
- var lastrow = $(">tbody:first > tr:last", jgroup);
- var groupHtmlArr = [];
- groupHtmlArr.push('<tr class="l-filter-rowgroup"><td class="l-filter-cellgroup" colSpan="4">');
- var altering = !jgroup.hasClass("l-filter-group-alt");
- groupHtmlArr.push(g._bulidGroupTableHtml(altering, true));
- groupHtmlArr.push('</td></tr>');
- var row = $(groupHtmlArr.join(''));
- lastrow.before(row);
- return row.find("table:first");
- },
- //删除分组
- deleteGroup: function (group)
- {
- var g = this, p = this.options;
- $("td.l-filter-value", group).each(function ()
- {
- var rulerow = $(this).parent();
- $("select.fieldsel", rulerow).unbind();
- g.removeEditor(rulerow);
- });
- $(group).parent().parent().remove();
- },
- //删除编辑器
- removeEditor: function (rulerow)
- {
- var g = this, p = this.options;
- var type = $(rulerow).attr("editortype");
- var id = $(rulerow).attr("editorid");
- var editor = g.editors[id];
- if (editor) p.editors[type].destroy(editor);
- $("td.l-filter-value:first", rulerow).html("");
- },
- //设置规则
- //@parm [group] 分组数据
- //@parm [jgruop] 分组table dom jQuery对象
- setData: function (group, jgroup)
- {
- var g = this, p = this.options;
- jgroup = jgroup || g.group;
- var lastrow = $(">tbody:first > tr:last", jgroup);
- jgroup.find(">tbody:first > tr").not(lastrow).remove();
- $("select:first", lastrow).val(group.op);
- if (group.rules)
- {
- $(group.rules).each(function ()
- {
- var rulerow = g.addRule(jgroup);
- rulerow.attr("fieldtype", this.type || "string");
- $("select.opsel", rulerow).val(this.op);
- $("select.fieldsel", rulerow).val(this.field).trigger('change');
- var editorid = rulerow.attr("editorid");
- if (editorid && g.editors[editorid])
- {
- var field = g.getField(this.field);
- p.editors[field.editor.type].setValue(g.editors[editorid], this.value, field);
- }
- else
- {
- $(":text", rulerow).val(this.value);
- }
- });
- }
- if (group.groups)
- {
- $(group.groups).each(function ()
- {
- var subjgroup = g.addGroup(jgroup);
- g.setData(this, subjgroup);
- });
- }
- },
- //增加一个条件
- //@parm [jgroup] 分组的jQuery对象
- addRule: function (jgroup)
- {
- var g = this, p = this.options;
- jgroup = jgroup || g.group;
- var lastrow = $(">tbody:first > tr:last", jgroup);
- var rulerow = $(g._bulidRuleRowHtml());
- lastrow.before(rulerow);
- if (p.fields.length)
- {
- //如果第一个字段启用了自定义输入框
- g.appendEditor(rulerow, p.fields[0]);
- }
- //事件:字段列表改变时
- $("select.fieldsel", rulerow).bind('change', function ()
- {
- var jopsel = $(this).parent().next().find("select:first");
- var fieldName = $(this).val();
- var field = g.getField(fieldName);
- //字段类型处理
- var fieldType = field.type || "string";
- var oldFieldtype = rulerow.attr("fieldtype");
- if (fieldType != oldFieldtype)
- {
- jopsel.html(g._bulidOpSelectOptionsHtml(fieldType));
- rulerow.attr("fieldtype", fieldType);
- }
- //当前的编辑器
- var editorType = null;
- //上一次的编辑器
- var oldEditorType = rulerow.attr("editortype");
- if (g.enabledEditor(field)) editorType = field.editor.type;
- if (oldEditorType)
- {
- //如果存在旧的输入框
- g.removeEditor(rulerow);
- }
- if (editorType)
- {
- //如果当前选择的字段定义了输入框
- g.appendEditor(rulerow, field);
- } else
- {
- rulerow.removeAttr("editortype").removeAttr("editorid");
- $("td.l-filter-value:first", rulerow).html('<input type="text" class="valtxt" />');
- }
- });
- return rulerow;
- },
- //删除一个条件
- deleteRule: function (rulerow)
- {
- $("select.fieldsel", rulerow).unbind();
- this.removeEditor(rulerow);
- $(rulerow).remove();
- },
- //附加一个输入框
- appendEditor: function (rulerow, field)
- {
- var g = this, p = this.options;
- if (g.enabledEditor(field))
- {
- var cell = $("td.l-filter-value:first", rulerow).html("");
- var editor = p.editors[field.editor.type];
- g.editors[++g.editorCounter] = editor.create(cell, field);
- rulerow.attr("editortype", field.editor.type).attr("editorid", g.editorCounter);
- }
- },
- //获取分组数据
- getData: function (group)
- {
- var g = this, p = this.options;
- group = group || g.group;
- var groupData = {};
- $("> tbody > tr", group).each(function (i, row)
- {
- var rowlast = $(row).hasClass("l-filter-rowlast");
- var rowgroup = $(row).hasClass("l-filter-rowgroup");
- if (rowgroup)
- {
- var groupTable = $("> td:first > table:first", row);
- if (groupTable.length)
- {
- if (!groupData.groups) groupData.groups = [];
- groupData.groups.push(g.getData(groupTable));
- }
- }
- else if (rowlast)
- {
- groupData.op = $(".groupopsel:first", row).val();
- }
- else
- {
- var fieldName = $("select.fieldsel:first", row).val();
- var field = g.getField(fieldName);
- var op = $(".opsel:first", row).val();
- var value = g._getRuleValue(row, field);
- var type = $(row).attr("fieldtype") || "string";
- if (!groupData.rules) groupData.rules = [];
- groupData.rules.push({
- field: fieldName, op: op, value: value, type: type
- });
- }
- });
- return groupData;
- },
- _getRuleValue: function (rulerow, field)
- {
- var g = this, p = this.options;
- var editorid = $(rulerow).attr("editorid");
- var editortype = $(rulerow).attr("editortype");
- var editor = g.editors[editorid];
- if (editor)
- return p.editors[editortype].getValue(editor, field);
- return $(".valtxt:first", rulerow).val();
- },
- //判断某字段是否启用自定义的输入框
- enabledEditor: function (field)
- {
- var g = this, p = this.options;
- if (!field.editor || !field.editor.type) return false;
- return (field.editor.type in p.editors);
- },
- //根据fieldName 获取 字段
- getField: function (fieldname)
- {
- var g = this, p = this.options;
- for (var i = 0, l = p.fields.length; i < l; i++)
- {
- var field = p.fields[i];
- if (field.name == fieldname) return field;
- }
- return null;
- },
- //获取一个分组的html
- _bulidGroupTableHtml: function (altering, allowDelete)
- {
- var g = this, p = this.options;
- var tableHtmlArr = [];
- tableHtmlArr.push('<table cellpadding="0" cellspacing="0" border="0" class="l-filter-group');
- if (altering)
- tableHtmlArr.push(' l-filter-group-alt');
- tableHtmlArr.push('"><tbody>');
- tableHtmlArr.push('<tr class="l-filter-rowlast"><td class="l-filter-rowlastcell" align="right" colSpan="4">');
- //and or
- tableHtmlArr.push('<select class="groupopsel">');
- tableHtmlArr.push('<option value="and">' + p.strings['and'] + '</option>');
- tableHtmlArr.push('<option value="or">' + p.strings['or'] + '</option>');
- tableHtmlArr.push('</select>');
- //add group
- tableHtmlArr.push('<input type="button" value="' + p.strings['addgroup'] + '" class="addgroup">');
- //add rule
- tableHtmlArr.push('<input type="button" value="' + p.strings['addrule'] + '" class="addrule">');
- if (allowDelete)
- tableHtmlArr.push('<input type="button" value="' + p.strings['deletegroup'] + '" class="deletegroup">');
- tableHtmlArr.push('</td></tr>');
- tableHtmlArr.push('</tbody></table>');
- return tableHtmlArr.join('');
- },
- //获取字段值规则的html
- _bulidRuleRowHtml: function (fields)
- {
- var g = this, p = this.options;
- fields = fields || p.fields;
- var rowHtmlArr = [];
- var fieldType = fields[0].type || "string";
- rowHtmlArr.push('<tr fieldtype="' + fieldType + '"><td class="l-filter-column">');
- rowHtmlArr.push('<select class="fieldsel">');
- for (var i = 0, l = fields.length; i < l; i++)
- {
- var field = fields[i];
- rowHtmlArr.push('<option value="' + field.name + '"');
- if (i == 0) rowHtmlArr.push(" selected ");
- rowHtmlArr.push('>');
- rowHtmlArr.push(field.display);
- rowHtmlArr.push('</option>');
- }
- rowHtmlArr.push("</select>");
- rowHtmlArr.push('</td>');
- rowHtmlArr.push('<td class="l-filter-op">');
- rowHtmlArr.push('<select class="opsel">');
- rowHtmlArr.push(g._bulidOpSelectOptionsHtml(fieldType));
- rowHtmlArr.push('</select>');
- rowHtmlArr.push('</td>');
- rowHtmlArr.push('<td class="l-filter-value">');
- rowHtmlArr.push('<input type="text" class="valtxt" />');
- rowHtmlArr.push('</td>');
- rowHtmlArr.push('<td>');
- rowHtmlArr.push('<div class="l-icon-cross deleterole"></div>');
- rowHtmlArr.push('</td>');
- rowHtmlArr.push('</tr>');
- return rowHtmlArr.join('');
- },
- //获取一个运算符选择框的html
- _bulidOpSelectOptionsHtml: function (fieldType)
- {
- var g = this, p = this.options;
- var ops = p.operators[fieldType];
- var opHtmlArr = [];
- for (var i = 0, l = ops.length; i < l; i++)
- {
- var op = ops[i];
- opHtmlArr[opHtmlArr.length] = '<option value="' + op + '">';
- opHtmlArr[opHtmlArr.length] = p.strings[op];
- opHtmlArr[opHtmlArr.length] = '</option>';
- }
- return opHtmlArr.join('');
- }
- });
- })(jQuery);/**
- * jQuery ligerUI 1.1.9
- *
- * http://ligerui.com
- *
- * Author daomi 2012 [ gd_star@163.com ]
- *
- */
- (function ($)
- {
- $.fn.ligerForm = function ()
- {
- return $.ligerui.run.call(this, "ligerForm", arguments);
- };
- $.ligerDefaults = $.ligerDefaults || {};
- $.ligerDefaults.Form = {
- //控件宽度
- inputWidth: 180,
- //标签宽度
- labelWidth: 90,
- //间隔宽度
- space: 40,
- rightToken: ':',
- //标签对齐方式
- labelAlign: 'left',
- //控件对齐方式
- align: 'left',
- //字段
- fields: [],
- //创建的表单元素是否附加ID
- appendID: true,
- //生成表单元素ID的前缀
- prefixID: "",
- //json解析函数
- toJSON: $.ligerui.toJSON
- };
- //@description 默认表单编辑器构造器扩展(如果创建的表单效果不满意 建议重载)
- //@param {jinput} 表单元素jQuery对象 比如input、select、textarea
- $.ligerDefaults.Form.editorBulider = function (jinput)
- {
- //这里this就是form的ligerui对象
- var g = this, p = this.options;
- var inputOptions = {};
- if (p.inputWidth) inputOptions.width = p.inputWidth;
- if (jinput.is("select"))
- {
- jinput.ligerComboBox(inputOptions);
- }
- else if (jinput.is(":text") || jinput.is(":password"))
- {
- var ltype = jinput.attr("ltype");
- switch (ltype)
- {
- case "select":
- case "combobox":
- jinput.ligerComboBox(inputOptions);
- break;
- case "spinner":
- jinput.ligerSpinner(inputOptions);
- break;
- case "date":
- jinput.ligerDateEditor(inputOptions);
- break;
- case "float":
- case "number":
- inputOptions.number = true;
- jinput.ligerTextBox(inputOptions);
- break;
- case "int":
- case "digits":
- inputOptions.digits = true;
- default:
- jinput.ligerTextBox(inputOptions);
- break;
- }
- }
- else if (jinput.is(":radio"))
- {
- jinput.ligerRadio(inputOptions);
- }
- else if (jinput.is(":checkbox"))
- {
- jinput.ligerCheckBox(inputOptions);
- }
- else if (jinput.is("textarea"))
- {
- jinput.addClass("l-textarea");
- }
- }
- //表单组件
- $.ligerui.controls.Form = function (element, options)
- {
- $.ligerui.controls.Form.base.constructor.call(this, element, options);
- };
- $.ligerui.controls.Form.ligerExtend($.ligerui.core.UIComponent, {
- __getType: function ()
- {
- return 'Form'
- },
- __idPrev: function ()
- {
- return 'Form';
- },
- _init: function ()
- {
- $.ligerui.controls.Form.base._init.call(this);
- },
- _render: function ()
- {
- var g = this, p = this.options;
- var jform = $(this.element);
- //自动创建表单
- if (p.fields && p.fields.length)
- {
- if (!jform.hasClass("l-form"))
- jform.addClass("l-form");
- var out = [];
- var appendULStartTag = false;
- $(p.fields).each(function (index, field)
- {
- var name = field.name || field.id;
- if (!name) return;
- if (field.type == "hidden")
- {
- out.push('<input type="hidden" id="' + name + '" name="' + name + '" />');
- return;
- }
- var newLine = field.renderToNewLine || field.newline;
- if (newLine == null) newLine = true;
- if (field.merge) newLine = false;
- if (field.group) newLine = true;
- if (newLine)
- {
- if (appendULStartTag)
- {
- out.push('</ul>');
- appendULStartTag = false;
- }
- if (field.group)
- {
- out.push('<div class="l-group');
- if (field.groupicon)
- out.push(' l-group-hasicon');
- out.push('">');
- if (field.groupicon)
- out.push('<img src="' + field.groupicon + '" />');
- out.push('<span>' + field.group + '</span></div>');
- }
- out.push('<ul>');
- appendULStartTag = true;
- }
- //append label
- out.push(g._buliderLabelContainer(field));
- //append input
- out.push(g._buliderControlContainer(field));
- //append space
- out.push(g._buliderSpaceContainer(field));
- });
- if (appendULStartTag)
- {
- out.push('</ul>');
- appendULStartTag = false;
- }
- jform.append(out.join(''));
- }
- //生成ligerui表单样式
- $("input,select,textarea", jform).each(function ()
- {
- p.editorBulider.call(g, $(this));
- });
- },
- //标签部分
- _buliderLabelContainer: function (field)
- {
- var g = this, p = this.options;
- var label = field.label || field.display;
- var labelWidth = field.labelWidth || field.labelwidth || p.labelWidth;
- var labelAlign = field.labelAlign || p.labelAlign;
- if (label) label += p.rightToken;
- var out = [];
- out.push('<li style="');
- if (labelWidth)
- {
- out.push('width:' + labelWidth + 'px;');
- }
- if (labelAlign)
- {
- out.push('text-align:' + labelAlign + ';');
- }
- out.push('">');
- if (label)
- {
- out.push(label);
- }
- out.push('</li>');
- return out.join('');
- },
- //控件部分
- _buliderControlContainer: function (field)
- {
- var g = this, p = this.options;
- var width = field.width || p.inputWidth;
- var align = field.align || field.textAlign || field.textalign || p.align;
- var out = [];
- out.push('<li style="');
- if (width)
- {
- out.push('width:' + width + 'px;');
- }
- if (align)
- {
- out.push('text-align:' + align + ';');
- }
- out.push('">');
- out.push(g._buliderControl(field));
- out.push('</li>');
- return out.join('');
- },
- //间隔部分
- _buliderSpaceContainer: function (field)
- {
- var g = this, p = this.options;
- var spaceWidth = field.space || field.spaceWidth || p.space;
- var out = [];
- out.push('<li style="');
- if (spaceWidth)
- {
- out.push('width:' + spaceWidth + 'px;');
- }
- out.push('">');
- out.push('</li>');
- return out.join('');
- },
- _buliderControl: function (field)
- {
- var g = this, p = this.options;
- var width = field.width || p.inputWidth;
- var name = field.name || field.id;
- var out = [];
- if (field.comboboxName && field.type == "select")
- {
- out.push('<input type="hidden" id="' + p.prefixID + name + '" name="' + name + '" />');
- }
- if (field.textarea || field.type == "textarea")
- {
- out.push('<textarea ');
- }
- else if (field.type == "checkbox")
- {
- out.push('<input type="checkbox" ');
- }
- else if (field.type == "radio")
- {
- out.push('<input type="radio" ');
- }
- else if (field.type == "password")
- {
- out.push('<input type="password" ');
- }
- else
- {
- out.push('<input type="text" ');
- }
- if (field.cssClass)
- {
- out.push('class="' + field.cssClass + '" ');
- }
- if (field.type)
- {
- out.push('ltype="' + field.type + '" ');
- }
- if (field.attr)
- {
- for (var attrp in field.attr)
- {
- out.push(attrp + '="' + field.attr[attrp] + '" ');
- }
- }
- if (field.comboboxName && field.type == "select")
- {
- out.push('name="' + field.comboboxName + '"');
- if (p.appendID)
- {
- out.push(' id="' + p.prefixID + field.comboboxName + '" ');
- }
- }
- else
- {
- out.push('name="' + name + '"');
- if (p.appendID)
- {
- out.push(' id="' + name + '" ');
- }
- }
- //参数
- var fieldOptions = $.extend({
- width: width - 2
- }, field.options || {});
- out.push(" ligerui='" + p.toJSON(fieldOptions) + "' ");
- //验证参数
- if (field.validate)
- {
- out.push(" validate='" + p.toJSON(field.validate) + "' ");
- }
- out.push(' />');
- return out.join('');
- }
- });
- })(jQuery);/**
- * jQuery ligerUI 1.1.9
- *
- * http://ligerui.com
- *
- * Author daomi 2012 [ gd_star@163.com ]
- *
- */
- (function ($)
- {
- var l = $.ligerui;
- $.fn.ligerGrid = function (options)
- {
- return $.ligerui.run.call(this, "ligerGrid", arguments);
- };
- $.fn.ligerGetGridManager = function ()
- {
- return $.ligerui.run.call(this, "ligerGetGridManager", arguments);
- };
- $.ligerDefaults.Grid = {
- title: null,
- width: 'auto', //宽度值
- height: 'auto', //宽度值
- columnWidth: null, //默认列宽度
- resizable: true, //table是否可伸缩
- url: false, //ajax url
- usePager: true, //是否分页
- page: 1, //默认当前页
- pageSize: 10, //每页默认的结果数
- pageSizeOptions: [10, 20, 30, 40, 50], //可选择设定的每页结果数
- parms: [], //提交到服务器的参数
- columns: [], //数据源
- minColToggle: 1, //最小显示的列
- dataType: 'server', //数据源:本地(local)或(server),本地是将读取p.data。不需要配置,取决于设置了data或是url
- dataAction: 'server', //提交数据的方式:本地(local)或(server),选择本地方式时将在客服端分页、排序。
- showTableToggleBtn: false, //是否显示'显示隐藏Grid'按钮
- switchPageSizeApplyComboBox: false, //切换每页记录数是否应用ligerComboBox
- allowAdjustColWidth: true, //是否允许调整列宽
- checkbox: false, //是否显示复选框
- allowHideColumn: true, //是否显示'切换列层'按钮
- enabledEdit: false, //是否允许编辑
- isScroll: true, //是否滚动
- onDragCol: null, //拖动列事件
- onToggleCol: null, //切换列事件
- onChangeSort: null, //改变排序事件
- onSuccess: null, //成功获取服务器数据的事件
- onDblClickRow: null, //双击行事件
- onSelectRow: null, //选择行事件
- onUnSelectRow: null, //取消选择行事件
- onBeforeCheckRow: null, //选择前事件,可以通过return false阻止操作(复选框)
- onCheckRow: null, //选择事件(复选框)
- onBeforeCheckAllRow: null, //选择前事件,可以通过return false阻止操作(复选框 全选/全不选)
- onCheckAllRow: null, //选择事件(复选框 全选/全不选)
- onBeforeShowData: null, //显示数据前事件,可以通过reutrn false阻止操作
- onAfterShowData: null, //显示完数据事件
- onError: null, //错误事件
- onSubmit: null, //提交前事件
- dateFormat: 'yyyy-MM-dd', //默认时间显示格式
- InWindow: true, //是否以窗口的高度为准 height设置为百分比时可用
- statusName: '__status', //状态名
- method: 'post', //提交方式
- async: true,
- fixedCellHeight: true, //是否固定单元格的高度
- heightDiff: 0, //高度补差,当设置height:100%时,可能会有高度的误差,可以通过这个属性调整
- cssClass: null, //类名
- root: 'Rows', //数据源字段名
- record: 'Total', //数据源记录数字段名
- pageParmName: 'page', //页索引参数名,(提交给服务器)
- pagesizeParmName: 'pagesize', //页记录数参数名,(提交给服务器)
- sortnameParmName: 'sortname', //页排序列名(提交给服务器)
- sortorderParmName: 'sortorder', //页排序方向(提交给服务器)
- onReload: null, //刷新事件,可以通过return false来阻止操作
- onToFirst: null, //第一页,可以通过return false来阻止操作
- onToPrev: null, //上一页,可以通过return false来阻止操作
- onToNext: null, //下一页,可以通过return false来阻止操作
- onToLast: null, //最后一页,可以通过return false来阻止操作
- allowUnSelectRow: false, //是否允许反选行
- alternatingRow: true, //奇偶行效果
- mouseoverRowCssClass: 'l-grid-row-over',
- enabledSort: true, //是否允许排序
- rowAttrRender: null, //行自定义属性渲染器(包括style,也可以定义)
- groupColumnName: null, //分组 - 列名
- groupColumnDisplay: '分组', //分组 - 列显示名字
- groupRender: null, //分组 - 渲染器
- totalRender: null, //统计行(全部数据)
- delayLoad: false, //初始化时是否不加载
- where: null, //数据过滤查询函数,(参数一 data item,参数二 data item index)
- selectRowButtonOnly: false, //复选框模式时,是否只允许点击复选框才能选择行
- onAfterAddRow: null, //增加行后事件
- onBeforeEdit: null, //编辑前事件
- onBeforeSubmitEdit: null, //验证编辑器结果是否通过
- onAfterEdit: null, //结束编辑后事件
- onLoading: null, //加载时函数
- onLoaded: null, //加载完函数
- onContextmenu: null, //右击事件
- whenRClickToSelect: false, //右击行时是否选中
- contentType: null, //Ajax contentType参数
- checkboxColWidth: 27, //复选框列宽度
- detailColWidth: 29, //明细列宽度
- clickToEdit: true, //是否点击单元格的时候就编辑
- detailToEdit: false, //是否点击明细的时候进入编辑
- onEndEdit: null,
- minColumnWidth: 80,
- tree: null, //treeGrid模式
- isChecked: null, //复选框 初始化函数
- frozen: true, //是否固定列
- frozenDetail: false, //明细按钮是否在固定列中
- frozenCheckbox: true, //复选框按钮是否在固定列中
- detailHeight: 260,
- rownumbers: false, //是否显示行序号
- frozenRownumbers: true, //行序号是否在固定列中
- rownumbersColWidth: 26,
- colDraggable: false, //是否允许表头拖拽
- rowDraggable: false, //是否允许行拖拽
- rowDraggingRender: null,
- autoCheckChildren: true, //是否自动选中子节点
- onRowDragDrop: null, //行拖拽事件
- rowHeight: 22, //行默认的高度
- headerRowHeight: 23, //表头行的高度
- toolbar: null, //工具条,参数同 ligerToolbar的
- headerImg: null //表格头部图标
- };
- $.ligerDefaults.GridString = {
- errorMessage: '发生错误',
- pageStatMessage: '显示从{from}到{to},总 {total} 条 。每页显示:{pagesize}',
- pageTextMessage: 'Page',
- loadingMessage: '加载中...',
- findTextMessage: '查找',
- noRecordMessage: '没有符合条件的记录存在',
- isContinueByDataChanged: '数据已经改变,如果继续将丢失数据,是否继续?',
- cancelMessage: '取消',
- saveMessage: '保存',
- applyMessage: '应用',
- draggingMessage: '{count}行'
- };
- //接口方法扩展
- $.ligerMethos.Grid = $.ligerMethos.Grid || {};
- //排序器扩展
- $.ligerDefaults.Grid.sorters = $.ligerDefaults.Grid.sorters || {};
- //格式化器扩展
- $.ligerDefaults.Grid.formatters = $.ligerDefaults.Grid.formatters || {};
- //编辑器扩展
- $.ligerDefaults.Grid.editors = $.ligerDefaults.Grid.editors || {};
- $.ligerDefaults.Grid.sorters['date'] = function (val1, val2)
- {
- return val1 < val2 ? -1 : val1 > val2 ? 1 : 0;
- };
- $.ligerDefaults.Grid.sorters['int'] = function (val1, val2)
- {
- return parseInt(val1) < parseInt(val2) ? -1 : parseInt(val1) > parseInt(val2) ? 1 : 0;
- };
- $.ligerDefaults.Grid.sorters['float'] = function (val1, val2)
- {
- return parseFloat(val1) < parseFloat(val2) ? -1 : parseFloat(val1) > parseFloat(val2) ? 1 : 0;
- };
- $.ligerDefaults.Grid.sorters['string'] = function (val1, val2)
- {
- return val1.localeCompare(val2);
- };
- $.ligerDefaults.Grid.formatters['date'] = function (value, column)
- {
- function getFormatDate(date, dateformat)
- {
- var g = this, p = this.options;
- if (isNaN(date)) return null;
- var format = dateformat;
- var o = {
- "M+": date.getMonth() + 1,
- "d+": date.getDate(),
- "h+": date.getHours(),
- "m+": date.getMinutes(),
- "s+": date.getSeconds(),
- "q+": Math.floor((date.getMonth() + 3) / 3),
- "S": date.getMilliseconds()
- }
- if (/(y+)/.test(format))
- {
- format = format.replace(RegExp.$1, (date.getFullYear() + "")
- .substr(4 - RegExp.$1.length));
- }
- for (var k in o)
- {
- if (new RegExp("(" + k + ")").test(format))
- {
- format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k]
- : ("00" + o[k]).substr(("" + o[k]).length));
- }
- }
- return format;
- }
- if (!value) return "";
- // /Date(1328423451489)/
- if (typeof (value) == "string" && /^\/Date/.test(value))
- {
- value = value.replace(/^\//, "new ").replace(/\/$/, "");
- eval("value = " + value);
- }
- if (value instanceof Date)
- {
- var format = column.format || this.options.dateFormat || "yyyy-MM-dd";
- return getFormatDate(value, format);
- }
- else
- {
- return value.toString();
- }
- }
- $.ligerDefaults.Grid.editors['date'] =
- {
- create: function (container, editParm)
- {
- var column = editParm.column;
- var input = $("<input type='text'/>");
- container.append(input);
- var options = {};
- var ext = column.editor.p || column.editor.ext;
- if (ext)
- {
- var tmp = typeof (ext) == 'function' ?
- ext(editParm.record, editParm.rowindex, editParm.value, column) : ext;
- $.extend(options, tmp);
- }
- input.ligerDateEditor(options);
-
- //将ligerUI的时间选择插件换成WdatePicker
- $('.l-trigger',container).hide();
- input.addClass("inputText date");
- WdatePicker({el:input,alwaysUseStartDate:true});
- input.blur();
- return input;
- },
- getValue: function (input, editParm)
- {
- return input.liger('option', 'value');
- },
- setValue: function (input, value, editParm)
- {
- input.liger('option', 'value', value);
- },
- resize: function (input, width, height, editParm)
- {
- input.liger('option', 'width', width);
- input.liger('option', 'height', height);
- },
- destroy: function (input, editParm)
- {
- input.liger('destroy');
- }
- };
- $.ligerDefaults.Grid.editors['select'] =
- $.ligerDefaults.Grid.editors['combobox'] =
- {
- create: function (container, editParm)
- {
- var column = editParm.column;
- var input = $("<input type='text'/>");
- container.append(input);
- var options = {
- data: column.editor.data,
- slide: false,
- valueField: column.editor.valueField || column.editor.valueColumnName,
- textField: column.editor.textField || column.editor.displayColumnName
- };
- var ext = column.editor.p || column.editor.ext;
- if (ext)
- {
- var tmp = typeof (ext) == 'function' ?
- ext(editParm.record, editParm.rowindex, editParm.value, column) : ext;
- $.extend(options, tmp);
- }
- input.ligerComboBox(options);
- return input;
- },
- getValue: function (input, editParm)
- {
- return input.liger('option', 'value');
- },
- setValue: function (input, value, editParm)
- {
- input.liger('option', 'value', value);
- },
- resize: function (input, width, height, editParm)
- {
- input.liger('option', 'width', width);
- input.liger('option', 'height', height);
- },
- destroy: function (input, editParm)
- {
- input.liger('destroy');
- }
- };
- $.ligerDefaults.Grid.editors['int'] =
- $.ligerDefaults.Grid.editors['float'] =
- $.ligerDefaults.Grid.editors['spinner'] =
- {
- create: function (container, editParm)
- {
- var column = editParm.column;
- var input = $("<input type='text'/>");
- container.append(input);
- input.css({ border: '#6E90BE' })
- var options = {
- type: column.editor.type == 'float' ? 'float' : 'int'
- };
- if (column.editor.minValue != undefined) options.minValue = column.editor.minValue;
- if (column.editor.maxValue != undefined) options.maxValue = column.editor.maxValue;
- input.ligerSpinner(options);
- return input;
- },
- getValue: function (input, editParm)
- {
- var column = editParm.column;
- var isInt = column.editor.type == "int";
- if (isInt)
- return parseInt(input.val(), 10);
- else
- return parseFloat(input.val());
- },
- setValue: function (input, value, editParm)
- {
- input.val(value);
- },
- resize: function (input, width, height, editParm)
- {
- input.liger('option', 'width', width);
- input.liger('option', 'height', height);
- },
- destroy: function (input, editParm)
- {
- input.liger('destroy');
- }
- };
- $.ligerDefaults.Grid.editors['string'] =
- $.ligerDefaults.Grid.editors['text'] = {
- create: function (container, editParm)
- {
- var input = $("<input type='text' class='l-text-editing'/>");
- container.append(input);
- input.ligerTextBox();
- return input;
- },
- getValue: function (input, editParm)
- {
- return input.val();
- },
- setValue: function (input, value, editParm)
- {
- input.val(value);
- },
- resize: function (input, width, height, editParm)
- {
- input.liger('option', 'width', width);
- input.liger('option', 'height', height);
- },
- destroy: function (input, editParm)
- {
- input.liger('destroy');
- }
- };
- $.ligerDefaults.Grid.editors['chk'] = $.ligerDefaults.Grid.editors['checkbox'] = {
- create: function (container, editParm)
- {
- var input = $("<input type='checkbox' />");
- container.append(input);
- input.ligerCheckBox();
- return input;
- },
- getValue: function (input, editParm)
- {
- return input[0].checked ? 1 : 0;
- },
- setValue: function (input, value, editParm)
- {
- input.val(value ? true : false);
- },
- resize: function (input, width, height, editParm)
- {
- input.liger('option', 'width', width);
- input.liger('option', 'height', height);
- },
- destroy: function (input, editParm)
- {
- input.liger('destroy');
- }
- };
- $.ligerui.controls.Grid = function (element, options)
- {
- $.ligerui.controls.Grid.base.constructor.call(this, element, options);
- };
- $.ligerui.controls.Grid.ligerExtend($.ligerui.core.UIComponent, {
- __getType: function ()
- {
- return '$.ligerui.controls.Grid';
- },
- __idPrev: function ()
- {
- return 'grid';
- },
- _extendMethods: function ()
- {
- return $.ligerMethos.Grid;
- },
- _init: function ()
- {
- $.ligerui.controls.Grid.base._init.call(this);
- var g = this, p = this.options;
- p.dataType = p.url ? "server" : "local";
- if (p.dataType == "local")
- {
- p.data = p.data || [];
- p.dataAction = "local";
- }
- if (p.isScroll == false)
- {
- p.height = 'auto';
- }
- if (!p.frozen)
- {
- p.frozenCheckbox = false;
- p.frozenDetail = false;
- p.frozenRownumbers = false;
- }
- if (p.detailToEdit)
- {
- p.enabledEdit = true;
- p.clickToEdit = false;
- p.detail = {
- height: 'auto',
- onShowDetail: function (record, container, callback)
- {
- $(container).addClass("l-grid-detailpanel-edit");
- g.beginEdit(record, function (rowdata, column)
- {
- var editContainer = $("<div class='l-editbox'></div>");
- editContainer.width(120).height(p.rowHeight + 1);
- editContainer.appendTo(container);
- return editContainer;
- });
- function removeRow()
- {
- $(container).parent().parent().remove();
- g.collapseDetail(record);
- }
- $("<div class='l-clear'></div>").appendTo(container);
- $("<div class='l-button'>" + p.saveMessage + "</div>").appendTo(container).click(function ()
- {
- g.endEdit(record);
- removeRow();
- });
- $("<div class='l-button'>" + p.applyMessage + "</div>").appendTo(container).click(function ()
- {
- g.submitEdit(record);
- });
- $("<div class='l-button'>" + p.cancelMessage + "</div>").appendTo(container).click(function ()
- {
- g.cancelEdit(record);
- removeRow();
- });
- }
- };
- }
- if (p.tree)//启用分页模式
- {
- p.tree.childrenName = p.tree.childrenName || "children";
- p.tree.isParent = p.tree.isParent || function (rowData)
- {
- var exist = p.tree.childrenName in rowData;
- return exist;
- };
- p.tree.isExtend = p.tree.isExtend || function (rowData)
- {
- if ('isextend' in rowData && rowData['isextend'] == false)
- return false;
- return true;
- };
- }
- },
- _render: function ()
- {
- var g = this, p = this.options;
- g.grid = $(g.element);
- g.grid.addClass("l-panel");
- var gridhtmlarr = [];
- gridhtmlarr.push(" <div class='l-panel-header'><span class='l-panel-header-text'></span></div>");
- gridhtmlarr.push(" <div class='l-grid-loading'></div>");
- gridhtmlarr.push(" <div class='l-panel-topbar'></div>");
- gridhtmlarr.push(" <div class='l-panel-bwarp'>");
- gridhtmlarr.push(" <div class='l-panel-body'>");
- gridhtmlarr.push(" <div class='l-grid'>");
- gridhtmlarr.push(" <div class='l-grid-dragging-line'></div>");
- gridhtmlarr.push(" <div class='l-grid-popup'><table cellpadding='0' cellspacing='0'><tbody></tbody></table></div>");
- gridhtmlarr.push(" <div class='l-grid1'>");
- gridhtmlarr.push(" <div class='l-grid-header l-grid-header1'>");
- gridhtmlarr.push(" <div class='l-grid-header-inner'><table class='l-grid-header-table' cellpadding='0' cellspacing='0'><tbody></tbody></table></div>");
- gridhtmlarr.push(" </div>");
- gridhtmlarr.push(" <div class='l-grid-body l-grid-body1'>");
- gridhtmlarr.push(" </div>");
- gridhtmlarr.push(" </div>");
- gridhtmlarr.push(" <div class='l-grid2'>");
- gridhtmlarr.push(" <div class='l-grid-header l-grid-header2'>");
- gridhtmlarr.push(" <div class='l-grid-header-inner'><table class='l-grid-header-table' cellpadding='0' cellspacing='0'><tbody></tbody></table></div>");
- gridhtmlarr.push(" </div>");
- gridhtmlarr.push(" <div class='l-grid-body l-grid-body2 l-scroll'>");
- gridhtmlarr.push(" </div>");
- gridhtmlarr.push(" </div>");
- gridhtmlarr.push(" </div>");
- gridhtmlarr.push(" </div>");
- gridhtmlarr.push(" </div>");
- gridhtmlarr.push(" <div class='l-panel-bar'>");
- gridhtmlarr.push(" <div class='l-panel-bbar-inner'>");
- gridhtmlarr.push(" <div class='l-bar-group l-bar-message'><span class='l-bar-text'></span></div>");
- gridhtmlarr.push(" <div class='l-bar-group l-bar-selectpagesize'></div>");
- gridhtmlarr.push(" <div class='l-bar-separator'></div>");
- gridhtmlarr.push(" <div class='l-bar-group'>");
- gridhtmlarr.push(" <div class='l-bar-button l-bar-btnfirst'><span></span></div>");
- gridhtmlarr.push(" <div class='l-bar-button l-bar-btnprev'><span></span></div>");
- gridhtmlarr.push(" </div>");
- gridhtmlarr.push(" <div class='l-bar-separator'></div>");
- 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>");
- gridhtmlarr.push(" <div class='l-bar-separator'></div>");
- gridhtmlarr.push(" <div class='l-bar-group'>");
- gridhtmlarr.push(" <div class='l-bar-button l-bar-btnnext'><span></span></div>");
- gridhtmlarr.push(" <div class='l-bar-button l-bar-btnlast'><span></span></div>");
- gridhtmlarr.push(" </div>");
- gridhtmlarr.push(" <div class='l-bar-separator'></div>");
- gridhtmlarr.push(" <div class='l-bar-group'>");
- gridhtmlarr.push(" <div class='l-bar-button l-bar-btnload'><span></span></div>");
- gridhtmlarr.push(" </div>");
- gridhtmlarr.push(" <div class='l-bar-separator'></div>");
- gridhtmlarr.push(" <div class='l-clear'></div>");
- gridhtmlarr.push(" </div>");
- gridhtmlarr.push(" </div>");
- g.grid.html(gridhtmlarr.join(''));
- //头部
- g.header = $(".l-panel-header:first", g.grid);
- //主体
- g.body = $(".l-panel-body:first", g.grid);
- //底部工具条
- g.toolbar = $(".l-panel-bar:first", g.grid);
- //显示/隐藏列
- g.popup = $(".l-grid-popup:first", g.grid);
- //加载中
- g.gridloading = $(".l-grid-loading:first", g.grid);
- //调整列宽层
- g.draggingline = $(".l-grid-dragging-line", g.grid);
- //顶部工具栏
- g.topbar = $(".l-panel-topbar:first", g.grid);
- g.gridview = $(".l-grid:first", g.grid);
- g.gridview.attr("id", g.id + "grid");
- g.gridview1 = $(".l-grid1:first", g.gridview);
- g.gridview2 = $(".l-grid2:first", g.gridview);
- //表头
- g.gridheader = $(".l-grid-header:first", g.gridview2);
- //表主体
- g.gridbody = $(".l-grid-body:first", g.gridview2);
- //frozen
- g.f = {};
- //表头
- g.f.gridheader = $(".l-grid-header:first", g.gridview1);
- //表主体
- g.f.gridbody = $(".l-grid-body:first", g.gridview1);
- g.currentData = null;
- g.changedCells = {};
- g.editors = {}; //多编辑器同时存在
- g.editor = { editing: false }; //单编辑器,配置clickToEdit
- if (p.height == "auto")
- {
- g.bind("SysGridHeightChanged", function ()
- {
- if (g.enabledFrozen())
- g.gridview.height(Math.max(g.gridview1.height(), g.gridview2.height()));
- });
- }
- var pc = $.extend({}, p);
- this._bulid();
- this._setColumns(p.columns);
- delete pc['columns'];
- delete pc['data'];
- delete pc['url'];
- g.set(pc);
- if (!p.delayLoad)
- {
- if (p.url)
- g.set({ url: p.url });
- else if (p.data)
- g.set({ data: p.data });
- }
- },
- _setFrozen: function (frozen)
- {
- if (frozen)
- this.grid.addClass("l-frozen");
- else
- this.grid.removeClass("l-frozen");
- },
- _setCssClass: function (value)
- {
- this.grid.addClass(value);
- },
- _setLoadingMessage: function (value)
- {
- this.gridloading.html(value);
- },
- _setHeight: function (h)
- {
- var g = this, p = this.options;
- g.unbind("SysGridHeightChanged");
- if (h == "auto")
- {
- g.bind("SysGridHeightChanged", function ()
- {
- if (g.enabledFrozen())
- g.gridview.height(Math.max(g.gridview1.height(), g.gridview2.height()));
- });
- return;
- }
- if (typeof h == "string" && h.indexOf('%') > 0)
- {
- if (p.inWindow)
- h = $(window).height() * parseFloat(h) * 0.01;
- else
- h = g.grid.parent().height() * parseFloat(h) * 0.01;
- }
- if (p.title) h -= 24;
- if (p.usePager) h -= 32;
- if (p.totalRender) h -= 25;
- if (p.toolbar) h -= g.topbar.outerHeight();
- var gridHeaderHeight = p.headerRowHeight * (g._columnMaxLevel - 1) + p.headerRowHeight - 1;
- h -= gridHeaderHeight;
- if (h > 0)
- {
- g.gridbody.height(h);
- if (h > 18) g.f.gridbody.height(h - 18);
- g.gridview.height(h + gridHeaderHeight);
- }
- },
- _updateFrozenWidth: function ()
- {
- var g = this, p = this.options;
- if (g.enabledFrozen())
- {
- g.gridview1.width(g.f.gridtablewidth);
- var view2width = g.gridview.width() - g.f.gridtablewidth;
- g.gridview2.css({ left: g.f.gridtablewidth });
- if (view2width > 0) g.gridview2.css({ width: view2width });
- }
- },
- _setWidth: function (value)
- {
- var g = this, p = this.options;
- if (g.enabledFrozen()) g._onResize();
- },
- _setUrl: function (value)
- {
- this.options.url = value;
- if (value)
- {
- this.options.dataType = "server";
- this.loadData(true);
- }
- else
- {
- this.options.dataType = "local";
- }
- },
- _setData: function (value)
- {
- this.loadData(this.options.data);
- },
- //刷新数据
- loadData: function (loadDataParm)
- {
- var g = this, p = this.options;
- g.loading = true;
- var clause = null;
- var loadServer = true;
- if (typeof (loadDataParm) == "function")
- {
- clause = loadDataParm;
- loadServer = false;
- }
- else if (typeof (loadDataParm) == "boolean")
- {
- loadServer = loadDataParm;
- }
- else if (typeof (loadDataParm) == "object" && loadDataParm)
- {
- loadServer = false;
- p.dataType = "local";
- p.data = loadDataParm;
- }
- //参数初始化
- if (!p.newPage) p.newPage = 1;
- if (p.dataAction == "server")
- {
- if (!p.sortOrder) p.sortOrder = "asc";
- }
- var param = [];
- if (p.parms)
- {
- if (p.parms.length)
- {
- $(p.parms).each(function ()
- {
- param.push({ name: this.name, value: this.value });
- });
- }
- else if (typeof p.parms == "object")
- {
- for (var name in p.parms)
- {
- param.push({ name: name, value: p.parms[name] });
- }
- }
- }
- if (p.dataAction == "server")
- {
- if (p.usePager)
- {
- param.push({ name: p.pageParmName, value: p.newPage });
- param.push({ name: p.pagesizeParmName, value: p.pageSize });
- }
- if (p.sortName)
- {
- param.push({ name: p.sortnameParmName, value: p.sortName });
- param.push({ name: p.sortorderParmName, value: p.sortOrder });
- }
- };
- $(".l-bar-btnload span", g.toolbar).addClass("l-disabled");
- if (p.dataType == "local")
- {
- g.filteredData = g.data = p.data;
- if (clause)
- g.filteredData[p.root] = g._searchData(g.filteredData[p.root], clause);
- if (p.usePager)
- g.currentData = g._getCurrentPageData(g.filteredData);
- else
- {
- g.currentData = g.filteredData;
- }
- g._showData();
- }
- else if (p.dataAction == "local" && !loadServer)
- {
- if (g.data && g.data[p.root])
- {
- g.filteredData = g.data;
- if (clause)
- g.filteredData[p.root] = g._searchData(g.filteredData[p.root], clause);
- g.currentData = g._getCurrentPageData(g.filteredData);
- g._showData();
- }
- }
- else
- {
- g.loadServerData(param, clause);
- //g.loadServerData.ligerDefer(g, 10, [param, clause]);
- }
- g.loading = false;
- },
- loadServerData: function (param, clause)
- {
- var g = this, p = this.options;
- var ajaxOptions = {
- type: p.method,
- url: p.url,
- data: param,
- async: p.async,
- dataType: 'json',
- beforeSend: function ()
- {
- if (g.hasBind('loading'))
- {
- g.trigger('loading');
- }
- else
- {
- g.toggleLoading(true);
- }
- },
- success: function (data)
- {
- g.trigger('success', [data, g]);
- if (!data || !data[p.root] || !data[p.root].length)
- {
- g.currentData = g.data = {};
- g.currentData[p.root] = g.data[p.root] = [];
- g.currentData[p.record] = g.data[p.record] = 0;
- g._showData();
- return;
- }
- g.data = data;
- if (p.dataAction == "server")
- {
- g.currentData = g.data;
- }
- else
- {
- g.filteredData = g.data;
- if (clause) g.filteredData[p.root] = g._searchData(g.filteredData[p.root], clause);
- if (p.usePager)
- g.currentData = g._getCurrentPageData(g.filteredData);
- else
- g.currentData = g.filteredData;
- }
- g._showData.ligerDefer(g, 10, [g.currentData]);
- },
- complete: function ()
- {
- g.trigger('complete', [g]);
- if (g.hasBind('loaded'))
- {
- g.trigger('loaded', [g]);
- }
- else
- {
- g.toggleLoading.ligerDefer(g, 10, [false]);
- }
- },
- error: function (XMLHttpRequest, textStatus, errorThrown)
- {
- g.currentData = g.data = {};
- g.currentData[p.root] = g.data[p.root] = [];
- g.currentData[p.record] = g.data[p.record] = 0;
- g.toggleLoading.ligerDefer(g, 10, [false]);
- $(".l-bar-btnload span", g.toolbar).removeClass("l-disabled");
- g.trigger('error', [XMLHttpRequest, textStatus, errorThrown]);
- }
- };
- if (p.contentType) ajaxOptions.contentType = p.contentType;
- $.ajax(ajaxOptions);
- },
- toggleLoading: function (show)
- {
- this.gridloading[show ? 'show' : 'hide']();
- },
- _createEditor: function (editor, container, editParm, width, height)
- {
- var editorInput = editor.create(container, editParm);
- if (editor.setValue) editor.setValue(editorInput, editParm.value, editParm);
- if (editor.resize) editor.resize(editorInput, width, height, editParm);
- return editorInput;
- },
- /*
- @description 使一行进入编辑状态
- @param {rowParm} rowindex或者rowdata
- @param {containerBulider} 编辑器填充层构造器
- */
- beginEdit: function (rowParm, containerBulider)
- {
- var g = this, p = this.options;
- if (!p.enabledEdit || p.clickToEdit) return;
- var rowdata = g.getRow(rowParm);
- if (rowdata._editing) return;
- if (g.trigger('beginEdit', { record: rowdata, rowindex: rowdata['__index'] }) == false) return;
- g.editors[rowdata['__id']] = {};
- rowdata._editing = true;
- g.reRender({ rowdata: rowdata });
- containerBulider = containerBulider || function (rowdata, column)
- {
- var cellobj = g.getCellObj(rowdata, column);
- var container = $(cellobj).html("");
- g.setCellEditing(rowdata, column, true);
- return container;
- };
- for (var i = 0, l = g.columns.length; i < l; i++)
- {
- var column = g.columns[i];
- if (!column.name || !column.editor || !column.editor.type || !p.editors[column.editor.type]) continue;
- var editor = p.editors[column.editor.type];
- var editParm = { record: rowdata, value: rowdata[column.name], column: column, rowindex: rowdata['__index'], grid: g };
- var container = containerBulider(rowdata, column);
- var width = container.width(), height = container.height();
- var editorInput = g._createEditor(editor, container, editParm, width, height);
- g.editors[rowdata['__id']][column['__id']] = { editor: editor, input: editorInput, editParm: editParm, container: container };
- }
- g.trigger('afterBeginEdit', { record: rowdata, rowindex: rowdata['__index'] });
- },
- cancelEdit: function (rowParm)
- {
- var g = this;
- if (rowParm == undefined)
- {
- for (var rowid in g.editors)
- {
- g.cancelEdit(rowid);
- }
- }
- else
- {
- var rowdata = g.getRow(rowParm);
- if (!g.editors[rowdata['__id']]) return;
- if (g.trigger('cancelEdit', { record: rowdata, rowindex: rowdata['__index'] }) == false) return;
- for (var columnid in g.editors[rowdata['__id']])
- {
- var o = g.editors[rowdata['__id']][columnid];
- if (o.editor.destroy) o.editor.destroy(o.input, o.editParm);
- }
- delete g.editors[rowdata['__id']];
- delete rowdata['_editing'];
- g.reRender({ rowdata: rowdata });
- }
- },
- addEditRow: function (rowdata)
- {
- this.submitEdit();
- rowdata = this.add(rowdata);
- this.beginEdit(rowdata);
- },
- submitEdit: function (rowParm)
- {
- var g = this, p = this.options;
- if (rowParm == undefined)
- {
- for (var rowid in g.editors)
- {
- g.submitEdit(rowid);
- }
- }
- else
- {
- var rowdata = g.getRow(rowParm);
- var newdata = {};
- if (!g.editors[rowdata['__id']]) return;
- for (var columnid in g.editors[rowdata['__id']])
- {
- var o = g.editors[rowdata['__id']][columnid];
- var column = o.editParm.column;
- if (column.name)
- newdata[column.name] = o.editor.getValue(o.input, o.editParm);
- }
- if (g.trigger('beforeSubmitEdit', { record: rowdata, rowindex: rowdata['__index'], newdata: newdata }) == false)
- return false;
- g.updateRow(rowdata, newdata);
- g.trigger('afterSubmitEdit', { record: rowdata, rowindex: rowdata['__index'], newdata: newdata });
- }
- },
- endEdit: function (rowParm)
- {
- var g = this, p = this.options;
- if (g.editor.editing)
- {
- var o = g.editor;
- g.trigger('sysEndEdit', [g.editor.editParm]);
- g.trigger('endEdit', [g.editor.editParm]);
- if (o.editor.destroy) o.editor.destroy(o.input, o.editParm);
- g.editor.container.remove();
- g.reRender({ rowdata: g.editor.editParm.record, column: g.editor.editParm.column });
- g.trigger('afterEdit', [g.editor.editParm]);
- g.editor = { editing: false };
- }
- else if (rowParm != undefined)
- {
- var rowdata = g.getRow(rowParm);
- if (!g.editors[rowdata['__id']]) return;
- if (g.submitEdit(rowParm) == false) return false;
- for (var columnid in g.editors[rowdata['__id']])
- {
- var o = g.editors[rowdata['__id']][columnid];
- if (o.editor.destroy) o.editor.destroy(o.input, o.editParm);
- }
- delete g.editors[rowdata['__id']];
- delete rowdata['_editing'];
- g.trigger('afterEdit', { record: rowdata, rowindex: rowdata['__index'] });
- }
- else
- {
- for (var rowid in g.editors)
- {
- g.endEdit(rowid);
- }
- }
- },
- setWidth: function (w)
- {
- return this._setWidth(w);
- },
- setHeight: function (h)
- {
- return this._setHeight(h);
- },
- //是否启用复选框列
- enabledCheckbox: function ()
- {
- return this.options.checkbox ? true : false;
- },
- //是否固定列
- enabledFrozen: function ()
- {
- var g = this, p = this.options;
- if (!p.frozen) return false;
- var cols = g.columns || [];
- if (g.enabledDetail() && p.frozenDetail || g.enabledCheckbox() && p.frozenCheckbox
- || p.frozenRownumbers && p.rownumbers) return true;
- for (var i = 0, l = cols.length; i < l; i++)
- {
- if (cols[i].frozen)
- {
- return true;
- }
- }
- this._setFrozen(false);
- return false;
- },
- //是否启用明细编辑
- enabledDetailEdit: function ()
- {
- if (!this.enabledDetail()) return false;
- return this.options.detailToEdit ? true : false;
- },
- //是否启用明细列
- enabledDetail: function ()
- {
- if (this.options.detail && this.options.detail.onShowDetail) return true;
- return false;
- },
- //是否启用分组
- enabledGroup: function ()
- {
- return this.options.groupColumnName ? true : false;
- },
- deleteSelectedRow: function ()
- {
- if (!this.selected) return;
- for (var i in this.selected)
- {
- var o = this.selected[i];
- if (o['__id'] in this.records)
- this._deleteData.ligerDefer(this, 10, [o]);
- }
- this.reRender.ligerDefer(this, 20);
- },
- removeRange: function (rowArr)
- {
- var g = this, p = this.options;
- $.each(rowArr, function ()
- {
- g._removeData(this);
- });
- g.reRender();
- },
- remove: function (rowParm)
- {
- var g = this, p = this.options;
- var rowdata = g.getRow(rowParm);
- g._removeData(rowParm);
- g.reRender();
- },
- deleteRange: function (rowArr)
- {
- var g = this, p = this.options;
- $.each(rowArr, function ()
- {
- g._deleteData(this);
- });
- g.reRender();
- },
- deleteRow: function (rowParm)
- {
- var g = this, p = this.options;
- var rowdata = g.getRow(rowParm);
- if (!rowdata) return;
- g._deleteData(rowdata);
- g.reRender();
- g.isDataChanged = true;
- },
- _deleteData: function (rowParm)
- {
- var g = this, p = this.options;
- var rowdata = g.getRow(rowParm);
- rowdata[p.statusName] = 'delete';
- if (p.tree)
- {
- var children = g.getChildren(rowdata, true);
- if (children)
- {
- for (var i = 0, l = children.length; i < l; i++)
- {
- children[i][p.statusName] = 'delete';
- }
- }
- }
- g.deletedRows = g.deletedRows || [];
- g.deletedRows.push(rowdata);
- g._removeSelected(rowdata);
- },
- /*
- @param {arg} column index、column name、column、单元格
- @param {value} 值
- @param {rowParm} rowindex或者rowdata
- */
- updateCell: function (arg, value, rowParm)
- {
- var g = this, p = this.options;
- var column, cellObj, rowdata;
- if (typeof (arg) == "string") //column name
- {
- for (var i = 0, l = g.columns.length; i < l; i++)
- {
- if (g.columns[i].name == arg)
- {
- g.updateCell(i, value, rowParm);
- }
- }
- return;
- }
- if (typeof (arg) == "number")
- {
- column = g.columns[arg];
- rowdata = g.getRow(rowParm);
- cellObj = g.getCellObj(rowdata, column);
- }
- else if (typeof (arg) == "object" && arg['__id'])
- {
- column = arg;
- rowdata = g.getRow(rowParm);
- cellObj = g.getCellObj(rowdata, column);
- }
- else
- {
- cellObj = arg;
- var ids = cellObj.id.split('|');
- var columnid = ids[ids.length - 1];
- column = g._columns[columnid];
- var row = $(cellObj).parent();
- rowdata = rowdata || g.getRow(row[0]);
- }
- if (value != null && column.name)
- {
- rowdata[column.name] = value;
- if (rowdata[p.statusName] != 'add')
- rowdata[p.statusName] = 'update';
- g.isDataChanged = true;
- }
- g.reRender({ rowdata: rowdata, column: column });
- },
- addRows: function (rowdataArr, neardata, isBefore, parentRowData)
- {
- var g = this, p = this.options;
- $(rowdataArr).each(function ()
- {
- g.addRow(this, neardata, isBefore, parentRowData);
- });
- },
- _createRowid: function ()
- {
- return "r" + (1000 + this.recordNumber);
- },
- _isRowId: function (str)
- {
- return (str in this.records);
- },
- _addNewRecord: function (o, previd, pid)
- {
- var g = this, p = this.options;
- g.recordNumber++;
- o['__id'] = g._createRowid();
- o['__previd'] = previd;
- if (previd && previd != -1)
- {
- var prev = g.records[previd];
- if (prev['__nextid'] && prev['__nextid'] != -1)
- {
- var prevOldNext = g.records[prev['__nextid']];
- if (prevOldNext)
- prevOldNext['__previd'] = o['__id'];
- }
- prev['__nextid'] = o['__id'];
- o['__index'] = prev['__index'] + 1;
- }
- else
- {
- o['__index'] = 0;
- }
- if (p.tree)
- {
- if (pid && pid != -1)
- {
- var parent = g.records[pid];
- o['__pid'] = pid;
- o['__level'] = parent['__level'] + 1;
- }
- else
- {
- o['__pid'] = -1;
- o['__level'] = 1;
- }
- o['__hasChildren'] = o[p.tree.childrenName] ? true : false;
- }
- if (o[p.statusName] != "add")
- o[p.statusName] = "nochanged";
- g.rows[o['__index']] = o;
- g.records[o['__id']] = o;
- return o;
- },
- //将原始的数据转换成适合 grid的行数据
- _getRows: function (data)
- {
- var g = this, p = this.options;
- var targetData = [];
- function load(data)
- {
- if (!data || !data.length) return;
- for (var i = 0, l = data.length; i < l; i++)
- {
- var o = data[i];
- targetData.push(o);
- if (o[p.tree.childrenName])
- {
- load(o[p.tree.childrenName]);
- }
- }
- }
- load(data);
- return targetData;
- },
- _updateGridData: function ()
- {
- var g = this, p = this.options;
- g.recordNumber = 0;
- g.rows = [];
- g.records = {};
- var previd = -1;
- function load(data, pid)
- {
- if (!data || !data.length) return;
- for (var i = 0, l = data.length; i < l; i++)
- {
- var o = data[i];
- g.formatRecord(o);
- if (o[p.statusName] == "delete") continue;
- g._addNewRecord(o, previd, pid);
- previd = o['__id'];
- if (o['__hasChildren'])
- {
- load(o[p.tree.childrenName], o['__id']);
- }
- }
- }
- load(g.currentData[p.root], -1);
- return g.rows;
- },
- _moveData: function (from, to, isAfter)
- {
- var g = this, p = this.options;
- var fromRow = g.getRow(from);
- var toRow = g.getRow(to);
- var fromIndex, toIndex;
- var listdata = g._getParentChildren(fromRow);
- fromIndex = $.inArray(fromRow, listdata);
- listdata.splice(fromIndex, 1);
- listdata = g._getParentChildren(toRow);
- toIndex = $.inArray(toRow, listdata);
- listdata.splice(toIndex + (isAfter ? 1 : 0), 0, fromRow);
- },
- move: function (from, to, isAfter)
- {
- this._moveData(from, to, isAfter);
- this.reRender();
- },
- moveRange: function (rows, to, isAfter)
- {
- for (var i in rows)
- {
- this._moveData(rows[i], to, isAfter);
- }
- this.reRender();
- },
- up: function (rowParm)
- {
- var g = this, p = this.options;
- var rowdata = g.getRow(rowParm);
- var listdata = g._getParentChildren(rowdata);
- var index = $.inArray(rowdata, listdata);
- if (index == -1 || index == 0) return;
- var selected = g.getSelected();
- g.move(rowdata, listdata[index - 1], false);
- g.select(selected);
- },
- down: function (rowParm)
- {
- var g = this, p = this.options;
- var rowdata = g.getRow(rowParm);
- var listdata = g._getParentChildren(rowdata);
- var index = $.inArray(rowdata, listdata);
- if (index == -1 || index == listdata.length - 1) return;
- var selected = g.getSelected();
- g.move(rowdata, listdata[index + 1], true);
- g.select(selected);
- },
- addRow: function (rowdata, neardata, isBefore, parentRowData)
- {
- var g = this, p = this.options;
- rowdata = rowdata || {};
- g._addData(rowdata, parentRowData, neardata, isBefore);
- g.reRender();
- //标识状态
- rowdata[p.statusName] = 'add';
- if (p.tree)
- {
- var children = g.getChildren(rowdata, true);
- if (children)
- {
- for (var i = 0, l = children.length; i < l; i++)
- {
- children[i][p.statusName] = 'add';
- }
- }
- }
- g.isDataChanged = true;
- p.total = p.total ? (p.total + 1) : 1;
- p.pageCount = Math.ceil(p.total / p.pageSize);
- g._buildPager();
- g.trigger('SysGridHeightChanged');
- g.trigger('afterAddRow', [rowdata]);
- return rowdata;
- },
- updateRow: function (rowDom, newRowData)
- {
- var g = this, p = this.options;
- var rowdata = g.getRow(rowDom);
- //标识状态
- g.isDataChanged = true;
- $.extend(rowdata, newRowData || {});
- if (rowdata[p.statusName] != 'add')
- rowdata[p.statusName] = 'update';
- g.reRender.ligerDefer(g, 10, [{ rowdata: rowdata}]);
- return rowdata;
- },
- setCellEditing: function (rowdata, column, editing)
- {
- var g = this, p = this.options;
- var cell = g.getCellObj(rowdata, column);
- var methodName = editing ? 'addClass' : 'removeClass';
- $(cell)[methodName]("l-grid-row-cell-editing");
- if (rowdata['__id'] != 0)
- {
- var prevrowobj = $(g.getRowObj(rowdata['__id'])).prev();
- if (!prevrowobj.length) return;
- var prevrow = g.getRow(prevrowobj[0]);
- var cellprev = g.getCellObj(prevrow, column);
- if (!cellprev) return;
- $(cellprev)[methodName]("l-grid-row-cell-editing-topcell");
- }
- if (column['__previd'] != -1 && column['__previd'] != null)
- {
- var cellprev = $(g.getCellObj(rowdata, column)).prev();
- $(cellprev)[methodName]("l-grid-row-cell-editing-leftcell");
- }
- },
- reRender: function (e)
- {
- var g = this, p = this.options;
- e = e || {};
- var rowdata = e.rowdata, column = e.column;
- if (column && (column.isdetail || column.ischeckbox)) return;
- if (rowdata && rowdata[p.statusName] == "delete") return;
- if (rowdata && column)
- {
- var cell = g.getCellObj(rowdata, column);
- $(cell).html(g._getCellHtml(rowdata, column));
- if (!column.issystem)
- g.setCellEditing(rowdata, column, false);
- }
- else if (rowdata)
- {
- $(g.columns).each(function () { g.reRender({ rowdata: rowdata, column: this }); });
- }
- else if (column)
- {
- for (var rowid in g.records) { g.reRender({ rowdata: g.records[rowid], column: column }); }
- for (var i = 0; i < g.totalNumber; i++)
- {
- var tobj = document.getElementById(g.id + "|total" + i + "|" + column['__id']);
- $("div:first", tobj).html(g._getTotalCellContent(column, g.groups && g.groups[i] ? g.groups[i] : g.currentData[p.root]));
- }
- }
- else
- {
- g._showData();
- }
- },
- getData: function (status, removeStatus)
- {
- var g = this, p = this.options;
- var data = [];
- for (var rowid in g.records)
- {
- var o = $.extend(true, {}, g.records[rowid]);
- if (o[p.statusName] == status || status == undefined)
- {
- data.push(g.formatRecord(o, removeStatus));
- }
- }
- return data;
- },
- //格式化数据
- formatRecord: function (o, removeStatus)
- {
- delete o['__id'];
- delete o['__previd'];
- delete o['__nextid'];
- delete o['__index'];
- if (this.options.tree)
- {
- delete o['__pid'];
- delete o['__level'];
- delete o['__hasChildren'];
- }
- if (removeStatus) delete o[this.options.statusName];
- return o;
- },
- getUpdated: function ()
- {
- return this.getData('update', true);
- },
- getDeleted: function ()
- {
- return this.deletedRows;
- },
- getAdded: function ()
- {
- return this.getData('add', true);
- },
- getColumn: function (columnParm)
- {
- var g = this, p = this.options;
- if (typeof columnParm == "string") // column id
- {
- if (g._isColumnId(columnParm))
- return g._columns[columnParm];
- else
- return g.columns[parseInt(columnParm)];
- }
- else if (typeof (columnParm) == "number") //column index
- {
- return g.columns[columnParm];
- }
- else if (typeof columnParm == "object" && columnParm.nodeType == 1) //column header cell
- {
- var ids = columnParm.id.split('|');
- var columnid = ids[ids.length - 1];
- return g._columns[columnid];
- }
- return columnParm;
- },
- getColumnType: function (columnname)
- {
- var g = this, p = this.options;
- for (i = 0; i < g.columns.length; i++)
- {
- if (g.columns[i].name == columnname)
- {
- if (g.columns[i].type) return g.columns[i].type;
- return "string";
- }
- }
- return null;
- },
- //是否包含汇总
- isTotalSummary: function ()
- {
- var g = this, p = this.options;
- for (var i = 0; i < g.columns.length; i++)
- {
- if (g.columns[i].totalSummary) return true;
- }
- return false;
- },
- //根据层次获取列集合
- //如果columnLevel为空,获取叶节点集合
- getColumns: function (columnLevel)
- {
- var g = this, p = this.options;
- var columns = [];
- for (var id in g._columns)
- {
- var col = g._columns[id];
- if (columnLevel != undefined)
- {
- if (col['__level'] == columnLevel) columns.push(col);
- }
- else
- {
- if (col['__leaf']) columns.push(col);
- }
- }
- return columns;
- },
- //改变排序
- changeSort: function (columnName, sortOrder)
- {
- var g = this, p = this.options;
- if (g.loading) return true;
- if (p.dataAction == "local")
- {
- var columnType = g.getColumnType(columnName);
- if (!g.sortedData)
- g.sortedData = g.filteredData;
- if (p.sortName == columnName)
- {
- g.sortedData[p.root].reverse();
- } else
- {
- g.sortedData[p.root].sort(function (data1, data2)
- {
- return g._compareData(data1, data2, columnName, columnType);
- });
- }
- if (p.usePager)
- g.currentData = g._getCurrentPageData(g.sortedData);
- else
- g.currentData = g.sortedData;
- g._showData();
- }
- p.sortName = columnName;
- p.sortOrder = sortOrder;
- if (p.dataAction == "server")
- {
- g.loadData(p.where);
- }
- },
- //改变分页
- changePage: function (ctype)
- {
- var g = this, p = this.options;
- if (g.loading) return true;
- if (p.dataAction != "local" && g.isDataChanged && !confirm(p.isContinueByDataChanged))
- return false;
- p.pageCount = parseInt($(".pcontrol span", g.toolbar).html());
- switch (ctype)
- {
- case 'first': if (p.page == 1) return; p.newPage = 1; break;
- case 'prev': if (p.page == 1) return; if (p.page > 1) p.newPage = parseInt(p.page) - 1; break;
- case 'next': if (p.page >= p.pageCount) return; p.newPage = parseInt(p.page) + 1; break;
- case 'last': if (p.page >= p.pageCount) return; p.newPage = p.pageCount; break;
- case 'input':
- var nv = parseInt($('.pcontrol input', g.toolbar).val());
- if (isNaN(nv)) nv = 1;
- if (nv < 1) nv = 1;
- else if (nv > p.pageCount) nv = p.pageCount;
- $('.pcontrol input', g.toolbar).val(nv);
- p.newPage = nv;
- break;
- }
- if (p.newPage == p.page) return false;
- if (p.newPage == 1)
- {
- $(".l-bar-btnfirst span", g.toolbar).addClass("l-disabled");
- $(".l-bar-btnprev span", g.toolbar).addClass("l-disabled");
- }
- else
- {
- $(".l-bar-btnfirst span", g.toolbar).removeClass("l-disabled");
- $(".l-bar-btnprev span", g.toolbar).removeClass("l-disabled");
- }
- if (p.newPage == p.pageCount)
- {
- $(".l-bar-btnlast span", g.toolbar).addClass("l-disabled");
- $(".l-bar-btnnext span", g.toolbar).addClass("l-disabled");
- }
- else
- {
- $(".l-bar-btnlast span", g.toolbar).removeClass("l-disabled");
- $(".l-bar-btnnext span", g.toolbar).removeClass("l-disabled");
- }
- g.trigger('changePage', [p.newPage]);
- if (p.dataAction == "server")
- {
- g.loadData(p.where);
- }
- else
- {
- g.currentData = g._getCurrentPageData(g.filteredData);
- g._showData();
- }
- },
- getSelectedRow: function ()
- {
- for (var i in this.selected)
- {
- var o = this.selected[i];
- if (o['__id'] in this.records)
- return o;
- }
- return null;
- },
- getSelectedRows: function ()
- {
- var arr = [];
- for (var i in this.selected)
- {
- var o = this.selected[i];
- if (o['__id'] in this.records)
- arr.push(o);
- }
- return arr;
- },
- getSelectedRowObj: function ()
- {
- for (var i in this.selected)
- {
- var o = this.selected[i];
- if (o['__id'] in this.records)
- return this.getRowObj(o);
- }
- return null;
- },
- getSelectedRowObjs: function ()
- {
- var arr = [];
- for (var i in this.selected)
- {
- var o = this.selected[i];
- if (o['__id'] in this.records)
- arr.push(this.getRowObj(o));
- }
- return arr;
- },
- getCellObj: function (rowParm, column)
- {
- var rowdata = this.getRow(rowParm);
- column = this.getColumn(column);
- return document.getElementById(this._getCellDomId(rowdata, column));
- },
- getRowObj: function (rowParm, frozen)
- {
- var g = this, p = this.options;
- if (rowParm == null) return null;
- if (typeof (rowParm) == "string")
- {
- if (g._isRowId(rowParm))
- return document.getElementById(g.id + (frozen ? "|1|" : "|2|") + rowParm);
- else
- return document.getElementById(g.id + (frozen ? "|1|" : "|2|") + g.rows[parseInt(rowParm)]['__id']);
- }
- else if (typeof (rowParm) == "number")
- {
- return document.getElementById(g.id + (frozen ? "|1|" : "|2|") + g.rows[rowParm]['__id']);
- }
- else if (typeof (rowParm) == "object" && rowParm['__id']) //rowdata
- {
- return g.getRowObj(rowParm['__id'], frozen);
- }
- return rowParm;
- },
- getRow: function (rowParm)
- {
- var g = this, p = this.options;
- if (rowParm == null) return null;
- if (typeof (rowParm) == "string")
- {
- if (g._isRowId(rowParm))
- return g.records[rowParm];
- else
- return g.rows[parseInt(rowParm)];
- }
- else if (typeof (rowParm) == "number")
- {
- return g.rows[parseInt(rowParm)];
- }
- else if (typeof (rowParm) == "object" && rowParm.nodeType == 1 && !rowParm['__id']) //dom对象
- {
- return g._getRowByDomId(rowParm.id);
- }
- return rowParm;
- },
- _setColumnVisible: function (column, hide)
- {
- var g = this, p = this.options;
- if (!hide) //显示
- {
- column._hide = false;
- document.getElementById(column['__domid']).style.display = "";
- //判断分组列是否隐藏,如果隐藏了则显示出来
- if (column['__pid'] != -1)
- {
- var pcol = g._columns[column['__pid']];
- if (pcol._hide)
- {
- document.getElementById(pcol['__domid']).style.display = "";
- this._setColumnVisible(pcol, hide);
- }
- }
- }
- else //隐藏
- {
- column._hide = true;
- document.getElementById(column['__domid']).style.display = "none";
- //判断同分组的列是否都隐藏,如果是则隐藏分组列
- if (column['__pid'] != -1)
- {
- var hideall = true;
- var pcol = this._columns[column['__pid']];
- for (var i = 0; pcol && i < pcol.columns.length; i++)
- {
- if (!pcol.columns[i]._hide)
- {
- hideall = false;
- break;
- }
- }
- if (hideall)
- {
- pcol._hide = true;
- document.getElementById(pcol['__domid']).style.display = "none";
- this._setColumnVisible(pcol, hide);
- }
- }
- }
- },
- //显示隐藏列
- toggleCol: function (columnparm, visible, toggleByPopup)
- {
- var g = this, p = this.options;
- var column;
- if (typeof (columnparm) == "number")
- {
- column = g.columns[columnparm];
- }
- else if (typeof (columnparm) == "object" && columnparm['__id'])
- {
- column = columnparm;
- }
- else if (typeof (columnparm) == "string")
- {
- if (g._isColumnId(columnparm)) // column id
- {
- column = g._columns[columnparm];
- }
- else // column name
- {
- $(g.columns).each(function ()
- {
- if (this.name == columnparm)
- g.toggleCol(this, visible, toggleByPopup);
- });
- return;
- }
- }
- if (!column) return;
- var columnindex = column['__leafindex'];
- var headercell = document.getElementById(column['__domid']);
- if (!headercell) return;
- headercell = $(headercell);
- var cells = [];
- for (var i in g.rows)
- {
- var obj = g.getCellObj(g.rows[i], column);
- if (obj) cells.push(obj);
- }
- for (var i = 0; i < g.totalNumber; i++)
- {
- var tobj = document.getElementById(g.id + "|total" + i + "|" + column['__id']);
- if (tobj) cells.push(tobj);
- }
- var colwidth = column._width;
- //显示列
- if (visible && column._hide)
- {
- if (column.frozen)
- g.f.gridtablewidth += (parseInt(colwidth) + 1);
- else
- g.gridtablewidth += (parseInt(colwidth) + 1);
- g._setColumnVisible(column, false);
- $(cells).show();
- }
- //隐藏列
- else if (!visible && !column._hide)
- {
- if (column.frozen)
- g.f.gridtablewidth -= (parseInt(colwidth) + 1);
- else
- g.gridtablewidth -= (parseInt(colwidth) + 1);
- g._setColumnVisible(column, true);
- $(cells).hide();
- }
- if (column.frozen)
- {
- $("div:first", g.f.gridheader).width(g.f.gridtablewidth);
- $("div:first", g.f.gridbody).width(g.f.gridtablewidth);
- }
- else
- {
- $("div:first", g.gridheader).width(g.gridtablewidth + 40);
- $("div:first", g.gridbody).width(g.gridtablewidth);
- }
- g._updateFrozenWidth();
- if (!toggleByPopup)
- {
- $(':checkbox[columnindex=' + columnindex + "]", g.popup).each(function ()
- {
- this.checked = visible;
- if ($.fn.ligerCheckBox)
- {
- var checkboxmanager = $(this).ligerGetCheckBoxManager();
- if (checkboxmanager) checkboxmanager.updateStyle();
- }
- });
- }
- },
- //设置列宽
- setColumnWidth: function (columnparm, newwidth)
- {
- var g = this, p = this.options;
- if (!newwidth) return;
- newwidth = parseInt(newwidth, 10);
- var column;
- if (typeof (columnparm) == "number")
- {
- column = g.columns[columnparm];
- }
- else if (typeof (columnparm) == "object" && columnparm['__id'])
- {
- column = columnparm;
- }
- else if (typeof (columnparm) == "string")
- {
- if (g._isColumnId(columnparm)) // column id
- {
- column = g._columns[columnparm];
- }
- else // column name
- {
- $(g.columns).each(function ()
- {
- if (this.name == columnparm)
- g.setColumnWidth(this, newwidth);
- });
- return;
- }
- }
- if (!column) return;
- var mincolumnwidth = p.minColumnWidth;
- if (column.minWidth) mincolumnwidth = column.minWidth;
- newwidth = newwidth < mincolumnwidth ? mincolumnwidth : newwidth;
- var diff = newwidth - column._width;
- if (g.trigger('beforeChangeColumnWidth', [column, newwidth]) == false) return;
- column._width = newwidth;
- if (column.frozen)
- {
- g.f.gridtablewidth += diff;
- $("div:first", g.f.gridheader).width(g.f.gridtablewidth);
- $("div:first", g.f.gridbody).width(g.f.gridtablewidth);
- }
- else
- {
- g.gridtablewidth += diff;
- $("div:first", g.gridheader).width(g.gridtablewidth + 40);
- $("div:first", g.gridbody).width(g.gridtablewidth);
- }
- $(document.getElementById(column['__domid'])).css('width', newwidth);
- var cells = [];
- for (var rowid in g.records)
- {
- var obj = g.getCellObj(g.records[rowid], column);
- if (obj) cells.push(obj);
- if (!g.enabledDetailEdit() && g.editors[rowid] && g.editors[rowid][column['__id']])
- {
- var o = g.editors[rowid][column['__id']];
- if (o.editor.resize) o.editor.resize(o.input, newwidth, o.container.height(), o.editParm);
- }
- }
- for (var i = 0; i < g.totalNumber; i++)
- {
- var tobj = document.getElementById(g.id + "|total" + i + "|" + column['__id']);
- if (tobj) cells.push(tobj);
- }
- $(cells).css('width', newwidth).find("> div.l-grid-row-cell-inner:first").css('width', newwidth - 8);
- g._updateFrozenWidth();
- g.trigger('afterChangeColumnWidth', [column, newwidth]);
- },
- //改变列表头内容
- changeHeaderText: function (columnparm, headerText)
- {
- var g = this, p = this.options;
- var column;
- if (typeof (columnparm) == "number")
- {
- column = g.columns[columnparm];
- }
- else if (typeof (columnparm) == "object" && columnparm['__id'])
- {
- column = columnparm;
- }
- else if (typeof (columnparm) == "string")
- {
- if (g._isColumnId(columnparm)) // column id
- {
- column = g._columns[columnparm];
- }
- else // column name
- {
- $(g.columns).each(function ()
- {
- if (this.name == columnparm)
- g.changeHeaderText(this, headerText);
- });
- return;
- }
- }
- if (!column) return;
- var columnindex = column['__leafindex'];
- var headercell = document.getElementById(column['__domid']);
- $(".l-grid-hd-cell-text", headercell).html(headerText);
- if (p.allowHideColumn)
- {
- $(':checkbox[columnindex=' + columnindex + "]", g.popup).parent().next().html(headerText);
- }
- },
- //改变列的位置
- changeCol: function (from, to, isAfter)
- {
- var g = this, p = this.options;
- if (!from || !to) return;
- var fromCol = g.getColumn(from);
- var toCol = g.getColumn(to);
- fromCol.frozen = toCol.frozen;
- var fromColIndex, toColIndex;
- var fromColumns = fromCol['__pid'] == -1 ? p.columns : g._columns[fromCol['__pid']].columns;
- var toColumns = toCol['__pid'] == -1 ? p.columns : g._columns[toCol['__pid']].columns;
- fromColIndex = $.inArray(fromCol, fromColumns);
- toColIndex = $.inArray(toCol, toColumns);
- var sameParent = fromColumns == toColumns;
- var sameLevel = fromCol['__level'] == toCol['__level'];
- toColumns.splice(toColIndex + (isAfter ? 1 : 0), 0, fromCol);
- if (!sameParent)
- {
- fromColumns.splice(fromColIndex, 1);
- }
- else
- {
- if (isAfter) fromColumns.splice(fromColIndex, 1);
- else fromColumns.splice(fromColIndex + 1, 1);
- }
- g._setColumns(p.columns);
- g.reRender();
- },
- collapseDetail: function (rowParm)
- {
- var g = this, p = this.options;
- var rowdata = g.getRow(rowParm);
- if (!rowdata) return;
- for (var i = 0, l = g.columns.length; i < l; i++)
- {
- if (g.columns[i].isdetail)
- {
- var row = g.getRowObj(rowdata);
- var cell = g.getCellObj(rowdata, g.columns[i]);
- $(row).next("tr.l-grid-detailpanel").hide();
- $(".l-grid-row-cell-detailbtn:first", cell).removeClass("l-open");
- g.trigger('SysGridHeightChanged');
- return;
- }
- }
- },
- extendDetail: function (rowParm)
- {
- var g = this, p = this.options;
- var rowdata = g.getRow(rowParm);
- if (!rowdata) return;
- for (var i = 0, l = g.columns; i < l; i++)
- {
- if (g.columns[i].isdetail)
- {
- var row = g.getRowObj(rowdata);
- var cell = g.getCellObj(rowdata, g.columns[i]);
- $(row).next("tr.l-grid-detailpanel").show();
- $(".l-grid-row-cell-detailbtn:first", cell).addClass("l-open");
- g.trigger('SysGridHeightChanged');
- return;
- }
- }
- },
- getParent: function (rowParm)
- {
- var g = this, p = this.options;
- if (!p.tree) return null;
- var rowdata = g.getRow(rowParm);
- if (!rowdata) return null;
- if (rowdata['__pid'] in g.records) return g.records[rowdata['__pid']];
- else return null;
- },
- getChildren: function (rowParm, deep)
- {
- var g = this, p = this.options;
- if (!p.tree) return null;
- var rowData = g.getRow(rowParm);
- if (!rowData) return null;
- var arr = [];
- function loadChildren(data)
- {
- if (data[p.tree.childrenName])
- {
- for (var i = 0, l = data[p.tree.childrenName].length; i < l; i++)
- {
- var o = data[p.tree.childrenName][i];
- if (o['__status'] == 'delete') continue;
- arr.push(o);
- if (deep)
- loadChildren(o);
- }
- }
- }
- loadChildren(rowData);
- return arr;
- },
- isLeaf: function (rowParm)
- {
- var g = this, p = this.options;
- var rowdata = g.getRow(rowParm);
- if (!rowdata) return;
- return rowdata['__hasChildren'] ? false : true;
- },
- hasChildren: function (rowParm)
- {
- var g = this, p = this.options;
- var rowdata = this.getRow(rowParm);
- if (!rowdata) return;
- return (rowdata[p.tree.childrenName] && rowdata[p.tree.childrenName].length) ? true : false;
- },
- existRecord: function (record)
- {
- for (var rowid in this.records)
- {
- if (this.records[rowid] == record) return true;
- }
- return false;
- },
- _removeSelected: function (rowdata)
- {
- var g = this, p = this.options;
- if (p.tree)
- {
- var children = g.getChildren(rowdata, true);
- if (children)
- {
- for (var i = 0, l = children.length; i < l; i++)
- {
- var index2 = $.inArray(children[i], g.selected);
- if (index2 != -1) g.selected.splice(index2, 1);
- }
- }
- }
- var index = $.inArray(rowdata, g.selected);
- if (index != -1) g.selected.splice(index, 1);
- },
- _getParentChildren: function (rowParm)
- {
- var g = this, p = this.options;
- var rowdata = g.getRow(rowParm);
- var listdata;
- if (p.tree && g.existRecord(rowdata) && rowdata['__pid'] in g.records)
- {
- listdata = g.records[rowdata['__pid']][p.tree.childrenName];
- }
- else
- {
- listdata = g.currentData[p.root];
- }
- return listdata;
- },
- _removeData: function (rowdata)
- {
- var g = this, p = this.options;
- var listdata = g._getParentChildren(rowdata);
- var index = $.inArray(rowdata, listdata);
- if (index != -1)
- {
- listdata.splice(index, 1);
- }
- g._removeSelected(rowdata);
- },
- _addData: function (rowdata, parentdata, neardata, isBefore)
- {
- var g = this, p = this.options;
- var listdata = g.currentData[p.root];
- if (neardata)
- {
- if (p.tree)
- {
- if (parentdata)
- listdata = parentdata[p.tree.childrenName];
- else if (neardata['__pid'] in g.records)
- listdata = g.records[neardata['__pid']][p.tree.childrenName];
- }
- var index = $.inArray(neardata, listdata);
- listdata.splice(index == -1 ? -1 : index + (isBefore ? 0 : 1), 0, rowdata);
- }
- else
- {
- if (p.tree && parentdata)
- {
- listdata = parentdata[p.tree.childrenName];
- }
- listdata.push(rowdata);
- }
- },
- //移动数据(树)
- //@parm [parentdata] 附加到哪一个节点下级
- //@parm [neardata] 附加到哪一个节点的上方/下方
- //@parm [isBefore] 是否附加到上方
- _appendData: function (rowdata, parentdata, neardata, isBefore)
- {
- var g = this, p = this.options;
- rowdata[p.statusName] = "update";
- g._removeData(rowdata);
- g._addData(rowdata, parentdata, neardata, isBefore);
- },
- appendRange: function (rows, parentdata, neardata, isBefore)
- {
- var g = this, p = this.options;
- var toRender = false;
- $.each(rows, function (i, item)
- {
- if (item['__id'] && g.existRecord(item))
- {
- if (g.isLeaf(parentdata)) g.upgrade(parentdata);
- g._appendData(item, parentdata, neardata, isBefore);
- toRender = true;
- }
- else
- {
- g.appendRow(item, parentdata, neardata, isBefore);
- }
- });
- if (toRender) g.reRender();
- },
- appendRow: function (rowdata, parentdata, neardata, isBefore)
- {
- var g = this, p = this.options;
- if ($.isArray(rowdata))
- {
- g.appendRange(rowdata, parentdata, neardata, isBefore);
- return;
- }
- if (rowdata['__id'] && g.existRecord(rowdata))
- {
- g._appendData(rowdata, parentdata, neardata, isBefore);
- g.reRender();
- return;
- }
- if (parentdata && g.isLeaf(parentdata)) g.upgrade(parentdata);
- g.addRow(rowdata, neardata, isBefore ? true : false, parentdata);
- },
- upgrade: function (rowParm)
- {
- var g = this, p = this.options;
- var rowdata = g.getRow(rowParm);
- if (!rowdata || !p.tree) return;
- rowdata[p.tree.childrenName] = rowdata[p.tree.childrenName] || [];
- rowdata['__hasChildren'] = true;
- var rowobjs = [g.getRowObj(rowdata)];
- if (g.enabledFrozen()) rowobjs.push(g.getRowObj(rowdata, true));
- $("> td > div > .l-grid-tree-space:last", rowobjs).addClass("l-grid-tree-link l-grid-tree-link-open");
- },
- demotion: function (rowParm)
- {
- var g = this, p = this.options;
- var rowdata = g.getRow(rowParm);
- if (!rowdata || !p.tree) return;
- var rowobjs = [g.getRowObj(rowdata)];
- if (g.enabledFrozen()) rowobjs.push(g.getRowObj(rowdata, true));
- $("> td > div > .l-grid-tree-space:last", rowobjs).removeClass("l-grid-tree-link l-grid-tree-link-open l-grid-tree-link-close");
- if (g.hasChildren(rowdata))
- {
- var children = g.getChildren(rowdata);
- for (var i = 0, l = children.length; i < l; i++)
- {
- g.deleteRow(children[i]);
- }
- }
- rowdata['__hasChildren'] = false;
- },
- collapse: function (rowParm)
- {
- var g = this, p = this.options;
- var targetRowObj = g.getRowObj(rowParm);
- var linkbtn = $(".l-grid-tree-link", targetRowObj);
- if (linkbtn.hasClass("l-grid-tree-link-close")) return;
- g.toggle(rowParm);
- },
- expand: function (rowParm)
- {
- var g = this, p = this.options;
- var targetRowObj = g.getRowObj(rowParm);
- var linkbtn = $(".l-grid-tree-link", targetRowObj);
- if (linkbtn.hasClass("l-grid-tree-link-open")) return;
- g.toggle(rowParm);
- },
- toggle: function (rowParm)
- {
- if (!rowParm) return;
- var g = this, p = this.options;
- var rowdata = g.getRow(rowParm);
- var targetRowObj = [g.getRowObj(rowdata)];
- if (g.enabledFrozen()) targetRowObj.push(g.getRowObj(rowdata, true));
- var level = rowdata['__level'], indexInCollapsedRows;
- var linkbtn = $(".l-grid-tree-link:first", targetRowObj);
- var opening = true;
- g.collapsedRows = g.collapsedRows || [];
- if (linkbtn.hasClass("l-grid-tree-link-close")) //收缩
- {
- linkbtn.removeClass("l-grid-tree-link-close").addClass("l-grid-tree-link-open");
- indexInCollapsedRows = $.inArray(rowdata, g.collapsedRows);
- if (indexInCollapsedRows != -1) g.collapsedRows.splice(indexInCollapsedRows, 1);
- }
- else //折叠
- {
- opening = false;
- linkbtn.addClass("l-grid-tree-link-close").removeClass("l-grid-tree-link-open");
- indexInCollapsedRows = $.inArray(rowdata, g.collapsedRows);
- if (indexInCollapsedRows == -1) g.collapsedRows.push(rowdata);
- }
- var children = g.getChildren(rowdata, true);
- for (var i = 0, l = children.length; i < l; i++)
- {
- var o = children[i];
- var currentRow = $([g.getRowObj(o['__id'])]);
- if (g.enabledFrozen()) currentRow = currentRow.add(g.getRowObj(o['__id'], true));
- if (opening)
- {
- $(".l-grid-tree-link", currentRow).removeClass("l-grid-tree-link-close").addClass("l-grid-tree-link-open");
- currentRow.show();
- }
- else
- {
- $(".l-grid-tree-link", currentRow).removeClass("l-grid-tree-link-open").addClass("l-grid-tree-link-close");
- currentRow.hide();
- }
- }
- },
- _bulid: function ()
- {
- var g = this;
- g._clearGrid();
- //创建头部
- g._initBuildHeader();
- //宽度高度初始化
- g._initHeight();
- //创建底部工具条
- g._initFootbar();
- //创建分页
- g._buildPager();
- //创建事件
- g._setEvent();
- },
- _setColumns: function (columns)
- {
- var g = this;
- //初始化列
- g._initColumns();
- //创建表头
- g._initBuildGridHeader();
- //创建 显示/隐藏 列 列表
- g._initBuildPopup();
- },
- _initBuildHeader: function ()
- {
- var g = this, p = this.options;
- if (p.title)
- {
- $(".l-panel-header-text", g.header).html(p.title);
- if (p.headerImg)
- g.header.append("<img src='" + p.headerImg + "' />").addClass("l-panel-header-hasicon");
- }
- else
- {
- g.header.hide();
- }
- if (p.toolbar)
- {
- if ($.fn.ligerToolBar)
- g.toolbarManager = g.topbar.ligerToolBar(p.toolbar);
- }
- else
- {
- g.topbar.remove();
- }
- },
- _createColumnId: function (column)
- {
- if (column.id != null) return column.id.toString();
- return "c" + (100 + this._columnCount);
- },
- _isColumnId: function (str)
- {
- return (str in this._columns);
- },
- _initColumns: function ()
- {
- var g = this, p = this.options;
- g._columns = {}; //全部列的信息
- g._columnCount = 0;
- g._columnLeafCount = 0;
- g._columnMaxLevel = 1;
- if (!p.columns) return;
- function removeProp(column, props)
- {
- for (var i in props)
- {
- if (props[i] in column)
- delete column[props[i]];
- }
- }
- //设置id、pid、level、leaf,返回叶节点数,如果是叶节点,返回1
- function setColumn(column, level, pid, previd)
- {
- removeProp(column, ['__id', '__pid', '__previd', '__nextid', '__domid', '__leaf', '__leafindex', '__level', '__colSpan', '__rowSpan']);
- if (level > g._columnMaxLevel) g._columnMaxLevel = level;
- g._columnCount++;
- column['__id'] = g._createColumnId(column);
- column['__domid'] = g.id + "|hcell|" + column['__id'];
- g._columns[column['__id']] = column;
- if (!column.columns || !column.columns.length)
- column['__leafindex'] = g._columnLeafCount++;
- column['__level'] = level;
- column['__pid'] = pid;
- column['__previd'] = previd;
- if (!column.columns || !column.columns.length)
- {
- column['__leaf'] = true;
- return 1;
- }
- var leafcount = 0;
- var newid = -1;
- for (var i = 0, l = column.columns.length; i < l; i++)
- {
- var col = column.columns[i];
- leafcount += setColumn(col, level + 1, column['__id'], newid);
- newid = col['__id'];
- }
- column['__leafcount'] = leafcount;
- return leafcount;
- }
- var lastid = -1;
- //行序号
- if (p.rownumbers)
- {
- var frozenRownumbers = g.enabledGroup() ? false : p.frozen && p.frozenRownumbers;
- var col = { isrownumber: true, issystem: true, width: p.rownumbersColWidth, frozen: frozenRownumbers };
- setColumn(col, 1, -1, lastid);
- lastid = col['__id'];
- }
- //明细列
- if (g.enabledDetail())
- {
- var frozenDetail = g.enabledGroup() ? false : p.frozen && p.frozenDetail;
- var col = { isdetail: true, issystem: true, width: p.detailColWidth, frozen: frozenDetail };
- setColumn(col, 1, -1, lastid);
- lastid = col['__id'];
- }
- //复选框列
- if (g.enabledCheckbox())
- {
- var frozenCheckbox = g.enabledGroup() ? false : p.frozen && p.frozenCheckbox;
- var col = { ischeckbox: true, issystem: true, width: p.detailColWidth, frozen: frozenCheckbox };
- setColumn(col, 1, -1, lastid);
- lastid = col['__id'];
- }
- for (var i = 0, l = p.columns.length; i < l; i++)
- {
- var col = p.columns[i];
- setColumn(col, 1, -1, lastid);
- lastid = col['__id'];
- }
- //设置colSpan和rowSpan
- for (var id in g._columns)
- {
- var col = g._columns[id];
- if (col['__leafcount'] > 1)
- {
- col['__colSpan'] = col['__leafcount'];
- }
- if (col['__leaf'] && col['__level'] != g._columnMaxLevel)
- {
- col['__rowSpan'] = g._columnMaxLevel - col['__level'] + 1;
- }
- }
- //叶级别列的信息
- g.columns = g.getColumns();
- $(g.columns).each(function (i, column)
- {
- column.columnname = column.name;
- column.columnindex = i;
- column.type = column.type || "string";
- column.islast = i == g.columns.length - 1;
- column.isSort = column.isSort == false ? false : true;
- column.frozen = column.frozen ? true : false;
- column._width = g._getColumnWidth(column);
- column._hide = column.hide ? true : false;
- });
- },
- _getColumnWidth: function (column)
- {
- var g = this, p = this.options;
- if (column._width) return column._width;
- var colwidth;
- if (column.width)
- {
- colwidth = column.width;
- }
- else if (p.columnWidth)
- {
- colwidth = p.columnWidth;
- }
- if (!colwidth)
- {
- var lwidth = 4;
- if (g.enabledCheckbox()) lwidth += p.checkboxColWidth;
- if (g.enabledDetail()) lwidth += p.detailColWidth;
- colwidth = parseInt((g.grid.width() - lwidth) / g.columns.length);
- }
- if (typeof (colwidth) == "string" && colwidth.indexOf('%') > 0)
- {
- column._width = colwidth = parseInt(parseInt(colwidth) * 0.01 * (g.grid.width() - g.columns.length));
- }
- if (column.minWidth && colwidth < column.minWidth) colwidth = column.minWidth;
- if (column.maxWidth && colwidth > column.maxWidth) colwidth = column.maxWidth;
- column._width = colwidth;
- return colwidth;
- },
- _createHeaderCell: function (column)
- {
- var g = this, p = this.options;
- 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>");
- jcell.attr("id", column['__domid']);
- if (!column['__leaf'])
- jcell.addClass("l-grid-hd-cell-mul");
- if (column.columnindex == g.columns.length - 1)
- {
- jcell.addClass("l-grid-hd-cell-last");
- }
- if (column.isrownumber)
- {
- jcell.addClass("l-grid-hd-cell-rownumbers");
- jcell.html("<div class='l-grid-hd-cell-inner'></div>");
- }
- if (column.ischeckbox)
- {
- jcell.addClass("l-grid-hd-cell-checkbox");
- jcell.html("<div class='l-grid-hd-cell-inner'><div class='l-grid-hd-cell-text l-grid-hd-cell-btn-checkbox'></div></div>");
- }
- if (column.isdetail)
- {
- jcell.addClass("l-grid-hd-cell-detail");
- jcell.html("<div class='l-grid-hd-cell-inner'><div class='l-grid-hd-cell-text l-grid-hd-cell-btn-detail'></div></div>");
- }
- if (column.heightAlign)
- {
- $(".l-grid-hd-cell-inner:first", jcell).css("textAlign", column.heightAlign);
- }
- if (column['__colSpan']) jcell.attr("colSpan", column['__colSpan']);
- if (column['__rowSpan'])
- {
- jcell.attr("rowSpan", column['__rowSpan']);
- jcell.height(p.headerRowHeight * column['__rowSpan']);
- } else
- {
- jcell.height(p.headerRowHeight);
- }
- if (column['__leaf'])
- {
- jcell.width(column['_width']);
- jcell.attr("columnindex", column['__leafindex']);
- }
- if (column._hide) jcell.hide();
- if (column.name) jcell.attr({ columnname: column.name });
- var headerText = "";
- if (column.display && column.display != "")
- headerText = column.display;
- else if (column.headerRender)
- headerText = column.headerRender(column);
- else
- headerText = " ";
- $(".l-grid-hd-cell-text:first", jcell).html(headerText);
- if (!column.issystem && column['__leaf'] && column.resizable !== false && $.fn.ligerResizable)
- {
- g.colResizable[column['__id']] = jcell.ligerResizable({ handles: 'e',
- onStartResize: function (e, ev)
- {
- this.proxy.hide();
- g.draggingline.css({ height: g.body.height(), top: 0, left: ev.pageX - g.grid.offset().left + parseInt(g.body[0].scrollLeft) }).show();
- },
- onResize: function (e, ev)
- {
- g.colresizing = true;
- g.draggingline.css({ left: ev.pageX - g.grid.offset().left + parseInt(g.body[0].scrollLeft) });
- $('body').add(jcell).css('cursor', 'e-resize');
- },
- onStopResize: function (e)
- {
- g.colresizing = false;
- $('body').add(jcell).css('cursor', 'default');
- g.draggingline.hide();
- g.setColumnWidth(column, column._width + e.diffX);
- return false;
- }
- });
- }
- return jcell;
- },
- _initBuildGridHeader: function ()
- {
- var g = this, p = this.options;
- g.gridtablewidth = 0;
- g.f.gridtablewidth = 0;
- if (g.colResizable)
- {
- for (var i in g.colResizable)
- {
- g.colResizable[i].destroy();
- }
- g.colResizable = null;
- }
- g.colResizable = {};
- $("tbody:first", g.gridheader).html("");
- $("tbody:first", g.f.gridheader).html("");
- for (var level = 1; level <= g._columnMaxLevel; level++)
- {
- var columns = g.getColumns(level); //获取level层次的列集合
- var islast = level == g._columnMaxLevel; //是否最末级
- var tr = $("<tr class='l-grid-hd-row'></tr>");
- var trf = $("<tr class='l-grid-hd-row'></tr>");
- if (!islast) tr.add(trf).addClass("l-grid-hd-mul");
- $("tbody:first", g.gridheader).append(tr);
- $("tbody:first", g.f.gridheader).append(trf);
- $(columns).each(function (i, column)
- {
- (column.frozen ? trf : tr).append(g._createHeaderCell(column));
- if (column['__leaf'])
- {
- var colwidth = column['_width'];
- if (!column.frozen)
- g.gridtablewidth += (parseInt(colwidth) ? parseInt(colwidth) : 0) + 1;
- else
- g.f.gridtablewidth += (parseInt(colwidth) ? parseInt(colwidth) : 0) + 1;
- }
- });
- }
- if (g._columnMaxLevel > 0)
- {
- var h = p.headerRowHeight * g._columnMaxLevel;
- g.gridheader.add(g.f.gridheader).height(h);
- if (p.rownumbers && p.frozenRownumbers) g.f.gridheader.find("td:first").height(h);
- }
- g._updateFrozenWidth();
- $("div:first", g.gridheader).width(g.gridtablewidth + 40);
- },
- _initBuildPopup: function ()
- {
- var g = this, p = this.options;
- $(':checkbox', g.popup).unbind();
- $('tbody tr', g.popup).remove();
- $(g.columns).each(function (i, column)
- {
- if (column.issystem) return;
- if (column.isAllowHide == false) return;
- var chk = 'checked="checked"';
- if (column._hide) chk = '';
- var header = column.display;
- $('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>');
- });
- if ($.fn.ligerCheckBox)
- {
- $('input:checkbox', g.popup).ligerCheckBox(
- {
- onBeforeClick: function (obj)
- {
- if (!obj.checked) return true;
- if ($('input:checked', g.popup).length <= p.minColToggle)
- return false;
- return true;
- }
- });
- }
- //表头 - 显示/隐藏'列控制'按钮事件
- if (p.allowHideColumn)
- {
- $('tr', g.popup).hover(function ()
- {
- $(this).addClass('l-popup-row-over');
- },
- function ()
- {
- $(this).removeClass('l-popup-row-over');
- });
- var onPopupCheckboxChange = function ()
- {
- if ($('input:checked', g.popup).length + 1 <= p.minColToggle)
- {
- return false;
- }
- g.toggleCol(parseInt($(this).attr("columnindex")), this.checked, true);
- };
- if ($.fn.ligerCheckBox)
- $(':checkbox', g.popup).bind('change', onPopupCheckboxChange);
- else
- $(':checkbox', g.popup).bind('click', onPopupCheckboxChange);
- }
- },
- _initHeight: function ()
- {
- var g = this, p = this.options;
- if (p.height == 'auto')
- {
- g.gridbody.height('auto');
- g.f.gridbody.height('auto');
- }
- if (p.width)
- {
- g.grid.width(p.width);
- }
- g._onResize.call(g);
- },
- _initFootbar: function ()
- {
- var g = this, p = this.options;
- if (p.usePager)
- {
- //创建底部工具条 - 选择每页显示记录数
- var optStr = "";
- var selectedIndex = -1;
- $(p.pageSizeOptions).each(function (i, item)
- {
- var selectedStr = "";
- if (p.pageSize == item) selectedIndex = i;
- optStr += "<option value='" + item + "' " + selectedStr + " >" + item + "</option>";
- });
- $('.l-bar-selectpagesize', g.toolbar).append("<select name='rp'>" + optStr + "</select>");
- if (selectedIndex != -1) $('.l-bar-selectpagesize select', g.toolbar)[0].selectedIndex = selectedIndex;
- if (p.switchPageSizeApplyComboBox && $.fn.ligerComboBox)
- {
- $(".l-bar-selectpagesize select", g.toolbar).ligerComboBox(
- {
- onBeforeSelect: function ()
- {
- if (p.url && g.isDataChanged && !confirm(p.isContinueByDataChanged))
- return false;
- return true;
- },
- width: 45
- });
- }
- }
- else
- {
- g.toolbar.hide();
- }
- },
- _searchData: function (data, clause)
- {
- var g = this, p = this.options;
- var newData = new Array();
- for (var i = 0; i < data.length; i++)
- {
- if (clause(data[i], i))
- {
- newData[newData.length] = data[i];
- }
- }
- return newData;
- },
- _clearGrid: function ()
- {
- var g = this, p = this.options;
- for (var i in g.rows)
- {
- var rowobj = $(g.getRowObj(g.rows[i]));
- if (g.enabledFrozen())
- rowobj = rowobj.add(g.getRowObj(g.rows[i], true));
- rowobj.unbind();
- }
- //清空数据
- g.gridbody.html("");
- g.f.gridbody.html("");
- g.recordNumber = 0;
- g.records = {};
- g.rows = [];
- //清空选择的行
- g.selected = [];
- g.totalNumber = 0;
- //编辑器计算器
- g.editorcounter = 0;
- },
- _fillGridBody: function (data, frozen)
- {
- var g = this, p = this.options;
- //加载数据
- var gridhtmlarr = ['<div class="l-grid-body-inner"><table class="l-grid-body-table" cellpadding=0 cellspacing=0><tbody>'];
- if (g.enabledGroup()) //启用分组模式
- {
- var groups = []; //分组列名数组
- var groupsdata = []; //切成几块后的数据
- g.groups = groupsdata;
- for (var rowparm in data)
- {
- var item = data[rowparm];
- var groupColumnValue = item[p.groupColumnName];
- var valueIndex = $.inArray(groupColumnValue, groups);
- if (valueIndex == -1)
- {
- groups.push(groupColumnValue);
- valueIndex = groups.length - 1;
- groupsdata.push([]);
- }
- groupsdata[valueIndex].push(item);
- }
- $(groupsdata).each(function (i, item)
- {
- if (groupsdata.length == 1)
- gridhtmlarr.push('<tr class="l-grid-grouprow l-grid-grouprow-last l-grid-grouprow-first"');
- if (i == groupsdata.length - 1)
- gridhtmlarr.push('<tr class="l-grid-grouprow l-grid-grouprow-last"');
- else if (i == 0)
- gridhtmlarr.push('<tr class="l-grid-grouprow l-grid-grouprow-first"');
- else
- gridhtmlarr.push('<tr class="l-grid-grouprow"');
- gridhtmlarr.push(' groupindex"=' + i + '" >');
- gridhtmlarr.push('<td colSpan="' + g.columns.length + '" class="l-grid-grouprow-cell">');
- gridhtmlarr.push('<span class="l-grid-group-togglebtn"> </span>');
- if (p.groupRender)
- gridhtmlarr.push(p.groupRender(groups[i], item, p.groupColumnDisplay));
- else
- gridhtmlarr.push(p.groupColumnDisplay + ':' + groups[i]);
- gridhtmlarr.push('</td>');
- gridhtmlarr.push('</tr>');
- gridhtmlarr.push(g._getHtmlFromData(item, frozen));
- //汇总
- if (g.isTotalSummary())
- gridhtmlarr.push(g._getTotalSummaryHtml(item, "l-grid-totalsummary-group", frozen));
- });
- }
- else
- {
- gridhtmlarr.push(g._getHtmlFromData(data, frozen));
- }
- gridhtmlarr.push('</tbody></table></div>');
- (frozen ? g.f.gridbody : g.gridbody).html(gridhtmlarr.join(''));
- //分组时不需要
- if (!g.enabledGroup())
- {
- //创建汇总行
- g._bulidTotalSummary(frozen);
- }
- $("> div:first", g.gridbody).width(g.gridtablewidth);
- g._onResize();
- },
- _showData: function (id)
- {
- var g = this, p = this.options;
- var data = g.currentData[p.root];
- if (p.usePager)
- {
- //更新总记录数
- if (p.dataAction == "server" && g.data && g.data[p.record])
- p.total = g.data[p.record];
- else if (g.filteredData && g.filteredData[p.root])
- p.total = g.filteredData[p.root].length;
- else if (g.data && g.data[p.root])
- p.total = g.data[p.root].length;
- else if (data)
- p.total = data.length;
- p.page = p.newPage;
- if (!p.total) p.total = 0;
- if (!p.page) p.page = 1;
- p.pageCount = Math.ceil(p.total / p.pageSize);
- if (!p.pageCount) p.pageCount = 1;
- //更新分页
- g._buildPager();
- }
- //加载中
- $('.l-bar-btnloading:first', g.toolbar).removeClass('l-bar-btnloading');
- if (g.trigger('beforeShowData', [g.currentData]) == false) return;
- g._clearGrid();
- g.isDataChanged = false;
- if (!data) return;
- $(".l-bar-btnload:first span", g.toolbar).removeClass("l-disabled");
- g._updateGridData();
- if (g.enabledFrozen())
- g._fillGridBody(g.rows, true);
- g._fillGridBody(g.rows, false);
- g.trigger('SysGridHeightChanged');
- if (p.totalRender)
- {
- $(".l-panel-bar-total", g.element).remove();
- $(".l-panel-bar", g.element).before('<div class="l-panel-bar-total">' + p.totalRender(g.data, g.filteredData) + '</div>');
- }
- if (p.mouseoverRowCssClass)
- {
- for (var i in g.rows)
- {
- var rowobj = $(g.getRowObj(g.rows[i]));
- if (g.enabledFrozen())
- rowobj = rowobj.add(g.getRowObj(g.rows[i], true));
- rowobj.bind('mouseover.gridrow', function ()
- {
- g._onRowOver(this, true);
- }).bind('mouseout.gridrow', function ()
- {
- g._onRowOver(this, false);
- });
- }
- }
- g.gridbody.trigger('scroll.grid');
- g.trigger('afterShowData', [g.currentData]);
- },
- _getRowDomId: function (rowdata, frozen)
- {
- return this.id + "|" + (frozen ? "1" : "2") + "|" + rowdata['__id'];
- },
- _getCellDomId: function (rowdata, column)
- {
- return this._getRowDomId(rowdata, column.frozen) + "|" + column['__id'];
- },
- _getHtmlFromData: function (data, frozen)
- {
- if (!data) return "";
- var g = this, p = this.options;
- var gridhtmlarr = [];
- for (var rowparm in data)
- {
- var item = data[rowparm];
- var rowid = item['__id'];
- if (!item) continue;
- gridhtmlarr.push('<tr');
- gridhtmlarr.push(' id="' + g._getRowDomId(item, frozen) + '"');
- gridhtmlarr.push(' class="l-grid-row'); //class start
- if (!frozen && g.enabledCheckbox() && p.isChecked && p.isChecked(item))
- {
- g.select(item);
- gridhtmlarr.push(' l-selected');
- }
- else if (g.isSelected(item))
- {
- gridhtmlarr.push(' l-selected');
- }
- if (item['__index'] % 2 == 1 && p.alternatingRow)
- gridhtmlarr.push(' l-grid-row-alt');
- gridhtmlarr.push('" '); //class end
- if (p.rowAttrRender) gridhtmlarr.push(p.rowAttrRender(item, rowid));
- if (p.tree && g.collapsedRows && g.collapsedRows.length)
- {
- var isHide = function ()
- {
- var pitem = g.getParent(item);
- while (pitem)
- {
- if ($.inArray(pitem, g.collapsedRows) != -1) return true;
- pitem = g.getParent(pitem);
- }
- return false;
- };
- if (isHide()) gridhtmlarr.push(' style="display:none;" ');
- }
- gridhtmlarr.push('>');
- $(g.columns).each(function (columnindex, column)
- {
- if (frozen != column.frozen) return;
- gridhtmlarr.push('<td');
- gridhtmlarr.push(' id="' + g._getCellDomId(item, this) + '"');
- //如果是行序号(系统列)
- if (this.isrownumber)
- {
- gridhtmlarr.push(' class="l-grid-row-cell l-grid-row-cell-rownumbers" style="width:' + this.width + 'px"><div class="l-grid-row-cell-inner"');
- if (p.fixedCellHeight)
- gridhtmlarr.push(' style = "height:' + p.rowHeight + 'px;" ');
- gridhtmlarr.push('>' + (parseInt(item['__index']) + 1) + '</div></td>');
- return;
- }
- //如果是复选框(系统列)
- if (this.ischeckbox)
- {
- gridhtmlarr.push(' class="l-grid-row-cell l-grid-row-cell-checkbox" style="width:' + this.width + 'px"><div class="l-grid-row-cell-inner"');
- if (p.fixedCellHeight)
- gridhtmlarr.push(' style = "height:' + p.rowHeight + 'px;" ');
- gridhtmlarr.push('><span class="l-grid-row-cell-btn-checkbox"></span></div></td>');
- return;
- }
- //如果是明细列(系统列)
- else if (this.isdetail)
- {
- gridhtmlarr.push(' class="l-grid-row-cell l-grid-row-cell-detail" style="width:' + this.width + 'px"><div class="l-grid-row-cell-inner"');
- if (p.fixedCellHeight)
- gridhtmlarr.push(' style = "height:' + p.rowHeight + 'px;" ');
- gridhtmlarr.push('><span class="l-grid-row-cell-detailbtn"></span></div></td>');
- return;
- }
- var colwidth = this._width;
- gridhtmlarr.push(' class="l-grid-row-cell ');
- if (g.changedCells[rowid + "_" + this['__id']]) gridhtmlarr.push("l-grid-row-cell-edited ");
- if (this.islast)
- gridhtmlarr.push('l-grid-row-cell-last ');
- gridhtmlarr.push('"');
- //if (this.columnname) gridhtmlarr.push('columnname="' + this.columnname + '"');
- gridhtmlarr.push(' style = "');
- gridhtmlarr.push('width:' + colwidth + 'px; ');
- if (column._hide)
- {
- gridhtmlarr.push('display:none;');
- }
- gridhtmlarr.push(' ">');
- gridhtmlarr.push(g._getCellHtml(item, column));
- gridhtmlarr.push('</td>');
- });
- gridhtmlarr.push('</tr>');
- }
- return gridhtmlarr.join('');
- },
- _getCellHtml: function (rowdata, column)
- {
- var g = this, p = this.options;
- if (column.isrownumber)
- return '<div class="l-grid-row-cell-inner">' + (parseInt(rowdata['__index']) + 1) + '</div>';
- var htmlarr = [];
- htmlarr.push('<div class="l-grid-row-cell-inner"');
- //htmlarr.push('<div');
- htmlarr.push(' style = "width:' + parseInt(column._width - 8) + 'px;');
- if (p.fixedCellHeight) htmlarr.push('height:' + p.rowHeight + 'px;min-height:' + p.rowHeight + 'px; ');
- if (column.align) htmlarr.push('text-align:' + column.align + ';');
- var content = g._getCellContent(rowdata, column);
- htmlarr.push('">' + content + '</div>');
- return htmlarr.join('');
- },
- _getCellContent: function (rowdata, column)
- {
- if (!rowdata || !column) return "";
- if (column.isrownumber) return parseInt(rowdata['__index']) + 1;
- var rowid = rowdata['__id'];
- var rowindex = rowdata['__index'];
- var value = column.name ? rowdata[column.name] : null;
- var g = this, p = this.options;
- var content = "";
- if (column.render)
- {
- content = column.render.call(g, rowdata, rowindex, value, column);
- }
- else if (p.formatters[column.type])
- {
- content = p.formatters[column.type].call(g, value, column);
- }
- else if (value != null)
- {
- content = value.toString();
- }
- if (p.tree && (p.tree.columnName != null && p.tree.columnName == column.name || p.tree.columnId != null && p.tree.columnId == column.id))
- {
- content = g._getTreeCellHtml(content, rowdata);
- }
- return content || "";
- },
- _getTreeCellHtml: function (oldContent, rowdata)
- {
- var level = rowdata['__level'];
- var g = this, p = this.options;
- //var isExtend = p.tree.isExtend(rowdata);
- var isExtend = $.inArray(rowdata, g.collapsedRows || []) == -1;
- var isParent = p.tree.isParent(rowdata);
- var content = "";
- level = parseInt(level) || 1;
- for (var i = 1; i < level; i++)
- {
- content += "<div class='l-grid-tree-space'></div>";
- }
- if (isExtend && isParent)
- content += "<div class='l-grid-tree-space l-grid-tree-link l-grid-tree-link-open'></div>";
- else if (isParent)
- content += "<div class='l-grid-tree-space l-grid-tree-link l-grid-tree-link-close'></div>";
- else
- content += "<div class='l-grid-tree-space'></div>";
- content += "<span class='l-grid-tree-content'>" + oldContent + "</span>";
- return content;
- },
- _applyEditor: function (obj)
- {
- var g = this, p = this.options;
- var rowcell = obj;
- var ids = rowcell.id.split('|');
- var columnid = ids[ids.length - 1];
- var column = g._columns[columnid];
- var row = $(rowcell).parent();
- var rowdata = g.getRow(row[0]);
- var rowid = rowdata['__id'];
- var rowindex = rowdata['__index'];
- if (!column || !column.editor) return;
- var columnname = column.name;
- var columnindex = column.columnindex;
- if (column.editor.type && p.editors[column.editor.type])
- {
- var currentdata = rowdata[columnname];
- var editParm = { record: rowdata, value: currentdata, column: column, rowindex: rowindex };
- if (g.trigger('beforeEdit', [editParm]) == false) return false;
- var editor = p.editors[column.editor.type];
- var jcell = $(rowcell), offset = $(rowcell).offset();
- jcell.html("");
- g.setCellEditing(rowdata, column, true);
- var width = $(rowcell).width(), height = $(rowcell).height();
- var container = $("<div class='l-grid-editor'></div>").appendTo('body');
- if ($.browser.mozilla)
- container.css({ left: offset.left, top: offset.top }).show();
- else
- container.css({ left: offset.left + 1, top: offset.top + 1 }).show();
- var editorInput = g._createEditor(editor, container, editParm, width, height);
- g.editor = { editing: true, editor: editor, input: editorInput, editParm: editParm, container: container };
- g.unbind('sysEndEdit');
- g.bind('sysEndEdit', function ()
- {
- var newValue = editor.getValue(editorInput, editParm);
- if (newValue != currentdata)
- {
- $(rowcell).addClass("l-grid-row-cell-edited");
- g.changedCells[rowid + "_" + column['__id']] = true;
- if (column.editor.onChange) column.editor.onChange(rowcell, newValue);
- editParm.value = newValue;
- if (g._checkEditAndUpdateCell(editParm))
- {
- if (column.editor.onChanged) column.editor.onChanged(rowcell, newValue);
- }
- }
- });
- }
- },
- _checkEditAndUpdateCell: function (editParm)
- {
- var g = this, p = this.options;
- if (g.trigger('beforeSubmitEdit', [editParm]) == false) return false;
- g.updateCell(editParm.column, editParm.value, editParm.record);
- if (editParm.column.render || g.enabledTotal()) g.reRender({ column: editParm.column });
- g.reRender({ rowdata: editParm.record });
- return true;
- },
- _getCurrentPageData: function (source)
- {
- var g = this, p = this.options;
- var data = {};
- data[p.root] = [];
- if (!source || !source[p.root] || !source[p.root].length)
- {
- data[p.record] = 0;
- return data;
- }
- data[p.record] = source[p.root].length;
- if (!p.newPage) p.newPage = 1;
- for (i = (p.newPage - 1) * p.pageSize; i < source[p.root].length && i < p.newPage * p.pageSize; i++)
- {
- data[p.root].push(source[p.root][i]);
- }
- return data;
- },
- //比较某一列两个数据
- _compareData: function (data1, data2, columnName, columnType)
- {
- var g = this, p = this.options;
- var val1 = data1[columnName], val2 = data2[columnName];
- if (val1 == null && val2 != null) return 1;
- else if (val1 == null && val2 == null) return 0;
- else if (val1 != null && val2 == null) return -1;
- if (p.sorters[columnType])
- return p.sorters[columnType].call(g, val1, val2);
- else
- return val1 < val2 ? -1 : val1 > val2 ? 1 : 0;
- },
- _getTotalCellContent: function (column, data)
- {
- var g = this, p = this.options;
- var totalsummaryArr = [];
- if (column.totalSummary)
- {
- var isExist = function (type)
- {
- for (var i = 0; i < types.length; i++)
- if (types[i].toLowerCase() == type.toLowerCase()) return true;
- return false;
- };
- var sum = 0, count = 0, avg = 0;
- var max = parseFloat(data[0][column.name]);
- var min = parseFloat(data[0][column.name]);
- for (var i = 0; i < data.length; i++)
- {
- count += 1;
- var value = parseFloat(data[i][column.name]);
- if (!value) continue;
- sum += value;
- if (value > max) max = value;
- if (value < min) min = value;
- }
- avg = sum * 1.0 / data.length;
- if (column.totalSummary.render)
- {
- var renderhtml = column.totalSummary.render({
- sum: sum,
- count: count,
- avg: avg,
- min: min,
- max: max
- }, column, g.data);
- totalsummaryArr.push(renderhtml);
- }
- else if (column.totalSummary.type)
- {
- var types = column.totalSummary.type.split(',');
- if (isExist('sum'))
- totalsummaryArr.push("<div>Sum=" + sum.toFixed(2) + "</div>");
- if (isExist('count'))
- totalsummaryArr.push("<div>Count=" + count + "</div>");
- if (isExist('max'))
- totalsummaryArr.push("<div>Max=" + max.toFixed(2) + "</div>");
- if (isExist('min'))
- totalsummaryArr.push("<div>Min=" + min.toFixed(2) + "</div>");
- if (isExist('avg'))
- totalsummaryArr.push("<div>Avg=" + avg.toFixed(2) + "</div>");
- }
- }
- return totalsummaryArr.join('');
- },
- _getTotalSummaryHtml: function (data, classCssName, frozen)
- {
- var g = this, p = this.options;
- var totalsummaryArr = [];
- if (classCssName)
- totalsummaryArr.push('<tr class="l-grid-totalsummary ' + classCssName + '">');
- else
- totalsummaryArr.push('<tr class="l-grid-totalsummary">');
- $(g.columns).each(function (columnindex, column)
- {
- if (this.frozen != frozen) return;
- //如果是行序号(系统列)
- if (this.isrownumber)
- {
- totalsummaryArr.push('<td class="l-grid-totalsummary-cell l-grid-totalsummary-cell-rownumbers" style="width:' + this.width + 'px"><div> </div></td>');
- return;
- }
- //如果是复选框(系统列)
- if (this.ischeckbox)
- {
- totalsummaryArr.push('<td class="l-grid-totalsummary-cell l-grid-totalsummary-cell-checkbox" style="width:' + this.width + 'px"><div> </div></td>');
- return;
- }
- //如果是明细列(系统列)
- else if (this.isdetail)
- {
- totalsummaryArr.push('<td class="l-grid-totalsummary-cell l-grid-totalsummary-cell-detail" style="width:' + this.width + 'px"><div> </div></td>');
- return;
- }
- totalsummaryArr.push('<td class="l-grid-totalsummary-cell');
- if (this.islast)
- totalsummaryArr.push(" l-grid-totalsummary-cell-last");
- totalsummaryArr.push('" ');
- totalsummaryArr.push('id="' + g.id + "|total" + g.totalNumber + "|" + column.__id + '" ');
- totalsummaryArr.push('width="' + this._width + '" ');
- columnname = this.columnname;
- if (columnname)
- {
- totalsummaryArr.push('columnname="' + columnname + '" ');
- }
- totalsummaryArr.push('columnindex="' + columnindex + '" ');
- totalsummaryArr.push('><div class="l-grid-totalsummary-cell-inner"');
- if (column.align)
- totalsummaryArr.push(' style="text-Align:' + column.align + ';"');
- totalsummaryArr.push('>');
- totalsummaryArr.push(g._getTotalCellContent(column, data));
- totalsummaryArr.push('</div></td>');
- });
- totalsummaryArr.push('</tr>');
- if (!frozen) g.totalNumber++;
- return totalsummaryArr.join('');
- },
- _bulidTotalSummary: function (frozen)
- {
- var g = this, p = this.options;
- if (!g.isTotalSummary()) return false;
- if (!g.currentData || g.currentData[p.root].length == 0) return false;
- var totalRow = $(g._getTotalSummaryHtml(g.currentData[p.root], null, frozen));
- $("tbody:first", frozen ? g.f.gridbody : g.gridbody).append(totalRow);
- },
- _buildPager: function ()
- {
- var g = this, p = this.options;
- $('.pcontrol input', g.toolbar).val(p.page);
- if (!p.pageCount) p.pageCount = 1;
- $('.pcontrol span', g.toolbar).html(p.pageCount);
- var r1 = parseInt((p.page - 1) * p.pageSize) + 1.0;
- var r2 = parseInt(r1) + parseInt(p.pageSize) - 1;
- if (!p.total) p.total = 0;
- if (p.total < r2) r2 = p.total;
- if (!p.total) r1 = r2 = 0;
- if (r1 < 0) r1 = 0;
- if (r2 < 0) r2 = 0;
- var stat = p.pageStatMessage;
- stat = stat.replace(/{from}/, r1);
- stat = stat.replace(/{to}/, r2);
- stat = stat.replace(/{total}/, p.total);
- stat = stat.replace(/{pagesize}/, p.pageSize);
- $('.l-bar-text', g.toolbar).html(stat);
- if (!p.total)
- {
- $(".l-bar-btnfirst span,.l-bar-btnprev span,.l-bar-btnnext span,.l-bar-btnlast span", g.toolbar)
- .addClass("l-disabled");
- }
- if (p.page == 1)
- {
- $(".l-bar-btnfirst span", g.toolbar).addClass("l-disabled");
- $(".l-bar-btnprev span", g.toolbar).addClass("l-disabled");
- }
- else if (p.page > p.pageCount && p.pageCount > 0)
- {
- $(".l-bar-btnfirst span", g.toolbar).removeClass("l-disabled");
- $(".l-bar-btnprev span", g.toolbar).removeClass("l-disabled");
- }
- if (p.page == p.pageCount)
- {
- $(".l-bar-btnlast span", g.toolbar).addClass("l-disabled");
- $(".l-bar-btnnext span", g.toolbar).addClass("l-disabled");
- }
- else if (p.page < p.pageCount && p.pageCount > 0)
- {
- $(".l-bar-btnlast span", g.toolbar).removeClass("l-disabled");
- $(".l-bar-btnnext span", g.toolbar).removeClass("l-disabled");
- }
- },
- _getRowIdByDomId: function (domid)
- {
- var ids = domid.split('|');
- var rowid = ids[2];
- return rowid;
- },
- _getRowByDomId: function (domid)
- {
- return this.records[this._getRowIdByDomId(domid)];
- },
- _getSrcElementByEvent: function (e)
- {
- var g = this;
- var obj = (e.target || e.srcElement);
- var jobjs = $(obj).parents().add(obj);
- var fn = function (parm)
- {
- for (var i = 0, l = jobjs.length; i < l; i++)
- {
- if (typeof parm == "string")
- {
- if ($(jobjs[i]).hasClass(parm)) return jobjs[i];
- }
- else if (typeof parm == "object")
- {
- if (jobjs[i] == parm) return jobjs[i];
- }
- }
- return null;
- };
- if (fn("l-grid-editor")) return { editing: true, editor: fn("l-grid-editor") };
- if (jobjs.index(this.element) == -1) return { out: true };
- var indetail = false;
- if (jobjs.hasClass("l-grid-detailpanel") && g.detailrows)
- {
- for (var i = 0, l = g.detailrows.length; i < l; i++)
- {
- if (jobjs.index(g.detailrows[i]) != -1)
- {
- indetail = true;
- break;
- }
- }
- }
- var r = {
- grid: fn("l-panel"),
- indetail: indetail,
- frozen: fn(g.gridview1[0]) ? true : false,
- header: fn("l-panel-header"), //标题
- gridheader: fn("l-grid-header"), //表格头
- gridbody: fn("l-grid-body"),
- total: fn("l-panel-bar-total"), //总汇总
- popup: fn("l-grid-popup"),
- toolbar: fn("l-panel-bar")
- };
- if (r.gridheader)
- {
- r.hrow = fn("l-grid-hd-row");
- r.hcell = fn("l-grid-hd-cell");
- r.hcelltext = fn("l-grid-hd-cell-text");
- r.checkboxall = fn("l-grid-hd-cell-checkbox");
- if (r.hcell)
- {
- var columnid = r.hcell.id.split('|')[2];
- r.column = g._columns[columnid];
- }
- }
- if (r.gridbody)
- {
- r.row = fn("l-grid-row");
- r.cell = fn("l-grid-row-cell");
- r.checkbox = fn("l-grid-row-cell-btn-checkbox");
- r.groupbtn = fn("l-grid-group-togglebtn");
- r.grouprow = fn("l-grid-grouprow");
- r.detailbtn = fn("l-grid-row-cell-detailbtn");
- r.detailrow = fn("l-grid-detailpanel");
- r.totalrow = fn("l-grid-totalsummary");
- r.totalcell = fn("l-grid-totalsummary-cell");
- r.rownumberscell = $(r.cell).hasClass("l-grid-row-cell-rownumbers") ? r.cell : null;
- r.detailcell = $(r.cell).hasClass("l-grid-row-cell-detail") ? r.cell : null;
- r.checkboxcell = $(r.cell).hasClass("l-grid-row-cell-checkbox") ? r.cell : null;
- r.treelink = fn("l-grid-tree-link");
- r.editor = fn("l-grid-editor");
- if (r.row) r.data = this._getRowByDomId(r.row.id);
- if (r.cell) r.editing = $(r.cell).hasClass("l-grid-row-cell-editing");
- if (r.editor) r.editing = true;
- if (r.editing) r.out = false;
- }
- if (r.toolbar)
- {
- r.first = fn("l-bar-btnfirst");
- r.last = fn("l-bar-btnlast");
- r.next = fn("l-bar-btnnext");
- r.prev = fn("l-bar-btnprev");
- r.load = fn("l-bar-btnload");
- r.button = fn("l-bar-button");
- }
- return r;
- },
- _setEvent: function ()
- {
- var g = this, p = this.options;
- g.grid.bind("mousedown.grid", function (e)
- {
- g._onMouseDown.call(g, e);
- });
- g.grid.bind("dblclick.grid", function (e)
- {
- g._onDblClick.call(g, e);
- });
- g.grid.bind("contextmenu.grid", function (e)
- {
- return g._onContextmenu.call(g, e);
- });
- $(document).bind("mouseup.grid", function (e)
- {
- g._onMouseUp.call(g, e);
- });
- $(document).bind("click.grid", function (e)
- {
- g._onClick.call(g, e);
- });
- $(window).bind("resize.grid", function (e)
- {
- g._onResize.call(g);
- });
- $(document).bind("keydown.grid", function (e)
- {
- if (e.ctrlKey) g.ctrlKey = true;
- });
- $(document).bind("keyup.grid", function (e)
- {
- delete g.ctrlKey;
- });
- //表体 - 滚动联动事件
- g.gridbody.bind('scroll.grid', function ()
- {
- var scrollLeft = g.gridbody.scrollLeft();
- var scrollTop = g.gridbody.scrollTop();
- if (scrollLeft != null)
- g.gridheader[0].scrollLeft = scrollLeft;
- if (scrollTop != null)
- g.f.gridbody[0].scrollTop = scrollTop;
- g.endEdit();
- g.trigger('SysGridHeightChanged');
- });
- //工具条 - 切换每页记录数事件
- $('select', g.toolbar).change(function ()
- {
- if (g.isDataChanged && !confirm(p.isContinueByDataChanged))
- return false;
- p.newPage = 1;
- p.pageSize = this.value;
- g.loadData(p.where);
- });
- //工具条 - 切换当前页事件
- $('span.pcontrol :text', g.toolbar).blur(function (e)
- {
- g.changePage('input');
- });
- $("div.l-bar-button", g.toolbar).hover(function ()
- {
- $(this).addClass("l-bar-button-over");
- }, function ()
- {
- $(this).removeClass("l-bar-button-over");
- });
- //列拖拽支持
- if ($.fn.ligerDrag && p.colDraggable)
- {
- 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');
- g.gridheader.add(g.f.gridheader).ligerDrag({ revert: true, animate: false,
- proxyX: 0, proxyY: 0,
- proxy: function (draggable, e)
- {
- var src = g._getSrcElementByEvent(e);
- if (src.hcell && src.column)
- {
- var content = $(".l-grid-hd-cell-text:first", src.hcell).html();
- var proxy = $("<div class='l-drag-proxy' style='display:none'><div class='l-drop-icon l-drop-no'></div></div>").appendTo('body');
- proxy.append(content);
- return proxy;
- }
- },
- onRevert: function () { return false; },
- onRendered: function ()
- {
- this.set('cursor', 'default');
- g.children[this.id] = this;
- },
- onStartDrag: function (current, e)
- {
- if (e.button == 2) return false;
- if (g.colresizing) return false;
- this.set('cursor', 'default');
- var src = g._getSrcElementByEvent(e);
- if (!src.hcell || !src.column || src.column.issystem || src.hcelltext) return false;
- if ($(src.hcell).css('cursor').indexOf('resize') != -1) return false;
- this.draggingColumn = src.column;
- g.coldragging = true;
- var gridOffset = g.grid.offset();
- this.validRange = {
- top: gridOffset.top,
- bottom: gridOffset.top + g.gridheader.height(),
- left: gridOffset.left - 10,
- right: gridOffset.left + g.grid.width() + 10
- };
- },
- onDrag: function (current, e)
- {
- this.set('cursor', 'default');
- var column = this.draggingColumn;
- if (!column) return false;
- if (g.colresizing) return false;
- if (g.colDropIn == null)
- g.colDropIn = -1;
- var pageX = e.pageX;
- var pageY = e.pageY;
- var visit = false;
- var gridOffset = g.grid.offset();
- var validRange = this.validRange;
- if (pageX < validRange.left || pageX > validRange.right
- || pageY > validRange.bottom || pageY < validRange.top)
- {
- g.colDropIn = -1;
- g.colDroptip.hide();
- this.proxy.find(".l-drop-icon:first").removeClass("l-drop-yes").addClass("l-drop-no");
- return;
- }
- for (var colid in g._columns)
- {
- var col = g._columns[colid];
- if (column == col)
- {
- visit = true;
- continue;
- }
- if (col.issystem) continue;
- var sameLevel = col['__level'] == column['__level'];
- var isAfter = !sameLevel ? false : visit ? true : false;
- if (column.frozen != col.frozen) isAfter = col.frozen ? false : true;
- if (g.colDropIn != -1 && g.colDropIn != colid) continue;
- var cell = document.getElementById(col['__domid']);
- var offset = $(cell).offset();
- var range = {
- top: offset.top,
- bottom: offset.top + $(cell).height(),
- left: offset.left - 10,
- right: offset.left + 10
- };
- if (isAfter)
- {
- var cellwidth = $(cell).width();
- range.left += cellwidth;
- range.right += cellwidth;
- }
- if (pageX > range.left && pageX < range.right && pageY > range.top && pageY < range.bottom)
- {
- var height = p.headerRowHeight;
- if (col['__rowSpan']) height *= col['__rowSpan'];
- g.colDroptip.css({
- left: range.left + 5,
- top: range.top - 9,
- height: height + 9 * 2
- }).show();
- g.colDropIn = colid;
- g.colDropDir = isAfter ? "right" : "left";
- this.proxy.find(".l-drop-icon:first").removeClass("l-drop-no").addClass("l-drop-yes");
- break;
- }
- else if (g.colDropIn != -1)
- {
- g.colDropIn = -1;
- g.colDroptip.hide();
- this.proxy.find(".l-drop-icon:first").removeClass("l-drop-yes").addClass("l-drop-no");
- }
- }
- },
- onStopDrag: function (current, e)
- {
- var column = this.draggingColumn;
- g.coldragging = false;
- if (g.colDropIn != -1)
- {
- g.changeCol.ligerDefer(g, 0, [column, g.colDropIn, g.colDropDir == "right"]);
- g.colDropIn = -1;
- }
- g.colDroptip.hide();
- this.set('cursor', 'default');
- }
- });
- }
- //行拖拽支持
- if ($.fn.ligerDrag && p.rowDraggable)
- {
- g.rowDroptip = $("<div class='l-drag-rowdroptip' style='display:none'></div>").appendTo('body');
- g.gridbody.add(g.f.gridbody).ligerDrag({ revert: true, animate: false,
- proxyX: 0, proxyY: 0,
- proxy: function (draggable, e)
- {
- var src = g._getSrcElementByEvent(e);
- if (src.row)
- {
- var content = p.draggingMessage.replace(/{count}/, draggable.draggingRows ? draggable.draggingRows.length : 1);
- if (p.rowDraggingRender)
- {
- content = p.rowDraggingRender(draggable.draggingRows, draggable, g);
- }
- var proxy = $("<div class='l-drag-proxy' style='display:none'><div class='l-drop-icon l-drop-no'></div>" + content + "</div>").appendTo('body');
- return proxy;
- }
- },
- onRevert: function () { return false; },
- onRendered: function ()
- {
- this.set('cursor', 'default');
- g.children[this.id] = this;
- },
- onStartDrag: function (current, e)
- {
- if (e.button == 2) return false;
- if (g.colresizing) return false;
- if (!g.columns.length) return false;
- this.set('cursor', 'default');
- var src = g._getSrcElementByEvent(e);
- if (!src.cell || !src.data || src.checkbox) return false;
- var ids = src.cell.id.split('|');
- var column = g._columns[ids[ids.length - 1]];
- if (src.rownumberscell || src.detailcell || src.checkboxcell || column == g.columns[0])
- {
- if (g.enabledCheckbox())
- {
- this.draggingRows = g.getSelecteds();
- if (!this.draggingRows || !this.draggingRows.length) return false;
- }
- else
- {
- this.draggingRows = [src.data];
- }
- this.draggingRow = src.data;
- this.set('cursor', 'move');
- g.rowdragging = true;
- this.validRange = {
- top: g.gridbody.offset().top,
- bottom: g.gridbody.offset().top + g.gridbody.height(),
- left: g.grid.offset().left - 10,
- right: g.grid.offset().left + g.grid.width() + 10
- };
- }
- else
- {
- return false;
- }
- },
- onDrag: function (current, e)
- {
- var rowdata = this.draggingRow;
- if (!rowdata) return false;
- var rows = this.draggingRows ? this.draggingRows : [rowdata];
- if (g.colresizing) return false;
- if (g.rowDropIn == null) g.rowDropIn = -1;
- var pageX = e.pageX;
- var pageY = e.pageY;
- var visit = false;
- var validRange = this.validRange;
- if (pageX < validRange.left || pageX > validRange.right
- || pageY > validRange.bottom || pageY < validRange.top)
- {
- g.rowDropIn = -1;
- g.rowDroptip.hide();
- this.proxy.find(".l-drop-icon:first").removeClass("l-drop-yes l-drop-add").addClass("l-drop-no");
- return;
- }
- for (var i in g.rows)
- {
- var rd = g.rows[i];
- var rowid = rd['__id'];
- if (rowdata == rd) visit = true;
- if ($.inArray(rd, rows) != -1) continue;
- var isAfter = visit ? true : false;
- if (g.rowDropIn != -1 && g.rowDropIn != rowid) continue;
- var rowobj = g.getRowObj(rowid);
- var offset = $(rowobj).offset();
- var range = {
- top: offset.top - 4,
- bottom: offset.top + $(rowobj).height() + 4,
- left: g.grid.offset().left,
- right: g.grid.offset().left + g.grid.width()
- };
- if (pageX > range.left && pageX < range.right && pageY > range.top && pageY < range.bottom)
- {
- var lineTop = offset.top;
- if (isAfter) lineTop += $(rowobj).height();
- g.rowDroptip.css({
- left: range.left,
- top: lineTop,
- width: range.right - range.left
- }).show();
- g.rowDropIn = rowid;
- g.rowDropDir = isAfter ? "bottom" : "top";
- if (p.tree && pageY > range.top + 5 && pageY < range.bottom - 5)
- {
- this.proxy.find(".l-drop-icon:first").removeClass("l-drop-no l-drop-yes").addClass("l-drop-add");
- g.rowDroptip.hide();
- g.rowDropInParent = true;
- }
- else
- {
- this.proxy.find(".l-drop-icon:first").removeClass("l-drop-no l-drop-add").addClass("l-drop-yes");
- g.rowDroptip.show();
- g.rowDropInParent = false;
- }
- break;
- }
- else if (g.rowDropIn != -1)
- {
- g.rowDropIn = -1;
- g.rowDropInParent = false;
- g.rowDroptip.hide();
- this.proxy.find(".l-drop-icon:first").removeClass("l-drop-yes l-drop-add").addClass("l-drop-no");
- }
- }
- },
- onStopDrag: function (current, e)
- {
- var rows = this.draggingRows;
- g.rowdragging = false;
- for (var i = 0; i < rows.length; i++)
- {
- var children = rows[i].children;
- if (children)
- {
- rows = $.grep(rows, function (node, i)
- {
- var isIn = $.inArray(node, children) == -1;
- return isIn;
- });
- }
- }
- if (g.rowDropIn != -1)
- {
- if (p.tree)
- {
- var neardata, prow;
- if (g.rowDropInParent)
- {
- prow = g.getRow(g.rowDropIn);
- }
- else
- {
- neardata = g.getRow(g.rowDropIn);
- prow = g.getParent(neardata);
- }
- g.appendRange(rows, prow, neardata, g.rowDropDir != "bottom");
- g.trigger('rowDragDrop', {
- rows: rows,
- parent: prow,
- near: neardata,
- after: g.rowDropDir == "bottom"
- });
- }
- else
- {
- g.moveRange(rows, g.rowDropIn, g.rowDropDir == "bottom");
- g.trigger('rowDragDrop', {
- rows: rows,
- parent: prow,
- near: g.getRow(g.rowDropIn),
- after: g.rowDropDir == "bottom"
- });
- }
- g.rowDropIn = -1;
- }
- g.rowDroptip.hide();
- this.set('cursor', 'default');
- }
- });
- }
- },
- _onRowOver: function (rowParm, over)
- {
- if (l.draggable.dragging) return;
- var g = this, p = this.options;
- var rowdata = g.getRow(rowParm);
- var methodName = over ? "addClass" : "removeClass";
- if (g.enabledFrozen())
- $(g.getRowObj(rowdata, true))[methodName](p.mouseoverRowCssClass);
- $(g.getRowObj(rowdata, false))[methodName](p.mouseoverRowCssClass);
- },
- _onMouseUp: function (e)
- {
- var g = this, p = this.options;
- if (l.draggable.dragging)
- {
- var src = g._getSrcElementByEvent(e);
- //drop in header cell
- if (src.hcell && src.column)
- {
- g.trigger('dragdrop', [{ type: 'header', column: src.column, cell: src.hcell }, e]);
- }
- else if (src.row)
- {
- g.trigger('dragdrop', [{ type: 'row', record: src.data, row: src.row }, e]);
- }
- }
- },
- _onMouseDown: function (e)
- {
- var g = this, p = this.options;
- },
- _onContextmenu: function (e)
- {
- var g = this, p = this.options;
- var src = g._getSrcElementByEvent(e);
- if (src.row)
- {
- if (p.whenRClickToSelect)
- g.select(src.data);
- if (g.hasBind('contextmenu'))
- {
- return g.trigger('contextmenu', [{ data: src.data, rowindex: src.data['__index'], row: src.row }, e]);
- }
- }
- else if (src.hcell)
- {
- if (!p.allowHideColumn) return true;
- var columnindex = $(src.hcell).attr("columnindex");
- if (columnindex == undefined) return true;
- var left = (e.pageX - g.body.offset().left + parseInt(g.body[0].scrollLeft));
- if (columnindex == g.columns.length - 1) left -= 50;
- g.popup.css({ left: left, top: g.gridheader.height() + 1 });
- g.popup.toggle();
- return false;
- }
- },
- _onDblClick: function (e)
- {
- var g = this, p = this.options;
- var src = g._getSrcElementByEvent(e);
- if (src.row)
- {
- g.trigger('dblClickRow', [src.data, src.data['__id'], src.row]);
- }
- },
- _onClick: function (e)
- {
- var obj = (e.target || e.srcElement);
- var g = this, p = this.options;
- var src = g._getSrcElementByEvent(e);
- if (src.out)
- {
- if (g.editor.editing && !$.ligerui.win.masking) g.endEdit();
- if (p.allowHideColumn) g.popup.hide();
- return;
- }
- if (src.indetail || src.editing)
- {
- return;
- }
- if (g.editor.editing)
- {
- g.endEdit();
- }
- if (p.allowHideColumn)
- {
- if (!src.popup)
- {
- g.popup.hide();
- }
- }
- if (src.checkboxall) //复选框全选
- {
- var row = $(src.hrow);
- var uncheck = row.hasClass("l-checked");
- if (g.trigger('beforeCheckAllRow', [!uncheck, g.element]) == false) return false;
- if (uncheck)
- {
- row.removeClass("l-checked");
- }
- else
- {
- row.addClass("l-checked");
- }
- g.selected = [];
- for (var rowid in g.records)
- {
- if (uncheck)
- g.unselect(g.records[rowid]);
- else
- g.select(g.records[rowid]);
- }
- g.trigger('checkAllRow', [!uncheck, g.element]);
- }
- else if (src.hcelltext) //排序
- {
- var hcell = $(src.hcelltext).parent().parent();
- if (!p.enabledSort || !src.column) return;
- if (src.column.isSort == false) return;
- if (p.url && g.isDataChanged && !confirm(p.isContinueByDataChanged)) return;
- var sort = $(".l-grid-hd-cell-sort:first", hcell);
- var columnName = src.column.name;
- if (!columnName) return;
- if (sort.length > 0)
- {
- if (sort.hasClass("l-grid-hd-cell-sort-asc"))
- {
- sort.removeClass("l-grid-hd-cell-sort-asc").addClass("l-grid-hd-cell-sort-desc");
- hcell.removeClass("l-grid-hd-cell-asc").addClass("l-grid-hd-cell-desc");
- g.changeSort(columnName, 'desc');
- }
- else if (sort.hasClass("l-grid-hd-cell-sort-desc"))
- {
- sort.removeClass("l-grid-hd-cell-sort-desc").addClass("l-grid-hd-cell-sort-asc");
- hcell.removeClass("l-grid-hd-cell-desc").addClass("l-grid-hd-cell-asc");
- g.changeSort(columnName, 'asc');
- }
- }
- else
- {
- hcell.removeClass("l-grid-hd-cell-desc").addClass("l-grid-hd-cell-asc");
- $(src.hcelltext).after("<span class='l-grid-hd-cell-sort l-grid-hd-cell-sort-asc'> </span>");
- g.changeSort(columnName, 'asc');
- }
- $(".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();
- }
- //明细
- else if (src.detailbtn && p.detail)
- {
- var item = src.data;
- var row = $([g.getRowObj(item, false)]);
- if (g.enabledFrozen()) row = row.add(g.getRowObj(item, true));
- var rowid = item['__id'];
- if ($(src.detailbtn).hasClass("l-open"))
- {
- if (p.detail.onCollapse)
- p.detail.onCollapse(item, $(".l-grid-detailpanel-inner:first", nextrow)[0]);
- row.next("tr.l-grid-detailpanel").hide();
- $(src.detailbtn).removeClass("l-open");
- }
- else
- {
- var nextrow = row.next("tr.l-grid-detailpanel");
- if (nextrow.length > 0)
- {
- nextrow.show();
- if (p.detail.onExtend)
- p.detail.onExtend(item, $(".l-grid-detailpanel-inner:first", nextrow)[0]);
- $(src.detailbtn).addClass("l-open");
- g.trigger('SysGridHeightChanged');
- return;
- }
- $(src.detailbtn).addClass("l-open");
- var frozenColNum = 0;
- for (var i = 0; i < g.columns.length; i++)
- if (g.columns[i].frozen) frozenColNum++;
- var detailRow = $("<tr class='l-grid-detailpanel'><td><div class='l-grid-detailpanel-inner' style='display:none'></div></td></tr>");
- var detailFrozenRow = $("<tr class='l-grid-detailpanel'><td><div class='l-grid-detailpanel-inner' style='display:none'></div></td></tr>");
- detailRow.attr("id", g.id + "|detail|" + rowid);
- g.detailrows = g.detailrows || [];
- g.detailrows.push(detailRow[0]);
- g.detailrows.push(detailFrozenRow[0]);
- var detailRowInner = $("div:first", detailRow);
- detailRowInner.parent().attr("colSpan", g.columns.length - frozenColNum);
- row.eq(0).after(detailRow);
- if (frozenColNum > 0)
- {
- detailFrozenRow.find("td:first").attr("colSpan", frozenColNum);
- row.eq(1).after(detailFrozenRow);
- }
- if (p.detail.onShowDetail)
- {
- p.detail.onShowDetail(item, detailRowInner[0], function ()
- {
- g.trigger('SysGridHeightChanged');
- });
- $("div:first", detailFrozenRow).add(detailRowInner).show().height(p.detail.height || p.detailHeight);
- }
- else if (p.detail.render)
- {
- detailRowInner.append(p.detail.render());
- detailRowInner.show();
- }
- g.trigger('SysGridHeightChanged');
- }
- }
- else if (src.groupbtn)
- {
- var grouprow = $(src.grouprow);
- var opening = true;
- if ($(src.groupbtn).hasClass("l-grid-group-togglebtn-close"))
- {
- $(src.groupbtn).removeClass("l-grid-group-togglebtn-close");
- if (grouprow.hasClass("l-grid-grouprow-last"))
- {
- $("td:first", grouprow).width('auto');
- }
- }
- else
- {
- opening = false;
- $(src.groupbtn).addClass("l-grid-group-togglebtn-close");
- if (grouprow.hasClass("l-grid-grouprow-last"))
- {
- $("td:first", grouprow).width(g.gridtablewidth);
- }
- }
- var currentRow = grouprow.next(".l-grid-row,.l-grid-totalsummary-group,.l-grid-detailpanel");
- while (true)
- {
- if (currentRow.length == 0) break;
- if (opening)
- {
- currentRow.show();
- //如果是明细展开的行,并且之前的状态已经是关闭的,隐藏之
- 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"))
- {
- currentRow.hide();
- }
- }
- else
- {
- currentRow.hide();
- }
- currentRow = currentRow.next(".l-grid-row,.l-grid-totalsummary-group,.l-grid-detailpanel");
- }
- g.trigger('SysGridHeightChanged');
- }
- //树 - 伸展/收缩节点
- else if (src.treelink)
- {
- g.toggle(src.data);
- }
- else if (src.row && g.enabledCheckbox()) //复选框选择行
- {
- //复选框
- var selectRowButtonOnly = p.selectRowButtonOnly ? true : false;
- if (p.enabledEdit) selectRowButtonOnly = true;
- if (src.checkbox || !selectRowButtonOnly)
- {
- var row = $(src.row);
- var uncheck = row.hasClass("l-selected");
- if (g.trigger('beforeCheckRow', [!uncheck, src.data, src.data['__id'], src.row]) == false)
- return false;
- var met = uncheck ? 'unselect' : 'select';
- g[met](src.data);
- if (p.tree && p.autoCheckChildren)
- {
- var children = g.getChildren(src.data, true);
- for (var i = 0, l = children.length; i < l; i++)
- {
- g[met](children[i]);
- }
- }
- g.trigger('checkRow', [!uncheck, src.data, src.data['__id'], src.row]);
- }
- if (!src.checkbox && src.cell && p.enabledEdit && p.clickToEdit)
- {
- g._applyEditor(src.cell);
- }
- }
- else if (src.row && !g.enabledCheckbox())
- {
- if (src.cell && p.enabledEdit && p.clickToEdit)
- {
- g._applyEditor(src.cell);
- }
- //选择行
- if ($(src.row).hasClass("l-selected"))
- {
- if (!p.allowUnSelectRow)
- {
- $(src.row).addClass("l-selected-again");
- return;
- }
- g.unselect(src.data);
- }
- else
- {
- g.select(src.data);
- }
- }
- else if (src.toolbar)
- {
- if (src.first)
- {
- if (g.trigger('toFirst', [g.element]) == false) return false;
- g.changePage('first');
- }
- else if (src.prev)
- {
- if (g.trigger('toPrev', [g.element]) == false) return false;
- g.changePage('prev');
- }
- else if (src.next)
- {
- if (g.trigger('toNext', [g.element]) == false) return false;
- g.changePage('next');
- }
- else if (src.last)
- {
- if (g.trigger('toLast', [g.element]) == false) return false;
- g.changePage('last');
- }
- else if (src.load)
- {
- if ($("span", src.load).hasClass("l-disabled")) return false;
- if (g.trigger('reload', [g.element]) == false) return false;
- if (p.url && g.isDataChanged && !confirm(p.isContinueByDataChanged))
- return false;
- g.loadData(p.where);
- }
- }
- },
- select: function (rowParm)
- {
- var g = this, p = this.options;
- var rowdata = g.getRow(rowParm);
- var rowid = rowdata['__id'];
- var rowobj = g.getRowObj(rowid);
- var rowobj1 = g.getRowObj(rowid, true);
- if (!g.enabledCheckbox() && !g.ctrlKey) //单选
- {
- for (var i in g.selected)
- {
- var o = g.selected[i];
- if (o['__id'] in g.records)
- {
- $(g.getRowObj(o)).removeClass("l-selected l-selected-again");
- if (g.enabledFrozen())
- $(g.getRowObj(o, true)).removeClass("l-selected l-selected-again");
- }
- }
- g.selected = [];
- }
- if (rowobj) $(rowobj).addClass("l-selected");
- if (rowobj1) $(rowobj1).addClass("l-selected");
- g.selected[g.selected.length] = rowdata;
- g.trigger('selectRow', [rowdata, rowid, rowobj]);
- },
- unselect: function (rowParm)
- {
- var g = this, p = this.options;
- var rowdata = g.getRow(rowParm);
- var rowid = rowdata['__id'];
- var rowobj = g.getRowObj(rowid);
- var rowobj1 = g.getRowObj(rowid, true);
- $(rowobj).removeClass("l-selected l-selected-again");
- if (g.enabledFrozen())
- $(rowobj1).removeClass("l-selected l-selected-again");
- g._removeSelected(rowdata);
- g.trigger('unSelectRow', [rowdata, rowid, rowobj]);
- },
- isSelected: function (rowParm)
- {
- var g = this, p = this.options;
- var rowdata = g.getRow(rowParm);
- for (var i in g.selected)
- {
- if (g.selected[i] == rowdata) return true;
- }
- return false;
- },
- _onResize: function ()
- {
- var g = this, p = this.options;
- if (p.height && p.height != 'auto')
- {
- var windowHeight = $(window).height();
- //if(g.windowHeight != undefined && g.windowHeight == windowHeight) return;
- var h = 0;
- var parentHeight = null;
- if (typeof (p.height) == "string" && p.height.indexOf('%') > 0)
- {
- var gridparent = g.grid.parent();
- if (p.InWindow)
- {
- parentHeight = windowHeight;
- parentHeight -= parseInt($('body').css('paddingTop'));
- parentHeight -= parseInt($('body').css('paddingBottom'));
- }
- else
- {
- parentHeight = gridparent.height();
- }
- h = parentHeight * parseFloat(p.height) * 0.01;
- if (p.InWindow || gridparent[0].tagName.toLowerCase() == "body")
- h -= (g.grid.offset().top - parseInt($('body').css('paddingTop')));
- }
- else
- {
- h = parseInt(p.height);
- }
- h += p.heightDiff;
- g.windowHeight = windowHeight;
- g._setHeight(h);
- }
- if (g.enabledFrozen())
- {
- var gridView1Width = g.gridview1.width();
- var gridViewWidth = g.gridview.width()
- g.gridview2.css({
- width: gridViewWidth - gridView1Width
- });
- }
- g.trigger('SysGridHeightChanged');
- }
- });
- $.ligerui.controls.Grid.prototype.enabledTotal = $.ligerui.controls.Grid.prototype.isTotalSummary;
- $.ligerui.controls.Grid.prototype.add = $.ligerui.controls.Grid.prototype.addRow;
- $.ligerui.controls.Grid.prototype.update = $.ligerui.controls.Grid.prototype.updateRow;
- $.ligerui.controls.Grid.prototype.append = $.ligerui.controls.Grid.prototype.appendRow;
- $.ligerui.controls.Grid.prototype.getSelected = $.ligerui.controls.Grid.prototype.getSelectedRow;
- $.ligerui.controls.Grid.prototype.getSelecteds = $.ligerui.controls.Grid.prototype.getSelectedRows;
- $.ligerui.controls.Grid.prototype.getCheckedRows = $.ligerui.controls.Grid.prototype.getSelectedRows;
- $.ligerui.controls.Grid.prototype.getCheckedRowObjs = $.ligerui.controls.Grid.prototype.getSelectedRowObjs;
- $.ligerui.controls.Grid.prototype.setOptions = $.ligerui.controls.Grid.prototype.set;
- })(jQuery);/**
- * jQuery ligerUI 1.1.9
- *
- * http://ligerui.com
- *
- * Author daomi 2012 [ gd_star@163.com ]
- *
- */
- (function ($)
- {
- $.fn.ligerLayout = function (options)
- {
- return $.ligerui.run.call(this, "ligerLayout", arguments);
- };
- $.fn.ligerGetLayoutManager = function ()
- {
- return $.ligerui.run.call(this, "ligerGetLayoutManager", arguments);
- };
- $.ligerDefaults.Layout = {
- topHeight: 50,
- bottomHeight: 50,
- leftWidth: 110,
- centerWidth: 300,
- rightWidth: 170,
- InWindow: true, //是否以窗口的高度为准 height设置为百分比时可用
- heightDiff: 0, //高度补差
- height: '100%', //高度
- onHeightChanged: null,
- isLeftCollapse: false, //初始化时 左边是否隐藏
- isRightCollapse: false, //初始化时 右边是否隐藏
- allowLeftCollapse: true, //是否允许 左边可以隐藏
- allowRightCollapse: true, //是否允许 右边可以隐藏
- allowLeftResize: true, //是否允许 左边可以调整大小
- allowRightResize: true, //是否允许 右边可以调整大小
- allowTopResize: true, //是否允许 头部可以调整大小
- allowBottomResize: true, //是否允许 底部可以调整大小
- space: 3, //间隔
- onEndResize: null, //调整大小结束事件
- minLeftWidth: 80, //调整左侧宽度时的最小允许宽度
- minRightWidth: 80 //调整右侧宽度时的最小允许宽度
- };
- $.ligerMethos.Layout = {};
- $.ligerui.controls.Layout = function (element, options)
- {
- $.ligerui.controls.Layout.base.constructor.call(this, element, options);
- };
- $.ligerui.controls.Layout.ligerExtend($.ligerui.core.UIComponent, {
- __getType: function ()
- {
- return 'Layout';
- },
- __idPrev: function ()
- {
- return 'Layout';
- },
- _extendMethods: function ()
- {
- return $.ligerMethos.Layout;
- },
- _render: function ()
- {
- var g = this, p = this.options;
- g.layout = $(this.element);
- g.layout.addClass("l-layout");
- g.width = g.layout.width();
- //top
- if ($("> div[position=top]", g.layout).length > 0)
- {
- g.top = $("> div[position=top]", g.layout).wrap('<div class="l-layout-top" style="top:0px;"></div>').parent();
- g.top.content = $("> div[position=top]", g.top);
- if (!g.top.content.hasClass("l-layout-content"))
- g.top.content.addClass("l-layout-content");
- g.topHeight = p.topHeight;
- if (g.topHeight)
- {
- g.top.height(g.topHeight);
- }
- }
- //bottom
- if ($("> div[position=bottom]", g.layout).length > 0)
- {
- g.bottom = $("> div[position=bottom]", g.layout).wrap('<div class="l-layout-bottom"></div>').parent();
- g.bottom.content = $("> div[position=bottom]", g.bottom);
- if (!g.bottom.content.hasClass("l-layout-content"))
- g.bottom.content.addClass("l-layout-content");
- g.bottomHeight = p.bottomHeight;
- if (g.bottomHeight)
- {
- g.bottom.height(g.bottomHeight);
- }
- //set title
- var bottomtitle = g.bottom.content.attr("title");
- if (bottomtitle)
- {
- g.bottom.header = $('<div class="l-layout-header"></div>');
- g.bottom.prepend(g.bottom.header);
- g.bottom.header.html(bottomtitle);
- g.bottom.content.attr("title", "");
- }
- }
- //left
- if ($("> div[position=left]", g.layout).length > 0)
- {
- g.left = $("> div[position=left]", g.layout).wrap('<div class="l-layout-left" style="left:0px;"></div>').parent();
- g.left.header = $('<div class="l-layout-header"><div class="l-layout-header-toggle"></div><div class="l-layout-header-inner"></div></div>');
- g.left.prepend(g.left.header);
- g.left.header.toggle = $(".l-layout-header-toggle", g.left.header);
- g.left.content = $("> div[position=left]", g.left);
- if (!g.left.content.hasClass("l-layout-content"))
- g.left.content.addClass("l-layout-content");
- if (!p.allowLeftCollapse) $(".l-layout-header-toggle", g.left.header).remove();
- //set title
- var lefttitle = g.left.content.attr("title");
- if (lefttitle)
- {
- g.left.content.attr("title", "");
- $(".l-layout-header-inner", g.left.header).html(lefttitle);
- }
- //set width
- g.leftWidth = p.leftWidth;
- if (g.leftWidth)
- g.left.width(g.leftWidth);
- }
- //center
- if ($("> div[position=center]", g.layout).length > 0)
- {
- g.center = $("> div[position=center]", g.layout).wrap('<div class="l-layout-center" ></div>').parent();
- g.center.content = $("> div[position=center]", g.center);
- g.center.content.addClass("l-layout-content");
- //set title
- var centertitle = g.center.content.attr("title");
- if (centertitle)
- {
- g.center.content.attr("title", "");
- g.center.header = $('<div class="l-layout-header"></div>');
- g.center.prepend(g.center.header);
- g.center.header.html(centertitle);
- }
- //set width
- g.centerWidth = p.centerWidth;
- if (g.centerWidth)
- g.center.width(g.centerWidth);
- }
- //right
- if ($("> div[position=right]", g.layout).length > 0)
- {
- g.right = $("> div[position=right]", g.layout).wrap('<div class="l-layout-right"></div>').parent();
- g.right.header = $('<div class="l-layout-header"><div class="l-layout-header-toggle"></div><div class="l-layout-header-inner"></div></div>');
- g.right.prepend(g.right.header);
- g.right.header.toggle = $(".l-layout-header-toggle", g.right.header);
- if (!p.allowRightCollapse) $(".l-layout-header-toggle", g.right.header).remove();
- g.right.content = $("> div[position=right]", g.right);
- if (!g.right.content.hasClass("l-layout-content"))
- g.right.content.addClass("l-layout-content");
- //set title
- var righttitle = g.right.content.attr("title");
- if (righttitle)
- {
- g.right.content.attr("title", "");
- $(".l-layout-header-inner", g.right.header).html(righttitle);
- }
- //set width
- g.rightWidth = p.rightWidth;
- if (g.rightWidth)
- g.right.width(g.rightWidth);
- }
- //lock
- g.layout.lock = $("<div class='l-layout-lock'></div>");
- g.layout.append(g.layout.lock);
- //DropHandle
- g._addDropHandle();
- //Collapse
- g.isLeftCollapse = p.isLeftCollapse;
- g.isRightCollapse = p.isRightCollapse;
- g.leftCollapse = $('<div class="l-layout-collapse-left" style="display: none; "><div class="l-layout-collapse-left-toggle"></div></div>');
- g.rightCollapse = $('<div class="l-layout-collapse-right" style="display: none; "><div class="l-layout-collapse-right-toggle"></div></div>');
- g.layout.append(g.leftCollapse).append(g.rightCollapse);
- g.leftCollapse.toggle = $("> .l-layout-collapse-left-toggle", g.leftCollapse);
- g.rightCollapse.toggle = $("> .l-layout-collapse-right-toggle", g.rightCollapse);
- g._setCollapse();
- //init
- g._bulid();
- $(window).resize(function ()
- {
- g._onResize();
- });
- g.set(p);
- },
- setLeftCollapse: function (isCollapse)
- {
- var g = this, p = this.options;
- if (!g.left) return false;
- g.isLeftCollapse = isCollapse;
- if (g.isLeftCollapse)
- {
- g.leftCollapse.show();
- g.leftDropHandle && g.leftDropHandle.hide();
- g.left.hide();
- }
- else
- {
- g.leftCollapse.hide();
- g.leftDropHandle && g.leftDropHandle.show();
- g.left.show();
- }
- g._onResize();
- },
- setRightCollapse: function (isCollapse)
- {
- var g = this, p = this.options;
- if (!g.right) return false;
- g.isRightCollapse = isCollapse;
- g._onResize();
- if (g.isRightCollapse)
- {
- g.rightCollapse.show();
- g.rightDropHandle && g.rightDropHandle.hide();
- g.right.hide();
- }
- else
- {
- g.rightCollapse.hide();
- g.rightDropHandle && g.rightDropHandle.show();
- g.right.show();
- }
- g._onResize();
- },
- _bulid: function ()
- {
- var g = this, p = this.options;
- $("> .l-layout-left .l-layout-header,> .l-layout-right .l-layout-header", g.layout).hover(function ()
- {
- $(this).addClass("l-layout-header-over");
- }, function ()
- {
- $(this).removeClass("l-layout-header-over");
- });
- $(".l-layout-header-toggle", g.layout).hover(function ()
- {
- $(this).addClass("l-layout-header-toggle-over");
- }, function ()
- {
- $(this).removeClass("l-layout-header-toggle-over");
- });
- $(".l-layout-header-toggle", g.left).click(function ()
- {
- g.setLeftCollapse(true);
- });
- $(".l-layout-header-toggle", g.right).click(function ()
- {
- g.setRightCollapse(true);
- });
- //set top
- g.middleTop = 0;
- if (g.top)
- {
- g.middleTop += g.top.height();
- g.middleTop += parseInt(g.top.css('borderTopWidth'));
- g.middleTop += parseInt(g.top.css('borderBottomWidth'));
- g.middleTop += p.space;
- }
- if (g.left)
- {
- g.left.css({ top: g.middleTop });
- g.leftCollapse.css({ top: g.middleTop });
- }
- if (g.center) g.center.css({ top: g.middleTop });
- if (g.right)
- {
- g.right.css({ top: g.middleTop });
- g.rightCollapse.css({ top: g.middleTop });
- }
- //set left
- if (g.left) g.left.css({ left: 0 });
- g._onResize();
- g._onResize();
- },
- _setCollapse: function ()
- {
- var g = this, p = this.options;
- g.leftCollapse.hover(function ()
- {
- $(this).addClass("l-layout-collapse-left-over");
- }, function ()
- {
- $(this).removeClass("l-layout-collapse-left-over");
- });
- g.leftCollapse.toggle.hover(function ()
- {
- $(this).addClass("l-layout-collapse-left-toggle-over");
- }, function ()
- {
- $(this).removeClass("l-layout-collapse-left-toggle-over");
- });
- g.rightCollapse.hover(function ()
- {
- $(this).addClass("l-layout-collapse-right-over");
- }, function ()
- {
- $(this).removeClass("l-layout-collapse-right-over");
- });
- g.rightCollapse.toggle.hover(function ()
- {
- $(this).addClass("l-layout-collapse-right-toggle-over");
- }, function ()
- {
- $(this).removeClass("l-layout-collapse-right-toggle-over");
- });
- g.leftCollapse.toggle.click(function ()
- {
- g.setLeftCollapse(false);
- });
- g.rightCollapse.toggle.click(function ()
- {
- g.setRightCollapse(false);
- });
- if (g.left && g.isLeftCollapse)
- {
- g.leftCollapse.show();
- g.leftDropHandle && g.leftDropHandle.hide();
- g.left.hide();
- }
- if (g.right && g.isRightCollapse)
- {
- g.rightCollapse.show();
- g.rightDropHandle && g.rightDropHandle.hide();
- g.right.hide();
- }
- },
- _addDropHandle: function ()
- {
- var g = this, p = this.options;
- if (g.left && p.allowLeftResize)
- {
- g.leftDropHandle = $("<div class='l-layout-drophandle-left'></div>");
- g.layout.append(g.leftDropHandle);
- g.leftDropHandle && g.leftDropHandle.show();
- g.leftDropHandle.mousedown(function (e)
- {
- g._start('leftresize', e);
- });
- }
- if (g.right && p.allowRightResize)
- {
- g.rightDropHandle = $("<div class='l-layout-drophandle-right'></div>");
- g.layout.append(g.rightDropHandle);
- g.rightDropHandle && g.rightDropHandle.show();
- g.rightDropHandle.mousedown(function (e)
- {
- g._start('rightresize', e);
- });
- }
- if (g.top && p.allowTopResize)
- {
- g.topDropHandle = $("<div class='l-layout-drophandle-top'></div>");
- g.layout.append(g.topDropHandle);
- g.topDropHandle.show();
- g.topDropHandle.mousedown(function (e)
- {
- g._start('topresize', e);
- });
- }
- if (g.bottom && p.allowBottomResize)
- {
- g.bottomDropHandle = $("<div class='l-layout-drophandle-bottom'></div>");
- g.layout.append(g.bottomDropHandle);
- g.bottomDropHandle.show();
- g.bottomDropHandle.mousedown(function (e)
- {
- g._start('bottomresize', e);
- });
- }
- g.draggingxline = $("<div class='l-layout-dragging-xline'></div>");
- g.draggingyline = $("<div class='l-layout-dragging-yline'></div>");
- g.layout.append(g.draggingxline).append(g.draggingyline);
- },
- _setDropHandlePosition: function ()
- {
- var g = this, p = this.options;
- if (g.leftDropHandle)
- {
- g.leftDropHandle.css({ left: g.left.width() + parseInt(g.left.css('left')), height: g.middleHeight, top: g.middleTop });
- }
- if (g.rightDropHandle)
- {
- g.rightDropHandle.css({ left: parseInt(g.right.css('left')) - p.space, height: g.middleHeight, top: g.middleTop });
- }
- if (g.topDropHandle)
- {
- g.topDropHandle.css({ top: g.top.height() + parseInt(g.top.css('top')), width: g.top.width() });
- }
- if (g.bottomDropHandle)
- {
- g.bottomDropHandle.css({ top: parseInt(g.bottom.css('top')) - p.space, width: g.bottom.width() });
- }
- },
- _onResize: function ()
- {
- var g = this, p = this.options;
- var oldheight = g.layout.height();
- //set layout height
- var h = 0;
- var windowHeight = $(window).height();
- var parentHeight = null;
- if (typeof (p.height) == "string" && p.height.indexOf('%') > 0)
- {
- var layoutparent = g.layout.parent();
- if (p.InWindow || layoutparent[0].tagName.toLowerCase() == "body")
- {
- parentHeight = windowHeight;
- parentHeight -= parseInt($('body').css('paddingTop'));
- parentHeight -= parseInt($('body').css('paddingBottom'));
- }
- else
- {
- parentHeight = layoutparent.height();
- }
- h = parentHeight * parseFloat(p.height) * 0.01;
- if (p.InWindow || layoutparent[0].tagName.toLowerCase() == "body")
- h -= (g.layout.offset().top - parseInt($('body').css('paddingTop')));
- }
- else
- {
- h = parseInt(p.height);
- }
- h += p.heightDiff;
- g.layout.height(h);
- g.layoutHeight = g.layout.height();
- g.middleWidth = g.layout.width();
- g.middleHeight = g.layout.height();
- if (g.top)
- {
- g.middleHeight -= g.top.height();
- g.middleHeight -= parseInt(g.top.css('borderTopWidth'));
- g.middleHeight -= parseInt(g.top.css('borderBottomWidth'));
- g.middleHeight -= p.space;
- }
- if (g.bottom)
- {
- g.middleHeight -= g.bottom.height();
- g.middleHeight -= parseInt(g.bottom.css('borderTopWidth'));
- g.middleHeight -= parseInt(g.bottom.css('borderBottomWidth'));
- g.middleHeight -= p.space;
- }
- //specific
- g.middleHeight -= 2;
- if (g.hasBind('heightChanged') && g.layoutHeight != oldheight)
- {
- g.trigger('heightChanged', [{ layoutHeight: g.layoutHeight, diff: g.layoutHeight - oldheight, middleHeight: g.middleHeight}]);
- }
- if (g.center)
- {
- g.centerWidth = g.middleWidth;
- if (g.left)
- {
- if (g.isLeftCollapse)
- {
- g.centerWidth -= g.leftCollapse.width();
- g.centerWidth -= parseInt(g.leftCollapse.css('borderLeftWidth'));
- g.centerWidth -= parseInt(g.leftCollapse.css('borderRightWidth'));
- g.centerWidth -= parseInt(g.leftCollapse.css('left'));
- g.centerWidth -= p.space;
- }
- else
- {
- g.centerWidth -= g.leftWidth;
- g.centerWidth -= parseInt(g.left.css('borderLeftWidth'));
- g.centerWidth -= parseInt(g.left.css('borderRightWidth'));
- g.centerWidth -= parseInt(g.left.css('left'));
- g.centerWidth -= p.space;
- }
- }
- if (g.right)
- {
- if (g.isRightCollapse)
- {
- g.centerWidth -= g.rightCollapse.width();
- g.centerWidth -= parseInt(g.rightCollapse.css('borderLeftWidth'));
- g.centerWidth -= parseInt(g.rightCollapse.css('borderRightWidth'));
- g.centerWidth -= parseInt(g.rightCollapse.css('right'));
- g.centerWidth -= p.space;
- }
- else
- {
- g.centerWidth -= g.rightWidth;
- g.centerWidth -= parseInt(g.right.css('borderLeftWidth'));
- g.centerWidth -= parseInt(g.right.css('borderRightWidth'));
- g.centerWidth -= p.space;
- }
- }
- g.centerLeft = 0;
- if (g.left)
- {
- if (g.isLeftCollapse)
- {
- g.centerLeft += g.leftCollapse.width();
- g.centerLeft += parseInt(g.leftCollapse.css('borderLeftWidth'));
- g.centerLeft += parseInt(g.leftCollapse.css('borderRightWidth'));
- g.centerLeft += parseInt(g.leftCollapse.css('left'));
- g.centerLeft += p.space;
- }
- else
- {
- g.centerLeft += g.left.width();
- g.centerLeft += parseInt(g.left.css('borderLeftWidth'));
- g.centerLeft += parseInt(g.left.css('borderRightWidth'));
- g.centerLeft += p.space;
- }
- }
- g.center.css({ left: g.centerLeft });
- g.center.width(g.centerWidth);
- g.center.height(g.middleHeight);
- var contentHeight = g.middleHeight;
- if (g.center.header) contentHeight -= g.center.header.height();
- g.center.content.height(contentHeight);
- }
- if (g.left)
- {
- g.leftCollapse.height(g.middleHeight);
- g.left.height(g.middleHeight);
- }
- if (g.right)
- {
- g.rightCollapse.height(g.middleHeight);
- g.right.height(g.middleHeight);
- //set left
- g.rightLeft = 0;
- if (g.left)
- {
- if (g.isLeftCollapse)
- {
- g.rightLeft += g.leftCollapse.width();
- g.rightLeft += parseInt(g.leftCollapse.css('borderLeftWidth'));
- g.rightLeft += parseInt(g.leftCollapse.css('borderRightWidth'));
- g.rightLeft += p.space;
- }
- else
- {
- g.rightLeft += g.left.width();
- g.rightLeft += parseInt(g.left.css('borderLeftWidth'));
- g.rightLeft += parseInt(g.left.css('borderRightWidth'));
- g.rightLeft += parseInt(g.left.css('left'));
- g.rightLeft += p.space;
- }
- }
- if (g.center)
- {
- g.rightLeft += g.center.width();
- g.rightLeft += parseInt(g.center.css('borderLeftWidth'));
- g.rightLeft += parseInt(g.center.css('borderRightWidth'));
- g.rightLeft += p.space;
- }
- g.right.css({ left: g.rightLeft });
- }
- if (g.bottom)
- {
- g.bottomTop = g.layoutHeight - g.bottom.height() - 2;
- g.bottom.css({ top: g.bottomTop });
- }
- g._setDropHandlePosition();
- },
- _start: function (dragtype, e)
- {
- var g = this, p = this.options;
- g.dragtype = dragtype;
- if (dragtype == 'leftresize' || dragtype == 'rightresize')
- {
- g.xresize = { startX: e.pageX };
- g.draggingyline.css({ left: e.pageX - g.layout.offset().left, height: g.middleHeight, top: g.middleTop }).show();
- $('body').css('cursor', 'col-resize');
- }
- else if (dragtype == 'topresize' || dragtype == 'bottomresize')
- {
- g.yresize = { startY: e.pageY };
- g.draggingxline.css({ top: e.pageY - g.layout.offset().top, width: g.layout.width() }).show();
- $('body').css('cursor', 'row-resize');
- }
- else
- {
- return;
- }
- g.layout.lock.width(g.layout.width());
- g.layout.lock.height(g.layout.height());
- g.layout.lock.show();
- if ($.browser.msie || $.browser.safari) $('body').bind('selectstart', function () { return false; }); // 不能选择
- $(document).bind('mouseup', function ()
- {
- g._stop.apply(g, arguments);
- });
- $(document).bind('mousemove', function ()
- {
- g._drag.apply(g, arguments);
- });
- },
- _drag: function (e)
- {
- var g = this, p = this.options;
- if (g.xresize)
- {
- g.xresize.diff = e.pageX - g.xresize.startX;
- g.draggingyline.css({ left: e.pageX - g.layout.offset().left });
- $('body').css('cursor', 'col-resize');
- }
- else if (g.yresize)
- {
- g.yresize.diff = e.pageY - g.yresize.startY;
- g.draggingxline.css({ top: e.pageY - g.layout.offset().top });
- $('body').css('cursor', 'row-resize');
- }
- },
- _stop: function (e)
- {
- var g = this, p = this.options;
- var diff;
- if (g.xresize && g.xresize.diff != undefined)
- {
- diff = g.xresize.diff;
- if (g.dragtype == 'leftresize')
- {
- if (p.minLeftWidth)
- {
- if (g.leftWidth + g.xresize.diff < p.minLeftWidth)
- return;
- }
- g.leftWidth += g.xresize.diff;
- g.left.width(g.leftWidth);
- if (g.center)
- g.center.width(g.center.width() - g.xresize.diff).css({ left: parseInt(g.center.css('left')) + g.xresize.diff });
- else if (g.right)
- g.right.width(g.left.width() - g.xresize.diff).css({ left: parseInt(g.right.css('left')) + g.xresize.diff });
- }
- else if (g.dragtype == 'rightresize')
- {
- if (p.minRightWidth)
- {
- if (g.rightWidth - g.xresize.diff < p.minRightWidth)
- return;
- }
- g.rightWidth -= g.xresize.diff;
- g.right.width(g.rightWidth).css({ left: parseInt(g.right.css('left')) + g.xresize.diff });
- if (g.center)
- g.center.width(g.center.width() + g.xresize.diff);
- else if (g.left)
- g.left.width(g.left.width() + g.xresize.diff);
- }
- }
- else if (g.yresize && g.yresize.diff != undefined)
- {
- diff = g.yresize.diff;
- if (g.dragtype == 'topresize')
- {
- g.top.height(g.top.height() + g.yresize.diff);
- g.middleTop += g.yresize.diff;
- g.middleHeight -= g.yresize.diff;
- if (g.left)
- {
- g.left.css({ top: g.middleTop }).height(g.middleHeight);
- g.leftCollapse.css({ top: g.middleTop }).height(g.middleHeight);
- }
- if (g.center) g.center.css({ top: g.middleTop }).height(g.middleHeight);
- if (g.right)
- {
- g.right.css({ top: g.middleTop }).height(g.middleHeight);
- g.rightCollapse.css({ top: g.middleTop }).height(g.middleHeight);
- }
- }
- else if (g.dragtype == 'bottomresize')
- {
- g.bottom.height(g.bottom.height() - g.yresize.diff);
- g.middleHeight += g.yresize.diff;
- g.bottomTop += g.yresize.diff;
- g.bottom.css({ top: g.bottomTop });
- if (g.left)
- {
- g.left.height(g.middleHeight);
- g.leftCollapse.height(g.middleHeight);
- }
- if (g.center) g.center.height(g.middleHeight);
- if (g.right)
- {
- g.right.height(g.middleHeight);
- g.rightCollapse.height(g.middleHeight);
- }
- }
- }
- g.trigger('endResize', [{
- direction: g.dragtype ? g.dragtype.replace(/resize/, '') : '',
- diff: diff
- }, e]);
- g._setDropHandlePosition();
- g.draggingxline.hide();
- g.draggingyline.hide();
- g.xresize = g.yresize = g.dragtype = false;
- g.layout.lock.hide();
- if ($.browser.msie || $.browser.safari)
- $('body').unbind('selectstart');
- $(document).unbind('mousemove', g._drag);
- $(document).unbind('mouseup', g._stop);
- $('body').css('cursor', '');
- }
- });
- })(jQuery);/**
- * jQuery ligerUI 1.1.9
- *
- * http://ligerui.com
- *
- * Author daomi 2012 [ gd_star@163.com ]
- *
- */
- (function ($)
- {
- $.ligerMenu = function (options)
- {
- return $.ligerui.run.call(null, "ligerMenu", arguments);
- };
- $.ligerDefaults.Menu = {
- width: 120,
- top: 0,
- left: 0,
- items: null,
- shadow: true
- };
- $.ligerMethos.Menu = {};
- $.ligerui.controls.Menu = function (options)
- {
- $.ligerui.controls.Menu.base.constructor.call(this, null, options);
- };
- $.ligerui.controls.Menu.ligerExtend($.ligerui.core.UIComponent, {
- __getType: function ()
- {
- return 'Menu';
- },
- __idPrev: function ()
- {
- return 'Menu';
- },
- _extendMethods: function ()
- {
- return $.ligerMethos.Menu;
- },
- _render: function ()
- {
- var g = this, p = this.options;
- g.menuItemCount = 0;
- //全部菜单
- g.menus = {};
- //顶级菜单
- g.menu = g.createMenu();
- g.element = g.menu[0];
- g.menu.css({ top: p.top, left: p.left, width: p.width });
- p.items && $(p.items).each(function (i, item)
- {
- g.addItem(item);
- });
- $(document).bind('click.menu', function ()
- {
- for (var menuid in g.menus)
- {
- var menu = g.menus[menuid];
- if (!menu) return;
- menu.hide();
- if (menu.shadow) menu.shadow.hide();
- }
- });
- g.set(p);
- },
- show: function (options, menu)
- {
- var g = this, p = this.options;
- if (menu == undefined) menu = g.menu;
- if (options && options.left != undefined)
- {
- menu.css({ left: options.left });
- }
- if (options && options.top != undefined)
- {
- menu.css({ top: options.top });
- }
- menu.show();
- g.updateShadow(menu);
- },
- updateShadow: function (menu)
- {
- var g = this, p = this.options;
- if (!p.shadow) return;
- menu.shadow.css({
- left: menu.css('left'),
- top: menu.css('top'),
- width: menu.outerWidth(),
- height: menu.outerHeight()
- });
- if (menu.is(":visible"))
- menu.shadow.show();
- else
- menu.shadow.hide();
- },
- hide: function (menu)
- {
- var g = this, p = this.options;
- if (menu == undefined) menu = g.menu;
- g.hideAllSubMenu(menu);
- menu.hide();
- g.updateShadow(menu);
- },
- toggle: function ()
- {
- var g = this, p = this.options;
- g.menu.toggle();
- g.updateShadow(g.menu);
- },
- removeItem: function (itemid)
- {
- var g = this, p = this.options;
- $("> .l-menu-item[menuitemid=" + itemid + "]", g.menu.items).remove();
- },
- setEnabled: function (itemid)
- {
- var g = this, p = this.options;
- $("> .l-menu-item[menuitemid=" + itemid + "]", g.menu.items).removeClass("l-menu-item-disable");
- },
- setDisabled: function (itemid)
- {
- var g = this, p = this.options;
- $("> .l-menu-item[menuitemid=" + itemid + "]", g.menu.items).addClass("l-menu-item-disable");
- },
- isEnable: function (itemid)
- {
- var g = this, p = this.options;
- return !$("> .l-menu-item[menuitemid=" + itemid + "]", g.menu.items).hasClass("l-menu-item-disable");
- },
- getItemCount: function ()
- {
- var g = this, p = this.options;
- return $("> .l-menu-item", g.menu.items).length;
- },
- addItem: function (item, menu)
- {
- var g = this, p = this.options;
- if (!item) return;
- if (menu == undefined) menu = g.menu;
- if (item.line)
- {
- menu.items.append('<div class="l-menu-item-line"></div>');
- return;
- }
- var ditem = $('<div class="l-menu-item"><div class="l-menu-item-text"></div> </div>');
- var itemcount = $("> .l-menu-item", menu.items).length;
- menu.items.append(ditem);
- ditem.attr("ligeruimenutemid", ++g.menuItemCount);
- item.id && ditem.attr("menuitemid", item.id);
- item.text && $(">.l-menu-item-text:first", ditem).html(item.text);
- item.icon && ditem.prepend('<div class="l-menu-item-icon l-icon-' + item.icon + '"></div>');
- if (item.disable || item.disabled)
- ditem.addClass("l-menu-item-disable");
- if (item.children)
- {
- ditem.append('<div class="l-menu-item-arrow"></div>');
- var newmenu = g.createMenu(ditem.attr("ligeruimenutemid"));
- g.menus[ditem.attr("ligeruimenutemid")] = newmenu;
- newmenu.width(p.width);
- newmenu.hover(null, function ()
- {
- if (!newmenu.showedSubMenu)
- g.hide(newmenu);
- });
- $(item.children).each(function ()
- {
- g.addItem(this, newmenu);
- });
- }
- item.click && ditem.click(function ()
- {
- if ($(this).hasClass("l-menu-item-disable")) return;
- item.click(item, itemcount);
- });
- item.dblclick && ditem.dblclick(function ()
- {
- if ($(this).hasClass("l-menu-item-disable")) return;
- item.dblclick(item, itemcount);
- });
- var menuover = $("> .l-menu-over:first", menu);
- ditem.hover(function ()
- {
- if ($(this).hasClass("l-menu-item-disable")) return;
- var itemtop = $(this).offset().top;
- var top = itemtop - menu.offset().top;
- menuover.css({ top: top });
- g.hideAllSubMenu(menu);
- if (item.children)
- {
- var ligeruimenutemid = $(this).attr("ligeruimenutemid");
- if (!ligeruimenutemid) return;
- if (g.menus[ligeruimenutemid])
- {
- g.show({ top: itemtop, left: $(this).offset().left + $(this).width() - 5 }, g.menus[ligeruimenutemid]);
- menu.showedSubMenu = true;
- }
- }
- }, function ()
- {
- if ($(this).hasClass("l-menu-item-disable")) return;
- var ligeruimenutemid = $(this).attr("ligeruimenutemid");
- if (item.children)
- {
- var ligeruimenutemid = $(this).attr("ligeruimenutemid");
- if (!ligeruimenutemid) return;
- };
- });
- },
- hideAllSubMenu: function (menu)
- {
- var g = this, p = this.options;
- if (menu == undefined) menu = g.menu;
- $("> .l-menu-item", menu.items).each(function ()
- {
- if ($("> .l-menu-item-arrow", this).length > 0)
- {
- var ligeruimenutemid = $(this).attr("ligeruimenutemid");
- if (!ligeruimenutemid) return;
- g.menus[ligeruimenutemid] && g.hide(g.menus[ligeruimenutemid]);
- }
- });
- menu.showedSubMenu = false;
- },
- createMenu: function (parentMenuItemID)
- {
- var g = this, p = this.options;
- 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>');
- parentMenuItemID && menu.attr("ligeruiparentmenuitemid", parentMenuItemID);
- menu.items = $("> .l-menu-inner:first", menu);
- menu.appendTo('body');
- if (p.shadow)
- {
- menu.shadow = $('<div class="l-menu-shadow"></div>').insertAfter(menu);
- g.updateShadow(menu);
- }
- menu.hover(null, function ()
- {
- if (!menu.showedSubMenu)
- $("> .l-menu-over:first", menu).css({ top: -24 });
- });
- if (parentMenuItemID)
- g.menus[parentMenuItemID] = menu;
- else
- g.menus[0] = menu;
- return menu;
- }
- });
- //旧写法保留
- $.ligerui.controls.Menu.prototype.setEnable = $.ligerui.controls.Menu.prototype.setEnabled;
- $.ligerui.controls.Menu.prototype.setDisable = $.ligerui.controls.Menu.prototype.setDisabled;
- })(jQuery);/**
- * jQuery ligerUI 1.1.9
- *
- * http://ligerui.com
- *
- * Author daomi 2012 [ gd_star@163.com ]
- *
- */
- (function ($)
- {
- $.fn.ligerMenuBar = function (options)
- {
- return $.ligerui.run.call(this, "ligerMenuBar", arguments);
- };
- $.fn.ligerGetMenuBarManager = function ()
- {
- return $.ligerui.run.call(this, "ligerGetMenuBarManager", arguments);
- };
- $.ligerDefaults.MenuBar = {};
- $.ligerMethos.MenuBar = {};
- $.ligerui.controls.MenuBar = function (element, options)
- {
- $.ligerui.controls.MenuBar.base.constructor.call(this, element, options);
- };
- $.ligerui.controls.MenuBar.ligerExtend($.ligerui.core.UIComponent, {
- __getType: function ()
- {
- return 'MenuBar';
- },
- __idPrev: function ()
- {
- return 'MenuBar';
- },
- _extendMethods: function ()
- {
- return $.ligerMethos.MenuBar;
- },
- _render: function ()
- {
- var g = this, p = this.options;
- g.menubar = $(this.element);
- if (!g.menubar.hasClass("l-menubar")) g.menubar.addClass("l-menubar");
- if (p && p.items)
- {
- $(p.items).each(function (i, item)
- {
- g.addItem(item);
- });
- }
- $(document).click(function ()
- {
- $(".l-panel-btn-selected", g.menubar).removeClass("l-panel-btn-selected");
- });
- g.set(p);
- },
- addItem: function (item)
- {
- var g = this, p = this.options;
- 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>');
- g.menubar.append(ditem);
- item.id && ditem.attr("menubarid", item.id);
- item.text && $("span:first", ditem).html(item.text);
- item.disable && ditem.addClass("l-menubar-item-disable");
- item.click && ditem.click(function () { item.click(item); });
- if (item.menu)
- {
- var menu = $.ligerMenu(item.menu);
- ditem.hover(function ()
- {
- g.actionMenu && g.actionMenu.hide();
- var left = $(this).offset().left;
- var top = $(this).offset().top + $(this).height();
- menu.show({ top: top, left: left });
- g.actionMenu = menu;
- $(this).addClass("l-panel-btn-over l-panel-btn-selected").siblings(".l-menubar-item").removeClass("l-panel-btn-selected");
- }, function ()
- {
- $(this).removeClass("l-panel-btn-over");
- });
- }
- else
- {
- ditem.hover(function ()
- {
- $(this).addClass("l-panel-btn-over");
- }, function ()
- {
- $(this).removeClass("l-panel-btn-over");
- });
- $(".l-menubar-item-down", ditem).remove();
- }
- }
- });
- })(jQuery);/**
- * jQuery ligerUI 1.1.9
- *
- * http://ligerui.com
- *
- * Author daomi 2012 [ gd_star@163.com ]
- *
- */
- (function ($)
- {
- $.ligerMessageBox = function (options)
- {
- return $.ligerui.run.call(null, "ligerMessageBox", arguments, { isStatic: true });
- };
- $.ligerDefaults.MessageBox = {
- isDrag: true
- };
- $.ligerMethos.MessageBox = {};
- $.ligerui.controls.MessageBox = function (options)
- {
- $.ligerui.controls.MessageBox.base.constructor.call(this, null, options);
- };
- $.ligerui.controls.MessageBox.ligerExtend($.ligerui.core.UIComponent, {
- __getType: function ()
- {
- return 'MessageBox';
- },
- __idPrev: function ()
- {
- return 'MessageBox';
- },
- _extendMethods: function ()
- {
- return $.ligerMethos.MessageBox;
- },
- _render: function ()
- {
- var g = this, p = this.options;
- var messageBoxHTML = "";
- messageBoxHTML += '<div class="l-messagebox">';
- messageBoxHTML += ' <div class="l-messagebox-lt"></div><div class="l-messagebox-rt"></div>';
- messageBoxHTML += ' <div class="l-messagebox-l"></div><div class="l-messagebox-r"></div> ';
- messageBoxHTML += ' <div class="l-messagebox-image"></div>';
- messageBoxHTML += ' <div class="l-messagebox-title">';
- messageBoxHTML += ' <div class="l-messagebox-title-inner"></div>';
- messageBoxHTML += ' <div class="l-messagebox-close"></div>';
- messageBoxHTML += ' </div>';
- messageBoxHTML += ' <div class="l-messagebox-content">';
- messageBoxHTML += ' </div>';
- messageBoxHTML += ' <div class="l-messagebox-buttons"><div class="l-messagebox-buttons-inner">';
- messageBoxHTML += ' </div></div>';
- messageBoxHTML += ' </div>';
- g.messageBox = $(messageBoxHTML);
- $('body').append(g.messageBox);
- g.messageBox.close = function ()
- {
- g._removeWindowMask();
- g.messageBox.remove();
- };
- //设置参数属性
- p.width && g.messageBox.width(p.width);
- p.title && $(".l-messagebox-title-inner", g.messageBox).html(p.title);
- p.content && $(".l-messagebox-content", g.messageBox).html(p.content);
- if (p.buttons)
- {
- $(p.buttons).each(function (i, item)
- {
- 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>');
- $(".l-messagebox-btn-inner", btn).html(item.text);
- $(".l-messagebox-buttons-inner", g.messageBox).append(btn);
- item.width && btn.width(item.width);
- item.onclick && btn.click(function () { item.onclick(item, i, g.messageBox) });
- });
- $(".l-messagebox-buttons-inner", g.messageBox).append("<div class='l-clear'></div>");
- }
- var boxWidth = g.messageBox.width();
- var sumBtnWidth = 0;
- $(".l-messagebox-buttons-inner .l-messagebox-btn", g.messageBox).each(function ()
- {
- sumBtnWidth += $(this).width();
- });
- $(".l-messagebox-buttons-inner", g.messageBox).css({ marginLeft: parseInt((boxWidth - sumBtnWidth) * 0.5) });
- //设置背景、拖动支持 和设置图片
- g._applyWindowMask();
- g._applyDrag();
- g._setImage();
- //位置初始化
- var left = 0;
- var top = 0;
- var width = p.width || g.messageBox.width();
- if (p.left != null) left = p.left;
- else p.left = left = 0.5 * ($(window).width() - width);
- if (p.top != null) top = p.top;
- else p.top = top = 0.5 * ($(window).height() - g.messageBox.height()) + $(window).scrollTop() - 10;
- if (left < 0) p.left = left = 0;
- if (top < 0) p.top = top = 0;
- g.messageBox.css({ left: left, top: top });
- //设置事件
- $(".l-messagebox-btn", g.messageBox).hover(function ()
- {
- $(this).addClass("l-messagebox-btn-over");
- }, function ()
- {
- $(this).removeClass("l-messagebox-btn-over");
- });
- $(".l-messagebox-close", g.messageBox).hover(function ()
- {
- $(this).addClass("l-messagebox-close-over");
- }, function ()
- {
- $(this).removeClass("l-messagebox-close-over");
- }).click(function ()
- {
- g.messageBox.close();
- });
- g.set(p);
- },
- close: function ()
- {
- var g = this, p = this.options;
- this.g._removeWindowMask();
- this.messageBox.remove();
- },
- _applyWindowMask: function ()
- {
- var g = this, p = this.options;
- $(".l-window-mask").remove();
- $("<div class='l-window-mask' style='display: block;'></div>").appendTo($("body"));
- },
- _removeWindowMask: function ()
- {
- var g = this, p = this.options;
- $(".l-window-mask").remove();
- },
- _applyDrag: function ()
- {
- var g = this, p = this.options;
- if (p.isDrag && $.fn.ligerDrag)
- g.messageBox.ligerDrag({ handler: '.l-messagebox-title-inner', animate: false });
- },
- _setImage: function ()
- {
- var g = this, p = this.options;
- if (p.type)
- {
- if (p.type == 'success' || p.type == 'donne')
- {
- $(".l-messagebox-image", g.messageBox).addClass("l-messagebox-image-donne").show();
- $(".l-messagebox-content", g.messageBox).css({ paddingLeft: 64, paddingBottom: 30 });
- }
- else if (p.type == 'error')
- {
- $(".l-messagebox-image", g.messageBox).addClass("l-messagebox-image-error").show();
- $(".l-messagebox-content", g.messageBox).css({ paddingLeft: 64, paddingBottom: 30 });
- }
- else if (p.type == 'warn')
- {
- $(".l-messagebox-image", g.messageBox).addClass("l-messagebox-image-warn").show();
- $(".l-messagebox-content", g.messageBox).css({ paddingLeft: 64, paddingBottom: 30 });
- }
- else if (p.type == 'question')
- {
- $(".l-messagebox-image", g.messageBox).addClass("l-messagebox-image-question").show();
- $(".l-messagebox-content", g.messageBox).css({ paddingLeft: 64, paddingBottom: 40 });
- }
- }
- }
- });
- $.ligerMessageBox.show = function (p)
- {
- return $.ligerMessageBox(p);
- };
- $.ligerMessageBox.alert = function (title, content, type, onBtnClick)
- {
- title = title || "";
- content = content || title;
- var onclick = function (item, index, messageBox)
- {
- messageBox.close();
- if (onBtnClick)
- onBtnClick(item, index, messageBox);
- };
- p = {
- title: title,
- content: content,
- buttons: [{ text: '确定', onclick: onclick}]
- };
- if (type) p.type = type;
- return $.ligerMessageBox(p);
- };
- $.ligerMessageBox.confirm = function (title, content, callback)
- {
- var onclick = function (item, index, messageBox)
- {
- messageBox.close();
- if (callback)
- {
- callback(index == 0);
- }
- };
- p = {
- type: 'question',
- title: title,
- content: content,
- buttons: [{ text: '是', onclick: onclick }, { text: '否', onclick: onclick}]
- };
- return $.ligerMessageBox(p);
- };
- $.ligerMessageBox.success = function (title, content, onBtnClick)
- {
- return $.ligerMessageBox.alert(title, content, 'success', onBtnClick);
- };
- $.ligerMessageBox.error = function (title, content, onBtnClick)
- {
- return $.ligerMessageBox.alert(title, content, 'error', onBtnClick);
- };
- $.ligerMessageBox.warn = function (title, content, onBtnClick)
- {
- return $.ligerMessageBox.alert(title, content, 'warn', onBtnClick);
- };
- $.ligerMessageBox.question = function (title, content)
- {
- return $.ligerMessageBox.alert(title, content, 'question');
- };
- })(jQuery);/**
- * jQuery ligerUI 1.1.9
- *
- * http://ligerui.com
- *
- * Author daomi 2012 [ gd_star@163.com ]
- *
- */
- (function ($)
- {
- $.fn.ligerRadio = function ()
- {
- return $.ligerui.run.call(this, "ligerRadio", arguments);
- };
- $.fn.ligerGetRadioManager = function ()
- {
- return $.ligerui.run.call(this, "ligerGetRadioManager", arguments);
- };
- $.ligerDefaults.Radio = { disabled: false };
- $.ligerMethos.Radio = {};
- $.ligerui.controls.Radio = function (element, options)
- {
- $.ligerui.controls.Radio.base.constructor.call(this, element, options);
- };
- $.ligerui.controls.Radio.ligerExtend($.ligerui.controls.Input, {
- __getType: function ()
- {
- return 'Radio';
- },
- __idPrev: function ()
- {
- return 'Radio';
- },
- _extendMethods: function ()
- {
- return $.ligerMethos.Radio;
- },
- _render: function ()
- {
- var g = this, p = this.options;
- g.input = $(this.element);
- g.link = $('<a href="javascript:void(0)" class="l-radio"></a>');
- g.wrapper = g.input.addClass('l-hidden').wrap('<div class="l-radio-wrapper"></div>').parent();
- g.wrapper.prepend(g.link);
- g.input.change(function ()
- {
- if (this.checked)
- {
- g.link.addClass('l-radio-checked');
- }
- else
- {
- g.link.removeClass('l-radio-checked');
- }
- return true;
- });
- g.link.click(function ()
- {
- g._doclick();
- });
- g.wrapper.hover(function ()
- {
- if (!p.disabled)
- $(this).addClass("l-over");
- }, function ()
- {
- $(this).removeClass("l-over");
- });
- this.element.checked && g.link.addClass('l-radio-checked');
- if (this.element.id)
- {
- $("label[for=" + this.element.id + "]").click(function ()
- {
- g._doclick();
- });
- }
- g.set(p);
- },
- setValue: function (value)
- {
- var g = this, p = this.options;
- if (!value)
- {
- g.input[0].checked = false;
- g.link.removeClass('l-radio-checked');
- }
- else
- {
- g.input[0].checked = true;
- g.link.addClass('l-radio-checked');
- }
- },
- getValue: function ()
- {
- return this.input[0].checked;
- },
- setEnabled: function ()
- {
- this.input.attr('disabled', false);
- this.wrapper.removeClass("l-disabled");
- this.options.disabled = false;
- },
- setDisabled: function ()
- {
- this.input.attr('disabled', true);
- this.wrapper.addClass("l-disabled");
- this.options.disabled = true;
- },
- updateStyle: function ()
- {
- if (this.input.attr('disabled'))
- {
- this.wrapper.addClass("l-disabled");
- this.options.disabled = true;
- }
- if (this.input[0].checked)
- {
- this.link.addClass('l-checkbox-checked');
- }
- else
- {
- this.link.removeClass('l-checkbox-checked');
- }
- },
- _doclick: function ()
- {
- var g = this, p = this.options;
- if (g.input.attr('disabled')) { return false; }
- g.input.trigger('click').trigger('change');
- var formEle;
- if (g.input[0].form) formEle = g.input[0].form;
- else formEle = document;
- $("input:radio[name=" + g.input[0].name + "]", formEle).not(g.input).trigger("change");
- return false;
- }
- });
- })(jQuery);/**
- * jQuery ligerUI 1.1.9
- *
- * http://ligerui.com
- *
- * Author daomi 2012 [ gd_star@163.com ]
- *
- */
- (function ($)
- {
- $.fn.ligerResizable = function (options)
- {
- return $.ligerui.run.call(this, "ligerResizable", arguments,
- {
- idAttrName: 'ligeruiresizableid', hasElement: false, propertyToElemnt: 'target'
- });
- };
- $.fn.ligerGetResizableManager = function ()
- {
- return $.ligerui.run.call(this, "ligerGetResizableManager", arguments,
- {
- idAttrName: 'ligeruiresizableid', hasElement: false, propertyToElemnt: 'target'
- });
- };
- $.ligerDefaults.Resizable = {
- handles: 'n, e, s, w, ne, se, sw, nw',
- maxWidth: 2000,
- maxHeight: 2000,
- minWidth: 20,
- minHeight: 20,
- scope: 3,
- animate: false,
- onStartResize: function (e) { },
- onResize: function (e) { },
- onStopResize: function (e) { },
- onEndResize: null
- };
- $.ligerui.controls.Resizable = function (options)
- {
- $.ligerui.controls.Resizable.base.constructor.call(this, null, options);
- };
- $.ligerui.controls.Resizable.ligerExtend($.ligerui.core.UIComponent, {
- __getType: function ()
- {
- return 'Resizable';
- },
- __idPrev: function ()
- {
- return 'Resizable';
- },
- _render: function ()
- {
- var g = this, p = this.options;
- g.target = $(p.target);
- g.set(p);
- g.target.mousemove(function (e)
- {
- if (p.disabled) return;
- g.dir = g._getDir(e);
- if (g.dir)
- g.target.css('cursor', g.dir + '-resize');
- else if (g.target.css('cursor').indexOf('-resize') > 0)
- g.target.css('cursor', 'default');
- if (p.target.ligeruidragid)
- {
- var drag = $.ligerui.get(p.target.ligeruidragid);
- if (drag && g.dir)
- {
- drag.set('disabled', true);
- } else if (drag)
- {
- drag.set('disabled', false);
- }
- }
- }).mousedown(function (e)
- {
- if (p.disabled) return;
- if (g.dir)
- {
- g._start(e);
- }
- });
- },
- _rendered: function ()
- {
- this.options.target.ligeruiresizableid = this.id;
- },
- _getDir: function (e)
- {
- var g = this, p = this.options;
- var dir = '';
- var xy = g.target.offset();
- var width = g.target.width();
- var height = g.target.height();
- var scope = p.scope;
- var pageX = e.pageX || e.screenX;
- var pageY = e.pageY || e.screenY;
- if (pageY >= xy.top && pageY < xy.top + scope)
- {
- dir += 'n';
- }
- else if (pageY <= xy.top + height && pageY > xy.top + height - scope)
- {
- dir += 's';
- }
- if (pageX >= xy.left && pageX < xy.left + scope)
- {
- dir += 'w';
- }
- else if (pageX <= xy.left + width && pageX > xy.left + width - scope)
- {
- dir += 'e';
- }
- if (p.handles == "all" || dir == "") return dir;
- if ($.inArray(dir, g.handles) != -1) return dir;
- return '';
- },
- _setHandles: function (handles)
- {
- if (!handles) return;
- this.handles = handles.replace(/(\s*)/g, '').split(',');
- },
- _createProxy: function ()
- {
- var g = this;
- g.proxy = $('<div class="l-resizable"></div>');
- g.proxy.width(g.target.width()).height(g.target.height())
- g.proxy.attr("resizableid", g.id).appendTo('body');
- },
- _removeProxy: function ()
- {
- var g = this;
- if (g.proxy)
- {
- g.proxy.remove();
- g.proxy = null;
- }
- },
- _start: function (e)
- {
- var g = this, p = this.options;
- g._createProxy();
- g.proxy.css({
- left: g.target.offset().left,
- top: g.target.offset().top,
- position: 'absolute'
- });
- g.current = {
- dir: g.dir,
- left: g.target.offset().left,
- top: g.target.offset().top,
- startX: e.pageX || e.screenX,
- startY: e.pageY || e.clientY,
- width: g.target.width(),
- height: g.target.height()
- };
- $(document).bind("selectstart.resizable", function () { return false; });
- $(document).bind('mouseup.resizable', function ()
- {
- g._stop.apply(g, arguments);
- });
- $(document).bind('mousemove.resizable', function ()
- {
- g._drag.apply(g, arguments);
- });
- g.proxy.show();
- g.trigger('startResize', [g.current, e]);
- },
- changeBy: {
- t: ['n', 'ne', 'nw'],
- l: ['w', 'sw', 'nw'],
- w: ['w', 'sw', 'nw', 'e', 'ne', 'se'],
- h: ['n', 'ne', 'nw', 's', 'se', 'sw']
- },
- _drag: function (e)
- {
- var g = this, p = this.options;
- if (!g.current) return;
- if (!g.proxy) return;
- g.proxy.css('cursor', g.current.dir == '' ? 'default' : g.current.dir + '-resize');
- var pageX = e.pageX || e.screenX;
- var pageY = e.pageY || e.screenY;
- g.current.diffX = pageX - g.current.startX;
- g.current.diffY = pageY - g.current.startY;
- g._applyResize(g.proxy);
- g.trigger('resize', [g.current, e]);
- },
- _stop: function (e)
- {
- var g = this, p = this.options;
- if (g.hasBind('stopResize'))
- {
- if (g.trigger('stopResize', [g.current, e]) != false)
- g._applyResize();
- }
- else
- {
- g._applyResize();
- }
- g._removeProxy();
- g.trigger('endResize', [g.current, e]);
- $(document).unbind("selectstart.resizable");
- $(document).unbind('mousemove.resizable');
- $(document).unbind('mouseup.resizable');
- },
- _applyResize: function (applyResultBody)
- {
- var g = this, p = this.options;
- var cur = {
- left: g.current.left,
- top: g.current.top,
- width: g.current.width,
- height: g.current.height
- };
- var applyToTarget = false;
- if (!applyResultBody)
- {
- applyResultBody = g.target;
- applyToTarget = true;
- if (!isNaN(parseInt(g.target.css('top'))))
- cur.top = parseInt(g.target.css('top'));
- else
- cur.top = 0;
- if (!isNaN(parseInt(g.target.css('left'))))
- cur.left = parseInt(g.target.css('left'));
- else
- cur.left = 0;
- }
- if ($.inArray(g.current.dir, g.changeBy.l) > -1)
- {
- cur.left += g.current.diffX;
- g.current.diffLeft = g.current.diffX;
- }
- else if (applyToTarget)
- {
- delete cur.left;
- }
- if ($.inArray(g.current.dir, g.changeBy.t) > -1)
- {
- cur.top += g.current.diffY;
- g.current.diffTop = g.current.diffY;
- }
- else if (applyToTarget)
- {
- delete cur.top;
- }
- if ($.inArray(g.current.dir, g.changeBy.w) > -1)
- {
- cur.width += (g.current.dir.indexOf('w') == -1 ? 1 : -1) * g.current.diffX;
- g.current.newWidth = cur.width;
- }
- else if (applyToTarget)
- {
- delete cur.width;
- }
- if ($.inArray(g.current.dir, g.changeBy.h) > -1)
- {
- cur.height += (g.current.dir.indexOf('n') == -1 ? 1 : -1) * g.current.diffY;
- g.current.newHeight = cur.height;
- }
- else if (applyToTarget)
- {
- delete cur.height;
- }
- if (applyToTarget && p.animate)
- applyResultBody.animate(cur);
- else
- applyResultBody.css(cur);
- }
- });
- })(jQuery);/**
- * jQuery ligerUI 1.1.9
- *
- * http://ligerui.com
- *
- * Author daomi 2012 [ gd_star@163.com ]
- *
- */
- (function ($)
- {
- $.fn.ligerSpinner = function ()
- {
- return $.ligerui.run.call(this, "ligerSpinner", arguments);
- };
- $.fn.ligerGetSpinnerManager = function ()
- {
- return $.ligerui.run.call(this, "ligerGetSpinnerManager", arguments);
- };
- $.ligerDefaults.Spinner = {
- type: 'float', //类型 float:浮点数 int:整数 time:时间
- isNegative: true, //是否负数
- decimalplace: 2, //小数位 type=float时起作用
- step: 0.1, //每次增加的值
- interval: 50, //间隔,毫秒
- onChangeValue: false, //改变值事件
- minValue: null, //最小值
- maxValue: null, //最大值
- disabled: false
- };
- $.ligerMethos.Spinner = {};
- $.ligerui.controls.Spinner = function (element, options)
- {
- $.ligerui.controls.Spinner.base.constructor.call(this, element, options);
- };
- $.ligerui.controls.Spinner.ligerExtend($.ligerui.controls.Input, {
- __getType: function ()
- {
- return 'Spinner';
- },
- __idPrev: function ()
- {
- return 'Spinner';
- },
- _extendMethods: function ()
- {
- return $.ligerMethos.Spinner;
- },
- _init: function ()
- {
- $.ligerui.controls.Spinner.base._init.call(this);
- var p = this.options;
- if (p.type == 'float')
- {
- p.step = 0.1;
- p.interval = 50;
- } else if (p.type == 'int')
- {
- p.step = 1;
- p.interval = 100;
- } else if (p.type == 'time')
- {
- p.step = 1;
- p.interval = 100;
- }
- },
- _render: function ()
- {
- var g = this, p = this.options;
- g.interval = null;
- g.inputText = null;
- g.value = null;
- g.textFieldID = "";
- if (this.element.tagName.toLowerCase() == "input" && this.element.type && this.element.type == "text")
- {
- g.inputText = $(this.element);
- if (this.element.id)
- g.textFieldID = this.element.id;
- }
- else
- {
- g.inputText = $('<input type="text"/>');
- g.inputText.appendTo($(this.element));
- }
- if (g.textFieldID == "" && p.textFieldID)
- g.textFieldID = p.textFieldID;
- 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>');
- g.wrapper = g.inputText.wrap('<div class="l-text"></div>').parent();
- g.wrapper.append('<div class="l-text-l"></div><div class="l-text-r"></div>');
- g.wrapper.append(g.link).after(g.selectBox).after(g.valueField);
- g.link.up = $(".l-spinner-up", g.link);
- g.link.down = $(".l-spinner-down", g.link);
- g.inputText.addClass("l-text-field");
- if (p.disabled)
- {
- g.wrapper.addClass("l-text-disabled");
- }
- //初始化
- if (!g._isVerify(g.inputText.val()))
- {
- g.value = g._getDefaultValue();
- g.inputText.val(g.value);
- }
- //事件
- g.link.up.hover(function ()
- {
- if (!p.disabled)
- $(this).addClass("l-spinner-up-over");
- }, function ()
- {
- clearInterval(g.interval);
- $(document).unbind("selectstart.spinner");
- $(this).removeClass("l-spinner-up-over");
- }).mousedown(function ()
- {
- if (!p.disabled)
- {
- g._uping.call(g);
- g.interval = setInterval(function ()
- {
- g._uping.call(g);
- }, p.interval);
- $(document).bind("selectstart.spinner", function () { return false; });
- }
- }).mouseup(function ()
- {
- clearInterval(g.interval);
- g.inputText.trigger("change").focus();
- $(document).unbind("selectstart.spinner");
- });
- g.link.down.hover(function ()
- {
- if (!p.disabled)
- $(this).addClass("l-spinner-down-over");
- }, function ()
- {
- clearInterval(g.interval);
- $(document).unbind("selectstart.spinner");
- $(this).removeClass("l-spinner-down-over");
- }).mousedown(function ()
- {
- if (!p.disabled)
- {
- g.interval = setInterval(function ()
- {
- g._downing.call(g);
- }, p.interval);
- $(document).bind("selectstart.spinner", function () { return false; });
- }
- }).mouseup(function ()
- {
- clearInterval(g.interval);
- g.inputText.trigger("change").focus();
- $(document).unbind("selectstart.spinner");
- });
- g.inputText.change(function ()
- {
- var value = g.inputText.val();
- g.value = g._getVerifyValue(value);
- g.trigger('changeValue', [g.value]);
- g.inputText.val(g.value);
- }).blur(function ()
- {
- g.wrapper.removeClass("l-text-focus");
- }).focus(function ()
- {
- g.wrapper.addClass("l-text-focus");
- });
- g.wrapper.hover(function ()
- {
- if (!p.disabled)
- g.wrapper.addClass("l-text-over");
- }, function ()
- {
- g.wrapper.removeClass("l-text-over");
- });
- g.set(p);
- },
- _setWidth: function (value)
- {
- var g = this;
- if (value > 20)
- {
- g.wrapper.css({ width: value });
- g.inputText.css({ width: value - 20 });
- g.inputText.css({ width: value });
- }
- },
- _setHeight: function (value)
- {
- var g = this;
- if (value > 10)
- {
- g.wrapper.height(value);
- g.inputText.height(value - 2);
- g.link.height(value - 4);
- }
- },
- _setDisabled: function (value)
- {
- if (value)
- {
- this.wrapper.addClass("l-text-disabled");
- }
- else
- {
- this.wrapper.removeClass("l-text-disabled");
- }
- },
- setValue: function (value)
- {
- this.inputText.val(value);
- },
- getValue: function ()
- {
- return this.inputText.val();
- },
- _round: function (v, e)
- {
- var g = this, p = this.options;
- var t = 1;
- for (; e > 0; t *= 10, e--);
- for (; e < 0; t /= 10, e++);
- return Math.round(v * t) / t;
- },
- _isInt: function (str)
- {
- var g = this, p = this.options;
- var strP = p.isNegative ? /^-?\d+$/ : /^\d+$/;
- if (!strP.test(str)) return false;
- if (parseFloat(str) != str) return false;
- return true;
- },
- _isFloat: function (str)
- {
- var g = this, p = this.options;
- var strP = p.isNegative ? /^-?\d+(\.\d+)?$/ : /^\d+(\.\d+)?$/;
- if (!strP.test(str)) return false;
- if (parseFloat(str) != str) return false;
- return true;
- },
- _isTime: function (str)
- {
- var g = this, p = this.options;
- var a = str.match(/^(\d{1,2}):(\d{1,2})$/);
- if (a == null) return false;
- if (a[1] > 24 || a[2] > 60) return false;
- return true;
- },
- _isVerify: function (str)
- {
- var g = this, p = this.options;
- if (p.type == 'float')
- {
- if (!g._isFloat(str)) return false;
- var value = parseFloat(str);
- if (p.minValue != undefined && p.minValue > value) return false;
- if (p.maxValue != undefined && p.maxValue < value) return false;
- return true;
- } else if (p.type == 'int')
- {
- if (!g._isInt(str)) return false;
- var value = parseInt(str);
- if (p.minValue != undefined && p.minValue > value) return false;
- if (p.maxValue != undefined && p.maxValue < value) return false;
- return true;
- } else if (p.type == 'time')
- {
- return g._isTime(str);
- }
- return false;
- },
- _getVerifyValue: function (value)
- {
- var g = this, p = this.options;
- var newvalue = null;
- if (p.type == 'float')
- {
- newvalue = g._round(value, p.decimalplace);
- } else if (p.type == 'int')
- {
- newvalue = parseInt(value);
- } else if (p.type == 'time')
- {
- newvalue = value;
- }
- if (!g._isVerify(newvalue))
- {
- return g.value;
- } else
- {
- return newvalue;
- }
- },
- _isOverValue: function (value)
- {
- var g = this, p = this.options;
- if (p.minValue != null && p.minValue > value) return true;
- if (p.maxValue != null && p.maxValue < value) return true;
- return false;
- },
- _getDefaultValue: function ()
- {
- var g = this, p = this.options;
- if (p.type == 'float' || p.type == 'int') { return 0; }
- else if (p.type == 'time') { return "00:00"; }
- },
- _addValue: function (num)
- {
- var g = this, p = this.options;
- var value = g.inputText.val();
- value = parseFloat(value) + num;
- if (g._isOverValue(value)) return;
- g.inputText.val(value);
- g.inputText.trigger("change");
- },
- _addTime: function (minute)
- {
- var g = this, p = this.options;
- var value = g.inputText.val();
- var a = value.match(/^(\d{1,2}):(\d{1,2})$/);
- newminute = parseInt(a[2]) + minute;
- if (newminute < 10) newminute = "0" + newminute;
- value = a[1] + ":" + newminute;
- if (g._isOverValue(value)) return;
- g.inputText.val(value);
- g.inputText.trigger("change");
- },
- _uping: function ()
- {
- var g = this, p = this.options;
- if (p.type == 'float' || p.type == 'int')
- {
- g._addValue(p.step);
- } else if (p.type == 'time')
- {
- g._addTime(p.step);
- }
- },
- _downing: function ()
- {
- var g = this, p = this.options;
- if (p.type == 'float' || p.type == 'int')
- {
- g._addValue(-1 * p.step);
- } else if (p.type == 'time')
- {
- g._addTime(-1 * p.step);
- }
- },
- _isDateTime: function (dateStr)
- {
- var g = this, p = this.options;
- var r = dateStr.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
- if (r == null) return false;
- var d = new Date(r[1], r[3] - 1, r[4]);
- if (d == "NaN") return false;
- return (d.getFullYear() == r[1] && (d.getMonth() + 1) == r[3] && d.getDate() == r[4]);
- },
- _isLongDateTime: function (dateStr)
- {
- var g = this, p = this.options;
- var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2})$/;
- var r = dateStr.match(reg);
- if (r == null) return false;
- var d = new Date(r[1], r[3] - 1, r[4], r[5], r[6]);
- if (d == "NaN") return false;
- return (d.getFullYear() == r[1] && (d.getMonth() + 1) == r[3] && d.getDate() == r[4] && d.getHours() == r[5] && d.getMinutes() == r[6]);
- }
- });
- })(jQuery);/**
- * jQuery ligerUI 1.1.9
- *
- * http://ligerui.com
- *
- * Author daomi 2012 [ gd_star@163.com ]
- *
- */
- (function ($)
- {
- $.fn.ligerTab = function (options)
- {
- return $.ligerui.run.call(this, "ligerTab", arguments);
- };
- $.fn.ligerGetTabManager = function ()
- {
- return $.ligerui.run.call(this, "ligerGetTabManager", arguments);
- };
- $.ligerDefaults.Tab = {
- height: null,
- heightDiff: 0, // 高度补差
- changeHeightOnResize: false,
- contextmenu: true,
- dblClickToClose: false, //是否双击时关闭
- dragToMove: false, //是否允许拖动时改变tab项的位置
- onBeforeOverrideTabItem: null,
- onAfterOverrideTabItem: null,
- onBeforeRemoveTabItem: null,
- onAfterRemoveTabItem: null,
- onBeforeAddTabItem: null,
- onAfterAddTabItem: null,
- onBeforeSelectTabItem: null,
- onAfterSelectTabItem: null
- };
- $.ligerDefaults.TabString = {
- closeMessage: "关闭当前页",
- closeOtherMessage: "关闭其他",
- closeAllMessage: "关闭所有",
- reloadMessage: "刷新"
- };
- $.ligerMethos.Tab = {};
- $.ligerui.controls.Tab = function (element, options)
- {
- $.ligerui.controls.Tab.base.constructor.call(this, element, options);
- };
- $.ligerui.controls.Tab.ligerExtend($.ligerui.core.UIComponent, {
- __getType: function ()
- {
- return 'Tab';
- },
- __idPrev: function ()
- {
- return 'Tab';
- },
- _extendMethods: function ()
- {
- return $.ligerMethos.Tab;
- },
- _render: function ()
- {
- var g = this, p = this.options;
- if (p.height) g.makeFullHeight = true;
- g.tab = $(this.element);
- g.tab.addClass("l-tab");
- if (p.contextmenu && $.ligerMenu)
- {
- g.tab.menu = $.ligerMenu({ width: 100, items: [
- { text: p.closeMessage, id: 'close', click: function ()
- {
- g._menuItemClick.apply(g, arguments);
- }
- },
- { text: p.closeOtherMessage, id: 'closeother', click: function ()
- {
- g._menuItemClick.apply(g, arguments);
- }
- },
- { text: p.closeAllMessage, id: 'closeall', click: function ()
- {
- g._menuItemClick.apply(g, arguments);
- }
- },
- { text: p.reloadMessage, id: 'reload', click: function ()
- {
- g._menuItemClick.apply(g, arguments);
- }
- }
- ]
- });
- }
- g.tab.content = $('<div class="l-tab-content"></div>');
- $("> div", g.tab).appendTo(g.tab.content);
- g.tab.content.appendTo(g.tab);
- g.tab.links = $('<div class="l-tab-links"><ul style="left: 0px; "></ul></div>');
- g.tab.links.prependTo(g.tab);
- g.tab.links.ul = $("ul", g.tab.links);
- var lselecteds = $("> div[lselected=true]", g.tab.content);
- var haslselected = lselecteds.length > 0;
- g.selectedTabId = lselecteds.attr("tabid");
- $("> div", g.tab.content).each(function (i, box)
- {
- var li = $('<li class=""><a></a><div class="l-tab-links-item-left"></div><div class="l-tab-links-item-right"></div></li>');
- var contentitem = $(this);
- if (contentitem.attr("title"))
- {
- $("> a", li).html(contentitem.attr("title"));
- contentitem.attr("title", "");
- }
- var tabid = contentitem.attr("tabid");
- if (tabid == undefined)
- {
- tabid = g.getNewTabid();
- contentitem.attr("tabid", tabid);
- if (contentitem.attr("lselected"))
- {
- g.selectedTabId = tabid;
- }
- }
- li.attr("tabid", tabid);
- if (!haslselected && i == 0) g.selectedTabId = tabid;
- var showClose = contentitem.attr("showClose");
- if (showClose)
- {
- li.append("<div class='l-tab-links-item-close'></div>");
- }
- $("> ul", g.tab.links).append(li);
- if (!contentitem.hasClass("l-tab-content-item")) contentitem.addClass("l-tab-content-item");
- if (contentitem.find("iframe").length > 0)
- {
- var iframe = $("iframe:first", contentitem);
- if (iframe[0].readyState != "complete")
- {
- if (contentitem.find(".l-tab-loading:first").length == 0)
- contentitem.prepend("<div class='l-tab-loading' style='display:block;'></div>");
- var iframeloading = $(".l-tab-loading:first", contentitem);
- iframe.bind('load.tab', function ()
- {
- iframeloading.hide();
- });
- }
- }
- });
- //init
- g.selectTabItem(g.selectedTabId);
- //set content height
- if (p.height)
- {
- if (typeof (p.height) == 'string' && p.height.indexOf('%') > 0)
- {
- g.onResize();
- if (p.changeHeightOnResize)
- {
- $(window).resize(function ()
- {
- g.onResize.call(g);
- });
- }
- } else
- {
- g.setHeight(p.height);
- }
- }
- if (g.makeFullHeight)
- g.setContentHeight();
- //add even
- $("li", g.tab.links).each(function ()
- {
- g._addTabItemEvent($(this));
- });
- g.tab.bind('dblclick.tab', function (e)
- {
- if (!p.dblClickToClose) return;
- g.dblclicking = true;
- var obj = (e.target || e.srcElement);
- var tagName = obj.tagName.toLowerCase();
- if (tagName == "a")
- {
- var tabid = $(obj).parent().attr("tabid");
- var allowClose = $(obj).parent().find("div.l-tab-links-item-close").length ? true : false;
- if (allowClose)
- {
- g.removeTabItem(tabid);
- }
- }
- g.dblclicking = false;
- });
- g.set(p);
- },
- _applyDrag: function (tabItemDom)
- {
- var g = this, p = this.options;
- 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');
- var drag = $(tabItemDom).ligerDrag(
- {
- revert: true, animate: false,
- proxy: function ()
- {
- var name = $(this).find("a").html();
- g.dragproxy = $("<div class='l-tab-drag-proxy' style='display:none'><div class='l-drop-icon l-drop-no'></div></div>").appendTo('body');
- g.dragproxy.append(name);
- return g.dragproxy;
- },
- onRendered: function ()
- {
- this.set('cursor', 'pointer');
- },
- onStartDrag: function (current, e)
- {
- if (!$(tabItemDom).hasClass("l-selected")) return false;
- if (e.button == 2) return false;
- var obj = e.srcElement || e.target;
- if ($(obj).hasClass("l-tab-links-item-close")) return false;
- },
- onDrag: function (current, e)
- {
- if (g.dropIn == null)
- g.dropIn = -1;
- var tabItems = g.tab.links.ul.find('>li');
- var targetIndex = tabItems.index(current.target);
- tabItems.each(function (i, item)
- {
- if (targetIndex == i)
- {
- return;
- }
- var isAfter = i > targetIndex;
- if (g.dropIn != -1 && g.dropIn != i) return;
- var offset = $(this).offset();
- var range = {
- top: offset.top,
- bottom: offset.top + $(this).height(),
- left: offset.left - 10,
- right: offset.left + 10
- };
- if (isAfter)
- {
- range.left += $(this).width();
- range.right += $(this).width();
- }
- var pageX = e.pageX || e.screenX;
- var pageY = e.pageY || e.screenY;
- if (pageX > range.left && pageX < range.right && pageY > range.top && pageY < range.bottom)
- {
- g.droptip.css({
- left: range.left + 5,
- top: range.top - 9
- }).show();
- g.dropIn = i;
- g.dragproxy.find(".l-drop-icon").removeClass("l-drop-no").addClass("l-drop-yes");
- }
- else
- {
- g.dropIn = -1;
- g.droptip.hide();
- g.dragproxy.find(".l-drop-icon").removeClass("l-drop-yes").addClass("l-drop-no");
- }
- });
- },
- onStopDrag: function (current, e)
- {
- if (g.dropIn > -1)
- {
- var to = g.tab.links.ul.find('>li:eq(' + g.dropIn + ')').attr("tabid");
- var from = $(current.target).attr("tabid");
- setTimeout(function ()
- {
- g.moveTabItem(from, to);
- }, 0);
- g.dropIn = -1;
- g.dragproxy.remove();
- }
- g.droptip.hide();
- this.set('cursor', 'default');
- }
- });
- return drag;
- },
- _setDragToMove: function (value)
- {
- if (!$.fn.ligerDrag) return; //需要ligerDrag的支持
- var g = this, p = this.options;
- if (value)
- {
- if (g.drags) return;
- g.drags = g.drags || [];
- g.tab.links.ul.find('>li').each(function ()
- {
- g.drags.push(g._applyDrag(this));
- });
- }
- },
- moveTabItem: function (fromTabItemID, toTabItemID)
- {
- var g = this;
- var from = g.tab.links.ul.find(">li[tabid=" + fromTabItemID + "]");
- var to = g.tab.links.ul.find(">li[tabid=" + toTabItemID + "]");
- var index1 = g.tab.links.ul.find(">li").index(from);
- var index2 = g.tab.links.ul.find(">li").index(to);
- if (index1 < index2)
- {
- to.after(from);
- }
- else
- {
- to.before(from);
- }
- },
- //设置tab按钮(左和右),显示返回true,隐藏返回false
- setTabButton: function ()
- {
- var g = this, p = this.options;
- var sumwidth = 0;
- $("li", g.tab.links.ul).each(function ()
- {
- sumwidth += $(this).width() + 2;
- });
- var mainwidth = g.tab.width();
- if (sumwidth > mainwidth)
- {
- g.tab.links.append('<div class="l-tab-links-left"></div><div class="l-tab-links-right"></div>');
- g.setTabButtonEven();
- return true;
- } else
- {
- g.tab.links.ul.animate({ left: 0 });
- $(".l-tab-links-left,.l-tab-links-right", g.tab.links).remove();
- return false;
- }
- },
- //设置左右按钮的事件 标签超出最大宽度时,可左右拖动
- setTabButtonEven: function ()
- {
- var g = this, p = this.options;
- $(".l-tab-links-left", g.tab.links).hover(function ()
- {
- $(this).addClass("l-tab-links-left-over");
- }, function ()
- {
- $(this).removeClass("l-tab-links-left-over");
- }).click(function ()
- {
- g.moveToPrevTabItem();
- });
- $(".l-tab-links-right", g.tab.links).hover(function ()
- {
- $(this).addClass("l-tab-links-right-over");
- }, function ()
- {
- $(this).removeClass("l-tab-links-right-over");
- }).click(function ()
- {
- g.moveToNextTabItem();
- });
- },
- //切换到上一个tab
- moveToPrevTabItem: function ()
- {
- var g = this, p = this.options;
- var btnWitdth = $(".l-tab-links-left", g.tab.links).width();
- var leftList = new Array(); //记录每个tab的left,由左到右
- $("li", g.tab.links).each(function (i, item)
- {
- var currentItemLeft = -1 * btnWitdth;
- if (i > 0)
- {
- currentItemLeft = parseInt(leftList[i - 1]) + $(this).prev().width() + 2;
- }
- leftList.push(currentItemLeft);
- });
- var currentLeft = -1 * parseInt(g.tab.links.ul.css("left"));
- for (var i = 0; i < leftList.length - 1; i++)
- {
- if (leftList[i] < currentLeft && leftList[i + 1] >= currentLeft)
- {
- g.tab.links.ul.animate({ left: -1 * parseInt(leftList[i]) });
- return;
- }
- }
- },
- //切换到下一个tab
- moveToNextTabItem: function ()
- {
- var g = this, p = this.options;
- var btnWitdth = $(".l-tab-links-right", g.tab).width();
- var sumwidth = 0;
- var tabItems = $("li", g.tab.links.ul);
- tabItems.each(function ()
- {
- sumwidth += $(this).width() + 2;
- });
- var mainwidth = g.tab.width();
- var leftList = new Array(); //记录每个tab的left,由右到左
- for (var i = tabItems.length - 1; i >= 0; i--)
- {
- var currentItemLeft = sumwidth - mainwidth + btnWitdth + 2;
- if (i != tabItems.length - 1)
- {
- currentItemLeft = parseInt(leftList[tabItems.length - 2 - i]) - $(tabItems[i + 1]).width() - 2;
- }
- leftList.push(currentItemLeft);
- }
- var currentLeft = -1 * parseInt(g.tab.links.ul.css("left"));
- for (var j = 1; j < leftList.length; j++)
- {
- if (leftList[j] <= currentLeft && leftList[j - 1] > currentLeft)
- {
- g.tab.links.ul.animate({ left: -1 * parseInt(leftList[j - 1]) });
- return;
- }
- }
- },
- getTabItemCount: function ()
- {
- var g = this, p = this.options;
- return $("li", g.tab.links.ul).length;
- },
- getSelectedTabItemID: function ()
- {
- var g = this, p = this.options;
- return $("li.l-selected", g.tab.links.ul).attr("tabid");
- },
- removeSelectedTabItem: function ()
- {
- var g = this, p = this.options;
- g.removeTabItem(g.getSelectedTabItemID());
- },
- //覆盖选择的tabitem
- overrideSelectedTabItem: function (options)
- {
- var g = this, p = this.options;
- g.overrideTabItem(g.getSelectedTabItemID(), options);
- },
- //覆盖
- overrideTabItem: function (targettabid, options)
- {
- var g = this, p = this.options;
- if (g.trigger('beforeOverrideTabItem', [targettabid]) == false)
- return false;
- var tabid = options.tabid;
- if (tabid == undefined) tabid = g.getNewTabid();
- var url = options.url;
- var content = options.content;
- var target = options.target;
- var text = options.text;
- var showClose = options.showClose;
- var height = options.height;
- //如果已经存在
- if (g.isTabItemExist(tabid))
- {
- return;
- }
- var tabitem = $("li[tabid=" + targettabid + "]", g.tab.links.ul);
- var contentitem = $(".l-tab-content-item[tabid=" + targettabid + "]", g.tab.content);
- if (!tabitem || !contentitem) return;
- tabitem.attr("tabid", tabid);
- contentitem.attr("tabid", tabid);
- if ($("iframe", contentitem).length == 0 && url)
- {
- contentitem.html("<iframe frameborder='0'></iframe>");
- }
- else if (content)
- {
- contentitem.html(content);
- }
- $("iframe", contentitem).attr("name", tabid);
- if (showClose == undefined) showClose = true;
- if (showClose == false) $(".l-tab-links-item-close", tabitem).remove();
- else
- {
- if ($(".l-tab-links-item-close", tabitem).length == 0)
- tabitem.append("<div class='l-tab-links-item-close'></div>");
- }
- if (text == undefined) text = tabid;
- if (height) contentitem.height(height);
- $("a", tabitem).text(text);
- $("iframe", contentitem).attr("src", url);
- g.trigger('afterOverrideTabItem', [targettabid]);
- },
- //选中tab项
- selectTabItem: function (tabid)
- {
- var g = this, p = this.options;
- if (g.trigger('beforeSelectTabItem', [tabid]) == false)
- return false;
- g.selectedTabId = tabid;
- $("> .l-tab-content-item[tabid=" + tabid + "]", g.tab.content).show().siblings().hide();
- $("li[tabid=" + tabid + "]", g.tab.links.ul).addClass("l-selected").siblings().removeClass("l-selected");
- g.trigger('afterSelectTabItem', [tabid]);
- },
- //移动到最后一个tab
- moveToLastTabItem: function ()
- {
- var g = this, p = this.options;
- var sumwidth = 0;
- $("li", g.tab.links.ul).each(function ()
- {
- sumwidth += $(this).width() + 2;
- });
- var mainwidth = g.tab.width();
- if (sumwidth > mainwidth)
- {
- var btnWitdth = $(".l-tab-links-right", g.tab.links).width();
- g.tab.links.ul.animate({ left: -1 * (sumwidth - mainwidth + btnWitdth + 2) });
- }
- },
- //判断tab是否存在
- isTabItemExist: function (tabid)
- {
- var g = this, p = this.options;
- return $("li[tabid=" + tabid + "]", g.tab.links.ul).length > 0;
- },
- //增加一个tab
- addTabItem: function (options)
- {
- var g = this, p = this.options;
- if (g.trigger('beforeAddTabItem', [tabid]) == false)
- return false;
- var tabid = options.tabid;
- if (tabid == undefined) tabid = g.getNewTabid();
- var url = options.url;
- var content = options.content;
- var text = options.text;
- var showClose = options.showClose;
- var height = options.height;
- //如果已经存在
- if (g.isTabItemExist(tabid))
- {
- g.selectTabItem(tabid);
- return;
- }
- 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>");
- var contentitem = $("<div class='l-tab-content-item'><div class='l-tab-loading' style='display:block;'></div><iframe frameborder='0'></iframe></div>");
- var iframeloading = $("div:first", contentitem);
- var iframe = $("iframe:first", contentitem);
- if (g.makeFullHeight)
- {
- var newheight = g.tab.height() - g.tab.links.height();
- contentitem.height(newheight);
- }
- tabitem.attr("tabid", tabid);
- contentitem.attr("tabid", tabid);
- if (url)
- {
- iframe.attr("name", tabid)
- .attr("id", tabid)
- .attr("src", url)
- .bind('load.tab', function ()
- {
- iframeloading.hide();
- if (options.callback)
- options.callback();
- });
- }
- else
- {
- iframe.remove();
- iframeloading.remove();
- }
- if (content)
- {
- contentitem.html(content);
- }
- else if (options.target)
- {
- contentitem.append(options.target);
- }
- if (showClose == undefined) showClose = true;
- if (showClose == false) $(".l-tab-links-item-close", tabitem).remove();
- if (text == undefined) text = tabid;
- if (height) contentitem.height(height);
- $("a", tabitem).text(text);
- g.tab.links.ul.append(tabitem);
- g.tab.content.append(contentitem);
- g.selectTabItem(tabid);
- if (g.setTabButton())
- {
- g.moveToLastTabItem();
- }
- //增加事件
- g._addTabItemEvent(tabitem);
- if (p.dragToMove && $.fn.ligerDrag)
- {
- g.drags = g.drags || [];
- tabitem.each(function ()
- {
- g.drags.push(g._applyDrag(this));
- });
- }
- g.trigger('afterAddTabItem', [tabid]);
- },
- _addTabItemEvent: function (tabitem)
- {
- var g = this, p = this.options;
- tabitem.click(function ()
- {
- var tabid = $(this).attr("tabid");
- g.selectTabItem(tabid);
- });
- //右键事件支持
- g.tab.menu && g._addTabItemContextMenuEven(tabitem);
- $(".l-tab-links-item-close", tabitem).hover(function ()
- {
- $(this).addClass("l-tab-links-item-close-over");
- }, function ()
- {
- $(this).removeClass("l-tab-links-item-close-over");
- }).click(function ()
- {
- var tabid = $(this).parent().attr("tabid");
- g.removeTabItem(tabid);
- });
- },
- //移除tab项
- removeTabItem: function (tabid)
- {
- var g = this, p = this.options;
- if (g.trigger('beforeRemoveTabItem', [tabid]) == false)
- return false;
- var currentIsSelected = $("li[tabid=" + tabid + "]", g.tab.links.ul).hasClass("l-selected");
- if (currentIsSelected)
- {
- $(".l-tab-content-item[tabid=" + tabid + "]", g.tab.content).prev().show();
- $("li[tabid=" + tabid + "]", g.tab.links.ul).prev().addClass("l-selected").siblings().removeClass("l-selected");
- }
- $(".l-tab-content-item[tabid=" + tabid + "]", g.tab.content).remove();
- $("li[tabid=" + tabid + "]", g.tab.links.ul).remove();
- g.setTabButton();
- g.trigger('afterRemoveTabItem', [tabid]);
- },
- addHeight: function (heightDiff)
- {
- var g = this, p = this.options;
- var newHeight = g.tab.height() + heightDiff;
- g.setHeight(newHeight);
- },
- setHeight: function (height)
- {
- var g = this, p = this.options;
- g.tab.height(height);
- g.setContentHeight();
- },
- setContentHeight: function ()
- {
- var g = this, p = this.options;
- var newheight = g.tab.height() - g.tab.links.height();
- g.tab.content.height(newheight);
- $("> .l-tab-content-item", g.tab.content).height(newheight);
- },
- getNewTabid: function ()
- {
- var g = this, p = this.options;
- g.getnewidcount = g.getnewidcount || 0;
- return 'tabitem' + (++g.getnewidcount);
- },
- //notabid 过滤掉tabid的
- //noclose 过滤掉没有关闭按钮的
- getTabidList: function (notabid, noclose)
- {
- var g = this, p = this.options;
- var tabidlist = [];
- $("> li", g.tab.links.ul).each(function ()
- {
- if ($(this).attr("tabid")
- && $(this).attr("tabid") != notabid
- && (!noclose || $(".l-tab-links-item-close", this).length > 0))
- {
- tabidlist.push($(this).attr("tabid"));
- }
- });
- return tabidlist;
- },
- removeOther: function (tabid, compel)
- {
- var g = this, p = this.options;
- var tabidlist = g.getTabidList(tabid, true);
- $(tabidlist).each(function ()
- {
- g.removeTabItem(this);
- });
- },
- reload: function (tabid)
- {
- var g = this, p = this.options;
- var contentitem = $(".l-tab-content-item[tabid=" + tabid + "]");
- var iframeloading = $(".l-tab-loading:first", contentitem);
- var iframe = $("iframe:first", contentitem);
- var url = $(iframe).attr("src");
- iframeloading.show();
- iframe.attr("src", url).unbind('load.tab').bind('load.tab', function ()
- {
- iframeloading.hide();
- });
- },
- removeAll: function (compel)
- {
- var g = this, p = this.options;
- var tabidlist = g.getTabidList(null, true);
- $(tabidlist).each(function ()
- {
- g.removeTabItem(this);
- });
- },
- onResize: function ()
- {
- var g = this, p = this.options;
- if (!p.height || typeof (p.height) != 'string' || p.height.indexOf('%') == -1) return false;
- //set tab height
- if (g.tab.parent()[0].tagName.toLowerCase() == "body")
- {
- var windowHeight = $(window).height();
- windowHeight -= parseInt(g.tab.parent().css('paddingTop'));
- windowHeight -= parseInt(g.tab.parent().css('paddingBottom'));
- g.height = p.heightDiff + windowHeight * parseFloat(g.height) * 0.01;
- }
- else
- {
- g.height = p.heightDiff + (g.tab.parent().height() * parseFloat(p.height) * 0.01);
- }
- g.tab.height(g.height);
- g.setContentHeight();
- },
- _menuItemClick: function (item)
- {
- var g = this, p = this.options;
- if (!item.id || !g.actionTabid) return;
- switch (item.id)
- {
- case "close":
- g.removeTabItem(g.actionTabid);
- g.actionTabid = null;
- break;
- case "closeother":
- g.removeOther(g.actionTabid);
- break;
- case "closeall":
- g.removeAll();
- g.actionTabid = null;
- break;
- case "reload":
- g.selectTabItem(g.actionTabid);
- g.reload(g.actionTabid);
- break;
- }
- },
- _addTabItemContextMenuEven: function (tabitem)
- {
- var g = this, p = this.options;
- tabitem.bind("contextmenu", function (e)
- {
- if (!g.tab.menu) return;
- g.actionTabid = tabitem.attr("tabid");
- g.tab.menu.show({ top: e.pageY, left: e.pageX });
- if ($(".l-tab-links-item-close", this).length == 0)
- {
- g.tab.menu.setDisabled('close');
- }
- else
- {
- g.tab.menu.setEnabled('close');
- }
- return false;
- });
- }
- });
- })(jQuery);/**
- * jQuery ligerUI 1.1.9
- *
- * http://ligerui.com
- *
- * Author daomi 2012 [ gd_star@163.com ]
- *
- */
- (function ($)
- {
- $.fn.ligerTextBox = function ()
- {
- return $.ligerui.run.call(this, "ligerTextBox", arguments);
- };
- $.fn.ligerGetTextBoxManager = function ()
- {
- return $.ligerui.run.call(this, "ligerGetTextBoxManager", arguments);
- };
- $.ligerDefaults.TextBox = {
- onChangeValue: null,
- width: null,
- disabled: false,
- value: null, //初始化值
- nullText: null, //不能为空时的提示
- digits: false, //是否限定为数字输入框
- number: false //是否限定为浮点数格式输入框
- };
- $.ligerui.controls.TextBox = function (element, options)
- {
- $.ligerui.controls.TextBox.base.constructor.call(this, element, options);
- };
- $.ligerui.controls.TextBox.ligerExtend($.ligerui.controls.Input, {
- __getType: function ()
- {
- return 'TextBox'
- },
- __idPrev: function ()
- {
- return 'TextBox';
- },
- _init: function ()
- {
- $.ligerui.controls.TextBox.base._init.call(this);
- var g = this, p = this.options;
- if (!p.width)
- {
- p.width = $(g.element).width();
- }
- if ($(this.element).attr("readonly"))
- {
- p.disabled = true;
- }
- },
- _render: function ()
- {
- var g = this, p = this.options;
- g.inputText = $(this.element);
- //外层
- g.wrapper = g.inputText.wrap('<div class="l-text"></div>').parent();
- g.wrapper.append('<div class="l-text-l"></div><div class="l-text-r"></div>');
- if (!g.inputText.hasClass("l-text-field"))
- g.inputText.addClass("l-text-field");
- this._setEvent();
- g.set(p);
- g.checkValue();
- },
- _getValue: function ()
- {
- return this.inputText.val();
- },
- _setNullText: function ()
- {
- this.checkNotNull();
- },
- checkValue: function ()
- {
- var g = this, p = this.options;
- var v = g.inputText.val();
- if (p.number && !/^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(v) || p.digits && !/^\d+$/.test(v))
- {
- g.inputText.val(g.value || 0);
- return;
- }
- g.value = v;
- },
- checkNotNull: function ()
- {
- var g = this, p = this.options;
- if (p.nullText && !p.disabled)
- {
- if (!g.inputText.val())
- {
- g.inputText.addClass("l-text-field-null").val(p.nullText);
- }
- }
- },
- _setEvent: function ()
- {
- var g = this, p = this.options;
- g.inputText.bind('blur.textBox', function ()
- {
- g.trigger('blur');
- g.checkNotNull();
- g.checkValue();
- g.wrapper.removeClass("l-text-focus");
- }).bind('focus.textBox', function ()
- {
- g.trigger('focus');
- if (p.nullText)
- {
- if ($(this).hasClass("l-text-field-null"))
- {
- $(this).removeClass("l-text-field-null").val("");
- }
- }
- g.wrapper.addClass("l-text-focus");
- })
- .change(function ()
- {
- g.trigger('changeValue', [this.value]);
- });
- g.wrapper.hover(function ()
- {
- g.trigger('mouseOver');
- g.wrapper.addClass("l-text-over");
- }, function ()
- {
- g.trigger('mouseOut');
- g.wrapper.removeClass("l-text-over");
- });
- },
- _setDisabled: function (value)
- {
- if (value)
- {
- this.inputText.attr("readonly", "readonly");
- this.wrapper.addClass("l-text-disabled");
- }
- else
- {
- this.inputText.removeAttr("readonly");
- this.wrapper.removeClass('l-text-disabled');
- }
- },
- _setWidth: function (value)
- {
- if (value > 20)
- {
- this.wrapper.css({ width: value });
- this.inputText.css({ width: value - 4 });
- }
- },
- _setHeight: function (value)
- {
- if (value > 10)
- {
- this.wrapper.height(value);
- this.inputText.height(value - 2);
- }
- },
- _setValue: function (value)
- {
- if (value != null)
- this.inputText.val(value);
- },
- _setLabel: function (value)
- {
- var g = this, p = this.options;
- if (!g.labelwrapper)
- {
- g.labelwrapper = g.wrapper.wrap('<div class="l-labeltext"></div>').parent();
- var lable = $('<div class="l-text-label" style="float:left;">' + value + ': </div>');
- g.labelwrapper.prepend(lable);
- g.wrapper.css('float', 'left');
- if (!p.labelWidth)
- {
- p.labelWidth = lable.width();
- }
- else
- {
- g._setLabelWidth(p.labelWidth);
- }
- lable.height(g.wrapper.height());
- if (p.labelAlign)
- {
- g._setLabelAlign(p.labelAlign);
- }
- g.labelwrapper.append('<br style="clear:both;" />');
- g.labelwrapper.width(p.labelWidth + p.width + 2);
- }
- else
- {
- g.labelwrapper.find(".l-text-label").html(value + ': ');
- }
- },
- _setLabelWidth: function (value)
- {
- var g = this, p = this.options;
- if (!g.labelwrapper) return;
- g.labelwrapper.find(".l-text-label").width(value);
- },
- _setLabelAlign: function (value)
- {
- var g = this, p = this.options;
- if (!g.labelwrapper) return;
- g.labelwrapper.find(".l-text-label").css('text-align', value);
- },
- updateStyle: function ()
- {
- var g = this, p = this.options;
- if (g.inputText.attr('disabled') || g.inputText.attr('readonly'))
- {
- g.wrapper.addClass("l-text-disabled");
- g.options.disabled = true;
- }
- else
- {
- g.wrapper.removeClass("l-text-disabled");
- g.options.disabled = false;
- }
- if (g.inputText.hasClass("l-text-field-null") && g.inputText.val() != p.nullText)
- {
- g.inputText.removeClass("l-text-field-null");
- }
- g.checkValue();
- }
- });
- })(jQuery);/**
- * jQuery ligerUI 1.1.9
- *
- * http://ligerui.com
- *
- * Author daomi 2012 [ gd_star@163.com ]
- *
- */
- (function ($)
- {
- //气泡,可以在制定位置显示
- $.ligerTip = function (p)
- {
- return $.ligerui.run.call(null, "ligerTip", arguments);
- };
- //在指定Dom Element右侧显示气泡
- //target:将ligerui对象ID附加上
- $.fn.ligerTip = function (options)
- {
- this.each(function ()
- {
- var p = $.extend({}, $.ligerDefaults.ElementTip, options || {});
- p.target = p.target || this;
- //如果是自动模式:鼠标经过时显示,移开时关闭
- if (p.auto || options == undefined)
- {
- if (!p.content)
- {
- p.content = this.title;
- if (p.removeTitle)
- $(this).removeAttr("title");
- }
- p.content = p.content || this.title;
- $(this).bind('mouseover.tip', function ()
- {
- p.x = $(this).offset().left + $(this).width() + (p.distanceX || 0);
- p.y = $(this).offset().top + (p.distanceY || 0);
- $.ligerTip(p);
- }).bind('mouseout.tip', function ()
- {
- var tipmanager = $.ligerui.managers[this.ligeruitipid];
- if (tipmanager)
- {
- tipmanager.remove();
- }
- });
- }
- else
- {
- if (p.target.ligeruitipid) return;
- p.x = $(this).offset().left + $(this).width() + (p.distanceX || 0);
- p.y = $(this).offset().top + (p.distanceY || 0);
- p.x = p.x || 0;
- p.y = p.y || 0;
- $.ligerTip(p);
- }
- });
- return $.ligerui.get(this, 'ligeruitipid');
- };
- //关闭指定在Dom Element(附加了ligerui对象ID,属性名"ligeruitipid")显示的气泡
- $.fn.ligerHideTip = function (options)
- {
- return this.each(function ()
- {
- var p = options || {};
- if (p.isLabel == undefined)
- {
- //如果是lable,将查找指定的input,并找到ligerui对象ID
- p.isLabel = this.tagName.toLowerCase() == "label" && $(this).attr("for") != null;
- }
- var target = this;
- if (p.isLabel)
- {
- var forele = $("#" + $(this).attr("for"));
- if (forele.length == 0) return;
- target = forele[0];
- }
- var tipmanager = $.ligerui.managers[target.ligeruitipid];
- if (tipmanager)
- {
- tipmanager.remove();
- }
- }).unbind('mouseover.tip').unbind('mouseout.tip');
- };
- $.fn.ligerGetTipManager = function ()
- {
- return $.ligerui.get(this);
- };
- $.ligerDefaults = $.ligerDefaults || {};
- //隐藏气泡
- $.ligerDefaults.HideTip = {};
- //气泡
- $.ligerDefaults.Tip = {
- content: null,
- callback: null,
- width: 150,
- height: null,
- x: 0,
- y: 0,
- appendIdTo: null, //保存ID到那一个对象(jQuery)(待移除)
- target: null,
- auto: null, //是否自动模式,如果是,那么:鼠标经过时显示,移开时关闭,并且当content为空时自动读取attr[title]
- removeTitle: true //自动模式时,默认是否移除掉title
- };
- //在指定Dom Element右侧显示气泡,通过$.fn.ligerTip调用
- $.ligerDefaults.ElementTip = {
- distanceX: 1,
- distanceY: -3,
- auto: null,
- removeTitle: true
- };
- $.ligerMethos.Tip = {};
- $.ligerui.controls.Tip = function (options)
- {
- $.ligerui.controls.Tip.base.constructor.call(this, null, options);
- };
- $.ligerui.controls.Tip.ligerExtend($.ligerui.core.UIComponent, {
- __getType: function ()
- {
- return 'Tip';
- },
- __idPrev: function ()
- {
- return 'Tip';
- },
- _extendMethods: function ()
- {
- return $.ligerMethos.Tip;
- },
- _render: function ()
- {
- var g = this, p = this.options;
- var tip = $('<div class="l-verify-tip"><div class="l-verify-tip-corner"></div><div class="l-verify-tip-content"></div></div>');
- g.tip = tip;
- g.tip.attr("id", g.id);
- if (p.content)
- {
- $("> .l-verify-tip-content:first", tip).html(p.content);
- tip.appendTo('body');
- }
- else
- {
- return;
- }
- tip.css({ left: p.x, top: p.y }).show();
- p.width && $("> .l-verify-tip-content:first", tip).width(p.width - 8);
- p.height && $("> .l-verify-tip-content:first", tip).width(p.height);
- eee = p.appendIdTo;
- if (p.appendIdTo)
- {
- p.appendIdTo.attr("ligerTipId", g.id);
- }
- if (p.target)
- {
- $(p.target).attr("ligerTipId", g.id);
- p.target.ligeruitipid = g.id;
- }
- p.callback && p.callback(tip);
- g.set(p);
- },
- _setContent: function (content)
- {
- $("> .l-verify-tip-content:first", this.tip).html(content);
- },
- remove: function ()
- {
- if (this.options.appendIdTo)
- {
- this.options.appendIdTo.removeAttr("ligerTipId");
- }
- if (this.options.target)
- {
- $(this.options.target).removeAttr("ligerTipId");
- this.options.target.ligeruitipid = null;
- }
- this.tip.remove();
- }
- });
- })(jQuery);/**
- * jQuery ligerUI 1.1.9
- *
- * http://ligerui.com
- *
- * Author daomi 2012 [ gd_star@163.com ]
- *
- */
- (function ($)
- {
- $.fn.ligerToolBar = function (options)
- {
- return $.ligerui.run.call(this, "ligerToolBar", arguments);
- };
- $.fn.ligerGetToolBarManager = function ()
- {
- return $.ligerui.run.call(this, "ligerGetToolBarManager", arguments);
- };
- $.ligerDefaults.ToolBar = {};
- $.ligerMethos.ToolBar = {};
- $.ligerui.controls.ToolBar = function (element, options)
- {
- $.ligerui.controls.ToolBar.base.constructor.call(this, element, options);
- };
- $.ligerui.controls.ToolBar.ligerExtend($.ligerui.core.UIComponent, {
- __getType: function ()
- {
- return 'ToolBar';
- },
- __idPrev: function ()
- {
- return 'ToolBar';
- },
- _extendMethods: function ()
- {
- return $.ligerMethos.ToolBar;
- },
- _render: function ()
- {
- var g = this, p = this.options;
- g.toolBar = $(this.element);
- g.toolBar.addClass("l-toolbar");
- g.set(p);
- },
- _setItems: function (items)
- {
- var g = this;
- $(items).each(function (i, item)
- {
- g.addItem(item);
- });
- },
- addItem: function (item)
- {
- var g = this, p = this.options;
- if (item.line)
- {
- g.toolBar.append('<div class="l-bar-separator"></div>');
- return;
- }
- 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>');
- g.toolBar.append(ditem);
- item.id && ditem.attr("toolbarid", item.id);
- if (item.img)
- {
- ditem.append("<img src='" + item.img + "' />");
- ditem.addClass("l-toolbar-item-hasicon");
- }
- else if (item.icon)
- {
- ditem.append("<div class='l-icon l-icon-" + item.icon + "'></div>");
- ditem.addClass("l-toolbar-item-hasicon");
- }
- item.text && $("span:first", ditem).html(item.text);
- item.disable && ditem.addClass("l-toolbar-item-disable");
- item.click && ditem.click(function () { item.click(item); });
- ditem.hover(function ()
- {
- $(this).addClass("l-panel-btn-over");
- }, function ()
- {
- $(this).removeClass("l-panel-btn-over");
- });
- }
- });
- })(jQuery);/**
- * jQuery ligerUI 1.1.9
- *
- * http://ligerui.com
- *
- * Author daomi 2012 [ gd_star@163.com ]
- *
- */
- (function ($)
- {
- $.fn.ligerTree = function (options)
- {
- return $.ligerui.run.call(this, "ligerTree", arguments);
- };
- $.fn.ligerGetTreeManager = function ()
- {
- return $.ligerui.run.call(this, "ligerGetTreeManager", arguments);
- };
- $.ligerDefaults.Tree = {
- url: null,
- data: null,
- checkbox: true,
- autoCheckboxEven: true,
- parentIcon: 'folder',
- childIcon: 'leaf',
- textFieldName: 'text',
- attribute: ['id', 'url'],
- treeLine: true, //是否显示line
- nodeWidth: 90,
- statusName: '__status',
- isLeaf: null, //是否子节点的判断函数
- single: false, //是否单选
- onBeforeExpand: function () { },
- onContextmenu: function () { },
- onExpand: function () { },
- onBeforeCollapse: function () { },
- onCollapse: function () { },
- onBeforeSelect: function () { },
- onSelect: function () { },
- onBeforeCancelSelect: function () { },
- onCancelselect: function () { },
- onCheck: function () { },
- onSuccess: function () { },
- onError: function () { },
- onClick: function () { },
- idFieldName: 'id',
- parentIDFieldName: null,
- topParentIDValue: 0,
- onBeforeAppend: function () { }, //加载数据前事件,可以通过return false取消操作
- onAppend: function () { }, //加载数据时事件,对数据进行预处理以后
- onAfterAppend: function () { }, //加载数据完事件
- slide: true, //是否以动画的形式显示
- iconFieldName: 'icon',
- nodeDraggable: false, //是否允许拖拽
- nodeDraggingRender: null,
- btnClickToToggleOnly: true //是否点击展开/收缩 按钮时才有效
- };
- $.ligerui.controls.Tree = function (element, options)
- {
- $.ligerui.controls.Tree.base.constructor.call(this, element, options);
- };
- $.ligerui.controls.Tree.ligerExtend($.ligerui.core.UIComponent, {
- _init: function ()
- {
- $.ligerui.controls.Tree.base._init.call(this);
- var g = this, p = this.options;
- if (p.single) p.autoCheckboxEven = false;
- },
- _render: function ()
- {
- var g = this, p = this.options;
- g.set(p, true);
- g.tree = $(g.element);
- g.tree.addClass('l-tree');
- g.sysAttribute = ['isexpand', 'ischecked', 'href', 'style'];
- g.loading = $("<div class='l-tree-loading'></div>");
- g.tree.after(g.loading);
- g.data = [];
- g.maxOutlineLevel = 1;
- g.treedataindex = 0;
- g._applyTree();
- g._setTreeEven();
- g.set(p, false);
- },
- _setTreeLine: function (value)
- {
- if (value) this.tree.removeClass("l-tree-noline");
- else this.tree.addClass("l-tree-noline");
- },
- _setUrl: function (url)
- {
- if (url) this.loadData(null, url);
- },
- _setData: function (data)
- {
- if (data) this.append(null, data);
- },
- setData: function (data)
- {
- this.set('data', data);
- },
- getData: function ()
- {
- return this.data;
- },
- //是否包含子节点
- hasChildren: function (treenodedata)
- {
- if (this.options.isLeaf) return this.options.isLeaf(treenodedata);
- return treenodedata.children ? true : false;
- },
- //获取父节点 数据
- getParent: function (treenode, level)
- {
- var g = this;
- treenode = g.getNodeDom(treenode);
- var parentTreeNode = g.getParentTreeItem(treenode, level);
- if (!parentTreeNode) return null;
- var parentIndex = $(parentTreeNode).attr("treedataindex");
- return g._getDataNodeByTreeDataIndex(parentIndex);
- },
- //获取父节点
- getParentTreeItem: function (treenode, level)
- {
- var g = this;
- treenode = g.getNodeDom(treenode);
- var treeitem = $(treenode);
- if (treeitem.parent().hasClass("l-tree"))
- return null;
- if (level == undefined)
- {
- if (treeitem.parent().parent("li").length == 0)
- return null;
- return treeitem.parent().parent("li")[0];
- }
- var currentLevel = parseInt(treeitem.attr("outlinelevel"));
- var currenttreeitem = treeitem;
- for (var i = currentLevel - 1; i >= level; i--)
- {
- currenttreeitem = currenttreeitem.parent().parent("li");
- }
- return currenttreeitem[0];
- },
- getChecked: function ()
- {
- var g = this, p = this.options;
- if (!this.options.checkbox) return null;
- var nodes = [];
- $(".l-checkbox-checked", g.tree).parent().parent("li").each(function ()
- {
- var treedataindex = parseInt($(this).attr("treedataindex"));
- nodes.push({ target: this, data: g._getDataNodeByTreeDataIndex(g.data, treedataindex) });
- });
- return nodes;
- },
- getSelected: function ()
- {
- var g = this, p = this.options;
- var node = {};
- node.target = $(".l-selected", g.tree).parent("li")[0];
- if (node.target)
- {
- var treedataindex = parseInt($(node.target).attr("treedataindex"));
- node.data = g._getDataNodeByTreeDataIndex(g.data, treedataindex);
- return node;
- }
- return null;
- },
- //升级为父节点级别
- upgrade: function (treeNode)
- {
- var g = this, p = this.options;
- $(".l-note", treeNode).each(function ()
- {
- $(this).removeClass("l-note").addClass("l-expandable-open");
- });
- $(".l-note-last", treeNode).each(function ()
- {
- $(this).removeClass("l-note-last").addClass("l-expandable-open");
- });
- $("." + g._getChildNodeClassName(), treeNode).each(function ()
- {
- $(this)
- .removeClass(g._getChildNodeClassName())
- .addClass(g._getParentNodeClassName(true));
- });
- },
- //降级为叶节点级别
- demotion: function (treeNode)
- {
- var g = this, p = this.options;
- if (!treeNode && treeNode[0].tagName.toLowerCase() != 'li') return;
- var islast = $(treeNode).hasClass("l-last");
- $(".l-expandable-open", treeNode).each(function ()
- {
- $(this).removeClass("l-expandable-open")
- .addClass(islast ? "l-note-last" : "l-note");
- });
- $(".l-expandable-close", treeNode).each(function ()
- {
- $(this).removeClass("l-expandable-close")
- .addClass(islast ? "l-note-last" : "l-note");
- });
- $("." + g._getParentNodeClassName(true), treeNode).each(function ()
- {
- $(this)
- .removeClass(g._getParentNodeClassName(true))
- .addClass(g._getChildNodeClassName());
- });
- },
- collapseAll: function ()
- {
- var g = this, p = this.options;
- $(".l-expandable-open", g.tree).click();
- },
- expandAll: function ()
- {
- var g = this, p = this.options;
- $(".l-expandable-close", g.tree).click();
- },
- loadData: function (node, url, param)
- {
- var g = this, p = this.options;
- g.loading.show();
- var ajaxtype = param ? "post" : "get";
- param = param || [];
- //请求服务器
- $.ajax({
- type: ajaxtype,
- url: url,
- data: param,
- dataType: 'json',
- success: function (data)
- {
- if (!data) return;
- g.loading.hide();
- g.append(node, data);
- g.trigger('success', [data]);
- },
- error: function (XMLHttpRequest, textStatus, errorThrown)
- {
- try
- {
- g.loading.hide();
- g.trigger('error', [XMLHttpRequest, textStatus, errorThrown]);
- }
- catch (e)
- {
- }
- }
- });
- },
- //清空
- clear: function ()
- {
- var g = this, p = this.options;
- //g.tree.html("");
- $("> li", g.tree).each(function () { g.remove(this); });
- },
- //@parm [treeNode] dom节点(li)、节点数据 或者节点 dataindex
- getNodeDom: function (nodeParm)
- {
- var g = this, p = this.options;
- if (nodeParm == null) return nodeParm;
- if (typeof (nodeParm) == "string" || typeof (nodeParm) == "number")
- {
- return $("li[treedataindex=" + nodeParm + "]", g.tree).get(0);
- }
- else if (typeof (nodeParm) == "object" && 'treedataindex' in nodeParm) //nodedata
- {
- return g.getNodeDom(nodeParm['treedataindex']);
- }
- return nodeParm;
- },
- //@parm [treeNode] dom节点(li)、节点数据 或者节点 dataindex
- remove: function (treeNode)
- {
- var g = this, p = this.options;
- treeNode = g.getNodeDom(treeNode);
- var treedataindex = parseInt($(treeNode).attr("treedataindex"));
- var treenodedata = g._getDataNodeByTreeDataIndex(g.data, treedataindex);
- if (treenodedata) g._setTreeDataStatus([treenodedata], 'delete');
- var parentNode = g.getParentTreeItem(treeNode);
- //复选框处理
- if (p.checkbox)
- {
- g._setParentCheckboxStatus($(treeNode));
- }
- $(treeNode).remove();
- g._updateStyle(parentNode ? $("ul:first", parentNode) : g.tree);
- },
- _updateStyle: function (ul)
- {
- var g = this, p = this.options;
- var itmes = $(" > li", ul);
- var treeitemlength = itmes.length;
- if (!treeitemlength) return;
- //遍历设置子节点的样式
- itmes.each(function (i, item)
- {
- if (i == 0 && !$(this).hasClass("l-first"))
- $(this).addClass("l-first");
- if (i == treeitemlength - 1 && !$(this).hasClass("l-last"))
- $(this).addClass("l-last");
- if (i == 0 && i == treeitemlength - 1)
- $(this).addClass("l-onlychild");
- $("> div .l-note,> div .l-note-last", this)
- .removeClass("l-note l-note-last")
- .addClass(i == treeitemlength - 1 ? "l-note-last" : "l-note");
- g._setTreeItem(this, { isLast: i == treeitemlength - 1 });
- });
- },
- //@parm [domnode] dom节点(li)、节点数据 或者节点 dataindex
- update: function (domnode, newnodedata)
- {
- var g = this, p = this.options;
- domnode = g.getNodeDom(domnode);
- var treedataindex = parseInt($(domnode).attr("treedataindex"));
- nodedata = g._getDataNodeByTreeDataIndex(g.data, treedataindex);
- for (var attr in newnodedata)
- {
- nodedata[attr] = newnodedata[attr];
- if (attr == p.textFieldName)
- {
- $("> .l-body > span", domnode).text(newnodedata[attr]);
- }
- }
- },
- //增加节点集合
- //@parm [newdata] 数据集合 Array
- //@parm [parentNode] dom节点(li)、节点数据 或者节点 dataindex
- //@parm [nearNode] 附加到节点的上方/下方(非必填)
- //@parm [isAfter] 附加到节点的下方(非必填)
- append: function (parentNode, newdata, nearNode, isAfter)
- {
- var g = this, p = this.options;
- parentNode = g.getNodeDom(parentNode);
- if (g.trigger('beforeAppend', [parentNode, newdata]) == false) return false;
- if (!newdata || !newdata.length) return false;
- if (p.idFieldName && p.parentIDFieldName)
- newdata = g.arrayToTree(newdata, p.idFieldName, p.parentIDFieldName);
- g._addTreeDataIndexToData(newdata);
- g._setTreeDataStatus(newdata, 'add');
- if (nearNode != null)
- {
- nearNode = g.getNodeDom(nearNode);
- }
- g.trigger('append', [parentNode, newdata])
- g._appendData(parentNode, newdata);
- if (parentNode == null)//增加到根节点
- {
- var gridhtmlarr = g._getTreeHTMLByData(newdata, 1, [], true);
- gridhtmlarr[gridhtmlarr.length - 1] = gridhtmlarr[0] = "";
- if (nearNode != null)
- {
- $(nearNode)[isAfter ? 'after' : 'before'](gridhtmlarr.join(''));
- g._updateStyle(parentNode ? $("ul:first", parentNode) : g.tree);
- }
- else
- {
- //remove last node class
- if ($("> li:last", g.tree).length > 0)
- g._setTreeItem($("> li:last", g.tree)[0], { isLast: false });
- g.tree.append(gridhtmlarr.join(''));
- }
- $(".l-body", g.tree).hover(function ()
- {
- $(this).addClass("l-over");
- }, function ()
- {
- $(this).removeClass("l-over");
- });
- g._upadteTreeWidth();
- g.trigger('afterAppend', [parentNode, newdata])
- return;
- }
- var treeitem = $(parentNode);
- var outlineLevel = parseInt(treeitem.attr("outlinelevel"));
- var hasChildren = $("> ul", treeitem).length > 0;
- if (!hasChildren)
- {
- treeitem.append("<ul class='l-children'></ul>");
- //设置为父节点
- g.upgrade(parentNode);
- }
- var isLast = [];
- for (var i = 1; i <= outlineLevel - 1; i++)
- {
- var currentParentTreeItem = $(g.getParentTreeItem(parentNode, i));
- isLast.push(currentParentTreeItem.hasClass("l-last"));
- }
- isLast.push(treeitem.hasClass("l-last"));
- var gridhtmlarr = g._getTreeHTMLByData(newdata, outlineLevel + 1, isLast, true);
- gridhtmlarr[gridhtmlarr.length - 1] = gridhtmlarr[0] = "";
- if (nearNode != null)
- {
- $(nearNode)[isAfter ? 'after' : 'before'](gridhtmlarr.join(''));
- g._updateStyle(parentNode ? $("ul:first", parentNode) : g.tree);
- }
- else
- {
- //remove last node class
- if ($("> .l-children > li:last", treeitem).length > 0)
- g._setTreeItem($("> .l-children > li:last", treeitem)[0], { isLast: false });
- $(">.l-children", parentNode).append(gridhtmlarr.join(''));
- }
- g._upadteTreeWidth();
- $(">.l-children .l-body", parentNode).hover(function ()
- {
- $(this).addClass("l-over");
- }, function ()
- {
- $(this).removeClass("l-over");
- });
- g.trigger('afterAppend', [parentNode, newdata]);
- },
- //@parm [nodeParm] dom节点(li)、节点数据 或者节点 dataindex
- cancelSelect: function (nodeParm)
- {
- var g = this, p = this.options;
- var domNode = g.getNodeDom(nodeParm);
- var treeitem = $(domNode);
- var treedataindex = parseInt(treeitem.attr("treedataindex"));
- var treenodedata = g._getDataNodeByTreeDataIndex(g.data, treedataindex);
- var treeitembody = $(">div:first", treeitem);
- if (p.checkbox)
- $(".l-checkbox", treeitembody).removeClass("l-checkbox-checked").addClass("l-checkbox-unchecked");
- else
- treeitembody.removeClass("l-selected");
- g.trigger('cancelSelect', [{ data: treenodedata, target: treeitem[0]}]);
- },
- //选择节点(参数:条件函数、Dom节点或ID值)
- selectNode: function (selectNodeParm)
- {
- var g = this, p = this.options;
- var clause = null;
- if (typeof (selectNodeParm) == "function")
- {
- clause = selectNodeParm;
- }
- else if (typeof (selectNodeParm) == "object")
- {
- var treeitem = $(selectNodeParm);
- var treedataindex = parseInt(treeitem.attr("treedataindex"));
- var treenodedata = g._getDataNodeByTreeDataIndex(g.data, treedataindex);
- var treeitembody = $(">div:first", treeitem);
- if (p.checkbox)
- $(".l-checkbox", treeitembody).removeClass("l-checkbox-unchecked").addClass("l-checkbox-checked");
- else
- treeitembody.addClass("l-selected");
- g.trigger('select', [{ data: treenodedata, target: treeitem[0]}]);
- return;
- }
- else
- {
- clause = function (data)
- {
- if (!data[p.idFieldName]) return false;
- return data[p.idFieldName].toString() == selectNodeParm.toString();
- };
- }
- $("li", g.tree).each(function ()
- {
- var treeitem = $(this);
- var treedataindex = parseInt(treeitem.attr("treedataindex"));
- var treenodedata = g._getDataNodeByTreeDataIndex(g.data, treedataindex);
- if (clause(treenodedata, treedataindex))
- {
- g.selectNode(this);
- }
- else
- {
- g.cancelSelect(this);
- }
- });
- },
- getTextByID: function (id)
- {
- var g = this, p = this.options;
- var data = g.getDataByID(id);
- if (!data) return null;
- return data[p.textFieldName];
- },
- getDataByID: function (id)
- {
- var g = this, p = this.options;
- var data = null;
- $("li", g.tree).each(function ()
- {
- if (data) return;
- var treeitem = $(this);
- var treedataindex = parseInt(treeitem.attr("treedataindex"));
- var treenodedata = g._getDataNodeByTreeDataIndex(g.data, treedataindex);
- if (treenodedata[p.idFieldName].toString() == id.toString())
- {
- data = treenodedata;
- }
- });
- return data;
- },
- arrayToTree: function (data, id, pid) //将ID、ParentID这种数据格式转换为树格式
- {
- if (!data || !data.length) return [];
- var targetData = []; //存储数据的容器(返回)
- var records = {};
- var itemLength = data.length; //数据集合的个数
- for (var i = 0; i < itemLength; i++)
- {
- var o = data[i];
- records[o[id]] = o;
- }
- for (var i = 0; i < itemLength; i++)
- {
- var currentData = data[i];
- var parentData = records[currentData[pid]];
- if (!parentData)
- {
- targetData.push(currentData);
- continue;
- }
- parentData.children = parentData.children || [];
- parentData.children.push(currentData);
- }
- return targetData;
- },
- //根据数据索引获取数据
- _getDataNodeByTreeDataIndex: function (data, treedataindex)
- {
- var g = this, p = this.options;
- for (var i = 0; i < data.length; i++)
- {
- if (data[i].treedataindex == treedataindex)
- return data[i];
- if (data[i].children)
- {
- var targetData = g._getDataNodeByTreeDataIndex(data[i].children, treedataindex);
- if (targetData) return targetData;
- }
- }
- return null;
- },
- //设置数据状态
- _setTreeDataStatus: function (data, status)
- {
- var g = this, p = this.options;
- $(data).each(function ()
- {
- this[p.statusName] = status;
- if (this.children)
- {
- g._setTreeDataStatus(this.children, status);
- }
- });
- },
- //设置data 索引
- _addTreeDataIndexToData: function (data)
- {
- var g = this, p = this.options;
- $(data).each(function ()
- {
- if (this.treedataindex != undefined) return;
- this.treedataindex = g.treedataindex++;
- if (this.children)
- {
- g._addTreeDataIndexToData(this.children);
- }
- });
- },
- _addToNodes: function (data)
- {
- var g = this, p = this.options;
- g.nodes = g.nodes || [];
- if ($.inArray(data, g.nodes) == -1)
- g.nodes.push(data);
- if (data.children)
- {
- $(data.children).each(function (i, item)
- {
- g._addToNodes(item);
- });
- }
- },
- //添加项到g.data
- _appendData: function (treeNode, data)
- {
- var g = this, p = this.options;
- var treedataindex = parseInt($(treeNode).attr("treedataindex"));
- var treenodedata = g._getDataNodeByTreeDataIndex(g.data, treedataindex);
- if (g.treedataindex == undefined) g.treedataindex = 0;
- if (treenodedata && treenodedata.children == undefined) treenodedata.children = [];
- $(data).each(function (i, item)
- {
- if (treenodedata)
- treenodedata.children[treenodedata.children.length] = item;
- else
- g.data[g.data.length] = item;
- g._addToNodes(item);
- });
- },
- _setTreeItem: function (treeNode, options)
- {
- var g = this, p = this.options;
- if (!options) return;
- treeNode = g.getNodeDom(treeNode);
- var treeItem = $(treeNode);
- var outlineLevel = parseInt(treeItem.attr("outlinelevel"));
- if (options.isLast != undefined)
- {
- if (options.isLast == true)
- {
- treeItem.removeClass("l-last").addClass("l-last");
- $("> div .l-note", treeItem).removeClass("l-note").addClass("l-note-last");
- $(".l-children li", treeItem)
- .find(".l-box:eq(" + (outlineLevel - 1) + ")")
- .removeClass("l-line");
- }
- else if (options.isLast == false)
- {
- treeItem.removeClass("l-last");
- $("> div .l-note-last", treeItem).removeClass("l-note-last").addClass("l-note");
- $(".l-children li", treeItem)
- .find(".l-box:eq(" + (outlineLevel - 1) + ")")
- .removeClass("l-line")
- .addClass("l-line");
- }
- }
- },
- _upadteTreeWidth: function ()
- {
- var g = this, p = this.options;
- var treeWidth = g.maxOutlineLevel * 22;
- if (p.checkbox) treeWidth += 22;
- if (p.parentIcon || p.childIcon) treeWidth += 22;
- treeWidth += p.nodeWidth;
- g.tree.width(treeWidth);
- },
- _getChildNodeClassName: function ()
- {
- var g = this, p = this.options;
- return 'l-tree-icon-' + p.childIcon;
- },
- _getParentNodeClassName: function (isOpen)
- {
- var g = this, p = this.options;
- var nodeclassname = 'l-tree-icon-' + p.parentIcon;
- if (isOpen) nodeclassname += '-open';
- return nodeclassname;
- },
- //根据data生成最终完整的tree html
- _getTreeHTMLByData: function (data, outlineLevel, isLast, isExpand)
- {
- var g = this, p = this.options;
- if (g.maxOutlineLevel < outlineLevel)
- g.maxOutlineLevel = outlineLevel;
- isLast = isLast || [];
- outlineLevel = outlineLevel || 1;
- var treehtmlarr = [];
- if (!isExpand) treehtmlarr.push('<ul class="l-children" style="display:none">');
- else treehtmlarr.push("<ul class='l-children'>");
- for (var i = 0; i < data.length; i++)
- {
- var isFirst = i == 0;
- var isLastCurrent = i == data.length - 1;
- var isExpandCurrent = true;
- var o = data[i];
- if (o.isexpand == false || o.isexpand == "false") isExpandCurrent = false;
- treehtmlarr.push('<li ');
- if (o.treedataindex != undefined)
- treehtmlarr.push('treedataindex="' + o.treedataindex + '" ');
- if (isExpandCurrent)
- treehtmlarr.push('isexpand=' + o.isexpand + ' ');
- treehtmlarr.push('outlinelevel=' + outlineLevel + ' ');
- //增加属性支持
- for (var j = 0; j < g.sysAttribute.length; j++)
- {
- if ($(this).attr(g.sysAttribute[j]))
- data[dataindex][g.sysAttribute[j]] = $(this).attr(g.sysAttribute[j]);
- }
- for (var j = 0; j < p.attribute.length; j++)
- {
- if (o[p.attribute[j]])
- treehtmlarr.push(p.attribute[j] + '="' + o[p.attribute[j]] + '" ');
- }
- //css class
- treehtmlarr.push('class="');
- isFirst && treehtmlarr.push('l-first ');
- isLastCurrent && treehtmlarr.push('l-last ');
- isFirst && isLastCurrent && treehtmlarr.push('l-onlychild ');
- treehtmlarr.push('"');
- treehtmlarr.push('>');
- treehtmlarr.push('<div class="l-body">');
- for (var k = 0; k <= outlineLevel - 2; k++)
- {
- if (isLast[k]) treehtmlarr.push('<div class="l-box"></div>');
- else treehtmlarr.push('<div class="l-box l-line"></div>');
- }
- if (g.hasChildren(o))
- {
- if (isExpandCurrent) treehtmlarr.push('<div class="l-box l-expandable-open"></div>');
- else treehtmlarr.push('<div class="l-box l-expandable-close"></div>');
- if (p.checkbox)
- {
- if (o.ischecked)
- treehtmlarr.push('<div class="l-box l-checkbox l-checkbox-checked"></div>');
- else
- treehtmlarr.push('<div class="l-box l-checkbox l-checkbox-unchecked"></div>');
- }
- if (p.parentIcon)
- {
- //node icon
- treehtmlarr.push('<div class="l-box l-tree-icon ');
- treehtmlarr.push(g._getParentNodeClassName(p.parentIcon ? true : false) + " ");
- if (p.iconFieldName && o[p.iconFieldName])
- treehtmlarr.push('l-tree-icon-none');
- treehtmlarr.push('">');
- if (p.iconFieldName && o[p.iconFieldName])
- treehtmlarr.push('<img src="' + o[p.iconFieldName] + '" />');
- treehtmlarr.push('</div>');
- }
- }
- else
- {
- if (isLastCurrent) treehtmlarr.push('<div class="l-box l-note-last"></div>');
- else treehtmlarr.push('<div class="l-box l-note"></div>');
- if (p.checkbox)
- {
- if (o.ischecked)
- treehtmlarr.push('<div class="l-box l-checkbox l-checkbox-checked"></div>');
- else
- treehtmlarr.push('<div class="l-box l-checkbox l-checkbox-unchecked"></div>');
- }
- if (p.childIcon)
- {
- //node icon
- treehtmlarr.push('<div class="l-box l-tree-icon ');
- treehtmlarr.push(g._getChildNodeClassName() + " ");
- if (p.iconFieldName && o[p.iconFieldName])
- treehtmlarr.push('l-tree-icon-none');
- treehtmlarr.push('">');
- if (p.iconFieldName && o[p.iconFieldName])
- treehtmlarr.push('<img src="' + o[p.iconFieldName] + '" />');
- treehtmlarr.push('</div>');
- }
- }
- treehtmlarr.push('<span>' + o[p.textFieldName] + '</span></div>');
- if (g.hasChildren(o))
- {
- var isLastNew = [];
- for (var k = 0; k < isLast.length; k++)
- {
- isLastNew.push(isLast[k]);
- }
- isLastNew.push(isLastCurrent);
- treehtmlarr.push(g._getTreeHTMLByData(o.children, outlineLevel + 1, isLastNew, isExpandCurrent).join(''));
- }
- treehtmlarr.push('</li>');
- }
- treehtmlarr.push("</ul>");
- return treehtmlarr;
- },
- //根据简洁的html获取data
- _getDataByTreeHTML: function (treeDom)
- {
- var g = this, p = this.options;
- var data = [];
- $("> li", treeDom).each(function (i, item)
- {
- var dataindex = data.length;
- data[dataindex] =
- {
- treedataindex: g.treedataindex++
- };
- data[dataindex][p.textFieldName] = $("> span,> a", this).html();
- for (var j = 0; j < g.sysAttribute.length; j++)
- {
- if ($(this).attr(g.sysAttribute[j]))
- data[dataindex][g.sysAttribute[j]] = $(this).attr(g.sysAttribute[j]);
- }
- for (var j = 0; j < p.attribute.length; j++)
- {
- if ($(this).attr(p.attribute[j]))
- data[dataindex][p.attribute[j]] = $(this).attr(p.attribute[j]);
- }
- if ($("> ul", this).length > 0)
- {
- data[dataindex].children = g._getDataByTreeHTML($("> ul", this));
- }
- });
- return data;
- },
- _applyTree: function ()
- {
- var g = this, p = this.options;
- g.data = g._getDataByTreeHTML(g.tree);
- var gridhtmlarr = g._getTreeHTMLByData(g.data, 1, [], true);
- gridhtmlarr[gridhtmlarr.length - 1] = gridhtmlarr[0] = "";
- g.tree.html(gridhtmlarr.join(''));
- g._upadteTreeWidth();
- $(".l-body", g.tree).hover(function ()
- {
- $(this).addClass("l-over");
- }, function ()
- {
- $(this).removeClass("l-over");
- });
- },
- _applyTreeEven: function (treeNode)
- {
- var g = this, p = this.options;
- $("> .l-body", treeNode).hover(function ()
- {
- $(this).addClass("l-over");
- }, function ()
- {
- $(this).removeClass("l-over");
- });
- },
- _getSrcElementByEvent: function (e)
- {
- var g = this;
- var obj = (e.target || e.srcElement);
- var tag = obj.tagName.toLowerCase();
- var jobjs = $(obj).parents().add(obj);
- var fn = function (parm)
- {
- for (var i = jobjs.length - 1; i >= 0; i--)
- {
- if ($(jobjs[i]).hasClass(parm)) return jobjs[i];
- }
- return null;
- };
- if (jobjs.index(this.element) == -1) return { out: true };
- var r = {
- tree: fn("l-tree"),
- node: fn("l-body"),
- checkbox: fn("l-checkbox"),
- icon: fn("l-tree-icon"),
- text: tag == "span"
- };
- if (r.node)
- {
- var treedataindex = parseInt($(r.node).parent().attr("treedataindex"));
- r.data = g._getDataNodeByTreeDataIndex(g.data, treedataindex);
- }
- return r;
- },
- _setTreeEven: function ()
- {
- var g = this, p = this.options;
- if (g.hasBind('contextmenu'))
- {
- g.tree.bind("contextmenu", function (e)
- {
- var obj = (e.target || e.srcElement);
- var treeitem = null;
- if (obj.tagName.toLowerCase() == "a" || obj.tagName.toLowerCase() == "span" || $(obj).hasClass("l-box"))
- treeitem = $(obj).parent().parent();
- else if ($(obj).hasClass("l-body"))
- treeitem = $(obj).parent();
- else if (obj.tagName.toLowerCase() == "li")
- treeitem = $(obj);
- if (!treeitem) return;
- var treedataindex = parseInt(treeitem.attr("treedataindex"));
- var treenodedata = g._getDataNodeByTreeDataIndex(g.data, treedataindex);
- return g.trigger('contextmenu', [{ data: treenodedata, target: treeitem[0] }, e]);
- });
- }
- g.tree.click(function (e)
- {
- var obj = (e.target || e.srcElement);
- var treeitem = null;
- if (obj.tagName.toLowerCase() == "a" || obj.tagName.toLowerCase() == "span" || $(obj).hasClass("l-box"))
- treeitem = $(obj).parent().parent();
- else if ($(obj).hasClass("l-body"))
- treeitem = $(obj).parent();
- else
- treeitem = $(obj);
- if (!treeitem) return;
- var treedataindex = parseInt(treeitem.attr("treedataindex"));
- var treenodedata = g._getDataNodeByTreeDataIndex(g.data, treedataindex);
- var treeitembtn = $("div.l-body:first", treeitem).find("div.l-expandable-open:first,div.l-expandable-close:first");
- var clickOnTreeItemBtn = $(obj).hasClass("l-expandable-open") || $(obj).hasClass("l-expandable-close");
- if (!$(obj).hasClass("l-checkbox") && !clickOnTreeItemBtn)
- {
- if ($(">div:first", treeitem).hasClass("l-selected"))
- {
- if (g.trigger('beforeCancelSelect', [{ data: treenodedata, target: treeitem[0]}]) == false)
- return false;
- $(">div:first", treeitem).removeClass("l-selected");
- g.trigger('cancelSelect', [{ data: treenodedata, target: treeitem[0]}]);
- }
- else
- {
- if (g.trigger('beforeSelect', [{ data: treenodedata, target: treeitem[0]}]) == false)
- return false;
- $(".l-body", g.tree).removeClass("l-selected");
- $(">div:first", treeitem).addClass("l-selected");
- g.trigger('select', [{ data: treenodedata, target: treeitem[0]}])
- }
- }
- //chekcbox even
- if ($(obj).hasClass("l-checkbox"))
- {
- if (p.autoCheckboxEven)
- {
- //状态:未选中
- if ($(obj).hasClass("l-checkbox-unchecked"))
- {
- $(obj).removeClass("l-checkbox-unchecked").addClass("l-checkbox-checked");
- $(".l-children .l-checkbox", treeitem)
- .removeClass("l-checkbox-incomplete l-checkbox-unchecked")
- .addClass("l-checkbox-checked");
- g.trigger('check', [{ data: treenodedata, target: treeitem[0] }, true]);
- }
- //状态:选中
- else if ($(obj).hasClass("l-checkbox-checked"))
- {
- $(obj).removeClass("l-checkbox-checked").addClass("l-checkbox-unchecked");
- $(".l-children .l-checkbox", treeitem)
- .removeClass("l-checkbox-incomplete l-checkbox-checked")
- .addClass("l-checkbox-unchecked");
- g.trigger('check', [{ data: treenodedata, target: treeitem[0] }, false]);
- }
- //状态:未完全选中
- else if ($(obj).hasClass("l-checkbox-incomplete"))
- {
- $(obj).removeClass("l-checkbox-incomplete").addClass("l-checkbox-checked");
- $(".l-children .l-checkbox", treeitem)
- .removeClass("l-checkbox-incomplete l-checkbox-unchecked")
- .addClass("l-checkbox-checked");
- g.trigger('check', [{ data: treenodedata, target: treeitem[0] }, true]);
- }
- g._setParentCheckboxStatus(treeitem);
- }
- else
- {
- //状态:未选中
- if ($(obj).hasClass("l-checkbox-unchecked"))
- {
- $(obj).removeClass("l-checkbox-unchecked").addClass("l-checkbox-checked");
- //是否单选
- if (p.single)
- {
- $(".l-checkbox", g.tree).not(obj).removeClass("l-checkbox-checked").addClass("l-checkbox-unchecked");
- }
- g.trigger('check', [{ data: treenodedata, target: treeitem[0] }, true]);
- }
- //状态:选中
- else if ($(obj).hasClass("l-checkbox-checked"))
- {
- $(obj).removeClass("l-checkbox-checked").addClass("l-checkbox-unchecked");
- g.trigger('check', [{ data: treenodedata, target: treeitem[0] }, false]);
- }
- }
- }
- //状态:已经张开
- else if (treeitembtn.hasClass("l-expandable-open") && (!p.btnClickToToggleOnly || clickOnTreeItemBtn))
- {
- if (g.trigger('beforeCollapse', [{ data: treenodedata, target: treeitem[0]}]) == false)
- return false;
- treeitembtn.removeClass("l-expandable-open").addClass("l-expandable-close");
- if (p.slide)
- $("> .l-children", treeitem).slideToggle('fast');
- else
- $("> .l-children", treeitem).toggle();
- $("> div ." + g._getParentNodeClassName(true), treeitem)
- .removeClass(g._getParentNodeClassName(true))
- .addClass(g._getParentNodeClassName());
- g.trigger('collapse', [{ data: treenodedata, target: treeitem[0]}]);
- }
- //状态:没有张开
- else if (treeitembtn.hasClass("l-expandable-close") && (!p.btnClickToToggleOnly || clickOnTreeItemBtn))
- {
- if (g.trigger('beforeExpand', [{ data: treenodedata, target: treeitem[0]}]) == false)
- return false;
- treeitembtn.removeClass("l-expandable-close").addClass("l-expandable-open");
- var callback = function ()
- {
- g.trigger('expand', [{ data: treenodedata, target: treeitem[0]}]);
- };
- if (p.slide)
- {
- $("> .l-children", treeitem).slideToggle('fast', callback);
- }
- else
- {
- $("> .l-children", treeitem).toggle();
- callback();
- }
- $("> div ." + g._getParentNodeClassName(), treeitem)
- .removeClass(g._getParentNodeClassName())
- .addClass(g._getParentNodeClassName(true));
- }
- g.trigger('click', [{ data: treenodedata, target: treeitem[0]}]);
- });
- //节点拖拽支持
- if ($.fn.ligerDrag && p.nodeDraggable)
- {
- g.nodeDroptip = $("<div class='l-drag-nodedroptip' style='display:none'></div>").appendTo('body');
- g.tree.ligerDrag({ revert: true, animate: false,
- proxyX: 20, proxyY: 20,
- proxy: function (draggable, e)
- {
- var src = g._getSrcElementByEvent(e);
- if (src.node)
- {
- var content = "dragging";
- if (p.nodeDraggingRender)
- {
- content = p.nodeDraggingRender(draggable.draggingNodes, draggable, g);
- }
- else
- {
- content = "";
- var appended = false;
- for (var i in draggable.draggingNodes)
- {
- var node = draggable.draggingNodes[i];
- if (appended) content += ",";
- content += node.text;
- appended = true;
- }
- }
- var proxy = $("<div class='l-drag-proxy' style='display:none'><div class='l-drop-icon l-drop-no'></div>" + content + "</div>").appendTo('body');
- return proxy;
- }
- },
- onRevert: function () { return false; },
- onRendered: function ()
- {
- this.set('cursor', 'default');
- g.children[this.id] = this;
- },
- onStartDrag: function (current, e)
- {
- if (e.button == 2) return false;
- this.set('cursor', 'default');
- var src = g._getSrcElementByEvent(e);
- if (src.checkbox) return false;
- if (p.checkbox)
- {
- var checked = g.getChecked();
- this.draggingNodes = [];
- for (var i in checked)
- {
- this.draggingNodes.push(checked[i].data);
- }
- if (!this.draggingNodes || !this.draggingNodes.length) return false;
- }
- else
- {
- this.draggingNodes = [src.data];
- }
- this.draggingNode = src.data;
- this.set('cursor', 'move');
- g.nodedragging = true;
- this.validRange = {
- top: g.tree.offset().top,
- bottom: g.tree.offset().top + g.tree.height(),
- left: g.tree.offset().left,
- right: g.tree.offset().left + g.tree.width()
- };
- },
- onDrag: function (current, e)
- {
- var nodedata = this.draggingNode;
- if (!nodedata) return false;
- var nodes = this.draggingNodes ? this.draggingNodes : [nodedata];
- if (g.nodeDropIn == null) g.nodeDropIn = -1;
- var pageX = e.pageX;
- var pageY = e.pageY;
- var visit = false;
- var validRange = this.validRange;
- if (pageX < validRange.left || pageX > validRange.right
- || pageY > validRange.bottom || pageY < validRange.top)
- {
- g.nodeDropIn = -1;
- g.nodeDroptip.hide();
- this.proxy.find(".l-drop-icon:first").removeClass("l-drop-yes l-drop-add").addClass("l-drop-no");
- return;
- }
- for (var i = 0, l = g.nodes.length; i < l; i++)
- {
- var nd = g.nodes[i];
- var treedataindex = nd['treedataindex'];
- if (nodedata['treedataindex'] == treedataindex) visit = true;
- if ($.inArray(nd, nodes) != -1) continue;
- var isAfter = visit ? true : false;
- if (g.nodeDropIn != -1 && g.nodeDropIn != treedataindex) continue;
- var jnode = $("li[treedataindex=" + treedataindex + "] div:first", g.tree);
- var offset = jnode.offset();
- var range = {
- top: offset.top,
- bottom: offset.top + jnode.height(),
- left: g.tree.offset().left,
- right: g.tree.offset().left + g.tree.width()
- };
- if (pageX > range.left && pageX < range.right && pageY > range.top && pageY < range.bottom)
- {
- var lineTop = offset.top;
- if (isAfter) lineTop += jnode.height();
- g.nodeDroptip.css({
- left: range.left,
- top: lineTop,
- width: range.right - range.left
- }).show();
- g.nodeDropIn = treedataindex;
- g.nodeDropDir = isAfter ? "bottom" : "top";
- if (pageY > range.top + 7 && pageY < range.bottom - 7)
- {
- this.proxy.find(".l-drop-icon:first").removeClass("l-drop-no l-drop-yes").addClass("l-drop-add");
- g.nodeDroptip.hide();
- g.nodeDropInParent = true;
- }
- else
- {
- this.proxy.find(".l-drop-icon:first").removeClass("l-drop-no l-drop-add").addClass("l-drop-yes");
- g.nodeDroptip.show();
- g.nodeDropInParent = false;
- }
- break;
- }
- else if (g.nodeDropIn != -1)
- {
- g.nodeDropIn = -1;
- g.nodeDropInParent = false;
- g.nodeDroptip.hide();
- this.proxy.find(".l-drop-icon:first").removeClass("l-drop-yes l-drop-add").addClass("l-drop-no");
- }
- }
- },
- onStopDrag: function (current, e)
- {
- var nodes = this.draggingNodes;
- g.nodedragging = false;
- if (g.nodeDropIn != -1)
- {
- for (var i = 0; i < nodes.length; i++)
- {
- var children = nodes[i].children;
- if (children)
- {
- nodes = $.grep(nodes, function (node, i)
- {
- var isIn = $.inArray(node, children) == -1;
- return isIn;
- });
- }
- }
- for (var i in nodes)
- {
- var node = nodes[i];
- if (g.nodeDropInParent)
- {
- g.remove(node);
- g.append(g.nodeDropIn, [node]);
- }
- else
- {
- g.remove(node);
- g.append(g.getParent(g.nodeDropIn), [node], g.nodeDropIn, g.nodeDropDir == "bottom")
- }
- }
- g.nodeDropIn = -1;
- }
- g.nodeDroptip.hide();
- this.set('cursor', 'default');
- }
- });
- }
- },
- //递归设置父节点的状态
- _setParentCheckboxStatus: function (treeitem)
- {
- var g = this, p = this.options;
- //当前同级别或低级别的节点是否都选中了
- var isCheckedComplete = $(".l-checkbox-unchecked", treeitem.parent()).length == 0;
- //当前同级别或低级别的节点是否都没有选中
- var isCheckedNull = $(".l-checkbox-checked", treeitem.parent()).length == 0;
- if (isCheckedComplete)
- {
- treeitem.parent().prev().find(".l-checkbox")
- .removeClass("l-checkbox-unchecked l-checkbox-incomplete")
- .addClass("l-checkbox-checked");
- }
- else if (isCheckedNull)
- {
- treeitem.parent().prev().find("> .l-checkbox")
- .removeClass("l-checkbox-checked l-checkbox-incomplete")
- .addClass("l-checkbox-unchecked");
- }
- else
- {
- treeitem.parent().prev().find("> .l-checkbox")
- .removeClass("l-checkbox-unchecked l-checkbox-checked")
- .addClass("l-checkbox-incomplete");
- }
- if (treeitem.parent().parent("li").length > 0)
- g._setParentCheckboxStatus(treeitem.parent().parent("li"));
- }
- });
- })(jQuery);/**
- * jQuery ligerUI 1.1.9
- *
- * http://ligerui.com
- *
- * Author daomi 2012 [ gd_star@163.com ]
- *
- */
- (function ($)
- {
- var l = $.ligerui;
- l.windowCount = 0;
- $.ligerWindow = function (options)
- {
- return l.run.call(null, "ligerWindow", arguments, { isStatic: true });
- };
- $.ligerWindow.show = function (p)
- {
- return $.ligerWindow(p);
- };
- $.ligerDefaults.Window = {
- showClose: true,
- showMax: true,
- showToggle: true,
- showMin: true,
- title: 'window',
- load: false,
- onLoaded: null,
- modal: false //是否模态窗口
- };
- $.ligerMethos.Window = {};
- l.controls.Window = function (options)
- {
- l.controls.Window.base.constructor.call(this, null, options);
- };
- l.controls.Window.ligerExtend(l.core.Win, {
- __getType: function ()
- {
- return 'Window';
- },
- __idPrev: function ()
- {
- return 'Window';
- },
- _extendMethods: function ()
- {
- return $.ligerMethos.Window;
- },
- _render: function ()
- {
- var g = this, p = this.options;
- 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>');
- g.element = g.window[0];
- g.window.content = $(".l-window-content", g.window);
- g.window.header = $(".l-window-header", g.window);
- g.window.buttons = $(".l-window-header-buttons:first", g.window);
- if (p.url)
- {
- if (p.load)
- {
- g.window.content.load(p.url, function ()
- {
- g.trigger('loaded');
- });
- g.window.content.addClass("l-window-content-scroll");
- }
- else
- {
- var iframe = $("<iframe frameborder='0' src='" + p.url + "'></iframe>");
- var framename = "ligeruiwindow" + l.windowCount++;
- if (p.name) framename = p.name;
- iframe.attr("name", framename).attr("id", framename);
- p.framename = framename;
- iframe.appendTo(g.window.content);
- g.iframe = iframe;
- }
- }
- else if (p.content)
- {
- var content = $("<div>" + p.content + "</div>");
- content.appendTo(g.window.content);
- }
- else if (p.target)
- {
- g.window.content.append(p.target);
- p.target.show();
- }
- this.mask();
- g.active();
- $('body').append(g.window);
- g.set({ width: p.width, height: p.height });
- //位置初始化
- var left = 0;
- var top = 0;
- if (p.left != null) left = p.left;
- else p.left = left = 0.5 * ($(window).width() - g.window.width());
- if (p.top != null) top = p.top;
- else p.top = top = 0.5 * ($(window).height() - g.window.height()) + $(window).scrollTop() - 10;
- if (left < 0) p.left = left = 0;
- if (top < 0) p.top = top = 0;
- g.set(p);
- p.framename && $(">iframe", g.window.content).attr('name', p.framename);
- if (!p.showToggle) $(".l-window-toggle", g.window).remove();
- if (!p.showMax) $(".l-window-max", g.window).remove();
- if (!p.showClose) $(".l-window-close", g.window).remove();
- g._saveStatus();
- //拖动支持
- if ($.fn.ligerDrag)
- {
- g.draggable = g.window.drag = g.window.ligerDrag({ handler: '.l-window-header-inner', onStartDrag: function ()
- {
- g.active();
- }, onStopDrag: function ()
- {
- g._saveStatus();
- }, animate: false
- });
- }
- //改变大小支持
- if ($.fn.ligerResizable)
- {
- g.resizeable = g.window.resizable = g.window.ligerResizable({
- onStartResize: function ()
- {
- g.active();
- $(".l-window-max", g.window).removeClass("l-window-regain");
- },
- onStopResize: function (current, e)
- {
- var top = 0;
- var left = 0;
- if (!isNaN(parseInt(g.window.css('top'))))
- top = parseInt(g.window.css('top'));
- if (!isNaN(parseInt(g.window.css('left'))))
- left = parseInt(g.window.css('left'));
- if (current.diffTop)
- g.window.css({ top: top + current.diffTop });
- if (current.diffLeft)
- g.window.css({ left: left + current.diffLeft });
- if (current.newWidth)
- g.window.width(current.newWidth);
- if (current.newHeight)
- g.window.content.height(current.newHeight - 28);
- g._saveStatus();
- return false;
- }
- });
- g.window.append("<div class='l-btn-nw-drop'></div>");
- }
- //设置事件
- $(".l-window-toggle", g.window).click(function ()
- {
- if ($(this).hasClass("l-window-toggle-close"))
- {
- g.collapsed = false;
- $(this).removeClass("l-window-toggle-close");
- } else
- {
- g.collapsed = true;
- $(this).addClass("l-window-toggle-close");
- }
- g.window.content.slideToggle();
- }).hover(function ()
- {
- if (g.window.drag)
- g.window.drag.set('disabled', true);
- }, function ()
- {
- if (g.window.drag)
- g.window.drag.set('disabled', false);
- });
- $(".l-window-close", g.window).click(function ()
- {
- if (g.trigger('close') == false) return false;
- g.window.hide();
- l.win.removeTask(g);
- }).hover(function ()
- {
- if (g.window.drag)
- g.window.drag.set('disabled', true);
- }, function ()
- {
- if (g.window.drag)
- g.window.drag.set('disabled', false);
- });
- $(".l-window-max", g.window).click(function ()
- {
- if ($(this).hasClass("l-window-regain"))
- {
- if (g.trigger('regain') == false) return false;
- g.window.width(g._width).css({ left: g._left, top: g._top });
- g.window.content.height(g._height - 28);
- $(this).removeClass("l-window-regain");
- }
- else
- {
- if (g.trigger('max') == false) return false;
- g.window.width($(window).width() - 2).css({ left: 0, top: 0 });
- g.window.content.height($(window).height() - 28).show();
- $(this).addClass("l-window-regain");
- }
- });
- },
- _saveStatus: function ()
- {
- var g = this;
- g._width = g.window.width();
- g._height = g.window.height();
- var top = 0;
- var left = 0;
- if (!isNaN(parseInt(g.window.css('top'))))
- top = parseInt(g.window.css('top'));
- if (!isNaN(parseInt(g.window.css('left'))))
- left = parseInt(g.window.css('left'));
- g._top = top;
- g._left = left;
- },
- min: function ()
- {
- this.window.hide();
- this.minimize = true;
- this.actived = false;
- },
- _setShowMin: function (value)
- {
- var g = this, p = this.options;
- if (value)
- {
- if (!g.winmin)
- {
- g.winmin = $('<div class="l-window-min"></div>').prependTo(g.window.buttons)
- .click(function ()
- {
- g.min();
- });
- l.win.addTask(g);
- }
- }
- else if (g.winmin)
- {
- g.winmin.remove();
- g.winmin = null;
- }
- },
- _setLeft: function (value)
- {
- if (value != null)
- this.window.css({ left: value });
- },
- _setTop: function (value)
- {
- if (value != null)
- this.window.css({ top: value });
- },
- _setWidth: function (value)
- {
- if (value > 0)
- this.window.width(value);
- },
- _setHeight: function (value)
- {
- if (value > 28)
- this.window.content.height(value - 28);
- },
- _setTitle: function (value)
- {
- if (value)
- $(".l-window-header-inner", this.window.header).html(value);
- },
- _setUrl: function (url)
- {
- var g = this, p = this.options;
- p.url = url;
- if (p.load)
- {
- g.window.content.html("").load(p.url, function ()
- {
- if (g.trigger('loaded') == false) return false;
- });
- }
- else if (g.jiframe)
- {
- g.jiframe.attr("src", p.url);
- }
- },
- hide: function ()
- {
- var g = this, p = this.options;
- this.unmask();
- this.window.hide();
- },
- show: function ()
- {
- var g = this, p = this.options;
- this.mask();
- this.window.show();
- },
- remove: function ()
- {
- var g = this, p = this.options;
- this.unmask();
- this.window.remove();
- },
- active: function ()
- {
- var g = this, p = this.options;
- if (g.minimize)
- {
- var width = g._width, height = g._height, left = g._left, top = g._top;
- if (g.maximum)
- {
- width = $(window).width();
- height = $(window).height();
- left = top = 0;
- if (l.win.taskbar)
- {
- height -= l.win.taskbar.outerHeight();
- if (l.win.top) top += l.win.taskbar.outerHeight();
- }
- }
- g.set({ width: width, height: height, left: left, top: top });
- }
- g.actived = true;
- g.minimize = false;
- l.win.setFront(g);
- g.show();
- l.win.setFront(this);
- },
- setUrl: function (url)
- {
- return _setUrl(url);
- }
- });
- })(jQuery);
|