/** * @author: Dennis Hernández * @webSite: http://djhvscf.github.io/Blog * @version: v1.3.0 */ (function ($) { 'use strict'; var flat = function (element, that) { var result = {}; function recurse(cur, prop) { if (Object(cur) !== cur) { result[prop] = cur; } else if ($.isArray(cur)) { for (var i = 0, l = cur.length; i < l; i++) { recurse(cur[i], prop ? prop + that.options.flatSeparator + i : "" + i); if (l == 0) { result[prop] = []; } } } else { var isEmpty = true; for (var p in cur) { isEmpty = false; recurse(cur[p], prop ? prop + that.options.flatSeparator + p : p); } if (isEmpty) { result[prop] = {}; } } } recurse(element, ""); return result; }; var flatHelper = function (data, that) { var flatArray = []; $.each(!$.isArray(data) ? [data] : data, function (i, element) { flatArray.push(flat(element, that)); }); return flatArray; }; $.extend($.fn.bootstrapTable.defaults, { flat: false, flatSeparator: '.' }); var BootstrapTable = $.fn.bootstrapTable.Constructor, _initData = BootstrapTable.prototype.initData; BootstrapTable.prototype.initData = function (data, type) { if (this.options.flat) { data = flatHelper(data ? data : this.options.data, this); } _initData.apply(this, [data, type]); }; })(jQuery);