динамические веб-формы - PullRequest
       17

динамические веб-формы

7 голосов
/ 23 декабря 2009

Я занимаюсь разработкой веб-приложения, которое позволяет создавать и просматривать отчеты в Интернете. Эти отчеты будут иметь структуру типичного школьного отчета или ежегодного отчета об оценке сотрудников. Я бы хотел, чтобы пользователь мог настроить структуру своего отчета. Например, в одной школе может потребоваться отчет в формате

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 выглядит так, как будто это может быть актуально, но я еще не углубился в это.

Ура, Дон

Ответы [ 7 ]

2 голосов
/ 27 декабря 2009

A очень хороший построитель форм на основе XForms, (LGPL) http://www.orbeon.com/

Вы можете ознакомиться с демонстрацией их конструктора форм здесь: http://www.orbeon.com/ops/fr/orbeon/builder/summary/

1 голос
/ 31 декабря 2009

Я согласен с комментариями Джеффа Бека, а также заметил следующее.

Вы сказали, что ваша целевая аудитория не техническая, и все вышеперечисленные решения будут включать изучение HTML и сложного языка шаблонов, возможно, не начального для вашей аудитории.

Решения, приведенные выше, также требуют большей сложности, чем ваша проблема. MooTools, Dojo и т. Д. Кажутся излишними. XForms и XSLT тем более. Да, они будут работать и дадут вам много дополнительных функций, но нужен ли вам уровень сложности и проблемы отладки / обслуживания / обучения, которые идут с этими дополнительными функциями?

Ваш обычный учитель или бизнес-пользователь, вероятно, имеет базовые знания о том, как вводить и сохранять файлы в Excel. Если вы можете научить их, как сохранять в формате CSV и загружать форму, или, что еще лучше, установить макрос, который сохранит в CSV и опубликует его на вашем веб-сайте, то это, вероятно, единственное обучение, которое им потребуется. Чтобы получить семантику, вы можете добавить немного больше обучения, и первая строка отчета будет содержать имена столбцов, а вторая строка будет типом столбцов. Это не элегантно, но, возможно, легко адаптирующимся пользователям, как отмечает Джефф.

На стороне сервера я бы порекомендовал следующий стек:

Веб-сервер => node.js (возможно, с использованием Chain - github.com/hassox/chain)

Хранилище данных => Redis (и узел-redis)

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

Анализ CSV => См. http://purbayubudi.wordpress.com/2008/11/09/csv-parser-using-javascript/ и убедитесь, что используете фиксированную версию, которая есть в комментариях (для кавычек).

Ваши опытные пользователи могут настраивать 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>
1 голос
/ 26 декабря 2009

Прагматичный подход будет использовать функцию электронной таблицы Google, которая называется формы , (платные) услуги от wufoo или JotForm .

0 голосов
/ 31 декабря 2009

я думаю, что если формы не меняются слишком часто, вы не должны предоставлять систему для пользователя, не являющегося специалистом, для того, чтобы связываться с отчетами

Скорее, чтобы ваша система легко добавляла новые отчеты, в этом случае заказчик отправляет вам pdf / excel с указанием желаемого формата, и вы можете быстро создать новый отчет

это было сделано для нашей системы бухгалтерского учета, которая используется для нескольких клиник, мы также взимаем номинальную плату за каждое изменение отчета (чтобы предотвратить бессмысленное изменение системы пользователем)

0 голосов
/ 28 декабря 2009

Должно быть легко встроено в Smalltalk с Побережье . У вас есть WATableReport с WATableColumns. Просто создайте простой редактор, где каждая школа может определить эти столбцы. Я не уверен, что javascript или XForms имеют к этому отношение. Насколько я знаю, XForms в настоящее время не работает, если вы не можете назначить браузер.

0 голосов
/ 27 декабря 2009

Я бы предложил использовать:

  • вики-движок или конвертер простого текста в HTML, такой как Markdown, чтобы позволить вашим пользователям настраивать предоставленные вами шаблоны
  • библиотека шаблонов HTML для вставки данных с использованием определенного шаблона

Для конвертера HTML вы можете использовать MarkDown Джона Грубера на стороне сервера или порт Javascript Джона Фрейзера, Showdown .

Для шаблонов HTML доступно много библиотек Javascript, в зависимости от выбранной вами структуры:

0 голосов
/ 23 декабря 2009

Я отвечаю за XSLTForms , и это, похоже, хороший кандидат на то, что вы хотите сделать.

Возможности XSLTForms превосходят возможности спецификации XForms 1.1: XSLT на стороне клиента, SVG и др.

Динамические формы можно разрабатывать с помощью XForms, и, если этого будет недостаточно для вашего приложения, XSLTForms может включать необходимые расширения.

...