From 9f8eba6736fd08bc6fbf8bbd23112d6c9133c233 Mon Sep 17 00:00:00 2001 From: marwin Date: Mon, 21 Apr 2025 18:43:58 +0100 Subject: [PATCH] Refactor database initialization: streamline the process by removing the old init_database function, implementing a new structure for database setup, and ensuring the creation of a comprehensive mindmap hierarchy with an admin user. Update app.py to run on port 5000 instead of 6000. --- instance/mindmap.db | Bin 36864 -> 36864 bytes website/__pycache__/app.cpython-311.pyc | Bin 18039 -> 0 bytes website/__pycache__/app.cpython-313.pyc | Bin 0 -> 18341 bytes website/__pycache__/init_db.cpython-311.pyc | Bin 5066 -> 0 bytes website/__pycache__/init_db.cpython-313.pyc | Bin 0 -> 2749 bytes website/app.py | 2 +- website/init_db.py | 228 ++++++++++++-------- website/instance/mindmap.db | Bin 36864 -> 36864 bytes website/run.py | 11 +- website/templates/index.html | 5 +- website/templates/mindmap.html | 36 +++- website/test_app.py | 35 +++ 12 files changed, 210 insertions(+), 107 deletions(-) delete mode 100644 website/__pycache__/app.cpython-311.pyc create mode 100644 website/__pycache__/app.cpython-313.pyc delete mode 100644 website/__pycache__/init_db.cpython-311.pyc create mode 100644 website/__pycache__/init_db.cpython-313.pyc create mode 100644 website/test_app.py diff --git a/instance/mindmap.db b/instance/mindmap.db index 6f5546b2ab00d7de9938a9fc1d7f9ad2cd03e7f3..907f5c36fbc9cbe4fe8d103eb63ba6c6f9f99048 100644 GIT binary patch delta 59 zcmZozz|^pSX@WE(+e8^>Mz)O!OYGSg`QI_{zuPP*@PuDjfRTkkl_5N{xHvVhI5{IR Pt%P?oqrrduMG67{3M&!X delta 30 mcmZozz|^pSX@WE(>qHr6M%Il9OYAqZ1pLuolpwH3K>z@mE(!Jk diff --git a/website/__pycache__/app.cpython-311.pyc b/website/__pycache__/app.cpython-311.pyc deleted file mode 100644 index edb745545799d49c19f01eb85eaf4e41811e185b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18039 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 W|ADI?>$Co$j~N?q{NXqa@c#hFBaV3h diff --git a/website/__pycache__/app.cpython-313.pyc b/website/__pycache__/app.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..459cb20a6d76d4d5d4544bec64ccabe67a03b6c6 GIT binary patch literal 18341 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 literal 0 HcmV?d00001 diff --git a/website/__pycache__/init_db.cpython-311.pyc b/website/__pycache__/init_db.cpython-311.pyc deleted file mode 100644 index 5cedb6517f8ec5f20cfc47bfd8f888fd9a2c0131..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5066 zcmb7|OH3Qv8Gy(3_yKdwBQ}FcE@2>{T$6+d15L|?)PzUgkTj%GB3-$T=MYb@$L`EH z1a~4)=`Ls$sa;fRmR_{!t&#;xq;?T0n=H?ukrIuRRmGyaRB5H?uKLf6jXii$!T@K^ z{O3FW<2--y*KoL%f+u#upZ$9~Mg7zKs6D=F?s@Xwd)~b7 zp3g(^-tVY;H1_kpRj=7Y`iYmq^mC}aFh8xwLxC*7)6YF1g+GVX?5AVWh#x+hA&+#8eaasLEo0KWH8qSk-wfUE*5y4sT#IkK`6}-KPEzEc*>qz6!mbg z?hIps@=%JuuH<2Dh$trq6zHry5BGXh0ySCV+u3*HjRF%no7b4^!x?PAC2N822S`QUXPz|XqYU=^f^r&=GG>pTOqb>w;5XW4Iu!H!@ zg=jleG>nSWu-bM&G`*_7DVlbNC&yig4hPZaLUcL^&V@K~sA$^N4z*J~azHfwYM?2a zh{KZs7b5B)PPh!5%7_h#FP9RQ7;q2G!vHXyE*7JOzGqATgx2AE4vw1BtjR z;eG=g{tO>>o}>Ft_*45^d5`(yJR2dg@!XkGuiZtk`pp85N65+vBo_HZ8;iQOhd$L4ICEZUdg<5jX*IiVNo%ShT_^ zMZv_+aSqHs5|r0}R%BRM1xdi=$n~`8ya)!d%w2;efJGy6tFWT1!2rStt_hjdTuFRj zFmo`O;{CL^3Vsb$=c2yuIQQA^hhFyTtC_*wnYQGZpYs`L)8$qirHCn4A zYL&5CrOG5~Od?ff5~(VaNL87!8Z%a7#%j!1jTx^o<27cy#*C-NWpmAN?#~bLv)Mu( zpUo5`e3r+L&aUD6GAxh1w>c9j{{BdD-3Z(D>KsW6pw*lV`6f)j2DRIQp7v=iNA;GY zAE;{{|Cn9whFYJ7f7|}FeY5?)0Sa|IoqWq2+hLArOs~%L5@zr{>Lf>oHFQcxrwBT= z8;wJLvecvWA9rG)&O&d(`&y%I_C{xA<&AL;X7H zC#WAR^z>F%$oK-e`3n-eqs8v%u{)cW-=VIzXkZ5oRDPg=qocApY3eIWBChMLrpp>wYw$OVmE(Afpc zHW^C3=_2fs#xCjXQdP8%`T|=nnk#EtCBjZ??6l5K+j0JSdxEet8at!2Gq&W>7AEYJ z#!l(%6i5!R6r#ehXQ{0_1WjvbT1V4Rd5^kD@7VT57~aNl4#!Au0!AOf=+EkC7Ah9m zEPM9t7GSU%zR}S)P=QGbx4SR&`jXiVg-P3}7E0)$1PLWR-1XKswY|0fZEf@aG;H?9 zjsLm&r%#_g*VHJNkHFFL$E8y@kdGkxMn{lDJWv{;R0=WyonWCF?G-t`zIMG~GANq*78G;`>|HyxV;)BoQ@w}sk$w9v#=tYkQPThv`mtKlSo8=u}5ApT9 zqdPaQ|7PjCrH!R`bj!v(X-#VMj84xGdd3oLp3&%-PR9rxs{%jP=yN)Kj?m|-f^m(W U(CG(%32PP1$TmS$7 diff --git a/website/__pycache__/init_db.cpython-313.pyc b/website/__pycache__/init_db.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3803438fdaf74a122588b739dbbfb62f79caa554 GIT binary patch literal 2749 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 diff --git a/website/run.py b/website/run.py index d03cb9c..75fc75b 100644 --- a/website/run.py +++ b/website/run.py @@ -1,11 +1,10 @@ #!/usr/bin/env python3 import os -from init_db import init_database -from app import app +import sys +from app import create_app + +app = create_app() if __name__ == "__main__": - # Initialize the database first - init_database() - - # Run the Flask application + # Run the app directly - no need to call init_database as it doesn't exist app.run(host="0.0.0.0", debug=True) \ No newline at end of file diff --git a/website/templates/index.html b/website/templates/index.html index f4f66a9..55e5b10 100644 --- a/website/templates/index.html +++ b/website/templates/index.html @@ -8,7 +8,7 @@
- Starte die Mindmap + Zum Netzwerk {% if not current_user.is_authenticated %} @@ -20,19 +20,16 @@
-
🧠

