diff --git a/src/components/Assignments/SolutionsTable/SolutionsTableRow.js b/src/components/Assignments/SolutionsTable/SolutionsTableRow.js
index 6e382b1ff..f4dd4ffdd 100644
--- a/src/components/Assignments/SolutionsTable/SolutionsTableRow.js
+++ b/src/components/Assignments/SolutionsTable/SolutionsTableRow.js
@@ -11,7 +11,7 @@ import DeleteSolutionButtonContainer from '../../../containers/DeleteSolutionBut
import AcceptSolutionContainer from '../../../containers/AcceptSolutionContainer';
import ReviewSolutionContainer from '../../../containers/ReviewSolutionContainer';
-import { SearchIcon } from '../../icons';
+import { DetailIcon } from '../../icons';
import DateTime from '../../widgets/DateTime';
import OptionalTooltipWrapper from '../../widgets/OptionalTooltipWrapper';
import Button, { TheButtonGroup } from '../../widgets/TheButton';
@@ -130,7 +130,7 @@ const SolutionsTableRow = ({
tooltipId={`detail-${id}`}>
diff --git a/src/components/Exercises/ReferenceSolutionsTable/ReferenceSolutionsTable.js b/src/components/Exercises/ReferenceSolutionsTable/ReferenceSolutionsTable.js
index f784be8b4..eb1597e84 100644
--- a/src/components/Exercises/ReferenceSolutionsTable/ReferenceSolutionsTable.js
+++ b/src/components/Exercises/ReferenceSolutionsTable/ReferenceSolutionsTable.js
@@ -19,9 +19,12 @@ const ReferenceSolutionsTable = ({
|
-
+ |
|
+
+
+ |
|
diff --git a/src/components/Exercises/ReferenceSolutionsTable/ReferenceSolutionsTableRow.js b/src/components/Exercises/ReferenceSolutionsTable/ReferenceSolutionsTableRow.js
index ad6be78a2..402161a34 100644
--- a/src/components/Exercises/ReferenceSolutionsTable/ReferenceSolutionsTableRow.js
+++ b/src/components/Exercises/ReferenceSolutionsTable/ReferenceSolutionsTableRow.js
@@ -1,9 +1,10 @@
import React from 'react';
import PropTypes from 'prop-types';
-import { FormattedMessage } from 'react-intl';
+import { FormattedMessage, FormattedNumber } from 'react-intl';
+import { OverlayTrigger, Tooltip } from 'react-bootstrap';
import EnvironmentsListItem from '../../helpers/EnvironmentsList/EnvironmentsListItem';
-import Icon from '../../icons';
+import Icon, { EvaluationFailedIcon, LoadingIcon } from '../../icons';
import UsersNameContainer from '../../../containers/UsersNameContainer';
import DateTime from '../../widgets/DateTime';
@@ -14,6 +15,7 @@ const ReferenceSolutionsTableRow = ({
permissionHints = null,
authorId,
createdAt,
+ lastSubmission,
runtimeEnvironments,
renderButtons,
}) => {
@@ -25,7 +27,7 @@ const ReferenceSolutionsTableRow = ({
|
-
+ |
{description || (
@@ -40,7 +42,44 @@ const ReferenceSolutionsTableRow = ({
|
|
- {rte ? : '-'} |
+
+ {rte ? : '-'}
+ |
+
+ {!lastSubmission || (!lastSubmission.evaluation && !lastSubmission.failure) ? (
+
+
+
+ }>
+
+
+ ) : lastSubmission.failure ? (
+
+ {lastSubmission.failure.description || (
+
+ )}
+
+ }>
+
+
+ ) : (
+
+
+
+ )}
+ |
|
@@ -55,6 +94,7 @@ ReferenceSolutionsTableRow.propTypes = {
runtimeEnvironmentId: PropTypes.string.isRequired,
authorId: PropTypes.string.isRequired,
createdAt: PropTypes.number.isRequired,
+ lastSubmission: PropTypes.object,
runtimeEnvironments: PropTypes.array.isRequired,
permissionHints: PropTypes.object,
renderButtons: PropTypes.func.isRequired,
diff --git a/src/components/icons/index.js b/src/components/icons/index.js
index a64161c09..b4157562d 100644
--- a/src/components/icons/index.js
+++ b/src/components/icons/index.js
@@ -32,6 +32,7 @@ export const ChatIcon = props => ;
export const DashboardIcon = props => ;
export const DeadlineIcon = props => ;
export const DeleteIcon = props => ;
+export const DetailIcon = props => ;
export const DownloadIcon = props => ;
export const EditIcon = props => ;
export const EditAssignmentIcon = EditIcon;
diff --git a/src/locales/cs.json b/src/locales/cs.json
index 6398f12db..2281d39b5 100644
--- a/src/locales/cs.json
+++ b/src/locales/cs.json
@@ -1196,6 +1196,7 @@
"app.referenceSolutionDetail.exercise": "Úloha",
"app.referenceSolutionDetail.title.details": "Detail referenčního řešení",
"app.referenceSolutionTable.noDescription": "popis nebyl uveden",
+ "app.referenceSolutionTable.stillEvaluating": "Poslední vyhodnocení selhalo",
"app.registration.external.gotoSignin": "Stránka přihlášení",
"app.registration.external.link": "Navštívit stránky podpory",
"app.registration.external.mail": "Kontaktovat podporu",
@@ -1621,6 +1622,7 @@
"generic.author": "Autor",
"generic.clearAll": "Zrušit vše",
"generic.close": "Zavřít",
+ "generic.correctness": "Správnost",
"generic.create": "Vytvořit",
"generic.created": "Vytvořeno",
"generic.createdAt": "Vytvořeno",
diff --git a/src/locales/en.json b/src/locales/en.json
index f50d8a7e3..ceb219b1f 100644
--- a/src/locales/en.json
+++ b/src/locales/en.json
@@ -1196,6 +1196,7 @@
"app.referenceSolutionDetail.exercise": "Exercise",
"app.referenceSolutionDetail.title.details": "Reference Solution Detail",
"app.referenceSolutionTable.noDescription": "no description given",
+ "app.referenceSolutionTable.stillEvaluating": "Last evaluation failed",
"app.registration.external.gotoSignin": "Sign-in Page",
"app.registration.external.link": "Visit Help Page",
"app.registration.external.mail": "Contact Support",
@@ -1621,6 +1622,7 @@
"generic.author": "Author",
"generic.clearAll": "Clear All",
"generic.close": "Close",
+ "generic.correctness": "Correctness",
"generic.create": "Create",
"generic.created": "Created",
"generic.createdAt": "Created at",
diff --git a/src/pages/AssignmentStats/AssignmentStats.js b/src/pages/AssignmentStats/AssignmentStats.js
index 40dd851af..046e88de1 100644
--- a/src/pages/AssignmentStats/AssignmentStats.js
+++ b/src/pages/AssignmentStats/AssignmentStats.js
@@ -15,7 +15,7 @@ import CommentThreadContainer from '../../containers/CommentThreadContainer';
import Page from '../../components/layout/Page';
import { AssignmentNavigation } from '../../components/layout/Navigation';
-import { ChatIcon, DownloadIcon, SearchIcon, ResultsIcon, UserIcon } from '../../components/icons';
+import { ChatIcon, DownloadIcon, DetailIcon, ResultsIcon, UserIcon } from '../../components/icons';
import SolutionTableRowIcons from '../../components/Assignments/SolutionsTable/SolutionTableRowIcons';
import UsersName from '../../components/Users/UsersName';
import Points from '../../components/Assignments/SolutionsTable/Points';
@@ -164,7 +164,7 @@ const prepareTableColumnDescriptors = defaultMemoize((loggedUserId, assignmentId
{solution.permissionHints && solution.permissionHints.viewDetail && (
diff --git a/src/pages/Exercise/Exercise.js b/src/pages/Exercise/Exercise.js
index f7404154e..06f8aa87a 100644
--- a/src/pages/Exercise/Exercise.js
+++ b/src/pages/Exercise/Exercise.js
@@ -16,7 +16,7 @@ import ResourceRenderer from '../../components/helpers/ResourceRenderer';
import ReferenceSolutionsTable from '../../components/Exercises/ReferenceSolutionsTable';
import SubmitSolutionContainer from '../../containers/SubmitSolutionContainer';
import Box from '../../components/widgets/Box';
-import { ExerciseIcon, SendIcon, DeleteIcon } from '../../components/icons';
+import { ExerciseIcon, DetailIcon, DeleteIcon } from '../../components/icons';
import Confirm from '../../components/forms/Confirm';
import ExerciseCallouts, { exerciseCalloutsAreVisible } from '../../components/Exercises/ExerciseCallouts';
import ForkExerciseForm from '../../components/forms/ForkExerciseForm';
@@ -217,7 +217,7 @@ class Exercise extends Component {
diff --git a/src/pages/GroupUserSolutions/GroupUserSolutions.js b/src/pages/GroupUserSolutions/GroupUserSolutions.js
index 420bb7658..c05aa3bb0 100644
--- a/src/pages/GroupUserSolutions/GroupUserSolutions.js
+++ b/src/pages/GroupUserSolutions/GroupUserSolutions.js
@@ -13,7 +13,7 @@ import ReviewSolutionContainer from '../../containers/ReviewSolutionContainer';
import Page from '../../components/layout/Page';
import { GroupNavigation } from '../../components/layout/Navigation';
-import { AssignmentIcon, SearchIcon, UserIcon } from '../../components/icons';
+import { AssignmentIcon, DetailIcon, UserIcon } from '../../components/icons';
import SolutionTableRowIcons from '../../components/Assignments/SolutionsTable/SolutionTableRowIcons';
import Points from '../../components/Assignments/SolutionsTable/Points';
import SolutionsTable from '../../components/Assignments/SolutionsTable';
@@ -183,7 +183,7 @@ const prepareTableColumnDescriptors = defaultMemoize((assignments, groupId, loca
{solution.permissionHints && solution.permissionHints.viewDetail && (