예제 #1
0
파일: test_grid.py 프로젝트: seadevfr/qgrid
def test_object_dtype():
    df = pd.DataFrame({"a": my_object_vals}, index=my_object_vals)
    widget = QgridWidget(df=df)
    grid_data = json.loads(widget._df_json)["data"]

    widget._handle_qgrid_msg_helper({
        "type": "show_filter_dropdown",
        "field": "a",
        "search_val": None
    })
    widget._handle_qgrid_msg_helper({
        "field": "a",
        "filter_info": {
            "field": "a",
            "selected": [0, 1],
            "type": "text",
            "excluded": [],
        },
        "type": "change_filter",
    })

    filter_table = widget._filter_tables["a"]
    assert not isinstance(filter_table[0], dict)
    assert not isinstance(filter_table[1], dict)

    assert not isinstance(grid_data[0]["a"], dict)
    assert not isinstance(grid_data[1]["a"], dict)

    assert not isinstance(grid_data[0]["index"], dict)
    assert not isinstance(grid_data[1]["index"], dict)
예제 #2
0
파일: test_grid.py 프로젝트: seadevfr/qgrid
def test_add_row_button():
    widget = QgridWidget(df=create_df())
    event_history = init_event_history("row_added", widget=widget)

    widget._handle_qgrid_msg_helper({"type": "add_row"})

    assert event_history == [{
        "name": "row_added",
        "index": 4,
        "source": "gui"
    }]

    # make sure the added row in the internal dataframe contains the
    # expected values
    added_index = event_history[0]["index"]
    expected_values = pd.Series({
        "qgrid_unfiltered_index": 4,
        "A": 1,
        "C": 1,
        "D": 3,
        "Date": pd.Timestamp("2013-01-02 00:00:00"),
        "E": "bar",
        "F": "fox"
    })
    sort_idx = widget._df.loc[added_index].index
    assert (widget._df.loc[added_index] == expected_values[sort_idx]).all()
예제 #3
0
파일: test_grid.py 프로젝트: seadevfr/qgrid
def test_remove_row_button():
    widget = QgridWidget(df=create_df())
    event_history = init_event_history(["row_removed", "selection_changed"],
                                       widget=widget)

    selected_rows = [1, 2]
    widget._handle_qgrid_msg_helper({
        "rows": selected_rows,
        "type": "change_selection"
    })

    widget._handle_qgrid_msg_helper({"type": "remove_row"})

    assert event_history == [
        {
            "name": "selection_changed",
            "old": [],
            "new": selected_rows,
            "source": "gui",
        },
        {
            "name": "row_removed",
            "indices": selected_rows,
            "source": "gui"
        },
    ]
예제 #4
0
def test_object_dtype():
    df = pd.DataFrame({'a': my_object_vals}, index=my_object_vals)
    widget = QgridWidget(df=df)
    grid_data = json.loads(widget._df_json)['data']

    widget._handle_qgrid_msg_helper({
        'type': 'show_filter_dropdown',
        'field': 'a',
        'search_val': None
    })
    widget._handle_qgrid_msg_helper({
        'field': "a",
        'filter_info': {
            'field': "a",
            'selected': [0, 1],
            'type': "text",
            'excluded': []
        },
        'type': "change_filter"
    })

    filter_table = widget._filter_tables['a']
    assert not isinstance(filter_table[0], dict)
    assert not isinstance(filter_table[1], dict)

    assert not isinstance(grid_data[0]['a'], dict)
    assert not isinstance(grid_data[1]['a'], dict)

    assert not isinstance(grid_data[0]['index'], dict)
    assert not isinstance(grid_data[1]['index'], dict)
