diff --git a/src/components/image-editor/hooks/use-zoom.ts b/src/components/image-editor/hooks/use-zoom.ts index d897b5cf..184cca30 100644 --- a/src/components/image-editor/hooks/use-zoom.ts +++ b/src/components/image-editor/hooks/use-zoom.ts @@ -12,7 +12,7 @@ export default function useZoom(props: { translatePos: MutableRefObject<{ x: number; y: number }>; isLoadingMaskRef: MutableRefObject; }) { - const MIN_SCALE = 0.5; + const MIN_SCALE = 0.2; const MAX_SCALE = 8; const ZOOM_SPEED = 0.1; const { @@ -69,6 +69,15 @@ export default function useZoom(props: { translatePos.current = { x: newTranslateX, y: newTranslateY }; }; + const applyCanvasTransform = () => { + const scale = autoScale.current; + const transform = `scale(${scale})`; + + overlayCanvasRef.current!.style.transform = transform; + canvasRef.current!.style.transform = transform; + offscreenCanvasRef.current!.style.transform = transform; + }; + const handleZoom = (event: React.WheelEvent) => { const scaleChange = event.deltaY > 0 ? -ZOOM_SPEED : ZOOM_SPEED; @@ -78,10 +87,7 @@ export default function useZoom(props: { const mouseX = event.clientX - rect.left; const mouseY = event.clientY - rect.top; - - overlayCanvasRef.current!.style.transform = `scale(${autoScale.current})`; - canvasRef.current!.style.transform = `scale(${autoScale.current})`; - offscreenCanvasRef.current!.style.transform = `scale(${autoScale.current})`; + applyCanvasTransform(); setCanvasTransformOrigin(event); updateZoom(scaleChange, mouseX, mouseY); @@ -101,6 +107,7 @@ export default function useZoom(props: { if (isLoadingMaskRef.current) { return; } + event.preventDefault(); // stop handleZoom(event); updateCursorSize(); @@ -108,8 +115,12 @@ export default function useZoom(props: { setActiveScale(autoScale.current); }; + const throttleHandleOnWheel = _.throttle((event: any) => { + handleOnWheel(event); + }, 16); + return { - handleOnWheel, + handleOnWheel: handleOnWheel, setActiveScale, activeScale, autoScale, diff --git a/src/locales/en-US/resources.ts b/src/locales/en-US/resources.ts index 5617ffb0..43c59c19 100644 --- a/src/locales/en-US/resources.ts +++ b/src/locales/en-US/resources.ts @@ -67,7 +67,7 @@ export default { 'The default storage directory is /var/lib/gpustack/cache, or the directory specified by --cache-dir (preferred) or --data-dir.', 'resources.modelfiles.retry.download': 'Retry Download', 'resources.modelfiles.storagePath.holder': - 'Download in progress: {name}', + 'Waiting for the download to complete...', 'resources.filter.worker': 'Filter by worker', 'resources.filter.source': 'Filter by Source', 'resources.modelfiles.delete.tips': 'Also delete the file from disk!', diff --git a/src/locales/ja-JP/resources.ts b/src/locales/ja-JP/resources.ts index af682beb..5ac7492b 100644 --- a/src/locales/ja-JP/resources.ts +++ b/src/locales/ja-JP/resources.ts @@ -68,7 +68,7 @@ export default { 'The default storage directory is /var/lib/gpustack/cache, or the directory specified by --cache-dir (preferred) or --data-dir.', 'resources.modelfiles.retry.download': 'Retry Download', 'resources.modelfiles.storagePath.holder': - 'Download in progress: {name}', + 'Waiting for download to complete...', 'resources.filter.worker': 'Filter by worker', 'resources.filter.source': 'Filter by Source', 'resources.modelfiles.delete.tips': 'Also delete the file from disk!', diff --git a/src/locales/ru-RU/resources.ts b/src/locales/ru-RU/resources.ts index bb209222..3786449c 100644 --- a/src/locales/ru-RU/resources.ts +++ b/src/locales/ru-RU/resources.ts @@ -66,8 +66,7 @@ export default { 'resources.modelfiles.form.localdir.tips': 'Каталог хранения по умолчанию — /var/lib/gpustack/cache, или каталог, указанный с помощью --cache-dir (предпочтительно) или --data-dir.', // Translated 'resources.modelfiles.retry.download': 'Повторить загрузку', - 'resources.modelfiles.storagePath.holder': - 'Идёт загрузка: {name}', + 'resources.modelfiles.storagePath.holder': 'Ожидание завершения загрузки...', 'resources.filter.worker': 'Фильтровать по узлу', 'resources.filter.source': 'Фильтровать по источнику', 'resources.modelfiles.delete.tips': 'Также удалить файл с диска!', diff --git a/src/locales/zh-CN/resources.ts b/src/locales/zh-CN/resources.ts index df06a07b..0b49c85a 100644 --- a/src/locales/zh-CN/resources.ts +++ b/src/locales/zh-CN/resources.ts @@ -65,8 +65,7 @@ export default { 'resources.modelfiles.form.localdir.tips': '默认存储目录为 /var/lib/gpustack/cache,或使用 --cache-dir(优先)、--data-dir 指定的目录。', 'resources.modelfiles.retry.download': '重新下载', - 'resources.modelfiles.storagePath.holder': - '正在下载:{name}', + 'resources.modelfiles.storagePath.holder': '等待下载完成...', 'resources.filter.worker': '按 Worker 筛选', 'resources.filter.source': '按来源筛选', 'resources.modelfiles.delete.tips': '同时从磁盘删除文件!', diff --git a/src/pages/resources/components/model-files.tsx b/src/pages/resources/components/model-files.tsx index 48230d0a..41380df8 100644 --- a/src/pages/resources/components/model-files.tsx +++ b/src/pages/resources/components/model-files.tsx @@ -251,21 +251,12 @@ const ResolvedPathColumn = (props: { record: ListItem }) => { !record.resolved_paths.length && record.state === ModelfileStateMap.Downloading ) { - const modelInfo = getModelInfo(record); - const { filename } = modelInfo; return ( - + + {intl.formatMessage({ + id: 'resources.modelfiles.storagePath.holder' + })} + ); } return (