alarms können gelöscht werden, checkboxen vorbereitet
This commit is contained in:
parent
58f7ac960d
commit
4314f97ee3
34
app.py
34
app.py
|
@ -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:
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
]
|
|
@ -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="❌" onclick="deleteAlarm({{alarm}})"/>
|
||||
</div>
|
||||
{% endfor %}
|
|
@ -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>
|
||||
|
|
|
@ -22,6 +22,7 @@ Die Datei zum hochladen, sollte folgenden Aufbau haben:
|
|||
<pre>
|
||||
[
|
||||
{
|
||||
"type": "alarm" | "checkbox" | "both"
|
||||
"time": "HH:MM",
|
||||
"message": "Alarm-Text"
|
||||
},
|
||||
|
|
|
@ -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="❌" 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>
|
||||
|
|
|
@ -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 %}
|
Loading…
Reference in New Issue