Skip to content

Commit

Permalink
perf: Updated schema generator to fit the new datastructure
Browse files Browse the repository at this point in the history
  • Loading branch information
michaelkoelle committed Jan 27, 2021
1 parent f854de3 commit b04fa91
Show file tree
Hide file tree
Showing 36 changed files with 1,020 additions and 667 deletions.
54 changes: 54 additions & 0 deletions app/components/ConfirmDialog.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
import React from 'react';
import Button from '@material-ui/core/Button';
import Dialog from '@material-ui/core/Dialog';
import DialogActions from '@material-ui/core/DialogActions';
import DialogContent from '@material-ui/core/DialogContent';
import DialogTitle from '@material-ui/core/DialogTitle';
import { DialogContentText } from '@material-ui/core';

type ConfirmDialogProps = {
title: string;
text: string;
open: boolean;
setOpen: (v: boolean) => unknown;
onConfirm: () => unknown;
onReject: () => unknown;
};

const ConfirmDialog = (props: ConfirmDialogProps) => {
const { title, text, open, setOpen, onConfirm, onReject } = props;
return (
<Dialog
open={open}
onClose={() => setOpen(false)}
aria-labelledby="confirm-dialog"
>
<DialogTitle id="confirm-dialog">{title}</DialogTitle>
<DialogContent>
<DialogContentText>{text}</DialogContentText>
</DialogContent>
<DialogActions>
<Button
onClick={() => {
setOpen(false);
onConfirm();
}}
color="primary"
autoFocus
>
Yes
</Button>
<Button
onClick={() => {
setOpen(false);
onReject();
}}
color="primary"
>
No
</Button>
</DialogActions>
</Dialog>
);
};
export default ConfirmDialog;
38 changes: 2 additions & 36 deletions app/components/Navigation.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,8 @@ import {
IconButton,
Grid,
Paper,
Box,
} from '@material-ui/core';
import React, { useEffect, useState } from 'react';
import React from 'react';
import HomeIcon from '@material-ui/icons/Home';
import SettingsIcon from '@material-ui/icons/Settings';
import WebIcon from '@material-ui/icons/Web';
Expand All @@ -16,30 +15,8 @@ import EditIcon from '@material-ui/icons/Edit';
import InfoIcon from '@material-ui/icons/Info';
import { TabPanel, TabContext } from '@material-ui/lab';
import { useDispatch, useSelector } from 'react-redux';
import { normalize } from 'normalizr';
import { createSelector } from '@reduxjs/toolkit';
import {
getAllSubmissionDirectories,
getSubmissionFromAppDataDir,
getUniqueSheets,
isSubmissionFromSheet,
saveSubmissions,
} from '../utils/FileAccess';
import SheetOverviewPage from '../containers/SheetOverviewPage';
import OverviewPage from '../containers/OverviewPage';
import SchemeGeneratorPage from '../containers/SchemeGeneratorPage';
import CorrectionViewPage from '../containers/CorrectionViewPage';
import {
correctionsAddOne,
correctionsImport,
selectAllCorrections,
selectCorrectionById,
} from '../model/CorrectionsSlice';
import { CorrectionsSchema } from '../model/NormalizationSchema';
import Correction from '../model/Correction';
import Task from '../model/TaskEntity';
import Uni2WorkParser from '../parser/Uni2WorkParser';
import Parser from '../parser/Parser';
import { selectTabIndex, setTabIndex } from '../model/HomeSlice';

const useStyle = makeStyles({
Expand Down Expand Up @@ -301,18 +278,7 @@ export default function Navigation(): JSX.Element {
value="2"
style={{ width: 'inherit', height: '100%', padding: '0px' }}
>
{/*
<SchemeGeneratorPage
sheets={sheets}
reload={reload}
schemaSheet={schemaSheet}
setSchemaSheet={setSchemaSheet}
submissions={submissions}
setSubmissions={setSubmissions}
setTab={setTab}
setSheetToCorrect={setSheetToCorrect}
/> */}
3
<SchemeGeneratorPage />
</TabPanel>
<TabPanel
value="3"
Expand Down
5 changes: 2 additions & 3 deletions app/containers/SchemeGeneratorPage.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
/* eslint-disable react/jsx-props-no-spreading */
import React from 'react';
import SchemeGenerator from '../features/schema-generator/SchemeGenerator';

export default function SchemeGeneratorPage(props) {
return <SchemeGenerator {...props} />;
export default function SchemeGeneratorPage() {
return <SchemeGenerator />;
}
158 changes: 0 additions & 158 deletions app/features/schema-generator/HorizontalStepper.tsx

This file was deleted.

111 changes: 111 additions & 0 deletions app/features/schema-generator/SchemaParentTask.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
import React, { ChangeEvent } from 'react';
import TextField from '@material-ui/core/TextField';
import { Card, InputAdornment } from '@material-ui/core';
import { useDispatch, useSelector } from 'react-redux';
import styles from './TaskScheme.css';
import {
schemaSetSelectedTask,
schemaUpdateTask,
selectSchemaSelectedTaskId,
} from '../../model/SchemaSlice';
import ParentTask from '../../model/ParentTask';
import Rating from '../../model/Rating';
import {
getMaxValueForTasks,
getRatingValueForTasks,
} from '../../utils/Formatter';
import { hasTasksWithZeroMax } from '../../utils/TaskUtil';

type SchemaParentTaskProps = {
task: ParentTask;
ratings: Rating[];
depth: number;
type: string;
};

export default function SchemaParentTask(props: SchemaParentTaskProps) {
const { task, ratings, depth, type } = props;

const dispatch = useDispatch();
const selectedTaskId: string | undefined = useSelector(
selectSchemaSelectedTaskId
);
const selected: boolean =
selectedTaskId !== undefined && selectedTaskId === task.id;

const sumValue = getRatingValueForTasks(task.tasks, ratings);
const sumMax = getMaxValueForTasks(task.tasks);

const INDENT_SIZE = 25;
const marginLeft = `${depth * INDENT_SIZE}pt`;

function onChangeName(e: ChangeEvent<{ value: unknown }>) {
dispatch(
schemaUpdateTask({
id: task.id,
changes: {
name: e.target.value as string,
},
})
);
}

function onSelection() {
if (!selected) {
dispatch(schemaSetSelectedTask(task.id));
}
}

return (
<Card
style={{ marginLeft }}
raised={selected}
className={styles.card}
onClick={onSelection}
onKeyDown={onSelection}
>
<TextField
id="outlined-number"
label="Task name"
multiline
name="name"
value={task.name}
onChange={onChangeName}
className={styles.fields}
variant="outlined"
size="small"
/>
<TextField
label="Inital"
id="value"
name="value"
style={{ width: `${type.length * 0.6 + 6}em` }}
type="number"
value={sumValue}
className={styles.fields}
InputProps={{
readOnly: true,
endAdornment: <InputAdornment position="end">{type}</InputAdornment>,
}}
size="small"
variant="outlined"
/>
<TextField
label="Max"
id="max"
name="max"
style={{ width: `${type.length * 0.6 + 6}em` }}
type="number"
className={styles.fields}
value={sumMax}
InputProps={{
readOnly: true,
endAdornment: <InputAdornment position="end">{type}</InputAdornment>,
}}
size="small"
variant="outlined"
error={hasTasksWithZeroMax(task.tasks)}
/>
</Card>
);
}
Loading

0 comments on commit b04fa91

Please sign in to comment.