| Title: | Web Interface to 'R' Functions | 
| Version: | 1.2 | 
| Date: | 2024-04-22 | 
| Description: | Web front end for your 'R' functions producing plots or tables. If you have a function or set of related functions, you can make them available over the internet through a web browser. This is the same motivation as the 'shiny' package, but note that the development of 'shinylight' is not in any way linked to that of 'shiny' (beyond the use of the 'httpuv' package). You might prefer 'shinylight' to 'shiny' if you want a lighter weight deployment with easier horizontal scaling, or if you want to develop your front end yourself in JavaScript and HTML just using a lightweight remote procedure call interface to your R code on the server. | 
| Author: | Pieter Vermeesch [aut], Tim Band [aut, cre] | 
| Maintainer: | Tim Band <t.band@ucl.ac.uk> | 
| Depends: | R (≥ 3.0.0) | 
| Imports: | grDevices (≥ 3.6.2), httpuv (≥ 1.5.4), jsonlite (≥ 1.6.1), later (≥ 1.0) | 
| Suggests: | websocket (≥ 1.4.1) | 
| License: | GPL-3 | 
| RoxygenNote: | 7.3.1 | 
| Encoding: | UTF-8 | 
| NeedsCompilation: | no | 
| Packaged: | 2024-04-22 18:31:05 UTC; ucfbtpb | 
| Repository: | CRAN | 
| Date/Publication: | 2024-04-23 00:00:10 UTC | 
Opens a browser to look at the server
Description
Opens a browser to look at the server
Usage
browseTo(server)
Arguments
| server | The server to browse to | 
Value
No return value
Encodes a data frame as a CSV file to be downloaded
Description
Encodes a data frame as a CSV file to be downloaded
Usage
downloadCsv(results)
Arguments
| results | Data frame to be returned | 
Value
A list to be returned to the browser describing a CSV file to be downloaded.
Renders a plot as a base64-encoded image
Description
Renders a plot as a base64-encoded image
Usage
encodePlot(device, mimeType, width, height, plotFn)
Arguments
| device | Graphics device function, such as
 | 
| mimeType | Mime type for the data produced by  | 
| width | Width of the plot in units applicable to  | 
| height | Height of the plot in units applicable to  | 
| plotFn | Function to call to perform the plot | 
Value
list with two keys, whose values can each be NULL:
'plot' is a plot in HTML img src form and 'data' is a
data frame or other non-plot result.
Examples
pdf <- encodePlot(grDevices::png, "image/png", 200, 300, function() {
  barplot(c(1, 2, 3, 4))
})
grDevices::png()  # workaround; you do not have to do this
Renders a plot as a base64-encoded PNG
Description
The result can be set as the src attribute of an <img>
element in HTML.
Usage
encodePlotAs(format, plotFn)
Arguments
| format | An object specifying the output, with the following members:
format$type is  | 
| plotFn | Function to call to perform the plot | 
Details
You will not need to call this function unless you want to return more
than one plot per call, as the last plot produced will be returned
in the plot property of the result from shinylight.call
anyway.
Value
list with two keys, whose values can each be NULL:
'plot' is a plot in HTML img src form and 'data' is a
data frame or other non-plot result.
A list with an element named plot containing the
plot encoded as required either for an HTML image element's
src attribute, or a element's href attribute.
If the function returns a matrix or data frame, this will be returned
in the list's data element.
See Also
Examples
pdf <- encodePlotAs(list(type="pdf", width=7, height=8), function() {
  barplot(c(1, 2, 3, 4))
})
grDevices::png()  # workaround; you do not have to do this
JavaScript function: Starts the Shinylight Framework, if you want to use it.
Description
The Shinylight Framework allows you to declare all your functions in R and have a nice-looking web front end for your code without having to write any JavaScript.
You should never need to call this function yourself; if you do not
provide your own index.html, the default Shinylight one
will be used that will call this function on page load.
Using the Shinylight Framework entails calling the slServer
function with the interface argument set to
list(getSchema=schema), where
schema is defined in the following section.
Arguments
| options | 
 | 
| options.createFileInput | 
 | 
The Schema
It is a list with the following members:
- functions
- a list of functions (keyed by their names), each of which is a list with the following members: - params
- a list of the main parameters the function accepts. The keys are the parameter names and the values are keys into the schema's - paramslist.
- optiongroups
- a vector of keys into the schema's - optiongroupslist giving other parameters to this function.
 
