Mercurial > hg > mood-conductor
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; |