Skip to content
Snippets Groups Projects
Commit f3046f9a authored by Ron Lucke's avatar Ron Lucke Committed by Marcus Eibrink-Lunzenauer
Browse files

evaluate image type of structural element on import and export

Closes #3743

Merge request !3175
parent 3271f73e
No related branches found
No related tags found
No related merge requests found
......@@ -134,7 +134,7 @@ export default {
root_element.children = children;
}
}
root_element.imageId = await this.exportStructuralElementImage(root_element);
[root_element.imageId, root_element.imageType ] = await this.exportStructuralElementImage(root_element);
delete root_element.relationships;
delete root_element.links;
......@@ -236,7 +236,7 @@ export default {
}
// export file data (if any)
content.imageId = await this.exportStructuralElementImage(element);
[content.imageId, content.imageType ] = await this.exportStructuralElementImage(element);
delete content.relationships;
content.children = new_childs;
......@@ -249,25 +249,29 @@ export default {
},
async exportStructuralElementImage(element) {
let fileId = element.relationships.image?.data?.id;
const fileId = element.relationships.image?.data?.id;
const fileType = element.relationships.image?.data?.type;
if (fileId) {
await this.loadFileRefsById({id: fileId});
let fileRef = this.fileRefsById({id: fileId});
let fileRefData = {};
fileRefData.id = fileRef.id;
fileRefData.attributes = fileRef.attributes;
fileRefData.related_element_id = element.id;
fileRefData.folder = null;
this.exportFiles.json.push(fileRefData);
this.exportFiles.download[fileRef.id] = {
folder: null,
url: fileRef.meta['download-url']
};
if (fileType === 'file-refs') {
await this.loadFileRefsById({id: fileId});
let fileRef = this.fileRefsById({id: fileId});
let fileRefData = {};
fileRefData.id = fileRef.id;
fileRefData.attributes = fileRef.attributes;
fileRefData.related_element_id = element.id;
fileRefData.folder = null;
this.exportFiles.json.push(fileRefData);
this.exportFiles.download[fileRef.id] = {
folder: null,
url: fileRef.meta['download-url']
};
}
}
return fileId;
return [fileId, fileType];
},
async exportContainer(container_ref) {
......
......@@ -152,7 +152,7 @@ export default {
}
// compare image
if (element.imageId && root.relationships.image.data === null) {
await this.setStructuralElementImage(root, element.imageId, files);
await this.setStructuralElementImage(root, element, files);
}
// add children
......@@ -187,7 +187,7 @@ export default {
if (element[i].imageId) {
await this.setStructuralElementImage(new_element, element[i].imageId, files);
await this.setStructuralElementImage(new_element, element[i], files);
}
......@@ -205,19 +205,27 @@ export default {
}
},
async setStructuralElementImage(new_element, imageId, files) {
let imageFile = files.find((file) => { return file.id === imageId});
let zip_filedata = await this.zip.file(imageFile.id).async('blob');
// create new blob with correct type
let filedata = zip_filedata.slice(0, zip_filedata.size, imageFile.attributes['mime-type']);
this.setImportStructuresState(this.$gettext('Lade Vorschaubild hoch'));
this.uploadImageForStructuralElement({
structuralElement: new_element,
file: filedata,
}).catch((error) => {
console.error(error);
this.currentImportErrors.push(this.$gettext('Fehler beim Hochladen des Vorschaubildes.'));
});
async setStructuralElementImage(new_element, element, files) {
const imageId = element.imageId;
const imageType = element.imageType ?? 'file-refs';
if (imageType === 'file-refs') {
const imageFile = files.find((file) => { return file.id === imageId});
if (!(imageFile)) {
this.currentImportErrors.push(this.$gettext('Fehler beim Laden des Vorschaubildes.'));
return;
}
let zip_filedata = await this.zip.file(imageFile.id).async('blob');
// create new blob with correct type
const filedata = zip_filedata.slice(0, zip_filedata.size, imageFile.attributes['mime-type']);
this.setImportStructuresState(this.$gettext('Lade Vorschaubild hoch'));
this.uploadImageForStructuralElement({
structuralElement: new_element,
file: filedata,
}).catch((error) => {
console.error(error);
this.currentImportErrors.push(this.$gettext('Fehler beim Hochladen des Vorschaubildes.'));
});
}
},
async importContainer(container, structuralElement, files) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment