add store postAddress fetch request

This commit is contained in:
Mathieu Jaumotte 2021-05-12 09:50:43 +02:00
parent 2aed37757e
commit cb846891d6
4 changed files with 60 additions and 30 deletions

View File

@ -11,8 +11,7 @@
</div> </div>
<add-address <add-address
@addNewAddress="addNewAddress" @addNewAddress="addNewAddress">
ref="addAddress">
</add-address> </add-address>
</template> </template>
@ -35,7 +34,6 @@ export default {
addNewAddress({ address, modal }) { addNewAddress({ address, modal }) {
console.log('@@@ CLICK button addNewAdress', address); console.log('@@@ CLICK button addNewAdress', address);
this.$store.dispatch('addAddress', address.selected); this.$store.dispatch('addAddress', address.selected);
//this.$refs.addAddress.resetAll(); // to cast child method
modal.showModal = false; modal.showModal = false;
} }
} }

View File

@ -1,12 +1,16 @@
import 'es6-promise/auto'; import 'es6-promise/auto';
import { createStore } from 'vuex'; import { createStore } from 'vuex';
// le fetch POST serait rangé dans la logique du composant qui appelle AddAddress
//import { postAddress } from '... api'
const debug = process.env.NODE_ENV !== 'production'; const debug = process.env.NODE_ENV !== 'production';
const store = createStore({ const store = createStore({
strict: debug, strict: debug,
state: { state: {
address: {} address: {},
errorMsg: {}
}, },
getters: { getters: {
}, },
@ -19,7 +23,19 @@ const store = createStore({
actions: { actions: {
addAddress({ commit }, payload) { addAddress({ commit }, payload) {
console.log('@A addAddress payload', payload); console.log('@A addAddress payload', payload);
commit('addAddress', payload); commit('addAddress', payload); // à remplacer par
// fetch POST qui envoie l'adresse, et récupère la confirmation que c'est ok.
// La confirmation est l'adresse elle-même.
//
// postAddress(payload)
// .fetch(address => new Promise((resolve, reject) => {
// commit('addAddress', address);
// resolve();
// }))
// .catch((error) => {
// state.errorMsg.push(error.message);
// });
} }
} }
}); });

View File

@ -1,5 +1,6 @@
/* /*
* Endpoint countries GET * Endpoint countries GET
* TODO
*/ */
const fetchCountries = () => { const fetchCountries = () => {
console.log('<<< fetching countries'); console.log('<<< fetching countries');
@ -11,6 +12,7 @@ const fetchCountries = () => {
/* /*
* Endpoint cities GET * Endpoint cities GET
* TODO
*/ */
const fetchCities = (country) => { const fetchCities = (country) => {
console.log('<<< fetching cities for', country); console.log('<<< fetching cities for', country);
@ -27,7 +29,8 @@ const fetchCities = (country) => {
* @returns {Promise} a promise containing all AddressReference object * @returns {Promise} a promise containing all AddressReference object
*/ */
const fetchReferenceAddresses = (city) => { const fetchReferenceAddresses = (city) => {
console.log('<<< fetching references addresses for', city); console.log('<<< fetching references addresses for', city); // city n'est pas utilisé pour le moment
const url = `/api/1.0/main/address-reference.json`; const url = `/api/1.0/main/address-reference.json`;
return fetch(url) return fetch(url)
.then(response => { .then(response => {

View File

@ -45,7 +45,13 @@
ref="addressMap"> ref="addressMap">
</address-map> </address-map>
<!--div class="address_form__fields__isNoAddress"></div> <address-more
v-if="!isNoAddress"
v-bind:address="address">
</address-more>
<!--
<div class="address_form__fields__isNoAddress"></div>
<div class="address_form__select"> <div class="address_form__select">
<div class="address_form__select__header"></div> <div class="address_form__select__header"></div>
<div class="address_form__select__left"></div> <div class="address_form__select__left"></div>
@ -55,13 +61,20 @@
<div class="address_form__fields__header"></div> <div class="address_form__fields__header"></div>
<div class="address_form__fields__left"></div> <div class="address_form__fields__left"></div>
<div class="address_form__fields__right"></div> <div class="address_form__fields__right"></div>
</div--> </div>
<address-more à discuter,
v-if="!isNoAddress" mais je pense qu'il est préférable de profiter de l'imbriquation des classes css
v-bind:address="address">
</address-more>
div.address_form {
div.select {
div.header {}
div.left {}
div.map {}
}
}
-->
</template> </template>
<template v-slot:footer> <template v-slot:footer>
@ -156,28 +169,28 @@ export default {
getCountries() { getCountries() {
console.log('getCountries'); console.log('getCountries');
this.address.loaded.countries = fetchCountries(); // à remplacer par this.address.loaded.countries = fetchCountries(); // à remplacer par
//fetchCountries().then(countries => new Promise((resolve, reject) => { // fetchCountries().then(countries => new Promise((resolve, reject) => {
// this.address.loaded.countries = countries; // this.address.loaded.countries = countries;
// resolve() // resolve()
//})) // }))
//.catch((error) => { // .catch((error) => {
// this.errorMsg.push(error.message); // this.errorMsg.push(error.message);
//}); // });
}, },
getCities(country) { getCities(country) {
console.log('getCities for', country.name); console.log('getCities for', country.name);
this.address.loaded.cities = fetchCities(); // à remplacer par this.address.loaded.cities = fetchCities(); // à remplacer par
//fetchCities(country).then(cities => new Promise((resolve, reject) => { // fetchCities(country).then(cities => new Promise((resolve, reject) => {
// this.address.loaded.cities = cities; // this.address.loaded.cities = cities;
// resolve() // resolve()
//})) // }))
//.catch((error) => { // .catch((error) => {
// this.errorMsg.push(error.message); // this.errorMsg.push(error.message);
//}); // });
}, },
getReferenceAddresses(city) { getReferenceAddresses(city) {
console.log('getReferenceAddresses for', city.name); console.log('getReferenceAddresses for', city.name);
fetchReferenceAddresses(city) fetchReferenceAddresses(city) // il me semble que le paramètre city va limiter le poids des adresses de références reçues
.then(addresses => new Promise((resolve, reject) => { .then(addresses => new Promise((resolve, reject) => {
console.log('addresses', addresses); console.log('addresses', addresses);
this.address.loaded.addresses = addresses.results; this.address.loaded.addresses = addresses.results;