From 6b4fb34b40f6a3c2ef0ac05b4a2c134eea576a4b Mon Sep 17 00:00:00 2001 From: kodi Date: Sat, 14 Mar 2026 11:38:52 +0100 Subject: [PATCH] feat: contextmenu Edit toegevoegd --- webui/backend/data/tasks.db | Bin 188416 -> 188416 bytes .../test_ui_smoke_golden.cpython-313.pyc | Bin 33742 -> 34369 bytes .../tests/golden/test_ui_smoke_golden.py | 6 ++++++ webui/html/app.js | 19 ++++++++++++++++++ webui/html/index.html | 1 + 5 files changed, 26 insertions(+) diff --git a/webui/backend/data/tasks.db b/webui/backend/data/tasks.db index 742621b735836e2612a1c54f26d5f5d8c2644b05..320bdc47bc34f6152fa18e8834c91d6480f7ae46 100644 GIT binary patch delta 77 zcmV-T0J8spzzcxD3y>QDY>^y80c^2gvHt@O4$iYN5V{VR&JF=60UMD)7aSS|12YwK jWo%_*bY)~;V{dG4a$jw4WMyPwa%+bw4*|C-4+7TE1l}5B delta 78 zcmV-U0I~mozzcxD3y>QDYmpp70c){fvHt@N4$iYN5V{VR&JF=60UD7(79AS}12Y$M kWo%_*bY)~;V{dG4a$jw4WMyn=XJ~YXDh~m-Dh~qI&>)%`*Z=?k diff --git a/webui/backend/tests/golden/__pycache__/test_ui_smoke_golden.cpython-313.pyc b/webui/backend/tests/golden/__pycache__/test_ui_smoke_golden.cpython-313.pyc index d54c409aade2ad347daf54fbd38c465836a75660..822f628521d372d4dd644780788e19311dce1790 100644 GIT binary patch delta 877 zcmY+CTSyd97{}+#%<8W0Oxz5_|xX`j) z5W-7F)_JHGLFlE29;$;x4@yC16osLwbk!`oKqR;jNJTSe#c&?}zw`aS%Y2-f7lY)( zQPR9=GNlpfGvJw&t_JRy|59KMndpQWcIs>}JIe}xFgE1Lx=BGDQv}D2MbO2>aq>QM z8h&S(j3I%lBDEO=!4l;JKMeQV2f+xMwr^2zF+YL9!96PF0E^z-FHln&~3c;hsr@&p8|9JQMItvkewotT;AQ;}}gHnO31+Z9#yX4j399s71n5+gF*)c;a|xi~1I|Is3rQ{{ z30^_D*-0&KyGw!&S1qd?YjJ`U9K9A&G2aM!%(sF8^PP}}`CdrJ{2&-Lf)%*cvQM|l zf8^KTUSF|cmH))Ac}Up;D|`;s|E&7weFb10t}rYuSokm6AycsOU;p2DH{tq*625f` z?12Y`T)I)cZCEQ5phW9!knQz{K zDI}Llir5=DTG8pMiJerbs+(A+9R!*>vx;mEIan(L|k0b}M zU3gpyiiPT&@?CT4`xPZ5y8}{0dvSoRV;#HqtBF-}8nwW_ehX&ue9hsX6MGi)!DYSivT4|~K@dy>scIwX zB@+Z;I84HyQ9DeHN~vR^iRgmf4Y{}-Rw-rZR&+dF-%08Y{5ngA(UAc!sO(4qjo`X| n$?ke-cO?iMZbXd)Z5)ctQ@P8uaj=5x0fVn+t5^_%=KF z)G;z1nS9V!neix?JO(C@gUJ&ha`ORS9>&QH{vwkf_^C0nPUbgKWWF2^D2!3qJ1PM9?hI9taC!4mfrY1|>N2zB4Hlku-zMKy O{}0RzEK)^cK*Islp1DW> diff --git a/webui/backend/tests/golden/test_ui_smoke_golden.py b/webui/backend/tests/golden/test_ui_smoke_golden.py index fa0a338..fdbf96e 100644 --- a/webui/backend/tests/golden/test_ui_smoke_golden.py +++ b/webui/backend/tests/golden/test_ui_smoke_golden.py @@ -72,6 +72,7 @@ class UiSmokeGoldenTest(unittest.TestCase): self.assertIn('id="context-menu-scope"', body) self.assertIn('id="context-menu-target"', body) self.assertIn('id="context-menu-open-btn"', body) + self.assertIn('id="context-menu-edit-btn"', body) self.assertIn('id="context-menu-rename-btn"', body) self.assertIn('id="context-menu-copy-btn"', body) self.assertIn('id="context-menu-move-btn"', body) @@ -214,6 +215,7 @@ class UiSmokeGoldenTest(unittest.TestCase): self.assertIn('function closeContextMenu()', app_js) self.assertIn('function applyContextMenuSelection()', app_js) self.assertIn('function startContextMenuOpen()', app_js) + self.assertIn('function startContextMenuEdit()', app_js) self.assertIn('function startContextMenuRename()', app_js) self.assertIn('function startContextMenuCopy()', app_js) self.assertIn('function startContextMenuMove()', app_js) @@ -227,6 +229,9 @@ class UiSmokeGoldenTest(unittest.TestCase): self.assertIn('closeContextMenu();', app_js) self.assertIn('elements.openButton.classList.toggle("hidden", isMulti);', app_js) self.assertIn('elements.openButton.disabled = isMulti || items.length !== 1;', app_js) + self.assertIn('const editableSingle = items.length === 1 && isEditableSelection(items[0]);', app_js) + self.assertIn('elements.editButton.classList.toggle("hidden", isMulti || items.length !== 1 || items[0].kind !== "file");', app_js) + self.assertIn('elements.editButton.disabled = !editableSingle;', app_js) self.assertIn('elements.renameButton.classList.toggle("hidden", isMulti);', app_js) self.assertIn('elements.copyButton.classList.remove("hidden");', app_js) self.assertIn('elements.copyButton.disabled = items.length === 0;', app_js) @@ -234,6 +239,7 @@ class UiSmokeGoldenTest(unittest.TestCase): self.assertIn('elements.propertiesButton.classList.remove("hidden");', app_js) self.assertIn('elements.propertiesButton.disabled = items.length === 0;', app_js) self.assertIn('openCurrentDirectory();', app_js) + self.assertIn('openEditor();', app_js) self.assertIn('openRenamePopup();', app_js) self.assertIn('startCopySelected();', app_js) self.assertIn('openF6Flow();', app_js) diff --git a/webui/html/app.js b/webui/html/app.js index 084ac25..b6f6bdc 100644 --- a/webui/html/app.js +++ b/webui/html/app.js @@ -327,6 +327,7 @@ function contextMenuElements() { scope: document.getElementById("context-menu-scope"), target: document.getElementById("context-menu-target"), openButton: document.getElementById("context-menu-open-btn"), + editButton: document.getElementById("context-menu-edit-btn"), renameButton: document.getElementById("context-menu-rename-btn"), copyButton: document.getElementById("context-menu-copy-btn"), moveButton: document.getElementById("context-menu-move-btn"), @@ -370,10 +371,13 @@ function openContextMenu(pane, entry, event) { contextMenuState.anchorPath = entry.path; const isMulti = items.length > 1; + const editableSingle = items.length === 1 && isEditableSelection(items[0]); elements.scope.textContent = isMulti ? "Multi-selection" : "Single item"; elements.target.textContent = isMulti ? `${items.length} selected items` : entry.name; elements.openButton.classList.toggle("hidden", isMulti); elements.openButton.disabled = isMulti || items.length !== 1; + elements.editButton.classList.toggle("hidden", isMulti || items.length !== 1 || items[0].kind !== "file"); + elements.editButton.disabled = !editableSingle; elements.renameButton.classList.toggle("hidden", isMulti); elements.copyButton.classList.remove("hidden"); elements.copyButton.disabled = items.length === 0; @@ -463,6 +467,18 @@ function startContextMenuOpen() { openCurrentDirectory(); } +function startContextMenuEdit() { + if (contextMenuElements().editButton?.disabled) { + return; + } + if (!applyContextMenuSelection()) { + closeContextMenu(); + return; + } + closeContextMenu(); + openEditor(); +} + function startContextMenuProperties() { if (contextMenuElements().propertiesButton?.disabled) { return; @@ -3806,6 +3822,9 @@ function setupEvents() { if (contextMenu.openButton) { contextMenu.openButton.onclick = startContextMenuOpen; } + if (contextMenu.editButton) { + contextMenu.editButton.onclick = startContextMenuEdit; + } if (contextMenu.copyButton) { contextMenu.copyButton.onclick = startContextMenuCopy; } diff --git a/webui/html/index.html b/webui/html/index.html index 52f8e51..b28f6f6 100644 --- a/webui/html/index.html +++ b/webui/html/index.html @@ -123,6 +123,7 @@
+