Can Delete Semester on Right click menu
This commit is contained in:
@@ -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>
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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.
+753008
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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user