Google Visualization API compatible getSelection() method
authorNagy Attila Gabor <mrbig@sneaker.hu>
Wed, 24 Feb 2010 21:22:44 +0000 (22:22 +0100)
committerNagy Attila Gabor <mrbig@sneaker.hu>
Wed, 24 Feb 2010 21:22:44 +0000 (22:22 +0100)
 - bugs: returns incorrect data is datasource is unsorted

dygraph.js

index 3f8f90e..d20d348 100644 (file)
@@ -1028,6 +1028,24 @@ Dygraph.prototype.clearSelection = function() {
   this.lastx_ = -1;
 }
 
+/**
+ * Returns the number of the currently selected row
+ * @return int row number, of -1 if nothing is selected
+ * @public
+ */
+Dygraph.prototype.getSelection = function() {
+  if (!this.selPoints_ || this.selPoints_.length < 1) {
+    return -1;
+  }
+  
+  for (var row=0; row<this.layout_.points.length; row++ ) {
+    if (this.layout_.points[row].x == this.selPoints_[0].x) {
+      return row;
+    }
+  }
+  return -1;
+}
+
 Dygraph.zeropad = function(x) {
   if (x < 10) return "0" + x; else return "" + x;
 }
@@ -2239,5 +2257,26 @@ Dygraph.GVizChart.prototype.setSelection = function(selection_array) {
   this.date_graph.setSelection(row);
 }
 
+/**
+ * Google charts compatible getSelection implementation
+ * @return {Array} array of the selected cells
+ * @public
+ */
+Dygraph.GVizChart.prototype.getSelection = function() {
+  var selection = [];
+  
+  var row = this.date_graph.getSelection();
+  
+  if (row < 0) return selection;
+  
+  col = 1;
+  for (var i in this.date_graph.layout_.datasets) {
+    selection.push({row: row, column: col});
+    col++;
+  }
+
+  return selection;
+}
+
 // Older pages may still use this name.
 DateGraph = Dygraph;