snipe-it/public/js/extensions/flat-json/bootstrap-table-flat-json.js
2017-05-31 10:31:56 -07:00

63 lines
1.7 KiB
JavaScript
Executable file

/**
* @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);