def show(self) -> None: for topic, bookmarks in self._get_bookmarks_by_topic(): with foldable_container( treename="bookmarks", id_=topic, isopen=False, title=topic, indent=False, icon="foldable_sidebar", ): for bookmark in bookmarks: icon = bookmark["icon"] if not icon: icon = "bookmark_list" iconlink(bookmark["title"], bookmark["url"], icon) begin_footnote_links() link( _("Add Bookmark"), "javascript:void(0)", onclick="cmk.sidebar.add_bookmark('%s')" % transactions.get(), ) link(_("Edit"), "bookmark_lists.py") end_footnote_links()
def _show_rows(self): rows = self._get_rows() if bool([r for r in rows if r.stats is None]): html.center(_("No data from any site")) return html.open_table(class_=["tacticaloverview"], cellspacing="2", cellpadding="0", border="0") show_stales = self.parameters()["show_stale"] and user.may( "general.see_stales_in_tactical_overview" ) has_stale_objects = bool([r for r in rows if r.what != "events" and r.stats[-1]]) for row in rows: if row.what == "events": amount, problems, unhandled_problems = row.stats stales = 0 # no events open and disabled in local site: don't show events if amount == 0 and not config.mkeventd_enabled: continue else: amount, problems, unhandled_problems, stales = row.stats context_vars = get_context_url_variables(row.context) html.open_tr() html.th(row.title) html.th(_("Problems"), class_="show_more_mode") html.th( html.render_span(_("Unhandled"), class_="more") + html.render_span(_("Unhandled p."), class_="less") ) if show_stales and has_stale_objects: html.th(_("Stale")) html.close_tr() td_class = "col4" if has_stale_objects else "col3" html.open_tr() url = makeuri_contextless(request, row.views.total + context_vars, filename="view.py") html.open_td(class_=["total", td_class]) html.a("%s" % amount, href=url, target="main") html.close_td() for value, ty in [(problems, "handled"), (unhandled_problems, "unhandled")]: url = makeuri_contextless( request, getattr(row.views, ty) + context_vars, filename="view.py", ) html.open_td( class_=[ td_class, "states prob" if value != 0 else None, "show_more_mode" if ty == "handled" else "basic", ] ) link(str(value), url) html.close_td() if show_stales and has_stale_objects: if row.views.stale: url = makeuri_contextless( request, row.views.stale + context_vars, filename="view.py", ) html.open_td(class_=[td_class, "states prob" if stales != 0 else None]) link(str(stales), url) html.close_td() else: html.td(html.render_span("0")) html.close_tr() html.close_table()
def show(self) -> None: mode = self._host_mode_ident() sites.live().set_prepend_site(True) query = "GET hosts\nColumns: name state worst_service_state\nLimit: 100\n" view = "host" if mode == "problems": view = "problemsofhost" # Exclude hosts and services in downtime svc_query = ( "GET services\nColumns: host_name\n" "Filter: state > 0\nFilter: scheduled_downtime_depth = 0\n" "Filter: host_scheduled_downtime_depth = 0\nAnd: 3" ) problem_hosts = {x[1] for x in sites.live().query(svc_query)} query += "Filter: state > 0\nFilter: scheduled_downtime_depth = 0\nAnd: 2\n" for host in problem_hosts: query += "Filter: name = %s\n" % host query += "Or: %d\n" % (len(problem_hosts) + 1) hosts = sites.live().query(query) sites.live().set_prepend_site(False) hosts.sort() longestname = 0 for site, host, state, worstsvc in hosts: longestname = max(longestname, len(host)) if longestname > 15: num_columns = 1 else: num_columns = 2 html.open_table(class_="allhosts") col = 1 for site, host, state, worstsvc in hosts: if col == 1: html.open_tr() html.open_td() if state > 0 or worstsvc == 2: statecolor = 2 elif worstsvc == 1: statecolor = 1 elif worstsvc == 3: statecolor = 3 else: statecolor = 0 html.open_div(class_=["statebullet", "state%d" % statecolor]) html.nbsp() html.close_div() link( text=host, url=makeuri_contextless( request, [ ("view_name", view), ("host", host), ("site", site), ], filename="view.py", ), ) html.close_td() if col == num_columns: html.close_tr() col = 1 else: col += 1 if col < num_columns: html.close_tr() html.close_table()