From 31119554d4415ffe26d0b21c5a9858fdff390868 Mon Sep 17 00:00:00 2001 From: yumoqing Date: Wed, 29 Jul 2026 14:33:09 +0800 Subject: [PATCH] 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 --- wwwroot/model_plaza.ui | 18 +++++++++--------- wwwroot/plaza_model_cards.ui | 7 ++++--- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/wwwroot/model_plaza.ui b/wwwroot/model_plaza.ui index 0b34ce4..8e24485 100644 --- a/wwwroot/model_plaza.ui +++ b/wwwroot/model_plaza.ui @@ -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 %} diff --git a/wwwroot/plaza_model_cards.ui b/wwwroot/plaza_model_cards.ui index b47517c..222abe8 100644 --- a/wwwroot/plaza_model_cards.ui +++ b/wwwroot/plaza_model_cards.ui @@ -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 %}