22 <div class =" flex flex-column items-center br4 bgb pv4" >
33 <h1 class =" mb2 mt0" >Chamada{{ finalizada ? ' finalizada' : ' interativa' }}</h1 >
44 <div v-if =" finalizada" class =" flex flex-row justify-center" >
5-
6- <button v-on:click =" recomecar()" v-bind:disabled =" alunoAtual === 0" >
7- Recomeçar
8- </button >
5+ <button v-on:click =" recomecar()" v-bind:disabled =" alunoAtual === 0" >
6+ Recomeçar
7+ </button >
98 </div >
109 <div class =" black-60 f4 pv2 ph3 flex justify-between" style =" width : 50vw " v-if =" !finalizada" >
1110 <div class =" di" v-if =" !finalizada" >
1716 </select >
1817 </div >
1918 <div class =" di" >
20- <span >Aluno <b >{{ alunoAtual + 1 }}</b > de <b >{{ alunos.length }}</b ></span >
19+ <span
20+ >Aluno <b >{{ alunoAtual + 1 }}</b > de <b >{{ alunos.length }}</b ></span
21+ >
2122 </div >
2223 <div class =" di" >
2324 <button v-on:click =" recomecar()" v-bind:disabled =" alunoAtual === 0" >
2425 Recomeçar
2526 </button >
2627 </div >
27- <div class =" di w-50 text-center" >
28+ <div class =" di w-50 text-center" >
2829 <div v-if =" ultimaAcao" class =" di" >
29- <b >Última Ação:</b >
30- {{ ultimaAcao.acao }} em {{ ultimaAcao.nome.split(' ')[0] }}
30+ <span >
31+ <b >Última Ação:</b >
32+ {{ ultimaAcao.acao }} em {{ ultimaAcao.nome.split(' ')[0] }}
3133 </span >
3234 </div >
3335 <div v-if =" !ultimaAcao" class =" di" >
3436 Nenhuma ação realizada
3537 </div >
3638 </div >
3739 </div >
38- <div style =" width : 40vw " class =" flex" >
39- <span v-if =" !finalizada" class =" f1 mr3" >
40- Aluno atual:
41- </span >
40+ <div style =" width : 40vw " class =" flex" >
41+ <span v-if =" !finalizada" class =" f1 mr3" >
42+ Aluno atual:
43+ </span >
4244 <b class =" f1" > {{ nomesAlunos[alunoAtual] }}</b >
4345 </div >
44- </span >
4546 <p class =" black-60 pa0 ma0" v-if =" !finalizada" ><b >Dica: </b > Utilize os atalhos de teclado descritos abaixo!</p >
4647 <div v-if =" !finalizada" >
4748 <table class =" table table-bordered ma0" >
@@ -132,6 +133,50 @@ const getAlunos = table => {
132133 }
133134 })
134135}
136+ function removeAcentos (strAccents ) {
137+ var strAccents = strAccents .split (' ' )
138+ var strAccentsOut = new Array ()
139+ var strAccentsLen = strAccents .length
140+ var accents = ' ÀÁÂÃÄÅàáâãäåÒÓÔÕÕÖØòóôõöøÈÉÊËèéêëðÇçÐÌÍÎÏìíîïÙÚÛÜùúûüÑñŠšŸÿýŽž'
141+ var accentsOut = ' AAAAAAaaaaaaOOOOOOOooooooEEEEeeeeeCcDIIIIiiiiUUUUuuuuNnSsYyyZz'
142+ for (var y = 0 ; y < strAccentsLen; y++ ) {
143+ if (accents .indexOf (strAccents[y]) != - 1 ) {
144+ strAccentsOut[y] = accentsOut .substr (accents .indexOf (strAccents[y]), 1 )
145+ } else {
146+ strAccentsOut[y] = strAccents[y]
147+ }
148+ }
149+ strAccentsOut = strAccentsOut .join (' ' )
150+ return strAccentsOut
151+ }
152+
153+ const HOMOFONOS = {
154+ anna: ' ana' ,
155+ mateus: ' matheus' ,
156+ tiago: ' tiago' ,
157+ vitor: ' victor' ,
158+ artur: ' arthur' ,
159+ davi: ' david' ,
160+ elena: ' helena' ,
161+ sophia: ' sofia' ,
162+ deborah: ' debora' ,
163+ isabella: ' isabela' ,
164+ lukas: ' lucas' ,
165+ camilla: ' camila' ,
166+ kamila: ' camila' ,
167+ kamyla: ' camila' ,
168+ camyla: ' camila' ,
169+ laurah: ' laura'
170+ }
171+
172+ /**
173+ * Trata nomes homófonos. Deve ser chamado apenas com o primeiro nome do aluno.
174+ */
175+ const normalizarNome = (nome = ' ' ) => {
176+ const minusculo = nome .trim ().toLowerCase ()
177+ const nomeFinal = removeAcentos (minusculo)
178+ return HOMOFONOS [nomeFinal] || nomeFinal
179+ }
135180
136181export default {
137182 name: ' Chamada' ,
@@ -146,15 +191,17 @@ export default {
146191 const nomes = this .alunos && this .alunos .map (({ nome }) => nome .toUpperCase ())
147192 const nomeAcc = nomes .reduce ((acc , nome ) => {
148193 const primeiroNome = nome .split (' ' )[0 ]
149- if (! acc[primeiroNome]) {
150- acc[primeiroNome] = 0
194+ const nomeNormal = normalizarNome (primeiroNome)
195+ if (! acc[nomeNormal]) {
196+ acc[nomeNormal] = 0
151197 }
152- acc[primeiroNome ]++
198+ acc[nomeNormal ]++
153199 return acc
154200 }, {})
155201 return nomes .map (nome => {
156202 const primeiroNome = nome .split (' ' )[0 ]
157- if (nomeAcc[primeiroNome] === 1 ) {
203+ const nomeNormal = normalizarNome (primeiroNome)
204+ if (nomeAcc[nomeNormal] === 1 ) {
158205 return primeiroNome
159206 } else {
160207 return getAbreviacao (nome)
@@ -195,10 +242,10 @@ export default {
195242 },
196243 reduce (action ) {
197244 const active = document .activeElement
198- if (active .nodeName === ' INPUT' ){
245+ if (active .nodeName === ' INPUT' ) {
199246 return
200247 }
201- if (active .nodeName !== ' BODY' ){
248+ if (active .nodeName !== ' BODY' ) {
202249 active .blur ()
203250 }
204251 if (this .finalizada ) {
@@ -208,6 +255,7 @@ export default {
208255 const nome = this .alunos [this .alunoAtual ].nome
209256 const input = document .querySelector (` input[name=f${ this .aulaSelecionada } _${ matricula} ]` )
210257 if (! input) {
258+ this .alunoAtual ++
211259 return console .log (` Não encontrado input do aluno com matrícula ` + matricula)
212260 }
213261 switch (action) {
0 commit comments