Initial commit: Location Management Flask app

This commit is contained in:
ske087
2026-02-26 19:24:17 +02:00
commit 7a22575dab
52 changed files with 3481 additions and 0 deletions

84
app/static/css/style.css Normal file
View File

@@ -0,0 +1,84 @@
/* ── Layout ─────────────────────────────────────────────────────────────── */
#wrapper {
min-height: 100vh;
}
#sidebar {
width: 240px;
min-height: 100vh;
position: sticky;
top: 0;
max-height: 100vh;
overflow-y: auto;
}
#page-content {
min-height: 100vh;
background: var(--bs-body-bg);
}
/* ── Sidebar nav pills ──────────────────────────────────────────────────── */
#sidebar .nav-link {
border-radius: 0.5rem;
padding: 0.5rem 0.75rem;
font-size: 0.9rem;
transition: background 0.15s;
}
#sidebar .nav-link:hover:not(.active) {
background: rgba(255, 255, 255, 0.08);
}
#sidebar .nav-link.active {
background: var(--bs-primary);
color: #fff !important;
}
/* ── Cards ──────────────────────────────────────────────────────────────── */
.card {
background: var(--bs-dark);
}
.stat-card {
transition: transform 0.2s;
}
.stat-card:hover {
transform: translateY(-2px);
}
.board-card {
transition: box-shadow 0.2s;
}
.board-card:hover {
box-shadow: 0 4px 24px rgba(0, 0, 0, 0.4);
}
/* ── Relay buttons ──────────────────────────────────────────────────────── */
.relay-btn {
min-width: 90px;
font-size: 0.8rem;
}
/* ── Login page ─────────────────────────────────────────────────────────── */
body:not(:has(#wrapper)) {
background: #0d1117;
}
/* ── Misc ───────────────────────────────────────────────────────────────── */
.font-monospace {
font-size: 0.85em;
}
.input-badge {
font-size: 0.78rem;
cursor: default;
}
@media (max-width: 768px) {
#sidebar {
width: 100%;
min-height: auto;
position: relative;
}
#wrapper {
flex-direction: column;
}
}

22
app/static/js/app.js Normal file
View File

@@ -0,0 +1,22 @@
/**
* app.js Global Socket.IO connection & UI helpers
*/
document.addEventListener("DOMContentLoaded", function () {
// ── Bootstrap alert auto-dismiss after 4 s ──────────────────────────────
document.querySelectorAll(".alert").forEach(function (el) {
setTimeout(function () {
const bsAlert = bootstrap.Alert.getOrCreateInstance(el);
if (bsAlert) bsAlert.close();
}, 4000);
});
// ── Confirm-before-submit for data-confirm forms ─────────────────────────
document.querySelectorAll("form[data-confirm]").forEach(function (form) {
form.addEventListener("submit", function (e) {
if (!confirm(form.getAttribute("data-confirm"))) {
e.preventDefault();
}
});
});
});

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

7
app/static/vendor/socket.io/socket.io.min.js generated vendored Normal file

File diff suppressed because one or more lines are too long