darabos commited on
Commit
3d534f4
·
1 Parent(s): af53b62

Display graph from backend. Almost there.

Browse files
main.py CHANGED
@@ -44,4 +44,25 @@ def read_item(item_id: int, q: Union[str, None] = None):
44
  def save(ws: Workspace):
45
  print(ws)
46
  G = nx.scale_free_graph(4)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
47
  return {"graph": list(nx.to_edgelist(G))}
 
44
  def save(ws: Workspace):
45
  print(ws)
46
  G = nx.scale_free_graph(4)
47
+ return {'graph':{
48
+ 'attributes': {
49
+ 'name': 'My Graph'
50
+ },
51
+ 'options': {
52
+ 'allowSelfLoops': True,
53
+ 'multi': False,
54
+ 'type': 'mixed'
55
+ },
56
+ 'nodes': [
57
+ {'key': 'Thomas'},
58
+ {'key': 'Eric'}
59
+ ],
60
+ 'edges': [
61
+ {
62
+ 'key': 'T->E',
63
+ 'source': 'Thomas',
64
+ 'target': 'Eric',
65
+ }
66
+ ]
67
+ }}
68
  return {"graph": list(nx.to_edgelist(G))}
web/package-lock.json CHANGED
@@ -12,7 +12,6 @@
12
  "fuse.js": "^7.0.0",
13
  "graphology": "^0.25.4",
14
  "graphology-library": "^0.8.0",
15
- "lodash": "^4.17.21",
16
  "sigma": "^3.0.0-beta.17"
17
  },
18
  "devDependencies": {
@@ -1499,15 +1498,14 @@
1499
  }
1500
  },
1501
  "node_modules/graphology-canvas": {
1502
- "version": "0.4.1",
1503
- "resolved": "https://registry.npmjs.org/graphology-canvas/-/graphology-canvas-0.4.1.tgz",
1504
- "integrity": "sha512-YWnE9UwEM5YHBta9q+YFBp2dTcP8dTFVNfR/0ZgDqZvdn9Qs05GdlXOdaTxS6ehOEPkSiMZSZwwp0obeMf3PEg==",
1505
  "dependencies": {
1506
  "graphology-layout": "0.6.0",
1507
  "graphology-utils": "^2.0.0"
1508
  },
1509
  "peerDependencies": {
1510
- "canvas": "^2.6.1",
1511
  "graphology-types": ">=0.20.0"
1512
  },
1513
  "peerDependenciesMeta": {
@@ -1867,11 +1865,6 @@
1867
  "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz",
1868
  "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA=="
1869
  },
1870
- "node_modules/lodash": {
1871
- "version": "4.17.21",
1872
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
1873
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
1874
- },
1875
  "node_modules/magic-string": {
1876
  "version": "0.30.9",
1877
  "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.9.tgz",
@@ -3521,9 +3514,9 @@
3521
  }
3522
  },
3523
  "graphology-canvas": {
3524
- "version": "0.4.1",
3525
- "resolved": "https://registry.npmjs.org/graphology-canvas/-/graphology-canvas-0.4.1.tgz",
3526
- "integrity": "sha512-YWnE9UwEM5YHBta9q+YFBp2dTcP8dTFVNfR/0ZgDqZvdn9Qs05GdlXOdaTxS6ehOEPkSiMZSZwwp0obeMf3PEg==",
3527
  "requires": {
3528
  "graphology-layout": "0.6.0",
3529
  "graphology-utils": "^2.0.0"
@@ -3811,11 +3804,6 @@
3811
  "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz",
3812
  "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA=="
3813
  },
3814
- "lodash": {
3815
- "version": "4.17.21",
3816
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
3817
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
3818
- },
3819
  "magic-string": {
3820
  "version": "0.30.9",
3821
  "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.9.tgz",
 
12
  "fuse.js": "^7.0.0",
13
  "graphology": "^0.25.4",
14
  "graphology-library": "^0.8.0",
 
15
  "sigma": "^3.0.0-beta.17"
16
  },
17
  "devDependencies": {
 
1498
  }
1499
  },
1500
  "node_modules/graphology-canvas": {
1501
+ "version": "0.4.2",
1502
+ "resolved": "https://registry.npmjs.org/graphology-canvas/-/graphology-canvas-0.4.2.tgz",
1503
+ "integrity": "sha512-7YJCw/8mMXvFiLP1ujEgpFOM5lmj5/AQG+9H1S/ErFvAQ1eyoLsTK/OzyLJjXzhHsBEl0fF4rN//TDsvuvkfPg==",
1504
  "dependencies": {
1505
  "graphology-layout": "0.6.0",
1506
  "graphology-utils": "^2.0.0"
1507
  },
1508
  "peerDependencies": {
 
1509
  "graphology-types": ">=0.20.0"
1510
  },
1511
  "peerDependenciesMeta": {
 
1865
  "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz",
1866
  "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA=="
1867
  },
 
 
 
 
 
1868
  "node_modules/magic-string": {
1869
  "version": "0.30.9",
1870
  "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.9.tgz",
 
3514
  }
3515
  },
