Add auto-rules management, bulk actions for tickets
- Auto-rules JS: load, render, save, edit, delete, toggle rules - Rules UI: Säännöt view with rule list and form - Bulk actions: checkbox selection in ticket list - Bulk close/delete endpoints (ticket_bulk_status, ticket_bulk_delete) - Bulk toolbar with select all, close selected, delete selected Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
69
index.html
69
index.html
@@ -264,12 +264,20 @@
|
||||
<label style="display:flex;align-items:center;gap:0.4rem;font-size:0.85rem;color:#777;cursor:pointer;white-space:nowrap;">
|
||||
<input type="checkbox" id="ticket-show-closed"> Suljetut
|
||||
</label>
|
||||
<button class="btn-secondary" id="btn-ticket-rules" style="padding:7px 14px;font-size:0.82rem;">⚙ Säännöt</button>
|
||||
</div>
|
||||
<div id="ticket-fetch-status" style="display:none;padding:0.75rem 1rem;border-radius:8px;margin-bottom:1rem;font-size:0.9rem;"></div>
|
||||
<div id="bulk-actions-toolbar" style="display:none;align-items:center;gap:0.75rem;padding:0.6rem 1rem;background:#fff3cd;border:1px solid #ffc107;border-radius:8px;margin-bottom:0.75rem;font-size:0.85rem;">
|
||||
<span id="bulk-count" style="font-weight:600;">0 valittu</span>
|
||||
<button class="btn-secondary" onclick="bulkCloseSelected()" style="padding:5px 14px;font-size:0.82rem;color:#555;border-color:#ddd;">Sulje valitut</button>
|
||||
<button class="btn-danger" onclick="bulkDeleteSelected()" style="padding:5px 14px;font-size:0.82rem;">Poista valitut</button>
|
||||
<button style="background:none;border:none;cursor:pointer;font-size:0.82rem;color:#888;margin-left:auto;" onclick="bulkSelectedIds.clear();document.querySelectorAll('.ticket-checkbox,#bulk-select-all').forEach(c=>c.checked=false);updateBulkToolbar();">Tyhjennä valinta</button>
|
||||
</div>
|
||||
<div class="table-card">
|
||||
<table id="tickets-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width:30px;"><input type="checkbox" id="bulk-select-all" title="Valitse kaikki"></th>
|
||||
<th>Tila</th>
|
||||
<th>Tyyppi</th>
|
||||
<th>Aihe</th>
|
||||
@@ -312,6 +320,67 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Sääntönäkymä -->
|
||||
<div id="ticket-rules-view" style="display:none;">
|
||||
<button class="btn-secondary" id="btn-rules-back" style="color:#555;border-color:#ddd;margin-bottom:1rem;">← Takaisin tiketteihin</button>
|
||||
<div class="table-card" style="padding:1.5rem;">
|
||||
<div style="display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;">
|
||||
<h3 style="color:#0f3460;margin:0;">Automaattisäännöt</h3>
|
||||
<button class="btn-primary" id="btn-add-rule" style="font-size:0.85rem;">+ Lisää sääntö</button>
|
||||
</div>
|
||||
<p style="color:#888;font-size:0.85rem;margin-bottom:1rem;">Säännöt soveltuvat automaattisesti uusiin tiketteihin haettaessa sähköposteja. Ensimmäinen täsmäävä sääntö voittaa.</p>
|
||||
<div id="rules-list"></div>
|
||||
</div>
|
||||
<!-- Sääntölomake -->
|
||||
<div id="rule-form-container" class="table-card" style="padding:1.5rem;margin-top:1rem;display:none;">
|
||||
<h4 style="color:#0f3460;margin-bottom:1rem;" id="rule-form-title">Uusi sääntö</h4>
|
||||
<input type="hidden" id="rule-form-id">
|
||||
<div class="form-grid" style="max-width:600px;">
|
||||
<div class="form-group full-width">
|
||||
<label>Säännön nimi *</label>
|
||||
<input type="text" id="rule-form-name" placeholder="esim. Sulje notifikaatiot">
|
||||
</div>
|
||||
<div class="form-group full-width" style="margin-top:0.5rem;">
|
||||
<label style="font-weight:600;color:#0f3460;">Ehdot (molemmat pitää täsmätä jos täytetty)</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Lähettäjä sisältää</label>
|
||||
<input type="text" id="rule-form-from" placeholder="esim. noreply@">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Otsikko sisältää</label>
|
||||
<input type="text" id="rule-form-subject" placeholder="esim. saatavuuskysely">
|
||||
</div>
|
||||
<div class="form-group full-width" style="margin-top:0.5rem;">
|
||||
<label style="font-weight:600;color:#0f3460;">Toimenpiteet</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Aseta tila</label>
|
||||
<select id="rule-form-status">
|
||||
<option value="">Ei muuteta</option>
|
||||
<option value="suljettu">Suljettu</option>
|
||||
<option value="kasittelyssa">Käsittelyssä</option>
|
||||
<option value="ratkaistu">Ratkaistu</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Aseta tyyppi</label>
|
||||
<select id="rule-form-type">
|
||||
<option value="">Ei muuteta</option>
|
||||
<option value="laskutus">Laskutus</option>
|
||||
<option value="tekniikka">Tekniikka</option>
|
||||
<option value="vika">Vika</option>
|
||||
<option value="muu">Muu</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div style="display:flex;gap:0.5rem;margin-top:1rem;">
|
||||
<button class="btn-primary" id="btn-save-rule">Tallenna</button>
|
||||
<button class="btn-secondary" id="btn-cancel-rule">Peruuta</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user