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..2d9c8a4a103f 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,17 @@ export default { }, } }, + async reloadExpression() { + if (this.id) { + try { + await this.get(this.id) + } catch (error) { + console.error("[EditDialog] Fetch error:", error) + } + } else { + console.warn("Cannot reload: search filter ID is missing or invalid") + } + }, }, } 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 = {