now has working task class
This commit is contained in:
@ -20,12 +20,20 @@ export let isTask = function(taskArg):boolean{
|
||||
};
|
||||
|
||||
|
||||
export let isTaskTouched = (task:Task, touchedTasksArray:Task[]):boolean => {
|
||||
return false;
|
||||
export let isTaskTouched = (taskArg:Task, touchedTasksArray:Task[]):boolean => {
|
||||
let result = false;
|
||||
for (let keyArg in touchedTasksArray){
|
||||
if(taskArg === touchedTasksArray[keyArg]){
|
||||
result = true;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
export let runTask = function(taskArg:Task,optionsArg?:{touchedTasksArray:Task[]}){
|
||||
export let runTask = function(taskArg:Task,optionsArg:{touchedTasksArray:Task[]} = {touchedTasksArray:[]}){
|
||||
let done = plugins.Q.defer();
|
||||
updateTaskStatus(taskArg,"running");
|
||||
done.promise.then(function(){updateTaskStatus(taskArg,"idle")})
|
||||
let localDeferred = plugins.Q.defer();
|
||||
let touchedTasksArray:Task[];
|
||||
if(optionsArg.touchedTasksArray){
|
||||
@ -39,7 +47,7 @@ export let runTask = function(taskArg:Task,optionsArg?:{touchedTasksArray:Task[]
|
||||
if(taskArg.preTask && !isTaskTouched(taskArg.preTask,touchedTasksArray)){
|
||||
return runTask(taskArg.preTask,{touchedTasksArray:touchedTasksArray})
|
||||
} else {
|
||||
let done2 = plugins.Q.resolve();
|
||||
let done2 = plugins.Q.defer();
|
||||
done2.resolve();
|
||||
return done2.promise;
|
||||
}
|
||||
@ -51,18 +59,39 @@ export let runTask = function(taskArg:Task,optionsArg?:{touchedTasksArray:Task[]
|
||||
if(taskArg.afterTask && !isTaskTouched(taskArg.afterTask,touchedTasksArray)){
|
||||
return runTask(taskArg.afterTask,{touchedTasksArray:touchedTasksArray})
|
||||
} else {
|
||||
let done2 = plugins.Q.resolve();
|
||||
let done2 = plugins.Q.defer();
|
||||
done2.resolve();
|
||||
return done2.promise;
|
||||
}
|
||||
})
|
||||
.then(() => {
|
||||
done.resolve();
|
||||
})
|
||||
|
||||
});
|
||||
localDeferred.resolve();
|
||||
return done.promise;
|
||||
};
|
||||
|
||||
export let runBufferedTask = (taskArg:Task) => {
|
||||
|
||||
}
|
||||
let recursiveBufferRunner = () => {
|
||||
if(taskArg.bufferCounter > 0){
|
||||
taskArg.bufferCounter--;
|
||||
runTask(taskArg)
|
||||
.then(recursiveBufferRunner);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export let updateTaskStatus = (taskArg,statusArg:string) => {
|
||||
switch (statusArg) {
|
||||
case "running":
|
||||
taskArg.running = true;
|
||||
taskArg.idle = false;
|
||||
break;
|
||||
case "idle":
|
||||
taskArg.running = false;
|
||||
taskArg.idle = true;
|
||||
break;
|
||||
default:
|
||||
throw new Error("status not recognised");
|
||||
}
|
||||
}
|
@ -5,8 +5,8 @@ import * as helpers from "./taskbuffer.classes.helpers"
|
||||
|
||||
export class Task {
|
||||
task:any;
|
||||
idle:boolean;
|
||||
running:boolean;
|
||||
idle:boolean;
|
||||
buffered:boolean;
|
||||
bufferCounter:number;
|
||||
bufferMax:number;
|
||||
@ -21,16 +21,23 @@ export class Task {
|
||||
this.task = optionsArg.taskFunction;
|
||||
this.preTask = options.preTask;
|
||||
this.afterTask = options.afterTask;
|
||||
this.idle = true;
|
||||
this.running = false;
|
||||
this.idle = true;
|
||||
this.buffered = options.buffered;
|
||||
this.bufferMax = options.bufferMax;
|
||||
}
|
||||
|
||||
trigger(){
|
||||
let done = plugins.Q.defer();
|
||||
if(this.buffered) {this.triggerBuffered()}
|
||||
else{this.triggerUnBuffered()};
|
||||
if(this.buffered) {
|
||||
this.triggerBuffered()
|
||||
.then(done.resolve);
|
||||
}
|
||||
else {
|
||||
this.triggerUnBuffered()
|
||||
.then(done.resolve);
|
||||
};
|
||||
return done.promise;
|
||||
};
|
||||
triggerUnBuffered(){
|
||||
return helpers.runTask(this);
|
||||
@ -51,7 +58,7 @@ export class Task {
|
||||
if (stateArg == "locked"){
|
||||
this._state = "locked";
|
||||
} else {
|
||||
plugins.beautylog.error("state type" );
|
||||
plugins.beautylog.error("state type " + stateArg.blue + " could not be set");
|
||||
}
|
||||
}
|
||||
}
|
@ -1,7 +1,8 @@
|
||||
{
|
||||
"ambientDependencies": {
|
||||
"node": "github:DefinitelyTyped/DefinitelyTyped/node/node.d.ts",
|
||||
"colors": "github:DefinitelyTyped/DefinitelyTyped/colors/colors.d.ts",
|
||||
"mocha": "github:Bartvds/tsd-deftools/typings/DefinitelyTyped/mocha/mocha.d.ts",
|
||||
"colors": "github:DefinitelyTyped/DefinitelyTyped/colors/colors.d.ts"
|
||||
"node": "github:DefinitelyTyped/DefinitelyTyped/node/node.d.ts",
|
||||
"should": "registry:dt/should#8.1.1+20160316155526"
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user