From fa76ead5f00f284453f02a31ec9bbf4f9ce15f75 Mon Sep 17 00:00:00 2001 From: David Whittaker Date: Tue, 5 Aug 2025 13:30:40 -0700 Subject: [PATCH 1/4] fix(search_filter): adds refresh to search filter when not showing --- src/dispatch/search_filter/views.py | 15 +++++++++++ .../static/dispatch/src/search/EditDialog.vue | 26 +++++++++++++++++-- .../static/dispatch/src/search/store.js | 10 +++++++ 3 files changed, 49 insertions(+), 2 deletions(-) diff --git a/src/dispatch/search_filter/views.py b/src/dispatch/search_filter/views.py index 73e536e8e030..4da5553f147b 100644 --- a/src/dispatch/search_filter/views.py +++ b/src/dispatch/search_filter/views.py @@ -28,6 +28,21 @@ def get_filters(common: CommonParameters): return search_filter_sort_paginate(model="SearchFilter", **common) +@router.get("/{search_filter_id}", response_model=SearchFilterRead) +def get_search_filter( + db_session: DbSession, + search_filter_id: PrimaryKey, +): + """Get a search filter by id.""" + search_filter = get(db_session=db_session, search_filter_id=search_filter_id) + if not search_filter: + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, + detail=[{"msg": "A search filter with this id does not exist."}], + ) + return search_filter + + @router.post("", response_model=SearchFilterRead) def create_search_filter( db_session: DbSession, diff --git a/src/dispatch/static/dispatch/src/search/EditDialog.vue b/src/dispatch/static/dispatch/src/search/EditDialog.vue index 95c7d224d249..204a33ee5a25 100644 --- a/src/dispatch/static/dispatch/src/search/EditDialog.vue +++ b/src/dispatch/static/dispatch/src/search/EditDialog.vue @@ -81,7 +81,20 @@ {{ notification.name }} -
Search Filter Expression
+
+ Search Filter Expression + + + mdi-refresh + Refresh + +
@@ -147,7 +160,7 @@ export default { }, methods: { - ...mapActions("search", ["closeCreateEdit", "save"]), + ...mapActions("search", ["closeCreateEdit", "save", "get"]), convertToParticipant(individual) { return { individual: { @@ -156,6 +169,15 @@ export default { }, } }, + async reloadExpression() { + if (this.id) { + try { + await this.get(this.id) + } catch (error) { + console.error("[EditDialog] Fetch error:", error) + } + } + }, }, } diff --git a/src/dispatch/static/dispatch/src/search/store.js b/src/dispatch/static/dispatch/src/search/store.js index bd2986574e35..f86fd1df038e 100644 --- a/src/dispatch/static/dispatch/src/search/store.js +++ b/src/dispatch/static/dispatch/src/search/store.js @@ -184,6 +184,16 @@ const actions = { commit("SET_DIALOG_CREATE_EDIT", false) commit("RESET_SELECTED") }, + async get({ commit }, searchFilterId) { + try { + const response = await SearchApi.get(searchFilterId) + commit("SET_SELECTED", response.data) + return response.data + } catch (error) { + console.error("Error getting search filter:", error) + throw error + } + }, } const mutations = { From e12b31c46e3c52e289e7b7a60fc50ab7ac767cec Mon Sep 17 00:00:00 2001 From: David Whittaker Date: Tue, 5 Aug 2025 13:45:54 -0700 Subject: [PATCH 2/4] updating endpoint to avoid conflicts --- src/dispatch/search_filter/views.py | 2 +- src/dispatch/static/dispatch/src/search/EditDialog.vue | 2 ++ src/dispatch/static/dispatch/src/search/api.js | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/dispatch/search_filter/views.py b/src/dispatch/search_filter/views.py index 4da5553f147b..b1062f7417db 100644 --- a/src/dispatch/search_filter/views.py +++ b/src/dispatch/search_filter/views.py @@ -28,7 +28,7 @@ def get_filters(common: CommonParameters): return search_filter_sort_paginate(model="SearchFilter", **common) -@router.get("/{search_filter_id}", response_model=SearchFilterRead) +@router.get("/detail/{search_filter_id}", response_model=SearchFilterRead) def get_search_filter( db_session: DbSession, search_filter_id: PrimaryKey, diff --git a/src/dispatch/static/dispatch/src/search/EditDialog.vue b/src/dispatch/static/dispatch/src/search/EditDialog.vue index 204a33ee5a25..8dba0d05a8f5 100644 --- a/src/dispatch/static/dispatch/src/search/EditDialog.vue +++ b/src/dispatch/static/dispatch/src/search/EditDialog.vue @@ -176,6 +176,8 @@ export default { } catch (error) { console.error("[EditDialog] Fetch error:", error) } + } else { + console.warn("Bad search filter id - unable to reload") } }, }, diff --git a/src/dispatch/static/dispatch/src/search/api.js b/src/dispatch/static/dispatch/src/search/api.js index 1a433ccde2e3..1e08960e53a4 100644 --- a/src/dispatch/static/dispatch/src/search/api.js +++ b/src/dispatch/static/dispatch/src/search/api.js @@ -12,7 +12,7 @@ export default { }, get(searchFilterId) { - return API.get(`${resource}/filters/${searchFilterId}`) + return API.get(`${resource}/filters/detail/${searchFilterId}`) }, create(payload) { From 95de3fa1c2eab969185aceeb5674f93228829206 Mon Sep 17 00:00:00 2001 From: David Whittaker <84562015+whitdog47@users.noreply.github.com> Date: Tue, 5 Aug 2025 15:48:49 -0700 Subject: [PATCH 3/4] update wording on warning Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: David Whittaker <84562015+whitdog47@users.noreply.github.com> --- src/dispatch/static/dispatch/src/search/EditDialog.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dispatch/static/dispatch/src/search/EditDialog.vue b/src/dispatch/static/dispatch/src/search/EditDialog.vue index 8dba0d05a8f5..2d9c8a4a103f 100644 --- a/src/dispatch/static/dispatch/src/search/EditDialog.vue +++ b/src/dispatch/static/dispatch/src/search/EditDialog.vue @@ -177,7 +177,7 @@ export default { console.error("[EditDialog] Fetch error:", error) } } else { - console.warn("Bad search filter id - unable to reload") + console.warn("Cannot reload: search filter ID is missing or invalid") } }, }, From c5c5d0b0963d8ebef9fe165f82c063e418d2f8a2 Mon Sep 17 00:00:00 2001 From: David Whittaker Date: Tue, 12 Aug 2025 12:09:54 -0700 Subject: [PATCH 4/4] simplifying api --- src/dispatch/search_filter/views.py | 2 +- src/dispatch/static/dispatch/src/search/api.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/dispatch/search_filter/views.py b/src/dispatch/search_filter/views.py index b1062f7417db..4da5553f147b 100644 --- a/src/dispatch/search_filter/views.py +++ b/src/dispatch/search_filter/views.py @@ -28,7 +28,7 @@ def get_filters(common: CommonParameters): return search_filter_sort_paginate(model="SearchFilter", **common) -@router.get("/detail/{search_filter_id}", response_model=SearchFilterRead) +@router.get("/{search_filter_id}", response_model=SearchFilterRead) def get_search_filter( db_session: DbSession, search_filter_id: PrimaryKey, diff --git a/src/dispatch/static/dispatch/src/search/api.js b/src/dispatch/static/dispatch/src/search/api.js index 1e08960e53a4..1a433ccde2e3 100644 --- a/src/dispatch/static/dispatch/src/search/api.js +++ b/src/dispatch/static/dispatch/src/search/api.js @@ -12,7 +12,7 @@ export default { }, get(searchFilterId) { - return API.get(`${resource}/filters/detail/${searchFilterId}`) + return API.get(`${resource}/filters/${searchFilterId}`) }, create(payload) {