FaC: Das alte Flag von Terminen, die in die Zeiterfassung übernommen worden sind, wird ebenfalls berücksichtigt.
57 lines
1.5 KiB
JavaScript
57 lines
1.5 KiB
JavaScript
//Element object
|
|
//Wrapper around browser methods
|
|
var __slice = Array.prototype.slice;
|
|
var _ = require("lodash")
|
|
, utils = require("./utils.js")
|
|
, niceArgs = utils.niceArgs
|
|
, niceResp = utils.niceResp
|
|
, elementCommands = require('./element-commands');
|
|
|
|
var Element = function(value, browser) {
|
|
this.value = value;
|
|
this.browser = browser;
|
|
|
|
if(!value){
|
|
throw new Error("no value passed to Element constructor");
|
|
}
|
|
|
|
if(!browser){
|
|
throw new Error("no browser passed to Element constructor");
|
|
}
|
|
};
|
|
|
|
Element.prototype.emit = function() {
|
|
this.browser.emit.apply(this.browser, __slice.call(arguments, 0));
|
|
};
|
|
|
|
Element.prototype.toString = function () {
|
|
return String(this.value);
|
|
};
|
|
|
|
Element.prototype.toJSON = function () {
|
|
return { ELEMENT: this.value };
|
|
};
|
|
|
|
_(elementCommands).each(function(fn, name) {
|
|
Element.prototype[name] = function() {
|
|
var _this = this;
|
|
var fargs = utils.varargs(arguments);
|
|
this.emit('command', "CALL" , "element." + name + niceArgs(fargs.all));
|
|
var cb = function(err) {
|
|
if(err) {
|
|
err.message = '[element.' + name + niceArgs(fargs.all) + "] " + err.message;
|
|
fargs.callback(err);
|
|
} else {
|
|
var cbArgs = __slice.call(arguments, 0);
|
|
_this.emit('command', "RESPONSE" , "element." + name + niceArgs(fargs.all),
|
|
niceResp(_.drop(cbArgs)));
|
|
fargs.callback.apply(null, cbArgs);
|
|
}
|
|
};
|
|
var args = fargs.all.concat([cb]);
|
|
return fn.apply(this, args);
|
|
};
|
|
});
|
|
|
|
module.exports = Element;
|