Spaces:
Runtime error
Runtime error
| # adjusted from: https://github.com/nryabykh/streamlit-aggrid-hints | |
| from st_aggrid import AgGrid | |
| from st_aggrid.grid_options_builder import GridOptionsBuilder | |
| from st_aggrid.shared import GridUpdateMode, JsCode | |
| def get_numeric_style_with_precision(precision: int) -> dict: | |
| return {"type": ["numericColumn", "customNumericFormat"], "precision": precision} | |
| PRECISION_ZERO = get_numeric_style_with_precision(0) | |
| PRECISION_ONE = get_numeric_style_with_precision(1) | |
| PRECISION_TWO = get_numeric_style_with_precision(2) | |
| PINLEFT = {"pinned": "left"} | |
| def draw_grid( | |
| df, | |
| formatter: dict = None, | |
| selection="multiple", | |
| use_checkbox=False, | |
| fit_columns=False, | |
| pagination_size=0, | |
| theme="streamlit", | |
| wrap_text: bool = False, | |
| auto_height: bool = False, | |
| grid_options: dict = None, | |
| key=None, | |
| css: dict = None | |
| ): | |
| gb = GridOptionsBuilder() | |
| gb.configure_default_column( | |
| filterable=True, | |
| groupable=False, | |
| editable=False, | |
| wrapText=wrap_text, | |
| autoHeight=auto_height | |
| ) | |
| if grid_options is not None: | |
| gb.configure_grid_options(**grid_options) | |
| for latin_name, (cyr_name, style_dict) in formatter.items(): | |
| gb.configure_column(latin_name, header_name=cyr_name, **style_dict) | |
| gb.configure_selection(selection_mode=selection, use_checkbox=use_checkbox) | |
| if pagination_size > 0: | |
| gb.configure_pagination(enabled=True, paginationAutoPageSize=False, paginationPageSize=pagination_size) | |
| return AgGrid( | |
| df, | |
| gridOptions=gb.build(), | |
| update_mode=GridUpdateMode.SELECTION_CHANGED | GridUpdateMode.VALUE_CHANGED, | |
| allow_unsafe_jscode=True, | |
| fit_columns_on_grid_load=fit_columns, | |
| theme=theme, | |
| key=key, | |
| custom_css=css, | |
| enable_enterprise_modules=False | |
| ) | |
| def highlight(color, condition): | |
| code = f""" | |
| function(params) {{ | |
| color = "{color}"; | |
| if ({condition}) {{ | |
| return {{ | |
| 'backgroundColor': color | |
| }} | |
| }} | |
| }}; | |
| """ | |
| return JsCode(code) | |