Commit 76e5026d authored by Jérémie Passerat's avatar Jérémie Passerat

Complétion de la doc & creation de 6 nouveaux fichiers tests

parent 2418db5b
......@@ -28,26 +28,37 @@ export default {
modeModificationContenu: {}
},
methods: {
/**
* @vuese
* Ajout d'un tag libre
*/
creerTag: function () {
//alert("Créer le tag " + this.nouveauTag)
let data = {auteur: this.auteur, id_contenu: "", tag: this.nouveauTag}
Service.ajouterTagLibre(data)
this.tagsLibresAuteur.push(this.nouveauTag)
this.nouveauTag = ""
},
/**
* @vuese
* Suppression d'un tag libre
*/
supprimerTag: function (tagAVirer) {
//alert("Supprimer le tag " + tag)
//let data = {auteur: this.auteur, id_contenu: "", tag: tagAVirer}
//this.$emit("actionTagLibre", {suppression: tagAVirer, id_contenu: this.contenu._id})
Service.supprimerTagLibre(this.auteur, tagAVirer)
this.tagsLibresAuteur = this.tagsLibresAuteur.filter(tag => tag !== tagAVirer)
},
/**
* @vuese
* Revenir en arrière vers le contenu (si ce menu est appelé via Modifier_Contenu)
*/
revenirModifContenu: function () {
this.$emit("revenirAuContenu")
}
},
watch:{
/**
* @vuese
* Dès que l'auteur est connu, on récupère ses tags libres
*/
auteur: function () {
let that = this
Service.recupererTagLibre(this.auteur).then(function (response) {
......
......@@ -30,6 +30,10 @@ export default {
}
},
methods: {
/**
* @vuese
* permet 'd'enrengistrer' le fichier uploadé via le formulaire
*/
onUploadFiles: function (event) {
this.formData = new FormData()
......@@ -37,12 +41,16 @@ export default {
},
/**
* @vuese
* (A construire) Fonction de changement du mot de passe utilisateur
* Fonction pour revenir au panier
*/
retourArriere: function () {
// evenement pour retourner vers le volet Contenu_Base
this.$emit("retourArriere")
},
/**
* @vuese
* Fonction permettant l'ajout du fichier en tant que contenu
*/
ajouterContenu: function () {
let that = this
Service.uploaderContenuPerso(this.formData, this.auteur).then(
......
......@@ -195,9 +195,17 @@ export default {
this.modeGestion = !this.modeGestion
this.modeModificationContenu = true
},
/**
* @vuese
* infobulle sur l'icone pour accéder au manuel
*/
popoverManuel: function () {
this.hoverManuel = !this.hoverManuel
},
/**
* @vuese
* permet d'accéder au manuel d'utilisation d'OpenQuizz
*/
consulterManuel: function () {
if (this.etat === 'manuel'){
this.etat = this.etatTmp
......@@ -208,6 +216,10 @@ export default {
this.nouveauTitre = "Manuel d'utilisation de l'application OpenQuizz"
}
},
/**
* @vuese
* Dans le cas ou le composant 'GererTagsLibres' a été appelé via l'intérieur d'un contenu, permet de revenir directement sur ce contenu
*/
revenirAuContenu: function () {
this.etat = 'Contenu'
this.modeGestion = !this.modeGestion
......
......@@ -36,14 +36,16 @@ export default {
name: "Login",
methods: {
/**
* @vuese
* fonction de test de la validité de l'authentification de l'utilisateur
*/
logIn: function () {
let that = this
/**
* @vuese
* Appel au WS pour tester la validité de la saisie mdp/login de l'utilisateur
*/
Service.login([this.login, this.password]).then(function (response) {
// SI connexion réussie, on emet un booléen a true et le nom de l'auteur connecté
// @arg booléen indiquant que la connexion est ok
......@@ -57,6 +59,11 @@ export default {
that.errorLogin = true
})
},
/**
* @vuese
* Permet de valider l'authentification en appuyant sur entrée (et non le bouton)
* @param event
*/
keymonitor: function(event) {
if (event.key === "Enter") {
this.logIn()
......
......@@ -515,6 +515,11 @@ export default {
etatTmp: {},
},
methods: {
/**
* @vuese
* Descendre ou monter dans l'arborescence du menu latéral du manuel
* @param e
*/
naviguer: function (e) {
e.target.classList.toggle("symboleSectionDown")
console.log(e.target.parentNode.parentNode.nextSibling)
......
......@@ -100,8 +100,6 @@ export default {
publicationsRecues: function () {
let that = this
console.log("Salut salut, je le suis dans publications recues")
Service.getPublicationsRecues(this.auteur).then(function (response) {
let contenusRecu = response.data
......@@ -124,7 +122,6 @@ export default {
publicationsProposees: function () {
let that = this
console.log("Salut salut, je le suis dans publications proposees")
Service.getPublicationsProposees(this.auteur).then(function (response) {
let contenusPropose = response.data
......@@ -176,6 +173,10 @@ export default {
}
},
/**
* @vuese
* Dès que l'interrupteur pour le mode sombre est enclenché, on adapte l'affichage et on propage l'information
*/
onSwitched: function (isSwitched) {
this.darkMode = isSwitched
this.$emit("darkTheme", {active: isSwitched})
......
......@@ -53,10 +53,17 @@ export default {
}
},
methods: {
/**
* @vuese
* Fonction pour déclencher l'affichage de la page pour choisir les tags fixes
*/
choisirTags: function () {
this.isCreation = false
},
/**
* @vuese
* Fonction d'ajout du contenu en fonction de la saisie utilisateur
*/
ajouterContenu: function (event) {
//alert(event.tags)
......@@ -76,7 +83,7 @@ export default {
},
/**
* @vuese
* (A construire) Fonction de changement du mot de passe utilisateur
* Retour sur la page du panier
*/
retourArriere: function (cree) {
// evenement pour retourner vers le volet Contenu_Base
......
......@@ -37,7 +37,7 @@ export default {
},*/
/**
* @vuese
* (A construire) Fonction de changement du mot de passe
* (A construire) Fonction permettant d'afficher l'espace du changement du mot de passe
*/
validerChangement: function (){
this.editMode = ! this.editMode
......
......@@ -49,6 +49,10 @@ export default {
id_contenu: {}
},
methods:{
/**
* @vuese
* Entériner les tags sélectionnés pour le contenu en cours de création / d'import
*/
validerTags: function () {
let tagsChoisis = [this.tagUn]
......@@ -99,29 +103,14 @@ export default {
// si on est dans le mode modification de contenu, on efface le tag du niveau 3
this.tagTrois = ""
}
}
},
watch: {
/**
* @vuese
* QUand le 3e tag est choisi, ̶o̶n̶ ̶r̶e̶n̶v̶o̶i̶e̶ ̶l̶e̶s̶ ̶i̶n̶f̶o̶s̶ ̶à̶ ̶N̶e̶w̶C̶o̶n̶t̶e̶n̶u̶ ̶o̶u̶ ̶à̶ ̶I̶m̶p̶o̶r̶t̶e̶r̶F̶i̶c̶h̶i̶e̶r̶ on a rien à faire
* Permet la mise en forme des tags banque (quand le composant TagsFixes est appelé dans Modifier_Contenu)
*/
niveau3: function () {
/* //alert("en haut et en bas")
if (this.tagsBanque === [])
this.$emit("tags", {tags: [this.tagUn, this.tagDeux, this.tagTrois]})
else{
// si on est ici c'est qu'on veut changer les tags d'un contenu
// on doit vérifier qu'aucun trou ne soit apparu dans les tags
alert("les nouveaux tags sont: " + this.tagUn + " " + this.tagDeux + " " + this.tagTrois)
}*/
}
},
watch: {
isModif: function () {
/* this.niveauDeux = 1
this.niveauTrois = 1
this.validationTags = 1*/
},
tagsBanque: function () {
// alert("Mais oui")
this.tagsModifies = ""
......
......@@ -38,6 +38,10 @@ export default {
darktheme: {}
},
methods:{
/**
* @vuese
* permet d'associer un tag libre à un contenu
*/
ajouterLeTag: function () {
let data = {auteur: this.auteur, id_contenu: JSON.stringify(this.contenu._id), tag: this.ajouterTagExistant}
......@@ -46,20 +50,28 @@ export default {
this.$emit("actionTagLibre", {creation: this.ajouterTagExistant, id_contenu: this.contenu._id})
this.ajouterTagExistant = ""
},
creerTag: function () {
/* creerTag: function () {
this.tagsLibres.push(this.nouveauTag)
let data = {auteur: this.auteur, id_contenu: JSON.stringify(this.contenu._id), tag: this.nouveauTag}
Service.ajouterTagLibre(data)
this.$emit("actionTagLibre", {creation: this.nouveauTag, id_contenu: this.contenu._id})
this.nouveauTag = ""
// this.ajouterTag(this.nouveauTag)
},
},*/
/**
* @vuese
* dissocier un tag d'un contenu
*/
supprimerTag: function (tagAVirer) {
this.tagsLibres = this.tagsLibres.filter(tag => tag !== tagAVirer)
let data = {auteur: this.auteur, id_contenu: JSON.stringify(this.contenu._id), tag: tagAVirer}
this.$emit("actionTagLibre", {suppression: tagAVirer, id_contenu: this.contenu._id})
Service.dissocierTagLibre(data)
},
/**
* @vuese
* Permet de charger le composant GererTagsLibres
*/
chargerGestionTagsLibres: function () {
this.$emit("chargerTagsLibres")
}
......@@ -76,6 +88,10 @@ export default {
}
},
watch:{
/**
* @vuese
* Dès que le contenu est cliqué, on récupère les tags libres associés au contenu & les tags libres de l'auteur
*/
contenu: function () {
let that = this
this.isModif = true
......@@ -92,6 +108,10 @@ export default {
},
},
computed: {
/**
* @vuese
* permet de filtrer la liste des tags libres ajoutables (en filtrant les tags déja actifs sur le contenu)
*/
tagsAuteurDisponibles: function () {
return this.tagsDeAuteur.filter(tagLibre => !this.tagsLibres.includes(tagLibre))
}
......
......@@ -10,6 +10,7 @@
<option>type / source</option>
<option>date</option>
<option>note</option>
<option>recherche</option>
</select>
</form>
</div>
......@@ -44,6 +45,9 @@ export default {
}
},
watch: {
/**
* Permet de remettre la sélection à zéro (quand filtre_choisi est vide)
*/
filtre_choisi: function () {
if (this.filtre_choisi === "")
this.selected = ""
......@@ -54,9 +58,10 @@ export default {
<style scoped>
.filtre {
width: 250px;
margin-top: 2px;
flex-basis: 80%;
width: 98%;
margin-left: 1%;
margin-right: 1%;
}
</style>
\ No newline at end of file
<template>
<div>
<form><input type="text" v-bind:style="darktheme ? { 'background-color': 'black', color: 'white'} : ''" class="filtre" placeholder="votre recherche"></form>
</div>
</template>
<script>
export default {
name: "Barre_Recherche",
props: {
// Signal d'activation ou non du theme sombre
darktheme: {}
},
}
</script>
<style scoped>
.filtre {
width: 250px;
margin-top: 2px;
flex-basis: 80%;
height: 22px;
}
/*
input[type="text"]{ background-color: black; color: white}
*/
</style>
\ No newline at end of file
......@@ -57,12 +57,6 @@
</table>
<br>
<!-- <p v-if="contenuCliqueProvenance!=='en-cours'">Type du contenu : {{ typeContenu }}</p>
<p v-if="contenuCliqueProvenance!=='en-cours'">Source du contenu : {{sourceContenu}}</p>
<p v-if="contenuCliqueProvenance!=='en-cours'">Note du contenu ( {{versionChoisie}}) : {{noteContenu}}</p>
<p v-if="contenuCliqueProvenance!=='en-cours'">Popularite du contenu : {{populariteContenu}}</p>
<p v-if="contenuCliqueProvenance!=='en-cours'">Tags associés au contenu : {{tagsContenus}}</p>-->
<p> Voici l'intérieur de votre contenu dans sa version {{versionChoisie}} : </p>
<span contenteditable="false" style="background-color: white; width: 50vw; margin-left: auto; margin-right: auto" v-html="formatterMarkdown()">
</span>
......
......@@ -8,6 +8,7 @@
<Filtre_Date v-show="filtre_choisi === 'date' " @creer_filtre="creer_filtre"/>
<Filtre_Note_Popularite v-show="filtre_choisi === 'note' " @creer_filtre="creer_filtre" v-bind:deconnexion="deconnexion"/>
<Filtre_Type_Source v-show="filtre_choisi === 'type / source'" @creer_filtre="creer_filtre" v-bind:deconnexion="deconnexion"/>
<Filtre_Recherche v-show="filtre_choisi === 'recherche'" @creer_filtre="creer_filtre"></Filtre_Recherche>
</div>
</template>
......@@ -20,12 +21,14 @@ import Filtre_Date from "../components/filtres/Filtre_Date";
import Filtre_Note_Popularite from "./filtres/Filtre_Note";
import Filtre_Type_Source from "../components/filtres/Filtre_Type_Source";
import Filtre_Tag_Libre from "@/components/filtres/Filtre_Tag_Libre";
import Filtre_Recherche from "@/components/filtres/Filtre_Recherche";
export default {
name: "Detail_Contenu",
components: {
Filtre_Recherche,
Filtre_Tag_Libre,
Filtre_Tag,
Filtre_Auteur,
......@@ -34,8 +37,8 @@ export default {
Filtre_Type_Source
},
props: {
// mode filtre enclenché ou non
modeFiltre: {},
/* // mode filtre enclenché ou non
modeFiltre: {},*/
// information concernant l'ajout d'un filtre
filtre_choisi: {},
// auteur
......@@ -58,23 +61,16 @@ export default {
this.$emit("creer_filtre", {filtre: event})
}
},
watch: {
data: function () {
return {
texte: "Ajoutez des filtres pour restreindre les contenus de la banque ou du panier en sélectionnant le filtre à appliquer dans la zone de choix ci dessus"
}
}
/* watch: {
modeFiltre: function () {
this.filtre_choisi = ""
}
},
computed: {
/**
* @vuese
* Changement du texte de base du volet
*/
texte: function () {
if (this.modeFiltre)
return "Ajoutez des filtres pour restreindre la recherche, ou effectuez une recherche libre (bouton en haut à droite)"
else
return "Entrez un terme a rechercher dans le texte ou à l'intérieur d'un contenu, ou effectuez une recherche via filtres (bouton en haut à droite) "
}
}
},*/
}
</script>
......
......@@ -178,7 +178,6 @@ export default {
nbreNotes: notes[1],
notePerso: that.rating
})
})
},
/**
......
......@@ -15,10 +15,10 @@ isActif ? {'margin-left': '1vw', 'margin-right': '1vw'} : {'margin-left': '0.6vw
<div class="full" id="volet" v-bind:style="[isActif ? {'margin-left': '1vw', 'margin-right': '1vw'} : {'margin-left': '0.1vw', 'margin-right': '0.1vw'},
darktheme ? {'border-color': 'white'} : {'border-color': 'black'}]" v-show="isActif">
<Volet_Menu v-bind:darktheme="darktheme" v-bind:panierChoisi = "panierChoisi" @filtre_choisi="passerFiltre"
@basculeRechercheFiltre="basculeRechercheFiltre" v-bind:filtre_choisi="filtre_choisi"/>
v-bind:filtre_choisi="filtre_choisi"/>
<Volet_Contenu v-bind:darktheme="darktheme" @mode_choisi="ajusterMode" v-bind:filtre_choisi="filtre_choisi" v-bind:variante="variante"
v-bind:auteur="auteur" @filtresChoisis="filtresChoisis" v-bind:razModeVariante="razModeVariante"
v-bind:modeFiltre="modeFiltre" v-bind:deconnexion="deconnexion" />
v-bind:deconnexion="deconnexion" />
</div>
</div>
</div>
......@@ -67,7 +67,7 @@ isActif ? {'margin-left': '1vw', 'margin-right': '1vw'} : {'margin-left': '0.6vw
</tr>
<tbody>
<tr v-show="panierChoisi && (persoChecked ** (item.provenance === 'perso')) && (tiersChecked ** (item.provenance === 'tiers'))
<tr id="contenusPanier" v-show="panierChoisi && (persoChecked ** (item.provenance === 'perso')) && (tiersChecked ** (item.provenance === 'tiers'))
&& (enCoursChecked ** (item.provenance === 'en-cours'))" v-for="item in filterContenu" :key="JSON.stringify(item._id)"
v-bind:style="{
'background-color': item.provenance === 'perso' ? 'white' : item.provenance === 'tiers' ? 'red' : 'blue'
......@@ -99,12 +99,12 @@ isActif ? {'margin-left': '1vw', 'margin-right': '1vw'} : {'margin-left': '0.6vw
<td v-show="!isActif" v-else v-b-popover.hover.bottom="'tags non disponibles'">tags non disponibles</td>
<td>{{ item.type }}</td>
<td>{{ item.source }}</td>
<td class="boutonSupprimer"> <input type="checkbox" v-on:change="ajouterCoche(item._id, item.provenance, item.note_perso)" class="horns" name="horns"/></td>
<td class="boutonSupprimer"> <input type="checkbox" v-on:change="ajouterCoche($event, item._id, item.provenance, item.note_perso)" class="horns" name="horns"/></td>
</tr>
<tr v-show="!panierChoisi && (!modeModification && !modeConsultation)" v-for="item in contenusbanque" :key="JSON.stringify(item._id)"
v-bind:style="{'background-color': 'white'}">
v-bind:style="{'background-color': 'white'}" >
<td :id="'a' + JSON.stringify(item._id)" v-on:click="chargerContenu(item, 'banque')">{{ item.titre }}</td>
<b-popover :target="'a' + JSON.stringify(item._id)" v-on:show="rechercherTexte(item._id, 'banque', item.source)" triggers="hover" placement="bottom">
<p v-html="texteDuContenu" v-if="!isMoodle"></p>
......@@ -113,12 +113,12 @@ isActif ? {'margin-left': '1vw', 'margin-right': '1vw'} : {'margin-left': '0.6vw
<td>{{ item.auteur }}</td>
<td>{{item.versionEnCours.numero}}</td>
<td>{{item.versionEnCours.date}}</td>
<td class="prout">{{item.popularite}}</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>{{ item.type }}</td>
<td>{{ item.source }}</td>
<td class="boutonSupprimer"> <input type="checkbox" v-on:change="ajouterCoche(item._id, item.versionEnCours)" class="horns" name="horns"/></td>
<td class="boutonSupprimer"> <input type="checkbox" v-on:change="ajouterCoche($event, item._id, item.versionEnCours)" class="horns" name="horns"/></td>
</tr>
......@@ -210,7 +210,7 @@ export default {
titreContenu: '',
token: '',
razModeVariante: false,
modeFiltre: false,
//modeFiltre: false,
isMoodle: false,
texteBoutonvariante: "changer",
// booléens pour le tri des colonnes du tableau
......@@ -262,7 +262,8 @@ export default {
this.token = localStorage.token
this.panierChoisi = true
this.checkes = []
$(".horns").prop( "checked", false );
$(".horns").prop( "checked", false )
},
/**
* @vuese
......@@ -303,8 +304,13 @@ export default {
*/
this.modeModification = false
$('#ensembleVolet').draggable()
},
methods: {
/**
* @vuese
* Formatte les tags libres du contenu (si existants)
*/
tagsLibresContenu: function(item){
// return item.tags_libres.toString()
if (item.tags_libres === undefined)
......@@ -593,14 +599,23 @@ export default {
* @vuese
* Sauvegarde des éléments cochés. Pour suppression (en mode banque) ou mise en tiers (en mode
*/
ajouterCoche: function (idContenu, provenance, notePerso = "") {
ajouterCoche: function (event, idContenu, provenance, notePerso = "") {
let existant = false
$(event.target.parentNode.parentNode).draggable({
helper: 'clone',
start: function (e, ui) {
ui.helper.animate({
width: 150,
height: 50
});
}
})
for (let i = 0; i < this.checkes.length; i++){
if (this.checkes[i][0] === idContenu){
existant = true
alert('prout')
}
}
......@@ -619,14 +634,8 @@ export default {
if (id === undefined)
return
/* console.log("id : " + id)
console.log("provenance : " + provenance)*/
let that = this
// alert('caca : ' + source)
if (source === "moodle"){
this.isMoodle = true
}
......@@ -826,6 +835,11 @@ export default {
}
}
if (event.filtres.filter(contenu => contenu.type === 'recherche')) {
//alert("Nouveau filtre recherche")
}
// et on les réinjecte dans la "source"
......@@ -836,9 +850,9 @@ export default {
this.contenusbanque = contenusFiltres
}
},
basculeRechercheFiltre: function (event) {
/* basculeRechercheFiltre: function (event) {
this.modeFiltre = event.choix
},
},*/
/**
* @vuese
* FOnction qui permet de trier une colonne (ordre croissant nombre clicks impairs, ordre décroissant clicks pairs)
......@@ -915,7 +929,7 @@ export default {
break
default:
alert('prout')
break
}
/* console.log(this.contenus.sort((x, y) => x.titre - y.titre))
console.log(this.contenus.sort())*/
......
......@@ -5,7 +5,7 @@
<Detail_Filtre v-bind:darktheme="darktheme" v-bind:nouveau_filtre="nouveau_filtre" @filtresChoisis="filtresChoisis" v-bind:deconnexion="deconnexion"/>
</div>
<div id = "detailContenu">
<Detail_Contenu v-bind:modeFiltre="modeFiltre" v-bind:panierChoisi="panierChoisi" v-bind:filtre_choisi="filtre_choisi"
<Detail_Contenu v-bind:panierChoisi="panierChoisi" v-bind:filtre_choisi="filtre_choisi"
v-bind:auteur="auteur" v-bind:darktheme="darktheme" @creer_filtre="creer_filtre" v-bind:deconnexion="deconnexion"/>
</div>
<div id="detailChoixMode">
......@@ -36,8 +36,8 @@ export default {
auteur:{},
// Signal pour remise à zéro de l'affichage du menu Panier / banque
razModeVariante: {},
// mode filtre enclenché ou non
modeFiltre: {},
/* // mode filtre enclenché ou non
modeFiltre: {},*/
// Signal d'activation ou non du theme sombre
darktheme: {},
// Signal de deconnexion
......@@ -88,7 +88,7 @@ export default {
<style scoped>
#contenu {
width: 100%;
height: 97.5%;
height: 98%;
margin-top: -5%;
display: flex;
flex-direction: column;
......
......@@ -3,21 +3,21 @@
<div id="listeFiltres" class="filtre">
<Barre_Filtre v-bind:darktheme="darktheme" v-bind:panierChoisi="panierChoisi" v-bind:filtre_choisi="filtre_choisi"
v-show="modeFiltre" @filtre_choisi="passerFiltre"/>
<Barre_Recherche v-bind:darktheme="darktheme" v-show="!modeFiltre"/>
<!-- <Barre_Recherche v-bind:darktheme="darktheme" v-show="!modeFiltre"/>-->
</div>
<!-- <button id="recherche" v-bind:class="{'modeFiltre': modeFiltre, 'modeRecherche': !modeFiltre}" v-on:click="changerModeMenu"></button>-->
<span v-if="modeFiltre" class="modeFiltre" v-on:click="changerModeMenu"></span>
<button v-else v-bind:class="!darktheme ? 'modeRecherche' : 'modeRechercheDark'" v-on:click="changerModeMenu"></button>
<!-- <span v-if="modeFiltre" class="modeFiltre" v-on:click="changerModeMenu"></span>
<button v-else v-bind:class="!darktheme ? 'modeRecherche' : 'modeRechercheDark'" v-on:click="changerModeMenu"></button>-->
</div>
</template>
<script>
import Barre_Filtre from "../components/Barre_Filtre";
import Barre_Recherche from "../components/Barre_Recherche";
//import Barre_Recherche from "../components/Barre_Recherche";
export default {
name: "Volet_Menu",
components: {
Barre_Recherche,
//Barre_Recherche,
Barre_Filtre
},
props: {
......@@ -34,19 +34,8 @@ export default {
modeFiltre: true
}
},
mounted() {
this.$emit("basculeRechercheFiltre", {choix: true})
},
methods: {
/**
* @vuese
* Permet de basculer du mode filtre au mode recherche, dans le volet latéral.
*/
changerModeMenu: function (){
this.modeFiltre = !this.modeFiltre
alert("Je le suis en train de changer le mode filtre")
this.$emit("basculeRechercheFiltre", {choix: this.modeFiltre})
},
/**
* @vuese
* Transmission de la catégorie du filtre choisi à Volet_Base
......@@ -61,43 +50,4 @@ export default {
</script>
<style scoped>
.menu {
width: 100%;
height: 5%;
display: inline-flex;
justify-content: space-around;
}
#recherche {
width: 23px;
height: 23px;
}
.modeFiltre::before{
/* background-color: white;
background-image: url(../assets/img/loupe.png);
background-size: cover;
border: none;*/
content: "\1F50D";
width: 23px;
height: 23px;
}
.modeRecherche{
background-color: whitesmoke;
background-image: url(../assets/img/filtre.png);
background-size: cover;
border: none;
width: 23px;
height: 23px;
}
.modeRechercheDark{
background-color: #353839;
background-image: url(../assets/img/filtre-inverse.png);
background-size: cover;
border: none;
width: 23px;
height: 23px;
}
</style>
\ No newline at end of file
......@@ -17,7 +17,10 @@ import Service from "../../service/Service";
export default {
name: "Filtre_Auteur",
methods: {
// recuperation de l'auteur choisi
/**
* @vuese
* recuperation de l'auteur choisi
*/
choixAuteur: function () {
if (this.auteur !== undefined)
this.$emit("creer_filtre", {filtre: this.auteur, type: 'auteur'})
......
......@@ -21,7 +21,10 @@
export default {
name: "Filtre_Date",
methods: {
// recuperation de la date choisie
/**
* @vuese
* permet la récupération de la date choisie
*/
choixDate: function () {
this.$emit("creer_filtre", {filtre: this.date, type: 'date'})
}
......
<template>
<div id="zoneRecherche" v-on:keydown.enter="submit">
Entrez le terme à rechercher (si plusieurs termes les séparer par des espaces :
<br>
<input style="height: 2.25vh" type="text" v-model="recherche"/>
<br>
<br>
<p> Sur quel élément voulez vous faire la recherche ?</p>
<div>
<input type="radio" class="radio" id="huey" name="drone" value="titre"
checked v-model="choixRecherche">
<label for="huey"> Titre</label>
<input type="radio" class="radio" id="dewey" name="drone" value="contenu" v-model="choixRecherche">
<label for="dewey"> Contenu</label>
</div>
<input type="radio" id="louie" name="drone" value="titre&contenu" v-model="choixRecherche">
<label for="louie">Titre & Contenu</label>
<br>
<br>
<span id="validerRecherche" :class="(recherche.length === 0 || choixRecherche.length === 0) ? 'indisponible' : ''" @click="submit">Valider la recherche</span>
<br>
<p style="color: red; font-weight: bold">⚠ Pas câblé au tableau des contenus</p>
</div>
</template>
<script>
export default {
name: "Filtre_Recherche",
data: function(){
return {
recherche: "",
choixRecherche: ""
}
},
/**
* @vuese
* Permet la création du filtre lié au(x) champ(s) de recherche désiré(s)
*/
methods: {
submit: function () {
if (this.recherche.length !== 0 && this.choixRecherche.length !== 0){
for (let mot in this.recherche.split(' ')){
this.$emit("creer_filtre", {filtre: this.recherche.split(' ')[mot], type: "recherche"})
}
this.recherche = ''
this.choixRecherche = ''
}
}
}
}
</script>
<style scoped>
label {
margin-right: 10px;
margin-left: 2px;
}
#validerRecherche::before {
content: "\2611";
margin-right: 5px;
}
.indisponible {
filter: grayscale(50);
color: grey;
}
</style>
\ No newline at end of file
......@@ -172,7 +172,6 @@ export default {
*/
masquerTagLibre: function (e) {
this.nouveauTagLibre = false
//alert("Par la barbe de Pipien Velletier")
e.target.parentNode.hidden = !e.target.parentNode.hidden
},
/**
......
import {shallowMount} from "@vue/test-utils";
import GererTagsLibres from "../GererTagsLibres";
test('Gerer_Tags_Libres', () => {
const wrapper = shallowMount(GererTagsLibres)
})
\ No newline at end of file
import {shallowMount} from "@vue/test-utils";
import ImporterFichier from "../ImporterFichier";
test('Importer_Fichier', () => {
const wrapper = shallowMount(ImporterFichier)
})
\ No newline at end of file
import {shallowMount} from "@vue/test-utils";
import Maj from "../Maj";
test('Maj', () => {
const wrapper = shallowMount(Maj)
})
\ No newline at end of file
import {shallowMount} from "@vue/test-utils";
import Manuel from "../Manuel";
test('Manuel', () => {
const wrapper = shallowMount(Manuel)
expect(wrapper.vm.choixVariante).toHaveBeenCalledTimes(0);
})
\ No newline at end of file
import {shallowMount} from "@vue/test-utils";
import TagsFixes from "../TagsFixes";
test('TagsFixes', () => {
const wrapper = shallowMount(TagsFixes)
})
\ No newline at end of file
import {shallowMount} from "@vue/test-utils";
import TagsFixes from "../TagsFixes";
test('TagsLibres', () => {
const wrapper = shallowMount(TagsLibres)
})
\ No newline at end of file
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