From: <ber...@us...> - 2010-11-26 06:41:24
|
Revision: 2365 http://ganglia.svn.sourceforge.net/ganglia/?rev=2365&view=rev Author: bernardli Date: 2010-11-26 06:41:17 +0000 (Fri, 26 Nov 2010) Log Message: ----------- Incremental commit from vvuksan's UI re-write (diff'ed against trunk r2312) Modified Paths: -------------- branches/monitor-web-2.0/functions.php branches/monitor-web-2.0/ganglia.php branches/monitor-web-2.0/get_context.php branches/monitor-web-2.0/styles.css Modified: branches/monitor-web-2.0/functions.php =================================================================== --- branches/monitor-web-2.0/functions.php 2010-11-26 05:58:47 UTC (rev 2364) +++ branches/monitor-web-2.0/functions.php 2010-11-26 06:41:17 UTC (rev 2365) @@ -662,4 +662,140 @@ return isset($filter_permit_list[$source_name]); } + + +////////////////////////////////////////////////////////////////////////////////////////////////////// +// Get all the available views +////////////////////////////////////////////////////////////////////////////////////////////////////// +function get_available_views() { + /* ----------------------------------------------------------------------- + Find available views by looking in the GANGLIA_DIR/conf directory + anything that matches view_*.json. Read them all and build a available_views + array + ----------------------------------------------------------------------- */ + $available_views = array(); + + if ($handle = opendir($GLOBALS['views_dir'])) { + + while (false !== ($file = readdir($handle))) { + + if ( preg_match("/view_(.*)/", $file, $out) ) { + + $view_config_file = $GLOBALS['views_dir'] . "/" . $file; + if ( ! is_file ($view_config_file) ) { + echo("Can't read view config file " . $view_config_file . ". Please check permissions"); + } + + $view = json_decode(file_get_contents($view_config_file), TRUE); + // Check whether view type has been specified ie. regex. If not it's standard view + isset($view['view_type']) ? $view_type = $view['view_type'] : $view_type = "standard"; + $available_views[] = array ( "file_name" => $view_config_file, "view_name" => $view['view_name'], + "items" => $view['items'], "view_type" => $view_type); + unset($view); + + } + } + + closedir($handle); + } + + foreach ($available_views as $key => $row) { + $name[$key] = strtolower($row['view_name']); + } + + array_multisort($name,SORT_ASC, $available_views); + + return $available_views; + +} + +////////////////////////////////////////////////////////////////////////////////////////////////////// +// Get image graph URLS +// This function returns an array of graph URLs to be used when rendering the view. It returns +// only the base ie. cluster, host, metric information. It is up to the caller to add proper +// size information, time ranges etc. +////////////////////////////////////////////////////////////////////////////////////////////////////// +function get_view_graph_elements($view) { + + require("./cache.php"); + + switch ( $view['view_type'] ) { + + case "standard": + // Does view have any items/graphs defined + if ( sizeof($view['items']) == 0 ) { + print "No graphs defined for this view. Please add some"; + } else { + + foreach ( $view['items'] as $item_id => $item ) { + + // Is it a metric or a graph(report) + if ( isset($item['metric']) ) { + $graph_args_array[] = "m=" . $item['metric']; + $name = $item['metric']; + } else { + $graph_args_array[] = "g=" . $item['graph']; + $name = $item['graph']; + } + + $hostname = $item['hostname']; + $cluster = $index_array['cluster'][$hostname]; + $graph_args_array[] = "h=$hostname"; + $graph_args_array[] = "c=$cluster"; + + $view_elements[] = array ( "graph_args" => join("&", $graph_args_array), + "hostname" => $hostname, + "cluster" => $cluster, + "name" => $name + ); + + unset($graph_args_array); + + } // end of foreach ( $view['items'] + } // end of if ( sizeof($view['items']) + break; + ;; + + //////////////////////////////////////////////////////////////////////////////////// + // Currently only supports matching hosts. + //////////////////////////////////////////////////////////////////////////////////// + case "regex": + foreach ( $view['items'] as $item_id => $item ) { + // Is it a metric or a graph(report) + if ( isset($item['metric']) ) { + $metric_suffix = "m=" . $item['metric']; + $name = $item['metric']; + } else { + $metric_suffix = "g=" . $item['graph']; + $name = $item['graph']; + } + + // Find hosts matching a criteria + $query = $item['hostname']; + foreach ( $index_array['hosts'] as $key => $host_name ) { + if ( preg_match("/$query/", $host_name ) ) { + $cluster = $index_array['cluster'][$host_name]; + $graph_args_array[] = "h=$host_name"; + $graph_args_array[] = "c=$cluster"; + + $view_elements[] = array ( "graph_args" => $metric_suffix . "&" . join("&", $graph_args_array), + "hostname" => $host_name, + "cluster" => $cluster, + "name" => $name); + + unset($graph_args_array); + + } + } + + } // end of foreach ( $view['items'] as $item_id => $item ) + break;; + + } // end of switch ( $view['view_type'] ) { + + + return ($view_elements); + +} + ?> Modified: branches/monitor-web-2.0/ganglia.php =================================================================== --- branches/monitor-web-2.0/ganglia.php 2010-11-26 05:58:47 UTC (rev 2364) +++ branches/monitor-web-2.0/ganglia.php 2010-11-26 06:41:17 UTC (rev 2365) @@ -172,7 +172,43 @@ } } +function start_everything ($parser, $tagname, $attrs) +{ + global $index_array, $hosts, $metrics, $cluster, $self, $grid, $hosts_up, $hosts_down; + static $hostname, $cluster_name; + switch ($tagname) + { + case "GANGLIA_XML": + preamble($attrs); + break; + case "GRID": + $self = $attrs['NAME']; + $grid = $attrs; + break; + + case "CLUSTER": +# $cluster = $attrs; + $cluster_name = $attrs['NAME']; + break; + + case "HOST": + $hostname = $attrs['NAME']; + $index_array['cluster'][$hostname] = $cluster_name; + + case "METRIC": + $metricname = $attrs['NAME']; + if ( $metricname != $hostname ) + $index_array['metrics'][$metricname][] = $hostname; + break; + + default: + break; + } + +} + + function start_cluster_summary ($parser, $tagname, $attrs) { global $metrics, $cluster, $self, $grid; @@ -302,6 +338,10 @@ xml_set_element_handler($parser, "start_cluster", "end_all"); $request = "/$clustername"; break; + case "index_array": + xml_set_element_handler($parser, "start_everything", "end_all"); + $request = "/"; + break; case "cluster-summary": xml_set_element_handler($parser, "start_cluster_summary", "end_all"); $request = "/$clustername?filter=summary"; Modified: branches/monitor-web-2.0/get_context.php =================================================================== --- branches/monitor-web-2.0/get_context.php 2010-11-26 05:58:47 UTC (rev 2364) +++ branches/monitor-web-2.0/get_context.php 2010-11-26 06:41:17 UTC (rev 2365) @@ -151,7 +151,7 @@ $metricname = "$default_metric"; if (!$sort) - $sort = "descending"; + $sort = "by name"; # Since cluster context do not have the option to sort "by hosts down" or # "by hosts up", therefore change sort order to "descending" if previous Modified: branches/monitor-web-2.0/styles.css =================================================================== --- branches/monitor-web-2.0/styles.css 2010-11-26 05:58:47 UTC (rev 2364) +++ branches/monitor-web-2.0/styles.css 2010-11-26 06:41:17 UTC (rev 2365) @@ -1,5 +1,7 @@ /* The Ganglia Web-frontend Cascading Style Sheet. */ +body{ font: 75% "Trebuchet MS", sans-serif; margin: 5px;} + A:link { color: rgb(32,41,204); @@ -184,3 +186,36 @@ color: rgb(100,100,100); } +/* Views table and menu styling. */ +#views_table { + font-size: 12px +} +#table_top_chooser { + font-size: 12px +} +#views_menu { width: 200px; } +#views_menu ul +{ +margin-left: 0; +padding-left: 0; +list-style-type: none; +font-family: Arial, Helvetica, sans-serif; +} +#views_menu a +{ +display: block; +padding: 3px; +width: 160px; +background-color: white; +border-bottom: 1px solid #eee; +} +#views_menu a:link, #navlist a:visited +{ +color: blue; +text-decoration: none; +} +#views_menu a:hover +{ +background-color: #dddddd; +color: blue; +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ber...@us...> - 2010-11-26 05:58:56
|
Revision: 2364 http://ganglia.svn.sourceforge.net/ganglia/?rev=2364&view=rev Author: bernardli Date: 2010-11-26 05:58:47 +0000 (Fri, 26 Nov 2010) Log Message: ----------- Checking in vvuksan's UI re-write (new files only) Added Paths: ----------- branches/monitor-web-2.0/actions.php branches/monitor-web-2.0/autorotation.php branches/monitor-web-2.0/cache.php branches/monitor-web-2.0/conf/ branches/monitor-web-2.0/conf/default.json branches/monitor-web-2.0/conf/view_default.json branches/monitor-web-2.0/css/ branches/monitor-web-2.0/css/jquery.liveSearch.css branches/monitor-web-2.0/css/jquery.mobile-1.0a2.min.css branches/monitor-web-2.0/css/smoothness/ branches/monitor-web-2.0/css/smoothness/jquery-ui-1.8.5.custom.css branches/monitor-web-2.0/edit_optional_graphs.php branches/monitor-web-2.0/graph.d/cpu_report.json branches/monitor-web-2.0/graph.d/load_all_report.json branches/monitor-web-2.0/graph.d/load_all_report.php branches/monitor-web-2.0/graph.d/load_report.json branches/monitor-web-2.0/graph.d/mem_report.json branches/monitor-web-2.0/graph.d/network_report.json branches/monitor-web-2.0/graph.d/packet_report.json branches/monitor-web-2.0/graph_all_periods.php branches/monitor-web-2.0/js/ branches/monitor-web-2.0/js/ganglia.js branches/monitor-web-2.0/js/jquery-1.4.4.min.js branches/monitor-web-2.0/js/jquery-ui-1.8.5.custom.min.js branches/monitor-web-2.0/js/jquery.liveSearch.js branches/monitor-web-2.0/js/jquery.mobile-1.0a2.min.js branches/monitor-web-2.0/mobile.php branches/monitor-web-2.0/search.php branches/monitor-web-2.0/views-mob.php branches/monitor-web-2.0/views.php Added: branches/monitor-web-2.0/actions.php =================================================================== --- branches/monitor-web-2.0/actions.php (rev 0) +++ branches/monitor-web-2.0/actions.php 2010-11-26 05:58:47 UTC (rev 2364) @@ -0,0 +1,50 @@ +<?php + +include_once("./conf.php"); +include_once("./functions.php"); + +if ( isset($_GET['action']) && $_GET['action'] == "show_views" ) { + ////////////////////////////////////////////////////////////////////////////////////////////////////// + // Show available views + ////////////////////////////////////////////////////////////////////////////////////////////////////// + $available_views = get_available_views(); + ?> + + <table> + <tr><th>Hostname</th><td><?php print $_GET['host_name']; ?></td></tr> + <tr><th>Metric/Report</th><td><?php print $_GET['metric_name']; ?></td></tr> + </table> + <p> + <form id="add_metric_to_view_form"> + Add to view + <input type=hidden name=host_name value="<?php print $_GET['host_name']; ?>"> + <input type=hidden name=metric_name value="<?php print $_GET['metric_name']; ?>"> + <input type=hidden name=type value="<?php print $_GET['type']; ?>"> + <select onChange="addMetricToView()" name="view_name"> + <option value='none'>Please choose one</option> + <?php + foreach ( $available_views as $view_id => $view ) { + print "<option value='" . $view['view_name'] . "'>" . $view['view_name'] . "</option>"; + } + + ?> + </select> + </form> + <form> + <p> + Add alert: <p> + Alert when value is + <select name=alert_operator> + <option value=more>greater</option> + <option value=less>smaller</option> + <option value=equal>equal</option> + <option value=notequal>not equal</option> + </select> than + <input size=7 name=critical_value type=text> + <button onClick="alert('not implemented yet'); return false">Add</button> + </form> + +<?php + +} // end of if ( isset($_GET['show_views']) { +?> Added: branches/monitor-web-2.0/autorotation.php =================================================================== --- branches/monitor-web-2.0/autorotation.php (rev 0) +++ branches/monitor-web-2.0/autorotation.php 2010-11-26 05:58:47 UTC (rev 2364) @@ -0,0 +1,142 @@ +<?php + +include_once("./conf.php"); +include_once("./functions.php"); + +////////////////////////////////////////////////////////////////////////////////////////// +// Print out +////////////////////////////////////////////////////////////////////////////////////////// +if ( ! isset($_GET['view_name']) ) { + + $available_views = get_available_views(); + + print "<form action=autorotation.php><select onchange='this.form.submit();' name=view_name><option value=none>Please choose...</option>"; + foreach ( $available_views as $id => $view ) { + print "<option value='" . $view['view_name'] . "'>" . $view['view_name'] . "</option>"; + } + print "</form>"; + +} else { + + header("Cache-Control: no-cache, must-revalidate"); + header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); + + // We need metrics cache in order to derive cluster name particular host + // belongs to + require("./cache.php"); + + $available_views = get_available_views(); + + // I am not quite sure at this point whether I should cache view info so + // for now I will have to do this + foreach ( $available_views as $id => $view ) { + # Find view settings + if ( $_GET['view_name'] == $view['view_name'] ) + break; + } + + unset($available_views); + + $timeout = 30; + + # This defines times when updates are happening. For instance if you want + # to turn off updating during non-business hours you would set + # office_hour_min = 8 and office_hour_max = 17. If you want them 24/7 + # set min to 0 and max to 24. + $office_hour_min = 0; + $office_hour_max = 24; + + # Graph sizes to use. Those have to be specified in /ganglia/conf.php + $small_size = "medium"; + $large_size = "xlarge"; + + # Path to ganglia. It can be a real URL + $gangliapath = "graph.php?hc=4&st="; + + # Get the requested graphid and store it in a somewhat more beautiful variable name + isset($_GET['id']) ? $id = $_GET['id'] : $id = 0; + + // Let's get all View graph elements + $view_elements = get_view_graph_elements($view); + + # The title of the next graph, with some logic to set the next to the first if we run out of graphs + if ($id < (count($view_elements) -1)) { + $nextid = $id+1; + } else { + $nextid = 0; + } + + # Set up some variables + $host = $view_elements[$id]['hostname']; + // The title of the graph + $title = $view_elements[$id]['name']; + $nexttitle = $view_elements[$nextid]['name'] . " for " . $view_elements[$nextid]['hostname']; + + ?> + <html> + <head> + <title>Ganglia - Graph View</title> + <meta http-equiv="refresh" content="<?php print "$timeout;url=" . $_SERVER["SCRIPT_NAME"] . "?view_name=" . $_GET['view_name'] ."&id=" . $nextid; ?>"> + <style> + body { + margin: 0px; + font-family: Tahoma, Helvetica, Verdana, Arial, sans-serif; + } + </style> + </head> + + + <body> + + <?php + + $current_hour = date('G'); + + ##################################################################################### + # Check whether these are office hours. Display graphs only during office hours + # so that we can give Ganglia server a little breather from generating all those + # images + ##################################################################################### + if ( $current_hour >= $office_hour_min && $current_hour <= $office_hour_max ) { + + ?> + + <div style="position: fixed; left: 20; width: 800; top: 2; font-size: 48px;"><?php echo $title; ?></div> + <div style="position: fixed; left: 20; width: 600; top: 55; font-size: 24px;">Next: <?php echo $nexttitle ?></div><br /> + + <table> + <tr> + <td><img src="<?php echo $gangliapath . "&r=hour&z=${large_size}&" . $view_elements[$id]['graph_args']; ?>"><br /> + <img src="<?php echo $gangliapath . "&r=day&z=${large_size}&" . $view_elements[$id]['graph_args']; ?>"></td> + <td valign="top"> + <img src="<?php echo $gangliapath . "&r=week&z=${small_size}&" . $view_elements[$id]['graph_args']; ?>"> + <img src="<?php echo $gangliapath . "&r=month&z=${small_size}&" . $view_elements[$id]['graph_args']; ?>"> + <div style="margin-top: 10px; font-size: 48px; text-align: center;"><?php echo date(DATE_RFC850); ?></div> + <p> + <center><a href="/ganglia/">Go back to Ganglia</a></center></div> + </td> + + </td> + </tr> + </table> + <div> + + <?php + + } else { + + ?> + <div style="color: red; font-size: 72px;"> + We are sleeping since it's off hours.<p> + Adjust $office_hour_min and $office_hour_max if this makes you unhappy</h3> + </div> + <div style="margin-top: 10px; font-size: 48px; text-align: center;"><?php echo date(DATE_RFC850); ?></div> + <?php + + } + + print " </body> + </html>"; + +} // end of if (!isset($_GET['view_name'] +?> Added: branches/monitor-web-2.0/cache.php =================================================================== --- branches/monitor-web-2.0/cache.php (rev 0) +++ branches/monitor-web-2.0/cache.php 2010-11-26 05:58:47 UTC (rev 2364) @@ -0,0 +1,43 @@ +<?php + +include_once("./conf.php"); + +$debug = 0; + +if(CACHEDATA == 1 && file_exists(CACHEFILE)){ + // check for the cached file + // snag it and return it if it is still fresh + $time_diff = time() - filemtime(CACHEFILE); + $expires_in = CACHETIME - $time_diff; + if( $time_diff < CACHETIME){ + if ( $debug == 1 ) { + echo("DEBUG: Fetching data from cache. Expires in " . $expires_in . " seconds.\n"); + } + $index_array = unserialize(file_get_contents(CACHEFILE)); + } +} + +if ( ! isset($index_array) ) { + + if ( $debug == 1 ) { + echo("DEBUG: Querying GMond for new data\n"); + } + include_once $GLOBALS['ganglia_dir'] . "/conf.php"; + # Set up for cluster summary + $context = "index_array"; + include_once $GLOBALS['ganglia_dir'] . "/functions.php"; + include_once $GLOBALS['ganglia_dir'] . "/ganglia.php"; + include_once $GLOBALS['ganglia_dir'] . "/get_ganglia.php"; + + foreach ( $index_array['cluster'] as $hostname => $elements ) { + $hosts[] = $hostname; + } + + asort($hosts); + $index_array['hosts'] = $hosts; + + file_put_contents(CACHEFILE, serialize($index_array)); + +} + +?> Added: branches/monitor-web-2.0/conf/default.json =================================================================== --- branches/monitor-web-2.0/conf/default.json (rev 0) +++ branches/monitor-web-2.0/conf/default.json 2010-11-26 05:58:47 UTC (rev 2364) @@ -0,0 +1,3 @@ +{ + "included_reports": ["load_report","mem_report","cpu_report","network_report","packet_report"] +} Added: branches/monitor-web-2.0/conf/view_default.json =================================================================== --- branches/monitor-web-2.0/conf/view_default.json (rev 0) +++ branches/monitor-web-2.0/conf/view_default.json 2010-11-26 05:58:47 UTC (rev 2364) @@ -0,0 +1,4 @@ +{"view_name":"default", + "items": [ + ] +} Added: branches/monitor-web-2.0/css/jquery.liveSearch.css =================================================================== --- branches/monitor-web-2.0/css/jquery.liveSearch.css (rev 0) +++ branches/monitor-web-2.0/css/jquery.liveSearch.css 2010-11-26 05:58:47 UTC (rev 2364) @@ -0,0 +1,17 @@ +#jquery-live-search { + background: #fff; + + padding: 5px 10px; + max-height: 400px; + overflow: auto; + + position: absolute; + z-index: 99; + + border: 1px solid #A9A9A9; + border-width: 0 1px 1px 1px; + + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.3); + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.3); +} Added: branches/monitor-web-2.0/css/jquery.mobile-1.0a2.min.css =================================================================== --- branches/monitor-web-2.0/css/jquery.mobile-1.0a2.min.css (rev 0) +++ branches/monitor-web-2.0/css/jquery.mobile-1.0a2.min.css 2010-11-26 05:58:47 UTC (rev 2364) @@ -0,0 +1,9 @@ +/*! + * jQuery Mobile v1.0a2 + * http://jquerymobile.com/ + * + * Copyright 2010, jQuery Project + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + */ +/*!* jQuery Mobile v1.0a2 * http://jquerymobile.com/ * * Copyright 2010,jQuery Project * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license */ .ui-bar-a{border:1px solid #2A2A2A;background:#111;color:#fff;font-weight:bold;text-shadow:0 -1px 1px #000;background-image:-moz-linear-gradient(top,#3c3c3c,#111);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#3c3c3c),color-stop(1,#111));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#3c3c3c',EndColorStr='#111111')";}.ui-bar-a,.ui-bar-a input,.ui-bar-a select,.ui-bar-a textarea,.ui-bar-a button{font-family:Helvetica,Arial,sans-serif;}.ui-bar-a .ui-link-inherit{color:#fff;}.ui-bar-a .ui-link{color:#7cc4e7;font-weight:bold;}.ui-body-a{border:1px solid #2A2A2A;background:#222;color:#fff;text-shadow:0 1px 0 #000;font-weight:normal;background-image:-moz-linear-gradient(top,#666,#222);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#666),color-stop(1,#222));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#666666',EndColorStr='#222222)')";}.ui-body-a,.ui-body-a input,.ui-body-a select,.ui-body-a textarea,.ui-body-a button{font-family:Helvetica,Arial,sans-serif;}.ui-body-a .ui-link-inherit{color:#fff;}.ui-body-a .ui-link{color:#2489CE;font-weight:bold;}.ui-br{border-bottom:1px solid rgba(130,130,130,.3);}.ui-btn-up-a{border:1px solid #222;background:#333;font-weight:bold;color:#fff;cursor:pointer;text-shadow:0 -1px 1px #000;text-decoration:none;background-image:-moz-linear-gradient(top,#555,#333);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#555),color-stop(1,#333));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#555555',EndColorStr='#333333')";}.ui-btn-up-a a.ui-link-inherit{color:#fff;}.ui-btn-hover-a{border:1px solid #000;background:#444;font-weight:bold;color:#fff;text-shadow:0 -1px 1px #000;text-decoration:none;background-image:-moz-linear-gradient(top,#666,#444);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#666),color-stop(1,#444));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#666666',EndColorStr='#444444')";}.ui-btn-hover-a a.ui-link-inherit{color:#fff;}.ui-btn-down-a{border:1px solid #000;background:#3d3d3d;font-weight:bold;color:#fff;text-shadow:0 -1px 1px #000;background-image:-moz-linear-gradient(top,#333,#5a5a5a);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#333),color-stop(1,#5a5a5a));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#333333',EndColorStr='#5a5a5a')";}.ui-btn-down-a a.ui-link-inherit{color:#fff;}.ui-btn-up-a,.ui-btn-hover-a,.ui-btn-down-a{font-family:Helvetica,Arial,sans-serif;}.ui-bar-b{border:1px solid #456f9a;background:#5e87b0;color:#fff;font-weight:bold;text-shadow:0 -1px 1px #254f7a;background-image:-moz-linear-gradient(top,#81a8ce,#5e87b0);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#81a8ce),color-stop(1,#5e87b0));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#81a8ce',EndColorStr='#5e87b0')";}.ui-bar-b,.ui-bar-b input,.ui-bar-b select,.ui-bar-b textarea,.ui-bar-b button{font-family:Helvetica,Arial,sans-serif;}.ui-bar-b .ui-link-inherit{color:#fff;}.ui-bar-b .ui-link{color:#7cc4e7;font-weight:bold;}.ui-body-b{border:1px solid #C6C6C6;background:#ccc;color:#333;text-shadow:0 1px 0 #fff;font-weight:normal;background-image:-moz-linear-gradient(top,#e6e6e6,#ccc);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#e6e6e6),color-stop(1,#ccc));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#e6e6e6',EndColorStr='#cccccc')";}.ui-body-b,.ui-body-b input,.ui-body-b select,.ui-body-b textarea,.ui-body-b button{font-family:Helvetica,Arial,sans-serif;}.ui-body-b .ui-link-inherit{color:#333;}.ui-body-b .ui-link{color:#2489CE;font-weight:bold;}.ui-btn-up-b{border:1px solid #145072;background:#2567ab;font-weight:bold;color:#fff;cursor:pointer;text-shadow:0 -1px 1px #145072;text-decoration:none;background-image:-moz-linear-gradient(top,#4e89c5,#2567ab);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#5f9cc5),color-stop(1,#396b9e));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#4e89c5',EndColorStr='#2567ab')";}.ui-btn-up-b a.ui-link-inherit{color:#fff;}.ui-btn-hover-b{border:1px solid #00516e;background:#4b88b6;font-weight:bold;color:#fff;text-shadow:0 -1px 1px #014D68;background-image:-moz-linear-gradient(top,#72b0d4,#4b88b6);text-decoration:none;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#72b0d4),color-stop(1,#4b88b6));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#72b0d4',EndColorStr='#4b88b6')";}.ui-btn-hover-b a.ui-link-inherit{color:#fff;}.ui-btn-down-b{border:1px solid #225377;background:#4e89c5;font-weight:bold;color:#fff;text-shadow:0 -1px 1px #225377;background-image:-moz-linear-gradient(top,#396b9e,#4e89c5);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#396b9e),color-stop(1,#4e89c5));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#396b9e',EndColorStr='#4e89c5')";}.ui-btn-down-b a.ui-link-inherit{color:#fff;}.ui-btn-up-b,.ui-btn-hover-b,.ui-btn-down-b{font-family:Helvetica,Arial,sans-serif;}.ui-bar-c{border:1px solid #B3B3B3;background:#e9eaeb;color:#3E3E3E;font-weight:bold;text-shadow:0 1px 1px #fff;background-image:-moz-linear-gradient(top,#f0f0f0,#e9eaeb);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#f0f0f0),color-stop(1,#e9eaeb));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#f0f0f0',EndColorStr='#e9eaeb')";}.ui-bar-c,.ui-bar-c input,.ui-bar-c select,.ui-bar-c textarea,.ui-bar-c button{font-family:Helvetica,Arial,sans-serif;}.ui-body-c{border:1px solid #B3B3B3;color:#333;text-shadow:0 1px 0 #fff;background:#f0f0f0;background-image:-moz-linear-gradient(top,#fff,#f0f0f0);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fff),color-stop(1,#f0f0f0));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#ffffff',EndColorStr='#f0f0f0')";}.ui-body-c,.ui-body-c input,.ui-body-c select,.ui-body-c textarea,.ui-body-c button{font-family:Helvetica,Arial,sans-serif;}.ui-body-c .ui-link-inherit{color:#333;}.ui-body-c .ui-link{color:#2489CE;font-weight:bold;}.ui-btn-up-c{border:1px solid #ccc;background:#eee;font-weight:bold;color:#444;cursor:pointer;text-shadow:0 1px 1px #f6f6f6;text-decoration:none;background-image:-moz-linear-gradient(top,#fdfdfd,#eee);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fdfdfd),color-stop(1,#eee));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#fdfdfd',EndColorStr='#eeeeee')";}.ui-btn-up-c a.ui-link-inherit{color:#2F3E46;}.ui-btn-hover-c{border:1px solid #aaa;background:#f5f5f5;font-weight:bold;color:#111;text-decoration:none;text-shadow:0 1px 1px #fff;background-image:-moz-linear-gradient(top,#fff,#f5f5f5);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fff),color-stop(1,#f5f5f5));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#ffffff',EndColorStr='#f5f5f5')";}.ui-btn-hover-c a.ui-link-inherit{color:#2F3E46;}.ui-btn-down-c{border:1px solid #808080;background:#fdfdfd;font-weight:bold;color:#111;text-shadow:0 1px 1px #fff;background-image:-moz-linear-gradient(top,#eee,#fdfdfd);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#eee),color-stop(1,#fdfdfd));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#eeeeee',EndColorStr='#fdfdfd')";}.ui-btn-down-c a.ui-link-inherit{color:#2F3E46;}.ui-btn-up-c,.ui-btn-hover-c,.ui-btn-down-c{font-family:Helvetica,Arial,sans-serif;}.ui-bar-d{border:1px solid #ccc;background:#bbb;color:#333;text-shadow:0 1px 0 #eee;background-image:-moz-linear-gradient(top,#ddd,#bbb);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#ddd),color-stop(1,#bbb));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#ddd',EndColorStr='#bbb')";}.ui-bar-d,.ui-bar-d input,.ui-bar-d select,.ui-bar-d textarea,.ui-bar-d button{font-family:Helvetica,Arial,sans-serif;}.ui-bar-d .ui-link-inherit{color:#333;}.ui-bar-d .ui-link{color:#2489CE;font-weight:bold;}.ui-body-d{border:1px solid #ccc;color:#333;text-shadow:0 1px 0 #fff;background:#fff;}.ui-body-d,.ui-body-d input,.ui-body-d select,.ui-body-d textarea,.ui-body-d button{font-family:Helvetica,Arial,sans-serif;}.ui-body-d .ui-link-inherit{color:#333;}.ui-body-d .ui-link{color:#2489CE;font-weight:bold;}.ui-btn-up-d{border:1px solid #ccc;background:#fff;font-weight:bold;color:#444;text-decoration:none;text-shadow:0 1px 1px #fff;}.ui-btn-up-d a.ui-link-inherit{color:#333;}.ui-btn-hover-d{border:1px solid #aaa;background:#eee;font-weight:bold;color:#222;cursor:pointer;text-shadow:0 1px 1px #fff;text-decoration:none;background-image:-moz-linear-gradient(top,#fdfdfd,#eee);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fdfdfd),color-stop(1,#eee));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#fdfdfd',EndColorStr='#eeeeee')";}.ui-btn-hover-d a.ui-link-inherit{color:#222;}.ui-btn-down-d{border:1px solid #aaa;background:#fff;font-weight:bold;color:#111;text-shadow:0 1px 1px #fff;background-image:-moz-linear-gradient(top,#eee,#fff);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#eee),color-stop(1,#fff));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#eeeeee',EndColorStr='#ffffff')";}.ui-btn-down-d a.ui-link-inherit{border:1px solid #808080;background:#ced0d2;font-weight:bold;color:#111;text-shadow:none;background-image:-moz-linear-gradient(top,#ccc,#eee);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#ccc),color-stop(1,#eee));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#cccccc',EndColorStr='#eeeeee')";}.ui-btn-up-d,.ui-btn-hover-d,.ui-btn-down-d{font-family:Helvetica,Arial,sans-serif;}.ui-bar-e{border:1px solid #F7C942;background:#fadb4e;color:#333;text-shadow:0 1px 0 #fff;background-image:-moz-linear-gradient(top,#fceda7,#fadb4e);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fceda7),color-stop(1,#fadb4e));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#fceda7',EndColorStr='#fadb4e')";}.ui-bar-e,.ui-bar-e input,.ui-bar-e select,.ui-bar-e textarea,.ui-bar-d button{font-family:Helvetica,Arial,sans-serif;}.ui-bar-e .ui-link-inherit{color:#333;}.ui-bar-e .ui-link{color:#2489CE;font-weight:bold;}.ui-body-e{border:1px solid #F7C942;color:#333;text-shadow:0 1px 0 #fff;background:#faeb9e;background-image:-moz-linear-gradient(top,#fff,#faeb9e);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fff),color-stop(1,#faeb9e));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#ffffff',EndColorStr='#faeb9e')";}.ui-body-e,.ui-body-e input,.ui-body-e select,.ui-body-e textarea,.ui-body-e button{font-family:Helvetica,Arial,sans-serif;}.ui-body-e .ui-link-inherit{color:#333;}.ui-body-e .ui-link{color:#2489CE;font-weight:bold;}.ui-btn-up-e{border:1px solid #F7C942;background:#fadb4e;font-weight:bold;color:#333;cursor:pointer;text-shadow:0 1px 1px #fe3;text-decoration:none;text-shadow:0 1px 0 #fff;background-image:-moz-linear-gradient(top,#fceda7,#fadb4e);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fceda7),color-stop(1,#fadb4e));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#fceda7',EndColorStr='#fadb4e')";}.ui-btn-up-e a.ui-link-inherit{color:#333;}.ui-btn-hover-e{border:1px solid #e79952;background:#fbe26f;font-weight:bold;color:#111;text-decoration:none;text-shadow:0 1px 1px #fff;background-image:-moz-linear-gradient(top,#fcf0b5,#fbe26f);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fcf0b5),color-stop(1,#fbe26f));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#fcf0b5',EndColorStr='#fbe26f')";}.ui-btn-hover-e a.ui-link-inherit{color:#333;}.ui-btn-down-e{border:1px solid #F7C942;background:#fceda7;font-weight:bold;color:#111;text-shadow:0 1px 1px #fff;background-image:-moz-linear-gradient(top,#fadb4e,#fceda7);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fadb4e),color-stop(1,#fceda7));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#fadb4e',EndColorStr='#fceda7')";}.ui-btn-down-e a.ui-link-inherit{color:#333;}.ui-btn-up-e,.ui-btn-hover-e,.ui-btn-down-e{font-family:Helvetica,Arial,sans-serif;}a.ui-link-inherit{text-decoration:none!important;}.ui-btn-active{border:1px solid #155678;background:#4596ce;font-weight:bold;color:#fff;cursor:pointer;text-shadow:0 -1px 1px #145072;text-decoration:none;background-image:-moz-linear-gradient(top,#85bae4,#5393c5);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#85bae4),color-stop(1,#5393c5));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#85bae4',EndColorStr='#5393c5')";}.ui-btn-active a.ui-link-inherit{color:#fff;}.ui-btn-inner{border-top:1px solid #fff;border-color:rgba(255,255,255,.3);}.ui-corner-tl{-moz-border-radius-topleft:.6em;-webkit-border-top-left-radius:.6em;border-top-left-radius:.6em;}.ui-corner-tr{-moz-border-radius-topright:.6em;-webkit-border-top-right-radius:.6em;border-top-right-radius:.6em;}.ui-corner-bl{-moz-border-radius-bottomleft:.6em;-webkit-border-bottom-left-radius:.6em;border-bottom-left-radius:.6em;}.ui-corner-br{-moz-border-radius-bottomright:.6em;-webkit-border-bottom-right-radius:.6em;border-bottom-right-radius:.6em;}.ui-corner-top{-moz-border-radius-topleft:.6em;-webkit-border-top-left-radius:.6em;border-top-left-radius:.6em;-moz-border-radius-topright:.6em;-webkit-border-top-right-radius:.6em;border-top-right-radius:.6em;}.ui-corner-bottom{-moz-border-radius-bottomleft:.6em;-webkit-border-bottom-left-radius:.6em;border-bottom-left-radius:.6em;-moz-border-radius-bottomright:.6em;-webkit-border-bottom-right-radius:.6em;border-bottom-right-radius:.6em;}.ui-corner-right{-moz-border-radius-topright:.6em;-webkit-border-top-right-radius:.6em;border-top-right-radius:.6em;-moz-border-radius-bottomright:.6em;-webkit-border-bottom-right-radius:.6em;border-bottom-right-radius:.6em;}.ui-corner-left{-moz-border-radius-topleft:.6em;-webkit-border-top-left-radius:.6em;border-top-left-radius:.6em;-moz-border-radius-bottomleft:.6em;-webkit-border-bottom-left-radius:.6em;border-bottom-left-radius:.6em;}.ui-corner-all{-moz-border-radius:.6em;-webkit-border-radius:.6em;border-radius:.6em;}.ui-disabled{cursor:default!important;opacity:.3;}.ui-icon{background-image:url(images/icons-18-white.png);background-repeat:no-repeat;background-color:#666;background-color:rgba(0,0,0,.4);-moz-border-radius:9px;-webkit-border-radius:9px;border-radius:9px;}.ui-icon-disc{background-color:#666;background-color:rgba(0,0,0,.3);-moz-border-radius:9px;-webkit-border-radius:9px;border-radius:9px;}.ui-icon-black{background-image:url(images/icons-18-black.png);}.ui-icon-black-disc{background-color:#fff;background-color:rgba(255,255,255,.3);-moz-border-radius:9px;-webkit-border-radius:9px;border-radius:9px;}@media screen and(-webkit-min-device-pixel-ratio:2),screen and(max--moz-device-pixel-ratio:2){.ui-icon{background-image:url(images/icons-36-white.png);background-size:558px 18px;}.ui-icon-black{background-image:url(images/icons-36-black.png);}}.ui-icon-plus{background-position:-0 0;}.ui-icon-minus{background-position:-36px 0;}.ui-icon-delete{background-position:-72px 0;}.ui-icon-arrow-r{background-position:-108px 0;}.ui-icon-arrow-l{background-position:-144px 0;}.ui-icon-arrow-u{background-position:-180px 0;}.ui-icon-arrow-d{background-position:-216px 0;}.ui-icon-check{background-position:-252px 0;}.ui-icon-gear{background-position:-288px 0;}.ui-icon-refresh{background-position:-324px 0;}.ui-icon-forward{background-position:-360px 0;}.ui-icon-back{background-position:-396px 0;}.ui-icon-grid{background-position:-432px 0;}.ui-icon-star{background-position:-468px 0;}.ui-icon-alert{background-position:-504px 0;}.ui-icon-info{background-position:-540px 0;}.ui-icon-checkbox-off,.ui-icon-checkbox-on,.ui-icon-radio-off,.ui-icon-radio-on{background-color:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;background-size:20px 20px;}.ui-icon-checkbox-off{background-image:url(images/form-check-off.png);}.ui-icon-checkbox-on{background-image:url(images/form-check-on.png);}.ui-icon-radio-off{background-image:url(images/form-radio-off.png);}.ui-icon-radio-on{background-image:url(images/form-radio-on.png);}.ui-icon-search{background-image:url(images/icon-search-black.png);background-size:16px 16px;}.ui-icon-loading{background-image:url(images/ajax-loader.png);width:40px;height:40px;-moz-border-radius:20px;-webkit-border-radius:20px;border-radius:20px;background-size:35px 35px;}.ui-btn-corner-tl{-moz-border-radius-topleft:1em;-webkit-border-top-left-radius:1em;border-top-left-radius:1em;}.ui-btn-corner-tr{-moz-border-radius-topright:1em;-webkit-border-top-right-radius:1em;border-top-right-radius:1em;}.ui-btn-corner-bl{-moz-border-radius-bottomleft:1em;-webkit-border-bottom-left-radius:1em;border-bottom-left-radius:1em;}.ui-btn-corner-br{-moz-border-radius-bottomright:1em;-webkit-border-bottom-right-radius:1em;border-bottom-right-radius:1em;}.ui-btn-corner-top{-moz-border-radius-topleft:1em;-webkit-border-top-left-radius:1em;border-top-left-radius:1em;-moz-border-radius-topright:1em;-webkit-border-top-right-radius:1em;border-top-right-radius:1em;}.ui-btn-corner-bottom{-moz-border-radius-bottomleft:1em;-webkit-border-bottom-left-radius:1em;border-bottom-left-radius:1em;-moz-border-radius-bottomright:1em;-webkit-border-bottom-right-radius:1em;border-bottom-right-radius:1em;}.ui-btn-corner-right{-moz-border-radius-topright:1em;-webkit-border-top-right-radius:1em;border-top-right-radius:1em;-moz-border-radius-bottomright:1em;-webkit-border-bottom-right-radius:1em;border-bottom-right-radius:1em;}.ui-btn-corner-left{-moz-border-radius-topleft:1em;-webkit-border-top-left-radius:1em;border-top-left-radius:1em;-moz-border-radius-bottomleft:1em;-webkit-border-bottom-left-radius:1em;border-bottom-left-radius:1em;}.ui-btn-corner-all{-moz-border-radius:1em;-webkit-border-radius:1em;border-radius:1em;}.ui-corner-tl,.ui-corner-tr,.ui-corner-bl,.ui-corner-br,.ui-corner-top,.ui-corner-bottom,.ui-corner-right,.ui-corner-left,.ui-corner-all,.ui-btn-corner-tl,.ui-btn-corner-tr,.ui-btn-corner-bl,.ui-btn-corner-br,.ui-btn-corner-top,.ui-btn-corner-bottom,.ui-btn-corner-right,.ui-btn-corner-left,.ui-btn-corner-all{-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;}.ui-overlay{background:#666;opacity:.5;filter:Alpha(Opacity=50);position:absolute;width:100%;height:100%;}.ui-overlay-shadow{-moz-box-shadow:0 0 12px rgba(0,0,0,.6);-webkit-box-shadow:0 0 12px rgba(0,0,0,.6);box-shadow:0 0 12px rgba(0,0,0,.6);}.ui-shadow{-moz-box-shadow:0 1px 4px rgba(0,0,0,.3);-webkit-box-shadow:0 1px 4px rgba(0,0,0,.3);box-shadow:0 1px 4px rgba(0,0,0,.3);}.ui-bar-a .ui-shadow,.ui-bar-b .ui-shadow,.ui-bar-c .ui-shadow{-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3);}.ui-shadow-inset{-moz-box-shadow:inset 0 1px 4px rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 4px rgba(0,0,0,.2);box-shadow:inset 0 1px 4px rgba(0,0,0,.2);}.ui-icon-shadow{-moz-box-shadow:0 1px 0 rgba(255,255,255,.4);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.4);box-shadow:0 1px 0 rgba(255,255,255,.4);}.ui-focus{outline-width:0;-moz-box-shadow:0 0 12px #387bbe;-webkit-box-shadow:0 0 12px #387bbe;box-shadow:0 0 12px #387bbe;}.ui-mobile-nosupport-boxshadow *{-moz-box-shadow:none!important;-webkit-box-shadow:none!important;box-shadow:none!important;}.ui-mobile-nosupport-boxshadow .ui-focus{outline-width:2px;}.ui-mobile fieldset,.ui-page{padding:0;margin:0;}.ui-mobile a img,.ui-mobile fieldset{border:0;}.ui-mobile-viewport{margin:0;overflow-x:hidden;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;-webkit-tap-highlight-color:rgba(0,0,0,0);}.ui-page{top:0;left:0;width:100%;min-height:100%;position:absolute;display:none;border:0;}.ui-page-active{display:block;overflow:visible;min-height:100%;}.ui-loading .ui-mobile-viewport{overflow:hidden!important;}.ui-loading .ui-loader{display:block;}.ui-loading .ui-page{overflow:hidden;}.ui-loader{display:none;position:absolute;opacity:.85;z-index:10;top:75px;left:50%;width:200px;margin-left:-130px;padding:20px 30px;}.ui-loader h1{font-size:15px;text-align:center;}.ui-loader .ui-icon{position:static;display:block;opacity:.9;margin:0 auto;width:35px;height:35px;background-color:transparent;}.ui-mobile-rendering>*{visibility:hidden;}.ui-bar,.ui-body{position:relative;padding:.4em 15px;overflow:hidden;display:block;clear:both;}.ui-bar{font-size:16px;margin:0;}.ui-bar h1,.ui-bar h2,.ui-bar h3,.ui-bar h4,.ui-bar h5,.ui-bar h6{margin:0;padding:0;font-size:16px;display:inline-block;}.ui-header,.ui-footer{display:block;}.ui-page .ui-header,.ui-page .ui-footer{position:relative;}.ui-header .ui-btn-left{position:absolute;left:10px;top:.4em;}.ui-header .ui-title,.ui-footer .ui-title{text-align:center;font-size:16px;display:block;margin:.6em 90px .8em;padding:0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;outline:0!important;}.ui-header .ui-btn-right{position:absolute;right:10px;top:.4em;}.ui-content{border-width:0;overflow:visible;overflow-x:hidden;padding:15px;}.ui-page-fullscreen .ui-content{padding:0;}.ui-icon{width:18px;height:18px;}.ui-fullscreen img{max-width:100%;}.ui-nojs{position:absolute;left:-9999px;}.spin{-webkit-transform:rotate(360deg);-webkit-animation-name:spin;-webkit-animation-duration:1s;-webkit-animation-iteration-count:infinite;}@-webkit-keyframes spin{from{-webkit-transform:rotate(0deg);}to{-webkit-transform:rotate(360deg);}}.in,.out{-webkit-animation-timing-function:ease-in-out;-webkit-animation-duration:350ms;}.slide.in{-webkit-transform:translateX(0);-webkit-animation-name:slideinfromright;}.slide.out{-webkit-transform:translateX(-100%);-webkit-animation-name:slideouttoleft;}.slide.in.reverse{-webkit-transform:translateX(0);-webkit-animation-name:slideinfromleft;}.slide.out.reverse{-webkit-transform:translateX(100%);-webkit-animation-name:slideouttoright;}.slideup.in{-webkit-transform:translateY(0);-webkit-animation-name:slideinfrombottom;z-index:10;}.slideup.out{-webkit-animation-name:dontmove;z-index:0;}.slideup.out.reverse{-webkit-transform:translateY(100%);z-index:10;-webkit-animation-name:slideouttobottom;}.slideup.in.reverse{z-index:0;-webkit-animation-name:dontmove;}.slidedown.in{-webkit-transform:translateY(0);-webkit-animation-name:slideinfromtop;z-index:10;}.slidedown.out{-webkit-animation-name:dontmove;z-index:0;}.slidedown.out.reverse{-webkit-transform:translateY(-100%);z-index:10;-webkit-animation-name:slideouttotop;}.slidedown.in.reverse{z-index:0;-webkit-animation-name:dontmove;}@-webkit-keyframes slideinfromright{from{-webkit-transform:translateX(100%);}to{-webkit-transform:translateX(0);}}@-webkit-keyframes slideinfromleft{from{-webkit-transform:translateX(-100%);}to{-webkit-transform:translateX(0);}}@-webkit-keyframes slideouttoleft{from{-webkit-transform:translateX(0);}to{-webkit-transform:translateX(-100%);}}@-webkit-keyframes slideouttoright{from{-webkit-transform:translateX(0);}to{-webkit-transform:translateX(100%);}}@-webkit-keyframes slideinfromtop{from{-webkit-transform:translateY(-100%);}to{-webkit-transform:translateY(0);}}@-webkit-keyframes slideinfrombottom{from{-webkit-transform:translateY(100%);}to{-webkit-transform:translateY(0);}}@-webkit-keyframes slideouttobottom{from{-webkit-transform:translateY(0);}to{-webkit-transform:translateY(100%);}}@-webkit-keyframes slideouttotop{from{-webkit-transform:translateY(0);}to{-webkit-transform:translateY(-100%);}}@-webkit-keyframes fadein{from{opacity:0;}to{opacity:1;}}@-webkit-keyframes fadeout{from{opacity:1;}to{opacity:0;}}.fade.in{opacity:1;z-index:10;-webkit-animation-name:fadein;}.fade.out{z-index:0;}.ui-mobile-viewport-transitioning{-webkit-perspective:1000;position:absolute;}.ui-mobile-viewport-transitioning,.ui-mobile-viewport-transitioning .ui-page{width:100%;height:100%;overflow:hidden;}.flip{-webkit-animation-duration:.65s;-webkit-backface-visibility:hidden;-webkit-transform:translateX(0);}.flip.in{-webkit-transform:rotateY(0) scale(1);-webkit-animation-name:flipinfromleft;}.flip.out{-webkit-transform:rotateY(-180deg) scale(.8);-webkit-animation-name:flipouttoleft;}.flip.in.reverse{-webkit-transform:rotateY(0) scale(1);-webkit-animation-name:flipinfromright;}.flip.out.reverse{-webkit-transform:rotateY(180deg) scale(.8);-webkit-animation-name:flipouttoright;}@-webkit-keyframes flipinfromright{from{-webkit-transform:rotateY(-180deg) scale(.8);}to{-webkit-transform:rotateY(0) scale(1);}}@-webkit-keyframes flipinfromleft{from{-webkit-transform:rotateY(180deg) scale(.8);}to{-webkit-transform:rotateY(0) scale(1);}}@-webkit-keyframes flipouttoleft{from{-webkit-transform:rotateY(0) scale(1);}to{-webkit-transform:rotateY(-180deg) scale(.8);}}@-webkit-keyframes flipouttoright{from{-webkit-transform:rotateY(0) scale(1);}to{-webkit-transform:rotateY(180deg) scale(.8);}}@-webkit-keyframes dontmove{from{opacity:1;}to{opacity:1;}}.pop{-webkit-transform-origin:50% 50%;}.pop.in{-webkit-transform:scale(1);opacity:1;-webkit-animation-name:popin;z-index:10;}.pop.out.reverse{-webkit-transform:scale(.2);opacity:0;-webkit-animation-name:popout;z-index:10;}.pop.in.reverse{z-index:0;-webkit-animation-name:dontmove;}@-webkit-keyframes popin{from{-webkit-transform:scale(.2);opacity:0;}to{-webkit-transform:scale(1);opacity:1;}}@-webkit-keyframes popout{from{-webkit-transform:scale(1);opacity:1;}to{-webkit-transform:scale(.2);opacity:0;}}.ui-grid-a,.ui-grid-b,.ui-grid-c,.ui-grid-d{overflow:hidden;}.ui-block-a,.ui-block-b,.ui-block-c,.ui-block-d,.ui-block-e{margin:0;padding:0;border:0;float:left;}.ui-grid-a .ui-block-a,.ui-grid-a .ui-block-b{width:50%;}.ui-grid-a .ui-block-a{clear:left;}.ui-grid-b .ui-block-a,.ui-grid-b .ui-block-b,.ui-grid-b .ui-block-c{width:33.333%;}.ui-grid-b .ui-block-a{clear:left;}.ui-grid-c .ui-block-a,.ui-grid-c .ui-block-b,.ui-grid-c .ui-block-c,.ui-grid-c .ui-block-d{width:25%;}.ui-grid-c .ui-block-a{clear:left;}.ui-grid-d .ui-block-a,.ui-grid-d .ui-block-b,.ui-grid-d .ui-block-c,.ui-grid-d .ui-block-d,.ui-grid-d .ui-block-e{width:20%;}.ui-grid-d .ui-block-a{clear:left;}.ui-header,.ui-footer,.ui-page-fullscreen .ui-header,.ui-page-fullscreen .ui-footer{position:absolute;overflow:hidden;width:100%;border-left-width:0;border-right-width:0;}.ui-header-fixed,.ui-footer-fixed{z-index:1000;-webkit-transform:translateZ(0);}.ui-footer-duplicate,.ui-page-fullscreen .ui-fixed-inline{display:none;}.ui-page-fullscreen .ui-header,.ui-page-fullscreen .ui-footer{opacity:.9;}.ui-navbar{overflow:hidden;}.ui-navbar ul,.ui-navbar-expanded ul{list-style:none;padding:0;margin:0;position:relative;display:block;border:0;}.ui-navbar-collapsed ul{float:left;width:75%;margin-right:-2px;}.ui-navbar-collapsed .ui-navbar-toggle{float:left;width:25%;}.ui-navbar li.ui-navbar-truncate{position:absolute;left:-99999px;top:-99999px;}.ui-navbar li .ui-btn,.ui-navbar .ui-navbar-toggle .ui-btn{display:block;font-size:12px;text-align:center;margin:0;outline:none;border-right-width:0;}.ui-navbar li .ui-btn{margin-right:-1px;}.ui-navbar li .ui-btn:last-child{margin-right:0;}.ui-header .ui-navbar li .ui-btn,.ui-header .ui-navbar .ui-navbar-toggle .ui-btn,.ui-footer .ui-navbar li .ui-btn,.ui-footer .ui-navbar .ui-navbar-toggle .ui-btn{border-top-width:0;border-bottom-width:0;}.ui-navbar .ui-btn-inner{padding-left:2px;padding-right:2px;}.ui-navbar-noicons li .ui-btn .ui-btn-inner,.ui-navbar-noicons .ui-navbar-toggle .ui-btn-inner{padding-top:.8em;padding-bottom:.9em;}.ui-navbar-expanded .ui-btn{margin:0;font-size:14px;}.ui-navbar-expanded .ui-btn-inner{padding-left:5px;padding-right:5px;}.ui-navbar-expanded .ui-btn-icon-top .ui-btn-inner{padding:45px 5px 15px;text-align:center;}.ui-navbar-expanded .ui-btn-icon-top .ui-icon{top:15px;}.ui-navbar-expanded .ui-btn-icon-bottom .ui-btn-inner{padding:15px 5px 45px;text-align:center;}.ui-navbar-expanded .ui-btn-icon-bottom .ui-icon{bottom:15px;}.ui-navbar-expanded li .ui-btn .ui-btn-inner{min-height:2.5em;}.ui-navbar-expanded .ui-navbar-noicons .ui-btn .ui-btn-inner{padding-top:1.8em;padding-bottom:1.9em;}.ui-btn{display:block;text-align:center;cursor:pointer;position:relative;margin:.5em 5px;padding:0;}.ui-btn:focus,.ui-btn a:focus{outline:none;}.ui-header .ui-btn,.ui-footer .ui-btn,.ui-bar .ui-btn{display:inline-block;font-size:13px;margin:0;}.ui-btn-inline{display:inline-block;}.ui-btn-inner{padding:.6em 25px;display:block;height:100%;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;position:relative;}.ui-header .ui-btn-inner,.ui-footer .ui-btn-inner,.ui-bar .ui-btn-inner{padding:.4em 8px .5em;}.ui-btn-icon-notext{display:inline-block;width:20px;height:20px;padding:1px 0 1px 2px;text-indent:-9999px;}.ui-btn-icon-notext .ui-btn-inner{padding:0;}.ui-btn-icon-notext .ui-btn-text{position:absolute;left:-999px;}.ui-btn-icon-left .ui-btn-inner{padding-left:33px;}.ui-header .ui-btn-icon-left .ui-btn-inner,.ui-footer .ui-btn-icon-left .ui-btn-inner,.ui-bar .ui-btn-icon-left .ui-btn-inner{padding-left:27px;}.ui-btn-icon-right .ui-btn-inner{padding-right:33px;}.ui-header .ui-btn-icon-right .ui-btn-inner,.ui-footer .ui-btn-icon-right .ui-btn-inner,.ui-bar .ui-btn-icon-right .ui-btn-inner{padding-right:27px;}.ui-btn-icon-top .ui-btn-inner{padding-top:33px;}.ui-header .ui-btn-icon-top .ui-btn-inner,.ui-footer .ui-btn-icon-top .ui-btn-inner,.ui-bar .ui-btn-icon-top .ui-btn-inner{padding-top:27px;}.ui-btn-icon-bottom .ui-btn-inner{padding-bottom:33px;}.ui-header .ui-btn-icon-bottom .ui-btn-inner,.ui-footer .ui-btn-icon-bottom .ui-btn-inner,.ui-bar .ui-btn-icon-bottom .ui-btn-inner{padding-bottom:27px;}.ui-btn-icon-notext .ui-icon{display:block;}.ui-btn-icon-left .ui-icon,.ui-btn-icon-right .ui-icon{position:absolute;top:50%;margin-top:-9px;}.ui-btn-icon-top .ui-icon,.ui-btn-icon-bottom .ui-icon{position:absolute;left:50%;margin-left:-9px;}.ui-btn-icon-left .ui-icon{left:10px;}.ui-btn-icon-right .ui-icon{right:10px;}.ui-header .ui-btn-icon-left .ui-icon,.ui-footer .ui-btn-icon-left .ui-icon,.ui-bar .ui-btn-icon-left .ui-icon{left:4px;}.ui-header .ui-btn-icon-right .ui-icon,.ui-footer .ui-btn-icon-right .ui-icon,.ui-bar .ui-btn-icon-right .ui-icon{right:4px;}.ui-header .ui-btn-icon-top .ui-icon,.ui-footer .ui-btn-icon-top .ui-icon,.ui-bar .ui-btn-icon-top .ui-icon{top:4px;}.ui-header .ui-btn-icon-bottom .ui-icon,.ui-footer .ui-btn-icon-bottom .ui-icon,.ui-bar .ui-btn-icon-bottom .ui-icon{bottom:4px;}.ui-btn-icon-top .ui-icon{top:5px;}.ui-btn-icon-bottom .ui-icon{bottom:5px;}.ui-btn-hidden{position:absolute;left:-9999px;}.ui-collapsible-contain{margin:.5em 0;}.ui-collapsible-heading{font-size:16px;display:block;margin:0 -8px;padding:0;border-width:0 0 1px 0;position:relative;}.ui-collapsible-heading a{text-align:left;margin:0;}.ui-collapsible-heading a .ui-btn-inner{padding-left:40px;}.ui-collapsible-heading a span.ui-btn{position:absolute;left:6px;top:50%;margin:-12px 0 0 0;width:20px;height:20px;padding:1px 0 1px 2px;text-indent:-9999px;}.ui-collapsible-heading a span.ui-btn .ui-btn-inner{padding:0;}.ui-collapsible-heading a span.ui-btn .ui-icon{left:0;margin-top:-10px;}.ui-collapsible-heading-status{position:absolute;left:-99999px;}.ui-collapsible-content{display:block;padding:10px 0 10px 8px;}.ui-collapsible-content-collapsed{display:none;}.ui-collapsible-set{margin:.5em 0;}.ui-collapsible-set .ui-collapsible-contain{margin:-1px 0 0;}.ui-controlgroup,fieldset.ui-controlgroup{padding:0;margin:.5em 0 1em;}.ui-bar .ui-controlgroup{margin:0 .3em;}.ui-controlgroup-label{font-size:16px;line-height:1.4;font-weight:normal;margin:0 0 .3em;}.ui-controlgroup-controls{display:block;width:95%;}.ui-controlgroup li{list-style:none;}.ui-controlgroup-vertical .ui-btn,.ui-controlgroup-vertical .ui-checkbox,.ui-controlgroup-vertical .ui-radio{margin:0;border-bottom-width:0;}.ui-controlgroup-vertical .ui-controlgroup-last{border-bottom-width:1px;}.ui-controlgroup-horizontal{padding:0;}.ui-controlgroup-horizontal .ui-btn,.ui-controlgroup-horizontal .ui-checkbox,.ui-controlgroup-horizontal .ui-radio{margin:0 -5px 0 0;display:inline-block;}.ui-controlgroup-horizontal .ui-checkbox .ui-btn,.ui-controlgroup-horizontal .ui-radio .ui-btn,.ui-controlgroup-horizontal .ui-checkbox:last-child,.ui-controlgroup-horizontal .ui-radio:last-child{margin-right:0;}.ui-controlgroup-horizontal .ui-controlgroup-last{margin-right:0;}.ui-controlgroup .ui-checkbox label,.ui-controlgroup .ui-radio label{font-size:16px;}.min-width-480px .ui-controlgroup-label{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0;}.min-width-480px .ui-controlgroup-controls{width:60%;display:inline-block;}.ui-dialog .ui-header,.ui-dialog .ui-content,.ui-dialog .ui-footer{margin:15px;position:relative;}.ui-dialog .ui-header,.ui-dialog .ui-footer{z-index:10;width:auto;}.ui-dialog .ui-content,.ui-dialog .ui-footer{margin-top:-15px;}.ui-checkbox,.ui-radio{position:relative;margin:.2em 0 .5em;}.ui-checkbox .ui-btn,.ui-radio .ui-btn{margin:0;text-align:left;}.ui-checkbox .ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-btn-icon-left .ui-btn-inner{padding-left:45px;}.ui-checkbox .ui-btn-icon-right .ui-btn-inner,.ui-radio .ui-btn-icon-right .ui-btn-inner{padding-right:45px;}.ui-checkbox .ui-btn-icon-left .ui-icon,.ui-radio .ui-btn-icon-left .ui-icon{left:15px;}.ui-checkbox .ui-btn-icon-right .ui-icon,.ui-radio .ui-btn-icon-right .ui-icon{right:15px;}.ui-checkbox input,.ui-radio input{position:absolute;left:20px;top:50%;width:10px;height:10px;margin:-5px 0 0 0;outline:0!important;}.ui-field-contain{background:none;padding:1.5em 0;margin:0;border-bottom-width:1px;overflow:visible;}.ui-field-contain:first-child{border-top-width:0;}@media screen and(max-width:480px){.ui-field-contain{border-width:0;padding:0;margin:1em 0;}}.ui-select{display:block;}.ui-select select{position:absolute;left:-99999px;}.ui-select .ui-btn-icon-right .ui-btn-inner{padding-right:45px;}.ui-select .ui-btn-icon-right .ui-icon{right:15px;}label.ui-select{font-size:16px;line-height:1.4;font-weight:normal;margin:0 0 .3em;display:block;}.ui-listbox{position:absolute;padding:0;z-index:100!important;width:80%;max-width:350px;padding:6px;}.ui-listbox .ui-listview{margin:0;}.ui-listbox-hidden{top:-999999px;left:-99999px;}.ui-listbox-screen{position:absolute;top:0;left:0;width:100%;height:100%;z-index:99;}.ui-screen-hidden,.ui-listbox-list .ui-li .ui-icon{display:none;}.ui-listbox-list .ui-btn-active .ui-icon{display:block;}.ui-helper-hidden,.ui-mobile .ui-content-hidden{display:none;}.min-width-480px label.ui-select{display:inline-block;width:20%;margin:0 2% 0 0;}.min-width-480px .ui-select{width:60%;display:inline-block;}label.ui-input-text{font-size:16px;line-height:1.4;display:block;font-weight:normal;margin:0 0 .3em;}input.ui-input-text,textarea.ui-input-text{background-image:none;padding:.4em;line-height:1.4;font-size:16px;display:block;width:95%;}textarea.ui-input-text{height:50px;-webkit-transition:height 200ms linear;-moz-transition:height 200ms linear;-o-transition:height 200ms linear;transition:height 200ms linear;}.ui-input-search{padding:0 30px;width:77%;background-position:8px 50%;background-repeat:no-repeat;position:relative;}.ui-input-search input.ui-input-text{border:none;width:98%;padding:.4em 0;margin:0;display:block;background:transparent none;outline:0!important;}.ui-input-search .ui-input-clear{position:absolute;right:2px;top:50%;margin-top:-12px;}.ui-input-search .ui-input-clear-hidden{display:none;}.min-width-480px label.ui-input-text{vertical-align:top;}.min-width-480px label.ui-input-text{display:inline-block;width:20%;margin:0 2% 0 0;}.min-width-480px input.ui-input-text,.min-width-480px textarea.ui-input-text,.min-width-480px .ui-input-search{width:60%;display:inline-block;}.min-width-480px .ui-input-search{width:50%;}.ui-listview{margin:0;counter-reset:listnumbering;}.ui-content .ui-listview{margin:-15px;}.ui-content .ui-listview-inset{margin:1em 0;}.ui-listview,.ui-li{list-style:none;padding:0;zoom:1;}.ui-li{display:block;margin:0;position:relative;overflow:hidden;text-align:left;border-width:0;border-top-width:1px;}.ui-li .ui-btn-text{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;}.ui-li-divider,.ui-li-static{padding:.5em 15px;font-size:14px;font-weight:bold;counter-reset:listnumbering;}ol.ui-listview .ui-link-inherit:before,.ui-li-dec{font-size:.8em;display:inline-block;padding-right:.3em;font-weight:normal;counter-increment:listnumbering;content:counter(listnumbering) ". ";}ol.ui-listview .ui-li-jsnumbering:before{content:""!important;}.ui-listview-inset .ui-li{border-right-width:1px;border-left-width:1px;}.ui-li:last-child{border-bottom-width:1px;}.ui-li .ui-btn-inner{display:block;position:relative;padding:.7em 75px .7em 15px;}.ui-li-has-thumb .ui-btn-inner{min-height:60px;padding-left:100px;}.ui-li-has-icon .ui-btn-inner{min-height:20px;padding-left:40px;}.ui-li-heading{font-size:16px;font-weight:bold;display:block;margin:.6em 0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;}.ui-li-desc{font-size:12px;font-weight:normal;display:block;margin:-.5em 0 .6em;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;}.ui-li-thumb,.ui-li-icon{position:absolute;left:1px;top:0;max-height:80px;max-width:80px;}.ui-li-icon{max-height:40px;max-width:40px;left:10px;top:.9em;}.ui-li-thumb,.ui-li-icon,.ui-li-content{float:left;margin-right:10px;}.ui-li-aside{float:right;width:50%;text-align:right;margin:.3em 0;}.min-width-480px .ui-li-aside{width:45%;}.ui-li-has-alt .ui-btn-inner{padding-right:95px;}.ui-li-count{position:absolute;font-size:11px;font-weight:bold;padding:.2em .5em;top:50%;margin-top:-.9em;right:38px;}.ui-li-divider .ui-li-count{right:10px;}.ui-li-has-alt .ui-li-count{right:55px;}.ui-li-link-alt{position:absolute;width:40px;height:100%;border-width:0;border-left-width:1px;top:0;right:0;margin:0;padding:0;}.ui-li-link-alt .ui-btn{overflow:hidden;position:absolute;right:8px;top:50%;margin:-11px 0 0 0;border-bottom-width:1px;}.ui-li-link-alt .ui-btn-inner{padding:0;position:static;}.ui-li-link-alt .ui-btn .ui-icon{right:50%;margin-right:-9px;}.ui-listview-filter{border-width:0;overflow:hidden;margin:-15px -15px 15px -15px;}.ui-listview-filter .ui-input-search{margin:5px;width:auto;display:block;}@media only screen and(min-device-width:768px) and(max-device-width:1024px){.ui-li .ui-btn-text{overflow:visible;}}label.ui-slider{display:block;}input.ui-slider-input,.min-width-480px input.ui-slider-input{display:inline-block;width:40px;}select.ui-slider-switch{display:none;}div.ui-slider{position:relative;display:inline-block;overflow:visible;height:15px;padding:0;margin:0 2% 0 20px;top:4px;width:66%;}a.ui-slider-handle{position:absolute;z-index:10;top:50%;width:28px;height:28px;margin-top:-15px;margin-left:-15px;}a.ui-slider-handle .ui-btn-inner{padding-left:0;padding-right:0;}.min-width-480px label.ui-slider{display:inline-block;width:20%;margin:0 2% 0 0;}.min-width-480px div.ui-slider{width:45%;}div.ui-slider-switch{height:32px;overflow:hidden;margin-left:0;}div.ui-slider-inneroffset{margin-left:50%;position:absolute;top:1px;height:100%;width:50%;}div.ui-slider-handle-snapping{-webkit-transition:left 100ms linear;}div.ui-slider-labelbg{position:absolute;top:0;margin:0;border-width:0;}div.ui-slider-switch div.ui-slider-labelbg-a{width:60%;height:100%;left:0;}div.ui-slider-switch div.ui-slider-labelbg-b{width:60%;height:100%;right:0;}.ui-slider-switch-a div.ui-slider-labelbg-a,.ui-slider-switch-b div.ui-slider-labelbg-b{z-index:1;}.ui-slider-switch-a div.ui-slider-labelbg-b,.ui-slider-switch-b div.ui-slider-labelbg-a{z-index:10;}div.ui-slider-switch a.ui-slider-handle{z-index:20;width:101%;height:32px;margin-top:-18px;margin-left:-101%;}span.ui-slider-label{width:100%;position:absolute;height:32px;font-size:16px;text-align:center;line-height:2;background:none;border-color:transparent;}span.ui-slider-label-a{left:-100%;margin-right:-1px;}span.ui-slider-label-b{right:-100%;margin-left:-1px;} Added: branches/monitor-web-2.0/css/smoothness/jquery-ui-1.8.5.custom.css =================================================================== --- branches/monitor-web-2.0/css/smoothness/jquery-ui-1.8.5.custom.css (rev 0) +++ branches/monitor-web-2.0/css/smoothness/jquery-ui-1.8.5.custom.css 2010-11-26 05:58:47 UTC (rev 2364) @@ -0,0 +1,572 @@ +/* + * jQuery UI CSS Framework @VERSION + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + */ + +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { display: none; } +.ui-helper-hidden-accessible { position: absolute; left: -99999999px; } +.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } +.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } +.ui-helper-clearfix { display: inline-block; } +/* required comment for clearfix to work in Opera \*/ +* html .ui-helper-clearfix { height:1%; } +.ui-helper-clearfix { display:block; } +/* end clearfix */ +.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } + + +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { cursor: default !important; } + + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } + + +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } + + +/* + * jQuery UI CSS Framework @VERSION + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + * + * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana,Arial,sans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px + */ + + +/* Component containers +----------------------------------*/ +.ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; } +.ui-widget .ui-widget { font-size: 1em; } +.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; } +.ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; } +.ui-widget-content a { color: #222222; } +.ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; } +.ui-widget-header a { color: #222222; } + +/* Interaction states +----------------------------------*/ +.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #555555; } +.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; } +.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999; background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; } +.ui-state-hover a, .ui-state-hover a:hover { color: #212121; text-decoration: none; } +.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; } +.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; } +.ui-widget :active { outline: none; } + +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; } +.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; } +.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; } +.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; } +.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; } +.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } +.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } +.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); } +.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } +.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } +.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); } +.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); } +.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); } +.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); } +.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); } + +/* positioning */ +.ui-icon-carat-1-n { background-position: 0 0; } +.ui-icon-carat-1-ne { background-position: -16px 0; } +.ui-icon-carat-1-e { background-position: -32px 0; } +.ui-ic... [truncated message content] |
From: <vv...@us...> - 2010-11-29 03:44:12
|
Revision: 2368 http://ganglia.svn.sourceforge.net/ganglia/?rev=2368&view=rev Author: vvuksan Date: 2010-11-29 03:44:03 +0000 (Mon, 29 Nov 2010) Log Message: ----------- Port the new UI to DWOO Modified Paths: -------------- branches/monitor-web-2.0/actions.php branches/monitor-web-2.0/auth.php branches/monitor-web-2.0/cluster_view.php branches/monitor-web-2.0/conf/view_default.json branches/monitor-web-2.0/conf.php.in branches/monitor-web-2.0/css/jquery.mobile-1.0a2.min.css branches/monitor-web-2.0/css/smoothness/jquery-ui-1.8.5.custom.css branches/monitor-web-2.0/edit_optional_graphs.php branches/monitor-web-2.0/eval_config.php branches/monitor-web-2.0/functions.php branches/monitor-web-2.0/ganglia.php branches/monitor-web-2.0/graph.d/load_report.php branches/monitor-web-2.0/graph.d/metric.php branches/monitor-web-2.0/graph.php branches/monitor-web-2.0/grid_tree.php branches/monitor-web-2.0/header.php branches/monitor-web-2.0/host_view.php branches/monitor-web-2.0/index.php branches/monitor-web-2.0/js/ganglia.js branches/monitor-web-2.0/js/jquery-ui-1.8.5.custom.min.js branches/monitor-web-2.0/js/jquery.liveSearch.js branches/monitor-web-2.0/meta_view.php branches/monitor-web-2.0/templates/default/cluster_view.tpl branches/monitor-web-2.0/templates/default/footer.tpl branches/monitor-web-2.0/templates/default/header.tpl branches/monitor-web-2.0/templates/default/host_view.tpl branches/monitor-web-2.0/templates/default/meta_view.tpl Added Paths: ----------- branches/monitor-web-2.0/css/images/ branches/monitor-web-2.0/css/images/ajax-loader.png branches/monitor-web-2.0/css/images/form-check-off.png branches/monitor-web-2.0/css/images/form-check-on.png branches/monitor-web-2.0/css/images/form-radio-off.png branches/monitor-web-2.0/css/images/form-radio-on.png branches/monitor-web-2.0/css/images/icon-search-black.png branches/monitor-web-2.0/css/images/icons-18-black.png branches/monitor-web-2.0/css/images/icons-18-white.png branches/monitor-web-2.0/css/images/icons-36-black.png branches/monitor-web-2.0/css/images/icons-36-white.png branches/monitor-web-2.0/css/smoothness/images/ branches/monitor-web-2.0/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png branches/monitor-web-2.0/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png branches/monitor-web-2.0/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png branches/monitor-web-2.0/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png branches/monitor-web-2.0/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png branches/monitor-web-2.0/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png branches/monitor-web-2.0/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png branches/monitor-web-2.0/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png branches/monitor-web-2.0/css/smoothness/images/ui-icons_222222_256x240.png branches/monitor-web-2.0/css/smoothness/images/ui-icons_2e83ff_256x240.png branches/monitor-web-2.0/css/smoothness/images/ui-icons_454545_256x240.png branches/monitor-web-2.0/css/smoothness/images/ui-icons_888888_256x240.png branches/monitor-web-2.0/css/smoothness/images/ui-icons_cd0a0a_256x240.png branches/monitor-web-2.0/img/ branches/monitor-web-2.0/img/calendar.gif branches/monitor-web-2.0/img/spinner.gif branches/monitor-web-2.0/web/ Modified: branches/monitor-web-2.0/actions.php =================================================================== --- branches/monitor-web-2.0/actions.php 2010-11-26 07:25:38 UTC (rev 2367) +++ branches/monitor-web-2.0/actions.php 2010-11-29 03:44:03 UTC (rev 2368) @@ -47,4 +47,4 @@ <?php } // end of if ( isset($_GET['show_views']) { -?> +?> \ No newline at end of file Modified: branches/monitor-web-2.0/auth.php =================================================================== --- branches/monitor-web-2.0/auth.php 2010-11-26 07:25:38 UTC (rev 2367) +++ branches/monitor-web-2.0/auth.php 2010-11-29 03:44:03 UTC (rev 2368) @@ -16,7 +16,7 @@ while(!feof($fp)) { $line=chop(fgets($fp,255)); if (!$line or !strcspn($line,"#")) { continue; } - $list=explode("=",$line); + $list=split("=",$line); if (count($list)!=2) { continue; } $name=trim($list[0]); $pass=trim($list[1]); Modified: branches/monitor-web-2.0/cluster_view.php =================================================================== --- branches/monitor-web-2.0/cluster_view.php 2010-11-26 07:25:38 UTC (rev 2367) +++ branches/monitor-web-2.0/cluster_view.php 2010-11-29 03:44:03 UTC (rev 2368) @@ -1,5 +1,5 @@ -<?php -/* $Id$ */ + <?php + /* $Id$ */ $tpl = new Dwoo_Template_File( template("cluster_view.tpl") ); $data = new Dwoo_Data(); $data->assign("extra", template("cluster_extra.tpl")); @@ -63,8 +63,10 @@ $optional_graphs_data = array(); foreach ($optional_graphs as $g) { $optional_graphs_data[$g]['name'] = $g; +# $data->assign("name", $optional_graphs_data[$g]['name']); $optional_graphs_data[$g]['graph_args'] = $graph_args; } + $data->assign('optional_graphs_data', $optional_graphs_data); # @@ -83,6 +85,7 @@ $data->assign("metric_name","$metricname"); $data->assign("sort", $sort); $data->assign("range", $range); +#$data->assign("checked$showhosts", "checked"); $showhosts_levels = array( 2 => array('checked'=>'', 'name'=>'Auto'), @@ -92,6 +95,7 @@ $showhosts_levels[$showhosts]['checked'] = 'checked'; $data->assign("showhosts_levels", $showhosts_levels); + $sorted_hosts = array(); $down_hosts = array(); $percent_hosts = array(); Modified: branches/monitor-web-2.0/conf/view_default.json =================================================================== --- branches/monitor-web-2.0/conf/view_default.json 2010-11-26 07:25:38 UTC (rev 2367) +++ branches/monitor-web-2.0/conf/view_default.json 2010-11-29 03:44:03 UTC (rev 2368) @@ -1,4 +1 @@ -{"view_name":"default", - "items": [ - ] -} +{"view_name":"default","items":[{"hostname":"localhost.localdomain","graph":"cpu_report"}],"view_type":"standard"} \ No newline at end of file Modified: branches/monitor-web-2.0/conf.php.in =================================================================== --- branches/monitor-web-2.0/conf.php.in 2010-11-26 07:25:38 UTC (rev 2367) +++ branches/monitor-web-2.0/conf.php.in 2010-11-29 03:44:03 UTC (rev 2368) @@ -5,10 +5,6 @@ # include_once "./version.php"; -$GLOBALS['ganglia_dir'] = dirname(__FILE__); -$GLOBALS['views_dir'] = $GLOBALS['ganglia_dir'] . '/conf'; -$GLOBALS['conf_dir'] = $GLOBALS['ganglia_dir'] . '/conf'; - # # The name of the directory in "./templates" which contains the # templates that you want to use. Templates are like a skin for the @@ -25,9 +21,6 @@ $gmetad_root = "@varstatedir@/ganglia"; $rrds = "$gmetad_root/rrds"; -# Where Dwoo (PHP templating engine) store compiled templates -$dwoo_compiled_dir = "$gmetad_root/dwoo"; - # Where to find filter configuration files, if not set filtering # will be disabled #$filter_dir = "$gmetad_root/filters"; @@ -165,8 +158,6 @@ # $time_ranges = array( 'hour'=>3600, - '2hr'=>7200, - '4hr'=>14400, 'day'=>86400, 'week'=>604800, 'month'=>2419200, @@ -176,61 +167,31 @@ # this key must exist in $time_ranges $default_time_range = 'hour'; -# Use graphite -$use_graphite = "no"; -$graphite_url_base = "http://127.0.0.1/render"; -$graphite_rrd_dir = "/opt/graphite/storage/rrd"; - -# One of the bottlenecks is that to get individual metrics we query gmond which -# returns every single host and all the metrics. If you have lots of hosts and lots of -# checks this may be quite heavy so you may want to cache data -define("CACHEDATA", 1); -define("CACHEFILE", $GLOBALS['ganglia_dir'] . "/conf/ganglia_metrics.cache"); -define("CACHETIME", 120); // How long to cache the data in seconds - # # Graph sizes # $graph_sizes = array( 'small'=>array( - 'height'=>65, - 'width'=>200, + 'height'=>40, + 'width'=>130, 'fudge_0'=>0, 'fudge_1'=>0, 'fudge_2'=>0 ), 'medium'=>array( - 'height'=>95, + 'height'=>75, 'width'=>300, 'fudge_0'=>0, 'fudge_1'=>14, 'fudge_2'=>28 ), - - 'large'=>array( - 'height'=>150, - 'width'=>480, + 'large'=>array( + 'height'=>600, + 'width'=>800, 'fudge_0'=>0, 'fudge_1'=>0, 'fudge_2'=>0 ), - - 'xlarge'=>array( - 'height'=>300, - 'width'=>650, - 'fudge_0'=>0, - 'fudge_1'=>0, - 'fudge_2'=>0 - ), - - 'mobile'=>array( - 'height'=>95, - 'width'=>220, - 'fudge_0'=>0, - 'fudge_1'=>0, - 'fudge_2'=>0 - ), - # this was the default value when no other size was provided. 'default'=>array( 'height'=>100, Added: branches/monitor-web-2.0/css/images/ajax-loader.png =================================================================== (Binary files differ) Property changes on: branches/monitor-web-2.0/css/images/ajax-loader.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: branches/monitor-web-2.0/css/images/form-check-off.png =================================================================== (Binary files differ) Property changes on: branches/monitor-web-2.0/css/images/form-check-off.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: branches/monitor-web-2.0/css/images/form-check-on.png =================================================================== (Binary files differ) Property changes on: branches/monitor-web-2.0/css/images/form-check-on.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: branches/monitor-web-2.0/css/images/form-radio-off.png =================================================================== (Binary files differ) Property changes on: branches/monitor-web-2.0/css/images/form-radio-off.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: branches/monitor-web-2.0/css/images/form-radio-on.png =================================================================== (Binary files differ) Property changes on: branches/monitor-web-2.0/css/images/form-radio-on.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: branches/monitor-web-2.0/css/images/icon-search-black.png =================================================================== (Binary files differ) Property changes on: branches/monitor-web-2.0/css/images/icon-search-black.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: branches/monitor-web-2.0/css/images/icons-18-black.png =================================================================== (Binary files differ) Property changes on: branches/monitor-web-2.0/css/images/icons-18-black.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: branches/monitor-web-2.0/css/images/icons-18-white.png =================================================================== (Binary files differ) Property changes on: branches/monitor-web-2.0/css/images/icons-18-white.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: branches/monitor-web-2.0/css/images/icons-36-black.png =================================================================== (Binary files differ) Property changes on: branches/monitor-web-2.0/css/images/icons-36-black.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: branches/monitor-web-2.0/css/images/icons-36-white.png =================================================================== (Binary files differ) Property changes on: branches/monitor-web-2.0/css/images/icons-36-white.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: branches/monitor-web-2.0/css/jquery.mobile-1.0a2.min.css =================================================================== --- branches/monitor-web-2.0/css/jquery.mobile-1.0a2.min.css 2010-11-26 07:25:38 UTC (rev 2367) +++ branches/monitor-web-2.0/css/jquery.mobile-1.0a2.min.css 2010-11-29 03:44:03 UTC (rev 2368) @@ -6,4 +6,4 @@ * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license */ -/*!* jQuery Mobile v1.0a2 * http://jquerymobile.com/ * * Copyright 2010,jQuery Project * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license */ .ui-bar-a{border:1px solid #2A2A2A;background:#111;color:#fff;font-weight:bold;text-shadow:0 -1px 1px #000;background-image:-moz-linear-gradient(top,#3c3c3c,#111);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#3c3c3c),color-stop(1,#111));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#3c3c3c',EndColorStr='#111111')";}.ui-bar-a,.ui-bar-a input,.ui-bar-a select,.ui-bar-a textarea,.ui-bar-a button{font-family:Helvetica,Arial,sans-serif;}.ui-bar-a .ui-link-inherit{color:#fff;}.ui-bar-a .ui-link{color:#7cc4e7;font-weight:bold;}.ui-body-a{border:1px solid #2A2A2A;background:#222;color:#fff;text-shadow:0 1px 0 #000;font-weight:normal;background-image:-moz-linear-gradient(top,#666,#222);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#666),color-stop(1,#222));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#666666',EndColorStr='#222222)')";}.ui-body-a,.ui-body-a input,.ui-body-a select,.ui-body-a textarea,.ui-body-a button{font-family:Helvetica,Arial,sans-serif;}.ui-body-a .ui-link-inherit{color:#fff;}.ui-body-a .ui-link{color:#2489CE;font-weight:bold;}.ui-br{border-bottom:1px solid rgba(130,130,130,.3);}.ui-btn-up-a{border:1px solid #222;background:#333;font-weight:bold;color:#fff;cursor:pointer;text-shadow:0 -1px 1px #000;text-decoration:none;background-image:-moz-linear-gradient(top,#555,#333);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#555),color-stop(1,#333));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#555555',EndColorStr='#333333')";}.ui-btn-up-a a.ui-link-inherit{color:#fff;}.ui-btn-hover-a{border:1px solid #000;background:#444;font-weight:bold;color:#fff;text-shadow:0 -1px 1px #000;text-decoration:none;background-image:-moz-linear-gradient(top,#666,#444);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#666),color-stop(1,#444));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#666666',EndColorStr='#444444')";}.ui-btn-hover-a a.ui-link-inherit{color:#fff;}.ui-btn-down-a{border:1px solid #000;background:#3d3d3d;font-weight:bold;color:#fff;text-shadow:0 -1px 1px #000;background-image:-moz-linear-gradient(top,#333,#5a5a5a);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#333),color-stop(1,#5a5a5a));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#333333',EndColorStr='#5a5a5a')";}.ui-btn-down-a a.ui-link-inherit{color:#fff;}.ui-btn-up-a,.ui-btn-hover-a,.ui-btn-down-a{font-family:Helvetica,Arial,sans-serif;}.ui-bar-b{border:1px solid #456f9a;background:#5e87b0;color:#fff;font-weight:bold;text-shadow:0 -1px 1px #254f7a;background-image:-moz-linear-gradient(top,#81a8ce,#5e87b0);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#81a8ce),color-stop(1,#5e87b0));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#81a8ce',EndColorStr='#5e87b0')";}.ui-bar-b,.ui-bar-b input,.ui-bar-b select,.ui-bar-b textarea,.ui-bar-b button{font-family:Helvetica,Arial,sans-serif;}.ui-bar-b .ui-link-inherit{color:#fff;}.ui-bar-b .ui-link{color:#7cc4e7;font-weight:bold;}.ui-body-b{border:1px solid #C6C6C6;background:#ccc;color:#333;text-shadow:0 1px 0 #fff;font-weight:normal;background-image:-moz-linear-gradient(top,#e6e6e6,#ccc);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#e6e6e6),color-stop(1,#ccc));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#e6e6e6',EndColorStr='#cccccc')";}.ui-body-b,.ui-body-b input,.ui-body-b select,.ui-body-b textarea,.ui-body-b button{font-family:Helvetica,Arial,sans-serif;}.ui-body-b .ui-link-inherit{color:#333;}.ui-body-b .ui-link{color:#2489CE;font-weight:bold;}.ui-btn-up-b{border:1px solid #145072;background:#2567ab;font-weight:bold;color:#fff;cursor:pointer;text-shadow:0 -1px 1px #145072;text-decoration:none;background-image:-moz-linear-gradient(top,#4e89c5,#2567ab);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#5f9cc5),color-stop(1,#396b9e));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#4e89c5',EndColorStr='#2567ab')";}.ui-btn-up-b a.ui-link-inherit{color:#fff;}.ui-btn-hover-b{border:1px solid #00516e;background:#4b88b6;font-weight:bold;color:#fff;text-shadow:0 -1px 1px #014D68;background-image:-moz-linear-gradient(top,#72b0d4,#4b88b6);text-decoration:none;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#72b0d4),color-stop(1,#4b88b6));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#72b0d4',EndColorStr='#4b88b6')";}.ui-btn-hover-b a.ui-link-inherit{color:#fff;}.ui-btn-down-b{border:1px solid #225377;background:#4e89c5;font-weight:bold;color:#fff;text-shadow:0 -1px 1px #225377;background-image:-moz-linear-gradient(top,#396b9e,#4e89c5);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#396b9e),color-stop(1,#4e89c5));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#396b9e',EndColorStr='#4e89c5')";}.ui-btn-down-b a.ui-link-inherit{color:#fff;}.ui-btn-up-b,.ui-btn-hover-b,.ui-btn-down-b{font-family:Helvetica,Arial,sans-serif;}.ui-bar-c{border:1px solid #B3B3B3;background:#e9eaeb;color:#3E3E3E;font-weight:bold;text-shadow:0 1px 1px #fff;background-image:-moz-linear-gradient(top,#f0f0f0,#e9eaeb);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#f0f0f0),color-stop(1,#e9eaeb));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#f0f0f0',EndColorStr='#e9eaeb')";}.ui-bar-c,.ui-bar-c input,.ui-bar-c select,.ui-bar-c textarea,.ui-bar-c button{font-family:Helvetica,Arial,sans-serif;}.ui-body-c{border:1px solid #B3B3B3;color:#333;text-shadow:0 1px 0 #fff;background:#f0f0f0;background-image:-moz-linear-gradient(top,#fff,#f0f0f0);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fff),color-stop(1,#f0f0f0));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#ffffff',EndColorStr='#f0f0f0')";}.ui-body-c,.ui-body-c input,.ui-body-c select,.ui-body-c textarea,.ui-body-c button{font-family:Helvetica,Arial,sans-serif;}.ui-body-c .ui-link-inherit{color:#333;}.ui-body-c .ui-link{color:#2489CE;font-weight:bold;}.ui-btn-up-c{border:1px solid #ccc;background:#eee;font-weight:bold;color:#444;cursor:pointer;text-shadow:0 1px 1px #f6f6f6;text-decoration:none;background-image:-moz-linear-gradient(top,#fdfdfd,#eee);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fdfdfd),color-stop(1,#eee));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#fdfdfd',EndColorStr='#eeeeee')";}.ui-btn-up-c a.ui-link-inherit{color:#2F3E46;}.ui-btn-hover-c{border:1px solid #aaa;background:#f5f5f5;font-weight:bold;color:#111;text-decoration:none;text-shadow:0 1px 1px #fff;background-image:-moz-linear-gradient(top,#fff,#f5f5f5);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fff),color-stop(1,#f5f5f5));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#ffffff',EndColorStr='#f5f5f5')";}.ui-btn-hover-c a.ui-link-inherit{color:#2F3E46;}.ui-btn-down-c{border:1px solid #808080;background:#fdfdfd;font-weight:bold;color:#111;text-shadow:0 1px 1px #fff;background-image:-moz-linear-gradient(top,#eee,#fdfdfd);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#eee),color-stop(1,#fdfdfd));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#eeeeee',EndColorStr='#fdfdfd')";}.ui-btn-down-c a.ui-link-inherit{color:#2F3E46;}.ui-btn-up-c,.ui-btn-hover-c,.ui-btn-down-c{font-family:Helvetica,Arial,sans-serif;}.ui-bar-d{border:1px solid #ccc;background:#bbb;color:#333;text-shadow:0 1px 0 #eee;background-image:-moz-linear-gradient(top,#ddd,#bbb);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#ddd),color-stop(1,#bbb));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#ddd',EndColorStr='#bbb')";}.ui-bar-d,.ui-bar-d input,.ui-bar-d select,.ui-bar-d textarea,.ui-bar-d button{font-family:Helvetica,Arial,sans-serif;}.ui-bar-d .ui-link-inherit{color:#333;}.ui-bar-d .ui-link{color:#2489CE;font-weight:bold;}.ui-body-d{border:1px solid #ccc;color:#333;text-shadow:0 1px 0 #fff;background:#fff;}.ui-body-d,.ui-body-d input,.ui-body-d select,.ui-body-d textarea,.ui-body-d button{font-family:Helvetica,Arial,sans-serif;}.ui-body-d .ui-link-inherit{color:#333;}.ui-body-d .ui-link{color:#2489CE;font-weight:bold;}.ui-btn-up-d{border:1px solid #ccc;background:#fff;font-weight:bold;color:#444;text-decoration:none;text-shadow:0 1px 1px #fff;}.ui-btn-up-d a.ui-link-inherit{color:#333;}.ui-btn-hover-d{border:1px solid #aaa;background:#eee;font-weight:bold;color:#222;cursor:pointer;text-shadow:0 1px 1px #fff;text-decoration:none;background-image:-moz-linear-gradient(top,#fdfdfd,#eee);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fdfdfd),color-stop(1,#eee));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#fdfdfd',EndColorStr='#eeeeee')";}.ui-btn-hover-d a.ui-link-inherit{color:#222;}.ui-btn-down-d{border:1px solid #aaa;background:#fff;font-weight:bold;color:#111;text-shadow:0 1px 1px #fff;background-image:-moz-linear-gradient(top,#eee,#fff);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#eee),color-stop(1,#fff));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#eeeeee',EndColorStr='#ffffff')";}.ui-btn-down-d a.ui-link-inherit{border:1px solid #808080;background:#ced0d2;font-weight:bold;color:#111;text-shadow:none;background-image:-moz-linear-gradient(top,#ccc,#eee);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#ccc),color-stop(1,#eee));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#cccccc',EndColorStr='#eeeeee')";}.ui-btn-up-d,.ui-btn-hover-d,.ui-btn-down-d{font-family:Helvetica,Arial,sans-serif;}.ui-bar-e{border:1px solid #F7C942;background:#fadb4e;color:#333;text-shadow:0 1px 0 #fff;background-image:-moz-linear-gradient(top,#fceda7,#fadb4e);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fceda7),color-stop(1,#fadb4e));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#fceda7',EndColorStr='#fadb4e')";}.ui-bar-e,.ui-bar-e input,.ui-bar-e select,.ui-bar-e textarea,.ui-bar-d button{font-family:Helvetica,Arial,sans-serif;}.ui-bar-e .ui-link-inherit{color:#333;}.ui-bar-e .ui-link{color:#2489CE;font-weight:bold;}.ui-body-e{border:1px solid #F7C942;color:#333;text-shadow:0 1px 0 #fff;background:#faeb9e;background-image:-moz-linear-gradient(top,#fff,#faeb9e);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fff),color-stop(1,#faeb9e));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#ffffff',EndColorStr='#faeb9e')";}.ui-body-e,.ui-body-e input,.ui-body-e select,.ui-body-e textarea,.ui-body-e button{font-family:Helvetica,Arial,sans-serif;}.ui-body-e .ui-link-inherit{color:#333;}.ui-body-e .ui-link{color:#2489CE;font-weight:bold;}.ui-btn-up-e{border:1px solid #F7C942;background:#fadb4e;font-weight:bold;color:#333;cursor:pointer;text-shadow:0 1px 1px #fe3;text-decoration:none;text-shadow:0 1px 0 #fff;background-image:-moz-linear-gradient(top,#fceda7,#fadb4e);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fceda7),color-stop(1,#fadb4e));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#fceda7',EndColorStr='#fadb4e')";}.ui-btn-up-e a.ui-link-inherit{color:#333;}.ui-btn-hover-e{border:1px solid #e79952;background:#fbe26f;font-weight:bold;color:#111;text-decoration:none;text-shadow:0 1px 1px #fff;background-image:-moz-linear-gradient(top,#fcf0b5,#fbe26f);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fcf0b5),color-stop(1,#fbe26f));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#fcf0b5',EndColorStr='#fbe26f')";}.ui-btn-hover-e a.ui-link-inherit{color:#333;}.ui-btn-down-e{border:1px solid #F7C942;background:#fceda7;font-weight:bold;color:#111;text-shadow:0 1px 1px #fff;background-image:-moz-linear-gradient(top,#fadb4e,#fceda7);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fadb4e),color-stop(1,#fceda7));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#fadb4e',EndColorStr='#fceda7')";}.ui-btn-down-e a.ui-link-inherit{color:#333;}.ui-btn-up-e,.ui-btn-hover-e,.ui-btn-down-e{font-family:Helvetica,Arial,sans-serif;}a.ui-link-inherit{text-decoration:none!important;}.ui-btn-active{border:1px solid #155678;background:#4596ce;font-weight:bold;color:#fff;cursor:pointer;text-shadow:0 -1px 1px #145072;text-decoration:none;background-image:-moz-linear-gradient(top,#85bae4,#5393c5);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#85bae4),color-stop(1,#5393c5));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#85bae4',EndColorStr='#5393c5')";}.ui-btn-active a.ui-link-inherit{color:#fff;}.ui-btn-inner{border-top:1px solid #fff;border-color:rgba(255,255,255,.3);}.ui-corner-tl{-moz-border-radius-topleft:.6em;-webkit-border-top-left-radius:.6em;border-top-left-radius:.6em;}.ui-corner-tr{-moz-border-radius-topright:.6em;-webkit-border-top-right-radius:.6em;border-top-right-radius:.6em;}.ui-corner-bl{-moz-border-radius-bottomleft:.6em;-webkit-border-bottom-left-radius:.6em;border-bottom-left-radius:.6em;}.ui-corner-br{-moz-border-radius-bottomright:.6em;-webkit-border-bottom-right-radius:.6em;border-bottom-right-radius:.6em;}.ui-corner-top{-moz-border-radius-topleft:.6em;-webkit-border-top-left-radius:.6em;border-top-left-radius:.6em;-moz-border-radius-topright:.6em;-webkit-border-top-right-radius:.6em;border-top-right-radius:.6em;}.ui-corner-bottom{-moz-border-radius-bottomleft:.6em;-webkit-border-bottom-left-radius:.6em;border-bottom-left-radius:.6em;-moz-border-radius-bottomright:.6em;-webkit-border-bottom-right-radius:.6em;border-bottom-right-radius:.6em;}.ui-corner-right{-moz-border-radius-topright:.6em;-webkit-border-top-right-radius:.6em;border-top-right-radius:.6em;-moz-border-radius-bottomright:.6em;-webkit-border-bottom-right-radius:.6em;border-bottom-right-radius:.6em;}.ui-corner-left{-moz-border-radius-topleft:.6em;-webkit-border-top-left-radius:.6em;border-top-left-radius:.6em;-moz-border-radius-bottomleft:.6em;-webkit-border-bottom-left-radius:.6em;border-bottom-left-radius:.6em;}.ui-corner-all{-moz-border-radius:.6em;-webkit-border-radius:.6em;border-radius:.6em;}.ui-disabled{cursor:default!important;opacity:.3;}.ui-icon{background-image:url(images/icons-18-white.png);background-repeat:no-repeat;background-color:#666;background-color:rgba(0,0,0,.4);-moz-border-radius:9px;-webkit-border-radius:9px;border-radius:9px;}.ui-icon-disc{background-color:#666;background-color:rgba(0,0,0,.3);-moz-border-radius:9px;-webkit-border-radius:9px;border-radius:9px;}.ui-icon-black{background-image:url(images/icons-18-black.png);}.ui-icon-black-disc{background-color:#fff;background-color:rgba(255,255,255,.3);-moz-border-radius:9px;-webkit-border-radius:9px;border-radius:9px;}@media screen and(-webkit-min-device-pixel-ratio:2),screen and(max--moz-device-pixel-ratio:2){.ui-icon{background-image:url(images/icons-36-white.png);background-size:558px 18px;}.ui-icon-black{background-image:url(images/icons-36-black.png);}}.ui-icon-plus{background-position:-0 0;}.ui-icon-minus{background-position:-36px 0;}.ui-icon-delete{background-position:-72px 0;}.ui-icon-arrow-r{background-position:-108px 0;}.ui-icon-arrow-l{background-position:-144px 0;}.ui-icon-arrow-u{background-position:-180px 0;}.ui-icon-arrow-d{background-position:-216px 0;}.ui-icon-check{background-position:-252px 0;}.ui-icon-gear{background-position:-288px 0;}.ui-icon-refresh{background-position:-324px 0;}.ui-icon-forward{background-position:-360px 0;}.ui-icon-back{background-position:-396px 0;}.ui-icon-grid{background-position:-432px 0;}.ui-icon-star{background-position:-468px 0;}.ui-icon-alert{background-position:-504px 0;}.ui-icon-info{background-position:-540px 0;}.ui-icon-checkbox-off,.ui-icon-checkbox-on,.ui-icon-radio-off,.ui-icon-radio-on{background-color:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;background-size:20px 20px;}.ui-icon-checkbox-off{background-image:url(images/form-check-off.png);}.ui-icon-checkbox-on{background-image:url(images/form-check-on.png);}.ui-icon-radio-off{background-image:url(images/form-radio-off.png);}.ui-icon-radio-on{background-image:url(images/form-radio-on.png);}.ui-icon-search{background-image:url(images/icon-search-black.png);background-size:16px 16px;}.ui-icon-loading{background-image:url(images/ajax-loader.png);width:40px;height:40px;-moz-border-radius:20px;-webkit-border-radius:20px;border-radius:20px;background-size:35px 35px;}.ui-btn-corner-tl{-moz-border-radius-topleft:1em;-webkit-border-top-left-radius:1em;border-top-left-radius:1em;}.ui-btn-corner-tr{-moz-border-radius-topright:1em;-webkit-border-top-right-radius:1em;border-top-right-radius:1em;}.ui-btn-corner-bl{-moz-border-radius-bottomleft:1em;-webkit-border-bottom-left-radius:1em;border-bottom-left-radius:1em;}.ui-btn-corner-br{-moz-border-radius-bottomright:1em;-webkit-border-bottom-right-radius:1em;border-bottom-right-radius:1em;}.ui-btn-corner-top{-moz-border-radius-topleft:1em;-webkit-border-top-left-radius:1em;border-top-left-radius:1em;-moz-border-radius-topright:1em;-webkit-border-top-right-radius:1em;border-top-right-radius:1em;}.ui-btn-corner-bottom{-moz-border-radius-bottomleft:1em;-webkit-border-bottom-left-radius:1em;border-bottom-left-radius:1em;-moz-border-radius-bottomright:1em;-webkit-border-bottom-right-radius:1em;border-bottom-right-radius:1em;}.ui-btn-corner-right{-moz-border-radius-topright:1em;-webkit-border-top-right-radius:1em;border-top-right-radius:1em;-moz-border-radius-bottomright:1em;-webkit-border-bottom-right-radius:1em;border-bottom-right-radius:1em;}.ui-btn-corner-left{-moz-border-radius-topleft:1em;-webkit-border-top-left-radius:1em;border-top-left-radius:1em;-moz-border-radius-bottomleft:1em;-webkit-border-bottom-left-radius:1em;border-bottom-left-radius:1em;}.ui-btn-corner-all{-moz-border-radius:1em;-webkit-border-radius:1em;border-radius:1em;}.ui-corner-tl,.ui-corner-tr,.ui-corner-bl,.ui-corner-br,.ui-corner-top,.ui-corner-bottom,.ui-corner-right,.ui-corner-left,.ui-corner-all,.ui-btn-corner-tl,.ui-btn-corner-tr,.ui-btn-corner-bl,.ui-btn-corner-br,.ui-btn-corner-top,.ui-btn-corner-bottom,.ui-btn-corner-right,.ui-btn-corner-left,.ui-btn-corner-all{-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;}.ui-overlay{background:#666;opacity:.5;filter:Alpha(Opacity=50);position:absolute;width:100%;height:100%;}.ui-overlay-shadow{-moz-box-shadow:0 0 12px rgba(0,0,0,.6);-webkit-box-shadow:0 0 12px rgba(0,0,0,.6);box-shadow:0 0 12px rgba(0,0,0,.6);}.ui-shadow{-moz-box-shadow:0 1px 4px rgba(0,0,0,.3);-webkit-box-shadow:0 1px 4px rgba(0,0,0,.3);box-shadow:0 1px 4px rgba(0,0,0,.3);}.ui-bar-a .ui-shadow,.ui-bar-b .ui-shadow,.ui-bar-c .ui-shadow{-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3);}.ui-shadow-inset{-moz-box-shadow:inset 0 1px 4px rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 4px rgba(0,0,0,.2);box-shadow:inset 0 1px 4px rgba(0,0,0,.2);}.ui-icon-shadow{-moz-box-shadow:0 1px 0 rgba(255,255,255,.4);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.4);box-shadow:0 1px 0 rgba(255,255,255,.4);}.ui-focus{outline-width:0;-moz-box-shadow:0 0 12px #387bbe;-webkit-box-shadow:0 0 12px #387bbe;box-shadow:0 0 12px #387bbe;}.ui-mobile-nosupport-boxshadow *{-moz-box-shadow:none!important;-webkit-box-shadow:none!important;box-shadow:none!important;}.ui-mobile-nosupport-boxshadow .ui-focus{outline-width:2px;}.ui-mobile fieldset,.ui-page{padding:0;margin:0;}.ui-mobile a img,.ui-mobile fieldset{border:0;}.ui-mobile-viewport{margin:0;overflow-x:hidden;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;-webkit-tap-highlight-color:rgba(0,0,0,0);}.ui-page{top:0;left:0;width:100%;min-height:100%;position:absolute;display:none;border:0;}.ui-page-active{display:block;overflow:visible;min-height:100%;}.ui-loading .ui-mobile-viewport{overflow:hidden!important;}.ui-loading .ui-loader{display:block;}.ui-loading .ui-page{overflow:hidden;}.ui-loader{display:none;position:absolute;opacity:.85;z-index:10;top:75px;left:50%;width:200px;margin-left:-130px;padding:20px 30px;}.ui-loader h1{font-size:15px;text-align:center;}.ui-loader .ui-icon{position:static;display:block;opacity:.9;margin:0 auto;width:35px;height:35px;background-color:transparent;}.ui-mobile-rendering>*{visibility:hidden;}.ui-bar,.ui-body{position:relative;padding:.4em 15px;overflow:hidden;display:block;clear:both;}.ui-bar{font-size:16px;margin:0;}.ui-bar h1,.ui-bar h2,.ui-bar h3,.ui-bar h4,.ui-bar h5,.ui-bar h6{margin:0;padding:0;font-size:16px;display:inline-block;}.ui-header,.ui-footer{display:block;}.ui-page .ui-header,.ui-page .ui-footer{position:relative;}.ui-header .ui-btn-left{position:absolute;left:10px;top:.4em;}.ui-header .ui-title,.ui-footer .ui-title{text-align:center;font-size:16px;display:block;margin:.6em 90px .8em;padding:0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;outline:0!important;}.ui-header .ui-btn-right{position:absolute;right:10px;top:.4em;}.ui-content{border-width:0;overflow:visible;overflow-x:hidden;padding:15px;}.ui-page-fullscreen .ui-content{padding:0;}.ui-icon{width:18px;height:18px;}.ui-fullscreen img{max-width:100%;}.ui-nojs{position:absolute;left:-9999px;}.spin{-webkit-transform:rotate(360deg);-webkit-animation-name:spin;-webkit-animation-duration:1s;-webkit-animation-iteration-count:infinite;}@-webkit-keyframes spin{from{-webkit-transform:rotate(0deg);}to{-webkit-transform:rotate(360deg);}}.in,.out{-webkit-animation-timing-function:ease-in-out;-webkit-animation-duration:350ms;}.slide.in{-webkit-transform:translateX(0);-webkit-animation-name:slideinfromright;}.slide.out{-webkit-transform:translateX(-100%);-webkit-animation-name:slideouttoleft;}.slide.in.reverse{-webkit-transform:translateX(0);-webkit-animation-name:slideinfromleft;}.slide.out.reverse{-webkit-transform:translateX(100%);-webkit-animation-name:slideouttoright;}.slideup.in{-webkit-transform:translateY(0);-webkit-animation-name:slideinfrombottom;z-index:10;}.slideup.out{-webkit-animation-name:dontmove;z-index:0;}.slideup.out.reverse{-webkit-transform:translateY(100%);z-index:10;-webkit-animation-name:slideouttobottom;}.slideup.in.reverse{z-index:0;-webkit-animation-name:dontmove;}.slidedown.in{-webkit-transform:translateY(0);-webkit-animation-name:slideinfromtop;z-index:10;}.slidedown.out{-webkit-animation-name:dontmove;z-index:0;}.slidedown.out.reverse{-webkit-transform:translateY(-100%);z-index:10;-webkit-animation-name:slideouttotop;}.slidedown.in.reverse{z-index:0;-webkit-animation-name:dontmove;}@-webkit-keyframes slideinfromright{from{-webkit-transform:translateX(100%);}to{-webkit-transform:translateX(0);}}@-webkit-keyframes slideinfromleft{from{-webkit-transform:translateX(-100%);}to{-webkit-transform:translateX(0);}}@-webkit-keyframes slideouttoleft{from{-webkit-transform:translateX(0);}to{-webkit-transform:translateX(-100%);}}@-webkit-keyframes slideouttoright{from{-webkit-transform:translateX(0);}to{-webkit-transform:translateX(100%);}}@-webkit-keyframes slideinfromtop{from{-webkit-transform:translateY(-100%);}to{-webkit-transform:translateY(0);}}@-webkit-keyframes slideinfrombottom{from{-webkit-transform:translateY(100%);}to{-webkit-transform:translateY(0);}}@-webkit-keyframes slideouttobottom{from{-webkit-transform:translateY(0);}to{-webkit-transform:translateY(100%);}}@-webkit-keyframes slideouttotop{from{-webkit-transform:translateY(0);}to{-webkit-transform:translateY(-100%);}}@-webkit-keyframes fadein{from{opacity:0;}to{opacity:1;}}@-webkit-keyframes fadeout{from{opacity:1;}to{opacity:0;}}.fade.in{opacity:1;z-index:10;-webkit-animation-name:fadein;}.fade.out{z-index:0;}.ui-mobile-viewport-transitioning{-webkit-perspective:1000;position:absolute;}.ui-mobile-viewport-transitioning,.ui-mobile-viewport-transitioning .ui-page{width:100%;height:100%;overflow:hidden;}.flip{-webkit-animation-duration:.65s;-webkit-backface-visibility:hidden;-webkit-transform:translateX(0);}.flip.in{-webkit-transform:rotateY(0) scale(1);-webkit-animation-name:flipinfromleft;}.flip.out{-webkit-transform:rotateY(-180deg) scale(.8);-webkit-animation-name:flipouttoleft;}.flip.in.reverse{-webkit-transform:rotateY(0) scale(1);-webkit-animation-name:flipinfromright;}.flip.out.reverse{-webkit-transform:rotateY(180deg) scale(.8);-webkit-animation-name:flipouttoright;}@-webkit-keyframes flipinfromright{from{-webkit-transform:rotateY(-180deg) scale(.8);}to{-webkit-transform:rotateY(0) scale(1);}}@-webkit-keyframes flipinfromleft{from{-webkit-transform:rotateY(180deg) scale(.8);}to{-webkit-transform:rotateY(0) scale(1);}}@-webkit-keyframes flipouttoleft{from{-webkit-transform:rotateY(0) scale(1);}to{-webkit-transform:rotateY(-180deg) scale(.8);}}@-webkit-keyframes flipouttoright{from{-webkit-transform:rotateY(0) scale(1);}to{-webkit-transform:rotateY(180deg) scale(.8);}}@-webkit-keyframes dontmove{from{opacity:1;}to{opacity:1;}}.pop{-webkit-transform-origin:50% 50%;}.pop.in{-webkit-transform:scale(1);opacity:1;-webkit-animation-name:popin;z-index:10;}.pop.out.reverse{-webkit-transform:scale(.2);opacity:0;-webkit-animation-name:popout;z-index:10;}.pop.in.reverse{z-index:0;-webkit-animation-name:dontmove;}@-webkit-keyframes popin{from{-webkit-transform:scale(.2);opacity:0;}to{-webkit-transform:scale(1);opacity:1;}}@-webkit-keyframes popout{from{-webkit-transform:scale(1);opacity:1;}to{-webkit-transform:scale(.2);opacity:0;}}.ui-grid-a,.ui-grid-b,.ui-grid-c,.ui-grid-d{overflow:hidden;}.ui-block-a,.ui-block-b,.ui-block-c,.ui-block-d,.ui-block-e{margin:0;padding:0;border:0;float:left;}.ui-grid-a .ui-block-a,.ui-grid-a .ui-block-b{width:50%;}.ui-grid-a .ui-block-a{clear:left;}.ui-grid-b .ui-block-a,.ui-grid-b .ui-block-b,.ui-grid-b .ui-block-c{width:33.333%;}.ui-grid-b .ui-block-a{clear:left;}.ui-grid-c .ui-block-a,.ui-grid-c .ui-block-b,.ui-grid-c .ui-block-c,.ui-grid-c .ui-block-d{width:25%;}.ui-grid-c .ui-block-a{clear:left;}.ui-grid-d .ui-block-a,.ui-grid-d .ui-block-b,.ui-grid-d .ui-block-c,.ui-grid-d .ui-block-d,.ui-grid-d .ui-block-e{width:20%;}.ui-grid-d .ui-block-a{clear:left;}.ui-header,.ui-footer,.ui-page-fullscreen .ui-header,.ui-page-fullscreen .ui-footer{position:absolute;overflow:hidden;width:100%;border-left-width:0;border-right-width:0;}.ui-header-fixed,.ui-footer-fixed{z-index:1000;-webkit-transform:translateZ(0);}.ui-footer-duplicate,.ui-page-fullscreen .ui-fixed-inline{display:none;}.ui-page-fullscreen .ui-header,.ui-page-fullscreen .ui-footer{opacity:.9;}.ui-navbar{overflow:hidden;}.ui-navbar ul,.ui-navbar-expanded ul{list-style:none;padding:0;margin:0;position:relative;display:block;border:0;}.ui-navbar-collapsed ul{float:left;width:75%;margin-right:-2px;}.ui-navbar-collapsed .ui-navbar-toggle{float:left;width:25%;}.ui-navbar li.ui-navbar-truncate{position:absolute;left:-99999px;top:-99999px;}.ui-navbar li .ui-btn,.ui-navbar .ui-navbar-toggle .ui-btn{display:block;font-size:12px;text-align:center;margin:0;outline:none;border-right-width:0;}.ui-navbar li .ui-btn{margin-right:-1px;}.ui-navbar li .ui-btn:last-child{margin-right:0;}.ui-header .ui-navbar li .ui-btn,.ui-header .ui-navbar .ui-navbar-toggle .ui-btn,.ui-footer .ui-navbar li .ui-btn,.ui-footer .ui-navbar .ui-navbar-toggle .ui-btn{border-top-width:0;border-bottom-width:0;}.ui-navbar .ui-btn-inner{padding-left:2px;padding-right:2px;}.ui-navbar-noicons li .ui-btn .ui-btn-inner,.ui-navbar-noicons .ui-navbar-toggle .ui-btn-inner{padding-top:.8em;padding-bottom:.9em;}.ui-navbar-expanded .ui-btn{margin:0;font-size:14px;}.ui-navbar-expanded .ui-btn-inner{padding-left:5px;padding-right:5px;}.ui-navbar-expanded .ui-btn-icon-top .ui-btn-inner{padding:45px 5px 15px;text-align:center;}.ui-navbar-expanded .ui-btn-icon-top .ui-icon{top:15px;}.ui-navbar-expanded .ui-btn-icon-bottom .ui-btn-inner{padding:15px 5px 45px;text-align:center;}.ui-navbar-expanded .ui-btn-icon-bottom .ui-icon{bottom:15px;}.ui-navbar-expanded li .ui-btn .ui-btn-inner{min-height:2.5em;}.ui-navbar-expanded .ui-navbar-noicons .ui-btn .ui-btn-inner{padding-top:1.8em;padding-bottom:1.9em;}.ui-btn{display:block;text-align:center;cursor:pointer;position:relative;margin:.5em 5px;padding:0;}.ui-btn:focus,.ui-btn a:focus{outline:none;}.ui-header .ui-btn,.ui-footer .ui-btn,.ui-bar .ui-btn{display:inline-block;font-size:13px;margin:0;}.ui-btn-inline{display:inline-block;}.ui-btn-inner{padding:.6em 25px;display:block;height:100%;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;position:relative;}.ui-header .ui-btn-inner,.ui-footer .ui-btn-inner,.ui-bar .ui-btn-inner{padding:.4em 8px .5em;}.ui-btn-icon-notext{display:inline-block;width:20px;height:20px;padding:1px 0 1px 2px;text-indent:-9999px;}.ui-btn-icon-notext .ui-btn-inner{padding:0;}.ui-btn-icon-notext .ui-btn-text{position:absolute;left:-999px;}.ui-btn-icon-left .ui-btn-inner{padding-left:33px;}.ui-header .ui-btn-icon-left .ui-btn-inner,.ui-footer .ui-btn-icon-left .ui-btn-inner,.ui-bar .ui-btn-icon-left .ui-btn-inner{padding-left:27px;}.ui-btn-icon-right .ui-btn-inner{padding-right:33px;}.ui-header .ui-btn-icon-right .ui-btn-inner,.ui-footer .ui-btn-icon-right .ui-btn-inner,.ui-bar .ui-btn-icon-right .ui-btn-inner{padding-right:27px;}.ui-btn-icon-top .ui-btn-inner{padding-top:33px;}.ui-header .ui-btn-icon-top .ui-btn-inner,.ui-footer .ui-btn-icon-top .ui-btn-inner,.ui-bar .ui-btn-icon-top .ui-btn-inner{padding-top:27px;}.ui-btn-icon-bottom .ui-btn-inner{padding-bottom:33px;}.ui-header .ui-btn-icon-bottom .ui-btn-inner,.ui-footer .ui-btn-icon-bottom .ui-btn-inner,.ui-bar .ui-btn-icon-bottom .ui-btn-inner{padding-bottom:27px;}.ui-btn-icon-notext .ui-icon{display:block;}.ui-btn-icon-left .ui-icon,.ui-btn-icon-right .ui-icon{position:absolute;top:50%;margin-top:-9px;}.ui-btn-icon-top .ui-icon,.ui-btn-icon-bottom .ui-icon{position:absolute;left:50%;margin-left:-9px;}.ui-btn-icon-left .ui-icon{left:10px;}.ui-btn-icon-right .ui-icon{right:10px;}.ui-header .ui-btn-icon-left .ui-icon,.ui-footer .ui-btn-icon-left .ui-icon,.ui-bar .ui-btn-icon-left .ui-icon{left:4px;}.ui-header .ui-btn-icon-right .ui-icon,.ui-footer .ui-btn-icon-right .ui-icon,.ui-bar .ui-btn-icon-right .ui-icon{right:4px;}.ui-header .ui-btn-icon-top .ui-icon,.ui-footer .ui-btn-icon-top .ui-icon,.ui-bar .ui-btn-icon-top .ui-icon{top:4px;}.ui-header .ui-btn-icon-bottom .ui-icon,.ui-footer .ui-btn-icon-bottom .ui-icon,.ui-bar .ui-btn-icon-bottom .ui-icon{bottom:4px;}.ui-btn-icon-top .ui-icon{top:5px;}.ui-btn-icon-bottom .ui-icon{bottom:5px;}.ui-btn-hidden{position:absolute;left:-9999px;}.ui-collapsible-contain{margin:.5em 0;}.ui-collapsible-heading{font-size:16px;display:block;margin:0 -8px;padding:0;border-width:0 0 1px 0;position:relative;}.ui-collapsible-heading a{text-align:left;margin:0;}.ui-collapsible-heading a .ui-btn-inner{padding-left:40px;}.ui-collapsible-heading a span.ui-btn{position:absolute;left:6px;top:50%;margin:-12px 0 0 0;width:20px;height:20px;padding:1px 0 1px 2px;text-indent:-9999px;}.ui-collapsible-heading a span.ui-btn .ui-btn-inner{padding:0;}.ui-collapsible-heading a span.ui-btn .ui-icon{left:0;margin-top:-10px;}.ui-collapsible-heading-status{position:absolute;left:-99999px;}.ui-collapsible-content{display:block;padding:10px 0 10px 8px;}.ui-collapsible-content-collapsed{display:none;}.ui-collapsible-set{margin:.5em 0;}.ui-collapsible-set .ui-collapsible-contain{margin:-1px 0 0;}.ui-controlgroup,fieldset.ui-controlgroup{padding:0;margin:.5em 0 1em;}.ui-bar .ui-controlgroup{margin:0 .3em;}.ui-controlgroup-label{font-size:16px;line-height:1.4;font-weight:normal;margin:0 0 .3em;}.ui-controlgroup-controls{display:block;width:95%;}.ui-controlgroup li{list-style:none;}.ui-controlgroup-vertical .ui-btn,.ui-controlgroup-vertical .ui-checkbox,.ui-controlgroup-vertical .ui-radio{margin:0;border-bottom-width:0;}.ui-controlgroup-vertical .ui-controlgroup-last{border-bottom-width:1px;}.ui-controlgroup-horizontal{padding:0;}.ui-controlgroup-horizontal .ui-btn,.ui-controlgroup-horizontal .ui-checkbox,.ui-controlgroup-horizontal .ui-radio{margin:0 -5px 0 0;display:inline-block;}.ui-controlgroup-horizontal .ui-checkbox .ui-btn,.ui-controlgroup-horizontal .ui-radio .ui-btn,.ui-controlgroup-horizontal .ui-checkbox:last-child,.ui-controlgroup-horizontal .ui-radio:last-child{margin-right:0;}.ui-controlgroup-horizontal .ui-controlgroup-last{margin-right:0;}.ui-controlgroup .ui-checkbox label,.ui-controlgroup .ui-radio label{font-size:16px;}.min-width-480px .ui-controlgroup-label{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0;}.min-width-480px .ui-controlgroup-controls{width:60%;display:inline-block;}.ui-dialog .ui-header,.ui-dialog .ui-content,.ui-dialog .ui-footer{margin:15px;position:relative;}.ui-dialog .ui-header,.ui-dialog .ui-footer{z-index:10;width:auto;}.ui-dialog .ui-content,.ui-dialog .ui-footer{margin-top:-15px;}.ui-checkbox,.ui-radio{position:relative;margin:.2em 0 .5em;}.ui-checkbox .ui-btn,.ui-radio .ui-btn{margin:0;text-align:left;}.ui-checkbox .ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-btn-icon-left .ui-btn-inner{padding-left:45px;}.ui-checkbox .ui-btn-icon-right .ui-btn-inner,.ui-radio .ui-btn-icon-right .ui-btn-inner{padding-right:45px;}.ui-checkbox .ui-btn-icon-left .ui-icon,.ui-radio .ui-btn-icon-left .ui-icon{left:15px;}.ui-checkbox .ui-btn-icon-right .ui-icon,.ui-radio .ui-btn-icon-right .ui-icon{right:15px;}.ui-checkbox input,.ui-radio input{position:absolute;left:20px;top:50%;width:10px;height:10px;margin:-5px 0 0 0;outline:0!important;}.ui-field-contain{background:none;padding:1.5em 0;margin:0;border-bottom-width:1px;overflow:visible;}.ui-field-contain:first-child{border-top-width:0;}@media screen and(max-width:480px){.ui-field-contain{border-width:0;padding:0;margin:1em 0;}}.ui-select{display:block;}.ui-select select{position:absolute;left:-99999px;}.ui-select .ui-btn-icon-right .ui-btn-inner{padding-right:45px;}.ui-select .ui-btn-icon-right .ui-icon{right:15px;}label.ui-select{font-size:16px;line-height:1.4;font-weight:normal;margin:0 0 .3em;display:block;}.ui-listbox{position:absolute;padding:0;z-index:100!important;width:80%;max-width:350px;padding:6px;}.ui-listbox .ui-listview{margin:0;}.ui-listbox-hidden{top:-999999px;left:-99999px;}.ui-listbox-screen{position:absolute;top:0;left:0;width:100%;height:100%;z-index:99;}.ui-screen-hidden,.ui-listbox-list .ui-li .ui-icon{display:none;}.ui-listbox-list .ui-btn-active .ui-icon{display:block;}.ui-helper-hidden,.ui-mobile .ui-content-hidden{display:none;}.min-width-480px label.ui-select{display:inline-block;width:20%;margin:0 2% 0 0;}.min-width-480px .ui-select{width:60%;display:inline-block;}label.ui-input-text{font-size:16px;line-height:1.4;display:block;font-weight:normal;margin:0 0 .3em;}input.ui-input-text,textarea.ui-input-text{background-image:none;padding:.4em;line-height:1.4;font-size:16px;display:block;width:95%;}textarea.ui-input-text{height:50px;-webkit-transition:height 200ms linear;-moz-transition:height 200ms linear;-o-transition:height 200ms linear;transition:height 200ms linear;}.ui-input-search{padding:0 30px;width:77%;background-position:8px 50%;background-repeat:no-repeat;position:relative;}.ui-input-search input.ui-input-text{border:none;width:98%;padding:.4em 0;margin:0;display:block;background:transparent none;outline:0!important;}.ui-input-search .ui-input-clear{position:absolute;right:2px;top:50%;margin-top:-12px;}.ui-input-search .ui-input-clear-hidden{display:none;}.min-width-480px label.ui-input-text{vertical-align:top;}.min-width-480px label.ui-input-text{display:inline-block;width:20%;margin:0 2% 0 0;}.min-width-480px input.ui-input-text,.min-width-480px textarea.ui-input-text,.min-width-480px .ui-input-search{width:60%;display:inline-block;}.min-width-480px .ui-input-search{width:50%;}.ui-listview{margin:0;counter-reset:listnumbering;}.ui-content .ui-listview{margin:-15px;}.ui-content .ui-listview-inset{margin:1em 0;}.ui-listview,.ui-li{list-style:none;padding:0;zoom:1;}.ui-li{display:block;margin:0;position:relative;overflow:hidden;text-align:left;border-width:0;border-top-width:1px;}.ui-li .ui-btn-text{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;}.ui-li-divider,.ui-li-static{padding:.5em 15px;font-size:14px;font-weight:bold;counter-reset:listnumbering;}ol.ui-listview .ui-link-inherit:before,.ui-li-dec{font-size:.8em;display:inline-block;padding-right:.3em;font-weight:normal;counter-increment:listnumbering;content:counter(listnumbering) ". ";}ol.ui-listview .ui-li-jsnumbering:before{content:""!important;}.ui-listview-inset .ui-li{border-right-width:1px;border-left-width:1px;}.ui-li:last-child{border-bottom-width:1px;}.ui-li .ui-btn-inner{display:block;position:relative;padding:.7em 75px .7em 15px;}.ui-li-has-thumb .ui-btn-inner{min-height:60px;padding-left:100px;}.ui-li-has-icon .ui-btn-inner{min-height:20px;padding-left:40px;}.ui-li-heading{font-size:16px;font-weight:bold;display:block;margin:.6em 0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;}.ui-li-desc{font-size:12px;font-weight:normal;display:block;margin:-.5em 0 .6em;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;}.ui-li-thumb,.ui-li-icon{position:absolute;left:1px;top:0;max-height:80px;max-width:80px;}.ui-li-icon{max-height:40px;max-width:40px;left:10px;top:.9em;}.ui-li-thumb,.ui-li-icon,.ui-li-content{float:left;margin-right:10px;}.ui-li-aside{float:right;width:50%;text-align:right;margin:.3em 0;}.min-width-480px .ui-li-aside{width:45%;}.ui-li-has-alt .ui-btn-inner{padding-right:95px;}.ui-li-count{position:absolute;font-size:11px;font-weight:bold;padding:.2em .5em;top:50%;margin-top:-.9em;right:38px;}.ui-li-divider .ui-li-count{right:10px;}.ui-li-has-alt .ui-li-count{right:55px;}.ui-li-link-alt{position:absolute;width:40px;height:100%;border-width:0;border-left-width:1px;top:0;right:0;margin:0;padding:0;}.ui-li-link-alt .ui-btn{overflow:hidden;position:absolute;right:8px;top:50%;margin:-11px 0 0 0;border-bottom-width:1px;}.ui-li-link-alt .ui-btn-inner{padding:0;position:static;}.ui-li-link-alt .ui-btn .ui-icon{right:50%;margin-right:-9px;}.ui-listview-filter{border-width:0;overflow:hidden;margin:-15px -15px 15px -15px;}.ui-listview-filter .ui-input-search{margin:5px;width:auto;display:block;}@media only screen and(min-device-width:768px) and(max-device-width:1024px){.ui-li .ui-btn-text{overflow:visible;}}label.ui-slider{display:block;}input.ui-slider-input,.min-width-480px input.ui-slider-input{display:inline-block;width:40px;}select.ui-slider-switch{display:none;}div.ui-slider{position:relative;display:inline-block;overflow:visible;height:15px;padding:0;margin:0 2% 0 20px;top:4px;width:66%;}a.ui-slider-handle{position:absolute;z-index:10;top:50%;width:28px;height:28px;margin-top:-15px;margin-left:-15px;}a.ui-slider-handle .ui-btn-inner{padding-left:0;padding-right:0;}.min-width-480px label.ui-slider{display:inline-block;width:20%;margin:0 2% 0 0;}.min-width-480px div.ui-slider{width:45%;}div.ui-slider-switch{height:32px;overflow:hidden;margin-left:0;}div.ui-slider-inneroffset{margin-left:50%;position:absolute;top:1px;height:100%;width:50%;}div.ui-slider-handle-snapping{-webkit-transition:left 100ms linear;}div.ui-slider-labelbg{position:absolute;top:0;margin:0;border-width:0;}div.ui-slider-switch div.ui-slider-labelbg-a{width:60%;height:100%;left:0;}div.ui-slider-switch div.ui-slider-labelbg-b{width:60%;height:100%;right:0;}.ui-slider-switch-a div.ui-slider-labelbg-a,.ui-slider-switch-b div.ui-slider-labelbg-b{z-index:1;}.ui-slider-switch-a div.ui-slider-labelbg-b,.ui-slider-switch-b div.ui-slider-labelbg-a{z-index:10;}div.ui-slider-switch a.ui-slider-handle{z-index:20;width:101%;height:32px;margin-top:-18px;margin-left:-101%;}span.ui-slider-label{width:100%;position:absolute;height:32px;font-size:16px;text-align:center;line-height:2;background:none;border-color:transparent;}span.ui-slider-label-a{left:-100%;margin-right:-1px;}span.ui-slider-label-b{right:-100%;margin-left:-1px;} +/*!* jQuery Mobile v1.0a2 * http://jquerymobile.com/ * * Copyright 2010,jQuery Project * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license */ .ui-bar-a{border:1px solid #2A2A2A;background:#111;color:#fff;font-weight:bold;text-shadow:0 -1px 1px #000;background-image:-moz-linear-gradient(top,#3c3c3c,#111);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#3c3c3c),color-stop(1,#111));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#3c3c3c',EndColorStr='#111111')";}.ui-bar-a,.ui-bar-a input,.ui-bar-a select,.ui-bar-a textarea,.ui-bar-a button{font-family:Helvetica,Arial,sans-serif;}.ui-bar-a .ui-link-inherit{color:#fff;}.ui-bar-a .ui-link{color:#7cc4e7;font-weight:bold;}.ui-body-a{border:1px solid #2A2A2A;background:#222;color:#fff;text-shadow:0 1px 0 #000;font-weight:normal;background-image:-moz-linear-gradient(top,#666,#222);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#666),color-stop(1,#222));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#666666',EndColorStr='#222222)')";}.ui-body-a,.ui-body-a input,.ui-body-a select,.ui-body-a textarea,.ui-body-a button{font-family:Helvetica,Arial,sans-serif;}.ui-body-a .ui-link-inherit{color:#fff;}.ui-body-a .ui-link{color:#2489CE;font-weight:bold;}.ui-br{border-bottom:1px solid rgba(130,130,130,.3);}.ui-btn-up-a{border:1px solid #222;background:#333;font-weight:bold;color:#fff;cursor:pointer;text-shadow:0 -1px 1px #000;text-decoration:none;background-image:-moz-linear-gradient(top,#555,#333);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#555),color-stop(1,#333));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#555555',EndColorStr='#333333')";}.ui-btn-up-a a.ui-link-inherit{color:#fff;}.ui-btn-hover-a{border:1px solid #000;background:#444;font-weight:bold;color:#fff;text-shadow:0 -1px 1px #000;text-decoration:none;background-image:-moz-linear-gradient(top,#666,#444);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#666),color-stop(1,#444));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#666666',EndColorStr='#444444')";}.ui-btn-hover-a a.ui-link-inherit{color:#fff;}.ui-btn-down-a{border:1px solid #000;background:#3d3d3d;font-weight:bold;color:#fff;text-shadow:0 -1px 1px #000;background-image:-moz-linear-gradient(top,#333,#5a5a5a);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#333),color-stop(1,#5a5a5a));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#333333',EndColorStr='#5a5a5a')";}.ui-btn-down-a a.ui-link-inherit{color:#fff;}.ui-btn-up-a,.ui-btn-hover-a,.ui-btn-down-a{font-family:Helvetica,Arial,sans-serif;}.ui-bar-b{border:1px solid #456f9a;background:#5e87b0;color:#fff;font-weight:bold;text-shadow:0 -1px 1px #254f7a;background-image:-moz-linear-gradient(top,#81a8ce,#5e87b0);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#81a8ce),color-stop(1,#5e87b0));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#81a8ce',EndColorStr='#5e87b0')";}.ui-bar-b,.ui-bar-b input,.ui-bar-b select,.ui-bar-b textarea,.ui-bar-b button{font-family:Helvetica,Arial,sans-serif;}.ui-bar-b .ui-link-inherit{color:#fff;}.ui-bar-b .ui-link{color:#7cc4e7;font-weight:bold;}.ui-body-b{border:1px solid #C6C6C6;background:#ccc;color:#333;text-shadow:0 1px 0 #fff;font-weight:normal;background-image:-moz-linear-gradient(top,#e6e6e6,#ccc);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#e6e6e6),color-stop(1,#ccc));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#e6e6e6',EndColorStr='#cccccc')";}.ui-body-b,.ui-body-b input,.ui-body-b select,.ui-body-b textarea,.ui-body-b button{font-family:Helvetica,Arial,sans-serif;}.ui-body-b .ui-link-inherit{color:#333;}.ui-body-b .ui-link{color:#2489CE;font-weight:bold;}.ui-btn-up-b{border:1px solid #145072;background:#2567ab;font-weight:bold;color:#fff;cursor:pointer;text-shadow:0 -1px 1px #145072;text-decoration:none;background-image:-moz-linear-gradient(top,#4e89c5,#2567ab);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#5f9cc5),color-stop(1,#396b9e));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#4e89c5',EndColorStr='#2567ab')";}.ui-btn-up-b a.ui-link-inherit{color:#fff;}.ui-btn-hover-b{border:1px solid #00516e;background:#4b88b6;font-weight:bold;color:#fff;text-shadow:0 -1px 1px #014D68;background-image:-moz-linear-gradient(top,#72b0d4,#4b88b6);text-decoration:none;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#72b0d4),color-stop(1,#4b88b6));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#72b0d4',EndColorStr='#4b88b6')";}.ui-btn-hover-b a.ui-link-inherit{color:#fff;}.ui-btn-down-b{border:1px solid #225377;background:#4e89c5;font-weight:bold;color:#fff;text-shadow:0 -1px 1px #225377;background-image:-moz-linear-gradient(top,#396b9e,#4e89c5);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#396b9e),color-stop(1,#4e89c5));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#396b9e',EndColorStr='#4e89c5')";}.ui-btn-down-b a.ui-link-inherit{color:#fff;}.ui-btn-up-b,.ui-btn-hover-b,.ui-btn-down-b{font-family:Helvetica,Arial,sans-serif;}.ui-bar-c{border:1px solid #B3B3B3;background:#e9eaeb;color:#3E3E3E;font-weight:bold;text-shadow:0 1px 1px #fff;background-image:-moz-linear-gradient(top,#f0f0f0,#e9eaeb);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#f0f0f0),color-stop(1,#e9eaeb));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#f0f0f0',EndColorStr='#e9eaeb')";}.ui-bar-c,.ui-bar-c input,.ui-bar-c select,.ui-bar-c textarea,.ui-bar-c button{font-family:Helvetica,Arial,sans-serif;}.ui-body-c{border:1px solid #B3B3B3;color:#333;text-shadow:0 1px 0 #fff;background:#f0f0f0;background-image:-moz-linear-gradient(top,#fff,#f0f0f0);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fff),color-stop(1,#f0f0f0));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#ffffff',EndColorStr='#f0f0f0')";}.ui-body-c,.ui-body-c input,.ui-body-c select,.ui-body-c textarea,.ui-body-c button{font-family:Helvetica,Arial,sans-serif;}.ui-body-c .ui-link-inherit{color:#333;}.ui-body-c .ui-link{color:#2489CE;font-weight:bold;}.ui-btn-up-c{border:1px solid #ccc;background:#eee;font-weight:bold;color:#444;cursor:pointer;text-shadow:0 1px 1px #f6f6f6;text-decoration:none;background-image:-moz-linear-gradient(top,#fdfdfd,#eee);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fdfdfd),color-stop(1,#eee));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#fdfdfd',EndColorStr='#eeeeee')";}.ui-btn-up-c a.ui-link-inherit{color:#2F3E46;}.ui-btn-hover-c{border:1px solid #aaa;background:#f5f5f5;font-weight:bold;color:#111;text-decoration:none;text-shadow:0 1px 1px #fff;background-image:-moz-linear-gradient(top,#fff,#f5f5f5);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fff),color-stop(1,#f5f5f5));-ms-filter:"progi... [truncated message content] |
From: <vv...@us...> - 2010-11-29 04:14:05
|
Revision: 2369 http://ganglia.svn.sourceforge.net/ganglia/?rev=2369&view=rev Author: vvuksan Date: 2010-11-29 04:13:58 +0000 (Mon, 29 Nov 2010) Log Message: ----------- Apply changes from r2334, 2336 and 2339 Modified Paths: -------------- branches/monitor-web-2.0/ganglia.php branches/monitor-web-2.0/host_view.php branches/monitor-web-2.0/index.php Modified: branches/monitor-web-2.0/ganglia.php =================================================================== --- branches/monitor-web-2.0/ganglia.php 2010-11-29 03:44:03 UTC (rev 2368) +++ branches/monitor-web-2.0/ganglia.php 2010-11-29 04:13:58 UTC (rev 2369) @@ -99,7 +99,7 @@ break; case "METRICS": - $metricname = $attrs['NAME']; + $metricname = rawurlencode($attrs['NAME']); $metrics[$sourcename][$metricname] = $attrs; break; @@ -164,7 +164,7 @@ break; case "METRIC": - $metricname = $attrs['NAME']; + $metricname = rawurlencode($attrs['NAME']); $metrics[$hostname][$metricname] = $attrs; break; @@ -198,7 +198,7 @@ $index_array['cluster'][$hostname] = $cluster_name; case "METRIC": - $metricname = $attrs['NAME']; + $metricname = rawurlencode($attrs['NAME']); if ( $metricname != $hostname ) $index_array['metrics'][$metricname][] = $hostname; break; @@ -267,7 +267,7 @@ break; case "METRIC": - $metricname = $attrs['NAME']; + $metricname = rawurlencode($attrs['NAME']); $metrics[$metricname] = $attrs; break; Modified: branches/monitor-web-2.0/host_view.php =================================================================== --- branches/monitor-web-2.0/host_view.php 2010-11-29 03:44:03 UTC (rev 2368) +++ branches/monitor-web-2.0/host_view.php 2010-11-29 04:13:58 UTC (rev 2369) @@ -73,7 +73,7 @@ # No reason to go on if this node is down. if ($hosts_down) { - $tpl->printToScreen(); + $dwoo->output($tpl, $data); return; } Modified: branches/monitor-web-2.0/index.php =================================================================== --- branches/monitor-web-2.0/index.php 2010-11-29 03:44:03 UTC (rev 2368) +++ branches/monitor-web-2.0/index.php 2010-11-29 04:13:58 UTC (rev 2369) @@ -14,7 +14,6 @@ } catch (Exception $e) { - global $dwoo_compiled_dir; print "<H4>There was an error initializing the Dwoo PHP Templating Engine: ". $e->getMessage() . "<br><br>The compile directory should be owned and writable by the apache user.</H4>"; exit; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vv...@us...> - 2010-11-29 17:42:21
|
Revision: 2371 http://ganglia.svn.sourceforge.net/ganglia/?rev=2371&view=rev Author: vvuksan Date: 2010-11-29 17:42:15 +0000 (Mon, 29 Nov 2010) Log Message: ----------- Revert dwoo changed meta view Modified Paths: -------------- branches/monitor-web-2.0/meta_view.php branches/monitor-web-2.0/templates/default/meta_view.tpl Modified: branches/monitor-web-2.0/meta_view.php =================================================================== --- branches/monitor-web-2.0/meta_view.php 2010-11-29 16:14:05 UTC (rev 2370) +++ branches/monitor-web-2.0/meta_view.php 2010-11-29 17:42:15 UTC (rev 2371) @@ -1,26 +1,15 @@ <?php /* $Id$ */ -$tpl = new TemplatePower( template("meta_view.tpl") ); -$tpl->prepare(); +$tpl = new Dwoo_Template_File( template("meta_view.tpl") ); +$data = new Dwoo_Data(); discover_filters(); -foreach ($filter_defs as $filter_def) -{ - $filter_shortname = $filter_def["shortname"]; - $tpl->newBlock("filter_block"); - $tpl->assign("filter_shortname", $filter_shortname); - $tpl->assign("filter_name", $filter_def["name"]); +if ( !empty($filter_defs) ) { + $data->assign("filters", $filter_defs); + $data->assign("choose_filter", $choose_filter); + } - foreach ($filter_def["choices"] as $choice) - { - $tpl->newBlock("filter_choice_block"); - $tpl->assign("filter_choice", $choice); - if($choose_filter[$filter_shortname] == $choice) - $tpl->assign("selected", "selected"); - } -} - # Find the private clusters. But no one is emabarrassed in the # control room (public only!). if ( $context != "control" ) { Modified: branches/monitor-web-2.0/templates/default/meta_view.tpl =================================================================== --- branches/monitor-web-2.0/templates/default/meta_view.tpl 2010-11-29 16:14:05 UTC (rev 2370) +++ branches/monitor-web-2.0/templates/default/meta_view.tpl 2010-11-29 17:42:15 UTC (rev 2371) @@ -1,101 +1,107 @@ +{if isset($filters)} <TABLE BORDER="0" WIDTH="100%"> <tr> - <!-- START BLOCK : filter_block --> + {foreach $filters filter} <td> - <b>{filter_name}</b> - <SELECT NAME="choose_filter[{filter_shortname}]" OnChange="ganglia_form.submit();"> + <b>{$filter.filter_name}</b> + <SELECT NAME="choose_filter[{$filter.filter_shortname}]" OnChange="ganglia_form.submit();"> <OPTION NAME=""></OPTION> - <!-- START BLOCK : filter_choice_block --> - <OPTION NAME="{filter_choice}" {selected}>{filter_choice}</OPTION> - <!-- END BLOCK : filter_choice_block --> + {foreach $filter.choice choice} + {if $choose_filter.$filter.filter_shortname == $choice} + <OPTION NAME="{$choice}" selected>{$choice}</OPTION> + {else} + <OPTION NAME="{$choice}">{$choice}</OPTION> + {/if} + {/foreach} </SELECT> </TD> - <!-- END BLOCK : filter_block --> + {/foreach} </TR> </TABLE> +{/if} <TABLE BORDER="0" WIDTH="100%"> -<!-- START BLOCK : source_info --> +{foreach $sources source} <TR> - <TD CLASS={class} COLSPAN=3> - <A HREF="{url}"><STRONG>{name}</STRONG></A>{alt_view} + <TD CLASS={$source.class} COLSPAN=3> + <A HREF="{$source.url}"><STRONG>{$source.name}</STRONG></A> {$source.alt_view} </TD> </TR> <TR> -<!-- START BLOCK : public --> +{if isset($source.public)} <TD ALIGN="LEFT" VALIGN="TOP"> <table cellspacing=1 cellpadding=1 width="100%" border=0> - <tr><td>CPUs Total:</td><td align=left><B>{cpu_num}</B></td></tr> - <tr><td width="80%">Hosts up:</td><td align=left><B>{num_nodes}</B></td></tr> - <tr><td>Hosts down:</td><td align=left><B>{num_dead_nodes}</B></td></tr> + <tr><td>CPUs Total:</td><td align=left><B>{$source.cpu_num}</B></td></tr> + <tr><td width="80%">Hosts up:</td><td align=left><B>{$source.num_nodes}</B></td></tr> + <tr><td>Hosts down:</td><td align=left><B>{$source.num_dead_nodes}</B></td></tr> <tr><td> </td></tr> - <tr><td class=footer colspan=2>{cluster_load}</td></tr> - <tr><td class=footer colspan=2>{cluster_util}</td></tr> - <tr><td class=footer colspan=2>{localtime}</td></tr> + <tr><td class=footer colspan=2>{$source.cluster_load}</td></tr> + <tr><td class=footer colspan=2>{$source.cluster_util}</td></tr> + <tr><td class=footer colspan=2>{$source.localtime}</td></tr> </table> </TD> -<!-- START BLOCK : self_summary_graphs --> +{if isset($source.self_summary_graphs)} <TD ALIGN="RIGHT" VALIGN="TOP"> - <A HREF="{url}"> - <IMG SRC="./graph.php?{graph_url}&g=load_report&z=medium" - ALT="{name} LOAD" BORDER="0"> + <A HREF="./graph.php?{$source.graph_url}&g=load_report&z=large"> + <IMG SRC="./graph.php?{$source.graph_url}&g=load_report&z=medium" + ALT="{$source.name} LOAD" BORDER="0"> </A><BR> - <A HREF="{url}"> - <IMG SRC="./graph.php?{graph_url}&g=cpu_report&z=medium" - ALT="{name} CPU" BORDER="0"> + <A HREF="./graph.php?{$source.graph_url}&g=cpu_report&z=large"> + <IMG SRC="./graph.php?{$source.graph_url}&g=cpu_report&z=medium" + ALT="{$source.name} CPU" BORDER="0"> </A> </TD> <TD VALIGN="TOP"> - <A HREF="{url}"> - <IMG SRC="./graph.php?{graph_url}&g=mem_report&z=medium" - ALT="{name} MEM" BORDER="0"> + <A HREF="./graph.php?{$source.graph_url}&g=mem_report&z=large"> + <IMG SRC="./graph.php?{$source.graph_url}&g=mem_report&z=medium" + ALT="{$source.name} MEM" BORDER="0"> </A><BR> - <A HREF="{url}"> - <IMG SRC="./graph.php?{graph_url}&g=network_report&z=medium" - ALT="{name} NETWORK" BORDER="0"> + <A HREF="./graph.php?{$source.graph_url}&g=network_report&z=large"> + <IMG SRC="./graph.php?{$source.graph_url}&g=network_report&z=medium" + ALT="{$source.name} NETWORK" BORDER="0"> </A> </TD> - <!-- END BLOCK : self_summary_graphs --> +{/if} - <!-- START BLOCK : summary_graphs --> +{if isset($source.summary_graphs)} <TD ALIGN="RIGHT" VALIGN="TOP"> - <A HREF="{url}"> - <IMG SRC="./graph.php?{graph_url}&g=load_report&z=medium&r={range}" - ALT="{name} LOAD" BORDER="0"> + <A HREF="{$source.url}"> + <IMG SRC="./graph.php?{$source.graph_url}&g=load_report&z=medium&r={$source.range}" + ALT="{$source.name} LOAD" BORDER="0"> </A> </TD> <TD VALIGN="TOP"> - <A HREF="{url}"> - <IMG SRC="./graph.php?{graph_url}&g=mem_report&z=medium&r={range}" - ALT="{name} MEM" BORDER="0"> + <A HREF="{$source.url}"> + <IMG SRC="./graph.php?{$source.graph_url}&g=mem_report&z=medium&r={$source.range}" + ALT="{$source.name} MEM" BORDER="0"> </A> </TD> - <!-- END BLOCK : summary_graphs --> -<!-- END BLOCK : public --> +{/if} +{/if} -<!-- START BLOCK : private --> +{if isset($source.private)} <TD ALIGN="LEFT" VALIGN="TOP"> <table cellspacing=1 cellpadding=1 width="100%" border=0> - <tr><td>CPUs Total:</td><td align=left><B>{cpu_num}</B></td></tr> - <tr><td width="80%">Nodes:</td><td align=left><B>{num_nodes}</B></td></tr> + <tr><td>CPUs Total:</td><td align=left><B>{$source.cpu_num}</B></td></tr> + <tr><td width="80%">Nodes:</td><td align=left><B>{$source.num_nodes}</B></td></tr> <tr><td> </td></tr> - <tr><td class=footer colspan=2>{localtime}</td></tr> + <tr><td class=footer colspan=2>{$source.localtime}</td></tr> </table> </TD> <TD COLSPAN=2 align=center>This is a private cluster.</TD> -<!-- END BLOCK : private --> +{/if} </TR> -<!-- END BLOCK : source_info --> +{/foreach} </TABLE> -<!-- START BLOCK : show_snapshot --> +{if isset($show_snapshot)} <TABLE BORDER="0" WIDTH="100%"> <TR> - <TD COLSPAN="2" CLASS="title">Snapshot of the {self} | + <TD COLSPAN="2" CLASS="title">Snapshot of the {$self} | <FONT SIZE="-1"><A HREF="./cluster_legend.html">Legend</A></FONT> </TD> </TR> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ber...@us...> - 2010-11-30 00:15:44
|
Revision: 2375 http://ganglia.svn.sourceforge.net/ganglia/?rev=2375&view=rev Author: bernardli Date: 2010-11-30 00:15:37 +0000 (Tue, 30 Nov 2010) Log Message: ----------- Cleanup :) Modified Paths: -------------- branches/monitor-web-2.0/conf.php.in branches/monitor-web-2.0/ganglia.php branches/monitor-web-2.0/graph.d/metric.php branches/monitor-web-2.0/graph.php branches/monitor-web-2.0/index.php branches/monitor-web-2.0/templates/default/cluster_view.tpl branches/monitor-web-2.0/templates/default/host_view.tpl Modified: branches/monitor-web-2.0/conf.php.in =================================================================== --- branches/monitor-web-2.0/conf.php.in 2010-11-29 22:59:25 UTC (rev 2374) +++ branches/monitor-web-2.0/conf.php.in 2010-11-30 00:15:37 UTC (rev 2375) @@ -9,7 +9,6 @@ $GLOBALS['views_dir'] = $GLOBALS['ganglia_dir'] . '/conf'; $GLOBALS['conf_dir'] = $GLOBALS['ganglia_dir'] . '/conf'; - # # The name of the directory in "./templates" which contains the # templates that you want to use. Templates are like a skin for the @@ -49,7 +48,7 @@ $graphdir='./graph.d'; # Display statistical values on RRD graphs; i.e.: average, min, max -$graphreport_stats = false; +$graphreport_stats = true; # # If you want to grab data from a different ganglia source specify it here. @@ -147,18 +146,18 @@ # # Default metric # -$default_metric = "cpu_report"; +$default_metric = "load_one"; # # remove the domainname from the FQDN hostnames in graphs # (to help with long hostnames in small charts) # -$strip_domainname = "yes"; +$strip_domainname = false; # # Optional summary graphs # -$optional_graphs = array(); +#$optional_graphs = array('packet'); # # Time ranges @@ -177,23 +176,18 @@ # this key must exist in $time_ranges $default_time_range = 'hour'; - -// Use graphite +# Use graphite $use_graphite = "no"; -// $graphite_url_base = "http://127.0.0.1/render"; -// $graphite_rrd_dir = "/opt/graphite/storage/rrd"; - -// One of the bottlenecks is that to get individual metrics we query gmond which -// returns every single host and all the metrics. If you have lots of hosts and lots of -// checks this may be quite heavy so you may want to cache data +# One of the bottlenecks is that to get individual metrics we query gmond which +# returns every single host and all the metrics. If you have lots of hosts and lots of +# checks this may be quite heavy so you may want to cache data define("CACHEDATA", 1); -define("CACHEFILE", $GLOBALS['ganglia_dir'] . "/conf/ganglia_metrics.cache"); -define("CACHETIME", 1200); // How long to cache the data in seconds +define("CACHEFILE", $GLOBALS['ganglia_dir'] . "/conf/ganglia_metrics.cache"); +define("CACHETIME", 1200); // How long to cache the data in seconds - # # Graph sizes # @@ -246,7 +240,6 @@ 'fudge_2'=>0 ) - ); $default_graph_size = 'default'; $graph_sizes_keys = array_keys( $graph_sizes ); Modified: branches/monitor-web-2.0/ganglia.php =================================================================== --- branches/monitor-web-2.0/ganglia.php 2010-11-29 22:59:25 UTC (rev 2374) +++ branches/monitor-web-2.0/ganglia.php 2010-11-30 00:15:37 UTC (rev 2375) @@ -33,7 +33,6 @@ $version = array(); # The web frontend version, from conf.php. -#$version["webfrontend"] = "$majorversion.$minorversion.$microversion"; $version["webfrontend"] = "$ganglia_version"; # Get rrdtool version @@ -209,7 +208,6 @@ } - function start_cluster_summary ($parser, $tagname, $attrs) { global $metrics, $cluster, $self, $grid; Modified: branches/monitor-web-2.0/graph.d/metric.php =================================================================== --- branches/monitor-web-2.0/graph.d/metric.php 2010-11-29 22:59:25 UTC (rev 2374) +++ branches/monitor-web-2.0/graph.d/metric.php 2010-11-30 00:15:37 UTC (rev 2375) @@ -107,14 +107,14 @@ $rrdtool_graph['lower-limit'] = $min; if ($vlabel) { - // We should set $vlabel, even if it isn't used for spacing - // and alignment reasons. This is mostly for aesthetics + // We should set $vlabel **even if it isn't used** for spacing + // and alignment reasons. This is mostly for aesthetics. $temp_vlabel = trim($vlabel); $rrdtool_graph['vertical-label'] = strlen($temp_vlabel) ? $temp_vlabel : ' '; } else { - $rrdtool_graph['vertical-label'] = ' '; + $rrdtool_graph['vertical-label'] = $metricname; } //# the actual graph... Modified: branches/monitor-web-2.0/graph.php =================================================================== --- branches/monitor-web-2.0/graph.php 2010-11-29 22:59:25 UTC (rev 2374) +++ branches/monitor-web-2.0/graph.php 2010-11-30 00:15:37 UTC (rev 2375) @@ -358,7 +358,7 @@ } -#if ($debug) { error_log("Final rrdtool command: $command"); } +if ($debug) { error_log("Final rrdtool command: $command"); } # Did we generate a command? Run it. if($command) { Modified: branches/monitor-web-2.0/index.php =================================================================== --- branches/monitor-web-2.0/index.php 2010-11-29 22:59:25 UTC (rev 2374) +++ branches/monitor-web-2.0/index.php 2010-11-30 00:15:37 UTC (rev 2375) @@ -19,7 +19,7 @@ exit; } -# Usefull for addons. +# Useful for addons. $GHOME = "."; if ($context == "meta" or $context == "control") Modified: branches/monitor-web-2.0/templates/default/cluster_view.tpl =================================================================== --- branches/monitor-web-2.0/templates/default/cluster_view.tpl 2010-11-29 22:59:25 UTC (rev 2374) +++ branches/monitor-web-2.0/templates/default/cluster_view.tpl 2010-11-30 00:15:37 UTC (rev 2375) @@ -16,7 +16,7 @@ <tr><td colspan=2>Avg Utilization (last {$range}):<br> <b>{$cluster_util}</b></td></tr> <tr><td colspan=2>Localtime:<br> <b>{$localtime}</b></td></tr> </table> -<!-- INCLUDE BLOCK : extra --> + {if isset($extra)} {include(file="$extra")} {/if} @@ -40,12 +40,11 @@ <IMG BORDER=0 ALT="{$cluster} NETWORK" SRC="./graph.php?{$graph_args}&g=network_report&z=medium"> </A> -<!-- START BLOCK : optional_graphs --> + {foreach $optional_graphs_data graph} <A HREF="./graph_all_periods.php?{$graph.graph_args}&g={$graph.name}_report&z=large"> <IMG BORDER=0 ALT="{$cluster} {$graph.name}" SRC="./graph.php?{$graph.graph_args}&g={$graph.name}_report&z=medium"> </A> -<!-- END BLOCK : optional_graphs --> {/foreach} </TD> </TR> Modified: branches/monitor-web-2.0/templates/default/host_view.tpl =================================================================== --- branches/monitor-web-2.0/templates/default/host_view.tpl 2010-11-29 22:59:25 UTC (rev 2374) +++ branches/monitor-web-2.0/templates/default/host_view.tpl 2010-11-30 00:15:37 UTC (rev 2375) @@ -98,12 +98,10 @@ <TD COLSPAN="2" CLASS=title>Time and String Metrics</TD> </TR> -<!-- START BLOCK : string_metric_info --> {foreach $s_metrics_data s_metric} <TR> <TD CLASS=footer WIDTH="30%">{$s_metric.name}</TD><TD>{$s_metric.value}</TD> </TR> -<!-- END BLOCK : string_metric_info --> {/foreach} <TR><TD> </TD></TR> @@ -112,17 +110,14 @@ <TD COLSPAN=2 CLASS=title>Constant Metrics</TD> </TR> -<!-- START BLOCK : const_metric_info --> {foreach $c_metrics_data c_metric} <TR> <TD CLASS=footer WIDTH="30%">{$c_metric.name}</TD><TD>{$c_metric.value}</TD> </TR> -<!-- END BLOCK : const_metric_info --> {/foreach} </TABLE> <HR> -<!-- INCLUDE BLOCK : extra --> {if isset($extra)} {include(file="$extra")} {/if} @@ -186,7 +181,6 @@ <TD> {foreach $g_metrics_group_data group g_metrics} -<!-- START BLOCK : vol_group_info --> <A HREF="javascript:;" ONMOUSEDOWN="javascript:toggleLayer('{$group}');" TITLE="Toggle {$group} metrics group on/off" NAME="{$group}"> <TABLE BORDER="0" WIDTH="100%"> <TR> @@ -198,7 +192,6 @@ </A> <DIV ID="{$group}"> <TABLE><TR> -<!-- START BLOCK : vol_metric_info --> {foreach $g_metrics["metrics"] g_metric} <TD> <a name=metric_{$g_metric.metric_name}> @@ -209,11 +202,9 @@ </TD> {$g_metric.new_row} {/foreach} -<!-- END BLOCK : vol_metric_info --> </TR> </TABLE> </DIV> -<!-- END BLOCK : vol_group_info --> {/foreach} </TD> </TR> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vv...@us...> - 2010-11-30 22:04:46
|
Revision: 2380 http://ganglia.svn.sourceforge.net/ganglia/?rev=2380&view=rev Author: vvuksan Date: 2010-11-30 22:04:39 +0000 (Tue, 30 Nov 2010) Log Message: ----------- Fixes for mobile view Modified Paths: -------------- branches/monitor-web-2.0/mobile.php branches/monitor-web-2.0/views-mob.php Modified: branches/monitor-web-2.0/mobile.php =================================================================== --- branches/monitor-web-2.0/mobile.php 2010-11-30 21:46:03 UTC (rev 2379) +++ branches/monitor-web-2.0/mobile.php 2010-11-30 22:04:39 UTC (rev 2380) @@ -52,28 +52,5 @@ </div><!-- /content --> </div><!-- /page --> - - -<!-- Start of second page --> -<div data-role="page" id="bar"> - - <div data-role="header"> - <h1>Bar</h1> - </div><!-- /header --> - - <div data-role="content"> - <p>I'm first in the source order so I'm shown as the page.</p> - <p><a href="#jqm-home">Back to foo</a></p> - </div><!-- /content --> - - <div data-role="footer"> - <div data-role="navbar"> - <ul> - <li><a href="a.html" class="ui-btn-active">One</a></li> - <li><a href="b.html">Two</a></li> - </ul> - </div><!-- /navbar --> - </div><!-- /footer --> -</div><!-- /page --> </body> </html> Modified: branches/monitor-web-2.0/views-mob.php =================================================================== --- branches/monitor-web-2.0/views-mob.php 2010-11-30 21:46:03 UTC (rev 2379) +++ branches/monitor-web-2.0/views-mob.php 2010-11-30 22:04:39 UTC (rev 2380) @@ -265,6 +265,8 @@ $range_menu = ""; + $range = $_GET['r']; + foreach ($context_ranges as $v) { $url=rawurlencode($v); if ($v == $range) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ber...@us...> - 2010-12-01 00:04:58
|
Revision: 2381 http://ganglia.svn.sourceforge.net/ganglia/?rev=2381&view=rev Author: bernardli Date: 2010-11-30 23:12:08 +0000 (Tue, 30 Nov 2010) Log Message: ----------- Add configurable option $show_cores for turning on/off display of Cores/CPUs in load_report; vvuksan mentioned that recent machines w/ 12+ cores can easily drown out load stats and thus this option is turned off by default. Modified Paths: -------------- branches/monitor-web-2.0/conf.php.in branches/monitor-web-2.0/graph.d/load_report.php Modified: branches/monitor-web-2.0/conf.php.in =================================================================== --- branches/monitor-web-2.0/conf.php.in 2010-11-30 22:04:39 UTC (rev 2380) +++ branches/monitor-web-2.0/conf.php.in 2010-11-30 23:12:08 UTC (rev 2381) @@ -118,6 +118,11 @@ $cpu_num_color = "FF0000"; $num_nodes_color = "00FF00"; +# +# Display number of cores in LOAD report graph +# +$show_cores = false; + # Other colors $jobstart_color = "ff3300"; Modified: branches/monitor-web-2.0/graph.d/load_report.php =================================================================== --- branches/monitor-web-2.0/graph.d/load_report.php 2010-11-30 22:04:39 UTC (rev 2380) +++ branches/monitor-web-2.0/graph.d/load_report.php 2010-11-30 23:12:08 UTC (rev 2381) @@ -14,6 +14,7 @@ $rrd_dir, $size, $strip_domainname, + $show_cores, $graphreport_stats; if ($strip_domainname) { @@ -93,16 +94,20 @@ } } - if ( $graphreport_stats ) { - $series .= "CDEF:cpun_pos=cpu_num,0,LT,0,cpu_num,IF " - . "VDEF:cpun_last=cpun_pos,LAST " - . "VDEF:cpun_min=cpun_pos,MINIMUM " - . "VDEF:cpun_avg=cpun_pos,AVERAGE " - . "VDEF:cpun_max=cpun_pos,MAXIMUM " - . "GPRINT:'cpun_last':' ${space1}Now\:%6.1lf%s' " - . "GPRINT:'cpun_min':'Min\:%6.1lf%s${eol1}' " - . "GPRINT:'cpun_avg':'${space2}Avg\:%6.1lf%s' " - . "GPRINT:'cpun_max':'Max\:%6.1lf%s\\l' "; + if ( $show_cores ) { + $series .="LINE2:'cpu_num'#$cpu_num_color:'Cores\\g' "; + + if ( $graphreport_stats ) { + $series .= "CDEF:cpun_pos=cpu_num,0,LT,0,cpu_num,IF " + . "VDEF:cpun_last=cpun_pos,LAST " + . "VDEF:cpun_min=cpun_pos,MINIMUM " + . "VDEF:cpun_avg=cpun_pos,AVERAGE " + . "VDEF:cpun_max=cpun_pos,MAXIMUM " + . "GPRINT:'cpun_last':' ${space1}Now\:%6.1lf%s' " + . "GPRINT:'cpun_min':'Min\:%6.1lf%s${eol1}' " + . "GPRINT:'cpun_avg':'${space2}Avg\:%6.1lf%s' " + . "GPRINT:'cpun_max':'Max\:%6.1lf%s\\l' "; + } } $series .="LINE2:'proc_run'#$proc_run_color:'Procs\\g' "; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vv...@us...> - 2010-12-03 22:19:11
|
Revision: 2387 http://ganglia.svn.sourceforge.net/ganglia/?rev=2387&view=rev Author: vvuksan Date: 2010-12-03 22:19:04 +0000 (Fri, 03 Dec 2010) Log Message: ----------- Tons of mobile view improvements Modified Paths: -------------- branches/monitor-web-2.0/cache.php branches/monitor-web-2.0/cluster_view.php branches/monitor-web-2.0/conf/default.json branches/monitor-web-2.0/graph_all_periods.php branches/monitor-web-2.0/host_view.php branches/monitor-web-2.0/js/ganglia.js branches/monitor-web-2.0/mobile.php branches/monitor-web-2.0/templates/default/cluster_view.tpl branches/monitor-web-2.0/templates/default/header.tpl Modified: branches/monitor-web-2.0/cache.php =================================================================== --- branches/monitor-web-2.0/cache.php 2010-12-01 06:54:50 UTC (rev 2386) +++ branches/monitor-web-2.0/cache.php 2010-12-03 22:19:04 UTC (rev 2387) @@ -22,7 +22,6 @@ if ( $debug == 1 ) { echo("DEBUG: Querying GMond for new data\n"); } - include_once $GLOBALS['ganglia_dir'] . "/conf.php"; # Set up for cluster summary $context = "index_array"; include_once $GLOBALS['ganglia_dir'] . "/functions.php"; Modified: branches/monitor-web-2.0/cluster_view.php =================================================================== --- branches/monitor-web-2.0/cluster_view.php 2010-12-01 06:54:50 UTC (rev 2386) +++ branches/monitor-web-2.0/cluster_view.php 2010-12-03 22:19:04 UTC (rev 2387) @@ -53,10 +53,51 @@ $data->assign("cluster", $clustername); + +$graph_args = "c=$cluster_url&$get_metric_string&st=$cluster[LOCALTIME]"; + +$optional_reports = ""; + +#################################################################################### +# Let's find out what optional reports are included +# First we find out what the default (site-wide) reports are then look +# for host specific included or excluded reports +#################################################################################### +$default_reports = array("included_reports" => array(), "excluded_reports" => array()); +if ( is_file($GLOBALS['conf_dir'] . "/default.json") ) { + $default_reports = array_merge($default_reports,json_decode(file_get_contents($GLOBALS['conf_dir'] . "/default.json"), TRUE)); +} + +$cluster_file = $GLOBALS['conf_dir'] . "/cluster_" . $clustername . ".json"; +$override_reports = array("included_reports" => array(), "excluded_reports" => array()); +if ( is_file($cluster_file) ) { + $override_reports = array_merge($override_reports, json_decode(file_get_contents($cluster_file), TRUE)); +} + +# Merge arrays +$reports["included_reports"] = array_merge( $default_reports["included_reports"] , $override_reports["included_reports"]); +$reports["excluded_reports"] = array_merge($default_reports["excluded_reports"] , $override_reports["excluded_reports"]); + +# Remove duplicates +$reports["included_reports"] = array_unique($reports["included_reports"]); +$reports["excluded_reports"] = array_unique($reports["excluded_reports"]); + +foreach ( $reports["included_reports"] as $index => $report_name ) { + if ( ! in_array( $report_name, $reports["excluded_reports"] ) ) { + $optional_reports .= "<a name=metric_" . $report_name . "> + <A HREF=\"./graph_all_periods.php?$graph_args&g=" . $report_name . "&z=large&c=$cluster_url\"> + <IMG BORDER=0 ALT=\"$cluster_url\" SRC=\"./graph.php?$graph_args&g=" . $report_name ."&z=medium&c=$cluster_url\"></A> +"; + } + +} + +$data->assign("optional_reports", $optional_reports); + + # # Summary graphs # -$graph_args = "c=$cluster_url&$get_metric_string&st=$cluster[LOCALTIME]"; $data->assign("graph_args", $graph_args); if (!isset($optional_graphs)) $optional_graphs = array(); Modified: branches/monitor-web-2.0/conf/default.json =================================================================== --- branches/monitor-web-2.0/conf/default.json 2010-12-01 06:54:50 UTC (rev 2386) +++ branches/monitor-web-2.0/conf/default.json 2010-12-03 22:19:04 UTC (rev 2387) @@ -1,3 +1,3 @@ { - "included_reports": ["load_report","mem_report","cpu_report","network_report","packet_report"] + "included_reports": ["load_report","mem_report","cpu_report","network_report"] } Modified: branches/monitor-web-2.0/graph_all_periods.php =================================================================== --- branches/monitor-web-2.0/graph_all_periods.php 2010-12-01 06:54:50 UTC (rev 2386) +++ branches/monitor-web-2.0/graph_all_periods.php 2010-12-03 22:19:04 UTC (rev 2387) @@ -1,10 +1,25 @@ +<!DOCTYPE html> <html> <head> -<title>Ganglia: Metric <?php echo $_GET['g']; ?> for <?php echo $_GET['h'] ?></title> +<title>Ganglia: Metric <?php if (isset($_GET['g'])) echo $_GET['g']; else echo $_GET['m']; ?></title> </head> +<style> +.ui-mobile .ganglia-mobile { background: #e5e5e5 url(../images/jqm-sitebg.png) top center repeat-x; } +</style> +</head> <body> <?php +if ( isset($_GET['mobile'])) { +?> + <div data-role="page" class="ganglia-mobile" id="view-home"> + <div data-role="header"> + <h3><?php if (isset($_GET['g'])) echo $_GET['g']; else echo $_GET['m']; ?></h3> + </div> + <div data-role="content"> +<?php +} + $query_string = ""; # build a query string but drop r and z since those designate time window and size @@ -13,19 +28,28 @@ $query_string .= "&$key=$value"; } +if ( isset($_GET['mobile'])) { + $largesize = "mobile"; + $xlargesize = "mobile"; +} else { + $largesize = "large"; + $xlargesize = "xlarge"; +} ?> <b>Host: </b><?php echo $_GET['h'] ?> <b>Metric/Graph: </b><?php if (isset($_GET['g'])) echo $_GET['g']; else echo $_GET['m']; ?> <br /> - -<img src="graph.php?r=hour&z=large<?php echo $query_string ?>"> -<img src="graph.php?r=day&z=large<?php echo $query_string ?>"> +<img src="graph.php?r=hour&z=<?php print $largesize . $query_string ?>"> +<img src="graph.php?r=day&z=<?php print $largesize . $query_string ?>"> <p /> -<img src="graph.php?r=week&z=large<?php echo $query_string ?>"> -<img src="graph.php?r=month&z=large<?php echo $query_string ?>"> +<img src="graph.php?r=week&z=<?php print $largesize . $query_string ?>"> +<img src="graph.php?r=month&z=<?php print $largesize . $query_string ?>"> <!--- Scale the yearly image to 100% width ---> -<img width=100% src="graph.php?r=year&z=extralarge<?php echo $query_string ?>"> +<img width=100% src="graph.php?r=year&z=<?php print $xlargesize . $query_string ?>"> + + + </body> </html> Modified: branches/monitor-web-2.0/host_view.php =================================================================== --- branches/monitor-web-2.0/host_view.php 2010-12-01 06:54:50 UTC (rev 2386) +++ branches/monitor-web-2.0/host_view.php 2010-12-03 22:19:04 UTC (rev 2387) @@ -22,14 +22,12 @@ # First we find out what the default (site-wide) reports are then look # for host specific included or excluded reports #################################################################################### -$conf_dir = "./conf"; - $default_reports = array("included_reports" => array(), "excluded_reports" => array()); -if ( is_file($conf_dir . "/default.json") ) { - $default_reports = array_merge($default_reports,json_decode(file_get_contents($conf_dir . "/default.json"), TRUE)); +if ( is_file($GLOBALS['conf_dir'] . "/default.json") ) { + $default_reports = array_merge($default_reports,json_decode(file_get_contents($GLOBALS['conf_dir'] . "/default.json"), TRUE)); } -$host_file = $conf_dir . "/host_" . $hostname . ".json"; +$host_file = $GLOBALS['conf_dir'] . "/host_" . $hostname . ".json"; $override_reports = array("included_reports" => array(), "excluded_reports" => array()); if ( is_file($host_file) ) { $override_reports = array_merge($override_reports, json_decode(file_get_contents($host_file), TRUE)); Modified: branches/monitor-web-2.0/js/ganglia.js =================================================================== --- branches/monitor-web-2.0/js/ganglia.js 2010-12-01 06:54:50 UTC (rev 2386) +++ branches/monitor-web-2.0/js/ganglia.js 2010-12-03 22:19:04 UTC (rev 2387) @@ -3,6 +3,7 @@ $("#tabs").tabs(); $( "#range_menu" ).buttonset(); $( "#sort_menu" ).buttonset(); + $( "#mobile_view_link").button(); jQuery('#metric-search input[name="q"]').liveSearch({url: 'search.php?q=', typeDelay: 800}); $( "#datepicker-cs" ).datepicker({ showOn: "button", Modified: branches/monitor-web-2.0/mobile.php =================================================================== --- branches/monitor-web-2.0/mobile.php 2010-12-01 06:54:50 UTC (rev 2386) +++ branches/monitor-web-2.0/mobile.php 2010-12-03 22:19:04 UTC (rev 2387) @@ -3,54 +3,119 @@ include_once("./conf.php"); include_once("./functions.php"); +// Load the metric caching code +require_once('./cache.php'); + ?> <!DOCTYPE html> <html> <head> <title>Ganglia Mobile</title> -<link rel="stylesheet" href="http://code.jquery.com/mobile/1.0a2/jquery.mobile-1.0a2.min.css" /> -<script src="http://code.jquery.com/jquery-1.4.4.min.js"></script> -<script src="http://code.jquery.com/mobile/1.0a2/jquery.mobile-1.0a2.min.js"></script> +<link rel="stylesheet" href="css/jquery.mobile-1.0a2.min.css" /> +<script src="js/jquery-1.4.4.min.js"></script> +<script src="js/jquery.mobile-1.0a2.min.js"></script> <style> -.ui-mobile #jqm-home { background: #e5e5e5 url(../images/jqm-sitebg.png) top center repeat-x; } -.ui-mobile #jqm-homeheader { padding: 55px 25px 0; text-align: center } -.ui-mobile #jqm-homeheader h1 { margin: 0 0 10px; } -.ui-mobile #jqm-homeheader p { margin: 0; } -.ui-mobile #jqm-version { text-indent: -99999px; background: url(../images/version.png) top right no-repeat; width: 119px; height: 122px; overflow: hidden; position: absolute; top: 0; right: 0; } -.ui-mobile .jqm-themeswitcher { clear: both; margin: 20px 0 0; } - +.ui-mobile .ganglia-mobile { background: #e5e5e5 url(../images/jqm-sitebg.png) top center repeat-x; } +.ui-mobile #mobile-home { background: #e5e5e5 url(../images/jqm-sitebg.png) top center repeat-x; } +.ui-mobile #mobile-homeheader { padding: 55px 25px 0; text-align: center } +.ui-mobile #mobile-homeheader h1 { margin: 0 0 10px; } +.ui-mobile #mobile-homeheader p { margin: 0; } +.ui-mobile #mobile-version { text-indent: -99999px; background: url(../images/version.png) top right no-repeat; width: 119px; height: 122px; overflow: hidden; position: absolute; top: 0; right: 0; } +.ui-mobile .mobile-themeswitcher { clear: both; margin: 20px 0 0; } h2 { margin-top:1.5em; } p code { font-size:1.2em; font-weight:bold; } - dt { font-weight: bold; margin: 2em 0 .5em; } dt code, dd code { font-size:1.3em; line-height:150%; } </style> - </head> <body> - -<!-- Start of first page --> -<div data-role="page" id="jqm-home"> - +<?php + // Build cluster array. So we know if there is more than 1 + foreach ( $index_array['cluster'] as $hostname => $clustername ) { + $cluster_array[$clustername][] = $hostname; + } + $cluster_names = array_keys($cluster_array); +?> +<div data-role="page" class="ganglia-mobile" id="mobile-home"> <div data-role="header"> - <h1>Ganglia Mobile Views</h1> - </div><!-- /header --> - + <h1>Ganglia Mobile</h1> + </div> + <div data-role="content"> + Please select a category:<p> + <ul data-role="listview" data-theme="g"> + <li><a href="#views">Views</a></li> + <?php + if ( sizeof($cluster_names == 1)) { + print '<li><a href="#cluster-' . urlencode($clustername) . '">Clusters</a></li>'; + } else { + ?> + <li><a href="#clusters">Clusters</a></li> + <?php + } + ?> + </ul> + </div><!-- /content --> +</div><!-- /page --> +<?php +if ( sizeof($cluster_names) > 1 ) { +?> + <div data-role="page" class="ganglia-mobile" id="clusters"> + <div data-role="header"> + <h1>Ganglia Clusters</h1> + </div> <div data-role="content"> - <ul data-role="listview" data-theme="g"> - <?php - $available_views = get_available_views(); - - # List all the available views - foreach ( $available_views as $view_id => $view ) { - $v = $view['view_name']; - print '<li><a href="views-mob.php?view_name=' . $v . '&just_graphs=1&r=hour&cs=&ce=">' . $v . '</a></li>'; - } - - ?> - </ul> - </div><!-- /content --> - + <ul data-role="listview" data-theme="g"> + <?php + // List all clusters + foreach ( $cluster_names as $index => $clustername ) { + print '<li><a href="#cluster-' . urlencode($clustername) . '">' . $clustername . '</a></li>'; + } + ?> + </ul> + </div><!-- /content --> </div><!-- /page --> +<?php +} // end of if (sizeof(cluster_names)) +foreach ( $cluster_names as $index => $clustername ) { +?> + <div data-role="page" class="ganglia-mobile" id="cluster-<?php print urlencode($clustername); ?>"> + <div data-role="header"> + <h1>Cluster <?php print $clustername; ?></h1> + </div> + <div data-role="content"> + <ul data-role="listview" data-theme="g"> + <?php + // List all hosts in the cluster + foreach ( $cluster_array[$clustername] as $index => $hostname ) { + print '<li><a href="mobile-helper.php?show_host_metrics=1&h=' . $hostname . '&c=' . $clustername . '&r=' . $default_time_range . '">' . $hostname . '</a></li>'; + } + ?> + </ul> + </div><!-- /content --> + </div><!-- /page --> +<?php +} +/////////////////////////////////////////////////////////////////////////////// +// Views +/////////////////////////////////////////////////////////////////////////////// +?> +<div data-role="page" class="ganglia-mobile" id="views"> + <div data-role="header"> + <h1>Ganglia Views</h1> + </div> + <div data-role="content"> + <ul data-role="listview" data-theme="g"> + <?php + $available_views = get_available_views(); + + # List all the available views + foreach ( $available_views as $view_id => $view ) { + $v = $view['view_name']; + print '<li><a href="mobile-helper.php?view_name=' . $v . '&just_graphs=1&r=' . $default_time_range . '&cs=&ce=">' . $v . '</a></li>'; + } + ?> + </ul> + </div><!-- /content --> +</div><!-- /page --> </body> </html> Modified: branches/monitor-web-2.0/templates/default/cluster_view.tpl =================================================================== --- branches/monitor-web-2.0/templates/default/cluster_view.tpl 2010-12-01 06:54:50 UTC (rev 2386) +++ branches/monitor-web-2.0/templates/default/cluster_view.tpl 2010-12-03 22:19:04 UTC (rev 2387) @@ -23,29 +23,15 @@ <hr> </TD> -<TD ROWSPAN=2 ALIGN="CENTER" VALIGN=top> -<A HREF="./graph_all_periods.php?{$graph_args}&g=load_report&z=large"> -<IMG BORDER=0 ALT="{$cluster} LOAD" - SRC="./graph.php?{$graph_args}&g=load_report&z=medium"> -</A> -<A HREF="./graph_all_periods.php?{$graph_args}&g=mem_report&z=large"> -<IMG BORDER=0 ALT="{$cluster} MEM" - SRC="./graph.php?{$graph_args}&g=mem_report&z=medium"> -</A> -<A HREF="./graph_all_periods.php?{$graph_args}&g=cpu_report&z=large"> -<IMG BORDER=0 ALT="{$cluster} CPU" - SRC="./graph.php?{$graph_args}&g=cpu_report&z=medium"> -</A> -<A HREF="./graph_all_periods.php?{$graph_args}&g=network_report&z=large"> -<IMG BORDER=0 ALT="{$cluster} NETWORK" - SRC="./graph.php?{$graph_args}&g=network_report&z=medium"> -</A> +<TD ROWSPAN=2 ALIGN="CENTER" VALIGN=top +<div id="optional_graphs"> + {$optional_reports}<br> + {foreach $optional_graphs_data graph} + <A HREF="./graph_all_periods.php?{$graph.graph_args}&g={$graph.name}_report&z=large"> + <IMG BORDER=0 ALT="{$cluster} {$graph.name}" SRC="./graph.php?{$graph.graph_args}&g={$graph.name}_report&z=medium"></A> + {/foreach} +</div> -{foreach $optional_graphs_data graph} -<A HREF="./graph_all_periods.php?{$graph.graph_args}&g={$graph.name}_report&z=large"> -<IMG BORDER=0 ALT="{$cluster} {$graph.name}" SRC="./graph.php?{$graph.graph_args}&g={$graph.name}_report&z=medium"> -</A> -{/foreach} </TD> </TR> Modified: branches/monitor-web-2.0/templates/default/header.tpl =================================================================== --- branches/monitor-web-2.0/templates/default/header.tpl 2010-12-01 06:54:50 UTC (rev 2386) +++ branches/monitor-web-2.0/templates/default/header.tpl 2010-12-03 22:19:04 UTC (rev 2387) @@ -12,18 +12,13 @@ <link type="text/css" href="css/jquery.liveSearch.css" rel="stylesheet" /> <LINK rel="stylesheet" href="./styles.css" type="text/css"> <script> - var availablemetrics = [ - {$available_metrics} - ]; + var availablemetrics = [ {$available_metrics} ]; -$(function(){ - - $( "#metrics-picker" ).autocomplete({ + $(function(){ + $( "#metrics-picker" ).autocomplete({ source: availablemetrics - }); - - {$is_metrics_picker_disabled} - + }); + {$is_metrics_picker_disabled} }); </script> {$custom_time_head} @@ -38,6 +33,7 @@ <li><a href="#tabs-search" onclick="getSearchContent();">Search</a></li> <li><a href="#tabs-views" onclick="getViewsContent();">Views</a></li> <li><a href="#tabs-autorotation" onclick="autoRotationChooser();">Automatic Rotation</a></li> + <a id="mobile_view_link" href="mobile.php">Mobile</a> </ul> <div id="tabs-main"> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vv...@us...> - 2010-12-04 04:40:14
|
Revision: 2388 http://ganglia.svn.sourceforge.net/ganglia/?rev=2388&view=rev Author: vvuksan Date: 2010-12-04 04:40:08 +0000 (Sat, 04 Dec 2010) Log Message: ----------- Add the Mobile Helper required for Mobile View Added Paths: ----------- branches/monitor-web-2.0/mobile-helper.php Removed Paths: ------------- branches/monitor-web-2.0/views-mob.php Added: branches/monitor-web-2.0/mobile-helper.php =================================================================== --- branches/monitor-web-2.0/mobile-helper.php (rev 0) +++ branches/monitor-web-2.0/mobile-helper.php 2010-12-04 04:40:08 UTC (rev 2388) @@ -0,0 +1,167 @@ +<?php +include_once("./conf.php"); +include_once("./functions.php"); +?> +<!DOCTYPE html> +<html> +<head> +<title>Ganglia Mobile</title> +<style> +.ui-mobile .ganglia-mobile { background: #e5e5e5 url(../images/jqm-sitebg.png) top center repeat-x; } +</style> +</head> +<body> +<?php +/////////////////////////////////////////////////////////////////////////////// +// Generating mobile view +/////////////////////////////////////////////////////////////////////////////// +if ( isset($_GET['view_name'])) { +?> + <div data-role="page" class="ganglia-mobile" id="view-home"> + <div data-role="header"> + <h1>View <?php print $_GET['view_name']; ?></h1> + <div data-role="navbar"> + <ul> + <?php + + $view_name = $_GET['view_name']; + $available_views = get_available_views(); + + // Header bar support up to 5 items. 5+ items will be shown in multiple + // rows. Thus we'll limit to first 5 time ranges + $my_ranges = array_keys( $time_ranges ); + for ( $i = 0 ; $i < 5 ; $i++ ) { + $context_ranges[] = $my_ranges[$i]; + } + + $range_menu = ""; + $range = $_GET['r']; + + foreach ($context_ranges as $v) { + $url=rawurlencode($v); + if ($v == $range) + $checked = "class=\"ui-btn-active\""; + else + $checked = ""; + + $range_menu .= "<li><a href='mobile-helper.php?view_name=" . $_GET['view_name'] . "&r=" . $v . "&cs=&ce='>$v</a></li>"; + } + print $range_menu; + ?> + </ul> + </div><!-- /navbar --> + </div><!-- /header --> + + <div data-role="content"> + <?php + + // Let's find the view definition + foreach ( $available_views as $view_id => $view ) { + + if ( $view['view_name'] == $view_name ) { + + $view_elements = get_view_graph_elements($view); + + $range_args = ""; + if ( isset($_GET['r']) && $_GET['r'] != "" ) + $range_args .= "&r=" . $_GET['r']; + if ( isset($_GET['cs']) && isset($_GET['ce']) ) + $range_args .= "&cs=" . $_GET['cs'] . "&ce=" . $_GET['ce']; + + foreach ( $view_elements as $id => $element ) { + print " + <A HREF=\"./graph_all_periods.php?mobile=1&" . $element['graph_args'] ."&z=mobile\"> + <IMG ALT=\"" . $element['hostname'] . " - " . $element['name'] . "\" BORDER=0 SRC=\"./graph.php?" . $element['graph_args'] . "&z=mobile" . $range_args . "\"></A>"; + } + + } // end of if ( $view['view_name'] == $view_name + } // end of foreach ( $views as $view_id + + + print "</div><!-- /content --> + </div> <!-- /page -->"; +} // end of if ( isset($_GET['view_name'])) +/////////////////////////////////////////////////////////////////////////////// +// Generate host view +/////////////////////////////////////////////////////////////////////////////// +if ( isset($_GET['show_host_metrics'])) { + $hostname = $_GET['h']; + $clustername = $_GET['c']; +?> + <div data-role="page" class="ganglia-mobile" id="viewhost-<?php print $hostname; ?>"> + <div data-role="header"> + <h2>Hostname <?php print $hostname; ?></h2> + <div data-role="navbar"> + <ul> + <?php + // Header bar support up to 5 items. 5+ items will be shown in multiple + // rows. Thus we'll limit to first 5 time ranges + $my_ranges = array_keys( $time_ranges ); + for ( $i = 0 ; $i < 5 ; $i++ ) { + $context_ranges[] = $my_ranges[$i]; + } + + $range_menu = ""; + $range = $_GET['r']; + + foreach ($context_ranges as $v) { + $url=rawurlencode($v); + if ($v == $range) + $checked = "class=\"ui-btn-active\""; + else + $checked = ""; + + $range_menu .= "<li><a href='mobile-helper.php?show_host_metrics=1&h=" . $hostname . "&c=" . $clustername . "&r=" . $v . "&cs=&ce='>$v</a></li>"; + } + print $range_menu; + ?> + </ul> + </div><!-- /navbar --> + </div><!-- /header --> + + <div data-role="content"> +<?php + $graph_args = "h=$hostname&c=$clustername&r=$range"; + + #################################################################################### + # Let's find out what optional reports are included + # First we find out what the default (site-wide) reports are then look + # for host specific included or excluded reports + #################################################################################### + $default_reports = array("included_reports" => array(), "excluded_reports" => array()); + if ( is_file($GLOBALS['conf_dir'] . "/default.json") ) { + $default_reports = array_merge($default_reports,json_decode(file_get_contents($GLOBALS['conf_dir'] . "/default.json"), TRUE)); + } + + $host_file = $GLOBALS['conf_dir'] . "/host_" . $hostname . ".json"; + $override_reports = array("included_reports" => array(), "excluded_reports" => array()); + if ( is_file($host_file) ) { + $override_reports = array_merge($override_reports, json_decode(file_get_contents($host_file), TRUE)); + } + + # Merge arrays + $reports["included_reports"] = array_merge( $default_reports["included_reports"] , $override_reports["included_reports"]); + $reports["excluded_reports"] = array_merge($default_reports["excluded_reports"] , $override_reports["excluded_reports"]); + + # Remove duplicates + $reports["included_reports"] = array_unique($reports["included_reports"]); + $reports["excluded_reports"] = array_unique($reports["excluded_reports"]); + + foreach ( $reports["included_reports"] as $index => $report_name ) { + + if ( ! in_array( $report_name, $reports["excluded_reports"] ) ) { + print " + <A HREF=\"./graph_all_periods.php?mobile=1&$graph_args&g=" . $report_name . "&z=large\"> + <IMG BORDER=0 ALT=\"$clustername\" SRC=\"./graph.php?$graph_args&g=" . $report_name ."&z=medium\"></A>"; + } + } + ?> + <p><font color=red>Metric graphs not implemented yet.</font> + </div><!-- /content --> + </div><!-- /page --> +<?php +} +?> + +</body> +</html> Deleted: branches/monitor-web-2.0/views-mob.php =================================================================== --- branches/monitor-web-2.0/views-mob.php 2010-12-03 22:19:04 UTC (rev 2387) +++ branches/monitor-web-2.0/views-mob.php 2010-12-04 04:40:08 UTC (rev 2388) @@ -1,325 +0,0 @@ -<?php - -include_once("./conf.php"); -include_once("./functions.php"); -////////////////////////////////////////////////////////////////////////////////////////////////////// -// Create new view -////////////////////////////////////////////////////////////////////////////////////////////////////// -if ( isset($_GET['create_view']) ) { - // Check whether the view name already exists - $view_exists = 0; - - $available_views = get_available_views(); - - foreach ( $available_views as $view_id => $view ) { - if ( $view['view_name'] == $_GET['view_name'] ) { - $view_exists = 1; - } - } - - if ( $view_exists == 1 ) { - ?> - <div class="ui-widget"> - <div class="ui-state-error ui-corner-all" style="padding: 0 .7em;"> - <p><span class="ui-icon ui-icon-alert" style="float: left; margin-right: .3em;"></span> - <strong>Alert:</strong> View with the name <?php print $_GET['view_name']; ?> already exists.</p> - </div> - </div> - <?php - } else { - $empty_view = array ( "view_name" => $_GET['view_name'], - "items" => array() ); - $view_suffix = str_replace(" ", "_", $_GET['view_name']); - $view_filename = $GLOBALS['views_dir'] . "/view_" . $view_suffix . ".json"; - $json = json_encode($empty_view); - if ( file_put_contents($view_filename, $json) === FALSE ) { - ?> - <div class="ui-widget"> - <div class="ui-state-error ui-corner-all" style="padding: 0 .7em;"> - <p><span class="ui-icon ui-icon-alert" style="float: left; margin-right: .3em;"></span> - <strong>Alert:</strong> Can't write to file <?php print $view_filename; ?>. Perhaps permissions are wrong.</p> - </div> - </div> - <?php - } else { - ?> - <div class="ui-widget"> - <div class="ui-state-default ui-corner-all" style="padding: 0 .7em;"> - <p><span class="ui-icon ui-icon-alert" style="float: left; margin-right: .3em;"></span> - View has been created successfully.</p> - </div> - </div> - <?php - } // end of if ( file_put_contents($view_filename, $json) === FALSE ) - } // end of if ( $view_exists == 1 ) - exit(1); -} - -////////////////////////////////////////////////////////////////////////////////////////////////////// -// Create new view -////////////////////////////////////////////////////////////////////////////////////////////////////// -if ( isset($_GET['add_to_view']) ) { - - $view_exists = 0; - // Check whether the view name already exists - $available_views = get_available_views(); - - foreach ( $available_views as $view_id => $view ) { - if ( $view['view_name'] == $_GET['view_name'] ) { - $view_exists = 1; - break; - } - } - - if ( $view_exists == 0 ) { - ?> - <div class="ui-widget"> - <div class="ui-state-error ui-corner-all" style="padding: 0 .7em;"> - <p><span class="ui-icon ui-icon-alert" style="float: left; margin-right: .3em;"></span> - <strong>Alert:</strong> View <?php print $_GET['view_name']; ?> does not exist. This should not happen.</p> - </div> - </div> - <?php - } else { - - // Read in contents of an existing view - $view_filename = $view['file_name']; - // Delete the file_name index - unset($view['file_name']); - - if ( $_GET['type'] == "metric" ) - $view['items'][] = array( "hostname" => $_GET['host_name'], "metric" => $_GET['metric_name']); - else - $view['items'][] = array( "hostname" => $_GET['host_name'], "graph" => $_GET['metric_name']); - - $json = json_encode($view); - - if ( file_put_contents($view_filename, $json) === FALSE ) { - ?> - <div class="ui-widget"> - <div class="ui-state-error ui-corner-all" style="padding: 0 .7em;"> - <p><span class="ui-icon ui-icon-alert" style="float: left; margin-right: .3em;"></span> - <strong>Alert:</strong> Can't write to file <?php print $view_filename; ?>. Perhaps permissions are wrong.</p> - </div> - </div> - <?php - } else { - ?> - <div class="ui-widget"> - <div class="ui-state-default ui-corner-all" style="padding: 0 .7em;"> - <p><span class="ui-icon ui-icon-alert" style="float: left; margin-right: .3em;"></span> - View has been updated successfully.</p> - </div> - </div> - <?php - } // end of if ( file_put_contents($view_filename, $json) === FALSE ) - } // end of if ( $view_exists == 1 ) - exit(1); -} - - - -// Load the metric caching code we use if we need to display graphs -require_once('./cache.php'); - -$available_views = get_available_views(); - -// Pop up a warning message if there are no available views -if ( sizeof($available_views) == 0 ) { - ?> - <div class="ui-widget"> - <div class="ui-state-error ui-corner-all" style="padding: 0 .7em;"> - <p><span class="ui-icon ui-icon-alert" style="float: left; margin-right: .3em;"></span> - <strong>Alert:</strong> There are no views defined.</p> - </div> - </div> - <?php -} else { - - if ( !isset($_GET['view_name']) ) { - if ( sizeof($available_views) == 1 ) - $view_name = $available_views[0]['view_name']; - else - $view_name = "default"; - } else { - $view_name = $_GET['view_name']; - } - - if ( isset($_GET['standalone']) ) { - ?> -<html><head> -<script TYPE="text/javascript" SRC="js/jquery-1.4.4.min.js"></script> -<script type="text/javascript" src="js/jquery-ui-1.8.5.custom.min.js"></script> -<script type="text/javascript" src="js/jquery.liveSearch.js"></script> -<script type="text/javascript" src="js/ganglia.js"></script> -<link type="text/css" href="css/smoothness/jquery-ui-1.8.5.custom.css" rel="stylesheet" /> -<link type="text/css" href="css/jquery.liveSearch.css" rel="stylesheet" /> -<LINK rel="stylesheet" href="./styles.css" type="text/css"> -</head> -<body> - <div id="tabs-views-content"> - <?php - } - - print "<form id=view_chooser_form>"; - - if ( ! isset($_GET['just_graphs']) ) { - - ?> - <table id=views_table> - <tr><td valign=top> - - <?php - if ( ! isset($_GET['standalone']) ) { - ?> - <button onclick="return false" id=create_view_button>Create View</button> - <a href="views.php?standalone=1" id="detach-tab-button">Detach Tab</a> - <?php - } - ?> - <p> <div id="views_menu"> - Existing views: - <ul id="navlist"> - <?php - - # List all the available views - foreach ( $available_views as $view_id => $view ) { - $v = $view['view_name']; - print '<li><a href="#" onClick="getViewsContentJustGraphs(\'' . $v . '\', \'1hour\', \'\',\'\'); return false;">' . $v . '</a></li>'; - } - - ?> -<script> -$(function(){ - $( "#view_range_chooser" ).buttonset(); - $( "#detach-tab-button").button(); - document.getElementById('view_name').value = "default"; -}); -</script> - - - </ul></div></td><td valign=top> - <div id=view_range_chooser> - <form id=view_timerange_form> - <input type="hidden" name=view_name id=view_name value=""> -<?php - $context_ranges = array_keys( $time_ranges ); - if (isset($jobrange)) - $context_ranges[]="job"; - if (isset($cs) or isset($ce)) - $context_ranges[]="custom"; - - if ( isset($_GET['r']) ) - $range = $_GET['r']; - else - $range = ""; - - $range_menu = "<B>Last</B> "; - foreach ($context_ranges as $v) { - $url=rawurlencode($v); - if ($v == $range) - $checked = "checked=\"checked\""; - else - $checked = ""; -# $range_menu .= "<input OnChange=\"getViewsContentJustGraphs(document.getElementById('view_name').value);\" type=\"radio\" id=\"view-range-$v\" name=\"r\" value=\"$v\" $checked/><label for=\"view-range-$v\">$v</label>"; - $range_menu .= "<input OnChange=\"document.getElementById('view-cs').value = ''; document.getElementById('view-ce').value = ''; getViewsContentJustGraphs(document.getElementById('view_name').value, '" . $v . "', '','');\" type=\"radio\" id=\"view-range-$v\" name=\"r\" value=\"$v\" $checked/><label for=\"view-range-$v\">$v</label>"; - - } - print $range_menu; -?> - or from - <INPUT TYPE="TEXT" TITLE="Feb 27 2007 00:00, 2/27/2007, 27.2.2007, now -1 week, -2 days, start + 1 hour, etc." NAME="cs" ID="view-cs" SIZE="17"> to - <INPUT TYPE="TEXT" TITLE="Feb 27 2007 00:00, 2/27/2007, 27.2.2007, now -1 week, -2 days, start + 1 hour, etc." NAME="ce" ID="view-ce" SIZE="17"> - <input type="button" onclick="getViewsContentJustGraphs(document.getElementById('view_name').value, '', document.getElementById('view-cs').value, document.getElementById('view-ce').value ); return false;" value="Go"> - <input type="button" value="Clear" onclick="document.getElementById('view-cs').value = ''; document.getElementById('view-ce').value = '' ; return false;"> - </form><p> - </div> - </div> - - <?php - - } // end of if ( ! isset($_GET['just_graphs']) - - /////////////////////////////////////////////////////////////////////////////////////////////////////// - // Displays graphs in the graphs div - /////////////////////////////////////////////////////////////////////////////////////////////////////// -?> -<!DOCTYPE html> -<html> -<head> -<title>Ganglia Mobile</title> -</head> -<body> -<div data-role="page" id="jqm-home"> - <div data-role="header"> - <h1>View <?php print $_GET['view_name']; ?></h1> - <div data-role="navbar"> - <ul> -<?php - - $my_ranges = array_keys( $time_ranges ); - - for ( $i = 0 ; $i < 5 ; $i++ ) { - $context_ranges[] = $my_ranges[$i]; - } - - $range_menu = ""; - - $range = $_GET['r']; - - foreach ($context_ranges as $v) { - $url=rawurlencode($v); - if ($v == $range) - $checked = "class=\"ui-btn-active\""; - else - $checked = ""; - - $range_menu .= "<li><a href='views-mob.php?view_name=" . $_GET['view_name'] . "&just_graphs=1&r=" . $v . "&cs=&ce='>$v</a></li>"; - } - print $range_menu; -?> - </ul> - </div><!-- /navbar --> - </div><!-- /header --> - - <div data-role="content"> - </div><!-- /content --> -<?php - - - // Let's find the view definition - foreach ( $available_views as $view_id => $view ) { - - if ( $view['view_name'] == $view_name ) { - - $view_elements = get_view_graph_elements($view); - - $range_args = ""; - if ( isset($_GET['r']) && $_GET['r'] != "" ) - $range_args .= "&r=" . $_GET['r']; - if ( isset($_GET['cs']) && isset($_GET['ce']) ) - $range_args .= "&cs=" . $_GET['cs'] . "&ce=" . $_GET['ce']; - - foreach ( $view_elements as $id => $element ) { - - print " - <A HREF=\"./graph_all_periods.php?" . $element['graph_args'] ."&z=mobile\"> - <IMG ALT=\"" . $element['hostname'] . " - " . $element['name'] . "\" BORDER=0 SRC=\"./graph.php?" . $element['graph_args'] . "&z=mobile" . $range_args . "\"></A>"; - } - - } // end of if ( $view['view_name'] == $view_name - } // end of foreach ( $views as $view_id - - print "</div>"; - - if ( ! isset($_GET['just_graphs']) ) - print "</td></tr></table></form>"; - - if ( isset($_GET['standalone']) ) { - print "</div>"; - } - - -} // end of ie else ( ! isset($available_views ) - -?> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vv...@us...> - 2010-12-05 15:33:24
|
Revision: 2390 http://ganglia.svn.sourceforge.net/ganglia/?rev=2390&view=rev Author: vvuksan Date: 2010-12-05 15:33:18 +0000 (Sun, 05 Dec 2010) Log Message: ----------- Rename mobile-helper and adjust the width for mobile size Modified Paths: -------------- branches/monitor-web-2.0/conf.php.in branches/monitor-web-2.0/mobile.php Added Paths: ----------- branches/monitor-web-2.0/mobile_helper.php Removed Paths: ------------- branches/monitor-web-2.0/mobile-helper.php Modified: branches/monitor-web-2.0/conf.php.in =================================================================== --- branches/monitor-web-2.0/conf.php.in 2010-12-04 18:40:25 UTC (rev 2389) +++ branches/monitor-web-2.0/conf.php.in 2010-12-05 15:33:18 UTC (rev 2390) @@ -230,7 +230,7 @@ 'mobile'=>array( 'height'=>95, - 'width'=>220, + 'width'=>210, 'fudge_0'=>0, 'fudge_1'=>0, 'fudge_2'=>0 Deleted: branches/monitor-web-2.0/mobile-helper.php =================================================================== --- branches/monitor-web-2.0/mobile-helper.php 2010-12-04 18:40:25 UTC (rev 2389) +++ branches/monitor-web-2.0/mobile-helper.php 2010-12-05 15:33:18 UTC (rev 2390) @@ -1,167 +0,0 @@ -<?php -include_once("./conf.php"); -include_once("./functions.php"); -?> -<!DOCTYPE html> -<html> -<head> -<title>Ganglia Mobile</title> -<style> -.ui-mobile .ganglia-mobile { background: #e5e5e5 url(../images/jqm-sitebg.png) top center repeat-x; } -</style> -</head> -<body> -<?php -/////////////////////////////////////////////////////////////////////////////// -// Generating mobile view -/////////////////////////////////////////////////////////////////////////////// -if ( isset($_GET['view_name'])) { -?> - <div data-role="page" class="ganglia-mobile" id="view-home"> - <div data-role="header"> - <h1>View <?php print $_GET['view_name']; ?></h1> - <div data-role="navbar"> - <ul> - <?php - - $view_name = $_GET['view_name']; - $available_views = get_available_views(); - - // Header bar support up to 5 items. 5+ items will be shown in multiple - // rows. Thus we'll limit to first 5 time ranges - $my_ranges = array_keys( $time_ranges ); - for ( $i = 0 ; $i < 5 ; $i++ ) { - $context_ranges[] = $my_ranges[$i]; - } - - $range_menu = ""; - $range = $_GET['r']; - - foreach ($context_ranges as $v) { - $url=rawurlencode($v); - if ($v == $range) - $checked = "class=\"ui-btn-active\""; - else - $checked = ""; - - $range_menu .= "<li><a href='mobile-helper.php?view_name=" . $_GET['view_name'] . "&r=" . $v . "&cs=&ce='>$v</a></li>"; - } - print $range_menu; - ?> - </ul> - </div><!-- /navbar --> - </div><!-- /header --> - - <div data-role="content"> - <?php - - // Let's find the view definition - foreach ( $available_views as $view_id => $view ) { - - if ( $view['view_name'] == $view_name ) { - - $view_elements = get_view_graph_elements($view); - - $range_args = ""; - if ( isset($_GET['r']) && $_GET['r'] != "" ) - $range_args .= "&r=" . $_GET['r']; - if ( isset($_GET['cs']) && isset($_GET['ce']) ) - $range_args .= "&cs=" . $_GET['cs'] . "&ce=" . $_GET['ce']; - - foreach ( $view_elements as $id => $element ) { - print " - <A HREF=\"./graph_all_periods.php?mobile=1&" . $element['graph_args'] ."&z=mobile\"> - <IMG ALT=\"" . $element['hostname'] . " - " . $element['name'] . "\" BORDER=0 SRC=\"./graph.php?" . $element['graph_args'] . "&z=mobile" . $range_args . "\"></A>"; - } - - } // end of if ( $view['view_name'] == $view_name - } // end of foreach ( $views as $view_id - - - print "</div><!-- /content --> - </div> <!-- /page -->"; -} // end of if ( isset($_GET['view_name'])) -/////////////////////////////////////////////////////////////////////////////// -// Generate host view -/////////////////////////////////////////////////////////////////////////////// -if ( isset($_GET['show_host_metrics'])) { - $hostname = $_GET['h']; - $clustername = $_GET['c']; -?> - <div data-role="page" class="ganglia-mobile" id="viewhost-<?php print $hostname; ?>"> - <div data-role="header"> - <h2>Hostname <?php print $hostname; ?></h2> - <div data-role="navbar"> - <ul> - <?php - // Header bar support up to 5 items. 5+ items will be shown in multiple - // rows. Thus we'll limit to first 5 time ranges - $my_ranges = array_keys( $time_ranges ); - for ( $i = 0 ; $i < 5 ; $i++ ) { - $context_ranges[] = $my_ranges[$i]; - } - - $range_menu = ""; - $range = $_GET['r']; - - foreach ($context_ranges as $v) { - $url=rawurlencode($v); - if ($v == $range) - $checked = "class=\"ui-btn-active\""; - else - $checked = ""; - - $range_menu .= "<li><a href='mobile-helper.php?show_host_metrics=1&h=" . $hostname . "&c=" . $clustername . "&r=" . $v . "&cs=&ce='>$v</a></li>"; - } - print $range_menu; - ?> - </ul> - </div><!-- /navbar --> - </div><!-- /header --> - - <div data-role="content"> -<?php - $graph_args = "h=$hostname&c=$clustername&r=$range"; - - #################################################################################### - # Let's find out what optional reports are included - # First we find out what the default (site-wide) reports are then look - # for host specific included or excluded reports - #################################################################################### - $default_reports = array("included_reports" => array(), "excluded_reports" => array()); - if ( is_file($GLOBALS['conf_dir'] . "/default.json") ) { - $default_reports = array_merge($default_reports,json_decode(file_get_contents($GLOBALS['conf_dir'] . "/default.json"), TRUE)); - } - - $host_file = $GLOBALS['conf_dir'] . "/host_" . $hostname . ".json"; - $override_reports = array("included_reports" => array(), "excluded_reports" => array()); - if ( is_file($host_file) ) { - $override_reports = array_merge($override_reports, json_decode(file_get_contents($host_file), TRUE)); - } - - # Merge arrays - $reports["included_reports"] = array_merge( $default_reports["included_reports"] , $override_reports["included_reports"]); - $reports["excluded_reports"] = array_merge($default_reports["excluded_reports"] , $override_reports["excluded_reports"]); - - # Remove duplicates - $reports["included_reports"] = array_unique($reports["included_reports"]); - $reports["excluded_reports"] = array_unique($reports["excluded_reports"]); - - foreach ( $reports["included_reports"] as $index => $report_name ) { - - if ( ! in_array( $report_name, $reports["excluded_reports"] ) ) { - print " - <A HREF=\"./graph_all_periods.php?mobile=1&$graph_args&g=" . $report_name . "&z=large\"> - <IMG BORDER=0 ALT=\"$clustername\" SRC=\"./graph.php?$graph_args&g=" . $report_name ."&z=medium\"></A>"; - } - } - ?> - <p><font color=red>Metric graphs not implemented yet.</font> - </div><!-- /content --> - </div><!-- /page --> -<?php -} -?> - -</body> -</html> Modified: branches/monitor-web-2.0/mobile.php =================================================================== --- branches/monitor-web-2.0/mobile.php 2010-12-04 18:40:25 UTC (rev 2389) +++ branches/monitor-web-2.0/mobile.php 2010-12-05 15:33:18 UTC (rev 2390) @@ -45,8 +45,8 @@ <ul data-role="listview" data-theme="g"> <li><a href="#views">Views</a></li> <?php - if ( sizeof($cluster_names) == 1) { - print '<li><a href="#cluster-' . str_replace(" ","_", $cluster_names[0]) . '">Clusters</a></li>'; + if ( sizeof($cluster_names == 1)) { + print '<li><a href="#cluster-' . urlencode($clustername) . '">Clusters</a></li>'; } else { ?> <li><a href="#clusters">Clusters</a></li> @@ -68,7 +68,7 @@ <?php // List all clusters foreach ( $cluster_names as $index => $clustername ) { - print '<li><a href="#cluster-' . str_replace(" ","_", $clustername) . '">' . $clustername . '</a></li>'; + print '<li><a href="#cluster-' . urlencode($clustername) . '">' . $clustername . '</a></li>'; } ?> </ul> @@ -78,7 +78,7 @@ } // end of if (sizeof(cluster_names)) foreach ( $cluster_names as $index => $clustername ) { ?> - <div data-role="page" class="ganglia-mobile" id="cluster-<?php print str_replace(" ","_", $clustername); ?>"> + <div data-role="page" class="ganglia-mobile" id="cluster-<?php print urlencode($clustername); ?>"> <div data-role="header"> <h1>Cluster <?php print $clustername; ?></h1> </div> @@ -87,7 +87,7 @@ <?php // List all hosts in the cluster foreach ( $cluster_array[$clustername] as $index => $hostname ) { - print '<li><a href="mobile-helper.php?show_host_metrics=1&h=' . $hostname . '&c=' . $clustername . '&r=' . $default_time_range . '">' . $hostname . '</a></li>'; + print '<li><a href="mobile_helper.php?show_host_metrics=1&h=' . $hostname . '&c=' . $clustername . '&r=' . $default_time_range . '">' . $hostname . '</a></li>'; } ?> </ul> @@ -111,7 +111,7 @@ # List all the available views foreach ( $available_views as $view_id => $view ) { $v = $view['view_name']; - print '<li><a href="mobile-helper.php?view_name=' . $v . '&just_graphs=1&r=' . $default_time_range . '&cs=&ce=">' . $v . '</a></li>'; + print '<li><a href="mobile_helper.php?view_name=' . $v . '&just_graphs=1&r=' . $default_time_range . '&cs=&ce=">' . $v . '</a></li>'; } ?> </ul> Copied: branches/monitor-web-2.0/mobile_helper.php (from rev 2388, branches/monitor-web-2.0/mobile-helper.php) =================================================================== --- branches/monitor-web-2.0/mobile_helper.php (rev 0) +++ branches/monitor-web-2.0/mobile_helper.php 2010-12-05 15:33:18 UTC (rev 2390) @@ -0,0 +1,167 @@ +<?php +include_once("./conf.php"); +include_once("./functions.php"); +?> +<!DOCTYPE html> +<html> +<head> +<title>Ganglia Mobile</title> +<style> +.ui-mobile .ganglia-mobile { background: #e5e5e5 url(../images/jqm-sitebg.png) top center repeat-x; } +</style> +</head> +<body> +<?php +/////////////////////////////////////////////////////////////////////////////// +// Generating mobile view +/////////////////////////////////////////////////////////////////////////////// +if ( isset($_GET['view_name'])) { +?> + <div data-role="page" class="ganglia-mobile" id="view-home"> + <div data-role="header"> + <h1>View <?php print $_GET['view_name']; ?></h1> + <div data-role="navbar"> + <ul> + <?php + + $view_name = $_GET['view_name']; + $available_views = get_available_views(); + + // Header bar support up to 5 items. 5+ items will be shown in multiple + // rows. Thus we'll limit to first 5 time ranges + $my_ranges = array_keys( $time_ranges ); + for ( $i = 0 ; $i < 5 ; $i++ ) { + $context_ranges[] = $my_ranges[$i]; + } + + $range_menu = ""; + $range = $_GET['r']; + + foreach ($context_ranges as $v) { + $url=rawurlencode($v); + if ($v == $range) + $checked = "class=\"ui-btn-active\""; + else + $checked = ""; + + $range_menu .= "<li><a href='mobile-helper.php?view_name=" . $_GET['view_name'] . "&r=" . $v . "&cs=&ce='>$v</a></li>"; + } + print $range_menu; + ?> + </ul> + </div><!-- /navbar --> + </div><!-- /header --> + + <div data-role="content"> + <?php + + // Let's find the view definition + foreach ( $available_views as $view_id => $view ) { + + if ( $view['view_name'] == $view_name ) { + + $view_elements = get_view_graph_elements($view); + + $range_args = ""; + if ( isset($_GET['r']) && $_GET['r'] != "" ) + $range_args .= "&r=" . $_GET['r']; + if ( isset($_GET['cs']) && isset($_GET['ce']) ) + $range_args .= "&cs=" . $_GET['cs'] . "&ce=" . $_GET['ce']; + + foreach ( $view_elements as $id => $element ) { + print " + <A HREF=\"./graph_all_periods.php?mobile=1&" . $element['graph_args'] ."&z=mobile\"> + <IMG ALT=\"" . $element['hostname'] . " - " . $element['name'] . "\" BORDER=0 SRC=\"./graph.php?" . $element['graph_args'] . "&z=mobile" . $range_args . "\"></A>"; + } + + } // end of if ( $view['view_name'] == $view_name + } // end of foreach ( $views as $view_id + + + print "</div><!-- /content --> + </div> <!-- /page -->"; +} // end of if ( isset($_GET['view_name'])) +/////////////////////////////////////////////////////////////////////////////// +// Generate host view +/////////////////////////////////////////////////////////////////////////////// +if ( isset($_GET['show_host_metrics'])) { + $hostname = $_GET['h']; + $clustername = $_GET['c']; +?> + <div data-role="page" class="ganglia-mobile" id="viewhost-<?php print $hostname; ?>"> + <div data-role="header"> + <h2>Hostname <?php print $hostname; ?></h2> + <div data-role="navbar"> + <ul> + <?php + // Header bar support up to 5 items. 5+ items will be shown in multiple + // rows. Thus we'll limit to first 5 time ranges + $my_ranges = array_keys( $time_ranges ); + for ( $i = 0 ; $i < 5 ; $i++ ) { + $context_ranges[] = $my_ranges[$i]; + } + + $range_menu = ""; + $range = $_GET['r']; + + foreach ($context_ranges as $v) { + $url=rawurlencode($v); + if ($v == $range) + $checked = "class=\"ui-btn-active\""; + else + $checked = ""; + + $range_menu .= "<li><a href='mobile-helper.php?show_host_metrics=1&h=" . $hostname . "&c=" . $clustername . "&r=" . $v . "&cs=&ce='>$v</a></li>"; + } + print $range_menu; + ?> + </ul> + </div><!-- /navbar --> + </div><!-- /header --> + + <div data-role="content"> +<?php + $graph_args = "h=$hostname&c=$clustername&r=$range"; + + #################################################################################### + # Let's find out what optional reports are included + # First we find out what the default (site-wide) reports are then look + # for host specific included or excluded reports + #################################################################################### + $default_reports = array("included_reports" => array(), "excluded_reports" => array()); + if ( is_file($GLOBALS['conf_dir'] . "/default.json") ) { + $default_reports = array_merge($default_reports,json_decode(file_get_contents($GLOBALS['conf_dir'] . "/default.json"), TRUE)); + } + + $host_file = $GLOBALS['conf_dir'] . "/host_" . $hostname . ".json"; + $override_reports = array("included_reports" => array(), "excluded_reports" => array()); + if ( is_file($host_file) ) { + $override_reports = array_merge($override_reports, json_decode(file_get_contents($host_file), TRUE)); + } + + # Merge arrays + $reports["included_reports"] = array_merge( $default_reports["included_reports"] , $override_reports["included_reports"]); + $reports["excluded_reports"] = array_merge($default_reports["excluded_reports"] , $override_reports["excluded_reports"]); + + # Remove duplicates + $reports["included_reports"] = array_unique($reports["included_reports"]); + $reports["excluded_reports"] = array_unique($reports["excluded_reports"]); + + foreach ( $reports["included_reports"] as $index => $report_name ) { + + if ( ! in_array( $report_name, $reports["excluded_reports"] ) ) { + print " + <A HREF=\"./graph_all_periods.php?mobile=1&$graph_args&g=" . $report_name . "&z=large\"> + <IMG BORDER=0 ALT=\"$clustername\" SRC=\"./graph.php?$graph_args&g=" . $report_name ."&z=medium\"></A>"; + } + } + ?> + <p><font color=red>Metric graphs not implemented yet.</font> + </div><!-- /content --> + </div><!-- /page --> +<?php +} +?> + +</body> +</html> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vv...@us...> - 2010-12-06 14:06:48
|
Revision: 2391 http://ganglia.svn.sourceforge.net/ganglia/?rev=2391&view=rev Author: vvuksan Date: 2010-12-06 14:06:42 +0000 (Mon, 06 Dec 2010) Log Message: ----------- Mobile view bug fixes and UI improvements Modified Paths: -------------- branches/monitor-web-2.0/conf.php.in branches/monitor-web-2.0/host_view.php branches/monitor-web-2.0/mobile.php branches/monitor-web-2.0/mobile_helper.php Modified: branches/monitor-web-2.0/conf.php.in =================================================================== --- branches/monitor-web-2.0/conf.php.in 2010-12-05 15:33:18 UTC (rev 2390) +++ branches/monitor-web-2.0/conf.php.in 2010-12-06 14:06:42 UTC (rev 2391) @@ -230,7 +230,7 @@ 'mobile'=>array( 'height'=>95, - 'width'=>210, + 'width'=>220, 'fudge_0'=>0, 'fudge_1'=>0, 'fudge_2'=>0 Modified: branches/monitor-web-2.0/host_view.php =================================================================== --- branches/monitor-web-2.0/host_view.php 2010-12-05 15:33:18 UTC (rev 2390) +++ branches/monitor-web-2.0/host_view.php 2010-12-06 14:06:42 UTC (rev 2391) @@ -16,12 +16,11 @@ $optional_reports = ""; - -#################################################################################### -# Let's find out what optional reports are included -# First we find out what the default (site-wide) reports are then look -# for host specific included or excluded reports -#################################################################################### +/////////////////////////////////////////////////////////////////////////// +// Let's find out what optional reports are included +// First we find out what the default (site-wide) reports are then look +// for host specific included or excluded reports +/////////////////////////////////////////////////////////////////////////// $default_reports = array("included_reports" => array(), "excluded_reports" => array()); if ( is_file($GLOBALS['conf_dir'] . "/default.json") ) { $default_reports = array_merge($default_reports,json_decode(file_get_contents($GLOBALS['conf_dir'] . "/default.json"), TRUE)); @@ -33,11 +32,11 @@ $override_reports = array_merge($override_reports, json_decode(file_get_contents($host_file), TRUE)); } -# Merge arrays +// Merge arrays $reports["included_reports"] = array_merge( $default_reports["included_reports"] , $override_reports["included_reports"]); $reports["excluded_reports"] = array_merge($default_reports["excluded_reports"] , $override_reports["excluded_reports"]); -# Remove duplicates +// Remove duplicates $reports["included_reports"] = array_unique($reports["included_reports"]); $reports["excluded_reports"] = array_unique($reports["excluded_reports"]); Modified: branches/monitor-web-2.0/mobile.php =================================================================== --- branches/monitor-web-2.0/mobile.php 2010-12-05 15:33:18 UTC (rev 2390) +++ branches/monitor-web-2.0/mobile.php 2010-12-06 14:06:42 UTC (rev 2391) @@ -6,6 +6,10 @@ // Load the metric caching code require_once('./cache.php'); +///////////////////////////////////////////////////////////////////////////// +// With Mobile view we are gonna utilize the capability of putting in +// multiple pages in the same payload so that we avoid HTTP round trips +///////////////////////////////////////////////////////////////////////////// ?> <!DOCTYPE html> <html> @@ -16,7 +20,6 @@ <script src="js/jquery.mobile-1.0a2.min.js"></script> <style> .ui-mobile .ganglia-mobile { background: #e5e5e5 url(../images/jqm-sitebg.png) top center repeat-x; } -.ui-mobile #mobile-home { background: #e5e5e5 url(../images/jqm-sitebg.png) top center repeat-x; } .ui-mobile #mobile-homeheader { padding: 55px 25px 0; text-align: center } .ui-mobile #mobile-homeheader h1 { margin: 0 0 10px; } .ui-mobile #mobile-homeheader p { margin: 0; } @@ -35,6 +38,9 @@ $cluster_array[$clustername][] = $hostname; } $cluster_names = array_keys($cluster_array); + + $available_views = get_available_views(); + ?> <div data-role="page" class="ganglia-mobile" id="mobile-home"> <div data-role="header"> @@ -43,13 +49,13 @@ <div data-role="content"> Please select a category:<p> <ul data-role="listview" data-theme="g"> - <li><a href="#views">Views</a></li> + <li><a href="#views">Views</a><span class="ui-li-count"><?php print sizeof($available_views); ?></span></li> <?php - if ( sizeof($cluster_names == 1)) { - print '<li><a href="#cluster-' . urlencode($clustername) . '">Clusters</a></li>'; + if ( sizeof($cluster_names) == 1) { + print '<li><a href="#cluster-' . urlencode($clustername) . '">Clusters</a><span class="ui-li-count">1</span></li>'; } else { ?> - <li><a href="#clusters">Clusters</a></li> + <li><a href="#clusters">Clusters</a><span class="ui-li-count"><?php print sizeof($cluster_names); ?></span></li> <?php } ?> @@ -105,13 +111,11 @@ </div> <div data-role="content"> <ul data-role="listview" data-theme="g"> - <?php - $available_views = get_available_views(); - - # List all the available views + <?php + // List all the available views foreach ( $available_views as $view_id => $view ) { $v = $view['view_name']; - print '<li><a href="mobile_helper.php?view_name=' . $v . '&just_graphs=1&r=' . $default_time_range . '&cs=&ce=">' . $v . '</a></li>'; + print '<li><a href="mobile_helper.php?view_name=' . $v . '&just_graphs=1&r=' . $default_time_range . '&cs=&ce=">' . $v . '</a><span class="ui-li-count">' . sizeof($view['items']) . '</span></li>'; } ?> </ul> Modified: branches/monitor-web-2.0/mobile_helper.php =================================================================== --- branches/monitor-web-2.0/mobile_helper.php 2010-12-05 15:33:18 UTC (rev 2390) +++ branches/monitor-web-2.0/mobile_helper.php 2010-12-06 14:06:42 UTC (rev 2391) @@ -1,6 +1,9 @@ <?php -include_once("./conf.php"); +include_once "./eval_config.php"; include_once("./functions.php"); +include_once "./get_context.php"; +include_once "./ganglia.php"; +include_once "./get_ganglia.php"; ?> <!DOCTYPE html> <html> @@ -44,7 +47,7 @@ else $checked = ""; - $range_menu .= "<li><a href='mobile-helper.php?view_name=" . $_GET['view_name'] . "&r=" . $v . "&cs=&ce='>$v</a></li>"; + $range_menu .= "<li><a href='mobile_helper.php?view_name=" . $_GET['view_name'] . "&r=" . $v . "&cs=&ce='>$v</a></li>"; } print $range_menu; ?> @@ -89,8 +92,8 @@ $clustername = $_GET['c']; ?> <div data-role="page" class="ganglia-mobile" id="viewhost-<?php print $hostname; ?>"> - <div data-role="header"> - <h2>Hostname <?php print $hostname; ?></h2> + <div data-role="header" data-position="fixed"> + <h3>Host <?php print $hostname; ?></h3> <div data-role="navbar"> <ul> <?php @@ -111,7 +114,7 @@ else $checked = ""; - $range_menu .= "<li><a href='mobile-helper.php?show_host_metrics=1&h=" . $hostname . "&c=" . $clustername . "&r=" . $v . "&cs=&ce='>$v</a></li>"; + $range_menu .= "<li><a href='mobile_helper.php?show_host_metrics=1&h=" . $hostname . "&c=" . $clustername . "&r=" . $v . "&cs=&ce='>$v</a></li>"; } print $range_menu; ?> @@ -123,11 +126,11 @@ <?php $graph_args = "h=$hostname&c=$clustername&r=$range"; - #################################################################################### - # Let's find out what optional reports are included - # First we find out what the default (site-wide) reports are then look - # for host specific included or excluded reports - #################################################################################### + /////////////////////////////////////////////////////////////////////////// + // Let's find out what optional reports are included + // First we find out what the default (site-wide) reports are then look + // for host specific included or excluded reports + /////////////////////////////////////////////////////////////////////////// $default_reports = array("included_reports" => array(), "excluded_reports" => array()); if ( is_file($GLOBALS['conf_dir'] . "/default.json") ) { $default_reports = array_merge($default_reports,json_decode(file_get_contents($GLOBALS['conf_dir'] . "/default.json"), TRUE)); @@ -152,11 +155,76 @@ if ( ! in_array( $report_name, $reports["excluded_reports"] ) ) { print " <A HREF=\"./graph_all_periods.php?mobile=1&$graph_args&g=" . $report_name . "&z=large\"> - <IMG BORDER=0 ALT=\"$clustername\" SRC=\"./graph.php?$graph_args&g=" . $report_name ."&z=medium\"></A>"; + <IMG BORDER=0 ALT=\"$clustername\" SRC=\"./graph.php?$graph_args&g=" . $report_name ."&z=mobile\"></A>"; } } - ?> - <p><font color=red>Metric graphs not implemented yet.</font> + ?> +<?php + +$g_metrics_group = array(); +$groups = array(); + +$size = "mobile"; + +foreach ($metrics as $metric_name => $metric_attributes) { + + if ($metric_attributes['TYPE'] == "string" or $metric_attributes['TYPE']=="timestamp" or + (isset($always_timestamp[$metric_name]) and $always_timestamp[$metric_name])) { + $s_metrics[$metric_name] = $v; + } elseif ($metric_attributes['SLOPE'] == "zero" or (isset($always_constant[$metric_name]) and $always_constant[$metric_name])) { + $c_metrics[$metric_name] = $v; + } else if (isset($reports[$metric_name]) and $reports[$metric]) + continue; + else { + $metric_graphargs = "c=$clustername&h=$hostname&v=$metric_attributes[VAL]" + ."&m=$metric_name&r=$range&z=$size&jr=$jobrange" + ."&js=$jobstart&st=$cluster[LOCALTIME]"; + if ($cs) + $metric_graphargs .= "&cs=" . rawurlencode($cs); + if ($ce) + $metric_graphargs .= "&ce=" . rawurlencode($ce); + # Adding units to graph 2003 by Jason Smith <sm...@bn...>. + if ($metric_attributes['UNITS']) { + $encodeUnits = rawurlencode($metric_attributes['UNITS']); + $metric_graphargs .= "&vl=$encodeUnits"; + } + if (isset($metric_attributes['TITLE'])) { + $title = $metric_attributes['TITLE']; + $metric_graphargs .= "&ti=$title"; + } + $g_metrics[$metric_name]['graph'] = $graph_args . "&" . $metric_graphargs; + $g_metrics[$metric_name]['description'] = isset($metric_attributes['DESC']) ? $metric_attributes['DESC'] : ''; + + if ( !isset($metrics[$metric_name]['GROUP']) ) + $group_name = "no group"; + else + $group_name = $metrics[$metric_name]['GROUP'][0]; + + // Make an array of groups + if ( ! in_array($group_name, $groups) ) { + $groups[] = $group_name; + } + + $g_metrics_group[$group_name][] = $metric_name; + } +} + +ksort($g_metrics_group); +foreach ( $g_metrics_group as $metric_group_name => $metric_group_members ) { +?> + <div data-role="collapsible" data-collapsed="true"> + <h3><?php print $metric_group_name . " (" . sizeof($metric_group_members) . ")"; ?></h3> +<?php + foreach ( $metric_group_members as $index => $metric_name ) { + print " + <A HREF=\"./graph_all_periods.php?mobile=1&" . $g_metrics[$metric_name]['graph'] . "\"> + <IMG BORDER=0 ALT=\"$clustername\" SRC=\"./graph.php?" . $g_metrics[$metric_name]['graph'] . "\"></A>"; + } +?> + </div> <!-- /collapsible --> +<?php +} // end of foreach ( $g_metrics_group +?> </div><!-- /content --> </div><!-- /page --> <?php This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vv...@us...> - 2010-12-06 19:23:15
|
Revision: 2393 http://ganglia.svn.sourceforge.net/ganglia/?rev=2393&view=rev Author: vvuksan Date: 2010-12-06 19:23:09 +0000 (Mon, 06 Dec 2010) Log Message: ----------- Handle clusters with spaces correctly and show number of graphs in the view correctly when using regex graphs Modified Paths: -------------- branches/monitor-web-2.0/mobile.php branches/monitor-web-2.0/views.php Modified: branches/monitor-web-2.0/mobile.php =================================================================== --- branches/monitor-web-2.0/mobile.php 2010-12-06 16:32:11 UTC (rev 2392) +++ branches/monitor-web-2.0/mobile.php 2010-12-06 19:23:09 UTC (rev 2393) @@ -52,7 +52,7 @@ <li><a href="#views">Views</a><span class="ui-li-count"><?php print sizeof($available_views); ?></span></li> <?php if ( sizeof($cluster_names) == 1) { - print '<li><a href="#cluster-' . urlencode($clustername) . '">Clusters</a><span class="ui-li-count">1</span></li>'; + print '<li><a href="#cluster-' . str_replace(" ", "_", $clustername) . '">Clusters</a><span class="ui-li-count">1</span></li>'; } else { ?> <li><a href="#clusters">Clusters</a><span class="ui-li-count"><?php print sizeof($cluster_names); ?></span></li> @@ -74,7 +74,7 @@ <?php // List all clusters foreach ( $cluster_names as $index => $clustername ) { - print '<li><a href="#cluster-' . urlencode($clustername) . '">' . $clustername . '</a></li>'; + print '<li><a href="#cluster-' . str_replace(" ", "_", $clustername) . '">' . $clustername . '</a></li>'; } ?> </ul> @@ -84,7 +84,7 @@ } // end of if (sizeof(cluster_names)) foreach ( $cluster_names as $index => $clustername ) { ?> - <div data-role="page" class="ganglia-mobile" id="cluster-<?php print urlencode($clustername); ?>"> + <div data-role="page" class="ganglia-mobile" id="cluster-<?php print str_replace(" ", "_", $clustername); ?>"> <div data-role="header"> <h1>Cluster <?php print $clustername; ?></h1> </div> @@ -92,8 +92,9 @@ <ul data-role="listview" data-theme="g"> <?php // List all hosts in the cluster + asort($cluster_array[$clustername]); foreach ( $cluster_array[$clustername] as $index => $hostname ) { - print '<li><a href="mobile_helper.php?show_host_metrics=1&h=' . $hostname . '&c=' . $clustername . '&r=' . $default_time_range . '">' . $hostname . '</a></li>'; + print '<li><a href="mobile_helper.php?show_host_metrics=1&h=' . $hostname . '&c=' . $clustername . '&r=' . $default_time_range . '">' . strip_domainname($hostname) . '</a></li>'; } ?> </ul> @@ -115,7 +116,8 @@ // List all the available views foreach ( $available_views as $view_id => $view ) { $v = $view['view_name']; - print '<li><a href="mobile_helper.php?view_name=' . $v . '&just_graphs=1&r=' . $default_time_range . '&cs=&ce=">' . $v . '</a><span class="ui-li-count">' . sizeof($view['items']) . '</span></li>'; + $elements = get_view_graph_elements($view); + print '<li><a href="mobile_helper.php?view_name=' . $v . '&just_graphs=1&r=' . $default_time_range . '&cs=&ce=">' . $v . '</a><span class="ui-li-count">' . sizeof($elements) . '</span></li>'; } ?> </ul> Modified: branches/monitor-web-2.0/views.php =================================================================== --- branches/monitor-web-2.0/views.php 2010-12-06 16:32:11 UTC (rev 2392) +++ branches/monitor-web-2.0/views.php 2010-12-06 19:23:09 UTC (rev 2393) @@ -185,7 +185,8 @@ # List all the available views foreach ( $available_views as $view_id => $view ) { $v = $view['view_name']; - print '<li><a href="#" onClick="getViewsContentJustGraphs(\'' . $v . '\', \'1hour\', \'\',\'\'); return false;">' . $v . ' (' . sizeof($view['items']) . ')</a></li>'; + $elements = get_view_graph_elements($view); + print '<li><a href="#" onClick="getViewsContentJustGraphs(\'' . $v . '\', \'1hour\', \'\',\'\'); return false;">' . $v . ' (' . sizeof($elements) . ')</a></li>'; } ?> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vv...@us...> - 2010-12-06 19:37:27
|
Revision: 2394 http://ganglia.svn.sourceforge.net/ganglia/?rev=2394&view=rev Author: vvuksan Date: 2010-12-06 19:37:21 +0000 (Mon, 06 Dec 2010) Log Message: ----------- Correctly handle empty views Modified Paths: -------------- branches/monitor-web-2.0/functions.php branches/monitor-web-2.0/mobile_helper.php branches/monitor-web-2.0/views.php Modified: branches/monitor-web-2.0/functions.php =================================================================== --- branches/monitor-web-2.0/functions.php 2010-12-06 19:23:09 UTC (rev 2393) +++ branches/monitor-web-2.0/functions.php 2010-12-06 19:37:21 UTC (rev 2394) @@ -726,7 +726,8 @@ case "standard": // Does view have any items/graphs defined if ( sizeof($view['items']) == 0 ) { - print "No graphs defined for this view. Please add some"; + continue; + // print "No graphs defined for this view. Please add some"; } else { foreach ( $view['items'] as $item_id => $item ) { Modified: branches/monitor-web-2.0/mobile_helper.php =================================================================== --- branches/monitor-web-2.0/mobile_helper.php 2010-12-06 19:23:09 UTC (rev 2393) +++ branches/monitor-web-2.0/mobile_helper.php 2010-12-06 19:37:21 UTC (rev 2394) @@ -71,11 +71,17 @@ if ( isset($_GET['cs']) && isset($_GET['ce']) ) $range_args .= "&cs=" . $_GET['cs'] . "&ce=" . $_GET['ce']; - foreach ( $view_elements as $id => $element ) { - print " - <A HREF=\"./graph_all_periods.php?mobile=1&" . $element['graph_args'] ."&z=mobile\"> - <IMG ALT=\"" . $element['hostname'] . " - " . $element['name'] . "\" BORDER=0 SRC=\"./graph.php?" . $element['graph_args'] . "&z=mobile" . $range_args . "\"></A>"; + if ( count($view_elements) != 0 ) { + foreach ( $view_elements as $id => $element ) { + print " + <A HREF=\"./graph_all_periods.php?mobile=1&" . $element['graph_args'] ."&z=mobile\"> + <IMG ALT=\"" . $element['hostname'] . " - " . $element['name'] . "\" BORDER=0 SRC=\"./graph.php?" . $element['graph_args'] . "&z=mobile" . $range_args . "\"></A>"; + } + } else { + print "No graphs defined for this view. Please add some"; } + + } // end of if ( $view['view_name'] == $view_name } // end of foreach ( $views as $view_id Modified: branches/monitor-web-2.0/views.php =================================================================== --- branches/monitor-web-2.0/views.php 2010-12-06 19:23:09 UTC (rev 2393) +++ branches/monitor-web-2.0/views.php 2010-12-06 19:37:21 UTC (rev 2394) @@ -186,7 +186,8 @@ foreach ( $available_views as $view_id => $view ) { $v = $view['view_name']; $elements = get_view_graph_elements($view); - print '<li><a href="#" onClick="getViewsContentJustGraphs(\'' . $v . '\', \'1hour\', \'\',\'\'); return false;">' . $v . ' (' . sizeof($elements) . ')</a></li>'; + print '<li><a href="#" onClick="getViewsContentJustGraphs(\'' . $v . '\', \'1hour\', \'\',\'\'); return false;">' . $v . ' (' . count($elements) . ')</a></li>'; + unset($elements); } ?> @@ -259,11 +260,14 @@ if ( isset($_GET['cs']) && isset($_GET['ce']) ) $range_args .= "&cs=" . $_GET['cs'] . "&ce=" . $_GET['ce']; - foreach ( $view_elements as $id => $element ) { - - print " - <A HREF=\"./graph_all_periods.php?" . $element['graph_args'] ."&z=large\"> - <IMG ALT=\"" . $element['hostname'] . " - " . $element['name'] . "\" BORDER=0 SRC=\"./graph.php?" . $element['graph_args'] . "&z=medium" . $range_args . "\"></A>"; + if ( count($view_elements) != 0 ) { + foreach ( $view_elements as $id => $element ) { + print " + <A HREF=\"./graph_all_periods.php?" . $element['graph_args'] ."&z=large\"> + <IMG ALT=\"" . $element['hostname'] . " - " . $element['name'] . "\" BORDER=0 SRC=\"./graph.php?" . $element['graph_args'] . "&z=medium" . $range_args . "\"></A>"; + } + } else { + print "No graphs defined for this view. Please add some"; } } // end of if ( $view['view_name'] == $view_name This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vv...@us...> - 2010-12-06 21:30:00
|
Revision: 2395 http://ganglia.svn.sourceforge.net/ganglia/?rev=2395&view=rev Author: vvuksan Date: 2010-12-06 21:29:54 +0000 (Mon, 06 Dec 2010) Log Message: ----------- Avoid the blank page when someone taps on the currently selected time range Modified Paths: -------------- branches/monitor-web-2.0/mobile.php branches/monitor-web-2.0/mobile_helper.php Modified: branches/monitor-web-2.0/mobile.php =================================================================== --- branches/monitor-web-2.0/mobile.php 2010-12-06 19:37:21 UTC (rev 2394) +++ branches/monitor-web-2.0/mobile.php 2010-12-06 21:29:54 UTC (rev 2395) @@ -94,7 +94,7 @@ // List all hosts in the cluster asort($cluster_array[$clustername]); foreach ( $cluster_array[$clustername] as $index => $hostname ) { - print '<li><a href="mobile_helper.php?show_host_metrics=1&h=' . $hostname . '&c=' . $clustername . '&r=' . $default_time_range . '">' . strip_domainname($hostname) . '</a></li>'; + print '<li><a href="mobile_helper.php?show_host_metrics=1&h=' . $hostname . '&c=' . $clustername . '&r=' . $default_time_range . '&cs=&ce=">' . strip_domainname($hostname) . '</a></li>'; } ?> </ul> @@ -117,7 +117,7 @@ foreach ( $available_views as $view_id => $view ) { $v = $view['view_name']; $elements = get_view_graph_elements($view); - print '<li><a href="mobile_helper.php?view_name=' . $v . '&just_graphs=1&r=' . $default_time_range . '&cs=&ce=">' . $v . '</a><span class="ui-li-count">' . sizeof($elements) . '</span></li>'; + print '<li><a href="mobile_helper.php?view_name=' . $v . '&r=' . $default_time_range . '&cs=&ce=">' . $v . '</a><span class="ui-li-count">' . sizeof($elements) . '</span></li>'; } ?> </ul> Modified: branches/monitor-web-2.0/mobile_helper.php =================================================================== --- branches/monitor-web-2.0/mobile_helper.php 2010-12-06 19:37:21 UTC (rev 2394) +++ branches/monitor-web-2.0/mobile_helper.php 2010-12-06 21:29:54 UTC (rev 2395) @@ -42,12 +42,13 @@ foreach ($context_ranges as $v) { $url=rawurlencode($v); - if ($v == $range) - $checked = "class=\"ui-btn-active\""; - else - $checked = ""; + if ($v == $range) { + $checked = "class=\"ui-btn-active\""; + $range_menu .= "<li><a $checked href='#' onclick='return false;'>$v</a></li>"; + } else { + $range_menu .= "<li><a href='mobile_helper.php?view_name=" . $_GET['view_name'] . "&r=" . $v . "&cs=&ce='>$v</a></li>"; + } - $range_menu .= "<li><a href='mobile_helper.php?view_name=" . $_GET['view_name'] . "&r=" . $v . "&cs=&ce='>$v</a></li>"; } print $range_menu; ?> @@ -115,12 +116,12 @@ foreach ($context_ranges as $v) { $url=rawurlencode($v); - if ($v == $range) + if ($v == $range) { $checked = "class=\"ui-btn-active\""; - else - $checked = ""; - - $range_menu .= "<li><a href='mobile_helper.php?show_host_metrics=1&h=" . $hostname . "&c=" . $clustername . "&r=" . $v . "&cs=&ce='>$v</a></li>"; + $range_menu .= "<li><a $checked href='#'>$v</a></li>"; + } else { + $range_menu .= "<li><a href='mobile_helper.php?show_host_metrics=1&h=" . $hostname . "&c=" . $clustername . "&r=" . $v . "&cs=&ce='>$v</a></li>"; + } } print $range_menu; ?> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vv...@us...> - 2010-12-06 21:53:45
|
Revision: 2396 http://ganglia.svn.sourceforge.net/ganglia/?rev=2396&view=rev Author: vvuksan Date: 2010-12-06 21:53:39 +0000 (Mon, 06 Dec 2010) Log Message: ----------- Remove the non-existent background Modified Paths: -------------- branches/monitor-web-2.0/mobile.php branches/monitor-web-2.0/mobile_helper.php Modified: branches/monitor-web-2.0/mobile.php =================================================================== --- branches/monitor-web-2.0/mobile.php 2010-12-06 21:29:54 UTC (rev 2395) +++ branches/monitor-web-2.0/mobile.php 2010-12-06 21:53:39 UTC (rev 2396) @@ -19,12 +19,7 @@ <script src="js/jquery-1.4.4.min.js"></script> <script src="js/jquery.mobile-1.0a2.min.js"></script> <style> -.ui-mobile .ganglia-mobile { background: #e5e5e5 url(../images/jqm-sitebg.png) top center repeat-x; } -.ui-mobile #mobile-homeheader { padding: 55px 25px 0; text-align: center } -.ui-mobile #mobile-homeheader h1 { margin: 0 0 10px; } -.ui-mobile #mobile-homeheader p { margin: 0; } -.ui-mobile #mobile-version { text-indent: -99999px; background: url(../images/version.png) top right no-repeat; width: 119px; height: 122px; overflow: hidden; position: absolute; top: 0; right: 0; } -.ui-mobile .mobile-themeswitcher { clear: both; margin: 20px 0 0; } +.ui-mobile .ganglia-mobile { background: #e5e5e5 top center repeat-x; } h2 { margin-top:1.5em; } p code { font-size:1.2em; font-weight:bold; } dt { font-weight: bold; margin: 2em 0 .5em; } Modified: branches/monitor-web-2.0/mobile_helper.php =================================================================== --- branches/monitor-web-2.0/mobile_helper.php 2010-12-06 21:29:54 UTC (rev 2395) +++ branches/monitor-web-2.0/mobile_helper.php 2010-12-06 21:53:39 UTC (rev 2396) @@ -10,7 +10,7 @@ <head> <title>Ganglia Mobile</title> <style> -.ui-mobile .ganglia-mobile { background: #e5e5e5 url(../images/jqm-sitebg.png) top center repeat-x; } +.ui-mobile .ganglia-mobile { background: #e5e5e5 top center repeat-x; } </style> </head> <body> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vv...@us...> - 2010-12-07 01:40:25
|
Revision: 2397 http://ganglia.svn.sourceforge.net/ganglia/?rev=2397&view=rev Author: vvuksan Date: 2010-12-07 01:40:16 +0000 (Tue, 07 Dec 2010) Log Message: ----------- Add cluster summary to mobile view Modified Paths: -------------- branches/monitor-web-2.0/mobile.php branches/monitor-web-2.0/mobile_helper.php Modified: branches/monitor-web-2.0/mobile.php =================================================================== --- branches/monitor-web-2.0/mobile.php 2010-12-06 21:53:39 UTC (rev 2396) +++ branches/monitor-web-2.0/mobile.php 2010-12-07 01:40:16 UTC (rev 2397) @@ -32,6 +32,8 @@ foreach ( $index_array['cluster'] as $hostname => $clustername ) { $cluster_array[$clustername][] = $hostname; } + + print_r($index_array); $cluster_names = array_keys($cluster_array); $available_views = get_available_views(); @@ -69,7 +71,7 @@ <?php // List all clusters foreach ( $cluster_names as $index => $clustername ) { - print '<li><a href="#cluster-' . str_replace(" ", "_", $clustername) . '">' . $clustername . '</a></li>'; + print '<li><a href="#cluster-' . str_replace(" ", "_", $clustername) . '">' . $clustername . '</a><span class="ui-li-count">' . sizeof($cluster_array[$clustername]) . '</span></li>'; } ?> </ul> @@ -77,6 +79,10 @@ </div><!-- /page --> <?php } // end of if (sizeof(cluster_names)) + +/////////////////////////////////////////////////////////////////////////////// +// Create a sub-page for every cluster +/////////////////////////////////////////////////////////////////////////////// foreach ( $cluster_names as $index => $clustername ) { ?> <div data-role="page" class="ganglia-mobile" id="cluster-<?php print str_replace(" ", "_", $clustername); ?>"> @@ -86,6 +92,7 @@ <div data-role="content"> <ul data-role="listview" data-theme="g"> <?php + print '<li><a href="mobile_helper.php?show_cluster_metrics=1&c=' . $clustername . '&r=' . $default_time_range . '&cs=&ce=">Cluster Summary</a></li>'; // List all hosts in the cluster asort($cluster_array[$clustername]); foreach ( $cluster_array[$clustername] as $index => $hostname ) { Modified: branches/monitor-web-2.0/mobile_helper.php =================================================================== --- branches/monitor-web-2.0/mobile_helper.php 2010-12-06 21:53:39 UTC (rev 2396) +++ branches/monitor-web-2.0/mobile_helper.php 2010-12-07 01:40:16 UTC (rev 2397) @@ -92,6 +92,86 @@ </div> <!-- /page -->"; } // end of if ( isset($_GET['view_name'])) /////////////////////////////////////////////////////////////////////////////// +// Generate cluster summary view +/////////////////////////////////////////////////////////////////////////////// +if ( isset($_GET['show_cluster_metrics'])) { + $clustername = $_GET['c']; +?> + <div data-role="page" class="ganglia-mobile" id="viewhost-<?php print $hostname; ?>"> + <div data-role="header" data-position="fixed"> + <h3>Cluster <?php print $clustername; ?></h3> + <div data-role="navbar"> + <ul> + <?php + // Header bar support up to 5 items. 5+ items will be shown in multiple + // rows. Thus we'll limit to first 5 time ranges + $my_ranges = array_keys( $time_ranges ); + for ( $i = 0 ; $i < 5 ; $i++ ) { + $context_ranges[] = $my_ranges[$i]; + } + + $range_menu = ""; + $range = $_GET['r']; + + foreach ($context_ranges as $v) { + $url=rawurlencode($v); + if ($v == $range) { + $checked = "class=\"ui-btn-active\""; + $range_menu .= "<li><a $checked href='#'>$v</a></li>"; + } else { + $range_menu .= "<li><a href='mobile_helper.php?show_cluster_metrics=1&c=" . $clustername . "&r=" . $v . "&cs=&ce='>$v</a></li>"; + } + } + print $range_menu; + ?> + </ul> + </div><!-- /navbar --> + </div><!-- /header --> + + <div data-role="content"> +<?php + $graph_args = "c=$clustername&r=$range"; + + /////////////////////////////////////////////////////////////////////////// + // Let's find out what optional reports are included + // First we find out what the default (site-wide) reports are then look + // for host specific included or excluded reports + /////////////////////////////////////////////////////////////////////////// + $default_reports = array("included_reports" => array(), "excluded_reports" => array()); + if ( is_file($GLOBALS['conf_dir'] . "/default.json") ) { + $default_reports = array_merge($default_reports,json_decode(file_get_contents($GLOBALS['conf_dir'] . "/default.json"), TRUE)); + } + + $cluster_file = $GLOBALS['conf_dir'] . "/cluster_" . $clustername . ".json"; + $override_reports = array("included_reports" => array(), "excluded_reports" => array()); + if ( is_file($cluster_file) ) { + $override_reports = array_merge($override_reports, json_decode(file_get_contents($cluster_file), TRUE)); + } + + # Merge arrays + $reports["included_reports"] = array_merge( $default_reports["included_reports"] , $override_reports["included_reports"]); + $reports["excluded_reports"] = array_merge($default_reports["excluded_reports"] , $override_reports["excluded_reports"]); + + # Remove duplicates + $reports["included_reports"] = array_unique($reports["included_reports"]); + $reports["excluded_reports"] = array_unique($reports["excluded_reports"]); + + foreach ( $reports["included_reports"] as $index => $report_name ) { + if ( ! in_array( $report_name, $reports["excluded_reports"] ) ) { + print "<a name=metric_" . $report_name . "> + <A HREF=\"./graph_all_periods.php?$graph_args&g=" . $report_name . "&z=mobile&c=$clustername\"> + <IMG BORDER=0 ALT=\"$clustername\" SRC=\"./graph.php?$graph_args&g=" . $report_name ."&z=mobile&c=$clustername\"></A> + "; + } + + } + +?> + </div><!-- /content --> + </div> <!-- /page -->"; +<?php +} +/////////////////////////////////////////////////////////////////////////////// // Generate host view /////////////////////////////////////////////////////////////////////////////// if ( isset($_GET['show_host_metrics'])) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vv...@us...> - 2010-12-07 02:14:53
|
Revision: 2399 http://ganglia.svn.sourceforge.net/ganglia/?rev=2399&view=rev Author: vvuksan Date: 2010-12-07 02:14:47 +0000 (Tue, 07 Dec 2010) Log Message: ----------- Remove number of graphs from the view list since there is a race condition. Need to rework it Modified Paths: -------------- branches/monitor-web-2.0/mobile.php branches/monitor-web-2.0/views.php Modified: branches/monitor-web-2.0/mobile.php =================================================================== --- branches/monitor-web-2.0/mobile.php 2010-12-07 01:51:37 UTC (rev 2398) +++ branches/monitor-web-2.0/mobile.php 2010-12-07 02:14:47 UTC (rev 2399) @@ -33,7 +33,6 @@ $cluster_array[$clustername][] = $hostname; } - print_r($index_array); $cluster_names = array_keys($cluster_array); $available_views = get_available_views(); @@ -118,8 +117,7 @@ // List all the available views foreach ( $available_views as $view_id => $view ) { $v = $view['view_name']; - $elements = get_view_graph_elements($view); - print '<li><a href="mobile_helper.php?view_name=' . $v . '&r=' . $default_time_range . '&cs=&ce=">' . $v . '</a><span class="ui-li-count">' . sizeof($elements) . '</span></li>'; + print '<li><a href="mobile_helper.php?view_name=' . $v . '&r=' . $default_time_range . '&cs=&ce=">' . $v . '</a></li>'; } ?> </ul> Modified: branches/monitor-web-2.0/views.php =================================================================== --- branches/monitor-web-2.0/views.php 2010-12-07 01:51:37 UTC (rev 2398) +++ branches/monitor-web-2.0/views.php 2010-12-07 02:14:47 UTC (rev 2399) @@ -185,9 +185,7 @@ # List all the available views foreach ( $available_views as $view_id => $view ) { $v = $view['view_name']; - $elements = get_view_graph_elements($view); - print '<li><a href="#" onClick="getViewsContentJustGraphs(\'' . $v . '\', \'1hour\', \'\',\'\'); return false;">' . $v . ' (' . count($elements) . ')</a></li>'; - unset($elements); + print '<li><a href="#" onClick="getViewsContentJustGraphs(\'' . $v . '\', \'1hour\', \'\',\'\'); return false;">' . $v . '</a></li>'; } ?> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vv...@us...> - 2010-12-07 19:26:02
|
Revision: 2400 http://ganglia.svn.sourceforge.net/ganglia/?rev=2400&view=rev Author: vvuksan Date: 2010-12-07 19:25:56 +0000 (Tue, 07 Dec 2010) Log Message: ----------- Add search to mobile view. Fix the search so the search window disappears when you change tab Modified Paths: -------------- branches/monitor-web-2.0/graph_all_periods.php branches/monitor-web-2.0/js/ganglia.js branches/monitor-web-2.0/mobile.php branches/monitor-web-2.0/search.php branches/monitor-web-2.0/templates/default/header.tpl Modified: branches/monitor-web-2.0/graph_all_periods.php =================================================================== --- branches/monitor-web-2.0/graph_all_periods.php 2010-12-07 02:14:47 UTC (rev 2399) +++ branches/monitor-web-2.0/graph_all_periods.php 2010-12-07 19:25:56 UTC (rev 2400) @@ -3,10 +3,6 @@ <head> <title>Ganglia: Metric <?php if (isset($_GET['g'])) echo $_GET['g']; else echo $_GET['m']; ?></title> </head> -<style> -.ui-mobile .ganglia-mobile { background: #e5e5e5 url(../images/jqm-sitebg.png) top center repeat-x; } -</style> -</head> <body> <?php Modified: branches/monitor-web-2.0/js/ganglia.js =================================================================== --- branches/monitor-web-2.0/js/ganglia.js 2010-12-07 02:14:47 UTC (rev 2399) +++ branches/monitor-web-2.0/js/ganglia.js 2010-12-07 19:25:56 UTC (rev 2400) @@ -4,7 +4,8 @@ $( "#range_menu" ).buttonset(); $( "#sort_menu" ).buttonset(); $( "#mobile_view_link").button(); - jQuery('#metric-search input[name="q"]').liveSearch({url: 'search.php?q=', typeDelay: 800}); + jQuery('#metric-search input[name="q"]').liveSearch({url: 'search.php?q=', typeDelay: 500}); + $( "#datepicker-cs" ).datepicker({ showOn: "button", buttonImage: "img/calendar.gif", Modified: branches/monitor-web-2.0/mobile.php =================================================================== --- branches/monitor-web-2.0/mobile.php 2010-12-07 02:14:47 UTC (rev 2399) +++ branches/monitor-web-2.0/mobile.php 2010-12-07 19:25:56 UTC (rev 2400) @@ -18,6 +18,8 @@ <link rel="stylesheet" href="css/jquery.mobile-1.0a2.min.css" /> <script src="js/jquery-1.4.4.min.js"></script> <script src="js/jquery.mobile-1.0a2.min.js"></script> +<script type="text/javascript" src="js/jquery.liveSearch.js"></script> +<link type="text/css" href="css/jquery.liveSearch.css" rel="stylesheet" /> <style> .ui-mobile .ganglia-mobile { background: #e5e5e5 top center repeat-x; } h2 { margin-top:1.5em; } @@ -55,6 +57,7 @@ <?php } ?> + <li><a href="#search">Search</a></li> </ul> </div><!-- /content --> </div><!-- /page --> @@ -123,5 +126,32 @@ </ul> </div><!-- /content --> </div><!-- /page --> +<?php +/////////////////////////////////////////////////////////////////////////////// +// Search +/////////////////////////////////////////////////////////////////////////////// +?> +<script> +$(function(){ + jQuery('#search input[name="q"]').liveSearch({url: 'search.php?mobile=1&q=', typeDelay: 1000}); +}); + +</script> +<div data-role="page" class="ganglia-mobile" id="search"> + <div data-role="header"> + <h1>Search</h1> + </div> + <div data-role="content"> + <form method="post" action="/search/"> + <p> + <label> + Search for host or a metric: <br /> + <input type="text" name="q" id="search-field-q" on size=40 /> + </label> + </p> + </form> + </div> + </div><!-- /content --> +</div><!-- /page --> </body> </html> Modified: branches/monitor-web-2.0/search.php =================================================================== --- branches/monitor-web-2.0/search.php 2010-12-07 02:14:47 UTC (rev 2399) +++ branches/monitor-web-2.0/search.php 2010-12-07 19:25:56 UTC (rev 2400) @@ -1,3 +1,8 @@ +<script> +$( "#tabs" ).bind( "tabsshow", function(event, ui) { + jQuery('#jquery-live-search').slideUp(0); + }); +</script> <?php require_once('./conf.php'); @@ -5,6 +10,11 @@ // Load the metric caching code require_once('./cache.php'); +if ( isset($_GET['mobile'])) + $mobile = 1; +else + $mobile = 0; + $results = ""; if ( isset($_GET['q']) && $_GET['q'] != "" ) { @@ -14,7 +24,10 @@ foreach ( $index_array['hosts'] as $key => $host_name ) { if ( preg_match("/$query/", $host_name ) ) { $cluster_name = $index_array['cluster'][$host_name]; - $results .= "Host: <a target=\"_blank\" href=\"?c=" . $cluster_name . "&h=" . $host_name . "&m=cpu_report&r=hour&s=descending&hc=4&mc=2\">" . $host_name . "</a><br>"; + if ( $mobile ) + $results .= 'Host: <a onclick="jQuery(\'#jquery-live-search\').slideUp(0)" href="mobile_helper.php?show_host_metrics=1&h=' . $host_name . '&c=' . $cluster_name . '&r=' . $default_time_range . '&cs=&ce=">' . $host_name . '</a><br />'; + else + $results .= "Host: <a target=\"_blank\" href=\"?c=" . $cluster_name . "&h=" . $host_name . "&m=cpu_report&r=" . $default_time_range ."&s=descending&hc=4&mc=2\">" . $host_name . "</a><br>"; } } @@ -23,7 +36,11 @@ if ( preg_match("/$query/", $metric_name ) ) { foreach ( $hosts as $key => $host_name ) { $cluster_name = $index_array['cluster'][$host_name]; - $results .= "Metric: <a target=\"_blank\" href=\"?c=" . $cluster_name . "&h=" . $host_name . "&m=cpu_report&r=hour&s=descending&hc=4&mc=2#metric_" . $metric_name . "\">" . $host_name . " (" . $metric_name . " )</a><br>"; + + if ( $mobile ) + $results .= 'Metric: <a onclick="jQuery(\'#jquery-live-search\').slideUp(0)" href="mobile_helper.php?show_host_metrics=1&h=' . $host_name . '&c=' . $cluster_name . '&r=' . $default_time_range . '&cs=&ce=">' . $host_name . " (" . $metric_name . " )</a><br>"; + else + $results .= "Metric: <a target=\"_blank\" href=\"?c=" . $cluster_name . "&h=" . $host_name . "&m=cpu_report&r=hour&s=descending&hc=4&mc=2#metric_" . $metric_name . "\">" . $host_name . " (" . $metric_name . " )</a><br>"; } } } Modified: branches/monitor-web-2.0/templates/default/header.tpl =================================================================== --- branches/monitor-web-2.0/templates/default/header.tpl 2010-12-07 02:14:47 UTC (rev 2399) +++ branches/monitor-web-2.0/templates/default/header.tpl 2010-12-07 19:25:56 UTC (rev 2400) @@ -13,7 +13,6 @@ <LINK rel="stylesheet" href="./styles.css" type="text/css"> <script> var availablemetrics = [ {$available_metrics} ]; - $(function(){ $( "#metrics-picker" ).autocomplete({ source: availablemetrics @@ -30,7 +29,7 @@ <div id="tabs"> <ul> <li><a href="#tabs-main">Main</a></li> - <li><a href="#tabs-search" onclick="getSearchContent();">Search</a></li> + <li><a href="#tabs-search">Search</a></li> <li><a href="#tabs-views" onclick="getViewsContent();">Views</a></li> <li><a href="#tabs-autorotation" onclick="autoRotationChooser();">Automatic Rotation</a></li> <a id="mobile_view_link" href="mobile.php">Mobile</a> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vv...@us...> - 2010-12-08 02:03:11
|
Revision: 2404 http://ganglia.svn.sourceforge.net/ganglia/?rev=2404&view=rev Author: vvuksan Date: 2010-12-08 02:03:05 +0000 (Wed, 08 Dec 2010) Log Message: ----------- Add a TODO Modified Paths: -------------- branches/monitor-web-2.0/search.php Added Paths: ----------- branches/monitor-web-2.0/TODO Added: branches/monitor-web-2.0/TODO =================================================================== --- branches/monitor-web-2.0/TODO (rev 0) +++ branches/monitor-web-2.0/TODO 2010-12-08 02:03:05 UTC (rev 2404) @@ -0,0 +1,47 @@ +Graphs + +- Cross-rendering engine graphs using JSON ie. a single definition file that works on + both rrdtool and graphite. Something along these lines + +{ + "report_name" : "apache_report", + "report_type" : "standard", + "items" : [ "apache_200", "apache_300", "apache_400", "apache_500" ], + "colors" : [ "aaaaaa", "bbbbbb", "cccccc", "dddddd" ], + "ylegend" : "hps" +} + +- Zooming + +Views + +- Support regex expressions for metrics in regex views +Suggestions from Ben Hartshorne. +- Color code by host or metric, so as to easily differentiate +- Do something else to sort by host or metric, such as all metrics from a specific host in a row +- group by metric or group by host - right now it lists all hosts metric A, then all hosts metric B (when +using the regex) + + +Caching + +- Figure out a better way to cache metrics +- Avoid race conditions + +Mobile + +- Add ability to specify arbitrary time ranges + +Graphite + +- Add polish to Graphite integration +- Fix CPU report for Cluster summary. Needs to be "scaled" by number of nodes + +Documentation + +- Add user guide + + +New features + +- Implement aggregate graphs (line and stacked) Modified: branches/monitor-web-2.0/search.php =================================================================== --- branches/monitor-web-2.0/search.php 2010-12-08 01:31:49 UTC (rev 2403) +++ branches/monitor-web-2.0/search.php 2010-12-08 02:03:05 UTC (rev 2404) @@ -25,7 +25,7 @@ if ( preg_match("/$query/i", $host_name ) ) { $cluster_name = $index_array['cluster'][$host_name]; if ( $mobile ) - $results .= 'Host: <a onclick="jQuery(\'#jquery-live-search\').slideUp(0)" href="mobile_helper.php?show_host_metrics=1&h=' . $host_name . '&c=' . $cluster_name . '&r=' . $default_time_range . '&cs=&ce=">' . $host_name . '</a><br />'; + $results .= '<a onclick="jQuery(\'#jquery-live-search\').slideUp(0)" href="mobile_helper.php?show_host_metrics=1&h=' . $host_name . '&c=' . $cluster_name . '&r=' . $default_time_range . '&cs=&ce=">Host: ' . $host_name . '</a>'; else $results .= "Host: <a target=\"_blank\" href=\"?c=" . $cluster_name . "&h=" . $host_name . "&m=cpu_report&r=" . $default_time_range ."&s=descending&hc=4&mc=2\">" . $host_name . "</a><br>"; } @@ -50,9 +50,16 @@ } if ( $results == "" ) { - print "No results. Try a different search term. Currently only one search term supported."; + print "No results. Try a different search term. One term only."; } else { - print $results; + + if ( $mobile ) { + + print $results; + } else { + print $results; + } + } ?> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ber...@us...> - 2011-01-05 00:08:54
|
Revision: 2417 http://ganglia.svn.sourceforge.net/ganglia/?rev=2417&view=rev Author: bernardli Date: 2011-01-05 00:08:48 +0000 (Wed, 05 Jan 2011) Log Message: ----------- The "Mobile" tab is now aligned with the other tabs; tab URLs are followed instead of having their contents loaded via ajax. Modified Paths: -------------- branches/monitor-web-2.0/js/ganglia.js branches/monitor-web-2.0/templates/default/header.tpl Modified: branches/monitor-web-2.0/js/ganglia.js =================================================================== --- branches/monitor-web-2.0/js/ganglia.js 2010-12-21 19:17:58 UTC (rev 2416) +++ branches/monitor-web-2.0/js/ganglia.js 2011-01-05 00:08:48 UTC (rev 2417) @@ -1,9 +1,19 @@ $(function(){ - $("#tabs").tabs(); + // Follow tab's URL instead of loading its content via ajax + $("#tabs").tabs({ + select: function(event, ui) { + var url = $.data(ui.tab, 'load.tabs'); + if ( url ) { + location.href = url; + return false; + } + return true; + } + }); $( "#range_menu" ).buttonset(); $( "#sort_menu" ).buttonset(); - $( "#mobile_view_link").button(); + jQuery('#metric-search input[name="q"]').liveSearch({url: 'search.php?q=', typeDelay: 500}); $( "#datepicker-cs" ).datepicker({ @@ -103,4 +113,4 @@ document.getElementById("datepicker-ce").value = ""; if (! clearonly) document.ganglia_form.submit(); -} \ No newline at end of file +} Modified: branches/monitor-web-2.0/templates/default/header.tpl =================================================================== --- branches/monitor-web-2.0/templates/default/header.tpl 2010-12-21 19:17:58 UTC (rev 2416) +++ branches/monitor-web-2.0/templates/default/header.tpl 2011-01-05 00:08:48 UTC (rev 2417) @@ -32,7 +32,7 @@ <li><a href="#tabs-search">Search</a></li> <li><a href="#tabs-views" onclick="getViewsContent();">Views</a></li> <li><a href="#tabs-autorotation" onclick="autoRotationChooser();">Automatic Rotation</a></li> - <a id="mobile_view_link" href="mobile.php">Mobile</a> + <li><a href="mobile.php">Mobile</a></li> </ul> <div id="tabs-main"> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ber...@us...> - 2011-01-05 01:14:00
|
Revision: 2418 http://ganglia.svn.sourceforge.net/ganglia/?rev=2418&view=rev Author: bernardli Date: 2011-01-05 01:13:54 +0000 (Wed, 05 Jan 2011) Log Message: ----------- Implement "Home" button for mobile pages with depth >= 2 Modified Paths: -------------- branches/monitor-web-2.0/TODO branches/monitor-web-2.0/graph_all_periods.php branches/monitor-web-2.0/mobile_helper.php Modified: branches/monitor-web-2.0/TODO =================================================================== --- branches/monitor-web-2.0/TODO 2011-01-05 00:08:48 UTC (rev 2417) +++ branches/monitor-web-2.0/TODO 2011-01-05 01:13:54 UTC (rev 2418) @@ -37,7 +37,6 @@ - Add ability to specify arbitrary time ranges - Add support for multi-touch enlarging of graphs - Allow hosts to be named the same in multiple clusters (right now they are filtered out) -- Add a "Home" button to quickly go back to main page - Mobile browser detection code to automatically use mobile version - Clicking on a metric search result should bring up the host page anchoring at the metric graph in question Modified: branches/monitor-web-2.0/graph_all_periods.php =================================================================== --- branches/monitor-web-2.0/graph_all_periods.php 2011-01-05 00:08:48 UTC (rev 2417) +++ branches/monitor-web-2.0/graph_all_periods.php 2011-01-05 01:13:54 UTC (rev 2418) @@ -10,7 +10,9 @@ ?> <div data-role="page" class="ganglia-mobile" id="view-home"> <div data-role="header"> + <a href="#" class="ui-btn-left" data-icon="arrow-l" onclick="history.back(); return false">Back</a> <h3><?php if (isset($_GET['g'])) echo $_GET['g']; else echo $_GET['m']; ?></h3> + <a href="#mobile-home">Home</a> </div> <div data-role="content"> <?php Modified: branches/monitor-web-2.0/mobile_helper.php =================================================================== --- branches/monitor-web-2.0/mobile_helper.php 2011-01-05 00:08:48 UTC (rev 2417) +++ branches/monitor-web-2.0/mobile_helper.php 2011-01-05 01:13:54 UTC (rev 2418) @@ -22,7 +22,9 @@ ?> <div data-role="page" class="ganglia-mobile" id="view-home"> <div data-role="header"> + <a href="#" class="ui-btn-left" data-icon="arrow-l" onclick="history.back(); return false">Back</a> <h1>View <?php print $_GET['view_name']; ?></h1> + <a href="#mobile-home">Home</a> <div data-role="navbar"> <ul> <?php @@ -99,7 +101,9 @@ ?> <div data-role="page" class="ganglia-mobile" id="viewhost-<?php print $hostname; ?>"> <div data-role="header" data-position="fixed"> + <a href="#" class="ui-btn-left" data-icon="arrow-l" onclick="history.back(); return false">Back</a> <h3>Cluster <?php print $clustername; ?></h3> + <a href="#mobile-home">Home</a> <div data-role="navbar"> <ul> <?php @@ -180,7 +184,9 @@ ?> <div data-role="page" class="ganglia-mobile" id="viewhost-<?php print $hostname; ?>"> <div data-role="header" data-position="fixed"> + <a href="#" class="ui-btn-left" data-icon="arrow-l" onclick="history.back(); return false">Back</a> <h3>Host <?php print $hostname; ?></h3> + <a href="#mobile-home">Home</a> <div data-role="navbar"> <ul> <?php This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vv...@us...> - 2011-01-06 16:35:29
|
Revision: 2421 http://ganglia.svn.sourceforge.net/ganglia/?rev=2421&view=rev Author: vvuksan Date: 2011-01-06 16:35:23 +0000 (Thu, 06 Jan 2011) Log Message: ----------- Add Zoom support done by @kastner. Need to add class=zoomable to graphs that need zoom Modified Paths: -------------- branches/monitor-web-2.0/templates/default/header.tpl Added Paths: ----------- branches/monitor-web-2.0/js/jquery.gangZoom.js Added: branches/monitor-web-2.0/js/jquery.gangZoom.js =================================================================== --- branches/monitor-web-2.0/js/jquery.gangZoom.js (rev 0) +++ branches/monitor-web-2.0/js/jquery.gangZoom.js 2011-01-06 16:35:23 UTC (rev 2421) @@ -0,0 +1,114 @@ +(function ($) { + $.fn.gangZoom = function (options) { + var opts = $.extend({}, $.fn.gangZoom.defaults, options); + + if (! $.fn.gangZoom.styleAdded && opts.defaultStyle) { + $("<style type='text/css'>" + opts.defaultStyle + "</style>").appendTo("head"); + $.fn.gangZoom.styleAdded = true; + } + + return this.each(function() { + var self = this; + self.img = $(self); + self.mouseDown = false; + + self.getTimes = function () { + var timeSpan = opts.endTime - opts.startTime; + var graphWidth = self.img.width() - (opts.paddingLeft + opts.paddingRight); + var secondsPerPixel = timeSpan / graphWidth; + var selWidth = self.float.width(); + var selStart = self.float.position().left - self.img.offset().left; + var selStartTime = opts.startTime + ((selStart - opts.paddingLeft) * secondsPerPixel); + var selEndTime = selWidth * secondsPerPixel + selStartTime; + + return { startTime: selStartTime, endTime: selEndTime }; + } + + self.cancel = function () { + self.mouseDown = false; + var box = self.getTimes(); + opts.cancel(box.startTime, box.endTime); + }; + + $(document.body).mouseup(function (event) { + if (self.mouseDown) { + self.mouseDown = false; + self.cancel(); + } + }) + .keyup(function (event) { + if (event.keyCode == 27 && self.mouseDown) { + self.mouseDown = false; + self.cancel(); + } + }); + + self.img.mousedown(function (event) { + self.shouldStopClick = false; + var evt = event; + + setTimeout(function () { + evt.stopPropagation(); + + self.shouldStopClick = true; + self.mouseDown = true; + + $("#" + opts.floatId).remove(); + + var clickX = evt.pageX; + var clickY = evt.pageY; + + self.startX = clickX; + + var float = $("<div id='" + opts.floatId + "'>") + .css({ position: "absolute", left: clickX, top: clickY - 5, zIndex: 1000 }) + .width(10) + .height(10) + .mousemove(function() { return true; }) + .mouseup(function() { return true; }) + .keyup(function() { return true; }) + .appendTo(document.body); + + self.float = float; + + }, opts.clickTimeout); + }) + .mousemove(function (evt) { + if (self.mouseDown && self.float) { + var clickX = evt.pageX; + if (self.startX > clickX) { + self.float.css({ left: clickX }); + } + + self.float.width(Math.abs(clickX - self.startX)); + } + }) + .mouseup(function (evt) { + if (self.mouseDown) { + self.mouseDown = false; + var box = self.getTimes(); + opts.done(box.startTime, box.endTime); + } + }) + .click(function (event) { + if (self.shouldStopClick) { + event.preventDefault(); + } + }); + }); + } + + $.fn.gangZoom.defaults = { + clickTimeout: 500, + floatId: 'gangZoomFloater', + defaultStyle: "#gangZoomFloater { border: 1px solid black; background: white; opacity: 0.7 }", + startTime: ((new Date()).getTime() / 1000) - 3600, + endTime: (new Date()).getTime() / 1000, + paddingLeft: 20, + paddingRight: 20, + done: function (startTime, endTime) {}, + cancel: function (startTime, endTime) {} + } + + $.fn.gangZoom.styleAdded = false; +})(jQuery); Modified: branches/monitor-web-2.0/templates/default/header.tpl =================================================================== --- branches/monitor-web-2.0/templates/default/header.tpl 2011-01-05 19:09:06 UTC (rev 2420) +++ branches/monitor-web-2.0/templates/default/header.tpl 2011-01-06 16:35:23 UTC (rev 2421) @@ -12,13 +12,37 @@ <link type="text/css" href="css/jquery.liveSearch.css" rel="stylesheet" /> <LINK rel="stylesheet" href="./styles.css" type="text/css"> <script> - var availablemetrics = [ {$available_metrics} ]; - $(function(){ - $( "#metrics-picker" ).autocomplete({ - source: availablemetrics + var availablemetrics = [ {$available_metrics} ]; + $(function(){ + $( "#metrics-picker" ).autocomplete({ + source: availablemetrics + }); + {$is_metrics_picker_disabled} + }); - {$is_metrics_picker_disabled} -}); + + $(function () { + $(".zoomable").gangZoom({ + startTime: {$start_timestamp}, + endTime: {$end_timestamp}, + paddingLeft: 67, + paddingRight: 30, + done: function (startTime, endTime) { + setStartAndEnd(startTime, endTime); + document.forms['ganglia_form'].submit(); + }, + cancel: function (startTime, endTime) { + setStartAndEnd(startTime, endTime); + } + }); + + function setStartAndEnd(startTime, endTime) { + $("#datepicker-cs").val(Math.floor(startTime)); + $("#datepicker-ce").val(Math.floor(endTime)); + } + }); + + </script> {$custom_time_head} </HEAD> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vv...@us...> - 2011-01-17 02:22:42
|
Revision: 2429 http://ganglia.svn.sourceforge.net/ganglia/?rev=2429&view=rev Author: vvuksan Date: 2011-01-17 02:22:36 +0000 (Mon, 17 Jan 2011) Log Message: ----------- Added Alex Dean's (JSON representations of custom graphs) as seen here http://bugzilla.ganglia.info/cgi-bin/bugzilla/show_bug.cgi?id=291 made minor changes and corrections. Modified Paths: -------------- branches/monitor-web-2.0/functions.php branches/monitor-web-2.0/graph.d/network_report.json branches/monitor-web-2.0/graph.php branches/monitor-web-2.0/graph_all_periods.php Removed Paths: ------------- branches/monitor-web-2.0/graph.d/network_report.php Modified: branches/monitor-web-2.0/functions.php =================================================================== --- branches/monitor-web-2.0/functions.php 2011-01-13 00:46:49 UTC (rev 2428) +++ branches/monitor-web-2.0/functions.php 2011-01-17 02:22:36 UTC (rev 2429) @@ -801,4 +801,73 @@ } +/** + * Populate $rrdtool_graph from $config (from JSON file). + */ +function build_rrdtool_args_from_json( &$rrdtool_graph, $config ) { + global $context, + $hostname, + $range, + $rrd_dir, + $size, + $strip_domainname, + $graphreport_stats; + + if ($strip_domainname) { + $hostname = strip_domainname($hostname); + } + + $title = sanitize( $config[ 'title' ] ); + $rrdtool_graph[ 'title' ] = ($context == 'host') ? "$hostname $title last $range" : $title; + $rrdtool_graph[ 'vertical-label' ] = sanitize( $config[ 'vertical-label' ] ); + + $rrdtool_graph['height'] += ($size == 'medium') ? 28 : 0; + if( $graphreport_stats ) { + $rrdtool_graph['height'] += ($size == 'medium') ? 52 : 0; + } + + // find longest label length, so we pad the others accordingly to get consistent column alignment + $max_label_length = 0; + foreach( $config[ 'series' ] as $item ) { + $max_label_length = max( strlen( $item[ 'label' ] ), $max_label_length ); + } + + $series = ''; + foreach( $config[ 'series' ] as $item ) { + $label = str_pad( sanitize( $item[ 'label' ] ), $max_label_length ); + $metric = sanitize( $item[ 'metric' ] ); + $series .= "DEF:'$metric'='${rrd_dir}/$metric.rrd':'sum':AVERAGE " + . strtoupper( sanitize( $item['style'] ) ).":'$metric'#${item['color']}:'${label}'" + . ( isset($item[ 'stack' ]) && $item[ 'stack' ] ? ":STACK" : "" ) . " "; + + if ( $graphreport_stats ) { + $series .= "VDEF:${metric}_last=$metric,LAST " + . "VDEF:${metric}_min=$metric,MINIMUM " + . "VDEF:${metric}_avg=$metric,AVERAGE " + . "VDEF:${metric}_max=$metric,MAXIMUM " + . "GPRINT:'${metric}_last':'Now\:%5.1lf%s' " + . "GPRINT:'${metric}_min':'Min\:%5.1lf%s' " + . "GPRINT:'${metric}_avg':'Avg\:%5.1lf%s' " + . "GPRINT:'${metric}_max':'Max\:%5.1lf%s\\l' "; + } + } + $rrdtool_graph[ 'series' ] = $series; + return $rrdtool_graph; +} + + +// TODO: create graphite areaMode +function build_graphite_series( $config, $host_cluster ) { + $targets = array(); + $colors = array(); + foreach( $config[ 'series' ] as $item ) { + $targets[] = "target=". urlencode( "alias($host_cluster.${item['metric']}.sum,'${item['label']}')" ); + $colors[] = $item['color']; + } + $output = implode( $targets, '&' ); + $output .= "&colorList=" . implode( $colors, ',' ); + $output .= "&vtitle=" . urlencode( $config[ 'vertical-label' ] ); + + return $output; +} ?> Modified: branches/monitor-web-2.0/graph.d/network_report.json =================================================================== --- branches/monitor-web-2.0/graph.d/network_report.json 2011-01-13 00:46:49 UTC (rev 2428) +++ branches/monitor-web-2.0/graph.d/network_report.json 2011-01-17 02:22:36 UTC (rev 2429) @@ -1,5 +1,11 @@ { "report_name" : "network_report", - "report_type" : "template", - "report_arguments" : "target=alias(HOST_CLUSTER.bytes_in.sum%2C'Bytes%20In')&target=alias(HOST_CLUSTER.bytes_out.sum%2C'Bytes%20Out')&vtitle=packets" + "report_type" : "standard", + "title" : "Network", + "graphite" : "target=alias(HOST_CLUSTER.bytes_in.sum%2C'Bytes%20In')&target=alias(HOST_CLUSTER.bytes_out.sum%2C'Bytes%20Out')&vtitle=packets", + "vertical-label" : "Bytes/sec", + "series" : [ + { "metric": "bytes_in", "color": "33cc33", "label": "In", "style": "line2" }, + { "metric": "bytes_out", "color": "5555cc", "label": "Out", "style": "line2" } + ] } Deleted: branches/monitor-web-2.0/graph.d/network_report.php =================================================================== --- branches/monitor-web-2.0/graph.d/network_report.php 2011-01-13 00:46:49 UTC (rev 2428) +++ branches/monitor-web-2.0/graph.d/network_report.php 2011-01-17 02:22:36 UTC (rev 2429) @@ -1,90 +0,0 @@ -<?php - -/* Pass in by reference! */ -function graph_network_report ( &$rrdtool_graph ) -{ - global $context, - $hostname, - $mem_cached_color, - $mem_used_color, - $cpu_num_color, - $range, - $rrd_dir, - $size, - $strip_domainname, - $graphreport_stats; - - if ($strip_domainname) { - $hostname = strip_domainname($hostname); - } - - $title = 'Network'; - $rrdtool_graph['height'] += ($size == 'medium') ? 28 : 0; - if( $graphreport_stats ) { - $rrdtool_graph['height'] += ($size == 'medium') ? 52 : 0; - } - - if ($context != 'host') { - $rrdtool_graph['title'] = $title; - } else { - $rrdtool_graph['title'] = "$hostname Network last $range"; - } - - $rrdtool_graph['lower-limit'] = '0'; - $rrdtool_graph['vertical-label'] = 'Bytes/sec'; - $rrdtool_graph['extras'] = '--rigid --base 1024'; - - if ($size == 'small') { - $rrdtool_graph['extras'] .= ($graphreport_stats == true) ? ' --font LEGEND:7' : ''; - $eol1 = '\\l'; - $space1 = ' '; - $space2 = ' '; - } else if ($size == 'medium') { - $rrdtool_graph['extras'] .= ($graphreport_stats == true) ? ' --font LEGEND:7' : ''; - $eol1 = ''; - $space1 = ' '; - $space2 = ''; - } else if ($size == 'large') { - $rrdtool_graph['extras'] .= ($graphreport_stats == true) ? ' --font LEGEND:10' : ''; - $eol1 = ''; - $space1 = ' '; - $space2 = ' '; - } - - $series = "DEF:'bytes_in'='${rrd_dir}/bytes_in.rrd':'sum':AVERAGE " - ."DEF:'bytes_out'='${rrd_dir}/bytes_out.rrd':'sum':AVERAGE " - ."LINE2:'bytes_in'#$mem_cached_color:'In\\g' "; - - if ( $graphreport_stats ) { - $series .= "CDEF:bytesin_pos=bytes_in,0,LT,0,bytes_in,IF " - . "VDEF:bytesin_last=bytesin_pos,LAST " - . "VDEF:bytesin_min=bytesin_pos,MINIMUM " - . "VDEF:bytesin_avg=bytesin_pos,AVERAGE " - . "VDEF:bytesin_max=bytesin_pos,MAXIMUM " - . "GPRINT:'bytesin_last':' ${space1}Now\:%6.1lf%s' " - . "GPRINT:'bytesin_min':'Min\:%6.1lf%s${eol1}' " - . "GPRINT:'bytesin_avg':'${space2}Avg\:%6.1lf%s' " - . "GPRINT:'bytesin_max':'Max\:%6.1lf%s\\l' "; - } - - $series .= "LINE2:'bytes_out'#$mem_used_color:'Out\\g' "; - - if ( $graphreport_stats ) { - $series .= "CDEF:bytesout_pos=bytes_out,0,LT,0,bytes_out,IF " - . "VDEF:bytesout_last=bytesout_pos,LAST " - . "VDEF:bytesout_min=bytesout_pos,MINIMUM " - . "VDEF:bytesout_avg=bytesout_pos,AVERAGE " - . "VDEF:bytesout_max=bytesout_pos,MAXIMUM " - . "GPRINT:'bytesout_last':'${space1}Now\:%6.1lf%s' " - . "GPRINT:'bytesout_min':'Min\:%6.1lf%s${eol1}' " - . "GPRINT:'bytesout_avg':'${space2}Avg\:%6.1lf%s' " - . "GPRINT:'bytesout_max':'Max\:%6.1lf%s\\l' "; - } - - $rrdtool_graph['series'] = $series; - - return $rrdtool_graph; - -} - -?> Modified: branches/monitor-web-2.0/graph.php =================================================================== --- branches/monitor-web-2.0/graph.php 2011-01-13 00:46:49 UTC (rev 2428) +++ branches/monitor-web-2.0/graph.php 2011-01-17 02:22:36 UTC (rev 2429) @@ -178,23 +178,17 @@ $graph = 'metric'; } - -// Only in rrdtool this check is necessary -if ( $use_graphite == "no" ) { - - $graph_file = "$graphdir/$graph.php"; - - if ( is_readable($graph_file) ) { - include_once($graph_file); - - $graph_function = "graph_${graph}"; - $graph_function($rrdtool_graph); // Pass by reference call, $rrdtool_graph modified inplace - } else { - /* Bad stuff happened. */ - error_log("Tried to load graph file [$graph_file], but failed. Invalid graph, aborting."); - exit(); +if( $use_graphite == "no" ) { + $php_report_file = $graphdir . "/" . $graph . ".php"; + $json_report_file = $graphdir . "/" . $graph . ".json"; + if( is_file( $php_report_file ) ) { + include_once $php_report_file; + $graph_function = "graph_${graph}"; + $graph_function( $rrdtool_graph ); // Pass by reference call, $rrdtool_graph modified inplace + } else if ( is_file( $json_report_file ) ) { + $config = json_decode( file_get_contents( $json_report_file ), TRUE ); + build_rrdtool_args_from_json ( $rrdtool_graph, $config ); } - } # Calculate time range. @@ -338,7 +332,7 @@ switch ( $report_array["report_type"] ) { case "template": - $target = str_replace("HOST_CLUSTER", $host_cluster, $report_array["report_arguments"]); + $target = str_replace("HOST_CLUSTER", $host_cluster, $report_array["graphite"]); break; default: Modified: branches/monitor-web-2.0/graph_all_periods.php =================================================================== --- branches/monitor-web-2.0/graph_all_periods.php 2011-01-13 00:46:49 UTC (rev 2428) +++ branches/monitor-web-2.0/graph_all_periods.php 2011-01-17 02:22:36 UTC (rev 2429) @@ -34,7 +34,7 @@ $xlargesize = "xlarge"; } ?> -<b>Host: </b><?php echo $_GET['h'] ?> <b>Metric/Graph: </b><?php if (isset($_GET['g'])) echo $_GET['g']; else echo $_GET['m']; ?> +<b>Host/Cluster: </b><?php isset($_GET['h']) ? print $_GET['h'] : print $_GET['c']; ?> <b>Metric/Graph: </b><?php if (isset($_GET['g'])) echo $_GET['g']; else echo $_GET['m']; ?> <br /> <img src="graph.php?r=hour&z=<?php print $largesize . $query_string ?>"> <img src="graph.php?r=day&z=<?php print $largesize . $query_string ?>"> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vv...@us...> - 2011-01-17 17:06:13
|
Revision: 2430 http://ganglia.svn.sourceforge.net/ganglia/?rev=2430&view=rev Author: vvuksan Date: 2011-01-17 17:06:07 +0000 (Mon, 17 Jan 2011) Log Message: ----------- Make the graphing function more generic so we can use it for aggregate graphs Modified Paths: -------------- branches/monitor-web-2.0/functions.php branches/monitor-web-2.0/graph.php Modified: branches/monitor-web-2.0/functions.php =================================================================== --- branches/monitor-web-2.0/functions.php 2011-01-17 02:22:36 UTC (rev 2429) +++ branches/monitor-web-2.0/functions.php 2011-01-17 17:06:07 UTC (rev 2430) @@ -801,9 +801,9 @@ } -/** - * Populate $rrdtool_graph from $config (from JSON file). - */ +////////////////////////////////////////////////////////////////////////////////////////////////////// +// Populate $rrdtool_graph from $config (from JSON file). +////////////////////////////////////////////////////////////////////////////////////////////////////// function build_rrdtool_args_from_json( &$rrdtool_graph, $config ) { global $context, $hostname, @@ -834,6 +834,9 @@ $series = ''; foreach( $config[ 'series' ] as $item ) { + + $rrd_dir = $GLOBALS['rrds'] . "/" . $item['clustername'] . "/" . $item['hostname']; + $label = str_pad( sanitize( $item[ 'label' ] ), $max_label_length ); $metric = sanitize( $item[ 'metric' ] ); $series .= "DEF:'$metric'='${rrd_dir}/$metric.rrd':'sum':AVERAGE " @@ -855,8 +858,9 @@ return $rrdtool_graph; } - +////////////////////////////////////////////////////////////////////////////////////////////////////// // TODO: create graphite areaMode +////////////////////////////////////////////////////////////////////////////////////////////////////// function build_graphite_series( $config, $host_cluster ) { $targets = array(); $colors = array(); Modified: branches/monitor-web-2.0/graph.php =================================================================== --- branches/monitor-web-2.0/graph.php 2011-01-17 02:22:36 UTC (rev 2429) +++ branches/monitor-web-2.0/graph.php 2011-01-17 17:06:07 UTC (rev 2430) @@ -187,6 +187,15 @@ $graph_function( $rrdtool_graph ); // Pass by reference call, $rrdtool_graph modified inplace } else if ( is_file( $json_report_file ) ) { $config = json_decode( file_get_contents( $json_report_file ), TRUE ); + + # We need to add hostname and clustername if it's not specified + foreach ( $config['series'] as $index => $item ) { + if ( ! isset($config['series'][$index]['hostname'])) { + $config['series'][$index]['hostname'] = $raw_host; + $config['series'][$index]['clustername'] = $clustername; + } + } + build_rrdtool_args_from_json ( $rrdtool_graph, $config ); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |