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

Merge branch 'ticket/11770' into 'develop'

fix handle error title empty in Project

See merge request !44
parents 0577bf28 04323033
No related branches found
No related tags found
1 merge request!44fix handle error title empty in Project
...@@ -2,15 +2,17 @@ ...@@ -2,15 +2,17 @@
<div class="ui segment"> <div class="ui segment">
<div class="field required"> <div class="field required">
<label for="basemap-title">Titre</label> <label for="basemap-title">Titre</label>
<!-- v-model="title" -->
<input <input
:value="basemap.title" v-model="basemap.title"
@blur="updateTitle"
type="text" type="text"
name="basemap-title" name="basemap-title"
required required
/> />
<!-- {{ basemapForm.title.errors }} --> <ul v-if="basemap.errors" id="errorlist-title" class="errorlist">
<li>
{{ basemap.errors }}
</li>
</ul>
</div> </div>
<div class="nested"> <div class="nested">
...@@ -95,13 +97,15 @@ export default { ...@@ -95,13 +97,15 @@ export default {
layers: [...this.basemap.layers, newLayer], layers: [...this.basemap.layers, newLayer],
id: this.basemap.id, id: this.basemap.id,
title: this.basemap.title, title: this.basemap.title,
errors: this.basemap.errors,
}); });
}, },
updateTitle(evt) { updateTitle(evt) {
this.$store.commit("map/UPDATE_BASEMAP", { this.$store.commit("map/UPDATE_BASEMAP", {
id: this.basemap.id, id: this.basemap.id,
title: evt.target.value, title: evt.title,
errors: evt.errors,
}); });
}, },
...@@ -120,12 +124,30 @@ export default { ...@@ -120,12 +124,30 @@ export default {
}); });
}, },
}, },
watch: {
'basemap.title': {
deep: true,
handler : function (newValue, oldValue) {
if (newValue != oldValue) {
this.basemap.title = newValue;
if(newValue == '')
this.basemap.errors = "Veuillez compléter ce champ.";
else
this.basemap.errors = '';
this.updateTitle(this.basemap)
}
}
}
},
created() { created() {
if (this.basemap.layers) { //* add datakeys to layers coming from api if (this.basemap.layers) { //* add datakeys to layers coming from api
this.fillLayersWithDatakey(this.basemap.layers); this.fillLayersWithDatakey(this.basemap.layers);
} }
}, },
// destroyed(){
// this.errors = [];
// }
// mounted() { //* not present in original // mounted() { //* not present in original
// if (!this.basemap.title) { // if (!this.basemap.title) {
......
...@@ -28,7 +28,7 @@ const map = { ...@@ -28,7 +28,7 @@ const map = {
state.basemaps = basemaps; state.basemaps = basemaps;
}, },
CREATE_BASEMAP(state, id) { CREATE_BASEMAP(state, id) {
state.basemaps = [...state.basemaps, { id, layers: [] }] state.basemaps = [...state.basemaps, { id, title: '', layers: [], errors : [] }]
}, },
/* DELETE_BASEMAP(state, id) { /* DELETE_BASEMAP(state, id) {
state.basemaps = state.basemaps.filter(el => el.id !== id) state.basemaps = state.basemaps.filter(el => el.id !== id)
...@@ -36,7 +36,7 @@ const map = { ...@@ -36,7 +36,7 @@ const map = {
UPDATE_BASEMAPS(state, basemaps) { UPDATE_BASEMAPS(state, basemaps) {
state.basemaps = basemaps; state.basemaps = basemaps;
}, },
UPDATE_BASEMAP(state, { title, id, layers }) { UPDATE_BASEMAP(state, { title, id, layers, errors }) {
const index = state.basemaps.findIndex((el) => el.id === id); const index = state.basemaps.findIndex((el) => el.id === id);
if (index !== -1) { if (index !== -1) {
if (title) { if (title) {
...@@ -45,6 +45,9 @@ const map = { ...@@ -45,6 +45,9 @@ const map = {
if (layers) { if (layers) {
state.basemaps[index].layers = layers state.basemaps[index].layers = layers
} }
if (errors) {
state.basemaps[index].errors = errors
}
} }
}, },
DELETE_BASEMAP(state, basemapId) { DELETE_BASEMAP(state, basemapId) {
......
<template> <template>
<div class="fourteen wide column">
<h1 class="ui header">Administration des fonds cartographiques</h1>
<form <div class="fourteen wide column">
id="form-layers" <div id="message_info" class="fullwidth">
action="." <div v-if="infoMessage" class="ui positive message" style="text-align: left;">
method="post" <div class="header">
enctype="multipart/form-data" <i class="info circle icon"></i> Informations
class="ui form" </div>
> <ul class="list">
<!-- {{ formset.management_form }} --> {{ infoMessage }}
<div class="ui buttons"> </ul>
<a </div>
class="ui compact small icon left floated button green"
data-variation="mini"
@click="addBasemap"
>
<i class="ui plus icon"></i>
<span>Créer un fond cartographique</span>
</a>
</div>
<div v-if="basemaps" class="ui">
<ProjectMappingBasemap
v-for="basemap in basemaps"
:key="basemap.id"
:basemap="basemap"
/>
</div> </div>
<h1 class="ui header">Administration des fonds cartographiques</h1>
<button <form
@click="saveChanges" id="form-layers"
type="button" action="."
class="ui teal icon floated button" method="post"
enctype="multipart/form-data"
class="ui form"
> >
<i class="white save icon"></i> Enregistrer les changements <!-- {{ formset.management_form }} -->
</button> <div class="ui buttons">
</form> <a
</div> class="ui compact small icon left floated button green"
data-variation="mini"
@click="addBasemap"
>
<i class="ui plus icon"></i>
<span>Créer un fond cartographique</span>
</a>
</div>
<div v-if="basemaps" class="ui">
<ProjectMappingBasemap
v-for="basemap in basemaps"
:key="basemap.id"
:basemap="basemap"
/>
</div>
<button
@click="saveChanges"
type="button"
class="ui teal icon floated button"
>
<i class="white save icon"></i> Enregistrer les changements
</button>
</form>
</div>
</template> </template>
<script> <script>
...@@ -53,6 +64,7 @@ export default { ...@@ -53,6 +64,7 @@ export default {
data() { data() {
return { return {
infoMessage: '',
newBasemapIds: [], newBasemapIds: [],
}; };
}, },
...@@ -67,15 +79,36 @@ export default { ...@@ -67,15 +79,36 @@ export default {
this.newBasemapIds.push(this.basemapMaxId + 1); //* register new basemaps to seperate post and put this.newBasemapIds.push(this.basemapMaxId + 1); //* register new basemaps to seperate post and put
this.$store.commit("map/CREATE_BASEMAP", this.basemapMaxId + 1); this.$store.commit("map/CREATE_BASEMAP", this.basemapMaxId + 1);
}, },
checkTitles(){
let isValid = true;
this.basemaps.forEach(basemap => {
if (basemap.title === null || basemap.title === '' ){
basemap.errors = "Veuillez compléter ce champ."
isValid = false
} else {
basemap.errors = ''
}
});
return isValid;
},
saveChanges() { saveChanges() {
// ToDo : check if values are filled // ToDo : check if values are filled
this.$store.dispatch("map/SAVE_BASEMAPS", this.newBasemapIds) if (this.checkTitles()){
.then((res) => { this.$store.dispatch("map/SAVE_BASEMAPS", this.newBasemapIds)
console.log('res', res) .then((res) => {
}); console.log('res', res)
this.newBasemapIds = []; })
}, .catch((error) => {
console.log(error)
})
this.newBasemapIds = [];
this.infoMessage = 'Enregistrement effectué.'
setTimeout(function(){
this.infoMessage = '';
}.bind(this), 5000);
}
}
}, },
created() { created() {
......
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