def test_series_of_text_filters(): view = QgridWidget(df=create_df()) view._handle_qgrid_msg_helper({ 'type': 'get_column_min_max', 'field': 'E', 'search_val': None }) view._handle_qgrid_msg_helper({ 'field': "E", 'filter_info': { 'field': "E", 'selected': [0, 1], 'type': "text", 'excluded': [] }, 'type': "filter_changed" }) filtered_df = view.get_changed_df() assert len(filtered_df) == 2 # reset the filter... view._handle_qgrid_msg_helper({ 'field': "E", 'filter_info': { 'field': "E", 'selected': None, 'type': "text", 'excluded': [] }, 'type': "filter_changed" }) # ...and apply a text filter on a different column view._handle_qgrid_msg_helper({ 'type': 'get_column_min_max', 'field': 'F', 'search_val': None }) view._handle_qgrid_msg_helper({ 'field': "F", 'filter_info': { 'field': "F", 'selected': [0, 1], 'type': "text", 'excluded': [] }, 'type': "filter_changed" }) filtered_df = view.get_changed_df() assert len(filtered_df) == 2
def test_series_of_text_filters(): view = QgridWidget(df=create_df()) view._handle_qgrid_msg_helper({ 'type': 'show_filter_dropdown', 'field': 'E', 'search_val': None }) view._handle_qgrid_msg_helper({ 'field': "E", 'filter_info': { 'field': "E", 'selected': [0, 1], 'type': "text", 'excluded': [] }, 'type': "change_filter" }) filtered_df = view.get_changed_df() assert len(filtered_df) == 2 # reset the filter... view._handle_qgrid_msg_helper({ 'field': "E", 'filter_info': { 'field': "E", 'selected': None, 'type': "text", 'excluded': [] }, 'type': "change_filter" }) # ...and apply a text filter on a different column view._handle_qgrid_msg_helper({ 'type': 'show_filter_dropdown', 'field': 'F', 'search_val': None }) view._handle_qgrid_msg_helper({ 'field': "F", 'filter_info': { 'field': "F", 'selected': [0, 1], 'type': "text", 'excluded': [] }, 'type': "change_filter" }) filtered_df = view.get_changed_df() assert len(filtered_df) == 2
def test_series_of_text_filters(): view = QgridWidget(df=create_df()) view._handle_qgrid_msg_helper({ "type": "show_filter_dropdown", "field": "E", "search_val": None }) view._handle_qgrid_msg_helper({ "field": "E", "filter_info": { "field": "E", "selected": [0, 1], "type": "text", "excluded": [], }, "type": "change_filter", }) filtered_df = view.get_changed_df() assert len(filtered_df) == 2 # reset the filter... view._handle_qgrid_msg_helper({ "field": "E", "filter_info": { "field": "E", "selected": None, "type": "text", "excluded": [], }, "type": "change_filter", }) # ...and apply a text filter on a different column view._handle_qgrid_msg_helper({ "type": "show_filter_dropdown", "field": "F", "search_val": None }) view._handle_qgrid_msg_helper({ "field": "F", "filter_info": { "field": "F", "selected": [0, 1], "type": "text", "excluded": [], }, "type": "change_filter", }) filtered_df = view.get_changed_df() assert len(filtered_df) == 2
def test_nans(self): df = pd.DataFrame([(pd.Timestamp('2017-02-02'), np.nan), (4, 2), ('foo', 'bar')]) view = QgridWidget(df=df) self.assertIsNotNone(view.get_changed_df())
class DJGrid: ''' DataJoint/QgridWidget utility class. Deprecated in favor of DJRecord since we clone table state & dj isn't designed for data updates; possibly useful if dealing with pandas or updates absolutely required. ''' def __init__(self, schema, tableclass): self._djpanda = DJPanda(schema, tableclass) self._widget = None def display(self): df = self._djpanda.fetch() self._widget = QgridWidget(df=df, show_toolbar=True) return self._widget def save(self): self._djpanda._edit = self._widget.get_changed_df() return self._djpanda.save() def edit(self): # todo: get full-loop interaction going in jupyter # ... using 'interact()' requires a widget with 'FIXME WHAT NEEDS' # basically ixgrid is a dom widget which doesn't have whatever # this missing note used to say. raise NotImplementedError( 'edit() not implemented. Please use .display() then .save()')
def test_integer_index_filter(): view = QgridWidget(df=create_df()) view._handle_qgrid_msg_helper({ 'field': "index", 'filter_info': { 'field': "index", 'max': None, 'min': 2, 'type': "slider" }, 'type': "filter_changed" }) filtered_df = view.get_changed_df() assert len(filtered_df) == 2
def test_integer_index_filter(): view = QgridWidget(df=create_df()) view._handle_qgrid_msg_helper({ 'field': "index", 'filter_info': { 'field': "index", 'max': None, 'min': 2, 'type': "slider" }, 'type': "change_filter" }) filtered_df = view.get_changed_df() assert len(filtered_df) == 2
def test_integer_index_filter(): view = QgridWidget(df=create_df()) view._handle_qgrid_msg_helper({ "field": "index", "filter_info": { "field": "index", "max": None, "min": 2, "type": "slider", }, "type": "change_filter", }) filtered_df = view.get_changed_df() assert len(filtered_df) == 2