comparison mcserver/static/app.js~ @ 0:89a05584e39e

initial commit of mood conductor stuff
author gyorgyf
date Sat, 16 Jun 2012 20:31:41 +0100
parents
children 9d2f4e6a3f36
comparison
equal deleted inserted replaced
-1:000000000000 0:89a05584e39e
1 var Application = {
2 init: function() {
3 this.canvas = document.getElementById('canvas');
4 this.marker = document.getElementById('marker');
5 this.label = document.getElementById('label');
6
7 this.canvas.addEventListener('mousedown', this.onMouseDown.bind(this));
8 this.canvas.addEventListener('mousemove', this.onMouseMove.bind(this));
9 this.canvas.addEventListener('mouseup', this.onMouseUp.bind(this));
10
11 this.request("/moods.csv", this.loadCSV.bind(this));
12 },
13
14 loadCSV: function(text) {
15 this.moods = [];
16
17 var lines = text.split("\n");
18
19 for (var i = 1; i < lines.length; i++) {
20 var row = lines[i].split(",");
21 this.moods.push({
22 label: row[1],
23 x: Number(row[3]),
24 y: Number(row[5])
25 });
26 }
27 },
28
29 request: function(url, callback) {
30 var request = new XMLHttpRequest();
31 request.onreadystatechange = function() {
32 callback(request.responseText);
33 }.bind(this);
34 request.open("GET", url);
35 request.send(null);
36 },
37
38 onMouseDown: function(event) {
39 this.mouseDown = true;
40 this.setMarker(event.pageX, event.pageY);
41 },
42
43 onMouseMove: function(event) {
44 if (this.mouseDown) {
45 this.setMarker(event.pageX, event.pageY);
46 }
47 },
48
49 onMouseUp: function(event) {
50 this.mouseDown = false;
51 this.setMarker(event.pageX, event.pageY);
52 },
53
54 setMarker: function(x, y) {
55 this.marker.style.left = x + 'px';
56 this.marker.style.top = y + 'px';
57
58 var _x = x / 480;
59 var _y = y / 960;
60 var match = {
61 dx: 1,
62 dy: 1,
63 index: null
64 };
65
66 for (var i = 0; i < this.moods.length; i++) {
67 var mood = this.moods[i];
68 var dx = Math.abs(mood.x - _x);
69 var dy = Math.abs(mood.y - _y);
70
71 if (dx < match.dx && dy < match.dy) {
72 match.dx = dx;
73 match.dy = dy;
74 match.index = i;
75 }
76 }
77
78 this.label.innerHTML = this.moods[match.index].label;
79 }
80 };