Commit 44aa8a43 authored by Jérémie Passerat's avatar Jérémie Passerat

Sauvegarde du 23/08 avant mise en ligne

parent f8214df8
......@@ -27,7 +27,8 @@
"vue-js-popover": "^1.2.1",
"vue-showdown": "^3.1.0",
"vue-simplemde": "^2.0.0",
"vue-star-rating": "^1.7.0"
"vue-star-rating": "^1.7.0",
"vuejs-toggle-switch": "^1.3.3"
},
"devDependencies": {
"@vue/cli-plugin-babel": "~4.5.0",
......@@ -19647,6 +19648,11 @@
"integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==",
"dev": true
},
"node_modules/vuejs-toggle-switch": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/vuejs-toggle-switch/-/vuejs-toggle-switch-1.3.3.tgz",
"integrity": "sha512-eE3dOSdGlD+DK5BCFOkpK0tkFHmuKpFZF8KMHP6Fd+8uEPNHPtBxVPYLFpwRwiaJ1zgQDNARI7eC/Hw7WDY/wQ=="
},
"node_modules/w3c-hr-time": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz",
......@@ -36733,6 +36739,11 @@
"integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==",
"dev": true
},
"vuejs-toggle-switch": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/vuejs-toggle-switch/-/vuejs-toggle-switch-1.3.3.tgz",
"integrity": "sha512-eE3dOSdGlD+DK5BCFOkpK0tkFHmuKpFZF8KMHP6Fd+8uEPNHPtBxVPYLFpwRwiaJ1zgQDNARI7eC/Hw7WDY/wQ=="
},
"w3c-hr-time": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz",
......@@ -14,11 +14,11 @@
<Maj v-show="etat === 'Mises à jour'" v-bind:auteur="auteur" v-bind:isRecu="isRecu" v-bind:isPropose="isPropose"
v-bind:contenuEnPublication="contenuEnPublication" @recalculerNotif="recalculerNotification"
@majNvoContenu="majNvoContenu" @majContenus="majContenus = !majContenus"
v-bind:rechercherPublications="rechercherPublications"></Maj>
v-bind:rechercherPublications="rechercherPublications" v-bind:darktheme="darktheme"></Maj>
<Profil v-show="etat === 'Profil'" ></Profil>
<GererTagsLibres v-show="etat === 'Tags'" v-bind:auteur="auteur" v-bind:modeGestion="modeGestion" ></GererTagsLibres>
<TagsFixes v-show="etat === 'newContenu_Tags'"></TagsFixes>
<p style="text-align: center" v-show="errorLogin">{{errorMessage}}</p>
<!-- <p style="text-align: center" v-show="errorLogin">{{errorMessage}}</p>-->
<NewContenu v-show="etat === 'newContenu'" v-bind:auteur="auteur" @contenuAjoute="ajouterUnContenu" @retourArriere="retourArriere"></NewContenu>
<ImporterFichier v-show="etat === 'importContenu'" v-bind:auteur="auteur" @contenuAjoute="ajouterUnContenu" @retourArriere="retourArriere"></ImporterFichier>
<span id="prout" v-show="hoverManuel">Manuel d'utilisation d'OpenQuizz</span>
......@@ -49,7 +49,7 @@ export default {
variante: false,
contenuEnPublication: "",
isNotif: false,
errorLogin: false,
// errorLogin: false,
auteur: "",
isRecu: false,
isPropose: false,
......@@ -58,7 +58,7 @@ export default {
nvoContenu: '',
rechercherPublications: false,
majContenus: false,
errorMessage: 'Login ou mot de passe erroné',
// errorMessage: 'Login ou mot de passe erroné',
darktheme: '',
deconnexion: false,
nouveauTitre: '',
......@@ -76,12 +76,12 @@ export default {
setLogged: function (event) {
if (event.isLogged){
this.etat = "Contenu"
this.errorLogin = false
//this.errorLogin = false
this.auteur = event.auteur
}
else {
/* else {
this.errorLogin = true
}
}*/
},
/**
* @vuese
......
......@@ -21,6 +21,9 @@
<button @click.prevent="logIn" >Connexion</button>
<p style="text-align: center; margin-top: 0vh; color: greenyellow" v-show="errorLogin">{{errorMessage}}</p>
</div>
</div>
</template>
......@@ -50,7 +53,8 @@ export default {
that.$emit("user_logged", {"isLogged" : true, "auteur": that.login})
}
}).catch(function () {
that.$emit("user_logged", {"isLogged" : false})
//that.$emit("user_logged", {"isLogged" : false})
that.errorLogin = true
})
},
keymonitor: function(event) {
......@@ -62,7 +66,9 @@ export default {
data: function () {
return {
login: "",
password: ""
password: "",
errorMessage: 'Login ou mot de passe erroné',
errorLogin: false
}
},
}
......@@ -76,7 +82,8 @@ body {
}
#loginForm {
width : 500px;
width : 56vh;
height: 35vh;
text-align: center;
align-content: center;
margin: 6% auto 0;
......
<template>
<div>
<div id="switch" v-show="!detailContenu">
<span :class="darktheme ? 'switchDark' : 'switch'" v-bind:style="isModeRecu ? {'font-weight': 'bold'} : {'font-weight': 1}" @click="changerTabMaj" id="recues">Recues</span>
<span :class="darktheme ? 'switchDark' : 'switch'" v-bind:style="!isModeRecu ? {'font-weight': 'bold'} : {'font-weight': 1}" @click="changerTabMaj" id="proposees">Proposees</span>
</div>
<div v-show="!detailContenu">
<p> Vous êtes {{auteur}}</p>
<span v-bind:class="['niveau', {'niveau-down' : contenusRecu.length > 0}]" id="recues" v-on:click="naviguer">Maj Recues</span><br>
<div id="detailRecues" class="masque" v-bind:class="{'affiche' : contenusRecu.length > 0}">
<div id="detailRecues" v-show="isModeRecu">
<table>
<thead>
<thead :class="darktheme ? 'headerDark' : 'header'">
<tr>
<th colspan="6">Contenus</th>
</tr>
</thead>
<tr>
<tr class="titres">
<th>Titre</th>
<th>Auteur</th>
<th>Version courante</th>
......@@ -32,9 +33,9 @@
<td>{{ item.auteurDemande }}</td>
<td>{{ item.version_en_cours }}</td>
<td>01/06/2021</td>
<!-- <td id="valider" v-on:click="gererPublication(item, 'o')"><img v-bind:src="imageCoche" alt='' height=20 width=20></td>-->
<!-- <td id="valider" v-on:click="gererPublication(item, 'o')"><img v-bind:src="imageCoche" alt='' height=20 width=20></td>-->
<td id="valider" v-on:click="gererPublication(item, 'o')"><span class="validerPublicationRecue"></span></td>
<!-- <td id="refuser" v-on:click="gererPublication(item, 'n')"><img v-bind:src="imageCroix" alt='' height=20 width=20></td>-->
<!-- <td id="refuser" v-on:click="gererPublication(item, 'n')"><img v-bind:src="imageCroix" alt='' height=20 width=20></td>-->
<td id="valider" v-on:click="gererPublication(item, 'n')"><span class="supprimerPublicationRecue"></span></td>
......@@ -44,16 +45,14 @@
</div>
<span class="niveau" id="proposees" v-bind:class="{'niveau-down' : contenusPropose.length > 0}" v-on:click="naviguer">Maj Proposées</span>
<div id="detailProposees" class="masque" v-bind:class="{'affiche' : contenusPropose.length > 0}">
<div id="detailProposees" v-show="!isModeRecu">
<table>
<thead>
<thead :class="darktheme ? 'headerDark' : 'header'">
<tr>
<th colspan="8">Contenus</th>
</tr>
</thead>
<tr>
<tr class="titres">
<th>Titre</th>
<th>Auteur</th>
......@@ -69,7 +68,7 @@
<tr v-for="(item, index) in contenusPropose" :key="index">
<td :id="JSON.stringify(item._id)" v-on:click="consulterContenuMaj(item)">{{item.titre}}</td>
<b-popover :target="JSON.stringify(item._id)" v-on:show="rechercherTexteMaj(item.idContenuEnCours)" triggers="hover" placement="bottom">
<b-popover :target="JSON.stringify(item._id)" v-on:show="rechercherTexteMaj(item)" triggers="hover" placement="bottom">
<p v-html="texteDuContenuMaj"></p>
</b-popover>
<td>{{ item.auteurContenu }}</td>
......@@ -87,7 +86,8 @@
</table>
</div>
</div>
<Consulter_Contenu v-show="detailContenu" @retour_arriere="retourArriere" v-bind:auteur="auteur" v-bind:contenuClique="contenuChoisi" v-bind:contenu-clique-provenance="contenuCliqueProvenance"/>
<Consulter_Contenu v-show="detailContenu" @retour_arriere="retourArriere" v-bind:auteur="auteur"
v-bind:contenuClique="contenuClique" v-bind:contenu-clique-provenance="contenuCliqueProvenance"/>
</div>
</template>
......@@ -101,7 +101,15 @@ export default {
components: {
Consulter_Contenu
},
props: ['contenuEnPublication', 'auteur', 'isRecu', 'isPropose', 'rechercherPublications'],
props: {
// L'auteur actuellement connecté
auteur: {},
// Signal d'activation ou non du theme sombre
darktheme: {},
// signal d'actualisation des mises à jour disponibles
rechercherPublications: {}
},
// props: ['contenuEnPublication', 'auteur', 'isRecu', 'isPropose', 'rechercherPublications'],
methods: {
/**
* @vuese
......@@ -245,7 +253,7 @@ export default {
*/
consulterContenuMaj: function (item) {
this.detailContenu = true
this.contenuChoisi = item
this.contenuClique = item
this.contenuCliqueProvenance = "maj"
this.$emit("ChangerTitre", {titre: "Consultation du contenu " + item.titre})
},
......@@ -276,6 +284,9 @@ export default {
)
} else {
idContenu = item._id
// alert("ici")
//console.log(idContenu)
console.log(item.$oid)
Service.recupererTexteContenu(JSON.stringify(idContenu)).then(
function (response) {
let showdown = require('showdown'),
......@@ -295,6 +306,13 @@ export default {
*/
isContenuMajVide: function () {
return this.contenusPropose.length === 0 && this.contenusRecu.length === 0
},
/**
* @vuese
* Basculer du tableau des maj recues au tableau des maj proposées et vice-versa
*/
changerTabMaj: function () {
this.isModeRecu = !this.isModeRecu
}
},
data: function () {
......@@ -307,9 +325,10 @@ export default {
contenusPropose: [],
action: false,
detailContenu: false,
contenuChoisi: null,
contenuClique: null,
contenuCliqueProvenance: '',
texteDuContenuMaj: ''
texteDuContenuMaj: '',
isModeRecu: true
}
},
watch: {
......@@ -347,13 +366,13 @@ div{
transform: rotate(90deg);
}
.masque {
/*.masque {
display: none;
}
.affiche {
display: block;
}
}*/
table {
margin-top: 10px;
......@@ -374,12 +393,22 @@ td {
vertical-align: middle;
}
thead,
tfoot {
.header {
background-color: #333;
color: #fff;
}
.headerDark {
background-color: #fff;
color: #333;
}
.titres {
background-color: orange;
}
.validerPublicationRecue::before {
/*content: "\2713";*/
content: "\2705";
......@@ -407,4 +436,34 @@ tfoot {
color: white;
}
#switch {
height: 5vh;
width: 20vh;
/*border: 1px solid black;*/
margin: 1vh auto;
display: flex;
}
#recues, #proposees {
/* border: 1px solid black; */
flex-basis: 50%;
horiz-align: center;
text-align: center;
margin-top: auto;
margin-bottom: auto;
padding-left: 1vh;
}
#recues {
border-right: 1px solid black;
}
.switch {
color: black;
}
.switchDark {
color: white;
}
</style>
\ No newline at end of file
This diff is collapsed.
<template>
<div v-bind:class="[darkMode ? 'dark' : '', etat === 'manuel' ? 'menuManuel' : 'menuHaut']">
<DarkModeSwitch v-bind:style="[etat === 'manuel' ? {'margin-top': '10px', 'padding-top': '0px', 'padding-bottom': '5px', 'padding-left': '4px'} : {'margin-top': '10px'}, {'margin-left': '10px'}]" @switched="onSwitched"/>
<Choix_Mode_Variante v-bind:darkMode="darkMode" class="menuVariante" v-show="variante"></Choix_Mode_Variante>
<span :class="etat !== 'manuel' ? 'prout' : 'proutManuel'">{{ titrePage }}</span>
<Choix_Mode_Variante v-bind:darkMode="darkMode" class="menuVariante" v-show="variante && nouveauTitre !== 'Manuel d\'utilisation de l\'application OpenQuizz'"></Choix_Mode_Variante>
<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">
......@@ -99,17 +99,18 @@ export default {
*/
publicationsRecues: function () {
let that = this
Service.getPublicationsRecues(this.auteur).then(function (response) {
let contenusRecu = response.data
console.log("Salut salut, je le suis dans publications recues")
Service.getPublicationsRecues(this.auteur).then(function (response) {
let contenusRecu = response.data
for (let i = 0; i < contenusRecu.length; i++) {
if (contenusRecu[i].etat === "enCours") {
that.isNotif = contenusRecu.length !== 0
that.isRecu = that.isNotif
break
}
}
that.majTiers()
......@@ -122,6 +123,9 @@ 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
......@@ -131,6 +135,7 @@ export default {
if (contenusPropose[i].etat !== "enCours") {
that.isNotif = true
that.isPropose = that.isNotif
break
}
}
that.changerStyle()
......@@ -221,6 +226,15 @@ export default {
this.titrePage = this.nouveauTitre
}
},
/**
* @vuese
* Si on clique sur manuel on desactive le 'menu annexe'
*/
etat: function () {
if (this.etat === 'manuel'){
this.isAffiche = false
}
}
}
}
</script>
......@@ -247,8 +261,8 @@ export default {
display: flex; /* or inline-flex */
align-items: center;
justify-content: center;
height: 37.5px;
width: 37.5px;
height: 4.2vh;
width: 4.2vh;
background: gold url(assets/img/person2.png);
background-size: cover;
......@@ -263,8 +277,8 @@ export default {
display: flex; /* or inline-flex */
align-items: center;
justify-content: center;
height: 37.5px;
width: 37.5px;
height: 4.2vh;
width: 4.2vh;
margin-right: 0.25%;
}
......@@ -276,8 +290,8 @@ export default {
display: flex; /* or inline-flex */
align-items: center;
justify-content: center;
height: 37.5px;
width: 37.5px;
height: 4.2vh;
width: 4.2vh;
margin-right: 0.25%;
}
......
,passerat,weber-Latitude-5520,12.08.2021 13:46,file:///home/passerat/.config/libreoffice/4;
\ No newline at end of file
......@@ -24,7 +24,9 @@ export default {
type: Boolean
},
// Signal d'activation ou non du theme sombre
darktheme: {}
darktheme: {},
// signal de détection pour la remize à zéro de la barre de filtre
filtre_choisi: {}
},
methods: {
/**
......@@ -40,6 +42,12 @@ export default {
return {
selected: "",
}
},
watch: {
filtre_choisi: function () {
if (this.filtre_choisi === "")
this.selected = ""
}
}
}
</script>
......
......@@ -68,7 +68,6 @@ export default {
<style scoped>
#choixDuMode {
flex-basis: 10%;
display: flex;
z-index: 1;
}
......@@ -77,7 +76,9 @@ export default {
width: 49%;
flex-grow: 1;
text-align: center;
vertical-align: center;
vertical-align: bottom;
padding-bottom: 0px;
padding-top: 10px;
}
.nonClicked {
......
<template>
<div>
<p>{{titreContenu}} </p>
<p style="margin-top: 2vh"> {{titreContenu}} </p>
<div id="actionsContenu" v-show="!isContenuRefuse">
......@@ -165,11 +165,10 @@ export default {
this.titreContenu = this.contenuClique.titre
this.populariteContenu = this.contenuClique.popularite
this.tagsContenus = this.contenuClique.tags_fixes.join(", ")
this.tagsContenus = this.contenuClique.tags_fixes === undefined ? [] : this.contenuClique.tags_fixes.join(", ")
this.isContenuRefuse = false
this.noteContenu = this.calculerNoteDetailContenu()
this.noteContenu = this.contenuClique.versionEnCours === undefined ? '' : this.calculerNoteDetailContenu()
if (Object.prototype.hasOwnProperty.call(this.contenuClique, 'refuse')){
this.isContenuRefuse = true
......@@ -178,7 +177,7 @@ export default {
Service.recupererTexteContenuEnCours(JSON.stringify(this.contenuClique._id)).then(
function (response) {
that.contenu = response.data
// alert(response.data)
alert("Les enfantches : " + response.data)
}
)
......
......@@ -56,22 +56,26 @@ export default {
// Transmet la création d'un filtre
// @arg filtre le filtre créé
this.$emit("creer_filtre", {filtre: event})
}
},
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) "
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>
<style scoped>
......
......@@ -11,7 +11,7 @@
Source : {{contenuClique.source}}
</div>
<div id="notePopularite">
Note de la version : {{noteContenu}}<br>
Note version : {{noteContenu}}<br>
Popularité : {{contenuClique.popularite}}<br>
</div>
<span id="tagsLibres" v-on:click="modifierTags">{{ titreModifierTags }}</span>
......@@ -38,7 +38,7 @@
<div id="actionsContenu">
<!-- <button class="boutonAction" v-on:click="actionContenu('supprimer')">Supprimer</button>-->
<span class="boutonAction" v-if="contenuCliqueProvenance !== 'perso'" v-on:click="actionContenu('supprimer')" id="supprimerContenu"></span>
<span class="boutonAction" v-if="contenuCliqueProvenance !== 'perso' && contenuCliqueProvenance !== 'tiers'" v-on:click="actionContenu('supprimer')" id="supprimerContenu"></span>
<span class="boutonAction" v-else v-on:click="actionContenu('supprimer')" id="supprimerContenuSolo"></span>
<!-- <button class="boutonAction" v-show="contenuCliqueProvenance !== 'maj' && contenuCliqueProvenance === 'en-cours' &&
contenuClique.origine === 'tiers' && contenuClique.anonyme !== 'oui'" v-on:click="actionContenu('publier')">Publier le contenu</button>-->
......
......@@ -12,7 +12,8 @@
<div id="ensembleVolet">
<button id="boutonVolet" v-on:click="desactiverVolet" v-bind:style="{'margin-top': '0%'}"></button>
<div class="full" id="volet" v-bind:style="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"/>
<Volet_Menu v-bind:darktheme="darktheme" v-bind:panierChoisi = "panierChoisi" @filtre_choisi="passerFiltre"
@basculeRechercheFiltre="basculeRechercheFiltre" 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" />
......@@ -91,8 +92,8 @@
<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-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="item.tags_libres.toString()">
{{ item.tags_libres.toString() }}</td>
<td v-show="!isActif" v-if="item.provenance !== 'en-cours'" v-b-popover.hover.bottom="tagsLibresContenu(item)">
{{tagsLibresContenu(item)}}</td>
<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>
......@@ -300,6 +301,13 @@ export default {
$('#ensembleVolet').draggable()
},
methods: {
tagsLibresContenu: function(item){
// return item.tags_libres.toString()
if (item.tags_libres === undefined)
return ""
else
return item.tags_libres.toString()
},
/**
* @vuese
* Charger les contenus du panier de l'auteur connecté
......@@ -756,7 +764,7 @@ export default {
// contenusFiltres.forEach(contenu => console.log(contenu.tags_libres.length))
for (let i = 0; i < filtre_tags_libres.length; i++) {
if(filtre_tags_libres[i] === 'Contenu Sans Tag'){
if(filtre_tags_libres[i] === 'sans Tag Libre'){
contenusFiltres = contenusFiltres.filter(contenu => contenu.tags_libres.length === 0)
} else {
contenusFiltres = contenusFiltres.filter(contenu => contenu.tags_libres.includes(filtre_tags_libres[i]))
......@@ -989,12 +997,12 @@ export default {
}
.choixPanier{
margin-left: 30px;
margin-left: 3.35vh;
margin-top: 0px;
}
table {
width: 1550px;
width: 167vh;
}
th,
......@@ -1015,8 +1023,8 @@ tfoot {
#volet{
position: relative;
width: 300px;
height: 500px;
width: 33.5vh;
height: 56vh;
border: 1px solid;
margin-top: 2px;
margin-left: 10px;
......@@ -1024,17 +1032,17 @@ tfoot {
}
#boutonVolet {
margin-top: 5px;
margin-left: 10px;
margin-top: 0.55vh;
margin-left: 1.1vh;
}
#changerVariante {
/*width: auto;*/
text-align: center;
line-height: 1em;
margin-left: 10px;
margin-top: 5px;
margin-bottom: 20px;
margin-left: 1.1vh;
margin-top: 0.55vh;
margin-bottom: 2.2vh;
}
......@@ -1044,8 +1052,8 @@ tfoot {
display: flex; /* or inline-flex */
align-items: center;
justify-content: center;
height: 75px;
width: 75px;
height: 8.4vh;
width: 8.4vh;
/*background: white url(../assets/img/plus.png);*/
background: white url(../assets/img/plus.png);
background-size: cover;
......@@ -1098,20 +1106,20 @@ th image
}
.supprimerContenus{
width: 27px;
width: 3vh;
}
.supprimerContenus > img {
height: 20px;
width: 20px;
height: 2.2vh;
width: 2.2vh;
padding-bottom: 4px;
padding-top: -3px;
background-color: orange;
}
.ajouterTiers {
height: 20px;
width: 20px;
height: 2.2vh;
width: 2.2vh;
background: orange url(../assets/img/etoile.png);
}
......
......@@ -8,7 +8,9 @@
<Detail_Contenu v-bind:modeFiltre="modeFiltre" 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>
<Choix_Mode v-show="!variante" v-bind:darktheme="darktheme" @mode_choisi="ajusterMode" v-bind:razModeVariante="razModeVariante" />
<div id="detailChoixMode">
<Choix_Mode v-show="!variante" v-bind:darktheme="darktheme" @mode_choisi="ajusterMode" v-bind:razModeVariante="razModeVariante" />
</div>
</div>
</template>
......@@ -17,6 +19,7 @@
import Choix_Mode from "../components/Choix_Mode";
import Detail_Filtre from "../components/Detail_Filtre";
import Detail_Contenu from "../components/Detail_Contenu";
export default {
name: "Volet_Contenu",
components: {
......@@ -40,7 +43,7 @@ export default {
// Signal de deconnexion
deconnexion: {}
},
},
methods: {
/**
* @vuese
......@@ -85,7 +88,7 @@ export default {
<style scoped>
#contenu {
width: 100%;
height: 98.25%;
height: 97.85%;
margin-top: -5%;
display: flex;
flex-direction: column;
......@@ -105,8 +108,8 @@ export default {
display: inline-block;
text-align: center;
vertical-align: middle;
margin-top: 25%;
margin-bottom: 25%;
margin-top: 15%;
margin-bottom: 15%;
overflow: auto;
}
......
<template>
<div class="menu">
<div id="listeFiltres" class="filtre">
<Barre_Filtre v-bind:darktheme="darktheme" v-bind:panierChoisi="panierChoisi" v-show="modeFiltre" @filtre_choisi="passerFiltre"/>
<Barre_Recherche v-bind:darktheme="darktheme" v-show="!modeFiltre"/>
<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"/>
</div>
<!-- <button id="recherche" v-bind:class="{'modeFiltre': modeFiltre, 'modeRecherche': !modeFiltre}" v-on:click="changerModeMenu"></button>-->
<!-- <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>
</div>
......@@ -23,14 +24,19 @@ export default {
// Variable permettant de déterminer si on est en mode panier ou en mode banque
panierChoisi: {},
// Signal d'activation ou non du theme sombre
darktheme: {}
darktheme: {},
// signal de détection pour la remize à zéro de la barre de filtre
filtre_choisi: {}
},
},
data: function () {
return {
modeFiltre: true
}
},
mounted() {
this.$emit("basculeRechercheFiltre", {choix: true})
},
methods: {
/**
* @vuese
......@@ -38,6 +44,7 @@ export default {
*/
changerModeMenu: function (){
this.modeFiltre = !this.modeFiltre
alert("Je le suis en train de changer le mode filtre")
this.$emit("basculeRechercheFiltre", {choix: this.modeFiltre})
},
/**
......@@ -68,10 +75,10 @@ export default {
}
.modeFiltre::before{
/* background-color: white;
background-image: url(../assets/img/loupe.png);
background-size: cover;
border: none;*/
/* background-color: white;
background-image: url(../assets/img/loupe.png);
background-size: cover;
border: none;*/
content: "\1F50D";
width: 23px;
height: 23px;
......
<template>
<div id="body" v-bind:class="editMode ? 'modeConsultation' : 'modeModification'">
<div v-bind:class="editMode ? 'modeConsultation' : 'modeModification'">
<!-- arborescence globale -->
<ul id="arborescenceLibre" class="menuNonFinal" >
<ul :class="editMode ? 'editArborescenceLibre' : 'arborescenceLibre'" class="menuNonFinal" >
<!-- creation de nouveau filtre de 'niveau' 1 -->
<li v-if="editMode">
<span v-bind:class="darktheme ? 'nouveauTagLibreDark' : 'nouveauTagLibre'"
......@@ -12,13 +12,13 @@
<span v-bind:class="darktheme ? 'validerCocheDark' : 'validerCoche'" v-on:click="creerTagLibre"></span>
<span v-bind:class="darktheme ? 'annulerCocheDark' : 'annulerCoche'" @click="masquerTagLibre"></span></li>
<!-- selection de contenus sans filtre libre établi -->
<li v-on:click="nouveauFiltre($event)" ><span class="niveauInamovible"></span>Contenu Sans Tag</li>
<li v-on:click="nouveauFiltre($event, 'sans Tag Libre')" ><span class="niveauInamovible"></span>Contenu Sans Tag</li>
<!-- affichage des filtres personnels de l'utilisateur -->
<ul v-for="filtre in filtresNiveauUn" :key="filtre" class="tagsLibres">
<!-- <li v-on:click="nouveauFiltre(filtre)"><span class="niveauInamovible"></span>{{ filtre }}-->
<li @click="!editMode ? nouveauFiltre($event, filtre) : ''">
<span :class="isSousEmbranchement(filtre) > 0 ? 'niveau' : 'niveauInamovible'" @click="naviguer"></span>{{ filtre }}
<span v-if="editMode" v-bind:class="darktheme ? 'poubelDark' : 'poubel'" @click="supprimerTagLibre"></span>
<span v-if="editMode" v-bind:class="darktheme ? 'poubelDark' : 'poubel'" @click="supprimerTagLibre($event, filtre)"></span>
<span v-if="editMode" v-bind:class="darktheme ? 'nouvelEchelonDark' : 'nouvelEchelon'" @click="ajouterTagLibre"></span></li>
<li hidden="hidden" class="blocLibre"><span class="niveauInamovible"></span>
<input type="text" style="width: 150px; height: 20px" v-model="nouveauTexteLibre">
......@@ -28,7 +28,7 @@
<ul v-for="filtre in filtresNiveauDeux(filtre)" :key="filtre" class="tagsLibres cache">
<li @click="!editMode ? nouveauFiltre($event, filtre) : ''" class="blocLibre">
<span :class="isSousEmbranchement(filtre) > 0 ? 'niveau' : 'niveauInamovible'" @click="naviguer"></span>{{affichageFiltreDeux(filtre)}}
<span v-if="editMode" v-bind:class="darktheme ? 'poubelDark' : 'poubel'" @click="supprimerTagLibre"></span>
<span v-if="editMode" v-bind:class="darktheme ? 'poubelDark' : 'poubel'" @click="supprimerTagLibre($event, filtre)"></span>
<span v-if="editMode" v-bind:class="darktheme ? 'nouvelEchelonDark' : 'nouvelEchelon'" @click="ajouterTagLibre"></span></li>
<li hidden="hidden" class="blocLibreDeux"><span class="niveauInamovible"></span>
......@@ -39,7 +39,7 @@
<ul v-for="filtre in filtresNiveauTrois(filtre)" :key="filtre" class="tagsLibres cache">
<li @click="!editMode ? nouveauFiltre($event, filtre) : ''" class="blocLibreDeux">
<span :class="isSousEmbranchement(filtre) > 0 ? 'niveau' : 'niveauInamovible'" @click="naviguer"></span>{{affichageFiltreTrois(filtre) }}
<span v-if="editMode" v-bind:class="darktheme ? 'poubelDark' : 'poubel'" @click="supprimerTagLibre"></span>
<span v-if="editMode" v-bind:class="darktheme ? 'poubelDark' : 'poubel'" @click="supprimerTagLibre($event, filtre)"></span>
<span v-if="editMode" v-bind:class="darktheme ? 'nouvelEchelonDark' : 'nouvelEchelon'" @click="ajouterTagLibre"></span></li>
<li hidden="hidden" class="blocLibreTrois"><span class="niveauInamovible"></span>
......@@ -50,7 +50,7 @@
<ul v-for="filtre in filtresNiveauQuatre(filtre)" :key="filtre" class="tagsLibres cache">
<li @click="!editMode ? nouveauFiltre($event, filtre) : ''" class="blocLibreTrois">
<span :class="isSousEmbranchement(filtre) > 0 ? 'niveau' : 'niveauInamovible'" @click="naviguer"></span>{{ affichageFiltreQuatre(filtre) }}
<span v-if="editMode" v-bind:class="darktheme ? 'poubelDark' : 'poubel'" @click="supprimerTagLibre"></span>
<span v-if="editMode" v-bind:class="darktheme ? 'poubelDark' : 'poubel'" @click="supprimerTagLibre($event, filtre)"></span>
<span v-if="editMode" v-bind:class="darktheme ? 'nouvelEchelonDark' : 'nouvelEchelon'" @click="ajouterTagLibre"></span></li>
<li hidden="hidden" class="blocLibreQuatre"><span class="niveauInamovible"></span>
<input type="text" style="width: 150px; height: 20px" v-model="nouveauTexteLibre">
......@@ -108,17 +108,19 @@ export default {
* quand on clique sur un filtre on l'envoie dans le "circuit"
*/
nouveauFiltre: function (event, filtre) {
// bricolage pour empecher qu'un filtre ne soit créé quand on clique sur une flèche pour activer / desactiver l'arborescence
if(event.target.tagName !== 'SPAN')
this.$emit("creer_filtre", {filtre: filtre, type: this.filtreChoisi})
// alert("filtre" + filtre === undefined + " now loading")
},
/**
* @vuese
* suppression (définitive) d'un tag libre
*/
supprimerTagLibre: function (e) {
Service.supprimerTagLibre(this.auteur, Service.supprimerTagLibre(this.auteur, e.target.parentNode.innerText.trim()))
this.filtresLibres = this.filtresLibres.filter(filtre => filtre !== e.target.parentNode.innerText.trim())
supprimerTagLibre: function (e, filtreClique) {
Service.supprimerTagLibre(this.auteur, filtreClique)
this.filtresLibres = this.filtresLibres.filter(filtre => filtre !== filtreClique)
},
/**
* @vuese
......@@ -168,8 +170,10 @@ export default {
* @vuese
* masquage de la zone de saisie d'un nouveau tag
*/
masquerTagLibre: function () {
masquerTagLibre: function (e) {
this.nouveauTagLibre = false
//alert("Par la barbe de Pipien Velletier")
e.target.parentNode.hidden = !e.target.parentNode.hidden
},
/**
* @vuese
......@@ -296,6 +300,15 @@ export default {
list-style-type: none;
}
.arborescenceLibre {
padding-inline-start: 4px;
margin-left: 10px;
}
.editArborescenceLibre {
margin-top: 5vh;
margin-left: 55vh;
}
.tagsLibres {
list-style-type: none;
......
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