7

我正在开发一个允许在线编写和查看报告的 Web 应用程序。这些报告将具有典型的学校报告或年度员工评估报告的结构。我希望用户能够自定义其报告的结构。例如,一所学校可能想要一份格式为

Subject   Comment       Score
-----------------------------
English   He sucks      20% 
Maths     He rocks      88%
Science   About average 70%

而另一个人可能想要

Subject   Grade
---------------
English     A
Maths       B
Science     C

我正在寻找的是一种让每所学校指定其报告格式的方法——可能是某种 JavaScript 表单构建库。这样的库可以用在允许用户构建表单的页面中,该表单将用作其报告的模板。

由于我需要处理在服务器端提交的每个报告,因此我需要捕获有关每个字段的一些语义。例如,如果用户可以指定报告中每个问题的答案是否应该是纯文本、数字分数、复选框、单选按钮等,那就太好了

任何有关处理此类“动态”表单的有用技术的建议都将不胜感激。XForms看起来可能是相关的,但我还没有深入研究它。

干杯,唐

4

7 回答 7

2

一个非常好的基于 XForms 的表单构建器,(LGPL) http://www.orbeon.com/

您可以在这里查看他们的表单构建器演示: http ://www.orbeon.com/ops/fr/orbeon/builder/summary/

于 2009-12-27T16:25:15.940 回答
1

务实的方法是使用谷歌电子表格的功能,称为 forms ,来自wufooJotForm的(付费)服务。

于 2009-12-26T16:25:20.370 回答
1

我同意 Jeff Beck 的评论,并注意到以下几点。

您说您的目标受众是非技术性的,并且上述所有解决方案都将涉及学习 HTML 和复杂的模板语言,对于您的受众来说可能是初学者。

上面的解决方案似乎也需要比您的问题所需的更复杂。MooTools、Dojo 等似乎有些矫枉过正。XForms 和 XSLT 更是如此。是的,它们会起作用并为您提供许多额外的功能,但是您是否需要与这些额外功能相关的复杂程度和调试/可维护性/培训问题?

您的普通教师或业务用户可能对如何在 Excel 中输入和保存文件有基本的了解。如果您可以教他们如何以 CSV 格式保存并上传表单,或者甚至更好地安装一个将保存为 CSV 并将其发布到您的网站的宏,那么这可能是他们需要的唯一培训。要获得语义,您可以添加更多训练,并将报告的第一行作为列名,将第二行作为列类型。正如 Jeff 指出的那样,它并不优雅,但对于可能受到技术挑战的用户来说,它很容易采用。

在服务器端,我推荐以下堆栈:

Web 服务器 => node.js(可能使用 Chain - github.com/hassox/chain)

数据存储 => Redis(和 node-redis)

模板 => Haml-js (github.com/creationix/haml-js)

CSV 解析 => 请参阅http://purbayubudi.wordpress.com/2008/11/09/csv-parser-using-javascript/ 并确保使用评论中的固定版本(引用逗号)。

您更精通技术的用户可以在不影响安全性的情况下自定义 HAML,并且 HAML 非常简单,只需稍加培训:这个 HAML...

 %body
.profile
  .left.column
    #date= print_date()
    #address= current_user.address
  .right.column
    #email= current_user.email
    #bio= current_user.bio

产生...

<div class="profile">
  <div class="left column">
     <div id="date">Thursday, October 8, 2009</div>
     <div id="address">Richardson, TX</div>
  </div>
  <div class="right column">
     <div id="email">tim@creationix.com</div>
     <div id="bio">Experienced software professional...</div>
  </div>
</div>
于 2009-12-30T22:47:27.330 回答
0

应该很容易用Seaside在 Smalltalk 中构建。您有一个带有 WATableColumns 的 WATableReport。只需构建一个简单的编辑器,每个学校都可以定义这些列。我不确定 javascript 或 XForms 与它有什么关系。据我所知,除非您可以指定浏览器,否则 XForms 目前已死。

于 2009-12-28T18:25:20.600 回答
0

我认为如果表格变化不是太频繁,你不应该为非技术用户提供一个系统来搞乱报告

而是让您的系统轻松添加新报告,在这种情况下,客户向您发送显示他们想要的格式的 pdf/excel,您可以快速提出新报告

那是我为我们的会计系统做的,它被用于几个诊所,我们还为每份报告的更改收取象征性的费用(以防止用户盲目地更改系统)

于 2009-12-31T04:29:50.770 回答
0

I would suggest to use:

  • a wiki engine or a plain-text to HTML converter such as Markdown to allow your users to customize the templates you provide
  • an HTML templating library to insert the data using the defined template

For the HTML converter, you may use John Gruber's MarkDown (in perl) on the server-side, or a Javascript port by John Fraser, Showdown.

For the HTML templating, there are many Javascript libraries available, depending on your framework of choice:

于 2009-12-27T13:27:00.543 回答
0

我负责XSLTForms,它似乎是您想做的事情的好人选。

XSLTForms 的可能性优于 XForms 1.1 规范:客户端的 XSLT、SVG 等。

可以使用 XForms 开发动态表单,如果它对您的应用程序来说还不够,XSLTForms 可以集成必要的扩展。

于 2009-12-23T20:03:29.427 回答