Other‎ > ‎


posted Jan 5, 2010, 8:19 AM by Tim Nash   [ updated Jan 8, 2010, 7:12 AM ]
The current faq page is being edited. This  faq content page is primarily here for the search engine.
Please go to this page (latest faq) for the information on this page and possibly more.

* How to turn on Google Services

Google Services should be turned on if you are going to use Google Calendar to preload forms.

Click the 'Share' button. In the 'User Settings' tab you should see an entry for 'Google Services'.

Click the 'Load' button at the bottom. Now change the 'Google Services' entry to 'on' and click 'Save'

Reload the page.

* How to use calendar

Preconditions: You must have 'Google Services' turned on.

Add an appointment for a specific client. Then in the event details section, add a url that points to that clients
Eg. http://smw.appspot.com/?load=CHART

Then when a valid user logs in to their waveforms account and selects the specific appointment, they can quickly load the client data by clicking on the "Go to the following url" link.

Which will load the latest form created in this chart.

* How do I import a Google Spreadsheet form

1. copy this url, don't miss the two dot dots at the very end!
2. go to either regular or turbo mode
3. go to the 'Add a Template' tab
4. Paste the url above into the big box
5. fill out the other boxes. Give it a unique name
6. choose ssurl if you want just a JSON form OR choose ssurlgadget if you want both a html form and a JSON form
7. click 'Save' button
8. go to html-templates mode and you will see your form.

Note: You may have to repeat your steps if the spreadsheet form hasn't been 'warmed up'. If you do repeat these steps, make sure you change the name to keep it unique.

* How to log in using Mobile phone / no javascript

To login using a mobile phone click this link http://smw.appspot.com/simplelogin

Mobile browsers can remain logged in (save cookie) and re-visit by bookmarking this link http:/smw.appspot.com/mobile

* How to check out the Plone/Intranet version

To see a demo of the Plone server version which runs on desktop or intrAnet and doesn't require internet click the following links.
This is primarily intended for internal use on a intranet but an internet demo using Http Basic Security  (password is sent as text) is available at the following link:

Log in as physician1/physician1

Log in as physician2/physician2

    •    No connection to internet needed
    •    Easy to set-up
    •    Runs with or without separate SQL database.
    •    Works with Oracle, MSSQL, Postgres, MySQL
    •    Runs on Windows, Mac or Unix/Linux
    •    Same features as Google Version
    •    Uses Plone membership
~ Primarily intended for intranet use but can be used on the internet.
~ runs on the Zope platform using Plone membership management
~ Plone version of application is now nearly feature complete with Google App Engine version beta 0.9.5
~ This version runs on any RDBM system that Zope supports (Mysql, Postgres, Oracle, MSSQL, Sqlite3, etc.)
~ runs on zope > 2.8.8. It can be used with Plone but is not dependent  upon Plone.
~ lite (iphone) and turbo versions
~ wavefunctions
~ ability to turn gtalk and gserv on/off
~ use google contacts
~ use google calendar
~ google wave integration (gadget and script proxy)

~ There is no mobile mode.
~ google wave integration with intranet requires local gwave server or custom programming to match your security model
~ available as a Mac dmg file for Mac Tiger. Other *nix and windows versions should work but have not been tested.

* How to use Wavefunctions

WaveFunctions allow the user to decide which javascript functions they want to include when their page loads.

Wavefunctions increase the number of javascript functions available to
each individual waveform without forcing all users to download
unnecessary code.

To use Prepared Wavefunctions, click the 'Share' button and then click the tab titled 'Wavefunctions'
You will see a radio listing of wavefunctions. Click the one you want and press the 'Use this wavefunction' button.
Now reload your entire webpage to get access to the new functionality.

You can also modify your existing wavefunction in the text area at
this url: http://smw.appspot.com/getUserWaveFuncs

* How to use Map-Reduce functions.

Map - Reduce functions run on the server so they need to be pre-approved. There are several reasons why we provide you with  Map-Reduce functions instead of  SQL queries. The most important of this is simple. Custom SQL queries would be more processor intensive (in our case, but not necessarily) and non-secure. The schema for each waveform is externally represented in the waveform itself, so to figure out how you will query a waveform, you should start by identifying which field you are interested in. Next you write a map and a reduce. What is a map? Imagine you have to count the frequency of the letter 'D' in Darwin's "Origin of the Species". Fortunately, you have all the grade schools in Los Angeles available to help for one hour. A map-reduce approach would be to separate the pages from the book and give a page to each student. Each student goes through their page and counts the number of 'D's and tells the teacher. The teacher forwards the page number and the D-count on to you. The next step is the reduce step. You go through each students report and sum the total number of Ds in the book. Simple, easy and effective. Although we are primarily using map-reduce due to the external schema, the algorithm is being used more and more often for a wide variety of reasons, including scalability.
To write a map, you need to know that you will be running your map function on a list of JSON forms (represented as dictonaries). In your map function you refer to one of those JSON forms as 'y'. The code is written in python. In the reduce function, the (f)irst value and the (s)econd values are combined, just like the first two school kids D-count. After the first two kids counts are combined, the total is then added to the third kids count, and so on until all of the pages are accounted for. Study the examples and try using python's built in map and reduce functions. If you don't have python, Proven Corporation has provided a sandbox you can use. http://www.proven-corporation.com/software/app-engine-console/#demo

def example_1_map(y):
    #for each waveform, return the value of the fieldID
    return y[fieldID]

def example_1_reduce(f,s):
    return int(f) + int(s)

def example_2_map(y):
    #returns a count of the words in fieldID
    fieldaslist = y[fieldID].split(' ')
    return len(fieldaslist)

def example_2_reduce(f,s):
    return f + s

After you have written your map-reduce functions, email them to the admin of this site. The will be evaluated and posted to the site if they qualify. Currently all map-reduce functions are publicly available to all.
* How to populate a waveform field via a webservice call.
Set up your data source like this:
var test_ds = new Ext.data.JsonStore({
url: 'http://localhost:8081/runmapreduce?user_waveform=test1&user_chart=amatest&user_map=entry.0.single&mapreduceradio=mapreduceradio2&maponly=maponly',
            autoLoad: false,
            root: 'root',
//now load the ds

//define a function that does something with the ds, like insert its count into a form field. NOTE: You should get the field by ID and NOT by name.
var userws1 = function(){

//in your form, use a button that has "handler": userws1 just like this.
{"value": "", "fieldLabel": "Sample Question 1", "xtype": "textfield", "name": "entry.0.single", "id": "entry_0"},{"xtype":"button", "handler": userws1 }
* How to set up the categories of Templates my wave group will see.

* How to Move a chart.

First check to make sure you are a member of the target wave:

Next, select the chart you want to move by using the listbox in the bottom left:
Next, select the wave you want to move the chart to by selecting it from the listbox right next to it on the right.
ou will now see an alert box telling you the chart has been moved. Click 'OK'

Now you can go over to the target wave by selecting it from the top listbox and see the new chart has been moved.

* How to create a waveform using Form Designers

  The easiest way to create a waveform for non-programmers is by using Google's spreadsheet form designer. 

1. go here http://docs.google.com/templates?type=forms&sort=hottest&view=public
2. pick the template you want to use and click "use this template"
3. you will see a form in the form editor. click "view the published form....."
4. select the url in the location bar. It will look like this: http://spreadsheets.google.com/viewform?formkey=dGJJVnIzejdjWll1V3dndWhTWG9zQ2c6MA..

5. past that url into the 'Add Template' tab in the big empty box.
6. give it a new, unique form id: eg. survey
7. give it a Category or leave blank to recieve a category 'default'
8. in config type choose 'ssurlgadget'
9. click the save button. the machine will import your new form
10. click reload/expand in the 'Form Templates' tab

Public viewable gadgets (do not require a login) are listed in the drop down box on the right side of the following page:

   The next easiest way to create a waveform is by logging in to your waveform account and viewing a sample form. Click the button labeled "Waveform Info" (may not work in IE) and copy the JSON that gets displayed. Make modifications to this JSON and paste the result into the input box on the 'Add Template' tab.

There is a Gui Designer developed by Sierk found on http://www.projectspace.nl.

There is also a Gui Builder created by Christophe Badoit  which you can find here: http://tof2k.com/ext/formbuilder/ .

* How to create a gadget that uses public submit, sends data to a database I can view with my cell phone and notifies me when I receive input

Any spreadsheet form imported into your SMW application as a
ssurlgadget will be viewable at http:/smw.appspot.com/html-templates.
Pick your waveform and click 'reload'
Your form should load, and you should see the text that looks like
"Send YOUR_FORM to gmail user:"

click on YOUR_FORM. Your form should load in it's own webpage.

This is a useful webpage but it is NOT the gadget url. To see the Google Gadget url, just replace "servegadget.html" with "servegadget.xml"

Go to http://smw.appspot.com/servegadget.xml?formkey=YOUR_GADGET_NAME.xml for the gadget url.

Now embed the gadget into your web site. If your website doesn't support gadgets then use the html url in an iframe.

Note: To specify which user you want to have the data sent to, include &sendto=useremail at the end of the url string. When the user clicks submit, the form data will be submitted to the sendto account at sanmateowaveforms and will show up in that accounts inbox.

* How to use a waveform on google wave

Note: The gwave.xml gadget generator creates a JSON form on google wave.
Any json waveform can be used on Google's wave as a gadget.

To see the gwave gadget version of your waveform, go to

Load one of your waveforms. You will see text like this:
"Save YOUR_WAVEFORM to one of these:"
Click YOUR_WAVEFORM and you will see your google wave gadget.

The gadget url looks like this:  http://smw.appspot.com/gwave.xml?gadgettype=smw&formkey=VetAdmit&groupname=thedagdaewave&gwavepassword=secret

2 types of gadget
- gadgettype=stp: waveform on gwave submits to any server via script tag proxy
- gadgettype=smw: waveform on gwave submits to smw via robot
- form fields updated for anyone on wave
- editor history preserves history of waveform changes
- add the smw@appspot.com robot to a gwave and collect form submits to smw database
- You must click 'share' in smw application to set your gwave password
and use this password in the url of your gadget. replace the word
'secret' with your password.
- wavelet_blip create triggers smw@appspot.com robot submit. Result goes to users smw inbox

* How to remove a user from the wave you admin

1. Make sure your home wave is the current wave and do a page reload.
2. Click the 'Share' button
3. Go to 'Your Wave Admin' tab
4. Click 'Load'
5. Double click the name of the user you want to remove. Drag the name to the 'Remove members' box
6. Click the 'Remove Members' radio button
7. Click the 'Save' button. The user has been removed from your wave.

* How to accept an invite/ join a wave

1. Make sure your home wave is the current wave and do a page reload.
2. Click the 'Share' button
3. Go to 'Your Wave Admin' tab
4. Click 'Load'
5. Double click the wave you have been invited to and drag it over to the 'Accept invite to Wave' box.
6. click 'Save' and refresh the page. Your current wave will now be this wave and you will be able to switch between waves by using the drop down box at the top of they page.

* How to invite another user to your wave

1. Make sure your home wave is the current wave and do a page reload.
2. Click the 'Share' button
3. Go to 'Your Wave Admin' tab
4. Click 'Load'
5. type the users gmail address into the 'invite these new members' box. Do not include the @gmail.com part, it will be assumed.
6. Click 'Save' , the user is now invited to your wave

* Using Google Contacts

Preconditions: You must click 'share' and select 'Wavefunction3'.

The Google contacts Interface may not work with all browsers. You can check your browsers compatablity with this feature by first going to this webpage:


And trying it out.  If you are able to access your contacts at this
page, you can probably use the google contacts feature in Waveforms.

* I forwarded the html mail but the recipient cannot read the form.

Some mail clients need to have html turned on. If they are using gmail, they can begin composing an email then click on "Rich formatting". They can then discard this draft and go back to read your html email. All html email, including waveforms, should now be viewable

* I made a gadget from a Docs Form, where can I use it?

The gadget url you receive in email is designed for use in Google Sites.  However the same gadget can run on multiple sites and products including  iGoogle, Google Maps, Gmail Orkut, or any webpage.

* I clinked an email link but the waveform did not load the data.

This can happen if you have two different gmail accounts. Check and see if you are logged in to gmail as one user and logged into SMW as another user.

* I created a new form but the application changed the form name. It appended my group name to the form name.

This is because you tried to use a formid that is in public circulation. Do not use a formid that you can already see in the Form Templates tree.

* Google Talk isn't showing up in the right side.

This may be because of the restrictions on your browser. Try clicking the 'Google Services' tab and clicking back to 'Google Talk'. That may help in some cases.