Can Delete Semester on Right click menu

This commit is contained in:
brausjonas
2023-05-16 23:23:51 +02:00
parent ce38765fe1
commit 99f22c77e3
7 changed files with 753089 additions and 30 deletions
+5 -25
View File
@@ -3,41 +3,21 @@ import {useState} from "react";
let shown = false; let shown = false;
export default function PopUp() { export default function PopUp(p) {
const [displayState, setDisplayState] = useState("none");
function toggleModal() {
shown = !shown;
if (shown)
{
setDisplayState("block");
}
else
{
setDisplayState("none");
}
console.log("test");
}
function on_abgeben_pressed()
{
}
return ( return (
<> <>
<Button text={"Abgeben"} onClick={toggleModal}/>
<div style={{ <div style={{
display: displayState display: p.displayState
}}> }}>
<div className={"modal-container"}> <div className={"modal-container"}>
<div className={"modal"}> <div className={"modal"}>
<p className={"font-middle"}>Kalender wirklich abgeben?</p> <p className={"font-middle"}>{p.hint}</p>
<div> <div>
<Button text={"Abbrechen"} color={"#363636"} onClick={toggleModal}/> <Button text={p.text1} color={"#363636"} onClick={p.function1}/>
<Button text={"Abgeben"} color={"#7a7a7a"} onClick={on_abgeben_pressed}/> <Button text={p.text2} color={"#7a7a7a"} onClick={p.function2}/>
</div> </div>
</div> </div>
</div> </div>
+7 -2
View File
@@ -1,10 +1,15 @@
import StatusBar from "@/components/StatusBar"; import StatusBar from "@/components/StatusBar";
import React from "react"; import React, {useEffect} from "react";
export default function SemesterTile(p) export default function SemesterTile(p)
{ {
useEffect(() =>
{
window.addEventListener("contextmenu", (e) => (e.preventDefault()))
})
return ( return (
<div onClick={() => p.onClick()} className={"semester-tile"}> <div onMouseDown={(e) => p.onClick(e)} className={"semester-tile"}>
<p>{p.text}</p> <p>{p.text}</p>
<StatusBar progress={0}/> <StatusBar progress={0}/>
</div> </div>
+44 -2
View File
@@ -3,6 +3,7 @@ import {useEffect, useState} from "react";
import SemesterTile from "@/components/SemesterTile"; import SemesterTile from "@/components/SemesterTile";
import InputForm from "@/components/InputForm"; import InputForm from "@/components/InputForm";
import {useRouter} from "next/router"; import {useRouter} from "next/router";
import PopUp from "@/components/PopUp";
export default function SemesterOverview(p) export default function SemesterOverview(p)
{ {
@@ -15,31 +16,72 @@ export default function SemesterOverview(p)
}) })
} }
function onClickSemester(e) function onClickSemester(e, f)
{ {
localStorage.setItem("currentsid", e.id) localStorage.setItem("currentsid", e.id)
if(f.button === 0)
{
// router.push("/createSemester") // router.push("/createSemester")
} }
else
{
setModalHint(e.name + " Löschen?");
togglePopup();
}
}
function onClickNewSemester() function onClickNewSemester()
{ {
router.push("/createSemester") router.push("/createSemester")
} }
function togglePopup()
{
if(modalDisplay === "block")
{
setModalDisplay("none");
}
else
{
setModalDisplay("block");
}
}
function funcButtonAbort()
{
togglePopup();
}
async function funcButtonDelete()
{
let id = localStorage.getItem("currentsid");
let url = "http://localhost:8080/semester?sessionid=" + localStorage.getItem("sessionid") + "&id=" + id;
await fetch(url, {
method: "DELETE"
});
togglePopup();
}
useEffect(() => { useEffect(() => {
getSemesters(); getSemesters();
}) })
const [entries, setEntries] = useState([]) const [entries, setEntries] = useState([])
const [modalDisplay, setModalDisplay] = useState("none");
const [modalHint, setModalHint] = useState("");
const router = useRouter() const router = useRouter()
return ( return (
<div className={"semester-overview"}> <div className={"semester-overview"}>
{ {
entries.map(e => (<SemesterTile text={e.name} onClick={() => onClickSemester(e)}/>)) entries.map(e => (<SemesterTile text={e.name} onClick={(f) => onClickSemester(e, f)}/>))
} }
<Button color={"#818181"} text={"+"} width={240} height={160} fontColor={"black"} fontSize={50} <Button color={"#818181"} text={"+"} width={240} height={160} fontColor={"black"} fontSize={50}
onClick={() => onClickNewSemester()}/> onClick={() => onClickNewSemester()}/>
<PopUp hint={modalHint} text1={"Abbrechen"} text2={"Löschen"} displayState={modalDisplay}
function1={funcButtonAbort} function2={funcButtonDelete}/>
</div> </div>
) )
} }
Binary file not shown.
File diff suppressed because it is too large Load Diff
@@ -307,6 +307,18 @@ public class DataBaseHandler
} }
} }
public void deleteSemester(int id)
{
try
{
st.executeUpdate("delete from semester where id=" + id);
}
catch(Exception e)
{
}
}
public Semester resultSetToSemester(ResultSet rs) public Semester resultSetToSemester(ResultSet rs)
{ {
try try
@@ -121,4 +121,16 @@ public class SemesterController
return new ResponseEntity<>(HttpStatus.FORBIDDEN); return new ResponseEntity<>(HttpStatus.FORBIDDEN);
} }
@CrossOrigin
@DeleteMapping("/semester")
public void deleteSemester(@RequestParam(name="sessionid") String sessionid, @RequestParam(name="id") int id)
{
User u = UserSessionIDHandler.getUserBySessionID(sessionid);
if(u != null && u.getPermissions() == UserPermissions.admin.getValue())
{
db.deleteSemester(id);
}
}
} }