diff --git a/src/components/report-viewer/report-viewer.jsx b/src/components/report-viewer/report-viewer.jsx index ed7be735e1..1347efab61 100644 --- a/src/components/report-viewer/report-viewer.jsx +++ b/src/components/report-viewer/report-viewer.jsx @@ -35,7 +35,6 @@ export default function ReportViewer({ report, reportType }) { const [reportVerticalPositionFromTop, setReportVerticalPositionFromTop] = useState(undefined); const [isLogLoading, , fetchReportLogs] = useReportFetcher(reportType); - const [displayedSelectedReportId, setDisplayedSelectedReportId] = useState(null); const selectedReportId = useSelector((state) => state.reportSelectedReportId); const severityFilter = useSelector((state) => state.reportSeverityFilter); const messageFilter = useSelector((state) => state.reportMessageFilter); @@ -91,10 +90,7 @@ export default function ReportViewer({ report, reportType }) { ); useEffect(() => { - //refresh the logs when we change the filters - if (selectedReportId != null) { - refreshLogsOnSelectedReport(selectedReportId, severityFilter, messageFilter); - } + refreshLogsOnSelectedReport(selectedReportId, severityFilter, messageFilter); }, [messageFilter, severityFilter, selectedReportId, refreshLogsOnSelectedReport]); useEffect(() => { @@ -102,10 +98,7 @@ export default function ReportViewer({ report, reportType }) { treeView.current = initializeTreeDataAndComponent(reportTree); setExpandedTreeReports([report.id]); setLogs(mapReportLog(report, reportTree.severities)); - // we don't dispatch the new report id on initialisation because we don't want trigger the refreshLogsOnSelectedReport - // that fetch the logs (right part), since the first request return both the tree and the logs - dispatch(setReportFilters(null, '', getDefaultSeverityFilter(reportTree.severities))); - setDisplayedSelectedReportId(report.id); + dispatch(setReportFilters(report.id, '', getDefaultSeverityFilter(reportTree.severities))); }, [report, initializeTreeDataAndComponent, dispatch]); const handleReportVerticalPositionFromTop = useCallback((node) => { @@ -113,7 +106,6 @@ export default function ReportViewer({ report, reportType }) { }, []); const handleSelectNode = (_, reportId) => { - setDisplayedSelectedReportId(reportId); if (selectedReportId !== reportId) { dispatch( setReportFilters(reportId, '', getDefaultSeverityFilter(reportTreeData.current[reportId].severities)) @@ -165,7 +157,7 @@ export default function ReportViewer({ report, reportType }) { {/*TODO do we need to useMemo/useCallback these props to avoid rerenders ?*/} ) { return report; } +function prettifyReportLogMessage(reports: ReportLog[], nodesNames: Map) { + reports.forEach((report) => { + if (report.parentId == null) { + if (report.message !== ROOT_NODE_LABEL) { + report.message = nodesNames?.get(report.message) ?? report.message; + } + } + }); + return reports; +} + export const useReportFetcher = ( computingAndNetworkModificationType: keyof typeof COMPUTING_AND_NETWORK_MODIFICATION_TYPE ): [ @@ -106,7 +117,6 @@ export const useReportFetcher = ( const fetchReportLogs = useCallback( (reportId: string, severityList: string[], reportType: ReportType, messageFilter: string) => { let fetchPromise: (severityList: string[], reportId: string) => Promise; - if (reportType === REPORT_TYPE.GLOBAL) { fetchPromise = (severityList: string[]) => fetchNodeReportLogs(studyUuid, currentNode!.id, null, severityList, messageFilter, true); @@ -115,10 +125,10 @@ export const useReportFetcher = ( fetchNodeReportLogs(studyUuid, currentNode!.id, reportId, severityList, messageFilter, false); } return fetchPromise(severityList, reportId).then((r) => { - return r; + return prettifyReportLogMessage(r, nodesNames); }); }, - [currentNode, studyUuid] + [currentNode, studyUuid, nodesNames] ); return [isLoading, fetchRawParentReport, fetchReportLogs]; diff --git a/src/services/study/index.js b/src/services/study/index.js index 3146efdec6..e256261d10 100644 --- a/src/services/study/index.js +++ b/src/services/study/index.js @@ -84,9 +84,9 @@ export function fetchNodeReport(studyUuid, nodeUuid, reportId, severityFilterLis return backendFetchJson(url); } -export function fetchNodeReportLogs(studyUuid, nodeUuid, reportId, severityFilterList, messageFilter, withParentNodes) { +export function fetchNodeReportLogs(studyUuid, nodeUuid, reportId, severityFilterList, messageFilter, isGlobalLogs) { let url; - if (withParentNodes) { + if (isGlobalLogs) { url = getStudyUrlWithNodeUuid(studyUuid, nodeUuid) + '/report/logs?'; } else { url = getStudyUrlWithNodeUuid(studyUuid, nodeUuid) + '/report/' + reportId + '/logs?';