diff --git a/src/components/sites/exerciseEditorSite/codeTemplatesPanel/dialogs/changeCodeTemplateDialog.tsx b/src/components/sites/exerciseEditorSite/codeTemplatesPanel/dialogs/changeCodeTemplateDialog.tsx index fee8958d59a448312215891bd0005decf6867eb8..0c9195c21eb24aa8bbe058da99502f09e5a07fc3 100644 --- a/src/components/sites/exerciseEditorSite/codeTemplatesPanel/dialogs/changeCodeTemplateDialog.tsx +++ b/src/components/sites/exerciseEditorSite/codeTemplatesPanel/dialogs/changeCodeTemplateDialog.tsx @@ -10,7 +10,7 @@ import {RootState} from "../../../../../state/reducers"; import FullSiteDialog from '../../../../fullSiteDialog' import { applyChangCodeTemplateDialog, - cancelEditorTestDialog + cancelCodeTemplateDialog } from "../../../../../state/actions/exerciseEditorSite/dialogs/changeCodeTemplateDialog/changeCodeTemplateDialogActions"; import ChangeCodeTemplateView from './changeCodeTemplateView' @@ -38,7 +38,7 @@ const mapStateToProps = (rootState: RootState /*, props: MyProps*/) => { const mapDispatchToProps = (dispatch: Dispatch) => bindActionCreators({ //imported reducer funcs here - cancelEditorTestDialog, + cancelCodeTemplateDialog, applyChangCodeTemplateDialog, }, dispatch) @@ -65,7 +65,7 @@ class changeCodeTemplateDialog extends React.Component<Props, any> { this.props.allCodeTemplates) }} onCancel={() => { - this.props.cancelEditorTestDialog() + this.props.cancelCodeTemplateDialog() }} > <ChangeCodeTemplateView/> @@ -74,4 +74,4 @@ class changeCodeTemplateDialog extends React.Component<Props, any> { } } -export default connect(mapStateToProps, mapDispatchToProps)(changeCodeTemplateDialog) \ No newline at end of file +export default connect(mapStateToProps, mapDispatchToProps)(changeCodeTemplateDialog) diff --git a/src/constants.ts b/src/constants.ts index d07e980d9309af18c961ba84113e6464b70805e6..a545112d1247155c68abdff7a77199cb39f1e7a6 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -13,7 +13,7 @@ import Logger from './helpers/logger' * y - breaking changes / new features * z - fixes, small changes */ -export const versionString = '2.10.2' +export const versionString = '2.10.3' export const supportMail = 'yapex@informatik.uni-halle.de' diff --git a/src/state/actions/exerciseEditorSite/dialogs/changeCodeTemplateDialog/changeCodeTemplateDialogActions.ts b/src/state/actions/exerciseEditorSite/dialogs/changeCodeTemplateDialog/changeCodeTemplateDialogActions.ts index ccf4435bbb21dbbe763f2caf1502711b13013800..aafcf84bc902906b1c8caa7c579dc2be2e80c8fe 100644 --- a/src/state/actions/exerciseEditorSite/dialogs/changeCodeTemplateDialog/changeCodeTemplateDialogActions.ts +++ b/src/state/actions/exerciseEditorSite/dialogs/changeCodeTemplateDialog/changeCodeTemplateDialogActions.ts @@ -210,7 +210,7 @@ export function applyChangCodeTemplateDialog(codeTemplate: ExerciseCodeTemplateF } } -export function cancelEditorTestDialog(): MultiActions { +export function cancelCodeTemplateDialog(): MultiActions { return dispatch => { dispatch(resetChangeCodeTemplateDialog()) @@ -222,4 +222,4 @@ export function resetChangeCodeTemplateDialog(): ResetAction { return { type: ActionType.RESET, } -} \ No newline at end of file +} diff --git a/src/state/reducers/exerciseEditorSite/dialogs/changeCodeTemplateDialog/changeCodeTemplateDialogReducer.ts b/src/state/reducers/exerciseEditorSite/dialogs/changeCodeTemplateDialog/changeCodeTemplateDialogReducer.ts index d591c3b7a077e977e96d3e6008b44d39bbf9806f..a3cb90646f3246e9ea840615914da4c1b7efbfaa 100644 --- a/src/state/reducers/exerciseEditorSite/dialogs/changeCodeTemplateDialog/changeCodeTemplateDialogReducer.ts +++ b/src/state/reducers/exerciseEditorSite/dialogs/changeCodeTemplateDialog/changeCodeTemplateDialogReducer.ts @@ -14,6 +14,8 @@ import {isValidDialog} from "../../../../../validation/dialogValidations"; import {notExhaustive} from "../../../_notExhausiveHelper"; import {HasFileChangedMap} from "../../../../../helpers/editorHelper"; import {ActionTypeGlobal, RESET_GlobalAction} from '../../../globalActions' +import {AceEditorsStorageHelper} from '../../../../../components/codeEditors/aceEditors/aceEditorsStorageHelper' +import {editExerciseChangeCodeTemplateViewEditorId} from '../../../../../constants' export type State = { @@ -54,6 +56,9 @@ export type State = { } +/* + * the ace storage is only synced once when we load the exercise! + */ export const initial: () => State = () => { return { codeTemplate: initialCodeTemplate(), @@ -155,12 +160,35 @@ export function reducer(state: State = initial(), action: AllActions): State { switch (action.type) { - case ActionType.SET_codeTemplate: + case ActionType.SET_codeTemplate: { + + const tabs = AceEditorsStorageHelper.getEditor(editExerciseChangeCodeTemplateViewEditorId) + if (tabs) { + //we want to reset the content but also want to keep the undo stack... + //poping undo elements it probably now that good so we set the original content of the code template file + //that will push a new undo item but that is ok + for (let i = 0; i < tabs.length; i++) { + const tabWrapper = tabs[i] + + const codeTemplateFile = action.codeTemplate.templateFiles.find(p => p.id === tabWrapper.tab.id) + + if (!codeTemplateFile) continue + + tabWrapper.tab = { + ...tabWrapper.tab, + id: codeTemplateFile.id, + content: codeTemplateFile.content, + } + tabWrapper.session.setValue(codeTemplateFile.content) + } + } + return { ...state, isValid: isValidDialog(action.codeTemplate, validationRules), codeTemplate: action.codeTemplate, } + } case ActionType.SET_pLangId: case ActionType.SET_mainFileId: