- Wspólny interfejs
- Zakładki
- Drzewko
- Akordeon
- Dynamiczna tabela
Wspólny interfejs
Wszystkie kontrolki (oprócz dynamicznej tabeli) są rozszerzeniami obiektu LiveWidget, dzięki czemu posiadają wspólny podstawowy interfejs. Obiekt LiveWidget zawiera szereg metod, atrybutów oraz funkcji zdarzeniowych kontrolujących grupy logicznie połączonych ze sobą elementów pobierających dane z serwera po ich wybraniu. Do metod publicznych, dostępnych w każdej kontrolce zbudowanej na bazie obiektu LiveWidget, należą AddItem, RemoveItem oraz GetItem. Pierwsza z nich dodaje element do kontrolki (przyjmuje różne parametry w zależności od rodzaju kontrolki) i zwraca obiekt typu LiveItem, druga funkcja usuwa podany element natomiast ostatnia z funkcji zwraca element o podanej nazwie znajdujący się w kontrolce. Lista wszystkich atrybutów oraz funkcji zdarzeniowych znajduje się w dokumentacji poszczególnych kontrolek.
Każdy obiekt w kontrolce zawiera pięć podstawowych atrybutów, są to: element powiązany z obiektem LiveItem, nazwa obiektu wysyłana do serwera jako parametr określony w atrybucie itemParam w kontrolce, typ pobieranej zawartości ("text", "xml" lub "json"), adres wywoływany po stronie serwera po wybraniu obiektu (domyślnie wywoływana jest strona określona jako atrybut link w kontrolce) oraz pamięć podręczna.
Obiekt LiveWidget umożliwia płynną zamianę zawartości tj. po odebraniu odpowiedzi z serwera stara treść płynnie znika, po czym pojawia się nowa. Domyślnie ta opcja jest wyłączona, w celu jej włączenia wystarczy ustawić parametr fading na true. Czas trwania animacji określa atrybut fadeDuration, natomiast ilość kroków fadeSteps.
Ustawienia zapytań wysyłanych do serwera przez kontrolki znajdują się w atrybucie reqConfig (obiekt zawierający pary "atrybut: wartość")
Zakładki
Kontrolka do obsługi zakładek składa się z elementów służących jako
zakładki oraz powierzchni do wyświetlania ich zawartości. Do utworzenia
kontrolki TabWidget służy funkcja mint.gui.CreateTabWidget, wywoływana z jednym parametrem wymaganym (identyfikatorem lub elementem, gdzie wstawiana jest zawartość zakładek) oraz dwoma opcjonalnymi (nazwa kontrolki wysyłana do serwera jako parametr określony atrybutem widgetParam oraz wspólny dla wszystkich zakładek adres wywoływany po stronie serwera po kliknięciu na zakładkę). W celu dodania zakładki do kontrolki, wywołujemy funkcję AddItem
przyjmującą cztery parametry: identyfikator lub element
służący jako zakładka, nazwa zakładki wysyłana do serwera jako parametr określony atrybutem itemParam, typ
zawartości oraz adres wywoływany po wybraniu
zakładki (domyślnie używany jest wspólny adres ustawiony jako atrybut link w obiekcie kontrolki).
W poniższym przykładzie tworzymy kontrolkę TabWidget z trzema zakładkami:
Przykład
function OnLoad() {
var tabs = mint.gui.CreateTabWidget("tabsContent");
tabs.fading = true;
tabs.activeClass = "active";
tabs.hoverClass = "hover";
tabs.AddItem("tab1", "tab1", "text", "tab1.html");
tabs.AddItem("tab2", "tab2", "text", "tab2.html");
tabs.AddItem("tab3", "tab3", "text", "tab3.html");
mint.fx.Round("tabsContentOuter", "all", "small", true);
}
<div id="tab1"></div>
<div id="tab2"></div>
<div id="tab3"></div>
<div id="tabsContentOuter">
<div id="tabsContent"></div>
</div>
Drzewko
Do utworzenia kontrolki drzewka służy funkcja mint.gui.CreateTreeWidget przyjmująca dwa parametry wymagane (pole, gdzie dodawane będą kolejne elementy i powierzchnia gdzie wstawiana będzie zawartość pobrana z serwera) oraz dwa parametry opcjonalne (nazwa drzewka wysyłana do serwera jako parametr określony w atrybucie widgetParam w obiekcie kontrolki i domyślny adres wywoływany po stronie serwera) - funkcja zwraca obiekt TreeWidget. Funkcja AddItem, dodająca nowe elementy, przyjmuje dwa parametry wymagane (element nadrzędny i nazwa elementu) oraz trzy opcjonalne (typ zawartości, adres wywoływany po wybraniu elementu oraz wyświetlany tekst, domyślnie wyświetlana jest nazwa elementu).
W obiekcie drzewka możemy określić ikony oraz klasy zmieniające się w zależności od aktualnego stanu elementu, spis wszystkich stanów wraz z odpowiadającymi im atrybutami znajduje się w dokumentacji obiektu TreeWidget.
Kontrolka drzewka posiada możliwość płynnego rozwijania oraz zwijania elementów, domyślnie opcja ta jest włączona - aby ją wyłączyć należy ustawić atrybut foldAnimation na false. Czas trwania zwijania/rozwijania określa atrybut foldDuration, natomiast ilość kroków foldSteps.
Domyślnie elementy są zwijane/rozwijane od razu po kliknięciu, jeśli chcemy aby zwijanie/rozwijanie następowało dopiero po wybraniu elementu, należy ustawić atrybut selectBeforeOpen na true. Ponadto nowo dodane elementy są domyślnie rozwinięte, jeśli chcemy zmienić to zachowanie wystarczy ustawić atrybut newItemUnfold na false.
Elementy drzewka możemy usuwać, wywołując funkcję RemoveItem podając jako jedyny parametr nazwę lub obiekt TreeItem elementu do usunięcia, oraz przesuwać wywołując funkcję MoveBefore lub MoveAfter - pierwsza z nich przesuwa element przekazany jako pierwszy parametr przed element przekazany jako drugi parametrem, natomiast druga funkcja przesuwa element za podanym elementem.
function OnLoad() {
var tree = mint.gui.CreateTreeWidget("tree", "target");
tree.areaClass = "area";
tree.imageClass = "img";
tree.itemClass = "item";
tree.itemImage = "img/item.gif";
tree.itemSelectImage = "img/item_select.gif";
tree.foldImage = "img/fold.gif";
tree.unfoldImage = "img/unfold.gif";
tree.AddItem(null, "node1", null, null, "Node #1");
tree.AddItem("node1", "node2", "text", "tree/node2.html", "Node #2");
tree.AddItem("node1", "node3", "text", "tree/node3.html", "Node #3");
tree.AddItem("node1", "node4", null, null, "Node #4");
tree.AddItem("node4", "node5", "text", "tree/node5.html", "Node #5");
tree.AddItem("node4", "node6", "text", "tree/node6.html", "Node #6");
tree.AddItem(null, "node7", "text", "tree/node7.html", "Node #7");
tree.AddItem(null, "node8", "text", "tree/node8.html", "Node #8");
}
<div id="tree"></div>
<div id="target"></div>
Ponadto kontrolka drzewka umożliwia dynamiczne ładowanie elementów z serwera przekazanych w formacie JSON poprzez wywołanie funkcji Load z jednym parametrem określającym adres skąd pobrane mają zostać elementy (dokładniejszy opis formatu znajduje się w dokumentacji elementu TreeWidget).
W poniższym przykładzie ładujemy dynamicznie kilka elementów z pliku grid.txt:
function OnLoad() {
var tree = mint.gui.CreateTreeWidget("tree", "target");
tree.areaClass = "area";
tree.imageClass = "img";
tree.itemClass = "item";
tree.itemImage = "img/item.gif";
tree.itemSelectImage = "img/item_select.gif";
tree.foldImage = "img/fold.gif";
tree.unfoldImage = "img/unfold.gif";
tree.Load("grid.txt");
}
[
{
name: "node1",
title: "Node #1",
child:
[
{
name: "node2",
title: "Node #2",
type: "text",
link: "node2.txt"
},
{
name: "node3",
title: "Node #3",
type: "text",
link: "node3.txt"
}
]
},
{
name: "node4",
title: "Node #4",
type: "text",
link: "node4.txt"
}
]
<div id="tree"></div>
<div id="target"></div>
Akordeon
Obiekty w kontrolce akordeonu składają się z elementu nagłówka oraz elementu z zawartością. Po kliknięciu na element nagłówka pobierana jest zawartość z serwera, która zostaje wstawiona do odpowiedniego elementu, po czym element ten jest płynnie rozwijany. Do tworzenia kontrolki akordeonu służy funkcja mint.gui.CreateAccordeonWidget przyjmująca dwa parametry opcjonalne: nazwę akordeonu, wysyłaną przy pobieraniu zawartości jako parametr ustawiony w atrybucie widgetParam, oraz domyślny adres strony, skąd pobierana będzie zawartość paneli. Funkcja AddItem w obiekcie AccordionWidget, dodająca nowe panele, przyjmuje dwa parametry wymagane (element nagłówka oraz element na zawartości) oraz trzy opcjonalne (nazwa obiektu, typ zawartości oraz adres strony, skąd pobierana będzie zawartość dodawanego panelu).
Domyślnie zwijanie/rozwijanie paneli następuje po kliknięciu na nagłówek, możliwe jest jednak włączenie otwierania paneli po najechaniu kursorem na nagłówek, aby skorzystać z tej możliwości wystarczy ustawić atrybut overOpen na true, natomiast aby określić czas jaki musi upłynąć od najechania kursorem na nagłówek do otwarcia panelu należy ustawić ten czas jako wartość atrybutu overWait (w milisekundach).
Elementy rozwijane są domyślnie na wysokość wystarczającą do pomieszczenia zawartości, jesli chcemy aby przyjmowały one jedną ustaloną wysokość, wystarczy ustawić tą wysokość jako atrybut staticHeight w obiekcie kontrolki.
function OnLoad() {
var accordion = mint.gui.CreateAccordionWidget();
accordion.openClass = "open";
accordion.hoverClass = "hover";
accordion.AddItem("header1", "target1", "panel1", "text", "panel1.html");
accordion.AddItem("header2", "target2", "panel1", "text", "panel2.html");
accordion.AddItem("header3", "target3", "panel1", "text", "panel3.html");
}
<div id="header1" class="header">Header #1</div>
<div id="target1" class="target"></div>
<div id="header2" class="header">Header #2</div>
<div id="target2" class="target"></div>
<div id="header3" class="header">Header #3</div>
<div id="target3" class="target"></div>
Dynamiczna tabela
Kontrolka dynamicznej tabeli umożliwia sortowanie wierszy w zwykłej tabeli bez przeładowywania strony, dynamiczne ładowanie danych z serwera oraz operacje na wierszach, w tym ich zaznaczanie po kliknięciu. Do tworzenia kontrolek GridWidget służy funkcja mint.gui.CreateGridWidget i przyjmuje ona jeden parametr jakim jest identyfikator tabeli lub tabela.
Kolumny sortowalne ustawia się poprzez wywołanie funkcji AddSortCells, przyjmującej dowolną ilość parametrów oznaczających indeksy kolumn, po kliknięciu których wiersze tabeli zostaną posortowanie zgodnie z danymi znajdującymi się w danej tabeli. Funkcję można również wywołać bez podawania żadnych parametrów, w takim przypadku wszystkie kolumny tabeli zostaną ustawione jako sortowalne. Sortowanie odbywa się według łańcuchów znaków (od wersji 1.2 również z polskimi znakami), liczb oraz dat (w formacie DD-MM-YYYY lub YYYY-MM-DD, gdzie DD oznacza dzień, MM miesiąc, a YYYY rok). Z sortowaniem powiązanych jest kilka atrybutów, których opis znajdziesz w dokumentacji obiektu GridWidget.
Dynamiczna tabela pozwala również na ładowanie danych z serwera, służą do tego dwie funkcje: LoadTextData oraz LoadJSONData - obie funkcje przyjmują jeden parametr, jakim jest adres skąd pobierane będą dane. Pierwsza z funkcji ładuje dane w postaci tekstowej, gdzie wiersze oddzielone są znakiem określonym w atrybucie remoteRowSeparator (domyślnie ";"), a dane w każdym z wierszy znakiem określonym w atrybucie remoteDataSeparator (domyślnie ","). Ustawienia zapytań wysyłanych do serwera znajdują się w atrybucie reqConfig (obiekt zawierający pary "atrybut: wartość").
Kolejną możliwością dynamicznych tabel jest zaznaczanie wierszy po kliknięciu na nie, jeśli chcemy skorzystać z tej możliwości wystarczy wywołać funkcję SetSelective - po wstawieniu nowych wierszy, czy to ręcznie czy z serwera, zostaną one automatycznie ustawione jako możliwe do zaznaczenia. Domyślnie możliwe jest zaznaczanie wielu wierszy, aby umożliwić jednoczesne zaznaczenie tylko jednego wiersza należy ustawić atrybut multiSelect na false. Z zaznaczaniem wierszy powiązanych jest kilka innych atrybutów oraz funkcji - ich opis znajdziesz w dokumentacji obiektu GridWidget.
function OnLoad() {
var grid = mint.gui.CreateGridWidget("grid");
grid.selectClass = "select";
grid.AddSortCells();
grid.SetSelective();
grid.InsertRow("40", "Consectetuer", "18-05-2005");
grid.InsertRow("18", "Adipiscing", "24-06-2007");
grid.LoadTextData("remote.txt");
}
<table id="grid">
<thead>
<tr>
<td>Liczba</td>
<td>Tekst</td>
<td>Data</td>
</tr>
</thead>
<tbody>
<tr>
<td>15</td>
<td>Lorem</td>
<td>05-02-2006</td>
</tr>
<tr>
<td>5.8</td>
<td>Ipsum</td>
<td>02-05-2007</td>
</tr>
<tr>
<td>26</td>
<td>Dolor</td>
<td>12-08-2005</td>
</tr>
<tr>
<td>5.2</td>
<td>Sit Amet</td>
<td>25-10-2007</td>
</tr>
</tbody>
</table>
56,Remote Lorem,20-04-2006
14,Remote Ipsum,24-12-2005
38.2,Remote Dolor,20-02-2007
5.9,Remote Sit Amet,10-04-2007
|