Skip to content

Visões do calendário e detalhe do dia ​

O módulo Calendário tem duas abas e uma barra de filtros sempre visível. Os padrões são ajustados para "o que está acontecendo este mês, na minha filial" — a pergunta mais comum — mas os filtros e o seletor de visão permitem ampliar ou estreitar conforme necessário.

Visão mensal do calendário

A grade mensal ​

A aba Calendário é a superfície de aterrissagem padrão. Ela renderiza uma grade mensal tradicional com a data selecionada destacada e três camadas visuais em cada célula do dia:

  • Pontos de evento — coloridos pela cor escolhida do evento. Um ponto por evento, com limite visual para que um dia cheio não transborde.
  • Marcadores de aniversário — um pequeno ícone de bolo. Puxado diretamente de members.date_of_birth, não de uma linha de evento.
  • Sublinhado de hoje — a data atual é sublinhada, independentemente de qual data você selecionou.

Clique em qualquer data para carregar o painel de detalhes do dia abaixo da grade. Clique no nome do mês no cabeçalho para pular para o seletor de mês; clique nas setas para avançar um mês por vez. A data selecionada persiste quando você muda de mês — o painel ainda mostra o que foi escolhido por último.

TIP

Você não precisa clicar em um dia para ler seus eventos — passe o mouse sobre um ponto de evento e um cartão de prévia aparece com o título, a hora e o local.

O que a grade realmente consulta ​

A grade mensal roda uma consulta do Supabase para a janela visível: cada evento cuja event_date cai no mês ou cuja recurring = true independentemente da data. O navegador então expande as linhas recorrentes em ocorrências individuais usando a RRULE, filtrando datas de exceção e datas além de recurrence_end_date. Não há cron no servidor pré-computando linhas de ocorrência — tudo é derivado na hora.

Isso significa que mudanças propagam instantaneamente. Edite a RRULE de um evento recorrente e as novas datas renderizam no próximo render; adicione uma exceção e a data cancelada desaparece no momento em que a consulta revalida.

O painel de detalhes do dia ​

Abaixo da grade, um cartão mostra tudo na data atualmente selecionada — eventos primeiro, depois aniversários, separados por um divisor quando ambos estão presentes. Cada cartão de evento carrega:

  • Uma barra colorida correspondendo à cor do evento.
  • Título, hora de início/fim, local.
  • Um ícone de repetição se a data veio de uma expansão recorrente.
  • Um badge de filial se o evento tem escopo para uma unidade-org específica.
  • Botões editar e excluir (visíveis apenas se você tem events.edit / events.delete).

Clique em qualquer lugar no cartão para abrir a caixa de diálogo de edição; clique no ícone de lixeira para a confirmação de exclusão suave. Cartões de aniversário são clicáveis e levam direto ao perfil do membro.

O estado vazio é intencional: se nada está na data e você tem events.create, um pequeno link "+ Adicionar evento" aparece no painel vazio para que você possa preenchê-lo sem sair da tela.

A lista de próximos ​

A aba Próximos vira o calendário ao contrário: em vez de dispor um mês, mostra os próximos vinte eventos a partir de hoje, em ordem cronológica. Cada linha é o mesmo cartão de evento compacto que você vê no painel do dia, mais um rótulo de data.

Use esta aba quando estiver respondendo a "o que vem a seguir?" em vez de "o que tem em 14 de março?" — é a visão certa para uma reunião de líderes na manhã de segunda em que você revisa a semana que vem.

A consulta de próximos é limitada pelo filtro de filial e pelo papel do usuário. Um pastor de cuidado atribuído a uma filial vê apenas os eventos daquela filial; um administrador global vê todos os vinte através da org.

Filtrando por unidade-org ​

A barra de ferramentas carrega um único menu suspenso rotulado com um ícone de filial. Por padrão mostra sua filial atribuída; administradores com escopo global veem "Todas as filiais".

O filtro aplica uma cláusula OR org_unit_id IS NULL, o que significa que eventos de toda a org permanecem visíveis não importa qual filial você escolher. Um culto de Natal marcado como de toda a org aparece no calendário de cada filial. Apenas eventos específicos de filial (com um org_unit_id concreto) ficam fora do escopo.

Usuários cujo papel não abrange a org inteira só veem as filiais às quais estão atribuídos no menu suspenso. Não há "vazamento" — escolher uma filial à qual você não está atribuído não é uma opção para começar.

WARNING

O filtro atualmente não suporta seleção múltipla. Se você precisa comparar duas filiais específicas, alterne entre elas; se precisa de uma visão transversal real, escolha "Todas as filiais".

Filtrando por categoria de evento ​

Cada evento tem uma coluna de texto category (definida no formulário de evento, separada da cor) — valores como service, outreach, meeting, social. O calendário não expõe a categoria como filtro de nível superior hoje; é registrada para uso pelos relatórios e por futuras passadas de filtro.

Se você está procurando um subconjunto de uma única categoria agora, a solução é a lista de próximos — escaneie visualmente pela cor, já que a maioria das orgs mapeia cor para categoria um-a-um (azul = serviço, verde = outreach, etc.).

Permissões e o que cada papel vê ​

As regras de visão são simples:

PapelVê
AdminTudo na org, cada filial.
PastorTudo nas filiais atribuídas.
Pastor de cuidadoEventos de toda a org + eventos da sua filial atribuída.
MembroEventos de toda a org + eventos na sua filial principal.

A mesma permissão events.view controla a página inteiramente. Sem ela, o item de menu fica oculto.

Mobile e telas pequenas ​

Em um celular, a grade mensal mantém seu layout completo, mas cada célula encolhe; pontos de evento colapsam de barras coloridas para pequenos círculos preenchidos. O painel de detalhes do dia se empilha abaixo da grade como um cartão separado — toque na data que você quer, role para baixo. O filtro de filial e o seletor de aba se movem ambos para a barra de ferramentas fixa para que continuem acessíveis.

A instalação do PWA é a melhor experiência se você vive no mobile — as visões do calendário parecem nativas e o alvo de toque do detalhe do dia é maior. Notificações push também se tornam possíveis uma vez instalado, o que alimenta o fluxo de lembretes sem passar por créditos de SMS ou WhatsApp.