I'm working on a portfolio management system at an investment company, which will include a list of stocks held and their attributes such as name, issuer, market price, value etc. These will be listed in an interactive grid with each attribute in its own column. What possible functions are there for user control over the contents in a column? I can only think of Sorting, Filtering and Grouping By, but would like to know of anything else in common usage to make the software more interactive. Any thoughts would be very welcome!
I don't mean to sound rude but: what does your stakeholder want? Have you talked to him about it? What does he need? Or is he already content with sorting, filtering and grouping by?
This is a pretty open question. You can do a lot with columns. You can get very creative and create a lot of functionality, but if the stakeholder/user doesn't want it, he will just be paying for a bag of air and you'll have a hard time designing a user friendly interface with a lot of complexity.
If the requirements aren't clear, I would first talk with your stakeholder
Depending on the complexity of the system, you could implement something real fancy that wont take up that much room:
Name || Issuer ================ Name || Issuer ================ Name || Issuer
You have that as the basic format for the view, nice and simple. You can then implement a feature where clicking on a certain row will expand the details of said entry. Something like an accordion in HTML (I'm unsure as to whether you are more design or implementation)
So when you click, the display for that entry becomes something like:
Name || Issuer ================ Market Price Value etc... ================ Next Entry...
If you have something like this, you can end up with a comprehensive data table, whilst keeping it nice and tidy. Everyone loves tidy UIs.
The actions can also be hidden within this expansion, keeping your UI even tidier.
Of course, I don't know what role you play in this system, so I'll leave it there for now...
A few more:
- Summaries of whole columns or groups. This can help with chunking and understanding data.
- Only show selected (using check boxes to select specific rows then filtering by that selection). This can greatly aid comparison of rows
Not related so much to column functions but definitely related to ux & ui:
- Add in some sparklines. This will help with visualizing market price and value over time at a glance.
- Allow more detailed information to be shown such as detailed graphs or issuer information. This can be done through either an accordion style expansion of the rows or an additional details pane.
If done correctly these types of things can raise your table from merely showing data to showing meaningful information.
Of course the decision to use these or not depends on how important this table is to your system.
Subtotals on sorted columns wherever suitable. For example, if you have a column which lists the industry to which each stock belongs, than you could provide a subtotal whenever one industry ends and the next begins in the sorted column. So the column could start with say Aerospace and when Aerospace ends and Chemicals (or whatever) begins, insert a subtotals row which aggregates the Aerospace stocks. Not all columns will lend themselves to this and some will be more suited to summing (like total value of investments) and some to averaging (like rate of returns) but it will be useful.
If your users are sophisticated enough, you could also think of functionality like Excel pivot tables.
This advice comes from first-hand experience in the domain.
I also use "Select column" button in the column header (shown on mouse over). This was requested by the client, because when user selects a cell, he can perform some actions on this cell (submit, authorize, etc.). The grid can contain +2k rows so it's more convenient to select all cells in a column by just one click, and then perform desired action.
I support what Misha Scholte said. You might find out there is a real need for those features (though I'm a bit skeptical).
Anyhow, in this kind of situation, I find it useful to take a look at the demos of third-party component vendors. Since they want you to buy their component, they showcase all their advanced capabilities.
Some examples include: