Skrypty dostarczające formularze będą dynamicznie ładowane w PWE: Wstrzykiwanie skryptów
Komponent budowałby formularz za pomocą funkcji np.: buildForm( form, options ), gdzie parametr form byłby kontenerem parametrów, a parametr options zawierał dodatkowe informacje, takie jak:
- destination - dostępny tylko dla akcji formularza, informuje o tym, do jakiego komponentu formularza akcja jest dodawana, dostępne wartości, to:
- FORM - formularz
- VARIABLE - zmienna
- VARIABLESET - tabela dynamiczna
- BUTTON - przycisk
Komponent należy zarejestrować za pomocą metody:
Ext.ux.suncode.IntegrationComponentService.registerComponent( id_komponentu, rejestracja )
Obiekt rejestracja musi posiadać następujące właściwości:
- buildForm - funkcja budująca formualrz parametrów
Założenia
- Możliwość rozmieszczania parametrów w miarę dowolny sposób.
- Możliwość podpinania zdarzeń pod pola parametrów:
- change
- blur
- Grupowanie parametrów (chyba tylko tablicowych) - chodzi o to, żeby mając np 2 parametry tablicowe, które są ze sobą powiązane (np ustawianie zmiennych - jeden parametr ze zmiennymi, a drugi z wartościami do ustawienia) była możliwość przedstawienia ich jako pary dla której byłby tylko jeden przycisk dodawania kolejnego elementu tablicy i ten przycisk jednocześnie dodawałby pola dla wszystkich zgrupowanych parametrów

- Ukrywanie / pokazywanie parametrów.
- Możliwość zdefiniowania wybieracza z wartościami dla parametru z określeniem czy można wpisać własną wartość lub wybrać funkcję, czy zmienną. Wydaje mi się, że będzie to mieć sens tylko dla parametrów o podstawowych typach.
- Możliwość filtrowania wartości, np.: dla parametru typu VARIABLE, możnaby przefiltrować jakie zmienne miałyby być wyświetlane. Np, gdy chcielibyśmy tylko zmienne typu FLOAT.
- Możliwość dodania zwykłego labela, chyba będzie przydatne do grupowania parametrów.
- Możliwość dodania checkboxa - umożliwiałby pokazywanie i ukrywanie parametrów.
- Możliwość definiowania sekcji, którą możnaby było zwinąć, taki fieldset zwijany.
Definicja formularza mogłaby wyglądać następująco:
buildForm: function( form ) {
//dodanie parametru w podstawowej formie
form.addField("parameter_id"); //parameter_id to id parametru zdefiniowanego w komponencie
//dodanie parameteru ze zdarzeniem change
form.addField({
id: "param_id",
onChange: function(value) {
if(value) {
form.showField("hiddenParam");
}
else {
form.hideField("hiddenParam");
}
}
});
//dodanie parametru, który jest ukryty podczas inicjalizacji
form.addField({
id: "hiddenParam",
hidden: true //domyślnie false
});
} |
API FORMULARZA
- addField (Object / parameterId) - dodaje pole parametru.
- removeField(parameterId) - usuwa pole parametru
- hideField (parameterId) - ukrywa parametr.
- showField(parameterId) - pokazuje parametr
- focusField(parameterId) - ustawia kursor w polu parametru
- addLabel("Label text") - dodaje label
- addCheckbox(Object) - dodaje checkbox
WŁAŚCIWOŚCI POLA PARAMETRU (FIELD)
- id,
- onChange,
- onBlur,
- hidden,
- optional,
- value,
- readOnly