124 lines
3.8 KiB
JavaScript
124 lines
3.8 KiB
JavaScript
|
/*
|
||
|
* 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);
|
||
|
*
|
||
|
*/
|
||
|
function ItemApi() {
|
||
|
this.implementation = null;
|
||
|
this.pendingCalls = new Array();
|
||
|
}
|
||
|
|
||
|
ItemApi.prototype.setImplementation = function(implementation) {
|
||
|
this.implementation = implementation;
|
||
|
for ( var i = 0; i < this.pendingCalls.length; i++) {
|
||
|
this.pendingCalls[i](implementation);
|
||
|
}
|
||
|
;
|
||
|
this.pendingCalls = new Array();
|
||
|
};
|
||
|
|
||
|
ItemApi.prototype.__delegate = function(call) {
|
||
|
if (this.implementation != null) {
|
||
|
return call(this.implementation);
|
||
|
} else {
|
||
|
this.pendingCalls.push(function(implementation) {
|
||
|
return call(implementation);
|
||
|
});
|
||
|
}
|
||
|
};
|
||
|
|
||
|
// interface to implement
|
||
|
|
||
|
ItemApi.prototype.saveResponses = function(valueArray) {
|
||
|
this.__delegate((function(valueArray) {
|
||
|
return function(implementation) {
|
||
|
implementation.saveResponses(valueArray);
|
||
|
}
|
||
|
})(valueArray));
|
||
|
};
|
||
|
|
||
|
ItemApi.prototype.getUserPropertyValues = function(property, callback) {
|
||
|
this.__delegate((function(property, callback) {
|
||
|
return function(property, implementation) {
|
||
|
implementation.getUserPropertyValues(property, callback);
|
||
|
}
|
||
|
})(callback));
|
||
|
};
|
||
|
|
||
|
// Scoring
|
||
|
ItemApi.prototype.saveScores = function(valueArray) {
|
||
|
this.__delegate((function(valueArray) {
|
||
|
return function(implementation) {
|
||
|
implementation.saveScores(valueArray);
|
||
|
}
|
||
|
})(valueArray));
|
||
|
};
|
||
|
|
||
|
ItemApi.prototype.traceEvents = function(eventArray) {
|
||
|
this.__delegate((function(eventArray) {
|
||
|
return function(implementation) {
|
||
|
implementation.traceEvents(eventArray);
|
||
|
}
|
||
|
})(eventArray));
|
||
|
};
|
||
|
|
||
|
// Flow
|
||
|
ItemApi.prototype.beforeFinish = function(callback) {
|
||
|
this.__delegate((function(callback) {
|
||
|
return function(implementation) {
|
||
|
implementation.beforeFinish(callback);
|
||
|
}
|
||
|
})(callback));
|
||
|
};
|
||
|
|
||
|
ItemApi.prototype.finish = function() {
|
||
|
this.__delegate(function(implementation) {
|
||
|
implementation.finish();
|
||
|
});
|
||
|
};
|
||
|
|
||
|
ItemApi.prototype.onKill = function(callback) {
|
||
|
this.__delegate(function(implementation) {
|
||
|
implementation.onKill(callback);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
// Runtime variables, will not be submited to result service
|
||
|
ItemApi.prototype.setVariable = function(identifier, value) {
|
||
|
this.__delegate((function(identifier, value) {
|
||
|
return function(implementation) {
|
||
|
implementation.setVariable(identifier, value);
|
||
|
}
|
||
|
})(identifier, value));
|
||
|
};
|
||
|
|
||
|
ItemApi.prototype.getVariable = function(identifier, callback) {
|
||
|
this.__delegate((function(identifier, callback) {
|
||
|
return function(implementation) {
|
||
|
implementation.getVariable(identifier, callback);
|
||
|
}
|
||
|
})(identifier, callback));
|
||
|
};
|
||
|
|
||
|
// Submission of data.
|
||
|
ItemApi.prototype.submit = function(callback) {
|
||
|
this.__delegate((function(identifier, callback) {
|
||
|
return function(implementation) {
|
||
|
implementation.submit(callback);
|
||
|
}
|
||
|
})(callback));
|
||
|
};
|