X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fviews%2FProblems.vue;h=a55126fa10c12c202360f4d1468fe56930e09584;hb=70c9745d34b705eb8a4dc72b6e4655739d31347c;hp=7f8632da5e58879a0837dc2cfa07b428f0788f45;hpb=29d33c8ac72a9ea5d72d8c48c426d8380e188bd7;p=vchess.git diff --git a/client/src/views/Problems.vue b/client/src/views/Problems.vue index 7f8632da..a55126fa 100644 --- a/client/src/views/Problems.vue +++ b/client/src/views/Problems.vue @@ -42,17 +42,19 @@ main ) #diagram(v-html="curproblem.diag") fieldset - textarea( + textarea.instructions-edit( :placeholder="st.tr['Instructions']" + @input="adjustHeight('instructions')" v-model="curproblem.instruction" ) - p(v-html="parseHtml(curproblem.instruction)") + .instructions(v-html="parseHtml(curproblem.instruction)") fieldset - textarea( + textarea.solution-edit( :placeholder="st.tr['Solution']" + @input="adjustHeight('solution')" v-model="curproblem.solution" ) - p(v-html="parseHtml(curproblem.solution)") + .solution(v-html="parseHtml(curproblem.solution)") button(@click="sendProblem()") {{ st.tr["Send"] }} #dialog.text-center {{ st.tr[infoMsg] }} .row(v-if="showOne") @@ -68,12 +70,12 @@ main | {{ st.tr["Previous_p"] }} button.nomargin(@click="gotoPrevNext(curproblem,-1)") | {{ st.tr["Next_p"] }} - p.oneInstructions.clickable( + .instructions.oneInstructions.clickable( v-html="parseHtml(curproblem.instruction)" @click="curproblem.showSolution=!curproblem.showSolution" ) | {{ st.tr["Show solution"] }} - p( + .solution( v-show="curproblem.showSolution" v-html="parseHtml(curproblem.solution)" ) @@ -129,6 +131,7 @@ import params from "@/parameters"; import { getDiagram, replaceByDiag } from "@/utils/printDiagram"; import { processModalClick } from "@/utils/modalClick"; import { ArrayFun } from "@/utils/array"; +import afterRawLoad from "@/utils/afterRawLoad"; import BaseGame from "@/components/BaseGame.vue"; export default { name: "my-problems", @@ -210,6 +213,12 @@ export default { document.getElementById("inputFen").focus(); } }, + adjustHeight: function(elt) { + // https://stackoverflow.com/a/48460773 + let t = document.querySelector("." + elt + "-edit"); + t.style.height = ""; + t.style.height = (t.scrollHeight + 3) + "px"; + }, setVname: function(prob) { prob.vname = this.st.variants.find(v => v.id == prob.vid).name; }, @@ -281,7 +290,10 @@ export default { }, parseHtml: function(txt) { return !txt.match(/<[/a-zA-Z]+>/) - ? txt.replace(/\n/g, "
") //no HTML tag + ? + // No HTML tag + txt.replace(/\n\n/g, "
") + .replace(/\n/g, "
") : txt; }, changeVariant: function(prob) { @@ -302,19 +314,13 @@ export default { this.loadedVar = vid; cb(); }); - // (AJAX) Request to get rules content (plain text, HTML) this.rulesContent = - require( - "raw-loader!@/translations/rules/" + - variant.name + "/" + - this.st.lang + ".pug" - ) - // Next two lines fix a weird issue after last update (2019-11) - .replace(/\\n/g, " ") - .replace(/\\"/g, '"') - .replace('module.exports = "', "") - .replace(/"$/, "") - .replace(/(fen:)([^:]*):/g, replaceByDiag); + afterRawLoad( + require( + "raw-loader!@/translations/rules/" + variant.name + "/" + + this.st.lang + ".pug" + ).default + ).replace(/(fen:)([^:]*):/g, replaceByDiag); }, trySetDiagram: function(prob) { // Problem edit: FEN could be wrong or incomplete, @@ -394,6 +400,8 @@ export default { }, prepareNewProblem: function() { this.resetCurProb(); + this.adjustHeight("instructions"); + this.adjustHeight("solution"); window.doClick("modalNewprob"); }, sendProblem: function() { @@ -441,6 +449,8 @@ export default { // prob.diag might correspond to some other problem or be empty: this.setDiagram(prob); //V is loaded at this stage this.copyProblem(prob, this.curproblem); + this.adjustHeight("instructions"); + this.adjustHeight("solution"); window.doClick("modalNewprob"); }, deleteProblem: function(prob) { @@ -479,7 +489,7 @@ export default { this.decorate(res.problems); this.problems[mode] = this.problems[mode].concat(res.problems) - // TODO: problems are alrady sorted, would just need to insert + // TODO: problems are already sorted, would just need to insert // the current individual problem in list; more generally // there is probably only one misclassified problem. // (Unless the user navigated several times by URL to show a @@ -498,6 +508,13 @@ export default {