data-store.php

Basic data store utility -- unfinished
git clone git://git.finwo.net/lib/data-store.php
Log | Files | Refs

data-source.js (1302B)


      1 require('data-source', ['ajax', 'domchange'], function(ajax, onDomChange) {
      2   function listen( element, event, handler ) {
      3     if ( typeof element == 'string' ) {
      4       handler = event;
      5       event   = element;
      6       element = null;
      7     }
      8     if ( !element && event == 'change' ) {
      9       onDomChange(handler,10);
     10       return;
     11     }
     12     var add = element.addEventListener || element.attachEvent;
     13     add = add.bind(element);
     14     add(event,handler);
     15   }
     16   function render( template, data ) {
     17     if ( Array.isArray(data) ) {
     18       return data.map(render.bind(null,template)).join('');
     19     }
     20     return template.format(data);
     21   }
     22   function process( element ) {
     23     if(!element) {
     24       document.querySelectorAll('[data-source]').forEach(process);
     25       return;
     26     }
     27     if(!element.getAttribute) {
     28       document.querySelectorAll('[data-source]').forEach(process);
     29       return;
     30     }
     31     var template = element.innerHTML,
     32         url      = element.getAttribute('data-source');
     33     if ( url.indexOf('{') >= 0 ) {
     34       return;
     35     }
     36     element.innerHTML = '';
     37     element.removeAttribute('data-source');
     38     ajax(url)
     39       .then(function( data ) {
     40         element.innerHTML = render(template,data);
     41       })
     42   }
     43 
     44   listen('change',process);
     45   listen(document.body,'click',process);
     46   process();
     47 });