diff --git a/src/api/getMyEntries.js b/src/api/getMyEntries.js index 6b53a24..b1f6454 100644 --- a/src/api/getMyEntries.js +++ b/src/api/getMyEntries.js @@ -1,15 +1,47 @@ import {API} from '../utils/globals'; import KeyCloakService from '../services/KeyCloakService'; -const getMyEntries = (challengeName, setDataState, setLoadingState) => { +const getMyEntries = (challengeName, setDataOriginalState, setDataState, setLoadingState) => { fetch(`${API}/challenge-my-submissions/${challengeName}`, { headers: {'Authorization': `Bearer ${KeyCloakService.getToken()}`} }) .then(response => response.json()) .then(data => { - setDataState(data); - if (setLoadingState) - console.log(data); + setDataOriginalState(data); + let item = {}; + let result = []; + let tests = data.tests; + for (let submission of data.submissions) { + for (let evaluation of submission.evaluations) { + item = { + ...item, + evaluations: { + ...item.evaluations, + [`${evaluation.test.metric}.${evaluation.test.name}`]: evaluation.score + } + }; + } + for (let test of tests) { + if (!Object.hasOwn(item.evaluations, `${test.metric}.${test.name}`)) { + item = { + ...item, + evaluations: { + ...item.evaluations, + [`${test.metric}.${test.name}`]: '-1' + } + }; + } + } + item = { + ...item, + id: submission.id, + submitter: submission.submitter, + when: submission.when, + }; + result.push(item); + item = {}; + } + setDataState(result); setLoadingState(false); }); }; diff --git a/src/components/elements/Table.js b/src/components/elements/Table.js index 9c377c6..15f3b0f 100644 --- a/src/components/elements/Table.js +++ b/src/components/elements/Table.js @@ -29,9 +29,37 @@ const Table = (props) => { ); }; + const metricsRender = (elem) => { + if (!props.iterableColumnElement) + return <>>; + if (Array.isArray(elem[props.iterableColumnElement.name])) + elem = elem[props.iterableColumnElement.name]; + else { + let newElem = []; + for (let metric of props.possibleMetrics) { + if (elem[props.iterableColumnElement.name][metric] === '-1') + newElem.push('N/A'); + else + newElem.push(elem[props.iterableColumnElement.name][metric]); + } + elem = newElem; + } + return ( + elem.map((iterableElem, i) => { + return ( +
+ {props.iterableColumnElement.format ? + props.iterableColumnElement.format(iterableElem) : iterableElem} + + ); + }) + ); + }; + const desktopRender = () => { const n = (props.pageNr - 1) * (ELEMENTS_PER_PAGE * 2); - console.log(props.elements); let elementsToMap = props.elements.slice(n, n + (ELEMENTS_PER_PAGE * 2)); return (