public inbox for development@lists.ipfire.org
 help / color / mirror / Atom feed
From: Adolf Belka <adolf.belka@ipfire.org>
To: Michael Tremer <michael.tremer@ipfire.org>
Cc: "IPFire: Development-List" <development@lists.ipfire.org>,
	dietzmann@brecht-schule.hamburg
Subject: Re: [PATCH 4/5] fwhosts.cgi: Move the tooltip into the usage counter
Date: Wed, 25 Jun 2025 18:40:03 +0200	[thread overview]
Message-ID: <2bf6ef30-c057-4d39-98d5-8ef4ea35edea@ipfire.org> (raw)
In-Reply-To: <20250623171658.530138-4-michael.tremer@ipfire.org>

Tested-by: Adolf Belka <adolf.belka@ipfire.org>

I actually found the i in a blue circle icon very helpful for this. I was able to figure out where I should place my mouse pointer for the info.

With this patch applied, which was the first way I tested it, I had no idea where to place the mouse pointer as nothing looked different to the existing situation. I did try placing it over the usage counter a couple of times but obviously not for long enough in my first tries as I never saw anything get shown.

Reading the title of this patch more carefully I went back and now held the mouse pointer over the usage counter and waited for 1 to 2 seconds and now the info was shown.  Typically I found it takes a minimum of 1 second and sometimes around 1.5 seconds before anything is shown and first time around I was obviously not waiting long enough at any one location.

If the usage counter is to stay as the location to place the mouse pointer onto for the info then I think this will need to be explained very clearly in the wiki documentation otherwise users might not discover this useful function directly on the WUI page.


