491 lines
39 KiB
HTML
491 lines
39 KiB
HTML
<!-- file: kb_demo_app/frontend/demo_pipeline2.html -->
|
||
<!DOCTYPE html>
|
||
<html lang="fr">
|
||
|
||
<head>
|
||
<meta charset="UTF-8" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||
<title>Khadhroony-BoBoBot — Demo Pipeline 2</title>
|
||
<link rel="stylesheet" href="sass/main.scss" />
|
||
</head>
|
||
|
||
<body class="bg-body-tertiary">
|
||
<header class="app-header">
|
||
<nav class="navbar navbar-expand-lg h-100 py-0 bg-light text-dark">
|
||
<div class="container my-0">
|
||
<a class="navbar-brand d-flex align-items-center" href="/">
|
||
<img alt="Logo" src="imgs/logo.png" class="app-logo" />
|
||
<span class="ps-2 fs-4 fw-bold text-primary font-logo">Demo Pipeline 2</span>
|
||
</a>
|
||
</div>
|
||
</nav>
|
||
</header>
|
||
|
||
<main class="app-main">
|
||
<div class="osb-scrollable pt-1 pb-4" data-simplebar>
|
||
<div class="container vcentered sketchy-translucid py-4">
|
||
<div class="row g-4">
|
||
<div class="col-12 col-xxl-4">
|
||
<div class="accordion" id="demoPipeline2LeftAccordion">
|
||
<div class="accordion-item border-0 shadow-sm mb-3">
|
||
<h1 class="accordion-header" id="demoPipeline2CatalogHeading">
|
||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#demoPipeline2CatalogCollapse" aria-expanded="false" aria-controls="demoPipeline2CatalogCollapse">
|
||
Catalogue local
|
||
</button>
|
||
</h1>
|
||
<div id="demoPipeline2CatalogCollapse" class="accordion-collapse collapse" aria-labelledby="demoPipeline2CatalogHeading" data-bs-parent="#demoPipeline2LeftAccordion">
|
||
<div class="accordion-body">
|
||
<div class="d-flex gap-2 mb-3">
|
||
<button id="demoPipeline2RefreshCatalogButton" type="button" class="btn btn-primary">
|
||
Refresh catalog
|
||
</button>
|
||
</div>
|
||
|
||
<div class="mb-3">
|
||
<label class="form-label">Mints</label>
|
||
<textarea id="demoPipeline2TokensTextarea" class="form-control font-monospace" rows="8" readonly spellcheck="false"></textarea>
|
||
</div>
|
||
|
||
<div class="mb-3">
|
||
<label class="form-label">Pools</label>
|
||
<textarea id="demoPipeline2PoolsTextarea" class="form-control font-monospace" rows="8" readonly spellcheck="false"></textarea>
|
||
</div>
|
||
|
||
<div>
|
||
<label class="form-label">Pairs</label>
|
||
<textarea id="demoPipeline2PairsTextarea" class="form-control font-monospace" rows="8" readonly spellcheck="false"></textarea>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="accordion-item border-0 shadow-sm mb-3">
|
||
<h2 class="accordion-header" id="demoPipeline2BackfillHeading">
|
||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#demoPipeline2BackfillCollapse" aria-expanded="false" aria-controls="demoPipeline2BackfillCollapse">
|
||
Backfill ciblé
|
||
</button>
|
||
</h2>
|
||
<div id="demoPipeline2BackfillCollapse" class="accordion-collapse collapse" aria-labelledby="demoPipeline2BackfillHeading" data-bs-parent="#demoPipeline2LeftAccordion">
|
||
<div class="accordion-body">
|
||
<div class="mb-3">
|
||
<label for="demoPipeline2HttpRoleInput" class="form-label">HTTP role</label>
|
||
<input id="demoPipeline2HttpRoleInput" type="text" class="form-control" value="history_backfill" spellcheck="false" />
|
||
</div>
|
||
|
||
<div class="mb-3">
|
||
<label for="demoPipeline2MintInput" class="form-label">Token mint</label>
|
||
<input id="demoPipeline2MintInput" type="text" class="form-control font-monospace" spellcheck="false" placeholder="Mint SPL" />
|
||
</div>
|
||
|
||
<div class="row g-2 mb-3">
|
||
<div class="col-6">
|
||
<label for="demoPipeline2MintSignatureLimitInput" class="form-label">Mint sigs</label>
|
||
<input id="demoPipeline2MintSignatureLimitInput" type="number" min="1" step="1" class="form-control" value="20" />
|
||
</div>
|
||
<div class="col-6">
|
||
<label for="demoPipeline2MintPoolLimitInput" class="form-label">Pool sigs</label>
|
||
<input id="demoPipeline2MintPoolLimitInput" type="number" min="1" step="1" class="form-control" value="20" />
|
||
</div>
|
||
</div>
|
||
|
||
<div class="d-flex gap-2 mb-4">
|
||
<button id="demoPipeline2BackfillMintButton" type="button" class="btn btn-outline-primary">
|
||
Backfill mint
|
||
</button>
|
||
</div>
|
||
|
||
<div class="mb-3">
|
||
<label for="demoPipeline2PoolInput" class="form-label">Pool address</label>
|
||
<input id="demoPipeline2PoolInput" type="text" class="form-control font-monospace" spellcheck="false" placeholder="Pool / pair on-chain" />
|
||
</div>
|
||
|
||
<div class="mb-3">
|
||
<label for="demoPipeline2PoolSignatureLimitInput" class="form-label">Pool sigs</label>
|
||
<input id="demoPipeline2PoolSignatureLimitInput" type="number" min="1" step="1" class="form-control" value="20" />
|
||
</div>
|
||
|
||
<div class="d-flex gap-2">
|
||
<button id="demoPipeline2BackfillPoolButton" type="button" class="btn btn-outline-primary">
|
||
Backfill pool
|
||
</button>
|
||
</div>
|
||
|
||
<hr class="my-4" />
|
||
|
||
<div class="mb-3">
|
||
<label for="demoPipeline2SignatureInput" class="form-label">Signature</label>
|
||
<input id="demoPipeline2SignatureInput" type="text" class="form-control font-monospace" spellcheck="false" placeholder="Transaction signature from Demo3" />
|
||
</div>
|
||
|
||
<div class="d-flex gap-2">
|
||
<button id="demoPipeline2BackfillSignatureButton" type="button" class="btn btn-outline-primary">
|
||
Backfill signature
|
||
</button>
|
||
</div>
|
||
|
||
<hr class="my-4" />
|
||
|
||
<div class="mb-3">
|
||
<label for="demoPipeline2SignatureBatchTextarea" class="form-label">Signatures batch</label>
|
||
<textarea id="demoPipeline2SignatureBatchTextarea" class="form-control font-monospace" rows="8" spellcheck="false" placeholder="Une signature par ligne"></textarea>
|
||
<div class="form-text">
|
||
Backfill ciblé de plusieurs signatures. Les lignes vides et les doublons sont ignorés.
|
||
</div>
|
||
</div>
|
||
|
||
<div class="form-check mb-3">
|
||
<input id="demoPipeline2SignatureBatchContinueOnErrorCheckbox" class="form-check-input" type="checkbox" checked />
|
||
<label for="demoPipeline2SignatureBatchContinueOnErrorCheckbox" class="form-check-label">
|
||
Continuer après une erreur de signature
|
||
</label>
|
||
</div>
|
||
|
||
<div class="d-flex gap-2">
|
||
<button id="demoPipeline2BackfillSignatureBatchButton" type="button" class="btn btn-outline-primary">
|
||
Backfill signatures batch
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="accordion-item border-0 shadow-sm mb-3">
|
||
<h2 class="accordion-header" id="demoPipeline2ReplayHeading">
|
||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#demoPipeline2ReplayCollapse" aria-expanded="false" aria-controls="demoPipeline2ReplayCollapse">
|
||
Replay local
|
||
</button>
|
||
</h2>
|
||
<div id="demoPipeline2ReplayCollapse" class="accordion-collapse collapse" aria-labelledby="demoPipeline2ReplayHeading" data-bs-parent="#demoPipeline2LeftAccordion">
|
||
<div class="accordion-body">
|
||
<p class="small text-body-secondary mb-3">
|
||
Rejoue le pipeline depuis les transactions déjà stockées en base sans refaire de getTransaction.
|
||
</p>
|
||
|
||
<div class="mb-3">
|
||
<label for="demoPipeline2ReplayLimitInput" class="form-label">Transaction limit</label>
|
||
<input id="demoPipeline2ReplayLimitInput" type="number" min="1" step="1" class="form-control" value="10000" />
|
||
</div>
|
||
|
||
<div class="form-check mb-3">
|
||
<input class="form-check-input" type="checkbox" id="demoPipeline2ReplayMetadataCheckbox" />
|
||
<label class="form-check-label" for="demoPipeline2ReplayMetadataCheckbox">
|
||
Refresh missing token metadata
|
||
</label>
|
||
</div>
|
||
|
||
<div class="mb-3">
|
||
<label for="demoPipeline2ReplayMetadataLimitInput" class="form-label">Metadata limit</label>
|
||
<input id="demoPipeline2ReplayMetadataLimitInput" type="number" min="1" step="1" class="form-control" value="250" />
|
||
</div>
|
||
|
||
<div class="form-check mb-2">
|
||
<input class="form-check-input" type="checkbox" id="demoPipeline2ReplaySkipCertifiedDexDecodeCheckbox" checked />
|
||
<label class="form-check-label" for="demoPipeline2ReplaySkipCertifiedDexDecodeCheckbox">
|
||
Skip certified DEX decode ledger rows
|
||
</label>
|
||
</div>
|
||
|
||
<div class="form-check mb-2">
|
||
<input class="form-check-input" type="checkbox" id="demoPipeline2ReplayForceDexDecodeCheckbox" />
|
||
<label class="form-check-label" for="demoPipeline2ReplayForceDexDecodeCheckbox">
|
||
Force DEX decode replay
|
||
</label>
|
||
</div>
|
||
|
||
<div class="form-check mb-3">
|
||
<input class="form-check-input" type="checkbox" id="demoPipeline2ReplayDeferInstructionObservationCheckbox" checked />
|
||
<label class="form-check-label" for="demoPipeline2ReplayDeferInstructionObservationCheckbox">
|
||
Refresh instruction observations once after replay
|
||
</label>
|
||
</div>
|
||
|
||
<p class="small text-body-secondary mb-3">
|
||
Le skip ne concerne que l’étape de décodage DEX certifiée par le ledger. Le reste du replay continue pour reconstruire les tables dérivées. Le refresh différé des observations accélère le replay mais les compteurs SQL d’instructions ne sont finalisés qu’à la fin.
|
||
</p>
|
||
|
||
<div class="d-flex gap-2">
|
||
<button id="demoPipeline2ReplayLocalPipelineButton" type="button" class="btn btn-outline-primary">
|
||
Replay local pipeline
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="accordion-item border-0 shadow-sm mb-3">
|
||
<h2 class="accordion-header" id="demoPipeline2DiagnosticsHeading">
|
||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#demoPipeline2DiagnosticsCollapse" aria-expanded="false" aria-controls="demoPipeline2DiagnosticsCollapse">
|
||
Diagnostics locaux
|
||
</button>
|
||
</h2>
|
||
<div id="demoPipeline2DiagnosticsCollapse" class="accordion-collapse collapse" aria-labelledby="demoPipeline2DiagnosticsHeading" data-bs-parent="#demoPipeline2LeftAccordion">
|
||
<div class="accordion-body">
|
||
<p class="small text-body-secondary mb-3">
|
||
Analyse les données déjà persistées : transactions, decoded events, trades, candles, tokens, pools et pairs.
|
||
</p>
|
||
|
||
<div class="mb-3">
|
||
<label for="demoPipeline2ValidationProfileSelect" class="form-label">Validation profile</label>
|
||
<select id="demoPipeline2ValidationProfileSelect" class="form-select">
|
||
<option value="0.7.48-pre_event_coverage_db_checkpoint" selected>0.7.48-pre — Event coverage DB checkpoint</option>
|
||
<option value="0.7.43_meteora_effective_surfaces">0.7.43 — Meteora family event coverage</option>
|
||
<option value="0.7.42_raydium_family_event_coverage">0.7.42 — Raydium family event coverage</option>
|
||
<option value="0.7.41_raydium_amm_v4_swap_decoder">0.7.41 — Raydium AMM v4 swap decoder</option>
|
||
<option value="0.7.40_raydium_effective_surfaces">0.7.40 — Raydium effective surfaces</option>
|
||
<option value="0.7.39_dex_first_effective_swap_surfaces">0.7.39 — DEX-first effective swap surfaces</option>
|
||
<option value="0.7.38_token_metadata_gap_prioritization">0.7.38 — token metadata gap prioritization</option>
|
||
<option value="0.7.37_token_metadata_catalog_enrichment">0.7.37 — token metadata/catalog enrichment</option>
|
||
<option value="0.7.36_meteora_family_consolidation">0.7.36 — Meteora family consolidation</option>
|
||
<option value="0.7.35_non_trade_fee_reward_admin">0.7.35 — non-trade fee/reward admin</option>
|
||
<option value="0.7.34_non_trade_liquidity_lifecycle">0.7.34 — non-trade liquidity/lifecycle</option>
|
||
<option value="0.7.33_pair_trading_readiness">0.7.33 — pair trading readiness</option>
|
||
<option value="0.7.32_validation_report_semantics">0.7.32 — validation report semantics</option>
|
||
<option value="0.7.31_trade_event_actionability_policy">0.7.31 — trade event actionability policy</option>
|
||
<option value="0.7.30_non_trade_event_classification">0.7.30 — non-trade event classification</option>
|
||
<option value="0.7.29_multi_dex_matrix_baseline">0.7.29 — DEX matrix baseline</option>
|
||
<option value="0.7.28_multi_dex_non_regression">0.7.28 — multi-DEX non-regression</option>
|
||
<option value="0.7.27_dexes_non_regression">0.7.27 — first DEXes non-regression</option>
|
||
</select>
|
||
</div>
|
||
|
||
<div class="d-flex gap-2">
|
||
<button id="demoPipeline2DiagnoseLocalPipelineButton" type="button" class="btn btn-outline-primary">
|
||
Diagnose local pipeline
|
||
</button>
|
||
<button id="demoPipeline2ValidateLocalPipelineButton" type="button" class="btn btn-outline-success">
|
||
Validate
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="accordion-item border-0 shadow-sm mb-3">
|
||
<h2 class="accordion-header" id="demoPipeline2DiscriminatorDiagnosticsHeading">
|
||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#demoPipeline2DiscriminatorDiagnosticsCollapse" aria-expanded="false" aria-controls="demoPipeline2DiscriminatorDiagnosticsCollapse">
|
||
Instruction discriminators
|
||
</button>
|
||
</h2>
|
||
<div id="demoPipeline2DiscriminatorDiagnosticsCollapse" class="accordion-collapse collapse" aria-labelledby="demoPipeline2DiscriminatorDiagnosticsHeading" data-bs-parent="#demoPipeline2LeftAccordion">
|
||
<div class="accordion-body">
|
||
<p class="small text-body-secondary mb-3">
|
||
Groupe les instructions d’un programme par discriminator décodé, nombre de comptes, stack height et statut decoded/non-decoded.
|
||
</p>
|
||
|
||
<div class="mb-3">
|
||
<label for="demoPipeline2DiscriminatorProgramIdInput" class="form-label">Program id</label>
|
||
<input id="demoPipeline2DiscriminatorProgramIdInput" type="text" class="form-control font-monospace" value="LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo" />
|
||
</div>
|
||
|
||
<div class="mb-3">
|
||
<label for="demoPipeline2DiscriminatorLimitInput" class="form-label">Instruction row limit</label>
|
||
<input id="demoPipeline2DiscriminatorLimitInput" type="number" min="1" step="1" class="form-control" value="200" />
|
||
</div>
|
||
|
||
<div class="d-flex gap-2">
|
||
<button id="demoPipeline2LoadDiscriminatorSummariesButton" type="button" class="btn btn-outline-warning">
|
||
Load discriminator summaries
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="accordion-item border-0 shadow-sm mb-3">
|
||
<h2 class="accordion-header" id="demoPipeline2ProtocolCandidatesHeading">
|
||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#demoPipeline2ProtocolCandidatesCollapse" aria-expanded="false" aria-controls="demoPipeline2ProtocolCandidatesCollapse">
|
||
Protocol candidates
|
||
</button>
|
||
</h2>
|
||
<div id="demoPipeline2ProtocolCandidatesCollapse" class="accordion-collapse collapse" aria-labelledby="demoPipeline2ProtocolCandidatesHeading" data-bs-parent="#demoPipeline2LeftAccordion">
|
||
<div class="accordion-body">
|
||
<p class="small text-body-secondary mb-3">
|
||
Résume les programmes candidats par priorité : transaction_count, occurrence_count, dernier slot et dernière signature.
|
||
</p>
|
||
|
||
<div class="mb-3">
|
||
<label for="demoPipeline2ProtocolCandidateLimitInput" class="form-label">Summary limit</label>
|
||
<input id="demoPipeline2ProtocolCandidateLimitInput" type="number" min="1" step="1" class="form-control" value="50" />
|
||
</div>
|
||
|
||
<div class="d-flex gap-2">
|
||
<button id="demoPipeline2RefreshProtocolCandidatesButton" type="button" class="btn btn-outline-warning">
|
||
Refresh protocol candidates
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="accordion-item border-0 shadow-sm">
|
||
<h2 class="accordion-header" id="demoPipeline2CandlesControlHeading">
|
||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#demoPipeline2CandlesControlCollapse" aria-expanded="false" aria-controls="demoPipeline2CandlesControlCollapse">
|
||
Chargement candles
|
||
</button>
|
||
</h2>
|
||
<div id="demoPipeline2CandlesControlCollapse" class="accordion-collapse collapse" aria-labelledby="demoPipeline2CandlesControlHeading" data-bs-parent="#demoPipeline2LeftAccordion">
|
||
<div class="accordion-body">
|
||
<div class="mb-3">
|
||
<label for="demoPipeline2PairSelect" class="form-label">Pair</label>
|
||
<select id="demoPipeline2PairSelect" class="form-select">
|
||
<option value="">Aucune</option>
|
||
</select>
|
||
</div>
|
||
|
||
<div class="row g-2 mb-3">
|
||
<div class="col-7">
|
||
<label for="demoPipeline2TimeframeSelect" class="form-label">Timeframe</label>
|
||
<select id="demoPipeline2TimeframeSelect" class="form-select">
|
||
<option value="60">1m</option>
|
||
<option value="300">5m</option>
|
||
<option value="900">15m</option>
|
||
<option value="3600">1h</option>
|
||
</select>
|
||
</div>
|
||
<div class="col-5">
|
||
<label for="demoPipeline2CustomTimeframeInput" class="form-label">Custom</label>
|
||
<input id="demoPipeline2CustomTimeframeInput" type="number" min="1" step="1" class="form-control" placeholder="120" />
|
||
</div>
|
||
</div>
|
||
|
||
<div class="form-check mb-3">
|
||
<input class="form-check-input" type="checkbox" id="demoPipeline2PreferMaterializedInput" />
|
||
<label class="form-check-label" for="demoPipeline2PreferMaterializedInput">
|
||
Prefer materialized candles
|
||
</label>
|
||
</div>
|
||
|
||
<div class="d-flex gap-2">
|
||
<button id="demoPipeline2LoadCandlesButton" type="button" class="btn btn-primary">
|
||
Load candles
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="col-12 col-xxl-8">
|
||
<div class="accordion" id="demoPipeline2ContentAccordion">
|
||
<div class="accordion-item border-0 shadow-sm mb-3">
|
||
<h2 class="accordion-header" id="demoPipeline2SummaryHeading">
|
||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#demoPipeline2SummaryCollapse" aria-expanded="false" aria-controls="demoPipeline2SummaryCollapse">
|
||
Backfill / Replay summary
|
||
</button>
|
||
</h2>
|
||
<div id="demoPipeline2SummaryCollapse" class="accordion-collapse collapse" aria-labelledby="demoPipeline2SummaryHeading" data-bs-parent="#demoPipeline2ContentAccordion">
|
||
<div class="accordion-body">
|
||
<textarea id="demoPipeline2BackfillSummaryTextarea" class="form-control font-monospace" rows="12" readonly spellcheck="false"></textarea>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="accordion-item border-0 shadow-sm mb-3">
|
||
<h2 class="accordion-header" id="demoPipeline2LocalDiagnosticsHeading">
|
||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#demoPipeline2LocalDiagnosticsCollapse" aria-expanded="false" aria-controls="demoPipeline2LocalDiagnosticsCollapse">
|
||
Local pipeline diagnostics
|
||
</button>
|
||
</h2>
|
||
<div id="demoPipeline2LocalDiagnosticsCollapse" class="accordion-collapse collapse" aria-labelledby="demoPipeline2LocalDiagnosticsHeading" data-bs-parent="#demoPipeline2ContentAccordion">
|
||
<div class="accordion-body">
|
||
<textarea id="demoPipeline2LocalDiagnosticsTextarea" class="form-control font-monospace" rows="18" readonly spellcheck="false"></textarea>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="accordion-item border-0 shadow-sm mb-3">
|
||
<h2 class="accordion-header" id="demoPipeline2LocalValidationHeading">
|
||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#demoPipeline2LocalValidationCollapse" aria-expanded="false" aria-controls="demoPipeline2LocalValidationCollapse">
|
||
Local pipeline Validation
|
||
</button>
|
||
</h2>
|
||
<div id="demoPipeline2LocalValidationCollapse" class="accordion-collapse collapse" aria-labelledby="demoPipeline2LocalValidationHeading" data-bs-parent="#demoPipeline2ContentAccordion">
|
||
<div class="accordion-body">
|
||
<textarea id="demoPipeline2LocalValidationTextarea" class="form-control font-monospace" rows="16" readonly spellcheck="false"></textarea>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="accordion-item border-0 shadow-sm mb-3">
|
||
<h2 class="accordion-header" id="demoPipeline2DiscriminatorSummaryHeading">
|
||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#demoPipeline2DiscriminatorSummaryCollapse" aria-expanded="false" aria-controls="demoPipeline2DiscriminatorSummaryCollapse">
|
||
Instruction discriminator summaries
|
||
</button>
|
||
</h2>
|
||
<div id="demoPipeline2DiscriminatorSummaryCollapse" class="accordion-collapse collapse" aria-labelledby="demoPipeline2DiscriminatorSummaryHeading" data-bs-parent="#demoPipeline2ContentAccordion">
|
||
<div class="accordion-body">
|
||
<textarea id="demoPipeline2DiscriminatorSummariesTextarea" class="form-control font-monospace" rows="18" readonly spellcheck="false"></textarea>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="accordion-item border-0 shadow-sm mb-3">
|
||
<h2 class="accordion-header" id="demoPipeline2ProtocolCandidateSummaryHeading">
|
||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#demoPipeline2ProtocolCandidateSummaryCollapse" aria-expanded="false" aria-controls="demoPipeline2ProtocolCandidateSummaryCollapse">
|
||
Protocol candidate summaries
|
||
</button>
|
||
</h2>
|
||
<div id="demoPipeline2ProtocolCandidateSummaryCollapse" class="accordion-collapse collapse" aria-labelledby="demoPipeline2ProtocolCandidateSummaryHeading" data-bs-parent="#demoPipeline2ContentAccordion">
|
||
<div class="accordion-body">
|
||
<textarea id="demoPipeline2ProtocolCandidateSummariesTextarea" class="form-control font-monospace" rows="16" readonly spellcheck="false"></textarea>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="accordion-item border-0 shadow-sm mb-3">
|
||
<h2 class="accordion-header" id="demoPipeline2ChartHeading">
|
||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#demoPipeline2ChartCollapse" aria-expanded="false" aria-controls="demoPipeline2ChartCollapse">
|
||
Candles / OHLCV
|
||
</button>
|
||
</h2>
|
||
<div id="demoPipeline2ChartCollapse" class="accordion-collapse collapse" aria-labelledby="demoPipeline2ChartHeading" data-bs-parent="#demoPipeline2ContentAccordion">
|
||
<div class="accordion-body">
|
||
<div class="d-flex flex-wrap justify-content-between align-items-center gap-3 mb-3">
|
||
<div id="demoPipeline2ChartMeta" class="small text-body-secondary">
|
||
Aucun jeu de candles chargé.
|
||
</div>
|
||
</div>
|
||
<div id="demoPipeline2Chart" class="w-100 border rounded bg-body" style="height: 680px; min-height: 680px;"></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="accordion-item border-0 shadow-sm">
|
||
<h2 class="accordion-header" id="demoPipeline2LogHeading">
|
||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#demoPipeline2LogCollapse" aria-expanded="false" aria-controls="demoPipeline2LogCollapse">
|
||
Log UI
|
||
</button>
|
||
</h2>
|
||
<div id="demoPipeline2LogCollapse" class="accordion-collapse collapse" aria-labelledby="demoPipeline2LogHeading" data-bs-parent="#demoPipeline2ContentAccordion">
|
||
<div class="accordion-body">
|
||
<div class="d-flex justify-content-end align-items-center mb-3">
|
||
<button id="demoPipeline2ClearLogButton" type="button" class="btn btn-outline-secondary btn-sm">
|
||
Clear log
|
||
</button>
|
||
</div>
|
||
<textarea id="demoPipeline2LogTextarea" class="form-control font-monospace" rows="14" readonly spellcheck="false"></textarea>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</main>
|
||
|
||
<footer class="app-footer bg-dark text-light">
|
||
<div class="container h-100 d-flex align-items-center">
|
||
<div class="row flex-grow-1 align-items-center">
|
||
<div class="col-12 col-md-6 text-center text-small my-1 my-md-0">
|
||
© 2026 SASEDEV — Demo Pipeline 2
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</footer>
|
||
|
||
<script type="module" src="ts/demo_pipeline2.ts" defer></script>
|
||
</body>
|
||
|
||
</html> |