kea-react
Version:
Componentes comunes de react
67 lines (59 loc) • 2.03 kB
text/typescript
import { CellData, GridDataFormat, DataTypes } from "./tipos";
import formats = require("../format");
type DataFormatsDefaults = {
[k in DataTypes]: GridDataFormat
};
/**Formatos por default segun el tipo de dato */
const defaultDataFormats: DataFormatsDefaults = {
boolean: "yesno",
Date: "date",
number: "number",
string: "tostring",
null: "empty"
};
/**Obtiene el tipo de dato de una celda */
export function getCellDataType(x: CellData): DataTypes {
if (x == null) {
return "null";
} else if (typeof x == "number") {
return "number"
} else if (typeof x == "boolean") {
return "boolean";
} else if (typeof x == "string") {
return "string";
} else if (x instanceof Date) {
return "Date";
}
throw "Tipo no soportado";
}
/**Formatea los datos de una celda */
export function formatCellData(data: CellData, format?: GridDataFormat): string {
if (format) {
if (format == "empty")
return "";
if (data == null)
return "";
if (format == "tostring")
return "" + data;
switch (format) {
case "yesno":
return data ? "si" : "no";
case "currency":
if (typeof data != "boolean" && !(data instanceof Date))
return formats.FormatCurrency(data);
case "number":
return "" + data;
case "date":
if (typeof data != "number" && typeof (data) != "boolean")
return formats.FormatDate(data);
case "datetime":
if (typeof data != "number" && typeof (data) != "boolean")
return formats.FormatDateTime(data);
}
return "" + data;
} else {
const type = getCellDataType(data);
const defaultFormat = defaultDataFormats[type];
return formatCellData(data, defaultFormat);
}
}