WebgrownSolutions

William J. Familia's Dev Garden

Grid (data table)

As part of a new UI library, I have put together a full-featured data table (grid) using DataTables
(a table plug-in for jQuery) in a manner that follows the guidelines found in the Webgrown Solutions UI Manifesto. The Grid supports the following features:

The Demo

ID First Name Last Name City State Zip Code
1617QuinnAdamsStocktonSouth Carolina96757
517AlfredaAllenGallupSouth Dakota06952
894FarrahAllenMerizoConnecticut42619
1116FinnAlvaradoJacksonvilleUtah73408
1435HaleeAlvarezPeruSouth Carolina54300
1595YasirAshleyNew YorkUtah26454
1323AutumnAtkinsonMiami GardensRhode Island49760
1446KasperAtkinsonBerlinSouth Carolina62993
1369RubyAveryZanesvilleConnecticut92231
1392AndrewBaileyHutchinsonKansas81772
1347GretchenBaldwinAnn ArborConnecticut04228
1864WinterBallRutlandLouisiana92028
1835AliceBallardGuthrieVirginia83355
508HardingBanksRoswellSouth Dakota61965
1290MacKensieBartlettPeekskillSouth Dakota04657
1772DanaBenjaminLafayetteUtah30053
1340MaiteBentleyTwin FallsConnecticut10490
629PalmerBergerKennesawSouth Dakota14807
1856ColoradoBernardLahainaSouth Dakota02751
118QuinnBlakeSouth BendMinnesota63924
22HolmesBowmanFallonUtah08834
893JeromeBradySouth GateArkansas59638
1601AliBriggsWalnutSouth Carolina32881
1848SkylerBruceFairfieldUtah92471
1896RamonaBullockOwensboroSouth Carolina18779
642VaughanBurchNevada CityConnecticut45333
900JulieBurkeWalnutConnecticut24144
681MalikBurnettCape GirardeauUtah68001
1012CarsonBurtonWoonsocketUtah51185
108BevisButlerSan GabrielMontana48285
676RuthButlerFairfaxMichigan54916
762SummerCameronEast RutherfordConnecticut87597
834MayaCannonRutlandVermont79992
1666BlazeCardenasChicopeeSouth Carolina87125
1811AlanaCarterReddingConnecticut74350
1953DennisCaseySheboyganSouth Dakota68096
655RheaCaseyPortsmouthGeorgia34836
523GermaineChapmanMinnetonkaSouth Carolina44027
1694ZoeChaseScottsbluffSouth Dakota05374
1443OdetteCohenNew RochelleUtah94620
1541KayConleyUticaOhio80396
221MeghanConradSouth El MonteOklahoma72955
1489JordenCooleyPalmdaleConnecticut76245
828TimothyCrossBrown DeerConnecticut70684
1410MedgeDaughertyCodyConnecticut76833
1749RhondaDeanNorthamptonSouth Dakota25792
136AinsleyDelaneyButteMaine70099
1189AprilDeleonChicago HeightsUtah42606
930RajaDillardRensselaerUtah86988
394RiaDorseyHuntsvilleSouth Carolina53981
464FitzgeraldDunnArvadaSouth Dakota93072
331MargaretFieldsPeoriaSouth Dakota03473
1252TanaFinleyClaremoreSouth Carolina58205
1372ArdenFitzpatrickTerre HauteMaine74482
1128RinahFloresGlendoraSouth Dakota38568
641EchoFosterRolling Hills EstatesConnecticut60026
989TaShyaFoxLas VegasUtah25603
644KasperFrancisWatervlietSouth Dakota07099
94BakerFullerGreenvilleSouth Dakota08077
245MadonnaGainesWeymouthTennessee81611
1887PhyllisGainesValdezSouth Dakota96462
314BeverlyGambleEast RutherfordKansas71281
877ChastityGarciaSouth BurlingtonWyoming97891
260MufutauGarciaMequonKansas38661
1538ChavaGibsonGuthrieKansas06614
43MiraGoodmanPortsmouthDelaware80643
1852CarolynGordonWalnutMississippi12843
653MontanaGrantTerre HauteWashington72083
1502JudahGrayLos AngelesSouth Dakota72930
1795KarinaGreenArvadaConnecticut09116
95XavierGrossWalnutVermont13926
1508HedyGuthrieLa PuenteOklahoma24682
625MalloryGutierrezFort LauderdaleTexas11478
1733RiaGutierrezJacksonvilleArkansas81994
109YuliGutierrezCorpus ChristiNew Hampshire83307
1254KarenHartmanWillistonSouth Dakota67401
193NicholeHendrixVermillionSouth Dakota41716
1230IfeomaHessRochesterUtah33876
639BrandenHewittJefferson CitySouth Dakota88926
714AnnHigginsBaldwin ParkSouth Carolina30515
1499RowanHintonStamfordUtah97732
699NyssaHolcombDuluthWisconsin79721
1114KitraHoldenFranklinSouth Dakota43161
1674RahimHolderRutlandTennessee89531
99VeronicaHoltLaguna BeachSouth Carolina49474
492JohnHoodTauntonSouth Dakota41366
1090SandraHoodLynchburgSouth Dakota03523
44DeaconHopkinsSheltonUtah31450
535WinterHortonMiami BeachSouth Carolina40719
903IsabelleHouseBerlinUtah24676
489HakeemHowardHelenaSouth Carolina77437
1711TanishaHowardTonawandaSouth Dakota55397
1058MageeHuffToledoConnecticut72924
1485HannaHughesTemeculaSouth Carolina78253
1151CalebHullFayettevilleSouth Carolina61501
1894NadineHurleySugar LandSouth Carolina64278
631ChesterHutchinsonSyracuseMinnesota42496
1812KathleenIrwinSouth GateOklahoma33058
1343CalebJenningsFernleyConnecticut48745
316HenryJosephSignal HillUtah25871
645JoleneJuarezFairbanksUtah78607
1404GermaneJusticePittsburghSouth Carolina94248
1024VincentKaneWeymouthDistrict of Columbia40816
1948RavenKaufmanHighland ParkConnecticut79781
252ByronKinneyPuebloConnecticut39712
939HarlanKlineLaguna NiguelSouth Dakota57725
756SkylerLambertConcordConnecticut02658
572UnityLancasterNatchitochesSouth Carolina65873
860BradyLeePoughkeepsieSouth Dakota80151
1649JoanLeeSanta ClaraConnecticut18209
812CherylLewisTerre HauteKansas57397
1478NolanLewisCosta MesaSouth Dakota20462
1098YaelLindsayElizabeth CityConnecticut64461
619CharlesMacdonaldNewcastleUtah74135
831DaltonMaciasSouth PortlandColorado35029
1311HammettMaddoxReedsportSouth Carolina17051
749AuroraMaldonadoClovisSouth Carolina72189
520DorisMarshNorth ChicagoSouth Dakota74341
13TimothyMartinezValdezSouth Carolina53046
463VeronicaMasseyKemmererConnecticut71200
1888VivianMccarthyManchesterUtah37694
1438RuthMcdanielBaytownVirginia94304
559FinnMcdonaldSutter CreekWashington65745
1260JadeMcgeeEugeneSouth Dakota59922
771CarolMcleanFullertonSouth Carolina03680
952IonaMcleanEnidUtah56428
1205JamesMcleodGalesburgUtah03629
1882RalphMelendezDuluthKentucky13109
1031EllaMeyersFort CollinsConnecticut80790
1341EvangelineMeyersWinnemuccaSouth Dakota66257
1872UrielleMitchellSelmaConnecticut42115
512BrynnMoonPine BluffSouth Carolina06528
597ReeceMoralesPortsmouthCalifornia49988
565JaneNguyenCarrolltonConnecticut23373
1460RinahNguyenTamuningSouth Carolina42465
1178CharityNobleKenoshaSouth Carolina53561
1517BrendanNolanWestminsterConnecticut29107
31ChaseOchoaEvanstonConnecticut83993
1632PhilipOrtizEatontownSouth Carolina06964
1483XanthaOsbornLower BurrellUtah50379
990TalonOsborneVallejoSouth Carolina11448
578DeaconPatelIndependenceConnecticut63677
1217CalvinPearsonYukonSouth Dakota24797
471TashaPenningtonRivertonSouth Carolina98938
1781MarshallPerryCity of IndustrySouth Carolina12640
97BrentPierceGrand JunctionUtah24510
1843AlexandraPittmanSouth GateWisconsin43676
1302MalcolmPittmanRohnert ParkSouth Carolina31323
384VeronicaPooleWest HartfordSouth Carolina77413
401TuckerPopeNorfolkConnecticut99992
897NasimPorterPlattsburghSouth Dakota82064
1597VernonPughButlerWisconsin97498
1269DylanRandallWest CovinaSouth Carolina49354
1606MadonnaRaymondTorringtonUtah31759
391FlaviaReynoldsGilbertConnecticut89795
478MeredithReynoldsAgawamSouth Carolina50186
509AidanRiceButlerOregon53262
881SophiaRicePhiladelphiaSouth Carolina74421
901GarrisonRichardsonOneidaUtah91165
1952CharlotteRiddleBrigham CityConnecticut73025
470KylaRiggsRutlandColorado31102
451SerenaRiosJersey CitySouth Dakota26504
1HasadRiversRosevilleSouth Dakota59439
1965CarolRobbinsBoulder CitySouth Carolina97912
1979PandoraRochaMinotUtah80844
934LarsRogersCatskillSouth Dakota24041
752VincentRosaBaton RougeSouth Carolina43720
819FreyaRoyBellinghamUtah53220
849SageRuizBurlingameSouth Carolina67880
147DeborahRussoButteDistrict of Columbia77782
1677HopRutledgeRosemeadSouth Carolina87963
1456IdonaRutledgeEl CerritoPennsylvania23792
1055KamekoRutledgeHigh PointMassachusetts87542
793YettaSalinasKalamazooSouth Dakota90128
977GalvinSandersGarySouth Dakota28230
919ActonSanfordHazletonSouth Carolina57789
61RuthSantiagoSheridanNebraska07231
1291GuySaundersGreensburgUtah56937
1417JosephineSchneiderFriscoConnecticut47812
259MadonnaSchneiderFairfieldSouth Dakota05619
1862ElianaSchroederEl MonteUtah40013
64CamdenSextonSutter CreekMississippi32283
1333KimShannonOxfordSouth Dakota22996
542WayneSharpDuluthLouisiana87507
725QuentinShepardStaffordSouth Dakota48840
191GriffithSimsCypressConnecticut29925
237KeithSmallKnoxvilleConnecticut85237
1285DuncanStephensonEgg HarborUtah45961
1928LanceStevensYoungstownUtah52275
695GraceStoneSanta ClaraConnecticut29042
920HallaTateKingsportUtah17035
1061KimToddErieSouth Carolina93775
604BriannaTuckerMacombSouth Carolina44701
214AbbotTurnerKlamath FallsSouth Carolina98607
465BethanyTysonSunburySouth Carolina95988
1105JordenUnderwoodWheatonConnecticut67062
659LesterValdezSt. MarysSouth Dakota11583
1675VincentVaughanBentonvilleConnecticut98956
1158XandraVelasquezStantonSouth Dakota53952
1346HamishVelazquezWaycrossSouth Dakota26131
167NomlangaVincentSan MarinoConnecticut32900
1377AmayaWallLa HabraSouth Carolina14321
824GrayWallLittletonSouth Carolina94350
729NoahWallsSouth El MonteOhio28206
69HollyWebbKearneyConnecticut14552
435AnneWhiteSturgisConnecticut96975
1665QuentinWhitfieldWillistonUtah29708
1789BeatriceWhitleyCedarburgConnecticut96935
1089MiaWigginsAnchorageSouth Carolina89701
411WesleyWilkinsYazoo CityConnecticut86005
1211TimothyWilliamsRollaSouth Dakota44093
344RuthWiseAppletonIowa43913
1492MelissaWongBellflowerConnecticut98783
472JadenWoodardDaly CityUtah86207
936RyanWoodwardNew MadridSouth Dakota05047
682GemmaYoungAlbuquerqueConnecticut00077

