Cavalheiros, estou com um pequeno problema em um trecho de código. Preciso preencher uma coluna com a somatória de horas retornadas de um método, mas não estou conseguindo. Segue o código:
<tfoot>
<td colspan="5"></td>
<td>
${
(function(){
var soma = '00:00';
modelo.listaCadastroPontos.forEach(cp => {
soma = TimeHelper.stringToTime([soma,cp.horasTrabalhadas], 'soma');
return soma;
});
})();
}
</td>
</tfoot>
Footer da Classe que gera o template da view:
Código da Classe TimeHelper que é utilizado pela chamada da View, essa classe converte Strings em minutos e depois devolve o valor já formatado em string novamente:
class TimeHelper{
constructor(){
throw new Error('TimeHelper não pode ser instânciada!');
}
static horasTrabalhadas(minutosTrabalhados){
let horas = 0;
let minutos = 0;
let arrayMinutos = [];
if(typeof(minutosTrabalhados) == 'object'){
for(var i = 0; i < minutosTrabalhados.length; i++){
horas += parseInt((minutosTrabalhados[i] / 60).toFixed(0));
minutos += minutosTrabalhados[i] % 60;
}
}
arrayMinutos.push(horas);
arrayMinutos.push(minutos);
return arrayMinutos;
}
static stringToTime(campos, info){
let soma;
let horas;
let minutos;
let arrayMinutos = [];
let arrayMinutosSoma = [];
let minutosTrabalhados;
let arrayHorasMinutos;
if(info == 'soma'){
for(var i = 0; i <= (campos.length -1); i++){
if(campos[i].length < 5)
arrayMinutosSoma.push(parseInt(campos[i].slice(0,1) * 60) + parseInt(campos[i].slice(2,4)));
if(campos[i].length == 5)
arrayMinutosSoma.push(parseInt(campos[i].slice(0,2) * 60) + parseInt(campos[i].slice(3,5)));
};
soma = this.horasTrabalhadas(arrayMinutosSoma);
horas = soma[0];
minutos = soma[1];
return `${horas}:${minutos}`;
}
}
A saída no console mostra que o método esta devolvendo uma string e a variável na view recebe o valor mas não estou conseguindo imprimir o valor na coluna.
Desde já agradeço quem puder ajudar!