/**
|
* jQuery EasyUI 1.3.5
|
*
|
* Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved.
|
*
|
* Licensed under the GPL or commercial licenses
|
* To use it on other terms please contact us: info@jeasyui.com
|
* http://www.gnu.org/licenses/gpl.txt
|
* http://www.jeasyui.com/license_commercial.php
|
*
|
*/
|
(function($){
|
function _1(_2,_3,_4,_5){
|
var _6=$.data(_2,"combobox");
|
var _7=_6.options;
|
if(_5){
|
return _8(_6.groups,_4,_3);
|
}else{
|
return _8(_6.data,(_4?_4:_6.options.valueField),_3);
|
}
|
function _8(_9,_a,_b){
|
for(var i=0;i<_9.length;i++){
|
var _c=_9[i];
|
if(_c[_a]==_b){
|
return _c;
|
}
|
}
|
return null;
|
};
|
};
|
function _d(_e,_f){
|
var _10=$(_e).combo("panel");
|
var row=_1(_e,_f);
|
if(row){
|
var _11=$("#"+row.domId);
|
if(_11.position().top<=0){
|
var h=_10.scrollTop()+_11.position().top;
|
_10.scrollTop(h);
|
}else{
|
if(_11.position().top+_11.outerHeight()>_10.height()){
|
var h=_10.scrollTop()+_11.position().top+_11.outerHeight()-_10.height();
|
_10.scrollTop(h);
|
}
|
}
|
}
|
};
|
function nav(_12,dir){
|
var _13=$.data(_12,"combobox").options;
|
var _14=$(_12).combobox("panel");
|
var _15=_14.children("div.combobox-item-hover");
|
if(!_15.length){
|
_15=_14.children("div.combobox-item-selected");
|
}
|
_15.removeClass("combobox-item-hover");
|
var _16="div.combobox-item:visible:not(.combobox-item-disabled):first";
|
var _17="div.combobox-item:visible:not(.combobox-item-disabled):last";
|
if(!_15.length){
|
_15=_14.children(dir=="next"?_16:_17);
|
}else{
|
if(dir=="next"){
|
_15=_15.nextAll(_16);
|
if(!_15.length){
|
_15=_14.children(_16);
|
}
|
}else{
|
_15=_15.prevAll(_16);
|
if(!_15.length){
|
_15=_14.children(_17);
|
}
|
}
|
}
|
if(_15.length){
|
_15.addClass("combobox-item-hover");
|
var row=_1(_12,_15.attr("id"),"domId");
|
if(row){
|
_d(_12,row[_13.valueField]);
|
if(_13.selectOnNavigation){
|
_18(_12,row[_13.valueField]);
|
}
|
}
|
}
|
};
|
function _18(_19,_1a){
|
var _1b=$.data(_19,"combobox").options;
|
var _1c=$(_19).combo("getValues");
|
if($.inArray(_1a+"",_1c)==-1){
|
if(_1b.multiple){
|
_1c.push(_1a);
|
}else{
|
_1c=[_1a];
|
}
|
_1d(_19,_1c);
|
_1b.onSelect.call(_19,_1(_19,_1a));
|
}
|
};
|
function _1e(_1f,_20){
|
var _21=$.data(_1f,"combobox").options;
|
var _22=$(_1f).combo("getValues");
|
var _23=$.inArray(_20+"",_22);
|
if(_23>=0){
|
_22.splice(_23,1);
|
_1d(_1f,_22);
|
_21.onUnselect.call(_1f,_1(_1f,_20));
|
}
|
};
|
function _1d(_24,_25,_26){
|
var _27=$.data(_24,"combobox").options;
|
var _28=$(_24).combo("panel");
|
_28.find("div.combobox-item-selected").removeClass("combobox-item-selected");
|
var vv=[],ss=[];
|
for(var i=0;i<_25.length;i++){
|
var v=_25[i];
|
var s=v;
|
var row=_1(_24,v);
|
if(row){
|
s=row[_27.textField];
|
$("#"+row.domId).addClass("combobox-item-selected");
|
}
|
vv.push(v);
|
ss.push(s);
|
}
|
$(_24).combo("setValues",vv);
|
if(!_26){
|
$(_24).combo("setText",ss.join(_27.separator));
|
}
|
};
|
var _29=1;
|
function _2a(_2b,_2c,_2d){
|
var _2e=$.data(_2b,"combobox");
|
var _2f=_2e.options;
|
_2e.data=_2f.loadFilter.call(_2b,_2c);
|
_2e.groups=[];
|
_2c=_2e.data;
|
var _30=$(_2b).combobox("getValues");
|
var dd=[];
|
var _31=undefined;
|
for(var i=0;i<_2c.length;i++){
|
var row=_2c[i];
|
var v=row[_2f.valueField]+"";
|
var s=row[_2f.textField];
|
var g=row[_2f.groupField];
|
if(g){
|
if(_31!=g){
|
_31=g;
|
var _32={value:g,domId:("_easyui_combobox_"+_29++)};
|
_2e.groups.push(_32);
|
dd.push("<div id=\""+_32.domId+"\" class=\"combobox-group\">");
|
dd.push(_2f.groupFormatter?_2f.groupFormatter.call(_2b,g):g);
|
dd.push("</div>");
|
}
|
}else{
|
_31=undefined;
|
}
|
var cls="combobox-item"+(row.disabled?" combobox-item-disabled":"")+(g?" combobox-gitem":"");
|
row.domId="_easyui_combobox_"+_29++;
|
dd.push("<div id=\""+row.domId+"\" class=\""+cls+"\">");
|
dd.push(_2f.formatter?_2f.formatter.call(_2b,row):s);
|
dd.push("</div>");
|
if(row["selected"]&&$.inArray(v,_30)==-1){
|
_30.push(v);
|
}
|
}
|
$(_2b).combo("panel").html(dd.join(""));
|
if(_2f.multiple){
|
_1d(_2b,_30,_2d);
|
}else{
|
_1d(_2b,_30.length?[_30[_30.length-1]]:[],_2d);
|
}
|
_2f.onLoadSuccess.call(_2b,_2c);
|
};
|
function _33(_34,url,_35,_36){
|
var _37=$.data(_34,"combobox").options;
|
if(url){
|
_37.url=url;
|
}
|
_35=_35||{};
|
if(_37.onBeforeLoad.call(_34,_35)==false){
|
return;
|
}
|
_37.loader.call(_34,_35,function(_38){
|
_2a(_34,_38,_36);
|
},function(){
|
_37.onLoadError.apply(this,arguments);
|
});
|
};
|
function _39(_3a,q){
|
var _3b=$.data(_3a,"combobox");
|
var _3c=_3b.options;
|
if(_3c.multiple&&!q){
|
_1d(_3a,[],true);
|
}else{
|
_1d(_3a,[q],true);
|
}
|
if(_3c.mode=="remote"){
|
_33(_3a,null,{q:q},true);
|
}else{
|
var _3d=$(_3a).combo("panel");
|
_3d.find("div.combobox-item,div.combobox-group").hide();
|
var _3e=_3b.data;
|
var _3f=undefined;
|
for(var i=0;i<_3e.length;i++){
|
var row=_3e[i];
|
if(_3c.filter.call(_3a,q,row)){
|
var v=row[_3c.valueField];
|
var s=row[_3c.textField];
|
var g=row[_3c.groupField];
|
var _40=$("#"+row.domId).show();
|
if(s.toLowerCase()==q.toLowerCase()){
|
_1d(_3a,[v]);
|
_40.addClass("combobox-item-selected");
|
}
|
if(_3c.groupField&&_3f!=g){
|
var _41=_1(_3a,g,"value",true);
|
if(_41){
|
$("#"+_41.domId).show();
|
}
|
_3f=g;
|
}
|
}
|
}
|
}
|
};
|
function _42(_43){
|
var t=$(_43);
|
var _44=t.combobox("options");
|
var _45=t.combobox("panel");
|
var _46=_45.children("div.combobox-item-hover");
|
if(!_46.length){
|
_46=_45.children("div.combobox-item-selected");
|
}
|
if(!_46.length){
|
return;
|
}
|
var row=_1(_43,_46.attr("id"),"domId");
|
if(!row){
|
return;
|
}
|
var _47=row[_44.valueField];
|
if(_44.multiple){
|
if(_46.hasClass("combobox-item-selected")){
|
t.combobox("unselect",_47);
|
}else{
|
t.combobox("select",_47);
|
}
|
}else{
|
t.combobox("select",_47);
|
t.combobox("hidePanel");
|
}
|
var vv=[];
|
var _48=t.combobox("getValues");
|
for(var i=0;i<_48.length;i++){
|
if(_1(_43,_48[i])){
|
vv.push(_48[i]);
|
}
|
}
|
t.combobox("setValues",vv);
|
};
|
function _49(_4a){
|
var _4b=$.data(_4a,"combobox").options;
|
$(_4a).addClass("combobox-f");
|
$(_4a).combo($.extend({},_4b,{onShowPanel:function(){
|
$(_4a).combo("panel").find("div.combobox-item,div.combobox-group").show();
|
_d(_4a,$(_4a).combobox("getValue"));
|
_4b.onShowPanel.call(_4a);
|
}}));
|
$(_4a).combo("panel").unbind().bind("mouseover",function(e){
|
$(this).children("div.combobox-item-hover").removeClass("combobox-item-hover");
|
var _4c=$(e.target).closest("div.combobox-item");
|
if(!_4c.hasClass("combobox-item-disabled")){
|
_4c.addClass("combobox-item-hover");
|
}
|
e.stopPropagation();
|
}).bind("mouseout",function(e){
|
$(e.target).closest("div.combobox-item").removeClass("combobox-item-hover");
|
e.stopPropagation();
|
}).bind("click",function(e){
|
var _4d=$(e.target).closest("div.combobox-item");
|
if(!_4d.length||_4d.hasClass("combobox-item-disabled")){
|
return;
|
}
|
var row=_1(_4a,_4d.attr("id"),"domId");
|
if(!row){
|
return;
|
}
|
var _4e=row[_4b.valueField];
|
if(_4b.multiple){
|
if(_4d.hasClass("combobox-item-selected")){
|
_1e(_4a,_4e);
|
}else{
|
_18(_4a,_4e);
|
}
|
}else{
|
_18(_4a,_4e);
|
$(_4a).combo("hidePanel");
|
}
|
e.stopPropagation();
|
});
|
};
|
$.fn.combobox=function(_4f,_50){
|
if(typeof _4f=="string"){
|
var _51=$.fn.combobox.methods[_4f];
|
if(_51){
|
return _51(this,_50);
|
}else{
|
return this.combo(_4f,_50);
|
}
|
}
|
_4f=_4f||{};
|
return this.each(function(){
|
var _52=$.data(this,"combobox");
|
if(_52){
|
$.extend(_52.options,_4f);
|
_49(this);
|
}else{
|
_52=$.data(this,"combobox",{options:$.extend({},$.fn.combobox.defaults,$.fn.combobox.parseOptions(this),_4f),data:[]});
|
_49(this);
|
var _53=$.fn.combobox.parseData(this);
|
if(_53.length){
|
_2a(this,_53);
|
}
|
}
|
if(_52.options.data){
|
_2a(this,_52.options.data);
|
}
|
_33(this);
|
});
|
};
|
$.fn.combobox.methods={options:function(jq){
|
var _54=jq.combo("options");
|
return $.extend($.data(jq[0],"combobox").options,{originalValue:_54.originalValue,disabled:_54.disabled,readonly:_54.readonly});
|
},getData:function(jq){
|
return $.data(jq[0],"combobox").data;
|
},setValues:function(jq,_55){
|
return jq.each(function(){
|
_1d(this,_55);
|
});
|
},setValue:function(jq,_56){
|
return jq.each(function(){
|
_1d(this,[_56]);
|
});
|
},clear:function(jq){
|
return jq.each(function(){
|
$(this).combo("clear");
|
var _57=$(this).combo("panel");
|
_57.find("div.combobox-item-selected").removeClass("combobox-item-selected");
|
});
|
},reset:function(jq){
|
return jq.each(function(){
|
var _58=$(this).combobox("options");
|
if(_58.multiple){
|
$(this).combobox("setValues",_58.originalValue);
|
}else{
|
$(this).combobox("setValue",_58.originalValue);
|
}
|
});
|
},loadData:function(jq,_59){
|
return jq.each(function(){
|
_2a(this,_59);
|
});
|
},reload:function(jq,url){
|
return jq.each(function(){
|
_33(this,url);
|
});
|
},select:function(jq,_5a){
|
return jq.each(function(){
|
_18(this,_5a);
|
});
|
},unselect:function(jq,_5b){
|
return jq.each(function(){
|
_1e(this,_5b);
|
});
|
}};
|
$.fn.combobox.parseOptions=function(_5c){
|
var t=$(_5c);
|
return $.extend({},$.fn.combo.parseOptions(_5c),$.parser.parseOptions(_5c,["valueField","textField","groupField","mode","method","url"]));
|
};
|
$.fn.combobox.parseData=function(_5d){
|
var _5e=[];
|
var _5f=$(_5d).combobox("options");
|
$(_5d).children().each(function(){
|
if(this.tagName.toLowerCase()=="optgroup"){
|
var _60=$(this).attr("label");
|
$(this).children().each(function(){
|
_61(this,_60);
|
});
|
}else{
|
_61(this);
|
}
|
});
|
return _5e;
|
function _61(el,_62){
|
var t=$(el);
|
var row={};
|
row[_5f.valueField]=t.attr("value")!=undefined?t.attr("value"):t.html();
|
row[_5f.textField]=t.html();
|
row["selected"]=t.is(":selected");
|
row["disabled"]=t.is(":disabled");
|
if(_62){
|
_5f.groupField=_5f.groupField||"group";
|
row[_5f.groupField]=_62;
|
}
|
_5e.push(row);
|
};
|
};
|
$.fn.combobox.defaults=$.extend({},$.fn.combo.defaults,{valueField:"value",textField:"text",groupField:null,groupFormatter:function(_63){
|
return _63;
|
},mode:"local",method:"post",url:null,data:null,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){
|
_42(this);
|
},query:function(q,e){
|
_39(this,q);
|
}},filter:function(q,row){
|
var _64=$(this).combobox("options");
|
return row[_64.textField].toLowerCase().indexOf(q.toLowerCase())==0;
|
},formatter:function(row){
|
var _65=$(this).combobox("options");
|
return row[_65.textField];
|
},loader:function(_66,_67,_68){
|
var _69=$(this).combobox("options");
|
if(!_69.url){
|
return false;
|
}
|
$.ajax({type:_69.method,url:_69.url,data:_66,dataType:"json",success:function(_6a){
|
_67(_6a);
|
},error:function(){
|
_68.apply(this,arguments);
|
}});
|
},loadFilter:function(_6b){
|
return _6b;
|
},onBeforeLoad:function(_6c){
|
},onLoadSuccess:function(){
|
},onLoadError:function(){
|
},onSelect:function(_6d){
|
},onUnselect:function(_6e){
|
}});
|
})(jQuery);
|