i don't remember making any changes
This commit is contained in:
parent
3b5cf33cc0
commit
c1a7c441d2
@ -1,6 +1,6 @@
|
|||||||
# api/__init__.py
|
# api/__init__.py
|
||||||
|
|
||||||
from flask import Flask, jsonify, request
|
from flask import Flask, jsonify, request, render_template
|
||||||
import logging
|
import logging
|
||||||
from dotenv import load_dotenv
|
from dotenv import load_dotenv
|
||||||
from neo4j import GraphDatabase
|
from neo4j import GraphDatabase
|
||||||
@ -54,5 +54,9 @@ def sitemap():
|
|||||||
})
|
})
|
||||||
return jsonify(routes)
|
return jsonify(routes)
|
||||||
|
|
||||||
|
@app.route('/render_member')
|
||||||
|
def render_member():
|
||||||
|
return render_template('render_member.html')
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
app.run(debug=True)
|
app.run(debug=True)
|
||||||
|
@ -5,9 +5,10 @@ from app import get_driver, neo4j_logger
|
|||||||
|
|
||||||
bp = Blueprint('list_members', __name__)
|
bp = Blueprint('list_members', __name__)
|
||||||
|
|
||||||
|
@bp.route('/list_members', methods=['GET'])
|
||||||
@bp.route('/list_members', methods=['GET'])
|
@bp.route('/list_members', methods=['GET'])
|
||||||
def list_members():
|
def list_members():
|
||||||
member_name = request.form.get('member_name')
|
member_name = request.args.get('member_name')
|
||||||
|
|
||||||
if not member_name:
|
if not member_name:
|
||||||
return jsonify({"error": "No member name provided"}), 400
|
return jsonify({"error": "No member name provided"}), 400
|
||||||
@ -18,31 +19,56 @@ def list_members():
|
|||||||
with driver.session() as session:
|
with driver.session() as session:
|
||||||
result = session.run("""
|
result = session.run("""
|
||||||
MATCH (m:Person {name: $memberName})-[*]-(n)
|
MATCH (m:Person {name: $memberName})-[*]-(n)
|
||||||
RETURN m, n, collect(DISTINCT (m)-[r]->(n))
|
WITH m, n, COLLECT(DISTINCT (m)-[r]->(n)) AS rels
|
||||||
|
RETURN {
|
||||||
|
nodes: [
|
||||||
|
m,
|
||||||
|
n
|
||||||
|
],
|
||||||
|
links: [
|
||||||
|
UNWIND rels AS rel
|
||||||
|
RETURN {
|
||||||
|
source: startNode(rel).id,
|
||||||
|
target: endNode(rel).id,
|
||||||
|
type: type(rel)
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
""", memberName=member_name)
|
""", memberName=member_name)
|
||||||
|
|
||||||
|
record = result.single()
|
||||||
|
|
||||||
|
if not record:
|
||||||
|
return jsonify({"error": "No data found for the provided member name"}), 404
|
||||||
|
|
||||||
|
# Extract nodes and links from the returned record
|
||||||
|
nodes_data = []
|
||||||
|
links_data = []
|
||||||
|
|
||||||
|
nodes_record = record['nodes']
|
||||||
|
links_record = record['links']
|
||||||
|
|
||||||
|
# Process nodes
|
||||||
|
for node in nodes_record:
|
||||||
|
nodes_data.append({
|
||||||
|
"id": node.id,
|
||||||
|
"label": list(node.labels)[0] if node.labels else "",
|
||||||
|
"name": node.get("name", "")
|
||||||
|
})
|
||||||
|
|
||||||
|
# Process links
|
||||||
|
for link in links_record:
|
||||||
|
links_data.append({
|
||||||
|
"source": link['source'],
|
||||||
|
"target": link['target'],
|
||||||
|
"type": link['type']
|
||||||
|
})
|
||||||
|
|
||||||
data = {
|
data = {
|
||||||
"nodes": [],
|
"nodes": nodes_data,
|
||||||
"links": []
|
"links": links_data
|
||||||
}
|
}
|
||||||
|
|
||||||
for record in result:
|
|
||||||
node1 = record["m"]
|
|
||||||
nodes = [record["n"]]
|
|
||||||
|
|
||||||
# Add the first node
|
|
||||||
if {"id": node1.id, "label": node1.labels[0], "name": node1.get("name")} not in data["nodes"]:
|
|
||||||
data["nodes"].append({"id": node1.id, "label": node1.labels[0], "name": node1.get("name")})
|
|
||||||
|
|
||||||
# Add other nodes and links
|
|
||||||
for node2 in nodes:
|
|
||||||
if {"id": node2.id, "label": node2.labels[0], "name": node2.get("name")} not in data["nodes"]:
|
|
||||||
data["nodes"].append({"id": node2.id, "label": node2.labels[0], "name": node2.get("name")})
|
|
||||||
|
|
||||||
for rel in record[2]:
|
|
||||||
if {"source": rel.start_node.id, "target": rel.end_node.id, "type": rel.type} not in data["links"]:
|
|
||||||
data["links"].append({"source": rel.start_node.id, "target": rel.end_node.id, "type": rel.type})
|
|
||||||
|
|
||||||
return jsonify(data)
|
return jsonify(data)
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
// Fetch member names from Neo4j
|
// Fetch member names from Neo4j
|
||||||
fetch('/list_members/get_member_names')
|
fetch('/get_member_names')
|
||||||
.then(response => response.json())
|
.then(response => response.json())
|
||||||
.then(members => {
|
.then(members => {
|
||||||
const select = document.getElementById('memberSelect');
|
const select = document.getElementById('memberSelect');
|
||||||
@ -42,7 +42,7 @@
|
|||||||
console.log("Member selected:", this.value); // Log the selected member name
|
console.log("Member selected:", this.value); // Log the selected member name
|
||||||
|
|
||||||
const selectedMember = this.value;
|
const selectedMember = this.value;
|
||||||
fetch(`/list_members/render_member?member_name=${encodeURIComponent(selectedMember)}`, {
|
fetch(`/list_members?member_name=${encodeURIComponent(selectedMember)}`, {
|
||||||
method: 'GET',
|
method: 'GET',
|
||||||
})
|
})
|
||||||
.then(response => response.json())
|
.then(response => response.json())
|
||||||
|
Loading…
Reference in New Issue
Block a user