Modificar uma super widget

Alguem ja modificou via programação uma superwisget via programação. ja vi alguns codigos na net mas não consegui fazer no fluig. Ate chega a rodar mas as funções nativas se perdem.

Isso é muito util para modificar funções padrões do fluig.

At.te
Daniel Sales

Fiquei curioso pra entender a motivação.

Pelo que vi o objeto SuperWidget é derivado de Object, ou seja nem tem uma classe pra estender. O método instance que faz a “mágica” de configurar um monte de coisas, enquanto o extend faz um clone do objeto tratando os casos dos bindings.

Você pode “clonar” a SuperWidget, fazendo um

var MinhaSuperWidget = SuperWidget.mergeObjects(SuperWidget, {});

Então mudar os métodos da MinhaSuperWidget e então nas novas Widgets fazer o extend nela.

MinhaSuperWidget.minhaSuperFuncao = function () {};

var minhaWidget = MinhaSuperWidget.extend({
    /* continua a widget */
});

Acredito que funcionaria.

Bom dia bruno,

Segue a necessidade:
Preciso saber exatamente quando um upload terminou para tomar algumas ações dentro do meu codigo. Vi que o fluig tem uma widget ou algo do tipo que não consegui identificar que contro.a todos os uploads que se chama FileMonitor. ela ate tem alguns metodos que eu n ão consegui utilizar por falta de conhecimento, dai a necessidade de modificar esse carinha e colocar a chamada da minha função em algum metodo dele.

Eu quero fazer lguns ajustes visuais apos o upload terminar e se usar o settimeout as vezes o formulario fica lento ou trava devido a ele rodar de tempos em tempos.

Se por acaso tiver alguma dica agradeço.

Bom dia Bruno,

Retomando esse velho assunto descobri algumas superwidgets padrão do fluig tais como a ECM,ECM_WKFView, FileUpload e etc.
Por exemplo surgiu uma demanda aqui de modificar a tela de cancelamento padrão do fluig em um determinado fluxo. eu ate achei a função que gera o modal de cancelamento e cheguei a modificar ela e de mais ou menos certo. A tela ficou como eu queria. mas na hora de clicar no botão cancelar ele perde as referencias. Dai o problema . Tenho que descobrir pelo menos como acessar essas superwidgets sem que se perca a referencia.
Tem alguma ideia?

@Daniel_Sales , eu não cheguei a pesquisar mais o assunto. Vou até dar uma olhada porque essa questão de modificar a tela padrão pode ser útil.

Aqui eu já modifiquei a modal do cancelamento para dar uma mensagem mais clara de que ao cancelar uma solicitação é impossível reabrir e que seria necessário iniciar uma nova solicitação. Mas eu fiz isso simplesmente alterando o texto da modal original. Também já ocultei o botão Cancelar e o botão Transferir em algumas situações.

Porém tudo isso só porque utilizamos o fluig quase totalmente via Browser e assim é possível fazer alterações dos elementos após eles carregarem.

pode me passar o que você usou e como?

O que eu estou tentando fazer é isso aqui

parent.ECM_WKFView.cancel=function() {
		if (this.isCancelable) {
			FLUIGC.modal(
				{
					title : 'Cancelar Solicitação de virus',
					content : Mustache.render($('#template-cancelm').html()),
					id : 'workflowView-cancel-modal',
					size : 'normal',
					actions : [ 
						{
							label : 'Cancelar Solicitação',
							bind : 'data-cancel-request'
						}, 
						{
							label : 'Descartar',
							autoClose : true
						} 
					]
				}
			);
		} else {
			this.warn('Esta solicitação não pode ser cancelada!')
		}
	}

Isso ate funciona mas la no modal context ele perde a referencia do template e se eu ponho meu conteudo o botão cancelar para de funcionar

Aqui fizemos isso:

/**
 * Modifica as opções de Cancelar a Solicitação
 */
 function changeCancelMenu() {
    // Quando está em atividade do Responsável que é Solicitante só melhora o alerta
    parent.$("a[data-cancel-workflow-request]")
        .css({"color": "#FFF", "backgroundColor": "#d9534f"})
        .html("Cancelar a Contratação")
        .on("click", function () {
            setTimeout(function () {
                const modal = parent.$("#workflowView-cancel-modal");
                modal.find("h4").html("<b>Cancelar a Contratação - Ação Irreversível</b>");
                modal.find(".btn-primary").removeClass("btn-primary").addClass("btn-danger").html("Cancelar a Contratação");
            }, 400);
    });

    // Quando está em atividade do Responsável que é Solicitante remove a transferência
    parent.$("a[data-transfer]").remove();

    // Quando está em atividade que o Solicitante não é o responsável remove o botão de cancelar
    parent.$("button[data-cancel-workflow-request]").remove()
}

$(function () {
    changeCancelMenu();
});
2 curtidas

Valeu pela ajuda, não foi bem do jeito que achei que seria mas me ajudou muito.

1 curtida

Na época tivemos que arranjar uma solução rápida (pessoal estava cancelando a solicitação achando que estava cancelando o envio pra aprovação da gerência), então fizemos isso de alterar os elementos HTML.

Mas a sua ideia de alterar os componentes do Fluig é bem interessante. Quando eu estiver mais tranquilo vou até estudar um pouco mais os componentes. Mas acho que vou esperar chegar o 1.8, já que ele será responsivo e provavelmente vai mudar bastante coisa dos componentes.

Eu até consegui modificar a função mas dava erro nas referencias w tal nas chamadas dos templates padrões. e o botão de cancelar propriamente dito parava de funcionar um pouquinho mais de paciência e vamos mudar tudo no fluig.