前段时间看有讨论web ui的,昨天一同学还向我吹嘘他们公司的UI多牛,jsp标签几百个。
我没那么牛,也没那么多精力,结合一前写的代码,整合了JQuery的一些Plugin和Blueprint(一css框架,强烈推荐),做了一些灵活的空间,写了几个例子,
分享给大家
下面是几个图
发现以这种思路做web ui还是可以尝试下的,不用ZK了,简单的我选择用JQuery,他的插件应该可以满足一般应用了,如果复杂的用Ext,一样在加载到浏览器之前,html和js甚至css都是用freemarker结合后台数据生成好的
源码和平时写html和js都一样,没什么区别
下面是两个例子文件目录和源码
<#import "/zftl/zftl-base.ftl" as page>
<#import "/zftl/zftl-jscharts.ftl" as chart>
<#assign basePath = page.beginPath in page />
<@page.page_header title="Demo Of ZFTL" widget_list=['chart','blueprint']>
</@page.page_header>
<@page.page_body>
<div class="container">
<h1>JSChart integrated with Freemarker and JQuery</h1>
<hr>
<div class="column span-12">
<div class="notice">
Pie Chart Demo
</div>
<fieldset>
<legend>Pie Charts</legend>
<p>
<@chart.basic_pie />
</p>
<p>
<div id="pie_graph">Loading graph...</div>
<script type="text/javascript">
var myData = new Array(['Jan', 2], ['Feb', 1], ['Mar', 3], ['Apr', 6], ['May', 8], ['Jun', 10], ['Jul', 9], ['Aug', 8], ['Sep', 5], ['Oct', 6], ['Nov', 2], ['Dec', 4]);
var colors = ['#FFCC00', '#FFFF00', '#CCFF00', '#99FF00', '#33FF00', '#00FF66', '#00FF99', '#00FFCC', '#FF0000', '#FF3300', '#FF6600', '#FF9900'];
var myChart = new JSChart('pie_graph', 'pie');
myChart.setDataArray(myData);
myChart.colorizePie(colors);
myChart.setPiePosition(200, 180);
myChart.setPieRadius(95);
myChart.setPieUnitsFontSize(8);
myChart.setPieUnitsColor('#474747');
myChart.setPieValuesColor('#474747');
myChart.setPieValuesOffset(-10);
myChart.setTitleColor('#fff');
myChart.setSize(300, 300);
myChart.draw();
</script>
</p>
</fieldset>
</div>
<div class="column span-12 last">
<div class="notice">
Bar Chart Demo
</div>
<fieldset>
<legend>Bar Charts</legend>
<p>
<@chart.basic_bar />
</p>
<p>
<div id="graph">Loading graph...</div>
<script type="text/javascript">
var myData = new Array(['Jan', 2], ['Feb', 1], ['Mar', 3], ['Apr', 6], ['May', 8], ['Jun', 10], ['Jul', 9], ['Aug', 8], ['Sep', 5], ['Oct', 6], ['Nov', 2], ['Dec', 4]);
var colors = ['#CE0000', '#EF2323', '#D20202', '#A70000', '#850000', '#740000', '#530000', '#850000', '#B00000', '#9C0404', '#CE0000', '#BA0000'];
var myChart = new JSChart('graph', 'bar');
myChart.setDataArray(myData);
myChart.colorizeBars(colors);
myChart.setDataArray(myData);
myChart.setAxisColor('#9D9F9D');
myChart.setAxisWidth(1);
myChart.setAxisNameX('Months');
myChart.setAxisNameY('Values');
myChart.setAxisNameColor('#655D5D');
myChart.setAxisNameFontSize(9);
myChart.setAxisPaddingLeft(50);
myChart.setAxisValuesDecimals(1);
myChart.setAxisValuesColor('#9C1919');
myChart.setTextPaddingLeft(0);
myChart.setBarValuesColor('#9C1919');
myChart.setBarBorderWidth(0);
myChart.setTitleColor('#8C8382');
myChart.setGridColor('#5D5F5D');
myChart.draw();
</script>
</p>
</fieldset>
</div>
<hr>
<div class="column span-16 last">
<div id="pie_chart_div">Loading graph...</div>
<script type="text/javascript">
var myData = new Array(['IE7', 26], ['IE6', 24.6], ['Firefox', 44.2], ['Safari', 2.6], ['Opera', 2.1]);
var colors = ['#0673B8', '#0091F1', '#F85900', '#1CC2E6', '#C32121'];
var myChart = new JSChart('pie_chart_div', 'pie');
myChart.setDataArray(myData);
myChart.colorizePie(colors);
myChart.setTitle('W3schools browser statistics in August 2008 (%)');
myChart.setTitleColor('#8E8E8E');
myChart.setTitleFontSize(11);
myChart.setTextPaddingTop(280);
myChart.setPieValuesDecimals(1);
myChart.setPieUnitsFontSize(9);
myChart.setPieValuesFontSize(8);
myChart.setPieValuesColor('#fff');
myChart.setPieUnitsColor('#969696');
myChart.setSize(616, 321);
myChart.setPiePosition(308, 145);
myChart.setPieRadius(95);
myChart.setFlagColor('#fff');
myChart.setFlagRadius(4);
myChart.setTooltip(['Firefox','Including Mozilla and all Gecko browsers']);
myChart.setTooltip(['IE6','Including IE5 and older browsers']);
myChart.setTooltipOpacity(1);
myChart.setTooltipBackground('#ddf');
myChart.setTooltipPosition('ne');
myChart.setTooltipOffset(2);
myChart.setBackgroundImage('${page.beginPath}images/chart/chart_bg.jpg');
myChart.draw();
</script>
</div>
<hr>
<p><a href="javascript:void();">JSCharts</a></p>
</div>
</@page.page_body>
<#import "/zftl/zftl-base.ftl" as page>
<#import "/zftl/zftl-widget.ftl" as widget>
<#assign basePath = page.beginPath in page />
<@page.page_header title="Demo Of ZFTL" widget_list=['grid', 'blueprint', 'ui.pack']>
<script>
$(function(){
$('.flexme').flexigrid({
striped:false,
title:'One Simple'
});
$("#birth").datepicker();
// Dialog
$('#dialog').dialog({
autoOpen: false,
width: 500,
height: 500,
buttons: {
"Ok": function() {
$.weeboxs.open($('#name').val(), {type:'warning'});
// $(this).dialog("close");
},
"Cancel": function() {
$(this).dialog("close");
}
}
});
// Dialog Link
$('#dialog_link').click(function(){
$('#dialog').dialog('open');
return false;
})
});
</script>
</@page.page_header>
<@page.page_body>
<div class="container">
<h3>Demo Of ZFTL Grid</h3>
<table class="flexme">
<thead>
<tr>
<th width="100">Col 1</th>
<th width="100">Col 2</th>
<th width="100">Col 3 is a long header name</th>
<th width="300">Col 4</th>
</tr>
</thead>
<tbody>
<tr>
<td>This is data 1 with overflowing content</td>
<td>This is data 2</td>
<td>This is data 3</td>
<td>
<button type="button" class="button positive" id="dialog_link">Open Dialog</button>
<button type="button" class="button negative" onclick="">Negative</button>
</td>
</tr>
<tr>
<td>This is data 1</td>
<td>This is data 2</td>
<td>This is data 3</td>
<td>
<button type="button" class="button positive" onclick="">Positive</button>
<button type="button" class="button negative" onclick="">Negative</button>
</td>
</tr>
<tr>
<td>This is data 1</td>
<td>This is data 2</td>
<td>This is data 3</td>
<td>
<button type="button" class="button positive" onclick="">Positive</button>
<button type="button" class="button negative" onclick="">Negative</button>
</td>
</tr>
<tr>
<td>This is data 1</td>
<td>This is data 2</td>
<td>This is data 3</td>
<td>
<button type="button" class="button positive" onclick="">Positive</button>
<button type="button" class="button negative" onclick="">Negative</button>
</td>
</tr>
<tr>
<td>This is data 1</td>
<td>This is data 2</td>
<td>This is data 3</td>
<td>
<button type="button" class="button positive" onclick="">Positive</button>
<button type="button" class="button negative" onclick="">Negative</button>
</td>
</tr>
<tr>
<td>This is data 1</td>
<td>This is data 2</td>
<td>This is data 3</td>
<td>
<button type="button" class="button positive" onclick="">Positive</button>
<button type="button" class="button negative" onclick="">Negative</button>
</td>
</tr>
<tr>
<td>This is data 1</td>
<td>This is data 2</td>
<td>This is data 3</td>
<td>
<button type="button" class="button positive" onclick="">Positive</button>
<button type="button" class="button negative" onclick="">Negative</button>
</td>
</tr>
<tr>
<td>This is data 1</td>
<td>This is data 2</td>
<td>This is data 3</td>
<td>
<button type="button" class="button positive" onclick="">Positive</button>
<button type="button" class="button negative" onclick="">Negative</button>
</td>
</tr>
<tr>
<td>This is data 1</td>
<td>This is data 2</td>
<td>This is data 3</td>
<td>
<button type="button" class="button positive" onclick="">Positive</button>
<button type="button" class="button negative" onclick="">Negative</button>
</td>
</tr>
<tr>
<td>This is data 1</td>
<td>This is data 2</td>
<td>This is data 3</td>
<td>
<button type="button" class="button positive" onclick="">Positive</button>
<button type="button" class="button negative" onclick="">Negative</button>
</td>
</tr>
<tr>
<td>This is data 1</td>
<td>This is data 2</td>
<td>This is data 3</td>
<td>
<button type="button" class="button positive" onclick="">Positive</button>
<button type="button" class="button negative" onclick="">Negative</button>
</td>
</tr>
<tr>
<td>This is data 1</td>
<td>This is data 2</td>
<td>This is data 3</td>
<td>
<button type="button" class="button positive" onclick="">Positive</button>
<button type="button" class="button negative" onclick="">Negative</button>
</td>
</tr>
</tbody>
</table>
<hr />
<!-- ui-dialog -->
<div id="dialog" class="span-8" title="Dialog Title">
<form id="dummy" action="" method="post">
<p><label for="name">Your Name</label><br />
<input type="text" class="text" id="name" name="name" value="Name"></p>
<p><label for="pwd">Your Password</label><br />
<input type="password" class="text" id="pwd" name="pwd" value="abc"></p>
<p><label for="email">Your Email</label><br />
<input type="text" class="text" id="email" name="email" value="your@mail.com"></p>
<p><label for="email">Your Birth</label><br />
<input type="text" class="text" id="birth" name="birth" value=""></p>
<p><button type="submit" class="button">Submit</button> </p>
</form>
</div>
</div>
</@page.page_body>