...
Code Block |
---|
|
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 enable i disable 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 |
---|
|
@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 |
---|
|
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 |
---|
|
<!-- 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> |