in msticpy/nbtools/data_viewer.py [0:0]
def __init__(self, data: pd.DataFrame):
"""Initialize the DataTableFilter class."""
self.all_cols = list(data.columns)
self.data = data
# Widgets
self._add_button = widgets.Button(description="Add filter")
self._del_button = widgets.Button(description="Delete filter")
self._upd_button = widgets.Button(description="Update filter")
self._clear_button = widgets.Button(description="Clear all filters")
self.apply_button = widgets.Button(description="Apply filter")
self._col_select = widgets.Dropdown(options=self.all_cols, **(_layout("200px")))
self._oper_sel = widgets.Dropdown(
options=self._col_operators(self.current_col), **(_layout("100px"))
)
self._not_cb = widgets.Checkbox(
description="not", value=False, **(_layout("60px", desc_width="initial"))
)
self._filter_value = widgets.Textarea(
description="Filter value", **(_layout("400px"))
)
self._curr_filters = widgets.Select(description="Filters", **(_layout("500px")))
self._oper_label = widgets.Label(" in ")
self.filters: Dict[str, FilterExpr] = {}
self._curr_filters.observe(self._select_filter, names="value")
self._col_select.observe(self._update_operators, names="value")
self._add_button.on_click(self._add_filter)
self._upd_button.on_click(self._update_filter)
self._del_button.on_click(self._del_filter)
self._clear_button.on_click(self._clear_filters)
filt_help_lbl = widgets.Label(
value="Enter multiple values separated by commas. Strings do not need quotes."
)
top_row = widgets.VBox(
[
filt_help_lbl,
widgets.HBox(
[
self._col_select,
self._not_cb,
self._oper_sel,
self._filter_value,
]
),
]
)
mid_row = widgets.HBox(
[
self._add_button,
self._upd_button,
]
)
curr_filt_lbl = widgets.Label(value="Current filters")
bottom_row = widgets.VBox(
[
curr_filt_lbl,
widgets.HBox(
[
self._curr_filters,
widgets.VBox([self._del_button, self._clear_button]),
]
),
],
**_layout(width="80%", border=True),
)
self.layout = widgets.VBox([top_row, mid_row, bottom_row, self.apply_button])