The Markup

Just a basic table, with a normal class attribute and some custom data (data-*) attributes to allow feature customization. Once the CSS and Script stuff are in place on a website, any page can take advantage of this full-featured Grid by simply setting a table's class attribute to "tableGrid" and setting the desired optional custom data attributes. The custom data attributes are optional, so the table could simple just have the class attribute and work with the default features enabled.

That sounds like a DRY solution to me (see UI Manifesto).

<table class="tableGrid"
    data-allowFilter="true"
    data-allowPaging="true"
    data-pagingType="full"
    data-pagingSizeOptions="[[10, 25, 50, -1], [10, 25, 50, 'All']]"
    data-pagingSizeDefaultOption="10"
    data-allowSort="true"
    data-sortDefault="[[2, 'asc']]"
    data-showSummaryInformation="true"
    data-showLoadingMessage="true"
    data-rememberState="false"
    data-i18nLoadingMessage="Loading..."
    data-i18nPageSizeTitleAndMenu="Items per page: _MENU_"
    data-i18nNoResultsMessage="There are no items to display."
    data-i18nNoResultsMessage="There are no items to display."
    data-i18nResultsInformation="Showing _START_ to _END_ of _TOTAL_ items"
    data-i18nNoResultsInformation="Showing 0 to 0 of 0 items"
    data-i18nResultsFilteredInformation="<br />(filtered from _MAX_ total items)"
    data-i18nFilterTitle="Filter: "
    data-i18nPaginateFirstLinkText="«"
    data-i18nPaginatePreviousLinkText="‹"
    data-i18nPaginateNextLinkText="›"
    data-i18nPaginateLastLinkText="»">
    <thead>
        <tr>
            <th>ID</th>
            <th>First Name</th>
            <th>Last Name</th>
            <th>City</th>
            <th>State</th>
            <th>Zip Code</th>
        </tr>
    </thead>
    <tbody>
        Rows...
    </tbody>
</table>

The CSS

Not shown to the general public.
        

The Script

Not shown to the general public.
        
blog comments powered by Disqus

In addition to the markup, CSS, and JavaScript code samples found below the demo, the following resources/files are required:

We are processing your request.

loading...
*
Please fix the following issues and then submit again: is required. is not valid. does not match
loading...
mm/dd/yy mm/dd/yy 0 Previous Next ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'] ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'] ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] Wk false false false h:mm tt Choose Time Time: Hour: Minute: Second: Now Done You have # character(s) remaining.