def _build_highlights_accordion(self) -> DOMWidget: """ Creates a widget that displays highlights for this `Tier` in an `ipywidgets.Accordion` - which is nice! """ highlights = self.tier.get_highlights() if not highlights: return None widget = Accordion() for i, (name, highlight) in enumerate(highlights.items()): out = Output() widget.children = (*widget.children, out) with out: for item in highlight: publish_display_data(**item) widget.set_title(i, name) widget.selected_index = None return widget
def create_accordion(dictionary): """ Create an Accordion output from a dict object """ widlist = [] ini = 0 widget = Accordion() widget.selected_index = None # this will unselect all for key, val in dictionary.items(): if isinstance(val, dict): newwidget = create_accordion(val) widlist.append(newwidget) elif isinstance(val, list): # tranform list to a dictionary dictval = {k: v for k, v in enumerate(val)} newwidget = create_accordion(dictval) widlist.append(newwidget) else: value = HTML(str(val)) widlist.append(value) widget.set_title(ini, key) ini += 1 widget.children = widlist return widget