Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagejs
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();
    	}
    }
});

W tym momencie mamy już gotową akcję. Akcja wykorzystując metody enabledisable oznacza, że jest przystosowana do wykonywania warunkowego. Zdefiniujemy zatem jeszcze funkcję, która będzie mogła być użyta jako warunek wykonania akcji. Ustawienie warunku odbywa się za pomocą narzędzia PlusWorkflowEditor.

Definicja funkcji na serwerze

Code Block
languagejava
@Functions
public class BasicFunctions
{
    @Function
    public Boolean le( Float a, Float b )
    {
        return a.floatValue() <= b.floatValue();
    }
} 

Implementacja funkcji po stronie przeglądarki

Code Block
languagejs
Functions.register({
	name: "le",
	fn: function(value1, value2) {
		return value1 <= value2;
	},
	parameterTypes: ["float", "float"]
});

Wykorzystanie tej funkcji jako warunek wykonania akcji oznaczać będzie, że akcji zostanie uruchomiona, gdy value1 będzie mniejsze lub równe od value2. W przeciwnym razie akcja zostanie zatrzymana.

Na koniec należy "powiedzieć" systemowi, że wtyczka udostępnia akcje i funkcje. W tym celu należy dodać wpisy do pliku suncode-plugin.xml:

Code Block
languagexml
<!-- Udostępnianie akcji -->
<form-actions key="actions" />
 
<!-- Udostępnianie funkcji-->
<functions key="functions" />

<!-- Lokalizacja do skryptów z funkcjami-->
<web-scripts key="formScripts" fragment="form" >
	<resource>/resources/functions/functions.js</resource>
</web-scripts>