In Page Progress Spinners for
In Page Tasks that Take Time

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.

Below is an example of an in page spinner employed when a page action takes too long

Just click on column header to see each example and sort a column




TEXT
HERE
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;
	      }
	    }
	  }
	}



© 2020 Rumments