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);
}
...