Feat: Legende oben links und auto-fit bei Suche/Filter im Abhängigkeitsgraph (v1.2.5)

- Legende von unten links nach oben links verschoben, damit vis.js-Navigationspfeile nicht überdeckt werden
- network.fit() mit Animation bei jeder Suche und Checkbox-Änderung, sodass alle relevanten Knoten im Viewport sichtbar sind

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-22 21:11:14 +01:00
parent 1265309b41
commit 09312dbd66
8 changed files with 19 additions and 9 deletions
+1 -1
View File
@@ -4,7 +4,7 @@
<!-- Paket-Definition (ersetzt Product in v4) --> <!-- Paket-Definition (ersetzt Product in v4) -->
<Package <Package
Name="DocuMentor" Name="DocuMentor"
Version="1.2.4" Version="1.2.5"
Manufacturer="Vitali Graf / Software- und Datenbankentwicklung" Manufacturer="Vitali Graf / Software- und Datenbankentwicklung"
UpgradeCode="F498B66C-726D-44AA-95F4-CB4FBDCEF26E" UpgradeCode="F498B66C-726D-44AA-95F4-CB4FBDCEF26E"
Language="1031" Language="1031"
+1 -1
View File
@@ -253,5 +253,5 @@ HINWEISE
================================================================================ ================================================================================
Stand: März 2026 Stand: März 2026
Erstellt für: DocuMentor v1.2.4 Erstellt für: DocuMentor v1.2.5
================================================================================ ================================================================================
+1 -1
View File
@@ -10,7 +10,7 @@
; Build-Befehl: iscc installer.iss ; Build-Befehl: iscc installer.iss
#define MyAppName "DocuMentor" #define MyAppName "DocuMentor"
#define MyAppVersion "1.2.4" #define MyAppVersion "1.2.5"
#define MyAppPublisher "Ihr Name/Organisation" #define MyAppPublisher "Ihr Name/Organisation"
#define MyAppURL "https://github.com/yourusername/xsl-validator" #define MyAppURL "https://github.com/yourusername/xsl-validator"
#define MyAppExeName "DocuMentor.exe" #define MyAppExeName "DocuMentor.exe"
+1 -1
View File
@@ -1,6 +1,6 @@
[project] [project]
name = "DocuMentor" name = "DocuMentor"
version = "1.2.4" version = "1.2.5"
description = "Professionelle XSL-Transformations-Verwaltung und PDF-Generierung" description = "Professionelle XSL-Transformations-Verwaltung und PDF-Generierung"
readme = "README.md" readme = "README.md"
license = {text = "MIT"} license = {text = "MIT"}
+12 -2
View File
@@ -810,7 +810,7 @@ class XslDependencyDialog(QDialog):
}} }}
#graph-legend {{ #graph-legend {{
position: absolute; position: absolute;
bottom: 16px; top: 16px;
left: 16px; left: 16px;
background: {bg_hex}cc; background: {bg_hex}cc;
border: 1px solid #888; border: 1px solid #888;
@@ -994,7 +994,10 @@ class XslDependencyDialog(QDialog):
edges.add(edgesData); edges.add(edgesData);
allNodes = nodes.get(); allNodes = nodes.get();
if (!term) return; if (!term) {{
network.fit({{ animation: {{ duration: 400, easingFunction: 'easeInOutQuad' }} }});
return;
}}
// 1. Matching-Knoten finden // 1. Matching-Knoten finden
var matchedIds = new Set(); var matchedIds = new Set();
@@ -1057,6 +1060,7 @@ class XslDependencyDialog(QDialog):
}}); }});
nodes.update(updates); nodes.update(updates);
allNodes = nodes.get(); allNodes = nodes.get();
network.fit({{ animation: {{ duration: 400, easingFunction: 'easeInOutQuad' }} }});
}} else {{ }} else {{
// Originalzustand wiederherstellen falls vorher gefiltert // Originalzustand wiederherstellen falls vorher gefiltert
@@ -1090,6 +1094,12 @@ class XslDependencyDialog(QDialog):
}} }}
}}); }});
edges.update(edgeUpdates); edges.update(edgeUpdates);
if (term && matchedIds.size > 0) {{
network.fit({{ nodes: Array.from(matchedIds), animation: {{ duration: 400, easingFunction: 'easeInOutQuad' }} }});
}} else {{
network.fit({{ animation: {{ duration: 400, easingFunction: 'easeInOutQuad' }} }});
}}
}} }}
}} }}
</script> </script>
+1 -1
View File
@@ -271,7 +271,7 @@
<string>Entfernt alle XSL-Dateien aus dem Graph, die nicht zum Suchbegriff passen und nicht direkt oder indirekt mit passenden Dateien verbunden sind</string> <string>Entfernt alle XSL-Dateien aus dem Graph, die nicht zum Suchbegriff passen und nicht direkt oder indirekt mit passenden Dateien verbunden sind</string>
</property> </property>
<property name="text"> <property name="text">
<string>Nur betroffene Dateien anzeigen</string> <string>Nur von der Suche betroffene Dateien anzeigen</string>
</property> </property>
<property name="checked"> <property name="checked">
<bool>true</bool> <bool>true</bool>
+1 -1
View File
@@ -234,7 +234,7 @@ class Ui_XslDependencyDialog(object):
#if QT_CONFIG(tooltip) #if QT_CONFIG(tooltip)
self.graphFilterConnectedCheck.setToolTip(QCoreApplication.translate("XslDependencyDialog", u"Entfernt alle XSL-Dateien aus dem Graph, die nicht zum Suchbegriff passen und nicht direkt oder indirekt mit passenden Dateien verbunden sind", None)) self.graphFilterConnectedCheck.setToolTip(QCoreApplication.translate("XslDependencyDialog", u"Entfernt alle XSL-Dateien aus dem Graph, die nicht zum Suchbegriff passen und nicht direkt oder indirekt mit passenden Dateien verbunden sind", None))
#endif // QT_CONFIG(tooltip) #endif // QT_CONFIG(tooltip)
self.graphFilterConnectedCheck.setText(QCoreApplication.translate("XslDependencyDialog", u"Nur betroffene Dateien anzeigen", None)) self.graphFilterConnectedCheck.setText(QCoreApplication.translate("XslDependencyDialog", u"Nur von der Suche betroffene Dateien anzeigen", None))
self.statusLabel.setText("") self.statusLabel.setText("")
# retranslateUi # retranslateUi
Generated
+1 -1
View File
@@ -34,7 +34,7 @@ wheels = [
[[package]] [[package]]
name = "documentor" name = "documentor"
version = "1.2.3" version = "1.2.5"
source = { virtual = "." } source = { virtual = "." }
dependencies = [ dependencies = [
{ name = "connectorx" }, { name = "connectorx" },