Exemple #1
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)
Exemple #2
0
    def _get_graph_data(params, layout=None, headless=True):
        load_dependencies(['syncer', 'requests'])
        from view_helpers.Am_Charts import Am_Charts

        am_charts = Am_Charts(headless=headless, layout=layout)
        graph_name = Misc.array_pop(params, 0)
        if graph_name:
            graph_data = am_charts.get_graph_data(graph_name)
            return am_charts, graph_data
        return am_charts, None
 def screenshot(team_id=None, channel=None, params=[]):
     url = params.pop(0).replace('<', '').replace(
         '>', '')  # fix extra chars added by Slack
     delay = Misc.to_int(Misc.array_pop(params, 0))
     slack_message(
         ":point_right: taking screenshot of url: {0}".format(url), [],
         channel, team_id)
     browser_helper = Browser_Lamdba_Helper().setup()
     png_data = browser_helper.get_screenshot_png(url,
                                                  full_page=True,
                                                  delay=delay)
     return browser_helper.send_png_data_to_slack(team_id, channel, url,
                                                  png_data)
    def render(team_id, channel, params):

        if params:
            target = params.pop(0)
            delay = Misc.to_int(Misc.array_pop(params, 0))
            if len(params) == 4:
                clip = {
                    'x': int(params[0]),
                    'y': int(params[1]),
                    'width': int(params[2]),
                    'height': int(params[3])
                }
            else:
                clip = None
        else:
            return None

        slack_message(":point_right: rendering file `{0}`".format(target), [],
                      channel, team_id)
        return Browser_Lamdba_Helper().setup().render_file(team_id,
                                                           channel,
                                                           target,
                                                           clip=clip,
                                                           delay=delay)
Exemple #5
0
    def swimlanes(team_id=None, channel=None, params=None):
        (go_js, graph_data) = Go_Js_Views._get_graph_data(params, "swimlanes")


        nodes = [{'key': "Pool1", 'text': "By Risk",  'isGroup': True, 'category': "Pool"}]
        edges = []
        groups = []
        colors = ["lightblue","lightgreen","lightyellow","orange"]
        for key,issue in graph_data.get('nodes').items():
            if issue:
                group = Misc.array_add(groups, issue.get('Rating'))
                nodes.append({'key': key, 'group':group}) #issue.get('Summary')
        for group in list(set(groups)):
            nodes.append({'key': group, 'text': group, 'isGroup': True, 'group'   : "Pool1", 'color': Misc.array_pop(colors)})

        for edge in graph_data.get('edges'):
            edges.append({ 'from': edge[0],'to': edge[2]})

        js_code = 'relayoutLanes()'
        return go_js.render(nodes, edges, js_code=js_code, width=1400, team_id=team_id, channel=channel)