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);
|