diff --git a/app/components/model-types/ConversionModal.vue b/app/components/model-types/ConversionModal.vue new file mode 100644 index 0000000..22ba69d --- /dev/null +++ b/app/components/model-types/ConversionModal.vue @@ -0,0 +1,172 @@ + + + + + Convertir la catégorie + + + + + + Vérification de la conversion… + + + + + {{ checkError }} + + + + + + La conversion de « {{ modelType?.name }} » est impossible pour les raisons suivantes : + + + + + {{ blocker }} + + + + + + + + + {{ directionLabel }} + + + {{ checkResult.itemCount }} élément(s) seront convertis. Cette opération est irréversible. + + + + + + Éléments concernés : + + + + {{ name }} + + + + + + {{ convertError }} + + + + + + Fermer + + + + Convertir + + + + + + + diff --git a/app/components/model-types/ManagementView.vue b/app/components/model-types/ManagementView.vue index 86f182a..3b96f39 100644 --- a/app/components/model-types/ManagementView.vue +++ b/app/components/model-types/ManagementView.vue @@ -29,12 +29,21 @@ :total="total" :limit="limit" :offset="offset" + :category="selectedCategory" @related="openRelatedModal" @edit="openEditPage" @delete="confirmDelete" + @convert="openConversionModal" @update:offset="onOffsetChange" /> + + @@ -96,6 +105,7 @@ import { computed, onBeforeUnmount, onMounted, ref, watch, type Ref } from "vue" import { useHead, useRouter } from "#imports"; import ModelTypesToolbar from "~/components/model-types/Toolbar.vue"; import ModelTypesTable from "~/components/model-types/Table.vue"; +import ModelTypesConversionModal from "~/components/model-types/ConversionModal.vue"; import { useApi } from "~/composables/useApi"; import { useUrlState } from "~/composables/useUrlState"; import { extractCollection } from "~/shared/utils/apiHelpers"; @@ -484,6 +494,26 @@ const closeRelatedModal = () => { relatedModalOpen.value = false; }; +const conversionModalOpen = ref(false); +const conversionTarget = ref(null); + +const openConversionModal = (item: ModelType) => { + conversionTarget.value = item; + conversionModalOpen.value = true; +}; + +const closeConversionModal = () => { + conversionModalOpen.value = false; +}; + +const onConverted = () => { + conversionModalOpen.value = false; + invalidateEntityTypeCache("PIECE"); + invalidateEntityTypeCache("COMPONENT"); + showSuccess("Catégorie convertie avec succès."); + refresh(); +}; + watch( () => searchInput.value, (value) => { diff --git a/app/components/model-types/Table.vue b/app/components/model-types/Table.vue index 2609555..f119901 100644 --- a/app/components/model-types/Table.vue +++ b/app/components/model-types/Table.vue @@ -48,6 +48,15 @@ Liés + + + Convertir + Éditer @@ -78,6 +87,15 @@ Liés + + + Convertir + Éditer @@ -118,6 +136,7 @@
+ La conversion de « {{ modelType?.name }} » est impossible pour les raisons suivantes : +
+ {{ directionLabel }} +
+ {{ checkResult.itemCount }} élément(s) seront convertis. Cette opération est irréversible. +
+ Éléments concernés : +