<?php
/**
 * View: Demo Oracle — detail d'un SQL_ID.
 *
 * Portage de modules/oracle/views/report/sql_detail.php. Les huit onglets du
 * module complet sont tous affiches ; quatre sont servis, quatre menent a la
 * page « version complete ». Masquer les seconds priverait le visiteur de
 * l'information la plus utile : ce que fait l'outil complet.
 *
 * La fenetre « Fixer ce plan » (SQL Profile, SQL Patch, baseline) n'est pas
 * reprise, et les outlines qui l'alimentaient sont retirees cote serveur.
 *
 * Variables : $sqlId, $fetchError, $notFound, $hasLicense, $memPhvs, $plans,
 *             $efficiency, $sqlText, $loadHist, $settings
 */
?>

<!-- ── En-tete ──────────────────────────────────────────────────────────── -->
<div class="page-header" style="display:flex;align-items:center;flex-wrap:wrap;gap:.6rem;margin-bottom:.35rem">
    <h1 style="margin:0;font-size:1.05rem;flex-shrink:0">
        &#128269; SQL : <code style="font-weight:700"><?= htmlspecialchars($sqlId) ?></code>
    </h1>
    <?php if ($fetchError): ?>
    <span class="badge badge-danger" style="font-size:.75rem"><?= htmlspecialchars($fetchError) ?></span>
    <?php else: ?>
        <?php if (!empty($memPhvs)): ?>
        <span class="badge badge-success" style="font-size:.72rem">&#9889; <?= t('demo_oracle.sqld_in_memory') ?></span>
        <?php endif; ?>
        <?php if (!$hasLicense && !$hasBashSnapper): ?>
        <span class="badge badge-warning" style="font-size:.72rem">&#128274; <?= t('demo_oracle.sqld_no_awr') ?></span>
        <?php elseif (!$hasLicense): ?>
        <span class="badge badge-info" style="font-size:.72rem">&#128202; <?= t('demo_oracle.sqld_src_bash') ?></span>
        <?php endif; ?>
        <?php if ($notFound): ?>
        <span class="badge badge-warning" style="font-size:.72rem">&#9888; <?= t('demo_oracle.sqld_not_found') ?></span>
        <?php endif; ?>
    <?php endif; ?>
</div>

<?php
/*
 * Ligne de provenance.
 *
 * Elle repond a une question qu'on ne pouvait pas poser a l'ecran : d'ou
 * viennent les onglets historiques, et SUR QUELLE BASE la licence a ete
 * decidee. Le second point est le plus important — une base declaree en
 * connexion cloud est reputee licenciee sans que le parametre d'instance soit
 * lu, et rien ne le disait.
 */
if (!$fetchError):
    $srcLabel = $hasLicense ? t('demo_oracle.sqld_src_awr')
              : ($hasBashSnapper ? t('demo_oracle.sqld_src_bash')
                                 : t('demo_oracle.sqld_src_none'));
    /* Trois cas, pas deux : le parametre peut etre ILLISIBLE depuis le compte
       de connexion (ORA-00942 sur V$PARAMETER, courant avec un compte dedie).
       Afficher « = NONE » reviendrait alors a affirmer que le pack est
       desactive, alors qu'on n'en sait rien. */
    $basis    = ($licenseFrom === 'cloud')
              ? t('demo_oracle.sqld_src_basis_cloud')
              : ($packAccess === ''
                    ? t('demo_oracle.sqld_src_basis_unreadable')
                    : t('demo_oracle.sqld_src_basis_param', ['param' => $packAccess]));
?>
<p style="margin:0 0 .5rem;font-size:.76rem;color:var(--color-text-muted)">
    <?= t('demo_oracle.sqld_src_history') ?> <strong><?= htmlspecialchars($srcLabel) ?></strong>
    &middot; <?= htmlspecialchars($basis) ?>
    <?php if ($licenseFrom === 'cloud'): ?>
    <span style="color:#b45309">&#9888;</span>
    <?php endif; ?>
    <?php if (!$hasLicense && $hasBashSnapper): ?>
    <br><?= t('demo_oracle.sqld_src_bash_zeros') ?>
    <?php endif; ?>
</p>
<?php endif; ?>

<?php if ($fetchError): ?>
<div class="alert alert-error"><?= htmlspecialchars($fetchError) ?></div>
<?php else: ?>

<?php
/*
 * Les huit onglets, dans l'ordre du module complet. `demo` dit si l'onglet est
 * servi ; les trois autres restent cliquables et menent a l'explication.
 */
$tabs = [
    ['plans',      'demo_oracle.sqld_tab_plans',      true],
    ['efficiency', 'demo_oracle.sqld_tab_efficiency', true],
    ['text',       'demo_oracle.sqld_tab_text',       true],
    ['loadhist',   'demo_oracle.sqld_tab_loadhist',   true],
    ['objects',    'demo_oracle.sqld_tab_objects',    false],
    ['stats',      'demo_oracle.sqld_tab_stats',      false],
    ['planhist',   'demo_oracle.sqld_tab_planhist',   false],
    ['sqlmon',     'demo_oracle.sqld_tab_sqlmon',     true],
];
?>

