From d393e7489690237afb098c3b720b192f8e0e5f15 Mon Sep 17 00:00:00 2001 From: Mathieu Jaumotte Date: Mon, 3 May 2021 21:02:15 +0200 Subject: [PATCH] save checkboxes state in store --- .../Resources/public/scss/chillmain.scss | 15 ++++++--- .../Resources/public/vuejs/_js/i18n.js | 13 ++++++-- .../vuejs/AccompanyingCourse/store/index.js | 20 +++++++---- .../public/vuejs/_components/AddPersons.vue | 33 +++++++++++++++---- .../vuejs/_components/PersonSuggestion.vue | 31 ++++++++++++++--- .../Resources/public/vuejs/_js/i18n.js | 3 +- 6 files changed, 92 insertions(+), 23 deletions(-) diff --git a/src/Bundle/ChillMainBundle/Resources/public/scss/chillmain.scss b/src/Bundle/ChillMainBundle/Resources/public/scss/chillmain.scss index e9cc68551..288cdcf89 100644 --- a/src/Bundle/ChillMainBundle/Resources/public/scss/chillmain.scss +++ b/src/Bundle/ChillMainBundle/Resources/public/scss/chillmain.scss @@ -96,11 +96,20 @@ div.vue-component { //// AddPersons modal div.results { - padding: 0 1.3em; div.list-item { line-height: 26pt; + padding: 0.3em 0.8em; display: flex; flex-direction: row; + &.checked { + background-color: #ececec; + border-bottom: 1px dotted #d9d9d9; + } + div.container { + & > input { + margin-right: 0.8em; + } + } div.right_actions { margin: 0 0 0 auto; & > * { @@ -110,14 +119,12 @@ div.results { border: 1px solid lightgrey; font-size: 70%; padding: 4px; - } - span { } } } } -a.discret { +.discret { color: grey; margin-right: 1em; } diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/_js/i18n.js b/src/Bundle/ChillMainBundle/Resources/public/vuejs/_js/i18n.js index 0355774cc..2d786039d 100644 --- a/src/Bundle/ChillMainBundle/Resources/public/vuejs/_js/i18n.js +++ b/src/Bundle/ChillMainBundle/Resources/public/vuejs/_js/i18n.js @@ -18,6 +18,14 @@ const datetimeFormats = { } } }; +//const pluralizationRules = { +// 'fr': (choice, choicesLength) => { +// if (choice === 0) { +// return 0; +// } +// return (choicesLength < 4) ? 2 : 3; +// } +//}; const messages = { fr: { action: { @@ -43,10 +51,11 @@ const messages = { const _createI18n = (appMessages) => { Object.assign(messages.fr, appMessages.fr); return createI18n({ + locale: 'fr', + fallbackLocale: 'fr', datetimeFormats, messages, - locale: 'fr', - fallbackLocale: 'fr' + //pluralizationRules }) }; diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/store/index.js b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/store/index.js index 04a08a59a..9cabfd0b1 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/store/index.js +++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/store/index.js @@ -16,7 +16,8 @@ let getDataPromise = getAccompanyingCourse(id) accompanying_course: accompanying_course, add_persons: { query: "", - suggested: [] + suggested: [], + selected: [] }, errorMsg: [] }, @@ -24,21 +25,25 @@ let getDataPromise = getAccompanyingCourse(id) }, mutations: { removeParticipation(state, item) { - console.log('remove item', item.id); + //console.log('remove item', item.id); state.accompanying_course.participations = state.accompanying_course.participations.filter( participation => participation !== item ); }, addParticipation(state, item) { - console.log('add new item'); + //console.log('add new item'); state.accompanying_course.participations.push(item); }, setQuery(state, query) { - console.log('q=', query); + //console.log('q=', query); state.add_persons = Object.assign({}, state.add_persons, query); }, loadSuggestions(state, suggestions) { state.add_persons.suggested = suggestions; + }, + updateSelected(state, value) { + console.log('update value', value); + state.add_persons.selected = value; } }, actions: { @@ -49,8 +54,8 @@ let getDataPromise = getAccompanyingCourse(id) commit('addParticipation', payload); postParticipation(id, payload.id).catch((error) => { commit('removeParticipation', payload); - state.errorMsg.push(error.message); - }) // result action ?? + state.errorMsg.push(error.message); // result action ?? + }); }, setQuery({ commit }, payload) { commit('setQuery', payload); @@ -63,6 +68,9 @@ let getDataPromise = getAccompanyingCourse(id) } else { commit('loadSuggestions', []); } + }, + updateSelected({ commit }, payload) { + commit('updateSelected', payload); } } }); diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/AddPersons.vue b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/AddPersons.vue index 73bb1da3d..463683019 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/AddPersons.vue +++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/AddPersons.vue @@ -13,15 +13,27 @@ @@ -76,12 +88,21 @@ export default { suggested() { return this.add_persons.suggested; }, - counter() { + suggestedCounter() { if (! this.add_persons.suggested.results) { return 0; } return this.add_persons.suggested.results.length; + }, + selected() { + return this.add_persons.selected; + }, + selectedCounter() { + if (! this.add_persons.selected) { return 0; } + return this.add_persons.selected.length; }, - AddPersons() { + addPersons() { console.log('add persons'); + // code here + this.modal.showModal = false; } } } diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/PersonSuggestion.vue b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/PersonSuggestion.vue index af6c53645..86071ae22 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/PersonSuggestion.vue +++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/PersonSuggestion.vue @@ -1,20 +1,30 @@ diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_js/i18n.js b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_js/i18n.js index 4b24b8c7a..ec57921f4 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_js/i18n.js +++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_js/i18n.js @@ -3,7 +3,8 @@ const personMessages = { add_persons: { search_add_others_persons: "Rechercher et ajouter d'autres usagers", title: "Ajouter des usagers", - counter: "Pas de résultats | 1 résultat | {count} résultats", + suggested_counter: "Pas de résultats | 1 résultat | {count} résultats", + selected_counter: " / 1 sélectionné | / {count} sélectionnés", search_some_persons: "Rechercher des personnes..", }, item: {