fix: location.href for all nav, no mixed JS/server state, card width:100%

- All filter buttons use location.href with fully server-constructed URLs
  No more mixing {{active_provider}} (stale server var) with dynamic JS state
- SearchBar, category, provider, pagination all use location.href pattern
- Card uses width:100% (fill DynamicColumn slot) + cheight:14 (fixed height)
- Model plaza root is VBox (not VScrollPanel), scroll delegated to cards area
This commit is contained in:
yumoqing 2026-07-29 14:33:09 +08:00
parent a1a6a583e3
commit 31119554d4
2 changed files with 13 additions and 12 deletions

View File

@ -3,9 +3,10 @@
{% set active_search = params_kw.get('search', '') %}
{% set catelogs = get_llmcatelogs() %}
{% set providers = get_llmproviders() %}
{% set base = entire_url('model_plaza.ui') %}
{
"widgettype": "VScrollPanel",
"options": {"css": "filler", "width": "100%", "height": "100%"},
"widgettype": "VBox",
"options": {"css": "filler", "width": "100%", "height": "100%", "gap": "8px"},
"subwidgets": [
{
"widgettype": "VBox",
@ -22,12 +23,11 @@
"placeholder": "搜索模型名称或描述...",
"value": "{{active_search}}",
"search_label": "搜索",
"clear_label": "清除",
"width": "100%"
"clear_label": "清除"
},
"binds": [{
"wid": "self", "event": "search", "actiontype": "script", "target": "self",
"script": "var rw=bricks.getWidgetById('plaza_cards',bricks.app);if(rw){rw.opts.url='{{entire_url('plaza_model_cards.ui')}}?providerid={{active_provider}}&catelogid={{active_catelog}}&search='+encodeURIComponent(event.keyword||'');rw.show_widget();}"
"script": "location.href='{{base}}?providerid={{active_provider}}&catelogid={{active_catelog}}&search='+encodeURIComponent(event.keyword||'');"
}]
}
]
@ -45,7 +45,7 @@
},
"binds": [{
"wid": "self", "event": "click", "actiontype": "script", "target": "self",
"script": "var rw=bricks.getWidgetById('plaza_cards',bricks.app);if(rw){rw.opts.url='{{entire_url('plaza_model_cards.ui')}}?providerid={{active_provider}}&search={{active_search}}';rw.show_widget();}"
"script": "location.href='{{base}}?providerid={{active_provider}}&search={{active_search}}';"
}]
}
{% for c in catelogs %}
@ -58,7 +58,7 @@
},
"binds": [{
"wid": "self", "event": "click", "actiontype": "script", "target": "self",
"script": "var rw=bricks.getWidgetById('plaza_cards',bricks.app);if(rw){rw.opts.url='{{entire_url('plaza_model_cards.ui')}}?providerid={{active_provider}}&catelogid={{c.id}}&search={{active_search}}';rw.show_widget();}"
"script": "location.href='{{base}}?providerid={{active_provider}}&catelogid={{c.id}}&search={{active_search}}';"
}]
}
{% endfor %}
@ -93,7 +93,7 @@
},
"binds": [{
"wid": "self", "event": "click", "actiontype": "script", "target": "self",
"script": "var rw=bricks.getWidgetById('plaza_cards',bricks.app);if(rw){rw.opts.url='{{entire_url('plaza_model_cards.ui')}}?catelogid={{active_catelog}}&search={{active_search}}';rw.show_widget();}"
"script": "location.href='{{base}}?catelogid={{active_catelog}}&search={{active_search}}';"
}]
}
{% for p in providers %}
@ -106,7 +106,7 @@
},
"binds": [{
"wid": "self", "event": "click", "actiontype": "script", "target": "self",
"script": "var rw=bricks.getWidgetById('plaza_cards',bricks.app);if(rw){rw.opts.url='{{entire_url('plaza_model_cards.ui')}}?providerid={{p.providerid}}&catelogid={{active_catelog}}&search={{active_search}}';rw.show_widget();}"
"script": "location.href='{{base}}?providerid={{p.providerid}}&catelogid={{active_catelog}}&search={{active_search}}';"
}]
}
{% endfor %}

View File

@ -9,6 +9,7 @@
{% set start = (page - 1) * page_size %}
{% set end = [start + page_size, total] | min %}
{% set data = all_data[start:end] %}
{% set base = entire_url('model_plaza.ui') %}
{% set ns = namespace(first=true) %}
{
"widgettype": "VBox",
@ -33,7 +34,7 @@
"widgettype": "VBox",
"options": {
"css": "card plaza-card",
"cwidth": 22,
"width": "100%",
"cheight": 14
},
"subwidgets": [
@ -131,7 +132,7 @@
"options": {"label": "上一页", "cwidth": 10},
"binds": [{
"wid": "self", "event": "click", "actiontype": "script", "target": "self",
"script": "var rw=bricks.getWidgetById('plaza_cards',bricks.app);if(rw){rw.opts.url='{{entire_url('plaza_model_cards.ui')}}?providerid={{providerid}}&catelogid={{catelogid}}&search={{search}}&page={{page - 1}}';rw.show_widget();}"
"script": "location.href='{{base}}?providerid={{providerid}}&catelogid={{catelogid}}&search={{search}}&page={{page - 1}}';"
}]
},
{% endif %}
@ -142,7 +143,7 @@
"options": {"label": "下一页", "cwidth": 10},
"binds": [{
"wid": "self", "event": "click", "actiontype": "script", "target": "self",
"script": "var rw=bricks.getWidgetById('plaza_cards',bricks.app);if(rw){rw.opts.url='{{entire_url('plaza_model_cards.ui')}}?providerid={{providerid}}&catelogid={{catelogid}}&search={{search}}&page={{page + 1}}';rw.show_widget();}"
"script": "location.href='{{base}}?providerid={{providerid}}&catelogid={{catelogid}}&search={{search}}&page={{page + 1}}';"
}]
}
{% endif %}