social_cheesecake 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/app/assets/javascripts/kinetic.js +812 -432
- data/app/assets/javascripts/socialcheesecake/_header.js +1 -1
- data/app/assets/javascripts/socialcheesecake/actor.js +57 -32
- data/app/assets/javascripts/socialcheesecake/cheesecake.js +257 -280
- data/app/assets/javascripts/socialcheesecake/grid.js +168 -56
- data/app/assets/javascripts/socialcheesecake/sector.js +124 -70
- data/app/assets/javascripts/socialcheesecake/text.js +9 -4
- data/lib/social_cheesecake/version.rb +1 -1
- data/test/dummy/app/assets/images/images/ui-bg_diagonals-medium_20_d34d17_40x40.png +0 -0
- data/test/dummy/app/assets/images/images/ui-bg_flat_30_cccccc_40x100.png +0 -0
- data/test/dummy/app/assets/images/images/ui-bg_flat_50_5c5c5c_40x100.png +0 -0
- data/test/dummy/app/assets/images/images/ui-bg_gloss-wave_45_817865_500x100.png +0 -0
- data/test/dummy/app/assets/images/images/ui-bg_gloss-wave_60_fece2f_500x100.png +0 -0
- data/test/dummy/app/assets/images/images/ui-bg_gloss-wave_70_ffdd57_500x100.png +0 -0
- data/test/dummy/app/assets/images/images/ui-bg_gloss-wave_90_fff9e5_500x100.png +0 -0
- data/test/dummy/app/assets/images/images/ui-bg_highlight-soft_100_feeebd_1x100.png +0 -0
- data/test/dummy/app/assets/images/images/ui-bg_inset-soft_30_ffffff_1x100.png +0 -0
- data/test/dummy/app/assets/images/images/ui-icons_3d3d3d_256x240.png +0 -0
- data/test/dummy/app/assets/images/images/ui-icons_bd7b00_256x240.png +0 -0
- data/test/dummy/app/assets/images/images/ui-icons_d19405_256x240.png +0 -0
- data/test/dummy/app/assets/images/images/ui-icons_eb990f_256x240.png +0 -0
- data/test/dummy/app/assets/images/images/ui-icons_ed9f26_256x240.png +0 -0
- data/test/dummy/app/assets/images/images/ui-icons_fadc7a_256x240.png +0 -0
- data/test/dummy/app/assets/images/images/ui-icons_ffe180_256x240.png +0 -0
- data/test/dummy/app/assets/images/socialcheesecake_background.png +0 -0
- data/test/dummy/app/assets/images/soialcheesecake_icon.png +0 -0
- data/test/dummy/app/assets/images/soialcheesecake_icon_back.png +0 -0
- data/test/dummy/app/assets/images/under-construction.png +0 -0
- data/test/dummy/app/assets/javascripts/application.js +1 -0
- data/test/dummy/app/assets/javascripts/main.js +352 -0
- data/test/dummy/app/assets/stylesheets/jquery-ui-1.8.17.custom.css +565 -0
- data/test/dummy/app/assets/stylesheets/style.css +251 -0
- data/test/dummy/public/index.html +149 -119
- data/test/dummy/vendor/assets/javascripts/jquery-ui.js +356 -0
- metadata +29 -4
@@ -8,10 +8,13 @@ var socialCheesecake = socialCheesecake || {};
|
|
8
8
|
this.parent = settings.parent;
|
9
9
|
this.id = settings.grid_id;
|
10
10
|
this.divIdPrefix = settings.divIdPrefix;
|
11
|
+
this.visibleActors = [];
|
11
12
|
}
|
12
13
|
|
13
14
|
socialCheesecake.Grid.prototype.addActor = function (actor_info, subsector) {
|
14
15
|
var actors = this.actors;
|
16
|
+
var visibleActors = this.visibleActors;
|
17
|
+
var maxVisibleActors = socialCheesecake.Cheesecake.getMaxVisibleActors();
|
15
18
|
var actor;
|
16
19
|
|
17
20
|
//Check if the actor is already in the array
|
@@ -33,6 +36,10 @@ var socialCheesecake = socialCheesecake || {};
|
|
33
36
|
actor_info.parent = subsector;
|
34
37
|
actor = new socialCheesecake.Actor(actor_info);
|
35
38
|
actors.push(actor);
|
39
|
+
if(actors.length <= maxVisibleActors ){
|
40
|
+
actor.show();
|
41
|
+
visibleActors.push(actor);
|
42
|
+
}
|
36
43
|
}
|
37
44
|
return actor;
|
38
45
|
}
|
@@ -57,56 +64,114 @@ var socialCheesecake = socialCheesecake || {};
|
|
57
64
|
}
|
58
65
|
|
59
66
|
socialCheesecake.Grid.prototype.getSelectedActors = function(){
|
60
|
-
var actors = this.
|
67
|
+
var actors = this.visibleActors;
|
61
68
|
var selectedActors = [];
|
62
69
|
for (var i in actors){
|
63
|
-
if(actors[i].isSelected()) selectedActors.push(actors[i]);
|
70
|
+
if(actors[i] && actors[i].isSelected()) selectedActors.push(actors[i]);
|
64
71
|
}
|
65
72
|
return selectedActors;
|
66
73
|
}
|
67
74
|
|
68
75
|
socialCheesecake.Grid.prototype.getShownActors = function(){
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
76
|
+
return this.visibleActors;
|
77
|
+
}
|
78
|
+
|
79
|
+
socialCheesecake.Grid.prototype.select = function (actor_ids) {
|
80
|
+
var actor;
|
81
|
+
|
82
|
+
if (actor_ids instanceof Array) {
|
83
|
+
for(var i in actor_ids){
|
84
|
+
actor = actor_ids[i];
|
85
|
+
if (actor){
|
86
|
+
if(!(actor instanceof socialCheesecake.Actor)){
|
87
|
+
actor = this.getActor(actor);
|
88
|
+
}
|
89
|
+
actor.select();
|
90
|
+
}
|
91
|
+
}
|
92
|
+
} else {
|
93
|
+
actor = actor_ids;
|
94
|
+
if(!(actor_ids instanceof socialCheesecake.Actor)){
|
95
|
+
actor = this.getActor(actor_ids);
|
96
|
+
}
|
97
|
+
actor.select();
|
73
98
|
}
|
74
|
-
|
99
|
+
}
|
100
|
+
|
101
|
+
socialCheesecake.Grid.prototype.selectAll = function () {
|
102
|
+
this.select(this.visibleActors);
|
103
|
+
}
|
104
|
+
|
105
|
+
socialCheesecake.Grid.prototype.unselect = function (actor_ids) {
|
106
|
+
var actor;
|
107
|
+
|
108
|
+
if (actor_ids instanceof Array) {
|
109
|
+
for(var i in actor_ids){
|
110
|
+
actor = actor_ids[i];
|
111
|
+
if (actor){
|
112
|
+
if(!(actor instanceof socialCheesecake.Actor)){
|
113
|
+
actor = this.getActor(actor);
|
114
|
+
}
|
115
|
+
actor.unselect();
|
116
|
+
}
|
117
|
+
}
|
118
|
+
} else {
|
119
|
+
actor = actor_ids;
|
120
|
+
if(!(actor_ids instanceof socialCheesecake.Actor)){
|
121
|
+
actor = this.getActor(actor_ids);
|
122
|
+
}
|
123
|
+
actor.unselect();
|
124
|
+
}
|
125
|
+
}
|
126
|
+
|
127
|
+
socialCheesecake.Grid.prototype.unselectAll = function () {
|
128
|
+
this.unselect(this.visibleActors);
|
75
129
|
}
|
76
130
|
|
77
131
|
socialCheesecake.Grid.prototype.focus = function (actor_ids) {
|
132
|
+
var actor;
|
133
|
+
|
78
134
|
if (actor_ids instanceof Array) {
|
79
135
|
for(var i in actor_ids){
|
80
|
-
|
81
|
-
if(actor
|
136
|
+
actor = actor_ids[i];
|
137
|
+
if (actor){
|
138
|
+
if(!(actor instanceof socialCheesecake.Actor)){
|
139
|
+
actor = this.getActor(actor);
|
140
|
+
}
|
82
141
|
actor.focus();
|
83
|
-
}
|
84
|
-
this.getActor(actor).focus();
|
85
|
-
}
|
142
|
+
}
|
86
143
|
}
|
87
144
|
} else {
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
145
|
+
actor = actor_ids;
|
146
|
+
if(!(actor_ids instanceof socialCheesecake.Actor)){
|
147
|
+
actor = this.getActor(actor_ids);
|
148
|
+
}
|
149
|
+
actor.focus();
|
93
150
|
}
|
94
151
|
}
|
95
152
|
|
96
153
|
socialCheesecake.Grid.prototype.focusAll = function () {
|
97
|
-
this.focus(this.
|
154
|
+
this.focus(this.visibleActors);
|
98
155
|
}
|
99
156
|
|
100
157
|
socialCheesecake.Grid.prototype.hide = function (actor_ids, ignoreSelected) {
|
101
158
|
var actor;
|
159
|
+
var visibleActors = this.visibleActors;
|
160
|
+
var visibleActorIndex = -1;
|
161
|
+
|
102
162
|
if (actor_ids instanceof Array) {
|
103
163
|
for(var i in actor_ids){
|
104
164
|
actor = actor_ids[i];
|
105
|
-
if (
|
106
|
-
actor
|
165
|
+
if (actor){
|
166
|
+
if (!(actor instanceof socialCheesecake.Actor)){
|
167
|
+
actor = this.getActor(actor);
|
168
|
+
}
|
169
|
+
if((!actor.isSelected())||(ignoreSelected)){
|
170
|
+
actor.hide();
|
171
|
+
visibleActors[visibleActors.indexOf(actor)] = false;
|
172
|
+
}
|
107
173
|
}
|
108
|
-
|
109
|
-
}
|
174
|
+
}
|
110
175
|
} else {
|
111
176
|
if(actor_ids instanceof socialCheesecake.Actor){
|
112
177
|
actor = actor_ids;
|
@@ -114,29 +179,47 @@ var socialCheesecake = socialCheesecake || {};
|
|
114
179
|
actor = this.getActor(actor_ids);
|
115
180
|
}
|
116
181
|
actor.hide();
|
182
|
+
visibleActors[visibleActors.indexOf(actor)] = false;
|
183
|
+
}
|
184
|
+
visibleActorIndex = visibleActors.indexOf(false);
|
185
|
+
while(visibleActorIndex >= 0){
|
186
|
+
visibleActors.splice(visibleActorIndex,1);
|
187
|
+
visibleActorIndex = visibleActors.indexOf(false);
|
117
188
|
}
|
118
189
|
}
|
119
190
|
|
120
191
|
socialCheesecake.Grid.prototype.hideAll = function () {
|
121
|
-
this.hide(this.
|
192
|
+
this.hide(this.visibleActors);
|
122
193
|
}
|
123
194
|
|
124
195
|
socialCheesecake.Grid.prototype.show = function (actor_ids) {
|
196
|
+
var actor;
|
197
|
+
var visibleActors = this.visibleActors;
|
198
|
+
var maxActors = Math.min(actor_ids.length, socialCheesecake.Cheesecake.getMaxVisibleActors());
|
199
|
+
|
125
200
|
if (actor_ids instanceof Array) {
|
126
|
-
for(var i
|
127
|
-
|
128
|
-
|
129
|
-
actor.
|
130
|
-
|
131
|
-
|
132
|
-
|
201
|
+
for(var i = 0; visibleActors.length < maxActors ; i++){
|
202
|
+
actor = actor_ids[i];
|
203
|
+
if (actor){
|
204
|
+
if (!(actor instanceof socialCheesecake.Actor)){
|
205
|
+
actor = this.getActor(actor);
|
206
|
+
}
|
207
|
+
if((!actor.isSelected())||(ignoreSelected)){
|
208
|
+
actor.show();
|
209
|
+
if(visibleActors.indexOf(actor) == -1) visibleActors.push(actor);
|
210
|
+
}
|
211
|
+
}
|
133
212
|
}
|
134
|
-
} else {
|
213
|
+
} else if(visibleActors.length < maxActors){
|
135
214
|
if(actor_ids instanceof socialCheesecake.Actor){
|
136
|
-
actor_ids
|
215
|
+
actor = actor_ids;
|
137
216
|
}else{
|
138
|
-
this.getActor(actor_ids)
|
139
|
-
}
|
217
|
+
actor = this.getActor(actor_ids);
|
218
|
+
}
|
219
|
+
if((!actor.isSelected())||(ignoreSelected)){
|
220
|
+
actor.show();
|
221
|
+
if(visibleActors.indexOf(actor) == -1) visibleActors.push(actor);
|
222
|
+
}
|
140
223
|
}
|
141
224
|
}
|
142
225
|
|
@@ -145,37 +228,48 @@ var socialCheesecake = socialCheesecake || {};
|
|
145
228
|
}
|
146
229
|
|
147
230
|
socialCheesecake.Grid.prototype.unfocus = function (actor_ids) {
|
231
|
+
var actor;
|
232
|
+
|
148
233
|
if (actor_ids instanceof Array) {
|
149
234
|
for(var i in actor_ids){
|
150
|
-
|
151
|
-
|
235
|
+
actor = actor_ids[i];
|
236
|
+
if (actor){
|
237
|
+
if(!(actor instanceof socialCheesecake.Actor)){
|
238
|
+
actor = this.getActor(actor);
|
239
|
+
}
|
152
240
|
actor.unfocus();
|
153
|
-
}else{
|
154
|
-
this.getActor(actor).unfocus();
|
155
241
|
}
|
156
242
|
}
|
157
243
|
} else {
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
244
|
+
actor = actor_ids;
|
245
|
+
if(!(actor_ids instanceof socialCheesecake.Actor)){
|
246
|
+
actor = this.getActor(actor_ids);
|
247
|
+
}
|
248
|
+
actor.unfocus();
|
163
249
|
}
|
164
250
|
}
|
165
251
|
|
166
252
|
socialCheesecake.Grid.prototype.unfocusAll = function () {
|
167
|
-
this.unfocus(this.
|
253
|
+
this.unfocus(this.visibleActors);
|
168
254
|
}
|
169
255
|
|
170
256
|
socialCheesecake.Grid.prototype.fadeOut = function (actor_ids, time, modifyDisplay, ignoreSelected) {
|
171
257
|
var actor;
|
258
|
+
var visibleActors = this.visibleActors;
|
259
|
+
var visibleActorIndex = -1;
|
260
|
+
|
172
261
|
if (actor_ids instanceof Array) {
|
173
262
|
for(var i in actor_ids){
|
174
263
|
actor = actor_ids[i];
|
175
|
-
if (
|
176
|
-
actor
|
177
|
-
|
178
|
-
|
264
|
+
if (actor){
|
265
|
+
if (!(actor instanceof socialCheesecake.Actor)){
|
266
|
+
actor = this.getActor(actor);
|
267
|
+
}
|
268
|
+
if((!actor.isSelected())||(ignoreSelected)){
|
269
|
+
actor.fadeOut(time, modifyDisplay);
|
270
|
+
visibleActors[visibleActors.indexOf(actor)] = false;
|
271
|
+
}
|
272
|
+
}
|
179
273
|
}
|
180
274
|
} else {
|
181
275
|
if(actor_ids instanceof socialCheesecake.Actor){
|
@@ -183,31 +277,49 @@ var socialCheesecake = socialCheesecake || {};
|
|
183
277
|
}else{
|
184
278
|
actor = this.getActor(actor_ids);
|
185
279
|
}
|
186
|
-
if((!actor.isSelected())||(ignoreSelected))
|
280
|
+
if((!actor.isSelected())||(ignoreSelected)){
|
281
|
+
actor.fadeOut(time, modifyDisplay);
|
282
|
+
visibleActors[visibleActors.indexOf(actor)] = false;
|
283
|
+
}
|
284
|
+
}
|
285
|
+
visibleActorIndex = visibleActors.indexOf(false);
|
286
|
+
while(visibleActorIndex >= 0){
|
287
|
+
visibleActors.splice(visibleActorIndex,1);
|
288
|
+
visibleActorIndex = visibleActors.indexOf(false);
|
187
289
|
}
|
188
290
|
}
|
189
291
|
|
190
292
|
socialCheesecake.Grid.prototype.fadeOutAll = function (time, modifyDisplay) {
|
191
|
-
this.fadeOut(this.
|
293
|
+
this.fadeOut(this.visibleActors, time, modifyDisplay);
|
192
294
|
}
|
193
295
|
|
194
296
|
socialCheesecake.Grid.prototype.fadeIn = function (actor_ids, time, modifyDisplay, ignoreSelected) {
|
195
297
|
var actor;
|
298
|
+
var visibleActors = this.visibleActors;
|
299
|
+
var maxActors = Math.min(actor_ids.length, socialCheesecake.Cheesecake.getMaxVisibleActors());
|
196
300
|
if (actor_ids instanceof Array) {
|
197
|
-
for(var i
|
301
|
+
for(var i = 0; visibleActors.length < maxActors ; i++){
|
198
302
|
actor = actor_ids[i];
|
199
|
-
if (
|
200
|
-
actor
|
303
|
+
if (actor){
|
304
|
+
if (!(actor instanceof socialCheesecake.Actor)){
|
305
|
+
actor = this.getActor(actor);
|
306
|
+
}
|
307
|
+
if((!actor.isSelected())||(ignoreSelected)){
|
308
|
+
actor.fadeIn(time, modifyDisplay);
|
309
|
+
if(visibleActors.indexOf(actor) == -1) visibleActors.push(actor);
|
310
|
+
}
|
201
311
|
}
|
202
|
-
if((!actor.isSelected())||(ignoreSelected)) actor.fadeIn(time, modifyDisplay);
|
203
312
|
}
|
204
|
-
} else {
|
313
|
+
} else if(visibleActors.length < maxActors){
|
205
314
|
if(actor_ids instanceof socialCheesecake.Actor){
|
206
315
|
actor = actor_ids;
|
207
316
|
}else{
|
208
317
|
actor = this.getActor(actor_ids);
|
209
318
|
}
|
210
|
-
if((!actor.isSelected())||(ignoreSelected))
|
319
|
+
if((!actor.isSelected())||(ignoreSelected)){
|
320
|
+
actor.fadeIn(time, modifyDisplay);
|
321
|
+
if(visibleActors.indexOf(actor) == -1) visibleActors.push(actor);
|
322
|
+
}
|
211
323
|
}
|
212
324
|
}
|
213
325
|
|
@@ -8,12 +8,13 @@ var socialCheesecake = socialCheesecake || {};
|
|
8
8
|
delta : Math.PI /2 ,
|
9
9
|
phi : 0,
|
10
10
|
label : "",
|
11
|
-
color : socialCheesecake.
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
11
|
+
color : socialCheesecake.colors.normalSector.background,
|
12
|
+
fontColor : socialCheesecake.colors.normalSector.font,
|
13
|
+
borderColor : socialCheesecake.colors.normalSector.border,
|
14
|
+
mouseover : { color : socialCheesecake.colors.normalSector.hover },
|
15
|
+
mouseout : { color : socialCheesecake.colors.normalSector.background },
|
16
|
+
mouseup : { color : socialCheesecake.colors.normalSector.background },
|
17
|
+
mousedown : { color : socialCheesecake.colors.normalSector.highlight },
|
17
18
|
auxiliar : false
|
18
19
|
}
|
19
20
|
for(var property in defaultSettings) {
|
@@ -37,7 +38,8 @@ var socialCheesecake = socialCheesecake || {};
|
|
37
38
|
this.delta = settings.delta;
|
38
39
|
this.label = settings.label;
|
39
40
|
this.color = settings.color;
|
40
|
-
this.
|
41
|
+
this.fontColor = settings.fontColor;
|
42
|
+
this.borderColor = settings.borderColor;
|
41
43
|
this.mouseover = settings.mouseover;
|
42
44
|
this.mouseup = settings.mouseup;
|
43
45
|
this.mouseout = settings.mouseout;
|
@@ -65,27 +67,21 @@ var socialCheesecake = socialCheesecake || {};
|
|
65
67
|
rIn : rInSubsector,
|
66
68
|
rOut : rOutSubsector,
|
67
69
|
actors : settings.subsectors[i].actors,
|
68
|
-
|
70
|
+
color : socialCheesecake.colors.normalSector.background,
|
71
|
+
borderColor : socialCheesecake.colors.normalSector.border,
|
72
|
+
fontColor : socialCheesecake.colors.normalSector.font,
|
73
|
+
mouseover : {
|
74
|
+
color : socialCheesecake.colors.normalSector.hover,
|
69
75
|
callback : function(subsector) {
|
70
|
-
/* FIX FOR EXECUTING MOUSEOUT BEFORE MOUSEOVER */
|
71
|
-
for(var i in subsector.parent.subsectors){
|
72
|
-
subsector.parent.subsectors[i].getRegion().removeEventListener("mouseout");
|
73
|
-
if(subsector.parent.subsectors[i]!= subsector){
|
74
|
-
subsector.parent.subsectors[i].changeColor(subsector.parent.subsectors[i].mouseout.color);
|
75
|
-
}
|
76
|
-
}
|
77
|
-
subsector.getRegion().addEventListener("mouseout", function() {
|
78
|
-
subsector.eventHandler('mouseout');
|
79
|
-
});
|
80
|
-
/* END of FIX */
|
81
76
|
document.body.style.cursor = "pointer";
|
82
77
|
subsector.getCheesecake().grid.hideAll();
|
83
78
|
subsector.getCheesecake().grid.fadeIn(subsector.actors, 300, true);
|
84
79
|
subsector.getCheesecake().setHighlightedSector(subsector);
|
80
|
+
subsector.getCheesecake().stage.mainLayer.draw();
|
85
81
|
}
|
86
82
|
},
|
87
83
|
mouseout :{
|
88
|
-
color : socialCheesecake.
|
84
|
+
color : socialCheesecake.colors.normalSector.background,
|
89
85
|
callback : function(subsector) {
|
90
86
|
document.body.style.cursor = "default";
|
91
87
|
subsector.getCheesecake().grid.fadeIn(subsector.parent.actors, 300, true);
|
@@ -93,11 +89,13 @@ var socialCheesecake = socialCheesecake || {};
|
|
93
89
|
}
|
94
90
|
},
|
95
91
|
mousedown : {
|
92
|
+
color : socialCheesecake.colors.normalSector.highlight,
|
96
93
|
callback : function(subsector) {
|
97
94
|
var selectedActors = subsector.getCheesecake().grid.getSelectedActors();
|
98
|
-
subsector.changeMembership(selectedActors);
|
95
|
+
if(selectedActors.length > 0) subsector.changeMembership(selectedActors);
|
99
96
|
}
|
100
|
-
}
|
97
|
+
},
|
98
|
+
mouseup : {color : socialCheesecake.colors.normalSector.background}
|
101
99
|
});
|
102
100
|
rInSubsector = rOutSubsector;
|
103
101
|
this.subsectors.push(subsector);
|
@@ -111,7 +109,8 @@ var socialCheesecake = socialCheesecake || {};
|
|
111
109
|
rIn : this.rIn,
|
112
110
|
rOut : this.rOut,
|
113
111
|
color : this.color,
|
114
|
-
|
112
|
+
fontColor : this.fontColor,
|
113
|
+
borderColor : this.borderColor,
|
115
114
|
label : this.label,
|
116
115
|
mouseover : this.mouseover,
|
117
116
|
mouseout : this.mouseout,
|
@@ -132,7 +131,8 @@ var socialCheesecake = socialCheesecake || {};
|
|
132
131
|
var rIn = this.rIn;
|
133
132
|
var rOut = this.rOut;
|
134
133
|
var color = this.color;
|
135
|
-
var
|
134
|
+
var fontColor = this.fontColor;
|
135
|
+
var borderColor = this.borderColor;
|
136
136
|
var label = this.label;
|
137
137
|
var actors = this.actors;
|
138
138
|
|
@@ -146,18 +146,21 @@ var socialCheesecake = socialCheesecake || {};
|
|
146
146
|
context.fillStyle = color;
|
147
147
|
context.fill();
|
148
148
|
context.lineWidth = 2;
|
149
|
-
context.strokeStyle =
|
149
|
+
context.strokeStyle = borderColor;
|
150
150
|
context.stroke();
|
151
151
|
if((this.auxiliar)&&(label=="+")){
|
152
152
|
socialCheesecake.text.addPlusCharacter(context, x, y, 0.5*(rOut-rIn) + rIn,
|
153
|
-
|
153
|
+
phi, delta, fontColor);
|
154
|
+
}else if((this.parent.auxiliar)&&(this.parent.label=="+")){
|
155
|
+
socialCheesecake.text.writeCurvedText(label, context, x, y, 0.7*(rOut-rIn) + rIn,
|
156
|
+
phi, delta, fontColor, "newStyle");
|
154
157
|
}else{
|
155
158
|
socialCheesecake.text.writeCurvedText(label, context, x, y, 0.7*(rOut-rIn) + rIn,
|
156
|
-
|
159
|
+
phi, delta, fontColor);
|
157
160
|
}
|
158
161
|
if(!this.auxiliar)
|
159
162
|
socialCheesecake.text.writeCurvedText("(" + actors.length + ")", context, x, y,
|
160
|
-
0.55*(rOut-rIn) + rIn, phi, delta,
|
163
|
+
0.55*(rOut-rIn) + rIn, phi, delta, fontColor);
|
161
164
|
}
|
162
165
|
|
163
166
|
socialCheesecake.Sector.prototype.getRegion = function() {
|
@@ -167,16 +170,16 @@ var socialCheesecake = socialCheesecake || {};
|
|
167
170
|
var context = this.getContext();
|
168
171
|
sector._draw(context);
|
169
172
|
});
|
170
|
-
sector._region.
|
173
|
+
sector._region.on('mouseover', function() {
|
171
174
|
sector.eventHandler('mouseover');
|
172
175
|
});
|
173
|
-
sector._region.
|
176
|
+
sector._region.on('mouseout', function() {
|
174
177
|
sector.eventHandler('mouseout');
|
175
178
|
});
|
176
|
-
sector._region.
|
179
|
+
sector._region.on('mousedown', function() {
|
177
180
|
sector.eventHandler('mousedown');
|
178
181
|
});
|
179
|
-
sector._region.
|
182
|
+
sector._region.on('mouseup', function() {
|
180
183
|
sector.eventHandler('mouseup');
|
181
184
|
});
|
182
185
|
}
|
@@ -203,6 +206,7 @@ var socialCheesecake = socialCheesecake || {};
|
|
203
206
|
|
204
207
|
socialCheesecake.Sector.prototype.splitUp = function() {
|
205
208
|
var cheesecake = this.getCheesecake();
|
209
|
+
var mainLayer = cheesecake.stage.mainLayer;
|
206
210
|
var phi = this.phi;
|
207
211
|
var delta = this.delta;
|
208
212
|
var rOut = this.rOut;
|
@@ -223,9 +227,11 @@ var socialCheesecake = socialCheesecake || {};
|
|
223
227
|
label : "+",
|
224
228
|
parent : this,
|
225
229
|
auxiliar : true,
|
226
|
-
color : socialCheesecake.
|
230
|
+
color : socialCheesecake.colors.extraSector.background,
|
231
|
+
borderColor : socialCheesecake.colors.extraSector.border,
|
232
|
+
fontColor : socialCheesecake.colors.extraSector.font,
|
227
233
|
mouseover : {
|
228
|
-
color : socialCheesecake.
|
234
|
+
color : socialCheesecake.colors.extraSector.hover,
|
229
235
|
callback : function (sector){
|
230
236
|
sector.resizeWidth({
|
231
237
|
width : extraWidth*1.5,
|
@@ -235,7 +241,7 @@ var socialCheesecake = socialCheesecake || {};
|
|
235
241
|
}
|
236
242
|
},
|
237
243
|
mouseout : {
|
238
|
-
color : socialCheesecake.
|
244
|
+
color : socialCheesecake.colors.extraSector.background,
|
239
245
|
callback : function(sector){
|
240
246
|
sector.resizeWidth({
|
241
247
|
width : extraWidth,
|
@@ -244,7 +250,9 @@ var socialCheesecake = socialCheesecake || {};
|
|
244
250
|
priority : true
|
245
251
|
})
|
246
252
|
}
|
247
|
-
}
|
253
|
+
},
|
254
|
+
mousedown : { color: socialCheesecake.colors.extraSector.highlight},
|
255
|
+
mouseup : { color: socialCheesecake.colors.extraSector.background }
|
248
256
|
}
|
249
257
|
//Add sector's subsectors
|
250
258
|
for(var i in subsectors){
|
@@ -253,10 +261,10 @@ var socialCheesecake = socialCheesecake || {};
|
|
253
261
|
subsectors[i].rOut = rIn + sectorWidth;
|
254
262
|
subsectors[i].phi = phi;
|
255
263
|
subsectors[i].delta = delta;
|
256
|
-
|
264
|
+
mainLayer.add(subsectors[i].getRegion());
|
257
265
|
rIn += sectorWidth;
|
258
266
|
}
|
259
|
-
//Add extra subsectors
|
267
|
+
//Add extra subsectors
|
260
268
|
rIn = 0;
|
261
269
|
for(var i = 0; i< parts- subsectors.length; i++){
|
262
270
|
if(i == 0){
|
@@ -270,9 +278,11 @@ var socialCheesecake = socialCheesecake || {};
|
|
270
278
|
label : "+",
|
271
279
|
parent : this,
|
272
280
|
auxiliar : true,
|
273
|
-
color : socialCheesecake.
|
281
|
+
color : socialCheesecake.colors.extraSector.background,
|
282
|
+
borderColor : socialCheesecake.colors.extraSector.border,
|
283
|
+
fontColor : socialCheesecake.colors.extraSector.font,
|
274
284
|
mouseover : {
|
275
|
-
color : socialCheesecake.
|
285
|
+
color : socialCheesecake.colors.extraSector.hover,
|
276
286
|
callback : function (sector){
|
277
287
|
sector.resizeWidth({
|
278
288
|
width : extraWidth*1.5,
|
@@ -282,7 +292,7 @@ var socialCheesecake = socialCheesecake || {};
|
|
282
292
|
}
|
283
293
|
},
|
284
294
|
mouseout : {
|
285
|
-
color : socialCheesecake.
|
295
|
+
color : socialCheesecake.colors.extraSector.background,
|
286
296
|
callback : function(sector){
|
287
297
|
sector.resizeWidth({
|
288
298
|
width : extraWidth,
|
@@ -291,7 +301,9 @@ var socialCheesecake = socialCheesecake || {};
|
|
291
301
|
priority : true
|
292
302
|
})
|
293
303
|
}
|
294
|
-
}
|
304
|
+
},
|
305
|
+
mousedown : { color: socialCheesecake.colors.extraSector.highlight},
|
306
|
+
mouseup : { color: socialCheesecake.colors.extraSector.background }
|
295
307
|
}
|
296
308
|
var extraSector = new socialCheesecake.Subsector(extraSettingsFirst);
|
297
309
|
}else{
|
@@ -299,36 +311,36 @@ var socialCheesecake = socialCheesecake || {};
|
|
299
311
|
extraSettings["rOut"]= rIn + extraWidth;
|
300
312
|
var extraSector = new socialCheesecake.Subsector(extraSettings);
|
301
313
|
}
|
302
|
-
|
314
|
+
mainLayer.add(extraSector.getRegion());
|
303
315
|
this.extraSubsectors.push(extraSector);
|
304
316
|
rIn += extraWidth + sectorWidth;
|
305
317
|
}
|
318
|
+
mainLayer.draw();
|
306
319
|
}
|
307
320
|
|
308
321
|
socialCheesecake.Sector.prototype.putTogether = function() {
|
309
322
|
var cheesecake = this.getCheesecake();
|
323
|
+
var mainLayer = cheesecake.stage.mainLayer;
|
310
324
|
var sector = (this.simulate != null) ? cheesecake.sectors[this.simulate] : this;
|
311
325
|
var subsectors = sector.subsectors;
|
312
326
|
var extraSubsectors = this.extraSubsectors;
|
313
327
|
//Clear subsectors from stage
|
314
328
|
for(var i = extraSubsectors.length ; i>0 ; i--){
|
315
|
-
|
329
|
+
mainLayer.remove((extraSubsectors.pop()).getRegion());
|
316
330
|
}
|
317
331
|
for(var i in subsectors) {
|
318
|
-
|
332
|
+
mainLayer.remove(subsectors[i].getRegion());
|
319
333
|
}
|
320
334
|
}
|
321
335
|
|
322
336
|
socialCheesecake.Sector.prototype.changeColor = function(color) {
|
323
337
|
var sector = this;
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
stage.draw();
|
331
|
-
}
|
338
|
+
var stage = sector.getCheesecake().stage;
|
339
|
+
var context = stage.mainLayer.getContext();
|
340
|
+
sector.color = color;
|
341
|
+
context.restore();
|
342
|
+
context.save();
|
343
|
+
stage.draw();
|
332
344
|
}
|
333
345
|
|
334
346
|
/**
|
@@ -338,26 +350,27 @@ var socialCheesecake = socialCheesecake || {};
|
|
338
350
|
* anchor - "beginning" , "b", "B"
|
339
351
|
* "middle", "m", "M"
|
340
352
|
* "end", "e", "E"
|
353
|
+
* priority - true to terminate other resizeDelta methods running
|
354
|
+
* callback - function to execute at the end of the animation
|
341
355
|
*/
|
342
356
|
socialCheesecake.Sector.prototype.resizeDelta = function(options) {
|
343
357
|
if(!options)
|
344
358
|
throw "No arguments passed to the function";
|
345
359
|
var sector = this;
|
346
|
-
var context = sector.getRegion().layer.getContext();
|
347
360
|
var stage = sector.getCheesecake().stage;
|
361
|
+
var context = stage.mainLayer.getContext();
|
348
362
|
var currentDelta = sector.delta;
|
349
363
|
var currentPhi = sector.phi;
|
350
364
|
var step = 0.05;
|
351
365
|
var goalDelta = Math.PI / 2;
|
352
366
|
var anchor = 1;
|
367
|
+
var goOn = true;
|
368
|
+
var grow = 0;
|
353
369
|
|
354
370
|
if(options.step) step = options.step;
|
355
371
|
if(options.delta) {
|
356
372
|
goalDelta = options.delta;
|
357
373
|
}
|
358
|
-
console.log("resizing delta of sector "+ sector.label);
|
359
|
-
console.log("current delta "+ currentDelta);
|
360
|
-
console.log("delta to achieve "+ goalDelta);
|
361
374
|
|
362
375
|
if(options.anchor) {
|
363
376
|
if((options.anchor.toLowerCase() == "b") || (options.anchor == "beginning"))
|
@@ -372,10 +385,19 @@ var socialCheesecake = socialCheesecake || {};
|
|
372
385
|
if(currentDelta - goalDelta < step) step = currentDelta - goalDelta;
|
373
386
|
currentDelta -= step;
|
374
387
|
currentPhi += anchor * step;
|
388
|
+
grow = -1;
|
375
389
|
} else if(currentDelta < goalDelta) {
|
376
390
|
if(goalDelta - currentDelta < step) step = goalDelta - currentDelta;
|
377
391
|
currentDelta += step;
|
378
392
|
currentPhi -= anchor * step;
|
393
|
+
grow = 1;
|
394
|
+
}
|
395
|
+
if(options.priority) sector.growDelta =grow;
|
396
|
+
if((sector.growDelta !=null)&&(grow != sector.growDelta)){
|
397
|
+
goOn = false;
|
398
|
+
}else{
|
399
|
+
goOn = true;
|
400
|
+
sector.growDelta = grow;
|
379
401
|
}
|
380
402
|
sector.delta = currentDelta;
|
381
403
|
sector.phi = currentPhi;
|
@@ -385,12 +407,15 @@ var socialCheesecake = socialCheesecake || {};
|
|
385
407
|
context.save();
|
386
408
|
stage.draw();
|
387
409
|
//Repeat if necessary
|
388
|
-
if(currentDelta != goalDelta) {
|
410
|
+
if(goOn && (Math.round(currentDelta*1000) != Math.round(goalDelta*1000))) {
|
389
411
|
requestAnimFrame(function() {
|
390
412
|
sector.resizeDelta(options);
|
391
413
|
});
|
392
|
-
}
|
393
|
-
|
414
|
+
}else{
|
415
|
+
sector.growDelta = undefined;
|
416
|
+
if(options.callback) {
|
417
|
+
options.callback();
|
418
|
+
}
|
394
419
|
}
|
395
420
|
}
|
396
421
|
|
@@ -402,11 +427,12 @@ var socialCheesecake = socialCheesecake || {};
|
|
402
427
|
* "middle", "m", "M"
|
403
428
|
* "rOut", "rout", "out", "O", "o"
|
404
429
|
* priority - true to terminate other resizeWidth methods running
|
430
|
+
* callback - function to execute at the end of the animation
|
405
431
|
*/
|
406
432
|
socialCheesecake.Sector.prototype.resizeWidth = function(options) {
|
407
433
|
var sector = this;
|
408
|
-
var context = sector.getRegion().layer.getContext();
|
409
434
|
var stage = sector.getCheesecake().stage;
|
435
|
+
var context = stage.mainLayer.getContext();
|
410
436
|
var currentRIn = this.rIn;
|
411
437
|
var currentROut = this.rOut;
|
412
438
|
var currentWidth = (currentROut - currentRIn);
|
@@ -478,8 +504,8 @@ var socialCheesecake = socialCheesecake || {};
|
|
478
504
|
|
479
505
|
socialCheesecake.Sector.prototype.focus = function() {
|
480
506
|
var sector = this;
|
481
|
-
var context = sector.getRegion().layer.getContext();
|
482
507
|
var stage = sector.getCheesecake().stage;
|
508
|
+
var context = stage.mainLayer.getContext();
|
483
509
|
sector.rOut = sector.originalAttr.rOut * 1.05;
|
484
510
|
context.restore();
|
485
511
|
context.save();
|
@@ -488,14 +514,41 @@ var socialCheesecake = socialCheesecake || {};
|
|
488
514
|
|
489
515
|
socialCheesecake.Sector.prototype.unfocus = function() {
|
490
516
|
var sector = this;
|
491
|
-
var context = sector.getRegion().layer.getContext();
|
492
517
|
var stage = sector.getCheesecake().stage;
|
518
|
+
var context = stage.mainLayer.getContext();
|
493
519
|
sector.rOut = sector.originalAttr.rOut;
|
494
520
|
context.restore();
|
495
521
|
context.save();
|
496
522
|
stage.draw();
|
497
523
|
}
|
498
524
|
|
525
|
+
/**
|
526
|
+
* open - true: expand sector
|
527
|
+
* - false: shrink sector
|
528
|
+
* resizeDeltaCallback - callback to execute at the end of the animation
|
529
|
+
*/
|
530
|
+
socialCheesecake.Sector.prototype.fan = function(open, resizeDeltaCallback){
|
531
|
+
var sector = this;
|
532
|
+
var minDelta = Math.PI/5;
|
533
|
+
|
534
|
+
if(open && (sector.delta >= minDelta)) return;
|
535
|
+
if(open){
|
536
|
+
sector.getRegion().moveToTop();
|
537
|
+
sector.resizeDelta({
|
538
|
+
anchor: "m",
|
539
|
+
delta: minDelta,
|
540
|
+
callback : resizeDeltaCallback
|
541
|
+
});
|
542
|
+
}else{
|
543
|
+
sector.resizeDelta({
|
544
|
+
anchor: "m",
|
545
|
+
delta: sector.originalAttr.delta,
|
546
|
+
priority : true,
|
547
|
+
callback : resizeDeltaCallback
|
548
|
+
});
|
549
|
+
}
|
550
|
+
}
|
551
|
+
|
499
552
|
socialCheesecake.Sector.prototype.rotateTo = function(options) {
|
500
553
|
// update stage
|
501
554
|
var sector = this;
|
@@ -504,11 +557,9 @@ var socialCheesecake = socialCheesecake || {};
|
|
504
557
|
var step = 0.05;
|
505
558
|
var anchor = 0;
|
506
559
|
var stage = sector.getCheesecake().stage;
|
507
|
-
var context =
|
560
|
+
var context = stage.mainLayer.getContext();
|
508
561
|
if(!options) throw "No arguments passed to the function";
|
509
562
|
if(options.step) step = options.step;
|
510
|
-
/*if(options.context == null) throw "context must be defined";
|
511
|
-
var context = options.context;*/
|
512
563
|
if(options.destination == null) throw "destination must be defined";
|
513
564
|
if(options.anchor){
|
514
565
|
if((options.anchor.toLowerCase() == "b") || (options.anchor == "beginning"))
|
@@ -640,7 +691,8 @@ var socialCheesecake = socialCheesecake || {};
|
|
640
691
|
this.actors = [];
|
641
692
|
this.auxiliar = (settings.auxiliar) ? settings.auxiliar : false;
|
642
693
|
if(settings.color) this.color = settings.color;
|
643
|
-
if(settings.
|
694
|
+
if(settings.fontColor) this.fontColor = settings.fontColor;
|
695
|
+
if(settings.borderColor) this.borderColor = settings.borderColor;
|
644
696
|
if(settings.mousedown != null) this.mousedown = settings.mousedown;
|
645
697
|
if(settings.mouseup != null) this.mouseup = settings.mouseup;
|
646
698
|
if(settings.mouseover != null) this.mouseover = settings.mouseover;
|
@@ -651,7 +703,8 @@ var socialCheesecake = socialCheesecake || {};
|
|
651
703
|
for(var actor in settings.actors){
|
652
704
|
var actor_info = {
|
653
705
|
id : settings.actors[actor][0],
|
654
|
-
name : settings.actors[actor][1]
|
706
|
+
name : settings.actors[actor][1],
|
707
|
+
extraInfo : settings.actors[actor][2]
|
655
708
|
}
|
656
709
|
this.addActor(actor_info ,this);
|
657
710
|
}
|
@@ -669,7 +722,8 @@ var socialCheesecake = socialCheesecake || {};
|
|
669
722
|
delta : this.delta,
|
670
723
|
auxiliar : this.auxiliar,
|
671
724
|
color : this.color,
|
672
|
-
|
725
|
+
fontColor : this.fontColor,
|
726
|
+
borderColor : this.borderColor,
|
673
727
|
|
674
728
|
mouseover : this.mouseover,
|
675
729
|
mouseout : this.mouseout,
|
@@ -718,7 +772,7 @@ var socialCheesecake = socialCheesecake || {};
|
|
718
772
|
actorInfo = { id : actors[i].id};
|
719
773
|
this.addActor(actorInfo, this);
|
720
774
|
}
|
721
|
-
this.getCheesecake().updateActorMembership(actors[i]
|
775
|
+
this.getCheesecake().updateActorMembership(actors[i]);
|
722
776
|
isMember = false;
|
723
777
|
}
|
724
778
|
this.getCheesecake().calculatePortions();
|