Skip to content

Commit

Permalink
completato gestione ore predefinite
Browse files Browse the repository at this point in the history
  • Loading branch information
nkoexe committed Aug 28, 2024
1 parent 769ae25 commit a5413a1
Show file tree
Hide file tree
Showing 4 changed files with 69 additions and 37 deletions.
4 changes: 2 additions & 2 deletions sostituzioni/model/model.py
Original file line number Diff line number Diff line change
Expand Up @@ -108,8 +108,8 @@ def __init__(self, numero: str, ora_inizio: str = "", ora_fine: str = ""):
self.ora_inizio = dati[0]["ora_inizio_default"]
self.ora_fine = dati[0]["ora_fine_default"]

def elimina(self, mantieni_in_storico: bool = False):
super().elimina(mantieni_in_storico)
def elimina(self):
super().elimina()
self.in_database = False


Expand Down
4 changes: 2 additions & 2 deletions sostituzioni/scripts/creazione_database.sql
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@ CREATE TABLE IF NOT EXISTS nota_standard (

CREATE TABLE IF NOT EXISTS ora_predefinita (
numero VARCHAR(20) PRIMARY KEY,
ora_inizio_default TIME NOT NULL UNIQUE CHECK (length (ora_inizio_default) = 5),
ora_fine_default TIME NOT NULL UNIQUE CHECK (length (ora_fine_default) = 5)
ora_inizio_default TIME NOT NULL CHECK (length (ora_inizio_default) = 5),
ora_fine_default TIME NOT NULL CHECK (length (ora_fine_default) = 5)
);

CREATE TABLE IF NOT EXISTS docente (
Expand Down
26 changes: 25 additions & 1 deletion sostituzioni/view/impostazioni/events.py
Original file line number Diff line number Diff line change
Expand Up @@ -703,7 +703,6 @@ def modifica_ora(dati):
try:
ora = OraPredefinita(new_numero, new_ora_inizio, new_ora_fine)
ora.inserisci()
print(ora)
except Exception as e:
emit("modifica ora errore", {"numero": numero, "error": str(e)})
return
Expand All @@ -724,3 +723,28 @@ def modifica_ora(dati):
return

emit("modifica ora successo", dati)


@socketio.on("elimina ora", namespace="/impostazioni")
@login_required
@role_required("impostazioni.write")
def elimina_ora(numero):
if numero == "":
emit("elimina ora successo", "")
return

ora = OraPredefinita(numero)

if not ora.in_database:
emit("elimina ora errore", {"numero": numero, "error": "Ora non trovata"})
return

try:
ora.elimina()
except Exception as e:
emit("elimina ora errore", {"numero": numero, "error": str(e)})
return

logger.debug(f"ora {numero} eliminata")

emit("elimina ora successo", numero)
72 changes: 40 additions & 32 deletions sostituzioni/view/static/scripts/gestione_impostazioni/ore.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ const ui_lista_ore = document.querySelector("#lista-ore")
function crea_elemento(ora) {
const element = document.createElement("div")
element.classList.add("opzione-ora")
element.dataset.numero = ora[0.]
element.dataset.numero = ora[0]
element.innerHTML = ora_template

const input_ora = element.querySelector(".input-numero-ora")
Expand All @@ -35,8 +35,9 @@ function crea_elemento(ora) {
return element
}

// sort by ora inizio
ore.sort((a, b) => {
return a[0].localeCompare(b[0])
return a[1][0].localeCompare(b[1][0])
})

ore.forEach(nota => {
Expand Down Expand Up @@ -72,6 +73,11 @@ function ui_conferma_modifiche(ora) {
return
}

if (new_ora_inizio >= new_ora_fine) {
notyf.error("L'ora di fine non può essere anteriore all'ora di inizio.")
return
}

// nessuna modifica
if (new_ora === ora[0] && new_ora_inizio === ora[1][0] && new_ora_fine === ora[1][1]) {
element.querySelector(".pulsante-elimina-dato").classList.remove("hidden")
Expand Down Expand Up @@ -116,53 +122,55 @@ function nuova_ora() {
//----------------------------------


socket.on("modifica nota successo", (data) => {
console.log(data)
const element = Array.from(document.querySelectorAll(".opzione-nota"))
.find(element => element.dataset.testo === data.testo)
socket.on("modifica ora successo", (data) => {
const element = Array.from(document.querySelectorAll(".opzione-ora"))
.find(element => element.dataset.numero === data.numero)

element.replaceWith(crea_elemento(data.new_testo))
const ora = [data.new_numero, [data.new_ora_inizio, data.new_ora_fine]]

if (data.testo == "") {
// nuovo nota
note.push(data.new_testo)
element.replaceWith(crea_elemento(ora))

if (data.numero == "") {
// nuova ora
ore.push(ora)
ui_lista_ore.appendChild(element)
} else {
// modifica nota esistente
let index = note.findIndex(nota => nota === data.testo)
note[index] = data.new_testo
// modifica ora esistente
let index = ore.findIndex(ora => ora[0] === data.numero)
ore[index] = ora
}

if (data.testo == "") {
notyf.success("Nota inserita con successo")
if (data.numero == "") {
notyf.success("Ora inserita con successo")
} else {
notyf.success("Nota modificata con successo")
notyf.success("Ora modificata con successo")
}
})

socket.on("modifica nota errore", (data) => {
const element = Array.from(document.querySelectorAll(".opzione-nota"))
.find(element => element.dataset.testo === data.testo)
element.querySelector(".input-testo-nota").disabled = false
socket.on("modifica ora errore", (data) => {
const element = Array.from(document.querySelectorAll(".opzione-ora"))
.find(element => element.dataset.numero === data.numero)
element.querySelector(".input-numero-ora").disabled = false

if (data.testo == "") {
notyf.error("Errore nell'inserimento della nota: " + data.error)
if (data.numero == "") {
notyf.error("Errore nell'inserimento dell'ora: " + data.error)
} else {
notyf.error("Errore nella modifica della nota: " + data.error)
notyf.error("Errore nella modifica dell'ora: " + data.error)
}
})

socket.on("elimina nota successo", (testo) => {
let index = note.findIndex(nota => nota === testo)
if (index == -1) return;
note.splice(index, 1)
socket.on("elimina ora successo", (numero) => {
let index = ore.findIndex(ora => ora[0] === numero)
if (index == -1) return
ore.splice(index, 1)

const element = Array.from(document.querySelectorAll(".opzione-nota"))
.find(element => element.dataset.testo === testo)
const element = Array.from(document.querySelectorAll(".opzione-ora"))
.find(element => element.dataset.numero === numero)
element.remove()

notyf.success("Nota eliminata con successo")
notyf.success("Ora eliminata con successo")
})

socket.on("elimina nota errore", (data) => {
notyf.error("Errore nell'eliminazione della nota: " + data.error)
socket.on("elimina ora errore", (data) => {
notyf.error("Errore nell'eliminazione dell'ora: " + data.error)
})

0 comments on commit a5413a1

Please sign in to comment.