chore: retire legacy model catalogs
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user