X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fviews%2FAnalyse.vue;fp=client%2Fsrc%2Fviews%2FAnalyse.vue;h=e829ae4f9226c7d00e17319837726ba5a5de575f;hb=b1e46b33d78bdf144a5603f82a6907901763abb9;hp=baf1036441af17a7b4c3e8a5e8fcadc5a9621379;hpb=4db4c67c0ce025d2f9f151d70e81128a3b26b5c5;p=vchess.git diff --git a/client/src/views/Analyse.vue b/client/src/views/Analyse.vue index baf10364..e829ae4f 100644 --- a/client/src/views/Analyse.vue +++ b/client/src/views/Analyse.vue @@ -8,6 +8,7 @@ main @input="adjustFenSize(); tryGotoFen()" ) BaseGame( + ref="basegame" :game="game" @fenchange="setFen" ) @@ -37,19 +38,14 @@ export default { curFen: "" }; }, - // NOTE: no watcher for $route change, because if fenStart doesn't change - // then it doesn't trigger BaseGame.re_init() and the result is weird. - created: function() { - this.gameRef.vname = this.$route.params["vname"]; - const routeFen = this.$route.query["fen"]; - if (!routeFen) this.alertAndQuit("Missing FEN"); - else { - this.gameRef.fen = routeFen.replace(/_/g, " "); - // orientation is optional: taken from FEN if missing - const orientation = this.$route.query["side"]; - this.initialize(orientation); + watch: { + $route: function() { + this.initFromUrl(); } }, + created: function() { + this.initFromUrl(); + }, methods: { alertAndQuit: function(text, wrongVname) { // Soon after component creation, st.tr might be uninitialized. @@ -60,6 +56,17 @@ export default { this.$router.replace(newUrl); }, 500); }, + initFromUrl: function() { + this.gameRef.vname = this.$route.params["vname"]; + const routeFen = this.$route.query["fen"]; + if (!routeFen) this.alertAndQuit("Missing FEN"); + else { + this.gameRef.fen = routeFen.replace(/_/g, " "); + // orientation is optional: taken from FEN if missing + const orientation = this.$route.query["side"]; + this.initialize(orientation); + } + }, initialize: async function(orientation) { // Obtain VariantRules object await import("@/variants/" + this.gameRef.vname + ".js") @@ -75,11 +82,12 @@ export default { loadGame: function(orientation) { // NOTE: no need to set score (~unused) this.game.vname = this.gameRef.vname; + this.game.fenStart = this.gameRef.fen; this.game.fen = this.gameRef.fen; this.curFen = this.game.fen; this.adjustFenSize(); this.game.mycolor = orientation || V.ParseFen(this.gameRef.fen).turn; - this.$set(this.game, "fenStart", this.gameRef.fen); + this.$refs["basegame"].re_setVariables(this.game); }, // Triggered by "fenchange" emitted in BaseGame: setFen: function(fen) {