예제 #5
0
def test_object_dtype():
    df = pd.DataFrame({'a': my_object_vals})
    widget = QgridWidget(df=df)
    grid_data = json.loads(widget._df_json)['data']

    widget._handle_qgrid_msg_helper({
        'type': 'get_column_min_max',
        'field': 'a',
        'search_val': None
    })
    widget._handle_qgrid_msg_helper({
        'field': "a",
        'filter_info': {
            'field': "a",
            'selected': [0, 1],
            'type': "text",
            'excluded': []
        },
        'type': "filter_changed"
    })

    filter_table = widget._filter_tables['a']
    assert not isinstance(filter_table[0], dict)
    assert not isinstance(filter_table[1], dict)

    assert not isinstance(grid_data[0]['a'], dict)
    assert not isinstance(grid_data[1]['a'], dict)
예제 #6
0
def test_remove_row_button():
    widget = QgridWidget(df=create_df())
    event_history = init_event_history(['row_removed', 'selection_changed'],
                                       widget=widget)

    selected_rows = [1, 2]
    widget._handle_qgrid_msg_helper({
        'rows': selected_rows,
        'type': "change_selection"
    })

    widget._handle_qgrid_msg_helper({
        'type': 'remove_row'
    })

    assert event_history == [
        {
            'name': 'selection_changed',
            'old': [],
            'new': selected_rows,
            'source': 'gui'
        },
        {
            'name': 'row_removed',
            'indices': selected_rows,
            'source': 'gui'
        }
    ]
예제 #7
0
def test_edit_date():
    view = QgridWidget(df=create_df())
    view._handle_qgrid_msg_helper({
        'column': "Date",
        'row_index': 3,
        'type': "cell_change",
        'unfiltered_index': 0,
        'value': "2013-01-16T00:00:00.000+00:00"
    })
예제 #8
0
 def test_nans():
     df = pd.DataFrame([(pd.Timestamp('2017-02-02'), np.nan), (4, 2),
                        ('foo', 'bar')])
     view = QgridWidget(df=df)
     view._handle_qgrid_msg_helper({
         'type': 'change_sort',
         'sort_field': 1,
         'sort_ascending': True
     })
예제 #9
0
def test_get_selected_df():
    sample_df = create_df()
    selected_rows = [1, 3]
    view = QgridWidget(df=sample_df)
    view._handle_qgrid_msg_helper({
        'rows': selected_rows,
        'type': "selection_change"
    })
    selected_df = view.get_selected_df()
    assert len(selected_df) == 2
    assert sample_df.iloc[selected_rows].equals(selected_df)
예제 #10
0
def test_get_selected_df():
    sample_df = create_df()
    selected_rows = [1, 3]
    view = QgridWidget(df=sample_df)
    view._handle_qgrid_msg_helper({
        'rows': selected_rows,
        'type': "change_selection"
    })
    selected_df = view.get_selected_df()
    assert len(selected_df) == 2
    assert sample_df.iloc[selected_rows].equals(selected_df)
예제 #11
0
def test_multi_index():
    view = QgridWidget(df=create_multi_index_df())

    observer_count = 0

    def on_value_change(change):
        nonlocal observer_count
        observer_count += 1

    view.observe(on_value_change, names=['_df'])

    view._handle_qgrid_msg_helper({
        'type': 'get_column_min_max',
        'field': 'level_0',
        'search_val': None
    })

    view._handle_qgrid_msg_helper({
        'type': 'filter_changed',
        'field': 3,
        'filter_info': {
            'field': 3,
            'type': 'slider',
            'min': -0.111,
            'max': None
        }
    })

    view._handle_qgrid_msg_helper({
        'type': 'filter_changed',
        'field': 3,
        'filter_info': {
            'field': 3,
            'type': 'slider',
            'min': None,
            'max': None
        }
    })

    view._handle_qgrid_msg_helper({
        'type': 'sort_changed',
        'sort_field': 3,
        'sort_ascending': True
    })

    view._handle_qgrid_msg_helper({
        'type': 'sort_changed',
        'sort_field': 'level_0',
        'sort_ascending': True
    })

    assert observer_count == 4
