UNPKG

drf-react-by-schema

Version:

Components and Tools for building a React App having Django Rest Framework (DRF) as server

33 lines (32 loc) 2.09 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const react_1 = __importDefault(require("react")); const Alert_1 = __importDefault(require("@mui/material/Alert")); const List_1 = __importDefault(require("@mui/material/List")); const ListItem_1 = __importDefault(require("@mui/material/ListItem")); const react_number_format_1 = require("react-number-format"); const DataTotals = ({ schema, data, sumRows, visibleRows }) => { if (!schema || !data || !(sumRows === null || sumRows === void 0 ? void 0 : sumRows.rows)) { return null; } return (react_1.default.createElement(react_1.default.Fragment, null, data && sumRows && sumRows.rows.length > 0 && (react_1.default.createElement(Alert_1.default, { severity: sumRows.severity || 'info' }, react_1.default.createElement(List_1.default, { dense: true }, sumRows.rows.map((row) => { var _a; return (react_1.default.createElement(ListItem_1.default, { key: `sumRows_${row.field}` }, react_1.default.createElement(react_number_format_1.NumericFormat, { value: [...data].reduce((total, item) => { if (parseFloat(item[row.field]) && (!visibleRows || visibleRows.includes(`${item.id}`))) { return total + parseFloat(item[row.field]); } return total; }, 0), thousandSeparator: ".", decimalSeparator: ",", displayType: 'text', decimalScale: row.isCount ? 0 : 2, fixedDecimalScale: true, prefix: row.prefix ? `${row.prefix} ` : schema && ((_a = schema[row.field]) === null || _a === void 0 ? void 0 : _a.label) ? `${schema[row.field].label}: ` : undefined, suffix: row.suffix ? ` ${row.suffix}` : undefined }))); })))))); }; exports.default = DataTotals;