[WebUI] Feature Request: Ability to hide Engine and Pod columns in Containers #2423

This commit is contained in:
nicolargo 2024-04-29 17:49:45 +02:00
parent c8907988ab
commit a88910896d
3 changed files with 35 additions and 24 deletions

View File

@ -4,8 +4,8 @@
{{ containers.length }} sorted by {{ sorter.getColumnLabel(sorter.column) }}
<div class="table">
<div class="table-row">
<div class="table-cell text-left">Engine</div>
<div class="table-cell text-left">Pod</div>
<div class="table-cell text-left" v-show="showEngine">Engine</div>
<div class="table-cell text-left" v-show="showPod">Pod</div>
<div
class="table-cell text-left"
:class="['sortable', sorter.column === 'name' && 'sort']"
@ -41,8 +41,8 @@
v-for="(container, containerId) in containers"
:key="containerId"
>
<div class="table-cell text-left">{{ container.engine }}</div>
<div class="table-cell text-left">{{ container.pod_id || '-' }}</div>
<div class="table-cell text-left" v-show="showEngine">{{ container.engine }}</div>
<div class="table-cell text-left" v-show="showPod">{{ container.pod_id || '-' }}</div>
<div class="table-cell text-left">{{ container.name }}</div>
<div class="table-cell" :class="container.status == 'Paused' ? 'careful' : 'ok'">
{{ container.status }}
@ -105,6 +105,9 @@ export default {
stats() {
return this.data.stats['containers'];
},
views() {
return this.data.views['containers'];
},
containers() {
const { sorter } = this;
const containers = (this.stats || []).map(
@ -139,6 +142,12 @@ export default {
}, []),
[sorter.isReverseColumn(sorter.column) ? 'desc' : 'asc']
);
},
showEngine() {
return this.views.show_engine_name;
},
showPod() {
return this.views.show_pod_name;
}
},
watch: {

File diff suppressed because one or more lines are too long

View File

@ -288,6 +288,16 @@ class PluginModel(GlancesPluginModel):
alert = self.get_alert(i['memory']['usage'], maximum=i['memory']['limit'], header='mem')
self.views[i[self.get_key()]]['mem']['decoration'] = alert
# Display Engine and Pod name ?
show_pod_name = False
if any(ct.get("pod_name") for ct in self.stats):
show_pod_name = True
self.views['show_pod_name'] = show_pod_name
show_engine_name = False
if len(set(ct["engine"] for ct in self.stats)) > 1:
show_engine_name = True
self.views['show_engine_name'] = show_engine_name
return True
def msg_curse(self, args=None, max_width=None):
@ -299,14 +309,6 @@ class PluginModel(GlancesPluginModel):
if not self.stats or len(self.stats) == 0 or self.is_disabled():
return ret
show_pod_name = False
if any(ct.get("pod_name") for ct in self.stats):
show_pod_name = True
show_engine_name = False
if len(set(ct["engine"] for ct in self.stats)) > 1:
show_engine_name = True
# Build the string message
# Title
msg = '{}'.format('CONTAINERS')
@ -325,10 +327,10 @@ class PluginModel(GlancesPluginModel):
len(max(self.stats, key=lambda x: len(x['name']))['name']),
)
if show_engine_name:
if self.views['show_engine_name']:
msg = ' {:{width}}'.format('Engine', width=6)
ret.append(self.curse_add_line(msg))
if show_pod_name:
if self.views['show_pod_name']:
msg = ' {:{width}}'.format('Pod', width=12)
ret.append(self.curse_add_line(msg))
msg = ' {:{width}}'.format('Name', width=name_max_width)
@ -357,9 +359,9 @@ class PluginModel(GlancesPluginModel):
# Data
for container in self.stats:
ret.append(self.curse_new_line())
if show_engine_name:
if self.views['show_engine_name']:
ret.append(self.curse_add_line(' {:{width}}'.format(container["engine"], width=6)))
if show_pod_name:
if self.views['show_pod_name']:
ret.append(self.curse_add_line(' {:{width}}'.format(container.get("pod_id", "-"), width=12)))
# Name
ret.append(self.curse_add_line(self._msg_name(container=container, max_width=name_max_width)))
@ -376,18 +378,18 @@ class PluginModel(GlancesPluginModel):
# CPU
try:
msg = '{:>6.1f}'.format(container['cpu']['total'])
except KeyError:
except (KeyError, TypeError):
msg = '{:>6}'.format('_')
ret.append(self.curse_add_line(msg, self.get_views(item=container['name'], key='cpu', option='decoration')))
# MEM
try:
msg = '{:>7}'.format(self.auto_unit(container['memory']['usage']))
except KeyError:
except (KeyError, TypeError):
msg = '{:>7}'.format('_')
ret.append(self.curse_add_line(msg, self.get_views(item=container['name'], key='mem', option='decoration')))
try:
msg = '/{:<7}'.format(self.auto_unit(container['memory']['limit']))
except KeyError:
except (KeyError, TypeError):
msg = '/{:<7}'.format('_')
ret.append(self.curse_add_line(msg))
# IO R/W
@ -395,13 +397,13 @@ class PluginModel(GlancesPluginModel):
try:
value = self.auto_unit(int(container['io_rx'])) + unit
msg = '{:>7}'.format(value)
except KeyError:
except (KeyError, TypeError):
msg = '{:>7}'.format('_')
ret.append(self.curse_add_line(msg))
try:
value = self.auto_unit(int(container['io_wx'])) + unit
msg = ' {:<7}'.format(value)
except KeyError:
except (KeyError, TypeError):
msg = ' {:<7}'.format('_')
ret.append(self.curse_add_line(msg))
# NET RX/TX
@ -421,7 +423,7 @@ class PluginModel(GlancesPluginModel):
+ unit
)
msg = '{:>7}'.format(value)
except KeyError:
except (KeyError, TypeError):
msg = '{:>7}'.format('_')
ret.append(self.curse_add_line(msg))
try:
@ -432,7 +434,7 @@ class PluginModel(GlancesPluginModel):
+ unit
)
msg = ' {:<7}'.format(value)
except KeyError:
except (KeyError, TypeError):
msg = ' {:<7}'.format('_')
ret.append(self.curse_add_line(msg))
# Command