comparison mcserver/static/app.js @ 11:2c3fe4b24640

update python static folder
author mgeorgi
date Fri, 22 Jun 2012 11:24:19 +0100
parents 180274c3b48a
children 49cfd3ad1fe7
comparison
equal deleted inserted replaced
10:63cc59d5b665 11:2c3fe4b24640
2 init: function() { 2 init: function() {
3 this.canvas = document.getElementById('canvas'); 3 this.canvas = document.getElementById('canvas');
4 this.marker = document.getElementById('marker'); 4 this.marker = document.getElementById('marker');
5 this.label = document.getElementById('label'); 5 this.label = document.getElementById('label');
6 6
7 this.canvas.addEventListener('mousedown', this.onMouseDown.bind(this)); 7 this.canvas.addEventListener('click', this.onMouseUp.bind(this));
8 this.canvas.addEventListener('mousemove', this.onMouseMove.bind(this));
9 this.canvas.addEventListener('mouseup', this.onMouseUp.bind(this));
10 8
11 this.request("/moods.csv", this.loadMoods.bind(this)); 9 this.request("/moodconductor/moods.csv", this.loadMoods.bind(this));
12 this.background(); 10 this.draw();
13 }, 11 },
14 12
15 tl: { r: 200, g: 0, b: 0 }, 13 tl: { r: 200, g: 0, b: 0 },
16 tr: { r: 200, g: 150, b: 0 }, 14 tr: { r: 200, g: 150, b: 0 },
17 bl: { r: 0, g: 50, b: 100 }, 15 bl: { r: 0, g: 50, b: 100 },
23 g: Math.floor(a.g + (b.g - a.g) * x), 21 g: Math.floor(a.g + (b.g - a.g) * x),
24 b: Math.floor(a.b + (b.b - a.b) * x) 22 b: Math.floor(a.b + (b.b - a.b) * x)
25 }; 23 };
26 }, 24 },
27 25
28 background: function() { 26 draw: function() {
29 var step = 20; 27 var step = 20;
30 var ctx = this.canvas.getContext("2d"); 28 var ctx = this.canvas.getContext("2d");
31 ctx.clearRect(0, 0, 320, 320); 29 ctx.clearRect(0, 0, 320, 320);
32 30
33 for (var y = 0; y < 320; y += step) { 31 for (var y = 0; y < 320; y += step) {
37 var color = this.interpolateColor(left, right, x / 320); 35 var color = this.interpolateColor(left, right, x / 320);
38 ctx.fillStyle = "rgb(" + color.r + "," + color.g + "," + color.b + ")"; 36 ctx.fillStyle = "rgb(" + color.r + "," + color.g + "," + color.b + ")";
39 ctx.fillRect(x, y, step, step); 37 ctx.fillRect(x, y, step, step);
40 } 38 }
41 } 39 }
40
41 ctx.beginPath();
42 ctx.strokeStyle = "rgb(0,0,0)"; 42 ctx.strokeStyle = "rgb(0,0,0)";
43 ctx.moveTo(0, 160); 43 ctx.moveTo(0, 160);
44 ctx.lineTo(320, 160); 44 ctx.lineTo(320, 160);
45 ctx.stroke(); 45 ctx.stroke();
46 46
70 ctx.translate(158, 120); 70 ctx.translate(158, 120);
71 ctx.rotate(Math.PI * 1.5); 71 ctx.rotate(Math.PI * 1.5);
72 ctx.font = "16px Arial"; 72 ctx.font = "16px Arial";
73 ctx.fillText("Arousal", 0, 0); 73 ctx.fillText("Arousal", 0, 0);
74 ctx.restore(); 74 ctx.restore();
75
76 if (this.marker) {
77 ctx.fillStyle = "rgba(0, 0, 0, 0.5)";
78 ctx.beginPath();
79 ctx.arc(this.marker.x, this.marker.y, 20, 0, Math.PI*2, true);
80 ctx.fill();
81 }
75 }, 82 },
76 83
77 loadMoods: function(text) { 84 loadMoods: function(text) {
78 this.moods = []; 85 this.moods = [];
79 86
100 }.bind(this); 107 }.bind(this);
101 request.open("GET", url); 108 request.open("GET", url);
102 request.send(null); 109 request.send(null);
103 }, 110 },
104 111
105 onMouseDown: function(event) { 112 onMouseUp: function(event) {
106 this.mouseDown = true; 113 event.preventDefault();
107 this.setMarker(event.pageX, event.pageY); 114 this.setMarker(event);
115 this.sendPosition(event);
116 this.draw();
108 }, 117 },
109 118
110 onMouseMove: function(event) { 119 sendPosition: function(event) {
111 if (this.mouseDown) { 120 var x = event.pageX / 320;
112 this.setMarker(event.pageX, event.pageY); 121 var y = 1 - event.pageY / 320;
113 } 122
123 this.request("/moodconductor/mood?x=" + x + "&y=" + y);
114 }, 124 },
115 125
116 onMouseUp: function(event) { 126 setMarker: function(event) {
117 this.mouseDown = false; 127 this.marker = {
118 this.setMarker(event.pageX, event.pageY); 128 x: event.pageX,
119 this.sendPosition(event.pageX, event.pageY); 129 y: event.pageY
120 }, 130 };
121 131
122 sendPosition: function(pageX, pageY) { 132 var x = event.pageX / 320;
123 var x = pageX / 320; 133 var y = 1 - event.pageY / 320;
124 var y = 1 - pageY / 320;
125 this.request("/mood?x=" + x + "&y=" + y);
126 },
127
128 setMarker: function(pageX, pageY) {
129 this.background();
130 this.drawMarker(pageX, pageY);
131
132 var x = pageX / 320;
133 var y = 1 - pageY / 320;
134 134
135 var mood = this.findMood(x, y); 135 var mood = this.findMood(x, y);
136 136
137 this.label.innerHTML = mood.label; 137 this.label.innerHTML = mood.label;
138 this.mood = mood; 138 this.mood = mood;
139 },
140
141 drawMarker: function(x, y) {
142 var ctx = this.canvas.getContext("2d");
143 ctx.fillStyle = "rgba(0, 0, 0, 0.5)";
144 ctx.beginPath();
145 ctx.arc(x, y, 20, 0, Math.PI*2, true);
146 ctx.fill();
147 }, 139 },
148 140
149 findMood: function(x, y) { 141 findMood: function(x, y) {
150 var distance = 1; 142 var distance = 1;
151 var index = null; 143 var index = null;