3516
  "graphology-canvas": {
3517
+ "version": "0.4.2",
3518
+ "resolved": "https://registry.npmjs.org/graphology-canvas/-/graphology-canvas-0.4.2.tgz",
3519
+ "integrity": "sha512-7YJCw/8mMXvFiLP1ujEgpFOM5lmj5/AQG+9H1S/ErFvAQ1eyoLsTK/OzyLJjXzhHsBEl0fF4rN//TDsvuvkfPg==",
3520
  "requires": {
3521
  "graphology-layout": "0.6.0",
3522
  "graphology-utils": "^2.0.0"
 
3804
  "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz",
3805
  "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA=="
3806
  },
 
 
 
 
 
3807
  "magic-string": {
3808
  "version": "0.30.9",
3809
  "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.9.tgz",
web/package.json CHANGED
@@ -23,7 +23,6 @@
23
  "fuse.js": "^7.0.0",
24
  "graphology": "^0.25.4",
25
  "graphology-library": "^0.8.0",
26
- "lodash": "^4.17.21",
27
  "sigma": "^3.0.0-beta.17"
28
  }
29
  }
 
23
  "fuse.js": "^7.0.0",
24
  "graphology": "^0.25.4",
25
  "graphology-library": "^0.8.0",
 
26
  "sigma": "^3.0.0-beta.17"
27
  }
28
  }
web/src/NodeWithGraphVisualization.svelte CHANGED
@@ -1,5 +1,4 @@
1
  <script lang="ts">
2
- import { onMount } from 'svelte';
3
  import { type NodeProps } from '@xyflow/svelte';
4
  import Sigma from 'sigma';
5
  import * as graphology from 'graphology';
@@ -11,39 +10,19 @@
11
  let sigmaCanvas: HTMLElement;
12
  let sigmaInstance: Sigma;
13
 
14
- const graph = graphology.Graph.from({
15
- attributes: {
16
- name: 'My Graph'
17
- },
18
- options: {
19
- allowSelfLoops: true,
20
- multi: false,
21
- type: 'mixed'
22
- },
23
- nodes: [
24
- {key: 'Thomas'},
25
- {key: 'Eric'}
26
- ],
27
- edges: [
28
- {
29
- key: 'T->E',
30
- source: 'Thomas',
31
- target: 'Eric',
32
- }
33
- ]
34
- });
35
- graphologyLibrary.layout.random.assign(graph);
36
- const settings = graphologyLibrary.layoutForceAtlas2.inferSettings(graph);
37
- graphologyLibrary.layoutForceAtlas2.assign(graph, { iterations: 10, settings });
38
- graphologyLibrary.layoutNoverlap.assign(graph, { settings: { ratio: 3 } });
39
-
40
- onMount(async () => {
41
- sigmaInstance = new Sigma(graph, sigmaCanvas);
42
- });
43
-
44
  </script>
45
 
46
- <LynxKiteNode id={id} data={data} {...$$restProps}>
47
  <div bind:this={sigmaCanvas} style="height: 200px; width: 200px;" >
48
  </div>
49
  </LynxKiteNode>
 
1
  <script lang="ts">
 
2
  import { type NodeProps } from '@xyflow/svelte';
3
  import Sigma from 'sigma';
4
  import * as graphology from 'graphology';
 
10
  let sigmaCanvas: HTMLElement;
11
  let sigmaInstance: Sigma;
12
 
13
+ $: if (sigmaCanvas) sigmaInstance = new Sigma(new graphology.Graph(), sigmaCanvas);
14
+ $: if (sigmaInstance && data.graph) {
15
+ const graph = graphology.Graph.from(data.graph);
16
+ graphologyLibrary.layout.random.assign(graph);
17
+ const settings = graphologyLibrary.layoutForceAtlas2.inferSettings(graph);
18
+ graphologyLibrary.layoutForceAtlas2.assign(graph, { iterations: 10, settings });
19
+ graphologyLibrary.layoutNoverlap.assign(graph, { settings: { ratio: 3 } });
20
+ sigmaInstance.graph = graph;
21
+ sigmaInstance.refresh();
22
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
  </script>
24
 
25
+ <LynxKiteNode {...$$props}>
26
  <div bind:this={sigmaCanvas} style="height: 200px; width: 200px;" >
27
  </div>
28
  </LynxKiteNode>
web/src/NodeWithParams.svelte CHANGED
@@ -7,7 +7,7 @@
7
  const { updateNodeData } = useSvelteFlow();
8
  </script>
9
 
10
- <LynxKiteNode id={id} data={data} {...$$restProps}>
11
  {#each Object.entries(data.params) as [name, value]}
12
  <div class="param">
13
  <label>
 
7
  const { updateNodeData } = useSvelteFlow();
8
  </script>
9
 
10
+ <LynxKiteNode {...$$props}>
11
  {#each Object.entries(data.params) as [name, value]}
12
  <div class="param">
13
  <label>