|
|
@ -14,7 +14,7 @@ Visualizer.prototype.initItems = function(n) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Items
|
|
|
|
// Items
|
|
|
|
this.groups = this.svg.selectAll('g').data(shuffled).enter().append('g') |
|
|
|
this.groups = this.svg.selectAll('g').data(shuffled).enter().insert('g') |
|
|
|
.attr('transform', `translate(0, ${Visualizer.itemY})`); |
|
|
|
.attr('transform', `translate(0, ${Visualizer.itemY})`); |
|
|
|
|
|
|
|
|
|
|
|
this.groups.append('rect') |
|
|
|
this.groups.append('rect') |
|
|
@ -103,7 +103,7 @@ Visualizer.prototype.initRange = function() { |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
var rangeChange = function(event) { |
|
|
|
var rangeChange = function(event) { |
|
|
|
this.init.items(event.target.value); |
|
|
|
this.initItems(event.target.value); |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -116,8 +116,8 @@ Visualizer.prototype.initRange = function() { |
|
|
|
|
|
|
|
|
|
|
|
var range = document.createElement('input'); |
|
|
|
var range = document.createElement('input'); |
|
|
|
range.setAttribute('type', 'range'); |
|
|
|
range.setAttribute('type', 'range'); |
|
|
|
range.setAttribute('value', 40); |
|
|
|
range.setAttribute('value', 10); |
|
|
|
range.setAttribute('min', 5); |
|
|
|
range.setAttribute('min', 10); |
|
|
|
range.setAttribute('max', 80); |
|
|
|
range.setAttribute('max', 80); |
|
|
|
range.addEventListener('change', rangeChange.bind(this)); |
|
|
|
range.addEventListener('change', rangeChange.bind(this)); |
|
|
|
range.addEventListener('input', rangeInput.bind(null, msg)); |
|
|
|
range.addEventListener('input', rangeInput.bind(null, msg)); |
|
|
@ -132,33 +132,64 @@ Visualizer.prototype.initRange = function() { |
|
|
|
* |
|
|
|
* |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
Visualizer.prototype.initControls = function() { |
|
|
|
Visualizer.prototype.initControls = function() { |
|
|
|
|
|
|
|
var updatePlayPause = function(paused) { |
|
|
|
|
|
|
|
if (paused === true) { |
|
|
|
|
|
|
|
play.className = 'fa fa-pause'; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
else { |
|
|
|
|
|
|
|
play.className = 'fa fa-play'; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var playclick = function() { |
|
|
|
|
|
|
|
this.paused = !this.paused; |
|
|
|
|
|
|
|
updatePlayPause(this.paused); |
|
|
|
|
|
|
|
this.followInstruction(this.instruction + 1); |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var backclick = function() { |
|
|
|
|
|
|
|
this.paused = true; |
|
|
|
|
|
|
|
this.followInstruction(this.instruction - 1); |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var forwardclick = function() { |
|
|
|
|
|
|
|
this.paused = true; |
|
|
|
|
|
|
|
this.followInstruction(this.instruction + 1); |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var restartclick = function() { |
|
|
|
|
|
|
|
this.paused = false; |
|
|
|
|
|
|
|
updatePlayPause(this.paused); |
|
|
|
|
|
|
|
this.followInstruction(0); |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
var play = document.createElement('button'); |
|
|
|
var play = document.createElement('button'); |
|
|
|
play.className = 'fa fa-play'; |
|
|
|
play.className = 'fa fa-play'; |
|
|
|
play.title = 'Play' |
|
|
|
play.title = 'Play' |
|
|
|
play.addEventListener('click', onclick); |
|
|
|
play.addEventListener('click', playclick.bind(this)); |
|
|
|
|
|
|
|
|
|
|
|
var back = document.createElement('button'); |
|
|
|
var back = document.createElement('button'); |
|
|
|
back.className = 'fa fa-step-backward'; |
|
|
|
back.className = 'fa fa-step-backward'; |
|
|
|
back.title = 'Step Backward'; |
|
|
|
back.title = 'Step Backward'; |
|
|
|
back.addEventListener('click', onclick); |
|
|
|
back.addEventListener('click', backclick.bind(this)); |
|
|
|
|
|
|
|
|
|
|
|
var forward = document.createElement('button'); |
|
|
|
var forward = document.createElement('button'); |
|
|
|
forward.className = 'fa fa-step-forward' |
|
|
|
forward.className = 'fa fa-step-forward' |
|
|
|
forward.title = 'Step Forward'; |
|
|
|
forward.title = 'Step Forward'; |
|
|
|
forward.addEventListener('click', onclick); |
|
|
|
forward.addEventListener('click', forwardclick.bind(this)); |
|
|
|
|
|
|
|
|
|
|
|
var reset = document.createElement('button'); |
|
|
|
var reset = document.createElement('button'); |
|
|
|
reset.className = 'fa fa-fast-backward'; |
|
|
|
reset.className = 'fa fa-fast-backward'; |
|
|
|
reset.title = 'Restart' |
|
|
|
reset.title = 'Restart' |
|
|
|
reset.addEventListener('click', onclick); |
|
|
|
reset.addEventListener('click', restartclick.bind(this)); |
|
|
|
|
|
|
|
|
|
|
|
var stat1 = document.createElement('div'); |
|
|
|
var stat1 = document.createElement('div'); |
|
|
|
stat1.className = 'stat'; |
|
|
|
stat1.className = 'stat'; |
|
|
|
stat1.innerHTML = 'Swaps: 999'; |
|
|
|
stat1.innerHTML = 'Comparisons: 999'; |
|
|
|
|
|
|
|
|
|
|
|
var stat2 = document.createElement('div'); |
|
|
|
var stat2 = document.createElement('div'); |
|
|
|
stat2.className = 'stat'; |
|
|
|
stat2.className = 'stat'; |
|
|
|
stat2.innerHTML = 'Comparisons: 999'; |
|
|
|
stat2.innerHTML = 'Swaps: 999'; |
|
|
|
|
|
|
|
|
|
|
|
var container = document.createElement('div'); |
|
|
|
var container = document.createElement('div'); |
|
|
|
container.className = 'controls-container'; |
|
|
|
container.className = 'controls-container'; |
|
|
|