Merge branch 'household_integration'

This commit is contained in:
Mathieu Jaumotte 2021-09-14 11:30:46 +02:00
commit dd0e695ac2
4 changed files with 142 additions and 73 deletions

View File

@ -1,5 +1,5 @@
<template> <template>
<h2>{{ $t('household_members_editor.concerned.title') }}</h2> <h2 class="mt-4">{{ $t('household_members_editor.concerned.title') }}</h2>
<h3 v-if="needsPositionning"> <h3 v-if="needsPositionning">
{{ $t('household_members_editor.concerned.persons_to_positionnate') }} {{ $t('household_members_editor.concerned.persons_to_positionnate') }}

View File

@ -1,30 +1,71 @@
<template> <template>
<h2>{{ $t('household_members_editor.household_part') }}</h2>
<h2 class="mt-4">{{ $t('household_members_editor.household_part') }}</h2>
<div v-if="hasHousehold"> <div v-if="hasHousehold">
<div class="flex-table"> <div class="flex-table">
<div class="item-bloc"> <div class="item-bloc">
<household-render-box :household="household" :isAddressMultiline="true"></household-render-box> <household-render-box :household="household" :isAddressMultiline="true"></household-render-box>
</div> </div>
</div> </div>
<div v-if="isHouseholdNew && !hasHouseholdAddress"> <div v-if="isHouseholdNew && !hasHouseholdAddress">
<h3>{{ $t('household_members_editor.household.where_live_the_household') }}</h3> <div v-if="hasAddressSuggestion" class="householdAddressSuggestion my-5">
<h4 class="mb-3">
<div v-if="filterAddressesSuggestion.length > 0" class="flex-table householdAddressSuggestionList"> {{ $t('household_members_editor.household.where_live_the_household') }}
<div v-for="a in filterAddressesSuggestion" class="item-bloc"> </h4>
<address-render-box :address="a"></address-render-box> <div class="accordion" id="addressSuggestions">
<ul class="record_actions"> <div class="accordion-item">
<li> <h2 class="accordion-header" id="heading_address_suggestions">
<button class="btn btn-action" @click="setHouseholdAddress(a)"> <button v-if="!showAddressSuggestion"
{{ $t('household_members_editor.household.household_live_to_this_address') }} class="accordion-button collapsed"
</button> type="button"
</li> data-bs-toggle="collapse"
</ul> aria-expanded="false"
</div> @click="toggleAddressSuggestion">
</div> {{ $tc('household_members_editor.show_household_suggestion', countAddressSuggestion) }}
<div v-else> </button>
<span class="chill-no-data-statement">{{ $t('household_members_editor.household.no_suggestions') }}</span> <button v-if="showAddressSuggestion"
class="accordion-button"
type="button"
data-bs-toggle="collapse"
aria-expanded="true"
@click="toggleAddressSuggestion">
{{ $t('household_members_editor.hide_household_suggestion') }}
</button>
</h2>
<div class="accordion-collapse" id="collapse_address_suggestions"
aria-labelledby="heading_address_suggestions" data-bs-parent="#addressSuggestions">
<div v-if="showAddressSuggestion">
<div class="flex-table householdAddressSuggestionList">
<div v-for="a in filterAddressesSuggestion" class="item-bloc">
<div class="float-button bottom">
<div class="box">
<div class="action">
<ul class="record_actions">
<li>
<button class="btn btn-sm btn-choose" @click="setHouseholdAddress(a)">
{{ $t('household_members_editor.household.household_live_to_this_address') }}
</button>
</li>
</ul>
</div>
<ul class="list-content fa-ul">
<li>
<i class="fa fa-li fa-map-marker"></i>
<address-render-box :address="a"></address-render-box>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div> </div>
<ul class="record_actions"> <ul class="record_actions">
@ -39,8 +80,8 @@
</add-address> </add-address>
</li> </li>
</ul> </ul>
</div> </div>
<div v-if="isHouseholdNew && hasHouseholdAddress"> <div v-if="isHouseholdNew && hasHouseholdAddress">
<ul class="record_actions"> <ul class="record_actions">
<li > <li >
@ -49,34 +90,15 @@
</button> </button>
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
<div v-else-if="isForceLeaveWithoutHousehold"> <div v-else-if="isForceLeaveWithoutHousehold">
{{ $t('household_members_editor.household.will_leave_any_household') }} {{ $t('household_members_editor.household.will_leave_any_household') }}
</div> </div>
<div v-else> <div v-else class="alert alert-info">{{ $t('household_members_editor.household.no_household_choose_one') }}</div>
<div class="alert alert-info">{{ $t('household_members_editor.household.no_household_choose_one') }}</div>
</div>
<ul v-if="allowChangeHousehold" class="record_actions"> <ul v-if="allowChangeHousehold" class="record_actions">
<li v-if="!showHouseholdSuggestion" class="cancel">
<button
class="btn btn-misc"
@click="toggleHouseholdSuggestion"
><i class="fa fa-fw fa-caret-right"></i>
{{ $tc('household_members_editor.show_household_suggestion',
countHouseholdSuggestion) }}
</button>
</li>
<li v-if="showHouseholdSuggestion && hasHouseholdSuggestion" class="cancel">
<button
class="btn btn-misc"
@click="toggleHouseholdSuggestion"
><i class="fa fa-fw fa-caret-down"></i>
{{ $t('household_members_editor.hide_household_suggestion') }}
</button>
</li>
<li v-if="allowHouseholdCreate"> <li v-if="allowHouseholdCreate">
<button class="btn btn-create" @click="createHousehold"> <button class="btn btn-create" @click="createHousehold">
{{ $t('household_members_editor.household.create_household') }} {{ $t('household_members_editor.household.create_household') }}
@ -99,29 +121,54 @@
</li> </li>
</ul> </ul>
<div class="householdSuggestions"> <div v-if="hasHouseholdSuggestion" class="householdSuggestions my-5">
<div v-if="showHouseholdSuggestion && hasHouseholdSuggestion"> <h4 class="mb-3">
{{ $t('household_members_editor.household_for_participants_accompanying_period') }} :
<h3>{{ $t('household_members_editor.suggestions') }}</h3> </h4>
<p>{{ $t('household_members_editor.household_for_participants_accompanying_period') }}:</p> <div class="accordion" id="householdSuggestions">
<div class="accordion-item">
<div class="flex-table householdSuggestionList"> <h2 class="accordion-header" id="heading_household_suggestions">
<div v-for="h in filterHouseholdSuggestionByAccompanyingPeriod" class="item-bloc"> <button v-if="!showHouseholdSuggestion"
<household-render-box :household="h"></household-render-box> class="accordion-button collapsed"
<ul class="record_actions"> type="button"
<li> data-bs-toggle="collapse"
<button class="btn btn-sm btn-choose" @click="selectHousehold(h)"> aria-expanded="false"
{{ $t('household_members_editor.select_household') }} @click="toggleHouseholdSuggestion">
</button> {{ $tc('household_members_editor.show_household_suggestion', countHouseholdSuggestion) }}
</li> </button>
</ul> <button v-if="showHouseholdSuggestion"
</div> class="accordion-button"
type="button"
data-bs-toggle="collapse"
aria-expanded="true"
@click="toggleHouseholdSuggestion">
{{ $t('household_members_editor.hide_household_suggestion') }}
</button>
<!-- disabled bootstrap behaviour: data-bs-target="#collapse_household_suggestions" aria-controls="collapse_household_suggestions" -->
</h2>
<div class="accordion-collapse" id="collapse_household_suggestions"
aria-labelledby="heading_household_suggestions" data-bs-parent="#householdSuggestions">
<div v-if="showHouseholdSuggestion">
<div class="flex-table householdSuggestionList">
<div v-for="h in filterHouseholdSuggestionByAccompanyingPeriod" class="item-bloc">
<household-render-box :household="h"></household-render-box>
<ul class="record_actions">
<li>
<button class="btn btn-sm btn-choose" @click="selectHousehold(h)">
{{ $t('household_members_editor.select_household') }}
</button>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div> </div>
</div>
</div>
</div>
</template> </template>
<script> <script>
import { mapGetters, mapState } from 'vuex'; import { mapGetters, mapState } from 'vuex';
import HouseholdRenderBox from 'ChillPersonAssets/vuejs/_components/Entity/HouseholdRenderBox.vue'; import HouseholdRenderBox from 'ChillPersonAssets/vuejs/_components/Entity/HouseholdRenderBox.vue';
@ -154,12 +201,12 @@ export default {
}, },
button: { button: {
text: { text: {
create: null, create: 'household_members_editor.household.or_create_new_address',
edit: null, edit: null,
} }
}, },
title: { title: {
create: null, create: 'household_members_editor.household.create_new_address',
edit: null, edit: null,
}, },
} }
@ -173,11 +220,14 @@ export default {
'hasHouseholdSuggestion', 'hasHouseholdSuggestion',
'countHouseholdSuggestion', 'countHouseholdSuggestion',
'filterHouseholdSuggestionByAccompanyingPeriod', 'filterHouseholdSuggestionByAccompanyingPeriod',
'hasAddressSuggestion',
'countAddressSuggestion',
'filterAddressesSuggestion', 'filterAddressesSuggestion',
'hasHouseholdAddress', 'hasHouseholdAddress',
]), ]),
...mapState([ ...mapState([
'showHouseholdSuggestion', 'showHouseholdSuggestion',
'showAddressSuggestion'
]), ]),
household() { household() {
return this.$store.state.household; return this.$store.state.household;
@ -218,8 +268,12 @@ export default {
toggleHouseholdSuggestion() { toggleHouseholdSuggestion() {
this.$store.commit('toggleHouseholdSuggestion'); this.$store.commit('toggleHouseholdSuggestion');
}, },
toggleAddressSuggestion() {
this.$store.commit('toggleAddressSuggestion');
},
selectHousehold(h) { selectHousehold(h) {
this.$store.dispatch('selectHousehold', h); this.$store.dispatch('selectHousehold', h);
this.toggleHouseholdSuggestion();
}, },
removeHousehold() { removeHousehold() {
this.$store.dispatch('removeHousehold'); this.$store.dispatch('removeHousehold');
@ -236,7 +290,7 @@ export default {
}, },
removeHouseholdAddress() { removeHouseholdAddress() {
this.$store.commit('removeHouseholdAddress'); this.$store.commit('removeHouseholdAddress');
} },
}, },
}; };
@ -246,12 +300,15 @@ export default {
div#household_members_editor div, div#household_members_editor div,
div.householdSuggestionList { div.householdSuggestionList {
&.flex-table div.item-bloc div.item-row div.item-col { &.flex-table {
&:first-child { margin: 0;
width: 25%; div.item-bloc div.item-row div.item-col {
} &:first-child {
&:last-child { width: 25%;
display: initial; }
&:last-child {
display: initial;
}
} }
} }
} }

View File

@ -7,14 +7,16 @@ const appMessages = {
household: { household: {
no_household_choose_one: "Aucun ménage de destination. Choisissez un ménage. Les usagers concernés par la modification apparaitront ensuite.", no_household_choose_one: "Aucun ménage de destination. Choisissez un ménage. Les usagers concernés par la modification apparaitront ensuite.",
new_household: "Nouveau ménage", new_household: "Nouveau ménage",
create_household: "Créer un ménage de destination", create_household: "Créer un nouveau ménage de destination",
search_household: "Chercher un ménage", search_household: "Chercher un ménage",
will_leave_any_household: "Ne rejoignent pas de ménage", will_leave_any_household: "Ne rejoignent pas de ménage",
leave_without_household: "Sans nouveau ménage", leave_without_household: "Sans nouveau ménage",
where_live_the_household: "À quelle adresse habite ce ménage ?", where_live_the_household: "À quelle adresse habite ce ménage ?",
household_live_to_this_address: "Le ménage habite cette adresse", household_live_to_this_address: "Sélectionner l'adresse",
no_suggestions: "Aucune adresse à suggérer", no_suggestions: "Aucune adresse à suggérer",
delete_this_address: "Supprimer cette adresse", delete_this_address: "Supprimer cette adresse",
create_new_address: "Créer une nouvelle adresse",
or_create_new_address: "Ou créer une nouvelle adresse",
}, },
concerned: { concerned: {
title: "Nouveaux membres du ménage", title: "Nouveaux membres du ménage",
@ -36,8 +38,8 @@ const appMessages = {
suggestions: "Suggestions", suggestions: "Suggestions",
hide_household_suggestion: "Masquer les suggestions", hide_household_suggestion: "Masquer les suggestions",
show_household_suggestion: 'Aucune suggestion | Afficher une suggestion | Afficher {count} suggestions', show_household_suggestion: 'Aucune suggestion | Afficher une suggestion | Afficher {count} suggestions',
household_for_participants_accompanying_period: "Ces ménages partagent le même parcours", household_for_participants_accompanying_period: "Des ménages partagent le même parcours",
select_household: "Sélectionner", select_household: "Sélectionner le ménage",
dates_title: "Période de validité", dates_title: "Période de validité",
dates: { dates: {
start_date: "Début de validité", start_date: "Début de validité",

View File

@ -36,6 +36,7 @@ const store = createStore({
householdSuggestionByAccompanyingPeriod: [], householdSuggestionByAccompanyingPeriod: [],
showHouseholdSuggestion: window.household_members_editor_expand_suggestions === 1, showHouseholdSuggestion: window.household_members_editor_expand_suggestions === 1,
addressesSuggestion: [], addressesSuggestion: [],
showAddressSuggestion: true,
warnings: [], warnings: [],
errors: [] errors: []
}, },
@ -73,6 +74,12 @@ const store = createStore({
.filter(h => h.id !== state.household.id) .filter(h => h.id !== state.household.id)
; ;
}, },
hasAddressSuggestion(state, getters) {
return getters.filterAddressesSuggestion.length > 0;
},
countAddressSuggestion(state, getters) {
return getters.filterAddressesSuggestion.length;
},
filterAddressesSuggestion(state) { filterAddressesSuggestion(state) {
if (state.household === null) { if (state.household === null) {
return state.addressesSuggestion; return state.addressesSuggestion;
@ -260,6 +267,9 @@ const store = createStore({
toggleHouseholdSuggestion(state) { toggleHouseholdSuggestion(state) {
state.showHouseholdSuggestion = !state.showHouseholdSuggestion; state.showHouseholdSuggestion = !state.showHouseholdSuggestion;
}, },
toggleAddressSuggestion(state) {
state.showAddressSuggestion = !state.showAddressSuggestion;
},
setWarnings(state, warnings) { setWarnings(state, warnings) {
state.warnings = warnings; state.warnings = warnings;
// reset errors, which should come from servers // reset errors, which should come from servers