all files / dui/src/plugin/ TableHeaderTip.js

35.71% Statements 10/28
21.43% Branches 3/14
40% Functions 2/5
35.71% Lines 10/28
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88                                                                                                                                                           
/**
 * 表头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;
});