Difference between revisions of "Client JavaScript Extension API"
Line 59: | Line 59: | ||
E.g. | E.g. | ||
− | == | + | == Functions == |
=== varSet === | === varSet === | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
Line 77: | Line 77: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Sets a UI Attribute. See [[Project]], [[Page]] or [[UI Objects]] list of attributes. | Sets a UI Attribute. See [[Project]], [[Page]] or [[UI Objects]] list of attributes. | ||
− | |||
== User Object == | == User Object == |
Revision as of 11:08, 20 February 2014
A project can have specific javascript code that runs on the client-side and manages various events. This code has to be written in an index.js file located inside the project's directory.
Events
These are functions executed on specific events.
StartupEvent
function StartupEvent()
Executed when the interface is first loaded. It's a good place to set up the interface and set variables, for example.
userCommand
function userCommand(name, param)
Called by user clicks on user buttons: User, UserMini, UserMicro, UserRGB or UserImage objects.
If you want to navigate to a specific page when the button is pressed (it would be like pressing a Link object), return a string starting with "page:" followed by the page name; in this case, userCommand() will be called again when that popup or page is closed, with "/close" appended to param.
Parameters:
- name: string - the name field of the user object
- param: string - the param of the user object
Returns:
- null: proceed to send the request to server as it is
- "": assume the event was resolved. Don't send the request to the server
- "page:page name": navigate to the specified page
- "page:back": navigate to the previous page
- "page:forward": navigate to the next page
- "page:close": if the user button that generated the call has an open popup linked to it, close it
- "error": error. Don't send the request to the server
- an object, to specify new name and param values to be sent to the server
{name:"new name", param:"new param"}
userSubmit
function userSubmit(name, param)
Executed on every submit request (from Submit objects). E.g.
uiEvent
function uiEvent(id, attr, value)
Executed on every UISet received from the server. E.g.
Functions
varSet
varSet(name,value)
Sets the value of a variable. If the name begins with !, the variable will be stored in the browser's cache, so that it'll available even after reloading or closing and reopening the browser.
varGet
varGet(name)
Gets the value of a variable previously set with varSet.
uiSet
uiSet(id,attr,value)
Sets a UI Attribute. See Project, Page or UI Objects list of attributes.
User Object
One or more User objects can be declared to send requests from the client to the server.
var user = new User();
function StartupEvent() {
user.setOnLoadedEvent(onUserLoaded);
user.setOnErrorEvent(onUserError);
// send reques
user.send("myname","myparam");
varSet("myvar1","myvalue");
varSet("myvar2",5.3);
varSet("myvar3",[1,2,3]);
varSet("myvar4",{"a":1,"b":2});
}
Methods
.send(name, param)
sends a virtualremote (name and param will be url encoded)
.setMaxWaitingTime(msec)
set max waiting time in msec. If a request exceeds this time, it will be aborted (and fire an onError event, if set).
.setMaxRetries(n)
set max number of retry attempts. If a a request fails, it will keep on retrying until it succeeds or the max number of retries is reached. Before retrying it will fire an onRetry event, if set. If n is 0, and retryOnErrorDelay is not 0, it will keep on retrying forever (it will never fire an onError event, if set).
.setRetryOnErrorDelay(msec)
set msec of delay before retrying after a request has failed. If msec is 0 it won't retry (and will fire an onError event, if set).
.setOnLoadedEvent(f)
f is a function that is called when the request is successful. To get the response text or xml, use .getResponseText() and .getResponseXML()
.setOnErrorEvent(f)
f is a function called when the request fails. f is called with an error code parameter: function(errCode) error codes are enumerated as .ERROR_GENERAL, .ERROR_CONNECTION ...
.setOnRetryEvent(f)
f is a function that is called when the last request failed, before retrying. To get the response text or xml, use .getResponseText() and .getResponseXML()
.getResponseText()
get the last response text
.getResponseXML()
get the last response XML
.free()
free the memory and reset the behaviour. It will be reinitialized if any method is called.
Error codes
.ERROR_GENERAL : general error .ERROR_CONNECTION : no connection .ERROR_MAXWAITTIME : max waiting time exceeded .ERROR_LOGOUT : client is logged out .ERROR_LOCK : client is locked out .ERROR_NOACCESS : request returned noaccess
Examples
Example index.js: try one time, then fire onLoaded or onError
var user = new User();
function StartupEvent() {
user.setOnLoadedEvent(onUserLoaded);
user.setOnError(onUserError);
// send request
user.send("myname","myparam");
}
function onUserLoaded() {
webLog("loaded "+user.getResponseText());
// do something with the response
user.free(); // won't be using it again
}
function onUserError(errCode) {
webLog("error");
user.free(); // won't be using it again
}
Example index.js: retry forever, until it succeeds
var user = new User();
function StartupEvent() {
user.setOnLoadedEvent(onUserLoaded);
user.setRetryOnErrorDelay(1000); // wait one second before retrying on error
// send request
user.send("myname","myparam");
}
function onUserLoaded() {
webLog("loaded "+user.getResponseText());
// do something with the response
user.free(); // won't be using it again
}
Example index.js: retry 3 times, then fire onError
var user = new User();
function StartupEvent() {
// init user object
user.setRetryOnErrorDelay(100); // retry almost immediately on error
user.setMaxRetries(3); // retry 3 times, then fire error
user.setOnLoadedEvent(onUserLoaded);
user.setOnError(onUserError);
// send request
user.send("myname","myparam");
}
function onUserLoaded() {
webLog("loaded "+user.getResponseText());
// do something with the response
user.free(); // won't be using it again
}
function onUserError(errCode) {
webLog("error, already tried 3 times");
if (errCode == user.ERROR_MAXWAITTIME)
webLog("the last request failed because it exceeded the waiting time");
user.free(); // won't be using it again
}
function onUserLoaded() {
webLog("loaded "+user.getResponseText());
// do something with the response
user.free(); // won't be using it again
}
function onUserError(errCode) {
webLog("error");
user.free(); // won't be using it again
}
function userCommand(rem, id) {
var a = varGet("counterz!");
if (!a)
a = 1;
else
a++;
varSet("counterz!",a);
console.log(rem+" "+id+" "+a)
if (a == 3)
return "";
else if (a == 4)
return "page:ciao";
else
return null;
}