Ext Scheduler(日程表) 2.0——升级到4.0

原文:http://www.sencha.com/blog/ext-scheduler-2-0-upgrading-to-ext-js-4/


在上一篇文章《I introduced you to the Ext Scheduler》中,我介绍了ExtJS的Scheduler(日程)组件和资源。在Bryntum,我们正忙着将其升级到基于ExtJS 4.0的版本。借此机会,升级后的日程和甘特图组件将会进行重构,以便兼容ExtJS 4。

在前一版本,组件的及格关键部件依赖于LockingGridView、ColumnHeaderGroup、最大化的TreeGrid和Saki的Ext.ux.form.DateTime等几个扩展。在ExtJS 4中,已包含这些功能,因而,我们很高兴看到我们的组件现在是100%基于Sencha支持的代码。以下是一个使用新的TreePanel开发的2.0版日程组件的外观。


了解ExtJS GridPanel和TreePanel


GridPanel在ExtJS 4中或多或少被重写了。ExtJS 3版本的Grid对于简单的应用效果很好,如果结合了多种功能,效果就不是太好了,如尝试结合锁定列、分组行和分组标题等功能。在前一版本,Bryntum为了在GridView中实现这些功能配置,着实头疼了一番,结果就是导致了很多的重复代码。为了扩展GridView以实现日程功能,我们不得不为视图类型的所有组合都单独定义一个视图类,从而导致了一些比较容易混淆的类名,如Sch. LockingGroupingSchedulerView。此外,还需要使用使用Grid,通过EditorGridPanel实现内联单元格编辑。

在ExtJS 4,只需要在GridView和TreeView中混入特定的功能,就可以实现不同的视图,从而可轻松的实现日程的API。这最大限度的减少了重复代码,并使代码维护工作多了一些乐趣。

另外一个相当不错的是,锁定Grid现在是由三个独立的面板组成:一个包含两个子GridPanel(或TreePanel)的GridPanel。


现在,用户可以单独对左边或右边的Grid进行定义。在第一个截图,锁定的TreePanel被定义为可折叠,且里面的面板使用了Border布局代替了默认使用的HBox布局,下面是一个简单示例代码:

