Toolbox/static/plugins/jquery.combogrid.js

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);