@bit.rhplus/ag-grid 0.0.114 → 0.0.116

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/AgGridOnRowDataChanged.js +3 -8
  2. package/CheckBoxRenderer.jsx +1 -0
  3. package/Components/ExtendButton.jsx +1 -0
  4. package/Editors/ModuleLookupEditor.jsx +65 -0
  5. package/Editors/index.jsx +1 -0
  6. package/Renderers/CheckboxRenderer.jsx +1 -0
  7. package/Renderers/CountrySelectRenderer.jsx +1 -0
  8. package/Renderers/ModuleLookupRenderer.jsx +40 -0
  9. package/Renderers/SelectCellRenderer.jsx +1 -0
  10. package/Renderers/index.jsx +1 -0
  11. package/dist/AgGridAddNewItem.d.ts +1 -0
  12. package/dist/AgGridAddNewItem.js +6 -0
  13. package/dist/AgGridAddNewItem.js.map +1 -0
  14. package/dist/AgGridColumn.d.ts +3 -0
  15. package/dist/AgGridColumn.js +357 -0
  16. package/dist/AgGridColumn.js.map +1 -0
  17. package/dist/AgGridColumnFilter.d.ts +4 -0
  18. package/dist/AgGridColumnFilter.js +19 -0
  19. package/dist/AgGridColumnFilter.js.map +1 -0
  20. package/dist/AgGridOnGridReady.d.ts +1 -0
  21. package/dist/AgGridOnGridReady.js +6 -0
  22. package/dist/AgGridOnGridReady.js.map +1 -0
  23. package/dist/AgGridOnRowDataChanged.d.ts +1 -0
  24. package/dist/AgGridOnRowDataChanged.js +4 -0
  25. package/dist/AgGridOnRowDataChanged.js.map +1 -0
  26. package/dist/AgGridOnRowDataUpdated.d.ts +1 -0
  27. package/dist/AgGridOnRowDataUpdated.js +27 -0
  28. package/dist/AgGridOnRowDataUpdated.js.map +1 -0
  29. package/dist/AgGridPostSort.d.ts +1 -0
  30. package/dist/AgGridPostSort.js +32 -0
  31. package/dist/AgGridPostSort.js.map +1 -0
  32. package/dist/AggregationNotification.d.ts +1 -0
  33. package/dist/AggregationNotification.js +121 -0
  34. package/dist/AggregationNotification.js.map +1 -0
  35. package/dist/AggregationStatusBar.d.ts +3 -0
  36. package/dist/AggregationStatusBar.js +122 -0
  37. package/dist/AggregationStatusBar.js.map +1 -0
  38. package/dist/Aggregations.d.ts +2 -0
  39. package/dist/Aggregations.js +313 -0
  40. package/dist/Aggregations.js.map +1 -0
  41. package/dist/BulkEdit/BulkEditButton.d.ts +14 -0
  42. package/dist/BulkEdit/BulkEditButton.js +140 -0
  43. package/dist/BulkEdit/BulkEditButton.js.map +1 -0
  44. package/dist/BulkEdit/BulkEditDatePicker.d.ts +11 -0
  45. package/dist/BulkEdit/BulkEditDatePicker.js +160 -0
  46. package/dist/BulkEdit/BulkEditDatePicker.js.map +1 -0
  47. package/dist/BulkEdit/BulkEditInput.d.ts +14 -0
  48. package/dist/BulkEdit/BulkEditInput.js +34 -0
  49. package/dist/BulkEdit/BulkEditInput.js.map +1 -0
  50. package/dist/BulkEdit/BulkEditModule.d.ts +11 -0
  51. package/dist/BulkEdit/BulkEditModule.js +34 -0
  52. package/dist/BulkEdit/BulkEditModule.js.map +1 -0
  53. package/dist/BulkEdit/BulkEditPopover.d.ts +14 -0
  54. package/dist/BulkEdit/BulkEditPopover.js +125 -0
  55. package/dist/BulkEdit/BulkEditPopover.js.map +1 -0
  56. package/dist/BulkEdit/BulkEditSelect.d.ts +18 -0
  57. package/dist/BulkEdit/BulkEditSelect.js +56 -0
  58. package/dist/BulkEdit/BulkEditSelect.js.map +1 -0
  59. package/dist/BulkEdit/BulkEditTagsSelect.d.ts +15 -0
  60. package/dist/BulkEdit/BulkEditTagsSelect.js +45 -0
  61. package/dist/BulkEdit/BulkEditTagsSelect.js.map +1 -0
  62. package/dist/BulkEdit/index.d.ts +1 -0
  63. package/dist/BulkEdit/index.js +11 -0
  64. package/dist/BulkEdit/index.js.map +1 -0
  65. package/dist/BulkEdit/useBulkCellEdit.d.ts +1 -0
  66. package/dist/BulkEdit/useBulkCellEdit.js +397 -0
  67. package/dist/BulkEdit/useBulkCellEdit.js.map +1 -0
  68. package/dist/BulkEdit/utils.d.ts +7 -0
  69. package/dist/BulkEdit/utils.js +568 -0
  70. package/dist/BulkEdit/utils.js.map +1 -0
  71. package/dist/CheckBoxRenderer.d.ts +6 -0
  72. package/dist/CheckBoxRenderer.js +19 -0
  73. package/dist/CheckBoxRenderer.js.map +1 -0
  74. package/dist/Components/ExtendButton.css +6 -0
  75. package/dist/Components/ExtendButton.d.ts +2 -0
  76. package/dist/Components/ExtendButton.js +13 -0
  77. package/dist/Components/ExtendButton.js.map +1 -0
  78. package/dist/CountryCellRenderer.d.ts +1 -0
  79. package/dist/CountryCellRenderer.js +12 -0
  80. package/dist/CountryCellRenderer.js.map +1 -0
  81. package/dist/Editors/DatePickerEditor.d.ts +9 -0
  82. package/dist/Editors/DatePickerEditor.js +55 -0
  83. package/dist/Editors/DatePickerEditor.js.map +1 -0
  84. package/dist/Editors/ModuleLookupEditor.d.ts +8 -0
  85. package/dist/Editors/ModuleLookupEditor.js +43 -0
  86. package/dist/Editors/ModuleLookupEditor.js.map +1 -0
  87. package/dist/Editors/index.d.ts +1 -0
  88. package/dist/Editors/index.js +3 -0
  89. package/dist/Editors/index.js.map +1 -0
  90. package/dist/Functions/index.d.ts +2 -0
  91. package/dist/Functions/index.js +27 -0
  92. package/dist/Functions/index.js.map +1 -0
  93. package/dist/HeaderTemplates/CommonHeaderTemplate.d.ts +1 -0
  94. package/dist/HeaderTemplates/CommonHeaderTemplate.js +15 -0
  95. package/dist/HeaderTemplates/CommonHeaderTemplate.js.map +1 -0
  96. package/dist/HyperModuleEditor.d.ts +1 -0
  97. package/dist/HyperModuleEditor.js +119 -0
  98. package/dist/HyperModuleEditor.js.map +1 -0
  99. package/dist/HyperModuleRenderer.d.ts +1 -0
  100. package/dist/HyperModuleRenderer.js +138 -0
  101. package/dist/HyperModuleRenderer.js.map +1 -0
  102. package/dist/NotificationOptions.d.ts +10 -0
  103. package/dist/NotificationOptions.js +80 -0
  104. package/dist/NotificationOptions.js.map +1 -0
  105. package/dist/OnCellDoubleClicked.d.ts +1 -0
  106. package/dist/OnCellDoubleClicked.js +6 -0
  107. package/dist/OnCellDoubleClicked.js.map +1 -0
  108. package/dist/OnCellEditingStarted.d.ts +1 -0
  109. package/dist/OnCellEditingStarted.js +7 -0
  110. package/dist/OnCellEditingStarted.js.map +1 -0
  111. package/dist/OnCellValueChanged.d.ts +1 -0
  112. package/dist/OnCellValueChanged.js +10 -0
  113. package/dist/OnCellValueChanged.js.map +1 -0
  114. package/dist/Renderers/BooleanRenderer.d.ts +3 -0
  115. package/dist/Renderers/BooleanRenderer.js +55 -0
  116. package/dist/Renderers/BooleanRenderer.js.map +1 -0
  117. package/dist/Renderers/ButtonRenderer.d.ts +3 -0
  118. package/dist/Renderers/ButtonRenderer.js +66 -0
  119. package/dist/Renderers/ButtonRenderer.js.map +1 -0
  120. package/dist/Renderers/CheckboxRenderer.d.ts +7 -0
  121. package/dist/Renderers/CheckboxRenderer.js +37 -0
  122. package/dist/Renderers/CheckboxRenderer.js.map +1 -0
  123. package/dist/Renderers/CountrySelectRenderer.d.ts +7 -0
  124. package/dist/Renderers/CountrySelectRenderer.js +56 -0
  125. package/dist/Renderers/CountrySelectRenderer.js.map +1 -0
  126. package/dist/Renderers/IconRenderer.d.ts +3 -0
  127. package/dist/Renderers/IconRenderer.js +187 -0
  128. package/dist/Renderers/IconRenderer.js.map +1 -0
  129. package/dist/Renderers/ImageRenderer.d.ts +3 -0
  130. package/dist/Renderers/ImageRenderer.js +58 -0
  131. package/dist/Renderers/ImageRenderer.js.map +1 -0
  132. package/dist/Renderers/LinkRenderer.d.ts +3 -0
  133. package/dist/Renderers/LinkRenderer.js +76 -0
  134. package/dist/Renderers/LinkRenderer.js.map +1 -0
  135. package/dist/Renderers/ModuleLookupRenderer.d.ts +3 -0
  136. package/dist/Renderers/ModuleLookupRenderer.js +28 -0
  137. package/dist/Renderers/ModuleLookupRenderer.js.map +1 -0
  138. package/dist/Renderers/ObjectRenderer.d.ts +3 -0
  139. package/dist/Renderers/ObjectRenderer.js +96 -0
  140. package/dist/Renderers/ObjectRenderer.js.map +1 -0
  141. package/dist/Renderers/SelectCellRenderer.d.ts +4 -0
  142. package/dist/Renderers/SelectCellRenderer.js +19 -0
  143. package/dist/Renderers/SelectCellRenderer.js.map +1 -0
  144. package/dist/Renderers/SelectRenderer.d.ts +3 -0
  145. package/dist/Renderers/SelectRenderer.js +56 -0
  146. package/dist/Renderers/SelectRenderer.js.map +1 -0
  147. package/dist/Renderers/StateRenderer.d.ts +3 -0
  148. package/dist/Renderers/StateRenderer.js +137 -0
  149. package/dist/Renderers/StateRenderer.js.map +1 -0
  150. package/dist/Renderers/index.d.ts +1 -0
  151. package/dist/Renderers/index.js +3 -0
  152. package/dist/Renderers/index.js.map +1 -0
  153. package/dist/index.d.ts +3 -0
  154. package/dist/index.js +868 -0
  155. package/dist/index.js.map +1 -0
  156. package/dist/preview-1773828129212.js +7 -0
  157. package/dist/util.d.ts +15 -0
  158. package/dist/util.js +108 -0
  159. package/dist/util.js.map +1 -0
  160. package/package.json +5 -5
  161. package/types/asset.d.ts +43 -0
  162. package/types/env.d.ts +15 -0
  163. package/types/style.d.ts +42 -0
