Toolbox/static/jeasyui/plugins/jquery.combogrid.js

354 lines
8.5 KiB
JavaScript
Executable File

/**
* EasyUI for jQuery 1.9.14
*
* Copyright (c) 2009-2021 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{
if($.easyui.indexOfArray(_37,_2d.idField,v)==-1){
_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);