改善 phpPgAdmin 人体工学 GSoC 2010

摘自 PostgreSQL 维基
跳转至导航跳转至搜索

引言

本项目将改善 phpPgAdmin 的人体工学,使用诸如 JQuery 的 Javascript 工具。此页面将描述该项目。


PostgreSQL 和 phpPgAdmin 社区的益处

改进 phpPgAdmin 的人体工学将使用户在使用此应用程序时感到更加舒适。代码也更简洁,因此,开发人员将更容易进行更改,这可以轻松吸引更多开发人员为 phpPgAdmin 做出贡献。在某些操作中,Ajax 有助于实现这一点。

phpPgAdmin 的使用质量越好,就可能拥有更多的用户以及更多的开发者。


可交付成果

Ajax:锁、进程和查询结果将使用 Ajax。因此,事务将更快,而且只需重新加载屏幕上的很小一部分内容即可。

导航:我打算利用 Ajax 为 phpPgAdmin 提供在外键上进行导航的可能性。因此,您可以“遍历”关系。

文档:还将制定一份关于开发内容的文档,其中包括结果以及可以改进的内容。


项目计划

这是项目的进度表

4 月 27 日:会议。我打算与他计划在社区融合期间需要学习的内容;

4 月 30 日至 5 月 24 日:每周举行会议,说明我正在做什么,我下周打算做什么以及我的疑虑和障碍。在此期间,我打算开始编写该想法的代码,并向导师展示我的代码和示例让他分析。

5 月 24 日:正式开始编写代码。在锁页面开始编写代码;

5 月 28 日:与导师会面。提交我的第一个代码进行评估;

6 月 4 日:与导师会面。在进程页面开始编写代码;

6 月 8 日:与导师会面。在这个日期,我打算开始使用纯 XHTML 编写外键浏览;

6 月 11 日:与导师会面。这周继续编写外键浏览的代码;

6 月 18 日:与导师会面。这周继续编写外键浏览的代码;

6 月 25 日:与导师会面。这周继续编写外键浏览的代码;

7 月 2 日:与导师会面。开始创建中期评估。用纯 XHTML 完成浏览外键的第一步。开始用 Ajax 进行实现;

7 月 9 日:与导师会面。修订中期评估。继续用 Ajax 编写外键浏览代码;

7 月 12 日:提交中期评估;

7 月 16 日:与导师会面。完成外键浏览上的 Ajax;

7 月 23 日:与导师会面。展示已实施的 Beta 版本。开始创建最终文档;

7 月 30 日:与导师会面。修订所有已实施内容;

8 月 6 日:与导师会面。对已实施内容进行最终修订;

8 月 13 日:与导师会面。完成应用程序;

8 月 16 日:提交应用程序;



活动

4 月 30 日至 5 月 24 日——社区联系期:

在社区联系期期间,我与导师 Jehan-Guillaume de Rorthais 以及 phpPgAdmin 社区的其他开发者就我的活动进行了大量讨论。在我的第一项活动中,我不得不创建开发环境以在 Google Summer of Code 期间使用。

该环境由以下内容组成:

   * Operation System Linux Ubuntu;
   * Apache;
   * PHP;
   * Postgresql (postgresql-7.4.26, postgresql-8.0.24, postgresql-8.1.20, postgresql-8.2.7, postgresql-8.3.9, postgresql-8.4.3, postgresql-9.0beta1);
   * Scripts to make tests;


我还使用了 Firefox 插件

   * Firebug
   * Web Developer
   * Selenium


我之所以需要使用所有这些版本的 Postgresql 是为了执行回归测试。换句话说,我使用一个版本的 PostgreSQL 开发的内容必须能与其他版本一起使用。因为有很多数据库管理员使用 phpPgAdmin 管理其 PostgreSQL 数据库。

我还创建了一个脚本来恢复我的开发环境。这非常重要,因为只有三个月时间来进行非常充分的规划,任何意外都可能带来很大问题。

在此期间,我还学习使用新的版本控制系统 GIT。我拥有 Subversion (SVN) 的经验,并且使用过 Mercurial 和 CVS。我以前接触过 GIT,但不是非常专业的使用。它与 SVN 没有太大的不同,并且我在使用 GIT 时的适应过程中得到了导师的大力帮助。这当然是我职业生涯中的另一点积极因素。


5 月 24 日至 31 日——锁定页面的改进

我致力于改进 phpPgAdmin 的屏幕锁定。

我的活动只是做锁定(locks),它们会被重新加载,并且会在给定的时间自动发生。

现在,使用 Ajax,每隔 X 秒,都会自动更新锁。用户还可以中断更新,只需单击“停止”图像,然后在希望继续更新数据时单击“启动”。

更新时间在 phpPgAdmin 配置文件中定义。

由于该屏幕可以包含很多记录,因此在底部添加了一个链接,以便用户可以跳转到顶部,在那里可以找到按钮和操作链接。

因为这是我的第一个补丁,其他的 phpPgAdmin 开发人员提出了改进的建议,并且我渐渐更加熟悉了 phpPgAdmin 的方法论以及编码。

正在运行

用户输入锁定页面, 因此 phpPgAdmin 获取锁定信息并显示出来。因此,phpPgAdmin 使用 Javascript 和 Ajax,使用在配置文件中定义的时间重新加载信息。


phpPgAdmin Locks refresh running


如果用户点击“停止图标”,刷新就会停止


phpPgAdmin Locks refresh stopped


6 月 1 日至 8 日 - 过程页面工效学


在 GSoC(01/06 到 08/06)的第二周期间,我开始研究 phpPgAdmin 的“过程”页面。现在的“过程”屏幕具有与锁定页面中实现的相同功能。

本周,我还根据我的导师 Jehan-Guillaume de Rorthais 以及开发者社区的建议,对迄今为止实施的内容做了一些改进。他们的经验和善意极大地帮助了我的工作。值得祝贺 phpPgAdmin 社区。

正在运行

它与锁定页面刷新非常类似。仅自动刷新“已准备事务”和“进程”。


phpPgAdmin Processes refresh running


如果用户点击“停止图标”,刷新就会停止


phpPgAdmin Processes refresh running


6 月 10 日至 7 月 15 日 - 外键浏览(xHTML 版本)

我正在研究 phpPgAdmin 中的一项新特性。

借助此功能,用户能够通过表格浏览页面逐层浏览外来数据。

这样会在外键上添加链接。当用户点击外键时,它会在当前行的正下方显示引用的记录数据,同时在其自己的外键上也带有链接。


Draft of browsing on foreign keys


Browsing on foreign keys xHMTL version, part 1


Browsing on foreign keys xHMTL version, part 2


7 月 15 日至 8 月 16 日(结束) - 外键浏览(Ajax 版本)

在我发表第一个补丁后,我的导师(Jehan-Guillaume's Rorthais 先生)向我发送了一些我在学术生涯中尚未接触过的测试案例。数据库在同一列中具有多个外来字段、表名、模式和带特殊字符的列。其他开发者也提出了想法和建议。

我们在编写此补丁时遇到的最大困难在于,在插入新行(表示需要显示的记录)时,主表被拉伸为新记录的大小,这搞乱了布局。然后,我和我的导师选择让记录(FK 行)浮动在其他行之上,以递归嵌套方式。


Print screen of browsing on foreign keys with Ajax


数据库测试

示例

Pagila


可以在 testDatabase1.sql 和 testDatabase2.sql 中找到一些奇怪的数据库示例,这些数据库可用,但不建议使用。


开发者

学生:Leonardo Augusto Sápiras

导师:Jehan-Guillaume de Rorthais