Compare commits

...

5 Commits

5 changed files with 236 additions and 113 deletions
+31
View File
@@ -2063,6 +2063,11 @@ def _upload_excel_items(scope='inventory'):
validation_warnings = []
reserved_codes = set()
known_locations = set(it.get_predefined_locations())
known_filters = {
1: set(it.get_predefined_filter_values(1)),
2: set(it.get_predefined_filter_values(2)),
3: set(it.get_predefined_filter_values(3))
}
def is_code_available(candidate_code):
return candidate_code not in reserved_codes and it.is_code_unique(candidate_code)
@@ -2114,8 +2119,19 @@ def _upload_excel_items(scope='inventory'):
validation_warnings.append((row_number, f'Ort "{ort}" wird neu angelegt'))
filter1 = expand_filter_selection(_excel_list(val('filter1')), 1)
for f in filter1:
if f and f not in known_filters[1]:
validation_warnings.append((row_number, f'Kategorie 1 "{f}" wird neu angelegt'))
filter2 = expand_filter_selection(_excel_list(val('filter2')), 2)
for f in filter2:
if f and f not in known_filters[2]:
validation_warnings.append((row_number, f'Kategorie 2 "{f}" wird neu angelegt'))
filter3 = _excel_list(val('filter3'))
for f in filter3:
if f and f not in known_filters[3]:
validation_warnings.append((row_number, f'Kategorie 3 "{f}" wird neu angelegt'))
anschaffungsjahr = _excel_int(val('anschaffungsjahr'))
raw_year = val('anschaffungsjahr')
@@ -2217,6 +2233,21 @@ def _upload_excel_items(scope='inventory'):
it.add_predefined_location(row['ort'])
known_locations.add(row['ort'])
for f in row.get('filter1', []):
if f and f not in known_filters[1]:
it.add_predefined_filter_value(1, f)
known_filters[1].add(f)
for f in row.get('filter2', []):
if f and f not in known_filters[2]:
it.add_predefined_filter_value(2, f)
known_filters[2].add(f)
for f in row.get('filter3', []):
if f and f not in known_filters[3]:
it.add_predefined_filter_value(3, f)
known_filters[3].add(f)
series_group_id = str(uuid.uuid4()) if row['count'] > 1 else None
row_created_ids = []
+15 -15
View File
@@ -196,7 +196,7 @@ select:focus {
}
.ausleihen {
color: black !important; /* Override any existing color */
/* Color handled securely below */
}
/* Modal image display fix */
@@ -263,12 +263,12 @@ select:focus {
.view-toggle-btn {
width: 38px;
height: 38px;
border: 1px solid #c7ced6;
border: 1px solid var(--ui-border);
border-radius: 50%;
background: #ffffff;
background: var(--ui-surface);
font-size: 1.15rem;
cursor: pointer;
color: #2f3e4e;
color: var(--ui-text);
display: inline-flex;
align-items: center;
justify-content: center;
@@ -277,8 +277,8 @@ select:focus {
.view-toggle-btn:hover {
transform: translateY(-1px);
border-color: #8fa2b7;
background: #f8fbff;
border-color: var(--ui-border);
background: var(--ui-surface-soft);
box-shadow: 0 3px 8px rgba(33, 37, 41, 0.12);
}
@@ -287,9 +287,9 @@ select:focus {
}
.view-toggle-btn[aria-pressed='true'] {
background: #e9f2ff;
border-color: #7ea1c8;
color: #1f4f7a;
background: var(--module-primary-color);
border-color: var(--module-primary-color);
color: white;
}
.table-view-header {
@@ -306,7 +306,7 @@ body.table-view .table-view-header {
border: 0;
border-radius: 10px;
background: transparent;
color: #3f4e5d;
color: var(--ui-text-muted);
font-size: 0.82rem;
font-weight: 700;
text-transform: uppercase;
@@ -325,9 +325,9 @@ body.table-view .item-card {
max-width: none;
margin: 0 0 10px 0;
padding: 12px 14px;
border: 1px solid #e1e6ed;
border: 1px solid var(--ui-border);
border-radius: 10px;
background: #ffffff;
background: var(--ui-surface);
box-shadow: none;
scroll-snap-align: none;
}
@@ -353,7 +353,7 @@ body.table-view .item-card .card-content .item-name-cell,
body.table-view .item-card .card-content .item-col-name {
font-size: 0.98rem;
font-weight: 700;
color: #1f2d3d;
color: var(--ui-title);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
@@ -370,7 +370,7 @@ body.table-view .item-card .card-content .item-col-filter3,
body.table-view .item-card .card-content .item-code-cell,
body.table-view .item-card .card-content .item-col-code,
body.table-view .item-card .card-content .item-col-count {
color: #445465;
color: var(--ui-text-muted);
font-size: 0.9rem;
white-space: nowrap;
overflow: hidden;
@@ -387,7 +387,7 @@ body.table-view .item-card .damage-badge {
body.table-view .item-card .actions {
margin-top: 10px;
padding-top: 10px;
border-top: 1px dashed #d9e0e8;
border-top: 1px dashed var(--ui-border);
}
@media (max-width: 900px) {
+150 -61
View File
@@ -19,7 +19,7 @@
align-items: center;
gap: 12px;
padding: 12px;
border-bottom: 1px solid #e7edf5;
border-bottom: 1px solid var(--ui-border);
background: #f8fafc;
}
@@ -29,7 +29,7 @@
border: 1px solid #dbe3ee;
border-radius: 8px;
background: var(--ui-surface);
color: #334155;
color: var(--ui-text);
font-weight: 700;
line-height: 1;
cursor: pointer;
@@ -60,7 +60,7 @@
align-items: center;
justify-content: center;
border-radius: 8px;
color: #334155;
color: var(--ui-text);
font-size: 0.95rem;
font-weight: 600;
line-height: 1;
@@ -173,7 +173,7 @@
.cal-booking-period {
margin-left: 8px;
color: #475569;
color: var(--ui-text);
font-size: 0.85rem;
font-weight: 600;
}
@@ -225,14 +225,14 @@
.filter-option-group {
margin-bottom: 12px;
border-bottom: 1px solid #eee;
border-bottom: 1px solid var(--ui-border);
padding-bottom: 8px;
}
.filter-group-header {
font-weight: bold;
margin-bottom: 5px;
color: #495057;
color: var(--ui-text-muted);
font-size: 0.9rem;
}
@@ -253,7 +253,7 @@
}
.filter-tag-group {
color: #6c757d;
color: var(--ui-text-muted);
font-size: 0.8em;
font-style: italic;
margin-right: 2px;
@@ -262,7 +262,7 @@
.filter-tag-remove {
background: none;
border: none;
color: #6c757d;
color: var(--ui-text-muted);
margin-left: 5px;
cursor: pointer;
font-size: 1rem;
@@ -321,7 +321,7 @@
border: 1px solid #dc3545 !important;
}
</style>
<div class="container">
<div class="container admin-content-container">
<!-- Conflict warning banner (populated by JS) -->
<div id="conflict-banner" style="display:none; background:#fff3cd; border:1px solid #ffc107; border-left:4px solid #fd7e14; color:#856404; padding:12px 16px; border-radius:4px; margin-bottom:16px; position:relative;">
<strong>⚠ Reservierungskonflikt</strong>
@@ -904,7 +904,7 @@
const filter2More = filter2Array.length > 1 ? ` (+${filter2Array.length - 1} mehr)` : '';
const filter3More = filter3Array.length > 1 ? ` (+${filter3Array.length - 1} mehr)` : '';
const imagesHtml = item.Images ? item.Images.map((file, index) => {
const imagesHtml = item.Images && item.Images.length > 0 ? item.Images.slice(0, 1).map((file, index) => {
// Get file with correct case handling
const image = file;
@@ -1005,14 +1005,14 @@
card.innerHTML = `
<div class="card-content" data-item-id="${item._id}">
<h3 class="item-name-cell">${item.Name}</h3>
<p class="item-ort-cell"><strong>Ort:</strong> ${item.Ort || '-'}</p>
<p class="item-filter1-cell"><strong>Unterrichtsfach:</strong> ${filter1Display}${filter1More}</p>
<p class="item-filter2-cell"><strong>Jahrgangsstufe:</strong> ${filter2Display}${filter2More}</p>
<p class="item-filter3-cell"><strong>Thema:</strong> ${filter3Display}${filter3More}</p>
<p class="item-code-cell"><strong>Barcode:</strong> ${item.Code_4 || '-'}</p>
<p class="item-count-cell"><strong>Anzahl:</strong> ${groupedCount}</p>
${isGroupedItem ? `<p class="item-count-cell"><strong>Verfügbar:</strong> ${availableGroupedCount}</p>` : ''}
<h3 class="item-col-name">${item.Name}</h3>
<p class="item-col-location"><strong>Ort:</strong> ${item.Ort || '-'}</p>
<p class="item-col-filter1"><strong>Unterrichtsfach:</strong> ${filter1Display}${filter1More}</p>
<p class="item-col-filter2"><strong>Jahrgangsstufe:</strong> ${filter2Display}${filter2More}</p>
<p class="item-col-filter3"><strong>Thema:</strong> ${filter3Display}${filter3More}</p>
<p class="item-col-code"><strong>Barcode:</strong> ${item.Code_4 || '-'}</p>
<p class="item-col-count"><strong>Anzahl:</strong> ${groupedCount}</p>
${isGroupedItem ? `<p class="item-col-count"><strong>Verfügbar:</strong> ${availableGroupedCount}</p>` : ''}
<div class="image-container">
${imagesHtml}
</div>
@@ -1631,7 +1631,7 @@
<div class="detail-group">
<div class="detail-label">Anschaffungskosten:</div>
<div class="detail-value">${item.Anschaffungskosten || '-'}</div>
<div class="detail-value">${item.Anschaffungskosten ? item.Anschaffungskosten + ' €' : '-'}</div>
</div>
<div class="detail-group full-width">
@@ -1719,7 +1719,7 @@
: `<button class="ausleihen disabled-button" disabled>${item.BlockedNow ? 'Reserviert' : 'Ausgeliehen'}</button>`
}
${canScheduleItem ? `<button class="schedule-button" onclick="openScheduleModal('${item._id}')">Termin planen</button>` : ''}
<button type="button" class="close-modal secondary-close" onclick="document.getElementById('item-modal').style.display='none';">Schließen</button>
<button type="button" class="details-button" onclick="document.getElementById('item-modal').style.display='none';">Schließen</button>
</div>
`;
@@ -2856,7 +2856,7 @@
.clear-filter {
font-size: 0.8rem;
color: #6c757d;
color: var(--ui-text-muted);
}
.filter-dropdown {
@@ -2903,14 +2903,14 @@
.filter-option-group {
margin-bottom: 12px;
border-bottom: 1px solid #eee;
border-bottom: 1px solid var(--ui-border);
padding-bottom: 8px;
}
.filter-group-header {
font-weight: bold;
margin-bottom: 5px;
color: #495057;
color: var(--ui-text-muted);
font-size: 0.9rem;
}
@@ -2931,7 +2931,7 @@
}
.filter-tag-group {
color: #6c757d;
color: var(--ui-text-muted);
font-size: 0.8em;
font-style: italic;
margin-right: 2px;
@@ -2940,7 +2940,7 @@
.filter-tag-remove {
background: none;
border: none;
color: #6c757d;
color: var(--ui-text-muted);
margin-left: 5px;
cursor: pointer;
font-size: 1rem;
@@ -3029,7 +3029,7 @@
border: 1px solid #dbe3ee;
border-radius: 10px;
background: #f8fafc;
color: #334155;
color: var(--ui-text);
justify-content: center;
align-items: center;
flex-direction: column;
@@ -3088,17 +3088,17 @@
.item-card {
background-color: var(--ui-surface);
border: 1px solid var(--ui-border);
border-radius: 5px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
border-radius: var(--ui-radius);
box-shadow: var(--ui-shadow-sm);
padding: 20px;
max-width: 300px;
flex-shrink: 0;
width: 100%;
max-width: 340px;
flex: 1 1 300px;
scroll-snap-align: center;
cursor: pointer;
transition: transform 0.2s;
position: relative;
transition: transform 0.2s, box-shadow 0.2s;
position: relative;
}
.item-card:hover {
transform: translateY(-5px);
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2);
@@ -3143,7 +3143,7 @@
.item-modal {
display: none;
position: fixed;
z-index: 1000;
z-index: 2500;
left: 0;
top: 0;
width: 100%;
@@ -3238,7 +3238,7 @@
}
.cancel-button {
background-color: #6c757d;
background-color: var(--ui-text-muted);
color: white;
}
@@ -3470,6 +3470,19 @@
/* Responsive adjustments */
@media (max-width: 768px) {
/* Mobile viewport and scrolling improvements */
html, body {
overflow-x: hidden !important;
-webkit-overflow-scrolling: touch !important;
touch-action: pan-y !important;
height: 100% !important;
}
body {
padding: 0 !important;
margin: 0 !important;
}
.filter-container {
flex-direction: column;
}
@@ -3555,8 +3568,9 @@
display: grid !important;
grid-template-columns: 1fr !important;
gap: 15px !important;
padding: 10px 0 0 !important;
padding: 10px 0 !important;
overflow-x: visible !important;
scroll-snap-type: none !important;
}
.item-card {
@@ -3640,7 +3654,7 @@
display: block !important;
margin-bottom: 8px !important;
font-weight: 600 !important;
color: #333 !important;
color: var(--ui-title) !important;
}
.form-group input, .form-group select, .form-group textarea {
@@ -3711,8 +3725,8 @@
}
/* Element text colors for better visibility */
.edit-button, .duplicate-button, .generate-qr-button, .ausleihen {
color: black !important;
.edit-button, .duplicate-button, .generate-qr-button {
color: var(--ui-title) !important;
}
/* Standardized button styles across the application */
@@ -3873,7 +3887,7 @@
.modal-details { margin: 20px 0; }
.detail-group { display: flex; margin-bottom: 10px; align-items: flex-start; }
.detail-group.full-width { flex-direction: column; margin-bottom: 15px; }
.detail-label { font-weight: bold; color: #495057; min-width: 150px; margin-right: 10px; }
.detail-label { font-weight: bold; color: var(--ui-text-muted); min-width: 150px; margin-right: 10px; }
.detail-value { color: #212529; flex: 1; word-wrap: break-word; }
.detail-group.full-width .detail-label { margin-bottom: 5px; }
.detail-group.full-width .detail-value {
@@ -3955,7 +3969,7 @@
align-items: center;
padding: 15px;
background-color: var(--ui-surface);
border-bottom: 1px solid #f3f4f6;
border-bottom: 1px solid var(--ui-border);
}
.calendar-header button {
@@ -4100,6 +4114,7 @@
border: none !important;
border-radius: 0 !important;
box-shadow: none !important;
box-sizing: border-box !important;
}
.filter-group {
@@ -4121,7 +4136,7 @@
font-size: 0.95rem !important;
font-weight: 600 !important;
line-height: 1.35 !important;
color: #212529 !important;
color: var(--ui-title) !important;
word-break: break-word !important;
overflow-wrap: anywhere !important;
}
@@ -4159,7 +4174,7 @@
overflow-wrap: break-word !important;
}
body.table-view .item-card .card-content .item-name-cell {
body.table-view .item-card .card-content .item-col-name {
font-size: 0.95rem !important;
}
@@ -4199,7 +4214,7 @@
display: block !important;
margin-right: 0 !important;
margin-bottom: 2px !important;
color: #6c757d !important;
color: var(--ui-text-muted) !important;
font-size: 0.8rem !important;
}
@@ -4219,8 +4234,12 @@
}
.items-container {
padding: 6px 0 !important;
gap: 10px !important;
display: grid !important;
grid-template-columns: 1fr !important;
gap: 15px !important;
padding: 10px 0 !important;
overflow-x: visible !important;
scroll-snap-type: none !important;
}
body.table-view .table-view-header {
@@ -4237,16 +4256,17 @@
}
.item-card {
border: none !important;
border-radius: 0 !important;
box-shadow: none !important;
border-bottom: 1px solid #e5e7eb !important;
padding: 12px 0 !important;
max-width: 100% !important;
margin: 0 !important;
padding: 15px !important;
scroll-snap-align: none !important;
content-visibility: auto;
contain-intrinsic-size: auto 300px;
}
.item-card:hover {
transform: none !important;
box-shadow: none !important;
transform: translateY(-2px) !important;
box-shadow: var(--ui-shadow-md) !important;
}
.item-card .image-container {
@@ -4311,13 +4331,12 @@
}
.modal-content {
width: 100% !important;
max-width: 100% !important;
height: 100vh !important;
max-height: 100vh !important;
margin: 0 !important;
border: none !important;
border-radius: 0 !important;
width: calc(100vw - 16px) !important;
max-width: none !important;
margin: 80px auto 10px !important;
max-height: 85vh !important;
overflow-y: auto !important;
border-radius: 8px !important;
padding: 16px !important;
}
@@ -4579,4 +4598,74 @@ function openItemQuick(id){
}
}
</style>
{% endblock %}
{% endblock %}
<style>
/* Admin/Main Content Container align */
.admin-content-container {
--table-columns: minmax(190px, 2fr) repeat(6, minmax(110px, 1fr));
}
@media screen and (min-width: 769px) and (max-width: 1024px) {
.admin-content-container {
width: 90% !important;
}
.items-container {
display: grid !important;
grid-template-columns: repeat(2, 1fr) !important;
gap: 20px !important;
}
}
@media screen and (max-width: 768px) {
.admin-content-container {
width: 100% !important;
max-width: 100% !important;
margin: 0 !important;
padding: 12px 12px 18px !important;
box-sizing: border-box !important;
overflow-x: hidden !important;
}
.item-card .item-image {
width: 100% !important;
height: auto !important;
max-height: 300px !important;
display: block !important;
object-fit: cover !important;
}
.item-card .image-container {
height: 200px !important;
overflow: hidden !important;
position: relative !important;
margin-bottom: 15px !important;
}
.actions {
gap: 8px !important;
border-top: none !important;
padding-top: 8px !important;
flex-direction: column !important;
align-items: stretch !important;
}
.actions form,
.actions button,
.actions a {
width: 100% !important;
}
.items-container, .item-card, .image-container, .item-image {
touch-action: pan-y !important;
-webkit-overflow-scrolling: touch !important;
}
}
@media (max-width: 767px) {
body {
overflow-x: hidden;
-webkit-overflow-scrolling: touch;
touch-action: pan-y;
}
.admin-content-container {
width: 100%;
max-width: 100%;
margin: 0;
padding: 12px 12px 18px;
box-sizing: border-box;
overflow-x: hidden;
}
}
</style>
+39 -36
View File
@@ -21,7 +21,7 @@
.items-indicator {
text-align: center;
font-size: 0.9rem;
color: #495057;
color: var(--ui-text-muted);
margin: 6px 0 16px;
font-weight: 600;
}
@@ -78,7 +78,7 @@
}
.bulk-delete-summary {
color: #334155;
color: var(--ui-text);
font-size: 0.92rem;
margin-top: 4px;
}
@@ -105,7 +105,7 @@
padding: 9px 12px;
cursor: pointer;
background: #f8fafc;
color: #1e293b;
color: var(--ui-title);
font-weight: 600;
text-align: center;
}
@@ -161,7 +161,7 @@
.clear-filter {
font-size: 0.8rem;
color: #6c757d;
color: var(--ui-text-muted);
}
.filter-dropdown {
@@ -208,14 +208,14 @@
.filter-option-group {
margin-bottom: 12px;
border-bottom: 1px solid #eee;
border-bottom: 1px solid var(--ui-border);
padding-bottom: 8px;
}
.filter-group-header {
font-weight: bold;
margin-bottom: 5px;
color: #495057;
color: var(--ui-text-muted);
font-size: 0.9rem;
}
@@ -236,7 +236,7 @@
}
.filter-tag-group {
color: #6c757d;
color: var(--ui-text-muted);
font-size: 0.8em;
font-style: italic;
margin-right: 2px;
@@ -245,7 +245,7 @@
.filter-tag-remove {
background: none;
border: none;
color: #6c757d;
color: var(--ui-text-muted);
margin-left: 5px;
cursor: pointer;
font-size: 1rem;
@@ -334,7 +334,7 @@
border: 1px solid #dbe3ee;
border-radius: 10px;
background: #f8fafc;
color: #334155;
color: var(--ui-text);
justify-content: center;
align-items: center;
flex-direction: column;
@@ -393,14 +393,15 @@
.item-card {
background-color: var(--ui-surface);
border: 1px solid var(--ui-border);
border-radius: 5px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
border-radius: var(--ui-radius);
box-shadow: var(--ui-shadow-sm);
padding: 20px;
max-width: 300px;
flex-shrink: 0;
width: 100%;
max-width: 340px;
flex: 1 1 300px;
scroll-snap-align: center;
cursor: pointer;
transition: transform 0.2s;
transition: transform 0.2s, box-shadow 0.2s;
position: relative;
}
@@ -447,7 +448,7 @@
align-items: center;
gap: 6px;
font-size: 0.9rem;
color: #475569;
color: var(--ui-text);
cursor: pointer;
user-select: none;
}
@@ -581,7 +582,7 @@
.item-modal {
display: none;
position: fixed;
z-index: 1000;
z-index: 2500;
left: 0;
top: 0;
width: 100%;
@@ -676,7 +677,7 @@
}
.cancel-button {
background-color: #6c757d;
background-color: var(--ui-text-muted);
color: white;
}
@@ -711,7 +712,7 @@
.filter-inputs h3 {
margin-top: 0;
margin-bottom: 15px;
color: #495057;
color: var(--ui-text-muted);
}
.multi-filter {
@@ -1000,16 +1001,16 @@
/* Disabled Button */
.disabled-button {
background-color: #6c757d !important;
border-color: #6c757d !important;
background-color: var(--ui-text-muted) !important;
border-color: var(--ui-text-muted) !important;
color: #fff !important;
cursor: not-allowed !important;
opacity: 0.6;
}
.disabled-button:hover {
background-color: #6c757d !important;
border-color: #6c757d !important;
background-color: var(--ui-text-muted) !important;
border-color: var(--ui-text-muted) !important;
transform: none !important;
box-shadow: none !important;
}
@@ -1032,7 +1033,7 @@
.detail-label {
font-weight: bold;
color: #495057;
color: var(--ui-text-muted);
min-width: 150px;
margin-right: 10px;
}
@@ -1351,7 +1352,7 @@
display: block !important;
margin-bottom: 8px !important;
font-weight: 600 !important;
color: #333 !important;
color: var(--ui-title) !important;
}
.form-group input, .form-group select, .form-group textarea {
@@ -1389,7 +1390,7 @@
/* Tab navigation improvements */
.nav-tabs {
flex-wrap: wrap !important;
border-bottom: 1px solid #dee2e6 !important;
border-bottom: 1px solid var(--ui-border) !important;
}
.nav-tabs .nav-link {
@@ -1605,6 +1606,7 @@
gap: 15px !important;
padding: 10px 0 !important;
overflow-x: visible !important;
scroll-snap-type: none !important;
}
.item-card {
@@ -1688,7 +1690,7 @@
display: block !important;
margin-bottom: 8px !important;
font-weight: 600 !important;
color: #333 !important;
color: var(--ui-title) !important;
}
.form-group input, .form-group select, .form-group textarea {
@@ -1962,8 +1964,8 @@
}
/* Element text colors for better visibility */
.edit-button, .duplicate-button, .generate-qr-button, .ausleihen {
color: black !important;
.edit-button, .duplicate-button, .generate-qr-button {
color: var(--ui-title) !important;
}
/* Standardized button styles across the application */
@@ -2019,7 +2021,7 @@
align-items: center;
gap: 12px;
padding: 12px;
border-bottom: 1px solid #e7edf5;
border-bottom: 1px solid var(--ui-border);
background: #f8fafc;
}
@@ -2029,7 +2031,7 @@
border: 1px solid #dbe3ee;
border-radius: 8px;
background: var(--ui-surface);
color: #334155;
color: var(--ui-text);
font-weight: 700;
line-height: 1;
cursor: pointer;
@@ -2060,7 +2062,7 @@
align-items: center;
justify-content: center;
border-radius: 8px;
color: #334155;
color: var(--ui-text);
font-size: 0.95rem;
font-weight: 600;
line-height: 1;
@@ -2173,7 +2175,7 @@
.cal-booking-period {
margin-left: 8px;
color: #475569;
color: var(--ui-text);
font-size: 0.85rem;
font-weight: 600;
}
@@ -2582,7 +2584,7 @@ document.addEventListener('DOMContentLoaded', ()=>{
<input type="date" id="edit-year" name="anschaffungsjahr">
</div>
<div class="form-group">
<label for="edit-cost">Anschaffungskosten:</label>
<label for="edit-cost">Anschaffungskosten (€):</label>
<input id="edit-cost" name="anschaffungskosten">
</div>
<div class="form-group">
@@ -3528,7 +3530,7 @@ document.addEventListener('DOMContentLoaded', ()=>{
const filter2More = filter2Array.length > 1 ? ` (+${filter2Array.length - 1} mehr)` : '';
const filter3More = filter3Array.length > 1 ? ` (+${filter3Array.length - 1} mehr)` : '';
const imagesHtml = item.Images ? item.Images.map((image, index) => {
const imagesHtml = item.Images && item.Images.length > 0 ? item.Images.slice(0, 1).map((image, index) => {
// Check if the image already has a full URL path or just the filename
const imageSrc = image.startsWith('/uploads/') || image.startsWith('http') ?
image :
@@ -4439,7 +4441,7 @@ document.addEventListener('DOMContentLoaded', ()=>{
<div class="detail-group">
<div class="detail-label">Anschaffungskosten:</div>
<div class="detail-value">${item.Anschaffungskosten || '-'}</div>
<div class="detail-value">${item.Anschaffungskosten ? item.Anschaffungskosten + ' €' : '-'}</div>
</div>
<div class="detail-group full-width">
@@ -4533,6 +4535,7 @@ document.addEventListener('DOMContentLoaded', ()=>{
<form method="POST" action="/delete_item/${item._id}" style="display:inline;" onsubmit="return confirm('Sind Sie sicher?')">
<button class="delete-button" type="submit">Löschen</button>
</form>
<button type="button" class="details-button" onclick="document.getElementById('item-modal').style.display='none';">Schließen</button>
</div>
`;
@@ -5667,7 +5670,7 @@ document.addEventListener('DOMContentLoaded', ()=>{
display: block !important;
margin-right: 0 !important;
margin-bottom: 2px !important;
color: #6c757d !important;
color: var(--ui-text-muted) !important;
font-size: 0.8rem !important;
}
+1 -1
View File
@@ -863,7 +863,7 @@
<input type="date" id="anschaffungsjahr" name="anschaffungsjahr">
</div>
<div class="form-group">
<label for="anschaffungskosten">Anschaffungskosten</label>
<label for="anschaffungskosten">Anschaffungskosten (€)</label>
<input id="anschaffungskosten" name="anschaffungskosten">
</div>
<div class="form-group">