<?php
/**
 * Demo Oracle — activite temps reel (section « realtime »).
 *
 * Portage de la branche HTML de modules/oracle/_report_realtime.php. La
 * branche JSON vit dans _data_realtime.php : la page est rendue depuis
 * layout.php, donc apres l'envoi du <head>, et ne peut plus emettre de JSON.
 *
 * Quatre plafonds, tous appliques cote serveur par
 * DemoOracleRealtimeFilters::parse() :
 *
 *   - fenetre figee a 30 minutes (le module complet propose 30, 60, 90) ;
 *   - trois dimensions servies — classe d'attente, module, instance ; les
 *     quatre autres restent dans la liste, desactivees ;
 *   - filtre de service fige sur « tous les services » ;
 *   - filtre d'etat fige sur les sessions actives.
 *
 * Le filtre croise (clic sur un Top N) est conserve : il restreint ce que la
 * fenetre montre deja, il n'ouvre rien de plus.
 *
 * Inclus par report.php. Variables : $oraDb, $db, $currentUser, $settings.
 */
require_once __DIR__ . '/lib/DemoOracleOciConnect.php';
require_once __DIR__ . '/lib/DemoOracleAshSource.php';
require_once __DIR__ . '/lib/DemoOracleRealtimeFilters.php';
require_once __DIR__ . '/lib/DemoOracleRealtimeRepository.php';

$f = DemoOracleRealtimeFilters::parse();

$services   = [];
$dataSource = '';
$hasSource  = true;

$ociError = null;
$conn = demo_oracle_oci_open($oraDb, $db, $ociError, '', 'realtime/page');
if ($conn) {
    // La liste des services est lue pour peupler le menu deroulant, meme si la
    // demonstration le fige sur « tous » : le visiteur voit ce sur quoi la
    // version complete permet de filtrer.
    $services = DemoOracleRealtimeRepository::fetchServices($conn);

    $src        = DemoOracleAshSource::resolve($conn, ($oraDb['conn_type'] ?? '') === 'cloud');
    $dataSource = $src['source'];
    $hasSource  = $src['source'] !== '';

    oci_close($conn);
} else {
    $hasSource = false;
}

View::display(__DIR__ . '/views/report/realtime.php', [
    'baseUrl'      => demo_oracle_url('report', ['section' => 'realtime']),
    'sqlDetailUrl' => demo_oracle_url('report', ['section' => 'sql/detail']),
    'window'     => $f['window'],
    'windows'    => DemoOracleRealtimeFilters::windows(),
    'dim'        => $f['dim'],
    'dimensions' => DemoOracleRealtimeFilters::dimensions(),
    'services'   => $services,
    'dataSource' => $dataSource,
    'hasSource'  => $hasSource,
    'settings'   => $settings,
]);
