/** * EasyUI for jQuery 1.5.3 * * Copyright (c) 2009-2017 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(){ _20(this,$(this).combogrid("getValues"),true); 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=$("
").appendTo(_a); _3.grid=_5; } _5.datagrid($.extend({},_4,{border:false,singleSelect:(!_4.multiple),onLoadSuccess:_b,onClickRow:_c,onSelect:_d("onSelect"),onUnselect:_d("onUnselect"),onSelectAll:_d("onSelectAll"),onUnselectAll:_d("onUnselectAll")})); function _e(dg){ return $(dg).closest(".combo-panel").panel("options").comboTarget||_2; }; function _b(_f){ var _10=_e(this); var _11=$(_10).data("combogrid"); var _12=_11.options; var _13=$(_10).combo("getValues"); _20(_10,_13,_11.remainText); _12.onLoadSuccess.call(this,_f); }; function _c(_14,row){ var _15=_e(this); var _16=$(_15).data("combogrid"); var _17=_16.options; _16.remainText=false; _18.call(this); if(!_17.multiple){ $(_15).combo("hidePanel"); } _17.onClickRow.call(this,_14,row); }; function _d(_19){ return function(_1a,row){ var _1b=_e(this); var _1c=$(_1b).combogrid("options"); if(_19=="onUnselectAll"){ if(_1c.multiple){ _18.call(this); } }else{ _18.call(this); } _1c[_19].call(this,_1a,row); }; }; function _18(){ var dg=$(this); var _1d=_e(dg); var _1e=$(_1d).data("combogrid"); var _1f=_1e.options; var vv=$.map(dg.datagrid("getSelections"),function(row){ return row[_1f.idField]; }); vv=vv.concat(_1f.unselectedValues); _20(_1d,vv,_1e.remainText); }; }; function nav(_21,dir){ var _22=$.data(_21,"combogrid"); var _23=_22.options; var _24=_22.grid; var _25=_24.datagrid("getRows").length; if(!_25){ return; } var tr=_23.finder.getTr(_24[0],null,"highlight"); if(!tr.length){ tr=_23.finder.getTr(_24[0],null,"selected"); } var _26; if(!tr.length){ _26=(dir=="next"?0:_25-1); }else{ var _26=parseInt(tr.attr("datagrid-row-index")); _26+=(dir=="next"?1:-1); if(_26<0){ _26=_25-1; } if(_26>=_25){ _26=0; } } _24.datagrid("highlightRow",_26); if(_23.selectOnNavigation){ _22.remainText=false; _24.datagrid("selectRow",_26); } }; function _20(_27,_28,_29){ var _2a=$.data(_27,"combogrid"); var _2b=_2a.options; var _2c=_2a.grid; var _2d=$(_27).combo("getValues"); var _2e=$(_27).combo("options"); var _2f=_2e.onChange; _2e.onChange=function(){ }; var _30=_2c.datagrid("options"); var _31=_30.onSelect; var _32=_30.onUnselectAll; _30.onSelect=_30.onUnselectAll=function(){ }; if(!$.isArray(_28)){ _28=_28.split(_2b.separator); } if(!_2b.multiple){ _28=_28.length?[_28[0]]:[""]; } var vv=$.map(_28,function(_33){ return String(_33); }); vv=$.grep(vv,function(v,_34){ return _34===$.inArray(v,vv); }); var _35=$.grep(_2c.datagrid("getSelections"),function(row,_36){ return $.inArray(String(row[_2b.idField]),vv)>=0; }); _2c.datagrid("clearSelections"); _2c.data("datagrid").selectedRows=_35; var ss=[]; _2b.unselectedValues=[]; $.map(vv,function(v){ var _37=_2c.datagrid("getRowIndex",v); if(_37>=0){ _2c.datagrid("selectRow",_37); }else{ _2b.unselectedValues.push(v); } ss.push(_38(v,_2c.datagrid("getRows"))||_38(v,_35)||_38(v,_2b.mappingRows)||v); }); $(_27).combo("setValues",_2d); _2e.onChange=_2f; _30.onSelect=_31; _30.onUnselectAll=_32; if(!_29){ var s=ss.join(_2b.separator); if($(_27).combo("getText")!=s){ $(_27).combo("setText",s); } } $(_27).combo("setValues",_28); function _38(_39,a){ var _3a=$.easyui.getArrayItem(a,_2b.idField,_39); return _3a?_3a[_2b.textField]:undefined; }; }; function _3b(_3c,q){ var _3d=$.data(_3c,"combogrid"); var _3e=_3d.options; var _3f=_3d.grid; _3d.remainText=true; var qq=_3e.multiple?q.split(_3e.separator):[q]; qq=$.grep(qq,function(q){ return $.trim(q)!=""; }); if(_3e.mode=="remote"){ _40(qq); _3f.datagrid("load",$.extend({},_3e.queryParams,{q:q})); }else{ _3f.datagrid("highlightRow",-1); var _41=_3f.datagrid("getRows"); var vv=[]; $.map(qq,function(q){ q=$.trim(q); var _42=q; _43(_3e.mappingRows,q); _43(_3f.datagrid("getSelections"),q); var _44=_43(_41,q); if(_44>=0){ if(_3e.reversed){ _3f.datagrid("highlightRow",_44); } }else{ $.map(_41,function(row,i){ if(_3e.filter.call(_3c,q,row)){ _3f.datagrid("highlightRow",i); } }); } }); _40(vv); } function _43(_45,q){ for(var i=0;i<_45.length;i++){ var row=_45[i]; if((row[_3e.textField]||"").toLowerCase()==q.toLowerCase()){ vv.push(row[_3e.idField]); return i; } } return -1; }; function _40(vv){ if(!_3e.reversed){ _20(_3c,vv,true); } }; }; function _46(_47){ var _48=$.data(_47,"combogrid"); var _49=_48.options; var _4a=_48.grid; var tr=_49.finder.getTr(_4a[0],null,"highlight"); _48.remainText=false; if(tr.length){ var _4b=parseInt(tr.attr("datagrid-row-index")); if(_49.multiple){ if(tr.hasClass("datagrid-row-selected")){ _4a.datagrid("unselectRow",_4b); }else{ _4a.datagrid("selectRow",_4b); } }else{ _4a.datagrid("selectRow",_4b); } } var vv=[]; $.map(_4a.datagrid("getSelections"),function(row){ vv.push(row[_49.idField]); }); $.map(_49.unselectedValues,function(v){ if($.easyui.indexOfArray(_49.mappingRows,_49.idField,v)>=0){ $.easyui.addArrayItem(vv,v); } }); $(_47).combogrid("setValues",vv); if(!_49.multiple){ $(_47).combogrid("hidePanel"); } }; $.fn.combogrid=function(_4c,_4d){ if(typeof _4c=="string"){ var _4e=$.fn.combogrid.methods[_4c]; if(_4e){ return _4e(this,_4d); }else{ return this.combo(_4c,_4d); } } _4c=_4c||{}; return this.each(function(){ var _4f=$.data(this,"combogrid"); if(_4f){ $.extend(_4f.options,_4c); }else{ _4f=$.data(this,"combogrid",{options:$.extend({},$.fn.combogrid.defaults,$.fn.combogrid.parseOptions(this),_4c)}); } _1(this); }); }; $.fn.combogrid.methods={options:function(jq){ var _50=jq.combo("options"); return $.extend($.data(jq[0],"combogrid").options,{width:_50.width,height:_50.height,originalValue:_50.originalValue,disabled:_50.disabled,readonly:_50.readonly}); },cloneFrom:function(jq,_51){ return jq.each(function(){ $(this).combo("cloneFrom",_51); $.data(this,"combogrid",{options:$.extend(true,{cloned:true},$(_51).combogrid("options")),combo:$(this).next(),panel:$(_51).combo("panel"),grid:$(_51).combogrid("grid")}); }); },grid:function(jq){ return $.data(jq[0],"combogrid").grid; },setValues:function(jq,_52){ return jq.each(function(){ var _53=$(this).combogrid("options"); if($.isArray(_52)){ _52=$.map(_52,function(_54){ if(_54&&typeof _54=="object"){ $.easyui.addArrayItem(_53.mappingRows,_53.idField,_54); return _54[_53.idField]; }else{ return _54; } }); } _20(this,_52); }); },setValue:function(jq,_55){ return jq.each(function(){ $(this).combogrid("setValues",$.isArray(_55)?_55:[_55]); }); },clear:function(jq){ return jq.each(function(){ $(this).combogrid("setValues",[]); }); },reset:function(jq){ return jq.each(function(){ var _56=$(this).combogrid("options"); if(_56.multiple){ $(this).combogrid("setValues",_56.originalValue); }else{ $(this).combogrid("setValue",_56.originalValue); } }); }}; $.fn.combogrid.parseOptions=function(_57){ var t=$(_57); return $.extend({},$.fn.combo.parseOptions(_57),$.fn.datagrid.parseOptions(_57),$.parser.parseOptions(_57,["idField","textField","mode"])); }; $.fn.combogrid.defaults=$.extend({},$.fn.combo.defaults,$.fn.datagrid.defaults,{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){ _46(this); },query:function(q,e){ _3b(this,q); }},inputEvents:$.extend({},$.fn.combo.defaults.inputEvents,{blur:function(e){ var _58=e.data.target; var _59=$(_58).combogrid("options"); if(_59.reversed){ $(_58).combogrid("setValues",$(_58).combogrid("getValues")); } }}),filter:function(q,row){ var _5a=$(this).combogrid("options"); return (row[_5a.textField]||"").toLowerCase().indexOf(q.toLowerCase())>=0; }}); })(jQuery);