Newer
Older
Sébastien DA ROCHA
committed
<template>
<div v-frag>
<div class="fourteen wide column">
<h1>Mon compte</h1>
</div>
<div class="row">
<div class="five wide column">
<h4 class="ui horizontal divider header">
PROFIL
</h4>
Sébastien DA ROCHA
committed
<div class="ui divided list">
<div class="item">
<div class="right floated content">
<div class="description">
<span v-if="user.username">{{ user.username }} </span>
</div>
</div>
<div class="content">
Nom d'utilisateur
</div>
Sébastien DA ROCHA
committed
</div>
<div class="item">
<div class="right floated content">
<div class="description">
{{ userFullname }}
</div>
</div>
<div class="content">
Nom complet
</div>
Sébastien DA ROCHA
committed
</div>
<div class="item">
<div class="right floated content">
<div class="description">
{{ user.email }}
</div>
</div>
<div class="content">
Adresse e-mail
</div>
Sébastien DA ROCHA
committed
</div>
<div class="item">
<div class="right floated content">
<div class="description">
{{ user.is_superuser ? "Oui" : "Non" }}
</div>
</div>
<div class="content">
Administrateur
</div>
Sébastien DA ROCHA
committed
</div>
</div>
</div>
<div class="nine wide column">
<h4 class="ui horizontal divider header">
MES PROJETS
</h4>
Sébastien DA ROCHA
committed
<div class="ui divided items">
<div
v-for="project in projects"
:key="project.slug"
class="item"
>
Sébastien DA ROCHA
committed
<!-- {% if permissions|lookup:project.slug %} -->
<div
v-if="user_permissions[project.slug].can_view_project"
v-frag
>
<div class="ui tiny image">
<img
v-if="project.thumbnail"
class="ui small image"
:src="
project.thumbnail.includes('default')
? require('@/assets/img/default.png')
: DJANGO_BASE_URL + project.thumbnail + refreshId()
"
height="200"
Sébastien DA ROCHA
committed
</div>
<div class="middle aligned content">
<router-link
:to="{
name: 'project_detail',
params: { slug: project.slug },
}"
class="header"
Sébastien DA ROCHA
committed
>
<div class="description">
<p>{{ project.description }}</p>
</div>
<div class="meta">
<span
class="right floated"
>Projet {{ project.moderation ? "" : "non" }} modéré</span>
<span>Niveau d'autorisation requis :
{{ project.access_level_pub_feature }}</span><br>
<span>
Mon niveau d'autorisation :
<span v-if="USER_LEVEL_PROJECTS && project">{{
USER_LEVEL_PROJECTS[project.slug]
}}</span>
<span v-if="user && user.is_administrator">{{
"+ Gestionnaire métier"
}}</span>
</span>
</div>
<div class="meta">
<span
class="right floated"
:data-tooltip="`Projet créé le ${project.created_on}`"
>
<i class="calendar icon" /> {{ project.created_on }}
{{ project.nb_contributors }} <i class="user icon" />
{{ project.nb_published_features }} <i
class="map marker icon"
</span>
<span data-tooltip="Commentaires">
{{ project.nb_published_features_comments }} <i
class="comment icon"
Sébastien DA ROCHA
committed
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="fourteen wide column">
<div class="ui three stackable cards">
<div class="red card">
<div class="content">
<div class="center aligned header">
Mes dernières notifications reçues
</div>
<div class="center aligned description">
<div class="ui relaxed list">
<div
v-for="item in events"
:key="item.id"
class="item"
>
Sébastien DA ROCHA
committed
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
<div class="content">
<div v-if="item.event_type === 'create'">
<a
v-if="item.object_type === 'feature'"
:href="item.related_feature.feature_url"
>
Signalement créé
</a>
<a
v-else-if="item.object_type === 'comment'"
:href="item.related_feature.feature_url"
>
Commentaire créé
</a>
<a
v-else-if="item.object_type === 'attachment'"
:href="item.related_feature.feature_url"
>
Pièce jointe ajoutée
</a>
<a
v-else-if="item.object_type === 'project'"
:href="item.project_url"
>
Projet créé
</a>
</div>
<div v-else-if="item.event_type === 'update'">
<a
v-if="item.object_type === 'feature'"
:href="item.related_feature.project_url"
>
Signalement mis à jour
</a>
<a
v-else-if="item.object_type === 'project'"
:href="item.project_url"
Sébastien DA ROCHA
committed
</a>
</div>
<div v-else-if="item.event_type === 'delete'">
<span v-if="item.object_type === 'feature'">
Signalement supprimé({{ item.data.feature_title }})
</span>
<i v-else>Événement inconnu</i>
</div>
<div class="description">
Sébastien DA ROCHA
committed
<span v-if="user.is_authenticated">
, par {{ item.display_user }}
</span>
Sébastien DA ROCHA
committed
</div>
</div>
</div>
<i
v-if="!events || events.length === 0"
>Aucune notification pour le moment.</i>
Sébastien DA ROCHA
committed
</div>
</div>
</div>
</div>
<div class="orange card">
<div class="content">
<div class="center aligned header">
Mes derniers signalements
</div>
Sébastien DA ROCHA
committed
<div class="center aligned description">
<div class="ui relaxed list">
<div
v-for="item in features"
:key="item.id"
class="item"
>
Sébastien DA ROCHA
committed
<div class="content">
<div>
<a
v-if="item.related_feature"
:href="item.related_feature.feature_url"
Sébastien DA ROCHA
committed
<span v-else>
{{ item.data.feature_title }} (supprimé)
</span>
</div>
<div class="description">
Sébastien DA ROCHA
committed
<span v-if="user.is_authenticated">
, par {{ item.display_user }}
</span>
Sébastien DA ROCHA
committed
</div>
</div>
</div>
<i
v-if="!features || features.length === 0"
>Aucun signalement pour le moment.</i>
Sébastien DA ROCHA
committed
</div>
</div>
</div>
</div>
<div class="yellow card">
<div class="content">
<div class="center aligned header">
Mes derniers commentaires
</div>
Sébastien DA ROCHA
committed
<div class="center aligned description">
<div class="ui relaxed list">
<div
v-for="item in comments"
:key="item.id"
class="item"
>
Sébastien DA ROCHA
committed
<div class="content">
<div>
<a
:href="item.related_feature.feature_url"
>"{{ item.related_comment.comment }}"</a>
Sébastien DA ROCHA
committed
</div>
<div class="description">
Sébastien DA ROCHA
committed
<span v-if="user.is_authenticated">
, par {{ item.display_user }}
</span>
Sébastien DA ROCHA
committed
</div>
</div>
</div>
<i
v-if="!comments || comments.length === 0"
>Aucun commentaire pour le moment.</i>
Sébastien DA ROCHA
committed
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import frag from 'vue-frag';
import { mapState } from 'vuex';
Sébastien DA ROCHA
committed
export default {
Sébastien DA ROCHA
committed
directives: {
frag,
},
data() {
return {
events: [],
features: [],
comments: [],
};
},
computed: {
// todo : filter projects to user
...mapState([
"user",
"USER_LEVEL_PROJECTS",
"user_permissions",
]),
DJANGO_BASE_URL: function () {
return this.$store.state.configuration.VUE_APP_DJANGO_BASE;
},
Sébastien DA ROCHA
committed
userFullname: function () {
if (this.user.first_name || this.user.last_name)
return this.user.first_name + ' ' + this.user.last_name;
Sébastien DA ROCHA
committed
return null;
},
},
Sébastien DA ROCHA
committed
methods: {
refreshId() {
Sébastien DA ROCHA
committed
},
setEvents(data){
this.events = data.events;
this.features = data.features;
this.comments = data.comments;
},
getEvents(){
this.$store
Sébastien DA ROCHA
committed
};
</script>