Spinners! Spinners! Everywhere you look, but they all have one thing in common. They are programmed to respond to an AJAX call. What I mean by this is simple to understand. The ability for Javascript to call out to a server and request data, recieve it and change a page through the DOM was a major change to how pages on the web behaved. Almost overnight, we went from webpages being reloaded to respond to changes to web pages behaving more like applications. The jarring effect of submitting a page to see the next thing made way to all manner of improved responses and even advertisements that would change without a reload.
This is all well and good, and as time progressed more and more of the work being done on the back end server was being moved to the front end page. Spinners were all over, and still are. They are used to let you know that the page is still working and giving you something to see while the page is using Javascript to have a dialogue with a server and load an amount of data that just takes to long to appear instantaneous.
One afternoon I was working on a project in which a different issue came up. The page had a table with a lot of entries on it. The desire and design was to have the page load in this information for the table and let the person using the page be able to sort the information. From a coding perspective this wasn't all that hard to do nor was it new. But what was happening was that the amount of data that the browsers and pages were being asked to handle was increasing. As fast as they were, if you had too much data in the table to sort, the page would seem to hang and do nothing before suddenly displaying the results.
It was at this point I discovered that the web was full of examples of spinners, but only for loading. That there were whole websites created just to provide spinners for AJAX type applications. However when it came to creating a spinner animation for an in-page action that was not making a call to an external server, it was like a desert.
| Col-1 | Col-2 | Col-3 | |
|---|---|---|---|
| TWOXZPJX | YLREJUOG | YTHRJMLH | |
| YYEXDQPA | UKNCPLRZ | QBECKYKF | |
| TGFXSJWB | RQQNHGND | INVYANIY | |
| AWPOAEHE | EYBTGIVX | DSEMTMBW | |
| BJNDDFYW | XELFLNOT | HSTMOIEO | |
| IYAFJHGV | SFXOUVSE | GIXLZIPQ | |
| XLBLVGJF | HTMKDNJX | NDCXZNIX | |
| HRHXVGRY | SRHVNWUV | ZYOFDQLO | |
| BDEWMNFC | VRQSZKLT | LFNSVDCS | |
| CFJFTKLS | BOHDKIAP | QFEPUSIY | |
| ZFWONPTO | KLEZBCGM | QKFXIKPC | |
| MLUNHNRF | KDFOIBBH | RORNPMJL | |
| YMCRMBSG | VKAHFSKK | YNYRZSFT | |
| AOFIFTHB | RDJDKJPJ | LHTXWRTA | |
| PGEQCHTA | EUQMHWTK | CXDJLTGX | |
| SVYLPVLD | GAZHVNCN | EGBCGCXA | |
| JVKIZLGP | NATVHGAI | CADEFWPY | |
| GSDXEWND | XLCRMLYV | GSSPCQJB | |
| GVWKMMNV | AJOERPZA | DSWNEKKW | |
| BBLUTINE | KQBSMNNX | UJNUFGCW | |
| KLJSUHIT | LUGKOXWV | FTNTYPIG | |
| LCUXLQIN | JVTLJTJG | ATLRFTIJ | |
| IGRUFKNG | CDWGBKFQ | FHKTSBOD | |
| MXHDMAAT | GYKMWTSX | JCJGLAFJ | |
| QNYQWEIS | ZLWMJRCC | BLCYHXBQ | |
| UCRDDWLU | QVKDUFBL | QDTTGBUL | |
| MVCCMXRZ | MAYHEDAX | TRVAHVYZ | |
| GZYCQOSW | GEFHIITW | AKHZSINW | |
| PMUDOHXM | LCJJWIMS | UPRBTJOU | |
| PMBFBKOK | PUSUHNXB | VVHFHSQE | |
| ZKGIOXXP | JJPUUCZM | VOSOVGLN | |
| QFFHILMF | GMMREDRH | HOGXFJVD | |
| JPMDUAJI | KMTXJLQJ | WDLWXFWD | |
| WVKQDGVX | SQQRQPVX | DBERISNJ | |
| TYLVEFQC | IBYXSZHZ | MCBBYKPB | |
| LRSQVJFK | ZWIQEJSI | COYQOCWA | |
| MSVXGTNV | FQNJNHLC | HXSVURBD | |
| KQSCKCTE | SXYCDIII | GQSUNQBO | |
| ZRODTKTC | EIQPQGHA | CQXPFIUF | |
| KNNQKSOO | YHEDWHBK | IIZKEONG | |
| COUFAFPV | XLARDHVH | CSELXNAM | |
| XIIVXBGF | NFJZKKIK | RHVXMXIA | |
| WBYCEMUW | ZOOTVLEU | ATULRQYO | |
| JHCDLNJC | FJGAUGVI | NMABXVKT | |
| JQDRZWUZ | GVZSFPSM | JNZXDUWE | |
| LSAUAQCA | HSLVMMCQ | NSCNCZKB | |
| TMLIJYJY | BMIBCBKM | HQARMOEP | |
| WKFIZPXQ | XSOCHCCI | WCJPPRUV | |
| CJVZEKNC | DWNGUYFV | XWOVMWBC | |
| FMBJCXJT | XYJCYQOQ | OFROIBSO | |
| BRURWZTS | RMNMIKRJ | EQKCYAAQ | |
| XYPTITVJ | OGXPZPHR | IYPIJFOA | |
| QIMWUXKB | ALCQUVEM | TOEPEVIP | |
| LHWXCDMA | OVHQLAYM | PIZDMYWR | |
| IYAGOHVJ | MGSPSXVY | CBHQUBIG | |
| GQIVYNAQ | BFCRLHBF | CWUAWWTZ | |
| AVXBUVEB | WVCCHSVO | OTDNZWHS | |
| QUTDVKBT | TGQKLVMQ | YCWJQAHX | |
| JCNJYLGH | UTDRUOMD | QIPRPNIV | |
| NDWPTYVN | LNRHALYQ | MJNVRRZK | |
| GVDLNMAS | FXIDSTTV | MYFPZFZW | |
| ZAWBCNOW | GGYLCHID | KXBSDUBM | |
| ZGUDMLWI | MILJKPHF | HEJBPAWN | |
| WLCPJUOD | JROLWMQH | OLMOHRIU | |
| FXPQYSBU | NHZIZREM | CNXIHBUC | |
| CZMAIKON | QERGRJBR | IOTIWHQR | |
| NZAXCLJR | RYPNBRDN | OILSOYXD | |
| XWVZYTCQ | NQHKLLLY | PXIKBRPS | |
| IPPRKTHB | QUPZUSKD | TMOVFZRX | |
| ZRLYKMWP | YPLDYCBM | VILSZDHR | |
| YZPDCWFP | GAEEKWXT | LIJGEBNP | |
| NWGCADCX | KXFNZTVL | ONNLNIJA | |
| SAABTOJH | VKRQKEMA | AJFEPHMB | |
| ECBYOKKF | JRLAYWLZ | MTDSUMMT | |
| FOUSJSQY | ZGWVAFDE | AMPEJBNP | |
| OIWZTSAH | JDBVNKLP | OYPAZEVV | |
| SSCALZCQ | RACHNVGR | KMCCMCSC | |
| HSYBVCUS | SSELWGWY | AEQRAKPG | |
| RPYAPXJJ | QRHEPNFM | JJYXFPFG | |
| CETNFUQQ | WTVJUZDL | BHUWGFNB | |
| LOVYCRXF | LYDEOZPP | QECWXAHG | |
| RZHKQWRS | NYKVLPBT | PWGWCOWK | |
| YWTVZLZF | MDYTBIVM | SFGOTHPJ | |
| MYTJEQUO | AXUNWMMR | YMTSUSOV | |
| RGHCFTPA | VFOQZLUI | OWMGCUXY | |
| JKPLIBUR | WSGVIRDC | BFPDAARY | |
| UMWBCBAI | YYJYFBJM | UYJFLFHQ | |
| GCGRAZIZ | IQWOMZMK | AOJBVCTR | |
| CXJTDGKW | MNXIWWGS | XQEBRQFY | |
| IOBOPPYL | ESUIXPOU | IIUZZIBC | |
| NKRUWTZI | PPVPQMVN | OYHMJRLL | |
| PXWMYBJV | RLCPBQID | UIIHCCIM | |
| MSRHIIHW | LDHSDLSK | BRXSMASE | |
| VMWUMBMC | JONFGZCU | OSWMAYFA | |
| LPGWEIYF | JDYDMRAC | ZURIGXII | |
| WGWWGJTE | QUORXCQX | EGJZQMXZ | |
| PESVVZLX | DDDPLRDS | XQWBIWMV | |
| HHHZAYQH | JQNTIHDP | AHGATRVF | |
| QDYIFZXV | YKSUARUA | HKLVFMJN | |
| MIHZELTM | BGHBIXXU | COCJRMJI | |
| WHKVCZDQ | FZIFSOIM | IILOAQII | |
| CDIABDQJ | PFOYMQCV | KSUSXUWF | |
| AQSINPCA | NQVKAYSO | GFSPFNMX | |
| WOPQUDAC | RPWBKJAR | MRCFAAIB | |
| SFTEUDRJ | FHQIVWUP | LRLPXCLB | |
| VIGLKLSH | XSLNHPJA | NVUNJXLW | |
| OBYIBXTR | WMBSTTUZ | YYEFHMQW | |
| XWSWZRYA | GGQSWRJA | LVAYSVRI | |
| UDRKDLSO | USJTOULG | SZDFIWSU | |
| VPWHVXKL | SFXQKLJU | ALKICKHK | |
| TNTINAVM | HCDESXSZ | OGHCQBNZ | |
| NIBUFOWZ | VZUXCZWL | UXFWPWND | |
| RFJGMCTI | WJDVQUBX | RFCURSYW | |
| TZMYYUDS | PLIHVMQD | QJJMADVA | |
| NNZPZHLF | HKQKHUDT | PACGGHRD | |
| KTWBYFBQ | FZIWSEIT | PRLQREEA | |
| WYPGYDCI | KICQJSNG | HXWJFPTL | |
| SLSUVEGZ | NSCVMUMA | IPRHCBJR | |
| DMZPTHXD | EXIPAOGB | FGETJAUY | |
| GWXBPGOG | TUIUVOJX | LCVGAVNB | |
| TULXGSQV | CFFXCCUN | OXCWSKEQ | |
| FDYJCNWR | EJZQWCVF | XAXCWPOA | |
| NKJWNCVX | AMQOQNSR | WHTBXPDF | |
| YKIOVQLF | IBQLFVXB | EZDBTDSY | |
| DAIVJMGB | LKASGVSY | GUUUYRHS | |
| YUOOGXHV | UEVDAZDI | AVMOBUEX | |
| TUBQSYOE | YNJKVCPB | HZHXETLX | |
| FTSXVNGK | SBPRJMTN | VWKZLAWK | |
| VQAFPKKT | GELXOYGP | UBWBMPZO | |
| DJCJDCSC | UIKBWHTI | AXJVMABP | |
| VTQJAWVG | MIUHVOXC | OGXGWTYC | |
| LPQZCUUD | AOBNRJSJ | ZELCNAHV | |
| NVGSMKWB | AGWGIVBJ | RCBFZKHH | |
| VXSKXYAE | DKVWOSKY | KVVIJVGV | |
| TQVOIVRD | JUUNUJBM | MASKJVOL | |
| UBDRIRZY | LHWVIJJE | APDOHYTG | |
| ANHFVVSO | WPOMGLCH | YWYOKTSM | |
| WOAHUJVN | NTUPKVBN | LOUXOZQR | |
| QTMYXANQ | IDLYQSUA | GHOTDWNR | |
| LWQQOJEC | JDHIWNAZ | XQJLOJBI | |
| MEZJWOPR | OJITGBOA | AKFCRRXA | |
| MGBQUCWE | HBHWPFVF | XZWPIWMW | |
| LZMVPIUW | PHUGDDFF | JIWGNICM | |
| FWBDRLRZ | NAVMPFUJ | HSVIPYZY | |
| HYVWTZNG | ZFKKSZIQ | MXIDOPOX | |
| VANZUZNY | BCQYTWKH | DEKMIDOG | |
| NKBSPHGB | ZYTBDNEE | UHBQSISP | |
| NVHFZZGA | QQJDSYZB | KCPQYFJT | |
| QUNFKREI | NSMUWVES | STEPRNOR | |
| ECHBTNVW | BYPMDVMQ | NLABRLHT | |
| WLMFDWFK | YPKVEKWY | GFOOYECD | |
| GLPIFIIK | CYLWAXWR | VHDLWOIC | |
| YHPUHRLF | ZHENOQQN | BHIEBRLS | |
| ZXENLOJT | HDXBNEPS | YZWIKSFE | |
| ESVBVAPF | GCNDGKSR | BVDBDZZF | |
| FOVTPTDU | AHVAUAMN | ZVQSWLAC | |
| FIJDVXIY | TCRXXRZN | WAFGPHBZ | |
| HQYPAFWC | OJUIFCBO | QPAAEHUQ | |
| NXXOVAGP | JWJKXXHK | SBCJJPSQ | |
| RTFSMUDK | MKHUWLWX | FAMLMVKF | |
| LFBHWVTW | ZGMNWHJH | GEVKYPIA | |
| ORMFIEMK | WIBEFMME | JSBUDUFZ | |
| YAVGNLSA | WLPMKDZZ | LNEXCSMG | |
| FZZKTLUF | BCTRAVLR | YEZGJBGT | |
| UALRIHBH | ILRJJVIK | RGIYQDPE | |
| NOKJWEYH | BOIESJZB | ONBEFSVT | |
| SVIRJBCH | CWOWNGFA | DJJMJIKZ | |
| WSWPZVMO | PQLWPJPU | DWJHLRTU | |
| RBHZGUKU | QSHTAGNU | DAHVMIAA | |
| NFVLURKK | UDFNVZGD | CSMJJRJX | |
| JLTOBEFT | EVTABAQQ | LJCWDMFT | |
| ICAFNAVV | HCTJGRSI | YTBDSRUK | |
| YWLOAWSK | BIUBFMUG | EWZSDGBC | |
| UEFJEWZE | MWJTQYLV | ABWMLTYK | |
| KMZEWEAV | FOSTDKXS | IGVJEBXY | |
| PNCIUCCN | VDSZGCIU | UHGGUDCY | |
| VCZUYSIJ | LDFDBMCE | UZWMZPOW | |
| IJTJPYHB | AJDGKMLF | QMEXYCWM | |
| YCYYEJHR | RKVFJMJF | JFOCBZYX | |
| VIRFFTWP | ZWHSSJKM | NYMJDUBV | |
| PZSUTGXS | YCYJAEJQ | TGMPGEWX | |
| RXXMZMFX | BDXOALOY | VJVBJTUQ | |
| SMXHMYMD | GIVWJYJX | CTVXFRKX | |
| IZYYZLDY | ICQJFFED | TOUMIYHJ | |
| VWSQWZHR | RYNXLWYQ | CDNIIFEM | |
| IFZXNICM | DQLGUWDT | SZUFJUJO | |
| MNPWIHYA | RXZWSFFC | SWADQSNY | |
| CAMYDTLC | KTPMUQVD | TAZWLAEW | |
| VALJNUWT | YHUZNZQR | VYAMKIGB | |
| ANIBCJZP | TDQVHHOU | LFAWVQWH | |
| KWYTXNGM | WJCLUMID | XFOFMSOO | |
| BYKBHCIH | VPRKUXXL | GCYFEQOC | |
| CSWOCICK | QXFRNSZK | BBCDKLJL | |
| NJMLUZKD | ULNAXHUV | FVWYJRCB | |
| XZTFLJYU | RBLYIOKJ | ASWTENTW | |
| HQTOZHDX | WFVONJOG | URQMNQCB | |
| KLVDCCIY | PDSSDEQV | HYPXAEHX | |
| OOQBTHAM | BYIGAYQW | QIISUEVR | |
| QSYPEBJH | HAASSAIF | LNDRNQRY | |
| UPDTVCYT | EBEHRDFQ | BYYJJZKO | |
| WUVGCLTO | PQEYGXFL | SXJFZHYT | |
| BJNWADWB | JWYLUVQB | KWTNKGYV | |
| TWNFLVXO | HWANYXRQ | HWNUEVSJ | |
| XDPNNATY | WDEPGCPN | PHXRXVTR | |
| IXYPUESR | LOAJSGDV | FGJYZQXV | |
| NTHRDVNL | NARXHEEQ | ARPBSKNJ | |
| LIRAADIZ | ZBPYQEZT | EOSOQEVD | |
| BVUIMOZY | UOQGRGTX | VYLKLIVB | |
| ATAARCJM | DRFFRLYK | IXHIDYIS | |
| VCXELNYI | SNERSKQK | WJTWJXMQ | |
| TZAAUVNK | PAWKHZDV | ONLBVBQS | |
| JIFLHLHV | ZKVDDEOG | IHTLNZZM | |
| MNBYTZHX | RXCPYLSM | MYLBJKDV | |
| DDKGBREB | HWOZRPZI | PXQVIXBJ | |
| LOFGPYGZ | GCFCXQWF | ZOQCTSTG | |
| TLAGSGIW | MCQZGZGI | ZERHBZKY | |
| RXATKRNN | TCDVQQTM | LRVQTALV | |
| DZXOSSJF | MHYZDNNE | UJFHGHES | |
| MXQVFZNP | UFSGSGPB | RKIZQXEL | |
| MFUBZFED | JVHDVFND | BORDDCWO | |
| HHRRUPAC | VAITDBSM | GSIYZKDN | |
| KONFJBHL | RGCUKVBV | OOJFFGBO | |
| IHSJZRUG | XAYWHKRR | RGKAWQFC | |
| MRQYZNQS | YEAUCEOZ | YIMGNMJH | |
| OOTOFIBZ | PQZOGNQC | CPJHIXWP | |
| FJNBLJWV | VJGQEKAO | UDQLNSJX | |
| WIYPEMVS | TLZGUFOO | SBBRZRKJ | |
| JKSZEMEX | IZIDZMKE | KPUJACOG | |
| CMNLXQAC | JQFQRROI | RFSHWXFZ | |
| MBZTVAZA | ZLQMGZBO | NQXPEGKU | |
| KRSEZYKM | QCPJOILQ | TOXSTPWC | |
| HOQPJCRT | GUAFTVTN | BXKQMZRV | |
| XKISAMLX | ZFYTOGCY | PBOMNGAI | |
| XYKMUTOB | ETLQDGVV | KITYXIMH | |
| XLYWORRD | VKUYYSFL | PEBTWSWJ | |
| QHPLYESU | YBATXCTM | BBDRPGOV | |
| ZWSEVQIX | BXRMQTQB | IFTTBDBN | |
| KCVTKTAH | TRAXAWBG | ORRLDJSR | |
| MLFYLCJQ | WOQDEFKZ | UNNXLXNH | |
| FAHCHCEC | PBECFOHF | ZTUTLQES | |
| UWLPICQB | ZCMZDHHT | CXMHQCAZ | |
| BBBIAVVK | NNISDXTX | RNSKURAD | |
| EEBSDEPE | CXDFYLSN | UXAYHSWE | |
| JNKJKLUQ | RQBWEMEE | HZMOVIVM | |
| GBZOTIEQ | VLXTMROF | CEASBJRO | |
| SWBRCYGY | PONODMWT | KGKZOAFJ | |
| BJQLZMUA | ESPTTHIS | GAZMWXCW | |
| XNGTXMDQ | VNQGNYBS | KFYTJVPJ | |
| VLFIUBJM | AMOZRWZZ | DUUJFJDE | |
| KAXLFWOU | FHFZVVWJ | UKYFDWRT | |
| KRIMILSU | GZZYSBCE | VHKHZZHG | |
| LIPAFABM | WTOFFTDE | TFPGCFSE | |
| AALESAYF | IWOXNJCO | KMSCMMRL | |
| WWPHLFJJ | UFDHGGAB | GIKDBVXM | |
| FOBPSYYY | YNVYSOKW | XXTJLGWG | |
| CETHXMVT | AIEIJVLX | MRDKHPSL | |
| VBLUWKDS | KNPMNITA | IJUYTDOT | |
| ZKKATQFK | NKDZURLF | PGNIQBOG | |
| CPJQRZOL | AMFZPSOH | WOFSAXYS | |
| FXCZKKDK | MHLJUWFZ | XQGPOZEJ | |
| WFBCKXNG | HEXIOLKD | BSUJOEEJ | |
| AZKRBJHS | TUJEWJXX | JNLLBGPX | |
| CTFJOYBT | YVWEVCMI | LHYNTKJX | |
| KENOYWWI | DTHTNUMR | QSQAZBLM | |
| IIRHHWGI | CARYJLCQ | WVMOIDOX | |
| QOCJYUUO | DJTJIQHS | JEBGURZN | |
| EIPQNRKZ | XIXZGGKX | IMEXIELA | |
| CPMXTKLF | PLGOTEER | RSJUVMWY | |
| KALYPNBB | JXTDNPCU | VEWDYIZC | |
| NAPXIRAT | QUQLVFWU | OOCTHOCQ | |
| NRSSADQM | ZRKRZMDO | EENLYRQC | |
| VFAMIEHL | NKFMUGYY | AOCFINXX | |
| BAFPVZBX | ELMQSSLB | CBTYXTVT | |
| XVSVQEDP | YERWVONH | CMYRATYX | |
| NNGXLEHK | QVKFASEH | OSYHFHOZ | |
| HKDJKHMM | BXNKOQZQ | BNDIQMDC | |
| VEDPVXIH | SQTBABGH | XCMFBKSX | |
| QXPYXKXO | CGEFDQGU | VKMDMMFR | |
| PLYJVOLV | KRIGOZQT | NLIJNXIV | |
| GTLUPHTI | QSEWEBIJ | ALHUEAPV | |
| WIHUSSZW | IONERWKU | GFGYGUDK | |
| IVIOTFWQ | KQJZPQAI | MAHNRMXE | |
| PKLJCHZV | VZHLUOUP | FBBVGRAM | |
| CICTRGUH | ZJOYVHAL | RMBVHCHA | |
| OXPCABPU | KIHGZUOA | PZDKUTWL | |
| XDCOMBQL | RJFMGIQI | AXUUVKYS | |
| GXIOJCSA | SKYBCAHH | SNDWVQPO | |
| EHWZBQND | LEGMVRDC | EWJQVQHV | |
| YFDUJMPH | TNERJXOJ | XVVFJNXS | |
| EYIIXGNJ | JTIBHKFA | FQETIHCH | |
| YZKQPGHE | OYORGAOU | DYCTNFUI | |
| UNMCJVCC | LTYIBLDT | KHBWJENY | |
| VNJLZHAP | FNVCBVNZ | XAKHEXVM | |
| YAHCBPJW | MNBTWEQC | IXAVURJG | |
| VVICJQZL | FQALZOHW | EKVWRKLF | |
| FVICLOQT | GRUBLQTX | KABLNUJW | |
| RUCRXTRW | LKWJOWWH | QHIFECYD | |
| BRRNDWRE | KBDWOKII | OGQAOJKK | |
| YMLODBZE | ZIRDTMIL | RUVMKOCF | |
| AXHXMZNO | ANDUABQA | YQNTINCU | |
The spinners above are fully customizable and mostly created using CSS and a bit of Javascript. There is no call to an external server, there is just a sort
of randomly generated strings in a table column, which is long enough that some indication of the page doing work is needed to keep the interest of the person using it.
The code is very easy to use as is, as all it is doing is allowing a CSS animation to be seen when work is done and to make it unseen when the work is over. It can be used
through an onclick method or even by creating a event handler and takes only three inputs.
1) The ID of the CSS animation to be displayed
2) The Interval the routine will check to see if the work is done
3) The function the the "Spinner" function should call
Below is the actual code.
function SpinWorkingTask(spinid, interval, func) {
/* make the indicator you are using to show a task is working visable here */
document.getElementById(spinid).style.display = 'block';
/* create the task complete indicator */
var TaskComplete = 0;
var id = setInterval(frame, interval);
function frame() {
if (TaskComplete == 1) {
document.getElementById(spinid).style.display = 'none';
clearInterval(id);
} else {
if (TaskComplete == 0) {
func();
TaskComplete = 1;
}
}
}
}
|