slider
This commit is contained in:
		
							parent
							
								
									9a0431fd1d
								
							
						
					
					
						commit
						95875ecfe6
					
				| 
						 | 
					@ -120,6 +120,7 @@
 | 
				
			||||||
				position: relative;
 | 
									position: relative;
 | 
				
			||||||
				left: -420px;
 | 
									left: -420px;
 | 
				
			||||||
				top: 0px;
 | 
									top: 0px;
 | 
				
			||||||
 | 
									cursor: pointer;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			.marker {
 | 
								.marker {
 | 
				
			||||||
				position: absolute;
 | 
									position: absolute;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -47,6 +47,28 @@ function setSpeed(speed) {
 | 
				
			||||||
	$('#speed'+speed).addClass('active');
 | 
						$('#speed'+speed).addClass('active');
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var mouseDragX0, dragTime, mouseDrag = false;
 | 
				
			||||||
 | 
					function sliderDragMove(event) {
 | 
				
			||||||
 | 
						if (mouseDrag) {
 | 
				
			||||||
 | 
							currentTime = dragTime + (mouseDragX0 - event.pageX);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							updateFrame();
 | 
				
			||||||
 | 
							event.preventDefault();
 | 
				
			||||||
 | 
							return false;
 | 
				
			||||||
 | 
						} else {
 | 
				
			||||||
 | 
							mouseDragX0 = event.pageX;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function sliderDragStart() {
 | 
				
			||||||
 | 
						mouseDrag = true;
 | 
				
			||||||
 | 
						dragTime = currentTime;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function sliderDragStop() {
 | 
				
			||||||
 | 
						mouseDrag = false; 
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function init() {
 | 
					function init() {
 | 
				
			||||||
	context = $('#canvas')[0].getContext('2d');
 | 
						context = $('#canvas')[0].getContext('2d');
 | 
				
			||||||
	clients = [];
 | 
						clients = [];
 | 
				
			||||||
| 
						 | 
					@ -60,6 +82,11 @@ function init() {
 | 
				
			||||||
	$('#speed2').click(function () { setSpeed(2); });
 | 
						$('#speed2').click(function () { setSpeed(2); });
 | 
				
			||||||
	$('#speed3').click(function () { setSpeed(3); });
 | 
						$('#speed3').click(function () { setSpeed(3); });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						$('#sliderWrapper').mousedown(function () { sliderDragStart(); });
 | 
				
			||||||
 | 
						$(document).mousemove(function (e) { return sliderDragMove(e); });
 | 
				
			||||||
 | 
						$(document).mouseup(function (e) { sliderDragStop(); });
 | 
				
			||||||
 | 
						$(document).on('selectstart', function () { return !mouseDrag; });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	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++;
 | 
				
			||||||
| 
						 | 
					@ -114,6 +141,8 @@ function togglePlay() {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function update() {
 | 
					function update() {
 | 
				
			||||||
 | 
						if (mouseDrag) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	currentTime += timeStep;
 | 
						currentTime += timeStep;
 | 
				
			||||||
	if (currentTime > maxTime) {
 | 
						if (currentTime > maxTime) {
 | 
				
			||||||
		currentTime = maxTime;
 | 
							currentTime = maxTime;
 | 
				
			||||||
| 
						 | 
					@ -122,6 +151,10 @@ function update() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (currentTime < minTime) currentTime = minTime;
 | 
						if (currentTime < minTime) currentTime = minTime;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						updateFrame();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function updateFrame() {
 | 
				
			||||||
	renderTime();
 | 
						renderTime();
 | 
				
			||||||
	updateData();
 | 
						updateData();
 | 
				
			||||||
	updatePosition();
 | 
						updatePosition();
 | 
				
			||||||
| 
						 | 
					@ -155,6 +188,7 @@ function updateData() {
 | 
				
			||||||
		var timeId = time2index[Math.floor(currentTime)];
 | 
							var timeId = time2index[Math.floor(currentTime)];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		var point = undefined;
 | 
							var point = undefined;
 | 
				
			||||||
 | 
							var pointBefore = undefined;
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		var t0 = data.times[timeId];   if (isNaN(t0)) t0 = 0;
 | 
							var t0 = data.times[timeId];   if (isNaN(t0)) t0 = 0;
 | 
				
			||||||
		var t1 = data.times[timeId+1]; if (isNaN(t1)) t1 = 1e10;
 | 
							var t1 = data.times[timeId+1]; if (isNaN(t1)) t1 = 1e10;
 | 
				
			||||||
| 
						 | 
					@ -162,24 +196,34 @@ function updateData() {
 | 
				
			||||||
		var offset = (currentTime-t0)/(t1-t0);
 | 
							var offset = (currentTime-t0)/(t1-t0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (offset < random[index]) {
 | 
							if (offset < random[index]) {
 | 
				
			||||||
			point = times[timeId-1];
 | 
								pointBefore = times[timeId-2];
 | 
				
			||||||
 | 
								point       = times[timeId-1];
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
			point = times[timeId];
 | 
								pointBefore = times[timeId-1];
 | 
				
			||||||
 | 
								point       = times[timeId];
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (!valid(pointBefore)) pointBefore = undefined;
 | 
				
			||||||
 | 
							if (!valid(point)) point = undefined;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		var client = clients[index];
 | 
							var client = clients[index];
 | 
				
			||||||
		if (client.point != point) {
 | 
							if (client.point != point) {
 | 
				
			||||||
			if (valid(point)) {
 | 
								if (point !== undefined) {
 | 
				
			||||||
				client.x0 = data.points[point].x*width;
 | 
									client.x0 = data.points[point].x*width;
 | 
				
			||||||
				client.y0 = data.points[point].y*height;
 | 
									client.y0 = data.points[point].y*height;
 | 
				
			||||||
				client.r0 = 1;
 | 
									client.r0 = 1;
 | 
				
			||||||
				if (!valid(client.point)) client.x = undefined;
 | 
									if (client.point === undefined) client.x = undefined;
 | 
				
			||||||
			} else {
 | 
								} else {
 | 
				
			||||||
				client.r0 = 0;
 | 
									client.r0 = 0;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			client.point = point;
 | 
								client.point = point;
 | 
				
			||||||
			client.lastEvent = currentTime;
 | 
								client.lastEvent = currentTime;
 | 
				
			||||||
			client.settled = false;
 | 
								client.settled = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if (mouseDrag) {
 | 
				
			||||||
 | 
									client.x = undefined;
 | 
				
			||||||
 | 
									client.y = client.y0;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	});
 | 
						});
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -345,7 +389,7 @@ function renderCanvas() {
 | 
				
			||||||
			var dy = client.y - client.yo;
 | 
								var dy = client.y - client.yo;
 | 
				
			||||||
			var r = Math.sqrt(dx*dx + dy*dy);
 | 
								var r = Math.sqrt(dx*dx + dy*dy);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			if (r > 1) {
 | 
								if ((r > 1) && (!client.settled)) {
 | 
				
			||||||
				var a = Math.min(Math.pow(1/r, 0.7), 1);
 | 
									var a = Math.min(Math.pow(1/r, 0.7), 1);
 | 
				
			||||||
				context.strokeStyle = 'rgba(0,0,0,'+a+')';
 | 
									context.strokeStyle = 'rgba(0,0,0,'+a+')';
 | 
				
			||||||
				context.lineWidth = client.r*2*radius;
 | 
									context.lineWidth = client.r*2*radius;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue