Skip to content

Commit

Permalink
feat: Added customizable text for correct and incorrect tasks
Browse files Browse the repository at this point in the history
  • Loading branch information
michaelkoelle committed Nov 10, 2021
1 parent 8a0b046 commit 9c6c8ab
Show file tree
Hide file tree
Showing 4 changed files with 117 additions and 3 deletions.
11 changes: 8 additions & 3 deletions app/features/correction/RateableTaskView.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,15 @@ import {
} from '@material-ui/core';
import { CheckCircleOutline, HighlightOff } from '@material-ui/icons';
import React from 'react';
import { useDispatch } from 'react-redux';
import { useDispatch, useSelector } from 'react-redux';
import { commentsUpdateOne } from '../../model/CommentSlice';
import RateableTask from '../../model/RateableTask';
import Rating from '../../model/Rating';
import { ratingsUpdateOne } from '../../model/RatingSlice';
import {
CorrectionSettings,
selectSettingsCorrection,
} from '../../model/SettingsSlice';
import TaskCommentInput from './TaskCommentInput';

type RateableTaskViewProps = {
Expand All @@ -25,6 +29,7 @@ type RateableTaskViewProps = {

function RateableTaskView(props: RateableTaskViewProps) {
const { task, type, rating } = props;
const settings: CorrectionSettings = useSelector(selectSettingsCorrection);
const dispatch = useDispatch();

function onChangeValue(e) {
Expand All @@ -47,7 +52,7 @@ function RateableTaskView(props: RateableTaskViewProps) {
dispatch(
commentsUpdateOne({
id: rating.comment.id,
changes: { text: '' },
changes: { text: settings.taskCorrectText ?? '' },
})
);
}
Expand All @@ -62,7 +67,7 @@ function RateableTaskView(props: RateableTaskViewProps) {
dispatch(
commentsUpdateOne({
id: rating.comment.id,
changes: { text: 'Missing Solution' },
changes: { text: settings.taskIncorrectText ?? 'Missing Solution' },
})
);
}
Expand Down
3 changes: 3 additions & 0 deletions app/modals/SettingsModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import GeneralSettingsList from './settings/GeneralSettingsList';
import BackupSettingsList from './settings/BackupSettingsList';
import MediaViewerSettingsList from './settings/MediaViewerSettingsList';
import ExportSettingsList from './settings/ExportSettingsList';
import CorrectionSettingsList from './settings/CorrectionSettingsList';

type SettingsModalProps = ModalProps;

Expand All @@ -35,6 +36,8 @@ const SettingsModal: FC<SettingsModalProps> = ({ ...props }) => {
<Divider variant="middle" component="div" />
<BackupSettingsList />
<Divider variant="middle" component="div" />
<CorrectionSettingsList />
<Divider variant="middle" component="div" />
<MediaViewerSettingsList />
<Divider variant="middle" component="div" />
<ExportSettingsList />
Expand Down
90 changes: 90 additions & 0 deletions app/modals/settings/CorrectionSettingsList.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
/* eslint-disable react/jsx-curly-newline */
/* eslint-disable react/jsx-wrap-multilines */
import {
ListItemText,
ListItemSecondaryAction,
List,
ListItem,
ListSubheader,
TextField,
} from '@material-ui/core';
import React from 'react';
import { useDispatch, useSelector } from 'react-redux';
import {
CorrectionSettings,
selectSettingsCorrection,
settingsSetCorrection,
} from '../../model/SettingsSlice';

const CorrectionSettingsList = () => {
const dispatch = useDispatch();
const settings: CorrectionSettings = useSelector(selectSettingsCorrection);

if (!settings) {
// set default
dispatch(
settingsSetCorrection({
taskCorrectText: 'korrekt!',
taskIncorrectText: 'fehlt',
})
);
return null;
}

return (
<List subheader={<ListSubheader disableSticky>Correction</ListSubheader>}>
<ListItem>
<ListItemText
primary="Task Correct Text"
secondary="Comment text for a correct task"
/>
<ListItemSecondaryAction>
<TextField
label="Text"
InputLabelProps={{
shrink: true,
}}
variant="outlined"
size="small"
value={settings.taskCorrectText}
onChange={(event) =>
dispatch(
settingsSetCorrection({
...settings,
taskCorrectText: event.target.value,
})
)
}
/>
</ListItemSecondaryAction>
</ListItem>
<ListItem>
<ListItemText
primary="Task Incorrect Text"
secondary="Comment text for a incorrect/missing task"
/>
<ListItemSecondaryAction>
<TextField
label="Text"
InputLabelProps={{
shrink: true,
}}
variant="outlined"
size="small"
value={settings.taskIncorrectText}
onChange={(event) =>
dispatch(
settingsSetCorrection({
...settings,
taskIncorrectText: event.target.value,
})
)
}
/>
</ListItemSecondaryAction>
</ListItem>
</List>
);
};

export default CorrectionSettingsList;
16 changes: 16 additions & 0 deletions app/model/SettingsSlice.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,11 @@ export interface BackupSettings {
enabled: boolean;
}

export interface CorrectionSettings {
taskCorrectText: string;
taskIncorrectText: string;
}

export interface MediaViewerSettings {
showFileName: boolean;
cycleFiles: boolean;
Expand All @@ -28,6 +33,7 @@ export interface ExportSettings {
export interface SettingsState {
general: GeneralSettings;
backup: BackupSettings;
correction: CorrectionSettings;
mediaViewer: MediaViewerSettings;
export: ExportSettings;
}
Expand All @@ -42,6 +48,10 @@ const settingsSlice = createSlice({
backup: {
enabled: true,
},
correction: {
taskCorrectText: 'korrekt',
taskIncorrectText: 'fehlt',
},
mediaViewer: {
showFileName: true,
cycleFiles: false,
Expand All @@ -62,6 +72,9 @@ const settingsSlice = createSlice({
settingsSetGeneral(state, action: PayloadAction<GeneralSettings>) {
state.general = action.payload;
},
settingsSetCorrection(state, action: PayloadAction<CorrectionSettings>) {
state.correction = action.payload;
},
settingsSetBackup(state, action: PayloadAction<BackupSettings>) {
state.backup = action.payload;
},
Expand Down Expand Up @@ -103,6 +116,8 @@ export const selectSettingsGeneral = (state): GeneralSettings =>
state.settings.general;
export const selectSettingsBackup = (state): BackupSettings =>
state.settings.backup;
export const selectSettingsCorrection = (state): CorrectionSettings =>
state.settings.correction;
export const selectSettingsMediaViewer = (state): MediaViewerSettings =>
state.settings.mediaViewer;
export const selectSettingsExport = (state): ExportSettings =>
Expand All @@ -111,6 +126,7 @@ export const selectSettings = (state) => state.settings;
export const {
settingsSetGeneral,
settingsSetBackup,
settingsSetCorrection,
settingsSetMediaViewer,
settingsSetExport,
settingsAddConditionalComment,
Expand Down

0 comments on commit 9c6c8ab

Please sign in to comment.