Merge pull request #491 from danvk/legend-never
[dygraphs.git] / dygraph-options.js
index 2fbf656..fd6876a 100644 (file)
@@ -11,6 +11,7 @@
  */
 
 var DygraphOptions = (function() {
+/*jshint strict:false */
 
 // For "production" code, this gets set to false by uglifyjs.
 // Need to define it outside of "use strict", hence the nested IIFEs.
@@ -18,6 +19,7 @@ if (typeof(DEBUG) === 'undefined') DEBUG=true;
 
 return (function() {
 
+// TODO: remove this jshint directive & fix the warnings.
 /*jshint sub:true */
 /*global Dygraph:false */
 "use strict";
@@ -405,6 +407,13 @@ DygraphOptions.prototype.validateOptions_ = function() {
                       this.global_,
                       this.user_,
                       this.highlightSeries_];
+  var names = this.seriesNames();
+  for (var i = 0; i < names.length; i++) {
+    var name = names[i];
+    if (this.series_.hasOwnProperty(name)) {
+      optionsDicts.push(this.series_[name].options);
+    }
+  }
   for (var i = 0; i < optionsDicts.length; i++) {
     var dict = optionsDicts[i];
     if (!dict) continue;
@@ -425,17 +434,22 @@ var WARNINGS = {};  // Only show any particular warning once.
  */
 DygraphOptions.prototype.warnInvalidOption_ = function(optionName) {
   if (!WARNINGS[optionName]) {
+    WARNINGS[optionName] = true;
     var isSeries = (this.labels_.indexOf(optionName) >= 0);
     if (isSeries) {
       console.warn('Use new-style per-series options (saw ' + optionName + ' as top-level options key). See http://bit.ly/1tceaJs');
     } else {
       console.warn('Unknown option ' + optionName + ' (full list of options at dygraphs.com/options.html');
-      // throw "invalid option " + optionName;
+      throw "invalid option " + optionName;
     }
-    WARNINGS[optionName] = true;
   }
 };
 
+// Reset list of previously-shown warnings. Used for testing.
+DygraphOptions.resetWarnings_ = function() {
+  WARNINGS = {};
+};
+
 }
 
 return DygraphOptions;