alarms können gelöscht werden, checkboxen vorbereitet

This commit is contained in:
Anika 2024-03-13 17:58:57 +01:00
parent 58f7ac960d
commit 4314f97ee3
7 changed files with 79 additions and 28 deletions

34
app.py
View File

@ -6,10 +6,11 @@ from datetime import datetime, timedelta
app = Flask(__name__) app = Flask(__name__)
activeAlarms = list() activeAlarms = dict()
previousAlarms = list() previousAlarms = dict()
logs = list() logs = list()
preprocessed = False preprocessed = False
alarmIndex = 0
def preprocess(): def preprocess():
@ -25,11 +26,14 @@ def preprocess():
json.dump(logsFile, open('logs.json','w'), indent=2) json.dump(logsFile, open('logs.json','w'), indent=2)
# schreib alle alarme im File in previousAlarms, wenn sie älter als 2 mins sind # schreib alle alarme im File in previousAlarms, wenn sie älter als 2 mins sind
# alle anderen in active alarms # alle anderen in active alarms
for alarm in alarmsFile: for (alarm) in alarmsFile:
if datetime.strptime(alarm['datetime'],"%d.%m.%Y %H:%M") <= datetime.now()-timedelta(minutes=2): if datetime.strptime(alarmsFile[alarm]['datetime'],"%d.%m.%Y %H:%M") <= datetime.now()-timedelta(minutes=2):
previousAlarms.append(alarm) previousAlarms[alarm] = alarmsFile[alarm]
else: else:
activeAlarms.append(alarm) activeAlarms[alarm] = alarmsFile[alarm]
global alarmIndex
if(int(alarm)>alarmIndex):
alarmIndex = int(alarm)
# lies alle log aus dem file ein # lies alle log aus dem file ein
for log in logsFile: for log in logsFile:
logs.append(log) logs.append(log)
@ -59,7 +63,9 @@ def setAlarm():
if time<datetime.now(): if time<datetime.now():
time = time + timedelta(days=1) time = time + timedelta(days=1)
content = request.form['alarmMessage'] content = request.form['alarmMessage']
activeAlarms.append({'datetime':datetime.strftime(time,"%d.%m.%Y %H:%M"),'message':content}) global alarmIndex
alarmIndex += 1
activeAlarms[alarmIndex]({'datetime':datetime.strftime(time,"%d.%m.%Y %H:%M"),'message':content})
# ja, wir schreiben einfach das ganze File neu, ist aber einfacher # ja, wir schreiben einfach das ganze File neu, ist aber einfacher
allAlarms = activeAlarms+previousAlarms allAlarms = activeAlarms+previousAlarms
@ -86,6 +92,7 @@ def sendLog():
@app.route('/alarms', methods=('GET','POST')) @app.route('/alarms', methods=('GET','POST'))
def alarm(): def alarm():
# needs update to dict
if request.method == 'GET': if request.method == 'GET':
return json.dumps(activeAlarms) return json.dumps(activeAlarms)
@ -97,6 +104,15 @@ def alarm():
activeAlarms.remove(data) activeAlarms.remove(data)
return redirect(url_for('index')) return redirect(url_for('index'))
@app.route('/deletealarm', methods=('GET','POST'))
def deleteAlarm():
if request.method == 'POST':
id = request.data.decode('UTF-8')
alarm = activeAlarms[id]
previousAlarms[id] = alarm
activeAlarms.pop(id)
return redirect(url_for('index'))
@app.route('/upload', methods=('GET','POST')) @app.route('/upload', methods=('GET','POST'))
def upload(): def upload():
# if upload successful back to index # if upload successful back to index
@ -110,7 +126,9 @@ def upload():
if time<datetime.now(): if time<datetime.now():
time = time + timedelta(days=1) time = time + timedelta(days=1)
content = alarm["message"] content = alarm["message"]
activeAlarms.append({'datetime':datetime.strftime(time,"%d.%m.%Y %H:%M"),'message':content}) global alarmIndex
alarmIndex += 1
activeAlarms[alarmIndex] = {'datetime':datetime.strftime(time,"%d.%m.%Y %H:%M"),'message':content}
# ja, wir schreiben einfach das ganze File neu, ist aber einfacher # ja, wir schreiben einfach das ganze File neu, ist aber einfacher
with open('alarms.json', 'w') as f: with open('alarms.json', 'w') as f:

View File