예제 #12
0
def test_nans():
    df = pd.DataFrame([(pd.Timestamp('2017-02-02'), np.nan), (4, 2), ('foo', 'bar')])
    view = QgridWidget(df=df)
    view._handle_qgrid_msg_helper({
        'type': 'sort_changed',
        'sort_field': 1,
        'sort_ascending': True
    })
    view._handle_qgrid_msg_helper({
        'type': 'get_column_min_max',
        'field': 1,
        'search_val': None
    })
예제 #13
0
def test_multi_index():
    view = QgridWidget(df=create_multi_index_df())

    view._handle_qgrid_msg_helper({
        'type': 'get_column_min_max',
        'field': 'level_0',
        'search_val': None
    })

    view._handle_qgrid_msg_helper({
        'type': 'filter_changed',
        'field': 3,
        'filter_info': {
            'field': 3,
            'type': 'slider',
            'min': -0.111,
            'max': None
        }
    })

    view._handle_qgrid_msg_helper({
        'type': 'sort_changed',
        'sort_field': 3,
        'sort_ascending': True
    })

    view._handle_qgrid_msg_helper({
        'type': 'sort_changed',
        'sort_field': 'level_0',
        'sort_ascending': True
    })
예제 #14
0
파일: test_grid.py 프로젝트: seadevfr/qgrid
def test_mixed_type_column():
    df = pd.DataFrame({"A": [1.2, "xy", 4], "B": [3, 4, 5]})
    df = df.set_index(pd.Index(["yz", 7, 3.2]))
    view = QgridWidget(df=df)
    view._handle_qgrid_msg_helper({
        "type": "change_sort",
        "sort_field": "A",
        "sort_ascending": True
    })
    view._handle_qgrid_msg_helper({
        "type": "show_filter_dropdown",
        "field": "A",
        "search_val": None
    })
예제 #15
0
파일: test_grid.py 프로젝트: seadevfr/qgrid
def test_date_index():
    df = create_df()
    df.set_index("Date", inplace=True)
    view = QgridWidget(df=df)
    view._handle_qgrid_msg_helper({
        "type": "change_filter",
        "field": "A",
        "filter_info": {
            "field": "A",
            "type": "slider",
            "min": 2,
            "max": 3,
        },
    })
예제 #16
0
파일: test_grid.py 프로젝트: seadevfr/qgrid
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
예제 #17
0
파일: test_grid.py 프로젝트: seadevfr/qgrid
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
예제 #18
0
파일: test_grid.py 프로젝트: seadevfr/qgrid
def test_nans():
    df = pd.DataFrame([(pd.Timestamp("2017-02-02"), np.nan), (4, 2),
                       ("foo", "bar")])
    view = QgridWidget(df=df)
    view._handle_qgrid_msg_helper({
        "type": "change_sort",
        "sort_field": 1,
        "sort_ascending": True
    })
    view._handle_qgrid_msg_helper({
        "type": "show_filter_dropdown",
        "field": 1,
        "search_val": None
    })
예제 #19
0
def test_add_row():
    view = QgridWidget(df=create_df())

    observer_called = {}

    def on_value_change(change):
        observer_called['called'] = True
        assert len(change['new']) == 5

    view.observe(on_value_change, names=['_df'])

    view._handle_qgrid_msg_helper({'type': 'add_row'})

    assert observer_called['called']
예제 #20
0
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
예제 #21
0
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
예제 #22
0
def test_date_index():
    df = create_df()
    df.set_index('Date', inplace=True)
    view = QgridWidget(df=df)
    view._handle_qgrid_msg_helper({
        'type': 'change_filter',
        'field': 'A',
        'filter_info': {
            'field': 'A',
            'type': 'slider',
            'min': 2,
            'max': 3
        }
    })
예제 #23
0
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
예제 #24
0
def test_mixed_type_column():
    df = pd.DataFrame({'A': [1.2, 'xy', 4], 'B': [3, 4, 5]})
    df = df.set_index(pd.Index(['yz', 7, 3.2]))
    view = QgridWidget(df=df)
    view._handle_qgrid_msg_helper({
        'type': 'sort_changed',
        'sort_field': 'A',
        'sort_ascending': True
    })
    view._handle_qgrid_msg_helper({
        'type': 'get_column_min_max',
        'field': 'A',
        'search_val': None
    })
