feat(timeline): add live filter, actor chips, group headers, copy button, source toggle, count badge
- Live search/filter bar: filters events by keyword across event, actor, source_excerpt, date - Actor filter chips: click to filter by actor, multi-select, teal active state - Year/month group headers when sorted chronologically (── 2023 ──, Mar 2024 ──) - Per-event copy button (hover-revealed 📋): copies "date · actor · event" to clipboard - "Hide/show sources" toggle: collapses all source excerpts without re-rendering - Count badge: "23 events · 3 actors · 2022–2025" above the list - applyTimelineFilters() unifies sort + actor + text filters in one re-render pass - CSV export now includes end_date column - Reset all filter state on each new run Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+20
-3
@@ -36,6 +36,12 @@ require_once __DIR__ . '/includes/layout.php';
|
||||
<p class="upload-hint">The agent will frame every sub-question, retrieval pass, and the final brief to argue <em>for</em> the selected party, identifying weaknesses in the opposing position and citing Lovdata statutes, ECHR judgments, and Bufdir guidance.</p>
|
||||
</div>
|
||||
|
||||
<label class="input-label" for="advInput">Describe the dispute or case situation</label>
|
||||
<textarea id="advInput" name="advInput" rows="8" placeholder="Describe the facts of the case, the dispute, and what matters most to your client. The agent will generate adversarial sub-questions, retrieve from the legal corpus and your uploaded files, and synthesise a partisan brief with citations."></textarea>
|
||||
<div class="adv-input-footer">
|
||||
<small id="advInputCount" class="adv-char-count">0 / 4,000</small>
|
||||
</div>
|
||||
|
||||
<div class="control-row" id="advEngineControl">
|
||||
<span class="control-label">Engine</span>
|
||||
<label><input type="radio" name="advEngine" value="azure_mini" checked> Azure gpt-4o-mini ★ <small class="control-hint">(~15-45s)</small></label>
|
||||
@@ -166,12 +172,23 @@ require_once __DIR__ . '/includes/layout.php';
|
||||
<textarea id="advBranchNotes" rows="3" placeholder="Optional: add observations, corrections, or additional context for this branch…"></textarea>
|
||||
</div>
|
||||
|
||||
<label class="input-label" for="advInput">Describe the dispute or case situation</label>
|
||||
<textarea id="advInput" name="advInput" rows="8" placeholder="Describe the facts of the case, the dispute, and what matters most to your client. The agent will generate adversarial sub-questions, retrieve from the legal corpus and your uploaded files, and synthesise a partisan brief with citations."></textarea>
|
||||
<!-- Sub-question preview panel (hidden until "Preview angles" is clicked) -->
|
||||
<div id="advSubQPreview" class="adv-subq-preview is-hidden" aria-live="polite">
|
||||
<h4 class="adv-subq-preview__head">Generated research angles — review & edit</h4>
|
||||
<p class="upload-hint">The agent will research these angles against the corpus. Edit any question before running to steer retrieval.</p>
|
||||
<div id="advSubQPreviewList"></div>
|
||||
<div class="adv-subq-preview__actions">
|
||||
<button type="button" id="advRunWithAngles">Run with these angles</button>
|
||||
<button type="button" id="advDiscardAngles" class="adv-discard-btn">Discard & run fresh</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-footer">
|
||||
<p id="advStatus" class="form-status" role="status" aria-live="polite"></p>
|
||||
<button id="advRunButton" type="submit">Research my case</button>
|
||||
<div class="form-footer__btns">
|
||||
<button id="advRunButton" type="submit">Research my case</button>
|
||||
<button type="button" id="advPreviewAngles" class="adv-preview-btn">Preview research angles first</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user