Client-side table generation