apply route filters on view creation for context switching

This commit is contained in:
2023-05-05 17:16:58 +02:00
parent 87d06fa25c
commit aa12b6fed6
+21 -17
View File
@@ -88,7 +88,7 @@ export default defineComponent({
return { return {
model: { server: undefined, weapon: undefined } as unknown as { model: { server: undefined, weapon: undefined } as unknown as {
weapon: string | undefined; weapon: string | undefined;
server: { name?: string } | (Server & { name?: string })[] | undefined; server: string | undefined;
}, },
filters: {} as Filters, filters: {} as Filters,
store: useKillStore(), store: useKillStore(),
@@ -98,7 +98,8 @@ export default defineComponent({
}, },
created () { created () {
let server let server
if (this.$route.query.server) server = { name: this.$route.query.server?.toString() } this.applyRouteFilters()
if (this.$route.query.server) server = this.$route.query.server?.toString()
this.model = { this.model = {
server, server,
weapon: this.$route.query.weapon?.toString() weapon: this.$route.query.weapon?.toString()
@@ -177,7 +178,7 @@ export default defineComponent({
}, },
model: { model: {
handler (newModel) { handler (newModel) {
this.filters.server = newModel.server?.name this.filters.server = newModel.server
this.filters.weapon = newModel.weapon this.filters.weapon = newModel.weapon
}, },
deep: true deep: true
@@ -196,20 +197,8 @@ export default defineComponent({
const { player: _, ...withoutPlayer } = this.$route.query const { player: _, ...withoutPlayer } = this.$route.query
router.push({ query: { player: newValue?.id, ...withoutPlayer } })// .then(e => { console.log(e) }) router.push({ query: { player: newValue?.id, ...withoutPlayer } })// .then(e => { console.log(e) })
}, },
'$route' (to) { '$route' () {
if (this.playerHighlighted?.id !== to.query.player) { this.applyRouteFilters()
const playerId = to.query.player?.toString()
if (playerId) {
this.highlight_player(playerId)
}
}
if (this.filters.weapon !== to.query.weapon) {
this.model.weapon = to.query.weapon
}
if (this.filters.server !== to.query.server) {
if (to.query.server) this.model.server = { name: to.query.server }
else this.model.server = undefined
}
} }
}, },
methods: { methods: {
@@ -220,6 +209,21 @@ export default defineComponent({
return return
} }
this.playerHighlighted = undefined this.playerHighlighted = undefined
},
applyRouteFilters () {
if (this.playerHighlighted?.id !== this.$route.query.player) {
const playerId = this.$route.query.player?.toString()
if (playerId) {
this.highlight_player(playerId)
}
}
if (this.filters.weapon !== this.$route.query.weapon) {
this.model.weapon = this.$route.query.weapon?.toString()
}
if (this.filters.server !== this.$route.query.server) {
if (this.$route.query.server) this.model.server = this.$route.query.server?.toString()
else this.model.server = undefined
}
} }
} }
}) })