feat: add selectable leverage threshold on ops map (90-300 step 10)

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-08-05 17:01:36 +08:00
parent 56f58a12bd
commit e213db8d2d
4 changed files with 69 additions and 5 deletions
+25 -2
View File
@@ -16,6 +16,7 @@ type RangeKey = "day" | "week" | "month";
type SideKey = "both" | "C" | "P";
const MIN_HOURS_OPTIONS = Array.from({ length: (48 - 8) / 2 + 1 }, (_, i) => 8 + i * 2);
const MIN_LEVERAGE_OPTIONS = Array.from({ length: (300 - 90) / 10 + 1 }, (_, i) => 90 + i * 10);
function todayYmd() {
const d = new Date();
@@ -32,6 +33,7 @@ export default function OpsMapPage() {
const [side, setSide] = useState<SideKey>("both");
const [date, setDate] = useState(todayYmd());
const [minHours, setMinHours] = useState(12);
const [minLeverage, setMinLeverage] = useState(100);
const [moveMode, setMoveMode] = useState<"abs" | "signed">("abs");
const [data, setData] = useState<OpsMap | null>(null);
const [err, setErr] = useState<string | null>(null);
@@ -55,7 +57,14 @@ export default function OpsMapPage() {
if (!ready || needLogin) return;
let alive = true;
setLoading(true);
fetchOpsMap({ range, date, side, bucket_minutes: 60, min_hours: minHours })
fetchOpsMap({
range,
date,
side,
bucket_minutes: 60,
min_hours: minHours,
min_leverage: minLeverage,
})
.then((d) => {
if (!alive) return;
setData(d);
@@ -73,7 +82,7 @@ export default function OpsMapPage() {
return () => {
alive = false;
};
}, [range, side, date, minHours, ready, needLogin]);
}, [range, side, date, minHours, minLeverage, ready, needLogin]);
if (!ready) {
return (
@@ -156,6 +165,20 @@ export default function OpsMapPage() {
))}
</select>
</label>
<label className="date-field">
线
<select
value={minLeverage}
onChange={(e) => setMinLeverage(Number(e.target.value))}
aria-label="杠杆达标线"
>
{MIN_LEVERAGE_OPTIONS.map((v) => (
<option key={v} value={v}>
{v}
</option>
))}
</select>
</label>
</div>
{err && <p style={{ color: "#e85d5d" }}>{err}</p>}