better filtering and searching

This commit is contained in:
2026-01-09 11:20:27 -05:00
parent f9d9c775fb
commit 962724d811
10 changed files with 1388 additions and 9 deletions

View File

@@ -197,6 +197,7 @@
class="search-box"
value="<?php echo isset($_GET['search']) ? htmlspecialchars($_GET['search']) : ''; ?>">
<button type="submit" class="btn search-btn">Search</button>
<button type="button" class="btn btn-secondary" onclick="openAdvancedSearch()" title="Advanced Search">⚙ Advanced</button>
<?php if (isset($_GET['search']) && !empty($_GET['search'])): ?>
<a href="?" class="clear-search-btn">✗</a>
<?php endif; ?>
@@ -468,7 +469,127 @@
</div>
</div>
<!-- Advanced Search Modal -->
<div class="settings-modal" id="advancedSearchModal" style="display: none;" onclick="closeOnAdvancedSearchBackdropClick(event)">
<div class="settings-content">
<div class="settings-header">
<h3>🔍 Advanced Search</h3>
<button class="close-settings" onclick="closeAdvancedSearch()">✗</button>
</div>
<form id="advancedSearchForm" onsubmit="performAdvancedSearch(event)">
<div class="settings-body">
<!-- Saved Filters -->
<div class="settings-section">
<h4>╔══ Saved Filters ══╗</h4>
<div class="setting-row">
<label for="saved-filters-select">Load Filter:</label>
<select id="saved-filters-select" class="setting-select" style="max-width: 70%;" onchange="loadSavedFilter()">
<option value="">-- Select a saved filter --</option>
</select>
</div>
<div class="setting-row" style="justify-content: flex-end; gap: 0.5rem;">
<button type="button" class="btn btn-secondary" onclick="saveCurrentFilter()" style="padding: 0.5rem 1rem;">💾 Save Current</button>
<button type="button" class="btn btn-secondary" onclick="deleteSavedFilter()" style="padding: 0.5rem 1rem;">🗑 Delete Selected</button>
</div>
</div>
<!-- Search Text -->
<div class="settings-section">
<h4>╔══ Search Criteria ══╗</h4>
<div class="setting-row">
<label for="adv-search-text">Search Text:</label>
<input type="text" id="adv-search-text" class="setting-select" style="max-width: 100%;" placeholder="Search in title, description...">
</div>
</div>
<!-- Date Ranges -->
<div class="settings-section">
<h4>╔══ Date Range ══╗</h4>
<div class="setting-row">
<label for="adv-created-from">Created From:</label>
<input type="date" id="adv-created-from" class="setting-select">
</div>
<div class="setting-row">
<label for="adv-created-to">Created To:</label>
<input type="date" id="adv-created-to" class="setting-select">
</div>
<div class="setting-row">
<label for="adv-updated-from">Updated From:</label>
<input type="date" id="adv-updated-from" class="setting-select">
</div>
<div class="setting-row">
<label for="adv-updated-to">Updated To:</label>
<input type="date" id="adv-updated-to" class="setting-select">
</div>
</div>
<!-- Status/Priority/Category/Type -->
<div class="settings-section">
<h4>╔══ Filters ══╗</h4>
<div class="setting-row">
<label for="adv-status">Status:</label>
<select id="adv-status" class="setting-select" multiple size="4">
<option value="Open">Open</option>
<option value="Pending">Pending</option>
<option value="In Progress">In Progress</option>
<option value="Closed">Closed</option>
</select>
</div>
<div class="setting-row">
<label for="adv-priority-min">Priority Range:</label>
<select id="adv-priority-min" class="setting-select" style="max-width: 90px;">
<option value="">Any</option>
<option value="1">P1</option>
<option value="2">P2</option>
<option value="3">P3</option>
<option value="4">P4</option>
<option value="5">P5</option>
</select>
<span style="color: var(--terminal-green);">to</span>
<select id="adv-priority-max" class="setting-select" style="max-width: 90px;">
<option value="">Any</option>
<option value="1">P1</option>
<option value="2">P2</option>
<option value="3">P3</option>
<option value="4">P4</option>
<option value="5">P5</option>
</select>
</div>
</div>
<!-- User Filters -->
<div class="settings-section">
<h4>╔══ Users ══╗</h4>
<div class="setting-row">
<label for="adv-created-by">Created By:</label>
<select id="adv-created-by" class="setting-select">
<option value="">Any User</option>
<!-- Will be populated by JavaScript -->
</select>
</div>
<div class="setting-row">
<label for="adv-assigned-to">Assigned To:</label>
<select id="adv-assigned-to" class="setting-select">
<option value="">Any User</option>
<option value="unassigned">Unassigned</option>
<!-- Will be populated by JavaScript -->
</select>
</div>
</div>
</div>
<div class="settings-footer">
<button type="submit" class="btn btn-primary">Search</button>
<button type="button" class="btn btn-secondary" onclick="resetAdvancedSearch()">Reset</button>
<button type="button" class="btn btn-secondary" onclick="closeAdvancedSearch()">Cancel</button>
</div>
</form>
</div>
</div>
<script src="<?php echo $GLOBALS['config']['ASSETS_URL']; ?>/js/settings.js"></script>
<script src="<?php echo $GLOBALS['config']['ASSETS_URL']; ?>/js/keyboard-shortcuts.js"></script>
<script src="<?php echo $GLOBALS['config']['ASSETS_URL']; ?>/js/advanced-search.js"></script>
</body>
</html>