예제 #25
0
def test_mixed_type_column():
    df = pd.DataFrame({'A': [1.2, 'xy', 4], 'B': [3, 4, 5]})
    df = df.set_index(pd.Index(['yz', 7, 3.2]))
    view = QgridWidget(df=df)
    view._handle_qgrid_msg_helper({
        'type': 'change_sort',
        'sort_field': 'A',
        'sort_ascending': True
    })
    view._handle_qgrid_msg_helper({
        'type': 'show_filter_dropdown',
        'field': 'A',
        'search_val': None
    })
예제 #26
0
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
예제 #27
0
def test_date_index():
    df = create_df()
    df.set_index('Date', inplace=True)
    view = QgridWidget(df=df)
    view._handle_qgrid_msg_helper({
        'type': 'filter_changed',
        'field': 'A',
        'filter_info': {
            'field': 'A',
            'type': 'slider',
            'min': 2,
            'max': 3
        }
    })
예제 #28
0
def test_nans():
    df = pd.DataFrame([(pd.Timestamp('2017-02-02'), np.nan),
                       (4, 2),
                       ('foo', 'bar')])
    view = QgridWidget(df=df)
    view._handle_qgrid_msg_helper({
        'type': 'change_sort',
        'sort_field': 1,
        'sort_ascending': True
    })
    view._handle_qgrid_msg_helper({
        'type': 'show_filter_dropdown',
        'field': 1,
        'search_val': None
    })
예제 #29
0
def test_change_selection():
    widget = QgridWidget(df=create_large_df(size=10))
    event_history = init_event_history('selection_changed', widget=widget)

    widget._handle_qgrid_msg_helper({
        'type': 'change_selection',
        'rows': [5]
    })
    assert widget._selected_rows == [5]

    widget._handle_qgrid_msg_helper({
        'type': 'change_selection',
        'rows': [7, 8]
    })
    assert widget._selected_rows == [7, 8]

    widget.change_selection([3, 5, 6])
    assert widget._selected_rows == [3, 5, 6]

    widget.change_selection()
    assert widget._selected_rows == []

    assert event_history == [
        {
            'name': 'selection_changed',
            'old': [],
            'new': [5],
            'source': 'gui'
        },
        {
            'name': 'selection_changed',
            'old': [5],
            'new': [7, 8],
            'source': 'gui'
        },
        {
            'name': 'selection_changed',
            'old': [7, 8],
            'new': [3, 5, 6],
            'source': 'api'
        },
        {
            'name': 'selection_changed',
            'old': [3, 5, 6],
            'new': [],
            'source': 'api'
        },
    ]
예제 #30
0
파일: test_grid.py 프로젝트: rrash283/qgrid
def test_add_row():
    widget = QgridWidget(df=create_df())
    event_history = init_event_history('row_added', widget=widget)

    widget._handle_qgrid_msg_helper({'type': 'add_row'})

    assert event_history == [{'name': 'row_added', 'index': 4}]

    # make sure the added row in the internal dataframe contains the
    # expected values
    added_index = event_history[0]['index']
    expected_values = np.array(
        [4, 1.0,
         pd.Timestamp('2013-01-02 00:00:00'), 1.0, 3, 'bar', 'fox'],
        dtype=object)
    assert (widget._df.loc[added_index].values == expected_values).all()
예제 #31
0
파일: test_grid.py 프로젝트: seadevfr/qgrid
def test_row_edit_callback():
    sample_df = create_df()

    def can_edit_row(row):
        return row["E"] == "train" and row["F"] == "bar"

    view = QgridWidget(df=sample_df, row_edit_callback=can_edit_row)

    view._handle_qgrid_msg_helper({
        "type": "change_sort",
        "sort_field": "index",
        "sort_ascending": True
    })

    expected_dict = {0: False, 1: True, 2: False, 3: False}

    assert expected_dict == view._editable_rows
