Я разрабатываю веб-приложение, которое позволяет отчетам быть записанными и просмотренными онлайн. Эти отчеты будут иметь структуру типичного табеля успеваемости или ежегодного оценочного заключения сотрудника. Я хотел бы, чтобы пользователь смог настроить структуру их отчета. Например, одна школа могла бы хотеть отчет в формате
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 похож на него, могло бы быть релевантным, но я слишком глубоко еще не вырыл в него.
С наилучшими пожеланиями, Дон
Прагматический подход предполагает использование функции электронной таблицы Google, называемой формами , (платными) услугами из wufoo или JotForm .
]Должно быть легко встраиваться в Smalltalk с Seaside . У вас есть WATableReport с колонками WATableColumns. Просто создайте простой редактор, в котором каждая школа сможет определить эти колонки. Я не уверен, какое отношение к этому имеет javascript или XForms. Насколько я знаю, XForms в настоящее время мертва, если только вы не можете прописать браузер.
.Я отвечаю за XSLTForms, и это кажется хорошим кандидатом на то, что вы хотите сделать.
Возможности XSLTForms превосходят возможности XForms 1. 1 спецификация: XSLT на стороне клиента, SVG и другие.
Динамические формы могут быть разработаны с помощью XForms, и в случае, если этого будет недостаточно для вашего приложения, XSLTForms могут интегрировать необходимые расширения.
.A очень хороший конструктор форм на базе XForms, (LGPL) http://www.orbeon.com/
Демонстрацию их конструктора форм вы можете посмотреть здесь: http://www.orbeon.com/ops/fr/orbeon/builder/summary/
Предлагаю использовать:
Для HTML-конвертера вы можете использовать MarkDown Джона Грубера (на perl) на стороне сервера, или порт на Javascript Джона Фрейзера, Showdown.
Для шаблонирования HTML доступно множество Javascript библиотек, в зависимости от выбранного вами фреймворка:
Я согласен с комментариями Джеффа Бека, а также заметил следующее.
Вы сказали, что ваша целевая аудитория не является технической, и все вышеперечисленные решения будут включать в себя изучение HTML и сложный язык шаблонов, возможно, нестандартный для вашей аудитории.
Вышеперечисленные решения также, похоже, требуют большей сложности, чем того требует ваша проблема. MooTools, Dojo и т.д. кажутся слишком сложными. XForms и XSLT еще больше. Да, они будут работать и дадут вам много дополнительной функциональности, но нужен ли вам уровень сложности и проблемы отладки/поддержки/обучения, которые сопутствуют этим дополнительным возможностям?
Ваш обычный учитель или бизнес-пользователь, вероятно, имеет базовые знания о том, как вводить и сохранять файлы в Excel. Если вы можете научить их сохранять в формате CSV и загружать форму, а еще лучше установить макрос, который сохранится в CSV и разместит его на вашем сайте, то, скорее всего, это единственное обучение, которое им понадобится. Для получения семантики Вы можете добавить немного больше обучения и иметь в первой строке отчета названия столбцов, а во второй строке - тип столбцов. Это не элегантно, но это легко для возможно технических пользователей, как отмечает Джефф.
На стороне сервера я бы рекомендовал следующий стек:
Web server => node.js (возможно, используя Chain - github. com/hassox/chain)
Data store => Redis (и node-redis)
Templating => Haml-js (github.com/creationix/haml-js)
CSV parsing => См. 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>
я думаю, что если формы не слишком часто меняются, то вам не следует предоставлять систему для нетехнологичных пользователей, чтобы они могли испортить отчеты
, а скорее сделать систему ur простой для ВАС, чтобы Вы могли добавлять новые отчеты, в этом случае клиент присылает Вам pdf/excel, показывая нужный формат, и вы можете быстро придумать новый отчет
, который я сделал для нашей бухгалтерской системы, которая используется для нескольких клиник, мы также взимаем номинальную плату за каждое изменение отчета (чтобы пользователь не мог бездумно менять систему)
.