delete and edit functionnality
11
pom.xml
|
@ -1,5 +1,4 @@
|
||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
<groupId>fr.lirmm</groupId>
|
<groupId>fr.lirmm</groupId>
|
||||||
|
@ -225,6 +224,14 @@
|
||||||
<artifactId>jsoup</artifactId>
|
<artifactId>jsoup</artifactId>
|
||||||
<version>1.13.1</version>
|
<version>1.13.1</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.commons</groupId>
|
||||||
|
<artifactId>commons-digester3</artifactId>
|
||||||
|
<version>3.2</version>
|
||||||
|
<classifier>with-deps</classifier>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
|
|
Before Width: | Height: | Size: 1.5 KiB |
BIN
src/main/webapp/assets/img/calendar.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
src/main/webapp/assets/img/cancel.png
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
src/main/webapp/assets/img/delete.png
Normal file
After Width: | Height: | Size: 542 B |
BIN
src/main/webapp/assets/img/edit.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 745 B |
Before Width: | Height: | Size: 720 B |
|
@ -3,33 +3,100 @@
|
||||||
<base-layout id="testfunc">
|
<base-layout id="testfunc">
|
||||||
<template v-slot:title>
|
<template v-slot:title>
|
||||||
<h1>Agenda</h1>
|
<h1>Agenda</h1>
|
||||||
|
<div v-if="user.is('ADMIN') || user.is('SUPERADMIN')">
|
||||||
|
<button
|
||||||
|
class="edit-btn space-top"
|
||||||
|
v-if="!isEditMode"
|
||||||
|
@click="
|
||||||
|
() => {
|
||||||
|
isEditMode = true;
|
||||||
|
copyAgendaInfo();
|
||||||
|
}
|
||||||
|
"
|
||||||
|
title="Modifier l'agenda"
|
||||||
|
>
|
||||||
|
<img alt="edit" src="assets/img/edit.png" />
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
class="edit-btn space-top"
|
||||||
|
v-if="isEditMode"
|
||||||
|
@click="
|
||||||
|
() => {
|
||||||
|
isEditMode = false;
|
||||||
|
}
|
||||||
|
"
|
||||||
|
title="Annuler la modification"
|
||||||
|
>
|
||||||
|
<img alt="edit" src="assets/img/cancel.png" />
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
title="Supprimer l'agenda"
|
||||||
|
class="delete-btn space-top"
|
||||||
|
v-if="!isEditMode"
|
||||||
|
@click="
|
||||||
|
() => {
|
||||||
|
deleteAgenda();
|
||||||
|
}
|
||||||
|
"
|
||||||
|
>
|
||||||
|
<img alt="edit" src="assets/img/delete.png" />
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<div class="space-top block">
|
<div class="space-top block">
|
||||||
<label>
|
<label>
|
||||||
<span>Titre</span>
|
<span>Titre</span>
|
||||||
</label>
|
</label>
|
||||||
<span class="block">{{ program.title }}</span>
|
<span v-if="!isEditMode" class="block">{{ program.title }}</span>
|
||||||
|
<input
|
||||||
|
v-if="isEditMode"
|
||||||
|
class="block"
|
||||||
|
type="text"
|
||||||
|
v-model="editionProgram.title"
|
||||||
|
/>
|
||||||
|
|
||||||
<label class="block space-top">
|
<label class="block space-top">
|
||||||
<span>Description</span>
|
<span>Description</span>
|
||||||
</label>
|
</label>
|
||||||
<span class="block">{{ program.description }}</span>
|
<span v-if="!isEditMode" class="block">{{ program.description }}</span>
|
||||||
|
<textarea
|
||||||
|
v-if="isEditMode"
|
||||||
|
class="block"
|
||||||
|
v-model="editionProgram.description"
|
||||||
|
></textarea>
|
||||||
|
|
||||||
<label class="block space-top">
|
<label class="block space-top">
|
||||||
<span class="block">Date</span>
|
<span class="block">Date</span>
|
||||||
|
<v-date-picker
|
||||||
|
v-if="isEditMode"
|
||||||
|
v-model="editionProgram.date"
|
||||||
|
mode="dateTime"
|
||||||
|
:timezone="timezone"
|
||||||
|
:min-date="new Date()"
|
||||||
|
color="red"
|
||||||
|
/>
|
||||||
</label>
|
</label>
|
||||||
<span class="block">{{
|
<span v-if="!isEditMode" class="block">{{
|
||||||
new Date(program.date).toLocaleString()
|
new Date(program.date).toLocaleString()
|
||||||
}}</span>
|
}}</span>
|
||||||
|
<span v-if="isEditMode" class="block">{{
|
||||||
|
editionProgram.date.toISOString()
|
||||||
|
}}</span>
|
||||||
|
|
||||||
<label class="block space-top">
|
<label class="block space-top">
|
||||||
<span>URL</span>
|
<span>URL</span>
|
||||||
</label>
|
</label>
|
||||||
<span class="block"
|
<span v-if="!isEditMode" class="block">
|
||||||
><a :href="program.url" target="_blank">{{ program.url }}</a></span
|
<a :href="program.url" target="_blank">{{ program.url }}</a>
|
||||||
>
|
</span>
|
||||||
|
<input v-if="isEditMode" type="text" v-model="editionProgram.url" />
|
||||||
</div>
|
</div>
|
||||||
<div class="space-top"></div>
|
<div class="space-top"></div>
|
||||||
|
<div v-if="isEditMode" class="space-top">
|
||||||
|
<button id="modifySondage" @click="()=>{modifyAgenda()}">
|
||||||
|
Modifier l' agenda
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
</base-layout>
|
</base-layout>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
@ -48,6 +115,51 @@
|
||||||
.block {
|
.block {
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#modifySondage {
|
||||||
|
background-color: #b84000;
|
||||||
|
padding: 1rem;
|
||||||
|
border-radius: 0.5rem;
|
||||||
|
color: white;
|
||||||
|
border-color: transparent;
|
||||||
|
box-shadow: 0.1rem 0.1rem 1rem #b84000;
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.edit-btn {
|
||||||
|
background-color: #808080;
|
||||||
|
padding: 1rem;
|
||||||
|
border-radius: 0.5rem;
|
||||||
|
color: white;
|
||||||
|
border-color: transparent;
|
||||||
|
box-shadow: 0.1rem 0.1rem 1rem #808080;
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
cursor: pointer;
|
||||||
|
width: 50px;
|
||||||
|
height: 50px;
|
||||||
|
}
|
||||||
|
.delete-btn {
|
||||||
|
background-color: #dd2034;
|
||||||
|
padding: 1rem;
|
||||||
|
border-radius: 0.5rem;
|
||||||
|
color: white;
|
||||||
|
border-color: transparent;
|
||||||
|
box-shadow: 0.1rem 0.1rem 1rem #dd2034;
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
cursor: pointer;
|
||||||
|
width: 50px;
|
||||||
|
height: 50px;
|
||||||
|
}
|
||||||
|
.cancel-btn {
|
||||||
|
background-color: #b84000;
|
||||||
|
padding: 1rem;
|
||||||
|
border-radius: 0.5rem;
|
||||||
|
color: white;
|
||||||
|
border-color: transparent;
|
||||||
|
box-shadow: 0.1rem 0.1rem 1rem #b84000;
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
@ -57,11 +169,15 @@ const baseUrl =
|
||||||
module.exports = {
|
module.exports = {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
isEditMode: false,
|
||||||
program: false,
|
program: false,
|
||||||
|
editionProgram: false,
|
||||||
|
user: false,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
this.fetchProgram();
|
this.fetchProgram();
|
||||||
|
this.getCurrentUser();
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
fetchProgram: async function () {
|
fetchProgram: async function () {
|
||||||
|
@ -70,10 +186,54 @@ module.exports = {
|
||||||
`${baseUrl}/ws/agenda/calendars/${this.$route.query.id}`
|
`${baseUrl}/ws/agenda/calendars/${this.$route.query.id}`
|
||||||
);
|
);
|
||||||
this.program = program.data;
|
this.program = program.data;
|
||||||
|
this.editionProgram = { ...program.data };
|
||||||
} catch (expetion) {
|
} catch (expetion) {
|
||||||
console.error(expetion);
|
console.error(expetion);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
copyAgendaInfo() {
|
||||||
|
this.editionProgram = {
|
||||||
|
...this.program,
|
||||||
|
date: new Date(this.program.date),
|
||||||
|
};
|
||||||
|
},
|
||||||
|
getCurrentUser: async function () {
|
||||||
|
ArenService.Users.getLoged({
|
||||||
|
onSuccess: (logedUser) => {
|
||||||
|
this.user = logedUser;
|
||||||
|
|
||||||
|
ArenService.NotificationListener.listen({
|
||||||
|
onMessage: (notif) => {
|
||||||
|
this.user.notifications.push(notif);
|
||||||
|
let message = this.$t(
|
||||||
|
"notification." + notif.content.message,
|
||||||
|
notif.content.details
|
||||||
|
);
|
||||||
|
this.$toast(message);
|
||||||
|
new BrowserNotification("AREN", {
|
||||||
|
body: message,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
});
|
||||||
|
},
|
||||||
|
onError: (e) => {
|
||||||
|
this.logout();
|
||||||
|
},
|
||||||
|
});
|
||||||
|
},
|
||||||
|
modifyAgenda: function () {
|
||||||
|
new BrowserNotification("En cours de construction ....", {
|
||||||
|
body: "Modification de l'agenda",
|
||||||
|
});
|
||||||
|
},
|
||||||
|
deleteAgenda: async function () {
|
||||||
|
try {
|
||||||
|
let _= await axios.delete(`${baseUrl}/ws/agenda/calendars/${this.$route.query.id}`);
|
||||||
|
location.href = baseUrl;
|
||||||
|
} catch (error) {
|
||||||
|
console.log(error)
|
||||||
|
}
|
||||||
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
|
@ -56,7 +56,7 @@
|
||||||
<img
|
<img
|
||||||
alt="image"
|
alt="image"
|
||||||
class="category-picture"
|
class="category-picture"
|
||||||
v-bind:src="program.img"
|
src='assets/img/calendar.png'
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
|
|
|
@ -54,7 +54,7 @@
|
||||||
@click="vote(subtheme, `FOR`)"
|
@click="vote(subtheme, `FOR`)"
|
||||||
v-if="checkVoteAvalaibility(subtheme.id)"
|
v-if="checkVoteAvalaibility(subtheme.id)"
|
||||||
>
|
>
|
||||||
<span>Intervenir | {{ subtheme.for }}</span>
|
<span>Participation certaine | {{ subtheme.for }}</span>
|
||||||
</button>
|
</button>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -66,7 +66,7 @@
|
||||||
v-if="checkVoteAvalaibility(subtheme.id)"
|
v-if="checkVoteAvalaibility(subtheme.id)"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
>Intervenir selon son évolution | {{ subtheme.neutral }}</span
|
>Participation possible | {{ subtheme.neutral }}</span
|
||||||
>
|
>
|
||||||
</button>
|
</button>
|
||||||
</td>
|
</td>
|
||||||
|
@ -78,7 +78,7 @@
|
||||||
@click="vote(subtheme, `AGAINST`)"
|
@click="vote(subtheme, `AGAINST`)"
|
||||||
v-if="checkVoteAvalaibility(subtheme.id)"
|
v-if="checkVoteAvalaibility(subtheme.id)"
|
||||||
>
|
>
|
||||||
<span>Observer | {{ subtheme.against }}</span>
|
<span>Simple observateur | {{ subtheme.against }}</span>
|
||||||
</button>
|
</button>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -88,7 +88,7 @@
|
||||||
:key="subtheme.id"
|
:key="subtheme.id"
|
||||||
class="text-centered"
|
class="text-centered"
|
||||||
>
|
>
|
||||||
<span class="nb-total-vote">{{ subtheme.for }}</span>
|
<span class="nb-total-vote">{{ subtheme.for }} participant(s) </span>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|