mirror of
https://github.com/publiclab/image-sequencer.git
synced 2025-12-11 19:00:00 +01:00
* implement importNewModule Signed-off-by: tech4GT <varun.gupta1798@gmail.com> * make apis available on input object Signed-off-by: tech4GT <varun.gupta1798@gmail.com> * update docs Signed-off-by: tech4GT <varun.gupta1798@gmail.com> * minor updates and more docs Signed-off-by: tech4GT <varun.gupta1798@gmail.com> * major refactor simplify module loading Signed-off-by: tech4GT <varun.gupta1798@gmail.com> * final updates and invert installed from npm Signed-off-by: tech4GT <varun.gupta1798@gmail.com> * update contributing.md Signed-off-by: tech4GT <varun.gupta1798@gmail.com> * fixes Signed-off-by: tech4GT <varun.gupta1798@gmail.com> * update documentation Signed-off-by: tech4GT <varun.gupta1798@gmail.com>
94 lines
2.9 KiB
JavaScript
94 lines
2.9 KiB
JavaScript
const getStepUtils = require('./util/getStep.js');
|
|
|
|
function Run(ref, json_q, callback, ind, progressObj) {
|
|
if (!progressObj) progressObj = { stop: function() { } };
|
|
|
|
function drawStep(drawarray, pos) {
|
|
if (pos == drawarray.length && drawarray[pos - 1] !== undefined) {
|
|
var image = drawarray[pos - 1].image;
|
|
if (ref.objTypeOf(callback) == "Function" && ref.images[image].steps.slice(-1)[0].output) {
|
|
var steps = ref.images[image].steps;
|
|
var out = steps[steps.length - 1].output.src;
|
|
callback(out);
|
|
return true;
|
|
}
|
|
}
|
|
|
|
// so we don't run on the loadImage module:
|
|
if (drawarray[pos] !== undefined) {
|
|
var image = drawarray[pos].image;
|
|
var i = drawarray[pos].i;
|
|
var input = ref.images[image].steps[i - 1].output;
|
|
|
|
ref.images[image].steps[i].getStep = function getStep(offset) {
|
|
if (i + offset >= ref.images[image].steps.length) return { options: { name: undefined } };
|
|
else return ref.images[image].steps.slice(i + offset)[0];
|
|
};
|
|
ref.images[image].steps[i].getIndex = function getIndex() {
|
|
return i;
|
|
}
|
|
|
|
for (var util in getStepUtils) {
|
|
if (getStepUtils.hasOwnProperty(util)) {
|
|
ref.images[image].steps[i][util] = getStepUtils[util];
|
|
}
|
|
}
|
|
|
|
// Tell UI that a step is being drawn.
|
|
ref.images[image].steps[i].UI.onDraw(ref.images[image].steps[i].options.step);
|
|
|
|
// provides a set of standard tools for each step
|
|
var inputForNextStep = require('./RunToolkit')(ref.copy(input));
|
|
|
|
ref.images[image].steps[i].draw(
|
|
inputForNextStep,
|
|
function onEachStep() {
|
|
|
|
// This output is accessible by UI
|
|
ref.images[image].steps[i].options.step.output = ref.images[image].steps[i].output.src;
|
|
|
|
// Tell UI that step has been drawn.
|
|
ref.images[image].steps[i].UI.onComplete(ref.images[image].steps[i].options.step);
|
|
|
|
drawStep(drawarray, ++pos);
|
|
},
|
|
progressObj
|
|
);
|
|
}
|
|
}
|
|
|
|
function drawSteps(json_q) {
|
|
var drawarray = [];
|
|
for (var image in json_q) {
|
|
var no_steps = ref.images[image].steps.length;
|
|
var init = json_q[image];
|
|
for (var i = 0; i < no_steps - init; i++) {
|
|
drawarray.push({ image: image, i: init + i });
|
|
}
|
|
}
|
|
drawStep(drawarray, ind);
|
|
}
|
|
|
|
function filter(json_q) {
|
|
for (var image in json_q) {
|
|
if (json_q[image] == 0 && ref.images[image].steps.length == 1)
|
|
delete json_q[image];
|
|
else if (json_q[image] == 0) json_q[image]++;
|
|
}
|
|
for (var image in json_q) {
|
|
var prevstep = ref.images[image].steps[json_q[image] - 1];
|
|
while (
|
|
typeof prevstep == "undefined" ||
|
|
typeof prevstep.output == "undefined"
|
|
) {
|
|
prevstep = ref.images[image].steps[--json_q[image] - 1];
|
|
}
|
|
}
|
|
return json_q;
|
|
}
|
|
|
|
var json_q = filter(json_q);
|
|
return drawSteps(json_q);
|
|
}
|
|
module.exports = Run;
|