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