comparison mcserver/static/app.js~ @ 23:9d57fcc848c0

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