X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fviews%2FMyGames.vue;h=01b5264dfd5d718651fad56379258d1f62e73e9b;hb=6808d7a16ec1e761c6a2dffec2281c96953e4d89;hp=9e58cfd5cba9708b17155cebd98670d7fd87a22b;hpb=9ddaf8da8743c50b9019888a82d84392913c60c9;p=vchess.git diff --git a/client/src/views/MyGames.vue b/client/src/views/MyGames.vue index 9e58cfd5..01b5264d 100644 --- a/client/src/views/MyGames.vue +++ b/client/src/views/MyGames.vue @@ -3,11 +3,11 @@ main .row .col-sm-12.col-md-10.col-md-offset-1.col-lg-8.col-lg-offset-2 .button-group - button(@click="display='live'") {{ st.tr["Live games"] }} - button(@click="display='corr'") {{ st.tr["Correspondance games"] }} - GameList(v-show="display=='live'" :games="filterGames('live')" + button.tabbtn#liveGames(@click="setDisplay('live',$event)") {{ st.tr["Live games"] }} + button.tabbtn#corrGames(@click="setDisplay('corr',$event)") {{ st.tr["Correspondance games"] }} + GameList(v-show="display=='live'" :games="liveGames" @show-game="showGame") - GameList(v-show="display=='corr'" :games="filterGames('corr')" + GameList(v-show="display=='corr'" :games="corrGames" @show-game="showGame") @@ -17,43 +17,59 @@ import { GameStorage } from "@/utils/gameStorage"; import { ajax } from "@/utils/ajax"; import GameList from "@/components/GameList.vue"; export default { - name: "my-games", + name: "my-my-games", components: { - GameList, + GameList }, data: function() { return { st: store.state, display: "live", - games: [], + liveGames: [], + corrGames: [] }; }, created: function() { - GameStorage.getAll((localGames) => { - localGames.forEach((g) => g.type = this.classifyObject(g)); - //Array.prototype.push.apply(this.games, localGames); //TODO: Vue 3 - this.games = this.games.concat(localGames); + GameStorage.getAll(localGames => { + localGames.forEach(g => (g.type = this.classifyObject(g))); + this.liveGames = localGames; }); - if (this.st.user.id > 0) - { - ajax("/games", "GET", {uid: this.st.user.id}, (res) => { - res.games.forEach((g) => g.type = this.classifyObject(g)); - //Array.prototype.push.apply(this.games, res.games); //TODO: Vue 3 - this.games = this.games.concat(res.games); + if (this.st.user.id > 0) { + ajax("/games", "GET", { uid: this.st.user.id }, res => { + res.games.forEach(g => (g.type = this.classifyObject(g))); + this.corrGames = res.games; }); } }, + mounted: function() { + const showType = localStorage.getItem("type-myGames") || "live"; + this.setDisplay(showType); + }, methods: { - // TODO: classifyObject and filterGames are redundant (see Hall.vue) - classifyObject: function(o) { - return (o.cadence.indexOf('d') === -1 ? "live" : "corr"); + setDisplay: function(type, e) { + this.display = type; + localStorage.setItem("type-myGames", type); + let elt = e ? e.target : document.getElementById(type + "Games"); + elt.classList.add("active"); + if (elt.previousElementSibling) + elt.previousElementSibling.classList.remove("active"); + else elt.nextElementSibling.classList.remove("active"); }, - filterGames: function(type) { - return this.games.filter(g => g.type == type); + // TODO: classifyObject is redundant (see Hall.vue) + classifyObject: function(o) { + return o.cadence.indexOf("d") === -1 ? "live" : "corr"; }, showGame: function(g) { this.$router.push("/game/" + g.id); - }, - }, + } + } }; + +