1

I created function for taking the ag-grid filter values using run_api class in justPy. The code looks like this:

import justpy as jp

grid_options = """
{
    rowSelection: 'multiple',
    defaultColDef: {
        filter: true,
        sortable: true,
        resizable: true,
        cellStyle: {textAlign: 'center'},
        headerClass: 'font-bold'
    }, 
      columnDefs: [
      {headerName: "Make", field: "make"},
      {headerName: "Model", field: "model"},
      {headerName: "Price", field: "price"}
    ],
      rowData: [
      {make: "Toyota", model: "Celica", price: 35000},
      {make: "Ford", model: "Mondeo", price: 32000},
      {make: "Porsche", model: "Boxter", price: 72000}
    ]
}
"""

def row_selected(self, msg):
    wp = msg.page
    if msg.selected:
        wp.selected_rows[msg.rowIndex] = msg.data
    else:
        wp.selected_rows.pop(msg.rowIndex)
    s = f'Selected rows {sorted(list(wp.selected_rows.keys()))}'
    for i in sorted(wp.selected_rows):
        s = f'{s}\n Row {i}  Data: {wp.selected_rows[i]}'
    if wp.selected_rows:
        wp.rows_div.text = s
    else:
        wp.rows_div.text = 'No row selected'

async def get_all_filter(self, msg):
    filterValues = await self.grid.run_api('getFilterModel()', msg.page)
    print(filterValues)
    msg.page.filterValues = filterValues

async def select_all_rows(self, msg):
    await self.grid.run_api('selectAll()', msg.page)


async def deselect_rows(self, msg):
    await self.grid.run_api('deselectAll()', msg.page)


def grid_test():
    wp = jp.WebPage()
    wp.selected_rows = {}  # Dictionary holding selected rows
    wp.filterValues = {} # Dictionary holding grid filter values
    grid = jp.AgGrid(a=wp, options=grid_options, style='height: 200px; width: 300px; margin: 0.25em')
    grid.options.columnDefs[0].checkboxSelection = True
    grid.on('rowSelected', row_selected)
    wp.rows_div = jp.Pre(text='Data will go here when you select rows', classes='border text-lg', a=wp)
    btn_deselect = jp.Button(text='Deselect rows', classes=jp.Styles.button_simple+' m-2', a=wp, click=deselect_rows)
    btn_deselect.grid = grid
    btn_select_all = jp.Button(text='Select all rows', classes=jp.Styles.button_simple+' m-2', a=wp, click=select_all_rows)
    btn_select_all.grid = grid
    btn_get_filter = jp.Button(text='Get apllied filter', classes=jp.Styles.button_simple+' m-2', a=wp, click=get_all_filter)
    btn_get_filter.grid = grid
    return wp


jp.justpy(grid_test)

The code is an example from justPy documentation. The grid's filter value will be put inside the dictionary msg.page.filterValues which I want to access later. When I run the code and click the button Get apllied filter and see the the console, the value filterValues is None. Can someone point out what is wrong in here? Thanks

Kanda
  • 67
  • 5

0 Answers0