def __init__()

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])