Show total pages and card-local AJAX paging on options review.
Trades and reviewed lists now report page X / Y and flip without full-page sync refresh. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -19,6 +19,7 @@ from lib.options.options_review_images_lib import (
|
||||
from lib.options.options_review_lib import (
|
||||
SOURCE_LABELS,
|
||||
compute_review_stats,
|
||||
count_review_trades,
|
||||
delete_review_entry,
|
||||
ensure_local_review_synced,
|
||||
get_review_trade,
|
||||
@@ -120,23 +121,46 @@ def register_options_review_routes(app: Flask, cfg: dict[str, Any], repo_root: s
|
||||
def api_options_review_trades():
|
||||
conn = cfg["get_db"]()
|
||||
try:
|
||||
ensure_local_review_synced(conn)
|
||||
conn.commit()
|
||||
items = list_review_trades(
|
||||
conn,
|
||||
# 翻页可跳过同步,仅刷新当前卡片列表
|
||||
do_sync = (request.args.get("sync") or "1").strip().lower() not in (
|
||||
"0",
|
||||
"false",
|
||||
"no",
|
||||
)
|
||||
if do_sync:
|
||||
ensure_local_review_synced(conn)
|
||||
conn.commit()
|
||||
filt = dict(
|
||||
source_type=(request.args.get("source_type") or "").strip() or None,
|
||||
underlying=(request.args.get("underlying") or "").strip() or None,
|
||||
opt_type=(request.args.get("opt_type") or "").strip() or None,
|
||||
strategy_tag=(request.args.get("strategy_tag") or "").strip() or None,
|
||||
reviewed=(request.args.get("reviewed") or "").strip() or None,
|
||||
include_hedge_legs=(request.args.get("include_hedge_legs") or "").strip().lower()
|
||||
include_hedge_legs=(request.args.get("include_hedge_legs") or "")
|
||||
.strip()
|
||||
.lower()
|
||||
in ("1", "true", "yes"),
|
||||
closed_from=(request.args.get("closed_from") or "").strip() or None,
|
||||
closed_to=(request.args.get("closed_to") or "").strip() or None,
|
||||
limit=min(500, max(1, int(request.args.get("limit") or 200))),
|
||||
offset=max(0, int(request.args.get("offset") or 0)),
|
||||
)
|
||||
return jsonify({"ok": True, "trades": items, "source_labels": SOURCE_LABELS})
|
||||
limit = min(500, max(1, int(request.args.get("limit") or 200)))
|
||||
offset = max(0, int(request.args.get("offset") or 0))
|
||||
total = count_review_trades(conn, **filt)
|
||||
items = list_review_trades(conn, **filt, limit=limit, offset=offset)
|
||||
pages = max(1, (total + limit - 1) // limit) if total else 1
|
||||
page = (offset // limit) + 1 if limit else 1
|
||||
return jsonify(
|
||||
{
|
||||
"ok": True,
|
||||
"trades": items,
|
||||
"source_labels": SOURCE_LABELS,
|
||||
"total": total,
|
||||
"limit": limit,
|
||||
"offset": offset,
|
||||
"page": page,
|
||||
"pages": pages,
|
||||
}
|
||||
)
|
||||
finally:
|
||||
conn.close()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user