Skip to content
Snippets Groups Projects
Commit 0d299c0c authored by Sébastien DA ROCHA's avatar Sébastien DA ROCHA :bicyclist:
Browse files

Merge branch 'evol/redmine-ticket-11083-full-responsive-design' into 'develop'

Evol/redmine ticket 11083 full responsive design

See merge request !38
parents b901b8ed 33fabe99
No related branches found
No related tags found
1 merge request!38Evol/redmine ticket 11083 full responsive design
<template> <template>
<div v-frag> <div v-frag>
<header class="header-menu"> <header class="header-menu">
<div class="ui container"> <div class="menu container">
<div class="ui inverted icon menu"> <div class="ui inverted icon menu">
<router-link to="/" class="header item"> <router-link to="/" class="header item">
<img <img
class="ui mini right spaced image" class="ui mini right spaced image"
src="@/assets/img/logo-neogeo-circle.png" src="@/assets/img/logo-neogeo-circle.png"
/> />
<!-- :src="LOGO_PATH" --> <span class="desktop">
{{ getApplicationName() }} {{ APPLICATION_NAME }}
</span>
</router-link> </router-link>
<div <div
id="menu-dropdown" id="menu-dropdown"
:class="['ui dropdown item', { 'active visible': menuIsOpen }]" :class="[
v-if="project" 'ui dropdown item floated right',
{ 'active visible': menuIsOpen },
]"
@click="menuIsOpen = !menuIsOpen" @click="menuIsOpen = !menuIsOpen"
> >
Projet : {{ project.title }} <span v-if="project"> Projet : {{ project.title }} </span>
<i class="dropdown icon"></i> <i class="dropdown icon"></i>
<div <div
:class="['menu', { 'visible transition': menuIsOpen }]" :class="['menu', { 'visible transition': menuIsOpen }]"
style="z-index: 401" style="z-index: 401"
> >
<router-link <router-link
v-if="project"
:to="{ :to="{
name: 'project_detail', name: 'project_detail',
params: { slug: project.slug }, params: { slug: project.slug },
...@@ -34,6 +38,7 @@ ...@@ -34,6 +38,7 @@
<i class="home icon"></i>Accueil <i class="home icon"></i>Accueil
</router-link> </router-link>
<router-link <router-link
v-if="project"
:to="{ :to="{
name: 'liste-signalements', name: 'liste-signalements',
params: { slug: project.slug }, params: { slug: project.slug },
...@@ -44,7 +49,7 @@ ...@@ -44,7 +49,7 @@
</router-link> </router-link>
<router-link <router-link
v-if="user.is_administrator" v-if="project && user.is_administrator"
:to="{ :to="{
name: 'project_mapping', name: 'project_mapping',
params: { slug: project.slug }, params: { slug: project.slug },
...@@ -54,7 +59,7 @@ ...@@ -54,7 +59,7 @@
<i class="map icon"></i>Fonds cartographiques <i class="map icon"></i>Fonds cartographiques
</router-link> </router-link>
<router-link <router-link
v-if="user.is_administrator" v-if="project && user.is_administrator"
:to="{ :to="{
name: 'project_members', name: 'project_members',
params: { slug: project.slug }, params: { slug: project.slug },
...@@ -63,30 +68,28 @@ ...@@ -63,30 +68,28 @@
> >
<i class="users icon"></i>Membres <i class="users icon"></i>Membres
</router-link> </router-link>
</div>
</div>
<div class="right menu"> <router-link v-if="user" to="/my_account/" class="item">
<router-link v-if="user" to="/my_account/" class="item"> {{ userFullname || user.username || "Utilisateur inconnu" }}
{{ userFullname || user.username || "Utilisateur inconnu" }} </router-link>
</router-link> <div
<div v-if="user && user.is_administrator"
v-if="user && user.is_administrator" class="item ui label vertical no-hover"
class="item ui label vertical" >
> <span v-if="USER_LEVEL_PROJECTS && project">
<span v-if="USER_LEVEL_PROJECTS && project"> {{ USER_LEVEL_PROJECTS[project.slug] }}</span
{{ USER_LEVEL_PROJECTS[project.slug] }}</span >
<br />
<span v-if="user.is_administrator"> Gestionnaire métier </span>
</div>
<!-- // todo : find out SSO_SETTED in django -->
<a v-if="user && !SSO_SETTED" @click="logout" class="item"
><i class="ui logout icon"></i>
</a>
<router-link v-else-if="!user" to="/connexion/" class="item"
>Se Connecter</router-link
> >
<br />
<span v-if="user.is_administrator"> Gestionnaire métier </span>
</div> </div>
<!-- // todo : find out SSO_SETTED in django -->
<a v-if="user && !SSO_SETTED" @click="logout" class="item"
><i class="ui logout icon"></i>
</a>
<router-link v-else-if="!user" to="/connexion/" class="item"
>Se Connecter</router-link
>
</div> </div>
</div> </div>
</div> </div>
...@@ -143,6 +146,7 @@ export default { ...@@ -143,6 +146,7 @@ export default {
data() { data() {
return { return {
menuIsOpen: false, menuIsOpen: false,
rightMenuIsOpen: true,
messages: null, messages: null,
}; };
}, },
...@@ -156,8 +160,9 @@ export default { ...@@ -156,8 +160,9 @@ export default {
"configuration", "configuration",
]), ]),
...mapGetters(["project"]), ...mapGetters(["project"]),
//LOGO_PATH: () => require(`${configuration.VUE_APP_LOGO_PATH}`), APPLICATION_NAME: function () {
//APPLICATION_NAME: () => this.configuration.VUE_APP_APPLICATION_NAME, return this.configuration.VUE_APP_APPLICATION_NAME;
},
PACKAGE_VERSION: () => process.env.PACKAGE_VERSION || "0", PACKAGE_VERSION: () => process.env.PACKAGE_VERSION || "0",
userFullname: function () { userFullname: function () {
if (this.user.first_name || this.user.last_name) if (this.user.first_name || this.user.last_name)
...@@ -165,17 +170,17 @@ export default { ...@@ -165,17 +170,17 @@ export default {
return null; return null;
}, },
}, },
methods: { methods: {
logout() { logout() {
this.$store.dispatch("LOGOUT"); this.$store.dispatch("LOGOUT");
}, },
getApplicationName() {
return this.configuration.VUE_APP_APPLICATION_NAME;
},
clickOutsideMenu(e) { clickOutsideMenu(e) {
if (!e.target.closest("#menu-dropdown")) this.menuIsOpen = false; if (!e.target.closest("#menu-dropdown")) this.menuIsOpen = false;
}, },
}, },
created() { created() {
window.addEventListener("mousedown", this.clickOutsideMenu); window.addEventListener("mousedown", this.clickOutsideMenu);
}, },
...@@ -190,10 +195,6 @@ export default { ...@@ -190,10 +195,6 @@ export default {
@import "./assets/styles/base.css"; @import "./assets/styles/base.css";
@import "./assets/resources/semantic-ui-2.4.2/semantic.min.css"; @import "./assets/resources/semantic-ui-2.4.2/semantic.min.css";
.header-menu {
min-width: 560px;
}
body { body {
height: 100vh; height: 100vh;
margin: 0; margin: 0;
...@@ -220,5 +221,30 @@ footer { ...@@ -220,5 +221,30 @@ footer {
flex-direction: column; flex-direction: column;
justify-content: center; justify-content: center;
} }
@media screen and (min-width: 560px) {
.header-menu {
min-width: 560px;
}
.menu.container {
width: auto !important;
margin-left: 1em !important;
margin-right: 1em !important;
}
}
@media screen and (max-width: 560px) {
.desktop {
display: none !important;
}
div.menu {
width: 100vw;
}
}
.ui.menu .ui.dropdown .menu > .item.no-hover:hover {
cursor: auto !important;
background: white !important;
}
</style> </style>
\ No newline at end of file
...@@ -14,27 +14,29 @@ ...@@ -14,27 +14,29 @@
<h4 id="les_projets" class="ui horizontal divider header">PROJETS</h4> <h4 id="les_projets" class="ui horizontal divider header">PROJETS</h4>
<!-- //todo : v-if can_create_project --> <!-- //todo : v-if can_create_project -->
<router-link <div class="flex">
v-if="user" <router-link
:to="{ name: 'project_create', params: { action: 'create' } }" v-if="user"
class="ui green basic button" :to="{ name: 'project_create', params: { action: 'create' } }"
> class="ui green basic button"
<i class="plus icon"></i> Créer un nouveau projet >
</router-link> <i class="plus icon"></i> Créer un nouveau projet
<!-- //todo : v-if can_create_project --> </router-link>
<router-link <!-- //todo : v-if can_create_project -->
v-if="user" <router-link
:to="{ v-if="user"
name: 'project_type_list', :to="{
}" name: 'project_type_list',
class="ui blue basic button right floated" }"
> class="ui blue basic button"
<i class="copy icon"></i> Accéder à la liste des modèles de projets >
</router-link> <i class="copy icon"></i> Accéder à la liste des modèles de projets
</router-link>
</div>
<div v-if="projects" class="ui divided items"> <div v-if="projects" class="ui divided items">
<div v-for="project in projects" class="item" :key="project.slug"> <div v-for="project in projects" class="item" :key="project.slug">
<div class="ui tiny image"> <div class="ui tiny image">
<!-- // ? récupérer l'image sur serveur front (et non back) ? -->
<img <img
:src=" :src="
!project.thumbnail !project.thumbnail
...@@ -108,19 +110,17 @@ ...@@ -108,19 +110,17 @@
<script> <script>
import { mapState } from "vuex"; import { mapState } from "vuex";
export default { export default {
name: "Index", name: "Index",
computed: { computed: {
...mapState(["projects", "user", "USER_LEVEL_PROJECTS"]), ...mapState(["projects", "user", "USER_LEVEL_PROJECTS"]),
//LOGO_PATH: () => require(configuration.VUE_APP_LOGO_PATH),
APPLICATION_NAME: function () { APPLICATION_NAME: function () {
return this.$store.state.configuration.VUE_APP_APPLICATION_NAME; return this.$store.state.configuration.VUE_APP_APPLICATION_NAME;
}, },
APPLICATION_ABSTRACT:function () { APPLICATION_ABSTRACT: function () {
return this.$store.state.configuration.VUE_APP_APPLICATION_ABSTRACT; return this.$store.state.configuration.VUE_APP_APPLICATION_ABSTRACT;
}, },
DJANGO_BASE_URL:function () { DJANGO_BASE_URL: function () {
return this.$store.state.configuration.VUE_APP_DJANGO_BASE; return this.$store.state.configuration.VUE_APP_DJANGO_BASE;
}, },
}, },
...@@ -138,4 +138,11 @@ export default { ...@@ -138,4 +138,11 @@ export default {
} }
}, },
}; };
</script> </script>
\ No newline at end of file
<style scoped>
.flex {
display: flex;
justify-content: space-between;
}
</style>
\ No newline at end of file
<template> <template>
<!-- <div>
<h1>{{ feature_type_slug }}</h1>
{{ feature_type }}
</div> -->
<div v-if="structure" class="row"> <div v-if="structure" class="row">
<div class="five wide column"> <div class="five wide column">
<div class="ui attached secondary segment"> <div class="ui attached secondary segment">
...@@ -166,7 +162,7 @@ ...@@ -166,7 +162,7 @@
<router-link <router-link
v-if="project" v-if="project"
:to="{ name: 'liste-signalements', params: { slug: project.slug } }" :to="{ name: 'liste-signalements', params: { slug: project.slug } }"
class="ui right labeled icon button" class="ui right labeled icon button margin-25"
> >
<i class="right arrow icon"></i> <i class="right arrow icon"></i>
Voir tous les signalements Voir tous les signalements
...@@ -177,7 +173,7 @@ ...@@ -177,7 +173,7 @@
name: 'ajouter-signalement', name: 'ajouter-signalement',
params: { slug_type_signal: structure.slug }, params: { slug_type_signal: structure.slug },
}" }"
class="ui icon button button-hover-green" class="ui icon button button-hover-green margin-25"
> >
Ajouter un signalement Ajouter un signalement
</router-link> </router-link>
...@@ -211,7 +207,6 @@ export default { ...@@ -211,7 +207,6 @@ export default {
...mapState("feature", ["features"]), ...mapState("feature", ["features"]),
...mapState("feature_type", ["feature_types", "importFeatureTypeData"]), ...mapState("feature_type", ["feature_types", "importFeatureTypeData"]),
structure: function () { structure: function () {
// * je ne sais pas pourquoi ça s'appelle structure
if (this.feature_types) { if (this.feature_types) {
return this.feature_types.find( return this.feature_types.find(
(el) => el.slug === this.$route.params.feature_type_slug (el) => el.slug === this.$route.params.feature_type_slug
...@@ -269,4 +264,10 @@ export default { ...@@ -269,4 +264,10 @@ export default {
); );
}, },
}; };
</script> </script>
\ No newline at end of file
<style scoped>
.margin-25 {
margin: 0 0.25em 0.25em 0 !important;
}
</style>
\ No newline at end of file
...@@ -78,7 +78,7 @@ ...@@ -78,7 +78,7 @@
v-model="form.title_optional.value" v-model="form.title_optional.value"
type="checkbox" type="checkbox"
/> />
<label>{{form.title_optional.label}}</label> <label>{{ form.title_optional.label }}</label>
</div> </div>
</div> </div>
...@@ -136,7 +136,7 @@ ...@@ -136,7 +136,7 @@
<div class="ui divider"></div> <div class="ui divider"></div>
<button <button
class="ui teal icon button" class="ui teal icon button margin-25"
type="button" type="button"
@click="sendFeatureType" @click="sendFeatureType"
> >
...@@ -146,7 +146,7 @@ ...@@ -146,7 +146,7 @@
</button> </button>
<button <button
v-if="geojson" v-if="geojson"
class="ui teal icon button" class="ui teal icon button margin-25"
type="button" type="button"
@click="postFeatureTypeThenFeatures" @click="postFeatureTypeThenFeatures"
> >
...@@ -564,6 +564,10 @@ export default { ...@@ -564,6 +564,10 @@ export default {
margin-right: 0.5em; margin-right: 0.5em;
} }
.margin-25 {
margin: 0 0.25em 0.25em 0 !important;
}
/* // * probleme avec le style récupéré, n'est jamais identique !???? */ /* // * probleme avec le style récupéré, n'est jamais identique !???? */
#formsets { #formsets {
margin-top: 1em !important; margin-top: 1em !important;
......
...@@ -181,7 +181,6 @@ ...@@ -181,7 +181,6 @@
> >
<i class="inverted grey pencil alternate icon"></i> <i class="inverted grey pencil alternate icon"></i>
</router-link> </router-link>
<!-- {% endif %} -->
</div> </div>
</div> </div>
<div v-if="feature_types.length === 0"> <div v-if="feature_types.length === 0">
...@@ -202,25 +201,33 @@ ...@@ -202,25 +201,33 @@
</router-link> </router-link>
</div> </div>
<div class="nouveau-type-signalement"> <div class="nouveau-type-signalement">
<div class="ui compact basic button button-hover-green"> <a
<div> class="
<label class="ui" for="json_file"> ui
<i class="ui plus icon"></i> compact
<span class="label" basic
>Créer un nouveau type de signalement à partir d'un button button-hover-green
GeoJSON</span flex
> align-center
</label> text-left
<input "
type="file" >
accept="application/json, .json, .geojson" <i class="ui plus icon"></i>
style="display: none" <label class="ui" for="json_file">
name="json_file" <span class="label"
id="json_file" >Créer un nouveau type de signalement à partir d'un
@change="onFileChange" GeoJSON</span
/> >
</div> </label>
</div> <input
type="file"
accept="application/json, .json, .geojson"
style="display: none"
name="json_file"
id="json_file"
@change="onFileChange"
/>
</a>
<br /> <br />
<div id="button-import" v-if="fileToImport.size > 0"> <div id="button-import" v-if="fileToImport.size > 0">
<button <button
...@@ -611,4 +618,13 @@ export default { ...@@ -611,4 +618,13 @@ export default {
.fullwidth { .fullwidth {
width: 100%; width: 100%;
} }
.flex {
display: flex !important;
}
.align-center {
align-items: center !important;
}
.text-left {
text-align: left !important;
}
</style> </style>
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment