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

Configuration du filtrage des contenus

parent ac381ee3
...@@ -2,21 +2,15 @@ ...@@ -2,21 +2,15 @@
<div> <div>
<Login v-show="etat === 'unlogged'" @user_logged="setLogged"></Login> <Login v-show="etat === 'unlogged'" @user_logged="setLogged"></Login>
<Menu v-show="etat !== 'unlogged'" v-bind:auteur="auteur" v-bind:etat="etat" v-bind:variante="variante" @menu_choisi="changerPage"></Menu> <Menu v-show="etat !== 'unlogged'" v-bind:auteur="auteur" v-bind:etat="etat" v-bind:variante="variante"
v-bind:recalculerNotif="recalculerNotif" @menu_choisi="changerPage"></Menu>
<Contenu v-show="etat === 'Contenu'" v-bind:auteur="auteur" v-bind:contenuAjoute="contenuAjoute" @choix_variante="choixVariante" @newContenu="newContenu"></Contenu> <Contenu v-show="etat === 'Contenu'" v-bind:auteur="auteur" v-bind:contenuAjoute="contenuAjoute" @choix_variante="choixVariante" @newContenu="newContenu"></Contenu>
<Maj v-show="etat === 'Mises à jour'" v-bind:auteur="auteur" v-bind:isRecu="isRecu" v-bind:isPropose="isPropose" <Maj v-show="etat === 'Mises à jour'" v-bind:auteur="auteur" v-bind:isRecu="isRecu" v-bind:isPropose="isPropose"
v-bind:contenuEnPublication="contenuEnPublication" ></Maj> v-bind:contenuEnPublication="contenuEnPublication" @recalculerNotif="recalculerNotification" ></Maj>
<Profil v-show="etat === 'Profil'" ></Profil> <Profil v-show="etat === 'Profil'" ></Profil>
<Tags v-show="etat === 'Tags'" ></Tags> <Tags v-show="etat === 'Tags'" ></Tags>
<p style="text-align: center" v-show="errorLogin">Login ou mot de passe erroné</p> <p style="text-align: center" v-show="errorLogin">Login ou mot de passe erroné</p>
<NewContenu v-show="etat === 'newContenu'" v-bind:auteur="auteur" @contenuAjoute="ajouterUnContenu" @retourArriere="retourArriere"></NewContenu> <NewContenu v-show="etat === 'newContenu'" v-bind:auteur="auteur" @contenuAjoute="ajouterUnContenu" @retourArriere="retourArriere"></NewContenu>
<!-- <p id="popover-target-1" style="text-align: center">
Hover Me
</p>
<b-popover target="popover-target-1" triggers="click" placement="bottom">
<template #title>Popover Title</template>
<h1>I am</h1> popover <b>component</b> content!
</b-popover>-->
</div> </div>
</template> </template>
...@@ -42,7 +36,8 @@ export default { ...@@ -42,7 +36,8 @@ export default {
auteur: "", auteur: "",
isRecu: false, isRecu: false,
isPropose: false, isPropose: false,
contenuAjoute: false contenuAjoute: false,
recalculerNotif: false
} }
}, },
methods: { methods: {
...@@ -58,8 +53,9 @@ export default { ...@@ -58,8 +53,9 @@ export default {
} }
}, },
changerPage: function (event) { changerPage: function (event) {
if (event.choix === "Deconnexion") if (event.choix === "Deconnexion"){
this.etat = "unlogged" this.etat = "unlogged"
}
else else
this.etat = event.choix this.etat = event.choix
if (event.choix === "Mises à jour"){ if (event.choix === "Mises à jour"){
...@@ -79,6 +75,9 @@ export default { ...@@ -79,6 +75,9 @@ export default {
}, },
retourArriere: function () { retourArriere: function () {
this.etat= "Contenu" this.etat= "Contenu"
},
recalculerNotification: function () {
this.recalculerNotif = !this.recalculerNotif
} }
}, },
......
<template> <template>
<div> <div>
<span v-bind:class="['niveau', {'niveau-down' : isRecu}]" id="recues" v-on:click="naviguer">Maj Recues</span><br> <div v-show="!detailContenu">
<div id="detailRecues" class="masque" v-bind:class="{'affiche' : isRecu}"> <p> Vous êtes {{auteur}}</p>
<table> <span v-bind:class="['niveau', {'niveau-down' : isRecu}]" id="recues" v-on:click="naviguer">Maj Recues</span><br>
<thead> <div id="detailRecues" class="masque" v-bind:class="{'affiche' : isRecu}">
<tr> <table>
<th colspan="6">Contenus</th> <thead>
</tr> <tr>
</thead> <th colspan="6">Contenus</th>
<tr> </tr>
<th>Titre</th> </thead>
<th>Auteur</th> <tr>
<th>Version actuelle</th> <th>Titrette</th>
<th>Date Version actuelle</th> <th>Auteur</th>
<th>Accepter</th> <th>Version actuelle</th>
<th>Refuser</th> <th>Date Version actuelle</th>
</tr> <th>Accepter</th>
<tbody> <th>Refuser</th>
</tr>
<!-- <tr v-show="!panierChoisi" v-for="item in contenusbanque" :key="item.titre"> <tbody>
<td class="modal titreContenu" v-on:click="chargerContenu(item, 'banque')" v-popover:tooltip="'prévisualisation'">{{ item._id }}</td>
<td>{{ item.auteur }}</td> <tr v-for="(item, index) in contenusRecu" :key="index">
<td>The table body</td> <td :id="JSON.stringify(item._id)" v-on:click="consulterContenuMaj(item)">Contenu1</td>
<td>with two columns</td> <b-popover :target="JSON.stringify(item._id)" v-on:show="rechercherTexte(item.idContenuEnCours)" triggers="hover" placement="bottom">
<td>with two columns</td> <p id="beautiful" v-html="texteDuContenu"></p>
<td>with two columns</td> </b-popover>
<td class="modal tagContenu" v-popover:tooltip="'tags'">with two columns</td>
<td>{{ item.auteurDemande }}</td>
<td class="boutonSupprimer"> <input type="checkbox" v-on:change="ajouterCoche(item._id, item.versionEnCours)" class="horns" name="horns"/></td> <td>prout : {{contenusRecu.length}}</td>
<td>01/06/2021</td>
</tr>--> <td id="valider" v-on:click="gererPublication(item, 'o')"><img v-bind:src="imageCoche" 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>
<tr v-for="(item, index) in contenusRecu" :key="index">
<td>Contenu1</td> </tr>
<td>{{ item.auteurDemande }}</td> </tbody>
<td>1</td> </table>
<td>01/06/2021</td> </div>
<td id="valider" v-on:click="gererPublication(item, 'o')"><img v-bind:src="imageCoche" alt='' height=20 width=20></td> <span class="niveau" id="proposees" v-bind:class="{'niveau-down' : isPropose}" v-on:click="naviguer">Maj Proposées</span>
<td id="refuser" v-on:click="gererPublication(item, 'n')"><img v-bind:src="imageCroix" alt='' height=20 width=20></td> <div id="detailProposees" class="masque" v-bind:class="{'affiche' : isPropose}">
<table>
</tr> <thead>
</tbody> <tr>
</table> <th colspan="8">Contenus</th>
</div> </tr>
<span class="niveau" id="proposees" v-bind:class="{'niveau-down' : isPropose}" v-on:click="naviguer">Maj Proposées</span> </thead>
<div id="detailProposees" class="masque" v-bind:class="{'affiche' : isPropose}"> <tr>
<table>
<thead> <th>Titre</th>
<tr> <th>Auteur</th>
<th colspan="8">Contenus</th> <th>Version proposée</th>
</tr> <th>Date Version proposée</th>
</thead> <th>Etat</th>
<tr> <th>Conserver</th>
<th>Créer Nouveau</th>
<th>Titre</th> <th>Supprimer</th>
<th>Auteur</th>
<th>Version proposée</th> </tr>
<th>Date Version proposée</th> <tbody>
<th>Etat</th>
<th>Conserver</th> <tr v-for="(item, index) in contenusPropose" :key="index">
<th>Créer Nouveau</th> <td :id="JSON.stringify(item._id)" v-on:click="consulterContenuMaj(item)">Contenu1</td>
<th>Supprimer</th> <b-popover :target="JSON.stringify(item._id)" v-on:show="rechercherTexte(item._id, 'banque')" triggers="hover" placement="bottom">
<p v-html="texteDuContenu"></p>
</tr> </b-popover>
<tbody> <td>{{ item.auteurContenu }}</td>
<td>1</td>
<tr v-for="(item, index) in contenusPropose" :key="index"> <td>01/06/2021</td>
<td>Contenu1</td> <td>{{ item.etat }}</td>
<td>{{ item.auteurContenu }}</td> <td v-if="item.etat === 'refus'" v-on:click="conserver(item)"><img v-bind:src="imageCoche" alt='' height=20 width=20></td>
<td>1</td> <td v-else></td>
<td>01/06/2021</td> <td v-if="item.etat === 'refus'" v-on:click="creerNouveau(item)"><img v-bind:src="imgNouveau" alt='' height=20 width=20></td>
<td>{{ item.etat }}</td> <td v-else></td>
<td v-if="item.etat === 'enCours'" v-on:click="conserver(item)"><img v-bind:src="imageCoche" alt='' height=20 width=20></td> <td v-if="item.etat !== 'enCours'" v-on:click="supprimer(item)"><img v-bind:src="imgPoubelle" alt='' height=20 width=20></td>
<td v-if="item.etat === 'enCours'" v-on:click="creerNouveau(item)"><img v-bind:src="imgNouveau" alt='' height=20 width=20></td> <td v-else></td>
<td v-if="item.etat === 'enCours'" v-on:click="supprimer(item)"><img v-bind:src="imgPoubelle" alt='' height=20 width=20></td> </tr>
</tr> </tbody>
</tbody> </table>
</table> </div>
</div> </div>
<Consulter_Contenu v-show="detailContenu" @retour_arriere="retourArriere" v-bind:auteur="auteur" v-bind:contenuClique="contenuChoisi" v-bind:contenu-clique-provenance="contenuCliqueProvenance"/>
</div> </div>
</template> </template>
<script> <script>
import Service from "@/service/Service"; import Service from "@/service/Service";
import Consulter_Contenu from "@/components/Consulter_Contenu";
export default { export default {
name: "Maj", name: "Maj",
components: {
Consulter_Contenu
},
props: ['contenuEnPublication', 'auteur', 'isRecu', 'isPropose'], props: ['contenuEnPublication', 'auteur', 'isRecu', 'isPropose'],
methods: { methods: {
naviguer: function (e) { naviguer: function (e) {
...@@ -94,10 +100,12 @@ export default { ...@@ -94,10 +100,12 @@ export default {
}, },
conserver: function (item) { conserver: function (item) {
let that = this let that = this
let data = {auteur: this.auteur, id_contenu: JSON.stringify(item.idContenu), version: item.version_en_cours.toString()} let data = {id_contenu_en_cours: JSON.stringify(item.idContenuEnCours)}
Service.creerEnCoursRefuse(data).then( function () { Service.creerEnCoursRefuse(data).then( function () {
that.publicationsProposees() Service.supprimerDemandePublication(JSON.stringify(item._id)).then(function () {
that.publicationsProposees()
})
} }
) )
}, },
...@@ -119,6 +127,8 @@ export default { ...@@ -119,6 +127,8 @@ export default {
gererPublication: function (item, reponse) { gererPublication: function (item, reponse) {
let that = this let that = this
let data = "" let data = ""
// auteurContenu -> undefined == nous sommes sur une maj tiers. Le cas contraire = maj d'un contenu perso à faire
if (item.auteurContenu === undefined) { if (item.auteurContenu === undefined) {
data = {id_tiers: JSON.stringify(item[0]._id), reponse: reponse, auteur: this.auteur} data = {id_tiers: JSON.stringify(item[0]._id), reponse: reponse, auteur: this.auteur}
...@@ -127,12 +137,17 @@ export default { ...@@ -127,12 +137,17 @@ export default {
}) })
}else { }else {
// item._id -> id de la demande de publication
data = {id_publication: JSON.stringify(item._id), reponse: reponse, auteur: item.auteurDemande} data = {id_publication: JSON.stringify(item._id), reponse: reponse, auteur: item.auteurDemande}
this.contenusRecu = [] this.contenusRecu = []
Service.gererDemandePublication(data).then(function () { Service.gererDemandePublication(data).then(function () {
that.publicationsRecues() that.publicationsRecues()
}) })
} }
this.$emit("recalculerNotif")
}, },
publicationsRecues: function () { publicationsRecues: function () {
let that = this let that = this
...@@ -140,25 +155,51 @@ export default { ...@@ -140,25 +155,51 @@ export default {
Service.getPublicationsRecues(this.auteur).then(function (response) { Service.getPublicationsRecues(this.auteur).then(function (response) {
let reception = response.data let reception = response.data
that.contenusRecu = []
for (let i = 0; i < reception.length; i++) { for (let i = 0; i < reception.length; i++) {
if (reception[i].etat === "enCours") { if (reception[i].etat === "enCours") {
that.contenusRecu.push(reception[i]) that.contenusRecu.push(reception[i])
} }
} }
Service.listeMajTiers(that.auteur).then(function (response){
if(response.data.length > 0)
that.contenusRecu.push(response.data)
})
}) })
Service.listeMajTiers(this.auteur).then(function (response){
that.contenusRecu.push(response.data)
})
}, },
publicationsProposees: function () { publicationsProposees: function () {
let that = this let that = this
// Dès que l'auteur est connu, on charge tous ses contenus // Dès que l'auteur est connu, on charge tous ses contenus
Service.getPublicationsProposees(this.auteur).then(function (response) { Service.getPublicationsProposees(this.auteur).then(function (response) {
that.contenusPropose = []
that.contenusPropose = response.data that.contenusPropose = response.data
}) })
},
consulterContenuMaj: function (item) {
this.detailContenu = true
this.contenuChoisi = item
this.contenuCliqueProvenance = "maj"
},
retourArriere: function () {
this.detailContenu = false
},
rechercherTexte(id){
let that = this
Service.recupererTexteContenuEnCours(JSON.stringify(id)).then(
function (response) {
let showdown = require('showdown'),
converter = new showdown.Converter()
that.texteDuContenu = converter.makeHtml(response.data)
}
)
} }
}, },
data: function () { data: function () {
...@@ -169,14 +210,17 @@ export default { ...@@ -169,14 +210,17 @@ export default {
imgNouveau: "https://png.pngtree.com/png-vector/20190129/ourmid/pngtree-vector-new-icon-png-image_423422.jpg", imgNouveau: "https://png.pngtree.com/png-vector/20190129/ourmid/pngtree-vector-new-icon-png-image_423422.jpg",
contenusRecu: [], contenusRecu: [],
contenusPropose: [], contenusPropose: [],
action: false action: false,
detailContenu: false,
contenuChoisi: null,
contenuCliqueProvenance: '',
texteDuContenu: ''
} }
}, },
watch: { watch: {
auteur: function () { auteur: function () {
this.publicationsRecues() this.publicationsRecues()
this.publicationsProposees() this.publicationsProposees()
} }
}, },
} }
......
...@@ -30,7 +30,7 @@ export default { ...@@ -30,7 +30,7 @@ export default {
isPropose: false isPropose: false
} }
}, },
props: ['etat', 'variante', 'auteur'], props: ['etat', 'variante', 'auteur', 'recalculerNotif'],
methods: { methods: {
choixMenuAnnexe: function (e) { choixMenuAnnexe: function (e) {
this.$emit("menu_choisi", {choix: e.target.innerText}) this.$emit("menu_choisi", {choix: e.target.innerText})
...@@ -47,6 +47,7 @@ export default { ...@@ -47,6 +47,7 @@ export default {
let that = this let that = this
Service.getPublicationsRecues(this.auteur).then(function (response) { Service.getPublicationsRecues(this.auteur).then(function (response) {
let contenusRecu = response.data let contenusRecu = response.data
for (let i = 0; i < contenusRecu.length; i++) { for (let i = 0; i < contenusRecu.length; i++) {
if (contenusRecu[i].etat === "enCours") { if (contenusRecu[i].etat === "enCours") {
...@@ -54,13 +55,16 @@ export default { ...@@ -54,13 +55,16 @@ export default {
that.isRecu = that.isNotif that.isRecu = that.isNotif
} }
} }
that.majTiers()
}) })
}, },
publicationsProposees: function () { publicationsProposees: function () {
let that = this let that = this
Service.getPublicationsProposees(this.auteur).then(function (response) { Service.getPublicationsProposees(this.auteur).then(function (response) {
let contenusPropose = response.data let contenusPropose = response.data
for (let i = 0; i < contenusPropose.length; i++) { for (let i = 0; i < contenusPropose.length; i++) {
if (contenusPropose[i].etat !== "enCours") { if (contenusPropose[i].etat !== "enCours") {
that.isNotif = true that.isNotif = true
that.isPropose = that.isNotif that.isPropose = that.isNotif
...@@ -71,6 +75,7 @@ export default { ...@@ -71,6 +75,7 @@ export default {
majTiers: function () { majTiers: function () {
let that = this let that = this
Service.isMajTiersDisponible(this.auteur).then(function (response) { Service.isMajTiersDisponible(this.auteur).then(function (response) {
if (response.data === "True") { if (response.data === "True") {
that.isNotif = true that.isNotif = true
that.isRecu = that.isNotif that.isRecu = that.isNotif
...@@ -83,10 +88,13 @@ export default { ...@@ -83,10 +88,13 @@ export default {
}, },
watch: { watch: {
auteur: function () { auteur: function () {
this.isNotif = false
this.publicationsRecues() this.publicationsRecues()
this.publicationsProposees() this.publicationsProposees()
this.majTiers() },
recalculerNotif: function () {
this.isNotif = false
this.publicationsRecues()
} }
} }
} }
......
<template> <template>
<div> <div>
<p>Bonjour, je suis l'intérieur de {{contenuClique.versionEnCours}}</p>
<p>(Dans le futur, ces actions varieront en fonction du type de contenu cliqué dans la 'fenetre principale')</p> <p>(Dans le futur, ces actions varieront en fonction du type de contenu cliqué dans la 'fenetre principale')</p>
<div id="actionsContenu">
<button v-show="contenuCliqueProvenance !== 'banque'" v-on:click="actionContenu('modifier')">modifier le contenu</button> <div id="actionsContenu" v-show="!isContenuRefuse">
<button v-show="contenuCliqueProvenance !== 'banque'" v-on:click="actionContenu('supprimer')">supprimer le contenu</button> <button v-show="contenuCliqueProvenance !== 'maj' && contenuCliqueProvenance !== 'banque'" v-on:click="actionContenu('modifier')">modifier le contenu</button>
<button v-show="contenuCliqueProvenance === 'en-cours' && contenuClique.origine === 'tiers'" v-on:click="actionContenu('publier')">publier le contenu</button> <button v-show="contenuCliqueProvenance !== 'maj' && contenuCliqueProvenance !== 'banque'" v-on:click="actionContenu('supprimer')">supprimer le contenu</button>
<button v-show="contenuCliqueProvenance === 'en-cours' && contenuClique.origine === 'perso'" v-on:click="actionContenu('validerModification')">valider la modification</button> <button v-show="contenuCliqueProvenance !== 'maj' && contenuCliqueProvenance === 'en-cours' && contenuClique.origine === 'tiers' && contenuClique.anonyme !== 'oui'" v-on:click="actionContenu('publier')">publier le contenu</button>
<button v-show="contenuCliqueProvenance === 'banque'" v-on:click="actionContenu('mettreFavori')">mettre le contenu en tiers</button> <button v-show="contenuCliqueProvenance !== 'maj' && contenuCliqueProvenance === 'en-cours' && (contenuClique.origine === 'perso' || contenuClique.anonyme === 'oui')" v-on:click="actionContenu('validerModification')">valider la modification</button>
<button v-show="contenuCliqueProvenance !== 'maj' && contenuCliqueProvenance === 'banque'" v-on:click="actionContenu('mettreFavori')">mettre le contenu en tiers</button>
<br> <br>
<select v-show="(contenuCliqueProvenance === 'banque' <select v-show="(contenuCliqueProvenance === 'banque'
|| contenuCliqueProvenance === 'perso') || contenuCliqueProvenance === 'perso')
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
</span> </span>
<br> <br>
</div> </div>
<p style="text-align: center" v-show="isContenuRefuse"> Ceci est un contenu en cours ayant fait l'objet d'un refus de publication. Aucune action disponible</p>
<button id="ren" v-on:click="revenirArriere">Retour en arrière</button> <button id="ren" v-on:click="revenirArriere">Retour en arrière</button>
</div> </div>
...@@ -41,7 +42,11 @@ export default { ...@@ -41,7 +42,11 @@ export default {
this.$emit("actionContenu", {action: action, contenu: this.contenuClique, texte: this.contenu}) this.$emit("actionContenu", {action: action, contenu: this.contenuClique, texte: this.contenu})
}, },
revenirArriere: function () { revenirArriere: function () {
if (this.contenuCliqueProvenance === 'maj'){
this.$emit("retour_arriere")
} else {
this.$emit("retour_arriere", {panierChoisi: this.contenuCliqueProvenance !== 'banque'}) this.$emit("retour_arriere", {panierChoisi: this.contenuCliqueProvenance !== 'banque'})
}
}, },
changerVersion: function () { changerVersion: function () {
let that = this let that = this
...@@ -57,12 +62,17 @@ export default { ...@@ -57,12 +62,17 @@ export default {
return { return {
contenu: '', contenu: '',
versionMax: 1, versionMax: 1,
versionChoisie: 1 versionChoisie: 1,
isContenuRefuse :false
} }
}, },
watch: { watch: {
contenuClique: function () { contenuClique: function () {
let that = this let that = this
if (Object.prototype.hasOwnProperty.call(this.contenuClique, 'refuse')){
this.isContenuRefuse = true
}
if(this.contenuCliqueProvenance === 'en-cours') { if(this.contenuCliqueProvenance === 'en-cours') {
Service.recupererTexteContenuEnCours(JSON.stringify(this.contenuClique._id)).then( Service.recupererTexteContenuEnCours(JSON.stringify(this.contenuClique._id)).then(
function (response) { function (response) {
...@@ -72,8 +82,16 @@ export default { ...@@ -72,8 +82,16 @@ export default {
) )
} }
else if (this.contenuCliqueProvenance === 'maj'){
Service.recupererTexteContenuEnCours(JSON.stringify(this.contenuClique.idContenuEnCours)).then(
function (response) {
that.contenu = response.data
// alert(response.data)
}
)
}
else { else {
if (this.contenuCliqueProvenance !== 'tiers'){ if (this.contenuCliqueProvenance === 'perso'){
this.versionMax = this.contenuClique.versionEnCours.numero this.versionMax = this.contenuClique.versionEnCours.numero
this.versionChoisie = this.versionMax this.versionChoisie = this.versionMax
} }
......
<template> <template>
<div> <div>
<p v-show="filtre_choisi.length === 0">Ajoutez des filtres pour restreindre la recherche, ou effectuez une recherche libre (bouton en haut à droite)</p> <p v-show="filtre_choisi.length === 0">Ajoutez des filtres pour restreindre la recherche, ou effectuez une recherche libre (bouton en haut à droite)</p>
<Filtre_Tag v-show="filtre_choisi === 'tags officiels' || filtre_choisi === 'tags libres' " @creer_filtre="creer_filtre"/> <Filtre_Tag v-show="filtre_choisi === 'tags officiels' || filtre_choisi === 'tags libres' " v-bind:filtreChoisi="filtre_choisi" @creer_filtre="creer_filtre"/>
<Filtre_Auteur v-show="filtre_choisi === 'auteur'" @creer_filtre="creer_filtre"/> <Filtre_Auteur v-show="filtre_choisi === 'auteur'" @creer_filtre="creer_filtre"/>
<Filtre_Date v-show="filtre_choisi === 'date' " @creer_filtre="creer_filtre"/> <Filtre_Date v-show="filtre_choisi === 'date' " @creer_filtre="creer_filtre"/>
<Filtre_Note_Popularite v-show="filtre_choisi === 'note / popularité' " @creer_filtre="creer_filtre"/> <Filtre_Note_Popularite v-show="filtre_choisi === 'note / popularité' " @creer_filtre="creer_filtre"/>
...@@ -32,7 +32,7 @@ export default { ...@@ -32,7 +32,7 @@ export default {
props: ['filtre_choisi'], props: ['filtre_choisi'],
methods: { methods: {
creer_filtre: function (event) { creer_filtre: function (event) {
this.$emit("creer_filtre", {filtre: event.filtre}) this.$emit("creer_filtre", {filtre: event})
} }
} }
......
<template> <template>
<div id="detail_filtre"> <div id="detail_filtre">
<button id="effacerFiltres" v-on:click="effacer_Filtres"></button> <button id="effacerFiltres" v-on:click="effacer_Filtres"></button>
<div id="filtresChoisis" v-for="(index) in filtres_Choisis" :key="index"> <div id="filtresChoisis" v-for="(index) in filtres_Choisis" :key="index.filtre">
<span class="filtreChoisi"> {{index}} <button class="supprimerFiltre" v-on:click="supprimer"></button></span> <span class="filtreChoisi"> {{index.filtre}} <button class="supprimerFiltre" v-on:click="supprimer($event, index)"></button></span>
</div> </div>
</div> </div>
...@@ -13,18 +13,41 @@ export default { ...@@ -13,18 +13,41 @@ export default {
name: "Detail_Filtre", name: "Detail_Filtre",
props: ['nouveau_filtre'], props: ['nouveau_filtre'],
methods: { methods: {
supprimer: function (e) { supprimer: function (e, index) {
e.target.parentElement.remove() e.target.parentElement.remove()
this.filtres_Choisis = this.filtres_Choisis.filter(filtre => filtre !== index)
this.$emit("filtresChoisis", {filtres: this.filtres_Choisis})
}, },
effacer_Filtres: function () { effacer_Filtres: function () {
this.filtres_Choisis = [] this.filtres_Choisis = []
},
changer_filtre_date: function() {
console.log(this.filtres_Choisis)
this.filtres_Choisis = this.filtres_Choisis.filter(filtre => filtre.type !== 'date')
},
filtreDejaPresent: function(nomFiltre) {
return this.filtres_Choisis.filter(filtre => filtre.filtre === nomFiltre).length > 0
} }
}, },
watch: { watch: {
nouveau_filtre: function(newVal) { // watch it nouveau_filtre: function(newVal) { // watch it
//alert('Prop changed: ' + newVal + ' | was: ' + oldVal) if (this.filtres_Choisis.length > 0){
this.filtres_Choisis.push(newVal) if (this.filtreDejaPresent(newVal.filtre.filtre)){
return
}
else if(newVal.filtre.type === 'date'){
this.changer_filtre_date()
if (newVal.filtre.filtre === "Toutes les périodes"){
return
}
}
}
this.filtres_Choisis.push(newVal.filtre)
this.$emit("filtresChoisis", {filtres: this.filtres_Choisis})
} }
} }
, data: function () { , data: function () {
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
<button id="boutonVolet" v-on:click="desactiverVolet" v-bind:style="panierChoisi ? {'margin-top': '0%'} : {'margin-top': '20px'}"></button> <button id="boutonVolet" v-on:click="desactiverVolet" v-bind:style="panierChoisi ? {'margin-top': '0%'} : {'margin-top': '20px'}"></button>
<div class="full" id="volet" v-show="isActif"> <div class="full" id="volet" v-show="isActif">
<Volet_Menu v-bind:panierChoisi = "panierChoisi" @filtre_choisi="passerFiltre"/> <Volet_Menu v-bind:panierChoisi = "panierChoisi" @filtre_choisi="passerFiltre"/>
<Volet_Contenu @mode_choisi="ajusterMode" v-bind:filtre_choisi="filtre_choisi" v-bind:variante="variante"/> <Volet_Contenu @mode_choisi="ajusterMode" v-bind:filtre_choisi="filtre_choisi" v-bind:variante="variante" @filtresChoisis="filtresChoisis"/>
</div> </div>
</div> </div>
...@@ -44,7 +44,7 @@ ...@@ -44,7 +44,7 @@
<tbody> <tbody>
<tr v-show="panierChoisi && (persoChecked ** (item.provenance === 'perso')) && (tiersChecked ** (item.provenance === 'tiers')) <tr v-show="panierChoisi && (persoChecked ** (item.provenance === 'perso')) && (tiersChecked ** (item.provenance === 'tiers'))
&& (enCoursChecked ** (item.provenance === 'en-cours'))" v-for="item in contenus" :key="item.titre" && (enCoursChecked ** (item.provenance === 'en-cours'))" v-for="item in filterContenu" :key="item.titre"
v-bind:style="{ v-bind:style="{
'background-color': item.provenance === 'perso' ? 'white' : item.provenance === 'tiers' ? 'red' : 'blue' 'background-color': item.provenance === 'perso' ? 'white' : item.provenance === 'tiers' ? 'red' : 'blue'
}"> }">
...@@ -58,7 +58,7 @@ ...@@ -58,7 +58,7 @@
<p id="beautiful" v-html="texteDuContenu"></p> <p id="beautiful" v-html="texteDuContenu"></p>
</b-popover> </b-popover>
<td>{{item.auteur}}</td> <td>{{item.auteur}}</td>
<td v-if="item.provenance === 'en-cours'">{{ item.version }}</td> <td v-if="item.provenance === 'en-cours' || item.provenance === 'tiers' ">{{ item.version }}</td>
<td v-else>{{ item.versionEnCours.numero }}</td> <td v-else>{{ item.versionEnCours.numero }}</td>
<td>The table body</td> <td>The table body</td>
<td class="prout">with two columns</td> <td class="prout">with two columns</td>
...@@ -72,8 +72,8 @@ ...@@ -72,8 +72,8 @@
</tr> </tr>
<tr v-show="!panierChoisi" v-for="item in contenusbanque" :key="item.titre"> <tr v-show="!panierChoisi" v-for="item in contenusbanque" :key="item.titre">
<td :id="a + JSON.stringify(item._id)" v-on:click="chargerContenu(item, 'banque')">{{ item._id }}</td> <td :id="'a' + JSON.stringify(item._id)" v-on:click="chargerContenu(item, 'banque')">{{ item._id }}</td>
<b-popover :target="a + JSON.stringify(item._id)" v-on:show="rechercherTexte(item._id, 'banque')" triggers="hover" placement="bottom"> <b-popover :target="'a' + JSON.stringify(item._id)" v-on:show="rechercherTexte(item._id, 'banque')" triggers="hover" placement="bottom">
<p id="beautiful" v-html="texteDuContenu"></p> <p id="beautiful" v-html="texteDuContenu"></p>
</b-popover> </b-popover>
<td>{{ item.auteur }}</td> <td>{{ item.auteur }}</td>
...@@ -131,6 +131,8 @@ export default { ...@@ -131,6 +131,8 @@ export default {
variante: false, variante: false,
contenus: [], contenus: [],
contenusbanque: [], contenusbanque: [],
contenusTotal: [],
contenusTotalBanque: [],
contenuClique: "", contenuClique: "",
contenuCliqueProvenance: "", contenuCliqueProvenance: "",
modalOn: false, modalOn: false,
...@@ -148,9 +150,10 @@ export default { ...@@ -148,9 +150,10 @@ export default {
imgPoubelle: "data:image/png;base64,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" imgPoubelle: "data:image/png;base64,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"
} }
}, },
updated() { computed:{
filterContenu: function () {
return this.contenus.filter(item => item.isPublie !== 'oui')
}
}, },
watch: { watch: {
...@@ -173,16 +176,16 @@ export default { ...@@ -173,16 +176,16 @@ export default {
// Dès que l'auteur est connu, on charge tous ses contenus // Dès que l'auteur est connu, on charge tous ses contenus
Service.getPanierAuteur(this.auteur).then(function (response) { Service.getPanierAuteur(this.auteur).then(function (response) {
that.contenus = response.data that.contenusTotal = response.data
that.contenus = that.contenusTotal
}) })
}, },
contenusDeLaBanque: function(){ contenusDeLaBanque: function(){
let that = this let that = this
// Dès que l'auteur est connu, on charge tous ses contenus
Service.getBanqueAuteur(this.auteur).then(function (response) { Service.getBanqueAuteur(this.auteur).then(function (response) {
that.contenusbanque = response.data that.contenusTotalBanque = response.data
that.contenusbanque = that.contenusTotalBanque
}) })
}, },
desactiverVolet: function () { desactiverVolet: function () {
...@@ -242,13 +245,6 @@ export default { ...@@ -242,13 +245,6 @@ export default {
}, },
ajouterContenu: function () { ajouterContenu: function () {
this.$emit("newContenu") this.$emit("newContenu")
/* let data = {auteur: this.auteur, nom_fichier: "Contenu1", commit: ""}
let that = this
Service.creerContenuPerso(data).then(
function () {
that.contenusDuPanier()
}
)*/
}, },
chargerContenu: function (item, provenance){ chargerContenu: function (item, provenance){
this.panierChoisi = false this.panierChoisi = false
...@@ -264,6 +260,8 @@ export default { ...@@ -264,6 +260,8 @@ export default {
this.modeConsultation = false this.modeConsultation = false
let data = {} let data = {}
let that = this let that = this
let auteur = ""
switch (event.action) { switch (event.action) {
case "mettreFavori": case "mettreFavori":
...@@ -306,19 +304,17 @@ export default { ...@@ -306,19 +304,17 @@ export default {
this.panierChoisi = true this.panierChoisi = true
data = {id_contenu: JSON.stringify(event.contenu.reference), id_contenu_en_cours: JSON.stringify(event.contenu._id), data = {id_contenu: JSON.stringify(event.contenu.reference), id_contenu_en_cours: JSON.stringify(event.contenu._id),
auteur_en_cours: this.auteur, version: event.contenu.version.toString()} auteur_en_cours: this.auteur, version: event.contenu.version.toString()}
Service.creerDemandePublication(data).then( function () {
// on vire le contenu en cours dès qu'une demande de publication a été faite
Service.supprimerEnCoursParLid(JSON.stringify(event.contenu._id)).then(
function () {
that.contenusDuPanier() Service.creerDemandePublication(data).then( function () {
} that.contenusDuPanier()
)
} }
) )
break break
case "validerModification": case "validerModification":
data = {id_contenu_en_cours: JSON.stringify(event.contenu._id), auteur: ""} if (event.contenu.anonyme)
auteur = this.auteur
data = {id_contenu_en_cours: JSON.stringify(event.contenu._id), auteur: auteur}
Service.majContenu(data).then(function () { Service.majContenu(data).then(function () {
that.contenusDuPanier() that.contenusDuPanier()
}) })
...@@ -396,8 +392,59 @@ export default { ...@@ -396,8 +392,59 @@ export default {
} }
} }
} },
filtresChoisis(event) {
let contenusFiltres = []
// on récupère les contenus à filtrer
if (this.panierChoisi){
contenusFiltres = this.contenusTotal
}
else {
contenusFiltres = this.contenusTotalBanque
}
// on les filtre
if (event.filtres.filter(contenu => contenu.type === 'auteur').length > 0){
// auteur
let filtre_auteur = (event.filtres.filter(contenu => contenu.type === 'auteur').map(contenu => contenu.filtre))
contenusFiltres = contenusFiltres.filter(contenu => filtre_auteur.includes(contenu.auteur))
}
// date
if (event.filtres.filter(contenu => contenu.type === 'tags libres').length > 0) {
// tags libres
let filtre_tags_libres = (event.filtres.filter(contenu => contenu.type === 'tags libres').map(contenu => contenu.filtre))
for (let i = 0; i < filtre_tags_libres.length; i++) {
contenusFiltres = contenusFiltres.filter(contenu => contenu.tags_banque_libres.includes(filtre_tags_libres[i]))
}
}
if (event.filtres.filter(contenu => contenu.type === 'tags officiels').length > 0) {
// tags officiels
let filtre_tags_fixes = (event.filtres.filter(contenu => contenu.type === 'tags officiels').map(contenu => contenu.filtre))
for (let i = 0; i < filtre_tags_fixes.length; i++) {
contenusFiltres = contenusFiltres.filter(contenu => contenu.tags_banque_fixes.includes(filtre_tags_fixes[i]))
}
}
if (event.filtres.filter(contenu => contenu.type === 'type').length > 0) {
// type
let filtre_type = (event.filtres.filter(contenu => contenu.type === 'type').map(contenu => contenu.filtre))
contenusFiltres = contenusFiltres.filter(contenu => filtre_type.includes(contenu.type))
}
if (event.filtres.filter(contenu => contenu.type === 'source').length > 0) {
// source
let filtre_source = (event.filtres.filter(contenu => contenu.type === 'source').map(contenu => contenu.filtre))
contenusFiltres = contenusFiltres.filter(contenu => filtre_source.includes(contenu.source))
// manque note, popularite
}
// et on les réinjecte dans la "source"
if (this.panierChoisi){
this.contenus = contenusFiltres
}
else {
this.contenusbanque = contenusFiltres
}
}
} }
} }
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<div id = "detailFiltre"> <div id = "detailFiltre">
<Detail_Filtre v-bind:nouveau_filtre="nouveau_filtre" /> <Detail_Filtre v-bind:nouveau_filtre="nouveau_filtre" @filtresChoisis="filtresChoisis"/>
</div> </div>
<div id = "detailContenu"> <div id = "detailContenu">
<Detail_Contenu v-bind:filtre_choisi="filtre_choisi" @creer_filtre="creer_filtre"/> <Detail_Contenu v-bind:filtre_choisi="filtre_choisi" @creer_filtre="creer_filtre"/>
...@@ -33,7 +33,12 @@ export default { ...@@ -33,7 +33,12 @@ export default {
}, },
creer_filtre: function (event) { creer_filtre: function (event) {
this.nouveau_filtre = event.filtre this.nouveau_filtre = event
},
filtresChoisis: function (event) {
this.$emit("filtresChoisis", {filtres: event.filtres})
} }
}, },
......
...@@ -4,9 +4,7 @@ ...@@ -4,9 +4,7 @@
<div id="selectionnerAuteur"> <div id="selectionnerAuteur">
<span>selectionner un auteur : </span><br><br> <span>selectionner un auteur : </span><br><br>
<select id="auteur" name="auteur" size="1" v-model="auteur" v-on:change="choixAuteur()"> <select id="auteur" name="auteur" size="1" v-model="auteur" v-on:change="choixAuteur()">
<option>Auteur 1</option> <option v-for="item in listeAuteurs" v-bind:key="item.id">{{ item.nom }}</option>
<option>Auteur 2</option>
<option>Auteur 3</option>
</select> </select>
</div> </div>
...@@ -14,18 +12,27 @@ ...@@ -14,18 +12,27 @@
</template> </template>
<script> <script>
import Service from "@/service/Service";
export default { export default {
name: "Filtre_Auteur", name: "Filtre_Auteur",
methods: { methods: {
choixAuteur: function () { choixAuteur: function () {
// alert(this.auteur) // alert(this.auteur)
this.$emit("creer_filtre", {filtre: this.auteur}) this.$emit("creer_filtre", {filtre: this.auteur, type: 'auteur'})
} }
}, },
mounted() {
let that = this
Service.recupererAuteursExistants().then(function (reponse) {
that.listeAuteurs = reponse.data
})
},
data: function () { data: function () {
return { return {
auteur: "", auteur: "",
listeAuteurs: []
} }
} }
......
<template> <template>
<div id="selectionnerDateunique"> <div id="selectionnerDateunique">
<span>selectionner une plage de dates</span><br> <span>selectionner une période de recherche (une active à la fois)</span><br>
<label for="dateDebut">Date début</label>
<input id="dateDebut" type="date" required="required"/><br> <select v-model="date" @change="choixDate">
<label for="dateFin">Date fin</label>
<input id="dateFin" type="date" required="required"/><br> <option>Toutes les périodes</option>
<button class="validerFiltre" id="validerDates" value="valider" v-on:click="choixDate"/> <option>Les 7 derniers jours</option>
<option>De ce mois</option>
<option>De cette année</option>
</select>
</div> </div>
...@@ -17,7 +22,12 @@ export default { ...@@ -17,7 +22,12 @@ export default {
name: "Filtre_Date", name: "Filtre_Date",
methods: { methods: {
choixDate: function () { choixDate: function () {
this.$emit("creer_filtre", {filtre: this.date, type: 'date'})
}
},
data: function () {
return {
date: 'Toutes les périodes'
} }
} }
} }
......
...@@ -49,13 +49,14 @@ ...@@ -49,13 +49,14 @@
//import $ from 'jquery' //import $ from 'jquery'
export default { export default {
name: "Filtre_Tag", name: "Filtre_Tag",
props: ['filtreChoisi'],
methods: { methods: {
naviguer: function (e) { naviguer: function (e) {
if (e.offsetX > e.target.offsetLeft) { if (e.offsetX > e.target.offsetLeft) {
//alert(e.target.text()) //alert(e.target.text())
//alert("Je veux mettre" + e.target.innerText + "en filtre") //alert("Je veux mettre" + e.target.innerText + "en filtre")
this.$emit("creer_filtre", {filtre: e.target.innerText}) this.$emit("creer_filtre", {filtre: e.target.innerText, type: this.filtreChoisi})
} }
else{ else{
...@@ -64,7 +65,7 @@ export default { ...@@ -64,7 +65,7 @@ export default {
} }
}, },
nouveauFiltre: function (e) { nouveauFiltre: function (e) {
this.$emit("creer_filtre", {filtre: e.target.innerText}) this.$emit("creer_filtre", {filtre: e.target.innerText, type: this.filtreChoisi})
} }
} }
......
...@@ -33,11 +33,11 @@ export default { ...@@ -33,11 +33,11 @@ export default {
}, },
methods: { methods: {
choixType: function () { choixType: function () {
this.$emit("creer_filtre", {filtre: this.type}) this.$emit("creer_filtre", {filtre: this.type, type: 'type'})
}, },
choixSource: function () { choixSource: function () {
this.$emit("creer_filtre", {filtre: this.source}) this.$emit("creer_filtre", {filtre: this.source, type: 'source'})
} }
......
...@@ -13,6 +13,7 @@ Vue.config.productionTip = false ...@@ -13,6 +13,7 @@ Vue.config.productionTip = false
Vue.use(VPopover, { tooltip: true }) Vue.use(VPopover, { tooltip: true })
Vue.use(mavonEditor) Vue.use(mavonEditor)
Vue.use(BootstrapVue) Vue.use(BootstrapVue)
Vue.prototype.$appName = 'Yumede'
new Vue({ new Vue({
render: h => h(Index), render: h => h(Index),
......
...@@ -40,7 +40,7 @@ export default { ...@@ -40,7 +40,7 @@ export default {
}, },
creerEnCoursRefuse(data) { creerEnCoursRefuse(data) {
return axios.post(urlBase + "newEnCoursRefuse", data) return axios.patch(urlBase + "newEnCoursRefuse", data)
}, },
supprimerEnCours(idContenu) { supprimerEnCours(idContenu) {
...@@ -108,4 +108,7 @@ export default { ...@@ -108,4 +108,7 @@ export default {
recupererTexteVersionContenu(idContenu, version){ recupererTexteVersionContenu(idContenu, version){
return axios.get(urlBase + "getTexteVersionContenu/" + idContenu + "/" + version) return axios.get(urlBase + "getTexteVersionContenu/" + idContenu + "/" + version)
}, },
recupererAuteursExistants(){
return axios.get(urlBase + "auteursExistants")
}
} }
\ 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