ze-react-component-library
Version:
ZeroETP React Component Library
125 lines (105 loc) • 3.95 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _underscore = _interopRequireDefault(require("underscore"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
var __assign = void 0 && (void 0).__assign || function () {
__assign = Object.assign || function (t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) {
if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
}
}
return t;
};
return __assign.apply(this, arguments);
};
var _default = function _default(apiResult, config) {
if (!apiResult) return apiResult;
var result = apiResult.result,
columnProperties = apiResult.columnProperties,
logicform = apiResult.logicform;
var groupedData = _underscore.default.groupBy(result, function (i) {
return config.rows.map(function (r) {
return _typeof(i[r]) === "object" ? i[r]._id : i[r];
}).join("");
});
var pivotedData = [];
var pivotedColumnProperties = [];
var pivotedLogicform = JSON.parse(JSON.stringify(logicform));
pivotedLogicform.groupby = [];
pivotedLogicform.preds = []; // pivot column properties
config.rows.forEach(function (r) {
pivotedColumnProperties.push(columnProperties.find(function (p) {
return p.name === r;
}));
pivotedLogicform.groupby.push(logicform.groupby.find(function (g) {
return g.name === r;
}));
});
var keyArr = _underscore.default.uniq(result.map(function (i) {
return config.rows.map(function (r) {
return _typeof(i[r]) === "object" ? i[r]._id : i[r];
}).join("");
})); // pivot data
keyArr.forEach(function (key) {
var array = groupedData[key];
var resultItem = {
_id: key,
origin: array
};
config.rows.forEach(function (r) {
resultItem[r] = array[0][r];
});
array.forEach(function (arrayItem) {
var newKey = config.cols.map(function (c) {
if (_typeof(arrayItem[c]) === "object") {
var property = columnProperties.find(function (p) {
return p.name === c;
});
if (property.schema) {
var nameProp = property.schema.properties.find(function (p) {
return p.is_name;
});
if (nameProp) {
return arrayItem[c][nameProp.name];
}
}
}
return _typeof(arrayItem[c]) === "object" ? arrayItem[c]._id : arrayItem[c];
}).join("");
arrayItem.key = newKey;
config.values.forEach(function (vKey) {
var pivotedKey = "" + newKey + vKey;
resultItem[pivotedKey] = arrayItem[vKey];
if (!pivotedColumnProperties.find(function (p) {
return p.name === pivotedKey;
})) {
var oldProperty = columnProperties.find(function (p) {
return p.name === vKey;
});
pivotedColumnProperties.push(__assign(__assign({}, oldProperty), {
name: pivotedKey
}));
var oldPred = logicform.preds.find(function (p) {
return p.name === vKey;
});
pivotedLogicform.preds.push(__assign(__assign({}, oldPred || {}), {
name: pivotedKey
}));
}
});
});
pivotedData.push(resultItem);
});
return __assign(__assign({}, apiResult), {
logicform: pivotedLogicform,
result: pivotedData,
columnProperties: pivotedColumnProperties
});
};
exports.default = _default;