From 47a9db82218c4e93b6b6620748039778b7d15b13 Mon Sep 17 00:00:00 2001 From: Mani <12841290+krmanik@users.noreply.github.com> Date: Wed, 26 Apr 2023 14:01:04 +0800 Subject: [PATCH] fix image height issues in iOS safari (#2480) * use i18n message when not showing image * fix height for iOS * some ui styling * fix polygon draw in panzoom * more ui styling and fixes --- ftl/core/notetypes.ftl | 1 + ts/image-occlusion/ImageOcclusionPage.svelte | 81 +++++++------------ ts/image-occlusion/MaskEditor.svelte | 3 +- ts/image-occlusion/Notes.svelte | 74 +++++++++-------- ts/image-occlusion/SideToolbar.svelte | 8 +- ts/image-occlusion/StickyFooter.svelte | 18 ++--- ts/image-occlusion/Tags.svelte | 2 +- ts/image-occlusion/TopToolbar.svelte | 10 +-- ts/image-occlusion/image-occlusion-base.scss | 6 ++ ts/image-occlusion/mask-editor.ts | 2 +- .../notes-toolbar/MoreTools.svelte | 2 +- .../notes-toolbar/TextFormatting.svelte | 11 ++- ts/image-occlusion/tools/tool-polygon.ts | 7 +- ts/reviewer/image_occlusion.ts | 8 +- 14 files changed, 116 insertions(+), 117 deletions(-) diff --git a/ftl/core/notetypes.ftl b/ftl/core/notetypes.ftl index 353ea308d..59036f9f1 100644 --- a/ftl/core/notetypes.ftl +++ b/ftl/core/notetypes.ftl @@ -50,3 +50,4 @@ notetypes-hide-one-guess-one = Hide One, Guess One notetypes-error-generating-cloze = An error occurred when generating an image occlusion note notetypes-error-getting-imagecloze = An error occurred while fetching an image occlusion note notetypes-error-loading-image-occlusion = Error loading image occlusion. Is your Anki version up to date? +notetype-error-no-image-to-show = No image to show. diff --git a/ts/image-occlusion/ImageOcclusionPage.svelte b/ts/image-occlusion/ImageOcclusionPage.svelte index 802610962..93ed9c20a 100644 --- a/ts/image-occlusion/ImageOcclusionPage.svelte +++ b/ts/image-occlusion/ImageOcclusionPage.svelte @@ -32,29 +32,48 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html - + diff --git a/ts/image-occlusion/MaskEditor.svelte b/ts/image-occlusion/MaskEditor.svelte index ec8d3446f..360cec235 100644 --- a/ts/image-occlusion/MaskEditor.svelte +++ b/ts/image-occlusion/MaskEditor.svelte @@ -50,7 +50,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html diff --git a/ts/image-occlusion/SideToolbar.svelte b/ts/image-occlusion/SideToolbar.svelte index 3701e9d43..fe8bc4330 100644 --- a/ts/image-occlusion/SideToolbar.svelte +++ b/ts/image-occlusion/SideToolbar.svelte @@ -65,8 +65,8 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html diff --git a/ts/image-occlusion/Tags.svelte b/ts/image-occlusion/Tags.svelte index d7df5e585..2270e0eef 100644 --- a/ts/image-occlusion/Tags.svelte +++ b/ts/image-occlusion/Tags.svelte @@ -23,6 +23,6 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html diff --git a/ts/image-occlusion/TopToolbar.svelte b/ts/image-occlusion/TopToolbar.svelte index 5ef1613b5..0461915eb 100644 --- a/ts/image-occlusion/TopToolbar.svelte +++ b/ts/image-occlusion/TopToolbar.svelte @@ -139,15 +139,13 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html diff --git a/ts/image-occlusion/tools/tool-polygon.ts b/ts/image-occlusion/tools/tool-polygon.ts index 66e6fb415..879f9a4db 100644 --- a/ts/image-occlusion/tools/tool-polygon.ts +++ b/ts/image-occlusion/tools/tool-polygon.ts @@ -13,7 +13,6 @@ let linesList: fabric.Line = []; let pointsList: fabric.Circle = []; let drawMode = false; let zoomValue = 1; -let panzoomX = 1, panzoomY = 1; const addedPolygonIds: string[] = []; export const drawPolygon = (canvas: fabric.Canvas, panzoom: PanZoom): void => { @@ -67,15 +66,13 @@ const toggleDrawPolygon = (canvas: fabric.Canvas): void => { const addPoint = (canvas: fabric.Canvas, options, panzoom): void => { zoomValue = panzoom.getTransform().scale; - panzoomX = panzoom.getTransform().x; - panzoomY = panzoom.getTransform().y; const canvasContainer = document.querySelector(".canvas-container")!.getBoundingClientRect()!; let clientX = options.e.touches ? options.e.touches[0].clientX : options.e.clientX; let clientY = options.e.touches ? options.e.touches[0].clientY : options.e.clientY; - clientX = (clientX - canvasContainer.left - panzoomX) / zoomValue; - clientY = (clientY - canvasContainer.top - panzoomY) / zoomValue; + clientX = (clientX - canvasContainer.left) / zoomValue; + clientY = (clientY - canvasContainer.top) / zoomValue; const point = new fabric.Circle({ radius: 5, diff --git a/ts/reviewer/image_occlusion.ts b/ts/reviewer/image_occlusion.ts index 5c7fedbfe..b0a83034b 100644 --- a/ts/reviewer/image_occlusion.ts +++ b/ts/reviewer/image_occlusion.ts @@ -1,11 +1,17 @@ // Copyright: Ankitects Pty Ltd and contributors // License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html +import * as tr from "@tslib/ftl"; + window.addEventListener("load", () => { window.addEventListener("resize", setupImageCloze); }); export function setupImageCloze(): void { + window.requestAnimationFrame(setupImageClozeInner); +} + +function setupImageClozeInner(): void { const canvas: HTMLCanvasElement = document.querySelector("canvas")! as HTMLCanvasElement; canvas.style.maxWidth = "100%"; canvas.style.maxHeight = "95vh"; @@ -14,7 +20,7 @@ export function setupImageCloze(): void { const container = document.getElementById("container") as HTMLDivElement; const image = document.getElementById("img") as HTMLImageElement; if (image == null) { - container.innerText = "No image to show."; + container.innerText = tr.notetypeErrorNoImageToShow(); return; }