UNPKG

kea-react

Version:

Componentes comunes de react

67 lines (59 loc) 2.03 kB
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); } }