Well, that made the JS way simpler.
Adds a lot of classes though. Maybe we could do it based on column index instead, but this will do for now.
table.hide-col0 { td:nth-child(0) { display: none; } }
Visibility was way simpler, but the table doesn't recalculate column widths until you use display:none;
This is now using the same method as the old products screen.
But we still need to update colspans..
The cols could have been a lot cleaner with simple classnames, but I preferred to mark up in a way that reveals the purpose (otherwise they could be used for styling).
It doesn't seem to be any faster comparing querySelector('[data]') vs class, or iterating through the dom nodes.