import React from 'react'; import Question from './ResearchBlocks/Question'; import Answer from './ResearchBlocks/Answer'; import Sources from './ResearchBlocks/Sources'; import ImageSection from './ResearchBlocks/ImageSection'; import SubQuestions from './ResearchBlocks/elements/SubQuestions'; import LogsSection from './ResearchBlocks/LogsSection'; import AccessReport from './ResearchBlocks/AccessReport'; import { preprocessOrderedData } from '../utils/dataProcessing'; import { Data } from '../types/data'; interface ResearchResultsProps { orderedData: Data[]; answer: string; allLogs: any[]; chatBoxSettings: any; handleClickSuggestion: (value: string) => void; } export const ResearchResults: React.FC = ({ orderedData, answer, allLogs, chatBoxSettings, handleClickSuggestion }) => { const groupedData = preprocessOrderedData(orderedData); const pathData = groupedData.find(data => data.type === 'path'); const initialQuestion = groupedData.find(data => data.type === 'question'); const chatComponents = groupedData .filter(data => { if (data.type === 'question' && data === initialQuestion) { return false; } return (data.type === 'question' || data.type === 'chat'); }) .map((data, index) => { if (data.type === 'question') { return ; } else { return ; } }); const sourceComponents = groupedData .filter(data => data.type === 'sourceBlock') .map((data, index) => ( )); const imageComponents = groupedData .filter(data => data.type === 'imagesBlock') .map((data, index) => ( )); const initialReport = groupedData.find(data => data.type === 'reportBlock'); const finalReport = groupedData .filter(data => data.type === 'reportBlock') .pop(); const subqueriesComponent = groupedData.find(data => data.content === 'subqueries'); return ( <> {orderedData.length > 0 && } {initialQuestion && } {subqueriesComponent && ( )} {sourceComponents} {imageComponents} {finalReport && } {pathData && } {chatComponents} ); };