mirror of
https://github.com/publiclab/image-sequencer.git
synced 2025-12-11 19:00:00 +01:00
Shorten UI code with new $step method (#710)
* update dist Signed-off-by: tech4GT <varun.gupta1798@gmail.com> dist update Revert "dist update" This reverts commit 9ee2a987e8f978961656ae8f71f6e6702bbbd30d. * Merge remote-tracking branch 'upstream/main' into main * add dist * add new func * update itermediate * changes * fix gitignore * use scopeQuery * add mapHtmlTypes test * scopeQuery tests added * try something * change * fix stepui test * Remove double quotes * update new code * refactor to spec
This commit is contained in:
committed by
Jeffrey Warren
parent
0eb3f263f9
commit
257113a948
@@ -8,18 +8,22 @@
|
|||||||
// output values, step information.
|
// output values, step information.
|
||||||
// See documetation for more details.
|
// See documetation for more details.
|
||||||
|
|
||||||
var intermediateHtmlStepUi = require('./intermediateHtmlStepUi.js');
|
var intermediateHtmlStepUi = require('./intermediateHtmlStepUi.js'),
|
||||||
var urlHash = require('./urlHash.js');
|
urlHash = require('./urlHash.js'),
|
||||||
var _ = require('lodash');
|
_ = require('lodash'),
|
||||||
var mapHtmlTypes = require('./mapHtmltypes');
|
mapHtmlTypes = require('./mapHtmltypes'),
|
||||||
|
scopeQuery = require('./scopeQuery'),
|
||||||
|
$stepAll,
|
||||||
|
$step;
|
||||||
|
|
||||||
function DefaultHtmlStepUi(_sequencer, options) {
|
function DefaultHtmlStepUi(_sequencer, options) {
|
||||||
|
|
||||||
options = options || {};
|
options = options || {};
|
||||||
var stepsEl = options.stepsEl || document.querySelector('#steps');
|
var stepsEl = options.stepsEl || document.querySelector('#steps');
|
||||||
var selectStepSel = options.selectStepSel = options.selectStepSel || '#selectStep';
|
var selectStepSel = options.selectStepSel = options.selectStepSel || '#selectStep';
|
||||||
|
|
||||||
function onSetup(step, stepOptions) {
|
function onSetup(step, stepOptions) {
|
||||||
|
|
||||||
if (step.options && step.options.description)
|
if (step.options && step.options.description)
|
||||||
step.description = step.options.description;
|
step.description = step.options.description;
|
||||||
|
|
||||||
@@ -67,8 +71,12 @@ function DefaultHtmlStepUi(_sequencer, options) {
|
|||||||
var parser = new DOMParser();
|
var parser = new DOMParser();
|
||||||
step.ui = parser.parseFromString(step.ui, 'text/html');
|
step.ui = parser.parseFromString(step.ui, 'text/html');
|
||||||
step.ui = step.ui.querySelector('div.container-fluid');
|
step.ui = step.ui.querySelector('div.container-fluid');
|
||||||
step.linkElements = step.ui.querySelectorAll('a');
|
|
||||||
step.imgElement = step.ui.querySelector('a img.img-thumbnail');
|
$step = scopeQuery.scopeSelector(step.ui);
|
||||||
|
$stepAll = scopeQuery.scopeSelectorAll(step.ui);
|
||||||
|
|
||||||
|
step.linkElements = $stepAll('a');
|
||||||
|
step.imgElement = $step('a img.img-thumbnail')[0];
|
||||||
|
|
||||||
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;
|
||||||
@@ -144,12 +152,12 @@ function DefaultHtmlStepUi(_sequencer, options) {
|
|||||||
html +
|
html +
|
||||||
'\
|
'\
|
||||||
</div>';
|
</div>';
|
||||||
step.ui.querySelector('div.details').appendChild(div);
|
$step('div.details').append(div);
|
||||||
}
|
}
|
||||||
$(step.ui.querySelector('div.panel-footer')).append(
|
$step('div.panel-footer').append(
|
||||||
'<div class="cal collapse in"><button type="submit" class="btn btn-sm btn-default btn-save" disabled = "true" >Apply</button> <small style="padding-top:2px;">Press apply to see changes</small></div>'
|
'<div class="cal collapse in"><button type="submit" class="btn btn-sm btn-default btn-save" disabled = "true" >Apply</button> <small style="padding-top:2px;">Press apply to see changes</small></div>'
|
||||||
);
|
);
|
||||||
$(step.ui.querySelector('div.panel-footer')).prepend(
|
$step('div.panel-footer').prepend(
|
||||||
'<button class="pull-right btn btn-default btn-sm insert-step" >\
|
'<button class="pull-right btn btn-default btn-sm insert-step" >\
|
||||||
<span class="insert-text"><i class="fa fa-plus"></i> Insert Step</span><span class="no-insert-text" style="display:none">Close</span></button>\
|
<span class="insert-text"><i class="fa fa-plus"></i> Insert Step</span><span class="no-insert-text" style="display:none">Close</span></button>\
|
||||||
<button class="pull-right btn btn-default btn-sm download-btn" style="margin-right:2px" >\
|
<button class="pull-right btn btn-default btn-sm download-btn" style="margin-right:2px" >\
|
||||||
@@ -159,13 +167,13 @@ function DefaultHtmlStepUi(_sequencer, options) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (step.name != 'load-image') {
|
if (step.name != 'load-image') {
|
||||||
step.ui
|
$step('div.trash-container')
|
||||||
.querySelector('div.trash-container')
|
|
||||||
.prepend(
|
.prepend(
|
||||||
parser.parseFromString(tools, 'text/html').querySelector('div')
|
parser.parseFromString(tools, 'text/html').querySelector('div')
|
||||||
);
|
);
|
||||||
$(step.ui.querySelectorAll('.remove')).on('click', function() {notify('Step Removed', 'remove-notification');});
|
|
||||||
$(step.ui.querySelectorAll('.insert-step')).on('click', function() { util.insertStep(step.ID); });
|
$stepAll('.remove').on('click', function() {notify('Step Removed', 'remove-notification');});
|
||||||
|
$stepAll('.insert-step').on('click', function() { util.insertStep(step.ID); });
|
||||||
// Insert the step's UI in the right place
|
// Insert the step's UI in the right place
|
||||||
if (stepOptions.index == _sequencer.steps.length) {
|
if (stepOptions.index == _sequencer.steps.length) {
|
||||||
stepsEl.appendChild(step.ui);
|
stepsEl.appendChild(step.ui);
|
||||||
@@ -179,19 +187,19 @@ function DefaultHtmlStepUi(_sequencer, options) {
|
|||||||
else {
|
else {
|
||||||
$('#load-image').append(step.ui);
|
$('#load-image').append(step.ui);
|
||||||
}
|
}
|
||||||
$(step.ui.querySelector('.toggle')).on('click', () => {
|
$step('.toggle').on('click', () => {
|
||||||
$(step.ui.querySelector('.toggleIcon')).toggleClass('rotated');
|
$step('.toggleIcon').toggleClass('rotated');
|
||||||
$(step.ui.querySelectorAll('.cal')).collapse('toggle');
|
$stepAll('.cal').collapse('toggle');
|
||||||
});
|
});
|
||||||
|
|
||||||
$(step.imgElement).on('mousemove', _.debounce(() => imageHover(step), 150));
|
$(step.imgElement).on('mousemove', _.debounce(() => imageHover(step), 150));
|
||||||
$(step.imgElement).on('click', (e) => {e.preventDefault(); });
|
$(step.imgElement).on('click', (e) => {e.preventDefault(); });
|
||||||
$(step.ui.querySelectorAll('#color-picker')).colorpicker();
|
$stepAll('#color-picker').colorpicker();
|
||||||
|
|
||||||
function saveOptions(e) {
|
function saveOptions(e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
if (optionsChanged){
|
if (optionsChanged){
|
||||||
$(step.ui.querySelector('div.details'))
|
$step('div.details')
|
||||||
.find('input,select')
|
.find('input,select')
|
||||||
.each(function(i, input) {
|
.each(function(i, input) {
|
||||||
$(input)
|
$(input)
|
||||||
@@ -204,7 +212,7 @@ function DefaultHtmlStepUi(_sequencer, options) {
|
|||||||
// modify the url hash
|
// modify the url hash
|
||||||
urlHash.setUrlHashParameter('steps', _sequencer.toString());
|
urlHash.setUrlHashParameter('steps', _sequencer.toString());
|
||||||
// disable the save button
|
// disable the save button
|
||||||
$(step.ui.querySelector('.btn-save')).prop('disabled', true);
|
$step('.btn-save').prop('disabled', true);
|
||||||
optionsChanged = false;
|
optionsChanged = false;
|
||||||
changedInputs = 0;
|
changedInputs = 0;
|
||||||
}
|
}
|
||||||
@@ -215,15 +223,15 @@ function DefaultHtmlStepUi(_sequencer, options) {
|
|||||||
changedInputs += hasChangedBefore ? inputChanged ? 0 : -1 : inputChanged ? 1 : 0;
|
changedInputs += hasChangedBefore ? inputChanged ? 0 : -1 : inputChanged ? 1 : 0;
|
||||||
optionsChanged = changedInputs > 0;
|
optionsChanged = changedInputs > 0;
|
||||||
|
|
||||||
$(step.ui.querySelector('.btn-save')).prop('disabled', !optionsChanged);
|
$step('.btn-save').prop('disabled', !optionsChanged);
|
||||||
return inputChanged;
|
return inputChanged;
|
||||||
}
|
}
|
||||||
|
|
||||||
var
|
var
|
||||||
changedInputs = 0,
|
changedInputs = 0,
|
||||||
optionsChanged = false;
|
optionsChanged = false;
|
||||||
$(step.ui.querySelector('.input-form')).on('submit', saveOptions);
|
$step('.input-form').on('submit', saveOptions);
|
||||||
$(step.ui.querySelectorAll('.target')).each(function(i, input) {
|
$stepAll('.target').each(function(i, input) {
|
||||||
$(input)
|
$(input)
|
||||||
.data('initValue', $(input).val())
|
.data('initValue', $(input).val())
|
||||||
.data('hasChangedBefore', false)
|
.data('hasChangedBefore', false)
|
||||||
@@ -248,19 +256,19 @@ function DefaultHtmlStepUi(_sequencer, options) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function onDraw(step) {
|
function onDraw() {
|
||||||
$(step.ui.querySelector('.load')).show();
|
$step('.load').show();
|
||||||
$(step.ui.querySelector('img')).hide();
|
$step('img').hide();
|
||||||
$(step.ui.querySelectorAll('.load-spin')).show();
|
$stepAll('.load-spin').show();
|
||||||
}
|
}
|
||||||
|
|
||||||
function onComplete(step) {
|
function onComplete(step) {
|
||||||
$(step.ui.querySelector('img')).show();
|
$step('img').show();
|
||||||
$(step.ui.querySelectorAll('.load-spin')).hide();
|
$stepAll('.load-spin').hide();
|
||||||
$(step.ui.querySelector('.load')).hide();
|
$step('.load').hide();
|
||||||
|
|
||||||
step.imgElement.src = (step.name == 'load-image') ? step.output.src : step.output;
|
step.imgElement.src = (step.name == 'load-image') ? step.output.src : step.output;
|
||||||
var imgthumbnail = step.ui.querySelector('.img-thumbnail');
|
var imgthumbnail = $step('.img-thumbnail');
|
||||||
for (let index = 0; index < step.linkElements.length; index++) {
|
for (let index = 0; index < step.linkElements.length; index++) {
|
||||||
if (step.linkElements[index].contains(imgthumbnail))
|
if (step.linkElements[index].contains(imgthumbnail))
|
||||||
step.linkElements[index].href = step.imgElement.src;
|
step.linkElements[index].href = step.imgElement.src;
|
||||||
@@ -271,7 +279,7 @@ function DefaultHtmlStepUi(_sequencer, options) {
|
|||||||
return output.split('/')[1].split(';')[0];
|
return output.split('/')[1].split(';')[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
$(step.ui.querySelectorAll('.download-btn')).on('click', () => {
|
$stepAll('.download-btn').on('click', () => {
|
||||||
|
|
||||||
for (let index = 0; index < step.linkElements.length; index++){
|
for (let index = 0; index < step.linkElements.length; index++){
|
||||||
|
|
||||||
@@ -294,18 +302,18 @@ function DefaultHtmlStepUi(_sequencer, options) {
|
|||||||
for (var i in inputs) {
|
for (var i in inputs) {
|
||||||
if (step.options[i] !== undefined) {
|
if (step.options[i] !== undefined) {
|
||||||
if (inputs[i].type.toLowerCase() === 'input')
|
if (inputs[i].type.toLowerCase() === 'input')
|
||||||
$(step.ui.querySelector('div[name="' + i + '"] input'))
|
$step('div[name="' + i + '"] input')
|
||||||
.val(step.options[i])
|
.val(step.options[i])
|
||||||
.data('initValue', step.options[i]);
|
.data('initValue', step.options[i]);
|
||||||
if (inputs[i].type.toLowerCase() === 'select')
|
if (inputs[i].type.toLowerCase() === 'select')
|
||||||
$(step.ui.querySelector('div[name="' + i + '"] select'))
|
$step('div[name="' + i + '"] select')
|
||||||
.val(step.options[i])
|
.val(step.options[i])
|
||||||
.data('initValue', step.options[i]);
|
.data('initValue', step.options[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (var i in outputs) {
|
for (var i in outputs) {
|
||||||
if (step[i] !== undefined)
|
if (step[i] !== undefined)
|
||||||
$(step.ui.querySelector('div[name="' + i + '"] input'))
|
$step('div[name="' + i + '"] input')
|
||||||
.val(step[i]);
|
.val(step[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -66,20 +66,20 @@ function IntermediateHtmlStepUi(_sequencer, step, options) {
|
|||||||
|
|
||||||
|
|
||||||
function selectNewStepUi() {
|
function selectNewStepUi() {
|
||||||
var insertSelect = $(step.ui.querySelector('.insert-step-select'));
|
var insertSelect = $step('.insert-step-select');
|
||||||
var m = insertSelect.val();
|
var m = insertSelect.val();
|
||||||
$(step.ui.querySelector('.insertDiv .info')).html(_sequencer.modulesInfo(m).description);
|
$step('.insertDiv .info').html(_sequencer.modulesInfo(m).description);
|
||||||
$(step.ui.querySelector('.insertDiv .add-step-btn')).prop('disabled', false);
|
$step('.insertDiv .add-step-btn').prop('disabled', false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
var toggleDiv = function(callback = function(){}){
|
var toggleDiv = function(callback = function(){}){
|
||||||
$(step.ui.querySelector('.insertDiv')).collapse('toggle');
|
$step('.insertDiv').collapse('toggle');
|
||||||
if ($(step.ui.querySelector('.insert-text')).css('display') != 'none'){
|
if ($step('.insert-text').css('display') != 'none'){
|
||||||
$(step.ui.querySelector('.insert-text')).fadeToggle(200, function(){$(step.ui.querySelector('.no-insert-text')).fadeToggle(200, callback);});
|
$step('.insert-text').fadeToggle(200, function(){$step('.no-insert-text').fadeToggle(200, callback)});
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$(step.ui.querySelector('.no-insert-text')).fadeToggle(200, function(){$(step.ui.querySelector('.insert-text')).fadeToggle(200, callback);});
|
$step('.no-insert-text').fadeToggle(200, function(){$step('.insert-text').fadeToggle(200, callback)});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -89,7 +89,7 @@ function IntermediateHtmlStepUi(_sequencer, step, options) {
|
|||||||
var addStepUI = stepUI();
|
var addStepUI = stepUI();
|
||||||
addStepUI = parser.parseFromString(addStepUI, 'text/html').querySelector('div');
|
addStepUI = parser.parseFromString(addStepUI, 'text/html').querySelector('div');
|
||||||
|
|
||||||
if ($(step.ui.querySelector('.insertDiv')).length > 0){
|
if ($step('.insertDiv').length > 0){
|
||||||
toggleDiv();
|
toggleDiv();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -103,9 +103,9 @@ function IntermediateHtmlStepUi(_sequencer, step, options) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
$(step.ui.querySelector('.insertDiv .close-insert-box')).off('click').on('click', function(){toggleDiv(function(){});});
|
$step('.insertDiv .close-insert-box').off('click').on('click', function(){toggleDiv(function(){})});
|
||||||
|
|
||||||
var insertStepSelect = $(step.ui.querySelector('.insert-step-select'));
|
var insertStepSelect = $step('.insert-step-select');
|
||||||
insertStepSelect.html('');
|
insertStepSelect.html('');
|
||||||
// Add modules to the insertStep dropdown
|
// Add modules to the insertStep dropdown
|
||||||
for (var m in modulesInfo) {
|
for (var m in modulesInfo) {
|
||||||
@@ -117,26 +117,26 @@ function IntermediateHtmlStepUi(_sequencer, step, options) {
|
|||||||
insertStepSelect.selectize({
|
insertStepSelect.selectize({
|
||||||
sortField: 'text'
|
sortField: 'text'
|
||||||
});
|
});
|
||||||
$(step.ui.querySelector('.inserDiv .add-step-btn')).prop('disabled', true);
|
$step('.inserDiv .add-step-btn').prop('disabled', true);
|
||||||
|
|
||||||
insertStepSelect.append('<option value="" disabled selected>Select a Module</option>');
|
insertStepSelect.append('<option value="" disabled selected>Select a Module</option>');
|
||||||
$(step.ui.querySelector('.insertDiv .radio-group .radio')).on('click', function () {
|
$step('.insertDiv .radio-group .radio').on('click', function () {
|
||||||
$(this).parent().find('.radio').removeClass('selected');
|
$(this).parent().find('.radio').removeClass('selected');
|
||||||
$(this).addClass('selected');
|
$(this).addClass('selected');
|
||||||
newStep = $(this).attr('data-value');
|
newStep = $(this).attr('data-value');
|
||||||
$(step.ui.querySelector('.insert-step-select')).val(newStep);
|
$step('.insert-step-select').val(newStep);
|
||||||
selectNewStepUi();
|
selectNewStepUi();
|
||||||
insert(id);
|
insert(id);
|
||||||
$(this).removeClass('selected');
|
$(this).removeClass('selected');
|
||||||
});
|
});
|
||||||
insertStepSelect.on('change', selectNewStepUi);
|
insertStepSelect.on('change', selectNewStepUi);
|
||||||
$(step.ui.querySelector('.insertDiv .add-step-btn')).on('click', function () { insert(id); });
|
$step('.insertDiv .add-step-btn').on('click', function () { insert(id) });
|
||||||
};
|
}
|
||||||
|
|
||||||
function insert(id) {
|
function insert(id) {
|
||||||
|
|
||||||
options = options || {};
|
options = options || {};
|
||||||
var insertStepSelect = $(step.ui.querySelector('.insert-step-select'));
|
var insertStepSelect = $step('.insert-step-select');
|
||||||
if (insertStepSelect.val() == 'none') return;
|
if (insertStepSelect.val() == 'none') return;
|
||||||
|
|
||||||
var newStepName = insertStepSelect.val();
|
var newStepName = insertStepSelect.val();
|
||||||
|
|||||||
60
examples/lib/scopeQuery.js
Normal file
60
examples/lib/scopeQuery.js
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
/**
|
||||||
|
* @method $scope
|
||||||
|
* @param {"DOMNode"} scope A DOM Node as the scope
|
||||||
|
*/
|
||||||
|
function $scope(scope) {
|
||||||
|
return function(queryString){
|
||||||
|
var element = $(scope.querySelector(queryString));
|
||||||
|
|
||||||
|
element.elem = function(queryString){
|
||||||
|
return new $scope(scope)(queryString);
|
||||||
|
}
|
||||||
|
element.elemAll = function(queryString){
|
||||||
|
return new $scopeAll(scope)(queryString);
|
||||||
|
}
|
||||||
|
|
||||||
|
return element;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @method $scopeAll
|
||||||
|
* @param {"DOMNode"} scope A DOM Node as the scope
|
||||||
|
*/
|
||||||
|
function $scopeAll(scope){
|
||||||
|
return function(queryString){
|
||||||
|
var element = $(scope.querySelectorAll(queryString));
|
||||||
|
|
||||||
|
element.elem = function(queryString){
|
||||||
|
return new $scope(scope)(queryString);
|
||||||
|
}
|
||||||
|
element.elemAll = function(queryString){
|
||||||
|
return new $scopeAll(scope)(queryString);
|
||||||
|
}
|
||||||
|
|
||||||
|
return element;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @method scopeSelector
|
||||||
|
* @description A scoped jQuery selector
|
||||||
|
* @param {"DOMNode"} scope DOM Node as the scope
|
||||||
|
*/
|
||||||
|
function scopeSelector(scope){
|
||||||
|
return $scope(scope);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @method scopeSelectorAll
|
||||||
|
* @description A scoped jQuery multiple selector
|
||||||
|
* @param {"DOMNode} scope DOM Node as the scope
|
||||||
|
*/
|
||||||
|
function scopeSelectorAll(scope){
|
||||||
|
return $scopeAll(scope);
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
scopeSelector,
|
||||||
|
scopeSelectorAll
|
||||||
|
}
|
||||||
33
package-lock.json
generated
33
package-lock.json
generated
@@ -3581,8 +3581,7 @@
|
|||||||
"ansi-regex": {
|
"ansi-regex": {
|
||||||
"version": "2.1.1",
|
"version": "2.1.1",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"aproba": {
|
"aproba": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
@@ -3625,8 +3624,7 @@
|
|||||||
"code-point-at": {
|
"code-point-at": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"concat-map": {
|
"concat-map": {
|
||||||
"version": "0.0.1",
|
"version": "0.0.1",
|
||||||
@@ -3637,8 +3635,7 @@
|
|||||||
"console-control-strings": {
|
"console-control-strings": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"core-util-is": {
|
"core-util-is": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
@@ -3755,8 +3752,7 @@
|
|||||||
"inherits": {
|
"inherits": {
|
||||||
"version": "2.0.3",
|
"version": "2.0.3",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"ini": {
|
"ini": {
|
||||||
"version": "1.3.5",
|
"version": "1.3.5",
|
||||||
@@ -3768,7 +3764,6 @@
|
|||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"number-is-nan": "^1.0.0"
|
"number-is-nan": "^1.0.0"
|
||||||
}
|
}
|
||||||
@@ -3791,14 +3786,12 @@
|
|||||||
"minimist": {
|
"minimist": {
|
||||||
"version": "0.0.8",
|
"version": "0.0.8",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"minipass": {
|
"minipass": {
|
||||||
"version": "2.3.5",
|
"version": "2.3.5",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"safe-buffer": "^5.1.2",
|
"safe-buffer": "^5.1.2",
|
||||||
"yallist": "^3.0.0"
|
"yallist": "^3.0.0"
|
||||||
@@ -3817,7 +3810,6 @@
|
|||||||
"version": "0.5.1",
|
"version": "0.5.1",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"minimist": "0.0.8"
|
"minimist": "0.0.8"
|
||||||
}
|
}
|
||||||
@@ -3898,8 +3890,7 @@
|
|||||||
"number-is-nan": {
|
"number-is-nan": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"object-assign": {
|
"object-assign": {
|
||||||
"version": "4.1.1",
|
"version": "4.1.1",
|
||||||
@@ -3911,7 +3902,6 @@
|
|||||||
"version": "1.4.0",
|
"version": "1.4.0",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"wrappy": "1"
|
"wrappy": "1"
|
||||||
}
|
}
|
||||||
@@ -3997,8 +3987,7 @@
|
|||||||
"safe-buffer": {
|
"safe-buffer": {
|
||||||
"version": "5.1.2",
|
"version": "5.1.2",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"safer-buffer": {
|
"safer-buffer": {
|
||||||
"version": "2.1.2",
|
"version": "2.1.2",
|
||||||
@@ -4034,7 +4023,6 @@
|
|||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"code-point-at": "^1.0.0",
|
"code-point-at": "^1.0.0",
|
||||||
"is-fullwidth-code-point": "^1.0.0",
|
"is-fullwidth-code-point": "^1.0.0",
|
||||||
@@ -4054,7 +4042,6 @@
|
|||||||
"version": "3.0.1",
|
"version": "3.0.1",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"ansi-regex": "^2.0.0"
|
"ansi-regex": "^2.0.0"
|
||||||
}
|
}
|
||||||
@@ -4098,14 +4085,12 @@
|
|||||||
"wrappy": {
|
"wrappy": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"yallist": {
|
"yallist": {
|
||||||
"version": "3.0.3",
|
"version": "3.0.3",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
"scripts": {
|
"scripts": {
|
||||||
"debug": "TEST=true node ./index.js -i ./examples/images/monarch.png -s invert",
|
"debug": "TEST=true node ./index.js -i ./examples/images/monarch.png -s invert",
|
||||||
"test": "TEST=true istanbul cover tape test/core/*.js test/core/ui/user-interface.js test/core/modules/*.js | tap-spec; node test/core/sequencer/benchmark.js; browserify test/core/sequencer/meta-modules.js test/core/sequencer/image-sequencer.js test/core/sequencer/chain.js test/core/sequencer/replace.js test/core/sequencer/import-export.js test/core/sequencer/run.js test/core/sequencer/dynamic-imports.js test/core/util/*.js | tape-run --render=\"tap-spec\"",
|
"test": "TEST=true istanbul cover tape test/core/*.js test/core/ui/user-interface.js test/core/modules/*.js | tap-spec; node test/core/sequencer/benchmark.js; browserify test/core/sequencer/meta-modules.js test/core/sequencer/image-sequencer.js test/core/sequencer/chain.js test/core/sequencer/replace.js test/core/sequencer/import-export.js test/core/sequencer/run.js test/core/sequencer/dynamic-imports.js test/core/util/*.js | tape-run --render=\"tap-spec\"",
|
||||||
"test-ui": "node node_modules/jasmine/bin/jasmine test/spec/*.js",
|
"test-ui": "node node_modules/jasmine/bin/jasmine test/ui/spec/*.js",
|
||||||
"setup": "npm i && npm i -g grunt grunt-cli && grunt build",
|
"setup": "npm i && npm i -g grunt grunt-cli && grunt build",
|
||||||
"start": "grunt serve"
|
"start": "grunt serve"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,26 +0,0 @@
|
|||||||
describe('Preview UI HTML', function() {
|
|
||||||
|
|
||||||
var InsertPreview = require('../examples/lib/insertPreview');
|
|
||||||
var sequencer = require('../src/ImageSequencer')();
|
|
||||||
var insertPreview;
|
|
||||||
var options = { brightness: 50 };
|
|
||||||
|
|
||||||
beforeEach(()=>{
|
|
||||||
insertPreview = InsertPreview;
|
|
||||||
|
|
||||||
spyOn(insertPreview, 'generatePreview');
|
|
||||||
spyOn(insertPreview, 'updatePreviews');
|
|
||||||
|
|
||||||
insertPreview.generatePreview('brightness', options, 'src', 'selector');
|
|
||||||
insertPreview.updatePreviews('src', 'selector');
|
|
||||||
});
|
|
||||||
|
|
||||||
it('generate preview ui', function() {
|
|
||||||
expect(insertPreview.generatePreview).toHaveBeenCalledWith('brightness', options, 'src', 'selector');
|
|
||||||
});
|
|
||||||
|
|
||||||
it('update preview ui', function() {
|
|
||||||
expect(insertPreview.updatePreviews).toHaveBeenCalledWith('src', 'selector');
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
describe('Intermediate step HTML', function() {
|
|
||||||
|
|
||||||
var IntermediateHtmlStepUi = require('../examples/lib/intermediateHtmlStepUi');
|
|
||||||
var sequencer = require('../src/ImageSequencer')();
|
|
||||||
var intermediateHtmlStepUi;
|
|
||||||
|
|
||||||
beforeEach(()=>{
|
|
||||||
intermediateHtmlStepUi = new IntermediateHtmlStepUi(sequencer);
|
|
||||||
|
|
||||||
spyOn(intermediateHtmlStepUi, 'insertStep');
|
|
||||||
|
|
||||||
intermediateHtmlStepUi.insertStep();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('insert step ui', function() {
|
|
||||||
expect(intermediateHtmlStepUi.insertStep).toHaveBeenCalled();
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
{
|
|
||||||
"spec_dir": "spec",
|
|
||||||
"spec_files": [
|
|
||||||
"**/*[sS]pec.js"
|
|
||||||
],
|
|
||||||
"helpers": [
|
|
||||||
"helpers/**/*.js"
|
|
||||||
],
|
|
||||||
"stopSpecOnExpectationFailure": false,
|
|
||||||
"random": true
|
|
||||||
}
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
describe('URL manipulation methods', function() {
|
|
||||||
|
|
||||||
var UrlHash = require('../examples/lib/urlHash');
|
|
||||||
var urlHash;
|
|
||||||
var params = {
|
|
||||||
module: 'brightness',
|
|
||||||
brightness: 50
|
|
||||||
};
|
|
||||||
|
|
||||||
beforeEach(()=>{
|
|
||||||
urlHash = UrlHash;
|
|
||||||
|
|
||||||
spyOn(urlHash, 'getUrlHashParameters');
|
|
||||||
spyOn(urlHash, 'getUrlHashParameter');
|
|
||||||
spyOn(urlHash, 'setUrlHashParameters');
|
|
||||||
spyOn(urlHash, 'setUrlHashParameter');
|
|
||||||
|
|
||||||
urlHash.getUrlHashParameters();
|
|
||||||
urlHash.getUrlHashParameter('module');
|
|
||||||
urlHash.setUrlHashParameters(params);
|
|
||||||
urlHash.setUrlHashParameter('module', 'brightness');
|
|
||||||
});
|
|
||||||
|
|
||||||
it('gets url hash params from window hash', function() {
|
|
||||||
expect(urlHash.getUrlHashParameters).toHaveBeenCalled();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('gets url hash param from params object', function() {
|
|
||||||
expect(urlHash.getUrlHashParameter).toHaveBeenCalledWith('module');
|
|
||||||
});
|
|
||||||
|
|
||||||
it('accepts param object and sets url hash params', function() {
|
|
||||||
expect(urlHash.setUrlHashParameters).toHaveBeenCalledWith(params);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('accepts param key-value pair and sets url hash params', function() {
|
|
||||||
expect(urlHash.setUrlHashParameter).toHaveBeenCalledWith('module', 'brightness');
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
@@ -6,7 +6,7 @@ module.exports = function Noise(pixels, method) {
|
|||||||
|
|
||||||
for(let y = 0; y < pixels.shape[1]; y++){
|
for(let y = 0; y < pixels.shape[1]; y++){
|
||||||
for(let x = 0; x < pixels.shape[0]; x++){
|
for(let x = 0; x < pixels.shape[0]; x++){
|
||||||
let i = 0, k = 0, windowr = [],windowg = [], windowb = [];
|
let i = 0, k = 0, windowr = [], windowg = [], windowb = [];
|
||||||
|
|
||||||
while( k <= 8){
|
while( k <= 8){
|
||||||
let newX = x + neighbourX[k], newY = y + neighbourY[k];
|
let newX = x + neighbourX[k], newY = y + neighbourY[k];
|
||||||
@@ -14,9 +14,9 @@ module.exports = function Noise(pixels, method) {
|
|||||||
if( newX >= 0 && newX < pixels.shape[0])
|
if( newX >= 0 && newX < pixels.shape[0])
|
||||||
{
|
{
|
||||||
if( newY >= 0 && newY < pixels.shape[1]){
|
if( newY >= 0 && newY < pixels.shape[1]){
|
||||||
windowr[i] = pixels.get((newX),(newY),0);
|
windowr[i] = pixels.get((newX), (newY), 0);
|
||||||
windowg[i] = pixels.get((newX),(newY),1);
|
windowg[i] = pixels.get((newX), (newY), 1);
|
||||||
windowb[i] = pixels.get((newX),(newY),2);
|
windowb[i] = pixels.get((newX), (newY), 2);
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -27,22 +27,22 @@ module.exports = function Noise(pixels, method) {
|
|||||||
windowg.sort();
|
windowg.sort();
|
||||||
windowb.sort();
|
windowb.sort();
|
||||||
|
|
||||||
if(i%2 == 0)
|
if(i % 2 == 0)
|
||||||
{
|
{
|
||||||
let value = windowr[i/2] + windowr[(i/2)-1];
|
let value = windowr[i / 2] + windowr[(i / 2) - 1];
|
||||||
pixels.set(x,y,0,value);
|
pixels.set(x, y, 0, value);
|
||||||
|
|
||||||
value = windowg[i/2] + windowg[(i/2)-1];
|
value = windowg[i / 2] + windowg[(i / 2) - 1];
|
||||||
pixels.set(x,y,1,value);
|
pixels.set(x, y, 1, value);
|
||||||
|
|
||||||
value = windowb[i/2] + windowb[(i/2)-1];
|
value = windowb[i / 2] + windowb[(i / 2) - 1];
|
||||||
pixels.set(x,y,2,value);
|
pixels.set(x, y, 2, value);
|
||||||
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
pixels.set(x, y, 0, windowr[Math.floor(i/2)]);
|
pixels.set(x, y, 0, windowr[Math.floor(i / 2)]);
|
||||||
pixels.set(x, y, 1, windowg[Math.floor(i/2)]);
|
pixels.set(x, y, 1, windowg[Math.floor(i / 2)]);
|
||||||
pixels.set(x, y, 2, windowb[Math.floor(i/2)]);
|
pixels.set(x, y, 2, windowb[Math.floor(i / 2)]);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -52,7 +52,7 @@ module.exports = function Noise(pixels, method) {
|
|||||||
|
|
||||||
for(let y = 0; y < pixels.shape[1]; y++){
|
for(let y = 0; y < pixels.shape[1]; y++){
|
||||||
for(let x = 0; x < pixels.shape[0]; x++){
|
for(let x = 0; x < pixels.shape[0]; x++){
|
||||||
let i = 0, k = 0, sumR=0, sumG = 0, sumB =0;
|
let i = 0, k = 0, sumR = 0, sumG = 0, sumB = 0;
|
||||||
|
|
||||||
while( k <= 8){
|
while( k <= 8){
|
||||||
let newX = x + neighbourX[k], newY = y + neighbourY[k];
|
let newX = x + neighbourX[k], newY = y + neighbourY[k];
|
||||||
@@ -60,18 +60,18 @@ module.exports = function Noise(pixels, method) {
|
|||||||
if( newX >= 0 && newX < pixels.shape[0])
|
if( newX >= 0 && newX < pixels.shape[0])
|
||||||
{
|
{
|
||||||
if( newY >= 0 && newY < pixels.shape[1]){
|
if( newY >= 0 && newY < pixels.shape[1]){
|
||||||
sumR += pixels.get(newX,newY,0);
|
sumR += pixels.get(newX, newY, 0);
|
||||||
sumG += pixels.get(newX,newY,1);
|
sumG += pixels.get(newX, newY, 1);
|
||||||
sumB += pixels.get(newX,newY,2);
|
sumB += pixels.get(newX, newY, 2);
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
k++;
|
k++;
|
||||||
}
|
}
|
||||||
|
|
||||||
pixels.set(x, y, 0, sumR/i);
|
pixels.set(x, y, 0, sumR / i);
|
||||||
pixels.set(x, y, 1, sumG/i);
|
pixels.set(x, y, 1, sumG / i);
|
||||||
pixels.set(x, y, 2, sumB/i);
|
pixels.set(x, y, 2, sumB / i);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,42 +0,0 @@
|
|||||||
describe('Default sequencer HTML', function() {
|
|
||||||
|
|
||||||
var DefaultHtmlSequencerUi = require('../../examples/lib/defaultHtmlSequencerUi');
|
|
||||||
var sequencer = require('../../src/ImageSequencer')();
|
|
||||||
var defaultHtmlSequencerUi;
|
|
||||||
|
|
||||||
beforeEach(()=>{
|
|
||||||
defaultHtmlSequencerUi = new DefaultHtmlSequencerUi(sequencer);
|
|
||||||
|
|
||||||
spyOn(defaultHtmlSequencerUi, 'onLoad');
|
|
||||||
spyOn(defaultHtmlSequencerUi, 'selectNewStepUi');
|
|
||||||
spyOn(defaultHtmlSequencerUi, 'removeStepUi');
|
|
||||||
spyOn(defaultHtmlSequencerUi, 'addStepUi');
|
|
||||||
spyOn(defaultHtmlSequencerUi, 'importStepsFromUrlHash');
|
|
||||||
|
|
||||||
defaultHtmlSequencerUi.onLoad();
|
|
||||||
defaultHtmlSequencerUi.selectNewStepUi();
|
|
||||||
defaultHtmlSequencerUi.addStepUi();
|
|
||||||
defaultHtmlSequencerUi.removeStepUi();
|
|
||||||
defaultHtmlSequencerUi.importStepsFromUrlHash();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('load default ui', function() {
|
|
||||||
expect(defaultHtmlSequencerUi.onLoad).toHaveBeenCalled();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('select step ui', function() {
|
|
||||||
expect(defaultHtmlSequencerUi.selectNewStepUi).toHaveBeenCalled();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('add step ui', function() {
|
|
||||||
expect(defaultHtmlSequencerUi.addStepUi).toHaveBeenCalled();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('remove step ui', function() {
|
|
||||||
expect(defaultHtmlSequencerUi.removeStepUi).toHaveBeenCalled();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('import options from url', function() {
|
|
||||||
expect(defaultHtmlSequencerUi.importStepsFromUrlHash).toHaveBeenCalled();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
@@ -1,61 +0,0 @@
|
|||||||
var { JSDOM } = require('jsdom');
|
|
||||||
var DOM = new JSDOM('<body></body>');
|
|
||||||
|
|
||||||
global.document = DOM.window.document;
|
|
||||||
|
|
||||||
describe('Sequencer step HTML', function() {
|
|
||||||
|
|
||||||
var DefaultHtmlStepUi = require('../../examples/lib/defaultHtmlStepUi');
|
|
||||||
var sequencer = require('../../src/ImageSequencer')();
|
|
||||||
var defaultHtmlStepUi;
|
|
||||||
var step = 'brightness';
|
|
||||||
var options = {
|
|
||||||
name: 'Brightness',
|
|
||||||
description: 'Change the brightness of the image by given percent value'
|
|
||||||
};
|
|
||||||
// options = JSON.parse(options)
|
|
||||||
|
|
||||||
beforeEach(()=>{
|
|
||||||
defaultHtmlStepUi = new DefaultHtmlStepUi(sequencer);
|
|
||||||
|
|
||||||
spyOn(defaultHtmlStepUi, 'getPreview');
|
|
||||||
spyOn(defaultHtmlStepUi, 'onSetup');
|
|
||||||
spyOn(defaultHtmlStepUi, 'onComplete');
|
|
||||||
spyOn(defaultHtmlStepUi, 'onDraw');
|
|
||||||
spyOn(defaultHtmlStepUi, 'onRemove');
|
|
||||||
spyOn(defaultHtmlStepUi, 'notify');
|
|
||||||
|
|
||||||
defaultHtmlStepUi.getPreview();
|
|
||||||
defaultHtmlStepUi.onSetup(step, options);
|
|
||||||
defaultHtmlStepUi.onComplete(step);
|
|
||||||
defaultHtmlStepUi.onDraw(step);
|
|
||||||
defaultHtmlStepUi.onRemove(step);
|
|
||||||
defaultHtmlStepUi.notify('Step removed', 'remove-notification');
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
it('result preview ui', function() {
|
|
||||||
expect(defaultHtmlStepUi.getPreview).toHaveBeenCalled();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('load initial setup ui', function() {
|
|
||||||
expect(defaultHtmlStepUi.onSetup).toHaveBeenCalledWith(step, options);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('load completion ui', function() {
|
|
||||||
expect(defaultHtmlStepUi.onComplete).toHaveBeenCalledWith(step);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('draw step ui', function() {
|
|
||||||
expect(defaultHtmlStepUi.onDraw).toHaveBeenCalledWith(step);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('remove step ui', function() {
|
|
||||||
expect(defaultHtmlStepUi.onRemove).toHaveBeenCalledWith(step);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('notification ui', function() {
|
|
||||||
expect(defaultHtmlStepUi.notify).toHaveBeenCalledWith('Step removed', 'remove-notification');
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
var SpecReporter = require('jasmine-spec-reporter').SpecReporter;
|
|
||||||
|
|
||||||
jasmine.getEnv().clearReporters(); // remove default reporter logs
|
|
||||||
jasmine.getEnv().addReporter(new SpecReporter({ // add jasmine-spec-reporter
|
|
||||||
spec: {
|
|
||||||
displayPending: true
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
describe('Default sequencer HTML', function() {
|
describe('Default sequencer HTML', function() {
|
||||||
|
|
||||||
var DefaultHtmlSequencerUi = require('../examples/lib/defaultHtmlSequencerUi');
|
var DefaultHtmlSequencerUi = require('../../../examples/lib/defaultHtmlSequencerUi');
|
||||||
var sequencer = require('../src/ImageSequencer')();
|
var sequencer = require('../../../src/ImageSequencer')();
|
||||||
var defaultHtmlSequencerUi;
|
var defaultHtmlSequencerUi;
|
||||||
|
|
||||||
beforeEach(()=>{
|
beforeEach(()=>{
|
||||||
@@ -5,8 +5,8 @@ global.document = DOM.window.document;
|
|||||||
|
|
||||||
describe('Sequencer step HTML', function() {
|
describe('Sequencer step HTML', function() {
|
||||||
|
|
||||||
var DefaultHtmlStepUi = require('../examples/lib/defaultHtmlStepUi');
|
var DefaultHtmlStepUi = require('../../../examples/lib/defaultHtmlStepUi');
|
||||||
var sequencer = require('../src/ImageSequencer')();
|
var sequencer = require('../../../src/ImageSequencer')();
|
||||||
var defaultHtmlStepUi;
|
var defaultHtmlStepUi;
|
||||||
var step = 'brightness';
|
var step = 'brightness';
|
||||||
var options = {
|
var options = {
|
||||||
@@ -15,6 +15,16 @@ describe('Sequencer step HTML', function() {
|
|||||||
};
|
};
|
||||||
// options = JSON.parse(options)
|
// options = JSON.parse(options)
|
||||||
|
|
||||||
|
beforeAll(() => {
|
||||||
|
const { JSDOM } = require('jsdom');
|
||||||
|
var { window } = new JSDOM();
|
||||||
|
|
||||||
|
const { document } = window;
|
||||||
|
global.window = window;
|
||||||
|
global.document = document;
|
||||||
|
const $ = global.jQuery = global.$ = require('jquery');
|
||||||
|
});
|
||||||
|
|
||||||
beforeEach(()=>{
|
beforeEach(()=>{
|
||||||
defaultHtmlStepUi = new DefaultHtmlStepUi(sequencer);
|
defaultHtmlStepUi = new DefaultHtmlStepUi(sequencer);
|
||||||
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
describe('Preview UI HTML', function() {
|
describe('Preview UI HTML', function() {
|
||||||
|
|
||||||
var InsertPreview = require('../../examples/lib/insertPreview');
|
var InsertPreview = require('../../../examples/lib/insertPreview');
|
||||||
var sequencer = require('../../src/ImageSequencer')();
|
var sequencer = require('../../../src/ImageSequencer')();
|
||||||
var insertPreview;
|
var insertPreview;
|
||||||
var options = { brightness: 50 };
|
var options = { brightness: 50 };
|
||||||
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
describe('Intermediate step HTML', function() {
|
describe('Intermediate step HTML', function() {
|
||||||
|
|
||||||
var IntermediateHtmlStepUi = require('../../examples/lib/intermediateHtmlStepUi');
|
var IntermediateHtmlStepUi = require('../../../examples/lib/intermediateHtmlStepUi');
|
||||||
var sequencer = require('../../src/ImageSequencer')();
|
var sequencer = require('../../../src/ImageSequencer')();
|
||||||
var intermediateHtmlStepUi;
|
var intermediateHtmlStepUi;
|
||||||
|
|
||||||
beforeEach(()=>{
|
beforeEach(()=>{
|
||||||
24
test/ui/spec/mapHtmlTypes.spec.js
Normal file
24
test/ui/spec/mapHtmlTypes.spec.js
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
describe('HTML Types Mapping Function', function() {
|
||||||
|
|
||||||
|
var mapHtmlTypes = require('../../../examples/lib/mapHtmltypes');
|
||||||
|
|
||||||
|
it('maps range and number types', function() {
|
||||||
|
expect(mapHtmlTypes({type: 'percentage'})).toEqual({type: 'number'});
|
||||||
|
|
||||||
|
expect(mapHtmlTypes({type: 'integer'})).toEqual({type: 'number'});
|
||||||
|
expect(mapHtmlTypes({type: 'integer', min: 20, max: 100})).toEqual({type: 'range', min: 20, max: 100});
|
||||||
|
|
||||||
|
expect(mapHtmlTypes({type: 'float'})).toEqual({type: 'text'});
|
||||||
|
expect(mapHtmlTypes({type: 'float', min: 20, max: 100})).toEqual({type: 'range', min: 20, max: 100});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('maps text type', function() {
|
||||||
|
expect(mapHtmlTypes({type: 'string'})).toEqual({type: 'text'});
|
||||||
|
expect(mapHtmlTypes({type: 'anything'})).toEqual({type: 'text'});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('maps select type', function() {
|
||||||
|
expect(mapHtmlTypes({type: 'select'})).toEqual({type: 'select'});
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
81
test/ui/spec/scopeQuery.spec.js
Normal file
81
test/ui/spec/scopeQuery.spec.js
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
const scopeQuery = require('../../../examples/lib/scopeQuery');
|
||||||
|
|
||||||
|
describe('scopeQuery Method', function() {
|
||||||
|
|
||||||
|
beforeAll(() => {
|
||||||
|
const { JSDOM } = require('jsdom');
|
||||||
|
|
||||||
|
var { window } = new JSDOM(`
|
||||||
|
<body>
|
||||||
|
<div id="scope1">
|
||||||
|
<div class="child" id="child1">Child1</div>
|
||||||
|
<div class="child" id="child2">Child2</div>
|
||||||
|
<div class="child" id="child3">Child3</div>
|
||||||
|
<div class="child" id="child4">Child4</div>
|
||||||
|
<div class="child" id="child5">Child5</div>
|
||||||
|
<div class="child" id="child6">Child6</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="scope2">
|
||||||
|
<div class="child" id="child1">Child1Scope2</div>
|
||||||
|
<div class="child" id="child2">Child2Scope2</div>
|
||||||
|
<div class="child" id="child3">Child3Scope2</div>
|
||||||
|
<div class="child" id="child4">Child4Scope2</div>
|
||||||
|
<div class="child" id="child5">Child5Scope2</div>
|
||||||
|
</div>
|
||||||
|
</body>`);
|
||||||
|
|
||||||
|
const { document } = window;
|
||||||
|
global.window = window;
|
||||||
|
global.document = document;
|
||||||
|
const $ = global.jQuery = global.$ = require('jquery');
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
it('scope 1 querySelector', function() {
|
||||||
|
|
||||||
|
const $scope1 = scopeQuery.scopeSelector(document.querySelector('#scope1'));
|
||||||
|
const $scope1All = scopeQuery.scopeSelectorAll(document.querySelector('#scope1'));
|
||||||
|
|
||||||
|
expect($scope1('.child').length).toBe(1);
|
||||||
|
expect($scope1All('.child').length).toBe(6);
|
||||||
|
|
||||||
|
expect($scope1('#child1').text()).toBe('Child1');
|
||||||
|
expect($scope1('#child2').text()).toBe('Child2');
|
||||||
|
|
||||||
|
expect($scope1All('#child1').text()).toBe('Child1');
|
||||||
|
expect($scope1All('#child2').text()).toBe('Child2');
|
||||||
|
|
||||||
|
expect($scope1().elem('.child').length).toBe(1);
|
||||||
|
expect($scope1().elemAll('.child').length).toBe(6);
|
||||||
|
|
||||||
|
expect($scope1All().elem('.child').length).toBe(1);
|
||||||
|
expect($scope1All().elemAll('.child').length).toBe(6);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('scope 2 querySelector', function() {
|
||||||
|
|
||||||
|
const $scope2 = scopeQuery.scopeSelector(document.querySelector('#scope2'));
|
||||||
|
const $scope2All = scopeQuery.scopeSelectorAll(document.querySelector('#scope2'));
|
||||||
|
|
||||||
|
expect($scope2('.child').length).toBe(1);
|
||||||
|
expect($scope2All('.child').length).toBe(5);
|
||||||
|
|
||||||
|
expect($scope2('#child1').text()).toBe('Child1Scope2');
|
||||||
|
expect($scope2('#child2').text()).toBe('Child2Scope2');
|
||||||
|
|
||||||
|
expect($scope2All('#child1').text()).toBe('Child1Scope2');
|
||||||
|
expect($scope2All('#child2').text()).toBe('Child2Scope2');
|
||||||
|
|
||||||
|
expect($scope2().elem('.child').length).toBe(1);
|
||||||
|
expect($scope2().elemAll('.child').length).toBe(5);
|
||||||
|
|
||||||
|
expect($scope2All().elem('.child').length).toBe(1);
|
||||||
|
expect($scope2All().elemAll('.child').length).toBe(5);
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
global.document = null;
|
||||||
|
global.$ = null;
|
||||||
|
DOM = null;
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
describe('URL manipulation methods', function() {
|
describe('URL manipulation methods', function() {
|
||||||
|
|
||||||
var UrlHash = require('../../examples/lib/urlHash');
|
var UrlHash = require('../../../examples/lib/urlHash');
|
||||||
var urlHash;
|
var urlHash;
|
||||||
var params = {
|
var params = {
|
||||||
module: 'brightness',
|
module: 'brightness',
|
||||||
Reference in New Issue
Block a user