- functiongroups
- optional: the menu structure for the functions menu. Each item in the list is either a function name (a string referencing a key in the - functionslist) or a list representing a submenu. Submenu keys are the name to be displayed in the list, which can be overridden in the app.json file's- functionsobject, just like providing localized names for functions.
- params
- a list of the parameters the functions take, each of which is a list with the following members: - type
- either a key into the schema's - typeslist, giving the type of this parameter or the values it can take, or one of a set of standard types:- 'b'
- Boolean 
- 'f'
- Floating point 
- 'u8'
- 8-bit unsigned integer 
- 'color'
- Colour 
- 'subheader'
- Vector of settings the user can choose for each column using selectors in the subheader row. This is usually used to select units (for example percent-by-weight versus parts-per-million) for the columns. 
 
- data
- a key into the schema's - datalist, giving initial or example data for this parameter.
 
- types
- a list of types with keys referened from the schema's - paramslists's- typevalues. The values are a list with the following members:- kind
- Mandatory; one of: - 'enum'
- Enumeration type 
- 'column'
- A column from the input grid 
 
- values
- A vector of permitted values (only if - kind='enum')
- factors
- Only if - kind='enum'and this enum is used as the unit type for some column; a vector of factors to multiply column data by if the unit is changed by the user. Must have the same number of elements as the- valuesvector. For every n,- factors[[n]]of unit- values[[n]]must be equal. For example, if- values=c('mm', 'cm', 'inch')then- factorscould be- c(25.4, 2.54, 1.0).
- subtype
- Only if - kind='column'. The type of data that can be entered into the column. Currenly only- 'f'works well.
- unittype
- Optional and only if - kind='column'. The name of an enum type defining the units that the data in this column can be expressed in.
 
- data
- A list of initial data with which table columns and controls will be populated. Can be a single value or vector (or list) as appropriate. 
- optiongroups
- A list of option groups. Each one is a set of parameters that can be added as a block to functions that want them. Each element is a list with the following keys: - type
- The same as for - param's- type: either a key into the schema's- typeslist or one of the standard types (- 'b',- 'u8',- 'f'or- 'color').
- initial
- The initial value for this option. 
 - There is one special key in the - optiongroupslist; this is the- frameworkkey. This is reserved for options that apply to the framework itself, not to any of your functions. So far, the only option it has is- autorefresh=list(type="b", initial=FALSE). You can set its initial value to- TRUEif you prefer. If you add this option, it controls whether the GUI has a "Calculate" button (- FALSE) or whether the output should refresh a second or two after the user finishes changing parameters (- TRUE).
Localization
To display human-friendly text on the controls and to get tooltip
help text, you need one or more localization files. These files
are named inst/www/locales/XX/app.json where
XX is replaced with the appropriate ISO language code.
These files are JSON files containing an object with the following keys:
- title
- Text for the link to put in the top left 
- homepage
- Destination for the link to put in the top left 
- functions
- One pair of translations for each function in the schema. 
- params
- One pair of translations for each parameter in the schema. 
- optiongroups
- Each of the - optiongroupsin the schema gets a key which maps to an object which has the following keys:- @title
- A translation pair for the option group itself. 
- ...
- One translation pair for each option in the group. 
 
