comparison mcserver/static/app.js @ 17:49cfd3ad1fe7

update safari
author mgeorgi
date Fri, 22 Jun 2012 15:01:16 +0100
parents 2c3fe4b24640
children 9d57fcc848c0
comparison
equal deleted inserted replaced
16:43c9011caff3 17:49cfd3ad1fe7
1 var Application = { 1 var Application = {
2 moods: [
3 ['power',0.69,0.71,0.79,1],
4 ['bright',0.81,0.55,0.67,2],
5 ['brutal',0.23,0.7,0.45,3],
6 ['confused',0.28,0.63,0.41,4],
7 ['rock',0.57,0.44,0.52,5],
8 ['serious',0.51,0.38,0.52,6],
9 ['relaxed',0.75,0.17,0.57,7],
10 ['calm',0.72,0.33,0.67,8],
11 ['dark',0.46,0.41,0.48,9],
12 ['dirty',0.26,0.49,0.46,10],
13 ['energy',0.78,0.74,0.74,11],
14 ['fun',0.92,0.78,0.73,12],
15 ['aggressive',0.51,0.6,0.57,13],
16 ['scary',0.28,0.71,0.33,14],
17 ['positive',0.88,0.57,0.65,15],
18 ['sad',0.08,0.39,0.31,16]
19 ],
20
2 init: function() { 21 init: function() {
3 this.canvas = document.getElementById('canvas'); 22 this.canvas = document.getElementById('canvas');
4 this.marker = document.getElementById('marker');
5 this.label = document.getElementById('label'); 23 this.label = document.getElementById('label');
24 this.draw();
6 25
7 this.canvas.addEventListener('click', this.onMouseUp.bind(this)); 26 this.canvas.addEventListener('click', this.onMouseUp.bind(this));
8
9 this.request("/moodconductor/moods.csv", this.loadMoods.bind(this));
10 this.draw();
11 }, 27 },
12 28
13 tl: { r: 200, g: 0, b: 0 }, 29 tl: { r: 200, g: 0, b: 0 },
14 tr: { r: 200, g: 150, b: 0 }, 30 tr: { r: 200, g: 150, b: 0 },
15 bl: { r: 0, g: 50, b: 100 }, 31 bl: { r: 0, g: 50, b: 100 },
78 ctx.beginPath(); 94 ctx.beginPath();
79 ctx.arc(this.marker.x, this.marker.y, 20, 0, Math.PI*2, true); 95 ctx.arc(this.marker.x, this.marker.y, 20, 0, Math.PI*2, true);
80 ctx.fill(); 96 ctx.fill();
81 } 97 }
82 }, 98 },
83
84 loadMoods: function(text) {
85 this.moods = [];
86
87 var lines = text.split("\n");
88
89 for (var i = 1; i < lines.length; i++) {
90 var row = lines[i].split(",");
91 var mood = {
92 label: row[0],
93 val: Number(row[1]),
94 aro: Number(row[2]),
95 dom: Number(row[3])
96 };
97 this.moods.push(mood);
98 }
99 },
100 99
101 request: function(url, callback) { 100 request: function(url, callback) {
102 var request = new XMLHttpRequest(); 101 var request = new XMLHttpRequest();
103 request.onreadystatechange = function() { 102 request.onreadystatechange = function() {
104 if (callback) { 103 if (callback) {
129 y: event.pageY 128 y: event.pageY
130 }; 129 };
131 130
132 var x = event.pageX / 320; 131 var x = event.pageX / 320;
133 var y = 1 - event.pageY / 320; 132 var y = 1 - event.pageY / 320;
134
135 var mood = this.findMood(x, y);
136 133
137 this.label.innerHTML = mood.label; 134 this.label.innerHTML = this.findMood(x, y);
138 this.mood = mood;
139 }, 135 },
140 136
141 findMood: function(x, y) { 137 findMood: function(x, y) {
142 var distance = 1; 138 var distance = 1;
143 var index = null; 139 var index = null;
144 140
145 for (var i = 0; i < this.moods.length; i++) { 141 for (var i = 0; i < this.moods.length; i++) {
146 var mood = this.moods[i]; 142 var mood = this.moods[i];
147 var dx = Math.abs(mood.val - x); 143 var dx = Math.abs(mood[1] - x);
148 var dy = Math.abs(mood.aro - y); 144 var dy = Math.abs(mood[2] - y);
149 var d = Math.sqrt(dx * dx + dy * dy); 145 var d = Math.sqrt(dx * dx + dy * dy);
150 146
151 if (d < distance) { 147 if (d < distance) {
152 distance = d; 148 distance = d;
153 index = i; 149 index = i;
154 } 150 }
155 } 151 }
156 152
157 return this.moods[index]; 153 return this.moods[index][0];
158 } 154 }
159 }; 155 };