ADD: Basic filter functionality
This commit is contained in:
@@ -14,7 +14,20 @@
|
|||||||
<Separator />
|
<Separator />
|
||||||
<div>
|
<div>
|
||||||
<MagnifyingGlassIcon class="mr-2 h-4 w-4 shrink-0 opacity-50" />
|
<MagnifyingGlassIcon class="mr-2 h-4 w-4 shrink-0 opacity-50" />
|
||||||
<Input :placeholder="$t('profiles.filter_placeholder')" class="border-none outline-none rounded-none" />
|
<Input v-model="filter" :placeholder="$t('profiles.filter_placeholder')" class="border-none outline-none rounded-none" />
|
||||||
|
<template v-if="filter===''">
|
||||||
|
<div v-for="[profileTag, tagProfiles] in profilesByTag" :key="profileTag">
|
||||||
|
{{ profileTag }}
|
||||||
|
<div v-for="profile in tagProfiles" :key="profile.id" class="ml-4">
|
||||||
|
{{ profile.name }} {{ profile.id }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<template v-else>
|
||||||
|
<div v-for="profile in filteredProfiles" :key="profile.id">
|
||||||
|
{{ profile.name }} {{ profile.id }}
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
</div>
|
</div>
|
||||||
<SchemaTest />
|
<SchemaTest />
|
||||||
</div>
|
</div>
|
||||||
@@ -30,6 +43,8 @@ import { MagnifyingGlassIcon } from '@radix-icons/vue'
|
|||||||
|
|
||||||
const profiles = ref([])
|
const profiles = ref([])
|
||||||
|
|
||||||
|
const filter = ref('')
|
||||||
|
|
||||||
const profilesByTag = computed(() => {
|
const profilesByTag = computed(() => {
|
||||||
const map = new Map()
|
const map = new Map()
|
||||||
profiles.value.forEach(profile => {
|
profiles.value.forEach(profile => {
|
||||||
@@ -42,6 +57,16 @@ const profilesByTag = computed(() => {
|
|||||||
return map
|
return map
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const filteredProfiles = computed(() => {
|
||||||
|
const filterLower = filter.value.toLowerCase()
|
||||||
|
return profiles.value.filter(profile => {
|
||||||
|
const nameLower = profile.name.toLowerCase()
|
||||||
|
const idLower = profile.id.toLowerCase()
|
||||||
|
const tagLower = profile.profileTag.toLowerCase()
|
||||||
|
return nameLower.includes(filterLower) || idLower.includes(filterLower) || tagLower.includes(filterLower)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
function fetchProfiles() {
|
function fetchProfiles() {
|
||||||
axios.get('http://localhost:3001/profiles').then(res => {
|
axios.get('http://localhost:3001/profiles').then(res => {
|
||||||
profiles.value = res.data
|
profiles.value = res.data
|
||||||
|
|||||||
Reference in New Issue
Block a user