Files
2026-03-24 00:26:25 +01:00

94 lines
4.5 KiB
HTML

<%- include('layouts/main', {
title: _('cdap.devices_title'),
pageStyles: ['cdap'],
pageScripts: ['cdap-devices'],
currentPage: 'cdap',
breadcrumb: [
{ label: _('nav.management') },
{ label: _('cdap.devices_title') }
],
body: `
<div class="cdap-list-page">
<!-- Header -->
<div class="page-header">
<div class="page-title">
<h1>${_('cdap.devices_title')}</h1>
</div>
<p class="page-subtitle">${_('cdap.devices_subtitle')}</p>
</div>
<!-- Status Banner -->
<div class="cdap-gateway-banner" id="cdap-gateway-banner">
<div class="cdap-gateway-status" id="cdap-gw-status">
<span class="cdap-status-dot"></span>
<span id="cdap-gw-status-text">${_('common.loading')}</span>
</div>
<div class="cdap-gateway-stats">
<div class="cdap-gw-stat">
<span class="cdap-gw-stat-value" id="cdap-stat-connected">0</span>
<span class="cdap-gw-stat-label">${_('cdap.stat_connected')}</span>
</div>
<div class="cdap-gw-stat">
<span class="cdap-gw-stat-value" id="cdap-stat-port"></span>
<span class="cdap-gw-stat-label">${_('cdap.stat_port')}</span>
</div>
<div class="cdap-gw-stat">
<span class="cdap-gw-stat-value" id="cdap-stat-tls"></span>
<span class="cdap-gw-stat-label">TLS</span>
</div>
</div>
${user && user.role === 'admin' ? `
<button class="btn btn-sm btn-danger" id="cdap-toggle-btn" title="${_('cdap.toggle_disable')}">
<span class="material-icons" style="font-size:16px">power_settings_new</span>
<span>${_('cdap.toggle_disable')}</span>
</button>
` : ''}
</div>
<!-- Filters -->
<div class="panel-actions">
<div class="search-wrapper">
<span class="material-icons">search</span>
<input type="text" class="form-input" id="cdap-search" placeholder="${_('cdap.search_devices')}" />
</div>
<div class="filter-buttons" id="cdap-type-filter">
<button class="filter-btn active" data-type="">${_('common.all')}</button>
<button class="filter-btn" data-type="iot">${_('cdap.type_iot')}</button>
<button class="filter-btn" data-type="scada">${_('cdap.type_scada')}</button>
<button class="filter-btn" data-type="os_agent">${_('cdap.type_os_agent')}</button>
<button class="filter-btn" data-type="network">${_('cdap.type_network')}</button>
<button class="filter-btn" data-type="camera">${_('cdap.type_camera')}</button>
<button class="filter-btn" data-type="custom">${_('cdap.type_custom')}</button>
</div>
</div>
<!-- Device Grid -->
<div class="cdap-device-grid" id="cdap-device-grid">
<div class="cdap-loading" id="cdap-list-loading">
<div class="cdap-loading-spinner"></div>
<p>${_('common.loading')}</p>
</div>
</div>
<!-- Empty State -->
<div class="cdap-list-empty hidden" id="cdap-list-empty">
<span class="material-icons cdap-empty-icon">developer_board</span>
<h3>${_('cdap.no_devices')}</h3>
<p>${_('cdap.no_devices_desc')}</p>
</div>
<!-- CDAP Disabled State -->
<div class="cdap-list-empty hidden" id="cdap-disabled-banner">
<span class="material-icons cdap-empty-icon">power_off</span>
<h3>${_('cdap.gateway_disabled')}</h3>
<p>${_('cdap.gateway_disabled_desc')}</p>
${user && user.role === 'admin' ? `
<button class="btn btn-primary" id="cdap-enable-btn" style="margin-top: 16px">
<span class="material-icons" style="font-size:18px">power_settings_new</span>
<span>${_('cdap.toggle_enable')}</span>
</button>
` : ''}
</div>
</div>
` }) %>