...
Rejestracja po stronie przeglądarki
Po stronie przeglądarki musimy sami zarejestrować funkcję. W tym celu należy wywołać metodę register z Używanie stworzonej funkcji po stronie przeglądarki (na formularzu zadania) wymaga od programisty dostarczenia jej implementacji w języku JavaScript. Taka implementacja wykorzystywana jest podczas dynamicznych obliczeń po stronie przeglądarki klienta.
Funkcje rejestrowane są z wykorzystaniem API
Jsdoc | ||||
---|---|---|---|---|
|
PW.Functions
):Code Block | ||
---|---|---|
| ||
// funkcja "max" która zwraca obiekt typu "float" i przyjmuje 2 parametry typu "float" PW.Functions.register({ name: "maxOf", fn:"max", "float", ["float", "float"], function(value1, value2) { return Math.max(value1, value2); }, parameterTypes: ["float", FloatType] }); |
W tym przypadku zarejestrowaliśmy funkcję o nazwie maxOf z implementacją przekazaną we właściwości fn.
Właściwość parameterTypes jest opcjonalna, jednak w większości przypadków powinna być uzupełniana. Określa ona typy parametrów funkcji, dzięki czemu podczas wywoływania funkcji podane wartości parametrów są konwertowane do tych typów. Parametry podajemy w takiej samej kolejności jak występują one w funkcji. Parametry możemy podać jako klucz typu (float), lub jako obiekt typu (FloatType). Jeżeli funkcja zostanie wywołana z większą ilością parametrów niż ilość zdefiniowanych typów, to wszystkie dodatkowe parametry zostaną przekonwertowane do typu, który jest ostatni w tablicy.
Note |
---|
Należy pamiętać, że każda funkcja zarejestrowana po stronie przeglądarki musi mieć swój odpowiednik po stronie serwera.); |
Podczas rejestracji funkcji niezbędne jest zdefiniowanie:
- nazwy (można zarejestrować wiele funkcji o tej samej nazwie ale musza mieć one inne typy parametrów)
- typu zwracanej wartości
- typów parametrów
- implementacji funkcji
Tak zarejestrowana funkcja zostanie wywołana tylko dla wywołań z argumentami które będą pasowały do zdefiniowanych typów (albo będą tego samego typu albo mogą zostać przekonwertowane).
Info |
---|
Oczywiście tak przygotowany skrypt musi zostać wstrzyknięty w obszar formularza zadania. Więcej o wstrzykiwaniu skryptów tutaj. |
Funkcje ogólne
Jeżeli podczas rejestracji funkcji nie zdefiniujemy typów parametrów, to funkcja będzie traktowana jako implementacja ogólna. Taka implementacja zostaje wywołana jeżeli nie będzie żadnej innej implementacji funkcji, która może zostać wywołana z aktualnymi parametrami. Parametry przekazane do takiej funkcji są instancjami klasy
Jsdoc | ||||
---|---|---|---|---|
|
Code Block | ||
---|---|---|
| ||
// brak zdefiniowanych typów
PW.Functions.register("isVariable", "boolean", function(arg1){
// arg1 jest obiektem klasy PW.component.Arg
return !arg1.isArray && arg.value.is("variable");
}); |
Rejestracja we wtyczce
Rejestracja funkcji we wtyczce jest taka sama jak zostało to opisane powyżej, jednak należy dodatkowo zaznaczyć, że wtyczka ta udostępnia funkcje do zarejestrowania. W tym celu należy w pliku suncode-plugin.xml dodać wpis:
Code Block | ||
---|---|---|
| ||
<functions key="functions" /> |
Jest to wymagane, aby nie trzeba było przeszukiwac wszystkich uruchomionych wtyczek, tylko te, które faktycznie posiadają funkcjeTaki wpis spowoduje automatyczne wyszukanie wszystkich zdefiniowanych funkcji.
Wykorzystanie funkcji po stronie przeglądarki
...