We're creating a widget that lets the user configure, among other things, two main elements for a widget:

  • Choose 1 or more 'metrics' (either a numerical value or a string/message for a timestamp )
  • Choose a display type: line graph, bar graph, grid, or list

The line graph, bar graph, and grid all support numerical metrics but not string metrics, and the list display type supports string metrics but not numerical metrics.

I'm trying to come up with a good flow for choosing metrics and a display type, but we want the user to choose the metrics before the display type. (If it were the other way around, it would be easy to first choose a display type and then populate the metric list accordingly).

Is there a way to achieve all of the following?

  1. Make the user choose the desired metrics before the display type

  2. Show all of the available metrics a user can choose upon entering the widget's configuration view (both numeric and string).

  3. Don't make the user re-choose metrics if they choose a display type that doesn't support their chosen metrics


One method is to show a preview of the display-type while they are choosing, and to show a updated preview when the user is selecting the metric. When inserting a chart in Google Spreadsheet, the user is presented with a preview so they can verify if the data has been interpreted correctly. It also grays out charts that are incompatible. You could gray out string metrics if the user has selected a display-type that only supports numeric metrics and vice-versa.

Google Spreadsheet's Chart Editor

By showing a generic preview during the display-type step, the user should have an idea of whether the display-type will suit the metric they'll apply next. Though arguably, you should allow the user the ability to return to the previous step should they choose an incorrect display.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.