vis.js is a dynamic, browser-based visualization library
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

85 lines
2.5 KiB

'use strict';
if (typeof window === 'undefined') {
var eve = require('evejs');
}
function GenericAgent(id, type) {
// execute super constructor
eve.Agent.call(this, id);
this.id = id;
this.rpc = this.loadModule('rpc', this.rpcFunctions);
this.connect(eve.system.transports.getAll());
this.type = type;
this.jobs = new JobManager(this);
this.timelineDataset = timelineItems;
timelineGroups.add({id:id, content:type + ": " + id, className: 'timelineGroup ' + type});
this.availableSubgroups = [0,1,2,3,4,5,6,7,8,9,10];
this.freeSubgroups = {};
for (var i = 0; i < this.availableSubgroups.length; i++) {
this.freeSubgroups[this.availableSubgroups[i]] = true;
}
this.usedSubgroups = {};
}
// extend the eve.Agent prototype
GenericAgent.prototype = Object.create(eve.Agent.prototype);
GenericAgent.prototype.constructor = GenericAgent;
// define RPC functions, preferably in a separated object to clearly distinct
// exposed functions from local functions.
GenericAgent.prototype.rpcFunctions = {};
GenericAgent.prototype.allocateSubgroup = function(type) {
for (var i = 0; i < this.availableSubgroups.length; i++) {
if (this.freeSubgroups[this.availableSubgroups[i]] == true) {
this.usedSubgroups[type] = i;
this.freeSubgroups[this.availableSubgroups[i]] = false;
break;
}
}
};
GenericAgent.prototype.freeSubgroup = function(type) {
this.freeSubgroups[this.usedSubgroups[type]] = true;
delete this.usedSubgroups[type];
};
GenericAgent.prototype.newAssignment = function(id, type, time, prerequisites) {
this.allocateSubgroup(type);
this.jobs.add(id, type, time, prerequisites);
};
/**
* @param id
* @param time
* @param type
*/
GenericAgent.prototype.finishAssignment = function(id, type, time) {
this.jobs.finish(id, type, time);
};
GenericAgent.prototype.updateAssignment = function(id, type, time, operation) {
this.jobs.update(id, type, time, operation);
};
GenericAgent.prototype.rpcFunctions.newEvent = function(params) {
// handle events
if (params.operation == 'start') {
this.newAssignment(params.jobId, params.assignment, params.time, params.prerequisites)
}
else if (params.operation == 'finish') {
this.finishAssignment(params.jobId, params.assignment, params.time);
}
else if (params.operation == 'pause' || params.operation == 'resume') {
this.updateAssignment(params.jobId,params.assignment,params.time, params.operation);
}
};
if (typeof window === 'undefined') {
module.exports = GenericAgent;
}