From 7aed8e83ea59d6fe126977928423a5f8134551e6 Mon Sep 17 00:00:00 2001 From: Mathieu Jaumotte Date: Tue, 11 May 2021 17:01:18 +0200 Subject: [PATCH] refactoring AddAddress component --- .../Resources/public/vuejs/Address/App.vue | 34 +++- .../Resources/public/vuejs/Address/api.js | 14 -- .../Resources/public/vuejs/Address/index.js | 22 +- .../public/vuejs/Address/store/index.js | 129 ++++++------ .../Resources/public/vuejs/_api/AddAddress.js | 43 ++++ .../public/vuejs/_components/AddAddress.vue | 188 +++++++++++++----- .../{ => AddAddress}/AddressMap.vue | 18 +- .../_components/AddAddress/AddressMore.vue | 112 +++++++++++ .../AddAddress/AddressSelection.vue | 38 ++++ .../_components/AddAddress/CitySelection.vue | 38 ++++ .../AddAddress/CountrySelection.vue | 38 ++++ .../vuejs/_components/AddressSelection.vue | 29 --- .../vuejs/_components/CitySelection.vue | 29 --- .../vuejs/_components/CountrySelection.vue | 29 --- 14 files changed, 506 insertions(+), 255 deletions(-) delete mode 100644 src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/api.js create mode 100644 src/Bundle/ChillMainBundle/Resources/public/vuejs/_api/AddAddress.js rename src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/{ => AddAddress}/AddressMap.vue (72%) create mode 100644 src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/AddAddress/AddressMore.vue create mode 100644 src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/AddAddress/AddressSelection.vue create mode 100644 src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/AddAddress/CitySelection.vue create mode 100644 src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/AddAddress/CountrySelection.vue delete mode 100644 src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/AddressSelection.vue delete mode 100644 src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/CitySelection.vue delete mode 100644 src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/CountrySelection.vue diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/App.vue b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/App.vue index 0b971b7d5..3cb8a40d6 100644 --- a/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/App.vue +++ b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/App.vue @@ -1,9 +1,23 @@ diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/api.js b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/api.js deleted file mode 100644 index 6ab71a429..000000000 --- a/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/api.js +++ /dev/null @@ -1,14 +0,0 @@ -/* -* Endpoint chill_main_address_reference_api_show -* method GET, get AddressReference Object -* @returns {Promise} a promise containing all AddressReference object -* -*/ -export const getReferenceAddress = () => { - const url = `/api/1.0/main/address-reference.json`; - return fetch(url) - .then(response => { - if (response.ok) { return response.json(); } - throw Error('Error with request resource response'); - }); -}; diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/index.js b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/index.js index b362f3f17..27676369e 100644 --- a/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/index.js +++ b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/index.js @@ -1,20 +1,16 @@ import { createApp } from 'vue' import { _createI18n } from 'ChillMainAssets/vuejs/_js/i18n' import { addressMessages } from './js/i18n' -import { getDataPromise } from './store' +import { store } from './store' import App from './App.vue'; -getDataPromise.then(store => { +const i18n = _createI18n(addressMessages); - const i18n = _createI18n(addressMessages); - - const app = createApp({ - template: ``, - }) - .use(store) - .use(i18n) - .component('app', App) - .mount('#address'); - -}); +const app = createApp({ + template: ``, +}) +.use(store) +.use(i18n) +.component('app', App) +.mount('#address'); diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/store/index.js b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/store/index.js index 4e931cdd9..aeb46bcd5 100644 --- a/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/store/index.js +++ b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/store/index.js @@ -1,77 +1,64 @@ import 'es6-promise/auto'; import { createStore } from 'vuex'; -import { getReferenceAddress } from '../api'; -import { app } from '../index'; + +//import { getReferenceAddress } from '../api'; +//import { app } from '../index'; const debug = process.env.NODE_ENV !== 'production'; -const getDataPromise = getReferenceAddress() - .then(referenceAddresses => new Promise((resolve, reject) => { +const store = createStore({ + strict: debug, + state: { + address: {}, + errorMsg: {} + }, + getters: { + /* + getCountries: state => state.countries, + getSelectedCountry: state => state.selectedCountry, + getCities: state => state.selectedCountry.countryCode === undefined ? + state.cities : + state.cities.filter(c => c.country == state.selectedCountry.countryCode), + getReferenceAddresses: state => state.referenceAddresses, //TODO filter as a function of city + getMapCenter: state => state.addressMap.center, + */ + }, + mutations: { + addAddress(state, address) { + console.log('@M addAddress address', address); + state.address = address; + }, + /* + setSelectedCountry(state, value) { + state.selectedCountry = value; + }, + setSelectedCity(state, value) { + state.selectedCity = value; + }, + setSelectedAddress(state, value) { + state.selectedAddress = value; + state.addressMap.center = value.point.coordinates.reverse(); + //app.$refs.addressMap.updateMap(); //TODO how to update the map view? -> action avec dispatch + }, + setMapCenter(state, value) { + state.addressMap.center = value; + }, + setIsNoAddress(state, value) { + state.form.isNoAddress = value; + } + */ + }, + actions: { + addAddress({ commit }, payload) { + console.log('@A addAddress payload', payload); + commit('addAddress', payload); + }, + /* + updateMapCenter({ commit }, payload) { + commit('updateMapCenter', payload); + }, + */ + } +}); - const store = createStore({ - strict: debug, - state: { - referenceAddresses: referenceAddresses.results, //TODO-> move to data - countries: [ - {id: 1, name: 'France', countryCode: 'FR'}, - {id: 2, name: 'Belgium', countryCode: 'BE'} - ], //TODO fetch countries from CHILL API - cities: [ - {id: 1, name: 'Bruxelles', code: '1000', country: 'BE'}, - {id: 2, name: 'Aisne', code: '85045', country: 'FR'}, - {id: 3, name: 'Saint-Gervais', code: '85230', country: 'FR'} - ], //TODO fetch postal codes from CHILL API - selectedCountry: {id: 1, name: 'France', countryCode: 'FR'}, - selectedCity: null, - selectedAddress: null, - addressMap: { - center : [48.8589, 2.3469], // Note: LeafletJs demands [lat, lon] cfr https://macwright.com/lonlat/ - zoom: 12 - }, - form: { - isNoAddress: false, - floor: null, - corridor: null, - steps: null - } - }, - getters: { - getCountries: state => state.countries, - getSelectedCountry: state => state.selectedCountry, - getCities: state => state.selectedCountry.countryCode === undefined ? - state.cities : - state.cities.filter(c => c.country == state.selectedCountry.countryCode), - getReferenceAddresses: state => state.referenceAddresses, //TODO filter as a function of city - getMapCenter: state => state.addressMap.center, - }, - mutations: { - setSelectedCountry(state, value) { - state.selectedCountry = value; - }, - setSelectedCity(state, value) { - state.selectedCity = value; - }, - setSelectedAddress(state, value) { - state.selectedAddress = value; - state.addressMap.center = value.point.coordinates.reverse(); - //app.$refs.addressMap.updateMap(); //TODO how to update the map view? -> action avec dispatch - }, - setMapCenter(state, value) { - state.addressMap.center = value; - }, - setIsNoAddress(state, value) { - state.form.isNoAddress = value; - } - }, - actions: { - updateMapCenter({ commit }, payload) { - commit('updateMapCenter', payload); - }, - } - }); - resolve(store); - - - })); - -export { getDataPromise }; +export { store }; diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/_api/AddAddress.js b/src/Bundle/ChillMainBundle/Resources/public/vuejs/_api/AddAddress.js new file mode 100644 index 000000000..d0261adfb --- /dev/null +++ b/src/Bundle/ChillMainBundle/Resources/public/vuejs/_api/AddAddress.js @@ -0,0 +1,43 @@ +/* +* Endpoint countries GET +*/ +const fetchCountries = () => { + console.log('<<< fetching countries'); + return [ + {id: 1, name: 'France', countryCode: 'FR'}, + {id: 2, name: 'Belgium', countryCode: 'BE'} + ]; +}; + +/* +* Endpoint cities GET +*/ +const fetchCities = (country) => { + console.log('<<< fetching cities for', country); + return [ + {id: 1, name: 'Bruxelles', code: '1000', country: 'BE'}, + {id: 2, name: 'Aisne', code: '85045', country: 'FR'}, + {id: 3, name: 'Saint-Gervais', code: '85230', country: 'FR'} + ]; +}; + +/* +* Endpoint chill_main_address_reference_api_show +* method GET, get AddressReference Object +* @returns {Promise} a promise containing all AddressReference object +*/ +const fetchReferenceAddresses = (city) => { + console.log('<<< fetching references addresses for', city); + const url = `/api/1.0/main/address-reference.json`; + return fetch(url) + .then(response => { + if (response.ok) { return response.json(); } + throw Error('Error with request resource response'); + }); +}; + +export { + fetchCountries, + fetchCities, + fetchReferenceAddresses +}; diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/AddAddress.vue b/src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/AddAddress.vue index 821456a26..f7b233a67 100644 --- a/src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/AddAddress.vue +++ b/src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/AddAddress.vue @@ -5,7 +5,7 @@ @@ -72,13 +83,13 @@ - - diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/AddAddress/AddressMore.vue b/src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/AddAddress/AddressMore.vue new file mode 100644 index 000000000..b216d5ed0 --- /dev/null +++ b/src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/AddAddress/AddressMore.vue @@ -0,0 +1,112 @@ + + + diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/AddAddress/AddressSelection.vue b/src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/AddAddress/AddressSelection.vue new file mode 100644 index 000000000..161cc281b --- /dev/null +++ b/src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/AddAddress/AddressSelection.vue @@ -0,0 +1,38 @@ + + + diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/AddAddress/CitySelection.vue b/src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/AddAddress/CitySelection.vue new file mode 100644 index 000000000..61a23cba4 --- /dev/null +++ b/src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/AddAddress/CitySelection.vue @@ -0,0 +1,38 @@ + + + diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/AddAddress/CountrySelection.vue b/src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/AddAddress/CountrySelection.vue new file mode 100644 index 000000000..b63e4890e --- /dev/null +++ b/src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/AddAddress/CountrySelection.vue @@ -0,0 +1,38 @@ + + + diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/AddressSelection.vue b/src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/AddressSelection.vue deleted file mode 100644 index 36c9f0b9e..000000000 --- a/src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/AddressSelection.vue +++ /dev/null @@ -1,29 +0,0 @@ - - - diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/CitySelection.vue b/src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/CitySelection.vue deleted file mode 100644 index 76e922346..000000000 --- a/src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/CitySelection.vue +++ /dev/null @@ -1,29 +0,0 @@ - - - diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/CountrySelection.vue b/src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/CountrySelection.vue deleted file mode 100644 index 4981916b6..000000000 --- a/src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/CountrySelection.vue +++ /dev/null @@ -1,29 +0,0 @@ - - -