Sha256: d28504c6000c37d4264748755e520411bc960c297c3f4d7ec0fbf06e4ddeb127

Contents?: true

Size: 1.71 KB

Versions: 2

Compression:

Stored size: 1.71 KB

Contents

// ========================================================================
// SproutCore
// copyright 2006-2007 Sprout Systems, Inc.
// ========================================================================

require('Core') ;

// This object can generate HTML DOM elements from a hash-based description of 
// the nodes.  See the NodeDescriptor wiki page for complete docs.
//
// See https://wiki.sproutit.com/engineering/show/NodeDescriptor 
//
SC.NodeDescriptor = {
  create: function(descriptor, opts) {
    if (!opts) opts = {} ;
    // collect info from descriptor
    var tag = opts.tag || descriptor.tag || 'div' ;
    var className = opts.cssClass || descriptor.cssClass ;
    var elementId = opts.id || descriptor.id ;
    var style = opts.style || descriptor.style ;
    var innerHTML = opts.innerHTML || descriptor.innerHTML ;
    if (!innerHTML) {
      var childNodes = opts.childNodes || descriptor.childNodes ;
    } 

    // create element
    var ret = $(document.createElement(tag)) ;
    if (className) ret.className = className ;
    if (elementId) ret.id = elementId ;
    if (style) {
      for (var name in style) element.style[name.camelize()] = style[name];
    }
    
    // apply extra attributes
    for(var attr in descriptor) {
      if (this.ignoredProperties.indexOf(attr) == -1) {
        ret.setAttribute(attr,descriptor[attr]) ;
      }
    }
    
    // build child nodes, if they exist.
    if (innerHTML) {
      ret.innerHTML = innerHTML ;
    } else if (childNodes) {
      var that = this ;
      childNodes.each(function(desc) {
        ret.appendChild(that.create(desc)) ;
      }) ;
    }
    
    return ret ;
  },
  
  ignoredProperties: ['tag','cssClass','id','style','childNodes','innerHTML']
}

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
sproutcore-0.9.1 frameworks/sproutcore/foundation/node_descriptor.js
sproutcore-0.9.0 frameworks/sproutcore/foundation/node_descriptor.js