From a652c2c4db919e6ae7781740af2eb4981e92c789 Mon Sep 17 00:00:00 2001 From: Martin Krulis Date: Fri, 15 Mar 2019 00:06:35 +0100 Subject: [PATCH] Adding Prolog environment to config structures and environment edit form. --- .../EditEnvironmentSimpleForm.js | 27 ++++++++++++------- src/helpers/exercise/environments.js | 7 +++++ src/locales/cs.json | 2 +- src/locales/en.json | 2 +- src/locales/whitelist_en.json | 2 +- 5 files changed, 28 insertions(+), 12 deletions(-) diff --git a/src/components/forms/EditEnvironmentSimpleForm/EditEnvironmentSimpleForm.js b/src/components/forms/EditEnvironmentSimpleForm/EditEnvironmentSimpleForm.js index 8eb893a1f..5a81c6453 100644 --- a/src/components/forms/EditEnvironmentSimpleForm/EditEnvironmentSimpleForm.js +++ b/src/components/forms/EditEnvironmentSimpleForm/EditEnvironmentSimpleForm.js @@ -8,6 +8,7 @@ import { CheckboxField } from '../Fields'; import SubmitButton from '../SubmitButton'; import Button from '../../widgets/FlatButton'; import { RefreshIcon } from '../../icons'; +import { STANDALONE_ENVIRONMENTS } from '../../../helpers/exercise/environments'; class EditEnvironmentSimpleForm extends Component { render() { @@ -97,24 +98,32 @@ EditEnvironmentSimpleForm.propTypes = { intl: intlShape.isRequired, }; -const validate = formData => { +const validate = (formData, { runtimeEnvironments }) => { const errors = {}; const allowedEnvrionmentsCount = Object.values(formData).filter(value => value === true || value === 'true').length; if (allowedEnvrionmentsCount === 0) { - errors['_error'] = ( + errors._error = ( ); - } else if (formData['data-linux'] && allowedEnvrionmentsCount > 1) { - errors['_error'] = ( - - ); + } else if (allowedEnvrionmentsCount > 1) { + const standaloneEnvs = STANDALONE_ENVIRONMENTS.filter(envId => formData[envId]).map(envId => { + const env = runtimeEnvironments.find(({ id }) => id === envId); + return env && env.name; + }); + + if (standaloneEnvs.length > 0) { + errors._error = ( + + ); + } } return errors; }; diff --git a/src/helpers/exercise/environments.js b/src/helpers/exercise/environments.js index 8e8734043..3b0189163 100644 --- a/src/helpers/exercise/environments.js +++ b/src/helpers/exercise/environments.js @@ -15,8 +15,15 @@ const SIMPLE_FORM_ENVIRONMENTS = [ 'node-linux', 'php-linux', 'python3', + 'prolog', ]; +/** + * List of environments that must stand alone + * (exercise must be configured solely for this environment). + */ +export const STANDALONE_ENVIRONMENTS = ['data-linux', 'prolog']; + const SIMPLE_FORM_ENVIRONMENTS_INDEX = createIndex(SIMPLE_FORM_ENVIRONMENTS); export const onlySimpleEnvironments = defaultMemoize(environments => diff --git a/src/locales/cs.json b/src/locales/cs.json index a4a3d69c7..f047f1c44 100644 --- a/src/locales/cs.json +++ b/src/locales/cs.json @@ -223,8 +223,8 @@ "app.editEnvironmentSimpleForm.submit": "Uložit prostředí", "app.editEnvironmentSimpleForm.submitting": "Ukládám...", "app.editEnvironmentSimpleForm.success": "Konfigurace byla změněna.", - "app.editEnvironmentSimpleForm.validation.dataOnlyCollision": "Běhové prostředí data-only (pouze data) není možné kombinovat s libovolným jiným běhovým prostředím.", "app.editEnvironmentSimpleForm.validation.environments": "Přidejte prosím alespoň jedno běhové prostředí.", + "app.editEnvironmentSimpleForm.validation.standaloneEnvironmentsCollisions": "Některá vybraná běhová prostředí ({envs}) nemohou být kombinovaná s jinými. Odeberte tato běhová prostředí, nebo zajistěte, že bude vybrané právě jedno z nich.", "app.editExercise.deleteExercise": "Smazat úlohu", "app.editExercise.deleteExerciseWarning": "Smazání úlohy odstraní všechna studentská řešení a všechna zadání této úlohy.", "app.editExercise.description": "Změna nastavení úlohy", diff --git a/src/locales/en.json b/src/locales/en.json index fb49976b1..ea4b41694 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -223,8 +223,8 @@ "app.editEnvironmentSimpleForm.submit": "Save Environments", "app.editEnvironmentSimpleForm.submitting": "Saving Environments...", "app.editEnvironmentSimpleForm.success": "Environments Saved.", - "app.editEnvironmentSimpleForm.validation.dataOnlyCollision": "Data-Only environment cannot be combined with any other environment.", "app.editEnvironmentSimpleForm.validation.environments": "Please add at least one runtime environment.", + "app.editEnvironmentSimpleForm.validation.standaloneEnvironmentsCollisions": "Some of the selected environments ({envs}) cannot be combined with any other environment. You need to deselect these environment(s) or make sure only one environment is selected.", "app.editExercise.deleteExercise": "Delete the exercise", "app.editExercise.deleteExerciseWarning": "Deleting an exercise will remove all the students submissions and all assignments.", "app.editExercise.description": "Change exercise settings", diff --git a/src/locales/whitelist_en.json b/src/locales/whitelist_en.json index 31cffae49..9f3ff5e5e 100644 --- a/src/locales/whitelist_en.json +++ b/src/locales/whitelist_en.json @@ -223,8 +223,8 @@ "app.editEnvironmentSimpleForm.submit", "app.editEnvironmentSimpleForm.submitting", "app.editEnvironmentSimpleForm.success", - "app.editEnvironmentSimpleForm.validation.dataOnlyCollision", "app.editEnvironmentSimpleForm.validation.environments", + "app.editEnvironmentSimpleForm.validation.standaloneEnvironmentsCollisions", "app.editExercise.deleteExercise", "app.editExercise.deleteExerciseWarning", "app.editExercise.description",