From f682c61a149b2ac88a3ade8bd5fcf2a43a36ef56 Mon Sep 17 00:00:00 2001 From: paulmwatson Date: Wed, 3 Apr 2024 11:23:36 +0200 Subject: [PATCH 1/2] Clean up --- app/src/components/legalCase/caseFileTab.tsx | 22 -------------------- 1 file changed, 22 deletions(-) diff --git a/app/src/components/legalCase/caseFileTab.tsx b/app/src/components/legalCase/caseFileTab.tsx index e789428..054e088 100644 --- a/app/src/components/legalCase/caseFileTab.tsx +++ b/app/src/components/legalCase/caseFileTab.tsx @@ -256,28 +256,6 @@ export default function CaseFileTab(props: Props) { /> - - - - - - - } - disableUnderline={true} - className={classes.textField} - aria-describedby="my-helper-text" - value={"Enter a meeting location, type, or note..."} - /> - Date: Wed, 3 Apr 2024 17:15:46 +0200 Subject: [PATCH 2/2] Better file dialog replacing rename dialog --- app/src/api.ts | 4 +- app/src/components/client/clientFileTab.tsx | 4 +- app/src/components/legalCase/caseFileTab.tsx | 126 ++++------------ app/src/components/legalCaseFile/edit.tsx | 150 +++++++++++++++++++ app/src/components/legalCaseFile/form.tsx | 90 +++++++++++ app/src/utils.ts | 4 + 6 files changed, 280 insertions(+), 98 deletions(-) create mode 100644 app/src/components/legalCaseFile/edit.tsx create mode 100644 app/src/components/legalCaseFile/form.tsx diff --git a/app/src/api.ts b/app/src/api.ts index c7fb51c..e8957ef 100644 --- a/app/src/api.ts +++ b/app/src/api.ts @@ -395,12 +395,14 @@ export const deleteLegalCaseFile = async (id: number) => { return await httpDelete(`/files/${id}/`); }; -export const renameLegalCaseFile = async (legalCaseFile: any) => { +export const updateLegalCaseFile = async (legalCaseFile: any) => { const userInfo = UserInfo.getInstance(); const token = userInfo.getAccessToken(); const formData = new FormData(); formData.append("legal_case", legalCaseFile.legal_case); formData.append("description", legalCaseFile.description); + // NOTE: Turns out it is trick to change the file name of the Django FileField so won't do it for now + //formData.append("upload_file_name", legalCaseFile.upload_file_name); const renameOptions: renameOptionsType = { method: "PATCH", diff --git a/app/src/components/client/clientFileTab.tsx b/app/src/components/client/clientFileTab.tsx index d2c5646..90d2682 100644 --- a/app/src/components/client/clientFileTab.tsx +++ b/app/src/components/client/clientFileTab.tsx @@ -33,7 +33,7 @@ import { deleteClientFile, deleteLegalCaseFile, renameClientFile, - renameLegalCaseFile, + updateLegalCaseFile, createClientFile, getLegalCases, getLegalCaseFiles, @@ -215,7 +215,7 @@ export default function ClientFileTab(props: Props) { }; const legalCaseFileRename = async (file: ILegalCaseFile) => { - renameLegalCaseFile(file) + updateLegalCaseFile(file) .then((res: any) => { if (res.id) { setShowSnackbar({ diff --git a/app/src/components/legalCase/caseFileTab.tsx b/app/src/components/legalCase/caseFileTab.tsx index 054e088..346e6ae 100644 --- a/app/src/components/legalCase/caseFileTab.tsx +++ b/app/src/components/legalCase/caseFileTab.tsx @@ -1,6 +1,5 @@ import React, { useEffect } from "react"; import { useStyles, VisuallyHiddenInput } from "../../utils"; -import SearchIcon from "@material-ui/icons/Search"; import UploadIcon from "@mui/icons-material/Upload"; import MoreVertIcon from "@mui/icons-material/MoreVert"; @@ -13,19 +12,16 @@ import { format } from "date-fns"; import { ILegalCase, ILegalCaseFile, ILog, SnackbarState } from "../../types"; import UpdateDialog from "./updateDialog"; -import Dialog from "@mui/material/Dialog"; -import DialogActions from "@mui/material/DialogActions"; -import DialogContent from "@mui/material/DialogContent"; -import DialogTitle from "@mui/material/DialogTitle"; import DeleteIcon from "@material-ui/icons/Delete"; import EditIcon from "@mui/icons-material/Edit"; import CircularProgress from "@mui/material/CircularProgress"; import ClickAwayListener from "@mui/material/ClickAwayListener"; +import LegalCaseFileEdit from "../../components/legalCaseFile/edit"; + import { getLegalCaseFiles, deleteLegalCaseFile, - renameLegalCaseFile, createLegalCaseFile, getCaseUpdates, } from "../../api"; @@ -39,6 +35,8 @@ import { Typography, ListItemIcon, ListItemText, + Select, + MenuItem, } from "@material-ui/core"; import i18n from "../../i18n"; import SnackbarAlert from "../general/snackBar"; @@ -57,9 +55,15 @@ export default function CaseFileTab(props: Props) { const classes = useStyles(); const [open, setOpen] = React.useState(false); const [isLoading, setIsLoading] = React.useState(false); + const [legalCaseFileEditOpen, setLegalCaseFileEditOpen] = + React.useState(false); + const [legalCaseFile, setLegalCaseFile] = React.useState(); + const [renameDialog, setRenameDialog] = React.useState(false); const [renameDialogInput, setRenameDialogInput] = React.useState({ + file_name: "", description: "", + document_type: "", id: 0, legal_case: 0, }); @@ -75,6 +79,7 @@ export default function CaseFileTab(props: Props) { }); const refreshUpdates = async () => { + console.log("2"); const dataLegalCaseFiles = await getLegalCaseFiles( props.legalCase.id as number ); @@ -83,6 +88,10 @@ export default function CaseFileTab(props: Props) { props.setCaseUpdates(updates); }; + const legalCaseFileDialogEditClose = () => { + setLegalCaseFileEditOpen(false); + }; + useEffect(() => { const resetState = async () => { setTimeout(() => { @@ -96,47 +105,6 @@ export default function CaseFileTab(props: Props) { resetState(); }, [showSnackbar.open]); - const renameFile = async (file: ILegalCaseFile) => { - renameLegalCaseFile(file) - .then((res: any) => { - if (res.id) { - setShowSnackbar({ - open: true, - message: "File renamed successfully", - severity: "success", - }); - setTriggerClick({ show: false, val: 0 }); - setIsLoading(true); - getLegalCaseFiles(res.legal_case) - .then((res) => { - setIsLoading(false); - props.setLegalCaseFiles(res); - }) - .catch((e) => { - setIsLoading(false); - setShowSnackbar({ - open: true, - message: e.message, - severity: "error", - }); - }); - } else { - setShowSnackbar({ - open: true, - message: "File rename failed", - severity: "error", - }); - } - }) - .catch(() => { - setShowSnackbar({ - open: true, - message: "File rename failed", - severity: "error", - }); - }); - }; - const deleteFile = async (id: number) => { if (window.confirm("Are you sure you want to delete this file?")) { setDeleteLoader(true); @@ -335,60 +303,18 @@ export default function CaseFileTab(props: Props) { }} disabled={false} onClick={() => { - setRenameDialogInput({ - description: legalCaseFile!.description!, - id: legalCaseFile!.id!, - legal_case: legalCaseFile!.legal_case!, - }); - setRenameDialog(true); + setLegalCaseFile(legalCaseFile); + setLegalCaseFileEditOpen(true); }} > - {i18n.t("Rename file")} + + {i18n.t("Edit file details")} + - setRenameDialog(false)} - fullWidth - maxWidth="sm" - > - Rename file - - - ) => { - setRenameDialogInput({ - ...renameDialogInput, - description: e.target.value, - }); - }} - /> - - - - - - + + + + + + {showSnackbar.open && ( + + )} + + ); +}; + +export default UpdateDialog; diff --git a/app/src/components/legalCaseFile/form.tsx b/app/src/components/legalCaseFile/form.tsx new file mode 100644 index 0000000..fe9c9eb --- /dev/null +++ b/app/src/components/legalCaseFile/form.tsx @@ -0,0 +1,90 @@ +import { Grid, InputAdornment } from "@material-ui/core"; + +import Input from "@material-ui/core/Input"; +import InputLabel from "@material-ui/core/InputLabel"; +import FormControl from "@material-ui/core/FormControl"; +import i18n from "../../i18n"; +import { ILegalCaseFile } from "../../types"; +import { useStyles } from "../../utils"; + +type Props = { + legalCaseFile: ILegalCaseFile; + setLegalCaseFile: (legalCaseFile: ILegalCaseFile) => void; +}; + +const Component = (props: Props) => { + const classes = useStyles(); + + return ( +
+ + + + + {i18n.t("File name")}: + + ) => { + props.setLegalCaseFile({ + ...props.legalCaseFile, + upload_file_name: e.target.value, + }); + }} + /> + + {i18n.t("*File name cannot be changed")} + + + + + + + {i18n.t("Description")}: + + ) => { + props.setLegalCaseFile({ + ...props.legalCaseFile, + description: e.target.value, + }); + }} + /> + + + +
+ ); +}; + +Component.defaultProps = {}; + +export default Component; diff --git a/app/src/utils.ts b/app/src/utils.ts index b167042..7a0d09f 100644 --- a/app/src/utils.ts +++ b/app/src/utils.ts @@ -38,6 +38,10 @@ export const useStyles = makeStyles((theme: Theme) => color: "#990000", textAlign: "center", }, + hugUp: + { + marginTop: "-1.6em", + }, body: { paddingBottom: "10em", marginTop: "60px!important" as any,