/**
* jQuery EasyUI 1.3.6
* Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.
*
* Licensed under the GPL or commercial licenses
* To use it on other terms please contact author: info@jeasyui.com
* http://www.gnu.org/licenses/gpl.txt
* http://www.jeasyui.com/license_commercial.php
*
* jQuery EasyUI toolbar Plugin Extensions 1.0 beta
* jQuery EasyUI toolbar 插件扩展
* jquery.toolbar.js
* 二次开发 流云
* 最近更新:2014-05-07
*
* 依赖项:
* 1、jquery.jdirk.js
* 2、jeasyui.extensions.js
* 3、jeasyui.extensions.linkbutton
* 4、jeasyui.extensions.validatebox
* 5、combo
* 5、numberbox
* 6、numberspinner
* 6、timespinner
* 7、datebox
* 7、datetimebox
* 7、combobox
* 7、combotree
* 7、combogrid
* 8、jeasyui.extensions.combo
* 9、jeasyui.extensions.combobox
* 10、jeasyui.extensions.menu
* 11、jeasyui.extensions.panel
* 12、jeasyui.extensions.window
* 13、jeasyui.extensions.dialog
* 14、jeasyui.extensions.tree
* 15、jeasyui.extensions.combotree
* 16、jeasyui.extensions.datagrid
* 17、jeasyui.extensions.combogrid
* 18、jeasyui.extensions.searchbox
* 19、jeasyui.extensions.comboicons
* 20、jeasyui.extensions.comboselector
* 21、jeasyui.extensions.my97
*
* Copyright (c) 2013-2014 ChenJianwei personal All rights reserved.
* http://www.chenjianwei.org
*/
(function ($, undefined) {
function initialize(target) {
var t = $(target), isDiv = /^(?:div)$/i.test(target.nodeName), cc = t.children(),
toolbar = isDiv ? t : $("
").insertAfter(t).append(t);
if (!isDiv) {
toolbar.attr({ "class": t.attr("class"), "style": t.attr("style") }).removeClass("easyui-toolbar");
t.children().each(function () { toolbar.append(this); });
t.hide();
}
var state = $.data(target, "toolbar"), opts = state.options;
state.toolbar = toolbar.addClass("dialog-toolbar toolbar");
t.addClass("toolbar-f");
state.wrapper = $("").appendTo(toolbar);
appendItem(target, cc);
setSize(target, { width: opts.width, height: opts.height });
toolbar.bind("_resize", function () {
setSize(target);
});
};
function setSize(target, size) {
var t = $(target), state = $.data(target, "toolbar"),
toolbar = state.toolbar, opts = state.options;
size = $.extend({ width: opts.width, height: opts.height }, size || {});
toolbar.css({
width: size.width, height: size.height
});
$.extend(opts, size);
$.util.exec(function () {
setAlign(target, opts.align);
setValign(target, opts.valign);
});
opts.onResize.call(target, $.isNumeric(size.width) ? size.width : toolbar.width(), $.isNumeric(size.height) ? size.height : toolbar.height());
};
function setAlign(target, align) {
align = String(align);
if (!$.array.contains(["left", "center", "right"], align.toLowerCase())) { return; }
var t = $(target), state = $.data(target, "toolbar"),
wrapper = state.wrapper, opts = state.options, left = 0;
opts.align = align;
wrapper.removeClass("toolbar-align-left toolbar-align-center toolbar-align-right").addClass("toolbar-align-" + align);
};
function setValign(target, valign) {
valign = String(valign);
if (!$.array.contains(["top", "middle", "bottom"], valign.toLowerCase())) { return; }
var t = $(target), state = $.data(target, "toolbar"),
toolbar = state.toolbar, wrapper = state.wrapper, opts = state.options,
outerHeight = toolbar.height(), height = wrapper.height(), top;
opts.valign = valign;
wrapper.removeClass("toolbar-valign-top toolbar-valign-middle toolbar-valign-bottom").addClass("toolbar-valign-" + valign);
switch (valign) {
case "top": top = 0; break;
case "middle": top = (outerHeight - height) / 2; break;
case "bottom": top = (outerHeight - height); break;
}
wrapper.css("top", Math.max(top, 0));
};
function appendItemToContainer(target, container, item) {
var state = $.data(target, "toolbar"), opts = state.options;
if ($.util.isDOM(item)) {
var cell = $(item).addClass("toolbar-item").appendTo(container), text = cell.text();
if (/^(?:div|span)$/i.test(cell[0].nodeName) && $.array.contains(["-", "—", "|"], text)) {
cell.addClass("dialog-tool-separator").empty();
$.data(cell[0], "toolbar-item-data", {
actions: opts.itemOptions.separator, target: cell, options: {}, type: "separator", container: container
});
} else {
$.data(cell[0], "toolbar-item-data", {
actions: null, target: cell, options: null, type: "custom", container: container
});
}
} else if ($.array.contains(["string", "number", "date"], $.type(item))) {
item = $.string.trim(item);
if ($.array.contains(["-", "—", "|"], item)) {
appendItemToContainer(target, container, { type: "separator" });
} else if ($.string.isHtmlText(item)) {
$(item).each(function () { appendItemToContainer(target, container, this); });
} else {
appendItemToContainer(target, container, { type: "label", options: { text: item } });
}
} else {
var itemOpts = $.extend({}, opts.itemOptions, item || {}),
actions = opts.itemTypes[itemOpts.type];
if (!actions || !actions.init) { return; }
var tItem = actions.init(container[0], itemOpts.options || itemOpts).addClass("toolbar-item");
if (itemOpts.id) { tItem.attr("id", itemOpts.id); }
if (itemOpts.name) { tItem.attr("name", itemOpts.name); }
if (itemOpts.cls) { container.addClass(itemOpts.cls); }
if (itemOpts.itemCls) { tItem.addClass(itemOpts.itemCls); }
if (itemOpts.style) { container.css(itemOpts.style); }
if (itemOpts.itemStyle) { tItem.css(itemOpts.itemStyle); }
if (itemOpts.width) { container.css("width", itemOpts.width); }
if (itemOpts.align) { container.css("text-align", itemOpts.align); }
if (itemOpts.htmlAttr) { tItem.attr(itemOpts.htmlAttr); }
$.data(tItem[0], "toolbar-item-data", {
actions: actions, target: tItem, options: itemOptions.options, type: itemOpts.type, container: container
});
}
};
function appendItemOption(target, item) {
if (!item) { return; }
var state = $.data(target, "toolbar"),
tr = state.wrapper.find("tr:last");
if (!tr.length) { tr = $("
").appendTo(state.wrapper); }
var container = $(" | ").appendTo(tr);
appendItemToContainer(target, container, item);
};
function appendItem(target, item) {
if (!item) { return; }
if ($.array.likeArrayNotString(item)) {
if (item.length) {
$.each(item, function (i, n) { appendItem(target, n); });
}
} else if ($.isFunction(item)) {
appendItem(target, item.call(target), false);
} else {
appendItemOption(target, item);
}
}
function getItemIndex(target, item) {
var ret = -1;
if (!item) { return ret; }
item = $(item);
var t = $(target), wrapper = t.toolbar("wrapper"), tr = wrapper.find("tr:last");
if (!tr.length || $.contains(tr[0], item[0])) { return ret; }
ret = item.closest("toolbar-item-container").index();
return ret;
}
function getItem(target, index) {
if (index == null || index == undefined) { return null; }
var item = null, itemEle, t = $(target), wrapper = t.toolbar("wrapper"), tr = wrapper.find("tr:last");
if (!tr.length) { return item; }
var tds = tr.find(">td.toolbar-item-container"), td = null;
if ($.isNumeric(index)) {
if (tds.length >= index && index >= 0) { itemEle = tds.eq(index).find(".toolbar-item"); }
}
if (itemEle && itemEle.length) {
item = $.data(itemEle[0], "toolbar-item-data");
}
return item;
};
function getItems(target) {
var ret = [], t = $(target), wrapper = t.toolbar("wrapper");
wrapper.find("tr:last>td.toolbar-item-container .toolbar-item").each(function () {
var item = $.data(this, "toolbar-item-data");
if (item) { ret.push(item); }
});
return ret;
};
function removeItem(target, index) {
var item = getItem(target, index);
if (item) {
if (item.actions && $.isFunction(item.actions.destroy)) { actions.destroy(item.target[0]); }
item.container.remove();
}
};
function updateItem(target, param) {
if (!param || !$.isNumeric(param.index) || !param.item) { return; }
var item = getItem(target, param.index), container = item.container.empty();
appendItemToContainer(target, container, param.item)
};
function clear(target) {
var state = $.data(target, "toolbar");
state.wrapper.empty();
state.data = null;
};
function loadData(target, data) {
var state = $.data(target, "toolbar"), opts = state.options;
state.data = opts.loadFilter.call(target, data);
state.wrapper.empty();
appendItem(target, state.data);
opts.onLoadSuccess.call(target, data);
};
function request(target, queryParams) {
var state = $.data(target, "toolbar"), opts = state.options;
opts.queryParams = queryParams || {};
if (opts.onBeforeLoad.call(target, opts.queryParams) == false) return;
opts.loader.call(target, opts.queryParams, function (data) {
loadData(target, data);
}, function () {
opts.onLoadError.apply(this, arguments);
});
};
function getData(target) {
return $.data(target, "toolbar").data;
};
function getValues(target) {
return $(target).serializeObject();
};
function setItemFocus(target, index) {
var item = getItem(target, index);
if (item) {
if (item.actions && $.isFunction(item.actions.setFocus)) {
item.actions.setFocus(item.target[0]);
} else {
item.target.focus();
}
}
};
function setItemValue(target, param) {
if (!param || !$.isNumeric(param.index)) { return; }
var item = getItem(target, param.index);
if (item && item.actions && $.isFunction(item.actions.setValue)) {
item.actions.setValue(item.target[0], param.value);
}
};
function getItemValue(target, index) {
var item = getItem(target, index), ret = null;
if (item) {
ret = item.actions && $.isFunction(item.actions.getValue) ? item.actions.getValue(item.target[0]) : item.target[0].value;
}
return ret;
};
function resizeItem(target, param) {
if (!param || !$.isNumeric(param.index) || !param.width) { return; }
var item = getItem(target, index);
if (item) {
if (item.actions && $.isFunction(item.actions.resize)) {
item.actions.resize(item.target[0], param.width);
} else {
item.target.width(param.width);
}
}
};
function enableItem(target, index) {
var item = getItem(target, index);
if (item && item.actions && $.isFunction(item.actions.enable)) {
item.actions.enable(item.target[0]);
}
};
function disableItem(target, index) {
var item = getItem(target, index);
if (item && item.actions && $.isFunction(item.actions.disable)) {
item.actions.disable(item.target[0]);
}
};
function enable(target) {
var items = getItems(target);
$.each(items, function (i, item) {
if (item.actions && $.isFunction(item.actions.enable)) {
item.actions.enable(item.target[0]);
}
});
};
function disable(target) {
var items = getItems(target);
$.each(items, function (i, item) {
if (item.actions && $.isFunction(item.actions.disable)) {
item.actions.disable(item.target[0]);
}
});
};
function destroy(target) {
var t = $(target), state = $.data(target, "toolbar");
if (state.toolbar) {
state.toolbar.each(function () { destroyContent(this); }).remove();
}
t.remove();
};
function destroyContent(target) {
var t = $(target);
t.find(".combo-f").each(function () { $(this).combo("destroy"); });
t.find(".m-btn").each(function () { $(this).menubutton("destroy"); });
t.find(".s-btn").each(function () { $(this).splitbutton("destroy"); });
t.find(".tooltip-f").each(function () { $(this).tooltip("destroy"); });
t.children("div").each(function () { $(this)._fit(false); });
};
var itemTypes = {
separator: {
init: function (container) {
return $("").appendTo(container);
}
},
label: {
defaults: { text: " " },
init: function (container, options) {
var opts = $.extend({}, this.defaults, options || {});
return $("").text(opts.text).appendTo(container);
},
enable: function (target) {
$(target).removeClass("toolbar-item-label-disabled");
},
disable: function (target) {
$(target).addClass("toolbar-item-label-disabled");
}
},
button: {
defaults: { plain: true, iconCls: "icon-ok" },
init: function (container, options) {
var opts = $.extend({}, this.defaults, options || {}),
handler = opts.onclick || opts.handler,
btn = $("").appendTo(container);
if (handler) {
handler = $.string.toFunction(handler);
}
return btn.linkbutton($.extend(opts, {
onClick: function () {
if ($.isFunction(handler)) {
handler.call(this, $(container).closest("table.toolbar-wrapper")[0]);
}
}
}));
},
enable: function (target) {
$(target).linkbutton("enable");
},
disable: function (target) {
$(target).linkbutton("disable");
}
},
textbox: {
defaults: { value: null, disabled: false, width: null },
init: function (container, options) {
var opts = $.extend({}, this.defaults, options || {}),
box = $("").appendTo(container);
if (opts.value) { this.setValue(box[0], opts.value); }
if (opts.disabled) { this.disable(box[0]); }
if (opts.width) { this.resize(box[0], opts.width); }
return box;
},
setValue: function (target, value) {
$(target).val(value);
},
getValue: function (target) {
return $(target).val();
},
resize: function (target, width) {
$(target)._outerWidth(width);
},
enable: function (target) {
$(target).removeAttr("disabled", true);
},
disable: function (target) {
$(target).attr("disabled", true);
}
},
checkbox: {
defaults: { checked: false, disabled: false, text: " " },
init: function (container, options) {
options = options || {};
var opts = $.extend({}, this.defaults, $.util.isString(options) ? { text: options } : options),
label = $("").appendTo(container),
box = $("").appendTo(label),
span = $("").text(opts.text).appendTo(label);
if (opts.checked) { this.setValue(box[0], opts.checked); }
if (opts.disabled) { this.disable(box[0]); }
return box;
},
setValue: function (target, value) {
$(target).attr("checked", value ? true : false);
},
getValue: function (target) {
return $(target)[0].checked;
},
enable: function (target) {
$(target).removeAttr("disabled").parent().find(">span.toolbar-item-checkbox-text").removeClass("toolbar-item-checkbox-disabled");
},
disable: function (target) {
$(target).attr("disabled", true).parent().find(">span.toolbar-item-checkbox-text").addClass("toolbar-item-checkbox-disabled");
}
},
validatebox: {
defaults: { value: null, disabled: false, width: null },
init: function (container, options) {
var opts = $.extend({}, this.defaults, options || {}),
box = $("").appendTo(container).validatebox(opts);
if (opts.value) { this.setValue(box[0], opts.value); }
if (opts.disabled) { this.disable(box[0]); }
if (opts.width) { this.resize(box[0], opts.width); }
return box;
},
setValue: function (target, value) {
$(target).val(value);
},
getValue: function (target) {
return $(target).val();
},
resize: function (target, width) {
$(target)._outerWidth(width);
},
enable: function (target) {
$(target).removeAttr("disabled");
},
disable: function (target) {
$(target).attr("disabled", true);
}
},
numberbox: {
defaults: { width: null },
init: function (container, options) {
var opts = $.extend({}, this.defaults, options || {}),
box = $("").appendTo(container).numberbox(opts);
if (opts.width) { this.resize(box[0], opts.width); }
return box;
},
destroy: function (target) {
$(target).numberbox("destroy");
},
setValue: function (target, value) {
$(target).numberbox("setValue", value);
},
getValue: function (target) {
return $(target).numberbox("getValue");
},
resize: function (target, width) {
$(target)._outerWidth(width);
},
enable: function (target) {
$(target).numberbox("enable");
},
disable: function (target) {
$(target).numberbox("disable");
}
},
numberspinner: {
defaults: {},
init: function (container, options) {
var opts = $.extend({}, this.defaults, options || {}),
box = $("").appendTo(container).numberspinner(opts);
return box;
},
destroy: function (target) {
$(target).numberspinner("destroy");
},
setValue: function (target, value) {
$(target).numberspinner("setValue", value);
},
getValue: function (target) {
return $(target).numberspinner("getValue");
},
resize: function (target, width) {
$(target).numberspinner("resize", width);
},
enable: function (target) {
$(target).numberspinner("enable");
},
disable: function (target) {
$(target).numberspinner("disable");
}
},
timespinner: {
defaults: {},
init: function (container, options) {
var opts = $.extend({}, this.defaults, options || {}),
box = $("").appendTo(container).timespinner(opts);
return box;
},
destroy: function (target) {
$(target).timespinner("destroy");
},
setValue: function (target, value) {
$(target).timespinner("setValue", value);
},
getValue: function (target) {
return $(target).timespinner("getValue");
},
resize: function (target, width) {
$(target).timespinner("resize", width);
},
enable: function (target) {
$(target).timespinner("enable");
},
disable: function (target) {
$(target).timespinner("disable");
}
},
datebox: {
defaults: {},
init: function (container, options) {
var opts = $.extend({}, this.defaults, options || {}),
box = $("").appendTo(container).datebox(opts);
return box;
},
destroy: function (target) {
$(target).datebox("destroy");
},
setValue: function (target, value) {
$(target).datebox("setValue", value);
},
getValue: function (target) {
return $(target).datebox("getValue");
},
resize: function (target, width) {
$(target).datebox("resize", width);
},
enable: function (target) {
$(target).datebox("enable");
},
disable: function (target) {
$(target).datebox("disable");
},
setFocus: function (target) {
$(target).datebox("textbox").focus();
}
},
datetimebox: {
defaults: {},
init: function (container, options) {
var opts = $.extend({}, this.defaults, options || {}),
box = $("").appendTo(container).datetimebox(opts);
return box;
},
destroy: function (target) {
$(target).datetimebox("destroy");
},
setValue: function (target, value) {
$(target).datetimebox("setValue", value);
},
getValue: function (target) {
return $(target).datetimebox("getValue");
},
resize: function (target, width) {
$(target).datetimebox("resize", width);
},
enable: function (target) {
$(target).datetimebox("enable");
},
disable: function (target) {
$(target).datetimebox("disable");
},
setFocus: function (target) {
$(target).datetimebox("textbox").focus();
}
},
combo: {
defaults: {},
init: function (container, options) {
var opts = $.extend({}, this.defaults, options || {}),
box = $("").appendTo(container).combo(opts);
return box;
},
destroy: function (target) {
$(target).combo("destroy");
},
setValue: function (target, value) {
$(target).combo($.util.likeArrayNotString(value) ? "setValues" : "setValue", value);
},
getValue: function (target) {
var combo = $(target), opts = combo.combo("options");
return $(target).combo(opts.multiples ? "getValues" : "getValue");
},
resize: function (target, width) {
$(target).combo("resize", width);
},
enable: function (target) {
$(target).combo("enable");
},
disable: function (target) {
$(target).combo("disable");
},
setFocus: function (target) {
$(target).combo("textbox").focus();
}
},
combobox: {
defaults: {},
init: function (container, options) {
var opts = $.extend({}, this.defaults, options || {}),
box = $("").appendTo(container).combobox(opts);
return box;
},
destroy: function (target) {
$(target).combobox("destroy");
},
setValue: function (target, value) {
$(target).combobox($.util.likeArrayNotString(value) ? "setValues" : "setValue", value);
},
getValue: function (target) {
var combo = $(target), opts = combo.combobox("options");
return $(target).combobox(opts.multiples ? "getValues" : "getValue");
},
resize: function (target, width) {
$(target).combobox("resize", width);
},
enable: function (target) {
$(target).combobox("enable");
},
disable: function (target) {
$(target).combobox("disable");
},
setFocus: function (target) {
$(target).combobox("textbox").focus();
}
},
combotree: {
defaults: {},
init: function (container, options) {
var opts = $.extend({}, this.defaults, options || {}),
box = $("").appendTo(container).combotree(opts);
return box;
},
destroy: function (target) {
$(target).combotree("destroy");
},
setValue: function (target, value) {
$(target).combotree($.util.likeArrayNotString(value) ? "setValues" : "setValue", value);
},
getValue: function (target) {
var combo = $(target), opts = combo.combotree("options");
return $(target).combotree(opts.multiples ? "getValues" : "getValue");
},
resize: function (target, width) {
$(target).combotree("resize", width);
},
enable: function (target) {
$(target).combotree("enable");
},
disable: function (target) {
$(target).combotree("disable");
},
setFocus: function (target) {
$(target).combotree("textbox").focus();
}
},
combogrid: {
defaults: {},
init: function (container, options) {
var opts = $.extend({}, this.defaults, options || {}),
box = $("").appendTo(container).combogrid(opts);
return box;
},
destroy: function (target) {
$(target).combogrid("destroy");
},
setValue: function (target, value) {
$(target).combogrid($.util.likeArrayNotString(value) ? "setValues" : "setValue", value);
},
getValue: function (target) {
var combo = $(target), opts = combo.combogrid("options");
return $(target).combogrid(opts.multiples ? "getValues" : "getValue");
},
resize: function (target, width) {
$(target).combogrid("resize", width);
},
enable: function (target) {
$(target).combogrid("enable");
},
disable: function (target) {
$(target).combogrid("disable");
},
setFocus: function (target) {
$(target).combogrid("textbox").focus();
}
},
comboicons: {
defaults: {},
init: function (container, options) {
var opts = $.extend({}, this.defaults, options || {}),
box = $("").appendTo(container).comboicons(opts);
return box;
},
destroy: function (target) {
$(target).comboicons("destroy");
},
setValue: function (target, value) {
$(target).comboicons($.util.likeArrayNotString(value) ? "setValues" : "setValue", value);
},
getValue: function (target) {
var combo = $(target), opts = combo.comboicons("options");
return $(target).comboicons(opts.multiples ? "getValues" : "getValue");
},
resize: function (target, width) {
$(target).comboicons("resize", width);
},
enable: function (target) {
$(target).comboicons("enable");
},
disable: function (target) {
$(target).comboicons("disable");
},
setFocus: function (target) {
$(target).comboicons("textbox").focus();
}
},
comboselector: {
defaults: {},
init: function (container, options) {
var opts = $.extend({}, this.defaults, options || {}),
box = $("").appendTo(container).comboselector(opts);
return box;
},
destroy: function (target) {
$(target).comboselector("destroy");
},
setValue: function (target, value) {
$(target).comboselector($.util.likeArrayNotString(value) ? "setValues" : "setValue", value);
},
getValue: function (target) {
var combo = $(target), opts = combo.comboselector("options");
return $(target).comboselector(opts.multiples ? "getValues" : "getValue");
},
resize: function (target, width) {
$(target).comboselector("resize", width);
},
enable: function (target) {
$(target).comboselector("enable");
},
disable: function (target) {
$(target).comboselector("disable");
},
setFocus: function (target) {
$(target).comboselector("textbox").focus();
}
},
my97: {
defaults: {},
init: function (container, options) {
var opts = $.extend({}, this.defaults, options || {}),
box = $("").appendTo(container).my97(opts);
return box;
},
destroy: function (target) {
$(target).my97("destroy");
},
setValue: function (target, value) {
$(target).my97($.util.likeArrayNotString(value) ? "setValues" : "setValue", value);
},
getValue: function (target) {
var combo = $(target), opts = combo.my97("options");
return $(target).my97(opts.multiples ? "getValues" : "getValue");
},
resize: function (target, width) {
$(target).my97("resize", width);
},
enable: function (target) {
$(target).my97("enable");
},
disable: function (target) {
$(target).my97("disable");
},
setFocus: function (target) {
$(target).my97("textbox").focus();
}
},
searchbox: {
defaults: {},
init: function (container, options) {
var opts = $.extend({}, this.defaults, options || {}),
box = $("").appendTo(container);
if (opts.searcher) {
opts.searcher = $.string.toFunction(opts.searcher);
}
return box.searchbox(opts);
},
destroy: function (target) {
$(target).searchbox("destroy");
},
setValue: function (target, value) {
$(target).searchbox("setValue", value);
},
getValue: function (target) {
return $(target).searchbox("getValue");
},
resize: function (target, width) {
$(target).searchbox("resize", width);
},
enable: function (target) {
$(target).searchbox("enable");
},
disable: function (target) {
$(target).searchbox("disable");
},
setFocus: function (target) {
$(target).searchbox("textbox").focus();
}
}
}, itemOptions = {
id: null,
name: null,
type: "button",
options: null,
cls: null,
style: null,
itemCls: null,
itemStyle: null,
width: null,
align: null,
htmlAttr: null
}, loader = function (param, success, error) {
var opts = $(this).toolbar("options");
if (!opts.url) { return false; }
$.ajax({
type: opts.method, url: opts.url, data: param, dataType: "json",
success: function (data) {
success(data);
}, error: function () {
error.apply(this, arguments);
}
});
}, loadFilter = function (data) {
return $.array.likeArrayNotString(data) ? data : [];
};
itemTypes.text = itemTypes.textbox;
itemTypes.linkbutton = itemTypes.button;
$.fn.toolbar = function (options, param) {
if (typeof options == "string") {
return $.fn.toolbar.methods[options](this, param);
}
options = options || {};
return this.each(function () {
var state = $.data(this, "toolbar");
if (state) {
$.extend(state.options, options);
} else {
state = $.data(this, "toolbar", {
options: $.extend({}, $.fn.toolbar.defaults, $.fn.toolbar.parseOptions(this), options)
});
}
initialize(this);
if (state.options.data) {
loadData(this, state.options.data);
}
request(this);
});
};
$.fn.toolbar.parseOptions = function (target) {
return $.extend({}, $.parser.parseOptions(target, ["url", "data", "method", "width", "height", "align", "valign"]));
};
$.fn.toolbar.methods = {
// 获取当前 easyui-toolbar 控件的 options 参数对象;
// 返回值:返回当前 easyui-toolbar 控件的 options 参数对象,为一个 JSON-Object。
options: function (jq) { return $.data(jq[0], 'toolbar').options; },
// 获取当前 easyui-toolbar 控件的工具栏包装器对象;
// 返回值:返回当前 easyui-toolbar 控件的工具栏包装器对象;该方法返回一个包含 html-table 的 jQuery 对象。
wrapper: function (jq) { return $.data(jq[0], "toolbar").wrapper; },
// 获取当前 easyui-toolbar 控件的工具栏外框对象;
// 返回值:返回当前 easyui-toolbar 控件的工具栏外框对象;该方法返回一个包含 html-div 的 jQuery 对象。
toolbar: function (jq) { return $.data(jq[0], "toolbar").toolbar; },
// 设置当前 easyui-toolbar 控件的尺寸大小;该方法的参数 size 为一个 JSON-Object,该参数定义如下属性:
// width : 表示工具栏的新宽度;如果设置为数值类型,则表示像素宽度;如果设置为 "auto",则表示自适应最大宽度;
// height: 表示工具栏的新高度;如果设置为数值类型,则表示像素高度;如果设置为 "auto",则表示自适应一行按钮的高度;
// 返回值:返回表示当前 easyui-toolbar 控件的 jQuery 链式对象。
resize: function (jq, size) { return jq.each(function () { setSize(this, size); }); },
// 设置当前 easyui-toolbar 控件的工具栏项水平居中方式;该方法的参数 align 为一个 String 类型值,其可以被定义的值限定为如下范围:
// left :
// right :
// center:
// 返回值:返回表示当前 easyui-toolbar 控件的 jQuery 链式对象。
align: function (jq, align) { return jq.each(function () { setAlign(this, align); }); },
// 设置当前 easyui-toolbar 控件的工具栏项垂直居中方式;该方法的参数 valign 为一个 String 类型值,其可以被定义的值限定为如下范围:
// top :
// middle:
// bottom:
// 返回值:返回表示当前 easyui-toolbar 控件的 jQuery 链式对象。
valign: function (jq, valign) { return jq.each(function () { setValign(this, valign); }); },
// 获取当前 easyui-toolbar 控件的所有工具栏子项数据;
// 返回值:返回表示当前 easyui-toolbar 控件的所有工具栏子项数据所构成的一个数组,数组的每个元素格式参考 getItem 方法的返回值。
getItems: function (jq) { return getItems(jq[0]); },
// 获取当前 easyui-toolbar 控件的指定位置的工具栏子项数据;该方法的参数 index 表示要获取的工具栏子项的索引号,从 0 开始计数;
// 返回值:返回表示当前 easyui-toolbar 控件指定位置的工具栏子项数据所构成的一个包含如下属性的 JSON-Object:
// actions: 表示该工具栏子项的初始化构造器;其值为 $.fn.toolbar.defaults.itemTypes 中的一个子项;
// options: 表示该工具栏子项初始化时的 options 参数数据;
// target : 表示该工具栏子项包含 "toolbar-item" 样式类的元素的 jQuery-DOM 对象;
// type : 表示该工具栏子项的类型,如果是自定义加载的 html-DOM 对象则为 "custom"
// container: 表示该工具栏子项所在的 jQuery-DOM(html-td) 对象;
getItem: function (jq, index) { return getItem(jq[0], index); },
// 获取指定的工具栏子项在当前 easyui-toolbar 控件中的索引号;
// 该方法的参数 item 表示一个工具栏子项,为一个 String 格式的 jQuery 选择器,或者是一个 HTML-DOM 对象,或者是一个 jQuery-DOM 对象。
// 返回值:返回指定的工具栏子项在当前 easyui-toolbar 控件中的索引号,从 0 开始计数;
// 如果 item 所示的对象不存在于当前 easyui-toolbar 中,则返回 -1。
getItemIndex: function (jq, item) { return getItemIndex(jq[0], item); },
// 获取当前 easyui-toolbar 控件加载的所有数据;仅在初始化该控件指定的 data 参数、通过 loadData 方法加载的数据和通过 url 远程加载的数据,才会被返回;
// 返回值:返回一个数组对象,数组中的每一项都表示一个工具栏子项的数据格式(返回数据的格式参考 loadData 方法的参数 data 的数据格式)。
getData: function (jq) { return getData(jq[0]); },
// 获取当前 easyui-toolbar 控件中所有输入控件的输入值集合;
// 返回值:返回一个 JSON-Object 对象,该对象中每个属性表示工具栏中一个具备输入值功能的子项控件,其值为输入控件当前的值;
getValues: function (jq) { return getValues(jq[0]); },
// 在当前 easyui-toolbar 中增加一个工具栏项;该方法的参数 item 可以定义为如下类型:
// 1、jQuery-DOM 对象:
// 2、HTML-DOM 对象:
// 3、String 类型:可以为以下类型:
// a:"-"、"—"、"|",表示分割线的 separator
// b:"<" 开头和 ">" 结尾切字符串度大于等于3,表示 HTML 代码段;
// c:"\t"、"\n",表示换行
// d:其他长度大于 0 的字符串,表示 label。
// 4、JSON-Object 对象:
// id :
// type : $.fn.toolbar.defaults.itemTypes 中定义的工具栏项类型,例如 separator、label、button、textbox、checkbox、numberbox、validatebox、combobox、combotree、combogrid 等;
// options : 初始化该工具栏项的参数;
// style :
// itemCls :
// width :
// align :
// 5、Array 数组类型:
// 返回值:返回表示当前 easyui-toolbar 控件的 jQuery 链式对象。
appendItem: function (jq, item) { return jq.each(function () { appendItem(this, item); }); },
// 在当前的 easyui-toolbar 中移除一个工具栏项;该方法的参数 index 表示要删除的工具栏项的索引号,从 0 开始计数;
// 返回值:返回表示当前 easyui-toolbar 控件的 jQuery 链式对象。
removeItem: function (jq, index) { return jq.each(function () { removeItem(this, index); }); },
// 将当前 easyui-toolbar 中指定位置的工具栏项替换成另一个工具栏项;该方法的参数 param 为一个 JSON-Object,包含如下属性定义:
// index: 表示要替换的工具栏项的索引号,从 0 开始计数;
// item: 参考 appendItem 方法的参数 item。
// 返回值:返回表示当前 easyui-toolbar 控件的 jQuery 链式对象。
updateItem: function (jq, param) { return jq.each(function () { updateItem(this, param); }); },
// 启用当前 easyui-toolbar 控件的某个工具栏子项;该方法的参数 index 表示要操作的工具栏子项的索引号,从 0 开始计数;
// 返回值:返回表示当前 easyui-toolbar 控件的 jQuery 链式对象。
enableItem: function (jq, index) { return jq.each(function () { enableItem(this, index); }); },
// 禁用当前 easyui-toolbar 控件的某个工具栏子项;该方法的参数 index 表示要操作的工具栏子项的索引号,从 0 开始计数;
// 返回值:返回表示当前 easyui-toolbar 控件的 jQuery 链式对象。
disableItem: function (jq, index) { return jq.each(function () { disableItem(this, index); }); },
// 设置当前 easyui-toolbar 控件中指定索引号工具栏子项使其获取焦点;该方法的参数 param 为一个 JSON-Object,包含如下属性定义:
// index: 表示要设置值的工具栏子项的索引号,从 0 开始计数;
// value: 表示要设置的新值;
// 返回值:返回表示当前 easyui-toolbar 控件的 jQuery 链式对象。
setItemFocus: function (jq, index) { return jq.each(function () { setItemFocus(this, index); }); },
// 设置当前 easyui-toolbar 控件中指定索引号工具栏子项的值;该方法的参数 param 为一个 JSON-Object,包含如下属性定义:
// index: 表示要设置值的工具栏子项的索引号,从 0 开始计数;
// value: 表示要设置的新值;
// 返回值:返回表示当前 easyui-toolbar 控件的 jQuery 链式对象。
// 备注:仅当 index 指定的工具栏子项存在且支持赋值(setValue)操作时,该方法才生效;
setItemValue: function (jq, param) { return jq.each(function () { setItemValue(this, param); }); },
// 获取当前 easyui-toolbar 控件中指定索引号工具栏子项的值;方法的参数 index 表示要获取值的工具栏子项的索引号,从 0 开始计数;
// 返回值:返回指定索引号位置的工具栏子项的值;
// 备注:仅当 index 指定的工具栏子项存在且支持取值(getValue)操作时,该方法才生效;
getItemValue: function (jq, index) { return getItemValue(jq[0], index); },
// 重新设置当前 easyui-toolbar 控件中指定索引号工具栏子项的宽度值;该方法的参数 param 为一个 JSON-Object,包含如下属性定义:
// index: 表示要设置宽度值的工具栏子项的索引号,从 0 开始计数;
// width: 表示要设置的新宽度值;
// 返回值:返回表示当前 easyui-toolbar 控件的 jQuery 链式对象。
// 备注:仅当 index 指定的工具栏子项存在且支持 resize 操作时,该方法才生效;
resizeItem: function (jq, param) { return jq.each(function () { resizeItem(this, param); }); },
// 启用当前 easyui-toolbar 控件的所有工具栏子项;
// 返回值:返回表示当前 easyui-toolbar 控件的 jQuery 链式对象。
enable: function (jq) { return jq.each(function () { enable(this); }); },
// 禁用当前 easyui-toolbar 控件的所有工具栏子项;
// 返回值:返回表示当前 easyui-toolbar 控件的 jQuery 链式对象。
disable: function (jq) { return jq.each(function () { disable(this); }); },
// 清空当前 easyui-toolbar 控件的所有工具栏子项;
// 返回值:返回表示当前 easyui-toolbar 控件的 jQuery 链式对象。
clear: function (jq) { return jq.each(function () { clear(this); }); },
// 请求远程 url 地址所示的服务器数据并重新加载当前 easyui-toolbar 控件的所有工具栏子项;该方法的参数 queryParams 为一个 JSON-Object,表示请求远程数据时发送的查询参数;
// 返回值:返回表示当前 easyui-toolbar 控件的 jQuery 链式对象。
// 备注:执行该方法会清空当前 easyui-toolbar 控件中原来的所有子项控件。
load: function (jq, queryParams) { return jq.each(function () { request(this, queryParams); }); },
// 以指定的数据重新加载当前 easyui-toolbar 控件的所有工具栏子项;该方法的参数 data 为一个数组,表示请求远程数据时发送的查询参数;数组中的每项都表示一个待加载的工具栏子项,其可以定义为如下类型:
// 1、jQuery-DOM 对象:
// 2、HTML-DOM 对象:
// 3、String 类型:可以为以下类型:
// a:"-"、"—"、"|",表示分割线的 separator
// b:"<" 开头和 ">" 结尾切字符串度大于等于3,表示 HTML 代码段;
// c:"\t"、"\n",表示换行
// d:其他长度大于 0 的字符串,表示 label。
// 4、JSON-Object 对象:
// id :
// type : $.fn.toolbar.defaults.itemTypes 中定义的工具栏项类型,例如 separator、label、button、textbox、checkbox、numberbox、validatebox、combobox、combotree、combogrid 等;
// options : 初始化该工具栏项的参数;
// style :
// itemCls :
// width :
// align :
// 返回值:返回表示当前 easyui-toolbar 控件的 jQuery 链式对象。
// 备注:执行该方法会清空当前 easyui-toolbar 控件中原来的所有子项控件。
loadData: function (jq, data) { return jq.each(function () { loadData(this, data); }); },
destroy: function (jq) { return jq.each(function () { destroy(this); }); }
};
$.fn.toolbar.defaults = {
// 表示远程服务器访问地址,用于从远程服务器加载工具栏数据;
url: null,
// 表示 easyui-toolbar 控件在初始时需要加载的内容数据;
data: null,
method: "post",
// 表示 easyui-toolbar 控件的宽度,Number 类型数值;默认为 auto;
width: "auto",
// 表示 easyui-toolbar 控件的高度,Number 类型数值;默认为 auto;
height: "auto",
// 表示 easyui-toolbar 控件的横向对齐方式,可选的值为 "left"、"center" 或 "right";默认为 "left";
align: "left",
// 表示 easyui-toolbar 控件的纵向对齐方式,可选的值为 "top"、"middle" 或 "bottom";默认为 "middle";
valign: "middle",
// 表示 easyui-toolbar 的尺寸大小重置事件;当控件大小被调整后触发;该事件回调函数定义如下参数:
// width: 被设置的新的宽度;
// height: 被设置的新的告诉。
// 回调函数中的 this 表示当前 easyui-toolbar 的 DOM 对象。
onResize: function (width, height) { },
onLoadSuccess: function (data) { },
onLoadError: function () { },
onBeforeLoad: function (param) { },
// 定义 easyui-toolbar 插件能够添加的工具栏项类型;
// 开发人员可以通过扩展 $.fn.toolbar.defaults.itemTypes 属性来实现其自定义的 easyui-toolbar 工具栏项类型;
// 就像扩展 $.fn.datagrid.defaults.editors 一样。
// 已经内置的工具栏项类型有:
// separator :
// label :
// button :
// textbox :
// checkbox :
// validatebox :
// numberbox :
// datebox :
// combobox :
// combotree :
// combogrid :
itemTypes: itemTypes,
loader: loader,
loadFilter: loadFilter,
itemOptions: itemOptions
};
$.parser.plugins.push("toolbar");
})(jQuery);