epn-ui
Version:
Дизайн система кабинета ВМ
54 lines (51 loc) • 2.29 kB
JavaScript
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 };