Skip to content

Commit

Permalink
Refactoring simple config test component.
Browse files Browse the repository at this point in the history
  • Loading branch information
Martin Krulis committed Mar 24, 2019
1 parent a652c2c commit c784523
Show file tree
Hide file tree
Showing 8 changed files with 724 additions and 561 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,7 @@ const validateCustomJudge = value =>

class EditExerciseSimpleConfigDataTest extends Component {
render() {
const { supplementaryFiles, testName, test, testErrors, smartFill, change, intl } = this.props;
const supplementaryFilesOptions = supplementaryFiles
.sort((a, b) => a.name.localeCompare(b.name, intl.locale))
.filter((item, pos, arr) => arr.indexOf(item) === pos) // WTF?
.map(data => ({
key: data.name,
name: data.name,
}));
const { supplementaryFiles, testName, test, testErrors, smartFill, change } = this.props;
return (
<div className="configRow">
<Row>
Expand All @@ -46,7 +39,7 @@ class EditExerciseSimpleConfigDataTest extends Component {
<FieldArray
name={`${test}.input-files`}
component={ExpandingInputFilesField}
options={supplementaryFilesOptions}
options={supplementaryFiles}
change={change}
leftLabel={
<FormattedMessage
Expand Down Expand Up @@ -124,7 +117,7 @@ class EditExerciseSimpleConfigDataTest extends Component {
<Field
name={`${test}.custom-judge`}
component={SelectField}
options={supplementaryFilesOptions}
options={supplementaryFiles}
addEmptyOption={true}
validate={validateCustomJudge}
label={
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { reduxForm, getFormValues } from 'redux-form';
import { connect } from 'react-redux';
import { FormattedMessage, injectIntl, intlShape } from 'react-intl';
import { Alert } from 'react-bootstrap';
import { defaultMemoize } from 'reselect';

import FormBox from '../../widgets/FormBox';
import Button from '../../widgets/FlatButton';
Expand All @@ -27,6 +28,16 @@ import {
} from '../../../redux/modules/exerciseConfigs';
import { exerciseConfigFormErrors } from '../../../redux/selectors/exerciseConfigs';

const supplementaryFilesOptions = defaultMemoize((files, locale) =>
files
.sort((a, b) => a.name.localeCompare(b.name, locale))
.filter((item, pos, arr) => arr.indexOf(item) === pos) // WTF?
.map(data => ({
key: data.name,
name: data.name,
}))
);

class EditExerciseSimpleConfigForm extends Component {
render() {
const {
Expand Down Expand Up @@ -105,8 +116,7 @@ class EditExerciseSimpleConfigForm extends Component {
return dataOnly ? (
<EditExerciseSimpleConfigDataTest
key={idx}
environmentsWithEntryPoints={environmentsWithEntryPoints}
supplementaryFiles={files}
supplementaryFiles={supplementaryFilesOptions(files, locale)}
testName={test.name}
test={'config.' + encodeNumId(test.id)}
testErrors={formErrors && formErrors[encodeNumId(test.id)]}
Expand All @@ -115,21 +125,21 @@ class EditExerciseSimpleConfigForm extends Component {
/>
) : (
<EditExerciseSimpleConfigTest
key={idx}
change={change}
environmentsWithEntryPoints={environmentsWithEntryPoints}
exercise={exercise}
extraFiles={testData && testData['extra-files']}
jarFiles={testData && testData['jar-files']}
useOutFile={testData && testData.useOutFile}
useCustomJudge={testData && testData.useCustomJudge}
environmentsWithEntryPoints={environmentsWithEntryPoints}
supplementaryFiles={files}
testName={test.name}
test={'config.' + encodeNumId(test.id)}
testErrors={formErrors && formErrors[encodeNumId(test.id)]}
key={idx}
smartFill={
idx === 0 && exerciseTests.length > 1 ? smartFill(test.id, exerciseTests, files) : undefined
}
change={change}
supplementaryFiles={supplementaryFilesOptions(files, locale)}
test={'config.' + encodeNumId(test.id)}
testErrors={formErrors && formErrors[encodeNumId(test.id)]}
testName={test.name}
useCustomJudge={testData && testData.useCustomJudge}
useOutFile={testData && testData.useOutFile}
/>
);
})}
Expand Down
Loading

0 comments on commit c784523

Please sign in to comment.