Skip to content

Commit b4a5eca

Browse files
refactor: replace isAddMode with enum PersonneDialogState
1 parent 255e2af commit b4a5eca

File tree

6 files changed

+33
-24
lines changed

6 files changed

+33
-24
lines changed

src/main/webapp/src/components/dialogs/AdditionalDialog.vue

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,7 @@ import { useI18n } from 'vue-i18n';
1818
1919
const configurationStore = useConfigurationStore();
2020
const { isEditAllowed } = configurationStore;
21-
const {
22-
currentStructureId,
23-
structureTab,
24-
isAdditional,
25-
// isAddMode
26-
} = storeToRefs(configurationStore);
21+
const { currentStructureId, structureTab, isAdditional } = storeToRefs(configurationStore);
2722
2823
const fonctionStore = useFonctionStore();
2924
const { customMapping } = storeToRefs(fonctionStore);
@@ -54,7 +49,6 @@ const modelValue = computed<boolean>({
5449
const setSelectedUser = (id: number | undefined) => {
5550
currentPersonne.value = undefined;
5651
if (id) {
57-
// isAddMode.value = true;
5852
initCurrentPersonne(id, false);
5953
} else currentPersonne.value = undefined;
6054
};

src/main/webapp/src/components/dialogs/personne/PersonneDialog.vue

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import PersonneDialogInfo from '@/components/dialogs/personne/PersonneDialogInfo
44
import { useConfigurationStore } from '@/stores/configurationStore.ts';
55
import { useFonctionStore } from '@/stores/fonctionStore.ts';
66
import { usePersonneStore } from '@/stores/personneStore.ts';
7+
import { PersonneDialogState } from '@/types/enums/PersonneDialogState';
78
import { Tabs } from '@/types/enums/Tabs.ts';
89
import debounce from 'lodash.debounce';
910
import { storeToRefs } from 'pinia';
@@ -12,7 +13,7 @@ import { useI18n } from 'vue-i18n';
1213
1314
const configurationStore = useConfigurationStore();
1415
const { isEditAllowed } = configurationStore;
15-
const { structureTab, isAddMode } = storeToRefs(configurationStore);
16+
const { structureTab, personneDialogState } = storeToRefs(configurationStore);
1617
1718
const fonctionStore = useFonctionStore();
1819
const { customMapping, isCustomMapping } = storeToRefs(fonctionStore);
@@ -30,20 +31,23 @@ const modelValue = computed<boolean>({
3031
});
3132
3233
const title = computed<string>(() => {
33-
if (currentPersonne.value) {
34-
return isAddMode.value
35-
? `${t('person.information.additionalFunction', 2)} - ${currentPersonne.value.cn}`
36-
: currentPersonne.value.cn;
34+
if (!currentPersonne.value) return '';
35+
const { cn } = currentPersonne.value;
36+
switch (personneDialogState.value) {
37+
case PersonneDialogState.ManageAdditional:
38+
return `${t('person.information.additionalFunction', 2)} - ${cn}`;
39+
case PersonneDialogState.Info:
40+
default:
41+
return cn;
3742
}
38-
return '';
3943
});
4044
4145
// Reset modal on close
4246
watch(isCurrentPersonne, (newValue) => {
4347
if (!newValue) {
4448
const reset = debounce(() => {
4549
currentPersonne.value = undefined;
46-
isAddMode.value = false;
50+
personneDialogState.value = PersonneDialogState.Info;
4751
}, 200);
4852
reset();
4953
}
@@ -55,16 +59,16 @@ watch(isCurrentPersonne, (newValue) => {
5559
<v-card>
5660
<v-toolbar color="rgba(255, 255, 255, 0)">
5761
<v-toolbar-title class="text-h6">{{ title }}</v-toolbar-title>
58-
<template v-if="!isAddMode" #append>
62+
<template v-if="personneDialogState == PersonneDialogState.Info" #append>
5963
<v-btn icon="fas fa-xmark" color="default" variant="plain" @click="isCurrentPersonne = false" />
6064
</template>
6165
</v-toolbar>
6266

63-
<personne-dialog-info v-if="!isAddMode" :personne="currentPersonne" />
67+
<personne-dialog-info v-if="personneDialogState == PersonneDialogState.Info" :personne="currentPersonne" />
6468

6569
<personne-dialog-additional
6670
v-if="
67-
isAddMode &&
71+
personneDialogState == PersonneDialogState.ManageAdditional &&
6872
structureTab == Tabs.SchoolStaff &&
6973
isCustomMapping &&
7074
isEditAllowed(currentPersonne ? currentPersonne.etat : '')

src/main/webapp/src/components/dialogs/personne/PersonneDialogAdditional.vue

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import CheckboxLayout from '@/components/layouts/CheckboxLayout.vue';
33
import { setPersonneAdditional } from '@/services/personneService.ts';
44
import { useConfigurationStore } from '@/stores/configurationStore.ts';
55
import { usePersonneStore } from '@/stores/personneStore.ts';
6+
import { PersonneDialogState } from '@/types/enums/PersonneDialogState.ts';
67
import type { Filiere } from '@/types/filiereType.ts';
78
import type { Personne } from '@/types/personneType.ts';
89
import { toIdentifier } from '@/utils/accountUtils.ts';
@@ -13,7 +14,7 @@ import { toast } from 'vue3-toastify';
1314
import { useI18n } from 'vue-i18n';
1415
1516
const configurationStore = useConfigurationStore();
16-
const { currentStructureId, isAddMode } = storeToRefs(configurationStore);
17+
const { currentStructureId, personneDialogState } = storeToRefs(configurationStore);
1718
1819
const personneStore = usePersonneStore();
1920
const { refreshCurrentPersonne } = personneStore;
@@ -68,7 +69,7 @@ const save = async () => {
6869
};
6970
7071
const cancel = () => {
71-
isAddMode.value = false;
72+
personneDialogState.value = PersonneDialogState.Info;
7273
};
7374
7475
const resetAddMode = (success?: boolean) => {
@@ -79,7 +80,7 @@ const resetAddMode = (success?: boolean) => {
7980
} else if (!success && success != undefined) {
8081
toast.error(t(`toast.additional.error.${title}`));
8182
}
82-
isAddMode.value = false;
83+
cancel();
8384
};
8485
8586
onMounted(() => {

src/main/webapp/src/components/dialogs/personne/PersonneDialogInfo.vue

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { useFonctionStore } from '@/stores/fonctionStore.ts';
66
import { usePersonneStore } from '@/stores/personneStore.ts';
77
import type { enumValues } from '@/types/enumValuesType.ts';
88
import { CategoriePersonne } from '@/types/enums/CategoriePersonne.ts';
9+
import { PersonneDialogState } from '@/types/enums/PersonneDialogState.ts';
910
import { Tabs } from '@/types/enums/Tabs.ts';
1011
import type { Personne } from '@/types/personneType.ts';
1112
import { getCategoriePersonne, getEtat } from '@/utils/accountUtils.ts';
@@ -17,7 +18,7 @@ import { useI18n } from 'vue-i18n';
1718
1819
const configurationStore = useConfigurationStore();
1920
const { isEditAllowed, getLoginOffice } = configurationStore;
20-
const { structureTab, isAddMode } = storeToRefs(configurationStore);
21+
const { structureTab, personneDialogState } = storeToRefs(configurationStore);
2122
2223
const fonctionStore = useFonctionStore();
2324
const { allFilieres, isCustomMapping } = storeToRefs(fonctionStore);
@@ -141,7 +142,7 @@ const isInfo2 = useSessionStorage<boolean>(`${__APP_SLUG__}.is-info2`, true);
141142
density="compact"
142143
:text="t(hasStructureAdditionalFonctions ? 'button.edit' : 'button.add')"
143144
class="ml-2"
144-
@click="isAddMode = true"
145+
@click="personneDialogState = PersonneDialogState.ManageAdditional"
145146
>
146147
<template #prepend>
147148
<v-icon :icon="hasStructureAdditionalFonctions ? 'fas fa-pen' : 'fas fa-plus'" size="sm" />

src/main/webapp/src/stores/configurationStore.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { getConfiguration } from '@/services/configurationService.ts';
22
import type { Configuration } from '@/types/configurationType.ts';
33
import type { enumValues } from '@/types/enumValuesType.ts';
4+
import { PersonneDialogState } from '@/types/enums/PersonneDialogState.ts';
45
import { Tabs } from '@/types/enums/Tabs.ts';
56
import type { Identity } from '@/types/identityType.ts';
67
import type { SimplePersonne } from '@/types/personneType.ts';
@@ -115,10 +116,13 @@ export const useConfigurationStore = defineStore('configuration', () => {
115116

116117
const isLoading = ref<boolean>(false);
117118

119+
/* -- Gestion de la modale personne -- */
120+
121+
const personneDialogState = ref<PersonneDialogState>(PersonneDialogState.Info);
122+
118123
/* -- Gestion de la modale des complémentaires -- */
119124

120125
const isAdditional = ref<boolean>(false);
121-
const isAddMode = ref<boolean>(false);
122126

123127
const isQuickAdd = ref<boolean>(false);
124128
const requestAdd = ref<{
@@ -150,8 +154,8 @@ export const useConfigurationStore = defineStore('configuration', () => {
150154
setStructureTab,
151155
search,
152156
isLoading,
157+
personneDialogState,
153158
isAdditional,
154-
isAddMode,
155159
isQuickAdd,
156160
requestAdd,
157161
identity,
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
export enum PersonneDialogState {
2+
Info,
3+
ManageAdditional,
4+
ManageFunctions,
5+
}

0 commit comments

Comments
 (0)