Give subwidget method support for an optional hash of default values.
authorMike Taylor <mike@indexdata.com>
Mon, 19 May 2014 15:53:24 +0000 (16:53 +0100)
committerMike Taylor <mike@indexdata.com>
Mon, 19 May 2014 15:53:24 +0000 (16:53 +0100)
src/mkws-widget.js

index 1fbd813..c92789a 100644 (file)
@@ -28,8 +28,10 @@ function widget($, team, type, node) {
 
   // Returns the HTML of a subwidget of the specified type. It gets
   // the same attributes at the parent widget that invokes this
-  // function, except where overrides are passed in.
-  that.subwidget = function(type, overrides) {
+  // function, except where overrides are passed in. If defaults are
+  // also provided, then these are used when the parent widget
+  // provides no values.
+  that.subwidget = function(type, overrides, defaults) {
     var attrs = {};
     
     // Copy locally-set properties from the parent widget
@@ -45,6 +47,15 @@ function widget($, team, type, node) {
       log(this + " overrode property " + name + "='" + attrs[name] + "' for " + type + " subwidget");
     }
 
+    if (defaults) {
+      for (var name in defaults) {
+        if (!attrs[name]) {
+          attrs[name] = defaults[name];
+          log(this + " fell back to default property " + name + "='" + attrs[name] + "' for " + type + " subwidget");
+        }
+      }
+    }
+
     var s = [];
     s.push('<div class="mkws', type, ' mkwsTeam_', team.name(), '"');
     for (var name in attrs) {