динамични уеб форми

Разработвам уеб приложение, което позволява да се пишат и преглеждат отчети онлайн. Тези отчети ще имат структурата на типичен училищен доклад или годишен доклад за оценка на служителите. Бих искал потребителят да може да персонализира структурата на отчета си. Например едно училище може да иска отчет във формата

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 изглежда, че може да е от значение, но все още не съм се задълбочил в него.

Наздраве, Дон


person Dónal    schedule 23.12.2009    source източник
comment
Към какви крайни потребители се насочвате?   -  person Jeff Beck    schedule 28.12.2009
comment
Крайните потребители ще бъдат обикновени хора, т.е. не техническа аудитория   -  person Dónal    schedule 29.12.2009
comment
Бихте ли предпочели хоствано решение или софтуер, който можете да персонализирате и инсталирате на вашия собствен сървър?   -  person avernet    schedule 31.12.2009
comment
Искам да интегрирам това в приложение на Grails, така че в идеалния случай бих искал плъгин за Grails или Java компонент/библиотека   -  person Dónal    schedule 31.12.2009
comment
Опитвате ли се да изградите инструмент, който прави само изход (отчети за IE), или се опитвате да изградите инструмент, който позволява на крайните потребители да създават формуляри, които някой попълва?   -  person Jeff Beck    schedule 02.01.2010
comment
@Jeff - инструмент, който позволява на крайните потребители да създават формуляри, които някой попълва   -  person Dónal    schedule 02.01.2010


Отговори (7)


Много хубав създател на формуляри, базиран на XForms, (LGPL) http://www.orbeon.com/

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

person Eran Medan    schedule 27.12.2009
comment
Демото изглежда изключително сложно! - person AntonioCS; 27.12.2009
comment
Не виждам как това наистина ще помогне за създаването на отчети, изглежда повече за въвеждане на данни. - person Jeff Beck; 02.01.2010

Съгласен съм с коментарите на Джеф Бек и също забелязах следното.

Казахте, че вашата целева аудитория не е техническа и всички решения по-горе ще включват изучаване на HTML и сложен език на шаблони, вероятно нестартер за вашата аудитория.

Решенията по-горе също изглежда се нуждаят от повече сложност, отколкото изисква вашият проблем. MooTools, Dojo и т.н. изглеждат прекалено много. XForms и XSLT още повече. Да, те ще работят и ще ви дадат много допълнителна функционалност, но имате ли нужда от нивото на сложност и проблемите с отстраняване на грешки/поддръжка/обучение, които вървят с тези допълнителни функции?

Вашият редовен учител или бизнес потребител вероятно има основно разбиране за това как да въвеждате и запазвате файлове в Excel. Ако можете да ги научите как да записват в CSV формат и да качват формуляра, или още по-добре да инсталирате макрос, който ще записва в CSV и ще го публикува на вашия уеб сайт, тогава това вероятно е единственото обучение, от което ще се нуждаят. За да получите семантиката, можете да добавите малко повече обучение и първият ред на отчета да бъде имената на колоните, а вторият ред да бъде типът на колоната. Не е елегантно, но е лесно за възприемане от потребители с потенциални технически затруднения, както посочва Джеф.

От страна на сървъра бих препоръчал следния стек:

Уеб сървър => 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">[email protected]</div>
     <div id="bio">Experienced software professional...</div>
  </div>
</div>
person Bill Barnhill    schedule 30.12.2009
comment
Съжалявам за обърканите връзки към github, нов съм в приноса тук, така че без представител. - person Bill Barnhill; 31.12.2009

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

person Zoran Regvart    schedule 26.12.2009

Бих предложил да използвате:

  • wiki двигател или конвертор на обикновен текст в HTML като Markdown, за да позволи на потребителите ви да персонализират предоставените от вас шаблони
  • библиотека за HTML шаблони за вмъкване на данните, използвайки дефинирания шаблон

За HTML конвертора можете да използвате MarkDown на John Gruber (в perl) от страна на сървъра, или Javascript порт от Джон Фрейзър, Showdown.

За HTML шаблоните има много налични библиотеки на Javascript в зависимост от избраната от вас рамка:

person Eric Bréchemier    schedule 27.12.2009

Аз отговарям за XSLTForms и изглежда като добър кандидат за това, което искате да правите.

Възможностите за XSLTForms са по-добри от тези на спецификацията XForms 1.1: XSLT от страна на клиента, SVG и други.

Динамичните формуляри могат да бъдат разработени с XForms и, в случай че не е достатъчно за вашето приложение, XSLTForms може да интегрира необходимите разширения.

person Alain Couthures    schedule 23.12.2009
comment
Ален, този отговор е ОК, тъй като е отговор на директен въпрос и вие разкрихте връзката си с XSLTForms. Ние обаче не разрешаваме подписи и не препоръчваме публикации, които са реклами. - person Jeff Atwood; 28.12.2009

Трябва да е лесно да се създаде в Smalltalk с Seaside. Имате WATableReport с WATableColumns. Просто създайте прост редактор, където всяко училище може да дефинира тези колони. Не съм сигурен какво общо имат javascript или XForms с това. Доколкото знам, XForms в момента е мъртъв, освен ако не можете да предпишете браузъра.

person Stephan Eggermont    schedule 28.12.2009

мисля, че ако формулярите не се променят твърде често, не трябва да предоставяте система за потребителя, който не е технологичен, за да бърка с отчетите

по-скоро направете системата си лесна за ВАС, за да добавяте нови отчети, в този случай клиентът ви изпраща pdf/excel, показващ формата, който искат, и можете бързо да излезете с нов отчет

това направих за нашата счетоводна система, която се използва за няколко клиники, ние също начисляваме номинална такса за всяка промяна на отчета (за да предотвратим безсмислената промяна на системата от страна на потребителя)

person Dapeng    schedule 31.12.2009