-
Notifications
You must be signed in to change notification settings - Fork 0
/
Bingo.js
executable file
·126 lines (113 loc) · 4.1 KB
/
Bingo.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
/* Copyright 2012 the original author: corinne krych.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
*
* @author <a href='mailto:[email protected]'>corinnekrych</a>
*/
function Bingo(phrases, buttonTheme){
this.buttonTheme = buttonTheme;
this.phrases = ['design',
'contexto',
'abdução',
'processo',
'complexidade',
'projeto',
'artefato',
'criatividade',
'inovação',
'(eco)sistema',
'pesquisa',
'rede',
'solução',
'cenário',
'dispositivo',
'ideia',
'plataforma',
'possibilidade',
'projeto',
'significado \nou significação',
'sustentável',
'método(logia)',
'empatia',
'epistemologia',
'metaprojeto',
'modelo',
'usuário',
'colaboração',
'atores'];
this.init();
};
Bingo.prototype.init = function() {
// Reset HTML grid
$("#grid").empty();
// Generate random card feed with phrases deck
this.card = this.randomFeed();
// Populate HTML grid with randomly fed card
var out = '';
var line = 0;
// for (var i = 0 ; i <this.card.length; i++) {
for (var i = 0 ; i <16; i++) {
var modulo = i%4;
if (modulo == 0) {
line++;
}
var charTheme = String.fromCharCode(97 + modulo);
out = out + '<div id="item_' + i + '" class="line-'+ line +' ui-block-'+ charTheme +'"><div class="ui-bar ui-bar-e" style="padding: .4em 2px;height:50px"><br>'+ this.card[i].label+'</div></div>';
};
$("#grid").append(out);
// Add event to each cell of grid
for (var i = 0 ; i <this.card.length; i++) {
var selector = "#item_" + i + " div";
$(selector).on("click", null, {scope: this, index: i}, this.selectItem);
};
};
Bingo.prototype.randomFeed = function() {
var tempArray = this.phrases;
var randomFeedArray =[];
while (tempArray.length > 0) {
var randInt = Math.floor(Math.random()*tempArray.length);
randomFeedArray.push({label:tempArray[randInt], selected:false});
tempArray.splice(randInt, 1);
}
return randomFeedArray;
};
Bingo.prototype.selectItem = function(event) {
var isSelected = event.data.scope.card[event.data.index].selected;
if (isSelected) {
event.data.scope.card[event.data.index].selected = false;
$(this).removeClass('ui-bar-b').addClass('ui-bar-e');
} else {
event.data.scope.card[event.data.index].selected = true;
$(this).removeClass('ui-bar-e').addClass('ui-bar-b');
}
var displayPopup = Bingo.prototype.areYouAboutToYellBullShit.call(this);
};
Bingo.prototype.areYouAboutToYellBullShit = function(arg1, arg2) {
var isFirstColum = $("div[class*='ui-block-a'] div[class*='ui-bar-b']").length==4;
var isSecondColum = $("div[class*='ui-block-b'] div[class*='ui-bar-b']").length==4;
var isThirdColum = $("div[class*='ui-block-c'] div[class*='ui-bar-b']").length==4;
var isFourthColum = $("div[class*='ui-block-d'] div[class*='ui-bar-b']").length==4;
var isFifthColum = $("div[class*='ui-block-e'] div[class*='ui-bar-b']").length==4;
var isFirstLine = $("div[class*='line-1'] div[class*='ui-bar-b']").length==4;
var isSecondLine = $("div[class*='line-2'] div[class*='ui-bar-b']").length==4;
var isThirdLine = $("div[class*='line-3'] div[class*='ui-bar-b']").length==4;
var isFourthLine = $("div[class*='line-4'] div[class*='ui-bar-b']").length==4;
var isFifthLine = $("div[class*='line-5'] div[class*='ui-bar-b']").length==4;
if(isFifthColum || isFourthColum || isThirdColum || isSecondColum || isFirstColum
|| isFifthLine || isFourthLine || isThirdLine || isSecondLine || isFirstLine) {
$("#bingoDialog").click();
}
return false;
};