All good points. I suggest to focus on the functionality that is required regardless of implementation in TB. This should include (as per other posts here):
- The selection of notes to be analysed using cross-tabulation
- The selection of at least 2 note attributes and their ranges
- To define what information is required in the cross-tab (e.g. count, average, max, min, most frequent, number of unique notes etc…)
- To display the cross-tab results
- To provide the TB user with access to the notes and their contents selected for each cross-tabulation result (e.g. table cell)
I’ve visualised this within TB and then link the function to some options that we proposed for each of these steps. In addition I’ve tried to estimate the R & D footprint for such implementation work and colour coded the options accordingly (with many many caveats as I don’t know the details. In general the close to existing functionality the lower the R & D). The result is provided below:
On the left is a minimalist cross-tab for 2 attributes each attribute with two options (e.g. like a boolean). Further to the right the functionality and then implementation options.
I’ve come to the conclusion that the most efficient implementation could be via the idea of a Super Container
or a container of containers which builds on many of the expressive idioms already available in TB. This is illustrated below:
The super container has access to all the notes for the cross-tab analyses and has an updated display option in the note that supports cross-tables. Each cell in the cross-table is a container of it’s own with alias to all contributing notes and displays the cross-tab cell summary based on the user function selected.
The advantage of this approach is that - apart from the details of selecting attributes and the new table functionality and its display - existing TB tools and idioms can be used. It is essentially a TableView summary (improved) which summarises the contents of the notes rather than list them as currently the case.
All to be taken with a grain of salt of course. However I hope that by presenting an outline of an implementation I can give some impetus to zero in on possible implementation of this new functionality.