diff --git a/src/main/resources/static/css/style.css b/src/main/resources/static/css/style.css
index ce7dfb3..d705758 100644
--- a/src/main/resources/static/css/style.css
+++ b/src/main/resources/static/css/style.css
@@ -50,7 +50,7 @@ main{
color: #96c7e8;
font-size: 24px;
flex-direction: column;
- margin-top: 75px;
+ margin-top: 115px;
}
.button a{
position: fixed;
diff --git a/src/main/resources/templates/quizz-edit.html b/src/main/resources/templates/quizz-edit.html
index 3b1df65..2f761d0 100644
--- a/src/main/resources/templates/quizz-edit.html
+++ b/src/main/resources/templates/quizz-edit.html
@@ -19,9 +19,10 @@
-
-
-
+
+
+
+
@@ -53,6 +54,8 @@
qpositions={}
// the name of the quizz
quizzName = ""
+
+ editing = new Set()
function getdata() {
$.ajax({
@@ -74,6 +77,7 @@
qpositions[questions[i]["id"]] = i
internalCreateQuestion(i)
}
+ $(`.reorder-button`).hide()
}
})
}
@@ -83,62 +87,64 @@
qu = questions[i]
qid = qu["id"]
newhtml = `
- -
-
-
+
-
+
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
`
newdom = $('').html(newhtml).contents()
$("#questions-list").append(newdom)
const theqid = qid
- $(`#question-display-${qid}-button-edit`).on('click',e => edit(theqid))
- $(`#question-display-${qid}-type-edit`).on('click',e => setType(theqid))
- $(`#question-display-${qid}-remove`).on('click',e => removeQuestion(theqid))
- $(`#question-display-${qid}-validate-edit`).on('click',e => commitEdit(theqid))
- $(`#question-display-${qid}-cancel-edit`).on('click',e => cancelEdit(theqid))
+ $(`#q-${qid}-button-edit`).on('click',e => edit(theqid))
+ $(`#q-${qid}-type-edit`).on('click',e => setType(theqid))
+ $(`#q-${qid}-remove`).on('click',e => removeQuestion(theqid))
+ $(`#q-${qid}-validate-edit`).on('click',e => commitEdit(theqid))
+ $(`#q-${qid}-cancel-edit`).on('click',e => cancelEdit(theqid))
+ $(`#q-${qid}-reorder-uup`).on('click',e => reorderMove(theqid,'uup'))
+ $(`#q-${qid}-reorder-up`).on('click',e => reorderMove(theqid,'up'))
+ $(`#q-${qid}-reorder-down`).on('click',e => reorderMove(theqid,'down'))
+ $(`#q-${qid}-reorder-ddown`).on('click',e => reorderMove(theqid,'ddown'))
newcontent = QTYPES[qu["type"]]["display"](qid,qu["value"])
- $(`#question-display-${qid}-content`).replaceWith(newcontent)
+ $(`#q-${qid}-content`).replaceWith(newcontent)
newedit = QTYPES[qu["type"]]["edit"](qid,qu["value"])
- $(`#question-display-${qid}-edit`).replaceWith(newedit)
+ $(`#q-${qid}-edit`).replaceWith(newedit)
contentMode(qid)
}
function contentMode(qid) {
- $(`#question-display-${qid}-content`).show()
- $(`#question-display-${qid}-button-edit`).show()
- $(`#question-display-${qid}-type-edit`).show()
- $(`#question-display-${qid}-remove`).show()
- $(`#question-display-${qid}-edit`).hide()
- $(`#question-display-${qid}-validate-edit`).hide()
- $(`#question-display-${qid}-cancel-edit`).hide()
+ $(`#q-${qid}-content`).show()
+ $(`.display-button-${qid}`).show()
+ $(`#q-${qid}-edit`).hide()
+ $(`.edit-button-${qid}`).hide()
+ $('.reorder-button').hide()
}
function editMode(qid) {
- $(`#question-display-${qid}-content`).hide()
- $(`#question-display-${qid}-button-edit`).hide()
- $(`#question-display-${qid}-type-edit`).hide()
- $(`#question-display-${qid}-remove`).hide()
- $(`#question-display-${qid}-edit`).show()
- $(`#question-display-${qid}-validate-edit`).show()
- $(`#question-display-${qid}-cancel-edit`).show()
+ $(`#q-${qid}-content`).hide()
+ $(`.display-button-${qid}`).hide()
+ $(`#q-${qid}-edit`).show()
+ $(`.edit-button-${qid}`).show()
+ $('.reorder-button').hide()
}
function lockEdit(qid) {
- $(`#question-display-${qid}-edit *`).prop('disabled', true)
- $(`#question-display-${qid}-validate-edit`).prop('disabled', true)
- $(`#question-display-${qid}-cancel-edit`).prop('disabled', true)
+ $(`#q-${qid}-edit *`).prop('disabled', true)
+ $(`.edit-button-${qid}`).prop('disabled', true)
}
function unlockEdit(qid) {
- $(`#question-display-${qid}-edit *`).prop('disabled', false)
- $(`#question-display-${qid}-validate-edit`).prop('disabled', false)
- $(`#question-display-${qid}-cancel-edit`).prop('disabled', false)
+ $(`#q-${qid}-edit *`).prop('disabled', false)
+ $(`.edit-button-${qid}`).prop('disabled', false)
}
function contentNameMode() {
$("#question-name").show()
@@ -155,12 +161,32 @@
$(`#edit-question-name-cancel`).show()
}
+ function reorderMode() {
+ $(`.display-button`).hide()
+ $(`.edit-button`).hide()
+ $(`.reorder-button`).show()
+ for (let qid of editing) {
+ lockEdit(qid)
+ }
+ }
+ function unReorderMode() {
+ $(`.reorder-button`).hide()
+ $(`.display-button`).show()
+ for (let qid of editing) {
+ $(`.display-button-${qid}`).hide()
+ $(`.edit-button-${qid}`).show()
+ editMode(qid)
+ unlockEdit(qid)
+ }
+ }
+
function setType(qid) {
//TODO à faire ^^
}
function edit(qid) {
+ editing.add(qid)
editMode(qid)
}
@@ -184,17 +210,18 @@
i = qpositions[qid]
questions[i]["value"] = newvalue
newcontent = QTYPES[questions[i]["type"]]["display"](qid,questions[i]["value"])
- $(`#question-display-${qid}-content`).replaceWith(newcontent)
+ $(`#q-${qid}-content`).replaceWith(newcontent)
unlockEdit(qid)
+ editing.delete(qid)
contentMode(qid)
}
})
}
function removeQuestion(qid) {
- $(`#question-display-${qid}-remove`).prop('disabled',true)
+ $(`#q-${qid}-remove`).prop('disabled',true)
if(!confirm(`Voulez-vous vraiment supprimer la question ${qpositions[qid]+1}`)) {
- $(`#question-display-${qid}-remove`).prop('disabled', false)
+ $(`#q-${qid}-remove`).prop('disabled', false)
return;
}
$.ajax({
@@ -206,22 +233,23 @@
if(!res["success"]) {
console.log(res["message"])
error(res["message"])
- $(`#question-display-${qid}-remove`).prop('disabled', false)
+ $(`#q-${qid}-remove`).prop('disabled', false)
return
}
- $(`#question-display-${qid}-remove`).prop('disabled', false)
+ $(`#q-${qid}-remove`).prop('disabled', false)
i = qpositions[qid]
qpositions[qid] = null
questions.splice(i,1)
- $(`#question-display-${qid}`).remove()
+ $(`#q-${qid}`).remove()
}
})
}
function cancelEdit(qid) {
i = qpositions[qid]
newedit = QTYPES[questions[i]["type"]]["edit"](qid,questions[i]["value"])
- $(`#question-display-${qid}-edit`).replaceWith(newedit)
+ $(`#q-${qid}-edit`).replaceWith(newedit)
+ editing.delete(qid)
contentMode(qid)
}
@@ -231,9 +259,9 @@
$.ajax({
url: "/questions/quizz-edit/"+quizzid+"/set-name",
type: "POST",
- data: JSON.stringify(newname),
- dataType: "json",
- contentType: 'application/json',
+ data: newname,
+ dataType: 'json',
+ contentType: 'text/plain',
success: function(res) {
console.log(res)
if(!res["success"]) {
@@ -277,21 +305,128 @@
}
})
}
+
+ // Map newindex -> oldindex
+ ordermapping = []
+
+ function startReorder() {
+ ordermapping = new Array(questions.length)
+ for (let i=0;ij;k--){
+ ordermapping[k] = ordermapping[k-1]
+ }
+ }
+ ordermapping[j] = oldomi
+
+ if(j==ordermapping.length-1) {
+ $(`#q-${qid}`).appendTo($("#questions-list"))
+ } else {
+ // We want the one _currently_ at position j+1
+ qid2 = questions[ordermapping[j+1]]['id']
+ console.log(`Moving ${qid} before ${qid2}`)
+ $(`#q-${qid}`).insertBefore($(`#q-${qid2}`))
+ }
+
+ }
+
+ function commitReorder() {
+ $(".reorder-button").prop('disabled', true)
+ newIdOrders = []
+ for(let p=0;p question data
+ newquestions=new Array(questions.length)
+ newqpositions={}
+ for(let p=0;p
-
+
- - ☑ ☑
- - ☒ ☒
- - ☒ ☒
- - ☒ ☒
@@ -300,11 +435,11 @@
return out
}
function readEditBlockBCC(id) {
- questionText = $(`#question-display-${id}-edit-question`).val()
- goodText = $(`#question-display-${id}-edit-good`).val()
- wrongText1 = $(`#question-display-${id}-edit-wrong1`).val()
- wrongText2 = $(`#question-display-${id}-edit-wrong2`).val()
- wrongText3 = $(`#question-display-${id}-edit-wrong3`).val()
+ questionText = $(`#q-${id}-edit-question`).val()
+ goodText = $(`#q-${id}-edit-good`).val()
+ wrongText1 = $(`#q-${id}-edit-wrong1`).val()
+ wrongText2 = $(`#q-${id}-edit-wrong2`).val()
+ wrongText3 = $(`#q-${id}-edit-wrong3`).val()
return {
"text": questionText,
"good": goodText,
@@ -313,7 +448,7 @@
}
function makeAnswerBlockBCC(id,question) {
html = `
-
+
${_.escape(question["text"])}
- ☑ ${_.escape(question["good"])}
@@ -328,6 +463,9 @@
}
contentNameMode()
+ $("#reorder-questions").on("click",startReorder)
+ $("#reorder-questions-commit").on("click",commitReorder)
+ $("#reorder-questions-cancel").on("click",cancelReorder)
$("#edit-question-name-button").on("click",editNameMode)
$("#edit-question-name-confirm").on("click",commitEditName)
$("#edit-question-name-cancel").on("click",cancelEditName)