X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fviews%2FMyGames.vue;h=830c5351cb08f5e872ed386cb24733074ee46696;hb=2f258c37c19c5be20ec68695ddfaec2c21f7f0ae;hp=a8d9e1270c640b97a43878800c898566ed0de8dc;hpb=41c80bb63b85b2696d3925c10784c3d7bb5d2aa3;p=vchess.git diff --git a/client/src/views/MyGames.vue b/client/src/views/MyGames.vue index a8d9e127..830c5351 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'") Live games - button(@click="display='corr'") Correspondance games - GameList(v-show="display=='live'" :games="filterGames('live')" + button#liveGames(@click="setDisplay('live',$event)") {{ st.tr["Live games"] }} + button#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") @@ -16,40 +16,52 @@ import { store } from "@/store"; 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, }, data: function() { return { st: store.state, - display: "live", - games: [], + display: "live", + liveGames: [], + corrGames: [], }; }, created: function() { GameStorage.getAll((localGames) => { localGames.forEach((g) => g.type = this.classifyObject(g)); - Array.prototype.push.apply(this.games, localGames); + 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); + 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.timeControl.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); @@ -57,3 +69,8 @@ export default { }, }; + +