.row(v-if="showOne")
.col-sm-12.col-md-10.col-md-offset-1.col-lg-8.col-lg-offset-2
#topPage
+ .button-group(v-if="st.user.id == curproblem.uid")
+ button(@click="editProblem(curproblem)") {{ st.tr["Edit"] }}
+ button(@click="deleteProblem(curproblem)") {{ st.tr["Delete"] }}
span.vname {{ curproblem.vname }}
span.uname ({{ curproblem.uname }})
button.marginleft(@click="backToList()") {{ st.tr["Back to list"] }}
- button.nomargin(
- v-if="st.user.id == curproblem.uid"
- @click="editProblem(curproblem)"
- )
- | {{ st.tr["Edit"] }}
- button.nomargin(
- v-if="st.user.id == curproblem.uid"
- @click="deleteProblem(curproblem)"
- )
- | {{ st.tr["Delete"] }}
+ button.nomargin(@click="gotoPrevNext($event,curproblem,1)")
+ | {{ st.tr["Previous"] }}
+ button.nomargin(@click="gotoPrevNext($event,curproblem,-1)")
+ | {{ st.tr["Next"] }}
p.oneInstructions.clickable(
v-html="parseHtml(curproblem.instruction)"
@click="curproblem.showSolution=!curproblem.showSolution"
.row(v-else)
.col-sm-12.col-md-10.col-md-offset-1.col-lg-8.col-lg-offset-2
#controls
- button#newProblem(onClick="window.doClick('modalNewprob')")
+ button#newProblem(@click="prepareNewProblem()")
| {{ st.tr["New problem"] }}
label(for="checkboxMine") {{ st.tr["My problems"] }}
input#checkboxMine(
:value="v.id"
)
| {{ v.name }}
- table
+ table#tProblems
tr
th {{ st.tr["Variant"] }}
th {{ st.tr["Instructions"] }}
this.showOne = true;
});
},
+ gotoPrevNext: function(e, prob, dir) {
+ const startIdx = this.problems.findIndex(p => p.id == prob.id);
+ let nextIdx = startIdx + dir;
+ while (
+ nextIdx >= 0 &&
+ nextIdx < this.problems.length &&
+ ((this.onlyMines && this.problems[nextIdx].uid != this.st.user.id) ||
+ (!this.onlyMines && this.problems[nextIdx].uid == this.st.user.id))
+ )
+ nextIdx += dir;
+ if (nextIdx >= 0 && nextIdx < this.problems.length)
+ this.setHrefPid(this.problems[nextIdx]);
+ else
+ alert(this.st.tr["No more problems"]);
+ },
+ prepareNewProblem: function() {
+ this.resetCurProb();
+ window.doClick("modalNewprob");
+ },
sendProblem: function() {
const error = checkProblem(this.curproblem);
if (error) {
this.showProblem(editedP);
}
else {
- // New problem
let newProblem = Object.assign({}, this.curproblem);
newProblem.id = ret.id;
newProblem.uid = this.st.user.id;
newProblem.uname = this.st.user.name;
this.problems = [newProblem].concat(this.problems);
- this.resetCurProb();
}
document.getElementById("modalNewprob").checked = false;
this.infoMsg = "";
margin: 0 auto
max-width: 400px
+table#tProblems
+ max-height: 100%
+
#controls
margin: 0
width: 100%