🗂️ Menus Personalizados

Guia para criar menus customizados na interface do Sankhya.

Menus são o ponto de entrada para as funcionalidades do seu add-on no Sankhya Om. Eles organizam o acesso a formulários, telas e outras ações de forma hierárquica na barra de navegação principal.

A definição dos menus é feita inteiramente no dicionário de dados, utilizando principalmente as tags <menu>, <nativeFolder> e <folder>.


🧱 Estruturando Seus Menus

Existem duas abordagens principais para integrar seu add-on ao sistema de menus:

  1. Criar um novo menu principal: Ideal para add-ons com muitas funcionalidades que justificam um ponto de entrada exclusivo.
  2. Adicionar itens a um menu nativo: Perfeito para funcionalidades que complementam módulos existentes do sistema (ex: Cadastros, Configurações), proporcionando uma experiência de usuário mais fluida.

Opção 1: Criando um Novo Menu Principal com <menu>

Use a tag <menu> para adicionar um novo item de nível superior na barra de navegação.

<!-- arquivo: src/main/resources/datadictionary/SGT_MENU.xml -->
<metadados>
    <!-- A tag <menu> define o menu principal (nível 1) -->
    <menu id="SGT_MEUMENU" description="Meu Add-on" icon="/$ctx/assets/meu_icone.png">
        <!-- Conteúdo do menu, como folders e dynamicForms -->
    </menu>
</metadados>
AtributoDescriçãoExemplo
idIdentificador único para o menu. Use um prefixo.SGT_MEUMENU
descriptionO texto que será exibido para o usuário.Meu Add-on
icon(Opcional) URL do ícone a ser exibido ao lado do menu./$ctx/assets/icon.png

Opção 2: Adicionando Itens a Menus Nativos com <nativeFolder>

Use a tag <nativeFolder> para "anexar" novos itens a um menu que já existe no Sankhya Om.

<!-- arquivo: src/main/resources/datadictionary/SGT_NATIVE_MENU.xml -->
<metadados>
    <!-- Adiciona itens ao menu nativo de Configurações -->
    <nativeFolder resourceId="sankhya.core.configuracoes">
        <!-- Conteúdo a ser adicionado, como folders e dynamicForms -->
    </nativeFolder>
</metadados>
AtributoDescriçãoExemplo
resourceIdresourceID da pasta nativa que você deseja estender.sankhya.core.configuracoes

Nota: Para descobrir o id de um menu nativo, você pode inspecionar a interface do Sankhya Om com as ferramentas de desenvolvedor do navegador ou consultar a documentação técnica da plataforma.

Organizando com Submenus (<folder>)

Independentemente da abordagem escolhida, a tag <folder> é usada para criar submenus (pastas) e organizar os itens, como formulários e telas.

<menu id="SGT_MEUMENU" description="Meu Add-on">
    
    <!-- A tag <folder> cria um sub-menu (nível 2) -->
    <folder id="SGT_SUBMENU_CADASTROS" description="Cadastros">
        <!-- Formulário dinâmico dentro do sub-menu -->
        <dynamicForm id="SGT_FORM_TESTE" instance="SGT_Teste" description="Cadastro de Atendimentos"/>
    </folder>
    
</menu>
AtributoDescriçãoExemplo
idIdentificador único para a pasta. Use um prefixo.SGT_SUBMENU_CADASTROS
descriptionO texto que será exibido no submenu.Cadastros

🖼️ Ícones do Menu

Você pode usar ícones para dar uma identidade visual ao seu menu principal.

Ícones Locais

  1. Crie a pasta src/main/webapp/assets.
  2. Coloque seu arquivo de imagem (ex: meu_icone.png) dentro dela.
  3. No atributo icon da tag <menu>, use o caminho /$ctx/assets/seu_icone.png. A variável $ctx representa a raiz do seu add-on.

Ícones Externos

Você também pode usar uma URL pública de uma imagem:

<menu id="SGT_OUTRO_MENU" description="Externo" icon="https://exemplo.com/icone.svg" />

🚀 Deploy e Verificação

  1. Após configurar o menu, execute o deploy do add-on:

    ./gradlew clean deployAddon
  2. Acesse o Sankhya Om e verifique se o seu menu foi criado na barra de navegação.

    Exemplo de Menu Criado


✨ Boas Práticas

  • Hierarquia Lógica: Organize seus menus e sub-menus (<folder>) de forma que faça sentido para o usuário. Agrupe funcionalidades relacionadas.
  • Use Prefixos Únicos: Sempre use um prefixo que identifique seu add-on (ex: SGT_, MEUADDON_) nos IDs dos menus e folders para garantir que sejam únicos e não conflitem com outros.
  • Ícones Leves: Prefira ícones em formato SVG ou PNG otimizado para não impactar o tempo de carregamento da interface.

🚫 Anti-Patterns (O que evitar)

  • Aninhar<menu> dentro de<menu> : A tag <menu> deve ser usada apenas como o elemento raiz na barra de navegação. Para criar submenus, utilize a tag <folder>. Aninhar menus não é suportado e causará erros.
  • Usar o PrefixoAD_ : Este prefixo é reservado para uso interno do Sankhya Om. Utilizá-lo em seus componentes pode causar conflitos inesperados. Crie sempre um prefixo próprio para seu add-on.
  • IDs Duplicados: Usar o mesmo id para mais de um menu ou pasta. Isso causará um erro e o menu não será renderizado corretamente.
  • Caminhos de Ícone Quebrados: Apontar para um ícone que não existe ou que está no caminho errado. O menu aparecerá sem ícone.
  • Menu sem Conteúdo: Criar um menu ou pasta que não leva a nenhuma funcionalidade (formulário, tela, etc.). Isso confunde o usuário.