|
@@ -0,0 +1,95 @@
|
|
|
|
|
+/**
|
|
|
|
|
+ * @author: YL
|
|
|
|
|
+ * @version: v1.0.0
|
|
|
|
|
+ */
|
|
|
|
|
+!function ($) {
|
|
|
|
|
+ 'use strict';
|
|
|
|
|
+ $.extend($.fn.bootstrapTable.defaults, {
|
|
|
|
|
+ treeShowField: null,
|
|
|
|
|
+ idField: 'id',
|
|
|
|
|
+ parentIdField: 'pid',
|
|
|
|
|
+ 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;
|
|
|
|
|
+ },
|
|
|
|
|
+ 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;
|
|
|
|
|
+
|
|
|
|
|
+ // td
|
|
|
|
|
+ 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;
|
|
|
|
|
+ return false;
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ var initTr = 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]));
|
|
|
|
|
+
|
|
|
|
|
+ // init sub node
|
|
|
|
|
+ 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;
|
|
|
|
|
+ // jquery.treegrid.js
|
|
|
|
|
+ that.options.rowStyle = function (item, idx) {
|
|
|
|
|
+ var id = item[that.options.idField] ? item[that.options.idField] : 0;
|
|
|
|
|
+ var pid = item[that.options.parentIdField] ? item[that.options.parentIdField] : 0;
|
|
|
|
|
+ return {
|
|
|
|
|
+ classes: 'treegrid-' + id + ' treegrid-parent-' + pid
|
|
|
|
|
+ };
|
|
|
|
|
+ };
|
|
|
|
|
+ initTr.apply(that, [node, $.inArray(node, data), data, parentDom]);
|
|
|
|
|
+ }
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ // tr
|
|
|
|
|
+ BootstrapTable.prototype.initRow = function (item, idx, data, parentDom) {
|
|
|
|
|
+ var that = this;
|
|
|
|
|
+ if (that.treeEnable) {
|
|
|
|
|
+ // init root node
|
|
|
|
|
+ if (that.options.onCheckRoot.apply(that, [item, data])) {
|
|
|
|
|
+ if (item._level === undefined) {
|
|
|
|
|
+ item._level = 0;
|
|
|
|
|
+ }
|
|
|
|
|
+ // jquery.treegrid.js
|
|
|
|
|
+ that.options.rowStyle = function (item, idx) {
|
|
|
|
|
+ var x = item[that.options.idField] ? item[that.options.idField] : 0;
|
|
|
|
|
+ return {
|
|
|
|
|
+ classes: 'treegrid-' + x
|
|
|
|
|
+ };
|
|
|
|
|
+ };
|
|
|
|
|
+ initTr.apply(that, [item, idx, data, parentDom]);
|
|
|
|
|
+ return true;
|
|
|
|
|
+ }
|
|
|
|
|
+ return false;
|
|
|
|
|
+ }
|
|
|
|
|
+ return _initRow.apply(that, Array.prototype.slice.apply(arguments));
|
|
|
|
|
+ };
|
|
|
|
|
+}(jQuery);
|