diff --git a/aas-web-ui/src/components/EditorComponents/AASForm.vue b/aas-web-ui/src/components/EditorComponents/AASForm.vue index bbeaa87c0..3d1ec6bf9 100644 --- a/aas-web-ui/src/components/EditorComponents/AASForm.vue +++ b/aas-web-ui/src/components/EditorComponents/AASForm.vue @@ -281,6 +281,9 @@ ); async function initializeInputs(): Promise { + // Always reset form values first to clear any stale data from previously opened elements + clearForm(); + if (props.newShell === false && props.aas) { const aas = await fetchAasById(props.aas.id); @@ -293,23 +296,23 @@ AASObject.value = instanceOrError.mustValue(); // console.log('AASObject: ', AASObject.value); // Set values of AAS - AASId.value = AASObject.value.id; - AASIdShort.value = AASObject.value.idShort; - displayName.value = AASObject.value.displayName; - description.value = AASObject.value.description; - AASCategory.value = AASObject.value.category; + AASId.value = AASObject.value.id ?? generateUUID(); + AASIdShort.value = AASObject.value.idShort ?? null; + displayName.value = AASObject.value.displayName ?? null; + description.value = AASObject.value.description ?? null; + AASCategory.value = AASObject.value.category ?? null; if (AASObject.value.administration !== null && AASObject.value.administration !== undefined) { - version.value = AASObject.value.administration.version; - revision.value = AASObject.value.administration.revision; - creator.value = AASObject.value.administration.creator; - templateId.value = AASObject.value.administration.templateId; + version.value = AASObject.value.administration.version ?? null; + revision.value = AASObject.value.administration.revision ?? null; + creator.value = AASObject.value.administration.creator ?? null; + templateId.value = AASObject.value.administration.templateId ?? null; } if (AASObject.value.assetInformation !== null && AASObject.value.assetInformation !== undefined) { - assetKind.value = AASObject.value.assetInformation.assetKind; - globalAssetId.value = AASObject.value.assetInformation.globalAssetId; - specificAssetIds.value = AASObject.value.assetInformation.specificAssetIds; - assetType.value = AASObject.value.assetInformation.assetType; - defaultThumbnail.value = AASObject.value.assetInformation.defaultThumbnail; + assetKind.value = AASObject.value.assetInformation.assetKind ?? aasTypes.AssetKind.Instance; + globalAssetId.value = AASObject.value.assetInformation.globalAssetId ?? null; + specificAssetIds.value = AASObject.value.assetInformation.specificAssetIds ?? null; + assetType.value = AASObject.value.assetInformation.assetType ?? null; + defaultThumbnail.value = AASObject.value.assetInformation.defaultThumbnail ?? null; } } } diff --git a/aas-web-ui/src/components/EditorComponents/SubmodelElements/BlobForm.vue b/aas-web-ui/src/components/EditorComponents/SubmodelElements/BlobForm.vue index ba1c770da..ad1ddbc59 100644 --- a/aas-web-ui/src/components/EditorComponents/SubmodelElements/BlobForm.vue +++ b/aas-web-ui/src/components/EditorComponents/SubmodelElements/BlobForm.vue @@ -228,7 +228,21 @@ usage of the 'Enter' key, make sure to edit the keyDown/keyUp method to not exec return border; }); + function resetFormValues(): void { + blobIdShort.value = null; + displayName.value = null; + description.value = null; + blobCategory.value = null; + blobContent.value = null; + contentType.value = 'application/unknown'; + semanticId.value = null; + openPanels.value = [0, 1]; + } + async function initializeInputs(): Promise { + // Always reset form values first to clear any stale data from previously opened elements + resetFormValues(); + if (!props.newBlob && props.blob) { const blobJSON = await fetchSme(props.blob.path); const instanceOrError = jsonization.blobFromJsonable(blobJSON); @@ -240,42 +254,13 @@ usage of the 'Enter' key, make sure to edit the keyDown/keyUp method to not exec blobObject.value = instanceOrError.mustValue(); - blobIdShort.value = blobObject.value.idShort; - - if (blobObject.value.displayName) { - displayName.value = blobObject.value.displayName; - } - - if (blobObject.value.description) { - description.value = blobObject.value.description; - } - - if (blobObject.value.category) { - blobCategory.value = blobObject.value.category; - } - - if (blobObject.value.value) { - blobContent.value = blobObject.value.value; - } - - if (blobObject.value.contentType) { - contentType.value = blobObject.value.contentType; - } - - if (blobObject.value.semanticId) { - semanticId.value = blobObject.value.semanticId; - } - - openPanels.value = [0, 1]; - } else { - blobIdShort.value = null; - displayName.value = null; - description.value = null; - blobCategory.value = null; - blobContent.value = null; - contentType.value = 'application/unknown'; - semanticId.value = null; - openPanels.value = [0, 1]; + blobIdShort.value = blobObject.value.idShort ?? null; + displayName.value = blobObject.value.displayName ?? null; + description.value = blobObject.value.description ?? null; + blobCategory.value = blobObject.value.category ?? null; + blobContent.value = blobObject.value.value ?? null; + contentType.value = blobObject.value.contentType ?? 'application/unknown'; + semanticId.value = blobObject.value.semanticId ?? null; } } diff --git a/aas-web-ui/src/components/EditorComponents/SubmodelElements/CollectionForm.vue b/aas-web-ui/src/components/EditorComponents/SubmodelElements/CollectionForm.vue index b76e42be8..9ec0b2d0e 100644 --- a/aas-web-ui/src/components/EditorComponents/SubmodelElements/CollectionForm.vue +++ b/aas-web-ui/src/components/EditorComponents/SubmodelElements/CollectionForm.vue @@ -303,7 +303,19 @@ editSMCDialog.value = false; } + function resetFormValues(): void { + smcIdShort.value = null; + displayName.value = null; + description.value = null; + smcCategory.value = null; + semanticId.value = null; + openPanels.value = [0]; + } + async function initializeInputs(): Promise { + // Always reset form values first to clear any stale data from previously opened elements + resetFormValues(); + if (!props.newSmc && props.smc) { const smcJSON = await fetchSme(props.smc.path); @@ -314,27 +326,11 @@ } smcObject.value = instanceOrError.mustValue(); - smcIdShort.value = smcObject.value.idShort; - if (smcObject.value.displayName) { - displayName.value = smcObject.value.displayName; - } - if (smcObject.value.description) { - description.value = smcObject.value.description; - } - if (smcObject.value.category) { - smcCategory.value = smcObject.value.category; - } - if (smcObject.value.semanticId) { - semanticId.value = smcObject.value.semanticId; - } - openPanels.value = [0]; - } else { - smcIdShort.value = null; - displayName.value = null; - description.value = null; - smcCategory.value = null; - semanticId.value = null; - openPanels.value = [0]; + smcIdShort.value = smcObject.value.idShort ?? null; + displayName.value = smcObject.value.displayName ?? null; + description.value = smcObject.value.description ?? null; + smcCategory.value = smcObject.value.category ?? null; + semanticId.value = smcObject.value.semanticId ?? null; } } diff --git a/aas-web-ui/src/components/EditorComponents/SubmodelElements/EntityForm.vue b/aas-web-ui/src/components/EditorComponents/SubmodelElements/EntityForm.vue index b5e4571d7..06b23c843 100644 --- a/aas-web-ui/src/components/EditorComponents/SubmodelElements/EntityForm.vue +++ b/aas-web-ui/src/components/EditorComponents/SubmodelElements/EntityForm.vue @@ -346,7 +346,22 @@ editEntityDialog.value = false; } + function resetFormValues(): void { + entityIdShort.value = null; + displayName.value = null; + description.value = null; + entityCategory.value = null; + semanticId.value = null; + entityType.value = aasTypes.EntityType.SelfManagedEntity; + globalAssetId.value = null; + specificAssetIds.value = null; + openPanels.value = [0, 1]; + } + async function initializeInputs(): Promise { + // Always reset form values first to clear any stale data from previously opened elements + resetFormValues(); + if (!props.newEntity && props.entity) { const entityJSON = await fetchSme(props.entity.path); @@ -357,39 +372,14 @@ } entityObject.value = instanceOrError.mustValue(); - entityIdShort.value = entityObject.value.idShort; - if (entityObject.value.displayName) { - displayName.value = entityObject.value.displayName; - } - if (entityObject.value.description) { - description.value = entityObject.value.description; - } - if (entityObject.value.category) { - entityCategory.value = entityObject.value.category; - } - if (entityObject.value.semanticId) { - semanticId.value = entityObject.value.semanticId; - } - if (entityObject.value.entityType) { - entityType.value = entityObject.value.entityType; - } - if (entityObject.value.globalAssetId) { - globalAssetId.value = entityObject.value.globalAssetId; - } - if (entityObject.value.specificAssetIds) { - specificAssetIds.value = entityObject.value.specificAssetIds; - } - openPanels.value = [0, 1]; - } else { - entityIdShort.value = null; - displayName.value = null; - description.value = null; - entityCategory.value = null; - semanticId.value = null; - entityType.value = aasTypes.EntityType.SelfManagedEntity; - globalAssetId.value = null; - specificAssetIds.value = null; - openPanels.value = [0, 1]; + entityIdShort.value = entityObject.value.idShort ?? null; + displayName.value = entityObject.value.displayName ?? null; + description.value = entityObject.value.description ?? null; + entityCategory.value = entityObject.value.category ?? null; + semanticId.value = entityObject.value.semanticId ?? null; + entityType.value = entityObject.value.entityType ?? aasTypes.EntityType.SelfManagedEntity; + globalAssetId.value = entityObject.value.globalAssetId ?? null; + specificAssetIds.value = entityObject.value.specificAssetIds ?? null; } } diff --git a/aas-web-ui/src/components/EditorComponents/SubmodelElements/FileForm.vue b/aas-web-ui/src/components/EditorComponents/SubmodelElements/FileForm.vue index fc70381a5..30c3fda57 100644 --- a/aas-web-ui/src/components/EditorComponents/SubmodelElements/FileForm.vue +++ b/aas-web-ui/src/components/EditorComponents/SubmodelElements/FileForm.vue @@ -230,7 +230,21 @@ return border; }); + function resetFormValues(): void { + fileIdShort.value = null; + displayName.value = null; + description.value = null; + fileCategory.value = null; + filePath.value = null; + contentType.value = 'application/unknown'; + semanticId.value = null; + openPanels.value = [0, 1]; + } + async function initializeInputs(): Promise { + // Always reset form values first to clear any stale data from previously opened elements + resetFormValues(); + if (!props.newFile && props.file) { const fileJSON = await fetchSme(props.file.path); const instanceOrError = jsonization.fileFromJsonable(fileJSON); @@ -242,42 +256,13 @@ fileObject.value = instanceOrError.mustValue(); - fileIdShort.value = fileObject.value.idShort; - - if (fileObject.value.displayName) { - displayName.value = fileObject.value.displayName; - } - - if (fileObject.value.description) { - description.value = fileObject.value.description; - } - - if (fileObject.value.category) { - fileCategory.value = fileObject.value.category; - } - - if (fileObject.value.value) { - filePath.value = fileObject.value.value; - } - - if (fileObject.value.contentType) { - contentType.value = fileObject.value.contentType; - } - - if (fileObject.value.semanticId) { - semanticId.value = fileObject.value.semanticId; - } - - openPanels.value = [0, 1]; - } else { - fileIdShort.value = null; - displayName.value = null; - description.value = null; - fileCategory.value = null; - filePath.value = null; - contentType.value = 'application/unknown'; - semanticId.value = null; - openPanels.value = [0, 1]; + fileIdShort.value = fileObject.value.idShort ?? null; + displayName.value = fileObject.value.displayName ?? null; + description.value = fileObject.value.description ?? null; + fileCategory.value = fileObject.value.category ?? null; + filePath.value = fileObject.value.value ?? null; + contentType.value = fileObject.value.contentType ?? 'application/unknown'; + semanticId.value = fileObject.value.semanticId ?? null; } } diff --git a/aas-web-ui/src/components/EditorComponents/SubmodelElements/ListForm.vue b/aas-web-ui/src/components/EditorComponents/SubmodelElements/ListForm.vue index d5297bfc4..9e5e041b0 100644 --- a/aas-web-ui/src/components/EditorComponents/SubmodelElements/ListForm.vue +++ b/aas-web-ui/src/components/EditorComponents/SubmodelElements/ListForm.vue @@ -251,7 +251,22 @@ return errors.value.get(field); } + function resetFormValues(): void { + smlIdShort.value = null; + displayName.value = null; + description.value = null; + smlCategory.value = null; + orderRelevant.value = false; + typeValueListElement.value = null; + valueTypeListElement.value = aasTypes.DataTypeDefXsd.String; + semanticId.value = null; + openPanels.value = [0, 1]; + } + async function initializeInputs(): Promise { + // Always reset form values first to clear any stale data from previously opened elements + resetFormValues(); + if (!props.newSml && props.sml) { const smlJSON = await fetchSme(props.sml.path); @@ -263,49 +278,14 @@ } smlObject.value = instanceOrError.mustValue(); - smlIdShort.value = smlObject.value.idShort; - - if (smlObject.value.displayName) { - displayName.value = smlObject.value.displayName; - } - - if (smlObject.value.description) { - description.value = smlObject.value.description; - } - - if (smlObject.value.category) { - smlCategory.value = smlObject.value.category; - } - - if (smlObject.value.orderRelevant !== null) { - orderRelevant.value = smlObject.value.orderRelevant; - } else { - orderRelevant.value = false; - } - - if (smlObject.value.typeValueListElement) { - typeValueListElement.value = smlObject.value.typeValueListElement; - } - - if (smlObject.value.valueTypeListElement) { - valueTypeListElement.value = smlObject.value.valueTypeListElement; - } - - if (smlObject.value.semanticId) { - semanticId.value = smlObject.value.semanticId; - } - - openPanels.value = [0, 1]; - } else { - smlIdShort.value = null; - displayName.value = null; - description.value = null; - smlCategory.value = null; - orderRelevant.value = false; - typeValueListElement.value = null; - valueTypeListElement.value = aasTypes.DataTypeDefXsd.String; - semanticId.value = null; - openPanels.value = [0, 1]; + smlIdShort.value = smlObject.value.idShort ?? null; + displayName.value = smlObject.value.displayName ?? null; + description.value = smlObject.value.description ?? null; + smlCategory.value = smlObject.value.category ?? null; + orderRelevant.value = smlObject.value.orderRelevant ?? false; + typeValueListElement.value = smlObject.value.typeValueListElement ?? null; + valueTypeListElement.value = smlObject.value.valueTypeListElement ?? aasTypes.DataTypeDefXsd.String; + semanticId.value = smlObject.value.semanticId ?? null; } } diff --git a/aas-web-ui/src/components/EditorComponents/SubmodelElements/MLPForm.vue b/aas-web-ui/src/components/EditorComponents/SubmodelElements/MLPForm.vue index a680bca2b..10175d438 100644 --- a/aas-web-ui/src/components/EditorComponents/SubmodelElements/MLPForm.vue +++ b/aas-web-ui/src/components/EditorComponents/SubmodelElements/MLPForm.vue @@ -330,7 +330,20 @@ editMLPDialog.value = false; } + function resetFormValues(): void { + mlpIdShort.value = null; + displayName.value = null; + description.value = null; + mlpCategory.value = null; + mlpValue.value = null; + semanticId.value = null; + openPanels.value = [0, 1]; + } + async function initializeInputs(): Promise { + // Always reset form values first to clear any stale data from previously opened elements + resetFormValues(); + if (!props.newMlp && props.mlp) { const mlpJSON = await fetchSme(props.mlp.path); @@ -341,31 +354,12 @@ } mlpObject.value = instanceOrError.mustValue(); - mlpIdShort.value = mlpObject.value.idShort; - if (mlpObject.value.displayName) { - displayName.value = mlpObject.value.displayName; - } - if (mlpObject.value.description) { - description.value = mlpObject.value.description; - } - if (mlpObject.value.category) { - mlpCategory.value = mlpObject.value.category; - } - if (mlpObject.value.value) { - mlpValue.value = mlpObject.value.value; - } - if (mlpObject.value.semanticId) { - semanticId.value = mlpObject.value.semanticId; - } - openPanels.value = [0, 1]; - } else { - mlpIdShort.value = null; - displayName.value = null; - description.value = null; - mlpCategory.value = null; - mlpValue.value = null; - semanticId.value = null; - openPanels.value = [0, 1]; + mlpIdShort.value = mlpObject.value.idShort ?? null; + displayName.value = mlpObject.value.displayName ?? null; + description.value = mlpObject.value.description ?? null; + mlpCategory.value = mlpObject.value.category ?? null; + mlpValue.value = mlpObject.value.value ?? null; + semanticId.value = mlpObject.value.semanticId ?? null; } } diff --git a/aas-web-ui/src/components/EditorComponents/SubmodelElements/PropertyForm.vue b/aas-web-ui/src/components/EditorComponents/SubmodelElements/PropertyForm.vue index 40775aa93..6bb694574 100644 --- a/aas-web-ui/src/components/EditorComponents/SubmodelElements/PropertyForm.vue +++ b/aas-web-ui/src/components/EditorComponents/SubmodelElements/PropertyForm.vue @@ -412,7 +412,21 @@ editPropertyDialog.value = false; } + function resetFormValues(): void { + propertyIdShort.value = null; + displayName.value = null; + description.value = null; + propertyCategory.value = null; + propertyValue.value = ''; + valueType.value = aasTypes.DataTypeDefXsd.String; + semanticId.value = null; + openPanels.value = [0, 1]; + } + async function initializeInputs(): Promise { + // Always reset form values first to clear any stale data from previously opened elements + resetFormValues(); + if (!props.newProperty && props.property) { const propertyJSON = await fetchSme(props.property.path); const instanceOrError = jsonization.propertyFromJsonable(propertyJSON); @@ -424,36 +438,13 @@ propertyObject.value = instanceOrError.mustValue(); - propertyIdShort.value = propertyObject.value.idShort; - - if (propertyObject.value.displayName) { - displayName.value = propertyObject.value.displayName; - } - if (propertyObject.value.description) { - description.value = propertyObject.value.description; - } - if (propertyObject.value.category) { - propertyCategory.value = propertyObject.value.category; - } - if (propertyObject.value.value) { - propertyValue.value = propertyObject.value.value; - } - if (propertyObject.value.valueType) { - valueType.value = propertyObject.value.valueType; - } - if (propertyObject.value.semanticId) { - semanticId.value = propertyObject.value.semanticId; - } - openPanels.value = [0, 1]; - } else { - propertyIdShort.value = null; - displayName.value = null; - description.value = null; - propertyCategory.value = null; - propertyValue.value = ''; - valueType.value = aasTypes.DataTypeDefXsd.String; - semanticId.value = null; - openPanels.value = [0, 1]; + propertyIdShort.value = propertyObject.value.idShort ?? null; + displayName.value = propertyObject.value.displayName ?? null; + description.value = propertyObject.value.description ?? null; + propertyCategory.value = propertyObject.value.category ?? null; + propertyValue.value = propertyObject.value.value ?? ''; + valueType.value = propertyObject.value.valueType ?? aasTypes.DataTypeDefXsd.String; + semanticId.value = propertyObject.value.semanticId ?? null; } } diff --git a/aas-web-ui/src/components/EditorComponents/SubmodelElements/RangeForm.vue b/aas-web-ui/src/components/EditorComponents/SubmodelElements/RangeForm.vue index 104de622d..5427b3d11 100644 --- a/aas-web-ui/src/components/EditorComponents/SubmodelElements/RangeForm.vue +++ b/aas-web-ui/src/components/EditorComponents/SubmodelElements/RangeForm.vue @@ -353,7 +353,22 @@ editRangeDialog.value = false; } + function resetFormValues(): void { + rangeIdShort.value = null; + displayName.value = null; + description.value = null; + rangeCategory.value = null; + minValue.value = null; + maxValue.value = null; + valueType.value = aasTypes.DataTypeDefXsd.String; + semanticId.value = null; + openPanels.value = [0, 1]; + } + async function initializeInputs(): Promise { + // Always reset form values first to clear any stale data from previously opened elements + resetFormValues(); + if (!props.newRange && props.range) { const rangeJSON = await fetchSme(props.range.path); const instanceOrError = jsonization.rangeFromJsonable(rangeJSON); @@ -365,47 +380,14 @@ rangeObject.value = instanceOrError.mustValue(); - rangeIdShort.value = rangeObject.value.idShort; - - if (rangeObject.value.displayName) { - displayName.value = rangeObject.value.displayName; - } - - if (rangeObject.value.description) { - description.value = rangeObject.value.description; - } - - if (rangeObject.value.category) { - rangeCategory.value = rangeObject.value.category; - } - - if (rangeObject.value.min) { - minValue.value = rangeObject.value.min; - } - - if (rangeObject.value.max) { - maxValue.value = rangeObject.value.max; - } - - if (rangeObject.value.valueType) { - valueType.value = rangeObject.value.valueType; - } - - if (rangeObject.value.semanticId) { - semanticId.value = rangeObject.value.semanticId; - } - - openPanels.value = [0, 1]; - } else { - rangeIdShort.value = null; - displayName.value = null; - description.value = null; - rangeCategory.value = null; - minValue.value = null; - maxValue.value = null; - valueType.value = aasTypes.DataTypeDefXsd.String; - semanticId.value = null; - openPanels.value = [0, 1]; + rangeIdShort.value = rangeObject.value.idShort ?? null; + displayName.value = rangeObject.value.displayName ?? null; + description.value = rangeObject.value.description ?? null; + rangeCategory.value = rangeObject.value.category ?? null; + minValue.value = rangeObject.value.min ?? null; + maxValue.value = rangeObject.value.max ?? null; + valueType.value = rangeObject.value.valueType ?? aasTypes.DataTypeDefXsd.String; + semanticId.value = rangeObject.value.semanticId ?? null; } } diff --git a/aas-web-ui/src/components/EditorComponents/SubmodelElements/ReferenceElementForm.vue b/aas-web-ui/src/components/EditorComponents/SubmodelElements/ReferenceElementForm.vue index 753b5539f..b35839c68 100644 --- a/aas-web-ui/src/components/EditorComponents/SubmodelElements/ReferenceElementForm.vue +++ b/aas-web-ui/src/components/EditorComponents/SubmodelElements/ReferenceElementForm.vue @@ -339,7 +339,20 @@ editReferenceElementDialog.value = false; } + function resetFormValues(): void { + referenceElementIdShort.value = null; + displayName.value = null; + description.value = null; + referenceElementCategory.value = null; + semanticId.value = null; + referenceElementValue.value = null; + openPanels.value = [0, 1]; + } + async function initializeInputs(): Promise { + // Always reset form values first to clear any stale data from previously opened elements + resetFormValues(); + if (!props.newReferenceElement && props.referenceElement) { const referenceElementJSON = await fetchSme(props.referenceElement.path); @@ -350,31 +363,12 @@ } referenceElementObject.value = instanceOrError.mustValue(); - referenceElementIdShort.value = referenceElementObject.value.idShort; - if (referenceElementObject.value.displayName) { - displayName.value = referenceElementObject.value.displayName; - } - if (referenceElementObject.value.description) { - description.value = referenceElementObject.value.description; - } - if (referenceElementObject.value.category) { - referenceElementCategory.value = referenceElementObject.value.category; - } - if (referenceElementObject.value.semanticId) { - semanticId.value = referenceElementObject.value.semanticId; - } - if (referenceElementObject.value.value) { - referenceElementValue.value = referenceElementObject.value.value; - } - openPanels.value = [0, 1]; - } else { - referenceElementIdShort.value = null; - displayName.value = null; - description.value = null; - referenceElementCategory.value = null; - semanticId.value = null; - referenceElementValue.value = null; - openPanels.value = [0, 1]; + referenceElementIdShort.value = referenceElementObject.value.idShort ?? null; + displayName.value = referenceElementObject.value.displayName ?? null; + description.value = referenceElementObject.value.description ?? null; + referenceElementCategory.value = referenceElementObject.value.category ?? null; + semanticId.value = referenceElementObject.value.semanticId ?? null; + referenceElementValue.value = referenceElementObject.value.value ?? null; } } diff --git a/aas-web-ui/src/components/EditorComponents/SubmodelElements/RelationshipElementForm.vue b/aas-web-ui/src/components/EditorComponents/SubmodelElements/RelationshipElementForm.vue index 3f01a9074..ec351092b 100644 --- a/aas-web-ui/src/components/EditorComponents/SubmodelElements/RelationshipElementForm.vue +++ b/aas-web-ui/src/components/EditorComponents/SubmodelElements/RelationshipElementForm.vue @@ -360,7 +360,21 @@ editRelationshipElementDialog.value = false; } + function resetFormValues(): void { + relationshipElementIdShort.value = null; + displayName.value = null; + description.value = null; + relationshipElementCategory.value = null; + semanticId.value = null; + firstReference.value = null; + secondReference.value = null; + openPanels.value = [0, 1]; + } + async function initializeInputs(): Promise { + // Always reset form values first to clear any stale data from previously opened elements + resetFormValues(); + if (!props.newRelationshipElement && props.relationshipElement) { const relationshipElementJSON = await fetchSme(props.relationshipElement.path); @@ -371,35 +385,13 @@ } relationshipElementObject.value = instanceOrError.mustValue(); - relationshipElementIdShort.value = relationshipElementObject.value.idShort; - if (relationshipElementObject.value.displayName) { - displayName.value = relationshipElementObject.value.displayName; - } - if (relationshipElementObject.value.description) { - description.value = relationshipElementObject.value.description; - } - if (relationshipElementObject.value.category) { - relationshipElementCategory.value = relationshipElementObject.value.category; - } - if (relationshipElementObject.value.semanticId) { - semanticId.value = relationshipElementObject.value.semanticId; - } - if (relationshipElementObject.value.first) { - firstReference.value = relationshipElementObject.value.first; - } - if (relationshipElementObject.value.second) { - secondReference.value = relationshipElementObject.value.second; - } - openPanels.value = [0, 1]; - } else { - relationshipElementIdShort.value = null; - displayName.value = null; - description.value = null; - relationshipElementCategory.value = null; - semanticId.value = null; - firstReference.value = null; - secondReference.value = null; - openPanels.value = [0, 1]; + relationshipElementIdShort.value = relationshipElementObject.value.idShort ?? null; + displayName.value = relationshipElementObject.value.displayName ?? null; + description.value = relationshipElementObject.value.description ?? null; + relationshipElementCategory.value = relationshipElementObject.value.category ?? null; + semanticId.value = relationshipElementObject.value.semanticId ?? null; + firstReference.value = relationshipElementObject.value.first ?? null; + secondReference.value = relationshipElementObject.value.second ?? null; } } diff --git a/aas-web-ui/src/components/EditorComponents/SubmodelForm.vue b/aas-web-ui/src/components/EditorComponents/SubmodelForm.vue index 47d740e1c..f9f077540 100644 --- a/aas-web-ui/src/components/EditorComponents/SubmodelForm.vue +++ b/aas-web-ui/src/components/EditorComponents/SubmodelForm.vue @@ -264,6 +264,9 @@ ); async function initializeInputs(): Promise { + // Always reset form values first to clear any stale data from previously opened elements + clearForm(); + if (props.newSm === false && props.submodel) { const submodel = await fetchSmById(props.submodel.id); @@ -276,19 +279,19 @@ submodelObject.value = instanceOrError.mustValue(); // console.log('AASObject: ', AASObject.value); // Set values of AAS - submodelId.value = submodelObject.value.id; - submodelIdShort.value = submodelObject.value.idShort; - submodelKind.value = submodelObject.value.kind; - displayName.value = submodelObject.value.displayName; - description.value = submodelObject.value.description; - submodelCategory.value = submodelObject.value.category; + submodelId.value = submodelObject.value.id ?? generateUUID(); + submodelIdShort.value = submodelObject.value.idShort ?? null; + submodelKind.value = submodelObject.value.kind ?? aasTypes.ModellingKind.Instance; + displayName.value = submodelObject.value.displayName ?? null; + description.value = submodelObject.value.description ?? null; + submodelCategory.value = submodelObject.value.category ?? null; if (submodelObject.value.administration !== null && submodelObject.value.administration !== undefined) { - version.value = submodelObject.value.administration.version; - revision.value = submodelObject.value.administration.revision; - creator.value = submodelObject.value.administration.creator; - templateId.value = submodelObject.value.administration.templateId; + version.value = submodelObject.value.administration.version ?? null; + revision.value = submodelObject.value.administration.revision ?? null; + creator.value = submodelObject.value.administration.creator ?? null; + templateId.value = submodelObject.value.administration.templateId ?? null; } - semanticId.value = submodelObject.value.semanticId; + semanticId.value = submodelObject.value.semanticId ?? null; } } @@ -431,6 +434,7 @@ // Reset all values submodelId.value = generateUUID(); submodelIdShort.value = null; + submodelKind.value = aasTypes.ModellingKind.Instance; displayName.value = null; description.value = null; submodelCategory.value = null; @@ -438,6 +442,7 @@ revision.value = null; creator.value = null; templateId.value = null; + semanticId.value = null; // Reset state of expansion panels openPanels.value = [0, 3]; }