123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321 |
- /**
- * jQuery EasyUI 1.4.4
- *
- * Copyright (c) 2009-2015 www.jeasyui.com. All rights reserved.
- *
- * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php
- * To use it on other terms please contact us: info@jeasyui.com
- *
- */
- (function($){
- function _1(_2){
- var _3=$.data(_2,"combogrid");
- var _4=_3.options;
- var _5=_3.grid;
- $(_2).addClass("combogrid-f").combo($.extend({},_4,{onShowPanel:function(){
- var p=$(this).combogrid("panel");
- var _6=p.outerHeight()-p.height();
- var _7=p._size("minHeight");
- var _8=p._size("maxHeight");
- var dg=$(this).combogrid("grid");
- dg.datagrid("resize",{width:"100%",height:(isNaN(parseInt(_4.panelHeight))?"auto":"100%"),minHeight:(_7?_7-_6:""),maxHeight:(_8?_8-_6:"")});
- var _9=dg.datagrid("getSelected");
- if(_9){
- dg.datagrid("scrollTo",dg.datagrid("getRowIndex",_9));
- }
- _4.onShowPanel.call(this);
- }}));
- var _a=$(_2).combo("panel");
- if(!_5){
- _5=$("<table></table>").appendTo(_a);
- _3.grid=_5;
- }
- _5.datagrid($.extend({},_4,{border:false,singleSelect:(!_4.multiple),onLoadSuccess:function(_b){
- var _c=$(_2).combo("getValues");
- var _d=_4.onSelect;
- _4.onSelect=function(){
- };
- _15(_2,_c,_3.remainText);
- _4.onSelect=_d;
- _4.onLoadSuccess.apply(_2,arguments);
- },onClickRow:_e,onSelect:function(_f,row){
- _10();
- _4.onSelect.call(this,_f,row);
- },onUnselect:function(_11,row){
- _10();
- _4.onUnselect.call(this,_11,row);
- },onSelectAll:function(_12){
- _10();
- _4.onSelectAll.call(this,_12);
- },onUnselectAll:function(_13){
- if(_4.multiple){
- _10();
- }
- _4.onUnselectAll.call(this,_13);
- }}));
- function _e(_14,row){
- _3.remainText=false;
- _10();
- if(!_4.multiple){
- $(_2).combo("hidePanel");
- }
- _4.onClickRow.call(this,_14,row);
- };
- function _10(){
- var vv=$.map(_5.datagrid("getSelections"),function(row){
- return row[_4.idField];
- });
- vv=vv.concat(_4.unselectedValues);
- if(!_4.multiple){
- vv=vv.length?[vv[0]]:[""];
- }
- _15(_2,vv,_3.remainText);
- };
- };
- function nav(_16,dir){
- var _17=$.data(_16,"combogrid");
- var _18=_17.options;
- var _19=_17.grid;
- var _1a=_19.datagrid("getRows").length;
- if(!_1a){
- return;
- }
- var tr=_18.finder.getTr(_19[0],null,"highlight");
- if(!tr.length){
- tr=_18.finder.getTr(_19[0],null,"selected");
- }
- var _1b;
- if(!tr.length){
- _1b=(dir=="next"?0:_1a-1);
- }else{
- var _1b=parseInt(tr.attr("datagrid-row-index"));
- _1b+=(dir=="next"?1:-1);
- if(_1b<0){
- _1b=_1a-1;
- }
- if(_1b>=_1a){
- _1b=0;
- }
- }
- _19.datagrid("highlightRow",_1b);
- if(_18.selectOnNavigation){
- _17.remainText=false;
- _19.datagrid("selectRow",_1b);
- }
- };
- function _15(_1c,_1d,_1e){
- var _1f=$.data(_1c,"combogrid");
- var _20=_1f.options;
- var _21=_1f.grid;
- var _22=$(_1c).combo("getValues");
- var _23=$(_1c).combo("options");
- var _24=_23.onChange;
- _23.onChange=function(){
- };
- var _25=_21.datagrid("options");
- var _26=_25.onSelect;
- var _27=_25.onUnselectAll;
- _25.onSelect=_25.onUnselectAll=function(){
- };
- if(!$.isArray(_1d)){
- _1d=_1d.split(_20.separator);
- }
- var _28=[];
- $.map(_21.datagrid("getSelections"),function(row){
- if($.inArray(row[_20.idField],_1d)>=0){
- _28.push(row);
- }
- });
- _21.datagrid("clearSelections");
- _21.data("datagrid").selectedRows=_28;
- var ss=[];
- for(var i=0;i<_1d.length;i++){
- var _29=_1d[i];
- var _2a=_21.datagrid("getRowIndex",_29);
- if(_2a>=0){
- _21.datagrid("selectRow",_2a);
- }
- ss.push(_2b(_29,_21.datagrid("getRows"))||_2b(_29,_21.datagrid("getSelections"))||_2b(_29,_20.mappingRows)||_29);
- }
- _20.unselectedValues=[];
- var _2c=$.map(_28,function(row){
- return row[_20.idField];
- });
- $.map(_1d,function(_2d){
- if($.inArray(_2d,_2c)==-1){
- _20.unselectedValues.push(_2d);
- }
- });
- $(_1c).combo("setValues",_22);
- _23.onChange=_24;
- _25.onSelect=_26;
- _25.onUnselectAll=_27;
- if(!_1e){
- var s=ss.join(_20.separator);
- if($(_1c).combo("getText")!=s){
- $(_1c).combo("setText",s);
- }
- }
- $(_1c).combo("setValues",_1d);
- function _2b(_2e,a){
- for(var i=0;i<a.length;i++){
- if(_2e==a[i][_20.idField]){
- return a[i][_20.textField];
- }
- }
- return undefined;
- };
- };
- function _2f(_30,q){
- var _31=$.data(_30,"combogrid");
- var _32=_31.options;
- var _33=_31.grid;
- _31.remainText=true;
- if(_32.multiple&&!q){
- _15(_30,[],true);
- }else{
- _15(_30,[q],true);
- }
- if(_32.mode=="remote"){
- _33.datagrid("clearSelections");
- _33.datagrid("load",$.extend({},_32.queryParams,{q:q}));
- }else{
- if(!q){
- return;
- }
- _33.datagrid("clearSelections").datagrid("highlightRow",-1);
- var _34=_33.datagrid("getRows");
- var qq=_32.multiple?q.split(_32.separator):[q];
- $.map(qq,function(q){
- q=$.trim(q);
- if(q){
- $.map(_34,function(row,i){
- if(q==row[_32.textField]){
- _33.datagrid("selectRow",i);
- }else{
- if(_32.filter.call(_30,q,row)){
- _33.datagrid("highlightRow",i);
- }
- }
- });
- }
- });
- }
- };
- function _35(_36){
- var _37=$.data(_36,"combogrid");
- var _38=_37.options;
- var _39=_37.grid;
- var tr=_38.finder.getTr(_39[0],null,"highlight");
- _37.remainText=false;
- if(tr.length){
- var _3a=parseInt(tr.attr("datagrid-row-index"));
- if(_38.multiple){
- if(tr.hasClass("datagrid-row-selected")){
- _39.datagrid("unselectRow",_3a);
- }else{
- _39.datagrid("selectRow",_3a);
- }
- }else{
- _39.datagrid("selectRow",_3a);
- }
- }
- var vv=[];
- $.map(_39.datagrid("getSelections"),function(row){
- vv.push(row[_38.idField]);
- });
- $(_36).combogrid("setValues",vv);
- if(!_38.multiple){
- $(_36).combogrid("hidePanel");
- }
- };
- $.fn.combogrid=function(_3b,_3c){
- if(typeof _3b=="string"){
- var _3d=$.fn.combogrid.methods[_3b];
- if(_3d){
- return _3d(this,_3c);
- }else{
- return this.combo(_3b,_3c);
- }
- }
- _3b=_3b||{};
- return this.each(function(){
- var _3e=$.data(this,"combogrid");
- if(_3e){
- $.extend(_3e.options,_3b);
- }else{
- _3e=$.data(this,"combogrid",{options:$.extend({},$.fn.combogrid.defaults,$.fn.combogrid.parseOptions(this),_3b)});
- }
- _1(this);
- });
- };
- $.fn.combogrid.methods={options:function(jq){
- var _3f=jq.combo("options");
- return $.extend($.data(jq[0],"combogrid").options,{width:_3f.width,height:_3f.height,originalValue:_3f.originalValue,disabled:_3f.disabled,readonly:_3f.readonly});
- },grid:function(jq){
- return $.data(jq[0],"combogrid").grid;
- },setValues:function(jq,_40){
- return jq.each(function(){
- var _41=$(this).combogrid("options");
- if($.isArray(_40)){
- _40=$.map(_40,function(_42){
- if(typeof _42=="object"){
- var v=_42[_41.idField];
- (function(){
- for(var i=0;i<_41.mappingRows.length;i++){
- if(v==_41.mappingRows[i][_41.idField]){
- return;
- }
- }
- _41.mappingRows.push(_42);
- })();
- return v;
- }else{
- return _42;
- }
- });
- }
- _15(this,_40);
- });
- },setValue:function(jq,_43){
- return jq.each(function(){
- $(this).combogrid("setValues",[_43]);
- });
- },clear:function(jq){
- return jq.each(function(){
- $(this).combogrid("grid").datagrid("clearSelections");
- $(this).combo("clear");
- });
- },reset:function(jq){
- return jq.each(function(){
- var _44=$(this).combogrid("options");
- if(_44.multiple){
- $(this).combogrid("setValues",_44.originalValue);
- }else{
- $(this).combogrid("setValue",_44.originalValue);
- }
- });
- }};
- $.fn.combogrid.parseOptions=function(_45){
- var t=$(_45);
- return $.extend({},$.fn.combo.parseOptions(_45),$.fn.datagrid.parseOptions(_45),$.parser.parseOptions(_45,["idField","textField","mode"]));
- };
- $.fn.combogrid.defaults=$.extend({},$.fn.combo.defaults,$.fn.datagrid.defaults,{height:22,loadMsg:null,idField:null,textField:null,unselectedValues:[],mappingRows:[],mode:"local",keyHandler:{up:function(e){
- nav(this,"prev");
- e.preventDefault();
- },down:function(e){
- nav(this,"next");
- e.preventDefault();
- },left:function(e){
- },right:function(e){
- },enter:function(e){
- _35(this);
- },query:function(q,e){
- _2f(this,q);
- }},filter:function(q,row){
- var _46=$(this).combogrid("options");
- return (row[_46.textField]||"").toLowerCase().indexOf(q.toLowerCase())==0;
- }});
- })(jQuery);
|