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 active_search = params_kw.get('search', '') %}
{% set catelogs = get_llmcatelogs() %} {% set catelogs = get_llmcatelogs() %}
{% set providers = get_llmproviders() %} {% set providers = get_llmproviders() %}
{% set base = entire_url('model_plaza.ui') %}
{ {
"widgettype": "VScrollPanel", "widgettype": "VBox",
"options": {"css": "filler", "width": "100%", "height": "100%"}, "options": {"css": "filler", "width": "100%", "height": "100%", "gap": "8px"},
"subwidgets": [ "subwidgets": [
{ {
"widgettype": "VBox", "widgettype": "VBox",
@ -22,12 +23,11 @@
"placeholder": "搜索模型名称或描述...", "placeholder": "搜索模型名称或描述...",
"value": "{{active_search}}", "value": "{{active_search}}",
"search_label": "搜索", "search_label": "搜索",
"clear_label": "清除", "clear_label": "清除"
"width": "100%"
}, },
"binds": [{ "binds": [{
"wid": "self", "event": "search", "actiontype": "script", "target": "self", "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": [{ "binds": [{
"wid": "self", "event": "click", "actiontype": "script", "target": "self", "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 %} {% for c in catelogs %}
@ -58,7 +58,7 @@
}, },
"binds": [{ "binds": [{
"wid": "self", "event": "click", "actiontype": "script", "target": "self", "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 %} {% endfor %}
@ -93,7 +93,7 @@
}, },
"binds": [{ "binds": [{
"wid": "self", "event": "click", "actiontype": "script", "target": "self", "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 %} {% for p in providers %}
@ -106,7 +106,7 @@
}, },
"binds": [{ "binds": [{
"wid": "self", "event": "click", "actiontype": "script", "target": "self", "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 %} {% endfor %}

View File

@ -9,6 +9,7 @@
{% set start = (page - 1) * page_size %} {% set start = (page - 1) * page_size %}
{% set end = [start + page_size, total] | min %} {% set end = [start + page_size, total] | min %}
{% set data = all_data[start:end] %} {% set data = all_data[start:end] %}
{% set base = entire_url('model_plaza.ui') %}
{% set ns = namespace(first=true) %} {% set ns = namespace(first=true) %}
{ {
"widgettype": "VBox", "widgettype": "VBox",
@ -33,7 +34,7 @@
"widgettype": "VBox", "widgettype": "VBox",
"options": { "options": {
"css": "card plaza-card", "css": "card plaza-card",
"cwidth": 22, "width": "100%",
"cheight": 14 "cheight": 14
}, },
"subwidgets": [ "subwidgets": [
@ -131,7 +132,7 @@
"options": {"label": "上一页", "cwidth": 10}, "options": {"label": "上一页", "cwidth": 10},
"binds": [{ "binds": [{
"wid": "self", "event": "click", "actiontype": "script", "target": "self", "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 %} {% endif %}
@ -142,7 +143,7 @@
"options": {"label": "下一页", "cwidth": 10}, "options": {"label": "下一页", "cwidth": 10},
"binds": [{ "binds": [{
"wid": "self", "event": "click", "actiontype": "script", "target": "self", "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 %} {% endif %}