347 lines
8.3 KiB
JavaScript
347 lines
8.3 KiB
JavaScript
/**
|
|
* jQuery EasyUI 1.5.1
|
|
*
|
|
* Copyright (c) 2009-2016 www.jeasyui.com. All rights reserved.
|
|
*
|
|
* Licensed under the commercial license: http://www.jeasyui.com/license_commercial.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=$("<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");
|
|
_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);
|
|
|