diff --git a/examples/demo.css b/examples/demo.css
index dc3ab6ca..ff7ddcc3 100644
--- a/examples/demo.css
+++ b/examples/demo.css
@@ -45,7 +45,7 @@ h1 {
}
#dropzone input {
- max-width: 100%;
+ max-width: 100%;
}
.step {
@@ -56,6 +56,19 @@ h1 {
margin-bottom: 20px;
}
+.load {
+ display: none;
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 200px;
+ height: 200px;
+ background: url(images/load.gif) center no-repeat;
+}
+.load.loading {
+ display: block;
+}
+
.details {
border-top: 3px solid #444;
padding-left: 6px;
diff --git a/examples/demo.js b/examples/demo.js
index 7a41a05b..da024a58 100644
--- a/examples/demo.js
+++ b/examples/demo.js
@@ -39,6 +39,7 @@ window.onload = function() {
'+(step.description || '')+'
\
\
\
+
\
![]()
\
\
\
@@ -60,12 +61,28 @@ window.onload = function() {
var outputs = sequencer.modulesInfo(step.name).outputs;
var io = Object.assign(inputs, outputs);
for (var i in io) {
+ var isInput = inputs.hasOwnProperty(i);
+ var ioUI = "";
+ var inputDesc = (isInput)?inputs[i]:{};
+ if (!isInput) {
+ ioUI += "";
+ }
+ else if (inputDesc.type.toLowerCase() == "select") {
+ ioUI += "";
+ }
+ else {
+ ioUI = "";
+ }
var div = document.createElement('div');
div.className = "row";
div.setAttribute('name', i);
div.innerHTML = "\
\
- \
+ "+ioUI+"\
";
step.ui.querySelector('div.details').appendChild(div);
}
@@ -73,7 +90,7 @@ window.onload = function() {
// on clicking Save in the details pane of the step
$(step.ui.querySelector('div.details .btn-save')).click(function saveOptions() {
- $(step.ui.querySelector('div.details')).find('input').each(function(i, input) {
+ $(step.ui.querySelector('div.details')).find('input,select').each(function(i, input) {
step.options[$(input).attr('name')] = input.value;
});
sequencer.run();
@@ -89,13 +106,21 @@ window.onload = function() {
steps.appendChild(step.ui);
},
+ onDraw: function(step) {
+ step.ui.querySelector('.load').className = "load loading";
+ },
+
onComplete: function(step) {
+ step.ui.querySelector('.load').className = "load";
+
step.imgElement.src = step.output;
if(sequencer.modulesInfo().hasOwnProperty(step.name)) {
var inputs = sequencer.modulesInfo(step.name).inputs;
var outputs = sequencer.modulesInfo(step.name).outputs;
for (var i in inputs) {
- if (step.options[i] !== undefined) step.ui.querySelector('div[name="'+i+'"] input')
+ if (step.options[i] !== undefined && inputs[i].type.toLowerCase()!="select") step.ui.querySelector('div[name="'+i+'"] input')
+ .value = step.options[i];
+ if (step.options[i] !== undefined) step.ui.querySelector('div[name="'+i+'"] select')
.value = step.options[i];
}
for (var i in outputs) {
@@ -131,14 +156,25 @@ window.onload = function() {
$('#options').html('');
var m = $('#addStep select').val();
for(var input in modulesInfo[m].inputs) {
+ var inputUI = "";
+ var inputDesc = modulesInfo[m].inputs[input];
+ if (inputDesc.type.toLowerCase() == "select") {
+ inputUI += "";
+ }
+ else {
+ inputUI = "";
+ }
$('#options').append(
'\
\
'+input+':\
\
\
- \
+ '+inputUI+'\
\
'
);
@@ -148,7 +184,7 @@ window.onload = function() {
function addStepUI() {
var options = {};
- var inputs = $('#options input');
+ var inputs = $('#options input, #options select');
$.each(inputs, function() {
options[this.name] = $(this).val();
});
diff --git a/examples/images/load.gif b/examples/images/load.gif
new file mode 100644
index 00000000..f3ea12d5
Binary files /dev/null and b/examples/images/load.gif differ
diff --git a/examples/lib/imageSelection.js b/examples/lib/imageSelection.js
index 7d09bdd5..b4cb149c 100644
--- a/examples/lib/imageSelection.js
+++ b/examples/lib/imageSelection.js
@@ -6,6 +6,8 @@ function setupFileHandling(_sequencer, dropzoneId, fileInputId) {
fileInputId = fileInputId || "fileInput";
var fileInput = $('#' + fileInputId);
+ var reader = new FileReader();
+
function handleFile(e) {
e.preventDefault();
diff --git a/package.json b/package.json
index cd56a1b4..2f531a09 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "image-sequencer",
- "version": "0.1.1",
+ "version": "1.0.0",
"description": "A modular JavaScript image manipulation library modeled on a storyboard.",
"main": "src/ImageSequencer.js",
"scripts": {