diff --git a/examples/monitor-webui/web/index.html b/examples/monitor-webui/web/index.html
index 033c9aa2..f5a5cf9e 100644
--- a/examples/monitor-webui/web/index.html
+++ b/examples/monitor-webui/web/index.html
@@ -65,6 +65,10 @@
+
diff --git a/examples/monitor-webui/web/static/js/app.js b/examples/monitor-webui/web/static/js/app.js
index ced777a6..1c7f62e2 100644
--- a/examples/monitor-webui/web/static/js/app.js
+++ b/examples/monitor-webui/web/static/js/app.js
@@ -156,11 +156,18 @@ function filterIssues() {
const statusSelect = document.getElementById('filter-status');
const selectedStatuses = Array.from(statusSelect.selectedOptions).map(opt => opt.value);
const priorityFilter = document.getElementById('filter-priority').value;
+ const searchText = document.getElementById('filter-text').value.toLowerCase();
const filtered = allIssues.filter(issue => {
// If statuses are selected, check if issue status is in the selected list
if (selectedStatuses.length > 0 && !selectedStatuses.includes(issue.status)) return false;
if (priorityFilter && issue.priority !== parseInt(priorityFilter)) return false;
+
+ if (searchText) {
+ const title = (issue.title || '').toLowerCase();
+ const description = (issue.description || '').toLowerCase();
+ if (!title.includes(searchText) && !description.includes(searchText)) return false;
+ }
return true;
});
@@ -230,6 +237,7 @@ window.onclick = function(event) {
// Filter event listeners
document.getElementById('filter-status').addEventListener('change', filterIssues);
document.getElementById('filter-priority').addEventListener('change', filterIssues);
+document.getElementById('filter-text').addEventListener('input', filterIssues);
// Reload button listener
document.getElementById('reload-button').addEventListener('click', reloadData);