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 @@
<div>
<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>
<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>
<Tags v-show="etat === 'Tags'" ></Tags>
<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>
<!-- <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>
</template>
......@@ -42,7 +36,8 @@ export default {
auteur: "",
isRecu: false,
isPropose: false,
contenuAjoute: false
contenuAjoute: false,
recalculerNotif: false
}
},
methods: {
......@@ -58,8 +53,9 @@ export default {
}
},
changerPage: function (event) {
if (event.choix === "Deconnexion")
if (event.choix === "Deconnexion"){
this.etat = "unlogged"
}
else
this.etat = event.choix
if (event.choix === "Mises à jour"){
......@@ -79,6 +75,9 @@ export default {
},
retourArriere: function () {
this.etat= "Contenu"
},
recalculerNotification: function () {
this.recalculerNotif = !this.recalculerNotif
}
},
......
This diff is collapsed.
......@@ -30,7 +30,7 @@ export default {
isPropose: false
}
},
props: ['etat', 'variante', 'auteur'],
props: ['etat', 'variante', 'auteur', 'recalculerNotif'],
methods: {
choixMenuAnnexe: function (e) {
this.$emit("menu_choisi", {choix: e.target.innerText})
......@@ -47,6 +47,7 @@ export default {
let that = this
Service.getPublicationsRecues(this.auteur).then(function (response) {
let contenusRecu = response.data
for (let i = 0; i < contenusRecu.length; i++) {
if (contenusRecu[i].etat === "enCours") {
......@@ -54,13 +55,16 @@ export default {
that.isRecu = that.isNotif
}
}
that.majTiers()
})
},
publicationsProposees: function () {
let that = this
Service.getPublicationsProposees(this.auteur).then(function (response) {
let contenusPropose = response.data
for (let i = 0; i < contenusPropose.length; i++) {
if (contenusPropose[i].etat !== "enCours") {
that.isNotif = true
that.isPropose = that.isNotif
......@@ -71,6 +75,7 @@ export default {
majTiers: function () {
let that = this
Service.isMajTiersDisponible(this.auteur).then(function (response) {
if (response.data === "True") {
that.isNotif = true
that.isRecu = that.isNotif
......@@ -83,10 +88,13 @@ export default {
},
watch: {
auteur: function () {
this.isNotif = false
this.publicationsRecues()
this.publicationsProposees()
this.majTiers()
},
recalculerNotif: function () {
this.isNotif = false
this.publicationsRecues()
}
}
}
......
<template>
<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>
<div id="actionsContenu">
<button v-show="contenuCliqueProvenance !== 'banque'" v-on:click="actionContenu('modifier')">modifier le contenu</button>
<button v-show="contenuCliqueProvenance !== 'banque'" v-on:click="actionContenu('supprimer')">supprimer 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 === 'en-cours' && contenuClique.origine === 'perso'" v-on:click="actionContenu('validerModification')">valider la modification</button>
<button v-show="contenuCliqueProvenance === 'banque'" v-on:click="actionContenu('mettreFavori')">mettre le contenu en tiers</button>
<div id="actionsContenu" v-show="!isContenuRefuse">
<button v-show="contenuCliqueProvenance !== 'maj' && contenuCliqueProvenance !== 'banque'" v-on:click="actionContenu('modifier')">modifier le contenu</button>
<button v-show="contenuCliqueProvenance !== 'maj' && contenuCliqueProvenance !== 'banque'" v-on:click="actionContenu('supprimer')">supprimer le contenu</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 !== '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>
<select v-show="(contenuCliqueProvenance === 'banque'
|| contenuCliqueProvenance === 'perso')
......@@ -20,6 +20,7 @@
</span>
<br>
</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>
</div>
......@@ -41,7 +42,11 @@ export default {
this.$emit("actionContenu", {action: action, contenu: this.contenuClique, texte: this.contenu})
},
revenirArriere: function () {
if (this.contenuCliqueProvenance === 'maj'){
this.$emit("retour_arriere")
} else {
this.$emit("retour_arriere", {panierChoisi: this.contenuCliqueProvenance !== 'banque'})
}
},
changerVersion: function () {
let that = this
......@@ -57,12 +62,17 @@ export default {
return {
contenu: '',
versionMax: 1,
versionChoisie: 1
versionChoisie: 1,
isContenuRefuse :false
}
},
watch: {
contenuClique: function () {
let that = this
if (Object.prototype.hasOwnProperty.call(this.contenuClique, 'refuse')){
this.isContenuRefuse = true
}
if(this.contenuCliqueProvenance === 'en-cours') {
Service.recupererTexteContenuEnCours(JSON.stringify(this.contenuClique._id)).then(
function (response) {
......@@ -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 {
if (this.contenuCliqueProvenance !== 'tiers'){
if (this.contenuCliqueProvenance === 'perso'){
this.versionMax = this.contenuClique.versionEnCours.numero
this.versionChoisie = this.versionMax
}
......
<template>
<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>
<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_Date v-show="filtre_choisi === 'date' " @creer_filtre="creer_filtre"/>
<Filtre_Note_Popularite v-show="filtre_choisi === 'note / popularité' " @creer_filtre="creer_filtre"/>
......@@ -32,7 +32,7 @@ export default {
props: ['filtre_choisi'],
methods: {
creer_filtre: function (event) {
this.$emit("creer_filtre", {filtre: event.filtre})
this.$emit("creer_filtre", {filtre: event})
}
}
......
<template>
<div id="detail_filtre">
<button id="effacerFiltres" v-on:click="effacer_Filtres"></button>
<div id="filtresChoisis" v-for="(index) in filtres_Choisis" :key="index">
<span class="filtreChoisi"> {{index}} <button class="supprimerFiltre" v-on:click="supprimer"></button></span>
<div id="filtresChoisis" v-for="(index) in filtres_Choisis" :key="index.filtre">
<span class="filtreChoisi"> {{index.filtre}} <button class="supprimerFiltre" v-on:click="supprimer($event, index)"></button></span>
</div>
</div>
......@@ -13,18 +13,41 @@ export default {
name: "Detail_Filtre",
props: ['nouveau_filtre'],
methods: {
supprimer: function (e) {
supprimer: function (e, index) {
e.target.parentElement.remove()
this.filtres_Choisis = this.filtres_Choisis.filter(filtre => filtre !== index)
this.$emit("filtresChoisis", {filtres: this.filtres_Choisis})
},
effacer_Filtres: function () {
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: {
nouveau_filtre: function(newVal) { // watch it
//alert('Prop changed: ' + newVal + ' | was: ' + oldVal)
this.filtres_Choisis.push(newVal)
if (this.filtres_Choisis.length > 0){
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 () {
......
This diff is collapsed.
......@@ -3,7 +3,7 @@
<div id = "detailFiltre">
<Detail_Filtre v-bind:nouveau_filtre="nouveau_filtre" />
<Detail_Filtre v-bind:nouveau_filtre="nouveau_filtre" @filtresChoisis="filtresChoisis"/>
</div>
<div id = "detailContenu">
<Detail_Contenu v-bind:filtre_choisi="filtre_choisi" @creer_filtre="creer_filtre"/>
......@@ -33,7 +33,12 @@ export default {
},
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 @@
<div id="selectionnerAuteur">
<span>selectionner un auteur : </span><br><br>
<select id="auteur" name="auteur" size="1" v-model="auteur" v-on:change="choixAuteur()">
<option>Auteur 1</option>
<option>Auteur 2</option>
<option>Auteur 3</option>
<option v-for="item in listeAuteurs" v-bind:key="item.id">{{ item.nom }}</option>
</select>
</div>
......@@ -14,18 +12,27 @@
</template>
<script>
import Service from "@/service/Service";
export default {
name: "Filtre_Auteur",
methods: {
choixAuteur: function () {
// 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 () {
return {
auteur: "",
listeAuteurs: []
}
}
......
<template>
<div id="selectionnerDateunique">
<span>selectionner une plage de dates</span><br>
<label for="dateDebut">Date début</label>
<input id="dateDebut" type="date" required="required"/><br>
<label for="dateFin">Date fin</label>
<input id="dateFin" type="date" required="required"/><br>
<button class="validerFiltre" id="validerDates" value="valider" v-on:click="choixDate"/>
<span>selectionner une période de recherche (une active à la fois)</span><br>
<select v-model="date" @change="choixDate">
<option>Toutes les périodes</option>
<option>Les 7 derniers jours</option>
<option>De ce mois</option>
<option>De cette année</option>
</select>
</div>
......@@ -17,7 +22,12 @@ export default {
name: "Filtre_Date",
methods: {
choixDate: function () {
this.$emit("creer_filtre", {filtre: this.date, type: 'date'})
}
},
data: function () {
return {
date: 'Toutes les périodes'
}
}
}
......
......@@ -49,13 +49,14 @@
//import $ from 'jquery'
export default {
name: "Filtre_Tag",
name: "Filtre_Tag",
props: ['filtreChoisi'],
methods: {
naviguer: function (e) {
if (e.offsetX > e.target.offsetLeft) {
//alert(e.target.text())
//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{
......@@ -64,7 +65,7 @@ export default {
}
},
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 {
},
methods: {
choixType: function () {
this.$emit("creer_filtre", {filtre: this.type})
this.$emit("creer_filtre", {filtre: this.type, type: 'type'})
},
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
Vue.use(VPopover, { tooltip: true })
Vue.use(mavonEditor)
Vue.use(BootstrapVue)
Vue.prototype.$appName = 'Yumede'
new Vue({
render: h => h(Index),
......
......@@ -40,7 +40,7 @@ export default {
},
creerEnCoursRefuse(data) {
return axios.post(urlBase + "newEnCoursRefuse", data)
return axios.patch(urlBase + "newEnCoursRefuse", data)
},
supprimerEnCours(idContenu) {
......@@ -108,4 +108,7 @@ export default {
recupererTexteVersionContenu(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