Dieser Commit ist enthalten in:
hendrik_gebhardt@gmx.de
2026-01-10 10:32:52 +00:00
committet von Server Deploy
Ursprung 7d67557be4
Commit ef153789cc
20 geänderte Dateien mit 13613 neuen und 333 gelöschten Zeilen

Datei anzeigen

@ -173,13 +173,67 @@
<div class="header-center">
<!-- View Tabs -->
<nav class="view-tabs">
<button class="view-tab active" data-view="board">Board</button>
<button class="view-tab" data-view="list">Liste</button>
<button class="view-tab" data-view="calendar">Kalender</button>
<button class="view-tab" data-view="proposals">Genehmigung</button>
<button class="view-tab" data-view="coding">Coding</button>
<button class="view-tab" data-view="knowledge">Wissen</button>
<button class="view-tab" data-view="contacts">Kontakte</button>
<button class="view-tab active" data-view="board">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<rect x="3" y="3" width="7" height="7" rx="1"/>
<rect x="14" y="3" width="7" height="7" rx="1"/>
<rect x="3" y="14" width="7" height="7" rx="1"/>
<rect x="14" y="14" width="7" height="7" rx="1"/>
</svg>
Board
</button>
<button class="view-tab" data-view="list">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<line x1="8" y1="6" x2="21" y2="6"/>
<line x1="8" y1="12" x2="21" y2="12"/>
<line x1="8" y1="18" x2="21" y2="18"/>
<circle cx="3.5" cy="6" r="1" fill="currentColor"/>
<circle cx="3.5" cy="12" r="1" fill="currentColor"/>
<circle cx="3.5" cy="18" r="1" fill="currentColor"/>
</svg>
Liste
</button>
<button class="view-tab" data-view="calendar">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<rect x="3" y="4" width="18" height="18" rx="2"/>
<line x1="16" y1="2" x2="16" y2="6"/>
<line x1="8" y1="2" x2="8" y2="6"/>
<line x1="3" y1="10" x2="21" y2="10"/>
<circle cx="12" cy="16" r="1" fill="currentColor"/>
</svg>
Kalender
</button>
<button class="view-tab" data-view="proposals">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M9 11l3 3L22 4"/>
<path d="M21 12v7a2 2 0 01-2 2H5a2 2 0 01-2-2V5a2 2 0 012-2h11"/>
</svg>
Genehmigung
</button>
<button class="view-tab" data-view="coding">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<polyline points="16 18 22 12 16 6"/>
<polyline points="8 6 2 12 8 18"/>
<line x1="12" y1="20" x2="12" y2="4" transform="rotate(-15 12 12)"/>
</svg>
Coding
</button>
<button class="view-tab" data-view="knowledge">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"/>
<path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"/>
</svg>
Wissen
</button>
<button class="view-tab" data-view="contacts">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/>
<circle cx="9" cy="7" r="4"/>
<path d="M23 21v-2a4 4 0 0 0-3-3.87"/>
<path d="M16 3.13a4 4 0 0 1 0 7.75"/>
</svg>
Kontakte
</button>
</nav>
</div>
@ -579,42 +633,103 @@
<!-- Contacts View -->
<div id="view-contacts" class="view view-contacts hidden">
<div class="contacts-header">
<h2>Kontakte</h2>
<button id="btn-new-contact" class="btn btn-primary">
<i class="fas fa-plus"></i>
Neuer Kontakt
</button>
</div>
<div class="contacts-controls">
<div class="contacts-filters">
<select id="contacts-tag-filter">
<option value="">Alle Tags</option>
</select>
<select id="contacts-sort">
<option value="created_at-desc">Neueste zuerst</option>
<option value="created_at-asc">Älteste zuerst</option>
<option value="name-asc">Name (A-Z)</option>
<option value="name-desc">Name (Z-A)</option>
<option value="company-asc">Firma (A-Z)</option>
<option value="company-desc">Firma (Z-A)</option>
</select>
<div class="view-wrapper">
<div class="contacts-header">
<h2>Kontakte</h2>
<div class="header-actions">
<div class="contacts-stats">
<span id="contacts-count">0 Kontakte</span>
</div>
<button id="btn-export-contacts" class="btn btn-secondary btn-export">
<svg viewBox="0 0 24 24" width="16" height="16">
<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M7 10l5 5 5-5M12 15V3" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
Exportieren
</button>
<button id="btn-new-contact" class="btn btn-primary">
<svg viewBox="0 0 24 24" width="18" height="18">
<path d="M12 5v14M5 12h14" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round"/>
</svg>
Neuer Kontakt
</button>
</div>
</div>
</div>
<div id="contacts-grid" class="contacts-grid">
<!-- Contact cards will be rendered here -->
</div>
<div class="contacts-controls">
<div class="contacts-controls-top">
<div class="bulk-actions hidden" id="bulk-actions">
<span class="bulk-actions-info"><span id="selected-count">0</span> ausgewählt</span>
<button id="btn-bulk-delete" class="btn btn-danger btn-sm">
<svg viewBox="0 0 24 24" width="16" height="16">
<path d="M3 6h18M8 6V4a2 2 0 012-2h4a2 2 0 012 2v2m3 0v12a2 2 0 01-2 2H7a2 2 0 01-2-2V6h14M10 11v6M14 11v6" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
Löschen
</button>
<button id="btn-deselect-all" class="btn btn-secondary btn-sm">Abwählen</button>
</div>
<div class="contacts-filters">
<div class="filter-group">
<label for="contacts-tag-filter" class="sr-only">Tags filtern</label>
<select id="contacts-tag-filter" class="filter-select">
<option value="">Alle Tags</option>
</select>
</div>
</div>
</div>
</div>
<div id="contacts-empty" class="contacts-empty hidden">
<i class="fas fa-address-book"></i>
<h3>Keine Kontakte vorhanden</h3>
<p>Erstellen Sie Ihren ersten Kontakt.</p>
<button class="btn btn-primary" onclick="document.getElementById('btn-new-contact').click()">
<i class="fas fa-plus"></i>
Ersten Kontakt erstellen
</button>
<div class="contacts-table-container">
<table class="contacts-table" id="contacts-table">
<thead>
<tr>
<th class="checkbox-cell">
<input type="checkbox" class="table-checkbox" id="select-all-contacts">
</th>
<th class="sortable" data-sort="name">Name</th>
<th class="sortable" data-sort="company">Firma</th>
<th class="sortable hide-mobile" data-sort="position">Position</th>
<th class="sortable" data-sort="email">E-Mail</th>
<th class="hide-mobile">Telefon</th>
<th>Tags</th>
<th>Aktionen</th>
</tr>
</thead>
<tbody id="contacts-tbody">
<!-- Table rows will be rendered here -->
</tbody>
</table>
<div class="pagination hidden" id="contacts-pagination">
<button class="pagination-btn" id="btn-prev-page" disabled>
<svg viewBox="0 0 24 24" width="16" height="16">
<path d="M15 18l-6-6 6-6" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</button>
<span class="pagination-info">
Seite <span id="current-page">1</span> von <span id="total-pages">1</span>
</span>
<button class="pagination-btn" id="btn-next-page" disabled>
<svg viewBox="0 0 24 24" width="16" height="16">
<path d="M9 18l6-6-6-6" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</button>
</div>
</div>
<div id="contacts-empty" class="contacts-empty hidden">
<div class="empty-icon">
<svg viewBox="0 0 24 24" width="64" height="64" fill="none" stroke="currentColor" stroke-width="2">
<path d="M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</div>
<h3>Keine Kontakte vorhanden</h3>
<p>Erstellen Sie Ihren ersten Kontakt.</p>
<button class="btn btn-primary" onclick="document.getElementById('btn-new-contact').click()">
<svg viewBox="0 0 24 24" width="18" height="18">
<path d="M12 5v14M5 12h14" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round"/>
</svg>
Ersten Kontakt erstellen
</button>
</div>
</div>
</div>
@ -1915,23 +2030,19 @@
<input type="hidden" id="reminder-color" value="#F59E0B">
</div>
<div class="form-group">
<label for="reminder-advance">Erinnerung</label>
<label for="reminder-advance">Vorab-Erinnerung</label>
<div class="advance-options">
<label class="checklist-item">
<input type="checkbox" name="advance-days" value="1" checked>
<span class="checklist-checkbox"></span>
<span class="checklist-text">1 Tag vorher</span>
</label>
<label class="checklist-item">
<input type="checkbox" name="advance-days" value="2">
<span class="checklist-checkbox"></span>
<span class="checklist-text">2 Tage vorher</span>
</label>
<label class="checklist-item">
<input type="checkbox" name="advance-days" value="3">
<span class="checklist-checkbox"></span>
<span class="checklist-text">3 Tage vorher</span>
</label>
<div class="reminder-advance-control">
<div class="reminder-advance-inputs">
<input type="number" id="reminder-advance-number" min="1" max="9" value="1" class="form-control reminder-number-input">
<select id="reminder-advance-unit" class="form-control reminder-unit-select">
<option value="day">Tag(e)</option>
<option value="week">Woche(n)</option>
<option value="month">Monat(e)</option>
</select>
<span class="reminder-advance-suffix">vorher</span>
</div>
</div>
</div>
</div>
</div>