Hotfix release available: 2025-05-14b "Librarian".
upgrade now! [56.2] (what's this?)
Hotfix release available: 2025-05-14a "Librarian".
upgrade now! [56.1] (what's this?)
New release available: 2025-05-14 "Librarian".
upgrade now! [56] (what's this?)
prog:ajax
Table of Contents
XAJAX
SuggestX
TODO
BUGS
- peaks olema võimalik määrata aega, mille jooksul uusi päringuid ei tehta (kiiresti trükkimisel).
this.sgx_timeOutmõte on hoopis muu!!! - kui multiselect väljal vahepealt osad valikud kustutada, siis extra field-de kustutamine ei toimi
- peaks tegema nii, et kui pärast erinevate sisestuste arvu väljaarvutamist võrdlen seda eelneva tulemusega ning kui need erinevad, siis tuleb vastavalt niipalju välju ära kustutada vahelt
- debug info kasti alla ka shim
- klikkides mujal, kui valikute kastil peaks kast kaduma (IE only mure?!) Hetkel nagu toimiks nii IE kui FF-ga?!
- multibyte tähed ajavad sisestatud osa customize-mise lolliks
- näiteks sisestades:
pre(Marie Prévost) Hetkel nagu toimiks nii IE kui FF-ga?!
- multiselecti puhul pärast delimiteri cleareme
sgx_pre- mingi vahepealse sõna edimisele minnes salvestame selle kõigepealt
sgx_pre-sse
- kui kiiresti trükkida, siis vahel läheb sisestatud osa märkimine valikutes lolliks
- suured täpikad ei tööta
- kogu jama UTF-8'sse?! või hoopis võimalus charset määrata, kuid vaikimisi utf8?!
- Konqueroriga multiple selection ei toimi, sest getCaretEnd() funktsioon ei toimi
- highlight peale peab vb ka shim-i resizema, sest fondi muutus muudab tabeli suurust ja windowed elemendid võivad hakata välja paistma
ülakomad slashid jutum2rgid otsingutes ja baasis \ ei toimi samuti on escapemata Oracle * vaja neid kuidagi escapedactrl, alt, altgr, shift jne peale ei tohiks miskit tehashimi kasutame ainult IE jaoks! * Konqu ja Operaga ei toimishow_status_info = falseei toimihidden väljade clearemine * kui kasutaja kustutab välja tühjaks, siis peab ka hidden väljad tühjendama * peaks lisama välja onBlur eventile selle kontrolliOpera all ei liigu highlighting korralikult (poolitatakse)hiireklikiga valikutes üles/all liikudes (noolel klikkides) saab teha vaid 3 klikki, ja neljandaga menüü kaob (Mozilla (läpakas toimib?!), Konq) * võib sõltuda kuvatavate kirjete arvust st. mida pikem list, seda rohkem saab klikkida * ilmselt seotud sellega, et klikkimisel kaob välja fookus ning seega ka kast. Pärast klikki tehakse küll uus kast, aga midagi võib seal valesti ollakui vasteid ei leita, siis peaks vana kasti ära kustutama, aga seda praegu ei tehtakui sisestus ära kustutada, siis peaks ka kast kadumahidden välja juurdejoonistamisel tema parenti valik katki. * kahjuks ei saa kasutada praegust loogikat, sest kui formil on span ümber, siis pannakse ta hoopis spani sisse aga forimst jääb välja :( * tuleb ikka kuidagi formi detectida ja otse selle külge pannaSELECT ossa automaatselt juurde kaextra_fieldsväärtused, kui select muidugi määramataSuggestX-i initsialiseerimine veits vigane * seda ei saa tehadocument.bodypeal, sest suuremate lehetede ajal siis ikkagi input väöjad veel valmis pole * vaja leida mingi parem lahendus kuidas teada saada, et terve leht on laetudvaliku meeldejätmine (sgx_pre) ei toimi. St. kui hakata sõna ära kustutama, siis läheb selection alati esimese peale, mitte ei jää viimati valitud sõnale. Asi selles, et iga vajutusega kuvatakse uus box ning ka selle sisu (vastete arv) muutub. * ainus variant vast on stringina meelde jätta viimane ja siis seda võrrelda * lisaks veel ka see, et kui valik on m6ne alumise variandi peal, ja siis edasi trükkida, siis jääb selection küll alles, kuid tehakse veel ka teine algusesseopera-ga shim ei toimi s.t. ilmub kõige pealeKuna Opera jaoks pole shim-i üldse vaja, siis sel juhul seda ei kasutagikui highlight on mõne alumise valiku peal ja siis vajutada paremale/vasakule noolenuppu, siis läheb kursor esimesele real, kuid eelmist highlighti ei eemaldatamulti selecti juures tehakse pärast delimiteri panemist tühi päringlisada common.js fail funktsioonidele sgx_ prefix?kas suggest ilmub teiste control väljade (windowed controls)taha??? select, object, plug-in, iframe (IE5) * z-index'st pole siin abi :( * üks suht sitt lahendus on, et konfis võimalik array na ette ande elemendid, mis ette jääva, et need saaks hide-da * teine variant, et vaikimisi hide-me ise kõik windowed elemendid ()kasutasin hoopis shim-itühikud ajavad asja lolliks * ainult single selection modes (trim ei ole ilmselt peal) * kui kirjutadaphp poolne trim oli vjaa maha võttaAgaja siis panna tühik, siis viimane variant on peetis * kui kas ette või taha poole sõna panna tühik, siis esimese tühiku peale pannakse vastustele ette nende viimane täht ning iga järgmise tühiku järel suureneb märgitud osa (bold+underline) ühe võrrakui Sgx enabled välajale antakse fookus onLoadiga, siis jääb initsialiseerimine ära ning asi ei toimi * kui klikkida kuskil mujal, ja siis jälle väljal, siis toimetabcase_sensitive töötab vaid postgresiga (lower)escape-mine on Postgre põhine (pg_escape_string) * vaja lisada ka MySql (mysql_escape_string ) * oraclePermission denied to call method XMLHttpRequest.openmingitel tingimustel paneb suggest boxis väärtuse ette sõna enda viimase tähe. Näit: Kala → aKalasingel selectioni puhul pea alativõimalik et seotud splittimisega
escape'mine
==== Kui juba xajax olemas ====
* peaks seda kontrollima
* JS uuesti ei prindi
* kui xajax intsialiseeritud, siis ei tee uuesti: $xajxa = new xajax();
xajax-ga saata p2rimisel kaasa elementID, mille j2rgi on konfis kirjas:
mis tyypi suggestiga tegu- kuidas v2lja n2eb
- millised andmed input v2ljale paneb
millise p2ringuga andmeid kysibandmebaas, tabel, otsingu v2li, tagastatavad v2ljadv6ib ka k2sitsi p2ringu kokku panna (saab joine jne kasutada)
- v6imalik, et ka mitu erinevat v2lja k2ituvad yhtmoodi (kas samal v6i erinevatel lehtedel). Sel juhul peaks olema v6imalik kasutada sama confi
- multiple insert korral, kas v6ib sama v22rtust mitu korda olla? raske kontrollida tegelt….
Täitmine (complete)
- input väli
- väljund konfi (näiteks kui valitud nimi, siis väljastab selle koos e-maili aadressiga). Vt. Neo algne asi
- hidden
- võimalus lisaks panna väärtusi ka hidden väljadele (näiteks ID-d)
- väljad kirjutame juurde JS-ga ning kui tegemist multi selectiga, siis array kujul
- multi selecti puhul hidden väljade clearemine!
- praegu cleareteakse kõik, aga peaks vaid need, mis hetkel muudetava sõnaga seotud on….
NB! ilmselt tuleb küsida ka form-i, mille külge need panna?! vaevalt neist body küljes kasu on… * vb saab form-i detectida sgx välja järgi, sest see peab ju temaga koos olema… äkki saabki ta kohe sgx välja külge panna???
1..n erinevat array-d (hidden väljade hulka). Saab edastada korraga erinevaid andmeid. Näiteks: id, nimi, email jne.
Features
- static array support
- PHP arry → JS array
- confis võimalik määrata, et baasi üldse ei kasutagi
- ühtlasi võimaldab kasutajal ise baasiga mässamisega tegeleda??? (teeb ise tulemused array-ks)
- võimalus kasutada olemasolevat baasi connectionit
- Page Up/Page Down toetus, et saaks lehe kaupa liikuda
sisestatud osa märgistamine valikutes CSS-i peale- esimese variandi automaatne näitamine ja lõpu selectimine (nagu google teeb)
- konteinerisse joonistme ka DIV-i kui laius on fixed
- textarea support
- noolte asemel slider-id
võimalus teha ilma üles/alla noolteta (limit = size)- kui tuleb XAJAX päring:
- PHP erroreid välja ei näita vaid paneme alerti, kui debug peal
- liigseid asju ei include ega arvuta
- JS compression
kui debug peal, siis näidata addAlert-ga ka päringu vigu, kui need tekivad- kui box on lehe all servas või paremas ääres, siis võiks asukoha määramisel sellega arvestada
- võimalus ka mingi external eventi peale suggest koos kõigi väärtustega lahti visata
- võimalus muuta select boxiks
- joonistame input välja järgi selectboxi noolekese lihtsalt ;)
kui ID hidden väljale väärtus ette antud lehe laadimisel, siis tuleks vastav väärtus ajax-ga leida * <del>kui ID hidden väljale väärtus ette antud lehe laadimisel, siis tuleks vastav väärtus ajax-ga leida * kui hidden väli juba olemas, siis seda dünaamiliselt ei joonista
võimalus konfist kasti suurus (laius) paika panna (fixed)võimalus iga välja konfist rohkemate valikute näitamine ära keelata (see oleks esialgseks lahenduseks ka järgmisele probleemile)- et ei tõmbaks iga vajutuse peale kohe kõiki vasteid ära, sest neid võib olla ju tuhendeid
- tõmbaks näiteks 3x rohkem, kui on näidatavate vastete arv, ja siis kui noole nuppudega juba liigutakse mingile maale, siis tõmbab juurde
- üldjuhul piisab, kui korraga eriti palju ei tõmba, sest kes see ikka väga kerida viitsib, kui otsimine nii lihtne on…
- noole nuppu all hoides võiks järjest kerida
- IE tundub toimivat
- peaks saama timeout-ide ja onKeyUp ning onKeyDown-ga teha
- võiks isegi nii fancy olla, et mida kauem hoiad, seda kiiremini kerib?
- sama asi ka onMouseDown peale
- lisaks ühekaupa üles/alla liikumisele võiks olla ka nö lehekülje kaupa liikumise nupud
kui multiple insert samale v2ljale siis v6ib ju eraldaja erinev olla?!eraldaja konfi!
case sensitive/insensitive konfidünaamiline päringu kokkulappimine- erinevate skinnide loomise/kasutamise/valimise võimalus
- teha selle jaoks eraldi funktsioon???
if (sgx_toid) clearTimeout(sgx_toid);
if (sgx_self.sgx_timeOut > 0) sgx_toid = setTimeout(function(){sgx_mouse_on_list=0;sgx_removedisp();},sgx_self.sgx_timeOut);
Visuaalne kylg (JS, CSS):
- esimese v6imaliku valiku n2itamine input v2ljal
- üles/alla noolekesed gif-ks?
- vt. Google Suggesti!!!
variantide vahel nooltega liikumineenteriga valikkui klikkida mujal, siis kast kaobESC peale kast kaoboverride-da brauseri enda suggest?! (AUTOCOMPLETE=OFF)
Muu
- default true/false setinguid pole vaja algv22rtustada lehe laadimisel (sgx_use_shim = true)
- lihtsalt j2reldame, et kui m22ramata, siis on default
teha nii ümber, et piisaks vaid faili alguses JS-i includemisestpraegu lisatakse lõpus onLoad event, sest seda ei alguses teha
confi mutujuatelesgx_prefiks ette, et ei läheks lokaalsetega sassi
Troubleshooting
- Oracle:
- staatilise päringu puhul vaja kasutada bind parameeterid:
SELECT * FROM table WHERE field LIKE '%%%s%%'; // MySql, Postgre SELECT * FROM table WHERE field LIKE '%'||:sgx_bind_var||'%'); // Oracle
- I turned on
$SGX_DEBUG['show_query']parameter, but SuggestX doesn't show me querys?- You probably have
$SGX_DEBUG['endabled']set off. It has to be ON to see any debug info
Change Log
1.1
Bug fixes
- fixed a bug that closed SuggestX box after scrolling with mouse
- configuration parameter
$SGX_DEBUG['show_status_info']now works correctly - ignore the following keypresses (don't make new query): Shift, Alt, Alt Gr, Caps Lock, Windows keys, left/right arrow, Home, End
- fixed some escaping problems (% _ \)
1.0 (13.04.2006)
- Yet another rewrite of PHP part: converted to OOP
- Dropped XAJAX and replaced it with own AJAX functions
- SuggestX can now have a default selection on load. Now you can even replace those select boxes with SuggestX that have to have some value selected on load (e.g. in some data edit page).
Bug fixes
- disable word-wrap for IE also
- fixed highlighting problems
- if field cleared then extra (hidden) fields are cleared too
Features
- ability to assign onChange events to SuggestX fields
0.12 (28.02.2006)
Bug fixes
- permission denied JS errors
- on single suggest white space wasn't handeled correctly and thus highlihtning the matching part was broken
- setting the zIndex to 999 so SuggestX box will be allways shown on top of all other elements
- an empty request was made after typing in delimiter in multiple select field
- fixed bug where JS was sometimes executed before the pages has loaded
Features
- Ability to pass additional parameters on hidden fields. You can use this feature to replace your select boxes with SuggestX fields for example.
- the amount of additional parameter is unlimited!
- not yet working on multiple select SuggestX fields
- SuggestX can now apear over IE windowed controls (Select Box, ActiveX Object, etc.) NB! And it doesn't HIDE them :)
- Oracle support
- added special examples page where links to all different examples are shown
- example database contains ~6000 records
- ability to turn on/off XAJAX debugging and SuggestX debugging from conf
- you can also force SuggestX to show the database query
- you can set PHP error reporting level (by default it's E_ALL)
- added lots of configuration parameters. Among them you can define:
- fixed width of SuggestX results box (by default it's dynamic)
- whitch field to give focus on page load
- maximum number of results returned. It's a perfomance issue, because it's not a good idea to return like 10 000 maches when typing just letter
a… - the size (number of results shown) for each SuggestX enabled field
- if SuggestX debugging enabled then database errors are shown in JS alert boxes
- sets browser own autocomplete off for all SuggestX fields
0.11 (13.02.2006)
- No need to edit your HTML or template files!
- just specify the fields you want to be SuggestX enabled in PHP and give some configuration params for each one
- database querys are formed dynamically according to each fields configuration
- added minimal example (
minimal.php)- complete working example in just 20 lines (including PHP and HTML)
- easiest way to use SuggestX
- just one field
- no multiple select
- no extra configuration
0.1 (09.02.2006)
- first more or less stable release
- main features:
- JavaScript part is based on actb, but strongly modified
- data is being exchanged between client and server by XAJAX
- supports PostgreSQL and MySQL databases
- supports single selection and multiple selection in one field
- special debug mode for better debugging
prog/ajax.txt · Last modified: 2019/09/20 15:52 by 127.0.0.1
