Medida de Tempo – Horas, Minutos e Segundos no Table Component do CDE

Após vermos como criar uma medida (métrica – Measure) de tempo, com Horas, minutos e segundos aqui, onde podemos agregar e distribuir os valores de tempo entre as dimensões no Saiku, JPivot ou qualquer outro visualizador OLAP, agora vamos ver como fazer isso via tipo de dado “formattedText” e javascript no Table Component do CDE.

Tudo começou com a necessidade de se somar o tempo de atendimento do call center de um cliente. Para isso criamos uma medida do tipo INTEIRO e convertemos via “Cell Formatter” do Mondrian. Até aí tudo bem! Conseguíamos ver o tempo no formato HH:mm:ss nos visualizadores OLAP conforme abaixo:

detalhado

Porém ao tentar colocar essa informação em um painel CDE percebemos que o componente Table Component não respeitava o Cell Formatter do Mondrian.

CellFormatterTableComponent1

Para resolver isso vamos usar o tipo de coluna “formattedText” do Table Component.

FormattedText

Note que é preciso definir um tipo para as colunas anteriores também e o tipo “formattedText” para a coluna que vamos formatar como HH:mm:ss

Feito isso vamos nas propriedades avançadas da tabela e editar a propriedade Pre Execution

ConfigurandoPreExecution

Nela vamos colocar a função abaixo:

function(){
    this.setAddInOptions(“colType”,”formattedText”,function(cell_data){
    var valor = cell_data.value;
    var minutos = ”;

// No if abaixo coloque o índice da coluna na tabela. No meu caso foi 2 por que é a terceira coluna e o índice começa em zero
     if(cell_data.colIdx === 2) {
        if(cell_data.value === ” || cell_data.value === null) //Checando possibilidade do nulo
        {
            minutos = ’00:00′;
            valor = 0;
        }
    }

    if(valor > 0){
        var minutos_decimal = valor/60;
        minutos = Math.floor(minutos_decimal);
        var segundos = minutos_decimal – minutos;
        segundos = Math.floor((segundos*10)*6);
       

        if(segundos < 10) {
            minutos = minutos.toString() + ‘:0’ + segundos.toString();
        }else{
            minutos = minutos.toString() + ‘:’ + segundos.toString();
        }

        return { textFormat: function(v, st) { return “<span>”+minutos+”</span>”; } };
    }
});
}

Ficará assim na sua propriedade:

javaScriptPreExecution

Clique em “Ok” e pronto, basta visualizar sua tabela no painel com o novo formato:

FormattedText2

Essa e mais dicas você encontra em nosso canal do youtube

Até a próxima!

2 comentários em “Medida de Tempo – Horas, Minutos e Segundos no Table Component do CDE”

  1. Wallace Pereira

    Essa dica, será muito útil para meus painéis, participei recentemente um treinamento para utilização do CDE com o José Elias, e me surpreendo a cada dia com a capacidade da ferramenta, sem contar essas dicas que sempre facilita.

    1. Obrigado Wallace. Nossa meta é fortalecer a comunidade Pentaho, principalmente no Rio de Janeiro, onde temos muitos projetos e poucos profissionais especializados. Em breve teremos mais treinamentos.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *