Skip to content

Views e Interfaces (Blade)

A camada de interface da aplicação utiliza o motor de templates Blade do Laravel em conjunto com o Tailwind CSS para criar painéis administrativos rápidos e responsivos, sem necessidade de compilação de assets complexos.

Painel de Telemetria (Logs de Busca)

Ficheiro: logs-busca.blade.php

Este painel administrativo exibe as métricas de pesquisas que não resultaram em conversão, auxiliando na identificação de gargalos no motor de busca. A interface é composta pelos seguintes elementos técnicos:

1. Filtros Dinâmicos

  • O ecrã possui um formulário de seleção (dropdown) para filtrar os dados pelo motivo da falha (ex: zero_resultados ou falta_de_clique).
  • A filtragem é acionada automaticamente através do evento JavaScript onchange="this.form.submit()", dispensando a necessidade de um botão de submissão.
  • O estado do filtro é mantido na interface utilizando a diretiva request('motivo') para selecionar a opção correta após o recarregamento da página.

2. Ordenação Interativa (Table Headers)

As colunas da tabela (Última Busca, Termo Buscado, Qtd. de Buscas, Motivo, Encontrados) funcionam como links de ordenação. * O método request()->fullUrlWithQuery() é utilizado para preservar os filtros ativos ao mesmo tempo que injeta ou altera os parâmetros sort_by e sort_dir na URL. * A interface apresenta indicadores visuais (setas ↑, ↓, ↕) renderizados dinamicamente via operadores ternários no Blade, indicando a direção atual da ordenação (ascendente ou descendente).

3. Formatação e Apresentação de Dados

Durante a iteração dos registos (@foreach ($logs as $log)), os dados sofrem transformações visuais: * Datas: A data da última pesquisa é formatada no padrão europeu/brasileiro (d/m/Y H:i) utilizando o componente \Carbon\Carbon::parse(). * Feedback Visual (Tags): A coluna motivo utiliza condicionais @if para renderizar etiquetas coloridas com as classes utilitárias do Tailwind. O status Zero Resultados é destacado a vermelho (bg-red-100), enquanto Sem Cliques é destacado a amarelo (bg-yellow-100) para alertar o utilizador.

4. Paginação Preservada

A listagem encerra com a renderização dos links de paginação. O método appends(request()->query()) é fundamental aqui, pois garante que, ao navegar entre a página 1 e 2, os filtros de motivo e a ordenação atual das colunas não se percam.