Good markup. But you are right - to do this with fine detail will lead to the monster of the table (and the accompanying code to create it). This is doable, but there is an easier way, although it is not so neat:
Create the table as usual, but make it empty. However, set a fixed width / height for each row and column. Then use absolute positioning to place calendar entries on top of the table . Presto - it looks the same, but you can put records with minimal dots if you want.
The disadvantage of this is that copy-paste will not work (very well) on this beast, and I donβt know what it will do for SEO and accessibility. Probably nothing good. Therefore, if these two are important to you, you will have to resort to workarounds (although I think there are ways to use the scheme and have good SEO / accessibility).
Added: Oh, and I just realized that you would also have to look at crowded texts. Table cells will automatically expand, but absolutely positioned DIVs will not.
Added 2: Hey, here is the idea: use relative positioning to slightly shift the records. Instead of writing text directly in cells, write them in SPAN, and then relatively position it so that it moves for 15 minutes. Again, this requires a fixed cell width and height, and overflow will be a problem, but SEO / accessibility will not suffer, and copy-paste will work as expected.
Vilx-
source share