Add saved bundle status

This commit is contained in:
2025-10-22 16:45:49 +07:00
parent 6ffe9ae9c4
commit a1fe7ed3b3
5 changed files with 46 additions and 18 deletions

View File

@@ -4493,6 +4493,7 @@ export enum BundleBacktestRequestStatus {
Completed = "Completed",
Failed = "Failed",
Cancelled = "Cancelled",
Saved = "Saved",
}
export interface RunBundleBacktestRequest {

View File

@@ -668,6 +668,7 @@ export enum BundleBacktestRequestStatus {
Completed = "Completed",
Failed = "Failed",
Cancelled = "Cancelled",
Saved = "Saved",
}
export interface RunBundleBacktestRequest {

View File

@@ -201,7 +201,7 @@ const BundleRequestModal: React.FC<BundleRequestModalProps> = ({
};
// Create bundle backtest request
const handleCreateBundle = async () => {
const handleCreateBundle = async (asTemplate: boolean = false) => {
if (!strategyName || selectedTickers.length === 0) {
new Toast('Please fill in all required fields', false);
return;
@@ -254,15 +254,22 @@ const BundleRequestModal: React.FC<BundleRequestModalProps> = ({
universalConfig,
dateTimeRanges,
moneyManagementVariants,
tickerVariants: selectedTickers
tickerVariants: selectedTickers,
saveAsTemplate: asTemplate
};
try {
await onCreateBundle?.(request);
new Toast('Bundle backtest request created successfully!', true);
const successMessage = asTemplate
? 'Template saved successfully!'
: 'Bundle backtest request created successfully!';
new Toast(successMessage, true);
onClose();
} catch (error) {
new Toast('Failed to create bundle backtest request', false);
const errorMessage = asTemplate
? 'Failed to save template'
: 'Failed to create bundle backtest request';
new Toast(errorMessage, false);
}
};
@@ -809,18 +816,22 @@ const BundleRequestModal: React.FC<BundleRequestModalProps> = ({
<button
className="btn btn-primary w-full mb-4"
onClick={handleCreateBundle}
onClick={() => handleCreateBundle(false)}
disabled={!strategyName || selectedTickers.length === 0 || !scenario}
>
Run Backtest
</button>
<div className="flex justify-between">
<button className="btn btn-outline btn-sm">
<button
className="btn btn-outline btn-sm"
onClick={() => handleCreateBundle(true)}
disabled={!strategyName || selectedTickers.length === 0 || !scenario}
>
<svg className="w-4 h-4 mr-2" fill="currentColor" viewBox="0 0 20 20">
<path fillRule="evenodd" d="M4 4a2 2 0 00-2 2v8a2 2 0 002 2h12a2 2 0 002-2V6a2 2 0 00-2-2H4zm12 12V6H4v10h12zM8 8a1 1 0 000 2h4a1 1 0 100-2H8z" clipRule="evenodd" />
</svg>
Save this backtest
Save as template
</button>
<button className="btn btn-ghost btn-sm">
Clear all