Redesignes and fixes the agents page
							parent
							
								
									06cc20fb2a
								
							
						
					
					
						commit
						df200aae64
					
				| 
						 | 
				
			
			@ -8,61 +8,163 @@
 | 
			
		|||
 * to allow time-based invalidation if needed.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
// Constants for session keys and cache settings
 | 
			
		||||
define('SESSION_CACHE_SUFFIX', '_cache');
 | 
			
		||||
define('SESSION_CACHE_TIME_SUFFIX', '_cache_time');
 | 
			
		||||
define('CACHE_EXPIRY_TIME', 3600); // 1 hour in seconds
 | 
			
		||||
 | 
			
		||||
// Input validation
 | 
			
		||||
$action = isset($_GET['action']) ? htmlspecialchars(trim($_GET['action']), ENT_QUOTES, 'UTF-8') : '';
 | 
			
		||||
$agentId = filter_input(INPUT_GET, 'agent', FILTER_VALIDATE_INT);
 | 
			
		||||
 | 
			
		||||
require '../app/classes/agent.php';
 | 
			
		||||
require '../app/classes/host.php';
 | 
			
		||||
$agentObject = new Agent($dbWeb);
 | 
			
		||||
$hostObject = new Host($dbWeb);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Get the cache key for an agent
 | 
			
		||||
 * @param int $agentId The agent ID
 | 
			
		||||
 * @param string $suffix The suffix to append (_cache or _cache_time)
 | 
			
		||||
 * @return string The cache key
 | 
			
		||||
 */
 | 
			
		||||
