37 lines
4.9 KiB
Markdown
37 lines
4.9 KiB
Markdown
# Changelog — Calendário Individual e Widgets
|
|
|
|
> Histórico específico desta aplicação, extraído de `plano.md`. Rodadas que mudaram mais de uma aplicação ao mesmo tempo (modelo de permissões, CSS transversal) continuam em `plano.md`.
|
|
>
|
|
> **Formato**: uma entrada por rodada, `### Rodada N — Título`; quando a rodada não tem número registrado, `### Título` só. **A numeração de rodada não é global** — cada aplicação conta as próprias, e o mesmo número designa trabalhos diferentes em arquivos diferentes. Ao citar uma rodada, sempre nomear o arquivo. Ver o topo de `plano.md`.
|
|
|
|
### Rodada 9 — Calendário De Paula → link externo
|
|
|
|
"O Calendário De Paula deve ser um redirecionador" para `https://depaula-tvcorporativa.lovable.app/calendario` (abre em nova aba). O calendário interno mockado (`calendario.html` + `calendar.js`, com eventos fixos por setor) foi removido a pedido do usuário depois da troca — não recriar sem confirmar.
|
|
|
|
### Rodada 10 — Calendário Individual + Widgets
|
|
|
|
Pedido novo, em duas partes:
|
|
|
|
- **Calendário Individual** (`calendario-individual.html`): agenda pessoal de cada colaborador (seção base, disponível a todo perfil). Cada um cria compromissos e pode marcá-los como visíveis para todos que compartilham pelo menos um perfil de acesso em comum (`sharedWithProfile` + `pidEventsVisibleTo` em `events.js`) — colegas só visualizam, não editam nem excluem compromisso alheio.
|
|
- **Widgets** na tela Principal: área "Widgets" com botão "Adicionar Widget" (seletor, no estilo Asana) — pensada para crescer além de um único tipo. Hoje só existe o widget de Calendário Individual (próximos 5 compromissos), mas o registro `PID_WIDGET_TYPES` já está estruturado para novos tipos sem refazer a área de adicionar/remover.
|
|
|
|
### Rodada 11 — Horário e edição no Calendário Individual
|
|
|
|
Compromissos ganharam campo de horário (ordenados por horário dentro do dia) e passaram a ser editáveis depois de criados — clicar num compromisso próprio abre o mesmo modal preenchido, com um botão "Excluir" adicional, em vez de excluir direto ao clicar.
|
|
|
|
### Rodada 35 — Eventos Corporativos no Calendário Individual
|
|
|
|
Pedido: distinguir compromissos pessoais/departamentais de **eventos corporativos** formais (reuniões, treinamentos) — com categoria, local, modalidade (presencial/remoto/híbrido) e descrição — e restringir quem pode criar compromissos visíveis para o departamento ou para todos, que até então qualquer usuário podia fazer livremente.
|
|
|
|
O que foi construído: `CategoriaEvento` (nome único + cor hex, cadastro editável direto no modal de criar/editar compromisso, botão "+" ao lado do `<select>` de categoria); `CompromissoAgenda` ganhou `categoria` (FK), `eh_evento` (booleano — força `visibilidade="todos"` na validação), `local`, `modalidade` e `descricao`. Nova permissão `calendario-individual-criar-evento` (`catalogo.py`, único `tool` dentro de um subgrupo — não um par visualizar/editar, já que o módulo em si é liberado a todo perfil) passou a ser exigida por `CompromissoAgendaSerializer.validate()` para qualquer compromisso com `visibilidade` em `departamento`/`todos` — liberada só pra "Integração e Inovação" no `seed_portal.py` por ora, mesmo cuidado de sempre (`calendario-individual` está em `BASE_KEYS`). No calendário, eventos ganharam uma 5ª categoria de filtro/cor (`"evento"`, token `--coral`), distinta das 4 já existentes (`somente_eu`/`departamento`/`todos`/`equipe`). Migrações `0018_remove_compromissoagenda_compartilhado_com_perfil_and_more`, `0019_categoriaevento_compromissoagenda_descricao_and_more` e `0020_compromissoagenda_eh_evento`. Detalhe técnico completo em `docs/calendario-individual/calendario-individual.md`, seção "Eventos Corporativos".
|
|
|
|
### Rodada 36 — Revisão de interface de 30/09/2026: Calendário Individual
|
|
|
|
Correções vindas da revisão de interface de 30/09/2026 (ver `plano.md`), só no frontend:
|
|
|
|
- **Feriados**: se `/api/feriados/` falhar, `carregarFeriados()` devolve um `Map` vazio (sem guardar a falha em cache) e a grade sai sem feriados, em vez de o calendário inteiro sumir.
|
|
- **Falha de carga**: categorias que não carregam deixam o select com "Nenhuma (categorias indisponíveis, recarregue a página)"; compromissos que não carregam mostram `pidAlert` e mantêm a grade.
|
|
- **Envio duplo**: salvar compromisso e categoria ficam travados ("Salvando…") até a resposta; excluir trava o próprio botão.
|
|
- **Sair sem salvar**: Cancelar e clique fora dos modais de compromisso e de categoria comparam com o retrato da abertura e pedem confirmação quando houve alteração.
|
|
- Título do mês com só a primeira letra maiúscula no JS ("Setembro de 2026"), sem `text-transform: capitalize`; descrição do popup de detalhes com `white-space: pre-wrap` e `overflow-wrap: anywhere` (`.ic-view-descricao`); o "+" de novo compromisso fica sempre visível em `@media (hover: none)`; `autocomplete="off"` em título, local e nome da categoria.
|