Commit d4b5195d authored by Jérémie Passerat's avatar Jérémie Passerat

Edit reponse courte ok et choix multiple entamé

parent 3d7cb6d0
......@@ -551,7 +551,6 @@ export default {
margin-bottom: 5vh;
margin-left: 21vw;
border: 1px solid coral;
}
img {
......
......@@ -4,13 +4,15 @@
{'margin-top': '10px'}, {'margin-left': '10px'}]" @switched="onSwitched"/>
<Choix_Mode_Variante v-bind:darkMode="darkMode" class="menuVariante" v-show="variante && nouveauTitre !== 'Manuel d\'utilisation de l\'application OpenQuizz'"/>
<span v-show="!variante || nouveauTitre === 'Manuel d\'utilisation de l\'application OpenQuizz'" :class="etat !== 'manuel' ? 'prout' : 'proutManuel'">{{ titrePage }}</span>
<div class="notif" v-on:click="choixIconeNotification" v-show="isNotif === true"
v-bind:style="[!variante ? {'margin-left': '90%'} : {'margin-left': '32%'}]"></div>
<div class="circle" id="menuAuteur" v-if="etat !=='manuel'" v-on:click="isAffiche = !isAffiche" >
<!-- v-bind:style="styleCircle">-->
<div id="notif & circle" style="display: flex; padding-top: 0.5vh; padding-bottom: 0.5vh">
<div class="notif" v-on:click="choixIconeNotification" v-show="isNotif === true"></div>
<div class="circle" id="menuAuteur" v-if="etat !=='manuel'" v-on:click="isAffiche = !isAffiche" >
</div>
<div :class="darkMode ? 'circleVideDark' : 'circleVide'" v-else> </div>
<!-- v-bind:style="styleCircle">-->
</div>
<div :class="darkMode ? 'circleVideDark' : 'circleVide'" v-else> </div>
<div class="menu" v-bind:class="darkMode ? 'menuDark' : ''" v-show="isAffiche">
<div v-if="etat !== 'Profil'" class="sous_menu" v-bind:class="darkMode ? 'sous_menuDark' : ''" v-on:click="choixMenuAnnexe">Profil</div>
<div v-else class="sous_menu" v-bind:class="darkMode ? 'sous_menuDark' : ''" v-on:click="choixMenuAnnexe">Contenu</div>
......@@ -262,9 +264,9 @@ export default {
margin-top: 0.25%;
margin-bottom: 0.25%;
border-radius: 50%;
/* display: flex; !* or inline-flex *!
align-items: center;
justify-content: center;*/
/* display: flex; !* or inline-flex *!
align-items: center;
justify-content: center;*/
height: 4.2vh;
width: 4.2vh;
......@@ -305,8 +307,8 @@ export default {
width: 100px;
background: white;
border: thin solid black;
/* margin-top: 46px;
margin-left: 94.75%;*/
/* margin-top: 46px;
margin-left: 94.75%;*/
position: absolute;
right: 0.1vw;
top: 5vh;
......@@ -321,15 +323,16 @@ export default {
.notif {
border: thin solid black;
border-radius: 30%;
height: 30px;
width: 30px;
height: 4vh;
width: 4vh;
z-index: 1;
margin-left: 90%;
margin-right: 1vw;
background-image: url(assets/img/cloche.png);
background-size: cover;
margin-top: 0.5%;
margin-bottom: 0.5%;
}
.sous_menu{
......
<template>
<div style="text-align: center">
<p>Bienvenue dans la page de choix des tags</p>
<p style="margin-top: 1vh">Bienvenue dans la page de choix des tags</p>
<p>Pour compléter le contenu ajouté, il va falloir lui associer des tags</p>
<label>Choisir le tag de niveau 1</label><br><br>
......
......@@ -79,8 +79,8 @@ export default {
flex-grow: 1;
text-align: center;
vertical-align: bottom;
/*padding-bottom: 0;*/
padding-top: 1vh;
padding-bottom: 0;
padding-top: 2vh;
}
.nonClicked {
......
......@@ -193,7 +193,6 @@ export default {
contenuClique: function () {
let that = this
alert("AYA")
if (this.contenuCliqueProvenance === 'maj'){
this.idContenu = this.contenuClique.idContenuEnCours
} else {
......
......@@ -158,11 +158,12 @@ export default {
*/
changerVersion: function () {
let that = this
if (this.contenuCliqueProvenance === 'perso' && this.versionMax > 1){
Service.recupererTexteVersionContenu(JSON.stringify(this.contenuClique._id), this.versionChoisie).then(
function (response) {
that.texteDuContenu = response.data
}
)
)}
},
/**
* @vuese
......
......@@ -90,7 +90,8 @@ isActif ? {'margin-left': '1vw', 'margin-right': '1vw'} : {'margin-left': '0.6vw
<td v-if="item.provenance === 'en-cours'"> - </td>
<td v-else>{{ calculerNote(item) }}</td>
<td>{{ item.note_perso }}</td>
<td v-show="!isActif" v-if="item.provenance !== 'en-cours'" v-b-popover.hover.bottom="item.tags_fixes.toString()">{{item.tags_fixes.toString()}}</td>
<td v-show="!isActif" v-if="item.provenance !== 'en-cours'" v-b-popover.hover.bottom="tagsFixesContenu(item.tags_fixes)">
{{ tagsFixesContenu(item.tags_fixes) }}</td>
<td v-show="!isActif" v-else v-b-popover.hover.bottom="'tags non disponibles'">tags non disponibles</td>
<td v-show="!isActif" v-if="item.provenance !== 'en-cours'" v-b-popover.hover.bottom="tagsLibresContenu(item)">
{{tagsLibresContenu(item)}}</td>
......@@ -112,7 +113,8 @@ isActif ? {'margin-left': '1vw', 'margin-right': '1vw'} : {'margin-left': '0.6vw
<td>{{item.versionEnCours.date}}</td>
<td>{{item.popularite}}</td>
<td>{{calculerNote(item)}}</td>
<td v-show="!isActif" v-b-popover.hover.bottom="item.tags_fixes.toString()">{{item.tags_fixes.toString()}}</td>
<td v-show="!isActif" v-b-popover.hover.bottom="tagsFixesContenu(item.tags_fixes)">
{{ tagsFixesContenu(item.tags_fixes) }}</td>
<td>{{ item.type }}</td>
<td>{{ item.source }}</td>
<td class="boutonSupprimer"> <input type="checkbox" v-on:change="ajouterCoche($event, item._id, item.versionEnCours)" class="horns" name="horns"/></td>
......@@ -126,8 +128,8 @@ isActif ? {'margin-left': '1vw', 'margin-right': '1vw'} : {'margin-left': '0.6vw
v-bind:style="{'margin-left': (!isActif ? '94.8%' : '94%')}">
<b-popover target="ajouterContenu" triggers="click" placement="lefttop">
<template #title>Choix : </template>
<button v-on:click="ajouterContenu('1')" v-bind:style="'height: auto; width: auto'">1. Créer un markdown</button>
<button v-on:click="ajouterContenu('2')" v-bind:style="'height: auto; width: auto'">2. Importer un xml moodle</button>
<button class="newContenu" style="margin-bottom: 0.5vh" v-on:click="ajouterContenu('1')" v-bind:style="'height: auto; width: auto'">1. Créer un markdown</button>
<button class="newContenu" v-on:click="ajouterContenu('2')" v-bind:style="'height: auto; width: auto'">2. Importer un xml moodle</button>
</b-popover>
</div>
......@@ -349,6 +351,16 @@ export default {
else
return item.tags_libres.toString()
},
/**
* @vuese
* Formatte les tags libres du contenu (si existants)
*/
tagsFixesContenu: function (tags) {
if (typeof tags === 'string')
tags = JSON.parse(tags)
return tags.toString()
},
/**
* @vuese
* Charger les contenus du panier de l'auteur connecté
......@@ -654,6 +666,7 @@ export default {
that.panierChoisi = true
})
} else {
Service.exporterXML(JSON.stringify(this.contenuClique._id)).then(function (reponse) {
const url = window.URL.createObjectURL(new Blob([reponse.data]));
const link = document.createElement('a')
......@@ -1332,4 +1345,9 @@ th image
}
.newContenu {
background: lightgoldenrodyellow;
border: none;
}
</style>#FF8C00
\ No newline at end of file
......@@ -27,11 +27,20 @@
</tr>
<tr style="height: 69px">
<td style="width: 30%; text-align: left">Plusieurs réponses ou une seule?</td>
<td style="width: 70%; text-align: left">
<td style="width: 70%; text-align: left; padding-top: 4vh">
<select v-model="multipleChoisie">
<option>Réponses multiples autorisées</option>
<option>Une seule réponse</option>
</select>
<br>
<input type="checkbox" style="margin-top: -0.25vh; margin-right: 0.25vw" v-model="isShuffle">
<label style="margin-top: -0.25vh">Mélanger les réponses</label>
</td>
</tr>
<tr>
<td style="width: 30%; text-align: left"></td>
<td style="width: 70%; text-align: left">
</td>
</tr>
<tr style="height: 69px">
......@@ -43,7 +52,7 @@
</td>
</tr>
<template v-for="j in reponses.length" style="background: brown">
<template v-for="j in reponses.length" style="background: brown">
<tr style="height: 225px" :key="j + 'reponse'">
<td style="width: 30%; text-align: left">Réponse {{ j }}</td>
......@@ -68,7 +77,12 @@
</td>
</tr>
</template>
<span id="nvelleReponse" @click="ajouterReponse"> Ajouter une réponse</span>
</table>
<button style="width: auto; height: auto; margin-left: -100px; position: fixed; bottom: 18px" v-on:click="action('modifier')">modifier</button>
<button style="width: auto; height: auto; margin-left: -15px; position: fixed; bottom: 18px" v-on:click="action('arriere')">retour en arriere</button>
</div>
</div>
......@@ -89,6 +103,7 @@ export default {
nomQuestion: '',
texteQuestion: '',
noteDefaut: 0,
isShuffle: false,
generalFeedback: '',
options: ["Aucun", "100%", "90%", "83.33%", "80%", "75%", "70%", "66.66%", "60%", "50%", "40%", "33.33%", "30%", "25%", "20%", "16.6667%", "14.28571%",
"12.5%", "11.11%", "10%", "5%"],
......@@ -101,7 +116,69 @@ export default {
multipleChoisie: ''
}
},
methods : {
/**
* @vuese
* Récupération de l'action utilisateur
*
* @param actionChoisie
*/
action: function (actionChoisie) {
if (actionChoisie === 'arriere') {
this.$emit("actionMoodle", {action: actionChoisie})
} else {
this.questionParsee.nom_question = this.nomQuestion
this.questionParsee.intitule_question = this.texteQuestion
this.questionParsee.note_defaut = this.noteDefaut
this.questionParsee.feedback_general = this.generalFeedback
this.questionParsee.liste_reponse = this.reponses
this.questionParsee.liste_feedback = this.feedbacks
this.noteReponse = this.questionParsee.liste_note.map(note => note + "%")
this.questionParsee.liste_note = this.notes.map(note => note.substring(0, note.length-1))
this.questionParsee.liste_note = this.questionParsee.liste_note.map(note => {if (note === 'Aucun') return '0'; else return note;})
this.questionParsee.melange_reponse = this.isShuffle
switch (this.questionParsee.numerotation) {
case this.optionsNumerotation[0]:
this.questionParsee.numerotation = "abc"
break
case this.optionsNumerotation[1]:
this.questionParsee.numerotation = "ABCD"
break
case this.optionsNumerotation[2]:
this.questionParsee.numerotation = "123"
break
case this.optionsNumerotation[3] :
this.questionParsee.numerotation = "iii"
break
case this.optionsNumerotation[4] :
this.questionParsee.numerotation = "IIII"
break
case this.optionsNumerotation[5]:
this.questionParsee.numerotation = "none"
break
}
this.questionParsee.multipleChoisie = this.multipleChoisie === 'Une seule réponse' ? '1' : '0'
/* this.feedbacks = this.questionParsee.liste_feedback
this.reponses = this.questionParsee.liste_reponse
this.notes = this.questionParsee.liste_note.map(note => note + "%")
this.notes = this.notes.map(note => {if (note === '0%') return 'Aucun'; else return note;})*/
this.$emit("actionMoodle", {action: actionChoisie, questionParsee: this.questionParsee})
}
},
/**
* @vuese
* Ajouter une réponse au contenu
*/
ajouterReponse: function () {
this.reponses.push("")
this.notes.push(this.options[0])
this.feedbacks.push("")
}
},
watch: {
questionParsee: function () {
if (this.questionParsee.type_question === 'multichoice') {
......@@ -116,7 +193,6 @@ export default {
this.notes = this.notes.map(note => {if (note === '0%') return 'Aucun'; else return note;})
switch (this.questionParsee.numerotation) {
case "abc":
this.optionNumChoisie = this.optionsNumerotation[0]
......@@ -138,13 +214,16 @@ export default {
break
}
this.isShuffle = this.questionParsee.melange_reponse
if (this.questionParsee.nb_reponse){
this.multipleChoisie = "Une seule réponse"
} else {
this.multipleChoisie = "Réponses multiples autorisées"
}
}
}
},
}
}
</script>
......@@ -190,4 +269,13 @@ label {
td > * {
vertical-align: middle;
}
#nvelleReponse::before {
content: "\002B";
}
#nvelleReponse {
text-decoration: underline;
}
</style>
\ No newline at end of file
......@@ -31,65 +31,38 @@
<tr>
<td style="width: 30%; text-align: left">Sensible à la casse</td>
<td style="width: 70%; text-align: left">
<select v-model="choixCasse">
<option>Non, la casse n'est pas importante</option>
<option>Oui, la casse est importante</option>
</select>
<select v-model="choixCasse">
<option>Non, la casse n'est pas importante</option>
<option>Oui, la casse est importante</option>
</select>
</td>
</tr>
<tr>
<td style="width: 30%; text-align: left">Réponse 1</td>
<template v-for="i in texteReponse.length">
<tr :key="i + 'reponse'">
<td style="width: 30%; text-align: left">Réponse {{i}}</td>
<td style="width: 70%; text-align: left">
<input type="text" style="height: 25px;" v-model="texteReponse[0]"/> <label id="note">Note</label>
<select style="width: 75px;" v-model="noteReponse[0]">
<option v-for="i in options.length" :key="i">{{ options[i-1] }}</option>
</select>
</td>
</tr>
<tr style="height: 225px">
<td style="width: 30%; text-align: left">Feedback</td>
<td style="width: 70%">
<quill-editor style="height: 100px; margin-top: -66px" v-model="feedbackReponse[0]"/>
</td>
</tr>
<tr>
<td style="width: 30%; text-align: left">Réponse 2</td>
<td style="width: 70%; text-align: left">
<input type="text" style="height: 25px;" v-model="texteReponse[1]"/> <label id="note">Note</label>
<select style="width: 75px;" v-model="noteReponse[1]">
<option v-for="i in options.length" :key="i">{{ options[i-1] }}</option>
<input type="text" style="height: 25px;" v-model="texteReponse[i - 1]"/> <label id="note">Note</label>
<select style="width: 75px;" v-model="noteReponse[i - 1]">
<option v-for="j in options.length" :key="j">{{ options[j-1] }}</option>
</select>
</td>
</tr>
<tr style="height: 225px">
<tr style="height: 225px" :key="i + 'feedback'">
<td style="width: 30%; text-align: left">Feedback</td>
<td style="width: 70%">
<quill-editor style="height: 100px; margin-top: -66px" v-model="feedbackReponse[1]"/>
<quill-editor style="height: 100px; margin-top: -66px" v-model="feedbackReponse[i - 1]"/>
</td>
</tr>
<tr>
<td style="width: 30%; text-align: left">Réponse 3</td>
<td style="width: 70%; text-align: left">
</template>
<input type="text" style="height: 25px;" v-model="texteReponse[2]"/> <label id="note">Note</label>
<select style="width: 75px;" v-model="noteReponse[2]">
<option v-for="i in options.length" :key="i">{{ options[i-1] }}</option>
</select>
</td>
</tr>
<span id="nvelleReponse" @click="ajouterReponse"> Ajouter une réponse</span>
<tr style="height: 225px">
<td style="width: 30%; text-align: left">Feedback</td>
<td style="width: 70%">
<quill-editor style="height: 100px; margin-top: -66px" v-model="feedbackReponse[2]"/>
</td>
</tr>
</table>
<button style="width: auto; height: auto; margin-left: -100px; position: fixed; bottom: 18px" v-on:click="action('modifier')">modifier</button>
<button style="width: auto; height: auto; margin-left: -15px; position: fixed; bottom: 18px" v-on:click="action('arriere')">retour en arriere</button>
</div>
</div>
</template>
......@@ -119,6 +92,47 @@ export default {
"12.5%", "11.11%", "10%", "5%"]
}
},
methods: {
/**
* @vuese
* Récupération de l'action utilisateur
*
* @param actionChoisie
*/
action: function (actionChoisie) {
if (actionChoisie === 'arriere') {
this.$emit("actionMoodle", {action: actionChoisie})
} else {
this.questionParsee.nom_question = this.nomQuestion
this.questionParsee.intitule_question = this.texteQuestion
this.questionParsee.note_defaut = this.noteDefaut
this.questionParsee.feedback_general = this.generalFeedback
this.questionParsee.liste_reponse = this.texteReponse
this.questionParsee.liste_note = this.noteReponse.map(note => note.substring(0, note.length-1))
this.questionParsee.liste_note = this.questionParsee.liste_note.map(note => {if (note === 'Aucun') return '0'; else return note;})
this.questionParsee.liste_feedback = this.feedbackReponse
this.questionParsee.majuscule = this.choixCasse === this.optionsCasse[0] ? 0 : 1
/* this.texteReponse = this.questionParsee.liste_reponse.filter(reponse => reponse)
this.noteReponse = this.questionParsee.liste_note.map(note => note + "%")
this.feedbackReponse = this.questionParsee.liste_feedback
this.choixCasse = this.optionsCasse[this.questionParsee.majuscule]*/
this.$emit("actionMoodle", {action: actionChoisie, questionParsee: this.questionParsee})
}
},
/**
* @vuese
* Ajouter une réponse au contenu
*/
ajouterReponse: function () {
this.texteReponse.push("")
this.noteReponse.push(this.options[0])
this.feedbackReponse.push("")
}
},
watch: {
questionParsee: function () {
if (this.questionParsee.type_question === 'shortanswer') {
......@@ -183,4 +197,13 @@ td > * {
margin-right: 5px;
margin-bottom: 7.5px;
}
#nvelleReponse::before {
content: "\002B";
}
#nvelleReponse {
text-decoration: underline;
}
</style>
\ No newline at end of file
......@@ -83,6 +83,11 @@ export default {
}
},
methods: {
/**
* @vuese
* récupération de l'action utilisateur
* @param actionChoisie
*/
action: function (actionChoisie) {
if (actionChoisie === 'arriere'){
this.$emit("actionMoodle", {action: actionChoisie})
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment