Intervenção em widget padrão

Pessoal, boa tarde!

Já precisaram fazer algum tipo de intervenção ou manipulação em alguma widget padrão do Fluig sem clonar o componente? Quero ocultar um botão da central de tarefas - pensei na possibilidade de uma widget ‘invisível’ que navega no DOM e consegue interagir onde preciso. Acham possível?

O que já fiz foi fazer o header customizado que o Fluig permite com o custompage. Aí nele coloquei um JS que, de acordo com a URL, executava alguma coisa.

Fiz isso quando precisei que dar mais opções de itens por página no GED, já que só permitia 100 e aqui precisávamos de 1000 em algumas situações.

https://tdn.totvs.com/pages/releaseview.action?pageId=232816834

1 curtida

Sagaz, @Bruno_Gasparetto !! Muito obrigado! Quando acabar vou postar aqui o código.

@Bruno_Gasparetto , seguindo a dica, criei meu custompagehead.ftl - não está completo e polido mas a ideia toda está aqui - ocultar um botão baseado no grupo do usuário:

<script>
$(function() {
  const roleFornecedor = '036'; // Role de fornecedor
  // ELMINAR BOTÃO DE INICIAR NOVA SOLICITAÇÃO QUANDO FORNECEDOR LOGADO
  // verifica se usuário está na central de tarefas OU se está com uma widget que contenha o componente da central de tarefas padrão
  if (!location.href.includes('/pagecentraltask') || !$("#ecm-centralTask-container").length) {
    return;
  } else {
    this.getCurrentUserInfo(() => {
      if (this.currentUserRoles.includes(roleFornecedor)) {
        // Se o usuário for fornecedor, remove o botão de iniciar nova solicitação
        // Remove o botão de iniciar nova solicitação e toda a div
        $('#divNewRequest').remove();
      }
    });
  }
});
/**
 * Obtém informações do usuário atual
 * @function getCurrentUserInfo
 * @param {Function} callback - Função de callback a ser executada após obter as informações
 * @description Recupera o login e roles do usuário atual através da API do Fluig.
 * Define roles padrão em caso de erro.
 */
getCurrentUserInfo: function(callback) {
  const that = this;
  try {
    this.currentUserLogin = WCMAPI.getUserLogin();
    console.log('Current user login:', this.currentUserLogin);
    FLUIGC.ajax({
      url: '/ecm/api/rest/ecm/user/get/' + this.currentUserLogin,
      type: 'GET'
    }, (err, data) => {
      if (!err && data) {
        that.currentUserRoles = data.roles || [];
        console.log('Current user roles:', that.currentUserRoles);
      } else {
        console.error('Error getting user roles:', err);
        that.currentUserRoles = ['user'];
      }
      if (callback) {
        callback();
      }
    });
  } catch (error) {
    console.error('Error getting user info:', error);
    this.currentUserRoles = ['user'];
    if (callback) {
      callback();
    }
  }
},
</script>

Uma das coisas que preciso terminar é a questão de aguardar o render para só depois executar as ações. Mas a ideia tá aí. Muito obrigado!

1 curtida

Outra coisa é salvar um cache disso usando sessionStorage (acho que localStorage seria demais) ou cache mesmo, só pra não ficar fazendo consulta ajax em toda vez que entrar na central de tarefas.

1 curtida