More work on drawing widget.

This commit is contained in:
Yaro Kasear 2025-12-15 14:25:37 -06:00
parent 624ebf09d3
commit 8d5ddca229

View file

@ -14,6 +14,7 @@
width: 100%; width: 100%;
height: 100%; height: 100%;
touch-action: none; touch-action: none;
margin: 0 auto;
} }
#toolBar { #toolBar {
@ -239,8 +240,9 @@ function loadDoc() {
catch { return DEFAULT_DOC; } catch { return DEFAULT_DOC; }
} }
function saveDoc() { function saveDoc(nextDoc = doc) {
try { localStorage.setItem("gridDoc", JSON.stringify(doc)); } catch {} doc = nextDoc;
try { localStorage.setItem("gridDoc", JSON.stringify(nextDoc)); } catch {}
} }
function snapDown(n, step) { function snapDown(n, step) {
@ -482,22 +484,6 @@ function clearCanvas() {
ctx.clearRect(0, 0, canvasEl.width / dpr, canvasEl.height / dpr); ctx.clearRect(0, 0, canvasEl.width / dpr, canvasEl.height / dpr);
} }
function loadShapes() {
try {
const raw = localStorage.getItem('gridShapes');
if (!raw) return [];
return JSON.parse(raw);
} catch {
return [];
}
}
function saveShapes() {
try {
localStorage.setItem('gridShapes', JSON.stringify(shapes));
} catch { }
}
function setGrid() { function setGrid() {
const type = getActiveType(); const type = getActiveType();
@ -578,7 +564,14 @@ importEl.addEventListener('change', (e) => {
if (!Array.isArray(loadedShapes)) return; if (!Array.isArray(loadedShapes)) return;
shapes = loadedShapes; shapes = loadedShapes;
saveShapes();
doc = {
version: Number(data?.version) || 1,
gridSize: Number(data?.gridSize) || gridSize,
shapes
};
saveDoc(data);
redrawAll(); redrawAll();
} catch { } catch {
toastMessage('Failed to load data from JSON file.', 'danger'); toastMessage('Failed to load data from JSON file.', 'danger');
@ -610,11 +603,12 @@ clearEl.addEventListener('click', () => {
saveDoc(doc); saveDoc(doc);
gridSizeEl.value = 25; gridSizeEl.value = 25;
applyGridSize(25); applyGridSize(25);
redrawAll();
}); });
colorEl.addEventListener('input', () => { colorEl.addEventListener('input', () => {
selectedColor = document.getElementById('color').value; selectedColor = document.getElementById('color').value;
const circle = dotSVGEl.querySelector('circle');2 const circle = dotSVGEl.querySelector('circle');
if (circle) { if (circle) {
circle.setAttribute('fill', selectedColor); circle.setAttribute('fill', selectedColor);
} }