X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fviews%2FProblems.vue;h=adc0ad366e71cc4a66b3c6134970ba40dfaf56a3;hb=ad65975c9150ac761c7e7c6696930d4e9e87396c;hp=7f8632da5e58879a0837dc2cfa07b428f0788f45;hpb=29d33c8ac72a9ea5d72d8c48c426d8380e188bd7;p=vchess.git diff --git a/client/src/views/Problems.vue b/client/src/views/Problems.vue index 7f8632da..adc0ad36 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)" ) @@ -210,6 +212,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 +289,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) { @@ -394,6 +405,8 @@ export default { }, prepareNewProblem: function() { this.resetCurProb(); + this.adjustHeight("instructions"); + this.adjustHeight("solution"); window.doClick("modalNewprob"); }, sendProblem: function() { @@ -441,6 +454,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 +494,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 +513,13 @@ export default {