X-Git-Url: https://git.auder.net/js/rpsls.js?a=blobdiff_plain;f=public%2Fjavascripts%2Fcomponents%2Fproblems.js;h=00ea7692fbe143f6ed24ead379beb850ee28a704;hb=582df3497b0f91dd4b645386a059eac9e98da1bb;hp=53077049d12dc61bd071fa2160e38c67c86cba08;hpb=fd08ab2c5b8931bb8c95cf7e9f2f95122647f991;p=vchess.git
diff --git a/public/javascripts/components/problems.js b/public/javascripts/components/problems.js
index 53077049..00ea7692 100644
--- a/public/javascripts/components/problems.js
+++ b/public/javascripts/components/problems.js
@@ -1,4 +1,5 @@
Vue.component('my-problems', {
+ props: ["queryHash","settings"],
data: function () {
return {
userId: user.id,
@@ -38,7 +39,7 @@ Vue.component('my-problems', {
{{ curProb.instructions }}
-
+
@@ -128,9 +129,24 @@ Vue.component('my-problems', {
`,
+ watch: {
+ queryHash: function(newQhash) {
+ if (!!newQhash)
+ {
+ // New query hash = "id=42"; get 42 as problem ID
+ const pid = parseInt(newQhash.substr(2));
+ this.showProblem(pid);
+ }
+ else
+ this.curProb = null; //(back to) list display
+ },
+ },
created: function() {
- if (location.hash.length > 0)
- this.showProblem(location.hash.slice(1));
+ if (!!this.queryHash)
+ {
+ const pid = parseInt(this.queryHash.substr(2));
+ this.showProblem(pid);
+ }
else
this.firstFetch();
},
@@ -248,7 +264,7 @@ Vue.component('my-problems', {
}
}
ajax(
- "/problems/" + variant.name, //TODO: use variant._id ?
+ "/problems/" + variant.id,
"GET",
{
type: type,
@@ -283,7 +299,7 @@ Vue.component('my-problems', {
},
deleteProblem: function(pid) {
ajax(
- "/problems/" + variant.name + "/" + pid, //TODO: with variant.id ?
+ "/problems/" + variant.id + "/" + pid,
"DELETE",
response => {
// Delete problem from the list on client side
@@ -296,7 +312,7 @@ Vue.component('my-problems', {
sendProblem: function() {
// Send it to the server and close modal
ajax(
- "/problems/" + variant.name, //TODO: with variant.id ?
+ "/problems/" + variant.id,
(this.modalProb.id > 0 ? "PUT" : "POST"),
this.modalProb,
response => {