{% extends "base.html" %} {% import '_ui.html' as ui %} {% block title %}{{ friendly_name }} - Overview{% endblock %} {# Overview of one image: what needs attention first (each item links to the tab that fixes it), a calm row of counts, the control files one line each (description in the row body), then compact lists of hardware gaps, newer Dell packs and missing zips. Deep links into the Drivers tab use its ?q=, ?os=, ?missing=1 and ?findings=1 filters. #} {% block extra_head %} {% endblock %} {% block content %} {% set header_actions %} Hardware coverage Dell updates {% endset %} {% include "_image_header.html" %} {% set d = ov.drivers %} {% set lint = ov.lint %} {# missing-zip findings are counted on their own; bad_lint is what is wrong in the map itself #} {% set bad_lint = lint.map_errors if lint.available else 0 %} {% set os_row = ov.os.current %} {% set drv_url = image_tab_url(image_type, 'drivers') %} {% set os_url = image_tab_url(image_type, 'os') %} {# -------- needs attention: (kind, text, link, label) -------- #} {% set attn = [] %} {% if d.missing %}{% set _ = attn.append(('err', d.missing | length ~ ' driver entr' ~ ('ies point' if d.missing | length != 1 else 'y points') ~ ' at a zip that is not on the share. PESetup only warns, and the PC comes up without NIC or WiFi drivers.', image_tab_url(image_type, 'drivers', missing=1), 'Drivers')) %}{% endif %} {% if bad_lint %}{% set _ = attn.append(('err', bad_lint ~ ' driver map lint error' ~ ('s' if bad_lint != 1) ~ ' in the entries themselves (a token or order PESetup will mis-match; see the findings on the Drivers tab).', image_tab_url(image_type, 'drivers', findings=1), 'Drivers')) %}{% endif %} {% if not os_row %}{% set _ = attn.append(('err', 'OperatingSystem.json has no entry: PESetup has no Windows image to apply.', os_url, 'OS and Packages')) %} {% elif not os_row.wim.exists %}{% set _ = attn.append(('err', 'install.wim is not on disk in ' ~ (os_row.dest or 'the configured folder (DestinationDir is empty)') ~ '.', os_url, 'OS and Packages')) %}{% endif %} {% if ov.packages.missing %}{% set _ = attn.append(('warn', ov.packages.missing | length ~ ' enabled package file' ~ ('s are' if ov.packages.missing | length != 1 else ' is') ~ ' not on disk.', os_url, 'OS and Packages')) %}{% endif %} {% if ov.gaps %}{% set _ = attn.append(('warn', ov.gaps | length ~ ' model' ~ ('s' if ov.gaps | length != 1) ~ ' booted WinPE here with no working driver entry in this image.', url_for('hardware_page'), 'Hardware coverage')) %}{% endif %} {% if ov.unattend_override %}{% set _ = attn.append(('warn', 'Deploy/Tools/GE/XML/FlatUnattendW10.xml exists. PESetup loads that file first, so the Unattend tab (which edits Deploy/FlatUnattendW10.xml) is not what imaging uses.', image_tab_url(image_type, 'unattend'), 'Unattend')) %}{% endif %} {% if ov.hw_drivers_extra %}{% set _ = attn.append(('neutral', 'Deploy/Control/hw_drivers.json exists. PESetup never reads it; only HardwareDriver.json decides drivers.', drv_url, 'Drivers')) %}{% endif %} {% if ov.dell.rows %}{% set _ = attn.append(('neutral', ov.dell.rows | length ~ ' driver pack' ~ ('s have' if ov.dell.rows | length != 1 else ' has') ~ ' a newer Dell release (last check ' ~ (ov.dell.checked | local_dt) ~ ').', url_for('dell_updates.page'), 'Dell updates')) %}{% endif %} {% if ov.models.no_entry %}{% set _ = attn.append(('neutral', ov.models.no_entry | length ~ ' hardware model selection' ~ ('s name' if ov.models.no_entry | length != 1 else ' names') ~ ' a driver family with no entry in HardwareDriver.json (media build selection only; imaging does not use it).', os_url, 'OS and Packages')) %}{% endif %} {% set kind_label = {'err': 'Error', 'warn': 'Warning', 'neutral': 'Note'} %} {% set n_err = attn | selectattr(0, 'equalto', 'err') | list | length %}

Needs attention

{% if n_err %}{{ ui.chip(n_err ~ ' error' ~ ('s' if n_err != 1), 'err') }}{% endif %} {% if attn | length > n_err %}{{ ui.chip((attn | length - n_err) ~ ' other', 'neutral') }}{% endif %}
{% if attn %} {% else %}
{{ ui.chip('All clear', 'ok') }} Driver zips, install.wim and packages are all on disk and no seen model is missing drivers.
{% endif %}
{# -------- summary counts -------- #}

At a glance

{% for osn in ('Win11', 'Win10') %} {{ osn }} driver entries {{ d.by_os[osn] }} {{ ui.chip(osn, 'w11' if osn == 'Win11' else 'w10') }}{% if not d.total and osn == 'Win11' %} {{ ui.chip('Map empty', 'err') }}{% endif %} of {{ d.total }} entries{% if d.by_os.Other and osn == 'Win10' %}, {{ d.by_os.Other }} other{% endif %} {% endfor %} Zips missing {{ d.missing | length }} {{ ui.chip('Missing', 'err') if d.missing else ui.chip('OK', 'ok') }} {% if d.missing %}{{ d.missing | selectattr('os', 'equalto', 'Win11') | list | length }} of them Win11{% else %}every zip is on the share{% endif %} {% if lint.available %} Map lint {{ lint.total }} {{ ui.chip('Errors', 'err') if bad_lint else (ui.chip('Findings', 'warn') if lint.total else ui.chip('Clean', 'ok')) }} {% for lv, n in lint.by_level | dictsort %}{{ n }} {{ lv | lower }}{% if not loop.last %}, {% endif %}{% else %}no findings{% endfor %} {% else %} Map lint {{ ui.chip('Not available', 'off') }} Shown once the Drivers tab lint is installed {% endif %} {% if os_row %} Operating system {{ os_row.osv.productName or os_row.osv.marketingName }} {{ os_row.osv.versionNumber }} {{ ui.chip('On disk', 'ok') if os_row.wim.exists else ui.chip('wim missing', 'err') }} osId {{ os_row.osv.id }}{% if os_row.wim.exists %}, install.wim {{ (os_row.wim.size / 1073741824) | round(1) }} GB{% endif %} {% else %} Operating system {{ ui.chip('None', 'err') }} OperatingSystem.json is empty or missing {% endif %} Packages {{ ov.packages.enabled }} of {{ ov.packages.total }} enabled {{ ui.chip('File missing', 'warn') if ov.packages.missing else ui.chip('OK', 'ok') }} {% if ov.packages.missing %}{{ ov.packages.missing | length }} enabled file{{ 's' if ov.packages.missing | length != 1 }} missing{% else %}all enabled files on disk{% endif %} {% if ov.gaps_checked %} Hardware gaps {{ ov.gaps | length }} {{ ui.chip('Gaps', 'warn') if ov.gaps else ui.chip('OK', 'ok') }} seen models with no working driver entry {% else %} Hardware gaps {{ ui.chip('Not tracked', 'off') }} Hardware coverage checks the three GE images only {% endif %} {% if ov.dell.checked %} Dell updates {{ ov.dell.rows | length }} {{ ui.chip('Newer packs', 'neutral') if ov.dell.rows else ui.chip('Current', 'ok') }} checked {{ ov.dell.checked | local_dt }} {% else %} Dell updates {{ ui.chip('Not checked', 'off') }} Run a check on Updates, Dell drivers and BIOS {% endif %}
{# -------- control files -------- #}

Control files

{% for f in ov.files %}
{{ f.name }} {% if f.exists %}{{ f.mtime | local_dt }}{% else %}{{ ui.chip('Missing', 'err') }}{% endif %} {% if f.exists %}{{ f.size | filesizeformat }}{% else %}-{% endif %} {{ f.backups or '-' }}
{{ f.what }} {{ f.rel }} {% if f.exists %}{{ f.size | filesizeformat }}, {% endif %}{{ f.backups }} backup{{ 's' if f.backups != 1 }} next to the file
{% endfor %} {% set saves = ov.last_saves | dictsort | selectattr(1) | list %} {% if saves %}
Last saves from this app: {% for scope, rec in saves %}{{ {'drivers': 'Drivers', 'unattend': 'Unattend', 'os': 'OS and Packages'}[scope] }} {{ rec.ts | local_dt }} ({{ rec.files | map(attribute='name') | join(', ') }}){% if not loop.last %}; {% endif %}{% endfor %}
{% endif %}
{# -------- coverage gaps -------- #}

Hardware coverage gaps

{% if ov.gaps %}{{ ui.chip(ov.gaps | length, 'warn') }}{% endif %} Hardware coverage
{% if not ov.gaps_checked %}
This image is not one of the images Hardware coverage checks.
{% elif ov.gaps %}
    {% for g in ov.gaps[:8] %}
  • {{ g.model }} {% if g.status == 'no-entry' %}{{ ui.chip('No entry', 'err') }}{% else %}{{ ui.chip('Zip missing', 'err') }}{% endif %} {{ g.last_seen | local_dt }}
  • {% endfor %}
{% if ov.gaps | length > 8 %}{% endif %} {% else %}
Every model that has booted WinPE here matches a driver entry with its zip on disk.
{% endif %}
{# -------- dell hints -------- #}

Newer Dell driver packs

{% if ov.dell.rows %}{{ ui.chip(ov.dell.rows | length, 'neutral') }}{% endif %} Dell updates
{% if ov.dell.rows %} {% if ov.dell.rows | length > 8 %}{% endif %} {% elif ov.dell.checked %}
Every driver pack in this map is the newest Dell has (checked {{ ov.dell.checked | local_dt }}).
{% else %}
Not checked yet. Run a check on Updates, Dell drivers and BIOS.
{% endif %}
{# -------- missing zips -------- #} {% if d.missing %}

Zips not on the share

{{ ui.chip(d.missing | length, 'err') }} Drivers
{% if d.missing | length > 8 %}{% endif %}
{% endif %}
{% endblock %}