Retry the strategy list and make collapse obvious

- The strategy/preset lists were loaded once with failures swallowed, so a
  single failed first request left the strategy dropdown empty forever. They
  are now retried every 3s until populated.
- Clearer collapse affordance: hover highlight, a hide/show hint, and a
  tooltip; Backtest and Parameter sweep start collapsed so the strategy
  selector and status are immediately visible.
- Adds an integration test that the strategy dropdown is populated and the
  panel actually collapses.
This commit is contained in:
matitos committed 2026-09-21 17:11:18 +00:00
1 parent 9eddd66a82
commit b9c69c546c
5 files changed
+69 -6

No files matched your search

+1 -1
View File
@@ -37,7 +37,7 @@ async function run(payload) {
</script>
<template>
<CollapsiblePanel title="Backtest" storage-key="backtest" :summary="summary">
<CollapsiblePanel title="Backtest" storage-key="backtest" :summary="summary" :default-open="false">
<div class="space-y-3">
<StrategyForm
:strategies="strategies"
+3 -1
View File
@@ -39,8 +39,9 @@ watch(open, (value) => {
<section class="card">
<button
type="button"
class="flex w-full items-center justify-between gap-3 text-left"
class="-m-2 flex w-full items-center justify-between gap-3 rounded-lg p-2 text-left transition hover:bg-slate-700/40"
:aria-expanded="open"
:title="open ? 'Collapse' : 'Expand'"
@click="open = !open"
>
<span class="flex items-center gap-2 font-semibold">
@@ -54,6 +55,7 @@ watch(open, (value) => {
<path d="M6 3.5 11 8l-5 4.5z" />
</svg>
{{ title }}
<span class="text-xs font-normal text-slate-500">{{ open ? 'hide' : 'show' }}</span>
</span>
<span v-if="!open && summary" class="truncate text-xs font-normal text-slate-400">
{{ summary }}
+1 -1
View File
@@ -92,7 +92,7 @@ async function run() {
</script>
<template>
<CollapsiblePanel title="Parameter sweep" storage-key="sweep" :summary="summary">
<CollapsiblePanel title="Parameter sweep" storage-key="sweep" :summary="summary" :default-open="false">
<div class="space-y-3">
<div class="grid gap-2 sm:grid-cols-4">
<label class="space-y-1">