Difference between revisions of "Client JavaScript Extension API"

From HSYCO
Jump to navigation Jump to search
Line 1: Line 1:
 
[[Category:INCOMPLETE]]
 
[[Category:INCOMPLETE]]
 +
 +
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 to be located inside the project's directory.
 +
 +
== Events ==
 +
=== StartupEvent ===
 +
E.g.
 +
function StartupEvent() {
 +
  ...
 +
}
 +
 +
=== userCommand ===
 +
E.g.
 +
function userCommand(rem, id) {
 +
...
 +
}
 +
 +
=== userSubmit ===
 +
E.g.
 +
 +
=== uiEvent ===
 +
E.g.
 +
 +
== Methods ==
 +
=== varSet ===
 +
E.g.
 +
 +
=== varGet ===
 +
E.g.
 +
 +
=== uiSet ===
 +
E.g.
  
 
== User Object ==
 
== User Object ==
 +
One or more User objects can be declared to send requests from the client to the server.
 +
  
 
  var user = new User();  
 
  var user = new User();  
Line 11: Line 44:
 
  user.send("myname","myparam");
 
  user.send("myname","myparam");
 
   
 
   
//document.oncontextmenu = document.body.oncontextmenu = function() {return false;}
 
 
  varSet("myvar1","myvalue");
 
  varSet("myvar1","myvalue");
 
  varSet("myvar2",5.3);
 
  varSet("myvar2",5.3);
Line 63: Line 95:
 
.ERROR_NOACCESS : request returned noaccess
 
.ERROR_NOACCESS : request returned noaccess
  
==Examples==
+
===Examples===
===Example index.js: try one time, then fire onLoaded or onError===
+
====Example index.js: try one time, then fire onLoaded or onError====
  
var user = new User();
+
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
 +
}
  
function StartupEvent() {
+
====Example index.js: retry forever, until it succeeds====
user.setOnLoadedEvent(onUserLoaded);
 
user.setOnError(onUserError);
 
// send request
 
user.send("myname","myparam");
 
}
 
  
function onUserLoaded() {
+
var user = new User();  
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===
+
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
 +
}
  
var user = new User();
+
====Example index.js: retry 3 times, then fire onError====
  
function StartupEvent() {
+
var user = new User();  
user.setOnLoadedEvent(onUserLoaded);
+
user.setRetryOnErrorDelay(1000); // wait one second before retrying on error
+
function StartupEvent() {
// send request
+
  // init user object
user.send("myname","myparam");
+
  user.setRetryOnErrorDelay(100); // retry almost immediately on error
}
+
  user.setMaxRetries(3); // retry 3 times, then fire error
 
+
  user.setOnLoadedEvent(onUserLoaded);
function onUserLoaded() {
+
  user.setOnError(onUserError);
webLog("loaded "+user.getResponseText());
+
  // send request
// do something with the response
+
  user.send("myname","myparam");
user.free(); // won't be using it again
+
}
}
+
 
+
function onUserLoaded() {
 
+
  webLog("loaded "+user.getResponseText());
===Example index.js: retry 3 times, then fire onError===
+
  // do something with the response
 
+
  user.free(); // won't be using it again
var user = new User();
+
}
 
+
function onUserError(errCode) {
function StartupEvent() {
+
  webLog("error, already tried 3 times");
// init user object
+
  if (errCode == user.ERROR_MAXWAITTIME)
user.setRetryOnErrorDelay(100); // retry almost immediately on error
+
  webLog("the last request failed because it exceeded the waiting time");
user.setMaxRetries(3); // retry 3 times, then fire error
+
  user.free(); // won't be using it again
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
 
}
 
  
 
----
 
----

Revision as of 13:53, 21 January 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 to be located inside the project's directory.

Events

StartupEvent

E.g.

function StartupEvent() {
  ...
}

userCommand

E.g.

function userCommand(rem, id) {
...
}

userSubmit

E.g.

uiEvent

E.g.

Methods

varSet

E.g.

varGet

E.g.

uiSet

E.g.

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 request
	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; }