Sort player names for search, mark news as coming soon

This commit is contained in:
Peter 2023-08-09 18:15:24 -04:00
parent 4bb6aa443c
commit 2211cfde2e
3 changed files with 23 additions and 7 deletions

View File

@ -183,10 +183,10 @@
</li>
</ul>
<form class="form-inline" action="/players">
<input type="text" name="name" placeholder="Player Search" list="player-names" id="player-choice">
<form class="form-inline" @submit.stop.prevent="searchPlayers">
<input type="text" name="name" placeholder="Player Search" list="player-names" v-model="searchPlayerName">
<datalist id="player-names">
<option v-for="name in playerNames" :value="name">{{ name }}</option>
<option v-for="name in sortedPlayerNames" :value="name">{{ name }}</option>
</datalist>
</form>
@ -225,7 +225,8 @@ export default {
name: 'NavBar',
data() {
return {
playerNames: [] as string[],
players: [] as Player[],
searchPlayerName: undefined
}
},
created() {
@ -421,6 +422,9 @@ export default {
seasonNumber(): number {
// TODO pull this from DB?
return CURRENT_SEASON
},
sortedPlayerNames(): string[] {
return this.players.sort((p1, p2) => p2.wara - p1.wara).map(p => p.name)
}
},
methods: {
@ -428,8 +432,10 @@ export default {
return await fetchPlayers(this.seasonNumber)
},
async populatePlayerNames(): Promise<void> {
const players: Player[] = await this.getPlayers()
this.playerNames = players.sort(p => p.wara).map(p => p.name)
this.players = await this.getPlayers()
},
searchPlayers(): void {
this.$router.push({ path: `/players/${this.seasonNumber}/${this.searchPlayerName}` })
}
}
}

View File

@ -30,7 +30,9 @@
<div class="col-md-6">
<h3>Latest News</h3>
<div id="news-posts"></div>
<div id="news-posts">
🚧 Coming soon 🚧
</div>
</div>
</div>
</div>

View File

@ -1238,6 +1238,14 @@ export default {
created() {
this.fetchData()
},
watch: {
seasonNumber(newValue, oldValue) {
if (newValue !== oldValue) this.fetchData()
},
playerName(newName, oldName) {
if (newName !== oldName) this.fetchData()
}
},
methods: {
async fetchData(): Promise<void> {
this.player = await fetchPlayerByName(this.seasonNumber, this.playerName)