210 lines
5.3 KiB
Markdown
210 lines
5.3 KiB
Markdown
# 🚫 Sistema de Bloqueio Temporário da Sidebar
|
|
|
|
## 📋 Resumo
|
|
|
|
Sistema para bloquear botões específicos da sidebar temporariamente, ideal para deploys onde algumas funcionalidades ainda não foram refatoradas ou estão em manutenção.
|
|
|
|
## 🎯 Como Usar
|
|
|
|
### 1. **Configuração Rápida**
|
|
|
|
Edite o arquivo: `projects/idt_app/src/app/shared/components/sidebar/sidebar.component.ts`
|
|
|
|
Localize a seção **`temporaryBlocks`** (linha ~792):
|
|
|
|
```typescript
|
|
private temporaryBlocks: { [key: string]: boolean } = {
|
|
'maintenance': true, // ✅ BLOQUEAR Manutenção
|
|
'reports': true, // ✅ BLOQUEAR Relatórios
|
|
'settings': true, // ✅ BLOQUEAR Configurações
|
|
'finances': false, // ✅ LIBERAR Finanças
|
|
'routes/shopee': true, // ✅ BLOQUEAR Shopee (submenu)
|
|
// Adicione mais IDs conforme necessário
|
|
};
|
|
```
|
|
|
|
### 2. **Bloquear um Botão**
|
|
|
|
```typescript
|
|
'nome-do-botao': true, // ✅ BLOQUEADO
|
|
```
|
|
|
|
### 3. **Liberar um Botão**
|
|
|
|
```typescript
|
|
'nome-do-botao': false, // ✅ LIBERADO
|
|
```
|
|
|
|
## 🔍 IDs Disponíveis
|
|
|
|
### **Botões Principais:**
|
|
```typescript
|
|
'dashboard' // Dashboard
|
|
'vehicles' // Veículos
|
|
'drivers' // Motoristas
|
|
'maintenance' // Manutenção
|
|
'finances' // Finanças
|
|
'routes' // Rotas
|
|
'reports' // Relatórios
|
|
'settings' // Configurações
|
|
```
|
|
|
|
### **Submenus:**
|
|
```typescript
|
|
'finances/accountpayable' // Contas a Pagar
|
|
'routes/mercado-live' // Mercado Live
|
|
'routes/shopee' // Shopee
|
|
```
|
|
|
|
## 🎨 Comportamento Visual
|
|
|
|
### ✅ **Botões Liberados:**
|
|
- Funcionam normalmente
|
|
- Cor e hover padrão
|
|
- Clique navega para a página
|
|
|
|
### 🚫 **Botões Bloqueados:**
|
|
- Aparência acinzentada (opacity: 0.5)
|
|
- Ícone de cadeado (🔒) no final
|
|
- Cursor `not-allowed`
|
|
- Tooltip com motivo do bloqueio
|
|
- Clique não navega
|
|
- Submenus não expandem
|
|
|
|
## 💡 Exemplos Práticos
|
|
|
|
### **Deploy com Manutenção Bloqueada:**
|
|
```typescript
|
|
private temporaryBlocks: { [key: string]: boolean } = {
|
|
'maintenance': true, // 🚫 Em refatoração
|
|
'reports': true, // 🚫 Aguardando nova API
|
|
'settings': false, // ✅ Funcionando
|
|
};
|
|
```
|
|
|
|
### **Deploy com Shopee Desabilitado:**
|
|
```typescript
|
|
private temporaryBlocks: { [key: string]: boolean } = {
|
|
'routes/shopee': true, // 🚫 API em manutenção
|
|
'routes/mercado-live': false, // ✅ Funcionando
|
|
};
|
|
```
|
|
|
|
### **Liberar Tudo (Deploy Final):**
|
|
```typescript
|
|
private temporaryBlocks: { [key: string]: boolean } = {
|
|
// Todos os valores false ou remover as linhas
|
|
};
|
|
```
|
|
|
|
## 🔧 Personalização Avançada
|
|
|
|
### **Alterar Mensagem do Tooltip:**
|
|
|
|
Edite o método `applyTemporaryBlocks()` (linha ~1080):
|
|
|
|
```typescript
|
|
if (this.temporaryBlocks[item.id]) {
|
|
item.disabled = true;
|
|
item.disabledReason = 'Sua mensagem personalizada aqui';
|
|
}
|
|
```
|
|
|
|
### **Diferentes Mensagens por Item:**
|
|
|
|
```typescript
|
|
private applyTemporaryBlocks(): void {
|
|
const customMessages: { [key: string]: string } = {
|
|
'maintenance': 'Manutenção em refatoração - aguarde próxima versão',
|
|
'reports': 'Relatórios temporariamente indisponíveis',
|
|
'settings': 'Configurações em manutenção programada'
|
|
};
|
|
|
|
this.menuItems = this.menuItems.map(item => {
|
|
if (this.temporaryBlocks[item.id]) {
|
|
item.disabled = true;
|
|
item.disabledReason = customMessages[item.id] || 'Funcionalidade temporariamente indisponível';
|
|
}
|
|
// ... resto do código
|
|
});
|
|
}
|
|
```
|
|
|
|
## 🚀 Fluxo de Deploy
|
|
|
|
### **1. Antes do Deploy:**
|
|
```typescript
|
|
// Bloquear funcionalidades não finalizadas
|
|
private temporaryBlocks: { [key: string]: boolean } = {
|
|
'maintenance': true,
|
|
'reports': true,
|
|
'settings': true,
|
|
};
|
|
```
|
|
|
|
### **2. Compilar e Testar:**
|
|
```bash
|
|
ng build idt_app --configuration production
|
|
# Testar no ambiente de staging
|
|
```
|
|
|
|
### **3. Deploy em Produção:**
|
|
```bash
|
|
# Deploy com botões bloqueados
|
|
```
|
|
|
|
### **4. Depois das Correções:**
|
|
```typescript
|
|
// Liberar funcionalidades corrigidas
|
|
private temporaryBlocks: { [key: string]: boolean } = {
|
|
'maintenance': false, // ✅ Corrigido
|
|
'reports': true, // 🚫 Ainda em trabalho
|
|
'settings': false, // ✅ Corrigido
|
|
};
|
|
```
|
|
|
|
### **5. Deploy Final:**
|
|
```typescript
|
|
// Liberar tudo
|
|
private temporaryBlocks: { [key: string]: boolean } = {};
|
|
```
|
|
|
|
## 🎯 Benefícios
|
|
|
|
### ✅ **Para Deploy:**
|
|
- Deploy seguro com funcionalidades incompletas
|
|
- Usuários não acessam páginas quebradas
|
|
- Feedback visual claro sobre indisponibilidade
|
|
|
|
### ✅ **Para Desenvolvimento:**
|
|
- Controle granular por botão/submenu
|
|
- Configuração simples e rápida
|
|
- Reversível sem código complexo
|
|
|
|
### ✅ **Para Usuários:**
|
|
- Interface consistente
|
|
- Não quebra navegação
|
|
- Feedback claro sobre status
|
|
|
|
## ⚠️ Observações Importantes
|
|
|
|
1. **Temporário**: Este sistema é para bloqueios temporários, não permanentes
|
|
2. **Não substitui**: Controle de permissões real (roles/permissions)
|
|
3. **Deploy**: Sempre testar antes de fazer deploy
|
|
4. **Documentar**: Comentar motivos dos bloqueios no código
|
|
5. **Limpar**: Remover bloqueios quando funcionalidades estiverem prontas
|
|
|
|
## 🔄 Rollback Rápido
|
|
|
|
Para reverter bloqueios rapidamente:
|
|
|
|
```typescript
|
|
private temporaryBlocks: { [key: string]: boolean } = {
|
|
// Comentar linha para liberar:
|
|
// 'maintenance': true, // ← Comentado = liberado
|
|
};
|
|
```
|
|
|
|
---
|
|
|
|
**Este sistema permite deploy seguro e controlado, evitando que usuários acessem funcionalidades em desenvolvimento.** 🚀 |