Confusing UX for Recursive report parameter
I've been tasked with implementing a report parameter that contains other report parameters, for a reporting software I'm working on. The UI, as described to me is really confusing, but I am at a loss to come up with a better design. It is to look something like this : and should behave as follows:
- When clicked upon, the child report parameter should populate on the left hand side. If that child report parameter has report parameters, then when value was selected for it, it should replace the left hand side contents and its child parameter should appear on the right and the parent appearing right above it, like :
- User should be able to go back up to parent/main levels
- When user enters values for the child parameters, the main checkbox should be toggled to checked
- When user clicks the checkbox, default parameter values for all levels should be set
All of this was to be under a <select>
widget, and I only had a couple hours to implement this.
The sheer confusion of this design, the model I was given for it, and what the expectations for the view-model should be, ate up so much of my time, resulting in only the stuff for the first image to be implemented (except for saving the values of the child parameters. I was lost about that), a day later.
The <select>
widget requirement was scrapped (literally impossible, and even if it weren't, it's counterintuitive as hell), but even after that, this design is really confusing. That checkboxes should not toggle onclick of the list buttons they're in, is counterintutive. However, I'm struggling to come up with something better. Could you help me out?
An idea I have
Instead of having to click checkbox to toggle whether a company is included with default values, simply clicking the button should do the trick. To deselect that company, user should see a trash icon or an X to discard, or even a small Discard
button next to the active list button.
Weakness of that approach is that, what if user has multiple selected companies, and only wants to modify the child parameters of just one of them?