llmage/wwwroot/plaza_model_cards.ui
yumoqing 32000e8757 ui: plaza card layout — fixed VBox, title 2ch, filler scroll with desc+price
Each card is a cwidth:15 cheight:12 VBox:
- Title row: cheight:2 (icon + name)
- VScrollPanel css:filler: description (height:auto) + pricing (css:filler)
2026-07-29 12:00:04 +08:00

111 lines
4.3 KiB
XML

{% set providerid = params_kw.get('providerid', '') %}
{% set catelogid = params_kw.get('catelogid', '') %}
{% set search = params_kw.get('search', '') %}
{% set data = get_plaza_models(providerid, catelogid, search) %}
{% set ns = namespace(first=true) %}
{
"widgettype": "VScrollPanel",
"options": {
"css": "filler",
"width": "100%",
"height": "100%"
},
"subwidgets": [
{
"widgettype": "DynamicColumn",
"options": {
"css": "plaza-grid",
"width": "100%",
"col_cwidth": 25,
"col_cgap": 1
},
"subwidgets": [
{% for llm in data %}
{% if not ns.first %},{% endif %}
{
"widgettype": "VBox",
"options": {
"css": "card plaza-card",
"cwidth": 15,
"cheight": 12
},
"subwidgets": [
{
"widgettype": "HBox",
"options": {"cheight": 2, "alignItems": "center", "gap": "4px"},
"subwidgets": [
{
"widgettype": "Svg",
"options": {"rate": 1.5, "url": "{{entire_url('/appbase/show_icon.dspy')}}?id={{llm.iconid}}"}
},
{
"widgettype": "Title6",
"options": {"text": "{{llm.name}}"}
}
]
},
{
"widgettype": "VScrollPanel",
"options": {"css": "filler", "flex": "1"},
"subwidgets": [
{
"widgettype": "Text",
"options": {
"height": "auto",
"text": {{json.dumps(llm.description, ensure_ascii=False)}},
"wrap": true,
"halign": "left"
}
}
{% if llm.pricing_display %}
,{
"widgettype": "VBox",
"options": {"css": "filler"},
"subwidgets": [
{% for pt in llm.pricing_display %}
{
"widgettype": "Text",
"options": {
"text": {{json.dumps(pt, ensure_ascii=False)}},
"wrap": true,
"halign": "left",
"css": "pricing-text"
}
}{% if not loop.last %},{% endif %}
{% endfor %}
]
}
{% endif %}
]
}
],
"binds": [
{
"wid": "self",
"event": "click",
"actiontype": "urlwidget",
"target": "PopupWindow",
"popup_options": {
"title": "{{llm.name}}",
{% if int(params_kw._is_mobile or 0) %}
"width": "100%",
"height": "100%"
{% else %}
"width": "40%",
"height": "85%"
{% endif %}
},
"options": {
"params": {"id": "{{llm.id}}"},
"url": "{{entire_url('./llm_dialog.ui')}}"
}
}
]
}
{% set ns.first = false %}
{% endfor %}
]
}
]
}