Show nested VM containers and hide duplicate entries in summary
This commit is contained in:
@@ -545,6 +545,20 @@ main {
|
|||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.ct-summary-item.nested {
|
||||||
|
padding-left: 14px;
|
||||||
|
opacity: 0.8;
|
||||||
|
}
|
||||||
|
|
||||||
|
.vm-containers {
|
||||||
|
margin-top: 6px;
|
||||||
|
padding-top: 4px;
|
||||||
|
border-top: 1px dashed #334155;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
/* --- Container / VM Sub-cards --- */
|
/* --- Container / VM Sub-cards --- */
|
||||||
|
|
||||||
.container-grid {
|
.container-grid {
|
||||||
|
|||||||
@@ -73,7 +73,16 @@
|
|||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% set containers = d.get('container', []) if d.get('container') else [] %}
|
{% set containers_raw = d.get('container', []) if d.get('container') else [] %}
|
||||||
|
{% set child_vms = children_map.get(server.hostname, []) %}
|
||||||
|
{% set child_names = child_vms|map(attribute='hostname')|list %}
|
||||||
|
{% set containers = [] %}
|
||||||
|
{% for ct in containers_raw %}
|
||||||
|
{% set ct_name = ct.get('name', ct.get('id', '')) %}
|
||||||
|
{% if ct_name not in child_names %}
|
||||||
|
{% set _ = containers.append(ct) %}
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
{% if server.is_online %}
|
{% if server.is_online %}
|
||||||
<div class="usage-bars">
|
<div class="usage-bars">
|
||||||
@@ -108,7 +117,6 @@
|
|||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
{% set child_vms = children_map.get(server.hostname, []) %}
|
|
||||||
{% if containers or child_vms %}
|
{% if containers or child_vms %}
|
||||||
<div class="ct-summary-list">
|
<div class="ct-summary-list">
|
||||||
{% for vm in child_vms %}
|
{% for vm in child_vms %}
|
||||||
@@ -120,6 +128,15 @@
|
|||||||
{% if vm_os %}<span class="ct-summary-os">{{ vm_os }}</span>{% endif %}
|
{% if vm_os %}<span class="ct-summary-os">{{ vm_os }}</span>{% endif %}
|
||||||
<span class="ct-summary-ip">{{ vm.primary_ip or vm.hostname }}</span>
|
<span class="ct-summary-ip">{{ vm.primary_ip or vm.hostname }}</span>
|
||||||
</div>
|
</div>
|
||||||
|
{% set vm_cts = vm.details.get('container', []) if vm.details and vm.details.get('container') else [] %}
|
||||||
|
{% for vct in vm_cts %}
|
||||||
|
{% set vct_up = vct.get('status', '')|lower in ['running', 'started'] %}
|
||||||
|
<div class="ct-summary-item nested">
|
||||||
|
<span class="status-dot-sm {% if vct_up %}online{% else %}offline{% endif %}"></span>
|
||||||
|
<span class="ct-summary-name">{{ vct.get('name', vct.get('id', '?')) }}</span>
|
||||||
|
{% if vct.get('ip') %}<span class="ct-summary-ip">{{ vct.get('ip') }}</span>{% endif %}
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% for ct in containers %}
|
{% for ct in containers %}
|
||||||
{% set ct_up = ct.get('status', '')|lower in ['running', 'started'] %}
|
{% set ct_up = ct.get('status', '')|lower in ['running', 'started'] %}
|
||||||
@@ -419,6 +436,20 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% set vm_containers = vd.get('container', []) if vd.get('container') else [] %}
|
||||||
|
{% if vm_containers %}
|
||||||
|
<div class="vm-containers">
|
||||||
|
{% for vct in vm_containers %}
|
||||||
|
{% set vct_up = vct.get('status', '')|lower in ['running', 'started'] %}
|
||||||
|
<div class="ct-summary-item">
|
||||||
|
<span class="status-dot-sm {% if vct_up %}online{% else %}offline{% endif %}"></span>
|
||||||
|
<span class="ct-summary-name">{{ vct.get('name', vct.get('id', '?')) }}</span>
|
||||||
|
{% if vct.get('type') %}<span class="ct-summary-type">{{ vct.get('type')|upper }}</span>{% endif %}
|
||||||
|
{% if vct.get('ip') %}<span class="ct-summary-ip">{{ vct.get('ip') }}</span>{% endif %}
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
{% else %}
|
{% else %}
|
||||||
<div class="ct-details">
|
<div class="ct-details">
|
||||||
<span class="ct-status-label">offline</span>
|
<span class="ct-status-label">offline</span>
|
||||||
|
|||||||
Reference in New Issue
Block a user