mirror of
https://github.com/publiclab/image-sequencer.git
synced 2025-12-12 11:20:02 +01:00
Updates to Demo (#143)
* 1.0.0 * Added 'select' input * Added loader * Fix File Reader
This commit is contained in:
committed by
Jeffrey Warren
parent
14c59be19c
commit
135c142ba8
@@ -45,7 +45,7 @@ h1 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#dropzone input {
|
#dropzone input {
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.step {
|
.step {
|
||||||
@@ -56,6 +56,19 @@ h1 {
|
|||||||
margin-bottom: 20px;
|
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 {
|
.details {
|
||||||
border-top: 3px solid #444;
|
border-top: 3px solid #444;
|
||||||
padding-left: 6px;
|
padding-left: 6px;
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ window.onload = function() {
|
|||||||
<p><i>'+(step.description || '')+'</i></p>\
|
<p><i>'+(step.description || '')+'</i></p>\
|
||||||
</div>\
|
</div>\
|
||||||
<div class="col-md-8">\
|
<div class="col-md-8">\
|
||||||
|
<div class="load"></div>\
|
||||||
<img alt="" class="img-thumbnail"/>\
|
<img alt="" class="img-thumbnail"/>\
|
||||||
</div>\
|
</div>\
|
||||||
</div>\
|
</div>\
|
||||||
@@ -60,12 +61,28 @@ window.onload = function() {
|
|||||||
var outputs = sequencer.modulesInfo(step.name).outputs;
|
var outputs = sequencer.modulesInfo(step.name).outputs;
|
||||||
var io = Object.assign(inputs, outputs);
|
var io = Object.assign(inputs, outputs);
|
||||||
for (var i in io) {
|
for (var i in io) {
|
||||||
|
var isInput = inputs.hasOwnProperty(i);
|
||||||
|
var ioUI = "";
|
||||||
|
var inputDesc = (isInput)?inputs[i]:{};
|
||||||
|
if (!isInput) {
|
||||||
|
ioUI += "<span class=\"output\"></span>";
|
||||||
|
}
|
||||||
|
else if (inputDesc.type.toLowerCase() == "select") {
|
||||||
|
ioUI += "<select name=\""+i+"\">";
|
||||||
|
for (var option in inputDesc.values) {
|
||||||
|
ioUI += "<option>"+inputDesc.values[option]+"</option>";
|
||||||
|
}
|
||||||
|
ioUI += "</select>";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
ioUI = "<input type=\""+inputDesc.type+"\" name=\""+i+"\">";
|
||||||
|
}
|
||||||
var div = document.createElement('div');
|
var div = document.createElement('div');
|
||||||
div.className = "row";
|
div.className = "row";
|
||||||
div.setAttribute('name', i);
|
div.setAttribute('name', i);
|
||||||
div.innerHTML = "<div class='det'>\
|
div.innerHTML = "<div class='det'>\
|
||||||
<label for='" + i + "'>" + i + "</label>\
|
<label for='" + i + "'>" + i + "</label>\
|
||||||
<input name=" + i + " class='form-control' style='width:50%' type='text' />\
|
"+ioUI+"\
|
||||||
</div>";
|
</div>";
|
||||||
step.ui.querySelector('div.details').appendChild(div);
|
step.ui.querySelector('div.details').appendChild(div);
|
||||||
}
|
}
|
||||||
@@ -73,7 +90,7 @@ window.onload = function() {
|
|||||||
|
|
||||||
// on clicking Save in the details pane of the step
|
// 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 .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;
|
step.options[$(input).attr('name')] = input.value;
|
||||||
});
|
});
|
||||||
sequencer.run();
|
sequencer.run();
|
||||||
@@ -89,13 +106,21 @@ window.onload = function() {
|
|||||||
steps.appendChild(step.ui);
|
steps.appendChild(step.ui);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
onDraw: function(step) {
|
||||||
|
step.ui.querySelector('.load').className = "load loading";
|
||||||
|
},
|
||||||
|
|
||||||
onComplete: function(step) {
|
onComplete: function(step) {
|
||||||
|
step.ui.querySelector('.load').className = "load";
|
||||||
|
|
||||||
step.imgElement.src = step.output;
|
step.imgElement.src = step.output;
|
||||||
if(sequencer.modulesInfo().hasOwnProperty(step.name)) {
|
if(sequencer.modulesInfo().hasOwnProperty(step.name)) {
|
||||||
var inputs = sequencer.modulesInfo(step.name).inputs;
|
var inputs = sequencer.modulesInfo(step.name).inputs;
|
||||||
var outputs = sequencer.modulesInfo(step.name).outputs;
|
var outputs = sequencer.modulesInfo(step.name).outputs;
|
||||||
for (var i in inputs) {
|
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];
|
.value = step.options[i];
|
||||||
}
|
}
|
||||||
for (var i in outputs) {
|
for (var i in outputs) {
|
||||||
@@ -131,14 +156,25 @@ window.onload = function() {
|
|||||||
$('#options').html('');
|
$('#options').html('');
|
||||||
var m = $('#addStep select').val();
|
var m = $('#addStep select').val();
|
||||||
for(var input in modulesInfo[m].inputs) {
|
for(var input in modulesInfo[m].inputs) {
|
||||||
|
var inputUI = "";
|
||||||
|
var inputDesc = modulesInfo[m].inputs[input];
|
||||||
|
if (inputDesc.type.toLowerCase() == "select") {
|
||||||
|
inputUI += "<select name=\""+input+"\">";
|
||||||
|
for (var option in inputDesc.values) {
|
||||||
|
inputUI += "<option>"+inputDesc.values[option]+"</option>";
|
||||||
|
}
|
||||||
|
inputUI += "</select>";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
inputUI = "<input type=\""+inputDesc.type+"\" name=\""+input+"\">";
|
||||||
|
}
|
||||||
$('#options').append(
|
$('#options').append(
|
||||||
'<div class="row">\
|
'<div class="row">\
|
||||||
<div class="col-md-5 labels">\
|
<div class="col-md-5 labels">\
|
||||||
'+input+':\
|
'+input+':\
|
||||||
</div>\
|
</div>\
|
||||||
<div class="col-md-5">\
|
<div class="col-md-5">\
|
||||||
<input class="form-control" type="text" name="'+input+'" value="" placeholder="'+
|
'+inputUI+'\
|
||||||
modulesInfo[m].inputs[input].default+'"/>\
|
|
||||||
</div>\
|
</div>\
|
||||||
</div>'
|
</div>'
|
||||||
);
|
);
|
||||||
@@ -148,7 +184,7 @@ window.onload = function() {
|
|||||||
|
|
||||||
function addStepUI() {
|
function addStepUI() {
|
||||||
var options = {};
|
var options = {};
|
||||||
var inputs = $('#options input');
|
var inputs = $('#options input, #options select');
|
||||||
$.each(inputs, function() {
|
$.each(inputs, function() {
|
||||||
options[this.name] = $(this).val();
|
options[this.name] = $(this).val();
|
||||||
});
|
});
|
||||||
|
|||||||
BIN
examples/images/load.gif
Normal file
BIN
examples/images/load.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 83 KiB |
@@ -6,6 +6,8 @@ function setupFileHandling(_sequencer, dropzoneId, fileInputId) {
|
|||||||
fileInputId = fileInputId || "fileInput";
|
fileInputId = fileInputId || "fileInput";
|
||||||
var fileInput = $('#' + fileInputId);
|
var fileInput = $('#' + fileInputId);
|
||||||
|
|
||||||
|
var reader = new FileReader();
|
||||||
|
|
||||||
function handleFile(e) {
|
function handleFile(e) {
|
||||||
|
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "image-sequencer",
|
"name": "image-sequencer",
|
||||||
"version": "0.1.1",
|
"version": "1.0.0",
|
||||||
"description": "A modular JavaScript image manipulation library modeled on a storyboard.",
|
"description": "A modular JavaScript image manipulation library modeled on a storyboard.",
|
||||||
"main": "src/ImageSequencer.js",
|
"main": "src/ImageSequencer.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
Reference in New Issue
Block a user