Edit Column Metadata

Here's a very quick hack design on potentially how Column Metadata (Attributes) could be handled.

  1. I think having the power of OpenRefine itself might be useful while editing Column Metadata, so how might that look like? Do we retain the grid? If we assume that the grid eventually can and will display records better, and in doing so, we can enhance the display of Column Metadata such as key:value pairs or hierarchial data/json within Column Metadata later?
  2. But before we get into the weeds of hierarchial data designs. We can stick to flatten representations for now until we have more bells and whistles later on.
  3. Here is a basic mockup of how a simple Column Metadata editing mode might work.

BUTTON TO EDIT COLUMN METADATA

  • We move the All menu just a bit to the right to allow space for a new column header button :gear: . This button has bordering that shows it's aligned only to the column header row. Maybe the border could be a bit bolder, but for now, I made it slightly bigger than existing column header separators so that its still distinctive. Perhaps it could be more button-ized certainly. Just a hack for now to discuss designs.

SINGLE CLICK ON GEAR BUTTON TO ENTER COLUMN METADATA MODE

  • We add a special banner within the same <div> of the Row count to make it very clear we are not editing our dataset, but instead it's COLUMN METADATA and their attributes as well.
  • We offer a few builtin column metadata attributes (NAME, DATATYPE, ENTITY, DESCRIPTION, NILLABLE, and then users can add more attributes <Attribute> as desired. Here I am showing that a user has clicked a plus :heavy_plus_sign: button and already added the default named attribute key labeled "Attribute1".
  • I envision the Add Attribute Key operation to use a bolded plus :heavy_plus_sign: button and this button might appear right next to the gear settings button? (not mocked up in this picture however - but just imagine it)
  • Attribute Values themselves might be represented in JSON or simply manual via dictionary style ["environment":"swamp","limb_count":4] ? The presentation of this could basically be a sub-Records display (once we have a good design system for displaying Records). For now in this design proposal, the metadata is all flattened into columns with KEYs in the Column Headers, and VALUEs in the Row Cells.
  • When the user clicks the plus :heavy_plus_sign: button (not shown), they get an additional Attribute1, Attribute2, etc.
  • I am hopeful that the "rename columns" redesign might also be taken advantage of here and reused so users can quickly rename the Attribute (key) labels themselves, since I doubt that many scientists or journalists will just want to export something like "Attribute1","Attribute2", and would prefer having control and customizability over their column metadata labeling.

My hope here is that this gets us thinking about how we might actually reuse a lot of moving parts of OpenRefine, now and in the future, as we progress on a more fuller design system for OpenRefine!

CONFLICTS WITH OTHER DESIGN PROPOSALS

  • The previous work on Stars/Flags edit mode designs will also need a button, and perhaps the gear icon itself could sorta slide out a "button row" to the right or down when clicked and offer multiple "settings" buttons in a row such as this hacky example:
    :gear: [ :koko: | :white_flag: | :ballot_box_with_check: ]
    (or in lieu of a button row, a drop down list) instead of this current design of only being used for turning ON/OFF the Column Metadata mode?

Footnote: (Some of the ideas were shamelessly stolen from molgenis/molgenis-emx2: MOLGENIS EMX2, the latest version of the MOLGENIS data platform. (github.com) )
And which also allows users to introduce "semantics" into their metadata [1] [2] [video]