@ -1,18 +1,27 @@
[ [
{ {
"type": "both",
"time": "20:30", "time": "20:30",
"message": "Akkuwechsel" "message": "Akkuwechsel"
}, },
{ {
"type": "alarm",
"time": "21:00", "time": "21:00",
"message": "Feteneröffnung" "message": "Feteneröffnung"
}, },
{ {
"type": "alarm",
"time": "02:30", "time": "02:30",
"message": "Halber Preis" "message": "Halber Preis"
}, },
{ {
"type": "alarm",
"time": "03:00", "time": "03:00",
"message": "Fete vorbei" "message": "Fete vorbei"
},
{
"type": "checkbox",
"time": "20:30",
"message": "alle T-Shirts ausgegeben"
} }
] ]

View File

@ -1,6 +1,6 @@
<h3>Upcoming Alarms</h3> <h3>Upcoming Alarms</h3>
{% for alarm in alarms %} {% for alarm in alarms %}
<div> <div>
{{ alarm.datetime }}: {{ alarm.message }} {{ alarms[alarm].datetime }}: {{ alarms[alarm].message }} <input style="text-align: right;" type="button" value="&#10060;" onclick="deleteAlarm({{alarm}})"/>
</div> </div>
{% endfor %} {% endfor %}

View File

@ -18,15 +18,15 @@
</button> </button>
<div class="collapse navbar-collapse" id="navbarNav"> <div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav"> <ul class="navbar-nav">
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="{{url_for('upload')}}">Upload</a> <a class="nav-link" href="{{url_for('upload')}}">Upload</a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="{{url_for('help')}}">Hilfe</a> <a class="nav-link" href="{{url_for('help')}}">Hilfe</a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="{{url_for('about')}}">About</a> <a class="nav-link" href="{{url_for('about')}}">About</a>
</li> </li>
</ul> </ul>
</div> </div>
</nav> </nav>

View File

@ -22,6 +22,7 @@ Die Datei zum hochladen, sollte folgenden Aufbau haben:
<pre> <pre>
[ [
{ {
"type": "alarm" | "checkbox" | "both"
"time": "HH:MM", "time": "HH:MM",
"message": "Alarm-Text" "message": "Alarm-Text"
}, },

View File

@ -16,7 +16,7 @@
<h3>Anstehende Alarme</h3> <h3>Anstehende Alarme</h3>
{% for alarm in alarms %} {% for alarm in alarms %}
<div> <div>
{{ alarm.datetime }}: {{ alarm.message }} {{ alarms[alarm].datetime }}: {{ alarms[alarm].message }} <input style="text-align: right;" type="button" value="&#10060;" onclick="deleteAlarm({{alarm}})"/>
</div> </div>
{% endfor %} {% endfor %}
</div> </div>
@ -76,14 +76,37 @@
upcomingAlarms.innerHTML = html upcomingAlarms.innerHTML = html
}) })
fetch("/processpAlarm", { fetch("/processpAlarm", {
method: "GET" method: "GET"
}).then(response => { }).then(response => {
return response.text(); return response.text();
}) })
.then(html => { .then(html => {
previousAlarms.innerHTML = html previousAlarms.innerHTML = html
}) })
} }
async function deleteAlarm(id){
const response = await fetch("http://127.0.0.1:5000/deletealarm", {
method: "POST",
body: id,
});
fetch("/processAlarm", {
method: "GET"
}).then(response => {
return response.text();
})
.then(html => {
upcomingAlarms.innerHTML = html
})
fetch("/processpAlarm", {
method: "GET"
}).then(response => {
return response.text();
})
.then(html => {
previousAlarms.innerHTML = html
})
}
function checkAlarms(){ function checkAlarms(){
for(var i = 0; i < alarms.length; i++){ for(var i = 0; i < alarms.length; i++){
@ -106,7 +129,7 @@
</script> </script>
{% for alarm in previousAlarms %} {% for alarm in previousAlarms %}
<div> <div>
{{ alarm.datetime }}: {{ alarm.message }} {{ previousAlarms[alarm].datetime }}: {{ previousAlarms[alarm].message }}
</div> </div>
{% endfor %} {% endfor %}
</div> </div>

View File

@ -1,6 +1,6 @@
<h3>Previous Alarms</h3> <h3>Previous Alarms</h3>
{% for alarm in previousAlarms %} {% for alarm in previousAlarms %}
<div> <div>
{{ alarm.datetime }}: {{ alarm.message }} {{ previousAlarms[alarm].datetime }}: {{ previousAlarms[alarm].message }}
</div> </div>
{% endfor %} {% endfor %}