Totodo's blog revolution~

14Mar/071

Ext 解说(二)

关于YUI-EXT 变为 EXT的话题让人纷说已久,而又过了短短几日,EXT 又紧锣密鼓的发行了Alpha 3。<从YUI-EXT0.40 到 EXT1.0Alpha2,Jack向YUI挑战 ,EXT lib支持JQuery,可以完全可以独立于YUI了。不过这次,Jack似乎又一次开始新一轮的自我挑战。1.0Alpha3版本开始增加了Prototype 和ScriptAculous,真是让人迫不及待。

好,还是先看看 的例子。 这次不用帖代码了,官方出的指南已经很详细了。
教程:http://www.extjs.com/en/tutorial/introduction-ext

毕竟是个入门性的,要玩些花样还得看API (可惜JACK的API-DOC还没来得及更新到最新) 。

教程中:Grid实现


{

var myData = [

['Apple',29.89,0.24,0.81,'9/1 12:00am'],

['Ext',83.81,0.28,0.34,'9/12 12:00am'],

['Google',71.72,0.02,0.03,'10/1 12:00am'],

['Microsoft',52.55,0.01,0.02,'7/4 12:00am'],

['Yahoo!',29.01,0.42,1.47,'5/22 12:00am']

];

var ds = new Ext.data.Store({

proxy: new Ext.data.MemoryProxy(myData),

reader: new Ext.data.ArrayReader({id: 0}, [

{name: 'company'},

{name: 'price', type: 'float'},

{name: 'change', type: 'float'},

{name: 'pctChange', type: 'float'},

{name: 'lastChange', type: 'date', dateFormat: 'n/j h:ia'}

])

});

ds.load();

var colModel = new Ext.grid.ColumnModel([

{header: "Company", width: 120, sortable: true, dataIndex: 'company'},

{header: "Price", width: 90, sortable: true, dataIndex: 'price'},

{header: "Change", width: 90, sortable: true, dataIndex: 'change'},

{header: "% Change", width: 90, sortable: true, dataIndex: 'pctChange'},

{header: "Last Updated", width: 120, sortable: true,

renderer: Ext.util.Format.dateRenderer('m/d/Y'), dataIndex: 'lastChange'}

]);

var grid = new Ext.grid.Grid('grid-example', {ds: ds, cm: colModel});

grid.render();

grid.getSelectionModel().selectFirstRow();

});

Grid变化很大,从这里可以看出它和0.33,0.40的差别了。整个数据的是通过DataStore对象来完成的,数据读取通过XXXReader完

成,(这里是ArrayReader,还有JsonReader,XHReader等)变单元格格式设置ColumnModel完成(任何数据源都一

样),较原来稍有清晰(不然Jack也不会花那么大力气去改了,但真正的出发点是否还有其他??)

那这里也可以很方便的通过通过reader来实现。其他什么超连接啊,input啊都可以那么做。

增加一个function


