klappbare Räume

This commit is contained in:
2025-11-08 18:27:23 +01:00
parent eb822c0318
commit 50e7402152

View File

@@ -57,27 +57,67 @@
.room { .room {
background: white; background: white;
border-radius: 20px; border-radius: 20px;
padding: 2rem; margin-bottom: 1rem;
margin-bottom: 2rem;
box-shadow: 0 8px 30px rgba(0, 0, 0, 0.12); box-shadow: 0 8px 30px rgba(0, 0, 0, 0.12);
transition: transform 0.2s, box-shadow 0.2s; overflow: hidden;
transition: box-shadow 0.2s;
} }
.room:hover { .room:hover {
transform: translateY(-2px);
box-shadow: 0 12px 40px rgba(0, 0, 0, 0.15); box-shadow: 0 12px 40px rgba(0, 0, 0, 0.15);
} }
.room-header {
padding: 1.5rem 2rem;
cursor: pointer;
display: flex;
align-items: center;
justify-content: space-between;
background: white;
transition: background-color 0.2s;
user-select: none;
}
.room-header:hover {
background: #f8f9fa;
}
.room-header:active {
background: #e9ecef;
}
.room-title { .room-title {
color: #333; color: #333;
font-size: 1.75rem; font-size: 1.5rem;
font-weight: 700; font-weight: 700;
margin-bottom: 1.5rem;
padding-bottom: 1rem;
border-bottom: 3px solid #667eea;
display: flex; display: flex;
align-items: center; align-items: center;
gap: 0.75rem; gap: 0.75rem;
margin: 0;
}
.room-toggle {
font-size: 1.5rem;
color: #667eea;
transition: transform 0.3s;
line-height: 1;
}
.room-toggle.collapsed {
transform: rotate(-90deg);
}
.room-content {
padding: 0 2rem 2rem 2rem;
max-height: 5000px;
overflow: hidden;
transition: max-height 0.3s ease-out, padding 0.3s ease-out;
}
.room-content.collapsed {
max-height: 0;
padding-top: 0;
padding-bottom: 0;
} }
.devices { .devices {
@@ -401,8 +441,12 @@
{% if rooms %} {% if rooms %}
{% for room in rooms %} {% for room in rooms %}
<section class="room"> <section class="room">
<div class="room-header" onclick="toggleRoom('room-{{ loop.index }}')">
<h2 class="room-title">{{ room.name }}</h2> <h2 class="room-title">{{ room.name }}</h2>
<span class="room-toggle" id="toggle-room-{{ loop.index }}"></span>
</div>
<div class="room-content" id="room-{{ loop.index }}">
<div class="devices"> <div class="devices">
{% for device in room.devices %} {% for device in room.devices %}
<div class="device-card" data-device-id="{{ device.device_id }}"> <div class="device-card" data-device-id="{{ device.device_id }}">
@@ -516,6 +560,7 @@
</div> </div>
{% endfor %} {% endfor %}
</div> </div>
</div>
</section> </section>
{% endfor %} {% endfor %}
{% else %} {% else %}
@@ -534,6 +579,17 @@
</div> </div>
<script> <script>
// Toggle room visibility
function toggleRoom(roomId) {
const content = document.getElementById(roomId);
const toggle = document.getElementById(`toggle-${roomId}`);
if (content && toggle) {
content.classList.toggle('collapsed');
toggle.classList.toggle('collapsed');
}
}
// Set room icons based on room name // Set room icons based on room name
document.addEventListener('DOMContentLoaded', () => { document.addEventListener('DOMContentLoaded', () => {
const roomTitles = document.querySelectorAll('.room-title'); const roomTitles = document.querySelectorAll('.room-title');