From afef4732411783cb93cbb093c8bed05729754df5 Mon Sep 17 00:00:00 2001 From: rbisson <remi.bisson@inrae.fr> Date: Wed, 18 Dec 2024 22:19:47 +0100 Subject: [PATCH 1/6] [SearchMap] added total points length display in selected points list --- src/pages/maps/SearchMap.js | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/pages/maps/SearchMap.js b/src/pages/maps/SearchMap.js index 7a3a913..bdb249c 100644 --- a/src/pages/maps/SearchMap.js +++ b/src/pages/maps/SearchMap.js @@ -639,6 +639,19 @@ const SearchMap = ({ return points; }; + const getPoints = () => { + const pointsSource = map.getLayers().item(getLayerIndex('queryResults')).getSource(); + const features = pointsSource.getFeatures(); + if (!features) { + return []; + } + const points = []; + features.forEach((feature) => { + points.push(feature.getProperties()); + }); + return points; + }; + // Unselect a single point. Remove it from map display and from selected points ids list. const unselectPoint = (id, source) => { let newSelectedPointsIds = selectedPointsIds; @@ -722,6 +735,7 @@ const SearchMap = ({ }; let selectedPointsList; + let totalPoints = getPoints(); let selectedPoints = getSelectedPoints(); if (selectedPoints.length === 0) { selectedPointsList = <p>{t('maps:selectedPointsList.empty')}</p>; @@ -734,7 +748,8 @@ const SearchMap = ({ <EuiFlexGroup direction={'column'}> <EuiTitle size="s"> <p> - {t('maps:selectedPointsList.title')} ({selectedPoints.length}) + {t('maps:selectedPointsList.title')} ({selectedPoints.length} /{' '} + {totalPoints.length}) </p> </EuiTitle> <EuiFlexGroup direction={'column'} style={styles.selectedPointsList}> -- GitLab From 738b3386516d98ec141c8aa8b9f248559a5b3b69 Mon Sep 17 00:00:00 2001 From: rbisson <remi.bisson@inrae.fr> Date: Wed, 18 Dec 2024 22:23:41 +0100 Subject: [PATCH 2/6] [SearchMap] Added a disable attribute on empty selection button --- src/pages/maps/SearchMap.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/pages/maps/SearchMap.js b/src/pages/maps/SearchMap.js index bdb249c..709cbd3 100644 --- a/src/pages/maps/SearchMap.js +++ b/src/pages/maps/SearchMap.js @@ -851,6 +851,8 @@ const SearchMap = ({ <EuiButton onClick={() => unselectPoints()} style={styles.unselectAllButton} + color={'accent'} + disabled={selectedPointsIds.length === 0} > {t('maps:layersTable.selectionTool.unselectAll')} </EuiButton> -- GitLab From 08a4d10a2ed3c1251f0c321255ee641c3e426393 Mon Sep 17 00:00:00 2001 From: rbisson <remi.bisson@inrae.fr> Date: Thu, 19 Dec 2024 09:15:11 +0100 Subject: [PATCH 3/6] [ResultsTable] Replaced default fields used when user has none --- src/pages/results/ResultsTableMUI.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/pages/results/ResultsTableMUI.js b/src/pages/results/ResultsTableMUI.js index f3eb2c7..b34d07e 100644 --- a/src/pages/results/ResultsTableMUI.js +++ b/src/pages/results/ResultsTableMUI.js @@ -44,9 +44,10 @@ const ResultsTableMUI = ({ const userStdFieldsIds = await fetchUserFieldsDisplaySettings( sessionStorage.getItem('userId') ); + const defaultStdFieldsIds = [1, 20, 36, 9, 31, 13]; // TODO replace hard-coded array by gatekeeper fetch on default settings // If no userStdFields, use system default ones. - setUserFieldsIds(userStdFieldsIds || [1]); + setUserFieldsIds(userStdFieldsIds || defaultStdFieldsIds); }; fetchData(); }, [searchResults]); -- GitLab From 2da3a2a4c246661a093688973c60d0bec810132d Mon Sep 17 00:00:00 2001 From: rbisson <remi.bisson@inrae.fr> Date: Thu, 19 Dec 2024 09:41:19 +0100 Subject: [PATCH 4/6] [ResultsTableMUI] added a way to display arrays first element when possible --- src/pages/results/ResultsTableMUI.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/pages/results/ResultsTableMUI.js b/src/pages/results/ResultsTableMUI.js index b34d07e..6678fa4 100644 --- a/src/pages/results/ResultsTableMUI.js +++ b/src/pages/results/ResultsTableMUI.js @@ -76,7 +76,14 @@ const ResultsTableMUI = ({ // Returns value from JSON obj associated to key string. const getValueByPath = (obj, path) => { - return path.split('.').reduce((acc, key) => acc && acc[key], obj); + return path.split('.').reduce((acc, key) => { + if (Array.isArray(acc)) { + // For objects with cardinality, defaults to the first element of the array + // TODO add a way to view other elements of the array when possible. + acc = acc[0]; + } + return acc && acc[key]; + }, obj); }; const rows = useMemo(() => { -- GitLab From 053c45275253c4c555ca50375f9ec9024d7cf584 Mon Sep 17 00:00:00 2001 From: rbisson <remi.bisson@inrae.fr> Date: Thu, 19 Dec 2024 09:45:23 +0100 Subject: [PATCH 5/6] [Profile/UserFieldsDisplaySettings] removed now useless disable attribute on some fields --- src/pages/profile/UserFieldsDisplaySettings.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/pages/profile/UserFieldsDisplaySettings.js b/src/pages/profile/UserFieldsDisplaySettings.js index 575ea84..2984427 100644 --- a/src/pages/profile/UserFieldsDisplaySettings.js +++ b/src/pages/profile/UserFieldsDisplaySettings.js @@ -74,7 +74,6 @@ const UserFieldsDisplaySettings = ({ userSettings, setUserSettings, publicFields id: field.id, label: buildFieldName(field.field_name), checked: isOptionChecked(field.id), - disabled: field.field_type === 'List', toolTipContent: field.definition_and_comment, toolTipProps: { position: 'bottom' }, }); -- GitLab From 99dd6b2da3e8e3016256502b95be1f121da24dc3 Mon Sep 17 00:00:00 2001 From: rbisson <remi.bisson@inrae.fr> Date: Thu, 19 Dec 2024 10:36:33 +0100 Subject: [PATCH 6/6] [ResultsTableMUI] added width limit and text truncation on columns ; now sorting columns alphabetically --- src/pages/results/ResultsTableMUI.js | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/pages/results/ResultsTableMUI.js b/src/pages/results/ResultsTableMUI.js index 6678fa4..1a7b22b 100644 --- a/src/pages/results/ResultsTableMUI.js +++ b/src/pages/results/ResultsTableMUI.js @@ -68,9 +68,25 @@ const ResultsTableMUI = ({ dataColumns.push({ name: publicField.field_name, label: buildFieldName(publicField.field_name), - options: { display: userFieldsIds.includes(publicField.id) }, + options: { + display: userFieldsIds.includes(publicField.id), + customBodyRenderLite: (dataIndex, rowIndex) => { + let value = rows[rowIndex][publicField.field_name]; + if (value && value.length >= 150) { + value = value.substring(0, 150) + ' ...'; + } + return value; + }, + setCellProps: () => ({ + style: { + maxWidth: '350px', + }, + }), + }, }); }); + // sort columns alphabetically for clarity + dataColumns.sort((a, b) => (a.name > b.name ? 1 : -1)); return dataColumns; }, [publicFields, userFieldsIds]); @@ -183,6 +199,10 @@ const ResultsTableMUI = ({ filter: true, filterType: 'textField', responsive: 'standard', + draggableColumns: { + enabled: true, + transitionTime: 200, + }, selectableRows: 'multiple', selectableRowsOnClick: false, rowsSelected: selectedRows, -- GitLab