Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Muliple page form using Google Apps Script
- function doGet(eventInfo) {return GUI(eventInfo)};
- function doPost(eventInfo) {return GUI(eventInfo)};
- function GUI (eventInfo) {
- var n = (eventInfo.parameter.HiddenState == void(0) ? 0 : parseInt(eventInfo.parameter.HiddenState));
- var ui = ((n == 0)? UiApp.createApplication() : UiApp.getActiveApplication());
- var Form;
- switch(n){
- case -1: {
- Form = ui.createFormPanel().add(ui.createHTML("<H3>Exited by submission of form "+eventInfo.parameter.formId+"</h3>"));
- } break;
- case 0: {
- // setStyleAttributes(ui,css.app);// UiApp does not support the .setStyleAttributes() method
- // var MastHead = ui.createAbsolutePanel().setWidth('auto').setHeight('190').setId('MastHead')
- // .add(ui.createHTML(title).setStyleAttributes(css.title), 265,75)
- // ui.add(MastHead);
- Form = getForm(eventInfo,n); // Use identical forms for demo purpose only
- } break;
- case 1: {
- Form = getForm(eventInfo,n); // In reality, each form would differ but...
- } break;
- default: {
- Form = getForm(eventInfo,n) // each form must abide by (implement) the hidden HiddenState variable
- } break;
- }
- return ui.add(Form);
- };
- function getForm(eventInfo,n) {
- var ui = UiApp.getActiveApplication();
- // Increment the ID stored in a hidden text-box
- var HiddenState = ui.createTextBox().setId('HiddenState').setName('HiddenState').setValue(1+n).setVisible(true).setEnabled(false);
- var H1 = ui.createHTML("<H1>Form "+n+"</H1>");
- var H2 = ui.createHTML(
- "<h2>"+(eventInfo.parameter.formId==void(0)?"":"Created by submission of form "+eventInfo.parameter.formId)+"</h2>");
- // Add four submit buttons to go forward, backward, to stay/validate and to exit the form
- var Btn = {};
- Btn.Next = ui.createSubmitButton("Next").setEnabled(true).setVisible(true);
- Btn.Back = ui.createSubmitButton("Back").setEnabled(n>1).setVisible(true);
- Btn.Stay = ui.createSubmitButton("Stay").setEnabled(n>0).setVisible(true);
- Btn.Exit = ui.createSubmitButton("Exit").setEnabled(n>0).setVisible(true);
- var Buttons = ui.createHorizontalPanel().add(Btn.Back).add(Btn.Stay).add(Btn.Next).add(Btn.Exit);
- var Body = ui.createVerticalPanel().add(HiddenState).add(H1).add(H2).add(Buttons).add(getParameters(eventInfo));
- var Form = ui.createFormPanel().setId((n>0?'doPost[':'doGet[')+n+']').add(Body);
- // Add client handlers using setText() to adjust HiddenState prior to form submission
- // NB: Use of the .setValue(val) and .setValue(val,bool) methods give runtime errors!
- Btn.Stay.addClickHandler(ui.createClientHandler().forTargets(HiddenState).setText(''+(parseInt(n))));
- Btn.Back.addClickHandler(ui.createClientHandler().forTargets(HiddenState).setText(''+(parseInt(n)-1)));
- Btn.Exit.addClickHandler(ui.createClientHandler().forTargets(HiddenState).setText('-1'));
- // Add an event handler executed prior to form submission
- var onFormSubmit = ui.createClientHandler()
- .forTargets(HiddenState).setEnabled(true) // Enable so value gets included in post parameters
- .forTargets(Body).setStyleAttribute("backgroundColor","#EEE");
- Form.addSubmitHandler(onFormSubmit);
- return Form;
- }
- function getParameters(eventInfo) {
- var ui = UiApp.getActiveApplication();
- var panel = ui.createVerticalPanel().add(ui.createLabel("Parameters: "));
- for( p in eventInfo.parameter)
- panel.add(ui.createLabel(" - " + p + " = " + eventInfo.parameter[p]));
- return panel;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement