About Minibar
Minibar is an alternative implementation of the
Fridge Poetry web app.
It doesn't do everything the original Fridge Poetry does (e.g. drag-and-drop is missing),
so I refer to it as a minibar rather than a full refrigerator :-)
Some implementation details:
- It is implemented directly in JavaScipt. It does not use Google Web Toolkit or any big JavaScript libraries.
- It has been tested and found to work in the following browsers:
- On the Mac: Firefox 3.5 & 3.6, Safari 4.0, Opera 10.10 and
Google Chrome 4.0.249.49.
- On Linux: Firefox 3.0.18 & 3.5, Opera 10.10.
- On the Android Dev Phone: Android Mobile Safari 3.0.4 & 3.1.2
and Android Opera Mini 4.2.
It does not seem work in Internet Explorer 7
(there are both styling and scripting issues). There seems to be some rendering bugs
in Chrome 5.0.342.9 β.
- The implementation consist of two JavaScript files:
minibar.js and support.js
The latter is also used in a small web app based on the
SALDO web services.
- To access the GF web service, it uses the
JSONP method
mentioned in the GF
web services paper, which allows the web app to be hosted on a different server
from the GF web service. (To demonstrate this, I put the Minibar demo on
www.cs.chalmers.se, while the GF server that it calls is on
www.grammaticalframework.org.)
- As an experiment, it does no use the
grammars.xml
file,
but instead calls a little CGI script,
grammars.cgi
which lists the .pgf in the directory, in JSONP format. (Note: if you want to install
this on your own computer,
- if you click on the link,
the CGI script will be downloaded as
grammars.cgi.txt
,
but it should be called grammars.cgi
and stored on the server
in the same directory as the grammar files.
- for CGI scripts to work with lighttpd,
"mod_cgi"
needs to be included
in the definition of server.modules
in the
lighttpd.conf
file.)
- [Added 2010-02-16] There is a button for generating random sentences.
- [Added 2010-02-23] All translations are shown, not just the first one, if there are
multiple parses.
- [Added 2010-02-25] Next to each translation, there is now a little tree icon that
you can click on to see a drawing of an abstract syntax tree or a parse tree. If you click
on a drawing it collapses back into a tree icon.
- [Added 2010-04-09] Preparations to support different ways to access the grammar:
currently we access a PGF server via JSONP, but I would also like to support AJAX,
and local/downloaded JavaScript grammars.
- [Added 2010-04-19] A text entry field appears when you click in
the sentence area (with a dashed border). This allows you to enter words by typing on
the keyboard. As you start typing word magnets that don't match what you are typing
are removed. When only one magnet remains, you can press enter to complete the word.
- [Added 2010-04-19] There is a menu for choosing the output language:
you can pick "All" to translate to all available languages, or pick one particular
language.
- [Added 2010-04-19] You can pass options to the function
start_minibar
to customize the user interface. The default is
{show_abstract:true,show_trees:true}
to show the abstract syntax of parsed
sentences, and to show icons that expand to syntax/parse trees next each translation.
These features can be turned off by setting the fields to false
.
- [Added 2010-04-30] Grammar menu is omitted if there is only one grammar in
the grammar list.
- [Added 2010-04-30] Fewer hardwired constants and new
start_minibar
options (server, grammars_url, grammar_list,
show_grouped_translations, delete_button_text) to make
minibar.js
more resuable.)
- [Added 2010-05-26] The magnets are now created with
<input type=button>
tags to make them clickable in more browsers.
- [Added 2010-05-26] The text entry field is now visible from the start, and it is
removed when no more words can be added to the sentence. When you press enter, the a word
is added if there is only one magnet left, or if what you have entered
exactly matches one of the remaining magnet.
- [Added 2010-05-28] Added a link to make it easy to try the same sentence in
Google Translate.
This can be turned of by passing the option {try_google:false} to
start_minibar
.
Last modified: Fri May 28 18:11:05 CEST 2010
TH