<!-- ── Onglets ──────────────────────────────────────────────────────────── -->
<div class="card" style="padding:.4rem .6rem;margin-bottom:.4rem">
    <div style="display:flex;gap:.3rem;flex-wrap:wrap">
    <?php foreach ($tabs as [$name, $label, $served]): ?>
    <button class="sql-tab-btn" data-tab="<?= $name ?>"
        title="<?= $served ? '' : htmlspecialchars(t('demo_oracle.full_only')) ?>"
        style="font-size:.82rem;padding:.22rem .55rem;cursor:pointer;
               border-radius:4px;border:1px solid var(--color-border,#ddd);
               background:transparent;color:inherit<?= $served ? '' : ';opacity:.62' ?>">
        <?= htmlspecialchars(t($label)) ?><?php if (!$served): ?> <span style="font-size:.7rem">&#128274;</span><?php endif; ?>
    </button>
    <?php endforeach; ?>
    </div>
</div>

<!-- ── Panneaux servis : remplis par le JavaScript ──────────────────────── -->
<div id="sqlpane-plans" class="sql-tab-pane card" style="padding:.6rem .75rem">
    <div id="sqlpane-plans-content"></div>
</div>
<div id="sqlpane-efficiency" class="sql-tab-pane card" style="padding:.6rem .75rem;display:none">
    <div id="sqlpane-efficiency-content"></div>
</div>
<div id="sqlpane-text" class="sql-tab-pane card" style="padding:.6rem .75rem;display:none">
    <div id="sqlpane-text-content"></div>
</div>
<div id="sqlpane-loadhist" class="sql-tab-pane card" style="padding:.6rem .75rem;display:none">
    <div id="sqlpane-loadhist-content"></div>
</div>
<div id="sqlpane-sqlmon" class="sql-tab-pane card" style="padding:.6rem .75rem;display:none">
    <div id="sqlpane-sqlmon-content"></div>
</div>

<?php
/*
 * Panneaux reserves. Le contenu est rendu ici, cote serveur, plutot que laisse
 * a une fonction JavaScript : il n'y a rien a calculer, et cela garantit que
 * le panneau dit la meme chose que la pastille de l'onglet.
 *
 * Le detail precise, pour chaque onglet, ce que la version complete y montre.
 */
$locked = [
    'objects'  => 'demo_oracle.sqld_objects_detail',
    'stats'    => 'demo_oracle.sqld_stats_detail',
    'planhist' => 'demo_oracle.sqld_planhist_detail',
];
foreach ($tabs as [$name, $label, $served]):
    if ($served) continue;
?>
<div id="sqlpane-<?= $name ?>" class="sql-tab-pane" style="display:none">
    <?= DemoOracleDemo::page(t($label), t($locked[$name])) ?>
</div>
<?php endforeach; ?>

<?php endif; ?>

<!-- Coloration et mise en forme du texte SQL -->
<link rel="stylesheet" href="<?= htmlspecialchars($settings->get('cdn_highlight_css', '')) ?>">
<style>.hljs { background: transparent !important; }</style>
<script src="<?= htmlspecialchars($settings->get('cdn_highlight_js',     '')) ?>"></script>
<script src="<?= htmlspecialchars($settings->get('cdn_highlight_sql_js', '')) ?>"></script>
<script src="<?= htmlspecialchars($settings->get('cdn_sql_formatter_js', '')) ?>"></script>

<!-- Donnees injectees pour le JS externe -->
<script>
window.DemoOracleReport = window.DemoOracleReport || {};
window.DemoOracleReport.sqlDetail = {
    PLANS:       <?= json_encode($plans) ?>,
    EFFICIENCY:  <?= json_encode($efficiency) ?>,
    SQL_TEXT:    <?= json_encode($sqlText) ?>,
    LOAD_HIST:   <?= json_encode($loadHist) ?>,
    SQL_ID:      <?= json_encode($sqlId) ?>,
    SQL_MON:     <?= json_encode($sqlMon) ?>,
    SQLMON_URL:  <?= json_encode($sqlMonUrl) ?>,
    CDN_CHARTJS: <?= json_encode($settings->get('cdn_chartjs_js', '')) ?>,
    T: {
        sqlmon_none:    <?= json_encode(t('demo_oracle.sqlmon_exec_none')) ?>,
        sqlmon_open:    <?= json_encode(t('demo_oracle.sqlmon_exec_open')) ?>,
        sqlmon_begin:   <?= json_encode(t('demo_oracle.sqlmon_exec_begin')) ?>,
        sqlmon_status:  <?= json_encode(t('demo_oracle.sqlmon_exec_status')) ?>,
        sqlmon_running: <?= json_encode(t('demo_oracle.sqlmon_running_only')) ?>,
        src_memory:     <?= json_encode(t('demo_oracle.sqld_src_memory')) ?>,
        src_awr:        <?= json_encode(t('demo_oracle.sqld_src_awr')) ?>,
        src_bash:       <?= json_encode(t('demo_oracle.sqld_src_bash')) ?>,
        hist_none:      <?= json_encode(t('demo_oracle.sqld_src_none_detail')) ?>,
        hist_empty:     <?= json_encode(t('demo_oracle.sqld_src_empty')) ?>
    }
};
</script>
<script src="/modules/demo_oracle/assets/js/report-sql-detail.js?v=<?= filemtime(__DIR__ . '/../../assets/js/report-sql-detail.js') ?>"></script>
