From a7264fe1fc9e306a3b3a8dbcd5a97ba84a394b3b Mon Sep 17 00:00:00 2001 From: wbuezas Date: Tue, 25 Mar 2025 11:42:53 +0100 Subject: [PATCH 1/7] Migrate image collections --- src/pages/Admin/PhotosView.vue | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/pages/Admin/PhotosView.vue b/src/pages/Admin/PhotosView.vue index b1e32f94..2802e1ce 100644 --- a/src/pages/Admin/PhotosView.vue +++ b/src/pages/Admin/PhotosView.vue @@ -7,7 +7,6 @@ import VnForm from 'src/components/common/VnForm.vue'; import VnInput from 'src/components/common/VnInput.vue'; import useNotify from 'src/composables/useNotify.js'; -const jApi = inject('jApi'); const api = inject('api'); const { t } = useI18n(); const { notify } = useNotify(); @@ -45,9 +44,8 @@ const isSubmitable = computed(() => const getImageCollections = async () => { try { - imageCollections.value = await jApi.query( - 'SELECT name, `desc` FROM imageCollection ORDER BY `desc`' - ); + const { data } = await api.get('imageCollections'); + imageCollections.value = data; } catch (error) { console.error('Error getting image collections:', error); } From f7030d1213e736a161f375250f7da5ec11ee3b36 Mon Sep 17 00:00:00 2001 From: wbuezas Date: Tue, 25 Mar 2025 15:11:42 +0100 Subject: [PATCH 2/7] WIP --- src/pages/Admin/PhotosView.vue | 46 +++++++++++++++++++++++++--------- 1 file changed, 34 insertions(+), 12 deletions(-) diff --git a/src/pages/Admin/PhotosView.vue b/src/pages/Admin/PhotosView.vue index 2802e1ce..d80c61ee 100644 --- a/src/pages/Admin/PhotosView.vue +++ b/src/pages/Admin/PhotosView.vue @@ -32,7 +32,7 @@ const statusIcons = { } }; const formInitialData = reactive({ - schema: 'catalog', + collectionFk: 'catalog', updateMatching: true }); const imageCollections = ref([]); @@ -51,6 +51,10 @@ const getImageCollections = async () => { } }; +const buildUploadUrl = (id, collection) => { + return `images/upload?id=${encodeURIComponent(id)}&collection=${encodeURIComponent(collection)}`; +}; + const onSubmit = async data => { if (!addedFiles.value.length) { notify(t('noFilesToUpload'), 'warning'); @@ -59,20 +63,37 @@ const onSubmit = async data => { const filteredFiles = addedFiles.value.filter( file => file.uploadStatus === 'pending' ); - const promises = filteredFiles.map((file, index) => { + const promises = filteredFiles.map(async (file, index) => { const fileIndex = filteredFiles[index].index; addedFiles.value[fileIndex].uploadStatus = 'uploading'; + // const formData = new FormData(); + // formData.append('file', file.file); + + // const entityId = imageCollections.value.find( + // collection => collection.name === data.collectionFk + // ).model; + + // const url = buildUploadUrl(entityId, data.collectionFk); + // console.log('url', url); + // return api({ + // method: 'post', + // url: url, + // data: formData, + // headers: { + // 'Content-Type': 'multipart/form-data' + // } + // }); + const formData = new FormData(); - formData.append('updateMatching', data.updateMatching); - formData.append('image', file.file); - formData.append('name', file.name); - formData.append('schema', data.schema); - formData.append('srv', 'json:image/upload'); - return api({ - method: 'post', - url: location.origin, - data: formData, + const now = Date.vnNew(); + const timestamp = now.getTime(); + console.log('file', file); + const fileName = `${file.file?.name}_${timestamp}`; + formData.append('blob', file.file, fileName); + + await axios.post('Images/upload', formData, { + params: newPhoto, headers: { 'Content-Type': 'multipart/form-data' } @@ -102,6 +123,7 @@ const onSubmit = async data => { }; const onFilesAdded = files => { + console.log('files', files); const initialFilesLength = addedFiles.value.length; files.forEach((file, index) => { const [name] = file.name.split('.'); @@ -146,7 +168,7 @@ onMounted(async () => getImageCollections()); >