From 9d7475c418dbe68cad05fd7f004d028014f6e7ab Mon Sep 17 00:00:00 2001 From: Martin Krulis Date: Thu, 7 Dec 2017 12:12:58 +0100 Subject: [PATCH 1/3] Renaming additional files to attachment files (part 1). --- .../AttachmentFilesTableHeaderRow.js} | 12 +-- .../AttachmentFilesTableRow.js} | 10 +-- .../FilesTable.js} | 12 +-- .../SupplementaryFilesTableHeaderRow.js | 0 .../SupplementaryFilesTableRow.js | 0 .../index.js | 8 +- .../AdditionalExerciseFilesTableContainer.js | 75 ------------------- .../index.js | 1 - .../AttachedFilesTableContainer/index.js | 1 - .../AttachmentExerciseFilesTableContainer.js | 75 +++++++++++++++++++ .../AttachmentFilesTableContainer/index.js | 1 + .../FilesTableContainer.js} | 14 ++-- src/containers/FilesTableContainer/index.js | 1 + .../PipelineFilesTableContainer.js | 6 +- .../SupplementaryFilesTableContainer.js | 6 +- src/locales/cs.json | 24 +++--- src/locales/en.json | 24 +++--- src/pages/EditExercise/EditExercise.js | 4 +- ...nalExerciseFiles.js => attachmentFiles.js} | 26 +++---- src/redux/modules/exercises.js | 6 +- src/redux/reducer.js | 4 +- .../selectors/additionalExerciseFiles.js | 18 ----- src/redux/selectors/attachmentFiles.js | 18 +++++ 23 files changed, 173 insertions(+), 173 deletions(-) rename src/components/Exercises/{AttachedFilesTable/AdditionalFilesTableHeaderRow.js => FilesTable/AttachmentFilesTableHeaderRow.js} (61%) rename src/components/Exercises/{AttachedFilesTable/AdditionalFilesTableRow.js => FilesTable/AttachmentFilesTableRow.js} (87%) rename src/components/Exercises/{AttachedFilesTable/AttachedFilesTable.js => FilesTable/FilesTable.js} (92%) rename src/components/Exercises/{AttachedFilesTable => FilesTable}/SupplementaryFilesTableHeaderRow.js (100%) rename src/components/Exercises/{AttachedFilesTable => FilesTable}/SupplementaryFilesTableRow.js (100%) rename src/components/Exercises/{AttachedFilesTable => FilesTable}/index.js (52%) delete mode 100644 src/containers/AdditionalExerciseFilesTableContainer/AdditionalExerciseFilesTableContainer.js delete mode 100644 src/containers/AdditionalExerciseFilesTableContainer/index.js delete mode 100644 src/containers/AttachedFilesTableContainer/index.js create mode 100644 src/containers/AttachmentFilesTableContainer/AttachmentExerciseFilesTableContainer.js create mode 100644 src/containers/AttachmentFilesTableContainer/index.js rename src/containers/{AttachedFilesTableContainer/AttachedFilesTableContainer.js => FilesTableContainer/FilesTableContainer.js} (73%) create mode 100644 src/containers/FilesTableContainer/index.js rename src/redux/modules/{additionalExerciseFiles.js => attachmentFiles.js} (64%) delete mode 100644 src/redux/selectors/additionalExerciseFiles.js create mode 100644 src/redux/selectors/attachmentFiles.js diff --git a/src/components/Exercises/AttachedFilesTable/AdditionalFilesTableHeaderRow.js b/src/components/Exercises/FilesTable/AttachmentFilesTableHeaderRow.js similarity index 61% rename from src/components/Exercises/AttachedFilesTable/AdditionalFilesTableHeaderRow.js rename to src/components/Exercises/FilesTable/AttachmentFilesTableHeaderRow.js index ddec80849..b26e1583a 100644 --- a/src/components/Exercises/AttachedFilesTable/AdditionalFilesTableHeaderRow.js +++ b/src/components/Exercises/FilesTable/AttachmentFilesTableHeaderRow.js @@ -1,33 +1,33 @@ import React from 'react'; import { FormattedMessage } from 'react-intl'; -const AdditionalFilesTableHeaderRow = () => +const AttachmentFilesTableHeaderRow = () => ; -export default AdditionalFilesTableHeaderRow; +export default AttachmentFilesTableHeaderRow; diff --git a/src/components/Exercises/AttachedFilesTable/AdditionalFilesTableRow.js b/src/components/Exercises/FilesTable/AttachmentFilesTableRow.js similarity index 87% rename from src/components/Exercises/AttachedFilesTable/AdditionalFilesTableRow.js rename to src/components/Exercises/FilesTable/AttachmentFilesTableRow.js index c21e5632b..38771bc44 100644 --- a/src/components/Exercises/AttachedFilesTable/AdditionalFilesTableRow.js +++ b/src/components/Exercises/FilesTable/AttachmentFilesTableRow.js @@ -7,7 +7,7 @@ import { Button } from 'react-bootstrap'; import Confirm from '../../../components/forms/Confirm'; import { DeleteIcon } from '../../../components/icons'; -const AdditionalFilesTableRow = ({ +const AttachmentFilesTableRow = ({ id, name, size, @@ -39,7 +39,7 @@ const AdditionalFilesTableRow = ({ onConfirmed={() => removeFile(id)} question={ } @@ -48,7 +48,7 @@ const AdditionalFilesTableRow = ({ @@ -56,7 +56,7 @@ const AdditionalFilesTableRow = ({ ; -AdditionalFilesTableRow.propTypes = { +AttachmentFilesTableRow.propTypes = { id: PropTypes.string.isRequired, name: PropTypes.string.isRequired, size: PropTypes.number.isRequired, @@ -65,4 +65,4 @@ AdditionalFilesTableRow.propTypes = { removeFile: PropTypes.func }; -export default withLinks(AdditionalFilesTableRow); +export default withLinks(AttachmentFilesTableRow); diff --git a/src/components/Exercises/AttachedFilesTable/AttachedFilesTable.js b/src/components/Exercises/FilesTable/FilesTable.js similarity index 92% rename from src/components/Exercises/AttachedFilesTable/AttachedFilesTable.js rename to src/components/Exercises/FilesTable/FilesTable.js index 9f8a362a1..404ca3cbf 100644 --- a/src/components/Exercises/AttachedFilesTable/AttachedFilesTable.js +++ b/src/components/Exercises/FilesTable/FilesTable.js @@ -12,10 +12,10 @@ import { SendIcon } from '../../icons'; import UploadContainer from '../../../containers/UploadContainer'; import ResourceRenderer from '../../helpers/ResourceRenderer'; -const AttachedFilesTable = ({ +const FilesTable = ({ title = ( ), @@ -47,7 +47,7 @@ const AttachedFilesTable = ({ > {' '} @@ -78,7 +78,7 @@ const AttachedFilesTable = ({

{' '}

} @@ -87,7 +87,7 @@ const AttachedFilesTable = ({ ; -AttachedFilesTable.propTypes = { +FilesTable.propTypes = { title: PropTypes.oneOfType([ PropTypes.string, PropTypes.shape({ type: PropTypes.oneOf([FormattedMessage]) }), @@ -110,4 +110,4 @@ AttachedFilesTable.propTypes = { intl: PropTypes.shape({ locale: PropTypes.string.isRequired }).isRequired }; -export default injectIntl(AttachedFilesTable); +export default injectIntl(FilesTable); diff --git a/src/components/Exercises/AttachedFilesTable/SupplementaryFilesTableHeaderRow.js b/src/components/Exercises/FilesTable/SupplementaryFilesTableHeaderRow.js similarity index 100% rename from src/components/Exercises/AttachedFilesTable/SupplementaryFilesTableHeaderRow.js rename to src/components/Exercises/FilesTable/SupplementaryFilesTableHeaderRow.js diff --git a/src/components/Exercises/AttachedFilesTable/SupplementaryFilesTableRow.js b/src/components/Exercises/FilesTable/SupplementaryFilesTableRow.js similarity index 100% rename from src/components/Exercises/AttachedFilesTable/SupplementaryFilesTableRow.js rename to src/components/Exercises/FilesTable/SupplementaryFilesTableRow.js diff --git a/src/components/Exercises/AttachedFilesTable/index.js b/src/components/Exercises/FilesTable/index.js similarity index 52% rename from src/components/Exercises/AttachedFilesTable/index.js rename to src/components/Exercises/FilesTable/index.js index 1aa010883..dbaafe286 100644 --- a/src/components/Exercises/AttachedFilesTable/index.js +++ b/src/components/Exercises/FilesTable/index.js @@ -1,4 +1,4 @@ -export default from './AttachedFilesTable'; +export default from './FilesTable'; export { default as SupplementaryFilesTableRow @@ -6,7 +6,7 @@ export { export { default as SupplementaryFilesTableHeaderRow } from './SupplementaryFilesTableHeaderRow'; -export { default as AdditionalFilesTableRow } from './AdditionalFilesTableRow'; +export { default as AttachmentFilesTableRow } from './AttachmentFilesTableRow'; export { - default as AdditionalFilesTableHeaderRow -} from './AdditionalFilesTableHeaderRow'; + default as AttachmentFilesTableHeaderRow +} from './AttachmentFilesTableHeaderRow'; diff --git a/src/containers/AdditionalExerciseFilesTableContainer/AdditionalExerciseFilesTableContainer.js b/src/containers/AdditionalExerciseFilesTableContainer/AdditionalExerciseFilesTableContainer.js deleted file mode 100644 index 510e20810..000000000 --- a/src/containers/AdditionalExerciseFilesTableContainer/AdditionalExerciseFilesTableContainer.js +++ /dev/null @@ -1,75 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import { connect } from 'react-redux'; -import ImmutablePropTypes from 'react-immutable-proptypes'; -import { FormattedMessage } from 'react-intl'; - -import AttachedFilesTableContainer from '../AttachedFilesTableContainer'; -import { - AdditionalFilesTableRow, - AdditionalFilesTableHeaderRow -} from '../../components/Exercises/AttachedFilesTable'; - -import { - fetchAdditionalExerciseFiles, - addAdditionalExerciseFiles, - removeAdditionalExerciseFile -} from '../../redux/modules/additionalExerciseFiles'; - -import { createGetAdditionalExerciseFiles } from '../../redux/selectors/additionalExerciseFiles'; - -const AdditionalExerciseFilesTableContainer = ({ - exercise, - additionalExerciseFiles, - loadFiles, - addFiles, - removeFile -}) => - - } - description={ - - } - HeaderComponent={AdditionalFilesTableHeaderRow} - RowComponent={AdditionalFilesTableRow} - />; - -AdditionalExerciseFilesTableContainer.propTypes = { - exercise: PropTypes.shape({ - id: PropTypes.string.isRequired, - additionalExerciseFilesIds: PropTypes.array.isRequired - }).isRequired, - additionalExerciseFiles: ImmutablePropTypes.map, - loadFiles: PropTypes.func.isRequired, - addFiles: PropTypes.func.isRequired, - removeFile: PropTypes.func.isRequired -}; - -export default connect( - (state, { exercise }) => { - const getAdditionalExerciseFiles = createGetAdditionalExerciseFiles( - exercise.additionalExerciseFilesIds - ); - return { - additionalExerciseFiles: getAdditionalExerciseFiles(state) - }; - }, - (dispatch, { exercise }) => ({ - loadFiles: () => dispatch(fetchAdditionalExerciseFiles(exercise.id)), - addFiles: files => dispatch(addAdditionalExerciseFiles(exercise.id, files)), - removeFile: id => dispatch(removeAdditionalExerciseFile(exercise.id, id)) - }) -)(AdditionalExerciseFilesTableContainer); diff --git a/src/containers/AdditionalExerciseFilesTableContainer/index.js b/src/containers/AdditionalExerciseFilesTableContainer/index.js deleted file mode 100644 index ec2c6dabb..000000000 --- a/src/containers/AdditionalExerciseFilesTableContainer/index.js +++ /dev/null @@ -1 +0,0 @@ -export default from './AdditionalExerciseFilesTableContainer'; diff --git a/src/containers/AttachedFilesTableContainer/index.js b/src/containers/AttachedFilesTableContainer/index.js deleted file mode 100644 index db8158cff..000000000 --- a/src/containers/AttachedFilesTableContainer/index.js +++ /dev/null @@ -1 +0,0 @@ -export default from './AttachedFilesTableContainer'; diff --git a/src/containers/AttachmentFilesTableContainer/AttachmentExerciseFilesTableContainer.js b/src/containers/AttachmentFilesTableContainer/AttachmentExerciseFilesTableContainer.js new file mode 100644 index 000000000..e4e2fc902 --- /dev/null +++ b/src/containers/AttachmentFilesTableContainer/AttachmentExerciseFilesTableContainer.js @@ -0,0 +1,75 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { connect } from 'react-redux'; +import ImmutablePropTypes from 'react-immutable-proptypes'; +import { FormattedMessage } from 'react-intl'; + +import FilesTableContainer from '../FilesTableContainer'; +import { + AttachmentFilesTableRow, + AttachmentFilesTableHeaderRow +} from '../../components/Exercises/FilesTable'; + +import { + fetchAttachmentExerciseFiles, + addAttachmentExerciseFiles, + removeAttachmentExerciseFile +} from '../../redux/modules/attachmentExerciseFiles'; + +import { createGetAttachmentExerciseFiles } from '../../redux/selectors/attachmentExerciseFiles'; + +const AttachmentExerciseFilesTableContainer = ({ + exercise, + attachmentExerciseFiles, + loadFiles, + addFiles, + removeFile +}) => + + } + description={ + + } + HeaderComponent={AttachmentFilesTableHeaderRow} + RowComponent={AttachmentFilesTableRow} + />; + +AttachmentExerciseFilesTableContainer.propTypes = { + exercise: PropTypes.shape({ + id: PropTypes.string.isRequired, + attachmentExerciseFilesIds: PropTypes.array.isRequired + }).isRequired, + attachmentExerciseFiles: ImmutablePropTypes.map, + loadFiles: PropTypes.func.isRequired, + addFiles: PropTypes.func.isRequired, + removeFile: PropTypes.func.isRequired +}; + +export default connect( + (state, { exercise }) => { + const getAttachmentExerciseFiles = createGetAttachmentExerciseFiles( + exercise.attachmentExerciseFilesIds + ); + return { + attachmentExerciseFiles: getAttachmentExerciseFiles(state) + }; + }, + (dispatch, { exercise }) => ({ + loadFiles: () => dispatch(fetchAttachmentExerciseFiles(exercise.id)), + addFiles: files => dispatch(addAttachmentExerciseFiles(exercise.id, files)), + removeFile: id => dispatch(removeAttachmentExerciseFile(exercise.id, id)) + }) +)(AttachmentExerciseFilesTableContainer); diff --git a/src/containers/AttachmentFilesTableContainer/index.js b/src/containers/AttachmentFilesTableContainer/index.js new file mode 100644 index 000000000..705993472 --- /dev/null +++ b/src/containers/AttachmentFilesTableContainer/index.js @@ -0,0 +1 @@ +export default from './AttachmentExerciseFilesTableContainer'; diff --git a/src/containers/AttachedFilesTableContainer/AttachedFilesTableContainer.js b/src/containers/FilesTableContainer/FilesTableContainer.js similarity index 73% rename from src/containers/AttachedFilesTableContainer/AttachedFilesTableContainer.js rename to src/containers/FilesTableContainer/FilesTableContainer.js index 66832ff17..f3bc95119 100644 --- a/src/containers/AttachedFilesTableContainer/AttachedFilesTableContainer.js +++ b/src/containers/FilesTableContainer/FilesTableContainer.js @@ -4,7 +4,7 @@ import { connect } from 'react-redux'; import ImmutablePropTypes from 'react-immutable-proptypes'; import { List } from 'immutable'; -import AttachedFilesTable from '../../components/Exercises/AttachedFilesTable'; +import FilesTable from '../../components/Exercises/FilesTable'; import { reset } from '../../redux/modules/upload'; import { @@ -12,14 +12,14 @@ import { createAllUploaded } from '../../redux/selectors/upload'; -class AttachedFilesTableContainer extends Component { +class FilesTableContainer extends Component { componentWillMount() { - AttachedFilesTableContainer.loadData(this.props); + FilesTableContainer.loadData(this.props); } componentWillReceiveProps(newProps) { if (this.props.uploadId !== newProps.uploadId) { - AttachedFilesTableContainer.loadData(newProps); + FilesTableContainer.loadData(newProps); } } @@ -27,10 +27,10 @@ class AttachedFilesTableContainer extends Component { loadFiles(); }; - render = () => ; + render = () => ; } -AttachedFilesTableContainer.propTypes = { +FilesTableContainer.propTypes = { uploadId: PropTypes.string.isRequired, attachments: ImmutablePropTypes.map, newFiles: ImmutablePropTypes.list, @@ -47,4 +47,4 @@ export default connect( (dispatch, { uploadId, addFiles }) => ({ addFiles: files => addFiles(files.toJS()).then(dispatch(reset(uploadId))) }) -)(AttachedFilesTableContainer); +)(FilesTableContainer); diff --git a/src/containers/FilesTableContainer/index.js b/src/containers/FilesTableContainer/index.js new file mode 100644 index 000000000..9dc456228 --- /dev/null +++ b/src/containers/FilesTableContainer/index.js @@ -0,0 +1 @@ +export default from './FilesTableContainer'; diff --git a/src/containers/PipelineFilesTableContainer/PipelineFilesTableContainer.js b/src/containers/PipelineFilesTableContainer/PipelineFilesTableContainer.js index 99588d3b2..966785302 100644 --- a/src/containers/PipelineFilesTableContainer/PipelineFilesTableContainer.js +++ b/src/containers/PipelineFilesTableContainer/PipelineFilesTableContainer.js @@ -4,11 +4,11 @@ import { connect } from 'react-redux'; import ImmutablePropTypes from 'react-immutable-proptypes'; import { FormattedMessage } from 'react-intl'; -import AttachedFilesTableContainer from '../AttachedFilesTableContainer'; +import FilesTableContainer from '../FilesTableContainer'; import { SupplementaryFilesTableHeaderRow, SupplementaryFilesTableRow -} from '../../components/Exercises/AttachedFilesTable'; +} from '../../components/Exercises/FilesTable'; import { fetchSupplementaryFilesForPipeline, @@ -23,7 +23,7 @@ const PipelineFilesTableContainer = ({ loadFiles, addFiles }) => - - - +
diff --git a/src/redux/modules/additionalExerciseFiles.js b/src/redux/modules/attachmentFiles.js similarity index 64% rename from src/redux/modules/additionalExerciseFiles.js rename to src/redux/modules/attachmentFiles.js index ddbfcfe52..7d0cd24cf 100644 --- a/src/redux/modules/additionalExerciseFiles.js +++ b/src/redux/modules/attachmentFiles.js @@ -6,7 +6,7 @@ import factory, { } from '../helpers/resourceManager'; import { createApiAction } from '../middleware/apiMiddleware'; -const resourceName = 'additionalExerciseFiles'; +const resourceName = 'attachmentExerciseFiles'; const { actions, reduceActions } = factory({ resourceName }); /** @@ -14,23 +14,23 @@ const { actions, reduceActions } = factory({ resourceName }); */ export const actionTypes = { - ADD_FILES: 'recodex/additionalExerciseFiles/ADD_FILES', - ADD_FILES_PENDING: 'recodex/additionalExerciseFiles/ADD_FILES_PENDING', - ADD_FILES_FULFILLED: 'recodex/additionalExerciseFiles/ADD_FILES_FULFILLED', - ADD_FILES_FAILED: 'recodex/additionalExerciseFiles/ADD_FILES_REJECTED', - REMOVE_FILE: 'recodex/additionalExerciseFiles/REMOVE_FILE', - REMOVE_FILE_FULFILLED: 'recodex/additionalExerciseFiles/REMOVE_FILE_FULFILLED' + ADD_FILES: 'recodex/attachmentExerciseFiles/ADD_FILES', + ADD_FILES_PENDING: 'recodex/attachmentExerciseFiles/ADD_FILES_PENDING', + ADD_FILES_FULFILLED: 'recodex/attachmentExerciseFiles/ADD_FILES_FULFILLED', + ADD_FILES_FAILED: 'recodex/attachmentExerciseFiles/ADD_FILES_REJECTED', + REMOVE_FILE: 'recodex/attachmentExerciseFiles/REMOVE_FILE', + REMOVE_FILE_FULFILLED: 'recodex/attachmentExerciseFiles/REMOVE_FILE_FULFILLED' }; -export const fetchAdditionalExerciseFiles = exerciseId => +export const fetchAttachmentExerciseFiles = exerciseId => actions.fetchMany({ - endpoint: `/exercises/${exerciseId}/additional-files` + endpoint: `/exercises/${exerciseId}/attachment-files` }); -export const addAdditionalExerciseFiles = (exerciseId, files) => +export const addAttachmentExerciseFiles = (exerciseId, files) => createApiAction({ type: actionTypes.ADD_FILES, - endpoint: `/exercises/${exerciseId}/additional-files`, + endpoint: `/exercises/${exerciseId}/attachment-files`, method: 'POST', body: { files: files.map(uploaded => uploaded.file.id) @@ -45,10 +45,10 @@ export const addAdditionalExerciseFiles = (exerciseId, files) => uploadFiles: true }); -export const removeAdditionalExerciseFile = (exerciseId, fileId) => +export const removeAttachmentExerciseFile = (exerciseId, fileId) => createApiAction({ type: actionTypes.REMOVE_FILE, - endpoint: `/exercises/${exerciseId}/additional-files/${fileId}`, + endpoint: `/exercises/${exerciseId}/attachment-files/${fileId}`, method: 'DELETE', meta: { exerciseId, fileId } }); diff --git a/src/redux/modules/exercises.js b/src/redux/modules/exercises.js index 67cbe8857..c13ab039c 100644 --- a/src/redux/modules/exercises.js +++ b/src/redux/modules/exercises.js @@ -5,7 +5,7 @@ import { createApiAction } from '../middleware/apiMiddleware'; import { actionTypes as supplementaryFilesActionTypes } from './supplementaryFiles'; -import { actionTypes as additionalFilesActionTypes } from './additionalExerciseFiles'; +import { actionTypes as attachmentFilesActionTypes } from './attachmentExerciseFiles'; const resourceName = 'exercises'; const { actions, reduceActions, actionTypes } = factory({ resourceName }); @@ -138,12 +138,12 @@ const reducer = handleActions( ? addFiles(state, exerciseId, files, 'supplementaryFilesIds') : state, - [additionalFilesActionTypes.ADD_FILES_FULFILLED]: ( + [attachmentFilesActionTypes.ADD_FILES_FULFILLED]: ( state, { payload: files, meta: { exerciseId } } ) => state.hasIn(['resources', exerciseId]) - ? addFiles(state, exerciseId, files, 'additionalExerciseFilesIds') + ? addFiles(state, exerciseId, files, 'attachmentExerciseFilesIds') : state }), initialState diff --git a/src/redux/reducer.js b/src/redux/reducer.js index 9b7185bb4..b22156f35 100644 --- a/src/redux/reducer.js +++ b/src/redux/reducer.js @@ -38,7 +38,7 @@ import userSwitching from './modules/userSwitching'; import runtimeEnvironments from './modules/runtimeEnvironments'; import supplementaryFiles from './modules/supplementaryFiles'; import pipelineFiles from './modules/pipelineFiles'; -import additionalExerciseFiles from './modules/additionalExerciseFiles'; +import attachmentExerciseFiles from './modules/attachmentExerciseFiles'; import referenceSolutions from './modules/referenceSolutions'; import hwGroups from './modules/hwGroups'; import sisStatus from './modules/sisStatus'; @@ -88,7 +88,7 @@ const createRecodexReducers = token => ({ referenceSolutions, referenceSolutionEvaluations, hwGroups, - additionalExerciseFiles, + attachmentExerciseFiles, sisStatus, sisSubscribedGroups, sisSupervisedCourses, diff --git a/src/redux/selectors/additionalExerciseFiles.js b/src/redux/selectors/additionalExerciseFiles.js deleted file mode 100644 index 3d02e19f5..000000000 --- a/src/redux/selectors/additionalExerciseFiles.js +++ /dev/null @@ -1,18 +0,0 @@ -import { createSelector } from 'reselect'; -import { isReady } from '../helpers/resourceManager'; - -const getAdditionalExerciseFiles = state => state.additionalExerciseFiles; -export const getAdditionalExerciseFile = id => - createSelector(getAdditionalExerciseFiles, additionalExerciseFiles => - additionalExerciseFiles.get(id) - ); - -export const additionalExerciseFilesSelector = state => - state.additionalExerciseFiles.get('resources'); - -export const createGetAdditionalExerciseFiles = ids => - createSelector(additionalExerciseFilesSelector, additionalExerciseFiles => - additionalExerciseFiles - .filter(isReady) - .filter(file => ids.indexOf(file.getIn(['data', 'id'])) >= 0) - ); diff --git a/src/redux/selectors/attachmentFiles.js b/src/redux/selectors/attachmentFiles.js new file mode 100644 index 000000000..14cb0e629 --- /dev/null +++ b/src/redux/selectors/attachmentFiles.js @@ -0,0 +1,18 @@ +import { createSelector } from 'reselect'; +import { isReady } from '../helpers/resourceManager'; + +const getAttachmentExerciseFiles = state => state.attachmentExerciseFiles; +export const getAttachmentExerciseFile = id => + createSelector(getAttachmentExerciseFiles, attachmentExerciseFiles => + attachmentExerciseFiles.get(id) + ); + +export const attachmentExerciseFilesSelector = state => + state.attachmentExerciseFiles.get('resources'); + +export const createGetAttachmentExerciseFiles = ids => + createSelector(attachmentExerciseFilesSelector, attachmentExerciseFiles => + attachmentExerciseFiles + .filter(isReady) + .filter(file => ids.indexOf(file.getIn(['data', 'id'])) >= 0) + ); From d959e76c9876449f7c51209e665a745402f33e74 Mon Sep 17 00:00:00 2001 From: Martin Krulis Date: Thu, 7 Dec 2017 12:14:07 +0100 Subject: [PATCH 2/3] Renaming file. --- ...iseFilesTableContainer.js => AttachmentFilesTableContainer.js} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/containers/AttachmentFilesTableContainer/{AttachmentExerciseFilesTableContainer.js => AttachmentFilesTableContainer.js} (100%) diff --git a/src/containers/AttachmentFilesTableContainer/AttachmentExerciseFilesTableContainer.js b/src/containers/AttachmentFilesTableContainer/AttachmentFilesTableContainer.js similarity index 100% rename from src/containers/AttachmentFilesTableContainer/AttachmentExerciseFilesTableContainer.js rename to src/containers/AttachmentFilesTableContainer/AttachmentFilesTableContainer.js From 8b82b72af9c6279ede95c3eac9a90a399d1aa1c9 Mon Sep 17 00:00:00 2001 From: Martin Krulis Date: Thu, 7 Dec 2017 12:19:57 +0100 Subject: [PATCH 3/3] Final renaming. --- .../AttachmentFilesTableContainer.js | 40 +++++++++---------- .../AttachmentFilesTableContainer/index.js | 2 +- src/locales/cs.json | 4 +- src/locales/en.json | 4 +- src/pages/EditExercise/EditExercise.js | 4 +- src/redux/modules/attachmentFiles.js | 20 +++++----- src/redux/modules/exercises.js | 4 +- src/redux/reducer.js | 4 +- src/redux/selectors/attachmentFiles.js | 18 ++++----- 9 files changed, 50 insertions(+), 50 deletions(-) diff --git a/src/containers/AttachmentFilesTableContainer/AttachmentFilesTableContainer.js b/src/containers/AttachmentFilesTableContainer/AttachmentFilesTableContainer.js index e4e2fc902..558a40c9c 100644 --- a/src/containers/AttachmentFilesTableContainer/AttachmentFilesTableContainer.js +++ b/src/containers/AttachmentFilesTableContainer/AttachmentFilesTableContainer.js @@ -11,35 +11,35 @@ import { } from '../../components/Exercises/FilesTable'; import { - fetchAttachmentExerciseFiles, - addAttachmentExerciseFiles, - removeAttachmentExerciseFile -} from '../../redux/modules/attachmentExerciseFiles'; + fetchAttachmentFiles, + addAttachmentFiles, + removeAttachmentFile +} from '../../redux/modules/attachmentFiles'; -import { createGetAttachmentExerciseFiles } from '../../redux/selectors/attachmentExerciseFiles'; +import { createGetAttachmentFiles } from '../../redux/selectors/attachmentFiles'; -const AttachmentExerciseFilesTableContainer = ({ +const AttachmentFilesTableContainer = ({ exercise, - attachmentExerciseFiles, + attachmentFiles, loadFiles, addFiles, removeFile }) => } description={ } @@ -47,12 +47,12 @@ const AttachmentExerciseFilesTableContainer = ({ RowComponent={AttachmentFilesTableRow} />; -AttachmentExerciseFilesTableContainer.propTypes = { +AttachmentFilesTableContainer.propTypes = { exercise: PropTypes.shape({ id: PropTypes.string.isRequired, - attachmentExerciseFilesIds: PropTypes.array.isRequired + attachmentFilesIds: PropTypes.array.isRequired }).isRequired, - attachmentExerciseFiles: ImmutablePropTypes.map, + attachmentFiles: ImmutablePropTypes.map, loadFiles: PropTypes.func.isRequired, addFiles: PropTypes.func.isRequired, removeFile: PropTypes.func.isRequired @@ -60,16 +60,16 @@ AttachmentExerciseFilesTableContainer.propTypes = { export default connect( (state, { exercise }) => { - const getAttachmentExerciseFiles = createGetAttachmentExerciseFiles( - exercise.attachmentExerciseFilesIds + const getAttachmentFiles = createGetAttachmentFiles( + exercise.attachmentFilesIds ); return { - attachmentExerciseFiles: getAttachmentExerciseFiles(state) + attachmentFiles: getAttachmentFiles(state) }; }, (dispatch, { exercise }) => ({ - loadFiles: () => dispatch(fetchAttachmentExerciseFiles(exercise.id)), - addFiles: files => dispatch(addAttachmentExerciseFiles(exercise.id, files)), - removeFile: id => dispatch(removeAttachmentExerciseFile(exercise.id, id)) + loadFiles: () => dispatch(fetchAttachmentFiles(exercise.id)), + addFiles: files => dispatch(addAttachmentFiles(exercise.id, files)), + removeFile: id => dispatch(removeAttachmentFile(exercise.id, id)) }) -)(AttachmentExerciseFilesTableContainer); +)(AttachmentFilesTableContainer); diff --git a/src/containers/AttachmentFilesTableContainer/index.js b/src/containers/AttachmentFilesTableContainer/index.js index 705993472..bf6a33164 100644 --- a/src/containers/AttachmentFilesTableContainer/index.js +++ b/src/containers/AttachmentFilesTableContainer/index.js @@ -1 +1 @@ -export default from './AttachmentExerciseFilesTableContainer'; +export default from './AttachmentFilesTableContainer'; diff --git a/src/locales/cs.json b/src/locales/cs.json index deda30151..d4a5d5092 100644 --- a/src/locales/cs.json +++ b/src/locales/cs.json @@ -12,8 +12,8 @@ "app.addLicence.validation.note": "Popis nemůže být prázdný.", "app.addLicence.validation.validUntilEmpty": "Konec platnosti licence musí být nastaven.", "app.addLicence.validation.validUntilInThePast": "Platnost licence musí být v budoucnosti.", - "app.attachmentExerciseFilesTable.description": "Přídavné soubory k úloze jsou soubory, které mohou být použity v popisu úlohy pomocí unikátních odkazů zobrazených níže. Tyto soubory mohou být zobrazovány a stahovány studenty.", - "app.attachmentExerciseFilesTable.title": "Přídavné soubory k úloze", + "app.attachmentFilesTable.description": "Přídavné soubory k úloze jsou soubory, které mohou být použity v popisu úlohy pomocí unikátních odkazů zobrazených níže. Tyto soubory mohou být zobrazovány a stahovány studenty.", + "app.attachmentFilesTable.title": "Přídavné soubory k úloze", "app.attachmentFiles.deleteButton": "Delete", "app.attachmentFiles.deleteConfirm": "Are you sure you want to delete the file? This cannot be undone.", "app.attachmentFilesTable.fileName": "Původní název", diff --git a/src/locales/en.json b/src/locales/en.json index f0427ce7d..4d1bad856 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -12,8 +12,8 @@ "app.addLicence.validation.note": "Note cannot be empty.", "app.addLicence.validation.validUntilEmpty": "End of licence's valid period must be set.", "app.addLicence.validation.validUntilInThePast": "End of licence's valid period must be in the future.", - "app.attachmentExerciseFilesTable.description": "Attached files are files which can be used within exercise description using links provided below. Attached files can be viewed or downloaded by students.", - "app.attachmentExerciseFilesTable.title": "Attached files", + "app.attachmentFilesTable.description": "Attached files are files which can be used within exercise description using links provided below. Attached files can be viewed or downloaded by students.", + "app.attachmentFilesTable.title": "Attached files", "app.attachmentFiles.deleteButton": "Delete", "app.attachmentFiles.deleteConfirm": "Are you sure you want to delete the file? This cannot be undone.", "app.attachmentFilesTable.fileName": "Original filename", diff --git a/src/pages/EditExercise/EditExercise.js b/src/pages/EditExercise/EditExercise.js index 97d51362b..912c73caa 100644 --- a/src/pages/EditExercise/EditExercise.js +++ b/src/pages/EditExercise/EditExercise.js @@ -10,7 +10,7 @@ import { reset, getFormValues } from 'redux-form'; import Page from '../../components/layout/Page'; import Box from '../../components/widgets/Box'; import EditExerciseForm from '../../components/forms/EditExerciseForm'; -import AttachmentExerciseFilesTableContainer from '../../containers/AttachmentExerciseFilesTableContainer'; +import AttachmentFilesTableContainer from '../../containers/AttachmentFilesTableContainer'; import DeleteExerciseButtonContainer from '../../containers/DeleteExerciseButtonContainer'; import { LocalizedExerciseName } from '../../components/helpers/LocalizedNames'; @@ -98,7 +98,7 @@ class EditExercise extends Component { /> - +
diff --git a/src/redux/modules/attachmentFiles.js b/src/redux/modules/attachmentFiles.js index 7d0cd24cf..3535c2a37 100644 --- a/src/redux/modules/attachmentFiles.js +++ b/src/redux/modules/attachmentFiles.js @@ -6,7 +6,7 @@ import factory, { } from '../helpers/resourceManager'; import { createApiAction } from '../middleware/apiMiddleware'; -const resourceName = 'attachmentExerciseFiles'; +const resourceName = 'attachmentFiles'; const { actions, reduceActions } = factory({ resourceName }); /** @@ -14,20 +14,20 @@ const { actions, reduceActions } = factory({ resourceName }); */ export const actionTypes = { - ADD_FILES: 'recodex/attachmentExerciseFiles/ADD_FILES', - ADD_FILES_PENDING: 'recodex/attachmentExerciseFiles/ADD_FILES_PENDING', - ADD_FILES_FULFILLED: 'recodex/attachmentExerciseFiles/ADD_FILES_FULFILLED', - ADD_FILES_FAILED: 'recodex/attachmentExerciseFiles/ADD_FILES_REJECTED', - REMOVE_FILE: 'recodex/attachmentExerciseFiles/REMOVE_FILE', - REMOVE_FILE_FULFILLED: 'recodex/attachmentExerciseFiles/REMOVE_FILE_FULFILLED' + ADD_FILES: 'recodex/attachmentFiles/ADD_FILES', + ADD_FILES_PENDING: 'recodex/attachmentFiles/ADD_FILES_PENDING', + ADD_FILES_FULFILLED: 'recodex/attachmentFiles/ADD_FILES_FULFILLED', + ADD_FILES_FAILED: 'recodex/attachmentFiles/ADD_FILES_REJECTED', + REMOVE_FILE: 'recodex/attachmentFiles/REMOVE_FILE', + REMOVE_FILE_FULFILLED: 'recodex/attachmentFiles/REMOVE_FILE_FULFILLED' }; -export const fetchAttachmentExerciseFiles = exerciseId => +export const fetchAttachmentFiles = exerciseId => actions.fetchMany({ endpoint: `/exercises/${exerciseId}/attachment-files` }); -export const addAttachmentExerciseFiles = (exerciseId, files) => +export const addAttachmentFiles = (exerciseId, files) => createApiAction({ type: actionTypes.ADD_FILES, endpoint: `/exercises/${exerciseId}/attachment-files`, @@ -45,7 +45,7 @@ export const addAttachmentExerciseFiles = (exerciseId, files) => uploadFiles: true }); -export const removeAttachmentExerciseFile = (exerciseId, fileId) => +export const removeAttachmentFile = (exerciseId, fileId) => createApiAction({ type: actionTypes.REMOVE_FILE, endpoint: `/exercises/${exerciseId}/attachment-files/${fileId}`, diff --git a/src/redux/modules/exercises.js b/src/redux/modules/exercises.js index c13ab039c..d63e088ef 100644 --- a/src/redux/modules/exercises.js +++ b/src/redux/modules/exercises.js @@ -5,7 +5,7 @@ import { createApiAction } from '../middleware/apiMiddleware'; import { actionTypes as supplementaryFilesActionTypes } from './supplementaryFiles'; -import { actionTypes as attachmentFilesActionTypes } from './attachmentExerciseFiles'; +import { actionTypes as attachmentFilesActionTypes } from './attachmentFiles'; const resourceName = 'exercises'; const { actions, reduceActions, actionTypes } = factory({ resourceName }); @@ -143,7 +143,7 @@ const reducer = handleActions( { payload: files, meta: { exerciseId } } ) => state.hasIn(['resources', exerciseId]) - ? addFiles(state, exerciseId, files, 'attachmentExerciseFilesIds') + ? addFiles(state, exerciseId, files, 'attachmentFilesIds') : state }), initialState diff --git a/src/redux/reducer.js b/src/redux/reducer.js index b22156f35..96af0b232 100644 --- a/src/redux/reducer.js +++ b/src/redux/reducer.js @@ -38,7 +38,7 @@ import userSwitching from './modules/userSwitching'; import runtimeEnvironments from './modules/runtimeEnvironments'; import supplementaryFiles from './modules/supplementaryFiles'; import pipelineFiles from './modules/pipelineFiles'; -import attachmentExerciseFiles from './modules/attachmentExerciseFiles'; +import attachmentFiles from './modules/attachmentFiles'; import referenceSolutions from './modules/referenceSolutions'; import hwGroups from './modules/hwGroups'; import sisStatus from './modules/sisStatus'; @@ -88,7 +88,7 @@ const createRecodexReducers = token => ({ referenceSolutions, referenceSolutionEvaluations, hwGroups, - attachmentExerciseFiles, + attachmentFiles, sisStatus, sisSubscribedGroups, sisSupervisedCourses, diff --git a/src/redux/selectors/attachmentFiles.js b/src/redux/selectors/attachmentFiles.js index 14cb0e629..ac3e8652c 100644 --- a/src/redux/selectors/attachmentFiles.js +++ b/src/redux/selectors/attachmentFiles.js @@ -1,18 +1,18 @@ import { createSelector } from 'reselect'; import { isReady } from '../helpers/resourceManager'; -const getAttachmentExerciseFiles = state => state.attachmentExerciseFiles; -export const getAttachmentExerciseFile = id => - createSelector(getAttachmentExerciseFiles, attachmentExerciseFiles => - attachmentExerciseFiles.get(id) +const getAttachmentFiles = state => state.attachmentFiles; +export const getAttachmentFile = id => + createSelector(getAttachmentFiles, attachmentFiles => + attachmentFiles.get(id) ); -export const attachmentExerciseFilesSelector = state => - state.attachmentExerciseFiles.get('resources'); +export const attachmentFilesSelector = state => + state.attachmentFiles.get('resources'); -export const createGetAttachmentExerciseFiles = ids => - createSelector(attachmentExerciseFilesSelector, attachmentExerciseFiles => - attachmentExerciseFiles +export const createGetAttachmentFiles = ids => + createSelector(attachmentFilesSelector, attachmentFiles => + attachmentFiles .filter(isReady) .filter(file => ids.indexOf(file.getIn(['data', 'id'])) >= 0) );