i don't remember making any changes

This commit is contained in:
Moses Rolston 2025-03-12 16:18:30 -07:00
parent 3b5cf33cc0
commit c1a7c441d2
3 changed files with 54 additions and 24 deletions

View File

@ -1,6 +1,6 @@
# api/__init__.py
from flask import Flask, jsonify, request
from flask import Flask, jsonify, request, render_template
import logging
from dotenv import load_dotenv
from neo4j import GraphDatabase
@ -54,5 +54,9 @@ def sitemap():
})
return jsonify(routes)
@app.route('/render_member')
def render_member():
return render_template('render_member.html')
if __name__ == '__main__':
app.run(debug=True)

View File

@ -5,9 +5,10 @@ from app import get_driver, neo4j_logger
bp = Blueprint('list_members', __name__)
@bp.route('/list_members', methods=['GET'])
@bp.route('/list_members', methods=['GET'])
def list_members():
member_name = request.form.get('member_name')
member_name = request.args.get('member_name')
if not member_name:
return jsonify({"error": "No member name provided"}), 400
@ -18,31 +19,56 @@ def list_members():
with driver.session() as session:
result = session.run("""
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)
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 = {
"nodes": [],
"links": []
"nodes": nodes_data,
"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)
except Exception as e:

View File

@ -25,7 +25,7 @@
<script>
// Fetch member names from Neo4j
fetch('/list_members/get_member_names')
fetch('/get_member_names')
.then(response => response.json())
.then(members => {
const select = document.getElementById('memberSelect');
@ -42,7 +42,7 @@
console.log("Member selected:", this.value); // Log the selected member name
const selectedMember = this.value;
fetch(`/list_members/render_member?member_name=${encodeURIComponent(selectedMember)}`, {
fetch(`/list_members?member_name=${encodeURIComponent(selectedMember)}`, {
method: 'GET',
})
.then(response => response.json())