/*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; under version 2
* of the License (non-upgradable).
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* Copyright (c) 2009-2012 (original work) Public Research Centre Henri Tudor (under the project TAO-SUSTAIN & TAO-DEV);
* 2009-2012 (update and modification) Public Research Centre Henri Tudor (under the project TAO-SUSTAIN & TAO-DEV);
*
*/
////////////////////
// Constants //
////////////////////
var RECOVERY_CONTEXT_PREFIX = 'rc_';
/*
*
*/
var _itemApi = new ItemApi();
/**
* Called once the API is setup
*/
function onItemApiReady() {
_itemApi.setImplementation(itemApi);
};
////////////////////
// TAO variables //
////////////////////
function getEndorsment(){
}
function setEndorsment(endorsment){
}
function getScore(){
}
function setRecoveryContext(identifier, value) {
_itemApi.setVariable(RECOVERY_CONTEXT_PREFIX + identifier, value);
}
function getRecoveryContext(identifier, callback) {
_itemApi.getVariable(RECOVERY_CONTEXT_PREFIX + identifier, callback);
}
/**
* Set the final score of the item
*
* @function
* @param {String|Number} score
*/
function setScore(score){
values = {SCORE : score};
_itemApi.saveScores(values);
}
function getScoreRange(){
}
function setScoreRange(max, min){
}
function getAnsweredValues(){
}
/**
* Set the values answered by the subject.
* If the item contains a free text field,
* you can record here the complete response.
*
* @function
* @param {Object} values
*/
function setAnsweredValues(encodedValues){
var values = JSON.parse(encodedValues);
_itemApi.saveResponses(values);
}
/**
* Get the data of the user currently doing the item (the subject)
*
* @function
* @returns {Object} all the data related to the subject
*/
function getSubject(){
}
/**
* Get the login of the subject
*
* @function
* @returns {String} the subject's login
*/
function getSubjectLogin(){
}
/**
* Get the name of the subject (firstname and lastname)
*
* @function
* @returns {Object} the subject's name
*/
function getSubjectName(){
}
/**
* Get the current item's informations
*
* @function
* @returns {Object} the item's data (uri, label)
*/
function getItem(){
return taoStack.getTaoVar(URI.ITEM);
}
/**
* Get the informations of the currently running test
*
* @function
* @returns {Object} the test's data (uri, label)
*/
function getTest(){
}
/**
* Get the informations of the current delivery
*
* @function
* @returns {Object} the delivery's data (uri, label)
*/
function getDelivery(){
}
//////////////////////
// User's variables //
//////////////////////
/**
* This function enables you to create and edit custom variables: the user's variables
* The variable is identified by a key you have chosen.
* This variable will be saved temporarly into the taoApi.
* When you call the push()
function, the user's variables are sent to the server.
* It's a way to record some data other than the results and the events.
*
* @function
* @param {String} key to identify of the variable
* @param {String|number|boolean} the value of the variable
*/
function setUserVar(key, value){
var arr = {};
arr[key] = value;
_itemApi.saveScores(arr);
}
/**
* Get a previously defined user's variable.
*
* @function
* @param {String} key the key of the variable you want to retrieve
* @returns {String|number|boolean}
*/
function getUserVar(key){
}
/////////////
// STATES //
/////////////
var STATE = {
'ITEM' : {
'PRE_FINISHED' : 'pre_item_finished',
'FINISHED' : 'item_finished',
'POST_FINISHED' : 'post_item_finished'
}
};
/**
* Add a callback that will be executed on finish state.
*
* @function
* @param {function} callback
*/
function onFinish(callback){
$(window).bind(STATE.ITEM.FINISHED, callback);
}
/**
* Add a callback that will be executed on finish but before the other callbacks
*
* @function
* @param {function} callback
*/
function beforeFinish(callback){
$(window).bind(STATE.ITEM.PRE_FINISHED, callback);
}
/**
* Add a callback that will be executed on finish but after the other callbacks
*
* @function
* @param {function} callback
*/
function afterFinish(callback){
$(window).bind(STATE.ITEM.POST_FINISHED, callback);
}
/**
* Register a callback to run the legacy triggers
*/
_itemApi.beforeFinish(function() {
$(window).trigger(STATE.ITEM.PRE_FINISHED);
$(window).trigger(STATE.ITEM.FINISHED);
$(window).trigger(STATE.ITEM.POST_FINISHED);
});
/**
* Define the item's state as finished.
* This state can have some consequences.
*
* @function
*/
function finish(){
_itemApi.finish();
}
//////////////////////////////
// INTERFACE COMMUNICATION //
//////////////////////////////
/**
* Get the communication token (this token is sent at each communication)
*
* @function
* @returns {String} the token
*/
function getToken(){
}
/**
* This fuction enables you to set up the data the item need.
* You can retrieve this data from either a remote or a manual source.
* If you don't need to change the default values, don't call this function.
*
* @function
*
* @param {Object} environment set to null if you want to keep all the default values
* @param {String} [environment.type = "async"] the datasource type (manual|sync|async)
* @param {String} [environment.url = "/taoDelivery/ResultDelivery/initialize"] the url of the server where the data are sent
* @param {Object} [environment.params] the additional parameters to send with the data
*
* @param {Object} settings set to null if you want to keep all the default values
* @param {String} [settings.format = "json"] the data format. Only json is supported in the current version
* @param {String} [settings.method = "post"] HTTP method to push the data (get|post)
*/
function initDataSource(environment, settings){
}
/**
* This function is a convenience method to add directly the datasource
* by writing the data in the source object (JSON) .
*
* @function
* @param {Object} source
*/
function initManualDataSource(source){
}
/**
* Initialize the push communication.
* If you don't need to change the default values, don't call this function.
*
* @function
*
* @param {Object} environment set to null if you want to keep all the default values
* @param {String} [environment.url = "/taoDelivery/ResultDelivery/save"] the url of the server where the data are sent
* @param {Object} [environment.params] the additional parameters to send with the data
*
* @param {Object} settings set to null if you want to keep all the default values
* @param {String} [settings.format = "json"] the data format. Only json is supported in the current version
* @param {String} [settings.method = "post"] HTTP method to push the data (get|post)
* @param {boolean}[settings.async = true] if the request is asynchronous
* @param {boolean}[settings.clearAfter= true] if the variables stacks are cleared once the push is done
*/
function initPush(environment, settings){
}
/**
* This method enables you to push the data to the server.
*
* @function
*/
function push(){
}
/*
* By default, the variables are pushed when the item is finished
*/
beforeFinish(push);
/////////////
// EVENTS //
/////////////
/**
* Log the an eventType bound on elementName by sending the data.
*
* @function
* @param {String} elementName an HTML tag name
* @param {String} eventType a JS User Events
* @param {mixed} data any data strucuture you want to trace
*/
function logEvent(elementName, eventType, data){
}
/**
* Log the a eventName by sending the data
*
* @function
* @param {String} eventName the name of the custom event
* @param {mixed} data
*/
function logCustomEvent(eventName, data){
}
function initEventServices(var1, var2) {
};