- types
- One object for each - 'enum'type in the schema. Each value is an object with one key per possible enum value. Each value in this object is that enum value's translation pair.
A "translation pair" is an object with the following keys:
- name
- A short name 
- help
- Tooltip text 
See Also
toolkit.loadFileButton
Obtains the address that the server is listening on
Description
Obtains the address that the server is listening on
Usage
getAddress(server)
Arguments
| server | The server (returned by  | 
Value
The HTTP address as protocol://address:port
Examples
server <- slServer(
  port = 50051,
  interface = list(
    multiply = function(x, y) { x * y }
  )
)
address <- getAddress(server)
# ...
slStop(server)
stopifnot(address == "http://127.0.0.1:50051")
Get index.html with (potentially) the JSON data in 'text' inserted.
Description
Get index.html with (potentially) the JSON data in 'text' inserted.
Usage
indexWithInit(text, path)
Arguments
| text | The text to insert as shinylight_initial_data | 
| path | File system path to the index.html file | 
Value
The updated text
Makes and starts a server for serving R calculations
Description
It will serve files from the app directories specified by appDirs.
If a file is requested that is not in one of those directories, the
files in Shinylight's own inst/www directory will be served.
Some paths have special meanings: / returns
/index.html, /lang/ is redirected to
/locales/<language-code>/ depending
on the language selected in the request's Accept-Language
header (that is, the browser's language setting) and the
availability of the file requested. A POST request to /init
with a data parameter will return /index.html, except
that if the file has a line containing shinylight_initial_data =
then this line with be replaced with a line initializing
shinylight_initial_data to the data passed. This is used in
shinylight-framework to permit linking to a framework app
with specific data preloaded – the text should be as is downloaded
with the "Save Data" button. Of course, this is available to
non-framework apps, too.
Usage
rrpcServer(
  interface,
  host = "0.0.0.0",
  port = NULL,
  appDirs = NULL,
  root = "/",
  initialize = NULL,
  testFunction = NULL
)
Arguments
| interface | List of functions to be served. The names of the elements are the names that the client will use to call them. | 
| host | Interface to listen on (default is  | 
| port | Port to listen on | 
| appDirs | List of directories in which to find static files to serve | 
| root | Root of the app on the server (with trailing slash) | 
| initialize | A json string or list (that will be converted to a
JSON string) to be passed to the JavaScript as initial data. For
non-framework apps, the index.html must contain a line containing
 | 
| testFunction | Function to be called if the  | 
Value
The server object, can be passed to slStop
Returns a function that runs an R command
Description
If you set this as a part of your interface, like:
runR=shinylight::runR(c("+", "plot", "c", "x", "y"))
then you can call it from Javascript like this:
rrpc.call("runR", {
 Rcommand:"2+2"
}, function(x) {console.log(x);});
rrpc.call("runR", {
 Rcommand:"y<-c(2,0,1);plot(c(1,2,3),y);y",
 'rrpc.resultformat': {
   type: 'png',
   width: 200,
   height: 300,
 }
}, function(x) {img.setAttribute('src', x.plot[0])});
Usage
runR(symbolList)
Arguments
| symbolList | A list of permitted symbols in the R command | 
Value
A function that can be passed as one of the elements of
slServer's interface argument.
Examples
server <- slServer(
  port = 50050,
  interface = list(
    run_the_users_r_code = runR(
      list("c", "$", "list", "+", "-", "/", "*", "sqrt")
    )
  )
)
# ...
slStop(server)
Sends informational text to the client.
Description
During a slow remote procedure call, call this to inform the client of progress.
Usage
sendInfoText(text)
Arguments
| text | The text to send | 
Value
No return value
See Also
sendProgress for sending a progress completion
ratio to the user.
Examples
server <- slServer(
  port = 50051,
  interface = list(long_and_complicated = function(x) {
    # First part of work that takes some time
    # ...
    sendInfoText("We are about half way through")
    # Second part of work that takes some time
    # ...
  })
)
# ...
slStop(server)
Sends a progress update to the client.
Description
During a slow remote procedure call, call this to inform the client of progress.
Usage
sendProgress(numerator, denominator = 1)
Arguments
| numerator | The progress, out of  | 
| denominator | What the progress is out of. You could use this for the number of known items to be completed so that each call increases either the numerator (for more items done) and/or the denominator (for more items discovered that need to be done). However, it is not necessary to be so precise; you can set the numerator and denominator however you like on each call as long as it makes sense to the user. | 
Value
No return value
See Also
sendInfoText for sending text to the user.
Examples
server <- slServer(
  port = 50051,
  interface = list(long_and_complicated = function(x) {
    sendProgress(0,3)
    # First part of work that takes some time
    # ...
    sendProgress(1,3)
    # Second part of work that takes some time
    # ...
    sendProgress(2,3)
    # Last part of work that takes some time
    # ...
    sendProgress(3,3)
  })
)
# ...
slStop(server)
JavaScript function
Description
Calls a server function as defined in the server's call to the
slServer function.
Arguments
| fn | 
 | 
| data | 
 | 
| plotElement | 
 | 
| extra | 
 | 
Value
Result object that might have a plot
property (giving a string that would work as the src
attribute of an img element, representing graphics
drawn by the command), a data property (giving
the value returned by the command) and a headers
property (giving the column names in the data returned if any).
If the promise resolves to an error, the argument to the error
function is a string representing the cause of the error.
JavaScript function
Description
Call this before calling any other ShinyLight function. Returns a promise that resolves (to nothing) when the connection is ready.
JavaScript function
Description
Turns data received from R into a form that can be set into dataentrygrid.js.
Arguments
| data | 
 | 
| extraColumns | 
 | 
Value
Headers and rows
Examples
## Not run: 
t = shinylight.makeTable(data);
grid.init(t.headers, t.rows);
## End(Not run)JavaScript function
Description
Open another tab with another (possibly remote from this one) instance of shinylight, initializing it with our own data.
Arguments
| url | 
 | 
| data | 
 | 
JavaScript function: Runs an R function.
Description
The R side must be running the slRunRServer function.
Arguments
| rCommand | 
 | 
| data | 
 | 
| plotElement | 
 | 
| extra | 
 | 
Value
Result object that might have a plot
property (giving a string that would work as the src
attribute of an img element, representing graphics
drawn by the command) and a data property (giving
the value returned by the command). If the promise resolves
to an error, the argument to the error function is a string
representing the cause of the error.
JavaScript function
Description
Sets the text content of an element (or its value as
appropriate) to the JSON representation of an object.
Arguments
| elementOrId | 
 | 
| object | 
 | 
JavaScript function: Sets an <img> element to display a plot returned by
runR.
Description
Normally you do not need to call this because to get
shinylight to produce a plot you need to set the
plotElement argument, and doing so will cause this
element to receive the plot automatically.
Arguments
| elementOrId | 
 | 
| result | 
 | 
JavaScript function
Description
Sets the text content of an element (or its value as
appropriate).
Arguments
| elementOrId | 
 | 
| text | 
 | 
JavaScript function
Description
Sets a dataentrygrid object to the result of
runR, if appropriate.
Arguments
| grid | 
 | 
| result | 
 | 
JavaScript function
Description
Sets a dataentrygrid object to the result of
runR. The object will have fixed rows, with
names derived from the row names in the original
data frame.
Arguments
| grid | 
 | 
| result | 
 | 
Start a ShinyLight server which runs R that it is sent
Description
Start a ShinyLight server which runs R that it is sent
Usage
slRunRServer(
  permittedSymbols,
  appDir = NULL,
  host = "127.0.0.1",
  port = NULL,
  daemonize = FALSE,
  initialize = NULL
)
Arguments
| permittedSymbols | List of symbols that are permitted in the R
commands passed. Remember to include  | 
| appDir | Directory containing files to serve (for example system.file("www", package = "your-package")) | 
| host | IP address to listen on, default is  | 
| port | Internet port of the virtual server. If not defined, a random free port will be chosen and the browser will be opened to show the GUI. | 
| daemonize | If TRUE, keep serving forever without returning.
This is useful when called from  | 
| initialize | A json string or list (that will be converted to a
JSON string) to be passed to the JavaScript as initial data. The
index.html must contain a line containing
 | 
Value
server object, unless daemonize is TRUE.
See Also
slServer for the more general form of this
function, or slStop to stop a running server.
shinylight.runR is the JavaScript function you need
to call to pass R code from the browser to the server.
Examples
server <- slRunRServer(
  permitted = list("*"),
  port = 50053
)
# Normally we would use shinylight.js to send the function over
# and receive the result, not R and websocket.
ws <- websocket::WebSocket$new("ws://127.0.0.1:50053/x")
resultdata <- NULL
ws$onMessage(function(event) {
  resultdata <<- jsonlite::fromJSON(event$data)$result$data
})
ws$onOpen(function(event) {
  ws$send('{"method":"runR","params":{"Rcommand":"3 * 57"}}')
})
timeout = 30
while(is.null(resultdata) && 0 < timeout) {
  later::run_now()
  Sys.sleep(0.1)
  timeout <- timeout - 1
}
ws$close()
slStop(server)
stopifnot(resultdata == 171)  # 3 * 57 == 171
grDevices::png()  # workaround; you do not have to do this
Start a ShinyLight server
Description
Start a ShinyLight server
Usage
slServer(
  interface,
  appDir = NULL,
  host = "127.0.0.1",
  port = NULL,
  daemonize = FALSE,
  initialize = NULL
)
Arguments
| interface | List of functions you want to be able to call from
the browser. If you want to use the Shinylight Framework, this should
have one member  | 
| appDir | Directory containing files to serve (for example system.file("www", package = "your-package")) | 
| host | IP address to listen on, default is  | 
| port | Internet port of the virtual server. If not defined, a random free port will be chosen and the browser will be opened to show the GUI. | 
| daemonize | If TRUE, keep serving forever without returning.
This is useful when called from  | 
| initialize | A json string or list (that will be converted to a
JSON string) to be passed to the JavaScript as initial data. For
non-framework apps, the index.html must contain a line containing
 | 
Value
server object, unless daemonize is TRUE in which case the function will not return.
See Also
slStop to stop a running server, and
slRunRServer to run a server that just accepts R code.
Examples
# You can leave out port and daemonize to launch a browser
# pointing at your server
server <- slServer(
  port = 50052,
  interface = list(
    multiply = function(x, y) { x * y }
  )
)
# Normally we would use shinylight.js to send the function over
# and receive the result, not R and websocket.
ws <- websocket::WebSocket$new("ws://127.0.0.1:50052/x")
resultdata <- NULL
ws$onMessage(function(event) {
  resultdata <<- jsonlite::fromJSON(event$data)$result$data
})
ws$onOpen(function(event) {
  ws$send('{ "method": "multiply", "params": { "x": 3, "y": 47 } }')
})
timeout = 30
while(is.null(resultdata) && 0 < timeout) {
  later::run_now()
  Sys.sleep(0.1)
  timeout <- timeout - 1
}
ws$close()
slStop(server)
stopifnot(resultdata == 141)  # multiply(3, 47) == 141
grDevices::png()  # workaround; you do not have to do this
Stops a ShinyLight GUI
Description
Stops a ShinyLight GUI
Usage
slStop(server = NULL)
Arguments
| server | The server (returned by  | 
Value
No return value
Examples
server <- slServer(
  port = 50051,  # leave this out if you don't care about the port number
  interface = list(
    multiply = function(x, y) { x * y }
  )
)
# ...
slStop(server)
JavaScript class: A monkey-patched HTMLElement.
Description
A Container Element is an element for displaying a set of controls and their labels.
Properties
- makeSubElement
- functionGets an element in which a control and its label can be stored. You do not need to call this unless you have made your own custom control; it will be called by functions such as- toolkit.paramText. Pass in the ID of the control (you will need the ID for the- getDataand- setDatacalls).
- getData
- functionReturns an object mapping contained controls (or nested containers) to their current values.
- setData
- functionSets the values of the contained controls.- datais a mapping from the IDs of the contained controls to the data that should be set on them.
See Also
JavaScript class
Description
A container for a single control.
Properties
- addElement
- functionAdds an element. Should be called once with a control's label, and then again with the control itself.
See Also
JavaScript class
Description
A monkey-patched HTMLElement representing a control with its
label.
Properties
- getData
- functionReturns the current displayed value.
- setData
- functionSets the value.
- hide
- functionMakes the element invisible and non-interactive
- show
- functionmakes the element visible and (potentially) interactive
See Also
JavaScript class: A monkey-patched HTMLElement with some extra methods.
Description
Certain elements returned by Toolkit methods are Positioned Elements. It is necessary for elements in some places in the document to be Positioned Elements for the document resizing and formatting to work.
If you have an HTML element that is not a Positioned Element that you want
to add to a place where only Positioned Elements are required, wrap it in
toolkit.scrollingWrapper or toolkit.nonScrollingWrapper.
Properties
- setSize
- functionSets the position of the element on the document in pixels, with parameters for left, top, width and height in that order.
- getSize
- functionReturns an object with members- left,- top,- widthand- heightfor the position of the element.
- hide
- functionMakes the element invisible and non-interactive
- show
- functionmakes the element visible and (potentially) interactive
JavaScript function: Finds if a predicate is true for all members of an array or object.
Description
Calls a function for each member of an array or object until either
one of them returns false (in which case all returns false) or
we run out of elements (in which case all returns true).
Arguments
| a | 
 | 
| p | 
 | 
JavaScript function: Finds if a predicate is true for any member of an array or object.
Description
Calls a function for each member of an array or object until either
one of them returns true (in which case any returns true) or
we run out of elements (in which case any returns false).
Arguments
| a | 
 | 
| p | 
 | 
JavaScript function
Description
Returns a Container Element for displaying controls horizontally.
Arguments
| elements | 
 | 
| className | 
 | 
Value
The banner element.
JavaScript function: Returns a button.
Description
This button is an HTML element, but it is not an HTML button. Styling and JavaScript provide the button-like look-and-feel.
Arguments
| id | 
 | 
| fn | 
 | 
| translations | 
 | 
Value
The button.
JavaScript function: Dereferences an object or array through multiple indices.
Description
deref(o, [a,b,c], d) is a safe way of doing
o[a][b][c]. If that path does not exist, d is returned.
If d is not supplied, null is returned. Any undefined values in
path are ignored.
Arguments
| object | 
 | 
| path | 
 | 
| defaultValue | 
 | 
Value
Object dereferenced, defaultValue, or null.
JavaScript function: A panel with a smaller footer.
Description
Returns a Positioned Element consisting of a body and a footer.
Arguments
| ftr | 
 | 
| main | 
 | 
Value
The element containing the footer and body.
JavaScript function
Description
Calls a function for each member of an array or object.
Arguments
| a | 
 | 
| f | 
 | 
JavaScript function: Option group title
Description
Adds a group title to an toolkit.optionsPage.
Arguments
| container | 
 | 
| labelTranslations | 
 | 
JavaScript function: A panel with a smaller header.
Description
Returns a Positioned Element consisting of a header and a body.
Arguments
| hdr | 
 | 
| main | 
 | 
Value
The element containing the header and body.
JavaScript function
Description
An image element.
Arguments
| updateSizeFunction | 
 | 
Value
Image element. It has a
getSize() method, returning an object with width and height
members. This is the width and height set by reposition(),
not the actual on-screen width and height, if that is different
for some reason. In other words, it returns the width and height
the image "should" have.
JavaScript function: A panel with a side bar.
Description
Returns a Positioned Element consisting of a left side bar and a body.
Arguments
| bar | 
 | 
| main | 
 | 
Value
The Toolkit Positioned Element containing the side bar and body.
JavaScript function: Returns a button that uploads a file from the client.
Description
This button is an HTML element, but it is not an HTML button. Styling and JavaScript provide the button-like look-and-feel.
Arguments
| id | 
 | 
| fn | 
 | 
| translations | 
 | 
| createFileInput | 
 | 
Value
The button.
JavaScript function: Makes a label suitable for labelling a control.
Description
The label has translatable text and a help tooltip (if translated for).
Arguments
| translations | 
 | 
| container | 
 | 
| id | 
 | 
| idFor | 
 | 
Value
The label.
JavaScript function: Returns a Positioned Element just containing one element.
Description
This element does not gain scrollbars if it is too large for this returned container, and it will try to take up its full size in the layout.
Arguments
| element | 
 | 
| verticalPadding | 
 | 
| horizontalPadding | 
 | 
Value
The wrapper.
JavaScript function: Returns a Container Element for displaying controls vertically.
Description
Returns an element with a makeSubElement method that
adds elements vertically. This differs from toolkit.stack in that the
labels will be aligned on the left and the controls will be aligned on the
right. It would make a nice options page, for example.
Value
A Container Element for displaying elements vertically.
JavaScript function: A panel with an overlay.
Description
Returns a Positioned Element consisting of two elements
placed in the same position. To be able to see the lower (main)
element you must either call hide() on the overlay,
or make it transparent with CSS.
Arguments
| overlay | 
 | 
| main | 
 | 
Value
The element containing both elements.
JavaScript function: Returns a Positioned Element for displaying controls in tabbed pages.
Description
Only one page will be visible at a time. The returned element
has getData and setData methods that take or
return (respectively) an object with keys that are the IDs of the
pages.
Arguments
| pageElements | 
 | 
| labelTranslations | 
 | 
| tabIdPrefix | 
 | 
Value
An element that has the
tabs and the tabs that switch between them. The active tab has
the "active" class. It has the following extra methods:
setData(data): data is a dictionary with keys matching the
pageIds. The values are passed to the setData() functions
of the corresponding elements. Pages without any data (and their
corresponding radio buttons) are summarily disabled. Pages with
data are enabled. reposition(): sets each page to the same
dimensions as the container and calls each page's
reposition() method (if it exists).
JavaScript function: Returns a checkbox input Toolkit Control.
Description
A control for a boolean value rendered as a checkbox.
Arguments
| id | 
 | 
| container | 
 | 
| translations | 
 | 
| initial | 
 | 
| callback | 
 | 
Value
Checkbox input control.
JavaScript function: Returns a colour input Toolkit Control.
Description
It is a standard HTML input control with type color. The value
returned is a six-hex-digit string prefixed with a #.
Arguments
| id | 
 | 
| container | 
 | 
| translations | 
 | 
| initial | 
 | 
| callback | 
 | 
Value
Text input control.
JavaScript function: Returns a floating point input Toolkit Control.
Description
Values outside the permitted range will gain the "invalid" class, but there is no other effect.
Arguments
| id | 
 | 
| container | 
 | 
| translations | 
 | 
| initial | 
 | 
| callback | 
 | 
| min | 
 | 
| max | 
 | 
Value
Text input control.
JavaScript function: Returns an integer input Toolkit Control.
Description
Values outside the permitted range will gain the "invalid" class, but there is no other effect.
Arguments
| id | 
 | 
| container | 
 | 
| translations | 
 | 
| initial | 
 | 
| callback | 
 | 
| min | 
 | 
| max | 
 | 
Value
Text input control.
JavaScript function: Returns a custom selection box Toolkit Control.
Description
This is different to a normal selection box because it allows tooltips on the items within the list.
Arguments
| id | 
 | 
| container | 
 | 
| labelTranslations | 
 | 
| values | 
 | 
| valueTranslations | 
 | 
| initial | 
 | 
| callback | 
 | 
Value
The selection box.
JavaScript function: Returns a text input Toolkit Control.
Description
Any text is permitted unless a validate function is supplied.
Arguments
| id | 
 | 
| container | 
 | 
| translations | 
 | 
| initial | 
 | 
| callback | 
 | 
| validate | 
 | 
Value
Text input control.
JavaScript function: A static text Toolkit Control in a preformatted style.
Description
This element is like a control in that it has a label and actual text content, but it is not interactive.
Arguments
| id | 
 | 
| container | 
 | 
| translations | 
 | 
Value
The static text element. The text content
can be set by calling its setData() function with any plain
text.
JavaScript function: Returns a Positioned Element progress bar.
Description
The progress is set by calling the setData() method.
Value
The progress bar element.
JavaScript function: A panel with a side bar.
Description
Returns a Positioned Element consisting of a right side bar and a body.
Arguments
| bar | 
 | 
| main | 
 | 
Value
The Toolkit Positioned Element containing the side bar and body.
JavaScript function: Returns a Positioned Element just containing one element.
Description
This element gains scrollbars if it is too large for this returned container.
Arguments
| element | 
 | 
| verticalPadding | 
 | 
| horizontalPadding | 
 | 
Value
The wrapper.
JavaScript function: Replaces the <main> tag in the document with this element.
Description
The element will have its resize event wired up. If el
is a Toolkit Positioned Element, it will be resized correctly when the
window is resized.
Arguments
| el | 
 | 
JavaScript function: Returns a Container Element for displaying controls vertically.
Description
Returns a Container Element with a
makeSubElement method that adds elements vertically,
with the labels above the controls they correspond to.
Arguments
| elements | 
 | 
Value
A Container Element for displaying elements vertically.
JavaScript function: A static text Toolkit Control.
Description
This element is like a control in that it has a label and actual text content, but it is not interactive.
Arguments
| id | 
 | 
| container | 
 | 
| translations | 
 | 
Value
The static text element. The text
content can be set by calling its setData() function. This text
can include HTML entities, so you might want to replace &
with & and < with < if it is plain
text.
JavaScript function: Left/right panels with a draggable divider.
Description
Returns a Positioned Element with a draggable vertical divider bordering two other Positioned Elements.
Arguments
| container | 
 | 
| left | 
 | 
| right | 
 | 
Value
The element created. If a container was provided it is this argument.
JavaScript function: Transforms a function that should not be called too often into a function that can be called as often as you like.
Description
The returned function can be called as often as you like with
whatever arguments you like. If it is called again within
ticks ticks (a tick is 100ms), this call is ignored. If
it is not called again within this time, the arguments are passed
on to the delegate function. In other words, in a string of calls
less than ticks x 100ms apart from each other, only
the last of these calls actually happens.
Arguments
| ticks | 
 | 
| f | 
 | 
Value
Function that can be called often, resulting in fewer
calls to the delegate function f.
JavaScript function: Adds a fake callback argument to a nullary function.
Description
Perhaps you have a nullary function that you want called
when the user clicks a button, but the toolkit.button
function wants a unary function that has a completion callback
so that the button knows when to pop back up again. In this
situation you might wrap your function with a call to
toolkit.withTimeout.
Arguments
| fn | 
 | 
Value
Unary function (taking one function as
an argument) that simply calls fn immediately then
calls its argument again after 200ms.