function getAgentCacheKey($agentId, $suffix) {
 | 
			
		||||
    return "agent{$agentId}{$suffix}";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Check if cache is expired
 | 
			
		||||
 * @param int $agentId The agent ID
 | 
			
		||||
 * @return bool True if cache is expired or doesn't exist
 | 
			
		||||
 */
 | 
			
		||||
function isCacheExpired($agentId) {
 | 
			
		||||
    $timeKey = getAgentCacheKey($agentId, SESSION_CACHE_TIME_SUFFIX);
 | 
			
		||||
    if (!isset($_SESSION[$timeKey])) {
 | 
			
		||||
        return true;
 | 
			
		||||
    }
 | 
			
		||||
    return (time() - $_SESSION[$timeKey]) > CACHE_EXPIRY_TIME;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Handle POST request (saving to cache)
 | 
			
		||||
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
 | 
			
		||||
    // Validate agent ID for POST operations
 | 
			
		||||
    if ($agentId === false || $agentId === null) {
 | 
			
		||||
        Messages::flash('ERROR', 'DEFAULT', 'Invalid agent ID format');
 | 
			
		||||
        echo json_encode(['status' => 'error', 'message' => 'Invalid agent ID format']);
 | 
			
		||||
        exit;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Read and validate JSON data
 | 
			
		||||
    $jsonData = file_get_contents("php://input");
 | 
			
		||||
    if ($jsonData === false) {
 | 
			
		||||
        Messages::flash('ERROR', 'DEFAULT', 'Failed to read input data');
 | 
			
		||||
        echo json_encode(['status' => 'error', 'message' => 'Failed to read input data']);
 | 
			
		||||
        exit;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    $data = json_decode($jsonData, true);
 | 
			
		||||
 | 
			
		||||
    // Handle cache clearing
 | 
			
		||||
    if ($data === null && !empty($agentId)) {
 | 
			
		||||
        $cacheKey = getAgentCacheKey($agentId, SESSION_CACHE_SUFFIX);
 | 
			
		||||
        $timeKey = getAgentCacheKey($agentId, SESSION_CACHE_TIME_SUFFIX);
 | 
			
		||||
 | 
			
		||||
        unset($_SESSION[$cacheKey]);
 | 
			
		||||
        unset($_SESSION[$timeKey]);
 | 
			
		||||
 | 
			
		||||
        Messages::flash('SUCCESS', 'DEFAULT', "Cache for agent {$agentId} is cleared.");
 | 
			
		||||
        echo json_encode([
 | 
			
		||||
            'status' => 'success',
 | 
			
		||||
            'message' => "Cache for agent {$agentId} is cleared."
 | 
			
		||||
        ]);
 | 
			
		||||
    }
 | 
			
		||||
    // Handle cache storing
 | 
			
		||||
    elseif ($data) {
 | 
			
		||||
        $cacheKey = getAgentCacheKey($agentId, SESSION_CACHE_SUFFIX);
 | 
			
		||||
        $timeKey = getAgentCacheKey($agentId, SESSION_CACHE_TIME_SUFFIX);
 | 
			
		||||
 | 
			
		||||
        $_SESSION[$cacheKey] = $data;
 | 
			
		||||
        $_SESSION[$timeKey] = time();
 | 
			
		||||
 | 
			
		||||
        Messages::flash('SUCCESS', 'DEFAULT', "Cache for agent {$agentId} is stored.");
 | 
			
		||||
        echo json_encode([
 | 
			
		||||
            'status' => 'success',
 | 
			
		||||
            'message' => "Cache for agent {$agentId} is stored."
 | 
			
		||||
        ]);
 | 
			
		||||
    }
 | 
			
		||||
    else {
 | 
			
		||||
        Messages::flash('ERROR', 'DEFAULT', 'Invalid data format');
 | 
			
		||||
        echo json_encode(['status' => 'error', 'message' => 'Invalid data format']);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
// Handle AJAX requests
 | 
			
		||||
} elseif (isset($_GET['action'])) {
 | 
			
		||||
    $action = $_GET['action'];
 | 
			
		||||
    $agentId = filter_input(INPUT_GET, 'agent', FILTER_VALIDATE_INT);
 | 
			
		||||
 | 
			
		||||
    if ($action === 'fetch') {
 | 
			
		||||
        $response = ['status' => 'success', 'data' => $data];
 | 
			
		||||
        echo json_encode($response);
 | 
			
		||||
        exit;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if ($action === 'status') {
 | 
			
		||||
        $response = ['status' => 'success', 'data' => $statusData];
 | 
			
		||||
        echo json_encode($response);
 | 
			
		||||
        exit;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
// Handle template display
 | 
			
		||||
} else {
 | 
			
		||||
 | 
			
		||||
    // Validate platform_id is set
 | 
			
		||||
    if (!isset($platform_id)) {
 | 
			
		||||
        Messages::flash('ERROR', 'DEFAULT', 'Platform ID is not set');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Get host details for this platform
 | 
			
		||||
    $hostDetails = $hostObject->getHostDetails($platform_id);
 | 
			
		||||
 | 
			
		||||
    // Group agents by host
 | 
			
		||||
    $agentsByHost = [];
 | 
			
		||||
    foreach ($hostDetails as $host) {
 | 
			
		||||
        $hostId = $host['id'];
 | 
			
		||||
        $agentsByHost[$hostId] = [
 | 
			
		||||
            'host_name' => $host['name'],
 | 
			
		||||
            'agents' => []
 | 
			
		||||
        ];
 | 
			
		||||
 | 
			
		||||
        // Get agents for this host
 | 
			
		||||
        $hostAgents = $agentObject->getAgentDetails($hostId);
 | 
			
		||||
        if ($hostAgents) {
 | 
			
		||||
            $agentsByHost[$hostId]['agents'] = $hostAgents;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Generate JWT tokens for each agent beforehand
 | 
			
		||||
        $agentTokens = [];
 | 
			
		||||
        foreach ($agentsByHost[$hostId]['agents'] as $agent) {
 | 
			
		||||
            $payload = [
 | 
			
		||||
                'iss' => 'Jilo Web',
 | 
			
		||||
                'aud' => $config['domain'],
 | 
			
		||||
                'iat' => time(),
 | 
			
		||||
                'exp' => time() + 3600,
 | 
			
		||||
                'agent_id' => $agent['id']
 | 
			
		||||
            ];
 | 
			
		||||
            $agentTokens[$agent['id']] = $agentObject->generateAgentToken($payload, $agent['secret_key']);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Now we have:
 | 
			
		||||
         * $hostDetails - hosts in this platform
 | 
			
		||||
         * $agentsByHost[$hostId]['agents'] - agents details by hostId
 | 
			
		||||
         * $agentTokens[$agent['id']] - tokens for the agentsIds
 | 
			
		||||
         */
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Get any new messages
 | 
			
		||||
    include '../app/includes/messages.php';
 | 
			
		||||
    include '../app/includes/messages-show.php';
 | 
			
		||||
 | 
			
		||||
$action = $_REQUEST['action'] ?? '';
 | 
			
		||||
$agent = $_REQUEST['agent'] ?? '';
 | 
			
		||||
require '../app/classes/agent.php';
 | 
			
		||||
 | 
			
		||||
$agentObject = new Agent($dbWeb);
 | 
			
		||||
 | 
			
		||||
// if it's a POST request, it's saving to cache
 | 
			
		||||
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
 | 
			
		||||
 | 
			
		||||
    // read the JSON sent from javascript
 | 
			
		||||
    $data = file_get_contents("php://input");
 | 
			
		||||
    $result = json_decode($data, true);
 | 
			
		||||
 | 
			
		||||
    // store the data in the session
 | 
			
		||||
    if ($result) {
 | 
			
		||||
        $_SESSION["agent{$agent}_cache"] = $result;
 | 
			
		||||
        $_SESSION["agent{$agent}_cache_time"] = time();  // store the cache time
 | 
			
		||||
        echo json_encode([
 | 
			
		||||
            'status'    => 'success',
 | 
			
		||||
            'message'   => "Cache for agent {$agent} is stored."
 | 
			
		||||
        ]);
 | 
			
		||||
    } elseif ($result === null && !empty($agent)) {
 | 
			
		||||
        unset($_SESSION["agent{$agent}_cache"]);
 | 
			
		||||
        unset($_SESSION["agent{$agent}_cache_time"]);
 | 
			
		||||
        echo json_encode([
 | 
			
		||||
            'status'    => 'success',
 | 
			
		||||
            'message'   => "Cache for agent {$agent} is cleared."
 | 
			
		||||
        ]);
 | 
			
		||||
    } else {
 | 
			
		||||
        echo json_encode([
 | 
			
		||||
            'status'    => 'error',
 | 
			
		||||
            'message'   => 'Invalid data'
 | 
			
		||||
        ]);
 | 
			
		||||
    // Load the template
 | 
			
		||||
    include '../app/templates/agents.php';
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//// if it's a GET request, it's read/load from cache
 | 
			
		||||
//} elseif ($loadcache === true) {
 | 
			
		||||
//
 | 
			
		||||
//    // check if cached data exists in session
 | 
			
		||||
//    if (isset($_SESSION["agent{$agent}_cache"])) {
 | 
			
		||||
//        // return the cached data in JSON format
 | 
			
		||||
//        echo json_encode(['status' => 'success', 'data' => $_SESSION["agent{$agent}_cache"]]);
 | 
			
		||||
//    } else {
 | 
			
		||||
//        // if no cached data exists
 | 
			
		||||
//        echo json_encode(['status' => 'error', 'message' => 'No cached data found']);
 | 
			
		||||
//    }
 | 
			
		||||
 | 
			
		||||
// no form submitted, show the templates
 | 
			
		||||
} else {
 | 
			
		||||
    $agentDetails = $agentObject->getAgentDetails($platform_id);
 | 
			
		||||
    include '../app/templates/agent-list.php';
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,39 +0,0 @@
 | 
			
		|||
 | 
			
		||||
                <!-- jilo agents -->
 | 
			
		||||
                <div class="card text-center w-75 mx-lef">
 | 
			
		||||
                    <p class="h4 card-header">Jilo Agents on platform <?= htmlspecialchars($platform_id) ?> (<?= htmlspecialchars($platformDetails[0]['name']) ?>)</p>
 | 
			
		||||
                    <div class="card-body">
 | 
			
		||||
<?php foreach ($agentDetails as $agent) { ?>
 | 
			
		||||
                        <p class="card-text text-left" style="text-align: left;">
 | 
			
		||||
                            agent id: <strong><?= htmlspecialchars($agent['id']) ?></strong>
 | 
			
		||||
                            agent type: <?= htmlspecialchars($agent['agent_type_id']) ?> (<strong><?= htmlspecialchars($agent['agent_description']) ?></strong>)
 | 
			
		||||
                            <br />
 | 
			
		||||
                            endpoint: <strong><?= htmlspecialchars($agent['url']) ?><?= htmlspecialchars($agent['agent_endpoint']) ?></strong>
 | 
			
		||||
                            <br />
 | 
			
		||||
<?php
 | 
			
		||||
    $payload = [
 | 
			
		||||
        'iss' => 'Jilo Web',
 | 
			
		||||
        'aud' => $config['domain'],
 | 
			
		||||
        'iat' => time(),
 | 
			
		||||
        'exp' => time() + 3600,
 | 
			
		||||
        'agent_id' => $agent['id']
 | 
			
		||||
    ];
 | 
			
		||||
    $jwt = $agentObject->generateAgentToken($payload, $agent['secret_key']);
 | 
			
		||||
//    print_r($_SESSION);
 | 
			
		||||
?>
 | 
			
		||||
<?php if (isset($_SESSION["agent{$agent['id']}_cache"])) { ?>
 | 
			
		||||
                            <button id="agent<?= htmlspecialchars($agent['id']) ?>-status" class="btn btn-primary" data-toggle="tooltip" data-trigger="hover" data-placement="bottom" title="get the agent status" onclick="fetchData('<?= htmlspecialchars($agent['id']) ?>', '<?= htmlspecialchars($agent['url']) ?>', '/status', '<?= htmlspecialchars($jwt) ?>', true)">get status</button>
 | 
			
		||||
                            <button id="agent<?= htmlspecialchars($agent['id']) ?>-fetch" class="btn btn-primary" data-toggle="tooltip" data-trigger="hover" data-placement="bottom" title="get data from the agent" onclick="fetchData('<?= htmlspecialchars($agent['id']) ?>', '<?= htmlspecialchars($agent['url']) ?>', '<?= htmlspecialchars($agent['agent_endpoint']) ?>', '<?= htmlspecialchars($jwt) ?>', true)">fetch data</button>
 | 
			
		||||
                            <button id="agent<?= htmlspecialchars($agent['id']) ?>-cache" class="btn btn-secondary" data-toggle="tooltip" data-trigger="hover" data-placement="bottom" title="load cache" onclick="loadCache('<?= htmlspecialchars($agent['id']) ?>')">load cache</button>
 | 
			
		||||
                            <button id="agent<?= htmlspecialchars($agent['id']) ?>-clear" class="btn btn-danger" data-toggle="tooltip" data-trigger="hover" data-placement="bottom" title="clear cache" onclick="clearCache('<?= htmlspecialchars($agent['id']) ?>')">clear cache</button>
 | 
			
		||||
                            <span id="cacheInfo<?= htmlspecialchars($agent['id']) ?>" style="margin: 5px 0;"></span>
 | 
			
		||||
<?php } else { ?>
 | 
			
		||||
                            <button id="agent<?= htmlspecialchars($agent['id']) ?>-status" class="btn btn-primary" data-toggle="tooltip" data-trigger="hover" data-placement="bottom" title="get the agent status" onclick="fetchData('<?= htmlspecialchars($agent['id']) ?>', '<?= htmlspecialchars($agent['url']) ?>', '/status', '<?= htmlspecialchars($jwt) ?>', true)">get status</button>
 | 
			
		||||
                            <button id="agent<?= htmlspecialchars($agent['id']) ?>-fetch" class="btn btn-primary" data-toggle="tooltip" data-trigger="hover" data-placement="bottom" title="get data from the agent" onclick="fetchData('<?= htmlspecialchars($agent['id']) ?>', '<?= htmlspecialchars($agent['url']) ?>', '<?= htmlspecialchars($agent['agent_endpoint']) ?>', '<?= htmlspecialchars($jwt) ?>')">fetch data</button>
 | 
			
		||||
                            <button style="display: none" disabled id="agent<?= htmlspecialchars($agent['id']) ?>-cache" class="btn btn-secondary" data-toggle="tooltip" data-trigger="hover" data-placement="bottom" title="load cache" onclick="loadCache('<?= htmlspecialchars($agent['id']) ?>')">load cache</button>
 | 
			
		||||
                            <button style="display: none" disabled id="agent<?= htmlspecialchars($agent['id']) ?>-clear" class="btn btn-danger" data-toggle="tooltip" data-trigger="hover" data-placement="bottom" title="clear cache" onclick="clearCache('<?= htmlspecialchars($agent['id']) ?>')">clear cache</button>
 | 
			
		||||
                            <span style="display: none" id="cacheInfo<?= htmlspecialchars($agent['id']) ?>" style="margin: 5px 0;"></span>
 | 
			
		||||
<?php } ?>
 | 
			
		||||
                    </p>
 | 
			
		||||
                        <pre class="results" id="result<?= htmlspecialchars($agent['id']) ?>">click a button to display data from the agent.</pre>
 | 
			
		||||
<?php } ?>
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,94 @@
 | 
			
		|||
 | 
			
		||||
<!-- agents live data -->
 | 
			
		||||
<div class="container-fluid mt-2">
 | 
			
		||||
    <div class="row mb-4">
 | 
			
		||||
        <div class="col-12 mb-4">
 | 
			
		||||
            <h2 class="mb-0">Jilo Agents on platform <?= htmlspecialchars($platform_id) ?> (<?= htmlspecialchars($platformDetails[0]['name']) ?>)</h2>
 | 
			
		||||
            <small>Manage and monitor agents on this platform.</small>
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    <!-- hosts and their agents -->
 | 
			
		||||
    <div class="row">
 | 
			
		||||
        <?php foreach ($agentsByHost as $hostId => $hostData): ?>
 | 
			
		||||
            <div class="col-12 mb-4">
 | 
			
		||||
                <div class="card">
 | 
			
		||||
                    <div class="card-header bg-light">
 | 
			
		||||
                        <h5 class="mb-0">
 | 
			
		||||
                            <i class="fas fa-network-wired me-2 text-secondary"></i>
 | 
			
		||||
                            Host: <?= htmlspecialchars($hostData['host_name']) ?>
 | 
			
		||||
                            <a href="<?= htmlspecialchars($app_root) ?>?page=settings#platform-<?= htmlspecialchars($platform_id) ?>host-<?= htmlspecialchars($hostId) ?>" class="text-decoration-none">
 | 
			
		||||
                                <i class="fas fa-edit ms-2"></i>
 | 
			
		||||
                            </a>
 | 
			
		||||
                        </h5>
 | 
			
		||||
                    </div>
 | 
			
		||||
                    <div class="card-body">
 | 
			
		||||
                        <?php if (empty($hostData['agents'])): ?>
 | 
			
		||||
                            <p class="text-muted">No agents on this host.</p>
 | 
			
		||||
                        <?php else: ?>
 | 
			
		||||
                            <?php foreach ($hostData['agents'] as $agent): ?>
 | 
			
		||||
                                <div class="agent-item mb-4 pb-3 border-bottom">
 | 
			
		||||
                                    <div class="d-flex align-items-center mb-2">
 | 
			
		||||
                                        <div class="flex-grow-1">
 | 
			
		||||
                                            <i class="fas fa-robot me-2 text-secondary"></i>
 | 
			
		||||
                                            <strong>Agent ID:</strong> <?= htmlspecialchars($agent['id']) ?> |
 | 
			
		||||
                                            <strong>Type:</strong> <?= htmlspecialchars($agent['agent_type_id']) ?> (<?= htmlspecialchars($agent['agent_description']) ?>) |
 | 
			
		||||
                                            <strong>Endpoint:</strong> <?= htmlspecialchars($agent['url']) ?><?= htmlspecialchars($agent['agent_endpoint']) ?>
 | 
			
		||||
                                            <a href="<?= htmlspecialchars($app_root) ?>?page=settings#platform-<?= htmlspecialchars($platform_id) ?>agent-<?= htmlspecialchars($agent['id']) ?>" class="text-decoration-none">
 | 
			
		||||
                                                <i class="fas fa-edit ms-2"></i>
 | 
			
		||||
                                            </a>
 | 
			
		||||
                                        </div>
 | 
			
		||||
                                    </div>
 | 
			
		||||
 | 
			
		||||
                                    <div class="btn-group" role="group">
 | 
			
		||||
                                        <button id="agent<?= htmlspecialchars($agent['id']) ?>-status" 
 | 
			
		||||
                                                class="btn btn-primary" 
 | 
			
		||||
                                                data-toggle="tooltip" 
 | 
			
		||||
                                                data-trigger="hover" 
 | 
			
		||||
                                                data-placement="bottom" 
 | 
			
		||||
                                                title="Get the agent status" 
 | 
			
		||||
                                                onclick="fetchData('<?= htmlspecialchars($agent['id']) ?>', '<?= htmlspecialchars($agent['url']) ?>', '/status', '<?= htmlspecialchars($agentTokens[$agent['id']]) ?>', true)">
 | 
			
		||||
                                            Get Status
 | 
			
		||||
                                        </button>
 | 
			
		||||
                                        <button id="agent<?= htmlspecialchars($agent['id']) ?>-fetch" 
 | 
			
		||||
                                                class="btn btn-primary" 
 | 
			
		||||
                                                data-toggle="tooltip" 
 | 
			
		||||
                                                data-trigger="hover" 
 | 
			
		||||
                                                data-placement="bottom" 
 | 
			
		||||
                                                title="Get data from the agent" 
 | 
			
		||||
                                                onclick="fetchData('<?= htmlspecialchars($agent['id']) ?>', '<?= htmlspecialchars($agent['url']) ?>', '<?= htmlspecialchars($agent['agent_endpoint']) ?>', '<?= htmlspecialchars($agentTokens[$agent['id']]) ?>', <?= isset($_SESSION["agent{$agent['id']}_cache"]) ? 'true' : 'false' ?>)">
 | 
			
		||||
                                            Fetch Data
 | 
			
		||||
                                        </button>
 | 
			
		||||
                                        <button id="agent<?= htmlspecialchars($agent['id']) ?>-cache" 
 | 
			
		||||
                                                <?= !isset($_SESSION["agent{$agent['id']}_cache"]) ? 'style="display:none;" ' : '' ?>
 | 
			
		||||
                                                class="btn btn-secondary" 
 | 
			
		||||
                                                data-toggle="tooltip" 
 | 
			
		||||
                                                data-trigger="hover" 
 | 
			
		||||
                                                data-placement="bottom" 
 | 
			
		||||
                                                title="Load cache" 
 | 
			
		||||
                                                onclick="loadCache('<?= htmlspecialchars($agent['id']) ?>')">
 | 
			
		||||
                                            Load Cache
 | 
			
		||||
                                        </button>
 | 
			
		||||
                                        <button id="agent<?= htmlspecialchars($agent['id']) ?>-clear" 
 | 
			
		||||
                                                <?= !isset($_SESSION["agent{$agent['id']}_cache"]) ? 'style="display:none;" ' : '' ?>
 | 
			
		||||
                                                class="btn btn-danger" 
 | 
			
		||||
                                                data-toggle="tooltip" 
 | 
			
		||||
                                                data-trigger="hover" 
 | 
			
		||||
                                                data-placement="bottom" 
 | 
			
		||||
                                                title="Clear cache" 
 | 
			
		||||
                                                onclick="clearCache('<?= htmlspecialchars($agent['id']) ?>')">
 | 
			
		||||
                                            Clear Cache
 | 
			
		||||
                                        </button>
 | 
			
		||||
                                    </div>
 | 
			
		||||
                                    <span id="cacheInfo<?= htmlspecialchars($agent['id']) ?>" class="ms-2 <?= isset($_SESSION["agent{$agent['id']}_cache"]) ? '' : 'd-none' ?>"></span>
 | 
			
		||||
                                    <pre class="results mt-3" id="result<?= htmlspecialchars($agent['id']) ?>">Click a button to display data from the agent.</pre>
 | 
			
		||||
                                </div>
 | 
			
		||||
                            <?php endforeach; ?>
 | 
			
		||||
                        <?php endif; ?>
 | 
			
		||||
                    </div>
 | 
			
		||||
                </div>
 | 
			
		||||
            </div>
 | 
			
		||||
        <?php endforeach; ?>
 | 
			
		||||
    </div>
 | 
			
		||||
</div>
 | 
			
		||||
<!-- agents live data -->
 | 
			
		||||
| 
						 | 
				
			
			@ -61,7 +61,7 @@ $timeNow = new DateTime('now', new DateTimeZone($userTimezone));
 | 
			
		|||
                        </a>
 | 
			
		||||
                        <a href="<?= htmlspecialchars($app_root) ?>?platform=<?= htmlspecialchars($platform_id) ?>&page=agents">
 | 
			
		||||
                            <li class="list-group-item<?php if ($page === 'agents') echo ' list-group-item-secondary'; else echo ' list-group-item-action'; ?>">
 | 
			
		||||
                                <i class="fas fa-mask" data-toggle="tooltip" data-placement="right" data-offset="30.0" title="jilo agents"></i>jilo agents
 | 
			
		||||
                                <i class="fas fa-robot" data-toggle="tooltip" data-placement="right" data-offset="30.0" title="jilo agents"></i>jilo agents
 | 
			
		||||
                            </li>
 | 
			
		||||
                        </a>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,6 +2,7 @@
 | 
			
		|||
                                <!-- jilo agent status -->
 | 
			
		||||
                                <div class="d-flex align-items-center flex-wrap border-top p-3">
 | 
			
		||||
                                    <div class="d-flex align-items-center me-4">
 | 
			
		||||
                                        <i class="fas fa-robot me-2 text-secondary"></i>
 | 
			
		||||
                                        <span class="me-2">Jilo agent 
 | 
			
		||||
                                            <a href="<?= htmlspecialchars($app_root) ?>?page=settings#platform-<?= htmlspecialchars($platform['id']) ?>agent-<?= htmlspecialchars($agent['id']) ?>" class="text-decoration-none">
 | 
			
		||||
                                                <?= htmlspecialchars($agent['agent_description']) ?>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -206,7 +206,7 @@ function saveResultToSession(result, agent_id) {
 | 
			
		|||
 | 
			
		||||
    xhr.onreadystatechange = function() {
 | 
			
		||||
        if (xhr.readyState === 4 && xhr.status === 200) {
 | 
			
		||||
            console.log("Data saved to session successfully.");
 | 
			
		||||
//DEBUG            console.log("Data saved to session successfully.");
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue