From: <ber...@us...> - 2008-09-02 20:54:56
|
Revision: 1745 http://ganglia.svn.sourceforge.net/ganglia/?rev=1745&view=rev Author: bernardli Date: 2008-09-02 20:54:50 +0000 (Tue, 02 Sep 2008) Log Message: ----------- [web] Patch for custom time calendar widget, bugzilla bug #176 Submitted-by: Timothy Witham <tim...@in...> Modified Paths: -------------- trunk/monitor-core/web/cluster_view.php trunk/monitor-core/web/get_context.php trunk/monitor-core/web/graph.php trunk/monitor-core/web/header.php trunk/monitor-core/web/host_view.php trunk/monitor-core/web/templates/default/header.tpl Added Paths: ----------- trunk/monitor-core/web/calendar.php Added: trunk/monitor-core/web/calendar.php =================================================================== --- trunk/monitor-core/web/calendar.php (rev 0) +++ trunk/monitor-core/web/calendar.php 2008-09-02 20:54:50 UTC (rev 1745) @@ -0,0 +1,63 @@ +<?php +$calendar_head = ' +<link rel="stylesheet" type="text/css" media="all" href="jscalendar-1.0/calendar-system.css" title="calendar-system" /> +<script type="text/javascript" src="jscalendar-1.0/calendar.js"></script> +<script type="text/javascript" src="jscalendar-1.0/lang/calendar-en.js"></script> +<script type="text/javascript" src="jscalendar-1.0/calendar-setup.js"></script> +<script type="text/javascript"> +var fmt = "%b %d %Y %H:%M"; // must be a format that RRDtool likes +function ganglia_submit(nogo) { + document.getElementById("cs").value = ""; + document.getElementById("ce").value = ""; + if (! nogo) + document.ganglia_form.submit(); +} +function isDisabled(date, y, m, d) { + var today = new Date(); + return (today.getTime() - date.getTime()) < -1 * Date.DAY; +} +function checkcal(cal) { // ensure cs < ce + var date = cal.date; + var time = date.getTime(); + var field = document.getElementById("cs"); + if (field == cal.params.inputField) { // cs was changed: change ce + field = document.getElementById("ce"); + var other = new Date(Date.parseDate(field.value, fmt)); + if (time >= other) { + date = new Date(time + Date.HOUR); + field.value = date.print(fmt); + } + } else { // ce was changed: change cs + field = document.getElementById("cs"); + var other = new Date(Date.parseDate(field.value, fmt)); + if (other >= time) { + date = new Date(time - Date.HOUR); + field.value = date.print(fmt); + } + } +} +</script> +'; +$calendar = ' +<script type="text/javascript"> +Calendar.setup({ + inputField : "cs", + ifFormat : fmt, + showsTime : true, + step : 1, + weekNumbers : false, + onUpdate : checkcal, + dateStatusFunc : isDisabled +}); +Calendar.setup({ + inputField : "ce", + ifFormat : fmt, + showsTime : true, + step : 1, + weekNumbers : false, + onUpdate : checkcal, + dateStatusFunc : isDisabled +}); +</script> +'; +?> Modified: trunk/monitor-core/web/cluster_view.php =================================================================== --- trunk/monitor-core/web/cluster_view.php 2008-09-01 18:26:37 UTC (rev 1744) +++ trunk/monitor-core/web/cluster_view.php 2008-09-02 20:54:50 UTC (rev 1745) @@ -227,6 +227,10 @@ $graphargs .= "z=$size&c=$cluster_url&h=$host_url" ."&l=$load_color&v=$val[VAL]&x=$max&n=$min" ."&r=$range&su=1&st=$cluster[LOCALTIME]"; + if ($cs) + $graphargs .= "&cs=" . rawurlencode($cs); + if ($ce) + $graphargs .= "&ce=" . rawurlencode($ce); } } Modified: trunk/monitor-core/web/get_context.php =================================================================== --- trunk/monitor-core/web/get_context.php 2008-09-01 18:26:37 UTC (rev 1744) +++ trunk/monitor-core/web/get_context.php 2008-09-02 20:54:50 UTC (rev 1745) @@ -42,6 +42,11 @@ # A red vertical line for various events. Value specifies the event time. $jobstart = isset($_GET["js"]) ? clean_number( $_GET["js"] ) : NULL; +# custom start and end +$cs = isset($_GET["cs"]) ? + escapeshellcmd($_GET["cs"]) : NULL; +$ce = isset($_GET["ce"]) ? + escapeshellcmd($_GET["ce"]) : NULL; # The direction we are travelling in the grid tree $gridwalk = isset($_GET["gw"]) ? escapeshellcmd( clean_string( $_GET["gw"] ) ) : NULL; @@ -120,6 +125,8 @@ } else { $start = $time_ranges[ $default_time_range ] * -1; } +if ($cs or $ce) + $range = "custom"; if (!$metricname) $metricname = "$default_metric"; Modified: trunk/monitor-core/web/graph.php =================================================================== --- trunk/monitor-core/web/graph.php 2008-09-01 18:26:37 UTC (rev 1744) +++ trunk/monitor-core/web/graph.php 2008-09-02 20:54:50 UTC (rev 1745) @@ -74,6 +74,11 @@ exit; } +if ($cs) + $start = $cs; +if ($ce) + $end = $ce; + # Set some standard defaults that don't need to change much $rrdtool_graph = array( 'start' => $start, Modified: trunk/monitor-core/web/header.php =================================================================== --- trunk/monitor-core/web/header.php 2008-09-01 18:26:37 UTC (rev 1744) +++ trunk/monitor-core/web/header.php 2008-09-02 20:54:50 UTC (rev 1745) @@ -3,6 +3,7 @@ # Check if this context is private. include_once "./auth.php"; +include_once "./calendar.php"; checkcontrol(); checkprivate(); @@ -90,6 +91,10 @@ $get_metric_string = "m=$metricname&r=$range&s=$sort_url&hc=$hostcols&mc=$metriccols"; if ($jobrange and $jobstart) $get_metric_string .= "&jr=$jobrange&js=$jobstart"; +if ($cs) + $get_metric_string .= "&cs=" . rawurlencode($cs); +if ($ce) + $get_metric_string .= "&ce=" . rawurlencode($ce); # Set the Alternate view link. $cluster_url=rawurlencode($clustername); @@ -237,9 +242,11 @@ $context_ranges = array_keys( $time_ranges ); if ($jobrange) $context_ranges[]="job"; + if ($cs or $ce) + $context_ranges[]="custom"; $range_menu = "<B>Last</B> " - ."<SELECT NAME=\"r\" OnChange=\"ganglia_form.submit();\">\n"; + ."<SELECT NAME=\"r\" OnChange=\"ganglia_submit();\">\n"; foreach ($context_ranges as $v) { $url=rawurlencode($v); $range_menu .= "<OPTION VALUE=\"$url\""; @@ -248,6 +255,7 @@ $range_menu .= ">$v\n"; } $range_menu .= "</SELECT>\n"; + $range_menu .= "<input type=\"button\" value=\"Clear\" onclick=\"ganglia_submit(1)\">\n"; $tpl->assign("range_menu", $range_menu); } @@ -338,7 +346,6 @@ # Assign template variable in cluster view. } - if ($context == "host") { # Present a width list @@ -354,6 +361,22 @@ $metric_cols_menu .= "</SELECT>\n"; } +{ + $examples = "Feb 27 2007 00:00, 2/27/2007, 27.2.2007, now -1 week," + . " -2 days, start + 1 hour, etc."; + $custom_time .= "<br>or from <INPUT TYPE=\"TEXT\" TITLE=\"$examples\" NAME=\"cs\" ID=\"cs\" SIZE=\"17\""; + if ($cs) + $custom_time .= " value=\"$cs\""; + $custom_time .= "> to <INPUT TYPE=\"TEXT\" TITLE=\"$examples\" NAME=\"ce\" ID=\"ce\" SIZE=\"17\""; + if ($ce) + $custom_time .= " value=\"$ce\""; + $custom_time .= "><input type=\"submit\" value=\"Go\">\n"; + $custom_time .= $calendar; + $tpl->assign("custom_time", $custom_time); + + $tpl->assign("custom_time_head", $calendar_head); +} + # Make sure that no data is cached.. header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); # Date in the past header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); # always modified Modified: trunk/monitor-core/web/host_view.php =================================================================== --- trunk/monitor-core/web/host_view.php 2008-09-01 18:26:37 UTC (rev 1744) +++ trunk/monitor-core/web/host_view.php 2008-09-02 20:54:50 UTC (rev 1745) @@ -54,6 +54,10 @@ $graphargs = "c=$cluster_url&h=$hostname&v=$v[VAL]" ."&m=$name&r=$range&z=medium&jr=$jobrange" ."&js=$jobstart&st=$cluster[LOCALTIME]"; + if ($cs) + $graphargs .= "&cs=" . rawurlencode($cs); + if ($ce) + $graphargs .= "&ce=" . rawurlencode($ce); # Adding units to graph 2003 by Jason Smith <sm...@bn...>. if ($v['UNITS']) { $encodeUnits = rawurlencode($v['UNITS']); Modified: trunk/monitor-core/web/templates/default/header.tpl =================================================================== --- trunk/monitor-core/web/templates/default/header.tpl 2008-09-01 18:26:37 UTC (rev 1744) +++ trunk/monitor-core/web/templates/default/header.tpl 2008-09-02 20:54:50 UTC (rev 1745) @@ -5,6 +5,7 @@ <META http-equiv="Content-type" content="text/html; charset=utf-8"> <META http-equiv="refresh" content="{refresh}"> <LINK rel="stylesheet" href="./styles.css" type="text/css"> +{custom_time_head} </HEAD> <BODY BGCOLOR="#FFFFFF"> @@ -34,6 +35,7 @@ {metric_menu} {range_menu} {sort_menu} + {custom_time} </TD> <TD> <B>{alt_view}</B> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |