A Horizontal Percentage Gauge Class
This tip contains a VBScript class Michael sent in that creates a horizontal percentage bar gauge. For example, if you ran a testing site that quizzed users on some topic, you may wish to show the user their test scores graphically, like so:
You score an 87% on the test. Congratulations!
0 |
|
100% |
With this class, creating such horizontal percentage gauges is a breeze - just instantiate the class, set a few properties, and call a method to generate the gauge. In fact, the above example uses the following simple, straightforward code (for brevity the actual class is not included in this sample code):
<% Dim sl_gauge Set sl_gauge = new Slgauge sl_gauge.BgColor = "#FFFFFF" sl_gauge.FgColor = "#990000" sl_gauge.Width = 78 sl_gauge.Height = 5 sl_gauge.MinVal = 0 sl_gauge.MaxVal = 100 sl_gauge.CurVal = iTestScore '87% in our example %> <!-- Display the gauge --> <table cellpadding=0 cellspacing=2> <tr> <td>0</td> <td><% = sl_gauge.RenderHtml %></td> <td>100%</td> </tr> </table> |
That's it! Note that to use this you will have to have a small (43 bytes),
transparent GIF file on your Web server that is used to help properly space out
the HTML table that is used to display the gauge. This image, shim.gif
,
can be downloaded here (right click on the
link and choose save-as; since the GIF is transparent, if you click on the link
you will be shown the GIF, but you will not see it (due to its transparency)).
Below you will find the complete source code to the class. Feel free to cut and paste the code into your application.
Happy Programming!
<% ' Handy class for displaying a horizontal percentage gauge. class Slgauge ' Colors. public BgColor public FgColor ' Dimensions. public Width public Height ' Values. public MinVal public MaxVal public CurVal ' Render this into HTML as a table. function RenderHtml ' Normalize the properties. if MinVal > MaxVal then Dim temp_val temp_val = MinVal MinVal = MaxVal MaxVal = temp_val end if if CurVal < MinVal then CurVal = MinVal elseif CurVal > MaxVal then CurVal = MaxVal end if ' Figure out the percentage that the CurVal is ' within MinVal and MaxVal. Dim percentage_val percentage_val = (CurVal - MinVal) / (MaxVal - MinVal) ' Compute the first and second widths. Dim fg_width fg_width = Round(Width * percentage_val) Dim bg_width bg_width = Width - fg_width RenderHtml = "<table cellspacing=0 cellpadding=0 width=" & _ Width & " height=" & Height & ">" _ & "<tr>" if fg_width > 0 then RenderHtml = RenderHtml _ & "<td width=" & fg_width & " height=" & _ Height & " bgcolor=" & FgColor & _ "><img src=""/images/shim.gif""></td>" end if if bg_width > 0 then RenderHtml = RenderHtml _ & "<td width=" & bg_width & " height=" & _ Height & " bgcolor=" & BgColor & _ "><img src=""/images/shim.gif""></td>" end if RenderHtml = RenderHtml _ & "</tr>" _ & "</table>" end function end class %> |
Comments