adding play, pause, speed

This commit is contained in:
Micho 2013-05-21 16:54:47 +02:00
parent e8465af49a
commit c55ed6a875
3 changed files with 93 additions and 22 deletions

View File

@ -61,29 +61,71 @@
} }
#slider { #slider {
position: absolute; position: absolute;
top: 530px; width: 980px;
left: 60px;
width: 920px;
height: 50px; height: 50px;
border-top: 1px solid #aaa; top: 530px;
border-bottom: 1px solid #aaa; left: 0px;
}
#play {
top: 0px;
left: 0px;
width: 50px;
height: 50px;
background: #eee;
border: 1px solid #aaa;
font-size: 12px;
text-align: center;
line-height: 15px;
border-radius: 10px;
background-image: url(play-pause.png);
background-repeat: no-repeat;
background-position: -50px 0px;
cursor: pointer;
}
#play.pause {
background-position: 0px 0px;
}
.speed {
width: 35px;
height: 13px;
position: absolute;
background: #eee;
color: #888;
border: 1px solid #aaa;
font-size: 11px;
left: 55px;
padding-top: 1px;
top: 0px;
text-align: center;
border-radius: 5px;
cursor: pointer;
}
.speed.active {
color: #000;
} }
#sliderWrapper { #sliderWrapper {
width: 920px; width: 883px;
height: 50px; height: 50px;
border-radius: 10px;
overflow: hidden; overflow: hidden;
position: absolute; position: absolute;
top: 0px;
left: 95px;
border: 1px solid #aaa;
cursor: pointer;
} }
#sliderInner { #sliderInner {
width: 6140px; width: 6140px;
height: 50px; height: 50px;
position: relative; position: relative;
left: -420px; left: -420px;
top: 0px;
} }
.marker { .marker {
position: absolute; position: absolute;
left: 480px; left: 537px;
border-left: 3px solid rgba(0,0,0,0.5); top: 1px;
border-left: 2px solid rgba(0,0,0,0.5);
height: 50px; height: 50px;
} }
.hour { .hour {
@ -140,6 +182,12 @@
</div> </div>
<div id="timer"></div> <div id="timer"></div>
<div id="slider"> <div id="slider">
<div id="play"></div>
<div id="speed1" class="speed" style="top: 0px">250</div>
<div id="speed2" class="speed" style="top:18px">500</div>
<div id="speed3" class="speed" style="top:36px">1000</div>
<div id="sliderWrapper"> <div id="sliderWrapper">
<div id="sliderInner"> <div id="sliderInner">
<div class="hour n" style="left:900px"><span>15:00</span></div> <div class="hour n" style="left:900px"><span>15:00</span></div>

View File

@ -1,4 +1,4 @@
var startTime = (24*1 + 9)*60; var startTime = (24*1 + 14)*60;
var minTime = (24*0 + 12)*60; var minTime = (24*0 + 12)*60;
var maxTime = (24*4 + 22)*60; var maxTime = (24*4 + 22)*60;
@ -11,8 +11,8 @@ var height = 490;
var gridSize = 3; var gridSize = 3;
var nearFieldRadius = 30; var nearFieldRadius = 30;
var timeStep = 500/1500; (250, 500, 1000) var timeStep = 1000/1500; (250, 500, 1000)
var decay = Math.pow(0.8, 1/timeStep); var decay = Math.pow(0.8, 5);
var stepSize = 50*timeStep; var stepSize = 50*timeStep;
var frameDuration = 40; var frameDuration = 40;
var radius = 1.4; var radius = 1.4;
@ -31,18 +31,35 @@ for (var x = -nearFieldGridRadius; x < width/gridSize+nearFieldGridRadius; x++)
$(function () { $(function () {
init(); init();
start(); setSpeed(2);
//setTimeout(stop, 60000); startPlay();
//update();
setTimeout(stopPlay, 10000);
}) })
function setSpeed(speed) {
timeStep = Math.pow(2, speed)*125/1500;
stepSize = 50*timeStep;
stepGridRadius = Math.ceil(stepSize/gridSize);
nearFieldGridRadius = Math.ceil(nearFieldRadius/gridSize);
$('.speed').removeClass('active');
$('#speed'+speed).addClass('active');
}
function init() { function init() {
context = $('#canvas')[0].getContext('2d'); context = $('#canvas')[0].getContext('2d');
clients = []; clients = [];
data.matrix.forEach(function (times, index) { data.matrix.forEach(function (times, index) {
clients[index] = {point:undefined, x:0, y:0, r:0, x0:0, y0:0, r0:0, index:index, lastEvent:0}; clients[index] = { point:undefined, x:0, y:0, r:0, x0:0, y0:0, r0:0, index:index, lastEvent:0 };
random[index] = Math.random(); random[index] = Math.random();
}); });
$('#play').click(togglePlay);
$('#speed1').click(function () { setSpeed(1); });
$('#speed2').click(function () { setSpeed(2); });
$('#speed3').click(function () { setSpeed(3); });
var index = -1; var index = -1;
for (var time = -60; time <= (4*24+1)*60; time++) { for (var time = -60; time <= (4*24+1)*60; time++) {
while (data.times[index+1] <= time) index++; while (data.times[index+1] <= time) index++;
@ -77,27 +94,33 @@ function init() {
}) })
} }
function start() { function startPlay() {
if (!interval) interval = setInterval(update, frameDuration); if (!interval) {
interval = setInterval(update, frameDuration);
$('#play').removeClass('pause');
}
} }
function stop() { function stopPlay() {
if (interval) { if (interval) {
clearInterval(interval); clearInterval(interval);
interval = false; interval = false;
$('#play').addClass('pause');
} }
} }
function togglePlay() {
if (interval) stopPlay(); else startPlay();
}
function update() { function update() {
currentTime += timeStep; currentTime += timeStep;
if (currentTime > maxTime) { if (currentTime > maxTime) {
currentTime = maxTime; currentTime = maxTime;
stop(); stopPlay();
} }
if (currentTime < minTime) { if (currentTime < minTime) currentTime = minTime;
currentTime = minTime;
}
renderTime(); renderTime();
updateData(); updateData();
@ -113,7 +136,7 @@ function renderTime() {
m = (m+100+'').substr(1); m = (m+100+'').substr(1);
$('#timer').html('Tag '+d+' - '+h+':'+m); $('#timer').html('Tag '+d+' - '+h+':'+m);
$('#sliderInner').css('left', -(currentTime-8*60)); $('#sliderInner').css('left', -(currentTime-441));
} }
function updateData() { function updateData() {

BIN
clients/anim/play-pause.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 373 B