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__)
activeAlarms = list()
previousAlarms = list()
activeAlarms = dict()
previousAlarms = dict()
logs = list()
preprocessed = False
alarmIndex = 0
def preprocess():
@ -25,11 +26,14 @@ def preprocess():
json.dump(logsFile, open('logs.json','w'), indent=2)
# schreib alle alarme im File in previousAlarms, wenn sie älter als 2 mins sind
# alle anderen in active alarms
for alarm in alarmsFile:
if datetime.strptime(alarm['datetime'],"%d.%m.%Y %H:%M") <= datetime.now()-timedelta(minutes=2):
previousAlarms.append(alarm)
for (alarm) in alarmsFile:
if datetime.strptime(alarmsFile[alarm]['datetime'],"%d.%m.%Y %H:%M") <= datetime.now()-timedelta(minutes=2):
previousAlarms[alarm] = alarmsFile[alarm]
else:
activeAlarms.append(alarm)
activeAlarms[alarm] = alarmsFile[alarm]
global alarmIndex
if(int(alarm)>alarmIndex):
alarmIndex = int(alarm)
# lies alle log aus dem file ein
for log in logsFile:
logs.append(log)
@ -59,7 +63,9 @@ def setAlarm():
if time<datetime.now():
time = time + timedelta(days=1)
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
allAlarms = activeAlarms+previousAlarms
@ -86,6 +92,7 @@ def sendLog():
@app.route('/alarms', methods=('GET','POST'))
def alarm():
# needs update to dict
if request.method == 'GET':
return json.dumps(activeAlarms)
@ -97,6 +104,15 @@ def alarm():
activeAlarms.remove(data)
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'))
def upload():
# if upload successful back to index
@ -110,7 +126,9 @@ def upload():
if time<datetime.now():
time = time + timedelta(days=1)
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
with open('alarms.json', 'w') as f:

View File

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

View File

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

View File

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

View File

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

View File

@ -16,7 +16,7 @@
<h3>Anstehende Alarme</h3>
{% for alarm in alarms %}
<div>
{{ alarm.datetime }}: {{ alarm.message }}
{{ alarms[alarm].datetime }}: {{ alarms[alarm].message }} <input style="text-align: right;" type="button" value="&#10060;" onclick="deleteAlarm({{alarm}})"/>
</div>
{% endfor %}
</div>
@ -76,14 +76,37 @@
upcomingAlarms.innerHTML = html
})
fetch("/processpAlarm", {
method: "GET"
}).then(response => {
return response.text();
})
.then(html => {
previousAlarms.innerHTML = html
})
method: "GET"
}).then(response => {
return response.text();
})
.then(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(){
for(var i = 0; i < alarms.length; i++){
@ -106,7 +129,7 @@
</script>
{% for alarm in previousAlarms %}
<div>
{{ alarm.datetime }}: {{ alarm.message }}
{{ previousAlarms[alarm].datetime }}: {{ previousAlarms[alarm].message }}
</div>
{% endfor %}
</div>

View File

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