From 0d4fff10ecb8c765a48457ad19bf0942b2bde3f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Valenta?= <git@imaniti.org> Date: Wed, 11 Oct 2023 20:57:03 +0200 Subject: [PATCH] finish image sharing between templates --- .../src/components/reload/AutoReloadCheckbox.vue | 1 + frontend/src/utils.js | 13 +++++++++++-- .../views/basic_photo_banner/BasicPhotoBanner.vue | 13 ++++++++----- frontend/src/views/basic_photo_banner/canvas.js | 12 ++++++++---- .../src/views/facebook_survey/FacebookSurvey.vue | 13 ++++++++----- frontend/src/views/facebook_survey/canvas.js | 10 ++++++++-- .../newspaper_quote_bottom/NewspaperQuoteBottom.vue | 13 ++++++++----- frontend/src/views/newspaper_quote_bottom/canvas.js | 10 ++++++++-- .../newspaper_quote_middle/NewspaperQuoteMiddle.vue | 13 ++++++++----- frontend/src/views/text_banner/TextBanner.vue | 13 ++++++++----- frontend/src/views/twitter_banner/TwitterBanner.vue | 13 ++++++++----- .../UrgentBasicPhotoBanner.vue | 13 ++++++++----- .../views/urgent_text_banner/UrgentTextBanner.vue | 13 ++++++++----- 13 files changed, 100 insertions(+), 50 deletions(-) diff --git a/frontend/src/components/reload/AutoReloadCheckbox.vue b/frontend/src/components/reload/AutoReloadCheckbox.vue index ca04a46e..464433eb 100644 --- a/frontend/src/components/reload/AutoReloadCheckbox.vue +++ b/frontend/src/components/reload/AutoReloadCheckbox.vue @@ -12,6 +12,7 @@ name="auto-reload-checkbox" type="checkbox" :checked="modelValue" + autocomplete="off" @input="$emit('update:modelValue', $event.target.checked)" > <label diff --git a/frontend/src/utils.js b/frontend/src/utils.js index 5c0f2ecb..fe59f7fb 100644 --- a/frontend/src/utils.js +++ b/frontend/src/utils.js @@ -30,7 +30,7 @@ const updateAutoRedrawStorage = (autoRedraw) => { } -const loadCanvasStorage = (data) => { +const loadCanvasStorage = async (data) => { const canvasProperties = JSON.parse(window.sessionStorage.getItem("canvas_properties")) const autoRedraw = JSON.parse(window.sessionStorage.getItem("auto_redraw")) @@ -42,7 +42,16 @@ const loadCanvasStorage = (data) => { if (key.toLowerCase().endsWith("image") && value) { const image = new Image() - image.src = value + + await new Promise( + resolve => { + image.onload = () => { + resolve() + } + + image.src = value + } + ) data[key] = image diff --git a/frontend/src/views/basic_photo_banner/BasicPhotoBanner.vue b/frontend/src/views/basic_photo_banner/BasicPhotoBanner.vue index af93b6d3..6ea36cdc 100644 --- a/frontend/src/views/basic_photo_banner/BasicPhotoBanner.vue +++ b/frontend/src/views/basic_photo_banner/BasicPhotoBanner.vue @@ -55,7 +55,7 @@ export default { } } - let data = { + return { mainImage: null, mainText: null, personName: null, @@ -74,10 +74,9 @@ export default { predefinedLogoImages: generateDefaultLogos('defaultLight'), autoRedraw: false } - - loadCanvasStorage(data) - - return data + }, + async created () { + await loadCanvasStorage(this) }, methods: { async reloadCanvasProperties () { @@ -123,6 +122,10 @@ export default { vm => [vm.autoRedraw], async (value) => { updateAutoRedrawStorage(this.autoRedraw) + + if (this.autoRedraw) { + await this.reloadCanvasProperties() + } } ) }, diff --git a/frontend/src/views/basic_photo_banner/canvas.js b/frontend/src/views/basic_photo_banner/canvas.js index 4b698169..28499e81 100644 --- a/frontend/src/views/basic_photo_banner/canvas.js +++ b/frontend/src/views/basic_photo_banner/canvas.js @@ -14,6 +14,8 @@ let logoImage = null let arrow = null +let mainImageSource = null + const redraw = async (canvas, options) => { clearObjects( [ @@ -319,13 +321,14 @@ const redraw = async (canvas, options) => { /* BEGIN Main image render */ - console.log(options.mainImage, mainImage, options.mainImage.src) - if ( options.mainImage !== null && ( - mainImage === null - || options.mainImage.src !== mainImage._element.src + !canvas.contains(mainImage) + || ( + mainImage === null + || options.mainImage.src !== mainImageSource + ) ) ) { if (mainImage !== null) { @@ -353,6 +356,7 @@ const redraw = async (canvas, options) => { } canvas.add(mainImage) + mainImageSource = options.mainImage.src // canvas.centerObject(mainImage) } else if ( mainImage !== null diff --git a/frontend/src/views/facebook_survey/FacebookSurvey.vue b/frontend/src/views/facebook_survey/FacebookSurvey.vue index c8164f15..309530cd 100644 --- a/frontend/src/views/facebook_survey/FacebookSurvey.vue +++ b/frontend/src/views/facebook_survey/FacebookSurvey.vue @@ -53,7 +53,7 @@ export default { } } - let data = { + return { mainImage: null, mainText: null, logoImage: null, @@ -74,10 +74,9 @@ export default { predefinedLogoImages: generateDefaultLogos('defaultDark'), autoRedraw: false } - - loadCanvasStorage(data) - - return data + }, + async created () { + await loadCanvasStorage(this) }, methods: { async reloadCanvasProperties () { @@ -127,6 +126,10 @@ export default { vm => [vm.autoRedraw], async (value) => { updateAutoRedrawStorage(this.autoRedraw) + + if (this.autoRedraw) { + await this.reloadCanvasProperties() + } } ) } diff --git a/frontend/src/views/facebook_survey/canvas.js b/frontend/src/views/facebook_survey/canvas.js index 73f7d136..90f05ad7 100644 --- a/frontend/src/views/facebook_survey/canvas.js +++ b/frontend/src/views/facebook_survey/canvas.js @@ -17,6 +17,8 @@ let secondEmojiImage = null let firstEmojiText = null let secondEmojiText = null +let mainImageSource = null + const redraw = async (canvas, options) => { clearObjects( [ @@ -339,8 +341,11 @@ const redraw = async (canvas, options) => { if ( options.mainImage !== null && ( - mainImage === null - || options.mainImage.src !== mainImage._element.src + !canvas.contains(mainImage) + || ( + mainImage === null + || options.mainImage.src !== mainImageSource + ) ) ) { if (mainImage !== null) { @@ -368,6 +373,7 @@ const redraw = async (canvas, options) => { } canvas.add(mainImage) + mainImageSource = options.mainImage.src // canvas.centerObject(mainImage) } else if ( mainImage !== null diff --git a/frontend/src/views/newspaper_quote_bottom/NewspaperQuoteBottom.vue b/frontend/src/views/newspaper_quote_bottom/NewspaperQuoteBottom.vue index e622aae3..b8177e04 100644 --- a/frontend/src/views/newspaper_quote_bottom/NewspaperQuoteBottom.vue +++ b/frontend/src/views/newspaper_quote_bottom/NewspaperQuoteBottom.vue @@ -64,7 +64,7 @@ export default { } } - let data = { + return { mainImage: null, sourceImage: null, mainText: null, @@ -84,10 +84,9 @@ export default { predefinedSourceImages: SOURCE_IMAGES, autoRedraw: false } - - loadCanvasStorage(data) - - return data + }, + async created () { + await loadCanvasStorage(this) }, methods: { async reloadCanvasProperties () { @@ -133,6 +132,10 @@ export default { vm => [vm.autoRedraw], async (value) => { updateAutoRedrawStorage(this.autoRedraw) + + if (this.autoRedraw) { + await this.reloadCanvasProperties() + } } ) } diff --git a/frontend/src/views/newspaper_quote_bottom/canvas.js b/frontend/src/views/newspaper_quote_bottom/canvas.js index 66cda5c5..c7ac5b19 100644 --- a/frontend/src/views/newspaper_quote_bottom/canvas.js +++ b/frontend/src/views/newspaper_quote_bottom/canvas.js @@ -25,6 +25,8 @@ let rightQuote = null let tear = null let tearFill = null +let mainImageSource = null + const redraw = async (canvas, options) => { clearObjects( [ @@ -429,8 +431,11 @@ const redraw = async (canvas, options) => { if ( options.mainImage !== null && ( - mainImage === null - || options.mainImage.src !== mainImage._element.src + !canvas.contains(mainImage) + || ( + mainImage === null + || options.mainImage.src !== mainImageSource + ) ) ) { if (mainImage !== null) { @@ -458,6 +463,7 @@ const redraw = async (canvas, options) => { } canvas.add(mainImage) + mainImageSource = options.mainImage.src // canvas.centerObject(mainImage) } else if ( mainImage !== null diff --git a/frontend/src/views/newspaper_quote_middle/NewspaperQuoteMiddle.vue b/frontend/src/views/newspaper_quote_middle/NewspaperQuoteMiddle.vue index bc36a096..e3e222be 100644 --- a/frontend/src/views/newspaper_quote_middle/NewspaperQuoteMiddle.vue +++ b/frontend/src/views/newspaper_quote_middle/NewspaperQuoteMiddle.vue @@ -68,7 +68,7 @@ export default { } } - let data = { + return { sourceImage: null, mainText: null, personName: null, @@ -89,10 +89,9 @@ export default { predefinedSourceImages: SOURCE_IMAGES, autoRedraw: false } - - loadCanvasStorage(data) - - return data + }, + async created () { + await loadCanvasStorage(this) }, methods: { async reloadCanvasProperties () { @@ -136,6 +135,10 @@ export default { vm => [vm.autoRedraw], async (value) => { updateAutoRedrawStorage(this.autoRedraw) + + if (this.autoRedraw) { + await this.reloadCanvasProperties() + } } ) } diff --git a/frontend/src/views/text_banner/TextBanner.vue b/frontend/src/views/text_banner/TextBanner.vue index 012f3e84..76284490 100644 --- a/frontend/src/views/text_banner/TextBanner.vue +++ b/frontend/src/views/text_banner/TextBanner.vue @@ -44,7 +44,7 @@ export default { } } - let data = { + return { mainText: null, logoImage: null, colorLabels: { @@ -59,10 +59,9 @@ export default { predefinedLogoImages: generateDefaultLogos('defaultLight'), autoRedraw: false } - - loadCanvasStorage(data) - - return data + }, + async created () { + await loadCanvasStorage(this) }, methods: { async reloadCanvasProperties () { @@ -100,6 +99,10 @@ export default { vm => [vm.autoRedraw], async (value) => { updateAutoRedrawStorage(this.autoRedraw) + + if (this.autoRedraw) { + await this.reloadCanvasProperties() + } } ) } diff --git a/frontend/src/views/twitter_banner/TwitterBanner.vue b/frontend/src/views/twitter_banner/TwitterBanner.vue index 9ae28dce..2ea9f412 100644 --- a/frontend/src/views/twitter_banner/TwitterBanner.vue +++ b/frontend/src/views/twitter_banner/TwitterBanner.vue @@ -71,7 +71,7 @@ export default { } } - let data = { + return { defaultSelection: personOptions.klara, personOptions: personOptions, mainImage: null, @@ -88,10 +88,9 @@ export default { }, autoRedraw: false } - - loadCanvasStorage(data) - - return data + }, + async created () { + await loadCanvasStorage(this) }, methods: { async reloadCanvasProperties () { @@ -137,6 +136,10 @@ export default { vm => [vm.autoRedraw], async (value) => { updateAutoRedrawStorage(this.autoRedraw) + + if (this.autoRedraw) { + await this.reloadCanvasProperties() + } } ) } diff --git a/frontend/src/views/urgent_basic_photo_banner/UrgentBasicPhotoBanner.vue b/frontend/src/views/urgent_basic_photo_banner/UrgentBasicPhotoBanner.vue index c9ee6447..2f512e8c 100644 --- a/frontend/src/views/urgent_basic_photo_banner/UrgentBasicPhotoBanner.vue +++ b/frontend/src/views/urgent_basic_photo_banner/UrgentBasicPhotoBanner.vue @@ -55,7 +55,7 @@ export default { } } - let data = { + return { mainImage: null, mainText: null, personName: null, @@ -74,10 +74,9 @@ export default { predefinedLogoImages: generateDefaultLogos('defaultLight'), autoRedraw: false } - - loadCanvasStorage(data) - - return data + }, + async created () { + await loadCanvasStorage(this) }, methods: { async reloadCanvasProperties () { @@ -123,6 +122,10 @@ export default { vm => [vm.autoRedraw], async (value) => { updateAutoRedrawStorage(this.autoRedraw) + + if (this.autoRedraw) { + await this.reloadCanvasProperties() + } } ) } diff --git a/frontend/src/views/urgent_text_banner/UrgentTextBanner.vue b/frontend/src/views/urgent_text_banner/UrgentTextBanner.vue index 8b63b48d..6c02fe09 100644 --- a/frontend/src/views/urgent_text_banner/UrgentTextBanner.vue +++ b/frontend/src/views/urgent_text_banner/UrgentTextBanner.vue @@ -46,7 +46,7 @@ export default { } } - let data = { + return { mainText: null, logoImage: null, colorLabels: { @@ -65,10 +65,9 @@ export default { ], autoRedraw: false } - - loadCanvasStorage(data) - - return data + }, + async created () { + await loadCanvasStorage(this) }, methods: { async reloadCanvasProperties () { @@ -106,6 +105,10 @@ export default { vm => [vm.autoRedraw], async (value) => { updateAutoRedrawStorage(this.autoRedraw) + + if (this.autoRedraw) { + await this.reloadCanvasProperties() + } } ) } -- GitLab