Exemplo n.º 1
0
    def get_nodes_and_edges(self, graph_data,nodes=None,edges=None, text_field='Key', append_key_to_text=False):
        if nodes is None: nodes = []
        if edges is None: edges = []

        for key,issue in graph_data.get('nodes').items():
            if issue and issue.get('Summary'):
                text = issue.get(text_field)
                if append_key_to_text:
                    text += " | {0}".format(key)
                nodes.append({'key': key, 'text': text , 'color': Misc.get_random_color()})

        for edge in graph_data.get('edges'):
            edges.append({ 'from': edge[0], 'text' : edge[1] ,'to': edge[2] ,'color':  Misc.get_random_color()})
        return nodes,edges
Exemplo n.º 2
0
    def mindmap(team_id=None, channel=None, params=None):
        (go_js, graph_data) = Go_Js_Views._get_graph_data(params, "mindmap",headless=True)
        go_js.load_page(False)
        (nodes, edges) = Go_Js_Views._get_nodes_and_edges(graph_data,text_field='Summary')
        data = { "class": "go.TreeModel", "nodeDataArray": []}
        width  = Misc.to_int(Misc.array_pop(params, 0))
        height = Misc.to_int(Misc.array_pop(params, 0))
        if width and height:
            go_js.browser().sync__browser_width(width,height)
        else:
            go_js.set_browser_width_based_on_nodes(nodes)

        nodes_indexed = {}
        for index, node in enumerate(nodes):
            key  = node.get('key')
            text = "{1} | {0}".format(key,node.get('text'))
            nodes_indexed[key] = {'index':index, 'text': text }

        root_node_text = "{1} | {0}".format(nodes[0].get('key'), nodes[0].get('text'))
        data['nodeDataArray'].append({"key": 0, "text": root_node_text })                     # add root node first
        for edge in edges:
            from_key   = edge['from']
            to_key     = edge['to']
            from_issue = nodes_indexed.get(from_key)
            to_issue   = nodes_indexed.get(to_key)

            if from_issue:
                parent = nodes_indexed.get(edge['from']).get('index')
            else:
                parent = from_key
            if to_issue:
                key    = nodes_indexed.get(edge['to'  ]).get('index')
                text   = nodes_indexed.get(edge['to'  ]).get('text')
            else:
                key    = to_key
                text   = to_key
            item = {"key": key, "parent": parent, "text": text, "brush": Misc.get_random_color()}
            data['nodeDataArray'].append(item)

        go_js.invoke_js("create_graph_from_json", data)
        js_code = 'layoutAll()'
        go_js.api_browser.sync__await_for_element('#animationFinished')

        Dev.pprint(go_js.exec_js(js_code))
        return go_js.send_screenshot_to_slack(team_id=team_id, channel=channel)