From ff3d8572f11b91503e6dd16b74617765aa0eebdd Mon Sep 17 00:00:00 2001 From: robinknaapen Date: Thu, 13 Dec 2018 22:44:47 +0100 Subject: [PATCH] Add userAnime search and sorting --- src/types/shims-vue.d.ts | 5 +++- src/views/UserAnime.vue | 65 ++++++++++++++++++++++++++++++++-------- src/views/UserSelect.vue | 4 +++ 3 files changed, 61 insertions(+), 13 deletions(-) diff --git a/src/types/shims-vue.d.ts b/src/types/shims-vue.d.ts index 8efc84a..8b0b1ca 100644 --- a/src/types/shims-vue.d.ts +++ b/src/types/shims-vue.d.ts @@ -17,6 +17,9 @@ declare namespace Meikan { state: string rating: string start_date: string + } + + export interface DetailedAnime extends Anime { end_date: string genres: string[] average_duration: number @@ -24,7 +27,7 @@ declare namespace Meikan { myanimelist_id: number } - export interface UserAnime { + export interface UserAnime { anime: Anime state: string episode: number diff --git a/src/views/UserAnime.vue b/src/views/UserAnime.vue index f87f3f6..26be332 100644 --- a/src/views/UserAnime.vue +++ b/src/views/UserAnime.vue @@ -1,20 +1,32 @@ @@ -28,6 +40,11 @@ const userAnime = namespace('userAnime') @Component({}) export default class Home extends Vue { + public loading: boolean = false + + public search: string = '' + public searched: Meikan.UserAnime[] = [] + @user.Getter private currentUser!: Meikan.User @@ -41,14 +58,38 @@ export default class Home extends Vue { private anime!: Meikan.UserAnime[] private created() { - if (this.anime.length === 0) { - this.fetchUserAnime(this.currentUser) + if (this.anime.length !== 0) { + this.searched = this.anime + return } + this.loading = true + this.fetchUserAnime(this.currentUser) + .then(() => { + this.loading = false + this.searched = this.anime + }) } private refresh() { this.resetUserAnime() + + this.loading = true this.fetchUserAnime(this.currentUser) + .then(() => { + this.loading = false + }) + } + + private searchOnTable() { + if (this.search.length === 0) { + this.searched = this.anime + } + + this.searched = this.anime.filter((item) => { + return item.anime.title + .toLowerCase() + .includes(this.search.toLowerCase()) + }) } } diff --git a/src/views/UserSelect.vue b/src/views/UserSelect.vue index e5a2e64..f0daf8f 100644 --- a/src/views/UserSelect.vue +++ b/src/views/UserSelect.vue @@ -59,5 +59,9 @@ export default class Home extends Vue { this.$router.push({ name: 'userAnime' }) } + + private created() { + this.resetFoundUsers() + } }