Commit 4ce8a456 authored by Jérémie Passerat's avatar Jérémie Passerat

Début des recherches sur les majs de tiers

parent 709e7ead
<template>
<div id="app">
<Volet_Base @choix_variante="choixVariante" v-bind:auteur="auteur" @publication="publication"/>
<Volet_Base @choix_variante="choixVariante" v-bind:auteur="auteur" />
</div>
</template>
......@@ -17,9 +17,6 @@ export default {
this.$emit("choix_variante", {variante: event.variante})
},
publication: function (event) {
this.$emit("publication", {document: event.document})
}
},
props: ['auteur']
......
......@@ -2,9 +2,10 @@
<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:isNotif="isNotif" v-bind:variante="variante" @menu_choisi="changerPage"></Menu>
<Contenu v-show="etat === 'Contenu'" v-bind:auteur="auteur" @choix_variante="choixVariante" @publication="publication"></Contenu>
<Maj v-show="etat === 'Mises à jour'" v-bind:auteur="auteur" v-bind:contenuEnPublication="contenuEnPublication" ></Maj>
<Menu v-show="etat !== 'unlogged'" v-bind:auteur="auteur" v-bind:etat="etat" v-bind:variante="variante" @menu_choisi="changerPage"></Menu>
<Contenu v-show="etat === 'Contenu'" v-bind:auteur="auteur" @choix_variante="choixVariante"></Contenu>
<Maj v-show="etat === 'Mises à jour'" v-bind:auteur="auteur" v-bind:isRecu="isRecu" v-bind:isPropose="isPropose"
v-bind:contenuEnPublication="contenuEnPublication" ></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>
......@@ -29,7 +30,9 @@ export default {
contenuEnPublication: "",
isNotif: false,
errorLogin: false,
auteur: ""
auteur: "",
isRecu: false,
isPropose: false
}
},
methods: {
......@@ -49,14 +52,14 @@ export default {
this.etat = "unlogged"
else
this.etat = event.choix
if (event.choix === "Mises à jour"){
this.isRecu = event.isRecu
this.isPropose = event.isPropose
}
},
choixVariante: function (event) {
this.variante = event.variante
},
publication: function (event) {
this.contenuEnPublication = event.document
this.isNotif = true
}
},
components:{
......
<template>
<div id="loginForm">
<div id="loginForm" v-on:keyup="keymonitor">
<p>Deux comptes temporaires : Charles, Jacques</p>
<label for="identifiant">Identifiant</label>
......@@ -14,7 +14,7 @@
<br>
<br>
<button @click.prevent="logIn">Connexion</button>
<button @click.prevent="logIn" >Connexion</button>
</div>
</template>
......@@ -35,6 +35,11 @@ export default {
that.$emit("user_logged", {"isLogged" : false})
}
})
},
keymonitor: function(event) {
if (event.key === "Enter") {
this.logIn()
}
}
},
data: function () {
......
This diff is collapsed.
......@@ -11,36 +11,80 @@
<div v-if="etat !== 'Mises à jour'" class="sous_menu" v-on:click="choixMenuAnnexe">Mises à jour</div>
<div v-else class="sous_menu" v-on:click="choixMenuAnnexe">Contenu</div>
<div class="sous_menu" v-on:click="choixMenuAnnexe">Tags</div>
<div class="sous_menu" v-on:click="evaluations">Evaluations</div>
<div class="sous_menu" v-on:click="choixMenuAnnexe">Deconnexion</div>
</div>
</div>
</template>
<script>
import Choix_Mode_Variante from "@/components/Choix_Mode_Variante";
import Service from "@/service/Service";
export default {
name: "Menu",
data: function () {
return {
isAffiche: false,
isNotif: false,
isRecu: false,
isPropose: false
}
},
props: ['etat', 'variante', 'isNotif', 'auteur'],
props: ['etat', 'variante', 'auteur'],
methods: {
choixMenuAnnexe: function (e) {
this.$emit("menu_choisi", {choix: e.target.innerText})
this.isAffiche = ! this.isAffiche
this.isAffiche = false
},
evaluations: function () {
alert("Gestion des évaluations (a venir)")
},
choixIconeNotification: function () {
this.$emit("menu_choisi", {choix: "Mises à jour", isRecu: this.isRecu, isPropose: this.isPropose})
this.isAffiche = false
},
publicationsRecues: function () {
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") {
that.isNotif = contenusRecu.length !== 0
that.isRecu = that.isNotif
}
}
})
},
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
}
}
})
},
choixIconeNotification: function(){
this.$emit("menu_choisi", {choix: "Mises à jour"})
this.isAffiche = ! this.isAffiche
majTiers: function () {
Service.isMajTiersDisponible(this.auteur).then(function (response) {
alert("Tiens, j'ai envie d'aller jorder un bon coup moua (aaaaaaaaaaaaaaaahhhhhhh) : " + response.data)
})
}
},
components:{
components: {
Choix_Mode_Variante
}
},
watch: {
auteur: function () {
this.publicationsRecues()
this.publicationsProposees()
this.majTiers()
}
}
}
</script>
......@@ -49,58 +93,58 @@ export default {
#menuHaut{
display: flex;
}
.circle {
background: gold;
border: 1px solid yellow;
margin-top: 1%;
border-radius: 50%;
display: flex; /* or inline-flex */
align-items: center;
justify-content: center;
height: 75px;
width: 75px;
}
.circle {
background: gold;
border: 1px solid yellow;
margin-top: 1%;
border-radius: 50%;
display: flex; /* or inline-flex */
align-items: center;
justify-content: center;
height: 75px;
width: 75px;
}
.menuVariante{
margin-top: 1%;
margin-left: 45%;
z-index: 1;
.menuVariante{
margin-top: 1%;
margin-left: 45%;
z-index: 1;
}
}
.menu{
height: 150px;
width: 100px;
background: white;
border: thin solid black;
margin-top: 100px;
margin-left: 93%;
position: absolute;
display: flex;
flex-direction: column;
text-align: center;
vertical-align: middle;
.menu{
height: 200px;
width: 100px;
background: white;
border: thin solid black;
margin-top: 100px;
margin-left: 93%;
position: absolute;
display: flex;
flex-direction: column;
text-align: center;
vertical-align: middle;
z-index: 1;
}
z-index: 1;
}
.notif {
border: thin solid black;
border-radius: 30%;
height: 30px;
width: 30px;
margin-top: 1.5%;
z-index: 1;
margin-left: 90%;
background-image: url(assets/img/cloche.png);
background-size: cover;
.notif {
border: thin solid black;
border-radius: 30%;
height: 30px;
width: 30px;
margin-top: 1.5%;
z-index: 1;
margin-left: 90%;
background-image: url(assets/img/cloche.png);
background-size: cover;
}
}
.sous_menu{
flex-basis: 25%;
border: thin solid black;
line-height: 36px;
.sous_menu{
flex-basis: 20%;
border: thin solid black;
line-height: 36px;
}
}
</style>
\ No newline at end of file
......@@ -5,14 +5,16 @@
<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' && contenuClique.etat !== 'refuse'" 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'" 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 === 'en-cours' && contenuClique.etat !== 'refuse'" v-on:click="actionContenu('publier')">publier le contenu</button>
<button v-show="contenuCliqueProvenance === 'banque' && contenuClique.etat !== 'refuse'" v-on:click="actionContenu('mettreFavori')">mettre le contenu en tiers</button>
<br>
</div>
<p v-if="contenuClique.etat === 'refuse'">Je suis un contenu en cours {{contenuClique.etat}}</p>
<button id="ren" v-on:click="revenirArriere">Retour en arrière</button>
</div>
......
......@@ -50,7 +50,8 @@
}" >
<td class="modal titreContenu" v-on:click="chargerContenu(item, item.provenance)" v-popover:tooltip="'prévisualisation'">{{ item._id }}</td>
<td>{{item.auteur}}</td>
<td>with two columns</td>
<td v-if="item.provenance === 'en-cours'">{{ item.version }}</td>
<td v-else>{{ item.versionEnCours.numero }}</td>
<td>The table body</td>
<td>with two columns</td>
<td>with two columns</td>
......@@ -64,7 +65,7 @@
<tr v-show="!panierChoisi" v-for="item in contenusbanque" :key="item.titre">
<td class="modal titreContenu" v-on:click="chargerContenu(item, 'banque')" v-popover:tooltip="'prévisualisation'">{{ item._id }}</td>
<td>{{ item.auteur }}</td>
<td>The table body</td>
<td>{{item.versionEnCours}}</td>
<td>with two columns</td>
<td>with two columns</td>
<td>with two columns</td>
......@@ -139,32 +140,32 @@ export default {
watch: {
auteur: function () {
this.contenusDuPanier()
this.contenusDeLaBanque()
}
},
mounted() {
this.modeConsultation = false
$('#ensemble').draggable()
},
methods: {
contenusDuPanier: function(){
let that = this
// Dès que l'auteur est connu, on charge tous ses contenus
Service.getPanierAuteur(this.auteur).then(function (response) {
that.contenus = response.data
})
Service.getBanqueAuteur(this.auteur).then(function (response) {
that.contenusbanque = response.data
})
},
nouveauContenu: function () {
contenusDeLaBanque: function(){
let that = this
// Dès que l'auteur est connu, on charge tous ses contenus
Service.getPanierAuteur(this.auteur).then(function (response) {
that.contenus = response.data
})
Service.getBanqueAuteur(this.auteur).then(function (response) {
that.contenusbanque = response.data
})
}
},
mounted() {
this.modeConsultation = false
$('#ensemble').draggable()
},
methods: {
},
desactiverVolet: function () {
this.isActif = !this.isActif
},
......@@ -180,16 +181,28 @@ export default {
this.$emit("choix_variante", {variante: this.variante})
},
supprimerContenus: function () {
let that = this
if (this.panierChoisi){
for(let i = 0; i < this.checkes.length; i++) {
if(this.checkes[i][1] === "perso"){
Service.supprimerContenu(JSON.stringify(this.checkes[i][0]))
Service.supprimerContenu(JSON.stringify(this.checkes[i][0])).then(
function () {
that.contenusDuPanier()
}
)
} else if (this.checkes[i][1] === "tiers"){
//let data = {auteur: this.auteur, id_tiers:JSON.stringify(this.checkes[i][0])}
Service.supprimerTiers(this.auteur, JSON.stringify(this.checkes[i][0]))
Service.supprimerTiers(this.auteur, JSON.stringify(this.checkes[i][0])).then(
function () {
that.contenusDuPanier()
}
)
} else {
Service.supprimerEnCours(JSON.stringify(this.checkes[i][0]))
Service.supprimerEnCours(JSON.stringify(this.checkes[i][0])).then(
function () {
that.contenusDuPanier()
}
)
}
}
......@@ -197,25 +210,28 @@ export default {
else {
for(let i = 0; i < this.checkes.length; i++) {
let data = {auteur: this.auteur, id_tiers:JSON.stringify(this.checkes[i][0]) , version: this.checkes[i][1]["numero"]}
Service.creerContenuTiers(data)
Service.creerContenuTiers(data).then(
function () {
that.contenusDuPanier()
that.contenusDeLaBanque()
}
)
}
}
this.checkes = []
$(".horns").prop( "checked", false );
let that = this
Service.getPanierAuteur(this.auteur).then(function (response) {
that.contenus = response.data
that.nouveauContenu = !that.nouveauContenu
})
},
ajouterContenu: async function () {
majContenu: function () {
},
ajouterContenu: function () {
let data = {auteur: this.auteur, nom_fichier: "Contenu1", commit: ""}
Service.creerContenuPerso(data)
let that = this
Service.getPanierAuteur(this.auteur).then(function (response) {
that.contenus = response.data
that.nouveauContenu = !that.nouveauContenu
})
Service.creerContenuPerso(data).then(
function () {
that.contenusDuPanier()
}
)
},
chargerContenu: function (item, provenance){
this.modeConsultation = true;
......@@ -234,70 +250,82 @@ export default {
case "mettreFavori":
data = {auteur: this.auteur, id_tiers:JSON.stringify(event.contenu._id) , version: event.contenu.versionEnCours["numero"]}
Service.creerContenuTiers(data)
Service.getPanierAuteur(this.auteur).then(function (response) {
that.contenus = response.data
that.nouveauContenu = !that.nouveauContenu
})
Service.creerContenuTiers(data).then(
function () {
that.contenusDuPanier()
}
)
this.panierChoisi = false
break
case "modifier":
this.panierChoisi = true
if (this.contenuCliqueProvenance !== 'en-cours'){
data = {auteur: this.auteur, id_contenu: JSON.stringify(event.contenu._id), version: event.contenu.versionEnCours["numero"]}
Service.creerEnCours(data).then( function() {
Service.getPanierAuteur(that.auteur).then(function (response) {
that.contenus = response.data
that.nouveauContenu = !that.nouveauContenu
})})
Service.creerEnCours(data).then(
function () {
that.contenusDuPanier()
}
)
}
break
case "supprimer":
this.panierChoisi = true
if(this.contenuCliqueProvenance === "perso"){
Service.supprimerContenu(JSON.stringify(event.contenu._id))
Service.supprimerContenu(JSON.stringify(event.contenu._id)).then(
function () {
that.contenusDuPanier()
}
)
} else if (this.contenuCliqueProvenance === "tiers"){
Service.supprimerTiers(this.auteur, JSON.stringify(event.contenu._id))
Service.supprimerTiers(this.auteur, JSON.stringify(event.contenu._id)).then(
function () {
that.contenusDuPanier()
}
)
} else {
Service.supprimerEnCours(JSON.stringify(event.contenu._id))
Service.supprimerEnCoursParLid(JSON.stringify(event.contenu._id)).then(
function () {
that.contenusDuPanier()
}
)
}
break
case "publier":
this.panierChoisi = true
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()}
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()
}
)
}
)
break
}
},
ajouterCoche: function (idContenu, provenance) {
let existant = false
for (let i = 0; i < this.checkes.length; i++){
Service.getPanierAuteur(this.auteur).then(function (response) {
that.contenus = response.data
that.nouveauContenu = !that.nouveauContenu
})
break
case "publier":
alert("Je veux publier")
this.panierChoisi = true
data = {id_contenu: JSON.stringify(event.contenu.reference), id_contenu_en_cours: JSON.stringify(event.contenu._id), auteur_en_cours: this.auteur}
//request.args.get('id_contenu'), request.args.get('id_contenu_en_cours'),
Service.creerDemandePublication(data)
// this.$emit("publication", {document: this.contenuClique})
break
}
},
ajouterCoche: function (idContenu, provenance) {
let existant = false
for (let i = 0; i < this.checkes.length; i++){
if (this.checkes[i][0] === idContenu){
existant = true
if (this.checkes[i][0] === idContenu){
existant = true
}
}
}
if (existant){
this.checkes.splice(this.checkes.indexOf([idContenu, provenance]), 1)
}
else {
this.checkes.push([idContenu, provenance])
if (existant){
this.checkes.splice(this.checkes.indexOf([idContenu, provenance]), 1)
}
else {
this.checkes.push([idContenu, provenance])
}
}
}
}
}
</script>
......
......@@ -27,11 +27,11 @@ export default {
},
creerContenuTiers(data){
axios.patch(urlBase + "ajouterTiers", data)
return axios.patch(urlBase + "ajouterTiers", data)
},
creerContenuPerso(data){
axios.post(urlBase + "newContenu", data)
return axios.post(urlBase + "addContenu", data)
},
......@@ -39,37 +39,27 @@ export default {
return axios.post(urlBase + "newEnCours", data)
},
supprimerEnCours(idEnCours){
axios.delete(urlBase + "supprimerEnCours/" + idEnCours)
creerEnCoursRefuse(data){
return axios.post(urlBase + "newEnCoursRefuse", data)
},
supprimerEnCours(idContenu){
return axios.delete(urlBase + "supprimerEnCours/" + idContenu)
},
publierContenu(data){
axios.post(urlBase + "demandePublication/" , data)
supprimerEnCoursParLid(idEnCours){
return axios.delete(urlBase + "supprimerEnCoursParId/" + idEnCours)
},
supprimerContenu(idContenu){
axios.delete(urlBase + "deletePerso/" + idContenu)
return axios.delete(urlBase + "deletePerso/" + idContenu)
},
supprimerTiers(auteur, id_tiers){
axios.delete(urlBase + "deleteTiers?auteur=" + auteur + "&id_tiers=" + id_tiers)
return axios.delete(urlBase + "deleteTiers?auteur=" + auteur + "&id_tiers=" + id_tiers)
},
getPublications(auteur, emise){
return axios.get(urlBase + "get_demandes_pub/" + auteur + "/" + emise)
},
gererMajRecue(){
},
gererMajProposee(){
},
majCOntenu(){
majContenu(data){
return axios.patch(urlBase + "majContenu", data)
},
......@@ -84,7 +74,23 @@ export default {
},
creerDemandePublication(data) {
axios.post(urlBase + "demandePublication" , data)
return axios.post(urlBase + "demandePublication" , data)
},
supprimerDemandePublication(idDemandePublication){
return axios.delete(urlBase + "demandePublication/" + idDemandePublication)
},
creerNouveauContenu(data){
return axios.post(urlBase + "newContenu", data)
},
gererDemandePublication(data){
return axios.patch(urlBase + "gererDemandePub", data)
},
isMajTiersDisponible(auteur){
return axios.get(urlBase + "isMajTiersDisponible/" + auteur )
},
listeMajTiers(auteur){
return axios.get(urlBase + "listeMajTiers/" + auteur )
}
}
\ 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