Experimental project

This is a sandbox project, which contains experimental code for developer use only.

As a first step this module attempts to support a content field as a matrix. The matrix field supports management of the labels of the matrix on the x and y axes i.e. first row column headers and first column row headers using predefined vocabularies with support for nesting. The first version is expected to be fairly rudimentary with future versions i will attempt to support online merge of rows and columns using AJAX. The grand plan is to try and take the implementation in the direction of a spreadsheet style pivot table. The first versions will render the complete vocabulary in the fully expanded form on both axes. Future versions will attempt to provide collapsible sections on both axes with theming to make the merged cells of top level terms appear as tabs in a tab container.

what works currently...

  • add a vocabular matrix field to any content type. the field settings allow the configuration of two vocabularies.
    • when adding or editing a content of that type a matrix is generated for the two vocabularies with textfields in every cell.
    • in the view mode, it is rendered more or less like a regular table with two basic differences,
      • other than the usual header, even the first column of the table is rendered like a header.
      • odd and even row styling has been removed as it is not managable as cells can get arbitrarily merged with colspan and rowspan. will revisit this later to see if something meaningful can be done,

enhancements that i am visualizing right now...

  • support supressing of terms on both axes during editing of a content node. all the terms should always be available in the edit mode but supressed terms will not be shown in the view mode
  • collapsible terms (rows & columns). this should allow for very large vocabularies to be supported on a single html page which would otherwise lead to excessive scrolling
    • collapsible sections as tabs
    • expand-all, collapse-all options
    • nesting of collapsible sections(tabs)
    • default collapsed and expanded sections
    • lazy loading of collapsed sections for performance reasons. nice to have, not a priority in the scheme of things
  • vocabulary term driven data type for form elements generated, e.g. a date based term should produce a date selection widget in the matrix. will put this on the back burner as i am not finding a readily usable module that provides custom fields for terms. Found something called term_fields which unfortunately has not been ported to 7.x yet, maybe, i will give it a try sometime later
  • AJAX based online merge and split of cells. this will be challenging, will not be taking this up in a hurry
  • a lot of code cleanup and compliance to standards to make this a full project
  • implement caching to optimize repetitive form widget theming for a field
  • integration to expose all the matrix data to custom views
  • search integration, since the whole thing is vocabulary driven, things should be searchable by any field implications for apache solr integration
  • aggreagate columns/rows to produce counts, sums, averages, mins and maxs' of particular term columns and rows. Will take this up at the very end, could get complicated, but this should take the implementation very close to that of a spreadsheet pivot table

Dependencies

This is still very much work in progress, please visit often to check on the latest enhancements.

Project information