def paint_aggr_tree_ltr(row, mirror): wrap = get_painter_option("aggr_wrap") if wrap == "wrap": td = '<td' else: td = '<td style="white-space: nowrap;"' def gen_table(tree, height, show_host): if len(tree) == 3: return gen_leaf(tree, height, show_host) else: return gen_node(tree, height, show_host) def gen_leaf(tree, height, show_host): return [(bi.aggr_render_leaf(tree, show_host), height, [])] def gen_node(tree, height, show_host): leaves = [] for node in tree[3]: if not node[2].get("hidden"): leaves += gen_table(node, height - 1, show_host) h = '<div class="aggr tree">' + bi.aggr_render_node( tree, tree[2]["title"], '', show_host) + "</div>" if leaves: leaves[0][2].append((len(leaves), h)) return leaves tree = row["aggr_treestate"] if get_painter_option("aggr_onlyproblems") == "1": tree = bi.filter_tree_only_problems(tree) depth = bi.status_tree_depth(tree) leaves = gen_table(tree, depth, row["aggr_hosts"] > 1) h = '<table class="aggrtree ltr">' odd = "odd" for code, colspan, parents in leaves: h += '<tr>\n' leaf_td = td + ' class="leaf %s"' % odd odd = odd == "odd" and "even" or "odd" if colspan > 1: leaf_td += ' colspan=%d' % colspan leaf_td += '>%s</td>\n' % code tds = [leaf_td] for rowspan, c in parents: tds.append(td + ' class=node rowspan=%d>%s</td>\n' % (rowspan, c)) if mirror: tds.reverse() h += "".join(tds) h += '</tr>\n' h += '</table>' return "aggrtree", h
def paint_aggr_tree_ltr(row, mirror): wrap = painter_options.get("aggr_wrap") if wrap == "wrap": td = '<td' else: td = '<td style="white-space: nowrap;"' def gen_table(tree, height, show_host): if len(tree) == 3: return gen_leaf(tree, height, show_host) else: return gen_node(tree, height, show_host) def gen_leaf(tree, height, show_host): return [(bi.aggr_render_leaf(tree, show_host), height, [])] def gen_node(tree, height, show_host): leaves = [] for node in tree[3]: if not node[2].get("hidden"): leaves += gen_table(node, height - 1, show_host) h = '<div class="aggr tree">' \ + bi.aggr_render_node(tree, tree[2]["title"], show_host) + "</div>" if leaves: leaves[0][2].append((len(leaves), h)) return leaves tree = row["aggr_treestate"] if painter_options.get("aggr_onlyproblems") == "1": tree = bi.filter_tree_only_problems(tree) depth = bi.status_tree_depth(tree) leaves = gen_table(tree, depth, row["aggr_hosts"] > 1) h = '<table class="aggrtree ltr">' odd = "odd" for code, colspan, parents in leaves: h += '<tr>\n' leaf_td = td + ' class="leaf %s"' % odd odd = odd == "odd" and "even" or "odd" if colspan > 1: leaf_td += ' colspan=%d' % colspan leaf_td += '>%s</td>\n' % code tds = [leaf_td] for rowspan, c in parents: tds.append(td + ' class=node rowspan=%d>%s</td>\n' % (rowspan, c)) if mirror: tds.reverse() h += "".join(tds) h += '</tr>\n' h += '</table>' return "aggrtree", h