yym68686 commited on
Commit
80fec79
·
1 Parent(s): 06afdf8

🐛 Bug: Fix the bug where after filtering through the filter, if there are a total of four rows, when clicking the edit configuration on the fourth row, the sheet still displays the data from the fourth row before the filter was applied.

Browse files
Files changed (2) hide show
  1. components/provider_table.py +14 -9
  2. main.py +2 -2
components/provider_table.py CHANGED
@@ -143,7 +143,19 @@ Head.add_default_children([
143
  """, id="data-table-script"),
144
  ])
145
 
146
- def data_table(columns, data, id, with_filter=True):
 
 
 
 
 
 
 
 
 
 
 
 
147
  return Div(
148
  Div(
149
  input(type="text", placeholder="Filter...", id=f"{id}-filter", class_="mr-auto"),
@@ -178,14 +190,7 @@ def data_table(columns, data, id, with_filter=True):
178
  Th("Actions") # 新增的操作列
179
  )
180
  ),
181
- Tbody(
182
- *[Tr(
183
- Td(checkbox(f"row-{i}", "", class_="row-checkbox")),
184
- *[Td(row[col['value']], data_accessor=col['value']) for col in columns],
185
- Td(row_actions_menu(i)), # 使用行索引作为 row_id
186
- id=f"row-{i}"
187
- ) for i, row in enumerate(data)]
188
- ),
189
  class_="data-table"
190
  ),
191
  class_="data-table-container"
 
143
  """, id="data-table-script"),
144
  ])
145
 
146
+ def data_table(columns, data, id, with_filter=True, row_ids=None):
147
+ if row_ids is None:
148
+ row_ids = range(len(data))
149
+
150
+ tbody_content = Tbody(
151
+ *[Tr(
152
+ Td(checkbox(f"row-{i}", "", class_="row-checkbox")),
153
+ *[Td(row[col['value']], data_accessor=col['value']) for col in columns],
154
+ Td(row_actions_menu(row_id)),
155
+ id=f"row-{row_id}"
156
+ ) for i, (row, row_id) in enumerate(zip(data, row_ids))]
157
+ )
158
+
159
  return Div(
160
  Div(
161
  input(type="text", placeholder="Filter...", id=f"{id}-filter", class_="mr-auto"),
 
190
  Th("Actions") # 新增的操作列
191
  )
192
  ),
193
+ tbody_content,
 
 
 
 
 
 
 
194
  class_="data-table"
195
  ),
196
  class_="data-table-container"
main.py CHANGED
@@ -1278,12 +1278,12 @@ async def get_columns_menu(menu_id: str):
1278
  @frontend_router.get("/filter-table", response_class=HTMLResponse)
1279
  async def filter_table(filter: str = ""):
1280
  filtered_data = [
1281
- provider for provider in app.state.config["providers"]
1282
  if filter.lower() in str(provider["provider"]).lower() or
1283
  filter.lower() in str(provider["base_url"]).lower() or
1284
  filter.lower() in str(provider["tools"]).lower()
1285
  ]
1286
- return data_table(data_table_columns, filtered_data, "users-table", with_filter=False).render()
1287
 
1288
  @frontend_router.post("/add-model", response_class=HTMLResponse, dependencies=[Depends(frontend_rate_limit_dependency)])
1289
  async def add_model():
 
1278
  @frontend_router.get("/filter-table", response_class=HTMLResponse)
1279
  async def filter_table(filter: str = ""):
1280
  filtered_data = [
1281
+ (i, provider) for i, provider in enumerate(app.state.config["providers"])
1282
  if filter.lower() in str(provider["provider"]).lower() or
1283
  filter.lower() in str(provider["base_url"]).lower() or
1284
  filter.lower() in str(provider["tools"]).lower()
1285
  ]
1286
+ return data_table(data_table_columns, [p for _, p in filtered_data], "users-table", with_filter=False, row_ids=[i for i, _ in filtered_data]).render()
1287
 
1288
  @frontend_router.post("/add-model", response_class=HTMLResponse, dependencies=[Depends(frontend_rate_limit_dependency)])
1289
  async def add_model():