AddAddress final submit, managed by callback and not an event

This commit is contained in:
Mathieu Jaumotte 2021-09-16 15:48:45 +02:00
parent c2f75654dd
commit 17a3f45247
4 changed files with 63 additions and 44 deletions

View File

@ -4,7 +4,7 @@
v-bind:context="context" v-bind:context="context"
v-bind:options="addAddress.options" v-bind:options="addAddress.options"
v-bind:result="addAddress.result" v-bind:result="addAddress.result"
@submitAddress="submitAddress" v-bind:addressChanged="submitAddress"
ref="addAddress"> ref="addAddress">
</add-address> </add-address>
</template> </template>
@ -73,13 +73,11 @@ export default {
displayErrors() { displayErrors() {
return this.$refs.addAddress.errorMsg; return this.$refs.addAddress.errorMsg;
}, },
submitAddress() { submitAddress(payload) {
console.log('@@@ click on Submit Address Button'); console.log('@@@ click on Submit Address Button', payload);
let payload = this.$refs.addAddress.submitNewAddress(); // Cast child method this.addDateToAddressAndPostAddressTo(payload); // !!
this.addDateToAddressAndPostAddressTo(payload);
}, },
addDateToAddressAndPostAddressTo(payload) addDateToAddressAndPostAddressTo(payload) {
{
payload.body = { payload.body = {
validFrom: { validFrom: {
datetime: `${this.context.valid.from.toISOString().split('T')[0]}T00:00:00+0100` datetime: `${this.context.valid.from.toISOString().split('T')[0]}T00:00:00+0100`
@ -100,11 +98,9 @@ export default {
this.$refs.addAddress.flag.loading = false; this.$refs.addAddress.flag.loading = false;
}); });
}, },
postAddressTo(payload) {
postAddressTo(payload)
{
console.log('postAddressTo', payload.entity); console.log('postAddressTo', payload.entity);
if (!this.context.edit) { if (!this.context.edit) { // !!
switch (payload.entity) { switch (payload.entity) {
case 'household': case 'household':
postAddressToHousehold(payload.entityId, payload.addressId) postAddressToHousehold(payload.entityId, payload.addressId)
@ -141,7 +137,7 @@ export default {
} }
} else { } else {
// address is already linked, just finish ! // address is already linked, just finish !
window.location.assign(this.context.backUrl); //window.location.assign(this.context.backUrl);
} }
}, },
} }

View File

@ -57,9 +57,9 @@
v-bind:entity="this.entity" v-bind:entity="this.entity"
v-bind:valid="this.context.valid" v-bind:valid="this.context.valid"
v-bind:flag="this.flag" v-bind:flag="this.flag"
ref="showAddress" v-bind:insideModal="false"
v-bind:insideModal="false" @openEditPane="openEditPane" @openEditPane="openEditPane"
@submitAddress="$emit('submitAddress')"> ref="showAddress">
</show-address-pane> </show-address-pane>
</div> </div>
@ -110,7 +110,8 @@
v-bind:default="this.default" v-bind:default="this.default"
v-bind:entity="this.entity" v-bind:entity="this.entity"
v-bind:flag="this.flag" v-bind:flag="this.flag"
v-bind:insideModal="false" @closeEditPane="closeEditPane" v-bind:insideModal="false"
@closeEditPane="closeEditPane"
@getCities="getCities" @getCities="getCities"
@getReferenceAddresses="getReferenceAddresses"> @getReferenceAddresses="getReferenceAddresses">
</edit-address-pane> </edit-address-pane>
@ -127,8 +128,7 @@ import EditAddressPane from './EditAddressPane.vue';
export default { export default {
name: "AddAddress", name: "AddAddress",
props: ['context', 'options', 'result'], props: ['context', 'options', 'addressChanged'],
emits: ['submitAddress'],
components: { components: {
Modal, Modal,
ShowAddressPane, ShowAddressPane,
@ -249,7 +249,7 @@ export default {
this.getInitialAddress(this.context.addressId); this.getInitialAddress(this.context.addressId);
} }
// when create new address, start first with editPane // when create new address, start first with editPane !!
if ( this.context.edit === false if ( this.context.edit === false
&& this.flag.editPane === false && this.flag.editPane === false
) { ) {
@ -407,10 +407,19 @@ export default {
this.updateAddress({ this.updateAddress({
addressId: this.context.addressId, addressId: this.context.addressId,
newAddress: newAddress newAddress: newAddress
}); })
.then(payload => {
console.log('payload', payload);
this.addressChanged(payload);
}
);
} else { } else {
this.addNewAddress(newAddress); this.addNewAddress(newAddress)
.then(payload => this.addressChanged(payload));
} }
}, },
/* /*
@ -428,25 +437,30 @@ export default {
if (this.context.entity.type === 'person') { if (this.context.entity.type === 'person') {
postcodeBody = Object.assign(postcodeBody, {'origin': 3}); postcodeBody = Object.assign(postcodeBody, {'origin': 3});
} }
postPostalCode(postcodeBody) return postPostalCode(postcodeBody)
.then(postalCode => { .then(postalCode => {
payload.postcode = {'id': postalCode.id }; payload.postcode = {'id': postalCode.id };
this.postNewAddress(payload); return this.postNewAddress(payload);
}); });
} else { } else {
this.postNewAddress(payload); return this.postNewAddress(payload);
} }
}, },
postNewAddress(payload) { postNewAddress(payload) {
//console.log('postNewAddress', payload); //console.log('postNewAddress', payload);
postAddress(payload) return postAddress(payload)
.then(address => new Promise((resolve, reject) => { .then(address => new Promise((resolve, reject) => {
this.entity.address = address; this.entity.address = address;
this.flag.loading = false; this.flag.loading = false;
this.flag.success = true; this.flag.success = true;
resolve(); resolve({
entity: this.context.entity.type,
entityId: this.context.entity.id,
addressId: this.entity.address.address_id
}
);
})) }))
.catch((error) => { .catch((error) => {
this.errorMsg.push(error); this.errorMsg.push(error);
@ -463,31 +477,37 @@ export default {
this.flag.loading = true; this.flag.loading = true;
// TODO change the condition because it writes new postal code in edit mode now: !writeNewPostalCode // TODO change the condition because it writes new postal code in edit mode now: !writeNewPostalCode
if ('newPostcode' in payload.newAddress) {
if ('newPostcode' in payload.newAddress) {
let postcodeBody = payload.newAddress.newPostcode; let postcodeBody = payload.newAddress.newPostcode;
postcodeBody = Object.assign(postcodeBody, {'origin': 3}); postcodeBody = Object.assign(postcodeBody, {'origin': 3});
postPostalCode(postcodeBody) return postPostalCode(postcodeBody)
.then(postalCode => { .then(postalCode => {
console.log('create new postcode', postalCode.id);
payload.newAddress.postcode = {'id': postalCode.id }; payload.newAddress.postcode = {'id': postalCode.id };
this.patchExistingAddress(payload); return this.patchExistingAddress(payload);
}); });
} else { } else {
this.patchExistingAddress(payload); return this.patchExistingAddress(payload);
} }
}, },
patchExistingAddress(payload) { patchExistingAddress(payload) {
console.log('patchExistingAddress', payload); console.log('patchExistingAddress', payload);
patchAddress(payload.addressId, payload.newAddress) return patchAddress(payload.addressId, payload.newAddress)
.then(address => new Promise((resolve, reject) => { .then(address => new Promise((resolve, reject) => {
this.entity.address = address; this.entity.address = address;
this.flag.loading = false; this.flag.loading = false;
this.flag.success = true; this.flag.success = true;
resolve(); return resolve({
})) entity: this.context.entity.type,
entityId: this.context.entity.id,
addressId: this.entity.address.address_id
});
})
)
.catch((error) => { .catch((error) => {
this.errorMsg.push(error); this.errorMsg.push(error);
this.flag.loading = false; this.flag.loading = false;
@ -497,7 +517,6 @@ export default {
/* /*
* Method called by parent when submitting address * Method called by parent when submitting address
* (get out step1 show pane, submit button) * (get out step1 show pane, submit button)
*/
submitNewAddress() submitNewAddress()
{ {
let payload = { let payload = {
@ -513,6 +532,7 @@ export default {
return payload; return payload;
} }
*/
} }
} }
</script> </script>

View File

@ -4,9 +4,11 @@
<i v-if="flag.loading" class="fa fa-circle-o-notch fa-spin fa-2x fa-fw"></i> <i v-if="flag.loading" class="fa fa-circle-o-notch fa-spin fa-2x fa-fw"></i>
<span class="sr-only">{{ $t('loading') }}</span> <span class="sr-only">{{ $t('loading') }}</span>
</div> </div>
<div v-if="errorMsg && errorMsg.length > 0" class="alert alert-danger"> <div v-if="errorMsg && errorMsg.length > 0" class="alert alert-danger">
{{ errorMsg }} {{ errorMsg }}
</div> </div>
<div v-if="flag.success" class="alert alert-success"> <div v-if="flag.success" class="alert alert-success">
{{ $t(getSuccessText) }} {{ $t(getSuccessText) }}
</div> </div>
@ -26,23 +28,24 @@
</div> </div>
<ul v-if="insideModal == false" <ul v-if="insideModal == false"
class="record_actions sticky-form-buttons"> class="record_actions">
<!--
<li class="cancel"> <li class="cancel">
<a class="btn btn-cancel" v-bind:href="context.backUrl"> <a class="btn btn-cancel" v-bind:href="context.backUrl">
{{ $t('back_to_the_list') }}</a> {{ $t('back_to_the_list') }}</a>
</li> </li>-->
<li> <li>
<a @click.prevent="$emit('openEditPane')" <a @click.prevent="$emit('openEditPane')"
class="btn btn-update"> class="btn btn-update">
{{ $t('action.edit')}} {{ $t('action.edit')}}
</a> </a>
</li> </li>
<li> <!--<li>
<a class="btn btn-save" <a class="btn btn-save"
@click.prevent="$emit('submitAddress')"> @click.prevent="$emit('submitAddress')">
{{ $t('action.save')}} {{ $t('action.save')}}
</a> </a>
</li> </li>-->
</ul> </ul>
</template> </template>
@ -65,7 +68,7 @@ export default {
'errorMsg', 'errorMsg',
'insideModal' 'insideModal'
], ],
emits: ['openEditPane', 'submitAddress'], //? emits: ['openEditPane'], // 'submitAddress'
computed: { computed: {
address() { address() {
return this.entity.address; return this.entity.address;

View File

@ -82,7 +82,7 @@
{% if thirdParty.address == null %} {% if thirdParty.address == null %}
<span class="chill-no-data-statement">{{ 'No address given'|trans }}</span> <span class="chill-no-data-statement">{{ 'No address given'|trans }}</span>
{% else %} {% else %}
{{ thirdParty.address|chill_entity_render_box({'with_valid_from': false }) }} {{ thirdParty.address|chill_entity_render_box({'with_valid_from': false, 'extended_infos': true }) }}
{% endif %} {% endif %}
</dd> </dd>
@ -103,7 +103,7 @@
<ul class="record_actions sticky-form-buttons"> <ul class="record_actions sticky-form-buttons">
<li class="cancel"> <li class="cancel">
<a class="btn btn-cancel" href="{{ chill_return_path_or('chill_3party_3party_index') }}"> <a class="btn btn-cancel" href="{{ chill_return_path_or('chill_3party_3party_index') }}">
{{ 'Cancel'|trans }} {{ 'Back to the list'|trans }}
</a> </a>
</li> </li>