taskbuffer/ts/taskbuffer.classes.taskchain.ts

60 lines
2.2 KiB
TypeScript
Raw Normal View History

import * as plugins from "./taskbuffer.plugins";
import {Task} from "./taskbuffer.classes.task";
import helpers = require("./taskbuffer.classes.helpers");
2016-05-05 17:21:01 +00:00
export class Taskchain extends Task {
taskArray:Task[];
2016-05-15 13:52:59 +00:00
private _oraObject:plugins.beautylog.Ora;
constructor(optionsArg:{
taskArray:Task[],
2016-05-15 01:16:50 +00:00
name?:string,
log?:boolean,
buffered?:boolean,
bufferMax?:number
}){
2016-08-01 11:17:15 +00:00
let options = plugins.lodash.merge(
2016-05-15 01:16:50 +00:00
{
2016-05-15 13:52:59 +00:00
name:"unnamed Taskchain",
2016-05-15 01:16:50 +00:00
log:false
},
optionsArg,
{
taskFunction: (x:any) => { // this is the function that gets executed when TaskChain is triggered
2016-05-15 01:16:50 +00:00
let done = plugins.Q.defer(); // this is the starting Deferred object
let taskCounter = 0; // counter for iterating async over the taskArray
let iterateTasks = (x) => {
2016-05-15 01:16:50 +00:00
if(typeof this.taskArray[taskCounter] != "undefined"){
2016-05-15 13:52:59 +00:00
this._oraObject.text(this.name + " running: Task" + this.taskArray[taskCounter].name);
this.taskArray[taskCounter].trigger(x)
.then((x)=>{
2016-08-01 11:17:15 +00:00
plugins.beautylog.ok(this.taskArray[taskCounter].name);
2016-05-15 01:16:50 +00:00
taskCounter++;
iterateTasks(x);
2016-05-15 01:16:50 +00:00
});
} else {
2016-05-15 13:52:59 +00:00
this._oraObject.endOk("Taskchain \"" + this.name + "\" completed successfully");
done.resolve(x);
2016-05-15 01:16:50 +00:00
}
};
iterateTasks(x);
2016-05-15 01:16:50 +00:00
return done.promise;
}
}
2016-05-15 01:16:50 +00:00
);
super(options);
this.taskArray = optionsArg.taskArray;
2016-05-15 01:16:50 +00:00
this._oraObject = new plugins.beautylog.Ora("Taskchain idle","blue");
2016-08-01 11:17:15 +00:00
if(optionsArg.log === true){
this._oraObject.start();
};
}
2016-05-05 17:21:01 +00:00
addTask(taskArg:Task){
this.taskArray.push(taskArg);
};
2016-05-05 17:21:01 +00:00
removeTask(taskArg:Task){
//TODO
};
shiftTask(){
};
};