Initial pass on character lists.

This commit is contained in:
iamBadgers
2025-07-06 00:11:25 -07:00
parent 8745fc3c7e
commit b21e763d65
3 changed files with 56 additions and 15 deletions

View File

@@ -29,8 +29,7 @@ const butts = () => {
</script> </script>
<template> <template>
<CharacterSelector></CharacterSelector> <header>
<!-- <header>
<img <img
alt="Vue logo" alt="Vue logo"
class="logo" class="logo"
@@ -38,16 +37,14 @@ const butts = () => {
width="125" width="125"
height="125" height="125"
/> />
<div class="wrapper">
<HelloWorld msg="You did it!" />
</div>
</header> </header>
<main> <main>
potato <CharacterSelector></CharacterSelector>
<!-- potato
<button class="button" @click="butts">butts</button> <button class="button" @click="butts">butts</button>
<CharacterEditer></CharacterEditer> <CharacterEditer></CharacterEditer> -->
</main> --> </main>
</template> </template>
<style scoped> <style scoped>

View File

@@ -12,7 +12,14 @@
clearable clearable
></v-text-field> ></v-text-field>
{{ characterList }} <div v-for="character in characterList">{{ character }}</div>
<v-expansion-panels>
<CharacterSelectorRow
v-for="character in characterList"
:character="character"
/>
</v-expansion-panels>
</template> </template>
<style></style> <style></style>
@@ -25,11 +32,12 @@ import { CharacterManagerClient } from '../proto/character.client'
import { GrpcWebFetchTransport } from '@protobuf-ts/grpcweb-transport' import { GrpcWebFetchTransport } from '@protobuf-ts/grpcweb-transport'
import { watchDebounced } from '@vueuse/core' import { watchDebounced } from '@vueuse/core'
import CharacterSelectorRow from './CharacterSelectorRow.vue'
const characterSearch = ref('') const characterSearch = ref('')
const playerSearch = ref('') const playerSearch = ref('')
const characterList = ref([]) const characterList = ref(new Array<Character>())
const client = new CharacterManagerClient( const client = new CharacterManagerClient(
new GrpcWebFetchTransport({ new GrpcWebFetchTransport({
@@ -40,12 +48,20 @@ const client = new CharacterManagerClient(
watchDebounced( watchDebounced(
[characterSearch, playerSearch], [characterSearch, playerSearch],
([newCharacterValue, oldCharacterValue], [newPlayerValue, oldPlayerValue]) => { (
[newCharacterValue, oldCharacterValue],
[newPlayerValue, oldPlayerValue],
) => {
console.log(newCharacterValue) console.log(newCharacterValue)
console.log(newPlayerValue) console.log(newPlayerValue)
client.listCharacters({characterName: characterSearch.value, playerName: playerSearch.value}).then((res) => { client
characterList.value = res.response.characters .listCharacters({
}) characterName: characterSearch.value,
playerName: playerSearch.value,
})
.then((res) => {
characterList.value = res.response.characters
})
}, },
{ debounce: 500 }, { debounce: 500 },
) )

View File

@@ -0,0 +1,28 @@
<template>
<v-expansion-panel>
<v-expansion-panel-title>
<div class="d-flex flex-row">
<div class="charactername">{{ character.characterName || "Unkown Character"}}</div>
<div class="playername"> ( {{ character.playerName || "Unkown Player"}} )</div>
</div>
</v-expansion-panel-title>
<v-expansion-panel-text>
<div>Alias: {{ character.characterAlias }}</div>
<slot></slot>
</v-expansion-panel-text>
</v-expansion-panel>
</template>
<style>
.charactername {
font-weight: bold;
margin-right: 10px;
}
</style>
<script setup lang="ts">
import { defineProps } from 'vue'
import { Character, ListCharacterRequest } from '../proto/character'
const props = defineProps<{ character?: Character }>()
</script>