| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 | /** * @author: KingYang * @webSite: https://github.com/kingyang * @version: v1.0.0 */! function ($) {    'use strict';    $.extend($.fn.bootstrapTable.defaults, {        treeShowField: null,        idField: 'id',        parentIdField: 'pid',        treeVerticalcls: 'vertical',        treeVerticalLastcls: 'vertical last',        treeSpacecls: 'space',        treeNodecls: 'node',        treeCellcls: 'treenode',        treeTextcls: 'text',        onTreeFormatter: function (row) {            var that = this,                options = that.options,                level = row._level || 0,                plevel = row._parent && row._parent._level || 0,                paddings = [];            for (var i = 0; i < plevel; i++) {                paddings.push('<i class="' + options.treeVerticalcls + '"></i>');                paddings.push('<i class="' + options.treeSpacecls + '"></i>');            }            for (var i = plevel; i < level; i++) {                if (row._last && i === (level - 1)) {                    paddings.push('<i class="' + options.treeVerticalLastcls + '"></i>');                } else {                    paddings.push('<i class="' + options.treeVerticalcls + '"></i>');                }                paddings.push('<i class="' + options.treeNodecls + '"></i>');            }            return paddings.join('');        }, onGetNodes: function (row, data) {            var that = this;            var nodes = [];            $.each(data, function (i, item) {                if (row[that.options.idField] === item[that.options.parentIdField]) {                    nodes.push(item);                }            });            return nodes;        },        onCheckLeaf: function (row, data) {            if (row.isLeaf !== undefined) {                return row.isLeaf;            }            return !row._nodes || !row._nodes.length;        }, onCheckRoot: function (row, data) {            var that = this;            return !row[that.options.parentIdField];        }    });    var BootstrapTable = $.fn.bootstrapTable.Constructor,        _initRow = BootstrapTable.prototype.initRow,        _initHeader = BootstrapTable.prototype.initHeader;    BootstrapTable.prototype.initHeader = function () {        var that = this;        _initHeader.apply(that, Array.prototype.slice.apply(arguments));        var treeShowField = that.options.treeShowField;        if (treeShowField) {            $.each(this.header.fields, function (i, field) {                if (treeShowField === field) {                    that.treeEnable = true;                    var _formatter = that.header.formatters[i];                    var _class = [that.options.treeCellcls];                    if (that.header.classes[i]) {                        _class.push(that.header.classes[i].split('"')[1] || '');                    }                    that.header.classes[i] = 'class="' + _class.join(' ') + '"';                    that.header.formatters[i] = function (value, row, index) {                        var colTree = [that.options.onTreeFormatter.apply(that, [row])];                        colTree.push('<span class="' + that.options.treeTextcls + '">');                        if (_formatter) {                            colTree.push(_formatter.apply(this, Array.prototype.slice.apply(arguments)));                        } else {                            colTree.push(value);                        }                        colTree.push('</span>');                        return colTree.join('');                    };                    return false;                }            });        }    };    var initNode = function (item, idx, data, parentDom) {        var that = this;        var nodes = that.options.onGetNodes.apply(that, [item, data]);        item._nodes = nodes;        parentDom.append(_initRow.apply(that, [item, idx, data, parentDom]));        var len = nodes.length - 1;        for (var i = 0; i <= len; i++) {            var node = nodes[i];            node._level = item._level + 1;            node._parent = item;            if (i === len)                node._last = 1;            initNode.apply(that, [node, $.inArray(node, data), data, parentDom]);        }    };    BootstrapTable.prototype.initRow = function (item, idx, data, parentDom) {        var that = this;        if (that.treeEnable) {            if (that.options.onCheckRoot.apply(that, [item, data])) {                if (item._level === undefined) {                    item._level = 0;                }                initNode.apply(that, [item, idx, data, parentDom]);                return true;            }            return false;        }        return _initRow.apply(that, Array.prototype.slice.apply(arguments));    };} (jQuery);
 |