var tree = Ext.create('Sch.panel.SchedulerTree', {
    title       : 'Airport departures',
    width       : 900,
    height      : 400,
 
    layout : 'border',
 
    schedulerConfig : {
        header : false,
        region : 'center'
    },
 
    lockedGridConfig : {
        header : false,
        split: true,
        width : 200,
        region : 'west',
        collapseDirection : 'left',
        collapsible : true
    },
    …

许多用户都要求锁定Grid是可折叠,因此,我们很高兴通过小小的努力添加了这个功能。此功能如果要在ExtJS 3中通过扩展LockingGridView实现,很困难,这需要编写大量代码和增加代码维护的负担。

另外一个频繁被要求的功能是,可翻转水平视图,以显示水平轴的资源和垂直轴的时间。在ExtJS 4,这功能很容易就添加到2.0版了。


从ExtJS 3升级的工作

将组件升级到ExtJS 4自然需要相当多的工作,这与你在ExtJS类基础上添加添加标记和功能创建自定义组件大不相同。如果只是简单的重写内部方法和使用没有文档的类成员,那会存在很大的问题,因而,升级之旅是从一块块代码,一个个类开始的。而且,没有适当的测试,也很难验证出升级后的类是否成功。做Javascript单元测试和UI行为调试相当的困难,尤其是在一个类依赖于其它类和应用状态的时候。在升级工作进行到一般的时候,我们意识到,我们迫切需要通过单元测试来验证现有API和功能是否都已实现。因此,我们使用了在过去两年间创建和优化的JS单元测试工具Nickolay Platonov来测试ExtJS应用。

以测试驱动开发方式开发我们的ExtJS代码改变了我们的工作方式,我买你新的代号为“Siesta”的测试工具帮了我们大忙,它确保了未知的中断代码。很感谢PhantomJS,可以让我们的测试成为持续集成过程的一部分。如果你想尝试一下beta版本,请在在德克萨斯州奥斯汀即将召开的SenchaCon大会与我们联系。

所有日程部件更新完成后,我们进行最后的渲染和交换工作。在这里,我们注意到在ExtJS 4支持类的动态加载,而这要求类名和目录结果必须遵循一些约定,这迫使我们要重新考虑如何使用一种清晰的方式架构和组合这些类,以便转换后的代码支持动态加载。对于每个类,我们不得不通过requires数组明确指出它依赖那些类。不过,只要表达清晰,要找这些依赖类也不难。额外的好处是,在调试时使用动态加载非常节省时间,这是因为不再需要在一个单一的JS文件内搜索代码了。如果你还没开始使用动态加载,我们强烈建议你这么做,因为这可节省大量的时间。

总结

升级到ExtJS 4,对我们来说,是一个挑战,因为Grid在ExtJS 4被重写了,而日程是使用Grid作为基类的。在使用新的树功能是我们也碰到一些小麻烦(主要是CRUD操作方面的)。但是,我们通过重写部分代码理清了这些问题。不过,在这方面的改善是非常受欢迎的。回想起来,升级到新的ExtJS版本的努力是超值的,这让我们在新平台上重构代码的基础也成熟了许多。接下来,我们将进一步将组件移植到Sencha Touch 2.0,我们非常期待他的发布。


附加资源:

演示地址:Ext Scheduler 2.0

PhantomJS的相关信息

Sencha Forum


作者:Mats Bryntse
Mats has been active in the Ext JS community for the past four years and started two Ext JS user groups in both San Francisco and Malmö. Currently Mats is running his own company Bryntum, which creates advanced extensions for Ext JS and Sencha Touch. In his spare time Mats enjoys badminton and skiing.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DolphinScheduler 2.0 是一个分布式大数据工作流调度系统,具有强大的任务调度和监控功能。安装包是用于在服务器上安装 DolphinScheduler 2.0 的程序包。 DolphinScheduler 2.0 安装包主要包含以下几个方面的内容: 1. 安装脚本:安装脚本是用来自动部署 DolphinScheduler 的工具。它可以帮助用户自动下载相关依赖库、配置环境变量和启动服务等步骤,简化了安装过程。 2. 依赖库:DolphinScheduler 2.0 使用了许多开源的大数据组件,如 Hadoop、Hive、Spark 等。安装包里包含了这些依赖库的二进制文件,安装过程中会自动解压和配置这些库文件,确保 DolphinScheduler 的正常运行。 3. 配置文件:安装包中也包含了 DolphinScheduler 的配置文件。这些配置文件定义了 DolphinScheduler 的各种参数,如数据库连接、调度器配置、日志路径等。用户在安装时可以根据自己的实际需求进行修改。 4. Web界面:DolphinScheduler 2.0 提供了一个Web界面,用于用户管理和监控任务。安装包中包含了这个 Web 界面的前端静态文件,用户在安装完成后即可通过浏览器访问到这个界面。 安装 DolphinScheduler 2.0 的步骤如下: 1. 下载安装包:从 DolphinScheduler 的官方网站下载最新版的安装包。 2. 解压安装包:将下载的安装包解压到服务器的指定目录下。 3. 修改配置文件:根据实际需求,修改配置文件中的参数。 4. 启动服务:执行安装脚本,启动 DolphinScheduler 的相关服务。脚本会自动下载依赖库并进行相应的配置。 5. 访问界面:使用浏览器访问 DolphinScheduler 的 Web 界面,并进行相关操作,如任务调度、监控等。 总结:DolphinScheduler 2.0 安装包是用于安装 DolphinScheduler 2.0 的程序包,包含了安装脚本、依赖库、配置文件以及 Web 界面等内容。用户可以通过执行安装脚本和配置参数来完成 DolphinScheduler 的安装和配置。安装完成后,用户可以使用 Web 界面来调度和监控任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值