from PIL import Image # Documentation is lax here; the code pretty much documents itself: def buildNodes(devices): return [ { 'data': {'id':device.name, 'label': device.name, }, 'position': {'x': device.position[0]*170, 'y': device.position[1]*170}, 'locked': True, 'classes': 'device ' + device.name + " ", 'style': { #'color': '#fff', 'color': '#000000', ##646363 'font-family': "sans-serif", 'font-color': '#000000' }, } for device in devices if not device.position == [0,0]] def buildEdges(connections): return [ {'data': {'source': connection[0], 'target': connection[1], 'label':[]}, 'classes':'Edge', 'style':{ #'color': '#fff', 'color': '#646363', 'font-family': "sans-serif", 'font-color': '#000000', 'width': '0px', }} for connection in connections] # legacy todo DELETE ME # This file contains the nodes, edges and stylesheet for the Cytoscape graph # nodes = [ # { # 'data': {'id':short, 'label': label, }, # 'position': {'x': long, 'y': lat}, # 'locked': True, # 'classes': 'device ' + image, # 'style': { # 'font-family': 'FontAwesome', # # }, # } # # for short, label, long, lat, image in ( # ('Grid', 'Grid', -120, 200, 'grid'), # ('PvOnAcIn', 'AC PV',45, 65, 'pv'), # ('pv_two', 'AC PV', 210, 65, 'pv'), # ('ac_in', 'AC In Bus', 45, 200, 'ac'), # ('ac_last_one', 'AC Lasten', 45, 335, 'last'), # ('ac_last_two', 'Kritische Lasten', 210, 335, 'last'), # ('ac_out', 'AC Out Bus', 210, 200, 'ac'), # ('Inverter', 'Inverter', 375, 200, 'inverter'), # ('dc_last', 'DC Lasten', 540, 335, 'last'), # ('PvOnDc', 'DC PV', 540, 65, 'pv'), # ('dc_bus', 'DC Bus', 540, 200, 'dc'), # ('DcDc', 'DC/DC', 705, 200, 'dc'), # ('battery', 'Batterie', 870, 200, 'battery') # ) # ] # # # Todo grab from topology # edges = [ # {'data': {'source': source, 'target': target, 'label':[]}, # 'classes':'edge dot-floating', # 'style':{ # 'label': 'data(label)', # 'width': '0px', # }} # for source, target in ( # ('PvOnAcIn','ac_in'), # ('Grid', 'ac_in'), # ('ac_in', 'Grid'), # ('ac_in', 'ac_last_one'), # ('ac_in','ac_out'), # ('ac_out','ac_in'), # ('pv_two','ac_out'), # ('ac_out','Inverter'), # ('Inverter','ac_out'), # ('ac_out','ac_last_two'), # ('Inverter','dc_bus'), # ('dc_bus','Inverter'), # ('dc_bus','dc_last'), # ('PvOnDc','dc_bus'), # ('dc_bus','DcDc'), # ('DcDc','dc_bus'), # ('DcDc','battery'), # ('battery','DcDc') # ) # ] style = [ { 'selector': '.device', 'style':{ 'shape': 'rectangle', 'height': '70px', 'width': '95px', "text-valign": "bottom", "text-halign": "center", 'font-family': 'FontAwesome', 'content': 'data(label)', } }, { 'selector': '.consumer', 'style': { 'background-color': '#ea9f97', 'shape': 'rectangle', 'content': 'data(label)', } }, { 'selector': '.producer', #'#2ecc71' 'style': { 'background-color': '#00cc96', 'shape': 'rectangle', 'content': 'data(label)', } }, { 'selector': '.Grid', 'style': { 'background-color': '#f4b350', 'background-image': Image.open("assets/plug-solid.png"), } }, { 'selector': '.Inverter', ##518fd3 'style': { 'background-color': '#636efa', 'background-image': Image.open("assets/bolt-solid.png"), } }, { 'selector': '.AcIn', 'style': { 'background-color': '#adadad', 'background-image': Image.open("assets/bolt-solid.png"), } }, { 'selector': '.AcOut', 'style': { 'background-color': '#adadad', 'background-image': Image.open("assets/bolt-solid.png"), } }, { 'selector': '.PvOnAcIn', ##f4b350 'style': { 'background-color': '#00cc96', 'background-image': Image.open("assets/solar-panel-solid.png"), } }, { 'selector': '.PvOnAcOut', 'style': { 'background-color': '#00cc96', 'background-image': Image.open("assets/solar-panel-solid.png"), } }, { 'selector': '.PvOnDc', 'style': { 'background-color': '#00cc96', 'background-image': Image.open("assets/solar-panel-solid.png"), } }, { 'selector': '.Load', 'style': { 'background-color': '#f7a99c', 'background-image': Image.open("assets/industry-solid.png"), } }, { 'selector': '.CriticalLoad', 'style': { 'background-color': '#f7a99c', 'background-image': Image.open("assets/industry-solid.png"), } }, { 'selector': '.DcLoad', 'style': { 'background-color': '#f7a99c', 'background-image': Image.open("assets/industry-solid.png"), } }, { 'selector': '.Dc', 'style': { 'background-color': '#adadad', 'background-image': Image.open("assets/bolt-solid.png"), } }, { 'selector': '.DcDc', 'style': { 'background-color': '#adadad', 'background-image': Image.open("assets/bolt-solid.png"), } }, { 'selector': '.Dc48', 'style': { 'background-color': '#adadad', 'background-image': Image.open("assets/bolt-solid.png"), } }, { 'selector': '.Battery', 'style': { 'background-color': '#636efa', 'background-image': Image.open("assets/car-battery-solid.png"), } }, { 'selector': '.Edge', 'style': { 'label': 'data(label)', 'line-color': '#f9e1b1', 'curve-style': 'straight', 'opacity': '0.9', 'target-arrow-color': '#F59100', 'target-arrow-shape': 'vee', 'height': '0px', } }, ]