UNPKG

epn-ui

Version:

Дизайн система кабинета ВМ

54 lines (51 loc) 2.29 kB
import React, { useState, useCallback, useEffect, useMemo } from 'react'; import Table from 'antd/lib/table'; import useI18n from '../../../i18n/index.js'; import { formatNumber } from '../utils/number.js'; var InternalSummary = function (_a) { var columns = _a.columns, dataSource = _a.dataSource, locale = _a.locale; var _b = useI18n(), t = _b.t, changeLanguage = _b.changeLanguage; var _c = useState(null), totals = _c[0], setTotals = _c[1]; var getTotalResult = useCallback(function () { if (!Array.isArray(dataSource) || dataSource.length === 0) return null; var total = {}; var pageDataKeys = Object.keys(dataSource[0]); dataSource.forEach(function (item) { pageDataKeys.forEach(function (key) { if (total[key] === undefined) { total[key] = 0; } total[key] += +item[key]; }); }); return total; }, [dataSource]); useEffect(function () { var reuslt = getTotalResult(); setTotals(reuslt); }, [getTotalResult]); useEffect(function () { changeLanguage(locale); }, [locale]); var totalColumns = useMemo(function () { return columns.filter(function (item) { return !item.hideForTotal && !item.hidden; }); }, [columns]); return (React.createElement(Table.Summary, { fixed: true }, React.createElement(Table.Summary.Row, null, React.createElement(Table.Summary.Cell, { index: 0 }, t('Total')), totalColumns.map(function (item, index) { if (!item.dataIndex) return null; if (typeof item.dataIndex !== 'string') return null; if (!totals) return null; return (React.createElement(Table.Summary.Cell, { index: index + 1, key: item.key }, React.createElement(React.Fragment, null, item.render && item.render(totals[item.dataIndex], item, index + 1), !item.render && formatNumber(totals[item.dataIndex])))); })))); }; export { InternalSummary as default };