diff --git a/migrations/seed_dev.sql b/migrations/seed_dev.sql
index 56c27f1..16bb4ed 100644
--- a/migrations/seed_dev.sql
+++ b/migrations/seed_dev.sql
@@ -192,6 +192,16 @@ UPDATE workspaces SET settings = jsonb_set(
{"id": "notes-1", "type": "notes", "title": "Show notes", "props": {"noteId": "a0000000-0000-0000-0000-000000000040"}}
]
},
+ {
+ "slug": "kunnskapsgraf",
+ "title": "Kunnskapsgraf",
+ "icon": "🕸️",
+ "layout": "2-1",
+ "blocks": [
+ {"id": "graph-1", "type": "graph", "title": "Grafvisning"},
+ {"id": "entities-1", "type": "entities", "title": "Entiteter"}
+ ]
+ },
{
"slug": "research",
"title": "Research",
@@ -199,7 +209,7 @@ UPDATE workspaces SET settings = jsonb_set(
"layout": "2-col",
"blocks": [
{"id": "research-1", "type": "research", "title": "Research-klipp"},
- {"id": "graph-1", "type": "graph", "title": "Kunnskapsgraf"}
+ {"id": "entities-2", "type": "entities", "title": "Entiteter"}
]
}
]'::jsonb
diff --git a/web/src/lib/blocks/EntitiesBlock.svelte b/web/src/lib/blocks/EntitiesBlock.svelte
new file mode 100644
index 0000000..88493b3
--- /dev/null
+++ b/web/src/lib/blocks/EntitiesBlock.svelte
@@ -0,0 +1,535 @@
+
+
+{#if selected}
+
+
+
+
+ {#if editing}
+
+ {:else}
+
+
+
+
Relasjoner
+ {#if loadingEdges}
+
Laster...
+ {:else if selectedEdges.length === 0}
+
Ingen relasjoner
+ {:else}
+ {#each selectedEdges as edge (edge.edge_id)}
+
+ {edge.relation_label}
+
+
+ {edge.connected_type}
+
+
+
+ {/each}
+ {/if}
+
+ {/if}
+
+{:else}
+
+
+
+
+
+
+
+
+ {#if showCreate}
+
+ {/if}
+
+ {#if loading}
+
Laster...
+ {:else if entities.length === 0}
+
{query ? 'Ingen treff' : 'Ingen entiteter ennå'}
+ {:else}
+
+ {#each entities as entity (entity.id)}
+
+ {/each}
+
+ {/if}
+
+{/if}
+
+{#if error}
+ {error}
+{/if}
+
+
diff --git a/web/src/lib/blocks/GraphBlock.svelte b/web/src/lib/blocks/GraphBlock.svelte
index b0cb20d..21fee99 100644
--- a/web/src/lib/blocks/GraphBlock.svelte
+++ b/web/src/lib/blocks/GraphBlock.svelte
@@ -1,25 +1,388 @@
-
-
🕸️
-
Graph
-
Kommer snart
+
+
+ { if (e.key === 'Enter') searchAndLoad(); }}
+ class="input"
+ />
+
+
+
+ {#if loading}
+
Laster graf...
+ {:else if error}
+
{error}
+ {:else if nodes.length === 0}
+
Søk etter en entitet for å visualisere grafen
+ {:else}
+
+ {/if}
diff --git a/web/src/lib/blocks/registry.ts b/web/src/lib/blocks/registry.ts
index fcc417e..1089ce5 100644
--- a/web/src/lib/blocks/registry.ts
+++ b/web/src/lib/blocks/registry.ts
@@ -27,6 +27,11 @@ export const blockRegistry: Record
= {
icon: '🕸️',
component: () => import('./GraphBlock.svelte')
},
+ entities: {
+ label: 'Entiteter',
+ icon: '#️⃣',
+ component: () => import('./EntitiesBlock.svelte')
+ },
research: {
label: 'Research',
icon: '🔍',
diff --git a/web/src/lib/components/EntityAutocomplete.svelte b/web/src/lib/components/EntityAutocomplete.svelte
new file mode 100644
index 0000000..dcbf58d
--- /dev/null
+++ b/web/src/lib/components/EntityAutocomplete.svelte
@@ -0,0 +1,235 @@
+
+
+
+
+
+ {#if showDropdown && suggestions.length > 0}
+
+ {#each suggestions as entity, i (entity.id)}
+
+ {/each}
+
+ {/if}
+
+
+