forked from git.gladyson/openmonetis
feat: implementar relatórios de categorias e substituir seleção de período por picker visual
BREAKING CHANGE: Remove feature de seleção de período das preferências do usuário
Alterações principais:
- Adiciona sistema completo de relatórios por categoria
- Cria página /relatorios/categorias com filtros e visualizações
- Implementa tabela e gráfico de evolução mensal
- Adiciona funcionalidade de exportação de dados
- Cria skeleton otimizado para melhor UX de loading
- Remove feature de seleção de período das preferências
- Deleta lib/user-preferences/period.ts
- Remove colunas periodMonthsBefore e periodMonthsAfter do schema
- Remove todas as referências em 16+ arquivos
- Atualiza database schema via Drizzle
- Substitui Select de período por MonthPicker visual
- Implementa componente PeriodPicker reutilizável
- Integra shadcn MonthPicker customizado (português, Remix icons)
- Substitui createMonthOptions em todos os formulários
- Mantém formato "YYYY-MM" no banco de dados
- Melhora design da tabela de relatórios
- Mescla colunas Categoria e Tipo em uma única coluna
- Substitui badge de tipo por dot colorido discreto
- Reduz largura da tabela em ~120px
- Atualiza skeleton para refletir nova estrutura
- Melhorias gerais de UI
- Reduz espaçamento entre títulos da sidebar (p-2 → px-2 py-1)
- Adiciona MonthNavigation para navegação entre períodos
- Otimiza loading states com skeletons detalhados
This commit is contained in:
@@ -50,16 +50,6 @@ const deleteAccountSchema = z.object({
|
||||
|
||||
const updatePreferencesSchema = z.object({
|
||||
disableMagnetlines: z.boolean(),
|
||||
periodMonthsBefore: z
|
||||
.number()
|
||||
.int("Deve ser um número inteiro")
|
||||
.min(1, "Mínimo de 1 mês")
|
||||
.max(24, "Máximo de 24 meses"),
|
||||
periodMonthsAfter: z
|
||||
.number()
|
||||
.int("Deve ser um número inteiro")
|
||||
.min(1, "Mínimo de 1 mês")
|
||||
.max(24, "Máximo de 24 meses"),
|
||||
});
|
||||
|
||||
// Actions
|
||||
@@ -374,8 +364,6 @@ export async function updatePreferencesAction(
|
||||
.update(schema.userPreferences)
|
||||
.set({
|
||||
disableMagnetlines: validated.disableMagnetlines,
|
||||
periodMonthsBefore: validated.periodMonthsBefore,
|
||||
periodMonthsAfter: validated.periodMonthsAfter,
|
||||
updatedAt: new Date(),
|
||||
})
|
||||
.where(eq(schema.userPreferences.userId, session.user.id));
|
||||
@@ -384,8 +372,6 @@ export async function updatePreferencesAction(
|
||||
await db.insert(schema.userPreferences).values({
|
||||
userId: session.user.id,
|
||||
disableMagnetlines: validated.disableMagnetlines,
|
||||
periodMonthsBefore: validated.periodMonthsBefore,
|
||||
periodMonthsAfter: validated.periodMonthsAfter,
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -32,8 +32,6 @@ export default async function Page() {
|
||||
const userPreferencesResult = await db
|
||||
.select({
|
||||
disableMagnetlines: schema.userPreferences.disableMagnetlines,
|
||||
periodMonthsBefore: schema.userPreferences.periodMonthsBefore,
|
||||
periodMonthsAfter: schema.userPreferences.periodMonthsAfter,
|
||||
})
|
||||
.from(schema.userPreferences)
|
||||
.where(eq(schema.userPreferences.userId, session.user.id))
|
||||
@@ -71,8 +69,6 @@ export default async function Page() {
|
||||
disableMagnetlines={
|
||||
userPreferences?.disableMagnetlines ?? false
|
||||
}
|
||||
periodMonthsBefore={userPreferences?.periodMonthsBefore ?? 3}
|
||||
periodMonthsAfter={userPreferences?.periodMonthsAfter ?? 3}
|
||||
/>
|
||||
</div>
|
||||
</Card>
|
||||
|
||||
Reference in New Issue
Block a user