AutoForm

Auto form e menu vertical

by edgardleal

HTML

<script type="text/x-handlebars" id="templateForm">
      <div class="screen table" >  
          <div style="margin-bottom:10px;height:30px;">
          <input type="text" placeholder="Localizar"
            style="float: right" class="ui-corner-all" />
          <span id="btnNovo" style="float:left"               
          title="Novo Registro"></span>
          </div>
        <table class="ui-state-content" style="width : 100%">
            <thead>
                <tr class="ui-state-default">
                   <th></th>
                    <th></th><th>Descrição</th></tr>
            </thead>
            <tbody>
                {{#list}}                
                <tr class="ui-state-content">
                    <td><a class="button" 
                        href="#">{{value}}</a></td>
                    <td><a href="#">{{value}}</a></td>
                    <td>{{label}}</td>
                </tr>
                {{/list}}
            </tbody>
        </table>
     </div>
     <div class="screen frm" style="display: none">
         <form action="">
             <div>
                 <button>Salvar</button>
                 <button>Cancelar</button>
             </div>
             <div>
             <label for="id">Código</label>
             <input type="text" name="id" readonly />
             </div>
             <div><label for="descricao">Descrição</label>
                 <input type="text" name="descricao" />
             </div>
         </form>  
     </div>
</script>

<div id='cssmenu'>
<ul>
   <li class='active'><a href='index.html'><span>Home</span></a></li>
   <li><a href='#'><span>Filiais</span></a></li>
   <li class='has-sub'><a href='#'><span>Bolsão de Preços</span></a>
      <ul>
         <li><a href='#'><span>Novo</span></a></li>
         <li class='last'><a href='#'><span>Localizar</span></a></li>
      </ul>
   </li>
   <li class='has-sub'><a href='#'><span>Cestas promocionais</span></a>
      <ul>
         <li><a...

CSS

/* Starter CSS for Flyout Menu */
#cssmenu {
  padding: 0;
  margin: 0;
  border: 0;
}
#cssmenu ul,
#cssmenu li {
  list-style: none;
  margin: 0;
  padding: 0;
}
#cssmenu ul {
  position: relative;
  z-index: 597;
  float: left;
}
#cssmenu ul li {
  float: left;
  min-height: 1px;
  line-height: 1.5em;
  vertical-align: middle;
}
#cssmenu ul li.hover,
#cssmenu ul li:hover {
  position: relative;
  z-index: 599;
  cursor: default;
}
#cssmenu ul ul {
  visibility: hidden;
  position: absolute;
  top: 100%;
  left: 0;
  z-index: 598;
  width: 100%;
}
#cssmenu ul ul li {
  float: none;
}
#cssmenu ul ul,
#cssmenu ul ul ul {
  top: -1px;
  left: 99%;
}
#cssmenu ul li:hover > ul {
  visibility: visible;
}
#cssmenu ul li {
  float: none;
}
#cssmenu a {
  display: block;
}
/* Custom CSS Styles */
#cssmenu {
  font-family: 'Segoe UI', Arial, sans-serif;
  font-size: 11px;
}
#cssmenu:after,
#cssmenu ul:after {
  content: '';
  display: block;
  clear: both;
}
#cssmenu ul {
  background: #F0EFEA;
  border: 1px solid #AAAAAA;
  padding: 4px;
  width: 200px;
}
#cssmenu ul li {
  color: #000;
  position: relative;
}
#cssmenu ul li.hover,
#cssmenu ul li:hover {
  background: #407a1e url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAARCAMAAAArHTYgAAAAM1BMVEVMjiNMjiNMjiNMjiNMjiNMjiNMjiNMjiNMjiNMjiNMjiNMjiNMjiNMjiNMjiNMjiNMjiNeSdtTAAAAEHRSTlP2697Pv66biXZkUUAwIRQJC+dRrgAAACJJREFUeF4FwIcNgCAAALCyN/r/tcSPIEqyomq6YVq24/oeBwoAieqEWU4AAAAASUVORK5CYII=) repeat-x;
  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #4b8e23), color-stop(1, #407a1e));
  background-image: -webkit-linear-gradient(top, #4b8e23, #407a1e);
  background-image: -moz-linear-gradient(top, #4b8e23, #407a1e);
  background-image: -ms-linear-gradient(top, #4b8e23, #407a1e);
  background-image: -o-linear-gradient(top, #4b8e23, #407a1e);
  background-image: linear-gradient(#4b8e23, #407a1e);
  color: #FFF;
}
#cssmenu ul li.hover > a,
#cssmenu ul li:hover > a {
  color: #FFF;
  border:...

JavaScript

$.expr[':'].like = function(n,i,m){
    console.log(m);
    return $(n).text().toUpperCase().indexOf(m[3].toUpperCase()) >= 0;
};

var DependencyControll = function(objects){
    if(!objects) return;
   this.objects = objects;
    
    this.fillString = function(text, data){
       if(!text || typeof text != "string") return;
        var items = text.match(new RegExp("{{[\\w\\.]+}}", 'g'));
        var data = data?data:this.objects;
        for(var i in items){
            if(items[i].indexOf('#')>-1) continue;
            var obj = items[i].toString().replace('{{', '').replace('}}', '');
           var value = eval('data.' + obj);
            value = value?value:'';                    
            text = text.toString().replace(items[i], value);
        }
        return text;
    };
    this.fillList = function(text, data){
        if(!text || typeof text != "string") return;
        var lists = text.match(new RegExp('{{#[\\w\\.]+}}', 'g'));
        var data = data?data:this.objects;
        
        for(var i in lists){
            var start = text.indexOf(lists[i]);
            var endTag = lists[i].replace('#', '/');
            var end = text.indexOf(endTag) + endTag.length;
            var innerText = text.substring(start, end)
                 .replace(lists[i], '').replace(endTag, '');
            var result = '';
            var list = endTag.replace(/{{\/([\w\.]+)}}/, '$1');
            for(var z in data[list]){
               result += this.fillString(innerText, data[list][z]); 
            }
            
            text = text.replace(new RegExp(lists[i] + innerText + endTag), 
                                result);
        }
        return text;
    };
    this.fillData = function(text, data){      
        return this.fillString(this.fillList(text, data), data);
    };
    this.ajax = function(url, text, callBack){
    	function run(value){
    		if(callBack && typeof callBack === "function") callBack.call(text);
    	}
   ...