eionet2-dashboard 3.2.2 → 3.2.4
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.
- package/CHANGELOG.md +20 -0
- package/Jenkinsfile +3 -8
- package/package.json +1 -1
- package/tabs/package-lock.json +2 -2
- package/tabs/package.json +1 -1
- package/tabs/src/components/CustomColumnResizeIcon.jsx +1 -1
- package/tabs/src/components/my_country/DataReporters.jsx +2 -3
- package/tabs/src/components/my_country/DataReporters.test.jsx +1 -2
- package/tabs/src/components/CustomGridToolbar.jsx +0 -202
- package/tabs/src/components/CustomGridToolbar.test.jsx +0 -8
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,25 @@ All notable changes to this project will be documented in this file. Dates are d
|
|
|
4
4
|
|
|
5
5
|
Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
|
|
6
6
|
|
|
7
|
+
### [3.2.4](https://github.com/eea/eionet2-dashboard/compare/3.2.3...3.2.4) - 14 May 2026
|
|
8
|
+
|
|
9
|
+
#### :house: Internal changes
|
|
10
|
+
|
|
11
|
+
- chore: sonar fix [Mihai Nicolae - [`8f86721`](https://github.com/eea/eionet2-dashboard/commit/8f8672179694b26bd95ca2fc8c5092e2eca0bc7a)]
|
|
12
|
+
- chore: sonar [Mihai Nicolae - [`12a2a41`](https://github.com/eea/eionet2-dashboard/commit/12a2a41084b8dcc4c11ae5e3149a8a359bf5369c)]
|
|
13
|
+
|
|
14
|
+
### [3.2.3](https://github.com/eea/eionet2-dashboard/compare/3.2.2...3.2.3) - 24 April 2026
|
|
15
|
+
|
|
16
|
+
#### :bug: Bug Fixes
|
|
17
|
+
|
|
18
|
+
- fix: grid toolbar issue (Refs #302855) [Mihai Nicolae - [`f50c4ee`](https://github.com/eea/eionet2-dashboard/commit/f50c4ee8a6160c91d39cbfa4b8d12832b609348f)]
|
|
19
|
+
|
|
20
|
+
#### :house: Internal changes
|
|
21
|
+
|
|
22
|
+
- chore: sonar [Mihai Nicolae - [`d531c58`](https://github.com/eea/eionet2-dashboard/commit/d531c587d99ed740ceb83ddbcbf3651bf5a82283)]
|
|
23
|
+
- chore: coverage on master [Mihai Nicolae - [`d0a7925`](https://github.com/eea/eionet2-dashboard/commit/d0a79254460ffe9d06bf597d2bb1c3c24b1d42d5)]
|
|
24
|
+
- chore: coverage on master [Mihai Nicolae - [`364faf4`](https://github.com/eea/eionet2-dashboard/commit/364faf432bd637b1e1782942161eafe4a450a648)]
|
|
25
|
+
|
|
7
26
|
### [3.2.2](https://github.com/eea/eionet2-dashboard/compare/3.2.1...3.2.2) - 12 March 2026
|
|
8
27
|
|
|
9
28
|
#### :rocket: New Features
|
|
@@ -24,6 +43,7 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
|
|
|
24
43
|
- chore: code format [Mihai Nicolae - [`a593c60`](https://github.com/eea/eionet2-dashboard/commit/a593c6030a550a37d159ca864ed689663b1a8456)]
|
|
25
44
|
- chore: jenking unit test [Mihai Nicolae - [`24bb98d`](https://github.com/eea/eionet2-dashboard/commit/24bb98d821adbceb9f231aaf9c3451eea8df3502)]
|
|
26
45
|
- chore: code format [Mihai Nicolae - [`eea17da`](https://github.com/eea/eionet2-dashboard/commit/eea17da6d0b41610a2bcc1e4c4852ad2b60c893c)]
|
|
46
|
+
- chore: [JENKINSFILE] use sonarqube branches [EEA Jenkins - [`438a9fb`](https://github.com/eea/eionet2-dashboard/commit/438a9fb90c90501e69fbf70651a0080fc17cd18a)]
|
|
27
47
|
|
|
28
48
|
### [3.2.1](https://github.com/eea/eionet2-dashboard/compare/3.2.0...3.2.1) - 18 February 2026
|
|
29
49
|
|
package/Jenkinsfile
CHANGED
|
@@ -31,7 +31,6 @@ pipeline {
|
|
|
31
31
|
allOf {
|
|
32
32
|
environment name: 'CHANGE_ID', value: ''
|
|
33
33
|
not { changelog '.*^Automated release [0-9\\.]+$' }
|
|
34
|
-
not { branch 'master' }
|
|
35
34
|
}
|
|
36
35
|
}
|
|
37
36
|
steps {
|
|
@@ -49,7 +48,6 @@ pipeline {
|
|
|
49
48
|
allOf {
|
|
50
49
|
environment name: 'CHANGE_ID', value: ''
|
|
51
50
|
not { changelog '.*^Automated release [0-9\\.]+$' }
|
|
52
|
-
not { branch 'master' }
|
|
53
51
|
}
|
|
54
52
|
}
|
|
55
53
|
steps {
|
|
@@ -64,7 +62,6 @@ pipeline {
|
|
|
64
62
|
allOf {
|
|
65
63
|
environment name: 'CHANGE_ID', value: ''
|
|
66
64
|
not { changelog '.*^Automated release [0-9\\.]+$' }
|
|
67
|
-
not { branch 'master' }
|
|
68
65
|
}
|
|
69
66
|
}
|
|
70
67
|
steps {
|
|
@@ -101,19 +98,17 @@ pipeline {
|
|
|
101
98
|
when {
|
|
102
99
|
allOf {
|
|
103
100
|
environment name: 'CHANGE_ID', value: ''
|
|
101
|
+
not { changelog '.*^Automated release [0-9\\.]+$' }
|
|
104
102
|
anyOf {
|
|
105
103
|
branch 'master'
|
|
106
|
-
|
|
107
|
-
branch 'develop'
|
|
108
|
-
not { changelog '.*^Automated release [0-9\\.]+$' }
|
|
109
|
-
}
|
|
104
|
+
branch 'develop'
|
|
110
105
|
}
|
|
111
106
|
}
|
|
112
107
|
}
|
|
113
108
|
steps {
|
|
114
109
|
script{
|
|
115
110
|
withSonarQubeEnv('Sonarqube') {
|
|
116
|
-
sh "sonar-scanner -Dsonar.javascript.lcov.reportPaths=./tabs/coverage/lcov.info -Dsonar.sources=./tabs,./api
|
|
111
|
+
sh "sonar-scanner -Dsonar.javascript.lcov.reportPaths=./tabs/coverage/lcov.info -Dsonar.sources=./tabs,./api -Dsonar.exclusions=**/__tests__/**,**/*.test.*,**/*.spec.* -Dsonar.issue.ignore.multicriteria=e1 -Dsonar.issue.ignore.multicriteria.e1.ruleKey=javascript:S6774 -Dsonar.issue.ignore.multicriteria.e1.resourceKey=**/*.jsx -Dsonar.projectKey=$GIT_NAME -Dsonar.projectName=$GIT_NAME -Dsonar.branch.name=$BRANCH_NAME"
|
|
117
112
|
sh '''try=2; while [ \$try -gt 0 ]; do curl -s -XPOST -u "${SONAR_AUTH_TOKEN}:" "${SONAR_HOST_URL}api/project_tags/set?project=${GIT_NAME}&tags=${SONARQUBE_TAGS}" > set_tags_result; if [ \$(grep -ic error set_tags_result ) -eq 0 ]; then try=0; else cat set_tags_result; echo "... Will retry"; sleep 60; try=\$(( \$try - 1 )); fi; done'''
|
|
118
113
|
}
|
|
119
114
|
}
|
package/package.json
CHANGED
package/tabs/package-lock.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eeacms/eionet2-dashboard",
|
|
3
|
-
"version": "3.2.
|
|
3
|
+
"version": "3.2.3",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@eeacms/eionet2-dashboard",
|
|
9
|
-
"version": "3.2.
|
|
9
|
+
"version": "3.2.3",
|
|
10
10
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@emotion/react": "^11.14.0",
|
package/tabs/package.json
CHANGED
|
@@ -52,7 +52,7 @@ export default function CustomColumnResizeIcon({ onWidthChanged, id }) {
|
|
|
52
52
|
let timeout;
|
|
53
53
|
if (resizeInfo) {
|
|
54
54
|
timeout = setTimeout(() => {
|
|
55
|
-
onWidthChanged
|
|
55
|
+
onWidthChanged?.(resizeInfo.width, resizeInfo.index);
|
|
56
56
|
}, 100);
|
|
57
57
|
}
|
|
58
58
|
return () => {
|
|
@@ -335,10 +335,9 @@ export function DataReporters({ configuration, country, users }) {
|
|
|
335
335
|
</Box>
|
|
336
336
|
<Box className="grid-container">
|
|
337
337
|
<ResizableGrid
|
|
338
|
-
showToolbar
|
|
339
338
|
rows={flows}
|
|
340
|
-
|
|
341
|
-
|
|
339
|
+
slots={{
|
|
340
|
+
toolbar: customToolbar,
|
|
342
341
|
}}
|
|
343
342
|
columns={gridColumns}
|
|
344
343
|
pageSizeOptions={[25, 50, 100]}
|
|
@@ -76,7 +76,6 @@ describe('DataReporters', () => {
|
|
|
76
76
|
);
|
|
77
77
|
|
|
78
78
|
const gridProps = mockResizableGrid.mock.calls[0][0];
|
|
79
|
-
expect(gridProps.showToolbar).toBe(true);
|
|
80
79
|
expect(gridProps.pageSizeOptions).toEqual([25, 50, 100]);
|
|
81
80
|
expect(gridProps.hideFooterSelectedRowCount).toBe(true);
|
|
82
81
|
expect(gridProps.initialState.pagination.paginationModel.pageSize).toBe(25);
|
|
@@ -86,7 +85,7 @@ describe('DataReporters', () => {
|
|
|
86
85
|
});
|
|
87
86
|
expect(gridProps.getRowHeight()).toBe('auto');
|
|
88
87
|
|
|
89
|
-
const toolbarHtml = renderToStaticMarkup(<gridProps.
|
|
88
|
+
const toolbarHtml = renderToStaticMarkup(<gridProps.slots.toolbar />);
|
|
90
89
|
expect(toolbarHtml).toContain('filter');
|
|
91
90
|
expect(toolbarHtml).toContain('export');
|
|
92
91
|
|
|
@@ -1,202 +0,0 @@
|
|
|
1
|
-
// import * as React from 'react';
|
|
2
|
-
// import { styled } from '@mui/material/styles';
|
|
3
|
-
// import {
|
|
4
|
-
// DataGrid,
|
|
5
|
-
// Toolbar,
|
|
6
|
-
// ToolbarButton,
|
|
7
|
-
// ColumnsPanelTrigger,
|
|
8
|
-
// FilterPanelTrigger,
|
|
9
|
-
// ExportCsv,
|
|
10
|
-
// ExportPrint,
|
|
11
|
-
// QuickFilter,
|
|
12
|
-
// QuickFilterControl,
|
|
13
|
-
// QuickFilterClear,
|
|
14
|
-
// QuickFilterTrigger,
|
|
15
|
-
// } from '@mui/x-data-grid';
|
|
16
|
-
// import { useDemoData } from '@mui/x-data-grid-generator';
|
|
17
|
-
// import Tooltip from '@mui/material/Tooltip';
|
|
18
|
-
// import Menu from '@mui/material/Menu';
|
|
19
|
-
// import Badge from '@mui/material/Badge';
|
|
20
|
-
// import ViewColumnIcon from '@mui/icons-material/ViewColumn';
|
|
21
|
-
// import FilterListIcon from '@mui/icons-material/FilterList';
|
|
22
|
-
// import FileDownloadIcon from '@mui/icons-material/FileDownload';
|
|
23
|
-
// import MenuItem from '@mui/material/MenuItem';
|
|
24
|
-
// import Divider from '@mui/material/Divider';
|
|
25
|
-
// import TextField from '@mui/material/TextField';
|
|
26
|
-
// import InputAdornment from '@mui/material/InputAdornment';
|
|
27
|
-
// import CancelIcon from '@mui/icons-material/Cancel';
|
|
28
|
-
// import SearchIcon from '@mui/icons-material/Search';
|
|
29
|
-
// import Typography from '@mui/material/Typography';
|
|
30
|
-
|
|
31
|
-
// type OwnerState = {
|
|
32
|
-
// expanded: boolean;
|
|
33
|
-
// };
|
|
34
|
-
|
|
35
|
-
// const StyledQuickFilter = styled(QuickFilter)({
|
|
36
|
-
// display: 'grid',
|
|
37
|
-
// alignItems: 'center',
|
|
38
|
-
// });
|
|
39
|
-
|
|
40
|
-
// const StyledToolbarButton = styled(ToolbarButton)<{ ownerState: OwnerState }>(
|
|
41
|
-
// ({ theme, ownerState }) => ({
|
|
42
|
-
// gridArea: '1 / 1',
|
|
43
|
-
// width: 'min-content',
|
|
44
|
-
// height: 'min-content',
|
|
45
|
-
// zIndex: 1,
|
|
46
|
-
// opacity: ownerState.expanded ? 0 : 1,
|
|
47
|
-
// pointerEvents: ownerState.expanded ? 'none' : 'auto',
|
|
48
|
-
// transition: theme.transitions.create(['opacity']),
|
|
49
|
-
// }),
|
|
50
|
-
// );
|
|
51
|
-
|
|
52
|
-
// const StyledTextField = styled(TextField)<{
|
|
53
|
-
// ownerState: OwnerState;
|
|
54
|
-
// }>(({ theme, ownerState }) => ({
|
|
55
|
-
// gridArea: '1 / 1',
|
|
56
|
-
// overflowX: 'clip',
|
|
57
|
-
// width: ownerState.expanded ? 260 : 'var(--trigger-width)',
|
|
58
|
-
// opacity: ownerState.expanded ? 1 : 0,
|
|
59
|
-
// transition: theme.transitions.create(['width', 'opacity']),
|
|
60
|
-
// }));
|
|
61
|
-
|
|
62
|
-
// function CustomToolbar() {
|
|
63
|
-
// const [exportMenuOpen, setExportMenuOpen] = React.useState(false);
|
|
64
|
-
// const exportMenuTriggerRef = React.useRef<HTMLButtonElement>(null);
|
|
65
|
-
|
|
66
|
-
// return (
|
|
67
|
-
// <Toolbar>
|
|
68
|
-
// <Typography fontWeight="medium" sx={{ flex: 1, mx: 0.5 }}>
|
|
69
|
-
// Toolbar
|
|
70
|
-
// </Typography>
|
|
71
|
-
|
|
72
|
-
// <Tooltip title="Columns">
|
|
73
|
-
// <ColumnsPanelTrigger render={<ToolbarButton />}>
|
|
74
|
-
// <ViewColumnIcon fontSize="small" />
|
|
75
|
-
// </ColumnsPanelTrigger>
|
|
76
|
-
// </Tooltip>
|
|
77
|
-
|
|
78
|
-
// <Tooltip title="Filters">
|
|
79
|
-
// <FilterPanelTrigger
|
|
80
|
-
// render={(props, state) => (
|
|
81
|
-
// <ToolbarButton {...props} color="default">
|
|
82
|
-
// <Badge badgeContent={state.filterCount} color="primary" variant="dot">
|
|
83
|
-
// <FilterListIcon fontSize="small" />
|
|
84
|
-
// </Badge>
|
|
85
|
-
// </ToolbarButton>
|
|
86
|
-
// )}
|
|
87
|
-
// />
|
|
88
|
-
// </Tooltip>
|
|
89
|
-
|
|
90
|
-
// <Divider orientation="vertical" variant="middle" flexItem sx={{ mx: 0.5 }} />
|
|
91
|
-
|
|
92
|
-
// <Tooltip title="Export">
|
|
93
|
-
// <ToolbarButton
|
|
94
|
-
// ref={exportMenuTriggerRef}
|
|
95
|
-
// id="export-menu-trigger"
|
|
96
|
-
// aria-controls="export-menu"
|
|
97
|
-
// aria-haspopup="true"
|
|
98
|
-
// aria-expanded={exportMenuOpen ? 'true' : undefined}
|
|
99
|
-
// onClick={() => setExportMenuOpen(true)}
|
|
100
|
-
// >
|
|
101
|
-
// <FileDownloadIcon fontSize="small" />
|
|
102
|
-
// </ToolbarButton>
|
|
103
|
-
// </Tooltip>
|
|
104
|
-
|
|
105
|
-
// <Menu
|
|
106
|
-
// id="export-menu"
|
|
107
|
-
// anchorEl={exportMenuTriggerRef.current}
|
|
108
|
-
// open={exportMenuOpen}
|
|
109
|
-
// onClose={() => setExportMenuOpen(false)}
|
|
110
|
-
// anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}
|
|
111
|
-
// transformOrigin={{ vertical: 'top', horizontal: 'right' }}
|
|
112
|
-
// slotProps={{
|
|
113
|
-
// list: {
|
|
114
|
-
// 'aria-labelledby': 'export-menu-trigger',
|
|
115
|
-
// },
|
|
116
|
-
// }}
|
|
117
|
-
// >
|
|
118
|
-
// <ExportPrint render={<MenuItem />} onClick={() => setExportMenuOpen(false)}>
|
|
119
|
-
// Print
|
|
120
|
-
// </ExportPrint>
|
|
121
|
-
// <ExportCsv render={<MenuItem />} onClick={() => setExportMenuOpen(false)}>
|
|
122
|
-
// Download as CSV
|
|
123
|
-
// </ExportCsv>
|
|
124
|
-
// {/* Available to MUI X Premium users */}
|
|
125
|
-
// {/* <ExportExcel render={<MenuItem />}>
|
|
126
|
-
// Download as Excel
|
|
127
|
-
// </ExportExcel> */}
|
|
128
|
-
// </Menu>
|
|
129
|
-
|
|
130
|
-
// <StyledQuickFilter>
|
|
131
|
-
// <QuickFilterTrigger
|
|
132
|
-
// render={(triggerProps, state) => (
|
|
133
|
-
// <Tooltip title="Search" enterDelay={0}>
|
|
134
|
-
// <StyledToolbarButton
|
|
135
|
-
// {...triggerProps}
|
|
136
|
-
// ownerState={{ expanded: state.expanded }}
|
|
137
|
-
// color="default"
|
|
138
|
-
// aria-disabled={state.expanded}
|
|
139
|
-
// >
|
|
140
|
-
// <SearchIcon fontSize="small" />
|
|
141
|
-
// </StyledToolbarButton>
|
|
142
|
-
// </Tooltip>
|
|
143
|
-
// )}
|
|
144
|
-
// />
|
|
145
|
-
// <QuickFilterControl
|
|
146
|
-
// render={({ ref, ...controlProps }, state) => (
|
|
147
|
-
// <StyledTextField
|
|
148
|
-
// {...controlProps}
|
|
149
|
-
// ownerState={{ expanded: state.expanded }}
|
|
150
|
-
// inputRef={ref}
|
|
151
|
-
// aria-label="Search"
|
|
152
|
-
// placeholder="Search..."
|
|
153
|
-
// size="small"
|
|
154
|
-
// slotProps={{
|
|
155
|
-
// input: {
|
|
156
|
-
// startAdornment: (
|
|
157
|
-
// <InputAdornment position="start">
|
|
158
|
-
// <SearchIcon fontSize="small" />
|
|
159
|
-
// </InputAdornment>
|
|
160
|
-
// ),
|
|
161
|
-
// endAdornment: state.value ? (
|
|
162
|
-
// <InputAdornment position="end">
|
|
163
|
-
// <QuickFilterClear
|
|
164
|
-
// edge="end"
|
|
165
|
-
// size="small"
|
|
166
|
-
// aria-label="Clear search"
|
|
167
|
-
// material={{ sx: { marginRight: -0.75 } }}
|
|
168
|
-
// >
|
|
169
|
-
// <CancelIcon fontSize="small" />
|
|
170
|
-
// </QuickFilterClear>
|
|
171
|
-
// </InputAdornment>
|
|
172
|
-
// ) : null,
|
|
173
|
-
// ...controlProps.slotProps?.input,
|
|
174
|
-
// },
|
|
175
|
-
// ...controlProps.slotProps,
|
|
176
|
-
// }}
|
|
177
|
-
// />
|
|
178
|
-
// )}
|
|
179
|
-
// />
|
|
180
|
-
// </StyledQuickFilter>
|
|
181
|
-
// </Toolbar>
|
|
182
|
-
// );
|
|
183
|
-
// }
|
|
184
|
-
|
|
185
|
-
// export default function GridToolbar() {
|
|
186
|
-
// const { data, loading } = useDemoData({
|
|
187
|
-
// dataSet: 'Commodity',
|
|
188
|
-
// rowLength: 10,
|
|
189
|
-
// maxColumns: 10,
|
|
190
|
-
// });
|
|
191
|
-
|
|
192
|
-
// return (
|
|
193
|
-
// <div style={{ height: 400, width: '100%' }}>
|
|
194
|
-
// <DataGrid
|
|
195
|
-
// {...data}
|
|
196
|
-
// loading={loading}
|
|
197
|
-
// slots={{ toolbar: CustomToolbar }}
|
|
198
|
-
// showToolbar
|
|
199
|
-
// />
|
|
200
|
-
// </div>
|
|
201
|
-
// );
|
|
202
|
-
// }
|