kea-react
Version:
Componentes comunes de react
92 lines (91 loc) • 4.04 kB
JavaScript
;
var __assign = (this && this.__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;
};
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
var __spread = (this && this.__spread) || function () {
for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
return ar;
};
Object.defineProperty(exports, "__esModule", { value: true });
var keautils_1 = require("keautils");
/**Obtiene la cantidad de columnas originales */
function getOriginalColumnCount(totalColumns, drillDownCount) {
return totalColumns - drillDownCount;
}
exports.getOriginalColumnCount = getOriginalColumnCount;
/**Obtiene todas las columnas efectivas del grid, que son las originales concatenadas con las de drill down*/
function getEffectiveColumns(originalColumns, drillDowns) {
var drillDownColumns = keautils_1.mapObject(drillDowns, function (x) { return drillDownToColumn(originalColumns, x); });
return __assign({}, originalColumns, drillDownColumns);
}
exports.getEffectiveColumns = getEffectiveColumns;
/**Devuelve el nuevo state de un grid despues de una operación de quitar columna */
function quitarColumna(key, oldValue) {
var newValue = __assign({}, oldValue, { drillDowns: keautils_1.filterObject(oldValue.drillDowns, function (value, dkey) { return dkey != key; }), mapping: oldValue.mapping.filter(function (x) { return x != key; }) });
return newValue;
}
exports.quitarColumna = quitarColumna;
/**Devuelve el nuevo state despues de agregar un drilldown
* @param column indice de la columna original
* @param path ruta del drilldown
*/
function addDrilldown(column, path, oldValue) {
var last = oldValue.drillDowns;
var lastDrillDownCol = last[column];
var originalPath = (lastDrillDownCol && lastDrillDownCol.path) || [];
var originalColumn = lastDrillDownCol == null ? column : lastDrillDownCol.columna;
var realPath = __spread(originalPath, path);
var newValue = { columna: originalColumn, path: realPath };
var newKey = getDrillDownKey(newValue.columna, newValue.path);
//Nuevos valores
//Si el drill down ya existe no hay problema ya que simplemente se sustituira por otro drilldown equivalente
var drillDowns = __assign({}, last, (_a = {}, _a[newKey] = newValue, _a));
var mapping = __spread(oldValue.mapping, [newKey]);
return __assign({}, oldValue, { drillDowns: drillDowns, mapping: mapping });
var _a;
}
exports.addDrilldown = addDrilldown;
/**Convierte un drill down a una columna del grid */
function drillDownToColumn(originalColumns, drillDown) {
var column = originalColumns[drillDown.columna];
var title = getDrillDownTitle(column.title, drillDown.path);
var cell = function (row) { return ({
data: getPathData(column.cell(row).data, drillDown.path)
}); };
return {
title: title,
cell: cell,
key: getDrillDownKey(drillDown.columna, drillDown.path)
};
}
function getDrillDownKey(column, path) {
return "_drilldown:" + column + ":" + path.join("/");
}
function getDrillDownTitle(colTitle, path) {
return colTitle + "/" + (path.length <= 2 ? path.join("/") :
(".../" + path.slice(2).join("/")));
}
function getPathData(data, path) {
return path.reduce(function (data, prop) { return data && data[prop]; }, data);
}