Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

W tym miejscu zostanie opisany przykład utworzenia we wtyczce warunkowej akcji formularza, która będzie ukrywać/pokazywać zmienne w zależności od wartości innej zmiennej.

Opis tworzenia wtyczki systemowej znajduje się tutaj: http://192.168.1.52:8081/confluence/display/PWFL31/1.+Stworzenie+projektu+wtyczki, więc przyjmujemy, że wtyczkę mamy już stworzoną.

Utworzenie definicji akcji na serwerze

@Action
@ActionScript( "resources/actions/test/hiding-variables-action.js" )
public class HidingVariablesAction
{
    @DefineAction
    public void action( ActionDefinitionBuilder action )
    {
        action
            .id( "hiding-variables-action" )
            .name( "hiding.variables.name" )
            .description( "hiding.variables.desc" )
            .icon( SilkIconPack.APPLICATION_FORM )
            .category( Categories.TEST )
            .destination( ActionDestination.form() )
            .parameter().id( "variables" ).description( "variables.to.show.hide" ).name( "variables.to.show.hide" ).type( Type.VARIABLE ).array().create();
    }
}

Powyżej zdefiniowaliśmy akcję hiding-variables-action z jednym parametrem tablicowym, którego elementy są typu VARIABLE, czyli obiekty zmiennych formularza. Implementacja akcji po stronie przeglądarki znajduje się w skrypcie "resources/actions/test/hiding-variables-action.js".

Utworzenie implementacji akcji po stronie przeglądarki

var variableService = ServiceFactory.getVariableService();
 
FormActions.create('hiding-variables-action', {
 
	//@override
	init: function() {
		this.variables = this.value("variables");
	},
 
	//@override
    enable: function(){
    	this.hideVariables();
    },
    
	//@override
    disable: function(){
    	this.showVariables();
    },
    
    hideVariables: function() {
    	this.setVariablesVisibility(false);
    },
    
    showVariables: function() {
    	this.setVariablesVisibility(true);
    },
    
    setVariablesVisibility: function(visible) {
    	SuncodeFormService.suspendLayouts();
    	try {
        	Ext4.Array.each(this.variables, function(variable){
        		if(visible) {
        			variableService.show(variable.id);
        		}
        		else {
        			variableService.hide(variable.id);
        		}
        	}, this);
    	}
    	finally {
    		SuncodeFormService.resumeLayouts();
    	}
    }
});
  • No labels