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">
v-for="project in availableProjects"
:key="project.slug"
class="item"
>
<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
<div class="content">
<div v-if="item.event_type === 'create'">
<a
v-if="item.object_type === 'feature'"
:href="modifyUrl(item.related_feature.feature_url)"
Sébastien DA ROCHA
committed
>
Sébastien DA ROCHA
committed
</a>
<a
v-else-if="item.object_type === 'comment'"
:href="modifyUrl(item.related_feature.feature_url)"
Sébastien DA ROCHA
committed
>
Commentaire créé
</a>
<a
v-else-if="item.object_type === 'attachment'"
:href="modifyUrl(item.related_feature.feature_url)"
Sébastien DA ROCHA
committed
>
Pièce jointe ajoutée
</a>
<a
v-else-if="item.object_type === 'project'"
:href="modifyUrl(item.project_url)"
Sébastien DA ROCHA
committed
>
Projet créé
</a>
</div>
<div v-else-if="item.event_type === 'update'">
<a
v-if="item.object_type === 'feature'"
:href="modifyUrl(item.related_feature.project_url)"
Sébastien DA ROCHA
committed
>
Signalement mis à jour
</a>
<a
v-else-if="item.object_type === 'project'"
:href="modifyUrl(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="modifyUrl(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>
:href="modifyUrl(item.related_feature.feature_url)"
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
DJANGO_BASE_URL() {
return this.$store.state.configuration.VUE_APP_DJANGO_BASE;
},
userFullname() {
Sébastien DA ROCHA
committed
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;
},
availableProjects() {
console.log(this.$route.path);
if (this.$route.path.includes('projet-partage')) {
return this.projects.filter((el) => el.slug === this.$route.params.slug);
}
return this.projects;
}
Sébastien DA ROCHA
committed
},
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;
},
},
modifyUrl(url) {
if (this.$route.path.includes('projet-partage')) {
return url.replace('projet', 'projet-partage');
}
return url;
Sébastien DA ROCHA
committed
};
</script>