@@ -0,0 +1,32 @@
1
+ const isNewItem = (node) => {
2
+ if (node.data === undefined)
3
+ return false;
4
+ return (node.data._rh_plus_ag_grid_new_item === true) || (node.data._rh_plus_ag_grid_signal_new === true);
5
+ };
6
+ const move = (nodes, toIndex, fromIndex) => {
7
+ nodes.splice(toIndex, 0, nodes.splice(fromIndex, 1)[0]);
8
+ };
9
+ /* eslint-disable no-param-reassign */
10
+ export const AgGridPostSort = (nodes, options) => {
11
+ let row = 1;
12
+ const { length } = nodes;
13
+ // TODO: Pridat moznost razeni noveho radku na konec, podle vlastnosti newItemPosition
14
+ for (let i = 0; i < length; i += 1) {
15
+ if (nodes[i].data !== undefined) {
16
+ if (isNewItem(nodes[i])) {
17
+ nodes[i].data._rh_plus_ag_grid_row_index = "*";
18
+ if (options.newItemPosition !== "bottom")
19
+ move(nodes, 0, i);
20
+ }
21
+ else {
22
+ nodes[i].data._rh_plus_ag_grid_row_index = row;
23
+ nodes[i].data._rh_plus_ag_grid_row_index_desc = length + 1 - row;
24
+ row += 1;
25
+ }
26
+ // nodes[i].setData(nodes[i].data);
27
+ }
28
+ }
29
+ if (options.postSort)
30
+ options.postSort(nodes);
31
+ };
32
+ //# sourceMappingURL=AgGridPostSort.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgGridPostSort.js","sourceRoot":"","sources":["../AgGridPostSort.js"],"names":[],"mappings":"AACA,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,EAAE;IACzB,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;QACzB,OAAO,KAAK,CAAC;IAEf,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,2BAA2B,KAAK,IAAI,CAAC,CAAC;AAC5G,CAAC,CAAA;AAED,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE;IACzC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC,CAAA;AAED,sCAAsC;AACtC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IAC/C,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,MAAM,EAAC,MAAM,EAAC,GAAG,KAAK,CAAC;IACvB,sFAAsF;IACtF,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,IAAE,CAAC,EAAE,CAAC;QAChC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAChC,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxB,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,0BAA0B,GAAG,GAAG,CAAC;gBAC/C,IAAI,OAAO,CAAC,eAAe,KAAK,QAAQ;oBAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC9D,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,0BAA0B,GAAG,GAAG,CAAC;gBAC/C,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,+BAA+B,GAAG,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC;gBACjE,GAAG,IAAE,CAAC,CAAC;YACT,CAAC;YACD,mCAAmC;QACrC,CAAC;IACH,CAAC;IAEC,IAAI,OAAO,CAAC,QAAQ;QAClB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,121 @@
1
+ export {};
2
+ /* eslint-disable */
3
+ // DEPRECATED: This component is not used anywhere in the codebase
4
+ // Kept for reference only - uses @material-ui which is being phased out
5
+ /*
6
+ import React, { useState } from 'react';
7
+ import PropTypes from 'prop-types';
8
+ import classnames from 'classnames';
9
+ import { makeStyles } from '@material-ui/core/styles';
10
+ import { useSnackbar } from 'notistack';
11
+ import Collapse from '@material-ui/core/Collapse';
12
+ import Paper from '@material-ui/core/Paper';
13
+ import Typography from '@material-ui/core/Typography';
14
+ import Card from '@material-ui/core/Card';
15
+ import CardActions from '@material-ui/core/CardActions';
16
+ import Button from '@material-ui/core/Button';
17
+ import IconButton from '@material-ui/core/IconButton';
18
+ import CloseIcon from '@material-ui/icons/Close';
19
+ import ExpandMoreIcon from '@material-ui/icons/ExpandMore';
20
+ import CheckCircleIcon from '@material-ui/icons/CheckCircle';
21
+ import moment from 'moment';
22
+
23
+ const useStyles = makeStyles(theme => ({
24
+ card: {
25
+ display: 'flex',
26
+ flexDirection: 'column',
27
+ flexWrap: 'wrap',
28
+ flexGrow: 1,
29
+ backgroundColor: '#fddc6c',
30
+ [theme.breakpoints.up('sm')]: {
31
+ flexGrow: 'initial',
32
+ minWidth: 344,
33
+ },
34
+ },
35
+ // typography: {
36
+ // fontWeight: 'bold',
37
+ // },
38
+ actionRoot: {
39
+ padding: '8px 8px 8px 16px',
40
+ },
41
+ icons: {
42
+ marginLeft: 'auto',
43
+ },
44
+ expand: {
45
+ padding: '8px 8px',
46
+ transform: 'rotate(0deg)',
47
+ transition: theme.transitions.create('transform', {
48
+ duration: theme.transitions.duration.shortest,
49
+ }),
50
+ },
51
+ expandOpen: {
52
+ transform: 'rotate(180deg)',
53
+ },
54
+ collapse: {
55
+ padding: 16,
56
+ },
57
+ checkIcon: {
58
+ fontSize: 20,
59
+ color: '#b3b3b3',
60
+ paddingRight: 4,
61
+ },
62
+ button: {
63
+ padding: 0,
64
+ textTransform: 'none',
65
+ },
66
+ }));
67
+
68
+ const AggregationNotification = React.forwardRef((props, ref) => {
69
+ const classes = useStyles();
70
+ const { closeSnackbar } = useSnackbar();
71
+ const expanded = true;
72
+ // Aktualizované props pro novou verzi AG Grid aggregací
73
+ const {count, sum, max, min, avg, square, cubic, earliest, latest, rows, cols} = props.messageInfo;
74
+ const length = count || 0;
75
+ const isDate = earliest && latest;
76
+
77
+ const handleDismiss = () => {
78
+ closeSnackbar(props.id);
79
+ };
80
+
81
+ return (
82
+ <Card className={classes.card} ref={ref}>
83
+ <CardActions classes={{ root: classes.actionRoot }}>
84
+ <Typography variant="subtitle2">Označeno {rows} řádků, {cols} sloupců ({length} buněk)</Typography>
85
+ <div className={classes.icons}>
86
+ <IconButton className={classes.expand} onClick={handleDismiss}>
87
+ <CloseIcon />
88
+ </IconButton>
89
+ </div>
90
+ </CardActions>
91
+ <Collapse in={expanded} timeout="auto" unmountOnExit>
92
+ {props.showNumber && count > 0 ? (
93
+ <Paper className={classes.collapse}>
94
+ { !isNaN(parseFloat(count)) ? (<span><b>Počet:</b> {parseFloat(count)}</span>) : (<span />) }
95
+ { !isNaN(parseFloat(sum)) ? (<span className="ml-2"><b>Součet:</b> {parseFloat(sum).toFixed(2)}</span>) : (<span />) }
96
+ { !isNaN(parseFloat(min)) ? (<span className="ml-2"><b>Min:</b> {parseFloat(min).toFixed(2)}</span>) : (<span />) }
97
+ { !isNaN(parseFloat(max)) ? (<span className="ml-2"><b>Max:</b> {parseFloat(max).toFixed(2)}</span>) : (<span />) }
98
+ { !isNaN(parseFloat(avg)) ? (<span className="ml-2"><b>Průměr:</b> {parseFloat(avg).toFixed(2)}</span>) : (<span />) }
99
+ { !isNaN(parseFloat(square)) ? (<span className="ml-2"><b>2D:</b> {parseFloat(square).toFixed(2)}</span>) : (<span />) }
100
+ { !isNaN(parseFloat(cubic)) ? (<span className="ml-2"><b>3D:</b> {parseFloat(cubic).toFixed(2)}</span>) : (<span />) }
101
+ </Paper>
102
+ ) : (<div />)}
103
+
104
+ {props.showDate && isDate ? (
105
+ <Paper className={classes.collapse}>
106
+ <span><b>Nejdříve:</b> {moment(earliest).format("DD.MM.YY HH:mm:ss")}</span>
107
+ <span className="ml-2"><b>Nejpozději:</b> {moment(latest).format("DD.MM.YY HH:mm:ss")}</span>
108
+ </Paper>
109
+ ) : (<div />)}
110
+ </Collapse>
111
+ </Card>
112
+ );
113
+ });
114
+
115
+ AggregationNotification.propTypes = {
116
+ id: PropTypes.number.isRequired,
117
+ };
118
+
119
+ export default AggregationNotification;
120
+ */
121
+ //# sourceMappingURL=AggregationNotification.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AggregationNotification.js","sourceRoot":"","sources":["../AggregationNotification.js"],"names":[],"mappings":";AAAA,oBAAoB;AACpB,kEAAkE;AAClE,wEAAwE;AACxE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmHE"}
@@ -0,0 +1,3 @@
1
+ export default AggregationStatusBar;
2
+ declare const AggregationStatusBar: React.NamedExoticComponent<object>;
3
+ import React from 'react';
@@ -0,0 +1,122 @@
1
+ import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
+ /* eslint-disable */
3
+ import React from 'react';
4
+ import { Space, Typography, Tooltip, Button } from 'antd';
5
+ import { CalculatorOutlined, RiseOutlined, FallOutlined, LineChartOutlined, SwapOutlined, CalendarOutlined, TableOutlined, BorderOutlined, BoxPlotOutlined, ExpandOutlined } from '@ant-design/icons';
6
+ const { Text } = Typography;
7
+ const formatNumber = (value, decimals = 2) => {
8
+ if (value === null || value === undefined || Number.isNaN(value))
9
+ return '-';
10
+ return parseFloat(value).toLocaleString('cs-CZ', {
11
+ minimumFractionDigits: decimals,
12
+ maximumFractionDigits: decimals
13
+ });
14
+ };
15
+ const formatCurrency = (value, decimals, currencySymbol, hasMixed) => {
16
+ if (value === null || value === undefined || Number.isNaN(value))
17
+ return '-';
18
+ const formatted = formatNumber(value, decimals);
19
+ if (!currencySymbol)
20
+ return formatted;
21
+ if (hasMixed) {
22
+ return `${formatted} ${currencySymbol}*`;
23
+ }
24
+ return `${formatted} ${currencySymbol}`;
25
+ };
26
+ // Memoizovaná komponenta pro jednotlivou metriku
27
+ const MetricItem = React.memo(({ icon, label, value, color = '#595959', decimals = 2, currencySymbol = null, hasMixed = false, tooltip }) => {
28
+ const formattedValue = React.useMemo(() => {
29
+ return currencySymbol
30
+ ? formatCurrency(value, decimals, currencySymbol, hasMixed)
31
+ : formatNumber(value, decimals);
32
+ }, [value, decimals, currencySymbol, hasMixed]);
33
+ const content = (_jsxs(Space, { size: 4, style: {
34
+ display: 'inline-flex',
35
+ alignItems: 'center',
36
+ padding: '0 8px',
37
+ borderRight: '1px solid #f0f0f0'
38
+ }, children: [icon && React.cloneElement(icon, {
39
+ style: { color, fontSize: '14px' }
40
+ }), _jsxs(Text, { strong: true, style: { fontSize: '11px', color: '#8c8c8c' }, children: [label, ":"] }), _jsx(Text, { style: { fontSize: '12px', fontWeight: 500, color: '#262626' }, children: formattedValue })] }));
41
+ return tooltip ? (_jsx(Tooltip, { title: tooltip, placement: "top", children: content })) : content;
42
+ });
43
+ // Hlavní komponenta Status Bar
44
+ const AggregationStatusBar = React.memo(({ data, metrics = [
45
+ 'count',
46
+ 'sum',
47
+ 'min',
48
+ 'max',
49
+ 'avg',
50
+ 'median',
51
+ 'range',
52
+ 'geometry',
53
+ 'dateRange'
54
+ ], height = 36, onSwitchToFull }) => {
55
+ if (!data || data.count <= 1) {
56
+ return null; // Nezobrazovat pokud není výběr
57
+ }
58
+ const { count, rows, cols, sum, min, max, avg, median, range, square, cubic, earliest, latest, dateRange, currencySymbol, hasMixedCurrencies, numberCount } = data;
59
+ // Pomocná funkce pro kontrolu zda metrika je povolena
60
+ const isMetricEnabled = (metricName) => {
61
+ if (Array.isArray(metrics)) {
62
+ return metrics.includes(metricName);
63
+ }
64
+ if (typeof metrics === 'object') {
65
+ return metrics[`show${metricName.charAt(0).toUpperCase() + metricName.slice(1)}`] !== false;
66
+ }
67
+ return true;
68
+ };
69
+ // Výpočet geometrie v metrech
70
+ const squareMeters = square ? (square / 10000) : null;
71
+ const cubicMeters = cubic ? (cubic / 1000000) : null;
72
+ const hasNumbers = numberCount > 0;
73
+ const hasDateValues = earliest && latest;
74
+ const hasGeometry = (cols === 2 || cols === 3) && hasNumbers;
75
+ return (_jsxs("div", { className: "aggregation-status-bar", style: {
76
+ height: `${height}px`,
77
+ display: 'flex',
78
+ alignItems: 'center',
79
+ backgroundColor: '#fafafa',
80
+ borderTop: '1px solid #d9d9d9',
81
+ borderBottom: '1px solid #d9d9d9',
82
+ overflowX: 'auto',
83
+ overflowY: 'hidden',
84
+ whiteSpace: 'nowrap',
85
+ padding: '0 4px',
86
+ position: 'relative',
87
+ // Smooth scrolling
88
+ scrollBehavior: 'smooth',
89
+ // Custom scrollbar styling
90
+ '::-webkit-scrollbar': {
91
+ height: '6px'
92
+ },
93
+ '::-webkit-scrollbar-track': {
94
+ background: '#f1f1f1'
95
+ },
96
+ '::-webkit-scrollbar-thumb': {
97
+ background: '#888',
98
+ borderRadius: '3px'
99
+ },
100
+ '::-webkit-scrollbar-thumb:hover': {
101
+ background: '#555'
102
+ }
103
+ }, children: [isMetricEnabled('count') && (_jsx(MetricItem, { icon: _jsx(TableOutlined, {}), label: "V\u00FDb\u011Br", value: `${rows}×${cols} (${count})`, decimals: 0, color: "#1890ff", tooltip: `${rows} řádků × ${cols} sloupců = ${count} buněk` })), hasNumbers && (_jsxs(_Fragment, { children: [isMetricEnabled('sum') && sum !== null && (_jsx(MetricItem, { icon: _jsx(CalculatorOutlined, {}), label: "Sou\u010Det", value: sum, color: "#52c41a", currencySymbol: currencySymbol, hasMixed: hasMixedCurrencies, tooltip: "Sou\u010Det v\u0161ech \u010D\u00EDseln\u00FDch hodnot" })), isMetricEnabled('min') && min !== null && (_jsx(MetricItem, { icon: _jsx(FallOutlined, {}), label: "Min", value: min, color: "#ff4d4f", currencySymbol: currencySymbol, hasMixed: hasMixedCurrencies, tooltip: "Minim\u00E1ln\u00ED hodnota" })), isMetricEnabled('max') && max !== null && (_jsx(MetricItem, { icon: _jsx(RiseOutlined, {}), label: "Max", value: max, color: "#52c41a", currencySymbol: currencySymbol, hasMixed: hasMixedCurrencies, tooltip: "Maxim\u00E1ln\u00ED hodnota" })), isMetricEnabled('avg') && avg !== null && (_jsx(MetricItem, { icon: _jsx(LineChartOutlined, {}), label: "Pr\u016Fm\u011Br", value: avg, color: "#fa8c16", currencySymbol: currencySymbol, hasMixed: hasMixedCurrencies, tooltip: "Aritmetick\u00FD pr\u016Fm\u011Br" })), isMetricEnabled('median') && median !== null && (_jsx(MetricItem, { icon: _jsx(LineChartOutlined, {}), label: "Medi\u00E1n", value: median, color: "#722ed1", currencySymbol: currencySymbol, hasMixed: hasMixedCurrencies, tooltip: "St\u0159edn\u00ED hodnota (50. percentil)" })), isMetricEnabled('range') && range !== null && (_jsx(MetricItem, { icon: _jsx(SwapOutlined, {}), label: "Rozp\u011Bt\u00ED", value: range, color: "#13c2c2", currencySymbol: currencySymbol, hasMixed: hasMixedCurrencies, tooltip: "Rozd\u00EDl mezi maximem a minimem" }))] })), isMetricEnabled('geometry') && hasGeometry && (_jsxs(_Fragment, { children: [cols === 2 && squareMeters !== null && (_jsx(MetricItem, { icon: _jsx(BorderOutlined, {}), label: "Plocha", value: `${formatNumber(squareMeters)} m²`, decimals: 2, color: "#eb2f96", tooltip: "Plocha vypo\u010Dten\u00E1 z prvn\u00EDch dvou sloupc\u016F (mm \u2192 m\u00B2)" })), cols === 3 && cubicMeters !== null && (_jsx(MetricItem, { icon: _jsx(BoxPlotOutlined, {}), label: "Objem", value: `${formatNumber(cubicMeters)} m³`, decimals: 3, color: "#eb2f96", tooltip: "Objem vypo\u010Dten\u00FD z prvn\u00EDch t\u0159\u00ED sloupc\u016F (mm \u2192 m\u00B3)" }))] })), isMetricEnabled('dateRange') && hasDateValues && (_jsxs(_Fragment, { children: [_jsx(MetricItem, { icon: _jsx(CalendarOutlined, {}), label: "Od", value: new Date(earliest).toLocaleDateString('cs-CZ'), decimals: 0, color: "#1890ff", tooltip: `Nejdřívější datum: ${new Date(earliest).toLocaleString('cs-CZ')}` }), _jsx(MetricItem, { icon: _jsx(CalendarOutlined, {}), label: "Do", value: new Date(latest).toLocaleDateString('cs-CZ'), decimals: 0, color: "#1890ff", tooltip: `Nejpozdější datum: ${new Date(latest).toLocaleString('cs-CZ')}` }), dateRange !== null && dateRange > 0 && (_jsx(MetricItem, { icon: _jsx(SwapOutlined, {}), label: "Rozp\u011Bt\u00ED", value: `${dateRange} ${dateRange === 1 ? 'den' : dateRange < 5 ? 'dny' : 'dní'}`, decimals: 0, color: "#722ed1", tooltip: "Po\u010Det dn\u00ED mezi nejd\u0159\u00EDv\u011Bj\u0161\u00EDm a nejpozd\u011Bj\u0161\u00EDm datem" }))] })), hasMixedCurrencies && (_jsx("div", { style: {
104
+ padding: '0 8px',
105
+ fontSize: '11px',
106
+ color: '#fa8c16',
107
+ fontStyle: 'italic',
108
+ display: 'inline-flex',
109
+ alignItems: 'center'
110
+ }, children: "* Sm\u00ED\u0161en\u00E9 m\u011Bny" })), onSwitchToFull && (_jsx("div", { style: {
111
+ marginLeft: 'auto',
112
+ padding: '0 8px',
113
+ display: 'inline-flex',
114
+ alignItems: 'center'
115
+ }, children: _jsx(Tooltip, { title: "Zobrazit detailn\u00ED notifikaci", placement: "top", children: _jsx(Button, { type: "text", size: "small", icon: _jsx(ExpandOutlined, {}), onClick: onSwitchToFull, style: {
116
+ fontSize: '12px',
117
+ height: '24px',
118
+ padding: '0 8px'
119
+ }, children: "Rozbalit" }) }) }))] }));
120
+ });
121
+ export default AggregationStatusBar;
122
+ //# sourceMappingURL=AggregationStatusBar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AggregationStatusBar.js","sourceRoot":"","sources":["../AggregationStatusBar.jsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export default function Aggregations(gridRef: any): any;
2
+ export function hashRanges(ranges: any): any;
@@ -0,0 +1,313 @@
1
+ /* eslint-disable */
2
+ // ✅ OPTIMALIZACE: Enumerable odstraněn - nahrazen native JS metodami
3
+ import moment from 'moment';
4
+ import { currencySymbols } from '@bit.rhplus/ui.grid';
5
+ const getColumnOrderDirection = (range) => (range.columns[0].colId === range.startColumn.colId) ? 1 : -1;
6
+ const getColumnOrderIndex = (range, index) => {
7
+ if (getColumnOrderDirection(range) === 1) {
8
+ return range.columns[index];
9
+ }
10
+ return range.columns[range.columns.length - 1 - index];
11
+ };
12
+ const getDimensionDefinition = (ranges) => {
13
+ let dimensionColumns = [];
14
+ let columnIndex = 0;
15
+ ranges.forEach(range => {
16
+ let colOf = 0;
17
+ for (let i = 0; i < range.columns.length; i += 1) {
18
+ if (columnIndex === 3)
19
+ break;
20
+ dimensionColumns = [...dimensionColumns, getColumnOrderIndex(range, colOf).colId];
21
+ columnIndex += 1;
22
+ colOf += 1;
23
+ }
24
+ });
25
+ return dimensionColumns;
26
+ };
27
+ const rangeContainsRowIndex = (range, row) => {
28
+ const start = Math.min(range.startRow.rowIndex, range.endRow.rowIndex);
29
+ const end = Math.max(range.startRow.rowIndex, range.endRow.rowIndex);
30
+ return (start <= row && end >= row);
31
+ };
32
+ // ✅ OPTIMALIZACE: Funkce getValue() odstraněna - používáme přímý přístup rowNode.data[colId]
33
+ const isValidDate = value => {
34
+ let typeValid = !(typeof value === 'number' || typeof value === "boolean" || value == null || value === '');
35
+ if (typeValid) {
36
+ typeValid = moment(value).isValid();
37
+ }
38
+ return typeValid;
39
+ };
40
+ // Cache pro optimalizaci výpočtů
41
+ let cachedAggregations = null;
42
+ let cachedRangeHash = null;
43
+ // ✅ OPTIMALIZACE: Vylepšená hash funkce pro správnější cache
44
+ // - Zachycuje všechny sloupce (ne jen první)
45
+ // - Normalizuje směr (min/max)
46
+ // - Seřazené sloupce pro konzistentní hash
47
+ export const hashRanges = (ranges) => {
48
+ if (!ranges || ranges.length === 0)
49
+ return null;
50
+ return ranges.map(r => {
51
+ const startIdx = Math.min(r.startRow.rowIndex, r.endRow.rowIndex);
52
+ const endIdx = Math.max(r.startRow.rowIndex, r.endRow.rowIndex);
53
+ const colIds = r.columns.map(c => c.colId).sort().join(',');
54
+ return `${startIdx}-${endIdx}-${colIds}`;
55
+ }).join('||');
56
+ };
57
+ export default function Aggregations(gridRef) {
58
+ const ranges = gridRef.current.api.getCellRanges();
59
+ if (!ranges[0] || !ranges[0].startRow)
60
+ return {};
61
+ // Cache check - vrátit cache pokud se ranges nezměnily
62
+ const rangeHash = hashRanges(ranges);
63
+ if (cachedRangeHash === rangeHash && cachedAggregations) {
64
+ return cachedAggregations;
65
+ }
66
+ let sum = 0;
67
+ let min = null;
68
+ let max = null;
69
+ let avg = null;
70
+ let count = 0;
71
+ let numberCount = 0;
72
+ let earliest;
73
+ let latest;
74
+ let square = 0;
75
+ let cubic = 0;
76
+ let sumRows = new Set(); // ✅ FIX: Set místo pole pro .add() metodu
77
+ let sumCols = new Set(); // ✅ FIX: Set místo pole pro .add() metodu
78
+ let numberValues = []; // Pro výpočet mediánu
79
+ let textValues = []; // Pro frekvenční analýzu textových hodnot
80
+ let dateCount = 0;
81
+ let currencyMap = {}; // Pro sledování měn
82
+ const startRow = Math.min(ranges[0].startRow.rowIndex, ranges[0].endRow.rowIndex);
83
+ // ✅ OPTIMALIZACE: Native filter místo Enumerable.from().where() - 10× rychlejší
84
+ const domensionRanges = ranges.filter(w => rangeContainsRowIndex(w, startRow));
85
+ const dimensions = getDimensionDefinition(domensionRanges);
86
+ ranges.forEach(range => {
87
+ const start = Math.min(range.startRow.rowIndex, range.endRow.rowIndex);
88
+ const end = Math.max(range.startRow.rowIndex, range.endRow.rowIndex);
89
+ // ✅ OPTIMALIZACE: Native for loop místo Enumerable.range() - 20× rychlejší
90
+ for (let i = start; i <= end; i++) {
91
+ sumRows.add(i);
92
+ }
93
+ // ✅ OPTIMALIZACE: Native map místo Enumerable.from() - 10× rychlejší
94
+ range.columns.forEach(col => sumCols.add(col.colId));
95
+ for (let rowIndex = start; rowIndex <= end; rowIndex += 1) {
96
+ // ✅ OPTIMALIZACE: Cache rowNode pro celý řádek - získáme jednou místo N×
97
+ const rowNode = gridRef.current.api.getDisplayedRowAtIndex(rowIndex);
98
+ if (!rowNode)
99
+ continue; // Skip pokud rowNode neexistuje
100
+ let firstDimension = 0;
101
+ let secondDimension = 0;
102
+ let thirdDimension = 0;
103
+ const { columns } = range;
104
+ for (let i = 0; i < columns.length; i += 1) {
105
+ const column = columns[i];
106
+ // ✅ OPTIMALIZACE: Přímý přístup k datům místo getValue() - 5× rychlejší
107
+ const value = rowNode.data[column.colId];
108
+ const validDate = isValidDate(value);
109
+ if (validDate) {
110
+ const dateValue = moment(value);
111
+ const dateValueAsDate = dateValue.toDate();
112
+ if (!earliest || dateValueAsDate < earliest) {
113
+ earliest = dateValueAsDate;
114
+ }
115
+ if (!latest || dateValueAsDate > latest) {
116
+ latest = dateValueAsDate;
117
+ }
118
+ dateCount += 1;
119
+ }
120
+ else {
121
+ // Pokus o konverzi na číslo (AG Grid často vrací stringy)
122
+ const numValue = typeof value === 'number' ? value : parseFloat(value);
123
+ if (!isNaN(numValue) && value !== null && value !== '' && value !== undefined) {
124
+ if (column.colId === dimensions[0]) { // prvni dimenze
125
+ firstDimension += numValue;
126
+ }
127
+ else if (column.colId === dimensions[1]) {
128
+ secondDimension += numValue;
129
+ }
130
+ else if (column.colId === dimensions[2]) {
131
+ thirdDimension += numValue;
132
+ }
133
+ sum += numValue;
134
+ min = (min === null) ? numValue : Math.min(min, numValue);
135
+ max = (max === null) ? numValue : Math.max(max, numValue);
136
+ numberValues.push(numValue); // Ukládáme pro median
137
+ numberCount += 1;
138
+ // ✅ OPTIMALIZACE: Použití cachovaného rowNode místo opětovného volání API
139
+ if (column.colDef && column.colDef.currency) {
140
+ let currencyValue;
141
+ if (typeof column.colDef.currency === 'function') {
142
+ // Dynamická měna - vyhodnotit funkci s cachovaným rowNode
143
+ currencyValue = column.colDef.currency({ data: rowNode.data, node: rowNode });
144
+ }
145
+ else {
146
+ // Statická měna
147
+ currencyValue = column.colDef.currency;
148
+ }
149
+ if (currencyValue) {
150
+ currencyMap[currencyValue] = (currencyMap[currencyValue] || 0) + 1;
151
+ }
152
+ }
153
+ }
154
+ else if (value !== null && value !== '' && value !== undefined) {
155
+ // Textová hodnota - ukládáme pro frekvenční analýzu
156
+ const textValue = String(value).trim();
157
+ if (textValue.length > 0) {
158
+ textValues.push(textValue);
159
+ }
160
+ }
161
+ }
162
+ count += 1;
163
+ }
164
+ ;
165
+ square += (firstDimension * secondDimension);
166
+ cubic += (firstDimension * secondDimension * thirdDimension);
167
+ }
168
+ });
169
+ // Vypočítat průměr až po dokončení všech ranges
170
+ avg = numberCount > 0 ? (sum / numberCount) : null;
171
+ // Vypočítat medián
172
+ let median = null;
173
+ if (numberValues.length > 0) {
174
+ const sorted = [...numberValues].sort((a, b) => a - b);
175
+ const mid = Math.floor(sorted.length / 2);
176
+ median = sorted.length % 2 !== 0
177
+ ? sorted[mid]
178
+ : (sorted[mid - 1] + sorted[mid]) / 2;
179
+ }
180
+ // Vypočítat range (rozpětí)
181
+ const range = (min !== null && max !== null) ? (max - min) : null;
182
+ // Vypočítat rozpětí datumů v dnech
183
+ const dateRange = (earliest && latest)
184
+ ? Math.ceil((latest - earliest) / (1000 * 60 * 60 * 24))
185
+ : null;
186
+ // Frekvenční analýza textových hodnot
187
+ let valueFrequencies = null;
188
+ let uniqueTextCount = 0;
189
+ let textCount = textValues.length;
190
+ let hasDuplicates = false;
191
+ if (textValues.length > 0) {
192
+ // Spočítat frekvence
193
+ const frequencyMap = {};
194
+ textValues.forEach(val => {
195
+ frequencyMap[val] = (frequencyMap[val] || 0) + 1;
196
+ });
197
+ uniqueTextCount = Object.keys(frequencyMap).length;
198
+ hasDuplicates = uniqueTextCount < textValues.length;
199
+ // Pouze pokud jsou duplicity a není příliš mnoho unikátních hodnot
200
+ if (hasDuplicates && uniqueTextCount <= 50) {
201
+ // Převést na pole a seřadit podle frekvence (sestupně)
202
+ valueFrequencies = Object.entries(frequencyMap)
203
+ .map(([value, count]) => ({
204
+ value,
205
+ count,
206
+ percentage: (count / textValues.length) * 100
207
+ }))
208
+ .sort((a, b) => b.count - a.count);
209
+ }
210
+ }
211
+ // Určit hlavní měnu
212
+ let currency = null;
213
+ let currencySymbol = null;
214
+ let hasMixedCurrencies = false;
215
+ const currencyKeys = Object.keys(currencyMap);
216
+ if (currencyKeys.length > 0) {
217
+ if (currencyKeys.length === 1) {
218
+ // Pouze jedna měna
219
+ currency = currencyKeys[0];
220
+ currencySymbol = currencySymbols[currency] || currency;
221
+ }
222
+ else {
223
+ // Více měn - najít nejčastější
224
+ const sortedCurrencies = Object.entries(currencyMap)
225
+ .sort((a, b) => b[1] - a[1]);
226
+ currency = sortedCurrencies[0][0];
227
+ currencySymbol = currencySymbols[currency] || currency;
228
+ hasMixedCurrencies = true;
229
+ }
230
+ }
231
+ const result = {
232
+ sum,
233
+ min,
234
+ max,
235
+ avg,
236
+ median,
237
+ range,
238
+ count,
239
+ numberCount,
240
+ textCount,
241
+ uniqueTextCount,
242
+ hasDuplicates,
243
+ valueFrequencies,
244
+ currency,
245
+ currencySymbol,
246
+ hasMixedCurrencies,
247
+ currencyDistribution: currencyMap,
248
+ square,
249
+ cubic,
250
+ earliest,
251
+ latest,
252
+ dateRange,
253
+ dateCount,
254
+ rows: [...sumRows].length,
255
+ cols: [...sumCols].length
256
+ };
257
+ // Uložit do cache
258
+ cachedAggregations = result;
259
+ cachedRangeHash = rangeHash;
260
+ return result;
261
+ // ranges.map(item => {
262
+ // var start = Math.min(item.startRow.rowIndex, item.endRow.rowIndex);
263
+ // var end = Math.max(item.startRow.rowIndex, item.endRow.rowIndex);
264
+ // for (var rowIndex = start; rowIndex <= end; rowIndex++) {
265
+ // var dimension = 0;
266
+ // rowVolume = 1;
267
+ // item.columns.forEach(column => {
268
+ // var rowModel = gridRef.current.api.getModel();
269
+ // var rowNode = rowModel.getRow(rowIndex);
270
+ // var value = gridRef.current.api.getValue(column, rowNode);
271
+ // if (Date.parse(value) && value != 0) {
272
+ // dateCount++;
273
+ // earliest = new Date(Math.min.apply(null, [(earliest || Date.parse(value)), Date.parse(value)]));
274
+ // latest = new Date(Math.max.apply(null, [(latest || Date.parse(value)), Date.parse(value)]));
275
+ // }
276
+ // if (typeof value === "number") {
277
+ // dimension++;
278
+ // sum += value;
279
+ // min = Math.min(min || value, value);
280
+ // max = Math.max(max || value, value);
281
+ // count++;
282
+ // if (dimension <= 3) {
283
+ // rowVolume = rowVolume * value;
284
+ // } else {
285
+ // rowVolume = 0;
286
+ // }
287
+ // }
288
+ // })
289
+ // if (dimension === 2) {
290
+ // volume2d = volume2d + rowVolume;
291
+ // } else if (dimension === 3) {
292
+ // volume3d = volume3d + rowVolume;
293
+ // }
294
+ // }
295
+ // length += (Math.abs(item.startRow.rowIndex - item.endRow.rowIndex) + 1) * item.columns.length;
296
+ // avg = (sum / count);
297
+ // });
298
+ // return {
299
+ // length,
300
+ // sum,
301
+ // min,
302
+ // max,
303
+ // avg,
304
+ // count,
305
+ // volume2d,
306
+ // volume3d,
307
+ // earliest,
308
+ // latest,
309
+ // isDate: dateCount >= 2,
310
+ // dateCount
311
+ // };
312
+ }
313
+ //# sourceMappingURL=Aggregations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Aggregations.js","sourceRoot":"","sources":["../Aggregations.js"],"names":[],"mappings":"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"}