addresses: edit address for person

This commit is contained in:
nobohan 2021-06-16 14:39:02 +02:00
parent 35d35c9f40
commit 06daf35e96
14 changed files with 132 additions and 42 deletions

View File

@ -244,6 +244,9 @@ div.address_form {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
flex-grow: 1; flex-grow: 1;
div.custom-address, div.custom-postcode {
padding: 12px;
}
} }
div.address_form__select__map { div.address_form__select__map {
@ -251,11 +254,19 @@ div.address_form {
div#address_map { div#address_map {
height:400px; height:400px;
width:400px; width:400px;
input {
border: 1px solid #999;
}
} }
} }
} }
div.address_form__more { div.address_form__more {
& > div {
display: flex;
& > label {
width: 30%;
}
}
} }
} }

View File

@ -8,16 +8,12 @@
@addNewAddress="addNewAddress"> @addNewAddress="addNewAddress">
</add-address> </add-address>
</div> </div>
<div> <div>
<div v-if="address.text"> <show-address
{{ address.text }} v-if="address"
</div> v-bind:address="address">
<div v-if="address.postcode"> </show-address>
{{ address.postcode.name }}
</div>
<div v-if="address.country">
{{ address.country.name }}
</div>
</div> </div>
</div> </div>
<div v-if="!edit" class='person__address__valid'> <div v-if="!edit" class='person__address__valid'>
@ -49,11 +45,13 @@
<script> <script>
import AddAddress from '../_components/AddAddress.vue'; import AddAddress from '../_components/AddAddress.vue';
import ShowAddress from '../_components/ShowAddress.vue';
export default { export default {
name: 'App', name: 'App',
components: { components: {
AddAddress AddAddress,
ShowAddress
}, },
data() { data() {
return { return {

View File

@ -1,7 +1,9 @@
const addressMessages = { const addressMessages = {
fr: { fr: {
add_an_address_title: 'Créer une adresse', add_an_address_title: 'Créer une adresse',
edit_an_address_title: 'Modifier une adresse',
create_a_new_address: 'Créer une nouvelle adresse', create_a_new_address: 'Créer une nouvelle adresse',
edit_a_new_address: 'Modifier l\'adresse',
select_an_address_title: 'Sélectionner une adresse', select_an_address_title: 'Sélectionner une adresse',
fill_an_address: 'Compléter l\'adresse', fill_an_address: 'Compléter l\'adresse',
select_country: 'Choisir le pays', select_country: 'Choisir le pays',

View File

@ -94,12 +94,12 @@ const store = createStore({
updateAddress({ commit }, payload) { updateAddress({ commit }, payload) {
console.log('@A updateAddress payload', payload); console.log('@A updateAddress payload', payload);
if('newPostalCode' in payload.newAddress){ if('newPostalCode' in payload.newAddress){ // TODO change the condition because it writes new postal code in edit mode now: !writeNewPostalCode
postPostalCode(payload.newAddress.newPostalCode) postPostalCode(payload.newAddress.newPostalCode)
.then(postalCode => { .then(postalCode => {
let body = payload; let body = payload.newAddress;
body.postcode = {'id': postalCode.id }, body.postcode = {'id': postalCode.id },
patchAddress(body) patchAddress(payload.addressId, body)
.then(address => new Promise((resolve, reject) => { .then(address => new Promise((resolve, reject) => {
commit('updateAddress', address); commit('updateAddress', address);
resolve(); resolve();

View File

@ -207,25 +207,28 @@ export default {
}, },
resetAll() { resetAll() {
console.log('reset all selected'); console.log('reset all selected');
console.log(this.$store.state.editAddress);
this.address.loaded.addresses = []; this.address.loaded.addresses = [];
this.address.selected.address = {}; this.address.selected.address = {};
this.address.loaded.cities = []; this.address.loaded.cities = [];
this.address.selected.city = {}; this.address.selected.city = {};
this.address.selected.country = {}; this.address.selected.country = {};
this.address.isNoAddress = false; this.address.isNoAddress = this.edit ? this.$store.state.editAddress.isNoAddress: false;;
this.address.street = null; this.address.street = this.edit ? this.$store.state.editAddress.street: null;
this.address.streetNumber = null; this.address.streetNumber = this.edit ? this.$store.state.editAddress.streetNumber: null;
this.address.floor = this.$store.state.editAddress.floor; //TODO other field and test if no edit this.address.floor = this.edit ? this.$store.state.editAddress.floor: null;
this.address.corridor = null; this.address.corridor = this.edit ? this.$store.state.editAddress.corridor: null;
this.address.steps = null; this.address.steps = this.edit ? this.$store.state.editAddress.steps: null;
this.address.flat = null; this.address.flat = this.edit ? this.$store.state.editAddress.flat: null;
this.address.buildingName = null; this.address.buildingName = this.edit ? this.$store.state.editAddress.buildingName: null;
this.address.distribution = null; this.address.distribution = this.edit ? this.$store.state.editAddress.distribution: null;
this.address.extra = null; this.address.extra = this.edit ? this.$store.state.editAddress.extra: null;
this.address.writeNewAddress = false; this.address.writeNewAddress = this.edit;
this.address.writeNewPostalCode = false; this.address.writeNewPostalCode = this.edit;
this.address.newPostalCode = {}; this.address.newPostalCode = this.edit ?
{
code: this.$store.state.editAddress.postcode !== undefined ? this.$store.state.editAddress.postcode.code : null,
name: this.$store.state.editAddress.postcode !== undefined ? this.$store.state.editAddress.postcode.name : null
} : {};
console.log('cities and addresses', this.address.loaded.cities, this.address.loaded.addresses); console.log('cities and addresses', this.address.loaded.cities, this.address.loaded.addresses);
} }
} }

View File

@ -1,36 +1,55 @@
<template> <template>
<div>
<h4>{{ $t('fill_an_address') }}</h4> <h4>{{ $t('fill_an_address') }}</h4>
<div>
<label for="floor">{{ $t('floor') }}</label>
<input <input
type="text" type="text"
name="floor" name="floor"
:placeholder="$t('floor')" :placeholder="$t('floor')"
v-model="floor"/> v-model="floor"/>
</div>
<div>
<label for="corridor">{{ $t('corridor') }}</label>
<input <input
type="text" type="text"
name="corridor" name="corridor"
:placeholder="$t('corridor')" :placeholder="$t('corridor')"
v-model="corridor"/> v-model="corridor"/>
</div>
<div>
<label for="steps">{{ $t('steps') }}</label>
<input <input
type="text" type="text"
name="steps" name="steps"
:placeholder="$t('steps')" :placeholder="$t('steps')"
v-model="steps"/> v-model="steps"/>
</div>
<div>
<label for="flat">{{ $t('flat') }}</label>
<input <input
type="text" type="text"
name="flat" name="flat"
:placeholder="$t('flat')" :placeholder="$t('flat')"
v-model="flat"/> v-model="flat"/>
</div>
<div>
<label for="buildingName">{{ $t('buildingName') }}</label>
<input <input
type="text" type="text"
name="buildingName" name="buildingName"
:placeholder="$t('buildingName')" :placeholder="$t('buildingName')"
v-model="buildingName"/> v-model="buildingName"/>
</div>
<div>
<label for="extra">{{ $t('extra') }}</label>
<input <input
type="text" type="text"
name="extra" name="extra"
:placeholder="$t('extra')" :placeholder="$t('extra')"
v-model="extra"/> v-model="extra"/>
</div>
<div>
<label for="distribution">{{ $t('distribution') }}</label>
<input <input
type="text" type="text"
name="distribution" name="distribution"

View File

@ -15,7 +15,7 @@
:options="addresses"> :options="addresses">
</VueMultiselect> </VueMultiselect>
</div> </div>
<div v-if="writeNewAddress || writeNewPostalCode"> <div class="custom-address" v-if="writeNewAddress || writeNewPostalCode">
<input <input
type="text" type="text"
name="street" name="street"

View File

@ -15,7 +15,7 @@
:options="cities"> :options="cities">
</VueMultiselect> </VueMultiselect>
</div> </div>
<div v-if="writeNewPostalCode"> <div class="custom-postcode" v-if="writeNewPostalCode">
<input <input
type="text" type="text"
name="name" name="name"
@ -71,6 +71,8 @@ export default {
}, },
selectCity(value) { selectCity(value) {
this.address.selected.city = value; this.address.selected.city = value;
this.address.newPostalCode.name = value.name;
this.address.newPostalCode.code = value.code;
this.getReferenceAddresses(value); this.getReferenceAddresses(value);
}, },
addPostalCode() { addPostalCode() {

View File

@ -22,11 +22,16 @@ export default {
props: ['address', 'getCities'], props: ['address', 'getCities'],
data() { data() {
return { return {
value: this.address.loaded.countries.filter(c => c.countryCode === 'FR')[0] edit: window.mode === 'edit',
defaultCountry: this.edit ? this.$store.state.editAddress.country.code : 'FR',
value: this.address.loaded.countries.filter(c => c.countryCode === this.defaultCountry)[0]
} }
}, },
methods: { methods: {
init() { init() {
this.value = this.edit ?
this.address.loaded.countries.filter(c => c.countryCode === this.$store.state.editAddress.country.code)[0]:
this.address.loaded.countries.filter(c => c.countryCode === 'FR')[0]
if (this.value !== undefined) { if (this.value !== undefined) {
this.selectCountry(this.value); this.selectCountry(this.value);
} }

View File

@ -0,0 +1,44 @@
<template>
<div v-if="address.text">
{{ address.text }}
</div>
<div v-if="address.postcode">
{{ address.postcode.name }}
</div>
<div v-if="address.country">
{{ address.country.name.fr }}
</div>
<div v-if="address.floor">
<span>{{ $t('floor') }}</span>: {{ address.floor }}
</div>
<div v-if="address.corridor">
<span>{{ $t('corridor') }}</span>: {{ address.corridor }}
</div>
<div v-if="address.steps">
<span>{{ $t('steps') }}</span>: {{ address.steps }}
</div>
<div v-if="address.flat">
<span>{{ $t('flat') }}</span>: {{ address.flat }}
</div>
<div v-if="address.buildingName">
<span>{{ $t('buildingName') }}</span>: {{ address.buildingName }}
</div>
<div v-if="address.extra">
<span>{{ $t('extra') }}</span>: {{ address.extra }}
</div>
<div v-if="address.distribution">
<span>{{ $t('distribution') }}</span>: {{ address.distribution }}
</div>
</template>
<script>
export default {
name: 'ShowAddress',
props: ['address'],
data() {
return {
}
},
};
</script>

View File

@ -15,9 +15,14 @@ class AddressNormalizer implements NormalizerAwareInterface, NormalizerInterface
{ {
$data['address_id'] = $address->getId(); $data['address_id'] = $address->getId();
$data['text'] = $address->getStreet().', '.$address->getStreetNumber(); $data['text'] = $address->getStreet().', '.$address->getStreetNumber();
$data['street'] = $address->getStreet();
$data['streetNumber'] = $address->getStreetNumber();
$data['postcode']['name'] = $address->getPostCode()->getName(); $data['postcode']['name'] = $address->getPostCode()->getName();
$data['postcode']['code'] = $address->getPostCode()->getCode();
$data['country']['name'] = $address->getPostCode()->getCountry()->getName(); $data['country']['name'] = $address->getPostCode()->getCountry()->getName();
$data['country']['code'] = $address->getPostCode()->getCountry()->getCountryCode();
$data['floor'] = $address->getFloor(); $data['floor'] = $address->getFloor();
$data['corridor'] = $address->getCorridor();
$data['steps'] = $address->getSteps(); $data['steps'] = $address->getSteps();
$data['flat'] = $address->getBuildingName(); $data['flat'] = $address->getBuildingName();
$data['buildingName'] = $address->getFlat(); $data['buildingName'] = $address->getFlat();

View File

@ -18,7 +18,7 @@
{% set activeRouteKey = '' %} {% set activeRouteKey = '' %}
{% block title 'Update address for %name%'|trans({ '%name%': person.firstName ~ ' ' ~ person.lastName } ) %} {% block title 'Modify address for %name%'|trans({ '%name%': person.firstName ~ ' ' ~ person.lastName } ) %}
{% block personcontent %} {% block personcontent %}

View File

@ -185,6 +185,7 @@ Pick a person: Choisir une personne
No address given: Pas d'adresse renseignée No address given: Pas d'adresse renseignée
The address has been successfully updated: L'adresse a été mise à jour avec succès The address has been successfully updated: L'adresse a été mise à jour avec succès
Update address for %name%: Mettre à jour une adresse pour %name% Update address for %name%: Mettre à jour une adresse pour %name%
Modify address for %name%: Modifier une adresse pour %name%
Addresses'history for %name%: Historique des adresses de %name% Addresses'history for %name%: Historique des adresses de %name%
Addresses'history: Historique des adresses Addresses'history: Historique des adresses
New address for %name% : Nouvelle adresse pour %name% New address for %name% : Nouvelle adresse pour %name%