diff --git a/admin_ui/src/components/ArrayWidget.vue b/admin_ui/src/components/ArrayWidget.vue index be14f3bb..3a84cf87 100644 --- a/admin_ui/src/components/ArrayWidget.vue +++ b/admin_ui/src/components/ArrayWidget.vue @@ -150,7 +150,7 @@ export default defineComponent({ this.internalArray = newValue ? [...newValue] : [] } }, - mounted() { + created() { this.internalArray = [...this.array] } }) diff --git a/admin_ui/src/components/FilterForm.vue b/admin_ui/src/components/FilterForm.vue index 4b818d41..01649455 100644 --- a/admin_ui/src/components/FilterForm.vue +++ b/admin_ui/src/components/FilterForm.vue @@ -47,7 +47,8 @@ diff --git a/admin_ui/src/components/InputField.vue b/admin_ui/src/components/InputField.vue index 8f1d8da8..24e8e1e6 100644 --- a/admin_ui/src/components/InputField.vue +++ b/admin_ui/src/components/InputField.vue @@ -22,12 +22,13 @@ diff --git a/admin_ui/src/components/KeySearch.vue b/admin_ui/src/components/KeySearch.vue index 6419de80..cca221b2 100644 --- a/admin_ui/src/components/KeySearch.vue +++ b/admin_ui/src/components/KeySearch.vue @@ -20,6 +20,7 @@ v-show="showModal" :isFilter="isFilter" :tableName="tableName" + :initialReferenceID="hiddenSelectedValue" @close="showModal = false" @update="handleUpdate($event)" /> @@ -84,9 +85,15 @@ export default defineComponent({ this.hiddenSelectedValue = newValue } }, - async mounted() { - this.selectedValue = this.readable - this.hiddenSelectedValue = this.rowID + mounted() { + if (this.isFilter) { + const queryValue = this.$route.query[this.fieldName] + if (queryValue) { + // only need FK query value (e.g director=1), + // modal will emit readable automatically + this.hiddenSelectedValue = queryValue + } + } } }) diff --git a/admin_ui/src/components/KeySearchModal.vue b/admin_ui/src/components/KeySearchModal.vue index 8eaf45f8..bb616954 100644 --- a/admin_ui/src/components/KeySearchModal.vue +++ b/admin_ui/src/components/KeySearchModal.vue @@ -63,6 +63,9 @@ export default defineComponent({ isNullable: { type: Boolean as PropType, default: true + }, + initialReferenceID: { + type: undefined as unknown as PropType } }, data() { @@ -118,6 +121,21 @@ export default defineComponent({ }, selectResult(id: RowID | null, readable: string) { this.$emit("update", { id, readable }) + }, + async emitInitialReferenceID() { + if (!this.initialReferenceID) return + + // Look for readable value in fetched IDs + const match = this.ids.find( + ([id]) => id === this.initialReferenceID + ) + + if (match) { + this.$emit("update", { + id: match[0], + readable: match[1] + }) + } } }, watch: { @@ -125,6 +143,7 @@ export default defineComponent({ this.offset = 0 if (value) { this.ids = await this.fetchData() + await this.emitInitialReferenceID() } }, async searchTerm() { @@ -144,6 +163,7 @@ export default defineComponent({ async mounted() { if (this.tableName) { this.ids = await this.fetchData() + await this.emitInitialReferenceID() } } }) diff --git a/admin_ui/src/components/MatchField.vue b/admin_ui/src/components/MatchField.vue index b96bdf1b..685944bb 100644 --- a/admin_ui/src/components/MatchField.vue +++ b/admin_ui/src/components/MatchField.vue @@ -1,27 +1,39 @@ - + \ No newline at end of file diff --git a/admin_ui/src/components/RowFilter.vue b/admin_ui/src/components/RowFilter.vue index 88552f65..81ce94da 100644 --- a/admin_ui/src/components/RowFilter.vue +++ b/admin_ui/src/components/RowFilter.vue @@ -22,7 +22,7 @@ import { defineComponent } from "vue" import FilterForm from "./FilterForm.vue" import { type APIResponseMessage, getFormat, getType } from "../interfaces" -import { secondsToISO8601Duration } from "../utils" +import { secondsToISO8601Duration, syncQueryParams } from "../utils" export default defineComponent({ props: { @@ -87,6 +87,11 @@ export default defineComponent({ } } + // adding filter params to url + syncQueryParams(this.$router.path, { + ...json + }) + this.$store.commit("updateFilterParams", json) this.$store.commit("updateCurrentPageNumber", 1) @@ -108,6 +113,9 @@ export default defineComponent({ form.reset() + // cleaning filter params from url + syncQueryParams(this.$router.path, {}) + this.$store.commit("updateFilterParams", {}) this.$store.commit("updateCurrentPageNumber", 1)