Site Tools


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

XAJAX

SuggestX

TODO

BUGS

  • peaks olema võimalik määrata aega, mille jooksul uusi päringuid ei tehta (kiiresti trükkimisel). this.sgx_timeOut mõ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 escapeda
  • ctrl, alt, altgr, shift jne peale ei tohiks miskit teha
  • shimi kasutame ainult IE jaoks! * Konqu ja Operaga ei toimi
  • show_status_info = false ei toimi
  • hidden 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 kontrolli
  • Opera 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 olla
  • kui vasteid ei leita, siis peaks vana kasti ära kustutama, aga seda praegu ei tehta
  • kui sisestus ära kustutada, siis peaks ka kast kaduma
  • hidden 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 panna
  • SELECT ossa automaatselt juurde ka extra_fields väärtused, kui select muidugi määramata
  • SuggestX-i initsialiseerimine veits vigane * seda ei saa teha document.body peal, sest suuremate lehetede ajal siis ikkagi input väöjad veel valmis pole * vaja leida mingi parem lahendus kuidas teada saada, et terve leht on laetud
  • valiku 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 algusesse
  • opera-ga shim ei toimi s.t. ilmub kõige pealeKuna Opera jaoks pole shim-i üldse vaja, siis sel juhul seda ei kasutagi
  • kui highlight on mõne alumise valiku peal ja siis vajutada paremale/vasakule noolenuppu, siis läheb kursor esimesele real, kuid eelmist highlighti ei eemaldata
  • multi selecti juures tehakse pärast delimiteri panemist tühi päring
  • lisada 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-i
  • tühikud ajavad asja lolliks * ainult single selection modes (trim ei ole ilmselt peal) * kui kirjutada Aga ja 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õrraphp poolne trim oli vjaa maha võtta
  • kui 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 toimetab
  • case_sensitive töötab vaid postgresiga (lower)
  • escape-mine on Postgre põhine (pg_escape_string) * vaja lisada ka MySql (mysql_escape_string ) * oracle
  • Permission denied to call method XMLHttpRequest.open
  • mingitel tingimustel paneb suggest boxis väärtuse ette sõna enda viimase tähe. Näit: Kala → aKala
    • singel selectioni puhul pea alati
    • võ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 kysib
    • andmebaas, tabel, otsingu v2li, tagastatavad v2ljad
    • v6ib 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 konfi
  • dü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 liikumine
  • enteriga valik
  • kui klikkida mujal, siis kast kaob
  • ESC peale kast kaob
  • override-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 includemisest
    • praegu lisatakse lõpus onLoad event, sest seda ei alguses teha
  • confi mutujuatele sgx_ 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