Version zu Ende April 2023
This commit is contained in:
346
static/plugins/jquery.combogrid.js
Normal file
346
static/plugins/jquery.combogrid.js
Normal file
@@ -0,0 +1,346 @@
|
||||
/**
|
||||
* 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);
|
||||
|
||||
Reference in New Issue
Block a user