From 37ee4854c4cb0b8f5aa23e3f518dee3bf2d30558 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Wed, 09 Apr 2014 20:57:09 -0400
Subject: [PATCH] Merged #43 "Switch to flotr2 graphs from GoogleCharts"

---
 src/main/java/com/gitblit/wicket/charting/Chart.java |   46 ++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 42 insertions(+), 4 deletions(-)

diff --git a/src/main/java/com/gitblit/wicket/charting/GoogleChart.java b/src/main/java/com/gitblit/wicket/charting/Chart.java
similarity index 64%
rename from src/main/java/com/gitblit/wicket/charting/GoogleChart.java
rename to src/main/java/com/gitblit/wicket/charting/Chart.java
index a718835..331b386 100644
--- a/src/main/java/com/gitblit/wicket/charting/GoogleChart.java
+++ b/src/main/java/com/gitblit/wicket/charting/Chart.java
@@ -17,17 +17,22 @@
 
 import java.io.Serializable;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
+import java.util.TimeZone;
 
+import com.gitblit.Keys;
 import com.gitblit.utils.StringUtils;
+import com.gitblit.wicket.GitBlitWebApp;
+import com.gitblit.wicket.GitBlitWebSession;
 
 /**
- * Abstract parent class for Google Charts built with the Visualization API.
+ * Abstract parent class for different type of chart: bar, pie & line
  *
  * @author James Moger
  *
  */
-public abstract class GoogleChart implements Serializable {
+public abstract class Chart implements Serializable {
 
 	private static final long serialVersionUID = 1L;
 	final String tagId;
@@ -36,17 +41,21 @@
 	final String keyName;
 	final String valueName;
 	final List<ChartValue> values;
+	final List<ChartValue> highlights;
 	int width;
 	int height;
 	boolean showLegend;
+	String dateFormat = "MMM dd";
+	String clickUrl = null;
 
-	public GoogleChart(String tagId, String title, String keyName, String valueName) {
+	public Chart(String tagId, String title, String keyName, String valueName) {
 		this.tagId = tagId;
-		this.dataName = StringUtils.getSHA1(title).substring(0, 8);
+		this.dataName = StringUtils.getSHA1(tagId).substring(0, 8);
 		this.title = title;
 		this.keyName = keyName;
 		this.valueName = valueName;
 		values = new ArrayList<ChartValue>();
+		highlights = new ArrayList<ChartValue>();
 		showLegend = true;
 	}
 
@@ -73,12 +82,25 @@
 	public void addValue(String name, double value) {
 		values.add(new ChartValue(name, (float) value));
 	}
+	
+	public void addValue(Date date, int value) {
+		values.add(new ChartValue(String.valueOf(date.getTime()), value));
+	}
+	
+	public void addHighlight(Date date, int value) {
+		highlights.add(new ChartValue(String.valueOf(date.getTime()), value));
+	}
 
 	protected abstract void appendChart(StringBuilder sb);
 
 	protected void line(StringBuilder sb, String line) {
 		sb.append(line);
 		sb.append('\n');
+	}
+	
+	protected TimeZone getTimeZone() {
+		return  GitBlitWebApp.get().settings().getBoolean(Keys.web.useClientTimezone, false) ? GitBlitWebSession.get()
+				.getTimezone() :  GitBlitWebApp.get().getTimezone();
 	}
 
 	protected class ChartValue implements Serializable, Comparable<ChartValue> {
@@ -104,4 +126,20 @@
 			return 0;
 		}
 	}
+
+	public String getDateFormat() {
+		return dateFormat;
+	}
+
+	public void setDateFormat(String dateFormat) {
+		this.dateFormat = dateFormat;
+	}
+
+	public String getClickUrl() {
+		return clickUrl;
+	}
+
+	public void setClickUrl(String clickUrl) {
+		this.clickUrl = clickUrl;
+	}
 }

--
Gitblit v1.9.1