/** * jQuery EasyUI 1.4 * * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved. * * Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt * To use it on other terms please contact us at 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"); $(this).combogrid("grid").datagrid("resize",{width:"100%",height:(isNaN(parseInt(_4.panelHeight))?"auto":"100%"),minHeight:(_7?_7-_6:""),maxHeight:(_8?_8-_6:"")}); _4.onShowPanel.call(this); }})); var _9=$(_2).combo("panel"); if(!_5){ _5=$("
").appendTo(_9); _3.grid=_5; } _5.datagrid($.extend({},_4,{border:false,singleSelect:(!_4.multiple),onLoadSuccess:function(_a){ var _b=$(_2).combo("getValues"); var _c=_4.onSelect; _4.onSelect=function(){ }; _1c(_2,_b,_3.remainText); _4.onSelect=_c; _4.onLoadSuccess.apply(_2,arguments); },onClickRow:_d,onSelect:function(_e,_f){ _10(); _4.onSelect.call(this,_e,_f); },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 _d(_14,row){ _3.remainText=false; _10(); if(!_4.multiple){ $(_2).combo("hidePanel"); } _4.onClickRow.call(this,_14,row); }; function _10(){ var _15=_5.datagrid("getSelections"); var vv=[],ss=[]; for(var i=0;i<_15.length;i++){ vv.push(_15[i][_4.idField]); ss.push(_15[i][_4.textField]); } if(!_4.multiple){ $(_2).combo("setValues",(vv.length?vv:[""])); }else{ $(_2).combo("setValues",vv); } if(!_3.remainText){ $(_2).combo("setText",ss.join(_4.separator)); } }; }; 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 _1c(_1d,_1e,_1f){ var _20=$.data(_1d,"combogrid"); var _21=_20.options; var _22=_20.grid; var _23=_22.datagrid("getRows"); var ss=[]; var _24=$(_1d).combo("getValues"); var _25=$(_1d).combo("options"); var _26=_25.onChange; _25.onChange=function(){ }; _22.datagrid("clearSelections"); for(var i=0;i<_1e.length;i++){ var _27=_22.datagrid("getRowIndex",_1e[i]); if(_27>=0){ _22.datagrid("selectRow",_27); ss.push(_23[_27][_21.textField]); }else{ ss.push(_1e[i]); } } $(_1d).combo("setValues",_24); _25.onChange=_26; $(_1d).combo("setValues",_1e); if(!_1f){ var s=ss.join(_21.separator); if($(_1d).combo("getText")!=s){ $(_1d).combo("setText",s); } } }; function _28(_29,q){ var _2a=$.data(_29,"combogrid"); var _2b=_2a.options; var _2c=_2a.grid; _2a.remainText=true; if(_2b.multiple&&!q){ _1c(_29,[],true); }else{ _1c(_29,[q],true); } if(_2b.mode=="remote"){ _2c.datagrid("clearSelections"); _2c.datagrid("load",$.extend({},_2b.queryParams,{q:q})); }else{ if(!q){ return; } _2c.datagrid("clearSelections").datagrid("highlightRow",-1); var _2d=_2c.datagrid("getRows"); var qq=_2b.multiple?q.split(_2b.separator):[q]; $.map(qq,function(q){ q=$.trim(q); if(q){ $.map(_2d,function(row,i){ if(q==row[_2b.textField]){ _2c.datagrid("selectRow",i); }else{ if(_2b.filter.call(_29,q,row)){ _2c.datagrid("highlightRow",i); } } }); } }); } }; function _2e(_2f){ var _30=$.data(_2f,"combogrid"); var _31=_30.options; var _32=_30.grid; var tr=_31.finder.getTr(_32[0],null,"highlight"); _30.remainText=false; if(tr.length){ var _33=parseInt(tr.attr("datagrid-row-index")); if(_31.multiple){ if(tr.hasClass("datagrid-row-selected")){ _32.datagrid("unselectRow",_33); }else{ _32.datagrid("selectRow",_33); } }else{ _32.datagrid("selectRow",_33); } } var vv=[]; $.map(_32.datagrid("getSelections"),function(row){ vv.push(row[_31.idField]); }); $(_2f).combogrid("setValues",vv); if(!_31.multiple){ $(_2f).combogrid("hidePanel"); } }; $.fn.combogrid=function(_34,_35){ if(typeof _34=="string"){ var _36=$.fn.combogrid.methods[_34]; if(_36){ return _36(this,_35); }else{ return this.combo(_34,_35); } } _34=_34||{}; return this.each(function(){ var _37=$.data(this,"combogrid"); if(_37){ $.extend(_37.options,_34); }else{ _37=$.data(this,"combogrid",{options:$.extend({},$.fn.combogrid.defaults,$.fn.combogrid.parseOptions(this),_34)}); } _1(this); }); }; $.fn.combogrid.methods={options:function(jq){ var _38=jq.combo("options"); return $.extend($.data(jq[0],"combogrid").options,{width:_38.width,height:_38.height,originalValue:_38.originalValue,disabled:_38.disabled,readonly:_38.readonly}); },grid:function(jq){ return $.data(jq[0],"combogrid").grid; },setValues:function(jq,_39){ return jq.each(function(){ _1c(this,_39); }); },setValue:function(jq,_3a){ return jq.each(function(){ _1c(this,[_3a]); }); },clear:function(jq){ return jq.each(function(){ $(this).combogrid("grid").datagrid("clearSelections"); $(this).combo("clear"); }); },reset:function(jq){ return jq.each(function(){ var _3b=$(this).combogrid("options"); if(_3b.multiple){ $(this).combogrid("setValues",_3b.originalValue); }else{ $(this).combogrid("setValue",_3b.originalValue); } }); }}; $.fn.combogrid.parseOptions=function(_3c){ var t=$(_3c); return $.extend({},$.fn.combo.parseOptions(_3c),$.fn.datagrid.parseOptions(_3c),$.parser.parseOptions(_3c,["idField","textField","mode"])); }; $.fn.combogrid.defaults=$.extend({},$.fn.combo.defaults,$.fn.datagrid.defaults,{loadMsg:null,idField:null,textField:null,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){ _2e(this); },query:function(q,e){ _28(this,q); }},filter:function(q,row){ var _3d=$(this).combogrid("options"); return row[_3d.textField].toLowerCase().indexOf(q.toLowerCase())==0; }}); })(jQuery);