From 1e2d2f2495e8409b4be31ff947864167a67fd6bb Mon Sep 17 00:00:00 2001
From: tryan <tim@theryanfamily.info>
Date: Wed, 09 Apr 2014 20:55:29 -0400
Subject: [PATCH] Switch to self-hosted flotr2 graphs from Google Charts
---
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