From d175e9fe568d328648d7475b936c1a0c79160c5c Mon Sep 17 00:00:00 2001 From: Petr Stefan Date: Sat, 9 Dec 2017 14:56:16 +0100 Subject: [PATCH] Identify tests by their ids --- .../EditSimpleLimitsForm.js | 16 +++++--------- src/helpers/exerciseSimpleForm.js | 22 +++++++++++++------ src/redux/modules/simpleLimits.js | 16 +++++++------- 3 files changed, 28 insertions(+), 26 deletions(-) diff --git a/src/components/forms/EditSimpleLimitsForm/EditSimpleLimitsForm.js b/src/components/forms/EditSimpleLimitsForm/EditSimpleLimitsForm.js index 40e2d09ae..c72060d0b 100644 --- a/src/components/forms/EditSimpleLimitsForm/EditSimpleLimitsForm.js +++ b/src/components/forms/EditSimpleLimitsForm/EditSimpleLimitsForm.js @@ -10,10 +10,7 @@ import FormBox from '../../widgets/FormBox'; import Button from '../../widgets/FlatButton'; import { RefreshIcon } from '../../icons'; -import { - encodeTestName, - encodeEnvironmentId -} from '../../../redux/modules/simpleLimits'; +import { encodeEnvironmentId } from '../../../redux/modules/simpleLimits'; import prettyMs from 'pretty-ms'; import styles from './styles.less'; @@ -129,10 +126,7 @@ const EditSimpleLimitsForm = ({ {environments.map(environment => { - const id = - encodeTestName(test.name) + - '.' + - encodeEnvironmentId(environment.id); + const id = test.id + '.' + encodeEnvironmentId(environment.id); return ( diff --git a/src/helpers/exerciseSimpleForm.js b/src/helpers/exerciseSimpleForm.js index b249fd7cd..83acef4d6 100644 --- a/src/helpers/exerciseSimpleForm.js +++ b/src/helpers/exerciseSimpleForm.js @@ -1,7 +1,6 @@ import yaml from 'js-yaml'; import { endpointDisguisedAsIdFactory, - encodeTestName, encodeEnvironmentId } from '../redux/modules/simpleLimits'; @@ -83,8 +82,12 @@ export const transformAndSendTestsValues = ( export const getSimpleConfigInitValues = (config, tests, locale) => { const confTests = - config[0] && config[0].tests - ? config[0].tests.sort((a, b) => a.name.localeCompare(b.name, locale)) + tests && config[0] && config[0].tests + ? config[0].tests.sort((a, b) => { + const aName = tests.find(test => test.id === a.name).name; + const bName = tests.find(test => test.id === b.name).name; + return aName.localeCompare(bName, locale); + }) : []; let res = []; @@ -171,6 +174,11 @@ export const getSimpleConfigInitValues = (config, tests, locale) => { res.push(testObj); } + // fill new tests with default judge + for (let i = confTests.length; i < tests.length; ++i) { + res.push({ judgeBinary: 'recodex-judge-normal' }); + } + return { config: res }; }; @@ -184,7 +192,7 @@ export const transformAndSendConfigValues = ( let testVars = []; for (let testIndex = 0; testIndex < sortedTests.length; ++testIndex) { const test = formData.config[testIndex]; - const testName = sortedTests[testIndex].name; + const testName = sortedTests[testIndex].id; let variables = []; variables.push({ @@ -306,7 +314,7 @@ export const getLimitsInitValues = ( let res = {}; tests.forEach(test => { - const testId = encodeTestName(test.name); + const testId = test.id; res[testId] = {}; environments.forEach(environment => { const envId = encodeEnvironmentId(environment.id); @@ -316,7 +324,7 @@ export const getLimitsInitValues = ( runtimeEnvironmentId: environment.id }), 'data', - test.name + String(testId) ]); if (lim) { lim = lim.toJS(); @@ -348,7 +356,7 @@ export const transformAndSendLimitsValues = ( const envId = encodeEnvironmentId(environment.id); const data = { limits: tests.reduce((acc, test) => { - acc[test.name] = formData.limits[encodeTestName(test.name)][envId]; + acc[test.id] = formData.limits[test.id][envId]; return acc; }, {}) }; diff --git a/src/redux/modules/simpleLimits.js b/src/redux/modules/simpleLimits.js index 210cd1d47..adf87b3a9 100644 --- a/src/redux/modules/simpleLimits.js +++ b/src/redux/modules/simpleLimits.js @@ -53,23 +53,23 @@ export const editEnvironmentSimpleLimits = ( * Special functions for cloning buttons */ -// Encoding function which help us avoid problems with some characters in test names and env ids (e.g., character '.'). -export const encodeTestName = testName => 'test' + btoa(testName); +// Encoding function which help us avoid problems with some characters in env ids (e.g., character '.'). export const encodeEnvironmentId = envId => 'env' + btoa(envId); // Get a single value by its test name, environment ID, and field identifier const getSimpleLimitsOf = ( { form }, formName, - testName, + testId, runtimeEnvironmentId, field ) => { - const testEnc = encodeTestName(testName); const envEnc = encodeEnvironmentId(runtimeEnvironmentId); + console.log(testId); + console.log(form[formName].values.limits); return ( - form[formName].values.limits[testEnc][envEnc][field] || - form[formName].initial.limits[testName][envEnc][field] || + form[formName].values.limits[testId][envEnc][field] || + form[formName].initial.limits[testId][envEnc][field] || null ); }; @@ -78,11 +78,11 @@ const getSimpleLimitsOf = ( const getTargetFormKeys = ( { form }, // form key in the store formName, // form identifier - testName, // test name or null (if all test should be targetted) + testId, // test id or null (if all test should be targetted) environmentId, // environment ID or null (if all environments should be targetted) field // field identifier (memory or wall-time) ) => { - const testEnc = testName ? encodeTestName(testName) : null; + const testEnc = testId || null; const envEnc = environmentId ? encodeEnvironmentId(environmentId) : null; return form && form[formName] && form[formName].registeredFields ? Object.keys(form[formName].registeredFields).filter(key => {