On 23/06/2025 19:16, Michael Tremer wrote:
> This will clutter the page less as we don't have any good icon sets.
> 
> Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
> ---
>   html/cgi-bin/fwhosts.cgi | 42 +++++++++++-----------------------------
>   1 file changed, 11 insertions(+), 31 deletions(-)
> 
> diff --git a/html/cgi-bin/fwhosts.cgi b/html/cgi-bin/fwhosts.cgi
> index 69970a840..953f81e5f 100644
> --- a/html/cgi-bin/fwhosts.cgi
> +++ b/html/cgi-bin/fwhosts.cgi
> @@ -1932,7 +1932,7 @@ sub viewtablenet
>   		}else{
>   			print<<END;
>   			<table width='100%' cellspacing='0' class='tbl'>
> -			<tr><th align='center'><b>$Lang::tr{'name'}</b></th><th align='center'><b>$Lang::tr{'fwhost netaddress'}</b></th><th align='center'><b>$Lang::tr{'remark'}</b></th><th align='center'><b>$Lang::tr{'used'}</b></th><th></th><th></th><th width='3%'></th></tr>
> +			<tr><th align='center'><b>$Lang::tr{'name'}</b></th><th align='center'><b>$Lang::tr{'fwhost netaddress'}</b></th><th align='center'><b>$Lang::tr{'remark'}</b></th><th align='center'><b>$Lang::tr{'used'}</b></th><th></th><th width='3%'></th></tr>
>   END
>   		}
>   		my $count=0;
> @@ -1953,11 +1953,7 @@ END
>   			my $colnet="$customnetwork{$key}[1]/".&General::subtocidr($customnetwork{$key}[2]);
>   			my $netcount=&getnetcount($customnetwork{$key}[0]);
>   			my $netusedin=&getusedin($customnetwork{$key}[0]);
> -			my $htmlparttouse="";
> -			if ($netusedin) {
> -				$htmlparttouse = "<input type='image' align='top' src='/images/info.gif' alt='$netusedin' title='$netusedin'>";
> -			}
> -			print"<td width='20%' $col><form method='post'>$customnetwork{$key}[0]</td><td width='15%' align='center' $col>".&getcolor($colnet)."</td><td width='40%' $col>$customnetwork{$key}[3]</td><td align='center' $col>$netcount x</td><td>$htmlparttouse</td>";
> +			print"<td width='20%' $col><form method='post'>$customnetwork{$key}[0]</td><td width='15%' align='center' $col>".&getcolor($colnet)."</td><td width='40%' $col>$customnetwork{$key}[3]</td><td align='center' $col><span title='$netusedin'>$netcount x</span></td>";
>   			print<<END;
>   			<td width='1%' $col><input type='image' src='/images/edit.gif' align='middle' alt='$Lang::tr{'edit'}' title='$Lang::tr{'edit'}' />
>   			<input type='hidden' name='ACTION' value='editnet'>
> @@ -2091,7 +2087,7 @@ sub viewtablehost
>   		}else{
>   		print<<END;
>   		<table width='100%' cellspacing='0' class='tbl'>
> -		<tr><th align='center'><b>$Lang::tr{'name'}</b></th><th align='center'><b>$Lang::tr{'fwhost ip_mac'}</b></th><th align='center'><b>$Lang::tr{'remark'}</b></th><th align='center'><b>$Lang::tr{'used'}</b></th><th></th><th></th><th width='3%'></th></tr>
> +		<tr><th align='center'><b>$Lang::tr{'name'}</b></th><th align='center'><b>$Lang::tr{'fwhost ip_mac'}</b></th><th align='center'><b>$Lang::tr{'remark'}</b></th><th align='center'><b>$Lang::tr{'used'}</b></th><th></th><th width='3%'></th></tr>
>   END
>   	}
>   		my $count=0;
> @@ -2112,12 +2108,9 @@ END
>   			my $hostcount=0;
>   			$hostcount=&gethostcount($customhost{$key}[0]);
>   			my $hostusedin=&getusedin($customhost{$key}[0]);
> -			my $htmlparttouse="";
> -			if ($hostusedin) {
> -				$htmlparttouse = "<input type='image' align='top' src='/images/info.gif' alt='$hostusedin' title='$hostusedin'>";
> -			}
> -			print"<td width='20%' $col>$customhost{$key}[0]</td><td width='20%' align='center' $col >".&getcolor($ip)."</td><td width='50%' align='left' $col>$customhost{$key}[3]</td><td align='center' $col>$hostcount x</td><td>$htmlparttouse</td>";
> -			print<<END;
> +			my $color = &getcolor($ip);
> +			print <<END;
> +			<td width='20%' $col>$customhost{$key}[0]</td><td width='20%' align='center' $col >$color</td><td width='50%' align='left' $col>$customhost{$key}[3]</td><td align='center' $col><span title="$hostusedin">$hostcount x</span></td>
>   			<td width='1%' $col><form method='post'><input type='image' src='/images/edit.gif' align='middle' alt='$Lang::tr{'edit'}' title='$Lang::tr{'edit'}' />
>   			<input type='hidden' name='ACTION' value='edithost' />
>   			<input type='hidden' name='HOSTNAME' value='$customhost{$key}[0]' />
> @@ -2192,11 +2185,8 @@ sub viewtablegrp
>   				print "<br><b><u>$grpname</u></b>&nbsp; &nbsp;";
>   				print " <b>$Lang::tr{'remark'}:</b>&nbsp $remark &nbsp " if ($remark ne '');
>   				my $netgrpcount=&getnetcount($grpname);
> -				print "<b>$Lang::tr{'used'}:</b> $netgrpcount x ";
>   				my $groupusedin=&getusedin($grpname);
> -				if ($groupusedin) {
> -					print "<input type='image' align='top' src='/images/info.gif' alt='$groupusedin' title='$groupusedin'>";
> -				}
> +				print "<b>$Lang::tr{'used'}:</b> <span title='$groupusedin'>$netgrpcount x</span>";
>   				if($netgrpcount == '0')
>   				{
>   					print"<form method='post' style='display:inline'><input type='image' src='/images/delete.gif' alt='$Lang::tr{'delete'}' title='$Lang::tr{'delete'}' align='right' /><input type='hidden' name='grp_name' value='$grpname' ><input type='hidden' name='ACTION' value='delgrp'></form>";
> @@ -2335,10 +2325,7 @@ sub viewtablelocationgrp
>   			# Get group count.
>   			my $locationgrpcount=&getlocationcount($grpname);
>   			my $locationusedin=&getlocusedin($grpname);
> -			print "<b>$Lang::tr{'used'}:</b> $locationgrpcount x ";
> -			if ($locationusedin) {
> -				print "<input type='image' align='top' src='/images/info.gif' alt='$locationusedin' title='$locationusedin'>";
> -			}
> +			print "<b>$Lang::tr{'used'}:</b> <span title='$locationusedin'>$locationgrpcount x</span>";
>   			# Only display delete icon, if the group is not used by a firewall rule.
>   			if($locationgrpcount == '0') {
>   				print"<form method='post' style='display:inline'>\n";
> @@ -2459,7 +2446,7 @@ sub viewtableservice
>   		&General::readhasharray("$fwconfigout", \%fwout);
>   		print<<END;
>   			<table width='100%' cellspacing='0' class='tbl'>
> -			<tr><th align='center'><b>$Lang::tr{'fwhost srv_name'}</b></th><th align='center'><b>$Lang::tr{'fwhost prot'}</b></th><th align='center'><b>$Lang::tr{'fwhost port'}</b></th><th align='center'><b>ICMP</b></th><th align='center'><b>$Lang::tr{'fwhost used'}</b></th><th></th><th></th><th width='3%'></th></tr>
> +			<tr><th align='center'><b>$Lang::tr{'fwhost srv_name'}</b></th><th align='center'><b>$Lang::tr{'fwhost prot'}</b></th><th align='center'><b>$Lang::tr{'fwhost port'}</b></th><th align='center'><b>ICMP</b></th><th align='center'><b>$Lang::tr{'fwhost used'}</b></th><th></th><th width='3%'></th></tr>
>   END
>   		my $col='';
>   		foreach my $key (sort { ncmp($customservice{$a}[0],$customservice{$b}[0])} keys %customservice)
> @@ -2481,14 +2468,10 @@ END
>   			#Neuer count
>   			$srvcount=&getsrvcount($customservice{$key}[0]);
>   			my $serviceusedin=&getsrvusedin($customservice{$key}[0]);
> -			my $htmlparttouse="";
> -			if ($serviceusedin) {
> -				$htmlparttouse="<input type='image' align='top' src='/images/info.gif' alt='$serviceusedin' title='$serviceusedin'>";
> -			}
>   			if($customservice{$key}[3] eq 'All ICMP-Types'){print $Lang::tr{'fwdfw all icmp'};}
>   			elsif($customservice{$key}[3] ne 'BLANK'){print $customservice{$key}[3];}
>   			print<<END;
> -			</td><td align='center' $col>$srvcount x</td><td>$htmlparttouse</td>
> +			</td><td align='center' $col><span title='$serviceusedin'>$srvcount x</span></td>
>   			<td width='1%' $col><form method='post'><input type='image' src='/images/edit.gif' align='middle' alt='$Lang::tr{'edit'}' title='$Lang::tr{'edit'}' /><input type='hidden' name='ACTION' value='editservice' />
>   			<input type='hidden' name='SRV_NAME' value='$customservice{$key}[0]' />
>   			<input type='hidden' name='SRV_PORT' value='$customservice{$key}[1]' />
> @@ -2560,11 +2543,8 @@ sub viewtableservicegrp
>   				if($count >0){print"</table>";$count=1;}
>   				print "<br><b><u>$grpname</u></b>&nbsp; &nbsp; ";
>   				print "<b>$Lang::tr{'remark'}:</b>&nbsp; $remark " if ($remark ne '');
> -				print "&nbsp; <b>$Lang::tr{'used'}:</b> $grpcount x ";
>   				my $srvgrpusedin=&getsrvusedin($customservicegrp{$key}[0]);
> -				if ($srvgrpusedin) {
> -					print "<input type='image' align='top' src='/images/info.gif' alt='$srvgrpusedin' title='$srvgrpusedin'>";
> -				}
> +				print "&nbsp; <b>$Lang::tr{'used'}:</b> <span title='$srvgrpusedin'>$grpcount x</span>";
>   				if($grpcount == '0')
>   				{
>   					print"<form method='post' style='display:inline'><input type='image' src='/images/delete.gif' alt='$Lang::tr{'delete'}' title='$Lang::tr{'delete'}' align='right' /><input type='hidden' name='SRVGRP_NAME' value='$grpname' ><input type='hidden' name='ACTION' value='delservicegrp'></form>";



  reply	other threads:[~2025-06-25 16:40 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-06-23 17:16 [PATCH 1/5] fwhosts.cgi: Show in which firewall rule objects are being used Michael Tremer
2025-06-23 17:16 ` [PATCH 2/5] fwhosts.cgi: Remove whitespace issues Michael Tremer
2025-06-23 17:16 ` [PATCH 3/5] fwhosts.cgi: Don't show anything if a host/group is unused Michael Tremer
2025-06-23 17:16 ` [PATCH 4/5] fwhosts.cgi: Move the tooltip into the usage counter Michael Tremer
2025-06-25 16:40   ` Adolf Belka [this message]
2025-06-25 16:52     ` Michael Tremer
2025-06-26 12:08       ` [EXTERN] " Peer Dietzmann
2025-06-26 15:13         ` Adam Gibbons
2025-06-23 17:16 ` [PATCH 5/5] langs: Remove the unused "Unused" translation string Michael Tremer
2025-06-25 16:25 ` [PATCH 1/5] fwhosts.cgi: Show in which firewall rule objects are being used Adolf Belka

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2bf6ef30-c057-4d39-98d5-8ef4ea35edea@ipfire.org \
    --to=adolf.belka@ipfire.org \
    --cc=development@lists.ipfire.org \
    --cc=dietzmann@brecht-schule.hamburg \
    --cc=michael.tremer@ipfire.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox