You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chukwa.apache.org by ey...@apache.org on 2009/05/13 02:54:46 UTC

svn commit: r774159 [1/2] - in /hadoop/chukwa/trunk: ./ lib/ src/java/org/apache/hadoop/chukwa/hicc/ src/web/hicc/ src/web/hicc/descriptors/ src/web/hicc/js/workspace/ src/web/hicc/jsp/ src/web/hicc/views/

Author: eyang
Date: Wed May 13 00:54:46 2009
New Revision: 774159

URL: http://svn.apache.org/viewvc?rev=774159&view=rev
Log:
CHUKWA-84. Enhance the ability to select time per widget. (Terence Kwan via Eric Yang)

Added:
    hadoop/chukwa/trunk/lib/jchronic-0.2.3.jar   (with props)
    hadoop/chukwa/trunk/src/web/hicc/js/workspace/custom_edits.js
    hadoop/chukwa/trunk/src/web/hicc/jsp/help.jsp
Modified:
    hadoop/chukwa/trunk/build.xml
    hadoop/chukwa/trunk/src/java/org/apache/hadoop/chukwa/hicc/TimeHandler.java
    hadoop/chukwa/trunk/src/web/hicc/descriptors/client_trace.descriptor
    hadoop/chukwa/trunk/src/web/hicc/descriptors/cluster_disk.descriptor
    hadoop/chukwa/trunk/src/web/hicc/descriptors/cluster_disk_pcnt.descriptor
    hadoop/chukwa/trunk/src/web/hicc/descriptors/cluster_metrics.descriptor
    hadoop/chukwa/trunk/src/web/hicc/descriptors/cluster_metrics_pcnt.descriptor
    hadoop/chukwa/trunk/src/web/hicc/descriptors/dfs_datanode_counter.descriptor
    hadoop/chukwa/trunk/src/web/hicc/descriptors/dfs_datanode_rate.descriptor
    hadoop/chukwa/trunk/src/web/hicc/descriptors/dfs_fsnamesystem.descriptor
    hadoop/chukwa/trunk/src/web/hicc/descriptors/dfs_namenode_counter.descriptor
    hadoop/chukwa/trunk/src/web/hicc/descriptors/dfs_namenode_rate.descriptor
    hadoop/chukwa/trunk/src/web/hicc/descriptors/dfs_throughput.descriptor
    hadoop/chukwa/trunk/src/web/hicc/descriptors/disk.descriptor
    hadoop/chukwa/trunk/src/web/hicc/descriptors/disk_pcnt.descriptor
    hadoop/chukwa/trunk/src/web/hicc/descriptors/hadoop_jvm_counter.descriptor
    hadoop/chukwa/trunk/src/web/hicc/descriptors/hadoop_jvm_rate.descriptor
    hadoop/chukwa/trunk/src/web/hicc/descriptors/hadoop_mapred.descriptor
    hadoop/chukwa/trunk/src/web/hicc/descriptors/node_activity_chart.descriptor
    hadoop/chukwa/trunk/src/web/hicc/descriptors/rpc_metrics.descriptor
    hadoop/chukwa/trunk/src/web/hicc/descriptors/sql_charter.descriptor
    hadoop/chukwa/trunk/src/web/hicc/descriptors/system_metrics.descriptor
    hadoop/chukwa/trunk/src/web/hicc/descriptors/system_metrics_pcnt.descriptor
    hadoop/chukwa/trunk/src/web/hicc/index.jsp
    hadoop/chukwa/trunk/src/web/hicc/js/workspace/workspace.js
    hadoop/chukwa/trunk/src/web/hicc/views/default.view

Modified: hadoop/chukwa/trunk/build.xml
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/build.xml?rev=774159&r1=774158&r2=774159&view=diff
==============================================================================
--- hadoop/chukwa/trunk/build.xml (original)
+++ hadoop/chukwa/trunk/build.xml Wed May 13 00:54:46 2009
@@ -675,6 +675,7 @@
 		<copy todir="${build.dir}/hicc/WEB-INF/lib">
 			<fileset dir="${basedir}/lib">
 				<include name="json.jar" />
+				<include name="jchronic-0.2.3.jar" />
 				<include name="html-filter-1.0.jar" />
 			</fileset>
 			<fileset dir="${common.ivy.lib.dir}">

Added: hadoop/chukwa/trunk/lib/jchronic-0.2.3.jar
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/lib/jchronic-0.2.3.jar?rev=774159&view=auto
==============================================================================
Binary file - no diff available.

Propchange: hadoop/chukwa/trunk/lib/jchronic-0.2.3.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Modified: hadoop/chukwa/trunk/src/java/org/apache/hadoop/chukwa/hicc/TimeHandler.java
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/java/org/apache/hadoop/chukwa/hicc/TimeHandler.java?rev=774159&r1=774158&r2=774159&view=diff
==============================================================================
--- hadoop/chukwa/trunk/src/java/org/apache/hadoop/chukwa/hicc/TimeHandler.java (original)
+++ hadoop/chukwa/trunk/src/java/org/apache/hadoop/chukwa/hicc/TimeHandler.java Wed May 13 00:54:46 2009
@@ -23,9 +23,19 @@
 
 import org.apache.hadoop.chukwa.util.XssFilter;
 
+import java.util.Date;
 import java.util.Calendar;
 import java.util.TimeZone;
+import java.util.StringTokenizer;
 import java.text.SimpleDateFormat;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import com.mdimension.jchronic.Chronic;
+import com.mdimension.jchronic.Options;
+import com.mdimension.jchronic.tags.Pointer;
+import com.mdimension.jchronic.utils.Span;
+import com.mdimension.jchronic.utils.Time;
+
 
 public class TimeHandler {
   private HttpSession session = null;
@@ -42,6 +52,7 @@
   private String startS = null;
   private String endS = null;
   private XssFilter xf = null;
+    private static Log log=LogFactory.getLog(TimeHandler.class);
   
   public TimeHandler(HttpServletRequest request) {
     this.tz = TimeZone.getTimeZone("UTC");
@@ -57,6 +68,43 @@
     init(request);
   }
 
+    /*
+     * Using the Chronic library to parse the english string
+     * and convert it to a long (millis seconds since 1970)
+     */
+    public long parseDateShorthand(String d) {
+	Calendar now = Calendar.getInstance();
+	long l=now.getTimeInMillis();
+	d=d.trim();
+	if (d.compareToIgnoreCase("now")==0) {
+	    // do nothing because it is default to now.
+	} else {
+	    Options options= new Options(false);
+	    options.setCompatibilityMode(true);
+	    options.setNow(now);
+	    try {
+		Span span = Chronic.parse(d, options);
+		l = span.getBegin()*1000;
+	    } catch (Exception e) {
+		// exception when parsing
+		log.error("parse error for: "+d);		
+	    }
+	}
+
+	/*
+	 * debug 
+	 */
+	/*
+        SimpleDateFormat sf =
+            new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
+	Date ld=new Date(l);
+
+	log.error("Convert:"+d+" to "+Long.toString(l)+" - "+sf.format(ld)+ "-"+ld.getTime());
+	*/
+
+	return l;
+    }
+
   public void init(HttpServletRequest request) {
     xf = new XssFilter(request);
     Calendar now = Calendar.getInstance();
@@ -95,6 +143,27 @@
         start = end - (7 * 24 * 60 * 60 * 1000);
       } else if (period.equals("last30d")) {
         start = end - (30 * 24 * 60 * 60 * 1000);
+      } else if (period.startsWith("custom;")) {
+
+	  // default value is between 2 days ago and now
+	  String startString="2 days ago";
+	  String endString="now";
+	  
+	  // tokenize the value to "custom;2 days ago;now" 
+	  StringTokenizer st=new StringTokenizer(period,";");
+	  if (st.hasMoreTokens()) {
+	      st.nextToken(); // skip the first token
+	      if (st.hasMoreTokens()) {
+		  startString=st.nextToken();
+		  if (st.hasMoreTokens()) {
+		      endString=st.nextToken();
+		  }
+	      }
+	  }
+
+	  // parse the parameter strings
+	  start = parseDateShorthand(startString);
+	  end = parseDateShorthand(endString);
       }
     } else if (request.getParameter("start") != null
         && request.getParameter("end") != null) {

Modified: hadoop/chukwa/trunk/src/web/hicc/descriptors/client_trace.descriptor
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/descriptors/client_trace.descriptor?rev=774159&r1=774158&r2=774159&view=diff
==============================================================================
--- hadoop/chukwa/trunk/src/web/hicc/descriptors/client_trace.descriptor (original)
+++ hadoop/chukwa/trunk/src/web/hicc/descriptors/client_trace.descriptor Wed May 13 00:54:46 2009
@@ -9,18 +9,7 @@
 "refresh":"15",
 "parameters":[
 {"name":"table","type":"string","value":"ClientTrace","edit":"0"},
-{"name":"period","type":"select","value":"","label":"Period","options":[
-{"label":"Use Time Widget","value":""},
-{"label":"Last 1 Hour","value":"last1hr"},
-{"label":"Last 2 Hours","value":"last2hr"},
-{"label":"Last 3 Hours","value":"last3hr"},
-{"label":"Last 6 Hours","value":"last6hr"},
-{"label":"Last 12 Hours","value":"last12hr"},
-{"label":"Last 24 Hours","value":"last24hr"},
-{"label":"Yesterday","value":"yesterday"},
-{"label":"Last 7 Days","value":"last7d"},
-{"label":"Last 30 Days","value":"last30d"}
-]},
+{"name":"period","type":"custom","control":"period_control","value":"","label":"Period"},
 {"name":"metric","type":"select_multiple","value":"local_hdfs_read","label":"Metric","options":[
 {"label":"Local HDFS Read","value":"local_hdfs_read"},
 {"label":"Intra-rack HDFS Read","value":"intra_rack_hdfs_read"},

Modified: hadoop/chukwa/trunk/src/web/hicc/descriptors/cluster_disk.descriptor
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/descriptors/cluster_disk.descriptor?rev=774159&r1=774158&r2=774159&view=diff
==============================================================================
--- hadoop/chukwa/trunk/src/web/hicc/descriptors/cluster_disk.descriptor (original)
+++ hadoop/chukwa/trunk/src/web/hicc/descriptors/cluster_disk.descriptor Wed May 13 00:54:46 2009
@@ -10,18 +10,7 @@
 "parameters":[
 {"name":"table","type":"string","value":"cluster_disk","edit":"0"},
 {"name":"group_override","type":"string","value":"mount","edit":"0"},
-{"name":"period","type":"select","value":"","label":"Period","options":[
-{"label":"Use Time Widget","value":""},
-{"label":"Last 1 Hour","value":"last1hr"},
-{"label":"Last 2 Hours","value":"last2hr"},
-{"label":"Last 3 Hours","value":"last3hr"},
-{"label":"Last 6 Hours","value":"last6hr"},
-{"label":"Last 12 Hours","value":"last12hr"},
-{"label":"Last 24 Hours","value":"last24hr"},
-{"label":"Yesterday","value":"yesterday"},
-{"label":"Last 7 Days","value":"last7d"},
-{"label":"Last 30 Days","value":"last30d"}
-]},
+{"name":"period","type":"custom","control":"period_control","value":"","label":"Period"},
 {"name":"metric","type":"select_multiple","value":"available","label":"Metric","options":[
 {"label":"used","value":"used"},                            
 {"label":"available","value":"available"}

Modified: hadoop/chukwa/trunk/src/web/hicc/descriptors/cluster_disk_pcnt.descriptor
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/descriptors/cluster_disk_pcnt.descriptor?rev=774159&r1=774158&r2=774159&view=diff
==============================================================================
--- hadoop/chukwa/trunk/src/web/hicc/descriptors/cluster_disk_pcnt.descriptor (original)
+++ hadoop/chukwa/trunk/src/web/hicc/descriptors/cluster_disk_pcnt.descriptor Wed May 13 00:54:46 2009
@@ -13,18 +13,7 @@
 {"name":"y_axis_max","type":"string","value":"100","edit":"0"},
 {"name":"display_percentage","type":"string","value":"1","edit":"0"},
 {"name":"metric","type":"string","value":"used_percent","edit":"0"},
-{"name":"period","type":"select","value":"","label":"Period","options":[
-{"label":"Use Time Widget","value":""},
-{"label":"Last 1 Hour","value":"last1hr"},
-{"label":"Last 2 Hours","value":"last2hr"},
-{"label":"Last 3 Hours","value":"last3hr"},
-{"label":"Last 6 Hours","value":"last6hr"},
-{"label":"Last 12 Hours","value":"last12hr"},
-{"label":"Last 24 Hours","value":"last24hr"},
-{"label":"Yesterday","value":"yesterday"},
-{"label":"Last 7 Days","value":"last7d"},
-{"label":"Last 30 Days","value":"last30d"}
-]},
+{"name":"period","type":"custom","control":"period_control","value":"","label":"Period"},
 {"name":"width","type":"select","value":"300","label":"Width","options":[
 {"label":"300","value":"300"},
 {"label":"400","value":"400"},

Modified: hadoop/chukwa/trunk/src/web/hicc/descriptors/cluster_metrics.descriptor
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/descriptors/cluster_metrics.descriptor?rev=774159&r1=774158&r2=774159&view=diff
==============================================================================
--- hadoop/chukwa/trunk/src/web/hicc/descriptors/cluster_metrics.descriptor (original)
+++ hadoop/chukwa/trunk/src/web/hicc/descriptors/cluster_metrics.descriptor Wed May 13 00:54:46 2009
@@ -9,18 +9,7 @@
 "refresh":"15",
 "parameters":[
 {"name":"table","type":"string","value":"cluster_system_metrics","edit":"0"},
-{"name":"period","type":"select","value":"","label":"Period","options":[
-{"label":"Use Time Widget","value":""},
-{"label":"Last 1 Hour","value":"last1hr"},
-{"label":"Last 2 Hours","value":"last2hr"},
-{"label":"Last 3 Hours","value":"last3hr"},
-{"label":"Last 6 Hours","value":"last6hr"},
-{"label":"Last 12 Hours","value":"last12hr"},
-{"label":"Last 24 Hours","value":"last24hr"},
-{"label":"Yesterday","value":"yesterday"},
-{"label":"Last 7 Days","value":"last7d"},
-{"label":"Last 30 Days","value":"last30d"}
-]},
+{"name":"period","type":"custom","control":"period_control","value":"","label":"Period"},
 {"name":"metric","type":"select_multiple","value":"load_15","label":"Metric","options":[
 {"label":"Reporting Hosts","value":"host"},
 {"label":"load_15","value":"load_15"},

Modified: hadoop/chukwa/trunk/src/web/hicc/descriptors/cluster_metrics_pcnt.descriptor
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/descriptors/cluster_metrics_pcnt.descriptor?rev=774159&r1=774158&r2=774159&view=diff
==============================================================================
--- hadoop/chukwa/trunk/src/web/hicc/descriptors/cluster_metrics_pcnt.descriptor (original)
+++ hadoop/chukwa/trunk/src/web/hicc/descriptors/cluster_metrics_pcnt.descriptor Wed May 13 00:54:46 2009
@@ -11,18 +11,7 @@
 {"name":"y_axis_max","type":"string","value":"100","edit":"0"},
 {"name":"display_percentage","type":"string","value":"1","edit":"0"},
 {"name":"table","type":"string","value":"cluster_system_metrics","edit":"0"},
-{"name":"period","type":"select","value":"","label":"Period","options":[
-{"label":"Use Time Widget","value":""},
-{"label":"Last 1 Hour","value":"last1hr"},
-{"label":"Last 2 Hours","value":"last2hr"},
-{"label":"Last 3 Hours","value":"last3hr"},
-{"label":"Last 6 Hours","value":"last6hr"},
-{"label":"Last 12 Hours","value":"last12hr"},
-{"label":"Last 24 Hours","value":"last24hr"},
-{"label":"Yesterday","value":"yesterday"},
-{"label":"Last 7 Days","value":"last7d"},
-{"label":"Last 30 Days","value":"last30d"}
-]},
+{"name":"period","type":"custom","control":"period_control","value":"","label":"Period"},
 {"name":"metric","type":"select_multiple","value":"load_15","label":"Metric","options":[
 {"label":"cpu_idle_pcnt","value":"cpu_idle_pcnt"},
 {"label":"cpu_nice_pcnt","value":"cpu_nice_pcnt"},

Modified: hadoop/chukwa/trunk/src/web/hicc/descriptors/dfs_datanode_counter.descriptor
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/descriptors/dfs_datanode_counter.descriptor?rev=774159&r1=774158&r2=774159&view=diff
==============================================================================
--- hadoop/chukwa/trunk/src/web/hicc/descriptors/dfs_datanode_counter.descriptor (original)
+++ hadoop/chukwa/trunk/src/web/hicc/descriptors/dfs_datanode_counter.descriptor Wed May 13 00:54:46 2009
@@ -13,18 +13,7 @@
 {"name":"find_slope","type":"string","value":"true","edit":"0"},
 {"name":"group_items","type":"string","value":"hosts","edit":"0"},
 {"name":"group","type":"string","value":"host","edit":"0"},
-{"name":"period","type":"select","value":"","label":"Period","options":[
-{"label":"Use Time Widget","value":""},
-{"label":"Last 1 Hour","value":"last1hr"},
-{"label":"Last 2 Hours","value":"last2hr"},
-{"label":"Last 3 Hours","value":"last3hr"},
-{"label":"Last 6 Hours","value":"last6hr"},
-{"label":"Last 12 Hours","value":"last12hr"},
-{"label":"Last 24 Hours","value":"last24hr"},
-{"label":"Yesterday","value":"yesterday"},
-{"label":"Last 7 Days","value":"last7d"},
-{"label":"Last 30 Days","value":"last30d"}
-]},
+{"name":"period","type":"custom","control":"period_control","value":"","label":"Period"},
 {"name":"metric","type":"select_multiple","value":"bytes_read","label":"Metric","options":[
 {"label":"block_reports_num_ops","value":"block_reports_num_ops"}, 
 {"label":"block_verification_failures","value":"block_verification_failures"}, 

Modified: hadoop/chukwa/trunk/src/web/hicc/descriptors/dfs_datanode_rate.descriptor
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/descriptors/dfs_datanode_rate.descriptor?rev=774159&r1=774158&r2=774159&view=diff
==============================================================================
--- hadoop/chukwa/trunk/src/web/hicc/descriptors/dfs_datanode_rate.descriptor (original)
+++ hadoop/chukwa/trunk/src/web/hicc/descriptors/dfs_datanode_rate.descriptor Wed May 13 00:54:46 2009
@@ -12,18 +12,7 @@
 {"name":"normalize_time","type":"string","value":"true","edit":"0"},
 {"name":"group_items","type":"string","value":"hosts","edit":"0"},
 {"name":"group","type":"string","value":"host","edit":"0"},
-{"name":"period","type":"select","value":"","label":"Period","options":[
-{"label":"Use Time Widget","value":""},
-{"label":"Last 1 Hour","value":"last1hr"},
-{"label":"Last 2 Hours","value":"last2hr"},
-{"label":"Last 3 Hours","value":"last3hr"},
-{"label":"Last 6 Hours","value":"last6hr"},
-{"label":"Last 12 Hours","value":"last12hr"},
-{"label":"Last 24 Hours","value":"last24hr"},
-{"label":"Yesterday","value":"yesterday"},
-{"label":"Last 7 Days","value":"last7d"},
-{"label":"Last 30 Days","value":"last30d"}
-]},
+{"name":"period","type":"custom","control":"period_control","value":"","label":"Period"},
 {"name":"metric","type":"select_multiple","value":"heart_beats_avg_time","label":"Metric","options":[
 {"label":"block_reports_avg_time","value":"block_reports_avg_time"}, 
 {"label":"copy_block_op_avg_time","value":"copy_block_op_avg_time"}, 

Modified: hadoop/chukwa/trunk/src/web/hicc/descriptors/dfs_fsnamesystem.descriptor
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/descriptors/dfs_fsnamesystem.descriptor?rev=774159&r1=774158&r2=774159&view=diff
==============================================================================
--- hadoop/chukwa/trunk/src/web/hicc/descriptors/dfs_fsnamesystem.descriptor (original)
+++ hadoop/chukwa/trunk/src/web/hicc/descriptors/dfs_fsnamesystem.descriptor Wed May 13 00:54:46 2009
@@ -9,18 +9,7 @@
 "refresh":"15",
 "parameters":[
 {"name":"table","type":"string","value":"dfs_fsnamesystem","edit":"0"},
-{"name":"period","type":"select","value":"","label":"Period","options":[
-{"label":"Use Time Widget","value":""},
-{"label":"Last 1 Hour","value":"last1hr"},
-{"label":"Last 2 Hours","value":"last2hr"},
-{"label":"Last 3 Hours","value":"last3hr"},
-{"label":"Last 6 Hours","value":"last6hr"},
-{"label":"Last 12 Hours","value":"last12hr"},
-{"label":"Last 24 Hours","value":"last24hr"},
-{"label":"Yesterday","value":"yesterday"},
-{"label":"Last 7 Days","value":"last7d"},
-{"label":"Last 30 Days","value":"last30d"}
-]},
+{"name":"period","type":"custom","control":"period_control","value":"","label":"Period"},
 {"name":"metric","type":"select_multiple","value":"capacity_remaining_gb","label":"Metric","options":[
 {"label":"blocks_total","value":"blocks_total"},                            
 {"label":"capacity_remaining_gb","value":"capacity_remaining_gb"},

Modified: hadoop/chukwa/trunk/src/web/hicc/descriptors/dfs_namenode_counter.descriptor
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/descriptors/dfs_namenode_counter.descriptor?rev=774159&r1=774158&r2=774159&view=diff
==============================================================================
--- hadoop/chukwa/trunk/src/web/hicc/descriptors/dfs_namenode_counter.descriptor (original)
+++ hadoop/chukwa/trunk/src/web/hicc/descriptors/dfs_namenode_counter.descriptor Wed May 13 00:54:46 2009
@@ -12,18 +12,7 @@
 {"name":"table","type":"string","value":"dfs_namenode","edit":"0"},
 {"name":"group_override","type":"string","value":"host","edit":"0"},
 {"name":"group","type":"string","value":"host","edit":"0"},
-{"name":"period","type":"select","value":"","label":"Period","options":[
-{"label":"Use Time Widget","value":""},
-{"label":"Last 1 Hour","value":"last1hr"},
-{"label":"Last 2 Hours","value":"last2hr"},
-{"label":"Last 3 Hours","value":"last3hr"},
-{"label":"Last 6 Hours","value":"last6hr"},
-{"label":"Last 12 Hours","value":"last12hr"},
-{"label":"Last 24 Hours","value":"last24hr"},
-{"label":"Yesterday","value":"yesterday"},
-{"label":"Last 7 Days","value":"last7d"},
-{"label":"Last 30 Days","value":"last30d"}
-]},
+{"name":"period","type":"custom","control":"period_control","value":"","label":"Period"},
 {"name":"metric","type":"select_multiple","value":"files_created","label":"Metric","options":[
 {"label":"add_block_ops","value":"add_block_ops"},                            
 {"label":"create_file_ops","value":"create_file_ops"},         

Modified: hadoop/chukwa/trunk/src/web/hicc/descriptors/dfs_namenode_rate.descriptor
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/descriptors/dfs_namenode_rate.descriptor?rev=774159&r1=774158&r2=774159&view=diff
==============================================================================
--- hadoop/chukwa/trunk/src/web/hicc/descriptors/dfs_namenode_rate.descriptor (original)
+++ hadoop/chukwa/trunk/src/web/hicc/descriptors/dfs_namenode_rate.descriptor Wed May 13 00:54:46 2009
@@ -11,18 +11,7 @@
 {"name":"group_override","type":"string","value":"host","edit":"0"},
 {"name":"group","type":"string","value":"host","edit":"0"},
 {"name":"table","type":"string","value":"dfs_namenode","edit":"0"},
-{"name":"period","type":"select","value":"","label":"Period","options":[
-{"label":"Use Time Widget","value":""},
-{"label":"Last 1 Hour","value":"last1hr"},
-{"label":"Last 2 Hours","value":"last2hr"},
-{"label":"Last 3 Hours","value":"last3hr"},
-{"label":"Last 6 Hours","value":"last6hr"},
-{"label":"Last 12 Hours","value":"last12hr"},
-{"label":"Last 24 Hours","value":"last24hr"},
-{"label":"Yesterday","value":"yesterday"},
-{"label":"Last 7 Days","value":"last7d"},
-{"label":"Last 30 Days","value":"last30d"}
-]},
+{"name":"period","type":"custom","control":"period_control","value":"","label":"Period"},
 {"name":"metric","type":"select_multiple","value":"block_report_avg_time","label":"Metric","options":[
 {"label":"blocks_corrupted","value":"blocks_corrupted"},
 {"label":"safe_mode_time","value":"safe_mode_time"},

Modified: hadoop/chukwa/trunk/src/web/hicc/descriptors/dfs_throughput.descriptor
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/descriptors/dfs_throughput.descriptor?rev=774159&r1=774158&r2=774159&view=diff
==============================================================================
--- hadoop/chukwa/trunk/src/web/hicc/descriptors/dfs_throughput.descriptor (original)
+++ hadoop/chukwa/trunk/src/web/hicc/descriptors/dfs_throughput.descriptor Wed May 13 00:54:46 2009
@@ -9,18 +9,7 @@
 "refresh":"15",
 "parameters":[
 {"name":"table","type":"string","value":"dfs_throughput","edit":"0"},
-{"name":"period","type":"select","value":"","label":"Period","options":[
-{"label":"Use Time Widget","value":""},
-{"label":"Last 1 Hour","value":"last1hr"},
-{"label":"Last 2 Hours","value":"last2hr"},
-{"label":"Last 3 Hours","value":"last3hr"},
-{"label":"Last 6 Hours","value":"last6hr"},
-{"label":"Last 12 Hours","value":"last12hr"},
-{"label":"Last 24 Hours","value":"last24hr"},
-{"label":"Yesterday","value":"yesterday"},
-{"label":"Last 7 Days","value":"last7d"},
-{"label":"Last 30 Days","value":"last30d"}
-]},
+{"name":"period","type":"custom","control":"period_control","value":"","label":"Period"},
 {"name":"metric","type":"select_multiple","value":"heart_beats_avg_time","label":"Metric","options":[
 {"label":"hosts","value":"hosts"},
 {"label":"block_reports_num_ops","value":"block_reports_num_ops"},

Modified: hadoop/chukwa/trunk/src/web/hicc/descriptors/disk.descriptor
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/descriptors/disk.descriptor?rev=774159&r1=774158&r2=774159&view=diff
==============================================================================
--- hadoop/chukwa/trunk/src/web/hicc/descriptors/disk.descriptor (original)
+++ hadoop/chukwa/trunk/src/web/hicc/descriptors/disk.descriptor Wed May 13 00:54:46 2009
@@ -12,18 +12,7 @@
 {"name":"group_override","type":"string","value":"concat(host,mount) as mount","edit":"0"},
 {"name":"group","type":"string","value":"host","edit":"0"},
 {"name":"group_items","type":"string","value":"hosts","edit":"0"},
-{"name":"period","type":"select","value":"","label":"Period","options":[
-{"label":"Use Time Widget","value":""},
-{"label":"Last 1 Hour","value":"last1hr"},
-{"label":"Last 2 Hours","value":"last2hr"},
-{"label":"Last 3 Hours","value":"last3hr"},
-{"label":"Last 6 Hours","value":"last6hr"},
-{"label":"Last 12 Hours","value":"last12hr"},
-{"label":"Last 24 Hours","value":"last24hr"},
-{"label":"Yesterday","value":"yesterday"},
-{"label":"Last 7 Days","value":"last7d"},
-{"label":"Last 30 Days","value":"last30d"}
-]},
+{"name":"period","type":"custom","control":"period_control","value":"","label":"Period"},
 {"name":"metric","type":"select_multiple","value":"available","label":"Metric","options":[
 {"label":"used","value":"used"},                            
 {"label":"available","value":"available"}

Modified: hadoop/chukwa/trunk/src/web/hicc/descriptors/disk_pcnt.descriptor
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/descriptors/disk_pcnt.descriptor?rev=774159&r1=774158&r2=774159&view=diff
==============================================================================
--- hadoop/chukwa/trunk/src/web/hicc/descriptors/disk_pcnt.descriptor (original)
+++ hadoop/chukwa/trunk/src/web/hicc/descriptors/disk_pcnt.descriptor Wed May 13 00:54:46 2009
@@ -15,18 +15,7 @@
 {"name":"metric","type":"string","value":"used_percent","edit":"0"},
 {"name":"group","type":"string","value":"host","edit":"0"},
 {"name":"group_items","type":"string","value":"hosts","edit":"0"},
-{"name":"period","type":"select","value":"","label":"Period","options":[
-{"label":"Use Time Widget","value":""},
-{"label":"Last 1 Hour","value":"last1hr"},
-{"label":"Last 2 Hours","value":"last2hr"},
-{"label":"Last 3 Hours","value":"last3hr"},
-{"label":"Last 6 Hours","value":"last6hr"},
-{"label":"Last 12 Hours","value":"last12hr"},
-{"label":"Last 24 Hours","value":"last24hr"},
-{"label":"Yesterday","value":"yesterday"},
-{"label":"Last 7 Days","value":"last7d"},
-{"label":"Last 30 Days","value":"last30d"}
-]},
+{"name":"period","type":"custom","control":"period_control","value":"","label":"Period"},
 {"name":"width","type":"select","value":"300","label":"Width","options":[
 {"label":"300","value":"300"},
 {"label":"400","value":"400"},

Modified: hadoop/chukwa/trunk/src/web/hicc/descriptors/hadoop_jvm_counter.descriptor
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/descriptors/hadoop_jvm_counter.descriptor?rev=774159&r1=774158&r2=774159&view=diff
==============================================================================
--- hadoop/chukwa/trunk/src/web/hicc/descriptors/hadoop_jvm_counter.descriptor (original)
+++ hadoop/chukwa/trunk/src/web/hicc/descriptors/hadoop_jvm_counter.descriptor Wed May 13 00:54:46 2009
@@ -13,18 +13,7 @@
 {"name":"group_override","type":"string","value":"concat(host,' ',process_name) as process","edit":"0"},
 {"name":"group","type":"string","value":"host","edit":"0"},
 {"name":"group_items","type":"string","value":"hosts","edit":"0"},
-{"name":"period","type":"select","value":"","label":"Period","options":[
-{"label":"Use Time Widget","value":""},
-{"label":"Last 1 Hour","value":"last1hr"},
-{"label":"Last 2 Hours","value":"last2hr"},
-{"label":"Last 3 Hours","value":"last3hr"},
-{"label":"Last 6 Hours","value":"last6hr"},
-{"label":"Last 12 Hours","value":"last12hr"},
-{"label":"Last 24 Hours","value":"last24hr"},
-{"label":"Yesterday","value":"yesterday"},
-{"label":"Last 7 Days","value":"last7d"},
-{"label":"Last 30 Days","value":"last30d"}
-]},
+{"name":"period","type":"custom","control":"period_control","value":"","label":"Period"},
 {"name":"metric","type":"select","value":"gc_timemillis","label":"Metric","options":[
 {"label":"gc_timemillis","value":"gc_timemillis"},
 {"label":"gc_count","value":"gc_count"},

Modified: hadoop/chukwa/trunk/src/web/hicc/descriptors/hadoop_jvm_rate.descriptor
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/descriptors/hadoop_jvm_rate.descriptor?rev=774159&r1=774158&r2=774159&view=diff
==============================================================================
--- hadoop/chukwa/trunk/src/web/hicc/descriptors/hadoop_jvm_rate.descriptor (original)
+++ hadoop/chukwa/trunk/src/web/hicc/descriptors/hadoop_jvm_rate.descriptor Wed May 13 00:54:46 2009
@@ -13,18 +13,7 @@
 {"name":"group_override","type":"string","value":"concat(host,' ',process_name) as process","edit":"0"},
 {"name":"group","type":"string","value":"host","edit":"0"},
 {"name":"group_items","type":"string","value":"hosts","edit":"0"},
-{"name":"period","type":"select","value":"","label":"Period","options":[
-{"label":"Use Time Widget","value":""},
-{"label":"Last 1 Hour","value":"last1hr"},
-{"label":"Last 2 Hours","value":"last2hr"},
-{"label":"Last 3 Hours","value":"last3hr"},
-{"label":"Last 6 Hours","value":"last6hr"},
-{"label":"Last 12 Hours","value":"last12hr"},
-{"label":"Last 24 Hours","value":"last24hr"},
-{"label":"Yesterday","value":"yesterday"},
-{"label":"Last 7 Days","value":"last7d"},
-{"label":"Last 30 Days","value":"last30d"}
-]},
+{"name":"period","type":"custom","control":"period_control","value":"","label":"Period"},
 {"name":"metric","type":"select","value":"threads_blocked","label":"Metric","options":[
 {"label":"mem_heap_committed_m","value":"mem_heap_committed_m"},
 {"label":"mem_heap_used_m","value":"mem_heap_used_m"},

Modified: hadoop/chukwa/trunk/src/web/hicc/descriptors/hadoop_mapred.descriptor
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/descriptors/hadoop_mapred.descriptor?rev=774159&r1=774158&r2=774159&view=diff
==============================================================================
--- hadoop/chukwa/trunk/src/web/hicc/descriptors/hadoop_mapred.descriptor (original)
+++ hadoop/chukwa/trunk/src/web/hicc/descriptors/hadoop_mapred.descriptor Wed May 13 00:54:46 2009
@@ -10,18 +10,7 @@
 "parameters":[
 {"name":"find_slope","type":"string","value":"true","edit":"0"},
 {"name":"table","type":"string","value":"hadoop_mapred","edit":"0"},
-{"name":"period","type":"select","value":"","label":"Period","options":[
-{"label":"Use Time Widget","value":""},
-{"label":"Last 1 Hour","value":"last1hr"},
-{"label":"Last 2 Hours","value":"last2hr"},
-{"label":"Last 3 Hours","value":"last3hr"},
-{"label":"Last 6 Hours","value":"last6hr"},
-{"label":"Last 12 Hours","value":"last12hr"},
-{"label":"Last 24 Hours","value":"last24hr"},
-{"label":"Yesterday","value":"yesterday"},
-{"label":"Last 7 Days","value":"last7d"},
-{"label":"Last 30 Days","value":"last30d"}
-]},
+{"name":"period","type":"custom","control":"period_control","value":"","label":"Period"},
 {"name":"metric","type":"select_multiple","value":"heartbeat_avg_time","label":"Metric","options":[
 {"label":"jobs_completed","value":"jobs_completed"},
 {"label":"jobs_submitted","value":"jobs_submitted"},

Modified: hadoop/chukwa/trunk/src/web/hicc/descriptors/node_activity_chart.descriptor
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/descriptors/node_activity_chart.descriptor?rev=774159&r1=774158&r2=774159&view=diff
==============================================================================
--- hadoop/chukwa/trunk/src/web/hicc/descriptors/node_activity_chart.descriptor (original)
+++ hadoop/chukwa/trunk/src/web/hicc/descriptors/node_activity_chart.descriptor Wed May 13 00:54:46 2009
@@ -15,18 +15,7 @@
 {"name":"title","type":"string","value":"Node Activity","edit":"0"},
 {"name":"compound_data","type":"string","value":"true","edit":"0"},
 {"name":"render","type":"string","value":"stack-area","edit":"0"},
-{"name":"period","type":"select","value":"","label":"Period","options":[
-{"label":"Use Time Widget","value":""},
-{"label":"Last 1 Hour","value":"last1hr"},
-{"label":"Last 2 Hours","value":"last2hr"},
-{"label":"Last 3 Hours","value":"last3hr"},
-{"label":"Last 6 Hours","value":"last6hr"},
-{"label":"Last 12 Hours","value":"last12hr"},
-{"label":"Last 24 Hours","value":"last24hr"},
-{"label":"Yesterday","value":"yesterday"},
-{"label":"Last 7 Days","value":"last7d"},
-{"label":"Last 30 Days","value":"last30d"}
-]},
+{"name":"period","type":"custom","control":"period_control","value":"","label":"Period"},
 {"name":"width","type":"select","value":"300","label":"Width","options":[
 {"label":"300","value":"300"},
 {"label":"400","value":"400"},

Modified: hadoop/chukwa/trunk/src/web/hicc/descriptors/rpc_metrics.descriptor
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/descriptors/rpc_metrics.descriptor?rev=774159&r1=774158&r2=774159&view=diff
==============================================================================
--- hadoop/chukwa/trunk/src/web/hicc/descriptors/rpc_metrics.descriptor (original)
+++ hadoop/chukwa/trunk/src/web/hicc/descriptors/rpc_metrics.descriptor Wed May 13 00:54:46 2009
@@ -12,18 +12,7 @@
 {"name":"group","type":"string","value":"host","edit":"0"},
 {"name":"group_items","type":"string","value":"hosts","edit":"0"},
 {"name":"table","type":"string","value":"hadoop_rpc","edit":"0"},
-{"name":"period","type":"select","value":"","label":"Period","options":[
-{"label":"Use Time Widget","value":""},
-{"label":"Last 1 Hour","value":"last1hr"},
-{"label":"Last 2 Hours","value":"last2hr"},
-{"label":"Last 3 Hours","value":"last3hr"},
-{"label":"Last 6 Hours","value":"last6hr"},
-{"label":"Last 12 Hours","value":"last12hr"},
-{"label":"Last 24 Hours","value":"last24hr"},
-{"label":"Yesterday","value":"yesterday"},
-{"label":"Last 7 Days","value":"last7d"},
-{"label":"Last 30 Days","value":"last30d"}
-]},
+{"name":"period","type":"custom","control":"period_control","value":"","label":"Period"},
 {"name":"metric","type":"select","value":"heartbeat_avg_time","label":"Metric","options":[
 {"label":"rpc_processing_time_avg_time","value":"rpc_processing_time_avg_time"}, 
 {"label":"rpc_processing_time_num_ops","value":"rpc_processing_time_num_ops"}, 

Modified: hadoop/chukwa/trunk/src/web/hicc/descriptors/sql_charter.descriptor
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/descriptors/sql_charter.descriptor?rev=774159&r1=774158&r2=774159&view=diff
==============================================================================
--- hadoop/chukwa/trunk/src/web/hicc/descriptors/sql_charter.descriptor (original)
+++ hadoop/chukwa/trunk/src/web/hicc/descriptors/sql_charter.descriptor Wed May 13 00:54:46 2009
@@ -10,18 +10,7 @@
 {"name":"query","type":"text","value":"select host,max(load_1),min(load_1),avg(load_1) from system_metrics_2032_week where timestamp >='2008-12-13 17:30' and timestamp <= '2008-12-13 18:30' group by host","label":"Query","edit":"1"},
 {"name":"title","type":"string","label":"Title","value":"","edit":"1"},
 {"name":"x_axis_label","type":"string","value":"Hostname","edit":"0"},
-{"name":"period","type":"select","value":"","label":"Period","options":[
-{"label":"Use Time Widget","value":""},
-{"label":"Last 1 Hour","value":"last1hr"},
-{"label":"Last 2 Hours","value":"last2hr"},
-{"label":"Last 3 Hours","value":"last3hr"},
-{"label":"Last 6 Hours","value":"last6hr"},
-{"label":"Last 12 Hours","value":"last12hr"},
-{"label":"Last 24 Hours","value":"last24hr"},
-{"label":"Yesterday","value":"yesterday"},
-{"label":"Last 7 Days","value":"last7d"},
-{"label":"Last 30 Days","value":"last30d"}
-]},
+{"name":"period","type":"custom","control":"period_control","value":"","label":"Period"},
 {"name":"width","type":"select","value":"300","label":"Width","options":[
 {"label":"300","value":"300"},
 {"label":"400","value":"400"},

Modified: hadoop/chukwa/trunk/src/web/hicc/descriptors/system_metrics.descriptor
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/descriptors/system_metrics.descriptor?rev=774159&r1=774158&r2=774159&view=diff
==============================================================================
--- hadoop/chukwa/trunk/src/web/hicc/descriptors/system_metrics.descriptor (original)
+++ hadoop/chukwa/trunk/src/web/hicc/descriptors/system_metrics.descriptor Wed May 13 00:54:46 2009
@@ -11,18 +11,7 @@
 {"name":"table","type":"string","value":"system_metrics","edit":"0"},
 {"name":"group","type":"string","value":"host","edit":"0"},
 {"name":"group_items","type":"string","value":"hosts","edit":"0"},
-{"name":"period","type":"select","value":"","label":"Period","options":[
-{"label":"Use Time Widget","value":""},
-{"label":"Last 1 Hour","value":"last1hr"},
-{"label":"Last 2 Hours","value":"last2hr"},
-{"label":"Last 3 Hours","value":"last3hr"},
-{"label":"Last 6 Hours","value":"last6hr"},
-{"label":"Last 12 Hours","value":"last12hr"},
-{"label":"Last 24 Hours","value":"last24hr"},
-{"label":"Yesterday","value":"yesterday"},
-{"label":"Last 7 Days","value":"last7d"},
-{"label":"Last 30 Days","value":"last30d"}
-]},
+{"name":"period","type":"custom","control":"period_control","value":"","label":"Period"},
 {"name":"metric","type":"select_multiple","value":"load_1","label":"Metric","options":[
 {"label":"15 minutes load average","value":"load_15"},
 {"label":"5 minutes load average","value":"load_5"},

Modified: hadoop/chukwa/trunk/src/web/hicc/descriptors/system_metrics_pcnt.descriptor
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/descriptors/system_metrics_pcnt.descriptor?rev=774159&r1=774158&r2=774159&view=diff
==============================================================================
--- hadoop/chukwa/trunk/src/web/hicc/descriptors/system_metrics_pcnt.descriptor (original)
+++ hadoop/chukwa/trunk/src/web/hicc/descriptors/system_metrics_pcnt.descriptor Wed May 13 00:54:46 2009
@@ -13,18 +13,7 @@
 {"name":"group_items","type":"string","value":"hosts","edit":"0"},
 {"name":"y_axis_max","type":"string","value":"100","edit":"0"},
 {"name":"display_percentage","type":"string","value":"1","edit":"0"},
-{"name":"period","type":"select","value":"","label":"Period","options":[
-{"label":"Use Time Widget","value":""},
-{"label":"Last 1 Hour","value":"last1hr"},
-{"label":"Last 2 Hours","value":"last2hr"},
-{"label":"Last 3 Hours","value":"last3hr"},
-{"label":"Last 6 Hours","value":"last6hr"},
-{"label":"Last 12 Hours","value":"last12hr"},
-{"label":"Last 24 Hours","value":"last24hr"},
-{"label":"Yesterday","value":"yesterday"},
-{"label":"Last 7 Days","value":"last7d"},
-{"label":"Last 30 Days","value":"last30d"}
-]},
+{"name":"period","type":"custom","control":"period_control","value":"","label":"Period"},
 {"name":"metric","type":"select_multiple","value":"cpu_user_pcnt","label":"Metric","options":[
 {"label":"CPU System %","value":"cpu_system_pcnt"},
 {"label":"CPU User %","value":"cpu_user_pcnt"},

Modified: hadoop/chukwa/trunk/src/web/hicc/index.jsp
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/index.jsp?rev=774159&r1=774158&r2=774159&view=diff
==============================================================================
--- hadoop/chukwa/trunk/src/web/hicc/index.jsp (original)
+++ hadoop/chukwa/trunk/src/web/hicc/index.jsp Wed May 13 00:54:46 2009
@@ -83,6 +83,8 @@
 <script type="text/javascript" src="/hicc/js/workspace/scriptaculous.js"></script>
 <script type="text/javascript" src="/hicc/js/workspace/effects.js"></script>
 <script type="text/javascript" src="/hicc/js/workspace/dragdrop.js"></script>
+<script type="text/javascript" src="/hicc/js/workspace/prototype.js"></script>
+<script type="text/javascript" src="/hicc/js/workspace/custom_edits.js"></script>
 <script type="text/javascript" src="/hicc/js/workspace/workspace.js"></script>
 <script type="text/javascript" src="/hicc/js/slider.js"></script>
 <script type="text/javascript" src="/hicc/js/swfobject.js"></script>

Added: hadoop/chukwa/trunk/src/web/hicc/js/workspace/custom_edits.js
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/js/workspace/custom_edits.js?rev=774159&view=auto
==============================================================================
--- hadoop/chukwa/trunk/src/web/hicc/js/workspace/custom_edits.js (added)
+++ hadoop/chukwa/trunk/src/web/hicc/js/workspace/custom_edits.js Wed May 13 00:54:46 2009
@@ -0,0 +1,167 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * toggle the custom period control
+ */
+function togglePeriodControl(event) {
+  var element = Event.element(event);
+  value=$F(element.id);
+  if (value=='custom') {
+    $(element.id+'_custom_block').show();
+  } else {
+    $(element.id+'_custom_block').hide();
+  }
+}
+
+/*
+ * popup the online help
+ */
+function popup_help(event) {
+  var element = Event.element(event);
+  window.open("/hicc/jsp/help.jsp?id="+element.id,
+	      "Help",
+	      "width=500,height=400");
+}
+
+/*
+ * For each custom control, you need to provide 3 plugins
+ *   * build_custom_edit - build the control's html 
+ *   * after_build_custom_edits - setup the control's javascript and notification (optional)
+ *   * get_custom_edit_value - return the custom control's value
+ */
+
+/*
+ * external function to build custom edit component in the widget.
+ *
+ * param will have all the information to build this edit control
+ */
+function build_custom_edit(control_id, param) {
+  var content='';
+  if (param.control == 'period_control') {
+    // setup up the period control
+    time_options = [['Use Time Widget',''],
+		    ['Last 1 Hour','last1hr'],
+		    ['Last 2 Hour','last2hr'],
+		    ['Last 3 Hour','last3hr'],
+		    ['Last 6 Hour','last6hr'],
+		    ['Last 12 Hour','last12hr'],
+		    ['Last 24 Hour','last24hr'],
+		    ['Yesterday','yesterday'],
+		    ['Last 7 Days','last7d'],
+		    ['Last 30 Days','last30d'],
+		    ['Custom Period','custom'],
+		    ];
+
+    content+='<select class="formSelect periodControl" id="'+control_id+'" name="'+control_id+'" >';
+    for (var j=0;j<time_options.length;j++) {
+      var option=time_options[j];
+      var selected=false;
+      var param_value=param.value;
+
+      if (param_value==option[1]) {
+	selected=true;
+      } else {
+	if ((option[1]=='custom') && (param_value.startsWith('custom;'))) {
+	  selected=true;
+	}
+      }
+      content+='<option '+((selected)?'selected':'')+' value="'+option[1]+'">'+option[0]+'</option>';
+    }
+    content+='</select>';
+    content+='<div id="'+control_id+'_custom_block" style="display:'+(param_value.startsWith('custom;')?'block':'none')+';">';
+    start_string='2 days ago';
+    end_string='now';
+    if (param_value.startsWith('custom;')) {
+      param_value_split=param_value.split(";");
+      if (param_value_split.length==3) { // custom;start;end
+	start_string=param_value_split[1];
+	end_string=param_value_split[2];
+      }
+    }
+    // setup the custom date stuff
+    content+='<br/>';
+    content+='<fieldset>';
+    content+='<legend>Custom Period</legend>';
+    content+='<table>';
+    content+='<tr><td>';
+    content+='<label for="start_period">Start Period:</label>';
+    content+='</td><td>';
+    content+='<input type="edit" name="'+control_id+'_start" id="'+control_id+'_start" value="'+start_string+'"/>';
+    content+='</td><td>';
+    content+='<a href="#" id="help_edit_start_time" class="help_control">?</a>';
+    content+='</td></tr>';
+    content+='<tr><td>';
+    content+='<label for="end_period">End Period:</label>';
+    content+='</td><td>';
+    content+='<input type="edit" name="'+control_id+'_end" id="'+control_id+'_end" value="'+end_string+'"/>';
+    content+='</td><td>';
+    content+='<a href="#" id="help_edit_start_time" class="help_control">?</a>';
+    content+='</td></tr>';
+    content+='</table>';
+    content+='</fieldset>';
+
+    content+='</div>';
+  }
+  return content;
+}
+
+/*
+ * function to do post setup for the custom control. For example,
+ * hook up the event notification javascript
+ */
+function after_build_custom_edits(box) {
+  for (iCount=0;iCount<box.block_obj.parameters.length;iCount++) {
+    if (box.block_obj.parameters[iCount].edit!=0) {
+      var param_id='param_'+box.pageid+'_'+box.boxIndex + '_'+iCount;
+      var param=box.block_obj.parameters[iCount];
+      if (param.type=='custom') {
+
+	// setup the period control
+	if ("period_control" == param.control) {
+
+	  // hook up the event notification stuff
+	  period_control=document.getElementById(param_id);
+	  if (period_control != null) {
+	    period_control.observe('change',togglePeriodControl);
+	  }
+
+	  // hook up the help
+	  help_controls=document.getElementsByClassName("help_control");
+	  for (i=0;i<help_controls.length;i++) {
+	    help_controls[i].observe('click',popup_help);
+	  }
+	}
+      }
+    }
+  }
+}
+
+/*
+ * return the value for the custom control
+ */
+function get_custom_edit_value(control_id, param) {
+  var value='';
+  if (param.control == 'period_control') {
+    value=$F(control_id);
+    if (value == 'custom') {
+      value='custom;'+$F(control_id+'_start')+';'+$F(control_id+'_end');
+    }
+  }
+  return value;
+}

Modified: hadoop/chukwa/trunk/src/web/hicc/js/workspace/workspace.js
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/js/workspace/workspace.js?rev=774159&r1=774158&r2=774159&view=diff
==============================================================================
--- hadoop/chukwa/trunk/src/web/hicc/js/workspace/workspace.js (original)
+++ hadoop/chukwa/trunk/src/web/hicc/js/workspace/workspace.js Wed May 13 00:54:46 2009
@@ -434,7 +434,7 @@
 		    label=param.label;
 		}
 		label=label;
-	        content+='<tr><td>'+label+':<\/td><td>';
+	        content+='<tr><td valign="top">'+label+':<\/td><td>';
 	        if (param.type=='string') {
 		    content+='<input type="text" id="'+param_id+'" value="' + param.value + '" size="20" maxlength="255"\/>'
 	        } else if (param.type=='text') {
@@ -536,6 +536,9 @@
 		    	content+='<option '+(param_selected ?'selected':'')+' value="'+option.value+'">'+option.label+'</option>';
 		    }
 		    content+='</select>';
+		} else if (param.type=='custom') {
+		  // build a custom widget
+		  content+=build_custom_edit(param_id, param);
 		}
 		content+='<\/td><\/tr>'
 	    }
@@ -550,7 +553,7 @@
 
    	editBox.innerHTML = content;
    
-   	parentObj.appendChild(editBox);		
+   	parentObj.appendChild(editBox);	
     },
 
     saveParameters: function() {
@@ -567,6 +570,8 @@
                 } else if (param.type=='select_multiple_callback') {
 		    selectAll(param_id);
 	            param.value=$F(param_id);
+		} else if (param.type=='custom') {
+		  param.value=get_custom_edit_value(param_id, param);
 		} else {
 	            param.value=$F(param_id);
 		}
@@ -702,6 +707,7 @@
    	}
 	this.obj=div;
 	this.parentObj=div.parentNode;
+	after_build_custom_edits(this);
     },
 
     addBoxHeader: function(parentObj) {

Added: hadoop/chukwa/trunk/src/web/hicc/jsp/help.jsp
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/jsp/help.jsp?rev=774159&view=auto
==============================================================================
--- hadoop/chukwa/trunk/src/web/hicc/jsp/help.jsp (added)
+++ hadoop/chukwa/trunk/src/web/hicc/jsp/help.jsp Wed May 13 00:54:46 2009
@@ -0,0 +1,29 @@
+<html>
+<head>
+<link href="css/default.css" rel="stylesheet" type="text/css">
+</head>
+<body>
+<!-- TODO: check the parameter ID and forward to the proper help content -->
+<h1>Custom Period Input String Format</h1>
+You can type in normal English time string or absolute time string to specify the date. For example:
+<ul>
+<li>Time relative to now
+  <ul>
+     <li>2 months ago</li>
+     <li>3 weeks ago</li>
+     <li>2 hours ago</li>
+     <li>20 minutes ago</li>
+  </ul>
+</li>
+<li>Absolute Time
+  <ul>
+     <li>may 27 2009</li>
+     <li>may 27 5:00 pm</li>
+     <li>may 27 09 4:30</li>
+     <li>2009/04/12 04:30:50</li>
+     <li>2009-04-12 04:30:50</li>
+  </ul>
+</li>
+</ul>
+</body>
+</html>
\ No newline at end of file