예제 #32
0
def test_row_edit_callback():
    sample_df = create_df()

    def can_edit_row(row):
        return row['E'] == 'train' and row['F'] == 'bar'

    view = QgridWidget(df=sample_df, row_edit_callback=can_edit_row)

    view._handle_qgrid_msg_helper({
        'type': 'change_sort',
        'sort_field': 'index',
        'sort_ascending': True
    })

    expected_dict = {0: False, 1: True, 2: False, 3: False}

    assert expected_dict == view._editable_rows
예제 #33
0
def test_change_selection():
    widget = QgridWidget(df=create_large_df(size=10))
    event_history = init_event_history('selection_changed', widget=widget)

    widget._handle_qgrid_msg_helper({'type': 'change_selection', 'rows': [5]})
    assert widget._selected_rows == [5]

    widget._handle_qgrid_msg_helper({
        'type': 'change_selection',
        'rows': [7, 8]
    })
    assert widget._selected_rows == [7, 8]

    widget.change_selection([3, 5, 6])
    assert widget._selected_rows == [3, 5, 6]

    widget.change_selection()
    assert widget._selected_rows == []

    assert event_history == [
        {
            'name': 'selection_changed',
            'old': [],
            'new': [5],
            'source': 'gui'
        },
        {
            'name': 'selection_changed',
            'old': [5],
            'new': [7, 8],
            'source': 'gui'
        },
        {
            'name': 'selection_changed',
            'old': [7, 8],
            'new': [3, 5, 6],
            'source': 'api'
        },
        {
            'name': 'selection_changed',
            'old': [3, 5, 6],
            'new': [],
            'source': 'api'
        },
    ]
예제 #34
0
파일: test_grid.py 프로젝트: seadevfr/qgrid
def test_change_selection():
    widget = QgridWidget(df=create_large_df(size=10))
    event_history = init_event_history("selection_changed", widget=widget)

    widget._handle_qgrid_msg_helper({"type": "change_selection", "rows": [5]})
    assert widget._selected_rows == [5]

    widget._handle_qgrid_msg_helper({
        "type": "change_selection",
        "rows": [7, 8]
    })
    assert widget._selected_rows == [7, 8]

    widget.change_selection([3, 5, 6])
    assert widget._selected_rows == [3, 5, 6]

    widget.change_selection()
    assert widget._selected_rows == []

    assert event_history == [
        {
            "name": "selection_changed",
            "old": [],
            "new": [5],
            "source": "gui"
        },
        {
            "name": "selection_changed",
            "old": [5],
            "new": [7, 8],
            "source": "gui",
        },
        {
            "name": "selection_changed",
            "old": [7, 8],
            "new": [3, 5, 6],
            "source": "api",
        },
        {
            "name": "selection_changed",
            "old": [3, 5, 6],
            "new": [],
            "source": "api",
        },
    ]
예제 #35
0
파일: test_grid.py 프로젝트: rrash283/qgrid
def test_viewport_changed():
    widget = QgridWidget(df=create_large_df())
    event_history = init_event_history(All)

    widget._handle_qgrid_msg_helper({
        'type': 'viewport_changed',
        'top': 7124,
        'bottom': 7136
    })

    assert event_history == [{
        'name': 'json_updated',
        'triggered_by': 'viewport_changed',
        'range': (7024, 7224)
    }, {
        'name': 'viewport_changed',
        'old': (0, 100),
        'new': (7124, 7136)
    }]
예제 #36
0
def test_edit_date():
    view = QgridWidget(df=create_df())
    observer_called = False

    def on_value_change(change):
        nonlocal observer_called
        observer_called = True
        assert change['new']['Date'][3] == pd.Timestamp('2013-01-16 00:00:00')

    view.observe(on_value_change, names=['_df'])

    view._handle_qgrid_msg_helper({
        'column': "Date",
        'row_index': 3,
        'type': "cell_change",
        'unfiltered_index': 0,
        'value': "2013-01-16T00:00:00.000+00:00"
    })

    assert observer_called
