"Refactor CSS
This commit is contained in:
parent
e4db65c85a
commit
eabb3f6a60
2
backend/app/static/css/tailwind.min.css
vendored
2
backend/app/static/css/tailwind.min.css
vendored
File diff suppressed because one or more lines are too long
@ -100,7 +100,7 @@
|
||||
<!-- Users Tab -->
|
||||
{% if active_tab == 'users' %}
|
||||
<div id="users-tab" class="tab-pane active">
|
||||
<div class="bg-white dark:bg-dark-card rounded-xl shadow-lg p-6">
|
||||
<div class="bg-white dark:bg-dark-card rounded-xl shadow-lg p-6 transition-colors">
|
||||
<div class="flex justify-between items-center mb-6">
|
||||
<h3 class="text-xl font-bold text-slate-900 dark:text-white">Benutzer</h3>
|
||||
<form action="{{ url_for('admin_page', tab='users') }}" method="get">
|
||||
@ -114,7 +114,7 @@
|
||||
</div>
|
||||
<div class="overflow-x-auto rounded-lg border border-light-border dark:border-dark-border">
|
||||
<table class="min-w-full divide-y divide-light-border dark:divide-dark-border">
|
||||
<thead class="bg-slate-50 dark:bg-slate-800">
|
||||
<thead class="bg-slate-50 dark:bg-slate-800 transition-colors">
|
||||
<tr>
|
||||
<th class="px-6 py-3 text-left text-xs font-medium text-slate-500 dark:text-slate-400 uppercase tracking-wider">Benutzer</th>
|
||||
<th class="px-6 py-3 text-left text-xs font-medium text-slate-500 dark:text-slate-400 uppercase tracking-wider">Rolle</th>
|
||||
@ -122,34 +122,34 @@
|
||||
<th class="px-6 py-3 text-right text-xs font-medium text-slate-500 dark:text-slate-400 uppercase tracking-wider">Aktionen</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="bg-white dark:bg-dark-card divide-y divide-light-border dark:divide-dark-border">
|
||||
<tbody class="bg-white dark:bg-dark-card divide-y divide-light-border dark:divide-dark-border transition-colors">
|
||||
{% for user in users %}
|
||||
<tr>
|
||||
<tr class="transition-colors hover:bg-slate-50 dark:hover:bg-slate-700">
|
||||
<td class="px-6 py-4 whitespace-nowrap">
|
||||
<div class="flex items-center">
|
||||
<div class="flex-shrink-0 h-10 w-10 rounded-full bg-blue-100 dark:bg-blue-900 flex items-center justify-center text-blue-700 dark:text-blue-300 font-medium">
|
||||
<div class="flex-shrink-0 h-10 w-10 rounded-full bg-blue-100 dark:bg-blue-900 flex items-center justify-center text-blue-700 dark:text-blue-300 font-medium transition-colors">
|
||||
{{ user.email[0]|upper if user.email else 'U' }}
|
||||
</div>
|
||||
<div class="ml-4">
|
||||
<div class="text-sm font-medium text-slate-900 dark:text-white">{{ user.name }}</div>
|
||||
<div class="text-sm text-slate-500 dark:text-slate-400">{{ user.email }}</div>
|
||||
<div class="text-sm font-medium text-slate-900 dark:text-white transition-colors">{{ user.name }}</div>
|
||||
<div class="text-sm text-slate-500 dark:text-slate-400 transition-colors">{{ user.email }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td class="px-6 py-4 whitespace-nowrap">
|
||||
<span class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full {{ 'bg-purple-100 text-purple-800 dark:bg-purple-900 dark:text-purple-200' if user.is_admin else 'bg-gray-100 text-gray-800 dark:bg-gray-700 dark:text-gray-200' }}">
|
||||
<span class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full {{ 'bg-purple-100 text-purple-800 dark:bg-purple-900 dark:text-purple-200' if user.is_admin else 'bg-gray-100 text-gray-800 dark:bg-gray-700 dark:text-gray-200' }} transition-colors">
|
||||
{{ 'Administrator' if user.is_admin else 'Benutzer' }}
|
||||
</span>
|
||||
</td>
|
||||
<td class="px-6 py-4 whitespace-nowrap">
|
||||
<span class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full {{ 'bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200' if user.active else 'bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-200' }}">
|
||||
<span class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full {{ 'bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200' if user.active else 'bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-200' }} transition-colors">
|
||||
{{ 'Aktiv' if user.active else 'Inaktiv' }}
|
||||
</span>
|
||||
</td>
|
||||
<td class="px-6 py-4 whitespace-nowrap text-right text-sm font-medium">
|
||||
<form method="post" action="{{ url_for('delete_user', user_id=user.id) }}" class="inline" onsubmit="return confirm('Benutzer wirklich löschen?');">
|
||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
|
||||
<button type="submit" class="text-red-600 hover:text-red-900 dark:text-red-400 dark:hover:text-red-300">
|
||||
<button type="submit" class="text-red-600 hover:text-red-900 dark:text-red-400 dark:hover:text-red-300 transition-colors">
|
||||
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16" />
|
||||
</svg>
|
||||
@ -163,8 +163,8 @@
|
||||
</div>
|
||||
|
||||
<!-- Add User Form -->
|
||||
<div class="mt-8 bg-slate-50 dark:bg-slate-800 rounded-lg p-6">
|
||||
<h4 class="text-lg font-semibold text-slate-900 dark:text-white mb-4">Neuen Benutzer hinzufügen</h4>
|
||||
<div class="mt-8 bg-slate-50 dark:bg-slate-800 rounded-lg p-6 transition-colors">
|
||||
<h4 class="text-lg font-semibold text-slate-900 dark:text-white mb-4 transition-colors">Neuen Benutzer hinzufügen</h4>
|
||||
<form action="{{ url_for('create_user') }}" method="post" class="space-y-4">
|
||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
|
||||
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
|
||||
@ -200,9 +200,9 @@
|
||||
<!-- Printers Tab -->
|
||||
{% if active_tab == 'printers' %}
|
||||
<div id="printers-tab" class="tab-pane active">
|
||||
<div class="bg-white dark:bg-dark-card rounded-xl shadow-lg p-6">
|
||||
<div class="bg-white dark:bg-dark-card rounded-xl shadow-lg p-6 transition-colors">
|
||||
<div class="flex justify-between items-center mb-6">
|
||||
<h3 class="text-xl font-bold text-slate-900 dark:text-white">Drucker</h3>
|
||||
<h3 class="text-xl font-bold text-slate-900 dark:text-white transition-colors">Drucker</h3>
|
||||
<form action="{{ url_for('admin_page', tab='printers') }}" method="get">
|
||||
<button type="submit" class="btn btn-primary">
|
||||
<svg class="w-5 h-5 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
@ -214,13 +214,13 @@
|
||||
</div>
|
||||
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
|
||||
{% for printer in printers %}
|
||||
<div class="printer-card">
|
||||
<div class="printer-card transition-colors">
|
||||
<div class="printer-header">
|
||||
<h4 class="printer-name">{{ printer.name }}</h4>
|
||||
<div class="printer-actions">
|
||||
<form method="post" action="{{ url_for('delete_printer', printer_id=printer.id) }}" onsubmit="return confirm('Drucker wirklich löschen?');">
|
||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
|
||||
<button type="submit" class="text-red-600 hover:text-red-900 dark:text-red-400 dark:hover:text-red-300">
|
||||
<button type="submit" class="text-red-600 hover:text-red-900 dark:text-red-400 dark:hover:text-red-300 transition-colors">
|
||||
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16" />
|
||||
</svg>
|
||||
@ -230,59 +230,59 @@
|
||||
</div>
|
||||
<div class="printer-info">
|
||||
<div>
|
||||
<span class="text-sm text-slate-500 dark:text-slate-400">Modell:</span>
|
||||
<span class="text-sm font-medium text-slate-900 dark:text-white">{{ printer.model }}</span>
|
||||
<span class="text-sm text-slate-500 dark:text-slate-400 transition-colors">Modell:</span>
|
||||
<span class="text-sm font-medium text-slate-900 dark:text-white transition-colors">{{ printer.model }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span class="text-sm text-slate-500 dark:text-slate-400">IP-Adresse:</span>
|
||||
<span class="text-sm font-medium text-slate-900 dark:text-white">{{ printer.ip_address }}</span>
|
||||
<span class="text-sm text-slate-500 dark:text-slate-400 transition-colors">IP-Adresse:</span>
|
||||
<span class="text-sm font-medium text-slate-900 dark:text-white transition-colors">{{ printer.ip_address }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span class="text-sm text-slate-500 dark:text-slate-400">Standort:</span>
|
||||
<span class="text-sm font-medium text-slate-900 dark:text-white">{{ printer.location or 'Nicht angegeben' }}</span>
|
||||
<span class="text-sm text-slate-500 dark:text-slate-400 transition-colors">Standort:</span>
|
||||
<span class="text-sm font-medium text-slate-900 dark:text-white transition-colors">{{ printer.location or 'Nicht angegeben' }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="printer-status">
|
||||
<div class="status-indicator {{ 'status-running' if printer.status == 'online' else 'status-stopped' }}"></div>
|
||||
<span class="status-text">{{ 'Online' if printer.status == 'online' else 'Offline' }}</span>
|
||||
<div class="status-indicator {{ 'status-running' if printer.status == 'online' else 'status-stopped' }} transition-colors"></div>
|
||||
<span class="status-text transition-colors">{{ 'Online' if printer.status == 'online' else 'Offline' }}</span>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
<!-- Add Printer Form -->
|
||||
<div class="mt-8 bg-slate-50 dark:bg-slate-800 rounded-lg p-6">
|
||||
<h4 class="text-lg font-semibold text-slate-900 dark:text-white mb-4">Neuen Drucker hinzufügen</h4>
|
||||
<div class="mt-8 bg-slate-50 dark:bg-slate-800 rounded-lg p-6 transition-colors">
|
||||
<h4 class="text-lg font-semibold text-slate-900 dark:text-white mb-4 transition-colors">Neuen Drucker hinzufügen</h4>
|
||||
<form action="{{ url_for('create_printer') }}" method="post" class="space-y-4">
|
||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
|
||||
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
|
||||
<div class="form-group">
|
||||
<label for="printer-name" class="form-label">Name</label>
|
||||
<input type="text" id="printer-name" name="name" class="form-input" required>
|
||||
<label for="printer-name" class="form-label transition-colors">Name</label>
|
||||
<input type="text" id="printer-name" name="name" class="form-input transition-colors" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="printer-model" class="form-label">Modell</label>
|
||||
<input type="text" id="printer-model" name="model" class="form-input" required>
|
||||
<label for="printer-model" class="form-label transition-colors">Modell</label>
|
||||
<input type="text" id="printer-model" name="model" class="form-input transition-colors" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="printer-mac" class="form-label">MAC-Adresse</label>
|
||||
<input type="text" id="printer-mac" name="mac_address" class="form-input" required>
|
||||
<label for="printer-mac" class="form-label transition-colors">MAC-Adresse</label>
|
||||
<input type="text" id="printer-mac" name="mac_address" class="form-input transition-colors" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="printer-location" class="form-label">Standort</label>
|
||||
<input type="text" id="printer-location" name="location" class="form-input">
|
||||
<label for="printer-location" class="form-label transition-colors">Standort</label>
|
||||
<input type="text" id="printer-location" name="location" class="form-input transition-colors">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="printer-plug-ip" class="form-label">Steckdosen-IP</label>
|
||||
<input type="text" id="printer-plug-ip" name="plug_ip" class="form-input">
|
||||
<label for="printer-plug-ip" class="form-label transition-colors">Steckdosen-IP</label>
|
||||
<input type="text" id="printer-plug-ip" name="plug_ip" class="form-input transition-colors">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="printer-plug-username" class="form-label">Steckdosen-Benutzername</label>
|
||||
<input type="text" id="printer-plug-username" name="plug_username" class="form-input">
|
||||
<label for="printer-plug-username" class="form-label transition-colors">Steckdosen-Benutzername</label>
|
||||
<input type="text" id="printer-plug-username" name="plug_username" class="form-input transition-colors">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="printer-plug-password" class="form-label">Steckdosen-Passwort</label>
|
||||
<input type="password" id="printer-plug-password" name="plug_password" class="form-input">
|
||||
<label for="printer-plug-password" class="form-label transition-colors">Steckdosen-Passwort</label>
|
||||
<input type="password" id="printer-plug-password" name="plug_password" class="form-input transition-colors">
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex justify-end">
|
||||
@ -297,9 +297,9 @@
|
||||
<!-- Scheduler Tab -->
|
||||
{% if active_tab == 'scheduler' %}
|
||||
<div id="scheduler-tab" class="tab-pane active">
|
||||
<div class="bg-white dark:bg-dark-card rounded-xl shadow-lg p-6">
|
||||
<div class="bg-white dark:bg-dark-card rounded-xl shadow-lg p-6 transition-colors">
|
||||
<div class="flex justify-between items-center mb-6">
|
||||
<h3 class="text-xl font-bold text-slate-900 dark:text-white">Scheduler Status</h3>
|
||||
<h3 class="text-xl font-bold text-slate-900 dark:text-white transition-colors">Scheduler Status</h3>
|
||||
<div class="flex space-x-4">
|
||||
<form action="{{ url_for('start_scheduler') }}" method="post" class="inline">
|
||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
|
||||
@ -324,26 +324,26 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="scheduler-status">
|
||||
<div class="bg-slate-50 dark:bg-slate-800 rounded-lg p-6 flex items-center justify-between">
|
||||
<div class="bg-slate-50 dark:bg-slate-800 rounded-lg p-6 flex items-center justify-between transition-colors">
|
||||
<div class="flex items-center">
|
||||
<div class="status-indicator {{ 'status-running pulse' if scheduler_status.running else 'status-stopped' }}"></div>
|
||||
<span class="text-xl font-medium ml-3 {{ 'text-success' if scheduler_status.running else 'text-error' }}">
|
||||
<span class="text-xl font-medium ml-3 {{ 'text-green-600 dark:text-green-400' if scheduler_status.running else 'text-red-600 dark:text-red-400' }} transition-colors">
|
||||
{{ 'Aktiv' if scheduler_status.running else 'Inaktiv' }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="text-slate-700 dark:text-slate-300">
|
||||
<div class="text-slate-700 dark:text-slate-300 transition-colors">
|
||||
{{ scheduler_status.message }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mt-6 bg-slate-50 dark:bg-slate-800 rounded-lg p-6">
|
||||
<h4 class="text-lg font-semibold text-slate-900 dark:text-white mb-4">Scheduler Informationen</h4>
|
||||
<div class="mt-6 bg-slate-50 dark:bg-slate-800 rounded-lg p-6 transition-colors">
|
||||
<h4 class="text-lg font-semibold text-slate-900 dark:text-white mb-4 transition-colors">Scheduler Informationen</h4>
|
||||
<div class="space-y-4">
|
||||
<p class="text-slate-700 dark:text-slate-300">
|
||||
<p class="text-slate-700 dark:text-slate-300 transition-colors">
|
||||
Der Scheduler ist verantwortlich für die automatische Zuweisung und Ausführung von Druckaufträgen.
|
||||
Er überwacht kontinuierlich den Status der Drucker und der anstehenden Jobs.
|
||||
</p>
|
||||
<p class="text-slate-700 dark:text-slate-300">
|
||||
<p class="text-slate-700 dark:text-slate-300 transition-colors">
|
||||
<strong>Wichtige Hinweise:</strong>
|
||||
<ul class="list-disc list-inside mt-2 space-y-1">
|
||||
<li>Der Scheduler sollte während des normalen Betriebs immer aktiv sein</li>
|
||||
@ -362,37 +362,37 @@
|
||||
{% if active_tab == 'system' %}
|
||||
<div id="system-tab" class="tab-pane active">
|
||||
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
|
||||
<div class="bg-white dark:bg-dark-card rounded-xl shadow-lg p-6">
|
||||
<h3 class="text-xl font-bold text-slate-900 dark:text-white mb-6">System Ressourcen</h3>
|
||||
<div class="bg-white dark:bg-dark-card rounded-xl shadow-lg p-6 transition-colors">
|
||||
<h3 class="text-xl font-bold text-slate-900 dark:text-white mb-6 transition-colors">System Ressourcen</h3>
|
||||
<div class="space-y-6">
|
||||
<div>
|
||||
<div class="flex justify-between mb-2">
|
||||
<span class="text-slate-700 dark:text-slate-300">CPU Auslastung</span>
|
||||
<span class="text-slate-900 dark:text-white font-medium">{{ system_info.cpu }}%</span>
|
||||
<span class="text-slate-700 dark:text-slate-300 transition-colors">CPU Auslastung</span>
|
||||
<span class="text-slate-900 dark:text-white font-medium transition-colors">{{ system_info.cpu }}%</span>
|
||||
</div>
|
||||
{{ render_progress_bar(system_info.cpu, 'blue')|safe }}
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div class="flex justify-between mb-2">
|
||||
<span class="text-slate-700 dark:text-slate-300">Arbeitsspeicher</span>
|
||||
<span class="text-slate-900 dark:text-white font-medium">{{ system_info.memory }}%</span>
|
||||
<span class="text-slate-700 dark:text-slate-300 transition-colors">Arbeitsspeicher</span>
|
||||
<span class="text-slate-900 dark:text-white font-medium transition-colors">{{ system_info.memory }}%</span>
|
||||
</div>
|
||||
{{ render_progress_bar(system_info.memory, 'green')|safe }}
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div class="flex justify-between mb-2">
|
||||
<span class="text-slate-700 dark:text-slate-300">Festplattenspeicher</span>
|
||||
<span class="text-slate-900 dark:text-white font-medium">{{ system_info.disk }}%</span>
|
||||
<span class="text-slate-700 dark:text-slate-300 transition-colors">Festplattenspeicher</span>
|
||||
<span class="text-slate-900 dark:text-white font-medium transition-colors">{{ system_info.disk }}%</span>
|
||||
</div>
|
||||
{{ render_progress_bar(system_info.disk, 'purple')|safe }}
|
||||
</div>
|
||||
|
||||
<div class="pt-4 border-t border-gray-200 dark:border-gray-700">
|
||||
<div class="pt-4 border-t border-gray-200 dark:border-gray-700 transition-colors">
|
||||
<div class="flex justify-between items-center">
|
||||
<span class="text-slate-700 dark:text-slate-300">System Uptime</span>
|
||||
<span class="text-slate-900 dark:text-white font-medium">{{ system_info.uptime }} Tage</span>
|
||||
<span class="text-slate-700 dark:text-slate-300 transition-colors">System Uptime</span>
|
||||
<span class="text-slate-900 dark:text-white font-medium transition-colors">{{ system_info.uptime }} Tage</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
6
package-lock.json
generated
Normal file
6
package-lock.json
generated
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"name": "Projektarbeit-MYP",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user