Skip to content

Commit 47e3793

Browse files
committed
feat: improve vertex sorting logic and update hypergraph viewer layout for better usability
1 parent 99d0857 commit 47e3793

File tree

3 files changed

+18
-25
lines changed

3 files changed

+18
-25
lines changed

docs/assets/vis_hg.jpg

549 KB
Loading

hyperdb/draw.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -135,13 +135,15 @@ def _get_vertices(self, page: int, page_size: int, search: str, sort_by: str, so
135135
)
136136

137137
# Sort vertices
138-
if sort_by == "degree":
139-
vertex_data.sort(key=lambda x: x["degree"], reverse=(sort_order == "desc"))
140-
elif sort_by == "id":
141-
vertex_data.sort(key=lambda x: str(x["id"]), reverse=(sort_order == "desc"))
142-
elif search_lower:
143-
# Sort by search score if searching
138+
if search_lower:
139+
# Sort by search score if searching (no degree filtering)
144140
vertex_data.sort(key=lambda x: x["score"], reverse=True)
141+
elif sort_by == "degree":
142+
# First, separate by degree threshold (degree > 50 goes to the end)
143+
vertex_data.sort(key=lambda x: (x["degree"] > 50, -x["degree"] if sort_order == "desc" else x["degree"]))
144+
elif sort_by == "id":
145+
# First, separate by degree threshold (degree > 50 goes to the end)
146+
vertex_data.sort(key=lambda x: (x["degree"] > 50, str(x["id"])), reverse=(sort_order == "desc"))
145147

146148
# Remove score from output
147149
for v in vertex_data:

hyperdb/templates/hypergraph_viewer.html

Lines changed: 10 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@
3030
const { Graph } = window.G6;
3131

3232
// API base path
33-
const API_BASE = window.location.origin;
33+
// const API_BASE = window.location.origin;
34+
const API_BASE = "http://localhost:8080";
3435

3536
// Configuration constants
3637
const COLORS = [
@@ -239,7 +240,7 @@
239240
setPagination(result.pagination);
240241

241242
// If no vertex selected and data exists, select the first one
242-
if (!selectedVertex && result.data.length > 0) {
243+
if (result.data.length > 0) {
243244
setSelectedVertex(result.data[0].id);
244245
}
245246
} catch (err) {
@@ -474,14 +475,12 @@
474475
},
475476
layout: {
476477
type:
477-
hyperData.nodes.length > LAYOUT_THRESHOLD
478-
? "force-atlas2"
479-
: "force",
478+
hyperData.nodes.length > LAYOUT_THRESHOLD ? "force" : "force",
480479
clustering: !isGraph,
481480
preventOverlap: true,
482481
nodeClusterBy: isGraph ? undefined : "cluster",
483-
gravity: 20,
484-
linkDistance: isGraph ? 100 : 150,
482+
gravity: 50,
483+
linkDistance: 50,
485484
},
486485
autoFit: "center",
487486
};
@@ -615,29 +614,21 @@ <h2 className="text-2xl font-bold text-gray-800 mb-6 flex items-center">
615614
<div className="text-lg font-bold text-gray-800 mb-3 pb-2 border-b-2 border-primary-500">
616615
Database Information
617616
</div>
618-
<div className="p-4 rounded-xl mb-6 text-sm border">
617+
<div className="p-2 rounded-xl mb-6 text-sm border">
619618
<div className="flex justify-between items-center mb-2">
620619
<span className="font-semibold text-gray-700">Vertices:</span>
621620
<span className="font-bold text-primary-600">
622621
{databaseInfo.vertices}
623622
</span>
624623
</div>
625-
<div className="flex justify-between items-center mb-2">
624+
<div className="flex justify-between items-center">
626625
<span className="font-semibold text-gray-700">
627626
Hyperedges:
628627
</span>
629628
<span className="font-bold text-primary-600">
630629
{databaseInfo.edges}
631630
</span>
632631
</div>
633-
<div className="flex justify-between items-center">
634-
<span className="font-semibold text-gray-700">
635-
Page Vertices:
636-
</span>
637-
<span className="font-bold text-primary-600">
638-
{vertices.length}
639-
</span>
640-
</div>
641632
</div>
642633

643634
<div className="text-lg font-bold text-gray-800 mb-3 pb-2 border-b-2 border-primary-500">
@@ -692,7 +683,7 @@ <h2 className="text-2xl font-bold text-gray-800 mb-6 flex items-center">
692683
</div>
693684

694685
{/* Sort Selection */}
695-
<div className="flex gap-2 text-xs text-gray-600">
686+
{/*<div className="flex gap-2 text-xs text-gray-600">
696687
<select
697688
value={sortBy}
698689
onChange={(e) => setSortBy(e.target.value)}
@@ -709,7 +700,7 @@ <h2 className="text-2xl font-bold text-gray-800 mb-6 flex items-center">
709700
<option value="desc">Descending</option>
710701
<option value="asc">Ascending</option>
711702
</select>
712-
</div>
703+
</div>*/}
713704

714705
<div className="mt-2 text-sm text-gray-600">
715706
Found {pagination.total} results

0 commit comments

Comments
 (0)