예제 #37
0
파일: test_grid.py 프로젝트: rrash283/qgrid
def test_remove_row():
    widget = QgridWidget(df=create_df())
    event_history = init_event_history(['row_removed', 'selection_changed'],
                                       widget=widget)

    selected_rows = [1, 2]
    widget._handle_qgrid_msg_helper({
        'rows': selected_rows,
        'type': "selection_changed"
    })

    widget._handle_qgrid_msg_helper({'type': 'remove_row'})

    assert event_history == [{
        'name': 'selection_changed',
        'old': [],
        'new': selected_rows
    }, {
        'name': 'row_removed',
        'indices': selected_rows
    }]
예제 #38
0
def test_row_edit_callback():
    sample_df = create_df()

    def can_edit_row(row):
        return row['E'] == 'train' and row['F'] == 'bar'

    view = QgridWidget(df=sample_df, row_edit_callback=can_edit_row)

    view._handle_qgrid_msg_helper({
        'type': 'change_sort',
        'sort_field': 'index',
        'sort_ascending': True
    })

    expected_dict = {
        0: False,
        1: True,
        2: False,
        3: False
    }

    assert expected_dict == view._editable_rows
예제 #39
0
def test_change_viewport():
    widget = QgridWidget(df=create_large_df())
    event_history = init_event_history(All)

    widget._handle_qgrid_msg_helper({
        'type': 'change_viewport',
        'top': 7124,
        'bottom': 7136
    })

    assert event_history == [
        {
            'name': 'json_updated',
            'triggered_by': 'change_viewport',
            'range': (7024, 7224)
        },
        {
            'name': 'viewport_changed',
            'old': (0, 100),
            'new': (7124, 7136)
        }
    ]
예제 #40
0
파일: test_grid.py 프로젝트: seadevfr/qgrid
def test_change_viewport():
    widget = QgridWidget(df=create_large_df())
    event_history = init_event_history(All)

    widget._handle_qgrid_msg_helper({
        "type": "change_viewport",
        "top": 7124,
        "bottom": 7136
    })

    assert event_history == [
        {
            "name": "json_updated",
            "triggered_by": "change_viewport",
            "range": (7024, 7224),
        },
        {
            "name": "viewport_changed",
            "old": (0, 100),
            "new": (7124, 7136)
        },
    ]
예제 #41
0
def test_add_row_button():
    widget = QgridWidget(df=create_df())
    event_history = init_event_history('row_added', widget=widget)

    widget._handle_qgrid_msg_helper({
        'type': 'add_row'
    })

    assert event_history == [{
        'name': 'row_added',
        'index': 4,
        'source': 'gui'
    }]

    # make sure the added row in the internal dataframe contains the
    # expected values
    added_index = event_history[0]['index']
    expected_values = np.array(
        [4, 1.0, pd.Timestamp('2013-01-02 00:00:00'), 1.0, 3, 'bar', 'fox'],
        dtype=object
    )
    assert (widget._df.loc[added_index].values == expected_values).all()
예제 #42
0
파일: test_grid.py 프로젝트: rrash283/qgrid
def test_selection_changed():
    widget = QgridWidget(df=create_df())
    event_history = init_event_history('selection_changed', widget=widget)

    widget._handle_qgrid_msg_helper({'type': 'selection_changed', 'rows': [5]})

    widget._handle_qgrid_msg_helper({
        'type': 'selection_changed',
        'rows': [7, 8]
    })

    assert event_history == [
        {
            'name': 'selection_changed',
            'old': [],
            'new': [5]
        },
        {
            'name': 'selection_changed',
            'old': [5],
            'new': [7, 8]
        },
    ]
