From 96c43240aaef61e8e36b9d1539d7068177a36d10 Mon Sep 17 00:00:00 2001 From: biss Date: Mon, 4 May 2026 21:43:46 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E5=AF=BC=E5=85=A5=E9=94=99?= =?UTF-8?q?=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gen-esp/js/main.js | 67 +++++++++++++++++++++++++++++----------------- 1 file changed, 43 insertions(+), 24 deletions(-) diff --git a/gen-esp/js/main.js b/gen-esp/js/main.js index 56e6908..481ef76 100644 --- a/gen-esp/js/main.js +++ b/gen-esp/js/main.js @@ -518,6 +518,47 @@ function serializeCountdownRegions() { }; } +function findCanvasSizeName(width, height) { + const size = canvasSizes.find((item) => item.width === width && item.height === height); + return size ? size.name : null; +} + +function applyImportedCountdownCanvasSize(regionData) { + const sourceCanvas = regionData && (regionData.canvas || regionData.size); + if (!sourceCanvas || !canvas) return; + + const width = Number(sourceCanvas.width || sourceCanvas.w); + const height = Number(sourceCanvas.height || sourceCanvas.h); + if (!Number.isFinite(width) || !Number.isFinite(height) || width <= 0 || height <= 0) return; + if (canvas.width === width && canvas.height === height) return; + + const canvasSizeSelect = document.getElementById('canvasSize'); + const matchedName = findCanvasSizeName(width, height); + if (canvasSizeSelect && matchedName) canvasSizeSelect.value = matchedName; + canvas.width = width; + canvas.height = height; +} + +function applyImportedCountdownTemplate(rawData) { + const importedState = rawData && typeof rawData === 'object' && rawData.countdown ? rawData.countdown : rawData; + const importedRegions = rawData && typeof rawData === 'object' + ? (rawData.countdownRegions || rawData.regions || (importedState && importedState.regions)) + : null; + + countdownState = normalizeCountdownState(importedState); + if (!countdownState.single.date) countdownState.single.date = getTodayISODate(); + + applyImportedCountdownCanvasSize(importedRegions); + countdownManualRegions = normalizeCountdownRegions(importedRegions); + countdownDateRegion = normalizeCountdownDateRegion(importedRegions); + + refreshCountdownTemplateUI(); + applyCountdownTemplate(); + renderCountdownRegions(countdownManualRegions || autoTemplateRegions()); + saveCountdownState(); + setActivePanelTab('countdown-template-panel'); +} + function syncCountdownRegionInputs(index) { const container = document.getElementById('countdown-region-items'); if (!container) return; @@ -1423,18 +1464,7 @@ function importCountdownTemplate(file) { reader.onload = () => { try { const rawData = JSON.parse(reader.result); - const importedState = rawData && typeof rawData === 'object' && rawData.countdown ? rawData.countdown : rawData; - countdownState = normalizeCountdownState(importedState); - const importedRegions = rawData && typeof rawData === 'object' - ? (rawData.countdownRegions || rawData.regions || (importedState && importedState.regions)) - : null; - countdownManualRegions = normalizeCountdownRegions(importedRegions); - countdownDateRegion = normalizeCountdownDateRegion(importedRegions); - if (!countdownState.single.date) countdownState.single.date = getTodayISODate(); - saveCountdownState(); - refreshCountdownTemplateUI(); - renderCountdownRegions(countdownManualRegions || autoTemplateRegions()); - setActivePanelTab('countdown-template-panel'); + applyImportedCountdownTemplate(rawData); addLog('Countdown 模板已导入。'); } catch (error) { console.error(error); @@ -1473,18 +1503,7 @@ function importCountdownTemplate(file) { reader.onload = () => { try { const rawData = JSON.parse(reader.result); - const importedState = rawData && typeof rawData === 'object' && rawData.countdown ? rawData.countdown : rawData; - countdownState = normalizeCountdownState(importedState); - const importedRegions = rawData && typeof rawData === 'object' - ? (rawData.countdownRegions || rawData.regions || (importedState && importedState.regions)) - : null; - countdownManualRegions = normalizeCountdownRegions(importedRegions); - countdownDateRegion = normalizeCountdownDateRegion(importedRegions); - if (!countdownState.single.date) countdownState.single.date = getTodayISODate(); - saveCountdownState(); - refreshCountdownTemplateUI(); - renderCountdownRegions(countdownManualRegions || autoTemplateRegions()); - setActivePanelTab('countdown-template-panel'); + applyImportedCountdownTemplate(rawData); addLog('倒计时模板已导入。'); } catch (error) { console.error(error);