diff --git a/frontend/src/components/reload/AutoReloadCheckbox.vue b/frontend/src/components/reload/AutoReloadCheckbox.vue index ca04a46ed67435777a58906eabfd5d81709f94a8..464433eb09748bcc9ed9791a49c6d68ec0c8c890 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 5c0f2ecbe89968d44edd87967ebbbc12c76d2ef6..fe59f7fbb2e03de52e469fb83c86cf7c77ebd05e 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 af93b6d3b09fef9edc0a7ad407d9a5829159e2b8..6ea36cdc7f67edc6e5e50b8d725288f20ec87334 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 4b6981695d78cb3dd5e8a662713f828ca46dd642..28499e81016bd04b94bb1d8d1ab0bc15e45d0244 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 c8164f15ca83ce98bf4c88c81ba4e737a73ca839..309530cd7185018f610785c9c5241b0eb57993c9 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 73f7d136610c4f7569c53ac6069fec6f8a06bfc1..90f05ad7c7b73e27cdce0c13943741dcf936f2ff 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 e622aae39379671ce5ea7403a3f1d15ac97dd581..b8177e04b02c7a3120ddd70954fe255cc6224f67 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 66cda5c510cd9e796b6ffb8b6982f4a1a7ea0713..c7ac5b193f52ba38455b29da2d08709ef6d0e1ca 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 bc36a096d52719d410f4a511be8613cd164d8907..e3e222bebbc751dc0b3eb6fef810b6b274cec2bc 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 012f3e843076ceacb64100a3d98c1a11d656be41..7628449072c7c1cc57f42411740e629504f04b7a 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 9ae28dce1c86ea4cd2f2326a9273b6f24a90ec07..2ea9f412eab2b32b87e2d189cf69f68f5520d7c6 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 c9ee6447a64158254cef94f48a19b325a07b2444..2f512e8ca424ee12f734617d7b3879fe9c4bf524 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 8b63b48dfcdc1652bcb0d6376988fd62f73e287d..6c02fe09af7e6d8ece47848d48ca071597f50193 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() + } } ) }