Objective
I have a really cool project for which I am looking for help. I need to be able to render dynamic forms. The form definitions would be stored in a text file or database. The form definition would be passed to a rendering engine which would generate the HTML form that appears on the screen.
Example
For example, a simple source file may look like this:
HTML Code:
title: "Simple Contact Form",
fields: [
{
fieldType: "label",
text: "Please enter your name"
}, {
fieldType: "textfield",
name: "User_Name"
}, {
fieldType: "label",
text: "What is your date of birth"
}, {
fieldType: "datefield",
name: "DOB"
}, {
fieldType: "label",
text: "What is your country of birth"
}, {
fieldType: "combo",
name: "User_Country",
values: [ “Afghanistan”, ”Albania”, “Argentina”,… ]
}]
The rendering engine will process the form definition file and generate an HTML form which looks something like this:
HTML Code:
Please enter your name [___________________]
What is your date of birth [__________][calendar]
What is your country of birth [_Afghanistan_|v]
Role of Ext JS
Rather than generating the raw HTML, the rendering engine can generate Ext JS code, which in turn will produce the raw HTML. (This way, Ext JS can look after much of the low level tasks such as cross browser compatibility issues, pretty formatting, rich layout, etc.)
Why Dynamic forms?
I need these forms to be dynamic as I wish to attach the following events to each field. (If the forms were to be hard-coded than each field would need to have these events hard-coded. Over time it is much easier and less error prone to dynamically generate the form and events.):
- Inline client validation: OnChange will validate the value against a mask and/or regular expression. (E.g. A text field which expects a phone number will use a phone number regular expression to enforce the appropriate data entry mask.)
.
- Inline server validation: On loss of focus the value will be passed to the server for server side validation. (E.g. The server may ensure the value is appropriate given a lookup against the database. For example, the server may check that the area code is appropriate for the home address.)
.
- Conditional branching: A group of fields are enabled/disabled based on a previous response. (E.g. On a medical form, if the user specifies they are female then a number of questions relating to pregnancy will be enabled.)
.
- Soft and hard warnings: Any validation can produce a soft warning or a hard warning. The form can be submitted with a soft warning; however, the form cannot be submitted with a hard warning. (E.g. On a medical form we may expect that a person’s pulse is between 50 and 100 bpm. A pulse of less than 1 bpm or greater than 300 bpm is inconceivable so values outside of this range will produce a hard warning – clearly a data entry error which needs to be corrected. A pulse between 1 and 50 or between 100 and 300 is unlikely but possible. As such these values will produce a soft warning.).
.
- Field status: A discrete icon will appear beside each field indicating its status. (E.g. A green stoplight indicating the value is legitimate; a yellow stoplight indicating a soft warning; a red stoplight indicating a hard warning; no lights on the stoplight indicating no value has been entered yet.)
.
- Edit tracking: When a previously saved form is edited, the user may be asked to explain why they are changing a given value. (E.g. This is common in regulated industries. In a clinical trial if a doctor changes the patient’s pulse on a form which was previously saved, the doctor will be asked to explain why they are changing the value.).
Visual Designer
Dynamically generating the form is my primary requirement. My secondary goal is to have a GUI to help design the form. (This will allow laypeople such as medical professionals to setup the forms rather than relying on developers.)
Note: GUI Designer is an excellent tool for laying out an entire page. What I am looking for is something similar. But, where GUI Designer is focused on a general purpose page, I need something focused on data entry forms. Additionally these forms will require unique properties such as conditional branching, soft and hard warnings, etc.
Reward
Can you help me out? If so I am happy to pay for this solution. I will pay $20,000 for the first solution which meets my requirements.
Please let me know if you are interested and I will post my full requirements.
Background
Soliciting the world wide development community such as I am doing with this offer is a first for me. I hope my approach is acceptable. (The forum rules say nothing about offering rewards for assistance. Besides, I figure since I am offering money as opposed to asking for money this will be seen in a positive light. If anybody takes issue with my offer please let me know. It is my intent to be a good Ext JS citizen.)
I am a director of software and technology solutions for a large health care company. These dynamic forms are the first of many modules for a big system we will be undertaking this year. I have an internal development team which I will need to augment for this project. Before hiring contractors I am conducting this offer as an experiment as I believe I can get better quality code, faster, and less expensive from you – the passionate hobbyist/professional. Your feedback is appreciated.