Visualisiere Wissen

Erkenne Zusammenhänge zwischen verschiedenen Wissensgebieten durch intuitive Mindmaps.

-
💡

Teile Gedanken

Füge deine eigenen Gedanken zu bestehenden Themen hinzu und bereichere die Community.

-
🔄

Interaktive Vernetzung

Beteilige dich an Diskussionen und sieh wie sich Ideen gemeinsam entwickeln.

diff --git a/website/templates/mindmap.html b/website/templates/mindmap.html index c36dc69..5c27249 100644 --- a/website/templates/mindmap.html +++ b/website/templates/mindmap.html @@ -99,6 +99,13 @@ .node:hover circle { filter: drop-shadow(0 0 8px rgba(255, 255, 255, 0.8)); } + + /* Fix for "keine Auswahl" text */ + #selected-node-title { + width: 100%; + overflow: visible; + word-wrap: break-word; + } {% endblock %} @@ -346,12 +353,21 @@ // Create hierarchical layout const root = d3.hierarchy(data); - // Create tree layout - const treeLayout = d3.tree() - .size([height - 100, width - 200]) - .nodeSize([80, 200]); + // Create radial layout instead of tree for all-direction branches + const radius = Math.min(width, height) / 2 - 100; - treeLayout(root); + const radialLayout = d3.cluster() + .size([360, radius]); + + radialLayout(root); + + // Convert to Cartesian coordinates + root.descendants().forEach(d => { + // Convert from polar to Cartesian coordinates + const angle = (d.x - 90) / 180 * Math.PI; + d.x = d.y * Math.cos(angle); + d.y = d.y * Math.sin(angle); + }); // Create links const links = g.selectAll('.link') @@ -360,10 +376,10 @@ .append('path') .attr('class', 'link') .attr('d', d => { - return `M${d.source.y},${d.source.x} - C${(d.source.y + d.target.y) / 2},${d.source.x} - ${(d.source.y + d.target.y) / 2},${d.target.x} - ${d.target.y},${d.target.x}`; + return `M${d.source.x},${d.source.y} + C${(d.source.x + d.target.x) / 2},${(d.source.y + d.target.y) / 2} + ${(d.source.x + d.target.x) / 2},${(d.source.y + d.target.y) / 2} + ${d.target.x},${d.target.y}`; }); // Create nodes @@ -375,7 +391,7 @@ const categoryClass = getNodeCategory(d.data.name, rootCategories); return `node ${categoryClass} ${d.data.id === selectedNode ? 'node--selected' : ''}`; }) - .attr('transform', d => `translate(${d.y},${d.x})`) + .attr('transform', d => `translate(${d.x},${d.y})`) .on('click', (event, d) => selectNode(d.data.id, d.data.name)) .on('mouseover', function(event, d) { tooltip.transition() diff --git a/website/test_app.py b/website/test_app.py new file mode 100644 index 0000000..0f9cdc0 --- /dev/null +++ b/website/test_app.py @@ -0,0 +1,35 @@ +from flask import Flask + +app = Flask(__name__) + +@app.route('/') +def hello(): + return """ + + + + Test Seite + + + +
+

Test Seite funktioniert!

+

Wenn Sie diese Seite sehen können, funktioniert der grundlegende Flask-Server korrekt.

+

Server-Status:

+
    +
  • Flask läuft auf Port 5000
  • +
  • Keine Datenbankverbindung erforderlich
  • +
  • Keine Templates erforderlich
  • +
+

Versuchen Sie, diese URL in verschiedenen Browsern zu öffnen.

+
+ + + """ + +if __name__ == '__main__': + app.run(host='0.0.0.0', port=5000, debug=True) \ No newline at end of file