X-Git-Url: https://git.auder.net/?p=vchess.git;a=blobdiff_plain;f=public%2Fjavascripts%2Fcomponents%2Fproblems.js;h=4caabb554487bbb699ec254b1643337437b121df;hp=d9265a36fcecb7a4df65d24d88f18d7bcef6f6f8;hb=b6487fb9c41705187cf97215fc9e8f86a59057c7;hpb=77fa6d1fe6306f1f9dcd3c363bba8965b602d237 diff --git a/public/javascripts/components/problems.js b/public/javascripts/components/problems.js index d9265a36..4caabb55 100644 --- a/public/javascripts/components/problems.js +++ b/public/javascripts/components/problems.js @@ -11,10 +11,21 @@ Vue.component('my-problems', { }; }, template: ` -
- - - +
+
+ + + +
@@ -23,22 +34,22 @@ Vue.component('my-problems', {
-

Add problem

+

{{ translate("Add a problem") }}

- + + :placeholder='translate("Full FEN description")'/>
-

Safe HTML tags allowed

- +

{{ translate("Safe HTML tags allowed") }}

+ - + :placeholder='translate("Describe the problem goal")'> + - + :placeholder='translate("How to solve the problem?")'> +
@@ -46,9 +57,9 @@ Vue.component('my-problems', { -
- - +
+ +
@@ -59,17 +70,16 @@ Vue.component('my-problems', { // Newest problem first return this.problems.sort((p1,p2) => { return p2.added - p1.added; }); }, - mailErrProblem: function() { - return "mailto:contact@vchess.club?subject=[" + variant + " problems] error"; - }, }, methods: { + translate: function(text) { + return translations[text]; + }, // Propagate "show problem" event to parent component (my-variant) bubbleUp: function(problem) { this.$emit('show-problem', JSON.stringify(problem)); }, fetchProblems: function(direction) { - return; //TODO: re-activate after server side is implemented (see routes/all.js) if (this.problems.length == 0) return; //what could we do?! // Search for newest date (or oldest) @@ -95,7 +105,11 @@ Vue.component('my-problems', { }, previewNewProblem: function() { if (!V.IsGoodFen(this.newProblem.fen)) - return alert("Bad FEN string"); + return alert(translations["Bad FEN description"]); + if (this.newProblem.instructions.trim().length == 0) + return alert(translations["Empty instructions"]); + if (this.newProblem.solution.trim().length == 0) + return alert(translations["Empty solution"]); this.newProblem.stage = "preview"; }, sendNewProblem: function() { @@ -113,3 +127,8 @@ Vue.component('my-problems', { }, }, }) + +// TODO: +// possibilité de supprimer / éditer si peer ID reconnu comme celui du probleme (champ "uploader") +// --> côté serveur on vérifie un certain "secret" +// --> filtre possible "mes problèmes"