/**
* 表头tip插件
*
* @file 表头tip插件
* @author Brian Li(lbxxlht@163.com)
*
* 数据结构
* <TIP>:
* {
* index: <number>, 列索引号
* icon: <string>, 图标的样式
* position: <string>, 浮层显示位置:'left-top', 'left-bottom', 'right-top', 'right-bottom'
* content: <string> 负责中显示的内容,支持html
* }
*/
var define = typeof define === 'function' && define.amd ? define : function (factory) {
typeof module === 'object' ? (module.exports = factory(require)) : '';
};
define(function (require) {
var util = require('../core/util');
var Plugin = require('../core/plugin');
// public /////////////////////////////////////////////////////////////////
/**
* 构造函数
*
* @constructor
* @param {Object} param 初始化对象
* @param {Array.<TIP>} param.tips 表头tips配置
*/
function TableHeaderTip(param) {
if (!(this instanceof TableHeaderTip)) {
return new TableHeaderTip(param);
}
param = param || {};
this.required = ['TableHeader'];
this.tips = param.tips || [];
Plugin.call(this, param);
}
util.inherit(TableHeaderTip, Plugin);
/**
* @override
*
* @param {Object} param 宿主UI初始化时的参数引用,***操作请小心***
* @return {boolean} 是否初始化成功
*/
TableHeaderTip.prototype.load = function (param) {
param.pluginSkin = util.joinClassName(param.pluginSkin, 'table-header-tip');
param.tpl = extendTPL(param.tpl, this.tips);
return true;
};
// private /////////////////////////////////////////////////////////////////
/**
* 对模版进行扩充
*
* @param {Array.<string>} tpl 原始模板
* @param {Array.<Object>} tips tip配置
* @return {Array.<string>} 扩展后的模板
*/
function extendTPL(tpl, tips) {
if (tips.length === 0) {
return tpl;
}
var picker = new util.Picker(tpl);
for (var i = 0; i < tips.length; i++) {
var tip = tips[i];
var column = tip.index;
var html = [
'<div class="tip ' + tip.icon + '">',
'<div class="content ' + tip.position + '">',
tip.content,
'</div></div>'
];
picker.find('.th').filter('[data-ui-column="' + column + '"]').foot(html);
}
return picker.export();
}
return TableHeaderTip;
});
|