<% $t->render( $data ) %> % if ($refresh) { %# Auto-reload page every minute % } <%init> my @simple_states = qw(Errors Warnings Unknown Ok); my @combo_states = qw(EW EU EUW); my %states = ( All => 'euwo', Errors => 'e', Warnings => 'w', Unknown => 'u', Ok => 'o', EW => 'ew', EU => 'eu', EUW => 'euw', ); my %states_inverted = map { $states{$_} => $_ } keys %states; my %show = map { $_ => 1 } split //, $show; my ($data, $total) = LoadFile( "$ENV{NDASH_HOME}/tmp/data/ndash.yml" ); my $t = HTML::Tabulate->new({ in_fields => [ qw(host counts services) ], fields => [ qw(host services) ], labels => 0, table => { id => 'services' }, tr => { class => sub { my ($row) = @_; my $count = $row->[1]; join(' ', grep { $count->{$_} > 0 } sort keys %$count); }, }, field_attr => { host => { class => sub { my ($value, $row) = @_; @$row > 2 ? 'host' : 'group'; }, colspan => sub { my ($value, $row) = @_; @$row > 2 ? 1 : 2; }, }, services => { format => sub { my ($value, $row) = @_; return '' unless $value && @$value; join(' ', map { sprintf '%s', $_->{state} == 1 ? 'w' : $_->{state} == 2 ? 'e' : $_->{state} == 3 ? 'u' : 'o', $_->{description} } @$value); }, }, }, }); <%once> use YAML qw(LoadFile); use HTML::Tabulate; use List::Util qw(sum); <%args> $show => 'ewu' $refresh => 1 %# vim:ft=mason