parent
e6d6e67d30
commit
720b086292
Binary file not shown.
@ -1,3 +1,17 @@
|
|||||||
h1 {
|
#box1 {
|
||||||
color: red;
|
text-align: left;
|
||||||
|
height: auto;
|
||||||
|
width: 70%;
|
||||||
|
border-radius: 1rem;
|
||||||
|
box-shadow: 0rem 0rem 2rem rgb(248, 0, 0);
|
||||||
|
/* background-color: hsla(0, 100%, 53%, 0.686); */
|
||||||
|
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
|
||||||
|
font-weight: 600;
|
||||||
|
padding: 2em;
|
||||||
|
margin-top: 5rem;
|
||||||
|
margin-left: 17.5%;
|
||||||
|
}
|
||||||
|
.fz_activ {
|
||||||
|
background-color: rgb(255, 61, 61);
|
||||||
|
color: white;
|
||||||
}
|
}
|
||||||
@ -1,33 +0,0 @@
|
|||||||
{% load static %}
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="de">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<!-- all infos about iphone app -->
|
|
||||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
|
||||||
<meta name="apple-mobile-web-app-title" content="JW-ServiceTracker">
|
|
||||||
<link rel="apple-touch-icon" sizes="167x167" href="{% static 'img/clock.png' %}">
|
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="{% static 'img/clock.png' %}">
|
|
||||||
|
|
||||||
<!-- all others -->
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<link rel="stylesheet" href="{% static 'css/bootstrap.css' %}">
|
|
||||||
<link rel="stylesheet" href="{% static 'css/styles.css' %}">
|
|
||||||
<link rel="stylesheet" href="{% static 'css/create.css' %}">
|
|
||||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200" />
|
|
||||||
<title>EmergencyControlCenter - Index</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
|
|
||||||
{% block pushup %}
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
{% include "main/header.html" %}
|
|
||||||
|
|
||||||
{% block content %}
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<script src="{% static 'js/bootstrap.bundle.min.js' %}"></script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@ -1,11 +1,64 @@
|
|||||||
{% extends 'leitstelle/base.html' %}
|
{% extends 'main/base.html' %}
|
||||||
|
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<div class="container-fluid mt-3 text-center">
|
<div id="box1">
|
||||||
<h3>Neuer Einsatz</h3>
|
<h4 style="color: red; text-transform: uppercase; margin-bottom: 2rem"><b>Einsatzgenerierung</b></h4>
|
||||||
<h1>test</h1>
|
<form action="" method="post">
|
||||||
</div>
|
<div class="row mb-5">
|
||||||
|
<div class="col-5" style="text-align: left;">
|
||||||
|
<div id="stichwort">
|
||||||
|
<h4>Stichwort:</h4>
|
||||||
|
<select class="form-select" aria-label="Default select example" required>
|
||||||
|
<option selected value="0">Stichwort wählen...</option>
|
||||||
|
{% for sw in sw %}
|
||||||
|
<option value="1">{{sw.1}}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-2"></div>
|
||||||
|
|
||||||
|
<div class="col-5">
|
||||||
|
<div id="zusatztext">
|
||||||
|
<h4>Freitext</h4>
|
||||||
|
<input type="text" class="form-control" name="zusatztext" placeholder="z.B. ROLLER Markt" maxlength="15" required>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
function fzcb(fzid){
|
||||||
|
let item_div = document.getElementById("fz_"+fzid+"_div")
|
||||||
|
let item_cb = document.getElementById("fz_"+fzid+"_cb")
|
||||||
|
if (!item_cb.checked){
|
||||||
|
console.log("MOIN NÖ")
|
||||||
|
item_cb.checked = true;
|
||||||
|
item_div.classList.add("fz_activ")
|
||||||
|
} else {
|
||||||
|
console.log("MOIN JA")
|
||||||
|
item_cb.checked = false;
|
||||||
|
item_div.classList.remove("fz_activ")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<h4 style="margin-bottom: 1rem;">Fahrzeuge</h4>
|
||||||
|
<div class="row mb-5">
|
||||||
|
{% for fz in fz %}
|
||||||
|
<div class="col-3" id="fz_{{fz.0}}_div" onclick='fzcb("{{fz.0}}")' style="padding: 1rem; margin-left: 0.5rem; box-shadow: 0 0 1rem gray; border-radius: 1rem; align-items: center; cursor: pointer; text-align:center; margin-bottom:0.5rem;">
|
||||||
|
{{ fz.3 }} - {{ fz.2 }}
|
||||||
|
<input type="checkbox" class="d-none" id="fz_{{fz.0}}_cb">
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<input class="btn-danger btn" type="submit" value="AUSLÖSEN">
|
||||||
|
<a href="/leitstelle/" class="btn btn-secondary">ABBRUCH</a>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
@ -1,16 +1,14 @@
|
|||||||
{% extends 'leitstelle/base.html' %}
|
{% extends 'main/base.html' %}
|
||||||
|
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<div class="container-fluid row justify-content-center" style="padding: 4rem; margin-top: 5rem;">
|
<div class="container-fluid row" style="padding: 4rem; margin-top: 5rem;">
|
||||||
<a href="create/" class="col-3 row text-center" style="height: 15vh; align-items: center; border-radius: 1rem; box-shadow: 0rem 0rem 2rem rgb(97, 97, 97);">
|
<a href="/leitstelle/create/" class="col-4 offset-2 row" style="height: 10vh; width: auto; align-items: center; border-radius: 1rem; box-shadow: 0rem 0rem 2rem rgb(97, 97, 97); color: white; background-color: red;">
|
||||||
<h3>Alarmierung<br>erstellen</h4>
|
<h4 class="col-5">Alarm Erstellen</h4>
|
||||||
</a>
|
</a>
|
||||||
<!-- <div class="col-1"></div>
|
<!-- <a href="/leitstelle/wache_setzen/" class="col-4 offset-2 row" style="height: 10vh; width: auto; align-items: center; border-radius: 1rem; box-shadow: 0rem 0rem 2rem rgb(97, 97, 97);">
|
||||||
<a href="#" class="col-4 row" style="height: 15vh; align-items: center; border-radius: 1rem; box-shadow: 0rem 0rem 2rem rgb(97, 97, 97);">
|
<h4 class="col-5">Leitstelle Wählen</h4>
|
||||||
<span class="col-5 material-symbols-outlined" style="font-size: 7rem;">dashboard</span>
|
|
||||||
<h4 class="col-5 offset-1">Leitstelle</h4>
|
|
||||||
</a> -->
|
</a> -->
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,25 @@
|
|||||||
|
{% extends 'main/base.html' %}
|
||||||
|
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<div id="box2" style="margin-top:3rem;">
|
||||||
|
<h4 style="color: red; text-transform: uppercase; margin-bottom: 2rem"><b>Wache wählen</b></h4>
|
||||||
|
<form action="" method="post">
|
||||||
|
<div id="stichwort" style="margin-bottom:2rem; width:15rem">
|
||||||
|
<h4>Feuerwehr:</h4>
|
||||||
|
<select class="form-select" aria-label="Default select example" required>
|
||||||
|
<option selected value="0">Feuerwehr wählen...</option>
|
||||||
|
{% for fw in fw %}
|
||||||
|
<option value="1">{{fw.1}}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<input class="btn-danger btn" type="submit" value="AUSLÖSEN">
|
||||||
|
<a href="/leitstelle/" class="btn btn-secondary">ABBRUCH</a>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{% endblock %}
|
||||||
@ -1,8 +1,15 @@
|
|||||||
from django.shortcuts import render
|
from django.shortcuts import render
|
||||||
|
from main.models import alarmierung_SW, fahrzeug, leitstelle
|
||||||
|
|
||||||
# Create your views here.
|
# Create your views here.
|
||||||
def index(request):
|
def index(request):
|
||||||
return render(request, 'leitstelle/index.html')
|
return render(request, 'leitstelle/index.html')
|
||||||
|
|
||||||
def create(request):
|
def create(request):
|
||||||
return render(request, 'leitstelle/create.html')
|
sw_request = alarmierung_SW.objects.all().values_list()
|
||||||
|
fz_request = fahrzeug.objects.all().order_by('Funkrufname').values_list()
|
||||||
|
return render(request, 'leitstelle/create.html', {'sw':sw_request, 'fz':fz_request})
|
||||||
|
|
||||||
|
def setStation(request):
|
||||||
|
feuwehr_request = leitstelle.objects.all().order_by('name').values_list()
|
||||||
|
return render(request, 'leitstelle/setStation.html', {'fw':feuwehr_request})
|
||||||
@ -1,9 +1,10 @@
|
|||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from .models import hours
|
from .models import *
|
||||||
|
|
||||||
# Register your models here.
|
# Register your models here.
|
||||||
|
|
||||||
class HoursAdmin(admin.ModelAdmin):
|
|
||||||
list_display = ("user", "date", "hours", "minutes", "is_ldc", "is_geplant")
|
|
||||||
|
|
||||||
admin.site.register(hours, HoursAdmin)
|
admin.site.register(fahrzeug)
|
||||||
|
admin.site.register(alarmierung_SW)
|
||||||
|
admin.site.register(alarmierung)
|
||||||
|
admin.site.register(feuerwehr)
|
||||||
|
admin.site.register(leitstelle)
|
||||||
@ -1,11 +1,44 @@
|
|||||||
from django.db import models
|
from django.db import models
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
|
|
||||||
# Create your models here.
|
|
||||||
class hours(models.Model):
|
# FEUERWEHR
|
||||||
user = models.ForeignKey(User, on_delete=models.CASCADE, null=True)
|
class feuerwehr(models.Model):
|
||||||
date = models.DateField(auto_now_add=False)
|
name = models.CharField(max_length=50)
|
||||||
is_ldc = models.BooleanField(default=False)
|
|
||||||
is_geplant = models.BooleanField(default=False)
|
def __str__(self):
|
||||||
hours = models.IntegerField(auto_created=False, default=0)
|
return self.name
|
||||||
minutes = models.IntegerField(auto_created=False, default=0)
|
|
||||||
|
# FAHRZEUGE
|
||||||
|
class fahrzeug(models.Model):
|
||||||
|
fw = models.ForeignKey(feuerwehr, on_delete=models.CASCADE, name="Standort", null=True)
|
||||||
|
kürzel = models.CharField(max_length=50, name="kürzel", default="")
|
||||||
|
fn = models.CharField(max_length=20, name="Funkrufname", default="")
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.Standort.name + " -- " + str(self.Funkrufname) + " -- " + str(self.kürzel)
|
||||||
|
|
||||||
|
# STICHWORT
|
||||||
|
class alarmierung_SW(models.Model):
|
||||||
|
kürzel = models.CharField(max_length=20)
|
||||||
|
beschreibung = models.CharField(max_length=50)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.kürzel + " -- " + str(self.beschreibung)
|
||||||
|
|
||||||
|
# ALARMIERUNG
|
||||||
|
class alarmierung(models.Model):
|
||||||
|
timestamp = models.DateTimeField(auto_created=True)
|
||||||
|
sw = models.ForeignKey(alarmierung_SW, on_delete=models.CASCADE, name="Stichwort")
|
||||||
|
ft = models.CharField(max_length=100, null=True)
|
||||||
|
fz = models.CharField(max_length=100, null=True)
|
||||||
|
fw = models.ForeignKey(feuerwehr, on_delete=models.CASCADE, name="Standort")
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return str(self.timestamp) + " -- " + str(self.Stichwort.kürzel) + " -- " + str(self.ft) + " -- " + str(self.fz) + " -- " + str(self.Standort.name)
|
||||||
|
|
||||||
|
class leitstelle(models.Model):
|
||||||
|
name = models.CharField(max_length=50)
|
||||||
|
fw = models.CharField(max_length=150)
|
||||||
|
def __str__(self):
|
||||||
|
return self.name
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
#einsatz{
|
||||||
|
|
||||||
|
}
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in new issue