From 5f0d718301b999aab9a95141430239705193cd6c Mon Sep 17 00:00:00 2001 From: Franziska Kunsmann Date: Tue, 13 Feb 2024 09:26:30 +0100 Subject: [PATCH] show icon instead of [ACK] for acknowledged lines --- ack.png | Bin 0 -> 15077 bytes node.lua | 17 ++++++++++++++--- service | 41 +++++++++++++++++++---------------------- 3 files changed, 33 insertions(+), 25 deletions(-) create mode 100644 ack.png diff --git a/ack.png b/ack.png new file mode 100644 index 0000000000000000000000000000000000000000..787f7cace85a44db014d5454283d824f8be74c59 GIT binary patch literal 15077 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 KO8(^=f&T|?r2Ve| literal 0 HcmV?d00001 diff --git a/node.lua b/node.lua index f6301e5..2e3941e 100644 --- a/node.lua +++ b/node.lua @@ -4,6 +4,7 @@ local json = require "json" local services = {} local rotate_before = nil local transform = nil +local ack_image = resource.load_image("ack.png") local c_hard = {} c_hard[0] = resource.create_colored_texture(0, 0.666, 0, 1) @@ -68,6 +69,10 @@ function node.render() local service_width = CONFIG.header_font:width(serv.service, service_font_size) local my_height = (#serv.output*CONFIG.output_size*1.5) + margin*3 + if serv.ack then + header_width = header_width - margin - host_font_size + end + if host_width + service_width > header_width then -- two-line output, if possible while CONFIG.header_font:width(serv.host, host_font_size) > header_width do @@ -89,15 +94,21 @@ function node.render() y = y + margin - service_x = real_width - margin - CONFIG.header_font:width(serv.service, service_font_size) + local service_x = real_width - margin - CONFIG.header_font:width(serv.service, service_font_size) + local host_x = margin + + if serv.ack then + ack_image:draw(host_x, y, host_x + host_font_size, y + host_font_size) + host_x = host_x + host_font_size + margin + end if host_width + service_width > header_width then - CONFIG.header_font:write(margin, y, serv.host, host_font_size, c_text[serv.state][1],c_text[serv.state][2],c_text[serv.state][2],1) + CONFIG.header_font:write(host_x, y, serv.host, host_font_size, c_text[serv.state][1],c_text[serv.state][2],c_text[serv.state][2],1) y = y + host_font_size + margin CONFIG.header_font:write(service_x, y, serv.service, service_font_size, c_text[serv.state][1],c_text[serv.state][2],c_text[serv.state][3],1) y = y + service_font_size + margin else - CONFIG.header_font:write(margin, y, serv.host, host_font_size, c_text[serv.state][1],c_text[serv.state][2],c_text[serv.state][2],1) + CONFIG.header_font:write(host_x, y, serv.host, host_font_size, c_text[serv.state][1],c_text[serv.state][2],c_text[serv.state][2],1) CONFIG.header_font:write(service_x, y, serv.service, service_font_size, c_text[serv.state][1],c_text[serv.state][2],c_text[serv.state][3],1) y = y + CONFIG.header_size + margin end diff --git a/service b/service index e0522f2..ae48567 100755 --- a/service +++ b/service @@ -73,27 +73,25 @@ def regenerate(): if host['attrs']['problem']: broken_hosts.add(host['attrs']['display_name']) - if host['attrs']['downtime_depth'] > 0: + if ( + host['attrs']['downtime_depth'] > 0 + or ( + host['attrs']['acknowledgement'] > 0 + and not CONFIG['show_ack'] + ) + ): continue - if host['attrs']['acknowledgement'] > 0: - if not CONFIG['show_ack']: - continue - - ack = '[ACK] ' - else: - ack = '' - if not CONFIG['show_soft'] and int(host['attrs']['state_type']) == 0: continue services['services'].append({ - 'host': ack + host['attrs']['display_name'], + 'host': host['attrs']['display_name'], 'service': '-- HOST --', 'state': 2, 'type': int(host['attrs']['state_type']), 'output': limit_output_lines(host['attrs']['last_check_result']['output'].splitlines(), 3), - 'ack': ack, + 'ack': bool(host['attrs']['acknowledgement'] > 0), 'sort': '{}{}{}{}'.format( int(host['attrs']['state_type'])*-1, SORT_ORDER[2], @@ -104,27 +102,26 @@ def regenerate(): for svc in serv['results']: if svc['attrs']['problem']: - if svc['attrs']['downtime_depth'] > 0 or svc['attrs']['host_name'] in broken_hosts: + if ( + svc['attrs']['host_name'] in broken_hosts + or svc['attrs']['downtime_depth'] > 0 + or ( + svc['attrs']['acknowledgement'] > 0 + and not CONFIG['show_ack'] + ) + ): continue - if svc['attrs']['acknowledgement'] > 0: - if not CONFIG['show_ack']: - continue - - ack = ' [ACK]' - else: - ack = '' - if not CONFIG['show_soft'] and int(svc['attrs']['state_type']) == 0: continue services['services'].append({ 'host': svc['attrs']['host_name'], - 'service': svc['attrs']['display_name'] + ack, + 'service': svc['attrs']['display_name'], 'state': int(svc['attrs']['state']), 'type': int(svc['attrs']['state_type']), 'output': limit_output_lines(svc['attrs']['last_check_result']['output'].splitlines()), - 'ack': ack, + 'ack': bool(svc['attrs']['acknowledgement'] > 0), 'sort': '{}{}{}{}'.format( int(svc['attrs']['state_type'])*-1, SORT_ORDER[int(svc['attrs']['state'])],