{% import "_ui.html" as ui %} {% if oob %}
{% include "_dev_sub.html" %}
{% endif %}
{% for d in devices %} {% set st = d.status %}{% set down = d.online is false %} {% set ros_new = ros_newer(st.ros_latest, st.ros_installed) %} {% set fw_new = st.fw_current and st.fw_upgrade and st.fw_upgrade != st.fw_current %} {% else %} {% endfor %}
УстройствоГруппаКаналROSUpgrade ROSFWUpgrade FWUptimeЗапрос бэкапа (UTC)Действия
{% if down %}
{% if "HTTP 401" in (d.last_error or "") %}Ошибка авторизации{% elif "HTTP " in (d.last_error or "") %}Устройство ответило ошибкой{% else %}Нет соединения{% endif %}
{% else %}
{{ d.host }}:{{ d.port }}{% if st.model %} · {{ st.model }}{% endif %}
{% endif %}
{{ group_names.get(d.group_id) or "—" }} {% if down %}—{% else %}{{ st.channel or "—" }}{% endif %} {% if down %}—{% else %}{{ st.ros_installed or st.ros_version or "—" }}{% endif %} {% if down or not (st.ros_latest and st.ros_installed) %}— {% elif ros_new %}{{ ui.icon("up", 12, 2.2) }}{{ st.ros_latest }} {% else %}{{ ui.icon("check", 14, 2.2) }}актуально{% endif %} {% if down %}—{% else %}{{ st.fw_current or "—" }}{% endif %} {% if down or not (st.fw_current and st.fw_upgrade) %}— {% elif fw_new %}{{ ui.icon("up", 12, 2.2) }}{{ st.fw_upgrade }} {% else %}{{ ui.icon("check", 14, 2.2) }}актуально{% endif %} {% if down %}—{% else %}{{ st.uptime or "—" }}{% endif %} {{ d.last_backup_requested_at|dt }}
{{ "Нет устройств, подходящих под фильтр." if filtered else "Устройств пока нет. Добавьте первое." }}
Показано {{ devices|length }} из {{ total }} {{ total|plural("устройства", "устройств", "устройств") }}