From ca52b7ecd71f799948c42d16718d10a17ea80dcc Mon Sep 17 00:00:00 2001
From: HF
Date: Sat, 24 Feb 2024 11:12:26 +0100
Subject: [PATCH] add ability to set default canvas by server sort
CanvasSelection list with default canvas first and linked canvases after the
canvas they link to
---
src/components/ModCanvastools.jsx | 1 +
src/components/windows/CanvasSelect.jsx | 17 ++++++++++++++---
src/core/CanvasCleaner.js | 4 ++--
src/store/reducers/canvas.js | 3 +++
4 files changed, 20 insertions(+), 5 deletions(-)
diff --git a/src/components/ModCanvastools.jsx b/src/components/ModCanvastools.jsx
index b89eebe..16affc8 100644
--- a/src/components/ModCanvastools.jsx
+++ b/src/components/ModCanvastools.jsx
@@ -194,6 +194,7 @@ function ModCanvastools() {
case 'makenull':
// eslint-disable-next-line max-len
descCleanAction = t`Turn every pixel in area to 0 (YOU REALLY SHOULDN'T DO THAT ON ANY AREA THAT ISN'T ALREADY MOSTLY 0)`;
+ break;
default:
// nothing
}
diff --git a/src/components/windows/CanvasSelect.jsx b/src/components/windows/CanvasSelect.jsx
index 9d976bd..d7e1896 100644
--- a/src/components/windows/CanvasSelect.jsx
+++ b/src/components/windows/CanvasSelect.jsx
@@ -37,8 +37,19 @@ Archive of removed canvases can be accessed here:`}
>{t`Archive`}
{
- Object.keys(canvases).map((canvasId) => (
- (!canvases[canvasId].hid || showHiddenCanvases)
+ Object.keys(canvases)
+ .sort((a, b) => {
+ // display forced default canvas first
+ if (a === window.ssv.dc) return -1;
+ if (b === window.ssv.dc) return 1;
+ // display linked canvas right after canvas they are linked too
+ // eslint-disable-next-line eqeqeq
+ if (canvases[a].linkcd != null) a = canvases[a].linkcd + 0.1;
+ // eslint-disable-next-line eqeqeq
+ if (canvases[b].linkcd != null) b = canvases[b].linkcd + 0.1;
+ return a - b;
+ }).map((canvasId) => (
+ (!canvases[canvasId].hid || showHiddenCanvases)
&& !canvases[canvasId].ed
&& (
)
- ))
+ ))
}
{
(window.ssv?.backupurl
diff --git a/src/core/CanvasCleaner.js b/src/core/CanvasCleaner.js
index b73932b..5d37365 100644
--- a/src/core/CanvasCleaner.js
+++ b/src/core/CanvasCleaner.js
@@ -120,9 +120,9 @@ const METHODS = {
}
return finPxl;
},
-
+
makenull: (xc, yc, clrIgnore, canvasCleaner) => {
- let pxl = canvasCleaner.getPixelInChunkArea(xc, yc);
+ const pxl = canvasCleaner.getPixelInChunkArea(xc, yc);
if (pxl === null || pxl === 0) {
return null;
}
diff --git a/src/store/reducers/canvas.js b/src/store/reducers/canvas.js
index 469b0b0..aea8fe6 100644
--- a/src/store/reducers/canvas.js
+++ b/src/store/reducers/canvas.js
@@ -100,6 +100,9 @@ function getViewFromURL(canvases) {
let canvasIdent = almost[0];
let canvasId = getIdFromObject(canvases, canvasIdent);
+ if (!canvasId && window.ssv.dc) {
+ canvasId = window.ssv.dc;
+ }
if (!canvasId || (!window.ssv?.backupurl && canvases[canvasId].ed)) {
canvasId = DEFAULT_CANVAS_ID;
const canvas = canvases[DEFAULT_CANVAS_ID];