Standardowa Biblioteka JavaScript 

Wprowadzenie

Dokument ten opisuje główne funkcje narzędziowe biblioteki XtendLib.js.

Zaleca się stosowanie standardowej i wyświetlanej jednakowo we wszystkich przeglądarkach biblioteki prototype.js (http://www.prototypejs.org) dla wszystkich projektów JavaScript:

  • programowania obiektowego w JS (klasy i dziedziczenie)
  • operacje manipulujące DOM HTML.
  • Manipulacja tablicami i hashami

prototype.js jest systematycznie ładowany poprzez token ALIBJS.

Biblioteka XtendLib.js jest dodatkiem do prototype.js i związana jest ze specyficznymi wymogami XTEND.

Globalnie

//---------------------------------------------
//Informacje o przeglądarce
//-> Użyj przeglądarki Prototype
vargXtdBowser;
//---------------------------------------------

//Kontekst, jaki klient wysyła do przeglądarki
// gXtdDomOut!=null jeżeli został kliknięty link dynamiczny
vargXtdDomOut;
//---------------------------------------------
// Obiekt służący do tworzenia kontekstu klienta
vargXtdDOMFactory;
//---------------------------------------------
//Wartość niezaznaczonych pól wyboru
//->Aktualizuj przez xtdSetUnSelelectedValue
vargXtdCBUnSelelectedValue='';
//---------------------------------------------
//Wartość służąca do wprowadzania ustawień pustych stron numerycznych
//czynności X3 przed wywołaniem usług sieciowych
//domyślnie puste: puste ustawienia nieinicjowane
//->Odśwież przez xtdSetEmptyNumFieldValue
vargXtdEmptyNumFieldValue=null;
//---------------------------------------------
//Klasa służąca do kontroli obowiązkowych ustawień sieciowych
//-> Aktualizuj przez xtdSetBadInputclass
vargXtdBadInputclass='xtdBadInput';
//---------------------------------------------
//Podstawowy obiekt AJAX
varXTENDAJAX;
//---------------------------------------------
// Obiekt AJAX do wywołań skryptów serwera
varXTENDSCRIPTS;
//---------------------------------------------
//Obiekt AJAX do wywołań usług sieciowych (interfejsów)
varXTENDWSVC;
//---------------------------------------------
//Obiekt AJAX do wywołań usług sieciowych komponentów Flash
varXTENDFLASH;
//---------------------------------------------
//Obiekt AJAX do wywołań komunikatów usług sieciowych
varXTENDMESS;
//---------------------------------------------
//Zarządzanie DOM XML
varXTENDDOM;

Ciągi

// ---------------------------------------------------------------
//Zastępuje aFind poprzez aReplace w aStr
//Ustawienia opcjonalne:
// -> aCaseInsensitive - domyślnie prawdziwe
// -> aAll - domyślnie prawdziwe
funkcjaxtdStrReplace(aStr,aFind,aReplace,aCaseInsensitive,aAll)
// ---------------------------------------------------------------
//Identyczne xtdStReplace, jednak służące do usuwania
funkcjaxtdStrRemove(aStr,aFind,aCaseInsensitive,aAll)
// ---------------------------------------------------------------
//Prawdziwe, jeśli aStr1=aStr2
//Ustawienia opcjonalne:
// -> aCaseInsensitive - domyślnie prawdziwe
funkcjaxtdStrEquals(aStr1,aStr2,aCaseSensitive)
// ---------------------------------------------------------------
//Usuwa puste miejsca, tabulatory i podziały wierszy
funkcjaxtdFullTrim(aStr)

Numeryczne elementy kontrolne

// ---------------------------------------------------------------
//Zwraca zero lub wartość numeryczną odpowiadającą aStr
//Uwzględnia „UstawieniaRegionalne” użytkownika XTEND
// -> aInt: Opcjonalne
// -> Prawda do wymuszania zwrotu liczby całkowitej
funkcjaxtdCheckNum(aStr,aInt)
// ---------------------------------------------------------------
//Zwraca zero lub wartość Liczby całkowitej odpowiadającej aStr
funkcjaxtdCheckInt(aStr)
// ---------------------------------------------------------------
//Steruje zawartością wpisu pola aFldName
funkcjaxtdCheckNumInput(aFldName)
// ---------------------------------------------------------------
//Tak samo dla xtdCheckNumInput, jak i dla Liczby całkowitej
funkcjaxtdCheckIntInput(aFldName)

Sterowanie emailami

// ---------------------------------------------------------------
//Zwraca zero lub sformatowany Email- nazwa@domena.rozszerzenie
// -> Dotyczy xtdFullTrim
// -> Kontroluje długość.nazwy>0
// -> Kontroluje długość.domeny>0
// -> Kontroluje długość.rozszerzenia>2
funkcjaxtdCheckEmail(anEmail)

Kontroluje daty

Funkcje

// ---------------------------------------------------------------
//aDate jest wprowadzoną datą (DD/MM/RR, MM/DD/RR...)
// -->Zwraca zero lub obiekt CXtdDate reprezentujący datę
funkcjaxtdCheckDateStr(aDate);
// ---------------------------------------------------------------
//aDate jest datą, której format to X3 RRRRMMDD (ciąg lub liczba)
// -->Zwraca zero lub obiekt CXtdDate reprezentujący datę
funkcjaxtdCheckDateX3Fmt(aDate)
// ---------------------------------------------------------------
//aRok, aMiesiąc, aDzień są typu ciągu lub liczb całkowitych
//Jeżeli Rok posiada więcej niż 2 znaki
// -->pełna data zostaje obliczona według daty przestawnej X3
// -->Zwraca zero lub obiekt CXtdDate reprezentujący datę
funkcjaxtdCheckDateYMD(aYear,aMonth,aDay)

CXtdDate Class

// ---------------------------------------------------------------
//Konstruktor
//aRok, aMiesiąc, aDzień są typu ciągu lub liczb całkowitych
//Jeżeli Rok posiada więcej niż 2 znaki
// -->pełna data zostaje obliczona według daty przestawnej X3
funkcjaCXtdDate(aYear,aMonth,aDay){}
// ---------------------------------------------------------------
//Dzień
day
,
// ---------------------------------------------------------------
//Miesiąc
month
,
// ---------------------------------------------------------------
//Rok
year
,
// ---------------------------------------------------------------
//Prawda, jeżeli data jest zatwierdzona
isValid
,
// ---------------------------------------------------------------
//Przywraca datę do formatu x3 RRRRMMDD
toX3Format
=function(),
// ---------------------------------------------------------------
//Przywraca datę do formatu użytkownika
//Format ten zależy od „Ustawień Regionalnych” XTEND danego użytkownika
//->Funkcja kodu języka XTEND
//a2CyfroweMiesiącDzień: prawda/fałsz - Domyślnie=fałsz
//->Dzień i Miesiąc w dwóch cyfrach, poprzedzone 0, jeżeli jest to konieczne
//a2CyfrowyRok: prawda/fałsz - Domyślnie=fałsz
//->Rok powyżej dwóch cyfr
//aSep: Separator - Domyślnie=”/”
toUserFormat
=function(a2DigitMonthDay,a2DigitYear,aSep),
// ---------------------------------------------------------------
//Zwraca numer tygodnia
getNumWeek
=function(),
// ---------------------------------------------------------------
//Zwraca this.toUserFormat(prawda,prawda,aSep)
toShortDate
=function(aSep),
// ---------------------------------------------------------------
//Zwraca this.toUserFormat(prawda,fałsz,aSep)
toLongDate
=function(aSep),
// ---------------------------------------------------------------
//Zwraca CXtdDate, która reprezentuje ostatni dzień miesiąca
getLastMonthDay
=function()
// ---------------------------------------------------------------
//Zwraca CXtdDate, która reprezentuje pierwszy dzień miesiąca
getFirstMonthDay
=function(),
// ---------------------------------------------------------------
//Zwraca CXtdDate równą to this.day + aNumberOfDay
getAdjustDay
=function(aNumberOfDay),
// ---------------------------------------------------------------
//Zwraca CXtdDate, która
getNextDay
=function(),
// ---------------------------------------------------------------
//Zwraca CXtdDate, która jest poprzednim dniem
getPrevDay
=function()
// ---------------------------------------------------------------
//Pierwszy dzień miesiąca w formacie X3
getFirstMonthDayX3
=function(),
// ---------------------------------------------------------------
//Ostatni dzień miesiąca w formacie X3
getLastMonthDayX3
=function(),
// ---------------------------------------------------------------
//Zwraca CXtdDate równą this.month + aNumberOfMonth
getAdjustMonth
=function(aNumberOfMonth),

Formularz

// ---------------------------------------------------------------
//Obliczenie daty wprowadzonej w 3 różnych polach (Dzień,Miesiąc,Rok)
//->Współpracuje z datą tokenów poprzedzoną _DD, _MM, _RR, _RRRR
//-> Pola do wprowadzania parametrów mają następujące nazwy: aName+_DD, aName_MM, aName+_RR or aName+_RRRR
//Pole roku (aName+_RR lub aName+_RRRR) jest obowiązkowe
//Jeżeli nie ma pola miesiąca:
//-> zwraca sytyczeń(aMaxDate==false) lub grudzień(aMaxDate==true)
//Jeżeli nie ma pola dnia:
//->zwarca pierwszy(aMaxDate==false) lub ostatni(aMaxDate==true) dzień miesiąca
//Jeżeli aSetField=true aktualizuje pole wpisu (ukryte) o parametr aFieldName
funkcjaxtdGetInputDate(aFieldName,aMaxDate,aSetField)
// ---------------------------------------------------------------
//Zwraca wartość pola aName formularza XTEND
//Zwraca aDefValue, jeżeli pole nie może zostać odnalezione (domyślnie zero)
funkcjaxtdInputValue(aName,aDefValue)
// ---------------------------------------------------------------
//Zwraca formularz <form> XTEND
funkcjaxtdGetForm()
// ---------------------------------------------------------------
// Zwraca wartość elementu aElmt
//->Zaleca się używanie xtdInputValue
funkcjaxtdGetValue(aElmt)
// ---------------------------------------------------------------
//Zwraca tablicę Array zawierającą elementy DOM nazwy aName formularza XTEND
//Jeżeli nazwa aName jest znacznikiem <select>
//->Zwraca listę elementów <option>, jeżeli jest tylko jeden znacznik
//->Zwraca listę elementów <select>, jeżeli jest kilka znaczników
funkcjaxtdGetElmts(aName)
// ---------------------------------------------------------------
//Zwraca Tablicę zawierającą listę tych elementów, których nazwą jest aName
funkcjaxtdGetValues(aName)
//---------------------------------------------------------------
//Zapisuje wartość pozycji <select>, których nazwą jest aName, tak jak zmienna użytkownika XTEND
funkcjaxtdSelectSave(aName)
// ---------------------------------------------------------------
//Zwraca wartość tych wybranych pozycji <select>, których nazwą jest aName
funkcjaxtdSelectGetVal(aName)
// ---------------------------------------------------------------
//Wybierz te <option> aValue pozycji <select>, których nazwą jest aName
//->Zwraca wartość „prawda”, jeżeli wybór jest prawidłowy
funkcjaxtdSelectSetVal(aName,aValue)
// ---------------------------------------------------------------
//To samo w przypadku xtdSelectSetVal elementu <select> aElmt
funkcjaxtdSelectElmt(aElmt,aValue)

Klasy Css

// ---------------------------------------------------------------
// aElmt może być zarówno Elementem jak i ID
funkcjaxtdSetClass(aElmt,aClassName)
// ---------------------------------------------------------------
funkcjaxtdRemoveClass(aElmt,aClassName)

DOM XML

Poniższe funkcje służą do zarządzania XML DOM obsługiwanych przez różne przeglądarki.

Są one dostępne poprzez zmienną globalną XTENDDOM.

Definicje takich pojęć, jak XML DOM, obiekt dokumentu XML, obiekt elementu XML i obiekt węzła (node) XML dostępne są na stronach Wikipedii.

Metody

// ---------------------------------------------------------------
//Zwraca Obiekt XML utworzony z ciągu aXmlStr
xtdCreate: function(aXmlStr),
// ---------------------------------------------------------------
//Zwraca do pojedynczego Ciągu XML (plik licencji)
//aObj oznacza albo obiekt dokumentu XML albo obiekt elementu XML
xtdToXml:function(aObj,format),
// ---------------------------------------------------------------
//Zwraca Tablicę zwierającą wszystkie elementy podrzędne aObj, których nodeName=aTagName
//aObj oznacza albo obiekt dokumentu XML albo obiekt elementu XML
xtdElementsByTagName:function(aObj,aTagName),
// ---------------------------------------------------------------
//Zwraca Hash (prototype.js) zawierający wszystkie atrybuty aElmt
//aElmt jest elementem obiektowym XML
xtdAttributes:function(aElmt),
// ---------------------------------------------------------------
//Zwraca tablicę (prototype.js) elementów XML zawierających wszystkie elementy podrzędne aElmt
//aElmt jest elementem obiektowym XML
//Zwraca utworzony element XML
xtdChildNodes:function(aElmt),
// ---------------------------------------------------------------
//Dodaje węzeł tekstowy do aElmt w formie tekstu aText
//<elmt>TEXT</elmt>
//Zwraca węzeł TEXT
xtdAppendTextNode:function (aElmt,aText),
// ---------------------------------------------------------------
//Dodaje podrzędne nodeName=aTagName do aElmt
//Zwraca utworzony element XML
xtdAppendChild:function (aElmt,aTagName),
// ---------------------------------------------------------------
//Usuwa podrzędny aElmt
//aRecursive=true do wydania wszystkich węzłów podrzędnych
xtdRemoveChilds:function (aElmt,aRecursive),
// ---------------------------------------------------------------
//Zwraca pierwszy element podrzędny aElmt
xtdFirstChild:function (aElmt),
// ---------------------------------------------------------------
//Zwraca pierwszy element podrzędny aElmt, taki jak nodeName=aTagName
xtdFirstChildByTag:function (aElmt,aTagName),
// ---------------------------------------------------------------
//Zwraca nextSibling dla aElmt
xtdNextSibling:function (aElmt),
// ---------------------------------------------------------------
//Zwraca nextSibling dla aElmt, taki jak nodeName=aTagName
xtdNextSiblingByTag:function (aElmt,aTagName),
// ---------------------------------------------------------------
//Zwraca wartość węzła tekstowego aElmt lub „”
xtdTextValue:function (aElmt),
// ---------------------------------------------------------------
//Wstawia nodeName==aTagName elementu taki jak pierwszy element podrzędny aElmt
xtdInsertFirst:function(aElmt,aTagName),
// ---------------------------------------------------------------
//Zwraca reprezentację JSON dla aDom dokumentu XML
xtdDomToJSON:function(aDom),
// ---------------------------------------------------------------
/*Zwraca reprezentację JSON dla aElmt elementu XML
Poniżej przedstawiony jest przykładowy XML:
-> Struktura XML
<A ATTR1=\'AT1\' ATTR2=\'AT2\'><B>TextB</B><C>TexteC</C></A>
-> Struktura obiektu JSON
{
'name': 'A',
'val': '',
'attrs': [{'ATTR1': 'AT1'}, {'ATTR2': 'AT2'}],
'children': [
{'name': 'B', 'val': 'TextB', 'attrs': [], 'children': []},
{'name': 'C', 'val': 'TextC', 'attrs': [], 'children': []}
]
}
*/
xtdElmtToJSON:function(aElmt),
// ---------------------------------------------------------------
//Zwraca reprezentację JSON tabeli elementów aArray XML
xtdElmtArrayToJSON:function(aArray)

Na przykład

try{
var wXML='<ROOT A1=\'1\' A2=\'2\'>';
wXML+='<A><AA>Val_AA</AA><AB>Val_AB</AB></A>';
wXML+='<B><BA>Val_BA</BA><BB>Val_BB</BB></B>';
wXML+='</ROOT>';
var wDOM=XTENDDOM.xtdCreate(wXML);
alert(XTENDDOM.xtdToXml(wDOM,true));
alert(XTENDDOM.xtdToXml(XTENDDOM.xtdElementsByTagName(wDOM,'BA')[0],true));
alert(XTENDDOM.xtdAttributes(wDOM.documentElement).toJSON());
var wFirst=XTENDDOM.xtdFirstChildByTag(wDOM.documentElement,'A');
XTENDDOM.xtdAppendTextNode(wFirst,'Added text');
alert(XTENDDOM.xtdToXml(wDOM,true));
alert(XTENDDOM.xtdDomToJSON(wDOM));
}catch(e){
alert(e);
}

Kontrola czynności użytkownika

Patrz: łącza dynamiczne.

  • Kontrola obowiązkowych wpisów w polach Sieciowych
      • funkcje xtdDoDlk, xtdCallDlk, xDoMySubmit
      • klasa CXtdDomOut
  • Dostęp do „RégionalSettings” użytkownika XTEND
  • Wyświetlanie komunikatów pochodzących z serwera XTEND
  • Dostęp do zmiennych i kryteriów użytkownika

Bufor HTML

Opis

Klasa XTENDAJAX.classHTMLBufferbiblioteki XtendAjaxUtils.js ułatwia budowanie łańcucha znaków HTML.

Klasa ta występuje również w bibliotece xtdWsvc.js przez co może być wykorzystywana przez skrypty serwera.

Atrybuty

Konfiguracja aAttibutesmetod klasy XTENDAJAX.classHTMLBuffer opisana poniżej jest tabelą prostą, w której wprowadzone są poniższe pary: Nazwa/Atrybut/AtrybutWartości.

Przykłady

var wHtml=new XTENDAJAX.classHTMLBuffer();
//Dodawanie pola przycisku wprowadzania
// -> <input type='text 'class='inputBtn' value='Submit'>
wHtml.input('button',['class','inputBtn','value','Submit']);
//Dodanie tabeli
// -> <table class='classTab'><tr>
// <td>Content1</td><td>Content2<></td>
// </tr></table>
wHtml.table(['border','1','class','classTab']);
//Tworzy wiersz
wHtml.tr().td('Content1').endTd().td('Content2').endTd().endTr();
//Tworzy wiersz z tabelą komórek
wHtml.trFill(['Content1','Content2']);
inTable();
alert(wHtml.html());

Biblioteka

//----------------------------------------------
//Dodaje aHtml html
append:function(aHtml),
//----------------------------------------------
//Dodaje znacznik <img>
img:function(aSrc,aBorder,aAttibutes),
//----------------------------------------------
//Dodaje znacznik <input>
input:function(aType,aAttibutes),
//----------------------------------------------
//Dodaje znacznik <select>
select:function(aAttibutes),
//----------------------------------------------
//Dodaje znacznik <select>
//-> aArrayOpts jest Tablicą zawierającą pary wartość/opis
// opcje tak jak dla atrybutów
//-> aKeySelected jest wartością wybranej opcji
selectFill:function(aAttibutes,aArrayOpts,aKeySelected),
//----------------------------------------------
//Znacznik końcowy <select>
endSelect:function(),
//----------------------------------------------
//Dodaje <option value='aValue'>aText</option>
//->aSelected=true aby wybrać tę opcję
option:function(aValue,aText,aSelected),
//----------------------------------------------
//Znacznik końcowy <option>
endOption:function(),
//----------------------------------------------
//Dodaje znacznik <textarea>
textarea:function(aValue,aAttibutes),
//----------------------------------------------
//Dodaje znacznik <label>
label:function(aAttibutes),
endLabel:function(),
//----------------------------------------------
//Dodaje znacznik <a>
a:function(aAttibutes),
endA:function(),
//----------------------------------------------
//Dodaje znacznik <form>
form:function(aAttibutes),
endForm:function(),
//----------------------------------------------
//Dodaje znacznik <table>
table:function(aAttibutes),
endTable:function(),
//----------------------------------------------
//Dodaje znacznik <tr>
tr:function(aAttibutes),
endTr:function(),
//----------------------------------------------
//Tworzy wiersz
//->aCells : Ciąg lub Tablica Ciągu
// Zawartość komórki
//aRowAttib: Atrybuty wierszy
//aCellsAttrib: Atrybuty <td> lub nagłówki <th> komórki
//aHeadings: błąd tworzenia wiersza <tr><td></td>
// tworzy wiersz nagłówka <tr><th></th>
trFill:function(aCells,aRowAttib,aCellsAttrib,aHeadings),
//----------------------------------------------
//Dodaje nagłówek <th>aContent</th>
thFill:function(aContent,aAttibutes),
th:function(aAttibutes),
endTh:function(),
//----------------------------------------------
//Tworzy komórkę <td>aContent</td>
tdFill:function(aContent,aAttibutes),
td:function(aAttibutes),
endTd:function(),
//----------------------------------------------
//Zwraca HTML
html:function(),
//----------------------------------------------
//Dodaje tag <fieldset><legend>aLegend</legend>
//-> aAttibutes: Atrybuty znacznika <fieldset>
//-> aLegendAttrs: Atrybuty znacznika <legend>
fieldset:function(aAttibutes,aLegend,aLegendAttrs),
endFieldset:function(),
//----------------------------------------------
//Tworzy element fieldset zawierający aContent
fieldsetFill:function(aContent,aAttibutes,aLegend,aLegendAttrs),
//----------------------------------------------
//Dodaje znacznik <pre>
pre:function(aAttibutes),
endPre:function(),
//----------------------------------------------
//Tworzy znacznik <pre> zawierający aContent
preFill:function(aContent,aAttibutes),
//----------------------------------------------
//Dodaje znacznik <span>
span:function(aAttibutes),
endSpan:function(),
//----------------------------------------------
//Tworzy znacznik <span> zawierający aContent
spanFill:function(aContent,aAttibutes),
//----------------------------------------------
//Dodaje znacznik <div>
div:function(aAttibutes),
endDiv:function(),
//----------------------------------------------
//Tworzy znacznik <div> zawierający aContent
divFill:function(aContent,aAttibutes),
update:function(aId),
//----------------------------------------------
//Metoda html, jak wyżej
toString:function(),