1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- #!/usr/bin/env python3
- """
- This script creates the data.js file containing the list of nodes end edges for
- the vis.js graph. Just place data.js in the same folder with index.html.
- """
- import json
- from pathlib import Path
- data = '../dokk/data'
- edge_properties = [ 'comics_cartoon', 'comics_author', 'ttrpg_character',
- 'community_project', 'game_genre', 'software_type',
- 'node_instance_of', 'node_subclass_of' ]
- nodes = []
- edges = []
- for path in Path(data).glob('**/*.json',):
- with open(path, 'r') as f:
- n = json.loads(f.read())
- nodes.append({
- 'title': n['node_name'] + ('\n' + n['node_description'] if 'node_description' in n else ''),
- #'color': { 'background': '', 'border': ''},
- 'label': n['node_name'],
- 'id': n['node_id']
- })
- for p in edge_properties:
- if p not in n.keys():
- continue
- if not type(n[p]) == list:
- n[p] = [ n[p] ]
- for target in n[p]:
- edges.append({
- 'title': p,
- 'from': n['node_id'],
- #'label': p,
- 'to': target,
- })
- with open('data.js', 'w') as f:
- f.write('var nodes={};\nvar edges={}'.format(json.dumps(nodes), json.dumps(edges)))
|