chore: retire legacy model catalogs

This commit is contained in:
MatthieuTD
2025-10-02 16:29:50 +02:00
parent 386a1c9d1b
commit c5f2c568b6
19 changed files with 1234 additions and 3597 deletions

View File

@@ -36,12 +36,6 @@
"Non défini"
}}
</span>
<span
v-if="piece.pieceModel"
class="badge badge-outline badge-primary badge-sm"
>
Modèle : {{ piece.pieceModel.name }}
</span>
<span
v-if="piece.parentComponentName"
class="badge badge-ghost badge-sm"
@@ -104,33 +98,6 @@
</div>
</div>
<div v-if="isEditMode && piece.typeMachinePieceRequirement" class="mt-3">
<label class="label">
<span class="label-text text-sm font-medium">Modèle de pièce</span>
<span class="label-text-alt text-xs">
{{
piece.typeMachinePieceRequirement.label ||
piece.typeMachinePieceRequirement.typePiece?.name ||
"Groupe"
}}
</span>
</label>
<select
:value="selectedPieceModelId"
class="select select-bordered select-sm w-full"
@change="assignPieceModel($event.target.value)"
>
<option value="">Définir manuellement</option>
<option
v-for="model in pieceModelOptions"
:key="model.id"
:value="model.id"
>
{{ model.name }}
</option>
</select>
</div>
<!-- Champs personnalisés de la pièce -->
<div
v-if="displayedCustomFields.length"
@@ -381,17 +348,12 @@ const props = defineProps({
type: Boolean,
default: false,
},
pieceModelOptions: {
type: Array,
default: () => [],
},
});
const emit = defineEmits([
"update",
"edit",
"custom-field-update",
"assign-model",
]);
// Données locales isolées pour cette pièce
@@ -412,10 +374,13 @@ const documentIcon = (doc) =>
getFileIcon({ name: doc.filename || doc.name, mime: doc.mimeType });
const previewDocument = ref(null);
const previewVisible = ref(false);
const selectedPieceModelId = computed(
() => props.piece.pieceModelId || props.piece.pieceModel?.id || ""
);
const pieceModelOptions = computed(() => props.pieceModelOptions || []);
const extractStructureCustomFields = (structure) => {
if (!structure || typeof structure !== "object") {
return [];
}
const customFields = structure.customFields;
return Array.isArray(customFields) ? customFields : [];
};
function fieldKeyFromNameAndType(name, type) {
const normalizedName = typeof name === 'string' ? name : '';
const normalizedType = typeof type === 'string' ? type : '';
@@ -529,25 +494,53 @@ function mergeFieldDefinitionsWithValues(definitions, values) {
return merged;
}
const pieceDefinitionSources = computed(() => {
const requirement = props.piece.typeMachinePieceRequirement || {};
const type = requirement.typePiece || props.piece.typePiece || {};
const definitions = [];
const pushFields = (collection) => {
if (Array.isArray(collection)) {
definitions.push(...collection);
}
};
pushFields(props.piece.customFields);
pushFields(props.piece.definition?.customFields);
pushFields(props.piece.typePiece?.customFields);
pushFields(type.customFields);
pushFields(requirement.typePiece?.customFields);
pushFields(requirement.customFields);
pushFields(requirement.definition?.customFields);
[
props.piece.definition?.structure,
props.piece.typePiece?.structure,
type.structure,
type.pieceSkeleton,
props.piece.typePiece?.pieceSkeleton,
requirement.structure,
requirement.pieceSkeleton,
].forEach((structure) => {
const fields = extractStructureCustomFields(structure);
if (fields.length) {
definitions.push(...fields);
}
});
return definitions;
});
const displayedCustomFields = computed(() =>
mergeFieldDefinitionsWithValues(
props.piece.customFields,
pieceDefinitionSources.value,
props.piece.customFieldValues,
),
);
const candidateCustomFields = computed(() => {
const sources = [
props.piece.customFieldValues?.map((value) => value?.customField),
props.piece.typePiece?.customFields,
props.piece.typeMachinePieceRequirement?.typePiece?.customFields,
props.piece.typeMachinePieceRequirement?.customFields,
props.piece.pieceModel?.customFields,
props.piece.customFields,
];
const map = new Map();
sources.forEach((collection) => {
const register = (collection) => {
if (!Array.isArray(collection)) {
return;
}
@@ -563,7 +556,10 @@ const candidateCustomFields = computed(() => {
}
map.set(key, item);
});
});
};
register(props.piece.customFieldValues?.map((value) => value?.customField));
register(pieceDefinitionSources.value);
return Array.from(map.values());
});
@@ -827,22 +823,6 @@ const updatePiece = () => {
});
};
const assignPieceModel = (value) => {
const previousModelId =
props.piece.pieceModelId || props.piece.pieceModel?.id || null;
const previousModel = props.piece.pieceModel || null;
props.piece.pieceModelId = value || null;
if (!value) {
props.piece.pieceModel = null;
}
emit("assign-model", {
pieceId: props.piece.id,
pieceModelId: value || null,
previousModelId,
previousModel,
});
};
const updateCustomFieldValue = async (fieldValueId, field) => {
if (!field || resolveFieldReadOnly(field)) {
return;