예제 #43
0
def test_period_object_column():
    range_index = pd.period_range(start='2000', periods=10, freq='B')
    df = pd.DataFrame({'a': 5, 'b': range_index}, index=range_index)
    view = QgridWidget(df=df)
    view._handle_qgrid_msg_helper({
        'type': 'change_sort',
        'sort_field': 'index',
        'sort_ascending': True
    })
    view._handle_qgrid_msg_helper({
        'type': 'show_filter_dropdown',
        'field': 'index',
        'search_val': None
    })
    view._handle_qgrid_msg_helper({
        'type': 'change_sort',
        'sort_field': 'b',
        'sort_ascending': True
    })
    view._handle_qgrid_msg_helper({
        'type': 'show_filter_dropdown',
        'field': 'b',
        'search_val': None
    })
예제 #44
0
def test_change_filter_viewport():
    widget = QgridWidget(df=create_large_df())
    event_history = init_event_history(All)

    widget._handle_qgrid_msg_helper({
        'type': 'show_filter_dropdown',
        'field': 'B (as str)',
        'search_val': None
    })

    widget._handle_qgrid_msg_helper({
        'type': 'change_filter_viewport',
        'field': 'B (as str)',
        'top': 556,
        'bottom': 568
    })

    widget._handle_qgrid_msg_helper({
        'type': 'change_filter_viewport',
        'field': 'B (as str)',
        'top': 302,
        'bottom': 314
    })

    assert event_history == [
        {
            'name': 'filter_dropdown_shown',
            'column': 'B (as str)'
        },
        {
            'name': 'text_filter_viewport_changed',
            'column': 'B (as str)',
            'old': (0, 200),
            'new': (556, 568)
        },
        {
            'name': 'text_filter_viewport_changed',
            'column': 'B (as str)',
            'old': (556, 568),
            'new': (302, 314)
        }
    ]
예제 #45
0
def test_multi_index():
    widget = QgridWidget(df=create_multi_index_df())
    event_history = init_event_history(['filter_dropdown_shown',
                                        'filter_changed',
                                        'sort_changed'], widget=widget)

    widget._handle_qgrid_msg_helper({
        'type': 'show_filter_dropdown',
        'field': 'level_0',
        'search_val': None
    })

    widget._handle_qgrid_msg_helper({
        'type': 'show_filter_dropdown',
        'field': 3,
        'search_val': None
    })

    widget._handle_qgrid_msg_helper({
        'type': 'change_filter',
        'field': 3,
        'filter_info': {
            'field': 3,
            'type': 'slider',
            'min': -0.111,
            'max': None
        }
    })

    widget._handle_qgrid_msg_helper({
        'type': 'change_filter',
        'field': 3,
        'filter_info': {
            'field': 3,
            'type': 'slider',
            'min': None,
            'max': None
        }
    })

    widget._handle_qgrid_msg_helper({
        'type': 'change_filter',
        'field': 'level_1',
        'filter_info': {
            'field': 'level_1',
            'type': 'text',
            'selected': [0],
            'excluded': []
        }
    })

    widget._handle_qgrid_msg_helper({
        'type': 'change_sort',
        'sort_field': 3,
        'sort_ascending': True
    })

    widget._handle_qgrid_msg_helper({
        'type': 'change_sort',
        'sort_field': 'level_0',
        'sort_ascending': True
    })

    assert event_history == [
        {
            'name': 'filter_dropdown_shown',
            'column': 'level_0'
        },
        {
            'name': 'filter_dropdown_shown',
            'column': 3
        },
        {
            'name': 'filter_changed',
            'column': 3
        },
        {
            'name': 'filter_changed',
            'column': 3
        },
        {
            'name': 'filter_changed',
            'column': 'level_1'
        },
        {
            'name': 'sort_changed',
            'old': {
                'column': None,
                'ascending': True
            },
            'new': {
                'column': 3,
                'ascending': True
            }
        },
        {
            'name': 'sort_changed',
            'old':
                {
                    'column': 3,
                    'ascending': True
                },
            'new':
                {
                    'column': 'level_0',
                    'ascending': True
                }
        }
    ]