0.1.6 • Published 8 years ago

vdom-engine v0.1.6

Weekly downloads
2
License
MIT
Repository
github
Last release
8 years ago

vdom-engine

virtual-dom engine that help everyone to build their own modern view library and user interfaces

Installation

npm install vdom-engine

Getting Start

// vdom-engine export createElement method, works like React.createElement
// Make Babel to transform JSX by default
import React from 'vdom-engine'

let myDirective = {
	attach: (elem, propName, propValue) => {
		elem.setAttributeNS('http://www.w3.org/1999/xlink', propName, propValue)
	},
	detach: (elem, propName) => {
		elem.removeAttribute(propName)
	}
}

React.addDirective('attrns', myDirective)

let myVdom = (
	<div 
		prop-id="myId"
		attr-class="myclass"
		css-background="red"
		on-click={e => console.log(e.currentTarget.className)}
		hook-mount={node => console.log(node.id)}
		hook-update={node => console.log(node.id)}
		hook-unmount={node => console.log(node.id)}
		attrns-xlinkActuate="my directive value"
	>
	<p>Hello World</p>
	</div>
)

function DBMon(props) {
    return (
      <div prop-id="container">
        <table prop-className="table table-striped latest-data">
          <tbody>
            {
              props.databases.map(function(database) {
                return (
                  <tr
                    key={database.dbname}
                    >
                    <td prop-className="dbname">
                      {database.dbname}
                    </td>
                    <td prop-className="query-count">
                      <span prop-className={database.lastSample.countClassName}>
                        {database.lastSample.queries.length}
                      </span>
                    </td>
                      {
                        database.lastSample.topFiveQueries.map(function(query, index) {
                          return (
                            <td prop-className={ "Query " + query.elapsedClassName}>
                              {query.formatElapsed}
                              <div prop-className="popover left">
                                <div prop-className="popover-content">{query.query}</div>
                                <div prop-className="arrow"/>
                              </div>
                            </td>
                          );
                        })
                      }
                  </tr>
                );
              })
            }
          </tbody>
        </table>
      </div>
    );
}

var renderDBMon = function() {
  React.render(<DBMon databases={ENV.generateData().toArray()} />, document.getElementById('dbmon'));
  Monitoring.renderRate.ping();
  setTimeout(renderDBMon, ENV.timeout);
}

renderDBMon()
0.1.6

8 years ago

0.1.4

8 years ago

0.1.3

8 years ago

0.1.2

8 years ago

0.1.1

8 years ago

0.1.0

8 years ago