Compare commits
2 Commits
3f0d1d1a8d
...
650b83bdf4
| Author | SHA1 | Date | |
|---|---|---|---|
| 650b83bdf4 | |||
| 33f79f07ae |
@@ -11,5 +11,8 @@ class DashboardController < ApplicationController
|
|||||||
|
|
||||||
# 4. Holt die letzten 10 registrierten Artikel für die Aktivitätenanzeige
|
# 4. Holt die letzten 10 registrierten Artikel für die Aktivitätenanzeige
|
||||||
@recent_items = Item.order(created_at: :desc).limit(10).includes(:category, :user, :room)
|
@recent_items = Item.order(created_at: :desc).limit(10).includes(:category, :user, :room)
|
||||||
|
|
||||||
|
# NEU: Die letzten 5 Zuweisungs-Ereignisse laden
|
||||||
|
@recent_assignments = AssignmentLog.order(created_at: :desc).limit(5).includes(:item, :user, :room)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
<% content_for :title, "Dashboard Übersicht" %>
|
<% content_for :title, "Dashboard Übersicht" %>
|
||||||
|
|
||||||
<div class="space-y-6">
|
<div class="space-y-6">
|
||||||
|
|
||||||
<!-- KENNZAHLEN-GRID -->
|
<!-- KENNZAHLEN-GRID -->
|
||||||
<div class="grid grid-cols-1 sm:grid-cols-3 gap-4">
|
<div class="grid grid-cols-1 sm:grid-cols-3 gap-4">
|
||||||
|
|
||||||
<!-- Karte 1: Gesamtartikel -->
|
<!-- Karte 1: Gesamtartikel -->
|
||||||
<div class="bg-white border border-gray-200 rounded-xl p-5 shadow-sm flex items-center gap-4">
|
<div class="bg-white border border-gray-200 rounded-xl p-5 shadow-sm flex items-center gap-4">
|
||||||
<div class="p-3 bg-blue-50 text-blue-600 rounded-lg">
|
<div class="p-3 bg-blue-50 text-blue-600 rounded-lg">
|
||||||
@@ -16,7 +16,7 @@
|
|||||||
<h3 class="text-2xl font-bold text-gray-800"><%= @total_items %></h3>
|
<h3 class="text-2xl font-bold text-gray-800"><%= @total_items %></h3>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Karte 2: Im Lager -->
|
<!-- Karte 2: Im Lager -->
|
||||||
<div class="bg-white border border-gray-200 rounded-xl p-5 shadow-sm flex items-center gap-4">
|
<div class="bg-white border border-gray-200 rounded-xl p-5 shadow-sm flex items-center gap-4">
|
||||||
<div class="p-3 bg-amber-50 text-amber-600 rounded-lg">
|
<div class="p-3 bg-amber-50 text-amber-600 rounded-lg">
|
||||||
@@ -51,7 +51,7 @@
|
|||||||
<svg class="h-5 w-5 text-gray-500" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M12 6v6h4.5m4.5 0a9 9 0 11-18 0 9 9 0 0118 0z" /></svg>
|
<svg class="h-5 w-5 text-gray-500" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M12 6v6h4.5m4.5 0a9 9 0 11-18 0 9 9 0 0118 0z" /></svg>
|
||||||
Zuletzt registrierte Artikel
|
Zuletzt registrierte Artikel
|
||||||
</h2>
|
</h2>
|
||||||
|
|
||||||
<% if @recent_items.any? %>
|
<% if @recent_items.any? %>
|
||||||
<div class="space-y-3">
|
<div class="space-y-3">
|
||||||
<% @recent_items.each do |item| %>
|
<% @recent_items.each do |item| %>
|
||||||
@@ -83,4 +83,52 @@
|
|||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="bg-white border border-gray-200 rounded-xl shadow-sm p-6 mt-6">
|
||||||
|
<h2 class="text-base font-bold text-gray-800 mb-4 flex items-center gap-2">
|
||||||
|
<!-- Heroicon: arrows-right-left -->
|
||||||
|
<svg class="h-5 w-5 text-gray-500" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round" d="M7.5 21L3 16.5m0 0L7.5 12M3 16.5h13.5m0-13.5L21 7.5m0 0L16.5 12M21 7.5H7.5" />
|
||||||
|
</svg>
|
||||||
|
Letzte Artikel-Zuordnungen & Bewegungen
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
<% if @recent_assignments.any? %>
|
||||||
|
<div class="space-y-3">
|
||||||
|
<% @recent_assignments.each do |log| %>
|
||||||
|
<div class="flex items-start sm:items-center justify-between p-3 bg-gray-50 rounded-lg text-sm border border-gray-100 gap-4">
|
||||||
|
<div class="flex items-center gap-3 min-w-0">
|
||||||
|
<!-- Markantes blaues Badge für die Sticker-ID des bewegten Artikels -->
|
||||||
|
<span class="p-1.5 bg-blue-100 text-blue-700 rounded-md font-mono text-[10px] font-bold shrink-0">
|
||||||
|
#<%= log.item.sticker_id %>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
<div class="min-w-0">
|
||||||
|
<p class="font-semibold text-gray-800 truncate">
|
||||||
|
<%= link_to log.item.name, item_path(log.item), class: "hover:text-blue-600 transition" %>
|
||||||
|
</p>
|
||||||
|
<p class="text-xs text-gray-500 truncate">
|
||||||
|
<% if log.user.present? %>
|
||||||
|
Ausgegeben an: 👤 <%= log.user.name %>
|
||||||
|
<% elsif log.room.present? %>
|
||||||
|
Standort: 📍 <%= log.room.name_with_building %>
|
||||||
|
<% else %>
|
||||||
|
📦 Ins Hauptlager gelegt
|
||||||
|
<% end %>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="text-xs text-gray-400 text-right shrink-0">
|
||||||
|
<%= time_ago_in_words(log.created_at) %> vor
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
<% else %>
|
||||||
|
<div class="text-center py-6 text-gray-400 text-sm">
|
||||||
|
Es wurden noch keine Artikel-Bewegungen im System registriert.
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ image: vault171
|
|||||||
# Deploy to these servers.
|
# Deploy to these servers.
|
||||||
servers:
|
servers:
|
||||||
web:
|
web:
|
||||||
- kamaldocker.fritz.box
|
- kamal.fritz.box
|
||||||
# job:
|
# job:
|
||||||
# hosts:
|
# hosts:
|
||||||
# - 192.168.0.1
|
# - 192.168.0.1
|
||||||
|
|||||||
Reference in New Issue
Block a user