function renderCheckBox(id){

return String.format(' type="checkbox" id={0} );

// 然后,增加红色部分。这样就会下在 Company每列前面多了个CheckBox

colModel = new Ext.grid.ColumnModel([

{header: "Company", width: 120, sortable: true, dataIndex: 'company',renderer: renderCheckBox},

{header: "Price", width: 90, sortable: true, dataIndex: 'price'},

{header: "Change", width: 90, sortable: true, dataIndex: 'change'},

{header: "% Change", width: 90, sortable: true, dataIndex:

'pctChange'},{header: "Last Updated", width: 120, sortable: true,

renderer: Ext.util.Format.dateRenderer('m/d/Y'), dataIndex:

'lastChange'} ]);

另外我们还可能会用到分页(在官方的Example里面 可以看到例子)。在1.0中,Jack是努力简化了Grid的操作,这里对分页处理也比以前简单了。


var gridFoot = grid.getView().getFooterPanel(true);

var pagbar = new Ext.PagingToolbar(gridFoot, ds, {pageSize: 20});

pagbar.add('-', {pressed: true, enableToggle:true, text: 'Detailed

View',cls: 'x-btn-text-icon details', toggleHandler: toggleCheckBox

});

ds.load({params:{start:0, limit:20}});

可以在官方的例子中看到更详细的。

http://www.yui-ext.com/deploy/ext-1.0-alpha3/examples

如果再玩复杂一点就是一些自定的操作, grid.on的事件操作啊,通篇一律的JS回调操作。

数据更新采用 Ext.data.Connection(); 表单采用 = Ext.form; /

这样几本能完成一个企业级的Grid应用了,分页编辑,提交。 稍微酷一些可结合 GridEditor

Ext 的代码质量也非常不错,可惜大的方面玩玩能揣度个八九不离十,但真要西子到每个API如何使用,为什么这么写,光凭自己现在的JS水平,后面还有很长一段路....先扯到这继续关注。

8Mar/070

EXT(YUI-EXT) Paging Grid 详细解说 (一)

UI 1.0 alpha2 已经可以抢先与预览了。

而令企业应用中 较为关注的Paging Grid 有了较大的改变。

在 0.33 中。已经出现了Paging Grid , Jack 没把 Paging Grid 加入到他的Example中,而是在Blog里稍微展示了一下,可见其早有打算,,而一直没发行的0.40也把JSON 和 XML 合并了成了XHR.... 看来Jack早有打算。

先看下早期的 0.33 实现吧。先拿一个我实现过的例子

示例如下:


var CutTarget = {

loadData : function(){

var schema = {root: 'cutTargets',

id: 'nothing',

fields: ['USER_NAME', 'ACCESS_NUMBER','PROD_SPEC','DESC','DEMO']};

var dataModel = new YAHOO.ext.grid.JSONDataModel(schema);

dataModel.getTotalRowCount = function(){

return 500; // or whatever your count is

}

dataModel.initPaging('../cutTask.do?method=findCutObject', 20);

dataModel.pageUrl ='../cutTask.do?method=findCutObject';

dataModel.baseParams['cutTypeId'] = 1;

// the DefaultColumnModel expects this blob to define columns. It can be extended to provide

// custom or reusable ColumnModels

var colModel = new YAHOO.ext.grid.DefaultColumnModel([

{header: "用户名称", width: 200, sortable: true, sortType: sort.asUCString},

{header: "号码", width: 75, sortable: true, sortType: sort.asUCString},

{header: "产品规格", width: 75, sortable: true, sortType: sort.asUCString},

{header: "用户详情", width: 75, sortable: true, sortType: sort.asUCString},

{header: "描述", width: 85, sortable: true,renderer: italic}

]);

// sortTypes provide support for custom sorting comparison functions

// not needed for this table but here for demonstration

var sort = YAHOO.ext.grid.DefaultColumnModel.sortTypes;

// create the Grid

var grid = new YAHOO.ext.grid.Grid('cutTarget-grid', dataModel, colModel);

grid.render();

var url ="../cutTask.do?method=findCutObject";

dataModel.loadPage(1);

}

};


这里实现较为烦琐。

大致步骤是:

格式设定


var schema = {root:xxx,id:xxxx,fields:[xxxxx]}

加入带schema 的格式。 并使用dataModel 作为数据模型的主控类。 设定总数据量,初始参数,初始页面大小等等

var dataModel = new YAHOO.ext.grid.JSONDataModel(schema);

建立colModel 单元格模型

var colModel = new YAHOO.ext.grid.DefaultColumnModel([xxxx]);

排序

var sort = YAHOO.ext.grid.DefaultColumnModel.sortTypes;

DataGrid

var grid = new YAHOO.ext.grid.Grid('cutTarget-grid', dataModel, colModel);

将数据加载到 cutTarget-grid html上的元素中去。

最后由dataModel,完成loadpage ,这样,在事件的触发下,远程的分页数据就到到你的页面上了。

Tagged as: , No Comments
6Mar/070

YUI 一周岁生日了。

有点宣传的味道,,但是我很喜欢YUI.

如果把Nasdaq上的Yahoo,和 网易163相比。

Yahoo 是总结出了一套 Ajax Pattern Libaray YUI-LIB,

163则似乎是给我们秀了一下51js的代码

163在营养和发育上要狠狠的追敢啊。

YUI一周岁了,可以看到他的很多LIB都已经很成熟了。

http://developer.yahoo.com/yui/

http://yuiblog.com/

盼他快快长大。茁壮的成长。

YUI周岁 YUI TEAM祝贺:

http://yuiblog.com/blog/2007/03/05/pattern-library-anniversary/

powered by performancing firefox

Tagged as: No Comments
26Nov/060

不管Ajax是否是明日黄花,历史会见证这一刻。

由 Ajax In Action 一书收集提供的ajax 库,将它们搬了上来。

尽管这些信息已经算是比较老的,但是Ajax库的积累和开发并非一蹴而就,需要一个时段的沉淀和积累。

如下: 其中有我们非常熟悉的 DWR,Dojo,Prototype,ScriptAculous,Qooxdoo,RubyOnRails(主要集成了Prototype和Scriptaculous) 都依然在活跃着不断更新和迈进。

Accesskey Underlining Library 开源

www.gerv.net/software/aul/

ActiveWidgets 商业产品,可免费下载

www.activewidgets.com

Ajax JavaServer Faces Framework 开源 (Apache GPL)

http://smirnov.org.ru/en/ajax-jsf.html

Ajax JSP Tag Library 开源

http://ajaxtags.sourceforge.net/

Ajax.NET (2005)未说明学科,可免费使用

http://weblogs.asp.net/mschwarz/

AjaxAC 开源产品 Apache2.0

http://ajax.zervaas.com.au

AjaxAspects 免费使用有原码

http://ajaxaspects.blogspot.com

Michael Mahemoff (2005) 开源 产品

http://ajaxify.com/run/testAjaxCaller

AjaxFaces 开源产品 Apache

http://myfaces.apache.org/

BackBase 商业产品,有免费的社区版

http://www.backbase.com

Behaviour 开源产品

www.ripcord.co.nz/behaviour/

Bindows 商业产品

www.bindows.net

BlueShoes 商业产品,有免费版本

www.blueshoes.org

CakePHP 开源产品

http://cakephp.org/

CL-Ajax Richard Newman (2005) 开源产品

http://cliki.net/cl-ajax

ComfortASP.NET 预发布商业软件,有免费版本

www.daniel-zeiss.de/ComfortASP/

Coolest DHTML Calendar 开源产品,有商业支持

www.dynarch.com/projects/calendar/

CPAINT (跨平台的可异步方式通讯的工具包) GPL许可

http://cpaint.sourceforge.net

Dojo Alex Russell(2004) 开源产品

http://dojotoolkit.org

DWR (直接远程调用 ) 开源产品 Apache许可

www.getahead.ltd.uk/dwr

Echo 2 开源产品(MPL或者GPL许可)

www.nextapp.com/products/echo2

f(m) 开源产品

http://fm.dept-z.com/

FCKEditor 开源产品

www.fckeditor.net

Flash JavaScript Integration Kit 开源产品

www.osflash.org/doku.php?id=flashjs

Google AjaxSLT 开源产品(BSD许可)

http://goog-ajaxslt.sourceforge.net

Guise 商业产品,可免费下载

www.javaguise.com

HTMLHttpRequest Angus Turnbull (2005) 开源产品

www.twinhelix.com/JavaScript/htmlhttprequest/

Interactive Website Framework 开源产品

http://sourceforge.net/projects/iwf/

Jackbe 商业产品

www.jackbe.com/solutions/development.html

JPSpan 开源产品 PHP许可

http://jpspan.sourceforge.net/wiki/doku.php

jsolait LGPL许可

http://jsolait.net

JSON 开源产品,大部分实现使用LGPL许可

www.json-rpc.org/

JSRS (JavaScript Remote Scripting) 开源产品

www.ashleyit.com/rs/jsrs/test.htm

LibXMLHttpRequest Stephen W. Coate (2003) 源码可下载,有版权保护

www.whitefrost.com/servlet/connector?file=reference/2003/06/17/libXml-Request.html

Mochikit 开源产品(MIT许可)

www.mochikit.com/

netWindows 开源产品

www.netwindows.org

Oddpost 商业产品

www.oddpost.com

OpenRico Bill Scott, Darren James (2005) 开源产品

http://openrico.org

Pragmatic Objects 开源产品

http://pragmaticobjects.com/products.html

Prototype Sam Stephenson (2004)开源产品

http://prototype.conio.net/

Qooxdoo 开源产品 LGPL许可

http://qooxdoo.sourceforge.net

RSLite Brent Ashley (pre-2000)

www.ashleyit.com/rs/main.htm

Ruby on Rails David Heinemeier Hansson (2004) 开源产品(MIT许可)

www.rubyonrails.org

Sack 开源产品(修改过的MIT/X11许可)

http://twilightuniverse.com/2005/05/sack-of-ajax

SAJAX 开源产品

www.modernmethod.com/sajax

Sarissa 开源产品

http://sarissa.sf.net

Scriptaculous Thomas Fuchs (2004) 开源产品

http://script.aculo.us

SWATO… 开源产品Apache许可

http://swato.dev.java.net

Tibet 商业软件

www.technicalpursuit.com

TinyMCE 开源产品有一定的商业支持和专有插件

http://tinymce.moxiecode.com/

TrimPath Templates 开源产品

http://trimpath.com/project/wiki/JavaScriptTemplates

Walter Zorn’s DHTML Libraries 开源产品

www.walterzorn.com/index.htm

WebORB for .NET 商业产品有免费版本

www.themidnightcoders.com/weborb/aboutWeborb.htm

WebORB for Java 商业产品,有免费版本

www.themidnightcoders.com/weborb/aboutWeborb.htm

x Mike Foster (2005) 开源产品

www.cross-browser.com

XAJAX J. Max Wilson (2005) 开源产品

http://xajax.sf.net

x-Desktop 开源产品,GPL许可

www.x-desktop.org/

XHConn Brad Fults (2005)

http://xkr.us/code/JavaScript/XHConn

Tagged as: No Comments
25Nov/061

当一切成为主流,一切就将意味着淘汰。

在一大堆生活琐事中很快的消磨到了06年年底,30就快来临,却发现还有很多事要办,难免让人觉得有点无为。。。 生活的确占了生命中很大的意义,但是,工作和你的职业生涯如果没有半点成就,也会让人觉得人生索然无味。

不过,一切的顺意都要靠自己的努力去争取。

06年,Spring和Ajax占尽了风头,一切由Spring所支持的项目,在这个年度,迅速走红。 一切已经走红的项目,被Spring支持了也越来越红。而Ajax让客户体验发挥到了极致,也让人逐渐了解到了那些破费心血的Compents,Framework....诸如Dojo,Dwr,Rico,Prototype,Scriptaculous,而,在人们面前凉了很久(10年 - 97年诞生的1.1版本)的Javascript也被空前的掀起一股深入学习的热潮。

然而历史的每次推动,都是以新老事物的替换来做标记的

。当我们在热衷这些迅速走红的事物中组建体味到软件开发的优雅事,很多我们以前执着过的事物,开始让人忘淡。----

记得04,05年我们都纷纷谈论着设计模式,然而有人也渐渐在复杂的体系中自缚。 当我们谈论敏捷,谈论XP,谈论简化开发,谈论高效编程,谈论简单即美的时候, 开始不造轮子的时候,我的工作开始越来约追求简单,约来约注重高效。 我们的谈论我们的开发方式似乎有了些变化。

也许我现在还不能什么是主流,什么是淘汰。

前几天一个朋友很高兴的给我的讲诉,html可以走了,复杂的ajax可以不玩了,我似乎无法一下子接受这种刚成为主流的东西被遭到如此的评价。。。 接下去,我也渐渐开始尝试着Flex 做一些东西。,当我把简单的Compents托拽为一个应用时, 在体味.js和html在不同浏览器之间的支持要做那这个那个的处理时,,Flash 这种方式不觉已经开始在各种场合登场了。随着HttpService,WebService,DataSerice这些的很方便的支持,FLex无疑成了UI的一个有利工具,相比之下Ajax显得略微的复杂,稍微的逊色。于此同事M$也在推着他.NET2.0下的Expression, 顿时感觉,下一年将会笼罩着RIA的硝烟。。 直到前天,在孟岩和韩磊的博客上看到 "这一天终于来了",,于是,我跟着承认,有些东西是该退出历史舞台了。。

好友Leemaasn还保持联系,这位在我看来的技术天才很是乐观,他说的对,“只要我们的思想能能与时俱进,也就不用担心那么多了”,,我们的年龄的确会越来越老的,但是利用这些年的经验和积累,我们会更加知道我们需要什么。

业务领域成了软件开发的一根救命稻草,当技术我们更新不上的时候,当理论我们不够扎实的时候,我们能依靠这些年来的经验, 来去比知道做出的软件更多的功能,看到架构的不足和优点, 比将要使用的软件的客户知道的更多使用和需求,激发潜在需求。。。。

那,我们依然是主流。

Tagged as: 1 Comment