In an administration web application, I have to show some big tables having many columns. It doesn't have to work on anything but desktop (or maybe tablet) with a screen of at least
There's a lot of information to be shown, beauty doesn't matter much but usability does. IMHO vertical scrolling is too bad and so is fixing the table width to e.g.
1000px as some users may have more than twice as much.
Some columns contain nothing but a checkbox and there's no point to make them wider. Others contain some text whose length has no (usable) upper bound, like e.g., "surname" or "email". Therefore, I made some columns fixed width and others growable.
Showing everything is impossible, reducing width hard: There are no big numbers, so rounding can't help. I'm considering a multirow layout, but only as an option, not the base layout. Table transposition doesn't feel right with my data.
With the minimum screen width, some fields have to be truncated, but usually you can see everything important. I did this by assigning a minimum width to every column and specifying what columns should grow (a column containing a checkbox or a date should not).
With a bigger screen, the excess width gets evenly split between all growing columns. This works, but there's a requirement to be able to adjust column width manually. Obviously, such a change should be persistent. This is easy, but what should happen when the user resizes their window?
As an extreme example, imagine a growing column with minimum width
100px. This width would be user for a
1000px window. Imagine, there are five growable columns and the window is
2000px. The column gets one fifth of the excess width, so it's shown
100px + 1000px/5 = 300px wide.
Now the user makes it smaller, let's say
160px. To fit it to my simple formula, I'd have to decrease my minimum width by
140px, so it became
-40px. This is obviously wrong.
I could stop using the formula whenever the user resizes a column. But then I don't know what to do when the window size changes. I could find a better formula, but first I'd like to know what the user expects in such a case.