Compare commits

..

1 Commits

Author SHA1 Message Date
Ugo Finnendahl a812592897 polish comments and README 5 years ago
  1. 4
      README.md
  2. 34
      frontend/assets/js/canvas.js
  3. 4
      frontend/index.html
  4. 11
      main.py

@ -18,8 +18,8 @@ Das startet ein Webserver der auf Port 5000 lauscht.
## Kommentar ## Kommentar
Da mir gesagt wurde overachieving ist u.U. auch nicht gern gesehen (getreu dem Motto: "Zu früh kommen ist auch unpünktlich.") habe ich wirklich nur die Anforderungen implementiert. Entwickelt unter Linux Mint 19.1, Python 3.7 und Firefox. Beste Performanz mit Chromium.
Um dennoch zu demonstrieren, dass ich mir Gedanken um die simple Erweiterung von Funktionalitäten gemacht habe, habe ich eine weitere CRUD Funktion auskommentiert hinzugefügt. Diese ist im Branch [delete_edge](https://git.finnendahl.de/Yugon/TU_Assignment/commit/0d5778ada4c85305e4f63ab189c243b299a7ae31) zu begutachten Da mir gesagt wurde overachieving ist u.U. auch nicht gern gesehen (getreu dem Motto: "Zu früh kommen ist auch unpünktlich.") habe ich wirklich nur die Anforderungen implementiert. Um dennoch zu demonstrieren, dass ich mir Gedanken um die simple Erweiterung von Funktionalitäten gemacht habe, habe ich eine weitere CRUD Funktion in einem neuen Branch hinzugefügt. Diese kann im Branch [delete_edge](https://git.finnendahl.de/Yugon/TU_Assignment/commit/0d5778ada4c85305e4f63ab189c243b299a7ae31) begutachtet werden.
Ach ja, und da zu der layout Methode nicht viel gesagt wurde hab ich mich mit force-directed-graphs etwas ausgetobt. Zu sehen per Klick auf Automatic Layout rechts unten. Ach ja, und da zu der layout Methode nicht viel gesagt wurde hab ich mich mit force-directed-graphs etwas ausgetobt. Zu sehen per Klick auf Automatic Layout rechts unten.

@ -74,7 +74,6 @@ var info_timer = {};
// selected nodes // selected nodes
var selected = []; var selected = [];
var path_elements = [];
// (additions) auto layout // (additions) auto layout
var auto_layout = false; var auto_layout = false;
@ -110,7 +109,6 @@ function initialization() {
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
//------------------------------utils------------------------------------------ //------------------------------utils------------------------------------------
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
@ -207,20 +205,6 @@ function draw_new_edge(edge) {
return group; return group;
} }
function remove_canvas_edge(edge){
let konva_edge = stage.findOne('#' + edge["start"] + edge["end"]);
if (!konva_edge){
konva_edge = stage.findOne('#' + edge["end"] + edge["start"]);
}
if (konva_edge){
konva_edges.splice(konva_edges.indexOf(konva_edge),1);
graph_copy[edge["start"]].splice(graph_copy[edge["start"]].indexOf(edge["end"]),1);
graph_copy[edge["end"]].splice(graph_copy[edge["end"]].indexOf(edge["start"]),1);
konva_edge.remove();
edge_layer.draw();
}
}
function update_edge(konva_edge) { function update_edge(konva_edge) {
let line = konva_edge.children[0]; let line = konva_edge.children[0];
let text = konva_edge.children[1]; let text = konva_edge.children[1];
@ -425,24 +409,6 @@ function find_path(data) {
.catch(error => console.error('Error:', error)); .catch(error => console.error('Error:', error));
} }
function delete_edge(data) {
if (data.length < 2) {
show_info("Select 2 nodes.");
return;
}
rest_req("DELETE", "edges/" + data[0].attrs.id + "/" + data[1].attrs.id, null)
.then(function(res) {
if (res["error"]) {
show_info(res["error"]);
} else {
remove_canvas_edge(res);
selected = [];
draw_selected_nodes();
}
})
.catch(error => console.error('Error:', error));
}
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
function save_graph() { function save_graph() {

@ -25,10 +25,6 @@
<img src="{{ url_for('static', filename='imgs/share.svg') }}"> <img src="{{ url_for('static', filename='imgs/share.svg') }}">
<h1>Find Path</h1> <h1>Find Path</h1>
</button> </button>
<button type="button" onclick="delete_edge(selected)">
<img src="{{ url_for('static', filename='imgs/drawing.svg') }}">
<h1>Delete Edge</h1>
</button>
</nav> </nav>
<footer> <footer>
<div id="infobar"></div> <div id="infobar"></div>

@ -19,7 +19,7 @@ def bellmann_ford(graph, node_a):
Kommentar: Kommentar:
Auch wenn Dijkstra der effizientere Algorithmus in diesem Falle wäre, Auch wenn Dijkstra der effizientere Algorithmus in diesem Falle wäre,
habe mich dazu entschieden Bellmann Ford zu implementieren. habe mich dazu entschieden Bellmann Ford zu implementieren.
Dijkstra musste ich schon mindestens 4 mal in meiner Ausbildung Dijkstra musste ich schon mindestens 4 mal in meinem Studium/Schulzeit
implementieren. Ich hatte mal wieder Lust auf Dynamische Programmierung. implementieren. Ich hatte mal wieder Lust auf Dynamische Programmierung.
""" """
# weights # weights
@ -126,15 +126,6 @@ def create_edge():
return jsonify(edge), 201 return jsonify(edge), 201
@app.route('/api/edges/<start>/<end>', methods=['DELETE'])
def delete_edge(start, end):
if start in graph and end in graph[start]:
del graph[start][end]
del graph[end][start]
return jsonify({"start":start,"end":end}), 200
@app.route("/save") @app.route("/save")
def save(): def save():
try: try:

Loading…
Cancel
Save